index.vue 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. <template>
  2. <div class="basic-component-button">
  3. <el-button
  4. :type="config.customize.type"
  5. :round="config.customize.isRound"
  6. :plain="config.customize.isPlain"
  7. :loading="config.customize.isLoading"
  8. :style="{
  9. backgroundColor: config.customize.type ? null : config.customize.backgroundColor,
  10. borderColor: config.customize.borderStyle.borderColor,
  11. borderWidth: config.customize.borderStyle.borderWidth + 'px',
  12. borderStyle: config.customize.borderStyle.borderStyle,
  13. borderRadius: config.customize.borderStyle.borderRadius + 'px'
  14. }"
  15. :icon="config.customize.icon.position === 'left' ? config.customize.icon.name : ''"
  16. @click="handleClick"
  17. >
  18. <span :style="{ color: config.customize.fontColor, fontSize: config.customize.fontSize + 'px', }">
  19. {{ config.title }}
  20. <i
  21. v-if="config.customize.icon.position === 'right' && config.customize.icon.name"
  22. :class="config.customize.icon.name"
  23. />
  24. </span>
  25. </el-button>
  26. </div>
  27. </template>
  28. <script>
  29. import commonMixins from 'data-room-ui/js/mixins/commonMixins'
  30. import linkageMixins from 'data-room-ui/js/mixins/linkageMixins'
  31. import { mapState } from 'vuex'
  32. import {predefineColors} from "data-room-ui/js/utils/colorList";
  33. export default {
  34. name: 'BasicComponentButton',
  35. mixins: [commonMixins, linkageMixins],
  36. computed: {
  37. ...mapState({
  38. chartList: state => state.bigScreen.pageInfo.chartList
  39. })
  40. },
  41. props: {
  42. // 卡片的属性
  43. config: {
  44. type: Object,
  45. default: () => ({})
  46. },
  47. predefineThemeColors: {
  48. type: Array,
  49. default: () => predefineColors
  50. }
  51. },
  52. mounted () {
  53. // this.chartInit()
  54. },
  55. methods: {
  56. handleClick () {
  57. const bindComponentData = {}
  58. this.chartList.forEach(chart => {
  59. this.config.dataSource.dimensionFieldList.forEach(code => {
  60. if (chart.code === code) {
  61. bindComponentData[chart.code] = chart.customize.value
  62. }
  63. })
  64. })
  65. this.linkage(bindComponentData)
  66. }
  67. }
  68. }
  69. </script>
  70. <style lang="scss" scoped>
  71. .basic-component-button {
  72. width: 100%;
  73. height: 100%;
  74. .el-button {
  75. width: 100%;
  76. height: 100%;
  77. }
  78. }
  79. </style>