Browse Source

上报名单

lrf402788946 5 years ago
parent
commit
eab249fe50
5 changed files with 89 additions and 50 deletions
  1. 1 1
      src/router/index.js
  2. 2 2
      src/store/index.js
  3. 0 0
      src/store/sch-import.js
  4. 1 3
      src/views/plan/index.vue
  5. 85 44
      src/views/scganli/index.vue

+ 1 - 1
src/router/index.js

@@ -30,7 +30,7 @@ const routes = [
       {
       {
         path: '/scganli/index',
         path: '/scganli/index',
         name: 'teacher_list',
         name: 'teacher_list',
-        meta: { title: '上传学生', sub: '管理' },
+        meta: { title: '学生', sub: '管理' },
         component: () => import('@/views/scganli/index.vue'),
         component: () => import('@/views/scganli/index.vue'),
       },
       },
       {
       {

+ 2 - 2
src/store/index.js

@@ -4,7 +4,7 @@ import student from '@center/src/store/student';
 import teacher from '@center/src/store/teacher';
 import teacher from '@center/src/store/teacher';
 import trainplan from '@center/src/store/trainplan';
 import trainplan from '@center/src/store/trainplan';
 import schPlan from './sch-plan';
 import schPlan from './sch-plan';
-import schoolimport from './schoolimport';
+import schimport from './sch-import';
 
 
 Vue.use(Vuex);
 Vue.use(Vuex);
 
 
@@ -12,5 +12,5 @@ export default new Vuex.Store({
   state: {},
   state: {},
   mutations: {},
   mutations: {},
   actions: {},
   actions: {},
-  modules: { student, teacher, trainplan, schPlan, schoolimport },
+  modules: { student, teacher, trainplan, schPlan, schimport },
 });
 });

src/store/schoolimport.js → src/store/sch-import.js


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

@@ -69,9 +69,7 @@ export default {
     },
     },
 
 
     async toUpdate({ data }) {
     async toUpdate({ data }) {
-      // const res = await this.delete(data.id);
-      // this.$checkRes(res, '删除成功', '删除失败');
-      // this.search();
+      this.$router.push({ path: '/scganli/index', query: { id: data.id } });
     },
     },
   },
   },
 };
 };

+ 85 - 44
src/views/scganli/index.vue

@@ -1,39 +1,73 @@
 <template>
 <template>
   <div id="index">
   <div id="index">
-    <list-frame :title="mainTitle" @query="search" :total="total" :needFilter="false" :needAdd="false" @add="$router.push({ path: '/dept/detail' })">
-      <data-table :fields="fields" :data="list" :opera="opera" @edit="toEdit" @update="toUpdate"></data-table>
+    <list-frame :title="mainTitle" @query="search" :total="total" :needFilter="false" :needAdd="false">
+      <data-table :fields="fields" :data="list" :opera="opera" @update="toUpdate"></data-table>
     </list-frame>
     </list-frame>
+    <el-dialog title="上传名单" :visible.sync="dialog" @close="toClose" v-if="dialog">
+      <data-form :data="form" :fields="dataFields" :needSave="false">
+        <template #custom="{ item, form, fieldChange }">
+          <template v-if="item.model === 'filepath'">
+            <upload
+              url="/files/train/upload"
+              :limit="1"
+              :isBtn="true"
+              :showList="true"
+              accept=".xls,.xlsx"
+              listType="text"
+              tip="请上传文件格式为xls或xlsx的excel表格"
+              @upload="uploadSuccess"
+            ></upload>
+          </template>
+        </template>
+        <template #submit>
+          <el-row type="flex" justify="middle">
+            <el-col :span="1">
+              <el-button @click="cerUpdate" type="primary">确认上传</el-button>
+            </el-col>
+          </el-row>
+        </template>
+      </data-form>
+      <data-table :fields="tableFields" :data="errList" v-if="errList.length > 0" :height="300"></data-table>
+    </el-dialog>
   </div>
   </div>
 </template>
 </template>
 
 
 <script>
 <script>
 import listFrame from '@frame/layout/admin/list-frame';
 import listFrame from '@frame/layout/admin/list-frame';
 import dataTable from '@frame/components/data-table';
 import dataTable from '@frame/components/data-table';
+import dataForm from '@frame/components/form';
+import upload from '@frame/components/upload';
 import { createNamespacedHelpers } from 'vuex';
 import { createNamespacedHelpers } from 'vuex';
-const { mapActions } = createNamespacedHelpers('trainplan');
 const { mapActions: schPlan } = createNamespacedHelpers('schPlan');
 const { mapActions: schPlan } = createNamespacedHelpers('schPlan');
+const { mapActions } = createNamespacedHelpers('schimport');
 
 
 export default {
 export default {
-  metaInfo: { title: '上班学生管理' },
+  metaInfo: { title: '上报学生' },
   name: 'index',
   name: 'index',
   props: {},
   props: {},
-  components: { listFrame, dataTable },
+  components: { listFrame, dataTable, dataForm, upload },
   data: () => ({
   data: () => ({
     info: {},
     info: {},
+    dialog: false,
     opera: [
     opera: [
       {
       {
-        label: '添加',
-        icon: 'el-icon-date',
-        method: 'edit',
+        label: '上报时间',
+        icon: 'el-icon-document-add',
+        method: 'update',
       },
       },
-      // {
-      //   label: '上报时间',
-      //   icon: 'el-icon-document',
-      //   method: 'update',
-      // },
     ],
     ],
-    fields: [{ label: '期数', prop: 'newTermnum' }],
-    list: [{ term: {} }],
+    fields: [
+      { label: '期数', prop: 'termnum' },
+      { label: '类型', prop: 'type', format: i => (i === '0' ? '普通班级' : '特殊班级') },
+    ],
+    tableFields: [
+      { label: '姓名', prop: 'name' },
+      { label: '错误', prop: 'msg' },
+    ],
+    list: [],
+    errList: [],
+    form: {},
+    dataFields: [{ label: '上传学生名单', model: 'filepath', custom: true }],
     total: 0,
     total: 0,
   }),
   }),
   created() {
   created() {
@@ -52,48 +86,55 @@ export default {
       let main = meta.title || '';
       let main = meta.title || '';
       return main;
       return main;
     },
     },
+    id() {
+      return this.$route.query.id;
+    },
   },
   },
   methods: {
   methods: {
-    ...mapActions(['query', 'delete']),
+    ...mapActions(['create']),
     ...schPlan({
     ...schPlan({
       schQuery: 'query',
       schQuery: 'query',
-      schPlanCreate: 'create',
-      schPlanUpdate: 'update',
     }),
     }),
     async search({ skip = 0, limit = 10, ...info } = {}) {
     async search({ skip = 0, limit = 10, ...info } = {}) {
-      const res = await this.schQuery({ planid: this.info.id, schid: '99991', skip, limit, ...info });
+      const res = await this.schQuery({ planid: this.id, schid: '99991', skip, limit, ...info });
       if (this.$checkRes(res)) {
       if (this.$checkRes(res)) {
-        // console.log(res.data[0]);
         if (res.data.length > 0) {
         if (res.data.length > 0) {
-          for (let val of res.data) {
-            console.log(val.term);
-            for (let lets of val.term) {
-              console.log(lets);
-              val.newTermnum = lets.termnum;
-            }
-          }
-          console.log(res.data);
-
-          this.$set(this, `list`, res.data);
-          // console.log(res.data);
-
-          this.$set(this, `total`, res.total);
-
-          this.$set(this, `list`, res.data);
+          let { term, ...others } = res.data[0];
+          this.$set(this, `list`, term);
+          this.$set(this, `info`, others);
         }
         }
-        console.log(res.data.length);
-        console.log(res.data);
       }
       }
     },
     },
-    toEdit({ data }) {
-      //TODO 该把详情做成什么样的比较好,是和大日历在一起选择还是其他形式
-      this.$router.push({ path: '/scganli/detail' });
+    uploadSuccess({ data }) {
+      this.$set(this.form, `filepath`, data.uri);
     },
     },
-
     async toUpdate({ data }) {
     async toUpdate({ data }) {
-      // const res = await this.delete(data.id);
-      // this.$checkRes(res, '删除成功', '删除失败');
-      // this.search();
+      let { termid } = data;
+      this.form.termid = termid;
+      this.dialog = true;
+    },
+    async cerUpdate() {
+      let form = JSON.parse(JSON.stringify(this.form));
+      form.schid = '99991';
+      let res = await this.create(form);
+      let err = () => this.$message.error('上报失败');
+      if (this.$checkRes(res)) {
+        let upRes = res.data;
+        if (upRes.errorcode === '1') {
+          err();
+          this.$set(this, `errList`, upRes.errormsg);
+        } else {
+          this.dialog = false;
+          this.$message.success('上报成功');
+        }
+      } else {
+        err();
+      }
+    },
+    toClose() {
+      this.form = {};
+      this.dialog = false;
+      this.errList = [];
     },
     },
   },
   },
 };
 };