diff --git a/src/views/bg/fixcontact/FixedContact20260730List.vue b/src/views/bg/fixcontact/FixedContact20260730List.vue
index 9cc4ad2..783a0a4 100644
--- a/src/views/bg/fixcontact/FixedContact20260730List.vue
+++ b/src/views/bg/fixcontact/FixedContact20260730List.vue
@@ -11,22 +11,43 @@
-
+
-
-
+
+
+
+
+
+
+
-
+
-
-
+
+
@@ -50,6 +71,9 @@
新增
导出
导入
+ 下载模板
+ 模板校验
+ 模板导入
@@ -135,14 +159,18 @@
import { useMessage } from '/@/hooks/web/useMessage';
import Icon from '/@/components/Icon/index';
import JInput from '/@/components/Form/src/jeecg/components/JInput.vue';
- import SzUserSelect from '/@/components/semri/userComponent/SzUserSelect.vue';
+ import DeptRoleUserSelectDropDown from '/@/components/semri/userComponent/DeptRoleUserSelectDropDown.vue';
+ import SzSelectDept from '/@/components/Form/src/jeecg/components/SzSelectDept.vue';
+ import { PARTY_COMMITTEE_DEPT_ID, CHARGE_LEADER_ROLE_ID } from '/@/constant/supervision';
import FixedContact20260730Modal from './components/FixedContact20260730Modal.vue';
import FlowScheduleStartModalForBG from '/src/components/semri/process/FlowScheduleStartModalForBG.vue';
import BusinessProcessListModal from '/src/components/semri/process/BusinessProcessListModal.vue';
+ import { defHttp } from '/@/utils/http/axios';
import { startProcessSchedules } from '/@/api/common/api';
import { dateUtil } from '/@/utils/dateUtil';
import { columns, superQuerySchema, fixedContactFeedbackColumns } from './FixedContact20260730.data';
- import { list, deleteOne, batchDelete, getImportUrl, getExportUrl, fixedContactFeedbackList, saveOrUpdate, withDrawFixContact } from './FixedContact20260730.api';
+ import { list, deleteOne, batchDelete, getImportUrl, getExportUrl, getExportXlsHeadersUrl, getImportExcelByEasyExcelUrl, getCheckExcelByEasyExcelUrl, fixedContactFeedbackList, saveOrUpdate, withDrawFixContact } from './FixedContact20260730.api';
+import { showImportValidationErrors } from '/@/utils/helper/importError';
function expandIcon({ expanded, onExpand, record }: { expanded: boolean; onExpand: Function; record: Recordable }) {
const iconCls = expanded
@@ -558,6 +586,63 @@
sm: 20,
});
+ async function handleDownloadTemplate() {
+ const data = await defHttp.get(
+ { url: getExportXlsHeadersUrl, params: {}, responseType: 'blob', timeout: 60000 },
+ { isTransformResponse: false },
+ );
+ if (!data) {
+ createMessage.warning('文件下载失败');
+ return;
+ }
+ const blob = new Blob([data]);
+ const link = document.createElement('a');
+ link.href = URL.createObjectURL(blob);
+ link.download = '定点联系单-导入模板.xls';
+ link.click();
+ URL.revokeObjectURL(link.href);
+ }
+
+ async function handleImportByTemplate(data) {
+ const isReturn = (fileInfo) => {
+ try {
+ if (fileInfo.code === 500 || fileInfo.code === 510) {
+ if (fileInfo.result && Array.isArray(fileInfo.result) && fileInfo.result.length > 0) {
+ showImportValidationErrors(fileInfo.message || `${data.file.name} 导入失败`, fileInfo.result);
+ } else {
+ createMessage.error(fileInfo.message || `${data.file.name} 导入失败`);
+ }
+ } else {
+ createMessage.success(fileInfo.message || `${data.file.name} 导入成功`);
+ }
+ } catch {
+ // ignore
+ } finally {
+ reload();
+ }
+ };
+ await defHttp.uploadFile({ url: getImportExcelByEasyExcelUrl }, { file: data.file }, { success: isReturn });
+ }
+
+ async function handleCheckExcel(data) {
+ const isReturn = (fileInfo) => {
+ try {
+ if (fileInfo.code === 500 || fileInfo.code === 510) {
+ if (fileInfo.result && Array.isArray(fileInfo.result) && fileInfo.result.length > 0) {
+ showImportValidationErrors(fileInfo.message || `${data.file.name} 校验失败`, fileInfo.result);
+ } else {
+ createMessage.error(fileInfo.message || `${data.file.name} 校验失败`);
+ }
+ } else {
+ createMessage.success(fileInfo.message || `${data.file.name} 校验通过`);
+ }
+ } catch {
+ // ignore
+ }
+ };
+ await defHttp.uploadFile({ url: getCheckExcelByEasyExcelUrl }, { file: data.file }, { success: isReturn });
+ }
+
function searchReset() {
formRef.value?.resetFields();
clearQueryParams();