Merge remote-tracking branch 'origin/develop' into guanyu
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
# HealthLink-HIS 代码模块索引
|
||||
|
||||
> 供 LLM 快速定位代码。每个模块列出 Controller → Service → Mapper 关键文件。
|
||||
> 最后更新: 2026-06-17 12:00 (301 个 Controller)
|
||||
> 最后更新: 2026-06-17 18:00 (309 个 Controller)
|
||||
|
||||
## 关键词 → 模块速查
|
||||
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -127,7 +127,7 @@
|
||||
<vxe-column
|
||||
title="检验项目"
|
||||
field="itemName"
|
||||
min-width="170px"
|
||||
min-width="170"
|
||||
align="center"
|
||||
header-align="center"
|
||||
>
|
||||
|
||||
@@ -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="病区"
|
||||
|
||||
@@ -59,7 +59,7 @@
|
||||
<vxe-table
|
||||
ref="tableRef"
|
||||
:data="treatHospitalizedData"
|
||||
min-width="1600px"
|
||||
min-width="1600"
|
||||
show-overflow="title"
|
||||
@radio-change="handleRadioChange"
|
||||
>
|
||||
|
||||
@@ -50,7 +50,7 @@
|
||||
<div class="table-container">
|
||||
<vxe-table
|
||||
:data="treatHospitalizedData"
|
||||
min-width="900px"
|
||||
min-width="900"
|
||||
show-overflow="title"
|
||||
>
|
||||
<vxe-column
|
||||
|
||||
@@ -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
|
||||
);
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -124,7 +124,7 @@
|
||||
<vxe-column
|
||||
title="执行时间"
|
||||
field="gender"
|
||||
min-width="200px"
|
||||
min-width="200"
|
||||
>
|
||||
<template #default="{ row }">
|
||||
<template v-if="!row.children">
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -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
|
||||
/>
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user