Index.cshtml 35 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034
  1. @{
  2. ViewBag.Title = "曲线分析";
  3. Layout = "~/Views/Shared/_LayoutIndex.cshtml";
  4. }
  5. <script src="~/Content/scripts/plugins/echarts/echarts.min.js" type="text/javascript"></script>
  6. <script>
  7. var dayEchart, monthEchart, yearEchart, nowEchart;
  8. $(function () {
  9. InitialPage();
  10. GetTree();
  11. $("#tabs").tabs();
  12. InitialDayEchart();
  13. GetMonthGrid();
  14. dayDevice.init();
  15. InitialMonthEchart();
  16. monthDevice.init();
  17. GetDayGrid();
  18. InitialYearEchart();
  19. yearDevice.init();
  20. GetYearGrid();
  21. InitialNowEchart();
  22. getNowData();
  23. nowDevice.init();
  24. });
  25. function getSelectedTabIndex() {
  26. return $("#tabs").tabs('option', 'active');
  27. }
  28. //初始化页面
  29. function InitialPage() {
  30. //layout布局
  31. $('#layout').layout({
  32. applyDemoStyles: true,
  33. onresize: function () {
  34. $(window).resize();
  35. }
  36. });
  37. //resize重设(表格、树形)宽高
  38. $(window).resize(function (e) {
  39. window.setTimeout(function () {
  40. $("#itemTree").setTreeHeight($(window).height() - 52);
  41. }, 200);
  42. e.stopPropagation();
  43. });
  44. $('.gridTable').setGridWidth($('.gridPanel').eq(0).width());
  45. $(".gridTable").setGridHeight($(window).height() - 141);
  46. $(".echatDiv").height(460);
  47. $(".echatDiv").width($('.gridPanel').eq(0).width() * 0.98);
  48. }
  49. //加载树
  50. var PointTreeCode = 0;
  51. function GetTree() {
  52. var item = {
  53. height: $(window).height() - 52,
  54. url: "/PipeNetworkManage/Meter/GetMeterTreeJson",
  55. onnodeclick: function (item) {
  56. PointTreeCode = item.id;
  57. //展开下级
  58. $(".bbit-tree-selected").children('.bbit-tree-ec-icon').trigger("click");
  59. },
  60. };
  61. //初始化
  62. $("#itemTree").treeview(item);
  63. }
  64. //AutoComplete
  65. var dayDevice = {
  66. init: function () {
  67. var width = $('#dayDevice').width();
  68. $('#dayDevice').autocomplete({
  69. source: function (request, response) {
  70. $.ajax({
  71. url: "/PipeNetworkManage/DeviceInfo/GetDeviceBySearch",
  72. type: "GET",
  73. data: { q: $('#dayDevice').val() },
  74. dataType: "json",
  75. success: function (data) {
  76. response($.map(data, function (item) {
  77. console.log(item);
  78. return {
  79. label: item.label,
  80. value: "dev" + item.value
  81. }
  82. }));
  83. }
  84. });
  85. },
  86. select: function (event, ui) {
  87. $("#dayDevice").val(ui.item.label);
  88. PointTreeCode = ui.item.value;
  89. return false;
  90. }
  91. });
  92. }
  93. };
  94. //AutoComplete
  95. var monthDevice = {
  96. init: function () {
  97. var width = $('#monthDevice').width();
  98. $('#monthDevice').autocomplete({
  99. source: function (request, response) {
  100. $.ajax({
  101. url: "/PipeNetworkManage/DeviceInfo/GetDeviceBySearch",
  102. type: "GET",
  103. data: { q: $('#monthDevice').val() },
  104. dataType: "json",
  105. success: function (data) {
  106. response($.map(data, function (item) {
  107. console.log(item);
  108. return {
  109. label: item.label,
  110. value: "dev" + item.value
  111. }
  112. }));
  113. }
  114. });
  115. },
  116. select: function (event, ui) {
  117. $("#monthDevice").val(ui.item.label);
  118. PointTreeCode = ui.item.value;
  119. return false;
  120. }
  121. });
  122. }
  123. };
  124. //AutoComplete
  125. var yearDevice = {
  126. init: function () {
  127. var width = $('#yearDevice').width();
  128. $('#yearDevice').autocomplete({
  129. source: function (request, response) {
  130. $.ajax({
  131. url: "/PipeNetworkManage/DeviceInfo/GetDeviceBySearch",
  132. type: "GET",
  133. data: { q: $('#yearDevice').val() },
  134. dataType: "json",
  135. success: function (data) {
  136. response($.map(data, function (item) {
  137. console.log(item);
  138. return {
  139. label: item.label,
  140. value: "dev" + item.value
  141. }
  142. }));
  143. }
  144. });
  145. },
  146. select: function (event, ui) {
  147. $("#yearDevice").val(ui.item.label);
  148. PointTreeCode = ui.item.value;
  149. return false;
  150. }
  151. });
  152. }
  153. };
  154. //AutoComplete
  155. var nowDevice = {
  156. init: function () {
  157. var width = $('#nowDevice').width();
  158. $('#nowDevice').autocomplete({
  159. source: function (request, response) {
  160. $.ajax({
  161. url: "/PipeNetworkManage/DeviceInfo/GetDeviceBySearch",
  162. type: "GET",
  163. data: { q: $('#nowDevice').val() },
  164. dataType: "json",
  165. success: function (data) {
  166. response($.map(data, function (item) {
  167. console.log(item);
  168. return {
  169. label: item.label,
  170. value: "dev" + item.value
  171. }
  172. }));
  173. }
  174. });
  175. },
  176. select: function (event, ui) {
  177. $("#nowDevice").val(ui.item.label);
  178. PointTreeCode = ui.item.value;
  179. return false;
  180. }
  181. });
  182. }
  183. };
  184. //初始化 日用水量 折线图
  185. function InitialDayEchart() {
  186. dayEchart = echarts.init(document.getElementById('dayChart'));
  187. option = {
  188. title: {
  189. text: '日用水量分析',
  190. x: 'center'
  191. },
  192. tooltip: {
  193. trigger: 'axis'
  194. },
  195. legend: {
  196. data: ['每时用水', '预测用水'],
  197. right: 80
  198. },
  199. grid: {
  200. left: '3%',
  201. right: '4%',
  202. bottom: '3%',
  203. containLabel: true
  204. },
  205. toolbox: {
  206. feature: {
  207. saveAsImage: {}
  208. }
  209. },
  210. xAxis: {
  211. type: 'category',
  212. interval: 0,
  213. boundaryGap: false,
  214. data: ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20', '21', '22', '23', '24']
  215. },
  216. yAxis: {
  217. name: "用水量(m³)",
  218. type: 'value'
  219. },
  220. series: [
  221. {
  222. name: '每时用水',
  223. type: 'line',
  224. data: []
  225. },
  226. {
  227. name: '预测用水',
  228. type: 'line',
  229. data: []
  230. }
  231. ]
  232. };
  233. dayEchart.setOption(option);
  234. }
  235. function GetDayGrid() {
  236. var $gridTable = $('#dayGridTable');
  237. $gridTable.jqGrid({
  238. url: "/PipeNetworkManage/CurvesAnalysis/GetHourFlow",
  239. datatype: "json",
  240. autowidth: true,
  241. height: 160,
  242. rownumbers: true,
  243. colModel: [
  244. { name: "DevName", label: "测点名称", width: 160, align: "center" },
  245. { name: "LedgerTime", label: "时间", width: 160, align: "center" },
  246. { name: "HourNetFlow", label: "用水量", width: 160, align: "center" }
  247. ],
  248. viewrecords: true,
  249. rowNum: 1000,
  250. gridview: true
  251. });
  252. //查询事件
  253. $("#btn_day_Search").click(function () {
  254. Loading(true);
  255. var dayTime = $("#dayTime").val();
  256. if (PointTreeCode==0) {
  257. dialogMsg('请选择测点!', 0);
  258. Loading(false);
  259. return;
  260. }
  261. if (dayTime.length <= 0) {
  262. dialogMsg('请选择时间!', 0);
  263. Loading(false);
  264. return;
  265. }
  266. var hourData = [];
  267. var maxHourFlow = 0;
  268. $.ajax({
  269. url: '/PipeNetworkManage/CurvesAnalysis/GetHourFlow',
  270. data: { deviceId: PointTreeCode, time: dayTime },
  271. cache: false,
  272. async: false,
  273. dataType: 'json',
  274. type: 'get',
  275. success: function (d) {
  276. hourData = d;
  277. }
  278. });
  279. $gridTable.jqGrid('clearGridData');
  280. $gridTable.jqGrid('setGridParam', {
  281. datatype: 'local',
  282. data: hourData
  283. }).trigger("reloadGrid");
  284. var hourAvg = [];
  285. $.ajax({
  286. url: '/PipeNetworkManage/CurvesAnalysis/GetHourAvgFlow',
  287. data: { deviceId: PointTreeCode, time: dayTime },
  288. chache: false,
  289. async: false,
  290. dataType: 'json',
  291. type: 'get',
  292. success: function (d) {
  293. hourAvg = d;
  294. }
  295. });
  296. var dataXY = [];
  297. var maxHourFlow = 0;
  298. for (var i = 0; i < hourData.length; i++) {
  299. if (parseFloat(hourData[i].HourNetFlow) > maxHourFlow) {
  300. maxHourFlow = parseFloat(hourData[i].HourNetFlow);
  301. }
  302. var tmp = [];
  303. tmp.push(hourData[i].LedgerTime);
  304. tmp.push(parseFloat(hourData[i].HourNetFlow));
  305. dataXY.push(tmp)
  306. }
  307. if (hourData.length == 0) {
  308. for (var i = 0; i < 24; i++) {
  309. var tmp = [];
  310. tmp.push(i);
  311. tmp.push(0);
  312. dataXY.push(tmp)
  313. }
  314. }
  315. var dataXY2 = [];
  316. for (var i = 0; i < 24; i++) {
  317. if (hourAvg[i] * 1.2 > maxHourFlow) {
  318. maxHourFlow = parseFloat(parseFloat(hourAvg[i] * 1.2).toFixed(2));
  319. }
  320. var tmp2 = [];
  321. tmp2.push(i);
  322. //tmp2.push(parseFloat(parseFloat(hourAvg[i] * 1.2).toFixed(2)));
  323. tmp2.push(parseFloat(parseFloat(hourAvg[i]).toFixed(2)));
  324. dataXY2.push(tmp2)
  325. }
  326. dayEchart.setOption({
  327. series: [{
  328. name: '每时用水',
  329. type: 'line',
  330. data: dataXY,
  331. },
  332. {
  333. name: '预测用水',
  334. type: 'line',
  335. data: dataXY2
  336. }]
  337. });
  338. Loading(false);
  339. });
  340. }
  341. //初始化 月用水量 折线图
  342. function InitialMonthEchart() {
  343. monthChart = echarts.init(document.getElementById('monthChart'));
  344. option = {
  345. title: {
  346. text: '月用水量分析',
  347. x: 'center'
  348. },
  349. tooltip: {
  350. trigger: 'axis'
  351. },
  352. legend: {
  353. data: ['每时用水'],
  354. right: '8%'
  355. },
  356. grid: {
  357. left: '3%',
  358. right: '4%',
  359. bottom: '3%',
  360. containLabel: true
  361. },
  362. toolbox: {
  363. feature: {
  364. saveAsImage: {}
  365. }
  366. },
  367. xAxis: {
  368. type: 'category',
  369. axisLabel: {
  370. interval: 0
  371. },
  372. boundaryGap: false,
  373. data: ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20', '21', '22', '23', '24', '25', '26', '27', '28', '29', '30', '31']
  374. },
  375. yAxis: {
  376. name: "用水量(m³)",
  377. type: 'value'
  378. },
  379. series: [
  380. {
  381. name: '每天用水',
  382. type: 'line',
  383. stack: '总量',
  384. data: []
  385. }
  386. ]
  387. };
  388. monthChart.setOption(option);
  389. }
  390. function GetMonthGrid() {
  391. var $gridTable = $('#monthGridTable');
  392. $gridTable.jqGrid({
  393. url: "",
  394. datatype: "json",
  395. autowidth: true,
  396. height: 160,
  397. rownumbers: true,
  398. colModel: [
  399. { name: "DevName", label: "测点名称", width: 160, align: "center" },
  400. { name: "LedgerTime", label: "时间", width: 160, align: "center" },
  401. { name: "HourNetFlow", label: "用水量", width: 160, align: "center" }
  402. ],
  403. viewrecords: true,
  404. rowNum: 1000,
  405. gridview: true
  406. });
  407. //查询事件
  408. $("#btn_month_Search").click(function () {
  409. Loading(true);
  410. var monthTime = $("#monthTime").val();
  411. if (PointTreeCode==0) {
  412. dialogMsg('请选择测点!', 0);
  413. return;
  414. }
  415. if (monthTime.length <= 0) {
  416. dialogMsg('请选择时间!', 0);
  417. return;
  418. }
  419. var dayData = [];
  420. var maxHourFlow = 0;
  421. $.ajax({
  422. url: '/PipeNetworkManage/CurvesAnalysis/GetDayFlow',
  423. data: { deviceId: PointTreeCode, time: monthTime },
  424. cache: false,
  425. async: false,
  426. dataType: 'json',
  427. type: 'get',
  428. success: function (d) {
  429. dayData = d;
  430. }
  431. });
  432. $gridTable.jqGrid('clearGridData');
  433. $gridTable.jqGrid('setGridParam', {
  434. datatype: 'local',
  435. data: dayData
  436. }).trigger("reloadGrid");
  437. var dataXY = [];
  438. var maxHourFlow = 0;
  439. for (var i = 0; i < dayData.length; i++) {
  440. if (parseFloat(dayData[i].HourNetFlow) > maxHourFlow) {
  441. maxHourFlow = parseFloat(dayData[i].HourNetFlow);
  442. }
  443. var tmp = [];
  444. tmp.push(dayData[i].LedgerTime);
  445. tmp.push(parseFloat(dayData[i].HourNetFlow));
  446. dataXY.push(tmp)
  447. }
  448. var arr = monthTime.split("-");
  449. var days = getDaysInMonth(arr[0], arr[1]);
  450. if (dayData.length == 0) {
  451. for (var i = 0; i < days; i++) {
  452. var tmp = [];
  453. tmp.push(i);
  454. tmp.push(0);
  455. dataXY.push(tmp)
  456. }
  457. }
  458. monthChart.setOption({
  459. series: [{
  460. name: '每天用水',
  461. type: 'line',
  462. data: dataXY
  463. }]
  464. });
  465. Loading(false);
  466. });
  467. }
  468. //初始化 年用水量 折线图
  469. function InitialYearEchart() {
  470. yearChart = echarts.init(document.getElementById('yearChart'));
  471. option = {
  472. title: {
  473. text: '年用水量分析',
  474. x: 'center'
  475. },
  476. tooltip: {
  477. trigger: 'axis'
  478. },
  479. legend: {
  480. data: ['每月用水'],
  481. right: '8%'
  482. },
  483. grid: {
  484. left: '3%',
  485. right: '4%',
  486. bottom: '3%',
  487. containLabel: true
  488. },
  489. toolbox: {
  490. feature: {
  491. saveAsImage: {}
  492. }
  493. },
  494. xAxis: {
  495. type: 'category',
  496. axisLabel: {
  497. interval: 0
  498. },
  499. boundaryGap: false,
  500. data: ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12']
  501. },
  502. yAxis: {
  503. name: "用水量(m³)",
  504. type: 'value'
  505. },
  506. series: [
  507. {
  508. name: '每月用水',
  509. type: 'line',
  510. stack: '总量',
  511. data: []
  512. }
  513. ]
  514. };
  515. yearChart.setOption(option);
  516. }
  517. function GetYearGrid() {
  518. var $gridTable = $('#yearGridTable');
  519. $gridTable.jqGrid({
  520. url: "",
  521. datatype: "json",
  522. autowidth: true,
  523. height: 160,
  524. rownumbers: true,
  525. colModel: [
  526. { name: "DevName", label: "测点名称", width: 160, align: "center" },
  527. { name: "LedgerTime", label: "时间", width: 160, align: "center" },
  528. { name: "HourNetFlow", label: "用水量", width: 160, align: "center" }
  529. ],
  530. viewrecords: true,
  531. rowNum: 1000,
  532. gridview: true
  533. });
  534. //查询事件
  535. $("#btn_year_Search").click(function () {
  536. var yearTime = $("#yearTime").val();
  537. if (PointTreeCode==0) {
  538. dialogMsg('请选择测点!', 0);
  539. return;
  540. }
  541. if (yearTime.length <= 0) {
  542. dialogMsg('请选择时间!', 0);
  543. return;
  544. }
  545. var yearData = [];
  546. var maxMonthFlow = 0;
  547. yearTime
  548. $.ajax({
  549. url: '/PipeNetworkManage/CurvesAnalysis/GetMonthFlow',
  550. data: { deviceId: PointTreeCode, time: yearTime },
  551. cache: false,
  552. async: false,
  553. dataType: 'json',
  554. type: 'get',
  555. success: function (d) {
  556. yearData = d;
  557. }
  558. });
  559. $gridTable.jqGrid('clearGridData');
  560. $gridTable.jqGrid('setGridParam', {
  561. datatype: 'local',
  562. data: yearData
  563. }).trigger("reloadGrid");
  564. var dataXY = [];
  565. var maxMonthFlow = 0;
  566. for (var i = 0; i < yearData.length; i++) {
  567. if (parseFloat(yearData[i].HourNetFlow) > maxMonthFlow) {
  568. maxMonthFlow = parseFloat(yearData[i].HourNetFlow);
  569. }
  570. var tmp = [];
  571. tmp.push(yearData[i].LedgerTime);
  572. tmp.push(parseFloat(yearData[i].HourNetFlow));
  573. dataXY.push(tmp)
  574. }
  575. if (yearData.length == 0) {
  576. for (var i = 0; i < 12; i++) {
  577. var tmp = [];
  578. tmp.push(i);
  579. tmp.push(0);
  580. dataXY.push(tmp)
  581. }
  582. }
  583. yearChart.setOption({
  584. series: [{
  585. name: '每月用水',
  586. type: 'line',
  587. data: dataXY
  588. }]
  589. });
  590. Loading(false);
  591. });
  592. }
  593. //获取选项卡ID
  594. function getSelectedTabIndex() {
  595. return $("#tabs").tabs('option', 'active');
  596. }
  597. //初始化 瞬时流量 折线图
  598. function InitialNowEchart() {
  599. nowChart = echarts.init(document.getElementById('nowChart'));
  600. // 指定图表的配置项和数据
  601. var option = {
  602. title: {
  603. text: '瞬时流量分析',
  604. x: 'center',
  605. align: 'right'
  606. },
  607. tooltip: {
  608. trigger: 'axis',
  609. formatter: function (params) {
  610. if (typeof params === 'object' && !isNaN(params.length)) {
  611. if (params[0].value == undefined || params[1].value == undefined) {
  612. return;
  613. } else if (params[1].value == 0) {
  614. return params[0].name + '<br/>'
  615. + params[0].seriesName + ' : ' + params[0].value + ' (m³/h)';
  616. } else {
  617. return params[0].name + '<br/>'
  618. + params[0].seriesName + ' : ' + params[0].value + ' (m³/h)<br/>'
  619. + params[1].seriesName + ' : ' + params[1].value + ' (Mpa)';
  620. }
  621. }
  622. },
  623. axisPointer: {
  624. animation: false
  625. }
  626. },
  627. legend: {
  628. data: ['瞬时流量', '压力'],
  629. x: 'right'
  630. },
  631. xAxis: {
  632. data: []
  633. },
  634. yAxis: [
  635. {
  636. name: '单位:m³/h',
  637. type: 'value'
  638. }, {
  639. name: '单位:Mpa',
  640. type: 'value'
  641. }
  642. ],
  643. series: [{
  644. name: '瞬时流量',
  645. type: 'line',
  646. data: [],
  647. markLine: {
  648. data: [
  649. { type: 'max', name: '最大值', itemStyle: { normal: { color: '#dc143c' } } },
  650. { type: 'min', name: '最小值', itemStyle: { normal: { color: '#dc143c' } } },
  651. { type: 'average', name: '平均值', itemStyle: { normal: { color: '#dc143c' } } }
  652. ]
  653. }
  654. }, {
  655. name: '压力',
  656. type: 'line',
  657. yAxisIndex: 1,
  658. lineStyle: {
  659. normal: {
  660. width: 2,
  661. color: '#FF0000'
  662. }
  663. },
  664. data: []
  665. }]
  666. };
  667. // 使用刚指定的配置项和数据显示图表。
  668. nowChart.setOption(option);
  669. //点击时间范围(今天、近7天、近一个月、近三个月)
  670. $("#time_horizon a.btn-default").click(function () {
  671. $("#time_horizon a.btn-default").removeClass("active");
  672. $(this).addClass("active");
  673. switch ($(this).attr('data-value')) {
  674. case "1"://今天
  675. $("#nowStartTime").val("@DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd HH:mm:ss")");
  676. $("#nowEndTime").val("@DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")");
  677. break;
  678. case "2"://近7天
  679. $("#nowStartTime").val("@DateTime.Now.AddDays(-7).ToString("yyyy-MM-dd")");
  680. $("#nowEndTime").val("@DateTime.Now.ToString("yyyy-MM-dd")");
  681. break;
  682. case "3"://近一个月
  683. $("#nowStartTime").val("@DateTime.Now.AddMonths(-1).ToString("yyyy-MM-dd")");
  684. $("#nowEndTime").val("@DateTime.Now.ToString("yyyy-MM-dd")");
  685. break;
  686. case "4"://自定义
  687. $("#nowStartTime").val("");
  688. $("#nowEndTime").val("");
  689. break;
  690. default:
  691. break;
  692. }
  693. });
  694. };
  695. function getNowData() {
  696. //查询事件
  697. $("#btn_now_Search").click(function () {
  698. var nowStartTime = $("#nowStartTime").val();
  699. var nowEndTime = $("#nowEndTime").val();
  700. if (PointTreeCode == 0) {
  701. dialogMsg('请选择测点!', 0);
  702. return;
  703. }
  704. if (nowStartTime.length <= 0 || nowEndTime.length <= 0) {
  705. dialogMsg('请选择时间!', 0);
  706. return;
  707. }
  708. var arrFlow = [];
  709. $.ajax({
  710. url: '/PipeNetworkManage/CurvesAnalysis/GetFlowRate',
  711. data: { deviceId: PointTreeCode, start: nowStartTime, end: nowEndTime },
  712. type: 'get',
  713. dataType: 'json',
  714. cache: false,
  715. async: false,
  716. success: function (d) {
  717. arrFlow = d;
  718. }
  719. });
  720. if (arrFlow.length == 0) {
  721. return;
  722. }
  723. var flowArray = new Array();
  724. var pressureArr = new Array();
  725. var timeArray = new Array();
  726. var maxFlow = 0;
  727. var devName = arrFlow.devName;
  728. var datas = arrFlow.devData;
  729. for (var i = 0; i < datas.length; i++) {
  730. flowArray.push(datas[i].FlowRate)
  731. pressureArr.push(datas[i].Pressure);
  732. timeArray.push(datas[i].FlowTime);
  733. }
  734. nowChart.setOption({
  735. xAxis: {
  736. data: timeArray.map(function (str) {
  737. return str.replace(' ', '\n')
  738. })
  739. },
  740. series: [{
  741. data: flowArray
  742. }, {
  743. data: pressureArr
  744. }]
  745. });
  746. });
  747. }
  748. function getDaysInMonth(year, month) {
  749. var currentMonth = new Date(year, month, 1);
  750. if (parseInt(month, 10) > 1) {
  751. var lastMonth = new Date(year, month - 1, 1);
  752. }
  753. else {
  754. var lastMonth = new Date(parseInt(year, 10) - 1, 12, 1);
  755. }
  756. var diffDays = currentMonth - lastMonth;
  757. return (diffDays / (24 * 60 * 60 * 1000));
  758. }
  759. </script>
  760. <div class="ui-layout" id="layout" style="height: 100%; width: 100%;">
  761. <div class="ui-layout-west">
  762. <div class="west-Panel">
  763. <div class="panel-Title">测点列表</div>
  764. <div id="itemTree"></div>
  765. </div>
  766. </div>
  767. <div class="ui-layout-center">
  768. <div class="center-Panel">
  769. <div id="tabs">
  770. <ul>
  771. <li><a href="#tabs-1">日用水量</a></li>
  772. <li><a href="#tabs-2">月用水量</a></li>
  773. <li><a href="#tabs-3">年用水量</a></li>
  774. <li><a href="#tabs-4">瞬时流量</a></li>
  775. </ul>
  776. <div id="tabs-1">
  777. <div class="titlePanel">
  778. <div class="title-search">
  779. <table>
  780. <tr>
  781. <td style="padding-left: 10px;">测点名称:
  782. </td>
  783. <td style="padding-left: 10px;">
  784. <input type="text" id="dayDevice" class="form-control easyui-combobox" />
  785. </td>
  786. <td style="padding-left: 10px;">请选择时间:
  787. </td>
  788. <td style="padding-left: 10px;">
  789. <input id="dayTime" readonly type="text" value="@LeaRun.Util.Time.GetDate(0)" class="form-control input-wdatepicker" onfocus="WdatePicker({maxDate:'%y-%M-%d',dateFmt:'yyyy-MM-dd'})" style="width:175px">
  790. </td>
  791. <td style="padding-left: 10px;">
  792. <a id="btn_day_Search" class="btn btn-primary">&nbsp;查&nbsp;&nbsp;询</a>
  793. </td>
  794. </tr>
  795. </table>
  796. </div>
  797. </div>
  798. <div class="gridPanel">
  799. <div class="printArea">
  800. <div class="grid-title">
  801. <div id="dayChart" class="echatDiv">
  802. </div>
  803. </div>
  804. <div id="gridPanel">
  805. <table id="dayGridTable" class="gridTable"></table>
  806. </div>
  807. </div>
  808. </div>
  809. </div>
  810. <div id="tabs-2">
  811. <div class="titlePanel">
  812. <div class="title-search">
  813. <table>
  814. <tr>
  815. <td style="padding-left: 10px;">测点名称:
  816. </td>
  817. <td style="padding-left: 10px;">
  818. <input type="text" id="monthDevice" class="form-control easyui-combobox" />
  819. </td>
  820. <td style="padding-left: 10px;">请选择时间:
  821. </td>
  822. <td style="padding-left: 10px;">
  823. <input id="monthTime" readonly type="text" value="@LeaRun.Util.Time.Now.Year-@LeaRun.Util.Time.Now.Month" class="form-control input-wdatepicker" onfocus="WdatePicker({maxDate:'%y-%M-%d',dateFmt:'yyyy-MM'})" style="width: 155px">
  824. </td>
  825. <td style="padding-left: 10px;">
  826. <a id="btn_month_Search" class="btn btn-primary">&nbsp;查&nbsp;&nbsp;询</a>
  827. </td>
  828. </tr>
  829. </table>
  830. </div>
  831. </div>
  832. <div class="gridPanel">
  833. <div class="printArea">
  834. <div class="grid-title">
  835. <div id="monthChart" class="echatDiv">
  836. </div>
  837. </div>
  838. <div id="gridPanel">
  839. <table id="monthGridTable" class="gridTable"></table>
  840. </div>
  841. </div>
  842. </div>
  843. </div>
  844. <div id="tabs-3">
  845. <div class="titlePanel">
  846. <div class="title-search">
  847. <table>
  848. <tr>
  849. <td style="padding-left: 10px;">测点名称:
  850. </td>
  851. <td style="padding-left: 10px;">
  852. <input type="text" id="yearDevice" class="form-control easyui-combobox" />
  853. </td>
  854. <td style="padding-left: 10px;">请选择时间:
  855. </td>
  856. <td style="padding-left: 10px;">
  857. <input id="yearTime" readonly type="text" value="@LeaRun.Util.Time.Now.Year" class="form-control input-wdatepicker" onfocus="WdatePicker({maxDate:'%y-%M-%d',dateFmt:'yyyy'})" style="width: 175px">
  858. </td>
  859. <td style="padding-left: 10px;">
  860. <a id="btn_year_Search" class="btn btn-primary">&nbsp;查&nbsp;&nbsp;询</a>
  861. </td>
  862. </tr>
  863. </table>
  864. </div>
  865. </div>
  866. <div class="gridPanel">
  867. <div class="printArea">
  868. <div class="grid-title">
  869. <div id="yearChart" class="echatDiv">
  870. </div>
  871. </div>
  872. <div id="gridPanel">
  873. <table id="yearGridTable" class="gridTable"></table>
  874. </div>
  875. </div>
  876. </div>
  877. </div>
  878. <div id="tabs-4">
  879. <div class="titlePanel">
  880. <div class="title-search">
  881. <table>
  882. <tr>
  883. <td style="padding-left: 10px;">测点名称:
  884. </td>
  885. <td style="padding-left: 10px;">
  886. <input type="text" id="nowDevice" class="form-control easyui-combobox" />
  887. </td>
  888. <td style="padding-left: 10px;">开始时间:
  889. </td>
  890. <td style="padding-left: 10px;">
  891. <input id="nowStartTime" readonly type="text" value="@LeaRun.Util.Time.GetDate(-7)" class="form-control input-wdatepicker" onfocus="WdatePicker({maxDate:'%y-%M-%d',dateFmt:'yyyy-MM-dd HH:mm:ss',maxDate:'#F{$dp.$D(\'nowEndTime\')}'})" style="width:175px">
  892. </td>
  893. <td style="padding-left: 10px;">结束时间:
  894. </td>
  895. <td style="padding-left: 10px;">
  896. <input id="nowEndTime" readonly type="text" value="@LeaRun.Util.Time.GetToday()" class="form-control input-wdatepicker" onfocus="WdatePicker({maxDate:'%y-%M-%d',dateFmt:'yyyy-MM-dd HH:mm:ss',minDate:'#F{$dp.$D(\'nowStartTime\')}'})" style="width:175px">
  897. </td>
  898. <td style="padding-left: 10px;">
  899. <div id="time_horizon" class="btn-group">
  900. <a class="btn btn-default" data-value="1">24小时</a>
  901. <a class="btn btn-default active" data-value="2">近7天</a>
  902. <a class="btn btn-default" data-value="3">近1个月</a>
  903. <a class="btn btn-default" data-value="4">自定义</a>
  904. </div>
  905. </td>
  906. <td style="padding-left: 10px;">
  907. <a id="btn_now_Search" class="btn btn-primary">&nbsp;查&nbsp;&nbsp;询</a>
  908. </td>
  909. </table>
  910. </div>
  911. </div>
  912. <div class="gridPanel">
  913. <div class="grid-title">
  914. <div id="nowChart" class="echatDiv">
  915. </div>
  916. </div>
  917. </div>
  918. </div>
  919. </div>
  920. </div>
  921. </div>
  922. </div>