UNPKG

gisq-dd-mobile

Version:

gisq dingding mobile lib

249 lines (245 loc) 6.58 kB
import dd from 'gdt-jsapi' import axios from 'axios' export var gd = { authorCode: "", accessToken: "", ticket: "", userInfo: "", locate: function locate() { console.log("locate"); }, alert: function alert(msg) { console.log("locate"); if (!dd) return; dd.alert({ message: msg }); }, axiosGet: function(url, params) { return new Promise((resolve, reject) => { axios.get(url, { params: params }).then(res => { resolve(res.data); }).catch(err => { reject(err.data) }) }); }, axiosPost: function(url, params) { axios.defaults.headers.post['Content-Type'] = 'application/json;charset=UTF-8'; return new Promise((resolve, reject) => { axios.post(url, params) .then(res => { resolve(res.data); }) .catch(err => { reject(err.data) }); }); }, axiosPostFormData: function axiosPost(url, params) { axios.defaults.headers.post['Content-Type'] = 'application/json'; return new Promise(function(resolve, reject) { var fd = new FormData(); for (let it in params) { fd.append(it, params[it]); } axios.post(url, fd).then(res => { resolve(res.data); }) .catch(err => { reject(err.data) }); }); }, getAccessToken: function(baseUrl, params) { var _this = this; var url = "/user/getAccessToken"; this.axiosGet(baseUrl + url, params).then(accessTokenStr => { localStorage.setItem("gisqDdAccessToken", accessTokenStr); _this.accessToken = accessTokenStr; }); }, getTicket: function(baseUrl, params, isJsAuth) { //TODO ajax getTicket var _this = this; var url = "/user/getJsAuthorTicket"; this.axiosGet(baseUrl + url, params).then(ticketStr => { localStorage.setItem("gisqDdTicket", ticketStr); if (isJsAuth) _this.jsAuthor(ticketStr); _this.ticket = ticketStr; }); }, jsAuthor: function(ticketStr, successCallback) { if (!dd) return; var _this = this; dd.authConfig({ ticket: ticketStr, jsApiList: ["alert", "createChatGroup", "openChat", "copyToClipboard", "getGeolocation", "chooseDepartments", "chooseContactWithComplexPicker", "chooseContact", "takePhoto" ] }).then(res => { console.log(res) successCallback(); //_this.alert("js授权错误"+JSON.stringify(res)); }).catch(err => { console.log(err) _this.alert("js授权错误" + JSON.stringify(err)); }) }, getAuthorCode: function(corpId) { if (!dd) return; return new Promise((resolve, reject) => { dd.getAuthCode({ corpId: corpId }).then(res => { console.log(res) resolve(res) }).catch(err => { //_this.alert("获取授权码错误"+JSON.stringify(err)); reject(err); }) }); }, getUserDetail: function(baseUrl, accessToken, authorCode) { var _this = this; var url = "/user/getUserDetail"; var params = { "accessToken": accessToken, "authorCode": authorCode } this.axiosGet(baseUrl + url, params).then(userInfo => { localStorage.setItem("gisqDdUserInfo", userInfo); _this.userInfo = userInfo; }); }, freeLogin: function(corpId, baseUrl, isJsAuth, successCallback, errorCallback) { var _this = this; this.getAuthorCode(corpId).then(function(authCodeJson) { var url = "/user/freeLogin"; var params = { "authorCode": authCodeJson.code } _this.axiosPostFormData(baseUrl + url, params).then(res => { //_this.alert("freeLogin" + JSON.stringify(res)); if (res && res.data.userInfo) { _this.accessToken = res.data.accessToken; _this.ticket = res.data.jsTicket; _this.userInfo = res.data.userInfo; successCallback(res); if (isJsAuth) { _this.jsAuthor(_this.ticket, function() {}); } } else { errorCallback("failed to login"); } }); }).catch(err => { _this.alert("获取授权码错误" + JSON.stringify(err)); }); }, getGeolocation: function(useCache, successCallback, errorCallback) { dd.getGeolocation({ targetAccuracy: 200, coordinate: 0, withReGeocode: false, useCache: useCache, //默认是true,如果需要频繁获取地理位置,请设置false }).then(res => { successCallback(res); }).catch(err => { errorCallback(err); }) }, takePhoto: function(successCallback, errorCallback) { dd.takePhoto().then(res => { successCallback(res); }).catch(err => { errorCallback(err); }); }, recordVideo: function(successCallback, errorCallback) { dd.shootVideo().then(res => { successCallback(res) }).catch(err => { errorCallback(err); }) }, getPhoneInfo: function(successCallback, errorCallback) { dd.getPhoneInfo().then(res => { successCallback(res) }).catch(err => { errorCallback(err) }) }, getUUID: function(successCallback, errorCallback) { dd.getUUID().then(res => { successCallback(res) }).catch(err => { errorCallback(err) }) }, scan: function(type, successCallback, errorCallback) { dd.scan({ type: type ? type : "qr" }).then(res => { successCallback(res) }).catch(err => { errorCallback(err) }) }, version: function(successCallback, errorCallback) { dd.version().then(res => { successCallback(res) }).catch(err => { errorCallback(err) }) }, ready: function(callback) { dd.ready(function() { //调用jsapi方法 callback(); }) }, getLoginUser: function(successCallback, errorCallback) { dd.getLoginUser().then(res => { successCallback(res) }).catch(err => { errorCallback(err) }) }, fetchLocal: function(url) { return new Promise(function(resolve, reject) { var xhr = new XMLHttpRequest(); xhr.responseType = 'arraybuffer'; xhr.onload = function() { if (xhr.status == 0) { xhr.status = 200; } resolve(new Response(xhr.response, { status: xhr.status })); }; xhr.onerror = function() { reject(new TypeError('Local request failed')); }; xhr.open('GET', url); xhr.send(null); }); }, getMobileLocalFile: function(path,fileName, successCallback,errorCallback) { this.fetchLocal(path).then(function(response) { return response.arrayBuffer(); }).then(function(arrayBuffer) { //console.log(arrayBuffer) var fd = new File([new Blob([arrayBuffer])], fileName, { "type": "text/plain", "lastModified": "" + new Date() + "" }); successCallback(fd); }).catch(function(err) { errorCallback(err); }); } };