UNPKG

logwire-wms-ui-test

Version:

运匠科技wms-PDA基础组件库

737 lines (671 loc) 22.2 kB
/* * app壳子提供的能力 * @author 蔡礼标 * @date 2022-01-19 * */ import {Language} from "./Language"; function handleAppExtendResult(result, error, resolve, reject) { console.log("----handleAppExtendResult------"); if (error) { reject(error); return; } console.log(result); const r = JSON.parse(result); if (!r) { return reject("result parse error"); } else if (r.error === true) { return reject(false); } else { return resolve(r.data); } } export const AppPower = { //----------------- 子web控制 /** * 创建 子web,返回 key * @param url * @param title * @returns {Promise<unknown>} */ childWebAdd: (url, title = null) => { let androidApp = window.androidApp; if (androidApp && typeof (androidApp.addChildWeb) == "function") { return new Promise(function (resolve, reject) { androidApp.addChildWeb(JSON.stringify({url: url, title: title}), function (result, error) { handleAppExtendResult(result, error, resolve, reject); }); }); } return new Promise(function (resolve, reject) { reject(false); }); }, /** * 隐藏 已有子web(没有 不处理) * @returns {Promise<unknown>} */ childWebHide: () => { let androidApp = window.androidApp; if (androidApp && typeof (androidApp.hideChildWeb) == "function") { return new Promise(function (resolve, reject) { androidApp.hideChildWeb(null, function (result, error) { handleAppExtendResult(result, error, resolve, reject); }); }); } return new Promise(function (resolve, reject) { reject(false); }); }, /** * 隐藏 已有子web(没有 不处理),同时 显示 新的子web * @param key * @returns {Promise<unknown>} */ childWebSwitch: (key) => { let androidApp = window.androidApp; if (androidApp && typeof (androidApp.switchChildWeb) == "function") { return new Promise(function (resolve, reject) { androidApp.switchChildWeb(key, function (result, error) { handleAppExtendResult(result, error, resolve, reject); }); }); } return new Promise(function (resolve, reject) { reject(false); }); }, /** * 移除 子web,正在显示,自动隐藏+移除 * @param key * @returns {Promise<unknown>} */ childWebRemove: (key) => { let androidApp = window.androidApp; if (androidApp && typeof (androidApp.removeChildWeb) == "function") { return new Promise(function (resolve, reject) { androidApp.removeChildWeb(key, function (result, error) { handleAppExtendResult(result, error, resolve, reject); }); }); } return new Promise(function (resolve, reject) { reject(false); }); }, /** * 移除 全部子web,并 回到主页 * @param needBack 清理后是否需要回到主页 * @returns {Promise<unknown>} */ childWebClearAll: (needBack = false) => { let androidApp = window.androidApp; if (androidApp && typeof (androidApp.clearAllChildWeb) == "function") { return new Promise(function (resolve, reject) { androidApp.clearAllChildWeb(needBack.toString(), function (result, error) { handleAppExtendResult(result, error, resolve, reject); }); }); } return new Promise(function (resolve, reject) { reject(false); }); }, /** * 重建 全部子web,重建后自动显示当前再展示的(没有 则不显示) * @param delayShowTime 延迟显示时间 默认 10秒, 0 不延迟显示 * @returns {Promise<unknown>} */ childWebRebuild: (delayShowTime = 10) => { let androidApp = window.androidApp; if (androidApp && typeof (androidApp.rebuildAllChildWeb) == "function") { return new Promise(function (resolve, reject) { androidApp.rebuildAllChildWeb(delayShowTime.toString(), function (result, error) { handleAppExtendResult(result, error, resolve, reject); }); }); } return new Promise(function (resolve, reject) { reject(false); }); }, /** * 是否支持 多web显示 * @returns {Promise<boolean>} */ childWebSupport: () => { let androidApp = window.androidApp; if (androidApp && typeof (androidApp.supportChildWeb) == "function") { return new Promise(function (resolve, reject) { androidApp.supportChildWeb(null, function (result, error) { handleAppExtendResult(result, error, resolve, reject); }); }); } return new Promise(function (resolve, reject) { reject(false); }); }, /** * dm 大屏轮播 * @param token TOKEN * @param uid 设备UID * @param xsrf X-XSRF-TOKEN * @param data 列表 item = "key":"value" * @returns {Promise<boolean>} */ dmDevicePlay: (token, uid, xsrf, data = null) => { let androidApp = window.androidApp; if (androidApp && typeof (androidApp.dmDevicePlay) == "function") { return new Promise(function (resolve, reject) { // var test = { // token:"1111111", // uid:"1111111", // xsrf:"1111111", // data:[ // {"xxx":"yyyy"}, // ... // ] // } androidApp.dmDevicePlay(JSON.stringify({token: token, uid: uid, xsrf: xsrf, data: data}), function (result, error) { handleAppExtendResult(result, error, resolve, reject); }); }); } return new Promise(function (resolve, reject) { reject(false); }); }, /** * 全屏显示 * full = true|false */ fullScreen: (full) => { let androidApp = window.androidApp; if (androidApp && typeof (androidApp.fullScreen) == "function") { return new Promise(function (resolve, reject) { androidApp.fullScreen(full.toString(), function (result, error) { handleAppExtendResult(result, error, resolve, reject); }); }); } return new Promise(function (resolve) { resolve(""); }); }, /** * 获取设备 屏幕尺寸 * 返回 "宽,高" */ deviceScreen: () => { let androidApp = window.androidApp; if (androidApp && typeof (androidApp.deviceScreen) == "function") { return new Promise(function (resolve, reject) { androidApp.deviceScreen(null, function (result, error) { handleAppExtendResult(result, error, resolve, reject); }); }); } return new Promise(function (resolve) { resolve(""); }); }, /** * 生成 二维码 图片 */ createQRCode: (content) => { let androidApp = window.androidApp; if (androidApp && typeof (androidApp.createQRCode) == "function") { return new Promise(function (resolve, reject) { androidApp.createQRCode(JSON.stringify({content: content, size: 100}), function (result, error) { handleAppExtendResult(result, error, resolve, reject); }); }); } return new Promise(function (resolve) { resolve(""); }); }, /** * 设置 pda 退出路由 * 全匹配(忽略参数) */ hideSoftInput: (view) => { let androidApp = window.androidApp; if (androidApp && typeof (androidApp.hideSoftInput) == "function") { return new Promise(function (resolve, reject) { setTimeout(() => { androidApp.hideSoftInput(null, function (result, error) { handleAppExtendResult(result, error, resolve, reject); }); }, 50); }); } return new Promise(function (resolve) { if (view.notKeyboard) { view.readonlyInp = true; setTimeout(() => { view.readonlyInp = false; }, 200); } resolve(true); }); }, /** * 设置 pda 退出路由 * 全匹配(忽略参数) */ setExitRoute: (arr = []) => { let androidApp = window.androidApp; if (androidApp && typeof (androidApp.exitBackPage) == "function") { return new Promise(function (resolve, reject) { androidApp.exitBackPage(JSON.stringify({type: "suffix", list: arr}), function (result, error) { handleAppExtendResult(result, error, resolve, reject); }); }); } return new Promise(function (resolve, reject) { reject(false); }); }, /** * app 蓝牙打印 * @param template string 模板 * @param data 打印数据--"[{},{}]" * @returns true|false */ bluePrint: (template, data) => { let androidApp = window.androidApp; if (androidApp && typeof (androidApp.bluePrint) == "function") { return new Promise(function (resolve, reject) { androidApp.bluePrint(JSON.stringify({"template": template, "data": data}), function (result, error) { handleAppExtendResult(result, error, resolve, reject); }); }); } return new Promise(function (resolve, reject) { let app = window.App_bluePrint; if (app && typeof (app.bluePrint) == "function") { if (true === app.bluePrint(JSON.stringify({"template": template, "data": data}))) { resolve(true); return; } } reject(false); }); }, /** * 预先连接蓝牙打印 提升打印连接速度 * 可多次调用 */ bluePrintOpen: () => { let androidApp = window.androidApp; if (androidApp && typeof (androidApp.blueOpen) == "function") { return new Promise(function (resolve, reject) { androidApp.blueOpen(null, function (result, error) { handleAppExtendResult(result, error, resolve, reject); }); }); } return new Promise(function (resolve, reject) { let app = window.App_bluePrint; if (app && typeof (app.bluePrintOpen) == "function") { if (true === app.bluePrintOpen()) { resolve(true); return; } } reject(false); }); }, /** * 关闭蓝牙打印连接 * 可多次调用 * @returns {boolean} */ bluePrintClose: () => { let androidApp = window.androidApp; if (androidApp && typeof (androidApp.blueClose) == "function") { return new Promise(function (resolve, reject) { androidApp.blueClose(null, function (result, error) { handleAppExtendResult(result, error, resolve, reject); }); }); } return new Promise(function (resolve, reject) { let app = window.App_bluePrint; if (app && typeof (app.bluePrintClose) == "function") { if (true === app.bluePrintClose()) { resolve(true); return; } } reject(false); }); }, /** * 测试打印 * @param arr * @returns {Promise<unknown>} */ newBluePrintTest: () => { let androidApp = window.androidApp; if (androidApp && typeof (androidApp.newBluePrint) == "function") { // [ // { // "language":"xxx",// 打印指令 CPCL>ECS_POS>BYTE>ZPL,优先使用 CPCL,未实现 ZPL // "formatType":"xxx",// 打印类型 IMAGE>APP_CMD>INSTRUCTION>BYTE,优先使用 IMAGE ,未实现APP_CMD // "width":100,// 打印宽度 // "height":100,// 打印高度 // "skipPage":false,// 结束后是否跳页 cpcl 支持 // "customStartCmd":null,// 自定义打印开始指令 // "customEndCmd":null,// 自定义打印结束指令 ,"29,12" 芝柯 定制 跳页指令 // "data":[ // { // "data":"xxxxxxxxx",// 打印数据 IMAGE = base64String;gzip、zip压缩,必须使用 ISO_8859_1 格式 // "count":1,// 打印份数 // } // ] // } // ] var data = [ { language:"CPCL", formatType:"IMAGE", width:440, height:280, skipPage:true, data:[ { data:"iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAIAAACRXR/mAAAAAXNSR0IArs4c6QAAAANzQklUCAgI2+FP4AAAAdlJREFUWIXtmD2SozAQRj/2LMKBixOIE4hJHM0RUIgPsOFmm4gQsk0dORnpBHACagKku2gCzJ8HY2lnq3YCvUxU0/0kNR0QWWvx/fjxvwW2CVo+BC0fgpYPQcuHoOVD0PIhaPkQtHwIWj4ELR+Clg+7WqZM09IAgOLRGq7GIMWjIUjxW/BWnogrxZevfUGLFD+Tc3wrRoW2A1rQudgczU5z8BasshLZToCrFsAqLXD+PRafTmYnON45EVbZpiBf1DJlyhUpGlsxh0wAQIo/Wlfs/srjc4s622iAv9LCIeky53a4iRECsMqu0IIil9PSYZd7WoRVjRZd5iJmyvTxUZBD8jyDsxYAfLrD5LDZG6RorLUyXzsOpGUPdL1Lq7tqQfH5AEzfOSUdHKera4qXI/VwctBS13pe6PeWHmO/AgAAckjad/3vtEzfIT+x4cvW1xrt5c08/ThVeT9F4iOtrwp4NmPctMzbpc1PDABMmWZ1LvXrZRyZ23bdrzTKLuPqNha4fnkdvEzfPWrPFXYPmQ/DXeaYx7wWdDHyp5hp/FMhhs5fRo1vaUGXTx+xqzXkkPm6wKgiBb2rLvPleNraJD6l2iay4ZeuO0HLh6DlQ9DyIWj5ELR8+KZaH0FztVrCtA9NAAAAAElFTkSuQmCC", count:1 } ] } ] return new Promise(function (resolve, reject) { androidApp.newBluePrint(JSON.stringify({"data": data}), function (result, error) { handleAppExtendResult(result, error, resolve, reject); }); }); } return new Promise(function (resolve, reject) { reject(false); }); }, /** * app 蓝牙打印 * @returns true|false * @param arr */ newBluePrint: (arr = []) => { let androidApp = window.androidApp; if (androidApp && typeof (androidApp.newBluePrint) == "function") { // [ // { // "language":"xxx",// 打印指令 CPCL>ECS_POS>BYTE>ZPL,优先使用 CPCL,未实现 ZPL // "formatType":"xxx",// 打印类型 IMAGE>APP_CMD>INSTRUCTION>BYTE,优先使用 IMAGE ,未实现APP_CMD // "width":100,// 打印宽度 // "height":100,// 打印高度 // "skipPage":false,// 结束后是否跳页 cpcl 支持 // "customStartCmd":null,// 自定义打印开始指令 // "customEndCmd":null,// 自定义打印结束指令 ,"29,12" 芝柯 定制 跳页指令 // "data":[ // { // "data":"xxxxxxxxx",// 打印数据 IMAGE = base64String // "count":1,// 打印份数 // } // ] // } // ] return new Promise(function (resolve, reject) { androidApp.newBluePrint(JSON.stringify({"data": arr}), function (result, error) { handleAppExtendResult(result, error, resolve, reject); }); }); } return new Promise(function (resolve, reject) { reject(false); }); }, /** * 可多次调用,支持长连接 */ newBluePrintOpen: (keepAlive = true) => { let androidApp = window.androidApp; if (androidApp && typeof (androidApp.newBlueOpen) == "function") { return new Promise(function (resolve, reject) { androidApp.newBlueOpen(JSON.stringify({"keepAlive": keepAlive}), function (result, error) { handleAppExtendResult(result, error, resolve, reject); }); }); } return new Promise(function (resolve, reject) { reject(false); }); }, /** * 关闭蓝牙打印连接 * 可多次调用 * @returns {boolean} */ newBluePrintClose: () => { let androidApp = window.androidApp; if (androidApp && typeof (androidApp.newBlueClose) == "function") { return new Promise(function (resolve, reject) { androidApp.newBlueClose(null, function (result, error) { handleAppExtendResult(result, error, resolve, reject); }); }); } return new Promise(function (resolve, reject) { reject(false); }); }, /** * 一次震动 * @param time * @returns {Promise} */ shortVibrate: (time) => { let androidApp = window.androidApp; if (androidApp && typeof (androidApp.vibrateShort) == "function") { return new Promise(function (resolve, reject) { androidApp.vibrateShort(time.toString(), function (result, error) { handleAppExtendResult(result, error, resolve, reject); }); }); } return new Promise(function (resolve) { let app = window.App_vibrate; if (app && typeof (app.shortVibrate) == "function") { if (true === app.shortVibrate(time)) { resolve(true); // return; } } // reject(false) }); }, /** * 获取UUID * 示例 shortVibrate(500) * @returns uuid */ appUUID: () => { let androidApp = window.androidApp; if (androidApp && typeof (androidApp.appUUID) == "function") { return new Promise(function (resolve, reject) { androidApp.appUUID(null, function (result, error) { handleAppExtendResult(result, error, resolve, reject); }); }); } return new Promise(function (resolve) { let app = window.App_uuid; if (app && typeof (app.getUUID) == "function") { const uuid = app.getUUID(); if (uuid) { resolve(uuid); return; } } resolve(null); }); }, /** * 波动震动 * list:0+n*2=停止时间,1+n*2=震动时间 * 示例 longVibrate([50,150,100,150,100,1000]) * @param list * @returns {boolean} */ longVibrate: (list) => { let androidApp = window.androidApp; if (androidApp && typeof (androidApp.vibrateWave) == "function") { return new Promise(function (resolve, reject) { androidApp.vibrateWave(JSON.stringify({"list": list, "repeat": -1}), function (result, error) { handleAppExtendResult(result, error, resolve, reject); }); }); } return new Promise(function (resolve, reject) { let app = window.App_vibrate; if (app && typeof (app.waveVibrate) == "function") { if (true === app.waveVibrate(JSON.stringify({"list": list, "repeat": -1}))) { resolve(true); return; } } reject(false); }); }, /** * 语音提示 * 示例 speak("1234567") */ speak: (data) => { // 如果设置的语言是中文 var toMore = false; if (Language.getKey().includes("zh")) { // 大于30个字符就不朗读 toMore = data.length > 30; } else { toMore = data.split(" ").length > 30; } if (toMore === true) { return new Promise(function (resolve, reject) { reject(`msg too long : ${data}`); }); } let androidApp = window.androidApp; if (androidApp && typeof (androidApp.appTTS) == "function") { return new Promise(function (resolve, reject) { androidApp.appTTS(data, function (result, error) { handleAppExtendResult(result, error, resolve, reject); }); }); } let app = window.App_tts; if (app && typeof (app.speak) == "function") { app.speak(data); return true; } return false; }, // 扫描 scan: () => { let androidApp = window.androidApp; if (androidApp && typeof (androidApp.appScan) == "function") { return new Promise(function (resolve, reject) { androidApp.appScan(null, function (result, error) { handleAppExtendResult(result, error, resolve, reject); }); }); } return new Promise(function (resolve) { let app = window.App_scan; if (app && typeof (app.scan) == "function") { resolve(app.scan()); return; } resolve(null); }); }, // 获取图片 多张 默认最多9 getImages: (maxNum) => { let app = window.App_gallery; if (app && typeof (app.images) == "function") { let images = app.images(maxNum); if (images) return JSON.parse(images); } return null; }, /** * 获取配置信息:环境名 * @returns {string} */ appHostName: () => { let androidApp = window.androidApp; if (androidApp && typeof (androidApp.appHost) == "function") { return new Promise(function (resolve, reject) { androidApp.appHost(null, function (result, error) { handleAppExtendResult(result, error, resolve, reject); }); }); } return new Promise(function (resolve) { let app = window.App_config; if (app && typeof (app.getHostName) == "function") { resolve(app.getHostName()); return; } resolve("-"); }); }, /** * 获取配置信息:调试模式 * @returns {boolean} */ appIsDebug: () => { let androidApp = window.androidApp; if (androidApp && typeof (androidApp.appDebug) == "function") { return new Promise(function (resolve, reject) { androidApp.appDebug(null, function (result, error) { handleAppExtendResult(result, error, resolve, reject); }); }); } return new Promise(function (resolve) { let app = window.App_config; if (app && typeof (app.isDebug) == "function") { resolve(true === app.isDebug()); return; } resolve(false); }); }, /** * 获取配置信息:发布类型 * @returns {string} */ appChannel: () => { let androidApp = window.androidApp; if (androidApp && typeof (androidApp.appChannel) == "function") { return new Promise(function (resolve, reject) { androidApp.appChannel(null, function (result, error) { handleAppExtendResult(result, error, resolve, reject); }); }); } return new Promise(function (resolve) { let app = window.App_config; if (app && typeof (app.getChannel) == "function") { resolve(app.getChannel()); return; } resolve(""); }); } };