Index: ssts-web/src/main/webapp/disinfectsystem/equipmentInspection/formdefinitionView.jsp =================================================================== diff -u --- ssts-web/src/main/webapp/disinfectsystem/equipmentInspection/formdefinitionView.jsp (revision 0) +++ ssts-web/src/main/webapp/disinfectsystem/equipmentInspection/formdefinitionView.jsp (revision 38048) @@ -0,0 +1,38 @@ +<%@page import="com.forgon.disinfectsystem.entity.customform.formdefinition.FormDefinitionItem"%> +<%@ page contentType="text/html; charset=UTF-8"%> +<%@ include file="/common/taglibs.jsp"%> + + + + +设备巡检定义 + + +<%@ include file="/common/includeExtJsAndCss.jsp"%> +<%@ include file="/common/includeExtJs4_2.jsp"%> + + + + + + + + + + + + + +
+
+ +
+ + \ No newline at end of file Index: ssts-web/src/main/webapp/disinfectsystem/equipmentInspection/forminstanceView.js =================================================================== diff -u --- ssts-web/src/main/webapp/disinfectsystem/equipmentInspection/forminstanceView.js (revision 0) +++ ssts-web/src/main/webapp/disinfectsystem/equipmentInspection/forminstanceView.js (revision 38048) @@ -0,0 +1,148 @@ +var entityName = "设备巡检记录"; +var grid; +function modify(v, data) { + addFormInstanceWin(data['id']); +} +// 删除 +function deleteFormInstance(grid) { + + var records = grid.getSelectionModel().getSelections(); + + if (records.length == 0) { + showResult("请选择要删除的记录!"); + return false; + } + var ids = null; + for (var i = 0, len = records.length; i < len; i++) { + if (ids == null) { + ids = records[i].data['id']; + } else { + ids = ids + ';' + records[i].data['id']; + } + } + Ext.MessageBox.confirm("请确认", "是否确定要删除选中的信息吗?", + function (button, text) { + if ("yes" == button) { + Ext.Ajax.request({ + url: WWWROOT + '/disinfectSystem/equipmentInspectionInstanceAction!deleteEquipmentInspectionInstance.do', + params: { ids: ids }, + success: function (response, options) { + var result = Ext.decode(response.responseText); + var success = result.success; + if (true != success) { + showResult(result.message); + return; + } else { + showResult('删除成功!'); + grid.dwrReload(); + } + }, + failure: function (response, options) { + var result = Ext.decode(response.responseText); + alert(result.cause); + } + }); + } + }); + +} + +Ext.onReady(function () { + Ext.QuickTips.init(); + // 记录cookie(3步) + + var columns = [ + { header: "名称", width: 250, dataIndex: 'formDefinition.formName', renderer: modifyRecord }, + { header: "设备名称", width: 250, dataIndex: 'equipmentName' }, + { header: "登记时间", width: 160, dataIndex: 'createDate', renderer: myDateFormatByMinute }, + { header: "登记人", width: 120, dataIndex: 'createUserName' }, + { id: 'remark', header: "备注", width: 120, dataIndex: 'remark' } + ]; + + var filters = new Ext.grid.GridFilters({ + filters: [ + { type: 'string', dataIndex: 'name' }, + { type: 'string', dataIndex: 'equipmentName' }, + { type: 'string', dataIndex: 'remark' } + ] + }); + + var readerDetail = [ + { name: 'id' }, + { name: 'name' }, + { name: 'equipmentName' }, + { name: 'createDate' }, + { name: 'createUserName' }, + { name: 'formDefinition.formName' }, + { name: 'equipmentID' }, + { name: 'equipmentType' }, + { name: 'status' }, + { name: 'remark' } + ]; + + var record = Ext.data.Record.create([ + { name: 'name', type: 'string' } + ]); + + var store = new Ext.data.Store({ + proxy: new Ext.data.HttpProxy({ + url: '/disinfectSystem/formDefinitionAction!loadLastDeployFormDefinitionGroupByFormName.do', + method: 'POST' + }), + reader: new Ext.data.JsonReader({ + root: 'data' + }, [{ name: 'name' }]), + listeners: { + load: function (thiz, records, options) { + if (records && records.length > 0) { + store.insert(0, new record({ 'name': '全部' })); + } + } + } + }) + + var tbar = [{ + text: '添加', + iconCls: 'btn_ext_application_add', + handler: function () { + addFormInstanceWin(""); + } + }, '-', { + text: '删除', + iconCls: 'btn_ext_application_del', + handler: function () { + deleteFormInstance(grid); + } + }]; + var dwrCallParams = null; + + grid = new Ext.ux.ForgonPageGrid({ + tbar: tbar, + pageSize: 20, + defaultSortField: 'createDate', + defaultSortDirection: 'DESC', + title: entityName + '列表', + isCheckboxSelectionModel: true, + rememberSelected: false, + isShowSearchField: true, + columns: columns, + plugins: filters, + autoExpandColumn: 'remark', + renderTo: 'gridDiv', + frame: false + }, readerDetail, + EquipmentInspectionInstanceTableManager.findEquipmentInspectionInstanceList, + dwrCallParams // 这个参数只是占位作用 + ); + + var viewport = new Ext.Viewport({ + layout: 'border', + items: [{ + region: 'center', + margins: '0 0 0 0', + layout: 'fit', + items: grid + }] + }); + +}); \ No newline at end of file Index: ssts-web/src/main/webapp/disinfectsystem/equipmentInspection/forminstanceCommon.js =================================================================== diff -u --- ssts-web/src/main/webapp/disinfectsystem/equipmentInspection/forminstanceCommon.js (revision 0) +++ ssts-web/src/main/webapp/disinfectsystem/equipmentInspection/forminstanceCommon.js (revision 38048) @@ -0,0 +1,563 @@ +/** + * 创建表单元素. + * @param type 表单元素类型 + * @param id 表单元素id + * @param name 表单元素名称 + * @param allowBlank 是否允许为空 + * @param options “单选”或者“多选”的选项值 + * @param value 表单元素的值 + * @param isTriggerItem 触发项 + * @returns + */ +function createFormDefinitionItemElement(type, id, name, allowBlank, options, value, isTriggerItem) { + var hideElement = false; + var resultValue = (value == null || value == "") ? '' : value; + if (type == '文本') { + return { + columnWidth: .5, + layout: 'form', + labelWidth: 120, + hidden: hideElement, + id: 'hideElement' + id, + style: 'margin-top:10px', + items: [{ + xtype: 'textfield', + fieldLabel: name, + maxLength: '30', + id: 'configItemOption' + id, + name: 'configItemOption' + id, + allowBlank: allowBlank, + value: resultValue, + width: '95%' + }], + listeners: { + render: function () { + if ('是' == isTriggerItem && resultValue == '') { + setTimeout(function () { + top.Ext.getCmp('hideElement' + id).hide(); + }, 1); + } + } + } + }; + } else if (type == '文本框') { + return { + columnWidth: 1, + layout: 'form', + labelWidth: 120, + hidden: hideElement, + id: 'hideElement' + id, + style: 'margin-top:10px', + items: [{ + xtype: 'textarea', + fieldLabel: name, + maxLength: '300', + height: 45, + id: 'configItemOption' + id, + name: 'configItemOption' + id, + allowBlank: allowBlank, + value: resultValue, + anchor: '95%' + }], + listeners: { + render: function () { + if ('是' == isTriggerItem && resultValue == '') { + setTimeout(function () { + top.Ext.getCmp('hideElement' + id).hide(); + }, 1); + } + } + } + }; + + } else if (type == '数字') { + return { + columnWidth: .5, + layout: 'form', + labelWidth: 120, + hidden: hideElement, + id: 'hideElement' + id, + style: 'margin-top:10px', + items: [{ + xtype: 'numberfield', + fieldLabel: name, + id: 'configItemOption' + id, + name: 'configItemOption' + id, + allowBlank: allowBlank, + allowDecimals: true, + value: resultValue, + anchor: '95%' + }], + listeners: { + render: function () { + if ('是' == isTriggerItem && resultValue == '') { + setTimeout(function () { + top.Ext.getCmp('hideElement' + id).hide(); + }, 1); + } + } + } + }; + } else if (type == '时间') { + return { + columnWidth: .5, + layout: 'form', + style: 'margin-top:10px', + labelWidth: 120, + hidden: hideElement, + id: 'hideElement' + id, + items: [{ + xtype: 'datefieldWithMin', + fieldLabel: name, + id: 'configItemOption' + id, + name: 'configItemOption' + id, + format: 'Y-m-d H:i', + value: resultValue, + readOnly: true, + editable: false, + allowBlank: allowBlank, + anchor: '95%' + }], + listeners: { + render: function () { + if ('是' == isTriggerItem && resultValue == '') { + setTimeout(function () { + top.Ext.getCmp('hideElement' + id).hide(); + }, 1); + } + } + } + }; + } else if (type == '时间段') { + return { + columnWidth: .5, + layout: 'form', + labelWidth: 120, + hidden: hideElement, + id: 'hideElement' + id, + style: 'margin-top:10px', + items: [{ + xtype: 'textfield', + fieldLabel: name, + maxLength: '16', + id: 'configItemOption' + id, + name: 'configItemOption' + id, + regex: /^\d*:\d\d$/, + regexText: '请按照"小时:分钟"的格式填写', + allowBlank: allowBlank, + value: (resultValue == '') ? '00:00' : resultValue, + anchor: '95%' + }], + listeners: { + render: function () { + if ('是' == isTriggerItem && resultValue == '') { + setTimeout(function () { + top.Ext.getCmp('hideElement' + id).hide(); + }, 1); + } + } + } + }; + } else if (type == '日期') { + return { + columnWidth: .5, + layout: 'form', + labelWidth: 120, + hidden: hideElement, + id: 'hideElement' + id, + style: 'margin-top:10px', + items: [{ + xtype: 'datefieldWithMin', + fieldLabel: name, + id: 'configItemOption' + id, + name: 'configItemOption' + id, + format: 'Y-m-d', + value: resultValue, + readOnly: true, + editable: false, + allowBlank: allowBlank, + anchor: '95%' + }], + listeners: { + render: function () { + if ('是' == isTriggerItem && resultValue == '') { + setTimeout(function () { + top.Ext.getCmp('hideElement' + id).hide(); + }, 1); + } + } + } + }; + } 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); + var isDefaultValue = optionsJson[j].isDefaultValue; + if (isDefaultValue == '是' && resultValue == '') { + resultValue = optionsJson[j].name; + hideTriggerItemIdsValue = optionsJson[j].valueTriggerItemIds; + } + } + } + return { + columnWidth: .5, + layout: 'form', + labelWidth: 120, + 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, + name: 'configItemOption' + id, + valueField: 'value', + displayField: 'value', + allowBlank: allowBlank, + editable: false, + store: new top.Ext.data.SimpleStore({ + fields: ['value', 'valueTriggerItemIds'], + data: optionsArrays + }), + forceSelection: true, + value: resultValue, + mode: 'local', + triggerAction: 'all', + anchor: '95%', + 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); + }, + render: function () { + if ('是' == isTriggerItem && resultValue == '') { + setTimeout(function () { + top.Ext.getCmp('hideElement' + id).hide(); + }, 1); + } + } + } + }] + }; + } else if (type == '多选') { + var optionsArray = new Array(); + optionsArray.push({ + id: 'configItemOption' + id, + name: 'configItemOption' + id, + xtype: 'hidden', + hidden: allowBlank, + value: resultValue + }); + if (options != "") { + var optionsJson = JSON.parse(options); + var formId = top.Ext.getCmp('id').getValue(); + for (var j = 0; j < optionsJson.length; j++) { + var checked = false; + if(formId !== ''){ + if (resultValue != '' && resultValue.indexOf(JSON.stringify(optionsJson[j])) != -1) { + checked = true; + } + }else { + var isDefaultValue = optionsJson[j].isDefaultValue; + if (isDefaultValue == '是') { + checked = true; + } + } + optionsArray.push({ + layout: 'form', + columnWidth: 0.5, + labelWidth: 200, + style: 'margin-top:10px', + items: [{ + name: 'cconfigItemOption' + id, + fieldLabel: optionsJson[j].name, + xtype: 'checkbox', + checked: checked, + columnWidth: .5, + inputValue: JSON.stringify(optionsJson[j]), + listeners: { + check: function (thiz, checked) { + var elementId = thiz.getName().substring(1); + var elementObj = top.Ext.getCmp(elementId); + + 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"); + } + } + } + } + } + }] + }); + } + } + return { + columnWidth: 1, + xtype: "fieldset", + title: name, + allowBlank: allowBlank, + id: 'hideElement' + id, + layout: 'column', + autoHeight: true, + collapsible: true, + collapsed: false, + items: optionsArray, + listeners: { + render: function () { + if ('是' == isTriggerItem && resultValue == '') { + setTimeout(function () { + top.Ext.getCmp('hideElement' + id).hide(); + }, 1); + } + } + } + }; + } +} + +//触发项事件,用于触发对应的监测细则显示或隐藏 +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(); + } + } + } + } + } +} + +//添加表单元素 +function addFormDefinitionItem(formId, formExtId, formItemIds, formTitle) { + Ext.Ajax.request({ + url: WWWROOT + '/disinfectSystem/formDefinitionAction!loadFormDefinition.do', + params: { id: formId }, + success: function (response, options) { + var result = Ext.decode(response.responseText); + if (result.success) { + renderFormInstance(result.data.items, formExtId, formItemIds, formTitle); + } + }, + failure: function (response, options) { + showResult('系统加载出错,请稍候再试'); + } + }); +} + +//渲染表单元素 +function renderFormInstance(dataItems, formExtId, formItemIds, formTitle) { + var items = new Array(); + var itemIds = ""; + for (var i = 0; i < dataItems.length; i++) { + var formDefinitionItem = (dataItems[i].definitionItem) ? dataItems[i].definitionItem : dataItems[i]; + var showAnswer = (dataItems[i].showAnswer) ? dataItems[i].showAnswer : null; + var allowBlank = formDefinitionItem.requirement == '必填' ? false : true; + if (itemIds != "") { + itemIds += ";"; + } + itemIds += formDefinitionItem.id; + items.push(createFormDefinitionItemElement(formDefinitionItem.type, formDefinitionItem.id, formDefinitionItem.name, allowBlank, formDefinitionItem.optionsJson, showAnswer, formDefinitionItem.isTriggerItem)); + if (formDefinitionItem.type == '多选') { + items.push({ + columnWidth: 1, + xtype: "label", + html: ' ', + anchor: '95%' + }); + } + } + + top.Ext.getCmp(formItemIds).setValue(itemIds); + + top.Ext.getCmp(formExtId).remove('itemsFieldSet'); + + if (items.length > 0) { + top.Ext.getCmp(formExtId).add({ + id: 'itemsFieldSet', + xtype: "fieldset", + labelAlign: 'left', + title: formTitle || "表单元素", + layout: 'column', + autoHeight: true, + items: items + }); + } + + top.Ext.getCmp(formExtId).doLayout(); + + if (top.Ext.getCmp('itemsFieldSet')) { + top.Ext.getCmp('itemsFieldSet').doLayout(); + } +} + +//判断表单能否为空 +function verifyFormItemIsNull(ids, thiz) { + if (ids != "") { + for (var i = 0; i <= ids.split(';').length; i++) { + var itemId = ids.split(';')[i]; + if (itemId != null && itemId != '') { + if (!top.Ext.getCmp('hideElement' + itemId).hidden) { + if (!top.Ext.getCmp('configItemOption' + itemId).isValid()) { + showResult("请正确填写表单各值。"); + if (thiz) { + thiz.enable(); + } + return true; + } + } else { + if (!top.Ext.getCmp('hideElement' + itemId).hidden && top.Ext.getCmp('configItemOption' + itemId).getValue() == '#@') { + showResult("请正确填写表单各值。"); + if (thiz) { + thiz.enable(); + } + return true; + } + } + } + } + + return false; + } +} + +//获取表单的值 +function getFormValueObject(that) { + var safetyCheckFormDefinitionId = top.Ext.getCmp('safetyCheckFormDefinitionId').getValue(); + var runTableRecordFormDefinitionId = top.Ext.getCmp('runTableRecordFormDefinitionId').getValue(); + if (verifyFormItemIsNull(safetyCheckFormDefinitionId)) { + if (that) { + that.enable(); + } + return false; + } + if (verifyFormItemIsNull(runTableRecordFormDefinitionId)) { + if (that) { + that.enable(); + } + return false; + } + var safetyCheckFormInstanceInfo = {}; + for (var i = 0; i <= safetyCheckFormDefinitionId.split(';').length; i++) { + var itemId = safetyCheckFormDefinitionId.split(';')[i]; + if (itemId != null && itemId != '') { + if (!top.Ext.getCmp('hideElement' + itemId).hidden) { + var name = top.Ext.getCmp('configItemOption' + itemId).name; + var value = top.Ext.getCmp('configItemOption' + itemId).getValue() || ''; + if (top.Ext.getCmp('configItemOption' + itemId).xtype == 'datefieldWithMin') { + if (value !== '') { + var format = top.Ext.getCmp('configItemOption' + itemId).format; + value = top.Ext.util.Format.date(new Date(value), format) + } + } + top.Ext.getCmp('configItemOption' + itemId).setDisabled(true); + safetyCheckFormInstanceInfo[name] = value; + } + } + } + var runTableRecordFormInstanceInfo = {}; + for (var i = 0; i <= runTableRecordFormDefinitionId.split(';').length; i++) { + var itemId = runTableRecordFormDefinitionId.split(';')[i]; + if (itemId != null && itemId != '') { + if (!top.Ext.getCmp('hideElement' + itemId).hidden) { + var name = top.Ext.getCmp('configItemOption' + itemId).name; + var value = top.Ext.getCmp('configItemOption' + itemId).getValue() || ''; + if (top.Ext.getCmp('configItemOption' + itemId).xtype == 'datefieldWithMin') { + if (value !== '') { + var format = top.Ext.getCmp('configItemOption' + itemId).format; + value = top.Ext.util.Format.date(new Date(value), format) + } + } + top.Ext.getCmp('configItemOption' + itemId).setDisabled(true); + runTableRecordFormInstanceInfo[name] = value; + } + } + } + return { + safetyCheckFormInstanceInfo: safetyCheckFormInstanceInfo, + runTableRecordFormInstanceInfo: runTableRecordFormInstanceInfo + } +} + +//保存自定义表单的参数 +function saveFormParams(sterilizationRecordId, safetyCheckFormInstanceInfo, runTableRecordFormInstanceInfo) { + var safetyCheckFormDefinitionId = top.Ext.getCmp('safetyCheckFormDefinitionId').getValue(); + var runTableRecordFormDefinitionId = top.Ext.getCmp('runTableRecordFormDefinitionId').getValue(); + if (safetyCheckFormDefinitionId !== '') { + var formId = top.Ext.getCmp('safetyCheckId').getValue(); + var formDefinitionId = top.Ext.getCmp('safetyCheckFormId').getValue(); + safetyCheckFormInstanceInfo.id = formId; + safetyCheckFormInstanceInfo.formName = '灭菌器运行前安全检查'; + safetyCheckFormInstanceInfo.formDefinitionItemIds = safetyCheckFormDefinitionId; + safetyCheckFormInstanceInfo.formDefinitionId = formDefinitionId; + safetyCheckFormInstanceInfo.sterilizationRecordId = sterilizationRecordId; + safetyCheckFormInstanceInfo.formInstanceType = 'safetyCheckForm'; + saveFormInstance(safetyCheckFormInstanceInfo) + } + if (runTableRecordFormDefinitionId !== '') { + var formId = top.Ext.getCmp('runTableRecordId').getValue(); + var formDefinitionId = top.Ext.getCmp('runTableRecordFormId').getValue(); + runTableRecordFormInstanceInfo.id = formId; + runTableRecordFormInstanceInfo.formName = '灭菌器运行记录表'; + runTableRecordFormInstanceInfo.formDefinitionItemIds = runTableRecordFormDefinitionId; + runTableRecordFormInstanceInfo.formDefinitionId = formDefinitionId; + runTableRecordFormInstanceInfo.sterilizationRecordId = sterilizationRecordId; + runTableRecordFormInstanceInfo.formInstanceType = 'runTableRecord'; + saveFormInstance(runTableRecordFormInstanceInfo) + } +} \ No newline at end of file Index: ssts-web/src/main/webapp/disinfectsystem/equipmentInspection/forminstanceForm.js =================================================================== diff -u --- ssts-web/src/main/webapp/disinfectsystem/equipmentInspection/forminstanceForm.js (revision 0) +++ ssts-web/src/main/webapp/disinfectsystem/equipmentInspection/forminstanceForm.js (revision 38048) @@ -0,0 +1,270 @@ +var formInstanceWin = null; + +function cancelFormInstance() { + formInstanceWin.close(); +} + +function submitForm2(saveAndCreate) { + var url = WWWROOT + '/disinfectSystem/equipmentInspectionInstanceAction!saveEquipmentInspectionInstance.do'; + top.Ext.getCmp('addFormInstanceForm').form.submit({ + url: url, + method: 'POST', + waitMsg: '正在保存数据,请稍候', + waitTitle: '提交表单', + success: function (form, action) { + var result = top.Ext.decode(action.response.responseText); + showResult(result.message); + if (result.success) { + grid.dwrReload(); + cancelFormInstance(); + if (saveAndCreate) { + addFormInstanceWin(""); + } + } + }, + failure: function (form, action) { + var result = top.Ext.decode(action.response.responseText); + showResult(result.message); + } + }); +} + +function addFormInstanceWin(id) { + if (id == null || id == 'undentified') { + id = ""; + } + + var deviceInfoStore = new Ext.data.Store({ + proxy: new Ext.data.HttpProxy({ + url: WWWROOT + '/disinfectSystem/equipmentInspectionDefAction!loadDeviceInfo.do', + method: 'POST' + }), + reader: new Ext.data.JsonReader({ + totalProperty: 'totalCount', + root: 'data' + }, [ + { name: 'id', mapping: 'id' }, + { name: 'name', mapping: 'name' }, + { name: 'type', mapping: 'type' } + ]) + }); + + var formPanel = new top.Ext.FormPanel({ + id: 'addFormInstanceForm', + frame: true, + labelSeparator: ':', + bodyStyle: 'padding:5px 5px 5px 5px', + width: 600, + height: 500, + labelAlign: 'right', + buttonAlign: 'center', + autoScroll: true, + items: [{ + id: 'baseInfoPanel', + layout: 'column', + xtype: "fieldset", + title: "基本信息", + autoHeight: true, + items: [{ + xtype: 'hidden', + name: 'id', + id: 'id' + }, { + xtype: 'hidden', + name: 'formDefinitionItemIds', + id: 'formDefinitionItemIds' + }, { + layout: 'form', + columnWidth: .5, + labelWidth: 90, + items: [{ + xtype: 'hidden', + name: 'formDefinitionId', + id: 'formDefinitionId' + }, { + xtype: 'textfield', + id: 'formDefinitionName', + name: 'formDefinitionName', + fieldLabel: '名称', + anchor: '95%', + readOnly: true, + cls: 'fieldReadOnlyNoRemove' + }] + }, { + layout: 'form', + columnWidth: .5, + labelWidth: 80, + items: [{ + xtype: 'hidden', + name: 'equipmentID', + id: 'equipmentID' + }, { + xtype: 'hidden', + name: 'equipmentType', + id: 'equipmentType' + }, { + xtype: 'combo', + id: 'equipmentName', + name: 'equipmentName', + fieldLabel: '设备名称', + queryParam: 'spell', + minChars: 0, + valueField: 'name', + displayField: 'name', + store: deviceInfoStore, + forceSelection: false, + lazyInit: true, + triggerAction: 'all', + typeAhead: false, + allowBlank: true, + anchor: '95%', + editable: false, + listeners: { + beforequery: function (queryEvent) { + if (id != "" && id != 0) { + return false; + } + }, + beforeselect: function (combo, record, index) { + if (record.data.name == combo.getValue()) { + return false; + } + }, + select: function (combo, record, index) { + var id = record.data.id; + var type = record.data.type; + Ext.Ajax.request({ + url: WWWROOT + '/disinfectSystem/equipmentInspectionDefAction!loadEquipmentInspectionDefByEquipment.do', + params: { equipmentId: id, type: type }, + success: function (response, options) { + var result = Ext.decode(response.responseText); + if (result.success && result.data.length > 0) { + top.Ext.getCmp("formDefinitionId").setValue(result.data[0].id); + top.Ext.getCmp("formDefinitionName").setValue(result.data[0].formName); + top.Ext.getCmp("equipmentID").setValue(id); + top.Ext.getCmp("equipmentType").setValue(type); + addFormDefinitionItem(result.data[0].id, 'addFormInstanceForm', 'formDefinitionItemIds'); + } else { + renderFormInstance([], 'addFormInstanceForm', 'formDefinitionItemIds'); + } + } + }); + } + } + }] + }, { + layout: 'form', + columnWidth: .5, + labelWidth: 90, + items: [{ + xtype: 'datefieldWithMin', + fieldLabel: '登记时间', + id: 'createDate', + name: 'createDate', + format: 'Y-m-d H:i', + value: new Date(), + allowBlank: true, + anchor: '97%' + }] + }, { + layout: 'form', + columnWidth: .5, + labelWidth: 90, + items: [{ + xtype: 'textfield', + name: 'createUserName', + id: 'createUserName', + fieldLabel: "登记人", + anchor: '95%', + readOnly: true, + value: userName, + cls: 'fieldReadOnlyNoRemove' + }] + }, { + layout: 'form', + columnWidth: 1, + labelWidth: 90, + items: [{ + xtype: 'textarea', + name: 'remark', + id: 'remark', + width: 150, + height: 37, + fieldLabel: "备注", + anchor: '97%' + }] + }] + }], + buttons: [{ + id: 'saveBtn', + text: '保存', + handler: function () { + saveFormInstance(this, false); + } + }, { + id: 'saveAndCreateBtn', + text: '保存并新建', + handler: function () { + saveFormInstance(this, true); + } + }, { + text: '取消', + id: 'saveAndNewBtn', + handler: cancelFormInstance + }] + }); + + formInstanceWin = new top.Ext.Window({ + id: 'formInstanceWin', + layout: 'fit', + title: '表单登记信息', + width: 700, + modal: true, + autoHeight: true, + border: false, + plain: true, + items: [formPanel] + }); + + formInstanceWin.show(); + if (id != null && id != '') { + + top.Ext.getCmp('equipmentName').addClass("fieldReadOnlyNoRemove"); + + Ext.Ajax.request({ + url: WWWROOT + '/disinfectSystem/equipmentInspectionInstanceAction!loadEquipmentInspectionInstance.do', + params: { id: id }, + success: function (response, options) { + var result = Ext.decode(response.responseText); + top.Ext.getCmp("id").setValue(result.data.id); + top.Ext.getCmp("formDefinitionId").setValue(result.data.formDefinition.id); + top.Ext.getCmp("formDefinitionName").setValue(result.data.formDefinition.formName); + top.Ext.getCmp("equipmentName").setValue(result.data.equipmentName); + top.Ext.getCmp("equipmentType").setValue(result.data.equipmentType); + top.Ext.getCmp("equipmentID").setValue(result.data.equipmentID); + 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')); + top.Ext.getCmp("remark").setValue(result.data.remark); + + renderFormInstance(result.data.items, 'addFormInstanceForm', 'formDefinitionItemIds'); + } + }); + } + + function saveFormInstance(thiz, saveAndCreate) { + + var ids = top.Ext.getCmp('formDefinitionItemIds').getValue(); + if (verifyFormItemIsNull(ids, thiz)) { + return true; + } + + var equipmentName = top.Ext.getCmp("equipmentName"); + if (equipmentName == null || equipmentName.getValue() == '') { + showResult("请选择设备名称!"); + return false; + } + + submitForm2(saveAndCreate); + } +} + Index: ssts-web/src/main/webapp/disinfectsystem/equipmentInspection/formdefinitionForm.js =================================================================== diff -u --- ssts-web/src/main/webapp/disinfectsystem/equipmentInspection/formdefinitionForm.js (revision 0) +++ ssts-web/src/main/webapp/disinfectsystem/equipmentInspection/formdefinitionForm.js (revision 38048) @@ -0,0 +1,1078 @@ +var formDefinitionItemRecord = Ext.data.Record.create([ + { name: 'id' }, + { name: 'name' }, + { name: 'type' }, + { name: 'requirement' }, + { name: 'options' }, + { name: 'optionsJson' } +]); + +function addFormDefinition(id) { + var deviceInfoRecord = Ext.data.Record.create([ + { name: 'departCode', type: 'string' }, + { name: 'name', type: 'string' } + ]); + var remindUserRecord = Ext.data.Record.create([ + { name: 'id', type: 'string' }, + { name: 'name', type: 'string' } + ]); + var deviceInfoStore = new Ext.data.Store({ + proxy: new Ext.data.HttpProxy({ + url: WWWROOT + '/disinfectSystem/equipmentInspectionDefAction!loadDeviceInfo.do', + method: 'POST' + }), + reader: new Ext.data.JsonReader({ + totalProperty: 'totalCount', + root: 'data' + }, [ + { name: 'id', mapping: 'id' }, + { name: 'name', mapping: 'name' }, + { name: 'type', mapping: 'type' } + ]), + listeners: { + load: function (thiz, records, options) { + if (deviceInfoStore.getCount() > 1) { + deviceInfoStore.insert(0, new deviceInfoRecord({ 'id': '全部', 'name': '全部' })); + if (!id) { + top.Ext.getCmp('applicableEquipmentName').selectAll(); + var item = []; + deviceInfoStore.each(function (record) { + if (record.get('name') !== '全部' && record.get('checked')) { + item.push({ + equipmentId: record.get('id'), + type: record.get('type') + }) + } + }); + top.Ext.getCmp('applicableEquipmentArray').setValue(JSON.stringify(item)); + } + } + } + } + }); + deviceInfoStore.load(); + + var remindUserStore = new Ext.data.Store({ + proxy: new Ext.data.HttpProxy({ + url: WWWROOT + '/systemmanage/user/loadUserByDepartmentCode!loadUserByDepartmentCode.do', + method: 'POST' + }), + reader: new Ext.data.JsonReader({ + totalProperty: 'totalCount', + root: 'data' + }, [ + { name: 'name', mapping: 'name' }, + { name: 'id', mapping: 'id' } + ]), + listeners: { + beforeload: function (_this, options) { + _this.baseParams.departmentCode = currentOrgUnitCoding; + }, + load: function (thiz, records, options) { + if (remindUserStore.getCount() > 1) { + remindUserStore.insert(0, new remindUserRecord({ 'id': '-1', 'name': '全部' })); + } + } + } + }); + + var formPanel = new top.Ext.FormPanel({ + id: 'formDefinitionForm', + frame: true, + labelSeparator: ':', + labelAlign: 'right', + fileUpload: true, + bodyStyle: 'padding:5px 5px 0px 5px;', + autoWidth: true, + height: 170, + layout: 'column', + items: [{ + xtype: 'hidden', + name: 'id', + id: 'id', + value: id + }, { + xtype: 'hidden', + name: 'isDisabled', + id: 'isDisabled', + value: '否' + }, { + xtype: 'hidden', + name: 'formType', + id: 'formType', + value: formType + }, { + layout: 'form', + columnWidth: .5, + labelWidth: 80, + items: [{ + xtype: 'textfield', + fieldLabel: "定义名称", + name: "formName", + id: "formName", + allowBlank: false, + anchor: '95%' + }] + }, { + layout: 'form', + columnWidth: .5, + labelWidth: 80, + items: [{ + xtype: 'hidden', + id: 'applicableEquipmentArray', + name: 'applicableEquipmentArray' + }, { + xtype: 'multiSelect', + id: 'applicableEquipmentName', + name: 'applicableEquipmentName', + fieldLabel: '适用设备', + queryParam: 'spell', + minChars: 0, + valueField: 'name', + displayField: 'name', + store: deviceInfoStore, + forceSelection: false, + lazyInit: true, + triggerAction: 'all', + typeAhead: false, + allowBlank: true, + anchor: '95%', + editable: false, + listeners: { + select: function (combo, record, index) { + //1、如果选中“全部”的项,则把所有的项选中,反之全部取消选择 + if (record.get('name') == '全部') { + if (record.get('checked')) { + combo.selectAll(); + } else { + combo.deselectAll(); + } + } + + //2、如果已经选中所有的项,则把“全部”项选中,反之把“全部”项取消选择 + var selectAll = true; + combo.store.each(function (record) { + if (record.get('name') != '全部' && !record.get(this.checkField)) { + selectAll = false; + return; + } + }, combo); + + var all = combo.store.getAt(0); + if (selectAll) { + all.set(combo.checkField, true); + } else { + all.set(combo.checkField, false); + } + combo.setValue(combo.getCheckedValue()); + var item = []; + var isHasBioreaderInterface = false; + combo.store.each(function (record) { + if (record.get('name') !== '全部' && record.get('checked')) { + item.push({ + equipmentId: record.get('id'), + type: record.get('type') + }); + if (record.get('type') == '生物阅读器') { + isHasBioreaderInterface = true; + } + } + }, combo); + if (isHasBioreaderInterface) { + top.Ext.getCmp('remindMode').setValue('每天固定时间提醒'); + top.Ext.getCmp('remindMode').disable() + } else { + top.Ext.getCmp('remindMode').enable(); + } + top.Ext.getCmp('applicableEquipmentArray').setValue(JSON.stringify(item)); + } + } + }] + }, { + layout: 'form', + columnWidth: .5, + labelWidth: 80, + items: [{ + xtype: 'combo', + fieldLabel: "是否提醒", + name: "equipmentInspectionRemind", + id: "equipmentInspectionRemind", + valueField: 'value', + displayField: 'value', + allowBlank: true, + editable: false, + store: new top.Ext.data.SimpleStore({ + fields: ['value'], + data: [['是'], ['否']] + }), + value: '否', + forceSelection: true, + mode: 'local', + anchor: '95%', + triggerAction: 'all', + listeners: { + select: function (combo, record, index) { + if (record.data.value == '是') { + top.Ext.getCmp('remindUserBox').show(); + top.Ext.getCmp('remindModeBox').show(); + top.Ext.getCmp('remindDurationBox').show(); + top.Ext.getCmp('remindStartTimeBox').show(); + top.Ext.getCmp('remindEndTimeBox').show(); + } else { + // top.Ext.getCmp('remindUserNames').setRawValue(''); + // top.Ext.getCmp('remindUserIds').setValue(''); + // top.Ext.getCmp('remindDuration').setValue(''); + // top.Ext.getCmp('remindMode').setValue('每天固定时间提醒'); + // top.Ext.getCmp('remindStartTime').setValue('00:00'); + // top.Ext.getCmp('remindEndTime').setValue('23:59'); + top.Ext.getCmp('remindUserBox').hide(); + top.Ext.getCmp('remindModeBox').hide(); + top.Ext.getCmp('remindDurationBox').hide(); + top.Ext.getCmp('remindStartTimeBox').hide(); + top.Ext.getCmp('remindEndTimeBox').hide(); + } + } + } + }] + }, { + layout: 'form', + columnWidth: .5, + labelWidth: 80, + id: 'remindUserBox', + items: [{ + xtype: 'hidden', + id: 'remindUserIds', + name: 'remindUserIds' + }, { + xtype: 'multiSelect', + id: 'remindUserNames', + name: 'remindUserNames', + fieldLabel: '提醒用户', + queryParam: 'spell', + minChars: 0, + valueField: 'id', + displayField: 'name', + store: remindUserStore, + forceSelection: false, + lazyInit: true, + triggerAction: 'all', + typeAhead: false, + allowBlank: true, + anchor: '95%', + separator: ';', + editable: false, + listeners: { + select: function (combo, record, index) { + //1、如果选中“全部”的项,则把所有的项选中,反之全部取消选择 + if (record.get('name') == '全部') { + if (record.get('checked')) { + combo.selectAll(); + } else { + combo.deselectAll(); + } + } + + //2、如果已经选中所有的项,则把“全部”项选中,反之把“全部”项取消选择 + var selectAll = true; + combo.store.each(function (record) { + if (record.get('name') != '全部' && !record.get(this.checkField)) { + selectAll = false; + return; + } + }, combo); + + var all = combo.store.getAt(0); + if (selectAll) { + all.set(combo.checkField, true); + } else { + all.set(combo.checkField, false); + } + combo.setValue(combo.getCheckedValue()); + top.Ext.getCmp('remindUserIds').setValue(combo.getCheckedValue()); + } + } + }] + }, { + layout: 'form', + columnWidth: .5, + labelWidth: 80, + id: 'remindModeBox', + items: [{ + xtype: 'combo', + fieldLabel: "提醒模式", + name: "remindMode", + id: "remindMode", + valueField: 'value', + displayField: 'value', + allowBlank: true, + editable: false, + store: new top.Ext.data.SimpleStore({ + fields: ['value'], + data: [['每天固定时间提醒'], ['设备运行时提醒']] + }), + value: '每天固定时间提醒', + forceSelection: true, + mode: 'local', + anchor: '95%', + triggerAction: 'all', + listeners: { + select: function (combo, record, index) { + if (record.data.value == '每天固定时间提醒') { + top.Ext.getCmp('remindStartTimeBox').show(); + top.Ext.getCmp('remindEndTimeBox').show(); + } else { + // top.Ext.getCmp('remindStartTime').setValue('00:00'); + // top.Ext.getCmp('remindEndTime').setValue('23:59'); + top.Ext.getCmp('remindStartTimeBox').hide(); + top.Ext.getCmp('remindEndTimeBox').hide(); + } + } + } + }] + }, { + layout: 'form', + columnWidth: .5, + labelWidth: 80, + id: 'remindDurationBox', + items: [{ + xtype: 'textfield', + fieldLabel: "间隔时长(分)", + name: "remindDuration", + id: "remindDuration", + allowBlank: true, + anchor: '95%' + }] + }, { + layout: 'form', + columnWidth: .5, + labelWidth: 80, + id: 'remindStartTimeBox', + items: [new top.Ext.form.TimeField({ + id: 'remindStartTime', + name: 'remindStartTime', + fieldLabel: '提醒开始时间', + readOnly: false, + format: 'H:i', + value: '00:00', + anchor: '95%' + })] + }, { + layout: 'form', + columnWidth: .5, + labelWidth: 80, + id: 'remindEndTimeBox', + items: [new top.Ext.form.TimeField({ + id: 'remindEndTime', + name: 'remindEndTime', + fieldLabel: '提醒结束时间', + readOnly: false, + format: 'H:i', + value: '23:59', + anchor: '95%' + })] + }, { + layout: 'form', + columnWidth: 1, + labelWidth: 80, + items: [{ + xtype: 'textarea', + fieldLabel: "备注", + name: "remark", + id: "remark", + height: 40, + anchor: '97%' + }] + }] + }); + + var tbar = [{ + text: '元素类型:' + }, { + xtype: 'combo', + fieldLabel: "元素类型", + name: "type", + id: "type", + width: 100, + valueField: 'value', + displayField: 'value', + allowBlank: false, + editable: false, + store: new top.Ext.data.SimpleStore({ + fields: ['value'], + data: [[itemTypes[0]], [itemTypes[1]], [itemTypes[2]], [itemTypes[3]], [itemTypes[4]], [itemTypes[5]], [itemTypes[6]], [itemTypes[7]]] + } + ), + value: itemTypes[5], + forceSelection: true, + mode: 'local', + triggerAction: 'all' + }, { + text: '元素名称:' + }, { + xtype: 'textfield', + maxLength: '20', + id: 'name', + name: 'name', + width: 200 + }, { + text: '必要性:' + }, { + xtype: 'combo', + name: "requirement", + id: "requirement", + valueField: 'value', + displayField: 'value', + allowBlank: false, + width: 80, + editable: false, + store: new top.Ext.data.SimpleStore({ + fields: ['value'], + data: [['可选'], ['必填']] + } + ), + value: '可选', + forceSelection: true, + mode: 'local', + triggerAction: 'all' + }, { + text: '添加', + iconCls: 'btn_ext_add', + handler: function () { + var type = top.Ext.getCmp("type").getValue(); + var name = top.Ext.getCmp("name").getValue(); + var requirement = top.Ext.getCmp("requirement").getValue(); + if (type == "") { + showResult("元素类型不能为空!"); + return false; + } + if (name == "") { + showResult("元素名称不能为空!"); + return false; + } + if (requirement == "") { + showResult("元素必要性不能为空!"); + return false; + } + + var options = ''; + var formConfigStore = top.Ext.getCmp('formDefinitionItemConfigPanel').getStore(); + var index = formConfigStore.find('name', top.Ext.getCmp('name').getValue()); + var isNameExist = false; + if (index != -1) { + var recordName = formConfigStore.getAt(index).get('name'); + if (recordName == name) { + isNameExist = true; + } + } + if (isNameExist) { + showResult(name + ",列表已存在!"); + } else { + var itemRecord = new formDefinitionItemRecord({ + id: 0, + name: name, + type: type, + requirement: requirement, + options: '', + optionsJson: "" + }); + formConfigStore.add(itemRecord); + } + top.Ext.getCmp('name').setValue(''); + top.Ext.getCmp('requirement').setValue('可选'); + } + }]; + var formDefinitionWin = new top.Ext.Window({ + id: 'formDefinitionWin', + title: '表单定义信息', + width: 700, + border: false, + modal: true, + heigth: 800, + plain: true, + buttonAlign: 'center', + items: [{ + layout: 'column', + labelWidth: 90, + items: [{ + columnWidth: 1, + items: [formPanel] + }, { + columnWidth: 1, + items: [ + new top.Ext.grid.EditorGridPanel({ + id: 'formDefinitionItemConfigPanel', + title: '表单元素列表', + width: 685, + height: 400, + border: true, + frame: false, + selModel: new top.Ext.grid.RowSelectionModel({ + singleSelect: false + }), + bodyStyle: 'border:1px solid #afd7af', + tbar: tbar, + autoExpandColumn: 'aotuColumnId', + store: new top.Ext.data.Store({ + reader: new top.Ext.data.JsonReader({ + fields: [ + { name: 'id' }, + { name: 'name' }, + { name: 'type' }, + { name: 'requirement' }, + { name: 'optionsJson' }, + { name: 'options' } + ] + }) + }), + cm: new top.Ext.grid.ColumnModel([new top.Ext.grid.RowNumberer({ header: "序号", width: 40 }), + { + header: "元素名称", dataIndex: 'name', width: 170, + editor: new top.Ext.form.TextField({ + allowBlank: false + }) + }, + { header: "元素类型", width: 80, dataIndex: 'type' }, + { + header: "必要性", width: 80, dataIndex: 'requirement', + editor: new top.Ext.form.ComboBox({ + valueField: 'value', + displayField: 'value', + allowBlank: false, + width: 80, + editable: false, + store: new top.Ext.data.SimpleStore({ + fields: ['value'], + data: [['必填'], ['可选']] + } + ), + forceSelection: true, + mode: 'local', + triggerAction: 'all' + }) + }, + { header: "参数值", width: 150, dataIndex: 'options' }, + { header: "排序", width: 80, dataIndex: 'id', renderer: moveUpDown, sortable: false, menuDisabled: true }, + { + id: 'aotuColumnId', header: "删除", dataIndex: 'name', width: 100, + renderer: function (v, p, record, index) { + var str = ""; + return str; + } + }]), + listeners: { + cellclick: function (thiz, rowIndex, columnIndex, e) { + var record = thiz.getStore().getAt(rowIndex); + var type = record.get("type"); + var params = record.get("optionsJson"); + if (columnIndex == 4 && (itemTypes[3] == type || itemTypes[4] == type)) { + setFormDefinitionOptionsWin(params, rowIndex, type); + } + } + } + }) + ] + }] + }], + buttons: [{ + id: 'saveBtn', + text: '保存', + handler: saveFormDefinition + }, { + id: 'deployBtn', + text: '部署', + handler: deployFormDefinition + }, { + text: '取消', + id: 'cancelBtn', + handler: function () { + top.Ext.getCmp("formDefinitionWin").close(); + } + }] + }); + + formDefinitionWin.show(); + if (id != null && id != "") { + formPanel.form.load({ + url: WWWROOT + '/disinfectSystem/equipmentInspectionDefAction!loadEquipmentInspectionDef.do', + method: 'GET', + params: { id: id }, + waitMsg: '正在加载数据,请稍候', + success: function (form, action) { + var formConfig = action.result.data; + if (action_deploy == formConfig.isDeploy) { + top.Ext.getCmp("saveBtn").disable(); + } + var items = formConfig.items; + var store = top.Ext.getCmp('formDefinitionItemConfigPanel').getStore(); + for (var i = 0; i < items.length; i++) { + var itemRecord = new formDefinitionItemRecord({ + id: items[i].id, + name: items[i].name, + type: items[i].type, + requirement: items[i].requirement, + options: items[i].optionsStr, + optionsJson: items[i].optionsJson + }); + store.add(itemRecord); + } + + var item = []; + var nameArr = []; + var applicableEquipmentArray = formConfig.applicableEquipmentArray; + if (applicableEquipmentArray !== '') { + var isHasBioreaderInterface = false; + applicableEquipmentArray = JSON.parse(applicableEquipmentArray); + for (var i = 0; i < applicableEquipmentArray.length; i++) { + item.push({ + equipmentId: applicableEquipmentArray[i].equipmentId, + type: applicableEquipmentArray[i].type + }); + nameArr.push(applicableEquipmentArray[i].equipmentName); + if (applicableEquipmentArray[i].type == '生物阅读器') { + isHasBioreaderInterface = true; + } + } + top.Ext.getCmp('applicableEquipmentArray').setValue(JSON.stringify(item)); + top.Ext.getCmp('applicableEquipmentName').setRawValue(nameArr.join(',')); + if (isHasBioreaderInterface) { + top.Ext.getCmp('remindMode').disable() + } else { + top.Ext.getCmp('remindMode').enable(); + } + } + + var equipmentInspectionRemind = formConfig.equipmentInspectionRemind; + if (equipmentInspectionRemind == '是') { + top.Ext.getCmp('remindUserNames').setRawValue(formConfig.remindUserNames); + top.Ext.getCmp('remindUserIds').setValue(formConfig.remindUserIds); + top.Ext.getCmp('remindDuration').setValue(formConfig.remindDuration); + top.Ext.getCmp('remindMode').setValue(formConfig.remindMode); + if (formConfig.remindMode == '每天固定时间提醒') { + top.Ext.getCmp('remindStartTime').setValue(formConfig.remindStartTime); + top.Ext.getCmp('remindEndTime').setValue(formConfig.remindEndTime); + } else { + top.Ext.getCmp('remindStartTimeBox').hide(); + top.Ext.getCmp('remindEndTimeBox').hide(); + } + } else { + top.Ext.getCmp('remindUserBox').hide(); + top.Ext.getCmp('remindModeBox').hide(); + top.Ext.getCmp('remindDurationBox').hide(); + top.Ext.getCmp('remindStartTimeBox').hide(); + top.Ext.getCmp('remindEndTimeBox').hide(); + } + }, + failure: function (form, action) { + showResult("加载出错,请联系管理员!"); + } + }); + } else { + top.Ext.getCmp('remindUserBox').hide(); + top.Ext.getCmp('remindModeBox').hide(); + top.Ext.getCmp('remindDurationBox').hide(); + top.Ext.getCmp('remindStartTimeBox').hide(); + top.Ext.getCmp('remindEndTimeBox').hide(); + } +} + +function deployFormDefinition() { + submitFormDefinitionForm(action_deploy); +} + +function saveFormDefinition() { + submitFormDefinitionForm(action_save); +} + +function submitFormDefinitionForm(actionType) { + var formPanel = top.Ext.getCmp('formDefinitionForm'); + if (!formPanel.form.isValid()) { + showResult('请正确填写表单各值'); + return false; + } + + var applicableEquipmentArray = top.Ext.getCmp('applicableEquipmentArray').getValue(); + if (JSON.parse(applicableEquipmentArray).length == 0) { + showResult('适用设备不能为空!'); + return false; + } + + var equipmentInspectionRemind = top.Ext.getCmp('equipmentInspectionRemind').getValue(); + if (equipmentInspectionRemind == '是') { + var remindMode = top.Ext.getCmp('remindMode').getValue(); + var remindUserNames = top.Ext.getCmp('remindUserNames').getRawValue(); + if (remindUserNames == '') { + showResult('提醒用户不能为空!'); + return false; + } + var remindDuration = top.Ext.getCmp('remindDuration').getValue(); + if (remindDuration == '') { + showResult('提醒时长不能为空!'); + return false; + } + if (remindMode == '每天固定时间提醒') { + var remindStartTime = top.Ext.getCmp('remindStartTime').getRawValue(); + var remindEndTime = top.Ext.getCmp('remindEndTime').getRawValue(); + if (remindStartTime == '' || remindEndTime == '') { + showResult('提醒时间不能为空!'); + return false; + } + var startHour = remindStartTime.split(':')[0]; + var startMin = remindStartTime.split(':')[1]; + + var endHour = remindEndTime.split(':')[0]; + var endMin = remindEndTime.split(':')[1]; + + startMin = parseInt(startHour) * 60 + parseInt(startMin); + endMin = parseInt(endHour) * 60 + parseInt(endMin); + if (startMin > endMin) { + showResult('结束时间不能早于开始时间。'); + return false + } + } + } + var store = top.Ext.getCmp('formDefinitionItemConfigPanel').getStore(); + if (store.getCount() == 0) { + showResult("表单元素列表不能为空!"); + return false; + } + var jsonArray = []; + var submitFaildMsg = ""; + for (var i = 0; i < store.getCount(); i++) { + var record = store.getAt(i); + var name = record.get('name'); + var type = record.get('type'); + if (itemTypes[3] == type || itemTypes[4] == type) { + if (record.get("optionsJson") == "" || record.get("optionsJson") == "[]") { + submitFaildMsg = (name + ",元素类型[" + type + "],未设置参数值!"); + break; + } + } + jsonArray.push({ + id: record.get('id'), + name: name, + type: type, + requirement: record.get('requirement'), + options: record.get('optionsJson'), + orderNumber: (i + 1) + }); + } + + if (submitFaildMsg != "") { + showResult(submitFaildMsg); + return false; + } + + formPanel.form.submit({ + url: WWWROOT + '/disinfectSystem/equipmentInspectionDefAction!saveEquipmentInspectionDef.do', + method: 'POST', + waitMsg: '正在保存数据,请稍候', + waitTitle: '提交表单', + params: { "items": JSON.stringify(jsonArray), "actionType": actionType }, + success: function (form, action) { + showResult(action.result.message); + if (action.result.success) { + grid.dwrReload(); + top.Ext.getCmp("formDefinitionWin").close(); + } + }, + failure: function (form, action) { + showResult(action.result.message); + } + }); +} + +function setFormDefinitionOptionsWin(params, rowIndex, type) { + + var goodsRecord = Ext.data.Record.create([ + { name: 'id' }, + { name: 'name' }, + { name: 'orderNumber' }, + { name: 'isDefaultValue' } + ]); + + var optionStore = new Ext.data.Store({ + proxy: new Ext.data.MemoryProxy([]), + reader: new Ext.data.JsonReader({ + fields: [{ + name: 'id' + }, { + name: 'valueTriggerItemNames' + }, { + name: 'name' + }, { + name: 'orderNumber' + }, { + name: 'isDefaultValue' + }] + }) + }); + if (params != undefined && params != "") { + var optionsJson = JSON.parse(params); + for (var i = 0; i < optionsJson.length; i++) { + var record = new goodsRecord({ + id: optionsJson[i].id, + name: optionsJson[i].name, + valueTriggerItemNames: optionsJson[i].valueTriggerItemNames, + orderNumber: optionsJson[i].orderNumber, + isDefaultValue: optionsJson[i].isDefaultValue + }); + optionStore.add(record); + } + } + + var cm = new top.Ext.grid.ColumnModel([{ + id: 'id', + name: 'id', + hidden: true, + dataIndex: 'id' + }, { + id: 'name', + header: "名称", + width: 150, + dataIndex: 'name' + }, { + id: 'isDefaultValue', + header: "是否默认值", + width: 100, + dataIndex: 'isDefaultValue', + editor: new top.Ext.form.ComboBox({ + valueField: 'value', + displayField: 'value', + allowBlank: false, + editable: false, + store: new top.Ext.data.SimpleStore({ + fields: ['value'], + data: [['是'], ['否']] + }), + value: '否', + forceSelection: true, + mode: 'local', + triggerAction: 'all' + }) + }, { + id: 'valueTriggerItemNames', + header: "触发项", + width: 150, + dataIndex: 'valueTriggerItemNames' + }, { + id: 'orderNumber', + header: "操作", + width: 200, + renderer: optionsMoveUpDown, + dataIndex: 'orderNumber' + }, { + id: 'deleteItem', + header: '删除', + width: 40, + menuDisabled: true, + dataIndex: 'button', + renderer: function (v, p, record, index) { + return ""; + } + }]); + + function addOptionItem() { + var goodsName = top.Ext.getCmp('optionName').getValue(); + var isExist = false; + for (var i = 0; i < optionStore.getCount(); i++) { + var record = optionStore.getAt(i); + if (record.get('name') == goodsName) { + isExist = true; + break; + } + } + if (!isExist) { + var record = new goodsRecord({ + id: 0, + name: goodsName, + isDefaultValue: '否', + orderNumber: 0 + }); + optionStore.add(record); + top.Ext.getCmp('optionName').setValue(''); + top.Ext.getCmp('optionName').focus(); + } else { + showResult(goodsName + ",已添加!"); + } + } + + + var tbar = [{ + text: '参数名称' + }, { + xtype: 'textfield', + maxLength: '20', + id: 'optionName', + name: 'optionName', + width: 200, + listeners: { + render: function (p) { + p.getEl().on('keypress', function (e) { + if (e.getKey() == 13) { + addOptionItem(); + } + }) + } + } + }, { + text: '添加', + handler: function () { + addOptionItem(); + } + }]; + + formObj = 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: [{ + xtype: 'hidden', + name: 'id', + id: 'id' + }, { + columnWidth: 1, + layout: 'form', + items: [ + new top.Ext.grid.EditorGridPanel({ + id: 'itemOptionsGrid', + store: optionStore, + tbar: tbar, + cm: cm, + width: 240, + height: 240, + isCheckboxSelectionModel: true, + frame: false, + viewConfig: { + forceFit: true + }, + bodyStyle: 'border:1px solid #afd7af', + anchor: '100%', + selModel: new top.Ext.grid.RowSelectionModel({ + singleSelect: false + }), + listeners: { + cellclick: function (thiz, rowIndex, columnIndex, e) { + if (columnIndex === 3) { + var valueTriggerItemNames = thiz.getStore().getAt(rowIndex).get('valueTriggerItemNames') || ''; + triggerItem.openTriggerItemWin(rowIndex, valueTriggerItemNames); + } + } + } + }) + ] + }] + }], + buttons: [{ + text: '确定', + handler: function () { + var count = optionStore.getCount(); + var optionJsonArray = []; + var optionsStr = ""; + var defaultValueCount = 0; + for (var i = 0; i < count; i++) { + var record = optionStore.getAt(i); + optionJsonArray.push({ + id: record.get("id"), + name: record.get("name"), + isDefaultValue: record.get("isDefaultValue"), + valueTriggerItemNames: record.get("valueTriggerItemNames"), + orderNumber: (i + 1) + }); + if (optionsStr != "") { + optionsStr += ", "; + } + if(record.get("isDefaultValue") == '是'){ + defaultValueCount++; + } + optionsStr += record.get("name"); + } + if(defaultValueCount > 1){ + showResult('单选只能有一个默认值!'); + return + } + resetConfigItemOptions(JSON.stringify(optionJsonArray), optionsStr, rowIndex); + top.Ext.getCmp("setOptionsWindow").close(); + } + }, { + text: '取消', + handler: function () { + top.Ext.getCmp("setOptionsWindow").close(); + } + }] + }); + + var formWindow = new top.Ext.Window({ + id: 'setOptionsWindow', + layout: 'fit', + title: '参数值设置', + width: 600, + modal: true, + autoHeight: true, + border: false, + plain: true, + items: [formObj] + }); + formWindow.show(); +} + +function resetConfigItemOptions(hideValue, options, rowIndex) { + var store = top.Ext.getCmp('formDefinitionItemConfigPanel').getStore(); + var record = store.getAt(rowIndex); + record.set("optionsJson", hideValue); + record.set("options", options); +} + +function moveUp(id, gridId) { + var store = top.Ext.getCmp(gridId).getStore(); + var record = store.getById(id); + var index = store.indexOf(record); + if (index > 0) { + store.remove(record); + store.insert(index - 1, record); + } +} +function moveDown(id, gridId) { + var store = top.Ext.getCmp(gridId).getStore(); + var record = store.getById(id); + var index = store.indexOf(record); + if (index < store.getCount() - 1) { + store.remove(record); + store.insert(index + 1, record); + } +} + +function moveUpDown(v, p, record) { + var html = ''; + html += '向上移动  '; + html += ''; + html += '向下移动'; + return html; +} + +function optionsMoveUpDown(v, p, record) { + var html = ''; + html += '向上移动  '; + html += ''; + html += '向下移动'; + return html; +} + +function removeItem(gridId) { + var gridObj = top.Ext.getCmp(gridId); + var rows = gridObj.getSelectionModel().getSelections(); + if (rows) { + var store = gridObj.getStore(); + for (var i = 0; i < rows.length; i++) { + store.remove(rows[i]); + } + } +} \ No newline at end of file Index: ssts-web/src/main/webapp/disinfectsystem/equipmentInspection/formdefinitionView.js =================================================================== diff -u --- ssts-web/src/main/webapp/disinfectsystem/equipmentInspection/formdefinitionView.js (revision 0) +++ ssts-web/src/main/webapp/disinfectsystem/equipmentInspection/formdefinitionView.js (revision 38048) @@ -0,0 +1,352 @@ +var entityName = "设备巡检定义"; +var grid; + +// 删除 +function deleteFormDefinition(grid) { + var records = grid.getSelectionModel().getSelections(); + + if (records.length == 0) { + showResult("请选择要删除的记录!"); + return false; + } + var ids = null; + for (var i = 0, len = records.length; i < len; i++) { + if (ids == null) { + ids = records[i].data['id']; + } else { + ids = ids + ';' + records[i].data['id']; + } + } + top.Ext.MessageBox.confirm("请确认", "是否确定要删除选中的信息吗?", + function (button, text) { + if ("yes" == button) { + Ext.Ajax.request({ + url: WWWROOT + '/disinfectSystem/equipmentInspectionDefAction!deleteFormDefinition.do', + params: { ids: ids }, + success: function (response, options) { + var result = Ext.decode(response.responseText); + var success = result.success; + showResult(result.message); + if (success) { + grid.dwrReload(); + } + }, + failure: function (response, options) { + var result = Ext.decode(response.responseText); + showResult(result); + } + }); + } + }); +} + +/** + * 停用或启用定义 + * @param grid + * @returns {Boolean} + */ +function disableOrEnableDefinition(actionType, isDisabled) { + var records = grid.getSelectionModel().getSelections(); + + if (records.length == 0) { + showResult("请选择要" + actionType + "的记录!"); + return false; + } + var ids = null; + for (var i = 0, len = records.length; i < len; i++) { + if (ids == null) { + ids = records[i].data['id']; + } else { + ids = ids + ';' + records[i].data['id']; + } + } + top.Ext.MessageBox.confirm("请确认", "是否确定要【" + actionType + "】选中的数据吗?", + function (button, text) { + if ("yes" == button) { + Ext.Ajax.request({ + url: WWWROOT + '/disinfectSystem/equipmentInspectionDefAction!disableOrEnableDefinition.do', + params: { ids: ids, isDisabled: isDisabled }, + success: function (response, options) { + var result = Ext.decode(response.responseText); + var success = result.success; + showResult(result.message); + if (success) { + grid.dwrReload(); + } + }, + failure: function (response, options) { + var result = Ext.decode(response.responseText); + showResult(result); + } + }); + } + }); +} + +//触发项类 +var triggerItem = { + + triggerItemModel: [{ name: 'name' }], + + extObj: top.Ext, + + /** + * 设置ext对象 + * @param self_ext + */ + setExtObj: function (self_ext) { + this.extObj = self_ext; + }, + + /** + * 获取ext对象 + * @returns {*} + */ + getExtObj: function () { + return this.extObj; + }, + + doSave: function (rowIndex) { + var optionsStr = ""; + var records = triggerItem.extObj.getCmp("triggerItemPanel").getSelectionModel().getSelections(); + for (var i = 0, len = records.length; i < len; i++) { + if (optionsStr !== "") { + optionsStr += ","; + } + optionsStr += records[i].data['name']; + } + var store = triggerItem.extObj.getCmp('itemOptionsGrid').getStore(); + var record = store.getAt(rowIndex); + record.set("valueTriggerItemNames", optionsStr); + triggerItem.extObj.getCmp("triggerItemWindow").close(); + }, + + getTriggerStore: function () { + return new triggerItem.extObj.data.Store({ + proxy: new triggerItem.extObj.data.MemoryProxy([]), + reader: new triggerItem.extObj.data.JsonReader({ + fields: triggerItem.triggerItemModel + }) + }); + }, + + loadTriggerItem: function () { + var triggerItemStore = triggerItem.getTriggerStore(); + var elementRecord = triggerItem.extObj.data.Record.create(triggerItem.triggerItemModel); + var elementStore = triggerItem.extObj.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); + } + return triggerItemStore; + }, + + createTriggerWindow: function (formObj) { + return new triggerItem.extObj.Window({ + id: 'triggerItemWindow', + layout: 'fit', + title: '参数触发项选择', + width: 500, + modal: true, + autoHeight: true, + border: false, + plain: true, + items: [formObj] + }); + }, + + selectSaveCheck: function (valueTriggerItemNames, triggerItemStore, selectModel) { + var name = valueTriggerItemNames.split(","); + var selectRows = []; + triggerItem.extObj.each(name, function (item) { + var find = triggerItemStore.find('name', item, false); + selectRows.push(find); + }); + if (selectRows.length > 0) { + selectModel.selectRows(selectRows); + } + }, + + createTriggerItemPanel: function (cm, selectModel, triggerItemStore) { + return new triggerItem.extObj.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 triggerItem.extObj.grid.RowSelectionModel({ + singleSelect: false + }) + }) + }, + + getCm: function (selectModel) { + var cm = [selectModel, { + header: "名称", + width: 240, + dataIndex: 'name' + }]; + return new triggerItem.extObj.grid.ColumnModel(cm); + }, + + openTriggerItemWin: function (rowIndex, valueTriggerItemNames) { + var triggerItemStore = triggerItem.loadTriggerItem(); + var selectModel = new triggerItem.extObj.grid.CheckboxSelectionModel({ handleMouseDown: Ext.emptyFn }); + var panel = new triggerItem.extObj.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: [ + triggerItem.createTriggerItemPanel(triggerItem.getCm(selectModel), selectModel, triggerItemStore) + ] + }] + }], + buttons: [{ + text: '确定', + handler: function () { + triggerItem.doSave(rowIndex); + } + }, { + text: '取消', + handler: function () { + triggerItem.extObj.getCmp("triggerItemWindow").close(); + } + }] + }); + var triggerItemWindow = triggerItem.createTriggerWindow(panel); + triggerItemWindow.show(); + triggerItem.selectSaveCheck(valueTriggerItemNames, triggerItemStore, selectModel); + + } +}; + +function modify(v, data) { + addFormDefinition(data['id']); +} + +function showIsDeployStatus(v, data, items) { + if (action_save == v) { + return "已保存"; + } else if (action_deploy == v) { + return "已部署"; + } + return v; +} + +Ext.onReady(function () { + Ext.QuickTips.init(); + + var columns = [ + { header: "定义名称", width: 150, dataIndex: 'formName', renderer: modifyRecord }, + { header: "创建时间", width: 180, dataIndex: 'createDate' }, + { header: "创建人", width: 80, dataIndex: 'createUserName' }, + { header: "版本号", width: 80, dataIndex: 'version' }, + { header: "是否已部署", width: 120, dataIndex: 'isDeploy', renderer: showIsDeployStatus }, + { header: "是否已停用", width: 120, dataIndex: 'isDisabled' }, + { header: "适用设备", width: 300, dataIndex: 'applicableEquipment' }, + { header: "备注", width: 120, dataIndex: 'remark', id: 'description' } + ]; + + var filters = new Ext.grid.GridFilters({ + filters: [ + { type: 'string', dataIndex: 'formName' }, + { type: 'string', dataIndex: 'createDate' }, + { type: 'string', dataIndex: 'createUserName' }, + { type: 'string', dataIndex: 'version' }, + { type: 'string', dataIndex: 'isDeploy' }, + { type: 'string', dataIndex: 'remark' }, + { type: 'string', dataIndex: 'isDisabled' } + ] + }); + + var readerDetail = [ + { name: 'id' }, + { name: 'formName' }, + { name: 'createDate' }, + { name: 'createUserName' }, + { name: 'version' }, + { name: 'isDeploy' }, + { name: 'remark' }, + { name: 'applicableEquipment' }, + { name: 'isDisabled' } + ]; + + var tbar = [{ + text: '添加', + iconCls: 'btn_ext_application_add', + handler: function () { + addFormDefinition("") + } + }, '-', { + text: '删除', + iconCls: 'btn_ext_application_del', + handler: function () { + deleteFormDefinition(grid); + } + }, '-', { + text: '停用', + iconCls: 'btn_ext_application_add', + handler: function () { + disableOrEnableDefinition("停用", "是"); + } + }, '-', { + text: '启用', + iconCls: 'btn_ext_application_add', + handler: function () { + disableOrEnableDefinition("启用", "否"); + } + }]; + var dwrCallParams = null; + + Ext.ux.ForgonPageGrid.prototype.getGridParameterMap = function () { + + }; + + grid = new Ext.ux.ForgonPageGrid({ + tbar: tbar, + pageSize: 20, + defaultSortField: 'id', + defaultSortDirection: 'DESC', + title: entityName + '列表', + isCheckboxSelectionModel: true, + rememberSelected: false, + isShowSearchField: true, + columns: columns, + plugins: filters, + autoExpandColumn: 'description', + frame: false + }, + readerDetail, + EquipmentInspectionDefTableManager.findEquipmentInspectionDefList, + dwrCallParams // 这个参数只是占位作用 + ); + + var viewport = new Ext.Viewport({ + layout: 'border', + items: [{ + region: 'center', + margins: '0 0 0 0', + layout: 'fit', + items: grid + }] + }); +}); \ No newline at end of file Index: ssts-web/src/main/webapp/disinfectsystem/equipmentInspection/forminstanceView.jsp =================================================================== diff -u --- ssts-web/src/main/webapp/disinfectsystem/equipmentInspection/forminstanceView.jsp (revision 0) +++ ssts-web/src/main/webapp/disinfectsystem/equipmentInspection/forminstanceView.jsp (revision 38048) @@ -0,0 +1,62 @@ +<%@ page contentType="text/html; charset=UTF-8"%> + +<%@ include file="/common/taglibs.jsp"%> + +<% + request.setAttribute("userName",AcegiHelper.getLoginUser().getUserFullName()); +%> + + + + +设备巡检记录 + + +<%@ include file="/common/includeExtJsAndCss.jsp"%> + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ + +
+ + \ No newline at end of file