|
@@ -26,13 +26,8 @@
|
|
|
|
|
|
<el-checkbox-group v-model="stuList">
|
|
|
<el-table :data="stuBedroom" size="mini" border stripe>
|
|
|
- <el-table-column align="center" label="寝室号" prop="bedroom" width="100" sortable></el-table-column>
|
|
|
+ <el-table-column align="center" label="寝室号" prop="code" width="100" sortable></el-table-column>
|
|
|
<el-table-column align="center" label="楼层" prop="floor" width="100" sortable></el-table-column>
|
|
|
- <!-- <el-table-column prop="state" label="状态" align="center">
|
|
|
- <template v-slot="scoped">
|
|
|
- {{ `${scoped.row.status}` === `0` ? '启用' : `${scoped.row.status}` === `1` ? '停用' : '' }}
|
|
|
- </template>
|
|
|
- </el-table-column> -->
|
|
|
<el-table-column align="center" label="男女限制" prop="gender" width="100"></el-table-column>
|
|
|
<el-table-column align="center" label="人数" prop="number" width="100"></el-table-column>
|
|
|
<el-table-column align="center" label="学生">
|
|
@@ -40,7 +35,7 @@
|
|
|
<el-row>
|
|
|
<el-col v-for="(i, index) in row.list" :key="index" :span="6">
|
|
|
<el-checkbox :label="i.id">
|
|
|
- <el-link @click="turnBedroom(i)" :type="i.gender === '男' ? 'primary' : 'success'">{{ i.name }}({{ i.gender }})</el-link>
|
|
|
+ <el-link :type="i.gender === '男' ? 'primary' : 'success'">{{ i.name }}({{ i.gender }})</el-link>
|
|
|
</el-checkbox>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
@@ -49,22 +44,18 @@
|
|
|
</el-table>
|
|
|
</el-checkbox-group>
|
|
|
</detail-frame>
|
|
|
- <el-dialog :visible.sync="dialog" title="修改寝室" @close="toClose" width="30%">
|
|
|
- <data-form :data="form" :fields="turnBedRoomFields" :rules="{}" @save="turnSave">
|
|
|
- <template #options="{item,form}">
|
|
|
- <template v-if="item.model == 'bedroom'">
|
|
|
- <template v-for="(i, index) in bedroomList">
|
|
|
- <el-option :key="index" :label="i.name" :value="i.code"></el-option>
|
|
|
- </template>
|
|
|
- </template>
|
|
|
- </template>
|
|
|
- </data-form>
|
|
|
- </el-dialog>
|
|
|
- <el-dialog :visible.sync="selectDialog" title="批量修改寝室" @close="toClose" width="30%">
|
|
|
- <el-select v-model="bedroomCode" placeholder="" filterable>
|
|
|
- <el-option v-for="(i, index) in originBedRoomList" :key="index" :label="i.name" :value="i.code"></el-option>
|
|
|
- </el-select>
|
|
|
- <el-button type="primary" @click="toAllSave">批量保存</el-button>
|
|
|
+ <el-dialog :visible.sync="selectDialog" title="批量修改寝室" center @close="toClose" width="30%">
|
|
|
+ <el-row>
|
|
|
+ <el-col :span="24" style="font-size:18px">
|
|
|
+ 选择寝室:
|
|
|
+ <el-select v-model="bedroomCode" placeholder="请选择寝室" filterable>
|
|
|
+ <el-option v-for="(i, index) in assignList" :key="index" :label="i.name" :value="i.code"></el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ <template #footer>
|
|
|
+ <el-button type="primary" @click="toAllSave">批量保存</el-button>
|
|
|
+ </template>
|
|
|
</el-dialog>
|
|
|
</div>
|
|
|
</template>
|
|
@@ -83,7 +74,7 @@ const { mapActions: util } = createNamespacedHelpers('util');
|
|
|
export default {
|
|
|
name: 'bedroom',
|
|
|
props: {},
|
|
|
- components: { detailFrame, dataTable, dataForm },
|
|
|
+ components: { detailFrame, dataTable }, //dataForm
|
|
|
data: function() {
|
|
|
return {
|
|
|
view: 'list',
|
|
@@ -95,7 +86,6 @@ export default {
|
|
|
stuList: [],
|
|
|
stuBedroom: [],
|
|
|
bedroomList: [],
|
|
|
- originBedRoomList: [],
|
|
|
classInfo: {},
|
|
|
opera: [
|
|
|
{
|
|
@@ -109,21 +99,16 @@ export default {
|
|
|
{ label: '批', prop: 'batch' },
|
|
|
{ label: '班级', prop: 'name' },
|
|
|
],
|
|
|
- turnBedRoomFields: [
|
|
|
- { label: '姓名', model: 'name', type: 'text' },
|
|
|
- { label: '性别', model: 'gender', type: 'text' },
|
|
|
- { label: '学校', model: 'school_name', type: 'text' },
|
|
|
- { label: '寝室', model: 'bedroom', type: 'select' },
|
|
|
- ],
|
|
|
options: undefined,
|
|
|
ostuList: [],
|
|
|
+ assignList: [],
|
|
|
};
|
|
|
},
|
|
|
created() {},
|
|
|
methods: {
|
|
|
...classes(['query']),
|
|
|
...student({ getStudentList: 'query', updateStudent: 'update' }),
|
|
|
- ...bedroom({ bedroomApart: 'apart', getBedroomList: 'query', classstuList: 'classstuList', updateBat: 'updateBat' }),
|
|
|
+ ...bedroom({ bedroomApart: 'apart', getBedroomList: 'query', classstuList: 'classstuList', updateBat: 'updateBat', getAssignRoom: 'getAssignRoom' }),
|
|
|
...util({ modelFetch: 'fetch', utilMethod: 'utilMethod' }),
|
|
|
async search() {
|
|
|
let termid = _.get(this.defaultOption, 'termid');
|
|
@@ -132,6 +117,8 @@ export default {
|
|
|
if (this.$checkRes(res)) {
|
|
|
this.$set(this, `list`, res.data);
|
|
|
}
|
|
|
+ let bedres = await this.getBedroomList();
|
|
|
+ if (this.$checkRes(bedres)) this.$set(this, `bedroomList`, bedres.data);
|
|
|
},
|
|
|
toEdit({ data }) {
|
|
|
this.$set(this, `classInfo`, data);
|
|
@@ -141,31 +128,16 @@ export default {
|
|
|
async getSL() {
|
|
|
let res = await this.getStuList();
|
|
|
if (this.$checkRes(res)) {
|
|
|
- let duplicate = _.cloneDeep(res.data);
|
|
|
- let mid = _.groupBy(duplicate, 'bedroom');
|
|
|
- let keys = Object.keys(mid);
|
|
|
+ let group = _.groupBy(res.data, 'bedroomid');
|
|
|
+ let keys = Object.keys(group);
|
|
|
+ // 组织数据
|
|
|
let arr = [];
|
|
|
for (const key of keys) {
|
|
|
- let o = {};
|
|
|
- o['bedroom'] = !key || key == 'undefined' ? '未分寝' : key;
|
|
|
- o['list'] = mid[key];
|
|
|
- arr.push(o);
|
|
|
- }
|
|
|
- let val = await this.getBedroomList({ status: '0' });
|
|
|
- let bdrooms = [];
|
|
|
- if (this.$checkRes(val)) {
|
|
|
- let bedrooms = _.cloneDeep(val.data);
|
|
|
- this.$set(this, `originBedRoomList`, bedrooms);
|
|
|
- arr = arr.map(i => {
|
|
|
- let r = bedrooms.find(f => f.code == i.bedroom);
|
|
|
- if (r) {
|
|
|
- let mid = _.pick(r, ['number', 'gender', 'floor']);
|
|
|
- i = { ...i, ...mid };
|
|
|
- }
|
|
|
- return i;
|
|
|
- });
|
|
|
+ const bedroom = this.bedroomList.find(f => f._id == key);
|
|
|
+ bedroom.list = group[key];
|
|
|
+ arr.push(bedroom);
|
|
|
}
|
|
|
- this.$set(this, `stuBedroom`, arr);
|
|
|
+ this.$set(this, 'stuBedroom', arr);
|
|
|
}
|
|
|
},
|
|
|
async getStuList() {
|
|
@@ -195,32 +167,6 @@ export default {
|
|
|
this.$set(this, `classInfo`, {});
|
|
|
this.$set(this, `stuBedroom`, []);
|
|
|
},
|
|
|
- async turnBedroom(data) {
|
|
|
- this.$set(this, `form`, data);
|
|
|
- let duplicate = _.cloneDeep(this.originBedRoomList);
|
|
|
- let { gender } = data;
|
|
|
- //没法限制,还可能有别的班,按班级看的话不全,只能自己排
|
|
|
- let mid = duplicate.filter(f => f.gender == gender || f.gender == '' || f.gender == undefined || f.gender == null);
|
|
|
- mid = mid.map(i => {
|
|
|
- i.name = `${i.code}-${i.gender || '无性别限制'}-${i.floor}楼`;
|
|
|
- return i;
|
|
|
- });
|
|
|
- // let mid2 = this.stuBedroom.filter(f => f.list.every(e => e.gender == gender) && f.list.length <= f.number);
|
|
|
-
|
|
|
- this.$set(this, `bedroomList`, mid);
|
|
|
- this.dialog = true;
|
|
|
- },
|
|
|
- //转寝保存
|
|
|
- async turnSave({ data }) {
|
|
|
- const bedroom = await this.modelFetch({ model: 'bedroom', code: data.bedroom });
|
|
|
- data.bedroomid = bedroom.data.id;
|
|
|
- // data.bedroom = bedroom.data.code;
|
|
|
- let res = await this.updateStudent(data);
|
|
|
- if (this.$checkRes(res, `转寝成功`, res.errmsg || `转寝失败`)) {
|
|
|
- this.getSL();
|
|
|
- this.toClose();
|
|
|
- }
|
|
|
- },
|
|
|
toClose() {
|
|
|
this.stuList = [];
|
|
|
this.selectDialog = false;
|
|
@@ -232,16 +178,20 @@ export default {
|
|
|
const msg = this.$message({ duration: 0, message: '正在处理,请稍后...' });
|
|
|
let code = _.clone(this.bedroomCode);
|
|
|
let ids = _.cloneDeep(this.stuList);
|
|
|
- let bedroom = this.originBedRoomList.find(f => code == f.code);
|
|
|
+ let bedroom = this.bedroomList.find(f => code == f.code);
|
|
|
if (bedroom) {
|
|
|
- let res = await this.updateBat({ code, ids, bedroomid: bedroom.id });
|
|
|
+ let termid = _.get(this.defaultOption, 'termid');
|
|
|
+ let res = await this.updateBat({ code, ids, bedroomid: bedroom.id, termid });
|
|
|
msg.close();
|
|
|
- this.$checkRes(res, '保存成功', '保存失敗');
|
|
|
+ this.$checkRes(res, '保存成功', res.errmsg || '保存失败');
|
|
|
}
|
|
|
this.toClose();
|
|
|
- this.getSL();
|
|
|
+ // this.getSL();
|
|
|
},
|
|
|
async toSelect() {
|
|
|
+ const { termid } = this.defaultOption;
|
|
|
+ const res = await this.getAssignRoom({ termid });
|
|
|
+ if (res.errcode == '0') this.$set(this, `assignList`, res.data);
|
|
|
this.selectDialog = true;
|
|
|
},
|
|
|
getGender(gender) {
|