兵马未动 粮草先行

This commit is contained in:
RISE
2026-02-08 23:47:50 +08:00
parent 00a005e65f
commit 2670340af3
47 changed files with 3909 additions and 257 deletions

View File

@@ -211,9 +211,13 @@
<el-icon><component :is="columnConfigMap[col.prop || '']?.icon || OfficeBuilding" /></el-icon>
<span style="margin-left: 4px">{{ col.label }}</span>
</template>
<!-- 床位号列特殊模板 -->
<!-- 床位号列haveStudent true 时变色标记有人 -->
<template v-if="col.prop === 'bedNo'" #default="scope">
<el-tag v-if="scope.row.bedNo" size="small" type="info" effect="plain">
<el-tag
v-if="scope.row.bedNo"
size="small"
:type="scope.row.haveStudent ? 'warning' : 'info'"
effect="plain">
{{ scope.row.bedNo }}
</el-tag>
<span v-else>-</span>
@@ -274,6 +278,12 @@
<!-- 转宿弹窗 -->
<TransferDialog ref="transferDialogRef" @refresh="getDataList" />
<!-- 宿舍互换弹窗 -->
<SwapDialog ref="swapDialogRef" @refresh="getDataList" />
<!-- 打印宿舍卡弹窗 -->
<PrintCardDialog ref="printCardDialogRef" />
</div>
</template>
@@ -281,7 +291,7 @@
import { reactive, ref, onMounted, computed, nextTick } from 'vue'
import { useRoute } from 'vue-router'
import { BasicTableProps, useTable } from "/@/hooks/table";
import { fetchList, delObjs } from "/@/api/stuwork/dormroomstudent";
import { fetchList, delObjs, exportEmptyPeopleRoomExcel } from "/@/api/stuwork/dormroomstudent";
import { getDeptList } from "/@/api/basic/basicclass";
import { getBuildingList } from "/@/api/stuwork/dormbuilding";
import { fetchDormRoomTreeList } from "/@/api/stuwork/dormroom";
@@ -289,6 +299,8 @@ import { useMessage, useMessageBox } from "/@/hooks/message";
import TableColumnControl from '/@/components/TableColumnControl/index.vue'
import FormDialog from './form.vue';
import TransferDialog from './transfer.vue';
import SwapDialog from './swap.vue';
import PrintCardDialog from './printCard.vue';
import TreeSelect from '/@/components/TreeSelect/index.vue';
import { List, OfficeBuilding, House, Grid, UserFilled, Phone, CreditCard, Avatar, User, Setting, Menu, Search, Document } from '@element-plus/icons-vue'
import { useTableColumnControl } from '/@/hooks/tableColumn'
@@ -301,6 +313,8 @@ const route = useRoute()
const formDialogRef = ref()
const columnControlRef = ref<any>()
const transferDialogRef = ref()
const swapDialogRef = ref()
const printCardDialogRef = ref()
const searchFormRef = ref()
const showSearch = ref(true)
const deptList = ref<any[]>([])
@@ -425,29 +439,91 @@ const handleDormDataTypeChange = (dormdataType: string) => {
getDormRoomTreeListData(dormdataType)
}
// 打印宿舍卡
// 打印宿舍卡(按房间号查询后打印)
const handlePrintCard = () => {
useMessage().warning('功能开发中')
printCardDialogRef.value?.openDialog()
}
// 宿舍互换
// 宿舍互换(两名学生互换宿舍)
const handleRoomSwap = () => {
useMessage().warning('功能开发中')
const query = {
deptCode: searchForm.deptCode,
buildingNo: searchForm.buildingNo,
gender: searchForm.gender,
roomNo: searchForm.roomNo || searchForm.roomNoInput,
classNo: searchForm.classNo,
stuNo: searchForm.stuNo,
realName: searchForm.realName
}
swapDialogRef.value?.openDialog(query)
}
// 导出
const handleExport = () => {
useMessage().warning('功能开发中')
// 导出:空 n 人宿舍导出(按当前筛选条件传参)
const handleExport = async () => {
try {
const params = {
deptCode: searchForm.deptCode,
buildingNo: searchForm.buildingNo,
gender: searchForm.gender,
dormdataType: searchForm.dormdataType,
roomNo: searchForm.roomNo || searchForm.roomNoInput,
classNo: searchForm.classNo,
stuNo: searchForm.stuNo,
realName: searchForm.realName
}
const res = await exportEmptyPeopleRoomExcel(params)
const blob = res instanceof Blob ? res : new Blob([res as BlobPart], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' })
const url = window.URL.createObjectURL(blob)
const link = document.createElement('a')
link.href = url
link.download = `空宿舍导出_${Date.now()}.xlsx`
document.body.appendChild(link)
link.click()
document.body.removeChild(link)
window.URL.revokeObjectURL(url)
useMessage().success('导出成功')
} catch (err: any) {
useMessage().error(err?.msg || '导出失败')
}
}
// 名单导出
const handleExportList = () => {
useMessage().warning('功能开发中')
// 名单导出:与导出共用空 n 人宿舍导出接口,文件名区分
const handleExportList = async () => {
try {
const params = {
deptCode: searchForm.deptCode,
buildingNo: searchForm.buildingNo,
gender: searchForm.gender,
dormdataType: searchForm.dormdataType,
roomNo: searchForm.roomNo || searchForm.roomNoInput,
classNo: searchForm.classNo,
stuNo: searchForm.stuNo,
realName: searchForm.realName
}
const res = await exportEmptyPeopleRoomExcel(params)
const blob = res instanceof Blob ? res : new Blob([res as BlobPart], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' })
const url = window.URL.createObjectURL(blob)
const link = document.createElement('a')
link.href = url
link.download = `住宿学生名单_${Date.now()}.xlsx`
document.body.appendChild(link)
link.click()
document.body.removeChild(link)
window.URL.revokeObjectURL(url)
useMessage().success('导出成功')
} catch (err: any) {
useMessage().error(err?.msg || '导出失败')
}
}
// 编辑(与转宿共用接口 edit修改房间/床位/是否舍长)
const handleEdit = (row: any) => {
transferDialogRef.value?.openDialog(row)
}
// 转宿
const handleTransfer = (row: any) => {
transferDialogRef.value.openDialog(row)
transferDialogRef.value?.openDialog(row)
}
// 退宿