项目分析设计新增复制功能
This commit is contained in:
parent
4b7966337a
commit
3d6d4d7d7d
@ -19,6 +19,9 @@ import insertCss from 'insert-css'
|
|||||||
import { updateProjects} from "@/api/business/project";
|
import { updateProjects} from "@/api/business/project";
|
||||||
import Createscenario from '@/views/component/scenario/createscenario.vue'
|
import Createscenario from '@/views/component/scenario/createscenario.vue'
|
||||||
import ScenarioModel from '@/views/component/scenario/index.vue'
|
import ScenarioModel from '@/views/component/scenario/index.vue'
|
||||||
|
import { addDevices } from "@/api/business/database/device";
|
||||||
|
import { saveOrUpdate} from "@/api/business/database/material";
|
||||||
|
|
||||||
import img1 from '@/assets/x6/1.png'
|
import img1 from '@/assets/x6/1.png'
|
||||||
import img2 from '@/assets/x6/2.png'
|
import img2 from '@/assets/x6/2.png'
|
||||||
import img3 from '@/assets/x6/3.png'
|
import img3 from '@/assets/x6/3.png'
|
||||||
@ -983,22 +986,27 @@ function deleteNode() { // 删除节点
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
const isCopy = ref(false)
|
||||||
|
const copyNodeInfo:any = ref(null)
|
||||||
function copyNode() { // 复制节点
|
function copyNode() { // 复制节点
|
||||||
if (selectedNode.value) {
|
if (selectedNode.value) {
|
||||||
try {
|
try {
|
||||||
// 获取当前节点的位置
|
// 获取当前节点的位置
|
||||||
const position = selectedNode.value.position()
|
const position = selectedNode.value.position()
|
||||||
// 创建新节点,使用节点的原始数据
|
// 创建新节点,使用节点的原始数据
|
||||||
const newNode = selectedNode.value.clone()
|
copyNodeInfo.value = selectedNode.value.clone()
|
||||||
// 设置新位置(偏移50px)
|
// 设置新位置(偏移50px)
|
||||||
newNode.position(position.x + 50, position.y + 50)
|
copyNodeInfo.value.position(position.x + 50, position.y + 50)
|
||||||
deviceTypetype.value = newNode.store.data.deviceInfo.type
|
// deviceTypetype.value = newNode.store.data.deviceInfo.type
|
||||||
// 添加到画布
|
// 添加到画布
|
||||||
graph.addNode(newNode)
|
// graph.addNode(newNode)
|
||||||
//
|
copyDeviceInfo.value = {
|
||||||
// :deviceId="nodeId" :projectInfo="projectInfo"
|
oldname: copyNodeInfo.value.store.data.deviceInfo.name,
|
||||||
// :deviceTypetype="deviceTypetype"
|
name:''
|
||||||
|
}
|
||||||
|
|
||||||
isMenuShow.value = false
|
isMenuShow.value = false
|
||||||
|
isCopy.value = true
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error('节点复制失败:', error)
|
console.error('节点复制失败:', error)
|
||||||
}
|
}
|
||||||
@ -1394,7 +1402,6 @@ function saveDesign() { // 保存设计
|
|||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
console.log(devices)
|
|
||||||
const topology = {
|
const topology = {
|
||||||
projectId: projectInfo.value.projectId,
|
projectId: projectInfo.value.projectId,
|
||||||
name: projectInfo.value.name,
|
name: projectInfo.value.name,
|
||||||
@ -1436,10 +1443,110 @@ const isBoundary = ref(false)
|
|||||||
const boundaryClick = () => {
|
const boundaryClick = () => {
|
||||||
isBoundary.value = !isBoundary.value
|
isBoundary.value = !isBoundary.value
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
const copyDeviceInfo:any = ref({})
|
||||||
|
function dialogCopy(){
|
||||||
|
isCopy.value = false
|
||||||
|
}
|
||||||
|
const loading = ref(false)
|
||||||
|
const confirmCopyClick = async ()=>{
|
||||||
|
|
||||||
|
if(copyDeviceInfo.value.name == ''){
|
||||||
|
ElMessage({
|
||||||
|
type: "warning",
|
||||||
|
message: "请输入新设备名称",
|
||||||
|
});
|
||||||
|
return
|
||||||
|
}
|
||||||
|
loading.value = true
|
||||||
|
copyNodeInfo.value.store.data.attrs.label.text = copyDeviceInfo.value.name
|
||||||
|
copyNodeInfo.value.store.data.deviceInfo.name = copyDeviceInfo.value.name
|
||||||
|
copyNodeInfo.value.store.data.deviceInfo.code = copyDeviceInfo.value.code + '-copy'
|
||||||
|
copyNodeInfo.value.store.data.deviceInfo.deviceId = copyNodeInfo.value.id
|
||||||
|
|
||||||
|
if(copyNodeInfo.value.store.data.materialInfo != null && copyNodeInfo.value.store.data.materialInfo.materialId != null){
|
||||||
|
copyNodeInfo.value.store.data.materialInfo.materialId = copyNodeInfo.value.id
|
||||||
|
}
|
||||||
|
if(copyNodeInfo.value.store.data.changesettings != null &&
|
||||||
|
copyNodeInfo.value.store.data.changesettings.length >0){
|
||||||
|
for(let i=0;i<copyNodeInfo.value.store.data.changesettings.length;i++){
|
||||||
|
let changeSetting = copyNodeInfo.value.store.data.changesettings[i]
|
||||||
|
if(changeSetting.delayList != null && changeSetting.delayList.length >0){
|
||||||
|
for(let j=0;j<changeSetting.delayList.length;j++){
|
||||||
|
let delayList = changeSetting.delayList[j]
|
||||||
|
if(delayList.type == 'device'){
|
||||||
|
delayList.parentId = copyNodeInfo.value.id
|
||||||
|
delayList.parentName = copyDeviceInfo.value.name
|
||||||
|
}else if(delayList.type == 'material'){
|
||||||
|
delayList.parentId = copyNodeInfo.value.id
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if(changeSetting.deviceMaterialData != null && changeSetting.deviceMaterialData.length >0){
|
||||||
|
for(let k=0;k<changeSetting.deviceMaterialData.length;k++){
|
||||||
|
let deviceMaterialData = changeSetting.deviceMaterialData[k]
|
||||||
|
if(deviceMaterialData.type == 'device'){
|
||||||
|
deviceMaterialData.parentId = copyNodeInfo.value.id
|
||||||
|
deviceMaterialData.parentName = copyDeviceInfo.value.name
|
||||||
|
}else if(deviceMaterialData.type == 'material'){
|
||||||
|
deviceMaterialData.parentId = copyNodeInfo.value.id
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(changeSetting.formulaData != null && changeSetting.formulaData.length >0){
|
||||||
|
for(let l=0;l<changeSetting.formulaData.length;l++){
|
||||||
|
let formulaData = changeSetting.formulaData[l]
|
||||||
|
if(typeof formulaData === 'object') {
|
||||||
|
if(formulaData.type == 'device'){
|
||||||
|
formulaData.parentId = copyNodeInfo.value.id
|
||||||
|
formulaData.parentName = copyDeviceInfo.value.name
|
||||||
|
}else if(formulaData.type == 'material'){
|
||||||
|
formulaData.parentId = copyNodeInfo.value.id
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
const deviceInfo = copyNodeInfo.value.store.data.deviceInfo
|
||||||
|
const materialInfo = copyNodeInfo.value.store.data.materialInfo
|
||||||
|
const result:any = await addDevices(deviceInfo);
|
||||||
|
if(result == false || result == undefined){
|
||||||
|
loading.value = false
|
||||||
|
ElMessage({
|
||||||
|
type: "success",
|
||||||
|
message: "复制失败",
|
||||||
|
});
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if(materialInfo !=null && materialInfo.materialId != null){
|
||||||
|
const results:any = await saveOrUpdate(materialInfo);
|
||||||
|
if(results == false || results == undefined){
|
||||||
|
loading.value = false
|
||||||
|
ElMessage({
|
||||||
|
type: "success",
|
||||||
|
message: "复制失败",
|
||||||
|
});
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
isLock.value = true
|
||||||
|
graph.addNode(copyNodeInfo.value)
|
||||||
|
isLock.value = false
|
||||||
|
loading.value = false
|
||||||
|
saveDesign()
|
||||||
|
isCopy.value = false
|
||||||
|
}
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<div class="app-layout" @click="isMenuShow = false">
|
<div class="app-layout" @click="isMenuShow = false" >
|
||||||
<div class="antvx6-header">
|
<div class="antvx6-header">
|
||||||
<div class="header-left-box">
|
<div class="header-left-box">
|
||||||
<div class="return-icon-box" @click="closeAntvx6" title="返回工作台">
|
<div class="return-icon-box" @click="closeAntvx6" title="返回工作台">
|
||||||
@ -1594,7 +1701,29 @@ const boundaryClick = () => {
|
|||||||
</div>
|
</div>
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
|
|
||||||
|
<el-dialog v-model="isCopy" :close-on-click-modal="false"
|
||||||
|
:modal="false"
|
||||||
|
draggable
|
||||||
|
:before-close="dialogCopy"
|
||||||
|
title="复制设备"
|
||||||
|
append-to-body width="600px">
|
||||||
|
<el-form ref="infoForm" :model="copyDeviceInfo" label-width="100px"
|
||||||
|
style="width: 100%;height: 200px;margin-top: 30px;" v-loading="loading" element-loading-text="正在复制中...">
|
||||||
|
<el-form-item label="复制设备" prop="code" style="width: 100%;">
|
||||||
|
<el-input v-model="copyDeviceInfo.oldname" style="width: 100%" placeholder="" disabled></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="新设备名称" prop="name" style="width: 100%;">
|
||||||
|
<el-input v-model="copyDeviceInfo.name" style="width: 100%" placeholder="请输入设备名称"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<span class="dialog-footer"
|
||||||
|
style="display: flex;display: -webkit-flex; justify-content: flex-end;-webkit-justify-content: flex-end;">
|
||||||
|
<el-button @click="dialogCopy">取 消</el-button>
|
||||||
|
<el-button type="primary" @click="confirmCopyClick">确 定</el-button>
|
||||||
|
</span>
|
||||||
|
</el-form>
|
||||||
|
</el-dialog>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user