lrf402788946 5 tahun lalu
induk
melakukan
47cb93c267
1 mengubah file dengan 68 tambahan dan 19 penghapusan
  1. 68 19
      src/views/new-plan/arrange/school-num.vue

+ 68 - 19
src/views/new-plan/arrange/school-num.vue

@@ -1,11 +1,41 @@
 <template>
   <div id="school-num">
     <detail-frame :title="pageTitle">
-      <data-table ref="table" :fields="fields" :data="list" :opera="opera" :total="total" @edit="toEdit" @query="search"></data-table>
+      <!-- <data-table ref="table" :fields="fields" :data="list" :opera="opera" :total="total" @edit="toEdit" @query="search"></data-table> -->
+      <el-form :model="form" :inline="true" size="mini">
+        <el-form-item label="学校名称">
+          <el-input v-model="form.name" clearable></el-input>
+        </el-form-item>
+        <el-form-item label="学校代码">
+          <el-input v-model="form.code" clearable></el-input>
+        </el-form-item>
+      </el-form>
+      <el-row type="flex" align="middle" justify="end" class="btn_bar">
+        <el-col :span="2">
+          <el-button type="primary" @click="handleSave" size="mini">保存人数安排</el-button>
+        </el-col>
+      </el-row>
+      <el-table :data="getList()" border stripe size="mini">
+        <el-table-column align="center" label="学校" prop="name"></el-table-column>
+        <el-table-column align="center" label="学校代码" prop="code"></el-table-column>
+        <el-table-column align="center" label="就业人数">
+          <template v-slot="{ row, $index }">
+            <el-input-number v-model="row.jynum" @change="toComputed(row, $index)" :max="5" :min="0" size="mini" :controls="false"></el-input-number>
+          </template>
+        </el-table-column>
+        <el-table-column align="center" label="创业人数">
+          <template v-slot="{ row, $index }">
+            <el-input-number v-model="row.cynum" @change="toComputed(row, $index)" :max="5" :min="0" size="mini" :controls="false"></el-input-number>
+          </template>
+        </el-table-column>
+        <el-table-column align="center" label="少数民族人数">
+          <template v-slot="{ row, $index }">
+            <el-input-number v-model="row.mznum" @change="toComputed(row, $index)" :max="5" :min="0" size="mini" :controls="false"></el-input-number>
+          </template>
+        </el-table-column>
+        <el-table-column align="center" :label="`总人数(共计:${template.total || 0})`" prop="num"> </el-table-column>
+      </el-table>
     </detail-frame>
-    <el-dialog title="分配人数" :visible.sync="dialog" @close="toClose">
-      <data-form :data="form" :fields="formFields" :rules="{}" @save="handleSave"> </data-form>
-    </el-dialog>
   </div>
 </template>
 
@@ -17,16 +47,18 @@ import dataTable from '@frame/components/filter-page-table';
 import { mapState, createNamespacedHelpers } from 'vuex';
 const { mapActions: plan } = createNamespacedHelpers('trainplan');
 const { mapActions: school } = createNamespacedHelpers('school');
+const { mapActions: util } = createNamespacedHelpers('util');
 export default {
   name: 'school-num',
   props: {},
-  components: { detailFrame, dataTable, dataForm },
+  components: { detailFrame },
   data: function() {
     return {
       dialog: false,
       list: [],
       form: {},
       plan: {},
+      template: {},
       opera: [
         {
           label: '修改',
@@ -34,25 +66,27 @@ export default {
           method: 'edit',
         },
       ],
-      fields: [
-        { label: '学校', prop: 'name', filter: true },
-        { label: '学校代码', prop: 'code', filter: true },
-        { label: '人数', prop: 'num' },
-      ],
-      formFields: [
-        { label: '学校', model: 'name', type: 'text' },
-        { label: '人数', model: 'num' },
-      ],
-      total: 0,
     };
   },
   async created() {
-    await this.searchPlan();
+    // await this.trainTemplage();
+    // await this.searchPlan();
     await this.search();
   },
   methods: {
     ...plan({ getPlan: 'fetch', updatePlan: 'update' }),
     ...school(['query']),
+    ...util({ modelFetch: 'fetch' }),
+    async trainTemplage() {
+      let planid = _.get(this.defaultOption, 'planid');
+      let planyearid = _.get(this.defaultOption, 'planyearid');
+      let res = await this.modelFetch({ model: 'trainmodel', planyearid, planid });
+      if (this.$checkRes(res)) {
+        if (res.data !== null) {
+          this.$set(this, `template`, res.data);
+        }
+      }
+    },
     async searchPlan() {
       let planid = _.get(this.defaultOption, 'planid');
       if (!planid) return;
@@ -63,12 +97,10 @@ export default {
       }
     },
     async search({ skip = 0, limit = 10, ...info } = {}) {
-      let res = await this.query({ skip, limit, ...info });
+      let res = await this.query({ ...info });
       if (this.$checkRes(res)) {
         //TODO 查出这页的学校分配的人数,放到学校里面,表格输出
         this.$set(this, `list`, res.data);
-        this.getNum();
-        this.$set(this, `total`, res.total);
       }
     },
     async toEdit({ data }) {
@@ -105,12 +137,29 @@ export default {
       this.dialog = false;
       this.form = {};
     },
+    getList() {
+      let duplicate = _.cloneDeep(this.list);
+      let res = duplicate.filter(f => {
+        let name = _.get(this.form, 'name');
+        let code = _.get(this.form, 'code');
+        if (!name && !code) return true;
+        else if (name && !code) return f.name.includes(name);
+        else if (!name && code) return f.code.includes(code);
+        else return f.name.includes(name) && f.code.includes(code);
+      });
+      return res;
+    },
+    toComputed(row, index) {
+      let { jynum = 0, cynum = 0, mznum = 0 } = row;
+    },
   },
   watch: {
     defaultOption: {
       async handler(val) {
+        await this.trainTemplage();
         await this.searchPlan();
         // this.$refs.table.changePage();
+        await this.getNum();
       },
       deep: true,
     },