Compare commits
29 Commits
develop
...
f17f0e8816
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f17f0e8816 | ||
| 58d4ee969a | |||
|
|
0abc91b118 | ||
|
|
88a13370cb | ||
|
|
ff22b4a30b | ||
|
|
3e57405631 | ||
|
|
2950ad3057 | ||
|
|
f99d4a13d9 | ||
|
|
04572cc965 | ||
|
|
b692360ce6 | ||
|
|
1d2d0cbde9 | ||
|
|
eb0ae8e12a | ||
|
|
f250399383 | ||
|
|
14ecf0ffce | ||
|
|
0b62d49459 | ||
|
|
025963dcae | ||
|
|
65d5b08d73 | ||
|
|
296285b577 | ||
|
|
60d176a806 | ||
|
|
867a6dd28d | ||
|
|
39796189eb | ||
|
|
3301343fd5 | ||
|
|
fd8319204f | ||
|
|
637c7efd94 | ||
|
|
973b61bc28 | ||
|
|
fb33353962 | ||
|
|
ad69578cc3 | ||
|
|
c39c8faa5c | ||
|
|
659db997fd |
@@ -147,8 +147,8 @@ public class OrganizationLocationAppServiceImpl implements IOrganizationLocation
|
|||||||
for (OrganizationLocation organizationLocation : organizationLocationList)
|
for (OrganizationLocation organizationLocation : organizationLocationList)
|
||||||
if (DateTimeUtils.isOverlap(organizationLocation.getStartTime(), organizationLocation.getEndTime(),
|
if (DateTimeUtils.isOverlap(organizationLocation.getStartTime(), organizationLocation.getEndTime(),
|
||||||
orgLoc.getStartTime(), orgLoc.getEndTime())) {
|
orgLoc.getStartTime(), orgLoc.getEndTime())) {
|
||||||
String organizationName =
|
Organization org = organizationService.getById(organizationLocation.getOrganizationId());
|
||||||
organizationService.getById(organizationLocation.getOrganizationId()).getName();
|
String organizationName = org != null ? org.getName() : "未知科室";
|
||||||
return R.fail("当前诊疗:" + activityName + CommonConstants.Common.DASH + orgLoc.getStartTime()
|
return R.fail("当前诊疗:" + activityName + CommonConstants.Common.DASH + orgLoc.getStartTime()
|
||||||
+ CommonConstants.Common.DASH + orgLoc.getEndTime() + "与" + organizationName + "时间冲突");
|
+ CommonConstants.Common.DASH + orgLoc.getEndTime() + "与" + organizationName + "时间冲突");
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -523,7 +523,7 @@ public class AdviceProcessAppServiceImpl implements IAdviceProcessAppService {
|
|||||||
// 处理长期已发放的药品
|
// 处理长期已发放的药品
|
||||||
if (!longMedDispensedList.isEmpty()) {
|
if (!longMedDispensedList.isEmpty()) {
|
||||||
// 生成退药单
|
// 生成退药单
|
||||||
this.creatRefundMedicationList(tempMedDispensedList, procedureIdMap);
|
this.creatRefundMedicationList(longMedDispensedList, procedureIdMap);
|
||||||
}
|
}
|
||||||
// 处理临时已发放药品
|
// 处理临时已发放药品
|
||||||
if (!tempMedDispensedList.isEmpty()) {
|
if (!tempMedDispensedList.isEmpty()) {
|
||||||
@@ -653,7 +653,7 @@ public class AdviceProcessAppServiceImpl implements IAdviceProcessAppService {
|
|||||||
if (!longMedUndispenseList.isEmpty()) {
|
if (!longMedUndispenseList.isEmpty()) {
|
||||||
// 排除已汇总的药品
|
// 排除已汇总的药品
|
||||||
List<MedicationDispense> medicationDispenseList
|
List<MedicationDispense> medicationDispenseList
|
||||||
= tempMedUndispenseList.stream().filter(x -> x.getSummaryNo() == null).toList();
|
= longMedUndispenseList.stream().filter(x -> x.getSummaryNo() == null).toList();
|
||||||
medicationDispenseService
|
medicationDispenseService
|
||||||
.removeByIds(medicationDispenseList.stream().map(MedicationDispense::getId).toList());
|
.removeByIds(medicationDispenseList.stream().map(MedicationDispense::getId).toList());
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -132,6 +132,10 @@ function onCancel() {
|
|||||||
|
|
||||||
// 批量添加
|
// 批量添加
|
||||||
async function onConfirm() {
|
async function onConfirm() {
|
||||||
|
if (!props.organizationId) {
|
||||||
|
proxy.$message.error('请先在左侧选择科室');
|
||||||
|
return;
|
||||||
|
}
|
||||||
if (!formEl) return;
|
if (!formEl) return;
|
||||||
formEl.value.validate(async (valid) => {
|
formEl.value.validate(async (valid) => {
|
||||||
if (!valid) return;
|
if (!valid) return;
|
||||||
|
|||||||
@@ -366,6 +366,10 @@ function handleBlur(row, index) {
|
|||||||
|
|
||||||
// 编辑或 保存当前行
|
// 编辑或 保存当前行
|
||||||
function openSaveImplementDepartment(row) {
|
function openSaveImplementDepartment(row) {
|
||||||
|
if (!organizationId.value) {
|
||||||
|
proxy.$message.error('请先在左侧选择科室');
|
||||||
|
return;
|
||||||
|
}
|
||||||
const params = {
|
const params = {
|
||||||
// 科室id
|
// 科室id
|
||||||
organizationId: organizationId.value,
|
organizationId: organizationId.value,
|
||||||
@@ -452,13 +456,12 @@ function handleNodeClick(res, node) {
|
|||||||
|
|
||||||
// 实际的节点点击处理逻辑
|
// 实际的节点点击处理逻辑
|
||||||
function continueHandleNodeClick(node) {
|
function continueHandleNodeClick(node) {
|
||||||
// 新增按钮是否 disable
|
|
||||||
isAddDisable.value = false;
|
|
||||||
// 检查节点是否有子节点
|
// 检查节点是否有子节点
|
||||||
if (node.data.children && node.data.children.length > 0) {
|
if (node.data.children && node.data.children.length > 0) {
|
||||||
// proxy.$message.warning("不能选择父节点");
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
// 新增按钮是否 disable
|
||||||
|
isAddDisable.value = false;
|
||||||
// 选中科室id
|
// 选中科室id
|
||||||
organizationId.value = node.data.id;
|
organizationId.value = node.data.id;
|
||||||
// 获取 右侧 table 信息
|
// 获取 右侧 table 信息
|
||||||
|
|||||||
@@ -246,7 +246,8 @@
|
|||||||
<el-input-number :min="0" v-model="scope.row.doseQuantity" controls-position="right"
|
<el-input-number :min="0" v-model="scope.row.doseQuantity" controls-position="right"
|
||||||
:controls="false" style="width: 70px; margin-right: 20px"
|
:controls="false" style="width: 70px; margin-right: 20px"
|
||||||
:ref="(el) => (inputRefs.doseQuantity = el)" @input="convertValues(scope.row, scope.$index)"
|
:ref="(el) => (inputRefs.doseQuantity = el)" @input="convertValues(scope.row, scope.$index)"
|
||||||
@keyup.enter.prevent="handleEnter('doseQuantity', scope.row, scope.$index)" />
|
@keyup.enter.prevent="handleEnter('doseQuantity', scope.row, scope.$index)"
|
||||||
|
@change="calculateTotalAmount(scope.row, scope.$index)"/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<!-- 剂量单位 -->
|
<!-- 剂量单位 -->
|
||||||
<el-select v-model="scope.row.minUnitCode" style="width: 70px; margin-right: 20px" placeholder=" ">
|
<el-select v-model="scope.row.minUnitCode" style="width: 70px; margin-right: 20px" placeholder=" ">
|
||||||
@@ -294,7 +295,8 @@
|
|||||||
}
|
}
|
||||||
// inputRefs.rateCode.blur();
|
// inputRefs.rateCode.blur();
|
||||||
}
|
}
|
||||||
" :ref="(el) => (inputRefs.rateCode = el)">
|
" :ref="(el) => (inputRefs.rateCode = el)"
|
||||||
|
@change="calculateTotalAmount(scope.row, scope.$index)">
|
||||||
<el-option v-for="dict in rate_code" @click="() => (scope.row.rateCode_dictText = dict.label)"
|
<el-option v-for="dict in rate_code" @click="() => (scope.row.rateCode_dictText = dict.label)"
|
||||||
:key="dict.value" :label="dict.label" :value="dict.value" />
|
:key="dict.value" :label="dict.label" :value="dict.value" />
|
||||||
</el-select>
|
</el-select>
|
||||||
|
|||||||
@@ -627,10 +627,10 @@ function getList() {
|
|||||||
pageSize: 100,
|
pageSize: 100,
|
||||||
encounterId: props.patientInfo.encounterId
|
encounterId: props.patientInfo.encounterId
|
||||||
}).then((res) => {
|
}).then((res) => {
|
||||||
|
console.log('[手术申请] 列表查询 - encounterId:', props.patientInfo.encounterId, '返回记录数:', res.data?.records?.length || 0)
|
||||||
surgeryList.value = res.data.records || []
|
surgeryList.value = res.data.records || []
|
||||||
}).catch(error => {
|
}).catch(error => {
|
||||||
console.error('获取手术列表失败:', error)
|
console.warn('[手术申请] 列表加载失败(可能无权限或接口异常):', error?.message || error)
|
||||||
proxy.$modal.msgError('数据加载失败,请稍后重试')
|
|
||||||
surgeryList.value = []
|
surgeryList.value = []
|
||||||
}).finally(() => {
|
}).finally(() => {
|
||||||
loading.value = false
|
loading.value = false
|
||||||
@@ -1127,35 +1127,39 @@ function submitForm() {
|
|||||||
// 新增手术
|
// 新增手术
|
||||||
addSurgery(form.value).then((res) => {
|
addSurgery(form.value).then((res) => {
|
||||||
if (res.code === 200) {
|
if (res.code === 200) {
|
||||||
proxy.$modal.msgSuccess(res.msg || '新增成功')
|
proxy.$modal.msgSuccess('手术申请提交成功!')
|
||||||
// 保存麻醉方式
|
// 保存麻醉方式
|
||||||
sessionStorage.setItem('anesthesiaType', form.value.anesthesiaTypeEnum)
|
sessionStorage.setItem('anesthesiaType', form.value.anesthesiaTypeEnum)
|
||||||
open.value = false
|
open.value = false
|
||||||
|
// 延迟刷新列表,确保后端数据已提交
|
||||||
|
setTimeout(() => {
|
||||||
getList()
|
getList()
|
||||||
|
}, 300)
|
||||||
emit('saved') // 🔧 触发保存事件,通知父组件刷新医嘱列表
|
emit('saved') // 🔧 触发保存事件,通知父组件刷新医嘱列表
|
||||||
} else {
|
} else {
|
||||||
proxy.$modal.msgError(res.msg || '新增手术失败,请检查表单信息')
|
proxy.$modal.msgError(res.msg || '新增手术失败,请检查表单信息')
|
||||||
}
|
}
|
||||||
}).catch(error => {
|
}).catch(error => {
|
||||||
console.error('新增手术失败:', error)
|
console.warn('[手术申请] 新增接口异常:', error?.message || error)
|
||||||
proxy.$modal.msgError('新增手术失败,请检查表单信息')
|
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
// 修改手术
|
// 修改手术
|
||||||
updateSurgery(form.value).then((res) => {
|
updateSurgery(form.value).then((res) => {
|
||||||
if (res.code === 200) {
|
if (res.code === 200) {
|
||||||
proxy.$modal.msgSuccess(res.msg || '修改成功')
|
proxy.$modal.msgSuccess('手术申请修改成功!')
|
||||||
// 保存麻醉方式
|
// 保存麻醉方式
|
||||||
sessionStorage.setItem('anesthesiaType', form.value.anesthesiaTypeEnum)
|
sessionStorage.setItem('anesthesiaType', form.value.anesthesiaTypeEnum)
|
||||||
open.value = false
|
open.value = false
|
||||||
|
// 延迟刷新列表,确保后端数据已提交
|
||||||
|
setTimeout(() => {
|
||||||
getList()
|
getList()
|
||||||
|
}, 300)
|
||||||
emit('saved') // 🔧 触发保存事件,通知父组件刷新医嘱列表
|
emit('saved') // 🔧 触发保存事件,通知父组件刷新医嘱列表
|
||||||
} else {
|
} else {
|
||||||
proxy.$modal.msgError(res.msg || '更新手术失败,请检查表单信息')
|
proxy.$modal.msgError(res.msg || '更新手术失败,请检查表单信息')
|
||||||
}
|
}
|
||||||
}).catch(error => {
|
}).catch(error => {
|
||||||
console.error('更新手术失败:', error)
|
console.warn('[手术申请] 更新接口异常:', error?.message || error)
|
||||||
proxy.$modal.msgError('更新手术失败,请检查表单信息')
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -152,7 +152,7 @@
|
|||||||
</el-tab-pane>
|
</el-tab-pane>
|
||||||
<el-tab-pane label="手术申请" name="surgery">
|
<el-tab-pane label="手术申请" name="surgery">
|
||||||
<surgeryApplication :patientInfo="patientInfo" :activeTab="activeTab" ref="surgeryRef"
|
<surgeryApplication :patientInfo="patientInfo" :activeTab="activeTab" ref="surgeryRef"
|
||||||
@saved="() => prescriptionRef?.getListInfo()" />
|
@saved="() => { prescriptionRef?.getListInfo(); surgeryRef?.getList() }" />
|
||||||
</el-tab-pane>
|
</el-tab-pane>
|
||||||
<el-tab-pane label="电子处方" name="eprescription">
|
<el-tab-pane label="电子处方" name="eprescription">
|
||||||
<eprescriptionlist :patientInfo="patientInfo" ref="eprescriptionRef" />
|
<eprescriptionlist :patientInfo="patientInfo" ref="eprescriptionRef" />
|
||||||
|
|||||||
@@ -1404,6 +1404,10 @@ async function handleChargeCharge(row) {
|
|||||||
|
|
||||||
// 关闭计费弹窗
|
// 关闭计费弹窗
|
||||||
function closeChargeDialog() {
|
function closeChargeDialog() {
|
||||||
|
// 先关闭子组件中所有悬浮的字典弹窗,避免主弹窗关闭后残留
|
||||||
|
if (prescriptionRef.value && prescriptionRef.value.closeAllPopovers) {
|
||||||
|
prescriptionRef.value.closeAllPopovers()
|
||||||
|
}
|
||||||
showChargeDialog.value = false
|
showChargeDialog.value = false
|
||||||
chargePatientInfo.value = {}
|
chargePatientInfo.value = {}
|
||||||
chargeSurgeryInfo.value = {}
|
chargeSurgeryInfo.value = {}
|
||||||
|
|||||||
Reference in New Issue
Block a user