"use script"; //开发环境建议开启严格模式 //对应widget.js中MyWidget实例化后的对象 var thisWidget; //当前选择的图层 var selectedLayer; //where条件的配置 var whereCfg; //当前页面业务 function initWidgetView(_thisWidget) { thisWidget = _thisWidget; $.getJSON("config.json", function (data) { whereCfg = data.where; //记录查询条件配置 var layersCfg = data.layers; var overlayLayers = {}; var zNodes = []; var defSelected; for (var i = 0; i < layersCfg.length; i++) { var item = layersCfg[i]; if (item.name == null || item.name == "") { continue; } var node = { text: item.name, id: item.id || 999 + i, pId: item.pid || -1, }; if (item.url == null) { node.iconCls = "icon-muyao-folder"; node.state = item.open == "true" ? "open" : "closed"; } else { if (defSelected == null) { defSelected = node.id; } //默认选择第一个 node.iconCls = "icon-muyao-shape_move_forwards"; overlayLayers[node.id] = item; } zNodes.push(node); } $("#queryonewhere_cmb_layer").combotree({ width: 308, data: zNodes, loadFilter: function (rows) { return convertTree(rows); }, onChange: function (newValue, oldValue) { selectedLayer = null; var layer = overlayLayers[newValue]; if (layer == null) { alert("请不要选择分组,请重新选择图层!"); $("#queryonewhere_cmb_layer").combotree("setValue", oldValue); return; } selectedLayer = layer; var hasCfgWhere = selectedLayer.columnsShow && selectedLayer.columnsShow.where; var hasCfgTable = selectedLayer.columnsShow && selectedLayer.columnsShow.table; var columnsTbl = []; var columnsWhere = []; //设置查询结果面板 var idcol = {}; idcol["name"] = "序号"; idcol["field"] = "rowIndex"; columnsTbl.push(idcol); for (var i = 0; i < selectedLayer.columns.length; i++) { var column = selectedLayer.columns[i]; if (!column.field) { continue; } column.editable = true; if (!hasCfgTable || selectedLayer.columnsShow.table.indexOf(column["field"]) != -1) { column.title = column.name; columnsTbl.push(column); } if (!hasCfgWhere || selectedLayer.columnsShow.where.indexOf(column["field"]) != -1) { columnsWhere.push(column); } } if (columnsTbl.length == 2) { columnsTbl[1].width = "100%"; } thisWidget.changeSelectedLayer(selectedLayer); $("#queryonewhere_table").datagrid({ columns: [columnsTbl], data: [], }); //设置字段列表 $("#queryonewhere_cmb_col_name").combobox({ data: columnsWhere, valueField: "field", textField: "name", multiple: false, //不允许多选 editable: true, //禁止编辑 onChange: function (value) { var item = getColumnCfgItem(value); if (item == null) { return; } var type = item.type || "text"; $("#queryonewhere_cmb_col_where").combobox({ data: whereCfg[type], multiple: false, //不允许多选 editable: false, //禁止编辑 width: 100, valueField: "field", textField: "name", }); $("#queryonewhere_cmb_col_where").combobox("setValue", whereCfg[type][0]["field"]); //默认选择第1项 }, }); $("#queryonewhere_cmb_col_name").combobox("setValue", selectedLayer.columns[0]["field"]); //默认选择第1项 //设置完成 }, }); $("#queryonewhere_cmb_layer").combotree("setValue", defSelected); }); $("#queryonewhere_cmb_col_name").combobox({ width: 100, }); $("#queryonewhere_txt_col_val").textbox({ width: 100, }); //切换选择区域方式 $('input:radio[name="queryonewhere_drawtype"]').change(function () { var drawtype = $('input:radio[name="queryonewhere_drawtype"]:checked').val(); switch (drawtype) { default: break; case "0": $("#drawPolyView").hide(); thisWidget.clearDraw(); break; case "1": $("#drawPolyView").hide(); thisWidget.clearDraw(); break; case "2": $("#drawPolyView").show(); break; } }); //框选查询 矩形 $("#drawRectangle").click(function () { thisWidget.drawRectangle(); }); //框选查询 多边 $("#drawPolygon").click(function () { thisWidget.drawPolygon(); }); //框选查询 圆 $("#drawCircle").click(function () { thisWidget.drawCircle(); }); $("#queryonewhere_table").datagrid({ singleSelect: true, pagination: true, rownumbers: false, height: getHeight(), fitColumns: true, onClickRow: function (rowIndex, rowData) { thisWidget.flyTo(rowData); }, }); $("#btnExQueryOneWhere").click(function () { excuteSqlQuery(); }); } //获取指定字段的配置信息 function getColumnCfgItem(fieldvalue) { if (selectedLayer == null) { return null; } for (var i = 0; i < selectedLayer.columns.length; i++) { var thisfield = selectedLayer.columns[i]; if (thisfield.field == fieldvalue) { return thisfield; } } return null; } function convertTree(rows) { function exists(rows, parentId) { for (let i = 0; i < rows.length; i++) { if (rows[i].id == parentId) { return true; } } return false; } var nodes = []; // get the top level nodes for (let i = 0; i < rows.length; i++) { let row = rows[i]; if (!exists(rows, row.pId)) { nodes.push({ id: row.id, text: row.text, }); } } let toDo = []; for (let i = 0; i < nodes.length; i++) { toDo.push(nodes[i]); } while (toDo.length) { let node = toDo.shift(); // the parent node // get the children nodes for (let i = 0; i < rows.length; i++) { let row = rows[i]; if (row.pId == node.id) { let child = { id: row.id, text: row.text }; if (node.children) { node.children.push(child); } else { node.children = [child]; } toDo.push(child); } } } return nodes; } function excuteSqlQuery() { thisWidget.clearShowFeature(); if (selectedLayer == null) { toastr.warning("请选择图层"); return; } var drawtype = $('input:radio[name="queryonewhere_drawtype"]:checked').val(); var col_name = $("#queryonewhere_cmb_col_name").combobox("getValue"); var col_where = $("#queryonewhere_cmb_col_where").combobox("getValue"); var col_val = $("#queryonewhere_txt_col_val").textbox("getValue"); if (!thisWidget.hasDraw() && drawtype == "2") { toastr.warning("请在地图上鼠标单击绘制限定范围!"); return; } var sqlstring; if (col_val != null && col_val.length > 0) { if (col_name == null || col_name.length == 0) { toastr.warning("请选择需要查询的字段"); return; } if (col_where == null || col_where.length == 0) { toastr.warning("请选择查询条件方式"); return; } var fieldtype = "text"; var item = getColumnCfgItem(col_name); if (item != null && item.type) { fieldtype = item.type; } if (fieldtype == "number") { sqlstring = col_name + " " + col_where + " " + col_val + " "; } else { if (col_where == "like") { sqlstring = col_name + " " + col_where + " '%" + col_val + "%' "; } else { sqlstring = col_name + " " + col_where + " '" + col_val + "' "; } } } thisWidget.query({ url: selectedLayer.url, where: sqlstring, extenttype: drawtype, }); } function clearResult() { $("#queryonewhere_table").datagrid("loadData", { total: 0, rows: [] }); } function showResult(arrResultData) { $("#queryonewhere_table").datagrid("loadData", arrResultData.slice(0, 10)); var pager = $("#queryonewhere_table").datagrid("getPager"); pager.pagination({ total: arrResultData.length, onSelectPage: function (pageNo, pageSize) { var start = (pageNo - 1) * pageSize; var end = start + pageSize; $("#queryonewhere_table").datagrid("loadData", arrResultData.slice(start, end)); pager.pagination("refresh", { total: arrResultData.length, pageNumber: pageNo, }); }, }); } function getHeight() { return $(window).height() - 90; }