fix:【antd】【erp 系统】finance/account 切换默认的逻辑未实现

This commit is contained in:
YunaiV
2025-10-05 14:19:28 +08:00
parent 8266490674
commit c6bd38f98d
6 changed files with 39 additions and 26 deletions

View File

@@ -51,7 +51,6 @@ export function updateAccount(data: ErpAccountApi.Account) {
} }
/** 修改结算账户默认状态 */ /** 修改结算账户默认状态 */
// TODO @芋艿:这里有少迁移的
export function updateAccountDefaultStatus(id: number, defaultStatus: boolean) { export function updateAccountDefaultStatus(id: number, defaultStatus: boolean) {
return requestClient.put('/erp/account/update-default-status', null, { return requestClient.put('/erp/account/update-default-status', null, {
params: { id, defaultStatus }, params: { id, defaultStatus },

View File

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

View File

@@ -39,6 +39,7 @@ export namespace ErpStockOutApi {
customerId?: number; customerId?: number;
status?: number; status?: number;
} }
}
/** /**
* 查询其它出库单分页 * 查询其它出库单分页

View File

@@ -1,13 +1,9 @@
import type { VbenFormSchema } from '#/adapter/form'; import type { VbenFormSchema } from '#/adapter/form';
import type { VxeTableGridOptions } from '#/adapter/vxe-table'; import type { VxeTableGridOptions } from '#/adapter/vxe-table';
import { h } from 'vue';
import { CommonStatusEnum, DICT_TYPE } from '@vben/constants'; import { CommonStatusEnum, DICT_TYPE } from '@vben/constants';
import { getDictOptions } from '@vben/hooks'; import { getDictOptions } from '@vben/hooks';
import { Tag } from 'ant-design-vue';
import { z } from '#/adapter/form'; import { z } from '#/adapter/form';
/** 新增/修改的表单 */ /** 新增/修改的表单 */
@@ -127,7 +123,12 @@ export function useGridFormSchema(): VbenFormSchema[] {
} }
/** 列表的字段 */ /** 列表的字段 */
export function useGridColumns(): VxeTableGridOptions['columns'] { export function useGridColumns<T = ErpAccountApi.Account>(
onDefaultStatusChange?: (
newStatus: boolean,
row: T,
) => PromiseLike<boolean | undefined>,
): VxeTableGridOptions['columns'] {
return [ return [
{ {
field: 'name', field: 'name',
@@ -163,16 +164,12 @@ export function useGridColumns(): VxeTableGridOptions['columns'] {
field: 'defaultStatus', field: 'defaultStatus',
title: '是否默认', title: '是否默认',
minWidth: 100, minWidth: 100,
slots: { cellRender: {
default: ({ row }) => { attrs: { beforeChange: onDefaultStatusChange },
return h( name: 'CellSwitch',
Tag, props: {
{ checkedValue: true,
class: 'mr-1', unCheckedValue: false,
color: row.defaultStatus ? 'blue' : 'red',
},
() => (row.defaultStatus ? '是' : '否'),
);
}, },
}, },
}, },

View File

@@ -2,7 +2,7 @@
import type { VxeTableGridOptions } from '#/adapter/vxe-table'; import type { VxeTableGridOptions } from '#/adapter/vxe-table';
import type { ErpAccountApi } from '#/api/erp/finance/account'; import type { ErpAccountApi } from '#/api/erp/finance/account';
import { DocAlert, Page, useVbenModal } from '@vben/common-ui'; import { confirm, DocAlert, Page, useVbenModal } from '@vben/common-ui';
import { downloadFileFromBlobPart } from '@vben/utils'; import { downloadFileFromBlobPart } from '@vben/utils';
import { message } from 'ant-design-vue'; import { message } from 'ant-design-vue';
@@ -12,6 +12,7 @@ import {
deleteAccount, deleteAccount,
exportAccount, exportAccount,
getAccountPage, getAccountPage,
updateAccountDefaultStatus,
} from '#/api/erp/finance/account'; } from '#/api/erp/finance/account';
import { $t } from '#/locales'; import { $t } from '#/locales';
@@ -59,12 +60,34 @@ async function handleDelete(row: ErpAccountApi.Account) {
} }
} }
/** 修改默认状态 */
async function handleDefaultStatusChange(
newStatus: boolean,
row: ErpAccountApi.Account,
): Promise<boolean | undefined> {
return new Promise((resolve, reject) => {
const text = newStatus ? '设置' : '取消';
confirm({
content: `确认要${text}"${row.name}"默认吗?`,
})
.then(async () => {
// 更新默认状态
await updateAccountDefaultStatus(row.id!, newStatus);
message.success(`${text}默认成功`);
resolve(true);
})
.catch(() => {
reject(new Error('取消操作'));
});
});
}
const [Grid, gridApi] = useVbenVxeGrid({ const [Grid, gridApi] = useVbenVxeGrid({
formOptions: { formOptions: {
schema: useGridFormSchema(), schema: useGridFormSchema(),
}, },
gridOptions: { gridOptions: {
columns: useGridColumns(), columns: useGridColumns(handleDefaultStatusChange),
height: 'auto', height: 'auto',
keepSource: true, keepSource: true,
proxyConfig: { proxyConfig: {

View File

@@ -3,7 +3,7 @@ import type { VxeTableGridOptions } from '#/adapter/vxe-table';
import type { ErpWarehouseApi } from '#/api/erp/stock/warehouse'; import type { ErpWarehouseApi } from '#/api/erp/stock/warehouse';
import { confirm, DocAlert, Page, useVbenModal } from '@vben/common-ui'; import { confirm, DocAlert, Page, useVbenModal } from '@vben/common-ui';
import { downloadFileFromBlobPart, isEmpty } from '@vben/utils'; import { downloadFileFromBlobPart } from '@vben/utils';
import { message } from 'ant-design-vue'; import { message } from 'ant-design-vue';