|
@@ -0,0 +1,155 @@
|
|
|
+<template>
|
|
|
+ <div id="detail">
|
|
|
+ <detail-frame :title="pageTitle" returns="./index">
|
|
|
+ <data-form :data="info" :fields="fields" :rules="rules" @save="handleSave" :isNew="isNew">
|
|
|
+ <template #radios="{item}">
|
|
|
+ <template v-if="item.model === 'type'">
|
|
|
+ <el-radio v-for="(i, index) in types" :key="index" :label="i.value">{{ i.label }}</el-radio>
|
|
|
+ </template>
|
|
|
+ </template>
|
|
|
+ <template #custom="{item}">
|
|
|
+ <template v-if="item.model === 'lesson'">
|
|
|
+ <el-table :data="arrList" stripe border>
|
|
|
+ <el-table-column align="center" label="时间" prop="time"></el-table-column>
|
|
|
+ <el-table-column align="center" label="第一天" prop="day1"></el-table-column>
|
|
|
+ <el-table-column align="center" label="第二天" prop="day2"></el-table-column>
|
|
|
+ <el-table-column align="center" label="第三天" prop="day3"></el-table-column>
|
|
|
+ <el-table-column align="center" label="第四天" prop="day4"></el-table-column>
|
|
|
+ <el-table-column align="center" label="第五天" prop="day5"></el-table-column>
|
|
|
+ <el-table-column align="center" label="第六天" prop="day6"></el-table-column>
|
|
|
+ <el-table-column label="操作" align="center">
|
|
|
+ <template v-slot="{ row, $index }">
|
|
|
+ <el-tooltip :key="$index" effect="dark" content="编辑" placement="bottom">
|
|
|
+ <el-button type="text" size="mini" icon="el-icon-edit" @click="toEdit(row, $index)"></el-button>
|
|
|
+ </el-tooltip>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ </el-table>
|
|
|
+ </template>
|
|
|
+ </template>
|
|
|
+ </data-form>
|
|
|
+ </detail-frame>
|
|
|
+ <el-drawer :visible.sync="drawer" @close="toClose" direction="rtl" :with-header="false">
|
|
|
+ <el-tabs style="padding:10px;">
|
|
|
+ <el-tab-pane label="课程安排">
|
|
|
+ <data-form :styles="{ padding: 0 }" :data="form" :fields="oFields" :rules="{}" @save="handleOsave" :isNew="false">
|
|
|
+ <template #custom="{item, form}">
|
|
|
+ <template v-if="item.model === 'time'">
|
|
|
+ <el-time-select placeholder="起始时间" value-format="HH:mm" v-model="form.startTime" :picker-options="{ start: '08:00', end: '23:30' }">
|
|
|
+ </el-time-select>
|
|
|
+ <el-time-select
|
|
|
+ placeholder="结束时间"
|
|
|
+ value-format="HH:mm"
|
|
|
+ v-model="form.endTime"
|
|
|
+ :picker-options="{ start: '08:00', end: '23:30', minTime: form.startTime }"
|
|
|
+ >
|
|
|
+ </el-time-select>
|
|
|
+ </template>
|
|
|
+ </template>
|
|
|
+ </data-form>
|
|
|
+ </el-tab-pane>
|
|
|
+ </el-tabs>
|
|
|
+ </el-drawer>
|
|
|
+ </div>
|
|
|
+</template>
|
|
|
+
|
|
|
+<script>
|
|
|
+import detailFrame from '@frame/layout/admin/detail-frame';
|
|
|
+import dataForm from '@frame/components/form';
|
|
|
+import { mapState, createNamespacedHelpers } from 'vuex';
|
|
|
+export default {
|
|
|
+ name: 'detail',
|
|
|
+ props: {},
|
|
|
+ components: { detailFrame, dataForm },
|
|
|
+ data: () => {
|
|
|
+ return {
|
|
|
+ drawer: false,
|
|
|
+ info: {},
|
|
|
+ form: {},
|
|
|
+ fields: [
|
|
|
+ { label: '模板名称', required: true, model: 'title' },
|
|
|
+ { label: '类型', required: true, model: 'type', type: 'radio' },
|
|
|
+ { label: '课程安排', required: true, model: 'lesson', custom: true },
|
|
|
+ ],
|
|
|
+ types: [
|
|
|
+ { label: '普通班', value: '0' },
|
|
|
+ { label: '特殊班', value: '1' },
|
|
|
+ ],
|
|
|
+ rules: {
|
|
|
+ title: [{ required: true, message: '请输入模板名称' }],
|
|
|
+ type: [{ required: true, message: '请选择模板类型' }],
|
|
|
+ },
|
|
|
+ oFields: [{ label: '时间', model: 'time', type: 'time', custom: true }],
|
|
|
+ arrList: [
|
|
|
+ { time: `8:30-11:30`, day1: '--', day2: '科目一', day3: '科目二', day4: '科目三', day5: '科目四', day6: '--' },
|
|
|
+ { time: `11:30-13:30`, day1: '--', day2: '午餐+休息', day3: '午餐+休息', day4: '午餐+休息', day5: '午餐+休息', day6: '--' },
|
|
|
+ { time: `13:30-16:30`, day1: '13:30报道;15:30开班仪式', day2: '科目一', day3: '科目二', day4: '科目三', day5: '科目四', day6: '--' },
|
|
|
+ { time: `16:30-17:30`, day1: '晚餐', day2: '晚餐', day3: '晚餐', day4: '晚餐', day5: '晚餐', day6: '--' },
|
|
|
+ { time: `17:30-19:45`, day1: '团队组建', day2: '拓展交流', day3: '课程作业小组展示 ', day4: '课程作业', day5: '礼仪课小组面试 ', day6: '结业仪式' },
|
|
|
+ ],
|
|
|
+ };
|
|
|
+ },
|
|
|
+ created() {},
|
|
|
+ methods: {
|
|
|
+ async search() {
|
|
|
+ const res = await this.fetch(this.id);
|
|
|
+ if (this.$checkRes(res)) this.$set(this, `info`, res.data);
|
|
|
+ this.loading = false;
|
|
|
+ },
|
|
|
+ async handleSave({ isNew, data }) {
|
|
|
+ let res;
|
|
|
+ let msg;
|
|
|
+ if (isNew) {
|
|
|
+ res = await this.create(data);
|
|
|
+ msg = `${this.pageTitle}添加成功`;
|
|
|
+ } else {
|
|
|
+ res = await this.update(data);
|
|
|
+ msg = `${this.pageTitle}修改成功`;
|
|
|
+ }
|
|
|
+ if (this.$checkRes(res, msg)) this.$router.push({ path: './index' });
|
|
|
+ },
|
|
|
+ toEdit(data, index) {
|
|
|
+ data.index = index;
|
|
|
+ let times = data.time.split('-');
|
|
|
+ if (times.length === 2) {
|
|
|
+ data.stratTime = times[0];
|
|
|
+ data.endTime = times[1];
|
|
|
+ }
|
|
|
+
|
|
|
+ this.$set(this, `form`, data);
|
|
|
+ this.drawer = true;
|
|
|
+ },
|
|
|
+ handleOsave({ data }) {
|
|
|
+ console.log(data);
|
|
|
+ },
|
|
|
+ toClose() {
|
|
|
+ this.drawer = false;
|
|
|
+ },
|
|
|
+ },
|
|
|
+ watch: {
|
|
|
+ isNew: {
|
|
|
+ immediate: true,
|
|
|
+ handler(val) {
|
|
|
+ if (!val) this.search();
|
|
|
+ },
|
|
|
+ },
|
|
|
+ },
|
|
|
+ computed: {
|
|
|
+ ...mapState(['user']),
|
|
|
+ id() {
|
|
|
+ return this.$route.query.id;
|
|
|
+ },
|
|
|
+ isNew() {
|
|
|
+ return this.$route.query.id ? false : true;
|
|
|
+ },
|
|
|
+ pageTitle() {
|
|
|
+ return `${this.$route.meta.title}`;
|
|
|
+ },
|
|
|
+ },
|
|
|
+ metaInfo() {
|
|
|
+ return { title: this.$route.meta.title };
|
|
|
+ },
|
|
|
+};
|
|
|
+</script>
|
|
|
+
|
|
|
+<style lang="less" scoped></style>
|