|
@@ -5,24 +5,24 @@ import { Radio,CheckBtn } from '@commonComp';
|
|
|
import Information from '../Information'
|
|
|
/**
|
|
|
*量表 具体信息页面
|
|
|
-*title:量表标题
|
|
|
-*data:量表内容
|
|
|
+*title:量表标题/scaleName
|
|
|
+*data:量表内容:scaleName量表标题,calculate量表计算结果,group分组,
|
|
|
+*
|
|
|
+*
|
|
|
**/
|
|
|
class ScaleTable extends React.Component{
|
|
|
constructor(props){
|
|
|
super(props);
|
|
|
this.state={
|
|
|
- data:props.data && data[1].content|| [],
|
|
|
+ // originData:props.data && data[1].content|| [],
|
|
|
+ originData:{},
|
|
|
selecteds:{}
|
|
|
}
|
|
|
- this.handleChange = this.handleChange.bind(this);
|
|
|
- }
|
|
|
-
|
|
|
- handleChange(event){
|
|
|
- console.log(event.target.value);
|
|
|
}
|
|
|
handleRadio(name,value){
|
|
|
- const {selecteds} = this.state;
|
|
|
+ const {selecteds,originData} = this.state;
|
|
|
+ const content = originData && originData[1].content;//表格内容
|
|
|
+ const datas = content && JSON.parse(content);//console.log(1111,originData,datas);
|
|
|
this.setState({
|
|
|
selecteds:Object.assign({},selecteds,{[name]:value})
|
|
|
})
|
|
@@ -52,22 +52,81 @@ class ScaleTable extends React.Component{
|
|
|
// console.log("调计算接口");
|
|
|
// getResult&&getResult(params);
|
|
|
}
|
|
|
+ componentWillReceiveProps(nextProps){
|
|
|
+ const {tableId} = this.props;
|
|
|
+ if(JSON.stringify(nextProps.scaleInfo) !== '{}'){
|
|
|
+ this.setState({
|
|
|
+ originData:nextProps.scaleInfo[tableId]
|
|
|
+ })
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ getContent(){
|
|
|
+ const datas = mocks.newData;
|
|
|
+ let {selecteds} = this.state;
|
|
|
+ let content = datas&&datas.group.map((v,i)=>{
|
|
|
+ return <div className={style['group']}>
|
|
|
+ <p className={style['groupName']}>{v.groupName}</p>
|
|
|
+ {v.rows&&v.rows.map((it,ind)=>{
|
|
|
+ return <div>
|
|
|
+ {it.row.map((item,index)=>{
|
|
|
+ if(item.controltype==0){
|
|
|
+ return <div className={style['block']}>
|
|
|
+ <p className={style['miniName']}>{item.name}</p>
|
|
|
+ {item.details&&item.details.map((vv,ii)=>{
|
|
|
+ return <div className={style['item']}>
|
|
|
+ <Radio label={vv.detailName}
|
|
|
+ isSelect={selecteds[item.name]==vv.detailName}
|
|
|
+ handleClick={this.handleRadio.bind(this,item.name,vv.detailName)}>
|
|
|
+ </Radio>
|
|
|
+ {vv.state==1?<span style={{color:'#3B9ED0'}}>(智能推荐)</span>:''}
|
|
|
+ </div>
|
|
|
+ })}
|
|
|
+
|
|
|
+ </div>
|
|
|
+ }else{
|
|
|
+ return <div className={style['block']}>
|
|
|
+ <p className={style['miniName']}>{item.name}</p>
|
|
|
+ {item.details&&item.details.map((vv,ii)=>{
|
|
|
+ return <CheckBtn value={vv.detailName}
|
|
|
+ label={vv.detailName}
|
|
|
+ isSelect={selecteds[v.name]&&selecteds[item.name].includes(vv.detailName)}
|
|
|
+ handleClick={this.handleCheckbox.bind(this,item.name,vv.detailName)}>
|
|
|
+ </CheckBtn>
|
|
|
+ {vv.state==1?<span style={{color:'#3B9ED0'}}>(智能推荐)</span>:''}
|
|
|
+ })}
|
|
|
+ </div>
|
|
|
+ }
|
|
|
+
|
|
|
+ })}
|
|
|
+ </div>
|
|
|
+ })}
|
|
|
+ {v.groupCalculate.isShow=='1(1-显示计算结果,0-不显示计算结果)'?<p className={style['subTotal']}>
|
|
|
+ <span>计分</span>
|
|
|
+ <span>{v.groupCalculate.result.value}</span>
|
|
|
+ </p>:''}
|
|
|
+ </div>
|
|
|
+ })
|
|
|
+ return content;
|
|
|
+ }
|
|
|
|
|
|
render(){
|
|
|
- const {data,title} = this.props;
|
|
|
+ const {title,scaleInfo,tableId} = this.props;
|
|
|
+ const data = scaleInfo[tableId];
|
|
|
let {selecteds} = this.state;
|
|
|
const content = data && data[1].content;//表格内容
|
|
|
const preContent = data && data[0].content;//表前文字
|
|
|
const footContent = data && data[2].content; //表后文字
|
|
|
- const datas = content && JSON.parse(content);
|
|
|
- // console.log(555,datas,content);
|
|
|
+ // const datas = content && JSON.parse(content);
|
|
|
+ const datas = mocks.newData;
|
|
|
return <div className={style['tableBox']} id="printcontent">
|
|
|
<div className={style['printShow']}>
|
|
|
<Information></Information>
|
|
|
</div>
|
|
|
- <h1>{title}</h1>
|
|
|
+ {/*<h1>{title}</h1>*/}
|
|
|
+ <h1>{datas.scaleName}</h1>
|
|
|
<div dangerouslySetInnerHTML={{__html:preContent}} className={style['textlh']}></div>
|
|
|
- <table className={style['table']}>
|
|
|
+ {/*<table className={style['table']}>
|
|
|
<thead>
|
|
|
<tr>
|
|
|
{datas&&datas.title.map((v,i)=>{
|
|
@@ -80,15 +139,6 @@ class ScaleTable extends React.Component{
|
|
|
return <tr>
|
|
|
<td>{v.name}</td>
|
|
|
<td>
|
|
|
- {/*{v.details.map((it,index)=>{
|
|
|
- return <td className={style['block']}>
|
|
|
- <label>
|
|
|
- <input type="radio" name={v.name} value={it.score} onChange={this.handleChange}/>{it.detailName}
|
|
|
- <span style={{display:it.state==1?'inline':'none',color:'#3B9ED0'}}>(智能推荐)</span>
|
|
|
- </label>
|
|
|
- </td>
|
|
|
-
|
|
|
- })}*/}
|
|
|
{v.controltype==0?v.details.map((it,index)=>{
|
|
|
return <td className={style['block']}>
|
|
|
<Radio label={it.detailName}
|
|
@@ -127,7 +177,15 @@ class ScaleTable extends React.Component{
|
|
|
</td>
|
|
|
</tr>
|
|
|
</tfoot>
|
|
|
- </table>
|
|
|
+ </table>*/}
|
|
|
+ <div className={style['textContent']}>
|
|
|
+ {this.getContent()}
|
|
|
+ <div className={style['total']}>
|
|
|
+ <span>总分:</span>
|
|
|
+ <span>{datas.calculate.result.value||'54' +'分'}</span>
|
|
|
+ <span className={style['totalBtn']}>得分</span>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
<div dangerouslySetInnerHTML={{__html:footContent}} className={style['textlh']}></div>
|
|
|
</div>
|
|
|
}
|