index.jsx 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167
  1. import React,{Component} from 'react';
  2. import style from './index.less';
  3. import Notify from '../Notify/index.js';
  4. import ReactDom from "react-dom";
  5. import backspace from '../../images/backspace.png';
  6. /**
  7. * 时间单位组件下拉(tagType=1,controlType=5)
  8. *
  9. */
  10. class NumberUnitPan extends Component{
  11. constructor(props){
  12. super(props);
  13. this.state = {
  14. value:''
  15. }
  16. this.handleSelect = this.handleSelect.bind(this);
  17. this.getUnitTable = this.getUnitTable.bind(this);
  18. }
  19. handleSelect(e){
  20. e.stopPropagation();
  21. const {handleSelect,toClear} = this.props;
  22. const text = e.target.innerText || e.target.innerHTML;
  23. const preValue = this.state.value;
  24. // if(+text==0 && !preValue){//第一位不能是0
  25. // Notify.info("请输入正确时间");
  26. // return false;
  27. // }
  28. const value = toClear?'':this.state.value; //键盘输入替换已有的值
  29. this.setState({
  30. value: value+text
  31. });
  32. handleSelect&&handleSelect({text:value+text,mark:true});//增加mark参数,清空删除不提示字数限制
  33. }
  34. handleClear(e){
  35. e.stopPropagation();
  36. const onSelect = this.props.handleSelect;
  37. this.setState({
  38. value: ''
  39. });
  40. onSelect&&onSelect({text:'',mark:false});
  41. }
  42. handleClose(e){
  43. e.stopPropagation();
  44. //关闭弹窗
  45. const {onClose} = this.props;
  46. onClose&&onClose();
  47. }
  48. handleBack(e){
  49. e.stopPropagation();
  50. const {handleSelect,value} = this.props;
  51. if(value===undefined||value==''){
  52. return;
  53. }
  54. const len = value.length-1;
  55. const text = value.substring(0,len);
  56. this.setState({
  57. value:text
  58. });
  59. handleSelect&&handleSelect({text,mark:false});
  60. }
  61. getStyle(){
  62. const {left,top,show} = this.props;
  63. return {
  64. /*left:left?left+'px':'0',
  65. top:top?top+'px':'0',*/
  66. display:show?'table':'none'
  67. }
  68. }
  69. getUnitTable(){
  70. const {unitType} = this.props;
  71. if(unitType == 8){
  72. return <table className={style['pan']} >
  73. <tr>
  74. <td><span onClick={this.handleSelect}>1</span></td>
  75. <td><span onClick={this.handleSelect}>2</span></td>
  76. <td><span onClick={this.handleSelect}>3</span></td>
  77. <td><span onClick={this.handleSelect}>ml</span></td>
  78. <td><span onClick={this.handleSelect}>qd</span></td>
  79. <td><span onClick={this.handleClose.bind(this)} className={style.borderNone}>.</span></td>
  80. </tr>
  81. <tr>
  82. <td><span onClick={this.handleSelect}>4</span></td>
  83. <td><span onClick={this.handleSelect}>5</span></td>
  84. <td><span onClick={this.handleSelect}>6</span></td>
  85. <td><span onClick={this.handleSelect}>mg</span></td>
  86. <td><span onClick={this.handleSelect}>bid</span></td>
  87. <td><span onClick={this.handleClose.bind(this)} className={style.borderNone}>.</span></td>
  88. </tr>
  89. <tr>
  90. <td><span onClick={this.handleSelect}>7</span></td>
  91. <td><span onClick={this.handleSelect}>8</span></td>
  92. <td><span onClick={this.handleSelect}>9</span></td>
  93. <td><span onClick={this.handleSelect}>g</span></td>
  94. <td><span onClick={this.handleSelect}>tid</span></td>
  95. <td><span onClick={this.handleClose.bind(this)} className={style.borderNone}>.</span></td>
  96. </tr>
  97. <tr>
  98. <td><span onClick={this.handleSelect}>.</span></td>
  99. <td><span onClick={this.handleSelect}>0</span></td>
  100. <td><span onClick={this.handleSelect}>粒</span></td>
  101. <td><span onClick={this.handleSelect}>片</span></td>
  102. <td><span onClick={this.handleSelect}>qid</span></td>
  103. <td className={style['imgN']}><img src={backspace} onClick={this.handleBack.bind(this)} /></td>
  104. </tr>
  105. <tr>
  106. <td colspan="3"><span onClick={this.handleClear.bind(this)} className={style['clearN']}>清空</span></td>
  107. <td colspan="3"><span onClick={this.handleClose.bind(this)} className={style['comf']}>确定</span></td>
  108. </tr>
  109. </table>
  110. }
  111. return <table className={style['pan']} >
  112. <tr>
  113. <td><span onClick={this.handleSelect}>1</span></td>
  114. <td><span onClick={this.handleSelect}>2</span></td>
  115. <td><span onClick={this.handleSelect}>3</span></td>
  116. <td><span onClick={this.handleSelect}>分钟</span></td>
  117. <td><span onClick={this.handleSelect}>周</span></td>
  118. <td><span onClick={this.handleSelect}>余</span></td>
  119. </tr>
  120. <tr>
  121. <td><span onClick={this.handleSelect}>4</span></td>
  122. <td><span onClick={this.handleSelect}>5</span></td>
  123. <td><span onClick={this.handleSelect}>6</span></td>
  124. <td><span onClick={this.handleSelect}>小时</span></td>
  125. <td><span onClick={this.handleSelect}>年</span></td>
  126. <td><span onClick={this.handleSelect}>次</span></td>
  127. </tr>
  128. <tr>
  129. <td><span onClick={this.handleSelect}>7</span></td>
  130. <td><span onClick={this.handleSelect}>8</span></td>
  131. <td><span onClick={this.handleSelect}>9</span></td>
  132. <td><span onClick={this.handleSelect}>天</span></td>
  133. <td><span onClick={this.handleSelect}>月</span></td>
  134. <td><span onClick={this.handleSelect}>岁</span></td>
  135. </tr>
  136. <tr>
  137. <td><span onClick={this.handleSelect}>.</span></td>
  138. <td><span onClick={this.handleSelect}>0</span></td>
  139. <td><span onClick={this.handleSelect}>~</span></td>
  140. <td><span onClick={this.handleSelect}>/</span></td>
  141. <td><span onClick={this.handleSelect}>秒</span></td>
  142. <td className={style['imgN']}><img src={backspace} onClick={this.handleBack.bind(this)} /></td>
  143. </tr>
  144. <tr>
  145. <td colspan="3"><span onClick={this.handleClear.bind(this)} className={style['clearN']}>清空</span></td>
  146. <td colspan="3"><span onClick={this.handleClose.bind(this)} className={style['comf']}>确定</span></td>
  147. </tr>
  148. </table>
  149. }
  150. componentWillReceiveProps(nextProps){
  151. //重新选择的值替换 不追加
  152. if(!nextProps.show){
  153. this.setState({
  154. value:''
  155. });
  156. }
  157. }
  158. render(){
  159. const domNode = document.getElementById('root');
  160. return <div className={style['panBox']} onBlur={(e)=>e.stopPropagation()} style={this.getStyle()}>
  161. {this.getUnitTable()}
  162. </div>
  163. }
  164. }
  165. export default NumberUnitPan;