fix(orders): 将parentNumber的值从'StyleQuality'和'QualityType'更改为'ProductQuality'

修复了多个组件中parentNumber的值,确保一致性并避免潜在的错误。同时,在订单编辑页面添加了重置明细的功能,允许用户根据样式明细重新生成订单明细。
This commit is contained in:
user 2025-05-25 22:33:52 +08:00
parent 58d0e84e75
commit 336cfbee92
4 changed files with 96 additions and 5 deletions

View File

@ -247,7 +247,7 @@ export default defineComponent({
number: { name: '' },
name: { name: '' },
property: { name: '' },
parentNumber: { op: '=', value: 'QualityType' },
parentNumber: { op: '=', value: 'ProductQuality' },
status: { op: '=', value: '1' },
},
}),
@ -587,6 +587,96 @@ export default defineComponent({
return true; // 允许标签页切换
};
const resetDtlEvent = async () => {
if (!order.value.styleNo) {
alertService.showError($t('jewpmsApp.order.styleNo.required'));
return;
}
try {
// 1. 删除原有的orderdtl记录
if (order.value.number && order.value.quality) {
// 根据当前活动的tab页决定处理哪种类型的明细
let params;
if (activeTab.value === 'setting') {
// 处理setting明细
params = getParamsFromColumns(settingColumns.value, {}, false, {
number: { op: '=', value: order.value.number },
quality: { op: '=', value: order.value.quality },
material: { op: '<>', value: processMaterial.value },
status: { op: '=', value: '1' },
});
} else {
// 处理process明细
params = getParamsFromColumns(processColumns.value, {}, false, {
number: { op: '=', value: order.value.number },
quality: { op: '=', value: order.value.quality },
material: { op: '=', value: processMaterial.value },
status: { op: '=', value: '1' },
});
}
// 获取当前tab页的明细
const dtlsRes = await axios.get(`api/orderdtls?${buildPaginationQuery({ sort: sort() })}`, {
params: params,
});
// 删除当前tab页的明细
for (const dtl of dtlsRes.data) {
await axios.delete(`api/orderdtls/${dtl.id}`);
}
// 2. 从jhi_styledtl表中获取相应的明细信息
let styleDtlParams = {
number: { op: '=', value: order.value.styleNo },
quality: { op: '=', value: order.value.quality },
status: { op: '=', value: '1' },
};
// 根据当前tab页添加material条件
if (activeTab.value === 'setting') {
styleDtlParams['material'] = { op: '<>', value: processMaterial.value };
} else {
styleDtlParams['material'] = { op: '=', value: processMaterial.value };
}
const styleDtlsRes = await axios.get('api/styledtls', {
params: styleDtlParams,
});
// 3. 将样式明细转换为订单明细并保存
for (const styleDtl of styleDtlsRes.data) {
const newOrderDtl = {
number: order.value.number,
name: styleDtl.name || '',
quality: order.value.quality,
process: styleDtl.process,
material: styleDtl.material,
subgroup: activeTab.value === 'setting' ? 'S' : 'M',
quantity: styleDtl.quantity || 0,
weight: styleDtl.weight || 0,
custPrice: styleDtl.custPrice || 0,
costPrice: styleDtl.costPrice || 0,
custLabor: styleDtl.custLabor || 0,
costLabor: styleDtl.costLabor || 0,
unitHour: styleDtl.unitHour || 0,
remark: styleDtl.remark || '',
sortNo: styleDtl.sortNo,
status: '1',
};
await axios.post('api/orderdtls', newOrderDtl);
}
// 4. 刷新订单明细
await loadOrderDtls();
alertService.showSuccess($t('jewpmsApp.order.detail.reset.success'));
}
} catch (e) {
alertService.showHttpError(e);
}
};
onMounted(() => {
loadData();
});
@ -630,6 +720,7 @@ export default defineComponent({
settingColumns,
companies,
searchCompanies,
resetDtlEvent,
};
},
});

View File

@ -274,8 +274,8 @@
:edit-render="column.editRender"
>
<template #header="{ column }" v-if="column.title === 'entity.action.actions'">
<span class="vxe-button">{{ $t(column.title) }}</span>
<vxe-button class="btn-circle" icon="vxe-icon-square-plus-square" status="primary" @click="addDtlEvent"></vxe-button>
<vxe-button class="btn-circle" icon="vxe-icon-refresh" status="warning" @click="resetDtlEvent"></vxe-button>
</template>
<template #default="{ row }" v-if="column.title === 'entity.action.actions'">
<div class="vxe-group">
@ -312,8 +312,8 @@
:edit-render="column.editRender"
>
<template #header="{ column }" v-if="column.title === 'entity.action.actions'">
<span class="vxe-button">{{ $t(column.title) }}</span>
<vxe-button class="btn-circle" icon="vxe-icon-square-plus-square" status="primary" @click="addDtlEvent"></vxe-button>
<vxe-button class="btn-circle" icon="vxe-icon-refresh" status="warning" @click="resetDtlEvent"></vxe-button>
</template>
<template #default="{ row }" v-if="column.title === 'entity.action.actions'">
<div class="vxe-group">

View File

@ -223,7 +223,7 @@ export default defineComponent({
params: {
number: { name: '' },
name: { name: '' },
parentNumber: { op: '=', value: 'StyleQuality' },
parentNumber: { op: '=', value: 'ProductQuality' },
status: { op: '=', value: '1' },
},
}),

View File

@ -200,7 +200,7 @@ export default defineComponent({
number: { name: '' },
name: { name: '' },
property: { name: '' },
parentNumber: { op: '=', value: 'StyleQuality' },
parentNumber: { op: '=', value: 'ProductQuality' },
status: { op: '=', value: '1' },
},
}),