Ver Fonte

Merge branch 'master' of http://121.41.40.202:3000/web/for_client into master

yangyj há 1 ano atrás
pai
commit
45da60ba65

+ 1 - 1
package.json

@@ -19,6 +19,7 @@
         "dayjs": "^1.11.10",
         "dayjs": "^1.11.10",
         "echarts": "^5.4.3",
         "echarts": "^5.4.3",
         "element-plus": "2.4.1",
         "element-plus": "2.4.1",
+        "hc-vue3-ui": "^2.5.9",
         "js-base64": "^3.7.5",
         "js-base64": "^3.7.5",
         "js-fast-way": "0.2.9",
         "js-fast-way": "0.2.9",
         "js-md5": "^0.8.3",
         "js-md5": "^0.8.3",
@@ -39,7 +40,6 @@
         "cssnano": "^6.0.1",
         "cssnano": "^6.0.1",
         "eslint": "^8.52.0",
         "eslint": "^8.52.0",
         "eslint-plugin-vue": "^9.18.0",
         "eslint-plugin-vue": "^9.18.0",
-        "hc-vue3-ui": "^2.3.4",
         "postcss": "^8.4.31",
         "postcss": "^8.4.31",
         "sass": "^1.69.4",
         "sass": "^1.69.4",
         "tailwindcss": "3.3.4",
         "tailwindcss": "3.3.4",

+ 1 - 1
public/version.json

@@ -1,3 +1,3 @@
 {
 {
-  "value": "20231113105212"
+  "value": "20231121103139"
 }
 }

+ 7 - 1
src/views/data-fill/division.vue

@@ -554,6 +554,7 @@ const wbsElTreeClick = ({ node, data, keys }) => {
     treeNodeInfo.value = node
     treeNodeInfo.value = node
     treeItemInfo.value = data
     treeItemInfo.value = data
     tableBasicData.value = [data]
     tableBasicData.value = [data]
+    const { notExsitChild } = data
     setStoreValue('wbsTreeExpandKeys', keys)
     setStoreValue('wbsTreeExpandKeys', keys)
     treeAutoExpandKeys.value = keys || []
     treeAutoExpandKeys.value = keys || []
     if (node.level === 3) {
     if (node.level === 3) {
@@ -562,7 +563,12 @@ const wbsElTreeClick = ({ node, data, keys }) => {
         treePrimaryKeyId.value = ''
         treePrimaryKeyId.value = ''
     }
     }
     if (node.level > 1) {
     if (node.level > 1) {
-        searchNodeAllTableApi(data['primaryKeyId'])
+        if (notExsitChild) {
+            searchNodeAllTableApi(data['primaryKeyId'])
+        } else {
+            tableProjectData.value = []
+        }
+       
     }
     }
 }
 }
 
 

+ 19 - 25
src/views/data-fill/wbs.vue

@@ -68,7 +68,7 @@
                 <!-- 左右拖动 -->
                 <!-- 左右拖动 -->
                 <div class="horizontal-drag-line" @mousedown="onmousedown" />
                 <div class="horizontal-drag-line" @mousedown="onmousedown" />
             </div>
             </div>
-            <div id="wbs-content-box" class="hc-layout-content-box">
+            <div id="wbs-content-box" v-loading="ListItemLoading" class="hc-layout-content-box">
                 <!---展开收缩树 -->
                 <!---展开收缩树 -->
                 <div class="hc-expansion-contraction-tree" @click="setWbsTreeShow">
                 <div class="hc-expansion-contraction-tree" @click="setWbsTreeShow">
                     <HcIcon v-show="isWbsTreeShow" name="arrow-left-s" />
                     <HcIcon v-show="isWbsTreeShow" name="arrow-left-s" />
@@ -78,7 +78,7 @@
                     <template #extra>
                     <template #extra>
                         <el-button :loading="nodeSaveLoading" hc-btn type="primary" @click="NodeSaveClick">辅助保存</el-button>
                         <el-button :loading="nodeSaveLoading" hc-btn type="primary" @click="NodeSaveClick">辅助保存</el-button>
                         <HcTooltip keys="wbs_views_drawings">
                         <HcTooltip keys="wbs_views_drawings">
-                            <el-button :disabled="!nodeDataInfo?.fileUrl" hc-btn color="#e03997" @click="viewsDrawings">图纸</el-button>
+                            <el-button :disabled="nodeDataInfo?.drawingsId === -1 || nodeDataInfo?.drawingsId === null" hc-btn color="#e03997" @click="viewsDrawings">图纸</el-button>
                         </HcTooltip>
                         </HcTooltip>
                         <HcTooltip keys="wbs_preview">
                         <HcTooltip keys="wbs_preview">
                             <el-button :disabled="NodeStatus === '1'" :loading="bussPdfsLoading" hc-btn color="#A16222" @click="bussPdfsClick">预览</el-button>
                             <el-button :disabled="NodeStatus === '1'" :loading="bussPdfsLoading" hc-btn color="#A16222" @click="bussPdfsClick">预览</el-button>
@@ -103,7 +103,7 @@
                             </el-button>
                             </el-button>
                         </HcTooltip>
                         </HcTooltip>
                     </template>
                     </template>
-                    <el-scrollbar v-if="ListItemDatas.length > 0" ref="ListItemScrollRef" v-loading="ListItemLoading">
+                    <el-scrollbar v-if="ListItemDatas.length > 0" ref="ListItemScrollRef">
                         <CollapseForm
                         <CollapseForm
                             ref="ListItemRef"
                             ref="ListItemRef"
                             :tree-auto-expand-keys="TreeAutoExpandKeys"
                             :tree-auto-expand-keys="TreeAutoExpandKeys"
@@ -257,7 +257,7 @@
         >
         >
             <div class="hc-image-preview-view">
             <div class="hc-image-preview-view">
                 <!-- <el-image-viewer :url-list="[nodeDataInfo.fileUrl]" /> -->
                 <!-- <el-image-viewer :url-list="[nodeDataInfo.fileUrl]" /> -->
-                <el-image-viewer :url-list="drawList" />
+                <el-image :src="drawList" />
             </div>
             </div>
         </HcDragModal>
         </HcDragModal>
 
 
@@ -854,13 +854,16 @@ const wbsElTreeClick = ({ node, data, keys }) => {
     const { notExsitChild } = data
     const { notExsitChild } = data
     if (notExsitChild) {
     if (notExsitChild) {
         isCanadd.value = false
         isCanadd.value = false
+        getTableDataAll()
     } else {
     } else {
         isCanadd.value = true
         isCanadd.value = true
+        ListItemDatas.value = []
+        NodeStatus.value = '1'
     }
     }
     setStoreValue('wbsTreeExpandKeys', keys)
     setStoreValue('wbsTreeExpandKeys', keys)
     TreeAutoExpandKeys.value = keys || []
     TreeAutoExpandKeys.value = keys || []
     saveHistory(keys.join(','))
     saveHistory(keys.join(','))
-    getTableDataAll()
+    // getTableDataAll()
 }
 }
 //树加载完成
 //树加载完成
 const ElTreeNodeLoading = () => {
 const ElTreeNodeLoading = () => {
@@ -1496,14 +1499,14 @@ const sortNodeClick = async () => {
 const drawList = ref([])
 const drawList = ref([])
 const drawingsShow = ref(false)
 const drawingsShow = ref(false)
 const viewsDrawings = () => {
 const viewsDrawings = () => {
-    const { primaryKeyId, fileUrl } = nodeDataInfo.value
+    const { primaryKeyId, drawingsId } = nodeDataInfo.value
     if (!primaryKeyId) {
     if (!primaryKeyId) {
         window?.$message?.warning('请先选择树节点')
         window?.$message?.warning('请先选择树节点')
-    } else if (!fileUrl) {
+    } else if (drawingsId === -1 || drawingsId === null) {
         window?.$message?.warning('该节点暂未上传图纸')
         window?.$message?.warning('该节点暂未上传图纸')
     } else {
     } else {
         drawingsShow.value = true
         drawingsShow.value = true
-        getDrawList()
+        getDrawList(drawingsId)
     }
     }
 }
 }
 const drawingsClose = (res) => {
 const drawingsClose = (res) => {
@@ -1513,9 +1516,9 @@ const getDrawList = async (primaryKeyId)=>{
     const { error, code, data } = await wbsApi.getTreeDrawings({ primaryKeyId })
     const { error, code, data } = await wbsApi.getTreeDrawings({ primaryKeyId })
        //判断状态
        //判断状态
        if (!error && code === 200) {
        if (!error && code === 200) {
-            drawList.value = getArrValue(data)
+            drawList.value = data
        } else {
        } else {
-        drawList.value = []
+        drawList.value = data
        }
        }
 }
 }
 
 
@@ -1535,39 +1538,30 @@ const ListItemOffsetTop = (offsetTop) => {
 const ListItemDatas = ref([])
 const ListItemDatas = ref([])
 const ListItemLoading = ref(false)
 const ListItemLoading = ref(false)
 const searchNodeAllTable = async () => {
 const searchNodeAllTable = async () => {
+    ListItemLoading.value = true
     ListItemDatas.value = []
     ListItemDatas.value = []
     const info = nodeDataInfo.value
     const info = nodeDataInfo.value
-    ListItemLoading.value = true
-    const { error, code, data } = await wbsApi.searchNodeAllTable({
+    const { data } = await wbsApi.searchNodeAllTable({
         projectId: projectId.value,
         projectId: projectId.value,
         contractId: contractId.value,
         contractId: contractId.value,
         primaryKeyId: info['primaryKeyId'],
         primaryKeyId: info['primaryKeyId'],
         type: authBtnTabKey.value,
         type: authBtnTabKey.value,
     })
     })
-    //处理数据
+    ListItemDatas.value = getArrValue(data)
     ListItemLoading.value = false
     ListItemLoading.value = false
-    if (!error && code === 200) {
-        ListItemDatas.value = getArrValue(data)
-    } else {
-        ListItemDatas.value = []
-    }
 }
 }
+
 const newlistdata = ref([])
 const newlistdata = ref([])
 const searchNodeAllTable1 = async () => {
 const searchNodeAllTable1 = async () => {
   console.log('重新获取表单列表')
   console.log('重新获取表单列表')
     const info = nodeDataInfo.value
     const info = nodeDataInfo.value
-    const { error, code, data } = await wbsApi.searchNodeAllTable({
+    const { data } = await wbsApi.searchNodeAllTable({
         projectId: projectId.value,
         projectId: projectId.value,
         contractId: contractId.value,
         contractId: contractId.value,
         primaryKeyId: info['primaryKeyId'],
         primaryKeyId: info['primaryKeyId'],
         type: authBtnTabKey.value,
         type: authBtnTabKey.value,
     })
     })
-    //处理数据
-    if (!error && code === 200) {
-        newlistdata.value = getArrValue(data)
-    } else {
-        newlistdata.value = []
-    }
+    newlistdata.value = getArrValue(data)
 }
 }
 //查询状态
 //查询状态
 const NodeStatus = ref('1')
 const NodeStatus = ref('1')

+ 1 - 1
src/views/ledger/components/WbsTree.vue

@@ -151,7 +151,7 @@ const ElTreeLoadNode = async (node, resolve) => {
         primaryKeyId,
         primaryKeyId,
         parentId,
         parentId,
         classifyType: classifyType.value,
         classifyType: classifyType.value,
-        tableOwner:'',
+        tableOwner:'1',
     })
     })
     //处理数据
     //处理数据
     if (!error && code === 200) {
     if (!error && code === 200) {

+ 36 - 28
src/views/ledger/components/internal.vue

@@ -1,34 +1,42 @@
 <template>
 <template>
     <HcNewCard>
     <HcNewCard>
         <template #header>
         <template #header>
-            <div class="w-32">
-                <el-select v-model="searchInternalForm.taskStatus" clearable placeholder="审批状态">
-                    <el-option v-for="item in InternalApproval" :key="item.value" :label="item.label" :value="item.value" />
-                </el-select>
-            </div>
-            <div class="w-32 ml-2">
-                <el-select v-model="searchInternalForm.isEvaluate" clearable placeholder="是否评定">
-                    <el-option v-for="item in InternalAssess" :key="item.value" :label="item.label" :value="item.value" />
-                </el-select>
-            </div>
-            <div class="w-32 ml-2">
-                <el-select v-model="searchInternalForm.reportNumber" clearable placeholder="上报批次">
-                    <el-option v-for="item in InternalReportBatch" :key="item" :label="item" :value="item" />
-                </el-select>
-            </div>
-            <div class="w-32 ml-2">
-                <el-select v-model="searchInternalForm.isExperiment" clearable placeholder="关联试验">
-                    <el-option v-for="item in InternalAssociation" :key="item.value" :label="item.label" :value="item.value" />
-                </el-select>
-            </div>
-            <div class="w-60 ml-2">
-                <el-input v-model="searchInternalForm.queryStr" clearable placeholder="请输入名称关键词检索" @keyup="searchInternalKeyUp" />
-            </div>
-            <div class="ml-2">
-                <el-button type="primary" @click="searchInternalClick">
-                    <HcIcon name="search-2" />
-                    <span>搜索</span>
-                </el-button>
+            <div class="absolute inset-0" style="height: 32px; top: -14px">
+                <div class="relative w-full ">
+                    <el-scrollbar>
+                        <div class="relative whitespace-nowrap">
+                            <div class="w-32 inline-block">
+                                <el-select v-model="searchInternalForm.taskStatus" clearable placeholder="审批状态">
+                                    <el-option v-for="item in InternalApproval" :key="item.value" :label="item.label" :value="item.value" />
+                                </el-select>
+                            </div>
+                            <div class="w-32 ml-2  inline-block">
+                                <el-select v-model="searchInternalForm.isEvaluate" clearable placeholder="是否评定">
+                                    <el-option v-for="item in InternalAssess" :key="item.value" :label="item.label" :value="item.value" />
+                                </el-select>
+                            </div>
+                            <div class="w-32 ml-2  inline-block">
+                                <el-select v-model="searchInternalForm.reportNumber" clearable placeholder="上报批次">
+                                    <el-option v-for="item in InternalReportBatch" :key="item" :label="item" :value="item" />
+                                </el-select>
+                            </div>
+                            <div class="w-32 ml-2  inline-block">
+                                <el-select v-model="searchInternalForm.isExperiment" clearable placeholder="关联试验">
+                                    <el-option v-for="item in InternalAssociation" :key="item.value" :label="item.label" :value="item.value" />
+                                </el-select>
+                            </div>
+                            <div class="w-60 ml-2  inline-block">
+                                <el-input v-model="searchInternalForm.queryStr" clearable placeholder="请输入名称关键词检索" @keyup="searchInternalKeyUp" />
+                            </div>
+                            <div class="ml-2  inline-block">
+                                <el-button type="primary" @click="searchInternalClick">
+                                    <HcIcon name="search-2" />
+                                    <span>搜索</span>
+                                </el-button>
+                            </div>
+                        </div>
+                    </el-scrollbar>
+                </div>
             </div>
             </div>
         </template>
         </template>
         <template #extra>
         <template #extra>

+ 2 - 2
src/views/ledger/components/table-form.vue

@@ -410,7 +410,7 @@ const ElTreeLoadNode = async ({ node, item, level }, resolve) => {
             primaryKeyId: '',
             primaryKeyId: '',
             parentId: '',
             parentId: '',
             classifyType: classifyType.value,
             classifyType: classifyType.value,
-            tableOwner:'',
+            tableOwner:'1',
         })
         })
         //处理数据
         //处理数据
         if (!error && code === 200) {
         if (!error && code === 200) {
@@ -428,7 +428,7 @@ const ElTreeLoadNode = async ({ node, item, level }, resolve) => {
             primaryKeyId: id,
             primaryKeyId: id,
             parentId: contractIdRelation ? primaryKeyId : id,
             parentId: contractIdRelation ? primaryKeyId : id,
             classifyType: classifyType.value,
             classifyType: classifyType.value,
-            tableOwner:'',
+            tableOwner:'1',
         })
         })
         //处理数据
         //处理数据
         if (!error && code === 200) {
         if (!error && code === 200) {

+ 38 - 1
src/views/ledger/write.vue

@@ -12,9 +12,15 @@
             </div>
             </div>
             <div class="hc-tree-box">
             <div class="hc-tree-box">
                 <el-scrollbar>
                 <el-scrollbar>
-                    <WbsTree
+                    <!-- <WbsTree
                         :auto-expand-keys="treeAutoExpandKeys" :contract-id="contractId" :project-id="projectId"
                         :auto-expand-keys="treeAutoExpandKeys" :contract-id="contractId" :project-id="projectId"
                         @nodeTap="nodeWbsElTreeClick"
                         @nodeTap="nodeWbsElTreeClick"
+                    /> -->
+                    <HcLazyTree
+                        is-counts is-type
+                        :auto-expand-keys="treeAutoExpandKeys" 
+                        @load="treeLoadNode"
+                        @nodeLoading="treeNodeLoading" @nodeTap="nodeWbsElTreeClick"
                     />
                     />
                 </el-scrollbar>
                 </el-scrollbar>
             </div>
             </div>
@@ -52,6 +58,8 @@ import HcInternal from './components/internal.vue'
 import HcWeather from './components/weather.vue'
 import HcWeather from './components/weather.vue'
 import HcConstruction from './components/construction.vue'
 import HcConstruction from './components/construction.vue'
 import { getStoreValue, setStoreValue } from '~src/utils/storage'
 import { getStoreValue, setStoreValue } from '~src/utils/storage'
+import queryApi from '~api/data-fill/query'
+import { getArrValue, getObjValue } from 'js-fast-way'
 
 
 //变量
 //变量
 const router = useRouter()
 const router = useRouter()
@@ -61,6 +69,9 @@ const projectId = ref(useAppState.getProjectId)
 const contractId = ref(useAppState.getContractId)
 const contractId = ref(useAppState.getContractId)
 const projectInfo = ref(useAppState.getProjectInfo)
 const projectInfo = ref(useAppState.getProjectInfo)
 const isCollapse = ref(useAppState.getCollapse)
 const isCollapse = ref(useAppState.getCollapse)
+const contractInfo = ref(useAppState.getContractInfo)
+const { contractType } = contractInfo.value
+const classifyType = ref(contractType === 2 ? '2' : '1')
 
 
 //路由参数
 //路由参数
 const routerQuery = useRoutes?.query
 const routerQuery = useRoutes?.query
@@ -76,6 +87,32 @@ watch(() => [
 //自动展开缓存
 //自动展开缓存
 const treeAutoExpandKeys = ref([])
 const treeAutoExpandKeys = ref([])
 
 
+
+//懒加载的数据
+const treeLoading = ref(true)
+const treeNodeLoading = () => {
+    treeLoading.value = false
+}
+const treeLoadNode = async ({ node, item, level }, resolve) => {
+    let contractIdRelation = '', parentId = '', primaryKeyId = ''
+    if (level !== 0) {
+        const nodeData = getObjValue(item)
+        contractIdRelation = nodeData?.contractIdRelation || ''
+        parentId = contractIdRelation ? nodeData?.primaryKeyId : nodeData?.id
+        primaryKeyId = nodeData?.id || ''
+    }
+    //获取数据
+    const { data } = await queryApi.queryWbsTreeData({
+        contractId: contractId.value || '',
+        contractIdRelation,
+        primaryKeyId,
+        parentId,
+        classifyType: classifyType.value,
+        tableOwner:classifyType.value,
+    })
+    resolve(getArrValue(data))
+    treeLoading.value = false
+}
 //类型处理
 //类型处理
 const sbTableKey = ref(dataType)
 const sbTableKey = ref(dataType)
 const sbTableData = ref([
 const sbTableData = ref([

+ 146 - 9
yarn.lock

@@ -409,6 +409,16 @@
     estree-walker "^2.0.2"
     estree-walker "^2.0.2"
     source-map-js "^1.0.2"
     source-map-js "^1.0.2"
 
 
+"@vue/compiler-core@3.3.8":
+  version "3.3.8"
+  resolved "http://47.110.251.215:9000/@vue/compiler-core/-/compiler-core-3.3.8.tgz#301bb60d0245265a88ed5b30e200fbf223acb313"
+  integrity sha512-hN/NNBUECw8SusQvDSqqcVv6gWq8L6iAktUR0UF3vGu2OhzRqcOiAno0FmBJWwxhYEXRlQJT5XnoKsVq1WZx4g==
+  dependencies:
+    "@babel/parser" "^7.23.0"
+    "@vue/shared" "3.3.8"
+    estree-walker "^2.0.2"
+    source-map-js "^1.0.2"
+
 "@vue/compiler-dom@3.3.7":
 "@vue/compiler-dom@3.3.7":
   version "3.3.7"
   version "3.3.7"
   resolved "http://47.110.251.215:9000/@vue/compiler-dom/-/compiler-dom-3.3.7.tgz#a245aa03f9bfcdb537a239bf02842072de0644c9"
   resolved "http://47.110.251.215:9000/@vue/compiler-dom/-/compiler-dom-3.3.7.tgz#a245aa03f9bfcdb537a239bf02842072de0644c9"
@@ -417,6 +427,14 @@
     "@vue/compiler-core" "3.3.7"
     "@vue/compiler-core" "3.3.7"
     "@vue/shared" "3.3.7"
     "@vue/shared" "3.3.7"
 
 
+"@vue/compiler-dom@3.3.8":
+  version "3.3.8"
+  resolved "http://47.110.251.215:9000/@vue/compiler-dom/-/compiler-dom-3.3.8.tgz#09d832514b9b8d9415a3816b065d69dbefcc7e9b"
+  integrity sha512-+PPtv+p/nWDd0AvJu3w8HS0RIm/C6VGBIRe24b9hSyNWOAPEUosFZ5diwawwP8ip5sJ8n0Pe87TNNNHnvjs0FQ==
+  dependencies:
+    "@vue/compiler-core" "3.3.8"
+    "@vue/shared" "3.3.8"
+
 "@vue/compiler-sfc@3.3.7", "@vue/compiler-sfc@^3.3.7":
 "@vue/compiler-sfc@3.3.7", "@vue/compiler-sfc@^3.3.7":
   version "3.3.7"
   version "3.3.7"
   resolved "http://47.110.251.215:9000/@vue/compiler-sfc/-/compiler-sfc-3.3.7.tgz#219d04b3013c7b15fbc536e2279e07810b731cc2"
   resolved "http://47.110.251.215:9000/@vue/compiler-sfc/-/compiler-sfc-3.3.7.tgz#219d04b3013c7b15fbc536e2279e07810b731cc2"
@@ -433,6 +451,22 @@
     postcss "^8.4.31"
     postcss "^8.4.31"
     source-map-js "^1.0.2"
     source-map-js "^1.0.2"
 
 
+"@vue/compiler-sfc@3.3.8":
+  version "3.3.8"
+  resolved "http://47.110.251.215:9000/@vue/compiler-sfc/-/compiler-sfc-3.3.8.tgz#40b18e48aa00260950964d1d72157668521be0e1"
+  integrity sha512-WMzbUrlTjfYF8joyT84HfwwXo+8WPALuPxhy+BZ6R4Aafls+jDBnSz8PDz60uFhuqFbl3HxRfxvDzrUf3THwpA==
+  dependencies:
+    "@babel/parser" "^7.23.0"
+    "@vue/compiler-core" "3.3.8"
+    "@vue/compiler-dom" "3.3.8"
+    "@vue/compiler-ssr" "3.3.8"
+    "@vue/reactivity-transform" "3.3.8"
+    "@vue/shared" "3.3.8"
+    estree-walker "^2.0.2"
+    magic-string "^0.30.5"
+    postcss "^8.4.31"
+    source-map-js "^1.0.2"
+
 "@vue/compiler-ssr@3.3.7":
 "@vue/compiler-ssr@3.3.7":
   version "3.3.7"
   version "3.3.7"
   resolved "http://47.110.251.215:9000/@vue/compiler-ssr/-/compiler-ssr-3.3.7.tgz#eff4a70f7ceb800d60e68d208b96a030c0f1b636"
   resolved "http://47.110.251.215:9000/@vue/compiler-ssr/-/compiler-ssr-3.3.7.tgz#eff4a70f7ceb800d60e68d208b96a030c0f1b636"
@@ -441,6 +475,14 @@
     "@vue/compiler-dom" "3.3.7"
     "@vue/compiler-dom" "3.3.7"
     "@vue/shared" "3.3.7"
     "@vue/shared" "3.3.7"
 
 
+"@vue/compiler-ssr@3.3.8":
+  version "3.3.8"
+  resolved "http://47.110.251.215:9000/@vue/compiler-ssr/-/compiler-ssr-3.3.8.tgz#136eed54411e4694815d961048a237191063fbce"
+  integrity sha512-hXCqQL/15kMVDBuoBYpUnSYT8doDNwsjvm3jTefnXr+ytn294ySnT8NlsFHmTgKNjwpuFy7XVV8yTeLtNl/P6w==
+  dependencies:
+    "@vue/compiler-dom" "3.3.8"
+    "@vue/shared" "3.3.8"
+
 "@vue/devtools-api@^6.5.0":
 "@vue/devtools-api@^6.5.0":
   version "6.5.0"
   version "6.5.0"
   resolved "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.5.0.tgz"
   resolved "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.5.0.tgz"
@@ -457,6 +499,17 @@
     estree-walker "^2.0.2"
     estree-walker "^2.0.2"
     magic-string "^0.30.5"
     magic-string "^0.30.5"
 
 
+"@vue/reactivity-transform@3.3.8":
+  version "3.3.8"
+  resolved "http://47.110.251.215:9000/@vue/reactivity-transform/-/reactivity-transform-3.3.8.tgz#6d07649013b0be5c670f0ab6cc7ddd3150ad03f2"
+  integrity sha512-49CvBzmZNtcHua0XJ7GdGifM8GOXoUMOX4dD40Y5DxI3R8OUhMlvf2nvgUAcPxaXiV5MQQ1Nwy09ADpnLQUqRw==
+  dependencies:
+    "@babel/parser" "^7.23.0"
+    "@vue/compiler-core" "3.3.8"
+    "@vue/shared" "3.3.8"
+    estree-walker "^2.0.2"
+    magic-string "^0.30.5"
+
 "@vue/reactivity@3.3.7":
 "@vue/reactivity@3.3.7":
   version "3.3.7"
   version "3.3.7"
   resolved "http://47.110.251.215:9000/@vue/reactivity/-/reactivity-3.3.7.tgz#48b6671a45ba33039da2c0eb25ae702f924486a9"
   resolved "http://47.110.251.215:9000/@vue/reactivity/-/reactivity-3.3.7.tgz#48b6671a45ba33039da2c0eb25ae702f924486a9"
@@ -464,6 +517,13 @@
   dependencies:
   dependencies:
     "@vue/shared" "3.3.7"
     "@vue/shared" "3.3.7"
 
 
+"@vue/reactivity@3.3.8":
+  version "3.3.8"
+  resolved "http://47.110.251.215:9000/@vue/reactivity/-/reactivity-3.3.8.tgz#cce8a03a3fd3539c3eeda53e277ba365d160dd4d"
+  integrity sha512-ctLWitmFBu6mtddPyOKpHg8+5ahouoTCRtmAHZAXmolDtuZXfjL2T3OJ6DL6ezBPQB1SmMnpzjiWjCiMYmpIuw==
+  dependencies:
+    "@vue/shared" "3.3.8"
+
 "@vue/runtime-core@3.3.7":
 "@vue/runtime-core@3.3.7":
   version "3.3.7"
   version "3.3.7"
   resolved "http://47.110.251.215:9000/@vue/runtime-core/-/runtime-core-3.3.7.tgz#c1eece1c98f936dc69dd0667d11b464579b128fd"
   resolved "http://47.110.251.215:9000/@vue/runtime-core/-/runtime-core-3.3.7.tgz#c1eece1c98f936dc69dd0667d11b464579b128fd"
@@ -472,6 +532,14 @@
     "@vue/reactivity" "3.3.7"
     "@vue/reactivity" "3.3.7"
     "@vue/shared" "3.3.7"
     "@vue/shared" "3.3.7"
 
 
+"@vue/runtime-core@3.3.8":
+  version "3.3.8"
+  resolved "http://47.110.251.215:9000/@vue/runtime-core/-/runtime-core-3.3.8.tgz#fba5a632cbf2b5d29e171489570149cb6975dcdb"
+  integrity sha512-qurzOlb6q26KWQ/8IShHkMDOuJkQnQcTIp1sdP4I9MbCf9FJeGVRXJFr2mF+6bXh/3Zjr9TDgURXrsCr9bfjUw==
+  dependencies:
+    "@vue/reactivity" "3.3.8"
+    "@vue/shared" "3.3.8"
+
 "@vue/runtime-dom@3.3.7":
 "@vue/runtime-dom@3.3.7":
   version "3.3.7"
   version "3.3.7"
   resolved "http://47.110.251.215:9000/@vue/runtime-dom/-/runtime-dom-3.3.7.tgz#e7cf88cc01591fdf6e3164825554fdadc3137ffc"
   resolved "http://47.110.251.215:9000/@vue/runtime-dom/-/runtime-dom-3.3.7.tgz#e7cf88cc01591fdf6e3164825554fdadc3137ffc"
@@ -481,6 +549,15 @@
     "@vue/shared" "3.3.7"
     "@vue/shared" "3.3.7"
     csstype "^3.1.2"
     csstype "^3.1.2"
 
 
+"@vue/runtime-dom@3.3.8":
+  version "3.3.8"
+  resolved "http://47.110.251.215:9000/@vue/runtime-dom/-/runtime-dom-3.3.8.tgz#e2d7aa795cf50914dda9a951887765a594b38af4"
+  integrity sha512-Noy5yM5UIf9UeFoowBVgghyGGPIDPy1Qlqt0yVsUdAVbqI8eeMSsTqBtauaEoT2UFXUk5S64aWVNJN4MJ2vRdA==
+  dependencies:
+    "@vue/runtime-core" "3.3.8"
+    "@vue/shared" "3.3.8"
+    csstype "^3.1.2"
+
 "@vue/server-renderer@3.3.7":
 "@vue/server-renderer@3.3.7":
   version "3.3.7"
   version "3.3.7"
   resolved "http://47.110.251.215:9000/@vue/server-renderer/-/server-renderer-3.3.7.tgz#0cc3dc6ad39a54693e6e8f853caa3c7bb43b0364"
   resolved "http://47.110.251.215:9000/@vue/server-renderer/-/server-renderer-3.3.7.tgz#0cc3dc6ad39a54693e6e8f853caa3c7bb43b0364"
@@ -489,11 +566,24 @@
     "@vue/compiler-ssr" "3.3.7"
     "@vue/compiler-ssr" "3.3.7"
     "@vue/shared" "3.3.7"
     "@vue/shared" "3.3.7"
 
 
+"@vue/server-renderer@3.3.8":
+  version "3.3.8"
+  resolved "http://47.110.251.215:9000/@vue/server-renderer/-/server-renderer-3.3.8.tgz#9b1779010e75783edeed8fcfb97d9c95fc3ac5d2"
+  integrity sha512-zVCUw7RFskvPuNlPn/8xISbrf0zTWsTSdYTsUTN1ERGGZGVnRxM2QZ3x1OR32+vwkkCm0IW6HmJ49IsPm7ilLg==
+  dependencies:
+    "@vue/compiler-ssr" "3.3.8"
+    "@vue/shared" "3.3.8"
+
 "@vue/shared@3.3.7":
 "@vue/shared@3.3.7":
   version "3.3.7"
   version "3.3.7"
   resolved "http://47.110.251.215:9000/@vue/shared/-/shared-3.3.7.tgz#0091852fe5cc4237c8440fe32f3ab6bc920ae6d9"
   resolved "http://47.110.251.215:9000/@vue/shared/-/shared-3.3.7.tgz#0091852fe5cc4237c8440fe32f3ab6bc920ae6d9"
   integrity sha512-N/tbkINRUDExgcPTBvxNkvHGu504k8lzlNQRITVnm6YjOjwa4r0nnbd4Jb01sNpur5hAllyRJzSK5PvB9PPwRg==
   integrity sha512-N/tbkINRUDExgcPTBvxNkvHGu504k8lzlNQRITVnm6YjOjwa4r0nnbd4Jb01sNpur5hAllyRJzSK5PvB9PPwRg==
 
 
+"@vue/shared@3.3.8":
+  version "3.3.8"
+  resolved "http://47.110.251.215:9000/@vue/shared/-/shared-3.3.8.tgz#f044942142e1d3a395f24132e6203a784838542d"
+  integrity sha512-8PGwybFwM4x8pcfgqEQFy70NaQxASvOC5DJwLQfpArw1UDfUXrJkdxD3BhVTMS+0Lef/TU7YO0Jvr0jJY8T+mw==
+
 "@vueuse/core@^9.1.0":
 "@vueuse/core@^9.1.0":
   version "9.13.0"
   version "9.13.0"
   resolved "https://registry.npmjs.org/@vueuse/core/-/core-9.13.0.tgz"
   resolved "https://registry.npmjs.org/@vueuse/core/-/core-9.13.0.tgz"
@@ -644,6 +734,15 @@ axios@^1.5.1:
     form-data "^4.0.0"
     form-data "^4.0.0"
     proxy-from-env "^1.1.0"
     proxy-from-env "^1.1.0"
 
 
+axios@^1.6.2:
+  version "1.6.2"
+  resolved "http://47.110.251.215:9000/axios/-/axios-1.6.2.tgz#de67d42c755b571d3e698df1b6504cde9b0ee9f2"
+  integrity sha512-7i24Ri4pmDRfJTR7LDBhsOTtcm+9kjX5WiY1X3wIisx6G9So3pfMkEiU7emUBe46oceVImccTEM3k6C5dbVW8A==
+  dependencies:
+    follow-redirects "^1.15.0"
+    form-data "^4.0.0"
+    proxy-from-env "^1.1.0"
+
 b4a@^1.6.4:
 b4a@^1.6.4:
   version "1.6.4"
   version "1.6.4"
   resolved "http://47.110.251.215:9000/b4a/-/b4a-1.6.4.tgz#ef1c1422cae5ce6535ec191baeed7567443f36c9"
   resolved "http://47.110.251.215:9000/b4a/-/b4a-1.6.4.tgz#ef1c1422cae5ce6535ec191baeed7567443f36c9"
@@ -1062,6 +1161,27 @@ element-plus@2.4.1:
     memoize-one "^6.0.0"
     memoize-one "^6.0.0"
     normalize-wheel-es "^1.2.0"
     normalize-wheel-es "^1.2.0"
 
 
+element-plus@2.4.2:
+  version "2.4.2"
+  resolved "http://47.110.251.215:9000/element-plus/-/element-plus-2.4.2.tgz#2a24632e0904ccd7bbbd64c269704f6b9969833c"
+  integrity sha512-E/HwXX7JF1LPvQSjs0fZ8WblIoc0quoXsRXQZiL7QDq7xJdNGSUaXtdk7xiEv7axPmLfEFtxE5du9fFspDrmJw==
+  dependencies:
+    "@ctrl/tinycolor" "^3.4.1"
+    "@element-plus/icons-vue" "^2.0.6"
+    "@floating-ui/dom" "^1.0.1"
+    "@popperjs/core" "npm:@sxzz/popperjs-es@^2.11.7"
+    "@types/lodash" "^4.14.182"
+    "@types/lodash-es" "^4.17.6"
+    "@vueuse/core" "^9.1.0"
+    async-validator "^4.2.5"
+    dayjs "^1.11.3"
+    escape-html "^1.0.3"
+    lodash "^4.17.21"
+    lodash-es "^4.17.21"
+    lodash-unified "^1.0.2"
+    memoize-one "^6.0.0"
+    normalize-wheel-es "^1.2.0"
+
 entities@^4.2.0:
 entities@^4.2.0:
   version "4.5.0"
   version "4.5.0"
   resolved "http://47.110.251.215:9000/entities/-/entities-4.5.0.tgz"
   resolved "http://47.110.251.215:9000/entities/-/entities-4.5.0.tgz"
@@ -1435,20 +1555,21 @@ has@^1.0.3:
   dependencies:
   dependencies:
     function-bind "^1.1.1"
     function-bind "^1.1.1"
 
 
-hc-vue3-ui@^2.3.4:
-  version "2.3.4"
-  resolved "http://47.110.251.215:9000/hc-vue3-ui/-/hc-vue3-ui-2.3.4.tgz#67fe7e125176bbd6031fca55b8ab2d64ca30215e"
-  integrity sha512-6zNLI0alZuJ3HBtkWzB79S5fIUVhVGcM2vnw6d48PZt8GvqBA6yZsAoLTseNza9vHbVeI8Jj3MzKb7TdQpQCrA==
+hc-vue3-ui@^2.5.9:
+  version "2.5.9"
+  resolved "http://47.110.251.215:9000/hc-vue3-ui/-/hc-vue3-ui-2.5.9.tgz#b153087d00aa85d0baa0855b8b3e7f452a8efb32"
+  integrity sha512-PHON9UPoAanISCd71JVMfVe3BI4ERQD2Nj1oTheLP2eS+DDhqriYtcs1YV4/M1YwOmMjC8DzM0AR/pH5rBuIAA==
   dependencies:
   dependencies:
-    axios "^1.5.1"
+    axios "^1.6.2"
     dayjs "^1.11.10"
     dayjs "^1.11.10"
-    element-plus "2.4.1"
-    js-fast-way "^0.2.9"
+    element-plus "2.4.2"
+    js-fast-way "^0.3.7"
     js-md5 "^0.8.3"
     js-md5 "^0.8.3"
     lottie-web "^5.12.2"
     lottie-web "^5.12.2"
     simple-uploader.js "^0.6.0"
     simple-uploader.js "^0.6.0"
     sortablejs "^1.15.0"
     sortablejs "^1.15.0"
-    vue "3.3.7"
+    split.js "^1.6.5"
+    vue "3.3.8"
     vuedraggable "^2.24.3"
     vuedraggable "^2.24.3"
 
 
 html2canvas@1.4.1:
 html2canvas@1.4.1:
@@ -1559,11 +1680,16 @@ js-base64@^3.7.5:
   resolved "https://registry.npmjs.org/js-base64/-/js-base64-3.7.5.tgz"
   resolved "https://registry.npmjs.org/js-base64/-/js-base64-3.7.5.tgz"
   integrity sha512-3MEt5DTINKqfScXKfJFrRbxkrnk2AxPWGBL/ycjz4dK8iqiSJ06UxD8jh8xuh6p10TX4t2+7FsBYVxxQbMg+qA==
   integrity sha512-3MEt5DTINKqfScXKfJFrRbxkrnk2AxPWGBL/ycjz4dK8iqiSJ06UxD8jh8xuh6p10TX4t2+7FsBYVxxQbMg+qA==
 
 
-js-fast-way@0.2.9, js-fast-way@^0.2.9:
+js-fast-way@0.2.9:
   version "0.2.9"
   version "0.2.9"
   resolved "http://47.110.251.215:9000/js-fast-way/-/js-fast-way-0.2.9.tgz#fd193f1a63644315331274474232d18d2c494c35"
   resolved "http://47.110.251.215:9000/js-fast-way/-/js-fast-way-0.2.9.tgz#fd193f1a63644315331274474232d18d2c494c35"
   integrity sha512-ORSz9K/vLBu0Xo9dXgAS9nbqi35BsooPZYj1EpkjOWEVQ8hz3dUFGwTG2r7huZyxxnWd2fXoZwSe0X77aPwhlg==
   integrity sha512-ORSz9K/vLBu0Xo9dXgAS9nbqi35BsooPZYj1EpkjOWEVQ8hz3dUFGwTG2r7huZyxxnWd2fXoZwSe0X77aPwhlg==
 
 
+js-fast-way@^0.3.7:
+  version "0.3.7"
+  resolved "http://47.110.251.215:9000/js-fast-way/-/js-fast-way-0.3.7.tgz#b84c6fe151816f44d8453655bcaf122bf7e3a072"
+  integrity sha512-tdelAmrYlCJIykMv8o2BEFI+v+WKLiJyzPyCVlUGSZgxm2xewlXM4A307lXBPZwC1HdLuwTWctAoLeBNf6RdOg==
+
 js-md5@^0.8.3:
 js-md5@^0.8.3:
   version "0.8.3"
   version "0.8.3"
   resolved "http://47.110.251.215:9000/js-md5/-/js-md5-0.8.3.tgz#921bab7efa95bfc9d62b87ee08a57f8fe4305b69"
   resolved "http://47.110.251.215:9000/js-md5/-/js-md5-0.8.3.tgz#921bab7efa95bfc9d62b87ee08a57f8fe4305b69"
@@ -2652,6 +2778,17 @@ vue@3.3.7:
     "@vue/server-renderer" "3.3.7"
     "@vue/server-renderer" "3.3.7"
     "@vue/shared" "3.3.7"
     "@vue/shared" "3.3.7"
 
 
+vue@3.3.8:
+  version "3.3.8"
+  resolved "http://47.110.251.215:9000/vue/-/vue-3.3.8.tgz#532ff071af24f6a69e5ecc53a66858a9ee874ffc"
+  integrity sha512-5VSX/3DabBikOXMsxzlW8JyfeLKlG9mzqnWgLQLty88vdZL7ZJgrdgBOmrArwxiLtmS+lNNpPcBYqrhE6TQW5w==
+  dependencies:
+    "@vue/compiler-dom" "3.3.8"
+    "@vue/compiler-sfc" "3.3.8"
+    "@vue/runtime-dom" "3.3.8"
+    "@vue/server-renderer" "3.3.8"
+    "@vue/shared" "3.3.8"
+
 vuedraggable@^2.24.3:
 vuedraggable@^2.24.3:
   version "2.24.3"
   version "2.24.3"
   resolved "http://47.110.251.215:9000/vuedraggable/-/vuedraggable-2.24.3.tgz#43c93849b746a24ce503e123d5b259c701ba0d19"
   resolved "http://47.110.251.215:9000/vuedraggable/-/vuedraggable-2.24.3.tgz#43c93849b746a24ce503e123d5b259c701ba0d19"