界面展示优化

This commit is contained in:
sswiki
2024-12-06 22:46:50 +08:00
parent 6cdcaf51ad
commit 858e7d6f21
12 changed files with 465 additions and 255 deletions

View File

@@ -0,0 +1,51 @@
<template>
<el-image-viewer
v-if="imagePreviewVisible"
:url-list="showImagePreviewList"
:initial-index="previewInitialIndex"
@close="closeImagePreview"
hide-on-click-modal
/>
</template>
<script setup>
import {onBeforeUnmount, ref, h, shallowRef, nextTick, onMounted, watch, defineProps, defineExpose} from 'vue'
import {showImagePreview} from 'vant';
import {useStoreDisplay} from "@/store/wikiDisplay";
let storeDisplay = useStoreDisplay();
onMounted(() => {
});
let imagePreviewVisible = ref(false);
let previewInitialIndex = ref(0);
let showImagePreviewList = ref([]);
const closeImagePreview = () => {
imagePreviewVisible.value = false;
}
const initViewer = (dom) => {
if (!dom) return;
const imgDomArr = [];
const imgSelector = dom.querySelectorAll('img');
imgSelector.forEach((item) => {
if (item.hasAttribute('not-allow-click')) return;
imgDomArr.push(item);
let index = imgDomArr.length - 1;
item.onclick = () => {
let imgArr = [];
// 点击后再去获取最新的url防止中途有修改比如plantuml的图
imgDomArr.forEach(dom => imgArr.push(dom.src));
if (storeDisplay.isMobile) {
showImagePreview({
images: imgArr,
startPosition: index,
});
} else {
previewInitialIndex.value = index;
showImagePreviewList.value = imgArr;
imagePreviewVisible.value = true;
}
}
});
}
defineExpose({initViewer});
</script>