You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
278 lines
6.5 KiB
Vue
278 lines
6.5 KiB
Vue
<script setup lang="ts">
|
|
import { WebtopoSvgEdit } from 'webtopo-svg-edit';
|
|
import 'webtopo-svg-edit/dist/style.css';
|
|
import { ref } from 'vue';
|
|
const setCustomToolBar = ref({
|
|
测试注入组件: [
|
|
{
|
|
groupType: 'element-ui',
|
|
title: 'element-ui',
|
|
list: [
|
|
{
|
|
name: 'el-button',
|
|
tag: 'el-button',
|
|
title: '按钮',
|
|
type: 'Vue',
|
|
config: {
|
|
can_zoom: true,
|
|
have_anchor: true,
|
|
actual_rect: true
|
|
},
|
|
display: true,
|
|
props: {
|
|
size: {
|
|
title: '尺寸',
|
|
type: 'Select',
|
|
val: 'default',
|
|
options: [
|
|
{
|
|
label: '大',
|
|
value: 'large'
|
|
},
|
|
{
|
|
label: '默认',
|
|
value: 'default'
|
|
},
|
|
{
|
|
label: '小',
|
|
value: 'small'
|
|
}
|
|
]
|
|
},
|
|
type: {
|
|
title: '类型',
|
|
type: 'Select',
|
|
val: 'primary',
|
|
options: [
|
|
{
|
|
label: '主要按钮',
|
|
value: 'primary'
|
|
},
|
|
{
|
|
label: '成功按钮',
|
|
value: 'success'
|
|
},
|
|
{
|
|
label: '警告按钮',
|
|
value: 'warning'
|
|
},
|
|
{
|
|
label: '危险按钮',
|
|
value: 'danger'
|
|
},
|
|
{
|
|
label: '信息按钮',
|
|
value: 'info'
|
|
}
|
|
]
|
|
},
|
|
plain: {
|
|
title: '朴素按钮',
|
|
type: 'Switch',
|
|
val: false
|
|
},
|
|
text: {
|
|
title: '文字按钮',
|
|
type: 'Switch',
|
|
val: false
|
|
}
|
|
},
|
|
tag_slot: '按钮'
|
|
}
|
|
]
|
|
},
|
|
{
|
|
groupType: 'custom-vue',
|
|
title: '自定义',
|
|
list: [
|
|
{
|
|
name: 'hello-world',
|
|
title: '自带组件',
|
|
tag: 'hello-world',
|
|
type: 'Vue',
|
|
config: {
|
|
can_zoom: true,
|
|
have_anchor: true,
|
|
actual_rect: true
|
|
},
|
|
display: true,
|
|
props: {
|
|
msg: {
|
|
title: 'msg',
|
|
type: 'Input',
|
|
val: '你好,咬轮猫'
|
|
}
|
|
}
|
|
}
|
|
]
|
|
}
|
|
]
|
|
});
|
|
const import_model = ref(
|
|
JSON.stringify({
|
|
layout_center: {
|
|
x: 0,
|
|
y: 0
|
|
},
|
|
config: {
|
|
background_color: '#fff',
|
|
scale: 1,
|
|
position_center: {
|
|
x: -295,
|
|
y: -95
|
|
},
|
|
svg_position_center: {
|
|
x: 50,
|
|
y: 50
|
|
}
|
|
},
|
|
done_json: [
|
|
{
|
|
id: 'el-buttonAfTY1bUEts',
|
|
x: 398,
|
|
y: 172,
|
|
client: {
|
|
x: 398,
|
|
y: 172
|
|
},
|
|
scale_x: 1,
|
|
scale_y: 1,
|
|
rotate: 0,
|
|
actual_bound: {
|
|
x: 20,
|
|
y: 34,
|
|
width: 60,
|
|
height: 32
|
|
},
|
|
point_coordinate: {
|
|
tl: {
|
|
x: 368,
|
|
y: 156
|
|
},
|
|
tc: {
|
|
x: 398,
|
|
y: 156
|
|
},
|
|
tr: {
|
|
x: 428,
|
|
y: 156
|
|
},
|
|
l: {
|
|
x: 368,
|
|
y: 172
|
|
},
|
|
r: {
|
|
x: 428,
|
|
y: 172
|
|
},
|
|
bl: {
|
|
x: 368,
|
|
y: 188
|
|
},
|
|
bc: {
|
|
x: 398,
|
|
y: 188
|
|
},
|
|
br: {
|
|
x: 428,
|
|
y: 188
|
|
}
|
|
},
|
|
name: 'el-button',
|
|
tag: 'el-button',
|
|
title: '按钮',
|
|
type: 'Vue',
|
|
config: {
|
|
can_zoom: true,
|
|
have_anchor: true,
|
|
actual_rect: true
|
|
},
|
|
display: true,
|
|
props: {
|
|
size: {
|
|
title: '尺寸',
|
|
type: 'Select',
|
|
val: 'default',
|
|
options: [
|
|
{
|
|
label: '大',
|
|
value: 'large'
|
|
},
|
|
{
|
|
label: '默认',
|
|
value: 'default'
|
|
},
|
|
{
|
|
label: '小',
|
|
value: 'small'
|
|
}
|
|
]
|
|
},
|
|
type: {
|
|
title: '类型',
|
|
type: 'Select',
|
|
val: 'primary',
|
|
options: [
|
|
{
|
|
label: '主要按钮',
|
|
value: 'primary'
|
|
},
|
|
{
|
|
label: '成功按钮',
|
|
value: 'success'
|
|
},
|
|
{
|
|
label: '警告按钮',
|
|
value: 'warning'
|
|
},
|
|
{
|
|
label: '危险按钮',
|
|
value: 'danger'
|
|
},
|
|
{
|
|
label: '信息按钮',
|
|
value: 'info'
|
|
}
|
|
]
|
|
},
|
|
plain: {
|
|
title: '朴素按钮',
|
|
type: 'Switch',
|
|
val: false
|
|
},
|
|
text: {
|
|
title: '文字按钮',
|
|
type: 'Switch',
|
|
val: false
|
|
}
|
|
},
|
|
tag_slot: '按钮'
|
|
}
|
|
]
|
|
})
|
|
);
|
|
const onReturn = () => {
|
|
console.log('点击了返回按钮');
|
|
};
|
|
const onPreview = (data_model: any) => {
|
|
console.log('点击了预览按钮,可以在此处跳转到预览页', data_model);
|
|
};
|
|
const onSave = (data_model: any) => {
|
|
console.log('点击了保存按钮,可以在此处将图存到数据库', data_model);
|
|
};
|
|
</script>
|
|
|
|
<template>
|
|
<div>
|
|
<webtopo-svg-edit
|
|
@on-return="onReturn"
|
|
@on-preview="onPreview"
|
|
@on-save="onSave"
|
|
:custom-tool-bar="setCustomToolBar"
|
|
:data-model="import_model"
|
|
></webtopo-svg-edit>
|
|
</div>
|
|
</template>
|
|
|
|
<style scoped></style>
|