duy 2 жил өмнө
parent
commit
26f6af5146

+ 1 - 1
src/styles/data-fill/wbs.scss

@@ -174,7 +174,7 @@
     position: relative;
     height: 51vh;
     display: flex;
-    margin-top: 24px;
+    // margin-top: 24px;
     margin-bottom: -30px;
     border-top: 1px solid #efeff5;
     .copy-node-many-tree {

+ 63 - 3
src/views/data-fill/collapse-form/index.vue

@@ -256,7 +256,16 @@
             </HcDragNode>
         </HcDragModal>
     </template>
-
+    <!-- 复制本表 -->
+    <HcDialog :loading="copyClickModalLoading" :show="showcopyModal" isToBody saveText="确认复制" title="复制本表"
+              widths="84%" @close="copyModalClose"
+              @save="copySaveClick">
+        <HcCopy v-if="showcopyModal" ref="copyRefs"  :contractId="contract_id" :projectId="projectId"  :classify="classifys" 
+        :tree_AutoExpandKeys="tree_AutoExpandKeys"
+        :treenodeDataInfo="treenodeDataInfo"
+        :showcopyModal="showcopyModal"
+        />
+    </HcDialog>
 </template>
 
 <script setup>
@@ -270,6 +279,7 @@ import HcTestDiaolg from "./test-diaolg.vue"
 import HcTestData from "./test-data.vue"
 import HcTestFile from "./test-file.vue"
 import HcFormula from "./formula.vue"
+import HcCopy from './test-copy.vue'
 import HcDragNode from "~com/drag-node/index.vue"
 import NoDataSvg from '~src/assets/view/no-data.svg'
 import {
@@ -318,6 +328,15 @@ const props = defineProps({
         type: [String, Number],
         default: ''
     },
+    TreeAutoExpandKeys:{
+        type: [Array],
+        default: ''
+    },
+    treenodeDataInfo:{
+        type: [Object],
+        default: {}
+    }
+ 
 })
 
 //全局变量
@@ -331,6 +350,9 @@ const wbs_type = ref(props.wbsType);
 const isStatus = ref(parseInt(props.status))
 const listDatas = ref([])
 const draw_type = ref(props.drawType)
+const tree_AutoExpandKeys = ref(props.TreeAutoExpandKeys)
+const treenodeDataInfo=ref(props.treenodeDataInfo)
+
 
 //表单变量
 const formDataList = ref([])
@@ -853,8 +875,17 @@ const delClick = async ({pkeyId}) => {
         window?.$message?.warning('pkeyId为空')
     }
 }
-
+//复制本表相关
+const showcopyModal=ref(false)
+const copyRefs=ref(null)
+const copyModalClose=()=>{
+    // copyModal.value=false
+}
+const copySaveClick=()=>{
+    // copyModal.value=false
+}
 //复制本表
+const copyClickModalLoading = ref(false)
 const copyClickLoading = ref(false)
 const copyClick = async (items) => {
     const {pkeyId, isTableRender, isTableForm} = items
@@ -882,7 +913,36 @@ const copyClick = async (items) => {
     } else {
         window?.$message?.warning('pkeyId为空')
     }
-}
+ }
+// const copyClick =  (items) => {
+//     showcopyModal.value=true
+  
+//     // const {pkeyId, isTableRender, isTableForm} = items
+//     // if (pkeyId) {
+//     //     if (isStatus.value !== 3) {
+//     //         if (!isTableRender) {
+//     //             await copeBussTab(pkeyId)
+//     //         } else if (!isTableForm) {
+//     //             window?.$message?.warning('暂无表单数据')
+//     //         } else if (isTableRender) {
+//     //             copyClickLoading.value = true
+//     //             const isSave = await saveExcelBussData(items, null, false)
+//     //             if (isSave) {
+//     //                 await copeBussTab(pkeyId)
+//     //             } else {
+//     //                 copyClickLoading.value = false
+//     //                 window?.$message?.warning('复制本表操作失败')
+//     //             }
+//     //         } else {
+//     //             window?.$message?.warning(`数据异常了, isRenderTableForm: ${isTableRender}, isTableForm: ${isTableForm}, pkeyIds:${pkeyId}`)
+//     //         }
+//     //     } else {
+//     //         window?.$message?.warning('已上报的资料,不允许复制')
+//     //     }
+//     // } else {
+//     //     window?.$message?.warning('pkeyId为空')
+//     // }
+// }
 
 //复制表的请求
 const copeBussTab = async (pkeyId) => {

+ 1 - 1
src/views/data-fill/collapse-form/style.scss

@@ -55,7 +55,7 @@
     position: relative;
     height: 53vh;
     display: flex;
-    margin-top: 24px;
+    // margin-top: 24px;
     margin-bottom: -30px;
     border-top: 1px solid #efeff5;
     .copy-node-many-tree {

+ 124 - 0
src/views/data-fill/collapse-form/test-copy.vue

@@ -0,0 +1,124 @@
+<template>
+  <div>
+    <div class="text-orange-500 ">复跨节点复制: 把当前表格已形成的数据复制到其他工程部位的相同表格里面</div>
+    <div class="text-orange-500 mtop5">本节点复制:在当前节点内复制本表及数据</div>
+ 
+  
+    <div class="radio-group-box">
+        <el-radio-group v-model="CopyModalType" @change="changeCopyModalType">
+            <el-radio label="1">跨节点复制</el-radio>
+            <el-radio class="ml-4" label="2">本节点复制</el-radio>
+        </el-radio-group>
+    </div>
+    <div class="copy-node-many-box" v-if="CopyModalType==='1'">
+        <div class="copy-node-many-tree">
+            <el-scrollbar>
+                <WbsTree
+                    :treeKey="wbstreeKey"
+                    :classifyType="classify"
+                    :contractId="contractId"
+                    :projectId="projectId"
+                    @nodeLoading="ElTreeNodeLoading"
+                    @nodeTap="wbsElTreeClick"
+                    ref="copywbstree"
+                    :autoExpandKeys="treeautokeys"
+                 
+                   
+                   
+
+                />
+            </el-scrollbar>
+        </div>
+        <div class="copy-node-many-table">
+            <el-scrollbar v-loading="tableLoading">
+                <el-table :data="copyModalTable" border stripe>
+                    <el-table-column label="表格名称" prop="fullName"/>
+                    <el-table-column align="center" label="操作" prop="action" width="120">
+                        <template #default="{row}">
+                            <el-checkbox v-model="row.isCheck" size="large" @change="copyModalTableCheck(row)"/>
+                        </template>
+                    </el-table-column>
+                </el-table>
+            </el-scrollbar>
+        </div>
+    </div>
+  </div>
+</template>
+
+<script setup>
+import {ref, watch, onMounted, nextTick} from "vue";
+import {getArrValue, getObjValue, setPosInsert} from "js-fast-way"
+import wbsApi from "~api/data-fill/wbs"
+import WbsTree from "../components/WbsTree.vue"
+
+const props = defineProps({
+    projectId: [String, Number],
+    contractId: [String, Number],
+    classify:[String, Number],
+    tree_AutoExpandKeys:[Array],
+    treenodeDataInfo:[Object],//外层选中的树
+})
+//参数变量
+const projectId = ref(props.projectId);
+const contractId = ref(props.contractId);
+const classify = ref(props.classify);
+const tree_AutoExpandKeys = ref(props.tree_AutoExpandKeys);
+const treenodeDataInfo = ref(props.treenodeDataInfo);
+const CopyModalType=ref('1')
+const copyModalTable=ref([]);
+const tableLoading=ref(false)
+const treeLoading=ref(false)
+const copywbstree=ref(null)
+//树加载完成
+const ElTreeNodeLoading = () => {
+    treeLoading.value = false
+    console.log(tree_AutoExpandKeys.value,'tree_AutoExpandKeys');
+}
+const wbstreeKey = ref(Math.random())
+const nodeItemInfo=ref({})
+const nodeDataInfo=ref({})
+//树被点击
+const wbsElTreeClick = ({node, data, keys}) => {
+    nodeItemInfo.value = node
+    nodeDataInfo.value = data
+    searchTabledata()
+}
+const searchTabledata = async () => {
+    copyModalTable.value = []
+    const info = nodeDataInfo.value;
+    tableLoading.value = true
+    const {error, code, data} = await wbsApi.searchNodeAllTable({
+        projectId: projectId.value,
+        contractId: contractId.value,
+        primaryKeyId: info['primaryKeyId'],
+        type: classify.value
+    })
+    //处理数据
+    tableLoading.value = false
+    if (!error && code === 200) {
+        copyModalTable.value = getArrValue(data)
+    } else {
+        copyModalTable.value = []
+    }
+}
+//勾选复制本表
+const copyModalTableCheck = async (item) => {
+    console.log('复制本表', item);
+}
+const treeautokeys=ref([])
+const changeCopyModalType=(val)=>{
+    if(val==='2'){
+       nextTick(()=>{
+        // treeautokeys.value=tree_AutoExpandKeys.value
+     
+       })
+       
+    }
+}
+</script>
+
+<style>
+.mtop5{
+    margin-top: 5px;
+}
+</style>

+ 2 - 0
src/views/data-fill/wbs.vue

@@ -190,6 +190,7 @@
                     <!--清表列表-->
                     <el-scrollbar v-if="ListItemDatas.length > 0" ref="ListItemScrollRef" v-loading="ListItemLoading">
                         <CollapseForm ref="ListItemRef"
+                                      :TreeAutoExpandKeys="TreeAutoExpandKeys"
                                       :classify="authBtnTabKey"
                                       :contractId="contractId"
                                       :datas="ListItemDatas"
@@ -199,6 +200,7 @@
                                       :tenantId="userInfo?.tenant_id"
                                       :wbsTempId="projectInfo?.referenceWbsTemplateIdTrial"
                                       :wbsType="2"
+                                      :treenodeDataInfo="nodeDataInfo"
                                       @offsetTop="ListItemOffsetTop"
                                       @renew="getTableDataAll"/>
                     </el-scrollbar>