feat: 门诊手术中计费功能

- 数据库:在adm_charge_item表添加SourceBillNo字段
- 后端实体类:更新ChargeItem.java添加SourceBillNo字段
- 前端组件:创建手术计费界面(基于门诊划价界面)
- 后端API:扩展PrePrePaymentDto支持手术计费标识
- 后端Service:扩展getChargeItems方法支持手术计费过滤
- 门诊手术安排界面:添加【计费】按钮

注意事项:
- 需要手动执行SQL脚本:openhis-server-new/sql/add_source_bill_no_to_adm_charge_item.sql
- 术后一站式结算功能待后续开发
This commit is contained in:
2026-02-05 23:47:02 +08:00
parent f3d56bff45
commit 89bf85fd97
117 changed files with 30248 additions and 44 deletions

View File

@@ -93,10 +93,11 @@
</template>
</el-table-column>
<el-table-column label="操作人" align="center" width="100" prop="createByName" />
<el-table-column label="操作" align="center" width="180" fixed="right">
<el-table-column label="操作" align="center" width="240" fixed="right">
<template #default="scope">
<el-button link type="primary" @click="handleView(scope.row)">查看</el-button>
<el-button link type="primary" @click="handleEdit(scope.row)">编辑</el-button>
<el-button link type="success" @click="handleChargeCharge(scope.row)">计费</el-button>
<el-button link type="danger" @click="handleDelete(scope.row)" v-has="['surgicalSchedule:delete']">取消</el-button>
</template>
</el-table-column>
@@ -775,10 +776,11 @@ import download from '@/plugins/download'
// API 导入
import { getSurgerySchedulePage, addSurgerySchedule, updateSurgerySchedule, deleteSurgerySchedule, getSurgeryScheduleDetail } from '@/api/surgicalschedule'
import { listUser } from '@/api/system/user'
import { deptTreeSelect } from '@/api/system/user'
import { deptTreeSelectSelect } from '@/api/system/user'
import { listOperatingRoom } from '@/api/operatingroom'
import { getTestResultPage} from '@/views/inpatientDoctor/home/components/applicationShow/api.js'
import { getTenantPage } from '@/api/system/tenant'
import SurgeryCharge from './charge/surgerycharge/index.vue'
const { proxy } = getCurrentInstance()
const loading = ref(true)
@@ -1156,6 +1158,40 @@ function handleDelete(row) {
})
}
// 手术计费
function handleChargeCharge(row) {
// 打开手术计费对话框
// 传递患者信息和手术信息
const patientInfo = {
encounterId: row.patientId, // 就诊ID
patientId: row.patientId,
patientName: row.patientName,
genderEnum: row.gender,
age: row.age,
organizationName: row.applyDeptName,
receptionTime: row.scheduleDate,
encounterBusNo: row.visitId,
categoryEnum: 1, // 门诊
};
const surgeryInfo = {
surgeryNo: row.operCode, // 手术单号
surgeryName: row.operName, // 手术名称
};
// 使用el-dialog显示手术计费组件
proxy.$modal.open({
title: '手术计费',
component: SurgeryCharge,
props: {
patientInfo,
surgeryInfo
},
width: '1400px',
fullscreen: false,
});
}
// 重置表单
function resetForm() {
Object.assign(form, {