This commit is contained in:
guochunsi
2026-01-27 13:48:18 +08:00
parent c5eea52c46
commit b3ea5ee1ee
25 changed files with 192 additions and 428 deletions

View File

@@ -310,11 +310,40 @@
<TableColumn prop="workLevelName" label="职业资格等级" width="120" align="center" show-overflow-tooltip />
<TableColumn prop="teacherCer" label="教师上岗证" width="120" align="center" show-overflow-tooltip />
<TableColumn prop="midCer" label="中等教师资格证" width="150" align="center" show-overflow-tooltip />
<TableColumn prop="highCer" label="高校教师资格证" width="150" align="center" show-overflow-tooltip />
<TableColumn label="资格证书" width="120" align="center">
<template #default="scope">
<DetailPopover
v-if="scope.row.teacherCer || scope.row.midCer || scope.row.highCer"
title="资格证书"
:title-icon="InfoFilled"
:width="320"
:items="[
{
label: '教师上岗证',
content: scope.row.teacherCer || '-',
layout: 'horizontal'
},
{
label: '中等教师资格证',
content: scope.row.midCer || '-',
layout: 'horizontal'
},
{
label: '高校教师资格证',
content: scope.row.highCer || '-',
layout: 'horizontal'
}
]">
<template #reference>
<span class="certificate-link" style="color: var(--el-color-primary); cursor: pointer;">
查看详情
<el-icon class="title-icon"><InfoFilled /></el-icon>
</span>
</template>
</DetailPopover>
<span v-else class="empty-text">-</span>
</template>
</TableColumn>
<TableColumn prop="employmentNature" label="用工性质" width="120" align="center" show-overflow-tooltip />
@@ -1434,7 +1463,7 @@
import { useMessage, useMessageBox } from '/@/hooks/message'
import axios from 'axios'
// 导入图标
import { User, Phone, Document, CreditCard, Briefcase, Flag, Plus, Delete, Connection, School, Medal, Files, Clock, Setting, Switch, CircleCheck, CircleClose, Refresh, Download } from '@element-plus/icons-vue'
import { User, Phone, Document, CreditCard, Briefcase, Flag, Plus, Delete, Connection, School, Medal, Files, Clock, Setting, Switch, CircleCheck, CircleClose, Refresh, Download, InfoFilled } from '@element-plus/icons-vue'
// 导入api统一使用 /@/ 路径别名)
import {
@@ -1448,6 +1477,7 @@
exportTeacherInfo as exportTeacherInfoApi
} from '/@/api/professional/professionaluser/teacherbase'
import {getDictsByTypes} from '/@/api/admin/dict'
import {useDict} from '/@/hooks/dict'
import {getNationalList} from '/@/api/basic/basicnation'
import {addPoliticssStatus, dePoObj} from '/@/api/professional/professionaluser/professionalpoliticsstatus'
import {addSocialObj, delSocialObj as delSocialObjApi} from '/@/api/professional/professionaluser/professionalsocial'
@@ -1462,7 +1492,6 @@
import {updateStatus} from '/@/api/professional/professionalstatuslock'
import {resetPassWord} from "/@/api/professional/professionaluser/teacherbase"
// 组件配置已不再需要(已从 avue-crud 迁移到 el-table
import global from '/@/components/tools/commondict.vue'
import authImg from "/@/components/tools/auth-img.vue"
// 导入工具
@@ -1472,6 +1501,7 @@
const TeacherNameNo = defineAsyncComponent(() => import('/@/components/TeacherNameNo/index.vue'))
const GenderTag = defineAsyncComponent(() => import('/@/components/GenderTag/index.vue'))
const StatusTag = defineAsyncComponent(() => import('/@/components/StatusTag/index.vue'))
const DetailPopover = defineAsyncComponent(() => import('/@/components/DetailPopover/index.vue'))
const ShowEvidence = defineAsyncComponent(() => import("../common/showEvidence.vue"));
const ExportTeacherInfoDialog = defineAsyncComponent(() => import('./export-teacher-info.vue'));
const ImportTeacherInfo = defineAsyncComponent(() => import('./import-teacherInfo.vue'));
@@ -1580,7 +1610,7 @@
professionalStationRelation: {}
})
const healthList = ref([])
const YES_OR_NO = global.YES_OR_NO
const { yes_no_type: YES_OR_NO ,sexy:sexyList } = useDict('yes_no_type','sexy')
const teacherCateList = ref([])
const baseInfoAbout = reactive({
stationTypeList: [],
@@ -1633,17 +1663,6 @@
const visibleTableColumns = ref<string[]>([])
// 静态配置数据
const sexyList = [
{
label: '男',
value: '1'
},
{
label: '女',
value: '0'
}
]
const teacherClassifyData = ref([])
const stationFormValidate = {
stationTypeId: [
@@ -2904,6 +2923,30 @@
font-size: 14px;
}
// 资格证书链接样式
:deep(.certificate-link){
display: inline-flex;
align-items: center;
gap: 4px;
color: var(--el-color-primary)!important;
cursor: pointer;
transition: all 0.2s ease;
&:hover {
color: var(--el-color-primary-light-3)!important;
text-decoration: underline;
}
.title-icon {
font-size: 14px;
opacity: 0.8;
}
}
.empty-text {
color: #909399;
}
}
// 弹窗内容区域样式优化 - 只优化外层容器,不修改组件内部样式