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.
315 lines
10 KiB
315 lines
10 KiB
import { setToken, removeToken, removeRememberMe, setTokenId } from '@/utils/auth'
|
|
import { filterAsyncRouter } from '@/store/modules/permission'
|
|
import { default as api } from '../../utils/api'
|
|
import global from '../../utils/common.js'
|
|
import store from '../../store'
|
|
import router, { resetRouter } from '../../router'
|
|
import Vue from 'vue'
|
|
// import { getOwnList, getRenwuListByPath } from '@/api/renwu'
|
|
// import { getNeedRecordList } from '@/api/ysjl'
|
|
|
|
const user = {
|
|
state: {
|
|
nickname: '',
|
|
username: '',
|
|
userId: '',
|
|
avatar: 'https://s.gravatar.com/avatar/04e13ae1e36866dbc9f5882663db641d?s=80',
|
|
clientType: '',
|
|
roles: [],
|
|
departmentId: '',
|
|
menus: [],
|
|
permissions: [],
|
|
allUser: [],
|
|
allCategory: [],
|
|
messageCount: [],
|
|
prodName: process.env.NODE_ENV === 'development' ? '' : '/sdmaFront' // 开发环境下为空,生产环境下请设置为tomcat项目名称或者nginx代理项目名称。(例如:/dist)
|
|
},
|
|
mutations: {
|
|
SET_USER: (state, userInfo) => {
|
|
state.nickname = userInfo.userVO.nickname
|
|
state.username = userInfo.userVO.username
|
|
state.userId = userInfo.userVO.id
|
|
state.clientType = userInfo.userVO.clientType
|
|
state.roles = userInfo.roleList
|
|
state.departmentId = userInfo.userVO.departmentId
|
|
state.menus = userInfo.menuList
|
|
state.permissions = userInfo.permissionList
|
|
state.allUser = userInfo.allUser
|
|
state.allCategory = userInfo.allCategory
|
|
state.messageCount = userInfo.messageCount
|
|
state.avatar = process.env.VUE_APP_IMG_URL + 'HeadPortrait/' + userInfo.userVO.nickname + '.jpg'
|
|
},
|
|
RESET_USER: (state) => {
|
|
state.imgUrl = ''
|
|
state.nickname = ''
|
|
state.username = ''
|
|
state.userId = ''
|
|
state.roles = []
|
|
state.departmentId = ''
|
|
state.menus = []
|
|
state.permissions = []
|
|
localStorage.clear()
|
|
}
|
|
},
|
|
|
|
actions: {
|
|
// 登录
|
|
Login({ commit, state }, loginForm) {
|
|
return new Promise((resolve, reject) => {
|
|
api({
|
|
url: 'user/login',
|
|
method: 'post',
|
|
data: loginForm
|
|
}).then(data => {
|
|
localStorage.setItem('token', data.loginToken)
|
|
setToken()
|
|
global.it = data.id
|
|
setTokenId(data.id)
|
|
if (loginForm.password.length < 8 || loginForm.password === 'Ma123456') {
|
|
Vue.prototype.$prompt('请输入新密码(未修改密码,不允许登录)', '提示', {
|
|
confirmButtonText: '确定',
|
|
cancelButtonText: '取消',
|
|
inputPattern: /.{8,}/,
|
|
inputErrorMessage: '新密码最低长度8位!'
|
|
}).then(({ value }) => {
|
|
api({
|
|
url: '/user/changePwd',
|
|
method: 'post',
|
|
data: {
|
|
username: loginForm.username,
|
|
password: loginForm.password,
|
|
newPassword: value,
|
|
type: 'login'
|
|
}
|
|
}).then(() => reject('请使用修改后的新密码进行登录系统!'))
|
|
.catch(_ => reject('修改密码失败!'))
|
|
}).catch(_ => reject('未修改密码,不允许登录!'))
|
|
} else {
|
|
resolve(data)
|
|
}
|
|
}).catch(err => {
|
|
reject(err)
|
|
// 删除本地Cookies,防止出现登录死循环
|
|
removeRememberMe()
|
|
})
|
|
})
|
|
},
|
|
|
|
// 获取用户信息
|
|
GetInfo({ commit }) {
|
|
return new Promise((resolve, reject) => {
|
|
api({
|
|
url: '/user/getInfo',
|
|
method: 'get'
|
|
}).then(data => {
|
|
// 获取全部用户
|
|
api({
|
|
url: '/user/all',
|
|
method: 'get'
|
|
}).then(data => {
|
|
user.state.allUser = data
|
|
}).catch(error => {
|
|
reject(error)
|
|
})
|
|
// 获取全部设备种类
|
|
api({
|
|
url: '/category/all',
|
|
method: 'get'
|
|
}).then(data => {
|
|
user.state.allCategory = data
|
|
}).catch(error => {
|
|
reject(error)
|
|
})
|
|
// 储存用户信息
|
|
commit('SET_USER', data)
|
|
// cookie保存登录状态,仅靠vuex保存的话,页面刷新就会丢失登录状态
|
|
setToken()
|
|
global.it = data.userVO.id
|
|
// 查询相关待办条数
|
|
/* const messagePush = []
|
|
const departmentId = user.state.departmentId
|
|
getOwnList({ // 我的任务
|
|
pageNum: 1, // 页码
|
|
pageRow: 20, // 每页条数
|
|
searchYsjl: {}
|
|
}).then(task => {
|
|
messagePush.push({
|
|
key: 'MyTask',
|
|
value: task.totalCount
|
|
})
|
|
})
|
|
getRenwuListByPath({ // 待分配任务
|
|
searchRenwu: {
|
|
shiyongdanwei: undefined,
|
|
shebeizhongleidaima: '',
|
|
bjState: '2'
|
|
}
|
|
}, 'list').then(task => {
|
|
messagePush.push({
|
|
key: 'AllotList',
|
|
value: task.totalCount
|
|
}, {
|
|
key: 'allot',
|
|
value: task.totalCount > 0 ? 1 : 0
|
|
})
|
|
})
|
|
getRenwuListByPath({ // 退回任务
|
|
pageNum: 1, // 页码
|
|
pageRow: 20, // 每页条数
|
|
searchRw: {}
|
|
}, 'getTuihuiList').then(task => {
|
|
messagePush.push({
|
|
key: 'BackRenwu',
|
|
value: task.totalCount
|
|
})
|
|
})
|
|
getNeedRecordList({ // 待办记录
|
|
pageNum: 1, // 页码
|
|
pageRow: 20, // 每页条数
|
|
searchYsjl: {
|
|
cjState: 'ysjl'
|
|
},
|
|
hasChild: true
|
|
}).then((ysjl) => {
|
|
messagePush.push({
|
|
key: 'TODOYsjl',
|
|
value: ysjl.totalCount
|
|
}, {
|
|
key: 'ysjl',
|
|
value: ysjl.totalCount > 0 ? 1 : 0
|
|
})
|
|
})
|
|
getNeedRecordList({ // 检验报告列表
|
|
pageNum: 1, // 页码
|
|
pageRow: 20, // 每页条数
|
|
searchYsjl: {
|
|
flowStatus: departmentId === 75 ? 1 : null
|
|
},
|
|
hasChild: true,
|
|
hasFinish: false
|
|
}).then((ysjl) => {
|
|
messagePush.push({
|
|
key: 'TODOReport',
|
|
value: ysjl.totalCount
|
|
}, {
|
|
key: 'bggl',
|
|
value: ysjl.totalCount > 0 ? 1 : 0
|
|
})
|
|
})
|
|
getNeedRecordList({ // 待审报告列表
|
|
pageNum: 1, // 页码
|
|
pageRow: 20, // 每页条数
|
|
hasTrial: true,
|
|
hasChild: true,
|
|
hasFinish: false
|
|
}).then((ysjl) => {
|
|
messagePush.push({
|
|
key: 'dsbg-list',
|
|
value: ysjl.totalCount
|
|
})
|
|
})
|
|
if (departmentId === 75) { // 锅炉科室定检
|
|
getNeedRecordList({ // 未打印
|
|
pageNum: 1, // 页码
|
|
pageRow: 20, // 每页条数
|
|
searchYsjl: {
|
|
departmentId: departmentId,
|
|
printState: 0
|
|
},
|
|
hasChild: false,
|
|
hasFinish: true,
|
|
flowstatus: undefined
|
|
}).then((data) => {
|
|
messagePush.push({
|
|
key: 'PrintReportGlKsWdy',
|
|
value: data.totalCount
|
|
})
|
|
})
|
|
getNeedRecordList({ // 未发放
|
|
pageNum: 1, // 页码
|
|
pageRow: 20, // 每页条数
|
|
hasChild: false,
|
|
hasFinish: true,
|
|
flowstatus: undefined,
|
|
searchYsjl: {
|
|
shebeizhongleidaima: '1000',
|
|
printState: 1,
|
|
fafangState: 0
|
|
}
|
|
}).then((data) => {
|
|
messagePush.push({
|
|
key: 'GrantReportGlCreate',
|
|
value: data.totalCount
|
|
}, {
|
|
key: 'grant',
|
|
value: data.totalCount > 0 ? 1 : 0
|
|
})
|
|
})
|
|
getNeedRecordList({ // 已发放
|
|
pageNum: 1, // 页码
|
|
pageRow: 20, // 每页条数
|
|
hasChild: false,
|
|
hasFinish: true,
|
|
flowstatus: undefined,
|
|
searchYsjl: {
|
|
shebeizhongleidaima: '1000',
|
|
printState: 1,
|
|
fafangState: 1
|
|
}
|
|
}).then((data) => {
|
|
messagePush.push({
|
|
key: 'GrantReportGlYiFafang',
|
|
value: data.totalCount
|
|
})
|
|
})
|
|
}
|
|
user.state.messageCount = messagePush*/ // 赋值要放在 set_user 后面,否则被冲刷掉了。
|
|
// 查询路由
|
|
const asyncRouter = filterAsyncRouter(data.menuList)
|
|
asyncRouter.push({ path: '*', redirect: '/404', hidden: true })
|
|
store.dispatch('GenerateRoutes', asyncRouter).then(() => {
|
|
// 生成该用户的新路由json操作完毕之后,调用vue-router的动态新增路由方法,将新路由添加
|
|
router.addRoutes(asyncRouter) // 动态添加可访问路由表
|
|
})
|
|
resolve(data)
|
|
}).catch(error => {
|
|
reject(error)
|
|
// 删除本地Cookies,防止出现登录死循环
|
|
removeRememberMe()
|
|
removeToken()
|
|
router.push('/login')
|
|
})
|
|
})
|
|
},
|
|
// 登出
|
|
LogOut({ commit }) {
|
|
return new Promise((resolve) => {
|
|
api({
|
|
url: 'user/logout',
|
|
method: 'post'
|
|
}).then(data => {
|
|
commit('RESET_USER')
|
|
removeToken()
|
|
removeRememberMe()
|
|
resolve(data)
|
|
}).catch(() => {
|
|
commit('RESET_USER')
|
|
removeToken()
|
|
removeRememberMe()
|
|
resetRouter()
|
|
})
|
|
})
|
|
},
|
|
// 前端 登出
|
|
FedLogOut({ commit }) {
|
|
return new Promise(resolve => {
|
|
commit('SET_TOKEN', '')
|
|
removeToken()
|
|
localStorage.clear()
|
|
resolve()
|
|
})
|
|
}
|
|
}
|
|
}
|
|
|
|
export default user
|
|
|