From 6580deff14f23b8051edf26db58a3b9425ed5b77 Mon Sep 17 00:00:00 2001 From: he wei <858544502@qq.com> Date: 星期四, 24 四月 2025 18:47:10 +0800 Subject: [PATCH] U 权限 --- /dev/null | 0 src/views/system/user/index.vue | 32 +++++----- src/views/system/user/baojiMager.vue | 4 src/router/modules/devices.js | 12 ++-- src/views/device/locks/addEdit.vue | 38 +++++++++++- src/views/device/locks/index.vue | 6 + src/router/modules/system.js | 8 +- src/store/user.js | 20 +++++- src/utils/auth.js | 15 ++++- src/assets/images/login-bg.jpg | 0 src/store/permission.js | 3 src/styles/element/blue.scss | 8 +- 12 files changed, 100 insertions(+), 46 deletions(-) diff --git a/src/assets/images/login-bg.jpg b/src/assets/images/login-bg.jpg index c52b64d..2be13da 100644 --- a/src/assets/images/login-bg.jpg +++ b/src/assets/images/login-bg.jpg Binary files differ diff --git a/src/assets/images/login-bg1.png b/src/assets/images/login-bg1.png deleted file mode 100644 index d90d797..0000000 --- a/src/assets/images/login-bg1.png +++ /dev/null Binary files differ diff --git a/src/router/modules/devices.js b/src/router/modules/devices.js index 675d5dd..b782fef 100644 --- a/src/router/modules/devices.js +++ b/src/router/modules/devices.js @@ -28,12 +28,12 @@ name: 'LockManage', meta: { title: '閿佸叿绠$悊', icon: 'lock-hdw', noCache: false } }, - { - path: 'station', - component: () => import('@/views/device/station/index.vue'), - name: 'stationManage', - meta: { title: '鏈烘埧绠$悊', icon: 'lock-hdw', noCache: false } - }, + // { + // path: 'station', + // component: () => import('@/views/device/station/index.vue'), + // name: 'stationManage', + // meta: { title: '鏈烘埧绠$悊', icon: 'lock-hdw', noCache: false } + // }, { path: 'task', component: () => import('@/views/device/locks/task.vue'), diff --git a/src/router/modules/system.js b/src/router/modules/system.js index a4a6edb..e13d262 100644 --- a/src/router/modules/system.js +++ b/src/router/modules/system.js @@ -20,19 +20,19 @@ path: 'power', component: () => import('@/views/system/user/powerMager.vue'), name: 'powerMager', - meta: { title: '鏉冮檺绠$悊', icon: 'people-hdw', noCache: false } + meta: { title: '鏉冮檺绠$悊', icon: 'people-hdw', noCache: false, roles: ['admin', 'manager'] } }, { path: 'baoji', component: () => import('@/views/system/user/baojiMager.vue'), name: 'baojiMager', - meta: { title: '鍖呮満缁勭鐞�', icon: 'people-hdw', noCache: false } + meta: { title: '鍖呮満缁勭鐞�', icon: 'people-hdw', noCache: false, roles: ['admin', 'manager'] } }, { path: 'user', component: () => import('@/views/system/user/index.vue'), name: 'UserManage', - meta: { title: '鐢ㄦ埛绠$悊', icon: 'people-hdw', noCache: false } + meta: { title: '鐢ㄦ埛绠$悊', icon: 'people-hdw', noCache: false, roles: ['admin', 'manager'] } }, { path: 'face', @@ -56,7 +56,7 @@ path: 'mapSettings', component: () => import('@/views/system/mapSettings.vue'), name: 'mapSettings', - meta: { title: '鍦板浘閰嶇疆', icon: 'log-hdw', noCache: false } + meta: { title: '鍦板浘閰嶇疆', icon: 'log-hdw', noCache: false, roles: ['admin', 'manager'] } } ] }; diff --git a/src/store/permission.js b/src/store/permission.js index f7a0c9f..9c11d0d 100644 --- a/src/store/permission.js +++ b/src/store/permission.js @@ -10,7 +10,7 @@ function hasPermission(roles, route) { console.trace('hasPermission'); console.log('hasPermission', roles, route, '============='); - + debugger; if (route.meta && route.meta.roles) { const rolesArr = route.meta.roles; return roles.some(role => rolesArr.includes(role)); @@ -51,6 +51,7 @@ } function generateRoutes(roles) { let accessedRoutes; + debugger; if (roles.includes('admin')) { console.log('1', '============='); diff --git a/src/store/user.js b/src/store/user.js index 92ef5a2..aca73d1 100644 --- a/src/store/user.js +++ b/src/store/user.js @@ -52,8 +52,16 @@ let role = response.data2.urole; uname.value = name; setUname(name); - token.value = 'admin'; - setToken('admin'); + let _token = 'someone'; + debugger; + if (response.data2.uid && response.data2.uid <= 10000) { + _token = 'manager'; + if (response.data2.uid <= 100) { + _token = 'admin'; + } + } + token.value = _token; + setToken(_token); urole.value = role; setUrole(role); resolve(response); @@ -71,15 +79,16 @@ function getInfo() { return new Promise((resolve) => { const data = { - roles: ['admin'], + // roles: ['admin'], + roles: [token.value], introduction: 'I am a super administrator', avatar: 'https://wpimg.wallstcn.com/f778738c-e4f8-4870-b634-56703b4acafe.gif', // name: 'Super Admin' - name: getUname() + name: uname.value }; const { roles: _roles, name, avatar: _avatar, introduction: _introduction } = data; roles.value = _roles; - uname.value = name; + // uname.value = name; avatar.value = _avatar; introduction.value = _introduction; @@ -115,6 +124,7 @@ } async function changeRoles(role) { + debugger; const _token = role + '-token'; token.value = _token; diff --git a/src/styles/element/blue.scss b/src/styles/element/blue.scss index 447d050..9e2ccc1 100644 --- a/src/styles/element/blue.scss +++ b/src/styles/element/blue.scss @@ -181,12 +181,12 @@ color: #fff; } -.el-pagination.el-pagination button { +.el-pagination.el-pagination.el-pagination button { background: transparent; color: #fff; } -.el-pagination.el-pagination button.is-disabled, -.el-pagination.el-pagination button:disabled { +.el-pagination.el-pagination.el-pagination button.is-disabled, +.el-pagination.el-pagination.el-pagination button:disabled { background-color: transparent; color: #fff; cursor: not-allowed; @@ -197,7 +197,7 @@ color: #0ff; } -.el-pager.el-pager li { +.el-pagination .el-pager.el-pager.el-pager li { background: transparent; color: #fff; } diff --git a/src/utils/auth.js b/src/utils/auth.js index e63a2aa..c476f97 100644 --- a/src/utils/auth.js +++ b/src/utils/auth.js @@ -1,13 +1,22 @@ import Cookies from 'js-cookie'; +import formatPassword from '@/utils/formatPassword.js'; +import const_num from '@/utils/const/const_num.js'; +import RSA from '@/utils/RSA.js'; -const TokenKey = 'Admin-Token'; +const TokenKey = 'BAIDU_MAP_SN'; export function getToken() { - return Cookies.get(TokenKey); + const key = const_num.privateKey; + const str = Cookies.get(TokenKey); + if (!str) return ''; + let res = RSA.decrypt(str, key); + // console.log('res', res, '============='); + + return res.split('&&&&&&&&&&')[0]; } export function setToken(token) { - return Cookies.set(TokenKey, token); + return Cookies.set(TokenKey, formatPassword(token)); } export function removeToken() { diff --git a/src/views/device/locks/addEdit.vue b/src/views/device/locks/addEdit.vue index 12910a9..b3af0bf 100644 --- a/src/views/device/locks/addEdit.vue +++ b/src/views/device/locks/addEdit.vue @@ -85,6 +85,25 @@ trigger: ["change", "blur"], }, ], + lockIp: [ + { + required: true, + message: "涓嶈兘涓虹┖", + trigger: ["change", "blur"], + }, + { + validator: (rule, value, callback) => { + let reg = /^((25[0-5]|2[0-4][0-9]|1[0-9]{1,2}|[1-9]|[1-9][0-9]|0)\.){3}(25[0-5]|2[0-4][0-9]|1[0-9]{1,2}|[1-9]|[1-9][0-9]|0)$/; + + if (value && !reg.test(value)) { + callback(new Error("璇疯緭鍏ユ纭殑IP鍦板潃")); + } else { + callback(); + } + }, + trigger: ["change", "blur"], + } + ], // 缁忓害 longitude: [ { @@ -129,7 +148,9 @@ stationName1: stationName1.value, stationName2: stationName2.value, stationName3: stationName3.value, - stationName4: stationName4.value + stationName4: stationName4.value, + lockIp: '127.0.0.1', + stationId: '', }); const layout = { @@ -226,6 +247,7 @@ stationName2: formLock.stationName2, stationName3: formLock.stationName3, stationName4: formLock.stationName4, + lockIp: formLock.lockIp, longitude: formLock.longitude || 0, latitude: formLock.latitude || 0, }; @@ -268,8 +290,10 @@ stationName2: formLock.stationName2, stationName3: formLock.stationName3, stationName4: formLock.stationName4, + lockIp: formLock.lockIp, longitude: formLock.longitude || 0, latitude: formLock.latitude || 0, + stationId: formLock.stationId }; let loading = $loading(); updateLock(params) @@ -417,6 +441,14 @@ </el-row> <el-row :gutter="layout.gutter"> <el-col :span="24"> + <!-- Ip --> + <el-form-item label="鏈烘埧Ip" label-position="right" prop="lockIp"> + <el-input v-model="formLock.lockIp" /> + </el-form-item> + </el-col> + </el-row> + <el-row :gutter="layout.gutter"> + <el-col :span="24"> <!-- 鍦板潃 --> <el-form-item label="鍦板潃" label-position="right" prop="lockAddress"> <el-input v-model="formLock.lockAddress" /> @@ -446,7 +478,7 @@ <el-col :span="24"> <!-- 閿佸叿瀹夎浣嶇疆 绫诲瀷 --> <el-form-item - label="閿佸叿瀹夎浣嶇疆绫诲瀷" + label="灞忔煖绫诲瀷" label-position="right" prop="screenBoxType" > @@ -471,7 +503,7 @@ <el-col :span="24"> <!-- 閿佸叿瀹夎浣嶇疆 鍝佺墝 --> <el-form-item - label="閿佸叿瀹夎浣嶇疆鍝佺墝" + label="灞忔煖鍝佺墝" label-position="right" prop="screenBoxProduct" > diff --git a/src/views/device/locks/index.vue b/src/views/device/locks/index.vue index 0f686bb..77047e5 100644 --- a/src/views/device/locks/index.vue +++ b/src/views/device/locks/index.vue @@ -102,7 +102,7 @@ // v.type = { 1: '钃濈墮閿�', 2: 'ID閿�', 3: '瀹炰綋閿�' }[v.lockType]; v.modelStr = v.model == 1 ? '鍦ㄧ嚎妯″紡' : '绂荤嚎妯″紡'; v.blStateStr = v.blState == 0 ? '钃濈墮鍏抽棴' : '钃濈墮寮�鍚�'; - v.ID = v.lockId % 10000000; + v.ID = v.lockId % 1000; return v; }); _total = total; @@ -322,8 +322,10 @@ <el-table-column type="index" fixed="left" width="50" /> <el-table-column prop="type" label="绫诲瀷" width="180" /> <el-table-column prop="lockName" label="閿佸叿鍚嶇О" width="180" /> - <el-table-column prop="ID" label="閿両D" width="120" /> + <el-table-column prop="lockId" label="閿両D" width="120" /> + <el-table-column prop="ID" label="閿佸叿鍦板潃" width="120" /> <el-table-column prop="stationName" label="鏈烘埧" min-width="180" /> + <el-table-column prop="lockIp" label="鏈烘埧Ip" min-width="180" /> <el-table-column prop="modelStr" label="鎺у埗妯″紡" width="180" /> <el-table-column prop="onlineState" label="鍦ㄧ嚎鐘舵��" width="180" /> <!-- <el-table-column prop="state" label="瀹夎鐘舵��" width="180" /> --> diff --git a/src/views/system/user/baojiMager.vue b/src/views/system/user/baojiMager.vue index d48bdfd..3ab56f0 100644 --- a/src/views/system/user/baojiMager.vue +++ b/src/views/system/user/baojiMager.vue @@ -49,7 +49,7 @@ <el-tabs v-model="activeName" type="border-card" class="flex-layout "> <el-tab-pane label="鍖呮満缁勭敤鎴�" name="baoji-group-user"> <template #label> - <span><i class="el-icon-user-solid"></i> 鍖呮満缁勭敤鎴�</span> + <span><i class="el-icon-user-solid"></i> 绠$悊鐨勭敤鎴�</span> </template> <el-transfer v-model="user.value" @@ -64,7 +64,7 @@ </el-tab-pane> <el-tab-pane label="鍖呮満鏈烘埧" name="baoji-home"> <template #label - ><span><i class="el-icon-s-home"></i> 鍖呮満鏈烘埧</span></template + ><span><i class="el-icon-s-home"></i> 绠$悊鐨勯攣鍏�</span></template > <el-transfer v-model="baoji.value" diff --git a/src/views/system/user/index.vue b/src/views/system/user/index.vue index 4c312ce..589cfd0 100644 --- a/src/views/system/user/index.vue +++ b/src/views/system/user/index.vue @@ -8,7 +8,7 @@ import useElement from "@/hooks/useElement.js"; import { useUserStore } from '@/store/user'; const userStore = useUserStore(); - const { uname } = storeToRefs(userStore); + const { uid, uname } = storeToRefs(userStore); import { getAllUser, @@ -236,21 +236,21 @@ @click="resetSnIdfn(scope.row)">閲嶇疆瀵嗙爜</el-button> <el-button type="danger" size="small" :disabled="scope.row.uname == uname" @click="confirmRemove(scope.row)">鍒犻櫎</el-button> - <!-- <el-button - type="success" - v-if="scope.row.uid > 1000" - size="small" - @click="improveRolefn(scope.row)" - >鍔犲叆绠$悊鍛樼粍</el-button - > - <el-button - type="danger" - v-else - :disabled="scope.row.uid == uid" - size="small" - @click="dropRolefn(scope.row)" - >绉诲嚭绠$悊鍛樼粍</el-button - > --> + <el-button + type="success" + v-if="scope.row.uid > 10000" + size="small" + @click="improveRolefn(scope.row)" + >鍔犲叆绠$悊鍛樼粍</el-button + > + <el-button + type="danger" + v-else + :disabled="scope.row.uid == uid" + size="small" + @click="dropRolefn(scope.row)" + >绉诲嚭绠$悊鍛樼粍</el-button + > </template> </el-table-column> </el-table> -- Gitblit v1.9.1