From 88c9aab832407480ad4e0c49c327a7a65bb3d3a4 Mon Sep 17 00:00:00 2001 From: zhoutianchi <1305666981@qq.com> Date: Thu, 5 Feb 2026 18:20:12 +0800 Subject: [PATCH] 1 --- .../common/import-teacher-other-info.vue | 116 ++++++++++++++++++ .../professionalpartychange/index.vue | 27 ++++ .../index.vue | 18 ++- .../index.vue | 16 +++ .../index.vue | 16 +++ .../professionalteacherhonor/index.vue | 16 +++ .../professionaltitlerelation/index.vue | 16 +++ 7 files changed, 224 insertions(+), 1 deletion(-) create mode 100644 src/views/professional/common/import-teacher-other-info.vue diff --git a/src/views/professional/common/import-teacher-other-info.vue b/src/views/professional/common/import-teacher-other-info.vue new file mode 100644 index 0000000..4ddce74 --- /dev/null +++ b/src/views/professional/common/import-teacher-other-info.vue @@ -0,0 +1,116 @@ + + + + + diff --git a/src/views/professional/professionalpartychange/index.vue b/src/views/professional/professionalpartychange/index.vue index 76651b9..c6a633d 100755 --- a/src/views/professional/professionalpartychange/index.vue +++ b/src/views/professional/professionalpartychange/index.vue @@ -37,6 +37,20 @@ + + +
+ 导入信息 +
+
+ + + + @@ -88,6 +105,7 @@ import { BasicTableProps, useTable } from '/@/hooks/table' import { fetchList } from '/@/api/professional/professionaluser/professionalpartychange' const TeacherNameNo = defineAsyncComponent(() => import('/@/components/TeacherNameNo/index.vue')) +const ImportTeacherOtherInfo = defineAsyncComponent(() => import('/@/views/professional/common/import-teacher-other-info.vue')) // 表格引用 const tableRef = ref() @@ -100,6 +118,10 @@ const search = reactive({ realName: '' }) +// 导入加载状态 +const exportLoading = ref(false) +const importTeacherOtherInfoRef = ref() + // 配置 useTable const state: BasicTableProps = reactive({ pageList: async (params: any) => { @@ -130,6 +152,11 @@ const resetQuery = () => { getDataList() } +// 打开导入弹窗 +const handleImportDialog = () => { + importTeacherOtherInfoRef.value?.init('partyChange') +} + // 表格数据由 useTable(createdIsNeed 默认 true)在挂载时自动请求 diff --git a/src/views/professional/professionalqualificationrelation/index.vue b/src/views/professional/professionalqualificationrelation/index.vue index 0f26e2c..d3d2ee2 100644 --- a/src/views/professional/professionalqualificationrelation/index.vue +++ b/src/views/professional/professionalqualificationrelation/index.vue @@ -73,6 +73,14 @@ @click="handleDownLoadWord" :loading="exportLoading" >导出信息 + 导入信息
+
@@ -234,6 +243,7 @@ const AuditState = defineAsyncComponent(() => import('/@/components/AuditState/i const DataForm = defineAsyncComponent(() => import('./form.vue')) const ProfessionalBackResaon = defineAsyncComponent(() => import('/@/views/professional/common/professional-back-resaon.vue')) const previewFile = defineAsyncComponent(() => import('/@/components/tools/preview-file.vue')) +const ImportTeacherOtherInfo = defineAsyncComponent(() => import('/@/views/professional/common/import-teacher-other-info.vue')) // 审核状态选项 const auditStateOptions = PROFESSIONAL_AUDIT_STATE_OPTIONS @@ -265,8 +275,9 @@ const search = reactive({ // 材料预览 const imgUrl = ref>([]) -// 导出加载状态 +// 导出/导入加载状态 const exportLoading = ref(false) +const importTeacherOtherInfoRef = ref() // 资格等级和工种列表 const qualificationLevelList = ref([]) @@ -414,6 +425,11 @@ const getWorkTypeName = (id: string | number) => { return item ? item.workName : '-' } +// 打开导入弹窗 +const handleImportDialog = () => { + importTeacherOtherInfoRef.value?.init('quaRelation') +} + // 加载字典数据 const loadDictData = async () => { try { diff --git a/src/views/professional/professionalteacheracademicrelation/index.vue b/src/views/professional/professionalteacheracademicrelation/index.vue index 3add3a9..54e60bc 100755 --- a/src/views/professional/professionalteacheracademicrelation/index.vue +++ b/src/views/professional/professionalteacheracademicrelation/index.vue @@ -69,6 +69,14 @@ @click="handleDownLoadWord" :loading="exportLoading">导出信息 + 导入信息 + @@ -218,6 +226,7 @@ + @@ -245,6 +254,7 @@ const AuditState = defineAsyncComponent(() => import('/@/components/AuditState/i const DataForm = defineAsyncComponent(() => import('./form.vue')) const ProfessionalBackResaon = defineAsyncComponent(() => import('/@/views/professional/common/professional-back-resaon.vue')) const previewFile = defineAsyncComponent(() => import('/@/components/tools/preview-file.vue')) +const ImportTeacherOtherInfo = defineAsyncComponent(() => import('/@/views/professional/common/import-teacher-other-info.vue')) // 审核状态选项 const auditStateOptions = PROFESSIONAL_AUDIT_STATE_OPTIONS @@ -279,6 +289,7 @@ const imgUrl = ref>([]) // 导出加载状态 const exportLoading = ref(false) +const importTeacherOtherInfoRef = ref() // 学位、学历和教育类型列表 const degreeList = ref([]) @@ -442,6 +453,11 @@ const getEducationTypeName = (id: string | number | undefined) => { return item ? item.name : '-' } +// 打开导入弹窗 +const handleImportDialog = () => { + importTeacherOtherInfoRef.value?.init('eduDegree') +} + // 加载字典数据 const loadDictData = async () => { try { diff --git a/src/views/professional/professionalteachercertificaterelation/index.vue b/src/views/professional/professionalteachercertificaterelation/index.vue index 5aff00a..5a4253a 100755 --- a/src/views/professional/professionalteachercertificaterelation/index.vue +++ b/src/views/professional/professionalteachercertificaterelation/index.vue @@ -69,6 +69,14 @@ @click="handleDownLoadWord" :loading="exportLoading">导出信息 + 导入信息 + @@ -188,6 +196,7 @@ + @@ -213,6 +222,7 @@ const AuditState = defineAsyncComponent(() => import('/@/components/AuditState/i const DataForm = defineAsyncComponent(() => import('./form.vue')) const ProfessionalBackResaon = defineAsyncComponent(() => import('/@/views/professional/common/professional-back-resaon.vue')) const previewFile = defineAsyncComponent(() => import('/@/components/tools/preview-file.vue')) +const ImportTeacherOtherInfo = defineAsyncComponent(() => import('/@/views/professional/common/import-teacher-other-info.vue')) // 审核状态选项(独立定义,防止其他页面修改时被波及) import type { StateOption } from '/@/components/AuditState/index.vue' @@ -247,6 +257,7 @@ const imgUrl = ref>([]) // 导出加载状态 const exportLoading = ref(false) +const importTeacherOtherInfoRef = ref() // 证书列表 const certificateList = ref([]) @@ -385,6 +396,11 @@ const getCertificateName = (id: string | number) => { return item ? item.cretificateName : '-' } +// 打开导入弹窗 +const handleImportDialog = () => { + importTeacherOtherInfoRef.value?.init('cerRelation') +} + // 加载字典数据 const loadDictData = async () => { try { diff --git a/src/views/professional/professionalteacherhonor/index.vue b/src/views/professional/professionalteacherhonor/index.vue index 736b523..bb265d6 100755 --- a/src/views/professional/professionalteacherhonor/index.vue +++ b/src/views/professional/professionalteacherhonor/index.vue @@ -68,6 +68,14 @@ @click="handleDownLoadWord" :loading="exportLoading">导出信息 + 导入信息 + @@ -216,6 +224,7 @@ + @@ -241,6 +250,7 @@ const DetailPopover = defineAsyncComponent(() => import('/@/components/DetailPop const ProfessionalBackResaon = defineAsyncComponent(() => import('/@/views/professional/common/professional-back-resaon.vue')) const DataForm = defineAsyncComponent(() => import('./form.vue')) const previewFile = defineAsyncComponent(() => import('/@/components/tools/preview-file.vue')) +const ImportTeacherOtherInfo = defineAsyncComponent(() => import('/@/views/professional/common/import-teacher-other-info.vue')) // 消息提示 hooks const message = useMessage() @@ -281,6 +291,7 @@ const imgUrl = ref>([]) // 导出加载状态 const exportLoading = ref(false) +const importTeacherOtherInfoRef = ref() // 配置 useTable const state: BasicTableProps = reactive({ @@ -407,6 +418,11 @@ const handleDownLoadWord = async () => { } } +// 打开导入弹窗 +const handleImportDialog = () => { + importTeacherOtherInfoRef.value?.init('honor') +} + // 表格数据由 useTable(createdIsNeed 默认 true)在挂载时自动请求 diff --git a/src/views/professional/professionaltitlerelation/index.vue b/src/views/professional/professionaltitlerelation/index.vue index 2ba74ec..ba4e06d 100755 --- a/src/views/professional/professionaltitlerelation/index.vue +++ b/src/views/professional/professionaltitlerelation/index.vue @@ -104,6 +104,14 @@ @click="handleDownLoadWord" :loading="exportLoading" >导出信息 + 导入信息 +
+ +
@@ -265,6 +275,7 @@ const MultiDialog = defineAsyncComponent(() => import('/@/views/professional/tea const DataForm = defineAsyncComponent(() => import('./form.vue')) const ProfessionalBackResaon = defineAsyncComponent(() => import('/@/views/professional/common/professional-back-resaon.vue')) const previewFile = defineAsyncComponent(() => import('/@/components/tools/preview-file.vue')) +const ImportTeacherOtherInfo = defineAsyncComponent(() => import('/@/views/professional/common/import-teacher-other-info.vue')) // 无权限即无节点:使用 useAuth + v-if const { hasAuth } = useAuth() @@ -462,6 +473,11 @@ const loadDictData = async () => { } } +const importTeacherOtherInfoRef=ref() +const handleImportDialog = () => { + importTeacherOtherInfoRef.value?.init('titleRelation') +} + // 初始化:仅加载下拉字典,表格数据由 useTable 在 createdIsNeed: true 时自动请求 onMounted(async () => { await loadDictData()