import React, { Component } from "react"; import style from "../index.less"; import deleteIcon from '@common/images/delete.png'; import allTableIcon from '@common/images/all-table.png'; import level1 from "@common/images/级别1.png"; import checkIcon from '@common/images/check.png'; import {ComplexModal,MiniToast,Radio} from '@commonComp'; import Notify from '@commonComp/Notify'; import {deepClone} from '@utils/tools'; /** * 来源于页面选择 * * **/ class ScaleItem extends Component { constructor(props) { super(props); this.$area = React.createRef(); const {result}= props; let radioVal = result&&result.radioVal; this.state = { scaleId:'', scaleName:'', parentId:'', showScale:false, optionId:'', radioVal:Object.assign({},radioVal)||{}, formulaId:'', text:props.text, formulaData:{}, //计算公式值 isFormulaConfirm:false, }; this.getItems = this.getItems.bind(this); this.getDetailItems = this.getDetailItems.bind(this); this.showOption = this.showOption.bind(this); this.closeOption = this.closeOption.bind(this); this.closeFormula = this.closeFormula.bind(this); this.handleInputformula =this.handleInputformula.bind(this); } showOption(id){ this.setState({ optionId:id }) } closeOption(){ this.setState({ optionId:null }) } confirmOption(){ const {handleRes} = this.props; const {radioVal} = this.state; handleRes&&handleRes({ possible:Object.assign({},radioVal), radioVal:Object.assign({},radioVal),//不设置radioVal只有最近一次选中的值 }); this.closeOption(); } handleShowScale(item,parentId,pIndex){ const {showScaleFn,closeAssess} = this.props; closeAssess&&closeAssess(); //关闭评估弹窗 showScaleFn&&showScaleFn(item,parentId,pIndex); //显示量表 } handleRadio(item,parent){ let {result} = this.props; let radioVal = result&&result.radioVal; this.setState({ radioVal:Object.assign({},radioVal,{[parent.id]:item.detailName}) }) } handleForRadio(id,idd, ind){ const {formulaData} = this.state; const obj = JSON.parse(JSON.stringify(formulaData)); const data = obj&&obj[id]; if (data) { for(let z = 0; z < data.content.details[idd].details.length; z++) { data.content.details[idd].details[z].state = 0; } data.content.details[idd].details[ind].state = 1; }; this.setState({ formulaData:obj }); } showFormula(id,it){ const {formulaData} = this.state; const obj = JSON.parse(JSON.stringify(formulaData)||{}); if(!obj[id]){ obj[id] = it; } this.setState({ formulaId:id, formulaData:obj }); } confirmFormula(){//计算公式确定 this.setState({ isFormulaConfirm:true, formulaId:null }); } closeFormula(){ this.setState({ formulaId:null }) } calcuFormula(j, v, ii) { //计算公式计算 const { calcuFormula,chronicPushItems } = this.props; const {formulaId,formulaData} = this.state; const it =formulaData&&formulaData[formulaId]; let pushObj = deepClone(chronicPushItems); pushObj[ii].details[j]=it; let allHasInfo = true for (let i = 0; i < it.content.details.length; i++) { if(it.content.details[i].controlType == 2) { //输入框类型的有没有填值 if(!it.content.details[i].value) { allHasInfo = false } } else if(it.content.details[i].controlType == 1) { let hasSelect = false for( let z = 0; z { if(indexs[i]&&indexs[i].includes(j)){ let it=null; if(its.type==1){ //量表 it=deepClone(its); let scaleRes=formulaResult&&formulaResult[it.content.id]&&formulaResult[it.content.id].calcalculate; temp =this.handleShowScale(it.content,item.id,i)}> {scaleRes&&scaleRes.result?(' 【'+it.content.name+'】 结果:'+scaleRes.result.value+" "+scaleRes.result.text):'【'+it.content.name+'】'} ; }else if(its.type==2){ //计算公式 it=formulaData[formulaId]||deepClone(its); const showRes = calcuResult&&calcuResult[item.id]||it.content.result; const cresult = showRes&&showRes[1]&&showRes[1].text; temp =
计算公式结果: {cresult?cresult:'请选择'} {it.content.details.map((item1,idd)=>{ if(item1.controlType==1){//单选 return }else if(item1.controlType==2){//输入框 return } })}
{'请选择'+item1.name+':'} {item1.details.map((ii,ind)=>{ return
>
})}
{'请输入'+item1.name+':'} {disabled?item1.value:this.handleInputformula(item.id,idd,e.target.value)}/>} {item1.uint}
{disabled?"":
计算
} {showRes && Array.isArray(showRes) &&showRes.map((itemResult, resultIndex) => { return })}
{itemResult.name+':'} {itemResult.text}
}else if(its.type==3){ it=deepClone(its); temp =
可能结果: {possible&&possible[item.id]?possible[item.id]:'请选择'}
{it.content.name?it.content.name+':':''} {it.content.details&&it.content.details.map((lis,ind)=>{ return
})}
; } const li = disabled?
  • {item.name}:
    {temp}
  • :
  • {item.name}:
    {temp}
    this.props.handleRemove(i,j)}>
  • ; arr.push(li); } }); return arr; } getItems(){ const { data } = this.props; return data&&data.map((it,i)=>{ return this.getDetailItems(it,i); }); } handleInput(e){ const text = e.target.value; this.setState({ text }); } render() { const {title,handleInp,disabled,isRecommend,formulaResult} = this.props; return
    {isRecommend?'':

    {title}

    }
      { this.getItems() } {isRecommend?'':
    • 评估描述:{this.state.text}
    • }
    ; } } export default ScaleItem;