duy 20 цаг өмнө
parent
commit
6a37232678

+ 9 - 0
src/api/manager/wbsformelement.js

@@ -87,4 +87,13 @@ export const querySyncRecord = (data) => {
     method: 'get',
     params:data
   })
+}
+
+//复制节点
+export const copyNode = (formData) => {
+  return request({
+    url: '/api/blade-manager/wbsPrivate/copyNode',
+    method: 'post',
+    data: formData
+  })
 }

+ 26 - 4
src/views/manager/wbsinfo/TreeCopyModal.vue

@@ -57,8 +57,8 @@
     <!-- 底部按钮 -->
     <div slot="footer" class="dialog-footer">
       <el-button @click="handleClose">取消</el-button>
-      <el-button type="primary" @click="handleLinkAndExit">关联并退出</el-button>
-      <el-button type="success" @click="handleLinkAndContinue">关联并继续</el-button>
+      <el-button type="primary" @click="handleLinkAndExit" :loading="linkLoading">关联并退出</el-button>
+      <el-button type="success" @click="handleLinkAndContinue" :loading="linkLoading">关联并继续</el-button>
     </div>
   </el-dialog>
 </template>
@@ -95,6 +95,10 @@ export default {
     userInfo: {
       type: Object,
       required: true
+    },
+    linkLoading: {
+      type: Boolean,
+      default: false
     }
   },
   data() {
@@ -126,6 +130,11 @@ export default {
       selectedTargetNodes: []
     };
   },
+  watch:{
+    linkLoading(val){
+      this.linkLoading = val;
+    }
+  },
   methods: {
     // 显示弹窗
     show() {
@@ -197,13 +206,24 @@ export default {
     },
 
     // 处理源树节点选择
+ // 处理源树节点选择
     handleSourceCheck(data, checked, indeterminate) {
-      this.selectedSourceNodes = this.$refs.sourceTree.getCheckedNodes(true, false);
+      // 确保树组件已渲染
+      if (this.$refs.sourceTree) {
+        // 只获取叶子节点,根据你的业务逻辑调整
+        this.selectedSourceNodes = this.$refs.sourceTree.getCheckedNodes(false, true);
+        console.log('选中的源节点:', this.selectedSourceNodes);
+      }
     },
 
     // 处理目标树节点选择
     handleTargetCheck(data, checked, indeterminate) {
-      this.selectedTargetNodes = this.$refs.targetTree.getCheckedNodes(true, false);
+     // 确保树组件已渲染
+      if (this.$refs.targetTree) {
+        // 只获取叶子节点,根据你的业务逻辑调整
+        this.selectedTargetNodes = this.$refs.targetTree.getCheckedNodes(false, true);
+        console.log('选中的目标节点:', this.selectedTargetNodes);
+      }
     },
 
     // 显示关联规则提示
@@ -216,11 +236,13 @@ export default {
     // 关联并退出
     handleLinkAndExit() {
       this.handleLink(true);
+      
     },
 
     // 关联并继续
     handleLinkAndContinue() {
       this.handleLink(false);
+      
     },
 
     // 处理关联操作

+ 28 - 15
src/views/manager/wbsinfo/edit.vue

@@ -1497,6 +1497,7 @@
       :user-info="userInfo"
       @close="handleModalClose"
       @link="handleLinkNodes"
+      :linkLoading="linkLoading"
     ></tree-copy-modal>
   </basic-container>
 </template>
@@ -1542,6 +1543,7 @@ import {
   updateBatchElements,
   getTemplate,
   importWbsElement,
+  copyNode
 } from "@/api/manager/wbsformelement";
 import { getDictionary, getChildList } from "@/api/system/dict";
 import { mapGetters } from "vuex";
@@ -1720,6 +1722,8 @@ export default {
       standardTypeOptions: [], //标准分类
       unitOptions: [], //单位名称
       copyDialogVisible: false, //复制节点弹框
+      linkLoading: false, //复制节点加载
+
 
     };
   },
@@ -3401,24 +3405,33 @@ export default {
     },
 
     // 处理节点关联
-    handleLinkNodes(linkData, successCallback) {
+   async handleLinkNodes(linkData) {
       console.log('准备关联的节点数据:', linkData);
 
-      // // 调用API进行节点关联
-      // linkNodesApi(linkData)
-      //   .then(res => {
-      //     if (res.data.success) {
-      //       // 关联成功,调用回调函数
-      //       successCallback();
-      //     } else {
-      //       this.$message.error('关联失败: ' + (res.data.message || '未知错误'));
-      //     }
-      //   })
-      //   .catch(err => {
-      //     console.error('关联节点出错:', err);
-      //     this.$message.error('关联失败,请重试');
-      //   });
+      this.linkLoading = true;
+      const { data: res } = await copyNode({ 
+        leftIds: linkData.sourceNodes,
+        rightIds: linkData.targetNodes,
+      
+      })
+      console.log(res);
+      this.linkLoading = false;
+      if (res.code == 200) {
+        this.$message({
+          type: 'success',
+          message: res.msg
+        })
+      }else {
+        this.$message({
+          type: 'error',
+          message: res.msg
+        })
+      }
+      
+    
     }
+      //表单排序
+
   },
   components: {
     ManualSorting,