解决门诊挂号退号费用性质不一致的bug

This commit is contained in:
Auora
2025-11-14 15:41:30 +08:00
parent 8b848f787a
commit 0610ba7cb5
5 changed files with 57 additions and 14 deletions

View File

@@ -82,4 +82,10 @@ public class RefundItemDto {
/** 项目名 */
private String itemName;
/** 费用支付方式编码 */
private String medfeePaymtdCode;
/** 费用类型 */
private String feeType;
}

View File

@@ -11,7 +11,7 @@
<el-text size="large" style="display: block; margin-bottom: 15px">
退费日期{{ currentDate }}
</el-text>
<el-text size="large">费用性质{{ '自费' }}</el-text>
<el-text size="large">费用性质{{ getFeeTypeText }}</el-text>
<div class="amount-row">
<el-text size="large">应退金额</el-text>
<el-text size="large" type="primary" class="amount">
@@ -160,6 +160,14 @@ const props = defineProps({
type: Object,
default: undefined,
},
medfee_paymtd_code: {
type: Array,
default: () => [],
},
feeType: {
type: String,
default: '',
},
});
const { proxy } = getCurrentInstance();
@@ -324,6 +332,23 @@ const returnedAmount = computed(() => {
function close() {
emit('close');
}
// 获取费用性质文本
const getFeeTypeText = computed(() => {
if (!props.medfee_paymtd_code || !Array.isArray(props.medfee_paymtd_code)) {
return '自费';
}
// 如果有feeType根据feeType查找对应的文本
if (props.feeType) {
const dict = props.medfee_paymtd_code.find(item => item.value === props.feeType);
return dict ? dict.label : '自费';
}
// 如果只有一个选项,直接返回第一个选项的文本
if (props.medfee_paymtd_code.length === 1) {
return props.medfee_paymtd_code[0].label || '自费';
}
return '自费';
});
</script>
<style lang="scss" scoped>

View File

@@ -178,6 +178,8 @@
:paymentId="paymentId"
:chargeItemIds="chargeItemIdList"
:details="details"
:medfee_paymtd_code="medfee_paymtd_code"
:feeType="patientInfo.medfeePaymtdCode"
/>
</div>
</template>
@@ -197,6 +199,8 @@ import RefundDialog from './components/refundDialog.vue';
import Decimal from 'decimal.js';
const { proxy } = getCurrentInstance();
// 获取费用性质字典
const { medfee_paymtd_code } = proxy.useDict('medfee_paymtd_code');
const queryParams = ref({
pageNum: 1,
pageSize: 50,

View File

@@ -114,19 +114,18 @@ import { Delete } from '@element-plus/icons-vue';
// 获取费用性质文本
const getFeeTypeText = computed(() => {
if (!props.medfee_paymtd_code || !Array.isArray(props.medfee_paymtd_code)) {
return '自费';
// 优先使用从挂号记录传递过来的费用性质名称
if (props.contractName) {
return props.contractName;
}
// 如果有feeType根据feeType查找对应的文本
if (props.feeType) {
const dict = props.medfee_paymtd_code.find(item => item.value === props.feeType);
return dict ? dict.label : '自费';
// 如果没有传递名称,则根据费用性质代码查找
if (props.feeType && props.medfee_paymtd_code && Array.isArray(props.medfee_paymtd_code)) {
const dictItem = props.medfee_paymtd_code.find(item => item.value === props.feeType);
return dictItem ? dictItem.label : '自费';
}
// 如果只有一个选项,直接返回第一个选项的文本
if (props.medfee_paymtd_code.length === 1) {
return props.medfee_paymtd_code[0].label || '自费';
}
return '自费';
return '自费'; // 默认值
});
const props = defineProps({
@@ -159,6 +158,10 @@ const props = defineProps({
feeType: {
type: String,
default: '',
},
contractName: {
type: String,
default: '', // 新增:接收费用性质名称
}
});

View File

@@ -572,7 +572,8 @@
:patientInfo="patientInfo"
:paymentId="paymentId"
:chargeItemIds="chargeItemIdList"
:feeType="(patientInfo && patientInfo.medfeePaymtdCode) || (form && form.value && form.value.contractNo) || ''"
:feeType="patientInfo.medfeePaymtdCode || ''"
:contractName="patientInfo.contractName || ''"
:medfee_paymtd_code="medfee_paymtd_code"
/>
<ReprintDialog
@@ -1208,7 +1209,11 @@ function handleReturn(row) {
totalAmount.value = row.totalPrice;
chargeItemIdList.value = row.chargeItemIds.split(',');
paymentId.value = row.paymentId;
console.log(paymentId.value);
// 从挂号记录中获取正确的费用性质
patientInfo.value.medfeePaymtdCode = row.contractNo; // 使用挂号记录中的费用性质代码
patientInfo.value.contractName = row.contractName; // 保存费用性质名称用于显示
console.log('退号费用性质:', row.contractNo, row.contractName);
}
function handleReturnRegister() {