123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181 |
- <template>
- <div
- class="bs-design-wrap"
- :class="`bs-chart-tab-${customTheme}`"
- >
- <div
- v-if="config.customize.tabList.length"
- class="tab-title-box"
- :style="{'justify-content':config.customize.position}"
- >
- <div
- v-for="(tab,index) in config.customize.tabList"
- :key="index"
- class="tab-title-item"
- :class="{active:currentIndex === index}"
- :style="
- 'font-size:' +
- config.customize.fontSize +
- 'px;color:' +
- config.customize.color +
- ';font-weight:' +
- config.customize.fontWeight
- "
- @click="changeTab(index)"
- >
- {{ tab.name }}
- </div>
- </div>
- <div
- v-if="config.customize.tabList &&config.customize.tabList.length"
- class="line-box"
- :style="{'background-color':config.customize.lineColor}"
- />
- <div
- v-if="config.customize.tabList &&config.customize.tabList.length"
- class="chart-item-box"
- >
- <!-- <Configuration-->
- <!-- :config="config.customize.tabList[currentIndex].chart"-->
- <!-- @openRightPanel="openRightPanel"-->
- <!-- >-->
- <div
- v-if="config.customize.tabList[currentIndex].chartCode"
- class="configuration-wrap"
- :class="{
- 'active': activeCodes.includes(config.customize.tabList[currentIndex].chartCode),
- 'hover': hoverCode === config.customize.tabList[currentIndex].chartCode
- }"
- @mouseenter.stop="changeHover(config.customize.tabList[currentIndex].chartCode)"
- @mouseleave="changeHover('')"
- @click.stop="changeActive(config.customize.tabList[currentIndex].chartCode)"
- >
- <RenderCardInner
- :ref="'RenderCard' + config.customize.tabList[currentIndex].chartCode"
- :config="config.customize.tabList[currentIndex].chart"
- @click.native="currentChartHandler"
- />
- </div>
- <!-- </Configuration>-->
- </div>
- <el-empty
- v-else-if="!config.customize.tabList.length"
- description="请在右侧面板选择图表加入"
- />
- </div>
- </template>
- <script>
- import paramsMixins from 'data-room-ui/js/mixins/paramsMixins'
- import { settingToTheme } from 'data-room-ui/js/utils/themeFormatting'
- import cloneDeep from 'lodash/cloneDeep'
- import { mapMutations, mapState } from 'vuex'
- import RenderCardInner from 'data-room-ui/Render/RenderCard2.vue'
- import Configuration from 'data-room-ui/Render/Configuration.vue'
- import { EventBus } from 'data-room-ui/js/utils/eventBus'
- export default {
- name: 'ChartTab',
- components: { Configuration, RenderCardInner },
- mixins: [paramsMixins],
- props: {
- config: {
- type: Object,
- default: () => ({})
- }
- },
- computed: {
- ...mapState({
- pageCode: state => state.bigScreen.pageInfo.code,
- customTheme: state => state.bigScreen.pageInfo.pageConfig.customTheme,
- activeCode: state => state.bigScreen.activeCode,
- activeCodes: state => state.bigScreen.activeCodes,
- hoverCode: state => state.bigScreen.hoverCode,
- chartList: (state) => state.bigScreen.pageInfo.chartList
- })
- },
- data () {
- return {
- // currentChart: null
- currentIndex: 0
- }
- },
- mounted () {
- },
- // 销毁定时器
- destroyed () {
- if (this.timer) {
- clearInterval(this.timer) // 关闭
- }
- },
- methods: {
- ...mapMutations({
- changeChartConfig: 'bigScreen/changeChartConfig',
- changeActiveItemConfig: 'bigScreen/changeActiveItemConfig',
- changeActiveCode: 'bigScreen/changeActiveCode',
- changeHoverCode: 'bigScreen/changeHoverCode'
- }),
- changeStyle (config) {
- config = { ...this.config, ...config }
- // 样式改变时更新主题配置
- config.theme = settingToTheme(cloneDeep(config), this.customTheme)
- this.changeChartConfig(config)
- if (config.code === this.activeCode) {
- this.changeActiveItemConfig(config)
- }
- },
- // 切换tab页
- changeTab (index) {
- this.currentIndex = index
- },
- // 点击Tab中的某个组件
- currentChartHandler () {
- this.changeActiveCode(this.config.customize.tabList[this.currentIndex]?.chartCode)
- this.changeActiveItemConfig(this.config.customize.tabList[this.currentIndex]?.chart)
- },
- // 改变hover的组件
- changeHover (code) {
- this.changeHoverCode(code)
- },
- // 改变激活的组件
- changeActive (code) {
- this.changeActiveCode(code)
- }
- }
- }
- </script>
- <style lang="scss" scoped>
- .bs-design-wrap{
- width: 100%;
- .tab-title-box{
- height: 40px;
- display: flex;
- &:hover{
- cursor: pointer;
- }
- .tab-title-item{
- padding:10px;
- }
- }
- .chart-item-box{
- width: 100%;
- height: calc(100% - 40px);
- &:hover{
- cursor: pointer;
- }
- .configuration-wrap{
- width: 100%;
- height: calc(100% - 40px);
- }
- }
- .active{
- color: var(--bs-el-color-primary) !important;
- }
- .line-box{
- width: 98%;
- height: 1px;
- margin: 0 auto;
- //background-color: #d0d2d6;
- }
- }
- </style>
|