|
@@ -18,17 +18,14 @@ class ScaleTable extends React.Component{
|
|
|
selecteds:{}, //当前页面的选中标识,保存后使用select标识
|
|
|
valueData:{},
|
|
|
start:false, //点击计算
|
|
|
- score:{}, //选中的分数
|
|
|
- totalScore:0 //前端计算结果
|
|
|
}
|
|
|
}
|
|
|
- // handleRadio(groupName,name,value){
|
|
|
+
|
|
|
handleRadio(groupName,name,item){
|
|
|
- const {selecteds,valueData,score} = this.state;
|
|
|
+ const {selecteds,valueData} = this.state;
|
|
|
const value = item.detailName;
|
|
|
this.setState({
|
|
|
- selecteds:Object.assign({},selecteds,{[name]:value}),
|
|
|
- score:Object.assign({},score,{[name]:item.score})
|
|
|
+ selecteds:Object.assign({},selecteds,{[name]:value})
|
|
|
})
|
|
|
const datas = JSON.parse(JSON.stringify(valueData));
|
|
|
const group = datas.group;
|
|
@@ -64,7 +61,7 @@ class ScaleTable extends React.Component{
|
|
|
valueData:datas
|
|
|
})
|
|
|
}
|
|
|
- // handleCheckbox(name,value){
|
|
|
+
|
|
|
handleCheckbox(groupName,name,item){
|
|
|
let {selecteds,valueData} = this.state;
|
|
|
const value = item.detailName;
|
|
@@ -112,11 +109,14 @@ class ScaleTable extends React.Component{
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+ this.setState({
|
|
|
+ valueData:datas
|
|
|
+ })
|
|
|
}
|
|
|
|
|
|
handleFormula(data){//得分计算
|
|
|
const {tableId,getResult,parentId,scaleInfo,parentIndex} = this.props;
|
|
|
- const {valueData,score} = this.state;
|
|
|
+ const {valueData} = this.state;
|
|
|
this.setState({
|
|
|
start:true
|
|
|
})
|
|
@@ -136,27 +136,6 @@ class ScaleTable extends React.Component{
|
|
|
Notify.info("请先将量表内容选择完整");
|
|
|
return
|
|
|
}
|
|
|
- // 前端计算分数
|
|
|
- let totalScore = 0;
|
|
|
- for(let i in score){
|
|
|
- totalScore += parseFloat(score[i])
|
|
|
- }
|
|
|
- this.setState({
|
|
|
- totalScore:totalScore
|
|
|
- })
|
|
|
- const range = valueData&&valueData.calculate?valueData.calculate.range:'';
|
|
|
- let resultText;
|
|
|
- if(range){
|
|
|
- for(let k=0; k<range.length; k++){
|
|
|
- if(parseFloat(range[k].min) < totalScore && totalScore > parseFloat(range[k].max)){
|
|
|
- resultText = range[k].text;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- const result = {
|
|
|
- score:totalScore,
|
|
|
- text:resultText
|
|
|
- }
|
|
|
|
|
|
const params = {
|
|
|
type:1,
|
|
@@ -170,14 +149,14 @@ class ScaleTable extends React.Component{
|
|
|
let allDatas = JSON.parse(JSON.stringify(scaleInfo[tableId])) ;
|
|
|
allDatas[1].content = JSON.stringify(valueData);
|
|
|
// 计算接口
|
|
|
- getResult&&getResult({params,allDatas,result});
|
|
|
+ getResult&&getResult({params,allDatas});
|
|
|
}
|
|
|
componentWillReceiveProps(nextProps){
|
|
|
const {tableId} = this.props;
|
|
|
if(JSON.stringify(nextProps.scaleInfo) !== '{}'){
|
|
|
this.setState({
|
|
|
// valueData:nextProps.scaleInfo[tableId].length?mocks.newData:JSON.parse(nextProps.scaleInfo[tableId].content),
|
|
|
- valueData:JSON.parse(nextProps.scaleInfo[tableId][1].content),
|
|
|
+ valueData:nextProps.scaleInfo[tableId]?JSON.parse(nextProps.scaleInfo[tableId][1].content):{},
|
|
|
})
|
|
|
}
|
|
|
}
|
|
@@ -193,6 +172,8 @@ class ScaleTable extends React.Component{
|
|
|
}
|
|
|
getContent(){
|
|
|
let {selecteds,valueData,start} = this.state;
|
|
|
+ const {tableId,formulaResult} = this.props;
|
|
|
+ const scaleResult = formulaResult&&formulaResult[tableId]; //量表计算结果
|
|
|
// const datas = valueData&&valueData.group?valueData:mocks.newData;
|
|
|
const datas = valueData&&valueData.group?valueData:'';
|
|
|
let content = datas&&datas.group&&datas.group.map((v,i)=>{
|
|
@@ -235,8 +216,13 @@ class ScaleTable extends React.Component{
|
|
|
</div>
|
|
|
})}
|
|
|
{v.groupCalculate.isShow==1?<p className={style['subTotal']}>
|
|
|
- <span>计分</span>
|
|
|
- <span>{v.groupCalculate.result.value}</span>
|
|
|
+ <span>计分:</span>
|
|
|
+ {/*<span>{v.groupCalculate.result.value}</span>*/}
|
|
|
+ <span>{scaleResult&&scaleResult.group.map((m,ii)=>{
|
|
|
+ if(m.groupName==v.groupName){
|
|
|
+ return m.groupCalculate.result.value;
|
|
|
+ }
|
|
|
+ })}</span>
|
|
|
</p>:''}
|
|
|
</div>
|
|
|
})
|
|
@@ -244,9 +230,9 @@ class ScaleTable extends React.Component{
|
|
|
}
|
|
|
|
|
|
render(){
|
|
|
- const {title,scaleInfo,tableId,formulaResult} = this.props;console.log('量表渲染:',scaleInfo,tableId)
|
|
|
+ const {title,scaleInfo,tableId,formulaResult} = this.props;
|
|
|
const data = scaleInfo[tableId];
|
|
|
- let {selecteds,totalScore} = this.state;
|
|
|
+ let {selecteds} = this.state;
|
|
|
const content = data && data[1].content;//表格内容
|
|
|
const preContent = data && data[0].content;//表前文字
|
|
|
const footContent = data && data[2].content; //表后文字
|
|
@@ -260,11 +246,11 @@ class ScaleTable extends React.Component{
|
|
|
<div dangerouslySetInnerHTML={{__html:preContent}} className={style['textlh']}></div>
|
|
|
<div className={style['textContent']}>
|
|
|
{this.getContent()}
|
|
|
- <div className={style['total']}>
|
|
|
- <span>总分:</span>
|
|
|
- <span>{scaleResult&&scaleResult.calcalculate.result&&scaleResult.calcalculate.result.value||totalScore||''}</span>
|
|
|
- <span className={style['totalBtn']} onClick={this.handleFormula.bind(this)}>得分</span>
|
|
|
- </div>
|
|
|
+ {datas&&datas.noCalc==0?<div className={style['total']}>
|
|
|
+ <span>总分:</span>
|
|
|
+ <span>{scaleResult&&scaleResult.calcalculate.result&&scaleResult.calcalculate.result.value||''}</span>
|
|
|
+ <span className={style['totalBtn']} onClick={this.handleFormula.bind(this)}>得分</span>
|
|
|
+ </div>:''}
|
|
|
</div>
|
|
|
<div dangerouslySetInnerHTML={{__html:footContent}} className={style['textlh']}></div>
|
|
|
</div>
|