diff --git a/apps/web-antd/src/views/erp/sale/order/modules/form.vue b/apps/web-antd/src/views/erp/sale/order/modules/form.vue
index fb80b59c4..46c2b57eb 100644
--- a/apps/web-antd/src/views/erp/sale/order/modules/form.vue
+++ b/apps/web-antd/src/views/erp/sale/order/modules/form.vue
@@ -42,7 +42,7 @@ const [Form, formApi] = useVbenForm({
},
wrapperClass: 'grid-cols-3',
layout: 'vertical',
- schema: useFormSchema(),
+ schema: useFormSchema(formType.value),
showDefaultActions: false,
handleValuesChange: (values, changedFields) => {
// 目的:同步到 item-form 组件,触发整体的价格计算
@@ -95,7 +95,6 @@ const [Modal, modalApi] = useVbenModal({
modalApi.lock();
// 提交表单
const data = (await formApi.getValues()) as ErpSaleOrderApi.SaleOrder;
- data.items = formData.value?.items;
try {
await (formType.value === 'create'
? createSaleOrder(data)
diff --git a/apps/web-antd/src/views/erp/sale/order/modules/item-form.vue b/apps/web-antd/src/views/erp/sale/order/modules/item-form.vue
index a6a1e2476..06427aa63 100644
--- a/apps/web-antd/src/views/erp/sale/order/modules/item-form.vue
+++ b/apps/web-antd/src/views/erp/sale/order/modules/item-form.vue
@@ -255,6 +255,10 @@ onMounted(async () => {
/>
{{ row.productPrice || '-' }}
+
+
+ {{ row.remark || '-' }}
+
{
/>
{{ row.taxPercent || '-' }}
-
-
- {{ row.remark || '-' }}
-
>();
-const getTitle = computed(() => {
- if (formType.value === 'create') return '添加销售出库';
- if (formType.value === 'update') return '编辑销售出库';
- return '销售出库详情';
-});
+/* eslint-disable unicorn/no-nested-ternary */
+const getTitle = computed(() =>
+ formType.value === 'create'
+ ? $t('ui.actionTitle.create', ['销售出库'])
+ : formType.value === 'edit'
+ ? $t('ui.actionTitle.edit', ['销售出库'])
+ : '销售出库详情',
+);
const [Form, formApi] = useVbenForm({
commonConfig: {
@@ -68,7 +72,7 @@ const [Form, formApi] = useVbenForm({
formData.value.totalPrice =
(formData.value.discountedPrice || 0) +
(formData.value.otherPrice || 0);
-
+ // TODO @芋艿:是否需要,去掉?
formApi.setValues(formData.value, false);
}
},
@@ -79,11 +83,13 @@ const handleUpdateItems = async (items: ErpSaleOutApi.SaleOutItem[]) => {
if (formData.value) {
const data = await formApi.getValues();
formData.value = { ...data, items };
+ // TODO @芋艿:是否需要,去掉?
await formApi.setValues(formData.value, false);
}
};
/** 选择销售订单 */
+// TODO @AI:不确定
const handleUpdateOrder = (order: ErpSaleOrderApi.SaleOrder) => {
formData.value = {
...formData.value,
@@ -109,72 +115,61 @@ const handleUpdateOrder = (order: ErpSaleOrderApi.SaleOrder) => {
formApi.setValues(formData.value, false);
};
-watch(
- () => formData.value.items!,
- (newItems: ErpSaleOutApi.SaleOutItem[]) => {
- if (newItems && newItems.length > 0) {
- // 计算每个产品的总价、税额和总价
- newItems.forEach((item) => {
- item.totalProductPrice = (item.productPrice || 0) * (item.count || 0);
- item.taxPrice =
- (item.totalProductPrice || 0) * ((item.taxPercent || 0) / 100);
- item.totalPrice = (item.totalProductPrice || 0) + (item.taxPrice || 0);
- });
- // 计算总价
- formData.value.totalPrice = newItems.reduce((sum, item) => {
- return sum + (item.totalProductPrice || 0) + (item.taxPrice || 0);
- }, 0);
- } else {
- formData.value.totalPrice = 0;
- }
- // 优惠金额
- formData.value.discountPrice =
- ((formData.value.totalPrice || 0) *
- (formData.value.discountPercent || 0)) /
- 100;
- // 优惠后价格
- formData.value.discountedPrice =
- formData.value.totalPrice - formData.value.discountPrice;
+// TODO @AI:不确定
+// watch(
+// () => formData.value.items!,
+// (newItems: ErpSaleOutApi.SaleOutItem[]) => {
+// if (newItems && newItems.length > 0) {
+// // 计算每个产品的总价、税额和总价
+// newItems.forEach((item) => {
+// item.totalProductPrice = (item.productPrice || 0) * (item.count || 0);
+// item.taxPrice =
+// (item.totalProductPrice || 0) * ((item.taxPercent || 0) / 100);
+// item.totalPrice = (item.totalProductPrice || 0) + (item.taxPrice || 0);
+// });
+// // 计算总价
+// formData.value.totalPrice = newItems.reduce((sum, item) => {
+// return sum + (item.totalProductPrice || 0) + (item.taxPrice || 0);
+// }, 0);
+// } else {
+// formData.value.totalPrice = 0;
+// }
+// // 优惠金额
+// formData.value.discountPrice =
+// ((formData.value.totalPrice || 0) *
+// (formData.value.discountPercent || 0)) /
+// 100;
+// // 优惠后价格
+// formData.value.discountedPrice =
+// formData.value.totalPrice - formData.value.discountPrice;
+//
+// // 计算最终价格(包含其他费用)
+// formData.value.totalPrice =
+// formData.value.discountedPrice + (formData.value.otherPrice || 0);
+// formApi.setValues(formData.value, false);
+// },
+// { immediate: true },
+// );
- // 计算最终价格(包含其他费用)
- formData.value.totalPrice =
- formData.value.discountedPrice + (formData.value.otherPrice || 0);
- formApi.setValues(formData.value, false);
- },
- { immediate: true },
-);
-
-/**
- * 创建或更新销售出库
- */
+/** 创建或更新销售出库 */
const [Modal, modalApi] = useVbenModal({
async onConfirm() {
const { valid } = await formApi.validate();
if (!valid) {
return;
}
- await nextTick();
-
const itemFormInstance = Array.isArray(itemFormRef.value)
? itemFormRef.value[0]
: itemFormRef.value;
- if (itemFormInstance && typeof itemFormInstance.validate === 'function') {
- try {
- const isValid = await itemFormInstance.validate();
- if (!isValid) {
- message.error('子表单验证失败');
- return;
- }
- } catch (error: any) {
- message.error(error.message || '子表单验证失败');
- return;
- }
- } else {
- message.error('子表单验证方法不存在');
+ try {
+ itemFormInstance.validate();
+ } catch (error: any) {
+ message.error(error.message || '子表单验证失败');
return;
}
// 验证产品清单不能为空
+ // TODO @芋艿:需要校验么?
if (!formData.value?.items || formData.value.items.length === 0) {
message.error('产品清单不能为空,请至少添加一个产品');
return;
@@ -195,7 +190,7 @@ const [Modal, modalApi] = useVbenModal({
// 关闭并提示
await modalApi.close();
emit('success');
- message.success(formType.value === 'create' ? '新增成功' : '更新成功');
+ message.success($t('ui.actionMessage.operationSuccess'));
} finally {
modalApi.unlock();
}
@@ -278,27 +273,21 @@ defineExpose({ modalApi });