wuhongyuq 5 سال پیش
والد
کامیت
26bbe683b5

+ 6 - 1
src/router/index.js

@@ -34,7 +34,12 @@ const routes = [
         meta: { title: '题库', sub: '管理' },
         component: () => import('@/views/Itembank/index.vue'),
       },
-
+      {
+        path: '/leave/index',
+        name: 'leave_index',
+        meta: { title: '请假及其退出', sub: '管理' },
+        component: () => import('@/views/leave/index.vue'),
+      },
       // {
       //   path: '/questionstate/detail',
       //   name: 'questionstate_detail',

+ 3 - 0
src/store/index.js

@@ -17,6 +17,8 @@ import school from '@frame/store/school';
 import schPlan from '@frame/store/sch-plan';
 import teaPlan from '@frame/store/tea-plan';
 import lesson from '@frame/store/lesson';
+import leave from '@frame/store/leave';
+
 import nation from '@frame/store/nation';
 import completion from '@frame/store/question-completion';
 import termquest from '@frame/store/termquest';
@@ -51,6 +53,7 @@ export default new Vuex.Store({
     termquest,
     login,
     dirPlan,
+    leave,
   },
   state: { ...ustate },
   mutations: { ...umutations },

+ 87 - 0
src/views/leave/index.vue

@@ -0,0 +1,87 @@
+<template>
+  <div id="index">
+    <list-frame :title="mainTitle" @query="search" :total="total" :needFilter="false">
+      <data-table :fields="fields" :data="list" :opera="opera"></data-table>
+    </list-frame>
+  </div>
+</template>
+
+<script>
+import listFrame from '@frame/layout/admin/list-frame';
+import dataTable from '@frame/components/data-table';
+import { createNamespacedHelpers } from 'vuex';
+const { mapActions } = createNamespacedHelpers('leave');
+const { mapActions: mapstudent } = createNamespacedHelpers('student');
+export default {
+  metaInfo: { title: '请假和退出管理' },
+  name: 'index',
+  props: {},
+  components: {
+    listFrame,
+    dataTable,
+  },
+  data: () => ({
+    opera: [],
+    fields: [
+      { label: '学生名称', prop: 'stuName' },
+      { label: '开始时间', prop: 'starttime' },
+      { label: '结束时间', prop: 'endtime' },
+      { label: '请假理由', prop: 'reason' },
+
+      {
+        label: '状态',
+        prop: 'status',
+        format: item => {
+          return item === '0' ? '审核中' : item === '1' ? '通过' : '未通过';
+        },
+      },
+      { label: '拒绝原因', prop: 'refcause' },
+      {
+        label: '类型',
+        prop: 'type',
+        format: item => {
+          return item === '0' ? '请假' : '退出';
+        },
+      },
+    ],
+    list: [],
+    total: 0,
+  }),
+  created() {
+    this.search();
+    this.searchinfo();
+  },
+  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']),
+    ...mapstudent({ lists: 'fetch' }),
+    async search({ skip = 0, limit = 10, ...info } = {}) {
+      const res = await this.query({ skip, limit, ...info });
+      for (const val of res.data) {
+        const stuName = await this.lists(val.studentid);
+        console.log(stuName);
+        val.stuName = stuName.data.name;
+      }
+      console.log(res.data);
+      this.$set(this, `list`, res.data);
+      this.$set(this, `total`, res.total);
+    },
+
+    async searchinfo() {},
+  },
+};
+</script>
+
+<style lang="less" scoped></style>

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

@@ -149,6 +149,8 @@ export default {
     async search({ skip = 0, limit = 10, ...info } = {}) {
       const res = await this.fetch(this.id);
       if (this.$checkRes(res)) {
+        console.log(res.data);
+
         this.$set(this, `info`, res.data);
         //需要将code中的id转换为题目重新放进列表中
         //需要过滤出已选择的题目,每次选择题目时也需要过滤

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

@@ -53,6 +53,7 @@ export default {
     ...questionnaire(['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);

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

@@ -1,7 +1,16 @@
 <template>
   <div id="detail">
     <detail-frame :title="mainTitle" returns="/subject/index">
-      <data-form :data="info" :fields="fields" :rules="rules" @save="handleSave" :isNew="isNew"> </data-form>
+      <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>
+          </template>
+        </template>
+      </data-form>
     </detail-frame>
   </div>
 </template>
@@ -24,10 +33,12 @@ export default {
     fields: [
       { label: '科目名称', required: true, model: 'name' },
       { label: '名称代码', required: true, model: 'code' },
+      { label: '班级类型', required: true, model: 'type', type: `radio` },
     ],
     rules: {
       name: [{ required: true, message: '请输入科目代码' }],
       code: [{ required: true, message: '请输入科目名称' }],
+      type: [{ required: true, message: '请选择班级类型' }],
     },
   }),
   created() {},
@@ -71,9 +82,14 @@ export default {
       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' });

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

@@ -35,6 +35,7 @@ export default {
     fields: [
       { label: '科目名称', prop: 'name' },
       { label: '科目代码', prop: 'code' },
+       { label: '类型', prop: 'type' },
     ],
     filFields: [
       { label: '科目名称', model: 'name' },
@@ -51,6 +52,8 @@ 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);