新增: 文件操作增强与预览扩展
- 文件剪贴板复制剪切粘贴,重名自动副本 - SFTP下载到本机与外部文件拖入,目录递归 - 传输进度浮动面板,transfer-progress事件链 - Drawio预览,Excel工作线程,冻结看门狗 - cmd与bat自写batch语法高亮,psm1等映射补齐
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
/**
|
||||
* 文件剪贴板 Composable(应用内内存态单例)
|
||||
* 复制/剪切 → 粘贴到其他目录;粘贴动作由 index.vue 执行
|
||||
*/
|
||||
|
||||
import { ref, computed } from 'vue'
|
||||
import type { FileItem } from '@/types/file-system'
|
||||
|
||||
export type ClipboardMode = 'copy' | 'cut'
|
||||
|
||||
interface FileClipboardState {
|
||||
mode: ClipboardMode
|
||||
items: FileItem[]
|
||||
fromDir: string
|
||||
}
|
||||
|
||||
// 模块级单例状态(跨组件共享)
|
||||
const state = ref<FileClipboardState | null>(null)
|
||||
|
||||
export function useFileClipboard() {
|
||||
const clipboard = computed(() => state.value)
|
||||
|
||||
const clipboardEmpty = computed(() => !state.value || state.value.items.length === 0)
|
||||
|
||||
/** 设置复制项 */
|
||||
const setCopy = (items: FileItem[], fromDir: string) => {
|
||||
state.value = { mode: 'copy', items: [...items], fromDir }
|
||||
}
|
||||
|
||||
/** 设置剪切项 */
|
||||
const setCut = (items: FileItem[], fromDir: string) => {
|
||||
state.value = { mode: 'cut', items: [...items], fromDir }
|
||||
}
|
||||
|
||||
/** 清空剪贴板 */
|
||||
const clear = () => {
|
||||
state.value = null
|
||||
}
|
||||
|
||||
return { clipboard, clipboardEmpty, setCopy, setCut, clear }
|
||||
}
|
||||
Reference in New Issue
Block a user