2024-05-02 15:59:36 +08:00
|
|
|
|
import $store from '@/store'
|
2024-08-22 09:48:00 +08:00
|
|
|
|
import $tools from '@/toolJs/tools.js'
|
2024-05-02 15:59:36 +08:00
|
|
|
|
export default {
|
|
|
|
|
|
msg,
|
2024-07-22 14:13:19 +08:00
|
|
|
|
toHex,
|
2024-05-29 16:35:45 +08:00
|
|
|
|
gethms,
|
2024-05-02 15:59:36 +08:00
|
|
|
|
str2hex,
|
|
|
|
|
|
hex2str,
|
|
|
|
|
|
ab2hex,
|
|
|
|
|
|
inArray,
|
|
|
|
|
|
getMonth,
|
2024-05-29 16:35:45 +08:00
|
|
|
|
getDate,
|
2024-05-02 15:59:36 +08:00
|
|
|
|
GetDateStr,
|
|
|
|
|
|
PrefixZero,
|
2024-07-22 14:13:19 +08:00
|
|
|
|
showModal,
|
2024-09-12 11:20:52 +08:00
|
|
|
|
compareVersions,
|
2024-11-12 15:38:28 +08:00
|
|
|
|
validatePhoneEmail,
|
2024-12-07 10:41:48 +08:00
|
|
|
|
checkPrivacyAgreement,
|
|
|
|
|
|
getBluetoothAdapter
|
2024-05-02 15:59:36 +08:00
|
|
|
|
}
|
2024-07-22 14:13:19 +08:00
|
|
|
|
|
|
|
|
|
|
function showModal(text) {
|
|
|
|
|
|
uni.showModal({
|
|
|
|
|
|
title: "提示",
|
|
|
|
|
|
content: text,
|
|
|
|
|
|
showCancel: false,
|
|
|
|
|
|
success: function(res) {
|
2024-12-09 09:57:51 +08:00
|
|
|
|
if (res.confirm) {
|
|
|
|
|
|
uni.switchTab({ //返回
|
|
|
|
|
|
url: "/pages/home/home"
|
|
|
|
|
|
})
|
|
|
|
|
|
}
|
2024-07-22 14:13:19 +08:00
|
|
|
|
}
|
|
|
|
|
|
})
|
2024-06-13 18:03:50 +08:00
|
|
|
|
}
|
2024-09-12 11:20:52 +08:00
|
|
|
|
// 版本对比
|
|
|
|
|
|
function compareVersions(version1, version2) {
|
|
|
|
|
|
console.log("版本对比", version1, version2)
|
|
|
|
|
|
// 将版本号拆分成数字数组
|
|
|
|
|
|
var arr1 = version1.split('.').map(Number);;
|
|
|
|
|
|
var arr2 = version2.split('.').map(Number);;
|
|
|
|
|
|
|
|
|
|
|
|
// 遍历数字数组进行逐段比较
|
|
|
|
|
|
for (var i = 0; i < Math.max(arr1.length, arr2.length); i++) {
|
|
|
|
|
|
var num1 = parseInt(arr1[i] || 0); // 如果数组长度不够,则将缺失部分补0
|
|
|
|
|
|
var num2 = parseInt(arr2[i] || 0);
|
|
|
|
|
|
|
|
|
|
|
|
if (num1 < num2) {
|
|
|
|
|
|
return -1; // 版本1小于版本2
|
|
|
|
|
|
} else if (num1 > num2) {
|
|
|
|
|
|
return 1; // 版本1大于版本2
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return 0; // 版本1等于版本2
|
|
|
|
|
|
}
|
2024-06-13 18:03:50 +08:00
|
|
|
|
|
2024-05-02 15:59:36 +08:00
|
|
|
|
// 2进制位数不足补0
|
|
|
|
|
|
function PrefixZero(num, n) {
|
|
|
|
|
|
return (Array(n).join(0) + num).slice(-n);
|
|
|
|
|
|
}
|
2024-07-22 14:13:19 +08:00
|
|
|
|
//转16进制位数不足补0
|
|
|
|
|
|
function toHex(num, length) {
|
|
|
|
|
|
return num.toString(16).padStart(length, '0');
|
|
|
|
|
|
}
|
2024-05-02 15:59:36 +08:00
|
|
|
|
|
|
|
|
|
|
function inArray(arr, key, val) {
|
|
|
|
|
|
if (!arr || !arr.length || typeof arr != 'object' || !Array.isArray(arr)) {
|
|
|
|
|
|
return -1
|
|
|
|
|
|
}
|
|
|
|
|
|
for (let i = 0; i < arr.length; i++) {
|
|
|
|
|
|
if (!key) {
|
|
|
|
|
|
if (arr[i] == val) {
|
|
|
|
|
|
return i
|
|
|
|
|
|
}
|
|
|
|
|
|
} else if (arr[i][key] === val) {
|
|
|
|
|
|
return i
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
return -1;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2024-05-29 16:35:45 +08:00
|
|
|
|
function validatePhoneEmail(input) {
|
|
|
|
|
|
const phoneRegex = /^(\+?\d{1,4})?[-\s.]?\(?(\d{3})\)?[-\s.]?(\d{3})[-\s.]?(\d{4})$/;
|
|
|
|
|
|
const emailRegex = /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/;
|
|
|
|
|
|
const isPhone = phoneRegex.test(input);
|
|
|
|
|
|
const isEmail = emailRegex.test(input);
|
|
|
|
|
|
|
|
|
|
|
|
return {
|
|
|
|
|
|
isPhone,
|
|
|
|
|
|
isEmail
|
|
|
|
|
|
};
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2024-05-02 15:59:36 +08:00
|
|
|
|
function msg(str) {
|
|
|
|
|
|
uni.showToast({
|
|
|
|
|
|
title: str,
|
2024-08-13 15:27:01 +08:00
|
|
|
|
icon: 'none',
|
|
|
|
|
|
duration: 3000
|
2024-05-02 15:59:36 +08:00
|
|
|
|
})
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
function ab2hex(buffer, split) {
|
|
|
|
|
|
var hexArr = Array.prototype.map.call(
|
|
|
|
|
|
new Uint8Array(buffer),
|
|
|
|
|
|
function(bit) {
|
|
|
|
|
|
return ('00' + bit.toString(16)).slice(-2)
|
|
|
|
|
|
}
|
|
|
|
|
|
)
|
|
|
|
|
|
return hexArr.join(split);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
function hex2str(arr) {
|
|
|
|
|
|
let decoder = new TextDecoder('utf8')
|
|
|
|
|
|
let uint8 = new Uint8Array(arr)
|
|
|
|
|
|
let res = decoder.decode(uint8)
|
|
|
|
|
|
return res
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
function str2hex(str) {
|
|
|
|
|
|
let encoder = new TextEncoder('utf8')
|
|
|
|
|
|
return encoder.encode(str)
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2024-05-29 16:35:45 +08:00
|
|
|
|
// 跳绳分秒时间选择
|
|
|
|
|
|
function gethms(type) {
|
|
|
|
|
|
var mindata = []
|
|
|
|
|
|
var secondData = []
|
|
|
|
|
|
let timeList = []
|
2024-07-22 14:13:19 +08:00
|
|
|
|
for (var i = 0; i <= 59; i++) {
|
2024-05-29 16:35:45 +08:00
|
|
|
|
i = i > 9 ? i : '0' + i
|
|
|
|
|
|
mindata.push(i + '分');
|
|
|
|
|
|
}
|
|
|
|
|
|
for (var i = 0; i <= 59; i++) {
|
|
|
|
|
|
i = i > 9 ? i : '0' + i
|
|
|
|
|
|
secondData.push(i + '秒');
|
2024-05-02 15:59:36 +08:00
|
|
|
|
}
|
2024-05-29 16:35:45 +08:00
|
|
|
|
timeList[0] = mindata
|
|
|
|
|
|
timeList[1] = secondData
|
|
|
|
|
|
return timeList
|
2024-05-02 15:59:36 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2024-05-29 16:35:45 +08:00
|
|
|
|
function getMonth(dates, months) {
|
|
|
|
|
|
var d = new Date(dates.substring(0, 10));
|
|
|
|
|
|
let year = d.getFullYear();
|
|
|
|
|
|
var month = d.getMonth() + 1;
|
|
|
|
|
|
if (Math.abs(months) > 12) {
|
|
|
|
|
|
months = months % 12;
|
|
|
|
|
|
};
|
|
|
|
|
|
if (months != 0) {
|
|
|
|
|
|
if (month + months > 12) {
|
|
|
|
|
|
year++;
|
|
|
|
|
|
month = (month + months) % 12;
|
|
|
|
|
|
} else if (month + months < 1) {
|
|
|
|
|
|
year--;
|
|
|
|
|
|
month = 12 + month + months;
|
|
|
|
|
|
} else {
|
|
|
|
|
|
month = month + months;
|
|
|
|
|
|
};
|
|
|
|
|
|
};
|
|
|
|
|
|
month = month < 10 ? "0" + month : month;
|
|
|
|
|
|
var date = d.getDate();
|
|
|
|
|
|
if (month == "01" || month == "03" || month == "05" || month == "07" || month == "08" || month == "10" ||
|
|
|
|
|
|
month == "12") {
|
2024-06-13 18:03:50 +08:00
|
|
|
|
return year + "-" + month + "-01" + "~" + year + "-" + month + "-31";
|
2024-05-29 16:35:45 +08:00
|
|
|
|
} else if (month == "02") {
|
|
|
|
|
|
if ((year % 4 == 0 && year % 100 != 0) || (year % 100 == 0 && year % 400 == 0)) {
|
2024-06-13 18:03:50 +08:00
|
|
|
|
return year + '-' + month + "-01" + "~" + year + "-" + month + "-29";
|
2024-05-29 16:35:45 +08:00
|
|
|
|
} else {
|
2024-06-13 18:03:50 +08:00
|
|
|
|
return year + '-' + month + "-01" + "~" + year + "-" + month + "-28";
|
2024-05-29 16:35:45 +08:00
|
|
|
|
};
|
|
|
|
|
|
} else {
|
2024-06-13 18:03:50 +08:00
|
|
|
|
return year + '-' + month + "-01" + "~" + year + "-" + month + "-30";
|
2024-05-29 16:35:45 +08:00
|
|
|
|
};
|
|
|
|
|
|
};
|
|
|
|
|
|
|
2024-05-02 15:59:36 +08:00
|
|
|
|
function getDate(type) {
|
|
|
|
|
|
const date = new Date();
|
|
|
|
|
|
let year = date.getFullYear();
|
|
|
|
|
|
let month = date.getMonth() + 1;
|
|
|
|
|
|
let day = date.getDate();
|
2024-05-29 16:35:45 +08:00
|
|
|
|
month = month > 9 ? month : '0' + month;
|
2024-05-02 15:59:36 +08:00
|
|
|
|
day = day > 9 ? day : '0' + day;
|
|
|
|
|
|
if (type === 'tow') {
|
|
|
|
|
|
year = year - 2;
|
2024-07-25 16:55:39 +08:00
|
|
|
|
return `${year}-${month}-${day}`;
|
2024-05-02 15:59:36 +08:00
|
|
|
|
}
|
|
|
|
|
|
if (type === 'start') {
|
|
|
|
|
|
year = year;
|
2024-06-13 18:03:50 +08:00
|
|
|
|
return `${year}-${month}-${day}`;
|
2024-05-02 15:59:36 +08:00
|
|
|
|
}
|
|
|
|
|
|
if (type === 'end') {
|
|
|
|
|
|
year = year + 60;
|
2024-07-25 16:55:39 +08:00
|
|
|
|
return `${year}-${month}-${day}`;
|
2024-05-29 16:35:45 +08:00
|
|
|
|
}
|
|
|
|
|
|
if (type === 'year') {
|
|
|
|
|
|
year = year;
|
|
|
|
|
|
return `${year}`;
|
|
|
|
|
|
}
|
|
|
|
|
|
if (type === 'month') {
|
|
|
|
|
|
year = year;
|
2024-07-25 16:55:39 +08:00
|
|
|
|
return `${year}-${month}`;
|
2024-05-02 15:59:36 +08:00
|
|
|
|
}
|
|
|
|
|
|
if (type == "m") {
|
|
|
|
|
|
if (month == "01" || month == "03" || month == "05" || month == "07" || month == "08" || month == "10" ||
|
|
|
|
|
|
month == "12") {
|
2024-06-13 18:03:50 +08:00
|
|
|
|
return year + "-" + month + "-01" + "~" + year + "-" + month + "-31";
|
2024-05-02 15:59:36 +08:00
|
|
|
|
} else if (month == "02") {
|
|
|
|
|
|
if ((year % 4 == 0 && year % 100 != 0) || (year % 100 == 0 && year % 400 == 0)) {
|
2024-06-13 18:03:50 +08:00
|
|
|
|
return year + "-" + month + "-01" + "~" + year + "-" + month + "-29";
|
2024-05-02 15:59:36 +08:00
|
|
|
|
} else {
|
2024-06-13 18:03:50 +08:00
|
|
|
|
return year + "-" + month + "-01" + "~" + year + "-" + month + "-28";
|
2024-05-02 15:59:36 +08:00
|
|
|
|
};
|
|
|
|
|
|
} else {
|
2024-06-13 18:03:50 +08:00
|
|
|
|
return year + "-" + month + "-01" + "~" + year + "-" + month + "-30";
|
2024-05-02 15:59:36 +08:00
|
|
|
|
};
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2024-05-29 16:35:45 +08:00
|
|
|
|
//获取AddDayCount天后的日期
|
2024-05-02 15:59:36 +08:00
|
|
|
|
function GetDateStr(AddDayCount) {
|
|
|
|
|
|
var dd = new Date();
|
2024-05-29 16:35:45 +08:00
|
|
|
|
dd.setDate(dd.getDate() + AddDayCount);
|
2024-05-02 15:59:36 +08:00
|
|
|
|
var y = dd.getFullYear();
|
|
|
|
|
|
var m = (dd.getMonth() + 1) < 10 ? "0" + (dd.getMonth() + 1) : (dd.getMonth() + 1); //获取当前月份的日期,不足10补0
|
|
|
|
|
|
var d = dd.getDate() < 10 ? "0" + dd.getDate() : dd.getDate(); //获取当前几号,不足10补0
|
2024-06-13 18:03:50 +08:00
|
|
|
|
return y + "-" + m + "-" + d;
|
2024-11-12 15:38:28 +08:00
|
|
|
|
}
|
|
|
|
|
|
//用于检查用户是否同意隐私协议
|
|
|
|
|
|
function checkPrivacyAgreement() {
|
2024-12-09 09:57:51 +08:00
|
|
|
|
// 这里应该是获取用户同意状态的逻辑,例如从本地存储或服务端获取
|
|
|
|
|
|
const isAgreed = uni.getStorageSync('isPrivacyAgreed');
|
|
|
|
|
|
return !!isAgreed;
|
2024-12-07 10:41:48 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
function getBluetoothAdapter(err) {
|
|
|
|
|
|
let textLink = ""
|
|
|
|
|
|
if (err.errMsg == "openBluetoothAdapter:fail auth denied" || err.errMsg ===
|
|
|
|
|
|
"openBluetoothAdapter:fail auth deny" ||
|
|
|
|
|
|
err.errMsg === "openBluetoothAdapter:fail authorize no response"
|
|
|
|
|
|
) {
|
|
|
|
|
|
uni.showModal({
|
|
|
|
|
|
title: "提示",
|
|
|
|
|
|
content: "需要您授权使用手机蓝牙",
|
|
|
|
|
|
showCancel: false,
|
|
|
|
|
|
success(modalSuccess) {
|
|
|
|
|
|
uni.openSetting({
|
|
|
|
|
|
success(settingdata) {
|
|
|
|
|
|
if (settingdata.authSetting["scope.bluetooth"]) {
|
|
|
|
|
|
uni.openBluetoothAdapter({
|
|
|
|
|
|
success: e => {
|
|
|
|
|
|
$store.commit("changeBluetooth", true);
|
|
|
|
|
|
textLink = "蓝牙权限获取成功,重新连接蓝牙"
|
|
|
|
|
|
return textLink
|
|
|
|
|
|
},
|
|
|
|
|
|
fail: err => {
|
|
|
|
|
|
textLink = "请打开手机蓝牙后,开始测量"
|
|
|
|
|
|
console.log('初始化蓝牙失败:' + err.errMsg);
|
|
|
|
|
|
return textLink
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
} else {
|
|
|
|
|
|
textLink = "获取权限失败,将无法使用手机蓝牙进行测量"
|
|
|
|
|
|
return textLink
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
})
|
|
|
|
|
|
}
|
|
|
|
|
|
})
|
|
|
|
|
|
} else {
|
|
|
|
|
|
textLink = "请打开手机蓝牙后,开始测量"
|
|
|
|
|
|
return textLink
|
|
|
|
|
|
}
|
2024-05-29 16:35:45 +08:00
|
|
|
|
}
|