Commit 22a1a2d2de4c342784625897d1265f8debb49e63
1 parent
d22eabd2
fix(packages/compoents/external): 修复拓展组件生产环境无法使用问题
Showing
14 changed files
with
82 additions
and
412 deletions
| @@ -10,7 +10,7 @@ export const LeftCenterRightHeadConfig: ConfigType = { | @@ -10,7 +10,7 @@ export const LeftCenterRightHeadConfig: ConfigType = { | ||
| 10 | key, | 10 | key, | 
| 11 | chartKey, | 11 | chartKey, | 
| 12 | conKey, | 12 | conKey, | 
| 13 | - title: '头部组合1', | 13 | + title: '大标题', | 
| 14 | category: ChatCategoryEnum.HEADCOMBINATION, | 14 | category: ChatCategoryEnum.HEADCOMBINATION, | 
| 15 | categoryName: ChatCategoryEnumName.HEADCOMBINATION, | 15 | categoryName: ChatCategoryEnumName.HEADCOMBINATION, | 
| 16 | package: EPackagesCategoryEnum.COMPOSES, | 16 | package: EPackagesCategoryEnum.COMPOSES, | 
| @@ -10,10 +10,10 @@ export const LeftCenterRightHeadAnimatConfig: ConfigType = { | @@ -10,10 +10,10 @@ export const LeftCenterRightHeadAnimatConfig: ConfigType = { | ||
| 10 | key, | 10 | key, | 
| 11 | chartKey, | 11 | chartKey, | 
| 12 | conKey, | 12 | conKey, | 
| 13 | - title: '头部组合3', | 13 | + title: '大标题2', | 
| 14 | category: ChatCategoryEnum.HEADCOMBINATION, | 14 | category: ChatCategoryEnum.HEADCOMBINATION, | 
| 15 | categoryName: ChatCategoryEnumName.HEADCOMBINATION, | 15 | categoryName: ChatCategoryEnumName.HEADCOMBINATION, | 
| 16 | package: EPackagesCategoryEnum.COMPOSES, | 16 | package: EPackagesCategoryEnum.COMPOSES, | 
| 17 | chartFrame: ChartFrameEnum.COMMON, | 17 | chartFrame: ChartFrameEnum.COMMON, | 
| 18 | - image: 'left_center_rightHead.png', | 18 | + image: 'decorates02.png', | 
| 19 | } | 19 | } | 
src/packages/components/external/Composes/HeadCombinations/LeftCenterRightHeadCommon/config.ts
deleted
100644 → 0
| 1 | -import { PublicConfigClass } from '@/packages/public' | ||
| 2 | -import { CreateComponentType } from '@/packages/index.d' | ||
| 3 | -import { LeftCenterRightHeadCommonConfig } from './index' | ||
| 4 | -import cloneDeep from 'lodash/cloneDeep' | ||
| 5 | - | ||
| 6 | -export const option = { | ||
| 7 | - //左边颜色 | ||
| 8 | - colorLefts: ['#1dc1f5', '#1dc1f5'], | ||
| 9 | - //中间标题颜色 | ||
| 10 | - colorTexts: ['#1DC1F533', '#1DC1F5FF'], | ||
| 11 | - //右边颜色 | ||
| 12 | - colorRights: ['#1dc1f5', '#1dc1f5'], | ||
| 13 | - //头部左边尺寸位置配置 | ||
| 14 | - headLeftInfo: { | ||
| 15 | - w: 700, | ||
| 16 | - h: 300, | ||
| 17 | - ml: 0, | ||
| 18 | - mt: 0, | ||
| 19 | - headLeftReverse: false | ||
| 20 | - }, | ||
| 21 | - //头部中间尺寸位置配置 | ||
| 22 | - headCenterInfo: { | ||
| 23 | - w: 500, | ||
| 24 | - h: 70, | ||
| 25 | - ml: 235, | ||
| 26 | - mt: 125, | ||
| 27 | - dataset: '我是标题', | ||
| 28 | - textColor: '#fff', | ||
| 29 | - textSize: 32 | ||
| 30 | - }, | ||
| 31 | - //头部右边尺寸位置配置 | ||
| 32 | - headRightInfo: { | ||
| 33 | - w: 700, | ||
| 34 | - h: 300, | ||
| 35 | - ml: 245, | ||
| 36 | - mt: 0, | ||
| 37 | - headRightReverse: true | ||
| 38 | - } | ||
| 39 | -} | ||
| 40 | - | ||
| 41 | -export default class Config extends PublicConfigClass implements CreateComponentType { | ||
| 42 | - public key = LeftCenterRightHeadCommonConfig.key | ||
| 43 | - public chartConfig = cloneDeep(LeftCenterRightHeadCommonConfig) | ||
| 44 | - public option = cloneDeep(option) | ||
| 45 | -} | 
src/packages/components/external/Composes/HeadCombinations/LeftCenterRightHeadCommon/config.vue
deleted
100644 → 0
| 1 | -<template> | ||
| 2 | - <CollapseItem name="头部左侧配置" :expanded="true"> | ||
| 3 | - <SettingItemBox :name="`颜色-${index + 1}`" v-for="(item, index) in optionData.colorLefts" :key="index"> | ||
| 4 | - <SettingItem name="颜色"> | ||
| 5 | - <n-color-picker size="small" :modes="['hex']" v-model:value="optionData.colorLefts[index]"></n-color-picker> | ||
| 6 | - </SettingItem> | ||
| 7 | - <SettingItem> | ||
| 8 | - <n-button size="small" @click="optionData.colorLefts[index] = option.colorLefts[index]"> 恢复默认 </n-button> | ||
| 9 | - </SettingItem> | ||
| 10 | - </SettingItemBox> | ||
| 11 | - <SettingItemBox name="大小"> | ||
| 12 | - <SettingItem name="宽度"> | ||
| 13 | - <n-input-number size="small" v-model:value="optionData.headLeftInfo.w"></n-input-number> | ||
| 14 | - </SettingItem> | ||
| 15 | - <SettingItem name="高度"> | ||
| 16 | - <n-input-number size="small" v-model:value="optionData.headLeftInfo.h"></n-input-number> | ||
| 17 | - </SettingItem> | ||
| 18 | - </SettingItemBox> | ||
| 19 | - <SettingItemBox name="间距"> | ||
| 20 | - <SettingItem name="左间距"> | ||
| 21 | - <n-input-number size="small" v-model:value="optionData.headLeftInfo.ml"></n-input-number> | ||
| 22 | - </SettingItem> | ||
| 23 | - <SettingItem name="上间距"> | ||
| 24 | - <n-input-number size="small" v-model:value="optionData.headLeftInfo.mt"></n-input-number> | ||
| 25 | - </SettingItem> | ||
| 26 | - </SettingItemBox> | ||
| 27 | - <SettingItemBox name="方向"> | ||
| 28 | - <SettingItem> | ||
| 29 | - <n-space> | ||
| 30 | - <n-switch v-model:value="optionData.headLeftInfo.headLeftReverse" size="small" /> | ||
| 31 | - <n-text>开启反向</n-text> | ||
| 32 | - </n-space> | ||
| 33 | - </SettingItem> | ||
| 34 | - </SettingItemBox> | ||
| 35 | - </CollapseItem> | ||
| 36 | - <CollapseItem name="头部中间配置" :expanded="true"> | ||
| 37 | - <SettingItemBox :name="`颜色-${index + 1}`" v-for="(item, index) in optionData.colorTexts" :key="index"> | ||
| 38 | - <SettingItem name="颜色"> | ||
| 39 | - <n-color-picker size="small" :modes="['hex']" v-model:value="optionData.colorTexts[index]"></n-color-picker> | ||
| 40 | - </SettingItem> | ||
| 41 | - <SettingItem> | ||
| 42 | - <n-button size="small" @click="optionData.colorTexts[index] = option.colorTexts[index]"> 恢复默认 </n-button> | ||
| 43 | - </SettingItem> | ||
| 44 | - </SettingItemBox> | ||
| 45 | - <SettingItemBox name="文字" alone> | ||
| 46 | - <SettingItem> | ||
| 47 | - <n-input v-model:value="optionData.headCenterInfo.dataset" size="small"></n-input> | ||
| 48 | - </SettingItem> | ||
| 49 | - </SettingItemBox> | ||
| 50 | - <SettingItemBox name="样式"> | ||
| 51 | - <SettingItem name="颜色"> | ||
| 52 | - <n-color-picker | ||
| 53 | - size="small" | ||
| 54 | - :modes="['hex']" | ||
| 55 | - v-model:value="optionData.headCenterInfo.textColor" | ||
| 56 | - ></n-color-picker> | ||
| 57 | - </SettingItem> | ||
| 58 | - <SettingItem name="大小"> | ||
| 59 | - <n-input-number v-model:value="optionData.headCenterInfo.textSize" size="small" :min="12"></n-input-number> | ||
| 60 | - </SettingItem> | ||
| 61 | - </SettingItemBox> | ||
| 62 | - <SettingItemBox name="大小"> | ||
| 63 | - <SettingItem name="宽度"> | ||
| 64 | - <n-input-number size="small" v-model:value="optionData.headCenterInfo.w"></n-input-number> | ||
| 65 | - </SettingItem> | ||
| 66 | - <SettingItem name="高度"> | ||
| 67 | - <n-input-number size="small" v-model:value="optionData.headCenterInfo.h"></n-input-number> | ||
| 68 | - </SettingItem> | ||
| 69 | - </SettingItemBox> | ||
| 70 | - <SettingItemBox name="间距"> | ||
| 71 | - <SettingItem name="左间距"> | ||
| 72 | - <n-input-number size="small" v-model:value="optionData.headCenterInfo.ml"></n-input-number> | ||
| 73 | - </SettingItem> | ||
| 74 | - <SettingItem name="上间距"> | ||
| 75 | - <n-input-number size="small" v-model:value="optionData.headCenterInfo.mt"></n-input-number> | ||
| 76 | - </SettingItem> | ||
| 77 | - </SettingItemBox> | ||
| 78 | - </CollapseItem> | ||
| 79 | - <CollapseItem name="头部右侧配置" :expanded="true"> | ||
| 80 | - <SettingItemBox :name="`颜色-${index + 1}`" v-for="(item, index) in optionData.colorRights" :key="index"> | ||
| 81 | - <SettingItem name="颜色"> | ||
| 82 | - <n-color-picker size="small" :modes="['hex']" v-model:value="optionData.colorRights[index]"></n-color-picker> | ||
| 83 | - </SettingItem> | ||
| 84 | - <SettingItem> | ||
| 85 | - <n-button size="small" @click="optionData.colorRights[index] = option.colorRights[index]"> 恢复默认 </n-button> | ||
| 86 | - </SettingItem> | ||
| 87 | - </SettingItemBox> | ||
| 88 | - <SettingItemBox name="大小"> | ||
| 89 | - <SettingItem name="宽度"> | ||
| 90 | - <n-input-number size="small" v-model:value="optionData.headRightInfo.w"></n-input-number> | ||
| 91 | - </SettingItem> | ||
| 92 | - <SettingItem name="高度"> | ||
| 93 | - <n-input-number size="small" v-model:value="optionData.headRightInfo.h"></n-input-number> | ||
| 94 | - </SettingItem> | ||
| 95 | - </SettingItemBox> | ||
| 96 | - <SettingItemBox name="间距"> | ||
| 97 | - <SettingItem name="左间距"> | ||
| 98 | - <n-input-number size="small" v-model:value="optionData.headRightInfo.ml"></n-input-number> | ||
| 99 | - </SettingItem> | ||
| 100 | - <SettingItem name="上间距"> | ||
| 101 | - <n-input-number size="small" v-model:value="optionData.headRightInfo.mt"></n-input-number> | ||
| 102 | - </SettingItem> | ||
| 103 | - </SettingItemBox> | ||
| 104 | - <SettingItemBox name="方向"> | ||
| 105 | - <SettingItem> | ||
| 106 | - <n-space> | ||
| 107 | - <n-switch v-model:value="optionData.headRightInfo.headRightReverse" size="small" /> | ||
| 108 | - <n-text>开启反向</n-text> | ||
| 109 | - </n-space> | ||
| 110 | - </SettingItem> | ||
| 111 | - </SettingItemBox> | ||
| 112 | - </CollapseItem> | ||
| 113 | -</template> | ||
| 114 | - | ||
| 115 | -<script setup lang="ts"> | ||
| 116 | -import { PropType } from 'vue' | ||
| 117 | -import { option } from './config' | ||
| 118 | -import { CollapseItem, SettingItemBox, SettingItem } from '@/components/Pages/ChartItemSetting' | ||
| 119 | - | ||
| 120 | -defineProps({ | ||
| 121 | - optionData: { | ||
| 122 | - type: Object as any as PropType<typeof option>, | ||
| 123 | - required: true | ||
| 124 | - } | ||
| 125 | -}) | ||
| 126 | -</script> | 
src/packages/components/external/Composes/HeadCombinations/LeftCenterRightHeadCommon/index.ts
deleted
100644 → 0
| 1 | -import { ChartFrameEnum, ConfigType } from '@/packages/index.d' | ||
| 2 | -import { EPackagesCategoryEnum } from '@/packages/components/external/types' | ||
| 3 | -import { ChatCategoryEnum, ChatCategoryEnumName } from '../../index.d' | ||
| 4 | -import { useWidgetKey } from '@/packages/external/useWidgetKey' | ||
| 5 | - | ||
| 6 | -const { key, chartKey, conKey } = useWidgetKey('LeftCenterRightHeadCommon') | ||
| 7 | -export const LeftCenterRightHeadCommonConfig: ConfigType = { | ||
| 8 | - key, | ||
| 9 | - chartKey, | ||
| 10 | - conKey, | ||
| 11 | - title: '头部组合2', | ||
| 12 | - category: ChatCategoryEnum.HEADCOMBINATION, | ||
| 13 | - categoryName: ChatCategoryEnumName.HEADCOMBINATION, | ||
| 14 | - package: EPackagesCategoryEnum.COMPOSES, | ||
| 15 | - chartFrame: ChartFrameEnum.COMMON, | ||
| 16 | - image: 'customHead2.png', | ||
| 17 | -} | 
src/packages/components/external/Composes/HeadCombinations/LeftCenterRightHeadCommon/index.vue
deleted
100644 → 0
| 1 | -<template> | ||
| 2 | - <div style="display: flex"> | ||
| 3 | - <n-grid :x-gap="12" :y-gap="12" :cols="4" layout-shift-disabled> | ||
| 4 | - <n-gi> | ||
| 5 | - <div :style="{ marginLeft: headLeftInfo.ml + 'px', marginTop: headLeftInfo.mt + 'px' }"> | ||
| 6 | - <svg :width="headLeftInfo.w + 'px'" :height="headLeftInfo.h + 'px'"> | ||
| 7 | - <polyline | ||
| 8 | - :stroke="colorLefts[0]" | ||
| 9 | - stroke-width="2" | ||
| 10 | - fill="transparent" | ||
| 11 | - :points="`${xLeftPos(0)}, 0 ${xLeftPos(30)}, ${headLeftInfo.h / 2}`" | ||
| 12 | - /> | ||
| 13 | - <polyline | ||
| 14 | - :stroke="colorLefts[0]" | ||
| 15 | - stroke-width="2" | ||
| 16 | - fill="transparent" | ||
| 17 | - :points="`${xLeftPos(20)}, 0 ${xLeftPos(50)}, ${headLeftInfo.h / 2} ${xLeftPos(headLeftInfo.w)}, ${ | ||
| 18 | - headLeftInfo.h / 2 | ||
| 19 | - }`" | ||
| 20 | - /> | ||
| 21 | - <polyline | ||
| 22 | - :stroke="colorLefts[1]" | ||
| 23 | - fill="transparent" | ||
| 24 | - stroke-width="3" | ||
| 25 | - :points="`${xLeftPos(0)}, ${headLeftInfo.h - 3}, ${xLeftPos(200)}, ${headLeftInfo.h - 3}`" | ||
| 26 | - /> | ||
| 27 | - </svg> | ||
| 28 | - </div> | ||
| 29 | - </n-gi> | ||
| 30 | - <n-gi> | ||
| 31 | - <div :style="{ top: headCenterInfo.mt + 'px', left: headCenterInfo.ml + 'px' }" class="go-border-06"> | ||
| 32 | - <svg xmlns="http://www.w3.org/2000/svg" :width="headCenterInfo.w" :height="headCenterInfo.h"> | ||
| 33 | - <polygon class="stroke fill" :points="`15.5 6.5 20.5 0.5 50.5 0.5 55.5 6.5 15.5 6.5`" /> | ||
| 34 | - <polygon | ||
| 35 | - class="stroke fill" | ||
| 36 | - :points="`15.5 ${headCenterInfo.h - 6.5} 20.5 ${headCenterInfo.h - 0.5} 50.5 ${ | ||
| 37 | - headCenterInfo.h - 0.5 | ||
| 38 | - } 55.5 ${headCenterInfo.h - 6.5} 15.5 ${headCenterInfo.h - 6.5}`" | ||
| 39 | - /> | ||
| 40 | - <polygon | ||
| 41 | - class="stroke fill" | ||
| 42 | - :points="`${headCenterInfo.w - 15.5} 6.5 ${headCenterInfo.w - 20.5} 0.5 ${headCenterInfo.w - 50.5} 0.5 ${ | ||
| 43 | - headCenterInfo.w - 55.5 | ||
| 44 | - } 6.5 ${headCenterInfo.w - 15.5} 6.5`" | ||
| 45 | - /> | ||
| 46 | - <polygon | ||
| 47 | - class="stroke fill" | ||
| 48 | - :points="`${headCenterInfo.w - 15.5} ${headCenterInfo.h - 6.5} ${headCenterInfo.w - 20.5} ${ | ||
| 49 | - headCenterInfo.h - 0.5 | ||
| 50 | - } ${headCenterInfo.w - 50.5} ${headCenterInfo.h - 0.5} ${headCenterInfo.w - 55.5} ${ | ||
| 51 | - headCenterInfo.h - 6.5 | ||
| 52 | - } ${headCenterInfo.w - 15.5} ${headCenterInfo.h - 6.5}`" | ||
| 53 | - /> | ||
| 54 | - <polygon | ||
| 55 | - class="stroke fill" | ||
| 56 | - :points="`15.5 6.5 0.5 ${headCenterInfo.h / 2} 15.5 ${headCenterInfo.h - 6.5} ${ | ||
| 57 | - headCenterInfo.w - 15.5 | ||
| 58 | - } ${headCenterInfo.h - 6.5} ${headCenterInfo.w - 0.5} ${headCenterInfo.h / 2} ${ | ||
| 59 | - headCenterInfo.w - 15.5 | ||
| 60 | - } 6.5 15.5 6.5`" | ||
| 61 | - /> | ||
| 62 | - <polyline | ||
| 63 | - class="stroke fill-none" | ||
| 64 | - :points="`20.5 14.5 8.5 ${headCenterInfo.h / 2} 20.5 ${headCenterInfo.h - 14.5}`" | ||
| 65 | - /> | ||
| 66 | - <polyline | ||
| 67 | - class="stroke fill-none" | ||
| 68 | - :points="`${headCenterInfo.w - 20.5} 14.5 ${headCenterInfo.w - 8.5} ${headCenterInfo.h / 2} ${ | ||
| 69 | - headCenterInfo.w - 20.5 | ||
| 70 | - } ${headCenterInfo.h - 14.5}`" | ||
| 71 | - /> | ||
| 72 | - </svg> | ||
| 73 | - <span class="text">{{ headCenterInfo.dataset }}</span> | ||
| 74 | - </div> | ||
| 75 | - </n-gi> | ||
| 76 | - <n-gi> | ||
| 77 | - <div :style="{ marginLeft: headRightInfo.ml + 'px', marginTop: headRightInfo.mt + 'px' }"> | ||
| 78 | - <svg :width="headRightInfo.w" :height="headRightInfo.h"> | ||
| 79 | - <polyline | ||
| 80 | - :stroke="colorRights[0]" | ||
| 81 | - stroke-width="2" | ||
| 82 | - fill="transparent" | ||
| 83 | - :points="`${xRightPos(0)}, 0 ${xRightPos(30)}, ${headRightInfo.h / 2}`" | ||
| 84 | - /> | ||
| 85 | - <polyline | ||
| 86 | - :stroke="colorRights[0]" | ||
| 87 | - stroke-width="2" | ||
| 88 | - fill="transparent" | ||
| 89 | - :points="`${xRightPos(20)}, 0 ${xRightPos(50)}, ${headRightInfo.h / 2} ${xRightPos(headRightInfo.w)}, ${ | ||
| 90 | - headRightInfo.h / 2 | ||
| 91 | - }`" | ||
| 92 | - /> | ||
| 93 | - <polyline | ||
| 94 | - :stroke="colorRights[1]" | ||
| 95 | - fill="transparent" | ||
| 96 | - stroke-width="3" | ||
| 97 | - :points="`${xRightPos(0)}, ${headRightInfo.h - 3}, ${xRightPos(200)}, ${headRightInfo.h - 3}`" | ||
| 98 | - /> | ||
| 99 | - </svg> | ||
| 100 | - </div> | ||
| 101 | - </n-gi> | ||
| 102 | - </n-grid> | ||
| 103 | - </div> | ||
| 104 | -</template> | ||
| 105 | -<script setup lang="ts"> | ||
| 106 | -import { PropType, toRefs } from 'vue' | ||
| 107 | -import { CreateComponentType } from '@/packages/index.d' | ||
| 108 | - | ||
| 109 | -const props = defineProps({ | ||
| 110 | - chartConfig: { | ||
| 111 | - type: Object as PropType<CreateComponentType>, | ||
| 112 | - required: true | ||
| 113 | - } | ||
| 114 | -}) | ||
| 115 | - | ||
| 116 | -//默认设置宽高距离位置 | ||
| 117 | -props.chartConfig.attr.w = 1920 | ||
| 118 | -props.chartConfig.attr.h = 300 | ||
| 119 | -props.chartConfig.attr.x = 0 | ||
| 120 | -props.chartConfig.attr.y = 0 | ||
| 121 | - | ||
| 122 | -const { headLeftInfo, headCenterInfo, headRightInfo, colorLefts, colorRights, colorTexts } = toRefs( | ||
| 123 | - props.chartConfig.option | ||
| 124 | -) | ||
| 125 | - | ||
| 126 | -const xLeftPos = (pos: number) => { | ||
| 127 | - if (!headLeftInfo.value.headLeftReverse) return pos | ||
| 128 | - return headLeftInfo.value.w - pos | ||
| 129 | -} | ||
| 130 | - | ||
| 131 | -const xRightPos = (pos: number) => { | ||
| 132 | - if (!headRightInfo.value.headRightReverse) return pos | ||
| 133 | - return headRightInfo.value.w - pos | ||
| 134 | -} | ||
| 135 | -</script> | ||
| 136 | - | ||
| 137 | -<style lang="scss" scoped> | ||
| 138 | -@include go('border-06') { | ||
| 139 | - position: relative; | ||
| 140 | - display: flex; | ||
| 141 | - justify-content: center; | ||
| 142 | - align-items: center; | ||
| 143 | - | ||
| 144 | - svg { | ||
| 145 | - position: absolute; | ||
| 146 | - z-index: -1; | ||
| 147 | - } | ||
| 148 | - | ||
| 149 | - .fill { | ||
| 150 | - fill: v-bind('colorTexts[0]'); | ||
| 151 | - } | ||
| 152 | - .fill-none { | ||
| 153 | - fill: none; | ||
| 154 | - } | ||
| 155 | - .stroke { | ||
| 156 | - stroke: v-bind('colorTexts[1]'); | ||
| 157 | - } | ||
| 158 | - | ||
| 159 | - .text { | ||
| 160 | - color: v-bind('headCenterInfo.textColor'); | ||
| 161 | - font-size: v-bind('headCenterInfo.textSize+"px"'); | ||
| 162 | - } | ||
| 163 | -} | ||
| 164 | -</style> | 
| 1 | import { LeftCenterRightHeadConfig } from './LeftCenterRightHead/index' | 1 | import { LeftCenterRightHeadConfig } from './LeftCenterRightHead/index' | 
| 2 | -import { LeftCenterRightHeadCommonConfig } from './LeftCenterRightHeadCommon/index' | ||
| 3 | import { LeftCenterRightHeadAnimatConfig } from './LeftCenterRightHeadAnimat/index' | 2 | import { LeftCenterRightHeadAnimatConfig } from './LeftCenterRightHeadAnimat/index' | 
| 4 | 3 | ||
| 5 | -export default [LeftCenterRightHeadConfig, LeftCenterRightHeadCommonConfig,LeftCenterRightHeadAnimatConfig] | 4 | +export default [LeftCenterRightHeadConfig, LeftCenterRightHeadAnimatConfig] | 
| @@ -4,24 +4,24 @@ import { TitleConfig } from './index' | @@ -4,24 +4,24 @@ import { TitleConfig } from './index' | ||
| 4 | import cloneDeep from 'lodash/cloneDeep' | 4 | import cloneDeep from 'lodash/cloneDeep' | 
| 5 | 5 | ||
| 6 | export const option = { | 6 | export const option = { | 
| 7 | - dataset:'我是标题', | ||
| 8 | - attribute:{ | ||
| 9 | - titleColor:'#fff', | ||
| 10 | - titleSize:'16', | ||
| 11 | - svg_7:'blue', | ||
| 12 | - svg_8:'red', | ||
| 13 | - svg_16:'red', | ||
| 14 | - svg_14:'red', | ||
| 15 | - svg_21:'red', | ||
| 16 | - svg_7_opacity:1, | ||
| 17 | - svg_8_opacity:1, | ||
| 18 | - svg_16_opacity:1, | ||
| 19 | - svg_14_opacity:1, | ||
| 20 | - linearGradient:{ | ||
| 21 | - stop_color1:'#447799', | ||
| 22 | - stop_color2:'#224488', | ||
| 23 | - svg_21_opacity1:1, | ||
| 24 | - svg_21_opacity2:1, | 7 | + dataset: '我是标题', | 
| 8 | + attribute: { | ||
| 9 | + titleColor: '#fff', | ||
| 10 | + titleSize: 16, | ||
| 11 | + svg_7: 'blue', | ||
| 12 | + svg_8: 'red', | ||
| 13 | + svg_16: 'red', | ||
| 14 | + svg_14: 'red', | ||
| 15 | + svg_21: 'red', | ||
| 16 | + svg_7_opacity: 1, | ||
| 17 | + svg_8_opacity: 1, | ||
| 18 | + svg_16_opacity: 1, | ||
| 19 | + svg_14_opacity: 1, | ||
| 20 | + linearGradient: { | ||
| 21 | + stop_color1: '#447799', | ||
| 22 | + stop_color2: '#224488', | ||
| 23 | + svg_21_opacity1: 1, | ||
| 24 | + svg_21_opacity2: 1, | ||
| 25 | } | 25 | } | 
| 26 | } | 26 | } | 
| 27 | } | 27 | } | 
| @@ -8,7 +8,7 @@ export const TitleConfig: ConfigType = { | @@ -8,7 +8,7 @@ export const TitleConfig: ConfigType = { | ||
| 8 | key, | 8 | key, | 
| 9 | chartKey, | 9 | chartKey, | 
| 10 | conKey, | 10 | conKey, | 
| 11 | - title: '标题', | 11 | + title: '小标题', | 
| 12 | category: ChatCategoryEnum.MORE, | 12 | category: ChatCategoryEnum.MORE, | 
| 13 | categoryName: ChatCategoryEnumName.MORE, | 13 | categoryName: ChatCategoryEnumName.MORE, | 
| 14 | package: EPackagesCategoryEnum.COMPOSES, | 14 | package: EPackagesCategoryEnum.COMPOSES, | 
| 1 | <template> | 1 | <template> | 
| 2 | - <div class="go-content-box" > | ||
| 3 | -<svg xmlns="http://www.w3.org/2000/svg" width="782" height="600"> | ||
| 4 | - <defs> | ||
| 5 | - <defs> | ||
| 6 | - <linearGradient id="my-cool-gradient" x1="0%" y1="0%" x2="100%" y2="0%"> | ||
| 7 | - <stop offset="0%" :style="{stopColor:attribute.linearGradient.stop_color1,stopOpacity:attribute.linearGradient.svg_21_opacity1 }"/> | ||
| 8 | - <stop offset="100%" :style="{stopColor:attribute.linearGradient.stop_color2,stopOpacity:attribute.linearGradient.svg_21_opacity2}"/> | ||
| 9 | - </linearGradient> | ||
| 10 | - </defs> | ||
| 11 | - </defs> | ||
| 12 | - <g> | ||
| 13 | - <rect stroke="#000" id="svg_6" height="0" width="2" y="189.5" x="523" fill="#fff"/> | ||
| 14 | - <path :opacity="attribute.svg_7_opacity" transform="rotate(-137 422.766 284.992)" stroke="#000" id="svg_7" d="m412.87465,287.39672l3.95636,-4.80932l15.82545,0l-3.95636,4.80932l-15.82545,0z" :fill="attribute.svg_7"/> | ||
| 15 | - <path :opacity="attribute.svg_8_opacity" transform="rotate(44 444.883 283.871)" stroke="#000" id="svg_8" d="m435.52609,286.39738l3.74294,-5.0534l14.97175,0l-3.74294,5.0534l-14.97175,0z" :fill="attribute.svg_8"/> | ||
| 16 | - <rect id="svg_10" height="0" width="1" y="242.5" x="235" stroke="#000" fill="#fff"/> | ||
| 17 | - <text xml:space="preserve" text-anchor="start" font-family="Noto Sans JP" :font-size="attribute.titleSize" stroke-width="0" id="svg_12" y="290.5" x="214" stroke="#000" :fill="attribute.titleColor">{{ dataset }}</text> | ||
| 18 | - <path :opacity="attribute.svg_14_opacity" transform="rotate(90 198.922 284.168)" stroke="#000" id="svg_14" d="m193.42189,288.16843l5.50043,-8.00001l5.50043,8.00001l-11.00085,0z" stroke-width="0" :fill="attribute.svg_14"/> | ||
| 19 | - <path id="svg_15" d="m259.7,311.34437l0.5,-1.00001l0.5,1.00001l-1.00001,0z" stroke-width="0" stroke="#000" fill="#000000"/> | ||
| 20 | - <rect stroke="#000" id="svg_16" height="33" width="4" y="269" x="181" :fill="attribute.svg_16" :opacity="attribute.svg_16_opacity"/> | ||
| 21 | - <rect id="svg_17" height="0" width="2" y="368.5" x="187" stroke="#000" fill="#6D97AB"/> | ||
| 22 | - <rect id="svg_18" height="13" width="0" y="290.5" x="167" stroke="#000" fill="#6D97AB"/> | ||
| 23 | - <rect id="svg_20" height="0" width="1" y="193.5" x="281" stroke="#000" fill="#6D97AB"/> | ||
| 24 | - <path stroke="#000" id="svg_21" d="m184,269l299.00001,0l0,33l-299.00001,0l0,-33z" opacity="0.35" fill="url(#my-cool-gradient)"/> | ||
| 25 | - </g> | 2 | + <div class="go-content-box"> | 
| 3 | + <svg xmlns="http://www.w3.org/2000/svg" width="782" height="600"> | ||
| 4 | + <defs> | ||
| 5 | + <defs> | ||
| 6 | + <linearGradient id="my-cool-gradient" x1="0%" y1="0%" x2="100%" y2="0%"> | ||
| 7 | + <stop offset="0%" | ||
| 8 | + :style="{ stopColor: attribute.linearGradient.stop_color1, stopOpacity: attribute.linearGradient.svg_21_opacity1 }" /> | ||
| 9 | + <stop offset="100%" | ||
| 10 | + :style="{ stopColor: attribute.linearGradient.stop_color2, stopOpacity: attribute.linearGradient.svg_21_opacity2 }" /> | ||
| 11 | + </linearGradient> | ||
| 12 | + </defs> | ||
| 13 | + </defs> | ||
| 14 | + <g> | ||
| 15 | + <rect stroke="#000" id="svg_6" height="0" width="2" y="189.5" x="523" fill="#fff" /> | ||
| 16 | + <path :opacity="attribute.svg_7_opacity" transform="rotate(-137 422.766 284.992)" stroke="#000" id="svg_7" | ||
| 17 | + d="m412.87465,287.39672l3.95636,-4.80932l15.82545,0l-3.95636,4.80932l-15.82545,0z" :fill="attribute.svg_7" /> | ||
| 18 | + <path :opacity="attribute.svg_8_opacity" transform="rotate(44 444.883 283.871)" stroke="#000" id="svg_8" | ||
| 19 | + d="m435.52609,286.39738l3.74294,-5.0534l14.97175,0l-3.74294,5.0534l-14.97175,0z" :fill="attribute.svg_8" /> | ||
| 20 | + <rect id="svg_10" height="0" width="1" y="242.5" x="235" stroke="#000" fill="#fff" /> | ||
| 21 | + <text xml:space="preserve" text-anchor="start" font-family="Noto Sans JP" :font-size="attribute.titleSize" | ||
| 22 | + stroke-width="0" id="svg_12" y="290.5" x="214" stroke="#000" :fill="attribute.titleColor">{{ dataset }}</text> | ||
| 23 | + <path :opacity="attribute.svg_14_opacity" transform="rotate(90 198.922 284.168)" stroke="#000" id="svg_14" | ||
| 24 | + d="m193.42189,288.16843l5.50043,-8.00001l5.50043,8.00001l-11.00085,0z" stroke-width="0" | ||
| 25 | + :fill="attribute.svg_14" /> | ||
| 26 | + <path id="svg_15" d="m259.7,311.34437l0.5,-1.00001l0.5,1.00001l-1.00001,0z" stroke-width="0" stroke="#000" | ||
| 27 | + fill="#000000" /> | ||
| 28 | + <rect stroke="#000" id="svg_16" height="33" width="4" y="269" x="181" :fill="attribute.svg_16" | ||
| 29 | + :opacity="attribute.svg_16_opacity" /> | ||
| 30 | + <rect id="svg_17" height="0" width="2" y="368.5" x="187" stroke="#000" fill="#6D97AB" /> | ||
| 31 | + <rect id="svg_18" height="13" width="0" y="290.5" x="167" stroke="#000" fill="#6D97AB" /> | ||
| 32 | + <rect id="svg_20" height="0" width="1" y="193.5" x="281" stroke="#000" fill="#6D97AB" /> | ||
| 33 | + <path stroke="#000" id="svg_21" d="m184,269l299.00001,0l0,33l-299.00001,0l0,-33z" opacity="0.35" | ||
| 34 | + fill="url(#my-cool-gradient)" /> | ||
| 35 | + </g> | ||
| 26 | 36 | ||
| 27 | -</svg> | 37 | + </svg> | 
| 28 | </div> | 38 | </div> | 
| 29 | </template> | 39 | </template> | 
| 30 | <script setup lang="ts"> | 40 | <script setup lang="ts"> | 
| @@ -44,7 +54,7 @@ props.chartConfig.attr.h = 100 | @@ -44,7 +54,7 @@ props.chartConfig.attr.h = 100 | ||
| 44 | props.chartConfig.attr.x = 200 | 54 | props.chartConfig.attr.x = 200 | 
| 45 | props.chartConfig.attr.y = 200 | 55 | props.chartConfig.attr.y = 200 | 
| 46 | 56 | ||
| 47 | -const { dataset,attribute }= toRefs(props.chartConfig.option) | 57 | +const { dataset, attribute } = toRefs(props.chartConfig.option) | 
| 48 | 58 | ||
| 49 | const { w, h } = toRefs(props.chartConfig.attr) | 59 | const { w, h } = toRefs(props.chartConfig.attr) | 
| 50 | 60 | ||
| @@ -56,9 +66,10 @@ const { w, h } = toRefs(props.chartConfig.attr) | @@ -56,9 +66,10 @@ const { w, h } = toRefs(props.chartConfig.attr) | ||
| 56 | display: flex; | 66 | display: flex; | 
| 57 | align-items: center; | 67 | align-items: center; | 
| 58 | justify-content: center; | 68 | justify-content: center; | 
| 59 | - .content{ | ||
| 60 | - width:v-bind('w + "px"'); | ||
| 61 | - height:v-bind('h + "px"'); | 69 | + | 
| 70 | + .content { | ||
| 71 | + width: v-bind('w + "px"'); | ||
| 72 | + height: v-bind('h + "px"'); | ||
| 62 | } | 73 | } | 
| 63 | } | 74 | } | 
| 64 | </style> | 75 | </style> | 
| @@ -2,11 +2,20 @@ | @@ -2,11 +2,20 @@ | ||
| 2 | import { ConfigType } from "../index.d" | 2 | import { ConfigType } from "../index.d" | 
| 3 | import { matchExternalPrefixReg } from "./useWidgetKey" | 3 | import { matchExternalPrefixReg } from "./useWidgetKey" | 
| 4 | 4 | ||
| 5 | +const getAllConfigFile = async () => { | ||
| 6 | + return import.meta.glob('../components/**/config.ts') | ||
| 7 | +} | ||
| 8 | + | ||
| 9 | +const getChartConfigFile = async (path: string) => { | ||
| 10 | + const fileList = await getAllConfigFile() | ||
| 11 | + return fileList[path]() as any | ||
| 12 | +} | ||
| 5 | 13 | ||
| 6 | export const createComponent = async (configType: ConfigType) => { | 14 | export const createComponent = async (configType: ConfigType) => { | 
| 7 | const { key, chartKey, category, package: packageName } = configType | 15 | const { key, chartKey, category, package: packageName } = configType | 
| 8 | const hasExternalPrefix = matchExternalPrefixReg.test(chartKey) | 16 | const hasExternalPrefix = matchExternalPrefixReg.test(chartKey) | 
| 9 | - const chart = await import(`../components${hasExternalPrefix ? '/external' : ''}/${packageName}/${category}/${key}/config.ts`) | 17 | + const filePath = `../components${hasExternalPrefix ? '/external' : ''}/${packageName}/${category}/${key}/config.ts` | 
| 18 | + const chart = await getChartConfigFile(filePath) | ||
| 10 | return new chart.default() | 19 | return new chart.default() | 
| 11 | } | 20 | } | 
| 12 | 21 | 
| @@ -101,6 +101,7 @@ const dblclickHandle = async (item: ConfigType) => { | @@ -101,6 +101,7 @@ const dblclickHandle = async (item: ConfigType) => { | ||
| 101 | chartEditStore.setTargetSelectChart(newComponent.id) | 101 | chartEditStore.setTargetSelectChart(newComponent.id) | 
| 102 | loadingFinish() | 102 | loadingFinish() | 
| 103 | } catch (error) { | 103 | } catch (error) { | 
| 104 | + console.log(error) | ||
| 104 | loadingError() | 105 | loadingError() | 
| 105 | window['$message'].warning(`图表正在研发中, 敬请期待...`) | 106 | window['$message'].warning(`图表正在研发中, 敬请期待...`) | 
| 106 | } | 107 | } | 
| @@ -161,6 +161,7 @@ const selectChartHandle = async (item: ConfigType) => { | @@ -161,6 +161,7 @@ const selectChartHandle = async (item: ConfigType) => { | ||
| 161 | closeHandle() | 161 | closeHandle() | 
| 162 | loadingFinish() | 162 | loadingFinish() | 
| 163 | } catch (error) { | 163 | } catch (error) { | 
| 164 | + console.log(error) | ||
| 164 | loadingError() | 165 | loadingError() | 
| 165 | window['$message'].warning(`图表正在研发中, 敬请期待...`) | 166 | window['$message'].warning(`图表正在研发中, 敬请期待...`) | 
| 166 | } | 167 | } | 
| @@ -32,13 +32,14 @@ export const dragHandle = async (e: DragEvent) => { | @@ -32,13 +32,14 @@ export const dragHandle = async (e: DragEvent) => { | ||
| 32 | const dropData: Exclude<ConfigType, ['image']> = JSONParse(drayDataString) | 32 | const dropData: Exclude<ConfigType, ['image']> = JSONParse(drayDataString) | 
| 33 | 33 | ||
| 34 | // 创建新图表组件 | 34 | // 创建新图表组件 | 
| 35 | - let newComponent: CreateComponentType = await createComponent(dropData) | 35 | + const newComponent: CreateComponentType = await createComponent(dropData) | 
| 36 | 36 | ||
| 37 | setComponentPosition(newComponent, e.offsetX - newComponent.attr.w / 2, e.offsetY - newComponent.attr.h / 2) | 37 | setComponentPosition(newComponent, e.offsetX - newComponent.attr.w / 2, e.offsetY - newComponent.attr.h / 2) | 
| 38 | chartEditStore.addComponentList(newComponent, false, true) | 38 | chartEditStore.addComponentList(newComponent, false, true) | 
| 39 | chartEditStore.setTargetSelectChart(newComponent.id) | 39 | chartEditStore.setTargetSelectChart(newComponent.id) | 
| 40 | loadingFinish() | 40 | loadingFinish() | 
| 41 | } catch (error) { | 41 | } catch (error) { | 
| 42 | + console.log(error) | ||
| 42 | loadingError() | 43 | loadingError() | 
| 43 | window['$message'].warning(`图表正在研发中, 敬请期待...`) | 44 | window['$message'].warning(`图表正在研发中, 敬请期待...`) | 
| 44 | } | 45 | } | 
| @@ -225,7 +226,7 @@ export const useMouseHandle = () => { | @@ -225,7 +226,7 @@ export const useMouseHandle = () => { | ||
| 225 | const startY = e.screenY | 226 | const startY = e.screenY | 
| 226 | 227 | ||
| 227 | // 记录历史位置 | 228 | // 记录历史位置 | 
| 228 | - let prevComponentInstance: Array<CreateComponentType | CreateComponentGroupType> = [] | 229 | + const prevComponentInstance: Array<CreateComponentType | CreateComponentGroupType> = [] | 
| 229 | chartEditStore.getTargetChart.selectId.forEach(id => { | 230 | chartEditStore.getTargetChart.selectId.forEach(id => { | 
| 230 | if (!targetMap.has(id)) return | 231 | if (!targetMap.has(id)) return | 
| 231 | 232 | ||
| @@ -243,8 +244,8 @@ export const useMouseHandle = () => { | @@ -243,8 +244,8 @@ export const useMouseHandle = () => { | ||
| 243 | chartEditStore.setMousePosition(moveEvent.screenX, moveEvent.screenY) | 244 | chartEditStore.setMousePosition(moveEvent.screenX, moveEvent.screenY) | 
| 244 | 245 | ||
| 245 | // 当前偏移量,处理 scale 比例问题 | 246 | // 当前偏移量,处理 scale 比例问题 | 
| 246 | - let offsetX = (moveEvent.screenX - startX) / scale | ||
| 247 | - let offsetY = (moveEvent.screenY - startY) / scale | 247 | + const offsetX = (moveEvent.screenX - startX) / scale | 
| 248 | + const offsetY = (moveEvent.screenY - startY) / scale | ||
| 248 | 249 | ||
| 249 | chartEditStore.getTargetChart.selectId.forEach(id => { | 250 | chartEditStore.getTargetChart.selectId.forEach(id => { | 
| 250 | if (!targetMap.has(id)) return | 251 | if (!targetMap.has(id)) return | 
| @@ -354,8 +355,8 @@ export const useMousePointHandle = (e: MouseEvent, point: string, attr: PickCrea | @@ -354,8 +355,8 @@ export const useMousePointHandle = (e: MouseEvent, point: string, attr: PickCrea | ||
| 354 | const mousemove = throttle((moveEvent: MouseEvent) => { | 355 | const mousemove = throttle((moveEvent: MouseEvent) => { | 
| 355 | chartEditStore.setMousePosition(moveEvent.screenX, moveEvent.screenY) | 356 | chartEditStore.setMousePosition(moveEvent.screenX, moveEvent.screenY) | 
| 356 | 357 | ||
| 357 | - let currX = Math.round((moveEvent.screenX - startX) / scale) | ||
| 358 | - let currY = Math.round((moveEvent.screenY - startY) / scale) | 358 | + const currX = Math.round((moveEvent.screenX - startX) / scale) | 
| 359 | + const currY = Math.round((moveEvent.screenY - startY) / scale) | ||
| 359 | 360 | ||
| 360 | const isTop = /t/.test(point) | 361 | const isTop = /t/.test(point) | 
| 361 | const isBottom = /b/.test(point) | 362 | const isBottom = /b/.test(point) |