UNPKG

@kjts20/tool-weixin-mp

Version:

wkj

1,575 lines (1,563 loc) 52.2 kB
var __defProp = Object.defineProperty; var __defProps = Object.defineProperties; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropDescs = Object.getOwnPropertyDescriptors; var __getOwnPropNames = Object.getOwnPropertyNames; var __getOwnPropSymbols = Object.getOwnPropertySymbols; var __hasOwnProp = Object.prototype.hasOwnProperty; var __propIsEnum = Object.prototype.propertyIsEnumerable; var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; var __spreadValues = (a, b) => { for (var prop in b || (b = {})) if (__hasOwnProp.call(b, prop)) __defNormalProp(a, prop, b[prop]); if (__getOwnPropSymbols) for (var prop of __getOwnPropSymbols(b)) { if (__propIsEnum.call(b, prop)) __defNormalProp(a, prop, b[prop]); } return a; }; var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b)); var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); var __async = (__this, __arguments, generator) => { return new Promise((resolve, reject) => { var fulfilled = (value) => { try { step(generator.next(value)); } catch (e) { reject(e); } }; var rejected = (value) => { try { step(generator.throw(value)); } catch (e) { reject(e); } }; var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected); step((generator = generator.apply(__this, __arguments)).next()); }); }; // src/index.ts var src_exports = {}; __export(src_exports, { EUseApi: () => EUseApi, ORG_AUTH_EVENT: () => ORG_AUTH_EVENT, alert: () => alert2, back: () => back, checkSettingAndGetUserInfo: () => checkSettingAndGetUserInfo, checkUpdate: () => checkUpdate, confirm: () => confirm, connectBle: () => connectBle, createBLEConnection: () => createBLEConnection, customLoading: () => customLoading, defaultVerision: () => defaultVerision, error: () => error, getBLEDeviceCharacteristics: () => getBLEDeviceCharacteristics, getBLEDeviceServices: () => getBLEDeviceServices, getBleList: () => getBleList, getBluetoothAdapterState: () => getBluetoothAdapterState, getBluetoothDevices: () => getBluetoothDevices, getCurSdkVersion: () => getCurSdkVersion, getCurrentPage: () => getCurrentPage, getExistPage: () => getExistPage, getHistoryPage: () => getHistoryPage, getLoginCode: () => getLoginCode, getLoginCustomer: () => getLoginCustomer, getLoginStaff: () => getLoginStaff, getLoginUser: () => getLoginUser, getLoginUserId: () => getLoginUserId, getPageInstance: () => getPageInstance, getSysEvent: () => getSysEvent, getSystemInfo: () => getSystemInfo, getSystemInfoSync: () => getSystemInfoSync, getTabbarPageIndex: () => getTabbarPageIndex, getUserInfo: () => getUserInfo, getWithoutArgsRoute: () => getWithoutArgsRoute, goto: () => goto, hideLoading: () => hideLoading, hideTabBar: () => hideTabBar, httpServer: () => httpServer, httpServerConfig: () => httpServerConfig, initHttpServer: () => initHttpServer, isIos: () => isIos, isLogin: () => isLogin, isTabbarPage: () => isTabbarPage, loading: () => loading, loginUserIsHasPhone: () => loginUserIsHasPhone, openBluetoothAdapter: () => openBluetoothAdapter, orgAuth: () => orgAuth, queryBleStatus: () => queryBleStatus, querySelector: () => querySelector, refresh: () => refresh, requirePackage: () => requirePackage, requirePromise: () => requirePromise, resFilter: () => resFilter, restartMiniProgram: () => restartMiniProgram, routeTools: () => routeTools, routerIsExist: () => routerIsExist, rpx2px: () => rpx2px, saveImageToPhotosAlbum: () => saveImageToPhotosAlbum, send2Ble: () => send2Ble, sendData2Ble: () => sendData2Ble, sendErr: () => sendErr, setRoutes: () => setRoutes, setSystemInfo: () => setSystemInfo, setTabBar: () => setTabBar, stopBluetoothDevicesDiscovery: () => stopBluetoothDevicesDiscovery, storage: () => storage, success: () => success, toTabbarIndexPath: () => toTabbarIndexPath, toTabbarList: () => toTabbarList, toTabbarPageList: () => toTabbarPageList, toast: () => toast, writeBLECharacteristicValue: () => writeBLECharacteristicValue }); module.exports = __toCommonJS(src_exports); // src/wx.tools.ts var import_tool2 = require("@kjts20/tool"); // src/storage.ts var import_tool = require("@kjts20/tool"); var storage = new import_tool.CommonStorage( { getStorage: wx.getStorage, getStorageSync: wx.getStorageSync, setStorage: wx.setStorage, setStorageSync: wx.setStorageSync, removeStorage: wx.removeStorage, clearStorage: wx.clearStorage }, error ); // src/wx.tools.ts var logger = wx.getRealtimeLogManager(); var sendErr = function(...args) { console.warn("\u53D1\u9001\u9519\u8BEF\uFF1A", ...args); logger.error(...args); }; var error = function(title, err = null, callback, waitTime) { console.warn("error\u51FD\u6570\u63D0\u9192=>", { title, err }); logger.warn("error\u51FD\u6570\u63D0\u9192=>", title, err); wx.showToast({ title: title || "\u7CFB\u7EDF\u5F00\u5C0F\u5DEE\u4E86\uFF5E", icon: "none", duration: 2500, complete: () => { if (typeof callback === "function") { let time = parseInt(waitTime); time = isNaN(time) ? 0 : time; setTimeout(() => { callback(); }, time); } } }); }; var success = function(title, cb, timer) { const time = parseInt(timer); const showTimer = isNaN(time) ? 1500 : time; wx.showToast({ title, duration: showTimer, complete: function() { if (typeof cb === "function") { setTimeout(cb, showTimer); } } }); }; var toast = function(title, isShowIcon = false) { wx.showToast({ title, icon: isShowIcon === true ? "success" : "none", duration: 1500 }); }; var confirm = function(content, confirmText = "\u786E\u5B9A", cancelText = "\u53D6\u6D88", title = "") { return new Promise((resolve, reject) => { wx.showModal({ title, content, confirmText, cancelText, success: function(res) { if (res.confirm) { return resolve(true); } else { return reject(); } }, fail: function(err) { console.error("confirm\u5F39\u7A97\u9519\u8BEF=>", { err }); return reject(); } }); }); }; var alert2 = function(content, confirmText = "\u786E\u5B9A", title = "\u7CFB\u7EDF\u63D0\u9192\u4F60") { return new Promise((resolve, reject) => { wx.showModal({ title, content, showCancel: false, confirmText: confirmText ? confirmText : "\u786E\u5B9A", success: function(res) { if (res.confirm) { return resolve(true); } else { return reject(); } }, fail: function(err) { console.log("\u3010alert\u9519\u8BEF\u3011=>", err); return reject(); } }); }); }; var hideTabBar = function() { wx.hideTabBar({ fail: (err) => { console.log("\u9690\u85CF\u5931\u8D25=>", err); } }); }; var loadingTimer; var customLoading = function(title = "\u52A0\u8F7D\u4E2D", time, callback, maskStatus = true) { hideLoading(); wx.showLoading({ mask: maskStatus, title }); const hideTime = (0, import_tool2.isNum)(time) && time > 0 ? time : 3e3; loadingTimer = setTimeout(() => { hideLoading(); if (typeof callback === "function") { callback(); } }, hideTime); }; var loading = function(title = "\u52A0\u8F7D\u4E2D", callback, time, maskStatus = true) { const hideTime = time !== void 0 && (0, import_tool2.isNum)(time) && time > 0 ? time : 30 * 1e3; customLoading(title, hideTime, callback, maskStatus); }; var hideLoadingTimer; var hideLoading = function(time = 0) { clearTimeout(loadingTimer); if (typeof time === "number" && time > 0) { clearTimeout(hideLoadingTimer); hideLoadingTimer = setTimeout(() => { wx.hideLoading(); }, time); } else { wx.hideLoading(); } }; var querySelector = function(componentThis, selector) { return new Promise((resolve, reject) => { if ((0, import_tool2.isStr)(selector)) { const query = wx.createSelectorQuery().in(componentThis); query.select(selector).boundingClientRect(); query.selectViewport(); query.exec((res) => { if (Array.isArray(res)) { const selectors = res.filter((it) => (0, import_tool2.isObj)(it)); if (selectors.length > 0) { resolve(selectors); return; } } reject({ msg: "\u8282\u70B9\u6CA1\u6709\u627E\u5230", data: res }); }); } else { reject({ msg: "\u8282\u70B9\u9519\u8BEF", data: selector }); } }); }; var getLoginCode = function() { return new Promise((resolve, reject) => { wx.login({ success: (res) => { resolve(res.code); }, fail: (err) => { reject(err); } }); }); }; var isIos = function() { var _a; const systemInfo = wx.getSystemInfoSync(); const platform = (_a = systemInfo == null ? void 0 : systemInfo.platform) == null ? void 0 : _a.toUpperCase(); return platform === "IOS"; }; var checkUpdate = function() { if (canUse()) { const updateManager = wx.getUpdateManager(); if (checkSDKVersion() && updateManager) { updateManager.onCheckForUpdate(function(res) { if (res.hasUpdate) { wx.showLoading({ title: "\u7248\u672C\u66F4\u65B0\u4E2D" }); } }); updateManager.onUpdateReady(function() { wx.hideLoading(); wx.showModal({ title: "\u66F4\u65B0\u63D0\u9192", content: "\u7CFB\u7EDF\u5DF2\u7ECF\u66F4\u65B0\u5B8C\u6BD5", confirmText: "\u91CD\u542F\u7CFB\u7EDF", showCancel: false, success: function(res) { if (res.confirm) { updateManager.applyUpdate(); } } }); }); updateManager.onUpdateFailed(function() { wx.showModal({ title: "\u66F4\u65B0\u63D0\u793A", showCancel: false, content: "\u68C0\u67E5\u5230\u6709\u65B0\u7248\u672C\uFF0C\u4F46\u4E0B\u8F7D\u5931\u8D25\uFF0C\u8BF7\u68C0\u67E5\u7F51\u7EDC\u8BBE\u7F6E", success: function(res) { if (res.confirm) { updateManager.applyUpdate(); } } }); }); } else { wx.updateWeChatApp(); } } else { wx.showModal({ title: "\u5FAE\u4FE1\u7248\u672C\u63D0\u9192", content: "\u5FAE\u4FE1\u7248\u672C\u8FC7\u4F4E", showCancel: false, confirmText: "\u66F4\u65B0\u5FAE\u4FE1\u7248\u672C", success: function(res) { wx.updateWeChatApp(); }, fail: function() { wx.updateWeChatApp(); } }); } }; var defaultVerision = "2.20.3"; var toIntVersion = function(version) { return Number( (version || defaultVerision).split(".").map((it) => parseInt(it)).filter((it) => (0, import_tool2.isNum)(it)).map((it) => (it < 10 ? "0" : "") + it).join("") ); }; var getCurSdkVersion = () => toIntVersion(wx.getSystemInfoSync().SDKVersion); var checkSDKVersion = function(version = defaultVerision) { return getCurSdkVersion() >= toIntVersion(version); }; var canUse = function() { const checkUseApi = ["button.open-type.getUserInfo", "button.open-type.getPhoneNumber", "getSystemInfoSync.return.safeArea", "openBluetoothAdapter"]; for (const it of checkUseApi) { if (!wx.canIUse(it)) { return false; } } return true; }; var wxSaveImageToPhotosAlbum = function(src, saveName) { return new Promise((resolve, reject) => { let fileName = saveName || (/* @__PURE__ */ new Date()).valueOf(); wx.downloadFile({ url: src, filePath: wx.env.USER_DATA_PATH + "/" + fileName + ".png", success(res) { if (res.statusCode === 200) { let img = res.filePath; wx.saveImageToPhotosAlbum({ filePath: img, success(result) { toast("\u5DF2\u4FDD\u5B58\u81F3\u76F8\u518C"); resolve(result); }, fail(err) { if (/cancel/.test(err.errMsg)) { toast("\u53D6\u6D88\u4FDD\u5B58"); } else { error("\u4FDD\u5B58\u5931\u8D25", err); } reject(err); } }); } else { error("\u4FDD\u5B58\u5931\u8D25", res); reject(res); } }, fail(err) { error("\u4E0B\u8F7D\u56FE\u7247\u5931\u8D25", err); reject(err); } }); }); }; var saveImageToPhotosAlbum = function(src) { return new Promise((resolve, reject) => { wx.getSetting({ success: (res) => { if (res.authSetting["scope.writePhotosAlbum"]) { wxSaveImageToPhotosAlbum(src).then(resolve).catch(reject); } else if (res.authSetting["scope.writePhotosAlbum"] === void 0) { wx.authorize({ scope: "scope.writePhotosAlbum", success() { wxSaveImageToPhotosAlbum(src).then(resolve).catch(reject); }, fail(err) { if (!/cancel/.test(err.errMsg)) { error("\u60A8\u6CA1\u6709\u6388\u6743\uFF0C\u65E0\u6CD5\u4FDD\u5B58\u5230\u76F8\u518C", err); } else { toast("\u6388\u6743\u53D6\u6D88"); } reject(err); } }); } else { wx.openSetting({ success(res2) { if (res2.authSetting["scope.writePhotosAlbum"]) { wxSaveImageToPhotosAlbum(src).then(resolve).catch(reject); } else { error("\u60A8\u6CA1\u6709\u6388\u6743\uFF0C\u65E0\u6CD5\u4FDD\u5B58\u5230\u76F8\u518C", res2); reject(res2); } }, fail(err) { reject(err); } }); } }, fail(err) { error("\u83B7\u53D6\u6388\u6743\u5931\u8D25", err); reject(err); } }); }); }; var getUserInfo = function() { return new Promise((resolve, reject) => { wx.login({ success({ code }) { wx.getUserInfo({ success(res) { resolve(__spreadValues({ code }, res)); }, fail(err) { reject(err); } }); }, fail(err) { reject(err); } }); }); }; var checkSettingAndGetUserInfo = function(language = "zh_CN") { return new Promise((resolve, reject) => { wx.getSetting({ success: function(res) { if (res && res.authSetting && res.authSetting["scope.userInfo"] === true) { wx.login({ success: (res2) => { const code = res2.code; if ((0, import_tool2.isStr)(code)) { wx.getUserInfo({ lang: language, success: (getUserRes) => { const { encryptedData, iv, userInfo, signature, rawData } = getUserRes; if ((0, import_tool2.isStr)(encryptedData) && (0, import_tool2.isStr)(iv)) { resolve({ code, encryptedData, iv, userInfo: JSON.stringify(userInfo), signature, rawData }); } else { reject("\u7528\u6237\u4FE1\u606F\u9519\u8BEF=>" + JSON.stringify(getUserRes)); } }, fail: (err) => { reject(err); } }); } else { reject("wx.login\u7684code\u4E0D\u5408\u6CD5=>" + code); } }, fail: (err) => { reject(err); } }); } else { reject("\u6CA1\u6709\u6388\u6743\u8FC7"); } }, fail: function(err) { reject(err); } }); }); }; var getSystemInfoSync = function() { const systemInfo = wx.getSystemInfoSync() || {}; const { screenHeight, statusBarHeight, screenWidth } = systemInfo; if (typeof systemInfo === "object" && systemInfo !== null && !systemInfo.safeArea) { systemInfo.safeArea = { bottom: screenHeight, height: screenHeight - statusBarHeight, left: 0, right: screenWidth, top: statusBarHeight, width: screenWidth }; } return systemInfo; }; var saveSystemInfoKey = "system-info"; var setSystemInfo = function() { storage.setStorageSync(saveSystemInfoKey, getSystemInfoSync()); }; var getSystemInfo = function() { return storage.getStorageSync(saveSystemInfoKey) || getSystemInfoSync(); }; var rpx2px = function() { const windowInfo = getSystemInfoSync().safeArea; return function(rpx) { let val = parseFloat(rpx); return isNaN(val) ? rpx : Math.ceil(val * windowInfo.width / 750); }; }(); var restartMiniProgram = function(path) { import_tool2.Assert.isTrue((0, import_tool2.isStr)(path), "\u8DEF\u5F84\u4E3A\u7A7A", { path }); try { wx.restartMiniProgram({ path: /^\/.*?$/.test(path) ? path : `/${path}` }); } catch (err) { wx.exitMiniProgram(); } }; // src/httpServer.ts var import_tool3 = require("@kjts20/tool"); var httpServerConfig = { // 设置头部 setHeader() { const token = null; const useHeader = {}; if ((0, import_tool3.isStr)(token)) { useHeader["token"] = token; } return useHeader; }, // 设置响应拦截 responseIntercept(response) { return response; } }; var httpServer = new import_tool3.HttpServer({ host: "", apiPrefix: "/api", setHeader: function() { const func = httpServerConfig.setHeader; return (0, import_tool3.isFunc)(func) ? func.call(this) : {}; }, request: wx.request, uploadFile: wx.uploadFile, responseIntercept(response) { const func = httpServerConfig.responseIntercept; return (0, import_tool3.isFunc)(func) ? func(response) : response; } }); var initHttpServer = function(host) { httpServer.host = host; return httpServer; }; // src/navigator.ts var import_tool4 = require("@kjts20/tool"); var config = { tabBar: { list: [] }, routes: {} }; var setTabBar = function(tabBar) { config.tabBar = tabBar; }; var setRoutes = function(routes) { config.routes = routes; }; var toTabbarPageList = () => config.tabBar.list; var toTabbarList = () => toTabbarPageList().filter((it) => it).map((it) => it.pagePath); var toTabbarIndexPath = () => `/${config.tabBar.list[0].pagePath}`; var EUseApi = /* @__PURE__ */ ((EUseApi2) => { EUseApi2["reLaunch"] = "reLaunch"; EUseApi2["redirectTo"] = "redirectTo"; EUseApi2["navigateTo"] = "navigateTo"; EUseApi2["switchTab"] = "switchTab"; return EUseApi2; })(EUseApi || {}); var getCurrentPage = function() { return getExistPage(0); }; var getExistPage = function(topOrder = 0) { if ((0, import_tool4.isNum)(topOrder) && topOrder >= 0) { const pages = getCurrentPages(); const pageNum = pages.length; topOrder = getActualDeltaFromPageStack(pages, topOrder); if (topOrder < pageNum) { return pages[pageNum - (topOrder + 1)]; } else { return null; } } else { throw new Error("\u6808\u9876\u6392\u5E8F\u4E0D\u5408\u6CD5"); } }; var getPageInstance = function(route) { return __async(this, null, function* () { if ((0, import_tool4.isStr)(route)) { for (const page of getCurrentPages()) { if (route === page.route) { return page; } } } }); }; var getHistoryPage = function(delta = 1) { return __async(this, null, function* () { const pages = getCurrentPages(); if (delta && (0, import_tool4.isNum)(delta) && delta > 0 && delta <= pages.length) { delta = getActualDeltaFromPageStack(pages, delta); const pageInstance = pages[pages.length - delta - 1]; if ((0, import_tool4.isObj)(pageInstance)) { return pageInstance; } } }); }; var getActualDeltaFromPageStack = function(pages, delta) { const pageNum = pages.length; let newDelta = delta; let lastPage = null; for (let i = 1; i <= delta; i++) { const page = pages[pageNum - i]; if (isSamePage(lastPage, page)) { newDelta++; } else { lastPage = page; } } return newDelta; }; var getWithoutArgsRoute = function(route) { if ((0, import_tool4.isStr)(route)) { return route.replace(/^(.*?)\?.*?$/, "$1").replace(/^\/*(.*?)\/*$/, "$1"); } else { console.error("\u3010\u83B7\u53D6\u4E0D\u5E26\u53C2\u6570\u7684\u8DEF\u5F84-\u8DEF\u5F84\u4E0D\u662F\u53EF\u7528\u7684\u5B57\u7B26\u4E32\u3011", route); return ""; } }; var isTabbarPage = function(route) { var _a; let pageRoute = route; if (!(0, import_tool4.isStr)(pageRoute)) { pageRoute = (_a = getCurrentPage()) == null ? void 0 : _a.route; } return toTabbarList().includes(getWithoutArgsRoute(pageRoute)); }; var getTabbarPageIndex = function(route) { if (isTabbarPage(route)) { const pageRoute = getWithoutArgsRoute(route); const tabbarList = toTabbarPageList(); for (let i = 0; i < tabbarList.length; i++) { const it = tabbarList[i]; if (it.pagePath === pageRoute) { return i; } } return -1; } else { return -1; } }; var isSamePage = function(page1, page2) { if ((0, import_tool4.isObj)(page1) && (0, import_tool4.isObj)(page2)) { const router1 = (0, import_tool4.deepClone)(page1); const router2 = (0, import_tool4.deepClone)(page2); delete router1.options[refreshTagKey]; delete router2.options[refreshTagKey]; if (router1.route === router2.route && (0, import_tool4.objEq)(router1.options, router2.options)) { return true; } } return false; }; var goto = function(route, options = {}, other) { const { type = "navigateTo" /* navigateTo */, sendData = {} } = other || {}; return new Promise((resolve, reject) => { if ((0, import_tool4.isStr)(route)) { let jumpType = type; if (isTabbarPage(route) && type !== "reLaunch" /* reLaunch */) { jumpType = "switchTab" /* switchTab */; } else if (type === "switchTab" /* switchTab */) { console.error(route + "\u9875\u9762\u4E0D\u662Ftabbar\u9875\u9762\u5DF2\u7ECF\u81EA\u52A8\u5207\u6362\u4E3AnavigateTo"); jumpType = "navigateTo" /* navigateTo */; } const url = jumpType === "switchTab" /* switchTab */ ? getWithoutArgsRoute(route) : (0, import_tool4.mergeUrl)(route, options); const useApi = wx[jumpType]; if ((0, import_tool4.isFunc)(useApi)) { if (jumpType === "reLaunch" /* reLaunch */) { const app = getApp(); app.onLaunch(app.globalData.options); } useApi({ url: "/" + url, success: function(res) { if ((0, import_tool4.isObj)(sendData)) { for (const key in sendData) { res.eventChannel.emit(key, sendData[key]); } } resolve(true); }, fail: function(err) { reject({ route, options, err, msg: "\u8DF3\u8F6C\u5931\u8D25" }); }, complete: console.log }); } else { reject({ msg: "\u8DF3\u8F6C\u65B9\u5F0F\u4E0D\u5B58\u5728", route, options, jumpType, useApi }); } } else { reject({ msg: "\u8DF3\u8F6C\u5931\u8D25-\u9875\u9762\u8DEF\u5F84\u9519\u8BEF", route, options }); } }); }; var refreshTagKey = "fresh_jump_tag"; var refresh = function(options = null, type = "redirectTo" /* redirectTo */) { return new Promise((resolve, reject) => { const lastRouter = getCurrentPage(); if (lastRouter !== null) { const newOptions = __spreadValues(__spreadValues({}, lastRouter.options), options ? options : {}); newOptions[refreshTagKey] = Math.random(); goto(lastRouter.route, newOptions, { type }).then(function() { resolve(true); }).catch(function() { reject("\u8DF3\u8F6C\u9519\u8BEF"); }); } else { reject("\u9875\u9762\u4E0D\u5B58\u5728"); } }); }; var back = function(delta = 1, sendData = {}) { return new Promise((resolve, reject) => { var _a, _b; const pages = getCurrentPages(); if (delta && (0, import_tool4.isNum)(delta) && delta > 0 && delta <= pages.length) { delta = getActualDeltaFromPageStack(pages, delta); } try { (_b = (_a = pages[pages.length - delta - 1]) == null ? void 0 : _a.onBack) == null ? void 0 : _b.call(_a, sendData); } catch (e) { console.error("onClick\u9519\u8BEF", e); } wx.navigateBack({ delta, success: function(res) { resolve(res); }, fail: function(err) { reject(__spreadProps(__spreadValues({}, (0, import_tool4.isObj)(err) ? err : { err }), { delta, pages })); } }); }); }; var toSysRouters = function(allRoutes) { const paths = []; function scanPath(routerDict) { if ((0, import_tool4.isObj)(routerDict)) { for (const name in routerDict) { const it = routerDict[name]; if ((0, import_tool4.isStr)(it)) { paths.push((0, import_tool4.trim)(it, "/")); } else { scanPath(it); } } } } scanPath(allRoutes); return paths; }; var routerIsExist = function(router) { if ((0, import_tool4.isStr)(router)) { const r = (0, import_tool4.trim)(router.replace(/^(.*?)\?.*?$/, "$1"), "/"); return toSysRouters(config.routes).includes(r); } return false; }; // src/resFilter.ts var import_tool5 = require("@kjts20/tool"); var resFilter = new import_tool5.ResponseFilter({ error }); // src/subPackage.tools.ts var import_tool6 = require("@kjts20/tool"); var requirePromise = function(url, getRequest) { return function(...args) { return new Promise((resolve, reject) => { function doRequire(requireErrCallBack) { require.async(url).then((requireObj) => { if ((0, import_tool6.isObj)(requireObj)) { const func = getRequest(requireObj); try { func(...args).then(resolve).catch(reject); } catch (err) { reject({ err, msg: "\u51FD\u6570\u6267\u884C\u9519\u8BEF" }); } } else { sendErr({ msg: "requirePromise\u4E3A\u7A7A", err: requireObj, url }); reject({ err: requireObj, msg: "\u5305\u5F15\u5165\u4E3A\u7A7A" }); } }).catch((err) => { if (requireErrCallBack) { requireErrCallBack(); } else { sendErr({ msg: "requirePromise\u9519\u8BEF", err, url }); reject({ err, url, msg: "\u5305\u5F15\u5165\u9519\u8BEF1" }); } }); } doRequire(() => { doRequire(() => { console.error("\u8C01\u9519\u8BEF\u4E86===>>>"); alert("\u5C0F\u7A0B\u5E8F\u52A0\u8F7D\u5F02\u5E38\uFF0C\u8BF7\u91CD\u65B0\u542F\u52A8\u5FAE\u4FE1"); }); }); }); }; }; var requirePackage = function(url) { return new Promise((resolve, reject) => { require.async(url).then((requireObj) => { if ((0, import_tool6.isObj)(requireObj)) { resolve(requireObj); } else { sendErr({ msg: "requirePackage\u4E3A\u7A7A", err: requireObj, url }); reject({ err: requireObj, msg: "\u5305\u5F15\u5165\u4E3A\u7A7A" }); } }).catch((err) => { sendErr({ msg: "requirePackage\u9519\u8BEF", err, url }); reject({ err, url, msg: "\u5305\u5F15\u5165\u9519\u8BEF2" }); }); }); }; // src/utils/ble.utils.ts var import_tool7 = require("@kjts20/tool"); var openBluetoothAdapter = function() { return new Promise((resolve, reject) => { wx.openBluetoothAdapter({ success: function(res) { resolve(res); }, fail: function(err) { const { errMsg } = err; if (/already\s+opened/.test(errMsg)) { resolve(err); } else { reject(err); } } }); }); }; var getBluetoothAdapterState = function() { return new Promise((resolve, reject) => { wx.getBluetoothAdapterState({ success(res) { const state = (0, import_tool7.isObj)(res.adapterState) ? res.adapterState : res; resolve(state); }, fail(err) { reject(err); } }); }); }; var createListener = function(listener) { return listener && (0, import_tool7.isFunc)(listener) ? listener : () => { }; }; var getBluetoothDevices = function(stateListener) { const listener = createListener(stateListener); return new Promise((resolve) => { listener("laoding", "\u52A0\u8F7D\u4E2D"); wx.startBluetoothDevicesDiscovery({ success: function(res) { listener("startBluetoothDevicesDiscovery:success", "\u5F00\u59CB\u641C\u5BFB\u9644\u8FD1\u8BBE\u5907\uFF0C\u8BF7\u7B49\u5F85", res); setTimeout(function() { listener("getBluetoothDevices:ready", "\u51C6\u5907\u5F00\u59CB\u83B7\u53D6\u8BBE\u5907"); wx.getBluetoothDevices({ success: function(res2) { listener("getBluetoothDevices:success", "\u83B7\u53D6\u8BBE\u5907\u6210\u529F", res2); const { devices } = res2; const filter = (it) => (0, import_tool7.isObj)(it) && it.name && it.deviceId && it.name != "\u672A\u77E5\u8BBE\u5907" && !/未知或不支持的设备/.test(it.name); const deviceList = devices.filter((it) => filter(it)); wx.stopBluetoothDevicesDiscovery({ success(res3) { listener("stopBluetoothDevicesDiscovery:success", "\u505C\u6B62\u641C\u7D20\u8BBE\u5907\u6210\u529F", res3); }, fail(err) { listener("stopBluetoothDevicesDiscovery:success", "\u505C\u6B62\u641C\u7D20\u8BBE\u5907\u5931\u8D25", err); } }); resolve(deviceList); }, fail(err) { listener("getBluetoothDevices:fail", "\u83B7\u53D6\u8BBE\u5907\u5931\u8D25", err); resolve([]); } }); }, 2e3); }, fail(err) { listener("startBluetoothDevicesDiscovery:fail", "\u5F00\u59CB\u641C\u5BFB\u9644\u8FD1\u8BBE\u5907\u5931\u8D25", err); } }); }); }; var getBleList = function(stateListener) { const listener = createListener(stateListener); return new Promise((resolve) => { openBluetoothAdapter().then((res) => { listener("loading", "\u6253\u5F00\u84DD\u7259\u6210\u529F", res); getBluetoothAdapterState().then((state) => { const { available, discovering } = state; if (available) { if (discovering) { wx.stopBluetoothDevicesDiscovery(); } else { getBluetoothDevices(listener).then(resolve); } } else { listener("error", "\u672C\u673A\u84DD\u7259\u4E0D\u53EF\u7528", state); } }).catch((err) => { listener("error", "\u67E5\u770B\u9002\u914D\u5668\u72B6\u6001\u5931\u8D25", err); }); }).catch((err) => { listener("error", "\u84DD\u7259\u521D\u59CB\u5316\u5931\u8D25\uFF0C\u8BF7\u5230\u8BBE\u7F6E\u6253\u5F00\u84DD\u7259", err); }); }); }; var stopBluetoothDevicesDiscovery = function() { wx.stopBluetoothDevicesDiscovery({ success: function(res) { console.log(res); } }); }; var createBLEConnection = function(deviceId, stateListener) { const listener = createListener(stateListener); return new Promise((resovle) => { listener("loading", "\u51C6\u5907\u8FDE\u63A5\u84DD\u7259"); if ((0, import_tool7.isStr)(deviceId)) { wx.createBLEConnection({ deviceId, success: function(res) { listener("createBLEConnection:success", "\u8FDE\u63A5\u84DD\u7259\u6210\u529F", res); resovle(res); }, fail: function(err) { const { errMsg } = err; if (/already\s+connect/.test(errMsg)) { listener("createBLEConnection:success", "\u84DD\u7259\u5DF2\u7ECF\u8FDE\u63A5", err); resovle(err); } else { listener("error", "\u8FDE\u63A5\u5931\u8D25", err); } } }); } else { listener("error", "\u8BBE\u5907id\u4E0D\u5408\u6CD5", deviceId); } }); }; var getBLEDeviceServices = function(deviceId, stateListener) { const listener = createListener(stateListener); return new Promise((resolve) => { listener("loading", "\u83B7\u53D6\u670D\u52A1\u4E2D"); wx.getBLEDeviceServices({ deviceId, success(res) { listener("getBLEDeviceServices:success", "\u83B7\u53D6\u670D\u52A1\u5B8C\u6210", res); resolve(res.services); }, fail(err) { listener("error", "\u83B7\u53D6\u670D\u52A1\u5931\u8D25", err); return []; } }); }); }; var getBLEDeviceCharacteristics = function(deviceId, serviceId, stateListener) { const listener = createListener(stateListener); return new Promise((resolve) => { listener("loading", "\u83B7\u53D6\u7279\u5F81\u503C\u4E2D"); wx.getBLEDeviceCharacteristics({ deviceId, serviceId, success(res) { listener("getBLEDeviceServices:success", "\u83B7\u53D6\u7279\u5F81\u503C\u5B8C\u6210", res); resolve( res.characteristics.filter((it) => { const { properties: { read, write, notify }, uuid } = it; return read || write || notify; }).map((it) => { const { uuid, properties: { write, notify, read } } = it; return { deviceId, serviceId, characteristicId: uuid, write, notify, read }; }) ); }, fail(err) { listener("error", "\u83B7\u53D6\u7279\u5F81\u503C\u5931\u8D25", err); resolve([]); } }); }); }; var connectBle = function(deviceId, stateListener) { const listener = createListener(stateListener); return new Promise((resovle) => { createBLEConnection(deviceId, (state, msg, other) => { listener(state, msg, other); if (state === "error") { resovle([]); } }).then(() => { getBLEDeviceServices(deviceId, listener).then((serviceList) => { const dscList = []; const getAllDCPromise = []; for (let i = 0; i < serviceList.length; i++) { getAllDCPromise.push(getBLEDeviceCharacteristics(deviceId, serviceList[i].uuid, listener)); } Promise.all(getAllDCPromise).then((allCharacteristicsLists) => { allCharacteristicsLists.forEach((CharacteristicsList) => { dscList.push(...CharacteristicsList); }); resovle(dscList); }); }); }); }); }; var send2Ble = function(sendFunc, data, packageSize = 20, stateListener) { const listener = createListener(stateListener); return new Promise((resolve) => { if (!sendFunc || !(0, import_tool7.isFunc)(sendFunc)) { listener("error", "\u53D1\u9001\u51FD\u6570\u4E3A\u7A7A", sendFunc); return; } else if (!data) { listener("error", "\u53D1\u9001\u6570\u636E\u4E3A\u7A7A", sendFunc); return; } else { let doSend = function() { const sendLen = sendTime < packageNum ? packageSize : lastDataLength; const sendData = toSendData(sendTime * packageSize, sendLen); listener("send:start", `\u53D1\u9001\u7B2C${sendTime + 1}\u6B21\uFF0C\u957F\u5EA6\uFF1A${sendLen}`); sendFunc(sendData, function() { sendTime++; listener("send:success", `\u53D1\u9001\u7B2C${sendTime}\u6B21\u6210\u529F`); if (sendTime < sendTimeLimit) { doSend(); } else { listener("send:end", "\u53D1\u9001\u7ED3\u675F", { sendTime, sendTimeLimit, packageSize }); resolve(true); } }); }; const dataSize = data.length || 0; const packageNum = Math.floor(dataSize / packageSize); const sendTimeLimit = Math.ceil(dataSize / packageSize); const lastDataLength = dataSize % packageSize; const toSendData = function(start, len) { const buff = new ArrayBuffer(len); const dataView = new DataView(buff); for (var i = 0; i < len; ++i) { dataView.setUint8(i, data[start + i]); } return buff; }; let sendTime = 0; listener("send:ready", `\u51C6\u5907\u53D1\u9001\u6570\u636E`); doSend(); } }); }; var writeBLECharacteristicValue = function(deviceId, serviceId, characteristicId, value, stateListener) { const listener = createListener(stateListener); return new Promise((resovle, reject) => { listener("loading", "\u5F00\u59CB\u6253\u5370"); wx.writeBLECharacteristicValue({ deviceId, serviceId, characteristicId, value, success(res) { listener("writeBLECharacteristicValue:ok", "\u5199\u5165\u6570\u636E\u6210\u529F", res); resovle(res); }, fail(err) { listener("error", "\u6253\u5370\u5931\u8D25", err); reject(err); } }); }); }; var sendData2Ble = function(deviceId, serviceId, characteristicId, data, stateListener) { const listener = createListener(stateListener); const sendFunc = function(buff, sendSuccessCb) { writeBLECharacteristicValue(deviceId, serviceId, characteristicId, buff, listener).then((res) => { if (sendSuccessCb) { sendSuccessCb(); } }).catch((err) => { listener("send:fail", "\u53D1\u9001\u6570\u636E\u5931\u8D25", err); }); }; return send2Ble(sendFunc, data, 20, listener); }; var queryBleStatus = function(deviceId, stateListener) { const listener = createListener(stateListener); connectBle(deviceId, listener).then((list) => { const writeList = list.filter((it) => it.write); const notifyList = list.filter((it) => it.notify); if (list.length <= 0) { listener("error", "\u8BBE\u5907\u4E0D\u652F\u6301", list); } else if (list.filter((it) => it.write && it.notify && it.read).length <= 0) { listener("error", "\u8BBE\u5907\u90E8\u5206\u529F\u80FD\u7F3A\u5931", list); } else if (writeList.length <= 0 || notifyList.length <= 0) { listener("error", "\u84DD\u7259\u4E0D\u53EF\u7528", list); } else { const statusDict = { 0: "\u53EF\u7528", 4: "\u7F3A\u7EB8", 6: "\u5F00\u76D6\u3001\u7F3A\u7EB8", 40: "\u5176\u4ED6\u9519\u8BEF", 41: "\u5F00\u76D6", 45: "\u5F00\u76D6" }; const notifyIt = notifyList[0]; wx.notifyBLECharacteristicValueChange({ deviceId, serviceId: notifyIt.serviceId, characteristicId: notifyIt.characteristicId, state: true, success: function(res) { listener("notifyBLECharacteristicValueChange:ok", "\u83B7\u53D6\u503C\u901A\u77E5", res); wx.onBLECharacteristicValueChange(function(r) { var result = (0, import_tool7.ab2hex)(r.value); const resNum = Number(result); listener(isNaN(resNum) ? result : resNum, statusDict[resNum] || "\u672A\u77E5\u9519\u8BEF", r); }); }, fail(err) { listener("fail", "\u83B7\u53D6\u5931\u8D25", err); } }); const buf = new ArrayBuffer(5); const dateView = new DataView(buf); dateView.setUint8(0, 27); dateView.setUint8(1, 33); dateView.setUint8(2, 63); dateView.setUint8(3, 13); dateView.setUint8(4, 10); const writeIt = writeList[0]; writeBLECharacteristicValue(deviceId, writeIt.serviceId, writeIt.characteristicId, buf); } }); }; // src/tools/route.tools.ts var import_tool8 = require("@kjts20/tool"); var RouteTools = class { constructor() { /** * 设置信息 */ this.settings = { // 登录路径 loginPath: "pages/common/login/login" }; } /** * 设置登录路径 * @param path */ setLoginPath(path) { this.settings.loginPath = path; return this; } /** * 是否登录页面 * @param pagePath 页面路径(不传入就是当前页面) * @returns */ isLoginPage(pagePath) { const path = (0, import_tool8.isStr)(pagePath) ? pagePath : getCurrentPage().route; return getWithoutArgsRoute(path) === this.settings.loginPath; } /** * 跳转登录页面 * * @param jumpType 跳转类型 * @param queryOptions 请求参数 * @param getDefaultOptions 获取默认选项 * @returns */ gotoLoginPage(jumpType = "reLaunch" /* reLaunch */, queryOptions = {}, getDefaultOptions) { const page = getCurrentPage(); if (this.isLoginPage(page.route)) { return true; } else { const defautOptions = { redirect: page.route, options: (0, import_tool8.toJson)(page.options) }; const options = __spreadValues(__spreadValues({}, (0, import_tool8.isObj)(queryOptions) ? queryOptions : {}), getDefaultOptions ? getDefaultOptions(page) : defautOptions); goto(this.settings.loginPath, options, { type: jumpType }); return true; } } /** * 跳转到首页 * @returns */ toIndex() { return goto(toTabbarIndexPath(), {}, { type: "switchTab" /* switchTab */ }); } }; var routeTools = new RouteTools(); // src/tools/event.tools.ts var import_tool9 = require("@kjts20/tool"); var getSysEvent = function() { return (0, import_tool9.genGlobalSingleton)("SYSTEM-GLOBAL-EVENT", () => new import_tool9.Event()); }; // src/services/orgAuth.ts var import_tool10 = require("@kjts20/tool"); var ORG_AUTH_EVENT = { // 登录状态 LOGIN_STATUS_CHANGE: "ORG_AUTH_LOGIN_STATUS_CHANGE", // 登录用户变化 LOGIN_INFO_CHANGE: "LOGIN_INFO_CHANGE" }; var OrgAuth = class { constructor() { /** * 设置 */ this.settings = { // api地址url apis: { logout: "/org/auth/logout", mpAuthLogin: "/org/auth/mp-auth-login", mpAuthRegister: "/org/auth/mp-auth-register", mpAuthCheckToken: "/org/cur/mp-auth-check-token", // 切换身份 changeIdentity: "/org/cur/change-identity-login", // 获取登录的商家 getMerchant: "/org/cur/get-merchant", getMerchantList: "/org/cur/get-merchant-list", setDefaultMerchant: "/org/cur/set-default-merchant", // 获取用户信息 getUser: "/org/cur/get-user", getCustomer: "/org/cur/get-customer", getStaff: "/org/cur/get-staff" }, // 权限保存的key值 authSaveKeys: { // 当前身份键 curIdetityKey: "cur-idetity-key" } }; const that = this; this.sysAuth = new import_tool10.CommonAuth({ storage, checkTokenFunc: (getRequestTask, token, user) => __async(this, null, function* () { const encrypt = yield checkSettingAndGetUserInfo(); return yield this.loginResponse(httpServer.postJson(this.settings.apis.mpAuthCheckToken, encrypt, { getRequestTask })); }), // 退出登录 logoutFunc: (token, user) => __async(this, null, function* () { const res = yield confirm("\u786E\u5B9A\u9000\u51FA\u767B\u5F55\u5417\uFF1F"); const logoutRes = yield httpServer.post(this.settings.apis.logout); return logoutRes; }) }); httpServerConfig.setHeader = function() { return { token: that.sysAuth.getToken() }; }; } /** * 设置api * * @param key api键 * @param apiUrl api值 * @returns */ setApi(key, apiUrl) { import_tool10.Assert.isTrue((0, import_tool10.isStr)(key), "\u8BBE\u7F6E\u7684api\u7684\u952E\u4E0D\u80FD\u4E3A\u7A7A"); import_tool10.Assert.isTrue((0, import_tool10.isStr)(apiUrl), "\u8BBE\u7F6E\u7684api\u7684\u503C\u4E0D\u80FD\u4E3A\u7A7A"); this.settings.apis[key] = apiUrl; return this; } /** * 登录响应 * @param loginPromise 登录/checkToken/注册返回的promise处理 * @returns */ loginResponse(loginPromise) { return new Promise((resolve, reject) => { loginPromise.then((res) => { if (res.success) { const loginInfo = res.data; if (loginInfo) { const { token, user, identityKey } = res.data; const userIsChange = !(0, import_tool10.isSame)(this.sysAuth.getUser(), user); this.sysAuth.updateAuthStatus(token, user); this.sysAuth.setOther(this.settings.authSaveKeys.curIdetityKey, identityKey); getSysEvent().emit(ORG_AUTH_EVENT.LOGIN_STATUS_CHANGE, this.sysAuth.isLogin()); if (userIsChange) { getSysEvent().emit(ORG_AUTH_EVENT.LOGIN_INFO_CHANGE, user); } return resolve(loginInfo); } else { console.error("\u5199\u5165\u767B\u5F55\u4FE1\u606F\u9519\u8BEF=>", res); return reject(res); } } else { console.error("\u6388\u6743\u767B\u5F55\u5931\u8D25=>", res); return reject(res); } }).catch((err) => { error("\u6388\u6743\u767B\u5F55\u9519\u8BEF", err); return reject(err); }); }); } /** * 清空信息 */ clear() { this.sysAuth.clear(); getSysEvent().emit(ORG_AUTH_EVENT.LOGIN_STATUS_CHANGE, false); } /** * 退出登录 */ logout() { return __async(this, null, function* () { const logoutRes = yield this.sysAuth.logout(); getSysEvent().emit(ORG_AUTH_EVENT.LOGIN_STATUS_CHANGE, this.sysAuth.isLogin()); return logoutRes; }); } /** * 小程序检查登录状态(checkToken) */ mpCheckToken(unifiedTask = true) { return new Promise((resolve, reject) => { this.sysAuth.checkToken(unifiedTask).then(resolve).catch((err) => { if ((0, import_tool10.responseIsRedirect)(err)) { this.clear(); } reject(err); }); }); } /** * 小程序授权登录 * @param 登录加密信息 * @returns */ mpAuthLogin({ code, iv, encryptedData }) { return this.loginResponse(httpServer.post(this.settings.apis.mpAuthLogin, { code, encryptedData, iv })); } /** * 是否登录 */ isLogin(showTip = false) { const loginStatus = this.sysAuth.isLogin(); if (loginStatus) { return true; } else { if (showTip) { setTimeout(hideLoading); confirm("\u9700\u8981\u767B\u5F55\u624D\u80FD\u4F53\u9A8C\u5B8C\u6574\u529F\u80FD", "\u767B\u5F55\u63D0\u793A", "\u53BB\u767B\u5F55", "\u518D\u770B\u770B").then(() => { routeTools.gotoLoginPage(); }).catch(() => { const lastRouter = getCurrentPage(); if (!isTabbarPage(lastRouter == null ? void 0 : lastRouter.route)) { routeTools.toIndex(); } }); } return false; } } /** * 获取token */ getToken() { return this.sysAuth.getToken(); } /** * 获取当前身份 */ curIdentityKey() { return this.sysAuth.getOther(this.settings.authSaveKeys.curIdetityKey) || null; } /** * 切换登录身份 * @param identityKey 登录身份 */ changeLoginIdentity(identity) { confirm("\u662F\u5426\u5207\u6362\u767B\u5F55\u8EAB\u4EFD").then(() => { this.loginResponse(httpServer.post(this.settings.apis.changeIdentity, { identity })).then((res) => { success("\u5207\u6362\u8EAB\u4EFD\u6210\u529F", res); alert2("\u91CD\u542F\u7CFB\u7EDF\u751F\u6548").then((res2) => { restartMiniProgram(toTabbarIndexPath()); }); }).catch((err) => { error(err.msg || "\u5207\u6362\u767B\u5F55\u5931\u8D25", err); }); }); } /** * 获取登录用户信息 */ getLoginUser() { var _a; return (_a = this.sysAuth.getUser()) == null ? void 0 : _a.user; } /** * 获取客户身份 */ getLoginCustomer() { return this.sysAuth.getUser(); } /** * 获取员工身份 */ getLoginStaff() { return this.sysAuth.getUser(); } /** * 获取登录用户id */ getLoginUserId() { var _a; return ((_a = this.sysAuth.getUser()) == null ? void 0 : _a.userId) || -1; } /** * 获取商家 */ getMerchant() { return resFilter.unifyRemind(httpServer.post(this.settings.apis.getMerchant)); } /** * 获取商家列表 * @returns */ getMerchantList() { return resFilter.unifyRemind(httpServer.post(this.settings.apis.getMerchantList)); } /** * 设置默认商家 * @param merchantId */ setDefaultMerchant(merchantId) { return __async(this, null, function* () { const res = yield resFilter.unifyRemind(httpServer.post(this.settings.apis.setDefaultMerchant, { merchantId })); this.mpCheckToken(); return res; }); } /** * 获取系统用户 * @returns */ getSysUser() { return resFilter.unifyRemind(httpServer.get(this.settings.apis.getUser)); } /** * 获取用户身份 * @returns */ getCustomer() { return resFilter.unifyRemind(httpServer.get(this.settings.apis.getCustomer)); } /** * 获取员工身份 * @returns */ getStaff() { return resFilter.unifyRemind(httpServer.get(this.settings.apis.getStaff)); } /** * 微信授权注册 * @param param 微信小程序登录信息 * @returns */ mpAuthRegister(param) { return this.loginResponse(httpServer.postJson(this.settings.apis.mpAuthRegister, param)); } }; var orgAuth = new OrgAuth(); var isLogin = function() { return orgAuth.isLogin(); }; var getLoginUser = function() { return orgAuth.getLoginUser(); }; var loginUserIsHasPhone = function() { const loginU