From 5a17bdbba71560e566e265d53104a2dbe34cdaa8 Mon Sep 17 00:00:00 2001 From: zhang_li <2235006734@qqq.com> Date: Fri, 23 Feb 2024 14:32:19 +0800 Subject: [PATCH] =?UTF-8?q?=E5=85=A5=E5=BA=93=EF=BC=8C=E5=87=BA=E5=BA=93?= =?UTF-8?q?=EF=BC=8C=E5=BD=92=E8=BF=98=E3=80=82=E7=99=BB=E5=BD=95=E9=80=80?= =?UTF-8?q?=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/inLocation.js | 24 ++ api/location.js | 16 + api/outLocation.js | 25 ++ api/spareParts.js | 18 ++ api/sparePartsReturn.js | 9 + api/system/user.js | 42 --- api/user.js | 8 + config.js | 2 +- manifest.json | 3 +- pages.json | 75 +++-- pages/inLocation/addForm.vue | 502 +++++++++++++++++++++++++++++ pages/inLocation/index.vue | 145 +++++++++ pages/index.vue | 281 ++++++---------- pages/login.vue | 6 +- pages/outLocation/addForm.vue | 479 +++++++++++++++++++++++++++ pages/outLocation/index.vue | 161 +++++++++ pages/sparePartsReturn/addForm.vue | 478 +++++++++++++++++++++++++++ plugins/index.js | 3 + plugins/time.js | 19 ++ static/images/icon1.png | Bin 0 -> 22900 bytes static/images/icon2.png | Bin 0 -> 22761 bytes static/images/icon3.png | Bin 0 -> 22431 bytes store/modules/user.js | 234 +++++++++----- utils/constant.js | 6 +- utils/storage.js | 2 +- 25 files changed, 2190 insertions(+), 348 deletions(-) create mode 100644 api/inLocation.js create mode 100644 api/location.js create mode 100644 api/outLocation.js create mode 100644 api/spareParts.js create mode 100644 api/sparePartsReturn.js delete mode 100644 api/system/user.js create mode 100644 api/user.js create mode 100644 pages/inLocation/addForm.vue create mode 100644 pages/inLocation/index.vue create mode 100644 pages/outLocation/addForm.vue create mode 100644 pages/outLocation/index.vue create mode 100644 pages/sparePartsReturn/addForm.vue create mode 100644 plugins/time.js create mode 100644 static/images/icon1.png create mode 100644 static/images/icon2.png create mode 100644 static/images/icon3.png diff --git a/api/inLocation.js b/api/inLocation.js new file mode 100644 index 0000000..d51443e --- /dev/null +++ b/api/inLocation.js @@ -0,0 +1,24 @@ +import request from '@/utils/request' +// 获取采购订单分页列表 +export function getInLocationPage(params) { + return request({ + url: '/eam/item-order-main/getPdaPage', + 'method': 'GET', + params + }) +} +// 获取采购订单分页列表 +export function getInLocationDetail(id) { + return request({ + url: '/eam/item-order-main/getPdaDetailsById?id='+id, + 'method': 'GET', + }) +} +// 入库新增 +export function inLocationCreat(data) { + return request({ + url: '/eam/item-order-main/inOperation', + 'method': 'POST', + data + }) +} \ No newline at end of file diff --git a/api/location.js b/api/location.js new file mode 100644 index 0000000..4e0df48 --- /dev/null +++ b/api/location.js @@ -0,0 +1,16 @@ +import request from '@/utils/request' +// 获取库位 +export function getLocation(number) { + return request({ + url: '/eam/location/scanCodeByNumber?number='+number, + 'method': 'GET', + }) +} +// 出库获取库位 +export function getOutLocation(params) { + return request({ + url: '/eam/location/outScanCodeByNumber', + 'method': 'GET', + params + }) +} diff --git a/api/outLocation.js b/api/outLocation.js new file mode 100644 index 0000000..d656dc9 --- /dev/null +++ b/api/outLocation.js @@ -0,0 +1,25 @@ +import request from '@/utils/request' +// 获取领用出库分页列表 +export function getOutLocationPage(params) { + return request({ + url: '/eam/item-apply-main/getAppOutOperaPage', + 'method': 'GET', + params + }) +} +// 获取领用出库详情 +export function getOutLocationDetail(params) { + return request({ + url: '/eam/item-apply-main/appGetByNumber', + 'method': 'GET', + params + }) +} +// 出库新增 +export function outLocationCreat(data) { + return request({ + url: '/eam/item-apply-main/outOperation', + 'method': 'POST', + data + }) +} \ No newline at end of file diff --git a/api/spareParts.js b/api/spareParts.js new file mode 100644 index 0000000..095edd3 --- /dev/null +++ b/api/spareParts.js @@ -0,0 +1,18 @@ +import request from '@/utils/request' + +// 获取备件信息 +export function getSparePartsInfo(params) { + return request({ + url: '/eam/item/inScanCodeByNumber', + 'method': 'GET', + params + }) +} +// 备件归还获取备件信息 +export function getSparePartsReturnInfo(params) { + return request({ + url: '/eam/item/scanCodeByNumber', + 'method': 'GET', + params + }) +} \ No newline at end of file diff --git a/api/sparePartsReturn.js b/api/sparePartsReturn.js new file mode 100644 index 0000000..61f673a --- /dev/null +++ b/api/sparePartsReturn.js @@ -0,0 +1,9 @@ +import request from '@/utils/request' +// 归还 +export function sparePartsReturn(data) { + return request({ + url: '/eam/item-apply-main/inOperation', + 'method': 'POST', + data + }) +} \ No newline at end of file diff --git a/api/system/user.js b/api/system/user.js deleted file mode 100644 index 59e9304..0000000 --- a/api/system/user.js +++ /dev/null @@ -1,42 +0,0 @@ -import upload from '@/utils/upload' -import request from '@/utils/request' - -// 用户密码重置 -export function updateUserPwd(oldPassword, newPassword) { - const data = { - oldPassword, - newPassword - } - return request({ - url: '/system/user/profile/update-password', - method: 'PUT', - params: data - }) -} - -// 查询用户个人信息 -export function getUserProfile() { - return request({ - url: '/system/user/profile/get', - method: 'GET' - }) -} - -// 修改用户个人信息 -export function updateUserProfile(data) { - return request({ - url: '/system/user/profile/update', - method: 'PUT', - data: data - }) -} - -// 用户头像上传 -export function uploadAvatar(data) { - return upload({ - url: '/system/user/profile/update-avatar', - method: 'PUT', - name: data.name, - filePath: data.filePath - }) -} diff --git a/api/user.js b/api/user.js new file mode 100644 index 0000000..ea2bf8f --- /dev/null +++ b/api/user.js @@ -0,0 +1,8 @@ +import request from '@/utils/request' +// 归还人员 +export function getReverterUser(){ + return request({ + url: '/system/user/list-all-simple', + 'method': 'GET' + }) +} diff --git a/config.js b/config.js index 962673a..a734e96 100644 --- a/config.js +++ b/config.js @@ -1,6 +1,6 @@ // 应用全局配置 module.exports = { - baseUrl: process.env.NODE_ENV === 'development' ? 'http://localhost:12080' : 'http://dev.ccwin-in.com:25200/api', + baseUrl: process.env.NODE_ENV === 'development' ? 'http://192.168.1.18:12080' : 'http://dev.ccwin-in.com:12080/api', baseApi:process.env.NODE_ENV === 'development' ? '/admin-api' : '/api/admin-api', // 应用信息 appInfo: { diff --git a/manifest.json b/manifest.json index 2970939..d70ff56 100644 --- a/manifest.json +++ b/manifest.json @@ -39,7 +39,8 @@ "dSYMs" : false }, "sdkConfigs" : { - "ad" : {} + "ad" : {}, + "push" : {} } } }, diff --git a/pages.json b/pages.json index 8298c29..4e380bd 100644 --- a/pages.json +++ b/pages.json @@ -2,41 +2,50 @@ "pages": [{ "path": "pages/index", "style": { - "navigationBarTitleText": "首页" + "navigationBarTitleText": "首页", + "navigationStyle": "custom" + } + },{ + "path": "pages/login", + "style": { + "navigationStyle": "custom" + } + },{ + "path": "pages/inLocation/index", + "style": { + "navigationStyle": "custom", + "navigationBarBackgroundColor": "#409eff", + "navigationBarTextStyle": "white" + } + },{ + "path": "pages/inLocation/addForm", + "style": { + "navigationBarTitleText": "入库信息", + "navigationBarBackgroundColor": "#409eff", + "navigationBarTextStyle": "white" + } + },{ + "path": "pages/sparePartsReturn/addForm", + "style": { + "navigationBarTitleText": "备件归还", + "navigationBarBackgroundColor": "#409eff", + "navigationBarTextStyle": "white" + } + },{ + "path": "pages/outLocation/index", + "style": { + "navigationStyle": "custom", + "navigationBarBackgroundColor": "#409eff", + "navigationBarTextStyle": "white" + } + },{ + "path": "pages/outLocation/addForm", + "style": { + "navigationBarTitleText": "出库信息", + "navigationBarBackgroundColor": "#409eff", + "navigationBarTextStyle": "white" } }], - // "tabBar": { - // "color": "#8f9bb3", - // "selectedColor": "#409eff", - // "borderStyle": "white", - // "backgroundColor": "#ffffff", - // "list": [{ - // "pagePath": "pages/index", - // "iconPath": "static/images/tabbar/tab_icon1.png", - // "selectedIconPath": "static/images/tabbar/tab_act_icon1.png", - // "text": "首页" - // }, { - // "pagePath": "pages/device/index", - // "iconPath": "static/images/tabbar/tab_icon2.png", - // "selectedIconPath": "static/images/tabbar/tab_act_icon2.png", - // "text": "设备" - // }, { - // "pagePath": "pages/mold/index", - // "iconPath": "static/images/tabbar/tab_icon3.png", - // "selectedIconPath": "static/images/tabbar/tab_act_icon3.png", - // "text": "模具" - // }, { - // "pagePath": "pages/spareParts/index", - // "iconPath": "static/images/tabbar/tab_icon4.png", - // "selectedIconPath": "static/images/tabbar/tab_act_icon4.png", - // "text": "备件" - // }, { - // "pagePath": "pages/mine/index", - // "iconPath": "static/images/tabbar/tab_icon5.png", - // "selectedIconPath": "static/images/tabbar/tab_act_icon5.png", - // "text": "我的" - // }] - // }, "globalStyle": { "navigationBarTextStyle": "black", "navigationBarTitleText": "RuoYi", diff --git a/pages/inLocation/addForm.vue b/pages/inLocation/addForm.vue new file mode 100644 index 0000000..14693da --- /dev/null +++ b/pages/inLocation/addForm.vue @@ -0,0 +1,502 @@ + + + + + \ No newline at end of file diff --git a/pages/inLocation/index.vue b/pages/inLocation/index.vue new file mode 100644 index 0000000..34efc8c --- /dev/null +++ b/pages/inLocation/index.vue @@ -0,0 +1,145 @@ + + + + + \ No newline at end of file diff --git a/pages/index.vue b/pages/index.vue index b775629..9d96c21 100644 --- a/pages/index.vue +++ b/pages/index.vue @@ -3,134 +3,68 @@ - - - - - {{counts.allCount || 0}} - 设备总数 + + + + + - - {{counts.breakDownCount || 0}} - 故障中设备 - - - {{counts.repairCount || 0}} - 已报修设备 + + - - - {{counts1.gongdan || 0}} - 待接单 - - - {{counts1.yanzheng || 0}} - 待验证 + + + + + - - {{counts1.shenpi || 0}} - 待审核 + + - - 设备维护 + + 采购入库 - - - 设备报修 - - - - - - 维修工单 - - - - - - 检修工单 + + + 采购入库 - - - 点检工单 - - - - - - 保养工单 + + + 备件归还 + - - 模具维护 + + 出库 - - - 设备报修 - - - - - - 维修工单 - - - - - - 检修工单 - - - - - - 保养工单 + + + 领用出库 - 备件管理 - - - - - 领用申请审批 - - - - - - 领用申请 - - - - - - 维修工单 - - - - + 退出登录 @@ -150,32 +84,35 @@ data() { return { bgOpacity: 0, - counts: '', - counts1: '', + token: '', } }, methods: { open(url) { + if(!this.token){ + this.$tab.navigateTo('/pages/login') + return + } this.$tab.navigateTo(url) }, - getCounts() { - getCounts().then(res => { - this.counts = res.data + handleLogout() { + this.$modal.confirm('确定注销并退出系统吗?').then(() => { + this.$store.dispatch('LogOut').then(() => { + this.$tab.reLaunch('/pages/login') + }) }) }, - getToDoCountsByUser() { - getToDoCountsByUser().then(res => { - this.counts1 = res.data - }) + handleLogin() { + console.log(11) + this.$tab.navigateTo('/pages/login') }, }, onLoad: async function() { - if (getAccessToken()) { - this.getCounts() - this.getToDoCountsByUser() - } -console.log( this.$store.state) + // if (getAccessToken()) { + // } + this.token = getAccessToken() ? getAccessToken() :'' + console.log( this.$store.state) }, onPageScroll(e) { if (e.scrollTop > 0) { @@ -201,86 +138,59 @@ console.log( this.$store.state) position: relative; image { - height: calc(var(--status-bar-height) + 410rpx); + height: calc(var(--status-bar-height) + 310rpx); } } - .top-box { + .info { position: absolute; - width: 100%; - bottom: 0px; - - .number { - padding: 30rpx 80rpx 50rpx; - display: flex; - align-items: center; - justify-content: space-between; - - .number-item { - text-align: center; - - view { - &:nth-child(1) { - color: white; - font-size: 40rpx; - font-weight: bold; - } - - &:nth-child(2) { - color: rgba(255, 255, 255, 0.7); - font-size: 28rpx; - margin-top: 10rpx; - } + top: calc(var(--status-bar-height) + 110rpx); + left: 80rpx; + right: 80rpx; + display: flex; + align-items: center; + .cu-avatar { + border: 4rpx solid #eaeaea; + width: 140rpx; + height: 140rpx; + border-radius: 50%; + + .icon { + font-size: 80rpx; } } - } - - .status { - margin: 0px 40rpx; - padding: 40rpx 0rpx; - background: white; - border-radius: 20rpx 20rpx 0px 0px; - display: flex; - align-items: center; - justify-content: space-between; - - .status-item { - text-align: center; - position: relative; - flex: 1; - - view { - &:nth-child(1) { - color: black; - font-size: 40rpx; - font-weight: bold; - } - - &:nth-child(2) { - color: rgba(0, 0, 0, 0.5); + + .user-info { + margin-left: 30rpx; + + .name { + line-height: 60rpx; + font-size: 36rpx; + font-weight: bold; + line-height: 60rpx; + margin-right: 20rpx; + color: white; + + span { + font-weight: normal; font-size: 28rpx; - margin-top: 10rpx; + padding-left: 20rpx; } } - - &::after { - content: ""; - border-right: 1px solid #dedede; - position: absolute; - height: 60rpx; - right: 0px; - top: 50%; - margin-top: -30rpx; - - } - - &:nth-last-child(1)::after { - border: none; + + .tips { + padding: 10rpx 20rpx; + background: #3952ae; + color: white; + border-radius: 50rpx; + font-size: 24rpx; + display: inline-block; + } } - } + } - + .box { .title { font-size: 32rpx; @@ -306,4 +216,15 @@ console.log( this.$store.state) } } } + .btn { + width: calc(100vw - 60rpx); + margin: 30rpx auto; + background-color: rgb(64, 158, 255); + color: #FFFFFF; + height: 90rpx; + line-height: 90rpx; + text-align: center; + border-radius: 10rpx; + font-size: 32rpx; + } \ No newline at end of file diff --git a/pages/login.vue b/pages/login.vue index fc3cfb2..606a614 100644 --- a/pages/login.vue +++ b/pages/login.vue @@ -29,11 +29,11 @@ - + @@ -101,8 +101,10 @@ // 设置用户信息 await this.$store.dispatch('GetPermissionInfo').then(res => { // this.$tab.reLaunch('/pages/index') + console.log(res) }) await this.$store.dispatch('GetInfo').then(res => { + console.log(res) this.$tab.reLaunch('/pages/index') }) } diff --git a/pages/outLocation/addForm.vue b/pages/outLocation/addForm.vue new file mode 100644 index 0000000..d3ecd9f --- /dev/null +++ b/pages/outLocation/addForm.vue @@ -0,0 +1,479 @@ + + + + + \ No newline at end of file diff --git a/pages/outLocation/index.vue b/pages/outLocation/index.vue new file mode 100644 index 0000000..4c4bf9f --- /dev/null +++ b/pages/outLocation/index.vue @@ -0,0 +1,161 @@ + + + + + \ No newline at end of file diff --git a/pages/sparePartsReturn/addForm.vue b/pages/sparePartsReturn/addForm.vue new file mode 100644 index 0000000..4d5818e --- /dev/null +++ b/pages/sparePartsReturn/addForm.vue @@ -0,0 +1,478 @@ + + + + + \ No newline at end of file diff --git a/plugins/index.js b/plugins/index.js index efbae15..8f5d204 100644 --- a/plugins/index.js +++ b/plugins/index.js @@ -1,6 +1,7 @@ import tab from './tab' import auth from './auth' import modal from './modal' +import time from './time' export default { install(Vue) { @@ -10,5 +11,7 @@ export default { Vue.prototype.$auth = auth // 模态框对象 Vue.prototype.$modal = modal + // 时间对象 + Vue.prototype.$time = time } } diff --git a/plugins/time.js b/plugins/time.js new file mode 100644 index 0000000..9f8a11c --- /dev/null +++ b/plugins/time.js @@ -0,0 +1,19 @@ +export default { + formatDate(timestamp){ + // 获取当前时间戳(单位:毫秒) + // var timestamp = Date.now(); // 或者传入特定的时间戳值 + timestamp = timestamp ? timestamp :Date.now() + // 创建Date对象并设置时间戳 + var dateObj = new Date(timestamp); + + // 提取年份、月份、日期等信息 + var year = dateObj.getFullYear(); + var month = (dateObj.getMonth() + 1).toString().padStart(2, '0'); // 注意月份从0开始计数,所以需要加1 + var day = dateObj.getDate().toString().padStart(2, '0'); + var hour = dateObj.getHours().toString().padStart(2, '0'); + var minutes = dateObj.getMinutes().toString().padStart(2, '0'); + var seconds = dateObj.getSeconds().toString().padStart(2, '0'); + + return `${year}-${month}-${day} ${hour}:${minutes}:${seconds}` + } +} diff --git a/static/images/icon1.png b/static/images/icon1.png new file mode 100644 index 0000000000000000000000000000000000000000..a2ffd475ce9aef9187e7a645a22b981b2a3d8d7e GIT binary patch literal 22900 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 literal 0 HcmV?d00001 diff --git a/store/modules/user.js b/store/modules/user.js index 7d03c1a..c105cd8 100644 --- a/store/modules/user.js +++ b/store/modules/user.js @@ -1,98 +1,160 @@ import config from '@/config' import storage from '@/utils/storage' import constant from '@/utils/constant' -import { login, logout, getInfo } from '@/api/login' -import { setToken, removeToken } from '@/utils/auth' +import { + login, + logout, + getInfo, + getPermissionInfo +} from '@/api/login' +import { + setToken, + removeToken +} from '@/utils/auth' const baseUrl = config.baseUrl const user = { - state: { - id: 0, // 用户编号 - name: storage.get(constant.name), - avatar: storage.get(constant.avatar), - roles: storage.get(constant.roles), - permissions: storage.get(constant.permissions) - }, + state: { + id: 0, // 用户编号 + name: storage.get(constant.name), + avatar: storage.get(constant.avatar), + roles: storage.get(constant.roles), + permissions: storage.get(constant.permissions), + role:storage.get(constant.role), + post:storage.get(constant.post), + dept:storage.get(constant.dept), + }, - mutations: { - SET_ID: (state, id) => { - state.id = id - }, - SET_NAME: (state, name) => { - state.name = name - storage.set(constant.name, name) - }, - SET_AVATAR: (state, avatar) => { - state.avatar = avatar - storage.set(constant.avatar, avatar) - }, - SET_ROLES: (state, roles) => { - state.roles = roles - storage.set(constant.roles, roles) - }, - SET_PERMISSIONS: (state, permissions) => { - state.permissions = permissions - storage.set(constant.permissions, permissions) - } - }, + mutations: { + SET_ID: (state, id) => { + state.id = id + }, + SET_NAME: (state, name) => { + state.name = name + storage.set(constant.name, name) + }, + SET_AVATAR: (state, avatar) => { + state.avatar = avatar + storage.set(constant.avatar, avatar) + }, + SET_ROLES: (state, roles) => { + state.roles = roles + storage.set(constant.roles, roles) + }, + SET_PERMISSIONS: (state, permissions) => { + state.permissions = permissions + storage.set(constant.permissions, permissions) + }, + SET_ROLE: (state, role) => { + state.role = role + storage.set(constant.role, role) + }, + SET_DEPT: (state, dept) => { + state.dept = dept + storage.set(constant.dept, dept) + }, + SET_POST: (state, post) => { + state.post = post + storage.set(constant.post, post) + } + }, - actions: { - // 登录 - Login({ commit }, userInfo) { - const username = userInfo.username.trim() - const password = userInfo.password - const captchaVerification = userInfo.captchaVerification - return new Promise((resolve, reject) => { - login(username, password, captchaVerification).then(res => { - res = res.data; - // 设置 token - setToken(res) - resolve() - }).catch(error => { - reject(error) - }) - }) - }, + actions: { + // 登录 + Login({ + commit + }, 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() + }).catch(error => { + reject(error) + }) + }) + }, - // 获取用户信息 - GetInfo({ commit, state }) { - return new Promise((resolve, reject) => { - getInfo().then(res => { - res = res.data; // 读取 data 数据 - const user = res.user - const avatar = (user == null || user.avatar === "" || user.avatar == null) ? require("@/static/images/profile.jpg") : user.avatar - const nickname = (user == null || user.nickname === "" || user.nickname == null) ? "" : user.nickname - if (res.roles && res.roles.length > 0) { - commit('SET_ROLES', res.roles) - commit('SET_PERMISSIONS', res.permissions) - } else { - commit('SET_ROLES', ['ROLE_DEFAULT']) - } - commit('SET_NAME', nickname) - commit('SET_AVATAR', avatar) - resolve(res) - }).catch(error => { - reject(error) - }) - }) - }, - - // 退出系统 - LogOut({ commit, state }) { - return new Promise((resolve, reject) => { - logout(state.token).then(() => { - commit('SET_ROLES', []) - commit('SET_PERMISSIONS', []) - removeToken() - storage.clean() - resolve() - }).catch(error => { - reject(error) - }) - }) - } - } + // 获取权限 + GetPermissionInfo({ + commit, + state + }) { + return new Promise((resolve, reject) => { + getPermissionInfo().then(res => { + res = res.data; // 读取 data 数据 + const user = res.user + const avatar = (user == null || user.avatar === "" || user.avatar == null) ? + require("@/static/images/profile.jpg") : user.avatar + const nickname = (user == null || user.nickname === "" || user.nickname == + null) ? "" : user.nickname + if (res.roles && res.roles.length > 0) { + commit('SET_ROLES', res.roles) + commit('SET_ROLE', res.roles.filter(item => item == 'all_approve' || item == 'normal_approve')[0]) + commit('SET_PERMISSIONS', res.permissions) + } else { + commit('SET_ROLES', ['ROLE_DEFAULT']) + commit('SET_ROLE','') + } + commit('SET_NAME', nickname) + commit('SET_AVATAR', avatar) + resolve(res) + }).catch(error => { + reject(error) + }) + }) + }, +// 获取权限 + GetInfo({ + commit, + state + }) { + return new Promise((resolve, reject) => { + getInfo().then(res => { + res = res.data; // 读取 data 数据 + commit('SET_DEPT', res.dept) + if (res.posts && res.posts.length > 0) { + commit('SET_POST', res.posts.filter(item => item.code == 'worker' || item.code == 'engineer')[0]) + } else { + commit('SET_POST','') + } + resolve(res) + }).catch(error => { + reject(error) + }) + }) + }, + // 退出系统 + LogOut({ + commit, + state + }) { + return new Promise((resolve, reject) => { + logout(state.token).then(() => { + commit('SET_ROLES', []) + commit('SET_PERMISSIONS', []) + commit('SET_POST', '') + commit('SET_CLASSTYPE', '') + commit('SET_ROLE', '') + removeToken() + storage.clean() + resolve() + }).catch(error => { + reject(error) + }) + }) + } + } } -export default user +export default user \ No newline at end of file diff --git a/utils/constant.js b/utils/constant.js index 8becd84..7b877d4 100644 --- a/utils/constant.js +++ b/utils/constant.js @@ -2,7 +2,9 @@ const constant = { avatar: 'vuex_avatar', name: 'vuex_name', roles: 'vuex_roles', - permissions: 'vuex_permissions' + permissions: 'vuex_permissions', + role: 'vuex_role', + dept: 'vuex_dept', + post: 'vuex_post', } - export default constant diff --git a/utils/storage.js b/utils/storage.js index dd5c38b..6965cfb 100644 --- a/utils/storage.js +++ b/utils/storage.js @@ -4,7 +4,7 @@ import constant from './constant' let storageKey = 'storage_data' // 存储节点变量名 -let storageNodeKeys = [constant.avatar, constant.name, constant.roles, constant.permissions] +let storageNodeKeys = [constant.avatar, constant.name, constant.roles, constant.permissions, constant.role, constant.dept,constant.post] // 存储的数据 let storageData = uni.getStorageSync(storageKey) || {}