Index.cshtml 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309
  1. @{
  2. ViewBag.Title = "智能配表";
  3. Layout = "~/Views/Shared/_LayoutIndex.cshtml";
  4. }
  5. <script src="~/Content/scripts/plugins/echarts/echarts.js"></script>
  6. <script>
  7. var meterEchart;
  8. $(function () {
  9. InitialPage();
  10. GetTree();
  11. GetAutoMeter();
  12. $("#tabs").tabs();
  13. //device.init();
  14. });
  15. //初始化页面
  16. function InitialPage() {
  17. //layout布局
  18. $('#layout').layout({
  19. applyDemoStyles: true,
  20. onresize: function () {
  21. $(window).resize();
  22. }
  23. });
  24. //resize重设(表格、树形)宽高
  25. $(window).resize(function (e) {
  26. window.setTimeout(function () {
  27. $("#itemTree").setTreeHeight($(window).height() - 52);
  28. $("#meterEchart").height($(window).height() - 112);
  29. }, 200);
  30. e.stopPropagation();
  31. });
  32. $("#meterEchart").height($(window).height() - 112);
  33. }
  34. var itemId = 0;
  35. //加载树
  36. function GetTree() {
  37. var item = {
  38. height: $(window).height() - 52,
  39. url: "/PipeNetworkManage/Meter/GetMeterTreeJson?",
  40. onnodeclick: function (item) {
  41. itemId = item.id;
  42. //展开下级
  43. $(".bbit-tree-selected").children('.bbit-tree-ec-icon').trigger("click");
  44. },
  45. };
  46. //初始化
  47. $("#itemTree").treeview(item);
  48. }
  49. //AutoComplete
  50. var device = {
  51. init: function () {
  52. var width = $('#device').width();
  53. $('#device').autocomplete({
  54. source: function (request, response) {
  55. $.ajax({
  56. url: "/IPm/DeviceInfo/GetDeviceBySearch",
  57. type: "GET",
  58. data: { q: $('#device').val() },
  59. dataType: "json",
  60. success: function (data) {
  61. response($.map(data, function (item) {
  62. console.log(item);
  63. return {
  64. label: item.label,
  65. value: "dev" + item.value
  66. }
  67. }));
  68. }
  69. });
  70. },
  71. select: function (event, ui) {
  72. $("#device").val(ui.item.label);
  73. PointTreeCode = ui.item.value;
  74. return false;
  75. }
  76. });
  77. }
  78. };
  79. function GetAutoMeter() {
  80. meterEchart = echarts.init(document.getElementById('meterEchart'));
  81. option = {
  82. title: {
  83. text: '智能配表',
  84. x: 'center'
  85. },
  86. tooltip: {
  87. trigger: 'axis'
  88. },
  89. legend: {
  90. data: ['瞬时流量(m³/h)'],
  91. right: 80
  92. },
  93. grid: {
  94. left: '3%',
  95. right: '4%',
  96. bottom: '3%',
  97. containLabel: true
  98. },
  99. toolbox: {
  100. feature: {
  101. saveAsImage: {}
  102. }
  103. },
  104. xAxis: {
  105. type: 'category',
  106. interval: 0,
  107. boundaryGap: false,
  108. data: []
  109. },
  110. yAxis: {
  111. name: "瞬时流量(m³/h)",
  112. type: 'value'
  113. },
  114. series: [
  115. {
  116. name: '瞬时流量(m³/h)',
  117. type: 'line',
  118. data: [],
  119. markLine: {
  120. data: []
  121. }
  122. }
  123. ]
  124. };
  125. meterEchart.setOption(option);
  126. //点击时间范围(今天、近7天、近一个月、近三个月)
  127. $("#time_horizon a.btn-default").click(function () {
  128. $("#time_horizon a.btn-default").removeClass("active");
  129. $(this).addClass("active");
  130. switch ($(this).attr('data-value')) {
  131. case "1"://今天
  132. $("#PointStartTime").val("@DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd HH:mm:ss")");
  133. $("#PointEndTime").val("@DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")");
  134. break;
  135. case "2"://近7天
  136. $("#PointStartTime").val("@DateTime.Now.AddDays(-7).ToString("yyyy-MM-dd")");
  137. $("#PointEndTime").val("@DateTime.Now.ToString("yyyy-MM-dd")");
  138. break;
  139. case "3"://近一个月
  140. $("#PointStartTime").val("@DateTime.Now.AddMonths(-1).ToString("yyyy-MM-dd")");
  141. $("#PointEndTime").val("@DateTime.Now.ToString("yyyy-MM-dd")");
  142. break;
  143. case "4"://自定义
  144. $("#PointStartTime").val("");
  145. $("#PointEndTime").val("");
  146. break;
  147. default:
  148. break;
  149. }
  150. });
  151. //查询事件
  152. $("#btn_point_Search").click(function () {
  153. var PointStartTime = $("#PointStartTime").val();
  154. var PointEndTime = $("#PointEndTime").val();
  155. if (itemId == 0) {
  156. dialogMsg('请选择测点!', 0);
  157. return;
  158. }
  159. if (PointStartTime.length <= 0 || PointEndTime.length <= 0) {
  160. dialogMsg('请选择时间!', 0);
  161. return;
  162. }
  163. var flowData;
  164. $.ajax({
  165. url: '/PipeNetworkManage/AutoMeter/AutoMeterData',
  166. data: { meterId: itemId, start: PointStartTime, end: PointEndTime },
  167. type: 'get',
  168. dataType: 'json',
  169. cache: false,
  170. async: false,
  171. success: function (data) {
  172. //console.log(data);
  173. flowData = data;
  174. },
  175. error: function (a, b, c) {
  176. console.log(b);
  177. }
  178. });
  179. var dataX = [];
  180. var dataY = [];
  181. var Fdata = flowData[0].flowData;
  182. var Q1 = flowData[0].Q1;
  183. var Q2 = flowData[0].Q2;
  184. var Q3 = flowData[0].Q3;
  185. var Q4 = flowData[0].Q4;
  186. for (var i = 0; i < Fdata.length; i++) {
  187. dataX.push(Fdata[i].flowTime);
  188. dataY.push(parseFloat(Fdata[i].flow));
  189. }
  190. meterEchart.setOption({
  191. xAxis: {
  192. data: dataX
  193. },
  194. series: {
  195. name: '瞬时流量(m³/h)',
  196. type: 'line',
  197. data: dataY,
  198. markLine: {
  199. silent: true,
  200. data: [{
  201. label:"1",
  202. yAxis: Q1
  203. }, {
  204. yAxis: Q2
  205. }, {
  206. yAxis: Q3
  207. }, {
  208. yAxis: Q4
  209. }]
  210. }
  211. }
  212. })
  213. });
  214. }
  215. //导出
  216. function btn_point_export() {
  217. dialogOpen({
  218. id: "ExcelIExportDialog",
  219. title: '导出采购报表',
  220. url: '/Utility/ExcelExportForm?gridId=pointGridTable',
  221. width: "500px",
  222. height: "380px",
  223. callBack: function (iframeId) {
  224. top.frames[iframeId].AcceptClick();
  225. }, btn: ['导出Excel', '关闭']
  226. });
  227. }
  228. </script>
  229. <div class="ui-layout" id="layout" style="height: 100%; width: 100%;">
  230. <div class="ui-layout-west">
  231. <div class="west-Panel">
  232. <div class="panel-Title">测点列表</div>
  233. <div id="itemTree"></div>
  234. </div>
  235. </div>
  236. <div class="ui-layout-center">
  237. <div class="center-Panel">
  238. <div class="panel-Title">智能配表</div>
  239. <div class="titlePanel">
  240. <div class="title-search">
  241. <table>
  242. <tr>
  243. @* <td style="padding-left: 10px;">测点名称:
  244. </td>
  245. <td style="padding-left: 10px;">
  246. <input type="text" id="device" name="device" class="form-control" style="width: 130px;" />
  247. </td>*@
  248. <td style="padding-left: 10px;">
  249. 开始时间:
  250. </td>
  251. <td style="padding-left: 10px;">
  252. <input id="PointStartTime" 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(\'PointEndTime\')}'})" style="width:175px">
  253. </td>
  254. <td style="padding-left: 10px;">
  255. 结束时间:
  256. </td>
  257. <td style="padding-left: 10px;">
  258. <input id="PointEndTime" 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(\'PointStartTime\')}'})" style="width:175px">
  259. </td>
  260. <td style="padding-left: 10px;">
  261. <div id="time_horizon" class="btn-group">
  262. <a class="btn btn-default" data-value="1">24小时</a>
  263. <a class="btn btn-default active" data-value="2">近7天</a>
  264. <a class="btn btn-default" data-value="3">近1个月</a>
  265. <a class="btn btn-default" data-value="4">自定义</a>
  266. </div>
  267. </td>
  268. <td style="padding-left: 10px;">
  269. <a id="btn_point_Search" class="btn btn-primary">&nbsp;查&nbsp;&nbsp;询</a>
  270. </td>
  271. </tr>
  272. </table>
  273. </div>
  274. <div class="toolbar">
  275. <div class="btn-group">
  276. <a id="lr-replace" class="btn btn-default" onclick="reload();"><i class="fa fa-refresh"></i>&nbsp;刷新</a>
  277. <a id="lr-export" class="btn btn-default" onclick="btn_point_export()"><i class="fa fa-sign-out"></i>&nbsp;导出</a>
  278. </div>
  279. </div>
  280. </div>
  281. <div class="gridPanel">
  282. <div id="meterEchart"></div>
  283. </div>
  284. </div>
  285. </div>
  286. </div>