|
@@ -0,0 +1,177 @@
|
|
|
+<template>
|
|
|
+ <div id="tsbbedroom">
|
|
|
+ <detail-frame :title="pageTitle" v-show="view == 'list'">
|
|
|
+ <el-alert type="warning" title="请确认好学生已经报道后再进行分寝" center :closable="false" class="btn_bar"></el-alert>
|
|
|
+ <data-table :fields="fields" :data="list" :opera="opera" @edit="toEdit" :usePage="false"></data-table>
|
|
|
+ </detail-frame>
|
|
|
+ <detail-frame :title="classInfo.name" :returns="toReturns" v-if="view != 'list'">
|
|
|
+ <data-table :fields="stufields" :data="sutlist" :opera="stuopera" @edit="toQinshi"></data-table>
|
|
|
+ </detail-frame>
|
|
|
+ <el-dialog :visible.sync="dialog" title="编辑寝室" @close="toClose" width="30%">
|
|
|
+ <data-form :data="form" :fields="tsbbedroomFields" :rules="{}" @save="turnSave"> </data-form>
|
|
|
+ </el-dialog>
|
|
|
+ </div>
|
|
|
+</template>
|
|
|
+
|
|
|
+<script>
|
|
|
+import _ from 'lodash';
|
|
|
+import axios from 'axios';
|
|
|
+import dataForm from '@frame/components/form';
|
|
|
+import dataTable from '@frame/components/filter-page-table';
|
|
|
+import detailFrame from '@frame/layout/admin/detail-frame';
|
|
|
+import { mapState, createNamespacedHelpers } from 'vuex';
|
|
|
+const { mapActions: classes } = createNamespacedHelpers('classes');
|
|
|
+const { mapActions: student } = createNamespacedHelpers('student');
|
|
|
+const { mapActions: bedroom } = createNamespacedHelpers('bedroom');
|
|
|
+const { mapActions: util } = createNamespacedHelpers('util');
|
|
|
+export default {
|
|
|
+ name: 'tsbbedroom',
|
|
|
+ props: {},
|
|
|
+ components: { detailFrame, dataTable, dataForm },
|
|
|
+ data: function() {
|
|
|
+ return {
|
|
|
+ view: 'list',
|
|
|
+ dialog: false,
|
|
|
+ form: {},
|
|
|
+ list: [
|
|
|
+ {
|
|
|
+ term: '1',
|
|
|
+ batch: '1',
|
|
|
+ name: '1',
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ stuBedroom: [],
|
|
|
+ bedroomList: [],
|
|
|
+ originBedRoomList: [],
|
|
|
+ classInfo: {},
|
|
|
+ opera: [
|
|
|
+ {
|
|
|
+ label: '查看寝室',
|
|
|
+ icon: 'el-icon-view',
|
|
|
+ method: 'edit',
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ fields: [
|
|
|
+ { label: '期', prop: 'term' },
|
|
|
+ { label: '批', prop: 'batch' },
|
|
|
+ { label: '班级', prop: 'name' },
|
|
|
+ ],
|
|
|
+ options: undefined,
|
|
|
+ // 编辑学生所在寝室
|
|
|
+ sutlist: [
|
|
|
+ {
|
|
|
+ name: '测试',
|
|
|
+ gender: '男',
|
|
|
+ nation: '汉',
|
|
|
+ id_number: '220182199603257019',
|
|
|
+ termname: '1',
|
|
|
+ batchname: '1',
|
|
|
+ classname: '1',
|
|
|
+ school_name: '吉林大学',
|
|
|
+ faculty: '计算机',
|
|
|
+ major: '计算机',
|
|
|
+ phone: '17319450324',
|
|
|
+ email: '123456@163.com',
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ stuopera: [
|
|
|
+ {
|
|
|
+ label: '编辑寝室',
|
|
|
+ icon: 'el-icon-view',
|
|
|
+ method: 'edit',
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ stufields: [
|
|
|
+ { label: '寝室号', prop: 'code' },
|
|
|
+ { label: '姓名', prop: 'name' },
|
|
|
+ { label: '性别', prop: 'gender' },
|
|
|
+ { label: '民族', prop: 'nation' },
|
|
|
+ { label: '身份证号', prop: 'id_number' },
|
|
|
+ { label: '期', prop: 'termname' },
|
|
|
+ { label: '批次', prop: 'batchname' },
|
|
|
+ { label: '班级', prop: 'classname' },
|
|
|
+ { label: '学校', prop: 'school_name' },
|
|
|
+ { label: '院系', prop: 'faculty' },
|
|
|
+ { label: '专业', prop: 'major' },
|
|
|
+ { label: '手机号', prop: 'phone' },
|
|
|
+ { label: '邮箱', prop: 'email' },
|
|
|
+ ],
|
|
|
+ tsbbedroomFields: [
|
|
|
+ { label: '姓名', model: 'name', type: 'text' },
|
|
|
+ { label: '性别', model: 'gender', type: 'text' },
|
|
|
+ { label: '寝室号', prop: 'code', type: 'input' },
|
|
|
+ ],
|
|
|
+ };
|
|
|
+ },
|
|
|
+ created() {},
|
|
|
+ methods: {
|
|
|
+ ...classes(['query']),
|
|
|
+ ...student({ getStudentList: 'query', updateStudent: 'update' }),
|
|
|
+ ...bedroom({ bedroomApart: 'apart', getBedroomList: 'query', classstuList: 'classstuList' }),
|
|
|
+ ...util({ modelFetch: 'fetch' }),
|
|
|
+ // 查询特殊班级
|
|
|
+ async search() {
|
|
|
+ let termid = _.get(this.defaultOption, 'termid');
|
|
|
+ if (!termid) return;
|
|
|
+ let res = await this.query({ termid });
|
|
|
+ if (this.$checkRes(res)) {
|
|
|
+ // this.$set(this, `list`, res.data);
|
|
|
+ }
|
|
|
+ },
|
|
|
+ // 修改
|
|
|
+ toEdit({ data }) {
|
|
|
+ this.$set(this, `classInfo`, data);
|
|
|
+ this.view = 'class';
|
|
|
+ },
|
|
|
+ // 返回
|
|
|
+ toReturns() {
|
|
|
+ this.view = 'list';
|
|
|
+ this.$set(this, `classInfo`, {});
|
|
|
+ this.$set(this, `stuBedroom`, []);
|
|
|
+ },
|
|
|
+ // 编辑寝室
|
|
|
+ toQinshi({ data }) {
|
|
|
+ this.$set(this, `form`, data);
|
|
|
+ this.dialog = true;
|
|
|
+ },
|
|
|
+ // 提交编辑寝室
|
|
|
+ turnSave() {
|
|
|
+ console.log(this.form);
|
|
|
+ },
|
|
|
+ // 关闭dialog
|
|
|
+ toClose() {
|
|
|
+ this.dialog = false;
|
|
|
+ },
|
|
|
+ },
|
|
|
+ watch: {
|
|
|
+ defaultOption: {
|
|
|
+ immediate: true,
|
|
|
+ deep: true,
|
|
|
+ handler(val) {
|
|
|
+ if (!_.get(this, 'options')) {
|
|
|
+ this.$set(this, `options`, _.cloneDeep(val));
|
|
|
+ this.search();
|
|
|
+ } else {
|
|
|
+ let ntermid = _.get(val, 'termid');
|
|
|
+ let otermid = _.get(this.options, 'termid');
|
|
|
+ if (ntermid && !_.isEqual(ntermid, otermid)) {
|
|
|
+ this.$set(this, `options`, _.cloneDeep(val));
|
|
|
+ this.search();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
+ },
|
|
|
+ },
|
|
|
+ computed: {
|
|
|
+ ...mapState(['user', 'defaultOption']),
|
|
|
+ pageTitle() {
|
|
|
+ return `${this.$route.meta.title}`;
|
|
|
+ },
|
|
|
+ },
|
|
|
+ metaInfo() {
|
|
|
+ return { title: this.$route.meta.title };
|
|
|
+ },
|
|
|
+};
|
|
|
+</script>
|
|
|
+
|
|
|
+<style lang="less" scoped></style>
|