Commit 87d47feb5f2af91e6e7de3ca547818dd187ccd4d
Merge branch 'merge' into 'main'
update(*): 升级至V1.2.3 / V2.2.0(2023/03/16)版本 See merge request yunteng/thingskit-view!15
Showing
111 changed files
with
1515 additions
and
279 deletions
@@ -27,6 +27,7 @@ | @@ -27,6 +27,7 @@ | ||
27 | "axios": "^0.27.2", | 27 | "axios": "^0.27.2", |
28 | "color": "^4.2.3", | 28 | "color": "^4.2.3", |
29 | "crypto-js": "^4.1.1", | 29 | "crypto-js": "^4.1.1", |
30 | + "dayjs": "^1.11.7", | ||
30 | "dom-helpers": "^5.2.1", | 31 | "dom-helpers": "^5.2.1", |
31 | "echarts-liquidfill": "^3.1.0", | 32 | "echarts-liquidfill": "^3.1.0", |
32 | "echarts-stat": "^1.2.0", | 33 | "echarts-stat": "^1.2.0", |
@@ -25,6 +25,7 @@ specifiers: | @@ -25,6 +25,7 @@ specifiers: | ||
25 | color: ^4.2.3 | 25 | color: ^4.2.3 |
26 | commitlint: ^17.0.2 | 26 | commitlint: ^17.0.2 |
27 | crypto-js: ^4.1.1 | 27 | crypto-js: ^4.1.1 |
28 | + dayjs: ^1.11.7 | ||
28 | default-passive-events: ^2.0.0 | 29 | default-passive-events: ^2.0.0 |
29 | dom-helpers: ^5.2.1 | 30 | dom-helpers: ^5.2.1 |
30 | echarts: ^5.3.2 | 31 | echarts: ^5.3.2 |
@@ -82,6 +83,7 @@ dependencies: | @@ -82,6 +83,7 @@ dependencies: | ||
82 | axios: 0.27.2 | 83 | axios: 0.27.2 |
83 | color: 4.2.3 | 84 | color: 4.2.3 |
84 | crypto-js: 4.1.1 | 85 | crypto-js: 4.1.1 |
86 | + dayjs: 1.11.7 | ||
85 | dom-helpers: 5.2.1 | 87 | dom-helpers: 5.2.1 |
86 | echarts-liquidfill: 3.1.0_echarts@5.3.3 | 88 | echarts-liquidfill: 3.1.0_echarts@5.3.3 |
87 | echarts-stat: 1.2.0 | 89 | echarts-stat: 1.2.0 |
@@ -2008,6 +2010,10 @@ packages: | @@ -2008,6 +2010,10 @@ packages: | ||
2008 | engines: {node: '>=0.11'} | 2010 | engines: {node: '>=0.11'} |
2009 | dev: false | 2011 | dev: false |
2010 | 2012 | ||
2013 | + /dayjs/1.11.7: | ||
2014 | + resolution: {integrity: sha512-+Yw9U6YO5TQohxLcIkrXBeY73WP3ejHWVvx8XCk3gxvQDCTEmS48ZrSZCKciI7Bhl/uCMyxYtE9UqRILmFphkQ==} | ||
2015 | + dev: false | ||
2016 | + | ||
2011 | /debug/2.6.9: | 2017 | /debug/2.6.9: |
2012 | resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} | 2018 | resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} |
2013 | peerDependencies: | 2019 | peerDependencies: |
28 KB
17.5 KB
6.87 KB
@@ -37,7 +37,6 @@ import { icon } from '@/plugins' | @@ -37,7 +37,6 @@ import { icon } from '@/plugins' | ||
37 | import { useUserStore } from '@/store/external/module/user' | 37 | import { useUserStore } from '@/store/external/module/user' |
38 | const { ChatboxEllipsesIcon, PersonIcon, LogOutOutlineIcon, SettingsSharpIcon } = icon.ionicons5 | 38 | const { ChatboxEllipsesIcon, PersonIcon, LogOutOutlineIcon, SettingsSharpIcon } = icon.ionicons5 |
39 | 39 | ||
40 | - | ||
41 | const t = window['$t'] | 40 | const t = window['$t'] |
42 | 41 | ||
43 | const modelShowInfo = ref(false) | 42 | const modelShowInfo = ref(false) |
1 | +<template> | ||
2 | + <n-radio-group :value="props.modelValue || INHERIT_VALUE" @update:value="handleChange"> | ||
3 | + <n-space> | ||
4 | + <n-tooltip :show-arrow="false" trigger="hover" v-for="item in rendererList" :key="item.value"> | ||
5 | + <template #trigger> | ||
6 | + <n-radio :value="item.value"> | ||
7 | + {{ item.value }} | ||
8 | + </n-radio> | ||
9 | + </template> | ||
10 | + {{ item.desc }} | ||
11 | + </n-tooltip> | ||
12 | + </n-space> | ||
13 | + </n-radio-group> | ||
14 | +</template> | ||
15 | +<script setup lang="ts"> | ||
16 | +import { type EchartsRenderer } from '@/settings/chartThemes' | ||
17 | + | ||
18 | +const props = defineProps<{ modelValue?: EchartsRenderer; includeInherit?: boolean }>() | ||
19 | +const emits = defineEmits(['update:modelValue']) | ||
20 | + | ||
21 | +const INHERIT_VALUE = 'inherit' | ||
22 | + | ||
23 | +const handleChange = (val: EchartsRenderer & typeof INHERIT_VALUE) => { | ||
24 | + emits('update:modelValue', val === INHERIT_VALUE ? undefined : val) | ||
25 | +} | ||
26 | + | ||
27 | +const rendererList = [ | ||
28 | + { | ||
29 | + value: 'svg', | ||
30 | + desc: '在缩放场景下具有更好的表现' | ||
31 | + }, | ||
32 | + { | ||
33 | + value: 'canvas', | ||
34 | + desc: '数据量较大(经验判断 > 1k)、较多交互时,建议选择' | ||
35 | + }, | ||
36 | + ...(props.includeInherit | ||
37 | + ? [ | ||
38 | + { | ||
39 | + value: INHERIT_VALUE, | ||
40 | + desc: '默认继承全局配置' | ||
41 | + } | ||
42 | + ] | ||
43 | + : []) | ||
44 | +] | ||
45 | +</script> |
1 | <template> | 1 | <template> |
2 | + <collapse-item name="渲染器"> | ||
3 | + <setting-item-box :alone="true"> | ||
4 | + <template #name> | ||
5 | + <n-text>全局</n-text> | ||
6 | + <n-tooltip trigger="hover"> | ||
7 | + <template #trigger> | ||
8 | + <n-icon size="21" :depth="3"> | ||
9 | + <help-outline-icon></help-outline-icon> | ||
10 | + </n-icon> | ||
11 | + </template> | ||
12 | + <n-text>所有echarts图表组件默认都将采用所选的渲染器进行渲染</n-text> | ||
13 | + </n-tooltip> | ||
14 | + </template> | ||
15 | + <EchartsRendererSetting v-model="themeSetting.renderer" /> | ||
16 | + </setting-item-box> | ||
17 | + <setting-item-box :alone="true"> | ||
18 | + <template #name> | ||
19 | + <n-text>当前</n-text> | ||
20 | + <n-tooltip trigger="hover"> | ||
21 | + <template #trigger> | ||
22 | + <n-icon size="21" :depth="3"> | ||
23 | + <help-outline-icon></help-outline-icon> | ||
24 | + </n-icon> | ||
25 | + </template> | ||
26 | + <n-text>仅当前组件采用指定渲染器渲染</n-text> | ||
27 | + </n-tooltip> | ||
28 | + </template> | ||
29 | + <EchartsRendererSetting v-model="optionData.renderer" includeInherit /> | ||
30 | + </setting-item-box> | ||
31 | + </collapse-item> | ||
2 | <collapse-item v-if="title" name="标题"> | 32 | <collapse-item v-if="title" name="标题"> |
3 | <template #header> | 33 | <template #header> |
4 | <n-switch v-model:value="title.show" size="small"></n-switch> | 34 | <n-switch v-model:value="title.show" size="small"></n-switch> |
@@ -283,6 +313,11 @@ import { PropType, computed } from 'vue' | @@ -283,6 +313,11 @@ import { PropType, computed } from 'vue' | ||
283 | import { GlobalThemeJsonType } from '@/settings/chartThemes/index' | 313 | import { GlobalThemeJsonType } from '@/settings/chartThemes/index' |
284 | import { axisConfig } from '@/packages/chartConfiguration/echarts/index' | 314 | import { axisConfig } from '@/packages/chartConfiguration/echarts/index' |
285 | import { CollapseItem, SettingItemBox, SettingItem, GlobalSettingPosition } from '@/components/Pages/ChartItemSetting' | 315 | import { CollapseItem, SettingItemBox, SettingItem, GlobalSettingPosition } from '@/components/Pages/ChartItemSetting' |
316 | +import { icon } from '@/plugins' | ||
317 | +import { useChartEditStore } from '@/store/modules/chartEditStore/chartEditStore' | ||
318 | +import EchartsRendererSetting from './EchartsRendererSetting.vue' | ||
319 | + | ||
320 | +const { HelpOutlineIcon } = icon.ionicons5 | ||
286 | 321 | ||
287 | const props = defineProps({ | 322 | const props = defineProps({ |
288 | optionData: { | 323 | optionData: { |
@@ -296,6 +331,12 @@ const props = defineProps({ | @@ -296,6 +331,12 @@ const props = defineProps({ | ||
296 | } | 331 | } |
297 | }) | 332 | }) |
298 | 333 | ||
334 | +const chartEditStore = useChartEditStore() | ||
335 | +const themeSetting = computed(() => { | ||
336 | + const chartThemeSetting = chartEditStore.getEditCanvasConfig.chartThemeSetting | ||
337 | + return chartThemeSetting | ||
338 | +}) | ||
339 | + | ||
299 | const title = computed(() => { | 340 | const title = computed(() => { |
300 | return props.optionData.title | 341 | return props.optionData.title |
301 | }) | 342 | }) |
@@ -36,7 +36,7 @@ | @@ -36,7 +36,7 @@ | ||
36 | </div> | 36 | </div> |
37 | <div class="model-footer"> | 37 | <div class="model-footer"> |
38 | 中国色列表来自于: | 38 | 中国色列表来自于: |
39 | - <n-a href="http://zhongguose.com">http://zhongguose.com</n-a> | 39 | + <n-a href="http://zhongguose.com" target="_blank">http://zhongguose.com</n-a> |
40 | </div> | 40 | </div> |
41 | </div> | 41 | </div> |
42 | </n-modal> | 42 | </n-modal> |
@@ -157,6 +157,7 @@ $height: 85vh; | @@ -157,6 +157,7 @@ $height: 85vh; | ||
157 | } | 157 | } |
158 | } | 158 | } |
159 | .model-footer { | 159 | .model-footer { |
160 | + z-index: 1; | ||
160 | text-align: end; | 161 | text-align: end; |
161 | } | 162 | } |
162 | } | 163 | } |
@@ -7,15 +7,38 @@ export enum BaseEvent { | @@ -7,15 +7,38 @@ export enum BaseEvent { | ||
7 | // 移入 | 7 | // 移入 |
8 | ON_MOUSE_ENTER = 'mouseenter', | 8 | ON_MOUSE_ENTER = 'mouseenter', |
9 | // 移出 | 9 | // 移出 |
10 | - ON_MOUSE_LEAVE = 'mouseleave', | 10 | + ON_MOUSE_LEAVE = 'mouseleave' |
11 | +} | ||
12 | + | ||
13 | +// 组件交互回调事件 | ||
14 | +export enum InteractEvents { | ||
15 | + INTERACT_ON = 'interactOn', | ||
16 | + INTERACT_COMPONENT_ID = 'interactComponentId', | ||
17 | + INTERACT_FN = 'interactFn' | ||
18 | +} | ||
19 | + | ||
20 | +// 全局组件交互回调事件触发的类型(当然可以自定义名称) | ||
21 | +export enum InteractEventOn { | ||
22 | + CLICK = 'click', | ||
23 | + CHANGE = 'change' | ||
24 | +} | ||
25 | + | ||
26 | +// 确定交互组件触发类型 key名称 | ||
27 | +export const COMPONENT_INTERACT_EVENT_KET = 'componentInteractEventKey' | ||
28 | + | ||
29 | +// 交互式组件的触发配置 | ||
30 | +export type InteractActionsType = { | ||
31 | + interactType: InteractEventOn | ||
32 | + interactName: string | ||
33 | + componentEmitEvents: { [T: string]: { value: any; label: string }[] } | ||
11 | } | 34 | } |
12 | 35 | ||
13 | // vue3 生命周期事件 | 36 | // vue3 生命周期事件 |
14 | -export enum EventLife { | 37 | +export enum EventLife { |
15 | // 渲染之后 | 38 | // 渲染之后 |
16 | VNODE_MOUNTED = 'vnodeMounted', | 39 | VNODE_MOUNTED = 'vnodeMounted', |
17 | // 渲染之前 | 40 | // 渲染之前 |
18 | - VNODE_BEFORE_MOUNT = 'vnodeBeforeMount', | 41 | + VNODE_BEFORE_MOUNT = 'vnodeBeforeMount' |
19 | } | 42 | } |
20 | 43 | ||
21 | // 内置字符串函数对象列表 | 44 | // 内置字符串函数对象列表 |
@@ -4,4 +4,5 @@ export * from '@/hooks/useCode.hook' | @@ -4,4 +4,5 @@ export * from '@/hooks/useCode.hook' | ||
4 | export * from '@/hooks/useChartDataFetch.hook' | 4 | export * from '@/hooks/useChartDataFetch.hook' |
5 | export * from '@/hooks/useChartDataPondFetch.hook' | 5 | export * from '@/hooks/useChartDataPondFetch.hook' |
6 | export * from '@/hooks/useLifeHandler.hook' | 6 | export * from '@/hooks/useLifeHandler.hook' |
7 | -export * from '@/hooks/useLang.hook' | ||
7 | +export * from '@/hooks/useLang.hook' | ||
8 | +export * from '@/hooks/useChartInteract.hook' |
src/hooks/useCanvasInitOptions.hook.ts
0 → 100644
1 | +import { inject, type Ref } from 'vue' | ||
2 | +import { EchartsRenderer } from '@/settings/chartThemes' | ||
3 | +import { SCALE_KEY } from '@/views/preview/hooks/useScale.hook' | ||
4 | +import { use } from 'echarts/core' | ||
5 | +import { CanvasRenderer, SVGRenderer } from 'echarts/renderers' | ||
6 | + | ||
7 | +use([CanvasRenderer, SVGRenderer]) | ||
8 | + | ||
9 | +type InitOptions = { | ||
10 | + renderer: EchartsRenderer | ||
11 | + devicePixelRatio?: number | ||
12 | +} | ||
13 | + | ||
14 | +// 获取需要给当前echarts组件设置什么初始值 | ||
15 | +export function useCanvasInitOptions(option: any, themeSetting: any) { | ||
16 | + const renderer = option.renderer || themeSetting.renderer | ||
17 | + const initOptions: InitOptions = { renderer } | ||
18 | + const scaleRef = inject<Ref<{ width: number; height: number }>>(SCALE_KEY) || { value: { width: 1, height: 1 } } | ||
19 | + | ||
20 | + if (renderer === 'canvas') { | ||
21 | + initOptions.devicePixelRatio = Math.ceil( | ||
22 | + Math.max(window.devicePixelRatio, scaleRef.value.width, scaleRef.value.height) | ||
23 | + ) | ||
24 | + } | ||
25 | + return initOptions | ||
26 | +} |
1 | -import { ref, toRefs, toRaw } from 'vue' | 1 | +import { ref, toRefs, toRaw, watch } from 'vue' |
2 | import type VChart from 'vue-echarts' | 2 | import type VChart from 'vue-echarts' |
3 | import { customizeHttp } from '@/api/http' | 3 | import { customizeHttp } from '@/api/http' |
4 | import { useChartDataPondFetch } from '@/hooks/' | 4 | import { useChartDataPondFetch } from '@/hooks/' |
@@ -87,8 +87,18 @@ export const useChartDataFetch = ( | @@ -87,8 +87,18 @@ export const useChartDataFetch = ( | ||
87 | } | 87 | } |
88 | } | 88 | } |
89 | 89 | ||
90 | - // 立即调用 | ||
91 | - fetchFn() | 90 | + // 普通初始化与组件交互处理监听 |
91 | + watch( | ||
92 | + () => targetComponent.request, | ||
93 | + () => { | ||
94 | + fetchFn() | ||
95 | + }, | ||
96 | + { | ||
97 | + immediate: true, | ||
98 | + deep: true | ||
99 | + } | ||
100 | + ) | ||
101 | + | ||
92 | // 定时时间 | 102 | // 定时时间 |
93 | const time = targetInterval && targetInterval.value ? targetInterval.value : globalRequestInterval.value | 103 | const time = targetInterval && targetInterval.value ? targetInterval.value : globalRequestInterval.value |
94 | // 单位 | 104 | // 单位 |
src/hooks/useChartInteract.hook.ts
0 → 100644
1 | +import { toRefs } from 'vue' | ||
2 | +import { CreateComponentType } from '@/packages/index.d' | ||
3 | +import { useChartEditStore } from '@/store/modules/chartEditStore/chartEditStore' | ||
4 | + | ||
5 | +// 获取类型 | ||
6 | +type ChartEditStoreType = typeof useChartEditStore | ||
7 | + | ||
8 | +// Params 参数修改触发 api 更新图表请求 | ||
9 | +export const useChartInteract = ( | ||
10 | + chartConfig: CreateComponentType, | ||
11 | + useChartEditStore: ChartEditStoreType, | ||
12 | + param: { [T: string]: any }, | ||
13 | + interactEventOn: string | ||
14 | +) => { | ||
15 | + const chartEditStore = useChartEditStore() | ||
16 | + const { interactEvents } = chartConfig.events | ||
17 | + const fnOnEvent = interactEvents.filter(item => { | ||
18 | + return item.interactOn === interactEventOn | ||
19 | + }) | ||
20 | + | ||
21 | + if (fnOnEvent.length === 0) return | ||
22 | + fnOnEvent.forEach(item => { | ||
23 | + const index = chartEditStore.fetchTargetIndex(item.interactComponentId) | ||
24 | + if (index === -1) return | ||
25 | + const { Params, Header } = toRefs(chartEditStore.componentList[index].request.requestParams) | ||
26 | + Object.keys(item.interactFn).forEach(key => { | ||
27 | + if (Params.value[key]) { | ||
28 | + Params.value[key] = param[item.interactFn[key]] | ||
29 | + } | ||
30 | + if (Header.value[key]) { | ||
31 | + Header.value[key] = param[item.interactFn[key]] | ||
32 | + } | ||
33 | + }) | ||
34 | + }) | ||
35 | +} | ||
36 | + | ||
37 | +// 联动事件触发的 type 变更时,清除当前绑定内容 | ||
38 | +export const clearInteractEvent = (chartConfig: CreateComponentType) => { | ||
39 | + | ||
40 | +} |
1 | <template> | 1 | <template> |
2 | <v-chart | 2 | <v-chart |
3 | ref="vChartRef" | 3 | ref="vChartRef" |
4 | + :init-options="initOptions" | ||
4 | :theme="themeColor" | 5 | :theme="themeColor" |
5 | :option="option" | 6 | :option="option" |
6 | :manual-update="isPreview()" | 7 | :manual-update="isPreview()" |
@@ -14,6 +15,7 @@ | @@ -14,6 +15,7 @@ | ||
14 | <script setup lang="ts"> | 15 | <script setup lang="ts"> |
15 | import { ref, nextTick, computed, watch, PropType } from 'vue' | 16 | import { ref, nextTick, computed, watch, PropType } from 'vue' |
16 | import VChart from 'vue-echarts' | 17 | import VChart from 'vue-echarts' |
18 | +import { useCanvasInitOptions } from '@/hooks/useCanvasInitOptions.hook' | ||
17 | import { use } from 'echarts/core' | 19 | import { use } from 'echarts/core' |
18 | import { CanvasRenderer } from 'echarts/renderers' | 20 | import { CanvasRenderer } from 'echarts/renderers' |
19 | import { BarChart } from 'echarts/charts' | 21 | import { BarChart } from 'echarts/charts' |
@@ -41,6 +43,8 @@ const props = defineProps({ | @@ -41,6 +43,8 @@ const props = defineProps({ | ||
41 | } | 43 | } |
42 | }) | 44 | }) |
43 | 45 | ||
46 | +const initOptions = useCanvasInitOptions(props.chartConfig.option, props.themeSetting) | ||
47 | + | ||
44 | use([DatasetComponent, CanvasRenderer, BarChart, GridComponent, TooltipComponent, LegendComponent]) | 48 | use([DatasetComponent, CanvasRenderer, BarChart, GridComponent, TooltipComponent, LegendComponent]) |
45 | 49 | ||
46 | const replaceMergeArr = ref<string[]>() | 50 | const replaceMergeArr = ref<string[]>() |
1 | <template> | 1 | <template> |
2 | <v-chart | 2 | <v-chart |
3 | ref="vChartRef" | 3 | ref="vChartRef" |
4 | + :init-options="initOptions" | ||
4 | :theme="themeColor" | 5 | :theme="themeColor" |
5 | :option="option" | 6 | :option="option" |
6 | :manual-update="isPreview()" | 7 | :manual-update="isPreview()" |
@@ -14,6 +15,7 @@ | @@ -14,6 +15,7 @@ | ||
14 | <script setup lang="ts"> | 15 | <script setup lang="ts"> |
15 | import { ref, nextTick, computed, watch, PropType } from 'vue' | 16 | import { ref, nextTick, computed, watch, PropType } from 'vue' |
16 | import VChart from 'vue-echarts' | 17 | import VChart from 'vue-echarts' |
18 | +import { useCanvasInitOptions } from '@/hooks/useCanvasInitOptions.hook' | ||
17 | import { use } from 'echarts/core' | 19 | import { use } from 'echarts/core' |
18 | import { CanvasRenderer } from 'echarts/renderers' | 20 | import { CanvasRenderer } from 'echarts/renderers' |
19 | import { BarChart } from 'echarts/charts' | 21 | import { BarChart } from 'echarts/charts' |
@@ -40,6 +42,8 @@ const props = defineProps({ | @@ -40,6 +42,8 @@ const props = defineProps({ | ||
40 | } | 42 | } |
41 | }) | 43 | }) |
42 | 44 | ||
45 | +const initOptions = useCanvasInitOptions(props.chartConfig.option, props.themeSetting) | ||
46 | + | ||
43 | use([DatasetComponent, CanvasRenderer, BarChart, GridComponent, TooltipComponent, LegendComponent]) | 47 | use([DatasetComponent, CanvasRenderer, BarChart, GridComponent, TooltipComponent, LegendComponent]) |
44 | 48 | ||
45 | const replaceMergeArr = ref<string[]>() | 49 | const replaceMergeArr = ref<string[]>() |
1 | <template> | 1 | <template> |
2 | <v-chart | 2 | <v-chart |
3 | ref="vChartRef" | 3 | ref="vChartRef" |
4 | + :init-options="initOptions" | ||
4 | :theme="themeColor" | 5 | :theme="themeColor" |
5 | :option="option" | 6 | :option="option" |
6 | :manual-update="isPreview()" | 7 | :manual-update="isPreview()" |
@@ -15,6 +16,7 @@ | @@ -15,6 +16,7 @@ | ||
15 | <script setup lang="ts"> | 16 | <script setup lang="ts"> |
16 | import { PropType, computed, watch, ref, nextTick } from 'vue' | 17 | import { PropType, computed, watch, ref, nextTick } from 'vue' |
17 | import VChart from 'vue-echarts' | 18 | import VChart from 'vue-echarts' |
19 | +import { useCanvasInitOptions } from '@/hooks/useCanvasInitOptions.hook' | ||
18 | import { use } from 'echarts/core' | 20 | import { use } from 'echarts/core' |
19 | import { CanvasRenderer } from 'echarts/renderers' | 21 | import { CanvasRenderer } from 'echarts/renderers' |
20 | import { LineChart } from 'echarts/charts' | 22 | import { LineChart } from 'echarts/charts' |
@@ -41,6 +43,8 @@ const props = defineProps({ | @@ -41,6 +43,8 @@ const props = defineProps({ | ||
41 | } | 43 | } |
42 | }) | 44 | }) |
43 | 45 | ||
46 | +const initOptions = useCanvasInitOptions(props.chartConfig.option, props.themeSetting) | ||
47 | + | ||
44 | use([DatasetComponent, CanvasRenderer, LineChart, GridComponent, TooltipComponent, LegendComponent]) | 48 | use([DatasetComponent, CanvasRenderer, LineChart, GridComponent, TooltipComponent, LegendComponent]) |
45 | 49 | ||
46 | const replaceMergeArr = ref<string[]>() | 50 | const replaceMergeArr = ref<string[]>() |
1 | <template> | 1 | <template> |
2 | - <v-chart ref="vChartRef" :theme="themeColor" :option="option.value" :manual-update="isPreview()" autoresize> | 2 | + <v-chart ref="vChartRef" :init-options="initOptions" :theme="themeColor" :option="option.value" :manual-update="isPreview()" autoresize> |
3 | </v-chart> | 3 | </v-chart> |
4 | </template> | 4 | </template> |
5 | 5 | ||
6 | <script setup lang="ts"> | 6 | <script setup lang="ts"> |
7 | import { reactive, watch, PropType } from 'vue' | 7 | import { reactive, watch, PropType } from 'vue' |
8 | import VChart from 'vue-echarts' | 8 | import VChart from 'vue-echarts' |
9 | +import { useCanvasInitOptions } from '@/hooks/useCanvasInitOptions.hook' | ||
9 | import { use, graphic } from 'echarts/core' | 10 | import { use, graphic } from 'echarts/core' |
10 | import { CanvasRenderer } from 'echarts/renderers' | 11 | import { CanvasRenderer } from 'echarts/renderers' |
11 | import { LineChart } from 'echarts/charts' | 12 | import { LineChart } from 'echarts/charts' |
@@ -32,6 +33,8 @@ const props = defineProps({ | @@ -32,6 +33,8 @@ const props = defineProps({ | ||
32 | } | 33 | } |
33 | }) | 34 | }) |
34 | 35 | ||
36 | +const initOptions = useCanvasInitOptions(props.chartConfig.option, props.themeSetting) | ||
37 | + | ||
35 | use([DatasetComponent, CanvasRenderer, LineChart, GridComponent, TooltipComponent, LegendComponent]) | 38 | use([DatasetComponent, CanvasRenderer, LineChart, GridComponent, TooltipComponent, LegendComponent]) |
36 | const chartEditStore = useChartEditStore() | 39 | const chartEditStore = useChartEditStore() |
37 | 40 |
1 | <template> | 1 | <template> |
2 | - <v-chart ref="vChartRef" :theme="themeColor" :option="option.value" :manual-update="isPreview()" autoresize></v-chart> | 2 | + <v-chart ref="vChartRef" :init-options="initOptions" :theme="themeColor" :option="option.value" :manual-update="isPreview()" autoresize></v-chart> |
3 | </template> | 3 | </template> |
4 | 4 | ||
5 | <script setup lang="ts"> | 5 | <script setup lang="ts"> |
6 | import { reactive, watch, PropType } from 'vue' | 6 | import { reactive, watch, PropType } from 'vue' |
7 | import VChart from 'vue-echarts' | 7 | import VChart from 'vue-echarts' |
8 | +import { useCanvasInitOptions } from '@/hooks/useCanvasInitOptions.hook' | ||
8 | import { use, graphic } from 'echarts/core' | 9 | import { use, graphic } from 'echarts/core' |
9 | import { CanvasRenderer } from 'echarts/renderers' | 10 | import { CanvasRenderer } from 'echarts/renderers' |
10 | import { LineChart } from 'echarts/charts' | 11 | import { LineChart } from 'echarts/charts' |
@@ -31,6 +32,8 @@ const props = defineProps({ | @@ -31,6 +32,8 @@ const props = defineProps({ | ||
31 | } | 32 | } |
32 | }) | 33 | }) |
33 | 34 | ||
35 | +const initOptions = useCanvasInitOptions(props.chartConfig.option, props.themeSetting) | ||
36 | + | ||
34 | use([DatasetComponent, CanvasRenderer, LineChart, GridComponent, TooltipComponent, LegendComponent]) | 37 | use([DatasetComponent, CanvasRenderer, LineChart, GridComponent, TooltipComponent, LegendComponent]) |
35 | const chartEditStore = useChartEditStore() | 38 | const chartEditStore = useChartEditStore() |
36 | 39 |
1 | <template> | 1 | <template> |
2 | - <v-chart ref="vChartRef" :theme="themeColor" :option="option.value" :manual-update="isPreview()" autoresize> | 2 | + <v-chart ref="vChartRef" :init-options="initOptions" :theme="themeColor" :option="option.value" :manual-update="isPreview()" autoresize> |
3 | </v-chart> | 3 | </v-chart> |
4 | </template> | 4 | </template> |
5 | 5 | ||
6 | <script setup lang="ts"> | 6 | <script setup lang="ts"> |
7 | import { PropType, watch, reactive } from 'vue' | 7 | import { PropType, watch, reactive } from 'vue' |
8 | import VChart from 'vue-echarts' | 8 | import VChart from 'vue-echarts' |
9 | +import { useCanvasInitOptions } from '@/hooks/useCanvasInitOptions.hook' | ||
9 | import { use } from 'echarts/core' | 10 | import { use } from 'echarts/core' |
10 | import { CanvasRenderer } from 'echarts/renderers' | 11 | import { CanvasRenderer } from 'echarts/renderers' |
11 | import { LineChart } from 'echarts/charts' | 12 | import { LineChart } from 'echarts/charts' |
@@ -32,6 +33,8 @@ const props = defineProps({ | @@ -32,6 +33,8 @@ const props = defineProps({ | ||
32 | } | 33 | } |
33 | }) | 34 | }) |
34 | 35 | ||
36 | +const initOptions = useCanvasInitOptions(props.chartConfig.option, props.themeSetting) | ||
37 | + | ||
35 | use([DatasetComponent, CanvasRenderer, LineChart, GridComponent, TooltipComponent, LegendComponent]) | 38 | use([DatasetComponent, CanvasRenderer, LineChart, GridComponent, TooltipComponent, LegendComponent]) |
36 | 39 | ||
37 | const chartEditStore = useChartEditStore() | 40 | const chartEditStore = useChartEditStore() |
1 | <template> | 1 | <template> |
2 | - <v-chart ref="vChartRef" :theme="themeColor" :option="option.value" :manual-update="isPreview()" autoresize> | 2 | + <v-chart ref="vChartRef" :init-options="initOptions" :theme="themeColor" :option="option.value" :manual-update="isPreview()" autoresize> |
3 | </v-chart> | 3 | </v-chart> |
4 | </template> | 4 | </template> |
5 | 5 | ||
@@ -7,6 +7,7 @@ | @@ -7,6 +7,7 @@ | ||
7 | import { PropType, reactive, watch, ref, nextTick } from 'vue' | 7 | import { PropType, reactive, watch, ref, nextTick } from 'vue' |
8 | import config, { includes } from './config' | 8 | import config, { includes } from './config' |
9 | import VChart from 'vue-echarts' | 9 | import VChart from 'vue-echarts' |
10 | +import { useCanvasInitOptions } from '@/hooks/useCanvasInitOptions.hook' | ||
10 | import { use, registerMap } from 'echarts/core' | 11 | import { use, registerMap } from 'echarts/core' |
11 | import { EffectScatterChart, MapChart } from 'echarts/charts' | 12 | import { EffectScatterChart, MapChart } from 'echarts/charts' |
12 | import { CanvasRenderer } from 'echarts/renderers' | 13 | import { CanvasRenderer } from 'echarts/renderers' |
@@ -32,6 +33,8 @@ const props = defineProps({ | @@ -32,6 +33,8 @@ const props = defineProps({ | ||
32 | } | 33 | } |
33 | }) | 34 | }) |
34 | 35 | ||
36 | +const initOptions = useCanvasInitOptions(props.chartConfig.option, props.themeSetting) | ||
37 | + | ||
35 | use([ | 38 | use([ |
36 | MapChart, | 39 | MapChart, |
37 | DatasetComponent, | 40 | DatasetComponent, |
1 | <template> | 1 | <template> |
2 | - <v-chart ref="vChartRef" :theme="themeColor" :option="option" :manual-update="isPreview()" autoresize></v-chart> | 2 | + <v-chart ref="vChartRef" :init-options="initOptions" :theme="themeColor" :option="option" :manual-update="isPreview()" autoresize></v-chart> |
3 | </template> | 3 | </template> |
4 | 4 | ||
5 | <script setup lang="ts"> | 5 | <script setup lang="ts"> |
6 | import { computed, PropType } from 'vue' | 6 | import { computed, PropType } from 'vue' |
7 | import VChart from 'vue-echarts' | 7 | import VChart from 'vue-echarts' |
8 | +import { useCanvasInitOptions } from '@/hooks/useCanvasInitOptions.hook' | ||
8 | import { use } from 'echarts/core' | 9 | import { use } from 'echarts/core' |
9 | import { CanvasRenderer } from 'echarts/renderers' | 10 | import { CanvasRenderer } from 'echarts/renderers' |
10 | import { FunnelChart } from 'echarts/charts' | 11 | import { FunnelChart } from 'echarts/charts' |
@@ -31,6 +32,8 @@ const props = defineProps({ | @@ -31,6 +32,8 @@ const props = defineProps({ | ||
31 | } | 32 | } |
32 | }) | 33 | }) |
33 | 34 | ||
35 | +const initOptions = useCanvasInitOptions(props.chartConfig.option, props.themeSetting) | ||
36 | + | ||
34 | use([DatasetComponent, CanvasRenderer, FunnelChart, GridComponent, TooltipComponent, LegendComponent]) | 37 | use([DatasetComponent, CanvasRenderer, FunnelChart, GridComponent, TooltipComponent, LegendComponent]) |
35 | 38 | ||
36 | const option = computed(() => { | 39 | const option = computed(() => { |
1 | <template> | 1 | <template> |
2 | - <v-chart ref="vChartRef" :theme="themeColor" :option="option" :manual-update="isPreview()" autoresize></v-chart> | 2 | + <v-chart ref="vChartRef" :init-options="initOptions" :theme="themeColor" :option="option" :manual-update="isPreview()" autoresize></v-chart> |
3 | </template> | 3 | </template> |
4 | 4 | ||
5 | <script setup lang="ts"> | 5 | <script setup lang="ts"> |
6 | import { ref, watch, computed, PropType } from 'vue' | 6 | import { ref, watch, computed, PropType } from 'vue' |
7 | import VChart from 'vue-echarts' | 7 | import VChart from 'vue-echarts' |
8 | +import { useCanvasInitOptions } from '@/hooks/useCanvasInitOptions.hook' | ||
8 | import dataJson from './data.json' | 9 | import dataJson from './data.json' |
9 | import { use } from 'echarts/core' | 10 | import { use } from 'echarts/core' |
10 | import { CanvasRenderer } from 'echarts/renderers' | 11 | import { CanvasRenderer } from 'echarts/renderers' |
@@ -38,6 +39,8 @@ const props = defineProps({ | @@ -38,6 +39,8 @@ const props = defineProps({ | ||
38 | } | 39 | } |
39 | }) | 40 | }) |
40 | 41 | ||
42 | +const initOptions = useCanvasInitOptions(props.chartConfig.option, props.themeSetting) | ||
43 | + | ||
41 | use([ | 44 | use([ |
42 | DatasetComponent, | 45 | DatasetComponent, |
43 | CanvasRenderer, | 46 | CanvasRenderer, |
1 | <template> | 1 | <template> |
2 | - <v-chart ref="vChartRef" :theme="themeColor" :option="option" :manual-update="isPreview()" autoresize></v-chart> | 2 | + <v-chart ref="vChartRef" :init-options="initOptions" :theme="themeColor" :option="option" :manual-update="isPreview()" autoresize></v-chart> |
3 | </template> | 3 | </template> |
4 | 4 | ||
5 | <script setup lang="ts"> | 5 | <script setup lang="ts"> |
6 | import { ref, computed, PropType, watch } from 'vue' | 6 | import { ref, computed, PropType, watch } from 'vue' |
7 | import VChart from 'vue-echarts' | 7 | import VChart from 'vue-echarts' |
8 | +import { useCanvasInitOptions } from '@/hooks/useCanvasInitOptions.hook' | ||
8 | import dataJson from './data.json' | 9 | import dataJson from './data.json' |
9 | import { use } from 'echarts/core' | 10 | import { use } from 'echarts/core' |
10 | import { CanvasRenderer } from 'echarts/renderers' | 11 | import { CanvasRenderer } from 'echarts/renderers' |
@@ -32,6 +33,8 @@ const props = defineProps({ | @@ -32,6 +33,8 @@ const props = defineProps({ | ||
32 | } | 33 | } |
33 | }) | 34 | }) |
34 | 35 | ||
36 | +const initOptions = useCanvasInitOptions(props.chartConfig.option, props.themeSetting) | ||
37 | + | ||
35 | use([DatasetComponent, CanvasRenderer, RadarChart, GridComponent, TooltipComponent, LegendComponent]) | 38 | use([DatasetComponent, CanvasRenderer, RadarChart, GridComponent, TooltipComponent, LegendComponent]) |
36 | 39 | ||
37 | const vChartRef = ref<typeof VChart>() | 40 | const vChartRef = ref<typeof VChart>() |
1 | <template> | 1 | <template> |
2 | - <v-chart ref="vChartRef" :theme="themeColor" :option="option" :manual-update="isPreview()" autoresize></v-chart> | 2 | + <v-chart ref="vChartRef" :init-options="initOptions" :theme="themeColor" :option="option" :manual-update="isPreview()" autoresize></v-chart> |
3 | </template> | 3 | </template> |
4 | 4 | ||
5 | <script setup lang="ts"> | 5 | <script setup lang="ts"> |
6 | import { ref, computed, PropType, watch } from 'vue' | 6 | import { ref, computed, PropType, watch } from 'vue' |
7 | import VChart from 'vue-echarts' | 7 | import VChart from 'vue-echarts' |
8 | +import { useCanvasInitOptions } from '@/hooks/useCanvasInitOptions.hook' | ||
8 | import dataJson from './data.json' | 9 | import dataJson from './data.json' |
9 | import { use } from 'echarts/core' | 10 | import { use } from 'echarts/core' |
10 | import { CanvasRenderer } from 'echarts/renderers' | 11 | import { CanvasRenderer } from 'echarts/renderers' |
@@ -31,6 +32,8 @@ const props = defineProps({ | @@ -31,6 +32,8 @@ const props = defineProps({ | ||
31 | } | 32 | } |
32 | }) | 33 | }) |
33 | 34 | ||
35 | +const initOptions = useCanvasInitOptions(props.chartConfig.option, props.themeSetting) | ||
36 | + | ||
34 | use([CanvasRenderer, TreemapChart]) | 37 | use([CanvasRenderer, TreemapChart]) |
35 | 38 | ||
36 | const vChartRef = ref<typeof VChart>() | 39 | const vChartRef = ref<typeof VChart>() |
1 | <template> | 1 | <template> |
2 | - <v-chart :theme="themeColor" :option="option.value" autoresize></v-chart> | 2 | + <v-chart :theme="themeColor" :init-options="initOptions" :option="option.value" autoresize></v-chart> |
3 | </template> | 3 | </template> |
4 | 4 | ||
5 | <script setup lang="ts"> | 5 | <script setup lang="ts"> |
6 | import { PropType, watch, reactive } from 'vue' | 6 | import { PropType, watch, reactive } from 'vue' |
7 | import VChart from 'vue-echarts' | 7 | import VChart from 'vue-echarts' |
8 | +import { useCanvasInitOptions } from '@/hooks/useCanvasInitOptions.hook' | ||
8 | import { use } from 'echarts/core' | 9 | import { use } from 'echarts/core' |
9 | import 'echarts-liquidfill/src/liquidFill.js' | 10 | import 'echarts-liquidfill/src/liquidFill.js' |
10 | import { CanvasRenderer } from 'echarts/renderers' | 11 | import { CanvasRenderer } from 'echarts/renderers' |
@@ -30,6 +31,8 @@ const props = defineProps({ | @@ -30,6 +31,8 @@ const props = defineProps({ | ||
30 | } | 31 | } |
31 | }) | 32 | }) |
32 | 33 | ||
34 | +const initOptions = useCanvasInitOptions(props.chartConfig.option, props.themeSetting) | ||
35 | + | ||
33 | use([CanvasRenderer, GridComponent]) | 36 | use([CanvasRenderer, GridComponent]) |
34 | 37 | ||
35 | const chartEditStore = useChartEditStore() | 38 | const chartEditStore = useChartEditStore() |
1 | <template> | 1 | <template> |
2 | - <v-chart :theme="themeColor" :option="option.value" autoresize> </v-chart> | 2 | + <v-chart :theme="themeColor" :init-options="initOptions" :option="option.value" autoresize> </v-chart> |
3 | </template> | 3 | </template> |
4 | 4 | ||
5 | <script setup lang="ts"> | 5 | <script setup lang="ts"> |
6 | import { PropType, reactive, watch } from 'vue' | 6 | import { PropType, reactive, watch } from 'vue' |
7 | import VChart from 'vue-echarts' | 7 | import VChart from 'vue-echarts' |
8 | +import { useCanvasInitOptions } from '@/hooks/useCanvasInitOptions.hook' | ||
8 | import { use } from 'echarts/core' | 9 | import { use } from 'echarts/core' |
9 | import { CanvasRenderer } from 'echarts/renderers' | 10 | import { CanvasRenderer } from 'echarts/renderers' |
10 | import { PieChart } from 'echarts/charts' | 11 | import { PieChart } from 'echarts/charts' |
@@ -29,6 +30,8 @@ const props = defineProps({ | @@ -29,6 +30,8 @@ const props = defineProps({ | ||
29 | } | 30 | } |
30 | }) | 31 | }) |
31 | 32 | ||
33 | +const initOptions = useCanvasInitOptions(props.chartConfig.option, props.themeSetting) | ||
34 | + | ||
32 | use([DatasetComponent, CanvasRenderer, PieChart, GridComponent, TooltipComponent, LegendComponent, TitleComponent]) | 35 | use([DatasetComponent, CanvasRenderer, PieChart, GridComponent, TooltipComponent, LegendComponent, TitleComponent]) |
33 | 36 | ||
34 | const option = reactive({ | 37 | const option = reactive({ |
1 | <template> | 1 | <template> |
2 | - <v-chart ref="vChartRef" :theme="themeColor" :option="option" :manual-update="isPreview()" autoresize></v-chart> | 2 | + <v-chart ref="vChartRef" :init-options="initOptions" :theme="themeColor" :option="option" :manual-update="isPreview()" autoresize></v-chart> |
3 | </template> | 3 | </template> |
4 | 4 | ||
5 | <script setup lang="ts"> | 5 | <script setup lang="ts"> |
6 | import { computed, PropType, reactive, watch } from 'vue' | 6 | import { computed, PropType, reactive, watch } from 'vue' |
7 | import VChart from 'vue-echarts' | 7 | import VChart from 'vue-echarts' |
8 | +import { useCanvasInitOptions } from '@/hooks/useCanvasInitOptions.hook' | ||
8 | import { use } from 'echarts/core' | 9 | import { use } from 'echarts/core' |
9 | import { CanvasRenderer } from 'echarts/renderers' | 10 | import { CanvasRenderer } from 'echarts/renderers' |
10 | import { PieChart } from 'echarts/charts' | 11 | import { PieChart } from 'echarts/charts' |
@@ -30,6 +31,8 @@ const props = defineProps({ | @@ -30,6 +31,8 @@ const props = defineProps({ | ||
30 | } | 31 | } |
31 | }) | 32 | }) |
32 | 33 | ||
34 | +const initOptions = useCanvasInitOptions(props.chartConfig.option, props.themeSetting) | ||
35 | + | ||
33 | use([DatasetComponent, CanvasRenderer, PieChart, GridComponent, TooltipComponent, LegendComponent]) | 36 | use([DatasetComponent, CanvasRenderer, PieChart, GridComponent, TooltipComponent, LegendComponent]) |
34 | 37 | ||
35 | const option = computed(() => { | 38 | const option = computed(() => { |
1 | <template> | 1 | <template> |
2 | <v-chart | 2 | <v-chart |
3 | ref="vChartRef" | 3 | ref="vChartRef" |
4 | + :init-options="initOptions" | ||
4 | :theme="themeColor" | 5 | :theme="themeColor" |
5 | :option="option" | 6 | :option="option" |
6 | :manual-update="isPreview()" | 7 | :manual-update="isPreview()" |
@@ -13,6 +14,7 @@ | @@ -13,6 +14,7 @@ | ||
13 | <script setup lang="ts"> | 14 | <script setup lang="ts"> |
14 | import { PropType, computed, watch, ref, nextTick } from 'vue' | 15 | import { PropType, computed, watch, ref, nextTick } from 'vue' |
15 | import VChart from 'vue-echarts' | 16 | import VChart from 'vue-echarts' |
17 | +import { useCanvasInitOptions } from '@/hooks/useCanvasInitOptions.hook' | ||
16 | import { use } from 'echarts/core' | 18 | import { use } from 'echarts/core' |
17 | import { CanvasRenderer } from 'echarts/renderers' | 19 | import { CanvasRenderer } from 'echarts/renderers' |
18 | import { ScatterChart, EffectScatterChart } from 'echarts/charts' | 20 | import { ScatterChart, EffectScatterChart } from 'echarts/charts' |
@@ -46,6 +48,8 @@ const props = defineProps({ | @@ -46,6 +48,8 @@ const props = defineProps({ | ||
46 | } | 48 | } |
47 | }) | 49 | }) |
48 | 50 | ||
51 | +const initOptions = useCanvasInitOptions(props.chartConfig.option, props.themeSetting) | ||
52 | + | ||
49 | use([ | 53 | use([ |
50 | DatasetComponent, | 54 | DatasetComponent, |
51 | CanvasRenderer, | 55 | CanvasRenderer, |
1 | <template> | 1 | <template> |
2 | <v-chart | 2 | <v-chart |
3 | ref="vChartRef" | 3 | ref="vChartRef" |
4 | + :init-options="initOptions" | ||
4 | :theme="themeColor" | 5 | :theme="themeColor" |
5 | :option="option" | 6 | :option="option" |
6 | :manual-update="isPreview()" | 7 | :manual-update="isPreview()" |
@@ -13,6 +14,7 @@ | @@ -13,6 +14,7 @@ | ||
13 | <script setup lang="ts"> | 14 | <script setup lang="ts"> |
14 | import { PropType, computed, ref } from 'vue' | 15 | import { PropType, computed, ref } from 'vue' |
15 | import VChart from 'vue-echarts' | 16 | import VChart from 'vue-echarts' |
17 | +import { useCanvasInitOptions } from '@/hooks/useCanvasInitOptions.hook' | ||
16 | import ecStat from 'echarts-stat' | 18 | import ecStat from 'echarts-stat' |
17 | import { use, registerTransform } from 'echarts/core' | 19 | import { use, registerTransform } from 'echarts/core' |
18 | import { CanvasRenderer } from 'echarts/renderers' | 20 | import { CanvasRenderer } from 'echarts/renderers' |
@@ -47,6 +49,8 @@ const props = defineProps({ | @@ -47,6 +49,8 @@ const props = defineProps({ | ||
47 | } | 49 | } |
48 | }) | 50 | }) |
49 | 51 | ||
52 | +const initOptions = useCanvasInitOptions(props.chartConfig.option, props.themeSetting) | ||
53 | + | ||
50 | use([ | 54 | use([ |
51 | DatasetComponent, | 55 | DatasetComponent, |
52 | CanvasRenderer, | 56 | CanvasRenderer, |
1 | -import { ConfigType, PackagesCategoryEnum } from '@/packages/index.d' | 1 | +import { ConfigType, PackagesCategoryEnum, ChartFrameEnum } from '@/packages/index.d' |
2 | import { ChatCategoryEnum, ChatCategoryEnumName } from '../../index.d' | 2 | import { ChatCategoryEnum, ChatCategoryEnumName } from '../../index.d' |
3 | 3 | ||
4 | export const Border01Config: ConfigType = { | 4 | export const Border01Config: ConfigType = { |
@@ -9,5 +9,6 @@ export const Border01Config: ConfigType = { | @@ -9,5 +9,6 @@ export const Border01Config: ConfigType = { | ||
9 | category: ChatCategoryEnum.BORDER, | 9 | category: ChatCategoryEnum.BORDER, |
10 | categoryName: ChatCategoryEnumName.BORDER, | 10 | categoryName: ChatCategoryEnumName.BORDER, |
11 | package: PackagesCategoryEnum.DECORATES, | 11 | package: PackagesCategoryEnum.DECORATES, |
12 | + chartFrame: ChartFrameEnum.STATIC, | ||
12 | image: 'border01.png' | 13 | image: 'border01.png' |
13 | } | 14 | } |
1 | -import image from '@/assets/images/chart/decorates/border02.png' | ||
2 | -import { ConfigType, PackagesCategoryEnum } from '@/packages/index.d' | 1 | +import { ConfigType, PackagesCategoryEnum, ChartFrameEnum} from '@/packages/index.d' |
3 | import { ChatCategoryEnum, ChatCategoryEnumName } from '../../index.d' | 2 | import { ChatCategoryEnum, ChatCategoryEnumName } from '../../index.d' |
4 | 3 | ||
5 | export const Border02Config: ConfigType = { | 4 | export const Border02Config: ConfigType = { |
@@ -10,5 +9,6 @@ export const Border02Config: ConfigType = { | @@ -10,5 +9,6 @@ export const Border02Config: ConfigType = { | ||
10 | category: ChatCategoryEnum.BORDER, | 9 | category: ChatCategoryEnum.BORDER, |
11 | categoryName: ChatCategoryEnumName.BORDER, | 10 | categoryName: ChatCategoryEnumName.BORDER, |
12 | package: PackagesCategoryEnum.DECORATES, | 11 | package: PackagesCategoryEnum.DECORATES, |
12 | + chartFrame: ChartFrameEnum.STATIC, | ||
13 | image: 'border02.png' | 13 | image: 'border02.png' |
14 | } | 14 | } |
1 | -import { ConfigType, PackagesCategoryEnum } from '@/packages/index.d' | 1 | +import { ConfigType, PackagesCategoryEnum, ChartFrameEnum } from '@/packages/index.d' |
2 | import { ChatCategoryEnum, ChatCategoryEnumName } from '../../index.d' | 2 | import { ChatCategoryEnum, ChatCategoryEnumName } from '../../index.d' |
3 | 3 | ||
4 | export const Border03Config: ConfigType = { | 4 | export const Border03Config: ConfigType = { |
@@ -9,5 +9,6 @@ export const Border03Config: ConfigType = { | @@ -9,5 +9,6 @@ export const Border03Config: ConfigType = { | ||
9 | category: ChatCategoryEnum.BORDER, | 9 | category: ChatCategoryEnum.BORDER, |
10 | categoryName: ChatCategoryEnumName.BORDER, | 10 | categoryName: ChatCategoryEnumName.BORDER, |
11 | package: PackagesCategoryEnum.DECORATES, | 11 | package: PackagesCategoryEnum.DECORATES, |
12 | + chartFrame: ChartFrameEnum.STATIC, | ||
12 | image: 'border03.png' | 13 | image: 'border03.png' |
13 | } | 14 | } |
1 | -import { ConfigType, PackagesCategoryEnum } from '@/packages/index.d' | 1 | +import { ConfigType, PackagesCategoryEnum, ChartFrameEnum } from '@/packages/index.d' |
2 | import { ChatCategoryEnum, ChatCategoryEnumName } from '../../index.d' | 2 | import { ChatCategoryEnum, ChatCategoryEnumName } from '../../index.d' |
3 | 3 | ||
4 | export const Border04Config: ConfigType = { | 4 | export const Border04Config: ConfigType = { |
@@ -9,5 +9,6 @@ export const Border04Config: ConfigType = { | @@ -9,5 +9,6 @@ export const Border04Config: ConfigType = { | ||
9 | category: ChatCategoryEnum.BORDER, | 9 | category: ChatCategoryEnum.BORDER, |
10 | categoryName: ChatCategoryEnumName.BORDER, | 10 | categoryName: ChatCategoryEnumName.BORDER, |
11 | package: PackagesCategoryEnum.DECORATES, | 11 | package: PackagesCategoryEnum.DECORATES, |
12 | + chartFrame: ChartFrameEnum.STATIC, | ||
12 | image: 'border04.png' | 13 | image: 'border04.png' |
13 | } | 14 | } |
1 | -import { ConfigType, PackagesCategoryEnum } from '@/packages/index.d' | 1 | +import { ConfigType, PackagesCategoryEnum, ChartFrameEnum } from '@/packages/index.d' |
2 | import { ChatCategoryEnum, ChatCategoryEnumName } from '../../index.d' | 2 | import { ChatCategoryEnum, ChatCategoryEnumName } from '../../index.d' |
3 | 3 | ||
4 | export const Border05Config: ConfigType = { | 4 | export const Border05Config: ConfigType = { |
@@ -9,5 +9,6 @@ export const Border05Config: ConfigType = { | @@ -9,5 +9,6 @@ export const Border05Config: ConfigType = { | ||
9 | category: ChatCategoryEnum.BORDER, | 9 | category: ChatCategoryEnum.BORDER, |
10 | categoryName: ChatCategoryEnumName.BORDER, | 10 | categoryName: ChatCategoryEnumName.BORDER, |
11 | package: PackagesCategoryEnum.DECORATES, | 11 | package: PackagesCategoryEnum.DECORATES, |
12 | + chartFrame: ChartFrameEnum.STATIC, | ||
12 | image: 'border05.png' | 13 | image: 'border05.png' |
13 | } | 14 | } |
1 | -import { ConfigType, PackagesCategoryEnum } from '@/packages/index.d' | 1 | +import { ConfigType, PackagesCategoryEnum, ChartFrameEnum } from '@/packages/index.d' |
2 | import { ChatCategoryEnum, ChatCategoryEnumName } from '../../index.d' | 2 | import { ChatCategoryEnum, ChatCategoryEnumName } from '../../index.d' |
3 | 3 | ||
4 | export const Border06Config: ConfigType = { | 4 | export const Border06Config: ConfigType = { |
@@ -9,5 +9,6 @@ export const Border06Config: ConfigType = { | @@ -9,5 +9,6 @@ export const Border06Config: ConfigType = { | ||
9 | category: ChatCategoryEnum.BORDER, | 9 | category: ChatCategoryEnum.BORDER, |
10 | categoryName: ChatCategoryEnumName.BORDER, | 10 | categoryName: ChatCategoryEnumName.BORDER, |
11 | package: PackagesCategoryEnum.DECORATES, | 11 | package: PackagesCategoryEnum.DECORATES, |
12 | + chartFrame: ChartFrameEnum.STATIC, | ||
12 | image: 'border06.png' | 13 | image: 'border06.png' |
13 | } | 14 | } |
1 | -import { ConfigType, PackagesCategoryEnum } from '@/packages/index.d' | 1 | +import { ConfigType, PackagesCategoryEnum, ChartFrameEnum } from '@/packages/index.d' |
2 | import { ChatCategoryEnum, ChatCategoryEnumName } from '../../index.d' | 2 | import { ChatCategoryEnum, ChatCategoryEnumName } from '../../index.d' |
3 | 3 | ||
4 | export const Border07Config: ConfigType = { | 4 | export const Border07Config: ConfigType = { |
@@ -9,5 +9,6 @@ export const Border07Config: ConfigType = { | @@ -9,5 +9,6 @@ export const Border07Config: ConfigType = { | ||
9 | category: ChatCategoryEnum.BORDER, | 9 | category: ChatCategoryEnum.BORDER, |
10 | categoryName: ChatCategoryEnumName.BORDER, | 10 | categoryName: ChatCategoryEnumName.BORDER, |
11 | package: PackagesCategoryEnum.DECORATES, | 11 | package: PackagesCategoryEnum.DECORATES, |
12 | + chartFrame: ChartFrameEnum.STATIC, | ||
12 | image: 'border07.png' | 13 | image: 'border07.png' |
13 | } | 14 | } |
1 | -import { ConfigType, PackagesCategoryEnum } from '@/packages/index.d' | 1 | +import { ConfigType, PackagesCategoryEnum, ChartFrameEnum } from '@/packages/index.d' |
2 | import { ChatCategoryEnum, ChatCategoryEnumName } from '../../index.d' | 2 | import { ChatCategoryEnum, ChatCategoryEnumName } from '../../index.d' |
3 | 3 | ||
4 | export const Border08Config: ConfigType = { | 4 | export const Border08Config: ConfigType = { |
@@ -9,5 +9,6 @@ export const Border08Config: ConfigType = { | @@ -9,5 +9,6 @@ export const Border08Config: ConfigType = { | ||
9 | category: ChatCategoryEnum.BORDER, | 9 | category: ChatCategoryEnum.BORDER, |
10 | categoryName: ChatCategoryEnumName.BORDER, | 10 | categoryName: ChatCategoryEnumName.BORDER, |
11 | package: PackagesCategoryEnum.DECORATES, | 11 | package: PackagesCategoryEnum.DECORATES, |
12 | + chartFrame: ChartFrameEnum.STATIC, | ||
12 | image: 'border08.png' | 13 | image: 'border08.png' |
13 | } | 14 | } |
1 | -import { ConfigType, PackagesCategoryEnum } from '@/packages/index.d' | 1 | +import { ConfigType, PackagesCategoryEnum, ChartFrameEnum } from '@/packages/index.d' |
2 | import { ChatCategoryEnum, ChatCategoryEnumName } from '../../index.d' | 2 | import { ChatCategoryEnum, ChatCategoryEnumName } from '../../index.d' |
3 | 3 | ||
4 | export const Border09Config: ConfigType = { | 4 | export const Border09Config: ConfigType = { |
@@ -9,5 +9,6 @@ export const Border09Config: ConfigType = { | @@ -9,5 +9,6 @@ export const Border09Config: ConfigType = { | ||
9 | category: ChatCategoryEnum.BORDER, | 9 | category: ChatCategoryEnum.BORDER, |
10 | categoryName: ChatCategoryEnumName.BORDER, | 10 | categoryName: ChatCategoryEnumName.BORDER, |
11 | package: PackagesCategoryEnum.DECORATES, | 11 | package: PackagesCategoryEnum.DECORATES, |
12 | + chartFrame: ChartFrameEnum.STATIC, | ||
12 | image: 'border09.png' | 13 | image: 'border09.png' |
13 | } | 14 | } |
1 | -import { ConfigType, PackagesCategoryEnum } from '@/packages/index.d' | 1 | +import { ConfigType, PackagesCategoryEnum, ChartFrameEnum } from '@/packages/index.d' |
2 | import { ChatCategoryEnum, ChatCategoryEnumName } from '../../index.d' | 2 | import { ChatCategoryEnum, ChatCategoryEnumName } from '../../index.d' |
3 | 3 | ||
4 | export const Border10Config: ConfigType = { | 4 | export const Border10Config: ConfigType = { |
@@ -9,5 +9,6 @@ export const Border10Config: ConfigType = { | @@ -9,5 +9,6 @@ export const Border10Config: ConfigType = { | ||
9 | category: ChatCategoryEnum.BORDER, | 9 | category: ChatCategoryEnum.BORDER, |
10 | categoryName: ChatCategoryEnumName.BORDER, | 10 | categoryName: ChatCategoryEnumName.BORDER, |
11 | package: PackagesCategoryEnum.DECORATES, | 11 | package: PackagesCategoryEnum.DECORATES, |
12 | + chartFrame: ChartFrameEnum.STATIC, | ||
12 | image: 'border10.png' | 13 | image: 'border10.png' |
13 | } | 14 | } |
1 | -import { ConfigType, PackagesCategoryEnum } from '@/packages/index.d' | 1 | +import { ConfigType, PackagesCategoryEnum, ChartFrameEnum } from '@/packages/index.d' |
2 | import { ChatCategoryEnum, ChatCategoryEnumName } from '../../index.d' | 2 | import { ChatCategoryEnum, ChatCategoryEnumName } from '../../index.d' |
3 | 3 | ||
4 | export const Border11Config: ConfigType = { | 4 | export const Border11Config: ConfigType = { |
@@ -9,5 +9,6 @@ export const Border11Config: ConfigType = { | @@ -9,5 +9,6 @@ export const Border11Config: ConfigType = { | ||
9 | category: ChatCategoryEnum.BORDER, | 9 | category: ChatCategoryEnum.BORDER, |
10 | categoryName: ChatCategoryEnumName.BORDER, | 10 | categoryName: ChatCategoryEnumName.BORDER, |
11 | package: PackagesCategoryEnum.DECORATES, | 11 | package: PackagesCategoryEnum.DECORATES, |
12 | + chartFrame: ChartFrameEnum.STATIC, | ||
12 | image: 'border11.png' | 13 | image: 'border11.png' |
13 | } | 14 | } |
1 | -import { ConfigType, PackagesCategoryEnum } from '@/packages/index.d' | 1 | +import { ConfigType, PackagesCategoryEnum, ChartFrameEnum } from '@/packages/index.d' |
2 | import { ChatCategoryEnum, ChatCategoryEnumName } from '../../index.d' | 2 | import { ChatCategoryEnum, ChatCategoryEnumName } from '../../index.d' |
3 | 3 | ||
4 | export const Border12Config: ConfigType = { | 4 | export const Border12Config: ConfigType = { |
@@ -9,5 +9,6 @@ export const Border12Config: ConfigType = { | @@ -9,5 +9,6 @@ export const Border12Config: ConfigType = { | ||
9 | category: ChatCategoryEnum.BORDER, | 9 | category: ChatCategoryEnum.BORDER, |
10 | categoryName: ChatCategoryEnumName.BORDER, | 10 | categoryName: ChatCategoryEnumName.BORDER, |
11 | package: PackagesCategoryEnum.DECORATES, | 11 | package: PackagesCategoryEnum.DECORATES, |
12 | + chartFrame: ChartFrameEnum.STATIC, | ||
12 | image: 'border12.png' | 13 | image: 'border12.png' |
13 | } | 14 | } |
1 | -import { ConfigType, PackagesCategoryEnum } from '@/packages/index.d' | 1 | +import { ConfigType, PackagesCategoryEnum, ChartFrameEnum } from '@/packages/index.d' |
2 | import { ChatCategoryEnum, ChatCategoryEnumName } from '../../index.d' | 2 | import { ChatCategoryEnum, ChatCategoryEnumName } from '../../index.d' |
3 | 3 | ||
4 | export const Border13Config: ConfigType = { | 4 | export const Border13Config: ConfigType = { |
@@ -9,5 +9,6 @@ export const Border13Config: ConfigType = { | @@ -9,5 +9,6 @@ export const Border13Config: ConfigType = { | ||
9 | category: ChatCategoryEnum.BORDER, | 9 | category: ChatCategoryEnum.BORDER, |
10 | categoryName: ChatCategoryEnumName.BORDER, | 10 | categoryName: ChatCategoryEnumName.BORDER, |
11 | package: PackagesCategoryEnum.DECORATES, | 11 | package: PackagesCategoryEnum.DECORATES, |
12 | + chartFrame: ChartFrameEnum.STATIC, | ||
12 | image: 'border13.png' | 13 | image: 'border13.png' |
13 | } | 14 | } |
1 | -import { ConfigType, PackagesCategoryEnum } from '@/packages/index.d' | 1 | +import { ConfigType, PackagesCategoryEnum, ChartFrameEnum } from '@/packages/index.d' |
2 | import { ChatCategoryEnum,ChatCategoryEnumName } from '../../index.d' | 2 | import { ChatCategoryEnum,ChatCategoryEnumName } from '../../index.d' |
3 | 3 | ||
4 | export const Decorates01Config: ConfigType = { | 4 | export const Decorates01Config: ConfigType = { |
@@ -9,5 +9,6 @@ export const Decorates01Config: ConfigType = { | @@ -9,5 +9,6 @@ export const Decorates01Config: ConfigType = { | ||
9 | category: ChatCategoryEnum.DECORATE, | 9 | category: ChatCategoryEnum.DECORATE, |
10 | categoryName: ChatCategoryEnumName.DECORATE, | 10 | categoryName: ChatCategoryEnumName.DECORATE, |
11 | package: PackagesCategoryEnum.DECORATES, | 11 | package: PackagesCategoryEnum.DECORATES, |
12 | + chartFrame: ChartFrameEnum.STATIC, | ||
12 | image: 'decorates01.png' | 13 | image: 'decorates01.png' |
13 | } | 14 | } |
1 | -import { ConfigType, PackagesCategoryEnum } from '@/packages/index.d' | 1 | +import { ConfigType, PackagesCategoryEnum, ChartFrameEnum } from '@/packages/index.d' |
2 | import { ChatCategoryEnum,ChatCategoryEnumName } from '../../index.d' | 2 | import { ChatCategoryEnum,ChatCategoryEnumName } from '../../index.d' |
3 | 3 | ||
4 | export const Decorates02Config: ConfigType = { | 4 | export const Decorates02Config: ConfigType = { |
@@ -9,5 +9,6 @@ export const Decorates02Config: ConfigType = { | @@ -9,5 +9,6 @@ export const Decorates02Config: ConfigType = { | ||
9 | category: ChatCategoryEnum.DECORATE, | 9 | category: ChatCategoryEnum.DECORATE, |
10 | categoryName: ChatCategoryEnumName.DECORATE, | 10 | categoryName: ChatCategoryEnumName.DECORATE, |
11 | package: PackagesCategoryEnum.DECORATES, | 11 | package: PackagesCategoryEnum.DECORATES, |
12 | + chartFrame: ChartFrameEnum.STATIC, | ||
12 | image: 'decorates02.png' | 13 | image: 'decorates02.png' |
13 | } | 14 | } |
1 | -import { ConfigType, PackagesCategoryEnum } from '@/packages/index.d' | 1 | +import { ConfigType, PackagesCategoryEnum, ChartFrameEnum } from '@/packages/index.d' |
2 | import { ChatCategoryEnum, ChatCategoryEnumName } from '../../index.d' | 2 | import { ChatCategoryEnum, ChatCategoryEnumName } from '../../index.d' |
3 | 3 | ||
4 | export const Decorates03Config: ConfigType = { | 4 | export const Decorates03Config: ConfigType = { |
@@ -9,5 +9,6 @@ export const Decorates03Config: ConfigType = { | @@ -9,5 +9,6 @@ export const Decorates03Config: ConfigType = { | ||
9 | category: ChatCategoryEnum.DECORATE, | 9 | category: ChatCategoryEnum.DECORATE, |
10 | categoryName: ChatCategoryEnumName.DECORATE, | 10 | categoryName: ChatCategoryEnumName.DECORATE, |
11 | package: PackagesCategoryEnum.DECORATES, | 11 | package: PackagesCategoryEnum.DECORATES, |
12 | - image: 'decorates01.png' | 12 | + chartFrame: ChartFrameEnum.STATIC, |
13 | + image: 'decorates03.png' | ||
13 | } | 14 | } |
1 | -import { ConfigType, PackagesCategoryEnum } from '@/packages/index.d' | 1 | +import { ConfigType, PackagesCategoryEnum, ChartFrameEnum } from '@/packages/index.d' |
2 | import { ChatCategoryEnum, ChatCategoryEnumName } from '../../index.d' | 2 | import { ChatCategoryEnum, ChatCategoryEnumName } from '../../index.d' |
3 | 3 | ||
4 | export const Decorates04Config: ConfigType = { | 4 | export const Decorates04Config: ConfigType = { |
@@ -9,5 +9,6 @@ export const Decorates04Config: ConfigType = { | @@ -9,5 +9,6 @@ export const Decorates04Config: ConfigType = { | ||
9 | category: ChatCategoryEnum.DECORATE, | 9 | category: ChatCategoryEnum.DECORATE, |
10 | categoryName: ChatCategoryEnumName.DECORATE, | 10 | categoryName: ChatCategoryEnumName.DECORATE, |
11 | package: PackagesCategoryEnum.DECORATES, | 11 | package: PackagesCategoryEnum.DECORATES, |
12 | + chartFrame: ChartFrameEnum.STATIC, | ||
12 | image: 'decorates04.png' | 13 | image: 'decorates04.png' |
13 | } | 14 | } |
1 | -import image from '@/assets/images/chart/decorates/decorates05.png' | ||
2 | -import { ConfigType, PackagesCategoryEnum } from '@/packages/index.d' | 1 | +import { ConfigType, PackagesCategoryEnum, ChartFrameEnum } from '@/packages/index.d' |
3 | import { ChatCategoryEnum, ChatCategoryEnumName } from '../../index.d' | 2 | import { ChatCategoryEnum, ChatCategoryEnumName } from '../../index.d' |
4 | 3 | ||
5 | export const Decorates05Config: ConfigType = { | 4 | export const Decorates05Config: ConfigType = { |
@@ -10,5 +9,6 @@ export const Decorates05Config: ConfigType = { | @@ -10,5 +9,6 @@ export const Decorates05Config: ConfigType = { | ||
10 | category: ChatCategoryEnum.DECORATE, | 9 | category: ChatCategoryEnum.DECORATE, |
11 | categoryName: ChatCategoryEnumName.DECORATE, | 10 | categoryName: ChatCategoryEnumName.DECORATE, |
12 | package: PackagesCategoryEnum.DECORATES, | 11 | package: PackagesCategoryEnum.DECORATES, |
12 | + chartFrame: ChartFrameEnum.STATIC, | ||
13 | image: 'decorates05.png' | 13 | image: 'decorates05.png' |
14 | } | 14 | } |
@@ -9,6 +9,6 @@ export const Decorates06Config: ConfigType = { | @@ -9,6 +9,6 @@ export const Decorates06Config: ConfigType = { | ||
9 | category: ChatCategoryEnum.DECORATE, | 9 | category: ChatCategoryEnum.DECORATE, |
10 | categoryName: ChatCategoryEnumName.DECORATE, | 10 | categoryName: ChatCategoryEnumName.DECORATE, |
11 | package: PackagesCategoryEnum.DECORATES, | 11 | package: PackagesCategoryEnum.DECORATES, |
12 | - chartFrame: ChartFrameEnum.COMMON, | 12 | + chartFrame: ChartFrameEnum.STATIC, |
13 | image: 'decorates06.png' | 13 | image: 'decorates06.png' |
14 | } | 14 | } |
1 | -import { ConfigType, PackagesCategoryEnum } from '@/packages/index.d' | 1 | +import { ConfigType, PackagesCategoryEnum, ChartFrameEnum } from '@/packages/index.d' |
2 | import { ChatCategoryEnum, ChatCategoryEnumName } from '../../index.d' | 2 | import { ChatCategoryEnum, ChatCategoryEnumName } from '../../index.d' |
3 | 3 | ||
4 | export const CountDownConfig: ConfigType = { | 4 | export const CountDownConfig: ConfigType = { |
@@ -9,5 +9,6 @@ export const CountDownConfig: ConfigType = { | @@ -9,5 +9,6 @@ export const CountDownConfig: ConfigType = { | ||
9 | category: ChatCategoryEnum.MORE, | 9 | category: ChatCategoryEnum.MORE, |
10 | categoryName: ChatCategoryEnumName.MORE, | 10 | categoryName: ChatCategoryEnumName.MORE, |
11 | package: PackagesCategoryEnum.DECORATES, | 11 | package: PackagesCategoryEnum.DECORATES, |
12 | + chartFrame: ChartFrameEnum.COMMON, | ||
12 | image: 'countdown.png' | 13 | image: 'countdown.png' |
13 | } | 14 | } |
1 | -import { ConfigType, PackagesCategoryEnum } from '@/packages/index.d' | 1 | +import { ConfigType, PackagesCategoryEnum, ChartFrameEnum } from '@/packages/index.d' |
2 | import { ChatCategoryEnum, ChatCategoryEnumName } from '../../index.d' | 2 | import { ChatCategoryEnum, ChatCategoryEnumName } from '../../index.d' |
3 | 3 | ||
4 | export const FlipperNumberConfig: ConfigType = { | 4 | export const FlipperNumberConfig: ConfigType = { |
@@ -9,5 +9,6 @@ export const FlipperNumberConfig: ConfigType = { | @@ -9,5 +9,6 @@ export const FlipperNumberConfig: ConfigType = { | ||
9 | category: ChatCategoryEnum.MORE, | 9 | category: ChatCategoryEnum.MORE, |
10 | categoryName: ChatCategoryEnumName.MORE, | 10 | categoryName: ChatCategoryEnumName.MORE, |
11 | package: PackagesCategoryEnum.DECORATES, | 11 | package: PackagesCategoryEnum.DECORATES, |
12 | + chartFrame: ChartFrameEnum.COMMON, | ||
12 | image: 'flipper-number.png' | 13 | image: 'flipper-number.png' |
13 | } | 14 | } |
1 | -import { ConfigType, PackagesCategoryEnum } from '@/packages/index.d' | 1 | +import { ConfigType, PackagesCategoryEnum, ChartFrameEnum } from '@/packages/index.d' |
2 | import { ChatCategoryEnum, ChatCategoryEnumName } from '../../index.d' | 2 | import { ChatCategoryEnum, ChatCategoryEnumName } from '../../index.d' |
3 | 3 | ||
4 | export const NumberConfig: ConfigType = { | 4 | export const NumberConfig: ConfigType = { |
@@ -9,5 +9,6 @@ export const NumberConfig: ConfigType = { | @@ -9,5 +9,6 @@ export const NumberConfig: ConfigType = { | ||
9 | category: ChatCategoryEnum.MORE, | 9 | category: ChatCategoryEnum.MORE, |
10 | categoryName: ChatCategoryEnumName.MORE, | 10 | categoryName: ChatCategoryEnumName.MORE, |
11 | package: PackagesCategoryEnum.DECORATES, | 11 | package: PackagesCategoryEnum.DECORATES, |
12 | + chartFrame: ChartFrameEnum.COMMON, | ||
12 | image: 'number.png' | 13 | image: 'number.png' |
13 | } | 14 | } |
1 | -import { ConfigType, PackagesCategoryEnum } from '@/packages/index.d' | 1 | +import { ConfigType, PackagesCategoryEnum, ChartFrameEnum } from '@/packages/index.d' |
2 | import { ChatCategoryEnum,ChatCategoryEnumName } from '../../index.d' | 2 | import { ChatCategoryEnum,ChatCategoryEnumName } from '../../index.d' |
3 | 3 | ||
4 | export const TimeCommonConfig: ConfigType = { | 4 | export const TimeCommonConfig: ConfigType = { |
@@ -9,5 +9,6 @@ export const TimeCommonConfig: ConfigType = { | @@ -9,5 +9,6 @@ export const TimeCommonConfig: ConfigType = { | ||
9 | category: ChatCategoryEnum.MORE, | 9 | category: ChatCategoryEnum.MORE, |
10 | categoryName: ChatCategoryEnumName.MORE, | 10 | categoryName: ChatCategoryEnumName.MORE, |
11 | package: PackagesCategoryEnum.DECORATES, | 11 | package: PackagesCategoryEnum.DECORATES, |
12 | + chartFrame: ChartFrameEnum.STATIC, | ||
12 | image: 'time.png' | 13 | image: 'time.png' |
13 | } | 14 | } |
@@ -9,6 +9,6 @@ export const ThreeEarth01Config: ConfigType = { | @@ -9,6 +9,6 @@ export const ThreeEarth01Config: ConfigType = { | ||
9 | category: ChatCategoryEnum.THREE, | 9 | category: ChatCategoryEnum.THREE, |
10 | categoryName: ChatCategoryEnumName.THREE, | 10 | categoryName: ChatCategoryEnumName.THREE, |
11 | package: PackagesCategoryEnum.DECORATES, | 11 | package: PackagesCategoryEnum.DECORATES, |
12 | - chartFrame: ChartFrameEnum.STATIC, | 12 | + chartFrame: ChartFrameEnum.COMMON, |
13 | image: 'threeEarth01.png' | 13 | image: 'threeEarth01.png' |
14 | } | 14 | } |
1 | +import dayjs from 'dayjs' | ||
2 | +import cloneDeep from 'lodash/cloneDeep' | ||
3 | +import { PublicConfigClass } from '@/packages/public' | ||
4 | +import { CreateComponentType } from '@/packages/index.d' | ||
5 | +import { chartInitConfig } from '@/settings/designSetting' | ||
6 | +import { COMPONENT_INTERACT_EVENT_KET } from '@/enums/eventEnum' | ||
7 | +import { interactActions, ComponentInteractEventEnum } from './interact' | ||
8 | +import { InputsDateConfig } from './index' | ||
9 | + | ||
10 | +export const option = { | ||
11 | + // 时间组件展示类型,必须和 interactActions 中定义的数据一致 | ||
12 | + [COMPONENT_INTERACT_EVENT_KET]: ComponentInteractEventEnum.DATE, | ||
13 | + // 下拉展示 | ||
14 | + isPanel: 0, | ||
15 | + dataset: dayjs().valueOf() | ||
16 | +} | ||
17 | + | ||
18 | +export default class Config extends PublicConfigClass implements CreateComponentType { | ||
19 | + public key = InputsDateConfig.key | ||
20 | + public attr = { ...chartInitConfig, w: 260, h: 32, zIndex: -1 } | ||
21 | + public chartConfig = cloneDeep(InputsDateConfig) | ||
22 | + public interactActions = interactActions | ||
23 | + public option = cloneDeep(option) | ||
24 | +} |
1 | +<template> | ||
2 | + <collapse-item name="展示方式" :expanded="true"> | ||
3 | + <setting-item-box name="选择方式"> | ||
4 | + <n-select | ||
5 | + v-model:value="optionData.isPanel" | ||
6 | + size="small" | ||
7 | + :options="panelOptions" | ||
8 | + /> | ||
9 | + </setting-item-box> | ||
10 | + </collapse-item> | ||
11 | + | ||
12 | + <collapse-item name="时间配置" :expanded="true"> | ||
13 | + <setting-item-box name="基础"> | ||
14 | + <setting-item name="类型"> | ||
15 | + <n-select | ||
16 | + v-model:value="optionData.componentInteractEventKey" | ||
17 | + size="small" | ||
18 | + :options="datePickerTypeOptions" | ||
19 | + /> | ||
20 | + </setting-item> | ||
21 | + </setting-item-box> | ||
22 | + | ||
23 | + <setting-item-box name="默认值" :alone="true"> | ||
24 | + <n-date-picker | ||
25 | + size="small" | ||
26 | + v-model:value="optionData.dataset" | ||
27 | + :type="optionData.componentInteractEventKey" | ||
28 | + /> | ||
29 | + </setting-item-box> | ||
30 | + </collapse-item> | ||
31 | +</template> | ||
32 | + | ||
33 | +<script lang="ts" setup> | ||
34 | +import { PropType } from 'vue' | ||
35 | +import { icon } from '@/plugins' | ||
36 | +import { CollapseItem, SettingItemBox, SettingItem } from '@/components/Pages/ChartItemSetting' | ||
37 | +import { option } from './config' | ||
38 | +import { ComponentInteractEventEnum } from './interact' | ||
39 | + | ||
40 | +const { HelpOutlineIcon } = icon.ionicons5 | ||
41 | + | ||
42 | +const props = defineProps({ | ||
43 | + optionData: { | ||
44 | + type: Object as PropType<typeof option>, | ||
45 | + required: true | ||
46 | + } | ||
47 | +}) | ||
48 | + | ||
49 | +const panelOptions = [ | ||
50 | + { | ||
51 | + label: '下拉展示', | ||
52 | + value: 0 | ||
53 | + }, | ||
54 | + { | ||
55 | + label: '面板展示', | ||
56 | + value: 1 | ||
57 | + } | ||
58 | +] | ||
59 | + | ||
60 | +const datePickerTypeOptions = [ | ||
61 | + { | ||
62 | + label: '日期', | ||
63 | + value: ComponentInteractEventEnum.DATE | ||
64 | + }, | ||
65 | + { | ||
66 | + label: '日期时间', | ||
67 | + value: ComponentInteractEventEnum.DATE_TIME | ||
68 | + }, | ||
69 | + { | ||
70 | + label: '日期范围', | ||
71 | + value: ComponentInteractEventEnum.DATE_RANGE | ||
72 | + }, | ||
73 | + { | ||
74 | + label: '月份', | ||
75 | + value: ComponentInteractEventEnum.MONTH | ||
76 | + }, | ||
77 | + { | ||
78 | + label: '月份范围', | ||
79 | + value: ComponentInteractEventEnum.MONTH_RANGE | ||
80 | + }, | ||
81 | + { | ||
82 | + label: '年份', | ||
83 | + value: ComponentInteractEventEnum.YEAR | ||
84 | + }, | ||
85 | + { | ||
86 | + label: '年份范围', | ||
87 | + value: ComponentInteractEventEnum.YEAR_RANGE | ||
88 | + }, | ||
89 | + { | ||
90 | + label: '季度', | ||
91 | + value: ComponentInteractEventEnum.QUARTER | ||
92 | + }, | ||
93 | + { | ||
94 | + label: '季度范围', | ||
95 | + value: ComponentInteractEventEnum.QUARTER_RANGE | ||
96 | + } | ||
97 | +] | ||
98 | +</script> |
1 | +import { ConfigType, PackagesCategoryEnum, ChartFrameEnum } from '@/packages/index.d' | ||
2 | +import { ChatCategoryEnum, ChatCategoryEnumName } from '../../index.d' | ||
3 | + | ||
4 | +export const InputsDateConfig: ConfigType = { | ||
5 | + key: 'InputsDate', | ||
6 | + chartKey: 'VInputsDate', | ||
7 | + conKey: 'VCInputsDate', | ||
8 | + title: '时间选择器', | ||
9 | + category: ChatCategoryEnum.INPUTS, | ||
10 | + categoryName: ChatCategoryEnumName.INPUTS, | ||
11 | + package: PackagesCategoryEnum.INFORMATIONS, | ||
12 | + chartFrame: ChartFrameEnum.STATIC, | ||
13 | + image: 'inputs_date.png' | ||
14 | +} |
1 | +<template> | ||
2 | + <n-date-picker | ||
3 | + v-model:value="option.dataset" | ||
4 | + :panel="!!chartConfig.option.isPanel" | ||
5 | + :type="chartConfig.option.componentInteractEventKey" | ||
6 | + :style="`width:${w}px;`" | ||
7 | + @update:value="onChange" | ||
8 | + /> | ||
9 | +</template> | ||
10 | + | ||
11 | +<script setup lang="ts"> | ||
12 | +import { PropType, toRefs, ref, shallowReactive, watch } from 'vue' | ||
13 | +import dayjs from 'dayjs' | ||
14 | +import { CreateComponentType } from '@/packages/index.d' | ||
15 | +import { useChartEditStore } from '@/store/modules/chartEditStore/chartEditStore' | ||
16 | +import { useChartInteract } from '@/hooks' | ||
17 | +import { InteractEventOn } from '@/enums/eventEnum' | ||
18 | +import { ComponentInteractParamsEnum } from './interact' | ||
19 | + | ||
20 | +const props = defineProps({ | ||
21 | + chartConfig: { | ||
22 | + type: Object as PropType<CreateComponentType>, | ||
23 | + required: true | ||
24 | + } | ||
25 | +}) | ||
26 | + | ||
27 | +const { w, h } = toRefs(props.chartConfig.attr) | ||
28 | +const rangeDate = ref<number | number[]>() | ||
29 | + | ||
30 | +const option = shallowReactive({ | ||
31 | + dataset: props.chartConfig.option.dataset | ||
32 | +}) | ||
33 | + | ||
34 | +// 监听事件改变 | ||
35 | +const onChange = (v: number | number[]) => { | ||
36 | + if (v instanceof Array) { | ||
37 | + // 存储到联动数据 | ||
38 | + useChartInteract( | ||
39 | + props.chartConfig, | ||
40 | + useChartEditStore, | ||
41 | + { | ||
42 | + [ComponentInteractParamsEnum.DATE_START]: v[0] | dayjs().valueOf(), | ||
43 | + [ComponentInteractParamsEnum.DATE_END]: v[1] | dayjs().valueOf(), | ||
44 | + [ComponentInteractParamsEnum.DATE_RANGE]: `${v[0]}-${v[1]}` | ||
45 | + }, | ||
46 | + InteractEventOn.CHANGE | ||
47 | + ) | ||
48 | + } else { | ||
49 | + // 存储到联动数据 | ||
50 | + useChartInteract( | ||
51 | + props.chartConfig, | ||
52 | + useChartEditStore, | ||
53 | + { [ComponentInteractParamsEnum.DATE]: v }, | ||
54 | + InteractEventOn.CHANGE | ||
55 | + ) | ||
56 | + } | ||
57 | +} | ||
58 | + | ||
59 | +// 手动更新 | ||
60 | +watch( | ||
61 | + () => props.chartConfig.option.dataset, | ||
62 | + (newData: number | number[]) => { | ||
63 | + option.dataset = newData | ||
64 | + // 关联目标组件首次请求带上默认内容 | ||
65 | + onChange(newData) | ||
66 | + }, | ||
67 | + { | ||
68 | + immediate: true | ||
69 | + } | ||
70 | +) | ||
71 | +</script> | ||
72 | + | ||
73 | +<style lang="scss" scoped> | ||
74 | +@include deep() { | ||
75 | + .n-input { | ||
76 | + height: v-bind('h + "px"'); | ||
77 | + display: flex; | ||
78 | + align-items: center; | ||
79 | + } | ||
80 | +} | ||
81 | +</style> |
1 | +import { InteractEventOn, InteractActionsType } from '@/enums/eventEnum' | ||
2 | + | ||
3 | +// 时间组件类型 | ||
4 | +export enum ComponentInteractEventEnum { | ||
5 | + DATE = 'date', | ||
6 | + DATE_TIME = 'datetime', | ||
7 | + DATE_RANGE = 'daterange', | ||
8 | + DATE_TIME_RANGE = 'datetimerange', | ||
9 | + MONTH = 'month', | ||
10 | + MONTH_RANGE = 'monthrange', | ||
11 | + YEAR = 'year', | ||
12 | + YEAR_RANGE = 'yearrange', | ||
13 | + QUARTER = 'quarter', | ||
14 | + QUARTER_RANGE = 'quarterrange' | ||
15 | +} | ||
16 | + | ||
17 | +// 联动参数 | ||
18 | +export enum ComponentInteractParamsEnum { | ||
19 | + DATE = 'date', | ||
20 | + DATE_START = 'dateStart', | ||
21 | + DATE_END = 'dateEnd', | ||
22 | + DATE_RANGE = 'daterange' | ||
23 | +} | ||
24 | + | ||
25 | +const time = [ | ||
26 | + { | ||
27 | + value: ComponentInteractParamsEnum.DATE, | ||
28 | + label: '日期' | ||
29 | + } | ||
30 | +] | ||
31 | + | ||
32 | +const timeRange = [ | ||
33 | + { | ||
34 | + value: ComponentInteractParamsEnum.DATE_START, | ||
35 | + label: '开始时间' | ||
36 | + }, | ||
37 | + { | ||
38 | + value: ComponentInteractParamsEnum.DATE_END, | ||
39 | + label: '结束时间' | ||
40 | + }, | ||
41 | + { | ||
42 | + value: ComponentInteractParamsEnum.DATE_RANGE, | ||
43 | + label: '日期范围' | ||
44 | + } | ||
45 | +] | ||
46 | + | ||
47 | +// 定义组件触发回调事件 | ||
48 | +export const interactActions: InteractActionsType[] = [ | ||
49 | + { | ||
50 | + interactType: InteractEventOn.CHANGE, | ||
51 | + interactName: '选择完成', | ||
52 | + componentEmitEvents: { | ||
53 | + [ComponentInteractEventEnum.DATE]: time, | ||
54 | + [ComponentInteractEventEnum.DATE_TIME]: time, | ||
55 | + [ComponentInteractEventEnum.DATE_RANGE]: timeRange, | ||
56 | + [ComponentInteractEventEnum.MONTH]: time, | ||
57 | + [ComponentInteractEventEnum.MONTH_RANGE]: timeRange, | ||
58 | + [ComponentInteractEventEnum.QUARTER]: time, | ||
59 | + [ComponentInteractEventEnum.QUARTER_RANGE]: timeRange, | ||
60 | + [ComponentInteractEventEnum.YEAR]: time, | ||
61 | + [ComponentInteractEventEnum.YEAR_RANGE]: timeRange, | ||
62 | + } | ||
63 | + } | ||
64 | +] |
1 | +import cloneDeep from 'lodash/cloneDeep' | ||
2 | +import { PublicConfigClass } from '@/packages/public' | ||
3 | +import { CreateComponentType } from '@/packages/index.d' | ||
4 | +import { chartInitConfig } from '@/settings/designSetting' | ||
5 | +import { COMPONENT_INTERACT_EVENT_KET } from '@/enums/eventEnum' | ||
6 | +import { interactActions, ComponentInteractEventEnum } from './interact' | ||
7 | +import { InputsSelectConfig } from './index' | ||
8 | + | ||
9 | +export const option = { | ||
10 | + // 时间组件展示类型,必须和 interactActions 中定义的数据一致 | ||
11 | + [COMPONENT_INTERACT_EVENT_KET]: ComponentInteractEventEnum.DATA, | ||
12 | + // 默认值 | ||
13 | + selectValue: '1', | ||
14 | + // 暴露配置内容给用户 | ||
15 | + dataset: [ | ||
16 | + { | ||
17 | + label: '选项1', | ||
18 | + value: '1' | ||
19 | + }, | ||
20 | + { | ||
21 | + label: '选项2', | ||
22 | + value: '2' | ||
23 | + }, | ||
24 | + { | ||
25 | + label: '选项3', | ||
26 | + value: '3' | ||
27 | + } | ||
28 | + ] | ||
29 | +} | ||
30 | + | ||
31 | +export default class Config extends PublicConfigClass implements CreateComponentType { | ||
32 | + public key = InputsSelectConfig.key | ||
33 | + public attr = { ...chartInitConfig, w: 260, h: 32, zIndex: -1 } | ||
34 | + public chartConfig = cloneDeep(InputsSelectConfig) | ||
35 | + public interactActions = interactActions | ||
36 | + public option = cloneDeep(option) | ||
37 | +} |
1 | +<template> | ||
2 | + <collapse-item name="下拉配置" :expanded="true"> | ||
3 | + <setting-item-box name="默认值" :alone="true"> | ||
4 | + <n-select size="small" v-model:value="optionData.selectValue" :options="optionData.dataset" /> | ||
5 | + </setting-item-box> | ||
6 | + </collapse-item> | ||
7 | +</template> | ||
8 | + | ||
9 | +<script lang="ts" setup> | ||
10 | +import { PropType } from 'vue' | ||
11 | +import { CollapseItem, SettingItemBox } from '@/components/Pages/ChartItemSetting' | ||
12 | +import { option } from './config' | ||
13 | + | ||
14 | +defineProps({ | ||
15 | + optionData: { | ||
16 | + type: Object as PropType<typeof option>, | ||
17 | + required: true | ||
18 | + } | ||
19 | +}) | ||
20 | +</script> |
1 | +import { ConfigType, PackagesCategoryEnum, ChartFrameEnum } from '@/packages/index.d' | ||
2 | +import { ChatCategoryEnum, ChatCategoryEnumName } from '../../index.d' | ||
3 | + | ||
4 | +export const InputsSelectConfig: ConfigType = { | ||
5 | + key: 'InputsSelect', | ||
6 | + chartKey: 'VInputsSelect', | ||
7 | + conKey: 'VCInputsSelect', | ||
8 | + title: '下拉选择器', | ||
9 | + category: ChatCategoryEnum.INPUTS, | ||
10 | + categoryName: ChatCategoryEnumName.INPUTS, | ||
11 | + package: PackagesCategoryEnum.INFORMATIONS, | ||
12 | + chartFrame: ChartFrameEnum.STATIC, | ||
13 | + image: 'inputs_select.png' | ||
14 | +} |
1 | +<template> | ||
2 | + <n-select | ||
3 | + v-model:value="option.value.selectValue" | ||
4 | + :options="option.value.dataset" | ||
5 | + :style="`width:${w}px;`" | ||
6 | + @update:value="onChange" | ||
7 | + /> | ||
8 | +</template> | ||
9 | + | ||
10 | +<script setup lang="ts"> | ||
11 | +import { PropType, toRefs, ref, shallowReactive, watch } from 'vue' | ||
12 | +import { CreateComponentType } from '@/packages/index.d' | ||
13 | +import { useChartEditStore } from '@/store/modules/chartEditStore/chartEditStore' | ||
14 | +import { useChartInteract } from '@/hooks' | ||
15 | +import { InteractEventOn } from '@/enums/eventEnum' | ||
16 | +import { ComponentInteractParamsEnum } from './interact' | ||
17 | + | ||
18 | +const props = defineProps({ | ||
19 | + chartConfig: { | ||
20 | + type: Object as PropType<CreateComponentType>, | ||
21 | + required: true | ||
22 | + } | ||
23 | +}) | ||
24 | + | ||
25 | +const { w, h } = toRefs(props.chartConfig.attr) | ||
26 | +const option = shallowReactive({ | ||
27 | + value: { | ||
28 | + selectValue: props.chartConfig.option.selectValue, | ||
29 | + dataset: props.chartConfig.option.dataset | ||
30 | + } | ||
31 | +}) | ||
32 | + | ||
33 | +// 监听事件改变 | ||
34 | +const onChange = (v: string) => { | ||
35 | + // 存储到联动数据 | ||
36 | + useChartInteract( | ||
37 | + props.chartConfig, | ||
38 | + useChartEditStore, | ||
39 | + { [ComponentInteractParamsEnum.DATA]: v }, | ||
40 | + InteractEventOn.CHANGE | ||
41 | + ) | ||
42 | +} | ||
43 | + | ||
44 | +// 手动更新 | ||
45 | +watch( | ||
46 | + () => props.chartConfig.option, | ||
47 | + (newData: any) => { | ||
48 | + option.value = newData | ||
49 | + onChange(newData.selectValue) | ||
50 | + }, | ||
51 | + { | ||
52 | + immediate: true, | ||
53 | + deep: true | ||
54 | + } | ||
55 | +) | ||
56 | +</script> | ||
57 | + | ||
58 | +<style lang="scss" scoped> | ||
59 | +@include deep() { | ||
60 | + .n-base-selection-label { | ||
61 | + height: v-bind('h + "px"'); | ||
62 | + display: flex; | ||
63 | + align-items: center; | ||
64 | + } | ||
65 | +} | ||
66 | +</style> |
1 | +import { InteractEventOn, InteractActionsType } from '@/enums/eventEnum' | ||
2 | + | ||
3 | +// 时间组件类型 | ||
4 | +export enum ComponentInteractEventEnum { | ||
5 | + DATA = 'data' | ||
6 | +} | ||
7 | + | ||
8 | +// 联动参数 | ||
9 | +export enum ComponentInteractParamsEnum { | ||
10 | + DATA = 'data' | ||
11 | +} | ||
12 | + | ||
13 | +// 定义组件触发回调事件 | ||
14 | +export const interactActions: InteractActionsType[] = [ | ||
15 | + { | ||
16 | + interactType: InteractEventOn.CHANGE, | ||
17 | + interactName: '选择完成', | ||
18 | + componentEmitEvents: { | ||
19 | + [ComponentInteractEventEnum.DATA]: [ | ||
20 | + { | ||
21 | + value: ComponentInteractParamsEnum.DATA, | ||
22 | + label: '选择项' | ||
23 | + } | ||
24 | + ] | ||
25 | + } | ||
26 | + } | ||
27 | +] |
1 | +import cloneDeep from 'lodash/cloneDeep' | ||
2 | +import { PublicConfigClass } from '@/packages/public' | ||
3 | +import { CreateComponentType } from '@/packages/index.d' | ||
4 | +import { chartInitConfig } from '@/settings/designSetting' | ||
5 | +import { COMPONENT_INTERACT_EVENT_KET } from '@/enums/eventEnum' | ||
6 | +import { interactActions, ComponentInteractEventEnum } from './interact' | ||
7 | +import { InputsTabConfig } from './index' | ||
8 | + | ||
9 | +export const option = { | ||
10 | + // 时间组件展示类型,必须和 interactActions 中定义的数据一致 | ||
11 | + [COMPONENT_INTERACT_EVENT_KET]: ComponentInteractEventEnum.DATA, | ||
12 | + // 默认值 | ||
13 | + tabLabel: '选项1', | ||
14 | + // 样式 | ||
15 | + tabType: 'segment', | ||
16 | + // 暴露配置内容给用户 | ||
17 | + dataset: [ | ||
18 | + { | ||
19 | + label: '选项1', | ||
20 | + value: '1' | ||
21 | + }, | ||
22 | + { | ||
23 | + label: '选项2', | ||
24 | + value: '2' | ||
25 | + }, | ||
26 | + { | ||
27 | + label: '选项3', | ||
28 | + value: '3' | ||
29 | + } | ||
30 | + ] | ||
31 | +} | ||
32 | + | ||
33 | +export default class Config extends PublicConfigClass implements CreateComponentType { | ||
34 | + public key = InputsTabConfig.key | ||
35 | + public attr = { ...chartInitConfig, w: 460, h: 32, zIndex: -1 } | ||
36 | + public chartConfig = cloneDeep(InputsTabConfig) | ||
37 | + public interactActions = interactActions | ||
38 | + public option = cloneDeep(option) | ||
39 | +} |
1 | +<template> | ||
2 | + <collapse-item name="标签页配置" :expanded="true"> | ||
3 | + <setting-item-box name="默认值" :alone="true"> | ||
4 | + <n-select size="small" v-model:value="optionData.tabType" :options="tabTypeOptions" /> | ||
5 | + </setting-item-box> | ||
6 | + </collapse-item> | ||
7 | +</template> | ||
8 | + | ||
9 | +<script lang="ts" setup> | ||
10 | +import { PropType } from 'vue' | ||
11 | +import { CollapseItem, SettingItemBox } from '@/components/Pages/ChartItemSetting' | ||
12 | +import { option } from './config' | ||
13 | + | ||
14 | +defineProps({ | ||
15 | + optionData: { | ||
16 | + type: Object as PropType<typeof option>, | ||
17 | + required: true | ||
18 | + } | ||
19 | +}) | ||
20 | + | ||
21 | +const tabTypeOptions = [ | ||
22 | + { | ||
23 | + label: '线条', | ||
24 | + value: 'bar' | ||
25 | + }, | ||
26 | + { | ||
27 | + label: '分段', | ||
28 | + value: 'segment' | ||
29 | + } | ||
30 | +] | ||
31 | +</script> |
1 | +import { ConfigType, PackagesCategoryEnum, ChartFrameEnum } from '@/packages/index.d' | ||
2 | +import { ChatCategoryEnum, ChatCategoryEnumName } from '../../index.d' | ||
3 | + | ||
4 | +export const InputsTabConfig: ConfigType = { | ||
5 | + key: 'InputsTab', | ||
6 | + chartKey: 'VInputsTab', | ||
7 | + conKey: 'VCInputsTab', | ||
8 | + title: '标签选择器', | ||
9 | + category: ChatCategoryEnum.INPUTS, | ||
10 | + categoryName: ChatCategoryEnumName.INPUTS, | ||
11 | + package: PackagesCategoryEnum.INFORMATIONS, | ||
12 | + chartFrame: ChartFrameEnum.STATIC, | ||
13 | + image: 'inputs_tab.png' | ||
14 | +} |
1 | +<template> | ||
2 | + <n-tabs :type="option.value.tabType" @update:value="onChange"> | ||
3 | + <n-tab v-for="(item, index) in option.value.dataset" :name="item.label" :key="index"> {{ item.label }} </n-tab> | ||
4 | + </n-tabs> | ||
5 | +</template> | ||
6 | + | ||
7 | +<script setup lang="ts"> | ||
8 | +import { PropType, toRefs, shallowReactive, watch } from 'vue' | ||
9 | +import cloneDeep from 'lodash/cloneDeep' | ||
10 | +import { CreateComponentType } from '@/packages/index.d' | ||
11 | +import { useChartEditStore } from '@/store/modules/chartEditStore/chartEditStore' | ||
12 | +import { useChartInteract } from '@/hooks' | ||
13 | +import { InteractEventOn } from '@/enums/eventEnum' | ||
14 | +import { ComponentInteractParamsEnum } from './interact' | ||
15 | + | ||
16 | +const props = defineProps({ | ||
17 | + chartConfig: { | ||
18 | + type: Object as PropType<CreateComponentType>, | ||
19 | + required: true | ||
20 | + } | ||
21 | +}) | ||
22 | + | ||
23 | +const { w, h } = toRefs(props.chartConfig.attr) | ||
24 | +const option = shallowReactive({ | ||
25 | + value: cloneDeep(props.chartConfig.option) | ||
26 | +}) | ||
27 | + | ||
28 | +// 监听事件改变 | ||
29 | +const onChange = (v: string) => { | ||
30 | + if (v === undefined) return | ||
31 | + const selectItem = option.value.dataset.find((item: { label: string; value: any }) => item.label === v) | ||
32 | + // 存储到联动数据 | ||
33 | + useChartInteract( | ||
34 | + props.chartConfig, | ||
35 | + useChartEditStore, | ||
36 | + { [ComponentInteractParamsEnum.DATA]: selectItem.value }, | ||
37 | + InteractEventOn.CHANGE | ||
38 | + ) | ||
39 | +} | ||
40 | + | ||
41 | +// 手动更新 | ||
42 | +watch( | ||
43 | + () => props.chartConfig.option, | ||
44 | + (newData: any) => { | ||
45 | + option.value = newData | ||
46 | + onChange(newData.tabValue) | ||
47 | + }, | ||
48 | + { | ||
49 | + immediate: true, | ||
50 | + deep: true | ||
51 | + } | ||
52 | +) | ||
53 | +</script> |
1 | +import { InteractEventOn, InteractActionsType } from '@/enums/eventEnum' | ||
2 | + | ||
3 | +// 时间组件类型 | ||
4 | +export enum ComponentInteractEventEnum { | ||
5 | + DATA = 'data' | ||
6 | +} | ||
7 | + | ||
8 | +// 联动参数 | ||
9 | +export enum ComponentInteractParamsEnum { | ||
10 | + DATA = 'data' | ||
11 | +} | ||
12 | + | ||
13 | +// 定义组件触发回调事件 | ||
14 | +export const interactActions: InteractActionsType[] = [ | ||
15 | + { | ||
16 | + interactType: InteractEventOn.CHANGE, | ||
17 | + interactName: '选择完成', | ||
18 | + componentEmitEvents: { | ||
19 | + [ComponentInteractEventEnum.DATA]: [ | ||
20 | + { | ||
21 | + value: ComponentInteractParamsEnum.DATA, | ||
22 | + label: '选择项' | ||
23 | + } | ||
24 | + ] | ||
25 | + } | ||
26 | + } | ||
27 | +] |
1 | <template> | 1 | <template> |
2 | + <global-setting :optionData="optionData"></global-setting> | ||
2 | <collapse-item name="词云" expanded> | 3 | <collapse-item name="词云" expanded> |
3 | <setting-item-box name="形状"> | 4 | <setting-item-box name="形状"> |
4 | <setting-item> | 5 | <setting-item> |
@@ -45,7 +46,7 @@ | @@ -45,7 +46,7 @@ | ||
45 | import { PropType, computed } from 'vue' | 46 | import { PropType, computed } from 'vue' |
46 | import { option, ShapeEnumList } from './config' | 47 | import { option, ShapeEnumList } from './config' |
47 | // eslint-disable-next-line no-unused-vars | 48 | // eslint-disable-next-line no-unused-vars |
48 | -import { CollapseItem, SettingItemBox, SettingItem } from '@/components/Pages/ChartItemSetting' | 49 | +import { GlobalSetting, CollapseItem, SettingItemBox, SettingItem } from '@/components/Pages/ChartItemSetting' |
49 | 50 | ||
50 | const props = defineProps({ | 51 | const props = defineProps({ |
51 | optionData: { | 52 | optionData: { |
1 | <template> | 1 | <template> |
2 | <v-chart | 2 | <v-chart |
3 | ref="vChartRef" | 3 | ref="vChartRef" |
4 | + :init-options="initOptions" | ||
4 | :theme="themeColor" | 5 | :theme="themeColor" |
5 | :option="option" | 6 | :option="option" |
6 | :manual-update="isPreview()" | 7 | :manual-update="isPreview()" |
@@ -12,6 +13,7 @@ | @@ -12,6 +13,7 @@ | ||
12 | <script setup lang="ts"> | 13 | <script setup lang="ts"> |
13 | import { ref, computed, watch, PropType } from 'vue' | 14 | import { ref, computed, watch, PropType } from 'vue' |
14 | import VChart from 'vue-echarts' | 15 | import VChart from 'vue-echarts' |
16 | +import { useCanvasInitOptions } from '@/hooks/useCanvasInitOptions.hook' | ||
15 | import 'echarts-wordcloud' | 17 | import 'echarts-wordcloud' |
16 | import { use } from 'echarts/core' | 18 | import { use } from 'echarts/core' |
17 | import { CanvasRenderer } from 'echarts/renderers' | 19 | import { CanvasRenderer } from 'echarts/renderers' |
@@ -38,6 +40,8 @@ const props = defineProps({ | @@ -38,6 +40,8 @@ const props = defineProps({ | ||
38 | } | 40 | } |
39 | }) | 41 | }) |
40 | 42 | ||
43 | +const initOptions = useCanvasInitOptions(props.chartConfig.option, props.themeSetting) | ||
44 | + | ||
41 | use([CanvasRenderer, GridComponent, TooltipComponent]) | 45 | use([CanvasRenderer, GridComponent, TooltipComponent]) |
42 | 46 | ||
43 | const replaceMergeArr = ref<string[]>() | 47 | const replaceMergeArr = ref<string[]>() |
1 | -import { ConfigType, PackagesCategoryEnum } from '@/packages/index.d' | 1 | +import { ConfigType, PackagesCategoryEnum, ChartFrameEnum } from '@/packages/index.d' |
2 | import { ChatCategoryEnum,ChatCategoryEnumName } from '../../index.d' | 2 | import { ChatCategoryEnum,ChatCategoryEnumName } from '../../index.d' |
3 | 3 | ||
4 | export const TextBarrageConfig: ConfigType = { | 4 | export const TextBarrageConfig: ConfigType = { |
@@ -9,5 +9,6 @@ export const TextBarrageConfig: ConfigType = { | @@ -9,5 +9,6 @@ export const TextBarrageConfig: ConfigType = { | ||
9 | category: ChatCategoryEnum.TEXT, | 9 | category: ChatCategoryEnum.TEXT, |
10 | categoryName: ChatCategoryEnumName.TEXT, | 10 | categoryName: ChatCategoryEnumName.TEXT, |
11 | package: PackagesCategoryEnum.INFORMATIONS, | 11 | package: PackagesCategoryEnum.INFORMATIONS, |
12 | + chartFrame: ChartFrameEnum.COMMON, | ||
12 | image: 'text_barrage.png' | 13 | image: 'text_barrage.png' |
13 | } | 14 | } |
1 | -import { ConfigType, PackagesCategoryEnum } from '@/packages/index.d' | 1 | +import { ConfigType, PackagesCategoryEnum, ChartFrameEnum } from '@/packages/index.d' |
2 | import { ChatCategoryEnum,ChatCategoryEnumName } from '../../index.d' | 2 | import { ChatCategoryEnum,ChatCategoryEnumName } from '../../index.d' |
3 | 3 | ||
4 | export const TextCommonConfig: ConfigType = { | 4 | export const TextCommonConfig: ConfigType = { |
@@ -9,5 +9,6 @@ export const TextCommonConfig: ConfigType = { | @@ -9,5 +9,6 @@ export const TextCommonConfig: ConfigType = { | ||
9 | category: ChatCategoryEnum.TEXT, | 9 | category: ChatCategoryEnum.TEXT, |
10 | categoryName: ChatCategoryEnumName.TEXT, | 10 | categoryName: ChatCategoryEnumName.TEXT, |
11 | package: PackagesCategoryEnum.INFORMATIONS, | 11 | package: PackagesCategoryEnum.INFORMATIONS, |
12 | + chartFrame: ChartFrameEnum.COMMON, | ||
12 | image: 'text_static.png' | 13 | image: 'text_static.png' |
13 | } | 14 | } |
1 | export enum ChatCategoryEnum { | 1 | export enum ChatCategoryEnum { |
2 | TEXT = 'Texts', | 2 | TEXT = 'Texts', |
3 | TITLE = 'Titles', | 3 | TITLE = 'Titles', |
4 | + INPUTS = 'Inputs', | ||
4 | MORE = 'Mores' | 5 | MORE = 'Mores' |
5 | } | 6 | } |
6 | 7 | ||
7 | export enum ChatCategoryEnumName { | 8 | export enum ChatCategoryEnumName { |
8 | TEXT = '文本', | 9 | TEXT = '文本', |
9 | TITLE = '标题', | 10 | TITLE = '标题', |
11 | + // 控件 => 数据录入 | ||
12 | + INPUTS = '控件', | ||
10 | MORE = '更多' | 13 | MORE = '更多' |
11 | } | 14 | } |
@@ -6,7 +6,7 @@ import { ClockConfig } from '@/packages/components/external/Decorates/Mores/Icon | @@ -6,7 +6,7 @@ import { ClockConfig } from '@/packages/components/external/Decorates/Mores/Icon | ||
6 | export function useInjectLib(packagesList: EPackagesType) { | 6 | export function useInjectLib(packagesList: EPackagesType) { |
7 | packagesList[EPackagesCategoryEnum.COMPOSES] = ComposesList | 7 | packagesList[EPackagesCategoryEnum.COMPOSES] = ComposesList |
8 | 8 | ||
9 | - addWidgetToCategoryByCategoryName(packagesList, PackagesCategoryEnum.DECORATES, ClockConfig) | 9 | + // addWidgetToCategoryByCategoryName(packagesList, PackagesCategoryEnum.DECORATES, ClockConfig) |
10 | } | 10 | } |
11 | 11 | ||
12 | /** | 12 | /** |
1 | -import { BaseEvent, EventLife } from '@/enums/eventEnum' | 1 | +import { BaseEvent, EventLife, InteractEvents, InteractEventOn, InteractActionsType } from '@/enums/eventEnum' |
2 | import type { GlobalThemeJsonType } from '@/settings/chartThemes/index' | 2 | import type { GlobalThemeJsonType } from '@/settings/chartThemes/index' |
3 | import type { RequestConfigType } from '@/store/modules/chartEditStore/chartEditStore.d' | 3 | import type { RequestConfigType } from '@/store/modules/chartEditStore/chartEditStore.d' |
4 | 4 | ||
@@ -120,13 +120,19 @@ export interface PublicConfigType { | @@ -120,13 +120,19 @@ export interface PublicConfigType { | ||
120 | } | 120 | } |
121 | filter?: string | 121 | filter?: string |
122 | status: StatusType | 122 | status: StatusType |
123 | + interactActions?: InteractActionsType[], | ||
123 | events: { | 124 | events: { |
124 | baseEvent: { | 125 | baseEvent: { |
125 | [K in BaseEvent]?: string | 126 | [K in BaseEvent]?: string |
126 | - }, | 127 | + } |
127 | advancedEvents: { | 128 | advancedEvents: { |
128 | [K in EventLife]?: string | 129 | [K in EventLife]?: string |
129 | } | 130 | } |
131 | + interactEvents: { | ||
132 | + [InteractEvents.INTERACT_ON]: InteractEventOn | undefined | ||
133 | + [InteractEvents.INTERACT_COMPONENT_ID]: string | undefined | ||
134 | + [InteractEvents.INTERACT_FN]: { [name: string]: string } | ||
135 | + }[] | ||
130 | } | 136 | } |
131 | } | 137 | } |
132 | 138 |
@@ -14,7 +14,7 @@ export const packagesList: PackagesType = { | @@ -14,7 +14,7 @@ export const packagesList: PackagesType = { | ||
14 | [PackagesCategoryEnum.CHARTS]: ChartList, | 14 | [PackagesCategoryEnum.CHARTS]: ChartList, |
15 | [PackagesCategoryEnum.INFORMATIONS]: InformationList, | 15 | [PackagesCategoryEnum.INFORMATIONS]: InformationList, |
16 | [PackagesCategoryEnum.TABLES]: TableList, | 16 | [PackagesCategoryEnum.TABLES]: TableList, |
17 | - [PackagesCategoryEnum.DECORATES]: DecorateList, | 17 | + [PackagesCategoryEnum.DECORATES]: DecorateList |
18 | } | 18 | } |
19 | 19 | ||
20 | /** | 20 | /** |
@@ -102,7 +102,8 @@ export class PublicConfigClass implements PublicConfigType { | @@ -102,7 +102,8 @@ export class PublicConfigClass implements PublicConfigType { | ||
102 | advancedEvents: { | 102 | advancedEvents: { |
103 | [EventLife.VNODE_MOUNTED]: undefined, | 103 | [EventLife.VNODE_MOUNTED]: undefined, |
104 | [EventLife.VNODE_BEFORE_MOUNT]: undefined | 104 | [EventLife.VNODE_BEFORE_MOUNT]: undefined |
105 | - } | 105 | + }, |
106 | + interactEvents: [] | ||
106 | } | 107 | } |
107 | } | 108 | } |
108 | 109 |
@@ -67,8 +67,7 @@ import { | @@ -67,8 +67,7 @@ import { | ||
67 | EyeOutline as EyeOutlineIcon, | 67 | EyeOutline as EyeOutlineIcon, |
68 | EyeOffOutline as EyeOffOutlineIcon, | 68 | EyeOffOutline as EyeOffOutlineIcon, |
69 | Albums as AlbumsIcon, | 69 | Albums as AlbumsIcon, |
70 | - Analytics as AnalyticsIcon, | ||
71 | - SaveOutline as SaveIcon | 70 | + Analytics as AnalyticsIcon |
72 | } from '@vicons/ionicons5' | 71 | } from '@vicons/ionicons5' |
73 | 72 | ||
74 | import { | 73 | import { |
@@ -295,10 +294,7 @@ const carbon = { | @@ -295,10 +294,7 @@ const carbon = { | ||
295 | FilterIcon, | 294 | FilterIcon, |
296 | FilterEditIcon, | 295 | FilterEditIcon, |
297 | // 图层 | 296 | // 图层 |
298 | - LaptopIcon, | ||
299 | - // 保存 | ||
300 | - // THINGS_KIT | ||
301 | - SaveIcon | 297 | + LaptopIcon |
302 | } | 298 | } |
303 | 299 | ||
304 | // https://www.xicons.org/#/ 还有很多 | 300 | // https://www.xicons.org/#/ 还有很多 |
@@ -5,6 +5,13 @@ import { loginCheck } from '@/utils' | @@ -5,6 +5,13 @@ import { loginCheck } from '@/utils' | ||
5 | export function createRouterGuards(router: Router) { | 5 | export function createRouterGuards(router: Router) { |
6 | // 前置 | 6 | // 前置 |
7 | router.beforeEach(async (to, from, next) => { | 7 | router.beforeEach(async (to, from, next) => { |
8 | + // http://localhost:3000/#/chart/preview/792622755697790976?t=123 | ||
9 | + // 把外部动态参数放入window.route.params,后续API动态接口可以用window.route?.params?.t来拼接参数 | ||
10 | + // @ts-ignore | ||
11 | + if (!window.route) window.route = {params: {}} | ||
12 | + // @ts-ignore | ||
13 | + Object.assign(window.route.params, to.query) | ||
14 | + | ||
8 | const Loading = window['$loading']; | 15 | const Loading = window['$loading']; |
9 | Loading && Loading.start(); | 16 | Loading && Loading.start(); |
10 | const isErrorPage = router.getRoutes().findIndex((item) => item.name === to.name); | 17 | const isErrorPage = router.getRoutes().findIndex((item) => item.name === to.name); |
@@ -64,10 +64,13 @@ export const chartColorsSearch = { | @@ -64,10 +64,13 @@ export const chartColorsSearch = { | ||
64 | roma: ['#e01f54', '#5e4ea5', 'rgba(137, 52, 72, 0.3)', 'rgba(224, 31, 84, 0.5)', 'rgba(94, 78, 165, 0.5)'], | 64 | roma: ['#e01f54', '#5e4ea5', 'rgba(137, 52, 72, 0.3)', 'rgba(224, 31, 84, 0.5)', 'rgba(94, 78, 165, 0.5)'], |
65 | } | 65 | } |
66 | 66 | ||
67 | +export type EchartsRenderer = 'svg' | 'canvas'; | ||
68 | + | ||
67 | // 默认主题详细配置 | 69 | // 默认主题详细配置 |
68 | type ThemeJsonType = typeof themeJson | 70 | type ThemeJsonType = typeof themeJson |
69 | export interface GlobalThemeJsonType extends Partial<ThemeJsonType> { | 71 | export interface GlobalThemeJsonType extends Partial<ThemeJsonType> { |
70 | dataset?: any, | 72 | dataset?: any, |
73 | + renderer?: EchartsRenderer, | ||
71 | [T:string]: any | 74 | [T:string]: any |
72 | } | 75 | } |
73 | -export const globalThemeJson = {...themeJson, dataset: null,} | 76 | +export const globalThemeJson = {...themeJson, dataset: null, renderer: 'svg' as const } |
@@ -6,7 +6,7 @@ import designColor from './designColor.json' | @@ -6,7 +6,7 @@ import designColor from './designColor.json' | ||
6 | export const lang = LangEnum.ZH | 6 | export const lang = LangEnum.ZH |
7 | 7 | ||
8 | // 水印文字 | 8 | // 水印文字 |
9 | -export const watermarkText = 'GoView 低代码平台' | 9 | +export const watermarkText = "GoView 低代码平台" |
10 | 10 | ||
11 | // 分组名称 | 11 | // 分组名称 |
12 | export const groupTitle = '分组' | 12 | export const groupTitle = '分组' |
@@ -17,7 +17,7 @@ export const theme = { | @@ -17,7 +17,7 @@ export const theme = { | ||
17 | darkTheme: false, | 17 | darkTheme: false, |
18 | //默认主题色 | 18 | //默认主题色 |
19 | appTheme: '#51d6a9', | 19 | appTheme: '#51d6a9', |
20 | - appThemeDetail: null | 20 | + appThemeDetail: null, |
21 | } | 21 | } |
22 | 22 | ||
23 | // 图表初始配置(px) | 23 | // 图表初始配置(px) |
@@ -28,7 +28,7 @@ export const chartInitConfig = { | @@ -28,7 +28,7 @@ export const chartInitConfig = { | ||
28 | h: 300, | 28 | h: 300, |
29 | // 不建议动 offset | 29 | // 不建议动 offset |
30 | offsetX: 0, | 30 | offsetX: 0, |
31 | - offsetY: 0 | 31 | + offsetY: 0, |
32 | } | 32 | } |
33 | 33 | ||
34 | // dialog 图标的大小 | 34 | // dialog 图标的大小 |
@@ -44,7 +44,7 @@ export const asideCollapsedWidth = 60 | @@ -44,7 +44,7 @@ export const asideCollapsedWidth = 60 | ||
44 | export const maskClosable = false | 44 | export const maskClosable = false |
45 | 45 | ||
46 | // 全局边框圆角 | 46 | // 全局边框圆角 |
47 | -export const borderRadius = '6px' | 47 | +export const borderRadius = '4px' |
48 | 48 | ||
49 | // 轮播间隔 | 49 | // 轮播间隔 |
50 | export const carouselInterval = 4000 | 50 | export const carouselInterval = 4000 |
@@ -159,7 +159,8 @@ export const fetchRouteParams = () => { | @@ -159,7 +159,8 @@ export const fetchRouteParams = () => { | ||
159 | */ | 159 | */ |
160 | export const fetchRouteParamsLocation = () => { | 160 | export const fetchRouteParamsLocation = () => { |
161 | try { | 161 | try { |
162 | - return document.location.hash.split('/').pop() || '' | 162 | + // 防止添加query参数的时候,解析ID异常 |
163 | + return document.location.hash.split('?')[0].split('/').pop() || '' | ||
163 | } catch (error) { | 164 | } catch (error) { |
164 | window['$message'].warning('查询路由信息失败,请联系管理员!') | 165 | window['$message'].warning('查询路由信息失败,请联系管理员!') |
165 | return '' | 166 | return '' |
@@ -10,7 +10,7 @@ | @@ -10,7 +10,7 @@ | ||
10 | <slot name="icon"></slot> | 10 | <slot name="icon"></slot> |
11 | </div> | 11 | </div> |
12 | </n-space> | 12 | </n-space> |
13 | - <n-space align="center" style="gap: 4px"> | 13 | + <n-space class="go-flex-no-wrap" align="center" style="gap: 4px"> |
14 | <slot name="top-right"></slot> | 14 | <slot name="top-right"></slot> |
15 | <n-icon v-show="backIcon" size="20" class="go-cursor-pointer go-d-block" @click="backHandle"> | 15 | <n-icon v-show="backIcon" size="20" class="go-cursor-pointer go-d-block" @click="backHandle"> |
16 | <chevron-back-outline-icon></chevron-back-outline-icon> | 16 | <chevron-back-outline-icon></chevron-back-outline-icon> |
@@ -13,7 +13,7 @@ | @@ -13,7 +13,7 @@ | ||
13 | draggable | 13 | draggable |
14 | @dragstart="dragStartHandle($event, item)" | 14 | @dragstart="dragStartHandle($event, item)" |
15 | @dragend="dragendHandle" | 15 | @dragend="dragendHandle" |
16 | - @dblclick="dblclickHandle(item)" | 16 | + @dblclick="dblclickHandle(item)" |
17 | > | 17 | > |
18 | <div class="list-header"> | 18 | <div class="list-header"> |
19 | <mac-os-control-btn class="list-header-control-btn" :mini="true" :disabled="true"></mac-os-control-btn> | 19 | <mac-os-control-btn class="list-header-control-btn" :mini="true" :disabled="true"></mac-os-control-btn> |
@@ -3,21 +3,34 @@ | @@ -3,21 +3,34 @@ | ||
3 | <n-form inline :label-width="45" size="small" label-placement="left"> | 3 | <n-form inline :label-width="45" size="small" label-placement="left"> |
4 | <n-form-item label="宽度"> | 4 | <n-form-item label="宽度"> |
5 | <!-- 尺寸选择 --> | 5 | <!-- 尺寸选择 --> |
6 | - <n-input-number size="small" v-model:value="canvasConfig.width" :disabled="editCanvas.lockScale" | ||
7 | - :validator="validator" @update:value="changeSizeHandle"></n-input-number> | 6 | + <n-input-number |
7 | + size="small" | ||
8 | + v-model:value="canvasConfig.width" | ||
9 | + :disabled="editCanvas.lockScale" | ||
10 | + :validator="validator" | ||
11 | + @update:value="changeSizeHandle" | ||
12 | + ></n-input-number> | ||
8 | </n-form-item> | 13 | </n-form-item> |
9 | <n-form-item label="高度"> | 14 | <n-form-item label="高度"> |
10 | - <n-input-number size="small" v-model:value="canvasConfig.height" :disabled="editCanvas.lockScale" | ||
11 | - :validator="validator" @update:value="changeSizeHandle"></n-input-number> | 15 | + <n-input-number |
16 | + size="small" | ||
17 | + v-model:value="canvasConfig.height" | ||
18 | + :disabled="editCanvas.lockScale" | ||
19 | + :validator="validator" | ||
20 | + @update:value="changeSizeHandle" | ||
21 | + ></n-input-number> | ||
12 | </n-form-item> | 22 | </n-form-item> |
13 | </n-form> | 23 | </n-form> |
14 | 24 | ||
15 | - <n-card class="upload-box"> | ||
16 | - <n-upload v-model:file-list="uploadFileListRef" :show-file-list="false" :customRequest="customRequest" | ||
17 | - :onBeforeUpload="beforeUploadHandle"> | 25 | + <div class="upload-box"> |
26 | + <n-upload | ||
27 | + v-model:file-list="uploadFileListRef" | ||
28 | + :show-file-list="false" | ||
29 | + :customRequest="customRequest" | ||
30 | + :onBeforeUpload="beforeUploadHandle" | ||
31 | + > | ||
18 | <n-upload-dragger> | 32 | <n-upload-dragger> |
19 | - <!-- THINGS_KIT 路径转换,同步生产环境与开发环境的保存的静态资源文件路径不一致 --> | ||
20 | - <img v-if="canvasConfig.backgroundImage" class="upload-show" :src="getPath(canvasConfig.backgroundImage)" alt="背景" /> | 33 | + <img v-if="canvasConfig.backgroundImage" class="upload-show" :src="canvasConfig.backgroundImage" alt="背景" /> |
21 | <div class="upload-img" v-show="!canvasConfig.backgroundImage"> | 34 | <div class="upload-img" v-show="!canvasConfig.backgroundImage"> |
22 | <img src="@/assets/images/canvas/noImage.png" /> | 35 | <img src="@/assets/images/canvas/noImage.png" /> |
23 | <n-text class="upload-desc" depth="3"> | 36 | <n-text class="upload-desc" depth="3"> |
@@ -26,22 +39,33 @@ | @@ -26,22 +39,33 @@ | ||
26 | </div> | 39 | </div> |
27 | </n-upload-dragger> | 40 | </n-upload-dragger> |
28 | </n-upload> | 41 | </n-upload> |
29 | - </n-card> | 42 | + </div> |
30 | <n-space vertical :size="12"> | 43 | <n-space vertical :size="12"> |
31 | <n-space> | 44 | <n-space> |
32 | <!-- THINGS_KIT 新增预置背景选择 --> | 45 | <!-- THINGS_KIT 新增预置背景选择 --> |
33 | <SelectBackgroundImage /> | 46 | <SelectBackgroundImage /> |
34 | <n-text>背景颜色</n-text> | 47 | <n-text>背景颜色</n-text> |
35 | <div class="picker-height"> | 48 | <div class="picker-height"> |
36 | - <n-color-picker v-if="!switchSelectColorLoading" size="small" style="width: 250px" | ||
37 | - v-model:value="canvasConfig.background" :showPreview="true" :swatches="swatchesColors"></n-color-picker> | 49 | + <n-color-picker |
50 | + v-if="!switchSelectColorLoading" | ||
51 | + size="small" | ||
52 | + style="width: 250px" | ||
53 | + v-model:value="canvasConfig.background" | ||
54 | + :showPreview="true" | ||
55 | + :swatches="swatchesColors" | ||
56 | + ></n-color-picker> | ||
38 | </div> | 57 | </div> |
39 | </n-space> | 58 | </n-space> |
40 | <n-space> | 59 | <n-space> |
41 | <n-text>应用类型</n-text> | 60 | <n-text>应用类型</n-text> |
42 | - <n-select size="small" style="width: 250px" v-model:value="selectColorValue" | ||
43 | - :disabled="!canvasConfig.backgroundImage" :options="selectColorOptions" | ||
44 | - @update:value="selectColorValueHandle" /> | 61 | + <n-select |
62 | + size="small" | ||
63 | + style="width: 250px" | ||
64 | + v-model:value="selectColorValue" | ||
65 | + :disabled="!canvasConfig.backgroundImage" | ||
66 | + :options="selectColorOptions" | ||
67 | + @update:value="selectColorValueHandle" | ||
68 | + /> | ||
45 | </n-space> | 69 | </n-space> |
46 | <n-space> | 70 | <n-space> |
47 | <n-text>背景控制</n-text> | 71 | <n-text>背景控制</n-text> |
@@ -55,9 +79,14 @@ | @@ -55,9 +79,14 @@ | ||
55 | <n-space> | 79 | <n-space> |
56 | <n-text>适配方式</n-text> | 80 | <n-text>适配方式</n-text> |
57 | <n-button-group> | 81 | <n-button-group> |
58 | - <n-button v-for="item in previewTypeList" :key="item.key" | ||
59 | - :type="canvasConfig.previewScaleType === item.key ? 'primary' : 'tertiary'" ghost size="small" | ||
60 | - @click="selectPreviewType(item.key)"> | 82 | + <n-button |
83 | + v-for="item in previewTypeList" | ||
84 | + :key="item.key" | ||
85 | + :type="canvasConfig.previewScaleType === item.key ? 'primary' : 'tertiary'" | ||
86 | + ghost | ||
87 | + size="small" | ||
88 | + @click="selectPreviewType(item.key)" | ||
89 | + > | ||
61 | <n-tooltip :show-arrow="false" trigger="hover"> | 90 | <n-tooltip :show-arrow="false" trigger="hover"> |
62 | <template #trigger> | 91 | <template #trigger> |
63 | <n-icon class="select-preview-icon" size="18"> | 92 | <n-icon class="select-preview-icon" size="18"> |
@@ -77,8 +106,13 @@ | @@ -77,8 +106,13 @@ | ||
77 | 106 | ||
78 | <!-- 主题选择和全局配置 --> | 107 | <!-- 主题选择和全局配置 --> |
79 | <n-tabs class="tabs-box" size="small" type="segment"> | 108 | <n-tabs class="tabs-box" size="small" type="segment"> |
80 | - <n-tab-pane v-for="item in globalTabList" :key="item.key" :name="item.key" size="small" | ||
81 | - display-directive="show:lazy"> | 109 | + <n-tab-pane |
110 | + v-for="item in globalTabList" | ||
111 | + :key="item.key" | ||
112 | + :name="item.key" | ||
113 | + size="small" | ||
114 | + display-directive="show:lazy" | ||
115 | + > | ||
82 | <template #tab> | 116 | <template #tab> |
83 | <n-space> | 117 | <n-space> |
84 | <span>{{ item.title }}</span> | 118 | <span>{{ item.title }}</span> |
@@ -96,7 +130,7 @@ | @@ -96,7 +130,7 @@ | ||
96 | <script setup lang="ts"> | 130 | <script setup lang="ts"> |
97 | import { ref, nextTick, watch } from 'vue' | 131 | import { ref, nextTick, watch } from 'vue' |
98 | import { backgroundImageSize } from '@/settings/designSetting' | 132 | import { backgroundImageSize } from '@/settings/designSetting' |
99 | -import { swatchesColors } from '@/settings/chartThemes' | 133 | +import { swatchesColors } from '@/settings/chartThemes/index' |
100 | import { FileTypeEnum } from '@/enums/fileTypeEnum' | 134 | import { FileTypeEnum } from '@/enums/fileTypeEnum' |
101 | import { useChartEditStore } from '@/store/modules/chartEditStore/chartEditStore' | 135 | import { useChartEditStore } from '@/store/modules/chartEditStore/chartEditStore' |
102 | import { EditCanvasConfigEnum } from '@/store/modules/chartEditStore/chartEditStore.d' | 136 | import { EditCanvasConfigEnum } from '@/store/modules/chartEditStore/chartEditStore.d' |
@@ -259,14 +293,11 @@ const selectPreviewType = (key: PreviewScaleEnum) => { | @@ -259,14 +293,11 @@ const selectPreviewType = (key: PreviewScaleEnum) => { | ||
259 | <style lang="scss" scoped> | 293 | <style lang="scss" scoped> |
260 | $uploadWidth: 326px; | 294 | $uploadWidth: 326px; |
261 | $uploadHeight: 193px; | 295 | $uploadHeight: 193px; |
262 | - | ||
263 | @include go(canvas-setting) { | 296 | @include go(canvas-setting) { |
264 | padding-top: 20px; | 297 | padding-top: 20px; |
265 | - | ||
266 | .upload-box { | 298 | .upload-box { |
267 | cursor: pointer; | 299 | cursor: pointer; |
268 | margin-bottom: 20px; | 300 | margin-bottom: 20px; |
269 | - | ||
270 | @include deep() { | 301 | @include deep() { |
271 | .n-card__content { | 302 | .n-card__content { |
272 | padding: 0; | 303 | padding: 0; |
@@ -276,48 +307,40 @@ $uploadHeight: 193px; | @@ -276,48 +307,40 @@ $uploadHeight: 193px; | ||
276 | .n-upload-dragger { | 307 | .n-upload-dragger { |
277 | padding: 5px; | 308 | padding: 5px; |
278 | width: $uploadWidth; | 309 | width: $uploadWidth; |
310 | + background-color: rgba(0, 0, 0, 0); | ||
279 | } | 311 | } |
280 | } | 312 | } |
281 | - | ||
282 | .upload-show { | 313 | .upload-show { |
283 | width: -webkit-fill-available; | 314 | width: -webkit-fill-available; |
284 | height: $uploadHeight; | 315 | height: $uploadHeight; |
285 | border-radius: 5px; | 316 | border-radius: 5px; |
286 | } | 317 | } |
287 | - | ||
288 | .upload-img { | 318 | .upload-img { |
289 | display: flex; | 319 | display: flex; |
290 | flex-direction: column; | 320 | flex-direction: column; |
291 | align-items: center; | 321 | align-items: center; |
292 | - | ||
293 | img { | 322 | img { |
294 | height: 150px; | 323 | height: 150px; |
295 | } | 324 | } |
296 | - | ||
297 | .upload-desc { | 325 | .upload-desc { |
298 | padding: 10px 0; | 326 | padding: 10px 0; |
299 | } | 327 | } |
300 | } | 328 | } |
301 | } | 329 | } |
302 | - | ||
303 | .icon-position { | 330 | .icon-position { |
304 | padding-top: 2px; | 331 | padding-top: 2px; |
305 | } | 332 | } |
306 | - | ||
307 | .picker-height { | 333 | .picker-height { |
308 | min-height: 35px; | 334 | min-height: 35px; |
309 | } | 335 | } |
310 | - | ||
311 | .clear-btn { | 336 | .clear-btn { |
312 | padding-left: 2.25em; | 337 | padding-left: 2.25em; |
313 | padding-right: 2.25em; | 338 | padding-right: 2.25em; |
314 | } | 339 | } |
315 | - | ||
316 | .select-preview-icon { | 340 | .select-preview-icon { |
317 | - padding-right: .68em; | ||
318 | - padding-left: .68em; | 341 | + padding-right: 0.68em; |
342 | + padding-left: 0.68em; | ||
319 | } | 343 | } |
320 | - | ||
321 | .tabs-box { | 344 | .tabs-box { |
322 | margin-top: 20px; | 345 | margin-top: 20px; |
323 | } | 346 | } |
@@ -135,8 +135,9 @@ const sendHandle = async () => { | @@ -135,8 +135,9 @@ const sendHandle = async () => { | ||
135 | showMatching.value = true | 135 | showMatching.value = true |
136 | return | 136 | return |
137 | } | 137 | } |
138 | - window['$message'].warning('数据异常,请检查参数!') | 138 | + window['$message'].warning('没有拿到返回值,请检查接口!') |
139 | } catch (error) { | 139 | } catch (error) { |
140 | + console.error(error); | ||
140 | loading.value = false | 141 | loading.value = false |
141 | window['$message'].warning('数据异常,请检查参数!') | 142 | window['$message'].warning('数据异常,请检查参数!') |
142 | } | 143 | } |
@@ -132,8 +132,9 @@ const fetchTargetData = async () => { | @@ -132,8 +132,9 @@ const fetchTargetData = async () => { | ||
132 | sourceData.value = res | 132 | sourceData.value = res |
133 | return | 133 | return |
134 | } | 134 | } |
135 | - window['$message'].warning('数据异常,请检查参数!') | 135 | + window['$message'].warning('没有拿到返回值,请检查接口!') |
136 | } catch (error) { | 136 | } catch (error) { |
137 | + console.error(error); | ||
137 | window['$message'].warning('数据异常,请检查参数!') | 138 | window['$message'].warning('数据异常,请检查参数!') |
138 | } | 139 | } |
139 | } | 140 | } |
@@ -114,10 +114,6 @@ const sendHandle = async () => { | @@ -114,10 +114,6 @@ const sendHandle = async () => { | ||
114 | } | 114 | } |
115 | loading.value = true | 115 | loading.value = true |
116 | try { | 116 | try { |
117 | - // const res = await customizeHttp( | ||
118 | - // toRaw(pondData.value?.dataPondRequestConfig), | ||
119 | - // toRaw(chartEditStore.getRequestGlobalConfig) | ||
120 | - // ) | ||
121 | const res = await customizeHttp(toRaw(targetData.value.request), toRaw(chartEditStore.getRequestGlobalConfig)) | 117 | const res = await customizeHttp(toRaw(targetData.value.request), toRaw(chartEditStore.getRequestGlobalConfig)) |
122 | loading.value = false | 118 | loading.value = false |
123 | if (res) { | 119 | if (res) { |
@@ -126,8 +122,9 @@ const sendHandle = async () => { | @@ -126,8 +122,9 @@ const sendHandle = async () => { | ||
126 | showMatching.value = true | 122 | showMatching.value = true |
127 | return | 123 | return |
128 | } | 124 | } |
129 | - window['$message'].warning('数据异常,请检查参数!') | 125 | + window['$message'].warning('没有拿到返回值,请检查接口!') |
130 | } catch (error) { | 126 | } catch (error) { |
127 | + console.error(error); | ||
131 | loading.value = false | 128 | loading.value = false |
132 | window['$message'].warning('数据异常,请检查参数!') | 129 | window['$message'].warning('数据异常,请检查参数!') |
133 | } | 130 | } |
@@ -16,9 +16,10 @@ | @@ -16,9 +16,10 @@ | ||
16 | import { computed } from 'vue' | 16 | import { computed } from 'vue' |
17 | import { loadAsyncComponent } from '@/utils' | 17 | import { loadAsyncComponent } from '@/utils' |
18 | import { SettingItemBox } from '@/components/Pages/ChartItemSetting' | 18 | import { SettingItemBox } from '@/components/Pages/ChartItemSetting' |
19 | +import { RequestDataTypeEnum } from '@/enums/httpEnum' | ||
20 | +import { ChartFrameEnum } from '@/packages/index.d' | ||
19 | import { useTargetData } from '../hooks/useTargetData.hook' | 21 | import { useTargetData } from '../hooks/useTargetData.hook' |
20 | import { SelectCreateDataType, SelectCreateDataEnum } from './index.d' | 22 | import { SelectCreateDataType, SelectCreateDataEnum } from './index.d' |
21 | -import { RequestDataTypeEnum } from '@/enums/httpEnum' | ||
22 | 23 | ||
23 | const ChartDataStatic = loadAsyncComponent(() => import('./components/ChartDataStatic/index.vue')) | 24 | const ChartDataStatic = loadAsyncComponent(() => import('./components/ChartDataStatic/index.vue')) |
24 | const ChartDataAjax = loadAsyncComponent(() => import('./components/ChartDataAjax/index.vue')) | 25 | const ChartDataAjax = loadAsyncComponent(() => import('./components/ChartDataAjax/index.vue')) |
@@ -44,6 +45,9 @@ const selectOptions: SelectCreateDataType[] = [ | @@ -44,6 +45,9 @@ const selectOptions: SelectCreateDataType[] = [ | ||
44 | 45 | ||
45 | // 无数据源 | 46 | // 无数据源 |
46 | const isNotData = computed(() => { | 47 | const isNotData = computed(() => { |
47 | - return typeof targetData.value?.option?.dataset === 'undefined' | 48 | + return ( |
49 | + targetData.value.chartConfig?.chartFrame === ChartFrameEnum.STATIC || | ||
50 | + typeof targetData.value?.option?.dataset === 'undefined' | ||
51 | + ) | ||
48 | }) | 52 | }) |
49 | </script> | 53 | </script> |
1 | <template> | 1 | <template> |
2 | - <n-collapse-item title="高级事件配置" name="2"> | 2 | + <n-collapse-item title="高级事件配置" name="3"> |
3 | <template #header-extra> | 3 | <template #header-extra> |
4 | <n-button type="primary" tertiary size="small" @click.stop="showModal = true"> | 4 | <n-button type="primary" tertiary size="small" @click.stop="showModal = true"> |
5 | <template #icon> | 5 | <template #icon> |
1 | <template> | 1 | <template> |
2 | - <n-collapse-item title="基础事件配置" name="1"> | 2 | + <n-collapse-item title="基础事件配置" name="2"> |
3 | <template #header-extra> | 3 | <template #header-extra> |
4 | <n-button type="primary" tertiary size="small" @click.stop="showModal = true"> | 4 | <n-button type="primary" tertiary size="small" @click.stop="showModal = true"> |
5 | <template #icon> | 5 | <template #icon> |
1 | +<template> | ||
2 | + <n-collapse-item title="组件交互" name="1" v-if="interactActions.length"> | ||
3 | + <template #header-extra> | ||
4 | + <n-button type="primary" tertiary size="small" @click.stop="evAddEventsFn"> | ||
5 | + <template #icon> | ||
6 | + <n-icon> | ||
7 | + <add-icon /> | ||
8 | + </n-icon> | ||
9 | + </template> | ||
10 | + 新增 | ||
11 | + </n-button> | ||
12 | + </template> | ||
13 | + | ||
14 | + <!-- 无数据 --> | ||
15 | + <div v-if="!targetData.events.interactEvents.length" class="no-data go-flex-center"> | ||
16 | + <img :src="noData" alt="暂无数据" /> | ||
17 | + <n-text :depth="3">暂无内容</n-text> | ||
18 | + </div> | ||
19 | + | ||
20 | + <n-card | ||
21 | + v-for="(item, cardIndex) in targetData.events.interactEvents" | ||
22 | + :key="cardIndex" | ||
23 | + class="n-card-shallow" | ||
24 | + size="small" | ||
25 | + > | ||
26 | + <n-space justify="space-between"> | ||
27 | + <n-text>关联组件 - {{ cardIndex + 1 }}</n-text> | ||
28 | + <n-button type="error" text size="small" @click="evDeleteEventsFn(cardIndex)"> | ||
29 | + <template #icon> | ||
30 | + <n-icon> | ||
31 | + <close-icon /> | ||
32 | + </n-icon> | ||
33 | + </template> | ||
34 | + </n-button> | ||
35 | + </n-space> | ||
36 | + | ||
37 | + <n-divider style="margin: 10px 0" /> | ||
38 | + | ||
39 | + <n-tag :bordered="false" type="primary"> 选择目标组件 </n-tag> | ||
40 | + | ||
41 | + <setting-item-box name="触发事件" :alone="true"> | ||
42 | + <n-input-group v-if="interactActions"> | ||
43 | + <n-select | ||
44 | + class="select-type-options" | ||
45 | + v-model:value="item.interactOn" | ||
46 | + size="tiny" | ||
47 | + :options="interactActions" | ||
48 | + /> | ||
49 | + </n-input-group> | ||
50 | + </setting-item-box> | ||
51 | + | ||
52 | + <setting-item-box :alone="true"> | ||
53 | + <template #name> | ||
54 | + <n-text>绑定</n-text> | ||
55 | + <n-tooltip trigger="hover"> | ||
56 | + <template #trigger> | ||
57 | + <n-icon size="21" :depth="3"> | ||
58 | + <help-outline-icon></help-outline-icon> | ||
59 | + </n-icon> | ||
60 | + </template> | ||
61 | + <n-text>不支持「静态组件」和「分组」</n-text> | ||
62 | + </n-tooltip> | ||
63 | + </template> | ||
64 | + <n-select | ||
65 | + class="select-type-options" | ||
66 | + value-field="id" | ||
67 | + label-field="title" | ||
68 | + size="tiny" | ||
69 | + filterable | ||
70 | + placeholder="仅展示符合条件的组件" | ||
71 | + v-model:value="item.interactComponentId" | ||
72 | + :options="fnEventsOptions()" | ||
73 | + /> | ||
74 | + </setting-item-box> | ||
75 | + | ||
76 | + <setting-item-box v-if="fnDimensionsAndSource(item.interactOn).length" name="查询结果" :alone="true"> | ||
77 | + <n-table size="small" striped> | ||
78 | + <thead> | ||
79 | + <tr> | ||
80 | + <th v-for="item in ['参数', '说明']" :key="item">{{ item }}</th> | ||
81 | + </tr> | ||
82 | + </thead> | ||
83 | + <tbody> | ||
84 | + <tr v-for="(cItem, index) in fnDimensionsAndSource(item.interactOn)" :key="index"> | ||
85 | + <td>{{ cItem.value }}</td> | ||
86 | + <td>{{ cItem.label }}</td> | ||
87 | + </tr> | ||
88 | + </tbody> | ||
89 | + </n-table> | ||
90 | + </setting-item-box> | ||
91 | + | ||
92 | + <n-tag :bordered="false" type="primary"> 关联目标组件请求参数 </n-tag> | ||
93 | + | ||
94 | + <setting-item-box | ||
95 | + :name="requestParamsItem" | ||
96 | + v-for="requestParamsItem in requestParamsTypeList" | ||
97 | + :key="requestParamsItem" | ||
98 | + > | ||
99 | + <setting-item | ||
100 | + v-for="(ovlValue, ovlKey, index) in fnGetRequest(item.interactComponentId, requestParamsItem)" | ||
101 | + :key="index" | ||
102 | + :name="`${ovlKey}`" | ||
103 | + > | ||
104 | + <n-select | ||
105 | + size="tiny" | ||
106 | + v-model:value="item.interactFn[ovlKey]" | ||
107 | + :options="fnDimensionsAndSource(item.interactOn)" | ||
108 | + clearable | ||
109 | + ></n-select> | ||
110 | + </setting-item> | ||
111 | + <n-text | ||
112 | + v-show="JSON.stringify(fnGetRequest(item.interactComponentId, requestParamsItem)) === '{}'" | ||
113 | + class="go-pt-1" | ||
114 | + depth="3" | ||
115 | + > | ||
116 | + 暂无数据 | ||
117 | + </n-text> | ||
118 | + </setting-item-box> | ||
119 | + </n-card> | ||
120 | + </n-collapse-item> | ||
121 | +</template> | ||
122 | + | ||
123 | +<script lang="ts" setup> | ||
124 | +import { VNodeChild, computed } from 'vue' | ||
125 | +import { SelectOption, SelectGroupOption } from 'naive-ui' | ||
126 | +import { SettingItemBox, SettingItem, CollapseItem } from '@/components/Pages/ChartItemSetting' | ||
127 | +import { CreateComponentType, CreateComponentGroupType, ChartFrameEnum } from '@/packages/index.d' | ||
128 | +import { RequestParamsTypeEnum } from '@/enums/httpEnum' | ||
129 | +import { InteractEventOn, COMPONENT_INTERACT_EVENT_KET } from '@/enums/eventEnum' | ||
130 | +import { icon } from '@/plugins' | ||
131 | +import noData from '@/assets/images/canvas/noData.png' | ||
132 | +import { goDialog } from '@/utils' | ||
133 | +import { useTargetData } from '../../../hooks/useTargetData.hook' | ||
134 | + | ||
135 | +const { CloseIcon, AddIcon, HelpOutlineIcon } = icon.ionicons5 | ||
136 | +const { targetData, chartEditStore } = useTargetData() | ||
137 | +const requestParamsTypeList = [RequestParamsTypeEnum.PARAMS, RequestParamsTypeEnum.HEADER] | ||
138 | + | ||
139 | +// 获取组件交互事件列表 | ||
140 | +const interactActions = computed(() => { | ||
141 | + const interactActions = targetData.value.interactActions | ||
142 | + if (!interactActions) return [] | ||
143 | + return interactActions.map(value => ({ | ||
144 | + label: value.interactName, | ||
145 | + value: value.interactType | ||
146 | + })) | ||
147 | +}) | ||
148 | + | ||
149 | +// 获取组件事件 | ||
150 | +const option = computed(() => { | ||
151 | + return targetData.value.option | ||
152 | +}) | ||
153 | + | ||
154 | +// 绑定组件数据 request | ||
155 | +const fnGetRequest = (id: string | undefined, key: RequestParamsTypeEnum) => { | ||
156 | + if (!id) return {} | ||
157 | + return chartEditStore.componentList[chartEditStore.fetchTargetIndex(id)]?.request.requestParams[key] | ||
158 | +} | ||
159 | + | ||
160 | +// 查询结果 | ||
161 | +const fnDimensionsAndSource = (interactOn: InteractEventOn | undefined) => { | ||
162 | + if (!interactOn || !targetData.value.interactActions) return [] | ||
163 | + const tableData = targetData.value.interactActions.find(item => { | ||
164 | + return item.interactType === interactOn | ||
165 | + }) | ||
166 | + | ||
167 | + return tableData?.componentEmitEvents[option.value[COMPONENT_INTERACT_EVENT_KET]] || [] | ||
168 | +} | ||
169 | + | ||
170 | +// 绑定组件列表 | ||
171 | +const fnEventsOptions = (): Array<SelectOption | SelectGroupOption> => { | ||
172 | + const filterOptionList = chartEditStore.componentList.filter(item => { | ||
173 | + // 排除自己 | ||
174 | + const isNotSelf = item.id !== targetData.value.id | ||
175 | + // 排除静态组件 | ||
176 | + const isNotStatic = item.chartConfig.chartFrame !== ChartFrameEnum.STATIC | ||
177 | + // 排除分组 | ||
178 | + const isNotGroup = !item.isGroup | ||
179 | + | ||
180 | + return isNotSelf && isNotStatic && isNotGroup | ||
181 | + }) | ||
182 | + | ||
183 | + const mapOptionList = filterOptionList.map(item => ({ | ||
184 | + id: item.id, | ||
185 | + title: item.chartConfig.title, | ||
186 | + disabled: false | ||
187 | + })) | ||
188 | + | ||
189 | + targetData.value.events.interactEvents?.forEach(iaItem => { | ||
190 | + mapOptionList.forEach(optionItem => { | ||
191 | + if (optionItem.id === iaItem.interactComponentId) { | ||
192 | + optionItem.disabled = true | ||
193 | + } | ||
194 | + }) | ||
195 | + }) | ||
196 | + | ||
197 | + return mapOptionList | ||
198 | +} | ||
199 | + | ||
200 | +// 新增模块 | ||
201 | +const evAddEventsFn = () => { | ||
202 | + targetData.value.events.interactEvents.push({ | ||
203 | + interactOn: undefined, | ||
204 | + interactComponentId: undefined, | ||
205 | + interactFn: {} | ||
206 | + }) | ||
207 | +} | ||
208 | + | ||
209 | +// 删除模块 | ||
210 | +const evDeleteEventsFn = (index: number) => { | ||
211 | + goDialog({ | ||
212 | + message: '是否删除此关联交互模块?', | ||
213 | + onPositiveCallback: () => { | ||
214 | + targetData.value.events.interactEvents.splice(index, 1) | ||
215 | + } | ||
216 | + }) | ||
217 | +} | ||
218 | +</script> | ||
219 | + | ||
220 | +<style lang="scss" scoped> | ||
221 | +.mill-chart-target-data { | ||
222 | + :deep(pre) { | ||
223 | + white-space: pre-wrap; | ||
224 | + word-wrap: break-word; | ||
225 | + } | ||
226 | +} | ||
227 | + | ||
228 | +.n-input-group { | ||
229 | + height: 30px; | ||
230 | +} | ||
231 | + | ||
232 | +.no-data { | ||
233 | + flex-direction: column; | ||
234 | + width: 100%; | ||
235 | + img { | ||
236 | + width: 120px; | ||
237 | + } | ||
238 | +} | ||
239 | + | ||
240 | +:deep(.n-base-selection .n-base-selection-label) { | ||
241 | + height: 32px; | ||
242 | +} | ||
243 | +</style> |
@@ -5,6 +5,7 @@ | @@ -5,6 +5,7 @@ | ||
5 | 组件 id: | 5 | 组件 id: |
6 | <n-text>{{ targetData.id }}</n-text> | 6 | <n-text>{{ targetData.id }}</n-text> |
7 | </n-text> | 7 | </n-text> |
8 | + <chart-event-interaction></chart-event-interaction> | ||
8 | <chart-event-base-handle></chart-event-base-handle> | 9 | <chart-event-base-handle></chart-event-base-handle> |
9 | <chart-event-advanced-handle></chart-event-advanced-handle> | 10 | <chart-event-advanced-handle></chart-event-advanced-handle> |
10 | </n-collapse> | 11 | </n-collapse> |
@@ -12,6 +13,7 @@ | @@ -12,6 +13,7 @@ | ||
12 | 13 | ||
13 | <script setup lang="ts"> | 14 | <script setup lang="ts"> |
14 | import { ref } from 'vue' | 15 | import { ref } from 'vue' |
16 | +import { ChartEventInteraction } from './components/ChartEventInteraction' | ||
15 | import { ChartEventAdvancedHandle } from './components/ChartEventAdvancedHandle' | 17 | import { ChartEventAdvancedHandle } from './components/ChartEventAdvancedHandle' |
16 | import { ChartEventBaseHandle } from './components/ChartEventBaseHandle' | 18 | import { ChartEventBaseHandle } from './components/ChartEventBaseHandle' |
17 | import { useTargetData } from '../hooks/useTargetData.hook' | 19 | import { useTargetData } from '../hooks/useTargetData.hook' |
@@ -13,10 +13,11 @@ | @@ -13,10 +13,11 @@ | ||
13 | 13 | ||
14 | <!-- 缩放比例 --> | 14 | <!-- 缩放比例 --> |
15 | <n-select | 15 | <n-select |
16 | - :disabled="lockScale" | 16 | + ref="selectInstRef" |
17 | class="scale-btn" | 17 | class="scale-btn" |
18 | v-model:value="filterValue" | 18 | v-model:value="filterValue" |
19 | size="mini" | 19 | size="mini" |
20 | + :disabled="lockScale" | ||
20 | :options="filterOptions" | 21 | :options="filterOptions" |
21 | @update:value="selectHandle" | 22 | @update:value="selectHandle" |
22 | ></n-select> | 23 | ></n-select> |
@@ -52,6 +53,7 @@ | @@ -52,6 +53,7 @@ | ||
52 | </template> | 53 | </template> |
53 | 54 | ||
54 | <script setup lang="ts"> | 55 | <script setup lang="ts"> |
56 | +import { SelectInst } from 'naive-ui' | ||
55 | import { reactive, ref, toRefs, watchEffect } from 'vue' | 57 | import { reactive, ref, toRefs, watchEffect } from 'vue' |
56 | import { icon } from '@/plugins' | 58 | import { icon } from '@/plugins' |
57 | import { EditHistory } from '../EditHistory/index' | 59 | import { EditHistory } from '../EditHistory/index' |
@@ -59,15 +61,18 @@ import EditShortcutKey from '../EditShortcutKey/index.vue' | @@ -59,15 +61,18 @@ import EditShortcutKey from '../EditShortcutKey/index.vue' | ||
59 | import { useDesignStore } from '@/store/modules/designStore/designStore' | 61 | import { useDesignStore } from '@/store/modules/designStore/designStore' |
60 | import { useChartEditStore } from '@/store/modules/chartEditStore/chartEditStore' | 62 | import { useChartEditStore } from '@/store/modules/chartEditStore/chartEditStore' |
61 | import { EditCanvasTypeEnum } from '@/store/modules/chartEditStore/chartEditStore.d' | 63 | import { EditCanvasTypeEnum } from '@/store/modules/chartEditStore/chartEditStore.d' |
64 | +import { useChartLayoutStore } from '@/store/modules/chartLayoutStore/chartLayoutStore' | ||
65 | +import { ChartLayoutStoreEnum } from '@/store/modules/chartLayoutStore/chartLayoutStore.d' | ||
62 | 66 | ||
63 | const { LockClosedOutlineIcon, LockOpenOutlineIcon } = icon.ionicons5 | 67 | const { LockClosedOutlineIcon, LockOpenOutlineIcon } = icon.ionicons5 |
64 | 68 | ||
65 | // 全局颜色 | 69 | // 全局颜色 |
66 | const designStore = useDesignStore() | 70 | const designStore = useDesignStore() |
67 | const themeColor = ref(designStore.getAppTheme) | 71 | const themeColor = ref(designStore.getAppTheme) |
68 | - | 72 | +const chartLayoutStore = useChartLayoutStore() |
69 | const chartEditStore = useChartEditStore() | 73 | const chartEditStore = useChartEditStore() |
70 | const { lockScale, scale } = toRefs(chartEditStore.getEditCanvas) | 74 | const { lockScale, scale } = toRefs(chartEditStore.getEditCanvas) |
75 | +const selectInstRef = ref<SelectInst | null>(null) | ||
71 | 76 | ||
72 | // 缩放选项 | 77 | // 缩放选项 |
73 | let filterOptions = [ | 78 | let filterOptions = [ |
@@ -98,7 +103,9 @@ const filterValue = ref('') | @@ -98,7 +103,9 @@ const filterValue = ref('') | ||
98 | 103 | ||
99 | // 用户自选择 | 104 | // 用户自选择 |
100 | const selectHandle = (v: number) => { | 105 | const selectHandle = (v: number) => { |
106 | + selectInstRef.value?.blur() | ||
101 | if (v === 0) { | 107 | if (v === 0) { |
108 | + chartLayoutStore.setItemUnHandle(ChartLayoutStoreEnum.RE_POSITION_CANVAS, true) | ||
102 | chartEditStore.computedScale() | 109 | chartEditStore.computedScale() |
103 | return | 110 | return |
104 | } | 111 | } |
@@ -48,10 +48,10 @@ const useSyncUpdateHandle = () => { | @@ -48,10 +48,10 @@ const useSyncUpdateHandle = () => { | ||
48 | // document.hasFocus() && syncData() | 48 | // document.hasFocus() && syncData() |
49 | // }, editToJsonInterval) | 49 | // }, editToJsonInterval) |
50 | 50 | ||
51 | - // 2、失焦同步数据 | ||
52 | - addEventListener('blur', syncData) | 51 | + // 失焦同步数据(暂不开启) |
52 | + // addEventListener('blur', syncData) | ||
53 | 53 | ||
54 | - // 【监听JSON代码 刷新工作台图表】 | 54 | + // 监听编辑器保存事件 刷新工作台图表 |
55 | addEventListener(SavePageEnum.JSON, updateFn) | 55 | addEventListener(SavePageEnum.JSON, updateFn) |
56 | 56 | ||
57 | // 监听编辑页关闭 | 57 | // 监听编辑页关闭 |
@@ -74,7 +74,7 @@ const useSyncUpdateHandle = () => { | @@ -74,7 +74,7 @@ const useSyncUpdateHandle = () => { | ||
74 | use() | 74 | use() |
75 | } | 75 | } |
76 | } | 76 | } |
77 | - | 77 | + |
78 | return watchHandler | 78 | return watchHandler |
79 | } | 79 | } |
80 | 80 |
1 | <template> | 1 | <template> |
2 | <!-- <edit-rule></edit-rule> --> | 2 | <!-- <edit-rule></edit-rule> --> |
3 | - <content-box id="go-chart-edit-layout" :flex="true" :showTop="false" :showBottom="true" :depth="1" :xScroll="true" | ||
4 | - :disabledScroll="true" @mousedown="mousedownHandleUnStop" @drop="dragHandle" @dragover="dragoverHandle" | ||
5 | - @dragenter="dragoverHandle"> | 3 | + <content-box |
4 | + id="go-chart-edit-layout" | ||
5 | + :flex="true" | ||
6 | + :showTop="false" | ||
7 | + :showBottom="true" | ||
8 | + :depth="1" | ||
9 | + :xScroll="true" | ||
10 | + :disabledScroll="true" | ||
11 | + @mousedown="mousedownHandleUnStop" | ||
12 | + @drop="dragHandle" | ||
13 | + @dragover="dragoverHandle" | ||
14 | + @dragenter="dragoverHandle" | ||
15 | + > | ||
6 | <edit-rule> | 16 | <edit-rule> |
7 | <!-- 画布主体 --> | 17 | <!-- 画布主体 --> |
8 | <div id="go-chart-edit-content" @contextmenu="handleContextMenu"> | 18 | <div id="go-chart-edit-content" @contextmenu="handleContextMenu"> |
9 | <!-- 展示 --> | 19 | <!-- 展示 --> |
10 | <edit-range> | 20 | <edit-range> |
11 | <!-- 滤镜预览 --> | 21 | <!-- 滤镜预览 --> |
12 | - <div :style="{ | ||
13 | - ...getFilterStyle(chartEditStore.getEditCanvasConfig), | ||
14 | - ...rangeStyle | ||
15 | - }"> | 22 | + <div |
23 | + :style="{ | ||
24 | + ...getFilterStyle(chartEditStore.getEditCanvasConfig), | ||
25 | + ...rangeStyle | ||
26 | + }" | ||
27 | + > | ||
16 | <!-- 图表 --> | 28 | <!-- 图表 --> |
17 | <div v-for="(item, index) in chartEditStore.getComponentList" :key="item.id"> | 29 | <div v-for="(item, index) in chartEditStore.getComponentList" :key="item.id"> |
18 | <!-- 分组 --> | 30 | <!-- 分组 --> |
19 | - <edit-group v-if="item.isGroup" :groupData="(item as CreateComponentGroupType)" | ||
20 | - :groupIndex="index"></edit-group> | 31 | + <edit-group |
32 | + v-if="item.isGroup" | ||
33 | + :groupData="(item as CreateComponentGroupType)" | ||
34 | + :groupIndex="index" | ||
35 | + ></edit-group> | ||
21 | 36 | ||
22 | <!-- 单组件 --> | 37 | <!-- 单组件 --> |
23 | - <edit-shape-box v-else :data-id="item.id" :index="index" :style="{ | 38 | + <edit-shape-box |
39 | + v-else | ||
40 | + :data-id="item.id" | ||
41 | + :index="index" | ||
42 | + :style="{ | ||
24 | ...useComponentStyle(item.attr, index), | 43 | ...useComponentStyle(item.attr, index), |
25 | ...getBlendModeStyle(item.styles) as any | 44 | ...getBlendModeStyle(item.styles) as any |
26 | - }" :item="item" @click="mouseClickHandle($event, item)" @mousedown="mousedownHandle($event, item)" | ||
27 | - @mouseenter="mouseenterHandle($event, item)" @mouseleave="mouseleaveHandle($event, item)" | ||
28 | - @contextmenu="handleContextMenu($event, item, optionsHandle)"> | ||
29 | - <component class="edit-content-chart" :class="animationsClass(item.styles.animations)" | ||
30 | - :is="item.chartConfig.chartKey" :chartConfig="item" :themeSetting="themeSetting" | ||
31 | - :themeColor="themeColor" :style="{ | 45 | + }" |
46 | + :item="item" | ||
47 | + @click="mouseClickHandle($event, item)" | ||
48 | + @mousedown="mousedownHandle($event, item)" | ||
49 | + @mouseenter="mouseenterHandle($event, item)" | ||
50 | + @mouseleave="mouseleaveHandle($event, item)" | ||
51 | + @contextmenu="handleContextMenu($event, item, optionsHandle)" | ||
52 | + > | ||
53 | + <component | ||
54 | + class="edit-content-chart" | ||
55 | + :class="animationsClass(item.styles.animations)" | ||
56 | + :is="item.chartConfig.chartKey" | ||
57 | + :chartConfig="item" | ||
58 | + :themeSetting="themeSetting" | ||
59 | + :themeColor="themeColor" | ||
60 | + :style="{ | ||
32 | ...useSizeStyle(item.attr), | 61 | ...useSizeStyle(item.attr), |
33 | ...getFilterStyle(item.styles), | 62 | ...getFilterStyle(item.styles), |
34 | ...getTransformStyle(item.styles) | 63 | ...getTransformStyle(item.styles) |
35 | - }"></component> | 64 | + }" |
65 | + ></component> | ||
36 | </edit-shape-box> | 66 | </edit-shape-box> |
37 | </div> | 67 | </div> |
38 | </div> | 68 | </div> |
@@ -53,7 +83,7 @@ | @@ -53,7 +83,7 @@ | ||
53 | </template> | 83 | </template> |
54 | 84 | ||
55 | <script lang="ts" setup> | 85 | <script lang="ts" setup> |
56 | -import { onMounted, computed } from 'vue' | 86 | +import { onMounted, computed, provide } from 'vue' |
57 | import { chartColors } from '@/settings/chartThemes/index' | 87 | import { chartColors } from '@/settings/chartThemes/index' |
58 | import { MenuEnum } from '@/enums/editPageEnum' | 88 | import { MenuEnum } from '@/enums/editPageEnum' |
59 | import { CreateComponentType, CreateComponentGroupType } from '@/packages/index.d' | 89 | import { CreateComponentType, CreateComponentGroupType } from '@/packages/index.d' |
@@ -61,7 +91,7 @@ import { animationsClass, getFilterStyle, getTransformStyle, getBlendModeStyle, | @@ -61,7 +91,7 @@ import { animationsClass, getFilterStyle, getTransformStyle, getBlendModeStyle, | ||
61 | import { useContextMenu } from '@/views/chart/hooks/useContextMenu.hook' | 91 | import { useContextMenu } from '@/views/chart/hooks/useContextMenu.hook' |
62 | import { MenuOptionsItemType } from '@/views/chart/hooks/useContextMenu.hook.d' | 92 | import { MenuOptionsItemType } from '@/views/chart/hooks/useContextMenu.hook.d' |
63 | import { useChartEditStore } from '@/store/modules/chartEditStore/chartEditStore' | 93 | import { useChartEditStore } from '@/store/modules/chartEditStore/chartEditStore' |
64 | - | 94 | +import { SCALE_KEY } from '@/views/preview/hooks/useScale.hook' |
65 | import { useLayout } from './hooks/useLayout.hook' | 95 | import { useLayout } from './hooks/useLayout.hook' |
66 | import { useAddKeyboard } from '../hooks/useKeyboard.hook' | 96 | import { useAddKeyboard } from '../hooks/useKeyboard.hook' |
67 | import { dragHandle, dragoverHandle, mousedownHandleUnStop, useMouseHandle } from './hooks/useDrag.hook' | 97 | import { dragHandle, dragoverHandle, mousedownHandleUnStop, useMouseHandle } from './hooks/useDrag.hook' |
@@ -82,6 +112,8 @@ const chartEditStore = useChartEditStore() | @@ -82,6 +112,8 @@ const chartEditStore = useChartEditStore() | ||
82 | const { handleContextMenu } = useContextMenu() | 112 | const { handleContextMenu } = useContextMenu() |
83 | const { dataSyncFetch, intervalDataSyncUpdate } = useSyncRemote() | 113 | const { dataSyncFetch, intervalDataSyncUpdate } = useSyncRemote() |
84 | 114 | ||
115 | +// 编辑时注入scale变量,消除警告 | ||
116 | +provide(SCALE_KEY, null); | ||
85 | 117 | ||
86 | // 布局处理 | 118 | // 布局处理 |
87 | useLayout() | 119 | useLayout() |
@@ -139,6 +171,7 @@ const rangeStyle = computed(() => { | @@ -139,6 +171,7 @@ const rangeStyle = computed(() => { | ||
139 | const backgroundImage = chartEditStore.getEditCanvasConfig.backgroundImage | 171 | const backgroundImage = chartEditStore.getEditCanvasConfig.backgroundImage |
140 | const selectColor = chartEditStore.getEditCanvasConfig.selectColor | 172 | const selectColor = chartEditStore.getEditCanvasConfig.selectColor |
141 | const backgroundColor = background ? background : undefined | 173 | const backgroundColor = background ? background : undefined |
174 | + | ||
142 | const computedBackground = selectColor | 175 | const computedBackground = selectColor |
143 | ? { background: backgroundColor } | 176 | ? { background: backgroundColor } |
144 | // : { background: `url(${backgroundImage}) no-repeat center center / cover !important` } | 177 | // : { background: `url(${backgroundImage}) no-repeat center center / cover !important` } |
@@ -37,7 +37,7 @@ | @@ -37,7 +37,7 @@ | ||
37 | <n-button size="small" type="primary" ghost @click="dataSyncUpdate()"> | 37 | <n-button size="small" type="primary" ghost @click="dataSyncUpdate()"> |
38 | <template #icon> | 38 | <template #icon> |
39 | <n-icon> | 39 | <n-icon> |
40 | - <SaveIcon></SaveIcon> | 40 | + <Save /> |
41 | </n-icon> | 41 | </n-icon> |
42 | </template> | 42 | </template> |
43 | </n-button> | 43 | </n-button> |
@@ -53,6 +53,7 @@ | @@ -53,6 +53,7 @@ | ||
53 | import { toRefs, Ref, reactive, computed } from 'vue' | 53 | import { toRefs, Ref, reactive, computed } from 'vue' |
54 | import { renderIcon, goDialog, goHome } from '@/utils' | 54 | import { renderIcon, goDialog, goHome } from '@/utils' |
55 | import { icon } from '@/plugins' | 55 | import { icon } from '@/plugins' |
56 | +import { Save } from '@vicons/carbon' | ||
56 | import { useRemoveKeyboard } from '../../hooks/useKeyboard.hook' | 57 | import { useRemoveKeyboard } from '../../hooks/useKeyboard.hook' |
57 | 58 | ||
58 | import { useChartEditStore } from '@/store/modules/chartEditStore/chartEditStore' | 59 | import { useChartEditStore } from '@/store/modules/chartEditStore/chartEditStore' |
@@ -65,12 +66,11 @@ import { useChartLayoutStore } from '@/store/modules/chartLayoutStore/chartLayou | @@ -65,12 +66,11 @@ import { useChartLayoutStore } from '@/store/modules/chartLayoutStore/chartLayou | ||
65 | import { ChartLayoutStoreEnum } from '@/store/modules/chartLayoutStore/chartLayoutStore.d' | 66 | import { ChartLayoutStoreEnum } from '@/store/modules/chartLayoutStore/chartLayoutStore.d' |
66 | 67 | ||
67 | const { LayersIcon, BarChartIcon, PrismIcon, HomeIcon, ArrowBackIcon, ArrowForwardIcon } = icon.ionicons5 | 68 | const { LayersIcon, BarChartIcon, PrismIcon, HomeIcon, ArrowBackIcon, ArrowForwardIcon } = icon.ionicons5 |
68 | -const { SaveIcon } = icon.carbon | ||
69 | const { setItem } = useChartLayoutStore() | 69 | const { setItem } = useChartLayoutStore() |
70 | -const { dataSyncUpdate } = useSyncRemote() | ||
71 | const { getLayers, getCharts, getDetails } = toRefs(useChartLayoutStore()) | 70 | const { getLayers, getCharts, getDetails } = toRefs(useChartLayoutStore()) |
72 | const chartEditStore = useChartEditStore() | 71 | const chartEditStore = useChartEditStore() |
73 | const chartHistoryStore = useChartHistoryStore() | 72 | const chartHistoryStore = useChartHistoryStore() |
73 | +const { dataSyncUpdate } = useSyncRemote() | ||
74 | 74 | ||
75 | interface ItemType<T> { | 75 | interface ItemType<T> { |
76 | key: T | 76 | key: T |
@@ -139,10 +139,10 @@ const clickHistoryHandle = (item: ItemType<HistoryStackEnum>) => { | @@ -139,10 +139,10 @@ const clickHistoryHandle = (item: ItemType<HistoryStackEnum>) => { | ||
139 | switch (item.key) { | 139 | switch (item.key) { |
140 | case HistoryStackEnum.BACK_STACK: | 140 | case HistoryStackEnum.BACK_STACK: |
141 | chartEditStore.setBack() | 141 | chartEditStore.setBack() |
142 | - break | 142 | + break; |
143 | case HistoryStackEnum.FORWARD_STACK: | 143 | case HistoryStackEnum.FORWARD_STACK: |
144 | chartEditStore.setForward() | 144 | chartEditStore.setForward() |
145 | - break | 145 | + break; |
146 | } | 146 | } |
147 | } | 147 | } |
148 | 148 |
@@ -10,7 +10,7 @@ | @@ -10,7 +10,7 @@ | ||
10 | </template> | 10 | </template> |
11 | 11 | ||
12 | <script setup lang="ts"> | 12 | <script setup lang="ts"> |
13 | -import { computed, shallowReactive } from 'vue' | 13 | +import { computed } from 'vue' |
14 | import { renderIcon, goDialog, fetchPathByName, routerTurnByPath, setSessionStorage, getLocalStorage } from '@/utils' | 14 | import { renderIcon, goDialog, fetchPathByName, routerTurnByPath, setSessionStorage, getLocalStorage } from '@/utils' |
15 | import { PreviewEnum } from '@/enums/pageEnum' | 15 | import { PreviewEnum } from '@/enums/pageEnum' |
16 | import { StorageEnum } from '@/enums/storageEnum' | 16 | import { StorageEnum } from '@/enums/storageEnum' |
@@ -65,7 +65,7 @@ const sendHandle = () => { | @@ -65,7 +65,7 @@ const sendHandle = () => { | ||
65 | }) | 65 | }) |
66 | } | 66 | } |
67 | 67 | ||
68 | -const btnList = shallowReactive([ | 68 | +const btnList = [ |
69 | { | 69 | { |
70 | select: true, | 70 | select: true, |
71 | title: '同步内容', | 71 | title: '同步内容', |
@@ -85,7 +85,7 @@ const btnList = shallowReactive([ | @@ -85,7 +85,7 @@ const btnList = shallowReactive([ | ||
85 | icon: renderIcon(SendIcon), | 85 | icon: renderIcon(SendIcon), |
86 | event: sendHandle | 86 | event: sendHandle |
87 | } | 87 | } |
88 | -]) | 88 | +] |
89 | 89 | ||
90 | const comBtnList = computed(() => { | 90 | const comBtnList = computed(() => { |
91 | if (chartEditStore.getEditCanvas.isCodeEdit) { | 91 | if (chartEditStore.getEditCanvas.isCodeEdit) { |
@@ -199,9 +199,8 @@ const changeLayerType = (value: LayerModeEnum) => { | @@ -199,9 +199,8 @@ const changeLayerType = (value: LayerModeEnum) => { | ||
199 | 199 | ||
200 | <style lang="scss" scoped> | 200 | <style lang="scss" scoped> |
201 | $wight: 200px; | 201 | $wight: 200px; |
202 | -@include go(content-layers) { | 202 | +@include go('content-layers') { |
203 | width: $wight; | 203 | width: $wight; |
204 | - flex-shrink: 0; | ||
205 | overflow: hidden; | 204 | overflow: hidden; |
206 | @extend .go-transition; | 205 | @extend .go-transition; |
207 | .not-layer-text { | 206 | .not-layer-text { |
@@ -53,7 +53,8 @@ const componentVersionUpdatePolyfill = (newObject: any, sources: any) => { | @@ -53,7 +53,8 @@ const componentVersionUpdatePolyfill = (newObject: any, sources: any) => { | ||
53 | advancedEvents: { | 53 | advancedEvents: { |
54 | [EventLife.VNODE_MOUNTED]: undefined, | 54 | [EventLife.VNODE_MOUNTED]: undefined, |
55 | [EventLife.VNODE_BEFORE_MOUNT]: undefined | 55 | [EventLife.VNODE_BEFORE_MOUNT]: undefined |
56 | - } | 56 | + }, |
57 | + interactEvents: [] | ||
57 | } | 58 | } |
58 | } | 59 | } |
59 | return newObject | 60 | return newObject |
@@ -135,7 +136,7 @@ export const useSync = () => { | @@ -135,7 +136,7 @@ export const useSync = () => { | ||
135 | callBack?: (componentInstance: CreateComponentType) => void | 136 | callBack?: (componentInstance: CreateComponentType) => void |
136 | ) => { | 137 | ) => { |
137 | // 补充 class 上的方法 | 138 | // 补充 class 上的方法 |
138 | - const newComponent: CreateComponentType = await createComponent(_componentInstance.chartConfig) | 139 | + let newComponent: CreateComponentType = await createComponent(_componentInstance.chartConfig) |
139 | if (callBack) { | 140 | if (callBack) { |
140 | if (changeId) { | 141 | if (changeId) { |
141 | callBack(componentMerge(newComponent, { ..._componentInstance, id: getUUID() })) | 142 | callBack(componentMerge(newComponent, { ..._componentInstance, id: getUUID() })) |
@@ -163,7 +164,7 @@ export const useSync = () => { | @@ -163,7 +164,7 @@ export const useSync = () => { | ||
163 | const listLength = projectData[key].length; | 164 | const listLength = projectData[key].length; |
164 | for (const comItem of projectData[key]) { | 165 | for (const comItem of projectData[key]) { |
165 | // 设置加载数量 | 166 | // 设置加载数量 |
166 | - const percentage = parseInt((parseFloat(`${++loadIndex / listLength}`) * 100).toString()) | 167 | + let percentage = parseInt((parseFloat(`${++loadIndex / listLength}`) * 100).toString()) |
167 | chartLayoutStore.setItemUnHandle(ChartLayoutStoreEnum.PERCENTAGE, percentage) | 168 | chartLayoutStore.setItemUnHandle(ChartLayoutStoreEnum.PERCENTAGE, percentage) |
168 | // 判断类型 | 169 | // 判断类型 |
169 | if (comItem.isGroup) { | 170 | if (comItem.isGroup) { |
@@ -258,12 +258,10 @@ $carousel-image-height: 60vh; | @@ -258,12 +258,10 @@ $carousel-image-height: 60vh; | ||
258 | margin-top: -$--header-height; | 258 | margin-top: -$--header-height; |
259 | height: $go-login-height; | 259 | height: $go-login-height; |
260 | width: 100vw; | 260 | width: 100vw; |
261 | - | ||
262 | &-carousel { | 261 | &-carousel { |
263 | width: $carousel-width; | 262 | width: $carousel-width; |
264 | margin-top: 100px; | 263 | margin-top: 100px; |
265 | min-width: 500px; | 264 | min-width: 500px; |
266 | - | ||
267 | &-img { | 265 | &-img { |
268 | display: block; | 266 | display: block; |
269 | margin: 0 auto; | 267 | margin: 0 auto; |
@@ -275,7 +273,6 @@ $carousel-image-height: 60vh; | @@ -275,7 +273,6 @@ $carousel-image-height: 60vh; | ||
275 | display: flex; | 273 | display: flex; |
276 | flex-direction: column; | 274 | flex-direction: column; |
277 | margin: 0 160px; | 275 | margin: 0 160px; |
278 | - | ||
279 | &-container { | 276 | &-container { |
280 | width: $width; | 277 | width: $width; |
281 | } | 278 | } |
@@ -311,18 +308,15 @@ $carousel-image-height: 60vh; | @@ -311,18 +308,15 @@ $carousel-image-height: 60vh; | ||
311 | width: 100vw; | 308 | width: 100vw; |
312 | height: 100vh; | 309 | height: 100vh; |
313 | background: url('@/assets/images/login/login-bg.png') no-repeat 0 -120px; | 310 | background: url('@/assets/images/login/login-bg.png') no-repeat 0 -120px; |
314 | - | ||
315 | .bg-slot { | 311 | .bg-slot { |
316 | width: $carousel-width; | 312 | width: $carousel-width; |
317 | } | 313 | } |
318 | - | ||
319 | .bg-img-box { | 314 | .bg-img-box { |
320 | position: relative; | 315 | position: relative; |
321 | display: flex; | 316 | display: flex; |
322 | flex-wrap: wrap; | 317 | flex-wrap: wrap; |
323 | width: 770px; | 318 | width: 770px; |
324 | margin-right: -20px; | 319 | margin-right: -20px; |
325 | - | ||
326 | &-li { | 320 | &-li { |
327 | img { | 321 | img { |
328 | margin-right: 20px; | 322 | margin-right: 20px; |
@@ -335,15 +329,12 @@ $carousel-image-height: 60vh; | @@ -335,15 +329,12 @@ $carousel-image-height: 60vh; | ||
335 | } | 329 | } |
336 | } | 330 | } |
337 | } | 331 | } |
338 | - | ||
339 | @media only screen and (max-width: 1200px) { | 332 | @media only screen and (max-width: 1200px) { |
340 | - | ||
341 | .bg-img-box, | 333 | .bg-img-box, |
342 | .bg-slot, | 334 | .bg-slot, |
343 | .go-login-carousel { | 335 | .go-login-carousel { |
344 | display: none !important; | 336 | display: none !important; |
345 | } | 337 | } |
346 | - | ||
347 | .go-login-box-footer { | 338 | .go-login-box-footer { |
348 | position: relative; | 339 | position: relative; |
349 | } | 340 | } |
1 | <template> | 1 | <template> |
2 | <div | 2 | <div |
3 | class="chart-item" | 3 | class="chart-item" |
4 | - v-for="(item, index) in localStorageInfo.componentList" | 4 | + v-for="(item, index) in chartEditStore.componentList" |
5 | :class="animationsClass(item.styles.animations)" | 5 | :class="animationsClass(item.styles.animations)" |
6 | :key="item.id" | 6 | :key="item.id" |
7 | :style="{ | 7 | :style="{ |
@@ -52,30 +52,29 @@ import { useLifeHandler } from '@/hooks' | @@ -52,30 +52,29 @@ import { useLifeHandler } from '@/hooks' | ||
52 | const { initDataPond, clearMittDataPondMap } = useChartDataPondFetch() | 52 | const { initDataPond, clearMittDataPondMap } = useChartDataPondFetch() |
53 | const chartEditStore = useChartEditStore() | 53 | const chartEditStore = useChartEditStore() |
54 | 54 | ||
55 | -const props = defineProps({ | ||
56 | - localStorageInfo: { | ||
57 | - type: Object as PropType<ChartEditStorageType>, | ||
58 | - required: true | ||
59 | - } | ||
60 | -}) | 55 | +// const props = defineProps({ |
56 | +// localStorageInfo: { | ||
57 | +// type: Object as PropType<ChartEditStorageType>, | ||
58 | +// required: true | ||
59 | +// } | ||
60 | +// }) | ||
61 | 61 | ||
62 | // 主题色 | 62 | // 主题色 |
63 | const themeSetting = computed(() => { | 63 | const themeSetting = computed(() => { |
64 | - const chartThemeSetting = props.localStorageInfo.editCanvasConfig.chartThemeSetting | 64 | + const chartThemeSetting = chartEditStore.editCanvasConfig.chartThemeSetting |
65 | return chartThemeSetting | 65 | return chartThemeSetting |
66 | }) | 66 | }) |
67 | 67 | ||
68 | - | ||
69 | // 配置项 | 68 | // 配置项 |
70 | const themeColor = computed(() => { | 69 | const themeColor = computed(() => { |
71 | - const colorCustomMergeData = colorCustomMerge(props.localStorageInfo.editCanvasConfig.chartCustomThemeColorInfo) | ||
72 | - return colorCustomMergeData[props.localStorageInfo.editCanvasConfig.chartThemeColor] | 70 | + const colorCustomMergeData = colorCustomMerge(chartEditStore.editCanvasConfig.chartCustomThemeColorInfo) |
71 | + return colorCustomMergeData[chartEditStore.editCanvasConfig.chartThemeColor] | ||
73 | }) | 72 | }) |
74 | 73 | ||
75 | // 组件渲染结束初始化数据池 | 74 | // 组件渲染结束初始化数据池 |
76 | clearMittDataPondMap() | 75 | clearMittDataPondMap() |
77 | onMounted(() => { | 76 | onMounted(() => { |
78 | - initDataPond(props.localStorageInfo.requestGlobalConfig) | 77 | + initDataPond(chartEditStore.requestGlobalConfig) |
79 | }) | 78 | }) |
80 | </script> | 79 | </script> |
81 | 80 |
1 | -import { ref, onMounted, onUnmounted} from 'vue' | 1 | +import { ref, provide, onMounted, onUnmounted } from 'vue' |
2 | import { usePreviewFitScale, usePreviewScrollYScale, usePreviewScrollXScale, usePreviewFullScale } from '@/hooks/index' | 2 | import { usePreviewFitScale, usePreviewScrollYScale, usePreviewScrollXScale, usePreviewFullScale } from '@/hooks/index' |
3 | import type { ChartEditStorageType } from '../index.d' | 3 | import type { ChartEditStorageType } from '../index.d' |
4 | import { PreviewScaleEnum } from '@/enums/styleEnum' | 4 | import { PreviewScaleEnum } from '@/enums/styleEnum' |
5 | 5 | ||
6 | +export const SCALE_KEY = 'scale-value' | ||
7 | + | ||
6 | export const useScale = (localStorageInfo: ChartEditStorageType) => { | 8 | export const useScale = (localStorageInfo: ChartEditStorageType) => { |
7 | const entityRef = ref() | 9 | const entityRef = ref() |
8 | const previewRef = ref() | 10 | const previewRef = ref() |
9 | const width = ref(localStorageInfo.editCanvasConfig.width) | 11 | const width = ref(localStorageInfo.editCanvasConfig.width) |
10 | const height = ref(localStorageInfo.editCanvasConfig.height) | 12 | const height = ref(localStorageInfo.editCanvasConfig.height) |
13 | + const scaleRef = ref({ width: 1, height: 1 }) | ||
14 | + | ||
15 | + provide(SCALE_KEY, scaleRef); | ||
16 | + | ||
17 | + const updateScaleRef = (scale: { width: number; height: number }) => { | ||
18 | + // 这里需要解构,保证赋值给scaleRef的为一个新对象 | ||
19 | + // 因为scale始终为同一引用 | ||
20 | + scaleRef.value = { ...scale } | ||
21 | + } | ||
11 | 22 | ||
12 | // 屏幕适配 | 23 | // 屏幕适配 |
13 | onMounted(() => { | 24 | onMounted(() => { |
@@ -17,6 +28,7 @@ export const useScale = (localStorageInfo: ChartEditStorageType) => { | @@ -17,6 +28,7 @@ export const useScale = (localStorageInfo: ChartEditStorageType) => { | ||
17 | width.value as number, | 28 | width.value as number, |
18 | height.value as number, | 29 | height.value as number, |
19 | previewRef.value, | 30 | previewRef.value, |
31 | + updateScaleRef | ||
20 | ) | 32 | ) |
21 | calcRate() | 33 | calcRate() |
22 | windowResize() | 34 | windowResize() |
@@ -34,6 +46,7 @@ export const useScale = (localStorageInfo: ChartEditStorageType) => { | @@ -34,6 +46,7 @@ export const useScale = (localStorageInfo: ChartEditStorageType) => { | ||
34 | const dom = entityRef.value | 46 | const dom = entityRef.value |
35 | dom.style.width = `${width.value * scale.width}px` | 47 | dom.style.width = `${width.value * scale.width}px` |
36 | dom.style.height = `${height.value * scale.height}px` | 48 | dom.style.height = `${height.value * scale.height}px` |
49 | + updateScaleRef(scale) | ||
37 | } | 50 | } |
38 | ) | 51 | ) |
39 | calcRate() | 52 | calcRate() |
@@ -53,6 +66,7 @@ export const useScale = (localStorageInfo: ChartEditStorageType) => { | @@ -53,6 +66,7 @@ export const useScale = (localStorageInfo: ChartEditStorageType) => { | ||
53 | const dom = entityRef.value | 66 | const dom = entityRef.value |
54 | dom.style.width = `${width.value * scale.width}px` | 67 | dom.style.width = `${width.value * scale.width}px` |
55 | dom.style.height = `${height.value * scale.height}px` | 68 | dom.style.height = `${height.value * scale.height}px` |
69 | + updateScaleRef(scale) | ||
56 | } | 70 | } |
57 | ) | 71 | ) |
58 | calcRate() | 72 | calcRate() |
@@ -68,6 +82,7 @@ export const useScale = (localStorageInfo: ChartEditStorageType) => { | @@ -68,6 +82,7 @@ export const useScale = (localStorageInfo: ChartEditStorageType) => { | ||
68 | width.value as number, | 82 | width.value as number, |
69 | height.value as number, | 83 | height.value as number, |
70 | previewRef.value, | 84 | previewRef.value, |
85 | + updateScaleRef | ||
71 | ) | 86 | ) |
72 | calcRate() | 87 | calcRate() |
73 | windowResize() | 88 | windowResize() |
@@ -81,6 +96,7 @@ export const useScale = (localStorageInfo: ChartEditStorageType) => { | @@ -81,6 +96,7 @@ export const useScale = (localStorageInfo: ChartEditStorageType) => { | ||
81 | 96 | ||
82 | return { | 97 | return { |
83 | entityRef, | 98 | entityRef, |
84 | - previewRef | 99 | + previewRef, |
100 | + scaleRef | ||
85 | } | 101 | } |
86 | } | 102 | } |
1 | <template> | 1 | <template> |
2 | - <div :class="`go-preview ${localStorageInfo.editCanvasConfig.previewScaleType}`"> | ||
3 | - <template v-if="showEntity"> | ||
4 | - <!-- 实体区域 --> | ||
5 | - <div ref="entityRef" class="go-preview-entity"> | ||
6 | - <!-- 缩放层 --> | ||
7 | - <div ref="previewRef" class="go-preview-scale"> | ||
8 | - <!-- 展示层 --> | ||
9 | - <div :style="previewRefStyle" v-if="show"> | ||
10 | - <!-- 渲染层 --> | ||
11 | - <preview-render-list :localStorageInfo="localStorageInfo"></preview-render-list> | ||
12 | - </div> | ||
13 | - </div> | ||
14 | - </div> | ||
15 | - </template> | ||
16 | - <template v-else> | ||
17 | - <!-- 缩放层 --> | ||
18 | - <div ref="previewRef" class="go-preview-scale"> | ||
19 | - <!-- 展示层 --> | ||
20 | - <div :style="previewRefStyle" v-if="show"> | ||
21 | - <!-- 渲染层 --> | ||
22 | - <preview-render-list :localStorageInfo="localStorageInfo"></preview-render-list> | ||
23 | - </div> | ||
24 | - </div> | ||
25 | - </template> | ||
26 | - </div> | 2 | + <suspense> |
3 | + <suspense-index></suspense-index> | ||
4 | + </suspense> | ||
27 | </template> | 5 | </template> |
28 | 6 | ||
29 | <script setup lang="ts"> | 7 | <script setup lang="ts"> |
30 | -import { computed } from 'vue' | ||
31 | -import { PreviewRenderList } from './components/PreviewRenderList' | ||
32 | -import { getFilterStyle, setTitle } from '@/utils' | ||
33 | - | ||
34 | -// THINGS_KIT 预览逻辑修改 | ||
35 | -// import { getEditCanvasConfigStyle, getSessionStorageInfo } from './utils' | ||
36 | -import { getEditCanvasConfigStyle } from './utils' | ||
37 | -import { getSessionStorageInfo } from './external/usePreview' | ||
38 | - | ||
39 | -import { useComInstall } from './hooks/useComInstall.hook' | ||
40 | -import { useScale } from './hooks/useScale.hook' | ||
41 | -import { useStore } from './hooks/useStore.hook' | ||
42 | -import { PreviewScaleEnum } from '@/enums/styleEnum' | ||
43 | -import type { ChartEditStorageType } from './index.d' | ||
44 | - | ||
45 | -const localStorageInfo: ChartEditStorageType = await getSessionStorageInfo() as ChartEditStorageType | ||
46 | -setTitle(`预览-${localStorageInfo.editCanvasConfig.projectName}`) | ||
47 | - | ||
48 | -const previewRefStyle = computed(() => { | ||
49 | - return { | ||
50 | - ...getEditCanvasConfigStyle(localStorageInfo.editCanvasConfig), | ||
51 | - ...getFilterStyle(localStorageInfo.editCanvasConfig) | ||
52 | - } | ||
53 | -}) | ||
54 | - | ||
55 | -const showEntity = computed(() => { | ||
56 | - const type = localStorageInfo.editCanvasConfig.previewScaleType | ||
57 | - return type === PreviewScaleEnum.SCROLL_Y || type === PreviewScaleEnum.SCROLL_X | ||
58 | -}) | ||
59 | - | ||
60 | -useStore(localStorageInfo) | ||
61 | -const { entityRef, previewRef } = useScale(localStorageInfo) | ||
62 | -const { show } = useComInstall(localStorageInfo) | 8 | +import suspenseIndex from './suspenseIndex.vue' |
63 | </script> | 9 | </script> |
64 | - | ||
65 | -<style lang="scss" scoped> | ||
66 | -@include go('preview') { | ||
67 | - position: relative; | ||
68 | - height: 100vh; | ||
69 | - width: 100vw; | ||
70 | - @include background-image('background-image'); | ||
71 | - &.fit, | ||
72 | - &.full { | ||
73 | - display: flex; | ||
74 | - align-items: center; | ||
75 | - justify-content: center; | ||
76 | - overflow: hidden; | ||
77 | - .go-preview-scale { | ||
78 | - transform-origin: center center; | ||
79 | - } | ||
80 | - } | ||
81 | - &.scrollY { | ||
82 | - overflow-x: hidden; | ||
83 | - | ||
84 | - .go-preview-scale { | ||
85 | - transform-origin: left top; | ||
86 | - } | ||
87 | - } | ||
88 | - | ||
89 | - &.scrollX { | ||
90 | - overflow-y: hidden; | ||
91 | - | ||
92 | - .go-preview-scale { | ||
93 | - transform-origin: left top; | ||
94 | - } | ||
95 | - } | ||
96 | - | ||
97 | - .go-preview-entity { | ||
98 | - overflow: hidden; | ||
99 | - } | ||
100 | -} | ||
101 | -</style> |
src/views/preview/suspenseIndex.vue
0 → 100644
1 | +<template> | ||
2 | + <div :class="`go-preview ${chartEditStore.editCanvasConfig.previewScaleType}`"> | ||
3 | + <template v-if="showEntity"> | ||
4 | + <!-- 实体区域 --> | ||
5 | + <div ref="entityRef" class="go-preview-entity"> | ||
6 | + <!-- 缩放层 --> | ||
7 | + <div ref="previewRef" class="go-preview-scale"> | ||
8 | + <!-- 展示层 --> | ||
9 | + <div :style="previewRefStyle" v-if="show"> | ||
10 | + <!-- 渲染层 --> | ||
11 | + <preview-render-list></preview-render-list> | ||
12 | + </div> | ||
13 | + </div> | ||
14 | + </div> | ||
15 | + </template> | ||
16 | + <template v-else> | ||
17 | + <!-- 缩放层 --> | ||
18 | + <div ref="previewRef" class="go-preview-scale"> | ||
19 | + <!-- 展示层 --> | ||
20 | + <div :style="previewRefStyle" v-if="show"> | ||
21 | + <!-- 渲染层 --> | ||
22 | + <preview-render-list></preview-render-list> | ||
23 | + </div> | ||
24 | + </div> | ||
25 | + </template> | ||
26 | + </div> | ||
27 | +</template> | ||
28 | + | ||
29 | +<script setup lang="ts"> | ||
30 | +import { computed } from 'vue' | ||
31 | +import { PreviewRenderList } from './components/PreviewRenderList' | ||
32 | +import { getFilterStyle, setTitle } from '@/utils' | ||
33 | +import { getEditCanvasConfigStyle, getSessionStorageInfo } from './utils' | ||
34 | +import { useComInstall } from './hooks/useComInstall.hook' | ||
35 | +import { useScale } from './hooks/useScale.hook' | ||
36 | +import { useStore } from './hooks/useStore.hook' | ||
37 | +import { PreviewScaleEnum } from '@/enums/styleEnum' | ||
38 | +import type { ChartEditStorageType } from './index.d' | ||
39 | +import { useChartEditStore } from '@/store/modules/chartEditStore/chartEditStore' | ||
40 | + | ||
41 | +// const localStorageInfo: ChartEditStorageType = getSessionStorageInfo() as ChartEditStorageType | ||
42 | + | ||
43 | +await getSessionStorageInfo() | ||
44 | +const chartEditStore = useChartEditStore() as unknown as ChartEditStorageType | ||
45 | + | ||
46 | +setTitle(`预览-${chartEditStore.editCanvasConfig.projectName}`) | ||
47 | + | ||
48 | +const previewRefStyle = computed(() => { | ||
49 | + return { | ||
50 | + ...getEditCanvasConfigStyle(chartEditStore.editCanvasConfig), | ||
51 | + ...getFilterStyle(chartEditStore.editCanvasConfig) | ||
52 | + } | ||
53 | +}) | ||
54 | + | ||
55 | +const showEntity = computed(() => { | ||
56 | + const type = chartEditStore.editCanvasConfig.previewScaleType | ||
57 | + return type === PreviewScaleEnum.SCROLL_Y || type === PreviewScaleEnum.SCROLL_X | ||
58 | +}) | ||
59 | + | ||
60 | +useStore(chartEditStore) | ||
61 | +const { entityRef, previewRef } = useScale(chartEditStore) | ||
62 | +const { show } = useComInstall(chartEditStore) | ||
63 | +</script> | ||
64 | + | ||
65 | +<style lang="scss" scoped> | ||
66 | +@include go('preview') { | ||
67 | + position: relative; | ||
68 | + height: 100vh; | ||
69 | + width: 100vw; | ||
70 | + @include background-image('background-image'); | ||
71 | + &.fit, | ||
72 | + &.full { | ||
73 | + display: flex; | ||
74 | + align-items: center; | ||
75 | + justify-content: center; | ||
76 | + overflow: hidden; | ||
77 | + .go-preview-scale { | ||
78 | + transform-origin: center center; | ||
79 | + } | ||
80 | + } | ||
81 | + &.scrollY { | ||
82 | + overflow-x: hidden; | ||
83 | + .go-preview-scale { | ||
84 | + transform-origin: left top; | ||
85 | + } | ||
86 | + } | ||
87 | + &.scrollX { | ||
88 | + overflow-y: hidden; | ||
89 | + .go-preview-scale { | ||
90 | + transform-origin: left top; | ||
91 | + } | ||
92 | + } | ||
93 | + .go-preview-entity { | ||
94 | + overflow: hidden; | ||
95 | + } | ||
96 | +} | ||
97 | +</style> |
1 | import { getSessionStorage } from '@/utils' | 1 | import { getSessionStorage } from '@/utils' |
2 | import { StorageEnum } from '@/enums/storageEnum' | 2 | import { StorageEnum } from '@/enums/storageEnum' |
3 | import { ChartEditStorage } from '@/store/modules/chartEditStore/chartEditStore.d' | 3 | import { ChartEditStorage } from '@/store/modules/chartEditStore/chartEditStore.d' |
4 | +import { useChartEditStore } from '@/store/modules/chartEditStore/chartEditStore' | ||
5 | + | ||
6 | +const chartEditStore = useChartEditStore() | ||
4 | 7 | ||
5 | export interface ChartEditStorageType extends ChartEditStorage { | 8 | export interface ChartEditStorageType extends ChartEditStorage { |
6 | id: string | 9 | id: string |
@@ -16,11 +19,15 @@ export const getSessionStorageInfo = () => { | @@ -16,11 +19,15 @@ export const getSessionStorageInfo = () => { | ||
16 | StorageEnum.GO_CHART_STORAGE_LIST | 19 | StorageEnum.GO_CHART_STORAGE_LIST |
17 | ) | 20 | ) |
18 | 21 | ||
19 | - if(!storageList) return | ||
20 | - | ||
21 | - for (let i = 0; i < storageList.length; i++) { | ||
22 | - if (id.toString() === storageList[i]['id']) { | ||
23 | - return storageList[i] | 22 | + if (storageList) { |
23 | + for (let i = 0; i < storageList.length; i++) { | ||
24 | + if (id.toString() === storageList[i]['id']) { | ||
25 | + const { editCanvasConfig, requestGlobalConfig, componentList } = storageList[i] | ||
26 | + chartEditStore.editCanvasConfig = editCanvasConfig | ||
27 | + chartEditStore.requestGlobalConfig = requestGlobalConfig | ||
28 | + chartEditStore.componentList = componentList | ||
29 | + return storageList[i] | ||
30 | + } | ||
24 | } | 31 | } |
25 | } | 32 | } |
26 | } | 33 | } |