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)文章
Vue element el-table-column中對日期進行格式化方式(全局過濾器)
這篇文章主要介紹了Vue element el-table-column中對日期進行格式化方式(全局過濾器),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-04-04
el-form的label和表單自適應(yīng)填滿一行且靠左對齊方式
這篇文章主要介紹了el-form的label和表單自適應(yīng)填滿一行且靠左對齊方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-10-10
深入解析el-col-group強大且靈活的Element表格列組件
這篇文章主要為大家介紹了el-col-group強大且靈活的Element表格列組件深入解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-04-04
Vue預(yù)覽PDF的兩種方法比較(vue-pdf-embed與pdfjs-dist)
這篇文章主要為大家詳細介紹了Vue預(yù)覽PDF的兩種方法比較,即vue-pdf-embed與pdfjs-dist,文中的示例代碼講解詳細,感興趣的小伙伴可以了解下2025-08-08
vue響應(yīng)式更新機制及不使用框架實現(xiàn)簡單的數(shù)據(jù)雙向綁定問題
vue是一款具有響應(yīng)式更新機制的框架,既可以實現(xiàn)單向數(shù)據(jù)流也可以實現(xiàn)數(shù)據(jù)的雙向綁定。這篇文章主要介紹了vue響應(yīng)式更新機制及不使用框架實現(xiàn)簡單的數(shù)據(jù)雙向綁定問題,需要的朋友可以參考下2019-06-06

