From 40340bb48ea6f5d71120f2ccc5b64d6acda374cd Mon Sep 17 00:00:00 2001
From: 13404089107 <puwei@sinata.cn>
Date: 星期四, 08 五月 2025 16:09:21 +0800
Subject: [PATCH] fix

---
 src/view/Home.vue |   87 ++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 84 insertions(+), 3 deletions(-)

diff --git a/src/view/Home.vue b/src/view/Home.vue
index 1011753..4703ac2 100644
--- a/src/view/Home.vue
+++ b/src/view/Home.vue
@@ -706,9 +706,90 @@
                                 remarks: item['备注 | Remarks']
                             };
                         });
-                        // 使用post方法直接传递数组
-                        iptOrder(transformedData).then(res => {
-                            console.log(res, transformedData);
+
+                        // 数据校验和过滤
+                        const filteredData = [];
+                        const invalidData = [];
+                        
+                        transformedData.forEach((item, index) => {
+                            const errors = [];
+                            
+                            // 检查是否所有字段都为空(排除userExtra字段)
+                            const { userExtra, ...otherFields } = item;
+                            const allFieldsEmpty = Object.values(otherFields).every(value => 
+                                value === '' || value === null || value === undefined
+                            );
+                            
+                            // 如果所有字段都为空,跳过这条数据
+                            if (allFieldsEmpty) {
+                                return;
+                            }
+
+                            // 必填字段校验
+                            const requiredFields = [
+                                { field: 'ContainerNo', name: '集装箱号' },
+                                { field: 'BolNo', name: '提单号' },
+                                { field: 'containerType', name: '柜型' },
+                                { field: 'carrier', name: '船司' },
+                                { field: 'vesselNameAndVoyage', name: '船名航次' },
+                                { field: 'pickupLocation', name: '提柜地' },
+                                { field: 'eta', name: '预计到港' },
+                                { field: 'soc', name: 'SOC' },
+                                { field: 'dg', name: 'DG' },
+                                { field: 'overweight', name: '是否超重' },
+                                { field: 'exam', name: '是否查验' },
+                                { field: 'commodity', name: '品名' },
+                                { field: 'qty', name: '数量' },
+                                { field: 'GrWt', name: '毛重' },
+                                { field: 'volume', name: '体积' },
+                                { field: 'companyName', name: '收件人公司' },
+                                { field: 'postalCode', name: '邮编' },
+                                { field: 'address', name: '地址' }
+                            ];
+
+                            requiredFields.forEach(({ field, name }) => {
+                                if (!item[field]) {
+                                    errors.push(`${name}不能为空`);
+                                }
+                            });
+
+                            // 联系电话和邮箱至少填写一项
+                            if (!item.tel && !item.email) {
+                                errors.push('联系电话和邮箱至少填写其中一项');
+                            }
+
+                            if (errors.length > 0) {
+                                invalidData.push({
+                                    row: index + 4,
+                                    containerNo: item.ContainerNo,
+                                    errors: errors
+                                });
+                            } else {
+                                filteredData.push(item);
+                            }
+                        });
+
+                        // 显示被过滤掉的数据信息
+                        if (invalidData.length > 0 && filteredData.length > 0) {
+                            const errorMessage = invalidData.map(data => 
+                                `第${data.row}行(集装箱号: ${data.containerNo || '无'}): ${data.errors.join('; ')}`
+                            ).join('\n');
+                            
+                            this.$message.warning({
+                                message: `以下${invalidData.length}条数据不符合要求,将被过滤:\n${errorMessage}`,
+                                duration: 0,
+                                showClose: true
+                            });
+                        }
+
+                        if (filteredData.length === 0) {
+                            this.$message.error('没有有效数据可以导入');
+                            return;
+                        }
+
+                        // 使用post方法直接传递过滤后的数组
+                        iptOrder(filteredData).then(res => {
+                            console.log(res, filteredData);
 
                             if (res) {
                                 this.$message({

--
Gitblit v1.7.1