diff --git a/src/hooks/useProductsQuotationFormat.js b/src/hooks/useProductsQuotationFormat.js index 9896c2e..ed8321b 100644 --- a/src/hooks/useProductsQuotationFormat.js +++ b/src/hooks/useProductsQuotationFormat.js @@ -1,6 +1,7 @@ import { flush, groupBy, isEmpty, isNotEmpty, pick, unique, uniqWith } from '@/utils/commons'; import dayjs from 'dayjs'; import { formatGroupSize } from './useProductsSets'; + // Shoulder Season 平季; peak season 旺季 export const isFullYearOrLonger = (year, startDate, endDate) => { // Parse the dates @@ -21,17 +22,21 @@ export const isFullYearOrLonger = (year, startDate, endDate) => { return isFullYear || isLongerThanYear || isLongerThan12M; }; -const uniqueBySub = (arr) => - arr.filter((subArr1, _, self) => { - return !self.some((subArr2) => { - if (subArr1 === subArr2) return false; // don't compare a subarray with itself - const set1 = new Set(subArr1); - const set2 = new Set(subArr2); - // check if subArr1 is a subset of subArr2 - return [...set1].every((value) => set2.has(value)); +const uniqueBySub = (arr) => { + const sortedArr = arr.sort((a, b) => b.length - a.length); + const uniqueArr = []; + sortedArr.forEach((currentSubArr) => { + const isSubsetOfUnique = uniqueArr.some((uniqueSubArr) => { + return currentSubArr.every((item) => uniqueSubArr.includes(item)); }); + if (!isSubsetOfUnique) { + uniqueArr.push(currentSubArr); + } }); + return uniqueArr; +} + export const chunkBy = (use_year, dataList = [], by = []) => { const dataRollSS = dataList.map((rowp, ii) => { const quotation = rowp.quotation.map((quoteItem) => { @@ -77,8 +82,8 @@ export const chunkBy = (use_year, dataList = [], by = []) => { // 补全产品旺季的人等分组 (当旺季和平季的人等不完全一致时) for (const WPI in PGroupSizeSS) { if (Object.prototype.hasOwnProperty.call(PGroupSizeSS, WPI)) { - const element = PGroupSizeSS[WPI]; - const elementP = PGroupSizePS[WPI]; + const element = PGroupSizeSS[WPI] || []; + const elementP = PGroupSizePS[WPI] || []; const diff = (elementP || []).filter((ele, index) => !element.includes(ele)); PGroupSizeSS[WPI] = element.concat(diff); } @@ -148,6 +153,8 @@ export const chunkBy = (use_year, dataList = [], by = []) => { const _quotation = rowp.quotation.map((quoteItem) => { quoteItem.quote_size = pkey; quoteItem.quote_col_key = formatGroupSize(quoteItem.group_size_min, quoteItem.group_size_max); + quoteItem.use_dates_start = quoteItem.use_dates_start.replace(/-/g, '.'); + quoteItem.use_dates_end = quoteItem.use_dates_end.replace(/-/g, '.'); return quoteItem; }); const quote_chunk_flat = groupBy(_quotation, (quoteItem2) => by.map((key) => quoteItem2[key]).join('@') || '#'); diff --git a/src/views/products/Print/AgencyContract.jsx b/src/views/products/Print/AgencyContract.jsx index 47acadf..450e39c 100644 --- a/src/views/products/Print/AgencyContract.jsx +++ b/src/views/products/Print/AgencyContract.jsx @@ -444,7 +444,7 @@ export default class AgencyContract { new TableCell({ borders: tableBorderOne, verticalAlign: AlignmentType.CENTER, - children: [new Paragraph({ text: `${row.info?.km || '0'}`, alignment: AlignmentType.CENTER, })], + children: [new Paragraph({ text: `${row.info?.km ?? ''}`, alignment: AlignmentType.CENTER, })], }), ...cols.map( (ss) => @@ -550,7 +550,7 @@ export default class AgencyContract { ? row.rowSpan > 1 ? ['平季', '(除特殊时段外)'].map((str) => new Paragraph({ text: str, alignment: AlignmentType.LEFT })) : [new Paragraph({ text: '' })] - : ['特殊时段', `${row.use_dates_start.replace(`${use_year}-`, '')}~${row.use_dates_end.replace(`${use_year}-`, '')}`].map( + : ['特殊时段', `${row.use_dates_start.replace(`${use_year}.`, '')}~${row.use_dates_end.replace(`${use_year}.`, '')}`].map( (str) => new Paragraph({ text: str, alignment: AlignmentType.LEFT }) )), ], @@ -667,7 +667,7 @@ export default class AgencyContract { ? row.rowSpan > 1 ? ['平季', '(除特殊时段外)'].map((str) => new Paragraph({ text: str, alignment: AlignmentType.LEFT })) : [new Paragraph({ text: '' })] - : ['特殊时段', `${row.use_dates_start.replace(`${use_year}-`, '')}~${row.use_dates_end.replace(`${use_year}-`, '')}`].map( + : ['特殊时段', `${row.use_dates_start.replace(`${use_year}.`, '')}~${row.use_dates_end.replace(`${use_year}.`, '')}`].map( (str) => new Paragraph({ text: str, alignment: AlignmentType.LEFT }) )), ], @@ -810,7 +810,7 @@ export default class AgencyContract { borders: ii !== _arr.length - 1 ? tableBorderInner : tableBorderInnerR, width: { size: 2400, type: WidthType.DXA }, verticalAlign: AlignmentType.CENTER, - children: quoteItem.rows.map(d => new Paragraph({ alignment: AlignmentType.LEFT, text: `${d.use_dates_start.replace(`${use_year}-`, '')}~${d.use_dates_end.replace(`${use_year}-`, '')}` })), + children: quoteItem.rows.map(d => new Paragraph({ alignment: AlignmentType.LEFT, text: `${d.use_dates_start.replace(`${use_year}.`, '')}~${d.use_dates_end.replace(`${use_year}.`, '')}` })), }), new TableCell({ borders: ii !== _arr.length - 1 ? tableBorderInnerB : tableBorderNone, @@ -953,7 +953,7 @@ export default class AgencyContract { (d) => new Paragraph({ alignment: AlignmentType.LEFT, - text: `${d.use_dates_start.replace(`${use_year}-`, '')}~${d.use_dates_end.replace(`${use_year}-`, '')}`, + text: `${d.use_dates_start.replace(`${use_year}.`, '')}~${d.use_dates_end.replace(`${use_year}.`, '')}`, }) ), }), diff --git a/src/views/products/Print/AgencyPreview.jsx b/src/views/products/Print/AgencyPreview.jsx index 993e75c..e3e7337 100644 --- a/src/views/products/Print/AgencyPreview.jsx +++ b/src/views/products/Print/AgencyPreview.jsx @@ -9,7 +9,7 @@ import { groupBy } from '@/utils/commons'; const AgencyPreview = ({ params, ...props }) => { const { t } = useTranslation(); - const { travel_agency_id, use_year, audit_state } = useParams(); + const { travel_agency_id, use_year } = params; const productsTypes = useProductsTypes(); const [agencyProducts] = useProductsStore((state) => [state.agencyProducts]); @@ -78,7 +78,7 @@ const AgencyPreview = ({ params, ...props }) => { // className='mt-4' columns={[ { - title: '项目', + title: '综费项目', dataIndex: ['info', 'product_title'], key: 'product_title', width: '12rem', @@ -128,7 +128,7 @@ const AgencyPreview = ({ params, ...props }) => { rowClassName={cityRowHighlights} columns={[ { - title: '项目', + title: '超公里项目', dataIndex: ['info', 'product_title'], key: 'product_title', width: '12rem', maxWidth: '12rem', className: 'max-w-48', @@ -161,7 +161,7 @@ const AgencyPreview = ({ params, ...props }) => {