UNPKG

mtl-js-sdk

Version:

ynf-fw-mtl-api

233 lines (219 loc) 6.3 kB
"use strict"; function Plugin(options, exports = {}) { const { platform } = options || { platform: window.mtl.platform }; const upesnVersion = window.mtl.upesnVersion || 0 function supportMethod(object = {}) { object.success && object.success({}); object.complete && object.complete({}); } let userAgent = window.navigator.userAgent.toLowerCase(); let isAndroid = (userAgent.indexOf("android") !== -1) ? true : false; //打印机 // 搜索可用的映美打印设备 function searchDevices(obj={}) { const { time = 10, type = "all" } = obj; if (platform === 'upesn' && isAndroid) { const callbaseName = 'ymSearchDevices'; mtl.registerCommonCallback(callbaseName, function(res,responseCallback) { obj.callback && obj.callback(res); obj.complete && obj.complete({data:res ,code: 200}); } ) let data = Object.assign({ time, type, callback: callbaseName, success: obj.success, fail: obj.fail }); execEsnBridge("searchDevices", data); } else if (platform === 'APIAndroid') { execApiBridge("searchDevices", obj); } else { supportMethod(obj) } } // 是否支持蓝牙BLE function isSupportedBLE(obj={}) { if (platform === 'upesn' && isAndroid) { execEsnBridge("isSupportedBLE", obj); } else if (platform === 'APIAndroid') { execApiBridge("isSupportedBLE", obj); } else { supportMethod(obj) } } // 蓝牙是否开启 function isBluetoothOpen(obj={}) { if (platform === 'upesn' && isAndroid) { execEsnBridge("isBluetoothOpen", obj); } else if (platform === 'APIAndroid') { execApiBridge("isBluetoothOpen", obj); } else { supportMethod(obj) } } // 获取已连接的设备信息 function getConnectedDevice(obj={}) { if (platform === 'upesn' && isAndroid) { execEsnBridge("getConnectedDevice", obj); } else if (platform === 'APIAndroid') { execApiBridge("getConnectedDevice", obj); } else { supportMethod(obj) } } // 打印图片 function printPicture(obj={}) { if (platform === 'upesn' && isAndroid) { execEsnBridge("printPicture", obj); } else if (platform === 'APIAndroid') { execApiBridge("printPicture", obj); } else { supportMethod(obj) } } // 打印html function printHTML(obj={}) { if (platform === 'upesn' && isAndroid) { execEsnBridge("printHTML", obj); } else if (platform === 'APIAndroid') { execApiBridge("printHTML", obj); } else { supportMethod(obj) } } // 打开系统的文件选择器,选择一个文件打印 function printFile(obj={}) { if (platform === 'upesn' && isAndroid) { execEsnBridge("printFile", obj); } else if (platform === 'APIAndroid') { execApiBridge("printFile", obj); } else { supportMethod(obj) } } // 停止搜索 function stopSearch(obj={}) { if (platform === 'upesn' && isAndroid) { execEsnBridge("stopSearch", obj); } else if (platform === 'APIAndroid') { execApiBridge("stopSearch", obj); } else { supportMethod(obj) } } // 关闭链接 function closeConnect(obj={}) { if (platform === 'upesn' && isAndroid) { execEsnBridge("closeConnect", obj); } else if (platform === 'APIAndroid') { execApiBridge("closeConnect", obj); } else { supportMethod(obj) } } // 释放资源 function release(obj={}) { if (platform === 'upesn' && isAndroid) { execEsnBridge("release", obj); } else if (platform === 'APIAndroid') { execApiBridge("release", obj); } else { supportMethod(obj) } } // upesn内部方法 function execEsnBridge(method, source) { // api内部方法调用api.xxx方法(适配友空间公有云) if (upesnVersion > 0) { let newMethods = method if (method === 'release') { newMethods = 'releaseYmPrinter' } else if (method === 'isBluetoothOpen') { newMethods = 'getBlueToothState' } mtl.execPluginBridge({ ...source, method: newMethods, requireName: null }) return } let data = { ...source, success: function (res) { let resObj = (res && res === 'string') ? JSON.parse(res) : res; source.success && source.success(resObj) source.complete && source.complete({ code: 200, data: resObj, }) }, fail: function (err) { const { errCode = 1, errDescription } = err; let errMes; try { errMes = JSON.parse(errDescription); } catch (error) { errMes = { message : errDescription }; } let result = { code: errCode, message: errMes.message }; source.fail && source.fail(result); source.complete && source.complete(result) } }; console.log("exec YYEsnBridge.do method :", method); console.log("data: ", data); YYEsnBridge.do(method, data); } // api内部插件方法 function execApiBridge(method, object) { if (object === void 0) { object = {}; } var obj = window.api.require("yingmeiPrinter"); if (!obj) { invokeFail(object, { msg: "module yingmeiPrinter not added", }); return; } obj[method](object, function (ret, err) { console.log("yingmeiPrinter--------------", method, ret, err); if (ret) { invokeSuccess(object, ret); } else { invokeFail(object, err); } }); } function invokeFail(param, err) { if (!param) return; if (err && !err.message) { err.message = err.msg || err.errMsg; } typeof param.fail === "function" && param.fail(err); } function invokeSuccess(param, ret) { if (!param) return; typeof param.success === "function" && param.success(ret); } let apiMethods = { searchDevices, isSupportedBLE, isBluetoothOpen, getConnectedDevice, printHTML, printPicture, printFile, stopSearch, closeConnect, release }; const methods = apiMethods; exports.module = methods; exports.symbolPath = "ymPrinter"; return exports; } export default Plugin;