提交merge1.3

This commit is contained in:
2025-12-27 15:30:40 +08:00
parent 088861f66e
commit 3c497417dc
167 changed files with 0 additions and 17577 deletions

View File

@@ -129,9 +129,6 @@ export function getChargeInfo(param) {
method: 'get',
params: param
})
<<<<<<< HEAD
}
=======
}
/**
@@ -154,4 +151,3 @@ export function WxPayResult (data) {
method: 'get',
});
}
>>>>>>> v1.3

View File

@@ -31,43 +31,6 @@
<template v-for="(item, index) in formData.selfPay" :key="index">
<div v-show="item.payEnum != 220500" class="payment-item">
<span>支付方式</span>
<<<<<<< HEAD
<el-select
v-model="item.payEnum"
placeholder="选择支付方式"
style="width: 160px"
@change="clearAmount(index)"
>
<el-option
v-for="payEnum in selfPayMethods"
:key="payEnum.value"
:label="payEnum.label"
:value="payEnum.value"
:disabled="isMethodDisabled(payEnum.value)"
/>
</el-select>
<span>支付金额</span>
<div class="suffix-wrapper">
<el-input-number
v-model="item.amount"
:precision="2"
:min="0"
:max="getMax(index)"
:controls="false"
placeholder="金额"
class="amount-input"
@change="handleAmountChange"
/>
<span class="suffix-text"></span>
</div>
<el-button
type="danger"
circle
:icon="Delete"
@click="removePayment(index)"
v-if="index > 0"
/>
=======
<img
v-if="item.payEnum == 220100 || item.payEnum == 220200"
:src="imgs[item.payEnum == 220100 ? 0 : 1]"
@@ -108,7 +71,6 @@
@click="removePayment(index)"
v-if="index > 0"
/>
>>>>>>> v1.3
</div>
</template>
<div class="add-payment">
@@ -136,8 +98,6 @@
/>
</el-radio-group>
</div>
<<<<<<< HEAD
=======
</div>
<div class="payment-item">
<span>{{ payTypeText }}支付</span>
@@ -149,7 +109,6 @@
/>
<el-button link type="primary" @click="handleWxPay()">扫码支付</el-button>
<el-button link type="primary" @click="getWxPayResult()">查看结果</el-button>
>>>>>>> v1.3
</div>
<div>
<el-table :data="props.details" max-height="200" border>
@@ -194,9 +153,6 @@
</template>
<script setup>
<<<<<<< HEAD
import { savePayment, unprecharge, dispenseMedicalConsumables, getChargeInfo } from './api';
=======
import {
savePayment,
unprecharge,
@@ -205,7 +161,6 @@ import {
WxPayResult,
getChargeInfo,
} from './api';
>>>>>>> v1.3
import { computed, watch, reactive, ref, getCurrentInstance, nextTick } from 'vue';
import { Delete } from '@element-plus/icons-vue';
import { debounce } from 'lodash-es';
@@ -264,13 +219,6 @@ const props = defineProps({
const { proxy } = getCurrentInstance();
<<<<<<< HEAD
const { charge_discount } = proxy.useDict('charge_discount');
const userStore = useUserStore();
const discountRadio = ref(undefined);
const discountAmount = ref(0);
=======
// 单位字典
const { unit_code } = proxy.useDict('unit_code');
@@ -278,7 +226,6 @@ const userStore = useUserStore();
const discountRadio = ref();
const discountAmount = ref(0);
const txtCode = ref('');
>>>>>>> v1.3
const formData = reactive({
totalAmount: 0,
@@ -301,121 +248,6 @@ watch(
const emit = defineEmits(['close']);
let displayAmountTemp = 0;
<<<<<<< HEAD
// 打印小票
function printReceipt(param) {
let total = 0;
props.chargedItems.forEach((item) => {
total += item.totalPrice || 0;
});
// 构造一个新的对象,添加头 "data"
const result = {
data: [
{
...param,
// 基础支付类型
YB_FUND_PAY:
param.detail?.find((t) => t.payEnum === 100000)?.amount.toFixed(2) + ' 元' ?? 0, // 基金支付总额
SELF_PAY: param.detail?.find((t) => t.payEnum === 200000)?.amount.toFixed(2) + ' 元' ?? 0, // 个人负担总金额
OTHER_PAY: param.detail?.find((t) => t.payEnum === 300000)?.amount ?? 0, // 其他(如医院负担金额)
// 基本医保统筹基金支出
YB_TC_FUND_AMOUNT:
param.detail?.find((t) => t.payEnum === 110000)?.amount.toFixed(2) + ' 元' ?? 0, // 基本医保统筹基金支出
YB_BC_FUND_AMOUNT:
param.detail?.find((t) => t.payEnum === 120000)?.amount.toFixed(2) + ' 元' ?? 0, // 补充医疗保险基金支出
YB_JZ_FUND_AMOUNT:
param.detail?.find((t) => t.payEnum === 130000)?.amount.toFixed(2) + ' 元' ?? 0, // 医疗救助基金支出
// YB_OTHER_AMOUNT: param.detail.find((t) => t.payEnum === 140000)?.amount ?? 0, // 其他支出
// 职工基本医疗保险
// YB_TC_ZG_FUND_VALUE: param.detail.find((t) => t.payEnum === 110100)?.amount ?? 0, // 职工基本医疗保险
// YB_TC_JM_FUND_VALUE: param.detail.find((t) => t.payEnum === 110200)?.amount ?? 0, // 居民基本医疗保险(修正原错误注释)
// 补充医疗保险基金支出细分
// YB_BC_JM_DB_VALUE: param.detail.find((t) => t.payEnum === 120100)?.amount ?? 0, // 全体参保人的居民大病保险
// YB_BC_DE_BZ_VALUE: param.detail.find((t) => t.payEnum === 120200)?.amount ?? 0, // 大额医疗费用补助
// YB_BC_ZG_DE_BZ_VALUE: param.detail.find((t) => t.payEnum === 120300)?.amount ?? 0, // 企业职工大额医疗费用补助
// YB_BC_GWY_BZ_VALUE: param.detail.find((t) => t.payEnum === 120400)?.amount ?? 0, // 公务员医疗补助
// 其他支出细分
// OTHER_PAY_DD_FUND_VALUE: param.detail.find((t) => t.payEnum === 300001)?.amount ?? 0, // 兜底基金支出
// OTHER_PAY_YW_SH_FUND_VALUE: param.detail.find((t) => t.payEnum === 300002)?.amount ?? 0, // 意外伤害基金支出
// OTHER_PAY_LX_YL_FUND_VALUE: param.detail.find((t) => t.payEnum === 300003)?.amount ?? 0, // 离休人员医疗保障金支出
// OTHER_PAY_LX_YH_FUND_VALUE: param.detail.find((t) => t.payEnum === 300004)?.amount ?? 0, // 离休人员优惠金支出
// OTHER_PAY_CZ_FUND_VALUE: param.detail.find((t) => t.payEnum === 300005)?.amount ?? 0, // 财政基金支出
// OTHER_PAY_CZ_YZ_FUND_VALUE: param.detail.find((t) => t.payEnum === 300006)?.amount ?? 0, // 财政预支支出
// OTHER_PAY_ZG_DB_FUND_VALUE: param.detail.find((t) => t.payEnum === 300007)?.amount ?? 0, // 职工大病基金支出
// OTHER_PAY_EY_FUND_VALUE: param.detail.find((t) => t.payEnum === 300008)?.amount ?? 0, // 二乙基金支出
// OTHER_PAY_QX_JZ_FUND_VALUE: param.detail.find((t) => t.payEnum === 300009)?.amount ?? 0, // 倾斜救助支出
// OTHER_PAY_YL_JZ_FUND_VALUE: param.detail.find((t) => t.payEnum === 300010)?.amount ?? 0, // 医疗救助再救助基金
// HOSP_PART_AMT: param.detail.find((t) => t.payEnum === 300011)?.amount ?? 0, // 医院负担金额
// 医保结算返回值
FULAMT_OWNPAY_AMT:
param.detail?.find((t) => t.payEnum === 1)?.amount.toFixed(2) + ' 元' ?? 0, // 全自费金额
// OVERLMT_SELFPAY: param.detail.find((t) => t.payEnum === 3)?.amount ?? 0, // 超限价自费费用
// PRESELFPAY_AMT: param.detail.find((t) => t.payEnum === 4)?.amount ?? 0, // 先行自付金额
INSCP_SCP_AMT: param.detail?.find((t) => t.payEnum === 5)?.amount.toFixed(2) + ' 元' ?? 0, // 符合政策范围金额
// ACT_PAY_DEDC: param.detail.find((t) => t.payEnum === 6)?.amount ?? 0, // 实际支付起付线
// POOL_PROP_SELFPAY: param.detail.find((t) => t.payEnum === 7)?.amount ?? 0, // 基本医疗保险统筹基金支付比例
// BALC: param.detail.find((t) => t.payEnum === 8)?.amount ?? 0, // 余额
// 特殊支付方式
SELF_YB_ZH_PAY:
param.detail?.find((t) => t.payEnum === 210000)?.amount.toFixed(2) + ' 元' ?? 0, // 个人医保账户支付
// SELF_YB_ZH_GJ_VALUE: param.detail.find((t) => t.payEnum === 210100)?.amount ?? 0, // 账户共济支付金额
// SELF_CASH_PAY: param.detail.find((t) => t.payEnum === 220000)?.amount ?? 0, // 个人现金支付金额
// SELF_VX_PAY: param.detail.find((t) => t.payEnum === 230000)?.amount ?? 0, // 微信支付金额
// SELF_ALI_PAY: param.detail.find((t) => t.payEnum === 240000)?.amount ?? 0, // 阿里支付金额
// 现金支付细分
// SELF_CASH_VALUE: param.detail.find((t) => t.payEnum === 220400)?.amount ?? 0, // 个人现金支付金额(现金)
// SELF_CASH_VX_VALUE: param.detail.find((t) => t.payEnum === 220100)?.amount ?? 0, // 个人现金支付金额(微信)
// SELF_CASH_ALI_VALUE: param.detail.find((t) => t.payEnum === 220200)?.amount ?? 0, // 个人现金支付金额(支付宝)
// SELF_CASH_UNION_VALUE: param.detail.find((t) => t.payEnum === 220300)?.amount ?? 0, // 个人现金支付金额(银联)
// 基金类型(扩展)
// BIRTH_FUND: param.detail.find((t) => t.payEnum === 510100)?.amount ?? 0, // 生育基金
// RETIREE_MEDICAL: param.detail.find((t) => t.payEnum === 340100)?.amount ?? 0, // 离休人员医疗保障基金
// URBAN_BASIC_MEDICAL: param.detail.find((t) => t.payEnum === 390100)?.amount ?? 0, // 城乡居民基本医疗保险基金
// URBAN_SERIOUS_ILLNESS: param.detail.find((t) => t.payEnum === 390200)?.amount ?? 0, // 城乡居民大病医疗保险基金
// MEDICAL_ASSISTANCE: param.detail.find((t) => t.payEnum === 610100)?.amount ?? 0, // 医疗救助基金
// GOVERNMENT_SUBSIDY: param.detail.find((t) => t.payEnum === 640100)?.amount ?? 0, // 政府兜底基金
// ACCIDENT_INSURANCE: param.detail.find((t) => t.payEnum === 390400)?.amount ?? 0, // 意外伤害基金
// CARE_INSURANCE: param.detail.find((t) => t.payEnum === 620100)?.amount ?? 0, // 照护保险基金
// FINANCIAL_FUND: param.detail.find((t) => t.payEnum === 360100)?.amount ?? 0, // 财政基金
// HOSPITAL_ADVANCE: param.detail.find((t) => t.payEnum === 999900)?.amount ?? 0, // 医院垫付
// SUPPLEMENTARY_INSURANCE: param.detail.find((t) => t.payEnum === 390300)?.amount ?? 0, // 城乡居民大病补充保险基金
// HEALTHCARE_PREPAYMENT: param.detail.find((t) => t.payEnum === 360300)?.amount ?? 0, // 保健预支基金
Mr_QR_Code: param.regNo,
sex: props.patientInfo.genderEnum_enumText,
age: props.patientInfo.age,
personType: '职工医保',
fixmedinsName: param.fixmedinsName + '门诊收费明细',
name: props.patientInfo.patientName, // 姓名
gender: props.patientInfo.genderEnum_enumText, // 性别
age: props.patientInfo.age, // 年龄
encounterBusNo: props.patientInfo.encounterBusNo, // 病例号
currentDate: currentDate.value, // 收费日期
chargedItems: props.chargedItems, // 收费项目
totalAmount: props.totalAmount.toFixed(2) + ' 元', // 应收金额
itemTotalAmount: total.toFixed(2) + ' 元', // 应收金额
displayAmount: displayAmountTemp + ' 元', // 实收金额
returnedAmount: returnedAmount.value + ' 元', // 应找零
userName: userStore.nickName,
},
],
};
const printElements = templateJson;
var hiprintTemplate = new hiprint.PrintTemplate({ template: printElements }); // 定义模板
hiprintTemplate.print2(result.data[0], {
printer: 'xp',
title: '门诊收费结算单',
});
=======
// 获取单位字典数据的方法
const getUnitLabel = (unitCode) => {
@@ -748,12 +580,9 @@ async function printReceipt(param) {
console.error('打印失败:', error);
proxy.$modal.msgError('打印失败: ' + error.message);
}
>>>>>>> v1.3
}
const throttledGetList = debounce(submit, 300);
<<<<<<< HEAD
=======
function handleWxPay() {
wxPay({
txtCode: txtCode.value,
@@ -778,7 +607,6 @@ function getWxPayResult() {
});
}
>>>>>>> v1.3
function handleOpen() {
formData.totalAmount = props.totalAmount;
formData.selfPay[0].amount = props.totalAmount;
@@ -786,11 +614,6 @@ function handleOpen() {
async function submit() {
displayAmountTemp = displayAmount.value;
<<<<<<< HEAD
console.log(parseFloat(displayAmount.value), 'parseFloat(displayAmount.value)');
console.log(formData.totalAmount, 'formData.totalAmount');
=======
>>>>>>> v1.3
let amount = formData.selfPay
.reduce((sum, item) => {
@@ -813,12 +636,8 @@ async function submit() {
.then((res) => {
if (res.code == 200) {
getChargeInfo({ paymentId: props.paymentId }).then((res) => {
<<<<<<< HEAD
printReceipt(res.data);
=======
// 传递完整的选中数据信息到打印方法
printReceipt({ ...res.data, chargedItems: props.chargedItems });
>>>>>>> v1.3
});
formData.selfPay = [{ payEnum: 220100, amount: 0.0, payLevelEnum: 2 }];
emit('close', 'success', res.msg);
@@ -874,19 +693,11 @@ async function print() {
const currentDate = ref(new Date().toLocaleString());
const selfPayMethods = [
<<<<<<< HEAD
{ label: '现金', value: 220400 },
{ label: '微信', value: 220100 },
{ label: '支付宝', value: 220200 },
{ label: '银联', value: 220300 },
{ label: '优惠', value: 220500 },
=======
{ label: '现金', value: 220400, isWebPay: false },
{ label: '微信', value: 220100, isWebPay: true },
{ label: '支付宝', value: 220200, isWebPay: true },
{ label: '银联', value: 220300, isWebPay: true },
{ label: '优惠', value: 220500, isWebPay: false },
>>>>>>> v1.3
];
// 计算剩余可输入金额

View File

@@ -83,20 +83,6 @@
:disabled="buttonDisabled">
自费转医保
</el-button>
<<<<<<< HEAD
<el-button type="primary" @click="studentPayTosStudentSelf()" style="margin-left: 20px"
:disabled="buttonDisabled">
学生医保转学生自费
</el-button>
<el-button type="primary" @click="studentSelfToStudentPay()" style="margin-left: 20px"
:disabled="buttonDisabled">
学生自费转学生医保
</el-button>
<span style="float: right">合计金额{{ totalAmounts ? totalAmounts.toFixed(2) : 0 }}</span>
</div>
<el-table ref="chargeListRef" height="530" :data="chargeList" row-key="id"
@selection-change="handleSelectionChange" v-loading="chargeLoading" :span-method="objectSpanMethod" border>
=======
<el-button
type="primary"
@click="studentPayTosStudentSelf()"
@@ -127,7 +113,6 @@
:span-method="objectSpanMethod"
border
>
>>>>>>> v1.3
<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" />
@@ -137,9 +122,6 @@
<el-table-column label="费用性质" align="center" prop="contractName" />
<el-table-column label="收费状态" align="center" prop="statusEnum_enumText" width="150">
<template #default="scope">
<<<<<<< HEAD
<el-tag :type="scope.row.statusEnum === 1 ? 'default' : 'success'" disable-transitions>
=======
<el-tag v-if="scope.row.statusEnum === 1" disable-transitions>
{{ scope.row.statusEnum_enumText }}
</el-tag>
@@ -150,7 +132,6 @@
{{ scope.row.statusEnum_enumText }}
</el-tag>
<el-tag v-else type="warning" disable-transitions>
>>>>>>> v1.3
{{ scope.row.statusEnum_enumText }}
</el-tag>
</template>
@@ -161,11 +142,6 @@
</template>
</el-table-column>
<el-table-column label="收款人" align="center" prop="entererId_dictText" />
<<<<<<< HEAD
<el-table-column label="操作" align="center" fixed="right" header-align="center" class-name="no-hover-column">
<template #default="scope">
<el-button :disabled="!scope.row.paymentId" link type="primary" @click="printCharge(scope.row)">
=======
<el-table-column
label="操作"
align="center"
@@ -180,7 +156,6 @@
type="primary"
@click="printCharge(scope.row)"
>
>>>>>>> v1.3
打印
</el-button>
</template>
@@ -292,10 +267,6 @@ function handleTotalAmount() {
totalAmounts.value = chargeList.value.reduce((accumulator, currentRow) => {
return new Decimal(accumulator).add(currentRow.totalPrice.toFixed(2) || 0);
}, new Decimal(0));
<<<<<<< HEAD
=======
>>>>>>> v1.3
} else {
totalAmounts.value = selectedRows.value.reduce((accumulator, currentRow) => {
return new Decimal(accumulator).add(currentRow.totalPrice.toFixed(2) || 0);
@@ -652,8 +623,6 @@ function objectSpanMethod({ row, column, rowIndex, columnIndex }) {
return [1, 1];
}
<<<<<<< HEAD
=======
// function printCharge(row) {
// // 打印功能实现
// let rows = [];
@@ -667,7 +636,6 @@ function objectSpanMethod({ row, column, rowIndex, columnIndex }) {
// proxy.$refs['chargeDialogRef'].printReceipt(res.data);
// });
// }
>>>>>>> v1.3
function printCharge(row) {
// 打印功能实现
let rows = [];
@@ -678,9 +646,6 @@ function printCharge(row) {
});
chargedItems.value = rows;
getChargeInfo({ paymentId: row.paymentId }).then((res) => {
<<<<<<< HEAD
proxy.$refs['chargeDialogRef'].printReceipt(res.data);
=======
// 设置实收金额
if (res.data && res.data.detail) {
const amountDetail = res.data.detail.find((item) => item.payEnum == 220000);
@@ -712,7 +677,6 @@ function printCharge(row) {
proxy.$refs['chargeDialogRef'].printReceipt(enhancedPrintData);
});
}
>>>>>>> v1.3
});
}
</script>
@@ -724,8 +688,4 @@ function printCharge(row) {
:deep(.el-table__body) tr:hover td.no-hover-column {
background-color: inherit !important;
}
<<<<<<< HEAD
</style>
=======
</style>
>>>>>>> v1.3

View File

@@ -166,16 +166,6 @@ const props = defineProps({
type: Object,
default: undefined,
},
<<<<<<< HEAD
medfee_paymtd_code: {
type: Array,
default: () => [],
},
feeType: {
type: String,
default: '',
}
=======
orgId: {
type: String,
default: '',
@@ -184,7 +174,6 @@ const props = defineProps({
type: String,
default: '',
},
>>>>>>> v1.3
});
const { proxy } = getCurrentInstance();

View File

@@ -228,38 +228,6 @@ export function gerPreInfo(userMaessage) {
return request({
url: '/yb-request/per-info',
method: 'post',
<<<<<<< HEAD
params: userMaessage
})
}
/**
* 根据就诊卡号查询挂号记录
* 注意此接口可能不存在实际使用getOutpatientRegistrationCurrent接口
* 保留此函数以便将来使用目前使用getOutpatientRegistrationCurrent替代
*/
export function getRegistrationByCardNo(query) {
// 如果后端提供了专门的接口,可以取消注释使用
// return request({
// url: '/charge-manage/register/encounter-by-card',
// method: 'get',
// params: query
// })
// 暂时使用现有的接口
return getOutpatientRegistrationCurrent(query);
}
/**
* 补打挂号
*/
export function reprintRegistration(data) {
return request({
url: '/charge-manage/register/reprint',
method: 'post',
data: data
})
}
=======
params: userMaessage,
});
}
@@ -285,4 +253,3 @@ export function WxPayResult(data) {
data: data,
});
}
>>>>>>> v1.3

View File

@@ -10,10 +10,6 @@
<el-input v-model="form.name" clearable :disabled="isViewMode" />
</el-form-item>
</el-col>
<<<<<<< HEAD
<el-col :span="6">
<el-form-item label="民族" prop="nationalityCode" label-width="80px">
=======
<el-col :span="8">
<el-form-item label="性别" prop="genderEnum">
<el-radio-group v-model="form.genderEnum" :disabled="isViewMode">
@@ -66,7 +62,6 @@
</el-col>
<el-col :span="8">
<el-form-item label="民族" prop="nationalityCode">
>>>>>>> v1.3
<el-select v-model="form.nationalityCode" clearable filterable :disabled="isViewMode">
<el-option
v-for="item in nationality_code"
@@ -106,87 +101,10 @@
<!-- 第二行证件类别证件号码*年龄 -->
<el-row :gutter="10">
<el-col :span="8">
<<<<<<< HEAD
<el-form-item label="证件类别" prop="typeCode" label-width="80px">
<el-select
v-model="form.typeCode"
placeholder="就诊卡"
clearable
:disabled="isViewMode"
>
<el-option
v-for="dict in sys_idtype"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</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" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="年龄" prop="age" label-width="80px">
<el-input
v-model="form.age"
:disabled="isViewMode"
@input="handleAgeInput"
placeholder="请输入龄"
>
<template #suffix></template>
</el-input>
</el-form-item>
</el-col>
</el-row>
<!-- 第三行国籍*联系方式工作单位 -->
<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-option
v-for="item in countryCodeList"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</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>
</el-col>
<el-col :span="8">
<el-form-item label="出生日期" prop="birthDate">
<el-date-picker
v-model="form.birthDate"
type="date"
placeholder="请选择出生日期"
format="YYYY年MM月DD日"
:disabled="isViewMode"
value-format="YYYY-MM-DD"
@change="handleBirthDateChange"
/>
</el-form-item>
</el-col>
</el-row>
<!-- 第三行就诊卡号职业邮政编码 -->
<el-row>
<el-col :span="8">
=======
>>>>>>> v1.3
<el-form-item label="就诊卡号" prop="identifierNo">
<el-input v-model="form.identifierNo" clearable :disabled="isViewMode" />
</el-form-item>
</el-col>
<<<<<<< HEAD
=======
<!-- <el-col :span="8">
<el-form-item label="国家编码" prop="countryCode">
<el-input v-model="form.countryCode" clearable :disabled="isViewMode" />
@@ -199,7 +117,6 @@
</el-form-item>
</el-col> -->
<el-row>
>>>>>>> v1.3
<el-col :span="8">
<el-form-item label="职业" prop="prfsEnum">
<el-select v-model="form.prfsEnum" placeholder="职业" clearable :disabled="isViewMode">
@@ -423,11 +340,7 @@
</template>
<script setup name="PatientAddDialog">
<<<<<<< HEAD
import { watch, defineProps } from "vue";
=======
import { watch } from 'vue';
>>>>>>> v1.3
import pcas from 'china-division/dist/pcas-code.json';
import { addPatient, patientlLists, getOutpatientRegistrationList } from './outpatientregistration';
import {
@@ -689,21 +602,9 @@ const validateGuardianInfo = (rule, value, callback) => {
const data = reactive({
isViewMode: false,
form: {
<<<<<<< HEAD
typeCode: '08',
birthDate: undefined,
age: undefined,
genderEnum: '1', // 默认设置为'男'
hukouAddressSelect: undefined,
hukouAddress: undefined,
postalCode: undefined,
companyAddress: undefined,
patientDerived: undefined,
=======
typeCode: '01',
tempFlag: '1',
// genderEnum: 0,
>>>>>>> v1.3
},
rules: {
name: [{ required: true, message: '姓名不能为空', trigger: 'change' },
@@ -720,22 +621,7 @@ const data = reactive({
genderEnum: [{ required: true, message: '请选择性别', trigger: 'change' }],
age: [{ required: true, message: '年龄不能为空', trigger: 'change' }],
phone: [{ required: true, message: '联系方式不能为空', trigger: 'change' }],
<<<<<<< HEAD
identifierNo: [{ required: true, message: '就诊卡号不能为空', trigger: 'change' }],
idCard: [
{ required: false, message: '证件号码不能为空', trigger: 'change' },
{ validator: validateIdCard, trigger: 'blur' },
{ validator: validateUniquePatient, trigger: 'blur' }
],
birthDate: [{ required: false, message: '请选择出生日期', trigger: 'change' }],
// 监护人信息条件验证规则
guardianName: [{ validator: validateGuardianInfo, trigger: 'blur' }],
guardianRelation: [{ validator: validateGuardianInfo, trigger: 'blur' }],
guardianPhone: [{ validator: validateGuardianInfo, trigger: 'blur' }],
guardianIdNo: [{ validator: validateGuardianInfo, trigger: 'blur' }],
=======
idCard: [{ required: true, message: '证件号不能为空', trigger: 'change' }],
>>>>>>> v1.3
},
});
@@ -757,76 +643,6 @@ const props = defineProps({
}
});
<<<<<<< HEAD
// 处理出生日期变化,自动计算年龄
function handleBirthDateChange() {
if (form.value.birthDate) {
const birthDate = new Date(form.value.birthDate);
const today = new Date();
let age = today.getFullYear() - birthDate.getFullYear();
const monthDiff = today.getMonth() - birthDate.getMonth();
// 计算精确年龄
if (monthDiff < 0 || (monthDiff === 0 && today.getDate() < birthDate.getDate())) {
age--;
}
form.value.age = age;
}
}
// 处理年龄输入,自动计算出生日期
function handleAgeInput() {
// 提取数字部分
const ageMatch = form.value.age.match(/\d+/);
if (ageMatch) {
const age = parseInt(ageMatch[0]);
// 移除非数字字符,保留数字和可能的单位
form.value.age = age ;
// 计算出生日期
const today = new Date();
const birthYear = today.getFullYear() - age;
const birthMonth = today.getMonth();
const birthDay = today.getDate();
const birthDate = new Date(birthYear, birthMonth, birthDay);
// 格式化为YYYY-MM-DD
const formattedBirthDate = birthDate.toISOString().split('T')[0];
form.value.birthDate = formattedBirthDate;
}
}
watch(
() => form.value.idCard,
(newIdCard) => {
if (newIdCard && newIdCard.length === 18) {
const birthYear = parseInt(newIdCard.substring(6, 10));
const birthMonth = parseInt(newIdCard.substring(10, 12));
const birthDay = parseInt(newIdCard.substring(12, 14));
// 设置出生日期
form.value.birthDate = `${birthYear}-${birthMonth.toString().padStart(2, '0')}-${birthDay.toString().padStart(2, '0')}`;
const today = new Date();
const currentYear = today.getFullYear();
const currentMonth = today.getMonth() + 1;
const currentDay = today.getDate();
let age = currentYear - birthYear;
// 如果当前月份小于出生月份或者月份相同但当前日期小于出生日期则年龄减1
if (currentMonth < birthMonth || (currentMonth === birthMonth && currentDay < birthDay)) {
age--;
}
form.value.age = age;
form.value.age = age ;
}
}
);
=======
// watch(
// () => form.value.idCard,
// (newIdCard) => {
@@ -851,7 +667,6 @@ watch(
// }
// }
// );
>>>>>>> v1.3
/** 查询菜单列表 */
function getList() {
patientlLists().then((response) => {

View File

@@ -11,11 +11,7 @@
<el-text size="large" style="display: block; margin-bottom: 15px">
退费日期{{ currentDate }}
</el-text>
<<<<<<< HEAD
<el-text size="large">费用性质{{ getFeeTypeText }}</el-text>
=======
<el-text size="large">费用性质{{ props.category || '自费' }}</el-text>
>>>>>>> v1.3
<div class="amount-row">
<el-text size="large">应退金额</el-text>
<el-text size="large" type="primary" class="amount">
@@ -160,39 +156,16 @@ const props = defineProps({
type: [],
default: [],
},
<<<<<<< HEAD
medfee_paymtd_code: {
type: Array,
default: () => [],
},
feeType: {
type: String,
default: '',
},
contractName: {
type: String,
default: '', // 新增:接收费用性质名称
},
registerInfo: {
type: Object,
default: () => ({}), // 原挂号记录信息
}
=======
eventType: {
type: String,
default: 1,
},
>>>>>>> v1.3
});
const { proxy } = getCurrentInstance();
const reason = ref('');
<<<<<<< HEAD
const userStore = useUserStore();
=======
const preCancelData = ref([]);
const loading = ref(false);
>>>>>>> v1.3
const formData = reactive({
totalAmount: 0,
@@ -255,29 +228,10 @@ watch(
function submit() {
console.log(props.chargeItemIds);
<<<<<<< HEAD
if (parseFloat(displayAmount.value) < formData.totalAmount) {
proxy.$modal.msgError('请输入正确的金额');
return;
}
// 获取当前时间作为退号操作日期
const returnDate = formatDateStr(new Date(), 'YYYY-MM-DD HH:mm:ss');
// 获取当前用户信息作为操作工号(使用用户管理中的用户账号)
// userStore.name 对应后端的 userName用户账号如 'admin'
const operatorId = userStore.name || null; // 退号操作工号(用户账号)
const operatorName = userStore.nickName || userStore.name || ''; // 退号操作人姓名
// 计算退款总金额
const refundAmount = formData.selfPay.reduce((sum, item) => sum + (Number(item.amount) || 0), 0);
=======
// if (parseFloat(displayAmount.value) < formData.totalAmount) {
// proxy.$modal.msgError('请输入正确的金额');
// return;
// }
>>>>>>> v1.3
cancelRegister({
paymentEnum: 0,
kindEnum: 1,

View File

@@ -43,8 +43,6 @@
</el-popover>
</el-form-item>
</el-col>
<<<<<<< HEAD
=======
<el-col :span="6" style="padding: 0">
<el-button type="primary" icon="Plus" @click="handleAddPatient" style="width: 65px">
新建
@@ -77,7 +75,6 @@
学生卡
</el-button> -->
</el-col>
>>>>>>> v1.3
<el-col :span="5">
<el-form-item label="姓名:" prop="name">
<el-input v-model="form.name" placeholder="姓名" :disabled="true" />
@@ -280,10 +277,6 @@
setchargeItem;
}
"
<<<<<<< HEAD
@clear="handleOrgClear"
=======
>>>>>>> v1.3
clearable
/>
</el-form-item>
@@ -554,100 +547,6 @@
<span>{{ parseTime(scope.row.registerTime) }}</span>
</template>
</el-table-column>
<<<<<<< HEAD
<!-- 退号记录相关列 -->
<el-table-column
v-if="queryType === 'returned'"
label="退号日期/时间"
align="center"
key="returnDate"
prop="returnDate"
width="180"
>
<template #default="scope">
<span>{{ scope.row.returnDate ? parseTime(scope.row.returnDate) : '-' }}</span>
</template>
</el-table-column>
<el-table-column
v-if="queryType === 'returned'"
label="退号原因"
align="center"
key="returnReason"
prop="returnReason"
width="200"
:show-overflow-tooltip="true"
>
<template #default="scope">
<span>{{ scope.row.returnReason || '-' }}</span>
</template>
</el-table-column>
<el-table-column
v-if="queryType === 'returned'"
label="退号操作人"
align="center"
key="operatorName"
prop="operatorName"
width="120"
>
<template #default="scope">
<span>{{ scope.row.operatorName || '-' }}</span>
</template>
</el-table-column>
<el-table-column
v-if="queryType === 'returned'"
label="退号操作工号"
align="center"
key="operatorId"
prop="operatorId"
width="120"
>
<template #default="scope">
<span>{{ scope.row.operatorId || '-' }}</span>
</template>
</el-table-column>
<el-table-column
v-if="queryType === 'returned'"
label="退款金额"
align="center"
key="refundAmount"
prop="refundAmount"
width="120"
>
<template #default="scope">
<span>{{ scope.row.refundAmount ? scope.row.refundAmount.toFixed(2) + ' 元' : '-' }}</span>
</template>
</el-table-column>
<el-table-column
v-if="queryType === 'returned'"
label="退款方式"
align="center"
key="refundMethod"
prop="refundMethod"
width="150"
>
<template #default="scope">
<span>{{ scope.row.refundMethod || '-' }}</span>
</template>
</el-table-column>
<!-- 操作列只在全部和正常挂号标签页显示退号记录标签页不显示 -->
<el-table-column
v-if="queryType !== 'returned'"
label="操作"
align="center"
width="120"
fixed="right"
>
<template #default="scope">
<el-button
link
type="primary"
:disabled="scope.row.statusEnum === 6 || scope.row.statusEnum !== 1"
:title="getReturnTooltip(scope.row)"
@click="handleReturn(scope.row)"
>
退号
</el-button>
=======
<el-table-column label="操作" align="center" key="registerTime" prop="registerTime" do>
<template #default="scope">
<!-- <el-tooltip
@@ -675,7 +574,6 @@
</el-button>
</div>
<!-- </el-tooltip> -->
>>>>>>> v1.3
</template>
</el-table-column>
</el-table>
@@ -725,25 +623,7 @@
:patientInfo="patientInfo"
:paymentId="paymentId"
:chargeItemIds="chargeItemIdList"
<<<<<<< HEAD
:feeType="patientInfo.medfeePaymtdCode || ''"
:contractName="patientInfo.contractName || ''"
:medfee_paymtd_code="medfee_paymtd_code"
:registerInfo="registerInfo"
/>
<ReprintDialog
:open="openReprintDialog"
@close="
(value) => {
if (value == 'success') {
getList();
}
openReprintDialog = false;
}
"
=======
:eventType="eventType"
>>>>>>> v1.3
/>
</div>
</template>
@@ -776,26 +656,11 @@ import ReprintDialog from './components/reprintDialog.vue';
import { handleColor } from '@/utils/his';
import useUserStore from '@/store/modules/user';
import { formatDate, formatDateStr } from '@/utils/index';
<<<<<<< HEAD
import { getConfigKey } from '@/api/system/config';
const patientInfo = ref({});
// 监护人规定年龄配置
const guardianAgeConfig = ref(null);
// 跳转到患者档案管理页面
const goToPatientRecord = () => {
// 使用Vue Router进行路由导航在当前页面打开新的路由层级
router.push('/system/basicmanage/patientmanagement');
};
=======
import { isValidCNPhoneNumber } from '../../../utils/validate';
import { ElMessage } from 'element-plus';
const patientInfo = ref({});
const eventType = ref(0);
>>>>>>> v1.3
const router = useRouter();
const { proxy } = getCurrentInstance();
const { sys_normal_disable, sys_user_sex, med_chrgitm_type,medfee_paymtd_code } = proxy.useDict(
@@ -846,14 +711,8 @@ const patientInfoList = ref(undefined);
// 费用性质
const contractList = ref(undefined);
// const locationOptions = ref(undefined); // 地点树选项
<<<<<<< HEAD
const doctorList = ref(undefined); // 医生选项(过滤后的)
const allDoctorList = ref(undefined); // 所有医生选项(用于过滤)
const healthcareList = ref(undefined); // 挂号项目选项
=======
const doctorList = ref(undefined); // 医生选项
const healthcareList = ref([]); // 挂号项目选项
>>>>>>> v1.3
const orgOptions = ref(undefined); // 科室选项
const readCardLoading = ref(false);
const transformedData = ref({});
@@ -1171,32 +1030,6 @@ function setchargeItem() {
healthcareData.length > 0 ? healthcareData[0].price + healthcareData[0].activityPrice : '';
form.value.definitionId = healthcareData.length > 0 ? healthcareData[0].definitionId : '';
}
<<<<<<< HEAD
}
/** 处理挂号类型变化 */
function handleServiceTypeChange() {
// 先设置费用项信息
setchargeItem();
// 然后根据就诊科室和挂号类型过滤医生
filterDoctorsByHealthcare();
}
/** 处理科室清空 */
function handleOrgClear() {
// 清空科室时,清空相关数据
form.value.orgId = undefined;
form.value.organizationId = undefined;
healthcareList.value = [];
form.value.serviceTypeId = undefined;
form.value.practitionerId = undefined;
form.value.doctorName = '';
// 如果有医生列表,显示所有医生
if (allDoctorList.value) {
doctorList.value = allDoctorList.value;
}
=======
>>>>>>> v1.3
}
/** 查询患者信息 */
function getList() {
@@ -1479,10 +1312,6 @@ function handleAdd() {
transformedData.value = transformFormData(form.value);
console.log(transformedData, 'transformedData门诊挂号');
chargeItemIdList.value = [];
<<<<<<< HEAD
patientInfo.value.patientId = form.value.patientId;
patientInfo.value.medfeePaymtdCode = form.value.contractNo; // 设置费用性质
=======
// patientInfo.value.patientId = form.value.patientId;
patientInfo.value = {
patientId: form.value.patientId,
@@ -1500,7 +1329,6 @@ function handleAdd() {
practitionerName: form.value.doctorName || '',
healthcareName: '', // 可根据实际情况补充
};
>>>>>>> v1.3
proxy.$refs['outpatientRegistrationRef'].validate((valid) => {
if (valid) {
if (!isValidCNPhoneNumber(patientInfo.value.phone)) {
@@ -1518,15 +1346,8 @@ function handleAdd() {
addOutpatientRegistration(transformedData.value)
.then((res) => {
if (res.code == 200) {
<<<<<<< HEAD
console.log('挂号成功,返回数据:', res.data);
// 立即刷新列表,确保挂号信息显示在当日已挂号列表中
getList();
=======
console.log('78989798', 'res', res);
// proxy.$modal.msgSuccess('挂号成功');
>>>>>>> v1.3
chrgBchno.value = res.data.chrgBchno;
registerBusNo.value = res.data.busNo;
totalAmount.value = res.data.psnCashPay;
@@ -1583,56 +1404,15 @@ function handleSearchPatient(value) {
patientSearchKey.value = value;
}
<<<<<<< HEAD
function getReturnTooltip(row) {
if (!row) {
return '';
}
if (row.statusEnum == 6) {
return '已退号';
}
if (row.statusEnum != 1) {
return '该患者医生已接诊,不能退号!';
}
return '';
}
function handleReturn(row) {
if (row.statusEnum != 1) {
proxy.$modal.msgError('该患者医生已接诊,不能退号!');
return;
}
=======
function handleReturn(row, type = '1') {
>>>>>>> v1.3
openRefundDialog.value = true;
patientInfo.value.patientId = row.patientId;
patientInfo.value.encounterId = row.encounterId;
totalAmount.value = row.totalPrice;
chargeItemIdList.value = row.chargeItemIds.split(',');
paymentId.value = row.paymentId;
<<<<<<< HEAD
// 从挂号记录中获取正确的费用性质
patientInfo.value.medfeePaymtdCode = row.contractNo; // 使用挂号记录中的费用性质代码
patientInfo.value.contractName = row.contractName; // 保存费用性质名称用于显示
// 保存完整的原挂号记录信息,用于退号记录
registerInfo.value = {
...row, // 保存完整的挂号记录
patientName: row.patientName,
age: row.age,
genderEnum_enumText: row.genderEnum_enumText,
registerTime: row.registerTime,
totalPrice: row.totalPrice,
encounterId: row.encounterId,
patientId: row.patientId,
};
console.log('退号费用性质:', row.contractNo, row.contractName);
=======
eventType.value = type;
console.log(paymentId.value);
>>>>>>> v1.3
}
function handleReturnRegister() {