项目分析设计新增复制功能
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 Createscenario from '@/views/component/scenario/createscenario.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 img2 from '@/assets/x6/2.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() { // 复制节点
|
||||
if (selectedNode.value) {
|
||||
try {
|
||||
// 获取当前节点的位置
|
||||
const position = selectedNode.value.position()
|
||||
// 创建新节点,使用节点的原始数据
|
||||
const newNode = selectedNode.value.clone()
|
||||
copyNodeInfo.value = selectedNode.value.clone()
|
||||
// 设置新位置(偏移50px)
|
||||
newNode.position(position.x + 50, position.y + 50)
|
||||
deviceTypetype.value = newNode.store.data.deviceInfo.type
|
||||
copyNodeInfo.value.position(position.x + 50, position.y + 50)
|
||||
// deviceTypetype.value = newNode.store.data.deviceInfo.type
|
||||
// 添加到画布
|
||||
graph.addNode(newNode)
|
||||
//
|
||||
// :deviceId="nodeId" :projectInfo="projectInfo"
|
||||
// :deviceTypetype="deviceTypetype"
|
||||
// graph.addNode(newNode)
|
||||
copyDeviceInfo.value = {
|
||||
oldname: copyNodeInfo.value.store.data.deviceInfo.name,
|
||||
name:''
|
||||
}
|
||||
|
||||
isMenuShow.value = false
|
||||
isCopy.value = true
|
||||
} catch (error) {
|
||||
console.error('节点复制失败:', error)
|
||||
}
|
||||
@ -1394,7 +1402,6 @@ function saveDesign() { // 保存设计
|
||||
|
||||
}
|
||||
}
|
||||
console.log(devices)
|
||||
const topology = {
|
||||
projectId: projectInfo.value.projectId,
|
||||
name: projectInfo.value.name,
|
||||
@ -1436,6 +1443,106 @@ const isBoundary = ref(false)
|
||||
const boundaryClick = () => {
|
||||
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>
|
||||
|
||||
<template>
|
||||
@ -1594,6 +1701,28 @@ const boundaryClick = () => {
|
||||
</div>
|
||||
</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