lrf402788946 il y a 4 ans
Parent
commit
e297c3411a
2 fichiers modifiés avec 60 ajouts et 11 suppressions
  1. 2 0
      src/store/index.js
  2. 58 11
      src/views/new-plan/detail.vue

+ 2 - 0
src/store/index.js

@@ -14,6 +14,7 @@ import dirPlan from '@frame/store/dir-plan';
 import attendance from '@frame/store/attendance';
 import setting from '@frame/store/setting';
 import trainBatch from '@frame/store/train-plan-year';
+import classtype from '@frame/store/classtype';
 
 import util from '@frame/store/util';
 import * as ustate from '@frame/store/user/state';
@@ -39,6 +40,7 @@ export default new Vuex.Store({
     count,
     setting,
     trainBatch,
+    classtype,
   },
   state: { ...ustate, ...dostate },
   mutations: { ...umutations, ...domutations },

+ 58 - 11
src/views/new-plan/detail.vue

@@ -1,11 +1,11 @@
 <template>
   <div id="detail">
     <list-frame :title="pageTitle" returns="./index" :needFilter="false" :needPag="false" :needAdd="false">
-      <data-table :fields="fields" :data="list" :opera="opera" @namelist="toNamelist" @view="toView"></data-table>
+      <data-table :fields="fields" :data="list" :opera="opera" :usePage="false" @namelist="toNamelist" @view="toView" :toFormat="toFormat"></data-table>
     </list-frame>
     <el-dialog :visible.sync="dialog" title="上传名单" width="30%">
       <el-form size="mini">
-        <el-form-item label="期数">{{ form.termnum }}</el-form-item>
+        <el-form-item label="期数">{{ form.term }}</el-form-item>
         <el-form-item label="人数">{{ form.number }}</el-form-item>
         <el-form-item label="上传名单">
           <el-upload class="upload-demo" action="/files/train/upload" :on-success="handleSuccess">
@@ -14,7 +14,7 @@
           </el-upload>
         </el-form-item>
         <el-form-item label="错误信息" v-if="errList.length > 0">
-          <data-table :fields="errFields" :data="errList" :opera="[]"></data-table>
+          <data-table :fields="errFields" :usePage="false" :data="errList" :opera="[]"></data-table>
         </el-form-item>
       </el-form>
     </el-dialog>
@@ -22,12 +22,15 @@
 </template>
 
 <script>
+import _ from 'lodash';
 import listFrame from '@frame/layout/admin/list-frame';
-import dataTable from '@frame/components/data-table';
+import dataTable from '@frame/components/filter-page-table';
 import { mapState, createNamespacedHelpers } from 'vuex';
+const { mapActions: trainplan } = createNamespacedHelpers('trainplan');
 const { mapActions: schPlan } = createNamespacedHelpers('schPlan');
 const { mapActions: util } = createNamespacedHelpers('util');
 const { mapActions: imports } = createNamespacedHelpers('schimport');
+const { mapActions: classtype } = createNamespacedHelpers('classtype');
 export default {
   name: 'detail',
   props: {},
@@ -39,9 +42,9 @@ export default {
       form: {},
       list: [],
       fields: [
-        { label: '期数', prop: 'termnum' },
+        { label: '期数', prop: 'term' },
         { label: '人数', prop: 'number' },
-        { label: '需求车辆', prop: 'carnum' },
+        { label: '班级类型', prop: 'type', format: true },
       ],
       opera: [
         {
@@ -60,21 +63,55 @@ export default {
         { label: '姓名', prop: 'name' },
         { label: '错误信息', prop: 'msg' },
       ],
+      plan: {},
+      classTypeList: [],
     };
   },
   created() {
+    this.getOtherList();
     this.search();
   },
   methods: {
+    ...classtype({ getClasstype: 'query' }),
+    ...trainplan({ getTrainplan: 'fetch' }),
     ...imports(['create']),
     ...schPlan(['update']),
     ...util(['fetch']),
     async search() {
+      let tp = await this.getTrainplan(this.id);
+      if (this.$checkRes(tp)) {
+        this.$set(this, `plan`, tp.data);
+      }
       let res = await this.fetch({ model: 'schtime', planid: this.id, schid: this.user.code });
       if (this.$checkRes(res)) {
-        let { term } = res.data;
+        let { arrange } = res.data;
+        let { termnum } = this.plan;
+        arrange = _.groupBy(arrange, 'term');
+        let keys = Object.keys(arrange);
+        let arr = keys.map(key => {
+          let rt = termnum.find(f => f.term == key);
+          let ar = arrange[key];
+          ar = ar.map(a => {
+            let rb = rt.batchnum.find(f => f.batch == a.batch);
+            if (rb) {
+              let bh = _.head(rb.class);
+              let { type } = bh;
+              a.type = type;
+              return a;
+            }
+          });
+          let garr = _.groupBy(ar, 'type');
+          let gks = Object.keys(garr);
+          garr = gks.map(gk => {
+            let { term, termid } = _.head(garr[gk]);
+            let number = garr[gk].reduce((p, n) => p + n.number * 1, 0);
+            return { term, termid, number, type: gk };
+          });
+          return garr;
+        });
+        arr = arr.flat();
         this.$set(this, `info`, res.data);
-        this.$set(this, `list`, term);
+        this.$set(this, `list`, arr);
       }
     },
     toNamelist({ data }) {
@@ -82,8 +119,8 @@ export default {
       this.dialog = true;
     },
     async handleSuccess(file, fileList) {
-      let res = await this.create({ filepath: file.uri, termid: this.form.termid, schid: this.user.code });
-      if (this.$checkRes(res, null, '上传失败')) {
+      let res = await this.create({ filepath: file.uri, termid: this.form.termid, schid: this.user.code, type: this.form.type });
+      if (this.$checkRes(res, null, res.errmsg || '上传失败')) {
         if (res.data.errorcode == '1') {
           this.$message.error('数据错误,请按错误信息提示修改数据');
           let { errormsg } = res.data;
@@ -93,13 +130,23 @@ export default {
             if (msg) r.push(e);
           });
           this.$set(this, `errList`, r);
-        }
+        } else this.$message.success('上传成功');
         // this.dialog = false;
       }
     },
     toView({ data }) {
       this.$router.push({ path: './student', query: { termid: data.termid } });
     },
+    async getOtherList() {
+      const res = await this.getClasstype();
+      if (this.$checkRes(res)) this.$set(this, `classTypeList`, res.data);
+    },
+    toFormat({ model, value }) {
+      if (model == 'type') {
+        const res = this.classTypeList.find(f => f.code == value);
+        if (res) return res.name;
+      }
+    },
   },
   computed: {
     ...mapState(['user']),