浏览代码

班主任

lrf402788946 5 年之前
父节点
当前提交
9c6c111947

+ 22 - 0
src/router/index.js

@@ -23,31 +23,37 @@ const routes = [
       {
         path: '/itembank/detail',
         name: 'itembank_detail',
+        meta: { title: '题库', sub: '详情' },
         component: () => import('@/views/Itembank/detail.vue'),
       },
       {
         path: '/itembank/index',
         name: 'itembank_index',
+        meta: { title: '题库', sub: '管理' },
         component: () => import('@/views/Itembank/index.vue'),
       },
       {
         path: '/questionnaire/index',
         name: 'questionnaire_index',
+        meta: { title: '问卷', sub: '管理' },
         component: () => import('@/views/questionnaire/index.vue'),
       },
       {
         path: '/questionnaire/detail',
         name: 'questionnaire_detail',
+        meta: { title: '问卷', sub: '详情' },
         component: () => import('@/views/questionnaire/detail.vue'),
       },
       {
         path: '/teacher/detail',
         name: 'teacher_detail',
+        meta: { title: '教师', sub: '详情' },
         component: () => import('@/views/teacher/detail.vue'),
       },
       {
         path: '/teacher/index',
         name: 'teacher_index',
+        meta: { title: '教师', sub: '管理' },
         component: () => import('@/views/teacher/index.vue'),
       },
       {
@@ -63,11 +69,13 @@ const routes = [
       {
         path: '/work/detail',
         name: 'work_detail',
+        meta: { title: '作业', sub: '详情' },
         component: () => import('@/views/work/detail.vue'),
       },
       {
         path: '/work/index',
         name: 'work_index',
+        meta: { title: '作业', sub: '管理' },
         component: () => import('@/views/work/index.vue'),
       },
       {
@@ -84,71 +92,85 @@ const routes = [
       {
         path: '/subject/index',
         name: 'subject_index',
+        meta: { title: '科目', sub: '管理' },
         component: () => import('@/views/subject/index.vue'),
       },
       {
         path: '/subject/detail',
         name: 'subject_detail',
+        meta: { title: '科目', sub: '详情' },
         component: () => import('@/views/subject/detail.vue'),
       },
       {
         path: '/director/index',
         name: 'director_index',
+        meta: { title: '班主任', sub: '管理' },
         component: () => import('@/views/director/index.vue'),
       },
       {
         path: '/director/detail',
         name: 'director_detail',
+        meta: { title: '班主任', sub: '详情' },
         component: () => import('@/views/director/detail.vue'),
       },
       {
         path: '/dept/index',
         name: 'dept_index',
+        meta: { title: '部门', sub: '管理' },
         component: () => import('@/views/dept/index.vue'),
       },
       {
         path: '/dept/detail',
         name: 'dept_detail',
+        meta: { title: '部门', sub: '详情' },
         component: () => import('@/views/dept/detail.vue'),
       },
       {
         path: '/location/index',
         name: 'location_index',
+        meta: { title: '地点', sub: '管理' },
         component: () => import('@/views/location/index.vue'),
       },
       {
         path: '/location/detail',
         name: 'location_detail',
+        meta: { title: '地点', sub: '详情' },
         component: () => import('@/views/location/detail.vue'),
       },
       {
         path: '/bedroom/index',
         name: 'bedroom_index',
+        meta: { title: '寝室', sub: '管理' },
         component: () => import('@/views/bedroom/index.vue'),
       },
       {
         path: '/bedroom/detail',
         name: 'bedroom_detail',
+        meta: { title: '寝室', sub: '详情' },
         component: () => import('@/views/bedroom/detail.vue'),
       },
       {
         path: '/classes/index',
         name: 'classes_index',
+        meta: { title: '班级', sub: '管理' },
         component: () => import('@/views/classes/index.vue'),
       },
       {
         path: '/classes/detail',
         name: 'classes_detail',
+        meta: { title: '班级', sub: '详情' },
         component: () => import('@/views/classes/detail.vue'),
       },
       {
         path: '/student/index',
         name: 'student_index',
+        meta: { title: '学生', sub: '管理' },
         component: () => import('@/views/student/index.vue'),
       },
       {
         path: '/student/detail',
         name: 'student_detail',
+        meta: { title: '学生', sub: '详情' },
         component: () => import('@/views/student/detail.vue'),
       },
     ],

+ 1 - 1
src/store/bedroom.js

@@ -9,7 +9,7 @@ const state = () => ({});
 const mutations = {};
 
 const actions = {
-  async query({ commit }, { skip = 0, limit = this.$limit, ...info }) {
+  async query({ commit }, { skip = 0, limit, ...info } = {}) {
     const res = await this.$axios.$get(`${api.interface}`, { skip, limit, ...info });
     return res;
   },

+ 1 - 1
src/store/classes.js

@@ -9,7 +9,7 @@ const state = () => ({});
 const mutations = {};
 
 const actions = {
-  async query({ commit }, { skip = 0, limit = this.$limit, ...info }) {
+  async query({ commit }, { skip = 0, limit, ...info } = {}) {
     const res = await this.$axios.$get(`${api.interface}`, { skip, limit, ...info });
     return res;
   },

+ 1 - 1
src/store/dept.js

@@ -9,7 +9,7 @@ const state = () => ({});
 const mutations = {};
 
 const actions = {
-  async query({ commit }, { skip = 0, limit = this.$limit, ...info }) {
+  async query({ commit }, { skip = 0, limit, ...info } = {}) {
     const res = await this.$axios.$get(`${api.interface}`, { skip, limit, ...info });
     return res;
   },

+ 38 - 0
src/store/director.js

@@ -0,0 +1,38 @@
+import Vue from 'vue';
+import Vuex from 'vuex';
+import _ from 'lodash';
+Vue.use(Vuex);
+const api = {
+  interface: `/api/headteacher`,
+};
+const state = () => ({});
+const mutations = {};
+
+const actions = {
+  async query({ commit }, { skip = 0, limit, ...info } = {}) {
+    const res = await this.$axios.$get(`${api.interface}`, { skip, limit, ...info });
+    return res;
+  },
+  async create({ commit }, payload) {
+    const res = await this.$axios.$post(`${api.interface}`, payload);
+    return res;
+  },
+  async fetch({ commit }, payload) {
+    const res = await this.$axios.$get(`${api.interface}/${payload}`);
+    return res;
+  },
+  async update({ commit }, { id, ...data }) {
+    const res = await this.$axios.$post(`${api.interface}/update/${id}`, data);
+    return res;
+  },
+  async delete({ commit }, payload) {
+    const res = await this.$axios.$delete(`${api.interface}/${payload}`);
+    return res;
+  },
+};
+export default {
+  namespaced: true,
+  state,
+  mutations,
+  actions,
+};

+ 2 - 0
src/store/index.js

@@ -4,6 +4,7 @@ import classes from './classes';
 import dept from './dept';
 import location from './location';
 import bedroom from './bedroom';
+import director from './director';
 Vue.use(Vuex);
 
 export default new Vuex.Store({
@@ -12,6 +13,7 @@ export default new Vuex.Store({
     classes,
     location,
     bedroom,
+    director,
   },
   state: {},
   mutations: {},

+ 1 - 1
src/store/location.js

@@ -9,7 +9,7 @@ const state = () => ({});
 const mutations = {};
 
 const actions = {
-  async query({ commit }, { skip = 0, limit = this.$limit, ...info }) {
+  async query({ commit }, { skip = 0, limit, ...info } = {}) {
     const res = await this.$axios.$get(`${api.interface}`, { skip, limit, ...info });
     return res;
   },

+ 12 - 1
src/views/Itembank/detail.vue

@@ -1,6 +1,6 @@
 <template>
   <div id="lookdetail">
-    <detail-frame title="作业题详情页" returns="./index">
+    <detail-frame :title="mainTitle" returns="./index">
       <data-form :fields="fields" :rules="rules" @save="handleSave" :isNew="isNew">
         <template #options="{item}">
           <template v-if="item.model === 'state'">
@@ -123,6 +123,17 @@ export default {
   }),
   created() {},
   computed: {
+    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;
+    },
     isNew() {
       return this.$route.query.id ? false : true;
     },

+ 1 - 1
src/views/Itembank/index.vue

@@ -1,6 +1,6 @@
 <template>
   <div id="index">
-    <list-frame title="题库列表页" @query="search" :filter="filFields" @add="$router.push({ path: '/itembank/detail' })">
+    <list-frame title="题库列表页" @query="search" :total="total" :filter="filFields" @add="$router.push({ path: '/itembank/detail' })">
       <template #options="{item}">
         <template v-if="item.model == 'state'">
           <el-option v-for="(item, index) in lists" :key="index" :value="item.label"></el-option>

+ 12 - 1
src/views/bedroom/detail.vue

@@ -1,6 +1,6 @@
 <template>
   <div id="detail">
-    <detail-frame title="寝室信息" returns="/bedroom/index">
+    <detail-frame :title="mainTitle" returns="/bedroom/index">
       <data-form :data="info" :fields="fields" :rules="rules" @save="handleSave" :isNew="isNew">
         <template #radios="{item}">
           <template v-if="item.model === 'gender'">
@@ -54,6 +54,17 @@ export default {
     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: {

+ 12 - 1
src/views/classes/detail.vue

@@ -1,6 +1,6 @@
 <template>
   <div id="detail">
-    <detail-frame title="班级信息" returns="/classes/index">
+    <detail-frame :title="mainTitle" returns="/classes/index">
       <data-form v-loading="loading" :data="info" :fields="fields" :rules="rules" @save="handleSave" :isNew="isNew"> </data-form>
     </detail-frame>
   </div>
@@ -41,6 +41,17 @@ export default {
     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: {

+ 0 - 2
src/views/classes/index.vue

@@ -59,8 +59,6 @@ export default {
       this.$router.push({ path: '/classes/detail', query: { id: data.id } });
     },
     async toDelete(data) {
-      console.log(`in toDelete`);
-      console.log(data);
       const res = await this.delete(data.id);
       this.$checkRes(res, '删除成功', '删除失败');
       this.search();

+ 12 - 1
src/views/dept/detail.vue

@@ -1,6 +1,6 @@
 <template>
   <div id="detail">
-    <detail-frame title="部门信息" returns="/dept/index">
+    <detail-frame :title="mainTitle" returns="/dept/index">
       <data-form :data="info" :fields="fields" :rules="rules" @save="handleSave" :isNew="isNew"> </data-form>
     </detail-frame>
   </div>
@@ -35,6 +35,17 @@ export default {
     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: {

+ 15 - 7
src/views/dept/index.vue

@@ -1,6 +1,6 @@
 <template>
   <div id="index">
-    <list-frame title="部门管理" @query="search" :needFilter="false" @add="$router.push({ path: '/dept/detail' })">
+    <list-frame :title="mainTitle" @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>
@@ -29,7 +29,6 @@ export default {
       {
         label: '删除',
         icon: 'el-icon-delete',
-
         method: 'delete',
         confirm: true,
         methodZh: '删除',
@@ -37,11 +36,24 @@ export default {
     ],
     fields: [{ label: '部门名称', prop: 'name' }],
     list: [],
+    total: 0,
   }),
   created() {
     this.search();
   },
-  computed: {},
+  computed: {
+    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;
+    },
+  },
   methods: {
     ...mapActions(['query', 'delete']),
     async search({ skip = 0, limit = 15, ...info } = {}) {
@@ -53,14 +65,10 @@ export default {
     },
 
     toEdit(data) {
-      console.log(`in toEdit`);
-      console.log(data);
       this.$router.push({ path: '/dept/detail', query: { id: data.id } });
     },
 
     async toDelete(data) {
-      console.log(`in toDelete`);
-      console.log(data);
       const res = await this.delete(data.id);
       this.$checkRes(res, '删除成功', '删除失败');
       this.search();

+ 67 - 17
src/views/director/detail.vue

@@ -1,20 +1,21 @@
 <template>
   <div id="detail">
-    <detail-frame title="班主任信息" returns="/director/index">
+    <detail-frame :title="mainTitle" returns="/director/index">
       <data-form :data="info" :fields="fields" :rules="rules" @save="handleSave" :isNew="isNew">
         <template #options="{item}">
-          <template v-if="item.model === 'gender'">
-            <el-option label="男" value="1"></el-option>
-            <el-option label="女" value="0"></el-option>
-          </template>
-          <template v-if="item.model === 'dept'">
-            <el-option label="信息部" value="1"></el-option>
-            <el-option label="办公室" value="0"></el-option>
+          <template v-if="item.model === 'department'">
+            <el-option v-for="(item, index) in deptList" :key="index" :label="item.name" :value="item.id"></el-option>
           </template>
         </template>
         <template #radios="{item}">
-          <el-radio label="1">是</el-radio>
-          <el-radio label="0">否</el-radio>
+          <template v-if="item.model === 'gender'">
+            <el-radio label="男" value="1"></el-radio>
+            <el-radio label="女" value="0"></el-radio>
+          </template>
+          <template v-else>
+            <el-radio label="1">是</el-radio>
+            <el-radio label="0">否</el-radio>
+          </template>
         </template>
       </data-form>
     </detail-frame>
@@ -24,6 +25,9 @@
 <script>
 import detailFrame from '@frame/layout/admin/detail-frame';
 import dataForm from '@frame/components/form';
+import { createNamespacedHelpers } from 'vuex';
+const { mapActions } = createNamespacedHelpers('director');
+const { mapActions: mapDept } = createNamespacedHelpers('dept');
 export default {
   metaInfo: { title: '班主任信息' },
   name: 'detail',
@@ -33,11 +37,11 @@ export default {
     dataForm,
   },
   data: () => ({
-    info: { name: 'tes' },
+    info: {},
     fields: [
       { label: '姓名', required: true, model: 'name' },
       { label: '所属部门', required: true, model: 'department', type: 'select' },
-      { label: '性别', required: true, model: 'gender', type: `select` },
+      { label: '性别', required: true, model: 'gender', type: `radio` },
       { label: '电话', required: true, model: 'phone', options: { maxlength: 11, minlength: 11 } },
       { label: '出生日期', required: true, model: 'birthday', type: 'date' },
       { label: '年龄', required: true, model: 'age' },
@@ -55,17 +59,63 @@ export default {
       age: [{ required: true, message: '请输入年龄' }],
       is_lis_etiquette_teacher: [{ required: true, message: '请选择是否是礼仪课教师' }],
     },
+    deptList: [],
   }),
-  created() {},
+  created() {
+    this.otherList();
+  },
+  methods: {
+    ...mapActions(['fetch', 'create', 'update']),
+    ...mapDept({ dept: 'query' }),
+    async search() {
+      const res = await this.fetch(this.id);
+      if (this.$checkRes(res)) this.$set(this, `info`, res.data);
+      this.loading = false;
+    },
+    async otherList() {
+      const res = await this.dept();
+      if (this.$checkRes(res)) this.$set(this, `deptList`, res.data);
+    },
+    async handleSave({ isNew, data }) {
+      let res;
+      let msg;
+      if (isNew) {
+        data.openid = new Date().getTime();
+        res = this.create(data);
+        msg = '班级添加成功';
+      } else {
+        res = this.update(data);
+        msg = '班级修改成功';
+      }
+      if (this.$checkRes(res, msg)) this.$router.push({ path: '/director/index' });
+    },
+  },
   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;
+    },
   },
-  methods: {
-    async handleSave({ isNew, data }) {
-      console.log(isNew);
-      console.log(data);
+  watch: {
+    isNew: {
+      immediate: true,
+      handler(val) {
+        if (val) this.loading = false;
+        else this.search();
+      },
     },
   },
 };

+ 56 - 21
src/views/director/index.vue

@@ -1,13 +1,13 @@
 <template>
   <div id="index">
-    <list-frame title="班主任管理" @query="search" :filter="filFields" @add="$router.push({ path: '/director/detail' })">
+    <list-frame :title="mainTitle" @query="search" :total="total" :filter="filFields" @add="$router.push({ path: '/director/detail' })">
       <template #options="{item}">
         <template v-if="item.model === 'dept'">
           <el-option label="信息部" value="1"></el-option>
           <el-option label="办公室" value="0"></el-option>
         </template>
       </template>
-      <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>
@@ -15,6 +15,9 @@
 <script>
 import listFrame from '@frame/layout/admin/list-frame';
 import dataTable from '@frame/components/data-table';
+import { createNamespacedHelpers } from 'vuex';
+const { mapActions } = createNamespacedHelpers('director');
+const { mapActions: mapDept } = createNamespacedHelpers('dept');
 export default {
   metaInfo: { title: '班主任管理' },
   name: 'index',
@@ -34,9 +37,8 @@ export default {
         label: '删除',
         icon: 'el-icon-delete',
         method: 'delete',
-        display: item => {
-          return item.gender === '1';
-        },
+        confirm: true,
+        methodZh: '删除',
       },
     ],
     filFields: [
@@ -45,7 +47,7 @@ export default {
     ],
     fields: [
       { label: '姓名', prop: 'name' },
-      { label: '所在部门', prop: 'deptname' },
+      { label: '所在部门', prop: 'department', format: 'emit' },
       {
         label: '性别',
         prop: 'gender',
@@ -53,36 +55,69 @@ export default {
           return item === '1' ? '男' : '女';
         },
       },
-      { label: '电话', prop: 'tel' },
+      { label: '电话', prop: 'phone' },
       { label: '年龄', prop: 'age' },
       { label: '出生日期', prop: 'birthday' },
       {
         label: '礼仪课教师',
-        prop: 'is_ly',
+        prop: 'is_etiquette_teacher ',
         format: item => {
           return item === '1' ? '是' : '否';
         },
       },
     ],
-    list: [
-      { id: 1, name: '班主任1', deptname: '信息部', gender: '1', tel: '13089419810', age: 20, birthday: `2020-01-01`, is_ly: 0 },
-      { id: 2, name: '班主任2', deptname: '信息部', gender: '0', tel: '13089419810', age: 20, birthday: `2020-01-01`, is_ly: 1 },
-    ],
+    list: [],
+    deptList: [],
+    total: 0,
   }),
-  created() {},
-  computed: {},
+  created() {
+    this.otherList();
+    this.search();
+  },
+  computed: {
+    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;
+    },
+  },
   methods: {
-    search({ skip = 0, limit = 15, ...info } = {}) {
-      console.log(`in search`);
+    ...mapActions(['query', 'delete']),
+    ...mapDept({ dept: 'query' }),
+    async search({ skip = 0, limit = 15, ...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 otherList() {
+      const res = await this.dept();
+      if (this.$checkRes(res)) this.$set(this, `deptList`, res.data);
     },
     toEdit(data) {
-      console.log(`in toEdit`);
-      console.log(data);
       this.$router.push({ path: '/director/detail', query: { id: data.id } });
     },
-    toDelete(data) {
-      console.log(`in toDelete`);
-      console.log(data);
+    async toDelete(data) {
+      const res = await this.delete(data.id);
+      this.$checkRes(res, '删除成功', '删除失败');
+      this.search();
+    },
+    toFormat({ model, value }) {
+      let res;
+      if (model === 'department') {
+        let arr = this.deptList.filter(fil => fil.id === value);
+        if (arr.length > 0) {
+          res = arr[0].name;
+        }
+      }
+      return res;
     },
   },
 };

+ 12 - 1
src/views/location/detail.vue

@@ -1,6 +1,6 @@
 <template>
   <div id="detail">
-    <detail-frame title="地点信息" returns="/location/index">
+    <detail-frame :title="mainTitle" returns="/location/index">
       <data-form :data="info" :fields="fields" :rules="rules" @save="handleSave" :isNew="isNew"> </data-form>
     </detail-frame>
   </div>
@@ -28,6 +28,17 @@ export default {
   }),
   created() {},
   computed: {
+    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;
+    },
     id() {
       return this.$route.query.id;
     },

+ 12 - 1
src/views/questionnaire/detail.vue

@@ -1,6 +1,6 @@
 <template>
   <div id="detail">
-    <detail-frame title="问卷详情页" returns="./index">
+    <detail-frame :title="问卷详情页" returns="./index">
       <data-form :fields="fields" :rules="rules" @save="handleSave" :isNew="isNew">
         <template #custom="{ item, form, fieldChange }">
           <el-select v-model="form[item.model]" multiple placeholder="请选择">
@@ -52,6 +52,17 @@ export default {
     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;
+    },
   },
   methods: {
     async handleSave({ isNew, data }) {

+ 1 - 1
src/views/questionnaire/index.vue

@@ -1,6 +1,6 @@
 <template>
   <div id="index">
-    <list-frame title="问卷列表页" @query="search" :filter="filFields" @add="$router.push({ path: '/questionnaire/detail' })">
+    <list-frame title="问卷列表页" @query="search" :total="total" :filter="filFields" @add="$router.push({ path: '/questionnaire/detail' })">
       <data-table :fields="fields" :data="index" :opera="opera" @edit="toEdit"></data-table>
     </list-frame>
   </div>

+ 12 - 1
src/views/student/detail.vue

@@ -1,6 +1,6 @@
 <template>
   <div id="detail">
-    <detail-frame title="学生信息" returns="/bedroom/index">
+    <detail-frame :title="mainTitle" returns="/bedroom/index">
       <data-form :data="info" :fields="fields" :rules="rules" @save="handleSave" :isNew="isNew">
         <template #radios="{item}">
           <template v-if="item.model === 'gender'">
@@ -89,6 +89,17 @@ export default {
     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;
+    },
   },
   methods: {
     async handleSave({ isNew, data }) {

+ 2 - 1
src/views/student/index.vue

@@ -1,6 +1,6 @@
 <template>
   <div id="index">
-    <list-frame title="学生管理" @query="search" :needFilter="false" @add="$router.push({ path: '/student/detail' })">
+    <list-frame title="学生管理" @query="search" :total="total" :needFilter="false" @add="$router.push({ path: '/student/detail' })">
       <data-table :fields="fields" :data="list" :opera="opera" @edit="toEdit" @delete="toDelete"></data-table>
     </list-frame>
   </div>
@@ -103,6 +103,7 @@ export default {
         is_good: '0',
       },
     ],
+    total: 0,
   }),
   created() {},
   computed: {},

+ 12 - 1
src/views/subject/detail.vue

@@ -1,6 +1,6 @@
 <template>
   <div id="detail">
-    <detail-frame title="科目详情页" returns="./index">
+    <detail-frame :title="mainTitle" returns="./index">
       <data-form :fields="fields" :rules="rules" @save="handleSave" :isNew="isNew"> </data-form>
     </detail-frame>
   </div>
@@ -32,6 +32,17 @@ export default {
     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;
+    },
   },
   methods: {
     async handleSave({ isNew, data }) {

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

@@ -1,6 +1,6 @@
 <template>
   <div id="index">
-    <list-frame title="科目列表页" @query="search" :filter="filFields">
+    <list-frame title="科目列表页" @query="search" :total="total" :filter="filFields">
       <data-table :fields="fields" :data="index" :opera="opera" @edit="toEdit"></data-table>
     </list-frame>
   </div>
@@ -37,6 +37,7 @@ export default {
       { label: '科目名称', model: 'name' },
       { label: '科目代码', model: 'code' },
     ],
+    total: 0,
   }),
   created() {},
   computed: {},

+ 12 - 1
src/views/teacher/detail.vue

@@ -1,6 +1,6 @@
 <template>
   <div id="detail">
-    <detail-frame title="教师详情页" returns="./index">
+    <detail-frame :title="mainTitle" returns="./index">
       <data-form :fields="fields" :rules="rules" @save="handleSave" :isNew="isNew">
         <template #options="{item}">
           <template v-if="item.model === 'state'">
@@ -107,6 +107,17 @@ export default {
     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;
+    },
   },
   methods: {
     uploadSuccess() {},

+ 2 - 1
src/views/teacher/index.vue

@@ -1,6 +1,6 @@
 <template>
   <div id="index">
-    <list-frame title="教师列表页" @query="search" :filter="filFields" :needAdd="false">
+    <list-frame title="教师列表页" @query="search" :total="total" :filter="filFields" :needAdd="false">
       <template #options="{item}">
         <template v-if="item.model == 'sex'">
           <el-option v-for="(item, index) in list" :key="index" :value="item.label"></el-option>
@@ -143,6 +143,7 @@ export default {
         type: 'select',
       },
     ],
+    total: 0,
   }),
   created() {},
   computed: {},

+ 2 - 1
src/views/teacher/means.vue

@@ -1,6 +1,6 @@
 <template>
   <div id="means">
-    <list-frame title="教师资料列表页" @query="search" :filter="filFields" :needAdd="false" :needFilter="false" :needPag="false">
+    <list-frame title="教师资料列表页" @query="search" :total="total" :filter="filFields" :needAdd="false" :needFilter="false" :needPag="false">
       <data-table :fields="fields" :data="index" @edit="toEdit"></data-table>
     </list-frame>
   </div>
@@ -36,6 +36,7 @@ export default {
       },
     ],
     filFields: [],
+    total: 0,
   }),
   created() {},
   computed: {},

+ 12 - 1
src/views/teacher/verify.vue

@@ -1,6 +1,6 @@
 <template>
   <div id="verify">
-    <detail-frame title="审核详情页" returns="./index">
+    <detail-frame :title="mainTitle" returns="./index">
       <el-form ref="form" :model="form" :rules="rules" label-width="120px" class="form" size="small" @submit.native.prevent>
         <el-form-item label="活动区域">
           <el-select v-model="form.state" placeholder="请选择状态">
@@ -59,6 +59,17 @@ export default {
         return '面试评分';
       }
     },
+    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;
+    },
   },
   methods: {
     uploadSuccess() {},

+ 12 - 1
src/views/test/detail.vue

@@ -1,6 +1,6 @@
 <template>
   <div id="detail">
-    <detail-frame title="测试详情页" returns="/list">
+    <detail-frame :title="mainTitle" returns="/list">
       <data-form :fields="fields" :rules="rules" @save="handleSave" :isNew="isNew">
         <template #options="{item}">
           <template v-if="item.model === 'gender'">
@@ -70,6 +70,17 @@ export default {
     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;
+    },
   },
   methods: {
     async handleSave({ isNew, data }) {

+ 2 - 1
src/views/test/list.vue

@@ -1,6 +1,6 @@
 <template>
   <div id="list">
-    <list-frame title="测试列表页" @query="search" :filter="filFields">
+    <list-frame title="测试列表页" @query="search" :total="total" :filter="filFields">
       <template #options>
         <el-option v-for="(item, index) in lists" :key="index" :label="item.label" :value="item.value"></el-option>
       </template>
@@ -68,6 +68,7 @@ export default {
         type: 'select',
       },
     ],
+    total: 0,
   }),
   created() {},
   computed: {},

+ 12 - 1
src/views/work/detail.vue

@@ -1,6 +1,6 @@
 <template>
   <div id="detail">
-    <detail-frame title="作业详情页" returns="/work/index">
+    <detail-frame :title="mainTitle" returns="/work/index">
       <data-form :fields="fields" :rules="rules" @save="handleSave" :isNew="isNew">
         <!-- <template #options="{item}">
           <template v-if="item.model === 'state'">
@@ -122,6 +122,17 @@ export default {
     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;
+    },
   },
   methods: {
     search({ skip = 0, limit = 15, ...info } = {}) {

+ 2 - 1
src/views/work/index.vue

@@ -1,6 +1,6 @@
 <template>
   <div id="index">
-    <list-frame title="作业列表页" @query="search" :filter="filFields" @add="$router.push({ path: '/work/detail' })">
+    <list-frame title="作业列表页" @query="search" :total="total" :filter="filFields" @add="$router.push({ path: '/work/detail' })">
       <data-table :fields="fields" :data="index" :opera="opera" @edit="toEdit" @delete="toEdit" @select="$router.push({ path: '/work/detail' })"> </data-table>
     </list-frame>
   </div>
@@ -47,6 +47,7 @@ export default {
       { label: '科目代码', model: 'id' },
       { label: '科目名称', model: 'name' },
     ],
+    total: 0,
   }),
   created() {},
   computed: {},

+ 2 - 1
src/views/work/look.vue

@@ -1,6 +1,6 @@
 <template>
   <div id="index">
-    <list-frame title="作业题列表页" @query="search" :filter="filFields" @add="$router.push({ path: '/work/lookdetail' })">
+    <list-frame title="作业题列表页" @query="search" :total="total" :filter="filFields" @add="$router.push({ path: '/work/lookdetail' })">
       <data-table :fields="fields" :data="index" :opera="opera" @edit="toEdit" @delete="toEdit" @add="$router.push({ path: '/work/lookdetail' })"> </data-table>
     </list-frame>
   </div>
@@ -73,6 +73,7 @@ export default {
         ],
       },
     ],
+    total: 0,
   }),
   created() {},
   computed: {},

+ 12 - 1
src/views/work/lookdetail.vue

@@ -1,6 +1,6 @@
 <template>
   <div id="lookdetail">
-    <detail-frame title="作业题详情页" returns="./index">
+    <detail-frame :title="mainTitle" returns="./index">
       <data-form :fields="fields" :rules="rules" @save="handleSave" :isNew="isNew">
         <template #options="{item}">
           <template v-if="item.model === 'state'">
@@ -126,6 +126,17 @@ export default {
     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;
+    },
   },
   methods: {
     search({ skip = 0, limit = 15, ...info } = {}) {