gaoluyang
10 天以前 d841a8ea6dc2f7fdedbf0ea2b1e539842f5f3e37
src/views/mes/qc/rqc/index.vue
@@ -2,15 +2,20 @@
import type { VxeTableGridOptions } from '#/adapter/vxe-table';
import type { MesQcRqcApi } from '#/api/mes/qc/rqc';
import { ref } from 'vue';
import { Page, useVbenModal } from '@vben/common-ui';
import { MesQcStatusEnum } from '@vben/constants';
import { MesQcStatusEnum, MesQcTypeEnum } from '@vben/constants';
import { downloadFileFromBlobPart } from '@vben/utils';
import { Button, message } from 'ant-design-vue';
import { ACTION_ICON, TableAction, useVbenVxeGrid } from '#/adapter/vxe-table';
import { exportProductWord } from '#/api/mes/qc/indicatorresult';
import { deleteRqc, exportRqc, getRqcPage } from '#/api/mes/qc/rqc';
import { $t } from '#/locales';
import QcExportRangeModal from '#/views/mes/qc/components/export-range-modal.vue';
import QcReportPrint from '#/views/mes/qc/components/qc-report-print.vue';
import { useGridColumns, useGridFormSchema } from './data';
import Form from './modules/form.vue';
@@ -20,9 +25,30 @@
  destroyOnClose: true,
});
const [ExportRangeModal, exportRangeModalApi] = useVbenModal({
  connectedComponent: QcExportRangeModal,
  destroyOnClose: true,
});
const printRef = ref<InstanceType<typeof QcReportPrint> | null>(null);
/** 刷新表格 */
function handleRefresh() {
  gridApi.query();
}
/** 打印检验报告 */
async function handlePrint(row: MesQcRqcApi.Rqc) {
  await printRef.value?.print(row.id!, MesQcTypeEnum.RQC);
}
/** 导出产品检验单 Word(纸质检验单版式,判定结论带出检验结果) */
async function handleExportProductWord(row: MesQcRqcApi.Rqc) {
  const blob = await exportProductWord(row.id!, MesQcTypeEnum.RQC);
  downloadFileFromBlobPart({
    fileName: `产品检验单-${row.code ?? row.id}.docx`,
    source: blob,
  });
}
/** 创建退货检验单 */
@@ -55,10 +81,15 @@
  }
}
/** 导出表格 */
async function handleExport() {
  const data = await exportRqc(await gridApi.formApi.getValues());
  downloadFileFromBlobPart({ fileName: '退货检验单.xls', source: data });
/** 导出表格(弹窗选检验时间范围) */
function handleExport() {
  exportRangeModalApi
    .setData({
      title: '按检验时间导退货检验单',
      exportApi: exportRqc,
      fileName: '退货检验单.xls',
    })
    .open();
}
const [Grid, gridApi] = useVbenVxeGrid({
@@ -93,8 +124,10 @@
</script>
<template>
  <Page auto-content-height><FormModal @success="handleRefresh" />
  <Page auto-content-height>
    <FormModal @success="handleRefresh" />
    <ExportRangeModal />
    <QcReportPrint ref="printRef" />
    <Grid table-title="退货检验单列表">
      <template #toolbar-tools>
        <TableAction
@@ -145,6 +178,20 @@
              },
            },
            {
              label: '打印报告',
              type: 'link',
              icon: 'ant-design:printer-outlined',
              auth: ['mes:qc-rqc:query'],
              onClick: handlePrint.bind(null, row),
            },
            {
              label: '导出产品检验单',
              type: 'link',
              icon: 'ant-design:file-word-outlined',
              auth: ['mes:qc-rqc:query'],
              onClick: handleExportProductWord.bind(null, row),
            },
            {
              label: $t('common.detail'),
              type: 'link',
              icon: ACTION_ICON.VIEW,