import React, { useRef, memo, useMemo, useContext, useState, useEffect } from 'react'; import { Form } from '@ant-design/compatible'; import '@ant-design/compatible/assets/index.css'; import { Button, Input, Modal, Select, Upload, Tooltip, Badge, Popover } from 'antd'; import { ArrowLeftOutlined, MobileOutlined, DownloadOutlined, CopyOutlined, DeleteOutlined, UndoOutlined, RedoOutlined, FileAddOutlined, CodeOutlined, SketchOutlined, UploadOutlined, InstagramOutlined, } from '@ant-design/icons'; import { history } from 'umi'; import QRCode from 'qrcode.react'; import { saveAs } from 'file-saver'; import req from 'utils/request'; import styles from './index.less'; import { dooringContext } from '../../../../layouts'; import MyPopover from 'yh-react-popover'; import PageForm from './PageForm'; const { confirm } = Modal; const isDev = process.env.NODE_ENV === 'development'; interface HeaderComponentProps { pointData: any; location: any; clearData: any; undohandler: any; redohandler: any; importTpl: any; __pageConfig: any; dispatch: any; savePage: any; isNewPage: boolean; } const HeaderComponent = memo((props: HeaderComponentProps) => { const { isNewPage, pointData, location, clearData, undohandler, redohandler, importTpl, __pageConfig, dispatch, savePage } = props; const [showModalIframe, setShowModalIframe] = useState(false); const [showFaceModal, setShowFaceModal] = useState(false); const [faceUrl, setFaceUrl] = useState(''); const iptRef = useRef(null); const toPreview = () => { localStorage.setItem('pointData', JSON.stringify(pointData)); savePreview(); setTimeout(() => { window.open( isDev ? `/preview?tid=${props.location.query.tid}` : `/preview?tid=${props.location.query.tid}`, ); }, 600); }; const toOnlineCoding = () => { window.open('/ide'); }; const toVipLogin = () => { window.open('/login'); }; const content = () => { const { tid } = location.query || ''; return ( ); }; const handleSaveTpl = () => { confirm({ title: '确定要保存吗?', content: (
模版名称:
封面设置:
访问链接:
), okText: '保存', cancelText: '取消', onOk() { let name = iptRef.current!.state.value; req.post('/visible/tpl/save', { name, tpl: pointData }).then(res => { console.log(res); }); }, onCancel() { console.log('Cancel'); }, }); }; const useTemplate = () => { Modal.info({ title: '该功能正在升级,可以关注下方公众号实时查看动态', content: (
), okText: '客官知道啦', }); }; const downLoadJson = () => { const jsonStr = JSON.stringify(pointData); console.log(jsonStr, 'jsonStr') const blob = new Blob([jsonStr], { type: 'text/plain;charset=utf-8' }); saveAs(blob, 'template.json'); }; const toLogin = () => { const { tid } = props.location.query || ''; window.location.href = `/h5_plus/login?tid=${tid}`; }; const deleteAll = () => { Modal.confirm({ title: '确认清空画布?', okText: '确认', cancelText: '取消', onOk() { clearData(); }, }); }; const toHelp = () => { window.open('/help'); }; const toBack = () => { history.push('/'); }; const newPage = () => { let prev = localStorage.getItem('myH5'); try { localStorage.setItem( 'myH5', JSON.stringify(prev ? [...Array.from(prev), pointData] : [pointData]), ); } catch (err) { console.error(err); } clearData(); }; const savePreview = () => { const { tid } = props.location.query || ''; req.post('/visible/preview', { tid, tpl: pointData }); }; const handleSaveCode = () => { Modal.confirm({ title: '确定要下载吗? 每人每天只能下载2次哦~', okText: '确定', cancelText: '取消', onOk() { // 未来的下载代码逻辑 }, }); }; useEffect(() => { // 定义截图子页面句柄函数 window.getFaceUrl = url => { setFaceUrl(url); setShowModalIframe(false); }; }, []); const uploadprops = useMemo( () => ({ name: 'file', showUploadList: false, beforeUpload(file, fileList) { // 解析并提取excel数据 let reader = new FileReader(); reader.onload = function (e: Event) { let data = (e as any).target.result; importTpl && importTpl(JSON.parse(data)); }; reader.readAsText(file); }, }), [], ); const generatePoster = () => { localStorage.setItem('pointData', JSON.stringify(pointData)); setShowModalIframe(true); setTimeout(() => { setShowFaceModal(true); }, 3600); }; const handleReloadPage = () => { document.getElementById('previewPage').contentWindow.location.reload(); }; const { setTheme } = useContext(dooringContext); const onSave = (values, flag) => { dispatch({ type: 'editorTempModal/updateState', payload: { pageConfig: values } }) if (flag) { dispatch({ type: 'editorTempModal/updateState', payload: { __pageConfig: values } }) } } return (
{/*
*/}
{/* */} {/* */} {/* */} {/* */} {/* */} {/* */} {isNewPage && } {isNewPage && } {isNewPage && } {/* */} {/* */} {/**/} {/* 帮助*/} {/**/}
{/* 隐藏pc端切换, 保证代码纯粹 */} {/* */} {isNewPage && } trigger="click"> }
} destroyOnClose={true} onCancel={handleReloadPage} maskClosable={false} > setShowFaceModal(false)} >
); }); export default HeaderComponent;