| | |
| | | config: null, |
| | | urlParam: null, |
| | | visible: false, |
| | | rePos: false, |
| | | auto: true |
| | | } |
| | | |
| | |
| | | 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 |
| | | }) |
| | |
| | | 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}) |
| | | }) |
| | | } |
| | | |
| | |
| | | </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}> |
| | |
| | | } |
| | | |
| | | 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} |