feat(order): 添加批量更新订单明细功能和订单号搜索功能
在OrderDtlService中新增批量更新订单明细的方法,并在OrderDtlResource中添加相应的API接口。同时,在订单编辑页面中实现了订单号的搜索功能,确保用户能够快速查找已存在的订单。更新了相关的国际化文件以支持新功能。
This commit is contained in:
parent
e467de3a75
commit
54bda60541
@ -117,4 +117,15 @@ public class OrderDtlService {
|
||||
.map(organization -> orderDtlRepository.getRows(organization, table, params, pageable))
|
||||
.flatMapMany(orderDtls -> orderDtls);
|
||||
}
|
||||
|
||||
// 批量更新OrderDtl
|
||||
public Flux<OrderDtl> updateOrderDtls(java.util.List<OrderDtl> orderDtls) {
|
||||
return Flux.fromIterable(orderDtls).flatMap(orderDtl -> {
|
||||
if (orderDtl.getId() != null) {
|
||||
return updateOrderDtl(orderDtl.getId(), orderDtl);
|
||||
} else {
|
||||
return Mono.empty();
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@ -101,4 +101,9 @@ public class OrderDtlResource {
|
||||
ResponseEntity.ok().header("X-Total-Count", total.toString()).body(orderDtlService.getOrderDtls(table, params, pageable))
|
||||
);
|
||||
}
|
||||
|
||||
@PutMapping("/orderdtls")
|
||||
public Flux<OrderDtl> updateOrderDtls(@RequestBody java.util.List<OrderDtl> orderDtls) {
|
||||
return orderDtlService.updateOrderDtls(orderDtls);
|
||||
}
|
||||
}
|
||||
|
||||
@ -184,7 +184,7 @@ export default defineComponent({
|
||||
const number = `${cost.value.matGroup || ''}${cost.value.matType || ''}${cost.value.process || ''}${cost.value.quality || '*'}`;
|
||||
// 获取流水号
|
||||
const serialRes = await axios.get('api/serials/next/' + number);
|
||||
const serial = serialRes.data.serialNumber.toString().padStart(5, '0');
|
||||
const serial = serialRes.data.serialNumber.toString(36).toUpperCase().padStart(5, '0');
|
||||
|
||||
// 生成编号
|
||||
cost.value.number = `${number}${serial}`;
|
||||
|
||||
@ -29,6 +29,8 @@ export default defineComponent({
|
||||
const removeRow = ref(null);
|
||||
const showDelete = ref(false);
|
||||
const propOrder = ref('sortNo');
|
||||
const tempPrefix = ref('TEMP');
|
||||
const orderPrefix = ref('ORD');
|
||||
const reverse = ref(false);
|
||||
const activeTab = ref('setting');
|
||||
const orderForm = ref<VxeFormInstance>();
|
||||
@ -252,13 +254,6 @@ export default defineComponent({
|
||||
const loadData = async () => {
|
||||
loading.value = true;
|
||||
try {
|
||||
const id = route.params?.id;
|
||||
if (id) {
|
||||
const res = await axios.get(`api/orders/${id}`);
|
||||
order.value = res.data;
|
||||
loadOrderDtls();
|
||||
}
|
||||
|
||||
const [
|
||||
qualityDictsRes,
|
||||
processTypesRes,
|
||||
@ -358,8 +353,13 @@ export default defineComponent({
|
||||
styles.value = stylesRes.data;
|
||||
companies.value = companiesRes.data;
|
||||
|
||||
const orderId = route.params?.id;
|
||||
if (orderId) {
|
||||
const { data } = await axios.get(`api/orders/${orderId}`);
|
||||
order.value = data;
|
||||
await loadOrderDtls();
|
||||
} else {
|
||||
// 如果是新建订单,设置默认状态
|
||||
if (!route.params?.id) {
|
||||
const defaultStatus = statusDicts.value.find(item => {
|
||||
try {
|
||||
const propertyObj = JSON.parse(item.property || '{}');
|
||||
@ -371,13 +371,12 @@ export default defineComponent({
|
||||
if (defaultStatus) {
|
||||
order.value.status = defaultStatus.number;
|
||||
}
|
||||
}
|
||||
// 获取流水号
|
||||
const serialRes = await axios.get('api/serials/next/' + tempPrefix.value);
|
||||
const serial = serialRes.data.serialNumber.toString(36).toUpperCase().padStart(10, '0');
|
||||
|
||||
const orderId = route.params?.id;
|
||||
if (orderId) {
|
||||
const { data } = await axios.get(`api/orders/${orderId}`);
|
||||
order.value = data;
|
||||
await loadOrderDtls();
|
||||
// 生成订单临时编号
|
||||
order.value.number = `${tempPrefix.value}${serial}`;
|
||||
}
|
||||
// 检查路由参数中是否有拍照数据
|
||||
const photoData = route.query?.photoData;
|
||||
@ -404,6 +403,24 @@ export default defineComponent({
|
||||
await axios.put(`api/orders/${order.value.id}`, order.value);
|
||||
alertService.showInfo($t('jewpmsApp.order.updated', { param: order.value.name }));
|
||||
} else {
|
||||
if (order.value.number.startsWith(tempPrefix.value)) {
|
||||
// 获取流水号
|
||||
const serialRes = await axios.get('api/serials/next/' + orderPrefix.value);
|
||||
const serial = serialRes.data.serialNumber.toString(36).toUpperCase().padStart(10, '0');
|
||||
const orderNumber = `${orderPrefix.value}${serial}`;
|
||||
//更新orderdtl 的number
|
||||
const orderDtls = await axios.get(`api/orderdtls`, {
|
||||
params: {
|
||||
number: { op: '=', value: order.value.number },
|
||||
},
|
||||
});
|
||||
orderDtls.data.forEach(item => {
|
||||
item.number = orderNumber;
|
||||
});
|
||||
await axios.put(`api/orderdtls`, orderDtls.data);
|
||||
//更新为正式订单号后,再保存
|
||||
order.value.number = orderNumber;
|
||||
}
|
||||
await axios.post('api/orders', order.value);
|
||||
alertService.showSuccess($t('jewpmsApp.order.created'));
|
||||
}
|
||||
@ -474,6 +491,16 @@ export default defineComponent({
|
||||
}
|
||||
};
|
||||
|
||||
const searchOrder = async event => {
|
||||
if (!order.value.id && !order.value.number) {
|
||||
const { data } = await axios.get('api/orders', {
|
||||
params: { number: { name: '', op: '=', value: order.value.number } },
|
||||
});
|
||||
} else {
|
||||
alertService.showWarn($t('jewpmsApp.order.home.existsOrder'));
|
||||
}
|
||||
};
|
||||
|
||||
const handleStyleChange = async event => {
|
||||
const styleNo = event.value;
|
||||
if (!styleNo) return;
|
||||
@ -787,6 +814,7 @@ export default defineComponent({
|
||||
processRef,
|
||||
settingRef,
|
||||
save,
|
||||
searchOrder,
|
||||
handleStyleChange,
|
||||
handlePrint,
|
||||
activeTab,
|
||||
|
||||
@ -27,7 +27,14 @@
|
||||
<vxe-form :data="order" custom-layout class="vxe-form-group" title-align="left" title-width="120" :rules="formRules" ref="orderForm">
|
||||
<vxe-form-item field="number" :title="$t('jewpmsApp.order.number')" :item-render="{}">
|
||||
<template #default="{ data }">
|
||||
<vxe-input v-model="data.number" type="text" :readonly="!!order.id" data-cy="number" :clearable="!order.id" />
|
||||
<vxe-input
|
||||
v-model="data.number"
|
||||
type="text"
|
||||
:readonly="!!order.id"
|
||||
data-cy="number"
|
||||
:clearable="!order.id"
|
||||
@search-click="searchOrder"
|
||||
/>
|
||||
</template>
|
||||
</vxe-form-item>
|
||||
|
||||
|
||||
@ -5,7 +5,8 @@
|
||||
"title": "订单管理",
|
||||
"createLabel": "创建新订单",
|
||||
"editLabel": "编辑订单",
|
||||
"notFound": "未找到订单"
|
||||
"notFound": "未找到订单",
|
||||
"existsOrder": "订单号已存在"
|
||||
},
|
||||
"created": "创建成功,订单编号为 { param }",
|
||||
"updated": "更新成功,订单编号为 { param }",
|
||||
|
||||
Loading…
Reference in New Issue
Block a user