lrf402788946 před 5 roky
rodič
revize
44716728e1
1 změnil soubory, kde provedl 29 přidání a 37 odebrání
  1. 29 37
      src/views/train-plan/bedroom.vue

+ 29 - 37
src/views/train-plan/bedroom.vue

@@ -11,16 +11,16 @@
     </detail-frame>
     <detail-frame :title="classInfo.name" :returns="toReturns" v-if="view != 'list'">
       <el-table :data="stuBedroom" size="mini" border stripe>
-        <el-table-column align="center" label="寝室号" prop="bedroom"></el-table-column>
-        <el-table-column align="center" label="楼层" prop="floor"></el-table-column>
+        <el-table-column align="center" label="寝室号" prop="bedroom" width="100"></el-table-column>
+        <el-table-column align="center" label="楼层" prop="floor" width="100"></el-table-column>
 
-        <el-table-column prop="state" label="状态" align="center">
+        <!-- <el-table-column prop="state" label="状态" align="center">
           <template v-slot="scoped">
             {{ `${scoped.row.status}` === `0` ? '启用' : `${scoped.row.status}` === `1` ? '停用' : '' }}
           </template>
-        </el-table-column>
-        <el-table-column align="center" label="男女限制" prop="gender"></el-table-column>
-        <el-table-column align="center" label="人数" prop="number"></el-table-column>
+        </el-table-column> -->
+        <el-table-column align="center" label="男女限制" prop="gender" width="100"></el-table-column>
+        <el-table-column align="center" label="人数" prop="number" width="100"></el-table-column>
         <el-table-column align="center" label="学生">
           <template v-slot="{ row }">
             <el-row>
@@ -37,7 +37,7 @@
         <template #options="{item,form}">
           <template v-if="item.model == 'bedroom'">
             <template v-for="(i, index) in bedroomList">
-              <el-option :key="index" :label="`${i.bedroom}`" :value="i.bedroom"></el-option>
+              <el-option :key="index" :label="i.name" :value="i.code"></el-option>
             </template>
           </template>
         </template>
@@ -69,6 +69,7 @@ export default {
       list: [],
       stuBedroom: [],
       bedroomList: [],
+      originBedRoomList: [],
       classInfo: {},
       opera: [
         {
@@ -84,6 +85,7 @@ export default {
       ],
       turnBedRoomFields: [
         { label: '姓名', model: 'name', type: 'text' },
+        { label: '性别', model: 'gender', type: 'text' },
         { label: '学校', model: 'school_name', type: 'text' },
         { label: '寝室', model: 'bedroom', type: 'select' },
       ],
@@ -124,24 +126,19 @@ export default {
         }
         let val = await this.getBedroomList({ status: '0', batch: this.classInfo.batch });
         let bdrooms = [];
-        for (const bdroom of arr) {
-          var ref = val.data.filter(item => item.code == bdroom.bedroom);
-          bdrooms = [...bdrooms, ...ref];
-        }
-        arr.map(item2 => {
-          bdrooms.map(item1 => {
-            if (item2.bedroom == item1.code) {
-              let json = {
-                number: item1.number,
-                gender: item1.gender,
-                floor: item1.floor,
-                status: item1.status,
-              };
-              Object.assign(item2, json);
-              return item2;
+        if (this.$checkRes(val)) {
+          let bedrooms = _.cloneDeep(val.data);
+          this.$set(this, `originBedRoomList`, bedrooms);
+          arr = arr.map(i => {
+            let r = bedrooms.find(f => f.code == i.bedroom);
+            if (r) {
+              let mid = _.pick(r, ['number', 'gender', 'floor']);
+              i = { ...i, ...mid };
             }
+            return i;
           });
-        });
+        }
+
         this.$set(this, `stuBedroom`, arr);
       }
     },
@@ -169,22 +166,17 @@ export default {
     },
     async turnBedroom(data) {
       this.$set(this, `form`, data);
-      let res = await this.getBedroomList({ status: '0', batch: this.classInfo.batch });
-      // var bd1 = res.data.filter(item => item.gender == data.gender);
-      // var bd2 = res.data.filter(item => item.gender == '');
-      // let bdcont = bd1.concat(bd2);
-      var bd3 = this.stuBedroom.filter(item => item.gender == data.gender);
-      var bd2 = this.stuBedroom.filter(item => item.gender == '');
-      let bdcont = bd3.concat(bd2);
-      console.log(bdcont);
-      let r = this.stuBedroom.filter(item1 => {
-        return item1.list.every(item => item.gender == data.gender);
+      let duplicate = _.cloneDeep(this.originBedRoomList);
+      let { gender } = data;
+      //没法限制,还可能有别的班,按班级看的话不全,只能自己排
+      let mid = duplicate.filter(f => f.gender == gender || f.gender == '' || f.gender == undefined || f.gender == null);
+      mid = mid.map(i => {
+        i.name = `${i.code}-${i.gender || '无性别限制'}-${i.floor}楼`;
+        return i;
       });
-      console.log(r);
-      let nums = _.intersection(bdcont, r);
-      console.log(nums);
+      // let mid2 = this.stuBedroom.filter(f => f.list.every(e => e.gender == gender) && f.list.length <= f.number);
 
-      this.$set(this, `bedroomList`, nums);
+      this.$set(this, `bedroomList`, mid);
       this.dialog = true;
     },
     //转寝保存