|
@@ -1,25 +1,25 @@
|
|
|
<template>
|
|
|
<div class="base-school-select">
|
|
|
- <div v-if="!user.schools.length">暂未加入学校</div>
|
|
|
- <Dropdown @on-click="onSchoolSelect" v-else>
|
|
|
- <img class="school-logo" :src="curSchool.logo || defaultLogo" />
|
|
|
- <a href="javascript:void(0)" :class="['base-user-post', user.schools.length === 1 ? 'single-school' : '']">
|
|
|
- {{ curSchool.name }}
|
|
|
- <Icon type="ios-arrow-down"></Icon>
|
|
|
- </a>
|
|
|
- <DropdownMenu slot="list">
|
|
|
- <div v-for="(item,index) in user.schools" :key="index">
|
|
|
- <DropdownItem :name="index">
|
|
|
- <div class="school-item">
|
|
|
- <img :src="item.logo || defaultLogo" alt="">
|
|
|
- <span>{{ item.name }}</span>
|
|
|
- </div>
|
|
|
- </DropdownItem>
|
|
|
- </div>
|
|
|
-
|
|
|
- </DropdownMenu>
|
|
|
- </Dropdown>
|
|
|
- </div>
|
|
|
+ <div v-if="!user.schools.length">暂未加入学校</div>
|
|
|
+ <Dropdown @on-click="onSchoolSelect" v-else>
|
|
|
+ <img class="school-logo" :src="curSchool.logo || defaultLogo" />
|
|
|
+ <a href="javascript:void(0)" :class="['base-user-post', user.schools.length === 1 ? 'single-school' : '']">
|
|
|
+ {{ curSchool.name }}
|
|
|
+ <Icon type="ios-arrow-down"></Icon>
|
|
|
+ </a>
|
|
|
+ <DropdownMenu slot="list">
|
|
|
+ <div v-for="(item,index) in user.schools" :key="index">
|
|
|
+ <DropdownItem :name="index">
|
|
|
+ <div class="school-item">
|
|
|
+ <img :src="item.logo || defaultLogo" alt="">
|
|
|
+ <span>{{ item.name }}</span>
|
|
|
+ </div>
|
|
|
+ </DropdownItem>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ </DropdownMenu>
|
|
|
+ </Dropdown>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
</template>
|
|
|
|
|
@@ -28,11 +28,11 @@
|
|
|
data() {
|
|
|
return {
|
|
|
curSchool: {
|
|
|
- logo:''
|
|
|
+ logo: ''
|
|
|
},
|
|
|
- defaultLogo:'',
|
|
|
- user:{
|
|
|
- schools:[]
|
|
|
+ defaultLogo: '',
|
|
|
+ user: {
|
|
|
+ schools: []
|
|
|
}
|
|
|
}
|
|
|
},
|
|
@@ -40,27 +40,34 @@
|
|
|
this.defaultLogo = require('@/assets/icon/default_school.png')
|
|
|
// 获取本地存储中的 用户信息
|
|
|
let user = JSON.parse(decodeURIComponent(localStorage.user_profile, "utf-8"));
|
|
|
- console.log(user)
|
|
|
- if(user.schools){
|
|
|
+ let school = JSON.parse(decodeURIComponent(localStorage.school_profile, "utf-8"));
|
|
|
+
|
|
|
+ let schools = user.schools.filter(i => i.status === 'join')
|
|
|
+ this.user.schools = schools
|
|
|
+ // 如果本地存储已经有保存学校信息 则刷新后会直接读取之前的学校信息
|
|
|
+ if (school) {
|
|
|
+ this.curSchool = schools.filter(i => i.schoolId === school.school_base.id)[0]
|
|
|
+ this.$store.commit('setSchoolCode', this.curSchool.schoolId)
|
|
|
+ } else if (user.schools) {
|
|
|
// 拿到用户管理的schools 必须是已加入的学校
|
|
|
- let schools = user.schools.filter(i => i.status === 'join')
|
|
|
- if(schools.length){
|
|
|
- this.user.schools = schools
|
|
|
+ if (schools.length) {
|
|
|
this.curSchool = user.defaultschool ? schools.filter(i => i.schoolId === user.defaultschool)[0] : schools[0]
|
|
|
this.$store.commit('setSchoolCode', this.curSchool.schoolId)
|
|
|
}
|
|
|
- }else{
|
|
|
+ } else {
|
|
|
this.$Message.warning('用户暂无学校列表数据')
|
|
|
}
|
|
|
},
|
|
|
methods: {
|
|
|
- async onSchoolSelect(val){
|
|
|
- this.$EventBus.$emit('onGlobalLoading',true)
|
|
|
+ async onSchoolSelect(val) {
|
|
|
+ this.$EventBus.$emit('onGlobalLoading', true)
|
|
|
this.curSchool = this.user.schools[val]
|
|
|
let schoolCode = this.user.schools[val].schoolId
|
|
|
let schoolInfo = await this.getTeacherSchoolInfo(schoolCode)
|
|
|
- this.$store.commit('setSchoolCode',schoolCode)
|
|
|
- this.$store.commit('schoolBaseInfo/setSchoolInfo',{ period:[] })
|
|
|
+ this.$store.commit('setSchoolCode', schoolCode)
|
|
|
+ this.$store.commit('schoolBaseInfo/setSchoolInfo', {
|
|
|
+ period: []
|
|
|
+ })
|
|
|
this.$store.commit('schoolBaseInfo/setClassroomList', undefined)
|
|
|
this.$store.dispatch('user/setSchoolCode', schoolCode)
|
|
|
this.$store.dispatch('user/setSchoolProfile', schoolInfo)
|
|
@@ -68,16 +75,16 @@
|
|
|
console.log(this.$store.state)
|
|
|
console.log(JSON.parse(decodeURIComponent(localStorage.school_profile, "utf-8")))
|
|
|
setTimeout(() => {
|
|
|
- this.$EventBus.$emit('onGlobalLoading',false)
|
|
|
- },500)
|
|
|
+ this.$EventBus.$emit('onGlobalLoading', false)
|
|
|
+ }, 500)
|
|
|
this.$router.push({
|
|
|
- name:'home'
|
|
|
+ name: 'home'
|
|
|
})
|
|
|
},
|
|
|
-
|
|
|
+
|
|
|
/* 获取老师所在学校的信息 */
|
|
|
getTeacherSchoolInfo(code) {
|
|
|
- return new Promise((r,j) => {
|
|
|
+ return new Promise((r, j) => {
|
|
|
this.$api.schoolSetting.getTeacherSchoolInfo({
|
|
|
id_token: localStorage.getItem('id_token'),
|
|
|
school_code: code
|
|
@@ -94,21 +101,22 @@
|
|
|
})
|
|
|
},
|
|
|
},
|
|
|
-
|
|
|
+
|
|
|
mounted() {
|
|
|
- this.$EventBus.$on('onChangeSchool',params => {
|
|
|
- if(params.schoolCode !== this.curSchool.schoolId){
|
|
|
+ this.$EventBus.$on('onChangeSchool', params => {
|
|
|
+ if (params.schoolCode !== this.curSchool.schoolId) {
|
|
|
console.log('检测到切换学校')
|
|
|
console.log(params)
|
|
|
this.user = params.user
|
|
|
- this.curSchool = params.user.defaultschool ? params.user.schools.filter(i => i.schoolId === params.user.defaultschool)[0] : params.user.schools[0]
|
|
|
+ this.curSchool = params.user.defaultschool ? params.user.schools.filter(i => i.schoolId === params.user.defaultschool)[
|
|
|
+ 0] : params.user.schools[0]
|
|
|
this.onSchoolSelect(params.user.schools.map(i => i.schoolId).indexOf(params.schoolCode))
|
|
|
}
|
|
|
})
|
|
|
},
|
|
|
|
|
|
computed: {
|
|
|
-
|
|
|
+
|
|
|
}
|
|
|
}
|
|
|
</script>
|
|
@@ -116,57 +124,57 @@
|
|
|
<style lang="less">
|
|
|
.base-school-select {
|
|
|
font-family: '微軟正黑體', 'Heiti TC' !important;
|
|
|
-
|
|
|
- .ivu-dropdown{
|
|
|
-
|
|
|
- .ivu-dropdown-item:hover{
|
|
|
+
|
|
|
+ .ivu-dropdown {
|
|
|
+
|
|
|
+ .ivu-dropdown-item:hover {
|
|
|
background: #83d7ff;
|
|
|
}
|
|
|
-
|
|
|
- a{
|
|
|
- color:var(--primary-textColor) !important;
|
|
|
-
|
|
|
- &:hover{
|
|
|
- color:var(--primary-textColor) !important;
|
|
|
+
|
|
|
+ a {
|
|
|
+ color: var(--primary-textColor) !important;
|
|
|
+
|
|
|
+ &:hover {
|
|
|
+ color: var(--primary-textColor) !important;
|
|
|
}
|
|
|
-
|
|
|
- .ivu-icon{
|
|
|
+
|
|
|
+ .ivu-icon {
|
|
|
display: none;
|
|
|
}
|
|
|
-
|
|
|
- &::after{
|
|
|
+
|
|
|
+ &::after {
|
|
|
content: '';
|
|
|
display: inline-block;
|
|
|
width: 0;
|
|
|
height: 0;
|
|
|
- border-right:solid 8px transparent;
|
|
|
- border-left:solid 8px transparent ;
|
|
|
- border-top:solid 8px #d0d0d0;
|
|
|
+ border-right: solid 8px transparent;
|
|
|
+ border-left: solid 8px transparent;
|
|
|
+ border-top: solid 8px #d0d0d0;
|
|
|
margin-left: 8px;
|
|
|
margin-bottom: 3px;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
- .single-school{
|
|
|
- &::after{
|
|
|
+
|
|
|
+ .single-school {
|
|
|
+ &::after {
|
|
|
display: none !important;
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
- .school-logo{
|
|
|
+
|
|
|
+ .school-logo {
|
|
|
width: 30px;
|
|
|
border-radius: 50%;
|
|
|
margin-right: 10px;
|
|
|
margin-bottom: 5px;
|
|
|
vertical-align: middle;
|
|
|
}
|
|
|
-
|
|
|
- .school-item{
|
|
|
+
|
|
|
+ .school-item {
|
|
|
display: flex;
|
|
|
align-items: center;
|
|
|
-
|
|
|
- img{
|
|
|
+
|
|
|
+ img {
|
|
|
width: 30px;
|
|
|
margin-right: 15px;
|
|
|
}
|