import React from 'react'; import logo from '@assets/images/logo.png'; import userImage from '@assets/images/userImage.png'; import { Grid } from 'antd-mobile'; import QRCode from 'qrcode'; import { preload } from 'react-dom'; /** * @刘丹: 医生诊室叫号 */ class DoctorScreen extends React.Component { constructor() { super(); this.state = { pageSize: 5, patList: [], }; } componentDidMount() { //this.getQrcSrc('https://www.kimi.com/'); this.initScroll(); } componentDidUpdate(prev) { if (prev?.userData?.userQrCode != this.props.userData?.userQrCode) { this.getQrcSrc(this.props.userData?.userQrCode); } if (prev.patList != this.props.patList) { this.setPatList(); } } // 初始化滚动 initScroll = () => { const parentDom = document.getElementById('patWrapDoc'); const childDom = document.getElementById('nextDom'); const style = window.getComputedStyle(parentDom); const parentH = parentDom.offsetHeight - parseInt(style.paddingTop) - parseInt(style.paddingBottom); const childH = childDom.children[0].offsetHeight; const pageSize = Math.floor(parentH / childH) - 1; this.setState({ pageSize, }); }; // 滚动设置就诊数据 setPatList = () => { if (this.state.timer) { clearTimeout(this.state.timer); } this.setState({ current: 0, totalPage: Math.ceil(this.props.patList?.length / this.state.pageSize), }, () => { if (this.props.patList?.length <= this.state.pageSize) { this.setState({ patList: this.props.patList, }); } else { const fn = () => { let current = this.state.current + 1; if (current > this.state.totalPage) { current = 1; } const { pageSize } = this.state; this.setState({ current, patList: this.props.patList?.slice((current - 1) * pageSize, current * pageSize), }); // 10s切换 const timer = setTimeout(fn, 6000); this.setState({ timer, }); }; fn(); } }); }; // 链接转二维码链接 getQrcSrc = (src) => { if (!src) { return; } QRCode.toDataURL(src).then((url) => { document.querySelector('#qrccodeimg').src = url; }); }; render() { const { userData = {}, reWaitPat = [] } = this.props; return (