|
|
@@ -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>
|