|
@@ -1,6 +1,6 @@
|
|
import React, { Component } from "react";
|
|
import React, { Component } from "react";
|
|
import style from "../index.less";
|
|
import style from "../index.less";
|
|
-import { Radio} from '@commonComp';
|
|
|
|
|
|
+import { Radio,CheckBtn } from '@commonComp';
|
|
/****
|
|
/****
|
|
* 大数据推送出的类型
|
|
* 大数据推送出的类型
|
|
* 要素:名称、选项、推荐选择
|
|
* 要素:名称、选项、推荐选择
|
|
@@ -8,10 +8,53 @@ import { Radio} from '@commonComp';
|
|
* ****/
|
|
* ****/
|
|
class ChooseItem extends Component {
|
|
class ChooseItem extends Component {
|
|
constructor(props) {
|
|
constructor(props) {
|
|
- super(props)
|
|
|
|
|
|
+ super(props);
|
|
|
|
+ this.state = {
|
|
|
|
+ saveData:null,
|
|
|
|
+ selecteds:{},
|
|
|
|
+ };
|
|
|
|
+ //this.setInitState = this.setInitState.bind(this);
|
|
|
|
+ }
|
|
|
|
+ /*setInitState(){
|
|
|
|
+ if(this.state.saveData){
|
|
|
|
+ this.setState({
|
|
|
|
+ saveData:this.props.data
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
+ }*/
|
|
|
|
+ handleRadio(name,value){
|
|
|
|
+ const {selecteds} = this.state;
|
|
|
|
+ const {handleChange} = this.props;
|
|
|
|
+ this.setState({
|
|
|
|
+ selecteds:Object.assign({},selecteds,{[name]:value})
|
|
|
|
+ });
|
|
|
|
+ handleChange&&handleChange(Object.assign({},selecteds,{[name]:value})); //不能用this.state.selecteds,因为state更新不是即时的
|
|
|
|
+ /*const list = item.details.map((it)=>{
|
|
|
|
+ if(it.detailName==value){
|
|
|
|
+ return Object.assign(it,{isSelected:true});
|
|
|
|
+ }else{
|
|
|
|
+ return Object.assign(it,{isSelected:false});
|
|
|
|
+ }
|
|
|
|
+ });*/
|
|
|
|
+ }
|
|
|
|
+ handleCheckbox(name,value){
|
|
|
|
+ let {selecteds} = this.state;
|
|
|
|
+ const {handleChange} = this.props;
|
|
|
|
+ selecteds[name]?selecteds[name]:selecteds[name]=[];
|
|
|
|
+ const index = selecteds[name].findIndex((i)=>i==value);
|
|
|
|
+ if(index!=-1){
|
|
|
|
+ selecteds[name].splice(index,1);
|
|
|
|
+ }else{
|
|
|
|
+ selecteds[name].push(value);
|
|
|
|
+ }
|
|
|
|
+ this.setState({
|
|
|
|
+ selecteds:selecteds
|
|
|
|
+ });
|
|
|
|
+ handleChange&&handleChange(selecteds);
|
|
}
|
|
}
|
|
render() {
|
|
render() {
|
|
- const {title,data } = this.props;
|
|
|
|
|
|
+ const {title,data} = this.props;
|
|
|
|
+ const {selecteds} = this.state;
|
|
return <div className={style['assess-item']}>
|
|
return <div className={style['assess-item']}>
|
|
<h2>{title}</h2>
|
|
<h2>{title}</h2>
|
|
<div className={style['item-content']}>
|
|
<div className={style['item-content']}>
|
|
@@ -22,13 +65,22 @@ class ChooseItem extends Component {
|
|
<div className={style['row']}>
|
|
<div className={style['row']}>
|
|
{it.details&&it.details.map((i)=> {
|
|
{it.details&&it.details.map((i)=> {
|
|
if(it.controltype ==0){
|
|
if(it.controltype ==0){
|
|
- return <div className={style['choose-item']}><Radio name={i.detailName} value={i.detailName} handleClick={null}></Radio>{i.state?<i>(智能推荐)</i>:''}</div>;
|
|
|
|
|
|
+ return <div className={style['choose-item']}>
|
|
|
|
+ <Radio label={i.detailName}
|
|
|
|
+ value={i.detailName}
|
|
|
|
+ isSelect={selecteds[it.name]==i.detailName}
|
|
|
|
+ handleClick={this.handleRadio.bind(this,it.name,i.detailName)}></Radio>
|
|
|
|
+ {i.state?<i>(智能推荐)</i>:''}
|
|
|
|
+ </div>;
|
|
}else{
|
|
}else{
|
|
- return <span className={style['choose-item']}>
|
|
|
|
- <input id={i.detailName} value={i.detailName} name={it.name} type="checkbox" />
|
|
|
|
- <label htmlFor={i.detailName}>{i.detailName}</label>
|
|
|
|
|
|
+ return <div className={style['choose-item']}>
|
|
|
|
+ <CheckBtn id={i.detailName}
|
|
|
|
+ value={i.detailName}
|
|
|
|
+ label={i.detailName}
|
|
|
|
+ isSelect={selecteds[it.name]&&selecteds[it.name].includes(i.detailName)}
|
|
|
|
+ handleClick={this.handleCheckbox.bind(this,it.name,i.detailName)}/>
|
|
{i.state?<i>(智能推荐)</i>:''}
|
|
{i.state?<i>(智能推荐)</i>:''}
|
|
- </span>;
|
|
|
|
|
|
+ </div>;
|
|
}
|
|
}
|
|
})}
|
|
})}
|
|
</div>
|
|
</div>
|