From 813258881f5682ef4a3a02a317e25fa234dacbd4 Mon Sep 17 00:00:00 2001 From: Lei OT Date: Tue, 17 Dec 2024 13:41:42 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20=E5=AF=BC=E5=87=BA=E5=90=88=E5=90=8C:?= =?UTF-8?q?=20=E8=BD=A6=E8=B4=B9,=20=E5=A2=9E=E5=8A=A0=E6=97=B6=E6=AE=B5?= =?UTF-8?q?=E5=88=97,=20=E6=98=BE=E7=A4=BA=E4=BB=B7=E6=A0=BC=E8=A1=8C?= =?UTF-8?q?=E7=9A=84=E6=97=B6=E6=AE=B5=E4=BF=A1=E6=81=AF;=20=E6=99=AF?= =?UTF-8?q?=E7=82=B9=E7=9A=84=E7=BB=91=E5=AE=9A:=20=E4=BB=85=E6=98=BE?= =?UTF-8?q?=E7=A4=BA`=E9=A1=B9=E7=9B=AE=E5=90=8D=E7=A7=B0-=E7=B1=BB?= =?UTF-8?q?=E5=9E=8B`;=20=E5=8C=85=E4=BB=B7:=20=E5=85=A8=E5=B9=B4=E7=9A=84?= =?UTF-8?q?=E6=97=B6=E6=AE=B5=E4=B8=8D=E6=98=BE=E7=A4=BA,=20=E4=B8=8E?= =?UTF-8?q?=E8=BD=A6=E8=B4=B9=E4=B8=80=E6=A0=B7=E6=8C=89=E6=97=B6=E6=AE=B5?= =?UTF-8?q?=E5=88=86=E8=A1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../products/Print/AgencyContract_v1120.jsx | 63 +++++++++++++------ 1 file changed, 44 insertions(+), 19 deletions(-) diff --git a/src/views/products/Print/AgencyContract_v1120.jsx b/src/views/products/Print/AgencyContract_v1120.jsx index 8f792d2..e44188f 100644 --- a/src/views/products/Print/AgencyContract_v1120.jsx +++ b/src/views/products/Print/AgencyContract_v1120.jsx @@ -600,6 +600,7 @@ export default class AgencyContract { const showPSCol = false const defaultUnit = '1' const { dataSource, sizeSets, SSRange, PSRange } = chunkBy(use_year, dataList, chunk_By) + const showRangeCol = PSRange.length > 0; //当前表格的备注信息 const [remarkItem] = this.#remarkList.filter((i) => i.product_type_id == 'J') @@ -615,7 +616,7 @@ export default class AgencyContract { new TableRow({ children: [ tableHeader('项目', 15), - tableHeader('', 15), + ...(showRangeCol ? [tableHeader('', 15)] : []), tableHeader([...SSRange], 30, { columnSpan: setItem.length + 1 }), showPSCol ? tableHeader(['旺季', ...PSRange], 40, { @@ -632,11 +633,11 @@ export default class AgencyContract { verticalAlign: AlignmentType.CENTER, children: [new Paragraph({ text: '' })], }), - new TableCell({ + ...(showRangeCol ? [new TableCell({ borders: tableBorderOne, verticalAlign: AlignmentType.CENTER, children: [new Paragraph({ text: '时段', alignment: 'center' })], - }), + })]: []), ...setItem.map((ss) => { return new TableCell({ borders: tableBorderOne, @@ -648,7 +649,7 @@ export default class AgencyContract { alignment: AlignmentType.CENTER, }), ], - }) + }); }), ...(showPSCol ? setItem.map( @@ -664,7 +665,7 @@ export default class AgencyContract { alignment: AlignmentType.CENTER, }), ], - }), + }) ) : []), ], @@ -678,13 +679,14 @@ export default class AgencyContract { withSize: false, defaultUnit, withSeason: showPSCol, - }), - ) + showRangeCol, + }) + ); }, []), //备注行 this.createTable_Memo(1 + setItem.length * 2, remarkItem.Memo.split(`\n`)), ], - }) + }); rt.push(subTable) rt.push(new Paragraph({ text: `` })) return rt @@ -700,6 +702,7 @@ export default class AgencyContract { const showPSCol = false const defaultUnit = '1' const { dataSource, sizeSets, SSRange, PSRange } = chunkBy(use_year, dataList, chunk_By) + const showRangeCol = PSRange.length > 0; // console.log(sizeSets, dataSource) //当前表格的备注信息 const [remarkItem] = this.#remarkList.filter((i) => i.product_type_id == 'D') @@ -716,6 +719,7 @@ export default class AgencyContract { new TableRow({ children: [ tableHeader('项目', 20), + ...(showRangeCol ? [tableHeader('', 15)] : []), tableHeader([...SSRange], 40, { columnSpan: setItem.length }), showPSCol ? tableHeader(['旺季', ...PSRange], 40, { @@ -731,6 +735,11 @@ export default class AgencyContract { verticalAlign: AlignmentType.CENTER, children: [new Paragraph({ text: '' })], }), + ...(showRangeCol ? [new TableCell({ + borders: tableBorderOne, + verticalAlign: AlignmentType.CENTER, + children: [new Paragraph({ text: '时段', alignment: 'center' })], + })]: []), ...setItem.map( (ss) => new TableCell({ @@ -768,10 +777,11 @@ export default class AgencyContract { .reduce( (acc, row, ri) => acc.concat( - this.createDetailRowSize_D(setItem, row, ri, { + this.createDetailRowSize_J(setItem, row, ri, { withSize: false, defaultUnit, withSeason: showPSCol, + showRangeCol, }), ), [], @@ -850,7 +860,7 @@ export default class AgencyContract { const thisE = new Paragraph({ children: [ new TextRun({ - text: `${extra.info.city_name}-${extra.info.product_title}-${extra.info.product_type_name}`, + text: `${extra.info.product_title}-${extra.info.product_type_name}`, bold: true, }), ], @@ -1086,7 +1096,7 @@ export default class AgencyContract { sizeSets, rowp, ii, - { withSeason = false, withSize = true, infoCol = () => {}, extraCol = () => {}, defaultUnit = '0' } = {}, + { withSeason = false, withSize = true, showRangeCol=true, infoCol = () => {}, extraCol = () => {}, defaultUnit = '0' } = {}, ) { const sizeCol = sizeSets.map((ss) => ss.join('-')) @@ -1137,13 +1147,13 @@ export default class AgencyContract { children: [ new Paragraph({ text: index == 0 ? `${rowp?.info?.product_title}` : '', - alignment: AlignmentType.CENTER, + alignment: AlignmentType.LEFT, }), ], }), ] : []), - new TableCell({ + ...(showRangeCol ? [new TableCell({ borders: tableBorderOne, verticalAlign: AlignmentType.CENTER, children: [ @@ -1152,7 +1162,7 @@ export default class AgencyContract { alignment: AlignmentType.CENTER, }), ], - }), + })] : []), infoCol(rowp), ...arr.map((quoteItem) => { return new TableCell({ @@ -1209,6 +1219,21 @@ export default class AgencyContract { ) { const sizeCol = sizeSets.map((ss) => ss.join('-')) + const ranges = rowp['quotation'].map((i) => + Object.assign(i, { + range: ((quote_season) => { + const range = `${dayjs(i.use_dates_start).format('M-D').replace(/-/gi, '.')}-${dayjs(i.use_dates_end) + .format('M-D') + .replace(/-/gi, '.')}` + if (quote_season == 'SS') return `平季(除特殊时段以外)` + else return `特殊时段(${range})` + })(i.quote_season), + }), + ) + + //每个项目(产品)有多少个行(不同的时间段) + const product_rows = [...new Map(ranges.map((item) => [item.range, item])).values()] + //默认时间 全年 const firstDayOfYear = dayjs().startOf('year').format('YYYY-MM-DD') const lastDayOfYear = dayjs().endOf('year').format('YYYY-MM-DD') @@ -1237,7 +1262,7 @@ export default class AgencyContract { ...subItems.reduce((acc, quoteItem, index) => { const start = dayjs(quoteItem.use_dates_start).format('M-D').replace('-', '.') const end = dayjs(quoteItem.use_dates_end).format('M-D').replace('-', '.') - + const year = dayjs(quoteItem.use_dates_start).year() return acc.concat( ...[ new Paragraph({ @@ -1248,7 +1273,7 @@ export default class AgencyContract { ? `${quoteItem.group_size_min}-${quoteItem.group_size_max}人,${quoteItem.unit_name}, ${quoteItem.adult_cost}` : `${quoteItem.adult_cost}`, }), - ...(quoteItem.use_dates_start != firstDayOfYear && quoteItem.use_dates_end != lastDayOfYear + ...( !isFullYearOrLonger(year, quoteItem.use_dates_start, quoteItem.use_dates_end) ? [ new Paragraph({ alignment: AlignmentType.CENTER, @@ -1362,7 +1387,7 @@ export default class AgencyContract { } createDetailRowSeason2(rowp, ii, { withSize = true, defaultUnit = '0', extraCol = () => {} } = {}) { - console.log(rowp); + // console.log(rowp); return [ new TableRow({ children: [ @@ -1384,11 +1409,11 @@ export default class AgencyContract { verticalAlign: AlignmentType.CENTER, children: [ ...(rowp.quote_chunk['SS'] || []).map( - (quoteItem, ii) => + (quoteItem, ii, _arr) => new Paragraph({ alignment: AlignmentType.CENTER, text: - (withSize && String(quoteItem.unit_id) !== defaultUnit + (withSize && (String(quoteItem.unit_id) !== defaultUnit || _arr.length > 1) ? `${quoteItem.group_size_min}-${quoteItem.group_size_max}人,${quoteItem.unit_name},` : '') + `${quoteItem.adult_cost}`, }),