|
@@ -13,7 +13,7 @@ import $ from 'jquery';
|
|
|
* placeholder:灰显文字
|
|
|
* handleSelect: 选中事件
|
|
|
* show: 是否显示下拉
|
|
|
- *
|
|
|
+ * 双击编辑效果去掉2019-8-13
|
|
|
* ***/
|
|
|
class NumberUnitDrop extends Component{
|
|
|
constructor(props){
|
|
@@ -37,10 +37,7 @@ class NumberUnitDrop extends Component{
|
|
|
this.$suf = React.createRef();
|
|
|
this.$cont = React.createRef();
|
|
|
this.select = this.select.bind(this);
|
|
|
- this.numInpBlur = this.numInpBlur.bind(this);
|
|
|
- this.handleSpanInp = this.handleSpanInp.bind(this);
|
|
|
this.handleNumClick = this.handleNumClick.bind(this);
|
|
|
- this.changeToEdit = this.changeToEdit.bind(this);
|
|
|
}
|
|
|
select(obj){ //选中键盘上数字事件
|
|
|
const {handleSelect,ikey,suffix,prefix,mainSaveText,formulaCode,mainData} = this.props;
|
|
@@ -84,59 +81,7 @@ class NumberUnitDrop extends Component{
|
|
|
})
|
|
|
handleHide&&handleHide();
|
|
|
}
|
|
|
- //数字框失焦,保存值到store中
|
|
|
- numInpBlur(e){
|
|
|
- e.stopPropagation();
|
|
|
- // const {handleSelect,ikey,suffix,prefix,mainSaveText,handleLabelChange,boxMark,formulaCode} = this.props;
|
|
|
- const {handleSelect,ikey,mainSaveText,handleLabelChange,boxMark,formulaCode} = this.props;
|
|
|
- const {editable} = this.state;
|
|
|
- if(editable){
|
|
|
- // const text = e.target.innerText || e.target.innerHTML;
|
|
|
- // this.$span.current.innerText=''; //修改生成文字变成输入的2倍bug
|
|
|
- let totalVal = e.target.innerText|| e.target.innerHTML;
|
|
|
- let changeVal = this.$span.current.innerText.replace(/^\s*/,'');//数字框值-修改后;去掉前空格避免多空格叠加
|
|
|
- let prefix = this.$pre.current.innerText.replace(/^\s*/,''); //前缀值-修改后
|
|
|
- let suffix = this.$suf.current.innerText.replace(/^\s*/,''); //后缀值-修改后
|
|
|
- // console.log('数字框:'+changeVal,";全部:"+totalVal,";前缀:"+prefix+";后缀:"+suffix);
|
|
|
- handleLabelChange && handleLabelChange({ikey,changeVal,type:boxMark,totalVal,prefix,suffix,formulaCode});
|
|
|
- // handleSelect&&handleSelect({ikey,text,suffix,prefix,mainSaveText});
|
|
|
- // handleLabelChange&&handleLabelChange({ikey,changeVal:text,suffix,prefix,mainSaveText,type:boxMark,formulaCode});
|
|
|
-
|
|
|
- }
|
|
|
- this.setState({
|
|
|
- isClosed:false,
|
|
|
- numEditable:true,
|
|
|
- hasSelect:false,
|
|
|
- editable:false
|
|
|
- });
|
|
|
-
|
|
|
- }
|
|
|
|
|
|
- handleSpanInp(e){ //数字框输入事件
|
|
|
- e.stopPropagation();
|
|
|
- // 主诉字数达到上限时不允许输入
|
|
|
- const {mainSaveText,ikey,type,handleSelect,suffix,prefix,boxMark} = this.props;
|
|
|
- const {labelVal,editable} = this.state;
|
|
|
- let mainText = filterDataArr(mainSaveText);//主诉字数
|
|
|
- if(editable){//避免IE中点击标签也会触发
|
|
|
- let val = e.target.innerText || e.target.innerHTML;
|
|
|
- if(+boxMark==1){
|
|
|
- if(mainText.length >= config.limited){
|
|
|
- if(val.length > labelVal.length){
|
|
|
- e.target.innerText?(e.target.innerText = labelVal):(e.target.innerHTML = labelVal);
|
|
|
- Notify.info(config.limitText);
|
|
|
- return
|
|
|
- }else if(val.length == labelVal.length){
|
|
|
- this.setState({
|
|
|
- labelVal:val
|
|
|
- });
|
|
|
- }else{
|
|
|
- handleSelect&&handleSelect({ikey,text:val,suffix,prefix,mainSaveText});
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
getClasses(){ //整个标签是否有值的状态
|
|
|
const {value,hideTag,show,isImports} = this.props;
|
|
|
const inpValue = this.state.value;
|
|
@@ -151,50 +96,13 @@ class NumberUnitDrop extends Component{
|
|
|
}
|
|
|
return className(isSelected,noTag,blueBorder,orgBorder);
|
|
|
}
|
|
|
- changeToEdit(e){ //整个标签双击编辑状态
|
|
|
- e.stopPropagation();
|
|
|
- window.getSelection ? window.getSelection().removeAllRanges() : document.selection.empty();
|
|
|
- const {value,id,handleDbclick,patId,handleHide,show} = this.props;
|
|
|
- const text = e.target.innerText || e.target.innerHTML;
|
|
|
- clearTimeout(this.state.timer);//取消延时的单击事件
|
|
|
- e.preventDefault();
|
|
|
- if(show){
|
|
|
- handleHide&&handleHide();
|
|
|
- }
|
|
|
- if(value&&value.trim()) {//有选中值的标签才能双击编辑
|
|
|
- this.setState({
|
|
|
- editable: true,
|
|
|
- labelVal:text
|
|
|
- });
|
|
|
- //失焦关闭编辑状态
|
|
|
- setTimeout(()=>{
|
|
|
- // e.target.focus();
|
|
|
- this.$cont.current.focus();
|
|
|
- })
|
|
|
- //双击埋点记录
|
|
|
- handleDbclick && handleDbclick({id:patId||id});
|
|
|
- }
|
|
|
- }
|
|
|
- componentDidMount(){
|
|
|
- if(isIE()){
|
|
|
- // $(this.$span.current).onIe8Input(function(e){
|
|
|
- $(this.$cont.current).onIe8Input(function(e){
|
|
|
- this.handleSpanInp(e)
|
|
|
- },this);
|
|
|
- }
|
|
|
- }
|
|
|
|
|
|
render(){
|
|
|
const {placeholder,prefix,suffix,show,value,handleHide,hideTag} = this.props;
|
|
|
const {editable,hasSelect,boxLeft,boxTop} = this.state;
|
|
|
return <div className={this.getClasses()}
|
|
|
ref={this.$cont}
|
|
|
- onClick={this.handleNumClick}
|
|
|
- contentEditable={editable}
|
|
|
- onBlur={this.numInpBlur}
|
|
|
- onDoubleClick={hideTag?null:this.changeToEdit}
|
|
|
- onKeyDown={handleEnter}
|
|
|
- onInput={this.handleSpanInp}>
|
|
|
+ onClick={this.handleNumClick}>
|
|
|
<span ref = {this.$pre}>{prefix?prefix+' ':prefix}</span>
|
|
|
<span ref = {this.$span}
|
|
|
onKeyDown={handleEnter}
|