lrf402788946 4 年之前
父节点
当前提交
e4ec1212ea
共有 1 个文件被更改,包括 34 次插入84 次删除
  1. 34 84
      src/views/train-plan/bedroom.vue

+ 34 - 84
src/views/train-plan/bedroom.vue

@@ -26,13 +26,8 @@
 
       <el-checkbox-group v-model="stuList">
         <el-table :data="stuBedroom" size="mini" border stripe>
-          <el-table-column align="center" label="寝室号" prop="bedroom" width="100" sortable></el-table-column>
+          <el-table-column align="center" label="寝室号" prop="code" width="100" sortable></el-table-column>
           <el-table-column align="center" label="楼层" prop="floor" width="100" sortable></el-table-column>
-          <!-- <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" width="100"></el-table-column>
           <el-table-column align="center" label="人数" prop="number" width="100"></el-table-column>
           <el-table-column align="center" label="学生">
@@ -40,7 +35,7 @@
               <el-row>
                 <el-col v-for="(i, index) in row.list" :key="index" :span="6">
                   <el-checkbox :label="i.id">
-                    <el-link @click="turnBedroom(i)" :type="i.gender === '男' ? 'primary' : 'success'">{{ i.name }}({{ i.gender }})</el-link>
+                    <el-link :type="i.gender === '男' ? 'primary' : 'success'">{{ i.name }}({{ i.gender }})</el-link>
                   </el-checkbox>
                 </el-col>
               </el-row>
@@ -49,22 +44,18 @@
         </el-table>
       </el-checkbox-group>
     </detail-frame>
-    <el-dialog :visible.sync="dialog" title="修改寝室" @close="toClose" width="30%">
-      <data-form :data="form" :fields="turnBedRoomFields" :rules="{}" @save="turnSave">
-        <template #options="{item,form}">
-          <template v-if="item.model == 'bedroom'">
-            <template v-for="(i, index) in bedroomList">
-              <el-option :key="index" :label="i.name" :value="i.code"></el-option>
-            </template>
-          </template>
-        </template>
-      </data-form>
-    </el-dialog>
-    <el-dialog :visible.sync="selectDialog" title="批量修改寝室" @close="toClose" width="30%">
-      <el-select v-model="bedroomCode" placeholder="" filterable>
-        <el-option v-for="(i, index) in originBedRoomList" :key="index" :label="i.name" :value="i.code"></el-option>
-      </el-select>
-      <el-button type="primary" @click="toAllSave">批量保存</el-button>
+    <el-dialog :visible.sync="selectDialog" title="批量修改寝室" center @close="toClose" width="30%">
+      <el-row>
+        <el-col :span="24" style="font-size:18px">
+          选择寝室:
+          <el-select v-model="bedroomCode" placeholder="请选择寝室" filterable>
+            <el-option v-for="(i, index) in assignList" :key="index" :label="i.name" :value="i.code"></el-option>
+          </el-select>
+        </el-col>
+      </el-row>
+      <template #footer>
+        <el-button type="primary" @click="toAllSave">批量保存</el-button>
+      </template>
     </el-dialog>
   </div>
 </template>
@@ -83,7 +74,7 @@ const { mapActions: util } = createNamespacedHelpers('util');
 export default {
   name: 'bedroom',
   props: {},
-  components: { detailFrame, dataTable, dataForm },
+  components: { detailFrame, dataTable }, //dataForm
   data: function() {
     return {
       view: 'list',
@@ -95,7 +86,6 @@ export default {
       stuList: [],
       stuBedroom: [],
       bedroomList: [],
-      originBedRoomList: [],
       classInfo: {},
       opera: [
         {
@@ -109,21 +99,16 @@ export default {
         { label: '批', prop: 'batch' },
         { label: '班级', prop: 'name' },
       ],
-      turnBedRoomFields: [
-        { label: '姓名', model: 'name', type: 'text' },
-        { label: '性别', model: 'gender', type: 'text' },
-        { label: '学校', model: 'school_name', type: 'text' },
-        { label: '寝室', model: 'bedroom', type: 'select' },
-      ],
       options: undefined,
       ostuList: [],
+      assignList: [],
     };
   },
   created() {},
   methods: {
     ...classes(['query']),
     ...student({ getStudentList: 'query', updateStudent: 'update' }),
-    ...bedroom({ bedroomApart: 'apart', getBedroomList: 'query', classstuList: 'classstuList', updateBat: 'updateBat' }),
+    ...bedroom({ bedroomApart: 'apart', getBedroomList: 'query', classstuList: 'classstuList', updateBat: 'updateBat', getAssignRoom: 'getAssignRoom' }),
     ...util({ modelFetch: 'fetch', utilMethod: 'utilMethod' }),
     async search() {
       let termid = _.get(this.defaultOption, 'termid');
@@ -132,6 +117,8 @@ export default {
       if (this.$checkRes(res)) {
         this.$set(this, `list`, res.data);
       }
+      let bedres = await this.getBedroomList();
+      if (this.$checkRes(bedres)) this.$set(this, `bedroomList`, bedres.data);
     },
     toEdit({ data }) {
       this.$set(this, `classInfo`, data);
@@ -141,31 +128,16 @@ export default {
     async getSL() {
       let res = await this.getStuList();
       if (this.$checkRes(res)) {
-        let duplicate = _.cloneDeep(res.data);
-        let mid = _.groupBy(duplicate, 'bedroom');
-        let keys = Object.keys(mid);
+        let group = _.groupBy(res.data, 'bedroomid');
+        let keys = Object.keys(group);
+        // 组织数据
         let arr = [];
         for (const key of keys) {
-          let o = {};
-          o['bedroom'] = !key || key == 'undefined' ? '未分寝' : key;
-          o['list'] = mid[key];
-          arr.push(o);
-        }
-        let val = await this.getBedroomList({ status: '0' });
-        let bdrooms = [];
-        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;
-          });
+          const bedroom = this.bedroomList.find(f => f._id == key);
+          bedroom.list = group[key];
+          arr.push(bedroom);
         }
-        this.$set(this, `stuBedroom`, arr);
+        this.$set(this, 'stuBedroom', arr);
       }
     },
     async getStuList() {
@@ -195,32 +167,6 @@ export default {
       this.$set(this, `classInfo`, {});
       this.$set(this, `stuBedroom`, []);
     },
-    async turnBedroom(data) {
-      this.$set(this, `form`, data);
-      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;
-      });
-      // let mid2 = this.stuBedroom.filter(f => f.list.every(e => e.gender == gender) && f.list.length <= f.number);
-
-      this.$set(this, `bedroomList`, mid);
-      this.dialog = true;
-    },
-    //转寝保存
-    async turnSave({ data }) {
-      const bedroom = await this.modelFetch({ model: 'bedroom', code: data.bedroom });
-      data.bedroomid = bedroom.data.id;
-      // data.bedroom = bedroom.data.code;
-      let res = await this.updateStudent(data);
-      if (this.$checkRes(res, `转寝成功`, res.errmsg || `转寝失败`)) {
-        this.getSL();
-        this.toClose();
-      }
-    },
     toClose() {
       this.stuList = [];
       this.selectDialog = false;
@@ -232,16 +178,20 @@ export default {
       const msg = this.$message({ duration: 0, message: '正在处理,请稍后...' });
       let code = _.clone(this.bedroomCode);
       let ids = _.cloneDeep(this.stuList);
-      let bedroom = this.originBedRoomList.find(f => code == f.code);
+      let bedroom = this.bedroomList.find(f => code == f.code);
       if (bedroom) {
-        let res = await this.updateBat({ code, ids, bedroomid: bedroom.id });
+        let termid = _.get(this.defaultOption, 'termid');
+        let res = await this.updateBat({ code, ids, bedroomid: bedroom.id, termid });
         msg.close();
-        this.$checkRes(res, '保存成功', '保存失敗');
+        this.$checkRes(res, '保存成功', res.errmsg || '保存失败');
       }
       this.toClose();
-      this.getSL();
+      // this.getSL();
     },
     async toSelect() {
+      const { termid } = this.defaultOption;
+      const res = await this.getAssignRoom({ termid });
+      if (res.errcode == '0') this.$set(this, `assignList`, res.data);
       this.selectDialog = true;
     },
     getGender(gender) {