docs(requirement): 添加手术室维护界面需求文档

- 创建手术室维护界面PRD文档
- 定义页面概述、核心功能和用户价值
- 设计整体布局和页面区域详细描述
- 规范交互功能和数据结构说明
- 说明开发实现要点和注意事项
- 移除中医诊断主诊断功能实现说明文档
- 移除公告通知弹窗功能说明文档
- 移除手术人员字段不显示问题解决方案文档
- 移除手术和麻醉信息Redis缓存实现说明文档
- 移除手术室管理添加类型和所属科室字段说明文档
This commit is contained in:
2026-01-13 14:41:27 +08:00
parent e20e2b637f
commit a47306825a
71 changed files with 630 additions and 2519 deletions

View File

@@ -33,8 +33,13 @@
<el-button type="primary" plain icon="Plus" @click="handleAdd">新增手术室</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="danger" plain icon="Delete" :disabled="multiple" @click="handleDelete">
批量删除
<el-button type="success" plain icon="VideoPlay" :disabled="multiple" @click="handleEnable(ids)">
批量启用
</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="warning" plain icon="VideoPause" :disabled="multiple" @click="handleDisable(ids)">
批量停用
</el-button>
</el-col>
<right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar>
@@ -50,7 +55,7 @@
>
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="序号" type="index" align="center" width="60" />
<el-table-column label="手术室编码" align="center" prop="busNo" width="120" show-overflow-tooltip />
<el-table-column label="房间号" align="center" prop="busNo" width="120" show-overflow-tooltip />
<el-table-column label="手术室名称" align="center" prop="name" min-width="150" show-overflow-tooltip />
<el-table-column label="类型" align="center" prop="roomTypeEnum_dictText" width="100" />
<el-table-column label="所属科室" align="center" prop="organizationName" width="120" show-overflow-tooltip />
@@ -65,16 +70,24 @@
</template>
</el-table-column>
<el-table-column label="显示顺序" align="center" prop="displayOrder" width="100" />
<el-table-column label="操作" align="center" width="180" fixed="right">
<el-table-column label="操作" align="center" width="220" fixed="right">
<template #default="scope">
<el-button link type="primary" icon="Edit" @click="handleEdit(scope.row)">编辑</el-button>
<el-button link type="primary" icon="View" @click="handleView(scope.row)">查看</el-button>
<el-button
v-if="scope.row.statusEnum === 1"
link
type="danger"
icon="Delete"
@click="handleDelete(scope.row)"
>删除</el-button>
type="warning"
icon="VideoPause"
@click="handleDisable([scope.row.id])"
>停用</el-button>
<el-button
v-else
link
type="success"
icon="VideoPlay"
@click="handleEnable([scope.row.id])"
>启用</el-button>
</template>
</el-table-column>
</el-table>
@@ -92,11 +105,19 @@
<el-dialog :title="title" v-model="open" width="700px" append-to-body>
<el-form ref="operatingRoomRef" :model="form" :rules="rules" label-width="120px">
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="房间号" prop="busNo">
<el-input v-model="form.busNo" placeholder="请输入房间号" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="手术室名称" prop="name">
<el-input v-model="form.name" placeholder="请输入手术室名称" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="容纳人数" prop="capacity">
<el-input-number
@@ -231,11 +252,12 @@
</template>
<script setup name="OperatingRoomManage">
import { listOperatingRoom, getOperatingRoom, addOperatingRoom, updateOperatingRoom, deleteOperatingRoom } from '@/api/operatingroom'
import { listOperatingRoom, getOperatingRoom, addOperatingRoom, updateOperatingRoom, deleteOperatingRoom, enableOperatingRoom, disableOperatingRoom } from '@/api/operatingroom'
import { deptTreeSelect } from '@/api/system/user'
import { computed } from 'vue'
const { proxy } = getCurrentInstance()
const { operating_room_type } = proxy.useDict('operating_room_type')
const loading = ref(true)
const showSearch = ref(true)
const operatingRoomList = ref([])
@@ -291,12 +313,7 @@ const form = ref({
const operatingRoomRef = ref()
const viewData = ref({})
const roomTypeOptions = ref([
{ value: 1, label: '急诊手术室' },
{ value: 2, label: '择期手术室' },
{ value: 3, label: '日间手术室' },
{ value: 4, label: '复合手术室' }
])
const roomTypeOptions = operating_room_type
const statusOptions = ref([
{ value: 1, label: '启用' },
@@ -304,6 +321,7 @@ const statusOptions = ref([
])
const rules = ref({
busNo: [{ required: true, message: '房间号不能为空', trigger: 'blur' }],
name: [{ required: true, message: '手术室名称不能为空', trigger: 'blur' }],
capacity: [
{ required: true, message: '容纳人数不能为空', trigger: 'blur' },
@@ -484,17 +502,30 @@ function submitForm() {
})
}
/** 删除按钮操作 */
function handleDelete(row) {
const ids = row.id || ids.value
/** 启用按钮操作 */
function handleEnable(ids) {
proxy.$modal
.confirm('是否确认删除选中的手术室?')
.confirm('是否确认启用选中的手术室?')
.then(function () {
return deleteOperatingRoom(ids)
return enableOperatingRoom(ids)
})
.then(() => {
getList()
proxy.$modal.msgSuccess('删除成功')
proxy.$modal.msgSuccess('启用成功')
})
.catch(() => {})
}
/** 停用按钮操作 */
function handleDisable(ids) {
proxy.$modal
.confirm('是否确认停用选中的手术室?')
.then(function () {
return disableOperatingRoom(ids)
})
.then(() => {
getList()
proxy.$modal.msgSuccess('停用成功')
})
.catch(() => {})
}