Index: ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseDefinitionManagerImpl.java =================================================================== diff -u -r20027 -r20037 --- ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseDefinitionManagerImpl.java (.../TousseDefinitionManagerImpl.java) (revision 20027) +++ ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseDefinitionManagerImpl.java (.../TousseDefinitionManagerImpl.java) (revision 20037) @@ -403,14 +403,9 @@ List materialInstances = new ArrayList(); List diposableGoodsInstances = new ArrayList(); Integer includeImplantFlag = TousseDefinition.UNINCLUDE_IMPLANT; //判断是否包含植入物(cjr) - List list = new ArrayList(); for (int i = 0; i < jsonArray.size(); i++) { JSONObject obj = jsonArray.getJSONObject(i); String name = obj.optString("name"); - if (list.contains(name)) { //判断器械包内材料不包含同名称同规格 - throw new RuntimeException("已存在'"+name+"'相同名称的材料!"); - } - list.add(name); JSONObject materialobj = CssdUtils.getGoodsNameAndSp(name); String goodsName = materialobj.optString("materialName"); String specification = materialobj.optString("specification"); Index: ssts-web/src/main/webapp/disinfectsystem/basedatamanager/tousse/tousseForm.js =================================================================== diff -u -r20018 -r20037 --- ssts-web/src/main/webapp/disinfectsystem/basedatamanager/tousse/tousseForm.js (.../tousseForm.js) (revision 20018) +++ ssts-web/src/main/webapp/disinfectsystem/basedatamanager/tousse/tousseForm.js (.../tousseForm.js) (revision 20037) @@ -463,6 +463,20 @@ allowBlank : false, anchor : '97%', listeners : { + beforeselect : function(combo, record, index) { + var rowIndex = top.Ext.getCmp('configGrid').getStore().getCount();//grid的行数 + var configStore = top.Ext.getCmp('configGrid').getStore(); + var id = record.data.id; + var type = record.data.type; + for(var i =0 ;i < rowIndex ; i++ ){ + var electRecord = configStore.getAt(i); + //器械材料和一次性物品可能同ID,所以增加个类型对比 + if (type == electRecord.get('type') && id == electRecord.get('materialDefinitionId')) { + showResult('已包含材料:'+electRecord.get('name')+',不可重复添加!'); + return false; + } + } + }, select : function(combo, record, index) { combo.setValue(record.data.name); record.set("type",record.data.type); @@ -471,6 +485,8 @@ editRecord.data.type = record.data.type; editRecord.data.isImplant = record.data.isImplant; editRecord.data.price = record.data.price; + editRecord.data.materialDefinitionId = record.data.id; + } if(top.Ext.getCmp('tousseType').getValue() == '消毒物品'){ top.Ext.getCmp('price').setValue(recountDisinfectionGoodsPrice()); @@ -550,6 +566,7 @@ var materialDefinitionConfig = Ext.data.Record.create([ {name : 'id'}, + {name : 'materialDefinitionId'}, {name : 'name'}, {name : 'type'}, {name : 'count'}, @@ -2224,6 +2241,7 @@ var mi = tousseDefinitionMaterial; var material = new materialDefinitionConfig({ id : mi.id, + materialDefinitionId : materialDefinition.id, name : materialName, type : '器械', count : mi.count, @@ -2253,6 +2271,7 @@ } var material = new materialDefinitionConfig({ id : tousseDefinitionMaterial.id, + materialDefinitionId : tousseDefinitionMaterial.diposableGoods.id, name : goodsName, type : '一次性物品', count : tousseDefinitionMaterial.amount, @@ -2419,17 +2438,10 @@ var configStore = top.Ext.getCmp('configGrid').getStore(); // 设置序号 setMaterialSequence(); - var list = []; for(var i =0 ;i < rowIndex ; i++ ){ var record = configStore.getAt(i); var id = configStore.getAt(i).data.id; var name = record.get('name'); - if (list.contains(name)) { - showResult('已包含材料:'+name+',不可重复添加!'); - top.Ext.getCmp('saveBtn').enable(); - return false; - } - list.push(name); var count = record.get('count'); var type = record.get('type'); var sequence = record.get('sequence');