file详情页工具栏实现图片优化的功能
This commit is contained in:
parent
f13e63a1a6
commit
9f49a15877
@ -18,7 +18,7 @@
|
||||
|
||||
<n-button type="default" size="medium" @click="optimizeFile" v-if="isOptimizable">
|
||||
<template #icon>
|
||||
<n-icon><Icon icon="tabler:compress" /></n-icon>
|
||||
<n-icon><Icon icon="tabler:photo-spark" /></n-icon>
|
||||
</template>
|
||||
{{ context.t('Optimize') }}
|
||||
</n-button>
|
||||
@ -50,8 +50,9 @@
|
||||
|
||||
<script setup lang="ts">
|
||||
import { computed } from 'vue'
|
||||
import { NButton, NSpace, NIcon } from 'naive-ui'
|
||||
import { NButton, NSpace, NIcon, useMessage } from 'naive-ui'
|
||||
import { Icon } from '@iconify/vue'
|
||||
import { api } from '@/shared/api/common'
|
||||
|
||||
const props = defineProps<{
|
||||
context: {
|
||||
@ -61,11 +62,14 @@ const props = defineProps<{
|
||||
canEdit: boolean
|
||||
loading: boolean
|
||||
save: () => Promise<void>
|
||||
refresh: () => Promise<void>
|
||||
router: any
|
||||
t: (key: string) => string
|
||||
}
|
||||
}>()
|
||||
|
||||
const message = useMessage()
|
||||
|
||||
// 检查是否可优化(图片文件且大小大于0)
|
||||
const isOptimizable = computed(() => {
|
||||
const record = props.context.record
|
||||
@ -105,16 +109,46 @@ const downloadFile = () => {
|
||||
window.open(fileUrl)
|
||||
}
|
||||
|
||||
// 优化文件
|
||||
const optimizeFile = () => {
|
||||
// TODO: 实现文件优化功能
|
||||
console.log('Optimize file:', props.context.record.name)
|
||||
// 优化图片文件
|
||||
const optimizeFile = async () => {
|
||||
const record = props.context.record
|
||||
message.loading(props.context.t('Optimizing image...'), { duration: 0 })
|
||||
|
||||
try {
|
||||
await api.call('run_pg_method', {
|
||||
dt: 'File',
|
||||
dn: record.name,
|
||||
method: 'optimize_file'
|
||||
})
|
||||
message.destroyAll()
|
||||
message.success(props.context.t('Image optimized'))
|
||||
// 刷新数据以显示新的文件大小
|
||||
await props.context.refresh()
|
||||
} catch (error: any) {
|
||||
message.destroyAll()
|
||||
message.error(error?.message || props.context.t('Optimization failed'))
|
||||
console.error('Optimize failed:', error)
|
||||
}
|
||||
}
|
||||
|
||||
// 解压文件
|
||||
const unzipFile = () => {
|
||||
// TODO: 实现文件解压功能
|
||||
console.log('Unzip file:', props.context.record.name)
|
||||
// 解压ZIP文件
|
||||
const unzipFile = async () => {
|
||||
const record = props.context.record
|
||||
message.loading(props.context.t('Unzipping file...'), { duration: 0 })
|
||||
|
||||
try {
|
||||
const result = await api.call('jingrow.core.api.file.unzip_file', {
|
||||
name: record.name
|
||||
})
|
||||
message.destroyAll()
|
||||
message.success(props.context.t('File unzipped successfully'))
|
||||
// 解压成功后跳转到文件列表页
|
||||
props.context.router.push({ name: 'PageTypeList', params: { entity: 'file' } })
|
||||
} catch (error: any) {
|
||||
message.destroyAll()
|
||||
message.error(error?.message || props.context.t('Unzip failed'))
|
||||
console.error('Unzip failed:', error)
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user