index.js 31 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814
  1. var loadGeoJson = {};
  2. var element;
  3. var table;
  4. var slider;
  5. var dom = document.getElementById("container");
  6. var myChart = echarts.init(dom);
  7. var option;
  8. var myCharts = {};
  9. var myTables = {};
  10. myChart.showLoading();
  11. var msurl = './json/市级_山西.json';
  12. var qxurl = './json/县级_山西.json';
  13. var namefield = "name";
  14. var valuefield = "Shape_Area";
  15. var codefield = "CODE";
  16. var statisticsInfoByXZQ;
  17. var xzqSlider;
  18. var resertEchartsParams = {};
  19. $(".loading").css("line-height", $(".loading").height() + "px");
  20. window.onload = function () {
  21. setTimeout(function () {
  22. layui.use(['form', 'layer', 'element', 'slider', 'table'], function () {
  23. element = layui.element;
  24. table = layui.table;
  25. slider = layui.slider;
  26. init();
  27. });
  28. $(".xzqBtn").click(function (e) {
  29. onTabClick(e);
  30. });
  31. }, 5);
  32. }
  33. function getGeoJson(url) {
  34. $.ajaxSettings.async = false;
  35. var geojson = null;
  36. $.get(url, function (results) {
  37. geojson = results;
  38. });
  39. return geojson;
  40. }
  41. function getXZQData() {
  42. var resultData;
  43. $.ajax({
  44. type: globleConfig.ajaxType,
  45. async: false,
  46. url: globleConfig.ajax,
  47. data: {
  48. "mtype": globleConfig.mtype,
  49. "dataBaseSelected": globleConfig.dataBaseSelected, // 所选数据库名称,
  50. "tableTypeSelected": globleConfig.tableTypeSelected,
  51. "tableDataSelected": XZQConfig.tableDataSelected,
  52. "dimensionSelected": JSON.stringify(XZQConfig.dimensionSelected),
  53. "measureSelected": JSON.stringify(XZQConfig.measureSelected),
  54. "aggregate": XZQConfig.aggregate,
  55. "filterdata": XZQConfig.filterdata,
  56. "queryFields": ""
  57. },
  58. datatype: 'json',
  59. success: function (res) {
  60. var resArr = res.split('||');
  61. if (resArr.length == 0) {
  62. console.log("数据请求失败!");
  63. } else if (resArr.length == 3) {
  64. if (resArr[2].split("^_^")[0] && resArr[2].split("^_^")[0] != "{}") {
  65. resultData = JSON.parse(resArr[2].split("^_^")[0]);
  66. }
  67. } else {
  68. if (resArr[0]) {
  69. resultData = JSON.parse(resArr[0]);
  70. }
  71. }
  72. },
  73. error: function (err) {
  74. console.log(err);
  75. if (err.status == 405)
  76. top.location.href = '/login/LoginNew.aspx';
  77. }
  78. });
  79. return resultData;
  80. }
  81. function init() {
  82. // var userinfo = getUserInfo();
  83. // if (!userinfo) {
  84. // console.error("专项统计模块获取登陆信息失败!");
  85. // return;
  86. // }
  87. windowResizeFun();
  88. var list = {};
  89. for (var attr in TDYTDM.classify) {
  90. var item = TDYTDM.classify[attr];
  91. for (var i = 0 ; i < item.length ; i++) {
  92. list[item[i]] = attr;
  93. }
  94. }
  95. TDYTDM["handle"] = list;
  96. resertEcharts("", "1");
  97. myChart.on('click', function (params) {
  98. if (params.name) {
  99. $(".loading").show();
  100. setTimeout(function () {
  101. resertEcharts(params.data.code, (parseInt(params.seriesName) + 1).toString(), params.name);
  102. },100);
  103. }
  104. });
  105. myChart.hideLoading();
  106. }
  107. function resertEcharts(xzq, type, name, year) {
  108. if (!year) {
  109. resertEchartsParams = {
  110. xzq: xzq,
  111. type: type,
  112. name: name
  113. }
  114. }
  115. if (!statisticsInfoByXZQ) {
  116. statisticsInfoByXZQ = getXZQData();
  117. if (statisticsInfoByXZQ) {
  118. var years = [];
  119. for (var attr in statisticsInfoByXZQ) {
  120. years.push(parseInt(attr));
  121. }
  122. years.sort(function (a,b){
  123. return a - b;
  124. });
  125. statisticsInfoByXZQ["years"] = years;
  126. }
  127. xzqSlider = slider.render({
  128. elem: '#' + XZQConfig.container,
  129. min: years[0],
  130. max: years[years.length - 1],
  131. theme: '#5470c6',
  132. //type: 'vertical', //垂直滑块
  133. showstep: true,
  134. change: function (data) {
  135. resertEcharts(null, null, null, data);
  136. }
  137. });
  138. statisticsInfoByXZQ["curYear"] = statisticsInfoByXZQ["years"][0];
  139. }
  140. var curYear = year ? year : statisticsInfoByXZQ["curYear"];
  141. $(".yearSpan").html(curYear + "年");
  142. statisticsInfoByXZQ["curYear"] = curYear;
  143. var list = [];
  144. var chartType = "";
  145. switch (resertEchartsParams.type) {
  146. case "1": //盟市
  147. var html = "<a class='xzqBtn' value='' type='1' >山西省</a>";
  148. elementTemplate(html);
  149. chartType = "MS";
  150. if (!loadGeoJson[chartType]) {
  151. loadGeoJson[chartType] = getGeoJson(msurl);
  152. }
  153. for (var i = 0; i < loadGeoJson[chartType].features.length; i++) {
  154. var info = loadGeoJson[chartType].features[i]["properties"];
  155. var code = info[codefield].substr(0, 4);
  156. var value = 0;
  157. for (var attr in statisticsInfoByXZQ[curYear]) {
  158. if (attr.toString().indexOf(code) == 0) {
  159. value += parseFloat(statisticsInfoByXZQ[curYear][attr]);
  160. }
  161. }
  162. list.push({
  163. name: info[namefield],
  164. value: value ? Math.round(value * 100) / 100 : 0,
  165. code: info[codefield]
  166. });
  167. }
  168. echarts.registerMap('MS', loadGeoJson[chartType]);
  169. break;
  170. case "2": //旗县
  171. var html = "<a class='xzqBtn' value='' type='1' >山西省</a>";
  172. html += "<a class='xzqBtn' value='" + resertEchartsParams.xzq + "' type='2' >" + resertEchartsParams.name + "</a>";
  173. elementTemplate(html);
  174. chartType = resertEchartsParams.xzq.length == 6 ? resertEchartsParams.xzq.substr(0, 4) : resertEchartsParams.xzq;
  175. if (!loadGeoJson["QX"]) {
  176. loadGeoJson["QX"] = getGeoJson(qxurl);
  177. }
  178. var list = [];
  179. var json = {
  180. type: "FeatureCollection",
  181. features: []
  182. };
  183. for (var i = 0; i < loadGeoJson["QX"].features.length; i++) {
  184. var info = loadGeoJson["QX"].features[i]["properties"];
  185. if (info[codefield].indexOf(chartType) > -1) {
  186. list.push({
  187. name: info[namefield],
  188. value: statisticsInfoByXZQ[curYear][info[codefield]] ? Math.round(parseFloat(statisticsInfoByXZQ[curYear][info[codefield]]) * 100) / 100 : 0,
  189. code: info[codefield]
  190. });
  191. json.features.push(loadGeoJson["QX"].features[i]);
  192. }
  193. }
  194. echarts.registerMap(chartType, json);
  195. break;
  196. case "3": //旗县
  197. var html = $(".layui-breadcrumb").text().split(">")[1];
  198. html = "<a class='xzqBtn' value='' type='1' >山西省</a><a class='xzqBtn' value='" + resertEchartsParams.xzq.substr(0, 4) + "' type='2' >" + html + "</a>";
  199. html += "<a class='xzqBtn' value='" + resertEchartsParams.xzq + "' type='3' >" + resertEchartsParams.name + "</a>";
  200. elementTemplate(html);
  201. chartType = resertEchartsParams.xzq;
  202. if (!loadGeoJson["QX"]) {
  203. loadGeoJson["QX"] = getGeoJson(qxurl);
  204. }
  205. var list = [];
  206. var json = {
  207. type: "FeatureCollection",
  208. features: []
  209. };
  210. for (var i = 0; i < loadGeoJson["QX"].features.length; i++) {
  211. var info = loadGeoJson["QX"].features[i]["properties"];
  212. if (info[codefield] == chartType) {
  213. list.push({
  214. name: info[namefield],
  215. value: statisticsInfoByXZQ[curYear][info[codefield]] ? Math.round(parseFloat(statisticsInfoByXZQ[curYear][info[codefield]]) * 100) / 100 : 0,
  216. code: info[codefield]
  217. });
  218. json.features.push(loadGeoJson["QX"].features[i]);
  219. break;
  220. }
  221. }
  222. echarts.registerMap(chartType, json);
  223. break;
  224. default:
  225. return $(".loading").hide();
  226. break;
  227. }
  228. list.sort(function (a, b) {
  229. return a.value - b.value
  230. });
  231. option = {
  232. title: {
  233. text: '{A| ' + XZQConfig.chartTitle + '}',
  234. x: 'left',
  235. //padding: [5, 5, 5, 5],
  236. textStyle: {
  237. align: 'center',
  238. rich: {
  239. A: {
  240. backgroundColor: {
  241. image: XZQConfig.titleImage.image,
  242. },
  243. width: XZQConfig.titleImage.width,
  244. height: XZQConfig.titleImage.height,
  245. color: "#5470c6",
  246. fontSize: 17,
  247. fontWeight: 'bold',
  248. verticalAlign: "middle",
  249. lineHeight: 50,
  250. left: 15
  251. }
  252. }
  253. },
  254. left: 15
  255. },
  256. tooltip: {
  257. trigger: 'item',
  258. show: true,
  259. formatter: function (data) {
  260. var total = 0;
  261. for (var i = 0 ; i < myChart.getOption().series[0].data.length ; i++) {
  262. total += myChart.getOption().series[0].data[i].value;
  263. }
  264. //return data.name + '<br/>' + XZQConfig.title + data.value + XZQConfig.unit;
  265. var per = Math.round(data.value / total * 10000) / 100;
  266. return data.name + '<br/>' + XZQConfig.title + data.value + XZQConfig.unit + '<br/>占比:' + per + "%";
  267. }
  268. },
  269. toolbox: {
  270. show: false,
  271. orient: 'vertical',
  272. left: 'right',
  273. top: 'center',
  274. feature: {
  275. saveAsImage: {}
  276. }
  277. },
  278. visualMap: {
  279. min: list[0].value,
  280. max: list[list.length - 1].value,
  281. text: ['高', '低'],
  282. realtime: false,
  283. calculable: true,
  284. inRange: {
  285. //color: ['#313695', '#4575b4', '#74add1', '#abd9e9', '#e0f3f8', '#ffffbf', '#fee090', '#fdae61', '#f46d43', '#d73027', '#a50026']
  286. //color: globleConfig.color
  287. color: ['#0000ff30', '#0000ff']
  288. },
  289. orient: 'vertical',
  290. right: 'right',
  291. bottom: 'bottom',
  292. },
  293. series: [{
  294. name: resertEchartsParams.type,
  295. type: 'map',
  296. roam: true,
  297. mapType: chartType, // 自定义扩展图表类型
  298. label: {
  299. show: true,
  300. //color: "blue",
  301. //fontStyle: 'normal',
  302. //fontWeight: 'normal',
  303. textBorderColor: "white",
  304. textBorderWidth: 1
  305. },
  306. itemStyle: {
  307. normal: {
  308. borderWidth:1,
  309. borderColor: '#ddd',//区域边框色
  310. //areaColor: '#FFDAB9',//区域背景色
  311. label: {
  312. show: true,
  313. //textBorderColor: "white",
  314. //textBorderWidth: 1,
  315. textStyle: {
  316. color: '#ffffff',//文字颜色
  317. fontSize:12 //文字大小
  318. }
  319. }
  320. },
  321. emphasis: { // 选中样式
  322. borderWidth:1,
  323. borderColor:'#00ffff',
  324. color: '#ffffff',
  325. label: {
  326. show: true,
  327. textStyle: {
  328. color: '#ff0000'
  329. }
  330. }
  331. }
  332. },
  333. data: list
  334. }]
  335. };
  336. myChart.clear();
  337. myChart.setOption(option);
  338. if (year) {
  339. var data = filterArray(myTables["myChartTable2"].config.dataStore, [{
  340. field: "QDRQ",
  341. value: year,
  342. type: "like"
  343. }]);
  344. myTables["myChartTable2"].reload({
  345. data: data
  346. }, false);
  347. } else {
  348. createVisualizationCharts(resertEchartsParams.xzq ? chartType : "")
  349. }
  350. }
  351. function elementTemplate(html) {
  352. $(".layui-breadcrumb").html(html);
  353. element ? element.render() : null;
  354. $(".xzqBtn").click(function (e) {
  355. onTabClick(e);
  356. });
  357. }
  358. function onTabClick(e) {
  359. $(".loading").show();
  360. setTimeout(function () {
  361. resertEcharts($(e.target).attr("value"), $(e.target).attr("type"), $(e.target).html());
  362. },50);
  363. }
  364. function createVisualizationCharts(xzq) {
  365. for (var attr in chartsConfig) {
  366. var params = chartsConfig[attr];
  367. if (!params.able) { continue; }
  368. var queryFields = "";
  369. if (params.queryFields) {
  370. for (var k = 0 ; k < params.queryFields.length ; k++) {
  371. queryFields += params.queryFields[k].name + ",";
  372. }
  373. queryFields = queryFields.substring(0, queryFields.length - 1);
  374. }
  375. var resultData;
  376. var where = globleConfig.XZQFIELD + " like '" + xzq + "%'"
  377. $.ajax({
  378. type: globleConfig.ajaxType,
  379. async: false,
  380. url: globleConfig.ajax,
  381. data: {
  382. "mtype": globleConfig.mtype,
  383. "dataBaseSelected": globleConfig.dataBaseSelected, // 所选数据库名称,
  384. "tableTypeSelected": globleConfig.tableTypeSelected,
  385. "tableDataSelected": params.tableDataSelected,
  386. "dimensionSelected": params.dimensionSelected ? JSON.stringify(params.dimensionSelected) : "",
  387. "measureSelected": params.measureSelected ? JSON.stringify(params.measureSelected) : "",
  388. "aggregate": params.aggregate,
  389. "filterdata": xzq ? (params.filterdata ? params.filterdata + " and " + where : where) : params.filterdata,
  390. "queryFields": queryFields
  391. },
  392. datatype: 'json',
  393. success: function (res) {
  394. var resArr = res.split('||');
  395. if (resArr.length == 0) {
  396. console.log("数据请求失败!");
  397. } else if (resArr.length == 3) {
  398. if (resArr[2].split("^_^")[0] && resArr[2].split("^_^")[0] != "{}") {
  399. resultData = JSON.parse(resArr[2].split("^_^")[0]);
  400. }
  401. } else {
  402. if (resArr[0]) {
  403. resultData = JSON.parse(resArr[0]);
  404. }
  405. }
  406. },
  407. error: function (err) {
  408. console.log(err);
  409. if (err.status == 405)
  410. top.location.href = '/login/LoginNew.aspx';
  411. }
  412. });
  413. if (resultData) {
  414. createVisualizationChartsHandle(params, resultData);
  415. } else {
  416. //$("#" + params.container).html(params.noText);
  417. alert(params.noText);
  418. }
  419. }
  420. $(".loading").hide();
  421. }
  422. function createVisualizationChartsHandle(params, resultData) {
  423. var id = params.container;
  424. var chartType = params.chartType;
  425. var field = params.dimensionSelected && params.dimensionSelected[0].FIELDNAME;
  426. var measure = params.measureSelected && params.measureSelected[0].FIELDNAME;
  427. var legend = params.dimensionSelected && params.dimensionSelected[0].COLUMN_NAME;
  428. var chartOption;
  429. switch (chartType) {
  430. case "bar":
  431. var xAxis = [];
  432. var series = [];
  433. for (var i = 0 ; i < resultData.length ; i++) {
  434. xAxis.push(resultData[i][field]);
  435. series.push({
  436. value: Math.round(parseFloat(resultData[i][measure]) * 100) / 100,
  437. itemStyle: {
  438. color: globleConfig.color[i] ? globleConfig.color[i] : randomColor()
  439. }
  440. })
  441. }
  442. chartOption = {
  443. title: {
  444. text: '{A| ' + params.title + '}',
  445. left: 10,
  446. textStyle: {
  447. rich: {
  448. A: {
  449. backgroundColor: {
  450. image: params.titleImage.image,
  451. },
  452. width: params.titleImage.width,
  453. height: params.titleImage.height,
  454. color: "#5470c6",
  455. fontSize: 16,
  456. fontWeight: 'bold',
  457. verticalAlign: "middle",
  458. lineHeight: 26,
  459. left: 15
  460. }
  461. }
  462. }
  463. },
  464. tooltip: {
  465. trigger: 'axis'
  466. },
  467. legend: {
  468. data: [legend],
  469. top: 35
  470. },
  471. toolbox: {
  472. show: true,
  473. orient: 'vertical',
  474. left: 'right',
  475. top: 'center',
  476. feature: {
  477. mark: { show: true },
  478. magicType: { show: true, type: ['line', 'bar'] },
  479. restore: { show: true },
  480. saveAsImage: { show: true }
  481. }
  482. },
  483. calculable: true,
  484. xAxis: [
  485. {
  486. type: 'category',
  487. data: xAxis
  488. }
  489. ],
  490. yAxis: [
  491. {
  492. type: 'value',
  493. name: params.unit,
  494. axisLine: { show: true },
  495. axisTick: { show: true }
  496. }
  497. ],
  498. grid: {
  499. top: 90,
  500. bottom: 30
  501. },
  502. series: [
  503. {
  504. name: legend,
  505. type: 'bar',
  506. data: series,
  507. markPoint: {
  508. data: [
  509. { type: 'max', name: '最大值' },
  510. { type: 'min', name: '最小值' }
  511. ]
  512. },
  513. markLine: {
  514. data: [
  515. { type: 'average', name: '平均值' }
  516. ]
  517. }
  518. }
  519. ]
  520. };
  521. break;
  522. case "line":
  523. if (params.dimensionSelected.length == 2) {//二维
  524. var years = [];
  525. var data = {};
  526. for (var attr in resultData) {
  527. years.push(attr);
  528. data[attr] = {};
  529. var item = resultData[attr];
  530. for (var e in item) {
  531. var key = TDYTDM.handle[e];
  532. if (!data[attr][key]) {
  533. data[attr][key] = 0;
  534. }
  535. data[attr][key] += Math.round(parseFloat(item[e]) * 100) / 100
  536. }
  537. for (var param in TDYTDM.classify) {
  538. if (!data[attr][param]) {
  539. data[attr][param] = 0;
  540. } else {
  541. data[attr][param] = Math.round(data[attr][param] * 100) / 100;
  542. }
  543. }
  544. }
  545. var seriesList = [];
  546. var legendList = [];
  547. for (var item in TDYTDM.classify) {
  548. legendList.push(item);
  549. var list = [];
  550. for (var i = 0 ; i < years.length ; i++) {
  551. list.push(data[years[i]][item]);
  552. }
  553. seriesList.push({
  554. name: item,
  555. type: 'line',
  556. data: list
  557. });
  558. }
  559. chartOption = {
  560. title: {
  561. text: '{A| ' + params.title + '}',
  562. left: 10,
  563. textStyle: {
  564. color: "#5470c6",
  565. fontSize: 16,
  566. verticalAlign: "middle",
  567. lineHeight: 26,
  568. rich: {
  569. A: {
  570. backgroundColor: {
  571. image: params.titleImage.image,
  572. },
  573. width: params.titleImage.width,
  574. height: params.titleImage.height,
  575. color: "#5470c6",
  576. fontSize: 16,
  577. fontWeight: 'bold',
  578. verticalAlign: "middle",
  579. lineHeight: 26,
  580. left: 15
  581. }
  582. }
  583. }
  584. },
  585. color: globleConfig.color,
  586. tooltip: {
  587. trigger: 'axis'
  588. },
  589. grid: {
  590. top: 90,
  591. left: 200,
  592. bottom: 30
  593. },
  594. legend: {
  595. data: legendList,
  596. orient: 'vertical',
  597. left: 'left',
  598. top: 'center',
  599. },
  600. toolbox: {
  601. show: true,
  602. orient: 'vertical',
  603. left: 'right',
  604. top: 'center',
  605. feature: {
  606. mark: { show: true },
  607. magicType: { show: true, type: ['line', 'bar'] },
  608. restore: { show: true },
  609. saveAsImage: { show: true }
  610. }
  611. },
  612. calculable: true,
  613. xAxis: [
  614. {
  615. type: 'category',
  616. boundaryGap: false,
  617. data: years
  618. }
  619. ],
  620. yAxis: [
  621. {
  622. type: 'value',
  623. name: params.unit,
  624. axisLine: { show: true },
  625. axisTick: { show: true }
  626. }
  627. ],
  628. series: seriesList
  629. };
  630. } else {
  631. var xAxis = [];
  632. var series = [];
  633. for (var i = 0 ; i < resultData.length ; i++) {
  634. xAxis.push(resultData[i][field]);
  635. series.push(Math.round(parseFloat(resultData[i][measure]) * 100) / 100);
  636. }
  637. chartOption = {
  638. title: {
  639. text: '{A| ' + params.title + '}',
  640. left: 10,
  641. textStyle: {
  642. color: "#5470c6",
  643. fontSize: 16,
  644. verticalAlign: "middle",
  645. lineHeight: 26,
  646. rich: {
  647. A: {
  648. backgroundColor: {
  649. image: params.titleImage.image,
  650. },
  651. width: params.titleImage.width,
  652. height: params.titleImage.height,
  653. color: "#5470c6",
  654. fontSize: 16,
  655. fontWeight: 'bold',
  656. verticalAlign: "middle",
  657. lineHeight: 26,
  658. left: 15
  659. }
  660. }
  661. }
  662. },
  663. tooltip: {
  664. trigger: 'axis'
  665. },
  666. color: globleConfig.color,
  667. legend: {
  668. data: [legend]
  669. },
  670. toolbox: {
  671. show: true,
  672. orient: 'vertical',
  673. left: 'right',
  674. top: 'center',
  675. feature: {
  676. mark: { show: true },
  677. magicType: { show: true, type: ['line', 'bar'] },
  678. restore: { show: true },
  679. saveAsImage: { show: true }
  680. }
  681. },
  682. grid: {
  683. top: 90,
  684. left: 200,
  685. bottom: 30
  686. },
  687. calculable: true,
  688. xAxis: [
  689. {
  690. type: 'category',
  691. boundaryGap: false,
  692. data: xAxis
  693. }
  694. ],
  695. yAxis: [
  696. {
  697. type: 'value',
  698. name: params.unit,
  699. axisLine: { show: true },
  700. axisTick: { show: true }
  701. }
  702. ],
  703. series: [
  704. {
  705. name: legend,
  706. type: 'line',
  707. data: series,
  708. markPoint: {
  709. data: [
  710. { type: 'max', name: '最大值' },
  711. { type: 'min', name: '最小值' }
  712. ]
  713. },
  714. markLine: {
  715. data: [
  716. { type: 'average', name: '平均值' }
  717. ]
  718. }
  719. }
  720. ]
  721. };
  722. }
  723. break;
  724. case "table":
  725. var cols = [];
  726. for (var k = 0 ; k < params.queryFields.length ; k++) {
  727. var name = params.queryFields[k].name;
  728. if (name.indexOf(" as ") > 0) {
  729. name = name.split(" as ")[1].replace(" ","")
  730. }
  731. cols.push({
  732. field: name,
  733. title: params.queryFields[k].alias,
  734. fixed: true,
  735. sort: true,
  736. minWidth: 120
  737. });
  738. }
  739. myTables[id] = table.render({
  740. elem: '#' + id,
  741. height: $($('#' + id).parent()).height(),
  742. toolbar: '#toolbarDemo',
  743. defaultToolbar: ['filter', 'exports', 'print'],
  744. data: resultData,
  745. dataStore: resultData,
  746. page: true, //开启分页
  747. cols: [cols],
  748. text: {
  749. none: '暂无数据'
  750. }
  751. });
  752. table.on('toolbar(' + id + ')', function (obj) {
  753. switch (obj.event) {
  754. case 'queryData':
  755. var fieldsList = [];
  756. for (var i = 0 ; i < $(".queryInput").length ; i++) {
  757. if ($($(".queryInput")[i]).val().replace(" ", "")) {
  758. fieldsList.push({
  759. field: $($(".queryInput")[i]).attr("field"),
  760. value: $($(".queryInput")[i]).val().replace(" ", ""),
  761. type: "like"
  762. });
  763. }
  764. }
  765. var data = filterArray(obj.config.dataStore, fieldsList);
  766. myTables[obj.config.id].reload({
  767. data: data
  768. }, false);
  769. for (var i = 0 ; i < fieldsList.length ; i++) {
  770. $(".queryInput[field$='" + fieldsList[i].field + "']").val(fieldsList[i].value);
  771. }
  772. break;
  773. default:
  774. break;
  775. };
  776. });
  777. table.on('row(' + id + ')', function (obj) {
  778. console.log(obj);
  779. });
  780. break;
  781. }
  782. if (chartOption) {
  783. if (!myCharts[id]) {
  784. myCharts[id] = echarts.init(document.getElementById(id));
  785. } else {
  786. myCharts[id].clear();
  787. }
  788. myCharts[id].setOption(chartOption);
  789. myCharts[id].on('click', function (params) {
  790. console.log(params);
  791. resertEcharts(null, null, null, parseInt(params.name));
  792. });
  793. }
  794. $(".loading").hide();
  795. }
  796. function randomColor() {//得到随机的颜色值
  797. var r = Math.floor(Math.random() * 256);
  798. var g = Math.floor(Math.random() * 256);
  799. var b = Math.floor(Math.random() * 256);
  800. return "rgb(" + r + "," + g + "," + b + ")";
  801. }