Optimized photo wall and other details.
parent
57957da06b
commit
02c0307a0e
@ -0,0 +1,107 @@
|
||||
<template>
|
||||
<div class="photo-item">
|
||||
<div class="photo-delete-button"
|
||||
v-if="userStore.userId"
|
||||
@click="deletePhoto">
|
||||
删除
|
||||
</div>
|
||||
<el-image :src="imgThumb"
|
||||
:alt="imgName"
|
||||
style="width: 100%"
|
||||
:preview-src-list="[imgSrc]"
|
||||
:hide-on-click-modal="true"
|
||||
fit="cover" lazy>
|
||||
<template #placeholder>
|
||||
<div class="image-slot">
|
||||
加载中<span class="dot">...</span>
|
||||
</div>
|
||||
</template>
|
||||
</el-image>
|
||||
<span class="paragraph">{{imgName}}</span>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { useUserStore } from "@/stores/user";
|
||||
import { ElMessage, ElMessageBox } from "element-plus";
|
||||
import { deletePhotoById } from "@/services/photoApi";
|
||||
|
||||
const userStore = useUserStore();
|
||||
const props = defineProps({
|
||||
imgId: {
|
||||
type: String,
|
||||
default() {
|
||||
return ''
|
||||
},
|
||||
},
|
||||
imgThumb: {
|
||||
type: String,
|
||||
default() {
|
||||
return ''
|
||||
},
|
||||
},
|
||||
imgSrc: {
|
||||
type: String,
|
||||
default() {
|
||||
return ''
|
||||
},
|
||||
},
|
||||
imgName: {
|
||||
type: String,
|
||||
default() {
|
||||
return ''
|
||||
},
|
||||
}
|
||||
});
|
||||
|
||||
const emits = defineEmits(['deletePhoto']);
|
||||
|
||||
const deletePhoto = () => {
|
||||
ElMessageBox.confirm(
|
||||
'确认删除这张图片吗?',
|
||||
'警告',
|
||||
{
|
||||
confirmButtonText: '确认',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning',
|
||||
}
|
||||
)
|
||||
.then(() => {
|
||||
deletePhotoById(props.imgId.toString()).then(() => {
|
||||
ElMessage({
|
||||
type: 'success',
|
||||
message: "删除成功!",
|
||||
})
|
||||
emits('deletePhoto')
|
||||
})
|
||||
})
|
||||
.catch()
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.photo-item {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.photo-item .photo-delete-button {
|
||||
position: absolute;
|
||||
right: 5px;
|
||||
bottom: 3px;
|
||||
width: 30px;
|
||||
height: 20px;
|
||||
z-index: 2;
|
||||
display: none;
|
||||
cursor: pointer;
|
||||
background: red;
|
||||
border-radius: 4px;
|
||||
color: white;
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
.photo-item:hover .photo-delete-button {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
}
|
||||
</style>
|
Loading…
Reference in New Issue