Selaa lähdekoodia

优化弹出框的交互

ZaiZai 2 vuotta sitten
vanhempi
commit
612681f68c
4 muutettua tiedostoa jossa 583 lisäystä ja 571 poistoa
  1. 64 20
      src/global/components/hc-dialog/index.vue
  2. 1 104
      src/test/index.vue
  3. 238 203
      src/views/data-fill/division.vue
  4. 280 244
      src/views/data-fill/wbs.vue

+ 64 - 20
src/global/components/hc-dialog/index.vue

@@ -1,17 +1,23 @@
 <template>
-    <el-dialog v-model="isShow" class="hc-modal-border" :class="[isTable?'hc-modal-table':'', isSlotExtra?'hc-modal-header-extra':'', padding ? '':'hc-modal-no-padding', ui]"
-               :style="isBgColor?'--el-dialog-bg-color:' + isBgColor:''" :title="title" :show-close="isClose" :width="isWidth" draggable destroy-on-close @closed="dialogClosed"
-                :close-on-click-modal="false"
-               >
-        <template #header v-if="isSlotHeader || isSlotExtra">
-            <slot name='header' v-if="isSlotHeader"/>
-            <div role="heading" class="el-dialog__title" v-if="!isSlotHeader && isSlotExtra">{{title}}</div>
-            <slot name='extra' v-if="isSlotExtra"/>
+    <el-dialog :id="uuid"
+               v-model="isShow"
+               :before-close="beforeClose"
+               :class="[isTable?'hc-modal-table':'', isSlotExtra?'hc-modal-header-extra':'', padding ? '':'hc-modal-no-padding', ui]"
+               :close-on-click-modal="false" :destroy-on-close="!isLoading" :show-close="isClose"
+               :style="isBgColor?'--el-dialog-bg-color:' + isBgColor:''" :title="title" :width="isWidth"
+               class="hc-modal-border"
+               close-on-press-escape
+               draggable
+    >
+        <template v-if="isSlotHeader || isSlotExtra" #header>
+            <slot v-if="isSlotHeader" name='header'/>
+            <div v-if="!isSlotHeader && isSlotExtra" class="el-dialog__title" role="heading">{{ title }}</div>
+            <slot v-if="isSlotExtra" name='extra'/>
         </template>
         <slot></slot>
-        <template #footer v-if="footer">
-            <slot name='footer' v-if="isSlotFooter"/>
-            <div class="lr-dialog-footer" v-else-if="isRowFooter">
+        <template v-if="footer" #footer>
+            <slot v-if="isSlotFooter" name='footer'/>
+            <div v-else-if="isRowFooter" class="lr-dialog-footer">
                 <div class="left">
                     <slot name='leftRowFooter'/>
                 </div>
@@ -19,14 +25,14 @@
                     <slot name='rightRowFooter'/>
                 </div>
             </div>
-            <div class="dialog-footer" :class="isFooterCenter?'text-center':''" v-else>
-                <el-button size="large" @click="dialogClosed">
+            <div v-else :class="isFooterCenter?'text-center':''" class="dialog-footer">
+                <el-button :disabled="isLoading" size="large" @click="dialogClosed">
                     <HcIcon name="close"/>
                     <span>取消</span>
                 </el-button>
-                <el-button type="primary" hc-btn :loading="isLoading" @click="buttonSaveClick">
+                <el-button :loading="isLoading" hc-btn type="primary" @click="buttonSaveClick">
                     <HcIcon name="check"/>
-                    <span>{{saveText}}</span>
+                    <span>{{ saveText }}</span>
                 </el-button>
             </div>
         </template>
@@ -34,7 +40,9 @@
 </template>
 
 <script setup>
-import {ref, watch, useSlots} from "vue";
+import {ref, watch, useSlots, onMounted} from "vue";
+import {getRandom} from "vue-utils-plus"
+
 const props = defineProps({
     ui: {
         type: String,
@@ -45,7 +53,7 @@ const props = defineProps({
         default: false
     },
     title: {
-        type: [String,Number],
+        type: [String, Number],
         default: 'dialog'
     },
     widths: {
@@ -56,16 +64,20 @@ const props = defineProps({
         type: Boolean,
         default: false
     },
+    loadingText: {
+        type: String,
+        default: '请求中,请耐心等待...'
+    },
     footer: {
         type: Boolean,
         default: true
     },
     saveText: {
-        type: [String,Number],
+        type: [String, Number],
         default: '提交'
     },
     bgColor: {
-        type: [String,Number],
+        type: [String, Number],
         default: '#f1f5f8'
     },
     isTable: {
@@ -91,10 +103,16 @@ const props = defineProps({
 })
 
 //变量
+const uuid = getRandom()
 const isShow = ref(props.show)
 const isWidth = ref(props.widths)
 const isLoading = ref(props.loading)
 const isBgColor = ref(props.bgColor)
+const loadingText = ref(props.loadingText)
+
+onMounted(() => {
+    setLoading(props.loading)
+})
 
 //监听
 watch(() => [
@@ -102,11 +120,14 @@ watch(() => [
     props.widths,
     props.loading,
     props.bgColor,
-], ([show, width, loading, bgColor]) => {
+    props.loadingText,
+], ([show, width, loading, bgColor, loadingText1]) => {
     isShow.value = show
     isWidth.value = width
     isLoading.value = loading
     isBgColor.value = bgColor
+    loadingText.value = loadingText1
+    setLoading(loading)
 })
 
 //判断<slot>是否有传值
@@ -117,12 +138,35 @@ const isSlotFooter = ref(!!slots.footer);
 
 const emit = defineEmits(['close', 'save'])
 
+const loadingInstance = ref(null);
+const setLoading = (val) => {
+    if (val) {
+        const dom = document.getElementById(uuid)
+        loadingInstance.value = window.$loading.service({
+            target: dom,
+            text: loadingText.value,
+        })
+    } else {
+        if (loadingInstance.value) {
+            loadingInstance.value.close()
+        }
+    }
+}
+
 //关闭
 const dialogClosed = () => {
     isShow.value = false
     emit('close', false)
 }
 
+const beforeClose = (done) => {
+    if (!isLoading.value) {
+        isShow.value = false
+        done()
+        emit('close', false)
+    }
+}
+
 //按钮保存
 const buttonSaveClick = () => {
     emit('save')

+ 1 - 104
src/test/index.vue

@@ -1,40 +1,7 @@
 <template>
     <div class="hc-page-box">
         <HcCard title="测试">
-            <el-button type="primary" @click="hideClick">设置焦点</el-button>
-
-            <el-input type="text"
-                      id="a1"
-                      v-model="value1"
-                      @keyup.shift.up="keyupShiftUp"
-                      @keyup.shift.down="keyupShiftDown"
-                      />
-
-            <el-date-picker
-                v-model="value2"
-                type="date" id="a2"
-                popper-class="hc-table-form-date-picker hc-form-id-a2"
-                @keydown.shift.up="keyupShiftUp"
-                @keydown.shift.down="keyupShiftDown"
-                placeholder="Pick a day"/>
-
-            <el-date-picker
-                id="a3"
-                v-model="value3"
-                type="date"
-                popper-class="hc-table-form-date-picker hc-form-id-a3"
-                @keydown.shift.up="keyupShiftUp"
-                @keydown.shift.down="keyupShiftDown"
-                placeholder="Pick a day"/>
-
-            <el-select
-                id="a4"
-                v-model="value4"
-                placeholder="Select"
-                @keyup.shift.up="keyupShiftUp"
-                @keyup.shift.down="keyupShiftDown">
-                <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value"/>
-            </el-select>
+            <el-button type="primary">测试</el-button>
 
         </HcCard>
     </div>
@@ -42,74 +9,4 @@
 
 <script setup>
 import {nextTick, onMounted, ref} from "vue";
-//import { getRandom } from "vue-utils-plus"
-
-const value1 = ref('')
-const value2 = ref('')
-const value3 = ref('')
-const value4 = ref('')
-
-const options = [
-    {value: 'Option1', label: 'Option1',},
-    {value: 'Option2', label: 'Option2',},
-    {value: 'Option3', label: 'Option3',},
-]
-
-const hideClick = () => {
-    document.getElementById('xxxxx').focus();
-}
-
-onMounted(() => {
-    let poppers = document.getElementsByClassName('hc-table-form-date-picker')
-    for (let i = 0; i < poppers.length; i++) {
-        const classList = poppers[i].getAttribute('class')
-        const key = classList.split('-form-id-')[1]
-
-        let panels = poppers[i].getElementsByClassName('el-picker-panel__content')
-        for (let x = 0; x < panels.length; x++) {
-            panels[x].addEventListener("keydown", e => {
-                e.stopPropagation()
-                console.log(e.key)
-                if (e.key === 'ArrowUp') {
-                    keyupShiftUp({target: {id: key}})
-                } else if (e.key === 'ArrowDown') {
-                    keyupShiftDown({target: {id: key}})
-                } else if (e.key === 'ArrowLeft') {
-                    //keyupShiftLeft(e)
-                } else if (e.key === 'ArrowRight') {
-                    //keyupShiftRight(e)
-                }
-            }, {
-                capture: true
-            });
-        }
-    }
-})
-
-const keys = ['a1', 'a2', 'a3', 'a4']
-
-//上
-const keyupShiftUp = ({target}) => {
-    const key = target.id
-    const index = keys.findIndex(id => id === key)
-    if (index > 0) {
-        let keyId = keys[index - 1]
-        if (keyId) {
-            document.getElementById(keyId).focus();
-        }
-    }
-}
-
-//下
-const keyupShiftDown = ({target}) => {
-    const key = target.id
-    const index = keys.findIndex(id => id === key)
-    const keyLength = keys.length -1
-    if (keyLength > index) {
-        let keyId = keys[index + 1]
-        if (keyId) {
-            document.getElementById(keyId).focus();
-        }
-    }
-}
 </script>

+ 238 - 203
src/views/data-fill/division.vue

@@ -1,18 +1,20 @@
 <template>
     <div class="hc-page-layout-box">
-        <div class="hc-layout-left-box" :style="'width:' + leftWidth + 'px;'">
+        <div :style="'width:' + leftWidth + 'px;'" class="hc-layout-left-box">
             <div class="hc-project-box">
                 <div class="hc-project-icon-box">
                     <HcIcon name="stack"/>
                 </div>
                 <div class="ml-2 project-name-box">
-                    <span class="text-xl text-cut project-alias">{{projectInfo['projectAlias']}}</span>
-                    <div class="text-xs text-cut project-name">{{projectInfo['name']}}</div>
+                    <span class="text-xl text-cut project-alias">{{ projectInfo['projectAlias'] }}</span>
+                    <div class="text-xs text-cut project-name">{{ projectInfo['name'] }}</div>
                 </div>
             </div>
             <div class="hc-tree-box">
                 <el-scrollbar>
-                    <WbsTree ui="page-division-tree" :menus="ElTreeMenu" :autoExpandKeys="treeAutoExpandKeys" :projectId="projectId" :contractId="contractId" isColor @nodeTap="wbsElTreeClick" @menuTap="ElTreeMenuClick"/>
+                    <WbsTree :autoExpandKeys="treeAutoExpandKeys" :contractId="contractId" :menus="ElTreeMenu"
+                             :projectId="projectId" isColor ui="page-division-tree" @menuTap="ElTreeMenuClick"
+                             @nodeTap="wbsElTreeClick"/>
                 </el-scrollbar>
             </div>
             <!--左右拖动-->
@@ -22,11 +24,12 @@
             <div class="basic-info">
                 <HcCard title="当前节点基础信息">
                     <template #extra>
-                        <el-checkbox v-model="treeItemInfo.isConcealedWorksNode" label="标记为隐蔽工程节点" :true-label="1" :false-label="0" size="large" @change="concealedChange"/>
+                        <el-checkbox v-model="treeItemInfo.isConcealedWorksNode" :false-label="0"
+                                     :true-label="1" label="标记为隐蔽工程节点" size="large" @change="concealedChange"/>
                     </template>
                     <HcTable :column="tableBasicColumn" :datas="tableBasicData" :isIndex="false" border>
-                        <template #type="{row}">{{getRowType(row['type'])}}</template>
-                        <template #majorDataType="{row}">{{getRowMajorType(row['majorDataType'])}}</template>
+                        <template #type="{row}">{{ getRowType(row['type']) }}</template>
+                        <template #majorDataType="{row}">{{ getRowMajorType(row['majorDataType']) }}</template>
 
                     </HcTable>
                 </HcCard>
@@ -34,21 +37,21 @@
             <div class="project-info">
                 <HcCard title="当前节点工程用表信息">
                     <template #extra>
-                        <el-button type="primary" hc-btn @click="addingFormClick">
+                        <el-button hc-btn type="primary" @click="addingFormClick">
                             <HcIcon name="add"/>
                             <span>引用元素表</span>
                         </el-button>
                     </template>
                     <HcTable :column="tableProjectColumn" :datas="tableProjectData" :isIndex="false" border>
-                        <template #tableType="{row}">{{getRowTableType(row['tableType'])}}</template>
-                        <template #tableOwner="{row}">{{getRowTableOwnerType(row['tableOwner'])}}</template>
+                        <template #tableType="{row}">{{ getRowTableType(row['tableType']) }}</template>
+                        <template #tableOwner="{row}">{{ getRowTableOwnerType(row['tableOwner']) }}</template>
                         <template #action="{row}">
-                             <HcTooltip keys="wbs_views_delexcel">
-                                    <el-button type="primary" plain size="small" @click="deltableexcel(row)">
-                                        <HcIcon name="delete-bin"/>
-                                        <span>删除</span>
-                                    </el-button>
-                                </HcTooltip>
+                            <HcTooltip keys="wbs_views_delexcel">
+                                <el-button plain size="small" type="primary" @click="deltableexcel(row)">
+                                    <HcIcon name="delete-bin"/>
+                                    <span>删除</span>
+                                </el-button>
+                            </HcTooltip>
                         </template>
                     </HcTable>
                 </HcCard>
@@ -58,7 +61,7 @@
                     <HcIcon name="download-2"/>
                     <span>下载导入划分模板</span>
                 </el-button>
-                <el-button type="primary" hc-btn :disabled="!treePrimaryKeyId" @click="toImportTempClick">
+                <el-button :disabled="!treePrimaryKeyId" hc-btn type="primary" @click="toImportTempClick">
                     <HcIcon name="folder-upload"/>
                     <span>导入划分模板</span>
                 </el-button>
@@ -70,10 +73,12 @@
         </div>
 
         <!--编辑节点-->
-        <HcDialog :show="editNodeModal" title="编辑节点" widths="600px" :loading="editNodeLoading" @close="editNodeModal = false" @save="editNodeClick">
-            <el-form ref="formEditNodeRef" :model="formEditNodeModel" :rules="formEditNodeRules" label-width="auto" size="large">
+        <HcDialog :loading="editNodeLoading" :show="editNodeModal" title="编辑节点"
+                  widths="600px" @close="editNodeModal = false" @save="editNodeClick">
+            <el-form ref="formEditNodeRef" :model="formEditNodeModel" :rules="formEditNodeRules" label-width="auto"
+                     size="large">
                 <el-form-item label="节点名称" prop="title">
-                    <el-input v-model="formEditNodeModel.title"  placeholder="请输入节点名称"/>
+                    <el-input v-model="formEditNodeModel.title" placeholder="请输入节点名称"/>
                 </el-form-item>
                 <el-form-item label="上级节点">
                     <el-input v-model="formEditNodeModel.parent.title" disabled/>
@@ -90,58 +95,65 @@
         </HcDialog>
 
         <!--复制节点-->
-        <!--复制节点-->
-        <HcDialog :show="copyNodeModal" title="复制节点" :widths="copyNodeTabKey === '1'?'600px':'1200px'" @close="copyNodeModal = false">
-            <el-form ref="formCopyNodeModelRef" :model="formCopyNodeModel" :rules="formCopyNodeModelRules" label-width="auto" size="large" v-if="copyNodeTabKey !== '3'">
-                <el-form-item label="节点名称" prop="title" style="margin-bottom: 0;" v-if="copyNodeTabKey === '1'">
+        <HcDialog :loading="copyNodeLoading" :show="copyNodeModal" :widths="copyNodeTabKey === '1'?'600px':'1200px'"
+                  loading-text="复制节点中,请耐心等待..." title="复制节点" @close="copyNodeModal = false">
+            <el-form v-if="copyNodeTabKey !== '3'" ref="formCopyNodeModelRef" :model="formCopyNodeModel"
+                     :rules="formCopyNodeModelRules" label-width="auto" size="large">
+                <el-form-item v-if="copyNodeTabKey === '1'" label="节点名称" prop="title" style="margin-bottom: 0;">
                     <el-input v-model="formCopyNodeModel.title" placeholder="请输入节点名称"/>
                 </el-form-item>
-                <el-form-item label="划分编号" prop="partitionCode" style="margin-top: 10px;" v-if="copyNodeTabKey === '1'">
+                <el-form-item v-if="copyNodeTabKey === '1'" label="划分编号" prop="partitionCode"
+                              style="margin-top: 10px;">
                     <el-input v-model="formCopyNodeModel.partitionCode" placeholder="请输入划分编号"/>
                 </el-form-item>
             </el-form>
 
-             <el-form ref="formCopyNodeModelRef" :model="formCopyNodeModel" :rules="formCopyNodeModelRules" label-width="auto" size="large" v-if="copyNodeTabKey === '3'">
+            <el-form v-if="copyNodeTabKey === '3'" ref="formCopyNodeModelRef" :model="formCopyNodeModel"
+                     :rules="formCopyNodeModelRules" label-width="auto" size="large">
                 <el-form-item label="所属方" prop="classify" style="margin-bottom: 0;">
                     <!-- <el-input v-model="formCopyNodeModel.classify" placeholder="请输入节点名称"/> -->
-                     <el-checkbox-group v-model="classifyList">
-                        <el-checkbox label="施工" />
-                        <el-checkbox label="监理" />
+                    <el-checkbox-group v-model="classifyList">
+                        <el-checkbox label="施工"/>
+                        <el-checkbox label="监理"/>
                     </el-checkbox-group>
                 </el-form-item>
             </el-form>
-            <div class="copy-node-many-box" v-if="copyNodeTabKey !== '1'">
+            <div v-if="copyNodeTabKey !== '1'" class="copy-node-many-box">
 
                 <div class="copy-node-many-tree">
                     <el-scrollbar>
-                        <WbsTree :autoExpandKeys="TreeAutoExpandKeys" :projectId="projectId" :contractId="contractId" idPrefix="tree-node-copy-" :isAutoClick="false" :isAutoKeys="false" @nodeTap="copyNodeElTreeClick"/>
+                        <WbsTree :autoExpandKeys="TreeAutoExpandKeys" :contractId="contractId" :isAutoClick="false"
+                                 :isAutoKeys="false" :projectId="projectId" idPrefix="tree-node-copy-"
+                                 @nodeTap="copyNodeElTreeClick"/>
                     </el-scrollbar>
                 </div>
                 <div class="copy-node-many-table">
                     <el-scrollbar>
                         <el-table :data="copyNodeTable" border stripe>
-                            <el-table-column prop="title" label="复制到的位置"/>
-                            <el-table-column prop="nodeName" label="节点名称" v-if="copyNodeTabKey === '2'">
+                            <el-table-column label="复制到的位置" prop="title"/>
+                            <el-table-column v-if="copyNodeTabKey === '2'" label="节点名称" prop="nodeName">
                                 <template #default="{row}">
-                                    <el-form ref="copyNodeTableRef" :model="row" :rules="copyNodeTableRules" label-width="0" size="large">
+                                    <el-form ref="copyNodeTableRef" :model="row" :rules="copyNodeTableRules"
+                                             label-width="0" size="large">
                                         <el-form-item prop="nodeName" style="margin-bottom: 0;">
                                             <el-input v-model="row.nodeName" placeholder="请输入节点名称"/>
                                         </el-form-item>
                                     </el-form>
                                 </template>
                             </el-table-column>
-                            <el-table-column prop="nodeName" label="划分编号" v-if="copyNodeTabKey === '2'">
+                            <el-table-column v-if="copyNodeTabKey === '2'" label="划分编号" prop="nodeName">
                                 <template #default="{row}">
-                                    <el-form ref="copyNodeTableRef" :model="row" :rules="copyNodeTableRules" label-width="0" size="large">
+                                    <el-form ref="copyNodeTableRef" :model="row" :rules="copyNodeTableRules"
+                                             label-width="0" size="large">
                                         <el-form-item prop="partitionCode" style="margin-bottom: 0;">
                                             <el-input v-model="row.partitionCode" placeholder="请输入划分编号"/>
                                         </el-form-item>
                                     </el-form>
                                 </template>
                             </el-table-column>
-                            <el-table-column prop="action" label="操作" width="120" align="center">
+                            <el-table-column align="center" label="操作" prop="action" width="120">
                                 <template #default="{_,$index}">
-                                    <el-button type="danger" plain @click="copyNodeTableDel($index)">删除</el-button>
+                                    <el-button plain type="danger" @click="copyNodeTableDel($index)">删除</el-button>
                                 </template>
                             </el-table-column>
                         </el-table>
@@ -152,43 +164,55 @@
                 <div class="lr-dialog-footer">
                     <div class="left">
                         <template v-for="item in copyNodeTab">
-                            <el-button size="large" type="primary" plain v-if="item?.key === copyNodeTabKey" @click="copyNodeTabChange(item?.key)">{{item.name}}</el-button>
-                            <el-button size="large" text bg @click="copyNodeTabChange(item?.key)" v-else>{{item.name}}</el-button>
+                            <el-button v-if="item?.key === copyNodeTabKey" plain size="large" type="primary"
+                                       @click="copyNodeTabChange(item?.key)">{{ item.name }}
+                            </el-button>
+                            <el-button v-else bg size="large" text @click="copyNodeTabChange(item?.key)">
+                                {{ item.name }}
+                            </el-button>
                         </template>
                     </div>
                     <div class="right">
                         <el-button size="large" @click="copyNodeModal = false">取消</el-button>
-                        <el-button type="primary" hc-btn :loading="copyNodeLoading" @click="copyNodeClick">提交</el-button>
+                        <el-button :loading="copyNodeLoading" hc-btn type="primary" @click="copyNodeClick">提交
+                        </el-button>
                     </div>
                 </div>
             </template>
         </HcDialog>
 
         <!--新增子节点-->
-        <HcDialog :show="addNodeModal" title="新增子节点" widths="720px" @close="addNodeModal = false">
-            <el-alert title="双击节点,可编辑节点名称,编辑完成后,请按回车或输入框消失后,再点提交" type="warning" :closable="false"/>
-            <HcTreeNode :projectId="projectId" :nodeId="addTreeNodeId" :oldId="addTreeNodeOldId" @check-change="addTreeNodeCheckChange" v-if="addTreeNodeType === '1'"/>
-            <HcTreeNode :projectId="projectId" :nodeId="addTreeNodeId" :oldId="addTreeNodeOldId" strictly @check-change="addTreeNodeCheckChange" v-if="addTreeNodeType === '2'"/>
+        <HcDialog :loading="addNodeLoading" :show="addNodeModal" loading-text="新增节点中,请耐心等待..."
+                  title="新增子节点" widths="720px" @close="addNodeModal = false">
+            <el-alert :closable="false" title="双击节点,可编辑节点名称,编辑完成后,请按回车或输入框消失后,再点提交"
+                      type="warning"/>
+            <HcTreeNode v-if="addTreeNodeType === '1'" :nodeId="addTreeNodeId" :oldId="addTreeNodeOldId"
+                        :projectId="projectId" @check-change="addTreeNodeCheckChange"/>
+            <HcTreeNode v-if="addTreeNodeType === '2'" :nodeId="addTreeNodeId" :oldId="addTreeNodeOldId"
+                        :projectId="projectId"
+                        strictly @check-change="addTreeNodeCheckChange"/>
             <template #footer>
                 <div class="lr-dialog-footer">
                     <div class="left flex items-center">
                         <div class="mr-4">选中方式:</div>
                         <el-radio-group v-model="addTreeNodeType">
                             <el-radio label="1">当前及子节点</el-radio>
-                            <el-radio label="2" class="ml-4">仅当前节点</el-radio>
+                            <el-radio class="ml-4" label="2">仅当前节点</el-radio>
                         </el-radio-group>
                     </div>
                     <div class="right">
                         <el-button size="large" @click="addNodeModal = false">取消</el-button>
-                        <el-button type="primary" hc-btn :loading="addNodeLoading" @click="addNodeClick">提交</el-button>
+                        <el-button :loading="addNodeLoading" hc-btn type="primary" @click="addNodeClick">提交
+                        </el-button>
                     </div>
                 </div>
             </template>
         </HcDialog>
 
         <!--调整排序-->
-        <HcDialog :show="sortNodeModal" title="调整排序" widths="700px" :loading="sortNodeLoading" @close="sortNodeModal = false" @save="sortNodeClick">
-            <el-alert title="可拖动排序,也可在后面点击图标,切换排序" type="warning" :closable="false"/>
+        <HcDialog :loading="sortNodeLoading" :show="sortNodeModal" title="调整排序" widths="700px"
+                  @close="sortNodeModal = false" @save="sortNodeClick">
+            <el-alert :closable="false" title="可拖动排序,也可在后面点击图标,切换排序" type="warning"/>
             <div class="sort-node-body-box list-group header">
                 <div class="list-group-item">
                     <div class="index-box">序号</div>
@@ -196,11 +220,12 @@
                     <div class="icon-box">排序</div>
                 </div>
             </div>
-            <Draggable class="sort-node-body-box list-group" ghost-class="ghost" :list="sortNodeData" item-key="id" @start="sortNodeDrag = true" @end="sortNodeDrag = false">
+            <Draggable :list="sortNodeData" class="sort-node-body-box list-group" ghost-class="ghost" item-key="id"
+                       @end="sortNodeDrag = false" @start="sortNodeDrag = true">
                 <template #item="{element, index}">
                     <div class="list-group-item">
-                        <div class="index-box">{{index + 1}}</div>
-                        <div class="title-box">{{element.title}}</div>
+                        <div class="index-box">{{ index + 1 }}</div>
+                        <div class="title-box">{{ element.title }}</div>
                         <div class="icon-box">
                             <span class="icon" @click="downSortClick(index)">
                                 <HcIcon name="arrow-down" ui="text-lg"/>
@@ -215,7 +240,8 @@
         </HcDialog>
 
         <!--导入划分模板-->
-        <HcDialog :show="importTempModal" title="导入划分模板" widths="84%" ui="hc-modal-table" @close="importTempModal = false">
+        <HcDialog :show="importTempModal" title="导入划分模板" ui="hc-modal-table" widths="84%"
+                  @close="importTempModal = false">
             <div class="hc-import-temp-box">
                 <!--div class="hc-choose-type-box">
                     <div class="text-title text-orange">请选择需要导入的工程类别:</div>
@@ -225,7 +251,7 @@
                         </el-radio-group>
                     </div>
                 </div-->
-                <div class="hc-import-node-tree-box" v-loading="uploadLoading" element-loading-text="Loading...">
+                <div v-loading="uploadLoading" class="hc-import-node-tree-box" element-loading-text="Loading...">
                     <div class="import-node-tree-box">
                         <div class="hc-tree-title-box">导入并识别成功</div>
                         <div class="hc-tree-bar-box">
@@ -247,19 +273,22 @@
             <template #footer>
                 <div class="lr-dialog-footer">
                     <div class="left">
-                        <HcUpload ref="uploadRef" :contractId="contractId" :type="importRadio" :primaryKeyId="treePrimaryKeyId" :isSplicingNumber="isSplicingNumber"
-                                  @change="uploadChange" @progress="uploadprogress" @finished="uploadFinished"/>
+                        <HcUpload ref="uploadRef" :contractId="contractId" :isSplicingNumber="isSplicingNumber"
+                                  :primaryKeyId="treePrimaryKeyId" :type="importRadio"
+                                  @change="uploadChange" @finished="uploadFinished" @progress="uploadprogress"/>
                     </div>
                     <div class="right flex">
                         <div class="mr-6">
                             <span class="text-grey">是否拼接划分编号:</span>
-                            <el-switch v-model="isSplicingNumber" inline-prompt :active-value="1" active-text="是" :inactive-value="0" inactive-text="否" size="large"/>
+                            <el-switch v-model="isSplicingNumber" :active-value="1" :inactive-value="0" active-text="是"
+                                       inactive-text="否" inline-prompt size="large"/>
                         </div>
                         <el-button size="large" @click="importTempModalClose">
                             <HcIcon name="close"/>
                             <span>取消</span>
                         </el-button>
-                        <el-button type="primary" hc-btn :disabled="uploadLoading" :loading="uploadLoading" @click="importTempFolder">
+                        <el-button :disabled="uploadLoading" :loading="uploadLoading" hc-btn type="primary"
+                                   @click="importTempFolder">
                             <HcIcon name="folder-upload"/>
                             <span>导入模板</span>
                         </el-button>
@@ -269,39 +298,43 @@
         </HcDialog>
 
         <!--替换并关联节点-->
-        <HcDialog :show="relationModal" title="替换并关联节点" widths="47rem" ui="hc-modal-table" saveText="确认关联" :loading="relationLoading" @close="relationModal = false" @save="relationSaveClick">
+        <HcDialog :loading="relationLoading" :show="relationModal" saveText="确认关联" title="替换并关联节点"
+                  ui="hc-modal-table"
+                  widths="47rem" @close="relationModal = false" @save="relationSaveClick">
             <el-scrollbar>
                 <DivisionTree :datas="unmatchedTreeData" @nodeTap="divisionTreeClick"/>
             </el-scrollbar>
         </HcDialog>
 
         <!--添加独立表单-->
-        <HcDialog :show="addingFormModal" title="引用元素表" widths="84%" isTable :padding="false" :loading="addingFormLoading" @close="addingFormClose" @save="addingFormSave">
+        <HcDialog :loading="addingFormLoading" :padding="false" :show="addingFormModal" isTable title="引用元素表"
+                  widths="84%" @close="addingFormClose" @save="addingFormSave">
             <div class="adding-form-dialog-box">
                 <div class="dialog-tree-box">
                     <el-scrollbar>
-                        <ElTree class="hc-tree-node"
-                            ref="addingFormTreeRef"
-                            :props="addingFormTreeProps"
-                            :load="addingFormTreeLoadNode"
-                            lazy highlight-current accordion
-                            @node-click="addingFormTreeClick">
+                        <ElTree ref="addingFormTreeRef"
+                                :load="addingFormTreeLoadNode"
+                                :props="addingFormTreeProps"
+                                accordion
+                                class="hc-tree-node" highlight-current lazy
+                                @node-click="addingFormTreeClick">
                         </ElTree>
                     </el-scrollbar>
                 </div>
                 <div class="dialog-table-box">
                     <div class="dialog-search">
                         <el-autocomplete
-                            class="block" clearable
-                            v-model="searchTreeTitle"
-                            :fetch-suggestions="querySearchTree"
-                            placeholder="请输入关键词检索"
+                            v-model="searchTreeTitle" :fetch-suggestions="querySearchTree"
+                            class="block"
+                            clearable
                             node-key="primaryKeyId"
+                            placeholder="请输入关键词检索"
                             value-key="title"
                             @select="searchTreeSelect"/>
                     </div>
                     <div class="dialog-table">
-                        <HcTable ref="dialogTableRef" :loading="dialogTableLoading" :column="dialogTableColumn" :datas="dialogTableData" isCheck
+                        <HcTable ref="dialogTableRef" :column="dialogTableColumn" :datas="dialogTableData"
+                                 :loading="dialogTableLoading" isCheck
                                  @select="dialogTableSelect"
                                  @select-all="dialogTableSelectAll"
                         />
@@ -317,7 +350,7 @@
 </template>
 
 <script setup>
-import {ref,watch,onMounted,nextTick} from "vue";
+import {ref, watch, onMounted, nextTick} from "vue";
 import {useAppStore} from "~src/store";
 import {useRouter, useRoute} from 'vue-router'
 import WbsTree from "./components/WbsTree.vue"
@@ -326,7 +359,7 @@ import HcTreeData from "./components/division/HcTreeData.vue"
 import HcTreeData1 from "./components/division/HcTreeData1.vue"
 import DivisionTree from "./components/division/DivisionTree.vue"
 import HcTreeNode from "./components/HcTreeNode.vue"
-import {isType, getIndex, deepClone, formValidate, utilsArray } from "vue-utils-plus"
+import {isType, getIndex, deepClone, formValidate, utilsArray} from "vue-utils-plus"
 import {getStoreData, setStoreData} from '~src/utils/storage'
 import {getDictionary} from "~api/other"
 import wbsApi from "~api/data-fill/wbs";
@@ -338,7 +371,7 @@ const router = useRouter()
 const useRoutes = useRoute()
 const useAppState = useAppStore()
 const {getObjValue, getArrValue} = isType()
-const { isIndex } = utilsArray()
+const {isIndex} = utilsArray()
 
 //全局变量
 const projectId = ref(useAppState.getProjectId);
@@ -369,7 +402,7 @@ onMounted(() => {
 //获取节点类型
 const nodeTypeData = ref([])
 const getWbsNodeTypeApi = async () => {
-    const { data } = await getDictionary({
+    const {data} = await getDictionary({
         code: 'wbs_node_type'
     })
     //处理数据
@@ -394,7 +427,7 @@ const getRowType = (type) => {
 //获取资料类型
 const majorDataTypeData = ref([])
 const getMajorDataTypeApi = async () => {
-    const { data } = await getDictionary({
+    const {data} = await getDictionary({
         code: 'major_data_type'
     })
     //处理数据
@@ -413,7 +446,7 @@ const getRowMajorType = (type) => {
 //获取表类型数据
 const nodeTableTypeData = ref([])
 const getWbsNodeTableTypeApi = async () => {
-    const { data } = await getDictionary({
+    const {data} = await getDictionary({
         code: 'table_type'
     })
     nodeTableTypeData.value = getArrValue(data)
@@ -433,7 +466,7 @@ const getRowTableType = (type) => {
 //获取表类型数据
 const tableOwnerTypeData = ref([])
 const getTableOwnerTypeApi = async () => {
-    const { data } = await getDictionary({
+    const {data} = await getDictionary({
         code: 'owner_type'
     })
     tableOwnerTypeData.value = getArrValue(data)
@@ -458,7 +491,7 @@ const wbsElTreeClick = ({node, data, keys}) => {
     treeNodeInfo.value = node
     treeItemInfo.value = data
     tableBasicData.value = [data]
-    setStoreData('wbsTreeExpandKeys',keys)
+    setStoreData('wbsTreeExpandKeys', keys)
     treeAutoExpandKeys.value = keys || []
     if (node.level === 3) {
         treePrimaryKeyId.value = data['primaryKeyId']
@@ -472,17 +505,17 @@ const wbsElTreeClick = ({node, data, keys}) => {
 
 //当前节点基础信息
 const tableBasicColumn = ref([
-    {key:'title', name: '节点名称'},
-    {key:'partitionCode', name: '划分编号'},
-    {key:'type', name: '节点类型'},
-    {key:'majorDataType', name: '资料类型'},
+    {key: 'title', name: '节点名称'},
+    {key: 'partitionCode', name: '划分编号'},
+    {key: 'type', name: '节点类型'},
+    {key: 'majorDataType', name: '资料类型'},
 
 ])
 const tableBasicData = ref([])
 
 //标记为隐蔽工程节点
 const concealedChange = async () => {
-    const { primaryKeyId, isConcealedWorksNode } = treeItemInfo.value
+    const {primaryKeyId, isConcealedWorksNode} = treeItemInfo.value
     if (primaryKeyId) {
         const {error, code, msg} = await divisionApi.concealedWorksNnode({
             pKeyId: primaryKeyId,
@@ -500,11 +533,11 @@ const concealedChange = async () => {
 
 //当前节点工程用表信息
 const tableProjectColumn = ref([
-    {key:'nodeName', name: '工程用表名称'},
-    {key:'tableType', name: '用表类型'},
-    {key:'tableOwner', name: '用表单位'},
-    {key:'fillRate', name: '填报完整率'},
-    {key:'action', name: '操作', width: 100}
+    {key: 'nodeName', name: '工程用表名称'},
+    {key: 'tableType', name: '用表类型'},
+    {key: 'tableOwner', name: '用表单位'},
+    {key: 'fillRate', name: '填报完整率'},
+    {key: 'action', name: '操作', width: 100}
 ])
 const tableProjectData = ref([])
 //获取数据
@@ -531,10 +564,10 @@ const ElTreeMenu = ref([
 ])
 
 //树菜单被点击
-const ElTreeMenuClick = async ({key,node,data,keys}) => {
+const ElTreeMenuClick = async ({key, node, data, keys}) => {
     treeNodeInfo.value = node
     treeItemInfo.value = data
-    setStoreData('wbsTreeExpandKeys',keys)
+    setStoreData('wbsTreeExpandKeys', keys)
     if (key === 'add') {
         addTreeNodeId.value = data?.id
         addTreeNodeOldId.value = data?.oldId
@@ -565,9 +598,9 @@ const ElTreeMenuClick = async ({key,node,data,keys}) => {
         sortNodeModal.value = true
     } else if (key === 'del') {
         // delModalClick()
-        if(data['colorStatus']===1||data['colorStatus']===2){
-             delModalClick()
-        }else{
+        if (data['colorStatus'] === 1 || data['colorStatus'] === 2) {
+            delModalClick()
+        } else {
             window?.$message?.warning('该节点已存在上报数据,不允许删除')
         }
     }
@@ -592,8 +625,8 @@ const editNodeClick = async () => {
     if (validate) {
         //发起请求
         editNodeLoading.value = true
-        const { primaryKeyId, title, partitionCode } = formEditNodeModel.value
-        const { error, code } = await wbsApi.wbsTreeUpdateNode({
+        const {primaryKeyId, title, partitionCode} = formEditNodeModel.value
+        const {error, code} = await wbsApi.wbsTreeUpdateNode({
             nodeName: title || '',
             pKeyId: primaryKeyId || '',
             partitionCode: partitionCode || ''
@@ -616,9 +649,9 @@ const copyNodeModal = ref(false)
 //复制节点类型tab数据和相关处理
 const copyNodeTabKey = ref('1')
 const copyNodeTab = ref([
-    {key:'1',  name: '单份复制'},
-    {key:'2', name: '多份复制'},
-    {key:'3', name: '复制数据'}
+    {key: '1', name: '单份复制'},
+    {key: '2', name: '多份复制'},
+    {key: '3', name: '复制数据'}
 ]);
 const copyNodeTabChange = (key) => {
     if (key !== copyNodeTabKey.value) {
@@ -632,7 +665,7 @@ const copyNodeTabChange = (key) => {
 const copyNodeLoading = ref(false)
 const formCopyNodeModel = ref({})
 const copyNodeTable = ref([])
-const classifyList=ref([])
+const classifyList = ref([])
 
 //复制树被点击
 const copyNodeElTreeClick = ({data}) => {
@@ -664,7 +697,7 @@ const copyNodeElTreeClick = ({data}) => {
         }
     } else if (TabKey === '3') {
         //限制复制数据不能复制到本身节点下
-        if(data['id']!==formCopyNodeModel.value.id){
+        if (data['id'] !== formCopyNodeModel.value.id) {
             // console.log(formCopyNodeModel.value,'formCopyNodeModel.value');
             // console.log(data,'data');
             // if(data['colorStatus']===1||data['colorStatus']===2){
@@ -672,14 +705,14 @@ const copyNodeElTreeClick = ({data}) => {
             //     }else{
             //         window?.$message?.warning('该节点已存在上报数据,不允许复制')
             //  }
-                  if (data['notExsitChild']) {
-                   //限制一个节点不能点击多次
-                        let oldarr= copyNodeTable.value
-                        let result = oldarr.some(item => item.primaryKeyId===data['primaryKeyId']) //true
-                        if(!result){
-                            setCopyNodeTable(data, data?.title)
-                        }
+            if (data['notExsitChild']) {
+                //限制一个节点不能点击多次
+                let oldarr = copyNodeTable.value
+                let result = oldarr.some(item => item.primaryKeyId === data['primaryKeyId']) //true
+                if (!result) {
+                    setCopyNodeTable(data, data?.title)
                 }
+            }
         }
 
     }
@@ -713,7 +746,7 @@ const copyNodeTableRules = {
 }
 //删除选中的节点
 const copyNodeTableDel = (index) => {
-    copyNodeTable.value.splice(index,1)
+    copyNodeTable.value.splice(index, 1)
 }
 //复制节点
 //复制节点
@@ -721,41 +754,40 @@ const copyNodeClick = async () => {
     const type = copyNodeTabKey.value
     const form = formCopyNodeModel.value
     const table = copyNodeTable.value
-    let classify=''
-    let arr=[]
-                if(classifyList.value.length>0){
-                    classifyList.value.forEach((item)=>{
-                        if(item==='施工'){
-                            arr.push(1)
-                        }else if(item==='监理'){
-                            arr.push(2)
-                        }
-                    })
-                    classify=arr.join(',')
-        }
+    let classify = ''
+    let arr = []
+    if (classifyList.value.length > 0) {
+        classifyList.value.forEach((item) => {
+            if (item === '施工') {
+                arr.push(1)
+            } else if (item === '监理') {
+                arr.push(2)
+            }
+        })
+        classify = arr.join(',')
+    }
 
     //效验数据
     if (type === '1') {
         const validate = await formValidate(formCopyNodeModelRef.value)
-        if (validate) await copyContractTreeNode(type, form,[])
+        if (validate) await copyContractTreeNode(type, form, [])
     } else if (type === '2') {
         if (table.length > 0) {
             const validate = await formValidate(copyNodeTableRef.value)
-            if (validate) await copyContractTreeNode(type, form,table)
+            if (validate) await copyContractTreeNode(type, form, table)
         } else {
             window?.$message?.warning('请先在左侧选择要复制到的节点')
         }
     } else if (type === '3') {
-        if (table.length > 0&&classify.length>0) {
-
-            await copyContractNodeSubmitBusinessData(form,table,classify)
+        if (table.length > 0 && classify.length > 0) {
+            await copyContractNodeSubmitBusinessData(form, table, classify)
         } else {
             window?.$message?.warning('请先在左侧选择要复制的节点或选择所属方')
         }
     }
 }
 //单个复制、多份复制请求
-const copyContractTreeNode = async (type, form,table) => {
+const copyContractTreeNode = async (type, form, table) => {
     copyNodeLoading.value = true
     const {error, code} = await wbsApi.copyContractTreeNode({
         copyType: type,
@@ -765,31 +797,28 @@ const copyContractTreeNode = async (type, form,table) => {
         copyBatchToPaths: table
     })
     //判断状态
+    copyNodeLoading.value = false
     if (!error && code === 200) {
         window?.$message?.success('复制成功')
-        copyNodeLoading.value = false
         copyNodeModal.value = false
         window?.location?.reload()  //刷新页面
     }
 }
 
 //复制数据
-const copyContractNodeSubmitBusinessData = async (form,table,classify) => {
+const copyContractNodeSubmitBusinessData = async (form, table, classify) => {
     copyNodeLoading.value = true
     const {error, code} = await wbsApi.copyContractNodeSubmitBusinessData({
         needCopyPrimaryKeyId: form?.primaryKeyId || '',
         copyBatchToPaths: table,
-        classify:classify
+        classify: classify
     })
     //判断状态
+    copyNodeLoading.value = false
     if (!error && code === 200) {
         window?.$message?.success('复制成功')
-        copyNodeLoading.value = false
         copyNodeModal.value = false
         window?.location?.reload()  //刷新页面
-    }else{
-        copyNodeLoading.value = false
-        // copyNodeModal.value = false
     }
 }
 
@@ -853,7 +882,7 @@ const addNodeClick = async () => {
 }
 
 //删除节点
-const delModalClick  = () => {
+const delModalClick = () => {
     window?.$messageBox?.alert('请谨慎考虑后,确认是否需要删除?', '删除节点', {
         showCancelButton: true,
         confirmButtonText: '确认删除',
@@ -866,9 +895,15 @@ const delModalClick  = () => {
     })
 }
 const removeContractTreeNode = async () => {
+    const loadingInstance = window.$loading.service({
+        fullscreen: true,
+        text: '删除节点中,请耐心等待...',
+        background: 'rgba(0, 0, 0, 0.7)'
+    })
     const {error, code} = await wbsApi.removeContractTreeNode({
         ids: treeItemInfo.value?.primaryKeyId || ''
     })
+    loadingInstance.close()
     if (!error && code === 200) {
         window?.$message?.success('删除成功')
         window?.location?.reload()  //刷新页面
@@ -884,9 +919,9 @@ const sortNodeDrag = ref(false)
 const downSortClick = (index) => {
     const indexs = index + 1
     const data = sortNodeData.value || []
-    if(indexs !== data.length) {
-        const tmp = data.splice(indexs,1);
-        sortNodeData.value.splice(index,0,tmp[0]);
+    if (indexs !== data.length) {
+        const tmp = data.splice(indexs, 1);
+        sortNodeData.value.splice(index, 0, tmp[0]);
     } else {
         window?.$message?.warning('已经处于置底,无法下移')
     }
@@ -894,9 +929,9 @@ const downSortClick = (index) => {
 //向上
 const upSortClick = (index) => {
     const data = sortNodeData.value || []
-    if(index !== 0) {
-        const tmp = data.splice(index - 1,1);
-        sortNodeData.value.splice(index,0,tmp[0]);
+    if (index !== 0) {
+        const tmp = data.splice(index - 1, 1);
+        sortNodeData.value.splice(index, 0, tmp[0]);
     } else {
         window?.$message?.warning('已经处于置顶,无法上移')
     }
@@ -910,7 +945,7 @@ const sortNodeClick = async () => {
     })
     //发起请求
     sortNodeLoading.value = true
-    const { error, code } = await wbsApi.diySortTreeNode({sortList})
+    const {error, code} = await wbsApi.diySortTreeNode({sortList})
     sortNodeLoading.value = false
     //判断状态
     if (!error && code === 200) {
@@ -1039,7 +1074,7 @@ const relationSaveClick = () => {
 
 const setImportRelationApi = async (form) => {
     relationLoading.value = true
-    const { error, code } = await divisionApi.setImportRelation(form)
+    const {error, code} = await divisionApi.setImportRelation(form)
     relationLoading.value = false
     if (!error && code === 200) {
         window.$message?.success('关联成功')
@@ -1049,7 +1084,7 @@ const setImportRelationApi = async (form) => {
 
 //下载模板
 const downloadXlsx = () => {
-    window.open('https://bladex-test-info.oss-cn-chengdu.aliyuncs.com//upload/20221017/854463fdfdf90843e6783fbcb4d7d00c.xlsx','_blank')
+    window.open('https://bladex-test-info.oss-cn-chengdu.aliyuncs.com//upload/20221017/854463fdfdf90843e6783fbcb4d7d00c.xlsx', '_blank')
 }
 
 //返回上页
@@ -1060,7 +1095,7 @@ const toBackClick = () => {
 //添加独立表单
 const addingFormModal = ref(false)
 const addingFormClick = () => {
-    const { isLeaf } = treeNodeInfo.value
+    const {isLeaf} = treeNodeInfo.value
     if (isLeaf) {
         addingFormLoading.value = false
         addingFormModal.value = true
@@ -1069,40 +1104,40 @@ const addingFormClick = () => {
     }
 }
 //删除当前节点用表
-const deltableexcel =async (row) => {
-    console.log(row,'row');
-    if(row['isEle']==='1'){
-        if(row['pdfUrl']!==''){
-            window?.$messageBox?.alert('该表已填写数据'+',请谨慎考虑后,确认是否需要删除?', '删除', {
+const deltableexcel = async (row) => {
+    console.log(row, 'row');
+    if (row['isEle'] === '1') {
+        if (row['pdfUrl'] !== '') {
+            window?.$messageBox?.alert('该表已填写数据' + ',请谨慎考虑后,确认是否需要删除?', '删除', {
                 showCancelButton: true,
                 confirmButtonText: '确认删除',
                 cancelButtonText: '取消',
-                callback:async (action) => {
+                callback: async (action) => {
                     if (action === 'confirm') {
-                    const {error, code,msg} = await divisionApi.removeWbsTreeContract({
-                        id: row.pkeyId,
-                        stats:0
-                    })
+                        const {error, code, msg} = await divisionApi.removeWbsTreeContract({
+                            id: row.pkeyId,
+                            stats: 0
+                        })
                         if (!error && code === 200) {
                             window?.$message?.success('删除成功')
                             window?.location?.reload()  //刷新页面
-                        }else{
+                        } else {
                             window?.$message?.warning(msg)
                         }
                     }
                 }
             })
-        }else{
-            const {error, code,msg} = await divisionApi.removeWbsTreeContract({id: row.pkeyId,stats:0})
-                if (!error && code === 200) {
-                            window?.$message?.success('删除成功')
-                            window?.location?.reload()  //刷新页面
-                }else{
-                            window?.$message?.warning(msg)
-                        }
+        } else {
+            const {error, code, msg} = await divisionApi.removeWbsTreeContract({id: row.pkeyId, stats: 0})
+            if (!error && code === 200) {
+                window?.$message?.success('删除成功')
+                window?.location?.reload()  //刷新页面
+            } else {
+                window?.$message?.warning(msg)
+            }
         }
-    }else{
-          window?.$message?.warning('该表不允许删除')
+    } else {
+        window?.$message?.warning('该表不允许删除')
     }
 
 
@@ -1121,7 +1156,7 @@ const addingFormTreeLoadNode = async (node, resolve) => {
         const resData = await tabTypeLazyTree()
         resolve(resData?.data)
     } else {
-        const resData = await tabTypeLazyTree(node?.data?.primaryKeyId, '' , false, {
+        const resData = await tabTypeLazyTree(node?.data?.primaryKeyId, '', false, {
             current: 1, size: 2000,
         })
         resolve(resData?.data)
@@ -1130,15 +1165,15 @@ const addingFormTreeLoadNode = async (node, resolve) => {
 
 //树被点击
 const addingFormTreeItem = ref({})
-const selectItems=ref([])
-const selectItem=ref({})
-const selectIds=ref([])
+const selectItems = ref([])
+const selectItem = ref({})
+const selectIds = ref([])
 const addingFormTreeClick = async (data, node) => {
     searchTreeTitle.value = ''
     addingFormTreeItem.value = data
     dialogTableData.value = []
     searchFormPage.value.current = 1
-    console.log(addingFormTreeItem.value.primaryKeyId,'addingFormTreeItem.value');
+    console.log(addingFormTreeItem.value.primaryKeyId, 'addingFormTreeItem.value');
     if (node?.level === 1) {
         getDialogTableData().then()
 
@@ -1146,8 +1181,8 @@ const addingFormTreeClick = async (data, node) => {
         searchFormPage.value.total = 1
         dialogTableData.value = [data]
 
-        nextTick(()=>{
-            dialogTableRef.value?.toggleRowSelection(data,true);
+        nextTick(() => {
+            dialogTableRef.value?.toggleRowSelection(data, true);
 
         })
         selectItems.value.push(data)
@@ -1157,18 +1192,18 @@ const addingFormTreeClick = async (data, node) => {
 //搜索
 const searchTreeTitle = ref('')
 const querySearchTree = async (key, resolve) => {
-    if(key) {
+    if (key) {
         const primaryKeyId = addingFormTreeItem.value?.primaryKeyId ?? ''
-        const size=100000
-        const { data } = await divisionApi.tabTypeLazyTree({
+        const size = 100000
+        const {data} = await divisionApi.tabTypeLazyTree({
             projectId: projectId.value,
             contractId: contractId.value,
-            titleName:key,
+            titleName: key,
             current: 1,
             size: 10000
         })
         resolve(data?.records)
-    } else{
+    } else {
         resolve([])
     }
 }
@@ -1177,10 +1212,10 @@ const searchTreeSelect = (item) => {
     dialogTableRef.value?.clearSelection()
     dialogTableKeys.value = []
     dialogTableData.value = [item]
-    selectItems.value=[item]
-     nextTick(()=>{
-            dialogTableRef.value?.toggleRowSelection(item,true);
-        })
+    selectItems.value = [item]
+    nextTick(() => {
+        dialogTableRef.value?.toggleRowSelection(item, true);
+    })
     searchFormPage.value.current = 1
     searchFormPage.value.total = 0
 }
@@ -1196,11 +1231,11 @@ const searchFormPageChange = ({current, size}) => {
 //表格数据
 const dialogTableRef = ref(null)
 const dialogTableColumn = ref([
-    {key:'title', name: '表单名称'},
-    {key:'tabType', name: '元素表类型'},
-    {key:'elementTotal', name: '元素总量'},
-    {key:'tabOwner', name: '所属方'},
-    {key:'fillRate', name: '填报率'}
+    {key: 'title', name: '表单名称'},
+    {key: 'tabType', name: '元素表类型'},
+    {key: 'elementTotal', name: '元素总量'},
+    {key: 'tabOwner', name: '所属方'},
+    {key: 'fillRate', name: '填报率'}
 ])
 const dialogTableData = ref([])
 
@@ -1223,11 +1258,11 @@ const getDialogTableData = async () => {
         searchFormPage.value.total = resData.total || 0
 
         //表格勾选回显
-        selectItems.value.forEach((item)=>{
-            dialogTableData.value.forEach((item1)=>{
-                if(item.id===item1.id){
-                    nextTick(()=>{
-                        dialogTableRef.value?.toggleRowSelection(item1,true);
+        selectItems.value.forEach((item) => {
+            dialogTableData.value.forEach((item1) => {
+                if (item.id === item1.id) {
+                    nextTick(() => {
+                        dialogTableRef.value?.toggleRowSelection(item1, true);
                     })
 
                 }
@@ -1279,13 +1314,13 @@ const dialogTableSelect = ({selection, row}) => {
     console.log(selectItems.value, "dialogTableSelect selectItems")
 }
 //获取数据
-const tabTypeLazyTree = async (parentId = '12345678910', titleName = '', search = false, form = {},size) => {
+const tabTypeLazyTree = async (parentId = '12345678910', titleName = '', search = false, form = {}, size) => {
     let obj = {}, searchObj = {}
-    if(parentId) obj.parentId = parentId
-    if(titleName) obj.titleName = titleName
-    if(search) searchObj = searchFormPage.value
+    if (parentId) obj.parentId = parentId
+    if (titleName) obj.titleName = titleName
+    if (search) searchObj = searchFormPage.value
     //发起请求
-    const { data } = await divisionApi.tabTypeLazyTree({
+    const {data} = await divisionApi.tabTypeLazyTree({
         projectId: projectId.value,
         contractId: contractId.value,
         ...obj,
@@ -1305,20 +1340,20 @@ const addingFormSave = async () => {
     // const rows = dialogTableKeys.value
     console.log(dialogTableKeys.value, "addingFormSave")
     const rows = selectItems.value
-    console.log(rows,'rows');
+    console.log(rows, 'rows');
     if (rows.length > 0) {
         addingFormLoading.value = true
-        const { primaryKeyId } = treeItemInfo.value
+        const {primaryKeyId} = treeItemInfo.value
         const ids = rowsToId(rows, 'primaryKeyId')
-        const arrids=ids.split(',')
+        const arrids = ids.split(',')
         let newStr = [...new Set(arrids)].join(',');
         // console.log(newStr,'ids');
         //发起请求
-        const { error, code } = await divisionApi.addWbsContractInfo({
+        const {error, code} = await divisionApi.addWbsContractInfo({
             projectId: projectId.value,
             contractId: contractId.value,
             nodeId: primaryKeyId,
-             primaryKeyIds: newStr
+            primaryKeyIds: newStr
             // primaryKeyIds: ids
         })
         //处理结果
@@ -1351,7 +1386,7 @@ const onmousedown = () => {
     const leftNum = isCollapse.value ? 142 : 272
     document.onmousemove = (ve) => {
         let diffVal = ve.clientX - leftNum;
-        if(diffVal >= 310 && diffVal <= 900) {
+        if (diffVal >= 310 && diffVal <= 900) {
             leftWidth.value = diffVal;
         }
     }

Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 280 - 244
src/views/data-fill/wbs.vue


Kaikkia tiedostoja ei voida näyttää, sillä liian monta tiedostoa muuttui tässä diffissä