index.jsx 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. import PropTypes from "prop-types"
  2. import React from "react"
  3. import style from "./index.less"
  4. import TemplateItem from './TemplateItem'
  5. import check_circle from './TemplateItem/img/check-circle.png';
  6. import check_right from './TemplateItem/img/check-right.png';
  7. import Empty from '@components/Empty';
  8. import {windowEventHandler,getWindowInnerHeight} from '@utils/tools'
  9. class TemplateItems extends React.Component {
  10. constructor(props) {
  11. super(props);
  12. this.$cont = React.createRef();
  13. this.$search = React.createRef();
  14. this.genItems = this.genItems.bind(this);
  15. this.templateSearch = this.templateSearch.bind(this);
  16. }
  17. componentDidMount(){
  18. const height = getWindowInnerHeight()-226;
  19. this.$cont.current.style.height = height+"px";
  20. windowEventHandler('resize', ()=>{
  21. if(this.$cont.current){
  22. const height = getWindowInnerHeight()-226;
  23. this.$cont.current.style.height = height+"px";
  24. }
  25. });
  26. }
  27. genItems() {
  28. const Items = [];
  29. this.props.items.forEach((v,idx) => {
  30. Items.push(
  31. <TemplateItem
  32. {...v}
  33. key={v.id}
  34. idx={idx}
  35. checkItems={this.props.checkItems}
  36. allCheckShow={this.props.allCheckShow}
  37. handleContentClick={this.props.handleContentClick}
  38. handleTemplateDel={this.props.handleTemplateDel}
  39. handleTitleChange={this.props.handleTitleChange}
  40. />
  41. );
  42. });
  43. return Items;
  44. }
  45. getCheckIcon() {
  46. if (this.props.items.length == this.props.checkItems.length && this.props.checkItems.length != 0) {
  47. return check_right;
  48. } else {
  49. return check_circle;
  50. }
  51. }
  52. templateSearch(){
  53. const {templateSearch} = this.props
  54. templateSearch(this.$search.current.value)
  55. }
  56. render() {
  57. const { allCheckShow, handleMangerTemplate,handleClickGetMore, handleDelList, handleAllCheckbox, items,checkItems,current,hasMore } = this.props;
  58. // console.log(allCheckShow,7877877)
  59. return (
  60. <div className={style.wrapper}>
  61. {
  62. items ? (allCheckShow ?
  63. <div className={style.wrapperTop}>
  64. <div className={style['check-wrap']} onClick={handleAllCheckbox}>
  65. <img className={`${style['fl-element']} ${style['check-box']}`} src={this.getCheckIcon()} />
  66. </div>
  67. <span onClick={handleAllCheckbox}>全选</span>
  68. <span className={`${style['fr-element']} ${style['done']}`} onClick={handleMangerTemplate}>完成</span>
  69. {
  70. checkItems.length>0?<span className={`${style['fr-element']} ${style['del-items']}`} onClick={handleDelList}>删除</span>:
  71. <span className={`${style['fr-element']} ${style['del-items-gray']}`}>删除</span>
  72. }
  73. </div> :
  74. <div className={style.wrapperTop}>
  75. <div className={style.templateSearch}>
  76. <input ref={this.$search} type="text" />
  77. <div className={style.search} onClick={this.templateSearch}>检索</div>
  78. </div>
  79. {
  80. items.length > 0&&<span className={`${style['fr-element']} ${style['manger']}`} onClick={handleMangerTemplate}>管理</span>
  81. }
  82. </div>) : <div style={{height:'36px'}}></div>
  83. // <div className={style.emptyWrap}>
  84. // <div className={`${style.templateSearch}`}>
  85. // <input ref={this.$search} type="text" />
  86. // <div className={style.search} onClick={this.templateSearch}>检索</div>
  87. // </div>
  88. // <span className={`${style['fr-element']} ${style['manger']}`} onClick={handleMangerTemplate}>管理</span>
  89. // </div>
  90. }
  91. <div className={style.tempLists} ref={this.$cont}>
  92. {
  93. this.genItems().length > 0?this.genItems(): <Empty message={'还没有保存模板'}></Empty>
  94. }
  95. {/* {//注释掉的暂时没有分也功能
  96. hasMore?<p onClick={()=>handleClickGetMore(current)} className={style.loadMore}>点击查看更多</p>:null
  97. } */}
  98. </div>
  99. </div>
  100. )
  101. }
  102. }
  103. export default TemplateItems;
  104. TemplateItems.propTypes = {
  105. items: PropTypes.arrayOf(PropTypes.object),
  106. handleContentClick: PropTypes.func,
  107. handleUpdate: PropTypes.func,
  108. handleTemplateDel: PropTypes.func,
  109. handleTitleChange: PropTypes.func
  110. };