SimpleHeader.vue
4.4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
<template>
<header class="acce-header-render">
<div class="header acce-header-render" id="header" :style="`padding-top:${common_data.appHeight}px`">
<div v-if="!isback" class="back" @click="goBack"></div>
<div v-else> </div>
<div class="title acce-header-render" v-html="name"></div>
<div class="right"></div>
</div>
</header>
</template>
<script lang="ts">
// ,onMounted
import { ref } from 'vue';
import { useRouter } from 'vue-router';
import { useStore } from 'vuex';
import { get_localstorage,set_localstorage } from '@/common/js/utils'
export default {
name: 'SimpleHeader',
props: {
name: {
type: String,
default: ''
},
back: {
type: String,
default: ''
},
noback: {
type: Boolean,
default: false
}
},
emits: ['callback'],
setup (props: any, ctx: any) {
const isback = ref(props.noback);
const router = useRouter();
const store = useStore();
const common_data = ref(store.state.common_data);
const urlParams:any = new URLSearchParams(window.location.search);
if(urlParams && urlParams.get("referrer")){
let referrer = decodeURIComponent(urlParams.get("referrer"));
if(referrer){
set_localstorage("return_url",referrer);
}
}else if(document.referrer && document.referrer.indexOf('login') == -1 &&
document.referrer.indexOf('user') == -1 &&
document.referrer.indexOf('live2') == -1 &&
document.referrer.indexOf('from_vue') == -1) {
set_localstorage("return_url",document.referrer);
}else if(!common_data.value.isApp && location.href.indexOf('/game') > -1){
set_localstorage("return_url",'/');
}
if (common_data.value.isApp) {
let appHeight = 30;
if (common_data.value.isAndroid && (window as any).Android?.getStatusBarHeight) {
appHeight = (window as any).Android?.getStatusBarHeight() || 30;
}else if (common_data.value.isIos && (window as any).ios?.navBarHeight) {
appHeight = (window as any).ios.navBarHeight;
}
//一定牛中目前吴良建没有提供此方法,下面默认给35
if(!(typeof appHeight === 'number') || (typeof appHeight === 'number' && appHeight <= 30)){
appHeight = 35;
}
store.commit('updateAppHeight', appHeight);
}
const goBack = () => {
//调用android原生方法
if ((window as any).Android?.onFinish) {
(window as any).Android?.onFinish();
return;
}else if ((window as any).Android?.onBack) {
(window as any).Android?.onBack();
return;
}
//返回没有back值的情况
if (!props.back) {
//其它路由进来的返回事件
let return_url:any = get_localstorage()["return_url"];
if(return_url){
location.href = return_url;
return;
}else{
router.go(-1);
}
} else {
set_localstorage("return_url","");
if (props.back.indexOf('ydn_back') > -1) {
location.href = props.back;
return;
}
router.push({ path: props.back });
}
ctx.emit('callback');
};
return {
goBack,
isback,
common_data,
};
}
};
</script>
<style lang="scss" scoped>
/* 头部样式 */
.acce-header-render {
opacity: 1;
transform: translate3d(0, 0, 0);
-ms-transform: translate3d(0, 0, 0);
-moz-transform: translate3d(0, 0, 0);
-webkit-transform: translate3d(0, 0, 0);
}
header {
width: 100%;
position: fixed;
z-index: 99;
max-width: 769Px;
color: #fff;
height: 74px;
top: 0;
}
.header {
color: #fff;
line-height: 44px;
width: 100%;
display: flex !important;
justify-content: space-between;
align-items: center;
.title {
font-size: 16px;
text-align: center;
}
.back {
height: 44px;
line-height: 44px;
display: flex;
justify-content: left;
align-items: center;
padding-left: 16px;
}
.back,
.right {
min-width: 30px;
}
.back:after {
content: '';
display: inline-block;
-webkit-box-sizing: border-box;
box-sizing: border-box;
width: 10px;
height: 10px;
border-top: 2px solid #fff;
border-left: 2px solid #fff;
-webkit-transform: rotate(-45deg);
-moz-transform: rotate(-45deg);
-ms-transform: rotate(-45deg);
-o-transform: rotate(-45deg);
transform: rotate(-45deg);
}
}
</style>