Sfoglia il codice sorgente

文件同步按钮

duy 1 anno fa
parent
commit
9c1940a912
3 ha cambiato i file con 90 aggiunte e 39 eliminazioni
  1. 38 33
      src/api/modules/other.js
  2. 29 4
      src/components/tree/hc-tree.vue
  3. 23 2
      src/views/file/collection.vue

+ 38 - 33
src/api/modules/other.js

@@ -1,81 +1,81 @@
-import {httpApi} from "../request/httpApi";
+import { httpApi } from '../request/httpApi'
 
 //用户配置保存
 export const userConfigSave = (form, msg = true) => httpApi({
     url: '/api/blade-business/defaultConfig/saveOrUpdate',
     method: 'post',
-    data: form
-}, msg);
+    data: form,
+}, msg)
 
 //用户配置详情
 export const userConfigInfo = (form, msg = true) => httpApi({
     url: '/api/blade-business/defaultConfig/detail',
     method: 'get',
-    params: form
-}, msg);
+    params: form,
+}, msg)
 
 //获取类型
 export const getDictionary = (form, msg = true) => httpApi({
     url: '/api/blade-system/dict/dictionary',
     method: 'get',
-    params: form
-}, msg);
+    params: form,
+}, msg)
 
 //获取用户列表
 export const getContractUserList = (form, msg = true) => httpApi({
     url: '/api/blade-manager/contractInfo/get-contract-userList',
     method: 'get',
-    params: form
-}, msg);
+    params: form,
+}, msg)
 
 //获取档案的树
 export const getArchiveTreeLazyTree = (form, msg = true) => httpApi({
     url: '/api/blade-manager/archiveTreeContract/lazy-tree',
     method: 'get',
-    params: form
-}, msg);
+    params: form,
+}, msg)
 
 //初始化档案的树
 export const initTree = (form, msg = true) => httpApi({
     url: '/api/blade-manager/archiveTreeContract/initTree',
     method: 'post',
-    params: form
-}, msg);
+    params: form,
+}, msg)
 
 //删除
 export const remove = (form, msg = true) => httpApi({
     url: '/api/blade-manager/archiveTreeContract/remove',
     method: 'post',
-    params: form
-}, msg);
+    params: form,
+}, msg)
 
 //新增
 export const archiveTreeSave = (form, msg = true) => httpApi({
     url: '/api/blade-manager/archiveTreeContract/save',
     method: 'post',
-    data: form
-}, msg);
+    data: form,
+}, msg)
 
 //编辑
 export const archiveTreeDetail = (form, msg = true) => httpApi({
     url: '/api/blade-manager/archiveTreeContract/detail',
     method: 'get',
-    params: form
-}, msg);
+    params: form,
+}, msg)
 
 //更新
 export const archiveTreeUpdate = (form, msg = true) => httpApi({
     url: '/api/blade-manager/archiveTreeContract/update',
     method: 'post',
-    data: form
-}, msg);
+    data: form,
+}, msg)
 
 //获取归档树同级节点
 export const getSameGradeNode = (form, msg = true) => httpApi({
     url: '/api/blade-manager/archiveTreeContract/get-same-grade-node',
     method: 'post',
-    params: form
-}, msg);
+    params: form,
+}, msg)
 
 
 
@@ -83,30 +83,35 @@ export const getSameGradeNode = (form, msg = true) => httpApi({
 export const submitArchiveTreeSort = (form, msg = true) => httpApi({
     url: '/api/blade-manager/archiveTreeContract/submit-tree-sort',
     method: 'post',
-    data: form
-}, msg);
+    data: form,
+}, msg)
 
 //同步
 export const syncProjectTree = (form, msg = true) => httpApi({
     url: '/api/blade-manager/archiveTreeContract/syncProjectTree',
     method: 'post',
-    params: form
-}, msg);
-
+    params: form,
+}, msg)
+//文件同步
+export const syncFileTree = (form, msg = true) => httpApi({
+    url: '/api/blade-manager/archiveTreeContract/syncBusinessData',
+    method: 'post',
+    params: form,
+}, msg)
 
 //所属角色
 export const roletree = (form, msg = true) => httpApi({
     url: '/api/blade-system/role/tree',
       method: 'get',
       params: {
-        tenantId: ''
-      }
-}, msg);
+        tenantId: '',
+      },
+}, msg)
 
 
 //获取更新信息
 export const getVersionJson = () => httpApi({
     url: 'version.json?time=' + new Date().getTime(),
-    method: 'get'
-}, false);
+    method: 'get',
+}, false)
 

+ 29 - 4
src/components/tree/hc-tree.vue

@@ -31,7 +31,7 @@
     </el-radio-group>
 
     <!-- 右键菜单 -->
-    <HcContextMenu v-if="menusData.length > 0" ref="contextMenuRef" :datas="menusData" @item-click="handleMenuSelect" @closed="handleMenuClosed">
+    <HcContextMenu v-if="menusData.length > 0" ref="contextMenuRef2" :datas="menusData" @item-click="ElTreeMenuClick" @closed="handleMenuClosed">
         <template #sort="{ item }">
             <HcIcon :name="item.icon" :line="false" class="menu-item-icon" />
             <span class="menu-item-name">{{ item.label }}</span>
@@ -53,7 +53,7 @@
 
 <script setup>
 import { nextTick, ref, watch } from 'vue'
-import { remove, syncProjectTree } from '~api/other'
+import { remove, syncFileTree, syncProjectTree } from '~api/other'
 import { getArchiveTreeLazyTree, initTree } from '~api/other'
 import { getArrValue, getObjValue, isArrItem, isNullES } from 'js-fast-way'
 import EditNodeDialog from '~src/components/dialog/EditNodeDialog.vue'
@@ -297,6 +297,7 @@ const removeElTreeNode = (key) => {
 const contextMenuRef2 = ref(null)
 const ElTreeLabelContextMenu2 = (e, data, node) => {
 
+    emit('menuTap', { node, data })
     let rows = ElTreeMenu.value || []
     if (node.level == 1) {
         rows = ElTreeMenu.value.filter((item)=>{
@@ -311,9 +312,10 @@ const ElTreeLabelContextMenu2 = (e, data, node) => {
             { icon: 'add-circle', label: '新增', key: 'add' },
             { icon: 'draft', label: '编辑', key: 'edit' },
             { icon: 'delete-bin', label: '删除', key: 'del' },
-            { icon: 'refresh', label: '同步', key: 'sync' },
+            { icon: 'refresh', label: '目录同步', key: 'sync' },
             { icon: 'sort-asc', label: '排序', key: 'sort' },
         ]
+
     }
 
     if (rows.length > 0) {
@@ -331,7 +333,7 @@ const ElTreeMenu = ref([
     { icon: 'add-circle', label: '新增', key: 'add' },
     { icon: 'draft', label: '编辑', key: 'edit' },
     { icon: 'delete-bin', label: '删除', key: 'del' },
-    { icon: 'refresh', label: '同步', key: 'sync' },
+    { icon: 'refresh', label: '目录同步', key: 'sync' },
     { icon: 'sort-asc', label: '排序', key: 'sort' },
 ])
 
@@ -363,6 +365,9 @@ const setTreeMenuDataClick = ({ key, node, data }) => {
         case 'sort':
             sortNodeMoadl(node, data)
             break
+        case 'fileSync':
+        filesyncNodeMoadl(node, data)
+        break
     }
 }
 
@@ -436,6 +441,26 @@ const syncNodeMoadl = (node)=>{
         },
     })
 }
+//文件同步
+const filesyncNodeMoadl = (node)=>{
+    window?.$messageBox?.alert('是否同步该节点?', '提示', {
+        showCancelButton: true,
+        confirmButtonText: '确认同步',
+        cancelButtonText: '取消',
+        callback: async (action) => {
+            if (action === 'confirm') {
+                const { code } = await syncFileTree({
+                    projectId:projectId.value,
+                    contractId:contractId.value,
+                })
+                if (code == 200) {
+                    window.$message?.success('同步成功')
+                    window?.location?.reload() //刷新页面
+                }
+            }
+        },
+    })
+}
 
 // 暴露出去
 defineExpose({

+ 23 - 2
src/views/file/collection.vue

@@ -14,7 +14,16 @@
             </div>
             <div v-loading="treeLoading" class="hc-tree-box" element-loading-text="加载中...">
                 <el-scrollbar>
-                    <HcTree ref="treeRef" :project-id="projectId" :contract-id="contractId" :auto-expand-keys="treeAutoExpandKeys" @nodeTap="projectTreeClick" @nodeLoading="treeNodeLoading" @menuTap="ElTreeMenuClick" />
+                    <HcTree
+                        ref="treeRef" 
+                        :project-id="projectId" 
+                        :contract-id="contractId" 
+                        :auto-expand-keys="treeAutoExpandKeys" 
+                        :menus="ElTreeMenu"
+                        @nodeTap="projectTreeClick" 
+                        @nodeLoading="treeNodeLoading" 
+                        @menuTap="ElTreeMenuClick"
+                    />
                 </el-scrollbar>
             </div>
             <!-- 左右拖动 -->
@@ -457,7 +466,14 @@ onMounted(() => {
     treeLoading.value = true
     setTableColumns()
 })
-
+//设置树菜单数据
+const ElTreeMenu = ref([
+    { icon: 'add-circle', label: '新增', key: 'add' },
+    { icon: 'draft', label: '编辑', key: 'edit' },
+    { icon: 'delete-bin', label: '删除', key: 'del' },
+    { icon: 'refresh', label: '目录同步', key: 'sync' },
+    { icon: 'sort-asc', label: '排序', key: 'sort' },
+])
 //上传配置
 const UploadFileOptions = {
     headers: getTokenHeader(),
@@ -581,6 +597,11 @@ const projectTreeClick = ({ node, data, keys, key }) => {
 const ElTreeMenuClick = async ({ key, node, data, keys }) => {
     setStoreValue('wbsTreeExpandKeys', keys)
     treeAutoExpandKeys.value = keys || []
+         if (data?.extType === 2) {
+            ElTreeMenu.value.push(
+                { icon: 'refresh', label: '文件同步', key: 'fileSync' },
+            )
+        }
 
 }
 //回车搜索