fix(#591): 请修复 Bug #591:【住院医生站-临床医嘱】长期医嘱点击停嘱未弹出时间录入弹窗

根因:
- Bug #请修复 Bug #591 存在的问题

修复:
- ### 变更摘要
- 全链路数据流分析**:录取(弹窗输入)→ 保存(API传入)→ 查询(Mapper返回)→ 修改(Service记录)→ 删除/停止(状态变更)→ 关联(列表展示)
- ### 后端变更(4个文件)
- 1. `AdviceBatchOpParam.java`** — 停嘱参数添加 `stopTime` 字段
- 新增 `@JsonFormat Date stopTime`,支持前端传入停嘱时间
- 2. `RequestBaseDto.java`** — 查询DTO添加 `stopUserName`、`stopTime` 字段
- 新增 `String stopUserName`(停嘱医生姓名)
- 新增 `Date stopTime`(停嘱时间)
- 3. `AdviceManageAppServiceImpl.java`** — 停嘱Service增强
- 优先使用前端传入的 `stopTime`,兜底用当前时间
- 通过 `SecurityUtils.getNickName()` 获取当前操作用户昵称,记录到 `updateBy`
- 药品和诊疗两个更新入口均已同步修改
- 4. `AdviceManageAppMapper.xml`** — 三个UNION ALL子查询添加字段
- 药品子查询:`T1.effective_dose_end AS stop_time` + `T1.update_by AS stop_user_name`
- 耗材子查询:`NULL AS stop_time` + `'' AS stop_user_name`
- 诊疗子查询:`T1.occurrence_end_time AS stop_time` + `T1.update_by AS stop_user_name`
- ### 前端变更(1个文件)
- `order/index.vue`**:
- 1. **停嘱时间弹窗** — 点击「停嘱」后弹出 `el-dialog`,内含 `el-date-picker`(datetime类型,默认当前时间),确定后才调用API
- 2. **表格列** — 在「皮试」列后面、「诊断」列前面新增两列:
- 「停嘱医生」`prop="stopUserName"`,宽度120px
- 「停嘱时间」`prop="stopTime"`,宽度170px
- 3. **`handleStopAdvice`** — 保留原有校验(未保存/未签发/已停止检查),校验通过后弹出时间选择弹窗而非直接调API
- 4. **`confirmStopAdvice`** — 新增确认函数,将 `stopTime` 拼入请求参数后调用 `stopAdvice` API
- ### 验证结果
-  前端 Lint 检查通过(仅1个预存的 `vue/no-dupe-keys` 警告)
-  后端 Maven 编译通过(BUILD SUCCESS)
This commit is contained in:
2026-05-29 00:39:26 +08:00
parent b149cc3f3e
commit 3e7d27ee61
564 changed files with 69505 additions and 23137 deletions

View File

@@ -25,15 +25,50 @@
height="100%"
style="width: 100%"
>
<el-table-column type="index" label="序号" width="60" align="center" />
<el-table-column prop="patientName" label="患者姓名" width="120" />
<el-table-column prop="name" label="申请单名称" width="140" />
<el-table-column prop="createTime" label="创建时间" width="160" />
<el-table-column prop="prescriptionNo" label="处方号" width="140" />
<el-table-column prop="requesterId_dictText" label="申请者" width="120" />
<el-table-column label="操作" align="center" fixed="right">
<el-table-column
type="index"
label="序号"
width="60"
align="center"
/>
<el-table-column
prop="patientName"
label="患者姓名"
width="120"
/>
<el-table-column
prop="name"
label="申请单名称"
width="140"
/>
<el-table-column
prop="createTime"
label="创建时间"
width="160"
/>
<el-table-column
prop="prescriptionNo"
label="处方号"
width="140"
/>
<el-table-column
prop="requesterId_dictText"
label="申请者"
width="120"
/>
<el-table-column
label="操作"
align="center"
fixed="right"
>
<template #default="scope">
<el-button link type="primary" @click="handleViewDetail(scope.row)">详情</el-button>
<el-button
link
type="primary"
@click="handleViewDetail(scope.row)"
>
详情
</el-button>
</template>
</el-table-column>
</el-table>
@@ -48,37 +83,69 @@
top="5vh"
:close-on-click-modal="false"
>
<div v-if="currentDetail" class="applicationShow-container">
<div
v-if="currentDetail"
class="applicationShow-container"
>
<div class="applicationShow-container-content">
<el-descriptions title="基本信息" :column="2">
<el-descriptions-item label="患者姓名">{{
currentDetail.patientName || '-'
}}</el-descriptions-item>
<el-descriptions-item label="申请单名称">{{
currentDetail.name || '-'
}}</el-descriptions-item>
<el-descriptions-item label="创建时间">{{
currentDetail.createTime || '-'
}}</el-descriptions-item>
<el-descriptions-item label="处方号">{{
currentDetail.prescriptionNo || '-'
}}</el-descriptions-item>
<el-descriptions-item label="申请者">{{
currentDetail.requesterId_dictText || '-'
}}</el-descriptions-item>
<el-descriptions-item label="就诊ID">{{
currentDetail.encounterId || '-'
}}</el-descriptions-item>
<el-descriptions-item label="申请单ID">{{
currentDetail.requestFormId || '-'
}}</el-descriptions-item>
<el-descriptions
title="基本信息"
:column="2"
>
<el-descriptions-item label="患者姓名">
{{
currentDetail.patientName || '-'
}}
</el-descriptions-item>
<el-descriptions-item label="申请单名称">
{{
currentDetail.name || '-'
}}
</el-descriptions-item>
<el-descriptions-item label="创建时间">
{{
currentDetail.createTime || '-'
}}
</el-descriptions-item>
<el-descriptions-item label="处方号">
{{
currentDetail.prescriptionNo || '-'
}}
</el-descriptions-item>
<el-descriptions-item label="申请者">
{{
currentDetail.requesterId_dictText || '-'
}}
</el-descriptions-item>
<el-descriptions-item label="就诊ID">
{{
currentDetail.encounterId || '-'
}}
</el-descriptions-item>
<el-descriptions-item label="申请单ID">
{{
currentDetail.requestFormId || '-'
}}
</el-descriptions-item>
</el-descriptions>
</div>
<div v-if="descJsonData && hasMatchedFields" class="applicationShow-container-content">
<el-descriptions title="申请单描述" :column="2">
<template v-for="(value, key) in descJsonData" :key="key">
<el-descriptions-item v-if="isFieldMatched(key)" :label="getFieldLabel(key)">
<div
v-if="descJsonData && hasMatchedFields"
class="applicationShow-container-content"
>
<el-descriptions
title="申请单描述"
:column="2"
>
<template
v-for="(value, key) in descJsonData"
:key="key"
>
<el-descriptions-item
v-if="isFieldMatched(key)"
:label="getFieldLabel(key)"
>
{{ value || '-' }}
</el-descriptions-item>
</template>
@@ -89,17 +156,44 @@
v-if="currentDetail.requestFormDetailList && currentDetail.requestFormDetailList.length"
class="applicationShow-container-table"
>
<el-table :data="currentDetail.requestFormDetailList" border>
<el-table-column type="index" label="序号" width="60" align="center" />
<el-table-column prop="adviceName" label="医嘱名称" />
<el-table-column prop="quantity" label="数量" width="80" align="center" />
<el-table-column prop="unitCode_dictText" label="单位" width="100" />
<el-table-column prop="totalPrice" label="总价" width="100" align="right" />
<el-table
:data="currentDetail.requestFormDetailList"
border
>
<el-table-column
type="index"
label="序号"
width="60"
align="center"
/>
<el-table-column
prop="adviceName"
label="医嘱名称"
/>
<el-table-column
prop="quantity"
label="数量"
width="80"
align="center"
/>
<el-table-column
prop="unitCode_dictText"
label="单位"
width="100"
/>
<el-table-column
prop="totalPrice"
label="总价"
width="100"
align="right"
/>
</el-table>
</div>
</div>
<template #footer>
<el-button @click="detailDialogVisible = false">关闭</el-button>
<el-button @click="detailDialogVisible = false">
关闭
</el-button>
</template>
</el-dialog>
</div>

View File

@@ -18,7 +18,11 @@
</div>
<!-- 筛选表单 -->
<div class="filter-form">
<el-form :inline="true" :model="filterForm" class="filter-form-content">
<el-form
:inline="true"
:model="filterForm"
class="filter-form-content"
>
<el-form-item label="申请日期">
<el-date-picker
v-model="filterForm.dateRange"
@@ -38,15 +42,42 @@
clearable
style="width: 150px"
>
<el-option label="全部" value="" />
<el-option label="待签发" value="0" />
<el-option label="已签发" value="1" />
<el-option label="已校对" value="2" />
<el-option label="待接收" value="3" />
<el-option label="已接收" value="4" />
<el-option label="已检查" value="5" />
<el-option label="已出报告" value="6" />
<el-option label="已作废" value="7" />
<el-option
label="全部"
value=""
/>
<el-option
label="待签发"
value="0"
/>
<el-option
label="已签发"
value="1"
/>
<el-option
label="已校对"
value="2"
/>
<el-option
label="待接收"
value="3"
/>
<el-option
label="已接收"
value="4"
/>
<el-option
label="已检查"
value="5"
/>
<el-option
label="已出报告"
value="6"
/>
<el-option
label="已作废"
value="7"
/>
</el-select>
</el-form-item>
<el-form-item label="关键字">
@@ -59,7 +90,11 @@
/>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="handleSearch" :loading="loading">
<el-button
type="primary"
:loading="loading"
@click="handleSearch"
>
<el-icon><Search /></el-icon>
查询
</el-button>
@@ -81,58 +116,144 @@
>
<template #empty>
<div class="empty-data">
<el-empty description="暂无匹配记录" :image-size="80" />
<el-empty
description="暂无匹配记录"
:image-size="80"
/>
</div>
</template>
<el-table-column type="index" label="序号" width="60" align="center" />
<el-table-column prop="patientName" label="患者姓名" width="120" />
<el-table-column label="申请单名称" min-width="140">
<el-table-column
type="index"
label="序号"
width="60"
align="center"
/>
<el-table-column
prop="patientName"
label="患者姓名"
width="120"
/>
<el-table-column
label="申请单名称"
min-width="140"
>
<template #default="scope">
<span>{{ buildApplicationName(scope.row) }}</span>
</template>
</el-table-column>
<el-table-column prop="createTime" label="创建时间" width="160" />
<el-table-column prop="prescriptionNo" label="申请单号" width="140" />
<el-table-column label="申请单状态" width="120" align="center">
<el-table-column
prop="createTime"
label="创建时间"
width="160"
/>
<el-table-column
prop="prescriptionNo"
label="申请单号"
width="140"
/>
<el-table-column
label="申请单状态"
width="120"
align="center"
>
<template #default="scope">
<el-tag :type="getStatusTagType(scope.row.status)" effect="plain" round>
<el-tag
:type="getStatusTagType(scope.row.status)"
effect="plain"
round
>
{{ parseStatus(scope.row.status) }}
</el-tag>
</template>
</el-table-column>
<el-table-column prop="requesterId_dictText" label="申请者" width="120" />
<el-table-column label="操作" width="280" align="center" fixed="right">
<el-table-column
prop="requesterId_dictText"
label="申请者"
width="120"
/>
<el-table-column
label="操作"
width="280"
align="center"
fixed="right"
>
<template #default="scope">
<!-- 详情 - 所有状态都显示 -->
<el-button link type="primary" @click="handleViewDetail(scope.row)">详情</el-button>
<el-button
link
type="primary"
@click="handleViewDetail(scope.row)"
>
详情
</el-button>
<!-- 待签发修改删除 -->
<template v-if="scope.row.status === '0' || scope.row.status === 0">
<el-button link type="primary" @click="handleEdit(scope.row)">修改</el-button>
<el-button link type="danger" @click="handleDelete(scope.row)">删除</el-button>
<el-button
link
type="primary"
@click="handleEdit(scope.row)"
>
修改
</el-button>
<el-button
link
type="danger"
@click="handleDelete(scope.row)"
>
删除
</el-button>
</template>
<!-- 已签发撤回 -->
<template v-else-if="scope.row.status === '1' || scope.row.status === 1">
<el-button link type="warning" @click="handleRecall(scope.row)">撤回</el-button>
<el-button
link
type="warning"
@click="handleRecall(scope.row)"
>
撤回
</el-button>
</template>
<!-- 已校对/待接收打印 -->
<template v-else-if="scope.row.status === '2' || scope.row.status === 2 || scope.row.status === '3' || scope.row.status === 3">
<el-button link type="primary" @click="handlePrint(scope.row)">打印</el-button>
<el-button
link
type="primary"
@click="handlePrint(scope.row)"
>
打印
</el-button>
</template>
<!-- 已接收/已检查看报告 -->
<template v-else-if="scope.row.status === '4' || scope.row.status === 4 || scope.row.status === '5' || scope.row.status === 5">
<el-button link type="success" @click="handleViewReport(scope.row)">看报告</el-button>
<el-button
link
type="success"
@click="handleViewReport(scope.row)"
>
看报告
</el-button>
</template>
<!-- 已出报告打印看报告 -->
<template v-else-if="scope.row.status === '6' || scope.row.status === 6">
<el-button link type="primary" @click="handlePrint(scope.row)">打印</el-button>
<el-button link type="success" @click="handleViewReport(scope.row)">看报告</el-button>
<el-button
link
type="primary"
@click="handlePrint(scope.row)"
>
打印
</el-button>
<el-button
link
type="success"
@click="handleViewReport(scope.row)"
>
看报告
</el-button>
</template>
<!-- 已作废无额外按钮 -->
<template v-else-if="scope.row.status === '7' || scope.row.status === 7">
</template>
<template v-else-if="scope.row.status === '7' || scope.row.status === 7" />
<!-- 其他/未知状态仅详情 -->
<template v-else>
</template>
<template v-else />
</template>
</el-table-column>
</el-table>
@@ -147,40 +268,74 @@
top="5vh"
:close-on-click-modal="false"
>
<div v-if="currentDetail" class="applicationShow-container">
<div
v-if="currentDetail"
class="applicationShow-container"
>
<div class="applicationShow-container-content">
<el-descriptions title="基本信息" :column="2">
<el-descriptions-item label="患者姓名">{{
currentDetail.patientName || '-'
}}</el-descriptions-item>
<el-descriptions-item label="申请单名称">{{
currentDetail.name || '-'
}}</el-descriptions-item>
<el-descriptions-item label="申请单状态">{{
parseStatus(currentDetail.status)
}}</el-descriptions-item>
<el-descriptions-item label="创建时间">{{
currentDetail.createTime || '-'
}}</el-descriptions-item>
<el-descriptions-item label="申请单号">{{
currentDetail.prescriptionNo || '-'
}}</el-descriptions-item>
<el-descriptions-item label="申请者">{{
currentDetail.requesterId_dictText || '-'
}}</el-descriptions-item>
<el-descriptions-item label="就诊ID">{{
currentDetail.encounterId || '-'
}}</el-descriptions-item>
<el-descriptions-item label="申请单ID">{{
currentDetail.requestFormId || '-'
}}</el-descriptions-item>
<el-descriptions
title="基本信息"
:column="2"
>
<el-descriptions-item label="患者姓名">
{{
currentDetail.patientName || '-'
}}
</el-descriptions-item>
<el-descriptions-item label="申请单名称">
{{
currentDetail.name || '-'
}}
</el-descriptions-item>
<el-descriptions-item label="申请单状态">
{{
parseStatus(currentDetail.status)
}}
</el-descriptions-item>
<el-descriptions-item label="创建时间">
{{
currentDetail.createTime || '-'
}}
</el-descriptions-item>
<el-descriptions-item label="申请单号">
{{
currentDetail.prescriptionNo || '-'
}}
</el-descriptions-item>
<el-descriptions-item label="申请者">
{{
currentDetail.requesterId_dictText || '-'
}}
</el-descriptions-item>
<el-descriptions-item label="就诊ID">
{{
currentDetail.encounterId || '-'
}}
</el-descriptions-item>
<el-descriptions-item label="申请单ID">
{{
currentDetail.requestFormId || '-'
}}
</el-descriptions-item>
</el-descriptions>
</div>
<div v-if="descJsonData && hasMatchedFields" class="applicationShow-container-content">
<el-descriptions title="申请单描述" :column="2">
<template v-for="(value, key) in descJsonData" :key="key">
<el-descriptions-item v-if="isFieldMatched(key)" :label="getFieldLabel(key)">
<div
v-if="descJsonData && hasMatchedFields"
class="applicationShow-container-content"
>
<el-descriptions
title="申请单描述"
:column="2"
>
<template
v-for="(value, key) in descJsonData"
:key="key"
>
<el-descriptions-item
v-if="isFieldMatched(key)"
:label="getFieldLabel(key)"
>
{{ transformField(key, value) || '-' }}
</el-descriptions-item>
</template>
@@ -191,17 +346,44 @@
v-if="currentDetail.requestFormDetailList && currentDetail.requestFormDetailList.length"
class="applicationShow-container-table"
>
<el-table :data="currentDetail.requestFormDetailList" border>
<el-table-column type="index" label="序号" width="60" align="center" />
<el-table-column prop="adviceName" label="医嘱名称" />
<el-table-column prop="quantity" label="数量" width="80" align="center" />
<el-table-column prop="unitCode_dictText" label="单位" width="100" />
<el-table-column prop="totalPrice" label="总价" width="100" align="right" />
<el-table
:data="currentDetail.requestFormDetailList"
border
>
<el-table-column
type="index"
label="序号"
width="60"
align="center"
/>
<el-table-column
prop="adviceName"
label="医嘱名称"
/>
<el-table-column
prop="quantity"
label="数量"
width="80"
align="center"
/>
<el-table-column
prop="unitCode_dictText"
label="单位"
width="100"
/>
<el-table-column
prop="totalPrice"
label="总价"
width="100"
align="right"
/>
</el-table>
</div>
</div>
<template #footer>
<el-button @click="detailDialogVisible = false">关闭</el-button>
<el-button @click="detailDialogVisible = false">
关闭
</el-button>
</template>
</el-dialog>
@@ -223,8 +405,15 @@
@submit-ok="handleEditSuccess"
/>
<template #footer>
<el-button @click="editDialogVisible = false">取消</el-button>
<el-button type="primary" @click="handleEditSubmit">确认</el-button>
<el-button @click="editDialogVisible = false">
取消
</el-button>
<el-button
type="primary"
@click="handleEditSubmit"
>
确认
</el-button>
</template>
</el-dialog>
@@ -237,25 +426,59 @@
top="5vh"
:close-on-click-modal="false"
>
<div v-loading="reportLoading" class="report-viewer">
<div
v-loading="reportLoading"
class="report-viewer"
>
<!-- 报告基本信息 -->
<div v-if="reportData" class="report-viewer-container">
<el-descriptions title="报告信息" :column="2" border size="small">
<el-descriptions-item label="患者姓名">{{ reportData.patientName || reportRow?.patientName || '-' }}</el-descriptions-item>
<el-descriptions-item label="申请单号">{{ reportData.prescriptionNo || reportRow?.prescriptionNo || '-' }}</el-descriptions-item>
<el-descriptions-item label="申请单名称">{{ reportData.name || reportRow?.name || '-' }}</el-descriptions-item>
<el-descriptions-item label="报告时间">{{ reportData.reportTime || '-' }}</el-descriptions-item>
<el-descriptions-item label="诊断意见" :span="2">{{ reportData.diagnosis || reportData.conclusion || '-' }}</el-descriptions-item>
<div
v-if="reportData"
class="report-viewer-container"
>
<el-descriptions
title="报告信息"
:column="2"
border
size="small"
>
<el-descriptions-item label="患者姓名">
{{ reportData.patientName || reportRow?.patientName || '-' }}
</el-descriptions-item>
<el-descriptions-item label="申请单号">
{{ reportData.prescriptionNo || reportRow?.prescriptionNo || '-' }}
</el-descriptions-item>
<el-descriptions-item label="申请单名称">
{{ reportData.name || reportRow?.name || '-' }}
</el-descriptions-item>
<el-descriptions-item label="报告时间">
{{ reportData.reportTime || '-' }}
</el-descriptions-item>
<el-descriptions-item
label="诊断意见"
:span="2"
>
{{ reportData.diagnosis || reportData.conclusion || '-' }}
</el-descriptions-item>
</el-descriptions>
<!-- 报告详细内容 -->
<div v-if="reportData.content" class="report-content-section">
<div class="section-title">报告内容</div>
<div class="report-content-text">{{ reportData.content }}</div>
<div
v-if="reportData.content"
class="report-content-section"
>
<div class="section-title">
报告内容
</div>
<div class="report-content-text">
{{ reportData.content }}
</div>
</div>
<!-- 影像预览 - PACS链接 -->
<div v-if="reportData.imageUrl || reportData.pacsUrl" class="report-image-section">
<div
v-if="reportData.imageUrl || reportData.pacsUrl"
class="report-image-section"
>
<div class="section-title">
影像预览
<el-button
@@ -276,18 +499,32 @@
class="report-iframe"
frameborder="0"
/>
<el-empty v-else-if="!reportData.imageUrl && reportData.pacsUrl" description="点击上方按钮打开PACS影像" :image-size="60" />
<el-empty
v-else-if="!reportData.imageUrl && reportData.pacsUrl"
description="点击上方按钮打开PACS影像"
:image-size="60"
/>
</div>
<!-- 完全无数据时的提示 -->
<el-empty v-if="!reportData.content && !reportData.imageUrl && !reportData.pacsUrl" description="暂无详细报告数据" :image-size="60" />
<el-empty
v-if="!reportData.content && !reportData.imageUrl && !reportData.pacsUrl"
description="暂无详细报告数据"
:image-size="60"
/>
</div>
<!-- 未获取到报告 -->
<el-empty v-else description="暂未生成报告" :image-size="80" />
<el-empty
v-else
description="暂未生成报告"
:image-size="80"
/>
</div>
<template #footer>
<el-button @click="reportDialogVisible = false">关闭</el-button>
<el-button @click="reportDialogVisible = false">
关闭
</el-button>
</template>
</el-dialog>
</div>

View File

@@ -4,10 +4,16 @@
<h3>护理状态</h3>
</div>
<div v-if="loading" class="loading-container">
<div
v-if="loading"
class="loading-container"
>
<el-row justify="center">
<el-col :span="6">
<el-empty description="正在加载数据..." image-size="100" />
<el-empty
description="正在加载数据..."
image-size="100"
/>
</el-col>
</el-row>
</div>
@@ -21,8 +27,18 @@
class="nursing-table"
:header-cell-style="{ backgroundColor: '#f5f7fa' }"
>
<el-table-column prop="item" label="项目" width="180" align="center" />
<el-table-column prop="currentStatus" label="当前状态" width="260" align="center">
<el-table-column
prop="item"
label="项目"
width="180"
align="center"
/>
<el-table-column
prop="currentStatus"
label="当前状态"
width="260"
align="center"
>
<template #default="scope">
<el-tag
v-if="scope.row.currentStatus"
@@ -34,11 +50,18 @@
</el-tag>
</template>
</el-table-column>
<el-table-column prop="operation" label="操作" align="center">
<el-table-column
prop="operation"
label="操作"
align="center"
>
<template #default="scope">
<div class="operation-content">
<!-- 护理级别选项 - 水平排列 -->
<div v-if="scope.row.item === '护理级别'" class="options-horizontal">
<div
v-if="scope.row.item === '护理级别'"
class="options-horizontal"
>
<div
v-for="option in nursingLevelList"
:key="option.definitionId"
@@ -53,7 +76,10 @@
</div>
<!-- 病情选项 - 水平排列 -->
<div v-else-if="scope.row.item === '病情'" class="options-horizontal">
<div
v-else-if="scope.row.item === '病情'"
class="options-horizontal"
>
<div
v-for="option in conditionList"
:key="option.definitionId"
@@ -68,7 +94,10 @@
</div>
<!-- 护理常规选项 - 水平排列 -->
<div v-else-if="scope.row.item === '护理常规'" class="options-horizontal">
<div
v-else-if="scope.row.item === '护理常规'"
class="options-horizontal"
>
<div
v-for="option in nursingRoutineList"
:key="option.definitionId"
@@ -83,7 +112,10 @@
</div>
<!-- 饮食选项 - 水平排列 -->
<div v-else-if="scope.row.item === '饮食'" class="options-horizontal">
<div
v-else-if="scope.row.item === '饮食'"
class="options-horizontal"
>
<div
v-for="option in dietList"
:key="option.definitionId"
@@ -95,7 +127,10 @@
</div>
<!-- 体位选项 - 水平排列 -->
<div v-else-if="scope.row.item === '体位'" class="options-horizontal">
<div
v-else-if="scope.row.item === '体位'"
class="options-horizontal"
>
<div
v-for="option in positionList"
:key="option.definitionId"
@@ -110,7 +145,10 @@
</div>
<!-- 陪护选项 - 水平排列 -->
<div v-else-if="scope.row.item === '陪护'" class="options-horizontal">
<div
v-else-if="scope.row.item === '陪护'"
class="options-horizontal"
>
<div
v-for="option in companionCareList"
:key="option.definitionId"
@@ -125,7 +163,10 @@
</div>
<!-- 隔离等级选项 - 水平排列 -->
<div v-else-if="scope.row.item === '隔离等级'" class="options-horizontal">
<div
v-else-if="scope.row.item === '隔离等级'"
class="options-horizontal"
>
<div
v-for="option in isolationLevelList"
:key="option.definitionId"
@@ -144,8 +185,19 @@
</el-table>
<!-- 操作按钮区域 -->
<div class="nursing-status-actions">
<el-button @click="handleCancel" size="medium">取消</el-button>
<el-button type="primary" @click="handleConfirm" size="medium">确定</el-button>
<el-button
size="medium"
@click="handleCancel"
>
取消
</el-button>
<el-button
type="primary"
size="medium"
@click="handleConfirm"
>
确定
</el-button>
</div>
</template>
</div>

View File

@@ -20,10 +20,26 @@
height="100%"
style="width: 100%"
>
<el-table-column type="index" label="序号" width="60" align="center" />
<el-table-column prop="adviceName" label="报告名称" width="140" />
<el-table-column prop="reportNo" label="报告号" width="140" />
<el-table-column label="链接" min-width="140">
<el-table-column
type="index"
label="号"
width="60"
align="center"
/>
<el-table-column
prop="adviceName"
label="报告名称"
width="140"
/>
<el-table-column
prop="reportNo"
label="报告号"
width="140"
/>
<el-table-column
label="链接"
min-width="140"
>
<template #default="scope">
<a
v-if="scope.row.requestUrl"
@@ -34,7 +50,10 @@
>
查看报告
</a>
<span v-else class="report-link-disabled">暂无链接</span>
<span
v-else
class="report-link-disabled"
>暂无链接</span>
</template>
</el-table-column>
</el-table>
@@ -60,10 +79,26 @@
height="100%"
style="width: 100%"
>
<el-table-column type="index" label="序号" width="60" align="center" />
<el-table-column prop="adviceName" label="报告名称" width="140" />
<el-table-column prop="reportNo" label="报告号" width="140" />
<el-table-column label="链接" min-width="140">
<el-table-column
type="index"
label="号"
width="60"
align="center"
/>
<el-table-column
prop="adviceName"
label="报告名称"
width="140"
/>
<el-table-column
prop="reportNo"
label="报告号"
width="140"
/>
<el-table-column
label="链接"
min-width="140"
>
<template #default="scope">
<a
v-if="scope.row.requestUrl"
@@ -74,7 +109,10 @@
>
查看报告
</a>
<span v-else class="report-link-disabled">暂无链接</span>
<span
v-else
class="report-link-disabled"
>暂无链接</span>
</template>
</el-table-column>
</el-table>

View File

@@ -18,7 +18,11 @@
</div>
<!-- 筛选表单 -->
<div class="filter-form">
<el-form :inline="true" :model="filterForm" class="filter-form-content">
<el-form
:inline="true"
:model="filterForm"
class="filter-form-content"
>
<el-form-item label="创建时间">
<el-date-picker
v-model="filterForm.dateRange"
@@ -38,14 +42,38 @@
clearable
style="width: 150px"
>
<el-option label="全部" value="" />
<el-option label="待签发" value="0" />
<el-option label="已签发" value="1" />
<el-option label="已校对" value="2" />
<el-option label="已执行" value="3" />
<el-option label="已安排" value="4" />
<el-option label="已完成" value="5" />
<el-option label="已作废" value="7" />
<el-option
label="全部"
value=""
/>
<el-option
label="待签发"
value="0"
/>
<el-option
label="已签发"
value="1"
/>
<el-option
label="已校对"
value="2"
/>
<el-option
label="已执行"
value="3"
/>
<el-option
label="已安排"
value="4"
/>
<el-option
label="已完成"
value="5"
/>
<el-option
label="已作废"
value="7"
/>
</el-select>
</el-form-item>
<el-form-item label="关键字">
@@ -58,7 +86,11 @@
/>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="handleSearch" :loading="loading">
<el-button
type="primary"
:loading="loading"
@click="handleSearch"
>
<el-icon><Search /></el-icon>
查询
</el-button>
@@ -78,21 +110,60 @@
height="100%"
style="width: 100%"
>
<el-table-column type="index" label="序号" width="60" align="center" />
<el-table-column label="手术单号" width="160" align="center">
<el-table-column
type="index"
label="序号"
width="60"
align="center"
/>
<el-table-column
label="手术单号"
width="160"
align="center"
>
<template #default="scope">
<el-link type="primary" @click="handleViewDetail(scope.row)">
<el-link
type="primary"
@click="handleViewDetail(scope.row)"
>
{{ scope.row.prescriptionNo || '-' }}
</el-link>
</template>
</el-table-column>
<el-table-column prop="patientName" label="患者姓名" width="120" />
<el-table-column prop="name" label="申请单名称" width="140" />
<el-table-column prop="createTime" label="创建时间" width="160" />
<el-table-column prop="requesterId_dictText" label="申请者" width="120" />
<el-table-column label="操作" align="center" fixed="right">
<el-table-column
prop="patientName"
label="患者姓名"
width="120"
/>
<el-table-column
prop="name"
label="申请单名称"
width="140"
/>
<el-table-column
prop="createTime"
label="创建时间"
width="160"
/>
<el-table-column
prop="requesterId_dictText"
label="申请者"
width="120"
/>
<el-table-column
label="操作"
align="center"
fixed="right"
>
<template #default="scope">
<el-button link type="primary" icon="View" @click="handleViewDetail(scope.row)">详情</el-button>
<el-button
link
type="primary"
icon="View"
@click="handleViewDetail(scope.row)"
>
详情
</el-button>
</template>
</el-table-column>
</el-table>
@@ -107,37 +178,69 @@
top="5vh"
:close-on-click-modal="false"
>
<div v-if="currentDetail" class="applicationShow-container">
<div
v-if="currentDetail"
class="applicationShow-container"
>
<div class="applicationShow-container-content">
<el-descriptions title="基本信息" :column="2">
<el-descriptions-item label="患者姓名">{{
currentDetail.patientName || '-'
}}</el-descriptions-item>
<el-descriptions-item label="申请单名称">{{
currentDetail.name || '-'
}}</el-descriptions-item>
<el-descriptions-item label="创建时间">{{
currentDetail.createTime || '-'
}}</el-descriptions-item>
<el-descriptions-item label="处方号">{{
currentDetail.prescriptionNo || '-'
}}</el-descriptions-item>
<el-descriptions-item label="申请者">{{
currentDetail.requesterId_dictText || '-'
}}</el-descriptions-item>
<el-descriptions-item label="就诊ID">{{
currentDetail.encounterId || '-'
}}</el-descriptions-item>
<el-descriptions-item label="申请单ID">{{
currentDetail.requestFormId || '-'
}}</el-descriptions-item>
<el-descriptions
title="基本信息"
:column="2"
>
<el-descriptions-item label="患者姓名">
{{
currentDetail.patientName || '-'
}}
</el-descriptions-item>
<el-descriptions-item label="申请单名称">
{{
currentDetail.name || '-'
}}
</el-descriptions-item>
<el-descriptions-item label="创建时间">
{{
currentDetail.createTime || '-'
}}
</el-descriptions-item>
<el-descriptions-item label="处方号">
{{
currentDetail.prescriptionNo || '-'
}}
</el-descriptions-item>
<el-descriptions-item label="申请者">
{{
currentDetail.requesterId_dictText || '-'
}}
</el-descriptions-item>
<el-descriptions-item label="就诊ID">
{{
currentDetail.encounterId || '-'
}}
</el-descriptions-item>
<el-descriptions-item label="申请单ID">
{{
currentDetail.requestFormId || '-'
}}
</el-descriptions-item>
</el-descriptions>
</div>
<div v-if="descJsonData && hasMatchedFields" class="applicationShow-container-content">
<el-descriptions title="申请单描述" :column="2">
<template v-for="(value, key) in descJsonData" :key="key">
<el-descriptions-item v-if="isFieldMatched(key)" :label="getFieldLabel(key)">
<div
v-if="descJsonData && hasMatchedFields"
class="applicationShow-container-content"
>
<el-descriptions
title="申请单描述"
:column="2"
>
<template
v-for="(value, key) in descJsonData"
:key="key"
>
<el-descriptions-item
v-if="isFieldMatched(key)"
:label="getFieldLabel(key)"
>
{{ value || '-' }}
</el-descriptions-item>
</template>
@@ -148,17 +251,47 @@
v-if="currentDetail.requestFormDetailList && currentDetail.requestFormDetailList.length"
class="applicationShow-container-table"
>
<el-table :data="currentDetail.requestFormDetailList" border>
<el-table-column type="index" label="序号" width="60" align="center" />
<el-table-column prop="adviceName" label="医嘱名称" />
<el-table-column prop="quantity" label="数量" width="80" align="center" />
<el-table-column prop="unitCode_dictText" label="单位" width="100" />
<el-table-column prop="totalPrice" label="总价" width="100" align="right" />
<el-table
:data="currentDetail.requestFormDetailList"
border
>
<el-table-column
type="index"
label="序号"
width="60"
align="center"
/>
<el-table-column
prop="adviceName"
label="医嘱名称"
/>
<el-table-column
prop="quantity"
label="数量"
width="80"
align="center"
/>
<el-table-column
prop="unitCode_dictText"
label="单位"
width="100"
/>
<el-table-column
prop="totalPrice"
label="总价"
width="100"
align="right"
/>
</el-table>
</div>
</div>
<template #footer>
<el-button icon="Close" @click="detailDialogVisible = false">关闭</el-button>
<el-button
icon="Close"
@click="detailDialogVisible = false"
>
关闭
</el-button>
</template>
</el-dialog>
</div>

View File

@@ -18,7 +18,11 @@
</div>
<!-- 筛选表单 -->
<div class="filter-form">
<el-form :inline="true" :model="filterForm" class="filter-form-content">
<el-form
:inline="true"
:model="filterForm"
class="filter-form-content"
>
<el-form-item label="申请日期">
<el-date-picker
v-model="filterForm.dateRange"
@@ -38,13 +42,34 @@
clearable
style="width: 150px"
>
<el-option label="全部" value="" />
<el-option label="待签发" value="0" />
<el-option label="已签发" value="1" />
<el-option label="已采证" value="4" />
<el-option label="已送检" value="5" />
<el-option label="报告已出" value="6" />
<el-option label="已作废" value="7" />
<el-option
label="全部"
value=""
/>
<el-option
label="待签发"
value="0"
/>
<el-option
label="已签发"
value="1"
/>
<el-option
label="已采证"
value="4"
/>
<el-option
label="已送检"
value="5"
/>
<el-option
label="报告已出"
value="6"
/>
<el-option
label="已作废"
value="7"
/>
</el-select>
</el-form-item>
<el-form-item label="关键字">
@@ -57,7 +82,11 @@
/>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="handleSearch" :loading="loading">
<el-button
type="primary"
:loading="loading"
@click="handleSearch"
>
<el-icon><Search /></el-icon>
查询
</el-button>
@@ -79,19 +108,46 @@
>
<template #empty>
<div class="empty-data">
<el-empty description="暂无匹配记录" :image-size="80" />
<el-empty
description="暂无匹配记录"
:image-size="80"
/>
</div>
</template>
<el-table-column type="index" label="序号" width="60" align="center" />
<el-table-column prop="patientName" label="患者姓名" width="120" />
<el-table-column label="申请单名称" width="140">
<el-table-column
type="index"
label="序号"
width="60"
align="center"
/>
<el-table-column
prop="patientName"
label="患者姓名"
width="120"
/>
<el-table-column
label="申请单名称"
width="140"
>
<template #default="scope">
<span>{{ buildApplicationName(scope.row) }}</span>
</template>
</el-table-column>
<el-table-column prop="createTime" label="创建时间" width="160" />
<el-table-column prop="prescriptionNo" label="申请单号" width="140" />
<el-table-column label="单据状态" width="100" align="center">
<el-table-column
prop="createTime"
label="创建时间"
width="160"
/>
<el-table-column
prop="prescriptionNo"
label="申请单号"
width="140"
/>
<el-table-column
label="单据状态"
width="100"
align="center"
>
<template #default="scope">
<el-tag
:type="getBillStatusTagType(scope.row)"
@@ -104,29 +160,76 @@
</el-tag>
</template>
</el-table-column>
<el-table-column label="申请类型" width="100" align="center">
<el-table-column
label="申请类型"
width="100"
align="center"
>
<template #default="scope">
<span>{{ parsePriorityCode(scope.row.descJson) }}</span>
</template>
</el-table-column>
<el-table-column label="标本类型" width="120" align="center">
<el-table-column
label="标本类型"
width="120"
align="center"
>
<template #default="scope">
<span>{{ parseSpecimenType(scope.row.descJson) }}</span>
</template>
</el-table-column>
<el-table-column prop="requesterId_dictText" label="申请者" width="120" />
<el-table-column label="操作" align="center" fixed="right" width="280">
<el-table-column
prop="requesterId_dictText"
label="申请者"
width="120"
/>
<el-table-column
label="操作"
align="center"
fixed="right"
width="280"
>
<template #default="scope">
<el-button link type="primary" @click="handleViewDetail(scope.row)">详情</el-button>
<el-button
link
type="primary"
@click="handleViewDetail(scope.row)"
>
详情
</el-button>
<template v-if="canManageRow(scope.row) && isPendingStatus(scope.row)">
<el-button link type="primary" @click="handleEdit(scope.row)">修改</el-button>
<el-button link type="danger" @click="handleDelete(scope.row)">删除</el-button>
<el-button
link
type="primary"
@click="handleEdit(scope.row)"
>
修改
</el-button>
<el-button
link
type="danger"
@click="handleDelete(scope.row)"
>
删除
</el-button>
</template>
<template v-if="canManageRow(scope.row) && isWithdrawableStatus(scope.row)">
<el-button link type="warning" @click="handleWithdraw(scope.row)">撤回</el-button>
<el-button
link
type="warning"
@click="handleWithdraw(scope.row)"
>
撤回
</el-button>
</template>
<template v-if="isReportStatus(scope.row)">
<el-button link type="success" @click="handleViewReport(scope.row)">查看报告</el-button>
<el-button
link
type="success"
@click="handleViewReport(scope.row)"
>
查看报告
</el-button>
</template>
</template>
</el-table-column>
@@ -142,37 +245,69 @@
top="5vh"
:close-on-click-modal="false"
>
<div v-if="currentDetail" class="applicationShow-container">
<div
v-if="currentDetail"
class="applicationShow-container"
>
<div class="applicationShow-container-content">
<el-descriptions title="基本信息" :column="2">
<el-descriptions-item label="患者姓名">{{
currentDetail.patientName || '-'
}}</el-descriptions-item>
<el-descriptions-item label="申请单名称">{{
currentDetail.name || '-'
}}</el-descriptions-item>
<el-descriptions-item label="创建时间">{{
currentDetail.createTime || '-'
}}</el-descriptions-item>
<el-descriptions-item label="申请单号">{{
currentDetail.prescriptionNo || '-'
}}</el-descriptions-item>
<el-descriptions-item label="申请者">{{
currentDetail.requesterId_dictText || '-'
}}</el-descriptions-item>
<el-descriptions-item label="就诊ID">{{
currentDetail.encounterId || '-'
}}</el-descriptions-item>
<el-descriptions-item label="申请单ID">{{
currentDetail.requestFormId || '-'
}}</el-descriptions-item>
<el-descriptions
title="基本信息"
:column="2"
>
<el-descriptions-item label="患者姓名">
{{
currentDetail.patientName || '-'
}}
</el-descriptions-item>
<el-descriptions-item label="申请单名称">
{{
currentDetail.name || '-'
}}
</el-descriptions-item>
<el-descriptions-item label="创建时间">
{{
currentDetail.createTime || '-'
}}
</el-descriptions-item>
<el-descriptions-item label="申请单">
{{
currentDetail.prescriptionNo || '-'
}}
</el-descriptions-item>
<el-descriptions-item label="申请者">
{{
currentDetail.requesterId_dictText || '-'
}}
</el-descriptions-item>
<el-descriptions-item label="就诊ID">
{{
currentDetail.encounterId || '-'
}}
</el-descriptions-item>
<el-descriptions-item label="申请单ID">
{{
currentDetail.requestFormId || '-'
}}
</el-descriptions-item>
</el-descriptions>
</div>
<div v-if="descJsonData && hasMatchedFields" class="applicationShow-container-content">
<el-descriptions title="申请单描述" :column="2">
<template v-for="(value, key) in descJsonData" :key="key">
<el-descriptions-item v-if="isFieldMatched(key)" :label="getFieldLabel(key)">
<div
v-if="descJsonData && hasMatchedFields"
class="applicationShow-container-content"
>
<el-descriptions
title="申请单描述"
:column="2"
>
<template
v-for="(value, key) in descJsonData"
:key="key"
>
<el-descriptions-item
v-if="isFieldMatched(key)"
:label="getFieldLabel(key)"
>
{{ value || '-' }}
</el-descriptions-item>
</template>
@@ -183,17 +318,44 @@
v-if="currentDetail.requestFormDetailList && currentDetail.requestFormDetailList.length"
class="applicationShow-container-table"
>
<el-table :data="currentDetail.requestFormDetailList" border>
<el-table-column type="index" label="序号" width="60" align="center" />
<el-table-column prop="adviceName" label="医嘱名称" />
<el-table-column prop="quantity" label="数量" width="80" align="center" />
<el-table-column prop="unitCode_dictText" label="单位" width="100" />
<el-table-column prop="totalPrice" label="总价" width="100" align="right" />
<el-table
:data="currentDetail.requestFormDetailList"
border
>
<el-table-column
type="index"
label="序号"
width="60"
align="center"
/>
<el-table-column
prop="adviceName"
label="医嘱名称"
/>
<el-table-column
prop="quantity"
label="数量"
width="80"
align="center"
/>
<el-table-column
prop="unitCode_dictText"
label="单位"
width="100"
/>
<el-table-column
prop="totalPrice"
label="总价"
width="100"
align="right"
/>
</el-table>
</div>
</div>
<template #footer>
<el-button @click="detailDialogVisible = false">关闭</el-button>
<el-button @click="detailDialogVisible = false">
关闭
</el-button>
</template>
</el-dialog>
@@ -208,12 +370,19 @@
>
<LaboratoryTests
ref="editFormRef"
@submitOk="handleEditSubmitOk"
:editData="editRowData"
:edit-data="editRowData"
@submit-ok="handleEditSubmitOk"
/>
<template #footer>
<el-button @click="editDialogVisible = false">取消</el-button>
<el-button type="primary" @click="submitEditForm">确认</el-button>
<el-button @click="editDialogVisible = false">
取消
</el-button>
<el-button
type="primary"
@click="submitEditForm"
>
确认
</el-button>
</template>
</el-dialog>
</div>