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 (
Logo { e.target.src = `${logo}`; }} /> 接诊中
Opening
{userData.roomDesc || '诊区'}
{userData.locDesc || '科室'}
{userData.userDesc || '医生'}
{userData.userTitleDesc || '职称'}
{userData.userIntroduce || '医生简介:暂无'}
扫码关注医师
候诊
{this.state.patList?.map((item,index) => { return (
{item.patName || '***'} { item.patCallNo }
{item.status == 'waiting' ? '候诊' : '正在就诊' }
); })}
看报告
{reWaitPat.map((item, index) => { return (
{item.patName || '***'} {item.patCallNo}
); })}
请按显示信息排队就诊,看报告请到报道机或护士站报到!
); } } export default DoctorScreen;