Index: ssts-web/src/main/webapp/disinfectsystem/deviceMaintenance/deviceMaintenanceCostomInsForm.js =================================================================== diff -u -r24816 -r25022 --- ssts-web/src/main/webapp/disinfectsystem/deviceMaintenance/deviceMaintenanceCostomInsForm.js (.../deviceMaintenanceCostomInsForm.js) (revision 24816) +++ ssts-web/src/main/webapp/disinfectsystem/deviceMaintenance/deviceMaintenanceCostomInsForm.js (.../deviceMaintenanceCostomInsForm.js) (revision 25022) @@ -10,22 +10,85 @@ formInstanceWin.close(); } +//触 +function triggerItemAction(valueTriggerItemIds,action){ + if(valueTriggerItemIds != null && valueTriggerItemIds != ""){ + var itemIdArray = valueTriggerItemIds.split(","); + if(itemIdArray.length > 0){ + for(var n = 0 ; n < itemIdArray.length ; n++){ + var triggerItemId = itemIdArray[n]; + if(triggerItemId != null && triggerItemId != ""){ + if("show" == action){ + top.Ext.getCmp("hideElement" + triggerItemId).show(); + }else{ + var xtype = top.Ext.getCmp("hideElement" + triggerItemId).getXType(); + if(xtype == 'fieldset'){ + var length = top.Ext.getCmp("hideElement" + triggerItemId).items.each(function(fsItem){ + var itemType = fsItem.getXType(); + if(itemType == "panel"){ + fsItem.items.each(function(item,index,length){ + item.setValue(false); + }); + }else if(itemType == "hidden"){ + fsItem.setValue(""); + } + }); + }else if(xtype == 'panel'){ + var panel = top.Ext.getCmp("hideElement" + triggerItemId); + panel.items.each(function(item,index,length){ + item.setValue(""); + }); + } + top.Ext.getCmp("hideElement" + triggerItemId).hide(); + } + } + } + } + } +} + /** + * 如果所选项目名称与所选监测项下的某个监测细则的名称相同,则将对应的fieldset展开(通常是多选类型的监测试细则) + * @param projectName 项目名称 + */ +function expandItemFieldsetByProjectName(projectName){ + //如果所选项目名称与所选监测项下的某个监测细则的名称相同,则将对应的fieldset展开(通常是多选类型的监测试细则) + if(loadedFormDefinitionItems.length > 0){ + for(var i = 0;i < loadedFormDefinitionItems.length;i++){ + if(loadedFormDefinitionItems[i]["name"] == projectName){ + var extObj = top.Ext.getCmp("hideElement" + loadedFormDefinitionItems[i]["id"]); + if(extObj != null){ + extObj.expand(true); + return; + } + } + } + } +} + +/** * 创建表单元素. * @param type 表单元素类型 * @param id 表单元素id * @param name 表单元素名称 * @param allowBlank 是否允许为空 * @param options “单选”或者“多选”的选项值 * @param value 表单元素的值 + * @param isTriggerItem 触发项 * @returns */ -function createFormDefinitionItemElement(type,id,name,allowBlank,options,value){ +function createFormDefinitionItemElement(type,id,name,allowBlank,options,value,isTriggerItem){ + var hideElement = false; + if('是' == isTriggerItem && (value == null || value == "")){ + hideElement = true; + } if(type == '文本'){ return { columnWidth : .5, layout : 'form', labelWidth : 90, + hidden:hideElement, + id:'hideElement'+id, style:'margin-top:10px', items : [{ xtype : 'textfield', @@ -43,6 +106,8 @@ columnWidth : 1, layout : 'form', labelWidth : 90, + hidden:hideElement, + id:'hideElement'+id, style:'margin-top:10px', items : [{ xtype : 'textarea', @@ -62,6 +127,8 @@ columnWidth : .5, layout : 'form', labelWidth : 90, + hidden:hideElement, + id:'hideElement'+id, style:'margin-top:10px', items : [{ xtype : 'numberfield', @@ -80,6 +147,8 @@ layout : 'form', style:'margin-top:10px', labelWidth : 90, + hidden:hideElement, + id:'hideElement'+id, items : [{ xtype : 'datefieldWithMin', fieldLabel : name, @@ -101,6 +170,8 @@ columnWidth : .5, layout : 'form', labelWidth : 90, + hidden:hideElement, + id:'hideElement'+id, style:'margin-top:10px', items : [{ xtype : 'textfield', @@ -120,6 +191,8 @@ columnWidth : .5, layout : 'form', labelWidth : 90, + hidden:hideElement, + id:'hideElement'+id, style:'margin-top:10px', items : [{ xtype : 'datefieldWithMin', @@ -136,20 +209,32 @@ }; }else if(type == '单选'){ var optionsArrays = new Array(); + var hideTriggerItemIdsValue = ""; if(options != ""){ var optionsJson = JSON.parse(options); for(var j = 0 ; j < optionsJson.length ; j++){ var optionsArray = new Array(); optionsArray.push(optionsJson[j].name); + optionsArray.push(optionsJson[j].valueTriggerItemIds); optionsArrays.push(optionsArray); + if(value == optionsJson[j].name){ + hideTriggerItemIdsValue = optionsJson[j].valueTriggerItemIds; + } } } return { columnWidth : .5, layout : 'form', labelWidth : 90, style:'margin-top:10px', + hidden:hideElement, + id:'hideElement'+id, items : [{ + xtype:'hidden', + id:'triggerItemIds' + id, + name:'triggerItemIds' + id, + value : hideTriggerItemIdsValue + },{ xtype : 'combo', fieldLabel : name, id : 'configItemOption'+id, @@ -158,15 +243,24 @@ displayField : 'value', allowBlank : allowBlank, editable : false, - store : new Ext.data.SimpleStore({ - fields : [ 'value' ], + store : new top.Ext.data.SimpleStore({ + fields : [ 'value', 'valueTriggerItemIds' ], data : optionsArrays }), forceSelection : true, value : value, mode : 'local', triggerAction : 'all', - anchor : '100%' + anchor : '100%', + listeners:{ + select : function(combo, record, index) { + var valueTriggerItemIds = record.get("valueTriggerItemIds"); + var oldTriggerItemIds = top.Ext.getCmp("triggerItemIds" + id).getValue(); + triggerItemAction(oldTriggerItemIds,"hide"); + triggerItemAction(valueTriggerItemIds,"show"); + top.Ext.getCmp("triggerItemIds" + id).setValue(valueTriggerItemIds); + } + } }] }; }else if(type == '多选'){ @@ -207,15 +301,24 @@ if(elementObj != undefined && elementObj != null){ var oldElementValue = elementObj.getValue(); + var checkedValue = JSON.parse(thiz.getRawValue()); if(checked){ if(oldElementValue.indexOf(thiz.getRawValue()) == -1){ oldElementValue += ","; oldElementValue += thiz.getRawValue() elementObj.setValue(oldElementValue); } + if(checkedValue != null){ + var valueTriggerItemIds = checkedValue.valueTriggerItemIds; + triggerItemAction(valueTriggerItemIds,"show"); + } }else{ var newValue = oldElementValue.replace("," + thiz.getRawValue(),''); elementObj.setValue(newValue); + if(checkedValue != null){ + var valueTriggerItemIds = checkedValue.valueTriggerItemIds; + triggerItemAction(valueTriggerItemIds,"hide"); + } } } } @@ -228,7 +331,9 @@ columnWidth : 1, xtype : "fieldset", title: name, - id : 'fieldset' + name, + //id : 'fieldset' + name, + allowBlank: allowBlank, + id:'hideElement'+id, layout : 'column', autoHeight : true, collapsible: true, @@ -262,11 +367,14 @@ }); } +//已加载的监测项 +var loadedFormDefinitionItems = []; /** * 根据id获取表单定义. * @param formId 表单定义id */ function addFormDefinitionItem(formId){ + loadedFormDefinitionItemObj = []; Ext.Ajax.request({ url : WWWROOT + '/disinfectSystem/formDefinitionAction!loadFormDefinition.do', params : {id : formId}, @@ -283,8 +391,9 @@ itemIds += ";"; } itemIds += formDefinitionItem.id; - - items.push(createFormDefinitionItemElement(formDefinitionItem.type,formDefinitionItem.id,formDefinitionItem.name,allowBlank,formDefinitionItem.optionsJson,null)); + var loadedFormDefinitionItemObj = {id:formDefinitionItem.id , name:formDefinitionItem.name}; + loadedFormDefinitionItems.push({id:formDefinitionItem.id , name:formDefinitionItem.name}); + items.push(createFormDefinitionItemElement(formDefinitionItem.type,formDefinitionItem.id,formDefinitionItem.name,allowBlank,formDefinitionItem.optionsJson,null,formDefinitionItem.isTriggerItem)); if(formDefinitionItem.type == '多选'){ items.push({ columnWidth : 1, @@ -313,6 +422,7 @@ if(top.Ext.getCmp('itemsFieldSet')){ top.Ext.getCmp('itemsFieldSet').doLayout(); } + expandItemFieldsetByProjectName(top.Ext.getCmp("projectName").getValue()); } }, failure : function(response, options) { @@ -437,11 +547,7 @@ allowBlank : false, listeners : { select : function (combo){ - //如果所选项目名称与fieldset的name相同,则将fieldset展开 - var extObj = top.Ext.getCmp("fieldset" + combo.getValue()); - if(extObj != null){ - extObj.expand(true); - } + expandItemFieldsetByProjectName(combo.getValue()); } } }] @@ -548,6 +654,7 @@ top.Ext.getCmp("formDefinitionId").setValue(result.data.formDefinition.id); top.Ext.getCmp("formName").setValue(result.data.formDefinition.formName); top.Ext.getCmp("projectName").setValue(result.data.projectName); + expandItemFieldsetByProjectName(top.Ext.getCmp("projectName").getValue()); top.Ext.getCmp('maintenanceTime').setValue(top.Ext.util.Format.date(new Date(result.data.maintenanceTime.time),"Y-m-d H:i:s")); top.Ext.getCmp("createUserName").setValue(result.data.createUserName); top.Ext.getCmp("createDate").setValue(Ext.util.Format.date(new Date(result.data.createDate.time), 'Y-m-d H:i')); @@ -563,7 +670,7 @@ itemIds += item.id; var allowBlank = item.requirement == '必填'?false:true; - items.push(createFormDefinitionItemElement(item.type,item.id,item.name,allowBlank,item.optionsJson,result.data.items[i].showAnswer)); + items.push(createFormDefinitionItemElement(item.type,item.id,item.name,allowBlank,item.optionsJson,item.showAnswer,item.isTriggerItem)); if(item.type == '多选'){ items.push({ columnWidth : 1, Index: ssts-web/src/main/webapp/disinfectsystem/deviceMaintenance/deviceMaintenanceCostomDefView.js =================================================================== diff -u -r18491 -r25022 --- ssts-web/src/main/webapp/disinfectsystem/deviceMaintenance/deviceMaintenanceCostomDefView.js (.../deviceMaintenanceCostomDefView.js) (revision 18491) +++ ssts-web/src/main/webapp/disinfectsystem/deviceMaintenance/deviceMaintenanceCostomDefView.js (.../deviceMaintenanceCostomDefView.js) (revision 25022) @@ -188,7 +188,8 @@ var goodsRecord = Ext.data.Record.create([ {name : 'id'}, {name : 'name'}, - {name : 'orderNumber'} + {name : 'orderNumber'}, + {name : 'valueTriggerItemNames'} ]); var optionStore = new Ext.data.Store({ @@ -200,6 +201,8 @@ name : 'name' },{ name : 'orderNumber' + },{ + name : 'valueTriggerItemNames' }] }) }); @@ -210,7 +213,8 @@ var record = new goodsRecord({ id : optionsJson[i].id, name : optionsJson[i].name, - orderNumber : optionsJson[i].orderNumber + orderNumber : optionsJson[i].orderNumber, + valueTriggerItemNames : optionsJson[i].valueTriggerItemNames }); optionStore.add(record); } @@ -227,9 +231,14 @@ width:240, dataIndex : 'name' },{ + id : 'valueTriggerItemNames', + header : "触发项", + width:180, + dataIndex : 'valueTriggerItemNames' + },{ id : 'orderNumber', header : "操作", - width:240, + width:60, renderer : optionsMoveUpDown, dataIndex : 'orderNumber' },{ @@ -257,7 +266,8 @@ var record = new goodsRecord({ id : 0, name : goodsName, - orderNumber : 0 + orderNumber : 0, + valueTriggerItemNames : '' }); optionStore.add(record); top.Ext.getCmp('optionName').setValue(''); @@ -326,7 +336,14 @@ anchor : '100%', selModel : new top.Ext.grid.RowSelectionModel({ singleSelect : false - }) + }), + listeners : { + cellclick:function(thiz,rowIndex,columnIndex,e){ + if(columnIndex == 2){ + triggerItemWin(rowIndex); + } + } + } }) ] }] @@ -342,7 +359,8 @@ optionJsonArray.push({ id : record.get("id"), name : record.get("name"), - orderNumber : (i+1) + orderNumber : (i+1), + valueTriggerItemNames:record.get("valueTriggerItemNames") }); if(optionsStr != ""){ optionsStr += ", "; @@ -780,6 +798,110 @@ return v; } +//-------------设置触发项---------------- +function triggerItemWin(rowIndex){ + + var triggerItemStore = new Ext.data.Store({ + proxy : new Ext.data.MemoryProxy([]), + reader : new Ext.data.JsonReader({ + fields : [ + {name : 'name'} + ] + }) + }); + + var elementRecord = Ext.data.Record.create([ + {name : 'name'} + ]); + + var elementStore = top.Ext.getCmp("formDefinitionItemConfigPanel").getStore(); + for(var i = 0 ; i < elementStore.getCount() ; i++){ + var record = elementStore.getAt(i); + var newRecord = new elementRecord({ + name : record.get('name') + }); + triggerItemStore.add(newRecord); + } + + var selectModel = new top.Ext.grid.CheckboxSelectionModel({handleMouseDown:Ext.emptyFn}); + var cm = new top.Ext.grid.ColumnModel([selectModel,{ + header : "名称", + width:240, + dataIndex : 'name' + }]); + + var formObj2 = new top.Ext.FormPanel({ + frame : true, + labelAlign:'right', + labelSeparator : ':', + bodyStyle : 'padding:5px 5px 0px 5px', + autoWidth : true, + autoHeight : true, + autoScroll : true, + items:[{ + layout : 'column', + items : [{ + columnWidth : 1, + layout: 'form', + items : [ + new top.Ext.grid.GridPanel({ + id:'triggerItemPanel', + store : triggerItemStore, + cm : cm, + sm : selectModel, + width : 240, + height: 240, + frame : false, + viewConfig: { + forceFit:true + }, + bodyStyle : 'border:1px solid #afd7af', + anchor : '100%', + selModel : new top.Ext.grid.RowSelectionModel({ + singleSelect : false + }) + }) + ] + }] + }], + buttons : [{ + text : '确定', + handler : function(){ + var optionsStr = ""; + var records = top.Ext.getCmp("triggerItemPanel").getSelectionModel().getSelections(); + for ( var i = 0, len = records.length; i < len; i++) { + if (optionsStr != "") { + optionsStr += ","; + } + optionsStr += records[i].data['name']; + } + var store = top.Ext.getCmp('itemOptionsGrid').getStore(); + var record = store.getAt(rowIndex); + record.set("valueTriggerItemNames",optionsStr) + top.Ext.getCmp("triggerItemWindow").close(); + } + },{ + text : '取消', + handler : function() { + top.Ext.getCmp("triggerItemWindow").close(); + } + }] + }); + + var triggerItemWindow = new top.Ext.Window( { + id : 'triggerItemWindow', + layout : 'fit', + title : '参数触发项选择', + width : 500, + modal : true, + autoHeight : true, + border : false, + plain : true, + items : [formObj2] + }); + triggerItemWindow.show(); +} + Ext.onReady(function() { Ext.QuickTips.init();