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
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
|