Index: ssts-web/src/main/webapp/disinfectsystem/config/szsdsrmyy/config.js =================================================================== diff -u -r33658 -r33767 --- ssts-web/src/main/webapp/disinfectsystem/config/szsdsrmyy/config.js (.../config.js) (revision 33658) +++ ssts-web/src/main/webapp/disinfectsystem/config/szsdsrmyy/config.js (.../config.js) (revision 33767) @@ -278,6 +278,8 @@ changFontColorOfSterilizationProcedureAndSterilizationPurposeInSterilizationRecordInformation:true, //回收页面扫描物品唯一条码回收时限制只能在对应的申请单进行回收 recyclingOnlyInTheCorrespondingApplicationFormWhenScanningUniqueBarcode:true, + //灭菌装载模块中,将篮筐物品统计信息和篮筐物品明细合并显示 + combineBasketItemStatisticsAndBasketItemDetailsInTheSterilizationLoadingModule:true, //加急发货计划背景颜色 colorChangeRuleOfInvoicPlanToSendGoodsList:2, //启用器械包进度条 Index: ssts-web/src/main/webapp/disinfectsystem/sterilizationmanager/sterilizationrecord/sterilizationLoadingView.jsp =================================================================== diff -u -r29513 -r33767 --- ssts-web/src/main/webapp/disinfectsystem/sterilizationmanager/sterilizationrecord/sterilizationLoadingView.jsp (.../sterilizationLoadingView.jsp) (revision 29513) +++ ssts-web/src/main/webapp/disinfectsystem/sterilizationmanager/sterilizationrecord/sterilizationLoadingView.jsp (.../sterilizationLoadingView.jsp) (revision 33767) @@ -12,6 +12,9 @@ .x-tree-node a span{ display: inline-block; } + .x-column-tree .x-tree-selected { + background: #CDDDD2 !important; + }
Index: ssts-web/src/main/webapp/disinfectsystem/sterilizationmanager/sterilizationrecord/sterilizationLoadingForm.js =================================================================== diff -u -r33729 -r33767 --- ssts-web/src/main/webapp/disinfectsystem/sterilizationmanager/sterilizationrecord/sterilizationLoadingForm.js (.../sterilizationLoadingForm.js) (revision 33729) +++ ssts-web/src/main/webapp/disinfectsystem/sterilizationmanager/sterilizationrecord/sterilizationLoadingForm.js (.../sterilizationLoadingForm.js) (revision 33767) @@ -1,6 +1,7 @@ var tousseStore;//篮筐物品明细 var stasticsStore;//篮筐物品统计 var reviewedPanel;//所有整理中的篮筐明细 +var tousseGrid2; var reviewedStatisticsGrid;//所有整理中的篮筐的器械包统计信息 var reviewedStatisticsStore;//所有整理中篮筐的器械包统计信息 var waitSterileLoadingTousseStore;//待灭菌装载的器械包 @@ -45,11 +46,53 @@ } //刷新入筐器械包列表 -function reloadReviewedPanel(reviewedPanel,callback){ +function reloadReviewedPanel(reviewedPanel, callback) { reviewedPanel.loader.baseParams.basketId = ''; reviewedPanel.loader.load(reviewedPanel.root, callback);//重新加载树结构 } +//刷新篮筐物品明细 +function reloadBasketGrid(basketBarcode, objBarcode, callback) { + var tousseGrid2 = Ext.getCmp('tousseGrid2'); + if (basketBarcode) { + tousseGrid2.loader.baseParams.basketBarcode = basketBarcode; + } + tousseGrid2.loader.load(tousseGrid2.root, callback || function () { + var rows = tousseGrid2.root; + var itemCount = rows.childNodes.length; + var barcodeAmount = 0; + for (var i = 0; i < rows.childNodes.length; i++) { + var item1 = rows.childNodes[i].attributes; + barcodeAmount += parseInt(item1.amount); + if (objBarcode) { + if (sstsConfig.showDepartOfTousseInstanceSterile) { + for (var j = 0; j < item1.children.length; j++) { + var item2 = item1.children[j]; + for (var k = 0; k < item2.children.length; k++) { + var item3 = item2.children[k]; + if (item3.objBarcode == objBarcode) { + tousseGrid2.root.childNodes[i].expand(true, true); + tousseGrid2.root.childNodes[i].childNodes[j].childNodes[k].select(); + return true; + } + } + } + } else { + for (var j = 0; j < item1.children.length; j++) { + var item2 = item1.children[j]; + if (item2.objBarcode == objBarcode) { + tousseGrid2.root.childNodes[i].expand(true, true); + tousseGrid2.root.childNodes[i].childNodes[j].select(); + return true; + } + } + } + } + } + tousseGrid2.setTitle('篮筐物品统计信息:' + itemCount + ' 种包,共 ' + barcodeAmount + ' 个'); + }); +} + var barcodeLable = '条码扫描'; var isLoading = false; //灭菌装载是否启用首尾条码机制(只有为true时才启用,未配置或配置其它值时则不启用) @@ -78,7 +121,6 @@ return false; } - /** * 移除篮筐物品统计的数据 */ @@ -133,10 +175,25 @@ showResult(result.message); return; } - tousseStore.load(); - stasticsStore.load() + stasticsStore.load(); + var count; + if (sstsConfig.combineBasketItemStatisticsAndBasketItemDetailsInTheSterilizationLoadingModule) { + reloadBasketGrid('', '', function () { + var rows = tousseGrid2.root; + count = rows.childNodes.length; + var barcodeAmount = 0; + for (var i = 0; i < rows.childNodes.length; i++) { + var item1 = rows.childNodes[i].attributes; + barcodeAmount += parseInt(item1.amount); + } + tousseGrid2.setTitle('篮筐物品统计信息:' + count + ' 种包,共 ' + barcodeAmount + ' 个'); + }); + } else { + tousseStore.load(); + count = tousseStore.getCount(); + } //如果篮筐内器械包数量为空,删除此篮筐记录(释放篮筐) - if (tousseStore.getCount() == 0) { + if (count == 0) { delEmptyBasket(); } else { reloadReviewedPanel(reviewedPanel); @@ -164,12 +221,27 @@ showResult(result.message); return; } - for (var i = 0; i < rowDataArray.length; i++) { - tousseStore.remove(rowDataArray[i]); + var count; + if (sstsConfig.combineBasketItemStatisticsAndBasketItemDetailsInTheSterilizationLoadingModule) { + reloadBasketGrid('', '', function () { + var rows = tousseGrid2.root; + count = rows.childNodes.length; + var barcodeAmount = 0; + for (var i = 0; i < rows.childNodes.length; i++) { + var item1 = rows.childNodes[i].attributes; + barcodeAmount += parseInt(item1.amount); + } + tousseGrid2.setTitle('篮筐物品统计信息:' + count + ' 种包,共 ' + barcodeAmount + ' 个'); + }); + } else { + for (var i = 0; i < rowDataArray.length; i++) { + tousseStore.remove(rowDataArray[i]); + } + count = tousseStore.getCount(); } stasticsStore.remove(row); //如果篮筐内器械包数量为空,删除此篮筐记录(释放篮筐) - if (tousseStore.getCount() == 0) { + if (count == 0) { delEmptyBasket(); } else { reloadReviewedPanel(reviewedPanel); @@ -195,69 +267,137 @@ } } +//移除篮筐内物品 +function removeFromBasket(row, barcode) { + Ext.Ajax.request({ + url: WWWROOT + '/disinfectSystem/tousseInstanceAction!removeFromBasket.do', + params: { barcode: barcode, reviewedBasketId: reviewedBasketId }, + success: function (response, options) { + hiddenMask();//进度条结束 + var result = Ext.decode(response.responseText); + if (!result || result.success == false) { + showResult(result.message); + return; + } + var count; + if (sstsConfig.combineBasketItemStatisticsAndBasketItemDetailsInTheSterilizationLoadingModule) { + reloadBasketGrid(); + stasticsStore.load(); + waitSterileLoadingTousseStore.reload(); + reloadReviewedPanel(reviewedPanel); + return; + } else { + tousseStore.remove(row); + count = tousseStore.getCount(); + } + + //重新刷新效率太低(判断里面有没有符合的行,如果有则直接js修改数量,否则删除) + //stasticsStore.load(); + //按科室名称与器械包名称循环去找 + //不再是刷新后台的方式进行统计,而是由js直接操作统计的数据 + if (stasticsStore.getCount() > 0) { + for (var i = 0; i < stasticsStore.getCount(); i++) { + var stasticsRowData = stasticsStore.getAt(i); + if (stasticsRowData.data.tousseDefinitionName == row.data.tousseDefinitionName) { + if (stasticsRowData.data.depart == row.data.depart || (!stasticsRowData.data.depart && !row.data.depart)) { + if (stasticsRowData.data.count > 1) { + var count = parseInt(stasticsRowData.data.count) - parseInt(row.get("amount")) + if (parseInt(count) > 0) { + stasticsRowData.set("count", count); + } else { + stasticsStore.remove(stasticsRowData); + } + } else { + stasticsStore.remove(stasticsRowData); + } + break; + } + } + } + } + //如果篮筐内器械包数量为空,删除此篮筐记录(释放篮筐) + if (count == 0) { + delEmptyBasket(); + } else { + reloadReviewedPanel(reviewedPanel); + //待灭菌装载列表数据源重新刷新 + waitSterileLoadingTousseStore.reload(); + } + }, + failure: function (response, options) { + var result = Ext.decode(response.responseText); + MsgTip.msg('提示', "后台运行异常,请稍后再试", true, 3); + hiddenMask();//进度条结束 + } + }); +} + /** * 移除篮筐物品明细的数据 */ -function removeGridItem() { - beginMask();//开启进度条 - var rows = Ext.getCmp('tousseGrid').getSelectionModel().getSelections(); - if (rows) { - for (var i = 0; i < rows.length; i++) { - var row = rows[i]; - //从篮筐里移除 - Ext.Ajax.request({ - url: WWWROOT + '/disinfectSystem/tousseInstanceAction!removeFromBasket.do', - params: { barcode: rows[i].data.barcode, reviewedBasketId: reviewedBasketId }, - success: function (response, options) { - hiddenMask();//进度条结束 - var result = Ext.decode(response.responseText); - if (!result || result.success == false) { - showResult(result.message); - return; - } - tousseStore.remove(row); - - //重新刷新效率太低(判断里面有没有符合的行,如果有则直接js修改数量,否则删除) - //stasticsStore.load(); - //按科室名称与器械包名称循环去找 - //不再是刷新后台的方式进行统计,而是由js直接操作统计的数据 - if (stasticsStore.getCount() > 0) { - for (var i = 0; i < stasticsStore.getCount(); i++) { - var stasticsRowData = stasticsStore.getAt(i); - if (stasticsRowData.data.tousseDefinitionName == row.data.tousseDefinitionName) { - if (stasticsRowData.data.depart == row.data.depart || (!stasticsRowData.data.depart && !row.data.depart)) { - if (stasticsRowData.data.count > 1) { - var count = parseInt(stasticsRowData.data.count) - parseInt(row.get("amount")) - if (parseInt(count) > 0) { - stasticsRowData.set("count", count); - } else { - stasticsStore.remove(stasticsRowData); - } - } else { - stasticsStore.remove(stasticsRowData); - } - break; - } +function removeGridItem(objName, depart, objBarcode) { + //beginMask();//开启进度条 + var rows; + if (sstsConfig.combineBasketItemStatisticsAndBasketItemDetailsInTheSterilizationLoadingModule) { + rows = Ext.getCmp('tousseGrid2').root; + if (objBarcode !== '') { + var barcode = objBarcode; + if (barcode !== '') { + removeFromBasket('', barcode); + } + } else if (depart !== '') { + var arr = []; + for (var i = 0; i < rows.childNodes.length; i++) { + var item1 = rows.childNodes[i].attributes; + if (item1.objName == objName) { + for (var j = 0; j < item1.children.length; j++) { + var item2 = item1.children[j]; + if (item2.objName == depart) { + for (var k = 0; k < item2.children.length; k++) { + var item3 = item2.children[k]; + arr.push(item3.objBarcode); } } } - //如果篮筐内器械包数量为空,删除此篮筐记录(释放篮筐) - if (tousseStore.getCount() == 0) { - delEmptyBasket(); + } + } + if (arr.length > 0) { + removeFromBasket('', arr.join(';')); + } + } else { + var arr = []; + for (var i = 0; i < rows.childNodes.length; i++) { + var item1 = rows.childNodes[i].attributes; + if (item1.objName == objName) { + if (sstsConfig.showDepartOfTousseInstanceSterile) { + for (var j = 0; j < item1.children.length; j++) { + var item2 = item1.children[j]; + for (var k = 0; k < item2.children.length; k++) { + var item3 = item2.children[k]; + arr.push(item3.objBarcode); + } + } } else { - reloadReviewedPanel(reviewedPanel); - //待灭菌装载列表数据源重新刷新 - waitSterileLoadingTousseStore.reload(); + for (var j = 0; j < item1.children.length; j++) { + var item2 = item1.children[j]; + arr.push(item2.objBarcode); + } } - }, - failure: function (response, options) { - var result = Ext.decode(response.responseText); - MsgTip.msg('提示', "后台运行异常,请稍后再试", true, 3); - hiddenMask();//进度条结束 } - }); + } + if (arr.length > 0) { + removeFromBasket('', arr.join(';')); + } } - + } else { + rows = Ext.getCmp('tousseGrid').getSelectionModel().getSelections(); + if (rows) { + for (var i = 0; i < rows.length; i++) { + var row = rows[i]; + //从篮筐里移除 + removeFromBasket(row, rows[i].data.barcode); + } + } } } @@ -307,9 +447,30 @@ } function getTousseStoreBarcodes() { var barcodes = []; - for (var i = 0; i < tousseStore.getCount(); i++) { - var record = tousseStore.getAt(i); - barcodes.push(record.data.barcode); + if (sstsConfig.combineBasketItemStatisticsAndBasketItemDetailsInTheSterilizationLoadingModule) { + var rows = tousseGrid2.root; + for (var i = 0; i < rows.childNodes.length; i++) { + var item1 = rows.childNodes[i].attributes; + if (sstsConfig.showDepartOfTousseInstanceSterile) { + for (var j = 0; j < item1.children.length; j++) { + var item2 = item1.children[j]; + for (var k = 0; k < item2.children.length; k++) { + var item3 = item2.children[k]; + barcodes.push(item3.objBarcode); + } + } + } else { + for (var j = 0; j < item1.children.length; j++) { + var item2 = item1.children[j]; + barcodes.push(item2.objBarcode); + } + } + } + } else { + for (var i = 0; i < tousseStore.getCount(); i++) { + var record = tousseStore.getAt(i); + barcodes.push(record.data.barcode); + } } var jsonObject = new Object(); jsonObject.scannedBarcodes = barcodes; @@ -352,7 +513,12 @@ hiddenMask(); var result = Ext.decode(response.responseText); if (result.success) { - tousseStore.load(); + if (sstsConfig.combineBasketItemStatisticsAndBasketItemDetailsInTheSterilizationLoadingModule) { + reloadBasketGrid(); + } else { + tousseStore.load(); + } + stasticsStore.load() //刷新入筐器械包列表的数据 reloadReviewedPanel(reviewedPanel); @@ -413,13 +579,13 @@ * */ function scanBarcodeAndAddToBasket(barcode, mode) { - //beginMask();//开启进度条 + beginMask();//开启进度条 //灭菌篮筐条码 var basketBarcode = Ext.getCmp('basketBarcode').getValue(); SterileLoadingTableManager.scanBarcodeAndAddTousseToBasket(barcode, getTousseStoreBarcodes(), basketBarcode, function (jsonStr) { //篮筐物品明细grid列表的包的灭菌方式 var sterilingModeFromBasketGoodsDetailGrid = getSterilingModeFromBasketGoodsDetailGrid(); - //hiddenMask(); + hiddenMask(); //console.log('barcode2='+barcode+','+new Date().format('y-m-d H:i:s') + '.' + new Date().getMilliseconds()); var obj = Ext.util.JSON.decode(jsonStr); var returnType = obj.returnType; @@ -466,9 +632,12 @@ firstSterilingTypeOfTousseInBasket = null; Ext.getCmp("basketName").setValue(obj.containerName); Ext.getCmp('basketBarcode').setValue(obj.basketBarcode); - - tousseStore.baseParams.basketBarcode = obj.basketBarcode; - tousseStore.load(); + if (sstsConfig.combineBasketItemStatisticsAndBasketItemDetailsInTheSterilizationLoadingModule) { + reloadBasketGrid(obj.basketBarcode, barcode); + } else { + tousseStore.baseParams.basketBarcode = obj.basketBarcode; + tousseStore.load(); + } stasticsStore.baseParams.basketBarcode = obj.basketBarcode; stasticsStore.load(); Ext.getCmp('barcode').setValue(""); @@ -479,9 +648,12 @@ firstSterilingTypeOfTousseInBasket = null; Ext.getCmp("basketName").setValue(obj.containerName); Ext.getCmp('basketBarcode').setValue(obj.basketBarcode); - - tousseStore.baseParams.basketBarcode = obj.basketBarcode; - tousseStore.load(); + if (sstsConfig.combineBasketItemStatisticsAndBasketItemDetailsInTheSterilizationLoadingModule) { + reloadBasketGrid(obj.basketBarcode, barcode); + } else { + tousseStore.baseParams.basketBarcode = obj.basketBarcode; + tousseStore.load(); + } stasticsStore.baseParams.basketBarcode = obj.basketBarcode; stasticsStore.load(); } @@ -508,12 +680,13 @@ } } if (obj.msg == "成功放入篮筐") { - - for (var i = 0; i < tousseStore.getCount(); i++) { - var record = tousseStore.getAt(i); - if (record.data.barcode.toUpperCase() == barcode.toUpperCase()) { - showResult('此物品已在此篮筐内'); - return; + if (!sstsConfig.combineBasketItemStatisticsAndBasketItemDetailsInTheSterilizationLoadingModule) { + for (var i = 0; i < tousseStore.getCount(); i++) { + var record = tousseStore.getAt(i); + if (record.data.barcode.toUpperCase() == barcode.toUpperCase()) { + showResult('此物品已在此篮筐内'); + return; + } } } @@ -561,7 +734,11 @@ sterilingType: obj.sterilingType, sterilingMode: obj.sterilingMode }); - tousseStore.insert(0, currentTousseInstance);//最新扫描的器械包放到第一行 + if (sstsConfig.combineBasketItemStatisticsAndBasketItemDetailsInTheSterilizationLoadingModule) { + reloadBasketGrid('', barcode); + } else { + tousseStore.insert(0, currentTousseInstance);//最新扫描的器械包放到第一行 + } //console.log('barcode5='+barcode+','+new Date().format('y-m-d H:i:s') + '.' + new Date().getMilliseconds()); //刷新后台速度太慢 @@ -624,11 +801,16 @@ Ext.getCmp("basketName").setValue(obj.containerName); Ext.getCmp('basketBarcode').setValue(barcode); - tousseStore.baseParams.basketBarcode = barcode; - tousseStore.load(); + if (sstsConfig.combineBasketItemStatisticsAndBasketItemDetailsInTheSterilizationLoadingModule) { + reloadBasketGrid(barcode); + } else { + tousseStore.baseParams.basketBarcode = barcode; + tousseStore.load(); + } + stasticsStore.baseParams.basketBarcode = barcode; stasticsStore.load(); - reloadReviewedPanel(reviewedPanel,function(){ + reloadReviewedPanel(reviewedPanel, function () { reviewedPanel.root.eachChild(function (childNode) { if (childNode.attributes.objBarcode == basketBarcode) { childNode.eachChild(function (node) { @@ -759,19 +941,7 @@ var barcodeArray = []; for (var j = 0; tousseInstances && tousseInstances.length > 0 && j < tousseInstances.length; j++) { - var barcodeToBasket = tousseInstances[j].barcode; barcodeArray.push(tousseInstances[j].barcode); - // var barcodeAddedToBasket = false; - // for(var i=0;i