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

This commit is contained in:
2026-06-25 13:47:21 +08:00
3 changed files with 63 additions and 28 deletions

View File

@@ -78,9 +78,9 @@ public class MedicineSummaryAppServiceImpl implements IMedicineSummaryAppService
.map(notPerformedReason -> new DispenseInitDto.NotPerformedReasonOption(notPerformedReason.getValue(),
notPerformedReason.getInfo()))
.collect(Collectors.toList());
// 发药状态(汇总单:待配药→已提交,已发放→已发药)
// 发药状态(汇总单:汇总申请→待发药,发药→已发药)
List<DispenseStatusOption> dispenseStatusOptions = new ArrayList<>();
dispenseStatusOptions.add(new DispenseStatusOption(DispenseStatus.PREPARATION.getValue(), "已提交"));
dispenseStatusOptions.add(new DispenseStatusOption(DispenseStatus.PREPARATION.getValue(), "待发药"));
dispenseStatusOptions.add(new DispenseStatusOption(DispenseStatus.COMPLETED.getValue(), "已发药"));
initDto.setNotPerformedReasonOptions(notPerformedReasonOptions).setDispenseStatusOptions(dispenseStatusOptions);
@@ -309,11 +309,11 @@ public class MedicineSummaryAppServiceImpl implements IMedicineSummaryAppService
}
/**
* 汇总发药单状态展示文案(药品医嘱状态映射表:汇总申请→已提交,发药→已发药)
* 汇总发药单状态展示文案(药品医嘱状态映射表:汇总申请→待发药,发药→已发药)
*/
private String getSummaryFormStatusText(Integer statusEnum) {
if (DispenseStatus.EXECUTED.getValue().equals(statusEnum)) {
return "已提交";
if (DispenseStatus.PREPARATION.getValue().equals(statusEnum)) {
return "待发药";
}
if (DispenseStatus.COMPLETED.getValue().equals(statusEnum)) {
return "已发药";

View File

@@ -2,7 +2,7 @@
<div class="med-summary-container">
<div
class="summary-card"
style="width: 40%; height: 80vh"
style="width: 44%; height: 80vh"
>
<div class="summary-card-header">
{{ '汇总单' }}
@@ -92,7 +92,7 @@
field="busNo"
title="单据号"
align="center"
min-width="90"
min-width="130"
show-overflow="title"
/>
<vxe-column
@@ -244,31 +244,21 @@ import {getFromSummaryDetails, getFromSummaryInit, getFromSummaryList, totalSend
const { proxy } = getCurrentInstance();
/** 发药汇总单状态展示(汇总申请→已提交,发药→已发药) */
/** 发药汇总单状态展示(汇总申请→待发药(2),发药→已发药(4) */
const SUMMARY_STATUS_DISPLAY = {
11: '已执行',
18: '已提交',
2: '待发药',
4: '已发药',
};
const LEGACY_SUMMARY_STATUS_TEXT = {
待配药: '已提交',
已发放: '已发药',
};
function formatSummaryStatusText(row) {
const code = Number(row?.statusEnum);
if (SUMMARY_STATUS_DISPLAY[code]) {
return SUMMARY_STATUS_DISPLAY[code];
}
return LEGACY_SUMMARY_STATUS_TEXT[row?.statusEnum_enumText] || row?.statusEnum_enumText || '-';
return SUMMARY_STATUS_DISPLAY[code] || row?.statusEnum_enumText || '-';
}
/** 状态标签颜色 */
const STATUS_TAG_TYPE_MAP = {
2: 'warning', // 待药 - 橙色
2: 'warning', // 待药 - 橙色
4: 'success', // 已发药 - 绿色
11: 'info', // 已执行 - 灰色
18: '', // 已提交 - 蓝色(默认)
};
function getStatusTagType(row) {
return STATUS_TAG_TYPE_MAP[Number(row?.statusEnum)] || 'info';
@@ -277,7 +267,7 @@ function getStatusTagType(row) {
function mapSummaryStatusOptions(options = []) {
return options.map((item) => ({
...item,
label: SUMMARY_STATUS_DISPLAY[item.value] ?? LEGACY_SUMMARY_STATUS_TEXT[item.label] ?? item.label,
label: SUMMARY_STATUS_DISPLAY[item.value] ?? item.label,
}));
}
@@ -317,7 +307,9 @@ function getSummaryList() {
queryParams.value.applyTimeSTime = queryParams.value.applyTime[0] + ' 00:00:00';
queryParams.value.applyTimeETime = queryParams.value.applyTime[1] + ' 23:59:59';
getFromSummaryList(queryParams.value).then((res) => {
summaryList.value = res.data.records;
summaryList.value = res.data.records || [];
}).catch(() => {
summaryList.value = [];
});
}
@@ -335,9 +327,16 @@ function resetQuery() {
function getDetails(params) {
// cell-click 事件参数是 { row, column, $event, ... } 对象,需安全提取行数据
const row = params.row || params;
if (!row?.busNo) {
summaryDetailsData.value = [];
return;
}
loading.value = true;
getFromSummaryDetails({ summaryNo: row.busNo }).then((res) => {
summaryDetailsData.value = res.data;
summaryDetailsData.value = res.data || [];
}).catch(() => {
summaryDetailsData.value = [];
}).finally(() => {
loading.value = false;
});
}

View File

@@ -5,7 +5,7 @@
<el-input
v-model="queryParams.searchKey"
style="width: 160px"
placeholder="患者姓名"
placeholder="请输入申请患者姓名"
class="input-with-select"
clearable
/>
@@ -425,14 +425,35 @@ const handlePrintCertificate = async () => {
};
getContract();
// 获取入院科室列表
// 获取入院科室列表仅住院科室classEnum 包含 "2"
function loadOrgList() {
getOrgList().then((res) => {
orgList.value = res.data || [];
const records = res.data?.records || [];
orgList.value = records.filter(
(record) => record.typeEnum === 2 && checkClassEnumValue(record.classEnum, 2)
);
});
}
// 判断科室分类是否包含指定值(支持逗号分隔的多选值,如 "1,2"
function checkClassEnumValue(classEnum, targetValue) {
if (!classEnum) return false;
if (typeof classEnum === 'string' && classEnum.includes(',')) {
const values = classEnum.split(',').map(v => v.trim());
return values.some(v => v == targetValue);
}
return classEnum == targetValue;
}
onMounted(() => {
// 默认检索近一周时间段
const endDate = new Date();
const startDate = new Date();
startDate.setDate(startDate.getDate() - 7);
dateRange.value = [
formatDateStr(startDate) + ' 00:00:00',
formatDateStr(endDate) + ' 23:59:59',
];
getList();
loadOrgList();
});
@@ -465,7 +486,14 @@ function resetQuery() {
startTime: '',
endTime: '',
};
dateRange.value = [];
// 重置为默认近一周时间段
const endDate = new Date();
const startDate = new Date();
startDate.setDate(startDate.getDate() - 7);
dateRange.value = [
formatDateStr(startDate) + ' 00:00:00',
formatDateStr(endDate) + ' 23:59:59',
];
getList();
}
@@ -491,6 +519,14 @@ const priceTypeDic = (contractNo) => {
return findObj?.contractName;
};
/** 格式化日期为 YYYY-MM-DD */
function formatDateStr(date) {
const year = date.getFullYear();
const month = String(date.getMonth() + 1).padStart(2, '0');
const day = String(date.getDate()).padStart(2, '0');
return `${year}-${month}-${day}`;
}
const getList = () => {
// 设置按申请时间排序
queryParams.value.sortField = 'requestTime';