bug446,468,541,548
This commit is contained in:
@@ -134,10 +134,10 @@
|
||||
</div>
|
||||
</template>
|
||||
<script setup name="LaboratoryTests">
|
||||
import {getCurrentInstance, onMounted, reactive, ref, watch, computed} from 'vue';
|
||||
import {getCurrentInstance, nextTick, onMounted, reactive, ref, watch, computed} from 'vue';
|
||||
import {patientInfo} from '../../../store/patient.js';
|
||||
import {getApplicationList, saveInspection} from './api';
|
||||
import {getOrgList} from '@/views/doctorstation/components/api.js';
|
||||
import {getDepartmentList} from '@/api/public.js';
|
||||
import {getEncounterDiagnosis} from '../../api.js';
|
||||
import {ElMessage} from 'element-plus';
|
||||
|
||||
@@ -168,6 +168,7 @@ const loading = ref(false);
|
||||
const orgOptions = ref([]);
|
||||
const searchKey = ref('');
|
||||
const totalCount = ref(0);
|
||||
const skipDeptAutoFill = ref(false);
|
||||
|
||||
// 将已加载的全部数据转为 transfer 组件所需的格式
|
||||
const buildTransferData = (records) => {
|
||||
@@ -263,7 +264,31 @@ const form = reactive({
|
||||
otherDiagnosisList: [], //其他断目录
|
||||
});
|
||||
const rules = reactive({});
|
||||
|
||||
const normalizeOrgTreeIds = (nodes) => {
|
||||
if (!Array.isArray(nodes)) return [];
|
||||
return nodes.map((node) => ({
|
||||
...node,
|
||||
id: node.id != null ? String(node.id) : node.id,
|
||||
children: node.children?.length ? normalizeOrgTreeIds(node.children) : undefined,
|
||||
}));
|
||||
};
|
||||
|
||||
const resolveTargetDepartmentId = (rawId) => {
|
||||
if (rawId == null || rawId === '') return '';
|
||||
const node = findTreeItem(orgOptions.value, rawId);
|
||||
return node ? String(node.id) : String(rawId);
|
||||
};
|
||||
|
||||
const applyTargetDepartmentEcho = () => {
|
||||
if (form.targetDepartment) {
|
||||
form.targetDepartment = resolveTargetDepartmentId(form.targetDepartment);
|
||||
}
|
||||
};
|
||||
|
||||
onMounted(() => {
|
||||
getLocationInfo();
|
||||
getDiagnosisList();
|
||||
getList();
|
||||
});
|
||||
/**
|
||||
@@ -292,8 +317,9 @@ const projectWithDepartment = (selectProjectIds, type) => {
|
||||
});
|
||||
}
|
||||
});
|
||||
// 保存用户手动选择的发往科室(提交时需要保留)
|
||||
const manualDept = type === 2 ? form.targetDepartment : '';
|
||||
// 保存用户手动选择/回显的发往科室(提交、编辑回显时需要保留)
|
||||
const manualDept =
|
||||
type === 2 || (isEditMode.value && form.targetDepartment) ? form.targetDepartment : '';
|
||||
// 清空科室
|
||||
form.targetDepartment = '';
|
||||
if (arr.length > 0) {
|
||||
@@ -313,8 +339,8 @@ const projectWithDepartment = (selectProjectIds, type) => {
|
||||
const findItem = findTreeItem(orgOptions.value, obj.orgId);
|
||||
if (!findItem) {
|
||||
// type=2(提交)时,若用户已手动选择发往科室,则允许提交
|
||||
if (type === 2 && manualDept) {
|
||||
form.targetDepartment = manualDept;
|
||||
if ((type === 2 || isEditMode.value) && manualDept) {
|
||||
form.targetDepartment = resolveTargetDepartmentId(manualDept);
|
||||
isRelease = true;
|
||||
} else if (type === 2 && !manualDept) {
|
||||
// 提交时用户未手动选择科室,才提示错误
|
||||
@@ -330,10 +356,10 @@ const projectWithDepartment = (selectProjectIds, type) => {
|
||||
}
|
||||
if (findItem && isRelease) {
|
||||
// 提交时若用户已选「发往科室」,不得用项目默认执行科室覆盖
|
||||
if (type === 2 && manualDept) {
|
||||
form.targetDepartment = manualDept;
|
||||
if ((type === 2 || isEditMode.value) && manualDept) {
|
||||
form.targetDepartment = resolveTargetDepartmentId(manualDept);
|
||||
} else {
|
||||
form.targetDepartment = findItem.id;
|
||||
form.targetDepartment = String(findItem.id);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -343,6 +369,7 @@ const projectWithDepartment = (selectProjectIds, type) => {
|
||||
watch(
|
||||
() => transferValue.value,
|
||||
(newValue) => {
|
||||
if (skipDeptAutoFill.value) return;
|
||||
if (isInitializing.value) return;
|
||||
projectWithDepartment(newValue, 1);
|
||||
}
|
||||
@@ -382,7 +409,11 @@ const applyEditTransferSelection = () => {
|
||||
const uniq = [...new Set(selectedIds)]
|
||||
// 设置初始化标志,防止 transferValue 变化触发 projectWithDepartment 覆盖 descJson 中的科室值
|
||||
isInitializing.value = true
|
||||
skipDeptAutoFill.value = true
|
||||
transferValue.value = uniq
|
||||
nextTick(() => {
|
||||
skipDeptAutoFill.value = false
|
||||
})
|
||||
isInitializing.value = false
|
||||
if (newData.requestFormDetailList.length && uniq.length === 0) {
|
||||
console.warn(
|
||||
@@ -406,6 +437,7 @@ watch(
|
||||
form[key] = obj[key]
|
||||
}
|
||||
})
|
||||
applyTargetDepartmentEcho()
|
||||
} catch (e) {
|
||||
console.error('解析 descJson 失败:', e)
|
||||
}
|
||||
@@ -416,7 +448,14 @@ watch(
|
||||
{ immediate: true, deep: true }
|
||||
)
|
||||
|
||||
// 编辑模式下,applicationListAll 加载完成后重新回显已选项目
|
||||
watch(
|
||||
() => orgOptions.value,
|
||||
() => {
|
||||
applyTargetDepartmentEcho()
|
||||
}
|
||||
)
|
||||
|
||||
// 编辑模式下,项目字典加载完成后重新回显已选项目
|
||||
watch(
|
||||
() => applicationListAll.value,
|
||||
() => {
|
||||
@@ -436,6 +475,7 @@ watch(
|
||||
isInitializing.value = true;
|
||||
transferValue.value = selectedIds;
|
||||
isInitializing.value = false;
|
||||
applyEditTransferSelection();
|
||||
}
|
||||
);
|
||||
|
||||
@@ -488,9 +528,9 @@ const submit = () => {
|
||||
};
|
||||
/** 查询科室 */
|
||||
const getLocationInfo = () => {
|
||||
getOrgList().then((res) => {
|
||||
orgOptions.value = res.data.records;
|
||||
console.log('科室========>', JSON.stringify(orgOptions.value));
|
||||
return getDepartmentList().then((res) => {
|
||||
orgOptions.value = normalizeOrgTreeIds(res.data || []);
|
||||
applyTargetDepartmentEcho();
|
||||
});
|
||||
};
|
||||
// 获取诊断目录
|
||||
|
||||
@@ -804,7 +804,7 @@ function checkUnit(item, row) {
|
||||
}
|
||||
}
|
||||
|
||||
// 行双击打开编辑块,"待保存"和"待签发"均可编辑
|
||||
// 行双击打开编辑块:待保存、待签发医嘱均可编辑;已签发/已完成/停止不允许编辑
|
||||
function clickRowDb(row, column, event) {
|
||||
// 检查点击的是否是复选框
|
||||
if (event && event.target.closest('.el-checkbox')) {
|
||||
@@ -815,14 +815,18 @@ function clickRowDb(row, column, event) {
|
||||
return;
|
||||
}
|
||||
row.showPopover = false;
|
||||
// statusEnum == 1 包含"待保存(无requestId)"和"待签发(有requestId)",均允许编辑
|
||||
if (row.statusEnum == 1) {
|
||||
// 确保治疗类型为字符串,方便与单选框 label 对齐,默认为长期医嘱('1')
|
||||
row.therapyEnum = String(row.therapyEnum ?? '1');
|
||||
row.isEdit = true;
|
||||
const index = prescriptionList.value.findIndex((item) => item.uniqueKey === row.uniqueKey);
|
||||
prescriptionList.value[index] = row;
|
||||
rowIndex.value = index;
|
||||
if (index !== -1) {
|
||||
prescriptionList.value[index] = row;
|
||||
}
|
||||
expandOrder.value = [row.uniqueKey];
|
||||
} else {
|
||||
proxy.$modal.msgWarning('仅待保存或待签发医嘱允许编辑');
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user