|
|
|
@ -2,124 +2,129 @@
|
|
|
|
|
<div class="leftPanel">
|
|
|
|
|
<el-tabs v-model="leftPanelState" class="demo-tabs" type="border-card">
|
|
|
|
|
<el-tab-pane label="图表组件" name="1">
|
|
|
|
|
<el-card style="width: 80px" shadow="never" :draggable="true"
|
|
|
|
|
<el-card class="moduleCard" shadow="never" :draggable="true"
|
|
|
|
|
@dragstart="onDragStart($event, 'line')" :style="{display:'inline-block',margin:'0 4px 4px 0'}"
|
|
|
|
|
:body-style="{padding:'4px 0'}">
|
|
|
|
|
<template #header>
|
|
|
|
|
<StarFilled />
|
|
|
|
|
</template>
|
|
|
|
|
折线
|
|
|
|
|
<div class="moduleText">折线</div>
|
|
|
|
|
</el-card>
|
|
|
|
|
<el-card style="width: 80px" shadow="never" :draggable="true"
|
|
|
|
|
<el-card class="moduleCard" shadow="never" :draggable="true"
|
|
|
|
|
@dragstart="onDragStart($event, 'multiLines')" :style="{display:'inline-block',margin:'0 4px 4px 0'}"
|
|
|
|
|
:body-style="{padding:'4px 0'}">
|
|
|
|
|
<template #header>
|
|
|
|
|
<StarFilled />
|
|
|
|
|
</template>
|
|
|
|
|
多折线
|
|
|
|
|
<div class="moduleText">多折线</div>
|
|
|
|
|
</el-card>
|
|
|
|
|
<el-card style="width: 80px" shadow="never" :draggable="true"
|
|
|
|
|
<el-card class="moduleCard" shadow="never" :draggable="true"
|
|
|
|
|
@dragstart="onDragStart($event, 'curve')" :style="{display:'inline-block',margin:'0 4px 4px 0'}"
|
|
|
|
|
:body-style="{padding:'4px 0'}">
|
|
|
|
|
<template #header>
|
|
|
|
|
<StarFilled />
|
|
|
|
|
</template>
|
|
|
|
|
曲线
|
|
|
|
|
<div class="moduleText">曲线</div>
|
|
|
|
|
</el-card>
|
|
|
|
|
<el-card style="width: 80px" shadow="never" :draggable="true"
|
|
|
|
|
<el-card class="moduleCard" shadow="never" :draggable="true"
|
|
|
|
|
@dragstart="onDragStart($event, 'multiCurves')" :style="{display:'inline-block',margin:'0 4px 4px 0'}"
|
|
|
|
|
:body-style="{padding:'4px 0'}">
|
|
|
|
|
<template #header>
|
|
|
|
|
<StarFilled />
|
|
|
|
|
</template>
|
|
|
|
|
多曲线
|
|
|
|
|
<div class="moduleText">多曲线
|
|
|
|
|
</div>
|
|
|
|
|
</el-card>
|
|
|
|
|
<el-card style="width: 80px" shadow="never" :draggable="true"
|
|
|
|
|
<el-card class="moduleCard" shadow="never" :draggable="true"
|
|
|
|
|
@dragstart="onDragStart($event, 'bar')" :style="{display:'inline-block',margin:'0 4px 4px 0'}"
|
|
|
|
|
:body-style="{padding:'4px 0'}">
|
|
|
|
|
<template #header>
|
|
|
|
|
<StarFilled />
|
|
|
|
|
</template>
|
|
|
|
|
柱状图
|
|
|
|
|
<div class="moduleText">柱状图</div>
|
|
|
|
|
</el-card>
|
|
|
|
|
<el-card style="width: 80px" shadow="never" :draggable="true"
|
|
|
|
|
<el-card class="moduleCard" shadow="never" :draggable="true"
|
|
|
|
|
@dragstart="onDragStart($event, 'multiBars')" :style="{display:'inline-block',margin:'0 4px 4px 0'}"
|
|
|
|
|
:body-style="{padding:'4px 0'}">
|
|
|
|
|
<template #header>
|
|
|
|
|
<StarFilled />
|
|
|
|
|
</template>
|
|
|
|
|
多柱状图
|
|
|
|
|
<div class="moduleText">多柱状图
|
|
|
|
|
</div>
|
|
|
|
|
</el-card>
|
|
|
|
|
<el-card style="width: 80px" shadow="never" :draggable="true"
|
|
|
|
|
@dragstart="onDragStart($event, 'customBoard')" :style="{display:'inline-block',margin:'0 4px 4px 0'}"
|
|
|
|
|
<template v-for="i in customBoard">
|
|
|
|
|
<el-card class="moduleCard" shadow="never" :draggable="true"
|
|
|
|
|
@dragstart="onDragStart($event, 'customBoard',i)"
|
|
|
|
|
:style="{display:'inline-block',margin:'0 4px 4px 0'}"
|
|
|
|
|
:body-style="{padding:'4px 0'}">
|
|
|
|
|
<template #header>
|
|
|
|
|
<StarFilled />
|
|
|
|
|
</template>
|
|
|
|
|
自定义图表1
|
|
|
|
|
<div class="moduleText">{{ i.name }}</div>
|
|
|
|
|
</el-card>
|
|
|
|
|
</template>
|
|
|
|
|
</el-tab-pane>
|
|
|
|
|
<el-tab-pane label="数据源" name="2">
|
|
|
|
|
<el-card style="width: 80px" shadow="never" :draggable="true"
|
|
|
|
|
<el-card class="moduleCard" shadow="never" :draggable="true"
|
|
|
|
|
@dragstart="onDragStart($event, 'data')" :style="{display:'inline-block',margin:'0 4px 4px 0'}"
|
|
|
|
|
:body-style="{padding:'4px 0'}">
|
|
|
|
|
<template #header>
|
|
|
|
|
<StarFilled />
|
|
|
|
|
</template>
|
|
|
|
|
设备数据
|
|
|
|
|
<div class="moduleText">设备数据</div>
|
|
|
|
|
</el-card>
|
|
|
|
|
<template v-for="i in customData">
|
|
|
|
|
<el-card style="width: 80px" shadow="never" :draggable="true"
|
|
|
|
|
<el-card class="moduleCard" shadow="never" :draggable="true"
|
|
|
|
|
@dragstart="onDragStart($event, 'customData',i)"
|
|
|
|
|
:style="{display:'inline-block',margin:'0 4px 4px 0'}"
|
|
|
|
|
:body-style="{padding:'4px 0'}">
|
|
|
|
|
<template #header>
|
|
|
|
|
<StarFilled />
|
|
|
|
|
</template>
|
|
|
|
|
{{ i.name }}
|
|
|
|
|
<div class="moduleText">{{ i.name }}</div>
|
|
|
|
|
</el-card>
|
|
|
|
|
</template>
|
|
|
|
|
</el-tab-pane>
|
|
|
|
|
<el-tab-pane label="表单组件" name="3">
|
|
|
|
|
<el-card style="width: 80px" shadow="never" :draggable="true"
|
|
|
|
|
<el-card class="moduleCard" shadow="never" :draggable="true"
|
|
|
|
|
@dragstart="onDragStart($event, 'map')" :style="{display:'inline-block',margin:'0 4px 4px 0'}"
|
|
|
|
|
:body-style="{padding:'4px 0'}">
|
|
|
|
|
<template #header>
|
|
|
|
|
<StarFilled />
|
|
|
|
|
</template>
|
|
|
|
|
映射
|
|
|
|
|
<div class="moduleText">映射</div>
|
|
|
|
|
</el-card>
|
|
|
|
|
<el-card style="width: 80px" shadow="never" :draggable="true"
|
|
|
|
|
<el-card class="moduleCard" shadow="never" :draggable="true"
|
|
|
|
|
@dragstart="onDragStart($event, 'text')" :style="{display:'inline-block',margin:'0 4px 4px 0'}"
|
|
|
|
|
:body-style="{padding:'4px 0'}">
|
|
|
|
|
<template #header>
|
|
|
|
|
<StarFilled />
|
|
|
|
|
</template>
|
|
|
|
|
文字
|
|
|
|
|
<div class="moduleText">文字</div>
|
|
|
|
|
</el-card>
|
|
|
|
|
<el-card style="width: 80px" shadow="never" :draggable="true"
|
|
|
|
|
<el-card class="moduleCard" shadow="never" :draggable="true"
|
|
|
|
|
@dragstart="onDragStart($event, 'inputNode')" :style="{display:'inline-block',margin:'0 4px 4px 0'}"
|
|
|
|
|
:body-style="{padding:'4px 0'}">
|
|
|
|
|
<template #header>
|
|
|
|
|
<StarFilled />
|
|
|
|
|
</template>
|
|
|
|
|
输入框
|
|
|
|
|
<div class="moduleText">输入框</div>
|
|
|
|
|
</el-card>
|
|
|
|
|
<el-card style="width: 80px" shadow="never" :draggable="true"
|
|
|
|
|
<el-card class="moduleCard" shadow="never" :draggable="true"
|
|
|
|
|
@dragstart="onDragStart($event, 'time')" :style="{display:'inline-block',margin:'0 4px 4px 0'}"
|
|
|
|
|
:body-style="{padding:'4px 0'}">
|
|
|
|
|
<template #header>
|
|
|
|
|
<StarFilled />
|
|
|
|
|
</template>
|
|
|
|
|
时间
|
|
|
|
|
<div class="moduleText">时间</div>
|
|
|
|
|
</el-card>
|
|
|
|
|
<el-card style="width: 80px" shadow="never" :draggable="true"
|
|
|
|
|
<el-card class="moduleCard" shadow="never" :draggable="true"
|
|
|
|
|
@dragstart="onDragStart($event, 'img')" :style="{display:'inline-block',margin:'0 4px 4px 0'}"
|
|
|
|
|
:body-style="{padding:'4px 0'}">
|
|
|
|
|
<template #header>
|
|
|
|
|
<StarFilled />
|
|
|
|
|
</template>
|
|
|
|
|
图片
|
|
|
|
|
<div class="moduleText">图片</div>
|
|
|
|
|
</el-card>
|
|
|
|
|
</el-tab-pane>
|
|
|
|
|
</el-tabs>
|
|
|
|
@ -363,8 +368,10 @@ const nodes = ref([{
|
|
|
|
|
}]);
|
|
|
|
|
const edges = ref([]);
|
|
|
|
|
const customData = ref([]);
|
|
|
|
|
const customBoard = ref([]);
|
|
|
|
|
onMounted(async () => {
|
|
|
|
|
customData.value = JSON.parse(localStorage.getItem('DATANODE') || '[]');
|
|
|
|
|
customBoard.value = JSON.parse(localStorage.getItem('BOARDNODE') || '[]');
|
|
|
|
|
await nextTick();
|
|
|
|
|
nodes.value = reactive(JSON.parse(localStorage.getItem('NODES') || '[]'));
|
|
|
|
|
edges.value = JSON.parse(localStorage.getItem('EDGES') || '[]');
|
|
|
|
@ -496,6 +503,50 @@ const setPageData = () => {
|
|
|
|
|
pointer-events: none !important;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
:deep(.avatar-uploader) .el-upload {
|
|
|
|
|
border: 1px dashed var(--el-border-color);
|
|
|
|
|
border-radius: 6px;
|
|
|
|
|
cursor: pointer;
|
|
|
|
|
position: relative;
|
|
|
|
|
overflow: hidden;
|
|
|
|
|
transition: var(--el-transition-duration-fast);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
:deep(.avatar-uploader) .el-upload:hover {
|
|
|
|
|
border-color: var(--el-color-primary);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
:deep(.el-icon.avatar-uploader-icon) {
|
|
|
|
|
font-size: 28px;
|
|
|
|
|
color: #8c939d;
|
|
|
|
|
width: 178px;
|
|
|
|
|
height: 178px;
|
|
|
|
|
text-align: center;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.moduleCard {
|
|
|
|
|
width: 80px;
|
|
|
|
|
vertical-align: top;
|
|
|
|
|
|
|
|
|
|
:deep(.el-card__body) {
|
|
|
|
|
height: 40px;
|
|
|
|
|
padding: 0 !important;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.moduleText {
|
|
|
|
|
display: flex;
|
|
|
|
|
justify-content: center;
|
|
|
|
|
align-items: center;
|
|
|
|
|
height: 100%;
|
|
|
|
|
width: 100%;
|
|
|
|
|
text-align: center;
|
|
|
|
|
font-size: 12px;
|
|
|
|
|
-webkit-line-clamp: 2;
|
|
|
|
|
-webkit-box-orient: vertical;
|
|
|
|
|
overflow: hidden;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.leftPanel {
|
|
|
|
|
position: absolute;
|
|
|
|
|
top: 0;
|
|
|
|
@ -552,25 +603,4 @@ const setPageData = () => {
|
|
|
|
|
border-left: 1px solid #409EFF;
|
|
|
|
|
overflow: auto;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
:deep(.avatar-uploader) .el-upload {
|
|
|
|
|
border: 1px dashed var(--el-border-color);
|
|
|
|
|
border-radius: 6px;
|
|
|
|
|
cursor: pointer;
|
|
|
|
|
position: relative;
|
|
|
|
|
overflow: hidden;
|
|
|
|
|
transition: var(--el-transition-duration-fast);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
:deep(.avatar-uploader) .el-upload:hover {
|
|
|
|
|
border-color: var(--el-color-primary);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
:deep(.el-icon.avatar-uploader-icon) {
|
|
|
|
|
font-size: 28px;
|
|
|
|
|
color: #8c939d;
|
|
|
|
|
width: 178px;
|
|
|
|
|
height: 178px;
|
|
|
|
|
text-align: center;
|
|
|
|
|
}
|
|
|
|
|
</style>
|
|
|
|
|