提交 dd1b6184 编写于 作者: xingli.wu's avatar xingli.wu

Merge branch 'feature/xinglee' into 'release'

feat: 系统升级弹窗

See merge request com.pica.cloud.education.frontend/pica.cloud.web-education-admin!512
<template> <template>
<div v-if="$route.name!='loginPage'"> <div v-if="$route.name != 'loginPage'">
<v-header :userName="userName" :portrait="portrait" :idType="idType"></v-header> <v-header
<v-slidebar :authList="authList" :tokenValue="token" :storageIdType="storageIdType" :notCompleteCount="redNum" :masterFlag="masterFlag"></v-slidebar> :userName="userName"
<el-container> :portrait="portrait"
<div class="content" id="body-content"> :idType="idType"
<transition name="router-fade" mode="out-in"> ></v-header>
<keep-alive> <v-slidebar
<router-view v-if="$route.meta.keepAlive"></router-view> :authList="authList"
</keep-alive> :tokenValue="token"
</transition> :storageIdType="storageIdType"
<transition name="router-fade" mode="out-in"> :notCompleteCount="redNum"
<router-view v-if="!$route.meta.keepAlive"></router-view> :masterFlag="masterFlag"
</transition> ></v-slidebar>
<v-footer></v-footer> <el-container>
</div> <div class="content" id="body-content">
</el-container> <transition name="router-fade" mode="out-in">
<keep-alive>
<router-view v-if="$route.meta.keepAlive"></router-view>
</keep-alive>
</transition>
<transition name="router-fade" mode="out-in">
<router-view v-if="!$route.meta.keepAlive"></router-view>
</transition>
<v-footer></v-footer>
</div>
</el-container>
</div> </div>
<div class="login-div" v-else> <div class="login-div" v-else>
<transition name="router-fade" mode="out-in"> <transition name="router-fade" mode="out-in">
...@@ -24,141 +34,157 @@ ...@@ -24,141 +34,157 @@
</template> </template>
<script> <script>
import VHeader from './views/layout/header.vue' import VHeader from './views/layout/header.vue';
import VSlidebar from './views/layout/slidebar.vue' import VSlidebar from './views/layout/slidebar.vue';
import VFooter from './views/layout/footer.vue' import VFooter from './views/layout/footer.vue';
import { base64decode, isNotEmptyUtils, getUrlParamsMap } from "./utils/utils.js" import {
import { mapActions, mapGetters } from 'vuex' base64decode,
import { getLoginUrl } from './utils/index.js' isNotEmptyUtils,
import { getRedNum, getCircleRole } from './utils/patients/patientsapi' getUrlParamsMap,
let vm = null } from './utils/utils.js';
import { mapActions, mapGetters } from 'vuex';
import { getLoginUrl } from './utils/index.js';
import { getRedNum, getCircleRole } from './utils/patients/patientsapi';
import createModal from './utils/createModal';
import { systemUpdateConfig } from './utils/system/index';
let vm = null;
export default { export default {
components:{ components: {
VHeader, VHeader,
VSlidebar, VSlidebar,
VFooter VFooter,
}, },
data() { data() {
return { return {
idType: 0, idType: 0,
storageIdType: 0, storageIdType: 0,
token: '', token: '',
userName: '', userName: '',
portrait: '', portrait: '',
authList: {}, authList: {},
redNum: 0, redNum: 0,
masterFlag: false, masterFlag: false,
} };
}, },
computed:{ computed: {
...mapGetters([ ...mapGetters(['_token']),
'_token' },
]) created() {
}, vm = this;
created() { if (vm.$route.name != 'loginPage') {
vm = this vm.getToken();
if(vm.$route.name!='loginPage') {
vm.getToken()
} }
}, },
mounted() { mounted() {
vm.getRedData() vm.getRedData();
function checkIE(){ function checkIE() {
return '-ms-scroll-limit' in document.documentElement.style && '-ms-ime-align' in document.documentElement.style return (
'-ms-scroll-limit' in document.documentElement.style &&
'-ms-ime-align' in document.documentElement.style
);
} }
if (checkIE()) { if (checkIE()) {
window.addEventListener('hashchange', () => { window.addEventListener(
let currentPath = window.location.hash.slice(1); 'hashchange',
if (this.$route.path !== currentPath) { () => {
this.$router.push(currentPath) let currentPath = window.location.hash.slice(1);
} if (this.$route.path !== currentPath) {
}, false) this.$router.push(currentPath);
}
},
false
);
} }
}, this.getUpdateConfig();
methods: { },
...mapActions('reservationManage',['getUserName']), methods: {
// 解密token ...mapActions('reservationManage', ['getUserName']),
getToken() { // 解密token
let href = window.location.href getToken() {
let offset = href.indexOf("?") let href = window.location.href;
if(offset !== -1) { let offset = href.indexOf('?');
let paramStr = href.substring(offset + 1, href.length) if (offset !== -1) {
let pars = base64decode(paramStr) let paramStr = href.substring(offset + 1, href.length);
let paramMap = getUrlParamsMap(pars, "&") let pars = base64decode(paramStr);
if (isNotEmptyUtils(paramMap["token"])) { let paramMap = getUrlParamsMap(pars, '&');
vm.token = paramMap["token"] if (isNotEmptyUtils(paramMap['token'])) {
localStorage.setItem('storageToken', vm.token) vm.token = paramMap['token'];
vm.$router.push({ path: 'home' }) localStorage.setItem('storageToken', vm.token);
vm.$router.push({ path: 'home' });
// if(href.indexOf("mypatients-manage/patients-list") > -1) { // if(href.indexOf("mypatients-manage/patients-list") > -1) {
// // vm.$router.push({ path: 'patients-manage/mypatients-manage/patients-list' }) // // vm.$router.push({ path: 'patients-manage/mypatients-manage/patients-list' })
// vm.$router.push({ path: 'patients-list' }) // vm.$router.push({ path: 'patients-list' })
// }else { // }else {
// vm.$router.push({ path: 'home' }) // vm.$router.push({ path: 'home' })
// } // }
} else { } else {
if(!localStorage.getItem('storageToken')) { if (!localStorage.getItem('storageToken')) {
console.log('域名',window.location.host) console.log('域名', window.location.host);
if(window.location.host.indexOf("work.yunqueyi") != -1&&window.location.host.indexOf("test2-work.yunqueyi") == -1) { if (
window.location.href = getLoginUrl('?from=work&type=logout') // 没有token返回登录页面 window.location.host.indexOf('work.yunqueyi') != -1 &&
window.location.host.indexOf('test2-work.yunqueyi') == -1
) {
window.location.href = getLoginUrl('?from=work&type=logout'); // 没有token返回登录页面
return; return;
} else { } else {
this.$router.push('/login') this.$router.push('/login');
return; return;
} }
}
} }
} } else {
}else { if (!localStorage.getItem('storageToken')) {
if(!localStorage.getItem('storageToken')) { if (
if(window.location.host.indexOf("work.yunqueyi") != -1&&window.location.host.indexOf("test2-work.yunqueyi") == -1) { window.location.host.indexOf('work.yunqueyi') != -1 &&
window.location.host.indexOf('test2-work.yunqueyi') == -1
window.location.href = getLoginUrl('?from=work&type=logout') // 没有token返回登录页面 ) {
window.location.href = getLoginUrl('?from=work&type=logout'); // 没有token返回登录页面
return; return;
} else { } else {
this.$router.push('/login'); this.$router.push('/login');
return; return;
} }
} }
} }
vm.changeToken(vm.token) vm.changeToken(vm.token);
vm.getUserAuth(vm.token) vm.getUserAuth(vm.token);
}, },
// 修改token // 修改token
...mapActions([ ...mapActions(['changeToken', 'changeIdType', 'changeMaster']),
'changeToken', // 获取用户权限
'changeIdType', getUserAuth(token) {
'changeMaster'
]),
// 获取用户权限
getUserAuth(token) {
vm.getCircleRoleData(); vm.getCircleRoleData();
let req = null let req = null;
req = { req = {
token: token token: token,
} };
vm.GET('portal/common/v1/role',req).then((res) => { vm.GET('portal/common/v1/role', req).then((res) => {
if(res.code == '000000') { if (res.code == '000000') {
vm.changeIdType(res.data.idType) vm.changeIdType(res.data.idType);
vm.changeMaster(res.data.masterAdministratorFlag) vm.changeMaster(res.data.masterAdministratorFlag);
localStorage.setItem('storageIdType', res.data.idType) localStorage.setItem('storageIdType', res.data.idType);
localStorage.setItem('isRoleOfOuter', res.data.isRoleOfOuter) localStorage.setItem('isRoleOfOuter', res.data.isRoleOfOuter);
localStorage.setItem('storageMaster', res.data.masterAdministratorFlag) localStorage.setItem(
vm.idType = res.data.idType 'storageMaster',
vm.storageIdType = res.data.idType res.data.masterAdministratorFlag
vm.masterFlag = res.data.masterAdministratorFlag );
vm.userName = res.data.name vm.idType = res.data.idType;
vm.portrait = res.data.imageUrl vm.storageIdType = res.data.idType;
vm.authList = res.data.auth vm.masterFlag = res.data.masterAdministratorFlag;
vm.userName = res.data.name;
vm.portrait = res.data.imageUrl;
vm.authList = res.data.auth;
vm.getUserName(vm.userName); vm.getUserName(vm.userName);
} else { } else {
vm.$message.info(res.message) vm.$message.info(res.message);
} }
}) });
}, },
setStoreData(value) { setStoreData(value) {
if (value){ if (value) {
return 1; return 1;
}else { } else {
return 0; return 0;
} }
}, },
...@@ -169,84 +195,115 @@ export default { ...@@ -169,84 +195,115 @@ export default {
localStorage.removeItem('ordinary'); localStorage.removeItem('ordinary');
localStorage.removeItem('createCircle'); localStorage.removeItem('createCircle');
getCircleRole({}).then((res) => { getCircleRole({}).then((res) => {
if(res.code == '000000') { if (res.code == '000000') {
//mainManager主管理员,manager管理员,ordinary普通人 //mainManager主管理员,manager管理员,ordinary普通人
const { highMainManager, mainManager, manager, ordinary, createCircle} = res.data; const {
localStorage.setItem('highMainManager', vm.setStoreData(highMainManager)) highMainManager,
localStorage.setItem('mainManager', vm.setStoreData(mainManager)) mainManager,
localStorage.setItem('manager', vm.setStoreData(manager)) manager,
localStorage.setItem('ordinary', vm.setStoreData(ordinary)) ordinary,
localStorage.setItem('createCircle', vm.setStoreData(createCircle)) createCircle,
} = res.data;
localStorage.setItem(
'highMainManager',
vm.setStoreData(highMainManager)
);
localStorage.setItem('mainManager', vm.setStoreData(mainManager));
localStorage.setItem('manager', vm.setStoreData(manager));
localStorage.setItem('ordinary', vm.setStoreData(ordinary));
localStorage.setItem('createCircle', vm.setStoreData(createCircle));
} else { } else {
vm.$message.info(res.message) vm.$message.info(res.message);
} }
}) });
}, },
getRedData() { getRedData() {
getRedNum({ getRedNum({
openTime: (new Date()).getTime() openTime: new Date().getTime(),
}).then((data) => {
if(data.code == '000000') {
vm.redNum = data.data
}
}).catch(error => {
vm.$message.error(error)
}) })
} .then((data) => {
}, if (data.code == '000000') {
vm.redNum = data.data;
}
})
.catch((error) => {
vm.$message.error(error);
});
},
getUpdateConfig() {
const modal = createModal();
systemUpdateConfig()
.then((res) => {
if (Number(res.data.type) === 1) {
modal.open(1, res.data.imageUrl);
}
if (Number(res.data.type) === 2) {
modal.open(2, res.data.imageUrl);
}
})
.catch(() => {
modal.open(2);
});
},
},
watch: { watch: {
_token(val) { _token(val) {
if(val!=undefined&&val!=null) { if (val != undefined && val != null) {
vm.getUserAuth(val) vm.getUserAuth(val);
} }
}, },
$route:{ $route: {
deep:true, deep: true,
handler:function(newVal){ handler: function (newVal) {
if(vm.$route.path == '/patients-manage/not-complete/uncompleted-list'){ //避免重复请求 if (
vm.redNum = 0 vm.$route.path == '/patients-manage/not-complete/uncompleted-list'
) {
//避免重复请求
vm.redNum = 0;
} }
} },
} },
} },
} };
</script> </script>
<style lang="scss"> <style lang="scss">
// @import './style/common'; // @import './style/common';
@import './style/global'; @import './style/global';
@import './style/mixin.scss'; @import './style/mixin.scss';
.router-fade-enter-active, .router-fade-leave-active { .router-fade-enter-active,
transition: opacity .1s; .router-fade-leave-active {
} transition: opacity 0.1s;
.router-fade-enter, .router-fade-leave-active { }
opacity: 0; .router-fade-enter,
} .router-fade-leave-active {
.el-container { opacity: 0;
margin-left: 255px; }
overflow: hidden; .el-container {
.content { margin-left: 255px;
background: #F0F2F5; overflow: hidden;
position: absolute; .content {
left: 255px; background: #f0f2f5;
right: 0; position: absolute;
top: 64px; left: 255px;
bottom: 0; right: 0;
width: auto; top: 64px;
box-sizing: border-box; bottom: 0;
overflow-y: scroll; width: auto;
} box-sizing: border-box;
} overflow-y: scroll;
.login-div {
height: 100%;
} }
.check-auth{ }
width: 480px!important; .login-div {
height: 240px; height: 100%;
padding: 20px 50px; }
.el-message-box__content{ .check-auth {
padding:20px 0; width: 480px !important;
margin-bottom: 10px; height: 240px;
} padding: 20px 50px;
.el-message-box__content {
padding: 20px 0;
margin-bottom: 10px;
} }
}
</style> </style>
<template>
<div class="dialog" v-if="visible">
<div v-if="type === 1" class="content">
<img
width="680"
height="705"
:src="imageUrl"
/>
<img
class="close"
src="https://files.yunqueyi.com/image/svg+xml/common/20240704144219420.svg"
@click="close"
/>
</div>
<img v-if="type === 2" width="680" height="474" :src="imageUrl" />
</div>
</template>
<script>
export default {
name: 'SysUpgradeDialog',
data: function() {
return {
type: 1,
visible: false,
imageUrl: null,
defaultImageUrl: 'https://files.yunqueyi.com/image/png/common/2024070411371293.png',
};
},
methods: {
open(type, imageUrl) {
this.visible = true;
this.type = type;
this.imageUrl = imageUrl || this.defaultImageUrl;
},
close() {
this.visible = false;
},
},
};
</script>
<style lang="less" scoped>
.dialog {
position: fixed;
display: flex;
justify-content: center;
align-items: center;
left: 0;
top: 0;
width: 100%;
height: 100%;
background: rgba(2, 2, 2, 0.6);
z-index: 999999;
img {
display: block;
}
.content {
display: flex;
flex-direction: column;
align-items: center;
}
.close {
width: 62px;
height: 62px;
margin-top: 32px;
}
}
</style>
import Vue from 'vue';
import MyModal from '../components/system-upgrade-dialog.vue';
const modalConstructor = Vue.extend(MyModal);
const createModal = () => {
const instance = new modalConstructor();
instance.$mount();
document.body.appendChild(instance.$el);
return instance;
};
export default createModal;
import fetch from '../fetch';
import { getBaseUrl } from '@/utils/index'
let headers = {
'Content-Type': 'application/json;charset=UTF-8',
token: localStorage.getItem('storageToken'),
};
// 获取检测名称列表
export const systemUpdateConfig = (data) => {
return fetch({
headers,
data:data,
url: getBaseUrl(`api-ws/constant/config/image`),
method: "get",
});
};
\ No newline at end of file
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册