Use of form in element
<template>
<div>
<el-dialog
:title="title"
:visible.sync="showDialog"
width="688px"
:destroy-on-close="true" 关闭销毁
:close-on-click-modal="false" 点击蒙层不关闭
:before-close="handleClose"
>
<el-form :model="form" ref="form" :rules="editRules">
<el-form-item label="数量" prop="number">
<el-input placeholder="请输入数量" v-model.number="form.number"></el-input>
</el-form-item>
<el-form-item>
<el-tooltip placement="top-start">
<span slot="content">请填写说明</span>
<img src="@/assets/images/xx.png" height="14" width="14" />
</el-tooltip>
</el-form-item>
<el-form-item
label="奖品图片配置"
class="wechatCover"
prop="imgUrl"
>
<el-upload
class="avatar-uploader"
:on-success="uploadSuccess" 成功上传之后的回调
action="/atpapi/common/upload" 上传图片的地址
:show-file-list="false"
:before-upload="beforeUpload" 图片上传后的操作
>
<img v-if="form.imgUrl" :src="form.imgUrl" class="avatar" />
<i v-else class="el-icon-plus avatar-uploader-icon"></i>
</el-upload>
</el-form-item>
</el-form>
</el-dialog>
</div>
</template>
<script>
export default {
data() {
var valiIcon = (rule, value, callback) => {
if (!this.hasPic) {
callback(new Error("请上传图片"));
} else {
callback();
}
};
return {
form: {
number:'',
imgUrl:''
},
showDialog: false,
editRules: {
number: [
{
required: true,
message: "数量不能为空"
},
{
type: "number",
min: 0,
message: "数量必须为数字值且最小值为0"
}
],
imgUrl: {
required: true,
validator: valiIcon,
trigger: "change"
}
}
};
},
methods: {
uploadSuccess({
data }) {
this.hasPic = true;
this.form.imgUrl = data.url;
this.$refs.form.clearValidate("imgUrl");
this.$forceUpdate();
},
handleClose(done) {
this.$refs.form.clearValidate('number');
this.$refs["form"].clearValidate()
this.$refs["form"].resetFields()
done()
},
}
}
</script>