index2.html 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Title</title>
  6. <script src="/static/js/echarts.min.js"></script>
  7. <script src="/static/js/jquery-3.1.1.min.js"></script>
  8. <script src="/static/js/moveitem.js"></script>
  9. <script src="/static/bootstrap/js/bootstrap.min.js"></script>
  10. <link rel="stylesheet" href="/static/bootstrap/css/bootstrap.min.css">
  11. <link rel="stylesheet" href="/static/css/moveitem.css">
  12. <style>
  13. .one {
  14. width: 400px;
  15. height: 400px;
  16. border: 1px solid #000;
  17. }
  18. .two {
  19. border: 1px solid #000;
  20. position: absolute;
  21. }
  22. </style>
  23. </head>
  24. <body>
  25. <nav class="navbar navbar-expand-lg bg-header">
  26. <div class="container-fluid justify-content-start">
  27. <a href="/categories" class="btn">
  28. <i class="material-icons">arrow_back</i>
  29. </a>
  30. <div class="navbar-heading m-l-10">
  31. <h4>天府机坪图</h4>
  32. </div>
  33. </div>
  34. <button onclick="getDigital()" class="navbar-right">详细</button>
  35. </nav>
  36. <div class="two">
  37. <div id="main" style="width: 1920px;height:1080px;"></div>
  38. </div>
  39. <script>
  40. </script>
  41. <div id="moveitem" class="myMoveItem" style="top:50px;left:10px;width: 384px; height: 612px; z-index: 23;display: none;">
  42. <div class="moveItem_header">
  43. <p id="moveitemtittle" class="moveItem_title" ></p>
  44. <div class="moveItem_oper">
  45. <button type="button" onclick="sendMsg()">发送通知</button>
  46. <button type="button" class="moveItem_fullScreen"><></button>
  47. <button type="button" class="moveItem_normalScreen">><</button>
  48. <button type="button" class="moveItem_close">X</button>
  49. </div>
  50. </div>
  51. <div id="moveItem_body" class="moveItem_body" style="background-color: #FFF;height: calc(100% - 5px);">
  52. <p>测试1</p>
  53. </div>
  54. <span class="moveItem_resize"></span>
  55. </div>
  56. <div id="dragtest" class="myMoveItem" style="top:50px;left:10px;width: 384px; height: 612px; z-index: 23;display: block;">
  57. <div class="moveItem_header">
  58. <p id="dragtittle" class="moveItem_title" ></p>
  59. <div class="moveItem_oper">
  60. <button type="button" onclick="sendMsg()">发送通知</button>
  61. <button type="button" class="moveItem_fullScreen"><></button>
  62. <button type="button" class="moveItem_normalScreen">><</button>
  63. <button type="button" class="moveItem_close">X</button>
  64. </div>
  65. </div>
  66. <div id="drag_body" class="moveItem_body" style="background-color: #FFF;height: calc(100% - 5px);">
  67. <ul id="sortable">
  68. <li class="ui-state-default">Item 1</li>
  69. <li class="ui-state-default">Item 2</li>
  70. <li class="ui-state-default">Item 3</li>
  71. <li class="ui-state-default">Item 4</li>
  72. <li class="ui-state-default">Item 5</li>
  73. </ul>
  74. </div>
  75. <span class="moveItem_resize"></span>
  76. </div>
  77. <div id="moveitemDigital" class="myMoveItem" style="top: 800px; left: 10px; width: 1500px; height: 480px; z-index: 33;display: none;">
  78. <div class="moveItem_header">
  79. <p id="moveitemDigitaltittle" class="moveItem_title" ></p>
  80. <div class="moveItem_oper">
  81. <button type="button" class="moveItem_fullScreen"><></button>
  82. <button type="button" class="moveItem_normalScreen">><</button>
  83. <button type="button" class="moveItem_close">X</button>
  84. </div>
  85. </div>
  86. <div id="moveItemDigital_body" class="moveItem_body" style="background-color: #FFF;height: calc(100% - 5px);">
  87. <p>测试1</p>
  88. </div>
  89. <span class="moveItem_resize"></span>
  90. </div>
  91. <script type="text/javascript">
  92. // import * as echarts from 'echarts';
  93. var chartDom = document.getElementById('main')
  94. var myChart = echarts.init(chartDom)
  95. var option
  96. $(document).ready(function() {
  97. startRequest();
  98. //setInterval("RefreshRequest()",10000);
  99. });
  100. function startRequest(){
  101. $.get('/getData', function (data, status) {
  102. // console.log('data:', data, 'status:', status)
  103. $.get('./static/svg/Beef_cuts_France.svg', function (svg){
  104. echarts.registerMap('map-tf', { svg:svg});
  105. option = {
  106. tooltip:{
  107. show:true,
  108. backgroundColor: 'white',
  109. padding: 10,
  110. extraCssText:
  111. 'box-shadow: 0 0 3px rgba(0, 0, 0, 0.3);border-radius: 24px;opacity: 0.8;border: 2px solid white;width: 274px;height: 300px;',
  112. textStyle: {
  113. color: 'red',
  114. },
  115. formatter: function (params) {
  116. return `
  117. <ul class="map-tooltip">
  118. <li class="title">
  119. <p class="circle"></p>
  120. <p class="province">机位:${params.name}
  121. ${
  122. (data[params.name] && data[params.name].tasktype)||""
  123. }
  124. </p>
  125. </li>
  126. <li>
  127. <p class="name">机号:${
  128. (data[params.name] && data[params.name].bnum)||"无"
  129. } 机型:${
  130. (data[params.name] && data[params.name].actype)||"无"
  131. }
  132. ${
  133. (data[params.name] && data[params.name].engtype)||"无"
  134. }<br>
  135. ${
  136. (data[params.name] && data[params.name].ftnum)||""
  137. }
  138. <br>
  139. ${
  140. (data[params.name] && data[params.name].pos1)||""
  141. }——
  142. ${
  143. (data[params.name] && data[params.name].pos2)||""
  144. }
  145. </p>
  146. </li>
  147. <li>
  148. <p class="name">放行:${
  149. (data[params.name] && data[params.name].FX)||"无"
  150. }</p>
  151. </li>
  152. <li>
  153. <p class="name">工作者:${
  154. (data[params.name] && data[params.name].WX)||"无"
  155. }</p>
  156. </li>
  157. </ul>
  158. `;
  159. }
  160. },
  161. geo:{
  162. map:'map-tf',
  163. roam:true,
  164. selectedMode:'multiple',
  165. itemStyle:{
  166. color: '#fff'
  167. },
  168. label: {
  169. show: true,
  170. position: 'insideLeft',
  171. textStyle: {
  172. fontSize: getFontSize(),
  173. color:'#f90',
  174. align:'left',
  175. },
  176. backgroundColor:'rgba(0,110,255,0.3)',
  177. formatter: function (params) {
  178. // console.log(params.name)
  179. try{
  180. var fx = data[params.name].FX
  181. var gz = data[params.name].WX
  182. return params.name+":"+fx+"\n"+ gz
  183. }
  184. catch (err){
  185. var fx = "无"
  186. var gz = "无"
  187. }
  188. }
  189. },
  190. select:{
  191. itemStyle: {
  192. color:'#0ff'
  193. }
  194. },
  195. regions:makeregions(data),
  196. },
  197. series:[
  198. {
  199. type: 'map',
  200. maptype:'map-tf',
  201. geoIndex: 0,
  202. }
  203. ]
  204. };
  205. function makeregions(data) {
  206. var region = [];
  207. for(var key in data){
  208. if(data[key].FX==''){
  209. region.push(
  210. {
  211. name:key,
  212. silent: true,
  213. itemStyle:{
  214. color:'#f00'
  215. }
  216. }
  217. )
  218. }
  219. else{
  220. region.push(
  221. {
  222. name:key,
  223. silent: true,
  224. itemStyle:{
  225. color:'#0f0'
  226. }
  227. }
  228. )
  229. }
  230. }
  231. // console.log("region:", region);
  232. return region;
  233. }
  234. function getFontSize(){
  235. try{
  236. var _option = myChart.getOption();
  237. var _zoom = _option.geo[0].zoom;
  238. var size = 15*(1.0 / ( 1 + Math.exp(-_zoom+2)))
  239. }
  240. catch (err){
  241. size = 10
  242. }
  243. return size
  244. }
  245. function sendSelect(params){
  246. $.post('/getSelectInf',{'bay':params}, function (data, status){
  247. // var text = '';
  248. // for (var key in data){
  249. //
  250. // text = text + "<p>"+key+":"+data[key]+"</p>"
  251. //
  252. // }
  253. // console.log("Text:"+text)
  254. $("#moveitemtittle").text(params)
  255. $("#moveItem_body").html(data)
  256. $("#moveitem").show()
  257. })
  258. }
  259. myChart.setOption(option)
  260. myChart.on('click', function (params){
  261. console.log("click"+params.name)
  262. sendSelect(params.name)
  263. })
  264. myChart.on('geoselectchanged', function (params) {
  265. console.log("selected")
  266. // const selectedName = params.name;
  267. // console.log('selected', selectedName)
  268. //sendSelect(selectedName)
  269. })
  270. myChart.on('mousemove', function (params){
  271. console.log("mouse over:"+params.name)
  272. })
  273. myChart.on('mouseup', function (params){
  274. console.log("mouse up:"+params.name)
  275. })
  276. myChart.on('georoam', function (params){
  277. if(params.dy || params.dx) return
  278. var _option = myChart.getOption();
  279. var _zoom = _option.geo[0].zoom;
  280. // console.log("缩放:",_zoom);
  281. _option.geo[0].label.textStyle.fontSize=15*(1.0 / ( 1 + Math.exp(-_zoom+2)))
  282. myChart.setOption(_option)
  283. })
  284. })
  285. })}
  286. function RefreshRequest() {
  287. $.get('/getData', function (data, status){
  288. console.log('data:', data, 'status:', status)
  289. var _option = myChart.getOption();
  290. // var _tooltip = _option.tooltip.formatter
  291. _option = {
  292. tooltip: {
  293. show: true,
  294. backgroundColor: 'white',
  295. padding: 10,
  296. extraCssText:
  297. 'box-shadow: 0 0 3px rgba(0, 0, 0, 0.3);border-radius: 24px;opacity: 0.8;border: 2px solid white;width: 274px;height: 300px;',
  298. textStyle: {
  299. color: 'red',
  300. },
  301. formatter: function (params) {
  302. return `
  303. <ul class="map-tooltip">
  304. <li class="title">
  305. <p class="circle"></p>
  306. <p class="province">机位:${params.name}
  307. ${
  308. (data[params.name] && data[params.name].tasktype) || ""
  309. }
  310. </p>
  311. </li>
  312. <li>
  313. <p class="name">机号:${
  314. (data[params.name] && data[params.name].bnum) || "无"
  315. } 机型:${
  316. (data[params.name] && data[params.name].actype) || "无"
  317. }
  318. ${
  319. (data[params.name] && data[params.name].engtype) || "无"
  320. }<br>
  321. ${
  322. (data[params.name] && data[params.name].ftnum) || ""
  323. }
  324. <br>
  325. ${
  326. (data[params.name] && data[params.name].pos1) || ""
  327. }——
  328. ${
  329. (data[params.name] && data[params.name].pos2) || ""
  330. }
  331. </p>
  332. </li>
  333. <li>
  334. <p class="name">放行:${
  335. (data[params.name] && data[params.name].FX) || "无"
  336. }</p>
  337. </li>
  338. <li>
  339. <p class="name">工作者:${
  340. (data[params.name] && data[params.name].WX) || "无"
  341. }</p>
  342. </li>
  343. </ul>
  344. `;
  345. }
  346. },
  347. geo:{
  348. map:'map-tf',
  349. roam:true,
  350. selectedMode:'multiple',
  351. itemStyle:{
  352. color: '#fff'
  353. },
  354. label: {
  355. show: true,
  356. position: 'insideLeft',
  357. textStyle: {
  358. fontSize: getFontSize(),
  359. color:'#f90',
  360. align:'left',
  361. },
  362. backgroundColor:'rgba(0,110,255,0.3)',
  363. formatter: function (params) {
  364. // console.log(params.name)
  365. try{
  366. var fx = data[params.name].FX
  367. var gz = data[params.name].WX
  368. return params.name+":"+fx+"\n"+ gz
  369. }
  370. catch (err){
  371. var fx = "无"
  372. var gz = "无"
  373. }
  374. }
  375. },
  376. select:{
  377. itemStyle: {
  378. color:'#0ff'
  379. }
  380. },
  381. regions:makeregions(data),
  382. },
  383. }
  384. myChart.setOption(_option)
  385. })
  386. // $.get('/getDigital', function (data, status){
  387. // $("#moveItemDigital_body").html(data)
  388. // })
  389. function makeregions(data) {
  390. var region = [];
  391. for(var key in data){
  392. if(data[key].FX==''){
  393. region.push(
  394. {
  395. name:key,
  396. silent: true,
  397. itemStyle:{
  398. color:'#f00'
  399. }
  400. }
  401. )
  402. }
  403. else{
  404. region.push(
  405. {
  406. name:key,
  407. silent: true,
  408. itemStyle:{
  409. color:'#0f0'
  410. }
  411. }
  412. )
  413. }
  414. }
  415. // console.log("region:", region);
  416. return region;
  417. }
  418. }
  419. function getDigital() {
  420. $.get('/getDigital', function (data, status){
  421. $("#moveitemDigitaltittle").text('详细')
  422. $("#moveItemDigital_body").html(data)
  423. $("#moveitemDigital").show()
  424. })
  425. }
  426. function sendMsg(){
  427. var bay = $("#moveitemtittle").text()
  428. $.post("/sendMsgBay",{'bay':bay}, function (data, status){
  429. console.log("sendMsg:"+data+status)
  430. })
  431. }
  432. </script>
  433. </body>
  434. </html>