<!-- * @description: 渲染组件 * @Date: 2022-08-18 09:42:45 * @Author: xingheng --> <template> <div class="render-item-wrap"> <component :is="resolveComponentType(config.type)" :id="`${config.code}`" :ref="config.code" :key="config.key" :config="config" /> </div> </template> <script> // import commonMixins from 'packages/js/mixins/commonMixins' import { mapMutations } from 'vuex' import { resolveComponentType } from 'packages/js/utils' import pcComponent from 'packages/js/utils/componentImport' import { dataInit, destroyedEvent } from 'packages/js/utils/eventBus' import CustomComponent from '../PlotRender/index.vue' import Svgs from '../Svgs/index.vue' import RemoteComponent from 'packages/RemoteComponents/index.vue' const components = {} for (const key in pcComponent) { if (Object.hasOwnProperty.call(pcComponent, key)) { components[key] = pcComponent[key] } } export default { name: 'RenderCard', // mixins: [commonMixins], components: { ...components, CustomComponent, Svgs, RemoteComponent }, props: { // 卡片的属性 config: { type: Object, default: () => ({}) }, ruleKey: { type: Number, default: 0 } }, data () { return {} }, computed: {}, mounted () { // 调用初始化方法 dataInit(this) }, beforeDestroy () { destroyedEvent() }, methods: { ...mapMutations('bigScreen', [ 'changeChartConfig' ]), resolveComponentType } } </script> <style lang="scss" scoped> .render-item-wrap { width: 100%; height: 100%; display: flex; overflow: hidden; box-sizing: border-box; } </style>