|
@@ -1877,29 +1877,49 @@ function fitfymx(patientId, times, receiptNo, orderNo, groupNoOut) {
|
|
|
function saveRefundMedicine() {
|
|
|
let zt = $("#confirmFlagSearch").val()
|
|
|
|
|
|
+ // ================= 新增:详细调试信息 =================
|
|
|
+ console.log('=== saveRefundMedicine 函数开始 ===');
|
|
|
+ console.log('zt (confirmFlagSearch):', zt);
|
|
|
+ console.log('isTyOk 当前状态:', isTyOk);
|
|
|
+ console.log('scannedCodesMap 当前状态:', scannedCodesMap);
|
|
|
+ console.log('refundQuantityMap 当前状态:', refundQuantityMap);
|
|
|
+ console.log('window.currentRefundData 当前状态:', window.currentRefundData);
|
|
|
+
|
|
|
// 检查是否需要进行追溯码匹配
|
|
|
if (zt === '2') {
|
|
|
+ console.log('=== 进入追溯码匹配检查逻辑 ===');
|
|
|
// 检查是否已经完成匹配
|
|
|
if (!isTyOk) {
|
|
|
+ console.error('=== 错误:isTyOk 为 false,匹配未完成 ===');
|
|
|
+ console.log('isTyOk 详细值:', isTyOk);
|
|
|
+ console.log('isTyOk 类型:', typeof isTyOk);
|
|
|
return errorMesageSimaple('请先匹配退药药品追溯码!');
|
|
|
}
|
|
|
|
|
|
+ console.log('=== isTyOk 检查通过,继续后续逻辑 ===');
|
|
|
+
|
|
|
// 获取退药表格数据,检查是否所有需要退药的药品都已匹配
|
|
|
let tyTable = $('#ty_table_detail').bootstrapTable("getData");
|
|
|
let refundData = window.currentRefundData || $table.bootstrapTable('getData');
|
|
|
|
|
|
- // ========== 调试日志开始 ==========
|
|
|
- console.log('=== saveRefundMedicine 调试信息 ===');
|
|
|
- console.log('refundData 样本:', refundData.length > 0 ? refundData[0] : '空数组');
|
|
|
- console.log('tyTable 样本:', tyTable.length > 0 ? tyTable[0] : '空数组');
|
|
|
- console.log('refundData 总数量:', refundData.length);
|
|
|
+ console.log('=== 获取表格数据 ===');
|
|
|
console.log('tyTable 总数量:', tyTable.length);
|
|
|
- // ========== 调试日志结束 ==========
|
|
|
+ console.log('tyTable 样本数据:', tyTable.length > 0 ? tyTable[0] : '空数组');
|
|
|
+ console.log('refundData 总数量:', refundData.length);
|
|
|
+ console.log('refundData 样本数据:', refundData.length > 0 ? refundData[0] : '空数组');
|
|
|
+ console.log('$table.bootstrapTable("getData") 总数量:', $table.bootstrapTable('getData').length);
|
|
|
|
|
|
let needRefundItems = [];
|
|
|
|
|
|
+ console.log('=== 构建需要退药的药品列表 ===');
|
|
|
// 找出需要退药的药品
|
|
|
refundData.forEach(function (item, index, arr) {
|
|
|
+ console.log(`检查第${index + 1}个药品:`, {
|
|
|
+ charge_item_code: item.charge_item_code,
|
|
|
+ dec_amount: item.dec_amount,
|
|
|
+ serial: item.serial,
|
|
|
+ item_no: item.item_no
|
|
|
+ });
|
|
|
if (item.dec_amount != 0) {
|
|
|
needRefundItems.push({
|
|
|
chargeItemCode: item.charge_item_code,
|
|
@@ -1907,54 +1927,97 @@ function saveRefundMedicine() {
|
|
|
itemNo: item.item_no,
|
|
|
decAmount: item.dec_amount // 添加退药数量字段,用于后续校验
|
|
|
});
|
|
|
+ console.log(`第${index + 1}个药品需要退药,已添加到列表`);
|
|
|
+ } else {
|
|
|
+ console.log(`第${index + 1}个药品退药数量为0,跳过`);
|
|
|
}
|
|
|
});
|
|
|
- // ========== 调试日志开始 ==========
|
|
|
- console.log('needRefundItems:', needRefundItems);
|
|
|
- console.log('第一个需要退药的药品字段信息:');
|
|
|
+
|
|
|
+ console.log('=== needRefundItems 最终结果 ===');
|
|
|
+ console.log('needRefundItems 总数量:', needRefundItems.length);
|
|
|
+ console.log('needRefundItems 详细内容:', needRefundItems);
|
|
|
if (needRefundItems.length > 0) {
|
|
|
+ console.log('第一个需要退药的药品字段信息:');
|
|
|
console.log('- chargeItemCode:', needRefundItems[0].chargeItemCode);
|
|
|
console.log('- serial:', needRefundItems[0].serial);
|
|
|
console.log('- itemNo:', needRefundItems[0].itemNo);
|
|
|
+ console.log('- decAmount:', needRefundItems[0].decAmount);
|
|
|
}
|
|
|
- // ========== 调试日志结束 ==========
|
|
|
|
|
|
// ================= 新增:智能追溯码匹配校验逻辑 =================
|
|
|
// 目的:检查是否扫描了足够数量的追溯码,而不是检查是否所有追溯码都已匹配
|
|
|
// 修改时间:2025年
|
|
|
// 修改原因:提高退药效率,只要求扫描退药数量对应的追溯码
|
|
|
|
|
|
+ console.log('=== 开始检查追溯码匹配状态 ===');
|
|
|
// 检查每个需要退药的药品是否都已匹配足够数量
|
|
|
let allMatched = true;
|
|
|
let unmatchedItems = [];
|
|
|
|
|
|
for (let i = 0; i < tyTable.length; i++) {
|
|
|
let item = tyTable[i];
|
|
|
+ console.log(`检查第${i + 1}个追溯码项目:`, {
|
|
|
+ chargeItemCode: item.chargeItemCode,
|
|
|
+ serial: item.serial,
|
|
|
+ itemNo: item.itemNo,
|
|
|
+ drugName: item.drugName,
|
|
|
+ drugTracCodg: item.drugTracCodg
|
|
|
+ });
|
|
|
|
|
|
// 检查这个药品是否需要退药
|
|
|
let needRefund = needRefundItems.find(function(refundItem) {
|
|
|
- return refundItem.chargeItemCode === item.chargeItemCode &&
|
|
|
+ let matchResult = refundItem.chargeItemCode === item.chargeItemCode &&
|
|
|
refundItem.serial === item.serial &&
|
|
|
refundItem.itemNo === item.itemNo;
|
|
|
+ console.log(`匹配检查结果:`, {
|
|
|
+ refundItem: refundItem,
|
|
|
+ item: {
|
|
|
+ chargeItemCode: item.chargeItemCode,
|
|
|
+ serial: item.serial,
|
|
|
+ itemNo: item.itemNo
|
|
|
+ },
|
|
|
+ matchResult: matchResult
|
|
|
+ });
|
|
|
+ return matchResult;
|
|
|
});
|
|
|
|
|
|
if (needRefund) {
|
|
|
+ console.log(`第${i + 1}个追溯码项目需要退药,开始检查扫描状态`);
|
|
|
let drugCode = item.chargeItemCode;
|
|
|
let requiredCount = needRefund.decAmount;
|
|
|
let scannedCount = scannedCodesMap[drugCode] ? scannedCodesMap[drugCode].length : 0;
|
|
|
|
|
|
+ console.log(`药品 ${item.drugName} 匹配检查:`, {
|
|
|
+ drugCode: drugCode,
|
|
|
+ requiredCount: requiredCount,
|
|
|
+ scannedCount: scannedCount,
|
|
|
+ scannedCodes: scannedCodesMap[drugCode] || []
|
|
|
+ });
|
|
|
+
|
|
|
// 检查是否扫描了足够的追溯码
|
|
|
if (scannedCount < requiredCount) {
|
|
|
allMatched = false;
|
|
|
unmatchedItems.push(`${item.drugName} (需要${requiredCount}个,已扫描${scannedCount}个)`);
|
|
|
+ console.error(`药品 ${item.drugName} 扫描数量不足!`);
|
|
|
+ } else {
|
|
|
+ console.log(`药品 ${item.drugName} 扫描数量满足要求!`);
|
|
|
}
|
|
|
+ } else {
|
|
|
+ console.log(`第${i + 1}个追溯码项目不需要退药,跳过检查`);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ console.log('=== 追溯码匹配检查结果 ===');
|
|
|
+ console.log('allMatched:', allMatched);
|
|
|
+ console.log('unmatchedItems:', unmatchedItems);
|
|
|
+
|
|
|
if (!allMatched) {
|
|
|
+ console.error('=== 追溯码匹配检查失败 ===');
|
|
|
return errorMesageSimaple('还有药品未完成追溯码匹配:' + unmatchedItems.join('、') + ',请完成匹配后再退药!');
|
|
|
}
|
|
|
|
|
|
+ console.log('=== 追溯码匹配检查通过,继续退药处理 ===');
|
|
|
+
|
|
|
// ================= 原逻辑(已屏蔽,如需恢复请取消注释) =================
|
|
|
/*
|
|
|
// 原逻辑:检查是否所有追溯码都已匹配
|
|
@@ -2098,7 +2161,8 @@ function saveRefundMedicine() {
|
|
|
// 目的:统一管理追溯码匹配状态的重置
|
|
|
// 修改时间:2025年
|
|
|
// 修改原因:确保状态重置的完整性和一致性
|
|
|
- resetTraceabilityState();
|
|
|
+ console.log('=== 退药成功,完全重置追溯码状态 ===');
|
|
|
+ resetTraceabilityState(false, false); // 退药成功后完全重置
|
|
|
initTbTable();
|
|
|
} else {
|
|
|
console.error('退药处理失败:', res.message);
|
|
@@ -2772,8 +2836,19 @@ function matchingDrugCodg(patientId, times, receiptNo, orderNo, realNo){
|
|
|
// 目的:确保弹窗关闭时清理所有状态,避免状态残留
|
|
|
// 修改时间:2025年
|
|
|
// 修改原因:防止状态污染,确保下次打开弹窗时状态正确
|
|
|
+ // 注意:如果匹配成功,不要重置 isTyOk 状态和扫描数据
|
|
|
$("#tyModal").off('hidden.bs.modal').on('hidden.bs.modal', function () {
|
|
|
- resetTraceabilityState();
|
|
|
+ console.log('=== 弹窗关闭事件触发 ===');
|
|
|
+ console.log('关闭前 isTyOk 状态:', isTyOk);
|
|
|
+
|
|
|
+ // 如果匹配成功,保留 isTyOk 状态和扫描数据,只重置其他状态
|
|
|
+ if (isTyOk) {
|
|
|
+ console.log('匹配已成功,保留 isTyOk 状态和扫描数据,只重置其他状态');
|
|
|
+ resetTraceabilityState(true, true); // 保留 isTyOk 状态和扫描数据
|
|
|
+ } else {
|
|
|
+ console.log('匹配未成功,重置所有状态');
|
|
|
+ resetTraceabilityState(false, false); // 完全重置
|
|
|
+ }
|
|
|
});
|
|
|
|
|
|
// 防抖定时器
|
|
@@ -3051,12 +3126,23 @@ function matchTp(){
|
|
|
*/
|
|
|
// ================= 原逻辑结束 =================
|
|
|
|
|
|
+ console.log('=== 确认匹配对话框 ===');
|
|
|
if (!confirm("确定对当前处方所有退药的药品匹配成功?")) {
|
|
|
+ console.log('用户取消了确认匹配');
|
|
|
return;
|
|
|
}
|
|
|
+
|
|
|
+ console.log('=== 设置匹配完成状态 ===');
|
|
|
+ console.log('设置前 isTyOk:', isTyOk);
|
|
|
if(!isTyOk){
|
|
|
isTyOk = true;
|
|
|
+ console.log('isTyOk 已设置为 true');
|
|
|
+ } else {
|
|
|
+ console.log('isTyOk 已经是 true,无需重复设置');
|
|
|
}
|
|
|
+ console.log('设置后 isTyOk:', isTyOk);
|
|
|
+
|
|
|
+ console.log('=== 关闭追溯码匹配弹窗 ===');
|
|
|
$("#tyModal").modal('hide');
|
|
|
}
|
|
|
|
|
@@ -3108,15 +3194,60 @@ function updateTraceabilityProgressDisplay() {
|
|
|
// 修改时间:2025年
|
|
|
// 修改原因:确保状态管理的一致性,防止状态残留导致的问题
|
|
|
// 重置内容:
|
|
|
-// - scannedCodesMap: 清空已扫描的追溯码记录
|
|
|
-// - refundQuantityMap: 清空退药数量记录
|
|
|
-// - isTyOk: 重置匹配完成标志
|
|
|
-// - window.currentRefundData: 清空当前退药数据
|
|
|
-function resetTraceabilityState() {
|
|
|
- scannedCodesMap = {};
|
|
|
- refundQuantityMap = {};
|
|
|
- isTyOk = false;
|
|
|
- window.currentRefundData = null;
|
|
|
+// - scannedCodesMap: 清空已扫描的追溯码记录(可选)
|
|
|
+// - refundQuantityMap: 清空退药数量记录(可选)
|
|
|
+// - isTyOk: 重置匹配完成标志(可选)
|
|
|
+// - window.currentRefundData: 清空当前退药数据(可选)
|
|
|
+// 参数:keepIsTyOk - 是否保留 isTyOk 状态,默认为 false
|
|
|
+// 参数:keepScannedData - 是否保留扫描数据,默认为 false
|
|
|
+function resetTraceabilityState(keepIsTyOk = false, keepScannedData = false) {
|
|
|
+ console.log('=== 重置追溯码状态 ===');
|
|
|
+ console.log('重置前状态:', {
|
|
|
+ scannedCodesMap: scannedCodesMap,
|
|
|
+ refundQuantityMap: refundQuantityMap,
|
|
|
+ isTyOk: isTyOk,
|
|
|
+ currentRefundData: window.currentRefundData
|
|
|
+ });
|
|
|
+ console.log('keepIsTyOk 参数:', keepIsTyOk);
|
|
|
+ console.log('keepScannedData 参数:', keepScannedData);
|
|
|
+
|
|
|
+ let currentIsTyOk = isTyOk; // 保存当前状态
|
|
|
+ let currentScannedCodesMap = scannedCodesMap; // 保存当前扫描数据
|
|
|
+ let currentRefundQuantityMap = refundQuantityMap; // 保存当前退药数量数据
|
|
|
+
|
|
|
+ // 根据参数决定是否清空扫描数据
|
|
|
+ if (!keepScannedData) {
|
|
|
+ scannedCodesMap = {};
|
|
|
+ refundQuantityMap = {};
|
|
|
+ console.log('清空扫描数据和退药数量数据');
|
|
|
+ } else {
|
|
|
+ console.log('保留扫描数据和退药数量数据');
|
|
|
+ }
|
|
|
+
|
|
|
+ // 根据参数决定是否清空当前退药数据
|
|
|
+ if (!keepScannedData) {
|
|
|
+ window.currentRefundData = null;
|
|
|
+ console.log('清空当前退药数据');
|
|
|
+ } else {
|
|
|
+ console.log('保留当前退药数据');
|
|
|
+ }
|
|
|
+
|
|
|
+ // 根据参数决定是否重置 isTyOk
|
|
|
+ if (!keepIsTyOk) {
|
|
|
+ isTyOk = false;
|
|
|
+ console.log('重置 isTyOk 为 false');
|
|
|
+ } else {
|
|
|
+ isTyOk = currentIsTyOk;
|
|
|
+ console.log('保留 isTyOk 状态:', isTyOk);
|
|
|
+ }
|
|
|
+
|
|
|
+ console.log('重置后状态:', {
|
|
|
+ scannedCodesMap: scannedCodesMap,
|
|
|
+ refundQuantityMap: refundQuantityMap,
|
|
|
+ isTyOk: isTyOk,
|
|
|
+ currentRefundData: window.currentRefundData
|
|
|
+ });
|
|
|
+ console.log('=== 追溯码状态重置完成 ===');
|
|
|
}
|
|
|
|
|
|
function printPrescription(patientId, times, orderNo) {
|
|
@@ -3495,7 +3626,8 @@ $(document).ready(function () {
|
|
|
// 目的:确保页面加载时追溯码匹配状态正确初始化
|
|
|
// 修改时间:2025年
|
|
|
// 修改原因:统一状态管理,避免状态不一致
|
|
|
- resetTraceabilityState();
|
|
|
+ console.log('=== 页面加载,初始化追溯码状态 ===');
|
|
|
+ resetTraceabilityState(false, false); // 页面加载时完全重置
|
|
|
|
|
|
initTbTable();
|
|
|
});
|