!205 feat(@vben/web-antd): erp 模块除去收款单和付款单功能基本完成

* fix(@vben/web-antd): erp 解决冲突
* fix(@vben/web-antd): erp 更新采购和销售退货表单,修复关联订单选择功能不统一详细可编辑的问题,统一文件名称格式
* feat(@vben/web-antd): erp-finance-account 新增结算账户管理功能,包括表单、列表及相关操作
* feat(@vben/web-antd): erp-sale-return 新增销售退货管理功能,包括退货列表、表单及相关操作
* feat(@vben/web-antd): erp-sale-out 新增销售出库管理功能,包括出库列表、表单及相关操作
* feat(@vben/web-antd): erp-sale-order 新增销售订单管理功能,包括订单列表、表单及相关操作
* feat(@vben/web-antd): erp-sale-customer 新增客户管理功能,包括客户表单、列表及相关操作
* feat(@vben/web-antd): erp-purchase-return 新增采购退货管理功能,包括表单、列表及相关操作
* feat(@vben/web-antd): erp-purchase-in 新增采购入库管理功能,包括表单、列表及相关操作
* feat(@vben/web-antd): erp-stock-check 新增库存盘点单管理功能,包括表单、列表及相关操作
* feat(@vben/web-antd): erp-stock-move 新增库存调拨单管理功能,包括表单、列表及相关操作
* feat(@vben/web-antd): erp-stock-out 新增其它出库单管理功能,包括表单、列表及相关操作
* fix(@vben/web-antd): erp-stock-in 修复提交表单时清空产品项 ID,确保请求成功不报row_xxx报错
This commit is contained in:
XuZhiqiang
2025-08-26 08:40:01 +00:00
committed by xingyu
parent 4af5931e92
commit bc2b71baa3
53 changed files with 10508 additions and 247 deletions

View File

@@ -1,34 +1,219 @@
<script lang="ts" setup>
import { DocAlert, Page } from '@vben/common-ui';
import type { VxeTableGridOptions } from '#/adapter/vxe-table';
import type { ErpStockMoveApi } from '#/api/erp/stock/move';
import { Button } from 'ant-design-vue';
import { DocAlert, Page, useVbenModal } from '@vben/common-ui';
import { downloadFileFromBlobPart } from '@vben/utils';
import { message } from 'ant-design-vue';
import { ACTION_ICON, TableAction, useVbenVxeGrid } from '#/adapter/vxe-table';
import {
deleteStockMove,
exportStockMove,
getStockMovePage,
updateStockMoveStatus,
} from '#/api/erp/stock/move';
import { $t } from '#/locales';
import { useGridColumns, useGridFormSchema } from './data';
import StockInForm from './modules/form.vue';
/** 库存调拨单管理 */
defineOptions({ name: 'ErpStockMove' });
const [FormModal, formModalApi] = useVbenModal({
connectedComponent: StockInForm,
destroyOnClose: true,
});
/** 刷新表格 */
function onRefresh() {
gridApi.query();
}
/** 导出库存调拨单 */
async function handleExport() {
const data = await exportStockMove(await gridApi.formApi.getValues());
downloadFileFromBlobPart({ fileName: '库存调拨单.xls', source: data });
}
/** 新增/编辑/详情 */
function openForm(type: string, id?: number) {
formModalApi.setData({ type, id }).open();
}
/** 删除 */
async function handleDelete(ids: any[]) {
const hideLoading = message.loading({
content: '删除中...',
duration: 0,
key: 'action_process_msg',
});
try {
await deleteStockMove(ids);
message.success({
content: '删除成功',
key: 'action_process_msg',
});
onRefresh();
} finally {
hideLoading();
}
}
/** 审核/反审核 */
async function handleUpdateStatus(id: any, status: number) {
const statusText = status === 20 ? '审核' : '反审核';
const hideLoading = message.loading({
content: `${statusText}中...`,
duration: 0,
key: 'action_process_msg',
});
try {
await updateStockMoveStatus({ id, status });
message.success({
content: `${statusText}成功`,
key: 'action_process_msg',
});
onRefresh();
} finally {
hideLoading();
}
}
const [Grid, gridApi] = useVbenVxeGrid({
formOptions: {
schema: useGridFormSchema(),
},
gridOptions: {
columns: useGridColumns(),
height: 'auto',
keepSource: true,
proxyConfig: {
ajax: {
query: async ({ page }, formValues) => {
return await getStockMovePage({
pageNo: page.currentPage,
pageSize: page.pageSize,
...formValues,
});
},
},
},
rowConfig: {
keyField: 'id',
},
toolbarConfig: {
refresh: true,
search: true,
},
checkboxConfig: {
reserve: true,
},
} as VxeTableGridOptions<ErpStockMoveApi.StockMove>,
});
</script>
<template>
<Page>
<Page auto-content-height>
<template #doc>
<DocAlert
title="【库存】库存调拨、库存盘点"
url="https://doc.iocoder.cn/erp/stock-move-check/"
/>
</template>
<Button
danger
type="link"
target="_blank"
href="https://github.com/yudaocode/yudao-ui-admin-vue3"
>
该功能支持 Vue3 + element-plus 版本
</Button>
<br />
<Button
type="link"
target="_blank"
href="https://github.com/yudaocode/yudao-ui-admin-vue3/blob/master/src/views/erp/stock/move/index"
>
可参考
https://github.com/yudaocode/yudao-ui-admin-vue3/blob/master/src/views/erp/stock/move/index
代码pull request 贡献给我们
</Button>
<Grid table-title="库存调拨单列表">
<template #toolbar-tools>
<TableAction
:actions="[
{
label: $t('ui.actionTitle.create', ['库存调拨']),
type: 'primary',
icon: ACTION_ICON.ADD,
auth: ['erp:stock-move:create'],
onClick: () => openForm('create'),
},
{
label: $t('ui.actionTitle.export'),
type: 'default',
icon: ACTION_ICON.DOWNLOAD,
auth: ['erp:stock-move:export'],
onClick: handleExport,
},
{
label: '批量删除',
type: 'default',
danger: true,
icon: ACTION_ICON.DELETE,
auth: ['erp:stock-move:delete'],
popConfirm: {
title: '是否删除所选中数据?',
confirm: () => {
const checkboxRecords = gridApi.grid.getCheckboxRecords();
if (checkboxRecords.length === 0) {
message.warning('请选择要删除的数据');
return;
}
handleDelete(checkboxRecords.map((item) => item.id));
},
},
},
]"
/>
</template>
<template #actions="{ row }">
<TableAction
:actions="[
{
label: '详情',
icon: ACTION_ICON.VIEW,
auth: ['erp:stock-move:query'],
onClick: () => openForm('detail', row.id),
},
{
label: '编辑',
auth: ['erp:stock-move:update'],
icon: ACTION_ICON.EDIT,
disabled: row.status !== 10,
onClick: () => openForm('update', row.id),
},
{
label: '审核',
auth: ['erp:stock-move:update'],
ifShow: row.status === 10,
popConfirm: {
title: '确认要审核该调度单吗?',
confirm: () => handleUpdateStatus(row.id, 20),
},
},
{
label: '反审核',
danger: true,
auth: ['erp:stock-move:update'],
ifShow: row.status === 20,
popConfirm: {
title: '确认要反审核该调度单吗?',
confirm: () => handleUpdateStatus(row.id, 10),
},
},
{
label: '删除',
danger: true,
auth: ['erp:stock-move:delete'],
disabled: row.status !== 10,
popConfirm: {
title: '确认要删除该调度单吗?',
confirm: () => handleDelete([row.id]),
},
},
]"
/>
</template>
</Grid>
<!-- 表单弹窗 -->
<FormModal @success="onRefresh" />
</Page>
</template>