فهرست منبع

Merge branch 'develop-rc' into PL/develop-rcIes5-20220527

Li 3 سال پیش
والد
کامیت
72f14fcf84

+ 0 - 1
TEAMModelOS.SDK/Models/Cosmos/School/Course.cs

@@ -53,7 +53,6 @@ namespace TEAMModelOS.SDK.Models
         /// <summary>
         /// 创建者的id 
         /// </summary>
-        [Required(ErrorMessage = "creatorId 必须设置")]
         public string creatorId { get; set; }
         /// <summary>
         /// 学校编码或教师tmdid

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

@@ -1027,6 +1027,7 @@ const LANG_EN_US = {
         cusTable: 'Class Schedule',
         importLabel: 'Import Class Schedule',
         cusMode: 'Course Mode',
+        rtnRoom:'返回教室管理',
         roomLabel: 'Classroom',
         roomType: 'Type:',
 

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

@@ -1027,6 +1027,7 @@ const LANG_ZH_CN = {
         cusTable: '课程表',
         importLabel: '导入课表',
         cusMode: '课程模式',
+        rtnRoom:'返回教室管理',
         roomLabel: '教室',
         roomType: '教室类型:',
 

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

@@ -1027,6 +1027,7 @@ const LANG_ZH_TW = {
         cusTable: '課程表',
         importLabel: '匯入課表',
         cusMode: '課程模式',
+        rtnRoom:'返回教室管理',
         roomLabel: '教室',
         roomType: '教室類型:',
 

+ 8 - 7
TEAMModelOS/ClientApp/src/components/student-web/ClassRecord/StuReceive.vue

@@ -9,31 +9,31 @@
                 收集的作品
             </div>
             <!-- 图片类型作品 -->
-            <div v-else-if="collateType == 1">
+            <div v-else-if="collateType == 'Image'">
                 <img v-for="(blob,index) in item.blobFiles" :key="index" class="receive-img" :src="blob" alt="" @click="viewImage(blob)">
             </div>
             <!-- HTEX作品类型 -->
-            <div v-else-if="collateType == 2">
+            <div v-else-if="collateType == 'Htex'">
                 收集的HTEX作品
             </div>
             <!-- 音频 -->
-            <div v-else-if="collateType == 3">
+            <div v-else-if="collateType == 'Audio'">
                 <div v-for="(blob,index) in item.blobFiles" :key="index" class="audio-box" @click="viewAudio(blob)">
                     <Icon class="collate-type-icon" custom="iconfont icon-audio-outline" />
                 </div>
             </div>
             <!-- 视频 -->
-            <div v-else-if="collateType == 4">
+            <div v-else-if="collateType == 'Video'">
                 <div v-for="(blob,index) in item.blobFiles" :key="index" class="audio-box" @click="viewAudio(blob)">
                     <Icon class="collate-type-icon" custom="iconfont icon-video-outline" />
                 </div>
             </div>
             <!-- 文字 -->
-            <div v-else-if="collateType == 5">
+            <div v-else-if="collateType == 'Text'">
                 收集的文字
             </div>
             <!-- 附件 -->
-            <div v-else-if="collateType == 6">
+            <div v-else-if="collateType == 'File'">
                 <div v-for="(blob,index) in item.blobFiles" :key="index" class="audio-box" @click="downloadFile(blob,item)">
                     <Icon class="collate-type-icon" custom="iconfont icon-file" />
                 </div>
@@ -160,7 +160,8 @@ export default {
                 data = this._.cloneDeep(this.rcvData.clientWorks)
                 data = data.filter(item => this.nowStuInfo.seatID === item.seatID)
             }
-            let sas = await this.$tools.getBlobSas(this.recordInfo.tmdid)
+            let code = this.recordInfo.scope === "school" ? this.recordInfo.school : this.recordInfo.tmdid
+            let sas = await this.$tools.getBlobSas(code)
             data.forEach(stu => {
                 //处理完整文件路径
                 if (stu.blobFiles) {

+ 2 - 1
TEAMModelOS/ClientApp/src/components/student-web/ClassRecord/myWorks.vue

@@ -147,7 +147,7 @@ export default {
         },
     },
     created () {
-        this.getSas()
+        // this.getSas()
     },
     computed: {
     },
@@ -157,6 +157,7 @@ export default {
             immediate: true,
             handler(n, o) {
                 // this.collateType = n.collateType
+                this.getSas()
             }
         }
     }

+ 1 - 1
TEAMModelOS/ClientApp/src/router/routes.js

@@ -595,7 +595,7 @@ export const routes = [{
 		name: 'CoursePlan',
 		component: resolve => require(['@/view/newcourse/CoursePlan.vue'], resolve),
 		meta: {
-			activeName: 'NewCusMgt'
+			activeName: ''
 		}
 	},
 	// 新课纲管理

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 907 - 903
TEAMModelOS/ClientApp/src/view/evaluation/components/BaseEditExercise.vue


+ 260 - 269
TEAMModelOS/ClientApp/src/view/evaluation/components/BasePoints.vue

@@ -1,286 +1,278 @@
 <template>
-	<div class="points-container">
-		<!-- <Button type="info" class="btn-add-point" @click="addPointsModal = true"
+  <div class="points-container">
+    <!-- <Button type="info" class="btn-add-point" @click="addPointsModal = true"
 			v-show="curScope === 'school'">{{$t('evaluation.points.addPoint')}}</Button> -->
-		<div class="filter-wrap">
-			<Select v-model="selectPeriod" @on-change="onPeriodChange" :disabled="curScope === 'school'">
-				<Option v-for="(item, index) in periodList" :value="item.id" :key="index">{{ item.name }}</Option>
-			</Select>
+    <div class="filter-wrap">
+      <Select v-model="selectPeriod" @on-change="onPeriodChange" :disabled="curScope === 'school'">
+        <Option v-for="(item, index) in periodList" :value="item.id" :key="index">{{ item.name }}</Option>
+      </Select>
 
-			<Select v-model="selectSubject" @on-change="onSubjectChange" :disabled="curScope === 'school'">
-				<Option v-for="(item, index) in subjectList" :value="item.id" :key="index">{{ item.name }}</Option>
-			</Select>
-		</div>
+      <Select v-model="selectSubject" @on-change="onSubjectChange" :disabled="curScope === 'school'">
+        <Option v-for="(item, index) in subjectList" :value="item.id" :key="index">{{ item.name }}</Option>
+      </Select>
+    </div>
 
-		<div style="margin-top: 20px;">
-			<Loading hideMask v-show="isLoading"></Loading>
-			<Input v-special-char icon="ios-close" v-model="searchSchoolPoint" :placeholder="$t('evaluation.points.searchPoint')"
-				autofocus style="width: 98%;margin-left:1%;margin-bottom:10px" @on-change="onSearchSchoolChange"
-				@on-enter="onSearchSchoolChange" />
-			<div v-if="schoolPointList.length === 0" style="margin:5px">{{$t('evaluation.points.noPoint')}}</div>
-			<CheckboxGroup v-model="checkedList" @on-change="onCheckChange" v-else>
-				<Checkbox v-for="(item,index) in schoolPointList" :label="item" :key="item">{{ item }}</Checkbox>
-			</CheckboxGroup>
-		</div>
-		
-		
+    <div style="margin-top: 20px;">
+      <Loading hideMask v-show="isLoading"></Loading>
+      <Input v-special-char icon="ios-close" v-model="searchSchoolPoint" :placeholder="$t('evaluation.points.searchPoint')" autofocus style="width: 98%;margin-left:1%;margin-bottom:10px" @on-change="onSearchSchoolChange" @on-enter="onSearchSchoolChange" />
+      <div v-if="schoolPointList.length === 0" style="margin:5px">{{$t('evaluation.points.noPoint')}}</div>
+      <CheckboxGroup v-model="checkedList" @on-change="onCheckChange" v-else>
+        <Checkbox v-for="(item,index) in schoolPointList" :label="item" :key="item">{{ item }}</Checkbox>
+      </CheckboxGroup>
+    </div>
 
-		<div class="points-checked-wrap">
-			<p class="points-title">{{$t('evaluation.points.checkedPoint')}}</p>
-			<span class="point-item" v-for="(item,index) in checkedList" :key="index">{{ item }}</span>
-		</div>
-		
-		<div class="point-footer">
-			<Button @click="onCancel">{{$t('evaluation.cancel')}}</Button>
-			<Button type="info" @click="onConfirm">{{$t('evaluation.confirm')}}</Button>
-		</div>
+    <div class="points-checked-wrap">
+      <p class="points-title">{{$t('evaluation.points.checkedPoint')}}</p>
+      <span class="point-item" v-for="(item,index) in checkedList" :key="index">{{ item }}</span>
+    </div>
 
-		<Modal v-model="addPointsModal" :title="$t('evaluation.points.addPoint')" ref="pointRef" width="400px"
-			class="related-point-modal" style="z-index:99999">
-			<span>{{$t('evaluation.points.pointName')}}</span>
-			<Input v-special-char v-model="newPointName" :placeholder="$t('evaluation.points.inputNewPoint')" style="margin:10px 0" />
-			<div slot="footer">
-				<Button type="text" @click="addPointsModal = false">{{$t('evaluation.cancel')}}</Button>
-				<Button type="primary" @click="onAddNewPoint"
-					:loading="isAddLoading">{{$t('evaluation.confirm')}}</Button>
-			</div>
-		</Modal>
-	</div>
+    <div class="point-footer">
+      <Button @click="onCancel">{{$t('evaluation.cancel')}}</Button>
+      <Button type="info" @click="onConfirm">{{$t('evaluation.confirm')}}</Button>
+    </div>
+
+    <Modal v-model="addPointsModal" :title="$t('evaluation.points.addPoint')" ref="pointRef" width="400px" class="related-point-modal" style="z-index:99999">
+      <span>{{$t('evaluation.points.pointName')}}</span>
+      <Input v-special-char v-model="newPointName" :placeholder="$t('evaluation.points.inputNewPoint')" style="margin:10px 0" />
+      <div slot="footer">
+        <Button type="text" @click="addPointsModal = false">{{$t('evaluation.cancel')}}</Button>
+        <Button type="primary" @click="onAddNewPoint" :loading="isAddLoading">{{$t('evaluation.confirm')}}</Button>
+      </div>
+    </Modal>
+  </div>
 </template>
 <script>
-	import '@/utils/Math.uuid'
-	export default {
-		components: {},
-		props: {
-			period: {
-				type: String,
-				default: ''
-			},
-			subject: {
-				type: String,
-				default: ''
-			},
-			scope: {
-				type: String,
-				default: 'school'
-			},
-			points: {
-				type: Array,
-				default: () => []
-			},
-			max: {
-				type: Number,
-				default: 5
-			}
-		},
-		data() {
-			return {
-				isLoading: false,
-				addPointsModal: false,
-				isAddLoading: false,
-				tabName: 'school',
-				newPointType: 'school',
-				newPointName: '',
-				searchPoint: '',
-				searchSchoolPoint: '',
-				curScope: '',
-				selectPeriod: 0,
-				selectSubject: 0,
-				periodList: [{
-					id: '0',
-					name: '0'
-				}],
-				subjectList: [{
-					id: '0',
-					name: '0'
-				}],
-				pointList: [],
-				schoolPointList: [],
-				checkedList: [],
-				originPointList: [],
-				originSchoolList: [],
-				originList: [],
-				defaultParams: {
-					code: '',
-					periodId: null,
-					subjectId: null,
-					school_code: null,
-					type: 1
-				},
-				curPointResponse: null
-			}
-		},
-		created() {
-			console.log('period' + this.period)
-			console.log('subject' + this.subject)
-			console.log('scope' + this.scope)
-			if (this.period && this.subject) {
-				this.selectPeriod = this.period
-				this.selectSubject = this.subject
-			}
-			this.initSchoolData()
-			this.getPoints()
-		},
-		methods: {
+import '@/utils/Math.uuid'
+export default {
+  components: {},
+  props: {
+    period: {
+      type: String,
+      default: ''
+    },
+    subject: {
+      type: String,
+      default: ''
+    },
+    scope: {
+      type: String,
+      default: 'school'
+    },
+    points: {
+      type: Array,
+      default: () => []
+    },
+    max: {
+      type: Number,
+      default: 5
+    }
+  },
+  data() {
+    return {
+      isLoading: false,
+      addPointsModal: false,
+      isAddLoading: false,
+      tabName: 'school',
+      newPointType: 'school',
+      newPointName: '',
+      searchPoint: '',
+      searchSchoolPoint: '',
+      curScope: '',
+      selectPeriod: 0,
+      selectSubject: 0,
+      periodList: [{
+        id: '0',
+        name: '0'
+      }],
+      subjectList: [{
+        id: '0',
+        name: '0'
+      }],
+      pointList: [],
+      schoolPointList: [],
+      checkedList: [],
+      originPointList: [],
+      originSchoolList: [],
+      originList: [],
+      defaultParams: {
+        code: '',
+        periodId: null,
+        subjectId: null,
+        school_code: null,
+        type: 1
+      },
+      curPointResponse: null
+    }
+  },
+  created() {
+    console.log('period-' + this.period)
+    console.log('subject-' + this.subject)
+    console.log('scope-' + this.scope)
+    if (this.period && this.subject) {
+      this.selectPeriod = this.period
+      this.selectSubject = this.subject
+    }
+    this.initSchoolData()
+    this.getPoints()
+  },
+  methods: {
+    // 获取当前学校学段学科等基本信息
+    initSchoolData() {
+      this.$store.dispatch('user/getSchoolProfile').then(res => {
+        let schoolBaseInfo = res.school_base
+        if (schoolBaseInfo && schoolBaseInfo.period.length) {
+          this.periodList = schoolBaseInfo.period
+          if (this.selectPeriod) {
+            console.log(this.selectSubject)
+            console.log(this.selectPeriod)
+            this.subjectList = this.periodList.filter(i => i.id === this.selectPeriod)[0].subjects
+            console.log(this.subjectList.map(i => i.id))
+          } else {
+            this.selectPeriod = schoolBaseInfo.period[0].id
+            this.onPeriodChange(this.periodList[0].id)
+          }
+        }
+      })
+    },
 
+    // 学段切换处理
+    onPeriodChange(val) {
+      this.subjectList = this.periodList.filter(i => i.id === val)[0].subjects
+      this.selectPeriod = val
+      this.selectSubject = this.subjectList[0].id
+      this.subjectList.length && this.getPoints()
+    },
 
-			// 获取当前学校学段学科等基本信息
-			initSchoolData() {
-				this.$store.dispatch('user/getSchoolProfile').then(res => {
-					let schoolBaseInfo = res.school_base
-					if (schoolBaseInfo && schoolBaseInfo.period.length) {
-						this.periodList = schoolBaseInfo.period
-						if (this.selectPeriod) {
-							console.log(this.selectPeriod)
-							this.subjectList = this.periodList.filter(i => i.id === this.selectPeriod)[0].subjects
-							console.log(this.subjectList.map(i => i.id))
-							console.log(this.selectSubject)
-						} else {
-							this.selectPeriod = schoolBaseInfo.period[0].id
-							this.onPeriodChange(this.periodList[0].id)
-						}
-					}
-				})
-			},
+    onSubjectChange(val) {
+      this.getPoints()
+    },
 
-			// 学段切换处理
-			onPeriodChange(val) {
-				this.subjectList = this.periodList.filter(i => i.id === val)[0].subjects
-				this.selectPeriod = val
-				this.selectSubject = this.subjectList[0].id
-				this.subjectList.length && this.getPoints()
-			},
+    doReset() {
+      this.getPoints()
+      this.checkedList = []
+    },
 
-			onSubjectChange(val) {
-				this.getPoints()
-			},
+    /**
+     * 获取知识点仓库数据
+     */
+    getPoints() {
+      if (this.periodList.length && this.subjectList.length) {
+        this.isLoading = true
+        // if (this.pointList.length && this.schoolPointList.length) return
+        this.defaultParams.code = this.$store.state.userInfo.schoolCode
+        this.defaultParams.school_code = this.$store.state.userInfo.schoolCode
+        this.defaultParams.periodId = this.selectPeriod
+        this.defaultParams.subjectId = this.selectSubject
 
-			doReset() {
-				this.getPoints()
-				this.checkedList = []
-			},
+        if (this.defaultParams.periodId && this.defaultParams.subjectId) {
+          this.$api.knowledge.GetSchoolPoints(this.defaultParams).then(res => {
+            if (!res.error && res.length) {
+              this.curPointResponse = res[0]
+              this.schoolPointList = res[0].points
+              this.originSchoolList = res[0].points
+              this.originPointList = this.originPointList.concat(res[0].points)
+            } else {
+              this.$Message.warning(this.$t('evaluation.noData'),)
+              this.uuid = Math.uuid()
+              this.schoolPointList = []
+              this.originSchoolList = []
+              this.originPointList = []
+              this.curPointResponse = {
+                blocks: [],
+                code: `Knowledge-${this.$store.state.userInfo.schoolCode}-${this.uuid}`,
+                id: this.uuid,
+                owner: this.$store.state.userInfo.schoolCode,
+                periodId: this.defaultParams.periodId,
+                pk: 'Knowledge',
+                points: [],
+                scope: 'school',
+                subjectId: this.defaultParams.subjectId
+              }
+            }
+            this.isLoading = false
+          })
+        }
+        this.isLoading = true
+      }
 
-			/**
-			 * 获取知识点仓库数据
-			 */
-			getPoints() {
-				if (this.periodList.length && this.subjectList.length) {
-					this.isLoading = true
-					// if (this.pointList.length && this.schoolPointList.length) return
-					this.defaultParams.code = this.$store.state.userInfo.schoolCode
-					this.defaultParams.school_code = this.$store.state.userInfo.schoolCode
-					this.defaultParams.periodId = this.selectPeriod
-					this.defaultParams.subjectId = this.selectSubject
 
-					if (this.defaultParams.periodId && this.defaultParams.subjectId) {
-						this.$api.knowledge.GetSchoolPoints(this.defaultParams).then(res => {
-							if (!res.error && res.length) {
-								this.curPointResponse = res[0]
-								this.schoolPointList = res[0].points
-								this.originSchoolList = res[0].points
-								this.originPointList = this.originPointList.concat(res[0].points)
-							} else {
-								this.$Message.warning(this.$t('evaluation.noData'),)
-								this.uuid = Math.uuid()
-								this.schoolPointList = []
-								this.originSchoolList = []
-								this.originPointList = []
-								this.curPointResponse = {
-									blocks: [],
-									code: `Knowledge-${this.$store.state.userInfo.schoolCode}-${this.uuid}`,
-									id: this.uuid,
-									owner: this.$store.state.userInfo.schoolCode,
-									periodId: this.defaultParams.periodId,
-									pk: 'Knowledge',
-									points: [],
-									scope: 'school',
-									subjectId: this.defaultParams.subjectId
-								}
-							}
-							this.isLoading = false
-						})
-					}
-					this.isLoading = true
-				}
+    },
 
+    /** 添加新知识点 */
+    onAddNewPoint() {
+      let newName = this.newPointName
+      if (newName) {
+        this.curPointResponse.points.push(newName)
+        this.savePoint()
+      } else {
+        this.$Message.warning(this.$t('evaluation.points.noNameTips'))
+      }
+    },
 
-			},
+    /**
+     * 保存知识点
+     * @param pointItem
+     * @param BlockItem
+     */
+    savePoint() {
+      this.isAddLoading = true
+      this.$api.knowledge.SaveOrUpdateKnowledge(this.curPointResponse).then(res => {
+        if (!res.error && res) {
+          this.$Message.success(this.$t('evaluation.points.addSuc'))
+          this.addPointsModal = false
+          this.isAddLoading = false
+          this.getPoints()
+        } else {
+          this.$Message.warning(res.error)
+        }
+      }).catch(err => {
+        console.log(err)
+        this.$Message.warning(this.$t('evaluation.points.addFail'))
+      })
+    },
 
-			/** 添加新知识点 */
-			onAddNewPoint() {
-				let newName = this.newPointName
-				if (newName) {
-					this.curPointResponse.points.push(newName)
-					this.savePoint()
-				} else {
-					this.$Message.warning(this.$t('evaluation.points.noNameTips'))
-				}
-			},
+    onCheckChange(val) {
+      if (val.length > this.max) {
+        this.$Message.warning(
+          `${this.$t('evaluation.points.noNameTips') + this.max + this.$t('evaluation.points.noNameTips')}`
+        )
+        this.checkedList.splice(this.checkedList.length - 1, 1)
+      } else {
+        // this.$emit('onCheckChange', val, this.originPointList)
+      }
+    },
 
-			/**
-			 * 保存知识点
-			 * @param pointItem
-			 * @param BlockItem
-			 */
-			savePoint() {
-				this.isAddLoading = true
-				this.$api.knowledge.SaveOrUpdateKnowledge(this.curPointResponse).then(res => {
-					if (!res.error && res) {
-						this.$Message.success(this.$t('evaluation.points.addSuc'))
-						this.addPointsModal = false
-						this.isAddLoading = false
-						this.getPoints()
-					} else {
-						this.$Message.warning(res.error)
-					}
-				}).catch(err => {
-					console.log(err)
-					this.$Message.warning(this.$t('evaluation.points.addFail'))
-				})
-			},
+    onConfirm() {
+      this.$emit('onCheckChange', this.checkedList, this.originPointList)
+    },
 
-			onCheckChange(val) {
-				if (val.length > this.max) {
-					this.$Message.warning(
-						`${this.$t('evaluation.points.noNameTips') + this.max + this.$t('evaluation.points.noNameTips')}`
-						)
-					this.checkedList.splice(this.checkedList.length - 1, 1)
-				} else {
-					// this.$emit('onCheckChange', val, this.originPointList)
-				}
-			},
-			
-			onConfirm(){
-				this.$emit('onCheckChange', this.checkedList, this.originPointList)
-			},
-			
-			onCancel(){
-				this.checkedList = []
-				this.$emit('onCancel')
-			},
+    onCancel() {
+      this.checkedList = []
+      this.$emit('onCancel')
+    },
 
-			onDeletePoint(index) {
-				this.checkedList.splice(index, 1)
-			},
+    onDeletePoint(index) {
+      this.checkedList.splice(index, 1)
+    },
 
-			onSearchSchoolChange() {
-				this.schoolPointList = this.originSchoolList.filter(item => item.indexOf(this.searchSchoolPoint) > -1)
-			},
-		},
-		mounted() {
-			if (this.points.length) {
-				this.checkedList = this.points
-			}
-			this.curScope = this.scope
-		},
-		watch: {
-			scope: {
-				handler(n, o) {
-					console.log(n)
-				}
-			}
-		}
-	}
+    onSearchSchoolChange() {
+      this.schoolPointList = this.originSchoolList.filter(item => item.indexOf(this.searchSchoolPoint) > -1)
+    },
+  },
+  mounted() {
+    if (this.points.length) {
+      this.checkedList = this.points
+    }
+    this.curScope = this.scope
+  },
+  watch: {
+    scope: {
+      handler(n, o) {
+        console.log(n)
+      }
+    }
+  }
+}
 </script>
 
 <style lang="less" scoped>
@@ -290,13 +282,13 @@
     padding: 5px 0 10px 5px;
     border-bottom: 1px solid #e0e0e0;
   }
-  .point-footer{
-	  display: flex;
-	  justify-content: end;
-	  
-	  .ivu-btn{
-		  margin-right: 10px;
-	  }
+  .point-footer {
+    display: flex;
+    justify-content: end;
+
+    .ivu-btn {
+      margin-right: 10px;
+    }
   }
   .ivu-select-single {
     width: 120px;
@@ -343,5 +335,4 @@
     z-index: 999;
   }
 }
-
 </style>

+ 1 - 0
TEAMModelOS/ClientApp/src/view/mgtPlatform/MgtPlatform.vue

@@ -380,6 +380,7 @@ export default {
 .platform-list-wrap {
     display: flex;
     width: 100%;
+    flex-wrap: wrap;
 }
 .add-platform-icon {
     font-size: 50px;

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

@@ -327,6 +327,7 @@ export default {
     created() {
         this.initCusType()
         this.getAllStuList()
+        if (!this.filterPeriod) this.getCourseList()
     },
     activated() {
         let tn = this.tabName
@@ -634,7 +635,6 @@ export default {
                             code: this.$store.state.userInfo.TEAMModelId,
                             schedule: this.addCusInfo.schedule || [],
                             scope: 'private',
-                            creatorId: this.$store.state.userInfo.schoolCode
                         }
                     }
                     this.btnLoading = true
@@ -655,8 +655,8 @@ export default {
                                         ci.no = this.addCusInfo.no
                                         ci.desc = this.addCusInfo.desc
                                     }
-                                    this.getCusInfo()
                                 }
+                                this.getCusInfo()
                                 this.initCusInfo()
                                 this.addCusStatus = false
                                 this.$refs['addCusInfo'].resetFields()
@@ -704,6 +704,8 @@ export default {
                     value: 'school'
                 })
                 this.listType = 'school'
+            } else {
+                this.listType = 'private'
             }
         },
         // 获取课程列表

+ 5 - 0
TEAMModelOS/ClientApp/src/view/mycourse/record/Record.less

@@ -66,4 +66,9 @@
     float:right;
     margin-right:20px;
     position: relative;    
+}
+.exam-action-wrap{
+    position: absolute;
+    right: 15px;
+    top: 10px;
 }

+ 56 - 0
TEAMModelOS/ClientApp/src/view/mycourse/record/Record.vue

@@ -1,5 +1,14 @@
 <template>
     <div class="record-container">
+        <div class="exam-action-wrap">
+            <span>
+                <Tooltip :max-width="180" :content="$t('cusMgt.autoShareTips')">
+                    <Icon type="ios-information-circle-outline" />
+                </Tooltip>
+                {{$t('cusMgt.autoShare')}}
+            </span>
+            <i-switch :loading="sLoading" v-model="isAuto" size="small" @on-change="setAutoPublish" />
+        </div>
         <vuescroll>
             <Alert v-show="rcdParams.scope == 'private'" show-icon type="warning" closable>
                 {{$t('cusMgt.recordTips')}}
@@ -96,6 +105,7 @@
     </div>
 </template>
 <script>
+import { mapGetters } from 'vuex'
 import RcdPoster from "../../homepage/RcdPoster.vue"
 export default {
     components: {
@@ -117,13 +127,47 @@ export default {
     },
     data() {
         return {
+            isAuto: false,//是否自动发布课堂记录
+            sLoading: false,
             btnLoading: false,
             editName: '',
             recordList: [],
             editRdStatus: false,
         }
     },
+    computed: {
+        ...mapGetters({
+            lessonShow: 'user/getTeacherLessonShow',//是否自动发布课堂记录
+        }),
+    },
     methods: {
+        //切换是否自动发布课堂记录
+        setAutoPublish() {
+            this.sLoading = true
+            let show = this.lessonShow
+            if (this.isAuto) {
+                show.push('student')
+            } else {
+                let index = show.findIndex(item => item === 'student')
+                if (index > -1) show.splice(index, 1)
+            }
+            let params = {
+                "opt": "UpdateLessonShow",
+                "lessonShow": show
+            }
+            this.$api.schoolUser.setTeacherInfo(params).then(
+                res => {
+                    this.$Message.success(this.$t('teachermgmt.setOk'))
+                    this.$store.commit('user/setLessonShow', show)
+                },
+                err => {
+                    this.$Message.error(this.$t('teachermgmt.setErr'))
+                    this.isAuto = !this.isAuto
+                }
+            ).finally(() => {
+                this.sLoading = false
+            })
+        },
         //分享、取消分享给学生
         toggleShare(data) {
             if (data && data.id) {
@@ -348,6 +392,18 @@ export default {
                 }
 
             }
+        },
+        lessonShow: {
+            deep: true,
+            immediate: true,
+            handler(n, o) {
+                console.log(typeof n)
+                if (n && Array.isArray(n)) {
+                    this.isAuto = n.includes('student')
+                } else {
+                    this.isAuto = false
+                }
+            }
         }
     }
 }

+ 12 - 4
TEAMModelOS/ClientApp/src/view/newcourse/CoursePlan.vue

@@ -4,8 +4,9 @@
             <b class="title">{{$t('cusMgt.schdTable')}}</b>
             <div class="action-btn-wrap">
                 <span v-if="$access.can('admin.*|course-upd')" @click="toggleView()" class="action-btn" style="margin-right:40px">
-                    <Icon custom="iconfont icon-kecheng" size="16" />
-                    <span>{{$t('cusMgt.cusMode')}}</span>
+                    <Icon v-if="fromRouter == 'classroom'" type="md-arrow-back" />
+                    <Icon v-else custom="iconfont icon-kecheng" size="16" />
+                    <span>{{ fromRouter == 'classroom' ? $t('cusMgt.rtnRoom') : $t('cusMgt.cusMode')}}</span>
                 </span>
             </div>
         </div>
@@ -82,6 +83,7 @@ export default {
     inject: ['reload'],
     data() {
         return {
+            fromRouter: '',
             split1: 0.2,
             filterPeriod: '',
             confImpStatus: false,
@@ -149,7 +151,7 @@ export default {
         // 切换课表模式和课程模式
         toggleView() {
             this.$router.push({
-                name: 'NewCusMgt'
+                name: this.fromRouter || 'NewCusMgt'
             })
         },
         //关键字搜索班级
@@ -377,7 +379,7 @@ export default {
                             schdItem.time.splice(j, 1)
                             //如果已经删完了时间安排,则把对应关系也删了
                             if (!schdItem.time.length) {
-                                cus.schedule.splice(i,1)
+                                cus.schedule.splice(i, 1)
                             }
                             this.updCusInfo(cus, 'cancel')
                             break
@@ -472,6 +474,12 @@ export default {
             this.findClassCus()
         })
     },
+    beforeRouteEnter(to, from, next) {
+        next(vm => {
+            vm.fromRouter = from.name
+            console.log(arguments)
+        })
+    },
     computed: {
         //当前班级对应的课程数据
         roomCus() {

+ 0 - 1
TEAMModelOS/ClientApp/src/view/newcourse/MyCourse.vue

@@ -2113,7 +2113,6 @@ export default {
                             code: this.$store.state.userInfo.TEAMModelId,
                             schedule: this.addCusInfo.schedule || [],
                             scope: 'private',
-                            creatorId: this.$store.state.userInfo.schoolCode
                         }
                     }
                     this.btnLoading = true

+ 4 - 0
TEAMModelOS/Controllers/System/CoreController.cs

@@ -105,6 +105,7 @@ namespace TEAMModelOS.Controllers
                     $"咨询学校:{request.name}\n" +
                     $"联系人:{request.tmdname} - {request.gender}({request.tmdid})\n " +
                     $"联系电话:{request.cellphone}\n" +
+                    $"联系邮箱:{request.email}\n" +
                     $"咨询内容:{request.content}";
                 await _dingDing.SendBotMsg(msg, GroupNames.大陸客戶聯繫通知群);
             }
@@ -116,6 +117,7 @@ namespace TEAMModelOS.Controllers
                     $"諮詢學校:{request.name}\n" +
                     $"聯繫人:{request.tmdname} - {request.gender}({request.tmdid})\n" +
                     $"聯繫電話:{request.cellphone}\n" +
+                    $"聯繫郵箱:{request.email}\n" +
                     $"諮詢內容:{request.content}";
                 await _dingDing.SendBotMsg(msg, GroupNames.國際客戶聯繫通知群);
             }
@@ -128,6 +130,7 @@ namespace TEAMModelOS.Controllers
                     $"咨询学校:{request.name}\n" +
                     $"联系人:{request.tmdname} - {request.gender}({request.tmdid})\n" +
                     $"联系电话:{request.cellphone}\n" +
+                    $"联系邮箱:{request.email}\n" +
                     $"咨询内容:{request.content}";
                 await _dingDing.SendBotMsg(msg, GroupNames.成都开发測試群組);
             }
@@ -388,6 +391,7 @@ namespace TEAMModelOS.Controllers
         /// 手机号
         /// </summary>
         public string cellphone { get; set; }
+        public string email { get; set; }
         /// <summary>
         /// 备注
         /// </summary>