Merge remote-tracking branch 'origin/develop' into guanyu

This commit is contained in:
2026-06-17 19:30:10 +08:00
14 changed files with 159 additions and 140 deletions

View File

@@ -1,7 +1,7 @@
# HealthLink-HIS 代码模块索引
> 供 LLM 快速定位代码。每个模块列出 Controller → Service → Mapper 关键文件。
> 最后更新: 2026-06-17 12:00 (301 个 Controller)
> 最后更新: 2026-06-17 18:00 (309 个 Controller)
## 关键词 → 模块速查

View File

@@ -239,8 +239,8 @@
align="center"
field="totalVolume"
show-overflow="title"
min-width="200px"
width="200px"
min-width="200"
width="200"
/>
<vxe-column
key="statusEnum_enumText"

View File

@@ -127,7 +127,7 @@
<vxe-column
title="检验项目"
field="itemName"
min-width="170px"
min-width="170"
align="center"
header-align="center"
>

View File

@@ -14,17 +14,17 @@
<vxe-column
title="姓名"
field="name"
min-width="90px"
min-width="90"
/>
<vxe-column
title="年龄"
field="age"
width="60px"
width="60"
/>
<vxe-column
title="费别"
field="feeType"
width="60px"
width="60"
/>
<vxe-column
title="病区"

View File

@@ -59,7 +59,7 @@
<vxe-table
ref="tableRef"
:data="treatHospitalizedData"
min-width="1600px"
min-width="1600"
show-overflow="title"
@radio-change="handleRadioChange"
>

View File

@@ -50,7 +50,7 @@
<div class="table-container">
<vxe-table
:data="treatHospitalizedData"
min-width="900px"
min-width="900"
show-overflow="title"
>
<vxe-column

View File

@@ -611,7 +611,22 @@ function handleImport() {
if (!props.patientInfo || !props.patientInfo.encounterId) {
return;
}
// 检查是否已填写病历
if (!allowAdd.value) {
proxy.$modal.msgWarning('请先填写病历');
return;
}
// 检查当前列表是否有未保存的诊断,阻止重复新增
const hasUnsaved = (form.value.diagnosisList || []).some(
(item) => !item.conditionId && !item.encounterDiagnosisId
);
if (hasUnsaved) {
proxy.$modal.msgWarning('请保存当前诊断');
return;
}
if (props.patientInfo.contractName != '自费') {
// 获取患者慢性病信息
getChronicDisease({ encounterId: props.patientInfo.encounterId }).then((res) => {
@@ -711,6 +726,12 @@ function getTree() {
function handleAddDiagnosis() {
console.log('点击新增诊断按钮allowAdd:', allowAdd.value);
// 检查是否已填写病历(必须先于其他检查)
if (!allowAdd.value) {
proxy.$modal.msgWarning('请先填写病历');
return;
}
// 检查当前列表是否已有未保存的诊断,阻止重复新增
const hasUnsaved = (form.value.diagnosisList || []).some(
(item) => !item.conditionId && !item.encounterDiagnosisId
@@ -730,20 +751,7 @@ function handleAddDiagnosis() {
proxy.$refs.formRef.validate((valid, fields) => {
console.log('表单验证结果:', valid, '错误字段:', fields);
if (valid) {
if (!allowAdd.value) {
proxy.$modal.msgWarning('请先填写病历');
return;
}
addDiagnosisItem();
} else {
console.warn('表单验证失败:', fields);
// 验证失败时也允许添加(因为是新增空行)
if (allowAdd.value) {
console.log('验证失败但允许添加,强制添加诊断');
addDiagnosisItem();
}
}
addDiagnosisItem();
});
}
@@ -1001,6 +1009,7 @@ function handleSaveDiagnosis() {
// 病illness
{
conditionId: item.conditionId || null,
encounterDiagnosisId: item.encounterDiagnosisId || null,
name: item.name,
ybNo: item.ybNo,
definitionId: item.definitionId || null,
@@ -1094,10 +1103,22 @@ function handleNodeClick(data) {
// 如果是根节点,不执行任何操作
return;
}
// if (!allowAdd.value) {
// proxy.$modal.msgWarning('请先填写病历');
// return;
// }
// 检查是否已填写病历
if (!allowAdd.value) {
proxy.$modal.msgWarning('请先填写病历');
return;
}
// 检查当前列表是否有未保存的诊断,阻止重复新增
const hasUnsaved = (form.value.diagnosisList || []).some(
(item) => !item.conditionId && !item.encounterDiagnosisId
);
if (hasUnsaved) {
proxy.$modal.msgWarning('请保存当前诊断');
return;
}
const isDuplicate = form.value.diagnosisList.some(
(diagnosis) => diagnosis.ybNo === data.ybNo || diagnosis.name === data.name
);

View File

@@ -121,7 +121,7 @@
<vxe-column
title="类型"
field="name"
min-width=" 60px"
min-width="60"
>
<template #default="{ row }">
<span v-if="!row.children">长期</span>
@@ -134,7 +134,7 @@
<vxe-column
title="医嘱内容"
field="content"
min-width="220px"
min-width="220"
>
<template #default="{ row }">
<span v-if="row.children">{{ row.content }}</span>
@@ -144,9 +144,9 @@
v-if="searchForm.drugType == '1' || searchForm.drugType == '3'"
title="用法/频次"
field="gender"
min-width="120px"
min-width="120"
>
<template #default="{ row }">
<template #default>
<span>注射/qd</span>
</template>
</vxe-column>
@@ -154,7 +154,7 @@
v-if="searchForm.drugType == '3'"
title="领药数量"
field="gender"
min-width="120px"
min-width="120"
>
<template #default="{ row }">
<el-input-number
@@ -169,27 +169,27 @@
v-if="searchForm.drugType == '1' || searchForm.drugType == '2'"
title="领药总量"
field="gender"
min-width="100px"
min-width="100"
>
<template #default="{ row }">
<template #default>
<span>2 </span>
</template>
</vxe-column>
<vxe-column
title="参考金额"
field="gender"
min-width="100px"
min-width="100"
>
<template #default="{ row }">
<template #default>
<span>20.00</span>
</template>
</vxe-column>
<vxe-column
title="取药科室"
field="gender"
min-width="140px"
min-width="140"
>
<template #default="{ row }">
<template #default>
<span>儿科</span>
</template>
</vxe-column>
@@ -198,7 +198,7 @@
title="领药次数"
field="gender"
fixed="right"
min-width="340px"
min-width="340"
>
<template #default="{ row }">
<template v-if="!row.children">
@@ -235,7 +235,7 @@
<vxe-column
title="医嘱内容"
field="content"
min-width="220px"
min-width="220"
>
<template #default="{ row }">
<span v-if="!row.children">{{ row.content }}</span>
@@ -247,27 +247,27 @@
<vxe-column
title="领药数量"
field="gender"
min-width="120px"
min-width="120"
>
<template #default="{ row }">
<template #default>
<span>2 </span>
</template>
</vxe-column>
<vxe-column
title="单价"
field="gender"
min-width="100px"
min-width="100"
>
<template #default="{ row }">
<template #default>
<span>20.00</span>
</template>
</vxe-column>
<vxe-column
title="参考金额"
field="gender"
min-width="140px"
min-width="140"
>
<template #default="{ row }">
<template #default>
<span>40.00</span>
</template>
</vxe-column>

View File

@@ -124,7 +124,7 @@
<vxe-column
title="执行时间"
field="gender"
min-width="200px"
min-width="200"
>
<template #default="{ row }">
<template v-if="!row.children">

View File

@@ -15,6 +15,7 @@
<el-radio-group
v-model="type"
@change="handleRadioChange"
>
<el-radio :value="0">
全部
</el-radio>
@@ -33,9 +34,12 @@
value-format="YYYY-MM-DD HH:mm:ss"
style="width: 200px"
/>
<el-button
plain
@click="handleGetPrescription"
>
查询
</el-button>
</div>
<div style="flex: 1; min-width: 0;" />
<div style="display: flex; align-items: center; gap: 12px; flex-shrink: 1; min-width: 0;">
@@ -47,11 +51,37 @@
v-model="chooseAll"
@change="handelSwitchChange"
/>
type="primary"
>
<el-button
>
</el-button>
<!-- 未校对tab显示核对通过/退回 -->
<template v-if="activeTab === 'unverified'">
<el-button
type="primary"
@click="handleCheck"
>
核对通过
</el-button>
<el-button
type="danger"
:disabled="hasDispensedSelected"
@click="handleCancel"
>
退回
</el-button>
</template>
<!-- 已校对tab显示执行/不执行 -->
<template v-else-if="activeTab === 'verified'">
<el-button
type="success"
@click="handleExecute"
>
执行
</el-button>
<el-button
type="warning"
@click="handleVoid"
>
不执行
</el-button>
</template>
</div>
</div>
<div
@@ -667,6 +697,11 @@ function getSelectRows() {
requestId: item.requestId,
requestTable: item.adviceTable,
dispenseStatus: item.dispenseStatus,
encounterId: item.encounterId,
patientId: item.patientId,
accountId: item.accountId,
therapyEnum: item.therapyEnum,
exePerformRecordList: item.exePerformRecordList,
};
});
}
@@ -710,66 +745,6 @@ function getDateRange(startDate, endDate) {
// 处理后端返回的时间集合
function handleTime() {}
defineExpose({
handleGetPrescription,
});
</script>
<style scoped>
.el-collapse-icon-position-left :deep(.el-collapse-item__header) {
padding: 10px;
}
:deep(.el-collapse-item__wrap) {
padding: 10px;
}
/* 表头背景色 */
:deep(.prescription-table .vxe-table--header th) {
background-color: #eef9fd !important;
}
:deep(.vxe-body--row:hover > td) {
background-color: #eef9fd !important;
}
</style>
<!-- 未校对tab显示核对通过/退回 -->
<template v-if="activeTab === 'unverified'">
<el-button
type="primary"
@click="handleCheck"
>
核对通过
</el-button>
<el-button
type="danger"
:disabled="hasDispensedSelected"
@click="handleCancel"
>
退回
</el-button>
</template>
<!-- 已校对tab显示执行/不执行 -->
<template v-else-if="activeTab === 'verified'">
<el-button
type="success"
@click="handleExecute"
>
执行
</el-button>
<el-button
type="warning"
@click="handleVoid"
>
不执行
</el-button>
</template>
encounterId: item.encounterId,
patientId: item.patientId,
accountId: item.accountId,
therapyEnum: item.therapyEnum,
exePerformRecordList: item.exePerformRecordList,
/**
* 执行医嘱
*/
@@ -853,3 +828,27 @@ function handleVoid() {
}
});
}
defineExpose({
handleGetPrescription,
});
</script>
<style scoped>
.el-collapse-icon-position-left :deep(.el-collapse-item__header) {
padding: 10px;
}
:deep(.el-collapse-item__wrap) {
padding: 10px;
}
/* 表头背景色 */
:deep(.prescription-table .vxe-table--header th) {
background-color: #eef9fd !important;
}
:deep(.vxe-body--row:hover > td) {
background-color: #eef9fd !important;
}
</style>

View File

@@ -133,7 +133,7 @@
<vxe-column
title="医嘱内容"
field="content"
min-width="300px"
min-width="300"
>
<template #default="{ row }">
<span v-if="row.children">{{ row.content }}</span>

View File

@@ -32,7 +32,6 @@
placeholder="请选择"
clearable
filterable
@change=""
>
<el-option
v-for="item in temOptions"
@@ -220,7 +219,7 @@
</el-form-item>
</template>
</vxe-column>
<!-- <vxe-column width="200px" title="血氧">
<!-- <vxe-column width="200" title="血氧">
<template #default="scoped">
<el-form-item size="normal" :prop="`fillTableData.${scoped.rowIndex}.bloodOxygen`">
<div style="margin-left: -80px">
@@ -232,7 +231,7 @@
</el-form-item>
</template>
</vxe-column>
<vxe-column width="200px" title="血糖">
<vxe-column width="200" title="血糖">
<template #default="scoped">
<el-form-item size="normal" :prop="`fillTableData.${scoped.rowIndex}.bloodGlucose`">
<div style="margin-left: -80px">
@@ -241,7 +240,7 @@
</el-form-item>
</template>
</vxe-column>
<vxe-column width="200px" title="物理降温">
<vxe-column width="200" title="物理降温">
<template #default="scoped">
<el-form-item size="normal" :prop="`fillTableData.${scoped.rowIndex}.physicalCooling`">
<div style="margin-left: -80px">
@@ -250,7 +249,7 @@
</el-form-item>
</template>
</vxe-column>
<vxe-column width="200px" title="CCU心率">
<vxe-column width="200" title="CCU心率">
<template #default="scoped">
<el-form-item size="normal" :prop="`fillTableData.${scoped.rowIndex}.ccuHeartRate`">
<div style="margin-left: -80px">
@@ -259,7 +258,7 @@
</el-form-item>
</template>
</vxe-column>
<vxe-column width="200px" title="新生儿箱温">
<vxe-column width="200" title="新生儿箱温">
<template #default="scoped">
<el-form-item
size="normal"
@@ -271,7 +270,7 @@
</el-form-item>
</template>
</vxe-column>
<vxe-column width="200px" title="血酮">
<vxe-column width="200" title="血酮">
<template #default="scoped">
<el-form-item size="normal" :prop="`fillTableData.${scoped.rowIndex}.bloodKetone`">
<div style="margin-left: -80px">

View File

@@ -171,14 +171,14 @@
>
<vxe-column
type="checkbox"
width="50px"
width="50"
align="center"
/>
<vxe-column
key="busNo"
title="门诊号"
align="center"
min-width="150px"
min-width="150"
show-overflow="title"
resizable
>
@@ -204,7 +204,7 @@
title="姓名"
align="center"
field="name"
width="90px"
width="90"
show-overflow="title"
resizable
/>
@@ -213,7 +213,7 @@
title="医保号"
align="center"
field="ybCode"
min-width="200px"
min-width="200"
show-overflow="title"
resizable
/>
@@ -230,7 +230,7 @@
title="医保码"
align="center"
field="ybNo"
min-width="250px"
min-width="250"
show-overflow="title"
resizable
/>

View File

@@ -23,17 +23,17 @@
<vxe-column
title="序号"
type="seq"
min-width="5%"
width="5%"
/>
<vxe-column
title="字段列名"
field="columnName"
min-width="10%"
width="10%"
show-overflow="title"
/>
<vxe-column
title="字段描述"
min-width="10%"
width="10%"
>
<template #default="scope">
<el-input v-model="scope.row.columnComment" />
@@ -42,12 +42,12 @@
<vxe-column
title="物理类型"
field="columnType"
min-width="10%"
width="10%"
show-overflow="title"
/>
<vxe-column
title="Java类型"
min-width="11%"
width="11%"
>
<template #default="scope">
<el-select v-model="scope.row.javaType">
@@ -84,7 +84,7 @@
</vxe-column>
<vxe-column
title="java属性"
min-width="10%"
width="10%"
>
<template #default="scope">
<el-input v-model="scope.row.javaField" />
@@ -93,7 +93,7 @@
<vxe-column
title="插入"
min-width="5%"
width="5%"
>
<template #default="scope">
<el-checkbox
@@ -105,7 +105,7 @@
</vxe-column>
<vxe-column
title="编辑"
min-width="5%"
width="5%"
>
<template #default="scope">
<el-checkbox
@@ -117,7 +117,7 @@
</vxe-column>
<vxe-column
title="列表"
min-width="5%"
width="5%"
>
<template #default="scope">
<el-checkbox
@@ -129,7 +129,7 @@
</vxe-column>
<vxe-column
title="查询"
min-width="5%"
width="5%"
>
<template #default="scope">
<el-checkbox
@@ -141,7 +141,7 @@
</vxe-column>
<vxe-column
title="查询方式"
min-width="10%"
width="10%"
>
<template #default="scope">
<el-select v-model="scope.row.queryType">
@@ -182,7 +182,7 @@
</vxe-column>
<vxe-column
title="必填"
min-width="5%"
width="5%"
>
<template #default="scope">
<el-checkbox
@@ -194,7 +194,7 @@
</vxe-column>
<vxe-column
title="显示类型"
min-width="12%"
width="12%"
>
<template #default="scope">
<el-select v-model="scope.row.htmlType">
@@ -239,7 +239,7 @@
</vxe-column>
<vxe-column
title="字典类型"
min-width="12%"
width="12%"
>
<template #default="scope">
<el-select