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.
56 lines
1.2 KiB
56 lines
1.2 KiB
<template>
|
|
<v-picker class="d-inline-block" :value="lang" :list="langList" @change="selectLang" range-key="label">
|
|
<!-- <image :src="url" mode="aspectFill" class="flag-img"></image> -->
|
|
<text>{{label}}</text>
|
|
</v-picker>
|
|
</template>
|
|
<script>
|
|
import { mapState, mapActions } from "vuex";
|
|
export default {
|
|
name: "v-lang",
|
|
props: {
|
|
tag: {
|
|
default: "span",
|
|
type: String,
|
|
required: false,
|
|
},
|
|
},
|
|
computed: {
|
|
...mapState({
|
|
langList: "langList",
|
|
lang: "lang",
|
|
}),
|
|
label() {
|
|
return this.langList.find((item) => item.value == this.lang).label;
|
|
},
|
|
url(){
|
|
return this.langList.find((item) => item.value == this.lang).url;
|
|
}
|
|
},
|
|
methods: {
|
|
...mapActions({
|
|
setLang: "setLang",
|
|
}),
|
|
getCurrent(){
|
|
let pages = getCurrentPages();
|
|
let curPage = pages[pages.length - 1];
|
|
return curPage
|
|
},
|
|
selectLang(value) {
|
|
this.setLang(value)
|
|
this.$emit('change')
|
|
let path = '/'+this.getCurrent().route
|
|
},
|
|
},
|
|
};
|
|
</script>
|
|
<style lang="scss" scoped>
|
|
.flag-img{
|
|
width: 44upx;
|
|
height: 44upx;
|
|
border-radius: 50%;
|
|
overflow: hidden;
|
|
vertical-align: middle;
|
|
margin-right: 12upx;
|
|
}
|
|
</style>
|