Compare commits
38 Commits
bugfix-403
...
943adeb227
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
943adeb227 | ||
|
|
2e2237926b | ||
|
|
0e2aeddedb | ||
|
|
fac16d791f | ||
| 3c7a69937b | |||
|
|
ab12d23168 | ||
|
|
5777053140 | ||
|
|
6f52467f08 | ||
|
|
7fcf9a5ec9 | ||
|
|
963fd238e4 | ||
|
|
bacb4d43d3 | ||
|
|
08b2247071 | ||
|
|
5cfb091d0b | ||
|
|
5bd49fb580 | ||
|
|
d3d144bb18 | ||
|
|
6d766b09a7 | ||
|
|
b3de1dec38 | ||
|
|
64325a8493 | ||
|
|
609f3c3f8a | ||
|
|
8af3c6c31c | ||
|
|
c24520db74 | ||
|
|
091bf16df2 | ||
|
|
214e82ae29 | ||
|
|
655436bea9 | ||
|
|
4069c452ba | ||
|
|
683ce749f3 | ||
|
|
0c74e66c91 | ||
|
|
0209e8ae99 | ||
|
|
9c75858afc | ||
|
|
b849d4c605 | ||
|
|
a4de88a6f9 | ||
|
|
ad21c566f0 | ||
|
|
21ac9e80f2 | ||
|
|
9cfaa7dc41 | ||
|
|
eb18a2c800 | ||
| cf5431cbbf | |||
|
|
a429f77113 | ||
|
|
ffa709cf4e |
@@ -1,66 +0,0 @@
|
|||||||
# Bug #403 分析报告
|
|
||||||
|
|
||||||
## 根因分析
|
|
||||||
|
|
||||||
**Bug现象**:住院医生工作站应用医嘱组套后,药品明细字段(单次剂量、总量、总金额、药房/科室)丢失。
|
|
||||||
|
|
||||||
**数据流追踪**:
|
|
||||||
|
|
||||||
1. **后端 `getGroupPackageForOrder`** (OrdersGroupPackageAppServiceImpl.java:168)
|
|
||||||
- 查询组套明细 SQL(OrdersGroupPackageAppMapper.xml:37-82)返回:`dose`, `quantity`, `doseQuantity`, `rateCode`, `methodCode`, `dispensePerDuration` 等字段
|
|
||||||
- 通过 `getAdviceBaseInfo` 获取 `AdviceBaseDto` 赋值给 `detail.setOrderDetailInfos()`,包含:`doseUnitCode`, `doseUnitCode_dictText`, `positionId`, `inventoryList`, `priceList`, `partPercent` 等
|
|
||||||
|
|
||||||
2. **前端 `orderGroupDrawer.vue`** `handleUseOrderGroup` (line 568-694)
|
|
||||||
- 对每个组套明细项进行预处理,合并组套字段和医嘱库字段
|
|
||||||
- 通过 `emit('useOrderGroup', processedDetailList)` 发送到父组件
|
|
||||||
|
|
||||||
3. **前端 `inpatientDoctor/home/components/order/index.vue`** `handleSaveGroup` (line 1546-1639)
|
|
||||||
- 接收 `orderGroupList`,对每个 item 调用 `setValue(mergedDetail)` 填充行数据
|
|
||||||
- 然后用 `item` 的字段显式覆盖创建 `newRow`
|
|
||||||
|
|
||||||
**根因定位**:`handleSaveGroup` 在构建 `newRow` 时(line 1594-1617),从 `item` 直接取值覆盖了 `setValue` 设置的值。问题在于:
|
|
||||||
|
|
||||||
1. **`item.unitCodeName` 可能为 undefined**:组套明细 SQL 中 `unitCodeName` 来自字典关联 `sys_dict_data`,如果字典匹配不上则为 null。`newRow` 的 `unitCode_dictText` 直接使用 `item.unitCodeName || ''`,导致显示为空。
|
|
||||||
|
|
||||||
2. **`positionName` 未在 `orderGroupDrawer` 处理项中显式设置**:虽然 `setValue` 会通过库存查询设置 `positionName`,但 `orderGroupDrawer.vue` 的 `handleUseOrderGroup` 没有将 `positionName`(或至少 `orderDetail.positionName`)包含在 processed item 中,导致 `setValue` 的库存查找依赖 `inventoryList`,而 `inventoryList` 来自后端 `AdviceBaseDto`。
|
|
||||||
|
|
||||||
3. **`doseUnitCode_dictText` 依赖 `setValue` 的 `unitCodeList`**:`orderGroupDrawer` 的处理项中没有显式包含 `doseUnitCode_dictText`,完全依赖 `mergedDetail` 中 spread 的 `orderDetail` 字段。
|
|
||||||
|
|
||||||
## 影响范围
|
|
||||||
|
|
||||||
- 前端文件:`openhis-ui-vue3/src/views/doctorstation/components/prescription/orderGroupDrawer.vue`
|
|
||||||
- 前端文件:`openhis-ui-vue3/src/views/inpatientDoctor/home/components/order/index.vue`
|
|
||||||
- 影响场景:住院医生工作站和门诊医生工作站应用医嘱组套
|
|
||||||
|
|
||||||
## 修复方案
|
|
||||||
|
|
||||||
**修改 `orderGroupDrawer.vue` 的 `handleUseOrderGroup` 函数**(line 630-688):
|
|
||||||
|
|
||||||
在 processed item 的 return 对象中显式添加缺失的字段:
|
|
||||||
- `doseUnitCode_dictText`:从 orderDetail 获取剂量单位显示文本
|
|
||||||
- `positionName`:从 orderDetail 获取执行科室/药房名称
|
|
||||||
- `injectFlag` / `injectFlag_enumText`:注射标识
|
|
||||||
- `skinTestFlag` / `skinTestFlag_enumText`:皮试标识
|
|
||||||
- `partPercent`、`partAttributeEnum`、`unitConversionRatio`:用于价格计算的关键字段
|
|
||||||
|
|
||||||
这些字段在 `orderDetail`(AdviceBaseDto)中都有,只是没有在 processed item 的顶层显式设置。`handleSaveGroup` 的 `newRow` 通过 `...prescriptionList.value[rowIndex.value]` spread 能获取到 `setValue` 设置的值,但显式在顶层包含可以确保数据流的完整性。
|
|
||||||
|
|
||||||
## 验证计划
|
|
||||||
|
|
||||||
1. 修改代码后,用 `node --check` 验证语法
|
|
||||||
2. 在住院医生工作站测试:选择患者 → 点击组套 → 预览组套 → 应用到当前患者
|
|
||||||
3. 验证表格中显示的字段:单次剂量、总量、总金额、药房/科室均有值
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 修复结果:✅ 成功,10行改动
|
|
||||||
|
|
||||||
**修改文件**:`openhis-ui-vue3/src/views/doctorstation/components/prescription/orderGroupDrawer.vue`
|
|
||||||
|
|
||||||
**改动说明**:在 `handleUseOrderGroup` 函数的 processed item 中显式添加了以下缺失字段:
|
|
||||||
- `doseUnitCode_dictText`:剂量单位显示文本(如"mg"),用于"单次剂量"列的后缀显示
|
|
||||||
- `positionName`:药房/科室名称,用于"药房/科室"列显示
|
|
||||||
- `injectFlag` / `injectFlag_enumText`:注射药品标识及文本
|
|
||||||
- `skinTestFlag` / `skinTestFlag_enumText`:皮试标识及文本
|
|
||||||
|
|
||||||
**策略**:策略A(直接修复代码逻辑)—— 组套应用时数据预处理缺失部分关键字段,导致父组件 `handleSaveGroup` 构建行数据时无法获取完整信息。补充字段后,`setValue` 和 `newRow` 构造均能正确传递这些数据到表格。
|
|
||||||
@@ -83,9 +83,6 @@ public class InfectiousCardDto {
|
|||||||
/** 病例分类 */
|
/** 病例分类 */
|
||||||
private String diseaseType;
|
private String diseaseType;
|
||||||
|
|
||||||
/** 病例分类 */
|
|
||||||
private Integer caseClass;
|
|
||||||
|
|
||||||
/** 发病日期 */
|
/** 发病日期 */
|
||||||
private LocalDate onsetDate;
|
private LocalDate onsetDate;
|
||||||
|
|
||||||
|
|||||||
@@ -112,15 +112,12 @@ public class InfectiousDiseaseReportDto {
|
|||||||
private Integer caseClass;
|
private Integer caseClass;
|
||||||
|
|
||||||
/** 发病日期(默认诊断时间,病原携带者填初检日期) */
|
/** 发病日期(默认诊断时间,病原携带者填初检日期) */
|
||||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
|
||||||
private LocalDate onsetDate;
|
private LocalDate onsetDate;
|
||||||
|
|
||||||
/** 诊断日期(精确到小时) */
|
/** 诊断日期(精确到小时) */
|
||||||
@JsonFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss")
|
|
||||||
private LocalDateTime diagDate;
|
private LocalDateTime diagDate;
|
||||||
|
|
||||||
/** 死亡日期(死亡病例必填) */
|
/** 死亡日期(死亡病例必填) */
|
||||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
|
||||||
private LocalDate deathDate;
|
private LocalDate deathDate;
|
||||||
|
|
||||||
/** 订正病名(订正报告必填) */
|
/** 订正病名(订正报告必填) */
|
||||||
@@ -139,7 +136,6 @@ public class InfectiousDiseaseReportDto {
|
|||||||
private String reportDoc;
|
private String reportDoc;
|
||||||
|
|
||||||
/** 填卡日期 */
|
/** 填卡日期 */
|
||||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
|
||||||
private LocalDate reportDate;
|
private LocalDate reportDate;
|
||||||
|
|
||||||
/** 报卡名称代码 1-中华人民共和国传染病报告卡 */
|
/** 报卡名称代码 1-中华人民共和国传染病报告卡 */
|
||||||
@@ -164,4 +160,4 @@ public class InfectiousDiseaseReportDto {
|
|||||||
/** 医生ID */
|
/** 医生ID */
|
||||||
@JsonSerialize(using = ToStringSerializer.class)
|
@JsonSerialize(using = ToStringSerializer.class)
|
||||||
private Long doctorId;
|
private Long doctorId;
|
||||||
}
|
}
|
||||||
@@ -178,7 +178,9 @@ public class AdviceProcessAppServiceImpl implements IAdviceProcessAppService {
|
|||||||
inpatientAdviceParam.setEncounterIds(null);
|
inpatientAdviceParam.setEncounterIds(null);
|
||||||
Integer exeStatus = inpatientAdviceParam.getExeStatus();
|
Integer exeStatus = inpatientAdviceParam.getExeStatus();
|
||||||
inpatientAdviceParam.setExeStatus(null);
|
inpatientAdviceParam.setExeStatus(null);
|
||||||
// requestStatus由前端tab传入,通过QueryWrapper自动添加到SQL外层WHERE过滤
|
// requestStatus由前端tab控制,需在后端过滤
|
||||||
|
Integer requestStatus = inpatientAdviceParam.getRequestStatus();
|
||||||
|
inpatientAdviceParam.setRequestStatus(null);
|
||||||
// 构建查询条件
|
// 构建查询条件
|
||||||
QueryWrapper<InpatientAdviceParam> queryWrapper
|
QueryWrapper<InpatientAdviceParam> queryWrapper
|
||||||
= HisQueryUtils.buildQueryWrapper(inpatientAdviceParam, null, null, null);
|
= HisQueryUtils.buildQueryWrapper(inpatientAdviceParam, null, null, null);
|
||||||
@@ -291,6 +293,16 @@ public class AdviceProcessAppServiceImpl implements IAdviceProcessAppService {
|
|||||||
inpatientAdvicePage.setTotal(filteredList.size());
|
inpatientAdvicePage.setTotal(filteredList.size());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 按请求状态(tab切换)过滤医嘱
|
||||||
|
if (requestStatus != null) {
|
||||||
|
List<InpatientAdviceDto> statusFilteredList = inpatientAdvicePage.getRecords().stream()
|
||||||
|
.filter(advice -> requestStatus.equals(advice.getRequestStatus()))
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
inpatientAdvicePage.setRecords(statusFilteredList);
|
||||||
|
inpatientAdvicePage.setTotal(statusFilteredList.size());
|
||||||
|
}
|
||||||
|
|
||||||
return R.ok(inpatientAdvicePage);
|
return R.ok(inpatientAdvicePage);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -367,7 +379,7 @@ public class AdviceProcessAppServiceImpl implements IAdviceProcessAppService {
|
|||||||
.in(MedicationDispense::getMedReqId, medReqIds)
|
.in(MedicationDispense::getMedReqId, medReqIds)
|
||||||
.eq(MedicationDispense::getStatusEnum, DispenseStatus.COMPLETED.getValue()));
|
.eq(MedicationDispense::getStatusEnum, DispenseStatus.COMPLETED.getValue()));
|
||||||
if (!dispenseList.isEmpty()) {
|
if (!dispenseList.isEmpty()) {
|
||||||
return R.fail("该药品已由药房发放,请先执行退药处理,不可直接退回");
|
return R.fail("该医嘱已发药,无法退回");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Long practitionerId = SecurityUtils.getLoginUser().getPractitionerId();
|
Long practitionerId = SecurityUtils.getLoginUser().getPractitionerId();
|
||||||
|
|||||||
@@ -1025,11 +1025,7 @@ function parseBirthDate(birthDate) {
|
|||||||
|
|
||||||
function normalizeDate(value) {
|
function normalizeDate(value) {
|
||||||
if (!value) return '';
|
if (!value) return '';
|
||||||
const datePart = String(value).split(/[T ]/)[0].replace(/\//g, '-');
|
return String(value).split(/[T ]/)[0];
|
||||||
const parts = datePart.split('-');
|
|
||||||
if (parts.length !== 3) return datePart;
|
|
||||||
const [year, month, day] = parts;
|
|
||||||
return `${year}-${month.padStart(2, '0')}-${day.padStart(2, '0')}`;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function normalizeSex(value) {
|
function normalizeSex(value) {
|
||||||
@@ -1120,7 +1116,7 @@ function showReport(reportData = {}, readOnly = true) {
|
|||||||
addressHouse: reportData.addressHouse || '',
|
addressHouse: reportData.addressHouse || '',
|
||||||
patientBelong: reportData.patientBelong || 1,
|
patientBelong: reportData.patientBelong || 1,
|
||||||
occupation: reportData.occupation || '',
|
occupation: reportData.occupation || '',
|
||||||
caseClass: reportData.caseClass != null ? String(reportData.caseClass) : '',
|
caseClass: reportData.diseaseType != null ? String(reportData.diseaseType) : '',
|
||||||
onsetDate: normalizeDate(reportData.onsetDate),
|
onsetDate: normalizeDate(reportData.onsetDate),
|
||||||
diagDate: normalizeDate(reportData.diagDate),
|
diagDate: normalizeDate(reportData.diagDate),
|
||||||
deathDate: normalizeDate(reportData.deathDate),
|
deathDate: normalizeDate(reportData.deathDate),
|
||||||
@@ -1129,7 +1125,7 @@ function showReport(reportData = {}, readOnly = true) {
|
|||||||
selectedClassB: diseaseSelection.selectedClassB,
|
selectedClassB: diseaseSelection.selectedClassB,
|
||||||
selectedClassC: diseaseSelection.selectedClassC,
|
selectedClassC: diseaseSelection.selectedClassC,
|
||||||
otherDisease: reportData.otherDisease || (diseaseCode === 'OTHER' ? reportData.diseaseName || '' : ''),
|
otherDisease: reportData.otherDisease || (diseaseCode === 'OTHER' ? reportData.diseaseName || '' : ''),
|
||||||
diseaseType: reportData.diseaseSubtype || reportData.diseaseType || '',
|
diseaseType: reportData.diseaseSubtype || '',
|
||||||
reportOrg: reportData.reportOrg || '',
|
reportOrg: reportData.reportOrg || '',
|
||||||
reportOrgPhone: reportData.reportOrgPhone || '',
|
reportOrgPhone: reportData.reportOrgPhone || '',
|
||||||
reportDoc: reportData.reportDoc || '',
|
reportDoc: reportData.reportDoc || '',
|
||||||
@@ -1470,7 +1466,7 @@ async function buildSubmitData() {
|
|||||||
reportDate: formData.reportDate || null,
|
reportDate: formData.reportDate || null,
|
||||||
cardNameCode: 1, // 默认中华人民共和国传染病报告卡
|
cardNameCode: 1, // 默认中华人民共和国传染病报告卡
|
||||||
registrationSource: 1, // 默认门诊
|
registrationSource: 1, // 默认门诊
|
||||||
status: null,
|
status: '',
|
||||||
deptId: props.deptId || null,
|
deptId: props.deptId || null,
|
||||||
doctorId: props.doctorId || null,
|
doctorId: props.doctorId || null,
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -653,16 +653,6 @@ async function handleUseOrderGroup(row) {
|
|||||||
unitCodeName: item.unitCodeName || orderDetail.unitCode_dictText,
|
unitCodeName: item.unitCodeName || orderDetail.unitCode_dictText,
|
||||||
minUnitCode: orderDetail.minUnitCode,
|
minUnitCode: orderDetail.minUnitCode,
|
||||||
doseUnitCode: orderDetail.doseUnitCode,
|
doseUnitCode: orderDetail.doseUnitCode,
|
||||||
doseUnitCode_dictText: orderDetail.doseUnitCode_dictText || '',
|
|
||||||
|
|
||||||
// 药房/科室名称(setValue 通过库存查找设置,但需确保 orderDetail 中有)
|
|
||||||
positionName: orderDetail.positionName || '',
|
|
||||||
|
|
||||||
// 注射/皮试标识(表格列显示依赖这些字段)
|
|
||||||
injectFlag: orderDetail.injectFlag,
|
|
||||||
injectFlag_enumText: orderDetail.injectFlag_enumText || '',
|
|
||||||
skinTestFlag: orderDetail.skinTestFlag,
|
|
||||||
skinTestFlag_enumText: orderDetail.skinTestFlag_enumText || '',
|
|
||||||
|
|
||||||
// 字典文本(传递到 item 层级,避免后续代码依赖 mergedDetail 再查一次)
|
// 字典文本(传递到 item 层级,避免后续代码依赖 mergedDetail 再查一次)
|
||||||
methodCode_dictText: methodCodeDictText,
|
methodCode_dictText: methodCodeDictText,
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
<span class="descriptions-item-label">全选:</span>
|
<span class="descriptions-item-label">全选:</span>
|
||||||
<el-switch v-model="chooseAll" @change="handelSwitchChange" />
|
<el-switch v-model="chooseAll" @change="handelSwitchChange" />
|
||||||
<el-button class="ml20" type="primary" @click="handleCheck"> 核对通过 </el-button>
|
<el-button class="ml20" type="primary" @click="handleCheck"> 核对通过 </el-button>
|
||||||
<el-button class="ml20 mr20" type="danger" :disabled="hasDispensedSelected" @click="handleCancel"> 退回 </el-button>
|
<el-button class="ml20 mr20" type="danger" @click="handleCancel"> 退回 </el-button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div
|
<div
|
||||||
@@ -152,7 +152,6 @@
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<script setup>
|
<script setup>
|
||||||
import {ref, computed} from 'vue';
|
|
||||||
import {adviceVerify, cancel, getPrescriptionList} from './api';
|
import {adviceVerify, cancel, getPrescriptionList} from './api';
|
||||||
import {patientInfoList} from '../../components/store/patient.js';
|
import {patientInfoList} from '../../components/store/patient.js';
|
||||||
import {formatDateStr} from '@/utils/index';
|
import {formatDateStr} from '@/utils/index';
|
||||||
@@ -164,11 +163,6 @@ const type = ref(null);
|
|||||||
const { proxy } = getCurrentInstance();
|
const { proxy } = getCurrentInstance();
|
||||||
const loading = ref(false);
|
const loading = ref(false);
|
||||||
const chooseAll = ref(false);
|
const chooseAll = ref(false);
|
||||||
const selectionTrigger = ref(0);
|
|
||||||
const hasDispensedSelected = computed(() => {
|
|
||||||
selectionTrigger.value;
|
|
||||||
return getSelectRows().some(item => item.dispenseStatus === 4);
|
|
||||||
});
|
|
||||||
const props = defineProps({
|
const props = defineProps({
|
||||||
requestStatus: {
|
requestStatus: {
|
||||||
type: Number,
|
type: Number,
|
||||||
@@ -268,9 +262,7 @@ function getGroupMarkers() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 选择框改变时的处理
|
// 选择框改变时的处理
|
||||||
function handleSelectionChange(selection, row) {
|
function handleSelectionChange(selection, row) {}
|
||||||
selectionTrigger.value++;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 核对通过
|
* 核对通过
|
||||||
@@ -299,7 +291,7 @@ function handleCancel() {
|
|||||||
// 校验已发药的医嘱不允许退回
|
// 校验已发药的医嘱不允许退回
|
||||||
let dispensedItems = list.filter(item => item.dispenseStatus === 4);
|
let dispensedItems = list.filter(item => item.dispenseStatus === 4);
|
||||||
if (dispensedItems.length > 0) {
|
if (dispensedItems.length > 0) {
|
||||||
proxy.$message.error('该药品已由药房发放,请先执行退药处理,不可直接退回');
|
proxy.$message.error('该医嘱已发药,无法退回');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
cancel(list).then((res) => {
|
cancel(list).then((res) => {
|
||||||
@@ -318,16 +310,12 @@ function getSelectRows() {
|
|||||||
// 获取选中的医嘱信息
|
// 获取选中的医嘱信息
|
||||||
let list = [];
|
let list = [];
|
||||||
prescriptionList.value.forEach((item, index) => {
|
prescriptionList.value.forEach((item, index) => {
|
||||||
const ref = proxy.$refs['tableRef' + index];
|
list = [...list, ...proxy.$refs['tableRef' + index][0].getSelectionRows()];
|
||||||
if (ref && ref[0]) {
|
|
||||||
list = [...list, ...ref[0].getSelectionRows()];
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
return list.map((item) => {
|
return list.map((item) => {
|
||||||
return {
|
return {
|
||||||
requestId: item.requestId,
|
requestId: item.requestId,
|
||||||
requestTable: item.adviceTable,
|
requestTable: item.adviceTable,
|
||||||
dispenseStatus: item.dispenseStatus,
|
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -546,7 +546,7 @@
|
|||||||
v-model="form.admissionTime"
|
v-model="form.admissionTime"
|
||||||
type="datetime"
|
type="datetime"
|
||||||
placeholder="选择入室时间"
|
placeholder="选择入室时间"
|
||||||
value-format="YYYY-MM-DD HH:mm:ss"
|
value-format="YYYY-MM-DDTHH:mm:ss"
|
||||||
format="YYYY-MM-DD HH:mm"
|
format="YYYY-MM-DD HH:mm"
|
||||||
style="width: 100%"
|
style="width: 100%"
|
||||||
/>
|
/>
|
||||||
@@ -558,7 +558,7 @@
|
|||||||
v-model="form.entryTime"
|
v-model="form.entryTime"
|
||||||
type="datetime"
|
type="datetime"
|
||||||
placeholder="选择进室时间"
|
placeholder="选择进室时间"
|
||||||
value-format="YYYY-MM-DD HH:mm:ss"
|
value-format="YYYY-MM-DDTHH:mm:ss"
|
||||||
format="YYYY-MM-DD HH:mm"
|
format="YYYY-MM-DD HH:mm"
|
||||||
style="width: 100%"
|
style="width: 100%"
|
||||||
/>
|
/>
|
||||||
@@ -570,7 +570,7 @@
|
|||||||
v-model="form.anesStart"
|
v-model="form.anesStart"
|
||||||
type="datetime"
|
type="datetime"
|
||||||
placeholder="选择麻醉开始时间"
|
placeholder="选择麻醉开始时间"
|
||||||
value-format="YYYY-MM-DD HH:mm:ss"
|
value-format="YYYY-MM-DDTHH:mm:ss"
|
||||||
format="YYYY-MM-DD HH:mm"
|
format="YYYY-MM-DD HH:mm"
|
||||||
style="width: 100%"
|
style="width: 100%"
|
||||||
/>
|
/>
|
||||||
@@ -584,7 +584,7 @@
|
|||||||
v-model="form.startTime"
|
v-model="form.startTime"
|
||||||
type="datetime"
|
type="datetime"
|
||||||
placeholder="选择切开时间"
|
placeholder="选择切开时间"
|
||||||
value-format="YYYY-MM-DD HH:mm:ss"
|
value-format="YYYY-MM-DDTHH:mm:ss"
|
||||||
format="YYYY-MM-DD HH:mm"
|
format="YYYY-MM-DD HH:mm"
|
||||||
style="width: 100%"
|
style="width: 100%"
|
||||||
/>
|
/>
|
||||||
@@ -596,7 +596,7 @@
|
|||||||
v-model="form.endTime"
|
v-model="form.endTime"
|
||||||
type="datetime"
|
type="datetime"
|
||||||
placeholder="选择手术结束时间"
|
placeholder="选择手术结束时间"
|
||||||
value-format="YYYY-MM-DD HH:mm:ss"
|
value-format="YYYY-MM-DDTHH:mm:ss"
|
||||||
format="YYYY-MM-DD HH:mm"
|
format="YYYY-MM-DD HH:mm"
|
||||||
style="width: 100%"
|
style="width: 100%"
|
||||||
/>
|
/>
|
||||||
@@ -608,7 +608,7 @@
|
|||||||
v-model="form.anesEnd"
|
v-model="form.anesEnd"
|
||||||
type="datetime"
|
type="datetime"
|
||||||
placeholder="选择麻醉结束时间"
|
placeholder="选择麻醉结束时间"
|
||||||
value-format="YYYY-MM-DD HH:mm:ss"
|
value-format="YYYY-MM-DDTHH:mm:ss"
|
||||||
format="YYYY-MM-DD HH:mm"
|
format="YYYY-MM-DD HH:mm"
|
||||||
style="width: 100%"
|
style="width: 100%"
|
||||||
/>
|
/>
|
||||||
@@ -689,7 +689,7 @@
|
|||||||
</el-dialog>
|
</el-dialog>
|
||||||
|
|
||||||
<!-- 手术申请查询弹窗 -->
|
<!-- 手术申请查询弹窗 -->
|
||||||
<el-dialog :title="'手术申请查询'" v-model="showApplyDialog" width="1200px" @close="cancelApplyDialog" class="surgery-apply-dialog">
|
<el-dialog :title="'手术申请查询'" v-model="showApplyDialog" width="1200px" @close="cancelApplyDialog">
|
||||||
<!-- 查询条件区 -->
|
<!-- 查询条件区 -->
|
||||||
<el-form :model="applyQueryParams" ref="applyQueryRef" :inline="true" class="query-form">
|
<el-form :model="applyQueryParams" ref="applyQueryRef" :inline="true" class="query-form">
|
||||||
<el-form-item label="手术单号" prop="surgeryNo">
|
<el-form-item label="手术单号" prop="surgeryNo">
|
||||||
@@ -741,16 +741,16 @@
|
|||||||
</el-form>
|
</el-form>
|
||||||
|
|
||||||
<!-- 结果表格区 -->
|
<!-- 结果表格区 -->
|
||||||
<el-table
|
<el-table
|
||||||
ref="applyTableRef"
|
ref="applyTableRef"
|
||||||
v-loading="applyLoading"
|
v-loading="applyLoading"
|
||||||
:data="applyList"
|
:data="applyList"
|
||||||
row-key="surgeryNo"
|
row-key="surgeryNo"
|
||||||
@row-click="handleApplyRowClick"
|
@row-click="handleApplyRowClick"
|
||||||
:row-class-name="tableRowClassName"
|
:row-class-name="tableRowClassName"
|
||||||
style="width: 100%"
|
style="width: 100%"
|
||||||
max-height="340"
|
max-height="400"
|
||||||
:scroll="{ y: 340 }"
|
:scroll="{ y: 400 }"
|
||||||
>
|
>
|
||||||
<el-table-column type="selection" width="55" :selectable="handleSelectable" />
|
<el-table-column type="selection" width="55" :selectable="handleSelectable" />
|
||||||
<el-table-column label="ID" align="center" width="80" fixed>
|
<el-table-column label="ID" align="center" width="80" fixed>
|
||||||
@@ -781,7 +781,7 @@
|
|||||||
</el-table>
|
</el-table>
|
||||||
|
|
||||||
<!-- 底部分页区 -->
|
<!-- 底部分页区 -->
|
||||||
<div class="pagination-container apply-pagination" style="margin-top: 10px; padding-bottom: 20px">
|
<div class="pagination-container" style="margin-top: 10px; padding-bottom: 10px">
|
||||||
<pagination
|
<pagination
|
||||||
v-show="applyTotal > 0"
|
v-show="applyTotal > 0"
|
||||||
:total="applyTotal"
|
:total="applyTotal"
|
||||||
@@ -792,12 +792,10 @@
|
|||||||
@pagination="getSurgicalScheduleList"
|
@pagination="getSurgicalScheduleList"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<!-- 分页与底部操作区之间的间隔 -->
|
|
||||||
<div style="height: 48px"></div>
|
|
||||||
|
|
||||||
<!-- 底部操作区 -->
|
<!-- 底部操作区 -->
|
||||||
<template #footer>
|
<template #footer>
|
||||||
<div class="dialog-footer" style="margin-top: 24px; padding-top: 12px; border-top: 1px solid #ebeef5">
|
<div class="dialog-footer">
|
||||||
<el-button @click="cancelApplyDialog">取消</el-button>
|
<el-button @click="cancelApplyDialog">取消</el-button>
|
||||||
<el-button type="primary" @click="confirmApply">确认</el-button>
|
<el-button type="primary" @click="confirmApply">确认</el-button>
|
||||||
</div>
|
</div>
|
||||||
@@ -832,8 +830,8 @@
|
|||||||
</div>
|
</div>
|
||||||
<div style="padding: 10px">
|
<div style="padding: 10px">
|
||||||
<prescriptionlist :patientInfo="chargePatientInfo" ref="prescriptionRef"
|
<prescriptionlist :patientInfo="chargePatientInfo" ref="prescriptionRef"
|
||||||
:generateSourceEnum="1"
|
:sourceBillNo="chargePatientInfo.sourceBillNo"
|
||||||
:sourceBillNo="chargePatientInfo.sourceBillNo" />
|
:generateSourceEnum="chargePatientInfo.generateSourceEnum" />
|
||||||
<div class="overlay" v-if="disabled"></div>
|
<div class="overlay" v-if="disabled"></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -2352,22 +2350,6 @@ function getRowClassName({ row, rowIndex }) {
|
|||||||
margin-left: 10px;
|
margin-left: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* 手术申请查询弹窗 — 分页与footer间距 */
|
|
||||||
.surgery-apply-dialog :deep(.el-dialog__body) {
|
|
||||||
padding-bottom: 32px;
|
|
||||||
}
|
|
||||||
.surgery-apply-dialog :deep(.el-dialog__footer) {
|
|
||||||
padding-top: 0;
|
|
||||||
}
|
|
||||||
.surgery-apply-dialog :deep(.apply-pagination) {
|
|
||||||
padding-bottom: 24px;
|
|
||||||
margin-bottom: 16px;
|
|
||||||
border-bottom: 1px solid #ebeef5;
|
|
||||||
}
|
|
||||||
.surgery-apply-dialog :deep(.apply-pagination .el-pagination) {
|
|
||||||
margin-right: 80px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 选中行样式 */
|
/* 选中行样式 */
|
||||||
:deep(.el-table .selected-row) {
|
:deep(.el-table .selected-row) {
|
||||||
background-color: #ecf5ff !important;
|
background-color: #ecf5ff !important;
|
||||||
@@ -2378,21 +2360,3 @@ function getRowClassName({ row, rowIndex }) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<style>
|
|
||||||
/* 手术申请查询弹窗 — 非 scoped 确保穿透 teleport */
|
|
||||||
.surgery-apply-dialog .apply-pagination {
|
|
||||||
padding-bottom: 24px !important;
|
|
||||||
margin-bottom: 16px !important;
|
|
||||||
border-bottom: 1px solid #ebeef5 !important;
|
|
||||||
}
|
|
||||||
.surgery-apply-dialog .apply-pagination .el-pagination {
|
|
||||||
margin-right: 80px !important;
|
|
||||||
}
|
|
||||||
.surgery-apply-dialog .el-dialog__body {
|
|
||||||
padding-bottom: 32px !important;
|
|
||||||
}
|
|
||||||
.surgery-apply-dialog .el-dialog__footer {
|
|
||||||
padding-top: 0 !important;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
|
|||||||
Reference in New Issue
Block a user