|
|
|
@ -339,9 +339,15 @@
|
|
|
|
|
trigger="contextmenu"
|
|
|
|
|
@command="nodeOperate">
|
|
|
|
|
<div class="level" :class="{isSelect: i.selected}" @contextmenu.prevent @click="pitchOnNode(i)">
|
|
|
|
|
<div class="isShow">
|
|
|
|
|
<el-icon style="cursor: pointer" color="#fff" :size="16">
|
|
|
|
|
<View />
|
|
|
|
|
<!-- <div class="isShow">-->
|
|
|
|
|
<!-- <el-icon style="cursor: pointer" color="#fff" :size="16">-->
|
|
|
|
|
<!-- <View />-->
|
|
|
|
|
<!-- </el-icon>-->
|
|
|
|
|
<!-- </div>-->
|
|
|
|
|
<div class="isLock">
|
|
|
|
|
<el-icon style="cursor: pointer" color="#fff" :size="16" @click="i.data.isLock = !i.data.isLock">
|
|
|
|
|
<Unlock v-if="!i.data.isLock" />
|
|
|
|
|
<Lock v-if="i.data.isLock" />
|
|
|
|
|
</el-icon>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="icon">
|
|
|
|
@ -359,6 +365,7 @@
|
|
|
|
|
<template #dropdown>
|
|
|
|
|
<el-dropdown-menu>
|
|
|
|
|
<el-dropdown-item :command="{ type: 'toTop', node: i }">置顶</el-dropdown-item>
|
|
|
|
|
<el-dropdown-item :command="{ type: 'toBottom', node: i }">置底</el-dropdown-item>
|
|
|
|
|
<el-dropdown-item :command="{ type: 'moveUp', node: i }">上移一层</el-dropdown-item>
|
|
|
|
|
<el-dropdown-item :command="{ type: 'moveDown', node: i }">下移一层</el-dropdown-item>
|
|
|
|
|
<el-dropdown-item :command="{ type: 'copy', node: i }">复制</el-dropdown-item>
|
|
|
|
@ -771,7 +778,7 @@
|
|
|
|
|
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="图标路径" v-if="Object.keys(nodeAttrForm).includes('iconSrc')">
|
|
|
|
|
<el-input v-model="nodeAttrForm.imgSrc" style="width: 100%" />
|
|
|
|
|
<el-input v-model="nodeAttrForm.iconSrc" style="width: 100%" />
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="视频路径" v-if="Object.keys(nodeAttrForm).includes('videoSrc')">
|
|
|
|
|
<el-input v-model="nodeAttrForm.videoSrc" style="width: 100%" />
|
|
|
|
@ -1059,7 +1066,9 @@ import {
|
|
|
|
|
Plus,
|
|
|
|
|
Setting,
|
|
|
|
|
StarFilled,
|
|
|
|
|
Delete
|
|
|
|
|
Delete,
|
|
|
|
|
Unlock,
|
|
|
|
|
Lock
|
|
|
|
|
} from '@element-plus/icons-vue';
|
|
|
|
|
import * as icon from '@element-plus/icons-vue';
|
|
|
|
|
import { MarkerType, useVueFlow, VueFlow } from '@vue-flow/core';
|
|
|
|
@ -1311,7 +1320,7 @@ const save = () => {
|
|
|
|
|
customContent: JSON.stringify(pageSettingForm.value),
|
|
|
|
|
designPagePointList: nodes.value.map((e, index) => {
|
|
|
|
|
let data = {};
|
|
|
|
|
let savaField = ['customData', 'options'];
|
|
|
|
|
let savaField = ['customData', 'options', 'isLock'];
|
|
|
|
|
Object.keys(e.data).forEach((key) => {
|
|
|
|
|
if (savaField.includes(key)) {
|
|
|
|
|
data[key] = e.data[key];
|
|
|
|
@ -1429,6 +1438,9 @@ const nodeOperate = (data) => {
|
|
|
|
|
case 'toTop':
|
|
|
|
|
nodes.value = [...nodes.value.filter(e => e.id !== data.node.id), data.node];
|
|
|
|
|
break;
|
|
|
|
|
case 'toBottom':
|
|
|
|
|
nodes.value = [data.node, ...nodes.value.filter(e => e.id !== data.node.id)];
|
|
|
|
|
break;
|
|
|
|
|
case 'moveUp':
|
|
|
|
|
arr.splice(index, 1);
|
|
|
|
|
arr.splice(index + 1, 0, item);
|
|
|
|
|