fix(common): 修复公共服务返回空值问题并优化查询条件

- 修复 CommonServiceImpl 中返回空集合而非 null 的问题
- 添加新的国际化错误消息用于目录不存在的情况
- 重构门诊挂号查询的时间和状态过滤条件为动态SQL
- 更新支付对账分组字段以包含合同编号
- 调整会诊相关API端点路径和请求方法
- 优化技术工作站退费审批接口路径和参数传递方式
- 重构待处理EMR页面跳转逻辑,移除确认对话框直接跳转住院医生工作站
This commit is contained in:
2026-06-11 10:51:34 +08:00
parent 5ebe6c6333
commit 8b47a8ab55
8 changed files with 59 additions and 63 deletions

View File

@@ -666,7 +666,7 @@ public class CommonServiceImpl implements ICommonService {
.eq(DocInventoryItemStatic::getDeleteFlag, DelFlag.NO.getCode())
.eq(DocInventoryItemStatic::getTenantId, SecurityUtils.getLoginUser().getTenantId()));
if (docInventoryItemStaticList.isEmpty()) {
return null;
return R.ok(Collections.emptyList());
}
// 直接去重并按BusNo倒序排序
List<String> busNoList = docInventoryItemStaticList.stream().map(DocInventoryItemStatic::getBusNo).distinct() // 去重

View File

@@ -52,4 +52,5 @@ apl.payment.M00007=\u672A\u67E5\u8BE2\u5230\u6536\u8D39\u9879\u76EE
apl.payment.M00008=\u672A\u67E5\u8BE2\u5230{0}\u8D26\u6237\u4FE1\u606F
apl.payment.M00009=\u672A\u67E5\u8BE2\u5230\u6536\u8D39\u9879\u76EE\uFF0C\u4E0D\u9700\u8981\u8F6C\u6362\u8D26\u6237
apl.adjustPrice.M00001=\u6267\u884C\u5931\u8D25\uFF0C\u672A\u52A0\u8F7D\u5230\u4EFB\u4F55\u6570\u636E\uFF01
apl.adjustPrice.M00002=\u6267\u884C\u5931\u8D25\uFF0C\u6539\u4EF7\u5355\u4E2D\u6709\u6B63\u5728\u5BA1\u6838\u4E2D\u7684\u8D27\u54C1\uFF0C\u8BF7\u68C0\u67E5\u540E\u91CD\u65B0\u63D0\u4EA4\uFF01
apl.adjustPrice.M00002=\u6267\u884C\u5931\u8D25\uFF0C\u6539\u4EF7\u5355\u4E2D\u6709\u6B63\u5728\u5BA1\u6838\u4E2D\u7684\u8D27\u54C1\uFF0C\u8BF7\u68C0\u67E5\u540E\u91CD\u65B0\u63D0\u4EA4\uFF01
apl.yb.M00001={0} catalog does not exist, please contact administrator

View File

@@ -52,4 +52,5 @@ apl.payment.M00007=\u672A\u67E5\u8BE2\u5230\u6536\u8D39\u9879\u76EE
apl.payment.M00008=\u672A\u67E5\u8BE2\u5230{0}\u8D26\u6237\u4FE1\u606F
apl.payment.M00009=\u672A\u67E5\u8BE2\u5230\u6536\u8D39\u9879\u76EE\uFF0C\u4E0D\u9700\u8981\u8F6C\u6362\u8D26\u6237
apl.adjustPrice.M00001=\u6267\u884C\u5931\u8D25\uFF0C\u672A\u52A0\u8F7D\u5230\u4EFB\u4F55\u6570\u636E\uFF01
apl.adjustPrice.M00002=\u6267\u884C\u5931\u8D25\uFF0C\u6539\u4EF7\u5355\u4E2D\u6709\u6B63\u5728\u5BA1\u6838\u4E2D\u7684\u8D27\u54C1\uFF0C\u8BF7\u68C0\u67E5\u540E\u91CD\u65B0\u63D0\u4EA4\uFF01
apl.adjustPrice.M00002=\u6267\u884C\u5931\u8D25\uFF0C\u6539\u4EF7\u5355\u4E2D\u6709\u6B63\u5728\u5BA1\u6838\u4E2D\u7684\u8D27\u54C1\uFF0C\u8BF7\u68C0\u67E5\u540E\u91CD\u65B0\u63D0\u4EA4\uFF01
apl.yb.M00001={0}\u76EE\u5F55\u4E0D\u5B58\u5728\uFF0C\u8BF7\u8054\u7CFB\u7BA1\u7406\u5458

View File

@@ -217,11 +217,20 @@
WHERE T1.delete_flag = '0'
AND T1.class_enum = #{classEnum}
AND T10.context_enum = #{register}
AND (#{registerTimeSTime} IS NULL OR T1.create_time &gt;= CAST(#{registerTimeSTime} AS TIMESTAMP))
AND (#{registerTimeETime} IS NULL OR T1.create_time &lt;= CAST(#{registerTimeETime} AS TIMESTAMP))
AND (#{statusFilter} IS NULL
OR (#{statusFilter} &gt;= 0 AND T1.status_enum = #{statusFilter})
OR (#{statusFilter} = -1 AND T1.status_enum != 6))
<if test='registerTimeSTime != null'>
AND T1.create_time &gt;= CAST(#{registerTimeSTime} AS TIMESTAMP)
</if>
<if test='registerTimeETime != null'>
AND T1.create_time &lt;= CAST(#{registerTimeETime} AS TIMESTAMP)
</if>
<if test='statusFilter != null'>
<if test='statusFilter &gt;= 0'>
AND T1.status_enum = #{statusFilter}
</if>
<if test='statusFilter == -1'>
AND T1.status_enum != 6
</if>
</if>
) AS T9
${ew.customSqlSegment}
ORDER BY T9.register_time DESC

View File

@@ -24,6 +24,7 @@
AND account.contract_no = #{contractNo}
</if>
GROUP BY payment.ID,
account.ID
account.ID,
account.contract_no
</select>
</mapper>

View File

@@ -3,7 +3,7 @@ import request from '@/utils/request'
// 查询会诊申请列表
export function listRequest(query) {
return request({
url: '/consultation/request/list',
url: '/consultation/list',
method: 'get',
params: query
})
@@ -12,7 +12,7 @@ export function listRequest(query) {
// 查询会诊申请详细
export function getRequest(id) {
return request({
url: '/consultation/request/' + id,
url: '/consultation/detail/' + id,
method: 'get'
})
}
@@ -20,7 +20,7 @@ export function getRequest(id) {
// 新增会诊申请
export function addRequest(data) {
return request({
url: '/consultation/request',
url: '/consultation/save',
method: 'post',
data: data
})
@@ -29,8 +29,8 @@ export function addRequest(data) {
// 修改会诊申请
export function updateRequest(data) {
return request({
url: '/consultation/request',
method: 'put',
url: '/consultation/save',
method: 'post',
data: data
})
}
@@ -38,48 +38,48 @@ export function updateRequest(data) {
// 删除会诊申请
export function delRequest(id) {
return request({
url: '/consultation/request/' + id,
method: 'delete'
url: '/consultation/cancel/' + id,
method: 'post'
})
}
// 提交会诊申请
export function submitRequest(id) {
return request({
url: '/consultation/request/submit/' + id,
method: 'put'
url: '/consultation/submit/' + id,
method: 'post'
})
}
// 取消提交会诊申请
export function cancelSubmitRequest(id) {
return request({
url: '/consultation/request/cancelSubmit/' + id,
method: 'put'
url: '/consultation/cancel/' + id,
method: 'post'
})
}
// 结束会诊申请
export function endRequest(id) {
return request({
url: '/consultation/request/end/' + id,
method: 'put'
url: '/consultation/complete/' + id,
method: 'post'
})
}
// 作废会诊申请
export function cancelRequest(id) {
return request({
url: '/consultation/request/cancel/' + id,
method: 'put'
url: '/consultation/cancel/' + id,
method: 'post'
})
}
// 确认会诊
export function confirmRequest(data) {
return request({
url: '/consultation/request/confirm',
method: 'put',
url: '/consultation/confirmation/confirm',
method: 'post',
data: data
})
}
@@ -87,8 +87,8 @@ export function confirmRequest(data) {
// 签名会诊
export function signRequest(data) {
return request({
url: '/consultation/request/sign',
method: 'put',
data: data
url: '/consultation/confirmation/sign',
method: 'post',
params: { consultationId: data.consultationId }
})
}

View File

@@ -10,16 +10,16 @@ export function executeExamOrder(data) { return request({ url: "/tech-station/ex
export function executeLabOrder(data) { return request({ url: "/tech-station/execute/lab", method: "post", data }) }
// 查询退费审批列表
export function listRefundApproveOrders(params) { return request({ url: "/tech-station/refund/approve/list", method: "get", params }) }
export function listRefundApproveOrders(params) { return request({ url: "/tech-station/refund-approve/list", method: "get", params }) }
// 审批通过检查退费
export function approveExamRefund(data) { return request({ url: "/tech-station/refund/approve/exam", method: "post", data }) }
export function approveExamRefund(data) { return request({ url: "/tech-station/refund-approve/approve/exam/" + data.applyNo, method: "put", data }) }
// 审批驳回检查退费
export function rejectExamRefund(data) { return request({ url: "/tech-station/refund/reject/exam", method: "post", data }) }
export function rejectExamRefund(data) { return request({ url: "/tech-station/refund-approve/reject/exam/" + data.applyNo, method: "put", data }) }
// 审批通过检验退费
export function approveLabRefund(data) { return request({ url: "/tech-station/refund/approve/lab", method: "post", data }) }
export function approveLabRefund(data) { return request({ url: "/tech-station/refund-approve/approve/lab/" + data.applyNo, method: "put", data }) }
// 审批驳回检验退费
export function rejectLabRefund(data) { return request({ url: "/tech-station/refund/reject/lab", method: "post", data }) }
export function rejectLabRefund(data) { return request({ url: "/tech-station/refund-approve/reject/lab/" + data.applyNo, method: "put", data }) }

View File

@@ -1,4 +1,4 @@
<template>
<template>
<div class="pending-emr-page">
<!-- 页面头部 -->
<div class="page-header">
@@ -139,8 +139,12 @@ import { parseTime } from '@/utils/index.js'
import Pagination from '@/components/Pagination'
import { Document, Refresh, Search, Delete } from '@element-plus/icons-vue'
import { ElDivider } from 'element-plus'
import { useRouter } from 'vue-router'
import { updatePatientInfo } from '@/views/inpatientDoctor/home/store/patient'
import { updateLocalPatientInfo } from '@/views/inpatientDoctor/home/store/localPatient'
// 响应式数据
const router = useRouter()
const loading = ref(true)
const total = ref(0)
const emrList = ref([])
@@ -209,38 +213,18 @@ const handleRowClick = (row) => {
// 写病历
const handleWriteEmr = (row) => {
console.log('写病历:', row)
// 弹出写病历弹窗
ElMessageBox.confirm('确定要为患者 ' + row.patientName + ' 写病历吗?', '确认', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'info'
}).then(() => {
// 这里可以跳转到病历编辑页面或弹出病历编辑弹窗
ElMessage.success('正在打开病历编辑页面...')
// TODO: 实现写病历的具体逻辑
// 例如router.push({ path: '/doctorstation/emr', query: { encounterId: row.encounterId } })
}).catch(() => {
// 取消操作
})
// 存储患者信息并跳转到住院医生工作站
updatePatientInfo(row)
updateLocalPatientInfo(row)
router.push({ path: '/inHospital/inpatientDoctor/home' })
}
// 查看患者
const handleViewPatient = (row) => {
console.log('查看患者:', row)
// 弹出查看患者弹窗
ElMessageBox.confirm('确定要查看患者 ' + row.patientName + ' 的详细信息吗?', '确认', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'info'
}).then(() => {
// 这里可以跳转到患者详情页面或弹出患者详情弹窗
ElMessage.success('正在打开患者详情页面...')
// TODO: 实现查看患者的具体逻辑
// 例如router.push({ path: '/doctorstation/patient-details', query: { encounterId: row.encounterId } })
}).catch(() => {
// 取消操作
})
// 存储患者信息并跳转到住院医生工作站
updatePatientInfo(row)
updateLocalPatientInfo(row)
router.push({ path: '/inHospital/inpatientDoctor/home' })
}
// 获取性别文本