UNPKG

mtl-js-sdk

Version:

ynf-fw-mtl-api

1,618 lines (1,518 loc) 43.1 kB
import xaxios from 'axios' import QRious from 'qrious' import home from './unique.js' const DEFAULT_STORAGE_DOMAIN = "domain.default" const baseUrl = "ht" + "tps://bip-dai" + "ly.yonyoucloud.com/iuap-yonbuilder-mobile" const FAIL_CODE = 1 const SUCCESS_CODE = 200 const axios = xaxios?.default || xaxios const unsupportFailRes = { code: FAIL_CODE, message: "The current platform does not support", } function unsupportMethod(object = {}) { object.fail && object.fail(unsupportFailRes) object.complete && object.complete(unsupportFailRes) } const unsupportMethods = ["openSchema", "getConfig", "getStatusBarHeight"] const supportMethods = [ "saveExclusiveDomain", "saveExclusiveUserInfo", "saveExclusiveYhtInfo", "openExclusiveApp", "isExclusivePreloadMDF", "getExclusiveAppH5LocationPath", "getExclusiveCode", "webviewLoadUrl", "getAppInfo", "switchLongPress", "setStatusBar", "afterPrivacyAgreement", "webViewCustomScanQRCode", "execPluginSyncBridge", "requestPermission", ] const execBridgeMethods = [ "commonReplyComponent", "addImageWaterMark", "continuousShooting", "deleteBase64Image", "getBase64Image", "saveBase64Image", "getVideoThumbnail", "bindSensor", "collectRev", "collectTmp", "collectVib", "connectBle", "disconnectBle", "getBindedSensor", "getConnectStatus", "registerConnectStatusListener", "searchBleClient", "stopCollect", "createShortcut", "vibrateLong", "smileDetect", "getWatermarkInfo", "getUserAgent", "gainUserInfo", "checkMirrorStatus", "startMirrorScreen", "closeMirrorScreen", "openCreateSpace", "convertMemberIDs", "chooseUserOrGroupFromChat", "operateCloudAlarm", "checkCloudAlarm", "openPluginWithParams", "getOffLineOutSignPhoto", "getHhtQrCodeInfo", "configAppletMenu", "appletFromQzId", "writeAnnounceReply", "openAnnounceReply", "announceDetail", "previewFile", "openDocument", "mapLocationExtend", "getSchedulesFromMobile", "openChatByGroupId", "mdfIsLoad", "chooseGroupContacts", "configSkinAndTabbar", "getMultiDataCenterConfig", "collectionData", "getGzipAppData", "reloadWorkbenchPath", "openSearchAppList", "openSignViewWithParams", "shareApplet", "getAppletShareParams", "config", "openAppSetting", "openCustomSetting", "checkBridgeNameExist", "appearanceMode", "toggleCamera", "onPullDownHandle", "stopPullDownHandle", "onPullUpHandle", "stopPullUpHandle", "continuousShootingLocal", "jumpSystemSettings", "isFileExist", "getAppInformation", "writeLocationLog", "openWindow", "getWechatBill", "openLiveFlow", "yonyouPay", "zebraPrinterList", "zebraPrintImage", ] // ------------------start 未实现接口 // 录音 function startRecord(object) { let _obj = object || {} let data = Object.assign( { closeNcc: true, callback: "onVoiceRecordEnd", }, handleResponse(_obj) ) execEsnBridge("startRecord", data) } function stopRecord(object) { let _obj = object || {} let data = Object.assign( { closeNcc: true, }, handleResponse(_obj, (res) => { return { localId: res.bytes } }) ) execEsnBridge("stopRecord", data) } function onVoiceRecordEnd(object) { let _obj = object || {} home.upesn.registerResumeCallback("onVoiceRecordEnd", function (res) { let { bytes } = res _obj.success && object.success({ localId: bytes }) }) } function translateVoice(object) { let _obj = object || {} let { localId, isShowProgressTips = isShowProgressTips ? isShowProgressTips : 1 } = _obj if (home.isEmpty("localId", localId, object)) { return } let data = Object.assign( { bytes: localId, isShowUI: isShowProgressTips === 1 ? true : false, }, handleResponse(_obj, (res) => { return { translateResult: res.text } }) ) execEsnBridge("translateVoice", data) } // 语音播放 function playVoice(object) { let _obj = object || {} var bytes = "" if (_obj.localId) { bytes = _obj.localId } let closeNcc = true let callback = "onVoicePlayEnd" let data = Object.assign({ bytes, closeNcc, callback }, handleResponse(_obj)) execEsnBridge("startPlayAudio", data) } function pauseVoice(object) { let _obj = object || {} let closeNcc = true let data = Object.assign({ closeNcc }, handleResponse(_obj)) execEsnBridge("pausePlayAudio", data) } function stopVoice(object) { let _obj = object || {} let closeNcc = true let data = Object.assign({ closeNcc }, handleResponse(_obj)) execEsnBridge("stopPlayAudio", data) } function onVoicePlayEnd(object) { let _obj = object || {} home.upesn.registerResumeCallback("onVoicePlayEnd", function (res) { _obj.success && object.success(res) }) } // 语音合成 function startSpeechSyn(object) { let _obj = object || {} let { text } = _obj if (home.isEmpty("text", text, object)) { return } let data = Object.assign({ text }, handleResponse(_obj)) execEsnBridge("startSpeechSyn", data) } function stopSpeechSyn(object) { let _obj = object || {} let data = handleResponse(_obj) execEsnBridge("stopSpeechSyn", data) } function scanQRCode(object) { let _obj = object || {} let { type = "1" } = _obj if (type === "n") { relayoutCustomWebview({ ..._obj, type: 0 }) } else if (Object.prototype.hasOwnProperty.call(_obj, "scanType") && _obj.scanType === "barCode") { let data = Object.assign( { closeNcc: _obj.closeNcc }, handleResponse(_obj, (res) => { return { resultStr: res.barCode } }) ) execEsnBridge("scanBarcode", data) } else { var typeNeedResult = "showWeb" if (Object.prototype.hasOwnProperty.call(_obj, "needResult")) { typeNeedResult = _obj.needResult === 1 ? "qrCode" : "showWeb" } let data = Object.assign( { closeNcc: _obj.closeNcc, type: typeNeedResult, }, handleResponse(_obj, (res) => { return { resultStr: res.qrCode } }) ) execEsnBridge("QRCodeScan", data) } } function closeScanQRCode(object) { relayoutCustomWebview({ ...object, type: 1 }) } // 内部调用 function relayoutCustomWebview(object) { // 0是默认,1全界面展示webview let _obj = object || {} let { type = 0 } = _obj if (type === 0) { home.upesn.registerCallback("scanDataCallback", function (res, responseCallback) { _obj.success && _obj.success({ resultStr: res }) _obj.complete && _obj.complete({ code: SUCCESS_CODE, resultStr: res, }) typeof responseCallback === "function" && responseCallback({ name: "FromJS scanDataCallback" }) }) } let data = { type, success: function () { }, fail: function (err) { _obj.fail && object.fail(err) }, complete: function () { }, } execEsnBridge("relayoutCustomWebview", data) } function generateQRCode(object) { if (isNull(object.str)) { var err = "generate QRCode is null!" object.fail && object.fail(err) return } let qr = new QRious({ value: object.str, size: object.size || 100, }) let imgSrc = qr.toDataURL("image/jpeg") let res = { imgSrc, code: SUCCESS_CODE, } object.success && object.success(res) object.complete && object.complete(res) } function isNull(str) { if (!str) { return true } if (str == "") return true var regu = "^[ ]+$" var re = new RegExp(regu) return re.test(str) } function previewImage(object) { let _obj = object || {} let _index = object.urls.findIndex((item) => { return item == object.current }) let data = { images: _obj.urls && object.urls, index: _index, success: function (res) { _obj.success && object.success(res) }, fail: function (err) { _obj.fail && object.fail(err) }, complete: function (res) { _obj.complete && object.complete(res) }, } execEsnBridge("scanUrlImages", data) } function openLocalFile(object) { let _obj = object || {} let data = { filePath: _obj.filePath, fileType: _obj.fileType, success: function (res) { _obj.success && object.success(res) }, fail: function (err) { _obj.fail && object.fail(err) }, complete: function (res) { _obj.complete && object.complete(res) }, closeNcc: _obj.closeNcc, } execEsnBridge("openLocalFile", data) } function getSystemInfo(object) { let _obj = object || {} let data = { closeNcc: true, success: function (res) { _obj.success && object.success(res) }, fail: function (err) { _obj.fail && object.fail(err) }, complete: function (res) { _obj.complete && object.complete(res) }, } execEsnBridge("getSystemInfo", data) } function faceRegister(object) { let _obj = object || {} let data = { spaceId: _obj.spaceId, faceGroupId: _obj.faceGroupId, success: function (res) { _obj.success && object.success(res) }, fail: function (err) { let result = { code: err.errCode, message: err.errDescription, } _obj.fail && object.fail(result) }, complete: function (res) { _obj.complete && object.complete(res) }, } // eslint-disable-next-line no-undef YYEsnBridge.do("faceCollect", data) } function faceVerify(object) { let _obj = object || {} let data = { spaceId: _obj.spaceId, faceGroupId: _obj.faceGroupId, needSmile: _obj.needSmile, success: function (res) { _obj.success && object.success(res) }, fail: function (err) { let result = { code: err.errCode, message: err.errDescription, } _obj.fail && object.fail(result) }, complete: function (res) { _obj.complete && object.complete(res) }, } execEsnBridge("faceDetect", data) } function faceCompare(object) { let _obj = object || {} let data = { spaceId: _obj.spaceId, faceGroupId: _obj.faceGroupId, needSmile: _obj.needSmile, closeNcc: true, success: function (res) { _obj.success && object.success(res) }, fail: function (err) { let result = { code: err.errCode, message: err.errDescription, } _obj.fail && object.fail(result) }, complete: function (res) { _obj.complete && object.complete(res) }, } execEsnBridge("faceCompare", data) } function scanInvoice(object) { _getOcrImageInfo(object, "invoice") } function recognizeInvoice(object) { let ocrImage = object.image if (ocrImage.startsWith("/9j/")) { openScan(object, ocrImage, "invoice") return } if (ocrImage.startsWith("data:image/")) { ocrImage = ocrImage.split(";base64,")[1] openScan(object, ocrImage, "invoice") return } _chooseOcrImage(object, "invoice") } function scanIDCard(object) { _getOcrImageInfo(object, "id") } function recognizeIDCard(object) { let ocrImage = object.image if (ocrImage.startsWith("/9j/")) { openScan(object, ocrImage, "id") return } if (ocrImage.startsWith("data:image/")) { ocrImage = ocrImage.split(";base64,")[1] openScan(object, ocrImage, "id") return } _chooseOcrImage(object, "id") } function _recognizeIDCard(object) { let { appCode, side, type, localData, url = baseUrl } = object let path if (type === "invoice") { path = `${url}/rest/v1/api/apilink/ocr/invoice/vat/base64` } else if (type === "id") { path = `${url}/rest/v1/api/apilink/ocr/card/id/base64` } else if (type === "bank") { path = `${url}/rest/v1/api/apilink/ocr/card/bank/base64` } let params = { image: localData, apiCode: appCode, isFront: side === "back" ? false : true, } axios({ method: "post", url: path, params: null, data: params, headers: { "Content-Type": "application/json" }, }) .then((res) => { object.success && object.success(res.data) object.complete && object.complete(res) }) .catch(function (err) { object.fail && object.fail(err) object.complete && object.complete(err) }) } function scanBankCard(object) { _getOcrImageInfo(object, "bank") } function recognizeBankCard(object) { let ocrImage = object.image if (ocrImage.startsWith("/9j/")) { openScan(object, ocrImage, "bank") return } if (ocrImage.startsWith("data:image/")) { ocrImage = ocrImage.split(";base64,")[1] openScan(object, ocrImage, "bank") return } _chooseOcrImage(object, "bank") } function _getOcrImageInfo(object, type) { let sourceType = object.sourceType mtl.chooseImage({ count: 1, // 默认9 sizeType: ["original", "compressed"], sourceType: sourceType || ["album", "camera"], success: (res) => { let localIds = res.localIds _chooseOcrImage({ ...object, image: localIds[0] }, type) }, fail: object.fail, }) } function _chooseOcrImage(object, type) { mtl.getLocalImgData({ localId: object.image, success: function (res) { let localData = res.localData if (localData.startsWith("data:image/")) { localData = localData.split(";base64,")[1] } openScan(object, localData, type) }, fail: object.fail, }) } function openScan(object, localData, type) { _recognizeIDCard({ ...object, localData: localData, type: type }) } function execUpesnBridge(object) { execPluginBridge(object) } function execPluginBridge(object) { let _obj = object || {} YYEsnBridge.do(_obj.method, _obj) } function getLocalImgSrc(object) { let _obj = object || {} let localId = _obj.localId if (localId != undefined || localId != null) { let data = { imgSrc: localId, } _obj.success && object.success(data) } else { let err = { message: "not found src!", } _obj.fail && object.fail(err) } _obj.complete && object.complete("") } function isMobileNumber(phone, callback) { let flag = false let message = "" // let myreg = /^1[3|4|5|6|7|8]\d{9}$/; if (!phone) { flag = false message = "mobile number is null!" } else { flag = true } if (message) { callback && callback(message) } return flag } /** * 获取网络状态 * @param {*} object */ function getNetworkType(object = {}) { let data = handleResponse(object) execEsnBridge("getNetType", data) } /** * 友空间未提供版本测试 * 获取设备的唯一标识 * @param {*} object */ function getMac(object) { getSystemInfo( handleResponse(object, (res) => { return { macAddress: res.deviceId } }) ) } function dail(object) { let _object = object || {} let number = _object.number if ( isMobileNumber(number, (message) => { let err = { code: FAIL_CODE, message, } _object.fail && _object.fail(err) _object.complete && _object.complete(err) }) ) { let data = Object.assign( { number: number, closeNcc: true, }, handleResponse(_object) ) execEsnBridge("callPhone", data) } } function voiceToText(object) { execEsnBridge("voiceToText", handleResponse(object)) } function chooseImage(object) { let _obj = object || {} const { returnThumbnail = false } = _obj let data = Object.assign( { ..._obj, sourceType: _obj.sourceType || ["album", "camera"], count: (_obj.count && _obj.count < 10 && _obj.count > 0 && _obj.count) || 9, }, handleResponse(_obj, (res) => { let _localIds = [] for (let index in res.pictures) { let _picture = res.pictures[index] let _value if (returnThumbnail && _picture.thumbPath) { _value = _picture.thumbPath } else { _value = _picture.filePath } _localIds.push(_value) } return { localIds: _localIds } }) ) execEsnBridge("chooseImages", data) } function getLocalImgData(object) { let _obj = object || {} let imgData = _obj.localId if (home.isEmpty("localId", imgData, object)) { return } let data = Object.assign( { type: 1, level: 2, imgData: imgData, }, handleResponse(_obj, (res) => { let base64str = res.base64str if (!base64str.startsWith("data:image/")) { let imgType = "" if (imgData.lastIndexOf(".") == -1) { imgType = "jpeg" } else { imgType = imgData.substring(imgData.lastIndexOf(".") + 1, imgData.length) } base64str = "data:image/" + imgType + ";base64," + base64str } let retData = { localData: base64str, } return retData }) ) execEsnBridge("compressLocalImage", data) } function getLocation(object) { let _obj = object || {} let data = handleResponse(_obj) execEsnBridge("getLocationInfo", data) } function openLocation(object) { let _obj = object || {} let { latitude, longitude, searchRadius } = _obj // if (home.isEmpty('latitude', latitude, object) || home.isEmpty('longitude', longitude, object)) { // return; // } let data = Object.assign( { searchRadius: searchRadius, latitude: latitude, longitude: longitude, }, handleResponse(_obj) ) execEsnBridge("chooseMap", data) } function markAndNavigationDestination(object) { let _obj = object || {} const { latitude, longitude, navigation } = _obj if (home.isEmpty("latitude", latitude, object) || home.isEmpty("longitude", longitude, object)) { return } let data = Object.assign( { address: "", subAddress: "", latitude: latitude, longitude: longitude, userInfo: {}, infomation: "", navigation: navigation, }, handleResponse(_obj) ) execEsnBridge("markAndNavigationDestination", data) } function httpRequest(object) { let _obj = object || {} const url = _obj.url if (url && url.substring(0, 2) === "${") { const key = getBracketStr(url) const config = mtl.getStorageSync({ domain: "mtl", key: "mtlContext", }) let host = "" if (config.host) { host = config.host[key] } _obj.url = url.replace(`\${${key}}`, host) } let data = Object.assign( { url: _obj.url, method: _obj.method, headers: _obj.headers, params: _obj.params || _obj.data, paramsType: _obj.paramsType, closeNcc: _obj.closeNcc, }, handleResponse(_obj) ) execEsnBridge("httpRequest", data) } function getBracketStr(text) { let result = "" if (!text || text === "") return result let regex = /\{(.+?)\}/g let options = text.match(regex) if (options && options !== "") { let option = options[0] if (option && option !== "") { result = option.substring(1, option.length - 1) } } return result } function getOAuthCode(obj = {}) { let { tenantId } = obj if (home.isEmpty("tenantId", tenantId, obj)) { return } let data = handleResponse(obj) execEsnBridge("getOAuthCode", data) } function setStorage(obj = {}) { let { domain: category = DEFAULT_STORAGE_DOMAIN, key, data } = obj if (home.isEmpty("key", key, obj)) { return } if (typeof key != "string") { if (typeof key != "string") { throw new TypeError("key is not a string") } return } let _data = { category, key, data, success: function () { obj.success && obj.success() obj.complete && obj.complete({ code: SUCCESS_CODE, message: "setStorage:ok!" }) }, fail: function (error) { obj.fail && obj.fail(error) obj.complete && obj.complete(error) }, } execEsnBridge("setStorage", _data) } // function setLocalStorage(obj) { // let { domain = DEFAULT_STORAGE_DOMAIN, key, data } = obj; // let structs = localStorage.getItem(domain); // structs = (structs && JSON.parse(structs)) || {}; // if (data) { // structs[key] = data; // } else { // delete structs[key]; // } // localStorage.setItem(domain, JSON.stringify(structs)); // } function getStorage(obj = {}) { let { domain: category = DEFAULT_STORAGE_DOMAIN, key } = obj if (home.isEmpty("key", key, obj)) { return } let _data = { category, key, success: function (res) { let data = res if (data) { res = { code: 0, message: "", data: { data: data } } obj.success && obj.success(res.data) } else { res = { code: 0, message: "not found data for key: " + key } obj.fail && obj.fail(res) } obj.complete && obj.complete(res) }, fail: function (res) { obj.fail && obj.fail(res) obj.complete && obj.complete(res) }, } execEsnBridge("getStorage", _data) } function removeStorage(obj = {}) { let { domain: category = DEFAULT_STORAGE_DOMAIN, key } = obj let data = Object.assign( { category, key, }, handleResponse(obj) ) execEsnBridge("removeStorage", data) removeLocalStorage(obj) } function clearStorage(object = {}) { let closeNcc = true let { domain: category = DEFAULT_STORAGE_DOMAIN } = object let data = Object.assign( { category, closeNcc, }, handleResponse(object) ) execEsnBridge("removeCategoryStorage", data) clearLocalStorage(object) } function removeLocalStorage(obj = {}) { let { domain = DEFAULT_STORAGE_DOMAIN, key } = obj let data = null let structs = localStorage.getItem(domain) structs = (structs && JSON.parse(structs)) || {} if (data) { structs[key] = data } else { delete structs[key] } localStorage.setItem(domain, JSON.stringify(structs)) } function clearLocalStorage(obj) { const domain = (obj && obj.domain) || DEFAULT_STORAGE_DOMAIN localStorage.removeItem(domain) } function changeScreenOrientation(object = {}) { if (Object.prototype.hasOwnProperty.call(object, "orientation")) { let { orientation } = object let data = Object.assign({ orientation: !!orientation, closeNcc: true }, handleResponse(object)) execEsnBridge("changeScreenOrientation", data) } else { let error = { code: FAIL_CODE, message: "orientation is null", } object.fail && object.fail(error) object.complete && object.complete(error) } } function restoreScreenOrientation(obj = {}) { let data = { closeNcc: true, ...handleResponse(obj) } execEsnBridge("restoreScreenOrientation", data) } function uploadFile(object = {}) { let { url, filePath, header = { "content-type": "multipart/form-data" }, formData } = object if (home.isEmpty("url", url, object) || home.isEmpty("filePath", filePath, object)) { return } let data = Object.assign( { url: url, filePath: filePath, header: header, formData: formData, closeNcc: object.closeNcc, }, handleResponse(object) ) execEsnBridge("uploadFile", data) } function downloadFile(object = {}) { let { url, fileType, header, formBody, jsonBody, autoPreview, fileName } = object if (home.isEmpty("url", url, object) || home.isEmpty("fileType", fileType, object)) { return } let data = { url: url, fileType: fileType, header: header, formBody: formBody, jsonBody: jsonBody, autoPreview: autoPreview, fileName: fileName, success: function (res) { object.success && object.success(res) }, fail: function (err) { object.fail && object.fail(err) }, complete: function (res) { object.complete && object.complete(res) }, closeNcc: object.closeNcc, } execEsnBridge("downloadFile", data) } function isWebviewCanGoBack(object = {}) { let data = { closeNcc: true, ...handleResponse(object) } execEsnBridge("isWebviewCanGoBack", data) } function onWebviewGoBack(object = {}) { let data = { closeNcc: true, ...handleResponse(object) } execEsnBridge("onWebviewGoBack", data) } function doShare(object = {}) { let { imgUrl, link } = object let obj = { ...object } delete object.imgUrl delete object.link obj.imageUrl = imgUrl obj.pageUrl = link home.upesn.shareWithType({ ...obj }) } function openShare(object = {}) { let { imgUrl, link } = object let obj = { ...object } delete object.imgUrl delete object.link obj.imageUrl = imgUrl obj.pageUrl = link home.upesn.showShareMenu({ ...obj }) } function backIntercept(object) { let _obj = object || {} let callback = "backInterceptCallback" home.upesn.registerCallback(callback, function (res, responseCallback) { _obj.callback && _obj.callback(res) _obj.complete && _obj.complete({ code: SUCCESS_CODE, }) }) let data = { callback: callback, success: function (res) { _obj.success && object.success(res) }, fail: function (err) { _obj.fail && object.fail(err) }, complete: function (res) { _obj.complete && object.complete(res) }, } execEsnBridge("backIntercept", data) } function getAuthorizationStatus(object) { let closeNcc = true let { type = 0 } = object let data = Object.assign( { type, closeNcc, }, handleResponse(object) ) execEsnBridge("getAuthorizationStatus", data) } function onNetworkStatusChange(object) { let _obj = object || {} let callback = "onNetworkStatusChange" home.upesn.registerCommonCallback(callback, function (res, responseCallback) { _obj.callback && _obj.callback(res) _obj.complete && _obj.complete({ code: SUCCESS_CODE, }) }) let data = { callback: callback, closeNcc: true, success: function (res) { _obj.success && object.success(res) }, fail: function (err) { _obj.fail && object.fail(err) }, complete: function (res) { _obj.complete && object.complete(res) }, } execEsnBridge("onNetworkStatusChange", data) } function watchShake(object) { let _obj = object || {} let callback = "watchShake" home.upesn.registerCommonCallback(callback, function (res, responseCallback) { _obj.callback && _obj.callback(res) _obj.complete && _obj.complete({ code: SUCCESS_CODE, }) }) let data = { callback: callback, closeNcc: true, success: function (res) { _obj.success && object.success(res) }, fail: function (err) { _obj.fail && object.fail(err) }, complete: function (res) { _obj.complete && object.complete(res) }, } execEsnBridge("watchShake", data) } function screenShot(object) { let { type = 0, resultType = 0 } = object let data = Object.assign( { type, resultType, }, handleResponse(object) ) execEsnBridge("screenShot", data) } function onUserCaptureScreen(object) { let _obj = object || {} let callback = "onUserCaptureScreen" home.upesn.registerCommonCallback(callback, function (res, responseCallback) { _obj.callback && _obj.callback(res) _obj.complete && _obj.complete({ code: SUCCESS_CODE, }) }) let data = { callback: callback, closeNcc: true, success: function (res) { _obj.success && object.success(res) }, fail: function (err) { _obj.fail && object.fail(err) }, complete: function (res) { _obj.complete && object.complete(res) }, } execEsnBridge("onUserCaptureScreen", data) } function vibrateOnce(object) { let closeNcc = true let data = Object.assign( { closeNcc, }, handleResponse(object) ) execEsnBridge("vibrateOnce", data) } function saveImageToPhotoAlbum(object) { let closeNcc = true const { url } = object let data = Object.assign( { url, closeNcc, }, handleResponse(object) ) execEsnBridge("saveImageToPhotoAlbum", data) } function saveImageToLocal(object) { let closeNcc = true const { url } = object let data = Object.assign( { url, closeNcc, }, handleResponse(object) ) execEsnBridge("saveImageToLocal", data) } function chooseVideo(object) { let closeNcc = true const { sourceType, maxDuration } = object let data = Object.assign( { sourceType, maxDuration, closeNcc, }, handleResponse(object) ) execEsnBridge("chooseVideo", data) } function chooseVideoToServer(object) { let closeNcc = true const { sourceType, maxDuration } = object let data = Object.assign( { sourceType, maxDuration, closeNcc, }, handleResponse(object) ) execEsnBridge("chooseVideoToServer", data) } function chooseCity(object) { let closeNcc = true const { province = "北京市" } = object let data = Object.assign( { province, closeNcc, }, handleResponse(object) ) execEsnBridge("chooseCity", data) } function dateTimePicker(object) { let closeNcc = true const { format = "yyyy-MM-dd", currentDate } = object let data = Object.assign( { format, currentDate, closeNcc, }, handleResponse(object) ) execEsnBridge("dateTimePicker", data) } function encryptData(object) { const { data } = object let params = Object.assign( { data, }, handleResponse(object) ) execEsnBridge("encryptData", params) } function decryptData(object) { const { data } = object let params = Object.assign( { data, }, handleResponse(object) ) execEsnBridge("decryptData", params) } function recordAudio(object) { let closeNcc = true let data = Object.assign( { closeNcc, }, handleResponse(object) ) execEsnBridge("recordAudio", data) } // backToHome 应用到后台 function backToHome(obj = {}) { let data = handleResponse(obj) execEsnBridge("backToHome", data) } // 获取原生导航信息 function getNavBarInfo(obj = {}) { let data = { success: function (res) { const { height } = res obj.success && obj.success({ ...res, isNativeNavBar: height > 0 ? true : false }) }, fail: function (err) { obj.fail && obj.fail(err) }, complete: function (res) { obj.complete && obj.complete(res) }, } execEsnBridge("getNavBarInfo", data) } //打开新页面 function navigateTo(obj = {}) { execNavi("navigateTo", obj) } //关闭当前页面 function navigateBack(obj = {}) { let data = Object.assign( { closeNcc: true, ...obj, }, handleResponse(obj) ) execEsnBridge("navigateBack", data) } //打开新页面并关闭当前页面 function redirectTo(obj = {}) { execNavi("redirectTo", obj) } //打开新页面,关闭前面所有页面 function reLaunch(obj = {}) { execNavi("reLaunch", obj) } //配置webview function configureWebView(obj = {}) { execEsnBridge("configureWebView", obj) } /** * 处理导航打开页面参数 */ function execNavi(method, obj) { const { url } = obj if (home.isEmpty("url", url, obj)) { return } let data = Object.assign({ closeNcc: true, ...obj }, handleResponse(obj)) execEsnBridge(method, data) } function getUserInfo(obj = {}) { home.upesn.getUserYHTInfo({ success: function (res) { obj.success && obj.success({ ...res, userId: res.yht_userid }) obj.complete && obj.complete({ data: res, code: SUCCESS_CODE }) }, fail: function (err) { obj.fail && obj.fail(err) obj.complete && obj.complete(err) }, }) } // 字体 function getUserFontSize(obj = {}) { let closeNcc = true let data = Object.assign({ closeNcc }, handleResponse(obj)) execEsnBridge("getUserFontSize", data) } function setUserFontSize(obj = {}) { const { level = 1 } = obj let data = Object.assign( { level, }, handleResponse(obj) ) execEsnBridge("setUserFontSize", data) } function releaseBle(obj = {}) { let data = handleResponse(obj) execEsnBridge("release", data) } function openScheduleDetail(obj = {}) { const { memberId } = obj let data = Object.assign( { ...obj, member_id: memberId, }, handleResponse(obj) ) execEsnBridge("openScheduleDetail", data) } function getClipboardData(obj = {}) { let data = handleResponse(obj) execEsnBridge("copyTextPasteboard", data) } function chooseFileFromLibrary(obj = {}) { let data = handleResponse(obj) execEsnBridge("chooseFileFromLibrary", data) } function registerLifeCycle(obj = {}) { let onShowStr = "onShowCallback" let onHideStr = "onHideCallback" home.upesn.registerCommonCallback(onShowStr, function (res, responseCallback) { obj.onShow && obj.onShow(res) obj.complete && obj.complete({ code: SUCCESS_CODE, }) }) home.upesn.registerCommonCallback(onHideStr, function (res, responseCallback) { obj.onHide && obj.onHide(res) obj.complete && obj.complete({ code: SUCCESS_CODE, }) }) let data = Object.assign( { onHide: onHideStr, onShow: onShowStr, }, handleResponse(obj) ) execEsnBridge("registerLifeCycle", data) } function onAppearanceModeChange(obj = {}) { let callback = "appearanceModeChangeCallback" home.upesn.registerCommonCallback(callback, function (res, responseCallback) { const modeNumber = res.mode obj.callback && obj.callback({ ...res, mode: modeNumber === 0 ? "light" : "dark" }) obj.complete && obj.complete({ code: SUCCESS_CODE, }) }) let data = { callback: callback, success: function (res) { obj.success && obj.success(res) }, fail: function (err) { obj.fail && obj.fail(err) }, complete: function (res) { obj.complete && obj.complete(res) }, } execEsnBridge("onAppearanceModeChange", data) } /** * 统一处理API的回调 * @param {*} object * @param {*} callback */ function handleResponse(object, callback) { return home.handleResponse(object, callback) } function execEsnBridge(method, source) { home.execEsnBridge(method, source) } let exports = { upesn: home.upesn, startRecord, stopRecord, onVoiceRecordEnd, playVoice, pauseVoice, stopVoice, onVoicePlayEnd, previewImage, openLocalFile, getSystemInfo, faceRegister, faceVerify, faceCompare, scanInvoice, recognizeInvoice, scanIDCard, recognizeIDCard, scanBankCard, recognizeBankCard, getLocalImgSrc, getNetworkType, getMac, dail, voiceToText, chooseImage, getLocalImgData, getLocation, openLocation, markAndNavigationDestination, scanQRCode, closeScanQRCode, generateQRCode, request: httpRequest, getOAuthCode, setStorage, getStorage, removeStorage, clearStorage, changeScreenOrientation, restoreScreenOrientation, uploadFile, downloadFile, isWebviewCanGoBack, onWebviewGoBack, stopSpeechSyn, startSpeechSyn, translateVoice, doShare, openShare, backIntercept, execUpesnBridge, execPluginBridge, getAuthorizationStatus, onNetworkStatusChange, watchShake, screenShot, onUserCaptureScreen, vibrateOnce, saveImageToPhotoAlbum, saveImageToLocal, chooseVideo, chooseVideoToServer, chooseCity, dateTimePicker, encryptData, decryptData, recordAudio, backToHome, getNavBarInfo, navigateTo, navigateBack, redirectTo, reLaunch, getUserInfo, getUserFontSize, setUserFontSize, configureWebView, releaseBle, openScheduleDetail, getClipboardData, chooseFileFromLibrary, registerLifeCycle, onAppearanceModeChange, uploadImageBackBase64: home.upesn.uploadImageBackBase64, chooseFile: home.upesn.chooseFile, chooseLocalFileToServer: home.upesn.chooseLocalFileToServer, chooseImageToServer: home.upesn.chooseImageToServer, isShowTabbar: home.upesn.isShowTabbar, openNewWebview: home.upesn.openNewWebview, closeCurrentWebview: home.upesn.closeCurrentWebview, continuousLocationStart: home.upesn.startContinuousLocation, continuousLocationGet: home.upesn.getContinuousLocation, continuousLocationStop: home.upesn.stopContinuousLocation, loadImageFromLocal: home.upesn.loadImageFromLocal, settingNavBar: home.upesn.settingNavBar, showToast: home.upesn.showToast, showAlert: home.upesn.showAlert, customScanQRCode: home.upesn.customScanQRCode, executeDBOperate: home.upesn.executeDBOperate, chooseLocalFiles: home.upesn.chooseLocalFiles, registerCommonCallback: home.upesn.registerCommonCallback, mdfCustomScanQRCode: home.upesn.mdfCustomScanQRCode, mdfChangeCustomScanMode: home.upesn.mdfChangeCustomScanMode, //改变扫码模式 单次/连续 mdfChangeFlashLightStatus: home.upesn.mdfChangeFlashLightStatus, blueToothConnectState: home.upesn.blueToothConnectState, blueToothConnect: home.upesn.blueToothConnect, blueToothPrint: home.upesn.blueToothPrint, blueToothDisConnect: home.upesn.blueToothDisConnect, blueToothScan: home.upesn.blueToothScan, blueToothStopScan: home.upesn.blueToothStopScan, rfidConnect: home.upesn.rfidConnect, rfidDisconnect: home.upesn.rfidDisconnect, setAppletCapsuleStyle: home.upesn.setAppletCapsuleStyle, getAppletCapsuleParams: home.upesn.getAppletCapsuleParams, setStatusBarStyle: home.upesn.setStatusBarStyle, openChatWindow: home.upesn.openChatByUserId, chooseContacts: home.upesn.chooseContacts, chooseDocFiles: home.upesn.chooseDocFiles, previewDoc: home.upesn.previewDoc, sendTodoReceipt: home.upesn.sendTodoReceipt, getAppInfomation: home.upesn.getAppInfomation, compressLocalImage: home.upesn.compressLocalImage, getBlueToothState: home.upesn.getBlueToothState, verifyLoginPassword: home.upesn.verifyLoginPassword, verifyGesturePassword: home.upesn.verifyGesturePassword, setGesturePassword: home.upesn.setGesturePassword, getToken: home.upesn.getToken, viewScheduleList: home.upesn.viewScheduleList, viewScheduleDetail: home.upesn.viewScheduleDetail, createNewSchedule: home.upesn.createNewSchedule, createFeedComponent: home.upesn.createFeedComponent, chooseDepartment: home.upesn.chooseDepartment, sendMiniMail: home.upesn.sendMiniMail, openLibraryFiles: home.upesn.openLibraryFiles, chooseLibraryFiles: home.upesn.chooseLibraryFiles, viewUserInfo: home.upesn.viewUserInfo, chooseInsideGroup: home.upesn.chooseInsideGroup, chooseAllContacts: home.upesn.chooseAllContacts, sendImageMessages: home.upesn.sendImageMessages, openAppWithParams: home.upesn.openAppWithParams, getAppData: home.upesn.getAppData, wpsPreview: home.upesn.wpsPreview, getUserYHTInfo: home.upesn.getUserYHTInfo, } unsupportMethods.forEach((pop) => { exports[pop] = unsupportMethod }) supportMethods.forEach((pop) => { exports[pop] = home.successCallBack }) execBridgeMethods.forEach((pop) => { if (!exports[pop]) { exports[pop] = function (param) { let data = Object.assign( { ...param, }, handleResponse(param) ) execEsnBridge(pop, data) } } }) export default exports