如果您看到类似这样的问题:
立即解决方案 ↓
当您点击"生成报价"时,系统会自动检测重复:
打开项目订单页面
路径: 系统管理后台 → 项目管理 → 项目详情 → 订单
URL: https://app.fmode.cn/dev/yss/admin/project-detail/{项目ID}/order
点击 "生成报价" 按钮
如果存在重复,会弹出提示框:
检测到 8 个重复空间产品,是否自动清理?
[取消] [确定]
点击 "确定"
✅ 完成!系统会:
⚠️ 检测到重复空间: 儿童房 (产品ID: xxx)
⚠️ 检测到重复空间: 卫生间 (产品ID: xxx)
⚠️ 检测到 8 个重复产品,建议清理
🗑️ 开始清理 8 个重复产品...
✓ 已删除: 儿童房 (xxx)
✓ 已删除: 卫生间 (xxx)
...
✅ 重复产品清理完成
✅ 报价空间生成完成: 8 个唯一空间 (原始产品: 16 个)
适用于:想要主动检查和清理重复产品
打开项目订单页面
在工具栏找到并点击 "清理重复" 按钮
位置: [生成报价] [添加产品] [清理重复] [保存报价]
↑ 这里
系统扫描后显示详情:
检测到以下空间存在重复:
儿童房、卫生间、厨房、客厅、次卧、阳台、餐厅
共 8 个重复产品,是否清理?
[取消] [确定]
点击 "确定" 清理
✅ 完成!
没有检测到重复产品
[确定]
productName(空间名称)假设数据库中有:
1. 儿童房 (ID: aaa, 创建时间: 10:00) ← 保留
2. 儿童房 (ID: bbb, 创建时间: 10:05) ← 删除
清理后只保留 ID: aaa 的儿童房记录。
A: 只删除重复的 Product 记录。保留的那条记录的所有数据(报价、分配、状态等)都会完整保留。
A: 会的。如果之前重复计算了价格,清理后会显示正确的总额。
A: 删除操作不可逆。建议在测试环境先验证,或确认后再执行。
A: 可能原因:
A: 确认您有编辑权限。只有具有编辑权限的用户才能看到"清理重复"按钮。
// 使用 Map 数据结构检测重复
const productNameMap = new Map<string, any[]>();
for (const product of this.products) {
const productName = product.get('productName');
if (!productNameMap.has(productName)) {
productNameMap.set(productName, []);
}
productNameMap.get(productName)!.push(product);
}
// 标记重复的产品(保留第一个)
for (const [name, products] of productNameMap.entries()) {
if (products.length > 1) {
for (let i = 1; i < products.length; i++) {
duplicateProductIds.push(products[i].id);
}
}
}
1. 扫描所有产品
↓
2. 按空间名称分组
↓
3. 找出重复的产品ID
↓
4. 用户确认
↓
5. 批量删除重复记录
↓
6. 重新加载产品列表
↓
7. 重新生成报价
↓
8. 显示成功消息
报价列表:
主卧 ¥300 6%
书房 ¥300 6%
儿童房 ¥300 6% ← 重复
儿童房 ¥300 6% ← 重复
卫生间 ¥300 6% ← 重复
卫生间 ¥300 6% ← 重复
厨房 ¥300 6% ← 重复
厨房 ¥300 6% ← 重复
客厅 ¥300 6% ← 重复
客厅 ¥300 6% ← 重复
次卧 ¥300 6% ← 重复
次卧 ¥300 6% ← 重复
阳台 ¥300 6% ← 重复
阳台 ¥300 6% ← 重复
餐厅 ¥300 6% ← 重复
餐厅 ¥300 6% ← 重复
总计: 16 个空间
报价总额: ¥4,800 (包含重复计算)
报价列表:
主卧 ¥300 12.5%
书房 ¥300 12.5%
儿童房 ¥300 12.5% ✓ 唯一
卫生间 ¥300 12.5% ✓ 唯一
厨房 ¥300 12.5% ✓ 唯一
客厅 ¥300 12.5% ✓ 唯一
次卧 ¥300 12.5% ✓ 唯一
阳台 ¥300 12.5% ✓ 唯一
总计: 8 个唯一空间
报价总额: ¥2,400 (准确)
| 功能 | 需要权限 | 说明 |
|---|---|---|
| 查看报价 | 所有用户 | 任何人都可以查看 |
| 生成报价 | 编辑权限 | canEdit = true |
| 清理重复 | 编辑权限 | canEdit = true |
| 删除产品 | 编辑权限 | canEdit = true |
打开浏览器控制台(F12)可以看到详细日志:
// 查看当前产品数量
console.log('产品总数:', this.products.length);
// 查看报价空间数量
console.log('报价空间数:', this.quotation.spaces.length);
// 手动触发清理(仅调试用)
// 在控制台执行:
component.cleanupDuplicateProducts();
如果遇到问题:
最后更新: 2025-10-31
版本: v1.0.0
适用系统: 银三色设计管理系统