@zhangqingcq/vgce 0.0.27 → 0.0.29
Sign up to get free protection for your applications and to get access to all the features.
- package/dist/style.css +2 -2
- package/dist/vgce.js +9270 -8810
- package/dist/vgce.umd.cjs +206 -98
- package/package.json +7 -7
- package/src/assets/svgs/alert-light.svg +39 -0
- package/src/assets/svgs/bot-9.svg +94 -0
- package/src/assets/svgs/common-table.svg +1 -7
- package/src/assets/svgs/el-button.svg +1 -10
- package/src/assets/svgs/hamburger.svg +1 -0
- package/src/assets/svgs/hotpot.svg +1 -0
- package/src/assets/svgs/now-time.svg +1 -9
- package/src/assets/svgs/pie-charts.svg +1 -10
- package/src/assets/svgs/progress-a.svg +1 -1
- package/src/assets/svgs/svg-text.svg +1 -1
- package/src/assets/svgs/switch-on.svg +12 -0
- package/src/assets/svgs/switch-r.svg +14 -0
- package/src/assets/svgs/thermometer.svg +22 -0
- package/src/assets/svgs/thermometer2.svg +16 -0
- package/src/components/config/index.ts +11 -0
- package/src/components/svg-editor/{center-panel/index.vue → center-panel.vue} +14 -8
- package/src/components/svg-editor/{handle-panel/index.vue → handle-panel.vue} +10 -0
- package/src/components/svg-editor/index.vue +8 -7
- package/src/components/svg-editor/{left-panel/index.vue → left-panel.vue} +2 -2
- package/src/components/svg-editor/right-panel/code-edit-modal.vue +2 -2
- package/src/components/svg-editor/right-panel/common-animate.vue +1 -1
- package/src/components/svg-editor/right-panel/dynamic-el-form-item.vue +22 -0
- package/src/components/svg-editor/right-panel/list.vue +1 -1
- package/src/components/svg-editor/{right-panel/index.vue → right-panel.vue} +47 -31
- package/src/components/svg-editor/{top-panel/index.vue → top-panel.vue} +11 -3
- package/src/components/{svg-viewer/index.vue → svg-viewer.vue} +8 -8
- package/src/config/files/common-table.vue +48 -48
- package/src/config/files/now-time.vue +71 -52
- package/src/config/files/pie-charts.vue +72 -71
- package/src/config/files/svg-text.vue +17 -37
- package/src/config/files/switch-r.vue +72 -0
- package/src/config/index.ts +2 -2
- package/src/config/svg/animation/index.ts +2 -2
- package/src/config/svg/{stateless/alternator.ts → animation/thermometer.ts} +4 -11
- package/src/config/svg/custom/index.ts +2 -2
- package/src/config/svg/custom/svg-text.ts +25 -1
- package/src/config/svg/custom/{switch-a.ts → switch-r.ts} +4 -4
- package/src/config/svg/stateful/alert-light.ts +33 -0
- package/src/config/svg/stateful/index.ts +2 -2
- package/src/config/svg/stateless/{house.ts → bot-9.ts} +3 -3
- package/src/config/svg/stateless/{sheet-border.ts → hamburger.ts} +3 -3
- package/src/config/svg/{stateful/circuit-breaker.ts → stateless/hotpot.ts} +4 -20
- package/src/config/svg/stateless/index.ts +4 -4
- package/src/config/types.ts +2 -9
- package/src/config/vue/component/button.ts +1 -1
- package/src/config/vue/component/common-table.ts +7 -7
- package/src/config/vue/component/now-time.ts +36 -2
- package/src/config/vue/component/progress.ts +2 -2
- package/src/index.ts +12 -12
- package/src/utils/index.ts +36 -37
- package/src/views/Preview.vue +1 -1
- package/src/assets/svgs/alternator.svg +0 -8
- package/src/assets/svgs/circuit-breaker.svg +0 -11
- package/src/assets/svgs/house.svg +0 -1
- package/src/assets/svgs/package.svg +0 -1
- package/src/assets/svgs/reservoir.svg +0 -10
- package/src/assets/svgs/sheet-border.svg +0 -1
- package/src/assets/svgs/switch-a.svg +0 -5
- package/src/components/svg-editor/center-panel/types.ts +0 -11
- package/src/config/files/switch-a.vue +0 -43
- package/src/config/svg/animation/reservoir.ts +0 -32
- /package/src/components/{ace-edit/index.ts → ace-edit.ts} +0 -0
- /package/src/components/{svg-analysis/index.vue → svg-analysis.vue} +0 -0
- /package/src/components/svg-editor/{component-tree/index.vue → component-tree.vue} +0 -0
- /package/src/components/svg-editor/{connection-line/index.vue → connection-line.vue} +0 -0
- /package/src/components/svg-editor/{connection-panel/index.vue → connection-panel.vue} +0 -0
- /package/src/components/svg-editor/{export-json/index.vue → export-json.vue} +0 -0
- /package/src/components/svg-editor/{import-json/index.vue → import-json.vue} +0 -0
- /package/src/components/{vue3-ruler-tool/index.vue → vue3-ruler-tool.vue} +0 -0
@@ -64,6 +64,8 @@
|
|
64
64
|
type: EScaleInfoType.BottomRight
|
65
65
|
}
|
66
66
|
]
|
67
|
+
|
68
|
+
const canZoom = computed(() => props.itemInfo.config.can_zoom)
|
67
69
|
const onHandleMouseDown = (type: EScaleInfoType, e: MouseEvent) => {
|
68
70
|
console.log('handMousedown', e)
|
69
71
|
const { clientX, clientY } = e
|
@@ -152,6 +154,7 @@
|
|
152
154
|
:fill="fill"
|
153
155
|
:style="{ cursor: getCursor(0).cursor, 'vector-effect': 'non-scaling-stroke' }"
|
154
156
|
pointer-events="all"
|
157
|
+
v-show="canZoom"
|
155
158
|
:x="
|
156
159
|
props.itemInfo.actual_bound.x -
|
157
160
|
offset -
|
@@ -201,6 +204,7 @@
|
|
201
204
|
:fill="fill"
|
202
205
|
:style="{ cursor: getCursor(45).cursor, 'vector-effect': 'non-scaling-stroke' }"
|
203
206
|
pointer-events="all"
|
207
|
+
v-show="canZoom"
|
204
208
|
:x="props.itemInfo.actual_bound.x + props.itemInfo.actual_bound.width / 2 - offset"
|
205
209
|
:y="
|
206
210
|
props.itemInfo.actual_bound.y -
|
@@ -217,6 +221,7 @@
|
|
217
221
|
:fill="fill"
|
218
222
|
:style="{ cursor: getCursor(90).cursor, 'vector-effect': 'non-scaling-stroke' }"
|
219
223
|
pointer-events="all"
|
224
|
+
v-show="canZoom"
|
220
225
|
:x="
|
221
226
|
props.itemInfo.actual_bound.x +
|
222
227
|
props.itemInfo.actual_bound.width -
|
@@ -238,6 +243,7 @@
|
|
238
243
|
:fill="fill"
|
239
244
|
:style="{ cursor: getCursor(315).cursor, 'vector-effect': 'non-scaling-stroke' }"
|
240
245
|
pointer-events="all"
|
246
|
+
v-show="canZoom"
|
241
247
|
:x="
|
242
248
|
props.itemInfo.actual_bound.x -
|
243
249
|
offset -
|
@@ -259,6 +265,7 @@
|
|
259
265
|
:fill="fill"
|
260
266
|
:style="{ cursor: getCursor(135).cursor, 'vector-effect': 'non-scaling-stroke' }"
|
261
267
|
pointer-events="all"
|
268
|
+
v-show="canZoom"
|
262
269
|
:x="
|
263
270
|
props.itemInfo.actual_bound.x -
|
264
271
|
offset +
|
@@ -281,6 +288,7 @@
|
|
281
288
|
:fill="fill"
|
282
289
|
:style="{ cursor: getCursor(270).cursor, 'vector-effect': 'non-scaling-stroke' }"
|
283
290
|
pointer-events="all"
|
291
|
+
v-show="canZoom"
|
284
292
|
:x="
|
285
293
|
props.itemInfo.actual_bound.x -
|
286
294
|
offset -
|
@@ -302,6 +310,7 @@
|
|
302
310
|
:fill="fill"
|
303
311
|
:style="{ cursor: getCursor(225).cursor, 'vector-effect': 'non-scaling-stroke' }"
|
304
312
|
pointer-events="all"
|
313
|
+
v-show="canZoom"
|
305
314
|
:x="props.itemInfo.actual_bound.x - offset + props.itemInfo.actual_bound.width / 2"
|
306
315
|
:y="
|
307
316
|
props.itemInfo.actual_bound.y -
|
@@ -319,6 +328,7 @@
|
|
319
328
|
:fill="fill"
|
320
329
|
:style="{ cursor: getCursor(180).cursor, 'vector-effect': 'non-scaling-stroke' }"
|
321
330
|
pointer-events="all"
|
331
|
+
v-show="canZoom"
|
322
332
|
:x="
|
323
333
|
props.itemInfo.actual_bound.x -
|
324
334
|
offset +
|
@@ -13,13 +13,13 @@
|
|
13
13
|
} from 'element-plus'
|
14
14
|
import 'element-plus/dist/index.css'
|
15
15
|
import 'animate.css'
|
16
|
-
import TopPanel from '@/components/svg-editor/top-panel
|
17
|
-
import LeftPanel from '@/components/svg-editor/left-panel
|
18
|
-
import CenterPanel from '@/components/svg-editor/center-panel
|
19
|
-
import RightPanel from '@/components/svg-editor/right-panel
|
20
|
-
import ExportJson from '@/components/svg-editor/export-json
|
21
|
-
import ImportJson from '@/components/svg-editor/import-json
|
22
|
-
import Vue3RulerTool from '@/components/vue3-ruler-tool
|
16
|
+
import TopPanel from '@/components/svg-editor/top-panel.vue'
|
17
|
+
import LeftPanel from '@/components/svg-editor/left-panel.vue'
|
18
|
+
import CenterPanel from '@/components/svg-editor/center-panel.vue'
|
19
|
+
import RightPanel from '@/components/svg-editor/right-panel.vue'
|
20
|
+
import ExportJson from '@/components/svg-editor/export-json.vue'
|
21
|
+
import ImportJson from '@/components/svg-editor/import-json.vue'
|
22
|
+
import Vue3RulerTool from '@/components/vue3-ruler-tool.vue'
|
23
23
|
import { EVisibleConfKey } from '@/components/svg-editor/types'
|
24
24
|
import type { IVisibleConf, IDataModel } from '@/components/svg-editor/types'
|
25
25
|
import type { IConfig } from '@/config/types'
|
@@ -33,6 +33,7 @@
|
|
33
33
|
import { fileRead, fileWrite } from '@/utils/file-read-write'
|
34
34
|
import { useEditPrivateStore } from '@/stores/system'
|
35
35
|
|
36
|
+
//todo 优化自带组件使用体验
|
36
37
|
const props = withDefaults(defineProps<{ customToolbar?: IConfig; data?: string; saveFile?: boolean }>(), {
|
37
38
|
saveFile: false
|
38
39
|
})
|
@@ -4,7 +4,7 @@
|
|
4
4
|
import type { IConfig, IConfigItem } from '@/config/types'
|
5
5
|
import { pinia } from '@/hooks'
|
6
6
|
import { useGlobalStore } from '@/stores/global'
|
7
|
-
import SvgAnalysis from '@/components/svg-analysis
|
7
|
+
import SvgAnalysis from '@/components/svg-analysis.vue'
|
8
8
|
import { EGlobalStoreIntention } from '@/stores/global/types'
|
9
9
|
import { prosToVBind } from '@/utils'
|
10
10
|
|
@@ -53,7 +53,7 @@
|
|
53
53
|
:title="svg_item.title"
|
54
54
|
>
|
55
55
|
<el-icon :size="35" class="flex items-center">
|
56
|
-
<svg-analysis :name="svg_item.name" :props="prosToVBind(svg_item)" />
|
56
|
+
<svg-analysis :name="svg_item.name" :props="prosToVBind(svg_item, ['width', 'height', 'maxHeight'])" />
|
57
57
|
</el-icon>
|
58
58
|
</div>
|
59
59
|
</div>
|
@@ -9,7 +9,7 @@
|
|
9
9
|
title: '编辑'
|
10
10
|
})
|
11
11
|
const open = ref(false)
|
12
|
-
const emits = defineEmits(['update:modelValue'])
|
12
|
+
const emits = defineEmits(['update:modelValue', 'close'])
|
13
13
|
|
14
14
|
const content = computed({
|
15
15
|
get() {
|
@@ -31,7 +31,7 @@
|
|
31
31
|
<template>
|
32
32
|
<div>
|
33
33
|
<el-button @click="open = true">···</el-button>
|
34
|
-
<el-dialog class="modal-full" v-model="open" :title="props.title" width="60%">
|
34
|
+
<el-dialog class="modal-full" v-model="open" :title="props.title" width="60%" @close="emits('close')">
|
35
35
|
<v-ace-editor
|
36
36
|
v-model:value="content"
|
37
37
|
:lang="props.lang"
|
@@ -1,7 +1,7 @@
|
|
1
1
|
<script setup lang="ts">
|
2
2
|
import { ElTag, ElDrawer, ElTabs, ElTabPane, ElScrollbar, ElIcon } from 'element-plus'
|
3
3
|
import { common_animate_list } from '@/components/config'
|
4
|
-
import SvgAnalysis from '@/components/svg-analysis
|
4
|
+
import SvgAnalysis from '@/components/svg-analysis.vue'
|
5
5
|
|
6
6
|
const props = defineProps<{ val: string }>()
|
7
7
|
const emits = defineEmits(['updateCommonAniVal'])
|
@@ -14,15 +14,25 @@
|
|
14
14
|
import { getStringWidth } from '@/utils'
|
15
15
|
import CodeEditModal from '@/components/svg-editor/right-panel/code-edit-modal.vue'
|
16
16
|
|
17
|
+
const emit = defineEmits(['change'])
|
17
18
|
const props = withDefaults(defineProps<{ objInfo?: IConfigItemProps; hide?: string[]; code?: boolean }>(), {
|
18
19
|
objInfo: () => ({}),
|
19
20
|
hide: () => [],
|
20
21
|
code: false
|
21
22
|
})
|
23
|
+
|
24
|
+
function propsChangeHandle(e: any) {
|
25
|
+
let t: any = window.setTimeout(function () {
|
26
|
+
emit('change', e)
|
27
|
+
clearTimeout(t)
|
28
|
+
t = null
|
29
|
+
}, 200)
|
30
|
+
}
|
22
31
|
</script>
|
23
32
|
|
24
33
|
<template>
|
25
34
|
<div v-for="(attr_item, key) in props.objInfo" :key="key">
|
35
|
+
<!--表单项上显示的灰色值-->
|
26
36
|
<el-form-item v-if="props.code" class="props-row" size="small">
|
27
37
|
<template #label>
|
28
38
|
<el-tooltip
|
@@ -45,6 +55,7 @@
|
|
45
55
|
</el-tooltip>
|
46
56
|
<span v-else>{{ attr_item.val }}</span>
|
47
57
|
</el-form-item>
|
58
|
+
<!--props-->
|
48
59
|
<el-form-item :label="attr_item.title" size="small" v-if="props.hide.indexOf(String(key)) < 0">
|
49
60
|
<el-select
|
50
61
|
v-if="attr_item.type === EConfigItemPropsType.Select"
|
@@ -52,6 +63,7 @@
|
|
52
63
|
placeholder="Select"
|
53
64
|
size="small"
|
54
65
|
:disabled="Boolean(attr_item?.disabled)"
|
66
|
+
@change="propsChangeHandle"
|
55
67
|
>
|
56
68
|
<el-option v-for="item in attr_item.options" :key="item.value" :label="item.label" :value="item.value" />
|
57
69
|
</el-select>
|
@@ -59,11 +71,13 @@
|
|
59
71
|
v-else-if="attr_item.type === EConfigItemPropsType.InputNumber"
|
60
72
|
v-model="attr_item.val"
|
61
73
|
:disabled="Boolean(attr_item?.disabled)"
|
74
|
+
@change="propsChangeHandle"
|
62
75
|
/>
|
63
76
|
<el-input
|
64
77
|
v-else-if="attr_item.type === EConfigItemPropsType.Input"
|
65
78
|
v-model="attr_item.val"
|
66
79
|
:disabled="Boolean(attr_item?.disabled)"
|
80
|
+
@change="propsChangeHandle"
|
67
81
|
/>
|
68
82
|
<el-input
|
69
83
|
v-else-if="attr_item.type === EConfigItemPropsType.Textarea"
|
@@ -71,21 +85,25 @@
|
|
71
85
|
autosize
|
72
86
|
type="textarea"
|
73
87
|
:disabled="Boolean(attr_item?.disabled)"
|
88
|
+
@change="propsChangeHandle"
|
74
89
|
/>
|
75
90
|
<el-color-picker
|
76
91
|
v-else-if="attr_item.type === EConfigItemPropsType.Color"
|
77
92
|
v-model="attr_item.val"
|
78
93
|
:disabled="Boolean(attr_item?.disabled)"
|
94
|
+
@change="propsChangeHandle"
|
79
95
|
/>
|
80
96
|
<el-switch
|
81
97
|
v-else-if="attr_item.type === EConfigItemPropsType.Switch"
|
82
98
|
v-model="attr_item.val"
|
83
99
|
:disabled="Boolean(attr_item?.disabled)"
|
100
|
+
@change="propsChangeHandle"
|
84
101
|
/>
|
85
102
|
<code-edit-modal
|
86
103
|
v-else-if="attr_item.type === EConfigItemPropsType.JsonEdit"
|
87
104
|
v-model="attr_item.val"
|
88
105
|
:disabled="Boolean(attr_item?.disabled)"
|
106
|
+
@close="propsChangeHandle"
|
89
107
|
/>
|
90
108
|
</el-form-item>
|
91
109
|
</div>
|
@@ -101,4 +119,8 @@
|
|
101
119
|
.props-popper {
|
102
120
|
max-width: 350px;
|
103
121
|
}
|
122
|
+
sdf {
|
123
|
+
color: rgb(245, 247, 250);
|
124
|
+
background-color: rgb(92, 184, 122);
|
125
|
+
}
|
104
126
|
</style>
|
@@ -1,7 +1,7 @@
|
|
1
1
|
<script setup lang="ts">
|
2
2
|
import type { IAttrItem } from '@/config/types'
|
3
3
|
import { ElIcon, ElInput } from 'element-plus'
|
4
|
-
import SvgAnalysis from '@/components/svg-analysis
|
4
|
+
import SvgAnalysis from '@/components/svg-analysis.vue'
|
5
5
|
|
6
6
|
const props = withDefaults(defineProps<{ modelValue: IAttrItem[] }>(), {
|
7
7
|
modelValue: () => [
|
@@ -22,10 +22,10 @@
|
|
22
22
|
import { moveAnchors, numberArray, setSvgActualInfo } from '@/utils'
|
23
23
|
import type { IDoneJson } from '@/stores/global/types'
|
24
24
|
import { EGlobalStoreIntention } from '@/stores/global/types'
|
25
|
-
import DynamicElFormItem from './dynamic-el-form-item.vue'
|
26
|
-
import CommonAnimate from './common-animate.vue'
|
27
|
-
import ComponentTree from '@/components/svg-editor/component-tree
|
28
|
-
import SvgAnalysis from '@/components/svg-analysis
|
25
|
+
import DynamicElFormItem from './right-panel/dynamic-el-form-item.vue'
|
26
|
+
import CommonAnimate from './right-panel/common-animate.vue'
|
27
|
+
import ComponentTree from '@/components/svg-editor/component-tree.vue'
|
28
|
+
import SvgAnalysis from '@/components/svg-analysis.vue'
|
29
29
|
import List from '@/components/svg-editor/right-panel/list.vue'
|
30
30
|
import Condition from '@/components/svg-editor/right-panel/condition.vue'
|
31
31
|
import CodeEditModal from '@/components/svg-editor/right-panel/code-edit-modal.vue'
|
@@ -92,14 +92,24 @@
|
|
92
92
|
}
|
93
93
|
}
|
94
94
|
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
95
|
+
/**
|
96
|
+
* 右侧属性更改,改变画布中对应组件
|
97
|
+
* @param cur 当前值
|
98
|
+
* @param pre 之前的值
|
99
|
+
* @param resize 是否重新获取边框大小
|
100
|
+
*/
|
101
|
+
const changHandle = (cur: any, pre: any, resize?: boolean) => {
|
102
|
+
nextTick(function () {
|
103
|
+
if (globalStore.handle_svg_info) {
|
104
|
+
const done_json = globalStore.done_json[globalStore.handle_svg_info.index]
|
105
|
+
if (resize) {
|
106
|
+
setSvgActualInfo(done_json, resize)
|
107
|
+
} else {
|
108
|
+
setSvgActualInfo(done_json)
|
109
|
+
}
|
100
110
|
moveAnchors(done_json)
|
101
|
-
}
|
102
|
-
}
|
111
|
+
}
|
112
|
+
})
|
103
113
|
}
|
104
114
|
</script>
|
105
115
|
|
@@ -199,10 +209,10 @@
|
|
199
209
|
<el-form-item label="Y坐标" size="small">
|
200
210
|
<el-input-number v-model="globalStore.handle_svg_info!.info.y" @change="changHandle" />
|
201
211
|
</el-form-item>
|
202
|
-
<el-form-item label="X缩放" size="small">
|
212
|
+
<el-form-item label="X缩放" size="small" v-show="globalStore.handle_svg_info?.info?.config.can_zoom">
|
203
213
|
<el-input-number v-model="globalStore.handle_svg_info!.info.scale_x" @change="changHandle" />
|
204
214
|
</el-form-item>
|
205
|
-
<el-form-item label="Y缩放" size="small">
|
215
|
+
<el-form-item label="Y缩放" size="small" v-show="globalStore.handle_svg_info?.info?.config.can_zoom">
|
206
216
|
<el-input-number v-model="globalStore.handle_svg_info!.info.scale_y" @change="changHandle" />
|
207
217
|
</el-form-item>
|
208
218
|
<el-form-item label="旋转" size="small">
|
@@ -215,34 +225,40 @@
|
|
215
225
|
</el-tab-pane>
|
216
226
|
<el-tab-pane label="数据" name="data">
|
217
227
|
<el-form label-width="90px" label-position="left">
|
228
|
+
<!--ID-->
|
218
229
|
<el-form-item label="ID" size="small">
|
219
230
|
<el-input v-model="globalStore.handle_svg_info!.info.id" />
|
220
231
|
</el-form-item>
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
>
|
226
|
-
<el-
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
-
|
232
|
+
<!--state-->
|
233
|
+
<el-form-item class="props-row" label="state" size="small" v-if="globalStore.handle_svg_info?.info?.state">
|
234
|
+
{{ globalStore.handle_svg_info!.info!.defaultState }}
|
235
|
+
</el-form-item>
|
236
|
+
<el-form-item v-if="globalStore.handle_svg_info?.info?.state" label="状态" size="small">
|
237
|
+
<el-select v-model="globalStore.handle_svg_info!.info!.defaultState" placeholder="Select" size="small">
|
238
|
+
<el-option
|
239
|
+
v-for="(e, k) of globalStore.handle_svg_info!.info.state"
|
240
|
+
:key="'state' + String(k)"
|
241
|
+
:label="e.label"
|
242
|
+
:value="k"
|
243
|
+
/>
|
244
|
+
</el-select>
|
245
|
+
</el-form-item>
|
246
|
+
<!--文字插槽-->
|
237
247
|
<div v-if="globalStore.handle_svg_info!.info?.hasOwnProperty('tag_slot')">
|
238
248
|
<el-form-item class="props-row" label="tag_slot" size="small">
|
239
249
|
{{ globalStore.handle_svg_info!.info.tag_slot }}
|
240
250
|
</el-form-item>
|
241
251
|
<el-form-item label="文字插槽" size="small">
|
242
|
-
<el-input v-model="globalStore.handle_svg_info!.info.tag_slot" />
|
252
|
+
<el-input v-model="globalStore.handle_svg_info!.info.tag_slot" @input="changHandle($event, null, true)" />
|
243
253
|
</el-form-item>
|
244
254
|
</div>
|
245
|
-
|
255
|
+
<!--props-->
|
256
|
+
<dynamic-el-form-item
|
257
|
+
:obj-info="globalStore.handle_svg_info!.info.props"
|
258
|
+
code
|
259
|
+
@change="changHandle($event, null, true)"
|
260
|
+
/>
|
261
|
+
<!--连线动画效果-->
|
246
262
|
<el-form-item
|
247
263
|
:label="globalStore.handle_svg_info!.info.animations.type.title"
|
248
264
|
size="small"
|
@@ -4,10 +4,10 @@
|
|
4
4
|
import { useGlobalStore } from '@/stores/global'
|
5
5
|
import { useEditPrivateStore } from '@/stores/system'
|
6
6
|
import { ElIcon, ElDivider, ElDialog, ElScrollbar } from 'element-plus'
|
7
|
-
import SvgAnalysis from '
|
7
|
+
import SvgAnalysis from '../svg-analysis.vue'
|
8
8
|
import { useSvgEditLayoutStore } from '@/stores/svg-edit-layout'
|
9
|
-
import { EVisibleConfKey } from '
|
10
|
-
import type { IDataModel } from '
|
9
|
+
import { EVisibleConfKey } from './types'
|
10
|
+
import type { IDataModel } from './types'
|
11
11
|
import { EGlobalStoreIntention } from '@/stores/global/types'
|
12
12
|
|
13
13
|
const svgEditLayoutStore = useSvgEditLayoutStore(pinia)
|
@@ -167,6 +167,14 @@
|
|
167
167
|
<div class="font-bold mb-10px text-15px guide-title">标尺辅助线</div>
|
168
168
|
<div>在标尺区域按住鼠标左键并拖动即可创建标尺辅助线,将标尺辅助线拖动到标尺区域即可删除标尺辅助线</div>
|
169
169
|
<div class="el-divider el-divider--horizontal" role="separator" style="--el-border-style: solid"></div>
|
170
|
+
<div class="font-bold mb-10px text-15px guide-title">组件尺寸</div>
|
171
|
+
<div
|
172
|
+
><p>
|
173
|
+
大多数组件可以通过选中组件然后拖动交互点或在右侧‘外观’栏改变外形尺寸,或通过右侧‘数据’栏直接或间接改变外形尺寸;</p
|
174
|
+
>
|
175
|
+
<p>少数特殊组件仅可通过右侧'数据'栏直接或间接改变外形尺寸</p></div
|
176
|
+
>
|
177
|
+
<div class="el-divider el-divider--horizontal" role="separator" style="--el-border-style: solid"></div>
|
170
178
|
<div class="font-bold mb-10px text-15px guide-title">连线样式</div>
|
171
179
|
<div
|
172
180
|
>在右侧‘连线’栏可以统一配置连线样式,配置后先增加的线会应用新样式,之前的线样式不变,如需改变,可选中线手动更改或删除重画
|
@@ -6,7 +6,7 @@
|
|
6
6
|
import { getCommonClass, prosToVBind, setArrItemByID, valFormat } from '@/utils'
|
7
7
|
|
8
8
|
import { EDoneJsonType, EEventAction, EEventType } from '@/config/types'
|
9
|
-
import ConnectionLine from '@/components/svg-editor/connection-line
|
9
|
+
import ConnectionLine from '@/components/svg-editor/connection-line.vue'
|
10
10
|
|
11
11
|
import { vueComp } from '@/config'
|
12
12
|
import type { IDataModel } from '@/components/svg-editor/types'
|
@@ -151,10 +151,10 @@
|
|
151
151
|
}
|
152
152
|
return { cursor: t ? 'pointer' : 'default' }
|
153
153
|
}
|
154
|
-
const eventHandle = (root: IDoneJson) => {
|
154
|
+
const eventHandle = (root: IDoneJson, type: EEventType) => {
|
155
155
|
if (root.events?.length > 0) {
|
156
156
|
for (let e of root.events) {
|
157
|
-
if (e.type ===
|
157
|
+
if (e.type === type) {
|
158
158
|
if (e.condition && e.condition.type !== 'None') {
|
159
159
|
if (e.condition.type === 'Relation' && e.condition.Relation && e.condition.Relation.relation) {
|
160
160
|
const k = e.condition.Relation.key
|
@@ -189,8 +189,8 @@
|
|
189
189
|
}
|
190
190
|
|
191
191
|
for (let a of e.attrs) {
|
192
|
-
if (
|
193
|
-
t.
|
192
|
+
if (a.key === 'state') {
|
193
|
+
t.defaultState = valFormat(a.val)
|
194
194
|
} else if (t.props.hasOwnProperty(a.key)) {
|
195
195
|
t.props[a.key].val = valFormat(a.val)
|
196
196
|
}
|
@@ -276,7 +276,7 @@
|
|
276
276
|
:transform="`translate(${item.x},${item.y})rotate(0)scale(1)`"
|
277
277
|
v-show="item.display"
|
278
278
|
:style="getStyle(item)"
|
279
|
-
@click="eventHandle(item)"
|
279
|
+
@click="eventHandle(item, EEventType.Click)"
|
280
280
|
>
|
281
281
|
<g :class="`${getCommonClass(item)}`">
|
282
282
|
<g
|
@@ -309,7 +309,7 @@
|
|
309
309
|
width="100"
|
310
310
|
height="100"
|
311
311
|
:id="item.id"
|
312
|
-
@on-change="eventHandle(item)"
|
312
|
+
@on-change="eventHandle(item, EEventType.Change)"
|
313
313
|
:transform="`translate(${item.actual_bound.x + item.actual_bound.width / 2},${
|
314
314
|
item.actual_bound.y + item.actual_bound.height / 2
|
315
315
|
}) scale(${item.scale_x},${item.scale_y}) translate(${-(
|
@@ -326,7 +326,7 @@
|
|
326
326
|
:is="item.tag"
|
327
327
|
v-bind="prosToVBind(item)"
|
328
328
|
:id="item.id"
|
329
|
-
@on-change="eventHandle(item)"
|
329
|
+
@on-change="eventHandle(item, EEventType.Change)"
|
330
330
|
:transform="`translate(${item.actual_bound.x + item.actual_bound.width / 2},${
|
331
331
|
item.actual_bound.y + item.actual_bound.height / 2
|
332
332
|
}) scale(${item.scale_x},${item.scale_y}) translate(${-(
|
@@ -1,48 +1,48 @@
|
|
1
|
-
<
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
}
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
</
|
48
|
-
|
1
|
+
<script setup lang="ts">
|
2
|
+
import { ElTable, ElTableColumn } from 'element-plus'
|
3
|
+
|
4
|
+
const props = withDefaults(
|
5
|
+
defineProps<{
|
6
|
+
colConfig: ICol[]
|
7
|
+
data: any[]
|
8
|
+
height?: number
|
9
|
+
maxHeight?: number
|
10
|
+
stripe?: boolean
|
11
|
+
border?: boolean
|
12
|
+
size?: string
|
13
|
+
fit?: boolean
|
14
|
+
operateDisplay?: boolean
|
15
|
+
selectionData?: any[]
|
16
|
+
}>(),
|
17
|
+
{
|
18
|
+
colConfig: () => [],
|
19
|
+
data: () => [],
|
20
|
+
height: 200,
|
21
|
+
stripe: false,
|
22
|
+
border: false,
|
23
|
+
fit: false,
|
24
|
+
operateDisplay: false,
|
25
|
+
selectionData: () => []
|
26
|
+
}
|
27
|
+
)
|
28
|
+
const table_props = ref({})
|
29
|
+
watchEffect(() => {
|
30
|
+
const { colConfig, ...temp_props } = props
|
31
|
+
table_props.value = temp_props
|
32
|
+
})
|
33
|
+
|
34
|
+
interface ICol {
|
35
|
+
prop: string
|
36
|
+
label: string
|
37
|
+
width: string
|
38
|
+
fixed: string | boolean
|
39
|
+
sortable: boolean
|
40
|
+
'show-overflow-tooltip': boolean
|
41
|
+
}
|
42
|
+
</script>
|
43
|
+
|
44
|
+
<template>
|
45
|
+
<el-table v-bind="table_props">
|
46
|
+
<el-table-column v-for="item in props.colConfig" :key="item.prop" v-bind="item"></el-table-column>
|
47
|
+
</el-table>
|
48
|
+
</template>
|