Pārlūkot izejas kodu

分配Wbs接口调用

duy 1 gadu atpakaļ
vecāks
revīzija
e7a64a1cf9

+ 8 - 0
src/api/manager/wbsprivate.js

@@ -231,4 +231,12 @@ export const removeTabusstime = (ids) => {
       ids
     }
   })
+}
+//后管独立表单库表单同步到合同段所有选择的节点下
+export const syncFormToContractNode = (params) => {
+  return request({
+    url: '/api/blade-manager/wbsPrivate/syncFormToContractNode',
+    method: 'get',
+    params
+  })
 }

+ 47 - 12
src/views/manager/projectinfo/allocateDialog.vue

@@ -9,6 +9,7 @@
             <el-scrollbar class="h-100p">
                 <div v-loading="treeLoad">
                   <el-tree
+                    :key="treeKey"
                     class="filter-tree"
                     lazy
                     :load="loadNode"
@@ -19,12 +20,9 @@
                     :check-on-click-node="false"
                     node-key="id"
                     ref="tree"
-           
-                 
-                    @check-change="handleCheckChange"
                     >
                   <span class="custom-tree-node" slot-scope="{node,data}" style="justify-content: flex-start;">
-                   <span> <el-checkbox v-model="data.checked" v-if="!data.hasChildren"></el-checkbox></span>
+                   <span> <el-checkbox v-model="data.checked" v-if="!data.hasChildren" @change="handleCheck($event,data)"></el-checkbox></span>
                     {{ node.label }}
                 
                   </span>
@@ -35,8 +33,8 @@
         </div>
             <template #footer>
             <div class="dialog-footer">
-                <el-button @click="allocatedialogVisible = false">取消</el-button>
-                <el-button type="primary" @click="allocatedialogVisible = false">
+                <el-button @click="quitWbs">取消</el-button>
+                <el-button type="primary" @click="saveWbs" :loading="saveLoading">
                 确认
                 </el-button>
             </div>
@@ -45,14 +43,16 @@
  </template>
   
   <script>
-  import { getLazytree,} from "@/api/manager/wbsprivate";
+  import { getLazytree,syncFormToContractNode} from "@/api/manager/wbsprivate";
   import { mapGetters } from "vuex";
   
   export default {
     props:{
         projectId:'',
         wbsId:'',
-        wbsType:''
+        wbsType:'',
+        id:"",
+        treeKey:Math.random()
     },
     data () {
      return {
@@ -84,14 +84,22 @@
           return tag;
           // return !data.hasChildren || (data.isExistForm == 1);
         },
+       
       },
+      selectData:[],
+      saveLoading:false
      }
     },
     computed: {
         ...mapGetters(["userInfo"]),
     },
     watch: {
-      
+      id: {
+        handler: function(n) {
+          this.id=n
+        },
+        deep: true,
+      },
     },
     
     created () {
@@ -103,6 +111,8 @@
     methods: {
      show(){
         this.allocatedialogVisible=true
+        this.treeKey=Math.random()
+        this.selectData=[]
      },
      renderContent(h, { node, data, store }) {
       // 只有当节点没有子节点时才显示复选框
@@ -135,9 +145,34 @@
             return resolve(arr);
         });
     },
-    handleCheckChange(checkedNodes) {
-      // 在这里处理已选中的节点数据
-      console.log(checkedNodes,'checkedNodes');
+    handleCheck(isCheck,data){
+      if(isCheck){
+        this.selectData.push(data)
+      }else{
+        const index = this.selectData.indexOf(data); // 找到要删除的对象的索引
+        if (index !== -1) {
+          this.selectData.splice(index, 1); // 从数组中删除指定索引位置的元素
+        }
+      }
+    
+    },
+    async saveWbs(){
+      console.log(this.selectData,'this.selectData');
+      const nodesIdArray = this.selectData.map(obj => obj.primaryKeyId); 
+      const commaSeparatedIds = nodesIdArray.join(','); // 使用逗号连接数组中的所有元素
+      this.saveLoading=true
+      const { data: res } =await syncFormToContractNode({nodeIds:commaSeparatedIds,projectId:this.projectId,primaryKeyId:this.id})
+      this.saveLoading=false
+      if (res.code == 200) {
+       this.$message.success(res.msg)
+        this.allocatedialogVisible=false
+        this.selectData=[]
+      }
+ 
+    },
+    quitWbs(){
+      this.allocatedialogVisible=false;
+      this.selectData=[]
     }
   
     }

+ 4 - 3
src/views/manager/projectinfo/independent.vue

@@ -234,7 +234,7 @@
       </span>
     </el-dialog>
       <!-- 分配wbs -->
-  <allocateDialog ref="allocateRef" :projectId="projectid"  :wbsId="wbsid" :wbsType="wbsType"></allocateDialog>
+  <allocateDialog ref="allocateRef" :projectId="projectid"  :wbsId="wbsid" :wbsType="wbsType" :id="formId"></allocateDialog>
   
   
   
@@ -424,7 +424,8 @@ export default {
       sortTag: false,
       sortTag2: false,
       sort:[],
-      allocatedialogVisible:false//分配WBS弹窗
+      allocatedialogVisible:false,//分配WBS弹窗
+      formId:''//分配WBS的表单Id
 
 
     };
@@ -799,8 +800,8 @@ export default {
     },
     //分配WBS
     allocatWbs(row){
-      console.log(row,'row');
      this.$refs.allocateRef.show()
+     this.formId=row.id
       
     }