JeecgBoot的前端Form升级为FormModel用法

2025-05-29 0 105

JeecgBoot的前端Form升级为FormModel用法

FormModel 表单 (支持 v-model 绑定)(Ant Design of Vue 版本:1.5.0+)

新版form特性

1、支持双向绑定

2、无需v-decorator这个反人类属性设置

3、form用法跟目前主流框架(element ui iview风格形成统一,不在另类)

4、表单赋值无需手动设置,双向绑定自动赋值

新老form用法对比

JeecgBoot的前端Form升级为FormModel用法

标签规则升级

JeecgBoot的前端Form升级为FormModel用法

校验规则区别

JeecgBoot的前端Form升级为FormModel用法

表单赋值区别

JeecgBoot的前端Form升级为FormModel用法

表单提交区别

JeecgBoot的前端Form升级为FormModel用法

角色管理老版form代码

~~~

<template>

<a-modal

:title="title"

:width="800"

:visible="visible"

:confirmLoading="confirmLoading"

@ok="handleOk"

@cancel="handleCancel"

cancelText="关闭"

wrapClassName="ant-modal-cust-warp"

style="top:5%;height:85%;overflow-y:hidden">

<a-spin:spinning="confirmLoading">

<a-form:form="form">

<a-form-item

:labelCol="labelCol"

:wrapperCol="wrapperCol"

label="角色名称">

<a-inputplaceholder="请输入角色名称"v-decorator="['roleName',validatorRules.roleName]"/>

</a-form-item>

<a-form-item

:labelCol="labelCol"

:wrapperCol="wrapperCol"

label="角色编码">

<a-inputplaceholder="请输入角色编码":disabled="roleDisabled"v-decorator="['roleCode',validatorRules.roleCode]"/>

</a-form-item>

<a-form-item

:labelCol="labelCol"

:wrapperCol="wrapperCol"

label="描述">

<a-textarea:rows="5"placeholder="…"v-decorator="['description',validatorRules.description]"/>

</a-form-item>

</a-form>

</a-spin>

</a-modal>

</template>

<script>

importpickfrom'lodash.pick'

import{addRole,editRole,duplicateCheck}from'@/api/api'

exportdefault{

name:"RoleModal",

data(){

return{

title:"操作",

visible:false,

roleDisabled:false,

model:{},

labelCol:{

xs:{span:24},

sm:{span:5},

},

wrapperCol:{

xs:{span:24},

sm:{span:16},

},

confirmLoading:false,

form:this.$form.createForm(this),

validatorRules:{

roleName:{

rules:[

{required:true,message:'请输入角色名称!'},

{min:2,max:30,message:'长度在2到30个字符',trigger:'blur'}

]},

roleCode:{

rules:[

{required:true,message:'请输入角色名称!'},

{min:0,max:64,message:'长度不超过64个字符',trigger:'blur'},

{validator:this.validateRoleCode}

]},

description:{

rules:[

{min:0,max:126,message:'长度不超过126个字符',trigger:'blur'}

]}

},

}

},

created(){

},

methods:{

add(){

this.edit({});

},

edit(record){

this.form.resetFields();

this.model=Object.assign({},record);

this.visible=true;

//编辑页面禁止修改角色编码

if(this.model.id){

this.roleDisabled=true;

}else{

this.roleDisabled=false;

}

this.$nextTick(()=>{

this.form.setFieldsValue(pick(this.model,'roleName','description','roleCode'))

});

},

close(){

this.$emit('close');

this.visible=false;

},

handleOk(){

constthat=this;

//触发表单验证

this.form.validateFields((err,values)=>{

if(!err){

that.confirmLoading=true;

values.roleName=(values.roleName||'').trim()

values.roleCode=(values.roleCode||'').trim()

letformData=Object.assign(this.model,values);

letobj;

console.log(formData)

if(!this.model.id){

obj=addRole(formData);

}else{

obj=editRole(formData);

}

obj.then((res)=>{

if(res.success){

that.$message.success(res.message);

that.$emit('ok');

}else{

that.$message.warning(res.message);

}

}).finally(()=>{

that.confirmLoading=false;

that.close();

})

}

})

},

handleCancel(){

this.close()

},

validateRoleCode(rule,value,callback){

if(/[\\u4E00-\\u9FA5]/g.test(value)){

callback("角色编码不可输入汉字!");

}else{

varparams={

tableName:"sys_role",

fieldName:"role_code",

fieldVal:value,

dataId:this.model.id,

};

duplicateCheck(params).then((res)=>{

if(res.success){

callback();

}else{

callback(res.message);

}

});

}

}

}

}

</script>

<stylescoped>

</style>

~~~

角色管理新版from代码

~~~

<template>

<a-modal

:title="title"

:width="800"

:visible="visible"

:confirmLoading="confirmLoading"

@ok="handleOk"

@cancel="handleCancel"

cancelText="关闭"

wrapClassName="ant-modal-cust-warp"

style="top:5%;height:85%;overflow-y:hidden">

<a-spin:spinning="confirmLoading">

<a-form-modelref="form"v-bind="layout":model="model":rules="validatorRules">

<a-form-model-itemlabel="角色编码"requiredprop="roleCode">

<a-inputv-model="model.roleCode":disabled="roleDisabled"placeholder="请输入角色编码"/>

</a-form-model-item>

<a-form-model-itemlabel="角色名称"requiredprop="roleName">

<a-inputv-model="model.roleName"placeholder="请输入角色名称"/>

</a-form-model-item>

<a-form-model-itemlabel="描述"prop="description">

<a-textarea:rows="5"v-model="model.description"placeholder="请输入角色描述"/>

</a-form-model-item>

</a-form-model>

</a-spin>

</a-modal>

</template>

<script>

import{addRole,editRole,duplicateCheck}from'@/api/api'

exportdefault{

name:"RoleModal",

data(){

return{

title:"操作",

visible:false,

roleDisabled:false,

model:{},

layout:{

labelCol:{span:3},

wrapperCol:{span:14},

},

confirmLoading:false,

validatorRules:{

roleName:[

{required:true,message:'请输入角色名称!'},

{min:2,max:30,message:'长度在2到30个字符',trigger:'blur'}

],

roleCode:[

{required:true,message:'请输入角色名称!'},

{min:0,max:64,message:'长度不超过64个字符',trigger:'blur'},

{validator:this.validateRoleCode}

],

description:[

{min:0,max:126,message:'长度不超过126个字符',trigger:'blur'}

]

},

}

},

created(){

},

methods:{

add(){

this.edit({});

},

edit(record){

this.model=Object.assign({},record);

this.visible=true;

//编辑页面禁止修改角色编码

if(this.model.id){

this.roleDisabled=true;

}else{

this.roleDisabled=false;

}

},

close(){

this.$emit('close');

this.visible=false;

},

handleOk(){

constthat=this;

//触发表单验证

this.$refs.form.validate(valid=>{

if(valid){

that.confirmLoading=true;

letobj;

if(!this.model.id){

obj=addRole(this.model);

}else{

obj=editRole(this.model);

}

obj.then((res)=>{

if(res.success){

that.$message.success(res.message);

that.$emit('ok');

}else{

that.$message.warning(res.message);

}

}).finally(()=>{

that.confirmLoading=false;

that.close();

})

}else{

returnfalse;

}

})

},

handleCancel(){

this.close()

},

validateRoleCode(rule,value,callback){

if(/[\\u4E00-\\u9FA5]/g.test(value)){

callback("角色编码不可输入汉字!");

}else{

letparams={

tableName:"sys_role",

fieldName:"role_code",

fieldVal:value,

dataId:this.model.id,

};

duplicateCheck(params).then((res)=>{

if(res.success){

callback();

}else{

callback(res.message);

}

});

}

}

}

}

</script>

<stylescoped>

</style>

~~~

原文地址:https://www.toutiao.com/i6935341596028305928/

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 JeecgBoot的前端Form升级为FormModel用法 https://www.kuaiidc.com/96458.html

相关文章

发表评论
暂无评论