|  | @@ -1639,9 +1639,74 @@ function fitfymx(patientId, times, receiptNo, orderNo, groupNoOut) {
 | 
											
												
													
														|  |   */
 |  |   */
 | 
											
												
													
														|  |  function saveRefundMedicine() {
 |  |  function saveRefundMedicine() {
 | 
											
												
													
														|  |      let zt = $("#confirmFlagSearch").val()
 |  |      let zt = $("#confirmFlagSearch").val()
 | 
											
												
													
														|  | -    if(!isTyOk && zt === '2'){
 |  | 
 | 
											
												
													
														|  | -        return errorMesageSimaple('请匹配退药药品追溯码是否一致!');
 |  | 
 | 
											
												
													
														|  | 
 |  | +    
 | 
											
												
													
														|  | 
 |  | +    // 检查是否需要进行追溯码匹配
 | 
											
												
													
														|  | 
 |  | +    if (zt === '2') {
 | 
											
												
													
														|  | 
 |  | +        // 检查是否已经完成匹配
 | 
											
												
													
														|  | 
 |  | +        if (!isTyOk) {
 | 
											
												
													
														|  | 
 |  | +            return errorMesageSimaple('请先匹配退药药品追溯码!');
 | 
											
												
													
														|  | 
 |  | +        }
 | 
											
												
													
														|  | 
 |  | +        
 | 
											
												
													
														|  | 
 |  | +        // 获取退药表格数据,检查是否所有需要退药的药品都已匹配
 | 
											
												
													
														|  | 
 |  | +        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('tyTable 总数量:', tyTable.length);
 | 
											
												
													
														|  | 
 |  | +        // ========== 调试日志结束 ==========
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +        let needRefundItems = [];
 | 
											
												
													
														|  | 
 |  | +        
 | 
											
												
													
														|  | 
 |  | +        // 找出需要退药的药品
 | 
											
												
													
														|  | 
 |  | +        refundData.forEach(function (item, index, arr) {
 | 
											
												
													
														|  | 
 |  | +            if (item.dec_amount != 0) {
 | 
											
												
													
														|  | 
 |  | +                needRefundItems.push({
 | 
											
												
													
														|  | 
 |  | +                    chargeItemCode: item.charge_item_code,
 | 
											
												
													
														|  | 
 |  | +                    serial: item.serial,
 | 
											
												
													
														|  | 
 |  | +                    itemNo: item.item_no
 | 
											
												
													
														|  | 
 |  | +                });
 | 
											
												
													
														|  | 
 |  | +            }
 | 
											
												
													
														|  | 
 |  | +        });
 | 
											
												
													
														|  | 
 |  | +        // ========== 调试日志开始 ==========
 | 
											
												
													
														|  | 
 |  | +        console.log('needRefundItems:', needRefundItems);
 | 
											
												
													
														|  | 
 |  | +        console.log('第一个需要退药的药品字段信息:');
 | 
											
												
													
														|  | 
 |  | +        if (needRefundItems.length > 0) {
 | 
											
												
													
														|  | 
 |  | +            console.log('- chargeItemCode:', needRefundItems[0].chargeItemCode);
 | 
											
												
													
														|  | 
 |  | +            console.log('- serial:', needRefundItems[0].serial);
 | 
											
												
													
														|  | 
 |  | +            console.log('- itemNo:', needRefundItems[0].itemNo);
 | 
											
												
													
														|  | 
 |  | +        }
 | 
											
												
													
														|  | 
 |  | +        // ========== 调试日志结束 ==========
 | 
											
												
													
														|  | 
 |  | +        // 检查每个需要退药的药品是否都已匹配
 | 
											
												
													
														|  | 
 |  | +        let allMatched = true;
 | 
											
												
													
														|  | 
 |  | +        let unmatchedItems = [];
 | 
											
												
													
														|  | 
 |  | +        
 | 
											
												
													
														|  | 
 |  | +        for (let i = 0; i < tyTable.length; i++) {
 | 
											
												
													
														|  | 
 |  | +            let item = tyTable[i];
 | 
											
												
													
														|  | 
 |  | +            // 检查这个药品是否需要退药
 | 
											
												
													
														|  | 
 |  | +            let needRefund = needRefundItems.some(function(refundItem) {
 | 
											
												
													
														|  | 
 |  | +                return refundItem.chargeItemCode === item.chargeItemCode && 
 | 
											
												
													
														|  | 
 |  | +                       refundItem.serial === item.serial && 
 | 
											
												
													
														|  | 
 |  | +                       refundItem.itemNo === item.itemNo;
 | 
											
												
													
														|  | 
 |  | +            });
 | 
											
												
													
														|  | 
 |  | +            
 | 
											
												
													
														|  | 
 |  | +            if (needRefund) {
 | 
											
												
													
														|  | 
 |  | +                // 检查是否已匹配
 | 
											
												
													
														|  | 
 |  | +                if (isEmpty(item.matchOk) || item.matchOk.indexOf('已匹配') === -1) {
 | 
											
												
													
														|  | 
 |  | +                    allMatched = false;
 | 
											
												
													
														|  | 
 |  | +                    unmatchedItems.push(item.drugName || '未知药品');
 | 
											
												
													
														|  | 
 |  | +                }
 | 
											
												
													
														|  | 
 |  | +            }
 | 
											
												
													
														|  | 
 |  | +        }
 | 
											
												
													
														|  | 
 |  | +        
 | 
											
												
													
														|  | 
 |  | +        if (!allMatched) {
 | 
											
												
													
														|  | 
 |  | +            return errorMesageSimaple('还有药品未匹配追溯码:' + unmatchedItems.join('、') + ',请完成匹配后再退药!');
 | 
											
												
													
														|  | 
 |  | +        }
 | 
											
												
													
														|  |      }
 |  |      }
 | 
											
												
													
														|  | 
 |  | +    
 | 
											
												
													
														|  |      var row = $("#tb_table").bootstrapTable('getSelections');
 |  |      var row = $("#tb_table").bootstrapTable('getSelections');
 | 
											
												
													
														|  |      if (row.length != 1) {
 |  |      if (row.length != 1) {
 | 
											
												
													
														|  |          return errorMesageSimaple('请选择一条处方数据');
 |  |          return errorMesageSimaple('请选择一条处方数据');
 | 
											
										
											
												
													
														|  | @@ -1694,6 +1759,9 @@ function saveRefundMedicine() {
 | 
											
												
													
														|  |              }
 |  |              }
 | 
											
												
													
														|  |              if (res.code == 0) {
 |  |              if (res.code == 0) {
 | 
											
												
													
														|  |                  successMesage(res);
 |  |                  successMesage(res);
 | 
											
												
													
														|  | 
 |  | +                // 退药成功后重置匹配状态和全局数据
 | 
											
												
													
														|  | 
 |  | +                isTyOk = false;
 | 
											
												
													
														|  | 
 |  | +                window.currentRefundData = null;
 | 
											
												
													
														|  |                  initTbTable();
 |  |                  initTbTable();
 | 
											
												
													
														|  |              } else {
 |  |              } else {
 | 
											
												
													
														|  |                  errorMesage(res);
 |  |                  errorMesage(res);
 | 
											
										
											
												
													
														|  | @@ -2184,6 +2252,10 @@ function matchingDrugCodg(patientId, times, receiptNo, orderNo, realNo){
 | 
											
												
													
														|  |          realNo: realNo,
 |  |          realNo: realNo,
 | 
											
												
													
														|  |          groupNo: groupNo,
 |  |          groupNo: groupNo,
 | 
											
												
													
														|  |      };
 |  |      };
 | 
											
												
													
														|  | 
 |  | +    
 | 
											
												
													
														|  | 
 |  | +    // 保存当前退药数据到全局变量,供匹配检查使用
 | 
											
												
													
														|  | 
 |  | +    window.currentRefundData = $table.bootstrapTable('getData');
 | 
											
												
													
														|  | 
 |  | +    
 | 
											
												
													
														|  |      $('#ty_table_detail').bootstrapTable("destroy");
 |  |      $('#ty_table_detail').bootstrapTable("destroy");
 | 
											
												
													
														|  |      $('#ty_table_detail').bootstrapTable({
 |  |      $('#ty_table_detail').bootstrapTable({
 | 
											
												
													
														|  |          url: '/thmz/getMzDrugTracCodgData',         //请求后台的URL(*)
 |  |          url: '/thmz/getMzDrugTracCodgData',         //请求后台的URL(*)
 | 
											
										
											
												
													
														|  | @@ -2396,6 +2468,71 @@ function matchDrugCodg(){
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  // 确认匹配之后可以退药了
 |  |  // 确认匹配之后可以退药了
 | 
											
												
													
														|  |  function matchTp(){
 |  |  function matchTp(){
 | 
											
												
													
														|  | 
 |  | +    // 获取退药表格数据
 | 
											
												
													
														|  | 
 |  | +    let tyTable = $('#ty_table_detail').bootstrapTable("getData");
 | 
											
												
													
														|  | 
 |  | +    let refundData = window.currentRefundData || $table.bootstrapTable('getData');
 | 
											
												
													
														|  | 
 |  | +    // ========== 调试日志开始 ==========
 | 
											
												
													
														|  | 
 |  | +    console.log('=== matchTp 调试信息 ===');
 | 
											
												
													
														|  | 
 |  | +    console.log('refundData 样本:', refundData.length > 0 ? refundData[0] : '空数组');
 | 
											
												
													
														|  | 
 |  | +    console.log('tyTable 样本:', tyTable.length > 0 ? tyTable[0] : '空数组');
 | 
											
												
													
														|  | 
 |  | +    // ========== 调试日志结束 ==========
 | 
											
												
													
														|  | 
 |  | +    let needRefundItems = [];
 | 
											
												
													
														|  | 
 |  | +    
 | 
											
												
													
														|  | 
 |  | +    // 找出需要退药的药品
 | 
											
												
													
														|  | 
 |  | +    refundData.forEach(function (item, index, arr) {
 | 
											
												
													
														|  | 
 |  | +        if (item.dec_amount != 0) {
 | 
											
												
													
														|  | 
 |  | +            needRefundItems.push({
 | 
											
												
													
														|  | 
 |  | +                chargeItemCode: item.charge_item_code,
 | 
											
												
													
														|  | 
 |  | +                serial: item.serial,
 | 
											
												
													
														|  | 
 |  | +                itemNo: item.item_no
 | 
											
												
													
														|  | 
 |  | +            });
 | 
											
												
													
														|  | 
 |  | +        }
 | 
											
												
													
														|  | 
 |  | +    });
 | 
											
												
													
														|  | 
 |  | +    
 | 
											
												
													
														|  | 
 |  | +    // 检查每个需要退药的药品是否都已匹配
 | 
											
												
													
														|  | 
 |  | +    let allMatched = true;
 | 
											
												
													
														|  | 
 |  | +    let unmatchedItems = [];
 | 
											
												
													
														|  | 
 |  | +    
 | 
											
												
													
														|  | 
 |  | +    for (let i = 0; i < tyTable.length; i++) {
 | 
											
												
													
														|  | 
 |  | +        let item = tyTable[i];
 | 
											
												
													
														|  | 
 |  | +        // 检查这个药品是否需要退药
 | 
											
												
													
														|  | 
 |  | +        let needRefund = needRefundItems.some(function(refundItem) {
 | 
											
												
													
														|  | 
 |  | +            let matchResult = refundItem.chargeItemCode === item.chargeItemCode && 
 | 
											
												
													
														|  | 
 |  | +                   refundItem.serial === item.serial && 
 | 
											
												
													
														|  | 
 |  | +                   refundItem.itemNo === item.itemNo;
 | 
											
												
													
														|  | 
 |  | +            
 | 
											
												
													
														|  | 
 |  | +            // ========== 调试日志开始 ==========
 | 
											
												
													
														|  | 
 |  | +            if (i === 0) { // 只打印第一个匹配的调试信息
 | 
											
												
													
														|  | 
 |  | +                console.log('=== 匹配检查调试 ===');
 | 
											
												
													
														|  | 
 |  | +                console.log('tyTable item 字段信息:');
 | 
											
												
													
														|  | 
 |  | +                console.log('- item.chargeItemCode:', item.chargeItemCode);
 | 
											
												
													
														|  | 
 |  | +                console.log('- item.serial:', item.serial);
 | 
											
												
													
														|  | 
 |  | +                console.log('- item.itemNo:', item.itemNo);
 | 
											
												
													
														|  | 
 |  | +                console.log('- item.drugName:', item.drugName);
 | 
											
												
													
														|  | 
 |  | +                console.log('- item.matchOk:', item.matchOk);
 | 
											
												
													
														|  | 
 |  | +                console.log('refundItem 字段信息:');
 | 
											
												
													
														|  | 
 |  | +                console.log('- refundItem.chargeItemCode:', refundItem.chargeItemCode);
 | 
											
												
													
														|  | 
 |  | +                console.log('- refundItem.serial:', refundItem.serial);
 | 
											
												
													
														|  | 
 |  | +                console.log('- refundItem.itemNo:', refundItem.itemNo);
 | 
											
												
													
														|  | 
 |  | +                console.log('匹配结果:', matchResult);
 | 
											
												
													
														|  | 
 |  | +            }
 | 
											
												
													
														|  | 
 |  | +            // ========== 调试日志结束 ==========
 | 
											
												
													
														|  | 
 |  | +            
 | 
											
												
													
														|  | 
 |  | +            return matchResult;
 | 
											
												
													
														|  | 
 |  | +        });    
 | 
											
												
													
														|  | 
 |  | +        if (needRefund) {
 | 
											
												
													
														|  | 
 |  | +            // 检查是否已匹配
 | 
											
												
													
														|  | 
 |  | +            if (isEmpty(item.matchOk) || item.matchOk.indexOf('已匹配') === -1) {
 | 
											
												
													
														|  | 
 |  | +                allMatched = false;
 | 
											
												
													
														|  | 
 |  | +                unmatchedItems.push(item.drugName || '未知药品');
 | 
											
												
													
														|  | 
 |  | +            }
 | 
											
												
													
														|  | 
 |  | +        }
 | 
											
												
													
														|  | 
 |  | +    }
 | 
											
												
													
														|  | 
 |  | +    
 | 
											
												
													
														|  | 
 |  | +    if (!allMatched) {
 | 
											
												
													
														|  | 
 |  | +        return errorMesageSimaple('还有药品未匹配追溯码:' + unmatchedItems.join('、') + ',请完成所有匹配后再确认!');
 | 
											
												
													
														|  | 
 |  | +    }
 | 
											
												
													
														|  | 
 |  | +    
 | 
											
												
													
														|  |      if (!confirm("确定对当前处方所有退药的药品匹配成功?")) {
 |  |      if (!confirm("确定对当前处方所有退药的药品匹配成功?")) {
 | 
											
												
													
														|  |          return;
 |  |          return;
 | 
											
												
													
														|  |      }
 |  |      }
 | 
											
										
											
												
													
														|  | @@ -2683,4 +2820,12 @@ function saveCellData(table, index, field, value) {
 | 
											
												
													
														|  |          field: field,
 |  |          field: field,
 | 
											
												
													
														|  |          value: value
 |  |          value: value
 | 
											
												
													
														|  |      });
 |  |      });
 | 
											
												
													
														|  | -}
 |  | 
 | 
											
												
													
														|  | 
 |  | +}
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +$(document).ready(function () {
 | 
											
												
													
														|  | 
 |  | +    // 初始化全局变量
 | 
											
												
													
														|  | 
 |  | +    window.currentRefundData = null;
 | 
											
												
													
														|  | 
 |  | +    isTyOk = false;
 | 
											
												
													
														|  | 
 |  | +    
 | 
											
												
													
														|  | 
 |  | +    initTbTable();
 | 
											
												
													
														|  | 
 |  | +});
 |