123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231 |
- import PropTypes from "prop-types"
- import React from "react"
- import style from "./index.less"
- import TemplateItem from './TemplateItem'
- import check_circle from './TemplateItem/img/check-circle.png';
- import delIcon from '@common/images/del_nor.png';
- import check_right from './TemplateItem/img/check-right.png';
- import Empty from '@components/Empty';
- import {windowEventHandler,getWindowInnerHeight} from '@utils/tools'
- class TemplateItems extends React.Component {
- constructor(props) {
- super(props);
- this.state = {
- msg:'还没有保存模板',
- val:'',
- height:''
- }
- this.$cont = React.createRef();
- this.$conts = React.createRef();
- this.$search = React.createRef();
- this.genItems = this.genItems.bind(this);
- this.templateSearch = this.templateSearch.bind(this);
- this.handleEnter = this.handleEnter.bind(this);
- this.handleChange = this.handleChange.bind(this);
- this.clear = this.clear.bind(this);
- }
- componentDidMount(){
- const height = getWindowInnerHeight()-195;
- this.setState({
- height:height
- })
- windowEventHandler('resize', ()=>{
- if(this.$conts.current){
- const height = getWindowInnerHeight()-195;
- this.setState({
- height:height
- })
- }
- });
- }
- genItems(items,flg) {
- const Items = [];
- const {admin,adminItems,checkItemsAdmin} = this.props;
- items.forEach((v,idx) => {
- Items.push(
- <TemplateItem
- {...v}
- key={v.id}
- idx={idx}
- checkItems={this.props.checkItems}
- allCheckShow={this.props.allCheckShow}
- handleContentClick={this.props.handleContentClick}
- handleTemplateDel={this.props.handleTemplateDel}
- handleTitleChange={this.props.handleTitleChange}
- admin={this.props.admin}
- adminflg={flg}
- checkItemsAdmin={checkItemsAdmin}
- allCheckShowAdmin={this.props.allCheckShowAdmin}
- />
- );
- });
- return Items;
- }
- getCheckIcon() {
- const {admin,checkItems,items,checkItemsAdmin,adminItems} = this.props;
- if(admin){
- if (adminItems.length == checkItemsAdmin.length && checkItemsAdmin.length != 0) {
- return check_right;
- } else {
- return check_circle;
- }
- }
- if (items.length == checkItems.length && checkItems.length != 0) {
- return check_right;
- } else {
- return check_circle;
- }
- }
- templateSearch(){
- const {templateSearch} = this.props
- templateSearch((this.$search.current.value).trim())
- if(this.$search.current.value.trim()){
- this.setState({
- msg:'暂无模板信息'
- })
- }else{
- this.setState({
- msg:'还没有保存模板'
- })
- }
- }
-
- handleEnter(e){
- if(e.keyCode==13){
- this.templateSearch();
- }
- }
-
- handleChange(){
- const value = (this.$search.current.value).substring(0,30);
- // this.$search.current.value = value
- setTimeout(() => {
- this.setState({
- val: value
- });
- }, 30);
- }
- clear(){
- this.$search.current.value = '';
- this.setState({
- val:''
- });
- this.$search.current.focus();
- this.templateSearch();
- }
- componentWillReceiveProps(next){
- //点清空恢复初始状态
- if(this.props.clearSearch!==next.clearSearch){
- this.clear();
- }
- }
- render() {
- const { checkItemsAdmin,handleAllCheckboxAdmin,handleMangerTemplateAdmin,allCheckShowAdmin,admin,adminItems,allCheckShow, handleMangerTemplate,handleClickGetMore, handleDelList, handleAllCheckbox, items,checkItems,current,hasMore } = this.props;
- const {height} = this.state
- return (
- <div className={style.wrapper} >
- {//管理员操作
- adminItems&&admin ? (allCheckShowAdmin ?
- <div className={style.wrapperTop}>
- <div className={style['check-wrap']} onClick={handleAllCheckboxAdmin} style={{paddingLeft:'10px'}}>
- <img className={`${style['fl-element']} ${style['check-box']}`} src={this.getCheckIcon()} />
- </div>
- <span onClick={handleAllCheckboxAdmin}>全选</span>
- <span className={`${style['fr-element']} ${style['done']}`} onClick={handleMangerTemplateAdmin}>完成</span>
- {
- checkItemsAdmin.length>0?<span className={`${style['fr-element']} ${style['del-items']}`} onClick={handleDelList}>删除</span>:
- <span className={`${style['fr-element']} ${style['del-items-gray']}`}>删除</span>
- }
- </div> :
- <div className={style.wrapperTop}>
- <div className={style.templateSearch}>
- <input placeholder="模板搜索" maxLength="30" ref={this.$search} type="text" onInput={this.handleChange} onPropertyChange={this.handleChange} onKeyUp={this.handleEnter}/>
- {this.state.val?<img src={delIcon} alt="清空" onClick={this.clear}/>:''}
- <div className={style.search} onClick={this.templateSearch}>搜索</div>
- </div>
- {
- adminItems.length > 0&&<span className={`${style['fr-element']} ${style['manger']}`} onClick={handleMangerTemplateAdmin}>管理</span>
- }
- </div>) : null
- }
- {//个人
- items&&!admin ?
- <div className={style.wrapperTop}>
- <div className={style.templateSearch}>
- <input placeholder="模板搜索" id='templateSearch' maxLength="30" ref={this.$search} type="text" onInput={this.handleChange} onPropertyChange={this.handleChange} onKeyUp={this.handleEnter}/>
- {this.state.val?<img src={delIcon} alt="清空" onClick={this.clear}/>:''}
- <div className={style.search} onClick={this.templateSearch}>搜索</div>
- </div>
- </div> : null
- }
- {
- <div className={style.comAdminWrp}>
- <div className={`${style.tempLists} ${style.tempListsP}`} ref={this.$cont} style={{display:admin?'none':'block',border:'1px solid #EAEDF1'}}>
- {//个人
- allCheckShow&&!admin ?<div className={`${style.wrapperTop} ${style.wrapperTopM} ${style.personalTmp}`}>
- <i></i>
- <i></i>
- <div className={style['check-wrap']} onClick={handleAllCheckbox}>
- <img className={`${style['fl-element']} ${style['check-box']}`} src={this.getCheckIcon()} />
- </div>
- <span onClick={handleAllCheckbox}>全选</span>
- <span className={`${style['fr-element']} ${style['done']}`} onClick={handleMangerTemplate}>完成</span>
- {
- checkItems.length>0?<span className={`${style['fr-element']} ${style['del-items']}`} onClick={handleDelList}>删除</span>:
- <span className={`${style['fr-element']} ${style['del-items-gray']}`}>删除</span>
- }
- </div>:null
- }
- {
- !allCheckShow&&<div className={`${style.personalTmp} clearfix`}>
- <span className={style.tip}>个人模板</span>
- <i></i>
- {
- items.length > 0&&<span className={`${style['fr-element']} ${style['manger']}`} onClick={handleMangerTemplate}>管理</span>
- }
- </div>
- }
- {
- <div style={{height:height/2-42+'px',overflow:'auto'}}>
- {this.genItems(items).length > 0?this.genItems(items): <Empty message={this.state.msg}></Empty>}
- </div>
- }
- </div>
- <div className={style.tempLists} ref={this.$conts} style={{border:admin?'0':'1px solid #EAEDF1'}}>
- {
- !admin?!allCheckShowAdmin&&<div className={`${style.personalTmp}`}>标准模板</div>:''
- }
- {
- <div style={{height:admin?height+'px':(height-20)/2-42+'px',overflow:'auto'}}>
- {this.genItems(adminItems,true).length > 0?this.genItems(adminItems,true): <Empty message={this.state.msg}></Empty>}
- </div>
- }
- </div>
- </div>
- }
- {/* <div className={style.tempLists} ref={this.$cont}>
- {
- this.genItems().length > 0?this.genItems(): <Empty message={this.state.msg}></Empty>
- }
- {//注释掉的暂时没有分也功能
- hasMore?<p onClick={()=>handleClickGetMore(current)} className={style.loadMore}>点击查看更多</p>:null
- }
- </div> */}
- </div>
- )
- }
- }
- export default TemplateItems;
- TemplateItems.propTypes = {
- items: PropTypes.arrayOf(PropTypes.object),
- handleContentClick: PropTypes.func,
- handleUpdate: PropTypes.func,
- handleTemplateDel: PropTypes.func,
- handleTitleChange: PropTypes.func
- };
|