lrf402788946 5 năm trước cách đây
mục cha
commit
6db3aa3e48

+ 1 - 0
package.json

@@ -18,6 +18,7 @@
     "element-ui": "^2.13.0",
     "jsonwebtoken": "^8.5.1",
     "lodash": "^4.17.15",
+    "moment": "^2.24.0",
     "naf-core": "^0.1.2",
     "qrcode": "^1.4.4",
     "vue": "^2.6.10",

+ 1 - 0
src/main.js

@@ -7,6 +7,7 @@ import '@/plugins/axios';
 import '@/plugins/check-res';
 import '@/plugins/element';
 import '@/plugins/setting';
+import '@/plugins/moment';
 import '@/plugins/dateM';
 import InitStomp from '@/plugins/stomp';
 

+ 16 - 0
src/plugins/moment.js

@@ -0,0 +1,16 @@
+import Vue from 'vue';
+import moment from 'moment';
+
+const vm = new Vue({});
+const Plugin = {
+  install(Vue, options) {
+    // 4. 添加实例方法
+    Vue.prototype.$moment = moment;
+    Vue.prototype.$addZero = data => {
+      if (data * 1 < 10) return `0${data}`;
+      else return data;
+    };
+  },
+};
+
+Vue.use(Plugin);

+ 12 - 0
src/router/index.js

@@ -262,6 +262,18 @@ const routes = [
         meta: { title: '课程模板', sub: '' },
         component: () => import('@/views/lesson/detail.vue'),
       },
+      {
+        path: '/school/index',
+        name: 'school_index',
+        meta: { title: '学校管理', sub: '' },
+        component: () => import('@/views/school/index.vue'),
+      },
+      {
+        path: '/school/detail',
+        name: 'school_detail',
+        meta: { title: '学校信息', sub: '' },
+        component: () => import('@/views/school/detail.vue'),
+      },
     ],
   },
   {

+ 2 - 2
src/views/bedroom/detail.vue

@@ -35,14 +35,14 @@ export default {
       { label: '寝室号', required: true, model: 'code' },
       { label: '人数', required: true, model: 'number' },
       { label: '批次', required: true, model: 'batch' },
-      { label: '男女限制', required: true, model: 'gender', type: 'radio' },
+      { label: '男女限制', model: 'gender', type: 'radio' },
+      { label: '状态', model: 'status', type: 'radio' },
       { label: '楼层', required: true, model: 'floor', type: 'radio' },
     ],
     rules: {
       code: [{ required: true, message: '请输入寝室号' }],
       number: [{ required: true, message: '请输入人数' }],
       batch: [{ required: true, message: '请输入批次' }],
-      gender: [{ required: true, message: '请选择男女限制' }],
       floor: [{ required: true, message: '请选择楼层' }],
     },
   }),

+ 23 - 2
src/views/bedroom/index.vue

@@ -1,7 +1,7 @@
 <template>
   <div id="index">
     <list-frame title="寝室管理" @query="search" :total="total" :needFilter="false" @add="$router.push({ path: '/bedroom/detail' })">
-      <data-table :fields="fields" :data="list" :opera="opera" @edit="toEdit" @delete="toDelete"></data-table>
+      <data-table :fields="fields" :data="list" :opera="opera" @edit="toEdit" @delete="toDelete" @use="toUse"></data-table>
     </list-frame>
   </div>
 </template>
@@ -31,6 +31,18 @@ export default {
         icon: 'el-icon-delete',
         method: 'delete',
       },
+      {
+        label: '禁用',
+        icon: 'el-icon-video-pause',
+        method: 'use',
+        display: i => i.status === '0',
+      },
+      {
+        label: '使用',
+        icon: 'el-icon-video-play',
+        method: 'use',
+        display: i => i.status === '1',
+      },
     ],
     fields: [
       { label: '寝室号', prop: 'code' },
@@ -38,6 +50,7 @@ export default {
       { label: '批次', prop: 'batch' },
       { label: '男女限制', prop: 'gender' },
       { label: '楼层', prop: 'floor' },
+      { label: '状态', prop: 'status', format: i => (i === '0' ? '使用中' : '已禁用') },
     ],
     list: [],
     total: 0,
@@ -47,7 +60,7 @@ export default {
   },
   computed: {},
   methods: {
-    ...mapActions(['query', 'delete']),
+    ...mapActions(['query', 'delete', 'update']),
     async search({ skip = 0, limit = 10, ...info } = {}) {
       const res = await this.query({ skip, limit, ...info });
       if (this.$checkRes(res)) {
@@ -63,6 +76,14 @@ export default {
       this.$checkRes(res, '删除成功', '删除失败');
       this.search();
     },
+    async toUse({ data }) {
+      console.log(data);
+      let newData = JSON.parse(JSON.stringify(data));
+      if (newData.status === '0') newData.status = '1';
+      else newData.status = '0';
+      let res = await this.update(newData);
+      if (this.$checkRes(res)) this.search();
+    },
   },
 };
 </script>

+ 24 - 2
src/views/leave/index.vue

@@ -1,6 +1,21 @@
 <template>
   <div id="index">
     <list-frame :title="mainTitle" @query="search" :total="total" :needAdd="false" :needFilter="false">
+      <!-- <el-form :inline="true" size="mini">
+        <el-form-item label="选择计划">
+          <el-select v-model="searchInfo.planid" @change="getTerm" clearable>
+            <el-option v-for="(i, index) in planList" :key="index" :label="i.title" :value="i.id"></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="选择期">
+          <el-select v-model="searchInfo.termid" clearable>
+            <el-option v-for="(i, index) in termList" :key="index" :label="i.term" :value="i._id"></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item>
+          <el-button type="primary" @click="search">查询</el-button>
+        </el-form-item>
+      </el-form> -->
       <data-table :fields="fields" :data="list" :opera="opera"></data-table>
     </list-frame>
   </div>
@@ -12,6 +27,7 @@ import dataTable from '@frame/components/data-table';
 import { createNamespacedHelpers } from 'vuex';
 const { mapActions } = createNamespacedHelpers('leave');
 const { mapActions: mapstudent } = createNamespacedHelpers('student');
+const { mapActions: trainplan } = createNamespacedHelpers('trainplan');
 export default {
   metaInfo: { title: '请假和退出管理' },
   name: 'index',
@@ -44,12 +60,14 @@ export default {
         },
       },
     ],
+    searchInfo: {},
     list: [],
+    planList: [],
+    termList: [],
     total: 0,
   }),
   created() {
     this.search();
-    this.searchinfo();
   },
   computed: {
     mainTitle() {
@@ -79,7 +97,11 @@ export default {
       this.$set(this, `total`, res.total);
     },
 
-    async searchinfo() {},
+    getTerm(data) {
+      let term = this.planList.find(f => f.id === data);
+      if (term) this.$set(this, `termList`, term.termnum);
+      else this.$set(this, `termList`, []);
+    },
   },
 };
 </script>

+ 118 - 43
src/views/lesson/detail.vue

@@ -9,7 +9,7 @@
         </template>
         <template #custom="{item}">
           <template v-if="item.model === 'lesson'">
-            <el-table :data="arrList" stripe border>
+            <el-table :data="lessons" 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>
@@ -31,22 +31,47 @@
     </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>
+        <el-tab-pane label="课程安排" style="height:93vh;">
+          <el-scrollbar style="height:100%;overflow-x:hidden">
+            <data-form :styles="{ padding: 0 }" :data="form" :fields="oFields" :rules="{}" @save="handleOsave" :isNew="false">
+              <template #radios="{item, form}">
+                <template v-if="isType(item.model, 'radio')">
+                  <el-radio v-for="(i, index) in dayType" :key="index" :label="i.label">{{ i.label }}</el-radio>
+                </template>
+              </template>
+              <template #custom="{item, form}">
+                <template v-if="item.model === 'time'">
+                  <el-time-picker
+                    is-range
+                    v-model="form.time"
+                    range-separator="至"
+                    start-placeholder="开始时间"
+                    end-placeholder="结束时间"
+                    placeholder="选择时间范围"
+                    size="mini"
+                    value-format="HH:mm"
+                    format="HH:mm"
+                  >
+                  </el-time-picker>
+                </template>
+                <template v-if="isType(item.model, 'select')">
+                  <template v-if="form[`${item.model}type`] === '活动'">
+                    <el-select v-model="form[item.model]">
+                      <el-option v-for="(i, index) in actList" :key="index" :label="i.label" :value="i.label"></el-option>
+                    </el-select>
+                  </template>
+                  <template v-else-if="form[`${item.model}type`] === '课程'">
+                    <el-select v-model="form[`${item.model}subid`]">
+                      <el-option v-for="(i, index) in subjectList" :key="index" :label="i.name" :value="i.id"></el-option>
+                    </el-select>
+                  </template>
+                  <template v-else>
+                    请选择当前时间段活动类型
+                  </template>
+                </template>
               </template>
-            </template>
-          </data-form>
+            </data-form>
+          </el-scrollbar>
         </el-tab-pane>
       </el-tabs>
     </el-drawer>
@@ -56,7 +81,10 @@
 <script>
 import detailFrame from '@frame/layout/admin/detail-frame';
 import dataForm from '@frame/components/form';
+import { lesson } from '@frame/config/lesson-template';
+import _ from 'lodash';
 import { mapState, createNamespacedHelpers } from 'vuex';
+const { mapActions: subject } = createNamespacedHelpers('subject');
 export default {
   name: 'detail',
   props: {},
@@ -69,7 +97,7 @@ export default {
       fields: [
         { label: '模板名称', required: true, model: 'title' },
         { label: '类型', required: true, model: 'type', type: 'radio' },
-        { label: '课程安排', required: true, model: 'lesson', custom: true },
+        { label: '课程安排', model: 'lesson', custom: true },
       ],
       types: [
         { label: '普通班', value: '0' },
@@ -79,18 +107,43 @@ export default {
         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: '结业仪式' },
+      oFields: [
+        { label: '时间', model: 'time', type: 'time', custom: true },
+        { label: '第一天类型', model: 'day1type', type: 'radio' },
+        { label: '第一天安排', model: 'day1', custom: true },
+        { label: '第二天类型', model: 'day2type', type: 'radio' },
+        { label: '第二天安排', model: 'day2', custom: true },
+        { label: '第三天类型', model: 'day3type', type: 'radio' },
+        { label: '第三天安排', model: 'day3', custom: true },
+        { label: '第四天类型', model: 'day4type', type: 'radio' },
+        { label: '第四天安排', model: 'day4', custom: true },
+        { label: '第五天类型', model: 'day5type', type: 'radio' },
+        { label: '第五天安排', model: 'day5', custom: true },
+        { label: '第六天类型', model: 'day6type', type: 'radio' },
+        { label: '第六天安排', model: 'day6', custom: true },
       ],
+      lessons: lesson,
+      dayType: [{ label: '活动' }, { label: '课程' }],
+      actList: [
+        { label: '--' },
+        { label: '报道+开班仪式' },
+        { label: '午餐+休息' },
+        { label: '晚餐' },
+        { label: '团队组建' },
+        { label: '拓展交流' },
+        { label: '课程作业小组展示' },
+        { label: '课程作业' },
+        { label: '礼仪课小组面试' },
+        { label: '结业仪式' },
+      ],
+      subjectList: [],
     };
   },
   created() {},
   methods: {
+    ...subject({
+      getSubjectList: 'query',
+    }),
     async search() {
       const res = await this.fetch(this.id);
       if (this.$checkRes(res)) this.$set(this, `info`, res.data);
@@ -99,31 +152,49 @@ export default {
     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' });
+      data.lessons = JSON.stringify(this.lessons);
+      console.log(data);
+      // 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);
+    async toEdit(data, index) {
+      let newData = JSON.parse(JSON.stringify(data));
+      newData.index = index;
+      let times = newData.time.split('-');
+      if (times.length === 2) newData.time = times;
+      let subject = await this.getSubjectList({ type: this.info.type });
+      if (subject.errcode === 0) this.$set(this, `subjectList`, subject.data);
+      this.$set(this, `form`, newData);
       this.drawer = true;
     },
     handleOsave({ data }) {
-      console.log(data);
+      data.time = _.join(data.time, '-');
+      let index = JSON.parse(JSON.stringify(data.index));
+      let keys = Object.keys(data);
+      let midArr = keys.filter(f => /^day\d$/.test(f));
+      for (const key of midArr) {
+        if (data[`${key}type`] === '课程') data[key] = this.subjectList.find(f => f.id === data[`${key}subid`]).name;
+        else delete data[`${key}subid`];
+      }
+      data = _.omit(data, ['index']);
+      this.$set(this.lessons, index, data);
+      this.drawer = false;
     },
     toClose() {
       this.drawer = false;
+      this.form = {};
+    },
+    isType(model, type) {
+      let reg;
+      if (type === 'radio') reg = /^day\dtype$/;
+      else reg = /^day\d$/;
+      return reg.test(model);
     },
   },
   watch: {
@@ -152,4 +223,8 @@ export default {
 };
 </script>
 
-<style lang="less" scoped></style>
+<style lang="less">
+.el-scrollbar__wrap {
+  overflow-x: auto !important;
+}
+</style>

+ 2 - 0
src/views/plan/detail.vue

@@ -213,6 +213,7 @@ export default {
         object.batchnum = this.selectList
           .filter(fil => fil.term === i)
           .map(b => {
+            console.log(b);
             b = _.pickBy(b, (val, key) => key !== 'term');
             b.startdate = JSON.parse(JSON.stringify(b.start));
             b.enddate = JSON.parse(JSON.stringify(b.end));
@@ -235,6 +236,7 @@ export default {
         return object;
       });
       data.festivals = vacation;
+      console.log(data);
       let res;
       let msg;
       if (this.isNew) {

+ 83 - 0
src/views/school/detail.vue

@@ -0,0 +1,83 @@
+<template>
+  <div id="detail">
+    <detail-frame :title="pageTitle" returns="./index">
+      <data-form :data="info" :fields="fields" :rules="rules" @save="handleSave" :isNew="isNew"> </data-form>
+    </detail-frame>
+  </div>
+</template>
+
+<script>
+import detailFrame from '@frame/layout/admin/detail-frame';
+import dataForm from '@frame/components/form';
+import { mapState, createNamespacedHelpers } from 'vuex';
+const { mapActions: school } = createNamespacedHelpers('school');
+export default {
+  name: 'detail',
+  props: {},
+  components: { detailFrame, dataForm },
+  data: () => {
+    return {
+      info: {},
+      fields: [
+        { label: '学校名称', required: true, model: 'name' },
+        { label: '学校代码', required: true, model: 'code' },
+        { label: '学校地点', required: true, model: 'place' },
+        { label: '学校简称', required: true, model: 'shortname' },
+      ],
+      rules: {
+        name: [{ required: true, message: '请输入学校名称' }],
+        code: [{ required: true, message: '请输入学校代码' }],
+        place: [{ required: true, message: '请选择学校地点' }],
+        shortname: [{ required: true, message: '请输入学校简称' }],
+      },
+    };
+  },
+  created() {},
+  methods: {
+    ...school(['fetch', 'update']),
+    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.keyWord}添加成功`;
+      } else {
+        res = await this.update(data);
+        msg = `${this.keyWord}修改成功`;
+      }
+      if (this.$checkRes(res, msg)) this.$router.push({ path: '/dept/index' });
+    },
+  },
+  computed: {
+    ...mapState(['user']),
+    id() {
+      return this.$route.query.id;
+    },
+    isNew() {
+      return this.$route.query.id ? false : true;
+    },
+    pageTitle() {
+      return `${this.$route.meta.title}`;
+    },
+  },
+  watch: {
+    isNew: {
+      immediate: true,
+      handler(val) {
+        if (val) this.loading = false;
+        else this.search();
+      },
+    },
+  },
+  metaInfo() {
+    return { title: this.$route.meta.title };
+  },
+};
+</script>
+
+<style lang="less" scoped></style>

+ 78 - 0
src/views/school/index.vue

@@ -0,0 +1,78 @@
+<template>
+  <div id="index">
+    <list-frame :title="pageTitle" @query="search" :total="total" :needFilter="false" @add="$router.push({ path: '/dept/detail' })">
+      <data-table :fields="fields" :data="list" :opera="opera" @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 { mapState, createNamespacedHelpers } from 'vuex';
+const { mapActions: school } = createNamespacedHelpers('school');
+export default {
+  name: 'index',
+  props: {},
+  components: { listFrame, dataTable },
+  data: () => {
+    return {
+      opera: [
+        {
+          label: '编辑',
+          icon: 'el-icon-edit',
+          method: 'edit',
+        },
+        {
+          label: '删除',
+          icon: 'el-icon-delete',
+          method: 'delete',
+          confirm: true,
+        },
+      ],
+      fields: [
+        { label: '学校名称', prop: 'name' },
+        { label: '学校代码', prop: 'code' },
+        { label: '学校地点', prop: 'place' },
+        { label: '学校简称', prop: 'shortname' },
+      ],
+      list: [],
+      total: 0,
+    };
+  },
+  created() {
+    this.search();
+  },
+  methods: {
+    ...school(['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: './detail', query: { id: data.id } });
+    },
+
+    async toDelete({ data }) {
+      const res = await this.delete(data.id);
+      this.$checkRes(res, '删除成功', '删除失败');
+      this.search();
+    },
+  },
+  computed: {
+    ...mapState(['user']),
+    pageTitle() {
+      return `${this.$route.meta.title}`;
+    },
+  },
+  metaInfo() {
+    return { title: this.$route.meta.title };
+  },
+};
+</script>
+
+<style lang="less" scoped></style>

+ 36 - 32
src/views/student/index.vue

@@ -1,6 +1,21 @@
 <template>
   <div id="index">
     <list-frame title="学生管理" @query="search" :total="total" :needFilter="false" @add="$router.push({ path: '/student/detail' })">
+      <el-form :inline="true" size="mini">
+        <el-form-item label="选择计划">
+          <el-select v-model="searchInfo.planid" @change="getTerm" clearable>
+            <el-option v-for="(i, index) in planList" :key="index" :label="i.title" :value="i.id"></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="选择期">
+          <el-select v-model="searchInfo.termid" clearable>
+            <el-option v-for="(i, index) in termList" :key="index" :label="i.term" :value="i._id"></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item>
+          <el-button type="primary" @click="search">查询</el-button>
+        </el-form-item>
+      </el-form>
       <data-table :fields="fields" :data="list" :opera="opera" @edit="toEdit" @delete="toDelete"></data-table>
     </list-frame>
   </div>
@@ -11,6 +26,7 @@ import listFrame from '@frame/layout/admin/list-frame';
 import dataTable from '@frame/components/data-table';
 import { createNamespacedHelpers } from 'vuex';
 const { mapActions } = createNamespacedHelpers('student');
+const { mapActions: trainplan } = createNamespacedHelpers('trainplan');
 
 export default {
   metaInfo: { title: '学生管理' },
@@ -39,53 +55,32 @@ export default {
       { label: '性别', prop: 'gender' },
       { label: '民族', prop: 'nation' },
       { label: '身份证号', prop: 'id_number' },
+      { label: '期', prop: 'term' },
+      { label: '批次', prop: 'batch' },
+      { label: '班级', prop: 'class' },
       { label: '学校', prop: 'school_name' },
       { label: '院系', prop: 'faculty' },
       { label: '专业', prop: 'major' },
-      { label: '入学年份', prop: 'entry_year' },
-      { label: '毕业年份', prop: 'finish_year' },
-      { label: '在校曾担任何种职务', prop: 'school_job' },
       { label: '手机号', prop: 'phone' },
-      { label: 'QQ号', prop: 'qq' },
       { label: '邮箱', prop: 'email' },
-      { label: '家庭所在地', prop: 'family_place' },
-      {
-        label: '家庭是否困难',
-        prop: 'family_is_hard',
-        format: item => {
-          return item === '1' ? '是' : '否';
-        },
-      },
-      {
-        label: '是否获得过助学金',
-        prop: 'have_grant',
-        format: item => {
-          return item === '1' ? '是' : '否';
-        },
-      },
-      { label: '职务', prop: 'job' },
-      { label: '期', prop: 'term' },
-      { label: '批次', prop: 'batch' },
-      { label: '班级', prop: 'class' },
-      {
-        label: '是否优秀',
-        prop: 'is_fine',
-        format: item => {
-          return item === '1' ? '是' : '否';
-        },
-      },
     ],
+    searchInfo: {},
     list: [],
+    planList: [],
+    termList: [],
     total: 0,
   }),
   created() {
-    this.search();
+    this.getPlan();
   },
   computed: {},
   methods: {
+    ...trainplan({ getPlanList: 'query' }),
     ...mapActions(['query', 'delete']),
     async search({ skip = 0, limit = 10, ...info } = {}) {
-      const res = await this.query({ skip, limit, ...info });
+      let data;
+      this.searchInfo.termid && this.searchInfo.termid !== '' ? (data = { termid: this.searchInfo.termid }) : '';
+      const res = await this.query({ skip, limit, ...data });
       if (this.$checkRes(res)) {
         this.$set(this, `list`, res.data);
         this.$set(this, `total`, res.total);
@@ -99,6 +94,15 @@ export default {
       this.$checkRes(res, '删除成功', '删除失败');
       this.search();
     },
+    async getPlan() {
+      let res = await this.getPlanList();
+      if (res.errcode === 0) this.$set(this, `planList`, res.data);
+    },
+    getTerm(data) {
+      let term = this.planList.find(f => f.id === data);
+      if (term) this.$set(this, `termList`, term.termnum);
+      else this.$set(this, `termList`, []);
+    },
   },
 };
 </script>

+ 1 - 3
src/views/subject/index.vue

@@ -35,7 +35,7 @@ export default {
     fields: [
       { label: '科目名称', prop: 'name' },
       { label: '科目代码', prop: 'code' },
-       { label: '类型', prop: 'type' },
+      { label: '类型', prop: 'type', format: i => (i === '0' ? '普通班' : '特殊班') },
     ],
     filFields: [
       { label: '科目名称', model: 'name' },
@@ -52,8 +52,6 @@ export default {
     ...mapActions(['query', 'delete']),
     async search({ skip = 0, limit = 10, ...info } = {}) {
       const res = await this.query({ skip, limit, ...info });
-      console.log(res.data);
-      
       if (this.$checkRes(res)) {
         this.$set(this, `list`, res.data);
         this.$set(this, `total`, res.total);