整体布局更新(背景颜色更换为白色,取消外边框)
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 height="500px" :interval="5000">
|
||||||
<ElCarousel v-loading="loading" v-if="banners.length > 0" 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" class="min-w-[1920px]" />
|
||||||
<ElImage :src="item.image" />
|
</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,149 +78,153 @@ const user = computed(() => authStore.getUser)
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<div>
|
<div class="bg-[var(--app-content-bg-color)] flex-grow">
|
||||||
<ElCard shadow="never">
|
<div>
|
||||||
<ElSkeleton :loading="loading" animated>
|
|
||||||
<ElRow :gutter="20" justify="space-between">
|
|
||||||
<ElCol :xl="12" :lg="12" :md="12" :sm="24" :xs="24">
|
|
||||||
<div class="flex items-center">
|
|
||||||
<img
|
|
||||||
:src="user.avatar ? user.avatar : avatar"
|
|
||||||
alt=""
|
|
||||||
class="w-70px h-70px rounded-[50%] mr-20px"
|
|
||||||
/>
|
|
||||||
<div class="truncate">
|
|
||||||
<div class="text-20px text-700 truncate">
|
|
||||||
{{ getGreeting() }},{{ user.name }},{{ t('workplace.happyDay') }}
|
|
||||||
</div>
|
|
||||||
<div class="mt-10px text-14px text-gray-500">
|
|
||||||
{{ getCurrentDate() }},{{ getDayOfWeek() }}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</ElCol>
|
|
||||||
<ElCol :xl="12" :lg="12" :md="12" :sm="24" :xs="24">
|
|
||||||
<div class="flex h-70px items-center justify-end <sm:mt-20px">
|
|
||||||
<div class="px-8px text-right">
|
|
||||||
<div class="text-14px text-gray-400 mb-20px">最近登录时间</div>
|
|
||||||
<span class="text-20px">{{ user.last_login?.split(' ')[0] }}</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</ElCol>
|
|
||||||
</ElRow>
|
|
||||||
</ElSkeleton>
|
|
||||||
</ElCard>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<ElRow class="mt-20px" :gutter="20" justify="space-between">
|
|
||||||
<ElCol :xl="16" :lg="16" :md="24" :sm="24" :xs="24" class="mb-20px">
|
|
||||||
<ElCard shadow="never">
|
<ElCard shadow="never">
|
||||||
<template #header>
|
|
||||||
<div class="flex justify-between">
|
|
||||||
<span>{{ t('workplace.project') }}</span>
|
|
||||||
<ElLink type="primary" :underline="false">{{ t('workplace.more') }}</ElLink>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
<ElSkeleton :loading="loading" animated>
|
<ElSkeleton :loading="loading" animated>
|
||||||
<ElRow>
|
<ElRow :gutter="20" justify="space-between">
|
||||||
<ElCol
|
<ElCol :xl="12" :lg="12" :md="12" :sm="24" :xs="24">
|
||||||
v-for="(item, index) in projects"
|
<div class="flex items-center">
|
||||||
:key="`card-${index}`"
|
<img
|
||||||
:xl="8"
|
:src="user.avatar ? user.avatar : avatar"
|
||||||
:lg="8"
|
alt=""
|
||||||
:md="12"
|
class="w-70px h-70px rounded-[50%] mr-20px"
|
||||||
:sm="24"
|
/>
|
||||||
:xs="24"
|
<div class="truncate">
|
||||||
>
|
<div class="text-20px text-700 truncate">
|
||||||
<ElCard shadow="hover">
|
{{ getGreeting() }},{{ user.name }},{{ t('workplace.happyDay') }}
|
||||||
<div class="cursor-pointer" @click="toLink(item.link)">
|
|
||||||
<div class="flex items-center">
|
|
||||||
<Icon :icon="item.icon" :size="25" class="mr-10px" />
|
|
||||||
<span class="text-16px">{{ item.name }}</span>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="mt-15px text-14px text-gray-400">{{ t(item.message) }}</div>
|
<div class="mt-10px text-14px text-gray-500">
|
||||||
<div class="mt-20px text-12px text-gray-400 flex justify-between">
|
{{ getCurrentDate() }},{{ getDayOfWeek() }}
|
||||||
<span>{{ item.personal }}</span>
|
|
||||||
<span>{{ formatTime(item.time, 'yyyy-MM-dd') }}</span>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</ElCard>
|
</div>
|
||||||
|
</ElCol>
|
||||||
|
<ElCol :xl="12" :lg="12" :md="12" :sm="24" :xs="24">
|
||||||
|
<div class="flex h-70px items-center justify-end <sm:mt-20px">
|
||||||
|
<div class="px-8px text-right">
|
||||||
|
<div class="text-14px text-gray-400 mb-20px">最近登录时间</div>
|
||||||
|
<span class="text-20px">{{ user.last_login?.split(' ')[0] }}</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</ElCol>
|
</ElCol>
|
||||||
</ElRow>
|
</ElRow>
|
||||||
</ElSkeleton>
|
</ElSkeleton>
|
||||||
</ElCard>
|
</ElCard>
|
||||||
|
</div>
|
||||||
|
|
||||||
<ElCard shadow="never" class="mt-20px">
|
<div class="mx-20px mt-20px">
|
||||||
<template #header>
|
<ElRow :gutter="20" justify="space-between">
|
||||||
<div class="flex justify-between">
|
<ElCol :xl="16" :lg="16" :md="24" :sm="24" :xs="24" class="mb-20px">
|
||||||
<span>{{ t('workplace.dynamic') }}</span>
|
<ElCard shadow="never">
|
||||||
<ElLink type="primary" :underline="false">{{ t('workplace.more') }}</ElLink>
|
<template #header>
|
||||||
</div>
|
<div class="flex justify-between">
|
||||||
</template>
|
<span>{{ t('workplace.project') }}</span>
|
||||||
<ElSkeleton :loading="loading" animated>
|
<ElLink type="primary" :underline="false">{{ t('workplace.more') }}</ElLink>
|
||||||
<div v-for="(item, index) in dynamics" :key="`dynamics-${index}`">
|
|
||||||
<div class="flex items-center">
|
|
||||||
<img
|
|
||||||
src="@/assets/imgs/avatar.jpg"
|
|
||||||
alt=""
|
|
||||||
class="w-35px h-35px rounded-[50%] mr-20px"
|
|
||||||
/>
|
|
||||||
<div>
|
|
||||||
<div class="text-14px">
|
|
||||||
<Highlight :keys="item.keys.map((v) => t(v))">
|
|
||||||
{{ t('workplace.pushCode') }}
|
|
||||||
</Highlight>
|
|
||||||
</div>
|
|
||||||
<div class="mt-15px text-12px text-gray-400">
|
|
||||||
{{ useTimeAgo(item.time) }}
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</template>
|
||||||
<ElDivider />
|
<ElSkeleton :loading="loading" animated>
|
||||||
</div>
|
<ElRow>
|
||||||
</ElSkeleton>
|
<ElCol
|
||||||
</ElCard>
|
v-for="(item, index) in projects"
|
||||||
</ElCol>
|
:key="`card-${index}`"
|
||||||
<ElCol :xl="8" :lg="8" :md="24" :sm="24" :xs="24" class="mb-20px">
|
:xl="8"
|
||||||
<ElCard shadow="never">
|
:lg="8"
|
||||||
<template #header>
|
:md="12"
|
||||||
<span>{{ t('workplace.shortcutOperation') }}</span>
|
:sm="24"
|
||||||
</template>
|
:xs="24"
|
||||||
<ElSkeleton :loading="loading" animated>
|
>
|
||||||
<ElCol
|
<ElCard shadow="hover">
|
||||||
v-for="(item, index) in shortcuts"
|
<div class="cursor-pointer" @click="toLink(item.link)">
|
||||||
:key="`card-${index}`"
|
<div class="flex items-center">
|
||||||
:xl="12"
|
<Icon :icon="item.icon" :size="25" class="mr-10px" />
|
||||||
:lg="12"
|
<span class="text-16px">{{ item.name }}</span>
|
||||||
:md="12"
|
</div>
|
||||||
:sm="12"
|
<div class="mt-15px text-14px text-gray-400">{{ t(item.message) }}</div>
|
||||||
:xs="12"
|
<div class="mt-20px text-12px text-gray-400 flex justify-between">
|
||||||
class="mb-10px"
|
<span>{{ item.personal }}</span>
|
||||||
>
|
<span>{{ formatTime(item.time, 'yyyy-MM-dd') }}</span>
|
||||||
<ElLink type="primary" :href="item.link" target="_blank" :underline="false">
|
</div>
|
||||||
{{ item.name }}
|
</div>
|
||||||
</ElLink>
|
</ElCard>
|
||||||
</ElCol>
|
</ElCol>
|
||||||
</ElSkeleton>
|
</ElRow>
|
||||||
</ElCard>
|
</ElSkeleton>
|
||||||
|
</ElCard>
|
||||||
|
|
||||||
<ElCard shadow="never" class="mt-20px">
|
<ElCard shadow="never" class="mt-20px">
|
||||||
<template #header>
|
<template #header>
|
||||||
<span>{{ t('workplace.team') }}</span>
|
<div class="flex justify-between">
|
||||||
</template>
|
<span>{{ t('workplace.dynamic') }}</span>
|
||||||
<ElSkeleton :loading="loading" animated>
|
<ElLink type="primary" :underline="false">{{ t('workplace.more') }}</ElLink>
|
||||||
<ElRow>
|
</div>
|
||||||
<ElCol v-for="item in team" :key="`team-${item.name}`" :span="12" class="mb-20px">
|
</template>
|
||||||
<div class="flex items-center">
|
<ElSkeleton :loading="loading" animated>
|
||||||
<Icon :icon="item.icon" class="mr-10px" />
|
<div v-for="(item, index) in dynamics" :key="`dynamics-${index}`">
|
||||||
<ElLink type="default" :underline="false">
|
<div class="flex items-center">
|
||||||
|
<img
|
||||||
|
src="@/assets/imgs/avatar.jpg"
|
||||||
|
alt=""
|
||||||
|
class="w-35px h-35px rounded-[50%] mr-20px"
|
||||||
|
/>
|
||||||
|
<div>
|
||||||
|
<div class="text-14px">
|
||||||
|
<Highlight :keys="item.keys.map((v) => t(v))">
|
||||||
|
{{ t('workplace.pushCode') }}
|
||||||
|
</Highlight>
|
||||||
|
</div>
|
||||||
|
<div class="mt-15px text-12px text-gray-400">
|
||||||
|
{{ useTimeAgo(item.time) }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<ElDivider />
|
||||||
|
</div>
|
||||||
|
</ElSkeleton>
|
||||||
|
</ElCard>
|
||||||
|
</ElCol>
|
||||||
|
<ElCol :xl="8" :lg="8" :md="24" :sm="24" :xs="24" class="mb-20px">
|
||||||
|
<ElCard shadow="never">
|
||||||
|
<template #header>
|
||||||
|
<span>{{ t('workplace.shortcutOperation') }}</span>
|
||||||
|
</template>
|
||||||
|
<ElSkeleton :loading="loading" animated>
|
||||||
|
<ElCol
|
||||||
|
v-for="(item, index) in shortcuts"
|
||||||
|
:key="`card-${index}`"
|
||||||
|
:xl="12"
|
||||||
|
:lg="12"
|
||||||
|
:md="12"
|
||||||
|
:sm="12"
|
||||||
|
:xs="12"
|
||||||
|
class="mb-10px"
|
||||||
|
>
|
||||||
|
<ElLink type="primary" :href="item.link" target="_blank" :underline="false">
|
||||||
{{ item.name }}
|
{{ item.name }}
|
||||||
</ElLink>
|
</ElLink>
|
||||||
</div>
|
</ElCol>
|
||||||
</ElCol>
|
</ElSkeleton>
|
||||||
</ElRow>
|
</ElCard>
|
||||||
</ElSkeleton>
|
|
||||||
</ElCard>
|
<ElCard shadow="never" class="mt-20px">
|
||||||
</ElCol>
|
<template #header>
|
||||||
</ElRow>
|
<span>{{ t('workplace.team') }}</span>
|
||||||
|
</template>
|
||||||
|
<ElSkeleton :loading="loading" animated>
|
||||||
|
<ElRow>
|
||||||
|
<ElCol v-for="item in team" :key="`team-${item.name}`" :span="12" class="mb-20px">
|
||||||
|
<div class="flex items-center">
|
||||||
|
<Icon :icon="item.icon" class="mr-10px" />
|
||||||
|
<ElLink type="default" :underline="false">
|
||||||
|
{{ item.name }}
|
||||||
|
</ElLink>
|
||||||
|
</div>
|
||||||
|
</ElCol>
|
||||||
|
</ElRow>
|
||||||
|
</ElSkeleton>
|
||||||
|
</ElCard>
|
||||||
|
</ElCol>
|
||||||
|
</ElRow>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
@ -26,52 +26,56 @@ const user = authStore.getUser
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<ElRow :gutter="20">
|
<div class="m-20px">
|
||||||
<ElCol :xs="24" :sm="12" :md="8">
|
<ElRow :gutter="20">
|
||||||
<ElCard shadow="hover" class="pb-30px">
|
<ElCol :xs="24" :sm="12" :md="8">
|
||||||
<div class="text-center">
|
<ElCard shadow="hover" class="pb-30px">
|
||||||
<ElAvatar :size="80" :src="user.avatar ? user.avatar : avatar" />
|
<div class="text-center">
|
||||||
<p style="font-size: 24px">{{ user.name }}</p>
|
<ElAvatar :size="80" :src="user.avatar ? user.avatar : avatar" />
|
||||||
</div>
|
<p style="font-size: 24px">{{ user.name }}</p>
|
||||||
<div class="pl-20px pt-30px">
|
|
||||||
<div class="leading-relaxed">
|
|
||||||
<span class="pl-10px w-80px inline-block">姓名:</span>
|
|
||||||
<span class="pl-10px">{{ user.name }}</span>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="leading-relaxed">
|
<div class="pl-20px pt-30px">
|
||||||
<span class="pl-10px w-80px inline-block">昵称:</span>
|
<div class="leading-relaxed">
|
||||||
<span class="pl-10px">{{ user.nickname }}</span>
|
<span class="pl-10px w-80px inline-block">姓名:</span>
|
||||||
|
<span class="pl-10px">{{ user.name }}</span>
|
||||||
|
</div>
|
||||||
|
<div class="leading-relaxed">
|
||||||
|
<span class="pl-10px w-80px inline-block">昵称:</span>
|
||||||
|
<span class="pl-10px">{{ user.nickname }}</span>
|
||||||
|
</div>
|
||||||
|
<div class="leading-relaxed">
|
||||||
|
<span class="pl-10px w-80px inline-block">手机号:</span>
|
||||||
|
<span class="pl-10px">{{ user.telephone }}</span>
|
||||||
|
</div>
|
||||||
|
<div class="leading-relaxed">
|
||||||
|
<span class="pl-10px w-80px inline-block">性别:</span>
|
||||||
|
<span class="pl-10px">{{
|
||||||
|
selectDictLabel(genderOptions, user.gender as string)
|
||||||
|
}}</span>
|
||||||
|
</div>
|
||||||
|
<div class="leading-relaxed">
|
||||||
|
<span class="pl-10px w-80px inline-block">角色:</span>
|
||||||
|
<span class="pl-10px">{{ user.roles?.map((item) => item.name).join(',') }}</span>
|
||||||
|
</div>
|
||||||
|
<div class="leading-relaxed">
|
||||||
|
<span class="pl-10px w-80px inline-block">创建时间:</span>
|
||||||
|
<span class="pl-10px">{{ user.create_datetime }}</span>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="leading-relaxed">
|
</ElCard>
|
||||||
<span class="pl-10px w-80px inline-block">手机号:</span>
|
</ElCol>
|
||||||
<span class="pl-10px">{{ user.telephone }}</span>
|
<ElCol :xs="24" :sm="12" :md="16">
|
||||||
</div>
|
<ElCard shadow="hover">
|
||||||
<div class="leading-relaxed">
|
<ElTabs v-model="activeName">
|
||||||
<span class="pl-10px w-80px inline-block">性别:</span>
|
<ElTabPane label="基本信息" name="info">
|
||||||
<span class="pl-10px">{{ selectDictLabel(genderOptions, user.gender as string) }}</span>
|
<InfoWrite />
|
||||||
</div>
|
</ElTabPane>
|
||||||
<div class="leading-relaxed">
|
<ElTabPane label="修改密码" name="password">
|
||||||
<span class="pl-10px w-80px inline-block">角色:</span>
|
<PasswordWrite />
|
||||||
<span class="pl-10px">{{ user.roles?.map((item) => item.name).join(',') }}</span>
|
</ElTabPane>
|
||||||
</div>
|
</ElTabs>
|
||||||
<div class="leading-relaxed">
|
</ElCard>
|
||||||
<span class="pl-10px w-80px inline-block">创建时间:</span>
|
</ElCol>
|
||||||
<span class="pl-10px">{{ user.create_datetime }}</span>
|
</ElRow>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
</ElCard>
|
|
||||||
</ElCol>
|
|
||||||
<ElCol :xs="24" :sm="12" :md="16">
|
|
||||||
<ElCard shadow="hover">
|
|
||||||
<ElTabs v-model="activeName">
|
|
||||||
<ElTabPane label="基本信息" name="info">
|
|
||||||
<InfoWrite />
|
|
||||||
</ElTabPane>
|
|
||||||
<ElTabPane label="修改密码" name="password">
|
|
||||||
<PasswordWrite />
|
|
||||||
</ElTabPane>
|
|
||||||
</ElTabs>
|
|
||||||
</ElCard>
|
|
||||||
</ElCol>
|
|
||||||
</ElRow>
|
|
||||||
</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
|
||||||
|