ZaiZai 2 жил өмнө
parent
commit
9692f0ca0d

+ 12 - 0
src/styles/app/element.scss

@@ -583,6 +583,18 @@
         .label {
             flex: auto;
             font-size: 16px;
+            .hc-tree-node-type {
+                display: inline-block;
+                background: #7729F5;
+                font-size: 14px;
+                color: white;
+                width: 20px;
+                height: 20px;
+                border-radius: 5px;
+                text-align: center;
+                line-height: 20px;
+                margin-right: 8px;
+            }
         }
         .label.level-name {
             font-size: 18px;

+ 36 - 0
src/utils/utils.js

@@ -0,0 +1,36 @@
+//处理树节点类型
+export const getTreeNodeType = (type, majorDataType) => {
+    if (type > 0 && majorDataType > 0) {
+        switch (majorDataType) {
+            case 1:
+                return '开';
+            case 2:
+                return '评';
+            case 3:
+                return '交';
+            case 4:
+                return '序';
+            default:
+                return ''
+        }
+    } else if (type > 0 && majorDataType <= 0) {
+        switch (type) {
+            case 1:
+                return '单';
+            case 2:
+                return '部';
+            case 3:
+                return '部';
+            case 4:
+                return '项';
+            case 5:
+                return '项';
+            case 6:
+                return '序';
+            default:
+                return ''
+        }
+    } else {
+        return ''
+    }
+}

+ 6 - 0
src/views/data-fill/components/HcTreeData.vue

@@ -17,6 +17,11 @@
             <div :id="`${idPrefix}${data['primaryKeyId']}`" class="data-custom-tree-node">
                 <!--树组件,节点名称-->
                 <div :class="node.level === 1?'level-name':''" class="label">
+                    <span
+                        v-if="(data['type'] > 0 && data['majorDataType'] > 0) || (data['type'] > 0 && data['majorDataType'] <= 0)"
+                        class="hc-tree-node-type">{{
+                            getTreeNodeType(data['type'], data['majorDataType'])
+                        }}</span>
                     <span
                         v-if="isColor"
                         :class="data?.colorStatus === 2?'text-blue':data?.colorStatus === 3?'text-orange':data?.colorStatus === 4?'text-green':''">{{
@@ -52,6 +57,7 @@
 
 <script setup>
 import {ref, watch, nextTick} from "vue";
+import {getTreeNodeType} from '~uti/utils';
 import {getArrValue, getObjValue} from "vue-utils-plus"
 //参数
 const props = defineProps({

+ 15 - 9
src/views/data-fill/components/WbsTree.vue

@@ -10,6 +10,11 @@
             <div :id="`${idPrefix}${data['primaryKeyId']}`" class="data-custom-tree-node">
                 <!--树组件,节点名称-->
                 <div :class="node.level === 1?'level-name':''" class="label">
+                    <span
+                        v-if="(data['type'] > 0 && data['majorDataType'] > 0) || (data['type'] > 0 && data['majorDataType'] <= 0)"
+                        class="hc-tree-node-type">{{
+                            getTreeNodeType(data['type'], data['majorDataType'])
+                        }}</span>
                     <span
                         v-if="isColor"
                         :class="data?.colorStatus === 2?'text-blue':data?.colorStatus === 3?'text-orange':data?.colorStatus === 4?'text-green':''">{{
@@ -52,6 +57,7 @@
 <script setup>
 import {ref, nextTick, watch} from "vue";
 import dataFillQuery from '~api/data-fill/query';
+import {getTreeNodeType} from '~uti/utils';
 import {isItem, getArrValue, getObjValue, isValueNull} from "vue-utils-plus"
 
 //参数
@@ -101,8 +107,7 @@ const props = defineProps({
         default: false
     },
     classifyType: {
-        type: String,
-
+        type: [String, Number],
     },
     treeKey: {
         type: [String, Number],
@@ -154,6 +159,14 @@ watch(() => [
     treeKeyData.value = TreeKey
 })
 
+watch(classifyTypedata, (val) => {
+        if (val) {
+            classifyTypedata.value = val
+        }
+    },
+    {immediate: true}
+)
+
 //事件
 const emit = defineEmits(['menuTap', 'nodeTap', 'nodeLoading'])
 
@@ -219,13 +232,6 @@ const ElTreeLoadNode = async (node, resolve) => {
     }
 }
 
-watch(classifyTypedata, (val) => {
-        if (val) {
-            classifyTypedata.value = val
-        }
-    },
-    {immediate: true}
-)
 //节点被点击
 const ElTreeClick = async (data, node) => {
     if (isAutoKeys.value) {

+ 9 - 3
src/views/data-fill/division.vue

@@ -10,11 +10,12 @@
                     <div class="text-xs text-cut project-name">{{ projectInfo['name'] }}</div>
                 </div>
             </div>
-            <div class="hc-tree-box">
+            <div v-loading="treeLoading" class="hc-tree-box" element-loading-text="加载中...">
                 <el-scrollbar>
-                    <WbsTree :autoExpandKeys="treeAutoExpandKeys" :contractId="contractId" :menus="ElTreeMenu"  :classifyType="1"
+                    <WbsTree :autoExpandKeys="treeAutoExpandKeys" :classifyType="1" :contractId="contractId"
+                             :menus="ElTreeMenu"
                              :projectId="projectId" isColor ui="page-division-tree" @menuTap="ElTreeMenuClick"
-                             @nodeTap="wbsElTreeClick"/>
+                             @nodeLoading="treeNodeLoading" @nodeTap="wbsElTreeClick"/>
                 </el-scrollbar>
             </div>
             <!--左右拖动-->
@@ -399,6 +400,11 @@ onMounted(() => {
     getTableOwnerTypeApi()
 })
 
+const treeLoading = ref(true)
+const treeNodeLoading = () => {
+    treeLoading.value = false
+}
+
 //获取节点类型
 const nodeTypeData = ref([])
 const getWbsNodeTypeApi = async () => {

+ 3 - 8
src/views/data-fill/query.vue

@@ -237,14 +237,12 @@ onMounted(() => {
     getReportNumber()
     getFirstTaskStatus()
     getDictBizClassify()
-  
-    if (contractTypeTabKey.value == 2||contractInfo.value?.contractType == 3) {
+
+    if (contractTypeTabKey.value == 2 || contractInfo.value?.contractType == 3) {
         getSearchTreeDataJl()
     } else {
         getSearchTreeData()
     }
-
-
 })
 
 
@@ -313,10 +311,8 @@ const searchTreeClick = async () => {
         window?.$message?.warning('请加载完再次点击搜索')
     } else {
         isSearchTree.value = true
-        //   treeLoading.value=false
+        treeLoading.value = false
     }
-
-
 }
 
 //树相关的变量
@@ -328,7 +324,6 @@ const changeisSearch = () => {
 }
 const changetreelaod = (val) => {
     treeLoading.value = val
-
 }
 
 //树被点击

+ 20 - 11
src/views/other-file/components/WbsTree.vue

@@ -1,26 +1,35 @@
 <template>
-    <ElTree class="hc-tree-node tree-line" :props="ElTreeProps" :load="ElTreeLoadNode" lazy highlight-current accordion node-key="primaryKeyId"
-            :default-expanded-keys="defaultExpandedCids" @node-click="ElTreeClick" :indent="0">
+    <ElTree :default-expanded-keys="defaultExpandedCids" :indent="0" :load="ElTreeLoadNode" :props="ElTreeProps" accordion class="hc-tree-node tree-line"
+            highlight-current
+            lazy node-key="primaryKeyId" @node-click="ElTreeClick">
         <template #default="{ node, data }">
-            <div class="data-custom-tree-node" :id="`${idPrefix}${data['primaryKeyId']}`">
-                <div class="label" :class="node.level === 1?'level-name':''">{{ node.label }}</div>
+            <div :id="`${idPrefix}${data['primaryKeyId']}`" class="data-custom-tree-node">
+                <div :class="node.level === 1?'level-name':''" class="label">
+                    <span
+                        v-if="(data['type'] > 0 && data['majorDataType'] > 0) || (data['type'] > 0 && data['majorDataType'] <= 0)"
+                        class="hc-tree-node-type">{{
+                            getTreeNodeType(data['type'], data['majorDataType'])
+                        }}</span>
+                    <span>{{ node.label }}</span>
+                </div>
             </div>
         </template>
     </ElTree>
 </template>
 
 <script setup>
-import {ref,nextTick,watch} from "vue";
+import {ref, nextTick, watch} from "vue";
 import {queryTreeList} from '~api/ledger';
-import {isItem,getArrValue,getObjValue} from "vue-utils-plus"
+import {getTreeNodeType} from '~uti/utils';
+import {isItem, getArrValue, getObjValue} from "vue-utils-plus"
 //参数
 const props = defineProps({
     projectId: {
-        type: [String,Number],
+        type: [String, Number],
         default: ''
     },
     contractId: {
-        type: [String,Number],
+        type: [String, Number],
         default: ''
     },
     autoExpandKeys: {
@@ -89,10 +98,10 @@ const ElTreeLoadNode = async (node, resolve) => {
         const keys = TreeExpandKey.value || []
         const resData = getArrValue(data)
         if (keys.length > 0) {
-            let lastKey = keys[keys.length-1];
+            let lastKey = keys[keys.length - 1];
             for (const item of resData) {
                 //自动展开
-                if (isItem(keys,item?.primaryKeyId)) {
+                if (isItem(keys, item?.primaryKeyId)) {
                     defaultExpandedArr.push(item?.primaryKeyId)
                 }
                 //最后一个,选中点击
@@ -121,7 +130,7 @@ const ElTreeLoadNode = async (node, resolve) => {
 const emit = defineEmits(['nodeTap'])
 
 //节点被点击
-const ElTreeClick = async (data,node) => {
+const ElTreeClick = async (data, node) => {
     if (isAutoKeys.value) {
         let autoKeysArr = []
         await getNodeExpandKeys(node, autoKeysArr)

+ 35 - 29
src/views/other-file/image-data.vue

@@ -4,32 +4,34 @@
             <template #header>
                 <HcTooltip keys="image-data-sort">
                     <el-button hc-btn type="primary" @click="showSortModalClick">
-                        <HcIcon name="grid_view"/>
+                        <HcIcon name="list-settings"/>
                         <span>分类管理</span>
                     </el-button>
                 </HcTooltip>
             </template>
             <el-scrollbar>
                 <div class="hc-table-ref-box">
-                    <el-table hc :data="tableListData" :loading="tableLoading" row-key="id" stripe>
-                        <el-table-column prop="index" label="序号" width="80">
+                    <el-table :data="tableListData" :loading="tableLoading" hc row-key="id" stripe>
+                        <el-table-column label="序号" prop="index" width="80">
                             <template #default="scope">
-                                {{scope.$index + 1}}
+                                {{ scope.$index + 1 }}
                             </template>
                         </el-table-column>
-                        <el-table-column prop="classfName" label="分类名称"/>
-                        <el-table-column prop="count" label="数量"/>
-                        <el-table-column prop="projectStage" label="所属阶段"/>
-                        <el-table-column prop="fileType" label="文件类型">
+                        <el-table-column label="分类名称" prop="classfName"/>
+                        <el-table-column label="数量" prop="count"/>
+                        <el-table-column label="所属阶段" prop="projectStage"/>
+                        <el-table-column label="文件类型" prop="fileType">
                             <template #default="scope">
-                                {{scope.row.fileType == 1 ? '视频文件' : '图片文件'}}
+                                {{ scope.row.fileType == 1 ? '视频文件' : '图片文件' }}
                             </template>
                         </el-table-column>
-                        <el-table-column label="操作" align="center" width="130">
+                        <el-table-column align="center" label="操作" width="130">
                             <template #default="scope">
-                                <el-button type="primary" size="small" text @click="viewClick(scope.row)">查看</el-button>
+                                <el-button size="small" text type="primary" @click="viewClick(scope.row)">查看
+                                </el-button>
                                 <HcTooltip keys="image-data-upload">
-                                    <el-button type="primary" size="small" text @click="uploadClick(scope.row)">上传</el-button>
+                                    <el-button size="small" text type="primary" @click="uploadClick(scope.row)">上传
+                                    </el-button>
                                 </HcTooltip>
                             </template>
                         </el-table-column>
@@ -38,28 +40,32 @@
             </el-scrollbar>
         </HcCard>
         <!--分类管理 弹框-->
-        <el-dialog v-model="showSortModal" title="分类管理" width="62rem" class="hc-modal-border">
-            <el-alert title="隐藏分类之后,在主页面不会显示该分类入口" type="warning" :closable="false"/>
+        <el-dialog v-model="showSortModal" class="hc-modal-border" title="分类管理" width="62rem">
+            <el-alert :closable="false" title="隐藏分类之后,在主页面不会显示该分类入口" type="warning"/>
             <div class="modal-dialog">
                 <el-scrollbar>
                     <div class="hc-table-ref-box">
-                        <el-table hc :data="classTableData" :loading="classTableLoading" row-key="id" stripe>
-                            <el-table-column prop="index" label="序号" width="80">
+                        <el-table :data="classTableData" :loading="classTableLoading" hc row-key="id" stripe>
+                            <el-table-column label="序号" prop="index" width="80">
                                 <template #default="scope">
-                                    {{scope.$index + 1}}
+                                    {{ scope.$index + 1 }}
                                 </template>
                             </el-table-column>
-                            <el-table-column prop="classfName" label="分类名称"/>
-                            <el-table-column prop="projectStage" label="所属阶段"/>
-                            <el-table-column prop="fileType" label="资料类型">
+                            <el-table-column label="分类名称" prop="classfName"/>
+                            <el-table-column label="所属阶段" prop="projectStage"/>
+                            <el-table-column label="资料类型" prop="fileType">
                                 <template #default="scope">
-                                    {{scope.row.fileType == 1 ? '视频文件' : '图片文件'}}
+                                    {{ scope.row.fileType == 1 ? '视频文件' : '图片文件' }}
                                 </template>
                             </el-table-column>
-                            <el-table-column label="操作" align="center" width="130">
+                            <el-table-column align="center" label="操作" width="130">
                                 <template #default="scope">
-                                    <el-button type="info" size="small" @click="saveConfig(scope.row)" v-if="scope.row.isShow">隐藏分类</el-button>
-                                    <el-button type="primary" size="small" @click="saveConfig(scope.row)" v-else>显示分类</el-button>
+                                    <el-button v-if="scope.row.isShow" size="small" type="info"
+                                               @click="saveConfig(scope.row)">隐藏分类
+                                    </el-button>
+                                    <el-button v-else size="small" type="primary" @click="saveConfig(scope.row)">
+                                        显示分类
+                                    </el-button>
                                 </template>
                             </el-table-column>
                         </el-table>
@@ -71,7 +77,7 @@
 </template>
 
 <script setup>
-import {onMounted,ref} from 'vue'
+import {onMounted, ref} from 'vue'
 import {useAppStore} from "~src/store";
 import {useRouter, useRoute} from 'vue-router'
 import imageApi from '~api/other-file/imageData';
@@ -98,7 +104,7 @@ const tableLoading = ref(false)
 const tableListData = ref([])
 const getClassIfyList = async () => {
     tableLoading.value = true
-    const { error, code, data } = await imageApi.getClassIfyList({
+    const {error, code, data} = await imageApi.getClassIfyList({
         projectId: projectId.value,
         contractId: contractId.value
     })
@@ -146,7 +152,7 @@ const classTableLoading = ref(false)
 const classTableData = ref([])
 const getClassifyShowConfigList = async () => {
     classTableLoading.value = true
-    const { error, code, data } = await imageApi.getClassifyShowConfigList({
+    const {error, code, data} = await imageApi.getClassifyShowConfigList({
         projectId: projectId.value,
         contractId: contractId.value
     })
@@ -161,12 +167,12 @@ const getClassifyShowConfigList = async () => {
 
 //保存客户端分类显隐记录
 const saveConfig = async (row) => {
-    const { error, code } = await imageApi.saveClassifyShowConfig({
+    const {error, code} = await imageApi.saveClassifyShowConfig({
         showList: [{
             projectId: projectId.value,
             contractId: contractId.value,
             classifyId: row.id,
-            isShow: row.isShow?0:1,
+            isShow: row.isShow ? 0 : 1,
             id: row['showId']
         }]
     })