Browse Source

优化我的课程名单逻辑

liqk 2 years ago
parent
commit
27a64bdec0

+ 33 - 48
TEAMModelOS/ClientApp/src/view/mycourse/MyCourse.vue

@@ -61,7 +61,7 @@
                                 </p>
                                 <p class="class-attr-item">
                                     <span class="attr-label">{{$t('cusMgt.stuCount')}}</span>
-                                    <span class="class-name">{{item.allStu ? item.allStu.length : 0}}{{$t('unit.text7')}}</span>
+                                    <span class="class-name">{{getStudenCount(item.classId || item.stulist)}}{{$t('unit.text7')}}</span>
                                 </p>
                                 <Icon size="25" custom="iconfont icon-qr-code" :class="['qr-code-icon', {'qr-code-icon-color': item.joinLock}]" @click="showQrCode(index)" v-if="listType == 'private'" :title="$t('cusMgt.qrCodeLabel')" />
                                 <span v-if="hasCCAuth" :class="['qr-code-icon', hasCCAuth ? 'cc-icon' : 'no-cc-auth']" @click="startCus(index)">
@@ -308,6 +308,7 @@ export default {
             courseList: [],
             filterPeriod: '',
             courseInfo: {},
+            courseGroupList: [],//当前课程所有名单详细信息
             courseTypeClass: ['course-list-wrap'],
             addCusInfo: {
                 name: '',
@@ -338,7 +339,7 @@ export default {
         },
         curStuList() {
             let groupId = this.teaClassList[this.curClassIndex]?.classId || this.teaClassList[this.curClassIndex]?.stulist
-            return this.groupList.find(item => item.id == groupId)
+            return this.courseGroupList.find(item => item.id == groupId)
         },
         rcdParams() {
             return {
@@ -348,12 +349,14 @@ export default {
             }
         },
         students() {
-            if (this.teaClassList && this.teaClassList[this.curClassIndex]) {
-                return this.teaClassList[this.curClassIndex].allStu
-            }
-            else {
-                return []
+            if (this.teaClassList) {
+                let groupId = this.teaClassList[this.curClassIndex]?.classId || this.teaClassList[this.curClassIndex]?.stulist
+                if (groupId) {
+                    let group = this.courseGroupList.find(item => item.id == groupId)
+                    if (group) return group.members
+                }
             }
+            return
         },
         //查询成绩表所需参数(courseId, cId, code)
         gradeParams() {
@@ -365,7 +368,7 @@ export default {
             return data
         },
         courseListShow() {
-            if(!this.courseList.length){
+            if (!this.courseList.length) {
                 return []
             }
             let data = this.courseList.filter(item => item.scope == this.listType)
@@ -375,9 +378,9 @@ export default {
             if (data.length) {
                 return data
             } else {
-                setTimeout(()=>{
+                setTimeout(() => {
                     this.listType = this.listType == 'school' ? 'private' : 'school'
-                },100)
+                }, 100)
                 return []
             }
         },
@@ -417,6 +420,13 @@ export default {
         }, 100)
     },
     methods: {
+        getStudenCount(groupId) {
+            let group = this.courseGroupList.find(item => item.id == groupId)
+            if (group) {
+                return group.members?.length || 0
+            }
+            return 0
+        },
         setSourceId(value, selectData) {
             console.log(value)
             if (value.length) {
@@ -522,13 +532,7 @@ export default {
         },
         onSetIrs(data) {
             let { students } = data
-            // 当前名单对应的课程安排用于更新UI
-            let schedule = this.courseInfo.schedule.find(item => {
-                return item.stulist == this.teaClassList[this.curClassIndex].stulist && !item.classId //只有自定名单能添加学生,所以classId == ‘’
-            })
-            schedule.allStu = students
-
-            let stulist = this.groupList.find(item => {
+            let stulist = this.courseGroupList.find(item => {
                 return item.id == this.teaClassList[this.curClassIndex].stulist
             })
             if (stulist) {
@@ -536,7 +540,7 @@ export default {
             }
         },
         agreeJoinClass(status) {
-            let stulist = this.groupList.find(item => {
+            let stulist = this.courseGroupList.find(item => {
                 return item.id == this.teaClassList[this.curClassIndex].stulist
             })
             if (stulist) {
@@ -562,7 +566,7 @@ export default {
             let listId = this.teaClassList[index].stulist
             let listName = this.teaClassList[index].listName
             let cusName = this.courseInfo.name
-            let stulistInfo = this.groupList.find(item => {
+            let stulistInfo = this.courseGroupList.find(item => {
                 return item.id == listId
             })
             if (stulistInfo) {
@@ -631,6 +635,7 @@ export default {
                             students: s.students,
                             time: []
                         })
+                        this.courseListShow.push(this._.cloneDeep(s))
                         this.btnLoading = true
                         this.updCusInfo()
                         this.listId = ''
@@ -687,7 +692,7 @@ export default {
         },
         confirmRename() {
             let stulistId = this.teaClassList[this.curClassIndex].stulist
-            let stulist = this.groupList.find(item => {
+            let stulist = this.courseGroupList.find(item => {
                 return item.id == this.teaClassList[this.curClassIndex].stulist
             })
             if (stulist) {
@@ -995,13 +1000,15 @@ export default {
                         try {
                             //新版名单API支持同时获取各种名单详细信息
                             let allGroupIds = ids.concat(classIds)
+                            this.courseGroupList = []
                             if (allGroupIds.length) {
                                 let allGroups = await this.getListInfo([...allGroupIds])
                                 if (allGroups.groups) {
+                                    this.courseGroupList = allGroups.groups
                                     resSchedule.forEach(item => {
                                         //补充行政班信息
                                         if (item.classId) {
-                                            let classInfo = allGroups.groups.find(classItem => {
+                                            let classInfo = this.courseGroupList.find(classItem => {
                                                 return classItem.id == item.classId
                                             })
                                             item.classInfo = {
@@ -1009,19 +1016,15 @@ export default {
                                                 name: classInfo ? classInfo.name : this.$t('cusMgt.hasDelClass'),
                                                 year: classInfo ? classInfo.year : 0 //方便计算年级
                                             }
-                                            item.allStu = classInfo ? this._.cloneDeep(classInfo.members) : []
-                                            item.fullStu = true
                                             item.joinLock = classInfo.joinLock
                                         }
                                         //补充教学班信息
                                         if (item.stulist) {
-                                            let listInfo = allGroups.groups.find(listItem => {
+                                            let listInfo = this.courseGroupList.find(listItem => {
                                                 return listItem.id == item.stulist
                                             })
                                             item.listName = listInfo ? listInfo.name : this.$t('cusMgt.hasDelClass')
-                                            item.allStu = listInfo ? this._.cloneDeep(listInfo.members) : []
                                             item.listSchool = listInfo ? listInfo.school : undefined
-                                            item.fullStu = true
                                             item.joinLock = listInfo.joinLock
                                         }
                                         //统一数据格式
@@ -1045,15 +1048,8 @@ export default {
         },
         onAddStudent(data) {
             let { addStudents } = data
-            // 当前名单对应的课程安排用于更新UI
-            let schedule = this.courseInfo.schedule.find(item => {
-                return item.stulist == this.teaClassList[this.curClassIndex].stulist && !item.classId //只有自定名单能添加学生
-            })
-            if (schedule) {
-                schedule.allStu.unshift(...addStudents)
-            }
             //当前名单完整信息 用于更新名单API
-            let stulist = this.groupList.find(item => {
+            let stulist = this.courseGroupList.find(item => {
                 return item.id == this.teaClassList[this.curClassIndex].stulist
             })
             if (stulist) {
@@ -1063,20 +1059,8 @@ export default {
         },
         onDelStudent(data) {
             let { delIds } = data
-            // 当前名单对应的课程安排用于更新UI
-            let schedule = this.courseInfo.schedule.find(item => {
-                return item.stulist == this.teaClassList[this.curClassIndex].stulist && !item.classId //只有自定名单能添加学生
-            })
-            if (schedule) {
-                for (let i = 0; i < schedule.allStu.length; i++) {
-                    if (delIds.includes(schedule.allStu[i].id)) {
-                        schedule.allStu.splice(i, 1)
-                        i--
-                    }
-                }
-            }
             //当前名单完整信息 用于更新名单API
-            let stulist = this.groupList.find(item => {
+            let stulist = this.courseGroupList.find(item => {
                 return item.id == this.teaClassList[this.curClassIndex].stulist
             })
             if (stulist) {
@@ -1121,7 +1105,8 @@ export default {
                             students: res.list.members,
                             time: []
                         })
-                        this.groupList.push(res.list)
+                        this.groupList.push(this._.cloneDeep(res.list))
+                        this.courseGroupList.push(this._.cloneDeep(res.list))
                         this.updCusInfo()
                     }
                 },

+ 7 - 7
TEAMModelOS/ClientApp/src/view/mycourse/student/Student.vue

@@ -37,7 +37,7 @@
                             {{$t('cusMgt.addStu')}}
                         </span>
                     </DropdownItem>
-                    <DropdownItem  @click.native="delStudents" v-if="basicStuList && basicStuList.scope == 'private'">
+                    <DropdownItem @click.native="delStudents" v-if="basicStuList && basicStuList.scope == 'private'">
                         <span class="action-item">
                             <Icon type="md-trash" size="16" />
                             {{$t('cusMgt.delStuBatch')}}
@@ -247,7 +247,7 @@ export default {
             return !!this.classInfo.stulist
         },
         students() {
-            return this.classInfo.allStu || this.basicStuList?.members || []
+            return this.basicStuList?.members || []
         },
         basicStuList() {
             return this._.cloneDeep(this.stuList)
@@ -274,7 +274,7 @@ export default {
                         //TODO 更新父组件数据
                         this.$emit('on-update-students', {
                             stuListId: this.basicStuList.id,
-                            students: this.basicStuList.members
+                            students: this._.cloneDeep(this.basicStuList.members)
                         })
                         this.setIrsStatus = false
                     },
@@ -302,8 +302,8 @@ export default {
             if (this.selections.length > 0) {
                 let stuIds = []
                 let addStudents = []
-                if (this.classInfo?.allStu) {
-                    stuIds = this.classInfo.allStu.map(item => {
+                if (this.basicStuList?.members) {
+                    stuIds = this.basicStuList?.members.map(item => {
                         return item.id
                     })
                 }
@@ -526,7 +526,7 @@ export default {
                         //TODO 更新父组件数据
                         this.$emit('on-update-students', {
                             stuListId: this.basicStuList.id,
-                            students: this.basicStuList.members
+                            students: this._.cloneDeep(this.basicStuList.members)
                         })
                         this.editIndex = -1
                     },
@@ -556,7 +556,7 @@ export default {
                         //TODO 更新父组件数据
                         this.$emit('on-update-students', {
                             stuListId: this.basicStuList.id,
-                            students: this.basicStuList.members
+                            students: this._.cloneDeep(this.basicStuList.members)
                         })
                         this.editIndex = -1
                     },