123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348 |
-
- 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 = "<table";
- return table.concat(" name='", name, "'>", "</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 = '<div class="left_query">';
- $.each(columns, function (i, column) {
- leftQuery = leftQuery.concat(column.text + ":");
- leftQuery = leftQuery.concat("<input type='text' name='" + column.feild + "'/> ");
- });
- leftQuery = leftQuery.concat('<a href="javascript:void(0);" name="btnSelectOk" >查询</a> ');
- leftQuery = leftQuery.concat("</div>");
- return leftQuery;
- }
- function closeWin() {
- $((rightTopQuey.find("a"))[2]).click();
- }
- this.show = function () {
- if (!hasEasyUI("div[name='" + guid + "winWarp2']")) {
- var warpElement = "<div class='select_warp clear' name='" + guid + "winWarp2'></div>";
- 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",
- "<div class='select_top postion_border panel-margin custompanel'></div>", warp);
- var elementBottom = createElement(".selectOrg_bottom",
- "<div class='selectOrg_bottom postion_border forMultiple custompanel'></div>", warp);
- var top_panel_warp = createElement("div[panel_postion='org_top']", "<div class='panel_Data' panel_postion='org_top'></div>", 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 = '<p class="select_button" pPostion="select_button"><a href="javascript:void(0);" name="btnSelect" >选择</a> <a href="javascript:void(0);" class="forMultiple" name="btnDel">删除</a>';
- rightQuery = rightQuery.concat(" <a href='javascript:void(0);' name='btnSelectOk' class='forMultiple'>确定</a></p>");
- rightTopQuey = createElement("p[pPostion='select_button']", rightQuery, elementTop);
- createLinkButton(rightTopQuey);
- var left_panel_warp = createElement("div[panel_postion='bottom_select']", "<div class='panel_Data select_Data' panel_postion='bottom_select'></div>", 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');
- }
- }
- }
|