Refactor code structure and remove redundant changes
This commit is contained in:
4
store/index.ts
Normal file
4
store/index.ts
Normal file
@ -0,0 +1,4 @@
|
||||
import { createPinia } from 'pinia'
|
||||
|
||||
const store = createPinia()
|
||||
export default store
|
||||
60
store/permissions.ts
Normal file
60
store/permissions.ts
Normal file
@ -0,0 +1,60 @@
|
||||
import { defineStore } from 'pinia'
|
||||
// import { getPermissions } from '@/api/common'
|
||||
import { IPermissions } from '~/api/common/types'
|
||||
|
||||
// type TPayload = {
|
||||
// menuId: string
|
||||
// fullPath: string
|
||||
// }
|
||||
export default defineStore('usePermissionStore', {
|
||||
state() {
|
||||
return {
|
||||
// menuPermission 作为Key
|
||||
permissionKeysMap: new Map<string, IPermissions>(),
|
||||
// 路由作为Key 用作缓存
|
||||
permissionRouteMap: new Map<string, IPermissions>(),
|
||||
// 菜单权限原值
|
||||
permissions: [],
|
||||
}
|
||||
},
|
||||
actions: {
|
||||
SET_PERMISSIONS(payload: { list: IPermissions[]; fullPath: string }) {
|
||||
if (payload && Array.isArray(payload.list) && payload.fullPath) {
|
||||
const btnsMap = new Map()
|
||||
const permissionRouteMap = new Map()
|
||||
payload.list.forEach((item) => {
|
||||
btnsMap.set(item.menuPermission, item)
|
||||
})
|
||||
permissionRouteMap.set(payload.fullPath, payload.list)
|
||||
this.permissionKeysMap = btnsMap
|
||||
this.permissionRouteMap = permissionRouteMap
|
||||
this.permissions = payload.list as never[]
|
||||
}
|
||||
},
|
||||
// fetchPermissions(payload: TPayload) {
|
||||
// return new Promise(async (resolve) => {
|
||||
// const permissions: {
|
||||
// fullPath: string
|
||||
// menuId: string
|
||||
// list: IPermissions[]
|
||||
// } = {
|
||||
// menuId: '',
|
||||
// fullPath: payload.fullPath,
|
||||
// list: [],
|
||||
// }
|
||||
// try {
|
||||
// const res = await getPermissions({
|
||||
// menuId: payload.menuId,
|
||||
// })
|
||||
// if ((res.statusCode === '00000' || res.code === 0) && res.data && Array.isArray(res.data)) {
|
||||
// permissions.list = res.data
|
||||
// }
|
||||
// } catch (error) {
|
||||
// permissions.list = []
|
||||
// }
|
||||
// this.SET_PERMISSIONS(permissions)
|
||||
// resolve(true)
|
||||
// })
|
||||
// },
|
||||
},
|
||||
})
|
||||
99
store/user.ts
Normal file
99
store/user.ts
Normal file
@ -0,0 +1,99 @@
|
||||
import { defineStore } from 'pinia'
|
||||
import { refreshToken as REFRESHTOKEN } from '~/utils/axios'
|
||||
import router from '@/router'
|
||||
import { getUserInfo } from '~/api/common/index'
|
||||
import { AppMemberUserInfoRespVO } from '~/api/common/types'
|
||||
import MQTTClient from '~/utils/mqttClient'
|
||||
import { socialLoginByCode } from '~/api/pay'
|
||||
import app from '@/main'
|
||||
|
||||
export default defineStore('useUserStore', {
|
||||
state: () => ({
|
||||
token: REFRESHTOKEN.getToken().token || '',
|
||||
refreshToken: REFRESHTOKEN.getToken().refreshToken || '',
|
||||
userId: REFRESHTOKEN.getToken().userId || '',
|
||||
userName: REFRESHTOKEN.getToken().userName || '',
|
||||
userInfoRes: (REFRESHTOKEN.getToken().userInfo || {}) as AppMemberUserInfoRespVO,
|
||||
mqttClient: null as MQTTClient | null,
|
||||
}),
|
||||
actions: {
|
||||
setToken(token: string) {
|
||||
this.token = token
|
||||
},
|
||||
setRefreshToken(refreshToken: string) {
|
||||
this.refreshToken = refreshToken
|
||||
},
|
||||
setUserId(userId: string) {
|
||||
this.userId = userId
|
||||
},
|
||||
setUserName(userName: string) {
|
||||
this.userName = userName
|
||||
},
|
||||
logout() {
|
||||
REFRESHTOKEN.removeToken()
|
||||
if (self === top) {
|
||||
router.push('/index')
|
||||
} else {
|
||||
window.top?.postMessage({ event: 'logout' }, '*')
|
||||
}
|
||||
},
|
||||
async getUserInfo() {
|
||||
const res = await getUserInfo()
|
||||
if (res.code === 0) {
|
||||
this.userInfoRes = res.data
|
||||
REFRESHTOKEN.setUserInfo(res.data)
|
||||
// 建立连接mqtt
|
||||
this.connectMqtt()
|
||||
}
|
||||
},
|
||||
// 建立连接mqtt
|
||||
async connectMqtt() {
|
||||
this.mqttClient = new MQTTClient('wss://www.tuxixi.net/mqtt', {
|
||||
clientId: this.userInfoRes.id,
|
||||
})
|
||||
await this.mqttClient.connect()
|
||||
await this.mqttClient?.subscribe(`zbjk_message_single/${this.userInfoRes.id}`)
|
||||
await this.mqttClient?.subscribe(`zbjk_message_kefu/${this.userInfoRes.id}`)
|
||||
},
|
||||
async getToken(row: any) {
|
||||
try {
|
||||
// 验证state
|
||||
if (localStorage.getItem('wechat_login_state') !== row.state && localStorage.getItem('qq_login_state') !== row.state) {
|
||||
ElMessage.error('验证失败,请重新登录')
|
||||
return
|
||||
}
|
||||
|
||||
const res = await socialLoginByCode({
|
||||
code: row.code,
|
||||
state: row.state,
|
||||
type: Number(row.type), // type: 32-微信开放平台 35-腾讯QQ
|
||||
})
|
||||
|
||||
const { code, data } = res
|
||||
if (code === 0 && data.openid) {
|
||||
// 打开登录界面
|
||||
if (!data.accessToken) {
|
||||
ElMessage.error('因你未绑定手机号,请先绑定手机号')
|
||||
if (app) {
|
||||
app.config.globalProperties.$openLogin('verify', row.code, row.type, row.state)
|
||||
}
|
||||
} else {
|
||||
REFRESHTOKEN.setToken(data.accessToken, data.refreshToken)
|
||||
REFRESHTOKEN.setUserId(data.userId.toString())
|
||||
// REFRESHTOKEN.setUserName(loginForm.mobile)
|
||||
this.setToken(data.accessToken)
|
||||
this.setUserId(data.userId.toString())
|
||||
// userStore.setUserName(loginForm.mobile)
|
||||
this.setRefreshToken(data.refreshToken)
|
||||
// 获取信息
|
||||
await this.getUserInfo()
|
||||
}
|
||||
} else {
|
||||
console.error('获取token失败:', res.msg)
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('getToken error:', error)
|
||||
}
|
||||
},
|
||||
},
|
||||
})
|
||||
Reference in New Issue
Block a user