|
@@ -0,0 +1,202 @@
|
|
|
+<template>
|
|
|
+ <div id="classStuList">
|
|
|
+ <el-row>
|
|
|
+ <el-col :span="24" class="style">
|
|
|
+ <el-col :span="24" class="top">
|
|
|
+ <NavBar v-show="navShow" :title="title" :isleftarrow="isleftarrow"> </NavBar>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="24" class="main">
|
|
|
+ <headStuList
|
|
|
+ :headStuList="headStuList"
|
|
|
+ :assignShow="assignShow"
|
|
|
+ :assignForm="assignForm"
|
|
|
+ :job_list="job_list"
|
|
|
+ @assign="clickAssign"
|
|
|
+ @outForm="outAssignShow"
|
|
|
+ @onForm="onAssignShow"
|
|
|
+ @handleClose="handleClose"
|
|
|
+ :classid="this.id"
|
|
|
+ ></headStuList>
|
|
|
+ </el-col>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ </div>
|
|
|
+</template>
|
|
|
+
|
|
|
+<script>
|
|
|
+import NavBar from '@/layout/common/topInfo.vue';
|
|
|
+import headStuList from '@/layout/class/headStuList.vue';
|
|
|
+import { mapState, createNamespacedHelpers, mapGetters } from 'vuex';
|
|
|
+const { mapActions: mapStudent } = createNamespacedHelpers('student');
|
|
|
+export default {
|
|
|
+ name: 'classStuList',
|
|
|
+ props: {},
|
|
|
+ components: {
|
|
|
+ NavBar, //头部导航
|
|
|
+ headStuList, //学生列表
|
|
|
+ },
|
|
|
+ data: () => ({
|
|
|
+ headStuList: [],
|
|
|
+ assignShow: false,
|
|
|
+ assignForm: {},
|
|
|
+ job_list: [],
|
|
|
+
|
|
|
+ job1: [
|
|
|
+ {
|
|
|
+ name: '班长',
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: '学委',
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: '普通学生',
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ job2: [
|
|
|
+ {
|
|
|
+ name: '班长',
|
|
|
+ },
|
|
|
+
|
|
|
+ {
|
|
|
+ name: '普通学生',
|
|
|
+ },
|
|
|
+ ],
|
|
|
+
|
|
|
+ job3: [
|
|
|
+ {
|
|
|
+ name: '学委',
|
|
|
+ },
|
|
|
+
|
|
|
+ {
|
|
|
+ name: '普通学生',
|
|
|
+ },
|
|
|
+ ],
|
|
|
+
|
|
|
+ job4: [
|
|
|
+ {
|
|
|
+ name: '普通学生',
|
|
|
+ },
|
|
|
+ ],
|
|
|
+
|
|
|
+ title: '',
|
|
|
+ isleftarrow: '',
|
|
|
+ navShow: true,
|
|
|
+ }),
|
|
|
+ created() {
|
|
|
+ this.searchInfo();
|
|
|
+ },
|
|
|
+ computed: {
|
|
|
+ id() {
|
|
|
+ return this.$route.query.id;
|
|
|
+ },
|
|
|
+ ...mapState(['user']),
|
|
|
+ },
|
|
|
+ mounted() {
|
|
|
+ this.title = this.$route.meta.title;
|
|
|
+ this.isleftarrow = this.$route.meta.isleftarrow;
|
|
|
+ },
|
|
|
+ watch: {
|
|
|
+ $route(to, from) {
|
|
|
+ this.title = to.meta.title;
|
|
|
+ this.isleftarrow = to.meta.isleftarrow;
|
|
|
+ },
|
|
|
+ },
|
|
|
+ methods: {
|
|
|
+ ...mapStudent({ list: 'query', add: 'create', fet: 'fetch', updates: 'update' }),
|
|
|
+ // 查询学生列表-并带有职务
|
|
|
+ async searchInfo() {
|
|
|
+ let classid = this.id;
|
|
|
+ const res = await this.list({ classid });
|
|
|
+ console.log(res.data);
|
|
|
+
|
|
|
+ if (this.$checkRes(res)) {
|
|
|
+ this.$set(this, `headStuList`, res.data);
|
|
|
+ }
|
|
|
+ },
|
|
|
+ //点击派遣
|
|
|
+ async clickAssign({ id, item }) {
|
|
|
+ var banzhang = this.headStuList.filter(item => item.job == '班长');
|
|
|
+ var xuewei = this.headStuList.filter(item => item.job == '学委');
|
|
|
+ console.log(banzhang);
|
|
|
+ console.log(xuewei.length);
|
|
|
+
|
|
|
+ if (xuewei.length == '1') {
|
|
|
+ if (banzhang.length == '2') {
|
|
|
+ if (item.job == '班长') {
|
|
|
+ this.$set(this, `job_list`, this.job2);
|
|
|
+ } else if (item.job == '学委') {
|
|
|
+ this.$set(this, `job_list`, this.job3);
|
|
|
+ } else {
|
|
|
+ this.$set(this, `job_list`, this.job4);
|
|
|
+ }
|
|
|
+ } else if (banzhang.length < '2') {
|
|
|
+ console.log('cc');
|
|
|
+
|
|
|
+ if (item.job == '学委') {
|
|
|
+ this.$set(this, `job_list`, this.job1);
|
|
|
+ } else {
|
|
|
+ this.$set(this, `job_list`, this.job2);
|
|
|
+ }
|
|
|
+ } else if (xuewei.length == '0') {
|
|
|
+ }
|
|
|
+ } else if (xuewei.length == '0') {
|
|
|
+ console.log('a');
|
|
|
+
|
|
|
+ if (banzhang.length == '0') {
|
|
|
+ this.$set(this, `job_list`, this.job1);
|
|
|
+ } else if (banzhang.length == '2') {
|
|
|
+ if (item.job == '班长') {
|
|
|
+ this.$set(this, `job_list`, this.job1);
|
|
|
+ } else {
|
|
|
+ this.$set(this, `job_list`, this.job3);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ this.$set(this, `job_list`, this.job1);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ this.assignShow = true;
|
|
|
+ const res = await this.fet(id);
|
|
|
+ this.$set(this, `assignForm`, res.data);
|
|
|
+ },
|
|
|
+ //指派职务
|
|
|
+ async onAssignShow(assignForm) {
|
|
|
+ console.log(assignForm);
|
|
|
+
|
|
|
+ let data = this.assignForm;
|
|
|
+
|
|
|
+ let res = await this.updates(data);
|
|
|
+ if (this.$checkRes(res)) {
|
|
|
+ this.$message({
|
|
|
+ message: '成功',
|
|
|
+ type: 'success',
|
|
|
+ });
|
|
|
+ }
|
|
|
+ this.outAssignShow();
|
|
|
+ this.searchInfo();
|
|
|
+ },
|
|
|
+ outAssignShow() {
|
|
|
+ this.assignShow = false;
|
|
|
+ },
|
|
|
+ handleClose() {
|
|
|
+ this.assignShow = false;
|
|
|
+ },
|
|
|
+ },
|
|
|
+};
|
|
|
+</script>
|
|
|
+
|
|
|
+<style lang="less" scoped>
|
|
|
+.style {
|
|
|
+ width: 100%;
|
|
|
+ min-height: 667px;
|
|
|
+ position: relative;
|
|
|
+ background-color: #f9fafc;
|
|
|
+}
|
|
|
+.top {
|
|
|
+ height: 46px;
|
|
|
+ overflow: hidden;
|
|
|
+}
|
|
|
+.main {
|
|
|
+ min-height: 570px;
|
|
|
+}
|
|
|
+</style>
|