import PropTypes from "prop-types";
import React from "react";
import style from "./index.less";
import DesItem from './DesItem';
import arrow_icon from './img/arrow.png';
import arrow_down_icon from './img/arrow-down.png';
import del_icon from './img/delete.png';
import del_hover_icon from './img/delete_blue.png';
import edit_icon from './img/edit_grey.png';
import editing_icon from './img/edit_blue.png';
import check_circle from './img/check-circle.png';
import check_right from './img/check-right.png';
import Notify from '@commonComp/Notify';
import store from '@store'
import {checkItems} from '@store/actions/tabTemplate';
import $ from 'jquery';
class TemplateItem extends React.Component {
constructor() {
super();
this.content = null;
this.isAnimate = false;
this.state = {
isOpen: false,
delHover: false,
editHover: false,
checkBox:false,
bgColor:false
};
this.titleDOM = null;
this.isConfirmClick = false;
this.timer = null;
}
genContent() {
const {preview} = this.props;
this.title = '';
let DesItems = [];
for(var a in previewJson){
DesItems.push();
}
// if(previewJson){
// console.log(previewJson,1000)
// previewJson.forEach((v, i) => {
// DesItems.push();
// this.title += `${v}\n`;
// });
// }
return DesItems;
}
getArrow() {
return this.state.isOpen ? arrow_down_icon : arrow_icon;
}
getContentStyle() {
return {
display: this.state.isOpen ? 'block' : 'none'
}
}
handleContentClick(e,sex) {
e.stopPropagation();
let baseSex = store.getState().patInfo.message.sex
if(sex != 3 && sex != baseSex){
Notify.info('引用该模版可能显示有误');
}
this.props.handleContentClick(this.props.id);
}
handleTitleClick() {
if (this.isAnimate) {
return;
}
this.isAnimate = true;
if (this.state.isOpen) {
$(this.content).slideUp(() => {
this.isAnimate = false;
this.setState({
isOpen: false
});
});
// console.log($(this.content).parent().siblings().find('.content'))
return;
}
$(this.content).slideDown(() => {
this.isAnimate = false;
this.setState({
isOpen: true
});
});
}
handleCheckboxClick(e,id){ //点击复选框
e.stopPropagation();
let tempCheck = this.state.checkBox;
this.setState({
checkBox:!tempCheck
})
store.dispatch(checkItems(id))
}
getCheckIcon() {
let tempCheckItems = this.props.checkItems;
if(tempCheckItems.indexOf(this.props.id) != -1){
return [check_right,'title-wrapper-bg']
}else{
return [check_circle,'']
}
}
getBgcColor() {
let tempCheckItems = this.props.checkItems;
if(tempCheckItems.indexOf(this.props.id) != -1){
return 'title-wrapper-bg'
}else{
return ''
}
}
getDelIcon() {
return this.state.delHover ? del_hover_icon : del_icon;
}
handleDelIconMouseEnter() {
this.setState({
delHover: true
});
}
handleDelIconMouseLeave() {
this.setState({
delHover: false
});
}
handleTemplateDel(e) {
e.stopPropagation();
this.props.handleTemplateDel(this.props.id);
}
getEditIcon() {
return this.state.editHover ? editing_icon : edit_icon;
}
handleEditIconMouseEnter() {
this.setState({
editHover: true
});
}
handleEditIconMouseLeave() {
this.setState({
editHover: false
});
}
handleEditIconClick(e,name) {
e.stopPropagation();
let currId = this.props.id
this.props.handleTitleChange(currId,name);
}
recoverTitle() {
this.titleDOM.innerHTML = this.props.title;
}
render() {
const { allCheckShow,id,name,preview,sex } = this.props;
let previewJson = JSON.parse(preview);
let sexStr = sex==2?' (女)':sex==1?' (男)':' (通用)';
return (
this.handleTitleClick()}
>
{
allCheckShow?
{this.handleCheckboxClick(e,id)}}>
[0]})
:null
}
this.titleDOM = title}
className={style['title']}
title={name+sexStr}
>
{name+sexStr}
})
this.handleDelIconMouseEnter()}
onMouseLeave={() => this.handleDelIconMouseLeave()}
onClick={(e) => this.handleTemplateDel(e)}
/>
this.handleContentClick(e,sex)}>引用
})
this.handleEditIconMouseEnter()}
onMouseLeave={() => this.handleEditIconMouseLeave()}
onClick={(e) => this.handleEditIconClick(e,name)}
/>
this.content = content}
className={style.content}
title={this.title}
style={this.getContentStyle()}
>
{
previewJson?
:
暂无数据
}
)
}
componentDidUpdate() {
this.isAnimate = false;
}
componentWillUnmount() {
clearTimeout(this.timer);
}
}
export default TemplateItem;
TemplateItem.propTypes = {
id: PropTypes.string,
title: PropTypes.string,
content: PropTypes.arrayOf(PropTypes.string),
handleContentClick: PropTypes.func,
handleTemplateDel: PropTypes.func,
handleTitleChange: PropTypes.func
};