吴羡
18 小时以前 5620ab475b200182a4d990ee04b029396f1db2dd
feat: 质检四模块导出按筛选条件、考勤节假日配置改为时间段

1. MES 质检:IQC/IPQC/OQC/RQC 导出改为按当前筛选条件直接导出,删除原「导出区间」弹窗组件。
2. HRM 考勤:节假日配置表单改为「日期区间」RangePicker 录入,列表按区间展示。

(参考 dev_宁夏_万通新材料 前端实现)
已修改8个文件
已删除1个文件
218 ■■■■■ 文件已修改
src/api/hrm/attendance/holiday/index.ts 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/hrm/attendance/holiday/data.ts 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/hrm/attendance/holiday/index.vue 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/hrm/attendance/holiday/modules/form.vue 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/mes/qc/components/export-range-modal.vue 89 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/mes/qc/ipqc/index.vue 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/mes/qc/iqc/index.vue 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/mes/qc/oqc/index.vue 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/mes/qc/rqc/index.vue 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/hrm/attendance/holiday/index.ts
@@ -7,7 +7,10 @@
  export interface Holiday {
    id?: number;
    name?: string;
    date?: string;
    /** å¼€å§‹æ—¥æœŸ */
    startDate?: string;
    /** ç»“束日期 */
    endDate?: string;
    type?: number;
    typeName?: string;
    isLegal?: number;
src/views/hrm/attendance/holiday/data.ts
@@ -29,11 +29,10 @@
      rules: 'required',
    },
    {
      fieldName: 'date',
      label: '日期',
      component: 'DatePicker',
      fieldName: 'dateRange',
      label: '日期区间',
      component: 'RangePicker',
      componentProps: {
        placeholder: '选择日期',
        valueFormat: 'YYYY-MM-DD',
        style: { width: '100%' },
      },
@@ -126,7 +125,14 @@
export function useGridColumns(): VxeTableGridOptions<HrmAttendanceHolidayApi.Holiday>['columns'] {
  return [
    { field: 'name', title: '节假日名称', minWidth: 150 },
    { field: 'date', title: '日期', width: 120 },
    {
      field: 'startDate',
      title: '日期区间',
      minWidth: 200,
      slots: {
        default: 'dateRange',
      },
    },
    {
      field: 'type',
      title: '类型',
src/views/hrm/attendance/holiday/index.vue
@@ -114,6 +114,11 @@
          ]"
        />
      </template>
      <template #dateRange="{ row }">
        <span v-if="!row.startDate && !row.endDate">-</span>
        <span v-else-if="row.startDate === row.endDate">{{ row.startDate }}</span>
        <span v-else>{{ row.startDate }} ~ {{ row.endDate }}</span>
      </template>
      <template #isLegal="{ row }">
        <Tag v-if="row.isLegal === 1" color="red">法定</Tag>
        <span v-else>-</span>
src/views/hrm/attendance/holiday/modules/form.vue
@@ -53,7 +53,15 @@
      return;
    }
    modalApi.lock();
    const data = (await formApi.getValues()) as HrmAttendanceHolidayApi.Holiday;
    const values = (await formApi.getValues()) as HrmAttendanceHolidayApi.Holiday & {
      dateRange?: string[];
    };
    const { dateRange, ...rest } = values;
    const data: HrmAttendanceHolidayApi.Holiday = {
      ...rest,
      startDate: dateRange?.[0],
      endDate: dateRange?.[1],
    };
    try {
      if (formType.value === 'update') {
        await updateAttendanceHoliday(data);
@@ -81,7 +89,14 @@
    }
    modalApi.lock();
    try {
      await formApi.setValues(await getAttendanceHoliday(data.id));
      const detail = await getAttendanceHoliday(data.id);
      await formApi.setValues({
        ...detail,
        dateRange:
          detail.startDate && detail.endDate
            ? [detail.startDate, detail.endDate]
            : undefined,
      });
    } finally {
      modalApi.unlock();
    }
src/views/mes/qc/components/export-range-modal.vue
ÎļþÒÑɾ³ý
src/views/mes/qc/ipqc/index.vue
@@ -4,6 +4,7 @@
import { Page, useVbenModal } from '@vben/common-ui';
import { MesQcStatusEnum } from '@vben/constants';
import { downloadFileFromBlobPart } from '@vben/utils';
import { Button, message } from 'ant-design-vue';
@@ -16,7 +17,6 @@
  importIpqcTemplate,
} from '#/api/mes/qc/ipqc';
import { $t } from '#/locales';
import QcExportRangeModal from '#/views/mes/qc/components/export-range-modal.vue';
import QcImportFormModal from '#/views/mes/qc/components/import-form-modal.vue';
import QcReportGenerateModal from '#/views/mes/qc/components/report-generate-modal.vue';
@@ -28,11 +28,6 @@
const [FormModal, formModalApi] = useVbenModal({
  connectedComponent: Form,
  destroyOnClose: true,
});
const [ExportRangeModal, exportRangeModalApi] = useVbenModal({
  connectedComponent: QcExportRangeModal,
  destroyOnClose: true,
});
@@ -101,15 +96,10 @@
  }
}
/** å¯¼å‡ºè¡¨æ ¼ï¼ˆå¼¹çª—选检验时间范围) */
function handleExport() {
  exportRangeModalApi
    .setData({
      title: '按检验时间导出过程检验单',
      exportApi: exportIpqc,
      fileName: '过程检验单.xls',
    })
    .open();
/** å¯¼å‡ºè¡¨æ ¼ï¼ˆæŒ‰åˆ—表筛选条件导出) */
async function handleExport() {
  const data = await exportIpqc(await gridApi.formApi.getValues());
  downloadFileFromBlobPart({ fileName: '过程检验单.xls', source: data });
}
/** å‡ºæŠ¥å‘Šï¼šæ•°æ®ç”±åŽç«¯ä»Žè¯¥è´¨æ£€å•取,前端只选模板 */
@@ -153,7 +143,6 @@
<template>
  <Page auto-content-height>
    <FormModal @success="handleRefresh" />
    <ExportRangeModal />
    <ReportModal />
    <ImportModal @success="handleRefresh" />
    <Grid table-title="过程检验单列表">
src/views/mes/qc/iqc/index.vue
@@ -7,6 +7,7 @@
import { Page, useVbenModal } from '@vben/common-ui';
import { MesQcStatusEnum } from '@vben/constants';
import { downloadFileFromBlobPart } from '@vben/utils';
import { Button, message } from 'ant-design-vue';
@@ -19,7 +20,6 @@
  importIqcTemplate,
} from '#/api/mes/qc/iqc';
import { $t } from '#/locales';
import QcExportRangeModal from '#/views/mes/qc/components/export-range-modal.vue';
import QcImportFormModal from '#/views/mes/qc/components/import-form-modal.vue';
import QcReportGenerateModal from '#/views/mes/qc/components/report-generate-modal.vue';
@@ -35,11 +35,6 @@
const [FormModal, formModalApi] = useVbenModal({
  connectedComponent: Form,
  destroyOnClose: true,
});
const [ExportRangeModal, exportRangeModalApi] = useVbenModal({
  connectedComponent: QcExportRangeModal,
  destroyOnClose: true,
});
@@ -107,15 +102,10 @@
  }
}
/** å¯¼å‡ºè¡¨æ ¼ï¼ˆå¼¹çª—选检验时间范围) */
function handleExport() {
  exportRangeModalApi
    .setData({
      title: '按检验时间导出来料检验单',
      exportApi: exportIqc,
      fileName: '来料检验单.xls',
    })
    .open();
/** å¯¼å‡ºè¡¨æ ¼ï¼ˆæŒ‰åˆ—表筛选条件导出) */
async function handleExport() {
  const data = await exportIqc(await gridApi.formApi.getValues());
  downloadFileFromBlobPart({ fileName: '来料检验单.xls', source: data });
}
/** å‡ºæŠ¥å‘Šï¼šæ•°æ®ç”±åŽç«¯ä»Žè¯¥è´¨æ£€å•取,前端只选模板 */
@@ -166,7 +156,6 @@
<template>
  <Page auto-content-height>
    <FormModal @success="handleRefresh" />
    <ExportRangeModal />
    <ReportModal />
    <ImportModal @success="handleRefresh" />
    <Grid table-title="来料检验单列表">
src/views/mes/qc/oqc/index.vue
@@ -4,6 +4,7 @@
import { Page, useVbenModal } from '@vben/common-ui';
import { MesQcStatusEnum } from '@vben/constants';
import { downloadFileFromBlobPart } from '@vben/utils';
import { Button, message } from 'ant-design-vue';
@@ -16,7 +17,6 @@
  importOqcTemplate,
} from '#/api/mes/qc/oqc';
import { $t } from '#/locales';
import QcExportRangeModal from '#/views/mes/qc/components/export-range-modal.vue';
import QcImportFormModal from '#/views/mes/qc/components/import-form-modal.vue';
import QcReportGenerateModal from '#/views/mes/qc/components/report-generate-modal.vue';
@@ -28,11 +28,6 @@
const [FormModal, formModalApi] = useVbenModal({
  connectedComponent: Form,
  destroyOnClose: true,
});
const [ExportRangeModal, exportRangeModalApi] = useVbenModal({
  connectedComponent: QcExportRangeModal,
  destroyOnClose: true,
});
@@ -100,15 +95,10 @@
  }
}
/** å¯¼å‡ºè¡¨æ ¼ï¼ˆå¼¹çª—选检验时间范围) */
function handleExport() {
  exportRangeModalApi
    .setData({
      title: '按检验时间导出货检验单',
      exportApi: exportOqc,
      fileName: '出货检验单.xls',
    })
    .open();
/** å¯¼å‡ºè¡¨æ ¼ï¼ˆæŒ‰åˆ—表筛选条件导出) */
async function handleExport() {
  const data = await exportOqc(await gridApi.formApi.getValues());
  downloadFileFromBlobPart({ fileName: '出货检验单.xls', source: data });
}
/** å‡ºæŠ¥å‘Šï¼šæ•°æ®ç”±åŽç«¯ä»Žè¯¥è´¨æ£€å•取,前端只选模板 */
@@ -152,7 +142,6 @@
<template>
  <Page auto-content-height>
    <FormModal @success="handleRefresh" />
    <ExportRangeModal />
    <ReportModal />
    <ImportModal @success="handleRefresh" />
    <Grid table-title="出货检验单列表">
src/views/mes/qc/rqc/index.vue
@@ -4,13 +4,13 @@
import { Page, useVbenModal } from '@vben/common-ui';
import { MesQcStatusEnum } 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 { deleteRqc, exportRqc, getRqcPage } from '#/api/mes/qc/rqc';
import { $t } from '#/locales';
import QcExportRangeModal from '#/views/mes/qc/components/export-range-modal.vue';
import QcReportGenerateModal from '#/views/mes/qc/components/report-generate-modal.vue';
import { useGridColumns, useGridFormSchema } from './data';
@@ -21,11 +21,6 @@
const [FormModal, formModalApi] = useVbenModal({
  connectedComponent: Form,
  destroyOnClose: true,
});
const [ExportRangeModal, exportRangeModalApi] = useVbenModal({
  connectedComponent: QcExportRangeModal,
  destroyOnClose: true,
});
@@ -69,15 +64,10 @@
  }
}
/** å¯¼å‡ºè¡¨æ ¼ï¼ˆå¼¹çª—选检验时间范围) */
function handleExport() {
  exportRangeModalApi
    .setData({
      title: '按检验时间导退货检验单',
      exportApi: exportRqc,
      fileName: '退货检验单.xls',
    })
    .open();
/** å¯¼å‡ºè¡¨æ ¼ï¼ˆæŒ‰åˆ—表筛选条件导出) */
async function handleExport() {
  const data = await exportRqc(await gridApi.formApi.getValues());
  downloadFileFromBlobPart({ fileName: '退货检验单.xls', source: data });
}
/** å‡ºæŠ¥å‘Šï¼šæ•°æ®ç”±åŽç«¯ä»Žè¯¥è´¨æ£€å•取,前端只选模板 */
@@ -121,7 +111,6 @@
<template>
  <Page auto-content-height>
    <FormModal @success="handleRefresh" />
    <ExportRangeModal />
    <ReportModal />
    <Grid table-title="退货检验单列表">
      <template #toolbar-tools>