review:【erp 系统】相关代码

pull/209/head
YunaiV 2025-09-02 23:16:28 +08:00
parent 744eef46f4
commit 41583c5e41
38 changed files with 70 additions and 85 deletions

View File

@ -50,6 +50,7 @@ export namespace ErpPurchaseInApi {
status?: number;
}
// TODO @nehcupdatePurchaseInStatus 是不是需要?
/** 采购入库状态更新参数 */
export interface PurchaseInStatusParams {
id: number;

View File

@ -24,7 +24,6 @@ export namespace ErpSaleOrderApi {
depositPrice?: number; // 定金金额,单位:元
items?: SaleOrderItem[]; // 销售订单产品明细列表
}
/** ERP 销售订单产品明细 */
export interface SaleOrderItem {
id?: number; // 订单项编号
orderId?: number; // 采购订单编号

View File

@ -17,7 +17,6 @@ export namespace ErpStockCheckApi {
creatorName?: string; // 创建人
items?: StockCheckItem[]; // 盘点产品清单
}
// 库存盘点单产品信息
export interface StockCheckItem {
id?: number; // 编号
warehouseId?: number; // 仓库编号
@ -33,6 +32,7 @@ export namespace ErpStockCheckApi {
stockCount?: number; // 账面库存
remark?: string; // 备注
}
/** 库存盘点单分页查询参数 */
export interface StockCheckPageParams extends PageParam {
no?: string;

View File

@ -26,7 +26,6 @@ const [Form, formApi] = useVbenForm({
class: 'w-full',
},
},
// 2
wrapperClass: 'grid-cols-2',
layout: 'horizontal',
schema: useFormSchema(),

View File

@ -30,7 +30,6 @@ const [Form, formApi] = useVbenForm({
class: 'w-full',
},
},
// 2
wrapperClass: 'grid-cols-2',
layout: 'horizontal',
schema: useFormSchema(),

View File

@ -30,7 +30,6 @@ const [Form, formApi] = useVbenForm({
class: 'w-full',
},
},
// 2
wrapperClass: 'grid-cols-2',
layout: 'horizontal',
schema: useFormSchema(),

View File

@ -30,7 +30,6 @@ const [Form, formApi] = useVbenForm({
class: 'w-full',
},
},
// 2
wrapperClass: 'grid-cols-2',
layout: 'horizontal',
schema: useFormSchema(),

View File

@ -88,6 +88,7 @@ export function useFormSchema(): VbenFormSchema[] {
];
}
// TODO @xuzhiqiang搜索的是不是缺了placeholder
/** 列表的搜索表单 */
export function useGridFormSchema(): VbenFormSchema[] {
return [

View File

@ -21,8 +21,8 @@ const emit = defineEmits(['success']);
const formData = ref<ErpAccountApi.Account>();
const getTitle = computed(() => {
return formData.value?.id
? $t('ui.actionTitle.edit', ['结算产品'])
: $t('ui.actionTitle.create', ['结算产品']);
? $t('ui.actionTitle.edit', ['结算账户'])
: $t('ui.actionTitle.create', ['结算账户']);
});
const [Form, formApi] = useVbenForm({
@ -31,7 +31,6 @@ const [Form, formApi] = useVbenForm({
class: 'w-full',
},
},
// 2
wrapperClass: 'grid-cols-1',
layout: 'horizontal',
schema: useFormSchema(),

View File

@ -31,7 +31,6 @@ const [Form, formApi] = useVbenForm({
class: 'w-full',
},
},
// 2
wrapperClass: 'grid-cols-2',
layout: 'horizontal',
schema: useFormSchema(),

View File

@ -78,12 +78,13 @@ const [Form, formApi] = useVbenForm({
},
});
// TODO @XuZhiqiang 使 /** */
//
const handleUpdateItems = async (items: ErpPurchaseInApi.PurchaseInItem[]) => {
if (formData.value) {
const data = await formApi.getValues();
formData.value = { ...data, items };
formApi.setValues(formData.value, false);
await formApi.setValues(formData.value, false);
}
};
@ -125,10 +126,9 @@ watch(
item.totalPrice = (item.totalProductPrice || 0) + (item.taxPrice || 0);
});
//
const totalPrice = newItems.reduce((sum, item) => {
formData.value.totalPrice = newItems.reduce((sum, item) => {
return sum + (item.totalProductPrice || 0) + (item.taxPrice || 0);
}, 0);
formData.value.totalPrice = totalPrice;
} else {
formData.value.totalPrice = 0;
}
@ -149,9 +149,7 @@ watch(
{ immediate: true },
);
/**
* 创建或更新采购入库
*/
/** 创建或更新采购入库 */
const [Modal, modalApi] = useVbenModal({
async onConfirm() {
const { valid } = await formApi.validate();
@ -221,7 +219,7 @@ const [Modal, modalApi] = useVbenModal({
otherPrice: 0,
items: [],
};
formApi.setValues(formData.value, false);
await formApi.setValues(formData.value, false);
return;
}
//

View File

@ -180,6 +180,7 @@ const init = (items: ErpPurchaseInApi.PurchaseInItem[] | undefined): void => {
return newItem;
})
: [];
// TODO @XuZhiqiang使 await
nextTick(() => {
gridApi.grid.reloadData(tableData.value);
});

View File

@ -24,8 +24,9 @@ const emit = defineEmits<{
}>();
const order = ref<ErpPurchaseOrderApi.PurchaseOrder>();
const open = ref<boolean>(false);
const handleSelectOrder = (selectorder: ErpPurchaseOrderApi.PurchaseOrder) => {
order.value = selectorder;
const handleSelectOrder = (selectOrder: ErpPurchaseOrderApi.PurchaseOrder) => {
order.value = selectOrder;
};
const handleOk = () => {

View File

@ -8,6 +8,7 @@ import { getPurchaseOrderPage } from '#/api/erp/purchase/order';
import { useOrderGridColumns, useOrderGridFormSchema } from '../data';
const emit = defineEmits(['selectRow']);
const [Grid] = useVbenVxeGrid({
formOptions: {
schema: useOrderGridFormSchema(),

View File

@ -71,10 +71,7 @@ const handleUpdateTotalPrice = (totalPrice: number) => {
}
};
// TODO @nehc使 /** */
/**
* 创建或更新采购订单
*/
/** 创建或更新采购订单 */
const [Modal, modalApi] = useVbenModal({
async onConfirm() {
const { valid } = await formApi.validate();

View File

@ -72,8 +72,7 @@ watch(
await nextTick();
tableData.value = [...items];
await nextTick();
// TODO @nehc await
gridApi.grid.reloadData(tableData.value);
await gridApi.grid.reloadData(tableData.value);
},
{
immediate: true,
@ -249,6 +248,7 @@ const init = (
return newItem;
})
: [];
// TODO @XuZhiqiang: await
nextTick(() => {
gridApi.grid.reloadData(tableData.value);
});

View File

@ -1,21 +1,17 @@
<script lang="ts" setup>
import type { ErpPurchaseOrderApi } from '#/api/erp/purchase/order';
import type { ErpPurchaseReturnApi } from '#/api/erp/purchase/return';
import type {ErpPurchaseOrderApi} from '#/api/erp/purchase/order';
import type {ErpPurchaseReturnApi} from '#/api/erp/purchase/return';
import {createPurchaseReturn, getPurchaseReturn, updatePurchaseReturn} from '#/api/erp/purchase/return';
import { computed, nextTick, ref, watch } from 'vue';
import {computed, nextTick, ref, watch} from 'vue';
import { useVbenModal } from '@vben/common-ui';
import {useVbenModal} from '@vben/common-ui';
import { message } from 'ant-design-vue';
import {message} from 'ant-design-vue';
import { useVbenForm } from '#/adapter/form';
import {
createPurchaseReturn,
getPurchaseReturn,
updatePurchaseReturn,
} from '#/api/erp/purchase/return';
import {useVbenForm} from '#/adapter/form';
import { useFormSchema } from '../data';
import {useFormSchema} from '../data';
import PurchaseReturnItemForm from './purchase-return-item-form.vue';
import SelectPurchaseOrderForm from './select-purchase-order-form.vue';
@ -77,6 +73,7 @@ const [Form, formApi] = useVbenForm({
},
});
// TODO @XuZhiqiang /** */
// 退
const handleUpdateItems = async (
items: ErpPurchaseReturnApi.PurchaseReturnItem[],
@ -85,7 +82,7 @@ const handleUpdateItems = async (
const data =
(await formApi.getValues()) as ErpPurchaseReturnApi.PurchaseReturn;
formData.value = { ...data, items };
formApi.setValues(formData.value, false);
await formApi.setValues(formData.value, false);
}
};
@ -127,10 +124,9 @@ watch(
item.totalPrice = (item.totalProductPrice || 0) + (item.taxPrice || 0);
});
//
const totalPrice = newItems.reduce((sum, item) => {
formData.value.totalPrice = newItems.reduce((sum, item) => {
return sum + (item.totalProductPrice || 0) + (item.taxPrice || 0);
}, 0);
formData.value.totalPrice = totalPrice;
} else {
formData.value.totalPrice = 0;
}
@ -151,9 +147,7 @@ watch(
{ immediate: true },
);
/**
* 创建或更新采购退货
*/
/** 创建或更新采购退货 */
const [Modal, modalApi] = useVbenModal({
async onConfirm() {
const { valid } = await formApi.validate();

View File

@ -66,7 +66,7 @@ watch(
await nextTick();
tableData.value = [...items];
await nextTick();
gridApi.grid.reloadData(tableData.value);
await gridApi.grid.reloadData(tableData.value);
},
{
immediate: true,
@ -185,6 +185,7 @@ const init = (
return newItem;
})
: [];
// TODO @XuZhiqiang: await
nextTick(() => {
gridApi.grid.reloadData(tableData.value);
});

View File

@ -24,8 +24,9 @@ const emit = defineEmits<{
}>();
const order = ref<ErpPurchaseOrderApi.PurchaseOrder>();
const open = ref<boolean>(false);
const handleSelectOrder = (selectorder: ErpPurchaseOrderApi.PurchaseOrder) => {
order.value = selectorder;
const handleSelectOrder = (selectOrder: ErpPurchaseOrderApi.PurchaseOrder) => {
order.value = selectOrder;
};
const handleOk = () => {

View File

@ -8,6 +8,7 @@ import { getPurchaseOrderPage } from '#/api/erp/purchase/order';
import { useOrderGridColumns, useOrderGridFormSchema } from '../data';
const emit = defineEmits(['selectRow']);
const [Grid] = useVbenVxeGrid({
formOptions: {
schema: useOrderGridFormSchema(),

View File

@ -144,6 +144,7 @@ export function useFormSchema(): VbenFormSchema[] {
}
/** 列表的搜索表单 */
// TODO @XuZhiqiangplaceholder
export function useGridFormSchema(): VbenFormSchema[] {
return [
{

View File

@ -31,7 +31,6 @@ const [Form, formApi] = useVbenForm({
class: 'w-full',
},
},
// 2
wrapperClass: 'grid-cols-2',
layout: 'horizontal',
schema: useFormSchema(),

View File

@ -71,9 +71,7 @@ const handleUpdateTotalPrice = (totalPrice: number) => {
}
};
/**
* 创建或更新销售订单
*/
/** 创建或更新销售订单 */
const [Modal, modalApi] = useVbenModal({
async onConfirm() {
const { valid } = await formApi.validate();

View File

@ -243,6 +243,7 @@ const init = (items: ErpSaleOrderApi.SaleOrderItem[] | undefined): void => {
return newItem;
})
: [];
// TODO @XuZhiqiang使 await
nextTick(() => {
gridApi.grid.reloadData(tableData.value);
});

View File

@ -79,7 +79,7 @@ const handleUpdateItems = async (items: ErpSaleOutApi.SaleOutItem[]) => {
if (formData.value) {
const data = await formApi.getValues();
formData.value = { ...data, items };
formApi.setValues(formData.value, false);
await formApi.setValues(formData.value, false);
}
};
@ -121,10 +121,9 @@ watch(
item.totalPrice = (item.totalProductPrice || 0) + (item.taxPrice || 0);
});
//
const totalPrice = newItems.reduce((sum, item) => {
formData.value.totalPrice = newItems.reduce((sum, item) => {
return sum + (item.totalProductPrice || 0) + (item.taxPrice || 0);
}, 0);
formData.value.totalPrice = totalPrice;
} else {
formData.value.totalPrice = 0;
}
@ -217,7 +216,7 @@ const [Modal, modalApi] = useVbenModal({
otherPrice: 0,
items: [],
};
formApi.setValues(formData.value, false);
await formApi.setValues(formData.value, false);
return;
}
//

View File

@ -180,6 +180,7 @@ const init = (items: ErpSaleOutApi.SaleOutItem[] | undefined): void => {
return newItem;
})
: [];
// TODO @XuZhiqiang使 await
nextTick(() => {
gridApi.grid.reloadData(tableData.value);
});

View File

@ -24,8 +24,9 @@ const emit = defineEmits<{
}>();
const order = ref<ErpSaleOrderApi.SaleOrder>();
const open = ref<boolean>(false);
const handleSelectOrder = (selectorder: ErpSaleOrderApi.SaleOrder) => {
order.value = selectorder;
const handleSelectOrder = (selectOrder: ErpSaleOrderApi.SaleOrder) => {
order.value = selectOrder;
};
const handleOk = () => {

View File

@ -8,6 +8,7 @@ import { getSaleOrderPage } from '#/api/erp/sale/order';
import { useOrderGridColumns, useOrderGridFormSchema } from '../data';
const emit = defineEmits(['selectRow']);
const [Grid] = useVbenVxeGrid({
formOptions: {
schema: useOrderGridFormSchema(),

View File

@ -1,21 +1,17 @@
<script lang="ts" setup>
import type { ErpSaleOrderApi } from '#/api/erp/sale/order';
import type { ErpSaleReturnApi } from '#/api/erp/sale/return';
import type {ErpSaleOrderApi} from '#/api/erp/sale/order';
import type {ErpSaleReturnApi} from '#/api/erp/sale/return';
import {createSaleReturn, getSaleReturn, updateSaleReturn} from '#/api/erp/sale/return';
import { computed, nextTick, ref, watch } from 'vue';
import {computed, nextTick, ref, watch} from 'vue';
import { useVbenModal } from '@vben/common-ui';
import {useVbenModal} from '@vben/common-ui';
import { message } from 'ant-design-vue';
import {message} from 'ant-design-vue';
import { useVbenForm } from '#/adapter/form';
import {
createSaleReturn,
getSaleReturn,
updateSaleReturn,
} from '#/api/erp/sale/return';
import {useVbenForm} from '#/adapter/form';
import { useFormSchema } from '../data';
import {useFormSchema} from '../data';
import SaleReturnItemForm from './sale-return-item-form.vue';
import SelectSaleOrderForm from './select-sale-order-form.vue';
@ -78,16 +74,16 @@ const [Form, formApi] = useVbenForm({
},
});
// 退
/** 更新销售退货项 */
const handleUpdateItems = async (items: ErpSaleReturnApi.SaleReturnItem[]) => {
if (formData.value) {
const data = await formApi.getValues();
formData.value = { ...data, items };
formApi.setValues(formData.value, false);
await formApi.setValues(formData.value, false);
}
};
//
/** 选择采购订单 */
const handleUpdateOrder = (order: ErpSaleOrderApi.SaleOrder) => {
formData.value = {
...formData.value,
@ -125,10 +121,9 @@ watch(
item.totalPrice = (item.totalProductPrice || 0) + (item.taxPrice || 0);
});
//
const totalPrice = newItems.reduce((sum, item) => {
formData.value.totalPrice = newItems.reduce((sum, item) => {
return sum + (item.totalProductPrice || 0) + (item.taxPrice || 0);
}, 0);
formData.value.totalPrice = totalPrice;
} else {
formData.value.totalPrice = 0;
}
@ -221,7 +216,7 @@ const [Modal, modalApi] = useVbenModal({
otherPrice: 0,
items: [],
};
formApi.setValues(formData.value, false);
await formApi.setValues(formData.value, false);
return;
}
//

View File

@ -180,6 +180,7 @@ const init = (items: ErpSaleOutApi.SaleOutItem[] | undefined): void => {
return newItem;
})
: [];
// TODO @XuZhiqiang使 await
nextTick(() => {
gridApi.grid.reloadData(tableData.value);
});

View File

@ -24,8 +24,9 @@ const emit = defineEmits<{
}>();
const order = ref<ErpSaleOrderApi.SaleOrder>();
const open = ref<boolean>(false);
const handleSelectOrder = (selectorder: ErpSaleOrderApi.SaleOrder) => {
order.value = selectorder;
const handleSelectOrder = (selectOrder: ErpSaleOrderApi.SaleOrder) => {
order.value = selectOrder;
};
const handleOk = () => {

View File

@ -8,6 +8,7 @@ import { getSaleOrderPage } from '#/api/erp/sale/order';
import { useOrderGridColumns, useOrderGridFormSchema } from '../data';
const emit = defineEmits(['selectRow']);
const [Grid] = useVbenVxeGrid({
formOptions: {
schema: useOrderGridFormSchema(),

View File

@ -49,9 +49,7 @@ const handleUpdateItems = (items: ErpStockCheckApi.StockCheckItem[]) => {
}
};
/**
* 创建或更新库存盘点单
*/
/** 创建或更新库存盘点单 */
const [Modal, modalApi] = useVbenModal({
async onConfirm() {
const { valid } = await formApi.validate();

View File

@ -92,7 +92,7 @@ watch(
await nextTick();
tableData.value = [...items];
await nextTick();
gridApi.grid.reloadData(tableData.value);
await gridApi.grid.reloadData(tableData.value);
},
{
immediate: true,
@ -122,7 +122,8 @@ function handleAdd() {
tableData.value.push(newRow);
gridApi.grid.insertAt(newRow, -1);
emit('update:items', [...tableData.value]);
// cellClassName
// cellClassName
// TODO @XuZhiqiang使 await
nextTick(() => {
gridApi.grid.refreshColumn();
});

View File

@ -92,7 +92,7 @@ watch(
await nextTick();
tableData.value = [...items];
await nextTick();
gridApi.grid.reloadData(tableData.value);
await gridApi.grid.reloadData(tableData.value);
},
{
immediate: true,

View File

@ -32,7 +32,6 @@ const [Form, formApi] = useVbenForm({
},
labelWidth: 140,
},
// 2
wrapperClass: 'grid-cols-2',
layout: 'horizontal',
schema: useFormSchema(),

View File

@ -27,7 +27,6 @@ const [Form, formApi] = useVbenForm({
class: 'w-full',
},
},
// 2
wrapperClass: 'grid-cols-2',
layout: 'horizontal',
schema: useFormSchema(),

View File

@ -27,7 +27,6 @@ const [Form, formApi] = useVbenForm({
class: 'w-full',
},
},
// 2
wrapperClass: 'grid-cols-2',
layout: 'horizontal',
schema: useFormSchema(),