You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

167 lines
4.1 KiB

6 months ago
<template>
<div class="user-wrapper wrapper_1200">
<div class="content acea-row relative mt-20px">
<!--左侧菜单-->
<div class="left-box">
<div class="user-menu">
<el-collapse v-model="opened">
<el-collapse-item
v-for="item in userMenu"
:key="item.id"
:title="item.name"
:name="item.name"
class="fonts16 fontColor333 font-500 oppoSans-M user-name"
>
<div
@click="handleGoPage(items)"
v-for="items in item.child"
:key="items.id"
class="menu-item child fonts14 mbtom24 fontColor6 font-400 oppoSans-R"
:class="{ active: menuCur == items.id }"
>
{{ items.name }}
</div>
</el-collapse-item>
</el-collapse>
</div>
</div>
<!--右侧页面-->
<div class="right-box" :style="{ minHeight: ScrollHeight + 'px' }">
<!--登录之后显示页面,协议不需要登录-->
<div v-if="userStore.isLogin || (!userStore.isLogin&&route.path=='/users/agreement_rules')" class="right-centent">
<NuxtPage></NuxtPage>
</div>
<!--没登录显示页面-->
<div v-else class="w-100% h-100%">
<not-logged-in></not-logged-in>
</div>
</div>
</div>
</div>
</template>
<script setup lang="ts">
import { ref, reactive, watch,computed } from 'vue'
import { userMenuDefault } from '~/pages/users/defaultUser'
import { useUserStore } from '@/stores/user'
import NotLoggedIn from "~/components/notLoggedIn.vue";
import {ItemObject} from "~/types/global";
const userStore = useUserStore()
//获取浏览器值
const route = useRoute()
//窗口的高度
const { getWindowHeight } = useScrollHeight()
const ScrollHeight = ref<number>(getWindowHeight() - 215)
//菜单
const userMenu = reactive<any[]>(userMenuDefault())
//左侧菜单选中的值
const menuCur = ref<string>(<string>route.query.type)
watch(
() => <string>route.query.type,
(newValue) => {
menuCur.value = newValue
},
)
//菜单除协议其余默认全部展开
const opened = computed(()=>{
return userMenu.map((i:ItemObject)=>{
if(i.name !=='规则协议') return i.name
})
})
// 跳入页面
const handleGoPage = async (obj: any) => {
menuCur.value = obj.id
await linkNavigateTo(obj.pc_url, { type: obj.id, name: obj.name })
}
</script>
<style lang="scss" scoped>
:deep(.el-collapse),
:deep(.el-collapse-item__wrap) {
border: none !important;
}
:deep(.el-collapse-item__header) {
--el-collapse-header-height: auto !important;
border: none !important;
--el-collapse-header-font-size: 16px;
margin-bottom: 24px;
}
:deep(.el-collapse-item__content) {
padding-bottom: 0 !important;
}
.user-wrapper {
.left-box {
width: 180px;
.user-info {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
height: 170px;
background: #fff;
color: #282828;
.name {
margin-top: 10px;
padding: 0 15px;
}
}
.user-menu {
padding: 30px 30px 21px 45px;
border-radius: 16px 16px 16px 16px;
background: #fff;
overflow: scroll;
scrollbar-width: none; /* Firefox */
-ms-overflow-style: none; /* IE and Edge */
.user-name{
margin-bottom: 24px;
&:last-of-type {
margin-bottom: 0px;
}
}
&::-webkit-scrollbar {
height: 0;
width: 0;
display: none; /* Chrome, Safari, and Opera */
}
.child:last-of-type {
margin-bottom: 10px;
}
.menu-item {
display: block;
cursor: pointer;
&.active {
color: #e93323;
}
}
}
}
.right-centent {
background: #ffffff;
border-radius: 16px 16px 16px 16px;
width: 1000px;
margin-left: 20px;
padding: 30px 20px;
}
}
.router-tips {
height: 40px;
line-height: 40px;
font-size: 14px;
color: #333;
a {
color: #333;
}
span {
color: #999999;
}
}
</style>