|
|
@ -27,7 +27,7 @@ |
|
|
|
<view class="goods-info"> |
|
|
|
<view class="goods-title-row"> |
|
|
|
<text class="goods-name">{{ item.name }}</text> |
|
|
|
<text class="goods-price">¥ {{ item.price }} <text class="goods-unit">/件</text></text> |
|
|
|
<text class="goods-price">¥ {{ item.price }} <text class="goods-unit">/{{item.unit}}</text></text> |
|
|
|
</view> |
|
|
|
<text class="goods-desc">{{ item.desc }}</text> |
|
|
|
</view> |
|
|
@ -37,13 +37,16 @@ |
|
|
|
<view class="num-ctrl"> |
|
|
|
<button class="num-btn" @tap="changeNum(item, 'qualified', -1)">-</button> |
|
|
|
<text class="num">{{ item.qualified }}</text> |
|
|
|
<button class="num-btn" @tap="changeNum(item, 'qualified', 1)">+</button> |
|
|
|
<button |
|
|
|
class="num-btn" |
|
|
|
@tap="changeNum(item, 'qualified', 1)" |
|
|
|
>+</button> |
|
|
|
</view> |
|
|
|
</view> |
|
|
|
|
|
|
|
<view class="goods-row"> |
|
|
|
<text class="row-label">总金额</text> |
|
|
|
<input class="amount-input" :value="getInspectPrice(item)" @input="updateInspectPrice(item, $event)" placeholder="请输入金额" /> |
|
|
|
<input class="amount-input" :value="getInspectPrice(item)" @input="updateInspectPrice(item, $event)" placeholder="请输入金额" :disabled="!item.qualified || item.qualified === 0" /> |
|
|
|
</view> |
|
|
|
</view> |
|
|
|
<view v-if="loadingMore" class="loading-more">加载中...</view> |
|
|
@ -123,7 +126,6 @@ export default { |
|
|
|
|
|
|
|
searchTimer: null, |
|
|
|
brandIndexList: ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'], |
|
|
|
isPresetDataSync: false, // 标记是否为预置数据同步 |
|
|
|
} |
|
|
|
}, |
|
|
|
computed: { |
|
|
@ -157,39 +159,11 @@ export default { |
|
|
|
}, |
|
|
|
methods: { |
|
|
|
initInspectResult() { |
|
|
|
// 初始化一个空的质检结果结构 |
|
|
|
// 只初始化空的list |
|
|
|
this.inspectResult = { |
|
|
|
id: this.order ? this.order.id : '', |
|
|
|
list: [] |
|
|
|
} |
|
|
|
|
|
|
|
// 如果有订单数据,基于订单创建质检结果结构 |
|
|
|
if (this.order && this.order.commonOrderList) { |
|
|
|
const groupedGoods = {} |
|
|
|
this.order.commonOrderList.forEach(item => { |
|
|
|
if (!groupedGoods[item.id]) { |
|
|
|
groupedGoods[item.id] = { |
|
|
|
id: item.id, |
|
|
|
price: '', |
|
|
|
qualifiedNum: item.num || 0, // 初始化为订单中的数量 |
|
|
|
noQualifiedNum: 0, |
|
|
|
unrecyclable: 0, |
|
|
|
commonOrderList: [] |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
// 每个商品只需要一个质检项 |
|
|
|
groupedGoods[item.id].commonOrderList.push({ |
|
|
|
id: item.id, |
|
|
|
testingInstructions: '', |
|
|
|
testingImages: '', |
|
|
|
testingStatus: 0 // 初始化为合格状态 |
|
|
|
}) |
|
|
|
}) |
|
|
|
|
|
|
|
this.inspectResult.list = Object.values(groupedGoods) |
|
|
|
console.log('初始化inspectResult:', JSON.stringify(this.inspectResult, null, 2)) |
|
|
|
} |
|
|
|
}, |
|
|
|
|
|
|
|
// 获取分类商品数量(直接方法,避免递归) |
|
|
@ -197,43 +171,17 @@ export default { |
|
|
|
if (categoryId === 'unrecyclable') { |
|
|
|
return this.getUnrecyclableCount() |
|
|
|
} |
|
|
|
|
|
|
|
if (categoryId === 'quality_issue') { |
|
|
|
return this.getQualityIssueCount() |
|
|
|
} |
|
|
|
|
|
|
|
// 对于普通分类,从inspectResult中获取该分类下所有商品的合格数量总和 |
|
|
|
let totalCount = 0 |
|
|
|
|
|
|
|
if (this.inspectResult.list && this.inspectResult.list.length > 0) { |
|
|
|
// 遍历inspectResult中的所有商品 |
|
|
|
this.inspectResult.list.forEach(inspectItem => { |
|
|
|
// 跳过特殊分类 |
|
|
|
if (inspectItem.id === 'unrecyclable' || inspectItem.id === 'quality_issue') { |
|
|
|
return |
|
|
|
} |
|
|
|
|
|
|
|
// 通过商品ID查找对应的订单项,获取分类信息 |
|
|
|
const orderItem = this.order?.commonOrderList?.find(item => item.id == inspectItem.id) |
|
|
|
|
|
|
|
// 如果通过订单ID没找到,尝试通过API商品ID查找 |
|
|
|
if (!orderItem) { |
|
|
|
// 遍历所有订单项,查找是否有shopId匹配当前inspectItem.id的 |
|
|
|
const matchingOrderItem = this.order?.commonOrderList?.find(item => item.shopId == inspectItem.id) |
|
|
|
if (matchingOrderItem && matchingOrderItem.shopClass === categoryId) { |
|
|
|
totalCount += inspectItem.qualifiedNum || 0 |
|
|
|
return |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
// 如果找到了订单项,检查分类是否匹配 |
|
|
|
if (orderItem && orderItem.shopClass === categoryId) { |
|
|
|
// 累加该商品的合格数量 |
|
|
|
if (inspectItem.categoryId === categoryId) { |
|
|
|
totalCount += inspectItem.qualifiedNum || 0 |
|
|
|
} |
|
|
|
}) |
|
|
|
} |
|
|
|
|
|
|
|
return totalCount |
|
|
|
}, |
|
|
|
|
|
|
@ -287,7 +235,6 @@ export default { |
|
|
|
}, |
|
|
|
updateCurrentGoods() { |
|
|
|
const currentCategoryId = this.categories[this.currentCategory]?.id |
|
|
|
|
|
|
|
// 不可回收分类内容 |
|
|
|
if (currentCategoryId === 'unrecyclable') { |
|
|
|
// 从inspectResult中获取不可回收的数量 |
|
|
@ -306,7 +253,6 @@ export default { |
|
|
|
}] |
|
|
|
return |
|
|
|
} |
|
|
|
|
|
|
|
// 质量问题分类内容 |
|
|
|
if (currentCategoryId === 'quality_issue') { |
|
|
|
// 从inspectResult中获取质量问题的数量 |
|
|
@ -325,47 +271,34 @@ export default { |
|
|
|
}] |
|
|
|
return |
|
|
|
} |
|
|
|
|
|
|
|
// 从API获取的商品数据 |
|
|
|
const categoryGoods = this.allProducts[currentCategoryId] || [] |
|
|
|
|
|
|
|
// 将API商品数据转换为质检页面格式 |
|
|
|
// 将API商品数据转换为质检页面格式,并合并inspectResult.list中已选状态(shopId和id双向查找) |
|
|
|
const goodsList = categoryGoods.map((item, index) => { |
|
|
|
// 从订单数据中查找对应的商品,获取预置数量 |
|
|
|
// 从订单数据中查找对应的商品 |
|
|
|
const orderItem = this.getOrderItemByProductId(item.id) |
|
|
|
const presetQuantity = orderItem ? (orderItem.num || 0) : 0 |
|
|
|
|
|
|
|
// 优先使用订单中的商品ID,如果没有则使用API商品ID |
|
|
|
let itemId = item.id |
|
|
|
|
|
|
|
// 尝试从订单数据中找到对应的商品ID |
|
|
|
if (orderItem && orderItem.id) { |
|
|
|
itemId = orderItem.id // 使用订单中的商品ID |
|
|
|
itemId = orderItem.id |
|
|
|
} |
|
|
|
|
|
|
|
// 从inspectResult中获取用户已经修改的数量 |
|
|
|
const inspectItem = this.inspectResult.list?.find(listItem => listItem.id == itemId) |
|
|
|
const userModifiedQuantity = inspectItem ? inspectItem.qualifiedNum : 0 |
|
|
|
|
|
|
|
// 优先使用用户修改的数量,如果没有则使用预置数量 |
|
|
|
const displayQuantity = userModifiedQuantity > 0 ? userModifiedQuantity : presetQuantity |
|
|
|
|
|
|
|
const inspectItem = this.inspectResult.list?.find(listItem => |
|
|
|
listItem.shopId == item.id || listItem.shopId == itemId || listItem.id == item.id || listItem.id == itemId |
|
|
|
) |
|
|
|
return { |
|
|
|
id: item.id, |
|
|
|
image: item.image || '/static/回收/衣物.png', |
|
|
|
name: item.name, |
|
|
|
price: item.price || 0, |
|
|
|
desc: item.service || '允许脏破烂,160码以上', |
|
|
|
qualified: displayQuantity, // 优先使用用户修改的数量 |
|
|
|
amount: inspectItem ? inspectItem.price : (orderItem ? orderItem.estimatedPrice : ''), |
|
|
|
originalNum: presetQuantity, // 设置原始数量 |
|
|
|
qualified: inspectItem ? inspectItem.qualifiedNum : 0, |
|
|
|
amount: inspectItem ? inspectItem.price : '', // 只用inspectResult里的金额 |
|
|
|
originalNum: 0, |
|
|
|
estimatedPrice: orderItem ? orderItem.estimatedPrice : 0, |
|
|
|
originalId: item.id, |
|
|
|
isPin: item.isPin || 'N', // 添加品牌标识 |
|
|
|
orderItem: orderItem // 保存订单项引用,方便后续使用 |
|
|
|
isPin: item.isPin || 'N', |
|
|
|
orderItem: orderItem |
|
|
|
} |
|
|
|
}) |
|
|
|
|
|
|
|
this.currentGoods = goodsList |
|
|
|
}, |
|
|
|
|
|
|
@ -374,20 +307,10 @@ export default { |
|
|
|
if (!this.order || !this.order.commonOrderList) { |
|
|
|
return null |
|
|
|
} |
|
|
|
|
|
|
|
// 先通过商品ID直接匹配 |
|
|
|
let orderItem = this.order.commonOrderList.find(item => item.id == productId) |
|
|
|
|
|
|
|
// 如果没找到,尝试通过shopId匹配 |
|
|
|
if (!orderItem) { |
|
|
|
orderItem = this.order.commonOrderList.find(item => item.shopId == productId) |
|
|
|
} |
|
|
|
|
|
|
|
return orderItem |
|
|
|
// 支持id和shopId双向查找 |
|
|
|
return this.order.commonOrderList.find(item => item.id == productId || item.shopId == productId) |
|
|
|
}, |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
goBack() { |
|
|
|
uni.navigateBack() |
|
|
|
}, |
|
|
@ -408,8 +331,9 @@ export default { |
|
|
|
inspectResult: this.inspectResult, |
|
|
|
order: this.order // 同时传递订单信息 |
|
|
|
} |
|
|
|
|
|
|
|
console.log('resultDataStr:', resultData) |
|
|
|
const resultDataStr = encodeURIComponent(JSON.stringify(resultData)) |
|
|
|
|
|
|
|
uni.navigateTo({ |
|
|
|
url: `/pages/manager/inspect-result?resultData=${resultDataStr}` |
|
|
|
}) |
|
|
@ -421,38 +345,36 @@ export default { |
|
|
|
message: '没有质检数据' |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
for (const item of this.inspectResult.list) { |
|
|
|
// 跳过不可回收和质量问题分类的检查 |
|
|
|
// 不可回收和质量问题不需要校验金额 |
|
|
|
if (item.id === 'unrecyclable' || item.id === 'quality_issue') { |
|
|
|
continue |
|
|
|
} |
|
|
|
|
|
|
|
// 获取商品信息用于显示错误消息 |
|
|
|
const orderItem = this.order.commonOrderList.find(orderGoods => orderGoods.id == item.id) |
|
|
|
const brandName = orderItem ? (orderItem.title+' '+orderItem.pinName || orderItem.title || '未知商品') : '未知商品' |
|
|
|
|
|
|
|
// 只判断是否填写了commonOrderList(即有质检结果) |
|
|
|
if (!item.commonOrderList || item.commonOrderList.length === 0) { |
|
|
|
return { |
|
|
|
isValid: false, |
|
|
|
message: '有商品未完成质检选择' |
|
|
|
} |
|
|
|
} |
|
|
|
// 检查是否有空的testingStatus |
|
|
|
const hasEmptyStatus = item.commonOrderList.some(commonItem => |
|
|
|
commonItem.testingStatus === '' || commonItem.testingStatus === null || commonItem.testingStatus === undefined |
|
|
|
) |
|
|
|
|
|
|
|
if (hasEmptyStatus) { |
|
|
|
return { |
|
|
|
isValid: false, |
|
|
|
message: `${brandName} 还未完成质检选择` |
|
|
|
message: '有商品未完成质检选择' |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
// 检查价格是否为空 |
|
|
|
// 检查总金额(price)是否填写(不可回收和质量问题不校验) |
|
|
|
if (!item.price || item.price === 0 || item.price === '') { |
|
|
|
return { |
|
|
|
isValid: false, |
|
|
|
message: `${brandName} 还未填写总金额` |
|
|
|
message: '有商品未填写总金额' |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
return { |
|
|
|
isValid: true, |
|
|
|
message: '' |
|
|
@ -466,7 +388,7 @@ export default { |
|
|
|
|
|
|
|
if (categoryId === 'unrecyclable' || categoryId === 'quality_issue') { |
|
|
|
// 不可回收和质量问题分类直接更新商品列表 |
|
|
|
this.updateCurrentGoods() |
|
|
|
this.updateCurrentGoods() |
|
|
|
return |
|
|
|
} |
|
|
|
|
|
|
@ -480,183 +402,219 @@ export default { |
|
|
|
}, |
|
|
|
changeNum(item, key, delta) { |
|
|
|
if (key === 'qualified') { |
|
|
|
const currentCategoryId = this.categories[this.currentCategory]?.id |
|
|
|
// 如果是增加数量 |
|
|
|
if (delta > 0) { |
|
|
|
// 对于不可回收和质量问题分类,直接增加数量,不弹出品牌选择 |
|
|
|
if (item.id === 'unrecyclable-1' || item.id === 'quality-issue-1') { |
|
|
|
const newQualified = Math.max(0, (item.qualified || 0) + delta) |
|
|
|
this.$set(item, 'qualified', newQualified) |
|
|
|
this.updateInspectResult(item, 'qualified', delta) |
|
|
|
this.updateInspectResult(item, 'qualified', delta, currentCategoryId) |
|
|
|
this.$forceUpdate() |
|
|
|
return |
|
|
|
} |
|
|
|
|
|
|
|
// 其他商品弹出品牌选择弹窗 |
|
|
|
this.pendingBrandIndex = this.currentGoods.findIndex(goods => goods.id === item.id) |
|
|
|
this.getGoodsBrandList(item.id) |
|
|
|
this.showBrandPopup = true |
|
|
|
return |
|
|
|
} |
|
|
|
|
|
|
|
const newQualified = Math.max(0, (item.qualified || 0) + delta) |
|
|
|
this.$set(item, 'qualified', newQualified) |
|
|
|
// 更新inspectResult对象 |
|
|
|
this.updateInspectResult(item, 'qualified', delta) |
|
|
|
// 强制更新categories计算属性,使左侧分类数字变化 |
|
|
|
this.updateInspectResult(item, 'qualified', delta, currentCategoryId) |
|
|
|
// 新增:如果数量为0,移除该商品对象(包括不可回收和质量问题) |
|
|
|
if (newQualified === 0) { |
|
|
|
this.removeInspectItem(item) |
|
|
|
} |
|
|
|
this.$forceUpdate() |
|
|
|
console.log('更新后的inspectResult:', JSON.stringify(this.inspectResult, null, 2)) |
|
|
|
} |
|
|
|
}, |
|
|
|
updateInspectResult(item, type, delta) { |
|
|
|
// 修改:移除商品对象方法,支持不可回收和质量问题 |
|
|
|
removeInspectItem(item) { |
|
|
|
// 判断不可回收和质量问题 |
|
|
|
if (item.id === 'unrecyclable-1' || item.id === 'unrecyclable') { |
|
|
|
const idx = this.inspectResult.list.findIndex(listItem => listItem.id === 'unrecyclable') |
|
|
|
if (idx !== -1) { |
|
|
|
this.inspectResult.list.splice(idx, 1) |
|
|
|
} |
|
|
|
return |
|
|
|
} |
|
|
|
if (item.id === 'quality-issue-1' || item.id === 'quality_issue') { |
|
|
|
const idx = this.inspectResult.list.findIndex(listItem => listItem.id === 'quality_issue') |
|
|
|
if (idx !== -1) { |
|
|
|
this.inspectResult.list.splice(idx, 1) |
|
|
|
} |
|
|
|
return |
|
|
|
} |
|
|
|
let itemId = item.originalId || item.id |
|
|
|
const orderItem = this.getOrderItemByProductId(itemId) |
|
|
|
if (orderItem && orderItem.id) { |
|
|
|
itemId = orderItem.id |
|
|
|
} |
|
|
|
// shopId 匹配 |
|
|
|
const idx = this.inspectResult.list.findIndex(listItem => listItem.shopId == (orderItem ? (orderItem.shopId || orderItem.id) : itemId)) |
|
|
|
if (idx !== -1) { |
|
|
|
this.inspectResult.list.splice(idx, 1) |
|
|
|
} |
|
|
|
}, |
|
|
|
updateInspectResult(item, type, delta, currentCategoryId) { |
|
|
|
// 处理不可回收分类 |
|
|
|
if (item.id === 'unrecyclable-1') { |
|
|
|
// 找到或创建不可回收的inspectResult项 |
|
|
|
let inspectItem = this.inspectResult.list.find(listItem => listItem.id === 'unrecyclable') |
|
|
|
|
|
|
|
if (!inspectItem) { |
|
|
|
if (!inspectItem && delta > 0) { |
|
|
|
inspectItem = { |
|
|
|
id: 'unrecyclable', |
|
|
|
price: '', |
|
|
|
price: 0, |
|
|
|
qualifiedNum: 0, |
|
|
|
noQualifiedNum: 0, |
|
|
|
unrecyclable: 0, |
|
|
|
commonOrderList: [] |
|
|
|
shopId: '', |
|
|
|
pinId: '', |
|
|
|
categoryId: '', |
|
|
|
commonOrderList: [ |
|
|
|
{ |
|
|
|
testingInstructions: '', |
|
|
|
testingImages: '', |
|
|
|
testingStatus: 2 |
|
|
|
} |
|
|
|
] |
|
|
|
} |
|
|
|
this.inspectResult.list.push(inspectItem) |
|
|
|
} |
|
|
|
|
|
|
|
if (!inspectItem) return |
|
|
|
if (type === 'qualified' && delta > 0) { |
|
|
|
inspectItem.unrecyclable++ |
|
|
|
} else if (type === 'qualified' && delta < 0) { |
|
|
|
inspectItem.unrecyclable = Math.max(0, inspectItem.unrecyclable - 1) |
|
|
|
// 新增:如果减到0,移除该对象 |
|
|
|
if (inspectItem.unrecyclable === 0) { |
|
|
|
const idx = this.inspectResult.list.findIndex(listItem => listItem === inspectItem) |
|
|
|
if (idx !== -1) { |
|
|
|
this.inspectResult.list.splice(idx, 1) |
|
|
|
} |
|
|
|
return |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
console.log('不可回收数量更新:', inspectItem.unrecyclable) |
|
|
|
console.log('不可回收对象:', inspectItem) |
|
|
|
return |
|
|
|
} |
|
|
|
|
|
|
|
// 处理质量问题分类 |
|
|
|
if (item.id === 'quality-issue-1') { |
|
|
|
// 找到或创建质量问题的inspectResult项 |
|
|
|
let inspectItem = this.inspectResult.list.find(listItem => listItem.id === 'quality_issue') |
|
|
|
|
|
|
|
if (!inspectItem) { |
|
|
|
if (!inspectItem && delta > 0) { |
|
|
|
inspectItem = { |
|
|
|
id: 'quality_issue', |
|
|
|
price: '', |
|
|
|
price: 0, |
|
|
|
qualifiedNum: 0, |
|
|
|
noQualifiedNum: 0, |
|
|
|
unrecyclable: 0, |
|
|
|
commonOrderList: [] |
|
|
|
shopId: '', |
|
|
|
pinId: '', |
|
|
|
categoryId: '', |
|
|
|
commonOrderList: [ |
|
|
|
{ |
|
|
|
testingInstructions: '', |
|
|
|
testingImages: '', |
|
|
|
testingStatus: 1 |
|
|
|
} |
|
|
|
] |
|
|
|
} |
|
|
|
this.inspectResult.list.push(inspectItem) |
|
|
|
} |
|
|
|
|
|
|
|
if (!inspectItem) return |
|
|
|
if (type === 'qualified' && delta > 0) { |
|
|
|
inspectItem.noQualifiedNum++ |
|
|
|
} else if (type === 'qualified' && delta < 0) { |
|
|
|
inspectItem.noQualifiedNum = Math.max(0, inspectItem.noQualifiedNum - 1) |
|
|
|
// 新增:如果减到0,移除该对象 |
|
|
|
if (inspectItem.noQualifiedNum === 0) { |
|
|
|
const idx = this.inspectResult.list.findIndex(listItem => listItem === inspectItem) |
|
|
|
if (idx !== -1) { |
|
|
|
this.inspectResult.list.splice(idx, 1) |
|
|
|
} |
|
|
|
return |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
console.log('质量问题数量更新:', inspectItem.noQualifiedNum) |
|
|
|
console.log('质量问题对象:', inspectItem) |
|
|
|
return |
|
|
|
} |
|
|
|
|
|
|
|
// 找到或创建对应的inspectResult项 |
|
|
|
// 优先使用订单中的商品ID,如果没有则使用API商品ID |
|
|
|
let itemId = item.originalId || item.id |
|
|
|
|
|
|
|
// 尝试从订单数据中找到对应的商品ID |
|
|
|
const orderItem = this.getOrderItemByProductId(itemId) |
|
|
|
if (orderItem && orderItem.id) { |
|
|
|
itemId = orderItem.id // 使用订单中的商品ID |
|
|
|
itemId = orderItem.id |
|
|
|
} |
|
|
|
|
|
|
|
let inspectItem = this.inspectResult.list.find(listItem => listItem.id == itemId) |
|
|
|
|
|
|
|
// 如果不存在,动态创建 |
|
|
|
if (!inspectItem) { |
|
|
|
let inspectItem = this.inspectResult.list.find(listItem => listItem.shopId == (orderItem ? (orderItem.shopId || orderItem.id) : itemId)) |
|
|
|
if (!inspectItem && delta > 0) { |
|
|
|
inspectItem = { |
|
|
|
id: itemId, |
|
|
|
price: '', |
|
|
|
price: 0, |
|
|
|
qualifiedNum: 0, |
|
|
|
noQualifiedNum: 0, |
|
|
|
unrecyclable: 0, |
|
|
|
commonOrderList: [] |
|
|
|
shopId: orderItem ? (orderItem.shopId || orderItem.id) : itemId, |
|
|
|
pinId: '', |
|
|
|
categoryId: currentCategoryId || '', // 直接用当前分类id |
|
|
|
commonOrderList: [ |
|
|
|
{ |
|
|
|
testingInstructions: '', |
|
|
|
testingImages: '', |
|
|
|
testingStatus: 0 |
|
|
|
} |
|
|
|
] |
|
|
|
} |
|
|
|
this.inspectResult.list.push(inspectItem) |
|
|
|
console.log('新增商品到inspectResult:', itemId) |
|
|
|
} |
|
|
|
|
|
|
|
// 如果是预置数据同步,直接设置数量 |
|
|
|
if (type === 'qualified' && delta > 0 && this.isPresetDataSync) { |
|
|
|
inspectItem.qualifiedNum = delta |
|
|
|
return |
|
|
|
} |
|
|
|
|
|
|
|
if (!inspectItem) return |
|
|
|
if (type === 'qualified' && delta > 0) { |
|
|
|
// 增加合格数量:直接更新数量 |
|
|
|
inspectItem.qualifiedNum++ |
|
|
|
console.log(`为商品 ${itemId} 增加数量,当前合格数量: ${inspectItem.qualifiedNum}`) |
|
|
|
} else if (type === 'qualified' && delta < 0) { |
|
|
|
// 减少合格数量:直接更新数量 |
|
|
|
inspectItem.qualifiedNum = Math.max(0, inspectItem.qualifiedNum - 1) |
|
|
|
console.log(`为商品 ${itemId} 减少数量,当前合格数量: ${inspectItem.qualifiedNum}`) |
|
|
|
// 新增:如果减到0,移除该商品对象 |
|
|
|
if (inspectItem.qualifiedNum === 0) { |
|
|
|
const idx = this.inspectResult.list.findIndex(listItem => listItem === inspectItem) |
|
|
|
if (idx !== -1) { |
|
|
|
this.inspectResult.list.splice(idx, 1) |
|
|
|
} |
|
|
|
return |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
console.log('更新后的inspectResult:', JSON.stringify(this.inspectResult, null, 2)) |
|
|
|
}, |
|
|
|
getInspectPrice(item) { |
|
|
|
// 获取inspectResult中对应商品的price |
|
|
|
if (item.id === 'unrecyclable-1' || item.id === 'quality-issue-1') { |
|
|
|
return '' |
|
|
|
// 优化:不可回收和质量问题通过id匹配 |
|
|
|
if (item.id === 'unrecyclable-1' || item.id === 'unrecyclable') { |
|
|
|
const inspectItem = this.inspectResult.list?.find(listItem => listItem.id === 'unrecyclable') |
|
|
|
return inspectItem ? inspectItem.price : '' |
|
|
|
} |
|
|
|
|
|
|
|
// 优先使用订单中的商品ID,如果没有则使用API商品ID |
|
|
|
let itemId = item.originalId || item.id |
|
|
|
|
|
|
|
// 尝试从订单数据中找到对应的商品ID |
|
|
|
const orderItem = this.getOrderItemByProductId(itemId) |
|
|
|
if (orderItem && orderItem.id) { |
|
|
|
itemId = orderItem.id // 使用订单中的商品ID |
|
|
|
if (item.id === 'quality-issue-1' || item.id === 'quality_issue') { |
|
|
|
const inspectItem = this.inspectResult.list?.find(listItem => listItem.id === 'quality_issue') |
|
|
|
return inspectItem ? inspectItem.price : '' |
|
|
|
} |
|
|
|
|
|
|
|
const inspectItem = this.inspectResult.list?.find(listItem => listItem.id == itemId) |
|
|
|
// 普通商品 |
|
|
|
const inspectItem = this.inspectResult.list?.find(listItem => listItem.shopId == item.id) |
|
|
|
return inspectItem ? inspectItem.price : '' |
|
|
|
}, |
|
|
|
updateInspectPrice(item, event) { |
|
|
|
// 更新inspectResult中对应商品的price |
|
|
|
if (item.id === 'unrecyclable-1' || item.id === 'quality-issue-1') { |
|
|
|
// 优化:不可回收和质量问题通过id匹配 |
|
|
|
if (item.id === 'unrecyclable-1' || item.id === 'unrecyclable') { |
|
|
|
const inspectItem = this.inspectResult.list?.find(listItem => listItem.id === 'unrecyclable') |
|
|
|
if (!inspectItem) return |
|
|
|
inspectItem.price = parseFloat(event.detail.value) || 0 |
|
|
|
return |
|
|
|
} |
|
|
|
|
|
|
|
// 优先使用订单中的商品ID,如果没有则使用API商品ID |
|
|
|
if (item.id === 'quality-issue-1' || item.id === 'quality_issue') { |
|
|
|
const inspectItem = this.inspectResult.list?.find(listItem => listItem.id === 'quality_issue') |
|
|
|
if (!inspectItem) return |
|
|
|
inspectItem.price = parseFloat(event.detail.value) || 0 |
|
|
|
return |
|
|
|
} |
|
|
|
// 普通商品 |
|
|
|
let itemId = item.originalId || item.id |
|
|
|
|
|
|
|
// 尝试从订单数据中找到对应的商品ID |
|
|
|
const orderItem = this.getOrderItemByProductId(itemId) |
|
|
|
if (orderItem && orderItem.id) { |
|
|
|
itemId = orderItem.id // 使用订单中的商品ID |
|
|
|
} |
|
|
|
|
|
|
|
let inspectItem = this.inspectResult.list?.find(listItem => listItem.id == itemId) |
|
|
|
|
|
|
|
// 如果不存在,动态创建 |
|
|
|
if (!inspectItem) { |
|
|
|
inspectItem = { |
|
|
|
id: itemId, |
|
|
|
price: '', |
|
|
|
qualifiedNum: 0, |
|
|
|
noQualifiedNum: 0, |
|
|
|
unrecyclable: 0, |
|
|
|
commonOrderList: [] |
|
|
|
} |
|
|
|
this.inspectResult.list.push(inspectItem) |
|
|
|
} |
|
|
|
|
|
|
|
// 只查找,不新建 |
|
|
|
let inspectItem = this.inspectResult.list?.find(listItem => listItem.shopId == (orderItem ? (orderItem.shopId || orderItem.id) : itemId)) |
|
|
|
if (!inspectItem) return // 没有就不处理 |
|
|
|
const newPrice = parseFloat(event.detail.value) || 0 |
|
|
|
inspectItem.price = newPrice |
|
|
|
console.log('更新价格:', itemId, newPrice) |
|
|
|
console.log('当前商品对象:', inspectItem) |
|
|
|
}, |
|
|
|
|
|
|
|
loadMoreGoods() { |
|
|
@ -767,7 +725,7 @@ export default { |
|
|
|
if (item) { |
|
|
|
const newQualified = Math.max(0, (item.qualified || 0) + 1) |
|
|
|
this.$set(item, 'qualified', newQualified) |
|
|
|
this.updateInspectResult(item, 'qualified', 1) |
|
|
|
this.updateInspectResult(item, 'qualified', 1, this.categories[this.currentCategory]?.id) |
|
|
|
// 强制更新categories计算属性,使左侧分类数字变化 |
|
|
|
this.$forceUpdate() |
|
|
|
} |
|
|
@ -1379,3 +1337,5 @@ export default { |
|
|
|
</style> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|