门诊收费退费

This commit is contained in:
Zhang.YC
2025-03-31 11:02:27 +08:00
parent 7c296698aa
commit fd3599ebb0
4 changed files with 273 additions and 111 deletions

View File

@@ -79,7 +79,7 @@ public class OutpatientRefundController {
* @return 操作结果 * @return 操作结果
*/ */
@PostMapping(value = "/refund-payment") @PostMapping(value = "/refund-payment")
public R<?> refundPayment(@RequestParam List<Long> paymentIdList) { public R<?> refundPayment(@RequestBody List<Long> paymentIdList) {
return R.ok(outpatientRefundAppService.refundPayment(paymentIdList)); return R.ok(outpatientRefundAppService.refundPayment(paymentIdList));
} }

View File

@@ -54,6 +54,7 @@ public class EncounterPatientPaymentDto {
/** 支付位置 */ /** 支付位置 */
@Dict(dictTable = "adm_location", dictText = "name", dictCode = "id") @Dict(dictTable = "adm_location", dictText = "name", dictCode = "id")
private Long locationId; private Long locationId;
private String locationId_dictText;
/** 到期时间 */ /** 到期时间 */
private Date expirationDate; private Date expirationDate;

View File

@@ -3,71 +3,130 @@
style="display: flex; justify-content: space-between" style="display: flex; justify-content: space-between"
class="app-container" class="app-container"
> >
<div style="width: 30%"> <el-card style="width: 34%">
<el-table <template #header>
ref="patientListRef" <span style="vertical-align: middle">患者列表</span>
height="700" </template>
:data="patientList" <div style="width: 100%">
row-key="encounterId" <el-input
@cell-click="clickRow" v-model="queryParams.patientName"
highlight-current placeholder="请输入患者名"
width="" clearable
> style="width: 49%; margin-bottom: 10px; margin-right: 10px"
<el-table-column label="病历号" align="center" prop="patientBusNo" /> @keyup.enter="handleQuery"
<el-table-column label="姓名" align="center" prop="patientName" /> >
<el-table-column label="时间" align="center" prop="startTime"> <template #append>
<template #default="scope"> <el-button icon="Search" @click="handleQuery" />
{{ formatDate(scope.row.startTime) }}
</template> </template>
</el-table-column> </el-input>
<el-table-column <el-select
label="收费状态" style="width: 49%; margin-bottom: 10px"
align="center" placeholder="收费状态"
prop="statusEnum_enumText" >
</el-select>
<el-date-picker
v-model="value1"
type="daterange"
range-separator="~"
start-placeholder="开始时间"
end-placeholder="结束时间"
style="width: 100%; margin-bottom: 10px"
/> />
</el-table> <el-table
</div> ref="patientListRef"
height="620"
:data="patientList"
row-key="encounterId"
@cell-click="clickRow"
highlight-current
>
<el-table-column label="病历号" align="center" prop="patientBusNo" />
<el-table-column label="姓名" align="center" prop="patientName" />
<el-table-column label="时间" align="center" prop="startTime">
<template #default="scope">
{{ formatDate(scope.row.startTime) }}
</template>
</el-table-column>
<el-table-column
label="收费状态"
align="center"
prop="statusEnum_enumText"
/>
</el-table>
</div>
</el-card>
<div style="width: 65%"> <div style="width: 65%">
<div></div> <el-card style="margin-bottom: 20px">
<el-button type="primary" @click="addEmr()" :disabled="buttonDisabled" <template #header>
>确认收费</el-button <span style="vertical-align: middle">基本信息</span>
> </template>
<el-button <el-descriptions :column="4">
type="primary" <el-descriptions-item label="姓名:">{{
@click="payToSelt()" patientInfo.patientName
style="margin-left: 20px" }}</el-descriptions-item>
:disabled="buttonDisabled" <el-descriptions-item label="性别:">{{
>医保转自费</el-button patientInfo.genderEnum_enumText
> }}</el-descriptions-item>
<el-button <el-descriptions-item label="年龄:">{{
type="primary" patientInfo.age
@click="patToMedicalInsurance()" }}</el-descriptions-item>
style="margin-left: 20px" <el-descriptions-item label="合同类型:">{{
:disabled="buttonDisabled" patientInfo.categoryEnum_enumText
>自费转医保</el-button }}</el-descriptions-item>
> <el-descriptions-item label="身份证号:">{{
<el-table patientInfo.idCard
ref="chargeListRef" }}</el-descriptions-item>
height="400" <!-- <el-descriptions-item label="手机号">{{ patientInfo.name }}</el-descriptions-item>
:data="chargeList" <el-descriptions-item label="出生日期">{{ patientInfo.name }}</el-descriptions-item> -->
row-key="encounterId" </el-descriptions>
@cell-click="clickRow" </el-card>
v-loading="chargeLoading" <el-card style="min-width: 1100px">
width="" <template #header>
> <span style="vertical-align: middle">收费项目</span>
<el-table-column </template>
label="收费项目" <el-button type="primary" @click="addEmr()" :disabled="buttonDisabled"
align="center" >确认收费</el-button
prop="contextEnum_enumText" >
/> <el-button
<el-table-column type="primary"
label="收费状态" @click="payToSelt()"
align="center" style="margin-left: 20px"
prop="statusEnum_enumText" :disabled="buttonDisabled"
/> >医保转自费</el-button
<el-table-column label="总价" align="center" prop="totalPrice" /> >
<el-table-column label="处方号" align="center" prop="prescriptionNo" /> <el-button
</el-table> type="primary"
@click="patToMedicalInsurance()"
style="margin-left: 20px"
:disabled="buttonDisabled"
>自费转医保</el-button
>
<el-table
ref="chargeListRef"
height="500"
:data="chargeList"
row-key="encounterId"
v-loading="chargeLoading"
width=""
>
<el-table-column
label="收费项目"
align="center"
prop="contextEnum_enumText"
/>
<el-table-column
label="收费状态"
align="center"
prop="statusEnum_enumText"
/>
<el-table-column label="总价" align="center" prop="totalPrice" />
<el-table-column
label="处方号"
align="center"
prop="prescriptionNo"
/>
</el-table>
</el-card>
</div> </div>
</div> </div>
</template> </template>
@@ -92,6 +151,7 @@ const patientList = ref([]);
const chargeList = ref([]); const chargeList = ref([]);
const chargeLoading = ref(false); const chargeLoading = ref(false);
const encounterId = ref(""); const encounterId = ref("");
const patientInfo = ref({});
getPatientList(); getPatientList();
/** /**
* 患者列表 * 患者列表
@@ -106,6 +166,7 @@ function getPatientList() {
* 点击患者列表行 获取处方列表 * 点击患者列表行 获取处方列表
*/ */
function clickRow(row) { function clickRow(row) {
patientInfo.value = row;
chargeLoading.value = true; chargeLoading.value = true;
encounterId.value = row.encounterId; encounterId.value = row.encounterId;
getChargeList(row.encounterId).then((res) => { getChargeList(row.encounterId).then((res) => {
@@ -139,7 +200,10 @@ function patToMedicalInsurance() {
} }
</script> </script>
<style scoped> <style scoped>
::v-deep .el-table__row:hover > td { /* ::v-deep .el-table__row:hover > td {
background-color: #cde5ff !important; /* 设置为透明或其他你想要的颜色 */ background-color: #cde5ff !important;
} } */
/* ::v-deep .el-card__body {
padding: 0 !important;
} */
</style> </style>

View File

@@ -3,57 +3,139 @@
style="display: flex; justify-content: space-between" style="display: flex; justify-content: space-between"
class="app-container" class="app-container"
> >
<div style="width: 30%"> <el-card style="width: 34%">
<el-table <template #header>
ref="patientListRef" <span style="vertical-align: middle">患者列表</span>
height="800" </template>
:data="patientList" <div style="width: 100%">
row-key="encounterId" <el-input
@cell-click="clickRow" v-model="queryParams.patientName"
highlight-current placeholder="请输入患者名"
width="" clearable
> style="width: 49%; margin-bottom: 10px; margin-right: 10px"
<el-table-column label="病历号" align="center" prop="patientBusNo" /> @keyup.enter="handleQuery"
<el-table-column label="姓名" align="center" prop="patientName" /> >
<el-table-column label="时间" align="center" prop="startTime"> <template #append>
<template #default="scope"> <el-button icon="Search" @click="handleQuery" />
{{ formatDate(scope.row.startTime) }}
</template> </template>
</el-table-column> </el-input>
<!-- <el-table-column <el-select
style="width: 49%; margin-bottom: 10px"
placeholder="收费状态"
>
</el-select>
<el-date-picker
v-model="value1"
type="daterange"
range-separator="~"
start-placeholder="开始时间"
end-placeholder="结束时间"
style="width: 100%; margin-bottom: 10px"
/>
<el-table
ref="patientListRef"
height="630"
:data="patientList"
row-key="encounterId"
@cell-click="clickRow"
highlight-current
width=""
>
<el-table-column label="病历号" align="center" prop="patientBusNo" />
<el-table-column label="姓名" align="center" prop="patientName" />
<el-table-column label="时间" align="center" prop="startTime">
<template #default="scope">
{{ formatDate(scope.row.startTime) }}
</template>
</el-table-column>
<!-- <el-table-column
label="收费状态" label="收费状态"
align="center" align="center"
prop="statusEnum_enumText" prop="statusEnum_enumText"
/> --> /> -->
</el-table> </el-table>
</div> </div>
</el-card>
<div style="width: 65%"> <div style="width: 65%">
<div></div> <el-card style="margin-bottom: 20px">
<el-button type="primary" @click="addEmr()" :disabled="buttonDisabled" <template #header>
>确认收费</el-button <span style="vertical-align: middle">基本信息</span>
> </template>
<el-table <el-descriptions :column="4">
ref="chargeListRef" <el-descriptions-item label="就诊号:">
height="400" {{ patientInfo.encounterId }}
:data="chargeList" </el-descriptions-item>
row-key="encounterId" <el-descriptions-item label="姓名:">
@cell-click="clickRow" {{ patientInfo.patientName }}
v-loading="chargeLoading" </el-descriptions-item>
width="" <el-descriptions-item label="性别:">
> {{ patientInfo.genderEnum_enumText }}
<el-table-column </el-descriptions-item>
label="收费项目" <el-descriptions-item label="年龄:">
align="center" {{ patientInfo.age }}
prop="contextEnum_enumText" </el-descriptions-item>
/> <el-descriptions-item label="合同类型:">
<el-table-column {{ patientInfo.categoryEnum_enumText }}
label="收费状态" </el-descriptions-item>
align="center" <el-descriptions-item label="结算时间:">
prop="statusEnum_enumText" {{ patientInfo.billDate }}
/> </el-descriptions-item>
<el-table-column label="总价" align="center" prop="totalPrice" /> <el-descriptions-item label="账单总额:">
<el-table-column label="处方号" align="center" prop="prescriptionNo" /> {{ patientInfo.totalAmount }}
</el-table> </el-descriptions-item>
<el-descriptions-item label="医保支付:">
{{ patientInfo.insurancePrice }}
</el-descriptions-item>
<el-descriptions-item label="自费金额:">
{{ patientInfo.selfPrice }}
</el-descriptions-item>
<el-descriptions-item label="支付方式:">
{{ patientInfo.typeCode_dictText }}
</el-descriptions-item>
<el-descriptions-item label="发票号:">
{{ patientInfo.idCard }}
</el-descriptions-item>
<!-- <el-descriptions-item label="手机号">{{ patientInfo.name }}</el-descriptions-item>
<el-descriptions-item label="出生日期">{{ patientInfo.name }}</el-descriptions-item> -->
</el-descriptions>
</el-card>
<el-card>
<template #header>
<span style="vertical-align: middle">退费单据</span>
</template>
<el-button
type="primary"
@click="handleRefund()"
:disabled="buttonDisabled"
>确认退费</el-button
>
<el-table
ref="chargeListRef"
height="475"
:data="chargeList"
row-key="encounterId"
@cell-click="clickRow"
v-loading="chargeLoading"
width=""
>
<el-table-column label="单据号" align="center" prop="paymentNo" />
<el-table-column
label="付款总额"
align="center"
prop="displayAmount"
/>
<el-table-column
label="处方号"
align="center"
prop="prescriptionNo"
/>
<el-table-column
label="开单科室"
align="center"
prop="locationId_dictText"
/>
</el-table>
</el-card>
</div> </div>
</div> </div>
</template> </template>
@@ -68,6 +150,7 @@ const queryParams = ref({
}); });
const patientList = ref([]); const patientList = ref([]);
const patientInfo = ref({});
const chargeList = ref([]); const chargeList = ref([]);
const chargeLoading = ref(false); const chargeLoading = ref(false);
const encounterId = ref(""); const encounterId = ref("");
@@ -85,6 +168,7 @@ function getPatientList() {
* 点击患者列表行 获取处方列表 * 点击患者列表行 获取处方列表
*/ */
function clickRow(row) { function clickRow(row) {
patientInfo.value = row;
chargeLoading.value = true; chargeLoading.value = true;
encounterId.value = row.encounterId; encounterId.value = row.encounterId;
getRefundList(row.encounterId).then((res) => { getRefundList(row.encounterId).then((res) => {
@@ -94,6 +178,19 @@ function clickRow(row) {
}, 100); }, 100);
}); });
} }
function handleRefund() {
refund(
chargeList.value.map((item) => {
item.id;
})
).then((res) => {
if (res.code == 200) {
proxy.$modal.msgSuccess("操作成功");
}
getPatientList();
});
}
</script> </script>
<style scoped> <style scoped>
::v-deep .el-table__row:hover > td { ::v-deep .el-table__row:hover > td {