Index: ssts-web/src/main/webapp/disinfectsystem/foreigntousseapplication/foreignTousseInfoForm.js =================================================================== diff -u -r19600 -r19663 --- ssts-web/src/main/webapp/disinfectsystem/foreigntousseapplication/foreignTousseInfoForm.js (.../foreignTousseInfoForm.js) (revision 19600) +++ ssts-web/src/main/webapp/disinfectsystem/foreigntousseapplication/foreignTousseInfoForm.js (.../foreignTousseInfoForm.js) (revision 19663) @@ -49,15 +49,6 @@ if (depth == 2){ var washClassifyTypeClass = washClassifyTypeColor[washClassifyType]; return top.Ext4.isEmpty(washClassifyTypeClass) ? washClassifyTypeColor['default'] : washClassifyTypeClass; - /* if(currentWashClassifyType != washClassifyType){ - currentWashClassifyType = washClassifyType; - tmpWashClassifyTypeNum++; - } - if(tmpWashClassifyTypeNum % 2 == 0){ - return 'white-row'; - }else{ - return 'yellow-row'; - }*/ } } }, @@ -450,7 +441,14 @@ } } -function getExsistForeignTousseItem(treeStore, tousseName,supplierName){ +/** + * 在treeStore里面找,指定“名称”和“供应商”的外来器械包。 + * @param treeStore treeStore + * @param tousseName 器械包名称 + * @param supplierName 供应商名称 + * @returns + */ +function getExsistForeignTousseItem(treeStore, tousseName, supplierName){ var foundNode = null; var rootNode = treeStore.getRootNode(); rootNode.cascade(function(n) { @@ -483,18 +481,11 @@ deptCoding2 = storeDeptCoding2; } - // var deptCoding = getStoreDepartCoding(applyDepartJsonStore,depart); - // top.Ext4.ComponentQuery.query("#foreignToussForm #departCoding")[0].setValue(deptCoding); - if(deptCoding == ""){ showResult("申请科室编码不能为空!"); return false; } - // var settleAccountsDepart = top.Ext4.ComponentQuery.query("#foreignToussForm #settleAccountsDepart")[0].getValue(); - // var deptCoding2 = getStoreDepartCoding(applyDepartJsonStore,settleAccountsDepart); - // top.Ext4.ComponentQuery.query("#foreignToussForm #settleAccountsDepartCoding")[0].setValue(deptCoding2); - if(deptCoding2 == ""){ showResult("结算科室编码不能为空!"); return false; @@ -559,11 +550,151 @@ }); } -function openForeignTousseForm(id,formType){ +//是否执行清零操作 +var isCleanAmount = false; +/** + * 打开“外来器械包”的所有的材料清洗分类类型. + */ +function openWashClassifyTypeWindow() { + var foreignTousseNode = foreignTousseStore.getRootNode().childNodes[0]; + if (foreignTousseNode) { + //定义“清洗分类类型”每一行的数据模型 + Ext4.define('washClassifyTypeModel', { + extend : 'Ext4.data.Model', + fields: [ + {name : 'washClassifyType'}, + {name : 'amount'}, + {name : 'clean'} + ] + }); + + //“清洗分类类型”grid的store + var washClassifyTypeGridStore = Ext4.create('top.Ext4.data.Store', { + model: washClassifyTypeModel, + proxy: { + type: 'memory' + } + }); + + //把数据加到washClassifyTypeGridStore中 + var materialNodes = foreignTousseNode.childNodes; + var washClassifyTypeAndAmount = statisticsWashClassifyType(materialNodes); + for(var key in washClassifyTypeAndAmount){ + if (washClassifyTypeAndAmount.hasOwnProperty(key)) { //过滤掉非“washClassifyTypeAndAmount”本对象的属性比较严谨一些 + var washClassifyTypeItem = Ext4.create('washClassifyTypeModel', { + washClassifyType: key, + amount: washClassifyTypeAndAmount[key] + }); + washClassifyTypeGridStore.add(washClassifyTypeItem); + } + } + + var washClassifyTypeGrid = Ext4.create('top.Ext4.grid.Panel', { + height: 200, + width: 400, + autoScroll : true, + store: washClassifyTypeGridStore, + columns: [{ + text: '清洗分类类型', dataIndex: 'washClassifyType',sortable:false + },{ + text: '数量', dataIndex: 'amount',sortable:false + },{ + text: '清零', dataIndex: 'clean',sortable:false,renderer:function(v, p, record){ + return ""; + } + }], + listeners: { + cellclick: function(_this, td, cellIndex, record, tr, rowIndex, e, eOpts) { + //如果是点击清零图标,就清零 + if (isCleanAmount) { + setCleanAmount(false); + record.set('amount', 0); + } + } + } + }); + + //清洗分类类型的窗口 + var washClassifyTypeWindow = Ext4.create('top.Ext4.window.Window', { + title : '清洗分类类型统计', + resizable :false, + modal : true, + border : false, + plain : true, + layout : 'fit', + buttonAlign : 'center', + buttons: [{ + text: '确认', + handler: function() { + var zeroArray = []; + washClassifyTypeGridStore.each(function(item) { + if (item.get('amount') == 0) { + zeroArray.push(item.get('washClassifyType')); + } + }); + + if (zeroArray.length > 0) { + var temp = ';' + zeroArray.join(';') + ';'; + for (var i = 0; i < materialNodes.length; i++) { + var materialNode = materialNodes[i]; + var washClassifyType = materialNode.get('washClassifyType'); + if (temp.indexOf(';' + washClassifyType + ';') != -1) { + materialNode.set('amount', 0); + } + } + } + washClassifyTypeWindow.close(); + } + },{ + text: '取消', + handler: function() { + washClassifyTypeWindow.close(); + } + }], + items : washClassifyTypeGrid + }); + washClassifyTypeWindow.show(); + } +} + +/** + * 统计某个“外来器械包”的所有清洗分类类型. + * @param materialNodes 外来器械包的材料节点信息 + */ +function statisticsWashClassifyType(materialNodes) { + var washClassifyTypeAndAmount = {}; + for (var i = 0; i < materialNodes.length; i++) { + var materialNode = materialNodes[i]; + var washClassifyType = materialNode.get('washClassifyType'); + if (washClassifyTypeAndAmount.hasOwnProperty(washClassifyType)) { + washClassifyTypeAndAmount[washClassifyType] += (materialNode.get('amount') ? parseInt(materialNode.get('amount')) : 0); + } else { + washClassifyTypeAndAmount[washClassifyType] = (materialNode.get('amount') ? parseInt(materialNode.get('amount')) : 0); + } + } + return washClassifyTypeAndAmount; +} + +/** + * 清除数量. + * @param cleanAmount 是否需要执行清零操作 + */ +function setCleanAmount(cleanAmount) { + isCleanAmount = cleanAmount; +} + +/** + * 打开外来器械包申请单的窗口. + * @param id 外来器械包申请单 + * @param formType 操作类型 + */ +function openForeignTousseForm(id, formType){ currentWashClassifyType = null; + //外来器械申请时是否显示原始包定义(如果为true显示原始,否则显示最近一次申请的) var isShowForeignTousseAncestorDefinitionForApply = getObjValueFromJs('sstsConfig.isShowForeignTousseAncestorDefinitionForApply',false); + //外来器械包的store var foreignTousseJsonStore = new Ext4.data.Store({ proxy : { type : 'ajax', @@ -596,6 +727,7 @@ } }); + //供应室的store var foldersCompanyJsonStore = new Ext4.data.Store({ proxy : { type : 'ajax', @@ -677,16 +809,17 @@ var foreignTousseName = top.Ext4.getCmp('foreignTousseName1').getRawValue(); var tousseDefinitionId = top.Ext4.getCmp('foreignTousseName1').getValue(); - var packageSizeTemp = top.Ext4.getCmp("packageSizeTemp").getValue(); + if(isNaN(tousseDefinitionId)){ + tousseDefinitionId = ""; + } + var suppler = top.Ext4.getCmp('suppler1').getValue(); + //器械包“大小”属性 + var packageSizeTemp = top.Ext4.getCmp("packageSizeTemp").getValue(); if (!packageSizeTemp) { packageSizeTemp = defaultPackageSize; } - if(isNaN(tousseDefinitionId)){ - tousseDefinitionId = ""; - } - var suppler = top.Ext4.getCmp('suppler1').getValue(); if(Ext4.isEmpty(foreignTousseName)){ var alertTips = "请选择器械包!"; showResult(alertTips); @@ -701,6 +834,8 @@ showResult("只能申请一个外来器械包!"); return false; } + + //获取外来器械包的材料信息 var index = foreignTousseJsonStore.findExact("id",tousseDefinitionId); var materials = []; if(index != -1){ @@ -734,6 +869,7 @@ } }); } + var item = getExsistForeignTousseItem(foreignTousseStore,foreignTousseName,suppler); if(item == null){ var tousseItem = Ext4.create('foreignTousseItemModel',{ @@ -765,30 +901,28 @@ } } },{ - xtype : 'hidden', - id : 'packageSizeTemp' - },{ text: "", id : 'materialAmountInfo' } ]; var bbars = []; + //是否隐藏植入物使用数量列 var includeImplantUsedAmountHidden = false; var confirmRecycle = false; if(formType == 'apply'){ includeImplantUsedAmountHidden = true; - var disableReturnStatus = true; //能否归还 - var disableReturnStatus2 = false; - if(id == null || id == ""){ - disableReturnStatus2 = true; - }else{ + //是否禁用“确认归还”按钮 + var disableReturnStatus = true; + //是否禁用“提前归还”按钮 + var disableAdvanceReturnStatus = true; + if(id){ DWREngine.setAsync(false); ForeignTousseApplicationTableManager.isForeignTousseCanReturn(id,function(result){ var json = JSON.parse(result); disableReturnStatus = json.disableReturnStatus; - disableReturnStatus2 = json.disableReturnStatus2; + disableAdvanceReturnStatus = json.disableAdvanceReturnStatus; }); DWREngine.setAsync(true); } @@ -858,7 +992,7 @@ } },{ text : '提前归还', - disabled:disableReturnStatus2, + disabled:disableAdvanceReturnStatus, handler : function(){ //由于Ext4.MessageBox.confirm兼容性问题,在全部申请单列表中点【是】按钮事件无反应,故而改用window显示 var tmpWindow = new top.Ext4.window.Window({ @@ -891,6 +1025,12 @@ tmpWindow.show(); } },{ + text : '查看清洗分类类型', + hidden:(id ? true : false), + handler : function() { + openWashClassifyTypeWindow(); + } + },{ text : '取消', handler : function() { foreignTousseApplyWindow.close(); @@ -923,6 +1063,7 @@ }] } + //foreignTousseTreeGrid的列 var foreignTousseColumns = [{ dataIndex : 'tousseDefinitionId', hidden : true @@ -954,7 +1095,6 @@ sortable: true, dataIndex: 'tousseName', editor: { - xtype: 'textfield', allowDecimals :false, minValue: 0, @@ -1096,6 +1236,7 @@ } }]; + //foreignTousseTreeGrid的store foreignTousseStore = new Ext4.data.TreeStore({ model: foreignTousseItemModel, proxy: { @@ -1136,6 +1277,7 @@ }); settleDepartJsonStore.load(); + //申请科室的store applyDepartJsonStore = new Ext4.data.Store({ //limit参数,每页显示条数,默认为25 pageSize: isIE6OrIE7 ? 15 : 50, @@ -1155,6 +1297,7 @@ }); applyDepartJsonStore.load(); + //处理方式的store var processTypeJsonStore = new Ext4.data.Store({ fields : [ 'typeName' ], proxy : { @@ -1199,31 +1342,14 @@ layout : 'hbox', flex : 1, items : [ + {xtype : 'hidden',name : 'id',id : 'id'}, + {xtype : 'textfield',fieldLabel : '科室编号 ',xtype : 'hidden',name : 'departCoding',id : 'departCoding'}, + {xtype : 'textfield',fieldLabel : '结算科室编号',xtype : 'hidden',name : 'settleAccountsDepartCoding',id : 'settleAccountsDepartCoding'}, + {xtype : 'hidden',name : 'foreignTousseInfo',id : 'foreignTousseInfo'}, + {xtype : 'hidden',name : 'barcodeStr',id : 'barcodeStr'}, + {xtype : 'hidden',id : 'packageSizeTemp'}, //大小(因为现在一张外来申请单只能申请一个外来器械包) + { - xtype : 'hidden', - name : 'id', - id : 'id' - },{ - xtype : 'textfield', - fieldLabel : '科室编号 ', - xtype : 'hidden', - name : 'departCoding', - id : 'departCoding' - },{ - xtype : 'textfield', - fieldLabel : '结算科室编号', - xtype : 'hidden', - name : 'settleAccountsDepartCoding', - id : 'settleAccountsDepartCoding' - },{ - xtype : 'hidden', - name : 'foreignTousseInfo', - id : 'foreignTousseInfo' - },{ - xtype : 'hidden', - name : 'barcodeStr', - id : 'barcodeStr' - },{ xtype : 'textfield', fieldLabel : '申请人', maxLength : '50', @@ -1603,25 +1729,35 @@ method : 'GET', waitMsg : '正在加载数据,请稍候', success : function(form, action) { + //设置申领科室 var depart = action.result.data.depart; var departComp = top.Ext4.ComponentQuery.query("#foreignToussForm #depart")[0]; departComp.forceSelection = false; departComp.setRawValue(depart); departComp.forceSelection = true; + + //设置结算科室 var settleAccountsDepart = action.result.data.settleAccountsDepart; var settleAccountsDepartComp = top.Ext4.ComponentQuery.query("#foreignToussForm #settleAccountsDepart")[0]; settleAccountsDepartComp.forceSelection = false; settleAccountsDepartComp.setRawValue(settleAccountsDepart); settleAccountsDepartComp.forceSelection = true; + + //设置性别 var patientSex = action.result.data.patientSex; top.Ext4.getCmp("patientSex").setValue(patientSex); + + //设置处理方式 var processType = action.result.data.processType; var processTypeComp = top.Ext4.ComponentQuery.query("#foreignToussForm #processType")[0]; processTypeComp.forceSelection = false; processTypeComp.setValue(processType); processTypeComp.forceSelection = true; + + //设置手术间 top.Ext4.getCmp("operationRoom").setValue(action.result.data.operationRoom); + //设置手术时间 var operationTime = action.result.data.operationTime; if(operationTime != ""){ var trainingStartTime = new Date(Date.parse(operationTime.replace(/-/g,"/"))); @@ -1636,7 +1772,7 @@ } }); }else{ - // 首先取config里面的配置,没有配置才设置为当前登录科室的 + // 1、首先取config里面的配置,没有配置才设置为当前登录科室的 var depart = $Id('depart').value; var departCoding = $Id('departCoding').value; var appDepart = depart; @@ -1680,7 +1816,8 @@ DWREngine.setAsync(true); } } - // 这里要使用setRawValue,而不能使用setValue,因为数据源分页了,setValue会校验数据的合理性,如果该页不存在那个值,setValue是无效的 + + // 2、这里要使用setRawValue,而不能使用setValue,因为数据源分页了,setValue会校验数据的合理性,如果该页不存在那个值,setValue是无效的 top.Ext4.ComponentQuery.query("#foreignToussForm #depart")[0].setRawValue(appDepart); top.Ext4.ComponentQuery.query("#foreignToussForm #departCoding")[0].setRawValue(appDepartCode); top.Ext4.ComponentQuery.query("#foreignToussForm #settleAccountsDepart")[0].setRawValue(settleAccountsDepart); Index: ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/action/TousseDefinitionAction.java =================================================================== diff -u -r19526 -r19663 --- ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/action/TousseDefinitionAction.java (.../TousseDefinitionAction.java) (revision 19526) +++ ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/action/TousseDefinitionAction.java (.../TousseDefinitionAction.java) (revision 19663) @@ -1773,17 +1773,14 @@ obj.put("id", materialInstance.getId()); String materialName = materialInstance.getMaterialName(); MaterialDefinition materialDefinition = materialInstance.getMaterialDefinition(); - String washClassifyType = ""; if(materialDefinition != null){ - washClassifyType = materialDefinition.getWashClassifyType(); materialName = CssdUtils.getMaterialName(materialDefinition); } obj.put("materialName",materialName); obj.put("amount", materialInstance.getCount()); obj.put("includeImplant",materialInstance.materialIsImplant()); - obj.put("minDismantleAmount", - materialInstance.getMinDismantleAmount()); - obj.put("washClassifyType", washClassifyType); + obj.put("minDismantleAmount",materialInstance.getMinDismantleAmount()); + obj.put("washClassifyType", materialInstance.getWashClassifyType()); //清洗分类类型,直接取材料实例的 materials.add(obj); } } Index: ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/foreigntousseapplication/dwr/table/ForeignTousseApplicationTableManager.java =================================================================== diff -u -r19486 -r19663 --- ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/foreigntousseapplication/dwr/table/ForeignTousseApplicationTableManager.java (.../ForeignTousseApplicationTableManager.java) (revision 19486) +++ ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/foreigntousseapplication/dwr/table/ForeignTousseApplicationTableManager.java (.../ForeignTousseApplicationTableManager.java) (revision 19663) @@ -91,17 +91,16 @@ } /** - * 外来器械包是否可以归还 - * @param id + * 填写外来器械包申请单时,是否禁用“确认归还”和“提前归还”按钮 + * @param id 外来器械包申请单的id * @return */ public String isForeignTousseCanReturn(String id) { JSONObject obj = new JSONObject(); boolean disableReturnStatus = true; - boolean disableReturnStatus2 = false; + boolean disableAdvanceReturnStatus = false; if (DatabaseUtil.isPoIdValid(id)) { - ForeignTousseApplication ftApplication = foreignTousseApplicationManager - .getById(id); + ForeignTousseApplication ftApplication = foreignTousseApplicationManager.getById(id); if (ftApplication != null && InvoicePlan.RECYCLINGSTATUS_RECYCLED.equals(ftApplication.getRecyclingStatus()) && !ForeignTousseApplication.APPLICATION_STATUS_RETRUN.equals(ftApplication.getPackageStatus())) { @@ -110,11 +109,11 @@ if(InvoicePlan.RECYCLINGSTATUS_AWAITRECEIVE.equals(ftApplication.getRecyclingStatus()) || ForeignTousseApplication.APPLICATION_STATUS_RETRUN.equals(ftApplication.getPackageStatus())){ - disableReturnStatus2 = true; + disableAdvanceReturnStatus = true; } } obj.put("disableReturnStatus", disableReturnStatus); - obj.put("disableReturnStatus2", disableReturnStatus2); + obj.put("disableAdvanceReturnStatus", disableAdvanceReturnStatus); return obj.toString(); }