This commit is contained in:
zhoutianchi
2026-02-06 14:24:42 +08:00
parent f98d3ea674
commit 37e709cf7e
10 changed files with 484 additions and 607 deletions

View File

@@ -8,3 +8,11 @@ export const makeExportTeacherInfoBySelfTask = (data?: any) => {
data: data, data: data,
}); });
}; };
export const makeExportTeacherInfoByTypeTask = (data?: any) => {
return request({
url: '/professional/file/makeExportTeacherInfoByTypeTask',
method: 'post',
data: data,
});
};

View File

@@ -138,16 +138,3 @@ export const titleCountInfo = () => {
}); });
}; };
/**
* 导出Excel
* @param data 查询参数
*/
export const exportRelation = (data: any) => {
return request({
url: '/professional/professionaltitlerelation/exportRelation',
method: 'post',
data: data,
responseType: 'blob',
});
};

View File

@@ -98,7 +98,7 @@ const handleAvatarError = (err: any) => {
}; };
const handleDownloadTemplate = () => { const handleDownloadTemplate = () => {
downBlobFile('/professional/file/exportTeacherInfoTemplate', { type: currentType.value || 'titleRelation' }, '职工信息导入模板.xlsx') downBlobFile('/professional/file/exportTeacherInfoTemplate', { type: currentType.value || 'titleRelation' }, title.value+'模板.xlsx')
} }
// 暴露方法给父组件 // 暴露方法给父组件

View File

@@ -229,11 +229,10 @@ import { useDict } from '/@/hooks/dict'
import { import {
fetchList, fetchList,
examObj, examObj,
delObj, delObj} from '/@/api/professional/professionaluser/professionalqualificationrelation'
exportExcel
} from '/@/api/professional/professionaluser/professionalqualificationrelation'
import { getLevelList } from '/@/api/professional/rsbase/professionalqualificationconfig' import { getLevelList } from '/@/api/professional/rsbase/professionalqualificationconfig'
import { getWorkTypeList } from '/@/api/professional/rsbase/professionalworktype' import { getWorkTypeList } from '/@/api/professional/rsbase/professionalworktype'
import { makeExportTeacherInfoByTypeTask } from '/@/api/professional/professionalfile';
import { PROFESSIONAL_AUDIT_STATE_OPTIONS } from '/@/config/global' import { PROFESSIONAL_AUDIT_STATE_OPTIONS } from '/@/config/global'
import { defineAsyncComponent } from 'vue' import { defineAsyncComponent } from 'vue'
import { Medal } from '@element-plus/icons-vue' import { Medal } from '@element-plus/icons-vue'
@@ -391,27 +390,15 @@ const handleDel = (row: any) => {
// 导出 // 导出
const handleDownLoadWord = async () => { const handleDownLoadWord = async () => {
exportLoading.value = true exportLoading.value = true;
try { let params = Object.assign(search, { type: 'P20003' });
const response: any = await exportExcel(search) makeExportTeacherInfoByTypeTask(params).then((res: any) => {
message.success('后台下载进行中,请稍后查看任务列表');
const blob = new Blob([response as BlobPart]) });
const fileName = '职业资格信息.xls' setTimeout(() => {
const elink = document.createElement('a') exportLoading.value = false;
elink.download = fileName }, 3000); // 5分钟后自动关闭
elink.style.display = 'none' };
elink.href = URL.createObjectURL(blob)
document.body.appendChild(elink)
elink.click()
URL.revokeObjectURL(elink.href)
document.body.removeChild(elink)
message.success('导出成功')
} catch (error) {
message.error('导出失败')
} finally {
exportLoading.value = false
}
}
// 获取资格等级名称 // 获取资格等级名称
const getQualificationLevelName = (id: string | number) => { const getQualificationLevelName = (id: string | number) => {

View File

@@ -84,10 +84,10 @@
/> />
</el-form-item> </el-form-item>
<el-form-item label="证书编" prop="certificateNumber"> <el-form-item label="证书编" prop="certificateNumber">
<el-input <el-input
v-model="dataForm.certificateNumber" v-model="dataForm.certificateNumber"
placeholder="请输入证书编(仅支持英文和数字)" placeholder="请输入证书编(仅支持英文和数字)"
clearable clearable
show-word-limit show-word-limit
maxlength="100" maxlength="100"
@@ -215,8 +215,8 @@ const formRules = computed(() => {
{ required: true, message: '请输入所学专业', trigger: 'blur' } { required: true, message: '请输入所学专业', trigger: 'blur' }
], ],
certificateNumber: [ certificateNumber: [
{ required: true, message: '请输入证书编', trigger: 'blur' }, { required: true, message: '请输入证书编', trigger: 'blur' },
{ pattern: /^[A-Za-z0-9]+$/, message: '证书编只能包含英文和数字', trigger: 'blur' } { pattern: /^[A-Za-z0-9]+$/, message: '证书编只能包含英文和数字', trigger: 'blur' }
] ]
} }

View File

@@ -241,14 +241,13 @@ import { useDict } from '/@/hooks/dict'
import { import {
fetchList, fetchList,
examObj, examObj,
delObj, delObj} from '/@/api/professional/professionaluser/professionalteacheracademicrelation'
exportExcel
} from '/@/api/professional/professionaluser/professionalteacheracademicrelation'
import { getDegreeList } from '/@/api/professional/rsbase/professionalacademicdegreeconfig' import { getDegreeList } from '/@/api/professional/rsbase/professionalacademicdegreeconfig'
import { getQualificationList } from '/@/api/professional/rsbase/academicqualificationsconfig' import { getQualificationList } from '/@/api/professional/rsbase/academicqualificationsconfig'
import { getAllTypeList } from '/@/api/professional/rsbase/professionalacademiceducationtypeconfig' import { getAllTypeList } from '/@/api/professional/rsbase/professionalacademiceducationtypeconfig'
import { PROFESSIONAL_AUDIT_STATE_OPTIONS } from '/@/config/global' import { PROFESSIONAL_AUDIT_STATE_OPTIONS } from '/@/config/global'
import { defineAsyncComponent } from 'vue' import { defineAsyncComponent } from 'vue'
import {makeExportTeacherInfoByTypeTask} from "/@/api/professional/professionalfile";
const TeacherNameNo = defineAsyncComponent(() => import('/@/components/TeacherNameNo/index.vue')) const TeacherNameNo = defineAsyncComponent(() => import('/@/components/TeacherNameNo/index.vue'))
const AuditState = defineAsyncComponent(() => import('/@/components/AuditState/index.vue')) const AuditState = defineAsyncComponent(() => import('/@/components/AuditState/index.vue'))
const DataForm = defineAsyncComponent(() => import('./form.vue')) const DataForm = defineAsyncComponent(() => import('./form.vue'))
@@ -412,26 +411,14 @@ const handleDel = (row: any) => {
// 导出 // 导出
const handleDownLoadWord = async () => { const handleDownLoadWord = async () => {
exportLoading.value = true exportLoading.value = true;
try { let params = Object.assign(search, { type: 'P20005' });
const response: any = await exportExcel(search) makeExportTeacherInfoByTypeTask(params).then((res: any) => {
message.success('后台下载进行中,请稍后查看任务列表');
const blob = new Blob([response as BlobPart]) });
const fileName = '学历学位信息.xls' setTimeout(() => {
const elink = document.createElement('a') exportLoading.value = false;
elink.download = fileName }, 3000); // 5分钟后自动关闭
elink.style.display = 'none'
elink.href = URL.createObjectURL(blob)
document.body.appendChild(elink)
elink.click()
URL.revokeObjectURL(elink.href)
document.body.removeChild(elink)
message.success('导出成功')
} catch (error) {
message.error('导出失败')
} finally {
exportLoading.value = false
}
} }
// 获取学位名称 // 获取学位名称

View File

@@ -212,9 +212,10 @@ import { getTeacherCertificateList } from '/@/api/professional/rsbase/profession
import { import {
fetchList, fetchList,
examObj, examObj,
delObj, delObj
exportExcel
} from '/@/api/professional/professionaluser/professionalteachercertificaterelation' } from '/@/api/professional/professionaluser/professionalteachercertificaterelation'
import { makeExportTeacherInfoByTypeTask } from '/@/api/professional/professionalfile';
import { PROFESSIONAL_AUDIT_STATE_OPTIONS } from '/@/config/global' import { PROFESSIONAL_AUDIT_STATE_OPTIONS } from '/@/config/global'
import { defineAsyncComponent } from 'vue' import { defineAsyncComponent } from 'vue'
const TeacherNameNo = defineAsyncComponent(() => import('/@/components/TeacherNameNo/index.vue')) const TeacherNameNo = defineAsyncComponent(() => import('/@/components/TeacherNameNo/index.vue'))
@@ -368,27 +369,15 @@ const handleDel = (row: any) => {
// 导出 // 导出
const handleDownLoadWord = async () => { const handleDownLoadWord = async () => {
exportLoading.value = true exportLoading.value = true;
try { let params = Object.assign(search, { type: 'P20004' });
const response: any = await exportExcel(search) makeExportTeacherInfoByTypeTask(params).then((res: any) => {
message.success('后台下载进行中,请稍后查看任务列表');
const blob = new Blob([response as BlobPart]) });
const fileName = '教师资格证信息.xls' setTimeout(() => {
const elink = document.createElement('a') exportLoading.value = false;
elink.download = fileName }, 3000); // 5分钟后自动关闭
elink.style.display = 'none' };
elink.href = URL.createObjectURL(blob)
document.body.appendChild(elink)
elink.click()
URL.revokeObjectURL(elink.href)
document.body.removeChild(elink)
message.success('导出成功')
} catch (error) {
message.error('导出失败')
} finally {
exportLoading.value = false
}
}
// 获取证书名称 // 获取证书名称
const getCertificateName = (id: string | number) => { const getCertificateName = (id: string | number) => {

View File

@@ -243,6 +243,7 @@ import {
} from '/@/api/professional/professionaluser/professionalteacherhonor' } from '/@/api/professional/professionaluser/professionalteacherhonor'
import { PROFESSIONAL_AUDIT_STATE_OPTIONS, getStatusConfig } from '/@/config/global' import { PROFESSIONAL_AUDIT_STATE_OPTIONS, getStatusConfig } from '/@/config/global'
import { defineAsyncComponent } from 'vue' import { defineAsyncComponent } from 'vue'
import {makeExportTeacherInfoByTypeTask} from "/@/api/professional/professionalfile";
const TeacherNameNo = defineAsyncComponent(() => import('/@/components/TeacherNameNo/index.vue')) const TeacherNameNo = defineAsyncComponent(() => import('/@/components/TeacherNameNo/index.vue'))
const AuditState = defineAsyncComponent(() => import('/@/components/AuditState/index.vue')) const AuditState = defineAsyncComponent(() => import('/@/components/AuditState/index.vue'))
const ClickableTag = defineAsyncComponent(() => import('/@/components/ClickableTag/index.vue')) const ClickableTag = defineAsyncComponent(() => import('/@/components/ClickableTag/index.vue'))
@@ -393,29 +394,14 @@ const handleDel = (row: any) => {
// 导出 // 导出
const handleDownLoadWord = async () => { const handleDownLoadWord = async () => {
exportLoading.value = true exportLoading.value = true;
try { let params = Object.assign(search, { type: 'P20006' });
const response = await fetchList({ makeExportTeacherInfoByTypeTask(params).then((res: any) => {
current: 1, message.success('后台下载进行中,请稍后查看任务列表');
size: 999999, });
...search setTimeout(() => {
}) exportLoading.value = false;
const data = response.data.records || [] }, 3000); // 5分钟后自动关闭
const tHeader = ['工号', '姓名', '荣誉', '表彰单位', '年份']
const filterVal = ['teacherNo', 'teacherName', 'honor', 'honorCompany', 'year']
// 动态导入导出工具
const { export_json_to_excel } = await import('/@/excel/Export2Excel.js')
const exportData = data.map((v: any) => filterVal.map((j: string) => v[j]))
export_json_to_excel(tHeader, exportData, '综合表彰.xls')
message.success('导出成功')
} catch (error) {
message.error('导出失败')
} finally {
exportLoading.value = false
}
} }
// 打开导入弹窗 // 打开导入弹窗

File diff suppressed because it is too large Load Diff

View File

@@ -1024,7 +1024,7 @@
</el-table-column> </el-table-column>
<el-table-column prop="graduateSchool" label="毕业学校" min-width="180" align="center" show-overflow-tooltip /> <el-table-column prop="graduateSchool" label="毕业学校" min-width="180" align="center" show-overflow-tooltip />
<el-table-column prop="major" label="所学专业" min-width="150" align="center" show-overflow-tooltip /> <el-table-column prop="major" label="所学专业" min-width="150" align="center" show-overflow-tooltip />
<el-table-column prop="certificateNumber" label="证书编" min-width="120" align="center" /> <el-table-column prop="certificateNumber" label="证书编" min-width="120" align="center" />
<el-table-column label="学历证书" min-width="150" align="center"> <el-table-column label="学历证书" min-width="150" align="center">
<template #default="scope"> <template #default="scope">
<el-button <el-button