Commit b7c7f4220b4cd330ff7ea529c4d79ab679f6ff3e
Merge branch 'ww' into 'main'
perf: 重构新增功能代码 See merge request yunteng/thingskit-view!7
Showing
34 changed files
with
763 additions
and
402 deletions
src/components/external/Icon/index.ts
0 → 100644
src/components/external/Icon/src/SvgIcon.vue
0 → 100644
1 | +<template> | ||
2 | + <svg :class="[prefixCls, $attrs.class, spin && 'svg-icon-spin']" :style="getStyle" aria-hidden="true"> | ||
3 | + <use :xlink:href="symbolId" /> | ||
4 | + </svg> | ||
5 | +</template> | ||
6 | +<script lang="ts" setup>import { useDesign } from '@/hooks/external/useDesign'; | ||
7 | +import { computed, CSSProperties } from 'vue'; | ||
8 | + | ||
9 | + | ||
10 | +const props = withDefaults( | ||
11 | + defineProps<{ | ||
12 | + prefix?: string | ||
13 | + name: string | ||
14 | + size?: number | string, | ||
15 | + spin?: boolean | ||
16 | + }>(), | ||
17 | + { | ||
18 | + prefix: 'icon', | ||
19 | + size: 16, | ||
20 | + spin: false | ||
21 | + } | ||
22 | +) | ||
23 | + | ||
24 | +const { prefixCls } = useDesign('svg-icon'); | ||
25 | +const symbolId = computed(() => `#${props.prefix}-${props.name}`); | ||
26 | + | ||
27 | +const getStyle = computed((): CSSProperties => { | ||
28 | + const { size } = props; | ||
29 | + let s = `${size}`; | ||
30 | + s = `${s.replace('px', '')}px`; | ||
31 | + return { | ||
32 | + width: s, | ||
33 | + height: s, | ||
34 | + }; | ||
35 | +}); | ||
36 | +</script> | ||
37 | +<style lang="less" scoped> | ||
38 | +@prefix-cls: ~'@{tkNamespace}-svg-icon'; | ||
39 | + | ||
40 | +.@{prefix-cls} { | ||
41 | + display: inline-block; | ||
42 | + overflow: hidden; | ||
43 | + vertical-align: -0.15em; | ||
44 | + fill: currentColor; | ||
45 | +} | ||
46 | + | ||
47 | +.svg-icon-spin { | ||
48 | + animation: loadingCircle 1s infinite linear; | ||
49 | +} | ||
50 | +</style> |
@@ -82,16 +82,3 @@ export enum MacKeyboard { | @@ -82,16 +82,3 @@ export enum MacKeyboard { | ||
82 | ALT_SOURCE_KEY = '⌥', | 82 | ALT_SOURCE_KEY = '⌥', |
83 | SPACE = 'Space' | 83 | SPACE = 'Space' |
84 | } | 84 | } |
85 | - | ||
86 | - | ||
87 | -// 同步状态枚举 | ||
88 | -export enum SyncEnum { | ||
89 | - // 等待 | ||
90 | - PENDING, | ||
91 | - // 开始 | ||
92 | - START, | ||
93 | - // 成功 | ||
94 | - SUCCESS, | ||
95 | - // 失败 | ||
96 | - FAILURE | ||
97 | -} |
src/enums/external/editPageEnum.ts
0 → 100644
src/hooks/external/useDesign.ts
0 → 100644
1 | import { ChartFrameEnum } from '@/packages/index.d' | 1 | import { ChartFrameEnum } from '@/packages/index.d' |
2 | import { ConfigType } from '@/packages/index.d' | 2 | import { ConfigType } from '@/packages/index.d' |
3 | -import { PackagesCategoryEnum } from '@/packages/components/external/types' | 3 | +import { EPackagesCategoryEnum } from '@/packages/components/external/types' |
4 | import { ChatCategoryEnum, ChatCategoryEnumName } from '../../index.d' | 4 | import { ChatCategoryEnum, ChatCategoryEnumName } from '../../index.d' |
5 | 5 | ||
6 | export const LeftCenterRightHeadConfig: ConfigType = { | 6 | export const LeftCenterRightHeadConfig: ConfigType = { |
@@ -10,7 +10,7 @@ export const LeftCenterRightHeadConfig: ConfigType = { | @@ -10,7 +10,7 @@ export const LeftCenterRightHeadConfig: ConfigType = { | ||
10 | title: '通用头部', | 10 | title: '通用头部', |
11 | category: ChatCategoryEnum.HEADCOMBINATION, | 11 | category: ChatCategoryEnum.HEADCOMBINATION, |
12 | categoryName: ChatCategoryEnumName.HEADCOMBINATION, | 12 | categoryName: ChatCategoryEnumName.HEADCOMBINATION, |
13 | - package: PackagesCategoryEnum.COMPOSES, | 13 | + package: EPackagesCategoryEnum.COMPOSES, |
14 | chartFrame: ChartFrameEnum.COMMON, | 14 | chartFrame: ChartFrameEnum.COMMON, |
15 | image: 'left_center_rightHead.png', | 15 | image: 'left_center_rightHead.png', |
16 | } | 16 | } |
1 | import { ChartFrameEnum, ConfigType } from '@/packages/index.d' | 1 | import { ChartFrameEnum, ConfigType } from '@/packages/index.d' |
2 | -import { PackagesCategoryEnum } from '@/packages/components/external/types' | 2 | +import { EPackagesCategoryEnum } from '@/packages/components/external/types' |
3 | import { ChatCategoryEnum, ChatCategoryEnumName } from '../../index.d' | 3 | import { ChatCategoryEnum, ChatCategoryEnumName } from '../../index.d' |
4 | 4 | ||
5 | export const LeftCenterRightHeadCommonConfig: ConfigType = { | 5 | export const LeftCenterRightHeadCommonConfig: ConfigType = { |
@@ -9,7 +9,7 @@ export const LeftCenterRightHeadCommonConfig: ConfigType = { | @@ -9,7 +9,7 @@ export const LeftCenterRightHeadCommonConfig: ConfigType = { | ||
9 | title: '头部', | 9 | title: '头部', |
10 | category: ChatCategoryEnum.HEADCOMBINATION, | 10 | category: ChatCategoryEnum.HEADCOMBINATION, |
11 | categoryName: ChatCategoryEnumName.HEADCOMBINATION, | 11 | categoryName: ChatCategoryEnumName.HEADCOMBINATION, |
12 | - package: PackagesCategoryEnum.COMPOSES, | 12 | + package: EPackagesCategoryEnum.COMPOSES, |
13 | chartFrame: ChartFrameEnum.COMMON, | 13 | chartFrame: ChartFrameEnum.COMMON, |
14 | image: 'left_center_rightHead.png', | 14 | image: 'left_center_rightHead.png', |
15 | } | 15 | } |
1 | +<template> | ||
2 | + <section :class="prefixCls"> | ||
3 | + <slot /> | ||
4 | + <div class="point top-left"></div> | ||
5 | + <div class="point top-right"></div> | ||
6 | + <div class="point bottom-left"></div> | ||
7 | + <div class="point bottom-right"></div> | ||
8 | + </section> | ||
9 | +</template> | ||
10 | + | ||
11 | +<script lang="ts" setup> | ||
12 | +import { useDesign } from '@/hooks/external/useDesign'; | ||
13 | + | ||
14 | +const props = defineProps<{ | ||
15 | + border: string | ||
16 | +}>() | ||
17 | + | ||
18 | +const { prefixCls } = useDesign('svg-border') | ||
19 | +</script> | ||
20 | + | ||
21 | +<style lang="scss" scoped> | ||
22 | +@include thingsKit('svg-border') { | ||
23 | + $pointSize: 5px; | ||
24 | + position: relative; | ||
25 | + display: flex; | ||
26 | + justify-content: center; | ||
27 | + align-items: center; | ||
28 | + width: 100%; | ||
29 | + height: 100%; | ||
30 | + border: 1px solid black; | ||
31 | + margin: 5px; | ||
32 | + | ||
33 | + .round { | ||
34 | + border-radius: 50%; | ||
35 | + } | ||
36 | + | ||
37 | + .point { | ||
38 | + position: absolute; | ||
39 | + width: $pointSize; | ||
40 | + height: $pointSize; | ||
41 | + border-radius: 50%; | ||
42 | + background-color: black; | ||
43 | + } | ||
44 | + | ||
45 | + .top-left { | ||
46 | + top: 0; | ||
47 | + left: 0; | ||
48 | + transform: translate(-2.5px, -2.5px); | ||
49 | + } | ||
50 | + | ||
51 | + .top-right { | ||
52 | + top: 0; | ||
53 | + right: 0; | ||
54 | + transform: translate(2.5px, -2.5px); | ||
55 | + } | ||
56 | + | ||
57 | + .bottom-left { | ||
58 | + bottom: 0; | ||
59 | + left: 0; | ||
60 | + transform: translate(-2.5px, 2.5px); | ||
61 | + } | ||
62 | + | ||
63 | + .bottom-right { | ||
64 | + bottom: 0; | ||
65 | + right: 0; | ||
66 | + transform: translate(-2.5px, -2.5px); | ||
67 | + } | ||
68 | + | ||
69 | +} | ||
70 | +</style> |
1 | +import { PublicConfigClass } from '@/packages/public' | ||
2 | +import { CreateComponentType } from '@/packages/index.d' | ||
3 | +import { ClockConfig } from './index' | ||
4 | +import cloneDeep from 'lodash/cloneDeep' | ||
5 | + | ||
6 | +export const option = { | ||
7 | + border: 6, | ||
8 | + color: '#ffffff', | ||
9 | + bgColor: '#84a5e9', | ||
10 | + borderColor: '#ffffff' | ||
11 | +} | ||
12 | + | ||
13 | +export default class Config extends PublicConfigClass implements CreateComponentType { | ||
14 | + public key = ClockConfig.key | ||
15 | + public chartConfig = cloneDeep(ClockConfig) | ||
16 | + public option = cloneDeep(option) | ||
17 | +} |
1 | +<template> | ||
2 | + <CollapseItem name="时钟" expanded> | ||
3 | + <SettingItemBox name="表盘"> | ||
4 | + <SettingItem name="背景色"> | ||
5 | + <n-color-picker size="small" :modes="['hex']" v-model:value="optionData.bgColor"></n-color-picker> | ||
6 | + </SettingItem> | ||
7 | + <SettingItem name="边框色"> | ||
8 | + <n-color-picker size="small" :modes="['hex']" v-model:value="optionData.borderColor"></n-color-picker> | ||
9 | + </SettingItem> | ||
10 | + <SettingItem name="边框大小"> | ||
11 | + <n-input-number v-model:value="optionData.border" size="small" :step="0.5" :min="0"></n-input-number> | ||
12 | + </SettingItem> | ||
13 | + </SettingItemBox> | ||
14 | + <SettingItemBox name="指针"> | ||
15 | + <SettingItem name="颜色"> | ||
16 | + <n-color-picker size="small" :modes="['hex']" v-model:value="optionData.color"></n-color-picker> | ||
17 | + </SettingItem> | ||
18 | + </SettingItemBox> | ||
19 | + </CollapseItem> | ||
20 | +</template> | ||
21 | + | ||
22 | +<script setup lang="ts"> | ||
23 | +import { PropType } from 'vue' | ||
24 | +import { CollapseItem, SettingItemBox, SettingItem } from '@/components/Pages/ChartItemSetting' | ||
25 | +import { option } from './config' | ||
26 | + | ||
27 | +const props = defineProps({ | ||
28 | + optionData: { | ||
29 | + type: Object as PropType<typeof option>, | ||
30 | + required: true | ||
31 | + } | ||
32 | +}) | ||
33 | +</script> |
1 | +import { ConfigType, PackagesCategoryEnum, ChartFrameEnum } from '@/packages/index.d' | ||
2 | +import { ChatCategoryEnum, ChatCategoryEnumName } from '@/packages/components/Decorates/index.d' | ||
3 | +import { useWidgetKey } from '@/packages/external/useWidgetKey' | ||
4 | + | ||
5 | +const { key, conKey, chartKey } = useWidgetKey('Icon', true) | ||
6 | + | ||
7 | +export const ClockConfig: ConfigType = { | ||
8 | + key, | ||
9 | + chartKey, | ||
10 | + conKey, | ||
11 | + title: '时钟2', | ||
12 | + category: ChatCategoryEnum.MORE, | ||
13 | + categoryName: ChatCategoryEnumName.MORE, | ||
14 | + package: PackagesCategoryEnum.DECORATES, | ||
15 | + chartFrame: ChartFrameEnum.STATIC, | ||
16 | + image: 'clock.png' | ||
17 | +} |
1 | +<template> | ||
2 | + <svg xmlns="http://www.w3.org/2000/svg" :viewBox="`0 0 200 200`"> | ||
3 | + <filter id="innerShadow" x="-20%" y="-20%" width="140%" height="140%"> | ||
4 | + <feGaussianBlur in="SourceGraphic" stdDeviation="3" result="blur" /> | ||
5 | + <feOffset in="blur" dx="2.5" dy="2.5" /> | ||
6 | + </filter> | ||
7 | + | ||
8 | + <!-- 表盘 --> | ||
9 | + <g> | ||
10 | + <circle id="shadow" style="fill: rgba(0, 0, 0, 0.1)" cx="100" cy="100" r="87" filter="url(#innerShadow)"></circle> | ||
11 | + <circle id="circle" class="clock-border" cx="100" cy="100" r="80"></circle> | ||
12 | + </g> | ||
13 | + | ||
14 | + <!-- 指针 --> | ||
15 | + <g> | ||
16 | + <line x1="100" y1="100" x2="100" y2="55" style="stroke-width: 3px" class="clock-line"> | ||
17 | + <animateTransform | ||
18 | + attributeName="transform" | ||
19 | + attributeType="XML" | ||
20 | + type="rotate" | ||
21 | + dur="43200s" | ||
22 | + repeatCount="indefinite" | ||
23 | + :from="`${hoursAngle} 100 100`" | ||
24 | + :to="`${hoursAngle + 360} 100 100`" | ||
25 | + /> | ||
26 | + </line> | ||
27 | + <line x1="100" y1="100" x2="100" y2="40" style="stroke-width: 4px" class="clock-line"> | ||
28 | + <animateTransform | ||
29 | + attributeName="transform" | ||
30 | + attributeType="XML" | ||
31 | + type="rotate" | ||
32 | + dur="3600s" | ||
33 | + repeatCount="indefinite" | ||
34 | + :from="`${minuteAngle} 100 100`" | ||
35 | + :to="`${minuteAngle + 360} 100 100`" | ||
36 | + /> | ||
37 | + </line> | ||
38 | + <line x1="100" y1="100" x2="100" y2="30" style="stroke-width: 2px" class="clock-line"> | ||
39 | + <animateTransform | ||
40 | + attributeName="transform" | ||
41 | + attributeType="XML" | ||
42 | + type="rotate" | ||
43 | + dur="60s" | ||
44 | + repeatCount="indefinite" | ||
45 | + :from="`${secAngle} 100 100`" | ||
46 | + :to="`${secAngle + 360} 100 100`" | ||
47 | + /> | ||
48 | + </line> | ||
49 | + </g> | ||
50 | + | ||
51 | + <!-- 中心圆点 --> | ||
52 | + <circle id="center" style="fill: #128a86; stroke: #c1efed; stroke-width: 2px" cx="100" cy="100" r="3"></circle> | ||
53 | + | ||
54 | + <!-- 刻度线 --> | ||
55 | + <line | ||
56 | + x1="100" | ||
57 | + y1="30" | ||
58 | + x2="100" | ||
59 | + y2="40" | ||
60 | + class="clock-line" | ||
61 | + :transform="`rotate(${((num + 1) * 360) / 12} 100 100)`" | ||
62 | + v-for="num in 12" | ||
63 | + :key="`line_${num + 1}`" | ||
64 | + ></line> | ||
65 | + </svg> | ||
66 | +</template> | ||
67 | + | ||
68 | +<script setup lang="ts"> | ||
69 | +import { PropType, toRefs } from 'vue' | ||
70 | +import { CreateComponentType } from '@/packages/index.d' | ||
71 | +import { option } from './config' | ||
72 | +import { useProjectInfoStore } from '@/store/external/module/projectInfo'; | ||
73 | + | ||
74 | +const projectInfoStore = useProjectInfoStore() | ||
75 | + | ||
76 | + | ||
77 | +const props = defineProps({ | ||
78 | + chartConfig: { | ||
79 | + type: Object as PropType<CreateComponentType & typeof option>, | ||
80 | + required: true | ||
81 | + } | ||
82 | +}) | ||
83 | + | ||
84 | +let { border, color, bgColor, borderColor } = toRefs(props.chartConfig.option) | ||
85 | + | ||
86 | +const date = new Date() | ||
87 | +const hoursAngle = (360 * date.getHours()) / 12 + date.getMinutes() / 2 | ||
88 | +const minuteAngle = (360 * date.getMinutes()) / 60 | ||
89 | +const secAngle = (360 * date.getSeconds()) / 60 | ||
90 | +</script> | ||
91 | + | ||
92 | +<style lang="scss" scoped> | ||
93 | +svg { | ||
94 | + display: block; | ||
95 | + width: 100%; | ||
96 | + height: 100%; | ||
97 | +} | ||
98 | +.clock-border { | ||
99 | + stroke: v-bind('borderColor'); | ||
100 | + stroke-width: v-bind('border+"px"'); | ||
101 | + fill: v-bind('bgColor'); | ||
102 | +} | ||
103 | +.clock-line { | ||
104 | + stroke: v-bind('color') !important; | ||
105 | +} | ||
106 | +</style> |
1 | +import { PackagesType as NativePackagesType } from '@/packages/index.d' | ||
1 | import { ConfigType } from "@/packages/index.d" | 2 | import { ConfigType } from "@/packages/index.d" |
2 | 3 | ||
3 | // 包分类枚举 | 4 | // 包分类枚举 |
4 | -export enum PackagesCategoryEnum { | 5 | +export enum EPackagesCategoryEnum { |
5 | COMPOSES = 'external/Composes', | 6 | COMPOSES = 'external/Composes', |
6 | } | 7 | } |
7 | 8 | ||
8 | // 图表包类型 | 9 | // 图表包类型 |
9 | -export type PackagesType = { | ||
10 | - [PackagesCategoryEnum.COMPOSES]: ConfigType[] | ||
11 | -} | 10 | +export type EPackagesType = { |
11 | + [EPackagesCategoryEnum.COMPOSES]: ConfigType[] | ||
12 | +} & NativePackagesType | ||
12 | 13 | ||
13 | // 包分类名称 | 14 | // 包分类名称 |
14 | -export enum PackagesCategoryName { | 15 | +export enum EPackagesCategoryName { |
15 | COMPOSES = '组合', | 16 | COMPOSES = '组合', |
16 | } | 17 | } |
18 | + |
1 | -import { PackagesCategoryEnum, PackagesType } from '@/packages/components/external/types' | 1 | +import { EPackagesCategoryEnum, EPackagesType } from '@/packages/components/external/types' |
2 | import { ComposesList } from '@/packages/components/external/Composes' | 2 | import { ComposesList } from '@/packages/components/external/Composes' |
3 | +import { ConfigType, PackagesCategoryEnum } from '@/packages/index.d' | ||
4 | +import { ClockConfig } from '@/packages/components/external/Decorates/Mores/Icon' | ||
3 | 5 | ||
4 | -export function useInjectLib(packagesList: any) { | 6 | +export function useInjectLib(packagesList: EPackagesType) { |
7 | + packagesList[EPackagesCategoryEnum.COMPOSES] = ComposesList | ||
5 | 8 | ||
6 | - // console.log(ComposesList) | ||
7 | - packagesList[PackagesCategoryEnum.COMPOSES] = ComposesList | 9 | + addWidgetToCategoryByCategoryName(packagesList, PackagesCategoryEnum.DECORATES, ClockConfig) |
10 | +} | ||
11 | + | ||
12 | +/** | ||
13 | + * | ||
14 | + * @param packagesList | ||
15 | + * @param categoryName | ||
16 | + * @param config | ||
17 | + */ | ||
18 | +function addWidgetToCategoryByCategoryName(packagesList: EPackagesType, categoryName: PackagesCategoryEnum, config: ConfigType) { | ||
19 | + packagesList[categoryName].push(config) | ||
8 | } | 20 | } |
src/packages/external/override.ts
0 → 100644
1 | + | ||
2 | +import { ConfigType } from "../index.d" | ||
3 | +import { matchExternalPrefixReg } from "./useWidgetKey" | ||
4 | + | ||
5 | + | ||
6 | +export const createComponent = async (configType: ConfigType) => { | ||
7 | + const { key, chartKey, category, package: packageName } = configType | ||
8 | + const hasExternalPrefix = matchExternalPrefixReg.test(chartKey) | ||
9 | + const chart = await import(`../components${hasExternalPrefix ? '/external' : ''}/${packageName}/${category}/${key}/config.ts`) | ||
10 | + return new chart.default() | ||
11 | +} | ||
12 | + |
src/packages/external/useWidgetKey.ts
0 → 100644
1 | +export const EXTERNAL_WIDGET_PREFIX = 'External' | ||
2 | + | ||
3 | +export const matchExternalPrefixReg = new RegExp(`^${EXTERNAL_WIDGET_PREFIX}`) | ||
4 | + | ||
5 | +export const CHART_COMPONENT_PREFIX = 'VC' | ||
6 | + | ||
7 | +export const CONFIG_COMPONENT_PREFIX = 'VCC' | ||
8 | + | ||
9 | +/** | ||
10 | + * | ||
11 | + * @param scope directory name 目录名 | ||
12 | + * @returns | ||
13 | + */ | ||
14 | +export const useWidgetKey = (scope: string, extendPrimitiveCategory = false) => { | ||
15 | + const prefix = extendPrimitiveCategory ? EXTERNAL_WIDGET_PREFIX : '' | ||
16 | + return { | ||
17 | + key: scope, | ||
18 | + chartKey: `${prefix}${CHART_COMPONENT_PREFIX}${scope}`, | ||
19 | + conKey: `${prefix}${CONFIG_COMPONENT_PREFIX}${scope}` | ||
20 | + } | ||
21 | +} |
src/store/external/module/projectInfo.d.ts
0 → 100644
1 | +import { EditCanvasTypeEnum } from '@/store/modules/chartEditStore/chartEditStore.d' | ||
2 | +import { SyncEnum } from '@/enums/external/editPageEnum' | ||
3 | + | ||
4 | +export enum ProjectInfoEnum { | ||
5 | + INFO = 'info', | ||
6 | + // ID | ||
7 | + PROJECT_ID = 'projectId', | ||
8 | + // 名称 | ||
9 | + PROJECT_NAME = 'projectName', | ||
10 | + // 描述 | ||
11 | + REMARKS = 'remarks', | ||
12 | + // 缩略图 | ||
13 | + THUMBNAIL = 'thumbnail', | ||
14 | + // 是否公开发布 | ||
15 | + RELEASE = 'release', | ||
16 | + // 组织id | ||
17 | + ORGANIZATION_ID = 'organizationId', | ||
18 | + //保存给服务端的state | ||
19 | + STATE_DATA = 'state', | ||
20 | + | ||
21 | + SAVE_STATUS = 'saveStatus' | ||
22 | +} | ||
23 | + | ||
24 | +export enum EEditCanvasTypeEnum { | ||
25 | + SAVE_STATUS = 'saveStatus', | ||
26 | +} | ||
27 | + | ||
28 | + | ||
29 | +// Store 类型 | ||
30 | +export interface ProjectInfoStoreType { | ||
31 | + [ProjectInfoEnum.INFO]: { | ||
32 | + [ProjectInfoEnum.PROJECT_ID]: string | ||
33 | + [ProjectInfoEnum.PROJECT_NAME]: string | ||
34 | + [ProjectInfoEnum.REMARKS]: string | ||
35 | + [ProjectInfoEnum.THUMBNAIL]: string | ||
36 | + [ProjectInfoEnum.RELEASE]: boolean | ||
37 | + [ProjectInfoEnum.RELEASE]: boolean | ||
38 | + [ProjectInfoEnum.ORGANIZATION_ID]: string | ||
39 | + [ProjectInfoEnum.STATE_DATA]: number | ||
40 | + } | ||
41 | + | ||
42 | + [ProjectInfoEnum.SAVE_STATUS]: SyncEnum | ||
43 | +} |
src/store/external/module/projectInfo.ts
0 → 100644
1 | +import { useChartEditStore } from "@/store/modules/chartEditStore/chartEditStore"; | ||
2 | +import { ProjectInfoEnum, ProjectInfoStoreType } from './projectInfo.d' | ||
3 | +import { defineStore } from "pinia"; | ||
4 | +import { SyncEnum } from "@/enums/external/editPageEnum"; | ||
5 | + | ||
6 | +export const useProjectInfoStore = defineStore({ | ||
7 | + id: 'useProjectInfoStore', | ||
8 | + state: (): ProjectInfoStoreType => ({ | ||
9 | + info: { | ||
10 | + projectId: '', | ||
11 | + projectName: '', | ||
12 | + remarks: '', | ||
13 | + thumbnail: '', | ||
14 | + release: false, | ||
15 | + organizationId: '', | ||
16 | + state: 0, | ||
17 | + }, | ||
18 | + | ||
19 | + saveStatus: SyncEnum.FAILURE | ||
20 | + }), | ||
21 | + getters: { | ||
22 | + getProjectInfo(): ProjectInfoStoreType[ProjectInfoEnum.INFO] { | ||
23 | + return Reflect.get(this, ProjectInfoEnum.INFO) | ||
24 | + }, | ||
25 | + getSaveStatus(): ProjectInfoStoreType[ProjectInfoEnum.SAVE_STATUS] { | ||
26 | + return Reflect.get(this, ProjectInfoEnum.SAVE_STATUS) | ||
27 | + } | ||
28 | + }, | ||
29 | + actions: { | ||
30 | + setProjectInfo<T extends ProjectInfoStoreType[ProjectInfoEnum.INFO]>(value: T) { | ||
31 | + this[ProjectInfoEnum.INFO] = value | ||
32 | + }, | ||
33 | + setProjectInfoByKey<T extends keyof ProjectInfoStoreType[ProjectInfoEnum.INFO], K extends ProjectInfoStoreType[ProjectInfoEnum.INFO][T]>(key: T, value: K) { | ||
34 | + this[ProjectInfoEnum.INFO][key] = value | ||
35 | + }, | ||
36 | + setSaveStatus(status: SyncEnum) { | ||
37 | + this[ProjectInfoEnum.SAVE_STATUS] = status | ||
38 | + } | ||
39 | + } | ||
40 | +}) |
1 | import { CreateComponentType, CreateComponentGroupType, FilterEnum } from '@/packages/index.d' | 1 | import { CreateComponentType, CreateComponentGroupType, FilterEnum } from '@/packages/index.d' |
2 | import { HistoryActionTypeEnum } from '@/store/modules/chartHistoryStore/chartHistoryStore.d' | 2 | import { HistoryActionTypeEnum } from '@/store/modules/chartHistoryStore/chartHistoryStore.d' |
3 | -import { SyncEnum } from '@/enums/editPageEnum' | ||
4 | import { | 3 | import { |
5 | RequestHttpEnum, | 4 | RequestHttpEnum, |
6 | RequestContentTypeEnum, | 5 | RequestContentTypeEnum, |
@@ -13,37 +12,6 @@ import { | @@ -13,37 +12,6 @@ import { | ||
13 | import { PreviewScaleEnum } from '@/enums/styleEnum' | 12 | import { PreviewScaleEnum } from '@/enums/styleEnum' |
14 | import type { ChartColorsNameType, GlobalThemeJsonType } from '@/settings/chartThemes/index' | 13 | import type { ChartColorsNameType, GlobalThemeJsonType } from '@/settings/chartThemes/index' |
15 | 14 | ||
16 | -// THINGS_KIT | ||
17 | -// 项目数据枚举 | ||
18 | -export enum ProjectInfoEnum { | ||
19 | - // ID | ||
20 | - PROJECT_ID = 'projectId', | ||
21 | - // 名称 | ||
22 | - PROJECT_NAME = 'projectName', | ||
23 | - // 描述 | ||
24 | - REMARKS = 'remarks', | ||
25 | - // 缩略图 | ||
26 | - THUMBNAIL = 'thumbnail', | ||
27 | - // 是否公开发布 | ||
28 | - RELEASE = 'release', | ||
29 | - // organizationId | ||
30 | - ORGANIZATIONID = 'organizationId', | ||
31 | - //保存给服务端的state | ||
32 | - STATE_DATA = 'state', | ||
33 | -} | ||
34 | -// THINGS_KIT | ||
35 | -// 项目数据 | ||
36 | -export type ProjectInfoType = { | ||
37 | - [ProjectInfoEnum.PROJECT_ID]: string | ||
38 | - [ProjectInfoEnum.PROJECT_NAME]: string | ||
39 | - [ProjectInfoEnum.REMARKS]: string | ||
40 | - [ProjectInfoEnum.THUMBNAIL]: string | ||
41 | - [ProjectInfoEnum.RELEASE]: boolean | ||
42 | - [ProjectInfoEnum.RELEASE]: boolean | ||
43 | - [ProjectInfoEnum.ORGANIZATIONID]: string | ||
44 | - [ProjectInfoEnum.STATE_DATA]: number | ||
45 | -} | ||
46 | - | ||
47 | // 编辑画布属性 | 15 | // 编辑画布属性 |
48 | export enum EditCanvasTypeEnum { | 16 | export enum EditCanvasTypeEnum { |
49 | EDIT_LAYOUT_DOM = 'editLayoutDom', | 17 | EDIT_LAYOUT_DOM = 'editLayoutDom', |
@@ -52,8 +20,6 @@ export enum EditCanvasTypeEnum { | @@ -52,8 +20,6 @@ export enum EditCanvasTypeEnum { | ||
52 | SCALE = 'scale', | 20 | SCALE = 'scale', |
53 | USER_SCALE = 'userScale', | 21 | USER_SCALE = 'userScale', |
54 | LOCK_SCALE = 'lockScale', | 22 | LOCK_SCALE = 'lockScale', |
55 | - SAVE_STATUS = 'saveStatus', | ||
56 | - | ||
57 | IS_CREATE = 'isCreate', | 23 | IS_CREATE = 'isCreate', |
58 | IS_DRAG = 'isDrag', | 24 | IS_DRAG = 'isDrag', |
59 | IS_SELECT = 'isSelect' | 25 | IS_SELECT = 'isSelect' |
@@ -74,8 +40,6 @@ export type EditCanvasType = { | @@ -74,8 +40,6 @@ export type EditCanvasType = { | ||
74 | [EditCanvasTypeEnum.LOCK_SCALE]: boolean | 40 | [EditCanvasTypeEnum.LOCK_SCALE]: boolean |
75 | // 初始化创建 | 41 | // 初始化创建 |
76 | [EditCanvasTypeEnum.IS_CREATE]: boolean | 42 | [EditCanvasTypeEnum.IS_CREATE]: boolean |
77 | - // 保存状态 | ||
78 | - [EditCanvasTypeEnum.SAVE_STATUS]: SyncEnum | ||
79 | // 拖拽中 | 43 | // 拖拽中 |
80 | [EditCanvasTypeEnum.IS_DRAG]: boolean | 44 | [EditCanvasTypeEnum.IS_DRAG]: boolean |
81 | // 框选中 | 45 | // 框选中 |
@@ -169,8 +133,6 @@ export type RecordChartType = { | @@ -169,8 +133,6 @@ export type RecordChartType = { | ||
169 | 133 | ||
170 | // Store 枚举 | 134 | // Store 枚举 |
171 | export enum ChartEditStoreEnum { | 135 | export enum ChartEditStoreEnum { |
172 | - PROJECT_INFO = 'projectInfo', | ||
173 | - | ||
174 | EDIT_RANGE = 'editRange', | 136 | EDIT_RANGE = 'editRange', |
175 | EDIT_CANVAS = 'editCanvas', | 137 | EDIT_CANVAS = 'editCanvas', |
176 | RIGHT_MENU_SHOW = 'rightMenuShow', | 138 | RIGHT_MENU_SHOW = 'rightMenuShow', |
@@ -193,8 +155,8 @@ type RequestPublicConfigType = { | @@ -193,8 +155,8 @@ type RequestPublicConfigType = { | ||
193 | 155 | ||
194 | // 数据池项类型 | 156 | // 数据池项类型 |
195 | export type RequestDataPondItemType = { | 157 | export type RequestDataPondItemType = { |
196 | - dataPondId: string | ||
197 | - dataPondName: string | 158 | + dataPondId: string, |
159 | + dataPondName: string, | ||
198 | dataPondRequestConfig: RequestConfigType | 160 | dataPondRequestConfig: RequestConfigType |
199 | } | 161 | } |
200 | 162 | ||
@@ -232,7 +194,6 @@ export interface RequestConfigType extends RequestPublicConfigType { | @@ -232,7 +194,6 @@ export interface RequestConfigType extends RequestPublicConfigType { | ||
232 | 194 | ||
233 | // Store 类型 | 195 | // Store 类型 |
234 | export interface ChartEditStoreType { | 196 | export interface ChartEditStoreType { |
235 | - [ChartEditStoreEnum.PROJECT_INFO]: ProjectInfoType | ||
236 | [ChartEditStoreEnum.EDIT_CANVAS]: EditCanvasType | 197 | [ChartEditStoreEnum.EDIT_CANVAS]: EditCanvasType |
237 | [ChartEditStoreEnum.EDIT_CANVAS_CONFIG]: EditCanvasConfigType | 198 | [ChartEditStoreEnum.EDIT_CANVAS_CONFIG]: EditCanvasConfigType |
238 | [ChartEditStoreEnum.RIGHT_MENU_SHOW]: boolean | 199 | [ChartEditStoreEnum.RIGHT_MENU_SHOW]: boolean |
@@ -15,10 +15,9 @@ import { | @@ -15,10 +15,9 @@ import { | ||
15 | HistoryItemType, | 15 | HistoryItemType, |
16 | HistoryTargetTypeEnum | 16 | HistoryTargetTypeEnum |
17 | } from '@/store/modules/chartHistoryStore/chartHistoryStore.d' | 17 | } from '@/store/modules/chartHistoryStore/chartHistoryStore.d' |
18 | -import { MenuEnum,SyncEnum } from '@/enums/editPageEnum' | 18 | +import { MenuEnum } from '@/enums/editPageEnum' |
19 | import { getUUID, loadingStart, loadingFinish, loadingError, isString, isArray } from '@/utils' | 19 | import { getUUID, loadingStart, loadingFinish, loadingError, isString, isArray } from '@/utils' |
20 | import { | 20 | import { |
21 | - ProjectInfoType, | ||
22 | ChartEditStoreEnum, | 21 | ChartEditStoreEnum, |
23 | ChartEditStorage, | 22 | ChartEditStorage, |
24 | ChartEditStoreType, | 23 | ChartEditStoreType, |
@@ -37,19 +36,6 @@ const settingStore = useSettingStore() | @@ -37,19 +36,6 @@ const settingStore = useSettingStore() | ||
37 | export const useChartEditStore = defineStore({ | 36 | export const useChartEditStore = defineStore({ |
38 | id: 'useChartEditStore', | 37 | id: 'useChartEditStore', |
39 | state: (): ChartEditStoreType => ({ | 38 | state: (): ChartEditStoreType => ({ |
40 | - // THINGS_KIT | ||
41 | - // 项目数据 | ||
42 | - projectInfo: { | ||
43 | - projectId: '', | ||
44 | - projectName: '', | ||
45 | - remarks: '', | ||
46 | - thumbnail: '', | ||
47 | - release: false, | ||
48 | - // THINGS_KIT | ||
49 | - //保存缩图需要的组织id | ||
50 | - organizationId: '', | ||
51 | - state: 0 | ||
52 | - }, | ||
53 | // 画布属性 | 39 | // 画布属性 |
54 | editCanvas: { | 40 | editCanvas: { |
55 | // 编辑区域 Dom | 41 | // 编辑区域 Dom |
@@ -68,10 +54,7 @@ export const useChartEditStore = defineStore({ | @@ -68,10 +54,7 @@ export const useChartEditStore = defineStore({ | ||
68 | // 拖拽中 | 54 | // 拖拽中 |
69 | isDrag: false, | 55 | isDrag: false, |
70 | // 框选中 | 56 | // 框选中 |
71 | - isSelect: false, | ||
72 | - // THINGS_KIT | ||
73 | - // 同步中 | ||
74 | - saveStatus: SyncEnum.PENDING | 57 | + isSelect: false |
75 | }, | 58 | }, |
76 | // 右键菜单 | 59 | // 右键菜单 |
77 | rightMenuShow: false, | 60 | rightMenuShow: false, |
@@ -151,10 +134,6 @@ export const useChartEditStore = defineStore({ | @@ -151,10 +134,6 @@ export const useChartEditStore = defineStore({ | ||
151 | componentList: [] | 134 | componentList: [] |
152 | }), | 135 | }), |
153 | getters: { | 136 | getters: { |
154 | - // THINGS_KIT | ||
155 | - getProjectInfo(): ProjectInfoType { | ||
156 | - return this.projectInfo | ||
157 | - }, | ||
158 | getMousePosition(): MousePositionType { | 137 | getMousePosition(): MousePositionType { |
159 | return this.mousePosition | 138 | return this.mousePosition |
160 | }, | 139 | }, |
@@ -189,11 +168,6 @@ export const useChartEditStore = defineStore({ | @@ -189,11 +168,6 @@ export const useChartEditStore = defineStore({ | ||
189 | } | 168 | } |
190 | }, | 169 | }, |
191 | actions: { | 170 | actions: { |
192 | - // THINGS_KIT | ||
193 | - // * 设置 peojectInfo 数据项 | ||
194 | - setProjectInfo<T extends keyof ProjectInfoType, K extends ProjectInfoType[T]>(key: T, value: K) { | ||
195 | - this.projectInfo[key] = value | ||
196 | - }, | ||
197 | // * 设置 editCanvas 数据项 | 171 | // * 设置 editCanvas 数据项 |
198 | setEditCanvas<T extends keyof EditCanvasType, K extends EditCanvasType[T]>(key: T, value: K) { | 172 | setEditCanvas<T extends keyof EditCanvasType, K extends EditCanvasType[T]>(key: T, value: K) { |
199 | this.editCanvas[key] = value | 173 | this.editCanvas[key] = value |
@@ -211,7 +185,7 @@ export const useChartEditStore = defineStore({ | @@ -211,7 +185,7 @@ export const useChartEditStore = defineStore({ | ||
211 | this.targetChart.hoverId = hoverId | 185 | this.targetChart.hoverId = hoverId |
212 | }, | 186 | }, |
213 | // * 设置目标数据 select | 187 | // * 设置目标数据 select |
214 | - setTargetSelectChart(selectId?: string | string[], push: boolean = false) { | 188 | + setTargetSelectChart(selectId?: string | string[], push = false) { |
215 | // 重复选中 | 189 | // 重复选中 |
216 | if (this.targetChart.selectId.find((e: string) => e === selectId)) return | 190 | if (this.targetChart.selectId.find((e: string) => e === selectId)) return |
217 | 191 | ||
@@ -528,15 +502,15 @@ export const useChartEditStore = defineStore({ | @@ -528,15 +502,15 @@ export const useChartEditStore = defineStore({ | ||
528 | e.id = getUUID() | 502 | e.id = getUUID() |
529 | // 分组列表生成新 id | 503 | // 分组列表生成新 id |
530 | if (e.isGroup) { | 504 | if (e.isGroup) { |
531 | - ;(e as CreateComponentGroupType).groupList.forEach((item: CreateComponentType) => { | 505 | + (e as CreateComponentGroupType).groupList.forEach((item: CreateComponentType) => { |
532 | item.id = getUUID() | 506 | item.id = getUUID() |
533 | }) | 507 | }) |
534 | } | 508 | } |
535 | - | 509 | + |
536 | return e | 510 | return e |
537 | } | 511 | } |
538 | const isCut = recordCharts.type === HistoryActionTypeEnum.CUT | 512 | const isCut = recordCharts.type === HistoryActionTypeEnum.CUT |
539 | - const targetList = Array.isArray(recordCharts.charts) ? recordCharts.charts : [recordCharts.charts] | 513 | + const targetList = Array.isArray(recordCharts.charts) ? recordCharts.charts : [ recordCharts.charts ] |
540 | // 多项 | 514 | // 多项 |
541 | targetList.forEach((e: CreateComponentType | CreateComponentGroupType) => { | 515 | targetList.forEach((e: CreateComponentType | CreateComponentGroupType) => { |
542 | this.addComponentList(parseHandle(e), undefined, true) | 516 | this.addComponentList(parseHandle(e), undefined, true) |
@@ -564,7 +538,7 @@ export const useChartEditStore = defineStore({ | @@ -564,7 +538,7 @@ export const useChartEditStore = defineStore({ | ||
564 | this.setTargetSelectChart() | 538 | this.setTargetSelectChart() |
565 | 539 | ||
566 | // 重新选中 | 540 | // 重新选中 |
567 | - let historyData = HistoryItem.historyData as Array<CreateComponentType | CreateComponentGroupType> | 541 | + const historyData = HistoryItem.historyData as Array<CreateComponentType | CreateComponentGroupType> |
568 | if (isArray(historyData)) { | 542 | if (isArray(historyData)) { |
569 | // 选中目标元素,支持多个 | 543 | // 选中目标元素,支持多个 |
570 | historyData.forEach((item: CreateComponentType | CreateComponentGroupType) => { | 544 | historyData.forEach((item: CreateComponentType | CreateComponentGroupType) => { |
@@ -861,7 +835,7 @@ export const useChartEditStore = defineStore({ | @@ -861,7 +835,7 @@ export const useChartEditStore = defineStore({ | ||
861 | } | 835 | } |
862 | }, | 836 | }, |
863 | // * 锁定 | 837 | // * 锁定 |
864 | - setLock(status: boolean = true, isHistory: boolean = true) { | 838 | + setLock(status = true, isHistory = true) { |
865 | try { | 839 | try { |
866 | // 暂不支持多选 | 840 | // 暂不支持多选 |
867 | if (this.getTargetChart.selectId.length > 1) return | 841 | if (this.getTargetChart.selectId.length > 1) return |
@@ -890,11 +864,11 @@ export const useChartEditStore = defineStore({ | @@ -890,11 +864,11 @@ export const useChartEditStore = defineStore({ | ||
890 | } | 864 | } |
891 | }, | 865 | }, |
892 | // * 解除锁定 | 866 | // * 解除锁定 |
893 | - setUnLock(isHistory: boolean = true) { | 867 | + setUnLock(isHistory = true) { |
894 | this.setLock(false, isHistory) | 868 | this.setLock(false, isHistory) |
895 | }, | 869 | }, |
896 | // * 隐藏 | 870 | // * 隐藏 |
897 | - setHide(status: boolean = true, isHistory: boolean = true) { | 871 | + setHide(status = true, isHistory = true) { |
898 | try { | 872 | try { |
899 | // 暂不支持多选 | 873 | // 暂不支持多选 |
900 | if (this.getTargetChart.selectId.length > 1) return | 874 | if (this.getTargetChart.selectId.length > 1) return |
@@ -923,7 +897,7 @@ export const useChartEditStore = defineStore({ | @@ -923,7 +897,7 @@ export const useChartEditStore = defineStore({ | ||
923 | } | 897 | } |
924 | }, | 898 | }, |
925 | // * 显示 | 899 | // * 显示 |
926 | - setShow(isHistory: boolean = true) { | 900 | + setShow(isHistory = true) { |
927 | this.setHide(false, isHistory) | 901 | this.setHide(false, isHistory) |
928 | }, | 902 | }, |
929 | // ---------------- | 903 | // ---------------- |
@@ -3,6 +3,8 @@ | @@ -3,6 +3,8 @@ | ||
3 | @import "./animation.scss"; | 3 | @import "./animation.scss"; |
4 | @import "./mixins/mixins.scss"; | 4 | @import "./mixins/mixins.scss"; |
5 | 5 | ||
6 | +// THINGS_KIT 增加scss mixins | ||
7 | +@import "../external/mixins.scss"; | ||
6 | // 过度 | 8 | // 过度 |
7 | .go-transition { | 9 | .go-transition { |
8 | transition: all 0.4s; | 10 | transition: all 0.4s; |
src/styles/external/mixins.scss
0 → 100644
@@ -4,8 +4,8 @@ import { AsyncLoading, AsyncSkeletonLoading } from '@/components/GoLoading' | @@ -4,8 +4,8 @@ import { AsyncLoading, AsyncSkeletonLoading } from '@/components/GoLoading' | ||
4 | /** | 4 | /** |
5 | * * 动态注册组件 | 5 | * * 动态注册组件 |
6 | */ | 6 | */ |
7 | -export const componentInstall = <T> (key:string, node: T) => { | ||
8 | - if(!window['$vue'].component(key) && node) { | 7 | +export const componentInstall = <T>(key: string, node: T) => { |
8 | + if (!window['$vue'].component(key) && node) { | ||
9 | window['$vue'].component(key, node) | 9 | window['$vue'].component(key, node) |
10 | } | 10 | } |
11 | } | 11 | } |
@@ -21,7 +21,7 @@ export const loadAsyncComponent = (loader: AsyncComponentLoader<any>) => | @@ -21,7 +21,7 @@ export const loadAsyncComponent = (loader: AsyncComponentLoader<any>) => | ||
21 | loadingComponent: AsyncLoading, | 21 | loadingComponent: AsyncLoading, |
22 | delay: 20, | 22 | delay: 20, |
23 | }) | 23 | }) |
24 | - | 24 | + |
25 | export const loadSkeletonAsyncComponent = (loader: AsyncComponentLoader<any>) => | 25 | export const loadSkeletonAsyncComponent = (loader: AsyncComponentLoader<any>) => |
26 | defineAsyncComponent({ | 26 | defineAsyncComponent({ |
27 | loader, | 27 | loader, |
@@ -5,7 +5,7 @@ | @@ -5,7 +5,7 @@ | ||
5 | class="go-content-charts-item-box" | 5 | class="go-content-charts-item-box" |
6 | :class="[chartMode === ChartModeEnum.DOUBLE ? 'double' : 'single']" | 6 | :class="[chartMode === ChartModeEnum.DOUBLE ? 'double' : 'single']" |
7 | > | 7 | > |
8 | - <!-- 每一项组件的渲染 --> | 8 | + <!-- 每一项组件的渲染 --> |
9 | <div | 9 | <div |
10 | class="item-box" | 10 | class="item-box" |
11 | v-for="(item, index) in menuOptions" | 11 | v-for="(item, index) in menuOptions" |
@@ -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> |
@@ -44,10 +44,13 @@ import { ChartModeEnum } from '@/store/modules/chartLayoutStore/chartLayoutStore | @@ -44,10 +44,13 @@ import { ChartModeEnum } from '@/store/modules/chartLayoutStore/chartLayoutStore | ||
44 | import { useChartLayoutStore } from '@/store/modules/chartLayoutStore/chartLayoutStore' | 44 | import { useChartLayoutStore } from '@/store/modules/chartLayoutStore/chartLayoutStore' |
45 | import { componentInstall, loadingStart, loadingFinish, loadingError, JSONStringify } from '@/utils' | 45 | import { componentInstall, loadingStart, loadingFinish, loadingError, JSONStringify } from '@/utils' |
46 | import { DragKeyEnum } from '@/enums/editPageEnum' | 46 | import { DragKeyEnum } from '@/enums/editPageEnum' |
47 | -import { createComponent } from '@/packages' | 47 | +// import { createComponent } from '@/packages' |
48 | import { ConfigType, CreateComponentType } from '@/packages/index.d' | 48 | import { ConfigType, CreateComponentType } from '@/packages/index.d' |
49 | import { fetchConfigComponent, fetchChartComponent } from '@/packages/index' | 49 | import { fetchConfigComponent, fetchChartComponent } from '@/packages/index' |
50 | 50 | ||
51 | +// THINGS_KIT 覆盖原始创建组件逻辑 | ||
52 | +import { createComponent } from '@/packages/external/override' | ||
53 | + | ||
51 | import omit from 'lodash/omit' | 54 | import omit from 'lodash/omit' |
52 | 55 | ||
53 | const chartEditStore = useChartEditStore() | 56 | const chartEditStore = useChartEditStore() |
1 | -import { PackagesCategoryEnum, PackagesCategoryName } from "@/packages/components/external/types" | 1 | +import { EPackagesCategoryEnum, EPackagesCategoryName } from "@/packages/components/external/types" |
2 | import { icon } from '@/plugins' | 2 | import { icon } from '@/plugins' |
3 | import { renderIcon } from "@/utils" | 3 | import { renderIcon } from "@/utils" |
4 | 4 | ||
@@ -6,8 +6,8 @@ const { GraphicalDataFlowIcon } = icon.carbon | @@ -6,8 +6,8 @@ const { GraphicalDataFlowIcon } = icon.carbon | ||
6 | 6 | ||
7 | export function useInjectAside(packagesListObj: Recordable) { | 7 | export function useInjectAside(packagesListObj: Recordable) { |
8 | 8 | ||
9 | - packagesListObj[PackagesCategoryEnum.COMPOSES] = { | 9 | + packagesListObj[EPackagesCategoryEnum.COMPOSES] = { |
10 | icon: renderIcon(GraphicalDataFlowIcon), | 10 | icon: renderIcon(GraphicalDataFlowIcon), |
11 | - label: PackagesCategoryName.COMPOSES | 11 | + label: EPackagesCategoryName.COMPOSES |
12 | } | 12 | } |
13 | } | 13 | } |
@@ -6,10 +6,17 @@ import { PackagesCategoryEnum, PackagesCategoryName, PackagesType } from '@/pack | @@ -6,10 +6,17 @@ import { PackagesCategoryEnum, PackagesCategoryName, PackagesType } from '@/pack | ||
6 | // 图表 | 6 | // 图表 |
7 | import { usePackagesStore } from '@/store/modules/packagesStore/packagesStore' | 7 | import { usePackagesStore } from '@/store/modules/packagesStore/packagesStore' |
8 | import { ChartLayoutStoreEnum } from '@/store/modules/chartLayoutStore/chartLayoutStore.d' | 8 | import { ChartLayoutStoreEnum } from '@/store/modules/chartLayoutStore/chartLayoutStore.d' |
9 | +// THINGS_KIT 追加组件库进入aside 侧边栏 | ||
9 | import { useInjectAside } from './external/useInjectAside' | 10 | import { useInjectAside } from './external/useInjectAside' |
10 | // 图标 | 11 | // 图标 |
11 | const { BarChartIcon } = icon.ionicons5 | 12 | const { BarChartIcon } = icon.ionicons5 |
12 | -const { TableSplitIcon, RoadmapIcon, SpellCheckIcon, GraphicalDataFlowIcon } = icon.carbon | 13 | +const { |
14 | + TableSplitIcon, | ||
15 | + RoadmapIcon, | ||
16 | + SpellCheckIcon, | ||
17 | + GraphicalDataFlowIcon, | ||
18 | +} = icon.carbon | ||
19 | + | ||
13 | 20 | ||
14 | // 图表 | 21 | // 图表 |
15 | export type MenuOptionsType = { | 22 | export type MenuOptionsType = { |
@@ -25,23 +32,22 @@ const menuOptions: MenuOptionsType[] = [] | @@ -25,23 +32,22 @@ const menuOptions: MenuOptionsType[] = [] | ||
25 | const packagesListObj = { | 32 | const packagesListObj = { |
26 | [PackagesCategoryEnum.CHARTS]: { | 33 | [PackagesCategoryEnum.CHARTS]: { |
27 | icon: renderIcon(RoadmapIcon), | 34 | icon: renderIcon(RoadmapIcon), |
28 | - label: PackagesCategoryName.CHARTS | 35 | + label: PackagesCategoryName.CHARTS, |
29 | }, | 36 | }, |
30 | [PackagesCategoryEnum.INFORMATIONS]: { | 37 | [PackagesCategoryEnum.INFORMATIONS]: { |
31 | icon: renderIcon(SpellCheckIcon), | 38 | icon: renderIcon(SpellCheckIcon), |
32 | - label: PackagesCategoryName.INFORMATIONS | 39 | + label: PackagesCategoryName.INFORMATIONS, |
33 | }, | 40 | }, |
34 | [PackagesCategoryEnum.TABLES]: { | 41 | [PackagesCategoryEnum.TABLES]: { |
35 | icon: renderIcon(TableSplitIcon), | 42 | icon: renderIcon(TableSplitIcon), |
36 | - label: PackagesCategoryName.TABLES | 43 | + label: PackagesCategoryName.TABLES, |
37 | }, | 44 | }, |
38 | [PackagesCategoryEnum.DECORATES]: { | 45 | [PackagesCategoryEnum.DECORATES]: { |
39 | icon: renderIcon(GraphicalDataFlowIcon), | 46 | icon: renderIcon(GraphicalDataFlowIcon), |
40 | - label: PackagesCategoryName.DECORATES | ||
41 | - } | 47 | + label: PackagesCategoryName.DECORATES, |
48 | + }, | ||
42 | } | 49 | } |
43 | - | ||
44 | -// THINGS_KIT | 50 | +// THINGS_KIT 追加组件库进入aside 侧边栏 |
45 | useInjectAside(packagesListObj as any) | 51 | useInjectAside(packagesListObj as any) |
46 | 52 | ||
47 | // 处理列表 | 53 | // 处理列表 |
@@ -54,7 +60,7 @@ const handlePackagesList = () => { | @@ -54,7 +60,7 @@ const handlePackagesList = () => { | ||
54 | // @ts-ignore | 60 | // @ts-ignore |
55 | label: packagesListObj[val].label, | 61 | label: packagesListObj[val].label, |
56 | // @ts-ignore | 62 | // @ts-ignore |
57 | - list: getPackagesList[val] | 63 | + list: getPackagesList[val], |
58 | }) | 64 | }) |
59 | } | 65 | } |
60 | } | 66 | } |
@@ -79,4 +85,12 @@ const clickItemHandle = (key: string, item: any) => { | @@ -79,4 +85,12 @@ const clickItemHandle = (key: string, item: any) => { | ||
79 | beforeSelect = key | 85 | beforeSelect = key |
80 | } | 86 | } |
81 | 87 | ||
82 | -export { getCharts, BarChartIcon, themeColor, selectOptions, selectValue, clickItemHandle, menuOptions } | 88 | +export { |
89 | + getCharts, | ||
90 | + BarChartIcon, | ||
91 | + themeColor, | ||
92 | + selectOptions, | ||
93 | + selectValue, | ||
94 | + clickItemHandle, | ||
95 | + menuOptions, | ||
96 | +} |
@@ -55,4 +55,4 @@ const useSyncUpdateHandle = () => { | @@ -55,4 +55,4 @@ const useSyncUpdateHandle = () => { | ||
55 | export const useSyncUpdate = () => { | 55 | export const useSyncUpdate = () => { |
56 | const routerParamsInfo = useRoute() | 56 | const routerParamsInfo = useRoute() |
57 | watch(() => routerParamsInfo.name, useSyncUpdateHandle(), { immediate: true }) | 57 | watch(() => routerParamsInfo.name, useSyncUpdateHandle(), { immediate: true }) |
58 | -} | ||
58 | +} |
1 | <template> | 1 | <template> |
2 | <!-- <edit-rule></edit-rule> --> | 2 | <!-- <edit-rule></edit-rule> --> |
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 | - > | 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"> | ||
16 | <edit-rule> | 6 | <edit-rule> |
17 | <!-- 画布主体 --> | 7 | <!-- 画布主体 --> |
18 | <div id="go-chart-edit-content" @contextmenu="handleContextMenu"> | 8 | <div id="go-chart-edit-content" @contextmenu="handleContextMenu"> |
19 | <!-- 展示 --> | 9 | <!-- 展示 --> |
20 | <edit-range> | 10 | <edit-range> |
21 | <!-- 滤镜预览 --> | 11 | <!-- 滤镜预览 --> |
22 | - <div | ||
23 | - :style="{ | ||
24 | - ...getFilterStyle(chartEditStore.getEditCanvasConfig), | ||
25 | - ...rangeStyle | ||
26 | - }" | ||
27 | - > | 12 | + <div :style="{ |
13 | + ...getFilterStyle(chartEditStore.getEditCanvasConfig), | ||
14 | + ...rangeStyle | ||
15 | + }"> | ||
28 | <!-- 图表 --> | 16 | <!-- 图表 --> |
29 | <div v-for="(item, index) in chartEditStore.getComponentList" :key="item.id"> | 17 | <div v-for="(item, index) in chartEditStore.getComponentList" :key="item.id"> |
30 | <!-- 分组 --> | 18 | <!-- 分组 --> |
31 | - <edit-group | ||
32 | - v-if="item.isGroup" | ||
33 | - :groupData="(item as CreateComponentGroupType)" | ||
34 | - :groupIndex="index" | ||
35 | - ></edit-group> | 19 | + <edit-group v-if="item.isGroup" :groupData="(item as CreateComponentGroupType)" |
20 | + :groupIndex="index"></edit-group> | ||
36 | 21 | ||
37 | <!-- 单组件 --> | 22 | <!-- 单组件 --> |
38 | - <edit-shape-box | ||
39 | - v-else | ||
40 | - :data-id="item.id" | ||
41 | - :index="index" | ||
42 | - :style="{ | 23 | + <edit-shape-box v-else :data-id="item.id" :index="index" :style="{ |
43 | ...useComponentStyle(item.attr, index), | 24 | ...useComponentStyle(item.attr, index), |
44 | ...getBlendModeStyle(item.styles) as any | 25 | ...getBlendModeStyle(item.styles) as any |
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="{ | 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="{ | ||
61 | ...useSizeStyle(item.attr), | 32 | ...useSizeStyle(item.attr), |
62 | ...getFilterStyle(item.styles), | 33 | ...getFilterStyle(item.styles), |
63 | ...getTransformStyle(item.styles) | 34 | ...getTransformStyle(item.styles) |
64 | - }" | ||
65 | - ></component> | 35 | + }"></component> |
66 | </edit-shape-box> | 36 | </edit-shape-box> |
67 | </div> | 37 | </div> |
68 | </div> | 38 | </div> |
@@ -83,45 +53,46 @@ | @@ -83,45 +53,46 @@ | ||
83 | </template> | 53 | </template> |
84 | 54 | ||
85 | <script lang="ts" setup> | 55 | <script lang="ts" setup> |
86 | -import {onMounted, computed} from 'vue' | ||
87 | -import {chartColors} from '@/settings/chartThemes/index' | ||
88 | -import {MenuEnum} from '@/enums/editPageEnum' | ||
89 | -import {CreateComponentType, CreateComponentGroupType} from '@/packages/index.d' | ||
90 | -import {animationsClass, getFilterStyle, getTransformStyle, getBlendModeStyle} from '@/utils' | ||
91 | -import {useContextMenu} from '@/views/chart/hooks/useContextMenu.hook' | ||
92 | -import {MenuOptionsItemType} from '@/views/chart/hooks/useContextMenu.hook.d' | ||
93 | -import {useChartEditStore} from '@/store/modules/chartEditStore/chartEditStore' | ||
94 | - | ||
95 | -import {useLayout} from './hooks/useLayout.hook' | ||
96 | -import {useAddKeyboard} from '../hooks/useKeyboard.hook' | ||
97 | -import {dragHandle, dragoverHandle, mousedownHandleUnStop, useMouseHandle} from './hooks/useDrag.hook' | ||
98 | -import {useComponentStyle, useSizeStyle} from './hooks/useStyle.hook' | ||
99 | -import {useSync} from '../hooks/useSync.hook' | ||
100 | - | ||
101 | -import {ContentBox} from '../ContentBox/index' | ||
102 | -import {EditGroup} from './components/EditGroup' | ||
103 | -import {EditRange} from './components/EditRange' | ||
104 | -import {EditRule} from './components/EditRule' | ||
105 | -import {EditBottom} from './components/EditBottom' | ||
106 | -import {EditShapeBox} from './components/EditShapeBox' | ||
107 | -import {EditTools} from './components/EditTools' | 56 | +import { onMounted, computed } from 'vue' |
57 | +import { chartColors } from '@/settings/chartThemes/index' | ||
58 | +import { MenuEnum } from '@/enums/editPageEnum' | ||
59 | +import { CreateComponentType, CreateComponentGroupType } from '@/packages/index.d' | ||
60 | +import { animationsClass, getFilterStyle, getTransformStyle, getBlendModeStyle } from '@/utils' | ||
61 | +import { useContextMenu } from '@/views/chart/hooks/useContextMenu.hook' | ||
62 | +import { MenuOptionsItemType } from '@/views/chart/hooks/useContextMenu.hook.d' | ||
63 | +import { useChartEditStore } from '@/store/modules/chartEditStore/chartEditStore' | ||
64 | + | ||
65 | +import { useLayout } from './hooks/useLayout.hook' | ||
66 | +import { useAddKeyboard } from '../hooks/useKeyboard.hook' | ||
67 | +import { dragHandle, dragoverHandle, mousedownHandleUnStop, useMouseHandle } from './hooks/useDrag.hook' | ||
68 | +import { useComponentStyle, useSizeStyle } from './hooks/useStyle.hook' | ||
69 | +// THINGS_KIT 引入同步数据源hook | ||
70 | +import { useSyncRemote } from '../hooks/external/useRemote.hook' | ||
71 | + | ||
72 | +import { ContentBox } from '../ContentBox/index' | ||
73 | +import { EditGroup } from './components/EditGroup' | ||
74 | +import { EditRange } from './components/EditRange' | ||
75 | +import { EditRule } from './components/EditRule' | ||
76 | +import { EditBottom } from './components/EditBottom' | ||
77 | +import { EditShapeBox } from './components/EditShapeBox' | ||
78 | +import { EditTools } from './components/EditTools' | ||
108 | 79 | ||
109 | const chartEditStore = useChartEditStore() | 80 | const chartEditStore = useChartEditStore() |
110 | -const {handleContextMenu} = useContextMenu() | ||
111 | -const {dataSyncFetch, intervalDataSyncUpdate} = useSync() | 81 | +const { handleContextMenu } = useContextMenu() |
82 | +const { dataSyncFetch, intervalDataSyncUpdate } = useSyncRemote() | ||
112 | 83 | ||
113 | 84 | ||
114 | // 布局处理 | 85 | // 布局处理 |
115 | useLayout() | 86 | useLayout() |
116 | 87 | ||
117 | // 点击事件 | 88 | // 点击事件 |
118 | -const {mouseenterHandle, mouseleaveHandle, mousedownHandle, mouseClickHandle} = useMouseHandle() | 89 | +const { mouseenterHandle, mouseleaveHandle, mousedownHandle, mouseClickHandle } = useMouseHandle() |
119 | 90 | ||
120 | // 右键事件 | 91 | // 右键事件 |
121 | const optionsHandle = ( | 92 | const optionsHandle = ( |
122 | - targetList: MenuOptionsItemType[], | ||
123 | - allList: MenuOptionsItemType[], | ||
124 | - targetInstance: CreateComponentType | 93 | + targetList: MenuOptionsItemType[], |
94 | + allList: MenuOptionsItemType[], | ||
95 | + targetInstance: CreateComponentType | ||
125 | ) => { | 96 | ) => { |
126 | // 多选处理 | 97 | // 多选处理 |
127 | if (chartEditStore.getTargetChart.selectId.length > 1) { | 98 | if (chartEditStore.getTargetChart.selectId.length > 1) { |
@@ -167,8 +138,8 @@ const rangeStyle = computed(() => { | @@ -167,8 +138,8 @@ const rangeStyle = computed(() => { | ||
167 | const backgroundColor = background ? background : undefined | 138 | const backgroundColor = background ? background : undefined |
168 | 139 | ||
169 | const computedBackground = selectColor | 140 | const computedBackground = selectColor |
170 | - ? {background: backgroundColor} | ||
171 | - : {background: `url(${backgroundImage}) no-repeat center center / cover !important`} | 141 | + ? { background: backgroundColor } |
142 | + : { background: `url(${backgroundImage}) no-repeat center center / cover !important` } | ||
172 | 143 | ||
173 | // @ts-ignore | 144 | // @ts-ignore |
174 | return { | 145 | return { |
@@ -59,14 +59,15 @@ import { useChartEditStore } from '@/store/modules/chartEditStore/chartEditStore | @@ -59,14 +59,15 @@ import { useChartEditStore } from '@/store/modules/chartEditStore/chartEditStore | ||
59 | 59 | ||
60 | import { useChartHistoryStore } from '@/store/modules/chartHistoryStore/chartHistoryStore' | 60 | import { useChartHistoryStore } from '@/store/modules/chartHistoryStore/chartHistoryStore' |
61 | import { HistoryStackEnum } from '@/store/modules/chartHistoryStore/chartHistoryStore.d' | 61 | import { HistoryStackEnum } from '@/store/modules/chartHistoryStore/chartHistoryStore.d' |
62 | -import { useSync } from '../../hooks/useSync.hook' | 62 | +// THINGS_KIT 新增同步逻辑 |
63 | +import { useSyncRemote } from '../../hooks/external/useRemote.hook' | ||
63 | import { useChartLayoutStore } from '@/store/modules/chartLayoutStore/chartLayoutStore' | 64 | import { useChartLayoutStore } from '@/store/modules/chartLayoutStore/chartLayoutStore' |
64 | import { ChartLayoutStoreEnum } from '@/store/modules/chartLayoutStore/chartLayoutStore.d' | 65 | import { ChartLayoutStoreEnum } from '@/store/modules/chartLayoutStore/chartLayoutStore.d' |
65 | 66 | ||
66 | const { LayersIcon, BarChartIcon, PrismIcon, HomeIcon, ArrowBackIcon, ArrowForwardIcon } = icon.ionicons5 | 67 | const { LayersIcon, BarChartIcon, PrismIcon, HomeIcon, ArrowBackIcon, ArrowForwardIcon } = icon.ionicons5 |
67 | const { SaveIcon } = icon.carbon | 68 | const { SaveIcon } = icon.carbon |
68 | const { setItem } = useChartLayoutStore() | 69 | const { setItem } = useChartLayoutStore() |
69 | -const { dataSyncUpdate } = useSync() | 70 | +const { dataSyncUpdate } = useSyncRemote() |
70 | const { getLayers, getCharts, getDetails } = toRefs(useChartLayoutStore()) | 71 | const { getLayers, getCharts, getDetails } = toRefs(useChartLayoutStore()) |
71 | const chartEditStore = useChartEditStore() | 72 | const chartEditStore = useChartEditStore() |
72 | const chartHistoryStore = useChartHistoryStore() | 73 | const chartHistoryStore = useChartHistoryStore() |
@@ -3,34 +3,22 @@ | @@ -3,34 +3,22 @@ | ||
3 | <n-icon size="20" :depth="3"> | 3 | <n-icon size="20" :depth="3"> |
4 | <fish-icon></fish-icon> | 4 | <fish-icon></fish-icon> |
5 | </n-icon> | 5 | </n-icon> |
6 | - <!-- THINGS_KIT --> | ||
7 | <n-text @click="handleFocus"> | 6 | <n-text @click="handleFocus"> |
8 | 工作空间 - | 7 | 工作空间 - |
9 | - <n-button secondary round size="tiny"> | 8 | + <n-button v-show="!focus" secondary round size="tiny"> |
10 | <span class="title"> | 9 | <span class="title"> |
11 | {{ comTitle }} | 10 | {{ comTitle }} |
12 | </span> | 11 | </span> |
13 | </n-button> | 12 | </n-button> |
14 | </n-text> | 13 | </n-text> |
15 | 14 | ||
16 | - <!-- <n-input | ||
17 | - v-show="focus" | ||
18 | - ref="inputInstRef" | ||
19 | - size="small" | ||
20 | - type="text" | ||
21 | - maxlength="16" | ||
22 | - show-count | ||
23 | - round | ||
24 | - placeholder="请输入项目名称" | ||
25 | - v-model:value.trim="title" | ||
26 | - @keyup.enter="handleBlur" | ||
27 | - @blur="handleBlur" | ||
28 | - ></n-input> --> | 15 | + <n-input v-show="focus" ref="inputInstRef" size="small" type="text" maxlength="16" show-count round |
16 | + placeholder="请输入项目名称" v-model:value.trim="title" @keyup.enter="handleBlur" @blur="handleBlur"></n-input> | ||
29 | </n-space> | 17 | </n-space> |
30 | </template> | 18 | </template> |
31 | 19 | ||
32 | <script setup lang="ts"> | 20 | <script setup lang="ts"> |
33 | -import { ref, nextTick, computed,watchEffect } from 'vue' | 21 | +import { ref, nextTick, computed } from 'vue' |
34 | import { fetchRouteParamsLocation, setTitle } from '@/utils' | 22 | import { fetchRouteParamsLocation, setTitle } from '@/utils' |
35 | import { useChartEditStore } from '@/store/modules/chartEditStore/chartEditStore' | 23 | import { useChartEditStore } from '@/store/modules/chartEditStore/chartEditStore' |
36 | import { EditCanvasConfigEnum } from '@/store/modules/chartEditStore/chartEditStore.d' | 24 | import { EditCanvasConfigEnum } from '@/store/modules/chartEditStore/chartEditStore.d' |
@@ -42,12 +30,17 @@ const chartEditStore = useChartEditStore() | @@ -42,12 +30,17 @@ const chartEditStore = useChartEditStore() | ||
42 | const focus = ref<boolean>(false) | 30 | const focus = ref<boolean>(false) |
43 | const inputInstRef = ref(null) | 31 | const inputInstRef = ref(null) |
44 | 32 | ||
45 | -// THINGS_KIT | ||
46 | -const title = ref<string>(fetchRouteParamsLocation()) | 33 | +// 根据路由 id 参数获取项目信息 |
34 | +const fetchProhectInfoById = () => { | ||
35 | + const id = fetchRouteParamsLocation() | ||
36 | + if (id.length) { | ||
37 | + return id[0] | ||
38 | + } | ||
39 | + return '' | ||
40 | +} | ||
41 | + | ||
42 | +const title = ref<string>(fetchProhectInfoById() || '') | ||
47 | 43 | ||
48 | -watchEffect(() => { | ||
49 | - title.value = chartEditStore.getProjectInfo.projectName || '' | ||
50 | -}) | ||
51 | const comTitle = computed(() => { | 44 | const comTitle = computed(() => { |
52 | // eslint-disable-next-line vue/no-side-effects-in-computed-properties | 45 | // eslint-disable-next-line vue/no-side-effects-in-computed-properties |
53 | title.value = title.value.replace(/\s/g, '') | 46 | title.value = title.value.replace(/\s/g, '') |
1 | +import { fetchRouteParamsLocation, JSONStringify, JSONParse, base64toFile } from '@/utils' | ||
2 | +import { useChartEditStore } from '@/store/modules/chartEditStore/chartEditStore' | ||
3 | +import { ProjectInfoEnum } from '@/store/external/module/projectInfo.d' | ||
4 | +import { onUnmounted } from 'vue' | ||
5 | +import { saveInterval } from '@/settings/designSetting' | ||
6 | +import throttle from 'lodash/throttle' | ||
7 | +import html2canvas from 'html2canvas' | ||
8 | +import { saveDataViewList, contentUpdateApi, getDataView, uploadFile } from '@/api/external/contentSave/content' | ||
9 | +// 画布枚举 | ||
10 | +import { SyncEnum } from '@/enums/external/editPageEnum' | ||
11 | +import { useProjectInfoStore } from '@/store/external/module/projectInfo' | ||
12 | +import { useSync } from '../useSync.hook' | ||
13 | + | ||
14 | + | ||
15 | + | ||
16 | +// 请求处理 | ||
17 | +export const useSyncRemote = () => { | ||
18 | + const chartEditStore = useChartEditStore() | ||
19 | + const projectInfoStore = useProjectInfoStore() | ||
20 | + const { updateComponent } = useSync() | ||
21 | + | ||
22 | + /** | ||
23 | + * * 赋值全局数据 | ||
24 | + * @param projectData 项目数据 | ||
25 | + * @returns | ||
26 | + */ | ||
27 | + const updateStoreInfo = (projectData: { | ||
28 | + dataViewId: string | ||
29 | + dataViewName: string | ||
30 | + indexImage: string | ||
31 | + id: string | ||
32 | + state: number | ||
33 | + organizationId: string | ||
34 | + dataViewContent: { id: string; content: string; enabled: boolean } | ||
35 | + }) => { | ||
36 | + const { dataViewId, dataViewName, indexImage, state, dataViewContent, organizationId } = projectData | ||
37 | + // ID | ||
38 | + projectInfoStore.setProjectInfoByKey(ProjectInfoEnum.PROJECT_ID, dataViewId) | ||
39 | + // 名称 | ||
40 | + projectInfoStore.setProjectInfoByKey(ProjectInfoEnum.PROJECT_NAME, dataViewName) | ||
41 | + // 描述 | ||
42 | + projectInfoStore.setProjectInfoByKey(ProjectInfoEnum.REMARKS, dataViewContent?.id) | ||
43 | + // 缩略图 | ||
44 | + projectInfoStore.setProjectInfoByKey(ProjectInfoEnum.THUMBNAIL, indexImage) | ||
45 | + // 发布 | ||
46 | + projectInfoStore.setProjectInfoByKey(ProjectInfoEnum.RELEASE, state === 1) | ||
47 | + projectInfoStore.setProjectInfoByKey(ProjectInfoEnum.ORGANIZATION_ID, organizationId) | ||
48 | + projectInfoStore.setProjectInfoByKey(ProjectInfoEnum.STATE_DATA, state) | ||
49 | + } | ||
50 | + | ||
51 | + // * 数据获取 | ||
52 | + const dataSyncFetch = async () => { | ||
53 | + // FIX:重新执行dataSyncFetch需清空chartEditStore.componentList,否则会导致图层重复 | ||
54 | + // 切换语言等操作会导致重新执行 dataSyncFetch,此时pinia中并未清空chartEditStore.componentList,导致图层重复 | ||
55 | + chartEditStore.componentList = [] | ||
56 | + projectInfoStore.setSaveStatus(SyncEnum.START) | ||
57 | + try { | ||
58 | + const id = fetchRouteParamsLocation() | ||
59 | + const res = await getDataView(id) | ||
60 | + updateStoreInfo(res) | ||
61 | + // 更新全局数据 | ||
62 | + await updateComponent(JSONParse(res.dataViewContent.content)) | ||
63 | + | ||
64 | + projectInfoStore.setProjectInfoByKey(ProjectInfoEnum.PROJECT_ID, res.dataViewId) | ||
65 | + setTimeout(() => { | ||
66 | + projectInfoStore.setSaveStatus(SyncEnum.SUCCESS) | ||
67 | + }, 1000) | ||
68 | + | ||
69 | + } catch (error) { | ||
70 | + projectInfoStore.setSaveStatus(SyncEnum.FAILURE) | ||
71 | + } | ||
72 | + } | ||
73 | + | ||
74 | + // 数据保存 | ||
75 | + const dataSyncUpdate = throttle(async (updateImg = true) => { | ||
76 | + if (!fetchRouteParamsLocation()) return | ||
77 | + const projectId = projectInfoStore.getProjectInfo[ProjectInfoEnum.PROJECT_ID] | ||
78 | + const id = projectInfoStore.getProjectInfo[ProjectInfoEnum.REMARKS] | ||
79 | + const dataViewName = projectInfoStore.getProjectInfo[ProjectInfoEnum.PROJECT_NAME] | ||
80 | + const organizationId = projectInfoStore.getProjectInfo[ProjectInfoEnum.ORGANIZATION_ID] | ||
81 | + const state = projectInfoStore.getProjectInfo[ProjectInfoEnum.STATE_DATA] | ||
82 | + | ||
83 | + if (projectId === null || projectId === '') { | ||
84 | + window['$message'].error('数据初未始化成功,请刷新页面!') | ||
85 | + return | ||
86 | + } | ||
87 | + projectInfoStore.setSaveStatus(SyncEnum.START) | ||
88 | + // 异常处理:缩略图上传失败不影响JSON的保存 | ||
89 | + try { | ||
90 | + if (updateImg) { | ||
91 | + // 获取缩略图片 | ||
92 | + const range = document.querySelector('.go-edit-range') as HTMLElement | ||
93 | + // 生成图片 | ||
94 | + const canvasImage: HTMLCanvasElement = await html2canvas(range, { | ||
95 | + backgroundColor: null, | ||
96 | + allowTaint: true, | ||
97 | + useCORS: true | ||
98 | + }) | ||
99 | + | ||
100 | + // 上传预览图 | ||
101 | + const uploadParams = new FormData() | ||
102 | + uploadParams.append( | ||
103 | + 'file', | ||
104 | + base64toFile(canvasImage.toDataURL(), `${fetchRouteParamsLocation()}_index_preview.png`) | ||
105 | + ) | ||
106 | + const uploadRes = await uploadFile(uploadParams) | ||
107 | + | ||
108 | + // 保存预览图 | ||
109 | + if (uploadRes) { | ||
110 | + await saveDataViewList({ | ||
111 | + name: dataViewName, | ||
112 | + organizationId, | ||
113 | + state, | ||
114 | + id: fetchRouteParamsLocation(), | ||
115 | + thumbnail: `${uploadRes.fileStaticUri}` | ||
116 | + }) | ||
117 | + } | ||
118 | + } | ||
119 | + } catch (e) { | ||
120 | + console.log(e) | ||
121 | + } | ||
122 | + // 保存数据 | ||
123 | + const saveContent = { | ||
124 | + dataViewContent: { | ||
125 | + id, | ||
126 | + content: JSONStringify(chartEditStore.getStorageInfo || {}) | ||
127 | + }, | ||
128 | + dataViewName, | ||
129 | + dataViewId: projectId, | ||
130 | + projectId | ||
131 | + } | ||
132 | + await contentUpdateApi(saveContent) | ||
133 | + window['$message'].success('保存成功!') | ||
134 | + // 成功状态 | ||
135 | + setTimeout(() => { | ||
136 | + projectInfoStore.setSaveStatus(SyncEnum.SUCCESS) | ||
137 | + }, 1000) | ||
138 | + return | ||
139 | + // 失败状态 | ||
140 | + // chartEditStore.setEditCanvas(EditCanvasTypeEnum.SAVE_STATUS, SyncEnum.FAILURE) | ||
141 | + }, 3000) | ||
142 | + | ||
143 | + // * 定时处理 | ||
144 | + const intervalDataSyncUpdate = () => { | ||
145 | + // 定时获取数据 | ||
146 | + const syncTiming = setInterval(() => { | ||
147 | + dataSyncUpdate() | ||
148 | + }, saveInterval * 1000) | ||
149 | + | ||
150 | + // 销毁 | ||
151 | + onUnmounted(() => { | ||
152 | + clearInterval(syncTiming) | ||
153 | + }) | ||
154 | + } | ||
155 | + return { | ||
156 | + dataSyncFetch, | ||
157 | + dataSyncUpdate, | ||
158 | + intervalDataSyncUpdate | ||
159 | + } | ||
160 | +} |
1 | -// THINGS_KIT | ||
2 | -import { getUUID, fetchRouteParamsLocation, JSONStringify, JSONParse, base64toFile } from '@/utils' | 1 | +import { getUUID } from '@/utils' |
3 | import { useChartEditStore } from '@/store/modules/chartEditStore/chartEditStore' | 2 | import { useChartEditStore } from '@/store/modules/chartEditStore/chartEditStore' |
4 | -import { | ||
5 | - EditCanvasTypeEnum, | ||
6 | - ChartEditStoreEnum, | ||
7 | - ChartEditStorage, | ||
8 | - ProjectInfoEnum | ||
9 | -} from '@/store/modules/chartEditStore/chartEditStore.d' | 3 | +import { ChartEditStoreEnum, ChartEditStorage } from '@/store/modules/chartEditStore/chartEditStore.d' |
10 | import { useChartHistoryStore } from '@/store/modules/chartHistoryStore/chartHistoryStore' | 4 | import { useChartHistoryStore } from '@/store/modules/chartHistoryStore/chartHistoryStore' |
11 | import { useChartLayoutStore } from '@/store/modules/chartLayoutStore/chartLayoutStore' | 5 | import { useChartLayoutStore } from '@/store/modules/chartLayoutStore/chartLayoutStore' |
12 | import { ChartLayoutStoreEnum } from '@/store/modules/chartLayoutStore/chartLayoutStore.d' | 6 | import { ChartLayoutStoreEnum } from '@/store/modules/chartLayoutStore/chartLayoutStore.d' |
13 | -import { fetchChartComponent, fetchConfigComponent, createComponent } from '@/packages/index' | 7 | +import { fetchChartComponent, fetchConfigComponent } from '@/packages/index' |
8 | + | ||
9 | +// THINGS_KIT 重写createComponent 创建组件的逻辑 | ||
10 | +// import { fetchChartComponent, fetchConfigComponent, createComponent } from '@/packages/index' | ||
11 | +import { createComponent } from '@/packages/external/override' | ||
12 | + | ||
14 | import { CreateComponentType, CreateComponentGroupType } from '@/packages/index.d' | 13 | import { CreateComponentType, CreateComponentGroupType } from '@/packages/index.d' |
15 | import { BaseEvent, EventLife } from '@/enums/eventEnum' | 14 | import { BaseEvent, EventLife } from '@/enums/eventEnum' |
16 | import { PublicGroupConfigClass } from '@/packages/public/publicConfig' | 15 | import { PublicGroupConfigClass } from '@/packages/public/publicConfig' |
17 | import merge from 'lodash/merge' | 16 | import merge from 'lodash/merge' |
18 | -import { onUnmounted } from 'vue' | ||
19 | -import { saveInterval } from '@/settings/designSetting' | ||
20 | -import throttle from 'lodash/throttle' | ||
21 | -// THINGS_KIT | ||
22 | -import html2canvas from 'html2canvas' | ||
23 | -import { saveDataViewList, contentUpdateApi, getDataView, uploadFile } from '@/api/external/contentSave/content' | ||
24 | -// 画布枚举 | ||
25 | -import { SyncEnum } from '@/enums/editPageEnum' | ||
26 | 17 | ||
27 | /** | 18 | /** |
28 | * * 画布-版本升级对旧数据无法兼容的补丁 | 19 | * * 画布-版本升级对旧数据无法兼容的补丁 |
@@ -130,7 +121,7 @@ export const useSync = () => { | @@ -130,7 +121,7 @@ export const useSync = () => { | ||
130 | } | 121 | } |
131 | 122 | ||
132 | if (e.isGroup) { | 123 | if (e.isGroup) { |
133 | - ;(e as CreateComponentGroupType).groupList.forEach(groupItem => { | 124 | + (e as CreateComponentGroupType).groupList.forEach(groupItem => { |
134 | intComponent(groupItem) | 125 | intComponent(groupItem) |
135 | }) | 126 | }) |
136 | } else { | 127 | } else { |
@@ -144,7 +135,7 @@ export const useSync = () => { | @@ -144,7 +135,7 @@ export const useSync = () => { | ||
144 | callBack?: (componentInstance: CreateComponentType) => void | 135 | callBack?: (componentInstance: CreateComponentType) => void |
145 | ) => { | 136 | ) => { |
146 | // 补充 class 上的方法 | 137 | // 补充 class 上的方法 |
147 | - let newComponent: CreateComponentType = await createComponent(_componentInstance.chartConfig) | 138 | + const newComponent: CreateComponentType = await createComponent(_componentInstance.chartConfig) |
148 | if (callBack) { | 139 | if (callBack) { |
149 | if (changeId) { | 140 | if (changeId) { |
150 | callBack(componentMerge(newComponent, { ..._componentInstance, id: getUUID() })) | 141 | callBack(componentMerge(newComponent, { ..._componentInstance, id: getUUID() })) |
@@ -169,10 +160,10 @@ export const useSync = () => { | @@ -169,10 +160,10 @@ export const useSync = () => { | ||
169 | // 组件 | 160 | // 组件 |
170 | if (key === ChartEditStoreEnum.COMPONENT_LIST) { | 161 | if (key === ChartEditStoreEnum.COMPONENT_LIST) { |
171 | let loadIndex = 0 | 162 | let loadIndex = 0 |
172 | - const listLength = projectData[key].length | 163 | + const listLength = projectData[key].length; |
173 | for (const comItem of projectData[key]) { | 164 | for (const comItem of projectData[key]) { |
174 | // 设置加载数量 | 165 | // 设置加载数量 |
175 | - let percentage = parseInt((parseFloat(`${++loadIndex / listLength}`) * 100).toString()) | 166 | + const percentage = parseInt((parseFloat(`${++loadIndex / listLength}`) * 100).toString()) |
176 | chartLayoutStore.setItemUnHandle(ChartLayoutStoreEnum.PERCENTAGE, percentage) | 167 | chartLayoutStore.setItemUnHandle(ChartLayoutStoreEnum.PERCENTAGE, percentage) |
177 | // 判断类型 | 168 | // 判断类型 |
178 | if (comItem.isGroup) { | 169 | if (comItem.isGroup) { |
@@ -209,148 +200,8 @@ export const useSync = () => { | @@ -209,148 +200,8 @@ export const useSync = () => { | ||
209 | // 清除数量 | 200 | // 清除数量 |
210 | chartLayoutStore.setItemUnHandle(ChartLayoutStoreEnum.PERCENTAGE, 0) | 201 | chartLayoutStore.setItemUnHandle(ChartLayoutStoreEnum.PERCENTAGE, 0) |
211 | } | 202 | } |
212 | - // THINGS_KIT | ||
213 | - /** | ||
214 | - * * 赋值全局数据 | ||
215 | - * @param projectData 项目数据 | ||
216 | - * @returns | ||
217 | - */ | ||
218 | - const updateStoreInfo = (projectData: { | ||
219 | - dataViewId: string | ||
220 | - dataViewName: string | ||
221 | - indexImage: string | ||
222 | - id: string | ||
223 | - state: number | ||
224 | - organizationId: string | ||
225 | - dataViewContent: { id: string; content: string; enabled: boolean } | ||
226 | - }) => { | ||
227 | - const { dataViewId, dataViewName, indexImage, state, dataViewContent, organizationId } = projectData | ||
228 | - // ID | ||
229 | - chartEditStore.setProjectInfo(ProjectInfoEnum.PROJECT_ID, dataViewId) | ||
230 | - // 名称 | ||
231 | - chartEditStore.setProjectInfo(ProjectInfoEnum.PROJECT_NAME, dataViewName) | ||
232 | - // 描述 | ||
233 | - chartEditStore.setProjectInfo(ProjectInfoEnum.REMARKS, dataViewContent?.id) | ||
234 | - // 缩略图 | ||
235 | - chartEditStore.setProjectInfo(ProjectInfoEnum.THUMBNAIL, indexImage) | ||
236 | - // 发布 | ||
237 | - chartEditStore.setProjectInfo(ProjectInfoEnum.RELEASE, state === 1) | ||
238 | - chartEditStore.setProjectInfo(ProjectInfoEnum.ORGANIZATIONID, organizationId) | ||
239 | - chartEditStore.setProjectInfo(ProjectInfoEnum.STATE_DATA, state) | ||
240 | - } | ||
241 | - // THINGS_KIT | ||
242 | - // * 数据获取 | ||
243 | - const dataSyncFetch = async () => { | ||
244 | - // FIX:重新执行dataSyncFetch需清空chartEditStore.componentList,否则会导致图层重复 | ||
245 | - // 切换语言等操作会导致重新执行 dataSyncFetch,此时pinia中并未清空chartEditStore.componentList,导致图层重复 | ||
246 | - chartEditStore.componentList = [] | ||
247 | - chartEditStore.setEditCanvas(EditCanvasTypeEnum.SAVE_STATUS, SyncEnum.START) | ||
248 | - try { | ||
249 | - const id = fetchRouteParamsLocation() | ||
250 | - const res = await getDataView(id) | ||
251 | - updateStoreInfo(res) | ||
252 | - // 更新全局数据 | ||
253 | - await updateComponent(JSONParse(res.dataViewContent.content)) | ||
254 | - | ||
255 | - chartEditStore.setProjectInfo(ProjectInfoEnum.PROJECT_ID, res.dataViewId) | ||
256 | - setTimeout(() => { | ||
257 | - chartEditStore.setEditCanvas(EditCanvasTypeEnum.SAVE_STATUS, SyncEnum.SUCCESS) | ||
258 | - }, 1000) | ||
259 | - // return | ||
260 | - // } | ||
261 | - // chartEditStore.setEditCanvas(EditCanvasTypeEnum.SAVE_STATUS, SyncEnum.FAILURE) | ||
262 | - } catch (error) { | ||
263 | - chartEditStore.setEditCanvas(EditCanvasTypeEnum.SAVE_STATUS, SyncEnum.FAILURE) | ||
264 | - // httpErrorHandle() | ||
265 | - } | ||
266 | - } | ||
267 | - // THINGS_KIT | ||
268 | - // 数据保存 | ||
269 | - const dataSyncUpdate = throttle(async (updateImg = true) => { | ||
270 | - if (!fetchRouteParamsLocation()) return | ||
271 | - const projectId = chartEditStore.getProjectInfo[ProjectInfoEnum.PROJECT_ID] | ||
272 | - const id = chartEditStore.getProjectInfo[ProjectInfoEnum.REMARKS] | ||
273 | - const dataViewName = chartEditStore.getProjectInfo[ProjectInfoEnum.PROJECT_NAME] | ||
274 | - const organizationId = chartEditStore.getProjectInfo[ProjectInfoEnum.ORGANIZATIONID] | ||
275 | - const state = chartEditStore.getProjectInfo[ProjectInfoEnum.STATE_DATA] | ||
276 | 203 | ||
277 | - if (projectId === null || projectId === '') { | ||
278 | - window['$message'].error('数据初未始化成功,请刷新页面!') | ||
279 | - return | ||
280 | - } | ||
281 | - chartEditStore.setEditCanvas(EditCanvasTypeEnum.SAVE_STATUS, SyncEnum.START) | ||
282 | - // 异常处理:缩略图上传失败不影响JSON的保存 | ||
283 | - try { | ||
284 | - if (updateImg) { | ||
285 | - // 获取缩略图片 | ||
286 | - const range = document.querySelector('.go-edit-range') as HTMLElement | ||
287 | - // 生成图片 | ||
288 | - const canvasImage: HTMLCanvasElement = await html2canvas(range, { | ||
289 | - backgroundColor: null, | ||
290 | - allowTaint: true, | ||
291 | - useCORS: true | ||
292 | - }) | ||
293 | - | ||
294 | - // 上传预览图 | ||
295 | - const uploadParams = new FormData() | ||
296 | - uploadParams.append( | ||
297 | - 'file', | ||
298 | - base64toFile(canvasImage.toDataURL(), `${fetchRouteParamsLocation()}_index_preview.png`) | ||
299 | - ) | ||
300 | - const uploadRes = await uploadFile(uploadParams) | ||
301 | - console.log(uploadRes.fileStaticUri) | ||
302 | - // 保存预览图 | ||
303 | - if (uploadRes) { | ||
304 | - await saveDataViewList({ | ||
305 | - name: dataViewName, | ||
306 | - organizationId, | ||
307 | - state, | ||
308 | - id: fetchRouteParamsLocation(), | ||
309 | - thumbnail: `${uploadRes.fileStaticUri}` | ||
310 | - }) | ||
311 | - } | ||
312 | - } | ||
313 | - } catch (e) { | ||
314 | - console.log(e) | ||
315 | - } | ||
316 | - // 保存数据 | ||
317 | - const saveContent = { | ||
318 | - dataViewContent: { | ||
319 | - id, | ||
320 | - content: JSONStringify(chartEditStore.getStorageInfo || {}) | ||
321 | - }, | ||
322 | - dataViewName, | ||
323 | - dataViewId: projectId, | ||
324 | - projectId | ||
325 | - } | ||
326 | - await contentUpdateApi(saveContent) | ||
327 | - window['$message'].success('保存成功!') | ||
328 | - // 成功状态 | ||
329 | - setTimeout(() => { | ||
330 | - chartEditStore.setEditCanvas(EditCanvasTypeEnum.SAVE_STATUS, SyncEnum.SUCCESS) | ||
331 | - }, 1000) | ||
332 | - return | ||
333 | - // 失败状态 | ||
334 | - // chartEditStore.setEditCanvas(EditCanvasTypeEnum.SAVE_STATUS, SyncEnum.FAILURE) | ||
335 | - }, 3000) | ||
336 | - // THINGS_KIT | ||
337 | - // * 定时处理 | ||
338 | - const intervalDataSyncUpdate = () => { | ||
339 | - // 定时获取数据 | ||
340 | - const syncTiming = setInterval(() => { | ||
341 | - dataSyncUpdate() | ||
342 | - }, saveInterval * 1000) | ||
343 | - | ||
344 | - // 销毁 | ||
345 | - onUnmounted(() => { | ||
346 | - clearInterval(syncTiming) | ||
347 | - }) | ||
348 | - } | ||
349 | return { | 204 | return { |
350 | - updateComponent, | ||
351 | - // THINGS_KIT | ||
352 | - dataSyncFetch, | ||
353 | - dataSyncUpdate, | ||
354 | - intervalDataSyncUpdate | 205 | + updateComponent |
355 | } | 206 | } |
356 | } | 207 | } |
@@ -26,7 +26,7 @@ | @@ -26,7 +26,7 @@ | ||
26 | lineNumbers: 'on', | 26 | lineNumbers: 'on', |
27 | minimap: { enabled: true } | 27 | minimap: { enabled: true } |
28 | }" | 28 | }" |
29 | - /> | 29 | + /> |
30 | </n-layout-content> | 30 | </n-layout-content> |
31 | </n-layout> | 31 | </n-layout> |
32 | </div> | 32 | </div> |
@@ -38,22 +38,16 @@ import { MonacoEditor } from '@/components/Pages/MonacoEditor' | @@ -38,22 +38,16 @@ import { MonacoEditor } from '@/components/Pages/MonacoEditor' | ||
38 | import { SavePageEnum } from '@/enums/editPageEnum' | 38 | import { SavePageEnum } from '@/enums/editPageEnum' |
39 | import { getSessionStorageInfo } from '../preview/utils' | 39 | import { getSessionStorageInfo } from '../preview/utils' |
40 | import type { ChartEditStorageType } from '../preview/index.d' | 40 | import type { ChartEditStorageType } from '../preview/index.d' |
41 | -import { setSessionStorage, JSONStringify, JSONParse, setTitle, fetchRouteParamsLocation } from '@/utils' | 41 | +import { setSessionStorage, JSONStringify, JSONParse, setTitle } from '@/utils' |
42 | import { StorageEnum } from '@/enums/storageEnum' | 42 | import { StorageEnum } from '@/enums/storageEnum' |
43 | import { icon } from '@/plugins' | 43 | import { icon } from '@/plugins' |
44 | -// THINGS_KIT | ||
45 | -import { useSync } from '@/views/chart/hooks/useSync.hook' | ||
46 | -import { useChartEditStore } from '@/store/modules/chartEditStore/chartEditStore' | ||
47 | -import { ProjectInfoEnum } from '@/store/modules/chartEditStore/chartEditStore.d' | ||
48 | -// THINGS_KIT | ||
49 | -const chartEditStore = useChartEditStore() | ||
50 | -const { dataSyncUpdate } = useSync() | 44 | + |
51 | const { ChevronBackOutlineIcon, DownloadIcon } = icon.ionicons5 | 45 | const { ChevronBackOutlineIcon, DownloadIcon } = icon.ionicons5 |
52 | const showOpenFilePicker: Function = (window as any).showOpenFilePicker | 46 | const showOpenFilePicker: Function = (window as any).showOpenFilePicker |
53 | const content = ref('') | 47 | const content = ref('') |
54 | // 从sessionStorage 获取数据 | 48 | // 从sessionStorage 获取数据 |
55 | async function getDataBySession() { | 49 | async function getDataBySession() { |
56 | - const localStorageInfo: ChartEditStorageType = (await getSessionStorageInfo()) as unknown as ChartEditStorageType | 50 | + const localStorageInfo: ChartEditStorageType = await getSessionStorageInfo() as unknown as ChartEditStorageType |
57 | setTitle(`编辑-${localStorageInfo.editCanvasConfig.projectName}`) | 51 | setTitle(`编辑-${localStorageInfo.editCanvasConfig.projectName}`) |
58 | content.value = JSONStringify(localStorageInfo) | 52 | content.value = JSONStringify(localStorageInfo) |
59 | } | 53 | } |
@@ -90,7 +84,7 @@ document.addEventListener('keydown', function (e) { | @@ -90,7 +84,7 @@ document.addEventListener('keydown', function (e) { | ||
90 | } | 84 | } |
91 | }) | 85 | }) |
92 | addEventListener('blur', updateSync) | 86 | addEventListener('blur', updateSync) |
93 | -// THINGS_KIT | 87 | + |
94 | // 同步更新 | 88 | // 同步更新 |
95 | async function updateSync() { | 89 | async function updateSync() { |
96 | if (!window.opener) { | 90 | if (!window.opener) { |
@@ -100,11 +94,6 @@ async function updateSync() { | @@ -100,11 +94,6 @@ async function updateSync() { | ||
100 | const detail = JSONParse(content.value) | 94 | const detail = JSONParse(content.value) |
101 | delete detail.id | 95 | delete detail.id |
102 | // 保持id不变 | 96 | // 保持id不变 |
103 | - // 带后端版本额外处理请求 | ||
104 | - if (dataSyncUpdate) { | ||
105 | - chartEditStore.setProjectInfo(ProjectInfoEnum.PROJECT_ID, fetchRouteParamsLocation()) | ||
106 | - await dataSyncUpdate(false) // JSON界面保存不上传缩略图 | ||
107 | - } | ||
108 | window.opener.dispatchEvent(new CustomEvent(SavePageEnum.JSON, { detail })) | 97 | window.opener.dispatchEvent(new CustomEvent(SavePageEnum.JSON, { detail })) |
109 | } catch (e) { | 98 | } catch (e) { |
110 | window['$message'].error('内容格式有误') | 99 | window['$message'].error('内容格式有误') |