|
@@ -1,21 +1,18 @@
|
|
|
<template>
|
|
|
<div id="index">
|
|
|
- <list-frame :title="pageTitle" @query="search" :total="total" :needFilter="false" :needAdd="false">
|
|
|
- <data-table :fields="fields" :data="list" :opera="opera" @edit="toEdit"></data-table>
|
|
|
- </list-frame>
|
|
|
- <el-dialog title="上报请假日期" width="30%" :visible.sync="dialog" center :destroy-on-close="true" @close="handleClose">
|
|
|
+ <detail-frame :title="pageTitle">
|
|
|
<data-form :data="info" :fields="Ffields" :rules="rules" @save="handleSave" :isNew="!info.id" :styles="{ padding: 0 }" labelWidth="120px" :reset="false">
|
|
|
<template #custom="{item,form}">
|
|
|
<template v-if="item.model == 'date'">
|
|
|
<el-date-picker v-model="form[item.model]" type="date" placeholder="请选择" format="yyyy-MM-dd" value-format="yyyy-MM-dd" @change="pushDate">
|
|
|
</el-date-picker>
|
|
|
</template>
|
|
|
- <template v-if="item.model == 'nodate'">
|
|
|
- <data-table :fields="dateFields" :data="form[item.model]" :opera="dateOpera" @delete="toDateDelete" height="200px"></data-table>
|
|
|
+ <template v-if="item.model == 'nodate' && form[item.model]">
|
|
|
+ <data-table :fields="dateFields" :data="form[item.model]" :opera="dateOpera" @delete="toDateDelete" height="400px"></data-table>
|
|
|
</template>
|
|
|
</template>
|
|
|
</data-form>
|
|
|
- </el-dialog>
|
|
|
+ </detail-frame>
|
|
|
</div>
|
|
|
</template>
|
|
|
|
|
@@ -23,7 +20,7 @@
|
|
|
var moment = require('moment');
|
|
|
import _ from 'lodash';
|
|
|
import Vue from 'vue';
|
|
|
-import listFrame from '@frame/layout/admin/list-frame';
|
|
|
+import detailFrame from '@frame/layout/admin/detail-frame';
|
|
|
import dataTable from '@frame/components/data-table';
|
|
|
import dataForm from '@frame/components/form';
|
|
|
import { mapState, createNamespacedHelpers } from 'vuex';
|
|
@@ -32,7 +29,7 @@ const { mapActions: dirPlan } = createNamespacedHelpers('dirPlan');
|
|
|
export default {
|
|
|
name: 'index',
|
|
|
props: {},
|
|
|
- components: { listFrame, dataTable, dataForm },
|
|
|
+ components: { dataTable, dataForm, detailFrame },
|
|
|
data: () => {
|
|
|
return {
|
|
|
dialog: false,
|
|
@@ -69,7 +66,7 @@ export default {
|
|
|
};
|
|
|
},
|
|
|
created() {
|
|
|
- this.search();
|
|
|
+ this.toEdit();
|
|
|
},
|
|
|
methods: {
|
|
|
...dirPlan({
|
|
@@ -77,17 +74,11 @@ export default {
|
|
|
dirCreatPlan: 'create',
|
|
|
dirUpdatePlan: 'update',
|
|
|
}),
|
|
|
- ...trainplan(['query', 'create', 'delete', 'update']),
|
|
|
- async search({ skip = 0, limit = 10, ...info } = {}) {
|
|
|
- const res = await this.query({ skip, limit, ...info });
|
|
|
- if (this.$checkRes(res)) {
|
|
|
- this.$set(this, `list`, res.data);
|
|
|
- this.$set(this, `total`, res.total);
|
|
|
- }
|
|
|
- },
|
|
|
- async toEdit({ data }) {
|
|
|
- let res = await this.dirQuery({ trainplanid: data.id, headteacherid: this.user.userid });
|
|
|
- let { year, id, title } = data;
|
|
|
+ ...trainplan(['query', 'create', 'delete', 'update', 'fetch']),
|
|
|
+ async toEdit() {
|
|
|
+ let res = await this.dirQuery({ trainplanid: this.defaultOption.planid, headteacherid: this.user.userid });
|
|
|
+ let planinfo = await this.fetch(this.defaultOption.planid);
|
|
|
+ let { year, id, title } = planinfo.data;
|
|
|
let plan = { year, trainplanid: id, title, headteacherid: this.user.userid, nodate: [] };
|
|
|
this.$set(this, `info`, plan);
|
|
|
if (this.$checkRes(res)) {
|
|
@@ -98,7 +89,6 @@ export default {
|
|
|
this.$set(this, `info`, { ...res.data[0], year, title, nodate });
|
|
|
}
|
|
|
}
|
|
|
- this.dialog = true;
|
|
|
},
|
|
|
async handleSave({ data, isNew }) {
|
|
|
let res;
|
|
@@ -116,13 +106,9 @@ export default {
|
|
|
msg = '修改成功';
|
|
|
}
|
|
|
if (this.$checkRes(res, msg, res.errmsg || '操作失败')) {
|
|
|
- this.handleClose();
|
|
|
+ this.toEdit();
|
|
|
}
|
|
|
},
|
|
|
- handleClose() {
|
|
|
- this.dialog = false;
|
|
|
- this.info = { nodate: [] };
|
|
|
- },
|
|
|
pushDate(date) {
|
|
|
if (!_.isArray(this.info.nodate)) {
|
|
|
this.info.nodate = [];
|
|
@@ -136,7 +122,7 @@ export default {
|
|
|
},
|
|
|
},
|
|
|
computed: {
|
|
|
- ...mapState(['user']),
|
|
|
+ ...mapState(['user', 'defaultOption']),
|
|
|
pageTitle() {
|
|
|
return `${this.$route.meta.title}`;
|
|
|
},
|