diff --git a/src/components/ClickableTag/index.vue b/src/components/ClickableTag/index.vue index 1961923..a40bce9 100644 --- a/src/components/ClickableTag/index.vue +++ b/src/components/ClickableTag/index.vue @@ -2,25 +2,21 @@ - - + + + - - - + + + @@ -36,26 +32,32 @@ + + diff --git a/src/layout/navBars/breadcrumb/user.vue b/src/layout/navBars/breadcrumb/user.vue index 4bd1c7c..576c6bd 100644 --- a/src/layout/navBars/breadcrumb/user.vue +++ b/src/layout/navBars/breadcrumb/user.vue @@ -1,6 +1,6 @@ @@ -95,8 +101,10 @@ import { fetchUserMessageList } from '/@/api/admin/message'; import {useFlowJob} from "/@/flow/stores/flowJob"; -const ChangeRoleRef=ref() +const ChangeRoleRef = ref() const ChangeRole = defineAsyncComponent(() => import('/@/views/admin/system/role/change-role.vue')) +const asyncTaskDrawerRef = ref() +const AsyncTaskDrawer = defineAsyncComponent(() => import('/@/layout/navBars/breadcrumb/asyncTaskDrawer.vue')) // 引入组件 const GlobalWebsocket = defineAsyncComponent(() => import('/@/components/Websocket/index.vue')); const UserNews = defineAsyncComponent(() => import('/@/layout/navBars/breadcrumb/userNews.vue')); @@ -207,6 +215,10 @@ const onHandleCommandClick = (path: string) => { const onSearchClick = () => { searchRef.value.openSearch(); }; +// 上传/下载任务点击 +const onAsyncTaskClick = () => { + asyncTaskDrawerRef.value?.open(); +}; // 语言切换 const onLanguageChange = (lang: string) => { Local.remove('themeConfig'); @@ -241,15 +253,25 @@ const getIsDot = () => { }); }; +// 登录后若存储中无角色信息则弹出角色切换框 +const openChangeRoleIfMissing = () => { + const hasRole = Local.get('roleCode') && Local.get('roleName') && Local.get('roleId') + if (!hasRole) { + nextTick(() => { + setTimeout(() => ChangeRoleRef.value?.open(), 100) + }) + } +} + // 页面加载时 onMounted(() => { if (Local.get('themeConfig')) { initI18nOrSize('globalComponentSize', 'disabledSize'); initI18nOrSize('globalI18n', 'disabledI18n'); } - useFlowJob().topJobList() - - getIsDot(); + useFlowJob().topJobList() + getIsDot() + openChangeRoleIfMissing() }); diff --git a/src/views/admin/system/role/change-role.vue b/src/views/admin/system/role/change-role.vue index 027511b..25b4087 100644 --- a/src/views/admin/system/role/change-role.vue +++ b/src/views/admin/system/role/change-role.vue @@ -1,60 +1,86 @@ - \ No newline at end of file diff --git a/src/views/professional/professionalteacherhonor/index.vue b/src/views/professional/professionalteacherhonor/index.vue index 21cfbd5..736b523 100755 --- a/src/views/professional/professionalteacherhonor/index.vue +++ b/src/views/professional/professionalteacherhonor/index.vue @@ -83,9 +83,45 @@ > - + @@ -114,8 +150,6 @@ - - @@ -199,10 +232,12 @@ import { examObj, delObj } from '/@/api/professional/professionaluser/professionalteacherhonor' -import { PROFESSIONAL_AUDIT_STATE_OPTIONS } from '/@/config/global' +import { PROFESSIONAL_AUDIT_STATE_OPTIONS, getStatusConfig } from '/@/config/global' import { defineAsyncComponent } from 'vue' const TeacherNameNo = defineAsyncComponent(() => import('/@/components/TeacherNameNo/index.vue')) const AuditState = defineAsyncComponent(() => import('/@/components/AuditState/index.vue')) +const ClickableTag = defineAsyncComponent(() => import('/@/components/ClickableTag/index.vue')) +const DetailPopover = defineAsyncComponent(() => import('/@/components/DetailPopover/index.vue')) 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')) @@ -217,6 +252,13 @@ const { professional_state: professionalState } = useDict('professional_state') // 审核状态选项 const auditStateOptions = PROFESSIONAL_AUDIT_STATE_OPTIONS +// 审核状态转 ClickableTag 配置(用 options 的 icon 字符串,与 AuditState 一致为实心) +const getAuditStateTagConfig = (state: string | number) => { + const opt = getStatusConfig(auditStateOptions, state) + if (!opt) return null + return { type: opt.type, label: opt.label, leftIcon: opt.icon, effect: opt.effect || 'dark' } +} + // 无权限即无节点 const { hasAuth } = useAuth() @@ -369,4 +411,29 @@ const handleDownLoadWord = async () => { diff --git a/src/views/professional/professionaltitlerelation/index.vue b/src/views/professional/professionaltitlerelation/index.vue index dcbaf10..2ba74ec 100755 --- a/src/views/professional/professionaltitlerelation/index.vue +++ b/src/views/professional/professionaltitlerelation/index.vue @@ -1,41 +1,9 @@