fix(F006): 商品图片预览层级修复 - 7文件18处el-image加preview-teleported(预览浮层挂body脱离表格容器) + 全局viewer z-index 3100最高层级兜底
This commit is contained in:
parent
47de8cdd66
commit
7b84336f82
@ -150,7 +150,7 @@ onMounted(load)
|
|||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="反馈图片" v-if="previewData.imgList && previewData.imgList.length">
|
<el-form-item label="反馈图片" v-if="previewData.imgList && previewData.imgList.length">
|
||||||
<div class="feedback-imgs">
|
<div class="feedback-imgs">
|
||||||
<el-image v-for="(img, idx) in previewData.imgList" :key="idx" :src="img" :preview-src-list="previewData.imgList" :initial-index="idx" fit="cover" class="feedback-img-item" />
|
<el-image v-for="(img, idx) in previewData.imgList" :key="idx" :src="img" :preview-src-list="previewData.imgList" :initial-index="idx" fit="cover" class="feedback-img-item" preview-teleported />
|
||||||
</div>
|
</div>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
|
|||||||
@ -149,7 +149,7 @@ onMounted(load)
|
|||||||
<el-tag :type="(TYPE_MAP[row.type]?.type as any)" size="small" effect="light">{{ TYPE_MAP[row.type]?.label || `类型${row.type}` }}</el-tag>
|
<el-tag :type="(TYPE_MAP[row.type]?.type as any)" size="small" effect="light">{{ TYPE_MAP[row.type]?.label || `类型${row.type}` }}</el-tag>
|
||||||
</template>
|
</template>
|
||||||
<template #image="{ row }">
|
<template #image="{ row }">
|
||||||
<el-image :src="row.image" fit="cover" class="lunbo-thumb" :preview-src-list="[row.image]" />
|
<el-image :src="row.image" fit="cover" class="lunbo-thumb" :preview-src-list="[row.image]" preview-teleported />
|
||||||
</template>
|
</template>
|
||||||
<template #position="{ row }">
|
<template #position="{ row }">
|
||||||
<el-tag :type="(POS_MAP[row.position]?.type as any)" size="small" effect="plain">{{ POS_MAP[row.position]?.label || `位置${row.position}` }}</el-tag>
|
<el-tag :type="(POS_MAP[row.position]?.type as any)" size="small" effect="plain">{{ POS_MAP[row.position]?.label || `位置${row.position}` }}</el-tag>
|
||||||
|
|||||||
@ -429,7 +429,7 @@ watch(orderId, load)
|
|||||||
<template #default="{ row }">
|
<template #default="{ row }">
|
||||||
<div class="rr-good-cell">
|
<div class="rr-good-cell">
|
||||||
<div v-if="row.icon" class="rr-good-icon">
|
<div v-if="row.icon" class="rr-good-icon">
|
||||||
<el-image :src="row.icon" :preview-src-list="[row.icon]" fit="cover" style="width: 40px; height: 40px; border-radius: 4px" />
|
<el-image :src="row.icon" :preview-src-list="[row.icon]" fit="cover" style="width: 40px; height: 40px; border-radius: 4px" preview-teleported />
|
||||||
</div>
|
</div>
|
||||||
<div v-else class="rr-good-icon rr-good-icon-placeholder">{{ (row.title || '?').charAt(0) }}</div>
|
<div v-else class="rr-good-icon rr-good-icon-placeholder">{{ (row.title || '?').charAt(0) }}</div>
|
||||||
<div>
|
<div>
|
||||||
@ -495,7 +495,7 @@ watch(orderId, load)
|
|||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="回单" width="100" align="center">
|
<el-table-column label="回单" width="100" align="center">
|
||||||
<template #default="{ row }">
|
<template #default="{ row }">
|
||||||
<el-image v-if="row.acceptanceFile" :src="row.acceptanceFile" :preview-src-list="[row.acceptanceFile]" fit="contain" style="width: 60px; height: 60px" />
|
<el-image v-if="row.acceptanceFile" :src="row.acceptanceFile" :preview-src-list="[row.acceptanceFile]" fit="contain" style="width: 60px; height: 60px" preview-teleported />
|
||||||
<span v-else>--</span>
|
<span v-else>--</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
|||||||
@ -206,7 +206,7 @@ onMounted(load)
|
|||||||
<el-table-column prop="brandName" label="品牌名称" header-align="center" align="center" min-width="120" show-overflow-tooltip />
|
<el-table-column prop="brandName" label="品牌名称" header-align="center" align="center" min-width="120" show-overflow-tooltip />
|
||||||
<el-table-column label="品牌授权书" header-align="center" align="center" width="90">
|
<el-table-column label="品牌授权书" header-align="center" align="center" width="90">
|
||||||
<template #default="{ row }">
|
<template #default="{ row }">
|
||||||
<el-image v-if="row.authUrl" :src="row.authUrl" fit="cover" :preview-src-list="[row.authUrl]" class="brand-auth" />
|
<el-image v-if="row.authUrl" :src="row.authUrl" fit="cover" :preview-src-list="[row.authUrl]" class="brand-auth" preview-teleported />
|
||||||
<span v-else class="rr-muted">--</span>
|
<span v-else class="rr-muted">--</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
|||||||
@ -149,7 +149,7 @@ onMounted(load)
|
|||||||
<template #content="{ row }">
|
<template #content="{ row }">
|
||||||
<span v-if="row.type === 1" class="rr-content-text">{{ row.content }}</span>
|
<span v-if="row.type === 1" class="rr-content-text">{{ row.content }}</span>
|
||||||
<el-button v-else-if="row.type === 2" text type="primary" size="small" @click="onShowRichText(row.content)">查看富文本</el-button>
|
<el-button v-else-if="row.type === 2" text type="primary" size="small" @click="onShowRichText(row.content)">查看富文本</el-button>
|
||||||
<el-image v-else-if="row.type === 3" :src="row.content" :preview-src-list="[row.content]" style="width: 60px; height: 60px; border-radius: 4px" fit="cover" />
|
<el-image v-else-if="row.type === 3" :src="row.content" :preview-src-list="[row.content]" style="width: 60px; height: 60px; border-radius: 4px" fit="cover" preview-teleported />
|
||||||
</template>
|
</template>
|
||||||
<template #action="{ row }">
|
<template #action="{ row }">
|
||||||
<el-button text type="primary" size="small" @click="onEdit(row)">修改</el-button>
|
<el-button text type="primary" size="small" @click="onEdit(row)">修改</el-button>
|
||||||
|
|||||||
@ -385,7 +385,7 @@ onMounted(() => Promise.all([load(), loadStats(), loadCounts()]))
|
|||||||
<template #title="{ row }">
|
<template #title="{ row }">
|
||||||
<div class="rr-good-cell">
|
<div class="rr-good-cell">
|
||||||
<div v-if="row.icon" class="rr-good-icon">
|
<div v-if="row.icon" class="rr-good-icon">
|
||||||
<el-image :src="row.icon" :preview-src-list="[row.icon]" fit="cover" style="width: 40px; height: 40px; border-radius: 4px" />
|
<el-image :src="row.icon" :preview-src-list="[row.icon]" fit="cover" style="width: 40px; height: 40px; border-radius: 4px" preview-teleported />
|
||||||
</div>
|
</div>
|
||||||
<div v-else class="rr-good-icon-placeholder">{{ (row.title || '?').charAt(0) }}</div>
|
<div v-else class="rr-good-icon-placeholder">{{ (row.title || '?').charAt(0) }}</div>
|
||||||
<span class="rr-good-title">{{ row.title }}</span>
|
<span class="rr-good-title">{{ row.title }}</span>
|
||||||
@ -430,7 +430,7 @@ onMounted(() => Promise.all([load(), loadStats(), loadCounts()]))
|
|||||||
<template #default="{ row }">
|
<template #default="{ row }">
|
||||||
<div class="rr-good-cell">
|
<div class="rr-good-cell">
|
||||||
<div v-if="row.icon" class="rr-good-icon">
|
<div v-if="row.icon" class="rr-good-icon">
|
||||||
<el-image :src="row.icon" :preview-src-list="[row.icon]" fit="cover" style="width: 40px; height: 40px; border-radius: 4px" />
|
<el-image :src="row.icon" :preview-src-list="[row.icon]" fit="cover" style="width: 40px; height: 40px; border-radius: 4px" preview-teleported />
|
||||||
</div>
|
</div>
|
||||||
<div v-else class="rr-good-icon-placeholder">{{ (row.title || '?').charAt(0) }}</div>
|
<div v-else class="rr-good-icon-placeholder">{{ (row.title || '?').charAt(0) }}</div>
|
||||||
<span class="rr-good-title">{{ row.title }}</span>
|
<span class="rr-good-title">{{ row.title }}</span>
|
||||||
|
|||||||
@ -300,7 +300,7 @@ onMounted(() => Promise.all([load(), loadStats(), loadCounts()]))
|
|||||||
>
|
>
|
||||||
<template #title="{ row }">
|
<template #title="{ row }">
|
||||||
<div class="rr-good-cell">
|
<div class="rr-good-cell">
|
||||||
<div v-if="row.icon" class="rr-good-icon"><el-image :src="row.icon" :preview-src-list="[row.icon]" fit="cover" style="width: 40px; height: 40px; border-radius: 4px" /></div>
|
<div v-if="row.icon" class="rr-good-icon"><el-image :src="row.icon" :preview-src-list="[row.icon]" fit="cover" style="width: 40px; height: 40px; border-radius: 4px" preview-teleported /></div>
|
||||||
<div v-else class="rr-good-icon-placeholder">{{ (row.title || '?').charAt(0) }}</div>
|
<div v-else class="rr-good-icon-placeholder">{{ (row.title || '?').charAt(0) }}</div>
|
||||||
<span>{{ row.title }}</span>
|
<span>{{ row.title }}</span>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -72,6 +72,11 @@
|
|||||||
.batch-hint { font-size: 12px; color: var(--ink-3); }
|
.batch-hint { font-size: 12px; color: var(--ink-3); }
|
||||||
.batch-actions { margin-left: auto; display: flex; gap: 4px; flex-wrap: wrap; }
|
.batch-actions { margin-left: auto; display: flex; gap: 4px; flex-wrap: wrap; }
|
||||||
|
|
||||||
|
/* ---------- 8. 图片预览浮层: 最高层级兜底 (不被表格/弹窗盖住) ---------- */
|
||||||
|
.el-image-viewer__wrapper {
|
||||||
|
z-index: 3100 !important;
|
||||||
|
}
|
||||||
|
|
||||||
/* ---------- 4. 状态色暗色适配 ---------- */
|
/* ---------- 4. 状态色暗色适配 ---------- */
|
||||||
/* 状态语义色 token (亮色默认) — 各页面状态标签通过 var() 引用, 主题切换自动适配 */
|
/* 状态语义色 token (亮色默认) — 各页面状态标签通过 var() 引用, 主题切换自动适配 */
|
||||||
:root,
|
:root,
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user