소스 검색

Merge branch 'dev' of http://47.103.65.67:3000/yeguodong/thmz into dev

yeguodong 2 주 전
부모
커밋
1a0c7a0225
2개의 변경된 파일149개의 추가작업 그리고 3개의 파일을 삭제
  1. 1 0
      src/main/resources/static/js/mz/west_pharmacy_dispensing.js
  2. 148 3
      src/main/resources/static/js/mz/west_pharmacy_send.js

+ 1 - 0
src/main/resources/static/js/mz/west_pharmacy_dispensing.js

@@ -1201,6 +1201,7 @@ function dispensingDispose(realNo, orderNo, receiptNo, times, patientId) {
                 width: '270',
                 align: "left",
                 valign: 'middle',
+                visible: false, // 屏蔽药品追溯码列
                 formatter: function (value, row, index) {
                     return isEmpty(value)?'':value
                 }

+ 148 - 3
src/main/resources/static/js/mz/west_pharmacy_send.js

@@ -1639,9 +1639,74 @@ function fitfymx(patientId, times, receiptNo, orderNo, groupNoOut) {
  */
 function saveRefundMedicine() {
     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');
     if (row.length != 1) {
         return errorMesageSimaple('请选择一条处方数据');
@@ -1694,6 +1759,9 @@ function saveRefundMedicine() {
             }
             if (res.code == 0) {
                 successMesage(res);
+                // 退药成功后重置匹配状态和全局数据
+                isTyOk = false;
+                window.currentRefundData = null;
                 initTbTable();
             } else {
                 errorMesage(res);
@@ -2184,6 +2252,10 @@ function matchingDrugCodg(patientId, times, receiptNo, orderNo, realNo){
         realNo: realNo,
         groupNo: groupNo,
     };
+    
+    // 保存当前退药数据到全局变量,供匹配检查使用
+    window.currentRefundData = $table.bootstrapTable('getData');
+    
     $('#ty_table_detail').bootstrapTable("destroy");
     $('#ty_table_detail').bootstrapTable({
         url: '/thmz/getMzDrugTracCodgData',         //请求后台的URL(*)
@@ -2396,6 +2468,71 @@ function matchDrugCodg(){
 
 // 确认匹配之后可以退药了
 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("确定对当前处方所有退药的药品匹配成功?")) {
         return;
     }
@@ -2683,4 +2820,12 @@ function saveCellData(table, index, field, value) {
         field: field,
         value: value
     });
-}
+}
+
+$(document).ready(function () {
+    // 初始化全局变量
+    window.currentRefundData = null;
+    isTyOk = false;
+    
+    initTbTable();
+});