<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
首先,上官網地址
首先頁面上面用了彈窗的形式,做完之後長這樣,有全螢幕,關閉等按鈕,上效果圖和完整程式碼!!!!!
<!--點選新增按鈕 --> <div class="addbtn" @click="fundOperation()"> <span>+</span> 新增 </div> <el-dialog v-model="datadialog" :show-close="true" :close-on-click-modal="false" width="746px" :title="dialogtitle" :fullscreen="fullscreen" :destroy-on-close="true" @close="closeDialog" > <!--是否全螢幕--> <div class="fullicon" @click="fullscreen = !fullscreen"> <img src="../../assets/info_open.png" alt=""></div> <div class="box-title"> <img src="../../assets/info_basic.png" alt=""> <span>基本資訊</span> </div> <el-form :model="ruleForm" :rules="rules" label-width="120px" label-position="right" class="demo-ruleForm" :size="formSize" ref="ruleFormRef" > <el-form-item label="標題" prop="title"> <el-input v-model="ruleForm.title" placeholder="請輸入80個字元以內標題" :clearable="true" label-width="100%" maxlength="80" autocomplete="off" /> </el-form-item> <el-form-item prop="img" class="upload" label="上傳圖片" v-loading="loading" > <el-upload class="upload-demo" :limit="1" action="/api/v1/upload/file" name="multipartFile" :on-success="uploadSucceed" :on-error = "uploadError" :file-list="fileList" list-type="picture" :before-upload="beforeUpload" :on-remove="fileRemoved" accept=".jpg,.jpeg,.png,.JPG,.JPEG" ref="upload" > <el-button size="small" type="primary">點選上傳</el-button> </el-upload> <div class="el-upload__tip">圖片尺寸:600*200,圖片5MB以內,圖片格式支援JPG、JPEG、PNG</div> </el-form-item> <!-- 是否推薦 0不推薦 1推薦--> <el-form-item prop="recommend" label="是否推薦" > <el-select v-model="ruleForm.recommend" placeholder="請選擇是否推薦" > <el-option label="是" :value="1" ></el-option> <el-option label="否" :value="0" ></el-option> </el-select> </el-form-item> <el-form-item label="特殊資源" prop="share"> <el-radio-group v-model="ruleForm.share"> <el-radio label="線上品牌商贊助"></el-radio> <el-radio label="線下場地免費"></el-radio> </el-radio-group> </el-form-item> <el-form-item label="活動性質" prop="type"> <el-checkbox-group v-model="ruleForm.type"> <el-checkbox label="美食/餐廳線上活動" name="type"></el-checkbox> <el-checkbox label="地推活動" name="type"></el-checkbox> <el-checkbox label="線下主題活動" name="type"></el-checkbox> <el-checkbox label="單純品牌曝光" name="type"></el-checkbox> </el-checkbox-group> </el-form-item> <el-form-item label="活動形式" prop="content"> <el-input type="textarea" v-model="ruleForm.content"></el-input> </el-form-item> </el-form> <template #footer> <span class="dialog-footerData" > <!-- 當使用指令方式時,全螢幕遮罩需要新增fullscreen修飾符(遮罩會插入至 body 上),此時若需要鎖定螢幕的捲動,可以使用lock修飾符;當使用服務方式時,遮罩預設即為全螢幕,無需額外設定。--> <el-button class="bai" @click="dataCancel" >取消</el-button> <el-button type="primary" @click="dataConfirm(1)" v-loading.fullscreen.lock="fromloading">釋出</el-button> </span> </template> </el-dialog>
表單校驗 和資料提交
<script> import { useRoute } from 'vue-router' import { toRefs, reactive, ref, unref} from 'vue' import axios from '../../api/news' // axios 介面求情 import router from '../../router'; import {ElMessage} from 'element-plus'; export default { setup() { const route = useRoute(); const datadialog = ref(false) // 新增彈窗 const upload = ref(""); //上傳 const ruleFormRef = ref(null); //表單 let formSize = 'default'; let ruleForm = reactive({ title:'',// 標題 img:'',//圖片 recommend: '',//是否推薦 share: '',// 特殊資源 type: '',// 活動性質 content:'' ,// 內容 }); //表單校驗 const rules = reactive({ title: {required: true, message: '請輸入標題', trigger: 'blur'}, img: {required: true, message: '請上傳圖片', trigger: 'blur'}, content: {required: true, message: '請填寫活動形式', trigger: 'blur'}, recommend: {required: true, message: '請選擇特殊資源 ', trigger: 'change'}, share: {required: true, message: '請選擇是否允許分享', trigger: 'change'}, type: [{ type: 'array', required: true, message: '請至少選擇一個活動性質', trigger: 'change' }], }) const data = reactive({ infoData:[], fileList:[], loading: false, dialogtitle:'',//彈窗標題 fullscreen:false, fromloading:false, }) // 新增彈窗 function fundOperation(){ data.fullscreen = false ruleForm.img = ""; // 清空檔案圖片地址 data.fileList = []; // 清空表單資料 Object.keys(ruleForm).map(key => { delete ruleForm[key] }) data.dialogtitle = '新增' datadialog.value = true; // 顯示彈窗 } // 上傳圖片方法 function beforeUpload(file, fileList) { data.loading = true; const isLt10M = file.size / 1024 / 1024 < 5; if (!isLt10M) { ElMessage('上傳頭像圖片大小不能超過 5MB!'); data.loading = false; } return isLt10M; } // 圖片被移除 function fileRemoved(file, fileList) { if (file && file.status === "success") { //移除前方法 ruleForm.img = ""; // 清空檔案圖片地址 } } // 檔案上傳成功 function uploadSucceed(res) { if (res.code == 200) { data.loading = false; ruleForm.img = res.data.url; // 圖片連結 }else{ ruleForm.img = ''; // 圖片連結 } } function uploadError(){ data.loading = false; ElMessage.error("圖片上傳失敗"); ruleForm.img = ''; // 圖片連結 } // 編輯資料 取消 function dataCancel(){ data.fileList = []; Object.keys(ruleForm).map(key => { delete ruleForm[key] }) data.loading = false; datadialog.value = false; data.fullscreen = false; } async function dataConfirm(){ data.fromloading = true; // const form = unref(ruleFormRef); if (!form) return; try { await ruleFormRef.value.validate((valid) => { // 驗證通過 請求介面 if (valid) { //寫自己的介面地址哦 axios.addApi(ruleForm).then(res => { if (res.code == 200) { data.fileList = []; data.loading = false; datadialog.value = false; data.fullscreen = false; data.fromloading = false; // ElMessage.success('操作成功'); //預設時間 方式 ElMessage.success({ message:'操作成功', duration:2500 }); }else{ data.fromloading = false; ElMessage.error(res.message); } }) } else { // 驗證失敗 取消loading, data.fromloading = false; return; } }) } catch (error){ // 驗證失敗 取消loading, data.fromloading = false; } } return { ...toRefs(data), fundOperation, datadialog, dataCancel, dataConfirm, ruleForm, formSize, rules, fileRemoved, uploadSucceed, uploadError, upload, beforeUpload, ruleFormRef } }, } </script>
到此這篇關於Vue3 + elementplus 表單驗證+上傳圖片+ 防止表單重複提交的文章就介紹到這了,更多相關Vue3 elementplus表單驗證內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45