mo 4 年之前
父节点
当前提交
f0895c6a6a

+ 1 - 1
src/components/QrCode/index.vue

@@ -15,7 +15,7 @@
 
 <script>
 import VueQr from 'vue-qr'
-import copy from 'copy-to-clipboard'
+import copy from 'copy-to-clipboard' 
 export default {
     data() {
         return {

+ 52 - 4
src/views/teamDetail/components/modals/classList-group.vue

@@ -8,7 +8,8 @@
         :item="item"
         @deteleClass="deteleClass"
         :form="form"
-        :classList="classList"
+        :classList="activeClassList"
+        @filterClassList="filterClassList"
       />
     </el-form>
     <el-button
@@ -28,7 +29,7 @@
       width="800px"
     >
       <classPayList
-      :classIdList="classIdList"
+        :classIdList="classIdList"
         :courseTypesByType="courseTypesByType"
         :form="form"
         :payInfo="payInfo"
@@ -60,9 +61,13 @@ export default {
         ],
       },
       showSecondVisable: false,
-      classIdList:[]
+      classIdList: [],
+      activeClassList: [],
     };
   },
+  mounted() {
+    this.activeClassList = [...new Set(this.classList)];
+  },
   methods: {
     addClass() {
       this.form.classList.push({
@@ -94,7 +99,6 @@ export default {
             return item.classId;
           });
           try {
-
             let result = await getDefaultPaymentCalender(this.classIdList);
             this.payInfo = result.data;
             this.showSecondVisable = true;
@@ -102,6 +106,50 @@ export default {
         }
       });
     },
+    filterClassList(id) {
+      let arr = [];
+      this.form.classList.forEach((item) => {
+        if (item.classId) {
+          arr.push(item.classId);
+        }
+      });
+      console.log(arr)
+      if (id) {
+        let item;
+        // 找到对应的班级
+        this.classList.forEach((classes) => {
+          if (classes.id == id) {
+            item = classes;
+          }
+        });
+        // 过滤类型不一样的
+        this.activeClassList = this.classList.filter((classes) => {
+          return item.type == classes.type;
+        });
+        this.activeClassList = this.activeClassList.map((classes) => {
+          if (arr.indexOf(classes.id) != -1) {
+            classes.disabled = true;
+          } else {
+            classes.disabled = false;
+          }
+          return classes;
+        });
+      } else {
+        if (arr.length == 0) {
+          this.activeClassList = [...new Set(this.classList)];
+          console.log(this.activeClassList)
+        } else {
+          this.activeClassList =this.activeClassList.map((classes) => {
+            if (arr.indexOf(classes.id) != -1) {
+              classes.disabled = true;
+            } else {
+              classes.disabled = false;
+            }
+            return classes;
+          });
+        }
+      }
+    },
   },
 };
 </script>

+ 26 - 27
src/views/teamDetail/components/modals/classList-item.vue

@@ -18,6 +18,7 @@
       <el-select
         v-model="item.classId"
         style="margin-right: 20px"
+        clearable
         @change="changeValue"
       >
         <el-option
@@ -25,7 +26,7 @@
           :value="item.id"
           v-for="(item, index) in classList"
           :key="index"
-          :disabled="isDisabled(item)"
+          :disabled='item.disabled'
         ></el-option>
       </el-select>
       <el-button
@@ -39,9 +40,12 @@
 
     <div class="infomsg">
       <div class="left" v-if="!isNoCourse">
-           剩余课时:
-        <div v-for="(val,key) in item.courseList" :key='key'>
-          <p style="margin-right:5px">{{key|courseTypeFormat}}:<span>{{val}}</span>节</p>
+        剩余课时:
+        <div v-for="(val, key) in item.courseList" :key="key">
+          <p style="margin-right: 5px">
+            {{ key | courseTypeFormat }}:<span>{{ val }}</span
+            >节
+          </p>
         </div>
       </div>
       <div class="left" v-else>
@@ -67,7 +71,7 @@
         :list="studentList"
         :chioseList="item.studentList"
         v-if="studentListModalVisible"
-        :showOk='true'
+        :showOk="true"
         :isChiose="true"
         @close="closeStudentView"
       />
@@ -90,36 +94,30 @@ export default {
       organizationCourseUnitPriceSettingsByType: [],
       eclass: [],
       isNoCourse: false,
+      activeClassList: [],
     };
   },
+  mounted() {
+    this.activeClassList = [...new Set(this.classList)];
+  },
   methods: {
     async changeValue(val) {
-      this.item.studentList = []
-      try {
-        let reset = await getClassGroupSubCourseNum({ classGroupId: val });
-        this.setClassCourse(reset.data);
-      } catch {}
+      this.item.studentList = [];
+      if (val) {
+        try {
+          let reset = await getClassGroupSubCourseNum({ classGroupId: val });
+          this.setClassCourse(reset.data);
+          // 成功之后
+          this.$emit("filterClassList", val);
+        } catch {}
+      } else {
+        this.$emit("filterClassList", null);
+      }
     },
     deteleClass() {
       this.$emit("deteleClass", this.index);
     },
-    isDisabled(item) {
-      let flag = false;
-       this.form?.classList?.forEach((some) => {
-        if (item.type != some.type && some.type) {
-          flag = true;
-        }
-      });
-      this.form?.classList?.forEach((some) => {
-        if (item.id == some.classId) {
-          some.type = item.type
-          flag = true;
-        }
-      });
-      
 
-      return flag;
-    },
     lookStudentList() {
       if (!this.item.classId) {
         this.$message.error("请先选择班级,再查询学生列表");
@@ -146,9 +144,10 @@ export default {
       this.studentListModalVisible = false;
     },
     setClassCourse(data) {
+      console.log(data);
       if (Object.keys(data).length > 0) {
-
         this.item.courseList = data;
+        this.isNoCourse = false;
       } else {
         this.isNoCourse = true;
       }