From baddb052ccd4a91ef1881ba663e6a4e55b05f4fb Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期三, 14 十月 2026 15:51:55 +0800
Subject: [PATCH] feat(hrm): 社保公积金方案表单加「适用部门」与默认缴费基数,修比例输入精度
---
src/views/mes/qc/iqc/index.vue | 77 +++++++++++++++++++++++++++++++++++++-
1 files changed, 74 insertions(+), 3 deletions(-)
diff --git a/src/views/mes/qc/iqc/index.vue b/src/views/mes/qc/iqc/index.vue
index 761305f..4c309e0 100644
--- a/src/views/mes/qc/iqc/index.vue
+++ b/src/views/mes/qc/iqc/index.vue
@@ -2,18 +2,28 @@
import type { VxeTableGridOptions } from '#/adapter/vxe-table';
import type { MesQcIqcApi } from '#/api/mes/qc/iqc';
-import { onMounted } from 'vue';
+import { onMounted, ref } from 'vue';
import { useRoute } from 'vue-router';
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 { deleteIqc, exportIqc, getIqcPage } from '#/api/mes/qc/iqc';
+import { exportProductWord } from '#/api/mes/qc/indicatorresult';
+import {
+ deleteIqc,
+ exportIqc,
+ getIqcPage,
+ importIqc,
+ 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 QcReportPrint from '#/views/mes/qc/components/qc-report-print.vue';
import { useGridColumns, useGridFormSchema } from './data';
import Form from './modules/form.vue';
@@ -21,6 +31,7 @@
defineOptions({ name: 'MesQcIqc' });
const route = useRoute();
+const printRef = ref<InstanceType<typeof QcReportPrint> | null>(null);
const [FormModal, formModalApi] = useVbenModal({
connectedComponent: Form,
@@ -32,9 +43,32 @@
destroyOnClose: true,
});
+const [ImportModal, importModalApi] = useVbenModal({
+ connectedComponent: QcImportFormModal,
+ destroyOnClose: true,
+});
/** 鍒锋柊琛ㄦ牸 */
function handleRefresh() {
gridApi.query();
+}
+
+/** 鎵归噺瀵煎叆鏉ユ枡妫�楠屽崟 */
+function handleImport() {
+ importModalApi
+ .setData({
+ title: '鎵归噺瀵煎叆鏉ユ枡妫�楠屽崟',
+ templateApi: importIqcTemplate,
+ importApi: importIqc,
+ fileName: '鏉ユ枡妫�楠屽崟瀵煎叆妯℃澘.xls',
+ hints: [
+ '浠呭厑璁稿鍏� xls銆亁lsx 鏍煎紡鏂囦欢锛涘繀濉垪锛氭楠屽崟鍚嶇О銆佷骇鍝佺墿鏂欑紪鐮併�佸悎鏍煎搧鏁伴噺銆佷笉鍚堟牸鍝佹暟閲忋�佹娴嬫棩鏈熴�佹潵鏂欐棩鏈熴��',
+ '銆屼骇鍝佺墿鏂欑紪鐮併�嶉渶涓庛�岀墿鏂欑鐞嗐�嶄腑鐨勭紪鐮佸畬鍏ㄤ竴鑷达紱銆屼緵搴斿晢鍚嶇О銆嶉渶涓庛�屼緵搴斿晢绠$悊銆嶄腑鐨勫悕绉颁竴鑷达紝鐣欑┖鍒欒鍗曟棤渚涘簲鍟嗐��',
+ '鍚堟牸鍝佹暟閲� + 涓嶅悎鏍煎搧鏁伴噺 蹇呴』绛変簬銆屾湰娆℃帴鏀舵暟閲忋�嶏紙鐣欑┖鏃惰嚜鍔ㄥ彇涓よ�呬箣鍜岋級锛涖�屾娴嬬粨鏋溿�嶆寜瀛楀吀鍚嶇О濉啓锛堟牎楠岄�氳繃 / 鏍¢獙涓嶉�氳繃锛夈��',
+ '銆岃川妫�鏂规銆嶅~鏂规鍚嶇О锛岀暀绌哄垯鎸夌墿鏂欒嚜鍔ㄥ尮閰� IQC 鏂规锛涖�屾娴嬩汉鍛樸�嶇暀绌哄彇褰撳墠鐧诲綍鐢ㄦ埛锛涙棩鏈熸敮鎸� 2026-01-01 10:00:00 鎴� 2026-01-01銆�',
+ '閫愯瀵煎叆锛屽け璐ヨ涓嶅奖鍝嶆垚鍔熻锛涘鍏ュ悗鐨勬楠屽崟涓恒�屽緟妫�楠屻�嶇姸鎬侊紝鍙湪鍒楄〃涓户缁紪杈戙�佸綍鍏ユ娴嬬粨鏋溿��',
+ ],
+ })
+ .open();
}
/** 鍒涘缓鏉ユ枡妫�楠屽崟 */
@@ -65,6 +99,20 @@
} finally {
hideLoading();
}
+}
+
+/** 鎵撳嵃妫�楠屾姤鍛� */
+async function handlePrint(row: MesQcIqcApi.Iqc) {
+ await printRef.value?.print(row.id!, MesQcTypeEnum.IQC);
+}
+
+/** 瀵煎嚭浜у搧妫�楠屽崟 Word锛堢焊璐ㄦ楠屽崟鐗堝紡锛屽垽瀹氱粨璁哄甫鍑烘楠岀粨鏋滐級 */
+async function handleExportProductWord(row: MesQcIqcApi.Iqc) {
+ const blob = await exportProductWord(row.id!, MesQcTypeEnum.IQC);
+ downloadFileFromBlobPart({
+ fileName: `浜у搧妫�楠屽崟-${row.code ?? row.id}.docx`,
+ source: blob,
+ });
}
/** 瀵煎嚭琛ㄦ牸锛堝脊绐楅�夋楠屾椂闂磋寖鍥达級 */
@@ -120,6 +168,8 @@
<Page auto-content-height>
<FormModal @success="handleRefresh" />
<ExportRangeModal />
+ <QcReportPrint ref="printRef" />
+ <ImportModal @success="handleRefresh" />
<Grid table-title="鏉ユ枡妫�楠屽崟鍒楄〃">
<template #toolbar-tools>
<TableAction
@@ -130,6 +180,13 @@
icon: ACTION_ICON.ADD,
auth: ['mes:qc-iqc:create'],
onClick: handleCreate,
+ },
+ {
+ label: '鎵归噺瀵煎叆',
+ type: 'primary',
+ icon: ACTION_ICON.UPLOAD,
+ auth: ['mes:qc-iqc:import'],
+ onClick: handleImport,
},
{
label: $t('ui.actionTitle.export'),
@@ -170,6 +227,20 @@
},
},
{
+ label: '鎵撳嵃鎶ュ憡',
+ type: 'link',
+ icon: 'ant-design:printer-outlined',
+ auth: ['mes:qc-iqc:query'],
+ onClick: handlePrint.bind(null, row),
+ },
+ {
+ label: '瀵煎嚭浜у搧妫�楠屽崟',
+ type: 'link',
+ icon: 'ant-design:file-word-outlined',
+ auth: ['mes:qc-iqc:query'],
+ onClick: handleExportProductWord.bind(null, row),
+ },
+ {
label: $t('common.detail'),
type: 'link',
icon: ACTION_ICON.VIEW,
--
Gitblit v1.9.3