- {/* 入口选择弹窗 */}
-
setModeSelectionVisible(false)}
- maskClosable={false}
- >
-
-
chooseMode('generate')}
- >
- 生成流程日期
- 基于业务数据计算并生成节点时间线
-
-
-
-
-
chooseMode('adjust')}
- >
- 调整流程日期
- 读取货期记录,精确还原时间线
-
-
-
-
-
chooseMode('batch')}
- >
- 批量生成
- 批量生成多条流程记录
-
-
-
-
-
-
-
- {mode === 'generate' && (
-
-
- 数据查询工具
-
- 基于业务数据计算并生成节点时间线
-
- )}
- {mode === 'batch' && (
-
-
- 批量生成工具
-
- 批量生成多条流程记录,提高工作效率
-
- )}
- {mode === 'adjust' && (
-
-
- 调整流程日期
-
- 读取货期记录,精确还原时间线
-
- )}
- {/* 功能入口切换与调整入口 */}
- {mode !== null && (
-
-
-
-
- )}
-
- {/* 时效计算结果模态框 */}
-
{
- setTimelineVisible(false);
- setTimelineAdjustments({}); // 关闭时重置调整
- setDeliveryMarginDeductions(0); // 关闭时重置交期余量扣减
- setCompletionDateAdjustment(0); // 关闭时重置最后流程完成日期调整
- }}
- footer={
-
-
- 缓冲期(天):
- {
- const n = Number(val);
- setBaseBufferDays(Number.isFinite(n) && n >= 0 ? n : 0);
- }}
- style={{ width: 90 }}
- />
-
-
-
-
- }
- width={900}
- >
-
- {timelineResults.length === 0 ? (
-
- 未找到匹配的时效数据
-
- ) : (
-
-
- 起始时间
- {
- setStartTime(date);
- }}
- type="dateTime"
- format="yyyy-MM-dd HH:mm"
- />
-
- {timelineResults.map((result, index) => {
- const adjustment = timelineAdjustments[index] || 0;
- const baseValue = (typeof result.timelineValue === 'number')
- ? result.timelineValue
- : (typeof result.adjustedTimelineValue === 'number')
- ? result.adjustedTimelineValue
- : 0;
- const adjustedValue = baseValue + adjustment;
-
- // 检查是否为周转周期节点
- const isTurnoverNode = result.nodeName === '周转周期';
-
- // 检查是否存在周转周期为零的情况
- const hasTurnoverNodeWithZero = timelineResults.some((r, i) => {
- if (r.nodeName === '周转周期') {
- const adj = timelineAdjustments[i] || 0;
- const baseVal = (typeof r.timelineValue === 'number')
- ? r.timelineValue
- : (typeof r.adjustedTimelineValue === 'number')
- ? r.adjustedTimelineValue
- : 0;
- return (baseVal + adj) === 0;
- }
- return false;
- });
-
- // 当前节点是否为零值的周转周期节点
- const isCurrentTurnoverZero = isTurnoverNode && adjustedValue === 0;
-
- // 计算动态缓冲期,用于限制节点增加操作
- const totalAdjustments = Object.values(timelineAdjustments).reduce((sum, adj) => sum + adj, 0);
- const baseBuferDays = baseBufferDays;
- const dynamicBufferDays = Math.max(0, baseBuferDays - totalAdjustments);
-
- // 新的复合限制逻辑:
- // 1. 如果缓冲期 > 0,允许操作
- // 2. 如果缓冲期 = 0,进一步判断交期余量
- // 3. 如果缓冲期 = 0 且交期余量 <= 0,禁止操作
- let hasNegativeBuffer = false;
-
- // 计算交期余量(仅用于显示,不用于限制)
- let deliveryMargin = 0;
- if (timelineResults.length > 0) {
- // 获取有效的最后流程完成日期(与交期余量计算逻辑保持一致)
- let effectiveLastProcess = null;
- let lastCompletionDate = null;
-
- for (let i = timelineResults.length - 1; i >= 0; i--) {
- const process = timelineResults[i];
- const processDate = new Date(process.estimatedEnd);
-
- if (!isNaN(processDate.getTime()) && process.estimatedEnd !== '时效值为0') {
- effectiveLastProcess = process;
- lastCompletionDate = processDate;
- break;
- }
- }
-
- if (!effectiveLastProcess) {
- effectiveLastProcess = timelineResults[timelineResults.length - 1];
- lastCompletionDate = new Date(effectiveLastProcess.estimatedEnd);
- }
-
- // 计算最后完成日期(考虑调整)+ 动态缓冲期
- const adjustedCompletionDate = new Date(lastCompletionDate);
- adjustedCompletionDate.setDate(adjustedCompletionDate.getDate() + completionDateAdjustment);
-
- const deliveryDate = new Date(adjustedCompletionDate);
- deliveryDate.setDate(deliveryDate.getDate() + dynamicBufferDays);
-
- if (expectedDate) {
- // 有客户期望日期:交期余量 = 客户期望日期 - (最后流程完成 + 缓冲期)
- const timeDiff = expectedDate.getTime() - deliveryDate.getTime();
- const baseDeliveryMargin = Math.ceil(timeDiff / (1000 * 60 * 60 * 24));
- deliveryMargin = baseDeliveryMargin - deliveryMarginDeductions;
- } else {
- // 无客户期望日期:交期余量 = (最后流程完成 + 缓冲期) - 今天
- const today = new Date();
- today.setHours(0, 0, 0, 0);
- const timeDiff = deliveryDate.getTime() - today.getTime();
- const baseDeliveryMargin = Math.ceil(timeDiff / (1000 * 60 * 60 * 24));
- deliveryMargin = baseDeliveryMargin - deliveryMarginDeductions;
- }
- }
-
- // 执行复合限制判断 - 只有在缓冲期为0时才检查最终限制
- let canIncrease = false;
- if (dynamicBufferDays > 0) {
- // 1. 缓冲期 > 0,允许操作
- canIncrease = true;
- } else {
- // 2. 缓冲期 = 0,检查最终限制:最后节点预计完成时间是否已达到客户期望日期
- if (expectedDate && timelineResults.length > 0) {
- // 获取有效的最后流程完成日期
- let effectiveLastProcess = null;
- let lastCompletionDate = null;
-
- for (let i = timelineResults.length - 1; i >= 0; i--) {
- const process = timelineResults[i];
- const processDate = new Date(process.estimatedEnd);
-
- if (!isNaN(processDate.getTime()) && process.estimatedEnd !== '时效值为0') {
- effectiveLastProcess = process;
- lastCompletionDate = processDate;
- break;
- }
- }
-
- if (!effectiveLastProcess) {
- effectiveLastProcess = timelineResults[timelineResults.length - 1];
- lastCompletionDate = new Date(effectiveLastProcess.estimatedEnd);
- }
-
- // 计算最后流程完成日期(包含调整)
- const adjustedCompletionDate = new Date(lastCompletionDate);
- adjustedCompletionDate.setDate(adjustedCompletionDate.getDate() + completionDateAdjustment);
-
- // 检查是否已达到客户期望日期
- const timeDiffToExpected = expectedDate.getTime() - adjustedCompletionDate.getTime();
- const daysToExpected = Math.ceil(timeDiffToExpected / (1000 * 60 * 60 * 24));
- canIncrease = daysToExpected > 0; // 只有当还有剩余天数时才允许调整
- } else {
- // 无客户期望日期时,理论上可以无限调整
- canIncrease = true;
- }
- }
- hasNegativeBuffer = !canIncrease;
-
- return (
-
-
-
- {result.processOrder && `${result.processOrder}. `}{result.nodeName}
- {result.isAccumulated && result.allMatchedRecords ? (
-
- (累加 {result.allMatchedRecords.length} 条记录: {result.allMatchedRecords.map(record => record.recordId).join(', ')})
-
- ) : result.timelineRecordId ? (
-
- ({result.timelineRecordId})
-
- ) : (
-
- (无匹配记录)
-
- )}
-
-
-
- 实际完成:
- {
- setActualCompletionDates(prev => ({
- ...prev,
- [index]: date
- }));
-
- // 自动设置调整量:按工作日规则(考虑内部/外部、休息日、跳过日期)
- try {
- const currentResult = timelineResults[index];
- const startStr = currentResult?.estimatedStart;
- if (startStr && date) {
- const startDate = new Date(startStr);
- if (!isNaN(startDate.getTime())) {
- const calcRaw = currentResult?.calculationMethod || '外部';
- const calcMethod = (calcRaw === '内部' || calcRaw === 'internal') ? '内部' : '外部';
- const weekendDays = currentResult?.weekendDaysConfig || currentResult?.weekendDays || [];
- const excludedDates = Array.isArray(currentResult?.excludedDates) ? currentResult!.excludedDates : [];
-
- // 与正向计算一致:先对起始时间应用工作时间调整
- const adjustedStart = adjustToNextWorkingHour(startDate, calcMethod, weekendDays, excludedDates);
- const targetDate = new Date(date);
-
- // 使用二分搜索反推工作日数(按0.5天粒度),使得正向计算的结束时间尽量贴近目标日期
- const dayMs = 1000 * 60 * 60 * 24;
- const approxNatural = Math.max(0, (targetDate.getTime() - adjustedStart.getTime()) / dayMs);
- const endFor = (bd: number): Date => {
- if (bd <= 0) return new Date(adjustedStart);
- return calcMethod === '内部'
- ? addInternalBusinessTime(new Date(adjustedStart), bd, weekendDays, excludedDates)
- : addBusinessDaysWithHolidays(new Date(adjustedStart), bd, weekendDays, excludedDates);
- };
-
- let lo = 0;
- let hi = Math.max(1, approxNatural + 50);
- for (let it = 0; it < 40; it++) {
- const mid = (lo + hi) / 2;
- const end = endFor(mid);
- if (end.getTime() < targetDate.getTime()) {
- lo = mid;
- } else {
- hi = mid;
- }
- }
- const desiredBusinessDays = Math.round(hi * 2) / 2; // 与UI保持0.5粒度一致
-
- // 目标调整量 = 目标工作日数 - 基准时效值
- const baseValue = (typeof currentResult.timelineValue === 'number')
- ? currentResult.timelineValue
- : (typeof currentResult.adjustedTimelineValue === 'number')
- ? currentResult.adjustedTimelineValue
- : 0;
-
- const desiredAdjustmentAbs = desiredBusinessDays - baseValue;
- const currentAdj = timelineAdjustments[index] || 0;
- const deltaToApply = desiredAdjustmentAbs - currentAdj;
- if (deltaToApply !== 0) {
- const updated = handleTimelineAdjustment(index, deltaToApply);
- if (!updated) {
- // 如果该节点不允许调整,仍然重算以联动后续节点
- setTimeout(() => {
- recalculateTimeline(timelineAdjustments, false);
- }, 0);
- return;
- }
- }
- }
- }
- } catch (e) {
- console.warn('自动调整量计算失败:', e);
- }
-
- // 无论如何都重新计算时间线以联动交期余量
- setTimeout(() => {
- recalculateTimeline(timelineAdjustments, false);
- }, 0);
- }}
- style={{ width: '140px' }}
- format="yyyy-MM-dd"
- />
-
-
-
-
-
-
时效值调整:
-
-
-
-
-
0 ? '#52c41a' : '#ff4d4f',
- fontWeight: 'bold',
- fontSize: '13px'
- }}>
- {adjustedValue.toFixed(1)} 工作日
-
- {adjustment !== 0 && (
-
- 原值: {baseValue.toFixed(1)}
-
- 调整: {adjustment > 0 ? '+' : ''}{adjustment.toFixed(1)}
-
- )}
-
-
-
-
-
-
-
-
预计开始:
-
{formatDate(result.estimatedStart)}
-
- {getDayOfWeek(result.estimatedStart)}
-
-
-
-
-
预计完成:
-
- {result.estimatedEnd === '时效值为0' ? result.estimatedEnd : formatDate(result.estimatedEnd)}
-
-
- {getDayOfWeek(result.estimatedEnd)}
-
-
-
-
-
实际跨度:
-
- {calculateActualDays(result.estimatedStart, result.estimatedEnd)} 自然日
-
-
- 含 {adjustedValue.toFixed(1)} 工作日
-
-
-
-
-
计算方式:
-
- {result.calculationMethod || '外部'}
- {result.ruleDescription && (
-
- ({result.ruleDescription})
-
- )}
- 0 ? `休息日配置:${result.weekendDaysConfig.map(day => ['周日', '周一', '周二', '周三', '周四', '周五', '周六'][day]).join(', ')}` : '休息日配置:无固定休息日'}${result.calculationMethod === '内部' ? '\n工作时间:9:00-18:00 (9小时制)' : ''}${(Array.isArray(result.actualExcludedDates) && result.actualExcludedDates.length > 0) ? `\n\n跳过的具体日期:\n${result.actualExcludedDates.join('\n')}` : ''}`}
- >
- ?
-
-
-
- 跳过日期:{(result.actualExcludedDatesCount && result.actualExcludedDatesCount > 0) ? `${result.actualExcludedDatesCount} 天` : '无'}
-
-
-
-
- );
- })}
-
- {/* 计算公式展示卡片 */}
- {timelineResults.length > 0 && (
-
-
-
- 📅 交期余量计算
-
-
-
- {(() => {
- // 获取有效的最后流程完成日期
- let effectiveLastProcess = null;
- let lastCompletionDate = null;
-
- // 从后往前查找第一个有效的流程完成日期
- for (let i = timelineResults.length - 1; i >= 0; i--) {
- const process = timelineResults[i];
- const processDate = new Date(process.estimatedEnd);
-
- // 检查日期是否有效且不是"时效值为0"的情况
- if (!isNaN(processDate.getTime()) && process.estimatedEnd !== '时效值为0') {
- effectiveLastProcess = process;
- lastCompletionDate = processDate;
- break;
- }
- }
-
- // 如果没有找到有效的完成日期,使用最后一个流程
- if (!effectiveLastProcess) {
- effectiveLastProcess = timelineResults[timelineResults.length - 1];
- lastCompletionDate = new Date(effectiveLastProcess.estimatedEnd);
- }
-
- // 计算所有节点的总调整量(用于动态缓冲期计算)
- const totalAdjustments = Object.values(timelineAdjustments).reduce((sum, adj) => sum + adj, 0);
-
- // 计算动态缓冲期:基础14天 - 节点总调整量,最小为0天
- const baseBuferDays = baseBufferDays;
- const dynamicBufferDays = Math.max(0, baseBuferDays - totalAdjustments);
-
- // 计算最后完成日期 + 动态缓冲期(考虑最后流程完成日期的调整)
- const adjustedCompletionDate = new Date(lastCompletionDate);
- adjustedCompletionDate.setDate(adjustedCompletionDate.getDate() + completionDateAdjustment);
-
- const deliveryDate = new Date(adjustedCompletionDate);
- deliveryDate.setDate(deliveryDate.getDate() + dynamicBufferDays);
-
- // 计算交期余量
- // 如果客户期望日期不为空:交期余量 = 客户期望日期 - (最后流程完成 + 缓冲期)
- // 如果客户期望日期为空:交期余量 = (最后流程完成 + 缓冲期)
- let timeDiff, baseDaysDiff, finalDaysDiff;
- if (expectedDate) {
- // 有客户期望日期:计算期望日期与交付日期的差值
- timeDiff = expectedDate.getTime() - deliveryDate.getTime();
- baseDaysDiff = Math.ceil(timeDiff / (1000 * 60 * 60 * 24));
- } else {
- // 无客户期望日期:直接显示交付日期(最后流程完成 + 缓冲期)
- const today = new Date();
- today.setHours(0, 0, 0, 0);
- timeDiff = deliveryDate.getTime() - today.getTime();
- baseDaysDiff = Math.ceil(timeDiff / (1000 * 60 * 60 * 24));
- }
-
- // 计算最终交期余量:基础余量 - 扣减天数
- finalDaysDiff = baseDaysDiff - deliveryMarginDeductions;
-
- return (
- <>
- {expectedDate && (
- <>
- {/* 客户期望日期 */}
-
-
- 客户期望日期
-
-
- {formatDate(expectedDate)}
-
-
- {getDayOfWeek(expectedDate)}
-
-
-
- {/* 减号 */}
-
- -
-
-
- {/* 最后流程完成 */}
-
-
- {effectiveLastProcess === timelineResults[timelineResults.length - 1]
- ? '最后流程完成'
- : `有效流程完成 (${effectiveLastProcess.nodeName})`}
-
-
- {formatDate(adjustedCompletionDate)}
-
-
- {getDayOfWeek(adjustedCompletionDate)}
-
- {effectiveLastProcess !== timelineResults[timelineResults.length - 1] && (
-
- (最后流程时效为0,使用此流程)
-
- )}
- {completionDateAdjustment > 0 && (
-
- (已调整 +{completionDateAdjustment}天)
-
- )}
-
-
- {/* 加号 */}
-
- +
-
-
- {/* 缓冲期 */}
-
-
- 缓冲期
-
-
- {dynamicBufferDays}天
-
-
- 固定缓冲
-
-
-
- {/* 等号 */}
-
- =
-
- >
- )}
-
- {!expectedDate && (
- <>
- {/* 最后流程完成 */}
-
-
- {effectiveLastProcess === timelineResults[timelineResults.length - 1]
- ? '最后流程完成'
- : `有效流程完成 (${effectiveLastProcess.nodeName})`}
-
-
- {formatDate(effectiveLastProcess.estimatedEnd)}
-
-
- {getDayOfWeek(effectiveLastProcess.estimatedEnd)}
-
- {effectiveLastProcess !== timelineResults[timelineResults.length - 1] && (
-
- (最后流程时效为0,使用此流程)
-
- )}
-
-
- {/* 加号 */}
-
- +
-
-
- {/* 缓冲期 */}
-
-
- 缓冲期
-
-
- {dynamicBufferDays}天
-
-
- 固定缓冲
-
-
-
- {/* 减号 */}
-
- -
-
-
- {/* 今天 */}
-
-
- 今天
-
-
- {formatDate(new Date())}
-
-
- {getDayOfWeek(new Date())}
-
-
-
- {/* 等号 */}
-
- =
-
- >
- )}
-
- {/* 交期余量结果 */}
-
= 0 ? '#f6ffed' : '#fff2f0',
- borderRadius: '8px',
- border: `2px solid ${finalDaysDiff >= 0 ? '#52c41a' : '#ff4d4f'}`
- }}>
-
- 交期余量
-
- = 0 ? '#52c41a' : '#ff4d4f',
- display: 'block'
- }}>
- {finalDaysDiff >= 0 ? '+' : ''}{finalDaysDiff}天
-
- = 0 ? '#52c41a' : '#ff4d4f',
- fontWeight: 'bold'
- }}>
- {finalDaysDiff >= 0 ? '✅ 时间充裕' : '⚠️ 时间紧张'}
-
-
- >
- );
- })()}
-
-
-
- {(() => {
- // 计算动态缓冲期和总调整量
- const totalAdjustments = Object.values(timelineAdjustments).reduce((sum, adj) => sum + adj, 0);
- const baseBuferDays = baseBufferDays;
- const dynamicBufferDays = Math.max(0, baseBuferDays - totalAdjustments);
-
- return (
-
- 💡 说明:
- {expectedDate
- ? `交期余量 = 客户期望日期 - (最后流程完成日期 + ${dynamicBufferDays}天缓冲期)`
- : `交期余量 = (最后流程完成日期 + ${dynamicBufferDays}天缓冲期) - 今天`
- }
-
- {expectedDate
- ? '• 正值表示有充裕时间,负值表示可能延期'
- : '• 显示预计交付日期距离今天的天数'
- }
-
- • 缓冲期 = 基础{baseBuferDays}天 - 节点调整总量(最小0天),包含质检、包装、物流等后续环节
- {totalAdjustments > 0 && (
- <>
-
- • 当前节点总调整量:+{totalAdjustments}天,缓冲期相应减少
- >
- )}
-
- );
- })()}
-
-
-
- )}
-
-
-
📊 计算说明:
-
- 共找到 {timelineResults.length} 个匹配的节点。时间按流程顺序计算,上一个节点的完成时间等于下一个节点的开始时间。每个节点使用其特定的休息日配置和计算方式进行工作日计算。
-
-
- 🗓️ 计算规则说明:
-
- • 内部计算:按9小时工作制(9:00-18:00),超时自动顺延至下个工作日
-
- • 外部计算:按24小时制计算,适用于外部供应商等不受工作时间限制的节点
-
- • 根据每个节点的休息日配置自动跳过相应的休息日
-
- • 可为每个节点配置“跳过日期”,这些日期将不参与工作日计算
-
- • 时效值以"工作日"为单位计算,确保预期时间的准确性
-
- • 使用 +1/-1 按钮调整整天,+0.5/-0.5 按钮调整半天,系统会自动重新计算所有后续节点
-
- • 不同节点可配置不同的休息日和计算方式(如:内部节点按工作时间,外部节点按自然时间)
-
-
- {Object.keys(timelineAdjustments).length > 0 && (
-
-
当前调整:
-
- {Object.entries(timelineAdjustments).map(([nodeIndex, adjustment]) => {
- const nodeName = timelineResults[parseInt(nodeIndex)]?.nodeName;
- return (
-
- {nodeName}: {adjustment > 0 ? '+' : ''}{adjustment.toFixed(1)} 天
-
- );
- })}
-
-
- )}
-
-
- )}
-
-
-
-
-
- {/* 标签选择部分,仅在生成模式显示 */}
- {mode === 'generate' && labelOptions && Object.keys(labelOptions).length > 0 && (
-
-
- {Array.from({ length: 10 }, (_, i) => i + 1).map(num => {
- const labelKey = `标签${num}`;
- const options = labelOptions[labelKey] || [];
- const isMultiSelect = labelKey === '标签7' || labelKey === '标签8' || labelKey === '标签10';
-
- return (
-
- {labelKey}
-
-
- );
- })}
-
-
- {/* 客户期望日期选择 */}
-
- 客户期望日期
- setExpectedDate(date)}
- format="yyyy-MM-dd"
- disabledDate={(date) => {
- // 禁用今天之前的日期
- const today = new Date();
- today.setHours(0, 0, 0, 0);
- return date < today;
- }}
- />
- {expectedDate && (
-
- 已选择:{formatDate(expectedDate, 'CHINESE_DATE')}
-
- )}
-
-
- {Object.keys(selectedLabels).length > 0 && (
-
-
-
-
- 已选择 {Object.keys(selectedLabels).length} 个标签
-
-
-
-
-
当前选择的标签:
-
- {Object.entries(selectedLabels).map(([key, value]) => {
- const displayValue = Array.isArray(value) ? value.join(', ') : value;
- return (
-
- {key}: {displayValue}
-
- );
- })}
-
-
-
- )}
-
- )}
-
- {mode === 'batch' && (
-
- {/* 批量处理配置 */}
-
-
- 批量处理配置
-
-
- {/* 第一行:表和视图选择 */}
-
-
- 数据表:
-
-
-
- 视图:
-
-
-
-
- {/* 第二行:处理行数和操作按钮 */}
-
-
- 处理行数:
- setBatchRowCount(value || 10)}
- min={1}
- max={100}
- style={{ width: 100 }}
- />
-
-
-
- {batchProcessing && (
-
-
-
- 进度: {batchProgress.current}/{batchProgress.total}
-
-
- )}
-
-
-
-
-
-
- )}
-
- {mode === 'generate' && (
-
-
-
-
-
版单数据
-
- 选择需要生成时效的版单记录
-
- {selectedRecords.length > 0 && (
-
- 已选择 {selectedRecords.length} 条记录
-
- )}
-
-
-
-
-
- {selectedRecords.length > 0 && (
-
- )}
-
-
-
- {/* 已选择记录的详细信息 */}
- {selectedRecords.length > 0 && recordDetails.length > 0 && (
-
-
-
- 主记录:
-
- {recordDetails[0].displayValue || recordDetails[0].id}
-
-
- {recordDetails.length > 1 && (
-
- + 其他 {recordDetails.length - 1} 条
-
- )}
-
-
- )}
-
- {/* 加载状态 */}
- {loading && (
-
- )}
-
- {/* 空状态提示 */}
- {selectedRecords.length === 0 && !loading && (
-
- 请选择版单记录开始操作
-
- )}
-
-
- {/* 批量处理配置 - 移动到版单数据下方 */}
- {mode === 'batch' && (
-
-
- 批量处理配置
-
-
- {/* 第一行:表和视图选择 */}
-
-
- 数据表:
-
-
-
- 视图:
-
-
-
-
- {/* 第二行:处理行数和操作按钮 */}
-
-
- 处理行数:
- setBatchRowCount(value || 10)}
- min={1}
- max={100}
- style={{ width: 100 }}
- />
-
-
-
- {batchProcessing && (
-
-
-
- 进度: {batchProgress.current}/{batchProgress.total}
-
-
- )}
-
-
-
-
-
- )}
-
- )}
- {mode === 'generate' && (
- <>
- {/* 面料数据查询结果 */}
- {queryResults.length > 0 && (
- <>
-
-
面料数据查询结果 ({queryResults.length} 条)
-
({ ...item, key: index }))}
- pagination={{ pageSize: 10 }}
- style={{ marginTop: '10px' }}
- />
- >
- )}
- {/* 二次工艺查询结果 */}
- {secondaryProcessResults.length > 0 && (
- <>
-
- 二次工艺查询结果 ({secondaryProcessResults.length} 条)
- ({ ...item, key: index }))}
- pagination={{ pageSize: 10 }}
- style={{ marginTop: '10px' }}
- />
- >
- )}
- {/* 工艺价格查询结果 */}
- {pricingDetailsResults.length > 0 && (
- <>
-
- 工艺价格查询结果 ({pricingDetailsResults.length} 条)
- ({ ...item, key: index }))}
- pagination={{ pageSize: 10 }}
- style={{ marginTop: '10px' }}
- />
- >
- )}
- >
- )}
-
- );
}
\ No newline at end of file