输入框之间的联动+form表单编辑的提交取消+form表单校验

需求:

输入框1选择之后,输入框2会清空当前选项,根据输入框1的内容,输入框2个下拉选项有所改变。

编辑页面

1、页面初始化

// 编辑页,初始化的值

useEffect(() => {

    props.searchKpiDetail({

      rcmId: query.rcmId || '',

    }).then(

      (res) => { 接口套娃,在res的花括号下面

                searchForm.setFieldsValue({

                  rcmId: _.get(res, ['data', 'rcmId']),

                  kpiAdmin: _.get(_.get(res, 'data'), 'kpiAdminList') &&

                //kpiAdminList: ["吴阳(0127)", "张博(01358)"]

              (_.get(_.get(res, 'data'), 'kpiAdminList') ).toString(),  //吴健阳(0127),张博(01358)

                  companyScopeObj: _.get(_.get(res, 'data').companyScopeObj, 'key'),

                  departScopeObj: _.get(_.get(res, 'data').departScopeObj, 'key'),

                });

                props.save({ alertList: res.data.configs });

                setAllData(_.get(res, 'data'));

                 //接口2

                props.searchDepartScope({ key: _.get(_.get(res, 'data').companyScopeObj, 'key') })

                        .then(

                        (resp) =>  { //根据输入框1的选项,取到输入框2的下拉选项的数组

                          setDepartList(_.get(resp, 'data'));

                 });

      },

    );

  }, [query && query.rcmId]);//rcmId只要变化,就会执行

2、提交

  // 编辑的时候校验,编辑的保存

const baseEdit = () => {

    searchForm.validateFields().then((values) => {

      const {

        rcmId,

        companyScopeObj,

        departScopeObj,

      } = values;

      props.editKpiBasic({

        rcmId,

        companyScope: companyScopeObj,

        departScope: departScopeObj,

      }).then();

      message.success('基本信息编辑成功!');

    });

  };

3、 输入框1的回调事件,输入框1选中,输入框2置空,同时下拉选项更新

  

const handleOptChange = (obj) => { //输入框1的回调事件

    searchForm.setFieldsValue({  // 点击输入1的回调时,置空输入框2的name值

      departScopeObj: '',

    });  

    props.searchDepartScope({ key: _.get(obj, 'companyScopeObj') }).then((resp) => {

      setDepartList(_.get(resp, 'data'));  //根据输入框1的选项,取到输入框2的下拉选项的数组

    });

  };

 4、form表单重置修改内容

const handleOver = () => {

    searchForm.resetFields(); //置空编辑的表单内容

  };

return内容

return ...

 <Form

            className={styles.searchForms} layout="inline"

            form={searchForm}

            validateMessages={validateMessages}

  >

 <Form.Item name={'companyScopeObj'} label="数据范围-机构范围(公司级)" //输入框1

                 rules={[{ required: true }]} style={{ paddingLeft: '13px' }}> //必填选项

              <Select

                allowClear className={styles.formInput}

                onChange={value => handleOptChange({ companyScopeObj: value })}

              >

                {_.map(_.get(allData, 'companyScopes'), item =>

                  <Select.Option value={item.key} key={item.key}>

                    {item.name}

                  </Select.Option>,

                )}

              </Select>

  </Form.Item>

<Form.Item name={'departScopeObj'} label="数据范围-机构范围(部门级)" //输入框2

 rules={[{ required: true }]} style={{ paddingLeft: '13px' }}>

              <Select

                allowClear className={styles.formInput}

              >

                {_.map(departList, item =>

                  <Select.Option value={item.key} key={item.key}>

                    {item.name}

                  </Select.Option>,

                )}

              </Select>

   </Form.Item>

.......

<div className={styles.searchIncon}>

        <Button type="primary" onClick={handleOver}>取消</Button> 

        <Button type="primary" size="large" onClick={baseEdit} >提交</Button>

 </div>

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值