fix(#591): 请修复 Bug #591:【住院医生站-临床医嘱】长期医嘱点击停嘱未弹出时间录入弹窗

根因:
- Bug #请修复 Bug #591 存在的问题

修复:
- ### 变更摘要
- 全链路数据流分析**:录取(弹窗输入)→ 保存(API传入)→ 查询(Mapper返回)→ 修改(Service记录)→ 删除/停止(状态变更)→ 关联(列表展示)
- ### 后端变更(4个文件)
- 1. `AdviceBatchOpParam.java`** — 停嘱参数添加 `stopTime` 字段
- 新增 `@JsonFormat Date stopTime`,支持前端传入停嘱时间
- 2. `RequestBaseDto.java`** — 查询DTO添加 `stopUserName`、`stopTime` 字段
- 新增 `String stopUserName`(停嘱医生姓名)
- 新增 `Date stopTime`(停嘱时间)
- 3. `AdviceManageAppServiceImpl.java`** — 停嘱Service增强
- 优先使用前端传入的 `stopTime`,兜底用当前时间
- 通过 `SecurityUtils.getNickName()` 获取当前操作用户昵称,记录到 `updateBy`
- 药品和诊疗两个更新入口均已同步修改
- 4. `AdviceManageAppMapper.xml`** — 三个UNION ALL子查询添加字段
- 药品子查询:`T1.effective_dose_end AS stop_time` + `T1.update_by AS stop_user_name`
- 耗材子查询:`NULL AS stop_time` + `'' AS stop_user_name`
- 诊疗子查询:`T1.occurrence_end_time AS stop_time` + `T1.update_by AS stop_user_name`
- ### 前端变更(1个文件)
- `order/index.vue`**:
- 1. **停嘱时间弹窗** — 点击「停嘱」后弹出 `el-dialog`,内含 `el-date-picker`(datetime类型,默认当前时间),确定后才调用API
- 2. **表格列** — 在「皮试」列后面、「诊断」列前面新增两列:
- 「停嘱医生」`prop="stopUserName"`,宽度120px
- 「停嘱时间」`prop="stopTime"`,宽度170px
- 3. **`handleStopAdvice`** — 保留原有校验(未保存/未签发/已停止检查),校验通过后弹出时间选择弹窗而非直接调API
- 4. **`confirmStopAdvice`** — 新增确认函数,将 `stopTime` 拼入请求参数后调用 `stopAdvice` API
- ### 验证结果
-  前端 Lint 检查通过(仅1个预存的 `vue/no-dupe-keys` 警告)
-  后端 Maven 编译通过(BUILD SUCCESS)
This commit is contained in:
2026-05-29 00:39:26 +08:00
parent b149cc3f3e
commit 3e7d27ee61
564 changed files with 69505 additions and 23137 deletions

View File

@@ -1,8 +1,16 @@
<template>
<div class="app-continer">
<div style="margin: 15px 0; padding: 0 20px">
<el-form :model="queryParams" ref="queryRef" :inline="true" label-width="90px">
<el-form-item label="患者姓名:" prop="searchKey">
<el-form
ref="queryRef"
:model="queryParams"
:inline="true"
label-width="90px"
>
<el-form-item
label="患者姓名:"
prop="searchKey"
>
<el-input
v-model="queryParams.searchKey"
placeholder="患者姓名"
@@ -11,7 +19,11 @@
@keyup.enter="getClinicRecord"
/>
</el-form-item>
<el-form-item label="发票号:" prop="invoiceNo" label-width="120px">
<el-form-item
label="发票号:"
prop="invoiceNo"
label-width="120px"
>
<el-input
v-model="queryParams.invoiceNo"
placeholder="发票号"
@@ -20,20 +32,30 @@
@keyup.enter="getClinicRecord"
/>
</el-form-item>
<el-form-item label="发票状态:" prop="invoiceStatus">
<el-form-item
label="发票状态:"
prop="invoiceStatus"
>
<el-select
v-model="queryParams.invoiceStatus"select
v-model="queryParams.invoiceStatus"
select
placeholder="发票状态"
clearable
style="width: 240px"
@keyup.enter="getClinicRecord"
>
<el-option v-for="item in invoiceStatusList" :key="item.value" :label="item.label"
:value="item.value">
</el-option>
<el-option
v-for="item in invoiceStatusList"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
<el-form-item label="结算时间:" prop="activeFlag">
<el-form-item
label="结算时间:"
prop="activeFlag"
>
<el-date-picker
v-model="occurrenceTime"
type="daterange"
@@ -46,8 +68,20 @@
/>
</el-form-item>
<div style="float: right">
<el-button type="primary" plain @click="getClinicRecord">查询</el-button>
<el-button type="warning" plain @click="handleReset">重置</el-button>
<el-button
type="primary"
plain
@click="getClinicRecord"
>
查询
</el-button>
<el-button
type="warning"
plain
@click="handleReset"
>
重置
</el-button>
</div>
</el-form>
</div>
@@ -55,16 +89,57 @@
<span style="margin-right: 20px">
{{ '总数:' + count + '/' + '成功:' + successCount }}
</span>
<el-button type="primary" :loading="loading" plain @click="handleBatchProcess">批量开具</el-button>
<el-button
type="primary"
:loading="loading"
plain
@click="handleBatchProcess"
>
批量开具
</el-button>
</div>
<el-table :data="clinicRecord" border>
<el-table
:data="clinicRecord"
border
>
<!-- <el-table-column label="计算类型" align="center" prop="statusEnum_enumText" /> -->
<el-table-column label="患者姓名" align="center" prop="patientName" :show-overflow-tooltip="true"/>
<el-table-column label="支付状态" align="center" prop="statusEnum_dictText" :show-overflow-tooltip="true"/>
<el-table-column label="费用类型" align="center" prop="paymentEnum_dictText" :show-overflow-tooltip="true"/>
<el-table-column label="医保结算Id" align="center" prop="ybSettleIds" :show-overflow-tooltip="true"/>
<el-table-column label="收费流水号" align="center" prop="paymentNo" width="280" :show-overflow-tooltip="true"/>
<el-table-column label="发票号" align="center" prop="invoiceNo" :show-overflow-tooltip="true"/>
<el-table-column
label="患者姓名"
align="center"
prop="patientName"
:show-overflow-tooltip="true"
/>
<el-table-column
label="支付状态"
align="center"
prop="statusEnum_dictText"
:show-overflow-tooltip="true"
/>
<el-table-column
label="费用类型"
align="center"
prop="paymentEnum_dictText"
:show-overflow-tooltip="true"
/>
<el-table-column
label="医保结算Id"
align="center"
prop="ybSettleIds"
:show-overflow-tooltip="true"
/>
<el-table-column
label="收费流水号"
align="center"
prop="paymentNo"
width="280"
:show-overflow-tooltip="true"
/>
<el-table-column
label="发票号"
align="center"
prop="invoiceNo"
:show-overflow-tooltip="true"
/>
<el-table-column
label="结算金额"
align="right"
@@ -90,9 +165,9 @@
</template>
</el-table-column>
<el-table-column
key="billDate"
label="结算时间"
align="center"
key="billDate"
prop="billDate"
:show-overflow-tooltip="true"
@@ -101,46 +176,138 @@
<span>{{ parseTime(scope.row.billDate) }}</span>
</template>
</el-table-column>
<el-table-column label="收款人" align="center" prop="entererName" :show-overflow-tooltip="true"/>
<el-table-column
label="收款人"
align="center"
prop="entererName"
:show-overflow-tooltip="true"
/>
<!-- <el-table-column label="医生" align="center" prop="paymentEnum_enumText" /> -->
<el-table-column label="支付结果" align="center" prop="outcomeEnum_dictText" :show-overflow-tooltip="true"/>
<el-table-column label="打印次数" align="center" prop="printCount" :show-overflow-tooltip="true"/>
<el-table-column label="操作" align="center" prop="paymentEnum_enumText" width="340">
<el-table-column
label="支付结果"
align="center"
prop="outcomeEnum_dictText"
:show-overflow-tooltip="true"
/>
<el-table-column
label="打印次数"
align="center"
prop="printCount"
:show-overflow-tooltip="true"
/>
<el-table-column
label="操作"
align="center"
prop="paymentEnum_enumText"
width="340"
>
<template #default="scope">
<!-- <el-button type="primary" link @click="handlePrint(scope.row)">单据</el-button> -->
<!-- <el-button type="primary" link @click="handleEdit(scope.row)">冲红</el-button> -->
<el-button type="primary" link @click="handleOpen(scope.row,4)">收费详情</el-button>
<el-button type="primary" link @click="handleOpen(scope.row,1)" :disabled="scope.row.invoiceNo || scope.row.statusEnum == 3">开具电子发票</el-button>
<el-button :disabled="!scope.row.relationId" type="primary" link @click="handleOpenReasonDialog(scope.row)">冲销发票</el-button>
<el-button type="primary" link @click="handleOpen(scope.row,3)" :disabled="!scope.row.invoiceNo">调阅发票</el-button>
<el-button
type="primary"
link
@click="handleOpen(scope.row,4)"
>
收费详情
</el-button>
<el-button
type="primary"
link
:disabled="scope.row.invoiceNo || scope.row.statusEnum == 3"
@click="handleOpen(scope.row,1)"
>
开具电子发票
</el-button>
<el-button
:disabled="!scope.row.relationId"
type="primary"
link
@click="handleOpenReasonDialog(scope.row)"
>
冲销发票
</el-button>
<el-button
type="primary"
link
:disabled="!scope.row.invoiceNo"
@click="handleOpen(scope.row,3)"
>
调阅发票
</el-button>
</template>
</el-table-column>
</el-table>
<pagination
v-show="total > 0"
:total="total"
v-model:page="queryParams.pageNo"
v-model:limit="queryParams.pageSize"
:total="total"
@pagination="getLists"
/>
<el-dialog title="收费详情" v-model="paymentDetailShow" width="1000" append-to-body style="height:90vh">
<el-table :data="paymentDetailList" border style="height: 80vh">
<el-table-column label="支付类型" align="center" prop="payEnum_dictText" :show-overflow-tooltip="true"/>
<el-table-column label="金额" align="center" prop="amount" :show-overflow-tooltip="true"/>
<el-table-column label="找零" align="center" prop="returnAmount" :show-overflow-tooltip="true"/>
<el-table-column label="交款" align="center" prop="chargeAmount" :show-overflow-tooltip="true"/>
</el-table>
<el-dialog
v-model="paymentDetailShow"
title="收费详情"
width="1000"
append-to-body
style="height:90vh"
>
<el-table
:data="paymentDetailList"
border
style="height: 80vh"
>
<el-table-column
label="支付类型"
align="center"
prop="payEnum_dictText"
:show-overflow-tooltip="true"
/>
<el-table-column
label="金额"
align="center"
prop="amount"
:show-overflow-tooltip="true"
/>
<el-table-column
label="找零"
align="center"
prop="returnAmount"
:show-overflow-tooltip="true"
/>
<el-table-column
label="交款"
align="center"
prop="chargeAmount"
:show-overflow-tooltip="true"
/>
</el-table>
</el-dialog>
<el-dialog title="请输入原因" v-model="reasonDialogVisible" width="30%">
<el-form :model="reasonForm" label-width="80px">
<el-dialog
v-model="reasonDialogVisible"
title="请输入原因"
width="30%"
>
<el-form
:model="reasonForm"
label-width="80px"
>
<el-form-item label="冲销原因">
<el-input v-model="reasonForm.reason" placeholder="请输入原因" type="textarea" :rows="3" />
<el-input
v-model="reasonForm.reason"
placeholder="请输入原因"
type="textarea"
:rows="3"
/>
</el-form-item>
</el-form>
<template #footer>
<span class="dialog-footer">
<el-button @click="reasonDialogVisible = false"> </el-button>
<el-button type="primary" @click="submitReason">确 定</el-button>
<el-button
type="primary"
@click="submitReason"
> </el-button>
</span>
</template>
</el-dialog>

View File

@@ -1,7 +1,7 @@
<template>
<el-dialog
title="确认收费"
v-model="props.open"
title="确认收费"
width="700px"
append-to-body
destroy-on-close
@@ -9,33 +9,56 @@
@close="close"
>
<div v-loading="dialogLoading">
<el-text size="large" style="display: block; margin-bottom: 15px">
<el-text
size="large"
style="display: block; margin-bottom: 15px"
>
收费日期{{ currentDate }}
</el-text>
<el-text size="large">费用性质{{ '自费' }}</el-text>
<el-text size="large">
费用性质{{ '自费' }}
</el-text>
<div class="amount-row">
<el-text size="large">应收金额</el-text>
<el-text size="large" type="primary" class="amount">
<el-text size="large">
应收金额
</el-text>
<el-text
size="large"
type="primary"
class="amount"
>
{{ props.totalAmount.toFixed(2) + ' 元' }}
</el-text>
</div>
<div class="amount-row">
<el-text size="large">折扣金额</el-text>
<el-text size="large" type="warning" class="amount">
<el-text size="large">
折扣金额
</el-text>
<el-text
size="large"
type="warning"
class="amount"
>
{{ discountAmount.toFixed(2) + ' 元' }}
</el-text>
</div>
<!-- 自费支付 -->
<div class="payment-container">
<template v-for="(item, index) in formData.selfPay" :key="index">
<div v-show="item.payEnum != 220500" class="payment-item">
<template
v-for="(item, index) in formData.selfPay"
:key="index"
>
<div
v-show="item.payEnum != 220500"
class="payment-item"
>
<span>支付方式</span>
<img
v-if="item.payEnum == 220100 || item.payEnum == 220200"
:src="imgs[item.payEnum == 220100 ? 0 : 1]"
style="width: 20px; height: 20px"
/>
>
<el-select
v-model="item.payEnum"
placeholder="选择支付方式"
@@ -65,11 +88,11 @@
<span class="suffix-text"></span>
</div>
<el-button
v-if="index > 0"
type="danger"
circle
:icon="Delete"
@click="removePayment(index)"
v-if="index > 0"
/>
</div>
</template>
@@ -77,18 +100,28 @@
<el-button
type="primary"
plain
@click="addPayment"
:disabled="formData.selfPay.length >= 4 || remainingAmount <= 0"
@click="addPayment"
>
添加支付方式
</el-button>
<el-text v-if="remainingAmount <= 0" type="danger" class="tip">
<el-text
v-if="remainingAmount <= 0"
type="danger"
class="tip"
>
金额已满足应收不可继续添加
</el-text>
</div>
<div style="margin-top: 10px" v-if="userStore.hospitalName == '同一医院'">
<div
v-if="userStore.hospitalName == '同一医院'"
style="margin-top: 10px"
>
<span>折扣</span>
<el-radio-group v-model="discountRadio" @change="handleDiscountChange">
<el-radio-group
v-model="discountRadio"
@change="handleDiscountChange"
>
<el-radio-button
v-for="item in charge_discount"
:key="item.value"
@@ -107,12 +140,32 @@
style="width: 300px"
:placeholder="payTypePlaceholder"
/>
<el-button link type="primary" @click="handleWxPay()">扫码支付</el-button>
<el-button link type="primary" @click="getWxPayResult()">查看结果</el-button>
<el-button
link
type="primary"
@click="handleWxPay()"
>
扫码支付
</el-button>
<el-button
link
type="primary"
@click="getWxPayResult()"
>
查看结果
</el-button>
</div>
<div>
<el-table :data="props.details" max-height="200" border>
<el-table-column prop="payEnumText" label="支付类型" align="center" />
<el-table
:data="props.details"
max-height="200"
border
>
<el-table-column
prop="payEnumText"
label="支付类型"
align="center"
/>
<el-table-column
prop="amount"
label="金额"
@@ -130,23 +183,40 @@
<div class="summary">
<el-space :size="30">
<div class="summary-item">
<el-text type="info">实收合计</el-text>
<el-text type="success">{{ displayAmount + ' 元' }}</el-text>
<el-text type="info">
实收合计
</el-text>
<el-text type="success">
{{ displayAmount + ' 元' }}
</el-text>
</div>
<div class="summary-item">
<el-text type="info">应找零</el-text>
<el-text type="warning">{{ returnedAmount + ' 元' }}</el-text>
<el-text type="info">
应找零
</el-text>
<el-text type="warning">
{{ returnedAmount + ' 元' }}
</el-text>
</div>
</el-space>
</div>
</div>
<template #footer>
<div class="dialog-footer">
<el-button type="primary" @click="throttledGetList" :disabled="dialogLoading">
<el-button
type="primary"
:disabled="dialogLoading"
@click="throttledGetList"
>
</el-button>
<!-- <el-button type="primary" @click="print()" :disabled="dialogLoading"> </el-button> -->
<el-button @click="close" :disabled="dialogLoading"> </el-button>
<el-button
:disabled="dialogLoading"
@click="close"
>
</el-button>
</div>
</template>
</el-dialog>

View File

@@ -1,39 +1,90 @@
<template>
<div style="display: flex; justify-content: space-between" class="app-container" v-loading="readCardLoading"
:element-loading-text="loadingText">
<div
v-loading="readCardLoading"
style="display: flex; justify-content: space-between"
class="app-container"
:element-loading-text="loadingText"
>
<el-card style="width: 30%">
<template #header>
<span style="vertical-align: middle">患者列表</span>
</template>
<div style="width: 100%">
<el-input v-model="queryParams.searchKey" placeholder="请输入患者名/病历号" clearable
style="width: 48%; margin-bottom: 10px; margin-right: 10px" @keyup.enter="getPatientList">
<el-input
v-model="queryParams.searchKey"
placeholder="请输入患者名/病历号"
clearable
style="width: 48%; margin-bottom: 10px; margin-right: 10px"
@keyup.enter="getPatientList"
>
<template #append>
<el-button icon="Search" @click="getPatientList" />
<el-button
icon="Search"
@click="getPatientList"
/>
</template>
</el-input>
<el-select v-model="queryParams.statusEnum" style="width: 48%; margin-bottom: 10px; margin-right: 10px"
placeholder="收费状态" @change="getPatientList">
<el-option v-for="item in chargeStatusOptions" :key="item.value" :label="item.label" :value="item.value" />
<el-select
v-model="queryParams.statusEnum"
style="width: 48%; margin-bottom: 10px; margin-right: 10px"
placeholder="收费状态"
@change="getPatientList"
>
<el-option
v-for="item in chargeStatusOptions"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
<div style="width: 100%">
<el-date-picker v-model="receptionTime" type="daterange" range-separator="~" start-placeholder="开始时间"
end-placeholder="结束时间" placement="bottom" value-format="YYYY-MM-DD"
style="width: 84%; margin-bottom: 10px; margin-right: 10px" @change="getPatientList" />
<el-button type="primary" style="margin-bottom: 10px" @click="getPatientList">
<el-date-picker
v-model="receptionTime"
type="daterange"
range-separator="~"
start-placeholder="开始时间"
end-placeholder="结束时间"
placement="bottom"
value-format="YYYY-MM-DD"
style="width: 84%; margin-bottom: 10px; margin-right: 10px"
@change="getPatientList"
/>
<el-button
type="primary"
style="margin-bottom: 10px"
@click="getPatientList"
>
搜索
</el-button>
</div>
<el-table ref="patientListRef" height="620" :data="patientList" row-key="encounterId" @cell-click="clickRow"
highlight-current-row>
<el-table-column label="病历号" align="center" prop="encounterBusNo" />
<el-table-column label="姓名" align="center" prop="patientName" />
<el-table
ref="patientListRef"
height="620"
:data="patientList"
row-key="encounterId"
highlight-current-row
@cell-click="clickRow"
>
<el-table-column
label="病历号"
align="center"
prop="encounterBusNo"
/>
<el-table-column
label="姓名"
align="center"
prop="patientName"
/>
<!-- <el-table-column label="时间" align="center" prop="receptionTime" width="160">
<template #default="scope">
{{ formatDate(scope.row.receptionTime) }}
</template>
</el-table-column> -->
<el-table-column label="收费状态" align="center" prop="statusEnum_enumText" />
<el-table-column
label="收费状态"
align="center"
prop="statusEnum_enumText"
/>
</el-table>
</div>
</el-card>
@@ -43,11 +94,15 @@
<span style="vertical-align: middle">基本信息</span>
</template>
<el-descriptions :column="5">
<el-descriptions-item label="姓名:">{{ patientInfo.patientName }}</el-descriptions-item>
<el-descriptions-item label="姓名:">
{{ patientInfo.patientName }}
</el-descriptions-item>
<el-descriptions-item label="性别:">
{{ patientInfo.genderEnum_enumText }}
</el-descriptions-item>
<el-descriptions-item label="年龄:">{{ patientInfo.age }}</el-descriptions-item>
<el-descriptions-item label="年龄:">
{{ patientInfo.age }}
</el-descriptions-item>
<el-descriptions-item label="科室:">
{{ patientInfo.organizationName }}
</el-descriptions-item>
@@ -64,86 +119,173 @@
<span style="vertical-align: middle">收费项目</span>
</template>
<div style="margin-bottom: 10px">
<el-button type="primary" @click="confirmCharge()" :disabled="buttonDisabled">
<el-button
type="primary"
:disabled="buttonDisabled"
@click="confirmCharge()"
>
确认收费
</el-button>
<el-button type="primary" plain @click="handleReadCard('01')" style="width: 65px">
<el-button
type="primary"
plain
style="width: 65px"
@click="handleReadCard('01')"
>
电子凭证
</el-button>
<el-button type="primary" plain @click="handleReadCard('02')" style="width: 65px" :disabled="true">
<el-button
type="primary"
plain
style="width: 65px"
:disabled="true"
@click="handleReadCard('02')"
>
身份证
</el-button>
<el-button type="primary" plain @click="handleReadCard('03')" style="width: 65px">
<el-button
type="primary"
plain
style="width: 65px"
@click="handleReadCard('03')"
>
医保卡
</el-button>
<el-button type="primary" @click="payToSelt()" style="margin-left: 20px" :disabled="buttonDisabled">
<el-button
type="primary"
style="margin-left: 20px"
:disabled="buttonDisabled"
@click="payToSelt()"
>
医保转自费
</el-button>
<el-button type="primary" @click="patToMedicalInsurance()" style="margin-left: 20px"
:disabled="buttonDisabled">
<el-button
type="primary"
style="margin-left: 20px"
:disabled="buttonDisabled"
@click="patToMedicalInsurance()"
>
自费转医保
</el-button>
<el-button
type="primary"
@click="studentPayTosStudentSelf()"
style="margin-left: 20px"
:disabled="buttonDisabled"
@click="studentPayTosStudentSelf()"
>
学生医保转学生自费
</el-button>
<el-button
type="primary"
@click="studentSelfToStudentPay()"
style="margin-left: 20px"
:disabled="buttonDisabled"
@click="studentSelfToStudentPay()"
>
学生自费转学生医保
</el-button>
</div>
<div style="text-align: right; padding-right: 20px; margin-bottom: 10px;">
<span style="font-weight: bold; font-size: 14px;"
>合计金额{{ totalAmounts ? totalAmounts.toFixed(2) : 0 }}</span
>
<span style="font-weight: bold; font-size: 14px;">合计金额{{ totalAmounts ? totalAmounts.toFixed(2) : 0 }}</span>
</div>
<el-table
ref="chargeListRef"
v-loading="chargeLoading"
height="530"
:data="chargeList"
row-key="id"
@selection-change="handleSelectionChange"
v-loading="chargeLoading"
:span-method="objectSpanMethod"
border
@selection-change="handleSelectionChange"
>
<el-table-column type="selection" :selectable="checkSelectable" width="55" />
<el-table-column label="单据号" align="center" prop="busNo" width="180" />
<el-table-column label="收费项目" align="center" prop="itemName" width="200" />
<el-table-column label="数量" align="center" prop="quantityValue" width="80" />
<el-table-column label="医疗类型" align="center" prop="medTypeCode_dictText" />
<el-table-column label="医保编码" align="center" prop="ybNo" />
<el-table-column label="费用性质" align="center" prop="contractName" />
<el-table-column label="收费状态" align="center" prop="statusEnum_enumText" width="150">
<el-table-column
type="selection"
:selectable="checkSelectable"
width="55"
/>
<el-table-column
label="单据号"
align="center"
prop="busNo"
width="180"
/>
<el-table-column
label="收费项目"
align="center"
prop="itemName"
width="200"
/>
<el-table-column
label="数量"
align="center"
prop="quantityValue"
width="80"
/>
<el-table-column
label="医疗类型"
align="center"
prop="medTypeCode_dictText"
/>
<el-table-column
label="医保编码"
align="center"
prop="ybNo"
/>
<el-table-column
label="费用性质"
align="center"
prop="contractName"
/>
<el-table-column
label="收费状态"
align="center"
prop="statusEnum_enumText"
width="150"
>
<template #default="scope">
<el-tag v-if="scope.row.statusEnum === 1" disable-transitions>
<el-tag
v-if="scope.row.statusEnum === 1"
disable-transitions
>
{{ scope.row.statusEnum_enumText }}
</el-tag>
<el-tag v-else-if="scope.row.statusEnum === 5" type="success" disable-transitions>
<el-tag
v-else-if="scope.row.statusEnum === 5"
type="success"
disable-transitions
>
{{ scope.row.statusEnum_enumText }}
</el-tag>
<el-tag v-else-if="scope.row.statusEnum === 8" type="danger" disable-transitions>
<el-tag
v-else-if="scope.row.statusEnum === 8"
type="danger"
disable-transitions
>
{{ scope.row.statusEnum_enumText }}
</el-tag>
<el-tag v-else type="warning" disable-transitions>
<el-tag
v-else
type="warning"
disable-transitions
>
{{ scope.row.statusEnum_enumText }}
</el-tag>
</template>
</el-table-column>
<el-table-column label="金额" align="right" prop="totalPrice" header-align="center">
<el-table-column
label="金额"
align="right"
prop="totalPrice"
header-align="center"
>
<template #default="scope">
{{ scope.row.totalPrice.toFixed(2) + ' 元' || '0.00' + ' 元' }}
</template>
</el-table-column>
<el-table-column label="收款人" align="center" prop="entererId_dictText" />
<el-table-column
label="收款人"
align="center"
prop="entererId_dictText"
/>
<el-table-column
label="操作"
align="center"
@@ -169,18 +311,18 @@
<ChargeDialog
ref="chargeDialogRef"
:open="openDialog"
@close="handleClose"
:category="patientInfo.categoryEnum"
:totalAmount="totalAmount"
:patientInfo="patientInfo"
:chargeItemIds="chargeItemIdList"
:consumablesIdList="consumablesIdList"
:chrgBchnoList="chrgBchnoList"
:userCardInfo="userCardInfo"
:paymentId="paymentId"
:total-amount="totalAmount"
:patient-info="patientInfo"
:charge-item-ids="chargeItemIdList"
:consumables-id-list="consumablesIdList"
:chrg-bchno-list="chrgBchnoList"
:user-card-info="userCardInfo"
:payment-id="paymentId"
:details="details"
:chargedItems="chargedItems"
:feeType="patientInfo.medfeePaymtdCode"
:charged-items="chargedItems"
@close="handleClose"
:fee-type="patientInfo.medfeePaymtdCode"
:medfee_paymtd_code="medfee_paymtd_code"
@refresh="getPatientList"
/>

View File

@@ -1,27 +1,42 @@
<template>
<el-dialog
title="确认退费"
v-model="props.open"
title="确认退费"
width="700px"
append-to-body
destroy-on-close
@close="close"
>
<div>
<el-text size="large" style="display: block; margin-bottom: 15px">
<el-text
size="large"
style="display: block; margin-bottom: 15px"
>
退费日期{{ currentDate }}
</el-text>
<el-text size="large">费用性质{{ getFeeTypeText }}</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">
<el-text size="large">
应退金额
</el-text>
<el-text
size="large"
type="primary"
class="amount"
>
{{ props.totalAmount.toFixed(2) + ' 元' }}
</el-text>
</div>
<!-- 自费支付 -->
<div class="payment-container">
<div v-for="(item, index) in formData.selfPay" :key="index" class="payment-item">
<div
v-for="(item, index) in formData.selfPay"
:key="index"
class="payment-item"
>
<span>退费方式</span>
<el-select
v-model="item.payEnum"
@@ -52,19 +67,22 @@
<span class="suffix-text"></span>
</div>
<el-button
v-if="index > 0"
type="danger"
circle
:icon="Delete"
@click="removePayment(index)"
v-if="index > 0"
/>
</div>
<div class="payment-container" style="position: relative">
<div
class="payment-container"
style="position: relative"
>
<span style="position: absolute; top: 5px">退费原因</span>
<el-input
v-model="reason"
type="textarea"
:rows="2"
v-model="reason"
placeholder="退费原因"
class="reason-textarea"
@change="handleAmountChange"
@@ -74,19 +92,31 @@
<el-button
type="primary"
plain
@click="addPayment"
:disabled="formData.selfPay.length >= 4 || remainingAmount <= 0"
@click="addPayment"
>
添加退费方式
</el-button>
<el-text v-if="remainingAmount <= 0" type="danger" class="tip">
<el-text
v-if="remainingAmount <= 0"
type="danger"
class="tip"
>
金额已满足应退不可继续添加
</el-text>
</div>
</div>
<div>
<el-table :data="props.details" max-height="200" border>
<el-table-column prop="payEnum_dictText" label="支付类型" align="center" />
<el-table
:data="props.details"
max-height="200"
border
>
<el-table-column
prop="payEnum_dictText"
label="支付类型"
align="center"
/>
<el-table-column
prop="amount"
label="金额"
@@ -104,8 +134,12 @@
<div class="summary">
<el-space :size="30">
<div class="summary-item">
<el-text type="info">实退合计</el-text>
<el-text type="success">{{ displayAmount + ' 元' }}</el-text>
<el-text type="info">
实退合计
</el-text>
<el-text type="success">
{{ displayAmount + ' 元' }}
</el-text>
</div>
<!-- <div class="summary-item">
<el-text type="info">应找零</el-text>
@@ -116,8 +150,15 @@
</div>
<template #footer>
<div class="dialog-footer">
<el-button type="primary" @click="submit"> </el-button>
<el-button @click="close"> </el-button>
<el-button
type="primary"
@click="submit"
>
</el-button>
<el-button @click="close">
</el-button>
</div>
</template>
</el-dialog>

View File

@@ -1,5 +1,8 @@
<template>
<div style="display: flex; justify-content: space-between" class="app-container">
<div
style="display: flex; justify-content: space-between"
class="app-container"
>
<el-card style="width: 30%">
<template #header>
<span style="vertical-align: middle">患者列表</span>
@@ -13,7 +16,10 @@
@keyup.enter="getPatientList"
>
<template #append>
<el-button icon="Search" @click="getPatientList" />
<el-button
icon="Search"
@click="getPatientList"
/>
</template>
</el-input>
<el-select
@@ -40,7 +46,11 @@
value-format="YYYY-MM-DD"
style="width: 84%; margin-bottom: 10px; margin-right: 10px"
/>
<el-button type="primary" style="margin-bottom: 10px" @click="getPatientList">
<el-button
type="primary"
style="margin-bottom: 10px"
@click="getPatientList"
>
搜索
</el-button>
<el-table
@@ -48,18 +58,30 @@
height="630"
:data="patientList"
row-key="encounterId"
@cell-click="clickRow"
highlight-current-row
width=""
@cell-click="clickRow"
>
<el-table-column label="病历号" align="center" prop="encounterBusNo" />
<el-table-column label="姓名" align="center" prop="patientName" />
<el-table-column
label="病历号"
align="center"
prop="encounterBusNo"
/>
<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-column
label="收费状态"
align="center"
prop="statusEnum_enumText"
/>
</el-table>
</div>
</el-card>
@@ -115,31 +137,57 @@
</el-button> -->
<el-table
ref="chargeListRef"
v-loading="chargeLoading"
height="510"
:data="chargeList"
row-key="encounterId"
v-loading="chargeLoading"
:span-method="spanMethod"
class="no-hover-table"
border
width=""
>
<!-- <el-table-column type="selection" :selectable="checkSelectable" width="55" /> -->
<el-table-column label="操作" align="center">
<el-table-column
label="操作"
align="center"
>
<template #default="scope">
<el-button link type="primary" @click="handleRefund(scope.row)">退费</el-button>
<el-button
link
type="primary"
@click="handleRefund(scope.row)"
>
退费
</el-button>
</template>
</el-table-column>
<el-table-column prop="paymentId" label="支付单据号" align="center" />
<el-table-column label="项目单据号" align="center" prop="busNo" width="150" />
<el-table-column label="项目名称" align="center" prop="itemName" />
<el-table-column
prop="paymentId"
label="支付单据号"
align="center"
/>
<el-table-column
label="项目单据号"
align="center"
prop="busNo"
width="150"
/>
<el-table-column
label="项目名称"
align="center"
prop="itemName"
/>
<el-table-column
label="收费状态"
align="center"
prop="chargeStatus_enumText"
width="100"
/>
<el-table-column label="数量" align="center" width="100">
<el-table-column
label="数量"
align="center"
width="100"
>
<template #default="scope">
{{ scope.row.quantityValue + ' ' + scope.row.quantityUnit_dictText }}
</template>
@@ -156,20 +204,25 @@
</template>
</el-table-column>
<!-- <el-table-column label="处方号" align="center" prop="prescriptionNo" /> -->
<el-table-column label="收款人" align="center" prop="entererName" width="120" />
<el-table-column
label="收款人"
align="center"
prop="entererName"
width="120"
/>
</el-table>
</el-card>
</div>
<RefundDialog
:open="openDialog"
@close="handleClose"
:totalAmount="totalAmount"
:patientInfo="patientInfo"
:paymentId="paymentId"
:chargeItemIds="chargeItemIdList"
:total-amount="totalAmount"
:patient-info="patientInfo"
:payment-id="paymentId"
:charge-item-ids="chargeItemIdList"
:details="details"
:medfee_paymtd_code="medfee_paymtd_code"
:feeType="patientInfo.medfeePaymtdCode"
:fee-type="patientInfo.medfeePaymtdCode"
@close="handleClose"
/>
</div>
</template>

View File

@@ -1,27 +1,42 @@
<template>
<el-dialog
title="确认收费"
v-model="props.open"
@close="close"
title="确认收费"
width="700px"
append-to-body
destroy-on-close
@close="close"
>
<div v-loading="dialogLoading">
<el-text size="large" style="display: block; margin-bottom: 15px">
<el-text
size="large"
style="display: block; margin-bottom: 15px"
>
收费日期{{ currentDate }}
</el-text>
<el-text size="large">费用性质{{ getFeeTypeText }}</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">
<el-text size="large">
应收金额
</el-text>
<el-text
size="large"
type="primary"
class="amount"
>
{{ props.totalAmount.toFixed(2) + ' 元' }}
</el-text>
</div>
<!-- 自费支付 -->
<div class="payment-container">
<div v-for="(item, index) in formData.selfPay" :key="index" class="payment-item">
<div
v-for="(item, index) in formData.selfPay"
:key="index"
class="payment-item"
>
<span>支付方式</span>
<el-select
v-model="item.payEnum"
@@ -52,23 +67,27 @@
<span class="suffix-text"></span>
</div>
<el-button
v-if="index > 0"
type="danger"
circle
:icon="Delete"
@click="removePayment(index)"
v-if="index > 0"
/>
</div>
<div class="add-payment">
<el-button
type="primary"
plain
@click="addPayment"
:disabled="formData.selfPay.length >= 4 || remainingAmount <= 0"
@click="addPayment"
>
添加支付方式
</el-button>
<el-text v-if="remainingAmount <= 0" type="danger" class="tip">
<el-text
v-if="remainingAmount <= 0"
type="danger"
class="tip"
>
金额已满足应收不可继续添加
</el-text>
</div>
@@ -81,29 +100,58 @@
style="width: 300px"
:placeholder="payTypePlaceholder"
/>
<el-button link type="primary" @click="handleWxPay()">扫码支付</el-button>
<el-button link type="primary" @click="getWxPayResult()">查看结果</el-button>
<el-button
link
type="primary"
@click="handleWxPay()"
>
扫码支付
</el-button>
<el-button
link
type="primary"
@click="getWxPayResult()"
>
查看结果
</el-button>
</div>
<!-- 金额汇总 -->
<div class="summary">
<el-space :size="30">
<div class="summary-item">
<el-text type="info">实收合计</el-text>
<el-text type="success">{{ displayAmount + ' 元' }}</el-text>
<el-text type="info">
实收合计
</el-text>
<el-text type="success">
{{ displayAmount + ' 元' }}
</el-text>
</div>
<div class="summary-item">
<el-text type="info">应找零</el-text>
<el-text type="warning">{{ returnedAmount + ' 元' }}</el-text>
<el-text type="info">
应找零
</el-text>
<el-text type="warning">
{{ returnedAmount + ' 元' }}
</el-text>
</div>
</el-space>
</div>
</div>
<template #footer>
<div class="dialog-footer">
<el-button type="primary" @click="throttledGetList" :disabled="dialogLoading"
> </el-button
<el-button
type="primary"
:disabled="dialogLoading"
@click="throttledGetList"
>
<el-button @click="close" :disabled="dialogLoading"> </el-button>
</el-button>
<el-button
:disabled="dialogLoading"
@click="close"
>
</el-button>
</div>
</template>
</el-dialog>

View File

@@ -1,18 +1,46 @@
<template>
<!-- <div class="app-container"> -->
<!-- 添加或修改对话框 -->
<el-dialog :title="title" v-model="visible" width="1200px" append-to-body>
<el-form ref="patientRef" :model="form" :rules="rules" label-width="120px" label-position="left">
<el-dialog
v-model="visible"
:title="title"
width="1200px"
append-to-body
>
<el-form
ref="patientRef"
:model="form"
:rules="rules"
label-width="120px"
label-position="left"
>
<!-- 第一行姓名民族文化程度性别 -->
<el-row :gutter="10">
<el-col :span="6">
<el-form-item label="姓名" prop="name" label-width="80px">
<el-input v-model="form.name" clearable :disabled="isViewMode" />
<el-form-item
label="姓名"
prop="name"
label-width="80px"
>
<el-input
v-model="form.name"
clearable
:disabled="isViewMode"
/>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="民族" prop="nationalityCode" label-width="80px">
<el-select v-model="form.nationalityCode" clearable filterable :disabled="isViewMode">
<el-form-item
label="民族"
prop="nationalityCode"
label-width="80px"
>
<el-select
v-model="form.nationalityCode"
clearable
filterable
:disabled="isViewMode"
>
<el-option
v-for="item in nationality_code"
:key="item.value"
@@ -23,8 +51,17 @@
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="文化程度" prop="educationLevel" label-width="80px">
<el-select v-model="form.educationLevel" placeholder="请选择文化程度" clearable :disabled="isViewMode">
<el-form-item
label="文化程度"
prop="educationLevel"
label-width="80px"
>
<el-select
v-model="form.educationLevel"
placeholder="请选择文化程度"
clearable
:disabled="isViewMode"
>
<el-option
v-for="item in educationLevelList"
:key="item.value"
@@ -35,8 +72,17 @@
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="性别" prop="genderEnum" label-width="80px">
<el-select v-model="form.genderEnum" placeholder="请选择性别" clearable :disabled="isViewMode">
<el-form-item
label="性别"
prop="genderEnum"
label-width="80px"
>
<el-select
v-model="form.genderEnum"
placeholder="请选择性别"
clearable
:disabled="isViewMode"
>
<el-option
v-for="item in administrativegenderList"
:key="item.value"
@@ -51,7 +97,11 @@
<!-- 第二行证件类别证件号码*年龄 -->
<el-row :gutter="10">
<el-col :span="8">
<el-form-item label="证件类别" prop="typeCode" label-width="80px">
<el-form-item
label="证件类别"
prop="typeCode"
label-width="80px"
>
<el-select
v-model="form.typeCode"
placeholder="就诊卡"
@@ -68,19 +118,34 @@
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="证件号码" prop="idCard" label-width="80px">
<el-input v-model="form.idCard" clearable :disabled="isViewMode" @blur="onBlur" />
<el-form-item
label="证件号码"
prop="idCard"
label-width="80px"
>
<el-input
v-model="form.idCard"
clearable
:disabled="isViewMode"
@blur="onBlur"
/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="年龄" prop="age" label-width="80px">
<el-form-item
label="年龄"
prop="age"
label-width="80px"
>
<el-input
v-model="form.age"
:disabled="isViewMode"
@input="handleAgeInput"
placeholder="请输入年龄"
@input="handleAgeInput"
>
<template #suffix></template>
<template #suffix>
</template>
</el-input>
</el-form-item>
</el-col>
@@ -89,8 +154,18 @@
<!-- 第三行国籍*联系方式出生日期 -->
<el-row :gutter="10">
<el-col :span="8">
<el-form-item label="国籍" prop="countryCode" label-width="80px">
<el-select v-model="form.countryCode" placeholder="请选择国籍" clearable filterable :disabled="isViewMode">
<el-form-item
label="国籍"
prop="countryCode"
label-width="80px"
>
<el-select
v-model="form.countryCode"
placeholder="请选择国籍"
clearable
filterable
:disabled="isViewMode"
>
<el-option
v-for="item in countryCodeList"
:key="item.value"
@@ -101,12 +176,23 @@
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="联系方式" prop="phone" label-width="80px">
<el-input v-model="form.phone" clearable :disabled="isViewMode" />
<el-form-item
label="联系方式"
prop="phone"
label-width="80px"
>
<el-input
v-model="form.phone"
clearable
:disabled="isViewMode"
/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="出生日期" prop="birthDate">
<el-form-item
label="出生日期"
prop="birthDate"
>
<el-date-picker
v-model="form.birthDate"
type="date"
@@ -123,13 +209,28 @@
<!-- 第四行就诊卡号职业邮政编码 -->
<el-row :gutter="10">
<el-col :span="8">
<el-form-item label="就诊卡号" prop="identifierNo">
<el-input v-model="form.identifierNo" clearable :disabled="isEditMode || isViewMode" />
<el-form-item
label="就诊卡号"
prop="identifierNo"
>
<el-input
v-model="form.identifierNo"
clearable
:disabled="isEditMode || isViewMode"
/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="职业" prop="prfsEnum">
<el-select v-model="form.prfsEnum" placeholder="职业" clearable :disabled="isViewMode">
<el-form-item
label="职业"
prop="prfsEnum"
>
<el-select
v-model="form.prfsEnum"
placeholder="职业"
clearable
:disabled="isViewMode"
>
<el-option
v-for="item in occupationtypeList"
:key="item.value"
@@ -140,8 +241,16 @@
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="邮政编码" prop="postalCode">
<el-input v-model="form.postalCode" clearable :disabled="isViewMode" placeholder="请输入邮政编码" />
<el-form-item
label="邮政编码"
prop="postalCode"
>
<el-input
v-model="form.postalCode"
clearable
:disabled="isViewMode"
placeholder="请输入邮政编码"
/>
</el-form-item>
</el-col>
</el-row>
@@ -149,26 +258,43 @@
<!-- 第五行工作单位 -->
<el-row>
<el-col :span="8">
<el-form-item label="工作单位" prop="workCompany">
<el-input v-model="form.workCompany" clearable :disabled="isViewMode" />
<el-form-item
label="工作单位"
prop="workCompany"
>
<el-input
v-model="form.workCompany"
clearable
:disabled="isViewMode"
/>
</el-form-item>
</el-col>
<el-col :span="16">
<el-form-item label="单位地址" prop="companyAddress">
<el-input v-model="form.companyAddress" clearable :disabled="isViewMode" />
<el-form-item
label="单位地址"
prop="companyAddress"
>
<el-input
v-model="form.companyAddress"
clearable
:disabled="isViewMode"
/>
</el-form-item>
</el-col>
</el-row>
<!-- 现住址选择详细地址 -->
<el-row>
<el-col :span="8">
<el-form-item label="现住址" prop="addressSelect">
<el-form-item
label="现住址"
prop="addressSelect"
>
<el-cascader
v-model="selectedOptions"
:options="options"
:props="{ checkStrictly: true, value: 'code', label: 'name' }"
v-model="selectedOptions"
@change="handleChange"
:disabled="isViewMode"
@change="handleChange"
>
<template #default="{ node, data }">
<span>{{ data.name }}</span>
@@ -178,8 +304,15 @@
</el-form-item>
</el-col>
<el-col :span="16">
<el-form-item label="详细地址" prop="address">
<el-input v-model="form.address" clearable :disabled="isViewMode" />
<el-form-item
label="详细地址"
prop="address"
>
<el-input
v-model="form.address"
clearable
:disabled="isViewMode"
/>
</el-form-item>
</el-col>
</el-row>
@@ -187,13 +320,16 @@
<!-- 户籍地址选择详细地址 -->
<el-row>
<el-col :span="8">
<el-form-item label="户籍地址" prop="hukouAddressSelect">
<el-form-item
label="户籍地址"
prop="hukouAddressSelect"
>
<el-cascader
v-model="selectedHukouOptions"
:options="options"
:props="{ checkStrictly: true, value: 'code', label: 'name' }"
v-model="selectedHukouOptions"
@change="handleHukouChange"
:disabled="isViewMode"
@change="handleHukouChange"
>
<template #default="{ node, data }">
<span>{{ data.name }}</span>
@@ -203,8 +339,15 @@
</el-form-item>
</el-col>
<el-col :span="16">
<el-form-item label="详细地址" prop="hukouAddress">
<el-input v-model="form.hukouAddress" clearable :disabled="isViewMode" />
<el-form-item
label="详细地址"
prop="hukouAddress"
>
<el-input
v-model="form.hukouAddress"
clearable
:disabled="isViewMode"
/>
</el-form-item>
</el-col>
</el-row>
@@ -212,7 +355,10 @@
<!-- 第六行血型ABO血型RH -->
<el-row>
<el-col :span="8">
<el-form-item label="血型ABO" prop="bloodAbo">
<el-form-item
label="血型ABO"
prop="bloodAbo"
>
<el-select
v-model="form.bloodAbo"
placeholder="血型ABO"
@@ -229,8 +375,16 @@
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="血型RH" prop="bloodRh">
<el-select v-model="form.bloodRh" placeholder="血型RH" clearable :disabled="isViewMode">
<el-form-item
label="血型RH"
prop="bloodRh"
>
<el-select
v-model="form.bloodRh"
placeholder="血型RH"
clearable
:disabled="isViewMode"
>
<el-option
v-for="item in bloodtypearhList"
:key="item.value"
@@ -241,8 +395,16 @@
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="患者来源" prop="patientDerived">
<el-select v-model="form.patientDerived" placeholder="患者来源" clearable :disabled="isViewMode">
<el-form-item
label="患者来源"
prop="patientDerived"
>
<el-select
v-model="form.patientDerived"
placeholder="患者来源"
clearable
:disabled="isViewMode"
>
<el-option
v-for="item in patientDerivedList"
:key="item.value"
@@ -257,7 +419,10 @@
<!-- 第七行婚姻状态死亡时间 -->
<el-row>
<el-col :span="8">
<el-form-item label="婚姻状态" prop="maritalStatusEnum">
<el-form-item
label="婚姻状态"
prop="maritalStatusEnum"
>
<el-select
v-model="form.maritalStatusEnum"
placeholder="婚姻状态"
@@ -274,7 +439,10 @@
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="死亡时间" prop="deceasedDate">
<el-form-item
label="死亡时间"
prop="deceasedDate"
>
<el-date-picker
v-model="form.deceasedDate"
type="datetime"
@@ -290,13 +458,29 @@
<!-- 第八行监护人监护人关系监护人电话 -->
<el-row>
<el-col :span="8">
<el-form-item label="监护人" prop="guardianName">
<el-input v-model="form.guardianName" clearable :disabled="isViewMode" placeholder="请输入监护人" />
<el-form-item
label="监护人"
prop="guardianName"
>
<el-input
v-model="form.guardianName"
clearable
:disabled="isViewMode"
placeholder="请输入监护人"
/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="监护人关系" prop="guardianRelation">
<el-select v-model="form.guardianRelation" placeholder="监护人关系" clearable :disabled="isViewMode">
<el-form-item
label="监护人关系"
prop="guardianRelation"
>
<el-select
v-model="form.guardianRelation"
placeholder="监护人关系"
clearable
:disabled="isViewMode"
>
<el-option
v-for="item in familyrelationshiptypeList"
:key="item.value"
@@ -307,8 +491,16 @@
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="监护人电话" prop="guardianPhone">
<el-input v-model="form.guardianPhone" clearable :disabled="isViewMode" placeholder="请输入监护人电话" />
<el-form-item
label="监护人电话"
prop="guardianPhone"
>
<el-input
v-model="form.guardianPhone"
clearable
:disabled="isViewMode"
placeholder="请输入监护人电话"
/>
</el-form-item>
</el-col>
</el-row>
@@ -316,17 +508,42 @@
<!-- 第九行监护人证件类型监护人证件号码 -->
<el-row>
<el-col :span="8">
<el-form-item label="监护人证件类型" prop="guardianIdType">
<el-select v-model="form.guardianIdType" placeholder="请选择" clearable :disabled="isViewMode">
<el-option label="身份证" value="id_card" />
<el-option label="护照" value="passport" />
<el-option label="其他" value="other" />
<el-form-item
label="监护人证件类型"
prop="guardianIdType"
>
<el-select
v-model="form.guardianIdType"
placeholder="请选择"
clearable
:disabled="isViewMode"
>
<el-option
label="身份证"
value="id_card"
/>
<el-option
label="护照"
value="passport"
/>
<el-option
label="其他"
value="other"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="16">
<el-form-item label="监护人证件号码" prop="guardianIdNo">
<el-input v-model="form.guardianIdNo" clearable :disabled="isViewMode" placeholder="请输入监护人证件号码" />
<el-form-item
label="监护人证件号码"
prop="guardianIdNo"
>
<el-input
v-model="form.guardianIdNo"
clearable
:disabled="isViewMode"
placeholder="请输入监护人证件号码"
/>
</el-form-item>
</el-col>
</el-row>
@@ -334,16 +551,31 @@
<!-- 第十行监护人地址 -->
<el-row>
<el-col :span="24">
<el-form-item label="监护人地址" prop="guardianAddress">
<el-input v-model="form.guardianAddress" clearable :disabled="isViewMode" placeholder="请输入监护人详细地址" />
<el-form-item
label="监护人地址"
prop="guardianAddress"
>
<el-input
v-model="form.guardianAddress"
clearable
:disabled="isViewMode"
placeholder="请输入监护人详细地址"
/>
</el-form-item>
</el-col>
</el-row>
</el-form>
<template #footer>
<div class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
<el-button
type="primary"
@click="submitForm"
>
</el-button>
<el-button @click="cancel">
</el-button>
</div>
</template>
</el-dialog>

View File

@@ -1,75 +1,91 @@
<template>
<!-- <div class="app-container"> -->
<el-dialog :title="title" v-model="visible" width="800px" append-to-body>
<el-table
:data="patientInfoList"
@selection-change="handleSelectionChange"
width="90%"
@cell-dblclick="handleCellDblClick"
>
<el-table-column type="selection" width="50" align="center" />
<el-table-column
label="患者姓名"
align="center"
key="name"
prop="name"
:show-overflow-tooltip="true"
/>
<el-table-column
label="性别"
align="center"
key="genderEnum_enumText"
prop="genderEnum_enumText"
:show-overflow-tooltip="true"
/>
<el-table-column
label="身份证号"
align="center"
key="idCard"
prop="idCard"
:show-overflow-tooltip="true"
/>
<el-table-column
label="电话"
align="center"
key="phone"
prop="phone"
:show-overflow-tooltip="true"
width="100"
/>
<el-table-column
label="生日"
align="center"
key="birthDate"
prop="birthDate"
:show-overflow-tooltip="true"
width="50"
/>
<el-table-column
label="年龄"
align="center"
key="age"
:show-overflow-tooltip="true"
>
<template #default="scope">
{{ scope.row.age ? `${scope.row.age}` : '-' }}
</template>
</el-table-column>
</el-table>
<pagination
v-show="total > 0"
:total="total"
v-model:page="queryParams.pageNo"
v-model:limit="queryParams.pageSize"
@pagination="getList"
<el-dialog
v-model="visible"
:title="title"
width="800px"
append-to-body
>
<el-table
:data="patientInfoList"
width="90%"
@selection-change="handleSelectionChange"
@cell-dblclick="handleCellDblClick"
>
<el-table-column
type="selection"
width="50"
align="center"
/>
<template #footer>
<div class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</template>
</el-dialog>
<el-table-column
key="name"
label="患者姓名"
align="center"
prop="name"
:show-overflow-tooltip="true"
/>
<el-table-column
key="genderEnum_enumText"
label="性别"
align="center"
prop="genderEnum_enumText"
:show-overflow-tooltip="true"
/>
<el-table-column
key="idCard"
label="身份证号"
align="center"
prop="idCard"
:show-overflow-tooltip="true"
/>
<el-table-column
key="phone"
label="电话"
align="center"
prop="phone"
:show-overflow-tooltip="true"
width="100"
/>
<el-table-column
key="birthDate"
label="生日"
align="center"
prop="birthDate"
:show-overflow-tooltip="true"
width="50"
/>
<el-table-column
key="age"
label="年龄"
align="center"
:show-overflow-tooltip="true"
>
<template #default="scope">
{{ scope.row.age ? `${scope.row.age}` : '-' }}
</template>
</el-table-column>
</el-table>
<pagination
v-show="total > 0"
v-model:page="queryParams.pageNo"
v-model:limit="queryParams.pageSize"
:total="total"
@pagination="getList"
/>
<template #footer>
<div class="dialog-footer">
<el-button
type="primary"
@click="submitForm"
>
</el-button>
<el-button @click="cancel">
</el-button>
</div>
</template>
</el-dialog>
<!-- </div> -->
</template>

View File

@@ -6,16 +6,39 @@
row-key="id"
@cell-click="clickRow"
>
<el-table-column label="姓名" align="center" prop="name" />
<el-table-column label="就诊卡号" align="center" prop="identifierNo" />
<el-table-column label="性别" align="center" prop="genderEnum_enumText" />
<el-table-column label="证件号" align="center" prop="idCard" />
<el-table-column label="联系电话" align="center" prop="phone" />
<el-table-column label="年龄" align="center">
<template #default="scope">
{{ scope.row.age ? `${scope.row.age}` : '-' }}
</template>
</el-table-column>
<el-table-column
label="姓名"
align="center"
prop="name"
/>
<el-table-column
label="就诊卡号"
align="center"
prop="identifierNo"
/>
<el-table-column
label="性别"
align="center"
prop="genderEnum_enumText"
/>
<el-table-column
label="证件号"
align="center"
prop="idCard"
/>
<el-table-column
label="联系电话"
align="center"
prop="phone"
/>
<el-table-column
label="年龄"
align="center"
>
<template #default="scope">
{{ scope.row.age ? `${scope.row.age}` : '-' }}
</template>
</el-table-column>
</el-table>
</div>
</template>

View File

@@ -1,35 +1,63 @@
<template>
<el-dialog
:title="eventType == '1' ? '确认退费' : '挂号详情'"
v-model="props.open"
:title="eventType == '1' ? '确认退费' : '挂号详情'"
width="700px"
append-to-body
destroy-on-close
@close="close"
>
<div v-loading="loading">
<el-text size="large" style="display: block; margin-bottom: 15px">
<el-text
size="large"
style="display: block; margin-bottom: 15px"
>
退费日期{{ currentDate }}
</el-text>
<el-text size="large">费用性质{{ props.category || '自费' }}</el-text>
<el-text size="large">
费用性质{{ props.category || '自费' }}
</el-text>
<div class="amount-row">
<el-text size="large">应退金额</el-text>
<el-text size="large" type="primary" class="amount">
<el-text size="large">
应退金额
</el-text>
<el-text
size="large"
type="primary"
class="amount"
>
{{ (calculatedTotalAmount || 0) + ' 元' }}
</el-text>
</div>
<div class="amount-row" v-if="calculatedReturnAmount > 0">
<el-text size="large">退费金额</el-text>
<el-text size="large" type="primary" class="amount">
<div
v-if="calculatedReturnAmount > 0"
class="amount-row"
>
<el-text size="large">
退费金额
</el-text>
<el-text
size="large"
type="primary"
class="amount"
>
{{ (calculatedReturnAmount || 0) + ' 元' }}
</el-text>
</div>
<!-- 退费方式列表从接口数据中筛选 -->
<div class="payment-container">
<div v-for="(item, index) in refundMethodsFromApi" :key="index" class="payment-item">
<div
v-for="(item, index) in refundMethodsFromApi"
:key="index"
class="payment-item"
>
<span>退费方式</span>
<el-input :value="getPayMethodLabel(item.payEnum)" readonly style="width: 160px" />
<el-input
:value="getPayMethodLabel(item.payEnum)"
readonly
style="width: 160px"
/>
<span>退费金额</span>
<div class="suffix-wrapper">
<el-input-number
@@ -42,12 +70,15 @@
<span class="suffix-text"></span>
</div>
</div>
<div class="payment-container" style="position: relative">
<div
class="payment-container"
style="position: relative"
>
<span style="position: absolute; top: 5px">退费原因</span>
<el-input
v-model="reason"
type="textarea"
:rows="2"
v-model="reason"
placeholder="退费原因"
class="reason-textarea"
:disabled="eventType == '1' ? false : true"
@@ -67,10 +98,14 @@
<div class="summary">
<el-space :size="30">
<div class="summary-item">
<el-text type="info">实退合计</el-text>
<el-text type="success">{{
displayAmount > 0 ? displayAmount + ' 元' : props.totalAmount + ' 元'
}}</el-text>
<el-text type="info">
实退合计
</el-text>
<el-text type="success">
{{
displayAmount > 0 ? displayAmount + ' 元' : props.totalAmount + ' 元'
}}
</el-text>
</div>
<!-- <div class="summary-item">
<el-text type="info">应找零</el-text>
@@ -80,20 +115,48 @@
</div>
<!-- 退费明细表格 -->
<div v-if="preCancelData && preCancelData.length > 0" class="pre-cancel-table-wrapper">
<el-table :data="preCancelData" border stripe max-height="300" style="width: 100%">
<el-table-column prop="payEnum_dictText" label="支付方式" min-width="200" />
<el-table-column prop="amount" label="金额" width="120" align="right">
<div
v-if="preCancelData && preCancelData.length > 0"
class="pre-cancel-table-wrapper"
>
<el-table
:data="preCancelData"
border
stripe
max-height="300"
style="width: 100%"
>
<el-table-column
prop="payEnum_dictText"
label="支付方式"
min-width="200"
/>
<el-table-column
prop="amount"
label="金额"
width="120"
align="right"
>
<template #default="{ row }">
{{ row.amount ? Number(row.amount) : '0.00' }}
</template>
</el-table-column>
<el-table-column prop="returnAmount" label="退费金额" width="120" align="right">
<el-table-column
prop="returnAmount"
label="退费金额"
width="120"
align="right"
>
<template #default="{ row }">
{{ row.returnAmount ? Number(row.returnAmount) : '0.00' }}
</template>
</el-table-column>
<el-table-column prop="chargeAmount" label="收费金额" min-width="120" align="right">
<el-table-column
prop="chargeAmount"
label="收费金额"
min-width="120"
align="right"
>
<template #default="{ row }">
{{ row.chargeAmount ? Number(row.chargeAmount) : '0.00' }}
</template>
@@ -103,8 +166,16 @@
</div>
<template #footer>
<div class="dialog-footer">
<el-button v-if="eventType == 1" type="primary" @click="submit"> </el-button>
<el-button @click="close"> </el-button>
<el-button
v-if="eventType == 1"
type="primary"
@click="submit"
>
</el-button>
<el-button @click="close">
</el-button>
</div>
</template>
</el-dialog>

View File

@@ -1,54 +1,129 @@
<template>
<el-dialog
title="补打挂号单凭证"
v-model="dialogVisible"
title="补打挂号单凭证"
width="900px"
append-to-body
destroy-on-close
:close-on-click-modal="false"
>
<div v-loading="loading" style="background-color: #ffffff; padding: 20px; min-height: 400px;">
<div
v-loading="loading"
style="background-color: #ffffff; padding: 20px; min-height: 400px;"
>
<!-- 标题区域 -->
<div style="text-align: center; margin-bottom: 20px;">
<h2 style="color: #ff0000; font-size: 24px; font-weight: bold; margin: 0 0 10px 0;">挂号单重打</h2>
<p style="color: #ff0000; font-size: 14px; margin: 0;">补打挂号单将作废原有的挂号单据并生成新的挂号单据</p>
<h2 style="color: #ff0000; font-size: 24px; font-weight: bold; margin: 0 0 10px 0;">
挂号单重打
</h2>
<p style="color: #ff0000; font-size: 14px; margin: 0;">
补打挂号单将作废原有的挂号单据并生成新的挂号单据
</p>
</div>
<!-- 表单区域 -->
<el-form :model="form" ref="reprintFormRef" label-width="120px" style="background-color: #ffffff; padding: 20px; border-radius: 4px;">
<el-form
ref="reprintFormRef"
:model="form"
label-width="120px"
style="background-color: #ffffff; padding: 20px; border-radius: 4px;"
>
<el-row :gutter="30">
<!-- 左列 -->
<el-col :span="12">
<el-form-item label="病人姓名:" prop="name">
<el-input v-model="form.name" placeholder="病人姓名" :disabled="true" />
<el-form-item
label="病人姓名:"
prop="name"
>
<el-input
v-model="form.name"
placeholder="病人姓名"
:disabled="true"
/>
</el-form-item>
<el-form-item label="医生姓名:" prop="practitionerName">
<el-input v-model="form.practitionerName" placeholder="医生姓名" :disabled="true" />
<el-form-item
label="医生姓名:"
prop="practitionerName"
>
<el-input
v-model="form.practitionerName"
placeholder="医生姓名"
:disabled="true"
/>
</el-form-item>
<el-form-item label="诊疗费:" prop="activityPrice">
<el-input v-model="form.activityPrice" placeholder="诊疗费" :disabled="true" />
<el-form-item
label="诊疗费:"
prop="activityPrice"
>
<el-input
v-model="form.activityPrice"
placeholder="诊疗费"
:disabled="true"
/>
</el-form-item>
<el-form-item label="流水号:" prop="serialNo">
<el-input v-model="form.serialNo" placeholder="流水号" :disabled="true" />
<el-form-item
label="流水号:"
prop="serialNo"
>
<el-input
v-model="form.serialNo"
placeholder="流水号"
:disabled="true"
/>
</el-form-item>
<el-form-item label="合计:" prop="totalPrice">
<el-input v-model="form.totalPrice" placeholder="合计" :disabled="true" />
<el-form-item
label="合计:"
prop="totalPrice"
>
<el-input
v-model="form.totalPrice"
placeholder="合计"
:disabled="true"
/>
</el-form-item>
</el-col>
<!-- 右列 -->
<el-col :span="12">
<el-form-item label="挂号科室:" prop="organizationName">
<el-input v-model="form.organizationName" placeholder="挂号科室" :disabled="true" />
<el-form-item
label="挂号科室:"
prop="organizationName"
>
<el-input
v-model="form.organizationName"
placeholder="挂号科室"
:disabled="true"
/>
</el-form-item>
<el-form-item label="挂号费:" prop="price">
<el-input v-model="form.price" placeholder="挂号费" :disabled="true" />
<el-form-item
label="挂号费:"
prop="price"
>
<el-input
v-model="form.price"
placeholder="挂号费"
:disabled="true"
/>
</el-form-item>
<el-form-item label="病历费:" prop="medicalRecordFee">
<el-input v-model="form.medicalRecordFee" placeholder="病历费" :disabled="true" />
<el-form-item
label="病历费:"
prop="medicalRecordFee"
>
<el-input
v-model="form.medicalRecordFee"
placeholder="病历费"
:disabled="true"
/>
</el-form-item>
<el-form-item label="打印时间:" prop="printTime">
<el-input v-model="form.printTime" placeholder="打印时间" :disabled="true" />
<el-form-item
label="打印时间:"
prop="printTime"
>
<el-input
v-model="form.printTime"
placeholder="打印时间"
:disabled="true"
/>
</el-form-item>
</el-col>
</el-row>
@@ -56,8 +131,15 @@
<!-- 跨两列的字段 -->
<el-row>
<el-col :span="24">
<el-form-item label="预约/挂号时间:" prop="visitTime">
<el-input v-model="form.visitTime" placeholder="预约/挂号时间" :disabled="true" />
<el-form-item
label="预约/挂号时间:"
prop="visitTime"
>
<el-input
v-model="form.visitTime"
placeholder="预约/挂号时间"
:disabled="true"
/>
</el-form-item>
</el-col>
</el-row>
@@ -65,8 +147,14 @@
<!-- 底部搜索和操作区域 -->
<div style="margin-top: 20px; padding: 15px; background-color: #ffffff; border-radius: 4px;">
<el-form :inline="true" style="margin: 0;">
<el-form-item label="就诊卡号:" style="margin-bottom: 0;">
<el-form
:inline="true"
style="margin: 0;"
>
<el-form-item
label="就诊卡号:"
style="margin-bottom: 0;"
>
<el-input
v-model="searchForm.cardNo"
placeholder="请输入就诊卡号检索条"
@@ -74,8 +162,16 @@
clearable
@keyup.enter="handleSearch"
/>
<el-button type="primary" @click="handleSearch" :loading="loading">确认(O)</el-button>
<el-button @click="handleCancel">取消(C)</el-button>
<el-button
type="primary"
:loading="loading"
@click="handleSearch"
>
确认(O)
</el-button>
<el-button @click="handleCancel">
取消(C)
</el-button>
</el-form-item>
</el-form>
</div>
@@ -83,8 +179,8 @@
<!-- 挂号记录选择对话框 -->
<el-dialog
title="挂号记录选择"
v-model="selectDialogVisible"
title="挂号记录选择"
width="800px"
append-to-body
:close-on-click-modal="false"
@@ -92,27 +188,49 @@
<el-table
:data="recordList"
highlight-current-row
@current-change="handleRecordSelect"
style="width: 100%"
max-height="400"
@current-change="handleRecordSelect"
>
<el-table-column label="序号" type="index" width="60" align="center" />
<el-table-column label="挂号时间" prop="registerTime" width="180" align="center">
<el-table-column
label="序号"
type="index"
width="60"
align="center"
/>
<el-table-column
label="挂号时间"
prop="registerTime"
width="180"
align="center"
>
<template #default="scope">
{{ scope.row.registerTime ? parseTime(scope.row.registerTime, '{y}.{m}.{d} {h}时{i}分') : '-' }}
</template>
</el-table-column>
<el-table-column label="挂号科室" prop="organizationName" align="center">
<el-table-column
label="挂号科室"
prop="organizationName"
align="center"
>
<template #default="scope">
{{ scope.row.organizationName ? scope.row.organizationName.trim() || '-' : '-' }}
</template>
</el-table-column>
<el-table-column label="医生姓名" prop="practitionerName" align="center">
<el-table-column
label="医生姓名"
prop="practitionerName"
align="center"
>
<template #default="scope">
{{ scope.row.practitionerName ? scope.row.practitionerName.trim() || '-' : '-' }}
</template>
</el-table-column>
<el-table-column label="流水号" prop="encounterNo" align="center">
<el-table-column
label="流水号"
prop="encounterNo"
align="center"
>
<template #default="scope">
{{ calculateSerialNo(scope.row) }}
</template>
@@ -120,8 +238,16 @@
</el-table>
<template #footer>
<div class="dialog-footer">
<el-button @click="selectDialogVisible = false">取消 (C)</el-button>
<el-button type="primary" @click="handleConfirmSelect" :disabled="!selectedRecord">确认 (O)</el-button>
<el-button @click="selectDialogVisible = false">
取消 (C)
</el-button>
<el-button
type="primary"
:disabled="!selectedRecord"
@click="handleConfirmSelect"
>
确认 (O)
</el-button>
</div>
</template>
</el-dialog>

View File

@@ -10,10 +10,10 @@
<el-button
type="primary"
size="large"
@click="handlePatientSearch"
:loading="loading"
icon="el-icon-search"
icon="el-icon-search"
style="min-width: 140px;"
@click="handlePatientSearch"
>
病人查询(Q)
</el-button>
@@ -21,10 +21,10 @@
<el-button
type="success"
size="large"
@click="handleConfirm"
:loading="loading"
:disabled="!patientInfo"
:disabled="!patientInfo"
style="min-width: 140px;"
@click="handleConfirm"
>
确定 (O)
</el-button>
@@ -32,9 +32,9 @@
<el-button
type="danger"
size="large"
@click="handleClose"
:disabled="loading"
:disabled="loading"
style="min-width: 140px;"
@click="handleClose"
>
关闭 (C)
</el-button>
@@ -49,8 +49,8 @@
<el-input
v-model="searchForm.patientName"
placeholder="请输入"
@keyup.enter="handlePatientSearch"
clearable
@keyup.enter="handlePatientSearch"
/>
</div>
</el-col>
@@ -60,8 +60,8 @@
<el-input
v-model="searchForm.idCard"
placeholder="请输入"
@keyup.enter="handlePatientSearch"
clearable
@keyup.enter="handlePatientSearch"
/>
</div>
</el-col>
@@ -71,8 +71,8 @@
<el-input
v-model="searchForm.phoneNumber"
placeholder="请输入"
@keyup.enter="handlePatientSearch"
clearable
@keyup.enter="handlePatientSearch"
/>
</div>
</el-col>
@@ -85,40 +85,55 @@
<el-col :span="8">
<div class="info-item">
<label>门诊号码</label>
<div class="info-value">{{ patientInfo?.outpatientNo || '' }}</div>
<div class="info-value">
{{ patientInfo?.outpatientNo || '' }}
</div>
</div>
</el-col>
<el-col :span="8">
<div class="info-item">
<label>病人姓名</label>
<div class="info-value">{{ patientInfo?.patientName || '' }}</div>
<div class="info-value">
{{ patientInfo?.patientName || '' }}
</div>
</div>
</el-col>
<el-col :span="8">
<div class="info-item">
<label>身份证号码</label>
<div class="info-value">{{ patientInfo?.idCard || '' }}</div>
<div class="info-value">
{{ patientInfo?.idCard || '' }}
</div>
</div>
</el-col>
</el-row>
<el-row :gutter="20" style="margin-top: 15px;">
<el-row
:gutter="20"
style="margin-top: 15px;"
>
<el-col :span="8">
<div class="info-item">
<label>手机号码</label>
<div class="info-value">{{ patientInfo?.phoneNumber || '' }}</div>
<div class="info-value">
{{ patientInfo?.phoneNumber || '' }}
</div>
</div>
</el-col>
<el-col :span="8">
<div class="info-item">
<label>性别</label>
<div class="info-value">{{ patientInfo?.gender || '' }}</div>
<div class="info-value">
{{ patientInfo?.gender || '' }}
</div>
</div>
</el-col>
<el-col :span="8">
<div class="info-item">
<label>年龄</label>
<div class="info-value">{{ patientInfo?.age || '' }}</div>
<div class="info-value">
{{ patientInfo?.age || '' }}
</div>
</div>
</el-col>
</el-row>
@@ -131,8 +146,8 @@
<el-input
v-model="renewalForm.newOutpatientNo"
placeholder="请输入新门诊号码"
@keyup.enter="handleConfirm"
style="width: 250px;"
@keyup.enter="handleConfirm"
/>
</div>
</div>
@@ -152,12 +167,25 @@
<div style="width: 100%; background-color: #e6f4ff;">
<!-- 标题行 -->
<div style="display: flex; justify-content: flex-start; align-items: center; padding: 10px 20px;">
<h3 style="margin: 0; font-size: 16px; font-weight: 500; color: #303133;">病人档案查询</h3>
<h3 style="margin: 0; font-size: 16px; font-weight: 500; color: #303133;">
病人档案查询
</h3>
</div>
<!-- 按钮行 -->
<div style="display: flex; justify-content: flex-start; gap: 10px; padding: 10px 20px; background-color: #e6f4ff;">
<el-button type="primary" @click="confirmSelectPatient" style="background-color: #409eff; border-color: #409eff; padding: 8px 16px; font-size: 14px;">确认(Q)</el-button>
<el-button @click="showPatientList = false; selectedPatient = null" style="background-color: #f56c6c; border-color: #f56c6c; color: white; padding: 8px 16px; font-size: 14px;">关闭(C)</el-button>
<el-button
type="primary"
style="background-color: #409eff; border-color: #409eff; padding: 8px 16px; font-size: 14px;"
@click="confirmSelectPatient"
>
确认(Q)
</el-button>
<el-button
style="background-color: #f56c6c; border-color: #f56c6c; color: white; padding: 8px 16px; font-size: 14px;"
@click="showPatientList = false; selectedPatient = null"
>
关闭(C)
</el-button>
</div>
</div>
</template>
@@ -165,44 +193,68 @@
<el-table
:data="patientList"
style="width: 100%"
@row-click="selectPatient"
:row-key="row => row.identifierNo || row.patientId || row.cardNo"
:current-row-key="selectedPatient?.identifierNo || selectedPatient?.patientId || selectedPatient?.cardNo"
highlight-current-row
@row-click="selectPatient"
>
<el-table-column label="序号" width="60" type="index">
</el-table-column>
<el-table-column label="病人姓名" width="120">
<el-table-column
label="序号"
width="60"
type="index"
/>
<el-table-column
label="病人姓名"
width="120"
>
<template #default="scope">
{{ scope.row.patientName || scope.row.name || '-' }}
</template>
</el-table-column>
<el-table-column label="门诊号码" width="120">
<el-table-column
label="门诊号码"
width="120"
>
<template #default="scope">
{{ scope.row.identifierNo || scope.row.cardNo || scope.row.card_number || scope.row.就诊卡号 || scope.row.outpatientNumber || scope.row.outpatientNo || scope.row.门诊号码 || scope.row.卡号 || scope.row.card || scope.row.patientNo || scope.row.patient_id || '-' }}
</template>
</el-table-column>
<el-table-column label="身份证号码" width="200">
<el-table-column
label="身份证号码"
width="200"
>
<template #default="scope">
{{ scope.row.idCard || scope.row.id_card || scope.row.idNo || '-' }}
</template>
</el-table-column>
<el-table-column label="手机号码" width="120">
<el-table-column
label="手机号码"
width="120"
>
<template #default="scope">
{{ scope.row.phoneNumber || scope.row.phone || scope.row.mobile || scope.row.mobilePhone || '-' }}
</template>
</el-table-column>
<el-table-column label="性别" width="80">
<el-table-column
label="性别"
width="80"
>
<template #default="scope">
{{ scope.row.genderEnum_enumText || scope.row.gender || scope.row.sex || scope.row.性别 || scope.row.xb || scope.row.sexCode || scope.row.GENDER || scope.row.SEX || '-' }}
</template>
</el-table-column>
<el-table-column label="年龄" width="80">
<el-table-column
label="年龄"
width="80"
>
<template #default="scope">
{{ scope.row.age || '-' }}
</template>
</el-table-column>
<el-table-column label="出生年月" width="120">
<el-table-column
label="出生年月"
width="120"
>
<template #default="scope">
{{ formatDate(scope.row.birthDate || scope.row.birthday || scope.row.出生日期) || '-' }}
</template>
@@ -224,7 +276,7 @@
<!-- 移除底部按钮 -->
<template #footer>
<span></span>
<span />
</template>
</el-dialog>
@@ -236,9 +288,15 @@
:close-on-click-modal="false"
>
<div style="text-align: center; padding: 20px;">
<div class="success-icon">✓</div>
<p style="margin-top: 15px; font-size: 16px;">患者换卡操作已成功完成!</p>
<p style="margin-top: 10px;">新门诊号码:{{ renewalForm.newOutpatientNo }}</p>
<div class="success-icon">
</div>
<p style="margin-top: 15px; font-size: 16px;">
患者换卡操作已成功完成!
</p>
<p style="margin-top: 10px;">
新门诊号码:{{ renewalForm.newOutpatientNo }}
</p>
</div>
<template #footer>
<span class="dialog-footer">

View File

@@ -6,18 +6,18 @@
<div class="button-bar">
<el-button
type="primary"
@click="handleQuery"
:loading="loading"
:loading="loading"
size="large"
icon="el-icon-check"
@click="handleQuery"
>
确认(Q)
</el-button>
<el-button
type="danger"
@click="handleClose"
size="large"
icon="el-icon-close"
@click="handleClose"
>
关闭(C)
</el-button>
@@ -69,44 +69,76 @@
:data="patientList"
style="width: 100%"
stripe
@row-click="handleRowClick"
highlight-current-row
row-key="id"
:current-row-key="selectedPatient?.id"
@row-click="handleRowClick"
>
<el-table-column label="序号" type="index" width="80" align="center">
</el-table-column>
<el-table-column label="病人姓名" width="120" align="center">
<el-table-column
label="序号"
type="index"
width="80"
align="center"
/>
<el-table-column
label="病人姓名"
width="120"
align="center"
>
<template #default="scope">
{{ scope.row.patientName }}
</template>
</el-table-column>
<el-table-column label="门诊号码" width="150" align="center">
<el-table-column
label="门诊号码"
width="150"
align="center"
>
<template #default="scope">
{{ scope.row.outpatientNo || '-' }}
</template>
</el-table-column>
<el-table-column label="身份证号码" width="200" align="center">
<el-table-column
label="身份证号码"
width="200"
align="center"
>
<template #default="scope">
{{ scope.row.idCard || '-' }}
</template>
</el-table-column>
<el-table-column label="手机号码" width="120" align="center">
<el-table-column
label="手机号码"
width="120"
align="center"
>
<template #default="scope">
{{ scope.row.phoneNumber || '-' }}
</template>
</el-table-column>
<el-table-column label="性别" width="80" align="center">
<el-table-column
label="性别"
width="80"
align="center"
>
<template #default="scope">
{{ scope.row.gender }}
</template>
</el-table-column>
<el-table-column label="年龄" width="80" align="center">
<el-table-column
label="年龄"
width="80"
align="center"
>
<template #default="scope">
{{ scope.row.age }}
</template>
</el-table-column>
<el-table-column label="出生年月" width="120" align="center">
<el-table-column
label="出生年月"
width="120"
align="center"
>
<template #default="scope">
{{ scope.row.birthDate }}
</template>

View File

@@ -1,22 +1,43 @@
<template>
<div style="display: flex; justify-content: space-between" class="app-container" v-loading="loading"
:element-loading-text="loadingText">
<div
v-loading="loading"
style="display: flex; justify-content: space-between"
class="app-container"
:element-loading-text="loadingText"
>
<!-- 左侧患者基本信息区 -->
<el-card style="width: 30%">
<template #header>
<span style="vertical-align: middle">患者基本信息</span>
</template>
<el-descriptions :column="1" border>
<el-descriptions-item label="病历号">{{ patientInfo.encounterBusNo }}</el-descriptions-item>
<el-descriptions-item label="姓名">{{ patientInfo.patientName }}</el-descriptions-item>
<el-descriptions-item label="性别">{{ patientInfo.genderEnum_enumText }}</el-descriptions-item>
<el-descriptions-item label="年龄">{{ patientInfo.age }}</el-descriptions-item>
<el-descriptions-item label="科室">{{ patientInfo.organizationName }}</el-descriptions-item>
<el-descriptions
:column="1"
border
>
<el-descriptions-item label="病历号">
{{ patientInfo.encounterBusNo }}
</el-descriptions-item>
<el-descriptions-item label="姓名">
{{ patientInfo.patientName }}
</el-descriptions-item>
<el-descriptions-item label="性别">
{{ patientInfo.genderEnum_enumText }}
</el-descriptions-item>
<el-descriptions-item label="年龄">
{{ patientInfo.age }}
</el-descriptions-item>
<el-descriptions-item label="科室">
{{ patientInfo.organizationName }}
</el-descriptions-item>
<el-descriptions-item label="就诊时间">
{{ formatDateStr(patientInfo.receptionTime, 'YYYY-MM-DD HH:mm:ss') }}
</el-descriptions-item>
<el-descriptions-item label="手术单号">{{ surgeryInfo.surgeryNo }}</el-descriptions-item>
<el-descriptions-item label="手术名称">{{ surgeryInfo.surgeryName }}</el-descriptions-item>
<el-descriptions-item label="手术单号">
{{ surgeryInfo.surgeryNo }}
</el-descriptions-item>
<el-descriptions-item label="手术名称">
{{ surgeryInfo.surgeryName }}
</el-descriptions-item>
</el-descriptions>
</el-card>
@@ -27,13 +48,27 @@
<span style="vertical-align: middle">收费项目</span>
</template>
<div style="margin-bottom: 10px">
<el-button type="primary" @click="confirmCharge()" :disabled="buttonDisabled">
<el-button
type="primary"
:disabled="buttonDisabled"
@click="confirmCharge()"
>
确认收费
</el-button>
<el-button type="primary" plain @click="handleReadCard('01')" style="width: 65px">
<el-button
type="primary"
plain
style="width: 65px"
@click="handleReadCard('01')"
>
电子凭证
</el-button>
<el-button type="primary" plain @click="handleReadCard('03')" style="width: 65px">
<el-button
type="primary"
plain
style="width: 65px"
@click="handleReadCard('03')"
>
医保卡
</el-button>
<span style="float: right">
@@ -42,43 +77,103 @@
</div>
<el-table
ref="chargeListRef"
v-loading="chargeLoading"
height="530"
:data="chargeList"
row-key="id"
@selection-change="handleSelectionChange"
v-loading="chargeLoading"
:span-method="objectSpanMethod"
border
@selection-change="handleSelectionChange"
>
<el-table-column type="selection" :selectable="checkSelectable" width="55" />
<el-table-column label="单据号" align="center" prop="busNo" width="180" />
<el-table-column label="收费项目" align="center" prop="itemName" width="200" />
<el-table-column label="数量" align="center" prop="quantityValue" width="80" />
<el-table-column label="医疗类型" align="center" prop="medTypeCode_dictText" />
<el-table-column label="医保编码" align="center" prop="ybNo" />
<el-table-column label="费用性质" align="center" prop="contractName" />
<el-table-column label="收费状态" align="center" prop="statusEnum_enumText" width="150">
<el-table-column
type="selection"
:selectable="checkSelectable"
width="55"
/>
<el-table-column
label="单据号"
align="center"
prop="busNo"
width="180"
/>
<el-table-column
label="收费项目"
align="center"
prop="itemName"
width="200"
/>
<el-table-column
label="数量"
align="center"
prop="quantityValue"
width="80"
/>
<el-table-column
label="医疗类型"
align="center"
prop="medTypeCode_dictText"
/>
<el-table-column
label="医保编码"
align="center"
prop="ybNo"
/>
<el-table-column
label="费用性质"
align="center"
prop="contractName"
/>
<el-table-column
label="收费状态"
align="center"
prop="statusEnum_enumText"
width="150"
>
<template #default="scope">
<el-tag v-if="scope.row.statusEnum === 1" disable-transitions>
<el-tag
v-if="scope.row.statusEnum === 1"
disable-transitions
>
{{ scope.row.statusEnum_enumText }}
</el-tag>
<el-tag v-else-if="scope.row.statusEnum === 5" type="success" disable-transitions>
<el-tag
v-else-if="scope.row.statusEnum === 5"
type="success"
disable-transitions
>
{{ scope.row.statusEnum_enumText }}
</el-tag>
<el-tag v-else-if="scope.row.statusEnum === 8" type="danger" disable-transitions>
<el-tag
v-else-if="scope.row.statusEnum === 8"
type="danger"
disable-transitions
>
{{ scope.row.statusEnum_enumText }}
</el-tag>
<el-tag v-else type="warning" disable-transitions>
<el-tag
v-else
type="warning"
disable-transitions
>
{{ scope.row.statusEnum_enumText }}
</el-tag>
</template>
</el-table-column>
<el-table-column label="金额" align="right" prop="totalPrice" header-align="center">
<el-table-column
label="金额"
align="right"
prop="totalPrice"
header-align="center"
>
<template #default="scope">
{{ scope.row.totalPrice.toFixed(2) + ' 元' || '0.00' + ' 元' }}
</template>
</el-table-column>
<el-table-column label="收款人" align="center" prop="entererId_dictText" />
<el-table-column
label="收款人"
align="center"
prop="entererId_dictText"
/>
<el-table-column
label="操作"
align="center"
@@ -105,18 +200,18 @@
<ChargeDialog
ref="chargeDialogRef"
:open="openDialog"
@close="handleClose"
:category="patientInfo.categoryEnum"
:totalAmount="totalAmount"
:patientInfo="patientInfo"
:chargeItemIds="chargeItemIdList"
:consumablesIdList="consumablesIdList"
:chrgBchnoList="chrgBchnoList"
:userCardInfo="userCardInfo"
:paymentId="paymentId"
:total-amount="totalAmount"
:patient-info="patientInfo"
:charge-item-ids="chargeItemIdList"
:consumables-id-list="consumablesIdList"
:chrg-bchno-list="chrgBchnoList"
:user-card-info="userCardInfo"
:payment-id="paymentId"
:details="details"
:chargedItems="chargedItems"
:feeType="patientInfo.medfeePaymtdCode"
:charged-items="chargedItems"
@close="handleClose"
:fee-type="patientInfo.medfeePaymtdCode"
:medfee_paymtd_code="medfee_paymtd_code"
@refresh="getChargeList"
/>

View File

@@ -1,48 +1,169 @@
<template>
<div class="app-continer">
<el-form :model="queryParams" ref="queryRef" :inline="true">
<el-form-item label="患者姓名" prop="patientName">
<el-input v-model="queryParams.searchKey" placeholder="请输入患者姓名" />
<el-form
ref="queryRef"
:model="queryParams"
:inline="true"
>
<el-form-item
label="患者姓名"
prop="patientName"
>
<el-input
v-model="queryParams.searchKey"
placeholder="请输入患者姓名"
/>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
<el-button icon="Refresh" @click="resetQuery">重置</el-button>
<el-button
type="primary"
icon="Search"
@click="handleQuery"
>
搜索
</el-button>
<el-button
icon="Refresh"
@click="resetQuery"
>
重置
</el-button>
</el-form-item>
</el-form>
<el-table :data="recordList" v-loading="loading" border ref="tableRef">
<el-table-column label="患者姓名" align="center" prop="patientName" :show-overflow-tooltip="true" />
<el-table-column label="支付单号" align="center" prop="paymentBusNo" :show-overflow-tooltip="true" />
<el-table-column label="交易金额(元)" align="right" prop="txnAmt" header-align="center" width="100"
:show-overflow-tooltip="true">
</el-table-column>
<el-table-column label="交易类型" align="center" prop="tranType" :show-overflow-tooltip="true" />
<el-table-column label="支付方式" align="center" prop="payType" :show-overflow-tooltip="true" />
<el-table-column label="交易时间" align="center" prop="txnTime" :show-overflow-tooltip="true">
<el-table
ref="tableRef"
v-loading="loading"
:data="recordList"
border
>
<el-table-column
label="患者姓名"
align="center"
prop="patientName"
:show-overflow-tooltip="true"
/>
<el-table-column
label="支付单号"
align="center"
prop="paymentBusNo"
:show-overflow-tooltip="true"
/>
<el-table-column
label="交易金额(元)"
align="right"
prop="txnAmt"
header-align="center"
width="100"
:show-overflow-tooltip="true"
/>
<el-table-column
label="交易类型"
align="center"
prop="tranType"
:show-overflow-tooltip="true"
/>
<el-table-column
label="支付方式"
align="center"
prop="payType"
:show-overflow-tooltip="true"
/>
<el-table-column
label="交易时间"
align="center"
prop="txnTime"
:show-overflow-tooltip="true"
>
<template #default="scope">
<span>{{ parseTime(scope.row.txnTime) }}</span>
</template>
</el-table-column>
<el-table-column label="原交易类型" align="center" prop="orgTranType" :show-overflow-tooltip="true" />
<el-table-column label="原交易类型" align="center" prop="orgTranType" :show-overflow-tooltip="true" />
<el-table-column label="第三方优惠说明" align="center" prop="otherMsg" :show-overflow-tooltip="true" />
<el-table-column label="错误信息" align="center" prop="errMsg" :show-overflow-tooltip="true" />
<el-table-column label="查询结果" align="center" prop="queryResult" :show-overflow-tooltip="true" />
<el-table-column label="查询结果说明" align="center" prop="queryResultMsg" :show-overflow-tooltip="true" />
<el-table-column label="操作" align="center" prop="paymentEnum_enumText" width="340">
<el-table-column
label="原交易类型"
align="center"
prop="orgTranType"
:show-overflow-tooltip="true"
/>
<el-table-column
label="原交易类型"
align="center"
prop="orgTranType"
:show-overflow-tooltip="true"
/>
<el-table-column
label="第三方优惠说明"
align="center"
prop="otherMsg"
:show-overflow-tooltip="true"
/>
<el-table-column
label="错误信息"
align="center"
prop="errMsg"
:show-overflow-tooltip="true"
/>
<el-table-column
label="查询结果"
align="center"
prop="queryResult"
:show-overflow-tooltip="true"
/>
<el-table-column
label="查询结果说明"
align="center"
prop="queryResultMsg"
:show-overflow-tooltip="true"
/>
<el-table-column
label="操作"
align="center"
prop="paymentEnum_enumText"
width="340"
>
<template #default="scope">
<el-button type="primary" link :disabled="!scope.row.paymentId"
@click="getPayInfo(scope.row.paymentId)">支付结果查询</el-button>
<el-button type="warning" link :disabled="!scope.row.paymentId"
@click="returnFee(scope.row.paymentId)">退费</el-button>
<el-button type="danger" link auto-insert-space :disabled="!scope.row.paymentId"
@click="returnFeeNext(scope.row.paymentId)">隔天退费</el-button>
<el-button type="success" link @click="returnFeeResultQuery(scope.row.id)">退费结果查询</el-button>
<el-button
type="primary"
link
:disabled="!scope.row.paymentId"
@click="getPayInfo(scope.row.paymentId)"
>
支付结果查询
</el-button>
<el-button
type="warning"
link
:disabled="!scope.row.paymentId"
@click="returnFee(scope.row.paymentId)"
>
退费
</el-button>
<el-button
type="danger"
link
auto-insert-space
:disabled="!scope.row.paymentId"
@click="returnFeeNext(scope.row.paymentId)"
>
隔天退费
</el-button>
<el-button
type="success"
link
@click="returnFeeResultQuery(scope.row.id)"
>
退费结果查询
</el-button>
</template>
</el-table-column>
</el-table>
<pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNo" v-model:limit="queryParams.pageSize"
@pagination="getLists" />
<pagination
v-show="total > 0"
v-model:page="queryParams.pageNo"
v-model:limit="queryParams.pageSize"
:total="total"
@pagination="getLists"
/>
</div>
</template>