hookehuyr

✨ feat: 新增授权功能

1 <!-- 1 <!--
2 * @Date: 2024-09-26 13:36:06 2 * @Date: 2024-09-26 13:36:06
3 * @LastEditors: hookehuyr hookehuyr@gmail.com 3 * @LastEditors: hookehuyr hookehuyr@gmail.com
4 - * @LastEditTime: 2024-11-19 14:30:13 4 + * @LastEditTime: 2024-12-04 11:43:06
5 * @FilePath: /hager/src/App.vue 5 * @FilePath: /hager/src/App.vue
6 * @Description: 文件描述 6 * @Description: 文件描述
7 --> 7 -->
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
9 <div style="display: flex; flex-direction: column; min-height: 100vh; overflow: hidden;"> 9 <div style="display: flex; flex-direction: column; min-height: 100vh; overflow: hidden;">
10 <hager-header @onShowMenu="onShowMenu"></hager-header> 10 <hager-header @onShowMenu="onShowMenu"></hager-header>
11 <router-view :class="[!isLoginPage ? 'wrapper' : '', is_xs ? 'xs' : '']"></router-view> 11 <router-view :class="[!isLoginPage ? 'wrapper' : '', is_xs ? 'xs' : '']"></router-view>
12 - <hager-footer v-if="!isLoginPage"></hager-footer> 12 + <hager-footer v-if="!isLoginPage" @send-openid="sendOpenid"></hager-footer>
13 <div v-if="showMask" class="mask"> 13 <div v-if="showMask" class="mask">
14 </div> 14 </div>
15 </div> 15 </div>
...@@ -19,6 +19,7 @@ ...@@ -19,6 +19,7 @@
19 import hagerHeader from '@/components/common/hagerHeader.vue'; 19 import hagerHeader from '@/components/common/hagerHeader.vue';
20 import hagerFooter from '@/components/common/hagerFooter.vue'; 20 import hagerFooter from '@/components/common/hagerFooter.vue';
21 import mixin from '@/common/mixin'; 21 import mixin from '@/common/mixin';
22 +import { wxInfo } from '@/utils/tools';
22 23
23 export default { 24 export default {
24 // TAG:配置页面meta和标题信息 25 // TAG:配置页面meta和标题信息
...@@ -50,6 +51,16 @@ export default { ...@@ -50,6 +51,16 @@ export default {
50 onShowMenu (val) { 51 onShowMenu (val) {
51 this.showMask = val; 52 this.showMask = val;
52 }, 53 },
54 + sendOpenid (openid) {
55 + if (wxInfo().isWeiXin && !openid) { // TAG: 微信环境下需要授权登录
56 + this.$router.replace({
57 + path: '/auth',
58 + query: {
59 + href: location.hash,
60 + }
61 + });
62 + }
63 + }
53 } 64 }
54 } 65 }
55 </script> 66 </script>
......
1 <!-- 1 <!--
2 * @Date: 2024-09-26 13:42:22 2 * @Date: 2024-09-26 13:42:22
3 * @LastEditors: hookehuyr hookehuyr@gmail.com 3 * @LastEditors: hookehuyr hookehuyr@gmail.com
4 - * @LastEditTime: 2024-11-07 11:01:58 4 + * @LastEditTime: 2024-12-04 11:40:52
5 * @FilePath: /hager/src/components/common/hagerFooter.vue 5 * @FilePath: /hager/src/components/common/hagerFooter.vue
6 * @Description: 文件描述 6 * @Description: 文件描述
7 --> 7 -->
...@@ -169,13 +169,14 @@ export default { ...@@ -169,13 +169,14 @@ export default {
169 e_title: 'Honors', 169 e_title: 'Honors',
170 content: '海格集团是行业创新领导者之一,我们与来自工业和电气领域的客户一起致力于引领面向未来的主题,如家庭互联、智能建筑技术、能源效率、生活辅助系统、电动交通、可再生能源。', 170 content: '海格集团是行业创新领导者之一,我们与来自工业和电气领域的客户一起致力于引领面向未来的主题,如家庭互联、智能建筑技术、能源效率、生活辅助系统、电动交通、可再生能源。',
171 link: '/about/honors', 171 link: '/about/honors',
172 - }] 172 + }],
173 } 173 }
174 }, 174 },
175 async mounted () { 175 async mounted () {
176 const { code, data } = await getFooterAPI(); 176 const { code, data } = await getFooterAPI();
177 if (code) { 177 if (code) {
178 this.footer_data = data; 178 this.footer_data = data;
179 + this.$emit('send-openid', data.openid)
179 } 180 }
180 }, 181 },
181 methods: { 182 methods: {
......
1 /* 1 /*
2 * @Date: 2024-08-26 10:42:15 2 * @Date: 2024-08-26 10:42:15
3 * @LastEditors: hookehuyr hookehuyr@gmail.com 3 * @LastEditors: hookehuyr hookehuyr@gmail.com
4 - * @LastEditTime: 2024-11-29 14:06:03 4 + * @LastEditTime: 2024-12-02 15:47:19
5 * @FilePath: /hager/src/route.js 5 * @FilePath: /hager/src/route.js
6 * @Description: 文件描述 6 * @Description: 文件描述
7 */ 7 */
...@@ -213,4 +213,13 @@ export default [{ ...@@ -213,4 +213,13 @@ export default [{
213 tag: 'search' 213 tag: 'search'
214 }, 214 },
215 children: [] 215 children: []
216 +}, {
217 + path: '/auth',
218 + name: '授权页面',
219 + component: () => import('@/views/auth'),
220 + meta: {
221 + title: '授权页面',
222 + tag: 'auth'
223 + },
224 + children: []
216 }] 225 }]
......
1 /* 1 /*
2 * @Date: 2022-04-18 15:59:42 2 * @Date: 2022-04-18 15:59:42
3 * @LastEditors: hookehuyr hookehuyr@gmail.com 3 * @LastEditors: hookehuyr hookehuyr@gmail.com
4 - * @LastEditTime: 2023-08-07 13:31:59 4 + * @LastEditTime: 2024-12-02 15:45:06
5 - * @FilePath: /map-demo/src/utils/tools.js 5 + * @FilePath: /hager/src/utils/tools.js
6 * @Description: 文件描述 6 * @Description: 文件描述
7 */ 7 */
8 import dayjs from 'dayjs'; 8 import dayjs from 'dayjs';
...@@ -20,18 +20,18 @@ const wxInfo = () => { ...@@ -20,18 +20,18 @@ const wxInfo = () => {
20 let u = navigator.userAgent; 20 let u = navigator.userAgent;
21 let isAndroid = u.indexOf('Android') > -1 || u.indexOf('Linux') > -1; //android终端或者uc浏览器 21 let isAndroid = u.indexOf('Android') > -1 || u.indexOf('Linux') > -1; //android终端或者uc浏览器
22 let isiOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios终端 22 let isiOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios终端
23 + let isMobile = u.indexOf('Android') > -1 || u.indexOf('iPhone') > -1 || u.indexOf('iPad') > -1; // 移动端平台
24 + let isIpad = u.indexOf('iPad') > -1; // iPad平台
23 let uAgent = navigator.userAgent.toLowerCase(); 25 let uAgent = navigator.userAgent.toLowerCase();
24 - let isTable = (uAgent.match(/MicroMessenger/i) == 'micromessenger') ? true : false; 26 + let isWeiXin = (uAgent.match(/MicroMessenger/i) == 'micromessenger') ? true : false;
25 - let isPC = uAgent.match( 27 + let isPC = (uAgent.match(/(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone|micromessenger)/i)) ? false : true;
26 - /(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone|micromessenger)/i,
27 - )
28 - ? false
29 - : true;
30 return { 28 return {
31 isAndroid, 29 isAndroid,
32 isiOS, 30 isiOS,
33 - isTable, 31 + isWeiXin,
34 - isPC, 32 + isMobile,
33 + isIpad,
34 + isPC
35 }; 35 };
36 }; 36 };
37 37
......
1 +<!--
2 + * @Date: 2022-08-29 13:55:31
3 + * @LastEditors: hookehuyr hookehuyr@gmail.com
4 + * @LastEditTime: 2024-12-04 11:36:15
5 + * @FilePath: /hager/src/views/auth.vue
6 + * @Description: 授权模块
7 +-->
8 +<template>
9 + <div />
10 +</template>
11 +
12 +<script>
13 +export default {
14 + mounted () {
15 + // php需要先跳转链接获取openid
16 + /**
17 + * encodeURIComponent() 函数可把字符串作为 URI 组件进行编码。
18 + * 该方法不会对 ASCII 字母和数字进行编码,也不会对这些 ASCII 标点符号进行编码: - _ . ! ~ * ' ( ) 。
19 + * 其他字符(比如 :;/?:@&=+$,# 这些用于分隔 URI 组件的标点符号),都是由一个或多个十六进制的转义序列替换的。
20 + */
21 + let raw_url = encodeURIComponent(location.origin + location.pathname + this.$route.query.href); // 未授权的地址
22 + // TAG: 开发环境测试数据
23 + const short_url = `/srv/?m=srv&a=openid&res=${raw_url}`;
24 + location.href = import.meta.env.DEV
25 + ? `${short_url}&openid=${import.meta.env.VITE_OPENID}`
26 + : `${short_url}`;
27 + }
28 +}
29 +</script>