Files
shanxia2.0/miniprogram/pages/workbench/workbench.vue
T
2026-07-17 21:59:47 +08:00

73 lines
2.2 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<script setup>
import { onShow } from '@dcloudio/uni-app'
import { useUserStore } from '@/stores/user'
import { WORKBENCH_MODULES } from '@/config/workbench-menus'
import { PAGE_PATHS, WORKBENCH_ROUTE_MAP } from '@/config/api'
const userStore = useUserStore()
const modules = WORKBENCH_MODULES
onShow(() => {
userStore.checkLoginStatus()
if (!userStore.isLoggedIn) {
uni.reLaunch({ url: PAGE_PATHS.login })
}
})
const openMenu = (module, menu) => {
if (!menu.enabled) {
uni.showToast({ title: '本期暂未开放', icon: 'none' })
return
}
const route = WORKBENCH_ROUTE_MAP[menu.code]
if (route) {
uni.navigateTo({ url: route })
return
}
const title = encodeURIComponent(menu.name || '')
const moduleTitle = encodeURIComponent(module.title || '')
const code = encodeURIComponent(menu.code || '')
uni.navigateTo({
url: `${PAGE_PATHS.bizPlaceholder}?title=${title}&module=${moduleTitle}&code=${code}`
})
}
</script>
<template>
<view class="mp-page mp-page--tab">
<view class="mp-header">
<text class="mp-header__title">工作台</text>
<text class="mp-header__meta">选择业务模块,进入对应功能办理</text>
</view>
<view class="mp-section">
<view
v-for="mod in modules"
:key="mod.key"
class="mp-module-block"
:class="'mp-module-block--' + mod.key"
>
<view class="mp-module-block__head">
<text class="mp-module-block__icon">{{ mod.iconText }}</text>
<view class="mp-module-block__title-wrap">
<text class="mp-module-block__title">{{ mod.title }}</text>
<text class="mp-module-block__desc">{{ mod.desc }}</text>
</view>
</view>
<view class="mp-menu-grid">
<view
v-for="(menu, idx) in mod.menus"
:key="menu.code || menu.name + idx"
class="mp-menu-card"
:class="{ 'mp-menu-card--disabled': !menu.enabled }"
@click="openMenu(mod, menu)"
>
<view class="mp-menu-card__icon" />
<text class="mp-menu-card__name">{{ menu.name }}</text>
</view>
</view>
</view>
</view>
</view>
</template>