components_border_vue.html 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484
  1. <!--********************************************************************
  2. * Copyright© 2000 - 2021 SuperMap Software Co.Ltd. All rights reserved.
  3. *********************************************************************-->
  4. <!DOCTYPE html>
  5. <html>
  6. <head>
  7. <meta charset="UTF-8" />
  8. <title data-i18n="resources.title_componentsBorder_Vue"></title>
  9. <script type="text/javascript" include="vue" src="../js/include-web.js"></script>
  10. <script
  11. include="echarts-vue,iclient-mapboxgl-vue,mapbox-gl-enhance"
  12. src="../../dist/mapboxgl/include-mapboxgl.js"
  13. ></script>
  14. <style>
  15. body {
  16. margin: 0;
  17. width: 100%;
  18. height: 100%;
  19. position: relative;
  20. top: 0;
  21. }
  22. #main {
  23. margin: 0 auto;
  24. width: 100%;
  25. height: 100%;
  26. }
  27. .all-borders {
  28. width: 98%;
  29. margin: 0 auto;
  30. position: absolute;
  31. left: 1%;
  32. bottom: 0px;
  33. display: flex;
  34. justify-content: space-between;
  35. flex-wrap: wrap-reverse;
  36. align-content: flex-start;
  37. }
  38. .common-border {
  39. margin-bottom: 10px;
  40. width: 300px;
  41. height: 230px;
  42. z-index: 1000;
  43. }
  44. .select-group {
  45. display: flex;
  46. align-items: center;
  47. position: absolute;
  48. width: 240px;
  49. left: 40px;
  50. top: 40px;
  51. }
  52. .select-group span {
  53. color: #fff;
  54. font-size: 15px;
  55. margin-right: 10px;
  56. }
  57. .select-border {
  58. width: 110px;
  59. }
  60. .sm-component-select-selection {
  61. background: #262626;
  62. color: #fff;
  63. }
  64. .sm-component-select-dropdown-content ul::-webkit-scrollbar {
  65. width: 4px;
  66. height: 4px;
  67. background-color: rgba(245, 245, 245, 0);
  68. }
  69. .sm-component-select-dropdown-content ul::-webkit-scrollbar-thumb {
  70. border-radius: 10px;
  71. background-color: gray;
  72. }
  73. .sm-component-select-dropdown {
  74. background: #262626;
  75. }
  76. .sm-component-select-dropdown-menu-item {
  77. color: #909399;
  78. }
  79. .sm-component-select-dropdown-menu-item-active {
  80. background: #dddcdc !important;
  81. color: #4f4f4f !important;
  82. }
  83. .sm-component-select-dropdown-menu-item-selected,
  84. .sm-component-select-dropdown-menu-item-selected:hover {
  85. background: #dddcdc !important;
  86. color: #4f4f4f !important;
  87. }
  88. </style>
  89. </head>
  90. <body>
  91. <div id="main">
  92. <!-- WebMap组件 -->
  93. <sm-web-map server-url="https://iportal.supermap.io/iportal" map-id="801571284" ref="map"></sm-web-map>
  94. <div class="all-borders">
  95. <!-- Border组件 -->
  96. <sm-border :type="borderType" class="common-border">
  97. <sm-chart icon-class="" :options="barChartOptions"></sm-chart>
  98. </sm-border>
  99. <!-- Border组件 -->
  100. <sm-border :type="borderType" class="common-border">
  101. <sm-chart icon-class="" :options="lineChartOptions"></sm-chart>
  102. </sm-border>
  103. <!-- Border组件 -->
  104. <sm-border :type="borderType" class="common-border">
  105. <sm-chart icon-class="" :options="scatterChartOptions"></sm-chart>
  106. </sm-border>
  107. <!-- Border组件 -->
  108. <sm-border :type="borderType" class="common-border">
  109. <sm-chart icon-class="" :options="radarChartOptions"></sm-chart>
  110. </sm-border>
  111. <!-- Border组件 -->
  112. <sm-border :type="borderType" class="common-border">
  113. <sm-chart icon-class="" :options="pieChartOptions"></sm-chart>
  114. </sm-border>
  115. <!-- Border组件 -->
  116. <sm-border :type="borderType" class="common-border">
  117. <sm-chart icon-class="" :options="gaugeChartOptions"></sm-chart>
  118. </sm-border>
  119. </div>
  120. <!-- 切换{{resources.text_opt_border}}类型 -->
  121. <div class="select-group">
  122. <span>{{ resources.text_sel_border }}:</span>
  123. <sm-select class="select-border" v-model="borderType">
  124. <sm-select-option value="border1">{{ resources.text_opt_border }}1</sm-select-option>
  125. <sm-select-option value="border2">{{ resources.text_opt_border }}2</sm-select-option>
  126. <sm-select-option value="border3">{{ resources.text_opt_border }}3</sm-select-option>
  127. <sm-select-option value="border4">{{ resources.text_opt_border }}4</sm-select-option>
  128. <sm-select-option value="border5">{{ resources.text_opt_border }}5</sm-select-option>
  129. <sm-select-option value="border6">{{ resources.text_opt_border }}6</sm-select-option>
  130. <sm-select-option value="border7">{{ resources.text_opt_border }}7</sm-select-option>
  131. <sm-select-option value="border8">{{ resources.text_opt_border }}8</sm-select-option>
  132. <sm-select-option value="border9">{{ resources.text_opt_border }}9</sm-select-option>
  133. <sm-select-option value="border10">{{ resources.text_opt_border }}10</sm-select-option>
  134. <sm-select-option value="border11">{{ resources.text_opt_border }}11</sm-select-option>
  135. <sm-select-option value="border12">{{ resources.text_opt_border }}12</sm-select-option>
  136. <sm-select-option value="border13">{{ resources.text_opt_border }}13</sm-select-option>
  137. </sm-select>
  138. </div>
  139. </div>
  140. <script>
  141. new Vue({
  142. el: '#main',
  143. data() {
  144. var chartXAxis = {
  145. data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'],
  146. axisLabel: {
  147. rotate: 0,
  148. fontFamily: 'MicrosoftYaHei'
  149. },
  150. show: true,
  151. name: '',
  152. nameGap: 2,
  153. nameLocation: 'end',
  154. type: 'category'
  155. };
  156. var chartYAxis = {
  157. name: '',
  158. axisLine: {
  159. lineStyle: {}
  160. },
  161. axisLabel: {
  162. rotate: 0,
  163. fontFamily: 'MicrosoftYaHei'
  164. },
  165. show: true,
  166. splitArea: {
  167. show: false
  168. },
  169. nameGap: 5,
  170. nameLocation: 'end',
  171. type: 'value',
  172. nameTextStyle: {
  173. padding: [0, 0, 5, 0]
  174. }
  175. };
  176. var chartGrid = {
  177. left: 50,
  178. right: 50,
  179. top: 35,
  180. bottom: 35
  181. };
  182. return {
  183. borderType: 'border7',
  184. // 和echarts一样的配置
  185. barChartOptions: {
  186. xAxis: chartXAxis,
  187. yAxis: chartYAxis,
  188. grid: chartGrid,
  189. series: [
  190. {
  191. data: ['500', '800', '3000', '3617', '3400', '4200', '1842'],
  192. name: 'Y2',
  193. type: 'bar'
  194. },
  195. {
  196. data: ['100', '520', '2000', '3340', '3900', '3300', '2500'],
  197. name: 'Y1',
  198. type: 'bar'
  199. },
  200. {
  201. data: ['1', '1', '0', '0', '0', '1', '0'],
  202. name: 'Y3',
  203. emphasis: {
  204. itemStyle: {}
  205. },
  206. type: 'bar'
  207. }
  208. ]
  209. },
  210. lineChartOptions: {
  211. xAxis: chartXAxis,
  212. yAxis: chartYAxis,
  213. grid: chartGrid,
  214. series: [
  215. {
  216. data: ['3900', '3340', '3300', '2500', '2000', '520', '100'],
  217. name: 'Y1',
  218. emphasis: {
  219. itemStyle: {}
  220. },
  221. type: 'line',
  222. smooth: false
  223. },
  224. {
  225. data: ['3400', '3617', '4200', '1842', '3000', '800', '500'],
  226. name: 'Y2',
  227. emphasis: {
  228. itemStyle: {}
  229. },
  230. type: 'line',
  231. smooth: false
  232. }
  233. ],
  234. },
  235. scatterChartOptions: {
  236. xAxis: chartXAxis,
  237. yAxis: chartYAxis,
  238. grid: chartGrid,
  239. series: [
  240. {
  241. data: ['3900', '3340', '3300', '2500', '2000', '520', '100'],
  242. name: 'Y1',
  243. emphasis: {
  244. itemStyle: {}
  245. },
  246. type: 'scatter'
  247. },
  248. {
  249. data: ['3400', '3617', '4200', '1842', '3000', '800', '500'],
  250. name: 'Y2',
  251. emphasis: {
  252. itemStyle: {}
  253. },
  254. type: 'scatter'
  255. }
  256. ]
  257. },
  258. radarChartOptions: {
  259. radar: {
  260. indicator: [
  261. {
  262. max: '500',
  263. name: 'Mon'
  264. },
  265. {
  266. max: '800',
  267. name: 'Tue'
  268. },
  269. {
  270. max: '3000',
  271. name: 'Wed'
  272. },
  273. {
  274. max: '3617',
  275. name: 'Thu'
  276. },
  277. {
  278. max: '3400',
  279. name: 'Fri'
  280. },
  281. {
  282. max: '4200',
  283. name: 'Sat'
  284. },
  285. {
  286. max: '1842',
  287. name: 'Sun'
  288. }
  289. ],
  290. shape: 'circle',
  291. splitArea: {
  292. show: false
  293. },
  294. axisLine: {
  295. lineStyle: {}
  296. },
  297. name: {
  298. textStyle: {}
  299. },
  300. splitLine: {
  301. lineStyle: {}
  302. },
  303. splitNumber: 5,
  304. radius: '70%'
  305. },
  306. grid: {
  307. top: 35,
  308. left: 50,
  309. bottom: 25
  310. },
  311. legend: {
  312. data: ['Y1'],
  313. textStyle: {},
  314. show: false,
  315. top: 'auto',
  316. bottom: 'auto'
  317. },
  318. series: [
  319. {
  320. barWidth: '80%',
  321. data: [
  322. {
  323. name: 'Y1',
  324. value: ['100', '520', '2000', '3340', '3900', '3300', '2500']
  325. }
  326. ],
  327. name: '示范数据',
  328. emphasis: {
  329. itemStyle: {}
  330. },
  331. type: 'radar'
  332. }
  333. ],
  334. tooltip: {
  335. axisPointer: {
  336. shadowStyle: {},
  337. type: 'shadow'
  338. },
  339. trigger: 'axis',
  340. textStyle: {
  341. align: 'left'
  342. }
  343. },
  344. textStyle: {
  345. fontFamily: 'Microsoft YaHei Light'
  346. },
  347. title: {
  348. padding: [5, 0, 0, 20],
  349. x: 'left',
  350. text: '',
  351. textStyle: {
  352. fontFamily: 'Microsoft YaHei Light',
  353. fontWeight: '100'
  354. }
  355. }
  356. },
  357. pieChartOptions: {
  358. tooltip: {
  359. trigger: 'item',
  360. formatter: '{a} <br/>{b}: {c} ({d}%)'
  361. },
  362. legend: {
  363. orient: 'vertical',
  364. x: 'left',
  365. data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'],
  366. show: true,
  367. top: 'auto',
  368. bottom: 'auto'
  369. },
  370. series: [
  371. {
  372. name: '示范数据',
  373. type: 'pie',
  374. radius: '80%',
  375. avoidLabelOverlap: false,
  376. label: {
  377. normal: {
  378. show: false,
  379. position: 'center'
  380. },
  381. emphasis: {
  382. show: true,
  383. textStyle: {
  384. fontSize: '30',
  385. fontWeight: 'bold'
  386. }
  387. }
  388. },
  389. labelLine: {
  390. normal: {
  391. show: false
  392. }
  393. },
  394. data: [
  395. {
  396. value: 500,
  397. name: 'Mon'
  398. },
  399. {
  400. value: 800,
  401. name: 'Tue'
  402. },
  403. {
  404. value: 3000,
  405. name: 'Wed'
  406. },
  407. {
  408. value: 3617,
  409. name: 'Thu'
  410. },
  411. {
  412. value: 3400,
  413. name: 'Fri'
  414. },
  415. {
  416. value: 4200,
  417. name: 'Sat'
  418. },
  419. {
  420. value: 1842,
  421. name: 'Sun'
  422. }
  423. ]
  424. }
  425. ]
  426. },
  427. gaugeChartOptions: {
  428. tooltip: {
  429. formatter: '{a} <br/>{b} : {c}%'
  430. },
  431. series: [
  432. {
  433. name: '业务指标',
  434. type: 'gauge',
  435. radius: '100%',
  436. pointer: {
  437. width: 5
  438. },
  439. axisLine: {
  440. lineStyle: {
  441. // 属性lineStyle控制线条样式
  442. width: 12
  443. }
  444. },
  445. splitLine: {
  446. // 分隔线
  447. length: 6 // 属性length控制线长
  448. },
  449. axisTick: {
  450. // 坐标轴小标记
  451. length: 12, // 属性length控制线长
  452. lineStyle: {
  453. // 属性lineStyle控制线条样式
  454. color: 'auto'
  455. }
  456. },
  457. detail: {
  458. formatter: '{value}%',
  459. fontSize: 20
  460. },
  461. data: [{ value: 50 }]
  462. }
  463. ]
  464. }
  465. };
  466. },
  467. mounted() {
  468. //{{resources.text_opt_border}}最好配上透明主题, body设置一个底色
  469. SuperMap.Components.setTheme({
  470. textColor: '#eee',
  471. background: 'rgba(0,0,0,0)',
  472. colorGroup: ['#3fb1e3', '#6be6c1', '#626c91', '#a0a7e6', '#c4ebad', '#96dee8']
  473. });
  474. document.getElementsByTagName('body')[0].style.background = 'rgba(0, 0, 0, 0.9)';
  475. }
  476. });
  477. </script>
  478. </body>
  479. </html>