From 83592b5c2dcbfd0a91d36dfa89f1a6cbe95ab1d1 Mon Sep 17 00:00:00 2001 From: king <18310653075@163.com> Date: 星期四, 27 十月 2022 15:22:01 +0800 Subject: [PATCH] 2022-10-27 --- src/views/billprint/index.jsx | 76 +++++++++++++++++++++++++++++++++++++ 1 files changed, 75 insertions(+), 1 deletions(-) diff --git a/src/views/billprint/index.jsx b/src/views/billprint/index.jsx index 4d32fa7..aaf2548 100644 --- a/src/views/billprint/index.jsx +++ b/src/views/billprint/index.jsx @@ -26,6 +26,7 @@ const SandBox = asyncComponent(() => import('@/tabviews/custom/components/code/sand-box')) const TimeLine = asyncComponent(() => import('@/tabviews/custom/components/timeline/normal-timeline')) const Balcony = asyncComponent(() => import('@/tabviews/custom/components/card/balcony')) +const DebugTable = asyncComponent(() => import('@/tabviews/debugtable')) class BillPrint extends Component { state = { @@ -38,6 +39,7 @@ tempId: '', config: null, urlParam: null, + visible: false, auto: true } @@ -78,6 +80,53 @@ return !is(fromJS(this.state), fromJS(nextState)) } + componentDidMount() { + const _this = this + + Object.defineProperty(window, 'debug', { + configurable: true, + enumerable: true, + set(value) { + if (value + '' === 'false') { + window.debugger = false + window.GLOB.breakpoint = false + sessionStorage.removeItem('breakpoint') + } else { + window.debugger = true + window.GLOB.breakpoint = value + '' + sessionStorage.setItem('breakpoint', value) + } + _this.debugChange() + } + }) + + document.onkeydown = (event) => { + let e = event || window.event + let keyCode = e.keyCode || e.which || e.charCode + let preKey = '' + + if (e.ctrlKey) { + preKey = 'ctrl' + } else if (e.shiftKey) { + preKey = 'shift' + } else if (e.altKey) { + preKey = 'alt' + } + + if (!preKey || !keyCode) return + + let _shortcut = `${preKey}+${keyCode}` + + if (window.GLOB.breakpoint && _shortcut === 'ctrl+67') { + window.debugger = false + window.GLOB.breakpoint = false + sessionStorage.removeItem('breakpoint') + + _this.debugChange() + } + } + } + /** * @description 缁勪欢閿�姣侊紝娓呴櫎state鏇存柊 */ @@ -85,6 +134,10 @@ this.setState = () => { return } + } + + debugChange = () => { + this.setState({visible: !this.state.visible}) } getTouristMsg = () => { @@ -633,10 +686,30 @@ }) } + canvasToImage(canvas) { + let image = new Image() + image.src = canvas.toDataURL('image/jpg') + image.style = 'width:100%;height:100%;position:absolute;z-index:1;left:0px;top:0px;' + return image + } + print = () => { const { config, printing } = this.state - + if (printing) return + + let qrcodes = document.getElementsByClassName('qrcode-box') + + for (let i = 0; i < qrcodes.length; i++) { + let canvas = qrcodes[i].getElementsByTagName('canvas')[0] + + if (canvas) { + let img = this.canvasToImage(canvas) + + canvas.remove() + qrcodes[i].append(img) + } + } let jubuData = document.getElementById('bill-print').innerHTML @@ -770,6 +843,7 @@ {pages.map((components, index) => (<div className={'print-page' + (auto ? ' auto' : '')} key={index} style={{...config.style, overflow: 'hidden', boxSizing: 'border-box'}}><Row>{this.getComponents(components)}</Row></div>))} </div> : null} {viewlost ? <NotFount msg={this.state.lostmsg} /> : null} + {config && window.GLOB.breakpoint ? <DebugTable /> : null} {pages && !loadingview && !viewlost ? <div className="print-button"><Button icon="printer" size="large" shape="circle" onClick={this.print}></Button></div> : null} {!loadingview && !viewlost ? <div className="refresh-button"><Button icon="reload" size="large" shape="circle" onClick={this.reload}></Button></div> : null} </div> -- Gitblit v1.8.0