Index: ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/action/RecyclingApplicationAction.java =================================================================== diff -u -r20946 -r21159 --- ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/action/RecyclingApplicationAction.java (.../RecyclingApplicationAction.java) (revision 20946) +++ ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/action/RecyclingApplicationAction.java (.../RecyclingApplicationAction.java) (revision 21159) @@ -495,6 +495,7 @@ StrutsResponseUtils.output(true, message); } catch (Exception e) { e.printStackTrace(); + StrutsResponseUtils.output(JSONUtil.buildJsonObject(false, e.getMessage())); } return null; } Index: ssts-web/src/main/webapp/disinfectsystem/routineMonitoring/routineMonitoringView.js =================================================================== diff -u -r20133 -r21159 --- ssts-web/src/main/webapp/disinfectsystem/routineMonitoring/routineMonitoringView.js (.../routineMonitoringView.js) (revision 20133) +++ ssts-web/src/main/webapp/disinfectsystem/routineMonitoring/routineMonitoringView.js (.../routineMonitoringView.js) (revision 21159) @@ -183,6 +183,17 @@ }; } +/** + * 创建监测项的表单元素. + * @param type 表单元素的类型 + * @param id 监测项元素id + * @param name 监测项元素名称 + * @param allowBlank 是否允许为空 + * @param options 单选或者多选的配置项 + * @param value 默认值 + * @param isTriggerItem 触发项 + * @returns + */ function createQualityMonitoringItemElement(type,id,name,allowBlank,options,value,isTriggerItem){ var hideElement = false; if('是' == isTriggerItem && (value == null || value == "")){ @@ -430,6 +441,7 @@ columnWidth : 1, xtype : "fieldset", title: name, + allowBlank: allowBlank, id:'hideElement'+id, layout : 'column', hidden:hideElement, @@ -566,6 +578,11 @@ }] }); } + +/** + * 选择监测项下拉框的某个选项时调用(定期监测不合格是添加的质量监测). + * @param formId + */ function addQualityMonitoringItem(formId){ Ext.Ajax.request({ url : WWWROOT + '/disinfectSystem/formDefinitionAction!loadFormDefinition.do', @@ -634,6 +651,10 @@ } +/** + * 定期监测失败后添加的质量监测. + * qmInstanceId + */ function addQualityMonitoring(qmInstanceId) { var materialDefinitionStore = new Ext.data.Store({ proxy : new Ext.data.HttpProxy({ @@ -1220,7 +1241,8 @@ top.Ext.getCmp('amount2').setVisible(true); top.Ext.getCmp('amount2').getEl().up('.x-form-item').setDisplayed(true); } -/* + +/** * 选择监测项下拉框的某个选项时调用 */ function addRoutineMonitoringItem(formId){ @@ -1336,9 +1358,11 @@ } +/** + * 添加或者修改定期监测实例. + * @param id + */ function addRoutineMonitoring(id) { - - var materialDefinitionStore = new Ext.data.Store({ proxy : new Ext.data.HttpProxy({ url : WWWROOT + '/disinfectSystem/baseData/materialDefinitionAction!getMaterialDefinitionData.do', @@ -1847,15 +1871,6 @@ } top.Ext.getCmp('dateTime').setValue(Ext.util.Format.date(new Date(result.data.dateTime.time),"Y-m-d H:i")); -// top.Ext.getCmp('material').setValue(result.data.material); -// top.Ext.getCmp('amount').setValue(result.data.amount); -// var barcode = result.data.barcode; -// if(barcode != null && barcode != ''){ -// top.Ext.getCmp('tousseName').setValue(result.data.tousseName + "(" + barcode + ")"); -// }else{ -// top.Ext.getCmp('tousseName').setValue(result.data.tousseName); -// } -// top.Ext.getCmp('barcode').setValue(result.data.barcode); loadRoutineMonitoringTousseAndMaterialMsg(result.data.qualityMonitoringGoodsList); top.Ext.getCmp('scope').setValue(result.data.scope); top.Ext.getCmp('createUserName').setValue(result.data.createUserName); @@ -1886,25 +1901,6 @@ }); } } -// if('是'==result.data.isRecycle){ -// top.Ext.getCmp('isRecycle').setValue(result.data.isRecycle); -// top.Ext.getCmp('isRepacking').setValue('否'); -// -// top.Ext.getCmp('recycle').setValue(true); -// top.Ext.getCmp('repacking').setValue(false); -// }else if('是'==result.data.isRepacking){ -// top.Ext.getCmp('isRecycle').setValue('否'); -// top.Ext.getCmp('isRepacking').setValue(result.data.isRepacking); -// -// top.Ext.getCmp('recycle').setValue(false); -// top.Ext.getCmp('repacking').setValue(true); -// }else{ -// top.Ext.getCmp('isRecycle').setValue('否'); -// top.Ext.getCmp('isRepacking').setValue('否'); -// -// top.Ext.getCmp('recycle').setValue(false); -// top.Ext.getCmp('repacking').setValue(false); -// } if('器械包' == result.data.scope){ top.Ext.getCmp("tousseName").setVisible(true); @@ -2144,11 +2140,18 @@ } } - +/** + * 保存质量监测实例(定期监测不合格保存的质量监测). + * @param thiz + * @param materialDefinitionStore + */ function saveQualityMonitoring(thiz,materialDefinitionStore) { - for(var i = 0 ; i<= top.Ext.getCmp('optionAmount2').getValue().split(';').length ; i++){ - var itemId = top.Ext.getCmp('optionAmount2').getValue().split(';')[i]; - if(itemId != null && itemId != ''){ + //监测项元素id集合(用分号分隔) + var optionAmount = top.Ext.getCmp('optionAmount2').getValue(); + if (optionAmount) { + var optionAmountArr = optionAmount.split(';'); + for(var i = 0 ; i < optionAmountArr.length ; i++){ + var itemId = optionAmountArr[i]; if(top.Ext.getCmp('configItemOption'+itemId).getXType() != 'hidden'){ if(!top.Ext.getCmp('configItemOption'+itemId).isValid()){ showResult("请正确填写表单各值。"); @@ -2160,6 +2163,23 @@ return false; } } + + //如果是多选,并且必填,需要单独校验 + var extElement = top.Ext.getCmp('hideElement' + itemId); + if (extElement.getXType() == 'fieldset' && !extElement.allowBlank) { + var checkboxArr = extElement.findByType('checkbox'); + var checked = false; + for (var int = 0; int < checkboxArr.length; int ++) { + if (checkboxArr[int].checked) { + checked = checkboxArr[int].checked; + continue; + } + } + if (!checked) { + showResult("请正确填写表单各值。"); + return false; + } + } } } @@ -2292,11 +2312,18 @@ }); } +/** + * 保存定期监测 + * @param thiz + */ function saveRoutineMonitoring(thiz) { thiz.disable(); - for(var i = 0 ; i<= top.Ext.getCmp('optionAmount').getValue().split(';').length ; i++){ - var itemId = top.Ext.getCmp('optionAmount').getValue().split(';')[i]; - if(itemId != null && itemId != ''){ + //监测项元素id集合(用分号分隔) + var optionAmount = top.Ext.getCmp('optionAmount').getValue(); + if (optionAmount) { + var optionAmountArr = optionAmount.split(';'); + for(var i = 0 ; i < optionAmountArr.length ; i++){ + var itemId = optionAmountArr[i]; if(top.Ext.getCmp('configItemOption'+itemId).getXType() != 'hidden'){ if(!top.Ext.getCmp('configItemOption'+itemId).isValid()){ showResult("请正确填写表单各值。"); @@ -2310,6 +2337,24 @@ return false; } } + + //如果是多选,并且必填,需要单独校验 + var extElement = top.Ext.getCmp('hideElement' + itemId); + if (extElement.getXType() == 'fieldset' && !extElement.allowBlank) { + var checkboxArr = extElement.findByType('checkbox'); + var checked = false; + for (var int = 0; int < checkboxArr.length; int ++) { + if (checkboxArr[int].checked) { + checked = checkboxArr[int].checked; + continue; + } + } + if (!checked) { + showResult("请正确填写表单各值。"); + thiz.enable(); + return false; + } + } } } Index: ssts-web/src/main/webapp/disinfectsystem/qualitymonitoring/qualitymonitoringInstanceForm.js =================================================================== diff -u -r21088 -r21159 --- ssts-web/src/main/webapp/disinfectsystem/qualitymonitoring/qualitymonitoringInstanceForm.js (.../qualitymonitoringInstanceForm.js) (revision 21088) +++ ssts-web/src/main/webapp/disinfectsystem/qualitymonitoring/qualitymonitoringInstanceForm.js (.../qualitymonitoringInstanceForm.js) (revision 21159) @@ -1,5 +1,6 @@ var qualityMonitoringWin = null; var disableShowImageButton = false; +//抽检器械的store var materialDefinitionStore; // 添加抽检器械的材料store var materialDefinitionAddStore; @@ -10,6 +11,7 @@ var qualityMonitoringSterilizationID; var qualityMonitoringWRRecordID = 0; var responPartName = ''; +//监测项的combo var formDefinitionStore; var frequencyStore; var materialCountRecords; @@ -66,6 +68,18 @@ } } } + +/** + * 创建监测项的表单元素. + * @param type 表单元素的类型 + * @param id 监测项元素id + * @param name 监测项元素名称 + * @param allowBlank 是否允许为空 + * @param options 单选或者多选的配置项 + * @param value 默认值 + * @param isTriggerItem 触发项 + * @returns + */ function createQualityMonitoringItemElement(type,id,name,allowBlank,options,value,isTriggerItem){ var hideElement = false; if('是' == isTriggerItem && (value == null || value == "")){ @@ -313,6 +327,7 @@ columnWidth : 1, xtype : "fieldset", title: name, + allowBlank: allowBlank, id:'hideElement'+id, layout : 'column', hidden:hideElement, @@ -321,7 +336,9 @@ }; } } -// 返回炉次显示框 +/** + * 返回炉次显示框 + */ function createQualityMonitoringElementSterName(value){ return { columnWidth : .5, @@ -340,7 +357,11 @@ }] }; } -// 返回炉号显示框 +/** + * 返回炉号显示框 + * @param value + * @returns + */ function createQualityMonitoringElementSterFre(value){ return { columnWidth : .5, @@ -496,6 +517,12 @@ hideExtractCheckMaterial(); Ext.getCmp('addQualityMonitoringForm').doLayout(); } + +/** + * 构建监测项的fieldset. + * @param formId 监测项id + * @param configName 监测项名称 + */ function addQualityMonitoringItem(formId,configName){ // 质量监测添加‘无’这个项. if(configName == '无'){ @@ -776,6 +803,13 @@ Ext.getCmp('recycle').enable(); Ext.getCmp('repacking').enable(); } + +/** + * 根据器械包条码以及监测项获取器械包名字以及监测环节的责任人. + * @param tempBarcode 器械包条码 + * @param qmDefinitionId 监测项id + * @param materialDefinitionStore 抽检器械的store + */ function getTousseInstanceNameAndResponsiblePerson(tempBarcode, qmDefinitionId, materialDefinitionStore){ if(tempBarcode){ Ext.Ajax.request({ @@ -1121,20 +1155,6 @@ hideTrigger : true, typeAhead : false, anchor : '95%' -// listeners : { -// select : function(combo, record, index) { -// combo.setValue(record.data.name); -// Ext.getCmp('tousseDefinitionId').setValue(record.data.id); -// //加载责任人 -// }, -// blur : function(field){ -// if(!Ext.getCmp('tousseName').getRawValue()){ -// Ext.getCmp('tousseDefinitionId').setValue(''); -// } -// //重新加载包内的材料 -// materialDefinitionStore.reload(); -// } -// } }] }; var items5 = new Array(); @@ -1241,59 +1261,14 @@ TousseInstanceTableManager.getTousseInstanceMsgByBarcode(barcode,function(responseText){ result = Ext.decode(responseText); if(result.success){ -// if(tempBarcode != null && tempBarcode != ''){ -// Ext.getCmp('tousseName').setValue(result.tousseName + "(" + tempBarcode + ")"); -// }else{ -// Ext.getCmp('tousseName').setValue(result.tousseName); -// } -// Ext.getCmp('barcode').setValue(tempBarcode); -// Ext.getCmp('tousseInstanceId').setValue(result.tousseInstanceId); -// Ext.getCmp('tousseType').setValue(result.tousseType); -// Ext.getCmp('tousseDefRecycling').setValue(result.isRecycle); -// Ext.getCmp('responsiblePerson').setValue(result.responsiblePerson); -// updateControlStatus(); + }else{ result = null; showResultQM("找不到该条码所对应的器械包实例"); } }); DWREngine.setAsync(true); return result; -// Ext.Ajax.request({ -// url : WWWROOT + '/disinfectSystem/qualityMonitoringDefinitionAction!getTousseInstanceNameAndResponsiblePerson.do', -// params : {barcode : barcode,qmDefinitionId : qmDefinitionId}, -// success : function(response,options){ -// var result = Ext.decode(response.responseText); -// if(result.success){ -// if(tempBarcode != null && tempBarcode != ''){ -// Ext.getCmp('tousseName').setValue(result.tousseName + "(" + tempBarcode + ")"); -// }else{ -// Ext.getCmp('tousseName').setValue(result.tousseName); -// } -// Ext.getCmp('barcode').setValue(tempBarcode); -// Ext.getCmp('tousseInstanceId').setValue(result.tousseInstanceId); -// Ext.getCmp('tousseType').setValue(result.tousseType); -// Ext.getCmp('tousseDefRecycling').setValue(result.isRecycle); -// Ext.getCmp('responsiblePerson').setValue(result.responsiblePerson); -// updateControlStatus(); -// return result; -// }else{ -// if(result.message){ -// showResultQM(result.message); -// }else{ -// showResultQM("找不到该条码所对应的器械包实例"); -// } -// } -// }, -// failure : function(response, options) { -// var result = Ext.decode(response.responseText); -// if(result.message){ -// showResultQM(result.message); -// }else{ -// showResultQM('系统加载出错,请稍候再试'); -// } -// } -// }); } return null; } @@ -1302,17 +1277,14 @@ function addQualityMonitoringByResponPart(responPartName) { addQualityMonitoring(); Ext.getCmp('responsibilityPart').setValue(responPartName); -// if(sstsConfig.hasOwnProperty('responsibilityPartNotLimitInspect') && sstsConfig.responsibilityPartNotLimitInspect){ -// formDefinitionStore.baseParams.responsiblePerson = responPartName; -// formDefinitionStore.baseParams.isNotLimitInspect = "是"; -// formDefinitionStore.load(); -// }else{ otherPartAddQM = true; formDefinitionStore.baseParams.responsiblePerson = responPartName; formDefinitionStore.load(); -// } } -// 责任环节带出监测项的配置 + +/** + * 责任环节的combo. + */ function getResponsibilityPartContent(id){ return { layout : 'form', @@ -1376,6 +1348,12 @@ }] }; } + +/** + * 获取监测项的combo. + * @param id + * @returns + */ function getInspectItemContent(id){ return { layout : 'form', @@ -1482,24 +1460,12 @@ } Ext.getCmp('responsibilityPart').setValue(result.data.responsibilityPart); Ext.getCmp('dateTime').setValue(Ext.util.Format.date(new Date(result.data.dateTime.time),"Y-m-d H:i")); -// Ext.getCmp('material').setValue(result.data.material); -// Ext.getCmp('amount').setValue(result.data.amount); -// Ext.getCmp('barcode').setValue(result.data.barcode); -// var barcode = result.data.barcode; -// if(barcode != null && barcode != ''){ -// Ext.getCmp('tousseName').setValue(result.data.tousseName + "(" + barcode + ")"); -// }else{ -// Ext.getCmp('tousseName').setValue(result.data.tousseName); -// } + Ext.getCmp('scope').setValue(result.data.scope); Ext.getCmp('responsiblePerson').setValue(result.data.responsiblePerson); Ext.getCmp('createUserName').setValue(result.data.createUserName); Ext.getCmp('tousseDefinitionId').setValue(result.data.tousseDefinitionId); -// if(result.data.positionMsg != null && result.data.positionMsg != ''){ -// Ext.getCmp('positionC').show(); -// Ext.getCmp('basketBarcodeC').show(); -// Ext.getCmp('position').setValue(result.data.positionMsg); -// } + qualityMonitoringWRRecordID = result.data.washAndDisinfectRecordId; qualityMonitoringSterilizationID = result.data.sterilizationRecordId; if('是'==result.data.isAllTousseOfSterile){ @@ -1516,9 +1482,7 @@ } materialDefinitionStore.baseParams['spell'] = ""; materialDefinitionStore.reload(); -// if(result.data.tousseInstance != null){ -// Ext.getCmp('tousseInstanceId').setValue(result.data.tousseInstance.id); -// } + if("材料" == result.data.scope){ hideFirstTousse(); showFirstMaterial(); @@ -1529,13 +1493,9 @@ Ext.getCmp('addExtractCheckTousse').setVisible(false); loadMaterialMsg(result.data.qualityMonitoringGoodsList); }else if("器械包" == result.data.scope){ -// Ext.getCmp('materialId').setVisible(false); -// Ext.getCmp('material').getEl().up('.x-form-item').setDisplayed(false); hideFirstMaterial(); showFirstTousse(); -// Ext.getCmp('addExtractCheckTousse').setVisible(true); loadTousseMsg(result.data.qualityMonitoringGoodsList); - //cccbbb }else if("材料和器械包" == result.data.scope){ showFirstTousse(); showFirstMaterial(); @@ -1699,9 +1659,12 @@ * @returns {Boolean} */ function saveQualityMonitoring(thiz,materialDefinitionStore,saveAndCreate) { - for(var i = 0 ; i<= Ext.getCmp('optionAmount').getValue().split(';').length ; i++){ - var itemId = Ext.getCmp('optionAmount').getValue().split(';')[i]; - if(itemId != null && itemId != ''){ + //监测项元素id集合(用分号分隔) + var optionAmount = Ext.getCmp('optionAmount').getValue(); + if (optionAmount) { + var optionAmountArr = optionAmount.split(';'); + for(var i = 0 ; i < optionAmountArr.length ; i++){ + var itemId = optionAmountArr[i]; if(Ext.getCmp('configItemOption'+itemId).getXType() != 'hidden'){ if(!Ext.getCmp('configItemOption'+itemId).isValid()){ showResultQM("请正确填写表单各值。"); @@ -1713,6 +1676,23 @@ return false; } } + + //如果是多选,并且必填,需要单独校验 + var extElement = Ext.getCmp('hideElement' + itemId); + if (extElement.getXType() == 'fieldset' && !extElement.allowBlank) { + var checkboxArr = extElement.findByType('checkbox'); + var checked = false; + for (var int = 0; int < checkboxArr.length; int ++) { + if (checkboxArr[int].checked) { + checked = checkboxArr[int].checked; + continue; + } + } + if (!checked) { + showResultQM("请正确填写表单各值。"); + return false; + } + } } } //是否选择监测项 @@ -1807,9 +1787,7 @@ showResultQM("请扫描篮筐条码!"); return false; } -// submitForm2(materialInfo,saveAndCreate); checkIsTousseInstanceRepackingAndSubmitForm(thiz,materialInfo,saveAndCreate); -// checkIsUniqueWithBarcodeAndInspectItemAndSubmitForm(thiz,Ext.getCmp('id').getValue(),barcode,Ext.getCmp('formDefinitionId').getValue(),materialInfo,saveAndCreate); } function loadResponPersonByBarcode(barcode){ @@ -2109,20 +2087,7 @@ },[ {name : 'value'}, ] - ), - listeners:{ - load:function(store,records) { -// if(records.length>0) { -// Ext.getCmp('formName').setValue(records[0].data.name); -// addQualityMonitoringItem(records[0].data.id,records[0].data.name); -// Ext.getCmp("formDefinitionId").setValue(records[0].data.id); -// Ext.getCmp("name").setValue(records[0].data.name); -// }else{ -// // 没有找到监测项 -// Ext.getCmp('formName').setValue(''); -// } - } - } + ) }); } @@ -2195,7 +2160,7 @@ xtype : 'hidden', name : 'name', id : 'name' - },{ + },{ //监测项元素id集合(用分号分隔) xtype : 'hidden', name : 'optionAmount', id : 'optionAmount' Index: ssts-qualitymon/src/main/java/com/forgon/disinfectsystem/qualitymonitoring/definition/action/QualityMonitoringDefinitionAction.java =================================================================== diff -u -r16968 -r21159 --- ssts-qualitymon/src/main/java/com/forgon/disinfectsystem/qualitymonitoring/definition/action/QualityMonitoringDefinitionAction.java (.../QualityMonitoringDefinitionAction.java) (revision 16968) +++ ssts-qualitymon/src/main/java/com/forgon/disinfectsystem/qualitymonitoring/definition/action/QualityMonitoringDefinitionAction.java (.../QualityMonitoringDefinitionAction.java) (revision 21159) @@ -227,9 +227,8 @@ .getQualityMonitoringDefinitionById(qmDefinitionId); String responsiblePerson = ""; if (qualityMonitoringConfig != null) { - String responsibilityPart = qualityMonitoringConfig - .getResponsibilityPart(); - // 责任人的抓取取决于配置项的配置,如果是装配管理,则拿取装配员,如果是审核打包则拿审核人,如果是灭菌管理则拿灭菌员 + String responsibilityPart = qualityMonitoringConfig.getResponsibilityPart(); + // 责任人取决于“责任环节”,如果是装配管理,则拿取装配员,如果是审核打包则拿审核人,如果是灭菌管理则拿灭菌员 if (StringUtils.isNotBlank(responsibilityPart)) { // 装配管理 if (responsibilityPart