|
@@ -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']),
|