|
|
@@ -9,58 +9,65 @@
|
|
|
</template>
|
|
|
|
|
|
<script setup>
|
|
|
+import { onShow } from '@dcloudio/uni-app'
|
|
|
|
|
|
const route = useRoute()
|
|
|
|
|
|
let token = ref(uni.getStorageSync('token'));
|
|
|
-let user_info = ref(uni.getStorageSync('user_info'));
|
|
|
-if(route.query.GuestMode && route.query.GuestMode == 1){
|
|
|
- token.value = uni.getStorageSync('youke_token')
|
|
|
-}
|
|
|
+let url = ref('');
|
|
|
|
|
|
-console.log(user_info);
|
|
|
+function buildUrl() {
|
|
|
+ // GuestMode 优先取 query(兼容老入口),其次取 storage(switchTab 传不了 query)
|
|
|
+ const guestMode = (route.query.GuestMode && route.query.GuestMode == 1) || uni.getStorageSync('GuestMode') == 1;
|
|
|
+ if(guestMode){
|
|
|
+ token.value = uni.getStorageSync('youke_token')
|
|
|
+ }
|
|
|
+ // 一次性读取,避免之后正常进入客服页被误判为游客
|
|
|
+ uni.removeStorageSync('GuestMode');
|
|
|
+ // 每次页面显示时重新读取,登录返回客服页也能拿到最新用户信息
|
|
|
+ let user_info = uni.getStorageSync('user_info');
|
|
|
|
|
|
-let lang = ref(uni.getStorageSync('locale') || 'zh');
|
|
|
+ let lang = uni.getStorageSync('locale') || 'zh';
|
|
|
|
|
|
-let params;
|
|
|
-if (user_info.value && user_info.value.user_id) {
|
|
|
- // 有用户信息,用原有参数
|
|
|
- params = new URLSearchParams({
|
|
|
- from: 1,
|
|
|
- uid: user_info.value.user_id,
|
|
|
- account: user_info.value.account ? user_info.value.account : user_info.value.user_id,
|
|
|
- avatar: user_info.value.avatar,
|
|
|
- realname: user_info.value.first_name,
|
|
|
- Lang: lang.value
|
|
|
- });
|
|
|
-} else {
|
|
|
- // 游客模式:user_info 为空时
|
|
|
- // uid = 2位大小写字母 + 从"完整时间戳+9位随机数"随机取8位,再随机打乱拼接为10位
|
|
|
- const letters = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
|
|
|
- const letterPart = `${letters[Math.floor(Math.random() * 52)]}${letters[Math.floor(Math.random() * 52)]}`;
|
|
|
- const tsRand = `${Date.now()}${Math.floor(Math.random() * 1000000000)}`;
|
|
|
- let numPart = '';
|
|
|
- for (let i = 0; i < 8; i++) {
|
|
|
- numPart += tsRand[Math.floor(Math.random() * tsRand.length)];
|
|
|
+ let params;
|
|
|
+ if (user_info && user_info.user_id) {
|
|
|
+ // 有用户信息,用原有参数
|
|
|
+ params = new URLSearchParams({
|
|
|
+ from: 1,
|
|
|
+ uid: user_info.user_id,
|
|
|
+ account: user_info.account ? user_info.account : user_info.user_id,
|
|
|
+ avatar: user_info.avatar,
|
|
|
+ realname: user_info.first_name,
|
|
|
+ Lang: lang
|
|
|
+ });
|
|
|
+ } else {
|
|
|
+ // 游客模式:user_info 为空时
|
|
|
+ // uid = 2位大小写字母 + 从"完整时间戳+9位随机数"随机取8位,再随机打乱拼接为10位
|
|
|
+ const letters = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
|
|
|
+ const letterPart = `${letters[Math.floor(Math.random() * 52)]}${letters[Math.floor(Math.random() * 52)]}`;
|
|
|
+ const tsRand = `${Date.now()}${Math.floor(Math.random() * 1000000000)}`;
|
|
|
+ let numPart = '';
|
|
|
+ for (let i = 0; i < 8; i++) {
|
|
|
+ numPart += tsRand[Math.floor(Math.random() * tsRand.length)];
|
|
|
+ }
|
|
|
+ const uid = (letterPart + numPart).split('').sort(() => Math.random() - 0.5).join('');
|
|
|
+ params = new URLSearchParams({
|
|
|
+ from: 1,
|
|
|
+ uid: uid,
|
|
|
+ account: uid,
|
|
|
+ realname: `游客B_${uid.slice(-4)}`,
|
|
|
+ Lang: lang
|
|
|
+ });
|
|
|
}
|
|
|
- const uid = (letterPart + numPart).split('').sort(() => Math.random() - 0.5).join('');
|
|
|
- params = new URLSearchParams({
|
|
|
- from: 1,
|
|
|
- uid: uid,
|
|
|
- account: uid,
|
|
|
- realname: `游客B_${uid.slice(-4)}`,
|
|
|
- Lang: lang.value
|
|
|
- });
|
|
|
-}
|
|
|
-console.log(params);
|
|
|
|
|
|
-// var url = ref('http://bot28webkefu.sp2509.cc/#/userMsg?token=' + token.value + '&Lang=' + lang.value);
|
|
|
-var url = ref(`http://bot28webkefu.sp2509.cc/#/userMsg?${params.toString()}`);
|
|
|
+ // #ifdef H5
|
|
|
+ url.value = `${window.global.serviceURL}/#/userMsg?${params.toString()}`;
|
|
|
+ // #endif
|
|
|
+}
|
|
|
|
|
|
-// #ifdef H5
|
|
|
-// var url = window.global.serviceURL + '/#/userMsg?token=' + token.value + '&Lang=' + lang.value;
|
|
|
-var url = ref(`${window.global.serviceURL}/#/userMsg?${params.toString()}`);
|
|
|
-// #endif
|
|
|
+onShow(() => {
|
|
|
+ buildUrl();
|
|
|
+});
|
|
|
</script>
|
|
|
|
|
|
<style scoped lang="scss">
|