ソースを参照

update: 学年期切换调整 && 扫码加入课程审核提示

OnePsycho 1 年間 前
コミット
39937de955

+ 1 - 0
TEAMModelOS/ClientApp/public/lang/en-US.js

@@ -7118,6 +7118,7 @@ const LANG_EN_US = {
         second: ' second(s)',
         day: 'day(s)',
         week: 'week(s)',
+        year: ' ',
         diffTip1: ' month(s) ago',
         diffTip2: ' week(s) ago',
         diffTip3: ' day(s) ago',

+ 1 - 0
TEAMModelOS/ClientApp/public/lang/zh-CN.js

@@ -7105,6 +7105,7 @@ const LANG_ZH_CN = {
         second: '秒',
         day: '天',
         week: '周',
+        year: '年',
         diffTip1: '月前',
         diffTip2: '周前',
         diffTip3: '天前',

+ 1 - 0
TEAMModelOS/ClientApp/public/lang/zh-TW.js

@@ -7105,6 +7105,7 @@ const LANG_ZH_TW = {
         second: '秒',
         day: '天',
         week: '週',
+        year: '年',
         diffTip1: '月前',
         diffTip2: '週前',
         diffTip3: '天前',

+ 1 - 1
TEAMModelOS/ClientApp/src/common/BaseLayout.less

@@ -78,7 +78,7 @@
 
 .school-wrap {
     position: absolute;
-    left: 50%;
+    left: 55%;
     top: 50%;
     transform: translate(-50%, -50%);
     color: #fff !important;

+ 389 - 304
TEAMModelOS/ClientApp/src/common/BaseSelectSchool.vue

@@ -1,329 +1,414 @@
 <template>
-  <div class="base-school-select">
-    <div v-if="!joinSchools || !joinSchools.length">{{ noJoinSchoolContent }}</div>
-    <div v-else>
-      <!-- 学校切换 -->
-      <Dropdown class="school-select" transfer @on-click="onSchoolSelect" trigger="click">
-        <img class="school-logo" :src="curSchool.picture" style="width: 25px;" />
-        <a href="javascript:void(0)" :class="['base-user-post', areaSchs && areaSchs.length === 1 ? 'single-school' : '']">
-          {{ curSchool.name }}
-          <Icon type="ios-arrow-down"></Icon>
-        </a>
-        <DropdownMenu slot="list">
-          <div v-for="(item,index) in areaSchs" :key="index">
-            <DropdownItem :name="index">
-              <div class="school-item">
-                <img class="school-item-img" :src="item.picture || defaultLogo" alt="" style="border-radius: 50%;">
-                <span>{{ item.name }}</span>
-              </div>
-            </DropdownItem>
-          </div>
-        </DropdownMenu>
-      </Dropdown>
-      <!-- 学段切换 -->
-      <Dropdown @on-click="onPeriodSelect" transfer v-show="periods.length > 1" style="margin-left: 20px;">
-        <!-- <a href="javascript:void(0)" :class="['base-user-post', periods && periods.length === 1 ? 'single-school' : '']"> -->
-        <!-- ( {{ curPeriod.name }} )
-					<Icon type="ios-arrow-down"></Icon> -->
-        <span class="period-select">
-          &nbsp;
-          {{ curPeriod.name }}
-          <Icon type="md-arrow-dropdown" />
-        </span>
-        <!-- </a> -->
-        <!-- <span class="period-select">{{ curPeriod.name }}</span> -->
-        <DropdownMenu slot="list">
-          <div v-for="(item,index) in periods" :key="index">
-            <DropdownItem :name="index">
-              <div class="school-item">
-                <span>{{ item.name }}</span>
-              </div>
-            </DropdownItem>
-          </div>
-        </DropdownMenu>
-      </Dropdown>
-    </div>
-  </div>
+	<div class="base-school-select">
+		<div v-if="!joinSchools || !joinSchools.length">{{ noJoinSchoolContent }}</div>
+		<div v-else>
+			<!-- 学校切换 -->
+			<Dropdown class="school-select" transfer @on-click="onSchoolSelect" trigger="click">
+				<img class="school-logo" :src="curSchool.picture" style="width: 25px" />
+				<a href="javascript:void(0)" :class="['base-user-post', areaSchs && areaSchs.length === 1 ? 'single-school' : '']">
+					{{ curSchool.name }}
+					<Icon type="ios-arrow-down"></Icon>
+				</a>
+				<DropdownMenu slot="list">
+					<div v-for="(item, index) in areaSchs" :key="index">
+						<DropdownItem :name="index">
+							<div class="school-item">
+								<img class="school-item-img" :src="item.picture || defaultLogo" alt="" style="border-radius: 50%" />
+								<span>{{ item.name }}</span>
+							</div>
+						</DropdownItem>
+					</div>
+				</DropdownMenu>
+			</Dropdown>
+			<!-- 学段切换 -->
+			<Dropdown @on-click="onPeriodSelect" transfer style="margin-left: 20px">
+				<span class="period-select">
+					&nbsp;
+					{{ curPeriod.name }}
+					<Icon type="md-arrow-dropdown" />
+				</span>
+				<DropdownMenu slot="list">
+					<div v-for="(item, index) in periods" :key="index">
+						<DropdownItem :name="index">
+							<div class="school-item">
+								<span>{{ item.name }}</span>
+							</div>
+						</DropdownItem>
+					</div>
+				</DropdownMenu>
+			</Dropdown>
+      <!-- 学期切换 -->
+			<Dropdown @on-click="onSemesterSelect" transfer  style="margin-left: 20px" v-if="curSemester">
+				<span class="period-select">
+					&nbsp;
+					{{ curSemester.year + $t('unit.year') + curSemester.name }}
+					<Icon type="md-arrow-dropdown" />
+				</span>
+				<DropdownMenu slot="list">
+					<div v-for="(item, index) in semesterList" :key="index">
+						<DropdownItem :name="index">
+							<div class="school-item">
+								<span :style="{ color: yearColorArr[getYearStatus(item.year)], fontWeight: getYearStatus(item.year) === 1 ? '600' : '400' }">{{ item.year + $t('unit.year') + item.name }}</span>
+							</div>
+						</DropdownItem>
+					</div>
+				</DropdownMenu>
+			</Dropdown>
+      <span style="margin-left: 10px;cursor: pointer;" @click="goNowSemester()" v-if="!isNowSemester" title="回到当前学期">
+        <Icon type="md-sync" color="#16b1f3"/>
+      </span>
+		</div>
+	</div>
 </template>
 
 <script>
-import { mapGetters } from 'vuex'
-import User from '@/service/User.js'
-export default {
-  inject: ['reload'],
-  data() {
-    return {
-      curSchool: {
-        logo: ''
+	import { mapGetters } from "vuex";
+	import User from "@/service/User.js";
+	export default {
+		inject: ["reload"],
+		data() {
+			return {
+        yearColorArr:['#969696','#16b1f3','#19be6b'],
+				curSchool: {
+					logo: ""
+				},
+				defaultLogo: "",
+				user: {
+					schools: []
+				},
+				joinSchools: [],
+				areaSchs: [],
+				areaList: [],
+				periods: [],
+        curYear:new Date().getFullYear(),
+				curPeriod: {
+					name: ""
+				},
+        curSemester:null,
+        nowSemesterIndex: -1
+			};
+		},
+		created() {
+			console.log("BaseSelectSchool初始化");
+			console.log(this.userProfile);
+			this.defaultLogo = require("@/assets/icon/default_school.png");
+			// 获取本地存储中的 用户信息
+			let user = this.$store.state.user.userProfile || JSON.parse(decodeURIComponent(localStorage.user_profile, "utf-8"));
+			let schoolProfile = localStorage.school_profile ? JSON.parse(decodeURIComponent(localStorage.school_profile, "utf-8")) : undefined;
+			let localPeriodInfo = localStorage.curPeriod ? JSON.parse(localStorage.curPeriod) : null;
+			let localSemester = localStorage.curSemester ? JSON.parse(localStorage.curSemester) : null;
+			this.user.schools = user.schools;
+			let joinSchools = user.schools && user.schools.length ? user.schools.filter((i) => i.status === "join") : null;
+			console.log(joinSchools);
+			/* 如果加入的学校都没有归属区 则需要补充‘其他学校’区 */
+			if (joinSchools && joinSchools.length) {
+				joinSchools.forEach((i) => {
+					if (!i.area) {
+						i.area = {
+							name: this.$t("ability.otherSch"),
+							access: 0
+						};
+					}
+				});
+			}
+			this.joinSchools = joinSchools;
+			// 如果本地存储已经有保存学校信息 则刷新后会直接读取之前的学校信息
+			if (joinSchools && joinSchools.length) {
+				if (schoolProfile) {
+					this.curSchool = joinSchools.find((i) => i.schoolId === schoolProfile.school_base.id);
+				} else {
+					this.curSchool = user.defaultschool ? joinSchools.find((i) => i.schoolId === user.defaultschool) : joinSchools[0];
+				}
+				this.$store.commit("setSchoolCode", this.curSchool.schoolId);
+				this.areaList = [...new Set(this.joinSchools.map((i) => i.area).map((j) => j.name))];
+				this.areaSchs = this.joinSchools.filter((i) => i.area.name === this.curSchool.area.name);
+				this.periods = this.$store.state.user.schoolProfile.school_base.period;
+				this.periods && (this.curPeriod = this.periods[localPeriodInfo && localPeriodInfo.periodIndex ? localPeriodInfo.periodIndex : 0]);
+				if (!localPeriodInfo) {
+					this.curPeriod.periodIndex = 0;
+					// 保存Vuex
+					this.$store.commit("user/setCurPeriod", this.curPeriod);
+					// 保存Stroage
+          this.curSemester = this.getNowSemester()
+          console.error('默认设置学年期',this.curSemester)
+					localStorage.setItem("curPeriod", JSON.stringify(this.curPeriod));
+          this.$store.commit("user/setCurSemester", this.curSemester);
+				} else {
+					this.$store.commit("user/setCurPeriod", localPeriodInfo);
+          if(localSemester){
+            this.curSemester = localSemester
+            console.error('读取缓存学年期',localSemester)
+            this.$store.commit("user/setCurSemester", localSemester);
+          }
+				}
+        this.refreshNowSemesterIndex()
+
+			} else {
+				this.$Message.warning(this.$t("utils.noShoolTip"));
+			}
+			console.log("当前区域学校 > ", this.areaSchs);
+			console.log("当前学校 > ", this.curSchool);
+			console.log("当前学段 > ", this.curPeriod);
+			console.log("vuex - school ====== ", this.$store.state.user.schoolProfile.school_base);
+			/* 判断学校基础信息是否初始化 true-则需要进入基础设置弹窗 false-不弹窗 */
+			let isInit = this.$store.state.user.schoolProfile.school_base.isinit;
+			if (isInit && this.$access.can("admin.*|schoolSetting-read|schoolSetting-upd")) {
+				this.$router.push({
+					name: "system",
+					params: {
+						from: "init"
+					}
+				});
+			}
+			this.$EventBus.$emit("homePageInit");
+		},
+		methods: {
+			async onSchoolSelect(val) {
+				/* 如果没有加入的学校或者加入的学校都没有归属区 */
+				if (this.joinSchools.length) {
+					this.joinSchools.forEach((i) => {
+						if (!i.area) {
+							i.area = {
+								name: this.$t("ability.otherSch")
+							};
+						}
+					});
+				}
+				let curAreaName = sessionStorage.getItem("areaName") || this.areaList[0];
+				this.joinSchools = this.user.schools.filter((i) => i.status === "join");
+				this.areaSchs = this.joinSchools.filter((i) => i.area.name === curAreaName);
+				this.curSchool = this.areaSchs[val];
+				let schoolCode = this.areaSchs[val].schoolId;
+				this.changeCurSchool(schoolCode);
+			},
+
+			/* 学段选择 */
+			onPeriodSelect(val) {
+				this.curPeriod = this.periods[val];
+				// 保存Vuex
+				this.$store.commit("user/setCurPeriod", this.curPeriod);
+				// 保存当前学段的下标 提供给部分模块的select使用
+				this.curPeriod.periodIndex = val;
+        // 默认切换到当前学段下的当前学期
+        this.curSemester = this.getNowSemester();
+        this.$store.commit("user/setCurSemester", this.curSemester);
+        this.refreshNowSemesterIndex()
+			},
+      /* 学期选择 */
+      onSemesterSelect(val){
+        this.curSemester = this.semesterList[val];
+        this.$store.commit("user/setCurSemester", this.curSemester);
+        console.error('xxxxxxxxxxxxxxxxxxx',this.$tools.getStTimeByYearAndSemester(this.curSemester.year,this.curSemester.index))
       },
-      defaultLogo: '',
-      user: {
-        schools: []
+      refreshNowSemesterIndex(){
+        let nowSemester = this.getNowSemester()
+        this.nowSemesterIndex = this.semesterList.findIndex(i => i.year === nowSemester.year && i.id === nowSemester.id)
       },
-      joinSchools: [],
-      areaSchs: [],
-      areaList: [],
-      periods: [],
-      curPeriod: {
-        name: ''
-      }
-    }
-  },
-  created() {
-    console.log('BaseSelectSchool初始化')
-    console.log(this.userProfile)
-    this.defaultLogo = require('@/assets/icon/default_school.png')
-    // 获取本地存储中的 用户信息
-    let user = this.$store.state.user.userProfile || JSON.parse(decodeURIComponent(localStorage.user_profile, "utf-8"));
-    let schoolProfile = localStorage.school_profile ? JSON.parse(decodeURIComponent(localStorage.school_profile,
-      "utf-8")) : undefined;
-    let localPeriodInfo = localStorage.curPeriod ? JSON.parse(localStorage.curPeriod) : null
-    this.user.schools = user.schools
-    let joinSchools = user.schools && user.schools.length ? user.schools.filter(i => i.status === 'join') : null
-    console.log(joinSchools);
-    /* 如果加入的学校都没有归属区 则需要补充‘其他学校’区 */
-    if (joinSchools && joinSchools.length) {
-      joinSchools.forEach(i => {
-        if (!i.area) {
-          i.area = {
-            name: this.$t('ability.otherSch'),
-            access: 0
-          }
-        }
-      })
-    }
-    this.joinSchools = joinSchools
-    // 如果本地存储已经有保存学校信息 则刷新后会直接读取之前的学校信息
-    if (joinSchools && joinSchools.length) {
-      if (schoolProfile) {
-        this.curSchool = joinSchools.find(i => i.schoolId === schoolProfile.school_base.id)
-      } else {
-        this.curSchool = user.defaultschool ? joinSchools.find(i => i.schoolId === user.defaultschool) : joinSchools[0]
-      }
-      this.$store.commit('setSchoolCode', this.curSchool.schoolId)
-      this.areaList = [...new Set(this.joinSchools.map(i => i.area).map(j => j.name))]
-      this.areaSchs = this.joinSchools.filter(i => i.area.name === this.curSchool.area.name)
-      this.periods = this.$store.state.user.schoolProfile.school_base.period
-      this.periods && (this.curPeriod = this.periods[localPeriodInfo && localPeriodInfo.periodIndex ? localPeriodInfo.periodIndex : 0])
-      if (!localPeriodInfo) {
-        this.curPeriod.periodIndex = 0
-        // 保存Vuex
-        this.$store.commit('user/setCurPeriod', this.curPeriod)
-        // 保存Stroage
-        localStorage.setItem('curPeriod', JSON.stringify(this.curPeriod))
-      } else {
-        this.$store.commit('user/setCurPeriod', localPeriodInfo)
-      }
-    } else {
-      this.$Message.warning(this.$t('utils.noShoolTip'))
-    }
-    console.log('当前区域学校 > ', this.areaSchs)
-    console.log('当前学校 > ', this.curSchool)
-    console.log('当前学段 > ', this.curPeriod)
-    console.log('vuex - school ====== ', this.$store.state.user.schoolProfile.school_base)
-    /* 判断学校基础信息是否初始化 true-则需要进入基础设置弹窗 false-不弹窗 */
-    let isInit = this.$store.state.user.schoolProfile.school_base.isinit
-    if (isInit && this.$access.can('admin.*|schoolSetting-read|schoolSetting-upd')) {
-      this.$router.push({
-        name: 'system',
-        params: {
-          from: 'init'
+      /* 切换到当前学期 */
+      goNowSemester(){
+        this.onSemesterSelect(this.nowSemesterIndex)
+      },
+			/* 学校切换后针对当前学校CODE进行操作 */
+			changeCurSchool(schoolCode, routerInfo) {
+				// this.$EventBus.$emit('onChangeSchool', {
+				// 	schoolCode: schoolCode
+				// })
+				this.$EventBus.$emit("onGlobalLoading", true);
+				// 更新当前school_code
+				this.$store.dispatch("user/setSchoolCode", schoolCode);
+				// 更新当前school_profile以及access
+				this.$store.dispatch("user/checkSchoolProfile").then((res) => {
+					if (res) {
+						this.$User.freshLogin();
+					}
+					console.log("切换学校了", this.curSchool, schoolCode);
+					console.log("当前学校的学段信息", this.$store.state.user.schoolProfile.school_base.period);
+					// 将教师列表信息清空
+					this.$store.commit("user/setTeachers", undefined);
+					localStorage.removeItem("curSemester");
+					this.periods = this.$store.state.user.schoolProfile.school_base.period;
+					let vuexPeriod = this.$store.state.user.curPeriod;
+					let preSchoolCode = localStorage.getItem("cur_schoolCode");
+					// 判断之前已经选择了学段 并且从区级切换回来的是同一学校 则去读取存储的学段数据 否则默认读取第一个学段信息
+					if (vuexPeriod && preSchoolCode && preSchoolCode === schoolCode) {
+						this.onPeriodSelect(vuexPeriod.periodIndex);
+					} else {
+						this.onPeriodSelect(0);
+					}
+					localStorage.removeItem("cacheSchoolFiles");
+					localStorage.removeItem("bankFilterConds");
+					localStorage.setItem("cur_schoolCode", schoolCode);
+					this.$emit("onSchoolChange", schoolCode);
+					this.$EventBus.$emit("onSchoolChange");
+					setTimeout(() => {
+						this.$EventBus.$emit("onGlobalLoading", false);
+					}, 1500);
+					/* 判断学校基础信息是否初始化 */
+					let isInit = this.$store.state.user.schoolProfile.school_base.isinit;
+					// 如果学校还没有初始化 则默认跳转到 基础设置页面
+					if (isInit && this.$access.can("admin.*|schoolSetting-read|schoolSetting-upd")) {
+						routerInfo = { name: "system" };
+					}
+					routerInfo = routerInfo || { name: "home" };
+					this.$router.push(routerInfo);
+					if (routerInfo.name === this.$route.name) {
+						this.reload();
+					}
+				});
+			},
+      getNowSemester(){
+        let semesterRange = this.$tools.getSemesterTimeRange();
+        return {
+          year:semesterRange.year,
+          name: semesterRange.name,
+          index:semesterRange.semesterIndex,
+          id:semesterRange.semesterId
         }
-      })
-    }
-    this.$EventBus.$emit('homePageInit')
-  },
-  methods: {
-    async onSchoolSelect(val) {
-      /* 如果没有加入的学校或者加入的学校都没有归属区 */
-      if (this.joinSchools.length) {
-        this.joinSchools.forEach(i => {
-          if (!i.area) {
-            i.area = {
-              name: this.$t('ability.otherSch')
-            }
-          }
-        })
-      }
-      let curAreaName = sessionStorage.getItem('areaName') || this.areaList[0]
-      this.joinSchools = this.user.schools.filter(i => i.status === 'join')
-      this.areaSchs = this.joinSchools.filter(i => i.area.name === curAreaName)
-      // this.$EventBus.$emit('onGlobalLoading', true)
-      this.curSchool = this.areaSchs[val]
-      let schoolCode = this.areaSchs[val].schoolId
-      this.changeCurSchool(schoolCode)
-    },
+      },
+		},
+		mounted() {
+			// 解绑之前的事件 防止多次触发
+			// this.$EventBus.$off('onChangeSchool')
+			// this.$EventBus.$on('onChangeSchool', params => {
+			// 	if (this.curSchool && params.schoolCode !== this.curSchool.schoolId && params.user) {
+			// 		console.log('检测到切换学校')
+			// 		console.log(params)
+			// 		this.user = params.user
+			// 		let joinSchools = params.user.schools.filter(i => i.status === 'join')
+			// 		this.onSchoolSelect(params.isFirst ? 0 : joinSchools.map(j => j.schoolId).indexOf(params.schoolCode))
+			// 	}
+			// })
 
-    /* 学段选择 */
-    onPeriodSelect(val) {
-      this.curPeriod = this.periods[val]
-      // 保存当前学段的下标 提供给部分模块的select使用
-      this.curPeriod.periodIndex = val
-      // 保存Vuex
-      this.$store.commit('user/setCurPeriod', this.curPeriod)
-      // 保存Stroage
-      localStorage.setItem('curPeriod', JSON.stringify(this.curPeriod))
-    },
+			// 监听区的切换
+			this.$EventBus.$off("onChangeArea");
+			this.$EventBus.$on("onChangeArea", (params) => {
+				console.log("区域切换", params);
+				console.log("区域切换", this.joinSchools);
+				if (this.joinSchools && this.joinSchools.length) {
+					this.areaSchs = this.joinSchools.filter((i) => i.area.name === params.areaName);
+					console.log(this.areaSchs);
+					this.curSchool = params.schoolCode ? this.areaSchs.find((i) => i.schoolId === params.schoolCode) : this.areaSchs[0];
+					let schoolCode = this.curSchool.schoolId;
+					this.changeCurSchool(schoolCode, params.routerInfo);
+				}
+			});
+		},
+		computed: {
+			noJoinSchoolContent() {
+				let inviteSchools = this.user.schools.filter((i) => i.status === "invite");
+				let requestSchools = this.user.schools.filter((i) => i.status === "request");
+				// return requestSchools.length ? `${requestSchools[0].name}(${this.$t('settings.status3')})` : (inviteSchools.length ? `${inviteSchools[0].name}(${this.$t('settings.status2')})` : this.$t('utils.noJoinSchool'))
+				return requestSchools.length ? `${requestSchools[0].name}(${this.$t("settings.status3")})` : inviteSchools.length ? `${inviteSchools[0].name}(${this.$t("settings.status2")})` : "";
+			},
+      
+      /* 获取学期列表数据 */
+      semesterList(){
+        let curYear = new Date().getFullYear()
+        let semesterArr = this.curPeriod.semesters
+        let gradeCount = this.curPeriod.grades.length
+        let listYearCount = gradeCount + 1 // 可选年份范围是当前学段下年级数量 再往后推一年(可能会查看未来的排课表)
+				let oldYear = curYear - gradeCount
+				let arr = []
+				for (let i = 0; i <= listYearCount; i ++){
+          for(let j = 0; j < semesterArr.length; j++){
+            arr.push({
+              year:oldYear + i,
+              name: semesterArr[j].name,
+              index:j,
+              id:semesterArr[j].id
+            })
+          }
+				}
+        return arr
+      },
 
-    /* 学校切换后针对当前学校CODE进行操作 */
-    changeCurSchool(schoolCode, routerInfo) {
-      // this.$EventBus.$emit('onChangeSchool', {
-      // 	schoolCode: schoolCode
-      // })
-      this.$EventBus.$emit('onGlobalLoading', true)
-      // 更新当前school_code
-      this.$store.dispatch('user/setSchoolCode', schoolCode)
-      // 更新当前school_profile以及access
-      this.$store.dispatch('user/checkSchoolProfile').then(res => {
-        if (res) {
-          this.$User.freshLogin()
-        }
-        console.log('切换学校了', this.curSchool, schoolCode)
-        console.log('当前学校的学段信息', this.$store.state.user.schoolProfile.school_base.period)
-        // 将教师列表信息清空
-        this.$store.commit('user/setTeachers', undefined)
-        this.periods = this.$store.state.user.schoolProfile.school_base.period
-        let vuexPeriod = this.$store.state.user.curPeriod
-        let preSchoolCode = localStorage.getItem('cur_schoolCode')
-        // 判断之前已经选择了学段 并且从区级切换回来的是同一学校 则去读取存储的学段数据 否则默认读取第一个学段信息
-        if (vuexPeriod && preSchoolCode && preSchoolCode === schoolCode) {
-          this.onPeriodSelect(vuexPeriod.periodIndex)
-        } else {
-          this.onPeriodSelect(0)
+      /* 判断过去、现在和未来 */
+      getYearStatus(){
+        return year => {
+          return year === this.curYear ? 1 : year < this.curYear ? 0 : 2
         }
-        localStorage.removeItem('cacheSchoolFiles')
-        localStorage.removeItem('bankFilterConds')
-        localStorage.setItem('cur_schoolCode', schoolCode)
-        this.$emit('onSchoolChange', schoolCode)
-        this.$EventBus.$emit('onSchoolChange')
-        setTimeout(() => {
-          this.$EventBus.$emit('onGlobalLoading', false)
-        }, 1500)
-        /* 判断学校基础信息是否初始化 */
-        let isInit = this.$store.state.user.schoolProfile.school_base.isinit
-        // 如果学校还没有初始化 则默认跳转到 基础设置页面
-        if (isInit && this.$access.can('admin.*|schoolSetting-read|schoolSetting-upd')) {
-          routerInfo = { name: 'system' }
-        }
-        routerInfo = routerInfo || { name: 'home' }
-        this.$router.push(routerInfo)
-        if (routerInfo.name === this.$route.name) {
-          this.reload()
-        }
-      });
-    }
-  },
-  mounted() {
-    // 解绑之前的事件 防止多次触发
-    // this.$EventBus.$off('onChangeSchool')
-    // this.$EventBus.$on('onChangeSchool', params => {
-    // 	if (this.curSchool && params.schoolCode !== this.curSchool.schoolId && params.user) {
-    // 		console.log('检测到切换学校')
-    // 		console.log(params)
-    // 		this.user = params.user
-    // 		let joinSchools = params.user.schools.filter(i => i.status === 'join')
-    // 		this.onSchoolSelect(params.isFirst ? 0 : joinSchools.map(j => j.schoolId).indexOf(params.schoolCode))
-    // 	}
-    // })
+      },
 
-    // 监听区的切换
-    this.$EventBus.$off('onChangeArea')
-    this.$EventBus.$on('onChangeArea', params => {
-      console.log('区域切换', params);
-      console.log('区域切换', this.joinSchools);
-      if (this.joinSchools && this.joinSchools.length) {
-        this.areaSchs = this.joinSchools.filter(i => i.area.name === params.areaName)
-        console.log(this.areaSchs);
-        this.curSchool = params.schoolCode ? this.areaSchs.find(i => i.schoolId === params.schoolCode) : this.areaSchs[0]
-        let schoolCode = this.curSchool.schoolId
-        this.changeCurSchool(schoolCode, params.routerInfo)
+      /* 判断是否当前学期 */
+      isNowSemester(){
+        return this.nowSemesterIndex === this.semesterList.findIndex(i => i.year === this.curSemester.year && i.id === this.curSemester.id)
       }
-    })
-  },
-
-  computed: {
-    noJoinSchoolContent() {
-      let inviteSchools = this.user.schools.filter(i => i.status === 'invite')
-      let requestSchools = this.user.schools.filter(i => i.status === 'request')
-      // return requestSchools.length ? `${requestSchools[0].name}(${this.$t('settings.status3')})` : (inviteSchools.length ? `${inviteSchools[0].name}(${this.$t('settings.status2')})` : this.$t('utils.noJoinSchool'))
-      return requestSchools.length ? `${requestSchools[0].name}(${this.$t('settings.status3')})` : (inviteSchools.length ? `${inviteSchools[0].name}(${this.$t('settings.status2')})` : '')
-    },
-  }
-}
+		}
+	};
 </script>
 
 <style lang="less">
-.base-school-select {
-  // font-family: 'NotoSerif', '微软正黑体', 'Microsoft JhengHei UI', 'Microsoft JhengHei', Sans-serif;
-  .ivu-dropdown {
-    .ivu-select-dropdown {
-      width: max-content;
-      width: -webkit-max-content;
-      left: -35%;
-    }
+	.base-school-select {
+		.ivu-dropdown {
+			.ivu-select-dropdown {
+				width: max-content;
+				width: -webkit-max-content;
+				left: -35%;
+			}
 
-    .ivu-dropdown-menu {
-      max-height: 600px;
-      overflow: auto;
-    }
+			.ivu-dropdown-menu {
+				max-height: 600px;
+				overflow: auto;
+			}
 
-    .ivu-dropdown-item:hover {
-      background: #83d7ff;
-    }
+			.ivu-dropdown-item:hover {
+				background: #83d7ff;
+			}
 
-    a {
-      color: var(--primary-textColor) !important;
+			a {
+				color: var(--primary-textColor) !important;
 
-      &:hover {
-        color: var(--primary-textColor) !important;
-      }
 
-      .ivu-icon {
-        display: none;
-      }
+				&:hover {
+					color: var(--primary-textColor) !important;
+				}
 
-      &::after {
-        content: "";
-        display: inline-block;
-        width: 0;
-        height: 0;
-        border-right: solid 6px transparent;
-        border-left: solid 6px transparent;
-        border-top: solid 6px #16b1f3;
-        margin-left: 2px;
-        margin-bottom: 3px;
-      }
-    }
-  }
+				.ivu-icon {
+					display: none;
+				}
+
+				&::after {
+					content: "";
+					display: inline-block;
+					width: 0;
+					height: 0;
+					border-right: solid 6px transparent;
+					border-left: solid 6px transparent;
+					border-top: solid 6px #16b1f3;
+					margin-left: 2px;
+					margin-bottom: 3px;
+				}
+			}
+		}
 
-  .period-select {
-    font-size: 16px;
-    background: #1cc0f3;
-    padding: 2px 5px;
-    border-radius: 5px;
-    cursor: pointer;
-  }
+		.period-select {
+			font-size: 14px;
+			background: #0287af;
+			padding: 5px;
+			border-radius: 25px;
+			cursor: pointer;
+		}
 
-  .single-school {
-    &::after {
-      display: none !important;
-    }
-  }
+		.single-school {
+			&::after {
+				display: none !important;
+			}
+		}
 
-  .school-logo {
-    width: 30px;
-    border-radius: 50%;
-    margin-right: 10px;
-    margin-bottom: 5px;
-    vertical-align: middle;
-  }
-}
-.school-item {
-  display: flex;
-  align-items: center;
-}
-.school-item-img {
-  width: 30px;
-  margin-right: 15px;
-}
+		.school-logo {
+			width: 30px;
+			border-radius: 50%;
+			margin-right: 10px;
+			margin-bottom: 5px;
+			vertical-align: middle;
+		}
+	}
+	.school-item {
+		display: flex;
+		align-items: center;
+	}
+	.school-item-img {
+		width: 30px;
+		margin-right: 15px;
+	}
 </style>

+ 1 - 0
TEAMModelOS/ClientApp/src/service/User.js

@@ -76,6 +76,7 @@ export class User {
 					localStorage.removeItem('id_token')
 					localStorage.removeItem('login_schoolCode')
 					localStorage.removeItem('curPeriod')
+					localStorage.removeItem('curSemester')
 					localStorage.removeItem('filterConditions')
 					localStorage.removeItem('cacheSchoolFiles')
 					localStorage.removeItem('cachePrivFiles')

+ 20 - 2
TEAMModelOS/ClientApp/src/store/module/user.js

@@ -1,4 +1,5 @@
 import apiTools from '@/api'
+import $tools from '@/utils/public'
 import jwtDecode from 'jwt-decode'
 import Vue from 'vue'
 import { GLOBAL } from '@/static/Global.js'
@@ -38,7 +39,8 @@ export default {
             classinfo: undefined,
             courses: undefined
         },
-        curPeriod: undefined
+        curPeriod: undefined,
+        curSemester: undefined,
     },
     getters: {
         getCurPeriod: state => {
@@ -134,8 +136,16 @@ export default {
         /* 设置当前学段 */
         setCurPeriod(state, data) {
             state.curPeriod = data
+            console.error('===========setCurPeriod========', state.curPeriod.semesters[0].name)
             localStorage.setItem('curPeriod', JSON.stringify(data))
         },
+        /* 设置当前学期 */
+        setCurSemester(state, data) {
+            if (!data) return
+            console.error('========学期数据更新=============', data.year, data.index, data.name)
+            state.curSemester = data
+            localStorage.setItem('curSemester', JSON.stringify(data))
+        },
         //更新userProfile schools
         setSchoolsInfo(state, data) {
             let schoolCode = data.school_base.id
@@ -562,7 +572,15 @@ export default {
             let index = data.school_base.period.findIndex(item => item.id === context.state.curPeriod?.id)
             if (index > -1) {
                 data.school_base.period[index].periodIndex = index
-                context.commit('setCurPeriod', data.school_base.period[index])
+                // context.commit('setCurPeriod', data.school_base.period[index])
+                // let semesterRange = $tools.getSemesterTimeRange();
+                // let curSemester = {
+                //     year: semesterRange.year,
+                //     name: semesterRange.name,
+                //     index: semesterRange.semesterIndex,
+                //     id: semesterRange.semesterId
+                // }
+                // context.commit('setCurSemester', curSemester)
             }
             // 设置学校空间
             context.commit('setSchoolSpace', data.school_base.size, { root: true })

+ 35 - 2
TEAMModelOS/ClientApp/src/utils/public.js

@@ -486,6 +486,38 @@ export default {
 		return settingSemesters[curSemeterIndex]
 	},
 
+	/* 根据年份获取某个学期的起止时间 */
+	getStTimeByYearAndSemester(year, semesterIndex) {
+		let curPeriod = store.state.user.curPeriod
+		let settingSemesters = curPeriod.semesters
+		let startMonth = settingSemesters[semesterIndex].month // 当前所在学期的开始月
+		let startDay = settingSemesters[semesterIndex].day // 当前所在学期的开始日
+		let endMonth = settingSemesters[semesterIndex === settingSemesters.length - 1 ? 0 : (semesterIndex + 1)].month
+		let endDay = settingSemesters[semesterIndex === settingSemesters.length - 1 ? 0 : (semesterIndex + 1)].day
+		let startTime = ''
+		let endTime = ''
+		// 如果当前月份小于开始月份 则代表开始时间是在去年
+		if (endMonth >= startMonth && endMonth <= 12) {
+			startTime = new Date(
+				`${year}-${startMonth > 9 ? startMonth : '0' + startMonth}-${startDay > 9 ? startDay : '0' + startDay} 00:00:00`
+			).getTime()
+			endTime = new Date(
+				`${year}-${endMonth > 9 ? endMonth : '0' + endMonth}-${endDay > 9 ? endDay : '0' + endDay} 00:00:00`
+			).getTime()
+		} else {
+			startTime = new Date(
+				`${year}-${startMonth > 9 ? startMonth : '0' + startMonth}-${startDay > 9 ? startDay : '0' + startDay} 00:00:00`
+			).getTime()
+			endTime = new Date(
+				`${year + 1}-${endMonth > 9 ? endMonth : '0' + endMonth}-${endDay > 9 ? endDay : '0' + endDay} 00:00:00`
+			).getTime()
+		}
+		return {
+			stime: startTime,
+			etime: endTime
+		}
+	},
+
 	/* 根据最新服务器时间获取当前所在学期的起止时间戳 */
 	getSemesterTimeRange() {
 		let curServerTime = localStorage.getItem('serverTime') // 服务器时间
@@ -548,13 +580,14 @@ export default {
 				st: startTime,
 				et: endTime,
 				semesterIndex: curSemeterIndex,
+				semesterId: settingSemesters[curSemeterIndex].id,
 				year: this.getCurSemeterYear(settingSemesters),
-				name: this.getCurSemeterYear(settingSemesters) + ' ' + settingSemesters[curSemeterIndex].name,
+				name: settingSemesters[curSemeterIndex].name,
 				name_with_year: this.getCurSemeterYear(settingSemesters) + ' ' + settingSemesters[curSemeterIndex].name
 			}
 		}
-
 	},
+	/* 获取当前学期所在的年份 */
 	getCurSemeterYear(semesters) {
 		const today = new Date();
 		const currentYear = today.getFullYear();

+ 1 - 1
TEAMModelOS/ClientApp/src/view/areaMgmt/AreaLayout.less

@@ -83,7 +83,7 @@
 
 .school-wrap {
     position: absolute;
-    left: 50%;
+    left: 55%;
     top: 50%;
     transform: translate(-50%, -50%);
     color: #fff !important;

+ 1 - 1
TEAMModelOS/ClientApp/src/view/art/SchoolArt.vue

@@ -387,7 +387,7 @@ export default {
           schoolLogo: store_user.schoolProfile.school_base.picture,
           periodName: store_user.curPeriod.name,
           periodId: store_user.curPeriod.id,
-          curSemester: semesterRange.name
+          curSemester: semesterRange.name_with_year
         }
       }
 

+ 30 - 19
TEAMModelOS/ClientApp/src/view/coursemgt/NewCusMgt.vue

@@ -4,12 +4,12 @@
 		<div class="header">
 			<div class="left">
 				<span>{{ $t("system.menu.cusMgt") }}</span>
-				<Select v-model="filterYear" @on-change="onFilterYear" :placeholder="$t('newCusMgt.chooseYear')" style="margin: 10px; width: 120px" v-if="originCourseList.length">
+				<!-- <Select v-model="filterYear" @on-change="onFilterYear" :placeholder="$t('newCusMgt.chooseYear')" style="margin: 10px; width: 120px" v-if="originCourseList.length">
 					<Option v-for="(item, index) in yearList" :value="index" :key="index">{{ item }} {{ $t("newCusMgt.year") }}</Option>
 				</Select>
 				<Select v-model="filterSemetsterIndex" @on-change="onFilterSemester" :placeholder="$t('newCusMgt.chooseSemester')" style="margin: 10px 0; width: 150px" v-if="originCourseList.length">
 					<Option v-for="(item, index) in curPeriod.semesters" :value="index" :key="index">{{ item.name }}</Option>
-				</Select>
+				</Select> -->
 			</div>
 			<div class="right" v-if="originCourseList.length">
 				<span class="tool-item" @click="doTaskAction('import')">
@@ -297,7 +297,7 @@
 						periodId: courseItem.period.id,
 						grant_type: "read-task",
 						courseId: courseItem.id,
-						year: +this.yearList[this.filterYear],
+						year: this.filterYear,
 						semesterId: this.curPeriod.semesters[this.filterSemetsterIndex].id
 					})
 					.then((res) => {
@@ -372,7 +372,7 @@
 					if (!i.instructorId && this.oldGroups[index].instructorId) {
 						needDeleteTasks.push({
 							school: this.$store.state.userInfo.schoolCode,
-							year: +this.yearList[this.filterYear],
+							year: this.filterYear,
 							courseId: this.curCourseItem.id,
 							semesterId: this.curPeriod.semesters[this.filterSemetsterIndex].id,
 							type: i.type,
@@ -391,7 +391,7 @@
 						grant_type: "upsert-scheduleTask",
 						periodId: this.$store.state.user.curPeriod.id,
 						courseId: this.curCourseItem.id,
-						year: +this.yearList[this.filterYear],
+						year: this.filterYear,
 						semesterId: this.curPeriod.semesters[this.filterSemetsterIndex].id,
 						datas: newGroups.map((group) => {
 							return {
@@ -613,7 +613,7 @@
 						scope: "school",
 						periodId: this.curPeriod.id,
 						grant_type: "export-task",
-						year: +this.yearList[this.filterYear],
+						year: this.filterYear,
 						semesterId: this.curPeriod.semesters[this.filterSemetsterIndex].id
 					})
 					.then((res) => {
@@ -667,22 +667,30 @@
 			}
 		},
 		computed: {
-			yearList(){
-				let semesterRange = this.$tools.getSemesterTimeRange();
-				this.filterSemetsterIndex = semesterRange.semesterIndex
-				let curYear = new Date().getFullYear()
-				let oldYear = curYear - 6
-				let arr = []
-				for (let i = 0; i <= 12; i ++){
-					arr.push(oldYear + i)
-				}
-				this.filterYear = arr.indexOf(semesterRange.year)
-				return arr
-			},
+			// yearList(){
+			// 	let semesterRange = this.$tools.getSemesterTimeRange();
+			// 	this.filterSemetsterIndex = semesterRange.semesterIndex
+			// 	let curYear = new Date().getFullYear()
+			// 	let oldYear = curYear - 6
+			// 	let arr = []
+			// 	for (let i = 0; i <= 12; i ++){
+			// 		arr.push(oldYear + i)
+			// 	}
+			// 	this.filterYear = arr.indexOf(semesterRange.year)
+			// 	return arr
+			// },
 			/* 当前学段信息 */
 			curPeriod() {
 				return this.$store.state.user.curPeriod;
 			},
+			/* 当前学段信息 */
+			curSemester() {
+				let curSemester = this.$store.state.user.curSemester
+				let localSemester = JSON.parse(localStorage.getItem('curSemester'))
+				this.filterYear = localSemester.year
+				this.filterSemetsterIndex = localSemester.index
+				return curSemester;
+			},
 			/* 是否已离校 */
 			isLeaveSch() {
 				return (tchId) => {
@@ -706,8 +714,11 @@
 		watch:{
 			deep:true,
 			immediate:true,
-			curPeriod:{
+			curSemester:{
 				handler(n,o){
+					console.error('课程触发刷新================================',n)
+					this.filterYear = n.year
+					this.filterSemetsterIndex = n.index
 					this.getAllClasses()
 				}
 			}

+ 1 - 1
TEAMModelOS/ClientApp/src/view/dashboard/Art.vue

@@ -410,7 +410,7 @@ export default {
           schoolLogo: store_user.schoolProfile.school_base.picture,
           periodName: store_user.curPeriod.name,
           periodId: store_user.curPeriod.id,
-          curSemester: semesterRange.name
+          curSemester: semesterRange.name_with_year
         }
       }
 

+ 1 - 1
TEAMModelOS/ClientApp/src/view/dashboard/Student.vue

@@ -290,7 +290,7 @@
 					schoolName: store_user.schoolProfile.school_base.name,
 					schoolLogo: store_user.schoolProfile.school_base.picture,
 					periodName: store_user.curPeriod.name,
-					curSemester: semesterRange.name
+					curSemester: semesterRange.name_with_year
 				};
 			}
 		},

+ 1 - 1
TEAMModelOS/ClientApp/src/view/dashboard/StudentAll.vue

@@ -368,7 +368,7 @@ export default {
         schoolName: store_user.schoolProfile.school_base.name,
         schoolLogo: store_user.schoolProfile.school_base.picture,
         periodName: store_user.curPeriod.name,
-        curSemester: semesterRange.name
+        curSemester: semesterRange.name_with_year
       }
     }
   }

+ 1 - 1
TEAMModelOS/ClientApp/src/view/dashboard/fiveEdu/FiveEdu.vue

@@ -697,7 +697,7 @@
 					schoolName: store_user.schoolProfile.school_base.name,
 					schoolLogo: store_user.schoolProfile.school_base.picture,
 					periodName: store_user.curPeriod.name,
-					curSemester: semesterRange.name
+					curSemester: semesterRange.name_with_year
 				};
 			},
 			/* 判断是否为测试站 */

+ 59 - 49
TEAMModelOS/ClientApp/src/view/joinclass/JoinClass.vue

@@ -85,60 +85,14 @@ export default {
             listName: '',
             cusName: '',
             cusDesc:'',
+            cusId:'',
             code: '',
             userId: '',
             userName: '',
             id_token: ''
         }
     },
-    computed: {
-        ...mapGetters({
-            curSiteConfig: 'config/getCurSiteConfig',
-        })
-    },
-    methods: {
-        joinList() {
-            this.$api.courseMgmt.qrCodeJoinList({
-                stuListNo: this.listNo,
-                tmdId: this.userId,
-                id_token: this.id_token,
-                school: undefined //加入行政班时需要传对应编码,个人名单不用传
-            }).then(
-                res => {
-                    if (!res.error) {
-                        if (res.status == 2) {//重复加入
-                            this.$Message.success(this.$t('cusMgt.join.repJoin'))
-                            this.isRep = true
-                        } else if (res.status == 1) {//参数异常
-                            this.$Message.success(this.$t('cusMgt.join.joinPErr'))
-                        } else if (res.status == 0) {//正常加入
-                            this.$Message.success(this.$t('cusMgt.join.joinOk'))
-                            this.isJoin = true
-                            sessionStorage.setItem('identity', 'student')
-                        } else if (res.status == 4) {//个人名单未开放加入
-                            this.$Message.warning(this.$t('cusMgt.join.joinLock'))
-                        }
-                    } else {
-                        this.$Message.error(this.$t('cusMgt.join.joinErr'))
-                    }
-                },
-                err => {
-                    this.$Message.error(this.$t('cusMgt.join.joinErr'))
-                }
-            )
-        },
-        toLogin() {
-            // let type = process.env.NODE_ENV //product | development
-            let accUrl = this.curSiteConfig.accAPIUrl
-            let clientId = this.curSiteConfig.clientID
-            let callback = decodeURIComponent(window.location.href)
-            let state = this.$jsFn.getBtwRandom(1000, 9999)
-            let nonce = this.$jsFn.uuid()
-            let loginUrl = `${accUrl}/oauth2/authorize?response_type=code&client_id=${clientId}&state=${state}&nonce=${nonce}&redirect_uri=${encodeURIComponent(callback)}`
-            window.location.href = loginUrl
-        }
-    },
-    created() {
+        created() {
         console.log('当前站点配置信息', this.curSiteConfig)
         this.tId = this.$route.query.tId //教师id
         this.tName = this.$route.query.tName //教师姓名
@@ -146,6 +100,7 @@ export default {
         this.listName = this.$route.query.listName //名单
         this.cusName = this.$route.query.cusName  //课程名称
         this.cusDesc = this.$route.query.cusDesc  //课程名称
+        this.cusId = this.$route.query.cusId  //课程名称
         this.code = this.$route.query.code  //登录成功返回的code
         if (!this.listNo) {
             this.$Modal.error({
@@ -189,7 +144,62 @@ export default {
         // 判断移动端还是PC端
         this.isPC = !(/Android|webOS|iPhone|iPod|BlackBerry/i.test(navigator.userAgent))
         console.log('pc', this.isPC)
-    }
+    },
+    computed: {
+        ...mapGetters({
+            curSiteConfig: 'config/getCurSiteConfig',
+        })
+    },
+    methods: {
+        joinList() {
+            this.$api.courseMgmt.qrCodeJoinList({
+                stuListNo: this.listNo,
+                courseId: this.cusId,
+                tmdId: this.userId,
+                id_token: this.id_token,
+                school: undefined //加入行政班时需要传对应编码,个人名单不用传
+            }).then(
+                res => {
+                    if (!res.error) {
+                        if (res.status == 2) {//重复加入
+                            this.$Message.success(this.$t('cusMgt.join.repJoin'))
+                            this.isRep = true
+                        } else if (res.status == 1) {//参数异常
+                            this.$Message.success(this.$t('cusMgt.join.joinPErr'))
+                        } else if (res.status == 0) {//正常加入
+                            this.$Message.success(this.$t('cusMgt.join.joinOk'))
+                            this.isJoin = true
+                            sessionStorage.setItem('identity', 'student')
+                        } else if (res.status == 4) {// 个人名单未开放加入
+                            this.$Message.warning(this.$t('cusMgt.join.joinLock'))
+                        } else if (res.status == 5) {// 没有开启审核模式
+                            this.$Message.warning('没有开启审核模式')
+                        } else if (res.status == 6) {// 人数已满,需要审核通过再加入
+                            this.$Message.warning('人数已满,需要审核通过再加入')
+                        } else if (res.status == 7) {// 二维码设置已经过期
+                            this.$Message.warning('二维码设置已经过期')
+                        }
+                    } else {
+                        this.$Message.error(this.$t('cusMgt.join.joinErr'))
+                    }
+                },
+                err => {
+                    this.$Message.error(this.$t('cusMgt.join.joinErr'))
+                }
+            )
+        },
+        toLogin() {
+            // let type = process.env.NODE_ENV //product | development
+            let accUrl = this.curSiteConfig.accAPIUrl
+            let clientId = this.curSiteConfig.clientID
+            let callback = decodeURIComponent(window.location.href)
+            let state = this.$jsFn.getBtwRandom(1000, 9999)
+            let nonce = this.$jsFn.uuid()
+            let loginUrl = `${accUrl}/oauth2/authorize?response_type=code&client_id=${clientId}&state=${state}&nonce=${nonce}&redirect_uri=${encodeURIComponent(callback)}`
+            window.location.href = loginUrl
+        }
+    },
+
 }
 </script>
 <style scoped lang="less">

+ 4 - 2
TEAMModelOS/ClientApp/src/view/mycourse/MyCourse.vue

@@ -616,12 +616,14 @@
 				}
 			},
 			async showQrCode(index) {
+				console.log(this.courseInfo)
 				let loginUrl = window.location.host;
 				let tName = this.$store.state.userInfo.name;
 				let listId = this.teaClassList[index].stulist;
 				let listName = this.teaClassList[index].listName;
 				let cusName = this.courseInfo.name;
-        let cusDesc = this.courseInfo.desc;
+        		let cusDesc = this.courseInfo.desc;
+				let cusId = this.courseInfo.id;
 				let stulistInfo = this.courseGroupList.find((item) => {
 					return item.id == listId;
 				});
@@ -629,7 +631,7 @@
 					//二维码链接
 					this.stuListNo = stulistInfo.no;
 					let host = window.location.origin;
-					let callbackUrl = `${host}/joinclass?listName=${listName}&cusDesc=${cusDesc}&tName=${tName}&listNo=${this.stuListNo}&cusName=${cusName}&m=${this.$t("qrCode.tip3")}&o=1`;
+					let callbackUrl = `${host}/joinclass?listName=${listName}&cusDesc=${cusDesc}&cusId=${cusId}&tName=${tName}&listNo=${this.stuListNo}&cusName=${cusName}&m=${this.$t("qrCode.tip3")}&o=1`;
 					this.inviteUrl = callbackUrl;
 					this.qrConfig.url = callbackUrl;
 

+ 0 - 1
TEAMModelOS/ClientApp/src/view/schoolmgmt/SystemSetting/SystemSetting.vue

@@ -1239,7 +1239,6 @@ export default {
         width = 25
         for (var i = 0; i < text.length; i++) {
           var c = text.charCodeAt(i);
-          console.log(text[i])
           //单字节宽度
           if ((c >= 0x0001 && c <= 0x007e) || (0xff60 <= c && c <= 0xff9f)) {
             width += text[i] ? 9 : 15.6