|
@@ -1,284 +1,301 @@
|
|
|
<template>
|
|
|
- <div id="main">
|
|
|
- <Loading v-if="isLoading" :top="300"></Loading>
|
|
|
- <AreaLayout>
|
|
|
- <!-- 头部右侧个人中心部分 -->
|
|
|
- <div class="header-right-box fl-around" slot="header-content">
|
|
|
- <Icon style="display:block" custom="iconfont icon-home" :color="routerName == 'homePage' ? '#1CC0F3':'#d0d0d0'" @click="toHome" :title="$t('system.goHome')"/>
|
|
|
- <Icon type="md-open" @click="changePlatform" :title="$t('system.changePlat')" v-if="hasArea"/>
|
|
|
- <BaseNotification :msgs="msgs"></BaseNotification>
|
|
|
- <span class="header-split"></span>
|
|
|
- <BaseUserPoptip @logout="basicMenu('quit')"></BaseUserPoptip>
|
|
|
- </div>
|
|
|
- <div id="areaContent" class="custom-scroll-bar" slot="content">
|
|
|
- <router-view v-if="!$route.meta.isKeep" :key="this.$route.name"></router-view>
|
|
|
- <keep-alive>
|
|
|
- <router-view v-if="$route.meta.isKeep" :key="this.$route.name"></router-view>
|
|
|
- </keep-alive>
|
|
|
- </div>
|
|
|
- </AreaLayout>
|
|
|
- </div>
|
|
|
+ <div id="main">
|
|
|
+ <Loading v-if="isLoading" :top="300"></Loading>
|
|
|
+ <AreaLayout>
|
|
|
+ <!-- 头部右侧个人中心部分 -->
|
|
|
+ <div class="header-right-box fl-around" slot="header-content">
|
|
|
+ <Icon style="display:block" custom="iconfont icon-home" :color="routerName == 'homePage' ? '#1CC0F3':'#d0d0d0'" @click="toHome" :title="$t('system.goHome')" />
|
|
|
+ <Icon type="md-open" @click="changePlatform" :title="$t('system.changePlat')" v-if="hasArea" />
|
|
|
+ <BaseNotification :msgs="msgs"></BaseNotification>
|
|
|
+ <span class="header-split"></span>
|
|
|
+ <BaseUserPoptip @logout="basicMenu('quit')"></BaseUserPoptip>
|
|
|
+ </div>
|
|
|
+ <div id="areaContent" class="custom-scroll-bar" slot="content">
|
|
|
+ <router-view v-if="!$route.meta.isKeep" :key="this.$route.name"></router-view>
|
|
|
+ <keep-alive>
|
|
|
+ <router-view v-if="$route.meta.isKeep" :key="this.$route.name"></router-view>
|
|
|
+ </keep-alive>
|
|
|
+ </div>
|
|
|
+ </AreaLayout>
|
|
|
+ </div>
|
|
|
</template>
|
|
|
|
|
|
<script>
|
|
|
import AreaLayout from './AreaLayout.vue'
|
|
|
export default {
|
|
|
- name: 'headers',
|
|
|
- props: ['parentToChild', 'identityselect'],
|
|
|
- components: {
|
|
|
- AreaLayout
|
|
|
+ name: 'headers',
|
|
|
+ props: ['parentToChild', 'identityselect'],
|
|
|
+ components: {
|
|
|
+ AreaLayout
|
|
|
+ },
|
|
|
+ data() {
|
|
|
+ return {
|
|
|
+ msgs: [],
|
|
|
+ isShowMock: false,
|
|
|
+ isOpenDrawer: false,
|
|
|
+ routerName: '',
|
|
|
+ isLoading: false
|
|
|
+ }
|
|
|
+ },
|
|
|
+ created() {
|
|
|
+ this.$Message.config({
|
|
|
+ duration: 3
|
|
|
+ });
|
|
|
+ // 检查超时操作页面,清空缓存数据
|
|
|
+ let webEndTime = localStorage.getItem('webEndTime')
|
|
|
+ let time_now = new Date().getTime()
|
|
|
+ if (webEndTime && time_now > webEndTime) {
|
|
|
+ console.log('长时间未操作,清空storage,重新登录')
|
|
|
+ this.loginOut()
|
|
|
+ }
|
|
|
+ this.$store.dispatch('user/checkSchoolCode');// 設定登入成功的學校簡碼
|
|
|
+ this.$store.dispatch('user/checkUserProfile');// 檢查使用者個人詳細資訊
|
|
|
+ this.$store.dispatch('user/checkStudentProfile');// 檢查學生的詳細資訊
|
|
|
+
|
|
|
+
|
|
|
+ let user = JSON.parse(decodeURIComponent(sessionStorage.userInfo, "utf-8"))
|
|
|
+ let user_profile = JSON.parse(decodeURIComponent(localStorage.user_profile, "utf-8"))
|
|
|
+ console.log(user_profile)
|
|
|
+ if (user_profile.schools) {
|
|
|
+ user_profile.schools = user_profile.schools.filter((item) => {
|
|
|
+ return item.status == 'join'
|
|
|
+ })
|
|
|
+ } else {
|
|
|
+ user_profile.schools = []
|
|
|
+ }
|
|
|
+ if (user_profile.schools.length) {
|
|
|
+ this.$store.commit('setUserInfo', {
|
|
|
+ TEAMModelId: user.id || user.sub,
|
|
|
+ name: user.name,
|
|
|
+ schoolCode: user_profile.defaultschool || user_profile.schools[0].schoolId
|
|
|
+ })
|
|
|
+ } else {
|
|
|
+ this.$store.commit('setUserInfo', {
|
|
|
+ TEAMModelId: user.id || user.sub,
|
|
|
+ name: user.name,
|
|
|
+ schoolCode: this.$GLOBAL.DEFAULT_SCHOOL_CODE
|
|
|
+ })
|
|
|
+ }
|
|
|
+ this.$store.commit('setPrivateSpace', user_profile.total || 0)
|
|
|
+ this.getAllNotice(user_profile, user.id)
|
|
|
+ this.curPlatform = localStorage.getItem('platform') || 'school'
|
|
|
+
|
|
|
+ },
|
|
|
+ methods: {
|
|
|
+ loginOut() {
|
|
|
+ let login_schoolCode = localStorage.getItem('login_schoolCode')
|
|
|
+ let srvAdr = localStorage.getItem('srvAdr')
|
|
|
+ let versionFlag = localStorage.getItem('versionFlag')
|
|
|
+ localStorage.clear()
|
|
|
+ localStorage.setItem('srvAdr', srvAdr)
|
|
|
+ localStorage.setItem('versionFlag', versionFlag)
|
|
|
+ localStorage.setItem('login_schoolCode', login_schoolCode)
|
|
|
+ window.location.href = window.location.origin + '/login'
|
|
|
},
|
|
|
- data() {
|
|
|
- return {
|
|
|
- msgs: [],
|
|
|
- isShowMock: false,
|
|
|
- isOpenDrawer: false,
|
|
|
- routerName: '',
|
|
|
- isLoading: false
|
|
|
- }
|
|
|
+ changePlatform() {
|
|
|
+ let goPlatform = this.curPlatform === 'area' ? 'school' : 'area'
|
|
|
+ let homePath = 'home'
|
|
|
+ this.$router.push({
|
|
|
+ name: goPlatform === 'area' ? 'area' : homePath
|
|
|
+ })
|
|
|
+ localStorage.setItem('platform', this.curPlatform === 'area' ? 'school' : 'area')
|
|
|
+ this.curPlatform = goPlatform
|
|
|
},
|
|
|
- created() {
|
|
|
- this.$Message.config({
|
|
|
- duration: 3
|
|
|
- });
|
|
|
- // 检查超时操作页面,清空缓存数据
|
|
|
- let webEndTime = localStorage.getItem('webEndTime')
|
|
|
- let time_now = new Date().getTime()
|
|
|
- if (webEndTime && time_now > webEndTime) {
|
|
|
- console.log('长时间未操作,清空storage,重新登录')
|
|
|
- this.loginOut()
|
|
|
- }
|
|
|
- this.$store.dispatch('user/checkSchoolCode');// 設定登入成功的學校簡碼
|
|
|
- this.$store.dispatch('user/checkUserProfile');// 檢查使用者個人詳細資訊
|
|
|
- this.$store.dispatch('user/checkStudentProfile');// 檢查學生的詳細資訊
|
|
|
-
|
|
|
-
|
|
|
- let user = JSON.parse(decodeURIComponent(sessionStorage.userInfo, "utf-8"))
|
|
|
- let user_profile = JSON.parse(decodeURIComponent(localStorage.user_profile, "utf-8"))
|
|
|
- console.log(user_profile)
|
|
|
- if (user_profile.schools) {
|
|
|
- user_profile.schools = user_profile.schools.filter((item) => {
|
|
|
- return item.status == 'join'
|
|
|
- })
|
|
|
- } else {
|
|
|
- user_profile.schools = []
|
|
|
- }
|
|
|
- if (user_profile.schools.length) {
|
|
|
- this.$store.commit('setUserInfo', {
|
|
|
- TEAMModelId: user.id || user.sub,
|
|
|
- name: user.name,
|
|
|
- schoolCode: user_profile.defaultschool || user_profile.schools[0].schoolId
|
|
|
- })
|
|
|
- } else {
|
|
|
- this.$store.commit('setUserInfo', {
|
|
|
- TEAMModelId: user.id || user.sub,
|
|
|
- name: user.name,
|
|
|
- schoolCode: this.$GLOBAL.DEFAULT_SCHOOL_CODE
|
|
|
- })
|
|
|
- }
|
|
|
- this.$store.commit('setPrivateSpace', user_profile.total || 0)
|
|
|
- this.getAllNotice(user_profile, user.id)
|
|
|
- this.curPlatform = localStorage.getItem('platform') || 'school'
|
|
|
+ async getAllNotice(user_profile, userId) {
|
|
|
+ // let schoolNotice = await this.getSchoolNotice(user_profile, userId)
|
|
|
+ let privateNotice = await this.getPrivateNotice(userId)
|
|
|
+ // this.msgs = schoolNotice.concat(privateNotice).reverse()
|
|
|
+ console.error(privateNotice)
|
|
|
+ this.msgs = privateNotice
|
|
|
+ if (this.msgs.length) {
|
|
|
+ this.msgs.forEach(i => {
|
|
|
+ i.content = i.body
|
|
|
+ i.body = JSON.parse(this.getBodyJson(i.data)).value
|
|
|
+ i.label = i.body.notifyCode
|
|
|
|
|
|
+ })
|
|
|
+ }
|
|
|
+ localStorage.setItem('msgs', JSON.stringify(this.msgs))
|
|
|
+ console.log('端外通知', this.msgs)
|
|
|
},
|
|
|
- methods: {
|
|
|
- loginOut() {
|
|
|
- let login_schoolCode = localStorage.getItem('login_schoolCode')
|
|
|
- let srvAdr = localStorage.getItem('srvAdr')
|
|
|
- let versionFlag = localStorage.getItem('versionFlag')
|
|
|
- localStorage.clear()
|
|
|
- localStorage.setItem('srvAdr', srvAdr)
|
|
|
- localStorage.setItem('versionFlag', versionFlag)
|
|
|
- localStorage.setItem('login_schoolCode', login_schoolCode)
|
|
|
- window.location.href = window.location.origin + '/login'
|
|
|
- },
|
|
|
- changePlatform(){
|
|
|
- let goPlatform = this.curPlatform === 'area' ? 'school' : 'area'
|
|
|
- let homePath = 'home'
|
|
|
- this.$router.push({
|
|
|
- name: goPlatform === 'area' ? 'area' : homePath
|
|
|
- })
|
|
|
- localStorage.setItem('platform',this.curPlatform === 'area' ? 'school' : 'area')
|
|
|
- this.curPlatform = goPlatform
|
|
|
- },
|
|
|
- async getAllNotice(user_profile, userId) {
|
|
|
- let schoolNotice = await this.getSchoolNotice(user_profile, userId)
|
|
|
- let privateNotice = await this.getPrivateNotice(userId)
|
|
|
- this.msgs = schoolNotice.concat(privateNotice)
|
|
|
- console.log('端外通知', this.msgs)
|
|
|
- },
|
|
|
- getSchoolNotice(user_profile, userId) {
|
|
|
- return new Promise((r, j) => {
|
|
|
- if (this.hasSchool) {
|
|
|
- let srvAdr = this.$store.state.config.srvAdr
|
|
|
- let host = srvAdr == 'Global' ? this.$store.state.config.Global.coreAPIUrl : this.$store.state.config.China.coreAPIUrl
|
|
|
- this.$api.service.getNotification(host,{
|
|
|
- "from": "ies5:" + (user_profile.defaultschool || user_profile.schools[0].schoolId),
|
|
|
- "receiver": userId
|
|
|
- }).then(res => {
|
|
|
- r(res.msgs)
|
|
|
- })
|
|
|
- } else {
|
|
|
- r([])
|
|
|
- }
|
|
|
- })
|
|
|
- },
|
|
|
- getPrivateNotice(userId) {
|
|
|
- return new Promise((r, j) => {
|
|
|
- let srvAdr = this.$store.state.config.srvAdr
|
|
|
- let host = srvAdr == 'Global' ? this.$store.state.config.Global.coreAPIUrl : this.$store.state.config.China.coreAPIUrl
|
|
|
- this.$api.service.getNotification(host,{
|
|
|
- "from": "ies5:private",
|
|
|
- "receiver": userId
|
|
|
- }).then(res => {
|
|
|
- r(res.msgs)
|
|
|
- })
|
|
|
- })
|
|
|
- },
|
|
|
- toHome() {
|
|
|
- this.$router.push({ path: '/area/areaMgmt' })
|
|
|
- },
|
|
|
- toSettings() {
|
|
|
- this.$router.push({ path: '/home/settings' })
|
|
|
- },
|
|
|
- toFeedback() {
|
|
|
- this.$router.push({ path: '/home/feedback' })
|
|
|
- },
|
|
|
- closeMenu() {
|
|
|
- this.isOpenDrawer = false
|
|
|
- },
|
|
|
- basicMenu(name) {
|
|
|
- if (name == 'quit') {
|
|
|
- this.$store.commit('user/resetSchoolProfile')
|
|
|
- this.$store.commit('user/resetTeachers')
|
|
|
- this.$store.commit('student/setStudents',[])
|
|
|
- this.$User.logout()
|
|
|
- this.$router.push({
|
|
|
- path: '/login'
|
|
|
- })
|
|
|
- }
|
|
|
+ getSchoolNotice(user_profile, userId) {
|
|
|
+ return new Promise((r, j) => {
|
|
|
+ if (this.hasSchool) {
|
|
|
+ let srvAdr = this.$store.state.config.srvAdr
|
|
|
+ let host = srvAdr == 'Global' ? this.$store.state.config.Global.coreAPIUrl : this.$store.state.config.China.coreAPIUrl
|
|
|
+ this.$api.service.getNotification(host, {
|
|
|
+ "from": "ies5:" + (user_profile.defaultschool || user_profile.schools[0].schoolId),
|
|
|
+ "receiver": userId
|
|
|
+ }).then(res => {
|
|
|
+ r(res.msgs)
|
|
|
+ })
|
|
|
+ } else {
|
|
|
+ r([])
|
|
|
}
|
|
|
+ })
|
|
|
+ },
|
|
|
+ getPrivateNotice(userId) {
|
|
|
+ return new Promise((r, j) => {
|
|
|
+ let srvAdr = this.$store.state.config.srvAdr
|
|
|
+ let host = srvAdr == 'Global' ? this.$store.state.config.Global.coreAPIUrl : this.$store.state
|
|
|
+ .config.China.coreAPIUrl
|
|
|
+ this.$api.service.getNotification(host, {
|
|
|
+ "sender": [],
|
|
|
+ "receiver": userId
|
|
|
+ }).then(res => {
|
|
|
+ if (res.length) {
|
|
|
+ let needMsgs = res.filter(msg => msg.data && JSON.parse(this.getBodyJson(msg.data)).value.scope)
|
|
|
+ r(needMsgs)
|
|
|
+ } else {
|
|
|
+ r([])
|
|
|
+ }
|
|
|
+ })
|
|
|
+ })
|
|
|
+ },
|
|
|
+ toHome() {
|
|
|
+ this.$router.push({ path: '/area/areaMgmt' })
|
|
|
+ },
|
|
|
+ toSettings() {
|
|
|
+ this.$router.push({ path: '/home/settings' })
|
|
|
+ },
|
|
|
+ toFeedback() {
|
|
|
+ this.$router.push({ path: '/home/feedback' })
|
|
|
},
|
|
|
- mounted() {
|
|
|
+ closeMenu() {
|
|
|
+ this.isOpenDrawer = false
|
|
|
+ },
|
|
|
+ basicMenu(name) {
|
|
|
+ if (name == 'quit') {
|
|
|
+ this.$store.commit('user/resetSchoolProfile')
|
|
|
+ this.$store.commit('user/resetTeachers')
|
|
|
+ this.$store.commit('student/setStudents', [])
|
|
|
+ this.$User.logout()
|
|
|
+ this.$router.push({
|
|
|
+ path: '/login'
|
|
|
+ })
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
+ mounted() {
|
|
|
|
|
|
- if (localStorage.getItem('noSave') && JSON.parse(localStorage.getItem('noSave')).length) {
|
|
|
- this.$tools.deleteNoSave(JSON.parse(localStorage.getItem('noSave')))
|
|
|
- } else {
|
|
|
- localStorage.setItem('noSave', '[]')
|
|
|
- }
|
|
|
+ if (localStorage.getItem('noSave') && JSON.parse(localStorage.getItem('noSave')).length) {
|
|
|
+ this.$tools.deleteNoSave(JSON.parse(localStorage.getItem('noSave')))
|
|
|
+ } else {
|
|
|
+ localStorage.setItem('noSave', '[]')
|
|
|
+ }
|
|
|
|
|
|
- this.$EventBus.$off('onGlobalLoading')
|
|
|
- this.$EventBus.$on('onGlobalLoading', val => {
|
|
|
- this.isLoading = val
|
|
|
- })
|
|
|
+ this.$EventBus.$off('onGlobalLoading')
|
|
|
+ this.$EventBus.$on('onGlobalLoading', val => {
|
|
|
+ this.isLoading = val
|
|
|
+ })
|
|
|
|
|
|
- this.$EventBus.$off('noSave')
|
|
|
- this.$EventBus.$on('noSave', val => {
|
|
|
- let curNoSaveArr = JSON.parse(localStorage.getItem('noSave'))
|
|
|
- curNoSaveArr.push(val)
|
|
|
- localStorage.setItem('noSave', JSON.stringify(curNoSaveArr))
|
|
|
- })
|
|
|
+ this.$EventBus.$off('noSave')
|
|
|
+ this.$EventBus.$on('noSave', val => {
|
|
|
+ let curNoSaveArr = JSON.parse(localStorage.getItem('noSave'))
|
|
|
+ curNoSaveArr.push(val)
|
|
|
+ localStorage.setItem('noSave', JSON.stringify(curNoSaveArr))
|
|
|
+ })
|
|
|
|
|
|
+ },
|
|
|
+ computed: {
|
|
|
+ hasSchool() {
|
|
|
+ return this.$store.state.userInfo.hasSchool;
|
|
|
},
|
|
|
- computed: {
|
|
|
- hasSchool() {
|
|
|
- return this.$store.state.userInfo.hasSchool;
|
|
|
- },
|
|
|
- hasArea(){
|
|
|
- return this.$store.state.user.userProfile.areas.length > 0
|
|
|
- }
|
|
|
- },
|
|
|
- watch: {
|
|
|
- $route: {
|
|
|
- handler(val, oldval) {
|
|
|
- this.routerName = val.name
|
|
|
- },
|
|
|
- // 深度观察监听
|
|
|
- deep: true,
|
|
|
- //立即执行
|
|
|
- immediate: true
|
|
|
- }
|
|
|
+ hasArea() {
|
|
|
+ return this.$store.state.user.userProfile.areas.length > 0
|
|
|
+ }
|
|
|
+ },
|
|
|
+ watch: {
|
|
|
+ $route: {
|
|
|
+ handler(val, oldval) {
|
|
|
+ this.routerName = val.name
|
|
|
+ },
|
|
|
+ // 深度观察监听
|
|
|
+ deep: true,
|
|
|
+ //立即执行
|
|
|
+ immediate: true
|
|
|
}
|
|
|
+ }
|
|
|
}
|
|
|
</script>
|
|
|
|
|
|
<style scoped>
|
|
|
.header-split {
|
|
|
- display: block;
|
|
|
- width: 0;
|
|
|
- background: #636363;
|
|
|
- height: 25px;
|
|
|
- margin: 0 15px;
|
|
|
+ display: block;
|
|
|
+ width: 0;
|
|
|
+ background: #636363;
|
|
|
+ height: 25px;
|
|
|
+ margin: 0 15px;
|
|
|
}
|
|
|
.header-right-box {
|
|
|
- margin: 12px;
|
|
|
- line-height: 1.5;
|
|
|
- float: right;
|
|
|
- height: 25px;
|
|
|
- margin-right: 20px;
|
|
|
+ margin: 12px;
|
|
|
+ line-height: 1.5;
|
|
|
+ float: right;
|
|
|
+ height: 25px;
|
|
|
+ margin-right: 20px;
|
|
|
}
|
|
|
|
|
|
.header-right-box .ivu-icon {
|
|
|
- font-size: 20px;
|
|
|
- margin-right: 20px;
|
|
|
- color: #d0d0d0;
|
|
|
- cursor: pointer;
|
|
|
+ font-size: 20px;
|
|
|
+ margin-right: 20px;
|
|
|
+ color: #d0d0d0;
|
|
|
+ cursor: pointer;
|
|
|
}
|
|
|
|
|
|
.header-right-box img {
|
|
|
- width: 40px;
|
|
|
- border-radius: 50%;
|
|
|
- border: 2px solid #595959;
|
|
|
+ width: 40px;
|
|
|
+ border-radius: 50%;
|
|
|
+ border: 2px solid #595959;
|
|
|
}
|
|
|
|
|
|
.fl-around {
|
|
|
- display: flex;
|
|
|
- align-items: center;
|
|
|
- justify-content: space-around;
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ justify-content: space-around;
|
|
|
}
|
|
|
</style>
|
|
|
|
|
|
<style>
|
|
|
html,
|
|
|
body {
|
|
|
- height: 100%;
|
|
|
- width: 100%;
|
|
|
- margin: 0px;
|
|
|
- padding: 0px;
|
|
|
+ height: 100%;
|
|
|
+ width: 100%;
|
|
|
+ margin: 0px;
|
|
|
+ padding: 0px;
|
|
|
}
|
|
|
|
|
|
#main {
|
|
|
- width: 100%;
|
|
|
- height: 100%;
|
|
|
+ width: 100%;
|
|
|
+ height: 100%;
|
|
|
}
|
|
|
|
|
|
#main .layout {
|
|
|
- border: none;
|
|
|
- border-radius: 0px;
|
|
|
+ border: none;
|
|
|
+ border-radius: 0px;
|
|
|
}
|
|
|
|
|
|
#areaContent {
|
|
|
- height: 100%;
|
|
|
- /* background: #242328; */
|
|
|
- /* overflow: hidden; */
|
|
|
+ height: 100%;
|
|
|
+ /* background: #242328; */
|
|
|
+ /* overflow: hidden; */
|
|
|
}
|
|
|
|
|
|
/*重绘滚动条样式*/
|
|
|
.scrollstyle::-webkit-scrollbar {
|
|
|
- width: 5px;
|
|
|
+ width: 5px;
|
|
|
}
|
|
|
|
|
|
.ivu-drawer-body::-webkit-scrollbar-track {
|
|
|
- display: none;
|
|
|
+ display: none;
|
|
|
}
|
|
|
|
|
|
.scrollstyle::-webkit-scrollbar-thumb {
|
|
|
- border-radius: 10px;
|
|
|
- background: #94998a;
|
|
|
+ border-radius: 10px;
|
|
|
+ background: #94998a;
|
|
|
}
|
|
|
|
|
|
.scrollstyle::-webkit-scrollbar-button {
|
|
|
- display: none;
|
|
|
+ display: none;
|
|
|
}
|
|
|
</style>
|
|
|
|