基础信息页:产品图/说明书上传后预览不显示修复 + 新增 Ctrl+V 粘贴蓝字提示
- customUpload 改为手动 push:移除 onSuccess(res) 调用,规避 el-upload 2.13.1 handleSuccess 未从 res.data.url 提取 url 的问题
This commit is contained in:
@ -512,6 +512,7 @@
|
|||||||
>
|
>
|
||||||
<template #prefix><el-icon><Link /></el-icon></template>
|
<template #prefix><el-icon><Link /></el-icon></template>
|
||||||
</el-input>
|
</el-input>
|
||||||
|
<div style="color: #409EFF; font-size: 12px; margin-top: 4px;">支持将鼠标悬停于虚线框内通过 Ctrl+V 粘贴图片快速上传</div>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
<el-form-item label="说明书" prop="generalManual" v-if="hasFieldPermission('files')">
|
<el-form-item label="说明书" prop="generalManual" v-if="hasFieldPermission('files')">
|
||||||
@ -565,6 +566,7 @@
|
|||||||
>
|
>
|
||||||
<template #prefix><el-icon><Link /></el-icon></template>
|
<template #prefix><el-icon><Link /></el-icon></template>
|
||||||
</el-input>
|
</el-input>
|
||||||
|
<div style="color: #409EFF; font-size: 12px; margin-top: 4px;">支持将鼠标悬停于虚线框内通过 Ctrl+V 粘贴图片快速上传</div>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
<el-form-item label="状态" prop="isEnabled" v-if="hasFieldPermission('isEnabled')">
|
<el-form-item label="状态" prop="isEnabled" v-if="hasFieldPermission('isEnabled')">
|
||||||
@ -583,10 +585,10 @@
|
|||||||
</template>
|
</template>
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
|
|
||||||
<el-dialog v-model="dialogVisibleImage" append-to-body width="50%">
|
<el-dialog v-model="dialogVisibleImage" append-to-body width="50%" :close-on-click-modal="false" :close-on-press-escape="false">
|
||||||
<img style="width: 100%" :src="dialogImageUrl" alt="Preview Image" />
|
<img style="width: 100%" :src="dialogImageUrl" alt="Preview Image" />
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
<el-dialog v-model="cameraDialogVisible" title="拍照上传" width="500px" append-to-body destroy-on-close :close-on-click-modal="false">
|
<el-dialog v-model="cameraDialogVisible" title="拍照上传" width="500px" append-to-body destroy-on-close :close-on-click-modal="false" :close-on-press-escape="false">
|
||||||
<WebRtcCamera
|
<WebRtcCamera
|
||||||
ref="cameraRef"
|
ref="cameraRef"
|
||||||
@photo-submit="handleCameraConfirm"
|
@photo-submit="handleCameraConfirm"
|
||||||
@ -602,7 +604,7 @@
|
|||||||
/>
|
/>
|
||||||
|
|
||||||
<!-- 预警设置弹窗 -->
|
<!-- 预警设置弹窗 -->
|
||||||
<el-dialog v-model="warningDialog.visible" :title="warningDialog.title" width="500px" append-to-body destroy-on-close>
|
<el-dialog v-model="warningDialog.visible" :title="warningDialog.title" width="500px" append-to-body destroy-on-close :close-on-click-modal="false" :close-on-press-escape="false">
|
||||||
<el-form ref="warningFormRef" :model="warningForm" :rules="warningRules" label-width="100px">
|
<el-form ref="warningFormRef" :model="warningForm" :rules="warningRules" label-width="100px">
|
||||||
<el-alert
|
<el-alert
|
||||||
v-if="warningDialog.selectedCount > 1"
|
v-if="warningDialog.selectedCount > 1"
|
||||||
@ -638,7 +640,7 @@
|
|||||||
</el-dialog>
|
</el-dialog>
|
||||||
|
|
||||||
<!-- 批量质检设置弹窗 -->
|
<!-- 批量质检设置弹窗 -->
|
||||||
<el-dialog v-model="inspectionDialog.visible" title="批量质检设置" width="500px" append-to-body destroy-on-close>
|
<el-dialog v-model="inspectionDialog.visible" title="批量质检设置" width="500px" append-to-body destroy-on-close :close-on-click-modal="false" :close-on-press-escape="false">
|
||||||
<el-alert
|
<el-alert
|
||||||
:title="`已选择 ${inspectionDialog.selectedCount} 条物料进行批量质检设置`"
|
:title="`已选择 ${inspectionDialog.selectedCount} 条物料进行批量质检设置`"
|
||||||
type="info"
|
type="info"
|
||||||
@ -1738,8 +1740,21 @@ const customUpload = async (options: any, targetField: 'generalImage' | 'general
|
|||||||
if (res.code === 200) {
|
if (res.code === 200) {
|
||||||
const newUrl = res.data.url
|
const newUrl = res.data.url
|
||||||
form.value[targetField].push(newUrl)
|
form.value[targetField].push(newUrl)
|
||||||
|
|
||||||
|
// 清理 el-upload 内部 push 的"待上传"占位条目(带 raw 属性的那条 blob URL 占位),
|
||||||
|
// 否则会与下方手动 push 的新条目重复显示
|
||||||
|
const targetList = targetField === 'generalImage' ? fileListImage : fileListManual
|
||||||
|
const staleIndex = targetList.value.findIndex(f => f.raw === file)
|
||||||
|
if (staleIndex !== -1) targetList.value.splice(staleIndex, 1)
|
||||||
|
|
||||||
|
// 手动构造带服务端 URL 的条目并 push,picture-card 即可正常渲染
|
||||||
|
const fileObj = { name: newUrl.split('/').pop(), url: getImageUrl(newUrl) }
|
||||||
|
if (targetField === 'generalImage') {
|
||||||
|
fileListImage.value.push(fileObj)
|
||||||
|
} else {
|
||||||
|
fileListManual.value.push(fileObj)
|
||||||
|
}
|
||||||
ElMessage.success('上传成功')
|
ElMessage.success('上传成功')
|
||||||
onSuccess(res) // el-upload v-model 自动更新 fileList,无需手动 push
|
|
||||||
} else {
|
} else {
|
||||||
ElMessage.error(res.msg || '上传失败');
|
ElMessage.error(res.msg || '上传失败');
|
||||||
onError(new Error(res.msg))
|
onError(new Error(res.msg))
|
||||||
|
|||||||
Reference in New Issue
Block a user