Ver código fonte

Merge branch 'master' of http://git.cc-lotus.info/new_train/train-dirtea

guhongwei 4 anos atrás
pai
commit
d1462f8aa9

+ 2 - 0
src/store/index.js

@@ -21,6 +21,7 @@ import bedroom from '@frame/store/bedroom';
 import util from '@frame/store/util';
 import attendance from '@frame/store/attendance';
 import leave from '@frame/store/leave';
+import group from '@frame/store/group';
 import uploadtask from '@frame/store/uploadtask';
 import setting from '@frame/store/setting';
 import * as ustate from '@frame/store/user/state';
@@ -62,6 +63,7 @@ export default new Vuex.Store({
     util,
     attendance,
     leave,
+    group,
     uploadtask,
     setting,
   },

+ 15 - 0
src/views/class/classStuList.vue

@@ -8,6 +8,8 @@
         <el-col :span="24" class="main">
           <headStuList
             :headStuList="headStuList"
+            :groupStuList="groupStuList"
+            :noGroupStuList="noGroupStuList"
             :assignShow="assignShow"
             :assignForm="assignForm"
             :job_list="job_list"
@@ -26,8 +28,10 @@
 <script>
 import NavBar from '@/layout/common/topInfo.vue';
 import headStuList from './info/headStuList.vue';
+import _ from 'lodash';
 import { mapState, createNamespacedHelpers, mapGetters } from 'vuex';
 const { mapActions: mapStudent } = createNamespacedHelpers('student');
+const { mapActions: mapGroup } = createNamespacedHelpers('group');
 export default {
   name: 'classStuList',
   props: {},
@@ -37,6 +41,8 @@ export default {
   },
   data: () => ({
     headStuList: [],
+    noGroupStuList: [],
+    groupStuList: [],
     assignShow: false,
     assignForm: {},
     job_list: [],
@@ -103,12 +109,21 @@ export default {
   },
   methods: {
     ...mapStudent({ list: 'query', add: 'create', fet: 'fetch', updates: 'update' }),
+    ...mapGroup({ groupQuery: 'query' }),
     // 查询学生列表-并带有职务
     async searchInfo() {
       let classid = this.id;
+      // 班级所有学生
       const res = await this.list({ classid });
+      // 班级所有组
+      const groups = await this.groupQuery({ classid });
+      //班级所有进组的学生id
+      let groupstuids = _.map(_.flattenDeep(_.map(groups.data, 'students')), 'stuid');
+      let noGroupStuList = res.data.filter(f => !groupstuids.includes(f.id));
       if (this.$checkRes(res)) {
+        this.$set(this, `groupStuList`, groups.data);
         this.$set(this, `headStuList`, res.data);
+        this.$set(this, `noGroupStuList`, noGroupStuList);
       }
     },
     //点击派遣

+ 33 - 3
src/views/class/info/headStuList.vue

@@ -9,9 +9,21 @@
     </el-row> -->
     <el-row>
       <el-col :span="24" class="info">
-        <el-col :span="6" class="list" v-for="(item, index) in headStuList" :key="index" @click.native="clickAssign(item)">
-          <p class="name" :style="`font-size:${changeNum(item.name)}px`">{{ item.name }}</p>
-          <p class="job" v-if="item.job">{{ item.job }}<i class="el-icon-circle-check"></i></p>
+        <el-col v-for="item in groupStuList" :key="item.id">
+          <el-col v-if="item.students.length > 0">
+            <van-divider content-position="left">{{ item.name }}</van-divider>
+            <el-col :span="6" class="list" v-for="i in item.students" :key="i.stuid" @click.native="clickAssign({ id: i.stuid })">
+              <p class="name" :style="`font-size:${changeNum(i.stuname)}px`">{{ i.stuname }}</p>
+              <p class="job" v-if="i.job">{{ i.job }}<i class="el-icon-circle-check"></i></p>
+            </el-col>
+          </el-col>
+        </el-col>
+        <el-col>
+          <van-divider content-position="left">未分组学生</van-divider>
+          <el-col :span="6" class="list" v-for="(item, index) in noGroupStuList" :key="index" @click.native="clickAssign(item)">
+            <p class="name" :style="`font-size:${changeNum(item.name)}px`">{{ item.name }}</p>
+            <p class="job" v-if="item.job">{{ item.job }}<i class="el-icon-circle-check"></i></p>
+          </el-col>
         </el-col>
       </el-col>
     </el-row>
@@ -20,6 +32,18 @@
         <el-form-item label="学生姓名">
           {{ assignForm.name }}
         </el-form-item>
+        <el-form-item label="性别">
+          {{ assignForm.gender }}
+        </el-form-item>
+        <el-form-item label="学校">
+          {{ assignForm.school_name }}
+        </el-form-item>
+        <el-form-item label="寝室号">
+          {{ assignForm.bedroom }}
+        </el-form-item>
+        <el-form-item label="手机号码">
+          {{ assignForm.phone }}
+        </el-form-item>
         <el-form-item label="学生职务">
           <el-select v-model="assignForm.job" placeholder="请选择学生职务">
             <el-option v-for="(item, index) in job_list" :key="index" :label="item.name" :value="item.name"></el-option>
@@ -39,6 +63,8 @@ export default {
   name: 'headStuList',
   props: {
     headStuList: null,
+    groupStuList: null,
+    noGroupStuList: null,
     assignForm: null,
     assignShow: null,
     job_list: null,
@@ -88,9 +114,13 @@ p {
   margin: 0 11px 10px 12px;
   padding: 5px 0px;
   border-radius: 10px;
+  height: 50px;
 }
 .list .job {
   font-size: 10px;
   color: #405ffe;
 }
+/deep/.el-form-item {
+  margin-bottom: 5px;
+}
 </style>