widget-heatmap.js 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643
  1. /*
  2. * @Descripttion: 热力图
  3. * @version:
  4. * @Author: whw
  5. * @Date: 2021-11-3
  6. * @LastEditors: whw
  7. * @LastEditTime: 2021-11-3
  8. */
  9. export const widgetHeatmap = {
  10. code: 'widget-heatmap',
  11. type: 'chart',
  12. label: '热力图',
  13. icon: 'iconicon_tubiao_bingtu',
  14. options: {
  15. // 配置
  16. setup: [
  17. {
  18. type: 'el-input-text',
  19. label: '图层名称',
  20. name: 'layerName',
  21. required: false,
  22. placeholder: '',
  23. value: '热力图',
  24. },
  25. {
  26. type: 'vue-color',
  27. label: '背景颜色',
  28. name: 'background',
  29. required: false,
  30. placeholder: '',
  31. value: ''
  32. },
  33. [
  34. {
  35. name: '标题设置',
  36. list: [
  37. {
  38. type: 'el-switch',
  39. label: '标题',
  40. name: 'isNoTitle',
  41. required: false,
  42. placeholder: '',
  43. value: true
  44. },
  45. {
  46. type: 'el-input-text',
  47. label: '标题',
  48. name: 'titleText',
  49. required: false,
  50. placeholder: '',
  51. value: ''
  52. },
  53. {
  54. type: 'vue-color',
  55. label: '字体颜色',
  56. name: 'textColor',
  57. required: false,
  58. placeholder: '',
  59. value: '#fff'
  60. },
  61. {
  62. type: 'el-select',
  63. label: '字体粗细',
  64. name: 'textFontWeight',
  65. required: false,
  66. placeholder: '',
  67. selectOptions: [
  68. { code: 'normal', name: '正常' },
  69. { code: 'bold', name: '粗体' },
  70. { code: 'bolder', name: '特粗体' },
  71. { code: 'lighter', name: '细体' }
  72. ],
  73. value: 'normal'
  74. },
  75. {
  76. type: 'el-input-number',
  77. label: '字体大小',
  78. name: 'textFontSize',
  79. required: false,
  80. placeholder: '',
  81. value: 16
  82. },
  83. {
  84. type: 'el-select',
  85. label: '字体位置',
  86. name: 'textAlign',
  87. required: false,
  88. placeholder: '',
  89. selectOptions: [
  90. { code: 'center', name: '居中' },
  91. { code: 'left', name: '左对齐' },
  92. { code: 'right', name: '右对齐' },
  93. ],
  94. value: 'center'
  95. },
  96. {
  97. type: 'el-input-text',
  98. label: '副标题',
  99. name: 'subText',
  100. required: false,
  101. placeholder: '',
  102. value: ''
  103. },
  104. {
  105. type: 'vue-color',
  106. label: '字体颜色',
  107. name: 'subTextColor',
  108. required: false,
  109. placeholder: '',
  110. value: ''
  111. },
  112. {
  113. type: 'el-select',
  114. label: '字体粗细',
  115. name: 'subTextFontWeight',
  116. required: false,
  117. placeholder: '',
  118. selectOptions: [
  119. { code: 'normal', name: '正常' },
  120. { code: 'bold', name: '粗体' },
  121. { code: 'bolder', name: '特粗体' },
  122. { code: 'lighter', name: '细体' }
  123. ],
  124. value: 'normal'
  125. },
  126. {
  127. type: 'el-input-number',
  128. label: '字体大小',
  129. name: 'subTextFontSize',
  130. required: false,
  131. placeholder: '',
  132. value: 16
  133. },
  134. ],
  135. },
  136. {
  137. name: 'X轴设置',
  138. list: [
  139. {
  140. type: 'el-switch',
  141. label: '显示',
  142. name: 'hideX',
  143. required: false,
  144. placeholder: '',
  145. value: true,
  146. },
  147. {
  148. type: 'el-input-text',
  149. label: 'X轴别名',
  150. name: 'xName',
  151. required: false,
  152. placeholder: '',
  153. value: ''
  154. },
  155. {
  156. type: 'vue-color',
  157. label: '别名颜色',
  158. name: 'xNameColor',
  159. required: false,
  160. placeholder: '',
  161. value: '#fff'
  162. },
  163. {
  164. type: 'el-input-number',
  165. label: '别名字号',
  166. name: 'xNameFontSize',
  167. required: false,
  168. placeholder: '',
  169. value: 14
  170. },
  171. {
  172. type: 'el-switch',
  173. label: '轴反转',
  174. name: 'reversalX',
  175. required: false,
  176. placeholder: '',
  177. value: false
  178. },
  179. {
  180. type: 'el-slider',
  181. label: '文字角度',
  182. name: 'textAngleX',
  183. required: false,
  184. placeholder: '',
  185. value: 0
  186. },
  187. {
  188. type: 'el-input-number',
  189. label: '文字间隔',
  190. name: 'textInterval',
  191. required: false,
  192. placeholder: '',
  193. value: ''
  194. },
  195. {
  196. type: 'vue-color',
  197. label: '文字颜色',
  198. name: 'Xcolor',
  199. required: false,
  200. placeholder: '',
  201. value: '#fff',
  202. },
  203. {
  204. type: 'el-input-number',
  205. label: '文字字号',
  206. name: 'fontSizeX',
  207. required: false,
  208. placeholder: '',
  209. value: 14,
  210. },
  211. {
  212. type: 'vue-color',
  213. label: '轴颜色',
  214. name: 'lineColorX',
  215. required: false,
  216. placeholder: '',
  217. value: '#fff',
  218. },
  219. ],
  220. },
  221. {
  222. name: 'Y轴设置',
  223. list: [
  224. {
  225. type: 'el-switch',
  226. label: '显示',
  227. name: 'isShowY',
  228. require: false,
  229. placeholder: '',
  230. value: true,
  231. },
  232. {
  233. type: 'el-input-text',
  234. label: 'Y轴别名',
  235. name: 'textNameY',
  236. require: false,
  237. placeholder: '',
  238. value: ''
  239. },
  240. {
  241. type: 'vue-color',
  242. label: '别名颜色',
  243. name: 'NameColorY',
  244. required: false,
  245. placeholder: '',
  246. value: '#fff',
  247. },
  248. {
  249. type: 'el-input-number',
  250. label: '别名字号',
  251. name: 'NameFontSizeY',
  252. required: false,
  253. placeholder: '',
  254. value: 14,
  255. },
  256. {
  257. type: 'el-switch',
  258. label: '轴反转',
  259. name: 'reversalY',
  260. required: false,
  261. placeholder: '',
  262. value: false
  263. },
  264. {
  265. type: 'el-slider',
  266. label: '文字角度',
  267. name: 'textAngleY',
  268. required: false,
  269. placeholder: '',
  270. value: 0
  271. },
  272. {
  273. type: 'vue-color',
  274. label: '文字颜色',
  275. name: 'colorY',
  276. required: false,
  277. placeholder: '',
  278. value: '#fff',
  279. },
  280. {
  281. type: 'el-input-number',
  282. label: '文字字号',
  283. name: 'fontSizeY',
  284. required: false,
  285. placeholder: '',
  286. value: 14,
  287. },
  288. {
  289. type: 'vue-color',
  290. label: '轴颜色',
  291. name: 'lineColorY',
  292. required: false,
  293. placeholder: '',
  294. value: '#fff',
  295. },
  296. ],
  297. },
  298. {
  299. name: '图例操作',
  300. list: [
  301. {
  302. type: 'el-switch',
  303. label: '图例',
  304. name: 'isShowLegend',
  305. required: false,
  306. placeholder: '',
  307. value: false,
  308. },
  309. {
  310. type: 'el-input-number',
  311. label: '最小值',
  312. name: 'dataMin',
  313. required: false,
  314. placeholder: '',
  315. value: 0,
  316. },
  317. {
  318. type: 'el-input-number',
  319. label: '最大值',
  320. name: 'dataMax',
  321. required: false,
  322. placeholder: '',
  323. value: 5000,
  324. },
  325. {
  326. type: 'vue-color',
  327. label: '字体颜色',
  328. name: 'lengedColor',
  329. required: false,
  330. placeholder: '',
  331. value: '#fff',
  332. },
  333. {
  334. type: 'el-input-number',
  335. label: '字体大小',
  336. name: 'lengedFontSize',
  337. required: false,
  338. placeholder: '',
  339. value: 12,
  340. },
  341. ],
  342. },
  343. {
  344. name: '数值设定',
  345. list: [
  346. {
  347. type: 'el-switch',
  348. label: '显示',
  349. name: 'isShow',
  350. required: false,
  351. placeholder: '',
  352. value: true
  353. },
  354. {
  355. type: 'el-input-number',
  356. label: '字体字号',
  357. name: 'fontSize',
  358. required: false,
  359. placeholder: '',
  360. value: 14
  361. },
  362. {
  363. type: 'vue-color',
  364. label: '字体颜色',
  365. name: 'subTextColor',
  366. required: false,
  367. placeholder: '',
  368. value: '#fff'
  369. },
  370. {
  371. type: 'el-select',
  372. label: '字体粗细',
  373. name: 'fontWeight',
  374. required: false,
  375. placeholder: '',
  376. selectOptions: [
  377. {code: 'normal', name: '正常'},
  378. {code: 'bold', name: '粗体'},
  379. {code: 'bolder', name: '特粗体'},
  380. {code: 'lighter', name: '细体'}
  381. ],
  382. value: 'normal'
  383. },
  384. ],
  385. },
  386. {
  387. name: '提示语设置',
  388. list: [
  389. {
  390. type: 'el-input-number',
  391. label: '字体字号',
  392. name: 'tipsFontSize',
  393. required: false,
  394. placeholder: '',
  395. value: 16
  396. },
  397. {
  398. type: 'vue-color',
  399. label: '字体颜色',
  400. name: 'tipsLineColor',
  401. required: false,
  402. placeholder: '',
  403. },
  404. ],
  405. },
  406. {
  407. name: '坐标轴边距设置',
  408. list: [
  409. {
  410. type: 'el-slider',
  411. label: '左边距(像素)',
  412. name: 'marginLeft',
  413. required: false,
  414. placeholder: '',
  415. value: 10,
  416. }, {
  417. type: 'el-slider',
  418. label: '顶边距(像素)',
  419. name: 'marginTop',
  420. required: false,
  421. placeholder: '',
  422. value: 50,
  423. }, {
  424. type: 'el-slider',
  425. label: '右边距(像素)',
  426. name: 'marginRight',
  427. required: false,
  428. placeholder: '',
  429. value: 40,
  430. }, {
  431. type: 'el-slider',
  432. label: '底边距(像素)',
  433. name: 'marginBottom',
  434. required: false,
  435. placeholder: '',
  436. value: 10,
  437. },
  438. ],
  439. },
  440. {
  441. name: '自定义配色',
  442. list: [
  443. {
  444. type: 'customColor',
  445. label: '',
  446. name: 'lengedColorList',
  447. required: false,
  448. value: [{ color: '#abd9e9' }, { color: '#74add1' }, { color: '#4575b4' }, { color: '#313695' }],
  449. },
  450. ],
  451. },
  452. ],
  453. ],
  454. // 数据
  455. data: [
  456. {
  457. type: 'el-radio-group',
  458. label: '数据类型',
  459. name: 'dataType',
  460. require: false,
  461. placeholder: '',
  462. selectValue: true,
  463. selectOptions: [
  464. {
  465. code: 'staticData',
  466. name: '静态数据',
  467. },
  468. {
  469. code: 'dynamicData',
  470. name: '动态数据',
  471. },
  472. ],
  473. value: 'staticData',
  474. },
  475. {
  476. type: 'el-input-number',
  477. label: '刷新时间(毫秒)',
  478. name: 'refreshTime',
  479. relactiveDom: 'dataType',
  480. relactiveDomValue: 'dynamicData',
  481. value: 5000
  482. },
  483. {
  484. type: 'el-button',
  485. label: '静态数据',
  486. name: 'staticData',
  487. required: false,
  488. placeholder: '',
  489. relactiveDom: 'dataType',
  490. relactiveDomValue: 'staticData',
  491. value: [
  492. [0, 0, 3320],
  493. [0, 1, 1561],
  494. [0, 2, 3194],
  495. [0, 3, 2899],
  496. [0, 4, 2363],
  497. [0, 5, 3945],
  498. [0, 6, 2051],
  499. [0, 7, 3657],
  500. [0, 8, 3304],
  501. [0, 9, 2990],
  502. [1, 9, 2663],
  503. [1, 0, 378],
  504. [1, 1, 4076],
  505. [1, 2, 3178],
  506. [1, 3, 1501],
  507. [1, 4, 1660],
  508. [1, 5, 726],
  509. [1, 6, 4148],
  510. [1, 7, 720],
  511. [1, 8, 430],
  512. [2, 9, 2983],
  513. [2, 0, 1917],
  514. [2, 1, 1188],
  515. [2, 2, 3581],
  516. [2, 3, 1781],
  517. [2, 4, 4725],
  518. [2, 5, 4077],
  519. [2, 6, 299],
  520. [2, 7, 4828],
  521. [2, 8, 1778],
  522. [3, 9, 3171],
  523. [3, 0, 2944],
  524. [3, 1, 763],
  525. [3, 2, 1678],
  526. [3, 3, 1765],
  527. [3, 4, 2949],
  528. [3, 5, 966],
  529. [3, 6, 4622],
  530. [3, 7, 2818],
  531. [3, 8, 3913],
  532. [4, 9, 4382],
  533. [4, 0, 1670],
  534. [4, 1, 4532],
  535. [4, 2, 2116],
  536. [4, 3, 2383],
  537. [4, 4, 510],
  538. [4, 5, 33],
  539. [4, 6, 4974],
  540. [4, 7, 3627],
  541. [4, 8, 2737],
  542. [5, 9, 656],
  543. [5, 0, 3689],
  544. [5, 1, 713],
  545. [5, 2, 3551],
  546. [5, 3, 3159],
  547. [5, 4, 4150],
  548. [5, 5, 1416],
  549. [5, 6, 3021],
  550. [5, 7, 1778],
  551. [5, 8, 863],
  552. [6, 9, 772],
  553. [6, 0, 1675],
  554. [6, 1, 1323],
  555. [6, 2, 2023],
  556. [6, 3, 43],
  557. [6, 4, 4964],
  558. [6, 5, 4781],
  559. [6, 6, 2608],
  560. [6, 7, 2278],
  561. [6, 8, 3285],
  562. [7, 9, 1977],
  563. [7, 0, 882],
  564. [7, 1, 2434],
  565. [7, 2, 4694],
  566. [7, 3, 3022],
  567. [7, 4, 1798],
  568. [7, 5, 2503],
  569. [7, 6, 693],
  570. [7, 7, 275],
  571. [7, 8, 3774],
  572. [8, 9, 1386],
  573. [8, 0, 1212],
  574. [8, 1, 1982],
  575. [8, 2, 1509],
  576. [8, 3, 94],
  577. [8, 4, 2082],
  578. [8, 5, 3930],
  579. [8, 6, 4528],
  580. [8, 7, 1861],
  581. [8, 8, 4582],
  582. [9, 9, 3038],
  583. [9, 0, 4038],
  584. [9, 1, 357],
  585. [9, 2, 306],
  586. [9, 3, 479],
  587. [9, 4, 823],
  588. [9, 5, 3442],
  589. [9, 6, 904],
  590. [9, 7, 399],
  591. [9, 8, 4869]
  592. ]
  593. },
  594. {
  595. type: 'dycustComponents',
  596. label: '',
  597. name: 'dynamicData',
  598. required: false,
  599. placeholder: '',
  600. relactiveDom: 'dataType',
  601. chartType: 'widget-heatmap',
  602. relactiveDomValue: 'dynamicData',
  603. dictKey: 'PIE_PROPERTIES',
  604. value: '',
  605. },
  606. ],
  607. // 坐标
  608. position: [
  609. {
  610. type: 'el-input-number',
  611. label: '左边距',
  612. name: 'left',
  613. required: false,
  614. placeholder: '',
  615. value: 0,
  616. },
  617. {
  618. type: 'el-input-number',
  619. label: '上边距',
  620. name: 'top',
  621. required: false,
  622. placeholder: '',
  623. value: 0,
  624. },
  625. {
  626. type: 'el-input-number',
  627. label: '宽度',
  628. name: 'width',
  629. required: false,
  630. placeholder: '该容器在1920px大屏中的宽度',
  631. value: 700,
  632. },
  633. {
  634. type: 'el-input-number',
  635. label: '高度',
  636. name: 'height',
  637. required: false,
  638. placeholder: '该容器在1080px大屏中的高度',
  639. value: 250,
  640. },
  641. ],
  642. }
  643. }