widget-barlinechart.js 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789
  1. /*
  2. * @Descripttion: 柱线图
  3. * @version:
  4. * @Author: qianlishi
  5. * @Date: 2021-08-29 07:26:48
  6. * @LastEditors: qianlishi
  7. * @LastEditTime: 2021-09-28 14:11:57
  8. */
  9. export const widgetBarlinechart = {
  10. code: 'widget-barlinechart',
  11. type: 'chart',
  12. label: '柱线图',
  13. icon: 'iconzhuxiantu',
  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: 'markPoint',
  41. required: false,
  42. placeholder: '',
  43. value: true,
  44. },
  45. {
  46. type: 'el-slider',
  47. label: '点大小',
  48. name: 'pointSize',
  49. required: false,
  50. placeholder: '',
  51. value: 5,
  52. },
  53. {
  54. type: 'el-switch',
  55. label: '平滑曲线',
  56. name: 'smoothCurve',
  57. required: false,
  58. placeholder: '',
  59. value: true,
  60. },
  61. {
  62. type: 'el-switch',
  63. label: '面积堆积',
  64. name: 'area',
  65. required: false,
  66. placeholder: '',
  67. value: true,
  68. },
  69. {
  70. type: 'el-slider',
  71. label: '面积厚度',
  72. name: 'areaThickness',
  73. required: false,
  74. placeholder: '',
  75. value: 5,
  76. },
  77. {
  78. type: 'el-slider',
  79. label: '线条宽度',
  80. name: 'lineWidth',
  81. required: false,
  82. placeholder: '',
  83. value: 3,
  84. },
  85. ],
  86. },
  87. {
  88. name: '柱体设置',
  89. list: [
  90. {
  91. type: 'el-slider',
  92. label: '最大宽度',
  93. name: 'maxWidth',
  94. required: false,
  95. placeholder: '',
  96. value: 10,
  97. },
  98. {
  99. type: 'el-slider',
  100. label: '圆角',
  101. name: 'radius',
  102. require: false,
  103. placeholder: '',
  104. value: 5,
  105. },
  106. {
  107. type: 'el-slider',
  108. label: '最小高度',
  109. name: 'minHeight',
  110. require: false,
  111. placeholder: '',
  112. value: 0,
  113. },
  114. ],
  115. },
  116. {
  117. name: '标题设置',
  118. list: [
  119. {
  120. type: 'el-switch',
  121. label: '标题',
  122. name: 'isNoTitle',
  123. required: false,
  124. placeholder: '',
  125. value: true
  126. },
  127. {
  128. type: 'el-input-text',
  129. label: '标题',
  130. name: 'titleText',
  131. required: false,
  132. placeholder: '',
  133. value: ''
  134. },
  135. {
  136. type: 'vue-color',
  137. label: '字体颜色',
  138. name: 'textColor',
  139. required: false,
  140. placeholder: '',
  141. value: '#fff'
  142. },
  143. {
  144. type: 'el-select',
  145. label: '字体粗细',
  146. name: 'textFontWeight',
  147. required: false,
  148. placeholder: '',
  149. selectOptions: [
  150. {code: 'normal', name: '正常'},
  151. {code: 'bold', name: '粗体'},
  152. {code: 'bolder', name: '特粗体'},
  153. {code: 'lighter', name: '细体'}
  154. ],
  155. value: 'normal'
  156. },
  157. {
  158. type: 'el-input-number',
  159. label: '字体大小',
  160. name: 'textFontSize',
  161. required: false,
  162. placeholder: '',
  163. value: 20
  164. },
  165. {
  166. type: 'el-select',
  167. label: '字体位置',
  168. name: 'textAlign',
  169. required: false,
  170. placeholder: '',
  171. selectOptions: [
  172. {code: 'center', name: '居中'},
  173. {code: 'left', name: '左对齐'},
  174. {code: 'right', name: '右对齐'},
  175. ],
  176. value: 'left'
  177. },
  178. {
  179. type: 'el-input-text',
  180. label: '副标题',
  181. name: 'subText',
  182. required: false,
  183. placeholder: '',
  184. value: ''
  185. },
  186. {
  187. type: 'vue-color',
  188. label: '字体颜色',
  189. name: 'subTextColor',
  190. required: false,
  191. placeholder: '',
  192. value: '#fff'
  193. },
  194. {
  195. type: 'el-select',
  196. label: '字体粗细',
  197. name: 'subTextFontWeight',
  198. required: false,
  199. placeholder: '',
  200. selectOptions: [
  201. {code: 'normal', name: '正常'},
  202. {code: 'bold', name: '粗体'},
  203. {code: 'bolder', name: '特粗体'},
  204. {code: 'lighter', name: '细体'}
  205. ],
  206. value: 'normal'
  207. },
  208. {
  209. type: 'el-input-number',
  210. label: '字体大小',
  211. name: 'subTextFontSize',
  212. required: false,
  213. placeholder: '',
  214. value: 20
  215. },
  216. ],
  217. },
  218. {
  219. name: '图例操作',
  220. list: [
  221. {
  222. type: 'el-switch',
  223. label: '图例显示',
  224. name: 'isShowLegend',
  225. required: false,
  226. placeholder: '',
  227. value: true,
  228. },
  229. {
  230. type: 'el-input-text',
  231. label: '图例名称',
  232. name: 'legendName',
  233. required: false,
  234. placeholder: '',
  235. value: ''
  236. },
  237. {
  238. type: 'vue-color',
  239. label: '字体颜色',
  240. name: 'legendColor',
  241. required: false,
  242. placeholder: '',
  243. value: '#fff',
  244. },
  245. {
  246. type: 'el-input-number',
  247. label: '字体字号',
  248. name: 'legendFontSize',
  249. required: false,
  250. placeholder: '',
  251. value: 12,
  252. },
  253. {
  254. type: 'el-input-number',
  255. label: '图例宽度',
  256. name: 'legendWidth',
  257. required: false,
  258. placeholder: '',
  259. value: 12,
  260. },
  261. {
  262. type: 'el-select',
  263. label: '横向位置',
  264. name: 'lateralPosition',
  265. required: false,
  266. placeholder: '',
  267. selectOptions: [
  268. {code: 'center', name: '居中'},
  269. {code: 'left', name: '左对齐'},
  270. {code: 'right', name: '右对齐'},
  271. ],
  272. value: 'center'
  273. },
  274. {
  275. type: 'el-select',
  276. label: '纵向位置',
  277. name: 'longitudinalPosition',
  278. required: false,
  279. placeholder: '',
  280. selectOptions: [
  281. {code: 'top', name: '顶部'},
  282. {code: 'bottom', name: '底部'},
  283. ],
  284. value: 'top'
  285. },
  286. {
  287. type: 'el-select',
  288. label: '布局前置',
  289. name: 'layoutFront',
  290. required: false,
  291. placeholder: '',
  292. selectOptions: [
  293. {code: 'vertical', name: '竖排'},
  294. {code: 'horizontal', name: '横排'},
  295. ],
  296. value: 'horizontal'
  297. },
  298. ],
  299. },
  300. {
  301. name: 'X轴设置',
  302. list: [
  303. {
  304. type: 'el-switch',
  305. label: '显示',
  306. name: 'hideX',
  307. required: false,
  308. placeholder: '',
  309. value: true,
  310. },
  311. {
  312. type: 'el-input-text',
  313. label: '坐标名',
  314. name: 'xName',
  315. required: false,
  316. placeholder: '',
  317. value: ''
  318. },
  319. {
  320. type: 'vue-color',
  321. label: '坐标名颜色',
  322. name: 'nameColorX',
  323. required: false,
  324. placeholder: '',
  325. value: '#fff',
  326. },
  327. {
  328. type: 'el-input-number',
  329. label: '坐标字号',
  330. name: 'nameFontSizeX',
  331. required: false,
  332. placeholder: '',
  333. value: 14,
  334. },
  335. {
  336. type: 'vue-color',
  337. label: '数值颜色',
  338. name: 'Xcolor',
  339. required: false,
  340. placeholder: '',
  341. value: '#fff',
  342. },
  343. {
  344. type: 'el-input-number',
  345. label: '数值字号',
  346. name: 'fontSizeX',
  347. required: false,
  348. placeholder: '',
  349. value: 14,
  350. },
  351. {
  352. type: 'el-slider',
  353. label: '数值角度',
  354. name: 'textAngle',
  355. required: false,
  356. placeholder: '',
  357. value: 0
  358. },
  359. {
  360. type: 'el-input-number',
  361. label: '数值间隔',
  362. name: 'textInterval',
  363. required: false,
  364. placeholder: '',
  365. value: ''
  366. },
  367. {
  368. type: 'el-switch',
  369. label: '轴反转',
  370. name: 'reversalX',
  371. required: false,
  372. placeholder: '',
  373. value: false
  374. },
  375. {
  376. type: 'vue-color',
  377. label: '轴颜色',
  378. name: 'lineColorX',
  379. required: false,
  380. placeholder: '',
  381. value: '#fff',
  382. },
  383. {
  384. type: 'el-switch',
  385. label: '分割线显示',
  386. name: 'isShowSplitLineX',
  387. require: false,
  388. placeholder: '',
  389. value: false,
  390. },
  391. {
  392. type: 'vue-color',
  393. label: '分割线颜色',
  394. name: 'splitLineColorX',
  395. required: false,
  396. placeholder: '',
  397. value: '#fff',
  398. }
  399. ],
  400. },
  401. {
  402. name: 'Y轴设置',
  403. list: [
  404. {
  405. type: 'el-switch',
  406. label: '左显示',
  407. name: 'isShowYLeft',
  408. require: false,
  409. placeholder: '',
  410. value: true,
  411. },
  412. {
  413. type: 'el-input-text',
  414. label: '左坐标名',
  415. name: 'textNameYLeft',
  416. require: false,
  417. placeholder: '',
  418. value: ''
  419. },
  420. {
  421. type: 'vue-color',
  422. label: '左坐标名颜色',
  423. name: 'nameColorYLeft',
  424. required: false,
  425. placeholder: '',
  426. value: '#fff',
  427. },
  428. {
  429. type: 'el-input-number',
  430. label: '左坐标字号',
  431. name: 'namefontSizeYLeft',
  432. required: false,
  433. placeholder: '',
  434. value: 14,
  435. },
  436. {
  437. type: 'el-input-number',
  438. label: '左均分',
  439. name: 'splitNumberLeft',
  440. required: false,
  441. placeholder: '',
  442. value: ''
  443. },
  444. {
  445. type: 'el-switch',
  446. label: '右显示',
  447. name: 'isShowYRight',
  448. require: false,
  449. placeholder: '',
  450. value: true,
  451. },
  452. {
  453. type: 'el-input-text',
  454. label: '右坐标名',
  455. name: 'textNameYRight',
  456. require: false,
  457. placeholder: '',
  458. value: ''
  459. },
  460. {
  461. type: 'vue-color',
  462. label: '右坐标名颜色',
  463. name: 'nameColorYRight',
  464. required: false,
  465. placeholder: '',
  466. value: '#fff',
  467. },
  468. {
  469. type: 'el-input-number',
  470. label: '右坐标字号',
  471. name: 'namefontSizeYRight',
  472. required: false,
  473. placeholder: '',
  474. value: 14,
  475. },
  476. {
  477. type: 'el-input-number',
  478. label: '右均分',
  479. name: 'splitNumberRight',
  480. required: false,
  481. placeholder: '',
  482. value: ''
  483. },
  484. {
  485. type: 'vue-color',
  486. label: '数值颜色',
  487. name: 'colorY',
  488. required: false,
  489. placeholder: '',
  490. value: '#fff',
  491. },
  492. {
  493. type: 'el-input-number',
  494. label: '数值字号',
  495. name: 'fontSizeY',
  496. required: false,
  497. placeholder: '',
  498. value: 14,
  499. },
  500. {
  501. type: 'el-switch',
  502. label: '轴反转',
  503. name: 'reversalY',
  504. required: false,
  505. placeholder: '',
  506. value: false
  507. },
  508. {
  509. type: 'vue-color',
  510. label: '轴颜色',
  511. name: 'lineColorY',
  512. required: false,
  513. placeholder: '',
  514. value: '#fff',
  515. },
  516. ],
  517. },
  518. {
  519. name: '折线数值设定',
  520. list: [
  521. {
  522. type: 'el-switch',
  523. label: '显示',
  524. name: 'isShowLine',
  525. required: false,
  526. placeholder: '',
  527. value: false
  528. },
  529. {
  530. type: 'el-input-number',
  531. label: '距离',
  532. name: 'distanceLine',
  533. required: false,
  534. placeholder: '',
  535. value: 5
  536. },
  537. {
  538. type: 'el-input-number',
  539. label: '字体字号',
  540. name: 'fontSizeLine',
  541. required: false,
  542. placeholder: '',
  543. value: 14
  544. },
  545. {
  546. type: 'vue-color',
  547. label: '字体颜色',
  548. name: 'subTextColorLine',
  549. required: false,
  550. placeholder: '',
  551. value: '#fff'
  552. },
  553. {
  554. type: 'el-select',
  555. label: '字体粗细',
  556. name: 'fontWeightLine',
  557. required: false,
  558. placeholder: '',
  559. selectOptions: [
  560. {code: 'normal', name: '正常'},
  561. {code: 'bold', name: '粗体'},
  562. {code: 'bolder', name: '特粗体'},
  563. {code: 'lighter', name: '细体'}
  564. ],
  565. value: 'normal'
  566. },
  567. ],
  568. },
  569. {
  570. name: '柱体数值设定',
  571. list: [
  572. {
  573. type: 'el-switch',
  574. label: '显示',
  575. name: 'isShowBar',
  576. required: false,
  577. placeholder: '',
  578. value: false
  579. },
  580. {
  581. type: 'el-input-number',
  582. label: '距离',
  583. name: 'distanceBar',
  584. required: false,
  585. placeholder: '',
  586. value: 5
  587. },
  588. {
  589. type: 'el-input-number',
  590. label: '字体字号',
  591. name: 'fontSizeBar',
  592. required: false,
  593. placeholder: '',
  594. value: 14
  595. },
  596. {
  597. type: 'vue-color',
  598. label: '字体颜色',
  599. name: 'subTextColorBar',
  600. required: false,
  601. placeholder: '',
  602. value: '#fff'
  603. },
  604. {
  605. type: 'el-select',
  606. label: '字体粗细',
  607. name: 'fontWeightBar',
  608. required: false,
  609. placeholder: '',
  610. selectOptions: [
  611. {code: 'normal', name: '正常'},
  612. {code: 'bold', name: '粗体'},
  613. {code: 'bolder', name: '特粗体'},
  614. {code: 'lighter', name: '细体'}
  615. ],
  616. value: 'normal'
  617. },
  618. ],
  619. },
  620. {
  621. name: '提示语设置',
  622. list: [
  623. {
  624. type: 'el-input-number',
  625. label: '字体大小',
  626. name: 'tipFontSize',
  627. required: false,
  628. placeholder: '',
  629. value: 12
  630. },
  631. {
  632. type: 'vue-color',
  633. label: '字体颜色',
  634. name: 'lineColor',
  635. required: false,
  636. placeholder: '',
  637. value: '#e68b55'
  638. },
  639. ],
  640. },
  641. {
  642. name: '坐标轴边距设置',
  643. list: [
  644. {
  645. type: 'el-slider',
  646. label: '左边距(像素)',
  647. name: 'marginLeft',
  648. required: false,
  649. placeholder: '',
  650. value: 10,
  651. }, {
  652. type: 'el-slider',
  653. label: '顶边距(像素)',
  654. name: 'marginTop',
  655. required: false,
  656. placeholder: '',
  657. value: 50,
  658. }, {
  659. type: 'el-slider',
  660. label: '右边距(像素)',
  661. name: 'marginRight',
  662. required: false,
  663. placeholder: '',
  664. value: 40,
  665. }, {
  666. type: 'el-slider',
  667. label: '底边距(像素)',
  668. name: 'marginBottom',
  669. required: false,
  670. placeholder: '',
  671. value: 10,
  672. },
  673. ],
  674. },
  675. {
  676. name: '自定义配色',
  677. list: [
  678. {
  679. type: 'customColor',
  680. label: '',
  681. name: 'customColor',
  682. required: false,
  683. value: [{color: '#00F4FFFF'}, {color: '#e68b55'}],
  684. },
  685. ],
  686. },
  687. ],
  688. ],
  689. // 数据
  690. data: [
  691. {
  692. type: 'el-radio-group',
  693. label: '数据类型',
  694. name: 'dataType',
  695. require: false,
  696. placeholder: '',
  697. selectValue: true,
  698. selectOptions: [
  699. {
  700. code: 'staticData',
  701. name: '静态数据',
  702. },
  703. {
  704. code: 'dynamicData',
  705. name: '动态数据',
  706. },
  707. ],
  708. value: 'staticData',
  709. },
  710. {
  711. type: 'el-input-number',
  712. label: '刷新时间(毫秒)',
  713. name: 'refreshTime',
  714. relactiveDom: 'dataType',
  715. relactiveDomValue: 'dynamicData',
  716. value: 5000
  717. },
  718. {
  719. type: 'el-button',
  720. label: '静态数据',
  721. name: 'staticData',
  722. required: false,
  723. placeholder: '',
  724. relactiveDom: 'dataType',
  725. relactiveDomValue: 'staticData',
  726. value: [
  727. {"axis": "1月", "bar": 2.6, "line": 2},
  728. {"axis": "2月", "bar": 5.9, "line": 2.2},
  729. {"axis": "3月", "bar": 9, "line": 3.3},
  730. {"axis": "4月", "bar": 26.4, "line": 4.5},
  731. {"axis": "5月", "bar": 28.7, "line": 6.3},
  732. {"axis": "6月", "bar": 70.7, "line": 10.2},
  733. {"axis": "7月", "bar": 175.6, "line": 20.3},
  734. {"axis": "8月", "bar": 182.2, "line": 23.4},
  735. {"axis": "9月", "bar": 48.7, "line": 23},
  736. {"axis": "10月", "bar": 18.8, "line": 16.5},
  737. {"axis": "11月", "bar": 6, "line": 12},
  738. {"axis": "12月", "bar": 2.3, "line": 6.2},
  739. ]
  740. },
  741. {
  742. type: 'dycustComponents',
  743. label: '',
  744. name: 'dynamicData',
  745. required: false,
  746. placeholder: '',
  747. relactiveDom: 'dataType',
  748. chartType: 'widget-barlinechart',
  749. dictKey: 'BAR_LINE_PROPERTIES',
  750. relactiveDomValue: 'dynamicData',
  751. },
  752. ],
  753. // 坐标
  754. position: [
  755. {
  756. type: 'el-input-number',
  757. label: '左边距',
  758. name: 'left',
  759. required: false,
  760. placeholder: '',
  761. value: 0,
  762. },
  763. {
  764. type: 'el-input-number',
  765. label: '上边距',
  766. name: 'top',
  767. required: false,
  768. placeholder: '',
  769. value: 0,
  770. },
  771. {
  772. type: 'el-input-number',
  773. label: '宽度',
  774. name: 'width',
  775. required: false,
  776. placeholder: '该容器在1920px大屏中的宽度',
  777. value: 500,
  778. },
  779. {
  780. type: 'el-input-number',
  781. label: '高度',
  782. name: 'height',
  783. required: false,
  784. placeholder: '该容器在1080px大屏中的高度',
  785. value: 250,
  786. },
  787. ],
  788. }
  789. }