vant van-uploader上传file文件;回显时使用imageId拼接路径

上传

form.startOutsideSign.outsideSignPhotoFile是数组

复制代码
 <van-field name="startUploader"
                                    :rules="[{ validator: uploaderValidator, message: '请上传出发地照片' }]" required>
                                    <template #input>
                                        <van-uploader v-model="form.startOutsideSign.outsideSignPhotoFile"
                                            capture="camera" :max-count="1" :deletable="!formReadonly"
                                            :disabled="formReadonly" :after-read="afterReadStart"
                                            @delete="afterReadStart" />
                                    </template>
                                </van-field>

根据项目而定的校验

复制代码
    // 自定义上传组件的校验函数
        uploaderValidator(fileList) {
            // 如果当前是"提交"操作,则必须有文件
            if (this.currentActionType === 'submit') {
                return fileList && fileList.length > 0;
            }
            // 如果是其他操作(如保存),则直接通过校验
            return true;
        },

      afterReadStart(file) {
            console.log('新上传的文件:', file);
            // 应该清除原来的数据 
            this.form.startOutsideSign.imageId = '';
            // todo! 时间 地点
        },

提交代码时,因为要求outsideSignPhotoFile是[file,file...]的格式,如果不是file文件,即是后端返回的图片,如含imageId,就不另外处理,

复制代码
     startOutsideSign.outsideSignPhotoFile = startOutsideSign.outsideSignPhotoFile.filter(ele => ele.file).map(ele => {
                        if (ele.file) {
                            return ele.file
                        }
                        return ele
                    })

回显

复制代码
  if (_startOutsideSign) {
                    _startOutsideSign.outsideSignPhotoFile = _startOutsideSign.imageId ? this.transformFileListByImageId(_startOutsideSign.imageId) : []
                }


        transformFileListByImageId(imageId) {

            return [
                {
                    url: this.imgUrl + imageId,
                    // 可以存储原始imageId,方便后续操作
                    isServerImage: true,
                    imageId,
                    isImage: true // 明确告诉Vant这是一个图片
                }
            ]
        },
相关推荐
纸上的彩虹19 小时前
半年一百个页面,重构系统也重构了我对前端工作的理解
前端·程序员·架构
be or not to be20 小时前
深入理解 CSS 浮动布局(float)
前端·css
LYFlied20 小时前
【每日算法】LeetCode 1143. 最长公共子序列
前端·算法·leetcode·职场和发展·动态规划
老华带你飞20 小时前
农产品销售管理|基于java + vue农产品销售管理系统(源码+数据库+文档)
java·开发语言·前端·数据库·vue.js·spring boot·后端
小徐_233320 小时前
2025 前端开源三年,npm 发包卡我半天
前端·npm·github
GIS之路21 小时前
GIS 数据转换:使用 GDAL 将 Shp 转换为 GeoJSON 数据
前端
JIngJaneIL21 小时前
基于springboot + vue房屋租赁管理系统(源码+数据库+文档)
java·开发语言·前端·数据库·vue.js·spring boot·后端
天天扭码21 小时前
以浏览器多进程的角度解构页面渲染的整个流程
前端·面试·浏览器
你们瞎搞21 小时前
Cesium加载20GB航测影像.tif
前端·cesium·gdal·地图切片
milanleon1 天前
使用Spring Security进行登录认证
java·前端·spring