/** * * 一站式请勿使用此组件 * 2020年5月9日 拖拽组件 * 钟是志 * 黔南的 录取通知书打印 位置设置 * */ import React, { Fragment, Component } from 'react'; import styles from './index.less'; import ButtonDiy from '@/baseComponent/ButtonDiy'; import Shell from '@/baseComponent/Shell'; import { ModalConfirm } from '@/baseComponent/Modal'; export default class FormatSetting extends Component { dragEventList = () => { const { updateFormatSettingObject } = this.props; let draggedRef = null; document.addEventListener( 'dragstart', function(event) { // 保存拖动元素的引用(ref.) draggedRef = event.target; // 使其半透明 event.target.style.opacity = 0.5; }, false, ); document.addEventListener( 'dragend', function(event) { // 重置透明度 event.target.style.opacity = ''; }, false, ); /* 放下目标节点时触发事件 */ document.addEventListener( 'dragover', function(event) { // 阻止默认动作 event.preventDefault(); }, false, ); document.addEventListener( 'drop', function(event) { // 阻止默认动作(如打开一些元素的链接) event.preventDefault(); // 将拖动的元素到所选择的放置目标节点中 if (event.target.id === 'dropZone') { const left = event.offsetX; if (left > event.target.width - draggedRef.offsetWidth - 10) { console.log('拖拽到了图片区域外部,不能进行拖拽'); return false; } const top = event.offsetY; updateFormatSettingObject(draggedRef.id, left, top); draggedRef.style.left = left; // `${left}px`; draggedRef.style.top = top; // `${top}px`; } }, false, ); }; componentDidMount() { this.dragEventList(); } initConfig = () => { ModalConfirm('您确定初始化打印录取通知书格式吗?', { onOk: () => { this.props.initConfig(); }, }); }; render() { const { bgImage, formatSettingObject, saveConfig } = this.props; return ( <Fragment> <Shell styleShell={{ marginTop: '0', marginBottom: '20px' }}> <div style={{ height: '54px', padding: '12px 0 12px 12px' }}> <ButtonDiy name="保存" className="primary" handleClick={saveConfig} /> <ButtonDiy name={'初始化格式'} handleClick={this.initConfig} /> </div> </Shell> <div className={styles.outSideDiv}> <div> <img src={bgImage} id={'dropZone'} draggable={false} className={styles.bgimage} alt={'背景图'} /> {formatSettingObject.map((x, index) => { return ( <div draggable={true} className={styles.inSideItem} key={index} id={x.name} style={x.style}> {x.name} </div> ); })} </div> </div> </Fragment> ); } } /*** * formatSettingObject: { * content_set: { * font: "宋体" isNeedConfig: true key: "JjqCiRYamxs" name: "content_set" size: "12" style: {top: 300, left: 50} title: "--详细内容--" * } * } * * */