|
@@ -2,9 +2,8 @@ import React,{Component} from 'react';
|
|
|
import classNames from 'classnames';
|
|
|
import config from '@config/index.js';
|
|
|
import style from './index.less';
|
|
|
-import {deepClone,filterArr,handleEnter,isIE,getPageCoordinate,windowEventHandler,filterDataArr,getIds} from '@utils/tools.js';
|
|
|
+import {deepClone,filterArr,handleEnter,isIE,windowEventHandler,filterDataArr,getIds} from '@utils/tools.js';
|
|
|
import {Notify} from '@commonComp';
|
|
|
-import ReactDom from "react-dom";
|
|
|
import $ from 'jquery';
|
|
|
/****
|
|
|
* 标签组合下拉,选中的项目展开
|
|
@@ -45,10 +44,6 @@ class SpreadDrop extends Component{
|
|
|
ban:{}, //放'伴'字段
|
|
|
editable:false, //双击编辑
|
|
|
labelVal:'', //存放标签原有的值--主诉字数限制用
|
|
|
- boxLeft:0,
|
|
|
- boxTop:0,
|
|
|
- tmpScroll:0,
|
|
|
- tmpTop:0,
|
|
|
};
|
|
|
this.$div = React.createRef();
|
|
|
this.handleSelect = this.handleSelect.bind(this);
|
|
@@ -66,37 +61,12 @@ class SpreadDrop extends Component{
|
|
|
handleShow(e){//单击
|
|
|
e&&e.stopPropagation();
|
|
|
const {ikey,handleShow,placeholder,flag,id,value,tagType,type,data,windowWidth} = this.props;
|
|
|
- // let boxLeft = e.pageX -175 + 'px';
|
|
|
- // let offsetTop = e.target.offsetTop;
|
|
|
- // const ht = e.target.offsetHeight; //如杂音选中文字有多行时,写死会遮挡
|
|
|
- // let boxTop = offsetTop + ht +2 + 'px';
|
|
|
- // this.setState({
|
|
|
- // boxLeft:boxLeft,
|
|
|
- // boxTop:boxTop
|
|
|
- // })
|
|
|
- let num = 0,leftLen;//判断为五类切超出页面
|
|
|
+ let num = 0;//判断为五类切超出页面
|
|
|
data && data.map((item)=>{
|
|
|
if(item.formPosition != 1){
|
|
|
++num
|
|
|
}
|
|
|
- })
|
|
|
- if(num >= 5 && windowWidth-getPageCoordinate(e).boxLeft < 760){
|
|
|
- leftLen = windowWidth-780
|
|
|
- }else{
|
|
|
- leftLen = getPageCoordinate(e).boxLeft
|
|
|
- }
|
|
|
- this.setState({
|
|
|
- boxLeft:leftLen,
|
|
|
- boxTop:getPageCoordinate(e).boxTop,
|
|
|
- tmpScroll: $("#addScrollEvent")[0].scrollTop,
|
|
|
- tmpTop:getPageCoordinate(e).boxTop
|
|
|
});
|
|
|
- windowEventHandler('scroll',()=>{ //弹窗跟随滚动条滚动或者关闭弹窗
|
|
|
- let scrollYs = $("#addScrollEvent")[0].scrollTop;
|
|
|
- this.setState({
|
|
|
- boxTop:this.state.tmpTop - scrollYs + this.state.tmpScroll
|
|
|
- })
|
|
|
- },$("#addScrollEvent")[0])
|
|
|
// window.event? window.event.cancelBubble = true : e.stopPropagation();
|
|
|
this.setStateInit(); //恢复初始选中状态
|
|
|
const that = this;
|
|
@@ -366,7 +336,7 @@ class SpreadDrop extends Component{
|
|
|
|
|
|
render(){
|
|
|
const {placeholder,value,show,data,order} = this.props;
|
|
|
- const {editable,boxLeft,boxTop} = this.state;
|
|
|
+ const {editable} = this.state;
|
|
|
return <div className={style['container']}
|
|
|
onFocus={(e)=>e.stopPropagation()}
|
|
|
onBlur={(e)=>e.stopPropagation()}
|
|
@@ -381,8 +351,8 @@ class SpreadDrop extends Component{
|
|
|
onInput={this.onChange}
|
|
|
onkeydown={handleEnter}
|
|
|
>{value||placeholder}</div>
|
|
|
- <ListItems data={data} left={boxLeft} order={order}
|
|
|
- top={boxTop} show={show} handleSelect={this.handleSelect} handleConfirm={this.handleConfirm} handleClear={this.handleClear} {...this.state}></ListItems>
|
|
|
+ <ListItems data={data} order={order}
|
|
|
+ show={show} handleSelect={this.handleSelect} handleConfirm={this.handleConfirm} handleClear={this.handleClear} {...this.state}></ListItems>
|
|
|
</div>
|
|
|
}
|
|
|
}
|
|
@@ -418,26 +388,21 @@ class ListItems extends Component{
|
|
|
return list;
|
|
|
}
|
|
|
getStyle(){
|
|
|
- const {left,top,show} = this.props;
|
|
|
+ const {show} = this.props;
|
|
|
return {
|
|
|
- left:left?left+'px':'',
|
|
|
- top:top?top+'px':'',
|
|
|
display:show?'block':'none'
|
|
|
}
|
|
|
}
|
|
|
render (){
|
|
|
const {handleClear,handleConfirm,order} = this.props;
|
|
|
- const domNode = document.getElementById('root');
|
|
|
- return ReactDom.createPortal(
|
|
|
- <div className={style["drop-list"]} style={this.getStyle()} contentEditable="false" onClick={(e)=>{e.stopPropagation();}}>
|
|
|
+ return <div className={style["drop-list"]} style={this.getStyle()} contentEditable="false" onClick={(e)=>{e.stopPropagation();}}>
|
|
|
<p className={style['orderTips']}>按{order?'从左到右从上到下':'点击'}顺序成文</p>
|
|
|
{this.getLabels()}
|
|
|
- <div className="oper">
|
|
|
+ <div className="oper clearfix">
|
|
|
<span className={style['clear']} onClick={handleClear}>清空选项</span>
|
|
|
<span className={style['confirm']} onClick={handleConfirm}>确定</span>
|
|
|
</div>
|
|
|
</div>
|
|
|
- ,domNode)
|
|
|
}
|
|
|
}
|
|
|
|