duy 1 рік тому
батько
коміт
d8bc6a7b61

+ 5 - 0
src/api/modules/project/debit/project/contract.js → src/api/modules/project/debit/contract/check-list.js

@@ -8,6 +8,11 @@ export const getFormTree = (form = {}, msg = true) => HcApi({
     method: 'get',
     params: form,
 }, msg)
+export const getLazyFormTree = (form = {}, msg = true) => HcApi({
+    url: '/api/blade-meter/contractInventoryForm/lazyTree',
+    method: 'get',
+    params: form,
+}, msg)
 //获取节点详情
 export const getDetail = (form = {}, msg = true) => HcApi({
     url: '/api//blade-meter/contractInventoryForm/detail',

+ 1 - 1
src/config/index.json

@@ -1,6 +1,6 @@
 {
     "version": "20230607160059",
-    "target": "http://192.168.0.109:8090",
+    "target": "http://192.168.0.128:8090",
     "smsPhone": "",
     "vite": {
         "port": 5180,

+ 65 - 25
src/views/project/debit/contract/check-list.vue

@@ -2,7 +2,17 @@
     <div class="relative h-full flex">
         <div :id="`hc_tree_card_${uuid}`">
             <hc-new-card v-loading="treeLoaing" scrollbar>
-                <HcDataTree :h-props="treeProps" :datas="treeData" is-load-menu :auto-expand-keys="autoExpandKeys" tree-key="id" @menuTap="treeMenuTap" @nodeTap="treeNodeTap" @loadMenu="treeLoadMenu" />
+                <hc-lazy-tree  
+                    v-if="ishowTree"
+                    :h-props="treeProps" 
+                    is-load-menu
+                    :auto-expand-keys="autoExpandKeys" 
+                    tree-key="id" 
+                    @load="treeLoadNode" 
+                    @menuTap="treeMenuTap" 
+                    @nodeTap="treeNodeTap" 
+                    @loadMenu="treeLoadMenu"
+                />
             </hc-new-card>
         </div>
         <div :id="`hc_table_card_${uuid}`" class="flex-1">
@@ -10,7 +20,7 @@
                 <template #extra>
                     <el-button v-if="!isInfoView" hc-btn type="primary" @click="addsupply">增补清单</el-button>
                     <el-button hc-btn type="primary" @click="leadModalShow = true">导入</el-button>
-                    <el-button hc-btn type="primary" @click="exportExcel">导出</el-button>
+                    <el-button hc-btn type="primary">导出</el-button>
                 </template>
                 <div class="relative">
                     <infoTable1 v-if="isInfoView" :info-data="infoData" />
@@ -28,12 +38,12 @@
             <el-form ref="formRef" class="p-4" label-position="left" label-width="auto" :model="formModel" :rules="formRules">
                 <el-row :gutter="20">
                     <el-col :span="8">
-                        <el-form-item label="清单编号:">
+                        <el-form-item label="清单编号:" prop="formNumber">
                             <el-input v-model="formModel.formNumber" />
                         </el-form-item>
                     </el-col>
                     <el-col :span="8">
-                        <el-form-item label="清单名称:">
+                        <el-form-item label="清单名称:" prop="formName">
                             <el-input v-model="formModel.formName" />
                         </el-form-item>
                     </el-col>
@@ -63,7 +73,7 @@
                             </el-form-item>
                         </el-col>
                         <el-col :span="8">
-                            <el-form-item label="章编号:">
+                            <el-form-item label="章编号:" prop="chapterNumber">
                                 <el-input v-model="formModel.chapterNumber" />
                             </el-form-item>
                         </el-col>
@@ -282,7 +292,7 @@ import { getHeader } from 'hc-vue3-ui'
 import { useAppStore } from '~src/store'
 import infoTable from './components/check-list/info-table.vue'
 import infoTable1 from './components/check-list/info-table1.vue'
-import { addNode, deleteNode, getDetail, getFormTree, getImportTemplate, lockNode, sortForm, updateForm } from '~api/project/debit//project/contract.js'
+import { addNode, deleteNode, getDetail, getImportTemplate, getLazyFormTree, lockNode, sortForm, updateForm } from '~api/project/debit/contract/check-list.js'
 import { getDictionary } from '~api/other'
 import { getStoreValue, setStoreValue } from '~src/utils/storage'
 import { delMessageV2 } from '~com/message/index.js'
@@ -300,7 +310,7 @@ const uuid = getRandom(4)
 //渲染完成
 onMounted(() => {
     setSplitRef()
-    treeLoadNode()
+   
     getFormType()
   
 })
@@ -323,6 +333,9 @@ const getFormType = async () => {
         code: 'meter_form_type',
     })
     formtypeOptions.value = getArrValue(data)
+    formtypeOptions.value.forEach((ele)=>{
+        ele.dictKey = Number(ele.dictKey)
+    })
 }
 //搜索表单
 const searchForm = ref({})
@@ -333,33 +346,36 @@ const treeProps = {
     children: 'children',
     isLeaf: 'hasChild',
 }
-const treeData = ref([])
+const ishowTree = ref(true)
 
 //自动展开缓存
 const autoExpandKeys = ref(getStoreValue('autoExpandKeys') || [])
 //获取树的数据
 
 const treeLoaing = ref(false)
-const treeLoadNode = async ()=>{
-    treeLoaing.value = true
-    const { error, code, data } = await getFormTree({
+//懒加载的数据
+const treeLoadNode = async ({ node, item, level }, resolve) => {
+    let id = 0
+    if (level !== 0) {
+        const nodeData = getObjValue(item)
+        id = nodeData?.id || ''
+    }
+    //获取数据
+    const { error, code, data } = await getLazyFormTree({
         projectId: projectId.value,
+        parentId:id,
         contractId:contractId.value,
     })
-    treeLoaing.value = false
-    if (!error && code === 200) {
-        treeData.value = getArrValue(data)
-   
-    } else {
-        treeData.value = []
-    }
-  
+
+    resolve(getArrValue(data))
 }
+
 //树被点击
 const isInfoView = ref(false)
+
 const treeNodeTap = ({ node, data, keys }) => {
     isInfoView.value = !!node.isLeaf
- console.log(keys, 'keys')
+    treeItem.value = data
     autoExpandKeys.value = keys || []
     getTreeNodeDetail(data)
     setStoreValue('autoExpandKeys', keys)
@@ -412,7 +428,7 @@ const treeMenuTap = ({ key, data, node }) => {
             treeModalShow.value = true
             formModel.value = {
                 isFormNode:1,
-                formType:node.parent.data?.formType,
+                formType:data?.formType,
                 contractId:contractId.value,
                 projectId:projectId.value,
                 parentId:data.id,
@@ -514,7 +530,25 @@ const treeModalTitle = ref('')
 //弹窗表单
 const formRef = ref(null)
 const formModel = ref({})
-const formRules = ref({})
+const formRules = ref({
+    
+    formNumber: {
+        required: true,
+        trigger: 'blur',
+        message: '请输入清单编号',
+    },
+    formName: {
+        required: true,
+        trigger: 'blur',
+        message: '请输入清单名称',
+    },
+    chapterNumber: {
+        required: true,
+        trigger: 'blur',
+        message: '请输入章编号',
+    },
+    
+})
 const addNodeLoading = ref(false)
 //弹窗保存
 const treeModalSave = async () => {
@@ -565,9 +599,14 @@ const tableLeadData = ref([
     { id: 5, k1: '101-1c', k2: '101-1c', k3: '按合同条款规定,提供建筑工程一切险', k4: '总额', k5: '12', k6: '3.9', k7: '1', k8: '100', k9: '' },
 ])
 
-const leadModalSave = () => {
-    leadUploadRef.value.submit()
+const leadModalSave = async () => {
+    await leadUploadRef.value.submit()
     leadModalShow.value = false
+    window.$message.success('导入成功')
+    ishowTree.value = false
+    setTimeout(() => {
+        ishowTree.value = true
+    }, 1000)
 }
 
 //增补清单表单
@@ -580,7 +619,7 @@ const addsupply = ()=>{
     supplementsFormModel.value = {
         isFormNode:1,
         isSupplement:1,
-        formType:'1',
+        formType:treeItem.value?.formType,
     }
     supplementsModalShow.value = true
 }
@@ -589,6 +628,7 @@ const supplementsModalSave = async () => {
     const { error, code } = await addNode({
             ...supplementsFormModel.value,
             isSupplement:1,
+            parentId:treeItem.value?.id || '',
         })
         //判断状态
         supplementLoading.value = false