Kaynağa Gözat

钉钉异常排查处理

huangguoce 2 hafta önce
ebeveyn
işleme
fe7f5aa52d
1 değiştirilmiş dosya ile 292 ekleme ve 288 silme
  1. 292 288
      App.vue

+ 292 - 288
App.vue

@@ -1,324 +1,328 @@
 <script>
-	import Vue from 'vue'
-    import BASE_URL from './config.js'
-    import {mapActions} from 'vuex'
-    import loginService from '@/api/auth/loginService'
-    import * as dd from 'dingtalk-jsapi'
-	export default {
-		onLaunch: function() {
-			uni.getSystemInfo({
-				success: function(e) {
-					// #ifndef MP
-					Vue.prototype.StatusBar = e.statusBarHeight;
-					if (e.platform == 'android') {
-						Vue.prototype.CustomBar = e.statusBarHeight + 50;
-					} else {
-						Vue.prototype.CustomBar = e.statusBarHeight + 45;
-					};
-					// #endif
+import Vue from 'vue'
+import BASE_URL from './config.js'
+import { mapActions } from 'vuex'
+import loginService from '@/api/auth/loginService'
+import * as dd from 'dingtalk-jsapi'
+export default {
+    onLaunch: function () {
+        uni.getSystemInfo({
+            success: function (e) {
+                // #ifndef MP
+                Vue.prototype.StatusBar = e.statusBarHeight;
+                if (e.platform == 'android') {
+                    Vue.prototype.CustomBar = e.statusBarHeight + 50;
+                } else {
+                    Vue.prototype.CustomBar = e.statusBarHeight + 45;
+                };
+                // #endif
 
-					// #ifdef MP-WEIXIN
-					Vue.prototype.StatusBar = e.statusBarHeight;
-					let custom = wx.getMenuButtonBoundingClientRect();
-					Vue.prototype.Custom = custom;
-					Vue.prototype.CustomBar = custom.bottom + custom.top - e.statusBarHeight;
-					// #endif
+                // #ifdef MP-WEIXIN
+                Vue.prototype.StatusBar = e.statusBarHeight;
+                let custom = wx.getMenuButtonBoundingClientRect();
+                Vue.prototype.Custom = custom;
+                Vue.prototype.CustomBar = custom.bottom + custom.top - e.statusBarHeight;
+                // #endif
 
-					// #ifdef MP-ALIPAY
-					Vue.prototype.StatusBar = e.statusBarHeight;
-					Vue.prototype.CustomBar = e.statusBarHeight + e.titleBarHeight;
-					// #endif
-				}
-			})
+                // #ifdef MP-ALIPAY
+                Vue.prototype.StatusBar = e.statusBarHeight;
+                Vue.prototype.CustomBar = e.statusBarHeight + e.titleBarHeight;
+                // #endif
+            }
+        })
 
-			Vue.prototype.ColorList = [{
-					title: '嫣红',
-					name: 'red',
-					color: '#e54d42'
-				},
-				{
-					title: '桔橙',
-					name: 'orange',
-					color: '#f37b1d'
-				},
-				{
-					title: '明黄',
-					name: 'yellow',
-					color: '#fbbd08'
-				},
-				{
-					title: '橄榄',
-					name: 'olive',
-					color: '#8dc63f'
-				},
-				{
-					title: '森绿',
-					name: 'green',
-					color: '#39b54a'
-				},
-				{
-					title: '天青',
-					name: 'cyan',
-					color: '#1cbbb4'
-				},
-				{
-					title: '海蓝',
-					name: 'blue',
-					color: '#0081ff'
-				},
-				{
-					title: '姹紫',
-					name: 'purple',
-					color: '#6739b6'
-				},
-				{
-					title: '木槿',
-					name: 'mauve',
-					color: '#9c26b0'
-				},
-				{
-					title: '桃粉',
-					name: 'pink',
-					color: '#e03997'
-				},
-				{
-					title: '棕褐',
-					name: 'brown',
-					color: '#a5673f'
-				},
-				{
-					title: '玄灰',
-					name: 'grey',
-					color: '#8799a3'
-				},
-				{
-					title: '草灰',
-					name: 'gray',
-					color: '#aaaaaa'
-				},
-				{
-					title: '墨黑',
-					name: 'black',
-					color: '#333333'
-				},
-				{
-					title: '雅白',
-					name: 'white',
-					color: '#ffffff'
-				},
-			]
+        Vue.prototype.ColorList = [{
+            title: '嫣红',
+            name: 'red',
+            color: '#e54d42'
+        },
+        {
+            title: '桔橙',
+            name: 'orange',
+            color: '#f37b1d'
+        },
+        {
+            title: '明黄',
+            name: 'yellow',
+            color: '#fbbd08'
+        },
+        {
+            title: '橄榄',
+            name: 'olive',
+            color: '#8dc63f'
+        },
+        {
+            title: '森绿',
+            name: 'green',
+            color: '#39b54a'
+        },
+        {
+            title: '天青',
+            name: 'cyan',
+            color: '#1cbbb4'
+        },
+        {
+            title: '海蓝',
+            name: 'blue',
+            color: '#0081ff'
+        },
+        {
+            title: '姹紫',
+            name: 'purple',
+            color: '#6739b6'
+        },
+        {
+            title: '木槿',
+            name: 'mauve',
+            color: '#9c26b0'
+        },
+        {
+            title: '桃粉',
+            name: 'pink',
+            color: '#e03997'
+        },
+        {
+            title: '棕褐',
+            name: 'brown',
+            color: '#a5673f'
+        },
+        {
+            title: '玄灰',
+            name: 'grey',
+            color: '#8799a3'
+        },
+        {
+            title: '草灰',
+            name: 'gray',
+            color: '#aaaaaa'
+        },
+        {
+            title: '墨黑',
+            name: 'black',
+            color: '#333333'
+        },
+        {
+            title: '雅白',
+            name: 'white',
+            color: '#ffffff'
+        },
+        ]
 
-		},
-		onShow: function() {
-			console.log('App Show')
-		},
-		onHide: function() {
-			console.log('App Hide')
-		},
-        created: async function() {
-	
-            const urlParams = this.getUrlParams();
-            if (await this.tryDingTalkAutoLogin(urlParams)) {
-                return;
-            }
-            // 获取 URL 中的 code 参数
-            const code = urlParams.get('code');
+    },
+    onShow: function () {
+        console.log('App Show')
+    },
+    onHide: function () {
+        console.log('App Hide')
+    },
+    created: async function () {
 
-            console.log('传入 code -------');
-            console.log(code);
+        const urlParams = this.getUrlParams();
+        if (await this.tryDingTalkAutoLogin(urlParams)) {
+            return;
+        }
+        // 获取 URL 中的 code 参数
+        const code = urlParams.get('code');
 
-            if (code) {
-                try {
-                    // 发起请求获取用户信息
-                    const [err, res] = await uni.request({
-                        url: BASE_URL + `/flowable-server/app/proxy?appid=wxbcd608a92d6f9412&secret=69d382e18089367566df595b102fe756&code=` + code,
-                        method: 'GET'
-                    });
+        console.log('传入 code -------');
+        console.log(code);
 
-                    if (res && res.statusCode === 200) {
-                        console.log('用户信息获取成功-----------');
-                        const data = res.data;
-                        console.log(data);
-                        console.log(data.openId);
-                        // 将微信用户的 openId 存到本地
-                        uni.setStorageSync('openId', data.openId);
-                        console.log('getStorageSync-> ', uni.getStorageSync('openId'));
-                    } else {
-                        console.error('获取用户信息失败:', res.data);
-                    }
-                } catch (err) {
-                    console.error('请求失败:', err);
+        if (code) {
+            try {
+                // 发起请求获取用户信息
+                const [err, res] = await uni.request({
+                    url: BASE_URL + `/flowable-server/app/proxy?appid=wxbcd608a92d6f9412&secret=69d382e18089367566df595b102fe756&code=` + code,
+                    method: 'GET'
+                });
+
+                if (res && res.statusCode === 200) {
+                    console.log('用户信息获取成功-----------');
+                    const data = res.data;
+                    console.log(data);
+                    console.log(data.openId);
+                    // 将微信用户的 openId 存到本地
+                    uni.setStorageSync('openId', data.openId);
+                    console.log('getStorageSync-> ', uni.getStorageSync('openId'));
+                } else {
+                    console.error('获取用户信息失败:', res.data);
                 }
+            } catch (err) {
+                console.error('请求失败:', err);
             }
+        }
 
-            // 判断当前微信号的openId 是否已经存入到数据库了,如果存入了,那么就直接通过openId匹配登录,否则就进入登录页面
-            const flag = true;
-            const localOpenId = uni.getStorageSync('openId');
-            if (localOpenId) {
-                try {
-                    // 发起请求获取库中的openId
-                    const [err, res] = await uni.request({
-                        url: BASE_URL + `/system-server/sys/user/allOpenIds`,
-                        method: 'GET'
-                    });
+        // 判断当前微信号的openId 是否已经存入到数据库了,如果存入了,那么就直接通过openId匹配登录,否则就进入登录页面
+        const flag = true;
+        const localOpenId = uni.getStorageSync('openId');
+        if (localOpenId) {
+            try {
+                // 发起请求获取库中的openId
+                const [err, res] = await uni.request({
+                    url: BASE_URL + `/system-server/sys/user/allOpenIds`,
+                    method: 'GET'
+                });
 
-                    if (res && res.statusCode === 200) {
-                        const data = res.data;
-                        console.log('allOpenIds:', data);
-                        // 确保 data 是数组
-                        if (Array.isArray(data) && data.includes(localOpenId)) {
-                            // 包含的话,则直接根据 openId来实现登录
-                            console.log(`data 包含 openId: ${localOpenId}`);
-                            const [err, res] = await uni.request({
-                                url: BASE_URL + `/auth-server/user/sys/wxLogin`,
-                                method: 'POST',
-                                data: { openId: localOpenId },
-                                header: {
-                                    'domain': 'ydddl'
-                                }
-                            });
-                            if (res && res.statusCode === 200) {
-                                this.$store.commit('SET_TOKEN',res.data.token);
-                                await this.refreshUserInfo();
-                                uni.reLaunch({
-                                    url: '../index/index',
-                                });
+                if (res && res.statusCode === 200) {
+                    const data = res.data;
+                    console.log('allOpenIds:', data);
+                    // 确保 data 是数组
+                    if (Array.isArray(data) && data.includes(localOpenId)) {
+                        // 包含的话,则直接根据 openId来实现登录
+                        console.log(`data 包含 openId: ${localOpenId}`);
+                        const [err, res] = await uni.request({
+                            url: BASE_URL + `/auth-server/user/sys/wxLogin`,
+                            method: 'POST',
+                            data: { openId: localOpenId },
+                            header: {
+                                'domain': 'ydddl'
                             }
+                        });
+                        if (res && res.statusCode === 200) {
+                            this.$store.commit('SET_TOKEN', res.data.token);
+                            await this.refreshUserInfo();
+                            uni.reLaunch({
+                                url: '../index/index',
+                            });
                         }
                     }
-                } catch (err) {
-                    console.error('请求失败:', err);
                 }
+            } catch (err) {
+                console.error('请求失败:', err);
             }
+        }
 
-            if (flag) {
-                console.log('进来了');
-            }
+        if (flag) {
+            console.log('进来了');
+        }
 
-            // 获取 URL 中的 'flow' 参数
-            const flowParam = this.$route.query.flow;
-            // 将 URL 编码的 'flow' 参数解析为 JSON 对象
-            if (!flowParam) {
-                return;
+        // 获取 URL 中的 'flow' 参数
+        const flowParam = this.$route.query.flow;
+        // 将 URL 编码的 'flow' 参数解析为 JSON 对象
+        if (!flowParam) {
+            return;
+        }
+        const flowObject = JSON.parse(decodeURIComponent(flowParam));
+        console.log("flowObject.openId---> ", flowObject.openId)
+        if (flowObject.openId) {
+            const [err, res] = await uni.request({
+                url: BASE_URL + `/auth-server/user/sys/wxLogin`,
+                method: 'POST',
+                data: { openId: flowObject.openId },
+                header: {
+                    'domain': 'ydddl'
+                }
+            });
+            if (res && res.statusCode === 200) {
+                this.$store.commit('SET_TOKEN', res.data.token);
+                await this.refreshUserInfo();
             }
-            const flowObject = JSON.parse(decodeURIComponent(flowParam));
-            console.log("flowObject.openId---> ", flowObject.openId)
-            if (flowObject.openId) {
-                const [err, res] = await uni.request({
-                    url: BASE_URL + `/auth-server/user/sys/wxLogin`,
-                    method: 'POST',
-                    data: { openId: flowObject.openId },
-                    header: {
-                        'domain': 'ydddl'
+        }
+
+    },
+    methods: {
+        ...mapActions(['refreshUserInfo']),
+        getUrlParams() {
+            const params = new URLSearchParams(window.location.search || '');
+            const hash = window.location.hash || '';
+            const hashQueryIndex = hash.indexOf('?');
+            if (hashQueryIndex > -1) {
+                const hashParams = new URLSearchParams(hash.substring(hashQueryIndex + 1));
+                hashParams.forEach((value, key) => {
+                    if (!params.has(key)) {
+                        params.set(key, value);
                     }
                 });
-                if (res && res.statusCode === 200) {
-                    this.$store.commit('SET_TOKEN',res.data.token);
-                    await this.refreshUserInfo();
-                }
             }
-
+            return params;
         },
-        methods: {
-            ...mapActions(['refreshUserInfo']),
-            getUrlParams() {
-                const params = new URLSearchParams(window.location.search || '');
-                const hash = window.location.hash || '';
-                const hashQueryIndex = hash.indexOf('?');
-                if (hashQueryIndex > -1) {
-                    const hashParams = new URLSearchParams(hash.substring(hashQueryIndex + 1));
-                    hashParams.forEach((value, key) => {
-                        if (!params.has(key)) {
-                            params.set(key, value);
-                        }
-                    });
+        isDingTalkEnv() {
+            return /DingTalk/i.test(window.navigator.userAgent || '');
+        },
+        loadDingTalkJs() {
+            return Promise.resolve(dd);
+        },
+        requestDingTalkAuthCode(corpId) {
+            return new Promise((resolve, reject) => {
+                if (!dd) {
+                    reject(new Error('钉钉资源未加载成功,请联系管理员'));
+                    return;
                 }
-                return params;
-            },
-            isDingTalkEnv() {
-                return /DingTalk/i.test(window.navigator.userAgent || '');
-            },
-            loadDingTalkJs() {
-                return Promise.resolve(dd);
-            },
-            requestDingTalkAuthCode(corpId) {
-                return new Promise((resolve, reject) => {
-                    if (!dd  ) {
-                        reject(new Error('钉钉资源未加载成功,请联系管理员'));
-                        return;
-                    }
-					dd.getAuthCode({
-						corpId: corpId,
-						onSuccess: (res) => resolve(res.code || res.authCode),
-						onFail: reject
-					});
-                    dd.error(reject);
+                dd.getAuthCode({
+                    corpId: corpId,
+                    onSuccess: (res) => resolve(res.code || res.authCode),
+                    onFail: reject
                 });
-            },
-            async handleDingTalkLoginSuccess(data) {
-                this.$store.commit('SET_TOKEN', data.token);
-                await this.refreshUserInfo();
-            },
-            async tryDingTalkAutoLogin(urlParams) {
-                if (!this.isDingTalkEnv()) {
-                    return false;
-                }
-                if (this.$store.state.user.token) {
-                    return true;
+                dd.error(reject);
+            });
+        },
+        async handleDingTalkLoginSuccess(data) {
+            this.$store.commit('SET_TOKEN', data.token);
+            await this.refreshUserInfo();
+        },
+        async tryDingTalkAutoLogin(urlParams) {
+            if (!this.isDingTalkEnv()) {
+                return false;
+            }
+            if (this.$store.state.user.token) {
+                return true;
+            }
+
+            const tenantId = urlParams.get('tenantId') || uni.getStorageSync('dingTalkTenantId') || '10009';
+
+            try {
+                const clientConfig = await loginService.dingTalkClientConfig(tenantId);
+
+                if (!clientConfig || !clientConfig.corpId) {
+
+                    throw new Error('DingTalk corpId is missing');
                 }
-		
-                const tenantId = urlParams.get('tenantId') || uni.getStorageSync('dingTalkTenantId') || '10009';
 
-                try {
-                    const clientConfig = await loginService.dingTalkClientConfig(tenantId);
-	
-                    if (!clientConfig || !clientConfig.corpId) {
-					
-                        throw new Error('DingTalk corpId is missing');
-                    }
-					
-                    await this.loadDingTalkJs();
-					
-                    const authCode = await this.requestDingTalkAuthCode(clientConfig.corpId);
-			
-                    const loginResult = await loginService.dingTalkLogin({
-                        authCode: authCode,
-                        tenantId: tenantId
-                    });
-			
-                    if (loginResult.bindRequired) {
-                        uni.setStorageSync('dingTalkBindKey', loginResult.bindKey);
-                        uni.setStorageSync('dingTalkTenantId', loginResult.tenantId || tenantId);
-                        uni.reLaunch({
-                            url: '/pages/login/login?bind=dingtalk'
-                        });
-                        return true;
-                    }
-                    await this.handleDingTalkLoginSuccess(loginResult);
+                await this.loadDingTalkJs();
+
+                const authCode = await this.requestDingTalkAuthCode(clientConfig.corpId);
+
+                const loginResult = await loginService.dingTalkLogin({
+                    authCode: authCode,
+                    tenantId: tenantId
+                });
+
+                if (loginResult.bindRequired) {
+                    uni.setStorageSync('dingTalkBindKey', loginResult.bindKey);
+                    uni.setStorageSync('dingTalkTenantId', loginResult.tenantId || tenantId);
                     uni.reLaunch({
-                        url: '/pages/index/index'
+                        url: '/pages/login/login?bind=dingtalk'
                     });
-                } catch (e) {
-					if(!e.isTrusted){
-						uni.showToast({
-						    title: '钉钉异常,请联系管理员',
-						    icon: 'none'
-						});
-					}
+                    return true;
                 }
-                return true;
-            },
-        }
+                await this.handleDingTalkLoginSuccess(loginResult);
+                uni.reLaunch({
+                    url: '/pages/index/index'
+                });
+            } catch (e) {
+				uni.showToast({
+				    title: JSON.stringify(e),
+				    icon: 'none'
+				});
+                // if (!e.isTrusted) {
+                //     uni.showToast({
+                //         title: '钉钉异常,请联系管理员',
+                //         icon: 'none'
+                //     });
+                // }
+            }
+            return true;
+        },
+    }
 
-	}
+}
 </script>
 
 <style lang="scss">
-	/*每个页面公共css */
-	@import "@/uni_modules/uview-ui/index.scss";
-	@import "static/css/jeeplus.scss";
-	/* @import 'jeeplus-flowable/lib/jeeplus-flowable.css'; */
-	@import "static/css/main.css";
-	@import "static/css/icon.css";
-	/*每个页面公共css */
+/*每个页面公共css */
+@import "@/uni_modules/uview-ui/index.scss";
+@import "static/css/jeeplus.scss";
+/* @import 'jeeplus-flowable/lib/jeeplus-flowable.css'; */
+@import "static/css/main.css";
+@import "static/css/icon.css";
+/*每个页面公共css */
 </style>