整体布局更新(背景颜色更换为白色,取消外边框)
BIN
images/new/1687232679892.jpg
Normal file
After Width: | Height: | Size: 54 KiB |
BIN
images/new/1687232728594.jpg
Normal file
After Width: | Height: | Size: 92 KiB |
BIN
images/new/1687232742716.jpg
Normal file
After Width: | Height: | Size: 829 KiB |
BIN
images/new/1687232757699.jpg
Normal file
After Width: | Height: | Size: 190 KiB |
BIN
images/new/1687232894774.jpg
Normal file
After Width: | Height: | Size: 74 KiB |
BIN
images/new/1687232907644.jpg
Normal file
After Width: | Height: | Size: 55 KiB |
BIN
images/new/1687232919754.jpg
Normal file
After Width: | Height: | Size: 56 KiB |
BIN
images/new/1687232947963.jpg
Normal file
After Width: | Height: | Size: 43 KiB |
BIN
images/new/1687232962873.jpg
Normal file
After Width: | Height: | Size: 85 KiB |
BIN
images/new/1687233000595.jpg
Normal file
After Width: | Height: | Size: 53 KiB |
BIN
images/new/1687233033005.jpg
Normal file
After Width: | Height: | Size: 35 KiB |
BIN
images/new/1687233063697.jpg
Normal file
After Width: | Height: | Size: 44 KiB |
BIN
images/new/1687233128936.jpg
Normal file
After Width: | Height: | Size: 34 KiB |
BIN
images/new/1687233162782.jpg
Normal file
After Width: | Height: | Size: 26 KiB |
BIN
images/new/1687233189618.jpg
Normal file
After Width: | Height: | Size: 84 KiB |
BIN
images/new/1687233201218.jpg
Normal file
After Width: | Height: | Size: 843 KiB |
BIN
images/new/1687233211961.jpg
Normal file
After Width: | Height: | Size: 184 KiB |
BIN
images/new/1687233229571.jpg
Normal file
After Width: | Height: | Size: 67 KiB |
BIN
images/new/1687233241545.jpg
Normal file
After Width: | Height: | Size: 48 KiB |
@ -202,7 +202,7 @@ const clear = () => {
|
|||||||
<template>
|
<template>
|
||||||
<div
|
<div
|
||||||
:class="prefixCls"
|
:class="prefixCls"
|
||||||
class="fixed top-[45%] right-0 w-40px h-40px text-center leading-40px bg-[var(--el-color-primary)] cursor-pointer"
|
class="fixed top-[45%] right-0 w-40px h-40px text-center leading-40px bg-[var(--el-color-primary)] cursor-pointer z-3"
|
||||||
@click="drawer = true"
|
@click="drawer = true"
|
||||||
>
|
>
|
||||||
<Icon icon="ant-design:setting-outlined" color="#fff" />
|
<Icon icon="ant-design:setting-outlined" color="#fff" />
|
||||||
|
@ -20,9 +20,9 @@ const getCaches = computed((): string[] => {
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<section
|
<div
|
||||||
:class="[
|
:class="[
|
||||||
'p-[var(--app-content-padding)] w-[100%] bg-[var(--app-content-bg-color)] dark:bg-[var(--el-bg-color)]',
|
'w-[100%] bg-[var(--app-content-bg-color-new)] dark:bg-[var(--el-bg-color)] flex flex-col',
|
||||||
{
|
{
|
||||||
'!min-h-[calc(100%-var(--app-footer-height))]':
|
'!min-h-[calc(100%-var(--app-footer-height))]':
|
||||||
((fixedHeader && (layout === 'classic' || layout === 'topLeft')) || layout === 'top') &&
|
((fixedHeader && (layout === 'classic' || layout === 'topLeft')) || layout === 'top') &&
|
||||||
@ -41,13 +41,13 @@ const getCaches = computed((): string[] => {
|
|||||||
}
|
}
|
||||||
]"
|
]"
|
||||||
>
|
>
|
||||||
<router-view>
|
<RouterView>
|
||||||
<template #default="{ Component, route }">
|
<template #default="{ Component, route }">
|
||||||
<keep-alive :include="getCaches">
|
<KeepAlive :include="getCaches">
|
||||||
<component :is="Component" :key="route.fullPath" />
|
<component :is="Component" :key="route.fullPath" />
|
||||||
</keep-alive>
|
</KeepAlive>
|
||||||
</template>
|
</template>
|
||||||
</router-view>
|
</RouterView>
|
||||||
</section>
|
</div>
|
||||||
<Footer v-if="footer" />
|
<Footer v-if="footer" />
|
||||||
</template>
|
</template>
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { ElCarousel, ElCarouselItem, ElImage, ElCard } from 'element-plus'
|
import { ElCarousel, ElCarouselItem, ElImage } from 'element-plus'
|
||||||
import Charts from './components/Charts.vue'
|
import Charts from './components/Charts.vue'
|
||||||
import { getBannersApi } from '@/api/dashboard/analysis'
|
import { getBannersApi } from '@/api/dashboard/analysis'
|
||||||
import { ref } from 'vue'
|
import { ref } from 'vue'
|
||||||
@ -21,15 +21,13 @@ getBanners()
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<div class="mb-20px" style="display: flex; justify-content: center; min-width: 1680px">
|
<div class="mb-20px">
|
||||||
<ElCard shadow="never" class="w-1680px">
|
|
||||||
<!-- 添加 v-if 解决显示动态数据时,默认会显示一个空白元素 -->
|
<!-- 添加 v-if 解决显示动态数据时,默认会显示一个空白元素 -->
|
||||||
<ElCarousel v-loading="loading" v-if="banners.length > 0" height="500px" :interval="5000">
|
<ElCarousel height="500px" :interval="5000">
|
||||||
<ElCarouselItem v-for="item in banners" :key="item.id">
|
<ElCarouselItem v-for="item in banners" :key="item.id">
|
||||||
<ElImage :src="item.image" />
|
<ElImage :src="item.image" class="min-w-[1920px]" />
|
||||||
</ElCarouselItem>
|
</ElCarouselItem>
|
||||||
</ElCarousel>
|
</ElCarousel>
|
||||||
</ElCard>
|
|
||||||
</div>
|
</div>
|
||||||
<Charts />
|
<Charts />
|
||||||
</template>
|
</template>
|
||||||
|
@ -78,7 +78,7 @@ const setValues = async () => {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
// 鼠标移入标记点事件
|
// 鼠标移入标记点事件
|
||||||
circleMarker.value.on('mouseover', function (e) {
|
circleMarker.value.on('mouseover', () => {
|
||||||
infoWindow.setContent(
|
infoWindow.setContent(
|
||||||
`<div class="description">
|
`<div class="description">
|
||||||
<div class="name-box">
|
<div class="name-box">
|
||||||
@ -91,7 +91,7 @@ const setValues = async () => {
|
|||||||
infoWindow.open(map.value, center)
|
infoWindow.open(map.value, center)
|
||||||
})
|
})
|
||||||
// 鼠标移出标记点
|
// 鼠标移出标记点
|
||||||
circleMarker.value.on('mouseout', function (e) {
|
circleMarker.value.on('mouseout', () => {
|
||||||
infoWindow.close(map.value, center)
|
infoWindow.close(map.value, center)
|
||||||
})
|
})
|
||||||
return circleMarker.value
|
return circleMarker.value
|
||||||
|
@ -78,6 +78,7 @@ const user = computed(() => authStore.getUser)
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
|
<div class="bg-[var(--app-content-bg-color)] flex-grow">
|
||||||
<div>
|
<div>
|
||||||
<ElCard shadow="never">
|
<ElCard shadow="never">
|
||||||
<ElSkeleton :loading="loading" animated>
|
<ElSkeleton :loading="loading" animated>
|
||||||
@ -112,7 +113,8 @@ const user = computed(() => authStore.getUser)
|
|||||||
</ElCard>
|
</ElCard>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<ElRow class="mt-20px" :gutter="20" justify="space-between">
|
<div class="mx-20px mt-20px">
|
||||||
|
<ElRow :gutter="20" justify="space-between">
|
||||||
<ElCol :xl="16" :lg="16" :md="24" :sm="24" :xs="24" class="mb-20px">
|
<ElCol :xl="16" :lg="16" :md="24" :sm="24" :xs="24" class="mb-20px">
|
||||||
<ElCard shadow="never">
|
<ElCard shadow="never">
|
||||||
<template #header>
|
<template #header>
|
||||||
@ -223,4 +225,6 @@ const user = computed(() => authStore.getUser)
|
|||||||
</ElCard>
|
</ElCard>
|
||||||
</ElCol>
|
</ElCol>
|
||||||
</ElRow>
|
</ElRow>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
@ -26,6 +26,7 @@ const user = authStore.getUser
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
|
<div class="m-20px">
|
||||||
<ElRow :gutter="20">
|
<ElRow :gutter="20">
|
||||||
<ElCol :xs="24" :sm="12" :md="8">
|
<ElCol :xs="24" :sm="12" :md="8">
|
||||||
<ElCard shadow="hover" class="pb-30px">
|
<ElCard shadow="hover" class="pb-30px">
|
||||||
@ -48,7 +49,9 @@ const user = authStore.getUser
|
|||||||
</div>
|
</div>
|
||||||
<div class="leading-relaxed">
|
<div class="leading-relaxed">
|
||||||
<span class="pl-10px w-80px inline-block">性别:</span>
|
<span class="pl-10px w-80px inline-block">性别:</span>
|
||||||
<span class="pl-10px">{{ selectDictLabel(genderOptions, user.gender as string) }}</span>
|
<span class="pl-10px">{{
|
||||||
|
selectDictLabel(genderOptions, user.gender as string)
|
||||||
|
}}</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="leading-relaxed">
|
<div class="leading-relaxed">
|
||||||
<span class="pl-10px w-80px inline-block">角色:</span>
|
<span class="pl-10px w-80px inline-block">角色:</span>
|
||||||
@ -74,4 +77,5 @@ const user = authStore.getUser
|
|||||||
</ElCard>
|
</ElCard>
|
||||||
</ElCol>
|
</ElCol>
|
||||||
</ElRow>
|
</ElRow>
|
||||||
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
@ -226,6 +226,9 @@ export const searchSchema = reactive<FormSchema[]>([
|
|||||||
style: {
|
style: {
|
||||||
width: '214px'
|
width: '214px'
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
formItemProps: {
|
||||||
|
labelWidth: '47px'
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -117,6 +117,9 @@ export const searchSchema = reactive<FormSchema[]>([
|
|||||||
style: {
|
style: {
|
||||||
width: '214px'
|
width: '214px'
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
formItemProps: {
|
||||||
|
labelWidth: '47px'
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -11,7 +11,7 @@ from fastapi.security import OAuth2PasswordBearer
|
|||||||
"""
|
"""
|
||||||
系统版本
|
系统版本
|
||||||
"""
|
"""
|
||||||
VERSION = "1.8.2"
|
VERSION = "1.8.3"
|
||||||
|
|
||||||
"""安全警告: 不要在生产中打开调试运行!"""
|
"""安全警告: 不要在生产中打开调试运行!"""
|
||||||
DEBUG = True
|
DEBUG = True
|
||||||
|