解决门诊挂号退号费用性质不一致的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

@@ -81,5 +81,11 @@ public class RefundItemDto {
/** 项目名 */ /** 项目名 */
private String itemName; 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"> <el-text size="large" style="display: block; margin-bottom: 15px">
退费日期{{ currentDate }} 退费日期{{ currentDate }}
</el-text> </el-text>
<el-text size="large">费用性质{{ '自费' }}</el-text> <el-text size="large">费用性质{{ getFeeTypeText }}</el-text>
<div class="amount-row"> <div class="amount-row">
<el-text size="large">应退金额</el-text> <el-text size="large">应退金额</el-text>
<el-text size="large" type="primary" class="amount"> <el-text size="large" type="primary" class="amount">
@@ -160,6 +160,14 @@ const props = defineProps({
type: Object, type: Object,
default: undefined, default: undefined,
}, },
medfee_paymtd_code: {
type: Array,
default: () => [],
},
feeType: {
type: String,
default: '',
},
}); });
const { proxy } = getCurrentInstance(); const { proxy } = getCurrentInstance();
@@ -324,6 +332,23 @@ const returnedAmount = computed(() => {
function close() { function close() {
emit('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> </script>
<style lang="scss" scoped> <style lang="scss" scoped>

View File

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

View File

@@ -114,19 +114,18 @@ import { Delete } from '@element-plus/icons-vue';
// 获取费用性质文本 // 获取费用性质文本
const getFeeTypeText = computed(() => { 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); if (props.feeType && props.medfee_paymtd_code && Array.isArray(props.medfee_paymtd_code)) {
return dict ? dict.label : '自费'; const dictItem = props.medfee_paymtd_code.find(item => item.value === props.feeType);
return dictItem ? dictItem.label : '自费';
} }
// 如果只有一个选项,直接返回第一个选项的文本
if (props.medfee_paymtd_code.length === 1) { return '自费'; // 默认值
return props.medfee_paymtd_code[0].label || '自费';
}
return '自费';
}); });
const props = defineProps({ const props = defineProps({
@@ -159,6 +158,10 @@ const props = defineProps({
feeType: { feeType: {
type: String, type: String,
default: '', default: '',
},
contractName: {
type: String,
default: '', // 新增:接收费用性质名称
} }
}); });

View File

@@ -572,7 +572,8 @@
:patientInfo="patientInfo" :patientInfo="patientInfo"
:paymentId="paymentId" :paymentId="paymentId"
:chargeItemIds="chargeItemIdList" :chargeItemIds="chargeItemIdList"
:feeType="(patientInfo && patientInfo.medfeePaymtdCode) || (form && form.value && form.value.contractNo) || ''" :feeType="patientInfo.medfeePaymtdCode || ''"
:contractName="patientInfo.contractName || ''"
:medfee_paymtd_code="medfee_paymtd_code" :medfee_paymtd_code="medfee_paymtd_code"
/> />
<ReprintDialog <ReprintDialog
@@ -1208,7 +1209,11 @@ function handleReturn(row) {
totalAmount.value = row.totalPrice; totalAmount.value = row.totalPrice;
chargeItemIdList.value = row.chargeItemIds.split(','); chargeItemIdList.value = row.chargeItemIds.split(',');
paymentId.value = row.paymentId; 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() { function handleReturnRegister() {