wangxxxx111 2021-03-03 10:14 采纳率: 45.5%
浏览 42
已结题

救救孩子吧!!取消勾选上边下边消失,取消勾选下边上边不消失,怎么改成双向的

/** [onChange 勾选或取消函数] */
  onChange=(e)=>{
    let pridepictData=this.state.pridepictData;
    pridepictData.forEach((item, i) => {
      if(item.optionid==e.target.value){//当前操作的数据
        item.isChecked=e.target.checked;
        item.isCheckeda=e.target.checked;
      }
    });
    this.setState({pridepictData})
  }
  /** [handleChange 获取] */
  handleChange=(value,text)=>{
    if(text=='input'){
      if(value!=' '&&!isNaN(value)){
        this.setState({input:value})
      }
    }else{
      this.setState({unit:value})
    }
  }
 
  /** [getData 过滤复数据 拿到本页面渲染数据] */
  getData=(data)=>{
    let pridepictData=[];
    if(data&&data[0]){
      data.forEach((item)=>{
        let repeat=false;
        if(data&&data[0]){
          pridepictData.forEach((item1)=>{
            if(item1.optionid==item.symid){
              repeat=true
            }
          })
        }
        if(!repeat){//未重复
          let obj={
            moduleid:2,
            optionid:item.symid,
            optionname:item.symname,
            input:'',
            unit:'',
            useflag:'1',
            creator:window.sessionStorage.getItem('userid'),
            updator:window.sessionStorage.getItem('userid'),
            parentids:item.parentids,
            parentid:item.parentid,
            isChecked:true,
          }
          pridepictData.push(obj);
        }
      })
    }
    this.setState({pridepictData})
  }
  /** [onChoice 点击选择框函数] */
  onChoice=()=>{
    let {pridepictData,input,unit}=this.state;
    let {getFieldValue,onChange,setInitData}=this.props;
    let data=[];
    let data1 = [];
    pridepictData.forEach((item)=>{
      console.log("pridepictData",item)
      if(item.isChecked){ //选中的子项
        item.input=input;
        item.unit=unit;
        data.push(item);
      }else{
        item.input=input;
        item.unit=unit;
        data1.push(item);
 
      }
    })
    let pridepictValue=getFieldValue('pridepict');
    if(pridepictValue==''||pridepictValue&&pridepictValue.length==0){//第一次设置值
      onChange(data);
      setInitData({pridepict:data});
    }else{
      let arr=[];//需要添加的数据集合
      pridepictData.forEach((item)=>{
        let repeat=false;
        pridepictValue.forEach((item2)=>{
          if(item.optionid==item2.optionid){//重复  替换相关数据
            item.input=item2.input;
            item.unit=item2.unit;
            repeat=true;
          }
        })
        if(!repeat){//没重复
          arr.push(item);
        }
      })
      arr.forEach((item)=>{pridepictValue.push(item)})
      onChange(pridepictValue)
      setInitData({pridepict:pridepictValue})
    }
    this.setState({pridepictData:data1,input:'',unit:'天'})
  }
  render() {
    let pridepictData=this.state.pridepictData;
    return (
        <Container>
          <LeftBox>已选</LeftBox>
          <RightBox>
          {
            pridepictData&&pridepictData.length>0?
            <SpecRow>
                {
                  pridepictData.map((item)=>{
                      return(
                        <SpecCol span={8} key={item.optionid+item.optionname}>
                          <Checkbox
                              value={item.optionid} checked={item.isChecked}
                                    onChange={this.onChange}>{item.optionname}
                          </Checkbox>
 
                        </SpecCol>
                      )
                  })
                }
            </SpecRow>
            :null
          }
          </RightBox>
          <SpecFooter>
            <div style={{display:'flex'}}>
              <Input style={{ width:100}} value={this.state.input} onChange={(e)=>{this.handleChange(e.target.value,'input')}}/>
              <Select value={this.state.unit} style={{ width: 75 }} onChange={(value)=>{this.handleChange(value,'unit')}}>
                <Option value={"天"}>天</Option>
                <Option value={"周"}>周</Option>
                <Option value={"月"}>月</Option>
                <Option value={"季度"}>季度</Option>
                <Option value={"年"}>年</Option>
              </Select>
            </div>
            <Button type="primary" onClick={this.onChoice}>提交</Button>
          </SpecFooter>
        </Container>
    );
  }
}
 
 
 
 
componentDidMount(){
  };
  /** [changeCheckedValues 已选框改变函数] */
  changeCheckedValues=(data,symptomData)=>{
    let checklistData=[];
    data.forEach((item) => {
      symptomData.forEach((item1, i) => {
        if(item1.symid==item){
          checklistData.push(item1);
        }
        if(item1.symptomOptions&&item1.symptomOptions[0]){
          item1.symptomOptions.forEach((item2) => {
            if(item2.symid==item){
              checklistData.push(item2);
            }
            if(item2.symptomOptions&&item2.symptomOptions[0]){
              item2.symptomOptions.forEach((item3) => {
                if(item3.symid==item){
                  checklistData.push(item3);
                }
              });
 
            }
          });
 
        }
      });
    });
    this.setState({checklistData:checklistData})
  }
  /** [firstSwitchModular 一级模块切换函数] */
  firstSwitchModular=()=>{
    this.setState({ type: type })
  }
  /** [handleClassifyClick tab切换函数] */
  handleClassifyClick = (e) => {
    this.setState({ type: e.key })
  }
 

  • 写回答

1条回答 默认 最新

  • sun_lz. 2021-03-10 16:43
    关注

    看看是不是需要这种:https://blog.csdn.net/qq_42415827/article/details/114638179
    这个最多只能三级全选/反选,反正思路肯定差不多

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 11月17日

悬赏问题

  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog