2026-09-03 6535d8f34b4b1ed0d9551608847b4041c2e9e701
src/views/srm/supplier/index.vue
@@ -3,18 +3,21 @@
import type { SrmSupplierApi } from '#/api/srm/supplier';
import { 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 {
  deleteSupplier,
  exportSupplierExcel,
  getSupplierPage,
} from '#/api/srm/supplier';
import { $t } from '#/locales';
import { useGridColumns, useGridFormSchema } from './data';
import SupplierForm from './modules/form.vue';
import SupplierImportForm from './modules/import-form.vue';
defineOptions({ name: 'SrmSupplier' });
@@ -28,6 +31,18 @@
function handleEdit(row: SrmSupplierApi.SupplierVO) {
  formModalApi.setData(row).open();
}
/** 导入供应商 */
function handleImport() {
  importModalApi.open();
}
/** 导出供应商(按当前搜索条件) */
async function handleExport() {
  const formValues = await gridApi.formApi.getValues();
  const data = await exportSupplierExcel(formValues);
  downloadFileFromBlobPart({ fileName: '供应商数据.xlsx', source: data });
}
async function handleDelete(row: SrmSupplierApi.SupplierVO) {
@@ -46,6 +61,11 @@
const [FormModal, formModalApi] = useVbenModal({
  connectedComponent: SupplierForm,
  destroyOnClose: true,
});
const [SupplierImportModal, importModalApi] = useVbenModal({
  connectedComponent: SupplierImportForm,
  destroyOnClose: true,
});
@@ -77,6 +97,7 @@
<template>
  <Page auto-content-height>
    <FormModal @success="handleRefresh" />
    <SupplierImportModal @success="handleRefresh" />
    <Grid table-title="供应商列表">
      <template #toolbar-tools>
        <TableAction
@@ -88,6 +109,20 @@
              auth: ['srm:supplier:create'],
              onClick: handleCreate,
            },
            {
              label: $t('ui.actionTitle.import'),
              type: 'primary',
              icon: ACTION_ICON.UPLOAD,
              auth: ['srm:supplier:import'],
              onClick: handleImport,
            },
            {
              label: $t('ui.actionTitle.export'),
              type: 'primary',
              icon: ACTION_ICON.DOWNLOAD,
              auth: ['srm:supplier:export'],
              onClick: handleExport,
            },
          ]"
        />
      </template>