import React,{Component} from 'react'; import classNames from 'classnames'; import RadioDrop from "@containers/RadioDrop"; import NumberDrop from "@containers/NumberDrop"; import RadioInpDrop from "@containers/RadioInpDrop"; import InlineTag from '@containers/InlineTag'; import Multiple from '@containers/Multiple'; import addIcon from '@images/addItem.png'; import style from "./index.less"; import tools from '@utils/tools'; import NumberUnitDrop from '@containers/NumberUnitDrop'; /**** * 多标签组合 * author:zn@2018-11.26 * 接收参数: * data:标签内容数据 * showArr:显示下拉总对象 * ikey:当前组件唯一标识,由模块index+标签index+标签内index三个组成的字符串 * * * * ***/ class MultSpread extends Component{ constructor(props){ super(props); this.state = { editable: false, }; this.$cont = React.createRef(); this.changeToEdit = this.changeToEdit.bind(this); this.handleEdit = this.handleEdit.bind(this); } getClass(){ const {saveText,ikey,showAdd,isImports} = this.props; const labelInx = ikey.substr(1); const text = saveText&&saveText[+labelInx]; const orgBorder = isImports&&!text?style['orange-border']:''; const isSelected = text?style['selected']:style['container']; const hasAdd = showAdd?style['add']:''; return classNames(isSelected,hasAdd,orgBorder); } getLabels(){ const {data,ikey,showArr,copyId,selecteds,boxMark} = this.props; const {editable}= this.state; let show = false; let inx = ''; const list = data.map((it,i)=>{ inx=ikey+''+i; show = editable?false:showArr&&showArr[inx]; switch (true){ case +it.tagType===8: return it.name; case +it.controlType===1: const list = it.questionDetailList&&it.questionDetailList.length>0?it.questionDetailList:it.questionMapping; return ; case +it.controlType===2: const dataList = it.questionDetailList&&it.questionDetailList.length>0?it.questionDetailList:it.questionMapping; return ; case +it.controlType===5://带单位数字键盘 return ; case +it.controlType===3: case +it.controlType===6: return ; case +it.controlType===7: const min = it.minValue;//!=null&&it.minValue!=undefined?it.minValue-1:undefined; const max = it.maxValue;//!=null&&it.maxValue!=undefined?+it.maxValue+1:undefined; return ; case +it.controlType===11: return ; default: return it.name; } }); return list; } changeToEdit(e){ const {name,copyId,ikey,placeholder,handleDbclick,saveText,prefix,suffix} = this.props; const labelInx = ikey.substr(1); const text = saveText&&saveText[+labelInx]; //clearTimeout(this.state.timer);//取消延时的单击事件 e.preventDefault(); if(text&&text.trim()) {//有选中值的标签才能双击编辑 this.setState({ editable: true }); //失焦关闭编辑状态 setTimeout(()=>{ this.$cont.current.focus(); }); //双击埋点记录 handleDbclick && handleDbclick({id:copyId}); } } handleEdit(e){ const {saveEditText,ikey} = this.props; if(!this.state.editable) return; this.setState({ editable: false }); let totalVal = e.target.innerText || e.target.innerHTML; saveEditText && saveEditText({ikey,type:'4',totalVal}); } componentDidMount(){ //挂载完成保存有加号的项目数据 const {saveAddItem,fullData,copyId,showAdd} = this.props; if(showAdd){ const data = tools.deepClone(fullData); saveAddItem&&saveAddItem(copyId,data); } } getContClass(){ const {editable} = this.state; const edit = editable?style['blue-border']:''; return classNames(edit); } render(){ const {showAdd,addLabelItem,ikey,copyId,textPrefix,textSuffix} = this.props; return (
{textPrefix?{textPrefix}:''}
{this.getLabels()} {textSuffix?{textSuffix}:''} {showAdd?添加血压项addLabelItem({ikey,copyId})}/>:''}
) } } export default MultSpread;