wx-starlock/stores/basic.js

400 lines
8.6 KiB
JavaScript
Raw Normal View History

import { defineStore } from 'pinia'
// 页面配置
const pages = [
{
name: 'home',
path: '/pages/home/home',
tabBar: true
},
{
name: 'mine',
path: '/pages/mine/mine',
tabBar: true
},
{
name: 'userInfo',
path: '/pages/userInfo/userInfo',
tabBar: false
},
{
name: 'updateName',
path: '/pages/updateName/updateName',
tabBar: false
},
{
name: 'updatePassword',
path: '/pages/updatePassword/updatePassword',
tabBar: false
},
{
name: 'updateEmail',
path: '/pages/updateEmail/updateEmail',
tabBar: false
},
{
name: 'verifyEmail',
path: '/pages/verifyEmail/verifyEmail',
tabBar: false
},
{
name: 'webview',
path: '/pages/webview/webview',
tabBar: false
2024-08-22 16:37:15 +08:00
},
{
name: 'lockDetail',
path: '/pages/lockDetail/lockDetail',
tabBar: false
},
{
name: 'searchDevice',
path: '/pages/searchDevice/searchDevice',
tabBar: false
2024-08-24 14:25:05 +08:00
},
{
name: 'selectAddress',
path: '/pages/selectAddress/selectAddress',
tabBar: false
},
{
name: 'bindLock',
path: '/pages/bindLock/bindLock',
tabBar: false
2024-08-26 20:04:22 +08:00
},
{
name: 'setting',
path: '/pages/setting/setting',
tabBar: false
},
{
name: 'keyList',
path: '/pages/keyList/keyList',
tabBar: false
},
{
name: 'createKey',
path: '/pages/createKey/createKey',
tabBar: false
},
{
name: 'passwordList',
path: '/pages/passwordList/passwordList',
tabBar: false
},
{
name: 'createPassword',
path: '/pages/createPassword/createPassword',
tabBar: false
},
{
name: 'passwordDetail',
path: '/pages/passwordDetail/passwordDetail',
tabBar: false
},
{
name: 'keyDetail',
path: '/pages/keyDetail/keyDetail',
tabBar: false
2024-09-30 14:03:25 +08:00
},
{
name: 'notificationList',
path: '/pages/notificationList/notificationList',
tabBar: true
},
{
name: 'notificationDetail',
path: '/pages/notificationDetail/notificationDetail',
tabBar: false
},
{
name: 'addLockGuid',
path: '/pages/addLockGuid/addLockGuid',
tabBar: false
2025-02-07 16:28:45 +08:00
},
{
name: 'cardList',
path: '/pages/cardList/cardList',
tabBar: false
},
{
name: 'createCard',
path: '/pages/createCard/createCard',
tabBar: false
},
{
name: 'cardDetail',
path: '/pages/cardDetail/cardDetail',
tabBar: false
},
2025-02-08 18:31:14 +08:00
{
name: 'bindCard',
path: '/pages/bindCard/bindCard',
tabBar: false
},
2025-02-07 16:28:45 +08:00
{
name: 'fingerprintList',
path: '/pages/fingerprintList/fingerprintList',
tabBar: false
},
{
name: 'createFingerprint',
path: '/pages/createFingerprint/createFingerprint',
tabBar: false
},
{
name: 'fingerprintDetail',
path: '/pages/fingerprintDetail/fingerprintDetail',
tabBar: false
2025-02-09 14:38:52 +08:00
},
{
name: 'bindFingerprint',
path: '/pages/bindFingerprint/bindFingerprint',
tabBar: false
},
{
name: 'faceList',
path: '/pages/faceList/faceList',
tabBar: false
},
{
name: 'createFace',
path: '/pages/createFace/createFace',
tabBar: false
},
{
name: 'faceDetail',
path: '/pages/faceDetail/faceDetail',
tabBar: false
},
{
name: 'bindFace',
path: '/pages/bindFace/bindFace',
tabBar: false
},
{
name: 'remoteList',
path: '/pages/remoteList/remoteList',
tabBar: false
},
{
name: 'createRemote',
path: '/pages/createRemote/createRemote',
tabBar: false
},
{
name: 'remoteDetail',
path: '/pages/remoteDetail/remoteDetail',
tabBar: false
},
{
name: 'bindRemote',
path: '/pages/bindRemote/bindRemote',
tabBar: false
},
{
name: 'palmVeinList',
path: '/pages/palmVeinList/palmVeinList',
tabBar: false
},
{
name: 'createPalmVein',
path: '/pages/createPalmVein/createPalmVein',
tabBar: false
},
{
name: 'palmVeinDetail',
path: '/pages/palmVeinDetail/palmVeinDetail',
tabBar: false
},
{
name: 'bindPalmVein',
path: '/pages/bindPalmVein/bindPalmVein',
tabBar: false
2025-02-10 14:13:25 +08:00
},
{
name: 'createAdmin',
path: '/pages/createAdmin/createAdmin',
tabBar: false
},
{
name: 'adminDetail',
path: '/pages/adminDetail/adminDetail',
tabBar: false
},
{
name: 'adminList',
path: '/pages/adminList/adminList',
tabBar: false
}
]
export const useBasicStore = defineStore('basic', {
state() {
return {
// 设备信息
deviceInfo: null,
// 胶囊按钮的位置信息
2024-09-30 14:03:25 +08:00
buttonInfo: null,
// 分享配置
shareConfig: {}
}
},
actions: {
// 路由跳转
/* data name string type string params object delta number
* 具体入参查看文档 https://www.uviewui.com/js/route.html */
routeJump(data) {
2025-02-06 11:37:41 +08:00
const page = pages.find(page => {
return page.name === data.name
})
if (page) {
2025-02-08 18:31:14 +08:00
if (!data.type || data.type === 'navigateTo' || data.type === 'to') {
let url = `${page.path}?`
if (data.params) {
Object.keys(data.params).forEach((key, index) => {
if (index === 0) {
url += `${key}=${data.params[key]}`
} else {
url += `&${key}=${data.params[key]}`
}
})
}
uni.navigateTo({
url,
...data
})
} else {
uni.$u.route({
url: page.path,
...data
})
}
}
},
2024-09-05 17:52:53 +08:00
// 获取当前网络状态
getNetworkType() {
2025-02-06 11:37:41 +08:00
return new Promise(resolve => {
2024-09-05 17:52:53 +08:00
uni.getNetworkType({
2025-02-06 11:37:41 +08:00
success(res) {
if (res.networkType === 'none') {
2024-09-06 18:10:50 +08:00
uni.showToast({
title: '网络访问失败,请检查网络是否正常',
icon: 'none'
})
2024-09-05 17:52:53 +08:00
resolve(false)
return
}
resolve(true)
},
2025-02-06 11:37:41 +08:00
fail() {
2024-09-05 17:52:53 +08:00
resolve(false)
}
})
})
},
// 获取设备信息
getDeviceInfo() {
const that = this
2025-02-06 11:37:41 +08:00
return new Promise(resolve => {
if (that.deviceInfo?.model) {
resolve(that.deviceInfo)
return
}
uni.getSystemInfo({
2025-02-06 11:37:41 +08:00
success(res) {
that.deviceInfo = res
resolve(that.deviceInfo)
},
2025-02-06 11:37:41 +08:00
fail() {
resolve({})
}
})
})
},
// 获取胶囊信息
getButtonInfo() {
2025-02-06 11:37:41 +08:00
return new Promise(resolve => {
if (this.buttonInfo?.top) {
resolve(this.buttonInfo)
return
}
this.buttonInfo = uni.getMenuButtonBoundingClientRect()
resolve(this.buttonInfo)
})
},
2024-08-24 14:25:05 +08:00
// 计算字符串长度
calculateStringTotalWidth(str) {
let totalWidth = 0
// 遍历字符串中的每一个字符
for (let i = 0; i < str.length; i++) {
const char = str[i]
// 判断当前字符是全角字符还是半角字符
if (/[\uFF01-\uFF60\uFFE0-\uFFE6\u4E00-\u9FFF\u3000-\u303F]/.test(char)) {
// 全角字符宽度为 2
totalWidth += 2
} else {
// 半角字符宽度为 1
totalWidth += 1
}
}
return totalWidth
},
// 回退页面并弹出toast提示
backAndToast(message, delta = 1) {
uni.navigateBack({
2025-02-06 11:37:41 +08:00
delta,
complete() {
setTimeout(() => {
uni.showToast({
title: message,
icon: 'none'
})
}, 300)
}
})
2024-09-30 14:03:25 +08:00
},
// 分享跳转
shareJump(data = this.shareConfig) {
if (data.path) {
const target = data.path.split('/')
if (target.length > 1) {
data.path = data.path.slice(target[0].length + 1, data.path.length)
} else {
delete data.path
}
2025-02-06 11:37:41 +08:00
const page = pages.find(page => {
2024-09-30 14:03:25 +08:00
return page.name === target[0]
})
if (page) {
if (page.tabBar) {
wx.switchTab({
url: page.path
})
} else {
const url = page.path + '?' + getParams(data)
wx.navigateTo({ url })
}
} else {
delete data.path
}
} else {
delete data.path
}
this.shareConfig = data
function getParams(params) {
let paramStr = ''
2025-02-06 11:37:41 +08:00
Object.keys(params).forEach(item => {
2024-09-30 14:03:25 +08:00
if (paramStr === '') {
paramStr = `${item}=${params[item]}`
} else {
paramStr = `${paramStr}&${item}=${params[item]}`
}
})
return paramStr
}
2025-02-06 11:37:41 +08:00
}
}
})