UNPKG

castle-haozijunqaq-wx-utils

Version:

development utils for wx

545 lines (525 loc) 19.3 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } } exports.default = { /** * 函数柯里化 * @param fn {function} 需要函数柯里化的函数 * @param args 需要被解耦的参数集 */ $curring: function $curring(fn) { var _this = this; for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { args[_key - 1] = arguments[_key]; } return function () { for (var _len2 = arguments.length, _args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { _args[_key2] = arguments[_key2]; } return fn.call.apply(fn, [_this].concat(_toConsumableArray(args), _args)); }; }, /** * 防抖函数 * @param method 事件触发的操作 * @param delay 多少毫秒内连续触发事件,不会执行 * @returns {Function} */ $debounce: function $debounce(method, delay) { var timer = null; return function () { var self = this; var args = arguments; timer && clearTimeout(timer); timer = setTimeout(function () { method.apply(self, args); }, delay); }; }, /** * 节流函数 * @param method 事件触发的操作 * @param mustRunDelay 间隔多少毫秒需要触发一次事件 */ $throttle: function $throttle(method, mustRunDelay) { var timer = void 0; var args = arguments; var start = void 0; return function loop() { var self = this; var now = Date.now(); if (!start) { start = now; } if (timer) { clearTimeout(timer); } if (now - start >= mustRunDelay) { method.apply(self, args); start = now; } else { timer = setTimeout(function () { loop.apply(self, args); }, 50); } }; }, $getUserInfo: function $getUserInfo(withCredentials, lang) { return new Promise(function (resolve, reject) { wx.getUserInfo({ withCredentials: withCredentials, lang: lang, success: function success(res) { resolve(res); }, fail: function fail(e) { reject(e); } }); }); }, $showModal: function $showModal(title, content) { var showCancel = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true; var cancelText = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : '取消'; var cancelColor = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : '#000000'; var confirmText = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : '确定'; var confirmColor = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : '#576B95'; return new Promise(function (resolve, reject) { wx.showModal({ title: title, content: content, showCancel: showCancel, cancelText: cancelText, cancelColor: cancelColor, confirmText: confirmText, confirmColor: confirmColor, success: function success(res) { resolve(res); }, fail: function fail(e) { reject(e); } }); }); }, $showLoading: function $showLoading(title) { var mask = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; return new Promise(function (resolve, reject) { wx.showLoading({ title: title, mask: mask, success: function success(res) { resolve(res); }, fail: function fail(e) { reject(e); } }); }); }, $showActionSheet: function $showActionSheet(itemList) { var itemColor = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '#000000'; return new Promise(function (resolve, reject) { wx.showActionSheet({ itemList: itemList, itemColor: itemColor, success: function success(res) { resolve(res); }, fail: function fail(e) { reject(e); } }); }); }, $login: function $login(timeout) { return new Promise(function (resolve, reject) { wx.login({ timeout: timeout, success: function success(res) { resolve(res); }, fail: function fail(e) { reject(e); } }); }); }, $getWeRunData: function $getWeRunData() { var _this2 = this; return new Promise(function (resolve, reject) { wx.getWeRunData({ success: function success(res) { resolve(res); }, fail: function fail(e) { if (e.errMsg.includes('auth')) { wx.showModal({ title: '请求授权', content: '小程序需要获取您的微信步数信息', showCancel: false, success: function success() { _this2.$openSetting().then(function (settingData) { if (settingData.authSetting["scope.werun"]) { _this2.$showToast('授权成功'); _this2.$getWeRunData().then(function (res) { resolve(res); }).catch(function (e) { reject(e); }); } else { _this2.$showToast('授权被拒绝'); reject({ errMsg: 'auth refused' }); } }); }, fail: function fail() { reject({ errMsg: 'auth refused' }); } }); } else { _this2.$showToast('获取失败', 'none'); } } }); }); }, $hideToast: function $hideToast() { return new Promise(function (resolve, reject) { wx.hideToast({ success: function success(res) { resolve(res); }, fail: function fail(e) { reject(e); } }); }); }, $hideLoading: function $hideLoading() { return new Promise(function (resolve, reject) { wx.hideLoading({ success: function success(res) { resolve(res); }, fail: function fail(e) { reject(e); } }); }); }, $showToast: function $showToast(title) { var icon = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'success'; var image = arguments[2]; var duration = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 1500; var mask = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false; return new Promise(function (resolve, reject) { wx.showToast({ title: title, icon: icon, image: image, duration: duration, mask: mask, success: function success(res) { resolve(res); }, fail: function fail(e) { reject(e); } }); }); }, $openSetting: function $openSetting() { return new Promise(function (resolve, reject) { wx.openSetting({ success: function success(res) { resolve(res); }, fail: function fail(e) { reject(e); } }); }); }, $canvasToTempFilePath: function $canvasToTempFilePath() { var x = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; var y = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0; var width = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; var height = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null; var destWidth = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : null; var destHeight = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : null; var canvasId = arguments[6]; var fileType = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : 'png'; var quality = arguments[8]; return new Promise(function (resolve, reject) { wx.canvasToTempFilePath({ x: x, y: y, width: width, height: height, destWidth: destWidth, destHeight: destHeight, canvasId: canvasId, fileType: fileType, quality: quality, success: function success(res) { resolve(res); }, fail: function fail(e) { reject(e); } }); }); }, $switchTab: function $switchTab(url) { return new Promise(function (resolve, reject) { wx.switchTab({ url: url, success: function success(res) { resolve(res); }, fail: function fail(e) { reject(e); } }); }); }, $reLaunch: function $reLaunch(url) { return new Promise(function (resolve, reject) { wx.reLaunch({ url: url, success: function success(res) { resolve(res); }, fail: function fail(e) { reject(e); } }); }); }, $redirectTo: function $redirectTo(url) { return new Promise(function (resolve, reject) { wx.redirectTo({ url: url, success: function success(res) { resolve(res); }, fail: function fail(e) { reject(e); } }); }); }, $navigateTo: function $navigateTo(url) { return new Promise(function (resolve, reject) { wx.navigateTo({ url: url, success: function success(res) { resolve(res); }, fail: function fail(e) { reject(e); } }); }); }, $navigateBack: function $navigateBack(delta) { return new Promise(function (resolve, reject) { wx.navigateBack({ delta: delta, success: function success(res) { resolve(res); }, fail: function fail(e) { reject(e); } }); }); }, $chooseImage: function $chooseImage() { var count = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1; var sizeType = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ['original', 'compressed']; var sourceType = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : ['album', 'camera']; return new Promise(function (resolve, reject) { wx.chooseImage({ count: count, sizeType: sizeType, sourceType: sourceType, success: function success(res) { resolve(res); }, fail: function fail(e) { reject(e); } }); }); }, $saveImageToPhotosAlbum: function $saveImageToPhotosAlbum(filePath) { var _this3 = this; var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function () {}; return new Promise(function (resolve, reject) { wx.saveImageToPhotosAlbum({ filePath: filePath, success: function success(res) { _this3.$showToast('保存成功'); }, fail: function fail(e) { if (e.errMsg.includes('auth')) { wx.showModal({ title: '请求授权', content: '小程序需要写入您的相册', showCancel: false, success: function success() { _this3.$openSetting().then(function (settingData) { if (settingData.authSetting["scope.writePhotosAlbum"]) { callback(); _this3.$showToast('授权成功, 请重试保存', 'none'); } else { _this3.$showToast('授权被拒绝', 'none'); reject({ errMsg: 'auth refused' }); } }); }, fail: function fail() { reject({ errMsg: 'auth refused' }); } }); } else { _this3.$showToast('保存失败', 'none'); } } }); }); }, $getSystemInfo: function $getSystemInfo() { return new Promise(function (resolve, reject) { wx.getSystemInfo({ success: function success(res) { resolve(res); }, fail: function fail(e) { reject(e); } }); }); }, $getImageInfo: function $getImageInfo(src) { return new Promise(function (resolve, reject) { wx.getImageInfo({ src: src, success: function success(res) { resolve(res); }, fail: function fail(e) { reject(e); } }); }); }, $setLocal: function $setLocal(key, value) { wx.setStorageSync(key, JSON.stringify(value)); }, $getLocal: function $getLocal(key) { try { var value = wx.getStorageSync(key); if (value) return JSON.parse(value); } catch (e) { console.log(e); } }, $removeLocal: function $removeLocal(key) { wx.removeStorageSync(key); }, $clearLocal: function $clearLocal() { wx.clearStorageSync(); }, $startPullDownRefresh: function $startPullDownRefresh() { return new Promise(function (resolve, reject) { wx.startPullDownRefresh({ success: function success(res) { resolve(res); }, fail: function fail(e) { reject(e); } }); }); }, $stopPullDownRefresh: function $stopPullDownRefresh() { return new Promise(function (resolve, reject) { wx.stopPullDownRefresh({ success: function success(res) { resolve(res); }, fail: function fail(e) { reject(e); } }); }); }, $previewImage: function $previewImage() { var urls = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []; var current = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ''; return new Promise(function (resolve, reject) { wx.previewImage({ urls: urls, current: current, success: function success(res) { resolve(res); }, fail: function fail(e) { reject(e); } }); }); }, $requestPayment: function $requestPayment(timeStamp, nonceStr, pack, signType, paySign) { return new Promise(function (resolve, reject) { wx.requestPayment({ timeStamp: timeStamp, nonceStr: nonceStr, package: pack, signType: signType, paySign: paySign, success: function success(res) { resolve(res); }, fail: function fail(e) { reject(e); } }); }); }, $makePhoneCall: function $makePhoneCall(phoneNumber) { return new Promise(function (resolve, reject) { wx.makePhoneCall({ phoneNumber: phoneNumber, success: function success(res) { resolve(res); }, fail: function fail(e) { reject(e); } }); }); }, $getCurrentMonthLast: function $getCurrentMonthLast() { var date = new Date(); var currentMonth = date.getMonth(); var nextMonth = ++currentMonth; var nextMonthFirstDay = new Date(date.getFullYear(), nextMonth, 1); var oneDay = 1000 * 60 * 60 * 24; var lastTime = new Date(nextMonthFirstDay - oneDay); var month = parseInt(lastTime.getMonth() + 1); var day = lastTime.getDate(); if (month < 10) { month = '0' + month; } if (day < 10) { day = '0' + day; } return new Date(date.getFullYear() + '-' + month + '-' + day); } };