【增加】Image card 增加图片下载

This commit is contained in:
cherishsince 2024-05-28 11:35:02 +08:00
parent 2211618ada
commit fdeedcfe7b
2 changed files with 31 additions and 14 deletions

View File

@ -66,8 +66,32 @@ const handlerImageBtnClick = async (type, imageDetail: ImageDetailVO) => {
await ImageApi.deleteImage(imageDetail.id) await ImageApi.deleteImage(imageDetail.id)
await getImageList() await getImageList()
await message.success("删除成功!") await message.success("删除成功!")
} else if (type === 'download') {
downloadImage(imageDetail.picUrl)
} }
} }
/**
* 下载 - image
*/
const downloadImage = async (imageUrl) => {
const image = new Image()
image.setAttribute('crossOrigin', 'anonymous')
image.src = imageUrl
image.onload = () => {
const canvas = document.createElement('canvas')
canvas.width = image.width
canvas.height = image.height
const ctx = canvas.getContext('2d')
ctx.drawImage(image, 0, 0, image.width, image.height)
const url = canvas.toDataURL('image/png')
const a = document.createElement('a')
a.href = url
a.download = 'image.png'
a.click()
}
}
// //
defineExpose({getImageList}) defineExpose({getImageList})
// //

View File

@ -1,4 +1,3 @@
<template> <template>
<el-card body-class="" class="image-card"> <el-card body-class="" class="image-card">
<div class="image-operation"> <div class="image-operation">
@ -8,13 +7,14 @@
<el-button type="" text bg v-else-if="imageDetail.status === 'complete'">已完成</el-button> <el-button type="" text bg v-else-if="imageDetail.status === 'complete'">已完成</el-button>
</div> </div>
<div> <div>
<el-button class="btn" text :icon="Download" @click="handlerBtnClick('download', imageDetail)" /> <el-button class="btn" text :icon="Download"
<el-button class="btn" text :icon="Delete" @click="handlerBtnClick('delete', imageDetail)" /> @click="handlerBtnClick('download', imageDetail)"/>
<el-button class="btn" text :icon="More" @click="handlerBtnClick('more', imageDetail)" /> <el-button class="btn" text :icon="Delete" @click="handlerBtnClick('delete', imageDetail)"/>
<el-button class="btn" text :icon="More" @click="handlerBtnClick('more', imageDetail)"/>
</div> </div>
</div> </div>
<div class="image-wrapper" ref="cardImageRef"> <div class="image-wrapper" ref="cardImageRef">
<img class="image" :src="imageDetail?.picUrl" /> <img class="image" :src="imageDetail?.picUrl"/>
</div> </div>
</el-card> </el-card>
</template> </template>
@ -37,22 +37,15 @@ const props = defineProps({
/** /**
* 按钮 - 点击事件 * 按钮 - 点击事件
*/ */
const handlerBtnClick = async (type, imageDetail: ImageDetailVO ) => { const handlerBtnClick = async (type, imageDetail: ImageDetailVO) => {
emits('onBtnClick', type, imageDetail) emits('onBtnClick', type, imageDetail)
} }
// imageDetail
// const { imageDetail } = toRefs(props)
// watch(imageDetail, async (newVal, oldValue) => {
// console.log(' watch')
//
// })
// emits // emits
const emits = defineEmits(['onBtnClick']) const emits = defineEmits(['onBtnClick'])
// //
onMounted( async () => { onMounted(async () => {
if (props.imageDetail.status === 'in_progress') { if (props.imageDetail.status === 'in_progress') {
cardImageLoadingInstance.value = ElLoading.service({ cardImageLoadingInstance.value = ElLoading.service({
target: cardImageRef.value, target: cardImageRef.value,