|
|
|
@ -225,102 +225,133 @@
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="rightPanel">
|
|
|
|
|
<el-form :model="nodeAttrForm" label-width="auto" style="max-width: 600px" v-if="nodeAttrForm">
|
|
|
|
|
<el-form-item label="默认内容" v-if="Object.keys(nodeAttrForm).includes('defaultInput')">
|
|
|
|
|
<el-input v-model="nodeAttrForm.defaultInput" style="width: 100%" />
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="默认日期" v-if="Object.keys(nodeAttrForm).includes('defaultTime')">
|
|
|
|
|
<el-date-picker
|
|
|
|
|
v-model="nodeAttrForm.defaultTime"
|
|
|
|
|
type="datetimerange"
|
|
|
|
|
range-separator="到"
|
|
|
|
|
start-placeholder="开始时间"
|
|
|
|
|
end-placeholder="结束时间"
|
|
|
|
|
style="width: 100%;height: 100%"
|
|
|
|
|
:value-format="nodeAttrForm?.format||'YYYY/MM/DD HH:mm:ss'"
|
|
|
|
|
:format="nodeAttrForm?.format||'YYYY/MM/DD HH:mm:ss'"
|
|
|
|
|
/>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="日期格式" v-if="Object.keys(nodeAttrForm).includes('format')">
|
|
|
|
|
<el-input v-model="nodeAttrForm.format" style="width: 100%" />
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="输出字段名" v-if="Object.keys(nodeAttrForm).includes('field')">
|
|
|
|
|
<el-input v-model="nodeAttrForm.field" />
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="开始时间字段名" v-if="Object.keys(nodeAttrForm).includes('startTimeId')">
|
|
|
|
|
<el-input v-model="nodeAttrForm.startTimeId" />
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="结束时间字段名" v-if="Object.keys(nodeAttrForm).includes('endTimeId')">
|
|
|
|
|
<el-input v-model="nodeAttrForm.endTimeId" />
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="数据映射" v-if="Object.keys(nodeAttrForm).includes('dataMap')">
|
|
|
|
|
<el-table :data="nodeAttrForm.dataMap" style="width: 100%">
|
|
|
|
|
<el-table-column label="源字段" min-width="120">
|
|
|
|
|
<template #default="scope">
|
|
|
|
|
<el-input v-model="scope.row.source" style="width: 100%" />
|
|
|
|
|
</template>
|
|
|
|
|
</el-table-column>
|
|
|
|
|
<el-table-column label="映射字段" min-width="120">
|
|
|
|
|
<template #default="scope">
|
|
|
|
|
<el-input v-model="scope.row.target" style="width: 100%" />
|
|
|
|
|
</template>
|
|
|
|
|
</el-table-column>
|
|
|
|
|
<el-table-column label="操作" min-width="120">
|
|
|
|
|
<template #default="scope">
|
|
|
|
|
<el-button link type="primary" size="small" @click="nodeAttrForm.dataMap.splice(scope.$index, 1)">
|
|
|
|
|
删除
|
|
|
|
|
</el-button>
|
|
|
|
|
</template>
|
|
|
|
|
</el-table-column>
|
|
|
|
|
</el-table>
|
|
|
|
|
<el-button style="width: 100%" @click="nodeAttrForm.dataMap.push({})">
|
|
|
|
|
添加映射
|
|
|
|
|
</el-button>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="内容" v-if="Object.keys(nodeAttrForm).includes('text')">
|
|
|
|
|
<el-input v-model="nodeAttrForm.text" style="width: 100%" />
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="对齐方式" v-if="Object.keys(nodeAttrForm).includes('align')">
|
|
|
|
|
<el-select
|
|
|
|
|
v-model="nodeAttrForm.align"
|
|
|
|
|
placeholder="Select"
|
|
|
|
|
style="width: 100%"
|
|
|
|
|
>
|
|
|
|
|
<el-option
|
|
|
|
|
label="左对齐"
|
|
|
|
|
value="left"
|
|
|
|
|
/>
|
|
|
|
|
<el-option
|
|
|
|
|
label="居中对齐"
|
|
|
|
|
value="center"
|
|
|
|
|
/>
|
|
|
|
|
<el-option
|
|
|
|
|
label="右对齐"
|
|
|
|
|
value="right"
|
|
|
|
|
/>
|
|
|
|
|
</el-select>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="文字颜色" v-if="Object.keys(nodeAttrForm).includes('color')">
|
|
|
|
|
<el-color-picker v-model="nodeAttrForm.color" show-alpha />
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="图片路径" v-if="Object.keys(nodeAttrForm).includes('imgSrc')">
|
|
|
|
|
<el-input v-model="nodeAttrForm.imgSrc" style="width: 100%" />
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="标题" v-if="Object.keys(nodeAttrForm).includes('title')">
|
|
|
|
|
<el-input v-model="nodeAttrForm.title" style="width: 100%" />
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="数据名称" v-if="Object.keys(nodeAttrForm).includes('yNames')">
|
|
|
|
|
<el-input-tag v-model="nodeAttrForm.yNames" placeholder="回车确认" />
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="超时时间" v-if="Object.keys(nodeAttrForm).includes('timeout')">
|
|
|
|
|
<el-input-number
|
|
|
|
|
v-model="nodeAttrForm.timeout"
|
|
|
|
|
:min="1000"
|
|
|
|
|
:step="1000"
|
|
|
|
|
controls-position="right"
|
|
|
|
|
/>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</el-form>
|
|
|
|
|
<el-collapse>
|
|
|
|
|
<el-collapse-item title="基础设置" name="1" v-if="Object.keys(nodeDataForm).length>0">
|
|
|
|
|
<el-form :model="nodeDataForm" label-width="auto" style="max-width: 600px">
|
|
|
|
|
<el-form-item label="x">
|
|
|
|
|
<el-input-number :precision="0" :step="1" v-model="nodeDataForm.position.x" style="width: 100%"
|
|
|
|
|
@change="updateNode(nodeAttrForm.id,nodeAttrForm,{ replace: true })" />
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="y">
|
|
|
|
|
<el-input-number :precision="0" :step="1" v-model="nodeDataForm.position.y" style="width: 100%"
|
|
|
|
|
@change="updateNode(nodeAttrForm.id,nodeAttrForm,{ replace: true })" />
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="宽度">
|
|
|
|
|
<el-input-number :precision="0" :step="1" v-model="nodeDataForm.dimensions.width" style="width: 100%"
|
|
|
|
|
@change="updateNode(nodeAttrForm.id,nodeAttrForm,{ replace: true })" />
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="高度">
|
|
|
|
|
<el-input-number :precision="0" :step="1" v-model="nodeDataForm.dimensions.height" style="width: 100%"
|
|
|
|
|
@change="updateNode(nodeAttrForm.id,nodeAttrForm,{ replace: true })" />
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</el-form>
|
|
|
|
|
</el-collapse-item>
|
|
|
|
|
<el-collapse-item title="数据配置" name="2" v-if="Object.keys(nodeAttrForm).length>0">
|
|
|
|
|
<el-form :model="nodeAttrForm" label-width="auto" style="max-width: 600px">
|
|
|
|
|
<el-form-item label="默认内容" v-if="Object.keys(nodeAttrForm).includes('defaultInput')">
|
|
|
|
|
<el-input v-model="nodeAttrForm.defaultInput" style="width: 100%" />
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="默认日期" v-if="Object.keys(nodeAttrForm).includes('defaultTime')">
|
|
|
|
|
<el-date-picker
|
|
|
|
|
v-model="nodeAttrForm.defaultTime"
|
|
|
|
|
type="datetimerange"
|
|
|
|
|
range-separator="到"
|
|
|
|
|
start-placeholder="开始时间"
|
|
|
|
|
end-placeholder="结束时间"
|
|
|
|
|
style="width: 100%;height: 100%"
|
|
|
|
|
:value-format="nodeAttrForm?.format||'YYYY/MM/DD HH:mm:ss'"
|
|
|
|
|
:format="nodeAttrForm?.format||'YYYY/MM/DD HH:mm:ss'"
|
|
|
|
|
/>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="日期格式" v-if="Object.keys(nodeAttrForm).includes('format')">
|
|
|
|
|
<el-input v-model="nodeAttrForm.format" style="width: 100%" />
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="输出字段名" v-if="Object.keys(nodeAttrForm).includes('field')">
|
|
|
|
|
<el-input v-model="nodeAttrForm.field" />
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="开始时间字段名" v-if="Object.keys(nodeAttrForm).includes('startTimeId')">
|
|
|
|
|
<el-input v-model="nodeAttrForm.startTimeId" />
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="结束时间字段名" v-if="Object.keys(nodeAttrForm).includes('endTimeId')">
|
|
|
|
|
<el-input v-model="nodeAttrForm.endTimeId" />
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="数据映射" v-if="Object.keys(nodeAttrForm).includes('dataMap')">
|
|
|
|
|
<el-table :data="nodeAttrForm.dataMap" style="width: 100%">
|
|
|
|
|
<el-table-column label="源字段" min-width="120">
|
|
|
|
|
<template #default="scope">
|
|
|
|
|
<el-input v-model="scope.row.source" style="width: 100%" />
|
|
|
|
|
</template>
|
|
|
|
|
</el-table-column>
|
|
|
|
|
<el-table-column label="映射字段" min-width="120">
|
|
|
|
|
<template #default="scope">
|
|
|
|
|
<el-input v-model="scope.row.target" style="width: 100%" />
|
|
|
|
|
</template>
|
|
|
|
|
</el-table-column>
|
|
|
|
|
<el-table-column label="操作" min-width="120">
|
|
|
|
|
<template #default="scope">
|
|
|
|
|
<el-button link type="primary" size="small" @click="nodeAttrForm.dataMap.splice(scope.$index, 1)">
|
|
|
|
|
删除
|
|
|
|
|
</el-button>
|
|
|
|
|
</template>
|
|
|
|
|
</el-table-column>
|
|
|
|
|
</el-table>
|
|
|
|
|
<el-button style="width: 100%" @click="nodeAttrForm.dataMap.push({})">
|
|
|
|
|
添加映射
|
|
|
|
|
</el-button>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="内容" v-if="Object.keys(nodeAttrForm).includes('text')">
|
|
|
|
|
<el-input v-model="nodeAttrForm.text" style="width: 100%" />
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="对齐方式" v-if="Object.keys(nodeAttrForm).includes('align')">
|
|
|
|
|
<el-select
|
|
|
|
|
v-model="nodeAttrForm.align"
|
|
|
|
|
placeholder="Select"
|
|
|
|
|
style="width: 100%"
|
|
|
|
|
>
|
|
|
|
|
<el-option
|
|
|
|
|
label="左对齐"
|
|
|
|
|
value="left"
|
|
|
|
|
/>
|
|
|
|
|
<el-option
|
|
|
|
|
label="居中对齐"
|
|
|
|
|
value="center"
|
|
|
|
|
/>
|
|
|
|
|
<el-option
|
|
|
|
|
label="右对齐"
|
|
|
|
|
value="right"
|
|
|
|
|
/>
|
|
|
|
|
</el-select>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="文字颜色" v-if="Object.keys(nodeAttrForm).includes('color')">
|
|
|
|
|
<el-color-picker v-model="nodeAttrForm.color" show-alpha />
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="图片路径" v-if="Object.keys(nodeAttrForm).includes('imgSrc')">
|
|
|
|
|
<el-input v-model="nodeAttrForm.imgSrc" style="width: 100%" />
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="标题" v-if="Object.keys(nodeAttrForm).includes('title')">
|
|
|
|
|
<el-input v-model="nodeAttrForm.title" style="width: 100%" />
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="数据名称" v-if="Object.keys(nodeAttrForm).includes('yNames')">
|
|
|
|
|
<el-input-tag v-model="nodeAttrForm.yNames" placeholder="回车确认" />
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="超时时间" v-if="Object.keys(nodeAttrForm).includes('timeout')">
|
|
|
|
|
<el-input-number
|
|
|
|
|
v-model="nodeAttrForm.timeout"
|
|
|
|
|
:min="1000"
|
|
|
|
|
:step="1000"
|
|
|
|
|
controls-position="right"
|
|
|
|
|
/>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</el-form>
|
|
|
|
|
</el-collapse-item>
|
|
|
|
|
<el-collapse-item title="自定义配置" name="3" v-if="customDataForm">
|
|
|
|
|
<el-form :model="customDataForm" label-width="auto" style="max-width: 600px">
|
|
|
|
|
<el-form-item label="自定义内容">
|
|
|
|
|
<el-input type="textarea" v-model="customDataForm.option" style="width: 100%" />
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</el-form>
|
|
|
|
|
</el-collapse-item>
|
|
|
|
|
</el-collapse>
|
|
|
|
|
</div>
|
|
|
|
|
<el-dialog v-model="pageSettingVisible" title="页面设置" width="500">
|
|
|
|
|
<el-form :model="pageSettingForm">
|
|
|
|
@ -389,8 +420,10 @@ const { onDragStart, onDrop, onDragOver } = tool();
|
|
|
|
|
|
|
|
|
|
// flow内置方法
|
|
|
|
|
const {
|
|
|
|
|
addEdges
|
|
|
|
|
addEdges,
|
|
|
|
|
updateNode
|
|
|
|
|
} = useVueFlow();
|
|
|
|
|
console.log(updateNode);
|
|
|
|
|
|
|
|
|
|
const pageSettingVisible = ref(false);
|
|
|
|
|
const pageSettingForm = ref({});
|
|
|
|
@ -418,7 +451,9 @@ onMounted(async () => {
|
|
|
|
|
edges.value = JSON.parse(localStorage.getItem('EDGES') || '[]');
|
|
|
|
|
pageData.value = JSON.parse(localStorage.getItem('PAGEDATA'));
|
|
|
|
|
});
|
|
|
|
|
const customDataForm = ref({});
|
|
|
|
|
const nodeAttrForm = ref({});
|
|
|
|
|
const nodeDataForm = ref({});
|
|
|
|
|
const logEvent = async (eventname, event) => {
|
|
|
|
|
switch (eventname) {
|
|
|
|
|
case 'connect':
|
|
|
|
@ -437,15 +472,23 @@ const logEvent = async (eventname, event) => {
|
|
|
|
|
break;
|
|
|
|
|
case 'paneClick':
|
|
|
|
|
nodeAttrForm.value = {};
|
|
|
|
|
nodeDataForm.value = {};
|
|
|
|
|
customDataForm.value = {};
|
|
|
|
|
break;
|
|
|
|
|
case 'click':
|
|
|
|
|
nodeAttrForm.value = event.node.data.options;
|
|
|
|
|
nodeDataForm.value = event.node;
|
|
|
|
|
customDataForm.value = event.node.data.customData;
|
|
|
|
|
break;
|
|
|
|
|
case 'nodeDrag':
|
|
|
|
|
if (event.nodes.length === 1) {
|
|
|
|
|
nodeAttrForm.value = event.node.data.options;
|
|
|
|
|
nodeDataForm.value = event.node;
|
|
|
|
|
customDataForm.value = event.node.data.customData;
|
|
|
|
|
} else {
|
|
|
|
|
nodeAttrForm.value = {};
|
|
|
|
|
nodeDataForm.value = {};
|
|
|
|
|
customDataForm.value = {};
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case 'contextmenu':
|
|
|
|
|