vue elementUI 上傳非空驗證示例代碼
<el-form-item label="照片" prop="staffImg"> <template v-slot:label> <span v-show="!rules.staffImg[0].required" style="color: #ff4949;margin-right: 4px;">*</span> <span>照片</span> </template> <el-upload class="avatar-uploader" :action="action" ref="upload" :show-file-list="false" :on-change="uploadChange" :headers="headers" :before-upload="fileBeforeUpload" :on-success="fileUploadSuccess" accept=".jpg,.png"> <img v-if="imageUrl" :src="imageUrl" class="avatar" /> <i v-else class="el-icon-plus avatar-uploader-icon"></i> </el-upload> </el-form-item>
// 表單校驗 rules: { staffImg: [ { required: true, message: "圖片不能為空", trigger: ["blur", 'change'] }, ], },
computed: { // 上傳頭像 action() { let baseUrl = ""; if (process.env.NODE_ENV === "development") { baseUrl = process.env.VUE_APP_BASE_API + "/base/common/uploadFile"; } else { baseUrl = process.env.VUE_APP_BASE_API + "/base/common/uploadFile"; } return baseUrl; }, },
uploadChange(file, fileList) { // console.log("上傳進行改變", this.imageUrl); this.headFile = file; this.rules.staffImg[0].required = false; }, //圖片上傳之前 fileBeforeUpload(file) { const that = this; let size = file.size / 1024 / 1024; if (size >= 1) { that.$modal.msgError("上傳圖片過大!請上傳1M以內(nèi)的圖片"); return; } const isJpgOrPng = file.type === "image/jpeg" || file.type === "image/png"; // const isLt1M = file.size / 1024 / 1024 < 1; const isLt1M = true; if (!isJpgOrPng) { this.$message.error("上傳圖片只能是 JPG 或 PNG 格式!"); return false; } // 加密 const time = toString(new Date().getTime()); const p = encrypt(time); this.headers["s"] = p; this.headers["t"] = time; return new Promise((resolve) => { // 小于1M 不壓縮 if (isLt1M) { resolve(file); } // 壓縮到400KB,這里的400就是要壓縮的大小,可自定義 imageConversion.compressAccurately(file, 200).then((res) => { resolve(res); }); // compressAccurately有多個參數(shù)時傳入對象 imageConversion .compressAccurately(file, { size: 1024, //圖片大小壓縮到1024kb width: 1280, //寬度壓縮到1280 }) .then((res) => { resolve(res); }); }); }, //照片上傳成功 fileUploadSuccess(res, file) { this.form.staffImg = res.data.dbPath; this.imageUrl = URL.createObjectURL(file.raw); this.rules.staffImg[0].required = false; },
原理就是寫一個假的紅色*號,每次點擊查看的時候執(zhí)行 this.rules.staffImg[0].required = false;
關(guān)閉原有的非空驗證,打開假的紅色*號
表單重置的時候執(zhí)行this.rules.staffImg[0].required = true;
上傳文件改變后執(zhí)行this.rules.staffImg[0].required = false;
圖片上傳成功后執(zhí)行this.rules.staffImg[0].required = false;
到此這篇關(guān)于vue elementUI 上傳非空驗證的文章就介紹到這了,更多相關(guān)vue elementUI 非空驗證內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
axios全局注冊,設(shè)置token,以及全局設(shè)置url請求網(wǎng)段的方法
今天小編就為大家分享一篇axios全局注冊,設(shè)置token,以及全局設(shè)置url請求網(wǎng)段的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-09-09elementUI el-input 只能輸入正整數(shù)驗證的操作方法
這篇文章主要介紹了elementUI el-input 只能輸入正整數(shù)驗證,本文給大家詳細講解對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-11-11詳解vite+ts快速搭建vue3項目以及介紹相關(guān)特性
這篇文章主要介紹了vite+ts快速搭建vue3項目以及介紹相關(guān)特性,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-02-02VUE3中實現(xiàn)拖拽與縮放自定義看板vue-grid-layout詳解
想實現(xiàn)桌面自由拖拽布局的效果,找到了vue-grid-layout柵格布局插件,可以完美解決,下面這篇文章主要給大家介紹了關(guān)于VUE3中實現(xiàn)拖拽與縮放自定義看板vue-grid-layout的相關(guān)資料,需要的朋友可以參考下2023-02-02在VUE中使用lodash的debounce和throttle操作
這篇文章主要介紹了在VUE中使用lodash的debounce和throttle操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-11-11