LIJU преди 2 седмици
родител
ревизия
35a6dac16d
променени са 1 файла, в които са добавени 218 реда и са изтрити 9 реда
  1. 218 9
      src/main/resources/static/js/yf/ward_prescription.js

+ 218 - 9
src/main/resources/static/js/yf/ward_prescription.js

@@ -956,7 +956,7 @@ function initDetailTable() {
                 $(".ui-jqgrid-sdiv").hide();
             }
         },
-        colNames: ['发药', '拒退', '批号', '单号', '住院号', '床号', '次数', '姓名', '药品名称', '规格', '数量', '原发药量', '零售价', '金额', '执行时间', '医嘱', '给药方式','确认时间'
+        colNames: ['发药', '拒退', '批号', '追溯码', '单号', '住院号', '床号', '次数', '姓名', '药品名称', '规格', '数量', '原发药量', '零售价', '金额', '执行时间', '医嘱', '给药方式','确认时间'
             , '频率', '剂量', '单位', '生日', '性别', '身份', '诊断', '科室', '病室', '是否婴儿', '请领人', '长期标志', '药品类型', '给药方式编码', '医嘱号',
             '自费标志', '单列', '贵重', '毒麻', '审批标志', '药房编码', '规格', '医生编码', '药单类别', '药品编码', '口服开始时间', '口服结束时间', '帐页号', '流水号', '医生', '医保编码','执行科室(医技药单用)'],
         colModel: [
@@ -1000,6 +1000,18 @@ function initDetailTable() {
                 hidden: (pageClass == 'T' || pageClass == 'HT') ? true : false,
                 edittype: "text"
             },
+            {
+                name: 'drugTracCodg',
+                index: 'drugTracCodg',
+                align: 'center',
+                width: 40,
+                editable: true,
+                hidden: (pageClass == 'T' || pageClass == 'HT') ? true : false,
+                edittype: "text",
+                formatter: function (cellvalue, options, rowObject) {
+                    return cellvalue || "";
+                }
+            },
             {name: 'pageNo', index: 'pageNo', align: 'center', width: 30, hidden: true},
             {name: 'inpatientNo', index: 'inpatientNo', align: 'center', width: 30},
             {name: 'bedNo', index: 'bedNo', align: 'center', width: 30, hidden: pageClass == 'A' ? true : false},
@@ -1109,6 +1121,19 @@ function initDetailTable() {
             if (celname === 'manuNo') {
                 return true
             }
+            if (celname === 'drugTracCodg') {
+                // 处理追溯码输入
+                let rowData = $("#tb_detail_table").getRowData(rowid);
+                let $cell = $("#" + rowid + "_drugTracCodg");
+                
+                // 如果输入的是追溯码(通常是一串数字或字母组合)
+                if (value && value.trim().length > 0) {
+                    // 验证并添加追溯码
+                    validateAndAddTracCodgWard(value.trim(), rowData, $cell);
+                    return false; // 阻止默认的单元格保存行为
+                }
+                return true;
+            }
             let data = $("#tb_detail_table").getRowData(rowid);
             $("#tb_detail_table").setCell(rowid, iCol, value);
             if (value == null || value == 0) {
@@ -1141,11 +1166,13 @@ function initDetailTable() {
         $("#t_tb_detail_table").append("<button class='registration-no-color-foot-button' title='确认药单' id='detail_save' onclick='save(1)' style='color: green;margin-left: 10px;'><i class='fa fa-floppy-o'></i></button>");
     } else {
         $("#t_tb_detail_table").append("<button class='registration-no-color-foot-button' title='保存批号' id='manu_save_mx' style='color: green;margin-left: 10px;'><i class='fa fa-floppy-o'></i></button>");
+        $("#t_tb_detail_table").append("<button class='registration-no-color-foot-button' title='扫码框聚焦' id='btn_restore_scan' style='color: blue;margin-left: 10px;'><i class='fa fa-barcode'></i></button>");
     }
     $("#manu_save_mx").click(function (t) {
         var obj = $('#tb_detail_table');
         var rowIds = obj.getDataIDs();
         var arrayData = new Array();
+        var tracCodgArrayData = new Array(); // 追溯码数据
         if (rowIds.length > 0) {
             for (var i = 0; i < rowIds.length; i++) {
                 let rowDate = obj.getRowData(rowIds[i]);
@@ -1158,16 +1185,55 @@ function initDetailTable() {
                         manuNo: rowDate.manuNo
                     });
                 }
+                // 保存追溯码数据
+                if (!isEmpty(rowDate.drugTracCodg)) {
+                    tracCodgArrayData.push({
+                        actOrderNo: rowDate.actOrderNo,
+                        chargeCode: rowDate.chargeCode,
+                        inpatientNo: rowDate.inpatientNo,
+                        orderDate: rowDate.occTime,
+                        drugTracCodg: rowDate.drugTracCodg
+                    });
+                }
             }
         }
-        request({
-            url: '/modifyManuNoZy',
-            method: 'POST',
-            data: JSON.stringify(arrayData)
-        }).then((res) => {
-            successMesage(res);
-            initButtonChange("#qld", 0);
-        });
+        
+        // 保存批号
+        if (arrayData.length > 0) {
+            request({
+                url: '/modifyManuNoZy',
+                method: 'POST',
+                data: JSON.stringify(arrayData)
+            }).then((res) => {
+                successMesage(res);
+            });
+        }
+        
+        // 保存追溯码
+        if (tracCodgArrayData.length > 0) {
+            request({
+                url: '/thmz/saveDrugTracCodg',
+                method: 'POST',
+                data: JSON.stringify(tracCodgArrayData)
+            }).then((res) => {
+                if (res.code === 0) {
+                    successMesageSimaple("追溯码保存成功");
+                } else {
+                    errorMesage(res);
+                }
+            }).catch((error) => {
+                console.error('保存追溯码失败:', error);
+                errorMesageSimaple("保存追溯码失败");
+            });
+        }
+        
+        initButtonChange("#qld", 0);
+    });
+    
+    // 恢复扫码框聚焦按钮点击事件
+    $("#btn_restore_scan").click(function() {
+        $("#barCode").focus();
+        successMesageSimaple("扫码框已激活,可以继续扫码批号");
     });
 }
 
@@ -2108,3 +2174,146 @@ function saveSummaryData(printFlag, summaryData) {
     });
 }
 
+/**
+ * 验证并添加追溯码
+ * @param tracCodg 追溯码
+ * @param rowData 行数据
+ * @param $element 单元格元素
+ */
+function validateAndAddTracCodgWard(tracCodg, rowData, $element) {
+    // 构建验证数据,适配住院药房的数据结构
+    let validateData = {
+        drugTracCodg: tracCodg,
+        patientId: rowData.inpatientNo,  // 住院药房使用inpatientNo
+        times: rowData.admissTimes,      // 住院药房使用admissTimes
+        receiptNo: rowData.pageNo,       // 住院药房使用pageNo
+        orderNo: rowData.actOrderNo,     // 住院药房使用actOrderNo
+        itemNo: rowData.serial,          // 住院药房使用serial
+        chargeItemCode: rowData.chargeCode, // 住院药房使用chargeCode
+        drugName: rowData.drugName,
+        specification: rowData.specification
+    };
+    
+    console.log('住院药房验证追溯码参数:', validateData);
+    console.log('行数据:', rowData);
+    
+    $.ajax({
+        type: "POST",
+        url: '/thmz/validateDrugTracCodgForDispensing',
+        contentType: "application/json;charset=UTF-8",
+        dataType: "json",
+        headers: {
+            'Accept': 'application/json',
+            'Authorization': 'Bearer ' + localStorage.getItem("token")
+        },
+        data: JSON.stringify(validateData),
+        success: function (res) {
+            console.log('验证响应:', res);
+            if (res.code == 0 && res.data && res.data.isValid) {
+                // 验证成功,添加到追溯码集合
+                addTracCodgToCellWard(tracCodg, $element);
+                successMesage(res);
+                // 验证成功后,保持单元格可编辑状态
+                $element.focus();
+            } else {
+                // 验证失败
+                errorMesage(res);
+                // 验证失败时,清理掉无效的追溯码
+                let currentContent = $element.html();
+                let codes = currentContent.split('<br>').filter(code => code.trim().length > 0);
+                
+                // 去掉最后一个追溯码(无效的追溯码)
+                if (codes.length > 0) {
+                    codes.pop();
+                    // 重新设置单元格内容
+                    let newContent = codes.join('<br>');
+                    if (newContent) {
+                        newContent += '<br>';
+                    }
+                    $element.html(newContent);
+                    
+                    // 保持焦点在单元格末尾
+                    $element.focus();
+                    let range = document.createRange();
+                    let selection = window.getSelection();
+                    range.selectNodeContents($element[0]);
+                    range.collapse(false);
+                    selection.removeAllRanges();
+                    selection.addRange(range);
+                }
+            }
+        },
+        error: function (xhr, status, error) {
+            console.error('验证请求失败:', error);
+            errorMesageSimaple("验证请求失败");
+            // 错误时也清理掉无效的追溯码
+            let currentContent = $element.html();
+            let codes = currentContent.split('<br>').filter(code => code.trim().length > 0);
+            
+            // 去掉最后一个追溯码(无效的追溯码)
+            if (codes.length > 0) {
+                codes.pop();
+                // 重新设置单元格内容
+                let newContent = codes.join('<br>');
+                if (newContent) {
+                    newContent += '<br>';
+                }
+                $element.html(newContent);
+                
+                // 保持焦点在单元格末尾
+                $element.focus();
+                let range = document.createRange();
+                let selection = window.getSelection();
+                range.selectNodeContents($element[0]);
+                range.collapse(false);
+                selection.removeAllRanges();
+                selection.addRange(range);
+            }
+        }
+    });
+}
+
+/**
+ * 添加追溯码到单元格(住院药房版本)
+ * @param tracCodg 追溯码(单个追溯码,不包含分隔符)
+ * @param $element 单元格元素
+ */
+function addTracCodgToCellWard(tracCodg, $element) {
+    let currentValue = $element.html();
+    
+    console.log('addTracCodgToCellWard 开始');
+    console.log('传入的追溯码:', tracCodg);
+    console.log('当前单元格内容:', currentValue);
+    
+    if (isEmpty(currentValue)) {
+        // 如果单元格为空,直接设置追溯码
+        console.log('单元格为空,直接设置追溯码');
+        $element.html(tracCodg);
+    } else {
+        // 检查是否已存在该追溯码
+        let existingCodes = currentValue.split('<br>');
+        console.log('已存在的追溯码列表:', existingCodes);
+        console.log('是否已存在:', existingCodes.includes(tracCodg));
+        
+        if (!existingCodes.includes(tracCodg)) {
+            // 如果不存在,添加<br>分隔符后追加
+            let newValue = currentValue + '<br>' + tracCodg;
+            console.log('添加追溯码,新内容:', newValue);
+            $element.html(newValue);
+        } else {
+            // 追溯码已存在,显示提示
+            console.log('追溯码已存在,显示提示');
+            if (typeof PNotify !== 'undefined') {
+                new PNotify({
+                    title: '提示',
+                    text: '该追溯码已添加',
+                    type: 'info',
+                    delay: 2000
+                });
+            }
+        }
+    }
+    
+    console.log('addTracCodgToCellWard 结束,最终单元格内容:', $element.html());
+}
+