From 18eee6f8818b864d1f8d8fb56298620921f909e4 Mon Sep 17 00:00:00 2001 From: hcong <1050828145@qq.com> Date: 星期五, 15 十一月 2024 15:49:24 +0800 Subject: [PATCH] bug修改,图片选择组件使用,撤回审核功能 --- src/components/FYImageSelectDialog.vue | 43 ++++++++++++++++++++++++++++++++++++------- 1 files changed, 36 insertions(+), 7 deletions(-) diff --git a/src/components/FYImageSelectDialog.vue b/src/components/FYImageSelectDialog.vue index 8eb1bc6..279ddca 100644 --- a/src/components/FYImageSelectDialog.vue +++ b/src/components/FYImageSelectDialog.vue @@ -1,12 +1,13 @@ <template> <el-dialog + :title="title" :model-value="dialogVisible" @opened="$emit('update:dialogVisible', true)" @closed="$emit('update:dialogVisible', false)" width="66%" destroy-on-close > - <div class="main"> + <div class="main" v-loading="loading"> <el-row justify="end" v-if="!readonly"> <el-text size="small" type="info" class="m-r-8" >鏈�澶氶�夋嫨{{ maxSelect }}寮犲浘鐗�</el-text @@ -45,8 +46,9 @@ :class="[img.isSelect ? 'selected' : 'noActive', 'image']" fit="cover" :src="img.url" - lazy @click="onSelect(img, i)" + @load="onOneImgLoadSuccess" + @error="onOneImgLoadError" /> </el-scrollbar> <el-row v-else justify="space-between"> @@ -57,9 +59,11 @@ </el-dialog> </template> <script setup> -import { ref, watch } from 'vue'; +import { ref, watch, computed } from 'vue'; const props = defineProps({ + // 鏍囬 + title: String, dialogVisible: Boolean, /** * 鍥剧墖鍒嗙被 @@ -94,6 +98,32 @@ const activeId = ref(''); // const typeImgMap = ref(new Map()); const selectedImgUrlList = ref([]); + +let loadedImgCount = ref(0); +// 鍔犺浇鐘舵�� +const loading = computed(() => { + if (activeId.value == '') { + return false; + } + // 淇濊瘉鏈�寮�濮嬫槸鍔犺浇鐘舵�侊紝涓夊垎涔嬩竴鍔犺浇涔嬪悗鍋滄灞曠ず鍔犺浇鐘舵�� + return !( + props.typeImgMap.get(activeId.value).length / 3 <= + loadedImgCount.value + ); +}); +function onOneImgLoadError(e) { + loadedImgCount.value++; +} +function onOneImgLoadSuccess(e) { + loadedImgCount.value++; +} +watch( + () => activeId.value, + (nV, oV) => { + loadedImgCount.value = 0; + }, + { immediate: true } +); function onSelect(img, i) { if (props.readonly) { @@ -160,7 +190,7 @@ }); }); }, - { immediate: true } + { deep: true, immediate: true } ); </script> <style scoped> @@ -175,12 +205,12 @@ .main { margin: 0 auto; /* 浣跨埗鍏冪礌灞呬腑 */ - height: 100%; + height: 72vh; width: 100%; } .imgs { - height: 50vh; + height: 60vh; width: 100%; min-height: 100px !important; /* border-style:solid; @@ -251,7 +281,6 @@ } ::v-deep .el-dialog__body { - height: 60vh; padding: 10px calc(var(--el-dialog-padding-primary) + 10px) !important; } </style> -- Gitblit v1.9.3