var Selector = function (guid, title, colums, dataUrl, qparams, multipleChoice, handlers, getselectRows, IsAsyncPage, customQuery) { var win; var tree; var pitchOnDataGrid; var leftQuery; var rightTopQuey; var waitTable; getselectRows = getselectRows || function () { return undefined; } customQuery = customQuery || function () { } var hasEasyUI = function (elementTypeName) { if (window.top.$(elementTypeName).length > 0) { return true; } else { return false; } } //private 创建Html元素 var createElement = function (elementTypeName, elements, parentElments) { if (typeof parentElments != "undefined" && typeof elements == "string") { parentElments.append(elements); return parentElments.find(elementTypeName); } else { if (typeof elements == "string") return $(elements); } }; var createLinkButton = function (elements) { var links = elements.find("a"); for (var i = 0; i < links.length; i++) { $(links[i]).linkbutton(); } }; var createTableString = function (name) { var table = "", ""); }; var registEvent = function (target, eventType, handler) { target.unbind(eventType, handler); target.bind(eventType, handler); } //private 选择 var selectWait = function (node) { var selectItem = waitTable.datagrid("getChecked"); var exitRows = pitchOnDataGrid.datagrid("getRows"); if (!multipleChoice) { if (exitRows.length > 0 || selectItem.length > 1) { window.top.$.messager.alert("系统消息", "一次只能选择一个" + title); return; } } for (var i = 0; i < selectItem.length; i++) { if (!hasContainer(exitRows, selectItem[i])) pitchOnDataGrid.datagrid("appendRow", selectItem[i]); } if (!multipleChoice) closeWin(); }; function hasContainer(container, item) { var key = getKey(); for (i = 0; i < container.length; i++) { if (container[i][key] == item[key]) return true; } return false; } function getKey() { var key; $(colums.split(",")).each(function (i, column) { var keyValue = column.split(":"); if (keyValue[0] == "Key") { key = keyValue[1]; return; } }); return key; } function getQueryColumns() { var queryColumns = new Array(); $(colums.split(",")).each(function (i, column) { var keyValue = column.split(":"); if (keyValue.length == 4 && keyValue[3] == "query") { queryColumns.push({ text: keyValue[0], feild: keyValue[1] }); } }); return queryColumns; } function pagerFilter(data) { if (typeof data.length == 'number' && typeof data.splice == 'function') { // is array data = { total: data.length, rows: data }; } var dg = waitTable; var opts = dg.datagrid('options'); var pager = dg.datagrid('getPager'); // pager.pagination({ // onSelectPage: function (pageNum, pageSize) { // opts.pageNumber = pageNum; // opts.pageSize = pageSize; // pager.pagination('refresh', { // pageNumber: pageNum, // pageSize: pageSize // }); // dg.datagrid('loadData', data); // } // }); if (!data.originalRows) { data.originalRows = (data.rows); } var start = (opts.pageNumber - 1) * parseInt(opts.pageSize); var end = start + parseInt(opts.pageSize); data.rows = (data.originalRows.slice(start, end)); return data; } var InitGridFile = function (dataGrid, pagination, url, title) { var columnsStr = getColumnsJson(); return dataGrid.datagrid({ url: pagination ? url : "", queryParams: pagination ? getParamsJson() : "", pagination: pagination, loadFilter: (pagination == false || IsAsyncPage == true) ? function (d) { if (d.rows == undefined) d.rows = d; return d; } : pagerFilter, pageSize: 50, pageList: [5, 25, 50], title: title, height: pagination == false ? 200 : 230, width: 750, loadMsg: "请稍等....", singleSelect: !multipleChoice, columns: [$.parseJSON(columnsStr)], onLoadSuccess: (pagination && multipleChoice) ? loadSelectRows : function (data) { return data; } }); } function loadSelectRows(data) { //已选择的值和选择的列名 var selectParams = getselectRows(); if (selectParams == undefined) return; if (selectParams.selectRows != undefined && selectParams.selectRows != "") { var selectValues = selectParams.selectRows.split(";"); var valueField = selectParams.valueField; var rows = data.originalRows; var selectRows = new Array(); $(rows).each(function (i, j) { if ($.inArray(j[valueField].toString(), selectValues) >= 0) selectRows.push(j); }) pitchOnDataGrid.datagrid("loadData", selectRows); } else { pitchOnDataGrid.datagrid("loadData", []); } getselectRows = function () { return undefined; } return data; } var getColumnsJson = function () { var columnsStr = "[" $(colums.split(",")).each(function (i, column) { var keyValue = column.split(":"); columnsStr = columnsStr.concat('{"field":', "\"", keyValue[1], "\",", '"title":', "\"", keyValue[0], "\""); if (keyValue[0] == "Key") { columnsStr = columnsStr.concat(', "checkbox": "true"'); } if (keyValue[2] != undefined) { columnsStr = columnsStr.concat(', "width":', "\"", keyValue[2], "\""); } if (keyValue[3] == "hidden") { columnsStr = columnsStr.concat(', "hidden":', "true"); } columnsStr = columnsStr.concat(', "align":', "\"center\""); columnsStr = columnsStr.concat("},"); }); columnsStr = columnsStr.substring(0, columnsStr.length - 1); columnsStr = columnsStr.concat("]"); return columnsStr; } var getParamsJson = function () { var columnsStr = "{"; $(qparams.split(",")).each(function (i, item) { var keyValue = item.split(":"); columnsStr = columnsStr.concat("\"", keyValue[0], "\":"); columnsStr = columnsStr.concat("\"", keyValue[1], "\","); }); columnsStr = columnsStr.substring(0, columnsStr.length - 1); columnsStr = columnsStr.concat("}"); return $.parseJSON(columnsStr); } var deleteSelectUser = function () { var deleteSource = pitchOnDataGrid.datagrid("getChecked"); if (deleteSource.length > 0) { for (var i = 0; i < deleteSource.length; i++) { var rowIndex = pitchOnDataGrid.datagrid("getRowIndex", deleteSource[i]); pitchOnDataGrid.datagrid("deleteRow", rowIndex); } } else { window.top.$.messager.alert("系统消息", "未选中任何行!"); } }; var close = function () { var btnSelectOk = $((rightTopQuey.find("a"))[2]); btnSelectOk.unbind(); btnSelectOk.bind("click", function () { var selectUser = pitchOnDataGrid.datagrid("getData"); var rcount = pitchOnDataGrid.datagrid("getRows").length; if (rcount > 0) { if (handlers instanceof Array) { for (var i = 0; i < handlers.length; i++) { handlers[i](selectUser); } } else if (typeof handlers != "undefined") { handlers(selectUser); } } if (!multipleChoice && rcount > 0) { pitchOnDataGrid.datagrid("deleteRow", 0); } win.window("close"); }); }; var queryInfo = function () { var queryStr = new Array(); var columns = getQueryColumns(); columns.push({ feild: "keyword" }); $.each(columns, function (i, column) { var value = leftQuery.find("input[name='" + column.feild + "']").val(); queryStr.push("\"" + column.feild + "\":\"" + value + "\""); }); var params = $.parseJSON("{" + queryStr.join(",") + "}"); waitTable.datagrid('load', params); } var createQueryString = function () { var columns = getQueryColumns(); leftQuery = '
'; $.each(columns, function (i, column) { leftQuery = leftQuery.concat(column.text + ":"); leftQuery = leftQuery.concat("  "); }); leftQuery = leftQuery.concat('查询  '); leftQuery = leftQuery.concat("
"); return leftQuery; } function closeWin() { $((rightTopQuey.find("a"))[2]).click(); } this.show = function () { if (!hasEasyUI("div[name='" + guid + "winWarp2']")) { var warpElement = "
"; var warp = window.top.$(warpElement).appendTo(window.top.document.body); var wheight = 335; if (multipleChoice) wheight = 540; win = warp.window({ width: 775, height: wheight, modal: true, maximizable: false, collapsible: false, shadow: false, title: title + '信息选择', onBeforeOpen: function () { $('select:not(.easyui-combobox)').hide(); //IE6中解决select遮住问题 if (waitTable != undefined && multipleChoice) { loadSelectRows(waitTable.datagrid("getData")); } }, onBeforeClose: function () { $('select:not(.easyui-combobox)').show(); } }); leftQuery = createElement("div[class='left_query']", createQueryString(), warp); customQuery(leftQuery, $(leftQuery.find("a")[0])); var elementTop = createElement(".select_top", "
", warp); var elementBottom = createElement(".selectOrg_bottom", "
", warp); var top_panel_warp = createElement("div[panel_postion='org_top']", "
", elementTop); // top_panel_warp.panel({ // width: 750, // height: 235, // title: title + '信息', // closable: false, // collapsible: true, // minimizable: false, // maximizable: false // }); waitTable = createElement("table[name='waitSelectDataGrid']", createTableString("waitSelectDataGrid"), top_panel_warp); waitTable = (InitGridFile(waitTable, true, dataUrl, title + '信息')); createLinkButton(leftQuery); var rightQuery = '

选择  删除'; rightQuery = rightQuery.concat("  确定

"); rightTopQuey = createElement("p[pPostion='select_button']", rightQuery, elementTop); createLinkButton(rightTopQuey); var left_panel_warp = createElement("div[panel_postion='bottom_select']", "
", elementBottom); // var pitchOnPanel = left_panel_warp.panel({ // width: 750, // height: 220, // title: '已选' + title, // closable: false, // collapsible: true, // minimizable: false, // maximizable: false // }); var pitchOnTable = createElement("table[name='pitchOnSelectDataGrid']", createTableString("pitchOnSelectDataGrid"), left_panel_warp); pitchOnDataGrid = (InitGridFile(pitchOnTable, false, "", '已选' + title)); if (!multipleChoice) warp.find('.forMultiple').hide(); //查询 registEvent($((leftQuery.find("a")[0])), "click", queryInfo); //选择 registEvent($(rightTopQuey.find("a")[0]), "click", selectWait); //删除 registEvent($(rightTopQuey.find("a")[1]), "click", deleteSelectUser); //确认 close(handlers); } else { window.top.$("div[name='" + guid + "winWarp2']").window('open'); } } }