From 278e91c262462aa96f615192d98a99eeef50e1c8 Mon Sep 17 00:00:00 2001 From: zk Date: Mon, 23 Sep 2024 16:43:57 +0800 Subject: [PATCH] update --- .env.test | 4 + src/api/request.ts | 2 + src/api/user.ts | 9 + src/assets/img/empty-img.png | Bin 0 -> 22295 bytes src/assets/mapUtils/commonFun.ts | 8 +- src/assets/mapUtils/map.ts | 4 +- src/components/body-d-left/bodyLeftHooks.ts | 17 ++ src/components/chinaMap/chinaHooks.ts | 1 + src/enum/pageEnum.ts | 12 +- src/router/index.ts | 13 +- src/store/modules/user.ts | 8 + src/utils/socket.ts | 14 +- src/utils/utils.ts | 15 ++ src/views/centralScreen/centralScreen.api.ts | 21 ++- src/views/centralScreen/centralScreen.vue | 173 +++++++++++++++++- .../centralScreen/components/centerMap.vue | 14 +- .../components/centerMapHooks.ts | 13 +- .../components/dailyWorkTrends.vue | 26 ++- .../components/employeeHealth.vue | 6 +- .../centralScreen/components/phoneDialog.vue | 3 + .../components/physicalExaminationData.vue | 17 +- .../components/serviceDetails.vue | 5 +- .../components/terminalAlarm.vue | 7 +- ...larmDialog.vue => terminalAlarmDialog.vue} | 4 + src/views/sys/login.vue | 23 ++- src/views/yinChuan/yinChuan.vue | 2 - 26 files changed, 376 insertions(+), 45 deletions(-) create mode 100644 src/assets/img/empty-img.png rename src/views/centralScreen/components/{terminakAlarmDialog.vue => terminalAlarmDialog.vue} (94%) diff --git a/.env.test b/.env.test index 4267570..11f16b8 100644 --- a/.env.test +++ b/.env.test @@ -6,3 +6,7 @@ VITE_GLOB_API_URL=http://cqyt.test.yg.dt.io VITE_GLOB_API_YIN_JI=ws://cqyt.test.yg.dt.io/health-emergency/websocket/watchMonitor #健康监测工具报警-websocket VITE_GLOB_API_JIAN_CE=ws://cqyt.test.yg.dt.io/health-emergency/websocket/emergency +#西安云坐席 +VITE_GLOB_API_XIAN_YUN=ws://cqyt.test.yg.dt.io/health-emergency/websocket/emergency3 +#银川云坐席 +VITE_GLOB_API_YIN_CHUAN=ws://cqyt.test.yg.dt.io/health-emergency/websocket/emergency4 \ No newline at end of file diff --git a/src/api/request.ts b/src/api/request.ts index 1979e72..a074cde 100644 --- a/src/api/request.ts +++ b/src/api/request.ts @@ -31,8 +31,10 @@ service.interceptors.response.use( }, (error) => { if (error.response) { + console.log('response', error.response); switch (error.response.data.code) { case 401: + // debugger; let path = getBaseLogin(); if (!path) { path = toLoginByNowPath(router.currentRoute.value.path); diff --git a/src/api/user.ts b/src/api/user.ts index 725dc2e..33e0f5f 100644 --- a/src/api/user.ts +++ b/src/api/user.ts @@ -6,6 +6,7 @@ enum Api { Logout = '/sys/logout', GetUserInfo = '/sys/user/getUserInfo', auth = '/sys/permission/getPermCode', + emergencyCenter = '/health-emergency/emergency/center/getCenterDetail', } export const getCodeInfo = (params: any) => get(Api.getInputCode + `/${params}`); @@ -14,6 +15,14 @@ export function loginApi(params: any) { return post(Api.Login, params); } +/** + * @description 获取登录人应急中心数据 + * @param params + */ +export function getEmergencyCenterApi(params?: any) { + return get(Api.emergencyCenter, params); +} + /** * @description: getUserInfo */ diff --git a/src/assets/img/empty-img.png b/src/assets/img/empty-img.png new file mode 100644 index 0000000000000000000000000000000000000000..f238a9444d3dc47ebf11c667a096ce2f066b369d GIT binary patch literal 22295 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

=>{WL;zdRLtBN@|^VklbL*e9JezE4k&Go zeg<_Kb-TNVD9nh>VYCfPSjZbze<=Jr6O&>Cg6%r@&+S13-JvYtJctc8BZmvMr0rwj+gS$sWetbfM?i&

H*R392`pqFDg(UsXG(RrK}a=e@)RtoOOljI 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 literal 0 HcmV?d00001 diff --git a/src/assets/mapUtils/commonFun.ts b/src/assets/mapUtils/commonFun.ts index c814711..2177592 100644 --- a/src/assets/mapUtils/commonFun.ts +++ b/src/assets/mapUtils/commonFun.ts @@ -1,4 +1,4 @@ -import { mapIcon1, mapIcon2, mapIcon3, mapIcon4 } from '/@/components/chinaMap/chinaHooks.ts'; +import { mapIcon1, mapIcon2, mapIcon3, mapIcon4, mapIcon7 } from '/@/components/chinaMap/chinaHooks.ts'; import { watchIcon } from '/@/components/secondaryScreen/secondMap/secondMapHooks.ts'; import * as turf from '@turf/turf'; @@ -20,7 +20,7 @@ export function createIcon({ icon, iconSize, imageSize }) { * @desc 根据类型创建Icon * @type 1:油田医院,2:合作医院,3:医疗点 */ -export function typeToIcon(type: string) { +export function typeToIcon(type: string, centerResource: boolean) { const iconSize = [18, 44]; const imageSize = [18, 44]; if (type == '1') { @@ -29,6 +29,10 @@ export function typeToIcon(type: string) { if (type == '2') { return createIcon({ icon: mapIcon4, iconSize, imageSize }); } + //关联医疗点 + if (type == '3' && centerResource) { + return createIcon({ icon: mapIcon7, iconSize, imageSize }); + } if (type == '3') { return createIcon({ icon: mapIcon2, iconSize, imageSize }); } diff --git a/src/assets/mapUtils/map.ts b/src/assets/mapUtils/map.ts index 67a54e9..efbdf91 100644 --- a/src/assets/mapUtils/map.ts +++ b/src/assets/mapUtils/map.ts @@ -144,7 +144,7 @@ export const Map = { this.setZoomCenter(center, zoom); } for (let i = 0; i < result.length; i++) { - let { type, lon, lat, lng } = result[i]; + let { type, lon, lat, lng, centerResource } = result[i]; if (lng) { lon = lng; } @@ -152,7 +152,7 @@ export const Map = { continue; } // 创建一个 Icon - let startIcon = typeToIcon(type); + let startIcon = typeToIcon(type, centerResource); // 将 icon 传入 marker let startMarker = new AMap.Marker({ // 点的坐标 diff --git a/src/components/body-d-left/bodyLeftHooks.ts b/src/components/body-d-left/bodyLeftHooks.ts index 1444c2c..796f807 100644 --- a/src/components/body-d-left/bodyLeftHooks.ts +++ b/src/components/body-d-left/bodyLeftHooks.ts @@ -1,5 +1,6 @@ import { ref, unref } from 'vue'; import * as echarts from 'echarts'; +import { emptyChart } from '/@/utils/utils.ts'; //服务详情数据弹窗参数 export enum ServerDetailType { @@ -205,8 +206,24 @@ const radarChartsTheme = { * @param countList:数据项 */ export const radarCharts = ({ indicator, countList, theme }) => { + if (!countList?.length) { + return emptyChart(); + } const { radarName, splitLine, axisName, areaStyle, lineStyle, itemStyle } = radarChartsTheme[theme] || radarChartsTheme.dark; return { + noDataLoadingOption: { + text: '暂无数据', + effect: 'whirling', + effectOption: { + period: 3, + radius: 10, + frame: 3, + }, + textStyle: { + color: '#333', + fontSize: 16, + }, + }, grid: { top: '1%', left: '5%', diff --git a/src/components/chinaMap/chinaHooks.ts b/src/components/chinaMap/chinaHooks.ts index acbdd8b..434e819 100644 --- a/src/components/chinaMap/chinaHooks.ts +++ b/src/components/chinaMap/chinaHooks.ts @@ -120,6 +120,7 @@ export const mapIcon3 = new URL('/@/assets/img/mapIcon3.png', import.meta.url).h export const mapIcon4 = new URL('/@/assets/img/mapIcon4.png', import.meta.url).href; export const mapIcon5 = new URL('/@/assets/img/mapIcon5.png', import.meta.url).href; export const mapIcon6 = new URL('/@/assets/img/mapIcon6.png', import.meta.url).href; +export const mapIcon7 = new URL('/@/assets/img/mapIcon7.png', import.meta.url).href; export const legend1 = new URL('/@/assets/img/legend1.png', import.meta.url).href; export const legend2 = new URL('/@/assets/img/legend2.png', import.meta.url).href; diff --git a/src/enum/pageEnum.ts b/src/enum/pageEnum.ts index afaad1b..75c099c 100644 --- a/src/enum/pageEnum.ts +++ b/src/enum/pageEnum.ts @@ -4,7 +4,10 @@ export enum PageEnum { BASE_LOGIN = '/login', BASE_HOME = '/home', BASE_LOGIN_YINCHUAN = '/screenLogin', + // centralScreenLogin + CENTRAL_SCREEN_LOGIN = '/centralScreenLogin', YINCHUAN_HOME = '/yinChuanHome', + CENTRAL_SCREEN = '/centralScreen', } export function setBaseLogin(baseLogin) { @@ -18,12 +21,15 @@ export function getBaseLogin() { //根据当前路径跳转登录页 export function toLoginByNowPath(nowPath: string) { const xianPath = ['/home', '/secondScreen', '/']; - const yinchuanPath = ['/yinChuanHome', '/yinChuanTest']; + //其他应急中心的页面路径 + const centerPath = ['/centralScreen', '/centralScreenLogin']; if (xianPath.includes(nowPath)) { return PageEnum.BASE_LOGIN; } else if (yinchuanPath.includes(nowPath)) { return PageEnum.BASE_LOGIN_YINCHUAN; + } else if (centerPath.includes(nowPath)) { + return PageEnum.CENTRAL_SCREEN_LOGIN; } } @@ -33,10 +39,14 @@ export function toHomeByLogoutPath(nowPath: string) { const xianPath = ['/home', '/secondScreen', '/']; //银川的页面路径 const yinchuanPath = ['/yinChuanHome', '/yinChuanTest']; + //其他应急中心的页面路径 + const centerPath = ['/centralScreen']; if (xianPath.includes(nowPath)) { return PageEnum.BASE_HOME; } else if (yinchuanPath.includes(nowPath)) { return PageEnum.YINCHUAN_HOME; + } else if (centerPath.includes(nowPath)) { + return PageEnum.YINCHUAN_HOME; } } diff --git a/src/router/index.ts b/src/router/index.ts index 031a558..2b28da8 100644 --- a/src/router/index.ts +++ b/src/router/index.ts @@ -12,6 +12,7 @@ const routes: Array = [ path: '/login', name: 'login', meta: { + //西安大屏登录 title: '登录', }, component: () => import('/@/views/sys/login.vue'), @@ -20,6 +21,16 @@ const routes: Array = [ path: '/screenLogin', name: 'screenLogin', meta: { + //银川大屏登录 + title: '登录', + }, + component: () => import('/@/views/sys/login.vue'), + }, + { + path: '/centralScreenLogin', + name: 'centralScreenLogin', + meta: { + //分中心大屏登录 title: '登录', }, component: () => import('/@/views/sys/login.vue'), @@ -68,7 +79,7 @@ const routes: Array = [ path: '/centralScreen', name: 'centralScreen', meta: { - title: '应急大屏', + title: '应急中心', }, component: () => import('/@/views/centralScreen/centralScreen.vue'), }, diff --git a/src/store/modules/user.ts b/src/store/modules/user.ts index 1c6ef0c..22f923e 100644 --- a/src/store/modules/user.ts +++ b/src/store/modules/user.ts @@ -20,6 +20,7 @@ export const useUserStore = defineStore({ flag1: '', //银川权限标识 flag2: '', //西安权限标识 centerId: '', //中心点id + centerInfo: null, //应急中心信息 }), getters: { getUserInfo(): UserInfo { @@ -43,6 +44,9 @@ export const useUserStore = defineStore({ getCenterId(): string { return this.centerId || getAuthCache('centerId'); }, + getCenterInfo(): any { + return this.centerInfo || getAuthCache('centerInfo'); + }, }, actions: { setToken(info: string | undefined) { @@ -72,6 +76,10 @@ export const useUserStore = defineStore({ this.centerId = info ? info : ''; setAuthCache('centerId', info); }, + setCenterInfo(info: any) { + this.centerInfo = info; + setAuthCache('centerInfo', info); + }, /** * 登录事件 */ diff --git a/src/utils/socket.ts b/src/utils/socket.ts index e1bf862..b0fb26c 100644 --- a/src/utils/socket.ts +++ b/src/utils/socket.ts @@ -19,7 +19,12 @@ export const xianYunPath = VITE_GLOB_API_XIAN_YUN; export const yinChuanPath = VITE_GLOB_API_YIN_CHUAN; let t = token || getAuthCache(TOKEN_KEY); -export function useSocket(p = basicPath) { +/** + * + * @param p websocket地址 + * @param hasTimestamp 是否需要时间戳 + */ +export function useSocket(p = basicPath, hasTimestamp: boolean = true) { const socket = ref(); let socketData = ref({}); let lockReconnect = ref(false); //避免ws重复连接 @@ -75,7 +80,12 @@ export function useSocket(p = basicPath) { } else { closeSocket(); // 实例化socket - socket.value = new WebSocket(path.value + Date.now(), [t]); + //判断是否需要时间戳 + if (hasTimestamp) { + socket.value = new WebSocket(path.value + Date.now(), [t]); + } else { + socket.value = new WebSocket(path.value, [t]); + } socket.value.onclose = function () { reconnect(path.value); diff --git a/src/utils/utils.ts b/src/utils/utils.ts index a650b90..266bf8a 100644 --- a/src/utils/utils.ts +++ b/src/utils/utils.ts @@ -53,3 +53,18 @@ export function visibleChartLabel(chartData) { } return data; } + +export function emptyChart() { + return { + title: { + text: '暂无数据', + x: 'center', + y: 'center', + textStyle: { + color: '#fff', + fontWeight: 'normal', + fontSize: 14, + }, + }, + }; +} diff --git a/src/views/centralScreen/centralScreen.api.ts b/src/views/centralScreen/centralScreen.api.ts index e1cad02..3f3dac2 100644 --- a/src/views/centralScreen/centralScreen.api.ts +++ b/src/views/centralScreen/centralScreen.api.ts @@ -2,7 +2,7 @@ import { get, post } from '/@/api/request.ts'; enum Api { server = '/health-emergency/emergency/tblUserHelp/statistics', - getDetail = '/health-medical/medical/hospital/getMedicalHospital', + getDetail = '/health-medical/medical/hospital/getMedicalHospitalNew', getMonitorList = '/health-watch/watch/watchMonitorData/getMonitorList', statisticsNew = '/health-emergency/emergency/LargeScreenNew/statisticsNew', phoneListNew = '/health-emergency/emergency/LargeScreenNew/phoneListNew', @@ -27,20 +27,31 @@ export const medicalCenterNew = (params: any) => post(Api.medicalCenterNew, para * @param params */ -export const userHealthCenterNew = (params: any) => get(Api.userHealthCenterNew, params); +export const userHealthCenterNew = (params: any) => { + return post(Api.userHealthCenterNew, params); +}; /** * @description 获取体检数据 * @param params */ -export const getPhysicalData = (params: any) => get(Api.getDetail, params); +export const getPhysicalData = (params: any) => { + let { centerId, ...other } = params; + return post(Api.getDetail, other); +}; /** * @description 呼入电话、受理电话 * @param params */ export const getPhoneList = (params: any) => post(Api.phoneListNew, params); -//健康终端报警 -export const getMonitorList = (params: any) => get(Api.getMonitorList, params); +/** + * @description 健康终端报警 + * @param params + */ +export const getMonitorList = (params: any) => { + let { orgCodeList, ...otherParams } = params; + return get(Api.getMonitorList + '?orgCodeList=' + orgCodeList, otherParams); +}; /** * @description 获取地图所有资源 diff --git a/src/views/centralScreen/centralScreen.vue b/src/views/centralScreen/centralScreen.vue index e2cfa18..722d984 100644 --- a/src/views/centralScreen/centralScreen.vue +++ b/src/views/centralScreen/centralScreen.vue @@ -42,15 +42,19 @@ -

+
+ + + + - + diff --git a/src/views/centralScreen/components/employeeHealth.vue b/src/views/centralScreen/components/employeeHealth.vue index 8e1f6c9..9ed7b44 100644 --- a/src/views/centralScreen/components/employeeHealth.vue +++ b/src/views/centralScreen/components/employeeHealth.vue @@ -18,6 +18,7 @@ import PublicTitle from '/@/components/publicTitle.vue'; import { caching, useSession } from '/@/hooks/autoRefresh/caching.ts'; import { userHealthCenterNew } from '/@/views/centralScreen/centralScreen.api.ts'; + import { useUserStore } from '/@/store/modules/user.ts'; const props = defineProps({ setting: Object, @@ -66,9 +67,12 @@ }); } + const userStore = useUserStore(); + async function viewDetail() { try { - const { code, result } = await userHealthCenterNew({ dataType: props.setting?.dataType }); + let centerId = userStore.getCenterInfo?.id; + const { code, result } = await userHealthCenterNew({ dataType: props.setting?.dataType, centerId }); if (code != 200) { return; } diff --git a/src/views/centralScreen/components/phoneDialog.vue b/src/views/centralScreen/components/phoneDialog.vue index cef5c04..dc7daca 100644 --- a/src/views/centralScreen/components/phoneDialog.vue +++ b/src/views/centralScreen/components/phoneDialog.vue @@ -29,6 +29,7 @@ import { SexType, sexTypeList } from '/@/utils/settings.ts'; import { getPhoneList } from '/@/views/centralScreen/centralScreen.api.ts'; import { useTheme } from '/@/hooks/theme/useTheme.ts'; + import { useUserStore } from '/@/store/modules/user.ts'; const props = defineProps({ record: Object, @@ -89,12 +90,14 @@ const formRecord = ref({ sex: SexType.all, }); + const userStore = useUserStore(); const formState = computed(() => ({ ...formRecord.value, centerId: '', dataType: props.setting.dataType, phoneType: props.phoneType, showType: '0', + centerId: userStore.getCenterInfo?.id, })); const dialogTitle = ref(); const { visible, closeDialog, openDialog } = useDialog({ title: dialogTitle.value }); diff --git a/src/views/centralScreen/components/physicalExaminationData.vue b/src/views/centralScreen/components/physicalExaminationData.vue index b7b23e3..433707c 100644 --- a/src/views/centralScreen/components/physicalExaminationData.vue +++ b/src/views/centralScreen/components/physicalExaminationData.vue @@ -26,6 +26,7 @@ import * as echarts from 'echarts'; import { useTheme } from '/@/hooks/theme/useTheme.ts'; import { getPhysicalData } from '/@/views/centralScreen/centralScreen.api.ts'; + import { useUserStore } from '/@/store/modules/user.ts'; const props = defineProps({ refreshState: { @@ -54,11 +55,15 @@ }); const { radarList, setRadarList, getRadarList } = useHospitalList(); + const userStore = useUserStore(); async function getList() { setSpin(true); try { - const { code, result } = (await getPhysicalData({ dataType: props.setting.dataType, condition: selectVal.value })) || {}; + let orgCodeList = userStore.getCenterInfo?.serviceScope || ''; + let centerId = userStore.getCenterInfo?.id || ''; + const { code, result } = + (await getPhysicalData({ dataType: props.setting.dataType, condition: selectVal.value, orgCodeList, centerId })) || {}; setSpin(!spinning.value); if (code != 200) { return; @@ -75,19 +80,21 @@ function setValue(result) { setRadarList(result); const everyEmpty = allValueEmpty('value', getRadarList()); - everyEmpty && initChart(); + // everyEmpty && initChart(); + initChart(); } const radarChartsRef = ref(); function initChart() { const myChart = echarts.init(radarChartsRef.value); - let countList = radarList?.value.map((item) => item?.userCount); - if (countList.length < 1) return; + let countList = radarList?.value?.map((item) => item?.userCount) || []; + // if (countList?.length < 1) return; let max = Math.max(...countList); - const indicator = radarList?.value.map((item) => ({ name: item?.hospitalName, max: max })); + const indicator = radarList?.value?.map((item) => ({ name: item?.hospitalName, max: max })); const option = radarCharts({ indicator, countList, theme: unref(themeType) }); myChart.setOption(option); + myChart.showLoading('noData'); window.addEventListener('resize', () => { myChart.resize(); }); diff --git a/src/views/centralScreen/components/serviceDetails.vue b/src/views/centralScreen/components/serviceDetails.vue index 998f4ec..69335c1 100644 --- a/src/views/centralScreen/components/serviceDetails.vue +++ b/src/views/centralScreen/components/serviceDetails.vue @@ -35,6 +35,7 @@ import { useSession, caching } from '/@/hooks/autoRefresh/caching.ts'; import { useTheme } from '/@/hooks/theme/useTheme.ts'; import { statisticsNewApi } from '/@/views/centralScreen/centralScreen.api.ts'; + import { useUserStore } from '/@/store/modules/user.ts'; const { themeType } = useTheme(); const { SERVER_DETAIL } = caching; @@ -62,11 +63,13 @@ const useDetail = useDetailStore(); const { setSession, getSession } = useSession(); + const userStore = useUserStore(); async function getList() { setSpin(true); try { - const { code, result } = (await statisticsNewApi({ condition: selectVal.value, centerId: '' })) || {}; + let centerId = userStore.getCenterInfo?.id; + const { code, result } = (await statisticsNewApi({ condition: selectVal.value, centerId })) || {}; setSpin(false); if (code != 200 || !result) { return; diff --git a/src/views/centralScreen/components/terminalAlarm.vue b/src/views/centralScreen/components/terminalAlarm.vue index 55816f9..8fb3359 100644 --- a/src/views/centralScreen/components/terminalAlarm.vue +++ b/src/views/centralScreen/components/terminalAlarm.vue @@ -47,7 +47,7 @@
发生地点:
-
{{ userInfo?.address }}
+
{{ userInfo?.address }}
{{ userInfo?.gpsErrorMsg }}
@@ -67,6 +67,7 @@ import { DataType } from '/@/utils/settings.ts'; import { useTheme } from '/@/hooks/theme/useTheme.ts'; import { message } from 'ant-design-vue'; + import { useUserStore } from '/@/store/modules/user.ts'; const props = defineProps({ setting: Object, @@ -115,10 +116,12 @@ * @desc 终端报警 * */ const scrollList = ref([]); + const userStore = useUserStore(); async function getScrollList() { try { - const { code, result } = await getMonitorList({ pageSize: 10, pageNo: 1, orgCode: props.setting?.orgCode }); + let orgCodeList = userStore.getCenterInfo?.serviceScope; + const { code, result } = await getMonitorList({ pageSize: 10, pageNo: 1, orgCode: props.setting?.orgCode, orgCodeList }); if (code == 200) { setSession(RIGHT_KEY1_NEW, JSON.stringify(result.records)); scrollList.value = result.records; diff --git a/src/views/centralScreen/components/terminakAlarmDialog.vue b/src/views/centralScreen/components/terminalAlarmDialog.vue similarity index 94% rename from src/views/centralScreen/components/terminakAlarmDialog.vue rename to src/views/centralScreen/components/terminalAlarmDialog.vue index 69cdae1..b74cd31 100644 --- a/src/views/centralScreen/components/terminakAlarmDialog.vue +++ b/src/views/centralScreen/components/terminalAlarmDialog.vue @@ -16,6 +16,7 @@ import { useDialog } from '/@/views/components/dialogHooks.ts'; import BasicTable from '/@/components/secondaryScreen/secondMap/components/basicTable/BasicTable.vue'; import { getMonitorList } from '/@/views/centralScreen/centralScreen.api.ts'; + import { useUserStore } from '/@/store/modules/user.ts'; const props = defineProps({ record: Object, @@ -72,9 +73,12 @@ // }, }, ]; + const userStore = useUserStore(); + const formState = computed(() => ({ dataType: props.setting.dataType, orgCode: props.setting?.orgCode, + orgCodeList: userStore.getCenterInfo?.serviceScope, })); const { visible, closeDialog, openDialog } = useDialog({ title: props.title }); const registerTable = ref(); diff --git a/src/views/sys/login.vue b/src/views/sys/login.vue index ceee0e0..543fa49 100644 --- a/src/views/sys/login.vue +++ b/src/views/sys/login.vue @@ -91,7 +91,7 @@