diff --git a/package.json b/package.json index 2bb4d76..776823d 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,7 @@ "dependencies": { "@stomp/stompjs": "^7.0.0", "axios": "^1.3.3", - "crypto-js": "4.2.0", + "crypto-js": "^4.2.0", "echarts": "^5.4.1", "element-plus": "2.3.1", "js-cookie": "^3.0.5", diff --git a/src/router/index.ts b/src/router/index.ts index 2ae2c50..e777a56 100644 --- a/src/router/index.ts +++ b/src/router/index.ts @@ -1,82 +1,100 @@ -import { createRouter, createWebHistory } from 'vue-router' -import { useLoginStore } from '@/stores/user-info-store' -import { ElMessage, ElMessageBox } from 'element-plus' -import { constantRoute } from './routes' +import {createRouter, createWebHistory} from 'vue-router' +import {useLoginStore} from '@/stores/user-info-store' +import {ElMessage} from 'element-plus' +import {constantRoute} from './routes' +import {decrypt, decryption, encrypt, encryption, isBase64} from "@/utils/other"; const router = createRouter({ - history: createWebHistory(import.meta.env.BASE_URL), - routes: constantRoute, + history: createWebHistory(import.meta.env.BASE_URL), + routes: constantRoute, + stringifyQuery: stringifyQuery, + parseQuery: parseQuery, }) +const kk = "raxipnenttlewe"; + router.beforeEach((to, from, next) => { - const loginInfo = useLoginStore().getlogin() + const loginInfo = useLoginStore().getlogin() // const isLogin = loginInfo.isLogin - // 普通用户 - const commonUser = [ - '/login', - '/home', - '/patients-manage', - '/patients-manage/patients-manage', - '/patients-manage/surgery-info' - ] - // 中级管理员 - const IntermediateAdmin = [ - '/login', - '/home', - '/patients-manage', - '/patients-manage/patients-manage', - '/patients-manage/surgery-info', - '/remote-manage', - '/remote-manage/remote-manage', - '/remote-manage/remote-control' - ] - // 高级管理员 - const SeniorAdmin = [ - '/login', - '/home', - '/patients-manage', - '/patients-manage/patients-manage', - '/patients-manage/surgery-info', - '/remote-manage', - '/remote-manage/remote-manage', - '/remote-manage/remote-control', - '/permissions-manage', - '/permissions-manage/doctor-manage', - '/permissions-manage/role-manage', - '/permissions-manage/menu-manage', - '/logs-manage', - '/logs-manage/message-manage', - '/logs-manage/logs-manage' - ] - const isViewRoute = () => { - let release = true - /*switch (loginInfo.permissions) { - case '超级管理员': - release = true - break; - case '高级管理员': - release = SeniorAdmin.some((p: string) => p === to.path) - break; - case '中级管理员': - release = IntermediateAdmin.some((p: string) => p === to.path) - break; - case '普通用户': - release = commonUser.some((p: string) => p === to.path) - break; - default: - break; - }*/ - return release - } - if(to.fullPath ==='/login') { - next() - return - } - /*if (!isLogin) next('/login') // 重定向登录页 - else */if(!isViewRoute()) { - ElMessage.error('无权访问!') - next(from.fullPath) - }else next() + // 普通用户 + const commonUser = [ + '/login', + '/home', + '/patients-manage', + '/patients-manage/patients-manage', + '/patients-manage/surgery-info' + ] + // 中级管理员 + const IntermediateAdmin = [ + '/login', + '/home', + '/patients-manage', + '/patients-manage/patients-manage', + '/patients-manage/surgery-info', + '/remote-manage', + '/remote-manage/remote-manage', + '/remote-manage/remote-control' + ] + // 高级管理员 + const SeniorAdmin = [ + '/login', + '/home', + '/patients-manage', + '/patients-manage/patients-manage', + '/patients-manage/surgery-info', + '/remote-manage', + '/remote-manage/remote-manage', + '/remote-manage/remote-control', + '/permissions-manage', + '/permissions-manage/doctor-manage', + '/permissions-manage/role-manage', + '/permissions-manage/menu-manage', + '/logs-manage', + '/logs-manage/message-manage', + '/logs-manage/logs-manage' + ] + const isViewRoute = () => { + let release = true + /*switch (loginInfo.permissions) { + case '超级管理员': + release = true + break; + case '高级管理员': + release = SeniorAdmin.some((p: string) => p === to.path) + break; + case '中级管理员': + release = IntermediateAdmin.some((p: string) => p === to.path) + break; + case '普通用户': + release = commonUser.some((p: string) => p === to.path) + break; + default: + break; + }*/ + return release + } + if (to.fullPath === '/login') { + next() + return + } + /*if (!isLogin) next('/login') // 重定向登录页 + else */ + if (!isViewRoute()) { + ElMessage.error('无权访问!') + next(from.fullPath) + } else next() }); +function stringifyQuery(query: any) { + return btoa(encrypt(JSON.stringify(query), kk)); +} + +function parseQuery(query: any) { + if (isBase64(query)) { + return JSON.parse(decrypt(atob(query), kk)); + } else { + return query; + } +} + export default router diff --git a/src/utils/other.ts b/src/utils/other.ts index 2022a28..0f48724 100644 --- a/src/utils/other.ts +++ b/src/utils/other.ts @@ -5,29 +5,47 @@ import * as CryptoJS from 'crypto-js'; *加密处理 */ export function encryption(src: string, keyWord: string) { - const key = CryptoJS.enc.Utf8.parse(keyWord); - // 加密 - let encrypted = CryptoJS.AES.encrypt(src, key, { - iv: key, - mode: CryptoJS.mode.CBC, - padding: CryptoJS.pad.Pkcs7, - }); - return encrypted.toString(); + const key = CryptoJS.enc.Utf8.parse(keyWord); + // 加密 + const encrypted = CryptoJS.AES.encrypt(src, key, { + iv: key, + mode: CryptoJS.mode.CBC, + padding: CryptoJS.pad.Pkcs7, + }); + return encrypted.toString(); } /** * 解密 - * @param {*} params 参数列表 * @returns 明文 + * @param src + * @param keyWord */ export function decryption(src: string, keyWord: string) { - const key = CryptoJS.enc.Utf8.parse(keyWord); - // 解密逻辑 - let decryptd = CryptoJS.AES.decrypt(src, key, { - iv: key, - mode: CryptoJS.mode.CBC, - padding: CryptoJS.pad.Pkcs7, - }); + const key = keyWord; + // 解密逻辑 + const decryptd = CryptoJS.AES.decrypt(src, key, { + iv: key, + mode: CryptoJS.mode.CBC, + padding: CryptoJS.pad.Pkcs7, + }); - return decryptd.toString(CryptoJS.enc.Utf8); + return decryptd.toString(CryptoJS.enc.Utf8); +} + +export function encrypt(src: string, key: string) { + return CryptoJS.AES.encrypt(src, key).toString() +} + +export function decrypt(src: string, key: string) { + return CryptoJS.AES.decrypt(src, key).toString(CryptoJS.enc.Utf8) +} + +export function isBase64(s: string) { + if (s == "" || s.trim() == "") return false; + try { + return window.btoa(window.atob(s)) == s; + } catch (e) { + return false; + } } \ No newline at end of file diff --git a/src/views/remote-manage/part/remote-part.vue b/src/views/remote-manage/part/remote-part.vue index 014e5d0..f0201fd 100644 --- a/src/views/remote-manage/part/remote-part.vue +++ b/src/views/remote-manage/part/remote-part.vue @@ -1,119 +1,119 @@ diff --git a/src/views/remote-manage/remote-control.vue b/src/views/remote-manage/remote-control.vue index d02b8ae..a64a745 100644 --- a/src/views/remote-manage/remote-control.vue +++ b/src/views/remote-manage/remote-control.vue @@ -481,7 +481,7 @@ const viewPatientInfo = () => { }, 0) } const backRemote = () => { - router.back() + router.back(); } const playPause = () => { if (liveVideo.value.paused) { diff --git a/src/views/remote-manage/remote-manage.vue b/src/views/remote-manage/remote-manage.vue index 8adaabe..c3dbc20 100644 --- a/src/views/remote-manage/remote-manage.vue +++ b/src/views/remote-manage/remote-manage.vue @@ -46,11 +46,14 @@ onMounted(() => { function initRemoteTask() { remoteTask.value = remoteWsStore.initRemoteTask() + remotePartRef.value.showData(remoteWsStore.currentTaskIndex); } const viewThumbnail = () => { router.push({ - path: '/remote-manage/remote-thumbnail' + path: '/remote-manage/remote-thumbnail', + query: { + } }) } // 打开任务连接弹窗 diff --git a/src/views/remote-manage/remote-thumbnail.vue b/src/views/remote-manage/remote-thumbnail.vue index ea93345..29c0db8 100644 --- a/src/views/remote-manage/remote-thumbnail.vue +++ b/src/views/remote-manage/remote-thumbnail.vue @@ -39,12 +39,11 @@ const remoteTask = ref([] as any); const remoteWsStore = useRemoteWsStore(); onMounted(() => { - console.log("remoteThumbnail", remoteWsStore.remoteTasks) remoteTask.value = remoteWsStore.remoteTasks; }) const openRemote = (params: any) => { - router.push('/remote-manage/remote-manage') + router.push('/remote-manage/remote-manage'); } const addLogAfter = (index: number) => { messageItemPartRef.value[index].scrollToBottom()