|
@@ -14,6 +14,7 @@ import {ComplexModal,ConfirmModal,MiniToast, Radio,CheckBtn} from '@commonComp';
|
|
|
import AssessResult from '@containers/AssessResult';
|
|
|
import ScaleTable from '@containers/ScaleTable';
|
|
|
import Notify from '@commonComp/Notify';
|
|
|
+import {deepClone} from '@utils/tools';
|
|
|
import $ from 'jquery';
|
|
|
|
|
|
/***
|
|
@@ -64,6 +65,7 @@ class ChronicInfo extends React.Component{
|
|
|
this.handleForRadio = this.handleForRadio.bind(this);
|
|
|
this.showRecommendFn = this.showRecommendFn.bind(this);
|
|
|
this.handleSaveCalcu = this.handleSaveCalcu.bind(this); //保存评估修改的计算和可能结果
|
|
|
+ this.getAddBtnState = this.getAddBtnState.bind(this);
|
|
|
}
|
|
|
|
|
|
onPrint() {
|
|
@@ -101,9 +103,6 @@ class ChronicInfo extends React.Component{
|
|
|
type:22,
|
|
|
}
|
|
|
getInfomation&&getInfomation(param);
|
|
|
- /*this.setState({
|
|
|
- infoId:id
|
|
|
- })*/
|
|
|
}
|
|
|
closeInfo(){//关闭静态知识
|
|
|
this.setState({
|
|
@@ -117,9 +116,18 @@ class ChronicInfo extends React.Component{
|
|
|
})
|
|
|
}
|
|
|
closeOption(){
|
|
|
- this.setState({
|
|
|
- optionId:null
|
|
|
- })
|
|
|
+ // 关闭-有可能结果则保持与结果一致,没有就保持最新选择的内容
|
|
|
+ let {possible,radioVal} = this.state;
|
|
|
+ if(JSON.stringify(possible)=='{}'){
|
|
|
+ this.setState({
|
|
|
+ optionId:null
|
|
|
+ })
|
|
|
+ }else{
|
|
|
+ this.setState({
|
|
|
+ radioVal:Object.assign({},radioVal,possible),
|
|
|
+ optionId:null,
|
|
|
+ });
|
|
|
+ }
|
|
|
}
|
|
|
showTable(it,parentId,parentIndex){
|
|
|
const {formulaResult,scaleInfo} = this.props;
|
|
@@ -198,27 +206,31 @@ class ChronicInfo extends React.Component{
|
|
|
});
|
|
|
}
|
|
|
handleInputformula(v,i, j,idd, e) {
|
|
|
- const { data, setChronicPush } = this.props;
|
|
|
+ const { data, setChronicPush,calcuValues } = this.props;
|
|
|
+ let data1 = JSON.parse(JSON.stringify(data));
|
|
|
+ if(calcuValues&&calcuValues[data1[i].id]){
|
|
|
+ data1[i].details[j].content=calcuValues&&calcuValues[data1[i].id];
|
|
|
+ }
|
|
|
const text = e.target.value;
|
|
|
- if (data[i].details) {
|
|
|
- data[i].details[j].content.details[idd].value = text
|
|
|
- }
|
|
|
-
|
|
|
- const data1 = JSON.parse(JSON.stringify(data));
|
|
|
-
|
|
|
- setChronicPush(data1)
|
|
|
+ if (data1[i].details) {
|
|
|
+ data1[i].details[j].content.details[idd].value = text
|
|
|
+ }
|
|
|
+
|
|
|
+ setChronicPush(data1,data1[i].id,data1[i].details[j].content)
|
|
|
}
|
|
|
handleForRadio(ii,v,i, j,idd, ind){//计算公式
|
|
|
- const { data, setChronicPush } = this.props;
|
|
|
- if (data[i].details) {
|
|
|
- for(let z = 0; z < data[i].details[j].content.details[idd].details.length; z++) {
|
|
|
- data[i].details[j].content.details[idd].details[z].state = 0
|
|
|
- }
|
|
|
- data[i].details[j].content.details[idd].details[ind].state = 1
|
|
|
- }
|
|
|
-
|
|
|
+ const { data, setChronicPush,calcuValues } = this.props;
|
|
|
const data1 = JSON.parse(JSON.stringify(data));
|
|
|
- setChronicPush(data1)
|
|
|
+ if(calcuValues&&calcuValues[data1[i].id]){
|
|
|
+ data1[i].details[j].content=calcuValues&&calcuValues[data1[i].id];
|
|
|
+ }
|
|
|
+ if (data1[i].details) {
|
|
|
+ for(let z = 0; z < data1[i].details[j].content.details[idd].details.length; z++) {
|
|
|
+ data1[i].details[j].content.details[idd].details[z].state = 0
|
|
|
+ }
|
|
|
+ data1[i].details[j].content.details[idd].details[ind].state = 1
|
|
|
+ }
|
|
|
+ setChronicPush(data1,data1[i].id,data1[i].details[j].content);
|
|
|
}
|
|
|
confirmFormula(){//计算公式确定
|
|
|
this.setState({
|
|
@@ -248,8 +260,13 @@ class ChronicInfo extends React.Component{
|
|
|
radioVal:Object.assign({},obj.radioVal),//不设置radioVal只有最近一次选中的值
|
|
|
})
|
|
|
}
|
|
|
- calcuFormula(it,j, v, i) { //计算公式计算
|
|
|
- const { calcuFormula, data ,chronicPushItems} = this.props;
|
|
|
+ calcuFormula(item,j, v, i) { //计算公式计算
|
|
|
+ const { calcuFormula ,data,calcuValues} = this.props;
|
|
|
+ let pushObj = deepClone(data);
|
|
|
+ if(calcuValues&&calcuValues[pushObj[i].id]){
|
|
|
+ pushObj[i].details[j].content=calcuValues&&calcuValues[pushObj[i].id];
|
|
|
+ }
|
|
|
+ let it = pushObj[i].details[j];
|
|
|
let allHasInfo = true;
|
|
|
for (let i = 0; i < it.content.details.length; i++) {
|
|
|
if(it.content.details[i].controlType == 2) { //输入框类型的有没有填值
|
|
@@ -270,22 +287,52 @@ class ChronicInfo extends React.Component{
|
|
|
|
|
|
}
|
|
|
if(allHasInfo) { //所有都有值,则计算
|
|
|
- // delete it.content.resultz
|
|
|
let param = {
|
|
|
type: 2,
|
|
|
data: it,
|
|
|
disId: v.id,
|
|
|
pIndex: j,
|
|
|
ppIndex: i
|
|
|
- }
|
|
|
- calcuFormula({param,chronicPushItems})
|
|
|
+ };
|
|
|
+ calcuFormula({param,chronicPushItems:pushObj})
|
|
|
} else { //不是所有值都填过了
|
|
|
Notify.info('请填写计算公式内容')
|
|
|
}
|
|
|
}
|
|
|
+ getAddBtnState(flag,v,i,j){
|
|
|
+ const {indexs,wholeScaleItems,addScaleItems} = this.props;
|
|
|
+ let btn = '';
|
|
|
+ if(flag){ //有结果
|
|
|
+ if(j!==undefined){
|
|
|
+ btn = indexs[i]&&indexs[i].includes(j)?<span className={style["add-record"]}>
|
|
|
+ <img src={added} />
|
|
|
+ 已加入
|
|
|
+ </span>:<span className={style["listResult"]} onClick={()=>this.handleAddAssessItem(v,i,j)}>
|
|
|
+ <img src={add} />
|
|
|
+ 加入病历记录
|
|
|
+ </span>;
|
|
|
+ }else{
|
|
|
+ btn = wholeScaleItems&&wholeScaleItems[i]?<span className={style["add-record"]}>
|
|
|
+ <img src={added} />
|
|
|
+ 已加入
|
|
|
+ </span>:<span className={style["listResult"]} onClick={()=>addScaleItems(v,i)}>
|
|
|
+ <img src={add} />
|
|
|
+ 加入病历记录
|
|
|
+ </span>;
|
|
|
+ }
|
|
|
+
|
|
|
+ }else{
|
|
|
+ btn = <span className={style["disable-add"]}>
|
|
|
+ <img src={add} />
|
|
|
+ 加入病历记录
|
|
|
+ </span>;
|
|
|
+ }
|
|
|
+
|
|
|
+ return btn;
|
|
|
+ }
|
|
|
getDetail(){
|
|
|
- const {data,indexs,formulaResult} = this.props;
|
|
|
- const {formulaId,optionId,possible,radioVal,isFormulaConfirm} = this.state;
|
|
|
+ const {data,formulaResult,calcuResult,calcuValues} = this.props;
|
|
|
+ const {formulaId,optionId,possible,radioVal} = this.state;
|
|
|
let list = data&&data.map((v,i)=>{
|
|
|
return <div className={style["list"]}>
|
|
|
{v.name?<p>
|
|
@@ -293,12 +340,6 @@ class ChronicInfo extends React.Component{
|
|
|
<img src={infoPic} className={style["infoPic"]} onClick={this.showInfo.bind(this,v.id)}/>
|
|
|
:
|
|
|
</p>:''}
|
|
|
- {/*<MiniToast title='静态知识'
|
|
|
- icon={allTableIcon}
|
|
|
- show={infoId&&infoId==v.id?true:false}
|
|
|
- close={this.closeInfo}>
|
|
|
- {pureText}
|
|
|
- </MiniToast>*/}
|
|
|
{v.details&&v.details.map((it,j)=>{
|
|
|
if(it.type==1){
|
|
|
return <p>
|
|
@@ -306,46 +347,38 @@ class ChronicInfo extends React.Component{
|
|
|
<i onClick={this.showTable.bind(this,it.content,v.id,i)}>{'【'+it.content.name+'】'}</i>
|
|
|
{formulaResult&&formulaResult[it.content.id]?<i>{'结果:'}{formulaResult[it.content.id].calcalculate&&formulaResult[it.content.id].calcalculate.result.value +' '+ formulaResult[it.content.id].calcalculate.result.text}</i>:''}
|
|
|
</span>
|
|
|
- {indexs[i]&&indexs[i].includes(j)?<span className={style["addResult"]}>
|
|
|
- <img src={added} />
|
|
|
- 已加入
|
|
|
- </span>:<span className={style["listResult"]} onClick={()=>this.handleAddAssessItem(v,i,j)}>
|
|
|
- <img src={add} />
|
|
|
- 加入病历记录
|
|
|
- </span>
|
|
|
+ {
|
|
|
+ this.getAddBtnState(formulaResult&&formulaResult[it.content.id],v,i,j)
|
|
|
}
|
|
|
</p>
|
|
|
}else if(it.type==2){
|
|
|
- const result = it.content.result&&it.content.result[1]&&it.content.result[1].text;
|
|
|
+ const cres = calcuResult&&calcuResult[v.id]||it.content.result;
|
|
|
+ const result = cres&&cres[1]&&cres[1].text;
|
|
|
+ const details = calcuValues&&calcuValues[v.id]&&calcuValues[v.id].details||it.content.details;
|
|
|
return <div className={style["marTop"]}>
|
|
|
<span className={style["limit"]}>
|
|
|
计算公式结果:
|
|
|
<i className={style["blue"]} onClick={this.showFormula.bind(this,v.id)}>{result?result:'请选择'}</i>
|
|
|
<img src={level1} />
|
|
|
</span>
|
|
|
- {indexs[i]&&indexs[i].includes(j)?<span className={style["addResult"]}>
|
|
|
- <img src={added} />
|
|
|
- 已加入
|
|
|
- </span>:<span className={style["listResult"]} onClick={()=>this.handleAddAssessItem(v,i,j)}>
|
|
|
- <img src={add} />
|
|
|
- 加入病历记录
|
|
|
- </span>
|
|
|
+ {
|
|
|
+ this.getAddBtnState(result,v,i,j)
|
|
|
}
|
|
|
- <MiniToast title={it.content.name}
|
|
|
+ {formulaId&&formulaId==v.id&&<MiniToast title={it.content.name}
|
|
|
icon={allTableIcon}
|
|
|
show={formulaId&&formulaId==v.id?true:false}
|
|
|
close={this.closeFormula}
|
|
|
confirm={this.confirmFormula.bind(this,v,i)}
|
|
|
footer="true">
|
|
|
<table>
|
|
|
- {it.content.details.map((item,idd)=>{
|
|
|
- if(item.controlType==1){//单选
|
|
|
+ {details.map((item,idd)=>{
|
|
|
+ if(item.controlType==0){//单选
|
|
|
return <tr>
|
|
|
<td>
|
|
|
<span>{'请选择'+item.name+':'}</span>
|
|
|
</td>
|
|
|
<td>
|
|
|
- {item.details.map((ii,ind)=>{
|
|
|
+ {Array.isArray(item.details)&&item.details.map((ii,ind)=>{
|
|
|
return <div className={style["chooseItem"]}>
|
|
|
<Radio label={ii.detailName}
|
|
|
isSelect={ii.state == 1}
|
|
@@ -355,8 +388,6 @@ class ChronicInfo extends React.Component{
|
|
|
})}
|
|
|
</td>
|
|
|
</tr>
|
|
|
- }else if(item.controlType==1){//多选
|
|
|
-
|
|
|
}else if(item.controlType==2){//输入框
|
|
|
return <tr>
|
|
|
<td>
|
|
@@ -369,31 +400,13 @@ class ChronicInfo extends React.Component{
|
|
|
<span>{item.uint}</span>
|
|
|
</td>
|
|
|
|
|
|
- </tr>
|
|
|
- }else if(item.controlType==3){//下拉
|
|
|
- return <tr>
|
|
|
- <td>
|
|
|
- <span>{'请选择'+item.name+':'}</span>
|
|
|
- </td>
|
|
|
- <td>
|
|
|
- {item.details.map((ii,ind)=>{
|
|
|
- return <div className={style["chooseItem"]}>
|
|
|
- <Radio label={ii.detailName}
|
|
|
- // isSelect={radioVal[i]==ii.detailName}
|
|
|
- isSelect={ii.state == 1}
|
|
|
- handleClick={this.handleForRadio.bind(this,ii,v,i)}>
|
|
|
- </Radio>
|
|
|
- </div>
|
|
|
- })}
|
|
|
- </td>
|
|
|
-
|
|
|
</tr>
|
|
|
}
|
|
|
})}
|
|
|
</table>
|
|
|
<div className={style["forMulBtn"]} onClick={this.calcuFormula.bind(this,it,j, v, i)}>计算</div>
|
|
|
<table>
|
|
|
- {it.content.result && Array.isArray(it.content.result) &&it.content.result.map((itemResult, resultIndex) => {
|
|
|
+ {cres && Array.isArray(cres) &&cres.map((itemResult, resultIndex) => {
|
|
|
return <tr>
|
|
|
<td>
|
|
|
<span>{itemResult.name+':'}</span>
|
|
@@ -405,7 +418,7 @@ class ChronicInfo extends React.Component{
|
|
|
})}
|
|
|
</table>
|
|
|
|
|
|
- </MiniToast>
|
|
|
+ </MiniToast>}
|
|
|
</div>
|
|
|
}else if(it.type==3){
|
|
|
return <div className={style["marTop"]}>
|
|
@@ -414,13 +427,8 @@ class ChronicInfo extends React.Component{
|
|
|
<i onClick={this.showOption.bind(this,v.id)} className={style["blue"]}>{possible[v.id]?possible[v.id]:'请选择'}</i>
|
|
|
<img src={level1} />
|
|
|
</span>
|
|
|
- {indexs[i]&&indexs[i].includes(j)?<span className={style["addResult"]}>
|
|
|
- <img src={added} />
|
|
|
- 已加入
|
|
|
- </span>:<span className={style["listResult"]} onClick={()=>this.handleAddAssessItem(v,i,j)}>
|
|
|
- <img src={add} />
|
|
|
- 加入病历记录
|
|
|
- </span>
|
|
|
+ {
|
|
|
+ this.getAddBtnState(possible[v.id],v,i,j)
|
|
|
}
|
|
|
<MiniToast title='结果选择'
|
|
|
icon={checkIcon}
|
|
@@ -461,7 +469,7 @@ class ChronicInfo extends React.Component{
|
|
|
<span className={style['print']} onClick={this.onPrint}><img src={printIcon} alt=""/>打印</span>
|
|
|
<span className={style['okBtn']} onClick={()=>this.closeTable()}>确定</span>
|
|
|
</div>;
|
|
|
- const {chronicMagItem,tableList,saveAssessInfos,chronicDesease,formulaResult,showHide,calcuFormula} = this.props;
|
|
|
+ const {chronicMagItem,tableList,saveAssessInfos,chronicDesease,formulaResult,showHide} = this.props;
|
|
|
const {showAssess,isAssessConfirm,tableName,tableId,parentId,parentIndex,isRecommendConfirm,showRecommend,radioVal,possible} = this.state;
|
|
|
return <div className={style["tips"]} style={{marginBottom:'15px'}}>
|
|
|
<div className={`${style["tips-title"]} ${style["chronic"]}`}>
|
|
@@ -494,15 +502,17 @@ class ChronicInfo extends React.Component{
|
|
|
<div className={style["content"]}>
|
|
|
{this.getDetail()}
|
|
|
</div>
|
|
|
- <ConfirmModal visible={showHide&&showHide.showList} noFooter='true' title='全部量表' close={this.close} titleBg="#DFEAFE" icon={allTableIcon} height={400} width={400}>
|
|
|
+ <ConfirmModal visible={showHide&&showHide.showList} noFooter='true' title='全部量表' close={this.close} titleBg="#DFEAFE" icon={allTableIcon} height={450} width={450}>
|
|
|
<ul className={style['toast-cont']}>
|
|
|
{tableList&&tableList.map((v,i)=>{
|
|
|
return <li>
|
|
|
- <span>
|
|
|
- <i onClick={this.handleListClick.bind(this,v)}>{'【'+v.name+'】'}</i>
|
|
|
- {/*{formulaResult&&formulaResult[v.id]?<i>{'结果:'+formulaResult[v.id].text}</i>:''}*/}
|
|
|
- {formulaResult&&formulaResult[v.id]?<i className={style['res']}>{'结果:'}{formulaResult[v.id].calcalculate&&formulaResult[v.id].calcalculate.result.value+' '+ (formulaResult[v.id].calcalculate.result.text?formulaResult[v.id].calcalculate.result.text:'')}</i>:''}
|
|
|
- </span>
|
|
|
+ <span className={style["scaleName"]}>
|
|
|
+ <i onClick={this.handleListClick.bind(this,v)}>{'【'+v.name+'】'}</i>
|
|
|
+ {formulaResult&&formulaResult[v.id]?<i className={style['res']}>{'结果:'}{formulaResult[v.id].calcalculate&&formulaResult[v.id].calcalculate.result.value+' '+ (formulaResult[v.id].calcalculate.result.text?formulaResult[v.id].calcalculate.result.text:'')}</i>:''}
|
|
|
+ </span>
|
|
|
+ {
|
|
|
+ this.getAddBtnState(formulaResult&&formulaResult[v.id],v,i)
|
|
|
+ }
|
|
|
</li>
|
|
|
})}
|
|
|
</ul>
|
|
@@ -525,7 +535,7 @@ class ChronicInfo extends React.Component{
|
|
|
handleSaveCalcu={this.handleSaveCalcu}
|
|
|
closeAssess={this.showAssessFn}
|
|
|
showScaleFn={this.showTable.bind(this)}
|
|
|
- calcuFormula={calcuFormula}
|
|
|
+ showListScale={this.handleListClick.bind(this)}
|
|
|
radioVal={radioVal}
|
|
|
possible={possible}
|
|
|
isAssessConfirm={isAssessConfirm}></AssessResult>
|
|
@@ -541,7 +551,6 @@ class ChronicInfo extends React.Component{
|
|
|
closeAssess={this.showRecommendFn}
|
|
|
isRecommend={true}
|
|
|
showScaleFn={this.showTable.bind(this)}
|
|
|
- calcuFormula={calcuFormula}
|
|
|
radioVal={radioVal}
|
|
|
possible={possible}
|
|
|
isAssessConfirm={isRecommendConfirm}></AssessResult>
|