首页增加参数来控制是否需要登录

main
liutao 2 weeks ago
parent d4736907b1
commit 66855e95ac

@ -95,8 +95,20 @@ const homePublicAccessWhiteList = [
'/erp/stock/overview' '/erp/stock/overview'
] ]
const homePublicAccessParamPaths = ['/', '/index']
let homePublicAccessEnabled: boolean | undefined let homePublicAccessEnabled: boolean | undefined
const isEnabledQueryValue = (value: unknown) => {
const rawValue = Array.isArray(value) ? value[0] : value
return ['1', 'true', 'yes', 'on'].includes(String(rawValue ?? '').toLowerCase())
}
const hasHomePublicAccessParam = (query: Recordable = {}) =>
isEnabledQueryValue(query.public) ||
isEnabledQueryValue(query.homePublic) ||
isEnabledQueryValue(query.noLogin)
const isHomePublicAccessEnabled = async () => { const isHomePublicAccessEnabled = async () => {
if (homePublicAccessEnabled !== undefined) return homePublicAccessEnabled if (homePublicAccessEnabled !== undefined) return homePublicAccessEnabled
try { try {
@ -107,8 +119,9 @@ const isHomePublicAccessEnabled = async () => {
return homePublicAccessEnabled return homePublicAccessEnabled
} }
const isPublicHomePath = async (path: string) => { const isPublicHomePath = async (path: string, query: Recordable = {}) => {
if (homePublicAccessWhiteList.indexOf(path) === -1) return false if (homePublicAccessWhiteList.indexOf(path) === -1) return false
if (homePublicAccessParamPaths.indexOf(path) !== -1 && !hasHomePublicAccessParam(query)) return false
return await isHomePublicAccessEnabled() return await isHomePublicAccessEnabled()
} }
@ -161,7 +174,7 @@ router.beforeEach(async (to, from, next) => {
} }
} }
} else { } else {
if (whiteList.indexOf(to.path) !== -1 || (await isPublicHomePath(to.path))) { if (whiteList.indexOf(to.path) !== -1 || (await isPublicHomePath(to.path, to.query))) {
next() next()
} else { } else {
next(`/login?redirect=${to.fullPath}`) // 否则全部重定向到登录页 next(`/login?redirect=${to.fullPath}`) // 否则全部重定向到登录页

@ -53,7 +53,7 @@ const remainingRouter: AppRouteRecordRaw[] = [
{ {
path: '/', path: '/',
component: Layout, component: Layout,
redirect: '/index', redirect: (to) => ({ path: '/index', query: to.query }),
name: 'Root', name: 'Root',
meta: {}, meta: {},
children: [ children: [

@ -2,7 +2,7 @@
<div <div
ref="fullscreenTargetRef" ref="fullscreenTargetRef"
class="run-overview-page" class="run-overview-page"
:class="{ 'is-fullscreen': isFullscreen }" :class="{ 'is-fullscreen': isFullscreenLayout }"
> >
<div class="run-overview-page__floating-tools"> <div class="run-overview-page__floating-tools">
<el-tooltip <el-tooltip
@ -54,6 +54,7 @@
<script setup lang="ts"> <script setup lang="ts">
import dayjs from 'dayjs' import dayjs from 'dayjs'
import { useFullscreen } from '@vueuse/core' import { useFullscreen } from '@vueuse/core'
import { useRoute } from 'vue-router'
import { DeviceOperationOverviewApi } from '@/api/iot/deviceOperationOverview' import { DeviceOperationOverviewApi } from '@/api/iot/deviceOperationOverview'
import { DeviceLedgerApi, DeviceLedgerVO } from '@/api/mes/deviceledger' import { DeviceLedgerApi, DeviceLedgerVO } from '@/api/mes/deviceledger'
import { OrganizationApi } from '@/api/mes/organization' import { OrganizationApi } from '@/api/mes/organization'
@ -75,12 +76,22 @@ import type {
defineOptions({ name: 'IotRunOverview' }) defineOptions({ name: 'IotRunOverview' })
const { t } = useI18n() const { t } = useI18n()
const route = useRoute()
const fullscreenTargetRef = ref() const fullscreenTargetRef = ref()
const { isFullscreen, toggle: toggleFullscreen } = useFullscreen(fullscreenTargetRef) const { isFullscreen, toggle: toggleFullscreen } = useFullscreen(fullscreenTargetRef)
const deviceLedgerList = ref<DeviceLedgerVO[]>([]) const deviceLedgerList = ref<DeviceLedgerVO[]>([])
const groupOptions = ref<OrganizationTreeOption[]>([]) const groupOptions = ref<OrganizationTreeOption[]>([])
let deviceLedgerRequestSeq = 0 let deviceLedgerRequestSeq = 0
const isEnabledQueryValue = (value: unknown) => {
const rawValue = Array.isArray(value) ? value[0] : value
return ['1', 'true', 'yes', 'on'].includes(String(rawValue ?? '').toLowerCase())
}
const isFullscreenLayout = computed(
() => isFullscreen.value || isEnabledQueryValue(route.query.fullscreen ?? route.query.full)
)
const createDateRangeByQuickKey = (key: QuickRangeKey): [string, string] => { const createDateRangeByQuickKey = (key: QuickRangeKey): [string, string] => {
const format = 'YYYY-MM-DD HH:mm:ss' const format = 'YYYY-MM-DD HH:mm:ss'
const now = dayjs() const now = dayjs()
@ -453,7 +464,11 @@ onMounted(async () => {
} }
.run-overview-page.is-fullscreen { .run-overview-page.is-fullscreen {
height: 100%; position: fixed;
inset: 0;
z-index: 2000;
width: 100vw;
height: 100vh;
padding: 16px; padding: 16px;
overflow: auto; overflow: auto;
background: #f5f7fa; background: #f5f7fa;

Loading…
Cancel
Save