lrf402788946 5 years ago
parent
commit
e4d81beb43

+ 6 - 0
src/router/index.js

@@ -41,6 +41,12 @@ const routes = [
         meta: { title: '班级', sub: '课程表' },
         component: () => import('@/views/classes/lesson.vue'),
       },
+      {
+        path: '/classes/bedroom',
+        name: 'classes_bedroom',
+        meta: { title: '班级', sub: '寝室' },
+        component: () => import('@/views/classes/bedroom.vue'),
+      },
       {
         path: '/student/detail',
         name: 'student_detail',

+ 1 - 1
src/store/index.js

@@ -43,5 +43,5 @@ export default new Vuex.Store({
   },
   state: { ...ustate },
   mutations: { ...umutations },
-  actions: {}
+  actions: {},
 });

+ 54 - 0
src/views/classes/bedroom.vue

@@ -0,0 +1,54 @@
+<template>
+  <div id="bedroom">
+    <detail-frame title="寝室安排" returns="/classes/index">
+      <data-table :fields="fields" :data="list">
+        <template #custom="{item, row}">
+          <template v-if="item.prop === 'studentList'">
+            <el-row type="flex" justify="left">
+              <el-col :span="6" v-for="(stud, index) in row.studentList" :key="index">{{ stud }}</el-col>
+            </el-row>
+          </template>
+        </template>
+      </data-table>
+    </detail-frame>
+  </div>
+</template>
+
+<script>
+import { mapActions, mapState, createNamespacedHelpers } from 'vuex';
+import dataTable from '@frame/components/data-table';
+import detailFrame from '@frame/layout/admin/detail-frame';
+const { mapActions: student } = createNamespacedHelpers('student'); //班级
+export default {
+  metaInfo: { title: '寝室安排' },
+  name: 'bedroom',
+  props: {},
+  components: { detailFrame, dataTable },
+  data: () => ({
+    fields: [
+      { label: '寝室号', prop: 'bedroom', options: { width: `150px` } },
+      { label: '寝室人员', prop: 'studentList', custom: true },
+    ],
+    list: [],
+  }),
+  created() {
+    this.search();
+  },
+  methods: {
+    ...student(['bedRoom']),
+    async search() {
+      let res = await this.bedRoom({ classid: this.id });
+      if (this.$checkRes(res)) {
+        this.$set(this, `list`, res.data);
+      }
+    },
+  },
+  computed: {
+    id() {
+      return this.$route.query.id;
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped></style>

+ 9 - 1
src/views/classes/index.vue

@@ -1,7 +1,7 @@
 <template>
   <div id="index">
     <list-frame title="班级管理" @query="search" :total="total" :filter="filFields" :needFilter="false" :needAdd="false">
-      <data-table :fields="fields" :data="list" :opera="opera" @edit="toEdit" @completion="toCompletion" @lesson="toLesson"></data-table>
+      <data-table :fields="fields" :data="list" :opera="opera" @edit="toEdit" @completion="toCompletion" @lesson="toLesson" @bedRoom="toBedRoom"></data-table>
     </list-frame>
   </div>
 </template>
@@ -36,6 +36,11 @@ export default {
         icon: 'el-icon-date',
         method: 'lesson',
       },
+      {
+        label: '查看寝室',
+        icon: 'el-icon-s-home',
+        method: 'bedRoom',
+      },
     ],
     fields: [
       { label: '班级名称', prop: 'name' },
@@ -70,6 +75,9 @@ export default {
     toLesson({ data }) {
       this.$router.push({ path: '/classes/lesson', query: { id: data.id } });
     },
+    toBedRoom({ data }) {
+      this.$router.push({ path: '/classes/bedroom', query: { id: data.id } });
+    },
   },
 };
 </script>

+ 7 - 6
src/views/classes/lesson.vue

@@ -78,12 +78,13 @@ export default {
         let lyTeacher = {};
         let headteacher = {};
         //礼仪老师,班主任合并请求
-        await axios.all([this.getTeacher(tcc.lyteacherid), this.getDirector(tcc.headteacherid)]).then(
-          axios.spread((r1, r2) => {
-            if (this.$checkRes(r1)) lyTeacher = r1.data;
-            if (this.$checkRes(r2)) headteacher = r2.data;
-          })
-        );
+        if (tcc.lyteacherid && tcc.headteacherid)
+          await axios.all([this.getTeacher(tcc.lyteacherid), this.getDirector(tcc.headteacherid)]).then(
+            axios.spread((r1, r2) => {
+              if (this.$checkRes(r1)) lyTeacher = r1.data;
+              if (this.$checkRes(r2)) headteacher = r2.data;
+            })
+          );
         let object = { term, class: classes, lessons: lesson.lessons, start, end, headteacher, lyTeacher, js, kbys, tzxl, yc };
         this.$set(this, `previews`, object);
         this.$set(this, `loading`, false);