var tracywindyOperationTable = function(config) { //表格数据对象名称,删除,修改,添加成功后提示信息子段 var entityPromitTable = config.tableComment; //添加,修改,删除时请求的controller名称 var constantFlagTable = config.constantFlagTable; var enabledPromit = config.enabledPromit || "启用"; var enabledDefaultValue = config.enabledDefaultValue || ""; var disabledPromit = config.disabledPromit || "停用"; var separator = config.separator || "  "; var isNeedEnabled = config.isNeedEnabled || false; var isNeedPasswordReset = (false == config.isNeedPasswordReset) ? false : true; //页面加载完成时是否显示查询区域 var showQueryAreaOnDocumentReady = config.showQueryAreaOnDocumentReady||false; var windowContainerIdTable = config.formContainerId || "id_detailInfoWindowContainer"; var $form = jQuery("#" + windowContainerIdTable + " form"); var prefixMVC = config.prefixMVC || "acl"; var suffixMVC = config.suffixMVC || ".acl"; var otherOper = config.otherOper || function(value, tableObj, columnName, columnIndex, rowData) { return ""; }; //表格数据默认增删改查等操作按钮 var operButtons = ('undefined' == typeof(config.operButtons)) ? "新增|修改|删除": config.operButtons; //config.operButtons||""; config.isCheck = (false == config.isCheck) ? false: true; //行选中模式,单选还是多选,默认单选 config.checkType = config.checkType || "radio"; var operButtonsMapping = { "新增": { iconCls: 'icon-add', html: '新增', handler: function(table) { table.addEntity(); } }, "修改": { iconCls: 'icon-update', html: '修改', handler: function(table) { table.updateEntity(); } }, "删除": { iconCls: 'icon-remove', html: '删除', handler: function(table) { table.removeEntity(); } }, "全局搜索": { isHtml: true, html: '全局搜索:' }, "状态": { isHtml: true, html: '' + entityPromitTable + '状态:' } /*, "重置密码":{ iconCls:'icon-minus', html:'重置密码', handler:function(table){ table.resetPassword(); } }*/ }; //var formIdTable = config.formId||"id_detailInfoForm"; var windowTop = config.windowTop || 50; var scrollWindowTopContainer = config.scrollWindowTopContainer; var $tools = []; /* var isNeedGlobalQuery = (false == config.isNeedGlobalQuery) ? false : true ; if(isNeedGlobalQuery){ $tools.push({ isHtml:true, html:'全局搜索:' }); $tools.push(operButtonsMapping["全局搜索"]); $tools.push('-'); } if(isNeedEnabled){ if(isNeedGlobalQuery){ $tools.push('-'); } $tools.push({ isHtml:true, html:''+entityPromitTable+'状态:' }); $tools.push(operButtonsMapping["状态"]); config["toolsAdd"] = 65; } $tools.push({ iconCls:'icon-plus', html:'新增', handler:function(table){ table.addEntity(); } }); $tools.push('-');*/ var isNeedGlobalQuery = false; var isNeedEnabledQuery = false; var operButtonsArr = operButtons.split("|"); for (var i = 0; i < operButtonsArr.length; i++) { var toolsItem = operButtonsArr[i]; if (toolsItem) { var toolsItemObj = operButtonsMapping[toolsItem.replace(/\s/g, "")]; if ("全局搜索" == toolsItem.replace(/\s/g, "")) { isNeedGlobalQuery = true; } if ("状态" == toolsItem.replace(/\s/g, "")) { isNeedEnabledQuery = true; } if (toolsItemObj) { $tools.push(toolsItemObj); $tools.push('-'); } } } if (config.tools) { for (var i = 0; i < config.tools.length; i++) { $tools.push(config.tools[i]); } } config["tools"] = $tools; config["fitColumnSizeAdd"] = 8; if (config.columns) { var isFound = false; if (isNeedEnabled) { for (var index = 0; index < config.columns.length; index++) { if (config.columns[index].name == "enabled") { isFound = true; break; } } if (!isFound) { config.columns.push({ header: entityPromitTable + '状态', name: 'enabled', renderer: function(value, tableObj, columnName, columnIndex, rowData) { var content = "{0}{1}标记为{3}"; var rowIndex = rowData.rowIndex; var re = ""; if ("true" == value) { re = (content.replace("{0}", enabledPromit)).replace("{1}", separator).replace("{2}", rowIndex).replace("{3}", disabledPromit); } else { re = (content.replace("{0}", disabledPromit)).replace("{1}", separator).replace("{2}", rowIndex).replace("{3}", enabledPromit); } return re; } }); } } isFound = false; for (var index = 0; index < config.columns.length; index++) { if (config.columns[index].name == "oper") { isFound = true; break; } } if ((!isFound) && ("User" == constantFlagTable) && isNeedPasswordReset) { config.columns.splice(0, 0, { header: '操作', name: 'oper', renderer: function(value, tableObj, columnName, columnIndex, rowData) { var base = "{2}{3}"; var updateFlag = "修改"; var updateClickFunc = "updateEntity"; var removeFlag = "删除"; var removeClickFunc = "removeEntity"; var resetFlag = "重置密码为6个1"; var resetClickFunc = "resetPassword"; var rowIndex = rowData.rowIndex; var separator = "  "; var updateOper = base.replace("{0}", updateClickFunc).replace("{1}", rowIndex).replace("{2}", updateFlag).replace("{3}", separator); var removeOper = base.replace("{0}", removeClickFunc).replace("{1}", rowIndex).replace("{2}", removeFlag).replace("{3}", separator); var resetOper = base.replace("{0}", resetClickFunc).replace("{1}", rowIndex).replace("{2}", resetFlag).replace("{3}", separator); //var re = updateOper+removeOper; var re = ""; if ("User" == constantFlagTable) { re += resetOper; } re += (separator + otherOper(value, tableObj, columnName, columnIndex, rowData)); return re; } }); } } if (("User" == constantFlagTable)&&isNeedPasswordReset) { var lockedNames = []; if (config.lockedNames) { lockedNames = config.lockedNames; } lockedNames.splice(0, 0, 'oper'); config.lockedNames = lockedNames; } var table = new tracywindyTable(config); if (isNeedEnabledQuery) { var combo = new tracywindyComboBox({ id: 'id_' + table.id + '_enabled_combo', renderTo: 'id_' + table.id + '_enabled_combo_container', loadMode: 'local', datas: [{ title: enabledPromit, name: '1' }, { title: disabledPromit, name: '0' }], readOnly: true, width: 60, topAdd: 0, leftAdd: 0, displayField: 'title', valueField: 'name', leftAdd: 0, value: enabledDefaultValue, onSelect: function(combo) { table.setParams({ enabled: combo.getValue() }); table.reload(); } }); } if (isNeedGlobalQuery) { jQuery("#" + config.id + "id_queryWorkflowsTableInput").keypress(function(e) { var code = e.keyCode || e.charCode; if (13 == code) { table.setParams({ queryText: this.value.toUpperCase() }); table.reload(); } }); } var operFlagTable = ""; var operPromitTable = ""; var loadMask_addTable = null; var loadMask_updateTable = null; var loadMask_removeTable = null; var loadMask_resetTable = null; var loadMask_enabledTable = null; var resetFormTable = function(table) { clearForm($form[0]); $form.find("input[name='enabled']").val("true"); for (var p in tracywindyObject) { var obj = tracywindyObject[p]; if ("combobox" == obj.objectType) { var renderToInner = $form.find("#" + obj.renderToObj.id)[0]; if (renderToInner) { obj.setValue(''); } } } }; var loadFormDataTable = function(table, rowIndex) { //resetFormTable(); var currentRowData = table.getRowDataAt(rowIndex); var arr = $form[0].elements; jQuery.each(arr, function(k, v) { var name = v.name; var realValue = currentRowData[name.toLowerCase()]; if (name && ("undefined" != typeof(realValue))) { if (("INPUT" == v.tagName) && (("RADIO" == (v.getAttribute("type") || "").toUpperCase()) || ("CHECKBOX" == (v.getAttribute("type") || "").toUpperCase()))) { var valueArr = realValue.split(","); for (var i = 0; i < valueArr.length; i++) { var value_ = valueArr[i]; if (v.value == value_) { v.checked = true; } } } else { v.value = currentRowData[name.toLowerCase()]; } } }); if (config.loadFormDataCallBack) { config.loadFormDataCallBack(table, $form, rowIndex); } }; var defaultCallback = function(table, responseText) { //继承孙传良修改 responseText = responseText.responseText||""; responseText = responseText.replace(/(^\s+)|(\s+$)/g, ""); if (responseText != '') { alert(responseText); } else { alert(("{0}" + entityPromitTable + "成功").replace("{0}", operPromitTable)); } }; var successCallBack = function(table, responseText) { //优先用户回调,再默认回调 if (config.successCallBack) { config.successCallBack(table, responseText); } defaultCallback(table, responseText); table.reload(); }; var validateForm = function(table) { if ("undefined" != typeof(config.validateFrom)) { if (!config.validateFrom(table, $form)) { return false; } } return Validator.Validate($form[0], 1, false); }; var addValidate = config.addValidate || function(table, $form) { return true; }; var addEntity = function() { if (!addValidate(table, $form)) { return; } resetFormTable(); var cur_date = getCurDate(new Date()); $("form input[isDefaultDate='true']").each(function(i, tinput) { tinput.value = cur_date; }); if (config.resetFormCallback) { config.resetFormCallback(table, $form, "add"); } operFlagTable = "add"; operPromitTable = "新增"; showWindowTable(table,$form,operFlagTable); }; table.addEntity = addEntity; var updateEntity = function(rowIndex) { var checkedRowDatas = this.getCheckedRowDatas(); if (0 == checkedRowDatas.length) { alert("请选择需要修改的记录"); return; } if (1 < checkedRowDatas.length) { alert("只能选择单行记录进行修改"); return; } rowIndex = checkedRowDatas[0].rowIndex; resetFormTable(); if (config.resetFormCallback) { config.resetFormCallback(table, $form, "update"); } loadFormDataTable(table, rowIndex); operFlagTable = "update"; operPromitTable = "修改"; showWindowTable(table,$form,operFlagTable); }; table.updateEntity = updateEntity; var removeEntity = function(rowIndex) { var checkedRowDatas = this.getCheckedRowDatas(); if (0 == checkedRowDatas.length) { alert("请选择需要删除的记录"); return; } if (1 < checkedRowDatas.length) { alert("只能选择单行记录进行删除"); return; } rowIndex = checkedRowDatas[0].rowIndex; resetFormTable(); loadFormDataTable(table, rowIndex); operFlagTable = "remove"; operPromitTable = "删除"; operationTable(); }; table.removeEntity = removeEntity; var resetPassword = function(rowIndex) { /*var checkedRowDatas = this.getCheckedRowDatas(); if(0 == checkedRowDatas.length){ alert("请选择需要重置密码的记录"); return; } if(1 < checkedRowDatas.length){ alert("只能选择单行记录进行重置密码"); return; } rowIndex = checkedRowDatas[0].rowIndex;*/ resetFormTable(); loadFormDataTable(table, rowIndex); operFlagTable = "reset"; operPromitTable = "重置密码"; operationTable(); }; table.resetPassword = resetPassword; var updateEnabledTable = function(rowIndex) { resetFormTable(); loadFormDataTable(table, rowIndex); operFlagTable = "enabled"; operPromitTable = "更改"; operationTable(); }; table.updateEnabledTable = updateEnabledTable; function showWindowTable(table,$form,operFlagTable) { // showWindowTable(table,$form,operFlagTable); if(config.beforeShowWindowCallBack){ if(!config.beforeShowWindowCallBack(table,$form,operFlagTable)){ return; } } var currentWindowTop = windowTop; if(scrollWindowTopContainer){ var currentScrollContainer = scrollWindowTopContainer; if (!(typeof(scrollWindowTopContainer) == 'object')) { currentScrollContainer = document.getElementById(scrollWindowTopContainer); } currentWindowTop = windowTop+currentScrollContainer.scrollTop; } currentWindowTop+=document.body.scrollTop; var $window = jQuery("#" + windowContainerIdTable); $window.show(); $window.dialog({ top: currentWindowTop, autoScroll: true }); $window.dialog('open'); if (config.afterShowWindowCallBack) { config.afterShowWindowCallBack($form); } } var operationTable = function() { if (operFlagTable != "remove" && !validateForm(table)) { //孙传良 修改 删除时不做校验 return; } if (!window.confirm(("确认{0}当前" + entityPromitTable + "么?").replace("{0}", operPromitTable))) { return; } else { //用户增删改查操作 var operMethod = operFlagTable + constantFlagTable; var loadMaskMsg = ("正在{0}" + entityPromitTable + " 请稍后... ").replace("{0}", operPromitTable); var currentLoadMask = null; switch (operFlagTable) { case "add": { if (null == loadMask_addTable) { loadMask_addTable = new tracywindyLoadMask(document.body, loadMaskMsg); } currentLoadMask = loadMask_addTable; break; } case "update": { if (null == loadMask_updateTable) { loadMask_updateTable = new tracywindyLoadMask(document.body, loadMaskMsg); } currentLoadMask = loadMask_updateTable; break; } case "remove": { if (null == loadMask_removeTable) { loadMask_removeTable = new tracywindyLoadMask(document.body, loadMaskMsg); } currentLoadMask = loadMask_removeTable; break; } case "reset": { if (null == loadMask_resetTable) { loadMask_resetTable = new tracywindyLoadMask(document.body, loadMaskMsg); } currentLoadMask = loadMask_resetTable; operMethod = operFlagTable + "Password"; break; } case "enabled": { if (null == loadMask_enabledTable) { loadMask_enabledTable = new tracywindyLoadMask(document.body, loadMaskMsg); } currentLoadMask = loadMask_enabledTable; operMethod = "update" + constantFlagTable + "Enabled"; break; } default: { if (null == loadMask_updateTable) { loadMask_updateTable = new tracywindyLoadMask(document.body, loadMaskMsg); } currentLoadMask = loadMask_updateTable; break; } } currentLoadMask.show(); var url = getRootPath() + "/" + prefixMVC + "/{0}".replace("{0}", operMethod) + suffixMVC; var params = $form.tracywindySerializeFormToJsonObject(true); if (config.beforeSubmitData) { config.beforeSubmitData($form, params); } ajaxRequest({ url: url, params: params, timeout: 30 * 1000, success: function(res) { if(config.submitReturnCallBack){ config.submitReturnCallBack(table,("{0}" + entityPromitTable + "成功").replace("{0}", operPromitTable),res.responseText,windowContainerIdTable); }else{ try { jQuery("#" + windowContainerIdTable).dialog('close'); } catch(e) {} successCallBack(table, res); } currentLoadMask.hide(); } }); } }; table.operationTable = operationTable; };