You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

121 lines
2.8 KiB

import { defineStore } from 'pinia'
import {
login,
logout,
getInfo,
getPermissionInfo
} from '@/api/login'
import {
setToken,
removeToken
} from '@/utils/auth'
const baseUrl = import.meta.env.VITE_BASE_URL
const useStore = defineStore('storeId', {
state: () => ({
id: '', // 用户编号
name: '',
avatar: '',
roles: [],
permissions: '',
role: '',
post: '',
dept: '',
menus1: [],
menus2: [],
}),
getters: {
// isEven: (state) => state.count % 2 === 0
},
actions: {
// 登录
Login(userInfo) {
const username = userInfo.username.trim()
const password = userInfo.password
const captchaVerification = userInfo.captchaVerification
const tenantName = userInfo.tenantName
const rememberMe = userInfo.rememberMe
const code = userInfo.code
const uuid = userInfo.uuid
return new Promise((resolve, reject) => {
login(username, password, captchaVerification, tenantName, rememberMe, code, uuid).then(
res => {
res = res.data;
// 设置 token
setToken(res)
resolve(res)
}).catch(error => {
reject(error)
})
})
},
// 获取权限
GetPermissionInfo() {
return new Promise((resolve, reject) => {
getPermissionInfo().then(res => {
res = res.data; // 读取 data 数据
if (res.roles && res.roles.length > 0) {
this.roles = res.roles
this.role = res.roles.filter(item => item == 'all_approve' || item == 'normal_approve')[0]
this.permissions = res.permissions
let menus = []
res.menus.forEach(item => {
if (item.path == '/pda') {
menus = item.children
}
})
this.menus1 = menus.filter(item => item.path !== 'itemOut')
this.menus2 = menus.filter(item => item.path === 'itemOut')
} else {
this.roles = []
this.role = ''
}
resolve(res)
}).catch(error => {
reject(error)
})
})
},
// 获取权限
GetInfo() {
return new Promise((resolve, reject) => {
getInfo().then(res => {
res = res.data; // 读取 data 数据
this.avatar = res.avatar
this.name = res.nickname
this.id = res.id
this.avatar = res.avatar
this.dept = res.dept
if (res.posts && res.posts.length > 0) {
this.post = res.posts.filter(item => item.code == 'worker' || item.code == 'engineer')[0]
} else {
this.post = ''
}
resolve(res)
}).catch(error => {
reject(error)
})
})
},
// 获取权限
LogOut() {
return new Promise((resolve, reject) => {
logout().then(res => {
this.id = ''// 用户编号
this.name = ''
this.avatar = ''
this.roles = ''
this.permissions = ''
this.role = ''
this.post = ''
this.dept = ''
removeToken()
resolve(res)
}).catch(error => {
reject(error)
})
})
},
}
})
export default useStore