瀏覽代碼

Merge branch 'master' of http://git.cc-lotus.info/new_train/train-center

lrf402788946 5 年之前
父節點
當前提交
ff73f72124

+ 0 - 0
npm


+ 39 - 0
src/router/index.js

@@ -32,6 +32,45 @@ const routes = [
         meta: { title: '题库', sub: '管理' },
         component: () => import('@/views/Itembank/index.vue'),
       },
+
+      {
+        path: '/questionstate/detail',
+        name: 'questionstate_detail',
+        meta: { title: '问卷状态', sub: '详情' },
+        component: () => import('@/views/questionstate/detail.vue'),
+      },
+      {
+        path: '/questionstate/index',
+        name: 'questionstate_index',
+        meta: { title: '问卷状态', sub: '管理' },
+        component: () => import('@/views/questionstate/index.vue'),
+      },
+      {
+        path: '/certificaate/index',
+        name: 'certificaate_index',
+        meta: { title: '证书', sub: '管理' },
+        component: () => import('@/views/certificaate/index.vue'),
+      },
+      {
+        path: '/certificaate/detail',
+        name: 'certificaate_detail',
+        meta: { title: '证书', sub: '详情' },
+        component: () => import('@/views/certificaate/detail.vue'),
+      },
+      {
+        path: '/certificaate/look',
+        name: 'certificaate_look',
+        meta: { title: '证书', sub: '打印' },
+        component: () => import('@/views/certificaate/look.vue'),
+      },
+
+      {
+        path: '/certificaate/index',
+        name: 'certificaate_index',
+        meta: { title: '证书', sub: '管理' },
+        component: () => import('@/views/certificaate/index.vue'),
+      },
+
       {
         path: '/questionnaire/index',
         name: 'questionnaire_index',

+ 121 - 0
src/views/certificaate/detail.vue

@@ -0,0 +1,121 @@
+<template>
+  <div id="detail">
+    <detail-frame :title="mainTitle" returns="/certificaate/index">
+      <data-form :data="info" :fields="fields" :rules="rules" @save="handleSave" :isNew="isNew">
+        <template #options="{item}">
+          <template v-if="item.model === 'batch'">
+            <el-option label="第一批次" value="0"></el-option>
+            <el-option label="第二批次" value="1"></el-option>
+            <el-option label="第三批次" value="2"></el-option>
+            <el-option label="特殊批次" value="3"></el-option>
+          </template>
+          <template v-if="item.model === 'class'">
+            <el-option label="一班" value="0"></el-option>
+            <el-option label="二班" value="1"></el-option>
+            <el-option label="三班" value="2"></el-option>
+            <el-option label="四班" value="3"></el-option>
+            <el-option label="五班" value="4"></el-option>
+            <el-option label="六班" value="5"></el-option>
+            <el-option label="七班" value="6"></el-option>
+          </template>
+        </template>
+      </data-form>
+    </detail-frame>
+  </div>
+</template>
+
+<script>
+import detailFrame from '@frame/layout/admin/detail-frame';
+import dataForm from '@frame/components/form';
+import { mapActions, mapState, createNamespacedHelpers } from 'vuex';
+const { mapActions: mapClass } = createNamespacedHelpers('dept');
+
+export default {
+  metaInfo: { title: '部门信息' },
+  name: 'detail',
+  props: {},
+  components: {
+    detailFrame,
+    dataForm,
+  },
+  data: () => ({
+    info: {},
+    fields: [
+      { label: '学校(院)', required: true, model: 'school_name' },
+      { label: '姓名', required: true, model: 'name' },
+      { label: '参加训练日期', required: true, model: 'data' },
+      { label: '专业', required: true, model: 'major' },
+      { label: '期数', required: true, model: 'term' },
+      { label: '批次', required: true, model: 'batch', type: `select` },
+      { label: '班级', required: true, model: 'class', type: `select` },
+      { label: '证书编号', required: true, model: 'bianhao' },
+      { label: '发证日期', required: true, model: 'zsdate' },
+      { label: '成绩', required: true, model: 'grade' },
+    ],
+    rules: {
+      name: [{ required: true, message: '请输入学生姓名' }],
+      school_name: [{ required: true, message: '请输入学校名称' }],
+      data: [{ required: true, message: '请输入参加训练日期' }],
+      major: [{ required: true, message: '请输入专业名称' }],
+      term: [{ required: true, message: '请输入期数' }],
+      bianhao: [{ required: true, message: '请输入证书编号' }],
+      zsdate: [{ required: true, message: '请输入发证日期' }],
+      grade: [{ required: true, message: '请输入成绩' }],
+      batch: [{ required: true, message: '请选择批次' }],
+      class: [{ required: true, message: '请选择班级' }],
+    },
+  }),
+  created() {},
+  computed: {
+    id() {
+      return this.$route.query.id;
+    },
+    isNew() {
+      return this.$route.query.id ? false : true;
+    },
+    mainTitle() {
+      let meta = this.$route.meta;
+      let main = meta.title || '';
+      let sub = meta.sub || '';
+      return `${main}${sub}`;
+    },
+    keyWord() {
+      let meta = this.$route.meta;
+      let main = meta.title || '';
+      return main;
+    },
+  },
+  watch: {
+    isNew: {
+      immediate: true,
+      handler(val) {
+        if (val) this.loading = false;
+        else this.search();
+      },
+    },
+  },
+  methods: {
+    ...mapClass(['fetch', 'create', 'update']),
+    async search() {
+      const res = await this.fetch(this.id);
+      console.log(res);
+      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.keyWord}添加成功`;
+      } else {
+        res = await this.update(data);
+        msg = `${this.keyWord}修改成功`;
+      }
+      if (this.$checkRes(res, msg)) this.$router.push({ path: '/dept/index' });
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped></style>

+ 142 - 0
src/views/certificaate/index.vue

@@ -0,0 +1,142 @@
+<template>
+  <div id="index">
+    <list-frame title="证书管理" :total="total" :filter="filFields" @add="$router.push({ path: '/certificaate/detail' })">
+      <template #options="{item}">
+        <template v-if="item.model == 'class'">
+          <el-option v-for="(item, index) in list" :key="index" :value="item.label"></el-option>
+        </template>
+        <template v-if="item.model == 'batch'">
+          <el-option v-for="(item, index) in lists" :key="index" :value="item.label"></el-option>
+        </template>
+      </template>
+
+      <data-table :fields="fields" :data="index" :opera="opera" @document="toDocument" @edit="toEdit" @delete="toDelete"></data-table>
+    </list-frame>
+  </div>
+</template>
+
+<script>
+import listFrame from '@frame/layout/admin/list-frame';
+import dataTable from '@frame/components/data-table';
+// import { createNamespacedHelpers } from 'vuex';
+// const { mapActions } = createNamespacedHelpers('questionnaire');
+
+export default {
+  name: 'index',
+  props: {},
+  components: {
+    listFrame,
+    dataTable,
+  },
+  data: () => ({
+    lists: [
+      { label: '第一批次', value: 0 },
+      { label: '第二批次', value: 1 },
+      { label: '第三批次', value: 2 },
+      { label: '特殊批次', value: 3 },
+    ],
+    list: [
+      { label: '一班', value: 0 },
+      { label: '二班', value: 1 },
+      { label: '三班', value: 2 },
+      { label: '四班', value: 3 },
+      { label: '五班', value: 4 },
+      { label: '六班', value: 5 },
+      { label: '七班', value: 6 },
+    ],
+    opera: [
+      {
+        label: '编辑',
+        icon: 'el-icon-edit',
+        method: 'edit',
+      },
+      {
+        label: '查看证书',
+        icon: 'el-icon-document',
+        method: 'document',
+      },
+      {
+        label: '删除',
+        icon: 'el-icon-delete',
+        method: 'delete',
+      },
+    ],
+    fields: [
+      { label: '姓名', prop: 'name' },
+      { label: '期数', prop: 'term' },
+      {
+        label: '批次',
+        prop: 'batch',
+        format: item => {
+          return item === '0' ? '第一批次' : item === '1' ? '第二批次' : item === '2' ? '第三批次' : item === '3' ? '特殊批次' : '其他';
+        },
+      },
+      {
+        label: '班级',
+        prop: 'class',
+        format: item => {
+          return item === '0'
+            ? '一班'
+            : item === '1'
+            ? '二班'
+            : item === '2'
+            ? '三班'
+            : item === '3'
+            ? '四班'
+            : item === '4'
+            ? '五班'
+            : item === '5'
+            ? '六班'
+            : item === '6'
+            ? '七班'
+            : '其他';
+        },
+      },
+      { label: '成绩', prop: 'grade' },
+    ],
+    filFields: [
+      { label: '姓名', model: 'term' },
+      { label: '期数', model: 'term' },
+
+      {
+        label: '批次',
+        model: 'batch',
+        type: 'select',
+      },
+      {
+        label: '班级',
+        model: 'class',
+        type: 'select',
+      },
+    ],
+    index: [],
+    total: 0,
+  }),
+
+  created() {},
+  computed: {},
+  methods: {
+    // ...mapActions(['query', 'delete']),
+    // 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);
+    //   }
+    // },
+    toDocument({ data }) {
+      this.$router.push({ path: '/certificaate/look', query: { id: data.id } });
+    },
+    toEdit({ data }) {
+      this.$router.push({ path: '/certificaate/detail', query: { id: data.id } });
+    },
+    async toDelete({ data }) {
+      // const res = await this.delete(data.id);
+      // this.$checkRes(res, '删除成功', '删除失败');
+      // this.search();
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped></style>

+ 204 - 0
src/views/certificaate/look.vue

@@ -0,0 +1,204 @@
+<template>
+  <div id="index">
+    <el-col :span="24">
+      <el-col :span="24" class="title">打印证书 </el-col>
+      <el-col :span="24" class="info"></el-col>
+
+      <el-col :span="24" class="info_1"
+        ><el-col :span="24" class="info-2"
+          ><el-col :span="13" class="context">学校(院):{{ zhengshuList.school }}</el-col>
+          <el-col :span="9" class="zhuanye"> {{ zhengshuList.dataji }}{{ zhengshuList.major }}</el-col>
+          <el-col :span="2"> 专业</el-col>
+        </el-col>
+        <el-col :span="24"
+          ><el-col :span="4" class="context_2"> 学生:{{ zhengshuList.name }} </el-col><el-col :span="1">于</el-col
+          ><el-col :span="1" class="zhuanye">{{ zhengshuList.year }}</el-col>
+          <el-col :span="1">年</el-col>
+          <el-col :span="1" class="zhuanye">{{ zhengshuList.marth }}</el-col
+          >月参加吉林省大学生就业能力拓展训练
+        </el-col>
+        <el-col :span="5" class="context">
+          <el-col :span="1">第 </el-col><el-col :span="2" class="zhuanye">{{ zhengshuList.term }}</el-col
+          ><el-col :span="16">期培训班。培训合格特发此证</el-col></el-col
+        >
+        <el-col :span="5" class="context_1">
+          <el-col :span="18">证书编号:{{ zhengshuList.bianhao }}</el-col
+          ><el-col :span="2"></el-col>{{ zhengshuList.years }}年<el-col :span="2"> </el-col>{{ zhengshuList.morths }}月<el-col :span="2"> </el-col>
+          {{ zhengshuList.datas }}日
+        </el-col>
+
+        <el-col>
+          <button size="mini">打印证书</button>
+        </el-col>
+      </el-col>
+    </el-col>
+  </div>
+</template>
+
+<script>
+import listFrame from '@frame/layout/admin/list-frame';
+import dataTable from '@frame/components/data-table';
+import { createNamespacedHelpers } from 'vuex';
+const { mapActions } = createNamespacedHelpers('questionnaire');
+
+export default {
+  name: 'index',
+  props: {},
+  components: {},
+  data: () => ({
+    zhengshuList: {
+      school: '吉林大学',
+      major: '计算机',
+      name: 'xiaoxiao',
+      marth: '29',
+      year: '2020',
+      term: '123',
+      dataji: '2020级',
+      bianhao: '042345672',
+      years: '2020',
+      morths: '2',
+      datas: '24',
+    },
+    lists: [
+      { label: '第一批次', value: 0 },
+      { label: '第二批次', value: 1 },
+      { label: '第三批次', value: 2 },
+      { label: '特殊批次', value: 3 },
+    ],
+    list: [
+      { label: '一班', value: 0 },
+      { label: '二班', value: 1 },
+      { label: '三班', value: 2 },
+      { label: '四班', value: 3 },
+      { label: '五班', value: 4 },
+      { label: '六班', value: 5 },
+      { label: '七班', value: 6 },
+    ],
+    opera: [
+      {
+        label: '编辑',
+        icon: 'el-icon-edit',
+        method: 'edit',
+      },
+      {
+        label: '查看证书',
+        icon: 'el-icon-document',
+        method: 'document',
+      },
+      {
+        label: '删除',
+        icon: 'el-icon-delete',
+        method: 'delete',
+      },
+    ],
+    fields: [
+      { label: '姓名', prop: 'name' },
+      { label: '期数', prop: 'term' },
+      {
+        label: '批次',
+        prop: 'batch',
+        format: item => {
+          return item === '0' ? '第一批次' : item === '1' ? '第二批次' : item === '2' ? '第三批次' : item === '3' ? '特殊批次' : '其他';
+        },
+      },
+      {
+        label: '班级',
+        prop: 'class',
+        format: item => {
+          return item === '0'
+            ? '一班'
+            : item === '1'
+            ? '二班'
+            : item === '2'
+            ? '三班'
+            : item === '3'
+            ? '四班'
+            : item === '4'
+            ? '五班'
+            : item === '5'
+            ? '六班'
+            : item === '6'
+            ? '七班'
+            : '其他';
+        },
+      },
+      { label: '成绩', prop: 'grade' },
+    ],
+    filFields: [
+      { label: '姓名', model: 'term' },
+      { label: '期数', model: 'term' },
+
+      {
+        label: '批次',
+        model: 'batch',
+        type: 'select',
+      },
+      {
+        label: '班级',
+        model: 'class',
+        type: 'select',
+      },
+    ],
+    index: [],
+    total: 0,
+  }),
+
+  created() {},
+  computed: {},
+  methods: {
+    ...mapActions(['query', 'delete']),
+    // 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);
+    //   }
+    // },
+    toDocument({ data }) {
+      this.$router.push({ path: '/certificaate/look', query: { id: data.id } });
+    },
+    toEdit({ data }) {
+      this.$router.push({ path: '/questionnaire/detail', query: { id: data.id } });
+    },
+    async toDelete({ data }) {
+      const res = await this.delete(data.id);
+      this.$checkRes(res, '删除成功', '删除失败');
+      this.search();
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped>
+.info_1 {
+  padding: 0 20px 0 20px;
+}
+.title {
+  font-size: 20px;
+  font-weight: 700;
+}
+.info {
+  height: 75px;
+}
+.context {
+  height: 60px;
+
+  width: 600px;
+}
+.context_2 {
+  height: 60px;
+
+  width: 598px;
+}
+.context_1 {
+  height: 60px;
+
+  width: 1255px;
+}
+.info_2 {
+  height: 60px;
+}
+.zhuanye {
+  text-align: center;
+}
+</style>

+ 0 - 0
src/views/questionstate/detail.vue


+ 132 - 0
src/views/questionstate/index.vue

@@ -0,0 +1,132 @@
+<template>
+  <div id="index">
+    <list-frame title="问卷状态页" :total="total" :filter="filFields" @add="$router.push({ path: '/questionnaire/detail' })">
+      <template #options="{item}">
+        <template v-if="item.model == 'class'">
+          <el-option v-for="(item, index) in list" :key="index" :value="item.label"></el-option>
+        </template>
+        <template v-if="item.model == 'batch'">
+          <el-option v-for="(item, index) in lists" :key="index" :value="item.label"></el-option>
+        </template>
+      </template>
+
+      <data-table :fields="fields" :data="index" :opera="opera"></data-table>
+    </list-frame>
+  </div>
+</template>
+
+<script>
+import listFrame from '@frame/layout/admin/list-frame';
+import dataTable from '@frame/components/data-table';
+// import { createNamespacedHelpers } from 'vuex';
+// const { mapActions } = createNamespacedHelpers('questionnaire');
+
+export default {
+  name: 'index',
+  props: {},
+  components: {
+    listFrame,
+    dataTable,
+  },
+  data: () => ({
+    lists: [
+      { label: '第一批次', value: 0 },
+      { label: '第二批次', value: 1 },
+      { label: '第三批次', value: 2 },
+      { label: '特殊批次', value: 2 },
+    ],
+    list: [
+      { label: '一班', value: 0 },
+      { label: '二班', value: 1 },
+      { label: '三班', value: 2 },
+      { label: '四班', value: 3 },
+      { label: '五班', value: 4 },
+      { label: '六班', value: 5 },
+      { label: '七班', value: 6 },
+    ],
+    opera: [
+      // {
+      //   label: '编辑',
+      //   icon: 'el-icon-edit',
+      //   method: 'edit',
+      // },
+      // {
+      //   label: '删除',
+      //   icon: 'el-icon-delete',
+      //   method: 'delete',
+      // },
+    ],
+    fields: [
+      { label: '期数', prop: 'term' },
+      {
+        label: '批次',
+        prop: 'batch',
+        format: item => {
+          return item === '0' ? '第一批次' : item === '1' ? '第二批次' : item === '2' ? '第三批次' : item === '3' ? '特殊批次' : '其他';
+        },
+      },
+      {
+        label: '班级',
+        prop: 'class',
+        format: item => {
+          return item === '0'
+            ? '一班'
+            : item === '1'
+            ? '二班'
+            : item === '2'
+            ? '三班'
+            : item === '3'
+            ? '四班'
+            : item === '4'
+            ? '五班'
+            : item === '5'
+            ? '六班'
+            : item === '6'
+            ? '七班'
+            : '其他';
+        },
+      },
+      { label: '问卷进度', prop: 'id' },
+    ],
+    filFields: [
+      { label: '期数', model: 'term' },
+
+      {
+        label: '批次',
+        model: 'batch',
+        type: 'select',
+      },
+      {
+        label: '班级',
+        model: 'class',
+        type: 'select',
+      },
+    ],
+    index: [],
+    total: 0,
+  }),
+
+  created() {},
+  computed: {},
+  methods: {
+    // ...mapActions(['query', 'delete']),
+    // 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);
+    //   }
+    // },
+    // toEdit({ data }) {
+    //   this.$router.push({ path: '/questionnaire/detail', query: { id: data.id } });
+    // },
+    // async toDelete({ data }) {
+    //   const res = await this.delete(data.id);
+    //   this.$checkRes(res, '删除成功', '删除失败');
+    //   this.search();
+    //},
+  },
+};
+</script>
+
+<style lang="less" scoped></style>