ソースを参照

工程部位树采用懒加载

duy 2 年 前
コミット
66ea683fb2
1 ファイル変更147 行追加9 行削除
  1. 147 9
      src/views/tentative/detect/test-form.vue

+ 147 - 9
src/views/tentative/detect/test-form.vue

@@ -125,7 +125,7 @@
                         <!-- <DivisionTree :datas="unmatchedTreeData" @nodeTap="divisionTreeClick" @nodeCheck="divisionTreeCheck" :defaultCheckarr="defaultCheckarrIds"/> -->
 
 
-                        <DivisionTree1
+                        <!-- <DivisionTree1
                             v-show="isSearchTree"
                             :ElTreeProps="seaElTreeProps"
                             :datas="searchTreeData"
@@ -146,8 +146,16 @@
                             :linksRelateSearchTreeVal="linksRelateSearchTreeVal"
                             @nodeCheck="divisionTreeCheck"
                             @nodeTap="divisionTreeClick"
-                        />
-
+                        /> -->
+             
+                        <HcLazyTree
+                        ref="ElTreeRef"
+                         @load="treeLoadNode" 
+                         @nodeTap="divisionTreeClick" 
+                         :h-props="treeProps" 
+                         showCheckbox 
+                         @check="divisionTreeCheck" 
+                         :defaultCheckedKeys="defaultCheckarrIds"/>
                     </el-scrollbar>
                 </div>
             </div>
@@ -272,6 +280,7 @@ onMounted(() => {
     }
     if (info && info.projectPosition) {
         defaultCheckarrIds.value = info.projectPosition.split(',')
+        defaultprojectPositionName.value=info?.projectPositionName
 
     }
     getSearchNodeTables()
@@ -517,6 +526,7 @@ const linksRelateModalClick = () => {
 //获取导入树
 const unmatchedTreeData = ref([])
 const defaultCheckarrIds = ref([])
+const defaultprojectPositionName=ref('')
 const isdivisionLoading = ref(false)
 const getContractInfoTreeApi = async () => {
     isdivisionLoading.value = true
@@ -547,9 +557,9 @@ const divisionTreeClick = ({data}) => {
 }
 const checkrelationId = ref([])
 const checkrelationString = ref([])
-
-const divisionTreeCheck = (data) => {
-    checkrelationId.value = data
+const ElTreeRef=ref(null)
+const divisionTreeCheck = (data1,data2) => {
+    checkrelationId.value = data2?.checkedNodes
 }
 const seaElTreeProps = ref({
     label: 'fullName',
@@ -613,6 +623,7 @@ const searchTreeClick = async () => {
         //     }
     }
 }
+const positiondata=ref([])
 //确认关联
 const linksRelateModalSave = async () => {
     let idarr = []
@@ -625,6 +636,7 @@ const linksRelateModalSave = async () => {
     }
 
     let infodata = await getpositiondata()
+    positiondata.value=infodata
     ListItemRef.value.changePositionInput(infodata)
     window.$message?.success('操作成功')
     linksRelateModal.value = false
@@ -712,14 +724,115 @@ const linksRawModalClose = () => {
     tableRawRef.value?.clearSelection();
 }
 
-
+const formpositon=ref('')
 //关联取样
 const linksSampleModal = ref(false)
 const linksSampleModalClick = () => {
     linksSampleTableData.value = [];
     linksSampleModal.value = true
+  
+    console.log(positiondata.value,'positiondata.value');
+    let FormData = ListItemRef.value?.getFormData()
+    console.log(FormData,'FormData');
+    formpositon.value=FormData
+    getKetarr()
 
 }
+const positonkey=ref([])
+const positionName=ref('')
+//取出工程部位名称的key值
+const getKetarr=()=>{
+    let rekey=[]
+    if(positiondata.value.length>0){
+        positiondata.value.forEach((ele)=>{
+            let arr=Object.keys(ele)
+            arr.forEach((item)=>{
+                if(item.indexOf('key')!==-1){
+                    rekey.push(item)
+                    positionName.value=ele[item]
+                }
+            })
+        })
+    }
+    console.log(rekey,'rekey');
+    positonkey.value=rekey
+}
+const formname=ref('')
+//取样工程部位值清空与替换
+const clearinf=()=>{
+    //1.点了工程部位进行清空
+    if(positonkey.value.length>0){
+        positonkey.value.forEach((item)=>{
+            sampledata.value.forEach((ele)=>{
+                let arr=Object.keys(ele)
+                arr.forEach((ele1)=>{
+                    if(ele1.indexOf(item)!==-1){
+                        ele[ele1]=positionName.value
+                    }
+                })
+            })
+        })
+        console.log( sampledata.value,' sampledata11111');
+        ListItemRef.value.changeSimpleInput( sampledata.value, checkTabId.value)
+    }
+    //2.表单工程部位有值,替换为工程部位的值
+    else if(defaultCheckarrIds.value.length>0){
+        sampledata.value.forEach((ele)=>{
+                let arr=Object.keys(ele)
+                arr.forEach((ele1)=>{
+                    if(ele1.indexOf('取样对应工程部位Key')!==-1){
+                        console.log( ele[ele1],' ele[ele1]');
+                        console.log(defaultprojectPositionName.value,'defaultprojectPositionName.value');
+                        ele[ele[ele1]]=defaultprojectPositionName.value
+                        
+                    }
+                })
+            })
+            console.log( sampledata.value,' sampledata.value222222');
+            ListItemRef.value.changeSimpleInput( sampledata.value, checkTabId.value)
+    }else{
+           //4.取表单手动输入的值
+        let rekey=[]
+        sampledata.value.forEach((ele)=>{
+            let arr=Object.keys(ele)
+            arr.forEach((item)=>{
+                if(item.indexOf('取样对应')!==-1){
+                    rekey.push(ele['取样对应工程部位Key'])
+                  
+                }
+            })
+        })
+   
+       
+        formpositon.value.forEach((ele1)=>{
+            rekey.forEach((ele2)=>{
+              if(ele1[ele2]){
+                formname.value=ele1[ele2]
+              }
+              
+            })
+        })
+        rekey.forEach((item)=>{
+            sampledata.value.forEach((ele)=>{
+                let arr=Object.keys(ele)
+                arr.forEach((ele1)=>{
+                    if(ele1.indexOf(item)!==-1){
+                       ele[item]= formname.value
+                    
+                    }
+                })
+            })
+        })
+        //   console.log(formpositon.value,formpositon.value);
+        console.log( sampledata.value,' sampledata333333');
+           ListItemRef.value.changeSimpleInput( sampledata.value, checkTabId.value)
+    }
+   
+ 
+
+      
+ }
+
 
 //搜索表单
 const linksSampleSearchForm = ref({
@@ -803,7 +916,7 @@ const tableSampleCheckedKeys = ref([]);
 const linksSampleTableSelection = (rows) => {
     tableSampleCheckedKeys.value = rows
 }
-
+const sampledata=ref([])
 //保存关联
 const linksSampleModalSave = async () => {
     const rows = tableSampleCheckedKeys.value
@@ -811,7 +924,9 @@ const linksSampleModalSave = async () => {
     window.$message?.success('操作成功')
     isopersampleIds.value = true
     let infodata = await getrecordsamplegetData()
-    ListItemRef.value.changeSimpleInput(infodata, checkTabId.value)
+    sampledata.value=infodata
+    clearinf()
+  
     tableSampleCheckedKeys.value = [];
 
     linksSampleModal.value = false
@@ -1274,6 +1389,29 @@ const toBackClick = () => {
 const updeviceUseIds = (val) => {
     listItemBaseData.value.deviceUseIds = val
 }
+const treeProps = {
+    label: 'fullName',
+    children: 'hasChildren',
+    isLeaf: 'notExsitChild'
+}
+//获取工程部位方法
+const treeLoadNode = async ({node, item, level},resolve) => {
+    let id = '';
+    if (level !== 0) {
+        const nodeData = getObjValue(item);
+        id = nodeData?.id || ''
+    }
+    //获取数据
+    const {error, code, data} = await divisionApi.getengineerInfoTree1({
+        projectId: projectId.value,
+        contractId: contractId.value,
+        wbsId: projectInfo?.value.referenceWbsTemplateId,
+        selfId: dataId,
+        id:id
+    })
+    checkrelationId.value = getArrValue(data['isSelectedStatus'])
+    resolve(getArrValue(data))
+}
 
 </script>