|
|
|
|
@@ -158,8 +158,7 @@ import {computed, getCurrentInstance, nextTick, reactive, ref, watch} from 'vue'
|
|
|
|
|
import {Delete} from '@element-plus/icons-vue';
|
|
|
|
|
import {debounce} from 'lodash-es';
|
|
|
|
|
import useUserStore from '@/store/modules/user';
|
|
|
|
|
import {hiprint} from 'vue-plugin-hiprint';
|
|
|
|
|
import templateJson from './template.json';
|
|
|
|
|
import printUtils, {PRINT_TEMPLATE} from '@/utils/printUtils';
|
|
|
|
|
import image1 from '../../../../../assets/images/weixinzhifu.png';
|
|
|
|
|
import image2 from '../../../../../assets/images/zhifubaozhifu.png';
|
|
|
|
|
|
|
|
|
|
@@ -248,13 +247,15 @@ const emit = defineEmits(['close']);
|
|
|
|
|
let displayAmountTemp = 0;
|
|
|
|
|
|
|
|
|
|
// 打印小票
|
|
|
|
|
function printReceipt(param) {
|
|
|
|
|
async function printReceipt(param) {
|
|
|
|
|
let total = 0;
|
|
|
|
|
props.chargedItems.forEach((item) => {
|
|
|
|
|
total += item.totalPrice || 0;
|
|
|
|
|
});
|
|
|
|
|
// 构造一个新的对象,添加头 "data"
|
|
|
|
|
const result = {
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
// 构造打印数据
|
|
|
|
|
const printData = {
|
|
|
|
|
data: [
|
|
|
|
|
{
|
|
|
|
|
...param,
|
|
|
|
|
@@ -271,68 +272,16 @@ function printReceipt(param) {
|
|
|
|
|
(param.detail?.find((t) => t.payEnum === 120000)?.amount?.toFixed(2) || '0.00') + ' 元',
|
|
|
|
|
YB_JZ_FUND_AMOUNT:
|
|
|
|
|
(param.detail?.find((t) => t.payEnum === 130000)?.amount?.toFixed(2) || '0.00') + ' 元',
|
|
|
|
|
// 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.00') + ' 元',
|
|
|
|
|
// 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.00') + ' 元',
|
|
|
|
|
// 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.00') + ' 元',
|
|
|
|
|
// 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 || '',
|
|
|
|
|
@@ -340,7 +289,6 @@ function printReceipt(param) {
|
|
|
|
|
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, // 收费项目
|
|
|
|
|
@@ -352,15 +300,14 @@ function printReceipt(param) {
|
|
|
|
|
},
|
|
|
|
|
],
|
|
|
|
|
};
|
|
|
|
|
const printElements = JSON.parse(
|
|
|
|
|
JSON.stringify(templateJson).replace(/{{HOSPITAL_NAME}}/g, userStore.hospitalName)
|
|
|
|
|
);
|
|
|
|
|
var hiprintTemplate = new hiprint.PrintTemplate({ template: printElements }); // 定义模板
|
|
|
|
|
|
|
|
|
|
hiprintTemplate.print2(result.data[0], {
|
|
|
|
|
printer: 'xp',
|
|
|
|
|
title: '门诊收费结算单',
|
|
|
|
|
});
|
|
|
|
|
// 使用printUtils进行打印
|
|
|
|
|
await printUtils.print(PRINT_TEMPLATE.OUTPATIENT_CHARGE, printData.data[0]);
|
|
|
|
|
console.log('打印成功');
|
|
|
|
|
} catch (error) {
|
|
|
|
|
console.error('打印失败:', error);
|
|
|
|
|
proxy.$modal.msgError('打印失败: ' + error.message);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const throttledGetList = debounce(submit, 300);
|
|
|
|
|
@@ -440,15 +387,13 @@ async function submit() {
|
|
|
|
|
/** 打印收费结算单 */
|
|
|
|
|
async function print() {
|
|
|
|
|
console.log('patientInfo', props.patientInfo);
|
|
|
|
|
console.log('category', props.category);
|
|
|
|
|
console.log('totalAmount', props.totalAmount);
|
|
|
|
|
console.log('chargeItemIds', props.chargeItemIds);
|
|
|
|
|
console.log('consumablesIdList', props.consumablesIdList);
|
|
|
|
|
console.log('userCardInfo', props.userCardInfo);
|
|
|
|
|
console.log('paymentId', props.paymentId);
|
|
|
|
|
console.log('details', props.details);
|
|
|
|
|
console.log('chargedItems', props.chargedItems);
|
|
|
|
|
const result = {
|
|
|
|
|
let total = 0;
|
|
|
|
|
props.chargedItems.forEach((item) => {
|
|
|
|
|
total += item.totalPrice || 0;
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
const printData = {
|
|
|
|
|
data: [
|
|
|
|
|
{
|
|
|
|
|
name: props.patientInfo.patientName, // 姓名
|
|
|
|
|
@@ -458,22 +403,21 @@ async function print() {
|
|
|
|
|
currentDate: currentDate.value, // 收费日期
|
|
|
|
|
chargedItems: props.chargedItems, // 收费项目
|
|
|
|
|
totalAmount: props.totalAmount.toFixed(2) + ' 元', // 应收金额
|
|
|
|
|
itemTotalAmount: total.toFixed(2) + ' 元', // 项目总金额
|
|
|
|
|
displayAmount: displayAmount.value + ' 元', // 实收金额
|
|
|
|
|
returnedAmount: returnedAmount.value + ' 元', // 应找零
|
|
|
|
|
userName: userStore.nickName,
|
|
|
|
|
},
|
|
|
|
|
],
|
|
|
|
|
};
|
|
|
|
|
console.log(result, '==result.data==');
|
|
|
|
|
|
|
|
|
|
const printElements = JSON.parse(
|
|
|
|
|
JSON.stringify(templateJson).replace(/{{HOSPITAL_NAME}}/g, userStore.hospitalName)
|
|
|
|
|
);
|
|
|
|
|
var hiprintTemplate = new hiprint.PrintTemplate({ template: printElements }); // 定义模板
|
|
|
|
|
const printerList = hiprintTemplate.getPrinterList();
|
|
|
|
|
console.log(hiprintTemplate, '打印机列表');
|
|
|
|
|
hiprintTemplate.print2(result.data[0], {
|
|
|
|
|
title: '门诊收费结算单',
|
|
|
|
|
});
|
|
|
|
|
// 使用printUtils进行打印
|
|
|
|
|
await printUtils.print(PRINT_TEMPLATE.OUTPATIENT_CHARGE, printData.data[0]);
|
|
|
|
|
console.log('打印成功');
|
|
|
|
|
} catch (error) {
|
|
|
|
|
console.error('打印失败:', error);
|
|
|
|
|
proxy.$modal.msgError('打印失败: ' + error.message);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const currentDate = ref(new Date().toLocaleString());
|
|
|
|
|
|