feat:文件管理批量选择

This commit is contained in:
jxxghp
2024-06-20 15:32:17 +08:00
parent 5dd071adf4
commit 4f67bb0250
3 changed files with 164 additions and 69 deletions

View File

@@ -13,7 +13,7 @@ const display = useDisplay()
// 输入参数
const props = defineProps({
path: String,
paths: Array<string>,
target: String,
logids: Array<number>,
})
@@ -50,7 +50,18 @@ const progressText = ref('请稍候 ...')
// 整理进度
const progressValue = ref(0)
// 文件转移表单
// 标题
const dialogTitle = computed(() => {
if (props.paths) {
if (props.paths.length > 1) return `整理 - 共 ${props.paths.length}`
return `整理 - ${props.paths[0]}`
} else if (props.logids) {
return `整理 - 共 ${props.logids.length}`
}
return '手动整理'
})
// 表单
const transferForm = reactive({
logid: 0,
path: '',
@@ -77,12 +88,6 @@ const targetDirectories = computed(() => {
return [...new Set(directories)]
})
// 监听输入变化
watchEffect(() => {
transferForm.path = props.path ?? ''
transferForm.target = props.target ?? null
})
// 监听目的路径变化,自动查询目录的刮削配置
watch(transferForm, async () => {
if (transferForm.target) {
@@ -117,47 +122,25 @@ function stopLoadingProgress() {
}
// 整理文件
// eslint-disable-next-line sonarjs/cognitive-complexity
async function transfer() {
if (!props.logids && !props.path) return
if (!props.logids && !props.paths) return
// 显示进度条
progressDialog.value = true
// 开始监听进度
startLoadingProgress()
if (props.path) {
// 文件整理
try {
const result: { [key: string]: any } = await api.post(
'transfer/manual',
{},
{
params: transferForm,
},
)
// 显示结果
if (result.success) $toast.success(`${props.path} 整理完成!`)
else $toast.error(`${props.path} 整理失败:${result.message}`)
} catch (e) {
console.log(e)
// 文件整理
if (props.paths) {
for (const path of props.paths) {
await handleTransfer(path)
}
} else if (props.logids) {
// 日志整理
}
// 日志整理
if (props.logids) {
for (const logid of props.logids) {
transferForm.logid = logid
try {
const result: { [key: string]: any } = await api.post(
'transfer/manual',
{},
{
params: transferForm,
},
)
if (!result.success) $toast.error(`历史记录 ${logid} 重新整理失败:${result.message}`)
} catch (e) {
console.log(e)
}
await handleTransferLog(logid)
}
}
@@ -169,6 +152,28 @@ async function transfer() {
emit('done')
}
// 整理文件
async function handleTransfer(path: string) {
transferForm.path = path
try {
const result: { [key: string]: any } = await api.post('transfer/manual', {}, { params: transferForm })
if (!result.success) $toast.error(`文件 ${path} 整理失败:${result.message}`)
} catch (e) {
console.log(e)
}
}
// 整理日志
async function handleTransferLog(logid: number) {
transferForm.logid = logid
try {
const result: { [key: string]: any } = await api.post('transfer/manual', {}, { params: transferForm })
if (!result.success) $toast.error(`历史记录 ${logid} 重新整理失败:${result.message}`)
} catch (e) {
console.log(e)
}
}
// 调用API加载当前系统环境设置
async function loadSystemSettings() {
try {
@@ -199,10 +204,7 @@ onMounted(() => {
<template>
<VDialog scrollable max-width="50rem" :fullscreen="!display.mdAndUp.value">
<VCard
:title="`${props.path ? `整理 - ${props.path}` : `整理 - 共 ${props.logids?.length} 条记录`}`"
class="rounded-t"
>
<VCard :title="dialogTitle" class="rounded-t">
<DialogCloseBtn @click="emit('close')" />
<VDivider />
<VCardText>