Browse Source

更新很多

lrf402788946 4 years ago
parent
commit
12efa3c158

BIN
public/teacherScoreTemplate.xlsx


+ 58 - 40
src/views/lesson/detail.vue

@@ -4,28 +4,24 @@
       <data-form :data="info" :fields="fields" :rules="rules" @save="handleSave" :isNew="isNew" :reset="false">
         <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 v-if="item.model === 'allday'">
-            <el-radio label="0">全天</el-radio>
-            <el-radio label="1">半天</el-radio>
+            <el-radio v-for="(i, index) in types" :key="index" :label="i.code">{{ i.name }}</el-radio>
           </template>
         </template>
         <template #custom="{item}">
           <template v-if="item.model === 'lesson'">
-            <el-row>
-              <el-col :span="24" style="text-align:right; padding:10px">
-                <el-button type="primary" size="mini" @click="drawer = true">添加时间段</el-button>
+            <el-row type="flex" align="middle" justify="end" class="btn_bar">
+              <el-col :span="2">
+                <el-button type="primary" size="mini" @click="toAddEvent">添加时间段</el-button>
               </el-col>
+              <el-col :span="2">
+                <el-button type="primary" size="mini" @click="toAddDay">添加天数</el-button>
+              </el-col>
+            </el-row>
+            <el-row>
               <el-col :span="24">
                 <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>
-                  <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 align="center" v-for="(d, index) in dayList" :key="index" :label="d.label" :prop="d.prop"></el-table-column>
                   <el-table-column label="操作" align="center">
                     <template v-slot="{ row, $index }">
                       <el-row type="flex" align="middle" justify="center">
@@ -107,6 +103,7 @@ import _ from 'lodash';
 import { mapState, createNamespacedHelpers } from 'vuex';
 const { mapActions: subject } = createNamespacedHelpers('subject');
 const { mapActions: lesson } = createNamespacedHelpers('lesson');
+const { mapActions: classtype } = createNamespacedHelpers('classtype');
 export default {
   name: 'detail',
   props: {},
@@ -114,36 +111,22 @@ export default {
   data: () => {
     return {
       drawer: false,
-      info: {},
+      info: { type: '0' },
       form: {},
       fields: [
         { label: '模板名称', required: true, model: 'title' },
-        // { label: '类型', required: true, model: 'type', type: 'radio' },
-        { label: '最后一天时长', required: true, model: 'allday', type: 'radio' },
+        { label: '类型', required: true, model: 'type', type: 'radio' },
         { label: '课程安排', model: 'lesson', custom: true },
       ],
-      types: [
-        { label: '普通班', value: '0' },
-        { label: '特殊班', value: '1' },
-      ],
+      types: [],
       rules: {
         title: [{ required: true, message: '请输入模板名称' }],
         type: [{ required: true, message: '请选择模板类型' }],
       },
       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 },
+        // { label: '时间', model: 'time', type: 'time', custom: true },
+        // { label: '第一天类型', model: 'day1type', type: 'radio' },
+        // { label: '第一天安排', model: 'day1', custom: true },
       ],
       lessons: lessons,
       dayType: [{ label: '活动' }, { label: '课程' }],
@@ -159,14 +142,18 @@ export default {
         { label: '礼仪课小组面试' },
         { label: '结业仪式' },
       ],
+      dayList: [],
       subjectList: [],
+      classTypeList: [],
     };
   },
-  created() {},
+  created() {
+    this.getOtherList();
+    this.toSetDayList(6);
+  },
   methods: {
-    ...subject({
-      getSubjectList: 'query',
-    }),
+    ...classtype({ getClassType: 'query' }),
+    ...subject({ getSubjectList: 'query' }),
     ...lesson(['modelFetch', 'modelCreate', 'modelUpdate']),
     async search() {
       const res = await this.modelFetch(this.id);
@@ -183,7 +170,6 @@ export default {
       let msg;
       data.lessons = JSON.stringify(this.lessons);
       if (isNew) {
-        data.type = 1;
         res = await this.modelCreate(data);
         msg = `${this.pageTitle}添加成功`;
       } else {
@@ -200,7 +186,7 @@ export default {
       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;
+      this.toAddEvent();
     },
     handleOsave({ data }) {
       //TODO 将对应另一天的课也改了
@@ -251,6 +237,38 @@ export default {
       else reg = /^day\d$/;
       return reg.test(model);
     },
+    //添加时间段
+    toAddEvent() {
+      let arr = [{ label: '时间', model: 'time', type: 'time', custom: true }];
+      let day = _.get(this.dayList, 'length', 0);
+      for (let i = 1; i <= day; i++) {
+        let obj1 = { label: `第${i}天类型`, model: `day${i}type`, type: 'radio' };
+        let obj2 = { label: `第${i}天安排`, model: `day${i}`, custom: true };
+        arr.push(obj1);
+        arr.push(obj2);
+      }
+      this.$set(this, `oFields`, arr);
+      this.drawer = true;
+    },
+    //添加天数
+    toAddDay() {
+      let len = _.get(this.dayList, 'length', 0);
+      this.toSetDayList(len + 1);
+    },
+    toSetDayList(day) {
+      let res = [];
+      for (let i = 1; i <= day; i++) {
+        let obj = {};
+        obj.label = `第${i}天`;
+        obj.prop = `day${i}`;
+        res.push(obj);
+      }
+      this.$set(this, `dayList`, res);
+    },
+    async getOtherList() {
+      const res = await this.getClassType();
+      if (this.$checkRes(res)) this.$set(this, `types`, res.data);
+    },
   },
   watch: {
     isNew: {

+ 18 - 2
src/views/lesson/index.vue

@@ -1,7 +1,7 @@
 <template>
   <div id="index">
     <list-frame :title="pageTitle" @query="search" :total="total" :needFilter="false" @add="$router.push({ path: '/lesson/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" :toFormat="toFormat"></data-table>
     </list-frame>
   </div>
 </template>
@@ -11,6 +11,7 @@ import listFrame from '@frame/layout/admin/list-frame';
 import dataTable from '@frame/components/data-table';
 import { mapState, createNamespacedHelpers } from 'vuex';
 const { mapActions: lesson } = createNamespacedHelpers('lesson');
+const { mapActions: classtype } = createNamespacedHelpers('classtype');
 export default {
   name: 'index',
   props: {},
@@ -31,16 +32,19 @@ export default {
       ],
       fields: [
         { label: '模板名称', prop: 'title' },
-        // { label: '模板类型', prop: 'type', format: i => (i == 0 ? '普通班' : '特殊班') },
+        { label: '模板类型', prop: 'type', format: true },
       ],
       list: [],
       total: 0,
+      classTypeList: [],
     };
   },
   created() {
     this.search();
+    this.getOtherList();
   },
   methods: {
+    ...classtype({ getClassType: 'query' }),
     ...lesson(['modelQuery', 'modelDelete']),
     async search({ skip = 0, limit = 10, ...info } = {}) {
       const res = await this.modelQuery({ skip, limit, ...info });
@@ -57,6 +61,18 @@ export default {
       this.$checkRes(res, '删除成功', '删除失败');
       this.search();
     },
+    toFormat({ model, value }) {
+      let res = '';
+      if (model == 'type') {
+        let r = this.classTypeList.find(f => f.code == value);
+        if (r) res = r.name;
+      }
+      return res;
+    },
+    async getOtherList() {
+      const res = await this.getClassType();
+      if (this.$checkRes(res)) this.$set(this, `classTypeList`, res.data);
+    },
   },
   computed: {
     ...mapState(['user']),

+ 0 - 3
src/views/new-plan/arrange/arrange/table.vue

@@ -76,10 +76,7 @@ export default {
   created() {},
   methods: {
     getRemark(month, type) {
-      console.log(month, type);
-      console.log(this.remark);
       let res = this.remark.find(f => f.month == month);
-      console.log(res);
       if (res) return _.get(res, type);
     },
     makeCalendar(month = 1) {

+ 31 - 30
src/views/subject/detail.vue

@@ -4,10 +4,7 @@
       <data-form :data="info" :fields="fields" :rules="rules" @save="handleSave" :isNew="isNew">
         <template #radios="{item}">
           <template v-if="item.model === 'type'">
-            <el-radio label="0">
-              普通班
-            </el-radio>
-            <el-radio label="1">特殊班</el-radio>
+            <el-radio v-for="(i, index) in classTypeList" :key="index" :label="i.code">{{ i.name }}</el-radio>
           </template>
         </template>
       </data-form>
@@ -20,6 +17,7 @@ import detailFrame from '@frame/layout/admin/detail-frame';
 import dataForm from '@frame/components/form';
 import { createNamespacedHelpers } from 'vuex';
 const { mapActions } = createNamespacedHelpers('subject');
+const { mapActions: classtype } = createNamespacedHelpers('classtype');
 export default {
   metaInfo: { title: '科目详情页' },
   name: 'detail',
@@ -40,8 +38,36 @@ export default {
       code: [{ required: true, message: '请输入科目名称' }],
       type: [{ required: true, message: '请选择班级类型' }],
     },
+    classTypeList: [],
   }),
-  created() {},
+  created() {
+    this.getOtherList();
+  },
+  methods: {
+    ...classtype({ getClassType: 'query' }),
+    ...mapActions(['fetch', 'create', '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: '/subject/index' });
+    },
+    async getOtherList() {
+      const res = await this.getClassType();
+      if (this.$checkRes(res)) this.$set(this, `classTypeList`, res.data);
+    },
+  },
   computed: {
     id() {
       return this.$route.query.id;
@@ -70,31 +96,6 @@ export default {
       },
     },
   },
-  methods: {
-    ...mapActions(['fetch', 'create', '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);
-        console.log(res);
-
-        msg = `${this.keyWord}添加成功`;
-      } else {
-        console.log(data);
-
-        res = await this.update(data);
-
-        msg = `${this.keyWord}修改成功`;
-      }
-      if (this.$checkRes(res, msg)) this.$router.push({ path: '/subject/index' });
-    },
-  },
 };
 </script>
 

+ 18 - 2
src/views/subject/index.vue

@@ -1,7 +1,7 @@
 <template>
   <div id="index">
     <list-frame title="科目列表页" @query="search" :total="total" :needFilter="false" @add="$router.push('/subject/detail')">
-      <data-table :fields="fields" :data="list" :opera="opera" @edit="toEdit" @work="toWork" @delete="toDelete"></data-table>
+      <data-table :fields="fields" :data="list" :opera="opera" :toFormat="toFormat" @edit="toEdit" @work="toWork" @delete="toDelete"></data-table>
     </list-frame>
   </div>
 </template>
@@ -11,6 +11,7 @@ import listFrame from '@frame/layout/admin/list-frame';
 import dataTable from '@frame/components/data-table';
 import { createNamespacedHelpers } from 'vuex';
 const { mapActions } = createNamespacedHelpers('subject');
+const { mapActions: classtype } = createNamespacedHelpers('classtype');
 export default {
   name: 'index',
   props: {},
@@ -40,7 +41,7 @@ export default {
     fields: [
       { label: '科目名称', prop: 'name' },
       { label: '科目代码', prop: 'code' },
-      { label: '类型', prop: 'type', format: i => (i === '0' ? '普通班' : '特殊班') },
+      { label: '类型', prop: 'type', format: true },
     ],
     filFields: [
       { label: '科目名称', model: 'name' },
@@ -48,12 +49,15 @@ export default {
     ],
     list: [],
     total: 0,
+    classTypeList: [],
   }),
   created() {
     this.search();
+    this.getOtherList();
   },
   computed: {},
   methods: {
+    ...classtype({ getClassType: 'query' }),
     ...mapActions(['query', 'delete']),
     async search({ skip = 0, limit = 10, ...info } = {}) {
       const res = await this.query({ skip, limit, ...info });
@@ -73,6 +77,18 @@ export default {
       this.$checkRes(res, '删除成功', '删除失败');
       this.search();
     },
+    toFormat({ model, value }) {
+      let res = '';
+      if (model == 'type') {
+        let r = this.classTypeList.find(f => f.code == value);
+        if (r) res = r.name;
+      }
+      return res;
+    },
+    async getOtherList() {
+      const res = await this.getClassType();
+      if (this.$checkRes(res)) this.$set(this, `classTypeList`, res.data);
+    },
   },
 };
 </script>

+ 33 - 8
src/views/teacher/index.vue

@@ -6,10 +6,19 @@
           <el-option v-for="(item, index) in gender" :key="index" :value="item.label"></el-option>
         </template>
         <template v-if="item.model == 'status'">
-          <el-option v-for="(item, index) in lists" :key="index" :value="item.label"></el-option>
+          <el-option v-for="(item, index) in lists" :key="index" :label="item.label" :value="item.value"></el-option>
         </template>
       </template>
-      <!-- <data-table :fields="fields" :data="index" :opera="opera" @edit="toEdit" @select="toSelect"></data-table> -->
+      <el-row type="flex" align="middle" justify="end" class="btn_bar">
+        <el-col :span="3">
+          <el-button size="mini" type="primary" @click="downloadTemplate">下载上传教师评分模板</el-button>
+        </el-col>
+        <el-col :span="3">
+          <el-upload action="/files/train/score/upload" :show-file-list="false" :on-success="handleSuccess" :on-error="handleError" multiple>
+            <el-button size="mini" type="primary">点击上传教师评分</el-button>
+          </el-upload>
+        </el-col>
+      </el-row>
       <data-table :fields="fields" :data="list" :opera="opera" @edit="toEdit" @delete="toDelete" @select="toSelect"></data-table>
     </list-frame>
   </div>
@@ -33,11 +42,11 @@ export default {
       { label: '女', value: '女' },
     ],
     lists: [
-      { label: '注册', value: 0 },
-      { label: '确认身份', value: 1 },
-      { label: '资料评分', value: 2 },
-      { label: '面试评分', value: 3 },
-      { label: '确认入库', value: 4 },
+      { label: '注册', value: '0' },
+      { label: '确认身份', value: '1' },
+      { label: '资料评分', value: '2' },
+      { label: '面试评分', value: '3' },
+      { label: '确认入库', value: '4' },
     ],
     opera: [
       {
@@ -71,6 +80,7 @@ export default {
           return item === '0' ? '否' : item === '1' ? '是' : '其他';
         },
       },
+      { label: '学生评分', prop: 'xsscore', options: { width: `100px` } },
       { label: '资料评分', prop: 'zlscore', options: { width: `100px` } },
       { label: '面试评分', prop: 'msscore', options: { width: `100px` } },
 
@@ -114,7 +124,7 @@ export default {
   },
   computed: {},
   methods: {
-    ...mapActions(['query', 'delete']),
+    ...mapActions(['query', 'delete', 'scoreImport']),
     async search({ skip = 0, limit = 10, ...info } = {}) {
       const res = await this.query({ skip, limit, ...info });
       if (this.$checkRes(res)) {
@@ -134,6 +144,21 @@ export default {
       this.$checkRes(res, '删除成功', '删除失败');
       this.search();
     },
+    //上传成功
+    async handleSuccess(res, file) {
+      if (this.$checkRes(res)) {
+        let r = await this.scoreImport(res.uri);
+        if (this.$checkRes(r, '上传成功', r.errmsg || '上传失败')) this.search();
+      }
+    },
+    //上传失败
+    handleError(err, file) {
+      console.log(err, file);
+      this.$message.error('请重新上传或联系开发人员');
+    },
+    downloadTemplate() {
+      window.open('/teacherScoreTemplate.xlsx');
+    },
   },
 };
 </script>

+ 2 - 0
src/views/train-plan/class-lesson.vue

@@ -44,6 +44,7 @@ export default {
       lyTeacherList: [],
       headTeacherList: [],
       deptList: [],
+      result: [],
     };
   },
   created() {},
@@ -73,6 +74,7 @@ export default {
       } else {
         this.result.push({ from, result });
       }
+      console.log(this.result);
       if (this.result.length == 2) {
         let resR = this.result.every(e => e.result == true);
         if (resR) this.$message.success('保存成功');

+ 28 - 2
src/views/train-plan/parts/class-table.vue

@@ -23,7 +23,7 @@
     </el-card>
 
     <el-drawer :visible.sync="drawer" direction="rtl" title="课程安排" @close="toClose">
-      <data-form :data="form" :fields="fields" :rules="{}" @save="handleSave" :reset="false">
+      <data-form :data="form" :fields="resetForm()" :rules="{}" @save="handleSave" :reset="false">
         <template #radios="{item, form}">
           <template v-if="item.model == 'type'">
             <el-radio @change="radioClearForm" v-for="(i, index) in dayType" :key="index" :label="i.label">{{ i.label }}</el-radio>
@@ -41,6 +41,7 @@
         <template #custom="{item, form}">
           <template v-if="item.model == 'teaname'">
             <el-input v-model="form.teaname" :readonly="true" placeholder="点击选择教师" @click.native="toChooseTeacher"></el-input>
+            <!-- <el-input v-model="form.reason" v-if="needReason()" placeholder="请填写修改教师原因"></el-input> -->
           </template>
         </template>
       </data-form>
@@ -97,6 +98,7 @@ export default {
   data: function() {
     var that = this;
     return {
+      oLessonList: [],
       lessonInfo: {},
       lessonList: [],
       dateList: [],
@@ -149,6 +151,7 @@ export default {
         }
         this.$set(this, `lessonInfo`, _.omit(res.data, ['lessons']));
         let arr = _.get(res.data, `lessons`, []);
+        this.$set(this, `oLessonList`, _.cloneDeep(arr));
         let x = this.getX(JSON.parse(JSON.stringify(arr)));
         this.getY(JSON.parse(JSON.stringify(arr)));
         this.$set(this, `dateList`, x);
@@ -195,7 +198,7 @@ export default {
       let yIndex = this.lessonList.findIndex(f => f.time == time);
       let obj = {};
       if (type == '课程') {
-        obj = _.pick(data, ['subid', 'teaid', 'teaname', '_id']);
+        obj = _.pick(data, ['subid', 'teaid', 'teaname', '_id', 'reason']);
         let r = this.subjectList.find(f => f.id == obj.subid);
         if (r) obj.subname = r.name;
       } else {
@@ -276,6 +279,7 @@ export default {
       if (_.get(data, `subid_day${index}`)) obj[`subid`] = _.get(data, `subid_day${index}`);
       if (_.get(data, `teaid_day${index}`)) obj[`teaid`] = _.get(data, `teaid_day${index}`);
       if (_.get(data, `teaname_day${index}`)) obj[`teaname`] = _.get(data, `teaname_day${index}`);
+      if (_.get(data, `reason${index}`)) obj[`reason`] = _.get(data, `reason${index}`);
       if (needDate) {
         //所有的数据都还原了,没必要要index了
         delete obj.index;
@@ -291,6 +295,7 @@ export default {
       if (_.get(data, 'subid')) obj[`subid_day${index}`] = _.get(data, 'subid');
       if (_.get(data, 'teaid')) obj[`teaid_day${index}`] = _.get(data, 'teaid');
       if (_.get(data, 'teaname')) obj[`teaname_day${index}`] = _.get(data, 'teaname');
+      if (_.get(data, 'reason')) obj[`reason${index}`] = _.get(data, 'reason');
       return obj;
     },
     //修改:选择科目/教师后,将次科目的所有数据统一
@@ -392,6 +397,27 @@ export default {
       //重新排序
       this.$set(this, `lessonList`, this.getOrderForTime(this.lessonList));
     },
+    //判断是否修改教师,需要填写修改教师的原因
+    needReason() {
+      if (this.form.reason) return true;
+      else {
+        let { _id, teaid } = this.form;
+        let r = this.oLessonList.find(f => f._id == _id);
+        if (r) {
+          if (_.get(r, 'teaid')) return _.isEqual(teaid, r.teaid);
+          else return false;
+        } else return false;
+        // teaid
+      }
+    },
+    resetForm() {
+      let res = this.needReason();
+      let fields = _.cloneDeep(this.fields);
+      if (res) {
+        fields.push({ label: '修改教师原因', model: 'reason', required: true });
+      }
+      return fields;
+    },
   },
   computed: {
     ...mapState(['user']),

+ 6 - 4
src/views/train-plan/term-lesson.vue

@@ -214,12 +214,13 @@ export default {
           let obj;
           //有课程,则显示课程;没有,显示安排的活动,反正都是用subname字段
           if (r) {
-            let { subname, subid, teaid, teaname, _id: lessonid, date } = r;
+            let { subname, subid, teaid, teaname, _id: lessonid, date, reason } = r;
             obj = { subname, subid };
             obj[`id_${index + 1}`] = teaid;
             obj[`name_${index + 1}`] = teaname;
             obj[`lessonid_${index + 1}`] = lessonid;
             obj[`date`] = date;
+            if (reason) obj[`reason_${index + 1}`] = reason;
           } else {
             let { subname, _id: lessonid, date } = _.head(li);
             obj = { subname };
@@ -502,6 +503,7 @@ export default {
           dClass = this.proClass(dClass, noDeal);
           return shouldDeal;
         });
+        // console.log(claArr);
         //接下来改课表,之前整理过,所以课表除了改过的那些数据外,还有2份,一份在班级列表中(dClass中的lessons);还有一份原始数据在课程列表中(dLessons中的lessons)
         //dClass和dLesson还有claArr可以通过classid建立联系确定唯一
         //现在claArr中的结构是:[[{}],[{}],...] 内部第一层数组按班级分类,也就是说里面的{}都是一个班的数据
@@ -549,7 +551,7 @@ export default {
       });
       let ndClass = dClass.map(i => _.omit(i, ['lessons']));
       let ndLesson = dLesson.map(i => _.omit(i, ['meta']));
-      console.log(ndClass, ndLesson);
+      // console.log(ndClass, ndLesson);
       let res = this.checkClassConfig(dClass);
       if (!res.length > 0) {
         this.toSubmit(ndLesson, ndClass);
@@ -599,8 +601,8 @@ export default {
       );
     },
     lessonDataReturn(data) {
-      let { id: teaid, name: teaname, subid, subname, day = 0 } = data;
-      return { teaid, teaname, subid, subname, day };
+      let { id: teaid, name: teaname, subid, subname, day = 0, reason } = data;
+      return { teaid, teaname, subid, subname, day, reason };
     },
     proClass(classes, data) {
       let obj = {};