beelink/src/components/NavTop.vue
2020-10-28 17:28:50 +08:00

343 lines
11 KiB
Vue

<template>
<div class="nav">
<div class="logo" :style="{'background-color': types == 0 ? 'unset' : ''}" @click="toindex">
<img src="@/static/images/logo.png" alt="" class="img">
<div class="title" :style="{'color': types == 0 ? '#07AD97' : ''}">Beelink</div>
</div>
<div class="navigation">
<div class="item" v-for="(i,j) in nav" :key="j" @click="navto(j)">
<div :class="i.route==nowroute?'active':''">{{i.name}}</div>
</div>
</div>
<div style="width: 100%"></div>
<div class="setting">
<a-dropdown :trigger="['click']" :getPopupContainer="triggerNode => triggerNode.parentNode">
<div class="item" @click="e => e.preventDefault()">
<img src="@/static/images/shijian.png" alt="" class="icon">
<div class="name">{{userinfo.zoneStr}}</div>
<img src="@/static/images/jiantou2.png" alt="" class="down">
</div>
<template v-slot:overlay >
<a-menu style="max-height:70vh;overflow: auto;">
<!-- 时区 -->
<a-menu-item v-for="(i,j) in zonelist" :key="j" @click="zonechange(i.zoneid)" style="position: relative;">
<div class="selitem">
<span>{{i.city}}{{i.gmt}}</span>
<img src="@/static/images/duihao.png" alt="" v-if="i.zoneid == userinfo.zoneid" class="duihao">
</div>
</a-menu-item>
<!-- <a-menu-item key="1">
<div class="selitem">
<span>时区2a</span>
</div>
</a-menu-item>
<a-menu-item key="3">
<div class="selitem">
<span>时区3a</span>
</div>
</a-menu-item> -->
</a-menu>
</template>
</a-dropdown>
<a-dropdown :trigger="['click']" :getPopupContainer="triggerNode => triggerNode.parentNode">
<div class="item" @click="e => e.preventDefault()">
<img src="@/static/images/qianbi.png" alt="" class="icon">
<div class="name">{{userinfo.currency}}</div>
<img src="@/static/images/jiantou2.png" alt="" class="down">
</div>
<template v-slot:overlay>
<a-menu style="max-height:70vh;overflow: auto;">
<!-- 货币 -->
<a-menu-item v-for="(i,j) in currencylist" :key="j" style="position: relative;">
<div class="selitem" @click="currencychange(i.value)">
<span>{{i.name}} </span>
<img src="@/static/images/duihao.png" alt="" v-if="i.name == userinfo.currency" class="duihao">
</div>
</a-menu-item>
<!-- <a-menu-item key="1">
<div class="selitem">
<span>时区2b</span>
</div>
</a-menu-item>
<a-menu-item key="3">
<div class="selitem">
<span>时区3b</span>
</div>
</a-menu-item> -->
</a-menu>
</template>
</a-dropdown>
<a-dropdown :trigger="['click']" :getPopupContainer="triggerNode => triggerNode.parentNode">
<div class="item" @click="e => e.preventDefault()">
<img src="@/static/images/yuyan.png" alt="" class="icon">
<div class="name">{{userinfo.language}}</div>
<img src="@/static/images/jiantou2.png" alt="" class="down">
</div>
<template v-slot:overlay>
<a-menu style="max-height:70vh;overflow: auto;">
<!-- 语言 -->
<a-menu-item v-for="(i,j) in languagelist" :key="j" style="position: relative;">
<div class="selitem" @click="setlanguage(i.value)">
<span>{{i.name}}</span>
<img src="@/static/images/duihao.png" alt="" v-if="i.name == userinfo.language" class="duihao">
</div>
</a-menu-item>
<!-- <a-menu-item key="1">
<div class="selitem">
<span>时区2cc</span>
</div>
</a-menu-item>
<a-menu-item key="3">
<div class="selitem">
<span>时区3c</span>
</div>
</a-menu-item> -->
</a-menu>
</template>
</a-dropdown>
<div class="item" style="border-right: none;" @click="navto('/regime/date')">
<img src="@/static/images/rili.png" alt="" class="icon">
<div class="name">{{lan.$t('rili')}}</div>
</div>
</div>
</div>
</template>
<style lang="scss" scoped>
.nav ::v-deep(.ant-dropdown-menu-item:hover, .ant-dropdown-menu-submenu-title:hover){
background: white;
.selitem{
color:#06C7AE ;
}
}
.nav{
display: flex;
user-select: none;
.duihao{
width: 15px;
height: 15px;
position: absolute;
right: 15px;
top: 8px;
}
.logo{
width: 171px;
height: 57px;
background-color: #06C7AE;
display: flex;
align-items: center;
flex-shrink: 0;
.img{
width: 38px;
height: 38px;
margin-left: 14px;
border-radius: 50%;
}
.title{
margin-left: 9px;
font-size: 17px;
color: #fff;
}
}
.navigation{
display: flex;
align-items: center;
flex-shrink: 0;
margin-left: 28px;
.item{
padding: 0 28px;
height: 18px;
border-right: 1px solid #eee;
font-size: 11px;
color: #111;
font-weight: bold;
cursor: pointer;
&:last-child{
border-right: none;
}
}
.item:hover{
color: #06C7AE;
}
}
.active{
color: #06C7AE;
}
.setting{
display: flex;
align-items: center;
flex-shrink: 0;
padding: 0 16px;
.selitem{
text-align: center;
font-size: 11px;
color: #111;
}
.item{
display: flex;
align-items: center;
border-right: 1px solid #eee;
padding: 0 23px;
height: 18rpx;
.icon{
width: 16px;
height: 16px;
}
.name{
margin-left: 6px;
font-size: 11px;
color: #111;
font-weight: bold;
}
.down{
width: 9px;
height: 5px;
margin-left: 20px;
}
}
}
}
</style>
<script lang="ts">
import { editsystemsetting, getcurrencys, getlanguages, getzonelist } from '@/api';
import router from '@/router';
import store from '@/store';
import { computed, defineComponent, onMounted, ref } from 'vue';
import { useRoute } from 'vue-router';
import axios from 'axios'
import { useI18n } from '@/utils/i18n';
export default defineComponent({
props:{
type: {
type: Number,
default:0
}
},
setup(props){
const lan: any = useI18n();
const routes = useRoute();
console.log(routes.path);
const types = ref(props.type)
const zonelist=ref<any>([{
city: "中途岛",
gmt: "GMT-11:00",
id: "Pacific/Midway",
zoneid: 1
}])
const selectedzone=ref([])
const currencylist=ref<any>([{
alias: "CNY",
code: "104110041000",
createdAt: "2020-08-19 11:54:59",
deletedAt: null,
dictionaryid: 241,
name: "人民币¥",
position: 1,
publish: 1,
updatedAt: "2020-08-19 11:54:59",
value: "1"
}])
const languagelist=ref<any>([{
alias: "",
code: "104110011000",
createdAt: "2020-08-14 11:08:28",
deletedAt: null,
dictionaryid: 210,
name: "中文",
position: 1,
publish: 1,
updatedAt: "2020-08-14 11:08:28",
value: "zh"
}])
console.log(types.value)
interface Nav{
name: string;
route: string;
}
const nav: Array<Nav> = [
{
name: lan.$t('zhiboguanli'),
route: "/regime/live"
},
{
name: lan.$t('shipinguanli'),
route: "/regime/video"
},
{
name: lan.$t("dingyuezheguanli"),
route: "/regime/subscriber"
},
{
name: lan.$t("gerenzhongxin"),
route: "/mine/archives"
}
]
const userinfo = computed(() => {
return store.state.userinfo;
})
const nowroute=ref<string>("")
function navto(index: number | string){
if(!store.state.islogin){
return ;
}
if(typeof index == "number"){
nowroute.value=nav[index].route
router.push({
path: nav[index].route
})
}else{
router.push(index)
}
}
onMounted(async () => {
zonelist.value=await getzonelist()
// console.log(zonelist.value)
currencylist.value=await getcurrencys()
languagelist.value=await getlanguages()
console.log(routes.path)
nowroute.value=routes.path
})
function zonechange(e?: any){
// console.log(e,1002)
editsystemsetting({zoneid:e})
}
function currencychange(e?: any){
console.log(e)
editsystemsetting({currency:parseInt(e)})
}
function setlanguage(e?: any){
console.log(e)
editsystemsetting({language:e})
lan.locale.value = e
}
function toindex(){
router.push("/")
}
return {
nav,
types,
navto,
userinfo,
zonelist,
zonechange,
selectedzone,
currencylist,
currencychange,
languagelist,
setlanguage,
nowroute,
toindex,
lan
}
}
})
</script>