修复了处方打印不能打印的错误
This commit is contained in:
@@ -360,7 +360,7 @@
|
|||||||
"tableQRCodeLevel": 0,
|
"tableQRCodeLevel": 0,
|
||||||
"tableSummaryTitle": true,
|
"tableSummaryTitle": true,
|
||||||
"tableSummary": "",
|
"tableSummary": "",
|
||||||
"renderFormatter": "function(value,row,colIndex,options,rowIndex){ return value + '<br/>' + '用法用量'; }",
|
"renderFormatter": "function(value,row,colIndex,options,rowIndex){ return value + '<br/>' + (row.totalVolume || '') + '<br/>' + '用法用量'; }",
|
||||||
"styler2": "function(value,row,index,options){ return {padding: '5px 5px' }; }",
|
"styler2": "function(value,row,index,options){ return {padding: '5px 5px' }; }",
|
||||||
"width": 86.5148548770295,
|
"width": 86.5148548770295,
|
||||||
"field": "itemName",
|
"field": "itemName",
|
||||||
@@ -462,7 +462,7 @@
|
|||||||
"tableQRCodeLevel": 0,
|
"tableQRCodeLevel": 0,
|
||||||
"tableSummaryTitle": true,
|
"tableSummaryTitle": true,
|
||||||
"tableSummary": "",
|
"tableSummary": "",
|
||||||
"renderFormatter": "function(value,row,colIndex,options,rowIndex){ return value + '<br/>' + '用法用量'; }",
|
"renderFormatter": "function(value,row,colIndex,options,rowIndex){ return value + '<br/>' + (row.totalVolume || '') + '<br/>' + (row.methodCode_dictText || '用法用量'); }",
|
||||||
"styler2": "function(value,row,index,options){ return {padding: '5px 5px' }; }",
|
"styler2": "function(value,row,index,options){ return {padding: '5px 5px' }; }",
|
||||||
"width": 86.5148548770295,
|
"width": 86.5148548770295,
|
||||||
"field": "medicineName",
|
"field": "medicineName",
|
||||||
|
|||||||
@@ -196,7 +196,7 @@
|
|||||||
批量发药
|
批量发药
|
||||||
</el-button>
|
</el-button>
|
||||||
<el-button type="primary" @click="handleScan()" style="margin-left: 30px"> 扫码 </el-button>
|
<el-button type="primary" @click="handleScan()" style="margin-left: 30px"> 扫码 </el-button>
|
||||||
<el-button type="primary" @click="printPrescription()" style="margin-left: 30px">
|
<el-button type="primary" @click="previewAndPrint()" style="margin-left: 30px">
|
||||||
处方打印
|
处方打印
|
||||||
</el-button>
|
</el-button>
|
||||||
<div style="position: absolute; top: 30px; right: 25px">
|
<div style="position: absolute; top: 30px; right: 25px">
|
||||||
@@ -398,7 +398,7 @@ import { advicePrint } from '@/api/public';
|
|||||||
import { formatDate, formatDateStr } from '@/utils/index';
|
import { formatDate, formatDateStr } from '@/utils/index';
|
||||||
import { debounce } from 'lodash-es';
|
import { debounce } from 'lodash-es';
|
||||||
import TraceNoDialog from '@/components/OpenHis/TraceNoDialog/index.vue';
|
import TraceNoDialog from '@/components/OpenHis/TraceNoDialog/index.vue';
|
||||||
import { hiprint } from 'vue-plugin-hiprint';
|
// 使用window.hiprint,不再从vue-plugin-hiprint导入
|
||||||
import templateJson from './components/templateJson.json';
|
import templateJson from './components/templateJson.json';
|
||||||
// import disposalTemplate from './components/disposalTemplate.json';
|
// import disposalTemplate from './components/disposalTemplate.json';
|
||||||
import {
|
import {
|
||||||
@@ -655,20 +655,29 @@ function getList() {
|
|||||||
const printerList = ref([]); // 打印机列表
|
const printerList = ref([]); // 打印机列表
|
||||||
const selectedPrinter = ref(''); // 选中的打印机
|
const selectedPrinter = ref(''); // 选中的打印机
|
||||||
const showPrinterDialog = ref(false); // 显示打印机选择对话框
|
const showPrinterDialog = ref(false); // 显示打印机选择对话框
|
||||||
|
const previewData = ref(null); // 预览数据
|
||||||
|
|
||||||
// 修改printPrescription方法,强制显示打印机选择弹窗
|
// 抽取获取打印数据的公共函数
|
||||||
async function printPrescription() {
|
async function getPrintData() {
|
||||||
const selectedRows = tableRef.value.getSelectionRows();
|
const selectedRows = tableRef.value.getSelectionRows();
|
||||||
if (selectedRows.length === 0) {
|
if (selectedRows.length === 0) {
|
||||||
proxy.$modal.msgWarning('未选择要打印的项目,请重新选择,打印失败');
|
proxy.$modal.msgWarning('未选择要打印的项目,请重新选择');
|
||||||
return;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
// 获取打印数据
|
// 获取打印数据
|
||||||
let requestIds = selectedRows.map((item) => item.requestId).join(',');
|
let requestIds = selectedRows.map((item) => item.requestId).join(',');
|
||||||
|
console.log('打印请求ID:', requestIds);
|
||||||
|
|
||||||
|
const res = await advicePrint({ requestIds: requestIds, isPrescription: '1' });
|
||||||
|
console.log('打印数据获取结果:', res);
|
||||||
|
|
||||||
|
if (!res || !res.data || !res.data.adviceItemList) {
|
||||||
|
proxy.$modal.msgError('获取打印数据失败:数据格式不正确');
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
advicePrint({ requestIds: requestIds, isPrescription: '1' }).then((res) => {
|
|
||||||
const groupedRows = {};
|
const groupedRows = {};
|
||||||
res.data.adviceItemList.forEach((row) => {
|
res.data.adviceItemList.forEach((row) => {
|
||||||
const prescriptionNo = row.prescriptionNo;
|
const prescriptionNo = row.prescriptionNo;
|
||||||
@@ -683,63 +692,336 @@ async function printPrescription() {
|
|||||||
const result = [];
|
const result = [];
|
||||||
|
|
||||||
groupedArray.forEach((item) => {
|
groupedArray.forEach((item) => {
|
||||||
|
if (item && item.length > 0) {
|
||||||
|
// 从处方列表的第一个条目提取处方信息
|
||||||
|
const firstItem = item[0];
|
||||||
const total = item.reduce((sum, item) => {
|
const total = item.reduce((sum, item) => {
|
||||||
return sum + (item.totalPrice || 0);
|
return sum + (item.totalPrice || 0);
|
||||||
}, 0);
|
}, 0);
|
||||||
|
|
||||||
|
// 转换药品列表字段,确保与打印模板匹配
|
||||||
|
const transformedPrescriptionList = item.map(medItem => ({
|
||||||
|
...medItem,
|
||||||
|
// 添加模板需要的字段映射
|
||||||
|
medicineName: medItem.itemName, // 用于模板中的medicineName字段
|
||||||
|
totalVolume: medItem.totalVolume || medItem.spec || '', // 后端返回的规格字段是totalVolume
|
||||||
|
unitPrice: medItem.unitPrice || medItem.price || 0, // 使用后端返回的unitPrice
|
||||||
|
unitCode_dictText: medItem.unitCode_dictText || medItem.unit || '', // 使用后端返回的unitCode_dictText
|
||||||
|
// 添加其他可能需要的字段
|
||||||
|
dose: medItem.dose || '',
|
||||||
|
doseUnitCode_dictText: medItem.doseUnitCode_dictText || '',
|
||||||
|
methodCode_dictText: medItem.methodCode_dictText || medItem.usage || '',
|
||||||
|
rateCode_dictText: medItem.rateCode_dictText || medItem.rateCode || ''
|
||||||
|
}));
|
||||||
|
|
||||||
result.push({
|
result.push({
|
||||||
...res.data,
|
...res.data,
|
||||||
|
// 确保处方号、患者信息等关键数据正确提取,并添加模板需要的字段映射
|
||||||
|
prescriptionNo: firstItem.prescriptionNo,
|
||||||
|
patientName: res.data.patientName || firstItem.patientName,
|
||||||
|
gender: res.data.genderEnum || firstItem.gender,
|
||||||
|
genderEnum_enumText: res.data.genderEnum_enumText || firstItem.gender || '', // 使用后端返回的性别文本
|
||||||
|
age: res.data.age || firstItem.age,
|
||||||
|
adviceDate: res.data.reqTime || firstItem.adviceDate || firstItem.createTime || new Date().toLocaleDateString(),
|
||||||
|
reqTime: res.data.reqTime || firstItem.adviceDate || firstItem.createTime || new Date().toLocaleDateString(), // 开具日期字段映射
|
||||||
|
doctorName: res.data.doctorName || firstItem.doctorName,
|
||||||
medTotalAmount: total,
|
medTotalAmount: total,
|
||||||
prescriptionList: item,
|
// 添加模板需要的其他字段
|
||||||
|
encounterNo: res.data.encounterNo || firstItem.encounterNo || '', // 门诊号
|
||||||
|
departmentName: res.data.departmentName || firstItem.departmentName || '', // 科室
|
||||||
|
conditionName: res.data.conditionName || firstItem.conditionName || '', // 临床诊断
|
||||||
|
phone: res.data.phone || firstItem.phone || '', // 电话
|
||||||
|
contractName: res.data.contractName || firstItem.contractName || '', // 医疗机构
|
||||||
|
prescriptionList: transformedPrescriptionList, // 使用转换后的药品列表
|
||||||
});
|
});
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
console.log('打印数据准备完成:', result);
|
||||||
|
return result;
|
||||||
|
} catch (error) {
|
||||||
|
console.error('获取打印数据失败:', error);
|
||||||
|
proxy.$modal.msgError('获取打印数据失败: ' + error.message);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 合并预览和打印功能的主函数
|
||||||
|
async function previewAndPrint() {
|
||||||
|
try {
|
||||||
|
const result = await getPrintData();
|
||||||
|
if (!result) return;
|
||||||
|
|
||||||
|
// 保存预览数据
|
||||||
|
previewData.value = result;
|
||||||
|
|
||||||
|
console.log('执行处方预览和打印');
|
||||||
|
|
||||||
|
// 构建预览HTML
|
||||||
|
let previewHtml = '';
|
||||||
|
|
||||||
|
// 为每个处方生成预览内容
|
||||||
|
result.forEach((prescription, index) => {
|
||||||
|
// 确保处方数据存在
|
||||||
|
if (!prescription) return;
|
||||||
|
|
||||||
|
// 从处方获取药品列表,确保是数组
|
||||||
|
const prescriptionList = Array.isArray(prescription.prescriptionList) ? prescription.prescriptionList : [];
|
||||||
|
|
||||||
|
previewHtml += '<div class="prescription-container">';
|
||||||
|
previewHtml += '<h3>处方 ' + (index + 1) + '</h3>';
|
||||||
|
previewHtml += '<div class="prescription-info">';
|
||||||
|
previewHtml += '<p><strong>处方号:</strong> ' + (prescription.prescriptionNo || 'N/A') + '</p>';
|
||||||
|
previewHtml += '<p><strong>患者姓名:</strong> ' + (prescription.patientName || 'N/A') + '</p>';
|
||||||
|
previewHtml += '<p><strong>性别:</strong> ' + (prescription.genderEnum_enumText || prescription.gender || 'N/A') + '</p>';
|
||||||
|
previewHtml += '<p><strong>年龄:</strong> ' + (prescription.age || 'N/A') + '</p>';
|
||||||
|
previewHtml += '<p><strong>开具日期:</strong> ' + (prescription.reqTime || prescription.adviceDate || prescription.createTime || new Date().toLocaleDateString()) + '</p>';
|
||||||
|
previewHtml += '<p><strong>医生:</strong> ' + (prescription.doctorName || 'N/A') + '</p>';
|
||||||
|
// 添加额外的处方信息
|
||||||
|
if (prescription.encounterNo) previewHtml += '<p><strong>门诊号:</strong> ' + prescription.encounterNo + '</p>';
|
||||||
|
if (prescription.departmentName) previewHtml += '<p><strong>科室:</strong> ' + prescription.departmentName + '</p>';
|
||||||
|
if (prescription.conditionName) previewHtml += '<p><strong>临床诊断:</strong> ' + prescription.conditionName + '</p>';
|
||||||
|
if (prescription.phone) previewHtml += '<p><strong>电话:</strong> ' + prescription.phone + '</p>';
|
||||||
|
previewHtml += '</div>';
|
||||||
|
|
||||||
|
previewHtml += '<table class="prescription-table">';
|
||||||
|
previewHtml += '<thead>';
|
||||||
|
previewHtml += '<tr>';
|
||||||
|
previewHtml += '<th>药品名称</th>';
|
||||||
|
previewHtml += '<th>规格</th>';
|
||||||
|
previewHtml += '<th>单价</th>';
|
||||||
|
previewHtml += '<th>数量</th>';
|
||||||
|
previewHtml += '<th>金额</th>';
|
||||||
|
previewHtml += '<th>费用等级</th>';
|
||||||
|
previewHtml += '<th>用法用量</th>';
|
||||||
|
previewHtml += '</tr>';
|
||||||
|
previewHtml += '</thead>';
|
||||||
|
previewHtml += '<tbody>';
|
||||||
|
|
||||||
|
// 添加药品列表
|
||||||
|
if (prescriptionList.length > 0) {
|
||||||
|
prescriptionList.forEach((item) => {
|
||||||
|
previewHtml += '<tr>';
|
||||||
|
// 使用映射后的字段名,确保与打印模板一致
|
||||||
|
previewHtml += '<td>' + (item.medicineName || item.itemName || 'N/A') + '</td>';
|
||||||
|
previewHtml += '<td>' + (item.totalVolume || item.spec || '') + '</td>';
|
||||||
|
previewHtml += '<td>' + (item.unitPrice || item.price || '0.00') + '</td>';
|
||||||
|
previewHtml += '<td>' + (item.quantity || 'N/A') + ' ' + (item.unitCode_dictText || item.unit || '') + '</td>';
|
||||||
|
previewHtml += '<td>' + (item.totalPrice || '0.00') + '</td>';
|
||||||
|
previewHtml += '<td>' + (item.contractName || 'N/A') + '</td>';
|
||||||
|
// 组合用法用量信息
|
||||||
|
const usageInfo = [];
|
||||||
|
if (item.dose && item.doseUnitCode_dictText) usageInfo.push(item.dose + item.doseUnitCode_dictText);
|
||||||
|
if (item.methodCode_dictText || item.usage) usageInfo.push(item.methodCode_dictText || item.usage);
|
||||||
|
if (item.frequency) usageInfo.push(item.frequency);
|
||||||
|
previewHtml += '<td>' + usageInfo.join('<br/>') + '</td>';
|
||||||
|
previewHtml += '</tr>';
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
previewHtml += '<tr><td colspan="7" style="text-align: center;">暂无药品信息</td></tr>';
|
||||||
|
}
|
||||||
|
|
||||||
|
previewHtml += '</tbody>';
|
||||||
|
previewHtml += '<tfoot>';
|
||||||
|
previewHtml += '<tr>';
|
||||||
|
previewHtml += '<td colspan="6" style="text-align: right; font-weight: bold;">总计:</td>';
|
||||||
|
previewHtml += '<td style="font-weight: bold;">' + (prescription.medTotalAmount || '0.00') + '</td>';
|
||||||
|
previewHtml += '</tr>';
|
||||||
|
previewHtml += '</tfoot>';
|
||||||
|
previewHtml += '</table>';
|
||||||
|
|
||||||
|
previewHtml += '<div class="prescription-footer">';
|
||||||
|
previewHtml += '<p><strong>医疗机构:</strong> ' + (prescription.contractName || 'N/A') + '</p>';
|
||||||
|
previewHtml += '</div>';
|
||||||
|
previewHtml += '</div>';
|
||||||
|
previewHtml += '<hr class="prescription-separator">';
|
||||||
|
});
|
||||||
|
|
||||||
|
// 将打印数据序列化,以便在预览窗口中访问
|
||||||
|
const serializedData = encodeURIComponent(JSON.stringify(result));
|
||||||
|
|
||||||
|
// 创建预览窗口
|
||||||
|
const previewWindow = window.open('', '_blank');
|
||||||
|
if (!previewWindow) {
|
||||||
|
throw new Error('无法打开预览窗口,请检查浏览器弹窗设置');
|
||||||
|
}
|
||||||
|
|
||||||
|
// 使用更安全的方式生成HTML内容,避免Vue编译错误
|
||||||
|
const createPreviewHtml = (prescriptionData) => {
|
||||||
|
// 简单的HTML结构,避免复杂标签嵌套
|
||||||
|
let html = '<!DOCTYPE html><html><head><meta charset="utf-8"><title>处方预览</title>';
|
||||||
|
|
||||||
|
// 简化的样式
|
||||||
|
html += '<style>';
|
||||||
|
html += 'body{font-family:Arial,sans-serif;margin:20px;}';
|
||||||
|
html += '.content{max-width:800px;margin:0 auto;}';
|
||||||
|
html += '.header{text-align:center;margin-bottom:20px;}';
|
||||||
|
html += '.print-btn{background:#1890ff;color:white;border:none;padding:10px 20px;margin-bottom:20px;cursor:pointer;}';
|
||||||
|
html += 'table{width:100%;border-collapse:collapse;margin-bottom:20px;}';
|
||||||
|
html += 'th,td{border:1px solid #ddd;padding:8px;}';
|
||||||
|
html += 'th{background:#f2f2f2;}';
|
||||||
|
html += '.prescription{margin-bottom:40px;padding-bottom:20px;border-bottom:1px solid #ddd;}';
|
||||||
|
html += '@media print{.print-btn{display:none;}}';
|
||||||
|
html += '</style>';
|
||||||
|
|
||||||
|
html += '</head><body><div class="content">';
|
||||||
|
html += '<div class="header"><h2>处方预览</h2></div>';
|
||||||
|
html += '<button class="print-btn" onclick="window.print()">打印</button>';
|
||||||
|
|
||||||
|
// 添加处方内容
|
||||||
|
html += prescriptionData;
|
||||||
|
|
||||||
|
html += '</div></body></html>';
|
||||||
|
return html;
|
||||||
|
};
|
||||||
|
|
||||||
|
// 使用创建的函数生成HTML并写入
|
||||||
|
previewWindow.document.write(createPreviewHtml(previewHtml));
|
||||||
|
previewWindow.document.close();
|
||||||
|
|
||||||
|
proxy.$modal.msgSuccess('预览成功,请在新窗口中查看并点击打印按钮');
|
||||||
|
|
||||||
|
// 同时处理后台打印逻辑(使用原来的打印功能)
|
||||||
|
setTimeout(() => {
|
||||||
|
handleBackgroundPrint(result);
|
||||||
|
}, 1000);
|
||||||
|
} catch (error) {
|
||||||
|
console.error('预览和打印过程出错:', error);
|
||||||
|
proxy.$modal.msgError('操作失败: ' + error.message);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 后台打印逻辑,复用原有的打印功能
|
||||||
|
function handleBackgroundPrint(result) {
|
||||||
|
try {
|
||||||
// 获取打印机列表
|
// 获取打印机列表
|
||||||
const printers = getPrinterList();
|
const printers = getPrinterList();
|
||||||
|
console.log('获取到的打印机列表:', printers);
|
||||||
|
|
||||||
if (printers.length === 0) {
|
if (printers.length === 0) {
|
||||||
proxy.$modal.msgWarning('未检测到可用打印机');
|
console.log('未检测到可用打印机,仅提供预览功能');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 强制显示打印机选择对话框,无论是否有缓存
|
|
||||||
// 设置打印机列表
|
// 设置打印机列表
|
||||||
printerList.value = printers;
|
printerList.value = printers;
|
||||||
// 显示对话框
|
|
||||||
showPrinterDialog.value = true;
|
// 检查是否有缓存的打印机
|
||||||
// 保存当前打印数据到临时变量
|
const cachedPrinter = getCachedPrinter();
|
||||||
window.currentPrintData = result;
|
console.log('缓存的打印机:', cachedPrinter);
|
||||||
});
|
|
||||||
|
if (cachedPrinter && printers.some(printer => printer.name === cachedPrinter)) {
|
||||||
|
// 如果有缓存的打印机,直接使用
|
||||||
|
selectedPrinter.value = cachedPrinter;
|
||||||
|
confirmPrinter(result);
|
||||||
|
} else {
|
||||||
|
// 否则不自动显示打印机选择对话框,让用户在预览页面手动选择打印
|
||||||
|
console.log('无缓存打印机,用户可在预览页面手动打印');
|
||||||
|
}
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error('打印过程出错:', error);
|
console.error('后台打印过程出错:', error);
|
||||||
proxy.$modal.msgError('打印失败: ' + error.message);
|
// 不显示错误提示,以免干扰用户在预览页面的操作
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 使用保存的打印数据执行打印
|
// 使用保存的打印数据执行打印
|
||||||
function confirmPrinter() {
|
function confirmPrinter(printData) {
|
||||||
|
console.log('开始打印,传入数据:', printData);
|
||||||
|
console.log('window临时数据:', window.currentPrintData);
|
||||||
|
|
||||||
|
// 如果没有传入数据,尝试从window临时变量获取
|
||||||
|
let data = printData || window.currentPrintData;
|
||||||
|
|
||||||
if (!selectedPrinter.value) {
|
if (!selectedPrinter.value) {
|
||||||
proxy.$modal.msgWarning('请选择打印机');
|
proxy.$modal.msgWarning('请选择打印机');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!data || !Array.isArray(data) || data.length === 0) {
|
||||||
|
proxy.$modal.msgError('没有找到有效的打印数据');
|
||||||
|
showPrinterDialog.value = false;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!templateJson) {
|
||||||
|
proxy.$modal.msgError('打印模板加载失败');
|
||||||
|
showPrinterDialog.value = false;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 确保数据字段映射正确,特别是规格字段
|
||||||
|
data = data.map(prescription => {
|
||||||
|
const mappedPrescription = { ...prescription };
|
||||||
|
// 确保药品列表字段映射正确
|
||||||
|
if (Array.isArray(prescription.prescriptionList)) {
|
||||||
|
mappedPrescription.prescriptionList = prescription.prescriptionList.map(med => ({
|
||||||
|
...med,
|
||||||
|
// 确保规格字段正确映射,优先使用totalVolume
|
||||||
|
totalVolume: med.totalVolume || med.spec || '',
|
||||||
|
// 确保其他关键字段存在
|
||||||
|
medicineName: med.medicineName || med.itemName || '',
|
||||||
|
unitPrice: med.unitPrice || med.price || 0,
|
||||||
|
unitCode_dictText: med.unitCode_dictText || med.unit || '',
|
||||||
|
methodCode_dictText: med.methodCode_dictText || med.usage || ''
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
return mappedPrescription;
|
||||||
|
});
|
||||||
|
console.log('处理后的打印数据:', data);
|
||||||
|
|
||||||
|
console.log('准备执行打印,打印机:', selectedPrinter.value);
|
||||||
|
|
||||||
// 使用his.js中的savePrinterToCache保存选择
|
// 使用his.js中的savePrinterToCache保存选择
|
||||||
savePrinterToCache(selectedPrinter.value);
|
savePrinterToCache(selectedPrinter.value);
|
||||||
|
|
||||||
// 使用his.js中的executePrint方法执行打印
|
try {
|
||||||
if (window.currentPrintData) {
|
// 检查hiprint是否可用
|
||||||
executePrint(window.currentPrintData, templateJson, selectedPrinter.value)
|
if (!window.hiprint) {
|
||||||
.then(() => {
|
throw new Error('打印插件未正确加载');
|
||||||
|
}
|
||||||
|
|
||||||
|
// 直接使用hiprint执行打印,确保功能正常
|
||||||
|
const hiprintTemplate = new window.hiprint.PrintTemplate({ template: templateJson });
|
||||||
|
const printOptions = {
|
||||||
|
title: '处方打印',
|
||||||
|
height: 210,
|
||||||
|
width: 148,
|
||||||
|
printer: selectedPrinter.value
|
||||||
|
};
|
||||||
|
|
||||||
|
// 打印成功回调
|
||||||
|
hiprintTemplate.on('printSuccess', function (e) {
|
||||||
|
console.log('打印成功:', e);
|
||||||
|
proxy.$modal.msgSuccess('打印成功');
|
||||||
showPrinterDialog.value = false;
|
showPrinterDialog.value = false;
|
||||||
// 清除临时数据
|
// 清除临时数据
|
||||||
window.currentPrintData = null;
|
window.currentPrintData = null;
|
||||||
})
|
});
|
||||||
.catch((error) => {
|
|
||||||
proxy.$modal.msgError(error.message || '打印失败');
|
// 打印失败回调
|
||||||
|
hiprintTemplate.on('printError', function (e) {
|
||||||
|
console.error('打印失败:', e);
|
||||||
|
proxy.$modal.msgError('打印失败,请检查打印机连接');
|
||||||
showPrinterDialog.value = false;
|
showPrinterDialog.value = false;
|
||||||
window.currentPrintData = null;
|
window.currentPrintData = null;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// 执行打印
|
||||||
|
console.log('调用hiprint.print2方法');
|
||||||
|
hiprintTemplate.print2(data, printOptions);
|
||||||
|
} catch (error) {
|
||||||
|
console.error('打印执行出错:', error);
|
||||||
|
proxy.$modal.msgError('打印执行失败: ' + error.message);
|
||||||
|
showPrinterDialog.value = false;
|
||||||
|
window.currentPrintData = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 取消打印机选择
|
||||||
|
function cancelPrinter() {
|
||||||
|
showPrinterDialog.value = false;
|
||||||
|
window.currentPrintData = null;
|
||||||
|
}
|
||||||
/** 重置按钮操作 */
|
/** 重置按钮操作 */
|
||||||
function resetQuery() {
|
function resetQuery() {
|
||||||
setDefaultDateRange();
|
setDefaultDateRange();
|
||||||
|
|||||||
Reference in New Issue
Block a user