reloaded 5 gadi atpakaļ
vecāks
revīzija
9e33b002a8
4 mainītis faili ar 50 papildinājumiem un 71 dzēšanām
  1. 8 7
      src/router/index.js
  2. 8 2
      src/store/index.js
  3. 20 34
      src/views/classes/classes.vue
  4. 14 28
      src/views/new-plan/index.vue

+ 8 - 7
src/router/index.js

@@ -9,7 +9,7 @@ const newPlan = [
   {
     path: '/newPlan/index',
     name: 'newPlan_list',
-    meta: { title: '计划', sub: '管理' },
+    meta: { title: '班主任上报计划', sub: '管理' },
     component: () => import('@/views/new-plan/index.vue'),
   },
 ];
@@ -33,14 +33,14 @@ const routes = [
         meta: { title: '计划', sub: '详情' },
         component: () => import('@/views/plan/detail.vue'),
       },
+      // {
+      //   path: '/classes/index',
+      //   name: 'classes_index',
+      //   meta: { title: '班级管理' },
+      //   component: () => import('@/views/classes/index.vue'),
+      // },
       {
         path: '/classes/index',
-        name: 'classes_index',
-        meta: { title: '班级管理' },
-        component: () => import('@/views/classes/index.vue'),
-      },
-      {
-        path: '/classes/list',
         name: 'classes_list',
         meta: { title: '班级列表' },
         component: () => import('@/views/classes/classes.vue'),
@@ -114,6 +114,7 @@ const router = new VueRouter({
 router.beforeEach((to, form, next) => {
   console.log(store);
   store.commit('setUser');
+  store.dispatch('setting/checkCache');
   if (to.name === 'login') {
     next();
     return;

+ 8 - 2
src/store/index.js

@@ -21,8 +21,12 @@ import login from '@frame/store/login';
 import util from '@frame/store/util';
 import attendance from '@frame/store/attendance';
 import leave from '@frame/store/leave';
+import setting from '@frame/store/setting';
+import trainBatch from '@frame/store/train-plan-year';
 import * as ustate from '@frame/store/user/state';
 import * as umutations from '@frame/store/user/mutations';
+import * as dostate from '@frame/store/setting/state';
+import * as domutations from '@frame/store/setting/mutations';
 Vue.use(Vuex);
 
 export default new Vuex.Store({
@@ -48,8 +52,10 @@ export default new Vuex.Store({
     attendance,
     bedroom,
     leave,
+    setting,
+    trainBatch,
   },
-  state: { ...ustate },
-  mutations: { ...umutations },
+  state: { ...ustate, ...dostate },
+  mutations: { ...umutations, ...domutations },
   actions: {},
 });

+ 20 - 34
src/views/classes/classes.vue

@@ -1,23 +1,7 @@
 <template>
   <div id="index">
-    <list-frame title="班级管理" returns="/classes/index" :needPage="false" :needFilter="false" :needAdd="false">
+    <list-frame title="班级管理" :needPage="false" :needFilter="false" :needAdd="false" :total="total">
       <el-card style="padding:10px">
-        <el-row>
-          <el-col :span="20">
-            <el-form :inline="true" size="mini">
-              <el-form-item label="期">
-                <el-select v-model="selectInfo.termid" placeholder="请选择期数" @change="getBatch">
-                  <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 label="批次">
-                <el-select v-model="selectInfo.batchid" placeholder="请先选择期数" @change="getClasses">
-                  <el-option v-for="(i, index) in batchList" :key="index" :label="i.name" :value="i._id"></el-option>
-                </el-select>
-              </el-form-item>
-            </el-form>
-          </el-col>
-        </el-row>
         <data-table
           :fields="fields"
           :data="list"
@@ -86,6 +70,7 @@ export default {
       },
     ],
     fields: [
+      { label: '批次', prop: 'batch' },
       { label: '班级名称', prop: 'name' },
       { label: '人数', prop: 'number' },
       { label: '班级类型', prop: 'type', format: i => (i === '1' ? '特殊班级' : '正常班级') },
@@ -93,10 +78,10 @@ export default {
     total: 0,
   }),
   created() {
-    this.search();
+    this.getClasses();
   },
   computed: {
-    ...mapState(['user']),
+    ...mapState(['user', 'defaultOption']),
     pageTitle() {
       return `${this.$route.meta.title}`;
     },
@@ -107,25 +92,18 @@ export default {
   methods: {
     ...trainPlan(['fetch']),
     ...classes(['query', 'delete']),
-    async search({ skip = 0, limit = 10, ...info } = {}) {
-      const res = await this.fetch(this.id);
-      if (this.$checkRes(res)) {
-        let { termnum } = res.data;
-        this.$set(this, `termList`, termnum);
-      }
-    },
-    getBatch(termid) {
-      let batchs = this.termList.filter(f => f._id === termid);
-      if (batchs.length > 0) {
-        let { batchnum } = batchs[0];
-        this.$set(this, `batchList`, batchnum);
-      }
-    },
     //根据批次id,查询下面的班级
     async getClasses(data) {
-      const res = await this.query({ batchid: data, headteacherid: this.user.userid });
+      let res = {};
+      if (this.defaultOption.termid) {
+        res = await this.query({ termid: this.defaultOption.termid, headteacherid: this.user.userid });
+      }
+      if (!this.defaultOption.termid && this.defaultOption.planid) {
+        res = await this.query({ planid: this.defaultOption.planid, headteacherid: this.user.userid });
+      }
       if (this.$checkRes(res)) {
         this.$set(this, `list`, res.data);
+        this.$set(this, `total`, res.total);
       }
     },
     toEdit({ data }) {
@@ -147,6 +125,14 @@ export default {
       this.$router.push({ path: '/classes/attendance', query: { id: data.id } });
     },
   },
+  watch: {
+    defaultOption: {
+      handler(val) {
+        this.getClasses();
+      },
+      deep: true,
+    },
+  },
 };
 </script>
 

+ 14 - 28
src/views/new-plan/index.vue

@@ -1,21 +1,18 @@
 <template>
   <div id="index">
-    <list-frame :title="pageTitle" @query="search" :total="total" :needFilter="false" :needAdd="false">
-      <data-table :fields="fields" :data="list" :opera="opera" @edit="toEdit"></data-table>
-    </list-frame>
-    <el-dialog title="上报请假日期" width="30%" :visible.sync="dialog" center :destroy-on-close="true" @close="handleClose">
+    <detail-frame :title="pageTitle">
       <data-form :data="info" :fields="Ffields" :rules="rules" @save="handleSave" :isNew="!info.id" :styles="{ padding: 0 }" labelWidth="120px" :reset="false">
         <template #custom="{item,form}">
           <template v-if="item.model == 'date'">
             <el-date-picker v-model="form[item.model]" type="date" placeholder="请选择" format="yyyy-MM-dd" value-format="yyyy-MM-dd" @change="pushDate">
             </el-date-picker>
           </template>
-          <template v-if="item.model == 'nodate'">
-            <data-table :fields="dateFields" :data="form[item.model]" :opera="dateOpera" @delete="toDateDelete" height="200px"></data-table>
+          <template v-if="item.model == 'nodate' && form[item.model]">
+            <data-table :fields="dateFields" :data="form[item.model]" :opera="dateOpera" @delete="toDateDelete" height="400px"></data-table>
           </template>
         </template>
       </data-form>
-    </el-dialog>
+    </detail-frame>
   </div>
 </template>
 
@@ -23,7 +20,7 @@
 var moment = require('moment');
 import _ from 'lodash';
 import Vue from 'vue';
-import listFrame from '@frame/layout/admin/list-frame';
+import detailFrame from '@frame/layout/admin/detail-frame';
 import dataTable from '@frame/components/data-table';
 import dataForm from '@frame/components/form';
 import { mapState, createNamespacedHelpers } from 'vuex';
@@ -32,7 +29,7 @@ const { mapActions: dirPlan } = createNamespacedHelpers('dirPlan');
 export default {
   name: 'index',
   props: {},
-  components: { listFrame, dataTable, dataForm },
+  components: { dataTable, dataForm, detailFrame },
   data: () => {
     return {
       dialog: false,
@@ -69,7 +66,7 @@ export default {
     };
   },
   created() {
-    this.search();
+    this.toEdit();
   },
   methods: {
     ...dirPlan({
@@ -77,17 +74,11 @@ export default {
       dirCreatPlan: 'create',
       dirUpdatePlan: 'update',
     }),
-    ...trainplan(['query', 'create', 'delete', 'update']),
-    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);
-      }
-    },
-    async toEdit({ data }) {
-      let res = await this.dirQuery({ trainplanid: data.id, headteacherid: this.user.userid });
-      let { year, id, title } = data;
+    ...trainplan(['query', 'create', 'delete', 'update', 'fetch']),
+    async toEdit() {
+      let res = await this.dirQuery({ trainplanid: this.defaultOption.planid, headteacherid: this.user.userid });
+      let planinfo = await this.fetch(this.defaultOption.planid);
+      let { year, id, title } = planinfo.data;
       let plan = { year, trainplanid: id, title, headteacherid: this.user.userid, nodate: [] };
       this.$set(this, `info`, plan);
       if (this.$checkRes(res)) {
@@ -98,7 +89,6 @@ export default {
           this.$set(this, `info`, { ...res.data[0], year, title, nodate });
         }
       }
-      this.dialog = true;
     },
     async handleSave({ data, isNew }) {
       let res;
@@ -116,13 +106,9 @@ export default {
         msg = '修改成功';
       }
       if (this.$checkRes(res, msg, res.errmsg || '操作失败')) {
-        this.handleClose();
+        this.toEdit();
       }
     },
-    handleClose() {
-      this.dialog = false;
-      this.info = { nodate: [] };
-    },
     pushDate(date) {
       if (!_.isArray(this.info.nodate)) {
         this.info.nodate = [];
@@ -136,7 +122,7 @@ export default {
     },
   },
   computed: {
-    ...mapState(['user']),
+    ...mapState(['user', 'defaultOption']),
     pageTitle() {
       return `${this.$route.meta.title}`;
     },