JeecgBoot的前端Form升級(jí)為FormModel用法
作者:JEECG
本篇發(fā)給大家關(guān)于前端Form升級(jí)為FormModel用法的相關(guān)知識(shí),希望對(duì)你有所幫助!
FormModel 表單 (支持 v-model 綁定)(Ant Design of Vue 版本:1.5.0+)
新版form特性
1、支持雙向綁定
2、無需v-decorator這個(gè)反人類屬性設(shè)置
3、form用法跟目前主流框架(element ui iview風(fēng)格形成統(tǒng)一,不在另類)
4、表單賦值無需手動(dòng)設(shè)置,雙向綁定自動(dòng)賦值
新老form用法對(duì)比
標(biāo)簽規(guī)則升級(jí)
校驗(yàn)規(guī)則區(qū)別
表單賦值區(qū)別
表單提交區(qū)別
角色管理老版form代碼
- ~~~
- <template>
- <a-modal
- :title="title"
- :width="800"
- :visible="visible"
- :confirmLoading="confirmLoading"
- @ok="handleOk"
- @cancel="handleCancel"
- cancelText="關(guān)閉"
- 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-input placeholder="請(qǐng)輸入角色名稱" v-decorator="[ 'roleName', validatorRules.roleName]" />
- </a-form-item>
- <a-form-item
- :labelCol="labelCol"
- :wrapperCol="wrapperCol"
- label="角色編碼">
- <a-input placeholder="請(qǐng)輸入角色編碼" :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>
- import pick from 'lodash.pick'
- import {addRole,editRole,duplicateCheck } from '@/api/api'
- export default {
- 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: '請(qǐng)輸入角色名稱!' },
- { min: 2, max: 30, message: '長(zhǎng)度在 2 到 30 個(gè)字符', trigger: 'blur' }
- ]},
- roleCode:{
- rules: [
- { required: true, message: '請(qǐng)輸入角色名稱!'},
- { min: 0, max: 64, message: '長(zhǎng)度不超過 64 個(gè)字符', trigger: 'blur' },
- { validator: this.validateRoleCode}
- ]},
- description:{
- rules: [
- { min: 0, max: 126, message: '長(zhǎng)度不超過 126 個(gè)字符', 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 () {
- const that = this;
- // 觸發(fā)表單驗(yàn)證
- this.form.validateFields((err, values) => {
- if (!err) {
- that.confirmLoading = true;
- values.roleName = (values.roleName || '').trim()
- values.roleCode = (values.roleCode || '').trim()
- let formData = Object.assign(this.model, values);
- let obj;
- 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{
- var params = {
- 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>
- <style scoped>
- </style>
- ~~~
角色管理新版from代碼
- ~~~
- <template>
- <a-modal
- :title="title"
- :width="800"
- :visible="visible"
- :confirmLoading="confirmLoading"
- @ok="handleOk"
- @cancel="handleCancel"
- cancelText="關(guān)閉"
- wrapClassName="ant-modal-cust-warp"
- style="top:5%;height: 85%;overflow-y: hidden">
- <a-spin :spinning="confirmLoading">
- <a-form-model ref="form" v-bind="layout" :model="model" :rules="validatorRules">
- <a-form-model-item label="角色編碼" required prop="roleCode">
- <a-input v-model="model.roleCode" :disabled="roleDisabled" placeholder="請(qǐng)輸入角色編碼"/>
- </a-form-model-item>
- <a-form-model-item label="角色名稱" required prop="roleName">
- <a-input v-model="model.roleName" placeholder="請(qǐng)輸入角色名稱"/>
- </a-form-model-item>
- <a-form-model-item label="描述" prop="description">
- <a-textarea :rows="5" v-model="model.description" placeholder="請(qǐng)輸入角色描述"/>
- </a-form-model-item>
- </a-form-model>
- </a-spin>
- </a-modal>
- </template>
- <script>
- import {addRole,editRole,duplicateCheck } from '@/api/api'
- export default {
- name: "RoleModal",
- data () {
- return {
- title:"操作",
- visible: false,
- roleDisabled: false,
- model: {},
- layout: {
- labelCol: { span: 3 },
- wrapperCol: { span: 14 },
- },
- confirmLoading: false,
- validatorRules:{
- roleName: [
- { required: true, message: '請(qǐng)輸入角色名稱!' },
- { min: 2, max: 30, message: '長(zhǎng)度在 2 到 30 個(gè)字符', trigger: 'blur' }
- ],
- roleCode: [
- { required: true, message: '請(qǐng)輸入角色名稱!'},
- { min: 0, max: 64, message: '長(zhǎng)度不超過 64 個(gè)字符', trigger: 'blur' },
- { validator: this.validateRoleCode}
- ],
- description: [
- { min: 0, max: 126, message: '長(zhǎng)度不超過 126 個(gè)字符', 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 () {
- const that = this;
- // 觸發(fā)表單驗(yàn)證
- this.$refs.form.validate(valid => {
- if (valid) {
- that.confirmLoading = true;
- let obj;
- 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{
- return false;
- }
- })
- },
- handleCancel () {
- this.close()
- },
- validateRoleCode(rule, value, callback){
- if(/[\u4E00-\u9FA5]/g.test(value)){
- callback("角色編碼不可輸入漢字!");
- }else{
- let params = {
- 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>
- <style scoped>
- </style>
- ~~~
【編輯推薦】
責(zé)任編輯:姜華
來源:
今日頭條