From 613d7ada2c5a89d21fdaa4a92f914c27b06f171b Mon Sep 17 00:00:00 2001 From: king <18310653075@163.com> Date: 星期三, 09 八月 2023 11:43:32 +0800 Subject: [PATCH] Merge branch 'develop' --- src/views/billprint/index.jsx | 173 +++++++++++++++++++++++++++++++-------------------------- 1 files changed, 93 insertions(+), 80 deletions(-) diff --git a/src/views/billprint/index.jsx b/src/views/billprint/index.jsx index 3321ff8..7d9d55d 100644 --- a/src/views/billprint/index.jsx +++ b/src/views/billprint/index.jsx @@ -41,6 +41,7 @@ config: null, urlParam: null, visible: false, + rePos: false, auto: true } @@ -691,20 +692,30 @@ let _results = results.filter(Boolean) let comps = components.map(item => { + item.wrap = item.wrap || {} + item.data = null + if (!item.format) return item + + if ((item.subtype === 'datacard' && item.wrap.layout !== 'flex') || item.type === 'table') { + item.$page = true + } _results.forEach(res => { if (res.componentId === item.uuid && res.data) { - item.data = res.data item.dataArray = fromJS(res.data).toJS() } else if (res.componentId === 'union' && res[item.dataName]) { - item.data = res[item.dataName] - if (!Array.isArray(item.data)) { - item.data = [item.data] + let data = res[item.dataName] + if (!Array.isArray(data)) { + data = [data] } - item.dataArray = fromJS(item.data).toJS() + item.dataArray = fromJS(data).toJS() } }) + + if (item.$page && !item.dataArray) { + item.$page = false + } return item }) @@ -729,97 +740,93 @@ let page = [] let count = 0 let _pageover = false - let pagesover = false - comps.forEach((_item, index) => { - let item = fromJS(_item).toJS() + comps.forEach(comp => { + let item = fromJS(comp).toJS() - if (index + 1 >= length && !_pageover) { - pagesover = true - } - - if (item.wrap && item.wrap.printType === 'headerOrfooter') { // 椤电湁椤佃剼 + if (item.wrap.printType === 'headerOrfooter') { // 椤电湁椤佃剼 + item.data = item.dataArray || null setData(item) page.push(item) - } else if (_pageover) { - return - } else if (item.subtype === 'datacard' || item.type === 'table') { - if (_item.dataArray && _item.dataArray.length > 0) { - if (item.subtype === 'datacard' && item.wrap.layout === 'flex') { - if (!item.added && item.wrap.printHeight) { - count += item.wrap.printHeight - if (count >= limit) { - _pageover = true - } - if (count <= limit) { - _item.added = true - setData(item) - page.push(item) - } - } else if (!item.added) { - _item.added = true - setData(item) - page.push(item) - } - } else { - item.data = [] - - while (count + 1 <= limit && _item.dataArray.length > 0) { - item.data.push(_item.dataArray.shift()) - count++ - } - - if (count >= limit) { - _pageover = true - } else if (_item.dataArray.length > 0) { - _pageover = true + comp.added = true + } - } + if (_pageover) return - setData(item) - page.push(item) - } - _item.added = true - } else if (!item.added) { - _item.added = true - setData(item) - page.push(item) - } - } else if (!item.added && item.wrap && item.wrap.printHeight) { - if (item.wrap.empty === 'hidden' && (!item.data || item.data.length === 0)) { - _item.added = true - return + if (item.$page && comp.dataArray.length > 0) { + item.data = [] + + while (count + 1 <= limit && comp.dataArray.length > 0) { + item.data.push(comp.dataArray.shift()) + count++ } - count += item.wrap.printHeight - if (count >= limit) { + if (count >= limit || comp.dataArray.length > 0) { _pageover = true } - if (count <= limit) { - _item.added = true - setData(item) - page.push(item) + + if (comp.dataArray.length === 0) { + comp.added = true } - } else if (!item.added) { - _item.added = true + setData(item) page.push(item) - } - - if (index + 1 >= length && !_pageover) { - pagesover = true + } else if (!comp.added) { + if (item.wrap.printHeight) { + count += item.wrap.printHeight + if (count >= limit) { + _pageover = true + return + } + } + + item.data = item.dataArray || null + + setData(item) + page.push(item) + comp.added = true } }) pages.push(page) pageIndex++ - if (pageIndex >= 2000 || pagesover) { + if (pageIndex >= 2000 || comps.findIndex(comp => !comp.added) === -1) { over = true } } - this.setState({loadingview: false, pages}) + let total = pages.length + let date = moment().format('YYYY-MM-DD') + let datetime = moment().format('YYYY-MM-DD HH:mm:ss') + let rePos = false + + pages.forEach((page, index) => { + page.forEach(item => { + if (item.wrap.printType === 'headerOrfooter') { // 椤电湁椤佃剼 + if (item.type === 'balcony') { + if (item.style.position === 'absolute') { + rePos = true + } + item.elements.forEach(cell => { + if (cell.eleType === 'text' && cell.datatype === 'static') { + cell.value = cell.value.replace(/@total@/ig, total).replace(/@pageIndex@/ig, index + 1).replace(/@date@/ig, date).replace(/@datetime@/ig, datetime) + } + }) + } else if (item.subtype === 'propcard') { + item.subcards.forEach(card => { + card.elements.forEach(cell => { + if (cell.eleType === 'text' && cell.datatype === 'static') { + cell.value = cell.value.replace(/@total@/ig, total).replace(/@pageIndex@/ig, index + 1).replace(/@date@/ig, date).replace(/@datetime@/ig, datetime) + } + }) + }) + } + } + }) + }) + + this.setState({loadingview: false, pages, rePos}) }) } @@ -989,11 +996,17 @@ </Col> ) } else if (item.type === 'balcony') { - return ( - <Col span={item.width} style={style} key={item.uuid}> - <Balcony config={item}/> - </Col> - ) + if (item.wrap.printType === 'headerOrfooter' && item.style.position === 'absolute') { + return ( + <Balcony key={item.uuid} config={item}/> + ) + } else { + return ( + <Col span={item.width} style={style} key={item.uuid}> + <Balcony config={item}/> + </Col> + ) + } } else if (item.type === 'timeline') { return ( <Col span={item.width} style={style} key={item.uuid}> @@ -1025,13 +1038,13 @@ } render() { - const { loadingview, viewlost, config, pages, auto } = this.state + const { loadingview, viewlost, config, pages, auto, rePos } = this.state return ( <div className="bill-print-wrap" > {loadingview && <Spin size="large" />} {pages ? <div id="bill-print"> - {pages.map((components, index) => (<div className={'print-page' + (auto ? ' auto' : '')} key={index} style={{...config.style, overflow: 'hidden', boxSizing: 'border-box'}}><Row className="component-wrap">{this.getComponents(components)}</Row></div>))} + {pages.map((components, index) => (<div className={'print-page' + (auto ? ' auto' : '') + (rePos ? ' reset-position' : '')} key={index} style={{...config.style, overflow: 'hidden', boxSizing: 'border-box'}}><Row className="component-wrap">{this.getComponents(components)}</Row></div>))} </div> : null} {viewlost ? <NotFount msg={this.state.lostmsg} /> : null} {config && window.GLOB.breakpoint ? <DebugTable /> : null} -- Gitblit v1.8.0