Ver código fonte

归档树修改

duy 9 meses atrás
pai
commit
d57f5b0e03

+ 179 - 180
src/views/desk/wbs/archieveComponent/rightConfig.vue

@@ -3,15 +3,15 @@
         <hc-tab-card :tabs="tabsData" :tab-key="tabsKey" @change="tabsChange">
             <div v-if="tabsKey === '1'" style="height: 100%">
                 <el-row style="margin-bottom: 15px">
-                    <el-button type="primary" plain @click="setClick(1)"
-                        >设置为最高并卷层级</el-button
-                    >
-                    <el-button type="primary" plain @click="setClick(2)"
-                        >设置为分类卷并卷</el-button
-                    >
-                    <el-button type="primary" plain @click="setClick(3)"
-                        >设置为独立组卷</el-button
-                    >
+                    <el-button type="primary" plain @click="setClick(1)">
+                        设置为最高并卷层级
+                    </el-button>
+                    <el-button type="primary" plain @click="setClick(2)">
+                        设置为分类卷并卷
+                    </el-button>
+                    <el-button type="primary" plain @click="setClick(3)">
+                        设置为独立组卷
+                    </el-button>
                 </el-row>
 
                 <div style="height: 100%">
@@ -22,31 +22,29 @@
                                     v-model="publictreeValue"
                                     clearable
                                     placeholder="请选择公有质检化分树"
-                                    @change="treeIdChange"
                                     class="w-80"
+                                    @change="treeIdChange"
                                 >
                                     <el-option
                                         v-for="item in publictreeOptions"
                                         :key="item.id"
                                         :label="item.wbsName"
                                         :value="item.id"
-                                    >
-                                    </el-option>
+                                    />
                                 </el-select>
                                 <el-select
                                     v-model="testtreeValue"
                                     clearable
                                     placeholder="请选择试验化分树"
+                                    class="ml-2 w-80"
                                     @change="testTreeIdChange"
-                                    class="w-80 ml-2"
                                 >
                                     <el-option
                                         v-for="item in testtreeOptions"
                                         :key="item.id"
                                         :label="item.wbsName"
                                         :value="item.id"
-                                    >
-                                    </el-option>
+                                    />
                                 </el-select>
                                 <div class="hc-tab-scroll-class-second mt-2">
                                     <el-scrollbar v-loading="treeLoading">
@@ -65,14 +63,14 @@
                                                 <template
                                                     v-if="
                                                         Number(
-                                                            data.archiveAutoGroupSelect
+                                                            data.archiveAutoGroupSelect,
                                                         ) === 1
                                                     "
                                                 >
                                                     <div
                                                         v-if="
                                                             Number(
-                                                                data.archiveAutoType
+                                                                data.archiveAutoType,
                                                             ) === 1
                                                         "
                                                         class="config_type"
@@ -82,7 +80,7 @@
                                                     <div
                                                         v-if="
                                                             Number(
-                                                                data.archiveAutoType
+                                                                data.archiveAutoType,
                                                             ) === 2
                                                         "
                                                         class="config_type"
@@ -92,7 +90,7 @@
                                                     <div
                                                         v-if="
                                                             Number(
-                                                                data.archiveAutoType
+                                                                data.archiveAutoType,
                                                             ) === 3
                                                         "
                                                         class="config_type"
@@ -102,8 +100,7 @@
                                                 </template>
                                                 <span
                                                     class="text-16px font-400"
-                                                    >{{ data.title }}</span
-                                                >
+                                                >{{ data.title }}</span>
                                             </template>
                                         </hc-data-tree>
                                     </el-scrollbar>
@@ -116,15 +113,15 @@
             <!-- 工程文件入口配置 -->
             <div v-if="tabsKey === '2'">
                 <entryConfig
-                    :rightData="rightData"
-                    :wbsId="treeSelectId"
-                ></entryConfig>
+                    :right-data="rightData"
+                    :wbs-id="treeSelectId"
+                />
             </div>
         </hc-tab-card>
         <!-- 设置最高层级 -->
         <hc-dialog
-            :title="titleName"
             v-model="highVisible"
+            :title="titleName"
             @save="setRecordsHandle"
             @close="highVisible = false"
         >
@@ -134,7 +131,7 @@
                         :label="node.pathName"
                         :value="node.id"
                         style="margin-bottom: 10px"
-                    ></el-checkbox>
+                    />
                 </div>
             </el-checkbox-group>
         </hc-dialog>
@@ -155,19 +152,19 @@
                 </template>
                 <template v-else>
                     <hc-data-tree
+                        ref="configtree"
                         :datas="configInfo.data"
                         :h-props="{ label: 'nodeName' }"
                         show-checkbox
                         :check-strictly="true"
                         :default-checked-keys="checkedKeys"
-                        :autoExpandKeys="checkedKeys"
+                        :auto-expand-keys="checkedKeys"
                         tree-key="id"
-                        ref="configtree"
                         @check="configCheckChange"
-                    ></hc-data-tree>
+                    />
                 </template>
             </div>
-            <div style="text-align: center; font-size: 22px" v-else>
+            <div v-else style="text-align: center; font-size: 22px">
                 该节点尚未配置
             </div>
 
@@ -177,101 +174,103 @@
                     v-if="configInfo && configInfo.type == 2"
                     type="primary"
                     @click="changeConfig"
-                    >确认修改配置</el-button
                 >
+                    确认修改配置
+                </el-button>
             </template>
         </hc-dialog>
     </div>
 </template>
+
 <script setup>
-import { ref, onMounted } from "vue";
-import entryConfig from "../entry-config.vue";
-import wbsApi from "~api/desk/wbs";
-import mainApi from "~api/project/tree";
-import archiveApi from "~api/desk/archive-tree";
-import { getArrValue } from "js-fast-way";
-import { HcDelMsg } from "hc-vue3-ui";
+import { onMounted, ref } from 'vue'
+import entryConfig from '../entry-config.vue'
+import wbsApi from '~api/desk/wbs'
+import mainApi from '~api/project/tree'
+import archiveApi from '~api/desk/archive-tree'
+import { getArrValue } from 'js-fast-way'
+import { HcDelMsg } from 'hc-vue3-ui'
 onMounted(() => {
-    getPublictreeoptions();
-    getTesttreeOptions();
-});
-const tabsKey = ref("1");
+    getPublictreeoptions()
+    getTesttreeOptions()
+})
+const tabsKey = ref('1')
 const tabsData = ref([
-    { key: "1", name: "立卷规则" },
-    { key: "2", name: "工程文件入口配置" },
-]);
+    { key: '1', name: '立卷规则' },
+    { key: '2', name: '工程文件入口配置' },
+])
 const tabsChange = (item) => {
-    tabsKey.value = item.key;
+    tabsKey.value = item.key
     splitOptions.value = {
         sizes: [45, 45],
         snapOffset: 0,
         minSize: [300, 300],
-    };
-};
-const splitOptions = { sizes: [45, 45], snapOffset: 0, minSize: [300, 300] };
+    }
+}
+const splitOptions = { sizes: [45, 45], snapOffset: 0, minSize: [300, 300] }
 //选择公有质检划分树
-const publictreeValue = ref("");
-const testtreeValue = ref("");
-const treeSelectId = ref("");
+const publictreeValue = ref('')
+const testtreeValue = ref('')
+const treeSelectId = ref('')
 const treeIdChange = (val) => {
-    getSecondTreeData(val);
-    getRightData(val);
-    treeSelectId.value = val;
+    getSecondTreeData(val)
+    getRightData(val)
+    treeSelectId.value = val
     if (testtreeValue.value) {
-        testtreeValue.value = "";
+        testtreeValue.value = ''
     }
-};
+}
 const testTreeIdChange = (val) => {
-    treeSelectId.value = val;
-    getSecondTreeData(val);
-    getRightData(val);
+    treeSelectId.value = val
+    getSecondTreeData(val)
+    getRightData(val)
     if (publictreeValue.value) {
-        publictreeValue.value = "";
+        publictreeValue.value = ''
     }
-};
-const publictreeOptions = ref([]);
-const testtreeOptions = ref([]);
+}
+const publictreeOptions = ref([])
+const testtreeOptions = ref([])
 const getPublictreeoptions = async () => {
-    const { code, data } = await wbsApi.getWbsList(1);
+    const { code, data } = await wbsApi.getWbsList(1)
     if (code == 200) {
-        publictreeOptions.value = getArrValue(data);
+        publictreeOptions.value = getArrValue(data)
     }
-};
+}
 const getTesttreeOptions = async () => {
-    const { code, data } = await wbsApi.getWbsList(2);
+    const { code, data } = await wbsApi.getWbsList(2)
     if (code == 200) {
-        testtreeOptions.value = getArrValue(data);
+        testtreeOptions.value = getArrValue(data)
     }
-};
+}
 //立卷规则树
-const secondTreeRef = ref(null);
+const secondTreeRef = ref(null)
 
-const secondTreeData = ref([]);
+const secondTreeData = ref([])
 const secondTreeProps = {
-    label: "title",
-};
+    label: 'title',
+}
 
 //立卷规则树右键菜单
 const secondTreeMenu = (_, resolve) => {
     resolve([
-        { icon: "eye", label: "查看配置", key: "rank" },
-        { icon: "delete-bin", label: "删除", key: "del" },
-    ]);
-};
+        { icon: 'eye', label: '查看配置', key: 'rank' },
+        { icon: 'delete-bin', label: '删除', key: 'del' },
+    ])
+}
 //立卷规则树
-const treeLoading = ref(false);
+const treeLoading = ref(false)
 const getSecondTreeData = async (wbsId) => {
-    treeLoading.value = true;
+    treeLoading.value = true
     const { data } = await mainApi.allTree({
         projectId: 0,
         wbsId,
-    });
-    treeLoading.value = false;
-    secondTreeData.value = getArrValue(data);
-};
+    })
+    treeLoading.value = false
+    secondTreeData.value = getArrValue(data)
+}
 const secondTreeMenuClick = async ({ key, data, node }) => {
-    if (key === "rank") {
-        configInfo.value = null;
+    if (key === 'rank') {
+        configInfo.value = null
         const {
             data: res,
             code,
@@ -282,179 +281,179 @@ const secondTreeMenuClick = async ({ key, data, node }) => {
             projectId: 0, //   系统级为0  项目级为项目id
             wbsNode2ArchiveTreeNodeId: data.wbsNode2ArchiveTreeNodeId, // 这个树节点里面有(iswbsNode为true需传)
             wbsId: treeSelectId.value, // 这个就是一开始上面选择划分树的id(iswbsNode为true需传)
-        });
-        console.log(res, "res");
+        })
+        console.log(res, 'res')
 
-        if (code == 200 && msg == "操作成功") {
+        if (code == 200 && msg == '操作成功') {
             if (res.type) {
-                configInfo.value = res;
+                configInfo.value = res
             } else if (res.archiveAutoType) {
                 configInfo.value = {
                     type: 2,
                     data: res.tree,
-                };
-                checkedKeys.value = res?.selectNodeIds.split(",");
+                }
+                checkedKeys.value = res?.selectNodeIds.split(',')
             } else {
-                configInfo.value = {};
+                configInfo.value = {}
             }
-            configVisible.value = true;
+            configVisible.value = true
         }
-    } else if (key === "del") {
+    } else if (key === 'del') {
         HcDelMsg(async (resolve) => {
             const { code } = await archiveApi.removeArchiveAutoRule({
                 nodeId: data.id,
                 iswbsNode: data.iswbsNode, //是否是wbs节点   flase 不是 true 是 (先false,具体怎么区分后面再看)
                 projectId: 0, //   系统级为0  项目级为项目id
-            });
-            resolve(); //关闭弹窗的回调
-            if (code !== 200) return;
-            window.$message.success("删除成功");
-            getSecondTreeData(treeSelectId.value);
-        }).then();
+            })
+            resolve() //关闭弹窗的回调
+            if (code !== 200) return
+            window.$message.success('删除成功')
+            getSecondTreeData(treeSelectId.value)
+        }).then()
     }
-};
-const titleName = ref("");
-const archiveAutoType = ref(1);
+}
+const titleName = ref('')
+const archiveAutoType = ref(1)
 const setName = (type) => {
     switch (type) {
         case 1:
-            archiveAutoType.value = 1;
-            titleName.value = "设置最高并卷层级";
-            break;
+            archiveAutoType.value = 1
+            titleName.value = '设置最高并卷层级'
+            break
         case 2:
-            archiveAutoType.value = 2;
-            titleName.value = "设置分类并卷层级";
-            break;
+            archiveAutoType.value = 2
+            titleName.value = '设置分类并卷层级'
+            break
         case 3:
-            archiveAutoType.value = 3;
-            titleName.value = "设置单独并卷层级";
-            break;
+            archiveAutoType.value = 3
+            titleName.value = '设置单独并卷层级'
+            break
     }
-};
-const highVisible = ref(false);
-const checkList = ref([]);
-const nodesList = ref([]);
+}
+const highVisible = ref(false)
+const checkList = ref([])
+const nodesList = ref([])
 
 //设置为最高并卷层级
 
 const setClick = (type) => {
     if (!publictreeValue.value && !testtreeValue.value) {
         window.$message({
-            message: "请先在下拉框选择树,在勾选树节点,再进行设置",
-            type: "warning",
-        });
-        return false;
+            message: '请先在下拉框选择树,在勾选树节点,再进行设置',
+            type: 'warning',
+        })
+        return false
     }
-    const treeRef = secondTreeRef.value?.getRef(); //树的原始ref
-    const nodes = treeRef.getCheckedNodes(); //获取选中的节点
-    console.log(nodes, "nodes");
+    const treeRef = secondTreeRef.value?.getRef() //树的原始ref
+    const nodes = treeRef.getCheckedNodes() //获取选中的节点
+    console.log(nodes, 'nodes')
 
     if (nodes.length < 1) {
         window.$message({
-            message: "请先勾选节点,再进行设置",
-            type: "warning",
-        });
-        return false;
+            message: '请先勾选节点,再进行设置',
+            type: 'warning',
+        })
+        return false
     }
-    let ids = [];
+    let ids = []
     nodes.forEach((element) => {
-        element.pathName = getTreeNodePath(element, "secondTreeRef");
-        ids.push(element.id);
-    });
-    console.log(nodes, "nodes");
-    checkList.value = ids;
-    nodesList.value = nodes;
-    setName(type);
-    highVisible.value = true;
-};
+        element.pathName = getTreeNodePath(element, 'secondTreeRef')
+        ids.push(element.id)
+    })
+    console.log(nodes, 'nodes')
+    checkList.value = ids
+    nodesList.value = nodes
+    setName(type)
+    highVisible.value = true
+}
 //获取树节点名字路径
 const getTreeNodePath = (node, refName) => {
-    let nodeInfo = secondTreeRef.value.treeRef.getNode(node.id);
-    let pathArr = [];
+    let nodeInfo = secondTreeRef.value.treeRef.getNode(node.id)
+    let pathArr = []
     while (nodeInfo.parent) {
-        pathArr.push(nodeInfo.data.title);
-        nodeInfo = nodeInfo.parent;
+        pathArr.push(nodeInfo.data.title)
+        nodeInfo = nodeInfo.parent
     }
-    return pathArr.reverse().join("/");
-};
+    return pathArr.reverse().join('/')
+}
 
 const setRecordsHandle = async () => {
     const { code, msg } = await archiveApi.saveArchiveAutoRule({
         archiveAutoType: archiveAutoType.value, //最高1  分类2  独立3
-        selectNodeIds: checkList.value.join(","), //鼠标选择的节点ID(只要鼠标选择的节点,选择节点的下级子节点那种不要),逗号拼接
+        selectNodeIds: checkList.value.join(','), //鼠标选择的节点ID(只要鼠标选择的节点,选择节点的下级子节点那种不要),逗号拼接
         iswbsNode: nodesList.value[0].iswbsNode, //是否是wbs节点
         projectId: 0, //   系统级为0  项目级为项目id
-    });
+    })
 
-    if (code == 200 && msg == "操作成功") {
+    if (code == 200 && msg == '操作成功') {
         window.$message({
-            type: "success",
-            message: "设置成功",
-        });
+            type: 'success',
+            message: '设置成功',
+        })
 
         if (publictreeValue.value) {
-            treeIdChange(treeSelectId.value);
+            treeIdChange(treeSelectId.value)
         } else {
-            testTreeIdChange(treeSelectId.value);
+            testTreeIdChange(treeSelectId.value)
         }
 
-        highVisible.value = false;
+        highVisible.value = false
     }
-};
+}
 
 //查看配置
-const configtree = ref(null);
-const configVisible = ref(false);
-const configInfo = ref({});
-const checkedKeys = ref([]);
+const configtree = ref(null)
+const configVisible = ref(false)
+const configInfo = ref({})
+const checkedKeys = ref([])
 const configCheckChange = (_, { checkedNodes }) => {
-    let array = checkedNodes;
+    let array = checkedNodes
     for (let index = 1; index < array.length; index++) {
-        const element = array[index];
+        const element = array[index]
         if (element.iswbsNode !== array[0].iswbsNode) {
             //取消勾选
-            configtree.value.treeRef.setChecked(data.id, false, false);
+            configtree.value.treeRef.setChecked(data.id, false, false)
             window.$message({
-                message: "非wbs节点不能和wbs节点一起设置规则",
-                type: "warning",
-            });
-            return;
+                message: '非wbs节点不能和wbs节点一起设置规则',
+                type: 'warning',
+            })
+            return
         }
     }
-};
+}
 const changeConfig = async () => {
-    let keys = configtree.value.treeRef.getCheckedKeys();
-    let nodes = configtree.value.treeRef.getCheckedNodes();
-    console.log(nodes);
+    let keys = configtree.value.treeRef.getCheckedKeys()
+    let nodes = configtree.value.treeRef.getCheckedNodes()
+    console.log(nodes)
     const { code, msg } = await archiveApi.updateArchiveAutoRule({
         archiveAutoType: 2, //最高1  分类2  独立3
         archiveAutoGroupId: configInfo.value.data.archiveAutoGroupId,
-        selectNodeIds: keys.join(","), //鼠标选择的节点ID(只要鼠标选择的节点,选择节点的下级子节点那种不要),逗号拼接
+        selectNodeIds: keys.join(','), //鼠标选择的节点ID(只要鼠标选择的节点,选择节点的下级子节点那种不要),逗号拼接
         iswbsNode: nodes[0].iswbsNode, //是否是wbs节点
         projectId: 0, //   系统级为0  项目级为项目id
-    });
+    })
 
     if (code == 200) {
         window.$message({
-            type: "success",
+            type: 'success',
             message: msg,
-        });
-        configVisible.value = false;
+        })
+        configVisible.value = false
     }
-};
+}
 
 //工程文件入口配置
-const rightData = ref([]);
+const rightData = ref([])
 const getRightData = async (id) => {
     const { data, code } = await archiveApi.archiveTreetree({
         projectId: 0,
         wbsId: id,
-    });
+    })
     if (code == 200) {
-        rightData.value = getArrValue(data);
-        console.log(rightData.value, " rightData.value");
+        rightData.value = getArrValue(data)
+        console.log(rightData.value, ' rightData.value')
     }
-};
+}
 </script>
 
 <style scoped lang="scss">

+ 314 - 304
src/views/project/tree/drawer-temp.vue

@@ -5,54 +5,56 @@
         is-close
         @close="drawerClose"
     >
-        <hc-body split>
+        <hc-body split :options="splitOptions">
             <template #left>
-                <hc-card scrollbar>
-                    <template #header>
-                        <hc-search-input
-                            v-model="searchTreeName"
-                            placeholder="请输入关键字"
-                            @search="searchTreeNameClick"
-                        />
-                    </template>
-                    <template v-if="isTreeMode === 1">
-                        <hc-lazy-tree
-                            v-if="isShow"
-                            ref="treeRef1"
-                            is-load-menu
-                            :h-props="treeProps"
-                            tree-key="id"
-                            @load-menu="treeMenu"
-                            @load="treeLoadNode"
-                            @node-tap="treeNodeTap"
-                            @menu-tap="treeMenuClick"
-                        >
-                            <template #name="{ data }">
-                                <span class="text-16px font-400">{{
-                                    data.title
-                                }}</span>
-                            </template>
-                        </hc-lazy-tree>
-                    </template>
-                    <template v-if="isTreeMode === 2">
-                        <hc-data-tree
-                            ref="treeRef2"
-                            is-load-menu
-                            :h-props="treeProps"
-                            tree-key="id"
-                            :datas="treeData"
-                            @load-menu="treeMenu"
-                            @node-tap="treeNodeTap"
-                            @menu-tap="treeMenuClick"
-                        >
-                            <template #name="{ data }">
-                                <span class="text-16px font-400">{{
-                                    data.title
-                                }}</span>
-                            </template>
-                        </hc-data-tree>
-                    </template>
-                </hc-card>
+                <hc-tab-card :tabs="tabsData1" :tab-key="tabsKey1">
+                    <hc-card scrollbar>
+                        <template #header>
+                            <hc-search-input
+                                v-model="searchTreeName"
+                                placeholder="请输入关键字"
+                                @search="searchTreeNameClick"
+                            />
+                        </template>
+                        <template v-if="isTreeMode === 1">
+                            <hc-lazy-tree
+                                v-if="isShow"
+                                ref="treeRef1"
+                                is-load-menu
+                                :h-props="treeProps"
+                                tree-key="id"
+                                @load-menu="treeMenu"
+                                @load="treeLoadNode"
+                                @node-tap="treeNodeTap"
+                                @menu-tap="treeMenuClick"
+                            >
+                                <template #name="{ data }">
+                                    <span class="text-16px font-400">{{
+                                        data.title
+                                    }}</span>
+                                </template>
+                            </hc-lazy-tree>
+                        </template>
+                        <template v-if="isTreeMode === 2">
+                            <hc-data-tree
+                                ref="treeRef2"
+                                is-load-menu
+                                :h-props="treeProps"
+                                tree-key="id"
+                                :datas="treeData"
+                                @load-menu="treeMenu"
+                                @node-tap="treeNodeTap"
+                                @menu-tap="treeMenuClick"
+                            >
+                                <template #name="{ data }">
+                                    <span class="text-16px font-400">{{
+                                        data.title
+                                    }}</span>
+                                </template>
+                            </hc-data-tree>
+                        </template>
+                    </hc-card>
+                </hc-tab-card>
             </template>
             <hc-tab-card
                 :tabs="tabsData"
@@ -61,15 +63,15 @@
             >
                 <template v-if="tabsKey === 'second'">
                     <div class="hc-flex mb-10px">
-                        <el-button type="primary" plain @click="setClick(1)"
-                            >设置为最高并卷层级</el-button
-                        >
-                        <el-button type="primary" plain @click="setClick(2)"
-                            >设置为分类卷并卷</el-button
-                        >
-                        <el-button type="primary" plain @click="setClick(3)"
-                            >设置为独立组卷</el-button
-                        >
+                        <el-button type="primary" plain @click="setClick(1)">
+                            设置为最高并卷层级
+                        </el-button>
+                        <el-button type="primary" plain @click="setClick(2)">
+                            设置为分类卷并卷
+                        </el-button>
+                        <el-button type="primary" plain @click="setClick(3)">
+                            设置为独立组卷
+                        </el-button>
                     </div>
                     <div class="hc-tab-scroll-class-second">
                         <el-scrollbar v-loading="secondTreeLoad">
@@ -89,14 +91,14 @@
                                     <template
                                         v-if="
                                             Number(
-                                                data.archiveAutoGroupSelect
+                                                data.archiveAutoGroupSelect,
                                             ) === 1
                                         "
                                     >
                                         <div
                                             v-if="
-                                                Number(data.archiveAutoType) ===
-                                                1
+                                                Number(data.archiveAutoType)
+                                                    === 1
                                             "
                                             class="config_type"
                                         >
@@ -104,8 +106,8 @@
                                         </div>
                                         <div
                                             v-if="
-                                                Number(data.archiveAutoType) ===
-                                                2
+                                                Number(data.archiveAutoType)
+                                                    === 2
                                             "
                                             class="config_type"
                                         >
@@ -113,8 +115,8 @@
                                         </div>
                                         <div
                                             v-if="
-                                                Number(data.archiveAutoType) ===
-                                                3
+                                                Number(data.archiveAutoType)
+                                                    === 3
                                             "
                                             class="config_type"
                                         >
@@ -131,10 +133,10 @@
                 </template>
                 <template v-if="tabsKey === 'first'">
                     <entryConfig
-                        :rightData="secondTreeData"
-                        :projectId="dataInfo.id"
-                        :tabKey="tabsKey"
-                    ></entryConfig>
+                        :right-data="secondTreeData"
+                        :project-id="dataInfo.id"
+                        :tab-key="tabsKey"
+                    />
                 </template>
             </hc-tab-card>
         </hc-body>
@@ -169,19 +171,19 @@
                 </template>
                 <template v-else>
                     <hc-data-tree
+                        ref="configtree"
                         :datas="configInfo.data"
                         tree-key="id"
                         :h-props="configTreeProps"
                         show-checkbox
                         :check-strictly="true"
                         :default-checked-keys="checkedKeys"
-                        :autoExpandKeys="checkedKeys"
-                        ref="configtree"
+                        :auto-expand-keys="checkedKeys"
                         @check="configCheckChange"
-                    ></hc-data-tree>
+                    />
                 </template>
             </div>
-            <div style="text-align: center; font-size: 22px" v-else>
+            <div v-else style="text-align: center; font-size: 22px">
                 该节点尚未配置
             </div>
 
@@ -191,14 +193,15 @@
                     v-if="configInfo && configInfo.type == 2"
                     type="primary"
                     @click="changeConfig"
-                    >确认修改配置</el-button
                 >
+                    确认修改配置
+                </el-button>
             </template>
         </hc-dialog>
         <!-- 设置最高层级 -->
         <hc-dialog
-            :title="titleName"
             v-model="highVisible"
+            :title="titleName"
             @save="setRecordsHandle"
             @close="highVisible = false"
         >
@@ -208,7 +211,7 @@
                         :label="node.pathName"
                         :value="node.id"
                         style="margin-bottom: 10px"
-                    ></el-checkbox>
+                    />
                 </div>
             </el-checkbox-group>
         </hc-dialog>
@@ -216,251 +219,258 @@
 </template>
 
 <script setup>
-import { ref, watch } from "vue";
-import { HcDelMsg, HcFirmMsg } from "hc-vue3-ui";
-import { getArrValue, isNullES } from "js-fast-way";
-import HcTreeNodeForm from "./tree-form.vue";
-import HcTreeNodeSort from "./tree-sort.vue";
-import mainApi from "~api/project/tree";
-import archiveApi from "~api/desk/archive-tree";
-import entryConfig from "../../desk/wbs/entry-config.vue";
+import { ref, watch } from 'vue'
+import { HcDelMsg, HcFirmMsg } from 'hc-vue3-ui'
+import { getArrValue, isNullES } from 'js-fast-way'
+import HcTreeNodeForm from './tree-form.vue'
+import HcTreeNodeSort from './tree-sort.vue'
+import mainApi from '~api/project/tree'
+import archiveApi from '~api/desk/archive-tree'
+import entryConfig from '../../desk/wbs/entry-config.vue'
 const props = defineProps({
     data: {
         type: Object,
         default: () => ({}),
     },
-});
+})
 
 //事件
-const emit = defineEmits(["close"]);
+const emit = defineEmits(['close'])
 
 //双向绑定
-const isShow = defineModel("modelValue", {
+const isShow = defineModel('modelValue', {
     default: false,
-});
+})
 
 //监听数据
-const dataInfo = ref(props.data);
+const dataInfo = ref(props.data)
 watch(
     () => props.data,
     (data) => {
-        dataInfo.value = data;
+        dataInfo.value = data
     },
-    { immediate: true, deep: true }
-);
+    { immediate: true, deep: true },
+)
 
 //监听显示
 watch(isShow, (val) => {
-    if (val) getDataApi();
-});
+    if (val) getDataApi()
+})
 
 //处理相关数据
 const getDataApi = () => {
-    getTreeAllData();
-    getSecondTreeData();
-};
+    getTreeAllData()
+    getSecondTreeData()
+}
 
 //树搜索
-const isTreeMode = ref(1); //1懒加载,2全加载
-const searchTreeName = ref("");
+const isTreeMode = ref(1) //1懒加载,2全加载
+const searchTreeName = ref('')
 const searchTreeNameClick = async () => {
     if (isNullES(searchTreeName.value)) {
-        isTreeMode.value = 1;
+        isTreeMode.value = 1
     } else {
-        isTreeMode.value = 2;
-        await getTreeAllData();
-        treeRef2.value?.treeRef?.filter(searchTreeName.value);
+        isTreeMode.value = 2
+        await getTreeAllData()
+        treeRef2.value?.treeRef?.filter(searchTreeName.value)
     }
-};
+}
 
 //树配置
-const treeRef1 = ref(null);
-const treeRef2 = ref(null);
+const treeRef1 = ref(null)
+const treeRef2 = ref(null)
 const treeProps = {
-    label: "title",
-    children: "children",
-    isLeaf: "hasChildren",
-};
+    label: 'title',
+    children: 'children',
+    isLeaf: 'hasChildren',
+}
 
 //懒加载树的菜单
 const treeMenu = ({ level }, resolve) => {
-    let newMenu = [];
+    let newMenu = []
     if (level !== 1) {
-        newMenu.push({ icon: "add-circle", label: "新增", key: "add" });
-        newMenu.push({ icon: "draft", label: "编辑", key: "edit" });
-        newMenu.push({ icon: "arrow-up-down", label: "排序", key: "rank" });
-        newMenu.push({ icon: "delete-bin", label: "删除", key: "del" });
+        newMenu.push({ icon: 'add-circle', label: '新增', key: 'add' })
+        newMenu.push({ icon: 'draft', label: '编辑', key: 'edit' })
+        newMenu.push({ icon: 'arrow-up-down', label: '排序', key: 'rank' })
+        newMenu.push({ icon: 'delete-bin', label: '删除', key: 'del' })
     }
-    newMenu.push({ icon: "refresh", label: "同步", key: "sync" });
-    resolve(newMenu);
-};
+    newMenu.push({ icon: 'refresh', label: '同步', key: 'sync' })
+    resolve(newMenu)
+}
 
 //菜单被点击
 const treeMenuClick = ({ key, data, node }) => {
-    if (key === "add") {
+    if (key === 'add') {
         if (Number(data.isStorageNode) !== 1) {
-            treeFormType.value = "新增";
-            treeFormData.value = data;
-            treeFormNode.value = node;
-            isTreeFormShow.value = true;
+            treeFormType.value = '新增'
+            treeFormData.value = data
+            treeFormNode.value = node
+            isTreeFormShow.value = true
         } else {
-            window.$message.warning("该节点下不允许新增节点");
+            window.$message.warning('该节点下不允许新增节点')
         }
-    } else if (key === "edit") {
-        treeFormType.value = "编辑";
-        treeFormData.value = data;
-        treeFormNode.value = node;
-        isTreeFormShow.value = true;
-    } else if (key === "rank") {
-        treeSortData.value = data;
-        isTreeSortShow.value = true;
-    } else if (key === "del") {
-        delTreeNode(data.id);
-    } else if (key === "sync") {
-        syncTreeNode(data.id);
+    } else if (key === 'edit') {
+        treeFormType.value = '编辑'
+        treeFormData.value = data
+        treeFormNode.value = node
+        isTreeFormShow.value = true
+    } else if (key === 'rank') {
+        treeSortData.value = data
+        isTreeSortShow.value = true
+    } else if (key === 'del') {
+        delTreeNode(data.id)
+    } else if (key === 'sync') {
+        syncTreeNode(data.id)
     }
-};
+}
 
 //树节点新增/编辑
-const isTreeFormShow = ref(false);
-const treeFormData = ref({});
-const treeFormNode = ref({});
-const treeFormType = ref("新增");
+const isTreeFormShow = ref(false)
+const treeFormData = ref({})
+const treeFormNode = ref({})
+const treeFormType = ref('新增')
 
 //树节点排序
-const isTreeSortShow = ref(false);
-const treeSortData = ref({});
+const isTreeSortShow = ref(false)
+const treeSortData = ref({})
 
 //删除树节点
 const delTreeNode = (id) => {
     HcDelMsg(async (resolve) => {
-        const { isRes } = await mainApi.removeTree(id);
-        if (!isRes) return;
-        window.$message.success("删除成功");
-        resolve(); //关闭弹窗的回调
-        pseudoRefresh();
-    });
-};
+        const { isRes } = await mainApi.removeTree(id)
+        if (!isRes) return
+        window.$message.success('删除成功')
+        resolve() //关闭弹窗的回调
+        pseudoRefresh()
+    })
+}
 
 //同步树节点
 const syncTreeNode = (id) => {
-    HcFirmMsg({ text: "是否同步该节点?" }, async (resolve) => {
-        const { isRes } = await mainApi.syncProjectTree({ id });
-        resolve(); //关闭弹窗的回调
-        if (!isRes) return;
-        window.$message.success("操作成功");
-        pseudoRefresh();
-    });
-};
+    HcFirmMsg({ text: '是否同步该节点?' }, async (resolve) => {
+        const { isRes } = await mainApi.syncProjectTree({ id })
+        resolve() //关闭弹窗的回调
+        if (!isRes) return
+        window.$message.success('操作成功')
+        pseudoRefresh()
+    })
+}
 
 //伪刷新
 const pseudoRefresh = () => {
-    const val = isTreeMode.value;
-    isTreeMode.value = 4;
-    treeFormData.value = {};
-    treeFormNode.value = {};
-    treeFormType.value = "";
-    treeSortData.value = {};
+    const val = isTreeMode.value
+    isTreeMode.value = 4
+    treeFormData.value = {}
+    treeFormNode.value = {}
+    treeFormType.value = ''
+    treeSortData.value = {}
     setTimeout(() => {
-        isTreeMode.value = val;
-    }, 300);
-};
+        isTreeMode.value = val
+    }, 300)
+}
 
 //全加载树
-const treeData = ref([]);
+const treeData = ref([])
 const getTreeAllData = async () => {
     const { data } = await mainApi.allTree({
         projectId: dataInfo.value.id,
-    });
-    treeData.value = getArrValue(data);
-};
+    })
+    treeData.value = getArrValue(data)
+}
 
 //立卷规则树
 const getSecondTreeData = async () => {
-    secondTreeLoad.value = true;
+    secondTreeLoad.value = true
     const { data } = await mainApi.allTree({
         projectId: dataInfo.value.id,
-    });
-    secondTreeLoad.value = false;
-    secondTreeData.value = getArrValue(data);
-};
+    })
+    secondTreeLoad.value = false
+    secondTreeData.value = getArrValue(data)
+}
 
 //懒加载树
 const treeLoadNode = async ({ item, level }, resolve) => {
-    const parentId = level === 0 ? 0 : item.id;
+    const parentId = level === 0 ? 0 : item.id
     if (level === 0) {
-        const arr = await lazyNodeTree(parentId);
+        const arr = await lazyNodeTree(parentId)
         if (arr.length) {
-            resolve(arr);
+            resolve(arr)
         } else {
-            resolve(await archiveTreeInit());
+            resolve(await archiveTreeInit())
         }
     } else {
-        resolve(await lazyNodeTree(parentId));
+        resolve(await lazyNodeTree(parentId))
     }
-};
+}
 
 //懒加载树接口
 const lazyNodeTree = async (id) => {
     const { data } = await mainApi.lazyTree({
         parentId: id,
         projectId: dataInfo.value.id,
-    });
-    const res = getArrValue(data);
+    })
+    const res = getArrValue(data)
     for (let i = 0; i < res.length; i++) {
-        res[i].hasChildren = !res[i].hasChildren;
+        res[i].hasChildren = !res[i].hasChildren
     }
-    return res;
-};
+    return res
+}
 
 //初始化根节点
 const archiveTreeInit = async () => {
     const { data } = await mainApi.treeInit({
         projectId: dataInfo.value.id,
-    });
-    const res = getArrValue(data);
+    })
+    const res = getArrValue(data)
     for (let i = 0; i < res.length; i++) {
-        res[i].hasChildren = !res[i].hasChildren;
+        res[i].hasChildren = !res[i].hasChildren
     }
-    return res;
-};
+    return res
+}
 
 //树节点被点击
-const nodeInfo = ref({});
+const nodeInfo = ref({})
 const treeNodeTap = ({ data }) => {
-    nodeInfo.value = data;
-};
-
+    nodeInfo.value = data
+}
+//页面分割
+const splitOptions = { sizes: [50, 50], snapOffset: 0, minSize: [300, 300] }
+//左边选项卡
+const tabsKey1 = ref('1')
+const tabsData1 = ref([
+{ key: '1', name: '竣工档案目录' },
+{ key: '2', name: '文书档案目录' },
+])
 //右边选项卡
-const tabsKey = ref("second");
+const tabsKey = ref('second')
 const tabsData = ref([
-    { key: "second", name: "立卷规则" },
-    { key: "first", name: "工程文件入口配置" },
-]);
+    { key: 'second', name: '立卷规则' },
+    { key: 'first', name: '工程文件入口配置' },
+])
 const tabsChange = ({ key }) => {
-    tabsKey.value = key;
-    getSecondTreeData();
-};
+    tabsKey.value = key
+    getSecondTreeData()
+}
 
 //立卷规则树
-const secondTreeLoad = ref(false);
-const secondTree = ref(null);
-const secondTreeData = ref([]);
+const secondTreeLoad = ref(false)
+const secondTree = ref(null)
+const secondTreeData = ref([])
 const secondTreeProps = {
-    label: "title",
-};
+    label: 'title',
+}
 
 //立卷规则树右键菜单
 const secondTreeMenu = (_, resolve) => {
     resolve([
-        { icon: "eye", label: "查看配置", key: "rank" },
-        { icon: "delete-bin", label: "删除", key: "del" },
-    ]);
-};
+        { icon: 'eye', label: '查看配置', key: 'rank' },
+        { icon: 'delete-bin', label: '删除', key: 'del' },
+    ])
+}
 
 const secondTreeMenuClick = async ({ key, data, node }) => {
-    if (key === "rank") {
-        configInfo.value = null;
+    if (key === 'rank') {
+        configInfo.value = null
         const {
             data: res,
             code,
@@ -470,165 +480,165 @@ const secondTreeMenuClick = async ({ key, data, node }) => {
             iswbsNode: data.iswbsNode, //是否是wbs节点
             projectId: dataInfo.value.id, //   系统级为0  项目级为项目id
             wbsNode2ArchiveTreeNodeId: data.wbsNode2ArchiveTreeNodeId, // 这个树节点里面有(iswbsNode为true需传)
-        });
-        console.log(res, "res");
+        })
+        console.log(res, 'res')
 
-        if (code == 200 && msg == "操作成功") {
+        if (code == 200 && msg == '操作成功') {
             if (res.type) {
-                configInfo.value = res;
+                configInfo.value = res
             } else if (res.archiveAutoType) {
                 configInfo.value = {
                     type: 2,
                     data: res.tree,
-                };
+                }
 
-                checkedKeys.value = res?.selectNodeIds.split(",");
+                checkedKeys.value = res?.selectNodeIds.split(',')
             } else {
-                configInfo.value = {};
+                configInfo.value = {}
             }
-            console.log(configInfo.value, "configInfo.value ");
+            console.log(configInfo.value, 'configInfo.value ')
 
-            configVisible.value = true;
+            configVisible.value = true
         }
-    } else if (key === "del") {
+    } else if (key === 'del') {
         HcDelMsg(async (resolve) => {
             const { code } = await archiveApi.removeArchiveAutoRule({
                 nodeId: data.id,
                 iswbsNode: data.iswbsNode, //是否是wbs节点   flase 不是 true 是 (先false,具体怎么区分后面再看)
                 projectId: dataInfo.value.id, //   系统级为0  项目级为项目id
-            });
-            resolve(); //关闭弹窗的回调
-            if (code !== 200) return;
-            window.$message.success("删除成功");
-            getSecondTreeData();
-        }).then();
+            })
+            resolve() //关闭弹窗的回调
+            if (code !== 200) return
+            window.$message.success('删除成功')
+            getSecondTreeData()
+        }).then()
     }
-};
+}
 
 //设置为最高并卷层级
 //获取树节点名字路径
 const getTreeNodePath = (node, refName) => {
-    let nodeInfo = secondTree.value.treeRef.getNode(node.id);
-    let pathArr = [];
+    let nodeInfo = secondTree.value.treeRef.getNode(node.id)
+    let pathArr = []
     while (nodeInfo.parent) {
-        pathArr.push(nodeInfo.data.title);
-        nodeInfo = nodeInfo.parent;
+        pathArr.push(nodeInfo.data.title)
+        nodeInfo = nodeInfo.parent
     }
-    return pathArr.reverse().join("/");
-};
+    return pathArr.reverse().join('/')
+}
 
 const setRecordsHandle = async () => {
     const { code, msg } = await archiveApi.saveArchiveAutoRule({
         archiveAutoType: archiveAutoType.value, //最高1  分类2  独立3
-        selectNodeIds: checkList.value.join(","), //鼠标选择的节点ID(只要鼠标选择的节点,选择节点的下级子节点那种不要),逗号拼接
+        selectNodeIds: checkList.value.join(','), //鼠标选择的节点ID(只要鼠标选择的节点,选择节点的下级子节点那种不要),逗号拼接
         iswbsNode: nodesList.value[0]?.iswbsNode, //是否是wbs节点
         projectId: dataInfo.value.id, //   系统级为0  项目级为项目id
-    });
+    })
 
-    if (code == 200 && msg == "操作成功") {
+    if (code == 200 && msg == '操作成功') {
         window.$message({
-            type: "success",
-            message: "设置成功",
-        });
+            type: 'success',
+            message: '设置成功',
+        })
 
-        highVisible.value = false;
-        getSecondTreeData();
+        highVisible.value = false
+        getSecondTreeData()
     }
-};
+}
 const setClick = (type) => {
-    const treeRef = secondTree.value?.getRef(); //树的原始ref
-    const nodes = treeRef.getCheckedNodes(); //获取选中的节点
-    console.log(nodes, "nodes");
+    const treeRef = secondTree.value?.getRef() //树的原始ref
+    const nodes = treeRef.getCheckedNodes() //获取选中的节点
+    console.log(nodes, 'nodes')
 
     if (nodes.length < 1) {
         window.$message({
-            message: "请先勾选节点,再进行设置",
-            type: "warning",
-        });
-        return false;
+            message: '请先勾选节点,再进行设置',
+            type: 'warning',
+        })
+        return false
     }
-    let ids = [];
+    let ids = []
     nodes.forEach((element) => {
-        element.pathName = getTreeNodePath(element, "secondTree");
-        ids.push(element.id);
-    });
-    console.log(nodes, "nodes");
-    checkList.value = ids;
-    nodesList.value = nodes;
-    setName(type);
-    highVisible.value = true;
-};
-const titleName = ref("");
-const archiveAutoType = ref(1);
-const highVisible = ref(false);
-const checkList = ref([]);
-const nodesList = ref([]);
+        element.pathName = getTreeNodePath(element, 'secondTree')
+        ids.push(element.id)
+    })
+    console.log(nodes, 'nodes')
+    checkList.value = ids
+    nodesList.value = nodes
+    setName(type)
+    highVisible.value = true
+}
+const titleName = ref('')
+const archiveAutoType = ref(1)
+const highVisible = ref(false)
+const checkList = ref([])
+const nodesList = ref([])
 const setName = (type) => {
     switch (type) {
         case 1:
-            archiveAutoType.value = 1;
-            titleName.value = "设置最高并卷层级";
-            break;
+            archiveAutoType.value = 1
+            titleName.value = '设置最高并卷层级'
+            break
         case 2:
-            archiveAutoType.value = 2;
-            titleName.value = "设置分类并卷层级";
-            break;
+            archiveAutoType.value = 2
+            titleName.value = '设置分类并卷层级'
+            break
         case 3:
-            archiveAutoType.value = 3;
-            titleName.value = "设置单独并卷层级";
-            break;
+            archiveAutoType.value = 3
+            titleName.value = '设置单独并卷层级'
+            break
     }
-};
+}
 //查看配置
-const configtree = ref(null);
-const configVisible = ref(false);
-const configInfo = ref({});
-const checkedKeys = ref([]);
+const configtree = ref(null)
+const configVisible = ref(false)
+const configInfo = ref({})
+const checkedKeys = ref([])
 const configTreeProps = {
-    label: "nodeName",
-    children: "children",
-    isLeaf: "hasChildren",
-};
+    label: 'nodeName',
+    children: 'children',
+    isLeaf: 'hasChildren',
+}
 const configCheckChange = (_, { checkedNodes }) => {
-    let array = checkedNodes;
+    let array = checkedNodes
     for (let index = 1; index < array.length; index++) {
-        const element = array[index];
+        const element = array[index]
         if (element.iswbsNode !== array[0].iswbsNode) {
             //取消勾选
-            configtree.value.treeRef.setChecked(data.id, false, false);
+            configtree.value.treeRef.setChecked(data.id, false, false)
             window.$message({
-                message: "非wbs节点不能和wbs节点一起设置规则",
-                type: "warning",
-            });
-            return;
+                message: '非wbs节点不能和wbs节点一起设置规则',
+                type: 'warning',
+            })
+            return
         }
     }
-};
+}
 const changeConfig = async () => {
-    let keys = configtree.value.treeRef.getCheckedKeys();
-    let nodes = configtree.value.treeRef.getCheckedNodes();
-    console.log(nodes);
+    let keys = configtree.value.treeRef.getCheckedKeys()
+    let nodes = configtree.value.treeRef.getCheckedNodes()
+    console.log(nodes)
     const { code, msg } = await archiveApi.updateArchiveAutoRules({
         archiveAutoType: 2, //最高1  分类2  独立3
         archiveAutoGroupId: configInfo.value.data.archiveAutoGroupId,
-        selectNodeIds: keys.join(","), //鼠标选择的节点ID(只要鼠标选择的节点,选择节点的下级子节点那种不要),逗号拼接
+        selectNodeIds: keys.join(','), //鼠标选择的节点ID(只要鼠标选择的节点,选择节点的下级子节点那种不要),逗号拼接
         iswbsNode: nodes[0]?.iswbsNode, //是否是wbs节点
         projectId: dataInfo.value.id, //   系统级为0  项目级为项目id
-    });
+    })
 
     if (code == 200) {
         window.$message({
-            type: "success",
+            type: 'success',
             message: msg,
-        });
-        configVisible.value = false;
+        })
+        configVisible.value = false
     }
-};
+}
 //关闭抽屉
 const drawerClose = () => {
-    isShow.value = false;
-    emit("close");
-};
+    isShow.value = false
+    emit('close')
+}
 </script>
 
 <style scoped lang="scss">