|
@@ -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({
|