diff --git a/common/qqmap-wx-jssdk.js b/common/qqmap-wx-jssdk.js new file mode 100644 index 0000000..595b65b --- /dev/null +++ b/common/qqmap-wx-jssdk.js @@ -0,0 +1,1122 @@ +/** + * 微信小程序JavaScriptSDK + * + * @version 1.2 + * @date 2019-03-06 + */ + +var ERROR_CONF = { + KEY_ERR: 311, + KEY_ERR_MSG: 'key格式错误', + PARAM_ERR: 310, + PARAM_ERR_MSG: '请求参数信息有误', + SYSTEM_ERR: 600, + SYSTEM_ERR_MSG: '系统错误', + WX_ERR_CODE: 1000, + WX_OK_CODE: 200 +}; +var BASE_URL = 'https://apis.map.qq.com/ws/'; +var URL_SEARCH = BASE_URL + 'place/v1/search'; +var URL_SUGGESTION = BASE_URL + 'place/v1/suggestion'; +var URL_GET_GEOCODER = BASE_URL + 'geocoder/v1/'; +var URL_CITY_LIST = BASE_URL + 'district/v1/list'; +var URL_AREA_LIST = BASE_URL + 'district/v1/getchildren'; +var URL_DISTANCE = BASE_URL + 'distance/v1/'; +var URL_DIRECTION = BASE_URL + 'direction/v1/'; +var MODE = { + driving: 'driving', + transit: 'transit' +}; +var EARTH_RADIUS = 6378136.49; +var Utils = { + /** + * md5加密方法 + * 版权所有©2011 Sebastian Tschan,https://blueimp.net + */ + safeAdd(x, y) { + var lsw = (x & 0xffff) + (y & 0xffff); + var msw = (x >> 16) + (y >> 16) + (lsw >> 16); + return (msw << 16) | (lsw & 0xffff); + }, + bitRotateLeft(num, cnt) { + return (num << cnt) | (num >>> (32 - cnt)); + }, + md5cmn(q, a, b, x, s, t) { + return this.safeAdd(this.bitRotateLeft(this.safeAdd(this.safeAdd(a, q), this.safeAdd(x, t)), s), b); + }, + md5ff(a, b, c, d, x, s, t) { + return this.md5cmn((b & c) | (~b & d), a, b, x, s, t); + }, + md5gg(a, b, c, d, x, s, t) { + return this.md5cmn((b & d) | (c & ~d), a, b, x, s, t); + }, + md5hh(a, b, c, d, x, s, t) { + return this.md5cmn(b ^ c ^ d, a, b, x, s, t); + }, + md5ii(a, b, c, d, x, s, t) { + return this.md5cmn(c ^ (b | ~d), a, b, x, s, t); + }, + binlMD5(x, len) { + /* append padding */ + x[len >> 5] |= 0x80 << (len % 32); + x[((len + 64) >>> 9 << 4) + 14] = len; + + var i; + var olda; + var oldb; + var oldc; + var oldd; + var a = 1732584193; + var b = -271733879; + var c = -1732584194; + var d = 271733878; + + for (i = 0; i < x.length; i += 16) { + olda = a; + oldb = b; + oldc = c; + oldd = d; + + a = this.md5ff(a, b, c, d, x[i], 7, -680876936); + d = this.md5ff(d, a, b, c, x[i + 1], 12, -389564586); + c = this.md5ff(c, d, a, b, x[i + 2], 17, 606105819); + b = this.md5ff(b, c, d, a, x[i + 3], 22, -1044525330); + a = this.md5ff(a, b, c, d, x[i + 4], 7, -176418897); + d = this.md5ff(d, a, b, c, x[i + 5], 12, 1200080426); + c = this.md5ff(c, d, a, b, x[i + 6], 17, -1473231341); + b = this.md5ff(b, c, d, a, x[i + 7], 22, -45705983); + a = this.md5ff(a, b, c, d, x[i + 8], 7, 1770035416); + d = this.md5ff(d, a, b, c, x[i + 9], 12, -1958414417); + c = this.md5ff(c, d, a, b, x[i + 10], 17, -42063); + b = this.md5ff(b, c, d, a, x[i + 11], 22, -1990404162); + a = this.md5ff(a, b, c, d, x[i + 12], 7, 1804603682); + d = this.md5ff(d, a, b, c, x[i + 13], 12, -40341101); + c = this.md5ff(c, d, a, b, x[i + 14], 17, -1502002290); + b = this.md5ff(b, c, d, a, x[i + 15], 22, 1236535329); + + a = this.md5gg(a, b, c, d, x[i + 1], 5, -165796510); + d = this.md5gg(d, a, b, c, x[i + 6], 9, -1069501632); + c = this.md5gg(c, d, a, b, x[i + 11], 14, 643717713); + b = this.md5gg(b, c, d, a, x[i], 20, -373897302); + a = this.md5gg(a, b, c, d, x[i + 5], 5, -701558691); + d = this.md5gg(d, a, b, c, x[i + 10], 9, 38016083); + c = this.md5gg(c, d, a, b, x[i + 15], 14, -660478335); + b = this.md5gg(b, c, d, a, x[i + 4], 20, -405537848); + a = this.md5gg(a, b, c, d, x[i + 9], 5, 568446438); + d = this.md5gg(d, a, b, c, x[i + 14], 9, -1019803690); + c = this.md5gg(c, d, a, b, x[i + 3], 14, -187363961); + b = this.md5gg(b, c, d, a, x[i + 8], 20, 1163531501); + a = this.md5gg(a, b, c, d, x[i + 13], 5, -1444681467); + d = this.md5gg(d, a, b, c, x[i + 2], 9, -51403784); + c = this.md5gg(c, d, a, b, x[i + 7], 14, 1735328473); + b = this.md5gg(b, c, d, a, x[i + 12], 20, -1926607734); + + a = this.md5hh(a, b, c, d, x[i + 5], 4, -378558); + d = this.md5hh(d, a, b, c, x[i + 8], 11, -2022574463); + c = this.md5hh(c, d, a, b, x[i + 11], 16, 1839030562); + b = this.md5hh(b, c, d, a, x[i + 14], 23, -35309556); + a = this.md5hh(a, b, c, d, x[i + 1], 4, -1530992060); + d = this.md5hh(d, a, b, c, x[i + 4], 11, 1272893353); + c = this.md5hh(c, d, a, b, x[i + 7], 16, -155497632); + b = this.md5hh(b, c, d, a, x[i + 10], 23, -1094730640); + a = this.md5hh(a, b, c, d, x[i + 13], 4, 681279174); + d = this.md5hh(d, a, b, c, x[i], 11, -358537222); + c = this.md5hh(c, d, a, b, x[i + 3], 16, -722521979); + b = this.md5hh(b, c, d, a, x[i + 6], 23, 76029189); + a = this.md5hh(a, b, c, d, x[i + 9], 4, -640364487); + d = this.md5hh(d, a, b, c, x[i + 12], 11, -421815835); + c = this.md5hh(c, d, a, b, x[i + 15], 16, 530742520); + b = this.md5hh(b, c, d, a, x[i + 2], 23, -995338651); + + a = this.md5ii(a, b, c, d, x[i], 6, -198630844); + d = this.md5ii(d, a, b, c, x[i + 7], 10, 1126891415); + c = this.md5ii(c, d, a, b, x[i + 14], 15, -1416354905); + b = this.md5ii(b, c, d, a, x[i + 5], 21, -57434055); + a = this.md5ii(a, b, c, d, x[i + 12], 6, 1700485571); + d = this.md5ii(d, a, b, c, x[i + 3], 10, -1894986606); + c = this.md5ii(c, d, a, b, x[i + 10], 15, -1051523); + b = this.md5ii(b, c, d, a, x[i + 1], 21, -2054922799); + a = this.md5ii(a, b, c, d, x[i + 8], 6, 1873313359); + d = this.md5ii(d, a, b, c, x[i + 15], 10, -30611744); + c = this.md5ii(c, d, a, b, x[i + 6], 15, -1560198380); + b = this.md5ii(b, c, d, a, x[i + 13], 21, 1309151649); + a = this.md5ii(a, b, c, d, x[i + 4], 6, -145523070); + d = this.md5ii(d, a, b, c, x[i + 11], 10, -1120210379); + c = this.md5ii(c, d, a, b, x[i + 2], 15, 718787259); + b = this.md5ii(b, c, d, a, x[i + 9], 21, -343485551); + + a = this.safeAdd(a, olda); + b = this.safeAdd(b, oldb); + c = this.safeAdd(c, oldc); + d = this.safeAdd(d, oldd); + } + return [a, b, c, d]; + }, + binl2rstr(input) { + var i; + var output = ''; + var length32 = input.length * 32; + for (i = 0; i < length32; i += 8) { + output += String.fromCharCode((input[i >> 5] >>> (i % 32)) & 0xff); + } + return output; + }, + rstr2binl(input) { + var i; + var output = []; + output[(input.length >> 2) - 1] = undefined; + for (i = 0; i < output.length; i += 1) { + output[i] = 0; + } + var length8 = input.length * 8; + for (i = 0; i < length8; i += 8) { + output[i >> 5] |= (input.charCodeAt(i / 8) & 0xff) << (i % 32); + } + return output; + }, + rstrMD5(s) { + return this.binl2rstr(this.binlMD5(this.rstr2binl(s), s.length * 8)); + }, + rstrHMACMD5(key, data) { + var i; + var bkey = this.rstr2binl(key); + var ipad = []; + var opad = []; + var hash; + ipad[15] = opad[15] = undefined; + if (bkey.length > 16) { + bkey = this.binlMD5(bkey, key.length * 8); + } + for (i = 0; i < 16; i += 1) { + ipad[i] = bkey[i] ^ 0x36363636; + opad[i] = bkey[i] ^ 0x5c5c5c5c; + } + hash = this.binlMD5(ipad.concat(this.rstr2binl(data)), 512 + data.length * 8); + return this.binl2rstr(this.binlMD5(opad.concat(hash), 512 + 128)); + }, + rstr2hex(input) { + var hexTab = '0123456789abcdef'; + var output = ''; + var x; + var i; + for (i = 0; i < input.length; i += 1) { + x = input.charCodeAt(i); + output += hexTab.charAt((x >>> 4) & 0x0f) + hexTab.charAt(x & 0x0f); + } + return output; + }, + str2rstrUTF8(input) { + return unescape(encodeURIComponent(input)); + }, + rawMD5(s) { + return this.rstrMD5(this.str2rstrUTF8(s)); + }, + hexMD5(s) { + return this.rstr2hex(this.rawMD5(s)); + }, + rawHMACMD5(k, d) { + return this.rstrHMACMD5(this.str2rstrUTF8(k), str2rstrUTF8(d)); + }, + hexHMACMD5(k, d) { + return this.rstr2hex(this.rawHMACMD5(k, d)); + }, + + md5(string, key, raw) { + if (!key) { + if (!raw) { + return this.hexMD5(string); + } + return this.rawMD5(string); + } + if (!raw) { + return this.hexHMACMD5(key, string); + } + return this.rawHMACMD5(key, string); + }, + /** + * 得到md5加密后的sig参数 + * @param {Object} requestParam 接口参数 + * @param {String} sk签名字符串 + * @param {String} featrue 方法名 + * @return 返回加密后的sig参数 + */ + getSig(requestParam, sk, feature, mode) { + var sig = null; + var requestArr = []; + Object.keys(requestParam).sort().forEach(function(key){ + requestArr.push(key + '=' + requestParam[key]); + }); + if (feature == 'search') { + sig = '/ws/place/v1/search?' + requestArr.join('&') + sk; + } + if (feature == 'suggest') { + sig = '/ws/place/v1/suggestion?' + requestArr.join('&') + sk; + } + if (feature == 'reverseGeocoder') { + sig = '/ws/geocoder/v1/?' + requestArr.join('&') + sk; + } + if (feature == 'geocoder') { + sig = '/ws/geocoder/v1/?' + requestArr.join('&') + sk; + } + if (feature == 'getCityList') { + sig = '/ws/district/v1/list?' + requestArr.join('&') + sk; + } + if (feature == 'getDistrictByCityId') { + sig = '/ws/district/v1/getchildren?' + requestArr.join('&') + sk; + } + if (feature == 'calculateDistance') { + sig = '/ws/distance/v1/?' + requestArr.join('&') + sk; + } + if (feature == 'direction') { + sig = '/ws/direction/v1/' + mode + '?' + requestArr.join('&') + sk; + } + sig = this.md5(sig); + return sig; + }, + /** + * 得到终点query字符串 + * @param {Array|String} 检索数据 + */ + location2query(data) { + if (typeof data == 'string') { + return data; + } + var query = ''; + for (var i = 0; i < data.length; i++) { + var d = data[i]; + if (!!query) { + query += ';'; + } + if (d.location) { + query = query + d.location.lat + ',' + d.location.lng; + } + if (d.latitude && d.longitude) { + query = query + d.latitude + ',' + d.longitude; + } + } + return query; + }, + + /** + * 计算角度 + */ + rad(d) { + return d * Math.PI / 180.0; + }, + /** + * 处理终点location数组 + * @return 返回终点数组 + */ + getEndLocation(location){ + var to = location.split(';'); + var endLocation = []; + for (var i = 0; i < to.length; i++) { + endLocation.push({ + lat: parseFloat(to[i].split(',')[0]), + lng: parseFloat(to[i].split(',')[1]) + }) + } + return endLocation; + }, + + /** + * 计算两点间直线距离 + * @param a 表示纬度差 + * @param b 表示经度差 + * @return 返回的是距离,单位m + */ + getDistance(latFrom, lngFrom, latTo, lngTo) { + var radLatFrom = this.rad(latFrom); + var radLatTo = this.rad(latTo); + var a = radLatFrom - radLatTo; + var b = this.rad(lngFrom) - this.rad(lngTo); + var distance = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) + Math.cos(radLatFrom) * Math.cos(radLatTo) * Math.pow(Math.sin(b / 2), 2))); + distance = distance * EARTH_RADIUS; + distance = Math.round(distance * 10000) / 10000; + return parseFloat(distance.toFixed(0)); + }, + /** + * 使用微信接口进行定位 + */ + getWXLocation(success, fail, complete) { + wx.getLocation({ + type: 'gcj02', + success: success, + fail: fail, + complete: complete + }); + }, + + /** + * 获取location参数 + */ + getLocationParam(location) { + if (typeof location == 'string') { + var locationArr = location.split(','); + if (locationArr.length === 2) { + location = { + latitude: location.split(',')[0], + longitude: location.split(',')[1] + }; + } else { + location = {}; + } + } + return location; + }, + + /** + * 回调函数默认处理 + */ + polyfillParam(param) { + param.success = param.success || function () { }; + param.fail = param.fail || function () { }; + param.complete = param.complete || function () { }; + }, + + /** + * 验证param对应的key值是否为空 + * + * @param {Object} param 接口参数 + * @param {String} key 对应参数的key + */ + checkParamKeyEmpty(param, key) { + if (!param[key]) { + var errconf = this.buildErrorConfig(ERROR_CONF.PARAM_ERR, ERROR_CONF.PARAM_ERR_MSG + key +'参数格式有误'); + param.fail(errconf); + param.complete(errconf); + return true; + } + return false; + }, + + /** + * 验证参数中是否存在检索词keyword + * + * @param {Object} param 接口参数 + */ + checkKeyword(param){ + return !this.checkParamKeyEmpty(param, 'keyword'); + }, + + /** + * 验证location值 + * + * @param {Object} param 接口参数 + */ + checkLocation(param) { + var location = this.getLocationParam(param.location); + if (!location || !location.latitude || !location.longitude) { + var errconf = this.buildErrorConfig(ERROR_CONF.PARAM_ERR, ERROR_CONF.PARAM_ERR_MSG + ' location参数格式有误'); + param.fail(errconf); + param.complete(errconf); + return false; + } + return true; + }, + + /** + * 构造错误数据结构 + * @param {Number} errCode 错误码 + * @param {Number} errMsg 错误描述 + */ + buildErrorConfig(errCode, errMsg) { + return { + status: errCode, + message: errMsg + }; + }, + + /** + * + * 数据处理函数 + * 根据传入参数不同处理不同数据 + * @param {String} feature 功能名称 + * search 地点搜索 + * suggest关键词提示 + * reverseGeocoder逆地址解析 + * geocoder地址解析 + * getCityList获取城市列表:父集 + * getDistrictByCityId获取区县列表:子集 + * calculateDistance距离计算 + * @param {Object} param 接口参数 + * @param {Object} data 数据 + */ + handleData(param,data,feature){ + if (feature == 'search') { + var searchResult = data.data; + var searchSimplify = []; + for (var i = 0; i < searchResult.length; i++) { + searchSimplify.push({ + id: searchResult[i].id || null, + title: searchResult[i].title || null, + latitude: searchResult[i].location && searchResult[i].location.lat || null, + longitude: searchResult[i].location && searchResult[i].location.lng || null, + address: searchResult[i].address || null, + category: searchResult[i].category || null, + tel: searchResult[i].tel || null, + adcode: searchResult[i].ad_info && searchResult[i].ad_info.adcode || null, + city: searchResult[i].ad_info && searchResult[i].ad_info.city || null, + district: searchResult[i].ad_info && searchResult[i].ad_info.district || null, + province: searchResult[i].ad_info && searchResult[i].ad_info.province || null + }) + } + param.success(data, { + searchResult: searchResult, + searchSimplify: searchSimplify + }) + } else if (feature == 'suggest') { + var suggestResult = data.data; + var suggestSimplify = []; + for (var i = 0; i < suggestResult.length; i++) { + suggestSimplify.push({ + adcode: suggestResult[i].adcode || null, + address: suggestResult[i].address || null, + category: suggestResult[i].category || null, + city: suggestResult[i].city || null, + district: suggestResult[i].district || null, + id: suggestResult[i].id || null, + latitude: suggestResult[i].location && suggestResult[i].location.lat || null, + longitude: suggestResult[i].location && suggestResult[i].location.lng || null, + province: suggestResult[i].province || null, + title: suggestResult[i].title || null, + type: suggestResult[i].type || null + }) + } + param.success(data, { + suggestResult: suggestResult, + suggestSimplify: suggestSimplify + }) + } else if (feature == 'reverseGeocoder') { + var reverseGeocoderResult = data.result; + var reverseGeocoderSimplify = { + address: reverseGeocoderResult.address || null, + latitude: reverseGeocoderResult.location && reverseGeocoderResult.location.lat || null, + longitude: reverseGeocoderResult.location && reverseGeocoderResult.location.lng || null, + adcode: reverseGeocoderResult.ad_info && reverseGeocoderResult.ad_info.adcode || null, + city: reverseGeocoderResult.address_component && reverseGeocoderResult.address_component.city || null, + district: reverseGeocoderResult.address_component && reverseGeocoderResult.address_component.district || null, + nation: reverseGeocoderResult.address_component && reverseGeocoderResult.address_component.nation || null, + province: reverseGeocoderResult.address_component && reverseGeocoderResult.address_component.province || null, + street: reverseGeocoderResult.address_component && reverseGeocoderResult.address_component.street || null, + street_number: reverseGeocoderResult.address_component && reverseGeocoderResult.address_component.street_number || null, + recommend: reverseGeocoderResult.formatted_addresses && reverseGeocoderResult.formatted_addresses.recommend || null, + rough: reverseGeocoderResult.formatted_addresses && reverseGeocoderResult.formatted_addresses.rough || null + }; + if (reverseGeocoderResult.pois) {//判断是否返回周边poi + var pois = reverseGeocoderResult.pois; + var poisSimplify = []; + for (var i = 0;i < pois.length;i++) { + poisSimplify.push({ + id: pois[i].id || null, + title: pois[i].title || null, + latitude: pois[i].location && pois[i].location.lat || null, + longitude: pois[i].location && pois[i].location.lng || null, + address: pois[i].address || null, + category: pois[i].category || null, + adcode: pois[i].ad_info && pois[i].ad_info.adcode || null, + city: pois[i].ad_info && pois[i].ad_info.city || null, + district: pois[i].ad_info && pois[i].ad_info.district || null, + province: pois[i].ad_info && pois[i].ad_info.province || null + }) + } + param.success(data,{ + reverseGeocoderResult: reverseGeocoderResult, + reverseGeocoderSimplify: reverseGeocoderSimplify, + pois: pois, + poisSimplify: poisSimplify + }) + } else { + param.success(data, { + reverseGeocoderResult: reverseGeocoderResult, + reverseGeocoderSimplify: reverseGeocoderSimplify + }) + } + } else if (feature == 'geocoder') { + var geocoderResult = data.result; + var geocoderSimplify = { + title: geocoderResult.title || null, + latitude: geocoderResult.location && geocoderResult.location.lat || null, + longitude: geocoderResult.location && geocoderResult.location.lng || null, + adcode: geocoderResult.ad_info && geocoderResult.ad_info.adcode || null, + province: geocoderResult.address_components && geocoderResult.address_components.province || null, + city: geocoderResult.address_components && geocoderResult.address_components.city || null, + district: geocoderResult.address_components && geocoderResult.address_components.district || null, + street: geocoderResult.address_components && geocoderResult.address_components.street || null, + street_number: geocoderResult.address_components && geocoderResult.address_components.street_number || null, + level: geocoderResult.level || null + }; + param.success(data,{ + geocoderResult: geocoderResult, + geocoderSimplify: geocoderSimplify + }); + } else if (feature == 'getCityList') { + var provinceResult = data.result[0]; + var cityResult = data.result[1]; + var districtResult = data.result[2]; + param.success(data,{ + provinceResult: provinceResult, + cityResult: cityResult, + districtResult: districtResult + }); + } else if (feature == 'getDistrictByCityId') { + var districtByCity = data.result[0]; + param.success(data, districtByCity); + } else if (feature == 'calculateDistance') { + var calculateDistanceResult = data.result.elements; + var distance = []; + for (var i = 0; i < calculateDistanceResult.length; i++){ + distance.push(calculateDistanceResult[i].distance); + } + param.success(data, { + calculateDistanceResult: calculateDistanceResult, + distance: distance + }); + } else if (feature == 'direction') { + var direction = data.result.routes; + param.success(data,direction); + } else { + param.success(data); + } + }, + + /** + * 构造微信请求参数,公共属性处理 + * + * @param {Object} param 接口参数 + * @param {Object} param 配置项 + * @param {String} feature 方法名 + */ + buildWxRequestConfig(param, options, feature) { + var that = this; + options.header = { "content-type": "application/json" }; + options.method = 'GET'; + options.success = function (res) { + var data = res.data; + if (data.status === 0) { + that.handleData(param, data, feature); + } else { + param.fail(data); + } + }; + options.fail = function (res) { + res.statusCode = ERROR_CONF.WX_ERR_CODE; + param.fail(that.buildErrorConfig(ERROR_CONF.WX_ERR_CODE, res.errMsg)); + }; + options.complete = function (res) { + var statusCode = +res.statusCode; + switch(statusCode) { + case ERROR_CONF.WX_ERR_CODE: { + param.complete(that.buildErrorConfig(ERROR_CONF.WX_ERR_CODE, res.errMsg)); + break; + } + case ERROR_CONF.WX_OK_CODE: { + var data = res.data; + if (data.status === 0) { + param.complete(data); + } else { + param.complete(that.buildErrorConfig(data.status, data.message)); + } + break; + } + default:{ + param.complete(that.buildErrorConfig(ERROR_CONF.SYSTEM_ERR, ERROR_CONF.SYSTEM_ERR_MSG)); + } + + } + }; + return options; + }, + + /** + * 处理用户参数是否传入坐标进行不同的处理 + */ + locationProcess(param, locationsuccess, locationfail, locationcomplete) { + var that = this; + locationfail = locationfail || function (res) { + res.statusCode = ERROR_CONF.WX_ERR_CODE; + param.fail(that.buildErrorConfig(ERROR_CONF.WX_ERR_CODE, res.errMsg)); + }; + locationcomplete = locationcomplete || function (res) { + if (res.statusCode == ERROR_CONF.WX_ERR_CODE) { + param.complete(that.buildErrorConfig(ERROR_CONF.WX_ERR_CODE, res.errMsg)); + } + }; + if (!param.location) { + that.getWXLocation(locationsuccess, locationfail, locationcomplete); + } else if (that.checkLocation(param)) { + var location = Utils.getLocationParam(param.location); + locationsuccess(location); + } + } +}; + + +class QQMapWX { + + /** + * 构造函数 + * + * @param {Object} options 接口参数,key 为必选参数 + */ + constructor(options) { + if (!options.key) { + throw Error('key值不能为空'); + } + this.key = options.key; + }; + + /** + * POI周边检索 + * + * @param {Object} options 接口参数对象 + * + * 参数对象结构可以参考 + * @see http://lbs.qq.com/webservice_v1/guide-search.html + */ + search(options) { + var that = this; + options = options || {}; + + Utils.polyfillParam(options); + + if (!Utils.checkKeyword(options)) { + return; + } + + var requestParam = { + keyword: options.keyword, + orderby: options.orderby || '_distance', + page_size: options.page_size || 10, + page_index: options.page_index || 1, + output: 'json', + key: that.key + }; + + if (options.address_format) { + requestParam.address_format = options.address_format; + } + + if (options.filter) { + requestParam.filter = options.filter; + } + + var distance = options.distance || "1000"; + var auto_extend = options.auto_extend || 1; + var region = null; + var rectangle = null; + + //判断城市限定参数 + if (options.region) { + region = options.region; + } + + //矩形限定坐标(暂时只支持字符串格式) + if (options.rectangle) { + rectangle = options.rectangle; + } + + var locationsuccess = function (result) { + if (region && !rectangle) { + //城市限定参数拼接 + requestParam.boundary = "region(" + region + "," + auto_extend + "," + result.latitude + "," + result.longitude + ")"; + if (options.sig) { + requestParam.sig = Utils.getSig(requestParam, options.sig, 'search'); + } + } else if (rectangle && !region) { + //矩形搜索 + requestParam.boundary = "rectangle(" + rectangle + ")"; + if (options.sig) { + requestParam.sig = Utils.getSig(requestParam, options.sig, 'search'); + } + } else { + requestParam.boundary = "nearby(" + result.latitude + "," + result.longitude + "," + distance + "," + auto_extend + ")"; + if (options.sig) { + requestParam.sig = Utils.getSig(requestParam, options.sig, 'search'); + } + } + wx.request(Utils.buildWxRequestConfig(options, { + url: URL_SEARCH, + data: requestParam + }, 'search')); + }; + Utils.locationProcess(options, locationsuccess); + }; + + /** + * sug模糊检索 + * + * @param {Object} options 接口参数对象 + * + * 参数对象结构可以参考 + * http://lbs.qq.com/webservice_v1/guide-suggestion.html + */ + getSuggestion(options) { + var that = this; + options = options || {}; + Utils.polyfillParam(options); + + if (!Utils.checkKeyword(options)) { + return; + } + + var requestParam = { + keyword: options.keyword, + region: options.region || '全国', + region_fix: options.region_fix || 0, + policy: options.policy || 0, + page_size: options.page_size || 10,//控制显示条数 + page_index: options.page_index || 1,//控制页数 + get_subpois : options.get_subpois || 0,//返回子地点 + output: 'json', + key: that.key + }; + //长地址 + if (options.address_format) { + requestParam.address_format = options.address_format; + } + //过滤 + if (options.filter) { + requestParam.filter = options.filter; + } + //排序 + if (options.location) { + var locationsuccess = function (result) { + requestParam.location = result.latitude + ',' + result.longitude; + if (options.sig) { + requestParam.sig = Utils.getSig(requestParam, options.sig, 'suggest'); + } + wx.request(Utils.buildWxRequestConfig(options, { + url: URL_SUGGESTION, + data: requestParam + }, "suggest")); + }; + Utils.locationProcess(options, locationsuccess); + } else { + if (options.sig) { + requestParam.sig = Utils.getSig(requestParam, options.sig, 'suggest'); + } + wx.request(Utils.buildWxRequestConfig(options, { + url: URL_SUGGESTION, + data: requestParam + }, "suggest")); + } + }; + + /** + * 逆地址解析 + * + * @param {Object} options 接口参数对象 + * + * 请求参数结构可以参考 + * http://lbs.qq.com/webservice_v1/guide-gcoder.html + */ + reverseGeocoder(options) { + var that = this; + options = options || {}; + Utils.polyfillParam(options); + var requestParam = { + coord_type: options.coord_type || 5, + get_poi: options.get_poi || 0, + output: 'json', + key: that.key + }; + if (options.poi_options) { + requestParam.poi_options = options.poi_options + } + + var locationsuccess = function (result) { + requestParam.location = result.latitude + ',' + result.longitude; + if (options.sig) { + requestParam.sig = Utils.getSig(requestParam, options.sig, 'reverseGeocoder'); + } + wx.request(Utils.buildWxRequestConfig(options, { + url: URL_GET_GEOCODER, + data: requestParam + }, 'reverseGeocoder')); + }; + Utils.locationProcess(options, locationsuccess); + }; + + /** + * 地址解析 + * + * @param {Object} options 接口参数对象 + * + * 请求参数结构可以参考 + * http://lbs.qq.com/webservice_v1/guide-geocoder.html + */ + geocoder(options) { + var that = this; + options = options || {}; + Utils.polyfillParam(options); + + if (Utils.checkParamKeyEmpty(options, 'address')) { + return; + } + + var requestParam = { + address: options.address, + output: 'json', + key: that.key + }; + + //城市限定 + if (options.region) { + requestParam.region = options.region; + } + + if (options.sig) { + requestParam.sig = Utils.getSig(requestParam, options.sig, 'geocoder'); + } + + wx.request(Utils.buildWxRequestConfig(options, { + url: URL_GET_GEOCODER, + data: requestParam + },'geocoder')); + }; + + + /** + * 获取城市列表 + * + * @param {Object} options 接口参数对象 + * + * 请求参数结构可以参考 + * http://lbs.qq.com/webservice_v1/guide-region.html + */ + getCityList(options) { + var that = this; + options = options || {}; + Utils.polyfillParam(options); + var requestParam = { + output: 'json', + key: that.key + }; + + if (options.sig) { + requestParam.sig = Utils.getSig(requestParam, options.sig, 'getCityList'); + } + + wx.request(Utils.buildWxRequestConfig(options, { + url: URL_CITY_LIST, + data: requestParam + },'getCityList')); + }; + + /** + * 获取对应城市ID的区县列表 + * + * @param {Object} options 接口参数对象 + * + * 请求参数结构可以参考 + * http://lbs.qq.com/webservice_v1/guide-region.html + */ + getDistrictByCityId(options) { + var that = this; + options = options || {}; + Utils.polyfillParam(options); + + if (Utils.checkParamKeyEmpty(options, 'id')) { + return; + } + + var requestParam = { + id: options.id || '', + output: 'json', + key: that.key + }; + + if (options.sig) { + requestParam.sig = Utils.getSig(requestParam, options.sig, 'getDistrictByCityId'); + } + + wx.request(Utils.buildWxRequestConfig(options, { + url: URL_AREA_LIST, + data: requestParam + },'getDistrictByCityId')); + }; + + /** + * 用于单起点到多终点的路线距离(非直线距离)计算: + * 支持两种距离计算方式:步行和驾车。 + * 起点到终点最大限制直线距离10公里。 + * + * 新增直线距离计算。 + * + * @param {Object} options 接口参数对象 + * + * 请求参数结构可以参考 + * http://lbs.qq.com/webservice_v1/guide-distance.html + */ + calculateDistance(options) { + var that = this; + options = options || {}; + Utils.polyfillParam(options); + + if (Utils.checkParamKeyEmpty(options, 'to')) { + return; + } + + var requestParam = { + mode: options.mode || 'walking', + to: Utils.location2query(options.to), + output: 'json', + key: that.key + }; + + if (options.from) { + options.location = options.from; + } + + //计算直线距离 + if(requestParam.mode == 'straight'){ + var locationsuccess = function (result) { + var locationTo = Utils.getEndLocation(requestParam.to);//处理终点坐标 + var data = { + message:"query ok", + result:{ + elements:[] + }, + status:0 + }; + for (var i = 0; i < locationTo.length; i++) { + data.result.elements.push({//将坐标存入 + distance: Utils.getDistance(result.latitude, result.longitude, locationTo[i].lat, locationTo[i].lng), + duration:0, + from:{ + lat: result.latitude, + lng:result.longitude + }, + to:{ + lat: locationTo[i].lat, + lng: locationTo[i].lng + } + }); + } + var calculateResult = data.result.elements; + var distanceResult = []; + for (var i = 0; i < calculateResult.length; i++) { + distanceResult.push(calculateResult[i].distance); + } + return options.success(data,{ + calculateResult: calculateResult, + distanceResult: distanceResult + }); + }; + + Utils.locationProcess(options, locationsuccess); + } else { + var locationsuccess = function (result) { + requestParam.from = result.latitude + ',' + result.longitude; + if (options.sig) { + requestParam.sig = Utils.getSig(requestParam, options.sig, 'calculateDistance'); + } + wx.request(Utils.buildWxRequestConfig(options, { + url: URL_DISTANCE, + data: requestParam + },'calculateDistance')); + }; + + Utils.locationProcess(options, locationsuccess); + } + }; + + /** + * 路线规划: + * + * @param {Object} options 接口参数对象 + * + * 请求参数结构可以参考 + * https://lbs.qq.com/webservice_v1/guide-road.html + */ + direction(options) { + var that = this; + options = options || {}; + Utils.polyfillParam(options); + + if (Utils.checkParamKeyEmpty(options, 'to')) { + return; + } + + var requestParam = { + output: 'json', + key: that.key + }; + + //to格式处理 + if (typeof options.to == 'string') { + requestParam.to = options.to; + } else { + requestParam.to = options.to.latitude + ',' + options.to.longitude; + } + //初始化局部请求域名 + var SET_URL_DIRECTION = null; + //设置默认mode属性 + options.mode = options.mode || MODE.driving; + + //设置请求域名 + SET_URL_DIRECTION = URL_DIRECTION + options.mode; + + if (options.from) { + options.location = options.from; + } + + if (options.mode == MODE.driving) { + if (options.from_poi) { + requestParam.from_poi = options.from_poi; + } + if (options.heading) { + requestParam.heading = options.heading; + } + if (options.speed) { + requestParam.speed = options.speed; + } + if (options.accuracy) { + requestParam.accuracy = options.accuracy; + } + if (options.road_type) { + requestParam.road_type = options.road_type; + } + if (options.to_poi) { + requestParam.to_poi = options.to_poi; + } + if (options.from_track) { + requestParam.from_track = options.from_track; + } + if (options.waypoints) { + requestParam.waypoints = options.waypoints; + } + if (options.policy) { + requestParam.policy = options.policy; + } + if (options.plate_number) { + requestParam.plate_number = options.plate_number; + } + } + + if (options.mode == MODE.transit) { + if (options.departure_time) { + requestParam.departure_time = options.departure_time; + } + if (options.policy) { + requestParam.policy = options.policy; + } + } + + var locationsuccess = function (result) { + requestParam.from = result.latitude + ',' + result.longitude; + if (options.sig) { + requestParam.sig = Utils.getSig(requestParam, options.sig, 'direction',options.mode); + } + wx.request(Utils.buildWxRequestConfig(options, { + url: SET_URL_DIRECTION, + data: requestParam + }, 'direction')); + }; + + Utils.locationProcess(options, locationsuccess); + } +}; + +module.exports = QQMapWX; \ No newline at end of file diff --git a/components/MapComponent.vue b/components/MapComponent.vue index 9f99f82..84e27e1 100644 --- a/components/MapComponent.vue +++ b/components/MapComponent.vue @@ -1,420 +1,527 @@ \ No newline at end of file + @keyframes spin { + 0% { + transform: rotate(0deg); + } + + 100% { + transform: rotate(360deg); + } + } + + + \ No newline at end of file diff --git a/config/url.js b/config/url.js index 7a65808..14bcd66 100644 --- a/config/url.js +++ b/config/url.js @@ -1,5 +1,5 @@ -export const URL = "https://my.gxfs123.com/api" //正式服务器 -// export const URL = "https://unifans.gxfs123.com/api" //测试服务器 -// export const URL = "http://192.168.10.31:8080" //本地调试 +// export const URL = "https://my.gxfs123.com/api" //正式服务器 +export const URL = "https://fansdev.gxfs123.com/api" //测试服务器 +// export const URL = "http://192.168.10.69:8080" //本地调试 export const appid = "wx2165f0be356ae7a9" //小程序appid \ No newline at end of file diff --git a/config/user.js b/config/user.js index 1b833fd..bc241c7 100644 --- a/config/user.js +++ b/config/user.js @@ -2,88 +2,88 @@ import request from './http' export const login = (data) => { - return request({ - url: '/app/user/login', - method: 'get', - data - }) + return request({ + url: '/app/user/login', + method: 'get', + data + }) } export const getMyIndexInfo = (data) => { - return request({ - url: '/app/user/userInfo', - method: 'get', - data, - }) + return request({ + url: '/app/user/userInfo', + method: 'get', + data, + }) } // 添加押金提现API export const withdrawDeposit = (orderNo) => { - console.log('调用提现API,订单号:', orderNo) - return request({ - url: `/app/withdraw/add/${orderNo}`, - method: 'get', - hideLoading: true - }) + console.log('调用提现API,订单号:', orderNo) + return request({ + url: `/app/withdraw/add/${orderNo}`, + method: 'get', + hideLoading: true + }) } //获取所有全部订单 export const getOrderList = (data) => { - return request({ - url: '/app/order/list', - method: 'get', - data, - hideLoading:true - }) + return request({ + url: '/app/order/list', + method: 'get', + data, + hideLoading: true + }) } //查询是否有订单 export const queryHasOrder = (deviceNo) => { - return request({ - url: `/app/order/list?deviceNo=${deviceNo}&orderStatus=in_used`, - method: 'get', - }) + return request({ + url: `/app/order/list?deviceNo=${deviceNo}&orderStatus=in_used`, + method: 'get', + }) } // 查询指定设备号下,特定状态的订单列表 export const checkOrdersByStatus = (deviceNo, statuses) => { - // statuses 是一个包含状态字符串的数组,例如 ['in_used', 'waiting_for_payment'] - const statusQuery = statuses.join(','); // 后端需要支持逗号分隔的状态查询 - return request({ - url: `/app/order/list?deviceNo=${deviceNo}&orderStatus=${statusQuery}`, - method: 'get', - hideLoading: true, // 隐藏加载提示,避免干扰用户 - ignoreEmptyError: true // 添加标记,表示即使返回空数据也不视为错误 - }) + // statuses 是一个包含状态字符串的数组,例如 ['in_used', 'waiting_for_payment'] + const statusQuery = statuses.join(','); // 后端需要支持逗号分隔的状态查询 + return request({ + url: `/app/order/list?deviceNo=${deviceNo}&orderStatus=${statusQuery}`, + method: 'get', + hideLoading: true, // 隐藏加载提示,避免干扰用户 + ignoreEmptyError: true // 添加标记,表示即使返回空数据也不视为错误 + }) } //设备查询 export const getDeviceInfo = (deviceNo) => { - return request({ - url: `/app/device/${deviceNo}`, - method: 'get', - }) + return request({ + url: `/app/device/${deviceNo}`, + method: 'get', + }) } //创建订单 export const createOrder = (data) => { - return request({ - url: '/app/order/add', - method: 'post', - data, - }) + return request({ + url: '/app/order/add', + method: 'post', + data, + }) } //查询订单 export const queryById = (id) => { - console.log(`查询订单详情, orderId: ${id}`) - return request({ - url: `/app/order/${id}`, - method: 'get', - hideLoading: true - }) + console.log(`查询订单详情, orderId: ${id}`) + return request({ + url: `/app/order/${id}`, + method: 'get', + hideLoading: true + }) } @@ -99,94 +99,109 @@ export const cancelOrder = (data) => { //结束订单 export const overOrderById = (orderId) => { - console.log(`调用结束订单API, orderId: ${orderId}`) - return request({ - url: `/app/order/close/${orderId}`, - method: 'get', - }) + console.log(`调用结束订单API, orderId: ${orderId}`) + return request({ + url: `/app/order/close/${orderId}`, + method: 'get', + }) } //立即租借 export const rentPowerBank = (deviceNo, phone) => { - return request({ - url: '/app/device/rentPowerBank', - method: 'post', - data: { deviceNo, phone } - }) + return request({ + url: '/app/device/rentPowerBank', + method: 'post', + data: { + deviceNo, + phone + } + }) } //确认支付并弹出风扇 export const confirmPaymentAndRent = (orderId) => { - console.log(`确认支付并弹出风扇, orderId: ${orderId}`) - return request({ - url: `/app/device/confirmPaymentAndRent?orderId=${orderId}`, - method: 'GET' - }) + console.log(`确认支付并弹出风扇, orderId: ${orderId}`) + return request({ + url: `/app/device/confirmPaymentAndRent?orderId=${orderId}`, + method: 'GET' + }) } //投诉反馈 export const addUserFeedback = (data) => { - return request({ - url: '/app/feedback/add', - method: 'post', - data, - }) + return request({ + url: '/app/feedback/add', + method: 'post', + data, + }) } //强制打开空格子 export const forcefOpenEmptyGrid = (deviceNo) => { - console.log(`强制打开空格子, deviceNo: ${deviceNo}`) - return request({ - url: `/app/device/forcef/${deviceNo}`, - method: 'post' - }) + console.log(`强制打开空格子, deviceNo: ${deviceNo}`) + return request({ + url: `/app/device/forcef/${deviceNo}`, + method: 'post' + }) } // 通过订单号获取订单信息 export const getOrderByOrderNo = (orderNo) => { - return request({ - url: `/app/order/byOrderNo/${orderNo}`, - method: 'get', - hideLoading: true - }) + return request({ + url: `/app/order/byOrderNo/${orderNo}`, + method: 'get', + hideLoading: true + }) } // 通过订单号获取支付分订单信息 export const getOrderByOrderNoScore = (orderNo) => { - console.log('通过订单号获取支付分订单信息',orderNo); - return request({ - url: `/app/wx-payment/score/create/${orderNo}`, - method: 'get', - hideLoading: true - }) + console.log('通过订单号获取支付分订单信息', orderNo); + return request({ + url: `/app/wx-payment/score/create/${orderNo}`, + method: 'get', + hideLoading: true + }) } export const getOrderByOrderNoScorePayStatus = (orderNo) => { - console.log('通过订单号获取支付分订单状态',orderNo); - return request({ - url: `/app/wx-payment/score/status/${orderNo}`, - method: 'get', - hideLoading: true - }) + console.log('通过订单号获取支付分订单状态', orderNo); + return request({ + url: `/app/wx-payment/score/status/${orderNo}`, + method: 'get', + hideLoading: true + }) } // 更新订单套餐信息 export const updateOrderPackage = (data) => { - console.log('更新订单套餐信息:', data) - return request({ - url: '/app/device/updateOrderPackage', - method: 'post', - data - }) + console.log('更新订单套餐信息:', data) + return request({ + url: '/app/device/updateOrderPackage', + method: 'post', + data + }) } // 更新用户余额 export const updateUserBalance = (orderId) => { - return request({ - url: `/app/user/updateBalance/${orderId}`, - method: 'post', - hideLoading: true - }) + return request({ + url: `/app/user/updateBalance/${orderId}`, + method: 'post', + hideLoading: true + }) } +/* + * + *弃用 + */ +export const getPotionsDetail = (data) => { + console.log(data); + return request({ + url: '/device/position/positionDetails', + method: 'get', + data + }) +} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 8e73d66..33277b3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,10 +1,11 @@ { - "name": "uni-fans", + "name": "uni-fans-score", "lockfileVersion": 3, "requires": true, "packages": { "": { "dependencies": { + "@climblee/uv-ui": "^1.1.20", "axios": "^1.7.9", "axios-miniprogram-adapter": "0.3.4", "uniapp-axios-adapter": "^0.3.2", @@ -15,6 +16,12 @@ "sass-loader": "^13.2.0" } }, + "node_modules/@climblee/uv-ui": { + "version": "1.1.20", + "resolved": "https://registry.npmmirror.com/@climblee/uv-ui/-/uv-ui-1.1.20.tgz", + "integrity": "sha512-jkyesHJsPJkF4Nap9ZmG1/ibKlxXA5M8+ntqKXwwloIsYSYL5SOKb0gyPj17aBOU1PkJpmeiZ8PwnTolhK2/HA==", + "license": "ISC" + }, "node_modules/@jridgewell/gen-mapping": { "version": "0.3.8", "resolved": "https://registry.npmmirror.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", diff --git a/package.json b/package.json index 7cbf8c5..ba90033 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,6 @@ { "dependencies": { + "@climblee/uv-ui": "^1.1.20", "axios": "^1.7.9", "axios-miniprogram-adapter": "0.3.4", "uniapp-axios-adapter": "^0.3.2", @@ -9,4 +10,4 @@ "sass": "^1.57.1", "sass-loader": "^13.2.0" } -} \ No newline at end of file +} diff --git a/pages.json b/pages.json index b4cd391..eda2660 100644 --- a/pages.json +++ b/pages.json @@ -1,6 +1,10 @@ { "easycom": { - "^u-(.*)": "uview-ui/components/u-$1/u-$1.vue" + "autoscan": true, + "custom": { + "^uv-(.*)": "@climblee/uv-ui/components/uv-$1/uv-$1.vue", + "^u-(.*)": "uview-ui/components/u-$1/u-$1.vue" + } }, "pages": [{ "path": "pages/index/index", @@ -62,7 +66,7 @@ "navigationBarTextStyle": "black" } }, - + { "path": "pages/serve/bagCheck/index", "style": { diff --git a/pages/index/index.vue b/pages/index/index.vue index 196fb06..7cf1369 100644 --- a/pages/index/index.vue +++ b/pages/index/index.vue @@ -1,36 +1,43 @@ \ No newline at end of file + + /* 操作步骤指引 */ + .steps-guide { + align-items: center; + align-content: center; + background-color: rgba(255, 255, 255, 0.95); + border-radius: 20rpx; + padding: 0; + box-shadow: 0 8rpx 32rpx rgba(0, 0, 0, 0.12); + z-index: 10; + // max-width: calc(100% - 40rpx); + backdrop-filter: blur(15rpx); + border: 1rpx solid rgba(255, 255, 255, 0.9); + overflow: hidden; + width: 92%; + margin: 0 auto 20rpx; + } + + .guide-header { + padding: 20rpx 24rpx; + background: linear-gradient(135deg, #2196F3, #1976D2); + border-bottom: 1rpx solid rgba(255, 255, 255, 0.2); + + .guide-title { + font-size: 32rpx; + font-weight: 600; + color: #ffffff; + text-align: center; + display: block; + } + } + + .steps-container { + display: flex; + flex-direction: column; + gap: 16rpx; + padding: 24rpx; + background-color: rgba(255, 255, 255, 0.9); + } + + .step-item { + display: flex; + align-items: flex-start; + width: 100%; + padding: 16rpx 0; + border-bottom: 1rpx solid rgba(0, 0, 0, 0.05); + + &:last-child { + border-bottom: none; + } + + .step-number { + width: 40rpx; + height: 40rpx; + background: linear-gradient(135deg, #2196F3, #1976D2); + color: #ffffff; + border-radius: 50%; + display: flex; + align-items: center; + justify-content: center; + font-size: 24rpx; + font-weight: bold; + margin-right: 20rpx; + flex-shrink: 0; + box-shadow: 0 4rpx 12rpx rgba(33, 150, 243, 0.4); + } + + .step-content { + flex: 1; + padding-top: 4rpx; + + .step-title { + font-size: 30rpx; + font-weight: 600; + color: #333; + margin-bottom: 8rpx; + display: block; + } + + .step-desc { + font-size: 26rpx; + color: #666; + display: block; + line-height: 1.5; + } + } + } + \ No newline at end of file diff --git a/project_document/distance_calculation_optimization.md b/project_document/distance_calculation_optimization.md new file mode 100644 index 0000000..771ea97 --- /dev/null +++ b/project_document/distance_calculation_optimization.md @@ -0,0 +1,49 @@ +# 距离计算优化文档 + +## 问题描述 +原代码中距离计算存在单位问题: +- `calculateDistanceSync` 函数返回的是米为单位的距离 +- 但代码中直接使用 `distance.toFixed(1)` 并显示为 "km" +- 导致距离显示不准确 + +## 解决方案 + +### 1. 距离格式化函数 +添加了智能距离格式化函数 `formatDistance`: +```javascript +const formatDistance = (distanceInMeters) => { + if (distanceInMeters < 1000) { + return `${Math.round(distanceInMeters)}m` + } else { + return `${(distanceInMeters / 1000).toFixed(1)}km` + } +} +``` + +### 2. 距离数据结构优化 +- `item.distance`: 格式化的距离字符串(如 "1.5km" 或 "800m") +- `item.distanceInMeters`: 原始米数,用于排序和过滤 + +### 3. 排序和过滤逻辑优化 +- 排序使用 `distanceInMeters` 进行数值比较 +- 过滤使用米数进行距离判断(10km = 10000米) + +### 4. 模板显示优化 +- 直接显示 `item.distance`,因为已经包含单位 +- 移除了模板中的 "km" 后缀 + +## 测试验证 +添加了测试函数 `testDistanceCalculation()` 用于验证距离计算准确性: +- 测试用例:北京天安门到故宫(约1.5公里) +- 开发环境自动运行测试 + +## 优化效果 +1. 距离显示更准确:小于1公里显示为米,大于等于1公里显示为千米 +2. 排序更准确:使用数值比较而非字符串比较 +3. 过滤更精确:使用米数进行距离判断 +4. 用户体验更好:距离显示更直观 + +## 文件修改清单 +- `utils/mapUtils.js`: 添加注释说明单位,添加测试函数 +- `pages/index/index.vue`: 优化距离计算逻辑,添加格式化函数 +- `project_document/distance_calculation_optimization.md`: 本文档 \ No newline at end of file diff --git a/static/map.png b/static/map.png new file mode 100644 index 0000000..775a079 Binary files /dev/null and b/static/map.png differ diff --git a/unpackage/dist/build/mp-weixin/common/assets.js b/unpackage/dist/build/mp-weixin/common/assets.js index cf58306..4e8be02 100644 --- a/unpackage/dist/build/mp-weixin/common/assets.js +++ b/unpackage/dist/build/mp-weixin/common/assets.js @@ -1 +1 @@ -"use strict";exports._imports_0="/static/scan-icon.png",exports._imports_0$1="/static/user-active.png",exports._imports_0$2="/static/images/wxpayflag.png",exports._imports_0$3="/static/images/location-map.svg",exports._imports_1="/static/jl.png",exports._imports_2="/static/complaint.png",exports._imports_3="/static/hlep.png"; +"use strict";exports._imports_0="/static/scan-icon.png",exports._imports_0$1="/static/logo.png",exports._imports_0$2="/static/user-active.png",exports._imports_0$3="/static/images/wxpayflag.png",exports._imports_0$4="/static/images/location-map.svg",exports._imports_1="/static/jl.png",exports._imports_1$1="/static/map.png",exports._imports_2="/static/complaint.png",exports._imports_3="/static/hlep.png"; diff --git a/unpackage/dist/build/mp-weixin/common/vendor.js b/unpackage/dist/build/mp-weixin/common/vendor.js index 2fd84e1..b0020d9 100644 --- a/unpackage/dist/build/mp-weixin/common/vendor.js +++ b/unpackage/dist/build/mp-weixin/common/vendor.js @@ -1,7 +1,7 @@ -"use strict"; +"use strict";var e,t,n,o,r,i,s,c; /** * @vue/shared v3.4.21 * (c) 2018-present Yuxi (Evan) You and Vue contributors * @license MIT **/ -function e(e,t){const n=new Set(e.split(","));return t?e=>n.has(e.toLowerCase()):e=>n.has(e)}const t={},n=[],o=()=>{},r=()=>!1,i=e=>111===e.charCodeAt(0)&&110===e.charCodeAt(1)&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),s=e=>e.startsWith("onUpdate:"),c=Object.assign,a=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},u=Object.prototype.hasOwnProperty,l=(e,t)=>u.call(e,t),f=Array.isArray,p=e=>"[object Map]"===b(e),d=e=>"[object Set]"===b(e),h=e=>"function"==typeof e,g=e=>"string"==typeof e,m=e=>"symbol"==typeof e,y=e=>null!==e&&"object"==typeof e,v=e=>(y(e)||h(e))&&h(e.then)&&h(e.catch),_=Object.prototype.toString,b=e=>_.call(e),x=e=>"[object Object]"===b(e),w=e=>g(e)&&"NaN"!==e&&"-"!==e[0]&&""+parseInt(e,10)===e,$=e(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),S=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},k=/-(\w)/g,O=S((e=>e.replace(k,((e,t)=>t?t.toUpperCase():"")))),P=/\B([A-Z])/g,A=S((e=>e.replace(P,"-$1").toLowerCase())),E=S((e=>e.charAt(0).toUpperCase()+e.slice(1))),C=S((e=>e?`on${E(e)}`:"")),I=(e,t)=>!Object.is(e,t),j=(e,t)=>{for(let n=0;n{const t=parseFloat(e);return isNaN(t)?e:t};function R(e){let t="";if(g(e))t=e;else if(f(e))for(let n=0;nt&&t.__v_isRef?L(e,t.value):p(t)?{[`Map(${t.size})`]:[...t.entries()].reduce(((e,[t,n],o)=>(e[M(t,o)+" =>"]=n,e)),{})}:d(t)?{[`Set(${t.size})`]:[...t.values()].map((e=>M(e)))}:m(t)?M(t):!y(t)||f(t)||x(t)?t:String(t),M=(e,t="")=>{var n;return m(e)?`Symbol(${null!=(n=e.description)?n:t})`:e};function D(e,t=null){let n;return(...o)=>(e&&(n=e.apply(t,o),e=null),n)}function N(e,t){if(!g(t))return;const n=(t=t.replace(/\[(\d+)\]/g,".$1")).split(".");let o=n[0];return e||(e={}),1===n.length?e[o]:N(e[o],n.slice(1).join("."))}function H(e){let t={};return x(e)&&Object.keys(e).sort().forEach((n=>{const o=n;t[o]=e[o]})),Object.keys(t)?t:e}const V=/:/g;const B=encodeURIComponent;function U(e,t=B){const n=e?Object.keys(e).map((n=>{let o=e[n];return void 0===typeof o||null===o?o="":x(o)&&(o=JSON.stringify(o)),t(n)+"="+t(o)})).filter((e=>e.length>0)).join("&"):null;return n?`?${n}`:""}const W=["onInit","onLoad","onShow","onHide","onUnload","onBackPress","onPageScroll","onTabItemTap","onReachBottom","onPullDownRefresh","onShareTimeline","onShareAppMessage","onShareChat","onAddToFavorites","onSaveExitState","onNavigationBarButtonTap","onNavigationBarSearchInputClicked","onNavigationBarSearchInputChanged","onNavigationBarSearchInputConfirmed","onNavigationBarSearchInputFocusChanged"];const z=["onShow","onHide","onLaunch","onError","onThemeChange","onPageNotFound","onUnhandledRejection","onExit","onInit","onLoad","onReady","onUnload","onResize","onBackPress","onPageScroll","onTabItemTap","onReachBottom","onPullDownRefresh","onShareTimeline","onAddToFavorites","onShareAppMessage","onShareChat","onSaveExitState","onNavigationBarButtonTap","onNavigationBarSearchInputClicked","onNavigationBarSearchInputChanged","onNavigationBarSearchInputConfirmed","onNavigationBarSearchInputFocusChanged"],F=(()=>({onPageScroll:1,onShareAppMessage:2,onShareTimeline:4}))();function q(e,t,n=!0){return!(n&&!h(t))&&(z.indexOf(e)>-1||0===e.indexOf("on"))}let K;const Z=[];const G=D(((e,t)=>t(e))),J=function(){};J.prototype={_id:1,on:function(e,t,n){var o=this.e||(this.e={});return(o[e]||(o[e]=[])).push({fn:t,ctx:n,_id:this._id}),this._id++},once:function(e,t,n){var o=this;function r(){o.off(e,r),t.apply(n,arguments)}return r._=t,this.on(e,r,n)},emit:function(e){for(var t=[].slice.call(arguments,1),n=((this.e||(this.e={}))[e]||[]).slice(),o=0,r=n.length;o=0;i--)if(o[i].fn===t||o[i].fn._===t||o[i]._id===t){o.splice(i,1);break}r=o}return r.length?n[e]=r:delete n[e],this}};var Q=J;function X(e,t){if(!e)return;if(e=e.trim().replace(/_/g,"-"),t&&t[e])return e;if("chinese"===(e=e.toLowerCase()))return"zh-Hans";if(0===e.indexOf("zh"))return e.indexOf("-hans")>-1?"zh-Hans":e.indexOf("-hant")>-1?"zh-Hant":(n=e,["-tw","-hk","-mo","-cht"].find((e=>-1!==n.indexOf(e)))?"zh-Hant":"zh-Hans");var n;let o=["en","fr","es"];t&&Object.keys(t).length>0&&(o=Object.keys(t));const r=function(e,t){return t.find((t=>0===e.indexOf(t)))}(e,o);return r||void 0}function Y(e){return function(){try{return e.apply(e,arguments)}catch(t){console.error(t)}}}let ee=1;const te={};function ne(e,t,n){if("number"==typeof e){const o=te[e];if(o)return o.keepAlive||delete te[e],o.callback(t,n)}return t}const oe="success",re="fail",ie="complete";function se(e,t={},{beforeAll:n,beforeSuccess:o}={}){x(t)||(t={});const{success:r,fail:i,complete:s}=function(e){const t={};for(const n in e){const o=e[n];h(o)&&(t[n]=Y(o),delete e[n])}return t}(t),c=h(r),a=h(i),u=h(s),l=ee++;return function(e,t,n,o=!1){te[e]={name:t,keepAlive:o,callback:n}}(l,e,(l=>{(l=l||{}).errMsg=function(e,t){return e&&-1!==e.indexOf(":fail")?t+e.substring(e.indexOf(":fail")):t+":ok"}(l.errMsg,e),h(n)&&n(l),l.errMsg===e+":ok"?(h(o)&&o(l,t),c&&r(l)):a&&i(l),u&&s(l)})),l}const ce="success",ae="fail",ue="complete",le={},fe={};function pe(e,t){return function(n){return e(n,t)||n}}function de(e,t,n){let o=!1;for(let r=0;re(t),catch(){}}}function he(e,t={}){return[ce,ae,ue].forEach((n=>{const o=e[n];if(!f(o))return;const r=t[n];t[n]=function(e){de(o,e,t).then((e=>h(r)&&r(e)||e))}})),t}function ge(e,t){const n=[];f(le.returnValue)&&n.push(...le.returnValue);const o=fe[e];return o&&f(o.returnValue)&&n.push(...o.returnValue),n.forEach((e=>{t=e(t)||t})),t}function me(e){const t=Object.create(null);Object.keys(le).forEach((e=>{"returnValue"!==e&&(t[e]=le[e].slice())}));const n=fe[e];return n&&Object.keys(n).forEach((e=>{"returnValue"!==e&&(t[e]=(t[e]||[]).concat(n[e]))})),t}function ye(e,t,n,o){const r=me(e);if(r&&Object.keys(r).length){if(f(r.invoke)){return de(r.invoke,n).then((n=>t(he(me(e),n),...o)))}return t(he(r,n),...o)}return t(n,...o)}function ve(e,t){return(n={},...o)=>function(e){return!(!x(e)||![oe,re,ie].find((t=>h(e[t]))))}(n)?ge(e,ye(e,t,n,o)):ge(e,new Promise(((r,i)=>{ye(e,t,c(n,{success:r,fail:i}),o)})))}function _e(e,t,n,o={}){const r=t+":fail";let i="";return i=n?0===n.indexOf(r)?n:r+" "+n:r,delete o.errCode,ne(e,c({errMsg:i},o))}function be(e,t,n,o){const r=function(e,t){e[0]}(t);if(r)return r}function xe(e,t,n,o){return n=>{const r=se(e,n,o),i=be(0,[n]);return i?_e(r,e,i):t(n,{resolve:t=>function(e,t,n){return ne(e,c(n||{},{errMsg:t+":ok"}))}(r,e,t),reject:(t,n)=>_e(r,e,function(e){return!e||g(e)?e:e.stack?("undefined"!=typeof globalThis&&globalThis.harmonyChannel||console.error(e.message+"\n"+e.stack),e.message):e}(t),n)})}}function we(e,t,n,o){return function(e,t,n,o){return(...e)=>{const n=be(0,e);if(n)throw new Error(n);return t.apply(null,e)}}(0,t)}let $e=!1,Se=0,ke=0;const Oe=we(0,((e,t)=>{if(0===Se&&function(){var e,t;let n,o,r;{const i=(null===(e=wx.getWindowInfo)||void 0===e?void 0:e.call(wx))||wx.getSystemInfoSync(),s=(null===(t=wx.getDeviceInfo)||void 0===t?void 0:t.call(wx))||wx.getSystemInfoSync();n=i.windowWidth,o=i.pixelRatio,r=s.platform}Se=n,ke=o,$e="ios"===r}(),0===(e=Number(e)))return 0;let n=e/750*(t||Se);return n<0&&(n=-n),n=Math.floor(n+1e-4),0===n&&(n=1!==ke&&$e?.5:1),e<0?-n:n}));function Pe(e,t){Object.keys(t).forEach((n=>{h(t[n])&&(e[n]=function(e,t){const n=t?e?e.concat(t):f(t)?t:[t]:e;return n?function(e){const t=[];for(let n=0;n{const o=e[n],r=t[n];f(o)&&h(r)&&a(o,r)}))}const Ee=we(0,((e,t)=>{g(e)&&x(t)?Pe(fe[e]||(fe[e]={}),t):x(e)&&Pe(le,e)})),Ce=we(0,((e,t)=>{g(e)?x(t)?Ae(fe[e],t):delete fe[e]:x(e)&&Ae(le,e)}));const Ie=new class{constructor(){this.$emitter=new Q}on(e,t){return this.$emitter.on(e,t)}once(e,t){return this.$emitter.once(e,t)}off(e,t){e?this.$emitter.off(e,t):this.$emitter.e={}}emit(e,...t){this.$emitter.emit(e,...t)}},je=we(0,((e,t)=>(Ie.on(e,t),()=>Ie.off(e,t)))),Te=we(0,((e,t)=>(Ie.once(e,t),()=>Ie.off(e,t)))),Re=we(0,((e,t)=>{f(e)||(e=e?[e]:[]),e.forEach((e=>{Ie.off(e,t)}))})),Le=we(0,((e,...t)=>{Ie.emit(e,...t)}));let Me,De,Ne;function He(e){try{return JSON.parse(e)}catch(t){}return e}const Ve=[];function Be(e,t){Ve.forEach((n=>{n(e,t)})),Ve.length=0}const Ue=ve(We="getPushClientId",function(e,t,n,o){return xe(e,t,0,o)}(We,((e,{resolve:t,reject:n})=>{Promise.resolve().then((()=>{void 0===Ne&&(Ne=!1,Me="",De="uniPush is not enabled"),Ve.push(((e,o)=>{e?t({cid:e}):n(o)})),void 0!==Me&&Be(Me,De)}))}),0,ze));var We,ze;const Fe=[],qe=/^\$|__f__|getLocale|setLocale|sendNativeEvent|restoreGlobal|requireGlobal|getCurrentSubNVue|getMenuButtonBoundingClientRect|^report|interceptors|Interceptor$|getSubNVueById|requireNativePlugin|upx2px|rpx2px|hideKeyboard|canIUse|^create|Sync$|Manager$|base64ToArrayBuffer|arrayBufferToBase64|getDeviceInfo|getAppBaseInfo|getWindowInfo|getSystemSetting|getAppAuthorizeSetting/,Ke=/^create|Manager$/,Ze=["createBLEConnection"],Ge=["request","downloadFile","uploadFile","connectSocket"],Je=["createBLEConnection"],Qe=/^on|^off/;function Xe(e){return Ke.test(e)&&-1===Ze.indexOf(e)}function Ye(e){return qe.test(e)&&-1===Je.indexOf(e)}function et(e){return-1!==Ge.indexOf(e)}function tt(e){return!(Xe(e)||Ye(e)||function(e){return Qe.test(e)&&"onPush"!==e}(e))}function nt(e,t){return tt(e)&&h(t)?function(n={},...o){return h(n.success)||h(n.fail)||h(n.complete)?ge(e,ye(e,t,n,o)):ge(e,new Promise(((r,i)=>{ye(e,t,c({},n,{success:r,fail:i}),o)})))}:t}Promise.prototype.finally||(Promise.prototype.finally=function(e){const t=this.constructor;return this.then((n=>t.resolve(e&&e()).then((()=>n))),(n=>t.resolve(e&&e()).then((()=>{throw n}))))});const ot=["success","fail","cancel","complete"];const rt=()=>{const e=h(getApp)&&getApp({allowDefault:!0});return e&&e.$vm?e.$vm.$locale:function(){var e;let t="";{const n=(null===(e=wx.getAppBaseInfo)||void 0===e?void 0:e.call(wx))||wx.getSystemInfoSync();t=X(n&&n.language?n.language:"en")||"en"}return t}()},it=[];"undefined"!=typeof global&&(global.getLocale=rt);let st;function ct(e=wx){return function(t,n){st=st||e.getStorageSync("__DC_STAT_UUID"),st||(st=Date.now()+""+Math.floor(1e7*Math.random()),wx.setStorage({key:"__DC_STAT_UUID",data:st})),n.deviceId=st}}function at(e,t){if(e.safeArea){const n=e.safeArea;t.safeAreaInsets={top:n.top,left:n.left,right:e.windowWidth-n.right,bottom:e.screenHeight-n.bottom}}}function ut(e,t){let n="",o="";switch(n=e.split(" ")[0]||t,o=e.split(" ")[1]||"",n=n.toLocaleLowerCase(),n){case"harmony":case"ohos":case"openharmony":n="harmonyos";break;case"iphone os":n="ios";break;case"mac":case"darwin":n="macos";break;case"windows_nt":n="windows"}return{osName:n,osVersion:o}}function lt(e,t){let n=e.deviceType||"phone";{const e={ipad:"pad",windows:"pc",mac:"pc"},o=Object.keys(e),r=t.toLocaleLowerCase();for(let t=0;t{at(e,t),ct()(e,t),function(e,t){const{brand:n="",model:o="",system:r="",language:i="",theme:s,version:a,platform:u,fontSizeSetting:l,SDKVersion:f,pixelRatio:p,deviceOrientation:d}=e,{osName:h,osVersion:g}=ut(r,u);let m=a,y=lt(e,o),v=ft(n),_=dt(e),b=d,x=p,w=f;const $=(i||"").replace(/_/g,"-"),S={appId:"__UNI__A871B6B",appName:"uni-fans-score",appVersion:"1.0.0",appVersionCode:"100",appLanguage:pt($),uniCompileVersion:"4.66",uniCompilerVersion:"4.66",uniRuntimeVersion:"4.66",uniPlatform:"mp-weixin",deviceBrand:v,deviceModel:o,deviceType:y,devicePixelRatio:x,deviceOrientation:b,osName:h,osVersion:g,hostTheme:s,hostVersion:m,hostLanguage:$,hostName:_,hostSDKVersion:w,hostFontSizeSetting:l,windowTop:0,windowBottom:0,osLanguage:void 0,osTheme:void 0,ua:void 0,hostPackageName:void 0,browserName:void 0,browserVersion:void 0,isUniAppX:!1};c(t,S)}(e,t)}},gt=ht,mt={args(e,t){let n=parseInt(e.current);if(isNaN(n))return;const o=e.urls;if(!f(o))return;const r=o.length;return r?(n<0?n=0:n>=r&&(n=r-1),n>0?(t.current=o[n],t.urls=o.filter(((e,t)=>!(t{const{brand:n,model:o,system:r="",platform:i=""}=e;let s=lt(e,o),a=ft(n);ct()(e,t);const{osName:u,osVersion:l}=ut(r,i);t=H(c(t,{deviceType:s,deviceBrand:a,deviceModel:o,osName:u,osVersion:l}))}},_t={returnValue:(e,t)=>{const{version:n,language:o,SDKVersion:r,theme:i}=e;let s=dt(e),a=(o||"").replace(/_/g,"-");const u={hostVersion:n,hostLanguage:a,hostName:s,hostSDKVersion:r,hostTheme:i,appId:"__UNI__A871B6B",appName:"uni-fans-score",appVersion:"1.0.0",appVersionCode:"100",appLanguage:pt(a),isUniAppX:!1,uniPlatform:"mp-weixin",uniCompileVersion:"4.66",uniCompilerVersion:"4.66",uniRuntimeVersion:"4.66"};c(t,u)}},bt={returnValue:(e,t)=>{at(e,t),t=H(c(t,{windowTop:0,windowBottom:0}))}},xt={args(e){const t=getApp({allowDefault:!0})||{};t.$vm?or("onError",e,t.$vm.$):(wx.$onErrorHandlers||(wx.$onErrorHandlers=[]),wx.$onErrorHandlers.push(e))}},wt={args(e){const t=getApp({allowDefault:!0})||{};if(t.$vm){if(e.__weh){const n=t.$vm.$.onError;if(n){const t=n.indexOf(e.__weh);t>-1&&n.splice(t,1)}}}else{if(!wx.$onErrorHandlers)return;const t=wx.$onErrorHandlers.findIndex((t=>t===e));-1!==t&&wx.$onErrorHandlers.splice(t,1)}}},$t={args(){if(wx.__uni_console__){if(wx.__uni_console_warned__)return;wx.__uni_console_warned__=!0,console.warn("开发模式下小程序日志回显会使用 socket 连接,为了避免冲突,建议使用 SocketTask 的方式去管理 WebSocket 或手动关闭日志回显功能。[详情](https://uniapp.dcloud.net.cn/tutorial/run/mp-log.html)")}}},St=$t,kt={$on:je,$off:Re,$once:Te,$emit:Le,upx2px:Oe,rpx2px:Oe,interceptors:{},addInterceptor:Ee,removeInterceptor:Ce,onCreateVueApp:function(e){if(K)return e(K);Z.push(e)},invokeCreateVueAppHook:function(e){K=e,Z.forEach((t=>t(e)))},getLocale:rt,setLocale:e=>{const t=h(getApp)&&getApp();if(!t)return!1;return t.$vm.$locale!==e&&(t.$vm.$locale=e,it.forEach((t=>t({locale:e}))),!0)},onLocaleChange:e=>{-1===it.indexOf(e)&&it.push(e)},getPushClientId:Ue,onPushMessage:e=>{-1===Fe.indexOf(e)&&Fe.push(e)},offPushMessage:e=>{if(e){const t=Fe.indexOf(e);t>-1&&Fe.splice(t,1)}else Fe.length=0},invokePushCallback:function(e){if("enabled"===e.type)Ne=!0;else if("clientId"===e.type)Me=e.cid,De=e.errMsg,Be(Me,e.errMsg);else if("pushMsg"===e.type){const t={type:"receive",data:He(e.message)};for(let e=0;e{t({type:"click",data:He(e.message)})}))},__f__:function(e,t,...n){t&&n.push(t),console[e].apply(console,n)}};const Ot=["qy","env","error","version","lanDebug","cloud","serviceMarket","router","worklet","__webpack_require_UNI_MP_PLUGIN__"],Pt=["lanDebug","router","worklet"],At=wx.getLaunchOptionsSync?wx.getLaunchOptionsSync():null;function Et(e){return(!At||1154!==At.scene||!Pt.includes(e))&&(Ot.indexOf(e)>-1||"function"==typeof wx[e])}function Ct(){const e={};for(const t in wx)Et(t)&&(e[t]=wx[t]);return"undefined"!=typeof globalThis&&"undefined"==typeof requireMiniProgram&&(globalThis.wx=e),e}const It=["__route__","__wxExparserNodeId__","__wxWebviewId__"],jt=(Tt={oauth:["weixin"],share:["weixin"],payment:["wxpay"],push:["weixin"]},function({service:e,success:t,fail:n,complete:o}){let r;Tt[e]?(r={errMsg:"getProvider:ok",service:e,provider:Tt[e]},h(t)&&t(r)):(r={errMsg:"getProvider:fail:服务["+e+"]不存在"},h(n)&&n(r)),h(o)&&o(r)});var Tt;const Rt=Ct();Rt.canIUse("getAppBaseInfo")||(Rt.getAppBaseInfo=Rt.getSystemInfoSync),Rt.canIUse("getWindowInfo")||(Rt.getWindowInfo=Rt.getSystemInfoSync),Rt.canIUse("getDeviceInfo")||(Rt.getDeviceInfo=Rt.getSystemInfoSync);let Lt=Rt.getAppBaseInfo&&Rt.getAppBaseInfo();Lt||(Lt=Rt.getSystemInfoSync());const Mt=Lt?Lt.host:null,Dt=Mt&&"SAAASDK"===Mt.env?Rt.miniapp.shareVideoMessage:Rt.shareVideoMessage;var Nt=Object.freeze({__proto__:null,createSelectorQuery:function(){const e=Rt.createSelectorQuery(),t=e.in;return e.in=function(e){return e.$scope?t.call(this,e.$scope):t.call(this,function(e){const t=Object.create(null);return It.forEach((n=>{t[n]=e[n]})),t}(e))},e},getProvider:jt,shareVideoMessage:Dt});const Ht={args(e,t){e.compressedHeight&&!t.compressHeight&&(t.compressHeight=e.compressedHeight),e.compressedWidth&&!t.compressWidth&&(t.compressWidth=e.compressedWidth)}};var Vt=Object.freeze({__proto__:null,compressImage:Ht,getAppAuthorizeSetting:{returnValue:function(e,t){const{locationReducedAccuracy:n}=e;t.locationAccuracy="unsupported",!0===n?t.locationAccuracy="reduced":!1===n&&(t.locationAccuracy="full")}},getAppBaseInfo:_t,getDeviceInfo:vt,getSystemInfo:ht,getSystemInfoSync:gt,getWindowInfo:bt,offError:wt,onError:xt,onSocketMessage:St,onSocketOpen:$t,previewImage:mt,redirectTo:{},showActionSheet:yt});const Bt=Ct();var Ut=function(e,t,n=wx){const o=function(e){function t(e,t,n){return function(r){return t(o(e,r,n))}}function n(e,n,o={},r={},i=!1){if(x(n)){const s=!0===i?n:{};h(o)&&(o=o(n,s)||{});for(const c in n)if(l(o,c)){let t=o[c];h(t)&&(t=t(n[c],n,s)),t?g(t)?s[t]=n[c]:x(t)&&(s[t.name?t.name:c]=t.value):console.warn(`微信小程序 ${e} 暂不支持 ${c}`)}else if(-1!==ot.indexOf(c)){const o=n[c];h(o)&&(s[c]=t(e,o,r))}else i||l(s,c)||(s[c]=n[c]);return s}return h(n)&&(h(o)&&o(n,{}),n=t(e,n,r)),n}function o(t,o,r,i=!1){return h(e.returnValue)&&(o=e.returnValue(t,o)),n(t,o,r,{},i||!1)}return function(t,r){const i=l(e,t);if(!i&&"function"!=typeof wx[t])return r;const s=i||h(e.returnValue)||Xe(t)||et(t),c=i||h(r);if(!i&&!r)return function(){console.error(`微信小程序 暂不支持${t}`)};if(!s||!c)return r;const a=e[t];return function(e,r){let i=a||{};h(a)&&(i=a(e));const s=[e=n(t,e,i.args,i.returnValue)];void 0!==r&&s.push(r);const c=wx[i.name||t].apply(wx,s);return(Xe(t)||et(t))&&c&&!c.__v_skip&&(c.__v_skip=!0),Ye(t)?o(t,c,i.returnValue,Xe(t)):c}}}(t);return new Proxy({},{get:(t,r)=>l(t,r)?t[r]:l(e,r)?nt(r,e[r]):l(kt,r)?nt(r,kt[r]):nt(r,o(r,n[r]))})}(Nt,Vt,Bt);let Wt,zt;class Ft{constructor(e=!1){this.detached=e,this._active=!0,this.effects=[],this.cleanups=[],this.parent=Wt,!e&&Wt&&(this.index=(Wt.scopes||(Wt.scopes=[])).push(this)-1)}get active(){return this._active}run(e){if(this._active){const t=Wt;try{return Wt=this,e()}finally{Wt=t}}}on(){Wt=this}off(){Wt=this.parent}stop(e){if(this._active){let t,n;for(t=0,n=this.effects.length;t=4))break}1===this._dirtyLevel&&(this._dirtyLevel=0),en()}return this._dirtyLevel>=4}set dirty(e){this._dirtyLevel=e?4:0}run(){if(this._dirtyLevel=0,!this.active)return this.fn();let e=Jt,t=zt;try{return Jt=!0,zt=this,this._runnings++,Kt(this),this.fn()}finally{Zt(this),this._runnings--,zt=t,Jt=e}}stop(){var e;this.active&&(Kt(this),Zt(this),null==(e=this.onStop)||e.call(this),this.active=!1)}}function Kt(e){e._trackId++,e._depsLength=0}function Zt(e){if(e.deps.length>e._depsLength){for(let t=e._depsLength;t{const n=new Map;return n.cleanup=e,n.computed=t,n},an=new WeakMap,un=Symbol(""),ln=Symbol("");function fn(e,t,n){if(Jt&&zt){let t=an.get(e);t||an.set(e,t=new Map);let o=t.get(n);o||t.set(n,o=cn((()=>t.delete(n)))),on(zt,o)}}function pn(e,t,n,o,r,i){const s=an.get(e);if(!s)return;let c=[];if("clear"===t)c=[...s.values()];else if("length"===n&&f(e)){const e=Number(o);s.forEach(((t,n)=>{("length"===n||!m(n)&&n>=e)&&c.push(t)}))}else switch(void 0!==n&&c.push(s.get(n)),t){case"add":f(e)?w(n)&&c.push(s.get("length")):(c.push(s.get(un)),p(e)&&c.push(s.get(ln)));break;case"delete":f(e)||(c.push(s.get(un)),p(e)&&c.push(s.get(ln)));break;case"set":p(e)&&c.push(s.get(un))}tn();for(const a of c)a&&sn(a,4);nn()}const dn=e("__proto__,__v_isRef,__isVue"),hn=new Set(Object.getOwnPropertyNames(Symbol).filter((e=>"arguments"!==e&&"caller"!==e)).map((e=>Symbol[e])).filter(m)),gn=mn();function mn(){const e={};return["includes","indexOf","lastIndexOf"].forEach((t=>{e[t]=function(...e){const n=no(this);for(let t=0,r=this.length;t{e[t]=function(...e){Yt(),tn();const n=no(this)[t].apply(this,e);return nn(),en(),n}})),e}function yn(e){const t=no(this);return fn(t,0,e),t.hasOwnProperty(e)}class vn{constructor(e=!1,t=!1){this._isReadonly=e,this._isShallow=t}get(e,t,n){const o=this._isReadonly,r=this._isShallow;if("__v_isReactive"===t)return!o;if("__v_isReadonly"===t)return o;if("__v_isShallow"===t)return r;if("__v_raw"===t)return n===(o?r?Zn:Kn:r?qn:Fn).get(e)||Object.getPrototypeOf(e)===Object.getPrototypeOf(n)?e:void 0;const i=f(e);if(!o){if(i&&l(gn,t))return Reflect.get(gn,t,n);if("hasOwnProperty"===t)return yn}const s=Reflect.get(e,t,n);return(m(t)?hn.has(t):dn(t))?s:(o||fn(e,0,t),r?s:uo(s)?i&&w(t)?s:s.value:y(s)?o?Qn(s):Jn(s):s)}}class _n extends vn{constructor(e=!1){super(!1,e)}set(e,t,n,o){let r=e[t];if(!this._isShallow){const t=eo(r);if(to(n)||eo(n)||(r=no(r),n=no(n)),!f(e)&&uo(r)&&!uo(n))return!t&&(r.value=n,!0)}const i=f(e)&&w(t)?Number(t)e,kn=e=>Reflect.getPrototypeOf(e);function On(e,t,n=!1,o=!1){const r=no(e=e.__v_raw),i=no(t);n||(I(t,i)&&fn(r,0,t),fn(r,0,i));const{has:s}=kn(r),c=o?Sn:n?io:ro;return s.call(r,t)?c(e.get(t)):s.call(r,i)?c(e.get(i)):void(e!==r&&e.get(t))}function Pn(e,t=!1){const n=this.__v_raw,o=no(n),r=no(e);return t||(I(e,r)&&fn(o,0,e),fn(o,0,r)),e===r?n.has(e):n.has(e)||n.has(r)}function An(e,t=!1){return e=e.__v_raw,!t&&fn(no(e),0,un),Reflect.get(e,"size",e)}function En(e){e=no(e);const t=no(this);return kn(t).has.call(t,e)||(t.add(e),pn(t,"add",e,e)),this}function Cn(e,t){t=no(t);const n=no(this),{has:o,get:r}=kn(n);let i=o.call(n,e);i||(e=no(e),i=o.call(n,e));const s=r.call(n,e);return n.set(e,t),i?I(t,s)&&pn(n,"set",e,t):pn(n,"add",e,t),this}function In(e){const t=no(this),{has:n,get:o}=kn(t);let r=n.call(t,e);r||(e=no(e),r=n.call(t,e)),o&&o.call(t,e);const i=t.delete(e);return r&&pn(t,"delete",e,void 0),i}function jn(){const e=no(this),t=0!==e.size,n=e.clear();return t&&pn(e,"clear",void 0,void 0),n}function Tn(e,t){return function(n,o){const r=this,i=r.__v_raw,s=no(i),c=t?Sn:e?io:ro;return!e&&fn(s,0,un),i.forEach(((e,t)=>n.call(o,c(e),c(t),r)))}}function Rn(e,t,n){return function(...o){const r=this.__v_raw,i=no(r),s=p(i),c="entries"===e||e===Symbol.iterator&&s,a="keys"===e&&s,u=r[e](...o),l=n?Sn:t?io:ro;return!t&&fn(i,0,a?ln:un),{next(){const{value:e,done:t}=u.next();return t?{value:e,done:t}:{value:c?[l(e[0]),l(e[1])]:l(e),done:t}},[Symbol.iterator](){return this}}}}function Ln(e){return function(...t){return"delete"!==e&&("clear"===e?void 0:this)}}function Mn(){const e={get(e){return On(this,e)},get size(){return An(this)},has:Pn,add:En,set:Cn,delete:In,clear:jn,forEach:Tn(!1,!1)},t={get(e){return On(this,e,!1,!0)},get size(){return An(this)},has:Pn,add:En,set:Cn,delete:In,clear:jn,forEach:Tn(!1,!0)},n={get(e){return On(this,e,!0)},get size(){return An(this,!0)},has(e){return Pn.call(this,e,!0)},add:Ln("add"),set:Ln("set"),delete:Ln("delete"),clear:Ln("clear"),forEach:Tn(!0,!1)},o={get(e){return On(this,e,!0,!0)},get size(){return An(this,!0)},has(e){return Pn.call(this,e,!0)},add:Ln("add"),set:Ln("set"),delete:Ln("delete"),clear:Ln("clear"),forEach:Tn(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach((r=>{e[r]=Rn(r,!1,!1),n[r]=Rn(r,!0,!1),t[r]=Rn(r,!1,!0),o[r]=Rn(r,!0,!0)})),[e,n,t,o]}const[Dn,Nn,Hn,Vn]=Mn();function Bn(e,t){const n=t?e?Vn:Hn:e?Nn:Dn;return(t,o,r)=>"__v_isReactive"===o?!e:"__v_isReadonly"===o?e:"__v_raw"===o?t:Reflect.get(l(n,o)&&o in t?n:t,o,r)}const Un={get:Bn(!1,!1)},Wn={get:Bn(!1,!0)},zn={get:Bn(!0,!1)},Fn=new WeakMap,qn=new WeakMap,Kn=new WeakMap,Zn=new WeakMap;function Gn(e){return e.__v_skip||!Object.isExtensible(e)?0:function(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}((e=>b(e).slice(8,-1))(e))}function Jn(e){return eo(e)?e:Xn(e,!1,xn,Un,Fn)}function Qn(e){return Xn(e,!0,wn,zn,Kn)}function Xn(e,t,n,o,r){if(!y(e))return e;if(e.__v_raw&&(!t||!e.__v_isReactive))return e;const i=r.get(e);if(i)return i;const s=Gn(e);if(0===s)return e;const c=new Proxy(e,2===s?o:n);return r.set(e,c),c}function Yn(e){return eo(e)?Yn(e.__v_raw):!(!e||!e.__v_isReactive)}function eo(e){return!(!e||!e.__v_isReadonly)}function to(e){return!(!e||!e.__v_isShallow)}function no(e){const t=e&&e.__v_raw;return t?no(t):e}function oo(e){return Object.isExtensible(e)&&((e,t,n)=>{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,value:n})})(e,"__v_skip",!0),e}const ro=e=>y(e)?Jn(e):e,io=e=>y(e)?Qn(e):e;class so{constructor(e,t,n,o){this.getter=e,this._setter=t,this.dep=void 0,this.__v_isRef=!0,this.__v_isReadonly=!1,this.effect=new qt((()=>e(this._value)),(()=>ao(this,2===this.effect._dirtyLevel?2:3))),this.effect.computed=this,this.effect.active=this._cacheable=!o,this.__v_isReadonly=n}get value(){const e=no(this);return e._cacheable&&!e.effect.dirty||!I(e._value,e._value=e.effect.run())||ao(e,4),co(e),e.effect._dirtyLevel>=2&&ao(e,2),e._value}set value(e){this._setter(e)}get _dirty(){return this.effect.dirty}set _dirty(e){this.effect.dirty=e}}function co(e){var t;Jt&&zt&&(e=no(e),on(zt,null!=(t=e.dep)?t:e.dep=cn((()=>e.dep=void 0),e instanceof so?e:void 0)))}function ao(e,t=4,n){const o=(e=no(e)).dep;o&&sn(o,t)}function uo(e){return!(!e||!0!==e.__v_isRef)}function lo(e){return function(e,t){if(uo(e))return e;return new fo(e,t)}(e,!1)}class fo{constructor(e,t){this.__v_isShallow=t,this.dep=void 0,this.__v_isRef=!0,this._rawValue=t?e:no(e),this._value=t?e:ro(e)}get value(){return co(this),this._value}set value(e){const t=this.__v_isShallow||to(e)||eo(e);e=t?e:no(e),I(e,this._rawValue)&&(this._rawValue=e,this._value=t?e:ro(e),ao(this,4))}}function po(e){return uo(e)?e.value:e}const ho={get:(e,t,n)=>po(Reflect.get(e,t,n)),set:(e,t,n,o)=>{const r=e[t];return uo(r)&&!uo(n)?(r.value=n,!0):Reflect.set(e,t,n,o)}};function go(e){return Yn(e)?e:new Proxy(e,ho)}function mo(e,t,n,o){try{return o?e(...o):e()}catch(r){vo(r,t,n)}}function yo(e,t,n,o){if(h(e)){const r=mo(e,t,n,o);return r&&v(r)&&r.catch((e=>{vo(e,t,n)})),r}const r=[];for(let i=0;i>>1,r=wo[o],i=Ro(r);inull==e.id?1/0:e.id,Lo=(e,t)=>{const n=Ro(e)-Ro(t);if(0===n){if(e.pre&&!t.pre)return-1;if(t.pre&&!e.pre)return 1}return n};function Mo(e){xo=!1,bo=!0,wo.sort(Lo);try{for($o=0;$oRo(e)-Ro(t)));if(So.length=0,ko)return void ko.push(...e);for(ko=e,Oo=0;Oog(e)?e.trim():e))),n&&(i=o.map(T))}let a,u=r[a=C(n)]||r[a=C(O(n))];!u&&s&&(u=r[a=C(A(n))]),u&&yo(u,e,6,i);const l=r[a+"Once"];if(l){if(e.emitted){if(e.emitted[a])return}else e.emitted={};e.emitted[a]=!0,yo(l,e,6,i)}}function No(e,t,n=!1){const o=t.emitsCache,r=o.get(e);if(void 0!==r)return r;const i=e.emits;let s={},a=!1;if(!h(e)){const o=e=>{const n=No(e,t,!0);n&&(a=!0,c(s,n))};!n&&t.mixins.length&&t.mixins.forEach(o),e.extends&&o(e.extends),e.mixins&&e.mixins.forEach(o)}return i||a?(f(i)?i.forEach((e=>s[e]=null)):c(s,i),y(e)&&o.set(e,s),s):(y(e)&&o.set(e,null),null)}function Ho(e,t){return!(!e||!i(t))&&(t=t.slice(2).replace(/Once$/,""),l(e,t[0].toLowerCase()+t.slice(1))||l(e,A(t))||l(e,t))}let Vo=null;function Bo(e){const t=Vo;return Vo=e,e&&e.type.__scopeId,t}function Uo(e,t){return e&&(e[t]||e[O(t)]||e[E(O(t))])}const Wo={};function zo(e,t,n){return Fo(e,t,n)}function Fo(e,n,{immediate:r,deep:i,flush:s,once:c,onTrack:u,onTrigger:l}=t){if(n&&c){const e=n;n=(...t)=>{e(...t),k()}}const p=Fr,d=e=>!0===i?e:Zo(e,!1===i?1:void 0);let g,m,y=!1,v=!1;if(uo(e)?(g=()=>e.value,y=to(e)):Yn(e)?(g=()=>d(e),y=!0):f(e)?(v=!0,y=e.some((e=>Yn(e)||to(e))),g=()=>e.map((e=>uo(e)?e.value:Yn(e)?d(e):h(e)?mo(e,p,2):void 0))):g=h(e)?n?()=>mo(e,p,2):()=>(m&&m(),yo(e,p,3,[_])):o,n&&i){const e=g;g=()=>Zo(e())}let _=e=>{m=$.onStop=()=>{mo(e,p,4),m=$.onStop=void 0}},b=v?new Array(e.length).fill(Wo):Wo;const x=()=>{if($.active&&$.dirty)if(n){const e=$.run();(i||y||(v?e.some(((e,t)=>I(e,b[t]))):I(e,b)))&&(m&&m(),yo(n,p,3,[e,b===Wo?void 0:v&&b[0]===Wo?[]:b,_]),b=e)}else $.run()};let w;x.allowRecurse=!!n,"sync"===s?w=x:"post"===s?w=()=>Vr(x,p&&p.suspense):(x.pre=!0,p&&(x.id=p.uid),w=()=>Co(x));const $=new qt(g,o,w),S=Wt,k=()=>{$.stop(),S&&a(S.effects,$)};return n?r?x():b=$.run():"post"===s?Vr($.run.bind($),p&&p.suspense):$.run(),k}function qo(e,t,n){const o=this.proxy,r=g(e)?e.includes(".")?Ko(o,e):()=>o[e]:e.bind(o,o);let i;h(t)?i=t:(i=t.handler,n=t);const s=Gr(this),c=Fo(r,i.bind(o),n);return s(),c}function Ko(e,t){const n=t.split(".");return()=>{let t=e;for(let e=0;e0){if(n>=t)return e;n++}if((o=o||new Set).has(e))return e;if(o.add(e),uo(e))Zo(e.value,t,n,o);else if(f(e))for(let r=0;r{Zo(e,t,n,o)}));else if(x(e))for(const r in e)Zo(e[r],t,n,o);return e}function Go(){return{app:null,config:{isNativeTag:r,performance:!1,globalProperties:{},optionMergeStrategies:{},errorHandler:void 0,warnHandler:void 0,compilerOptions:{}},mixins:[],components:{},directives:{},provides:Object.create(null),optionsCache:new WeakMap,propsCache:new WeakMap,emitsCache:new WeakMap}}let Jo=0;let Qo=null;function Xo(e,t,n=!1){const o=Fr||Vo;if(o||Qo){const r=o?null==o.parent?o.vnode.appContext&&o.vnode.appContext.provides:o.parent.provides:Qo._context.provides;if(r&&e in r)return r[e];if(arguments.length>1)return n&&h(t)?t.call(o&&o.proxy):t}}function Yo(e,t){tr(e,"a",t)}function er(e,t){tr(e,"da",t)}function tr(e,t,n=Fr){const o=e.__wdc||(e.__wdc=()=>{let t=n;for(;t;){if(t.isDeactivated)return;t=t.parent}return e()});if(or(t,o,n),n){let e=n.parent;for(;e&&e.parent;)e.parent.vnode.type.__isKeepAlive&&nr(o,t,n,e),e=e.parent}}function nr(e,t,n,o){const r=or(t,e,o,!0);lr((()=>{a(o[t],r)}),n)}function or(e,t,n=Fr,o=!1){if(n){(function(e){return W.indexOf(e)>-1})(e)&&(n=n.root);const r=n[e]||(n[e]=[]),i=t.__weh||(t.__weh=(...o)=>{if(n.isUnmounted)return;Yt();const r=Gr(n),i=yo(t,n,e,o);return r(),en(),i});return o?r.unshift(i):r.push(i),i}}const rr=e=>(t,n=Fr)=>(!Xr||"sp"===e)&&or(e,((...e)=>t(...e)),n),ir=rr("bm"),sr=rr("m"),cr=rr("bu"),ar=rr("u"),ur=rr("bum"),lr=rr("um"),fr=rr("sp"),pr=rr("rtg"),dr=rr("rtc");function hr(e,t=Fr){or("ec",e,t)}const gr=e=>e?Qr(e)?ti(e)||e.proxy:gr(e.parent):null,mr=c(Object.create(null),{$:e=>e,$el:e=>e.__$el||(e.__$el={}),$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>gr(e.parent),$root:e=>gr(e.root),$emit:e=>e.emit,$options:e=>Sr(e),$forceUpdate:e=>e.f||(e.f=()=>{e.effect.dirty=!0,Co(e.update)}),$watch:e=>qo.bind(e)}),yr=(e,n)=>e!==t&&!e.__isScriptSetup&&l(e,n),vr={get({_:e},n){const{ctx:o,setupState:r,data:i,props:s,accessCache:c,type:a,appContext:u}=e;let f;if("$"!==n[0]){const a=c[n];if(void 0!==a)switch(a){case 1:return r[n];case 2:return i[n];case 4:return o[n];case 3:return s[n]}else{if(yr(r,n))return c[n]=1,r[n];if(i!==t&&l(i,n))return c[n]=2,i[n];if((f=e.propsOptions[0])&&l(f,n))return c[n]=3,s[n];if(o!==t&&l(o,n))return c[n]=4,o[n];br&&(c[n]=0)}}const p=mr[n];let d,h;return p?("$attrs"===n&&fn(e,0,n),p(e)):(d=a.__cssModules)&&(d=d[n])?d:o!==t&&l(o,n)?(c[n]=4,o[n]):(h=u.config.globalProperties,l(h,n)?h[n]:void 0)},set({_:e},n,o){const{data:r,setupState:i,ctx:s}=e;return yr(i,n)?(i[n]=o,!0):r!==t&&l(r,n)?(r[n]=o,!0):!l(e.props,n)&&(("$"!==n[0]||!(n.slice(1)in e))&&(s[n]=o,!0))},has({_:{data:e,setupState:n,accessCache:o,ctx:r,appContext:i,propsOptions:s}},c){let a;return!!o[c]||e!==t&&l(e,c)||yr(n,c)||(a=s[0])&&l(a,c)||l(r,c)||l(mr,c)||l(i.config.globalProperties,c)},defineProperty(e,t,n){return null!=n.get?e._.accessCache[t]=0:l(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function _r(e){return f(e)?e.reduce(((e,t)=>(e[t]=null,e)),{}):e}let br=!0;function xr(e){const t=Sr(e),n=e.proxy,r=e.ctx;br=!1,t.beforeCreate&&wr(t.beforeCreate,e,"bc");const{data:i,computed:s,methods:c,watch:a,provide:u,inject:l,created:p,beforeMount:d,mounted:g,beforeUpdate:m,updated:v,activated:_,deactivated:b,beforeDestroy:x,beforeUnmount:w,destroyed:$,unmounted:S,render:k,renderTracked:O,renderTriggered:P,errorCaptured:A,serverPrefetch:E,expose:C,inheritAttrs:I,components:j,directives:T,filters:R}=t;if(l&&function(e,t,n=o){f(e)&&(e=Ar(e));for(const o in e){const n=e[o];let r;r=y(n)?"default"in n?Xo(n.from||o,n.default,!0):Xo(n.from||o):Xo(n),uo(r)?Object.defineProperty(t,o,{enumerable:!0,configurable:!0,get:()=>r.value,set:e=>r.value=e}):t[o]=r}}(l,r,null),c)for(const o in c){const e=c[o];h(e)&&(r[o]=e.bind(n))}if(i){const t=i.call(n,n);y(t)&&(e.data=Jn(t))}if(br=!0,s)for(const f in s){const e=s[f],t=h(e)?e.bind(n,n):h(e.get)?e.get.bind(n,n):o,i=!h(e)&&h(e.set)?e.set.bind(n):o,c=ni({get:t,set:i});Object.defineProperty(r,f,{enumerable:!0,configurable:!0,get:()=>c.value,set:e=>c.value=e})}if(a)for(const o in a)$r(a[o],r,n,o);function L(e,t){f(t)?t.forEach((t=>e(t.bind(n)))):t&&e(t.bind(n))}if(function(){if(u){const e=h(u)?u.call(n):u;Reflect.ownKeys(e).forEach((t=>{!function(e,t){if(Fr){let n=Fr.provides;const o=Fr.parent&&Fr.parent.provides;o===n&&(n=Fr.provides=Object.create(o)),n[e]=t,"app"===Fr.type.mpType&&Fr.appContext.app.provide(e,t)}}(t,e[t])}))}}(),p&&wr(p,e,"c"),L(ir,d),L(sr,g),L(cr,m),L(ar,v),L(Yo,_),L(er,b),L(hr,A),L(dr,O),L(pr,P),L(ur,w),L(lr,S),L(fr,E),f(C))if(C.length){const t=e.exposed||(e.exposed={});C.forEach((e=>{Object.defineProperty(t,e,{get:()=>n[e],set:t=>n[e]=t})}))}else e.exposed||(e.exposed={});k&&e.render===o&&(e.render=k),null!=I&&(e.inheritAttrs=I),j&&(e.components=j),T&&(e.directives=T),e.ctx.$onApplyOptions&&e.ctx.$onApplyOptions(t,e,n)}function wr(e,t,n){yo(f(e)?e.map((e=>e.bind(t.proxy))):e.bind(t.proxy),t,n)}function $r(e,t,n,o){const r=o.includes(".")?Ko(n,o):()=>n[o];if(g(e)){const n=t[e];h(n)&&zo(r,n)}else if(h(e))zo(r,e.bind(n));else if(y(e))if(f(e))e.forEach((e=>$r(e,t,n,o)));else{const o=h(e.handler)?e.handler.bind(n):t[e.handler];h(o)&&zo(r,o,e)}}function Sr(e){const t=e.type,{mixins:n,extends:o}=t,{mixins:r,optionsCache:i,config:{optionMergeStrategies:s}}=e.appContext,c=i.get(t);let a;return c?a=c:r.length||n||o?(a={},r.length&&r.forEach((e=>kr(a,e,s,!0))),kr(a,t,s)):a=t,y(t)&&i.set(t,a),a}function kr(e,t,n,o=!1){const{mixins:r,extends:i}=t;i&&kr(e,i,n,!0),r&&r.forEach((t=>kr(e,t,n,!0)));for(const s in t)if(o&&"expose"===s);else{const o=Or[s]||n&&n[s];e[s]=o?o(e[s],t[s]):t[s]}return e}const Or={data:Pr,props:Ir,emits:Ir,methods:Cr,computed:Cr,beforeCreate:Er,created:Er,beforeMount:Er,mounted:Er,beforeUpdate:Er,updated:Er,beforeDestroy:Er,beforeUnmount:Er,destroyed:Er,unmounted:Er,activated:Er,deactivated:Er,errorCaptured:Er,serverPrefetch:Er,components:Cr,directives:Cr,watch:function(e,t){if(!e)return t;if(!t)return e;const n=c(Object.create(null),e);for(const o in t)n[o]=Er(e[o],t[o]);return n},provide:Pr,inject:function(e,t){return Cr(Ar(e),Ar(t))}};function Pr(e,t){return t?e?function(){return c(h(e)?e.call(this,this):e,h(t)?t.call(this,this):t)}:t:e}function Ar(e){if(f(e)){const t={};for(let n=0;n{d=!0;const[t,n]=Lr(e,o,!0);c(u,t),n&&p.push(...n)};!r&&o.mixins.length&&o.mixins.forEach(t),e.extends&&t(e.extends),e.mixins&&e.mixins.forEach(t)}if(!a&&!d)return y(e)&&i.set(e,n),n;if(f(a))for(let n=0;n-1,o[1]=n<0||t-1||l(o,"default"))&&p.push(e)}}}const g=[u,p];return y(e)&&i.set(e,g),g}function Mr(e){return"$"!==e[0]&&!$(e)}function Dr(e){if(null===e)return"null";if("function"==typeof e)return e.name||"";if("object"==typeof e){return e.constructor&&e.constructor.name||""}return""}function Nr(e,t){return Dr(e)===Dr(t)}function Hr(e,t){return f(t)?t.findIndex((t=>Nr(t,e))):h(t)&&Nr(t,e)?0:-1}const Vr=jo;function Br(e){return e?Yn(t=e)||eo(t)||"__vInternal"in e?c({},e):e:null;var t}const Ur=Go();let Wr=0;function zr(e,n,o){const r=e.type,i=(n?n.appContext:e.appContext)||Ur,s={uid:Wr++,vnode:e,type:r,parent:n,appContext:i,root:null,next:null,subTree:null,effect:null,update:null,scope:new Ft(!0),render:null,proxy:null,exposed:null,exposeProxy:null,withProxy:null,provides:n?n.provides:Object.create(i.provides),accessCache:null,renderCache:[],components:null,directives:null,propsOptions:Lr(r,i),emitsOptions:No(r,i),emit:null,emitted:null,propsDefaults:t,inheritAttrs:r.inheritAttrs,ctx:t,data:t,props:t,attrs:t,slots:t,refs:t,setupState:t,setupContext:null,attrsProxy:null,slotsProxy:null,suspense:o,suspenseId:o?o.pendingId:0,asyncDep:null,asyncResolved:!1,isMounted:!1,isUnmounted:!1,isDeactivated:!1,bc:null,c:null,bm:null,m:null,bu:null,u:null,um:null,bum:null,da:null,a:null,rtg:null,rtc:null,ec:null,sp:null,$uniElements:new Map,$templateUniElementRefs:[],$templateUniElementStyles:{},$eS:{},$eA:{}};return s.ctx={_:s},s.root=n?n.root:s,s.emit=Do.bind(null,s),e.ce&&e.ce(s),s}let Fr=null;const qr=()=>Fr||Vo;let Kr,Zr;Kr=e=>{Fr=e},Zr=e=>{Xr=e};const Gr=e=>{const t=Fr;return Kr(e),e.scope.on(),()=>{e.scope.off(),Kr(t)}},Jr=()=>{Fr&&Fr.scope.off(),Kr(null)};function Qr(e){return 4&e.vnode.shapeFlag}let Xr=!1;function Yr(e,t=!1){t&&Zr(t);const{props:n}=e.vnode,o=Qr(e);jr(e,n,o,t);const r=o?function(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=oo(new Proxy(e.ctx,vr));const{setup:o}=n;if(o){const t=e.setupContext=o.length>1?function(e){const t=t=>{e.exposed=t||{}};return{get attrs(){return function(e){return e.attrsProxy||(e.attrsProxy=new Proxy(e.attrs,{get:(t,n)=>(fn(e,0,"$attrs"),t[n])}))}(e)},slots:e.slots,emit:e.emit,expose:t}}(e):null,n=Gr(e);Yt();const r=mo(o,e,0,[e.props,t]);en(),n(),v(r)?r.then(Jr,Jr):function(e,t,n){h(t)?e.render=t:y(t)&&(e.setupState=go(t));ei(e)}(e,r)}else ei(e)}(e):void 0;return t&&Zr(!1),r}function ei(e,t,n){const r=e.type;e.render||(e.render=r.render||o);{const t=Gr(e);Yt();try{xr(e)}finally{en(),t()}}}function ti(e){if(e.exposed)return e.exposeProxy||(e.exposeProxy=new Proxy(go(oo(e.exposed)),{get:(t,n)=>n in t?t[n]:e.proxy[n],has:(e,t)=>t in e||t in mr}))}const ni=(e,t)=>{const n=function(e,t,n=!1){let r,i;const s=h(e);return s?(r=e,i=o):(r=e.get,i=e.set),new so(r,i,s||!i,n)}(e,0,Xr);return n},oi="3.4.21";function ri(e){return po(e)}const ii="[object Array]",si="[object Object]";function ci(e,t){const n={};return ai(e,t),ui(e,t,"",n),n}function ai(e,t){if((e=ri(e))===t)return;const n=b(e),o=b(t);if(n==si&&o==si)for(let r in t){const n=e[r];void 0===n?e[r]=null:ai(n,t[r])}else n==ii&&o==ii&&e.length>=t.length&&t.forEach(((t,n)=>{ai(e[n],t)}))}function ui(e,t,n,o){if((e=ri(e))===t)return;const r=b(e),i=b(t);if(r==si)if(i!=si||Object.keys(e).length{ui(e,i[t],(""==n?"":n+".")+s+"["+t+"]",o)}));else if(c==si)if(a!=si||Object.keys(r).length{ui(e,t[r],n+"["+r+"]",o)})):li(o,n,e)}function li(e,t,n){e[t]=n}function fi(e){const t=e.ctx.__next_tick_callbacks;if(t&&t.length){const e=t.slice(0);t.length=0;for(let t=0;t{t?mo(t.bind(e.proxy),e,14):o&&o(e.proxy)})),new Promise((e=>{o=e}))}function di(e,t){const n=typeof(e=ri(e));if("object"===n&&null!==e){let n=t.get(e);if(void 0!==n)return n;if(f(e)){const o=e.length;n=new Array(o),t.set(e,n);for(let r=0;r{o[e]=n[e]})),o}(r,i));Object.keys(s).length?(o.__next_tick_pending=!0,r.setData(s,(()=>{o.__next_tick_pending=!1,fi(e)})),To()):fi(e)}}function mi(e,t,n){t.appContext.config.globalProperties.$applyOptions(e,t,n);const o=e.computed;if(o){const e=Object.keys(o);if(e.length){const n=t.ctx;n.$computedKeys||(n.$computedKeys=[]),n.$computedKeys.push(...e)}}delete t.ctx.$onApplyOptions}function yi(e,t=!1){const{setupState:n,$templateRefs:o,$templateUniElementRefs:r,ctx:{$scope:i,$mpPlatform:s}}=e;if("mp-alipay"===s)return;if(!i||!o&&!r)return;if(t)return o&&o.forEach((e=>vi(e,null,n))),void(r&&r.forEach((e=>vi(e,null,n))));const c="mp-baidu"===s||"mp-toutiao"===s,a=e=>{if(0===e.length)return[];const t=(i.selectAllComponents(".r")||[]).concat(i.selectAllComponents(".r-i-f")||[]);return e.filter((e=>{const o=function(e,t){const n=e.find((e=>e&&(e.properties||e.props).uI===t));if(n){const e=n.$vm;return e?ti(e.$)||e:function(e){y(e)&&oo(e);return e}(n)}return null}(t,e.i);return!(!c||null!==o)||(vi(e,o,n),!1)}))},u=()=>{if(o){const t=a(o);t.length&&e.proxy&&e.proxy.$scope&&e.proxy.$scope.setData({r1:1},(()=>{a(t)}))}};r&&r.length&&pi(e,(()=>{r.forEach((e=>{f(e.v)?e.v.forEach((t=>{vi(e,t,n)})):vi(e,e.v,n)}))})),i._$setRef?i._$setRef(u):pi(e,u)}function vi({r:e,f:t},n,o){if(h(e))e(n,{});else{const r=g(e),i=uo(e);if(r||i)if(t){if(!i)return;f(e.value)||(e.value=[]);const t=e.value;if(-1===t.indexOf(n)){if(t.push(n),!n)return;n.$&&ur((()=>a(t,n)),n.$)}}else r?l(o,e)&&(o[e]=n):uo(e)&&(e.value=n)}}const _i=jo;function bi(e,t){const n=e.component=zr(e,t.parentComponent,null);return n.ctx.$onApplyOptions=mi,n.ctx.$children=[],"app"===t.mpType&&(n.render=o),t.onBeforeSetup&&t.onBeforeSetup(n,t),Yr(n),t.parentComponent&&n.proxy&&t.parentComponent.ctx.$children.push(ti(n)||n.proxy),function(e){const t=$i.bind(e);e.$updateScopedSlots=()=>Eo((()=>Co(t)));const n=()=>{if(e.isMounted){const{next:t,bu:n,u:o}=e;Si(e,!1),Yt(),To(),en(),n&&j(n),Si(e,!0),gi(e,xi(e)),o&&_i(o)}else ur((()=>{yi(e,!0)}),e),gi(e,xi(e))},r=e.effect=new qt(n,o,(()=>Co(i)),e.scope),i=e.update=()=>{r.dirty&&r.run()};i.id=e.uid,Si(e,!0),i()}(n),n.proxy}function xi(e){const{type:t,vnode:n,proxy:o,withProxy:r,props:s,propsOptions:[c],slots:a,attrs:u,emit:l,render:f,renderCache:p,data:d,setupState:h,ctx:g,uid:m,appContext:{app:{config:{globalProperties:{pruneComponentPropsCache:y}}}},inheritAttrs:v}=e;let _;e.$uniElementIds=new Map,e.$templateRefs=[],e.$templateUniElementRefs=[],e.$templateUniElementStyles={},e.$ei=0,y(m),e.__counter=0===e.__counter?1:0;const b=Bo(e);try{if(4&n.shapeFlag){wi(v,s,c,u);const e=r||o;_=f.call(e,e,p,s,h,d,g)}else{wi(v,s,c,t.props?u:(e=>{let t;for(const n in e)("class"===n||"style"===n||i(n))&&((t||(t={}))[n]=e[n]);return t})(u));const e=t;_=e.length>1?e(s,{attrs:u,slots:a,emit:l}):e(s,null)}}catch(x){vo(x,e,1),_=!1}return yi(e),Bo(b),_}function wi(e,t,n,o){if(t&&o&&!1!==e){const e=Object.keys(o).filter((e=>"class"!==e&&"style"!==e));if(!e.length)return;n&&e.some(s)?e.forEach((e=>{s(e)&&e.slice(9)in n||(t[e]=o[e])})):e.forEach((e=>t[e]=o[e]))}}function $i(){const e=this.$scopedSlotsData;if(!e||0===e.length)return;const t=this.ctx.$scope,n=t.data,o=Object.create(null);e.forEach((({path:e,index:t,data:r})=>{const i=N(n,e),s=g(t)?`${e}.${t}`:`${e}[${t}]`;if(void 0===i||void 0===i[t])o[s]=r;else{const e=ci(r,i[t]);Object.keys(e).forEach((t=>{o[s+"."+t]=e[t]}))}})),e.length=0,Object.keys(o).length&&t.setData(o)}function Si({effect:e,update:t},n){e.allowRecurse=t.allowRecurse=n}const ki=function(e,t=null){h(e)||(e=c({},e)),null==t||y(t)||(t=null);const n=Go(),o=new WeakSet,r=n.app={_uid:Jo++,_component:e,_props:t,_container:null,_context:n,_instance:null,version:oi,get config(){return n.config},set config(e){},use:(e,...t)=>(o.has(e)||(e&&h(e.install)?(o.add(e),e.install(r,...t)):h(e)&&(o.add(e),e(r,...t))),r),mixin:e=>(n.mixins.includes(e)||n.mixins.push(e),r),component:(e,t)=>t?(n.components[e]=t,r):n.components[e],directive:(e,t)=>t?(n.directives[e]=t,r):n.directives[e],mount(){},unmount(){},provide:(e,t)=>(n.provides[e]=t,r),runWithContext(e){const t=Qo;Qo=r;try{return e()}finally{Qo=t}}};return r};function Oi(e,t=null){("undefined"!=typeof window?window:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof global?global:"undefined"!=typeof my?my:void 0).__VUE__=!0;const n=ki(e,t),r=n._context;r.config.globalProperties.$nextTick=function(e){return pi(this.$,e)};const i=e=>(e.appContext=r,e.shapeFlag=6,e),s=function(e,t){return bi(i(e),t)},c=function(e){return e&&function(e){const{bum:t,scope:n,update:o,um:r}=e;t&&j(t);{const t=e.parent;if(t){const n=t.ctx.$children,o=ti(e)||e.proxy,r=n.indexOf(o);r>-1&&n.splice(r,1)}}n.stop(),o&&(o.active=!1),r&&_i(r),_i((()=>{e.isUnmounted=!0}))}(e.$)};return n.mount=function(){e.render=o;const t=bi(i({type:e}),{mpType:"app",mpInstance:null,parentComponent:null,slots:[],props:null});return n._instance=t.$,t.$app=n,t.$createComponent=s,t.$destroyComponent=c,r.$appInstance=t,t},n.unmount=function(){},n}function Pi(e,t,n,o){h(t)&&or(e,t.bind(n),o)}function Ai(e,t,n){!function(e,t,n){const o=e.mpType||n.$mpType;o&&"component"!==o&&Object.keys(e).forEach((o=>{if(q(o,e[o],!1)){const r=e[o];f(r)?r.forEach((e=>Pi(o,e,n,t))):Pi(o,r,n,t)}}))}(e,t,n)}function Ei(e,t,n){return e[t]=n}function Ci(e,...t){const n=this[e];return n?n(...t):(console.error(`method ${e} not found`),null)}function Ii(e){const t=e.config.errorHandler;return function(n,o,r){t&&t(n,o,r);const i=e._instance;if(!i||!i.proxy)throw n;i.onError?i.proxy.$callHook("onError",n):_o(n,0,o&&o.$.vnode,!1)}}function ji(e,t){return e?[...new Set([].concat(e,t))]:t}let Ti;const Ri="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",Li=/^(?:[A-Za-z\d+/]{4})*?(?:[A-Za-z\d+/]{2}(?:==)?|[A-Za-z\d+/]{3}=?)?$/;function Mi(){const e=Ut.getStorageSync("uni_id_token")||"",t=e.split(".");if(!e||3!==t.length)return{uid:null,role:[],permission:[],tokenExpired:0};let n;try{n=JSON.parse((o=t[1],decodeURIComponent(Ti(o).split("").map((function(e){return"%"+("00"+e.charCodeAt(0).toString(16)).slice(-2)})).join(""))))}catch(r){throw new Error("获取当前用户信息出错,详细错误信息为:"+r.message)}var o;return n.tokenExpired=1e3*n.exp,delete n.exp,delete n.iat,n}function Di(e){const t=e.config;var n;t.errorHandler=G(e,Ii),n=t.optionMergeStrategies,z.forEach((e=>{n[e]=ji}));const o=t.globalProperties;!function(e){e.uniIDHasRole=function(e){const{role:t}=Mi();return t.indexOf(e)>-1},e.uniIDHasPermission=function(e){const{permission:t}=Mi();return this.uniIDHasRole("admin")||t.indexOf(e)>-1},e.uniIDTokenValid=function(){const{tokenExpired:e}=Mi();return e>Date.now()}}(o),o.$set=Ei,o.$applyOptions=Ai,o.$callMethod=Ci,Ut.invokeCreateVueAppHook(e)}Ti="function"!=typeof atob?function(e){if(e=String(e).replace(/[\t\n\f\r ]+/g,""),!Li.test(e))throw new Error("Failed to execute 'atob' on 'Window': The string to be decoded is not correctly encoded.");var t;e+="==".slice(2-(3&e.length));for(var n,o,r="",i=0;i>16&255):64===o?String.fromCharCode(t>>16&255,t>>8&255):String.fromCharCode(t>>16&255,t>>8&255,255&t);return r}:atob;const Ni=Object.create(null);function Hi(e){delete Ni[e]}function Vi(e){if(!e)return;const[t,n]=e.split(",");return Ni[t]?Ni[t][parseInt(n)]:void 0}var Bi={install(e){Di(e),e.config.globalProperties.pruneComponentPropsCache=Hi;const t=e.mount;e.mount=function(n){const o=t.call(e,n),r=function(){const e="createApp";if("undefined"!=typeof global&&void 0!==global[e])return global[e];if("undefined"!=typeof my)return my[e]}();return r?r(o):"undefined"!=typeof createMiniProgramApp&&createMiniProgramApp(o),o}}};function Ui(e,t){const n=qr(),r=n.ctx,i=void 0===t||"mp-weixin"!==r.$mpPlatform&&"mp-qq"!==r.$mpPlatform&&"mp-xhs"!==r.$mpPlatform||!g(t)&&"number"!=typeof t?"":"_"+t,s="e"+n.$ei+++i,a=r.$scope;if(!e)return delete a[s],s;const u=a[s];return u?u.value=e:a[s]=function(e,t){const n=e=>{var r;(r=e).type&&r.target&&(r.preventDefault=o,r.stopPropagation=o,r.stopImmediatePropagation=o,l(r,"detail")||(r.detail={}),l(r,"markerId")&&(r.detail="object"==typeof r.detail?r.detail:{},r.detail.markerId=r.markerId),x(r.detail)&&l(r.detail,"checked")&&!l(r.detail,"value")&&(r.detail.value=r.detail.checked),x(r.detail)&&(r.target=c({},r.target,r.detail)));let i=[e];t&&t.ctx.$getTriggerEventDetail&&"number"==typeof e.detail&&(e.detail=t.ctx.$getTriggerEventDetail(e.detail)),e.detail&&e.detail.__args__&&(i=e.detail.__args__);const s=n.value,a=()=>yo(function(e,t){if(f(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n&&n.call(e),e._stopped=!0},t.map((e=>t=>!t._stopped&&e(t)))}return t}(e,s),t,5,i),u=e.target,p=!!u&&(!!u.dataset&&"true"===String(u.dataset.eventsync));if(!Wi.includes(e.type)||p){const t=a();if("input"===e.type&&(f(t)||v(t)))return;return t}setTimeout(a)};return n.value=e,n}(e,n),s}const Wi=["tap","longpress","longtap","transitionend","animationstart","animationiteration","animationend","touchforcechange"];const zi=function(e,t=null){return e&&(e.mpType="app"),Oi(e,t).use(Bi)};const Fi=["externalClasses"];const qi=/_(.*)_worklet_factory_/;function Ki(e,t){const n=e.$children;for(let r=n.length-1;r>=0;r--){const e=n[r];if(e.$scope._$vueId===t)return e}let o;for(let r=n.length-1;r>=0;r--)if(o=Ki(n[r],t),o)return o}const Zi=["createSelectorQuery","createIntersectionObserver","selectAllComponents","selectComponent"];function Gi(e,t){const n=e.ctx;n.mpType=t.mpType,n.$mpType=t.mpType,n.$mpPlatform="mp-weixin",n.$scope=t.mpInstance,Object.defineProperties(n,{virtualHostId:{get(){const e=this.$scope.data.virtualHostId;return void 0===e?"":e}}}),n.$mp={},n._self={},e.slots={},f(t.slots)&&t.slots.length&&(t.slots.forEach((t=>{e.slots[t]=!0})),e.slots.d&&(e.slots.default=!0)),n.getOpenerEventChannel=function(){return t.mpInstance.getOpenerEventChannel()},n.$hasHook=Ji,n.$callHook=Qi,e.emit=function(e,t){return function(n,...o){const r=t.$scope;if(r&&n){const e={__args__:o};r.triggerEvent(n,e)}return e.apply(this,[n,...o])}}(e.emit,n)}function Ji(e){const t=this.$[e];return!(!t||!t.length)}function Qi(e,t){"mounted"===e&&(Qi.call(this,"bm"),this.$.isMounted=!0,e="m");const n=this.$[e];return n&&((e,t)=>{let n;for(let o=0;o{q(n,e[n])&&t.add(n)}));{const{extends:n,mixins:o}=e;o&&o.forEach((e=>Yi(e,t))),n&&Yi(n,t)}}return t}function es(e,t,n){-1!==n.indexOf(t)||l(e,t)||(e[t]=function(e){return this.$vm&&this.$vm.$callHook(t,e)})}const ts=["onReady"];function ns(e,t,n=ts){t.forEach((t=>es(e,t,n)))}function os(e,t,n=ts){Yi(t).forEach((t=>es(e,t,n)))}const rs=D((()=>{const e=[],t=h(getApp)&&getApp({allowDefault:!0});if(t&&t.$vm&&t.$vm.$){const n=t.$vm.$.appContext.mixins;if(f(n)){const t=Object.keys(F);n.forEach((n=>{t.forEach((t=>{l(n,t)&&!e.includes(t)&&e.push(t)}))}))}}return e}));const is=["onShow","onHide","onError","onThemeChange","onPageNotFound","onUnhandledRejection"];function ss(e,t){const n=e.$,o={globalData:e.$options&&e.$options.globalData||{},$vm:e,onLaunch(t){this.$vm=e;const o=n.ctx;this.$vm&&o.$scope&&o.$callHook||(Gi(n,{mpType:"app",mpInstance:this,slots:[]}),o.globalData=this.globalData,e.$callHook("onLaunch",t))}},r=wx.$onErrorHandlers;r&&(r.forEach((e=>{or("onError",e,n)})),r.length=0),function(e){const t=lo(function(){var e;let t="";{const n=(null===(e=wx.getAppBaseInfo)||void 0===e?void 0:e.call(wx))||wx.getSystemInfoSync();t=X(n&&n.language?n.language:"en")||"en"}return t}());Object.defineProperty(e,"$locale",{get:()=>t.value,set(e){t.value=e}})}(e);const i=e.$.type;ns(o,is),os(o,i);{const e=i.methods;e&&c(o,e)}return o}function cs(e,t){if(h(e.onLaunch)){const t=wx.getLaunchOptionsSync&&wx.getLaunchOptionsSync();e.onLaunch(t)}h(e.onShow)&&wx.onAppShow&&wx.onAppShow((e=>{t.$callHook("onShow",e)})),h(e.onHide)&&wx.onAppHide&&wx.onAppHide((e=>{t.$callHook("onHide",e)}))}const as=["eO","uR","uRIF","uI","uT","uP","uS"];function us(e){e.properties||(e.properties={}),c(e.properties,function(e,t=!1){const n={};if(!t){let e=function(e){const t=Object.create(null);e&&e.forEach((e=>{t[e]=!0})),this.setData({$slots:t})};as.forEach((e=>{n[e]={type:null,value:""}})),n.uS={type:null,value:[]},n.uS.observer=e}return e.behaviors&&e.behaviors.includes("wx://form-field")&&(e.properties&&e.properties.name||(n.name={type:null,value:""}),e.properties&&e.properties.value||(n.value={type:null,value:""})),n}(e),function(e){const t={};return e&&e.virtualHost&&(t.virtualHostStyle={type:null,value:""},t.virtualHostClass={type:null,value:""},t.virtualHostHidden={type:null,value:""},t.virtualHostId={type:null,value:""}),t}(e.options))}const ls=[String,Number,Boolean,Object,Array,null];function fs(e,t){const n=function(e,t){return f(e)&&1===e.length?e[0]:e}(e);return-1!==ls.indexOf(n)?n:null}function ps(e,t){return(t?function(e){const t={};x(e)&&Object.keys(e).forEach((n=>{-1===as.indexOf(n)&&(t[n]=e[n])}));return t}(e):Vi(e.uP))||{}}function ds(e){const t=function(){const e=this.properties.uP;e&&(this.$vm?function(e,t){const n=no(t.props),o=Vi(e)||{};hs(n,o)&&(!function(e,t,n,o){const{props:r,attrs:i,vnode:{patchFlag:s}}=e,c=no(r),[a]=e.propsOptions;let u=!1;if(!(o||s>0)||16&s){let o;Tr(e,t,r,i)&&(u=!0);for(const i in c)t&&(l(t,i)||(o=A(i))!==i&&l(t,o))||(a?!n||void 0===n[i]&&void 0===n[o]||(r[i]=Rr(a,c,i,void 0,e,!0)):delete r[i]);if(i!==c)for(const e in i)t&&l(t,e)||(delete i[e],u=!0)}else if(8&s){const n=e.vnode.dynamicProps;for(let o=0;o-1&&function(e){const t=wo.indexOf(e);t>$o&&wo.splice(t,1)}(t.update),t.update());var r}(e,this.$vm.$):"m"===this.properties.uT&&function(e,t){const n=t.properties,o=Vi(e)||{};hs(n,o,!1)&&t.setData(o)}(e,this))};e.observers||(e.observers={}),e.observers.uP=t}function hs(e,t,n=!0){const o=Object.keys(t);if(n&&o.length!==Object.keys(e).length)return!0;for(let r=0;r{o.push(e.replace("uni://","wx://")),"uni://form-field"===e&&(f(n)?(n.push("name"),n.push("modelValue")):(n.name={type:String,default:""},n.modelValue={type:[String,Number,Boolean,Array,Object,Date],default:""}))})),o}(t)}function ms(e,{parse:t,mocks:n,isPage:o,isPageInProject:r,initRelation:i,handleLink:s,initLifetimes:a}){e=e.default||e;const u={multipleSlots:!0,addGlobalClass:!0,pureDataPattern:/^uP$/};f(e.mixins)&&e.mixins.forEach((e=>{y(e.options)&&c(u,e.options)})),e.options&&c(u,e.options);const p={options:u,lifetimes:a({mocks:n,isPage:o,initRelation:i,vueOptions:e}),pageLifetimes:{show(){this.$vm&&this.$vm.$callHook("onPageShow")},hide(){this.$vm&&this.$vm.$callHook("onPageHide")},resize(e){this.$vm&&this.$vm.$callHook("onPageResize",e)}},methods:{__l:s}};var d,h,g,m;return gs(p,e),us(p),ds(p),function(e,t){Fi.forEach((n=>{l(t,n)&&(e[n]=t[n])}))}(p,e),d=p.methods,h=e.wxsCallMethods,f(h)&&h.forEach((e=>{d[e]=function(t){return this.$vm[e](t)}})),g=p.methods,(m=e.methods)&&Object.keys(m).forEach((e=>{const t=e.match(qi);if(t){const n=t[1];g[e]=m[e],g[n]=m[n]}})),t&&t(p,{handleLink:s}),p}let ys,vs;function _s(){return getApp().$vm}function bs(e,t){const{parse:n,mocks:o,isPage:r,initRelation:i,handleLink:s,initLifetimes:c}=t,a=ms(e,{mocks:o,isPage:r,isPageInProject:!0,initRelation:i,handleLink:s,initLifetimes:c});!function({properties:e},t){f(t)?t.forEach((t=>{e[t]={type:String,value:""}})):x(t)&&Object.keys(t).forEach((n=>{const o=t[n];if(x(o)){let t=o.default;h(t)&&(t=t());const r=o.type;o.type=fs(r),e[n]={type:o.type,value:t}}else e[n]={type:fs(o)}}))}(a,(e.default||e).props);const u=a.methods;return u.onLoad=function(e){var t;return this.options=e,this.$page={fullPath:(t=this.route+U(e),function(e){return 0===e.indexOf("/")}(t)?t:"/"+t)},this.$vm&&this.$vm.$callHook("onLoad",e)},ns(u,Xi),os(u,e),function(e,t){if(!t)return;Object.keys(F).forEach((n=>{t&F[n]&&es(e,n,[])}))}(u,e.__runtimeHooks),ns(u,rs()),n&&n(a,{handleLink:s}),a}const xs=Page,ws=Component;function $s(e){const t=e.triggerEvent,n=function(n,...o){return t.apply(e,[(r=n,O(r.replace(V,"-"))),...o]);var r};try{e.triggerEvent=n}catch(o){e._triggerEvent=n}}function Ss(e,t,n){const o=t[e];t[e]=o?function(...e){return $s(this),o.apply(this,e)}:function(){$s(this)}}Page=function(e){return Ss("onLoad",e),xs(e)},Component=function(e){Ss("created",e);return e.properties&&e.properties.uP||(us(e),ds(e)),ws(e)};var ks=Object.freeze({__proto__:null,handleLink:function(e){const t=e.detail||e.value,n=t.vuePid;let o;n&&(o=Ki(this.$vm,n)),o||(o=this.$vm),t.parent=o},initLifetimes:function({mocks:e,isPage:t,initRelation:n,vueOptions:o}){return{attached(){let r=this.properties;!function(e,t){if(!e)return;const n=e.split(","),o=n.length;1===o?t._$vueId=n[0]:2===o&&(t._$vueId=n[0],t._$vuePid=n[1])}(r.uI,this);const i={vuePid:this._$vuePid};n(this,i);const s=this,c=t(s);let a=r;this.$vm=function(e,t){ys||(ys=_s().$createComponent);const n=ys(e,t);return ti(n.$)||n}({type:o,props:ps(a,c)},{mpType:c?"page":"component",mpInstance:s,slots:r.uS||{},parentComponent:i.parent&&i.parent.$,onBeforeSetup(t,n){!function(e,t){Object.defineProperty(e,"refs",{get(){const e={};return function(e,t,n){e.selectAllComponents(t).forEach((e=>{const t=e.properties.uR;n[t]=e.$vm||e}))}(t,".r",e),t.selectAllComponents(".r-i-f").forEach((t=>{const n=t.properties.uR;n&&(e[n]||(e[n]=[]),e[n].push(t.$vm||t))})),e}})}(t,s),function(e,t,n){const o=e.ctx;n.forEach((n=>{l(t,n)&&(e[n]=o[n]=t[n])}))}(t,s,e),function(e,t){Gi(e,t);const n=e.ctx;Zi.forEach((e=>{n[e]=function(...t){const o=n.$scope;if(o&&o[e])return o[e].apply(o,t)}}))}(t,n)}}),c||function(e){const t=e.$options;f(t.behaviors)&&t.behaviors.includes("uni://form-field")&&e.$watch("modelValue",(()=>{e.$scope&&e.$scope.setData({name:e.name,value:e.modelValue})}),{immediate:!0})}(this.$vm)},ready(){this.$vm&&(this.$vm.$callHook("mounted"),this.$vm.$callHook("onReady"))},detached(){var e;this.$vm&&(Hi(this.$vm.$.uid),e=this.$vm,vs||(vs=_s().$destroyComponent),vs(e))}}},initRelation:function(e,t){e.triggerEvent("__l",t)},isPage:function(e){return!!e.route},mocks:["__route__","__wxExparserNodeId__","__wxWebviewId__"]});const Os=function(e){return App(ss(e))},Ps=(As=ks,function(e){return Component(bs(e,As))});var As;const Es=function(e){return function(t){return Component(ms(t,e))}}(ks),Cs=function(e){cs(ss(e),e)},Is=function(e){const t=ss(e),n=h(getApp)&&getApp({allowDefault:!0});if(!n)return;e.$.ctx.$scope=n;const o=n.globalData;o&&Object.keys(t.globalData).forEach((e=>{l(o,e)||(o[e]=t.globalData[e])})),Object.keys(t).forEach((e=>{l(n,e)||(n[e]=t[e])})),cs(t,e)};function js(e,t=new WeakMap){if(null===e||"object"!=typeof e)return e;if(t.has(e))return t.get(e);let n;if(e instanceof Date)n=new Date(e.getTime());else if(e instanceof RegExp)n=new RegExp(e);else if(e instanceof Map)n=new Map(Array.from(e,(([e,n])=>[e,js(n,t)])));else if(e instanceof Set)n=new Set(Array.from(e,(e=>js(e,t))));else if(Array.isArray(e))n=e.map((e=>js(e,t)));else if("[object Object]"===Object.prototype.toString.call(e)){n=Object.create(Object.getPrototypeOf(e)),t.set(e,n);for(const[o,r]of Object.entries(e))n[o]=js(r,t)}else n=Object.assign({},e);return t.set(e,n),n}function Ts(e={},t={}){if("object"!=typeof(e=js(e))||null===e||"object"!=typeof t||null===t)return e;const n=Array.isArray(e)?e.slice():Object.assign({},e);for(const o in t){if(!t.hasOwnProperty(o))continue;const e=t[o],r=n[o];e instanceof Date?n[o]=new Date(e):e instanceof RegExp?n[o]=new RegExp(e):e instanceof Map?n[o]=new Map(e):e instanceof Set?n[o]=new Set(e):n[o]="object"==typeof e&&null!==e?Ts(r,e):e}return n}function Rs(e){switch(typeof e){case"undefined":return!0;case"string":if(0==e.replace(/(^[ \t\n\r]*)|([ \t\n\r]*$)/g,"").length)return!0;break;case"boolean":if(!e)return!0;break;case"number":if(0===e||isNaN(e))return!0;break;case"object":if(null===e||0===e.length)return!0;for(var t in e)return!1;return!0}return!1}wx.createApp=global.createApp=Os,wx.createPage=Ps,wx.createComponent=Es,wx.createPluginApp=global.createPluginApp=Cs,wx.createSubpackageApp=global.createSubpackageApp=Is;const Ls={email:function(e){return/[\w!#$%&'*+/=?^_`{|}~-]+(?:\.[\w!#$%&'*+/=?^_`{|}~-]+)*@(?:[\w](?:[\w-]*[\w])?\.)+[\w](?:[\w-]*[\w])?/.test(e)},mobile:function(e){return/^1[3-9]\d{9}$/.test(e)},url:function(e){return/http(s)?:\/\/([\w-]+\.)+[\w-]+(\/[\w-.\/?%&=]*)?/.test(e)},date:function(e){return!/Invalid|NaN/.test(new Date(e).toString())},dateISO:function(e){return/^\d{4}[\/\-](0?[1-9]|1[012])[\/\-](0?[1-9]|[12][0-9]|3[01])$/.test(e)},number:function(e){return/^[\+-]?(\d+\.?\d*|\.\d+|\d\.\d+e\+\d+)$/.test(e)},digits:function(e){return/^\d+$/.test(e)},idCard:function(e){return/^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$/.test(e)},carNo:function(e){const t=/^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}(([0-9]{5}[DF]$)|([DF][A-HJ-NP-Z0-9][0-9]{4}$))/,n=/^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}[A-HJ-NP-Z0-9]{4}[A-HJ-NP-Z0-9挂学警港澳]{1}$/;return 7===e.length?n.test(e):8===e.length&&t.test(e)},amount:function(e){return/^[1-9]\d*(,\d{3})*(\.\d{1,2})?$|^0\.\d{1,2}$/.test(e)},chinese:function(e){return/^[\u4e00-\u9fa5]+$/gi.test(e)},letter:function(e){return/^[a-zA-Z]*$/.test(e)},enOrNum:function(e){return/^[0-9a-zA-Z]*$/g.test(e)},contains:function(e,t){return e.indexOf(t)>=0},range:function(e,t){return e>=t[0]&&e<=t[1]},rangeLength:function(e,t){return e.length>=t[0]&&e.length<=t[1]},empty:Rs,isEmpty:Rs,jsonString:function(e){if("string"==typeof e)try{var t=JSON.parse(e);return!("object"!=typeof t||!t)}catch(n){return!1}return!1},landline:function(e){return/^\d{3,4}-\d{7,8}(-\d{3,4})?$/.test(e)},object:function(e){return"[object Object]"===Object.prototype.toString.call(e)},array:function(e){return"function"==typeof Array.isArray?Array.isArray(e):"[object Array]"===Object.prototype.toString.call(e)},code:function(e,t=6){return new RegExp(`^\\d{${t}}$`).test(e)}};const Ms=new class{setConfig(e){this.config=Ts(this.config,e)}request(e={}){if(this.interceptor.request&&"function"==typeof this.interceptor.request){let t=this.interceptor.request(e);if(!1===t)return new Promise((()=>{}));this.options=t}return e.dataType=e.dataType||this.config.dataType,e.responseType=e.responseType||this.config.responseType,e.url=e.url||"",e.params=e.params||{},e.header=Object.assign({},this.config.header,e.header),e.method=e.method||this.config.method,new Promise(((t,n)=>{e.complete=e=>{if(Ut.hideLoading(),clearTimeout(this.config.timer),this.config.timer=null,this.config.originalData)if(this.interceptor.response&&"function"==typeof this.interceptor.response){let o=this.interceptor.response(e);!1!==o?t(o):n(e)}else t(e);else if(200==e.statusCode)if(this.interceptor.response&&"function"==typeof this.interceptor.response){let o=this.interceptor.response(e.data);!1!==o?t(o):n(e.data)}else t(e.data);else n(e)},e.url=Ls.url(e.url)?e.url:this.config.baseUrl+(0==e.url.indexOf("/")?e.url:"/"+e.url),this.config.showLoading&&!this.config.timer&&(this.config.timer=setTimeout((()=>{Ut.showLoading({title:this.config.loadingText,mask:this.config.loadingMask}),this.config.timer=null}),this.config.loadingTime)),Ut.request(e)}))}constructor(){this.config={baseUrl:"",header:{},method:"POST",dataType:"json",responseType:"text",showLoading:!0,loadingText:"请求中...",loadingTime:800,timer:null,originalData:!1,loadingMask:!0},this.interceptor={request:null,response:null},this.get=(e,t={},n={})=>this.request({method:"GET",url:e,header:n,data:t}),this.post=(e,t={},n={})=>this.request({url:e,method:"POST",header:n,data:t}),this.put=(e,t={},n={})=>this.request({url:e,method:"PUT",header:n,data:t}),this.delete=(e,t={},n={})=>this.request({url:e,method:"DELETE",header:n,data:t})}};const Ds=(new class{constructor(){this.config={type:"navigateTo",url:"",delta:1,params:{},animationType:"pop-in",animationDuration:300,intercept:!1},this.route=this.route.bind(this)}addRootPath(e){return"/"===e[0]?e:`/${e}`}mixinParam(e,t){e=e&&this.addRootPath(e);let n="";return/.*\/.*\?.*=.*/.test(e)?(n=Ut.$u.queryParams(t,!1),e+"&"+n):(n=Ut.$u.queryParams(t),e+n)}async route(e={},t={}){let n={};if("string"==typeof e?(n.url=this.mixinParam(e,t),n.type="navigateTo"):(n=Ut.$u.deepMerge(this.config,e),n.url=this.mixinParam(e.url,e.params)),t.intercept&&(this.config.intercept=t.intercept),n.params=t,n=Ut.$u.deepMerge(this.config,n),"function"==typeof Ut.$u.routeIntercept){await new Promise(((e,t)=>{Ut.$u.routeIntercept(n,e)}))&&this.openPage(n)}else this.openPage(n)}openPage(e){const{url:t,type:n,delta:o,animationType:r,animationDuration:i}=e;"navigateTo"!=e.type&&"to"!=e.type||Ut.navigateTo({url:t,animationType:r,animationDuration:i}),"redirectTo"!=e.type&&"redirect"!=e.type||Ut.redirectTo({url:t}),"switchTab"!=e.type&&"tab"!=e.type||Ut.switchTab({url:t}),"reLaunch"!=e.type&&"launch"!=e.type||Ut.reLaunch({url:t}),"navigateBack"!=e.type&&"back"!=e.type||Ut.navigateBack({delta:o})}}).route;function Ns(e=null,t="yyyy-mm-dd"){e||(e=Number(new Date)),10==e.toString().length&&(e*=1e3);let n,o=new Date(e),r={"y+":o.getFullYear().toString(),"m+":(o.getMonth()+1).toString(),"d+":o.getDate().toString(),"h+":o.getHours().toString(),"M+":o.getMinutes().toString(),"s+":o.getSeconds().toString()};for(let i in r)n=new RegExp("("+i+")").exec(t),n&&(t=t.replace(n[1],1==n[1].length?r[i]:r[i].padStart(n[1].length,"0")));return t}function Hs(e,t=!0){if((e=e.toLowerCase())&&/^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/.test(e)){if(4===e.length){let t="#";for(let n=1;n<4;n+=1)t+=e.slice(n,n+1).concat(e.slice(n,n+1));e=t}let n=[];for(let t=1;t<7;t+=2)n.push(parseInt("0x"+e.slice(t,t+2)));return t?`rgb(${n[0]},${n[1]},${n[2]})`:n}if(/^(rgb|RGB)/.test(e)){return e.replace(/(?:\(|\)|rgb|RGB)*/g,"").split(",").map((e=>Number(e)))}return e}function Vs(e){let t=e;if(/^(rgb|RGB)/.test(t)){let e=t.replace(/(?:\(|\)|rgb|RGB)*/g,"").split(","),n="#";for(let t=0;t=e)return String(n);let o=e-n.length,r=Math.ceil(o/t.length);for(;r>>=1;)t+=t,1===r&&(t+=t);return t.slice(0,o)+n});const Bs={colorGradient:function(e="rgb(0, 0, 0)",t="rgb(255, 255, 255)",n=10){let o=Hs(e,!1),r=o[0],i=o[1],s=o[2],c=Hs(t,!1),a=(c[0]-r)/n,u=(c[1]-i)/n,l=(c[2]-s)/n,f=[];for(let p=0;p=0))if(t.constructor===Array)switch(n){case"indices":for(let n=0;n{r.push(i+"[]="+e)}));break;case"repeat":t.forEach((e=>{r.push(i+"="+e)}));break;case"comma":let e="";t.forEach((t=>{e+=(e?",":"")+t})),r.push(i+"="+e)}else r.push(i+"="+t)}return r.length?o+r.join("&"):""},route:Ds,timeFormat:Ns,date:Ns,timeFrom:function(e=null,t="yyyy-mm-dd"){e||(e=Number(new Date)),10==e.toString().length&&(e*=1e3);let n=+new Date(Number(e)),o=(Number(new Date)-n)/1e3,r="";switch(!0){case o<300:r="刚刚";break;case o>=300&&o<3600:r=parseInt(o/60)+"分钟前";break;case o>=3600&&o<86400:r=parseInt(o/3600)+"小时前";break;case o>=86400&&o<2592e3:r=parseInt(o/86400)+"天前";break;default:r=!1===t?o>=2592e3&&o<31536e3?parseInt(o/2592e3)+"个月前":parseInt(o/31536e3)+"年前":Ns(n,t)}return r},colorGradient:Bs.colorGradient,colorToRgba:Bs.colorToRgba,guid:function(e=32,t=!0,n=null){let o="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""),r=[];if(n=n||o.length,e)for(let i=0;iMath.random()-.5))},wranning:function(e){},get:Ms.get,post:Ms.post,put:Ms.put,delete:Ms.delete,hexToRgb:Bs.hexToRgb,rgbToHex:Bs.rgbToHex,test:Ls,random:function(e,t){if(e>=0&&t>0&&t>=e){let n=t-e+1;return Math.floor(Math.random()*n+e)}return 0},deepClone:js,deepMerge:Ts,getParent:function(e,t){let n=this.$parent;for(;n;){if(n.$options.name===e){let e={};if(Array.isArray(t))t.map((t=>{e[t]=n[t]?n[t]:""}));else for(let o in t)Array.isArray(t[o])?t[o].length?e[o]=t[o]:e[o]=n[o]:t[o].constructor===Object?Object.keys(t[o]).length?e[o]=t[o]:e[o]=n[o]:e[o]=t[o]||!1===t[o]?t[o]:n[o];return e}n=n.$parent}return{}},$parent:function(e){let t=this.$parent;for(;t;){if(!t.$options||t.$options.name===e)return t;t=t.$parent}return!1},addUnit:function(e="auto",t="rpx"){return e=String(e),Ls.number(e)?`${e}${t}`:e},trim:function(e,t="both"){return"both"==t?e.replace(/^\s+|\s+$/g,""):"left"==t?e.replace(/^\s*/,""):"right"==t?e.replace(/(\s*$)/g,""):"all"==t?e.replace(/\s+/g,""):e},type:["primary","success","error","warning","info"],http:Ms,toast:function(e,t=1500){Ut.showToast({title:e,icon:"none",duration:t})},config:zs,zIndex:{toast:10090,noNetwork:10080,popup:10075,mask:10070,navbar:980,topTips:975,sticky:970,indexListSticky:965},debounce:function(e,t=500,n=!1){if(null!==Ws&&clearTimeout(Ws),n){var o=!Ws;Ws=setTimeout((function(){Ws=null}),t),o&&"function"==typeof e&&e()}else Ws=setTimeout((function(){"function"==typeof e&&e()}),t)},throttle:function(e,t=500,n=!0){n?Us||(Us=!0,"function"==typeof e&&e(),setTimeout((()=>{Us=!1}),t)):Us||(Us=!0,setTimeout((()=>{Us=!1,"function"==typeof e&&e()}),t))}};Ut.$u=Fs;const qs=e=>(t,n=qr())=>{!Xr&&or(e,t,n)},Ks=qs("onShow"),Zs=qs("onLoad");exports._export_sfc=(e,t)=>{const n=e.__vccOpts||e;for(const[o,r]of t)n[o]=r;return n},exports.computed=ni,exports.createSSRApp=zi,exports.e=(e,...t)=>c(e,...t),exports.f=(e,t)=>function(e,t){let n;if(f(e)||g(e)){n=new Array(e.length);for(let o=0,r=e.length;ot(e,n,n)));else{const o=Object.keys(e);n=new Array(o.length);for(let r=0,i=o.length;rR(e),exports.nextTick$1=Eo,exports.o=(e,t)=>Ui(e,t),exports.onLoad=Zs,exports.onMounted=sr,exports.onShow=Ks,exports.onUnmounted=lr,exports.p=e=>function(e){const{uid:t,__counter:n}=qr();return t+","+((Ni[t]||(Ni[t]=[])).push(Br(e))-1)+","+n}(e),exports.reactive=Jn,exports.ref=lo,exports.resolveComponent=function(e,t){return function(e,t,n=!0,o=!1){const r=Vo||Fr;if(r){const n=r.type;if("components"===e){const e=function(e,t=!0){return h(e)?e.displayName||e.name:e.name||t&&e.__name}(n,!1);if(e&&(e===t||e===O(t)||e===E(O(t))))return n}const i=Uo(r[e]||n[e],t)||Uo(r.appContext[e],t);return!i&&o?n:i}}("components",e,!0,t)||e},exports.sr=(e,t,n)=>function(e,t,n={}){const{$templateRefs:o}=qr();o.push({i:t,r:e,k:n.k,f:n.f})}(e,t,n),exports.t=e=>(e=>g(e)?e:null==e?"":f(e)||y(e)&&(e.toString===_||!h(e.toString))?JSON.stringify(e,L,2):String(e))(e),exports.watch=zo,exports.wx$1=Bt; +function a(e,t){const n=new Set(e.split(","));return t?e=>n.has(e.toLowerCase()):e=>n.has(e)}const u={},l=[],f=()=>{},p=()=>!1,d=e=>111===e.charCodeAt(0)&&110===e.charCodeAt(1)&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),h=e=>e.startsWith("onUpdate:"),g=Object.assign,m=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},v=Object.prototype.hasOwnProperty,y=(e,t)=>v.call(e,t),b=Array.isArray,_=e=>"[object Map]"===P(e),x=e=>"[object Set]"===P(e),w=e=>"function"==typeof e,$=e=>"string"==typeof e,S=e=>"symbol"==typeof e,k=e=>null!==e&&"object"==typeof e,O=e=>(k(e)||w(e))&&w(e.then)&&w(e.catch),A=Object.prototype.toString,P=e=>A.call(e),j=e=>"[object Object]"===P(e),E=e=>$(e)&&"NaN"!==e&&"-"!==e[0]&&""+parseInt(e,10)===e,C=a(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),I=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},T=/-(\w)/g,M=I((e=>e.replace(T,((e,t)=>t?t.toUpperCase():"")))),R=/\B([A-Z])/g,D=I((e=>e.replace(R,"-$1").toLowerCase())),N=I((e=>e.charAt(0).toUpperCase()+e.slice(1))),L=I((e=>e?`on${N(e)}`:"")),B=(e,t)=>!Object.is(e,t),H=(e,t)=>{for(let n=0;n{const t=parseFloat(e);return isNaN(t)?e:t};function z(e){if(b(e)){const t={};for(let n=0;n{if(e){const n=e.split(W);n.length>1&&(t[n[0].trim()]=n[1].trim())}})),t}function q(e){let t="";if($(e))t=e;else if(b(e))for(let n=0;nt&&t.__v_isRef?G(e,t.value):_(t)?{[`Map(${t.size})`]:[...t.entries()].reduce(((e,[t,n],o)=>(e[K(t,o)+" =>"]=n,e)),{})}:x(t)?{[`Set(${t.size})`]:[...t.values()].map((e=>K(e)))}:S(t)?K(t):!k(t)||b(t)||j(t)?t:String(t),K=(e,t="")=>{var n;return S(e)?`Symbol(${null!=(n=e.description)?n:t})`:e},J="onShow",X="onHide",Q="onLaunch",Y="onError",ee="onThemeChange",te="onPageNotFound",ne="onUnhandledRejection",oe="onLoad",re="onReady",ie="onUnload",se="onInit",ce="onSaveExitState",ae="onResize",ue="onBackPress",le="onPageScroll",fe="onTabItemTap",pe="onReachBottom",de="onPullDownRefresh",he="onShareTimeline",ge="onShareChat",me="onAddToFavorites",ve="onShareAppMessage",ye="onNavigationBarButtonTap",be="onNavigationBarSearchInputClicked",_e="onNavigationBarSearchInputChanged",xe="onNavigationBarSearchInputConfirmed",we="onNavigationBarSearchInputFocusChanged",$e="virtualHostId";function Se(e,t=null){let n;return(...o)=>(e&&(n=e.apply(t,o),e=null),n)}function ke(e,t){if(!$(t))return;const n=(t=t.replace(/\[(\d+)\]/g,".$1")).split(".");let o=n[0];return e||(e={}),1===n.length?e[o]:ke(e[o],n.slice(1).join("."))}function Oe(e){let t={};return j(e)&&Object.keys(e).sort().forEach((n=>{const o=n;t[o]=e[o]})),Object.keys(t)?t:e}const Ae=/:/g;const Pe=encodeURIComponent;function je(e,t=Pe){const n=e?Object.keys(e).map((n=>{let o=e[n];return void 0===typeof o||null===o?o="":j(o)&&(o=JSON.stringify(o)),t(n)+"="+t(o)})).filter((e=>e.length>0)).join("&"):null;return n?`?${n}`:""}const Ee=[se,oe,J,X,ie,ue,le,fe,pe,de,he,ve,ge,me,ce,ye,be,_e,xe,we];const Ce=[J,X,Q,Y,ee,te,ne,"onExit",se,oe,re,ie,ae,ue,le,fe,pe,de,he,me,ve,ge,ce,ye,be,_e,xe,we],Ie=(()=>({onPageScroll:1,onShareAppMessage:2,onShareTimeline:4}))();function Te(e,t,n=!0){return!(n&&!w(t))&&(Ce.indexOf(e)>-1||0===e.indexOf("on"))}let Me;const Re=[];const De=Se(((e,t)=>t(e))),Ne=function(){};Ne.prototype={_id:1,on:function(e,t,n){var o=this.e||(this.e={});return(o[e]||(o[e]=[])).push({fn:t,ctx:n,_id:this._id}),this._id++},once:function(e,t,n){var o=this;function r(){o.off(e,r),t.apply(n,arguments)}return r._=t,this.on(e,r,n)},emit:function(e){for(var t=[].slice.call(arguments,1),n=((this.e||(this.e={}))[e]||[]).slice(),o=0,r=n.length;o=0;i--)if(o[i].fn===t||o[i].fn._===t||o[i]._id===t){o.splice(i,1);break}r=o}return r.length?n[e]=r:delete n[e],this}};var Le=Ne;const Be="zh-Hans",He="zh-Hant",Ve="en";function ze(e,t){if(!e)return;if(e=e.trim().replace(/_/g,"-"),t&&t[e])return e;if("chinese"===(e=e.toLowerCase()))return Be;if(0===e.indexOf("zh"))return e.indexOf("-hans")>-1?Be:e.indexOf("-hant")>-1?He:(n=e,["-tw","-hk","-mo","-cht"].find((e=>-1!==n.indexOf(e)))?He:Be);var n;let o=[Ve,"fr","es"];t&&Object.keys(t).length>0&&(o=Object.keys(t));const r=function(e,t){return t.find((t=>0===e.indexOf(t)))}(e,o);return r||void 0}function Ue(e){return function(){try{return e.apply(e,arguments)}catch(t){console.error(t)}}}let We=1;const Ze={};function Fe(e,t,n){if("number"==typeof e){const o=Ze[e];if(o)return o.keepAlive||delete Ze[e],o.callback(t,n)}return t}const qe="success",Ge="fail",Ke="complete";function Je(e,t={},{beforeAll:n,beforeSuccess:o}={}){j(t)||(t={});const{success:r,fail:i,complete:s}=function(e){const t={};for(const n in e){const o=e[n];w(o)&&(t[n]=Ue(o),delete e[n])}return t}(t),c=w(r),a=w(i),u=w(s),l=We++;return function(e,t,n,o=!1){Ze[e]={name:t,keepAlive:o,callback:n}}(l,e,(l=>{(l=l||{}).errMsg=function(e,t){return e&&-1!==e.indexOf(":fail")?t+e.substring(e.indexOf(":fail")):t+":ok"}(l.errMsg,e),w(n)&&n(l),l.errMsg===e+":ok"?(w(o)&&o(l,t),c&&r(l)):a&&i(l),u&&s(l)})),l}const Xe="success",Qe="fail",Ye="complete",et={},tt={};function nt(e,t){return function(n){return e(n,t)||n}}function ot(e,t,n){let o=!1;for(let r=0;re(t),catch(){}}}function rt(e,t={}){return[Xe,Qe,Ye].forEach((n=>{const o=e[n];if(!b(o))return;const r=t[n];t[n]=function(e){ot(o,e,t).then((e=>w(r)&&r(e)||e))}})),t}function it(e,t){const n=[];b(et.returnValue)&&n.push(...et.returnValue);const o=tt[e];return o&&b(o.returnValue)&&n.push(...o.returnValue),n.forEach((e=>{t=e(t)||t})),t}function st(e){const t=Object.create(null);Object.keys(et).forEach((e=>{"returnValue"!==e&&(t[e]=et[e].slice())}));const n=tt[e];return n&&Object.keys(n).forEach((e=>{"returnValue"!==e&&(t[e]=(t[e]||[]).concat(n[e]))})),t}function ct(e,t,n,o){const r=st(e);if(r&&Object.keys(r).length){if(b(r.invoke)){return ot(r.invoke,n).then((n=>t(rt(st(e),n),...o)))}return t(rt(r,n),...o)}return t(n,...o)}function at(e,t){return(n={},...o)=>function(e){return!(!j(e)||![qe,Ge,Ke].find((t=>w(e[t]))))}(n)?it(e,ct(e,t,n,o)):it(e,new Promise(((r,i)=>{ct(e,t,g(n,{success:r,fail:i}),o)})))}function ut(e,t,n,o={}){const r=t+":fail";let i="";return i=n?0===n.indexOf(r)?n:r+" "+n:r,delete o.errCode,Fe(e,g({errMsg:i},o))}function lt(e,t,n,o){const r=function(e){e[0]}(t);if(r)return r}function ft(e,t,n,o){return n=>{const r=Je(e,n,o),i=lt(0,[n]);return i?ut(r,e,i):t(n,{resolve:t=>function(e,t,n){return Fe(e,g(n||{},{errMsg:t+":ok"}))}(r,e,t),reject:(t,n)=>ut(r,e,function(e){return!e||$(e)?e:e.stack?("undefined"!=typeof globalThis&&globalThis.harmonyChannel||console.error(e.message+"\n"+e.stack),e.message):e}(t),n)})}}function pt(e,t,n,o){return function(e,t){return(...e)=>{const n=lt(0,e);if(n)throw new Error(n);return t.apply(null,e)}}(0,t)}let dt=!1,ht=0,gt=0;const mt=pt(0,((e,t)=>{if(0===ht&&function(){var e,t;let n,o,r;{const i=(null===(e=wx.getWindowInfo)||void 0===e?void 0:e.call(wx))||wx.getSystemInfoSync(),s=(null===(t=wx.getDeviceInfo)||void 0===t?void 0:t.call(wx))||wx.getSystemInfoSync();n=i.windowWidth,o=i.pixelRatio,r=s.platform}ht=n,gt=o,dt="ios"===r}(),0===(e=Number(e)))return 0;let n=e/750*(t||ht);return n<0&&(n=-n),n=Math.floor(n+1e-4),0===n&&(n=1!==gt&&dt?.5:1),e<0?-n:n}));function vt(e,t){Object.keys(t).forEach((n=>{w(t[n])&&(e[n]=function(e,t){const n=t?e?e.concat(t):b(t)?t:[t]:e;return n?function(e){const t=[];for(let n=0;n{const o=e[n],r=t[n];b(o)&&w(r)&&m(o,r)}))}const bt=pt(0,((e,t)=>{$(e)&&j(t)?vt(tt[e]||(tt[e]={}),t):j(e)&&vt(et,e)})),_t=pt(0,((e,t)=>{$(e)?j(t)?yt(tt[e],t):delete tt[e]:j(e)&&yt(et,e)}));const xt=new class{constructor(){this.$emitter=new Le}on(e,t){return this.$emitter.on(e,t)}once(e,t){return this.$emitter.once(e,t)}off(e,t){e?this.$emitter.off(e,t):this.$emitter.e={}}emit(e,...t){this.$emitter.emit(e,...t)}},wt=pt(0,((e,t)=>(xt.on(e,t),()=>xt.off(e,t)))),$t=pt(0,((e,t)=>(xt.once(e,t),()=>xt.off(e,t)))),St=pt(0,((e,t)=>{b(e)||(e=e?[e]:[]),e.forEach((e=>{xt.off(e,t)}))})),kt=pt(0,((e,...t)=>{xt.emit(e,...t)}));let Ot,At,Pt;function jt(e){try{return JSON.parse(e)}catch(t){}return e}const Et=[];function Ct(e,t){Et.forEach((n=>{n(e,t)})),Et.length=0}const It=at(Tt="getPushClientId",function(e,t,n,o){return ft(e,t,0,o)}(Tt,((e,{resolve:t,reject:n})=>{Promise.resolve().then((()=>{void 0===Pt&&(Pt=!1,Ot="",At="uniPush is not enabled"),Et.push(((e,o)=>{e?t({cid:e}):n(o)})),void 0!==Ot&&Ct(Ot,At)}))}),0,Mt));var Tt,Mt;const Rt=[],Dt=/^\$|__f__|getLocale|setLocale|sendNativeEvent|restoreGlobal|requireGlobal|getCurrentSubNVue|getMenuButtonBoundingClientRect|^report|interceptors|Interceptor$|getSubNVueById|requireNativePlugin|upx2px|rpx2px|hideKeyboard|canIUse|^create|Sync$|Manager$|base64ToArrayBuffer|arrayBufferToBase64|getDeviceInfo|getAppBaseInfo|getWindowInfo|getSystemSetting|getAppAuthorizeSetting/,Nt=/^create|Manager$/,Lt=["createBLEConnection"],Bt=["request","downloadFile","uploadFile","connectSocket"],Ht=["createBLEConnection"],Vt=/^on|^off/;function zt(e){return Nt.test(e)&&-1===Lt.indexOf(e)}function Ut(e){return Dt.test(e)&&-1===Ht.indexOf(e)}function Wt(e){return-1!==Bt.indexOf(e)}function Zt(e){return!(zt(e)||Ut(e)||function(e){return Vt.test(e)&&"onPush"!==e}(e))}function Ft(e,t){return Zt(e)&&w(t)?function(n={},...o){return w(n.success)||w(n.fail)||w(n.complete)?it(e,ct(e,t,n,o)):it(e,new Promise(((r,i)=>{ct(e,t,g({},n,{success:r,fail:i}),o)})))}:t}Promise.prototype.finally||(Promise.prototype.finally=function(e){const t=this.constructor;return this.then((n=>t.resolve(e&&e()).then((()=>n))),(n=>t.resolve(e&&e()).then((()=>{throw n}))))});const qt=["success","fail","cancel","complete"];const Gt=()=>{const e=w(getApp)&&getApp({allowDefault:!0});return e&&e.$vm?e.$vm.$locale:function(){var e;let t="";{const n=(null===(e=wx.getAppBaseInfo)||void 0===e?void 0:e.call(wx))||wx.getSystemInfoSync();t=ze(n&&n.language?n.language:Ve)||Ve}return t}()},Kt=[];"undefined"!=typeof global&&(global.getLocale=Gt);const Jt="__DC_STAT_UUID";let Xt;function Qt(e=wx){return function(t,n){Xt=Xt||e.getStorageSync(Jt),Xt||(Xt=Date.now()+""+Math.floor(1e7*Math.random()),wx.setStorage({key:Jt,data:Xt})),n.deviceId=Xt}}function Yt(e,t){if(e.safeArea){const n=e.safeArea;t.safeAreaInsets={top:n.top,left:n.left,right:e.windowWidth-n.right,bottom:e.screenHeight-n.bottom}}}function en(e,t){let n="",o="";switch(n=e.split(" ")[0]||t,o=e.split(" ")[1]||"",n=n.toLocaleLowerCase(),n){case"harmony":case"ohos":case"openharmony":n="harmonyos";break;case"iphone os":n="ios";break;case"mac":case"darwin":n="macos";break;case"windows_nt":n="windows"}return{osName:n,osVersion:o}}function tn(e,t){let n=e.deviceType||"phone";{const e={ipad:"pad",windows:"pc",mac:"pc"},o=Object.keys(e),r=t.toLocaleLowerCase();for(let t=0;t{Yt(e,t),Qt()(e,t),function(e,t){const{brand:n="",model:o="",system:r="",language:i="",theme:s,version:c,platform:a,fontSizeSetting:u,SDKVersion:l,pixelRatio:f,deviceOrientation:p}=e,{osName:d,osVersion:h}=en(r,a);let m=c,v=tn(e,o),y=nn(n),b=rn(e),_=p,x=f,w=l;const $=(i||"").replace(/_/g,"-"),S={appId:"__UNI__A871B6B",appName:"uni-fans-score",appVersion:"1.0.0",appVersionCode:"100",appLanguage:on($),uniCompileVersion:"4.66",uniCompilerVersion:"4.66",uniRuntimeVersion:"4.66",uniPlatform:"mp-weixin",deviceBrand:y,deviceModel:o,deviceType:v,devicePixelRatio:x,deviceOrientation:_,osName:d,osVersion:h,hostTheme:s,hostVersion:m,hostLanguage:$,hostName:b,hostSDKVersion:w,hostFontSizeSetting:u,windowTop:0,windowBottom:0,osLanguage:void 0,osTheme:void 0,ua:void 0,hostPackageName:void 0,browserName:void 0,browserVersion:void 0,isUniAppX:!1};g(t,S)}(e,t)}},cn=sn,an={args(e,t){let n=parseInt(e.current);if(isNaN(n))return;const o=e.urls;if(!b(o))return;const r=o.length;return r?(n<0?n=0:n>=r&&(n=r-1),n>0?(t.current=o[n],t.urls=o.filter(((e,t)=>!(t{const{brand:n,model:o,system:r="",platform:i=""}=e;let s=tn(e,o),c=nn(n);Qt()(e,t);const{osName:a,osVersion:u}=en(r,i);t=Oe(g(t,{deviceType:s,deviceBrand:c,deviceModel:o,osName:a,osVersion:u}))}},fn={returnValue:(e,t)=>{const{version:n,language:o,SDKVersion:r,theme:i}=e;let s=rn(e),c=(o||"").replace(/_/g,"-");const a={hostVersion:n,hostLanguage:c,hostName:s,hostSDKVersion:r,hostTheme:i,appId:"__UNI__A871B6B",appName:"uni-fans-score",appVersion:"1.0.0",appVersionCode:"100",appLanguage:on(c),isUniAppX:!1,uniPlatform:"mp-weixin",uniCompileVersion:"4.66",uniCompilerVersion:"4.66",uniRuntimeVersion:"4.66"};g(t,a)}},pn={returnValue:(e,t)=>{Yt(e,t),t=Oe(g(t,{windowTop:0,windowBottom:0}))}},dn={args(e){const t=getApp({allowDefault:!0})||{};t.$vm?Kr(Y,e,t.$vm.$):(wx.$onErrorHandlers||(wx.$onErrorHandlers=[]),wx.$onErrorHandlers.push(e))}},hn={args(e){const t=getApp({allowDefault:!0})||{};if(t.$vm){if(e.__weh){const n=t.$vm.$[Y];if(n){const t=n.indexOf(e.__weh);t>-1&&n.splice(t,1)}}}else{if(!wx.$onErrorHandlers)return;const t=wx.$onErrorHandlers.findIndex((t=>t===e));-1!==t&&wx.$onErrorHandlers.splice(t,1)}}},gn={args(){if(wx.__uni_console__){if(wx.__uni_console_warned__)return;wx.__uni_console_warned__=!0,console.warn("开发模式下小程序日志回显会使用 socket 连接,为了避免冲突,建议使用 SocketTask 的方式去管理 WebSocket 或手动关闭日志回显功能。[详情](https://uniapp.dcloud.net.cn/tutorial/run/mp-log.html)")}}},mn=gn,vn={$on:wt,$off:St,$once:$t,$emit:kt,upx2px:mt,rpx2px:mt,interceptors:{},addInterceptor:bt,removeInterceptor:_t,onCreateVueApp:function(e){if(Me)return e(Me);Re.push(e)},invokeCreateVueAppHook:function(e){Me=e,Re.forEach((t=>t(e)))},getLocale:Gt,setLocale:e=>{const t=w(getApp)&&getApp();if(!t)return!1;return t.$vm.$locale!==e&&(t.$vm.$locale=e,Kt.forEach((t=>t({locale:e}))),!0)},onLocaleChange:e=>{-1===Kt.indexOf(e)&&Kt.push(e)},getPushClientId:It,onPushMessage:e=>{-1===Rt.indexOf(e)&&Rt.push(e)},offPushMessage:e=>{if(e){const t=Rt.indexOf(e);t>-1&&Rt.splice(t,1)}else Rt.length=0},invokePushCallback:function(e){if("enabled"===e.type)Pt=!0;else if("clientId"===e.type)Ot=e.cid,At=e.errMsg,Ct(Ot,e.errMsg);else if("pushMsg"===e.type){const t={type:"receive",data:jt(e.message)};for(let e=0;e{t({type:"click",data:jt(e.message)})}))},__f__:function(e,t,...n){t&&n.push(t),console[e].apply(console,n)}};const yn=["qy","env","error","version","lanDebug","cloud","serviceMarket","router","worklet","__webpack_require_UNI_MP_PLUGIN__"],bn=["lanDebug","router","worklet"],_n=wx.getLaunchOptionsSync?wx.getLaunchOptionsSync():null;function xn(e){return(!_n||1154!==_n.scene||!bn.includes(e))&&(yn.indexOf(e)>-1||"function"==typeof wx[e])}function wn(){const e={};for(const t in wx)xn(t)&&(e[t]=wx[t]);return"undefined"!=typeof globalThis&&"undefined"==typeof requireMiniProgram&&(globalThis.wx=e),e}const $n=["__route__","__wxExparserNodeId__","__wxWebviewId__"],Sn=(kn={oauth:["weixin"],share:["weixin"],payment:["wxpay"],push:["weixin"]},function({service:e,success:t,fail:n,complete:o}){let r;kn[e]?(r={errMsg:"getProvider:ok",service:e,provider:kn[e]},w(t)&&t(r)):(r={errMsg:"getProvider:fail:服务["+e+"]不存在"},w(n)&&n(r)),w(o)&&o(r)});var kn;const On=wn();On.canIUse("getAppBaseInfo")||(On.getAppBaseInfo=On.getSystemInfoSync),On.canIUse("getWindowInfo")||(On.getWindowInfo=On.getSystemInfoSync),On.canIUse("getDeviceInfo")||(On.getDeviceInfo=On.getSystemInfoSync);let An=On.getAppBaseInfo&&On.getAppBaseInfo();An||(An=On.getSystemInfoSync());const Pn=An?An.host:null,jn=Pn&&"SAAASDK"===Pn.env?On.miniapp.shareVideoMessage:On.shareVideoMessage;var En=Object.freeze({__proto__:null,createSelectorQuery:function(){const e=On.createSelectorQuery(),t=e.in;return e.in=function(e){return e.$scope?t.call(this,e.$scope):t.call(this,function(e){const t=Object.create(null);return $n.forEach((n=>{t[n]=e[n]})),t}(e))},e},getProvider:Sn,shareVideoMessage:jn});const Cn={args(e,t){e.compressedHeight&&!t.compressHeight&&(t.compressHeight=e.compressedHeight),e.compressedWidth&&!t.compressWidth&&(t.compressWidth=e.compressedWidth)}};var In=Object.freeze({__proto__:null,compressImage:Cn,getAppAuthorizeSetting:{returnValue:function(e,t){const{locationReducedAccuracy:n}=e;t.locationAccuracy="unsupported",!0===n?t.locationAccuracy="reduced":!1===n&&(t.locationAccuracy="full")}},getAppBaseInfo:fn,getDeviceInfo:ln,getSystemInfo:sn,getSystemInfoSync:cn,getWindowInfo:pn,offError:hn,onError:dn,onSocketMessage:mn,onSocketOpen:gn,previewImage:an,redirectTo:{},showActionSheet:un});const Tn=wn();var Mn=function(e,t,n=wx){const o=function(e){function t(e,t,n){return function(r){return t(o(e,r,n))}}function n(e,n,o={},r={},i=!1){if(j(n)){const s=!0===i?n:{};w(o)&&(o=o(n,s)||{});for(const c in n)if(y(o,c)){let t=o[c];w(t)&&(t=t(n[c],n,s)),t?$(t)?s[t]=n[c]:j(t)&&(s[t.name?t.name:c]=t.value):console.warn(`微信小程序 ${e} 暂不支持 ${c}`)}else if(-1!==qt.indexOf(c)){const o=n[c];w(o)&&(s[c]=t(e,o,r))}else i||y(s,c)||(s[c]=n[c]);return s}return w(n)&&(w(o)&&o(n,{}),n=t(e,n,r)),n}function o(t,o,r,i=!1){return w(e.returnValue)&&(o=e.returnValue(t,o)),n(t,o,r,{},i||!1)}return function(t,r){const i=y(e,t);if(!i&&"function"!=typeof wx[t])return r;const s=i||w(e.returnValue)||zt(t)||Wt(t),c=i||w(r);if(!i&&!r)return function(){console.error(`微信小程序 暂不支持${t}`)};if(!s||!c)return r;const a=e[t];return function(e,r){let i=a||{};w(a)&&(i=a(e));const s=[e=n(t,e,i.args,i.returnValue)];void 0!==r&&s.push(r);const c=wx[i.name||t].apply(wx,s);return(zt(t)||Wt(t))&&c&&!c.__v_skip&&(c.__v_skip=!0),Ut(t)?o(t,c,i.returnValue,zt(t)):c}}}(t);return new Proxy({},{get:(t,r)=>y(t,r)?t[r]:y(e,r)?Ft(r,e[r]):y(vn,r)?Ft(r,vn[r]):Ft(r,o(r,n[r]))})}(En,In,Tn);let Rn,Dn;class Nn{constructor(e=!1){this.detached=e,this._active=!0,this.effects=[],this.cleanups=[],this.parent=Rn,!e&&Rn&&(this.index=(Rn.scopes||(Rn.scopes=[])).push(this)-1)}get active(){return this._active}run(e){if(this._active){const t=Rn;try{return Rn=this,e()}finally{Rn=t}}}on(){Rn=this}off(){Rn=this.parent}stop(e){if(this._active){let t,n;for(t=0,n=this.effects.length;t=4))break}1===this._dirtyLevel&&(this._dirtyLevel=0),Fn()}return this._dirtyLevel>=4}set dirty(e){this._dirtyLevel=e?4:0}run(){if(this._dirtyLevel=0,!this.active)return this.fn();let e=zn,t=Dn;try{return zn=!0,Dn=this,this._runnings++,Bn(this),this.fn()}finally{Hn(this),this._runnings--,Dn=t,zn=e}}stop(){var e;this.active&&(Bn(this),Hn(this),null==(e=this.onStop)||e.call(this),this.active=!1)}}function Bn(e){e._trackId++,e._depsLength=0}function Hn(e){if(e.deps.length>e._depsLength){for(let t=e._depsLength;t{const n=new Map;return n.cleanup=e,n.computed=t,n},Yn=new WeakMap,eo=Symbol(""),to=Symbol("");function no(e,t,n){if(zn&&Dn){let t=Yn.get(e);t||Yn.set(e,t=new Map);let o=t.get(n);o||t.set(n,o=Qn((()=>t.delete(n)))),Kn(Dn,o)}}function oo(e,t,n,o,r,i){const s=Yn.get(e);if(!s)return;let c=[];if("clear"===t)c=[...s.values()];else if("length"===n&&b(e)){const e=Number(o);s.forEach(((t,n)=>{("length"===n||!S(n)&&n>=e)&&c.push(t)}))}else switch(void 0!==n&&c.push(s.get(n)),t){case"add":b(e)?E(n)&&c.push(s.get("length")):(c.push(s.get(eo)),_(e)&&c.push(s.get(to)));break;case"delete":b(e)||(c.push(s.get(eo)),_(e)&&c.push(s.get(to)));break;case"set":_(e)&&c.push(s.get(eo))}qn();for(const a of c)a&&Xn(a,4);Gn()}const ro=a("__proto__,__v_isRef,__isVue"),io=new Set(Object.getOwnPropertyNames(Symbol).filter((e=>"arguments"!==e&&"caller"!==e)).map((e=>Symbol[e])).filter(S)),so=co();function co(){const e={};return["includes","indexOf","lastIndexOf"].forEach((t=>{e[t]=function(...e){const n=Go(this);for(let t=0,r=this.length;t{e[t]=function(...e){Zn(),qn();const n=Go(this)[t].apply(this,e);return Gn(),Fn(),n}})),e}function ao(e){const t=Go(this);return no(t,0,e),t.hasOwnProperty(e)}class uo{constructor(e=!1,t=!1){this._isReadonly=e,this._isShallow=t}get(e,t,n){const o=this._isReadonly,r=this._isShallow;if("__v_isReactive"===t)return!o;if("__v_isReadonly"===t)return o;if("__v_isShallow"===t)return r;if("__v_raw"===t)return n===(o?r?Ho:Bo:r?Lo:No).get(e)||Object.getPrototypeOf(e)===Object.getPrototypeOf(n)?e:void 0;const i=b(e);if(!o){if(i&&y(so,t))return Reflect.get(so,t,n);if("hasOwnProperty"===t)return ao}const s=Reflect.get(e,t,n);return(S(t)?io.has(t):ro(t))?s:(o||no(e,0,t),r?s:tr(s)?i&&E(t)?s:s.value:k(s)?o?Uo(s):zo(s):s)}}class lo extends uo{constructor(e=!1){super(!1,e)}set(e,t,n,o){let r=e[t];if(!this._isShallow){const t=Fo(r);if(qo(n)||Fo(n)||(r=Go(r),n=Go(n)),!b(e)&&tr(r)&&!tr(n))return!t&&(r.value=n,!0)}const i=b(e)&&E(t)?Number(t)e,vo=e=>Reflect.getPrototypeOf(e);function yo(e,t,n=!1,o=!1){const r=Go(e=e.__v_raw),i=Go(t);n||(B(t,i)&&no(r,0,t),no(r,0,i));const{has:s}=vo(r),c=o?mo:n?Xo:Jo;return s.call(r,t)?c(e.get(t)):s.call(r,i)?c(e.get(i)):void(e!==r&&e.get(t))}function bo(e,t=!1){const n=this.__v_raw,o=Go(n),r=Go(e);return t||(B(e,r)&&no(o,0,e),no(o,0,r)),e===r?n.has(e):n.has(e)||n.has(r)}function _o(e,t=!1){return e=e.__v_raw,!t&&no(Go(e),0,eo),Reflect.get(e,"size",e)}function xo(e){e=Go(e);const t=Go(this);return vo(t).has.call(t,e)||(t.add(e),oo(t,"add",e,e)),this}function wo(e,t){t=Go(t);const n=Go(this),{has:o,get:r}=vo(n);let i=o.call(n,e);i||(e=Go(e),i=o.call(n,e));const s=r.call(n,e);return n.set(e,t),i?B(t,s)&&oo(n,"set",e,t):oo(n,"add",e,t),this}function $o(e){const t=Go(this),{has:n,get:o}=vo(t);let r=n.call(t,e);r||(e=Go(e),r=n.call(t,e)),o&&o.call(t,e);const i=t.delete(e);return r&&oo(t,"delete",e,void 0),i}function So(){const e=Go(this),t=0!==e.size,n=e.clear();return t&&oo(e,"clear",void 0,void 0),n}function ko(e,t){return function(n,o){const r=this,i=r.__v_raw,s=Go(i),c=t?mo:e?Xo:Jo;return!e&&no(s,0,eo),i.forEach(((e,t)=>n.call(o,c(e),c(t),r)))}}function Oo(e,t,n){return function(...o){const r=this.__v_raw,i=Go(r),s=_(i),c="entries"===e||e===Symbol.iterator&&s,a="keys"===e&&s,u=r[e](...o),l=n?mo:t?Xo:Jo;return!t&&no(i,0,a?to:eo),{next(){const{value:e,done:t}=u.next();return t?{value:e,done:t}:{value:c?[l(e[0]),l(e[1])]:l(e),done:t}},[Symbol.iterator](){return this}}}}function Ao(e){return function(...t){return"delete"!==e&&("clear"===e?void 0:this)}}function Po(){const e={get(e){return yo(this,e)},get size(){return _o(this)},has:bo,add:xo,set:wo,delete:$o,clear:So,forEach:ko(!1,!1)},t={get(e){return yo(this,e,!1,!0)},get size(){return _o(this)},has:bo,add:xo,set:wo,delete:$o,clear:So,forEach:ko(!1,!0)},n={get(e){return yo(this,e,!0)},get size(){return _o(this,!0)},has(e){return bo.call(this,e,!0)},add:Ao("add"),set:Ao("set"),delete:Ao("delete"),clear:Ao("clear"),forEach:ko(!0,!1)},o={get(e){return yo(this,e,!0,!0)},get size(){return _o(this,!0)},has(e){return bo.call(this,e,!0)},add:Ao("add"),set:Ao("set"),delete:Ao("delete"),clear:Ao("clear"),forEach:ko(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach((r=>{e[r]=Oo(r,!1,!1),n[r]=Oo(r,!0,!1),t[r]=Oo(r,!1,!0),o[r]=Oo(r,!0,!0)})),[e,n,t,o]}const[jo,Eo,Co,Io]=Po();function To(e,t){const n=t?e?Io:Co:e?Eo:jo;return(t,o,r)=>"__v_isReactive"===o?!e:"__v_isReadonly"===o?e:"__v_raw"===o?t:Reflect.get(y(n,o)&&o in t?n:t,o,r)}const Mo={get:To(!1,!1)},Ro={get:To(!1,!0)},Do={get:To(!0,!1)},No=new WeakMap,Lo=new WeakMap,Bo=new WeakMap,Ho=new WeakMap;function Vo(e){return e.__v_skip||!Object.isExtensible(e)?0:function(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}((e=>P(e).slice(8,-1))(e))}function zo(e){return Fo(e)?e:Wo(e,!1,po,Mo,No)}function Uo(e){return Wo(e,!0,ho,Do,Bo)}function Wo(e,t,n,o,r){if(!k(e))return e;if(e.__v_raw&&(!t||!e.__v_isReactive))return e;const i=r.get(e);if(i)return i;const s=Vo(e);if(0===s)return e;const c=new Proxy(e,2===s?o:n);return r.set(e,c),c}function Zo(e){return Fo(e)?Zo(e.__v_raw):!(!e||!e.__v_isReactive)}function Fo(e){return!(!e||!e.__v_isReadonly)}function qo(e){return!(!e||!e.__v_isShallow)}function Go(e){const t=e&&e.__v_raw;return t?Go(t):e}function Ko(e){return Object.isExtensible(e)&&((e,t,n)=>{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,value:n})})(e,"__v_skip",!0),e}const Jo=e=>k(e)?zo(e):e,Xo=e=>k(e)?Uo(e):e;class Qo{constructor(e,t,n,o){this.getter=e,this._setter=t,this.dep=void 0,this.__v_isRef=!0,this.__v_isReadonly=!1,this.effect=new Ln((()=>e(this._value)),(()=>er(this,2===this.effect._dirtyLevel?2:3))),this.effect.computed=this,this.effect.active=this._cacheable=!o,this.__v_isReadonly=n}get value(){const e=Go(this);return e._cacheable&&!e.effect.dirty||!B(e._value,e._value=e.effect.run())||er(e,4),Yo(e),e.effect._dirtyLevel>=2&&er(e,2),e._value}set value(e){this._setter(e)}get _dirty(){return this.effect.dirty}set _dirty(e){this.effect.dirty=e}}function Yo(e){var t;zn&&Dn&&(e=Go(e),Kn(Dn,null!=(t=e.dep)?t:e.dep=Qn((()=>e.dep=void 0),e instanceof Qo?e:void 0)))}function er(e,t=4,n){const o=(e=Go(e)).dep;o&&Xn(o,t)}function tr(e){return!(!e||!0!==e.__v_isRef)}function nr(e){return function(e,t){if(tr(e))return e;return new or(e,t)}(e,!1)}class or{constructor(e,t){this.__v_isShallow=t,this.dep=void 0,this.__v_isRef=!0,this._rawValue=t?e:Go(e),this._value=t?e:Jo(e)}get value(){return Yo(this),this._value}set value(e){const t=this.__v_isShallow||qo(e)||Fo(e);e=t?e:Go(e),B(e,this._rawValue)&&(this._rawValue=e,this._value=t?e:Jo(e),er(this,4))}}function rr(e){return tr(e)?e.value:e}const ir={get:(e,t,n)=>rr(Reflect.get(e,t,n)),set:(e,t,n,o)=>{const r=e[t];return tr(r)&&!tr(n)?(r.value=n,!0):Reflect.set(e,t,n,o)}};function sr(e){return Zo(e)?e:new Proxy(e,ir)}function cr(e,t,n,o){try{return o?e(...o):e()}catch(r){ur(r,t,n)}}function ar(e,t,n,o){if(w(e)){const r=cr(e,t,n,o);return r&&O(r)&&r.catch((e=>{ur(e,t,n)})),r}const r=[];for(let i=0;i>>1,r=dr[o],i=kr(r);inull==e.id?1/0:e.id,Or=(e,t)=>{const n=kr(e)-kr(t);if(0===n){if(e.pre&&!t.pre)return-1;if(t.pre&&!e.pre)return 1}return n};function Ar(e){pr=!1,fr=!0,dr.sort(Or);try{for(hr=0;hrkr(e)-kr(t)));if(gr.length=0,mr)return void mr.push(...e);for(mr=e,vr=0;vr$(e)?e.trim():e))),t&&(r=n.map(V))}let c,a=o[c=L(t)]||o[c=L(M(t))];!a&&i&&(a=o[c=L(D(t))]),a&&ar(a,e,6,r);const l=o[c+"Once"];if(l){if(e.emitted){if(e.emitted[c])return}else e.emitted={};e.emitted[c]=!0,ar(l,e,6,r)}}function jr(e,t,n=!1){const o=t.emitsCache,r=o.get(e);if(void 0!==r)return r;const i=e.emits;let s={},c=!1;if(!w(e)){const o=e=>{const n=jr(e,t,!0);n&&(c=!0,g(s,n))};!n&&t.mixins.length&&t.mixins.forEach(o),e.extends&&o(e.extends),e.mixins&&e.mixins.forEach(o)}return i||c?(b(i)?i.forEach((e=>s[e]=null)):g(s,i),k(e)&&o.set(e,s),s):(k(e)&&o.set(e,null),null)}function Er(e,t){return!(!e||!d(t))&&(t=t.slice(2).replace(/Once$/,""),y(e,t[0].toLowerCase()+t.slice(1))||y(e,D(t))||y(e,t))}let Cr=null;function Ir(e){const t=Cr;return Cr=e,e&&e.type.__scopeId,t}const Tr="components";function Mr(e,t){return e&&(e[t]||e[M(t)]||e[N(M(t))])}const Rr={};function Dr(e,t,n){return Nr(e,t,n)}function Nr(e,t,{immediate:n,deep:o,flush:r,once:i,onTrack:s,onTrigger:c}=u){if(t&&i){const e=t;t=(...t)=>{e(...t),k()}}const a=Ni,l=e=>!0===o?e:Hr(e,!1===o?1:void 0);let p,d,h=!1,g=!1;if(tr(e)?(p=()=>e.value,h=qo(e)):Zo(e)?(p=()=>l(e),h=!0):b(e)?(g=!0,h=e.some((e=>Zo(e)||qo(e))),p=()=>e.map((e=>tr(e)?e.value:Zo(e)?l(e):w(e)?cr(e,a,2):void 0))):p=w(e)?t?()=>cr(e,a,2):()=>(d&&d(),ar(e,a,3,[v])):f,t&&o){const e=p;p=()=>Hr(e())}let v=e=>{d=$.onStop=()=>{cr(e,a,4),d=$.onStop=void 0}},y=g?new Array(e.length).fill(Rr):Rr;const _=()=>{if($.active&&$.dirty)if(t){const e=$.run();(o||h||(g?e.some(((e,t)=>B(e,y[t]))):B(e,y)))&&(d&&d(),ar(t,a,3,[e,y===Rr?void 0:g&&y[0]===Rr?[]:y,v]),y=e)}else $.run()};let x;_.allowRecurse=!!t,"sync"===r?x=_:"post"===r?x=()=>Ii(_,a&&a.suspense):(_.pre=!0,a&&(_.id=a.uid),x=()=>xr(_));const $=new Ln(p,f,x),S=Rn,k=()=>{$.stop(),S&&m(S.effects,$)};return t?n?_():y=$.run():"post"===r?Ii($.run.bind($),a&&a.suspense):$.run(),k}function Lr(e,t,n){const o=this.proxy,r=$(e)?e.includes(".")?Br(o,e):()=>o[e]:e.bind(o,o);let i;w(t)?i=t:(i=t.handler,n=t);const s=Vi(this),c=Nr(r,i.bind(o),n);return s(),c}function Br(e,t){const n=t.split(".");return()=>{let t=e;for(let e=0;e0){if(n>=t)return e;n++}if((o=o||new Set).has(e))return e;if(o.add(e),tr(e))Hr(e.value,t,n,o);else if(b(e))for(let r=0;r{Hr(e,t,n,o)}));else if(j(e))for(const r in e)Hr(e[r],t,n,o);return e}function Vr(){return{app:null,config:{isNativeTag:p,performance:!1,globalProperties:{},optionMergeStrategies:{},errorHandler:void 0,warnHandler:void 0,compilerOptions:{}},mixins:[],components:{},directives:{},provides:Object.create(null),optionsCache:new WeakMap,propsCache:new WeakMap,emitsCache:new WeakMap}}let zr=0;let Ur=null;function Wr(e,t,n=!1){const o=Ni||Cr;if(o||Ur){const r=o?null==o.parent?o.vnode.appContext&&o.vnode.appContext.provides:o.parent.provides:Ur._context.provides;if(r&&e in r)return r[e];if(arguments.length>1)return n&&w(t)?t.call(o&&o.proxy):t}}function Zr(e,t){qr(e,"a",t)}function Fr(e,t){qr(e,"da",t)}function qr(e,t,n=Ni){const o=e.__wdc||(e.__wdc=()=>{let t=n;for(;t;){if(t.isDeactivated)return;t=t.parent}return e()});if(Kr(t,o,n),n){let e=n.parent;for(;e&&e.parent;)e.parent.vnode.type.__isKeepAlive&&Gr(o,t,n,e),e=e.parent}}function Gr(e,t,n,o){const r=Kr(t,e,o,!0);ni((()=>{m(o[t],r)}),n)}function Kr(e,t,n=Ni,o=!1){if(n){(function(e){return Ee.indexOf(e)>-1})(e)&&(n=n.root);const r=n[e]||(n[e]=[]),i=t.__weh||(t.__weh=(...o)=>{if(n.isUnmounted)return;Zn();const r=Vi(n),i=ar(t,n,e,o);return r(),Fn(),i});return o?r.unshift(i):r.push(i),i}}const Jr=e=>(t,n=Ni)=>(!Wi||"sp"===e)&&Kr(e,((...e)=>t(...e)),n),Xr=Jr("bm"),Qr=Jr("m"),Yr=Jr("bu"),ei=Jr("u"),ti=Jr("bum"),ni=Jr("um"),oi=Jr("sp"),ri=Jr("rtg"),ii=Jr("rtc");function si(e,t=Ni){Kr("ec",e,t)}const ci=e=>e?Ui(e)?qi(e)||e.proxy:ci(e.parent):null,ai=g(Object.create(null),{$:e=>e,$el:e=>e.__$el||(e.__$el={}),$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>ci(e.parent),$root:e=>ci(e.root),$emit:e=>e.emit,$options:e=>mi(e),$forceUpdate:e=>e.f||(e.f=()=>{e.effect.dirty=!0,xr(e.update)}),$watch:e=>Lr.bind(e)}),ui=(e,t)=>e!==u&&!e.__isScriptSetup&&y(e,t),li={get({_:e},t){const{ctx:n,setupState:o,data:r,props:i,accessCache:s,type:c,appContext:a}=e;let l;if("$"!==t[0]){const c=s[t];if(void 0!==c)switch(c){case 1:return o[t];case 2:return r[t];case 4:return n[t];case 3:return i[t]}else{if(ui(o,t))return s[t]=1,o[t];if(r!==u&&y(r,t))return s[t]=2,r[t];if((l=e.propsOptions[0])&&y(l,t))return s[t]=3,i[t];if(n!==u&&y(n,t))return s[t]=4,n[t];pi&&(s[t]=0)}}const f=ai[t];let p,d;return f?("$attrs"===t&&no(e,0,t),f(e)):(p=c.__cssModules)&&(p=p[t])?p:n!==u&&y(n,t)?(s[t]=4,n[t]):(d=a.config.globalProperties,y(d,t)?d[t]:void 0)},set({_:e},t,n){const{data:o,setupState:r,ctx:i}=e;return ui(r,t)?(r[t]=n,!0):o!==u&&y(o,t)?(o[t]=n,!0):!y(e.props,t)&&(("$"!==t[0]||!(t.slice(1)in e))&&(i[t]=n,!0))},has({_:{data:e,setupState:t,accessCache:n,ctx:o,appContext:r,propsOptions:i}},s){let c;return!!n[s]||e!==u&&y(e,s)||ui(t,s)||(c=i[0])&&y(c,s)||y(o,s)||y(ai,s)||y(r.config.globalProperties,s)},defineProperty(e,t,n){return null!=n.get?e._.accessCache[t]=0:y(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function fi(e){return b(e)?e.reduce(((e,t)=>(e[t]=null,e)),{}):e}let pi=!0;function di(e){const t=mi(e),n=e.proxy,o=e.ctx;pi=!1,t.beforeCreate&&hi(t.beforeCreate,e,"bc");const{data:r,computed:i,methods:s,watch:c,provide:a,inject:u,created:l,beforeMount:p,mounted:d,beforeUpdate:h,updated:g,activated:m,deactivated:v,beforeDestroy:y,beforeUnmount:_,destroyed:x,unmounted:$,render:S,renderTracked:O,renderTriggered:A,errorCaptured:P,serverPrefetch:j,expose:E,inheritAttrs:C,components:I,directives:T,filters:M}=t;if(u&&function(e,t){b(e)&&(e=_i(e));for(const n in e){const o=e[n];let r;r=k(o)?"default"in o?Wr(o.from||n,o.default,!0):Wr(o.from||n):Wr(o),tr(r)?Object.defineProperty(t,n,{enumerable:!0,configurable:!0,get:()=>r.value,set:e=>r.value=e}):t[n]=r}}(u,o),s)for(const f in s){const e=s[f];w(e)&&(o[f]=e.bind(n))}if(r){const t=r.call(n,n);k(t)&&(e.data=zo(t))}if(pi=!0,i)for(const b in i){const e=i[b],t=w(e)?e.bind(n,n):w(e.get)?e.get.bind(n,n):f,r=!w(e)&&w(e.set)?e.set.bind(n):f,s=Gi({get:t,set:r});Object.defineProperty(o,b,{enumerable:!0,configurable:!0,get:()=>s.value,set:e=>s.value=e})}if(c)for(const f in c)gi(c[f],o,n,f);function R(e,t){b(t)?t.forEach((t=>e(t.bind(n)))):t&&e(t.bind(n))}if(function(){if(a){const e=w(a)?a.call(n):a;Reflect.ownKeys(e).forEach((t=>{!function(e,t){if(Ni){let n=Ni.provides;const o=Ni.parent&&Ni.parent.provides;o===n&&(n=Ni.provides=Object.create(o)),n[e]=t,"app"===Ni.type.mpType&&Ni.appContext.app.provide(e,t)}}(t,e[t])}))}}(),l&&hi(l,e,"c"),R(Xr,p),R(Qr,d),R(Yr,h),R(ei,g),R(Zr,m),R(Fr,v),R(si,P),R(ii,O),R(ri,A),R(ti,_),R(ni,$),R(oi,j),b(E))if(E.length){const t=e.exposed||(e.exposed={});E.forEach((e=>{Object.defineProperty(t,e,{get:()=>n[e],set:t=>n[e]=t})}))}else e.exposed||(e.exposed={});S&&e.render===f&&(e.render=S),null!=C&&(e.inheritAttrs=C),I&&(e.components=I),T&&(e.directives=T),e.ctx.$onApplyOptions&&e.ctx.$onApplyOptions(t,e,n)}function hi(e,t,n){ar(b(e)?e.map((e=>e.bind(t.proxy))):e.bind(t.proxy),t,n)}function gi(e,t,n,o){const r=o.includes(".")?Br(n,o):()=>n[o];if($(e)){const n=t[e];w(n)&&Dr(r,n)}else if(w(e))Dr(r,e.bind(n));else if(k(e))if(b(e))e.forEach((e=>gi(e,t,n,o)));else{const o=w(e.handler)?e.handler.bind(n):t[e.handler];w(o)&&Dr(r,o,e)}}function mi(e){const t=e.type,{mixins:n,extends:o}=t,{mixins:r,optionsCache:i,config:{optionMergeStrategies:s}}=e.appContext,c=i.get(t);let a;return c?a=c:r.length||n||o?(a={},r.length&&r.forEach((e=>vi(a,e,s,!0))),vi(a,t,s)):a=t,k(t)&&i.set(t,a),a}function vi(e,t,n,o=!1){const{mixins:r,extends:i}=t;i&&vi(e,i,n,!0),r&&r.forEach((t=>vi(e,t,n,!0)));for(const s in t)if(o&&"expose"===s);else{const o=yi[s]||n&&n[s];e[s]=o?o(e[s],t[s]):t[s]}return e}const yi={data:bi,props:$i,emits:$i,methods:wi,computed:wi,beforeCreate:xi,created:xi,beforeMount:xi,mounted:xi,beforeUpdate:xi,updated:xi,beforeDestroy:xi,beforeUnmount:xi,destroyed:xi,unmounted:xi,activated:xi,deactivated:xi,errorCaptured:xi,serverPrefetch:xi,components:wi,directives:wi,watch:function(e,t){if(!e)return t;if(!t)return e;const n=g(Object.create(null),e);for(const o in t)n[o]=xi(e[o],t[o]);return n},provide:bi,inject:function(e,t){return wi(_i(e),_i(t))}};function bi(e,t){return t?e?function(){return g(w(e)?e.call(this,this):e,w(t)?t.call(this,this):t)}:t:e}function _i(e){if(b(e)){const t={};for(let n=0;n{a=!0;const[n,o]=Ai(e,t,!0);g(s,n),o&&c.push(...o)};!n&&t.mixins.length&&t.mixins.forEach(o),e.extends&&o(e.extends),e.mixins&&e.mixins.forEach(o)}if(!i&&!a)return k(e)&&o.set(e,l),l;if(b(i))for(let l=0;l-1,n[1]=o<0||t-1||y(n,"default"))&&c.push(e)}}}const f=[s,c];return k(e)&&o.set(e,f),f}function Pi(e){return"$"!==e[0]&&!C(e)}function ji(e){if(null===e)return"null";if("function"==typeof e)return e.name||"";if("object"==typeof e){return e.constructor&&e.constructor.name||""}return""}function Ei(e,t){return ji(e)===ji(t)}function Ci(e,t){return b(t)?t.findIndex((t=>Ei(t,e))):w(t)&&Ei(t,e)?0:-1}const Ii=$r;function Ti(e){return e?Zo(t=e)||Fo(t)||"__vInternal"in e?g({},e):e:null;var t}const Mi=Vr();let Ri=0;function Di(e,t,n){const o=e.type,r=(t?t.appContext:e.appContext)||Mi,i={uid:Ri++,vnode:e,type:o,parent:t,appContext:r,root:null,next:null,subTree:null,effect:null,update:null,scope:new Nn(!0),render:null,proxy:null,exposed:null,exposeProxy:null,withProxy:null,provides:t?t.provides:Object.create(r.provides),accessCache:null,renderCache:[],components:null,directives:null,propsOptions:Ai(o,r),emitsOptions:jr(o,r),emit:null,emitted:null,propsDefaults:u,inheritAttrs:o.inheritAttrs,ctx:u,data:u,props:u,attrs:u,slots:u,refs:u,setupState:u,setupContext:null,attrsProxy:null,slotsProxy:null,suspense:n,suspenseId:n?n.pendingId:0,asyncDep:null,asyncResolved:!1,isMounted:!1,isUnmounted:!1,isDeactivated:!1,bc:null,c:null,bm:null,m:null,bu:null,u:null,um:null,bum:null,da:null,a:null,rtg:null,rtc:null,ec:null,sp:null,$uniElements:new Map,$templateUniElementRefs:[],$templateUniElementStyles:{},$eS:{},$eA:{}};return i.ctx={_:i},i.root=t?t.root:i,i.emit=Pr.bind(null,i),e.ce&&e.ce(i),i}let Ni=null;const Li=()=>Ni||Cr;let Bi,Hi;Bi=e=>{Ni=e},Hi=e=>{Wi=e};const Vi=e=>{const t=Ni;return Bi(e),e.scope.on(),()=>{e.scope.off(),Bi(t)}},zi=()=>{Ni&&Ni.scope.off(),Bi(null)};function Ui(e){return 4&e.vnode.shapeFlag}let Wi=!1;function Zi(e,t=!1){t&&Hi(t);const{props:n}=e.vnode,o=Ui(e);Si(e,n,o,t);const r=o?function(e){const t=e.type;e.accessCache=Object.create(null),e.proxy=Ko(new Proxy(e.ctx,li));const{setup:n}=t;if(n){const t=e.setupContext=n.length>1?function(e){const t=t=>{e.exposed=t||{}};return{get attrs(){return function(e){return e.attrsProxy||(e.attrsProxy=new Proxy(e.attrs,{get:(t,n)=>(no(e,0,"$attrs"),t[n])}))}(e)},slots:e.slots,emit:e.emit,expose:t}}(e):null,o=Vi(e);Zn();const r=cr(n,e,0,[e.props,t]);Fn(),o(),O(r)?r.then(zi,zi):function(e,t){w(t)?e.render=t:k(t)&&(e.setupState=sr(t));Fi(e)}(e,r)}else Fi(e)}(e):void 0;return t&&Hi(!1),r}function Fi(e,t,n){const o=e.type;e.render||(e.render=o.render||f);{const t=Vi(e);Zn();try{di(e)}finally{Fn(),t()}}}function qi(e){if(e.exposed)return e.exposeProxy||(e.exposeProxy=new Proxy(sr(Ko(e.exposed)),{get:(t,n)=>n in t?t[n]:e.proxy[n],has:(e,t)=>t in e||t in ai}))}const Gi=(e,t)=>{const n=function(e,t,n=!1){let o,r;const i=w(e);return i?(o=e,r=f):(o=e.get,r=e.set),new Qo(o,r,i||!r,n)}(e,0,Wi);return n},Ki="3.4.21";function Ji(e){return rr(e)}const Xi="[object Array]",Qi="[object Object]";function Yi(e,t){const n={};return es(e,t),ts(e,t,"",n),n}function es(e,t){if((e=Ji(e))===t)return;const n=P(e),o=P(t);if(n==Qi&&o==Qi)for(let r in t){const n=e[r];void 0===n?e[r]=null:es(n,t[r])}else n==Xi&&o==Xi&&e.length>=t.length&&t.forEach(((t,n)=>{es(e[n],t)}))}function ts(e,t,n,o){if((e=Ji(e))===t)return;const r=P(e),i=P(t);if(r==Qi)if(i!=Qi||Object.keys(e).length{ts(e,i[t],(""==n?"":n+".")+s+"["+t+"]",o)}));else if(c==Qi)if(a!=Qi||Object.keys(r).length{ts(e,t[r],n+"["+r+"]",o)})):ns(o,n,e)}function ns(e,t,n){e[t]=n}function os(e){const t=e.ctx.__next_tick_callbacks;if(t&&t.length){const e=t.slice(0);t.length=0;for(let t=0;t{t?cr(t.bind(e.proxy),e,14):o&&o(e.proxy)})),new Promise((e=>{o=e}))}function is(e,t){const n=typeof(e=Ji(e));if("object"===n&&null!==e){let n=t.get(e);if(void 0!==n)return n;if(b(e)){const o=e.length;n=new Array(o),t.set(e,n);for(let r=0;r{o[e]=n[e]})),o}(r,i));Object.keys(s).length?(o.__next_tick_pending=!0,r.setData(s,(()=>{o.__next_tick_pending=!1,os(e)})),Sr()):os(e)}}function as(e,t,n){t.appContext.config.globalProperties.$applyOptions(e,t,n);const o=e.computed;if(o){const e=Object.keys(o);if(e.length){const n=t.ctx;n.$computedKeys||(n.$computedKeys=[]),n.$computedKeys.push(...e)}}delete t.ctx.$onApplyOptions}function us(e,t=!1){const{setupState:n,$templateRefs:o,$templateUniElementRefs:r,ctx:{$scope:i,$mpPlatform:s}}=e;if("mp-alipay"===s)return;if(!i||!o&&!r)return;if(t)return o&&o.forEach((e=>ls(e,null,n))),void(r&&r.forEach((e=>ls(e,null,n))));const c="mp-baidu"===s||"mp-toutiao"===s,a=e=>{if(0===e.length)return[];const t=(i.selectAllComponents(".r")||[]).concat(i.selectAllComponents(".r-i-f")||[]);return e.filter((e=>{const o=function(e,t){const n=e.find((e=>e&&(e.properties||e.props).uI===t));if(n){const e=n.$vm;return e?qi(e.$)||e:function(e){k(e)&&Ko(e);return e}(n)}return null}(t,e.i);return!(!c||null!==o)||(ls(e,o,n),!1)}))},u=()=>{if(o){const t=a(o);t.length&&e.proxy&&e.proxy.$scope&&e.proxy.$scope.setData({r1:1},(()=>{a(t)}))}};r&&r.length&&rs(e,(()=>{r.forEach((e=>{b(e.v)?e.v.forEach((t=>{ls(e,t,n)})):ls(e,e.v,n)}))})),i._$setRef?i._$setRef(u):rs(e,u)}function ls({r:e,f:t},n,o){if(w(e))e(n,{});else{const r=$(e),i=tr(e);if(r||i)if(t){if(!i)return;b(e.value)||(e.value=[]);const t=e.value;if(-1===t.indexOf(n)){if(t.push(n),!n)return;n.$&&ti((()=>m(t,n)),n.$)}}else r?y(o,e)&&(o[e]=n):tr(e)&&(e.value=n)}}const fs=$r;function ps(e,t){const n=e.component=Di(e,t.parentComponent,null);return n.ctx.$onApplyOptions=as,n.ctx.$children=[],"app"===t.mpType&&(n.render=f),t.onBeforeSetup&&t.onBeforeSetup(n,t),Zi(n),t.parentComponent&&n.proxy&&t.parentComponent.ctx.$children.push(qi(n)||n.proxy),function(e){const t=vs.bind(e);e.$updateScopedSlots=()=>_r((()=>xr(t)));const n=()=>{if(e.isMounted){const{next:t,bu:n,u:o}=e;ys(e,!1),ms(),n&&H(n),ys(e,!0),cs(e,hs(e)),o&&fs(o)}else ti((()=>{us(e,!0)}),e),cs(e,hs(e))},o=e.effect=new Ln(n,f,(()=>xr(r)),e.scope),r=e.update=()=>{o.dirty&&o.run()};r.id=e.uid,ys(e,!0),r()}(n),n.proxy}const ds=e=>{let t;for(const n in e)("class"===n||"style"===n||d(n))&&((t||(t={}))[n]=e[n]);return t};function hs(e){const{type:t,vnode:n,proxy:o,withProxy:r,props:i,propsOptions:[s],slots:c,attrs:a,emit:u,render:l,renderCache:f,data:p,setupState:d,ctx:h,uid:g,appContext:{app:{config:{globalProperties:{pruneComponentPropsCache:m}}}},inheritAttrs:v}=e;let y;e.$uniElementIds=new Map,e.$templateRefs=[],e.$templateUniElementRefs=[],e.$templateUniElementStyles={},e.$ei=0,m(g),e.__counter=0===e.__counter?1:0;const b=Ir(e);try{if(4&n.shapeFlag){gs(v,i,s,a);const e=r||o;y=l.call(e,e,f,i,d,p,h)}else{gs(v,i,s,t.props?a:ds(a));const e=t;y=e.length>1?e(i,{attrs:a,slots:c,emit:u}):e(i,null)}}catch(_){ur(_,e,1),y=!1}return us(e),Ir(b),y}function gs(e,t,n,o){if(t&&o&&!1!==e){const e=Object.keys(o).filter((e=>"class"!==e&&"style"!==e));if(!e.length)return;n&&e.some(h)?e.forEach((e=>{h(e)&&e.slice(9)in n||(t[e]=o[e])})):e.forEach((e=>t[e]=o[e]))}}const ms=e=>{Zn(),Sr(),Fn()};function vs(){const e=this.$scopedSlotsData;if(!e||0===e.length)return;const t=this.ctx.$scope,n=t.data,o=Object.create(null);e.forEach((({path:e,index:t,data:r})=>{const i=ke(n,e),s=$(t)?`${e}.${t}`:`${e}[${t}]`;if(void 0===i||void 0===i[t])o[s]=r;else{const e=Yi(r,i[t]);Object.keys(e).forEach((t=>{o[s+"."+t]=e[t]}))}})),e.length=0,Object.keys(o).length&&t.setData(o)}function ys({effect:e,update:t},n){e.allowRecurse=t.allowRecurse=n}const bs=function(e,t=null){w(e)||(e=g({},e)),null==t||k(t)||(t=null);const n=Vr(),o=new WeakSet,r=n.app={_uid:zr++,_component:e,_props:t,_container:null,_context:n,_instance:null,version:Ki,get config(){return n.config},set config(e){},use:(e,...t)=>(o.has(e)||(e&&w(e.install)?(o.add(e),e.install(r,...t)):w(e)&&(o.add(e),e(r,...t))),r),mixin:e=>(n.mixins.includes(e)||n.mixins.push(e),r),component:(e,t)=>t?(n.components[e]=t,r):n.components[e],directive:(e,t)=>t?(n.directives[e]=t,r):n.directives[e],mount(){},unmount(){},provide:(e,t)=>(n.provides[e]=t,r),runWithContext(e){const t=Ur;Ur=r;try{return e()}finally{Ur=t}}};return r};function _s(e,t=null){("undefined"!=typeof window?window:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof global?global:"undefined"!=typeof my?my:void 0).__VUE__=!0;const n=bs(e,t),o=n._context;o.config.globalProperties.$nextTick=function(e){return rs(this.$,e)};const r=e=>(e.appContext=o,e.shapeFlag=6,e),i=function(e,t){return ps(r(e),t)},s=function(e){return e&&function(e){const{bum:t,scope:n,update:o,um:r}=e;t&&H(t);{const t=e.parent;if(t){const n=t.ctx.$children,o=qi(e)||e.proxy,r=n.indexOf(o);r>-1&&n.splice(r,1)}}n.stop(),o&&(o.active=!1),r&&fs(r),fs((()=>{e.isUnmounted=!0}))}(e.$)};return n.mount=function(){e.render=f;const t=ps(r({type:e}),{mpType:"app",mpInstance:null,parentComponent:null,slots:[],props:null});return n._instance=t.$,t.$app=n,t.$createComponent=i,t.$destroyComponent=s,o.$appInstance=t,t},n.unmount=function(){},n}function xs(e,t,n,o){w(t)&&Kr(e,t.bind(n),o)}function ws(e,t,n){!function(e,t,n){const o=e.mpType||n.$mpType;o&&"component"!==o&&Object.keys(e).forEach((o=>{if(Te(o,e[o],!1)){const r=e[o];b(r)?r.forEach((e=>xs(o,e,n,t))):xs(o,r,n,t)}}))}(e,t,n)}function $s(e,t,n){return e[t]=n}function Ss(e,...t){const n=this[e];return n?n(...t):(console.error(`method ${e} not found`),null)}function ks(e){const t=e.config.errorHandler;return function(n,o,r){t&&t(n,o,r);const i=e._instance;if(!i||!i.proxy)throw n;i[Y]?i.proxy.$callHook(Y,n):lr(n,0,o&&o.$.vnode,!1)}}function Os(e,t){return e?[...new Set([].concat(e,t))]:t}let As;const Ps="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",js=/^(?:[A-Za-z\d+/]{4})*?(?:[A-Za-z\d+/]{2}(?:==)?|[A-Za-z\d+/]{3}=?)?$/;function Es(){const e=Mn.getStorageSync("uni_id_token")||"",t=e.split(".");if(!e||3!==t.length)return{uid:null,role:[],permission:[],tokenExpired:0};let n;try{n=JSON.parse((o=t[1],decodeURIComponent(As(o).split("").map((function(e){return"%"+("00"+e.charCodeAt(0).toString(16)).slice(-2)})).join(""))))}catch(r){throw new Error("获取当前用户信息出错,详细错误信息为:"+r.message)}var o;return n.tokenExpired=1e3*n.exp,delete n.exp,delete n.iat,n}function Cs(e){const t=e.config;var n;t.errorHandler=De(e,ks),n=t.optionMergeStrategies,Ce.forEach((e=>{n[e]=Os}));const o=t.globalProperties;!function(e){e.uniIDHasRole=function(e){const{role:t}=Es();return t.indexOf(e)>-1},e.uniIDHasPermission=function(e){const{permission:t}=Es();return this.uniIDHasRole("admin")||t.indexOf(e)>-1},e.uniIDTokenValid=function(){const{tokenExpired:e}=Es();return e>Date.now()}}(o),o.$set=$s,o.$applyOptions=ws,o.$callMethod=Ss,Mn.invokeCreateVueAppHook(e)}As="function"!=typeof atob?function(e){if(e=String(e).replace(/[\t\n\f\r ]+/g,""),!js.test(e))throw new Error("Failed to execute 'atob' on 'Window': The string to be decoded is not correctly encoded.");var t;e+="==".slice(2-(3&e.length));for(var n,o,r="",i=0;i>16&255):64===o?String.fromCharCode(t>>16&255,t>>8&255):String.fromCharCode(t>>16&255,t>>8&255,255&t);return r}:atob;const Is=Object.create(null);function Ts(e){delete Is[e]}function Ms(e){if(!e)return;const[t,n]=e.split(",");return Is[t]?Is[t][parseInt(n)]:void 0}var Rs={install(e){Cs(e),e.config.globalProperties.pruneComponentPropsCache=Ts;const t=e.mount;e.mount=function(n){const o=t.call(e,n),r=function(){const e="createApp";if("undefined"!=typeof global&&void 0!==global[e])return global[e];if("undefined"!=typeof my)return my[e]}();return r?r(o):"undefined"!=typeof createMiniProgramApp&&createMiniProgramApp(o),o}}};function Ds(e){return $(e)?e:function(e){let t="";if(!e||$(e))return t;for(const n in e)t+=`${n.startsWith("--")?n:D(n)}:${e[n]};`;return t}(z(e))}function Ns(e,t){const n=Li(),o=n.ctx,r=void 0===t||"mp-weixin"!==o.$mpPlatform&&"mp-qq"!==o.$mpPlatform&&"mp-xhs"!==o.$mpPlatform||!$(t)&&"number"!=typeof t?"":"_"+t,i="e"+n.$ei+++r,s=o.$scope;if(!e)return delete s[i],i;const c=s[i];return c?c.value=e:s[i]=function(e,t){const n=e=>{var o;(o=e).type&&o.target&&(o.preventDefault=f,o.stopPropagation=f,o.stopImmediatePropagation=f,y(o,"detail")||(o.detail={}),y(o,"markerId")&&(o.detail="object"==typeof o.detail?o.detail:{},o.detail.markerId=o.markerId),j(o.detail)&&y(o.detail,"checked")&&!y(o.detail,"value")&&(o.detail.value=o.detail.checked),j(o.detail)&&(o.target=g({},o.target,o.detail)));let r=[e];t&&t.ctx.$getTriggerEventDetail&&"number"==typeof e.detail&&(e.detail=t.ctx.$getTriggerEventDetail(e.detail)),e.detail&&e.detail.__args__&&(r=e.detail.__args__);const i=n.value,s=()=>ar(function(e,t){if(b(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n&&n.call(e),e._stopped=!0},t.map((e=>t=>!t._stopped&&e(t)))}return t}(e,i),t,5,r),c=e.target,a=!!c&&(!!c.dataset&&"true"===String(c.dataset.eventsync));if(!Ls.includes(e.type)||a){const t=s();if("input"===e.type&&(b(t)||O(t)))return;return t}setTimeout(s)};return n.value=e,n}(e,n),i}const Ls=["tap","longpress","longtap","transitionend","animationstart","animationiteration","animationend","touchforcechange"];const Bs=function(e,t=null){return e&&(e.mpType="app"),_s(e,t).use(Rs)};const Hs=["externalClasses"];const Vs=/_(.*)_worklet_factory_/;function zs(e,t){const n=e.$children;for(let r=n.length-1;r>=0;r--){const e=n[r];if(e.$scope._$vueId===t)return e}let o;for(let r=n.length-1;r>=0;r--)if(o=zs(n[r],t),o)return o}const Us=["createSelectorQuery","createIntersectionObserver","selectAllComponents","selectComponent"];function Ws(e,t){const n=e.ctx;n.mpType=t.mpType,n.$mpType=t.mpType,n.$mpPlatform="mp-weixin",n.$scope=t.mpInstance,Object.defineProperties(n,{[$e]:{get(){const e=this.$scope.data[$e];return void 0===e?"":e}}}),n.$mp={},n._self={},e.slots={},b(t.slots)&&t.slots.length&&(t.slots.forEach((t=>{e.slots[t]=!0})),e.slots.d&&(e.slots.default=!0)),n.getOpenerEventChannel=function(){return t.mpInstance.getOpenerEventChannel()},n.$hasHook=Zs,n.$callHook=Fs,e.emit=function(e,t){return function(n,...o){const r=t.$scope;if(r&&n){const e={__args__:o};r.triggerEvent(n,e)}return e.apply(this,[n,...o])}}(e.emit,n)}function Zs(e){const t=this.$[e];return!(!t||!t.length)}function Fs(e,t){"mounted"===e&&(Fs.call(this,"bm"),this.$.isMounted=!0,e="m");const n=this.$[e];return n&&((e,t)=>{let n;for(let o=0;o{Te(n,e[n])&&t.add(n)}));{const{extends:n,mixins:o}=e;o&&o.forEach((e=>Gs(e,t))),n&&Gs(n,t)}}return t}function Ks(e,t,n){-1!==n.indexOf(t)||y(e,t)||(e[t]=function(e){return this.$vm&&this.$vm.$callHook(t,e)})}const Js=[re];function Xs(e,t,n=Js){t.forEach((t=>Ks(e,t,n)))}function Qs(e,t,n=Js){Gs(t).forEach((t=>Ks(e,t,n)))}const Ys=Se((()=>{const e=[],t=w(getApp)&&getApp({allowDefault:!0});if(t&&t.$vm&&t.$vm.$){const n=t.$vm.$.appContext.mixins;if(b(n)){const t=Object.keys(Ie);n.forEach((n=>{t.forEach((t=>{y(n,t)&&!e.includes(t)&&e.push(t)}))}))}}return e}));const ec=[J,X,Y,ee,te,ne];function tc(e,t){const n=e.$,o={globalData:e.$options&&e.$options.globalData||{},$vm:e,onLaunch(t){this.$vm=e;const o=n.ctx;this.$vm&&o.$scope&&o.$callHook||(Ws(n,{mpType:"app",mpInstance:this,slots:[]}),o.globalData=this.globalData,e.$callHook(Q,t))}},r=wx.$onErrorHandlers;r&&(r.forEach((e=>{Kr(Y,e,n)})),r.length=0),function(e){const t=nr(function(){var e;let t="";{const n=(null===(e=wx.getAppBaseInfo)||void 0===e?void 0:e.call(wx))||wx.getSystemInfoSync();t=ze(n&&n.language?n.language:Ve)||Ve}return t}());Object.defineProperty(e,"$locale",{get:()=>t.value,set(e){t.value=e}})}(e);const i=e.$.type;Xs(o,ec),Qs(o,i);{const e=i.methods;e&&g(o,e)}return o}function nc(e,t){if(w(e.onLaunch)){const t=wx.getLaunchOptionsSync&&wx.getLaunchOptionsSync();e.onLaunch(t)}w(e.onShow)&&wx.onAppShow&&wx.onAppShow((e=>{t.$callHook("onShow",e)})),w(e.onHide)&&wx.onAppHide&&wx.onAppHide((e=>{t.$callHook("onHide",e)}))}const oc=["eO","uR","uRIF","uI","uT","uP","uS"];function rc(e){e.properties||(e.properties={}),g(e.properties,function(e,t=!1){const n={};if(!t){let e=function(e){const t=Object.create(null);e&&e.forEach((e=>{t[e]=!0})),this.setData({$slots:t})};oc.forEach((e=>{n[e]={type:null,value:""}})),n.uS={type:null,value:[]},n.uS.observer=e}return e.behaviors&&e.behaviors.includes("wx://form-field")&&(e.properties&&e.properties.name||(n.name={type:null,value:""}),e.properties&&e.properties.value||(n.value={type:null,value:""})),n}(e),function(e){const t={};return e&&e.virtualHost&&(t.virtualHostStyle={type:null,value:""},t.virtualHostClass={type:null,value:""},t.virtualHostHidden={type:null,value:""},t[$e]={type:null,value:""}),t}(e.options))}const ic=[String,Number,Boolean,Object,Array,null];function sc(e,t){const n=function(e){return b(e)&&1===e.length?e[0]:e}(e);return-1!==ic.indexOf(n)?n:null}function cc(e,t){return(t?function(e){const t={};j(e)&&Object.keys(e).forEach((n=>{-1===oc.indexOf(n)&&(t[n]=e[n])}));return t}(e):Ms(e.uP))||{}}function ac(e){const t=function(){const e=this.properties.uP;e&&(this.$vm?function(e,t){const n=Go(t.props),o=Ms(e)||{};uc(n,o)&&(!function(e,t,n,o){const{props:r,attrs:i,vnode:{patchFlag:s}}=e,c=Go(r),[a]=e.propsOptions;let u=!1;if(!(o||s>0)||16&s){let o;ki(e,t,r,i)&&(u=!0);for(const i in c)t&&(y(t,i)||(o=D(i))!==i&&y(t,o))||(a?!n||void 0===n[i]&&void 0===n[o]||(r[i]=Oi(a,c,i,void 0,e,!0)):delete r[i]);if(i!==c)for(const e in i)t&&y(t,e)||(delete i[e],u=!0)}else if(8&s){const n=e.vnode.dynamicProps;for(let o=0;o-1&&function(e){const t=dr.indexOf(e);t>hr&&dr.splice(t,1)}(t.update),t.update());var r}(e,this.$vm.$):"m"===this.properties.uT&&function(e,t){const n=t.properties,o=Ms(e)||{};uc(n,o,!1)&&t.setData(o)}(e,this))};e.observers||(e.observers={}),e.observers.uP=t}function uc(e,t,n=!0){const o=Object.keys(t);if(n&&o.length!==Object.keys(e).length)return!0;for(let r=0;r{o.push(e.replace("uni://","wx://")),"uni://form-field"===e&&(b(n)?(n.push("name"),n.push("modelValue")):(n.name={type:String,default:""},n.modelValue={type:[String,Number,Boolean,Array,Object,Date],default:""}))})),o}(t)}function fc(e,{parse:t,mocks:n,isPage:o,isPageInProject:r,initRelation:i,handleLink:s,initLifetimes:c}){e=e.default||e;const a={multipleSlots:!0,addGlobalClass:!0,pureDataPattern:/^uP$/};b(e.mixins)&&e.mixins.forEach((e=>{k(e.options)&&g(a,e.options)})),e.options&&g(a,e.options);const u={options:a,lifetimes:c({mocks:n,isPage:o,initRelation:i,vueOptions:e}),pageLifetimes:{show(){this.$vm&&this.$vm.$callHook("onPageShow")},hide(){this.$vm&&this.$vm.$callHook("onPageHide")},resize(e){this.$vm&&this.$vm.$callHook("onPageResize",e)}},methods:{__l:s}};var l,f,p,d;return lc(u,e),rc(u),ac(u),function(e,t){Hs.forEach((n=>{y(t,n)&&(e[n]=t[n])}))}(u,e),l=u.methods,f=e.wxsCallMethods,b(f)&&f.forEach((e=>{l[e]=function(t){return this.$vm[e](t)}})),p=u.methods,(d=e.methods)&&Object.keys(d).forEach((e=>{const t=e.match(Vs);if(t){const n=t[1];p[e]=d[e],p[n]=d[n]}})),t&&t(u,{handleLink:s}),u}let pc,dc;function hc(){return getApp().$vm}function gc(e,t){const{parse:n,mocks:o,isPage:r,initRelation:i,handleLink:s,initLifetimes:c}=t,a=fc(e,{mocks:o,isPage:r,isPageInProject:!0,initRelation:i,handleLink:s,initLifetimes:c});!function({properties:e},t){b(t)?t.forEach((t=>{e[t]={type:String,value:""}})):j(t)&&Object.keys(t).forEach((n=>{const o=t[n];if(j(o)){let t=o.default;w(t)&&(t=t());const r=o.type;o.type=sc(r),e[n]={type:o.type,value:t}}else e[n]={type:sc(o)}}))}(a,(e.default||e).props);const u=a.methods;return u.onLoad=function(e){var t;return this.options=e,this.$page={fullPath:(t=this.route+je(e),function(e){return 0===e.indexOf("/")}(t)?t:"/"+t)},this.$vm&&this.$vm.$callHook(oe,e)},Xs(u,qs),Qs(u,e),function(e,t){if(!t)return;Object.keys(Ie).forEach((n=>{t&Ie[n]&&Ks(e,n,[])}))}(u,e.__runtimeHooks),Xs(u,Ys()),n&&n(a,{handleLink:s}),a}const mc=Page,vc=Component;function yc(e){const t=e.triggerEvent,n=function(n,...o){return t.apply(e,[(r=n,M(r.replace(Ae,"-"))),...o]);var r};try{e.triggerEvent=n}catch(o){e._triggerEvent=n}}function bc(e,t,n){const o=t[e];t[e]=o?function(...e){return yc(this),o.apply(this,e)}:function(){yc(this)}}Page=function(e){return bc(oe,e),mc(e)},Component=function(e){bc("created",e);return e.properties&&e.properties.uP||(rc(e),ac(e)),vc(e)};var _c=Object.freeze({__proto__:null,handleLink:function(e){const t=e.detail||e.value,n=t.vuePid;let o;n&&(o=zs(this.$vm,n)),o||(o=this.$vm),t.parent=o},initLifetimes:function({mocks:e,isPage:t,initRelation:n,vueOptions:o}){return{attached(){let r=this.properties;!function(e,t){if(!e)return;const n=e.split(","),o=n.length;1===o?t._$vueId=n[0]:2===o&&(t._$vueId=n[0],t._$vuePid=n[1])}(r.uI,this);const i={vuePid:this._$vuePid};n(this,i);const s=this,c=t(s);let a=r;this.$vm=function(e,t){pc||(pc=hc().$createComponent);const n=pc(e,t);return qi(n.$)||n}({type:o,props:cc(a,c)},{mpType:c?"page":"component",mpInstance:s,slots:r.uS||{},parentComponent:i.parent&&i.parent.$,onBeforeSetup(t,n){!function(e,t){Object.defineProperty(e,"refs",{get(){const e={};return function(e,t,n){e.selectAllComponents(t).forEach((e=>{const t=e.properties.uR;n[t]=e.$vm||e}))}(t,".r",e),t.selectAllComponents(".r-i-f").forEach((t=>{const n=t.properties.uR;n&&(e[n]||(e[n]=[]),e[n].push(t.$vm||t))})),e}})}(t,s),function(e,t,n){const o=e.ctx;n.forEach((n=>{y(t,n)&&(e[n]=o[n]=t[n])}))}(t,s,e),function(e,t){Ws(e,t);const n=e.ctx;Us.forEach((e=>{n[e]=function(...t){const o=n.$scope;if(o&&o[e])return o[e].apply(o,t)}}))}(t,n)}}),c||function(e){const t=e.$options;b(t.behaviors)&&t.behaviors.includes("uni://form-field")&&e.$watch("modelValue",(()=>{e.$scope&&e.$scope.setData({name:e.name,value:e.modelValue})}),{immediate:!0})}(this.$vm)},ready(){this.$vm&&(this.$vm.$callHook("mounted"),this.$vm.$callHook(re))},detached(){var e;this.$vm&&(Ts(this.$vm.$.uid),e=this.$vm,dc||(dc=hc().$destroyComponent),dc(e))}}},initRelation:function(e,t){e.triggerEvent("__l",t)},isPage:function(e){return!!e.route},mocks:["__route__","__wxExparserNodeId__","__wxWebviewId__"]});const xc=function(e){return App(tc(e))},wc=($c=_c,function(e){return Component(gc(e,$c))});var $c;const Sc=function(e){return function(t){return Component(fc(t,e))}}(_c),kc=function(e){nc(tc(e),e)},Oc=function(e){const t=tc(e),n=w(getApp)&&getApp({allowDefault:!0});if(!n)return;e.$.ctx.$scope=n;const o=n.globalData;o&&Object.keys(t.globalData).forEach((e=>{y(o,e)||(o[e]=t.globalData[e])})),Object.keys(t).forEach((e=>{y(n,e)||(n[e]=t[e])})),nc(t,e)};function Ac(e,t=new WeakMap){if(null===e||"object"!=typeof e)return e;if(t.has(e))return t.get(e);let n;if(e instanceof Date)n=new Date(e.getTime());else if(e instanceof RegExp)n=new RegExp(e);else if(e instanceof Map)n=new Map(Array.from(e,(([e,n])=>[e,Ac(n,t)])));else if(e instanceof Set)n=new Set(Array.from(e,(e=>Ac(e,t))));else if(Array.isArray(e))n=e.map((e=>Ac(e,t)));else if("[object Object]"===Object.prototype.toString.call(e)){n=Object.create(Object.getPrototypeOf(e)),t.set(e,n);for(const[o,r]of Object.entries(e))n[o]=Ac(r,t)}else n=Object.assign({},e);return t.set(e,n),n}function Pc(e={},t={}){if("object"!=typeof(e=Ac(e))||null===e||"object"!=typeof t||null===t)return e;const n=Array.isArray(e)?e.slice():Object.assign({},e);for(const o in t){if(!t.hasOwnProperty(o))continue;const e=t[o],r=n[o];e instanceof Date?n[o]=new Date(e):e instanceof RegExp?n[o]=new RegExp(e):e instanceof Map?n[o]=new Map(e):e instanceof Set?n[o]=new Set(e):n[o]="object"==typeof e&&null!==e?Pc(r,e):e}return n}function jc(e){switch(typeof e){case"undefined":return!0;case"string":if(0==e.replace(/(^[ \t\n\r]*)|([ \t\n\r]*$)/g,"").length)return!0;break;case"boolean":if(!e)return!0;break;case"number":if(0===e||isNaN(e))return!0;break;case"object":if(null===e||0===e.length)return!0;for(var t in e)return!1;return!0}return!1}wx.createApp=global.createApp=xc,wx.createPage=wc,wx.createComponent=Sc,wx.createPluginApp=global.createPluginApp=kc,wx.createSubpackageApp=global.createSubpackageApp=Oc;const Ec={email:function(e){return/[\w!#$%&'*+/=?^_`{|}~-]+(?:\.[\w!#$%&'*+/=?^_`{|}~-]+)*@(?:[\w](?:[\w-]*[\w])?\.)+[\w](?:[\w-]*[\w])?/.test(e)},mobile:function(e){return/^1[3-9]\d{9}$/.test(e)},url:function(e){return/http(s)?:\/\/([\w-]+\.)+[\w-]+(\/[\w-.\/?%&=]*)?/.test(e)},date:function(e){return!/Invalid|NaN/.test(new Date(e).toString())},dateISO:function(e){return/^\d{4}[\/\-](0?[1-9]|1[012])[\/\-](0?[1-9]|[12][0-9]|3[01])$/.test(e)},number:function(e){return/^[\+-]?(\d+\.?\d*|\.\d+|\d\.\d+e\+\d+)$/.test(e)},digits:function(e){return/^\d+$/.test(e)},idCard:function(e){return/^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$/.test(e)},carNo:function(e){const t=/^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}(([0-9]{5}[DF]$)|([DF][A-HJ-NP-Z0-9][0-9]{4}$))/,n=/^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}[A-HJ-NP-Z0-9]{4}[A-HJ-NP-Z0-9挂学警港澳]{1}$/;return 7===e.length?n.test(e):8===e.length&&t.test(e)},amount:function(e){return/^[1-9]\d*(,\d{3})*(\.\d{1,2})?$|^0\.\d{1,2}$/.test(e)},chinese:function(e){return/^[\u4e00-\u9fa5]+$/gi.test(e)},letter:function(e){return/^[a-zA-Z]*$/.test(e)},enOrNum:function(e){return/^[0-9a-zA-Z]*$/g.test(e)},contains:function(e,t){return e.indexOf(t)>=0},range:function(e,t){return e>=t[0]&&e<=t[1]},rangeLength:function(e,t){return e.length>=t[0]&&e.length<=t[1]},empty:jc,isEmpty:jc,jsonString:function(e){if("string"==typeof e)try{var t=JSON.parse(e);return!("object"!=typeof t||!t)}catch(n){return!1}return!1},landline:function(e){return/^\d{3,4}-\d{7,8}(-\d{3,4})?$/.test(e)},object:function(e){return"[object Object]"===Object.prototype.toString.call(e)},array:function(e){return"function"==typeof Array.isArray?Array.isArray(e):"[object Array]"===Object.prototype.toString.call(e)},code:function(e,t=6){return new RegExp(`^\\d{${t}}$`).test(e)}};const Cc=new class{setConfig(e){this.config=Pc(this.config,e)}request(e={}){if(this.interceptor.request&&"function"==typeof this.interceptor.request){let t=this.interceptor.request(e);if(!1===t)return new Promise((()=>{}));this.options=t}return e.dataType=e.dataType||this.config.dataType,e.responseType=e.responseType||this.config.responseType,e.url=e.url||"",e.params=e.params||{},e.header=Object.assign({},this.config.header,e.header),e.method=e.method||this.config.method,new Promise(((t,n)=>{e.complete=e=>{if(Mn.hideLoading(),clearTimeout(this.config.timer),this.config.timer=null,this.config.originalData)if(this.interceptor.response&&"function"==typeof this.interceptor.response){let o=this.interceptor.response(e);!1!==o?t(o):n(e)}else t(e);else if(200==e.statusCode)if(this.interceptor.response&&"function"==typeof this.interceptor.response){let o=this.interceptor.response(e.data);!1!==o?t(o):n(e.data)}else t(e.data);else n(e)},e.url=Ec.url(e.url)?e.url:this.config.baseUrl+(0==e.url.indexOf("/")?e.url:"/"+e.url),this.config.showLoading&&!this.config.timer&&(this.config.timer=setTimeout((()=>{Mn.showLoading({title:this.config.loadingText,mask:this.config.loadingMask}),this.config.timer=null}),this.config.loadingTime)),Mn.request(e)}))}constructor(){this.config={baseUrl:"",header:{},method:"POST",dataType:"json",responseType:"text",showLoading:!0,loadingText:"请求中...",loadingTime:800,timer:null,originalData:!1,loadingMask:!0},this.interceptor={request:null,response:null},this.get=(e,t={},n={})=>this.request({method:"GET",url:e,header:n,data:t}),this.post=(e,t={},n={})=>this.request({url:e,method:"POST",header:n,data:t}),this.put=(e,t={},n={})=>this.request({url:e,method:"PUT",header:n,data:t}),this.delete=(e,t={},n={})=>this.request({url:e,method:"DELETE",header:n,data:t})}};const Ic=(new class{constructor(){this.config={type:"navigateTo",url:"",delta:1,params:{},animationType:"pop-in",animationDuration:300,intercept:!1},this.route=this.route.bind(this)}addRootPath(e){return"/"===e[0]?e:`/${e}`}mixinParam(e,t){e=e&&this.addRootPath(e);let n="";return/.*\/.*\?.*=.*/.test(e)?(n=Mn.$u.queryParams(t,!1),e+"&"+n):(n=Mn.$u.queryParams(t),e+n)}async route(e={},t={}){let n={};if("string"==typeof e?(n.url=this.mixinParam(e,t),n.type="navigateTo"):(n=Mn.$u.deepMerge(this.config,e),n.url=this.mixinParam(e.url,e.params)),t.intercept&&(this.config.intercept=t.intercept),n.params=t,n=Mn.$u.deepMerge(this.config,n),"function"==typeof Mn.$u.routeIntercept){await new Promise(((e,t)=>{Mn.$u.routeIntercept(n,e)}))&&this.openPage(n)}else this.openPage(n)}openPage(e){const{url:t,type:n,delta:o,animationType:r,animationDuration:i}=e;"navigateTo"!=e.type&&"to"!=e.type||Mn.navigateTo({url:t,animationType:r,animationDuration:i}),"redirectTo"!=e.type&&"redirect"!=e.type||Mn.redirectTo({url:t}),"switchTab"!=e.type&&"tab"!=e.type||Mn.switchTab({url:t}),"reLaunch"!=e.type&&"launch"!=e.type||Mn.reLaunch({url:t}),"navigateBack"!=e.type&&"back"!=e.type||Mn.navigateBack({delta:o})}}).route;function Tc(e=null,t="yyyy-mm-dd"){e||(e=Number(new Date)),10==e.toString().length&&(e*=1e3);let n,o=new Date(e),r={"y+":o.getFullYear().toString(),"m+":(o.getMonth()+1).toString(),"d+":o.getDate().toString(),"h+":o.getHours().toString(),"M+":o.getMinutes().toString(),"s+":o.getSeconds().toString()};for(let i in r)n=new RegExp("("+i+")").exec(t),n&&(t=t.replace(n[1],1==n[1].length?r[i]:r[i].padStart(n[1].length,"0")));return t}function Mc(e,t=!0){if((e=e.toLowerCase())&&/^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/.test(e)){if(4===e.length){let t="#";for(let n=1;n<4;n+=1)t+=e.slice(n,n+1).concat(e.slice(n,n+1));e=t}let n=[];for(let t=1;t<7;t+=2)n.push(parseInt("0x"+e.slice(t,t+2)));return t?`rgb(${n[0]},${n[1]},${n[2]})`:n}if(/^(rgb|RGB)/.test(e)){return e.replace(/(?:\(|\)|rgb|RGB)*/g,"").split(",").map((e=>Number(e)))}return e}function Rc(e){let t=e;if(/^(rgb|RGB)/.test(t)){let e=t.replace(/(?:\(|\)|rgb|RGB)*/g,"").split(","),n="#";for(let t=0;t=e)return String(n);let o=e-n.length,r=Math.ceil(o/t.length);for(;r>>=1;)t+=t,1===r&&(t+=t);return t.slice(0,o)+n});const Dc={colorGradient:function(e="rgb(0, 0, 0)",t="rgb(255, 255, 255)",n=10){let o=Mc(e,!1),r=o[0],i=o[1],s=o[2],c=Mc(t,!1),a=(c[0]-r)/n,u=(c[1]-i)/n,l=(c[2]-s)/n,f=[];for(let p=0;p=0))if(t.constructor===Array)switch(n){case"indices":for(let n=0;n{r.push(i+"[]="+e)}));break;case"repeat":t.forEach((e=>{r.push(i+"="+e)}));break;case"comma":let e="";t.forEach((t=>{e+=(e?",":"")+t})),r.push(i+"="+e)}else r.push(i+"="+t)}return r.length?o+r.join("&"):""},route:Ic,timeFormat:Tc,date:Tc,timeFrom:function(e=null,t="yyyy-mm-dd"){e||(e=Number(new Date)),10==e.toString().length&&(e*=1e3);let n=+new Date(Number(e)),o=(Number(new Date)-n)/1e3,r="";switch(!0){case o<300:r="刚刚";break;case o>=300&&o<3600:r=parseInt(o/60)+"分钟前";break;case o>=3600&&o<86400:r=parseInt(o/3600)+"小时前";break;case o>=86400&&o<2592e3:r=parseInt(o/86400)+"天前";break;default:r=!1===t?o>=2592e3&&o<31536e3?parseInt(o/2592e3)+"个月前":parseInt(o/31536e3)+"年前":Tc(n,t)}return r},colorGradient:Dc.colorGradient,colorToRgba:Dc.colorToRgba,guid:function(e=32,t=!0,n=null){let o="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""),r=[];if(n=n||o.length,e)for(let i=0;iMath.random()-.5))},wranning:function(e){},get:Cc.get,post:Cc.post,put:Cc.put,delete:Cc.delete,hexToRgb:Dc.hexToRgb,rgbToHex:Dc.rgbToHex,test:Ec,random:function(e,t){if(e>=0&&t>0&&t>=e){let n=t-e+1;return Math.floor(Math.random()*n+e)}return 0},deepClone:Ac,deepMerge:Pc,getParent:function(e,t){let n=this.$parent;for(;n;){if(n.$options.name===e){let e={};if(Array.isArray(t))t.map((t=>{e[t]=n[t]?n[t]:""}));else for(let o in t)Array.isArray(t[o])?t[o].length?e[o]=t[o]:e[o]=n[o]:t[o].constructor===Object?Object.keys(t[o]).length?e[o]=t[o]:e[o]=n[o]:e[o]=t[o]||!1===t[o]?t[o]:n[o];return e}n=n.$parent}return{}},$parent:function(e=void 0){let t=this.$parent;for(;t;){if(!t.$options||t.$options.name===e)return t;t=t.$parent}return!1},addUnit:function(e="auto",t="rpx"){return e=String(e),Ec.number(e)?`${e}${t}`:e},trim:function(e,t="both"){return"both"==t?e.replace(/^\s+|\s+$/g,""):"left"==t?e.replace(/^\s*/,""):"right"==t?e.replace(/(\s*$)/g,""):"all"==t?e.replace(/\s+/g,""):e},type:["primary","success","error","warning","info"],http:Cc,toast:function(e,t=1500){Mn.showToast({title:e,icon:"none",duration:t})},config:Hc,zIndex:{toast:10090,noNetwork:10080,popup:10075,mask:10070,navbar:980,topTips:975,sticky:970,indexListSticky:965},debounce:function(e,t=500,n=!1){if(null!==Lc&&clearTimeout(Lc),n){var o=!Lc;Lc=setTimeout((function(){Lc=null}),t),o&&"function"==typeof e&&e()}else Lc=setTimeout((function(){"function"==typeof e&&e()}),t)},throttle:function(e,t=500,n=!0){n?Nc||(Nc=!0,"function"==typeof e&&e(),setTimeout((()=>{Nc=!1}),t)):Nc||(Nc=!0,setTimeout((()=>{Nc=!1,"function"==typeof e&&e()}),t))}};Mn.$u=Vc;const zc=e=>(t,n=Li())=>{!Wi&&Kr(e,t,n)},Uc=zc(J),Wc=zc(oe);function Zc(e){return/^[\+-]?(\d+\.?\d*|\.\d+|\d\.\d+e\+\d+)$/.test(e)}function Fc(e){switch(typeof e){case"undefined":return!0;case"string":if(0==e.replace(/(^[ \t\n\r]*)|([ \t\n\r]*$)/g,"").length)return!0;break;case"boolean":if(!e)return!0;break;case"number":if(0===e||isNaN(e))return!0;break;case"object":if(null===e||0===e.length)return!0;for(const t in e)return!1;return!0}return!1}function qc(e){return"function"==typeof Array.isArray?Array.isArray(e):"[object Array]"===Object.prototype.toString.call(e)}function Gc(e){return"[object Object]"===Object.prototype.toString.call(e)}function Kc(e){return"function"==typeof e}const Jc=Object.freeze(Object.defineProperty({__proto__:null,amount:function(e){return/^[1-9]\d*(,\d{3})*(\.\d{1,2})?$|^0\.\d{1,2}$/.test(e)},array:qc,carNo:function(e){const t=/^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}(([0-9]{5}[DF]$)|([DF][A-HJ-NP-Z0-9][0-9]{4}$))/,n=/^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}[A-HJ-NP-Z0-9]{4}[A-HJ-NP-Z0-9挂学警港澳]{1}$/;return 7===e.length?n.test(e):8===e.length&&t.test(e)},chinese:function(e){return/^[\u4e00-\u9fa5]+$/gi.test(e)},code:function(e,t=6){return new RegExp(`^\\d{${t}}$`).test(e)},contains:function(e,t){return e.indexOf(t)>=0},date:function(e){return!!e&&(Zc(e)&&(e=+e),!/Invalid|NaN/.test(new Date(e).toString()))},dateISO:function(e){return/^\d{4}[\/\-](0?[1-9]|1[012])[\/\-](0?[1-9]|[12][0-9]|3[01])$/.test(e)},digits:function(e){return/^\d+$/.test(e)},email:function(e){return/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/.test(e)},empty:Fc,enOrNum:function(e){return/^[0-9a-zA-Z]*$/g.test(e)},func:Kc,idCard:function(e){return/^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$/.test(e)},image:function(e){const t=e.split("?")[0];return/\.(jpeg|jpg|gif|png|svg|webp|jfif|bmp|dpg)/i.test(t)},jsonString:function(e){if("string"==typeof e)try{const t=JSON.parse(e);return!("object"!=typeof t||!t)}catch(t){return!1}return!1},landline:function(e){return/^\d{3,4}-\d{7,8}(-\d{3,4})?$/.test(e)},letter:function(e){return/^[a-zA-Z]*$/.test(e)},mobile:function(e){return/^1([3589]\d|4[5-9]|6[1-2,4-7]|7[0-8])\d{8}$/.test(e)},number:Zc,object:Gc,promise:function(e){return Gc(e)&&Kc(e.then)&&Kc(e.catch)},range:function(e,t){return e>=t[0]&&e<=t[1]},rangeLength:function(e,t){return e.length>=t[0]&&e.length<=t[1]},regExp:function(e){return e&&"[object RegExp]"===Object.prototype.toString.call(e)},string:function(e){return"string"==typeof e},url:function(e){return/^((https|http|ftp|rtsp|mms):\/\/)(([0-9a-zA-Z_!~*'().&=+$%-]+: )?[0-9a-zA-Z_!~*'().&=+$%-]+@)?(([0-9]{1,3}.){3}[0-9]{1,3}|([0-9a-zA-Z_!~*'()-]+.)*([0-9a-zA-Z][0-9a-zA-Z-]{0,61})?[0-9a-zA-Z].[a-zA-Z]{2,6})(:[0-9]{1,4})?((\/?)|(\/[0-9a-zA-Z_!~*'().;?:@&=+$,%#-]+)+\/?)$/.test(e)},video:function(e){return/\.(mp4|mpg|mpeg|dat|asf|avi|rm|rmvb|mov|wmv|flv|mkv|m3u8)/i.test(e)}},Symbol.toStringTag,{value:"Module"}));function Xc(e,t=15){return+parseFloat(Number(e).toPrecision(t))}function Qc(e){const t=e.toString().split(/[eE]/),n=(t[0].split(".")[1]||"").length-+(t[1]||0);return n>0?n:0}function Yc(e){if(-1===e.toString().indexOf("e"))return Number(e.toString().replace(".",""));const t=Qc(e);return t>0?Xc(Number(e)*Math.pow(10,t)):Number(e)}function ea(e){(e>Number.MAX_SAFE_INTEGER||e{i=t(i,e)})),i}function na(...e){if(e.length>2)return ta(e,na);const[t,n]=e,o=Yc(t),r=Yc(n),i=Qc(t)+Qc(n),s=o*r;return ea(s),s/Math.pow(10,i)}function oa(...e){if(e.length>2)return ta(e,oa);const[t,n]=e,o=Yc(t),r=Yc(n);return ea(o),ea(r),na(o/r,Xc(Math.pow(10,Qc(n)-Qc(t))))}function ra(e=void 0){let t=this.$parent;for(;t;){if(!t.$options||t.$options.name===e)return t;t=t.$parent}return!1}function ia(e,t=new WeakMap){if(null===e||"object"!=typeof e)return e;if(t.has(e))return t.get(e);let n;if(e instanceof Date)n=new Date(e.getTime());else if(e instanceof RegExp)n=new RegExp(e);else if(e instanceof Map)n=new Map(Array.from(e,(([e,n])=>[e,ia(n,t)])));else if(e instanceof Set)n=new Set(Array.from(e,(e=>ia(e,t))));else if(Array.isArray(e))n=e.map((e=>ia(e,t)));else if("[object Object]"===Object.prototype.toString.call(e)){n=Object.create(Object.getPrototypeOf(e)),t.set(e,n);for(const[o,r]of Object.entries(e))n[o]=ia(r,t)}else n=Object.assign({},e);return t.set(e,n),n}function sa(e={},t={}){if("object"!=typeof(e=ia(e))||null===e||"object"!=typeof t||null===t)return e;const n=Array.isArray(e)?e.slice():Object.assign({},e);for(const o in t){if(!t.hasOwnProperty(o))continue;const e=t[o],r=n[o];e instanceof Date?n[o]=new Date(e):e instanceof RegExp?n[o]=new RegExp(e):e instanceof Map?n[o]=new Map(e):e instanceof Set?n[o]=new Set(e):n[o]="object"==typeof e&&null!==e?sa(r,e):e}return n}function ca(e=null,t="yyyy-mm-dd"){let n;n=e?/^\d{10}$/.test(null==e?void 0:e.toString().trim())?new Date(1e3*e):"string"==typeof e&&/^\d+$/.test(e.trim())?new Date(Number(e)):"string"==typeof e&&e.includes("-")&&!e.includes("T")?new Date(e.replace(/-/g,"/")):new Date(e):new Date;const o={y:n.getFullYear().toString(),m:(n.getMonth()+1).toString().padStart(2,"0"),d:n.getDate().toString().padStart(2,"0"),h:n.getHours().toString().padStart(2,"0"),M:n.getMinutes().toString().padStart(2,"0"),s:n.getSeconds().toString().padStart(2,"0")};for(const r in o){const[e]=new RegExp(`${r}+`).exec(t)||[];if(e){const n="y"===r&&2===e.length?2:0;t=t.replace(e,o[r].slice(n))}}return t}function aa(e,t="both"){return e=String(e),"both"==t?e.replace(/^\s+|\s+$/g,""):"left"==t?e.replace(/^\s*/,""):"right"==t?e.replace(/(\s*$)/g,""):"all"==t?e.replace(/\s+/g,""):e}function ua(e={},t=!0,n="brackets"){const o=t?"?":"",r=[];-1==["indices","brackets","repeat","comma"].indexOf(n)&&(n="brackets");for(const i in e){const t=e[i];if(!(["",void 0,null].indexOf(t)>=0))if(t.constructor===Array)switch(n){case"indices":for(let n=0;n{r.push(`${i}[]=${e}`)}));break;case"repeat":t.forEach((e=>{r.push(`${i}=${e}`)}));break;case"comma":let e="";t.forEach((t=>{e+=(e?",":"")+t})),r.push(`${i}=${e}`)}else r.push(`${i}=${t}`)}return r.length?o+r.join("&"):""}function la(){var e;const t=getCurrentPages(),n=null==(e=t[t.length-1])?void 0:e.route;return`/${n||""}`}String.prototype.padStart||(String.prototype.padStart=function(e,t=" "){if("[object String]"!==Object.prototype.toString.call(t))throw new TypeError("fillString must be String");const n=this;if(n.length>=e)return String(n);const o=e-n.length;let r=Math.ceil(o/t.length);for(;r>>=1;)t+=t,1===r&&(t+=t);return t.slice(0,o)+n});const fa=Object.freeze(Object.defineProperty({__proto__:null,$parent:ra,addStyle:function(e,t="object"){if(Fc(e)||"object"==typeof e&&"object"===t||"string"===t&&"string"==typeof e)return e;if("object"===t){const t=(e=aa(e)).split(";"),n={};for(let e=0;e{return null==(e=null==(t=null==Mn?void 0:Mn.$uv)?void 0:t.config)?void 0:e.unit;var t})()?(e=>{return null==(e=null==(t=null==Mn?void 0:Mn.$uv)?void 0:t.config)?void 0:e.unit;var t})():"px")){return Zc(e=String(e))?`${e}${t}`:e},deepClone:ia,deepMerge:sa,error:function(e){},formValidate:function(e,t){const n=ra.call(e,"uv-form-item"),o=ra.call(e,"uv-form");n&&o&&o.validateField(n.prop,(()=>{}),t)},getDuration:function(e,t=!0){const n=parseInt(e);return t?/s$/.test(e)?e:e>30?`${e}ms`:`${e}s`:/ms$/.test(e)?n:/s$/.test(e)?n>30?n:1e3*n:n},getHistoryPage:function(e=0){const t=getCurrentPages();return t[t.length-1+e]},getProperty:function(e,t){if(e){if("string"!=typeof t||""===t)return"";if(-1!==t.indexOf(".")){const n=t.split(".");let o=e[n[0]]||{};for(let e=1;e=0&&t>0&&t>=e){const n=t-e+1;return Math.floor(Math.random()*n+e)}return 0},randomArray:function(e=[]){return e.sort((()=>Math.random()-.5))},range:function(e=0,t=0,n=0){return Math.max(e,Math.min(t,Number(n)))},setConfig:function({props:e={},config:t={},color:n={},zIndex:o={}}){const{deepMerge:r}=Mn.$uv;Mn.$uv.config=r(Mn.$uv.config,t),Mn.$uv.props=r(Mn.$uv.props,e),Mn.$uv.color=r(Mn.$uv.color,n),Mn.$uv.zIndex=r(Mn.$uv.zIndex,o)},setProperty:function(e,t,n){if(!e)return;const o=function(e,t,n){if(1!==t.length)for(;t.length>1;){const r=t[0];e[r]&&"object"==typeof e[r]||(e[r]={}),t.shift(),o(e[r],t,n)}else e[t[0]]=n};if("string"!=typeof t||""===t);else if(-1!==t.indexOf(".")){const r=t.split(".");o(e,r,n)}else e[t]=n},sleep:function(e=30){return new Promise((t=>{setTimeout((()=>{t()}),e)}))},sys:function(){return Mn.getSystemInfoSync()},timeFormat:ca,timeFrom:function(e=null,t="yyyy-mm-dd"){null==e&&(e=Number(new Date)),10==(e=parseInt(e)).toString().length&&(e*=1e3);let n=(new Date).getTime()-e;n=parseInt(n/1e3);let o="";switch(!0){case n<300:o="刚刚";break;case n>=300&&n<3600:o=`${parseInt(n/60)}分钟前`;break;case n>=3600&&n<86400:o=`${parseInt(n/3600)}小时前`;break;case n>=86400&&n<2592e3:o=`${parseInt(n/86400)}天前`;break;default:o=!1===t?n>=2592e3&&n<31536e3?`${parseInt(n/2592e3)}个月前`:`${parseInt(n/31536e3)}年前`:ca(e,t)}return o},toast:function(e,t=2e3){Mn.showToast({title:String(e),icon:"none",duration:t})},trim:aa,type2icon:function(e="success",t=!1){-1==["primary","info","error","warning","success"].indexOf(e)&&(e="success");let n="";switch(e){case"primary":case"info":n="info-circle";break;case"error":n="close-circle";break;case"warning":n="error-circle";break;default:n="checkmark-circle"}return t&&(n+="-fill"),n}},Symbol.toStringTag,{value:"Module"}));const pa=(new class{constructor(){this.config={type:"navigateTo",url:"",delta:1,params:{},animationType:"pop-in",animationDuration:300,intercept:!1,events:{}},this.route=this.route.bind(this)}addRootPath(e){return"/"===e[0]?e:`/${e}`}mixinParam(e,t){e=e&&this.addRootPath(e);let n="";return/.*\/.*\?.*=.*/.test(e)?(n=ua(t,!1),e+`&${n}`):(n=ua(t),e+n)}async route(e={},t={}){let n={};if("string"==typeof e?(n.url=this.mixinParam(e,t),n.type="navigateTo"):(n=sa(this.config,e),n.url=this.mixinParam(e.url,e.params)),n.url!==la())if(t.intercept&&(n.intercept=t.intercept),n.params=t,n=sa(this.config,n),"function"==typeof n.intercept){await new Promise(((e,t)=>{n.intercept(n,e)}))&&this.openPage(n)}else this.openPage(n)}openPage(e){const{url:t,type:n,delta:o,animationType:r,animationDuration:i,events:s}=e;"navigateTo"!=e.type&&"to"!=e.type||Mn.navigateTo({url:t,animationType:r,animationDuration:i,events:s}),"redirectTo"!=e.type&&"redirect"!=e.type||Mn.redirectTo({url:t}),"switchTab"!=e.type&&"tab"!=e.type||Mn.switchTab({url:t}),"reLaunch"!=e.type&&"launch"!=e.type||Mn.reLaunch({url:t}),"navigateBack"!=e.type&&"back"!=e.type||Mn.navigateBack({delta:o})}}).route;let da,ha=null;function ga(e,t=500,n=!1){if(null!==ha&&clearTimeout(ha),n){const n=!ha;ha=setTimeout((()=>{ha=null}),t),n&&"function"==typeof e&&e()}else ha=setTimeout((()=>{"function"==typeof e&&e()}),t)}function ma(e,t=500,n=!0){n?da||(da=!0,"function"==typeof e&&e(),setTimeout((()=>{da=!1}),t)):da||(da=!0,setTimeout((()=>{da=!1,"function"==typeof e&&e()}),t))}const va={props:{customStyle:{type:[Object,String],default:()=>({})},customClass:{type:String,default:""},url:{type:String,default:""},linkType:{type:String,default:"navigateTo"}},data:()=>({}),onLoad(){this.$uv.getRect=this.$uvGetRect},created(){this.$uv.getRect=this.$uvGetRect},computed:{$uv(){var e,t;return{...fa,test:Jc,route:pa,debounce:ga,throttle:ma,unit:null==(t=null==(e=null==Mn?void 0:Mn.$uv)?void 0:e.config)?void 0:t.unit}},bem:()=>function(e,t,n){const o=`uv-${e}--`,r={};return t&&t.map((e=>{r[o+this[e]]=!0})),n&&n.map((e=>{this[e]?r[o+e]=this[e]:delete r[o+e]})),Object.keys(r)}},methods:{openPage(e="url"){const t=this[e];t&&Mn[this.linkType]({url:t})},$uvGetRect(e,t){return new Promise((n=>{Mn.createSelectorQuery().in(this)[t?"selectAll":"select"](e).boundingClientRect((e=>{t&&Array.isArray(e)&&e.length&&n(e),!t&&e&&n(e)})).exec()}))},getParentData(e=""){this.parent||(this.parent={}),this.parent=this.$uv.$parent.call(this,e),this.parent.children&&-1===this.parent.children.indexOf(this)&&this.parent.children.push(this),this.parent&&this.parentData&&Object.keys(this.parentData).map((e=>{this.parentData[e]=this.parent[e]}))},preventEvent(e){e&&"function"==typeof e.stopPropagation&&e.stopPropagation()},noop(e){this.preventEvent(e)}},onReachBottom(){Mn.$emit("uvOnReachBottom")},beforeDestroy(){if(this.parent&&qc(this.parent.children)){const e=this.parent.children;e.map(((t,n)=>{t===this&&e.splice(n,1)}))}},unmounted(){if(this.parent&&qc(this.parent.children)){const e=this.parent.children;e.map(((t,n)=>{t===this&&e.splice(n,1)}))}}},ya={props:{text:{type:[Array,String],default:()=>[]},direction:{type:String,default:"row"},step:{type:Boolean,default:!1},icon:{type:[String,Boolean,null],default:"volume"},mode:{type:String,default:""},color:{type:String,default:"#f9ae3d"},bgColor:{type:String,default:"#fdf6ec"},speed:{type:[String,Number],default:80},fontSize:{type:[String,Number],default:14},duration:{type:[String,Number],default:2e3},url:{type:String,default:""},linkType:{type:String,default:"navigateTo"},disableTouch:{type:Boolean,default:!0},disableScroll:{type:Boolean,default:!1},...null==(t=null==(e=Mn.$uv)?void 0:e.props)?void 0:t.noticeBar}},ba={props:{name:{type:String,default:""},color:{type:String,default:"#606266"},size:{type:[String,Number],default:"16px"},bold:{type:Boolean,default:!1},index:{type:[String,Number],default:null},hoverClass:{type:String,default:""},customPrefix:{type:String,default:"uvicon"},label:{type:[String,Number],default:""},labelPos:{type:String,default:"right"},labelSize:{type:[String,Number],default:"15px"},labelColor:{type:String,default:"#606266"},space:{type:[String,Number],default:"3px"},imgMode:{type:String,default:"aspectFit"},width:{type:[String,Number],default:""},height:{type:[String,Number],default:""},top:{type:[String,Number],default:0},stop:{type:Boolean,default:!1},...null==(o=null==(n=Mn.$uv)?void 0:n.props)?void 0:o.icon}},_a={props:{text:{type:[Array],default:""},icon:{type:[String,Boolean,null],default:"volume"},mode:{type:String,default:""},color:{type:String,default:"#f9ae3d"},bgColor:{type:String,default:"#fdf6ec"},fontSize:{type:[String,Number],default:14},speed:{type:[String,Number],default:80},step:{type:Boolean,default:!1},duration:{type:[String,Number],default:1500},disableTouch:{type:Boolean,default:!0},disableScroll:{type:Boolean,default:!1},...null==(i=null==(r=Mn.$uv)?void 0:r.props)?void 0:i.columnNotice}},xa={props:{text:{type:String,default:""},icon:{type:[String,Boolean,null],default:"volume"},mode:{type:String,default:""},color:{type:String,default:"#f9ae3d"},bgColor:{type:String,default:"#fdf6ec"},fontSize:{type:[String,Number],default:14},speed:{type:[String,Number],default:80},...null==(c=null==(s=Mn.$uv)?void 0:s.props)?void 0:c.rowNotice}};exports._export_sfc=(e,t)=>{const n=e.__vccOpts||e;for(const[o,r]of t)n[o]=r;return n},exports.computed=Gi,exports.createSSRApp=Bs,exports.e=(e,...t)=>g(e,...t),exports.f=(e,t)=>function(e,t){let n;if(b(e)||$(e)){n=new Array(e.length);for(let o=0,r=e.length;ot(e,n,n)));else{const o=Object.keys(e);n=new Array(o.length);for(let r=0,i=o.length;rq(e),exports.nextTick$1=_r,exports.o=(e,t)=>Ns(e,t),exports.onLoad=Wc,exports.onMounted=Qr,exports.onShow=Uc,exports.onUnmounted=ni,exports.p=e=>function(e){const{uid:t,__counter:n}=Li();return t+","+((Is[t]||(Is[t]=[])).push(Ti(e))-1)+","+n}(e),exports.props=ya,exports.props$1=ba,exports.props$2=_a,exports.props$3=xa,exports.reactive=zo,exports.ref=nr,exports.resolveComponent=function(e,t){return function(e,t,n=!0,o=!1){const r=Cr||Ni;if(r){const n=r.type;if(e===Tr){const e=function(e,t=!0){return w(e)?e.displayName||e.name:e.name||t&&e.__name}(n,!1);if(e&&(e===t||e===M(t)||e===N(M(t))))return n}const i=Mr(r[e]||n[e],t)||Mr(r.appContext[e],t);return!i&&o?n:i}}(Tr,e,!0,t)||e},exports.s=e=>Ds(e),exports.sr=(e,t,n)=>function(e,t,n={}){const{$templateRefs:o}=Li();o.push({i:t,r:e,k:n.k,f:n.f})}(e,t,n),exports.t=e=>(e=>$(e)?e:null==e?"":b(e)||k(e)&&(e.toString===A||!w(e.toString))?JSON.stringify(e,G,2):String(e))(e),exports.watch=Dr,exports.wx$1=Tn; diff --git a/unpackage/dist/build/mp-weixin/components/MapComponent.js b/unpackage/dist/build/mp-weixin/components/MapComponent.js index 3b73b0b..c3a13e5 100644 --- a/unpackage/dist/build/mp-weixin/components/MapComponent.js +++ b/unpackage/dist/build/mp-weixin/components/MapComponent.js @@ -1 +1 @@ -"use strict";const e=require("../common/vendor.js"),t=require("../common/assets.js"),i={__name:"MapComponent",props:{userLocation:{type:Object,default:null},positionList:{type:Array,default:()=>[]},filteredPositions:{type:Array,default:()=>[]},searchKeyword:{type:String,default:""}},emits:["relocate","scan","showList","markerTap","mapCenterChange"],setup(i,{expose:o,emit:a}){const n=i,l=a,u=e.ref(0),d=e.ref(16),r=e.ref({longitude:116.397128,latitude:39.916527}),s=e.ref(null),c=e.ref(!1),p=()=>{l("relocate")},f=()=>{l("scan")},m=()=>{l("showList")},g=t=>{if(!t.detail||void 0===t.detail.markerId)return;const i=t.detail.markerId;if(9999===i)return void e.index.showToast({title:"这是您的位置",icon:"none"});const o=n.filteredPositions[i];o&&l("markerTap",o)},v=e=>{if("end"===e.detail.type){const{center:t}=e.detail;if(!t||void 0===t.longitude||void 0===t.latitude)return;r.value={longitude:t.longitude,latitude:t.latitude},d.value=16,s.value&&clearTimeout(s.value),s.value=setTimeout((()=>{l("mapCenterChange",r.value)}),500)}},h=e.computed((()=>{const e=[];return n.filteredPositions.forEach(((t,i)=>{t.longitude&&t.latitude&&e.push({id:i,longitude:parseFloat(t.longitude),latitude:parseFloat(t.latitude),title:t.name,iconPath:"/static/scan-icon.png",width:30,height:30,callout:{content:t.name,fontSize:14,borderRadius:8,bgColor:"#ffffff",padding:10,display:"BYCLICK"}})})),n.userLocation&&e.push({id:9999,longitude:n.userLocation.longitude,latitude:n.userLocation.latitude,title:"我的位置",iconPath:"/static/scan-icon.png",width:32,height:32,callout:{content:"我的位置",fontSize:14,borderRadius:8,bgColor:"#2196F3",color:"#ffffff",padding:10,display:"BYCLICK"}}),e}));return e.watch((()=>n.userLocation),(t=>{var i,o;t&&t.longitude&&t.latitude&&!c.value&&(i=t.longitude,o=t.latitude,r.value.longitude===i&&r.value.latitude===o||(r.value={longitude:i,latitude:o},d.value=16,e.nextTick$1((()=>{setTimeout((()=>{const t=e.index.createMapContext("mainMap");t&&t.setCenterOffset({longitude:i,latitude:o,success:()=>{},fail:()=>{t.includePoints({points:[{longitude:i,latitude:o}],padding:[0,0,0,0]})}})}),200)}))),c.value=!0)}),{immediate:!0,deep:!0}),e.onMounted((()=>{})),e.onUnmounted((()=>{s.value&&clearTimeout(s.value)})),o({mapCenter:e.computed((()=>r.value))}),(i,o)=>e.e({a:u.value,b:r.value.longitude,c:r.value.latitude,d:d.value,e:h.value,f:e.o(g),g:e.o(v),h:!r.value.longitude},(r.value.longitude,{}),{i:t._imports_0,j:e.o(p),k:t._imports_0,l:e.o(f),m:t._imports_0,n:e.o(m)})}},o=e._export_sfc(i,[["__scopeId","data-v-65e2cece"]]);wx.createComponent(o); +"use strict";const e=require("../common/vendor.js"),t=require("../common/assets.js");if(!Array){e.resolveComponent("uv-icon")()}Math;const o={__name:"MapComponent",props:{userLocation:{type:Object,default:null},positionList:{type:Array,default:()=>[]},filteredPositions:{type:Array,default:()=>[]},searchKeyword:{type:String,default:""}},emits:["relocate","scan","showList","markerTap","mapCenterChange"],setup(o,{expose:i,emit:a}){const l=e.ref(null);e.ref([{title:"扫码使用",desc:"找到附近设备,扫描设备上的二维码"},{title:"免押金支付",desc:"无需支付押金,使用支付分免押即可完成租借"},{title:"开始使用",desc:"设备自动解锁,风扇弹出后取出即可开始使用"},{title:"归还设备",desc:"使用完毕后,按照设备规格要求将风扇还入即可结束订单"}]);const n=o,u=a,d=e.ref(!0),r=e.ref({longitude:116.397128,latitude:39.916527}),s=e.ref(17),c=e.ref([]),p=e.ref(null),f=()=>{c.value=[],n.userLocation&&c.value.push({id:0,width:32,height:32,latitude:n.userLocation.latitude,longitude:n.userLocation.longitude,title:"我的位置",callout:{content:"我的位置",color:"#ffffff",fontSize:12,borderRadius:4,bgColor:"#2196F3",padding:6,display:"BYCLICK"},customCallout:{anchorX:0,anchorY:0}}),n.filteredPositions&&n.filteredPositions.length>0&&n.filteredPositions.forEach(((e,t)=>{if(e.longitude&&e.latitude){const o=parseFloat(e.latitude),i=parseFloat(e.longitude);o>=-90&&o<=90&&i>=-180&&i<=180?c.value.push({id:t+1,width:30,height:30,latitude:o,longitude:i,title:e.name,position:e,callout:{content:e.name,color:"#333333",fontSize:12,borderRadius:4,bgColor:"#ffffff",padding:6,display:"BYCLICK"}}):console.warn(`忽略无效坐标: ${e.name}, 纬度=${o}, 经度=${i}`)}})),d.value=!1},v=e=>{e&&e.longitude&&e.latitude&&p.value&&p.value.moveToLocation({longitude:e.longitude,latitude:e.latitude,success:()=>{console.log("地图已移动到指定位置")},fail:e=>{console.error("移动地图失败:",e)}})};e.watch((()=>n.userLocation),(e=>{e&&e.longitude&&e.latitude&&(r.value={longitude:e.longitude,latitude:e.latitude},f(),v(e))}),{immediate:!0,deep:!0}),e.watch((()=>n.filteredPositions),(e=>{f()}),{deep:!0});const m=()=>{d.value=!1},g=e=>{"end"===e.type&&"drag"===e.causedBy&&p.value&&p.value.getCenterLocation({success:e=>{e.longitude&&e.latitude&&(r.value={longitude:e.longitude,latitude:e.latitude},u("mapCenterChange",r.value))}})},h=t=>{const o=t.markerId,i=c.value.find((e=>e.id===o));if(i){if(0===o)return void e.index.showToast({title:"这是您的位置",icon:"none"});i.position&&u("markerTap",i.position)}},C=e=>{const t=e.markerId,o=c.value.find((e=>e.id===t));o&&o.position&&u("markerTap",o.position)},L=e=>{console.error("地图加载失败:",e),d.value=!1},y=()=>{u("relocate")},w=()=>{u("scan")},_=()=>{u("showList")};return e.onMounted((()=>{e.nextTick$1((()=>{p.value=e.index.createMapContext("map"),f(),l.value&&l.value.init()}))})),e.onUnmounted((()=>{p.value=null})),i({mapCenter:e.computed((()=>r.value)),moveToLocation:v,updateMapMarkers:f,initCollapse:()=>{l.value&&l.value.init()}}),(o,i)=>e.e({a:r.value.longitude,b:r.value.latitude,c:c.value,d:s.value,e:e.o(g),f:e.o(h),g:e.o(C),h:e.o(m),i:e.o(L),j:d.value},(d.value,{}),{k:e.p({name:"map-fill",size:"18"}),l:e.o(y),m:t._imports_0,n:e.o(w),o:t._imports_1$1,p:e.o(_)})}},i=e._export_sfc(o,[["__scopeId","data-v-bb5e40bd"]]);wx.createComponent(i); diff --git a/unpackage/dist/build/mp-weixin/components/MapComponent.json b/unpackage/dist/build/mp-weixin/components/MapComponent.json index e8cfaaf..1672a04 100644 --- a/unpackage/dist/build/mp-weixin/components/MapComponent.json +++ b/unpackage/dist/build/mp-weixin/components/MapComponent.json @@ -1,4 +1,6 @@ { "component": true, - "usingComponents": {} + "usingComponents": { + "uv-icon": "../node-modules/@climblee/uv-ui/components/uv-icon/uv-icon" + } } \ No newline at end of file diff --git a/unpackage/dist/build/mp-weixin/components/MapComponent.wxml b/unpackage/dist/build/mp-weixin/components/MapComponent.wxml index 41cd47b..54eb0b4 100644 --- a/unpackage/dist/build/mp-weixin/components/MapComponent.wxml +++ b/unpackage/dist/build/mp-weixin/components/MapComponent.wxml @@ -1 +1 @@ -地图加载中...我的位置扫码使用附近场地 \ No newline at end of file +地图加载中...我的位置扫码使用附近设备 \ No newline at end of file diff --git a/unpackage/dist/build/mp-weixin/components/MapComponent.wxss b/unpackage/dist/build/mp-weixin/components/MapComponent.wxss index d8ee23a..3fbcf1c 100644 --- a/unpackage/dist/build/mp-weixin/components/MapComponent.wxss +++ b/unpackage/dist/build/mp-weixin/components/MapComponent.wxss @@ -1 +1 @@ -.map-container.data-v-65e2cece{flex:1;position:relative;height:100vh;width:100%}.map-container .map.data-v-65e2cece{width:100%;height:100%}.map-container .map-loading.data-v-65e2cece{position:absolute;top:0;left:0;width:100%;height:100%;background-color:rgba(255,255,255,.8);display:flex;justify-content:center;align-items:center;z-index:10}.map-container .map-loading .loading-content.data-v-65e2cece{display:flex;flex-direction:column;align-items:center;justify-content:center}.map-container .map-loading .loading-content .loading-spinner.data-v-65e2cece{width:60rpx;height:60rpx;border:8rpx solid #f3f3f3;border-top:8rpx solid #3498db;border-radius:50%;animation:spin-65e2cece 1s linear infinite;margin-bottom:20rpx}.map-container .map-loading .loading-content text.data-v-65e2cece{font-size:32rpx;color:#333;font-weight:500}.map-container .map-controls.data-v-65e2cece{position:absolute;right:30rpx;bottom:20rpx;left:30rpx;display:flex;justify-content:center;align-items:center;gap:30rpx}.map-container .map-controls .control-btn.data-v-65e2cece{min-width:140rpx;height:80rpx;background:#fff;border-radius:40rpx;display:flex;flex-direction:row;align-items:center;justify-content:center;box-shadow:0 4rpx 12rpx rgba(0,0,0,.1);transition:all .2s ease;padding:0 20rpx}.map-container .map-controls .control-btn.data-v-65e2cece:active{transform:scale(.95)}.map-container .map-controls .control-btn .control-icon.data-v-65e2cece{width:32rpx;height:32rpx;margin-right:12rpx}.map-container .map-controls .control-btn text.data-v-65e2cece{font-size:26rpx;color:#333;white-space:nowrap;font-weight:500}.map-container .map-controls .control-btn.main-btn.data-v-65e2cece{min-width:160rpx;height:90rpx;box-shadow:0 6rpx 20rpx rgba(33,150,243,.4);transform:translateY(-5rpx)}.map-container .map-controls .control-btn.main-btn .control-icon.data-v-65e2cece{width:36rpx;height:36rpx;margin-right:16rpx}.map-container .map-controls .control-btn.main-btn text.data-v-65e2cece{font-size:28rpx;font-weight:600}.map-container .map-controls .control-btn.main-btn.data-v-65e2cece:active{transform:translateY(-5rpx) scale(.95)}.map-container .map-controls .scan-control.data-v-65e2cece{background:#2196f3}.map-container .map-controls .scan-control .control-icon.data-v-65e2cece{filter:brightness(0) invert(1)}.map-container .map-controls .scan-control text.data-v-65e2cece{color:#fff}.map-container .map-controls .list-control.data-v-65e2cece{background:#4caf50}.map-container .map-controls .list-control .control-icon.data-v-65e2cece{filter:brightness(0) invert(1)}.map-container .map-controls .list-control text.data-v-65e2cece{color:#fff}.map-container .map-controls .location-control.data-v-65e2cece{background:#fff;border:2rpx solid #e0e0e0}.map-container .map-controls .location-control .control-icon.data-v-65e2cece{filter:none}.map-container .map-controls .location-control text.data-v-65e2cece{color:#333}@keyframes spin-65e2cece{0%{transform:rotate(0)}to{transform:rotate(360deg)}} +.map-container.data-v-bb5e40bd{flex:1;position:relative;height:60vh;width:92%;margin:10rpx auto 30rpx;border-radius:24rpx;overflow:hidden;box-shadow:0 4rpx 16rpx rgba(0,0,0,.1)}.map-container .map-wrapper.data-v-bb5e40bd{width:100%;height:100%;position:relative;overflow:hidden;border-radius:24rpx}.map-container .map-wrapper .native-map.data-v-bb5e40bd{width:100%;height:100%;display:block;border-radius:24rpx}.map-container .map-loading.data-v-bb5e40bd{position:absolute;top:0;left:0;width:100%;height:100%;background-color:rgba(255,255,255,.8);display:flex;justify-content:center;align-items:center;z-index:10}.map-container .map-loading .loading-content.data-v-bb5e40bd{display:flex;flex-direction:column;align-items:center;justify-content:center}.map-container .map-loading .loading-content .loading-spinner.data-v-bb5e40bd{width:60rpx;height:60rpx;border:8rpx solid #f3f3f3;border-top:8rpx solid #3498db;border-radius:50%;animation:spin-bb5e40bd 1s linear infinite;margin-bottom:20rpx}.map-container .map-loading .loading-content text.data-v-bb5e40bd{font-size:32rpx;color:#333;font-weight:500}.map-container .map-controls.data-v-bb5e40bd{position:absolute;right:20rpx;bottom:20rpx;left:20rpx;display:flex;justify-content:center;align-items:center;gap:20rpx}.map-container .map-controls .control-btn.data-v-bb5e40bd{min-width:120rpx;height:70rpx;background:#fff;border-radius:35rpx;display:flex;flex-direction:row;align-items:center;justify-content:center;box-shadow:0 4rpx 12rpx rgba(0,0,0,.1);transition:all .2s ease;padding:0 16rpx}.map-container .map-controls .control-btn.data-v-bb5e40bd:active{transform:scale(.95)}.map-container .map-controls .control-btn .control-icon.data-v-bb5e40bd{width:32rpx;height:32rpx;margin-right:12rpx}.map-container .map-controls .control-btn text.data-v-bb5e40bd{font-size:26rpx;color:#333;white-space:nowrap;font-weight:500}.map-container .map-controls .control-btn.main-btn.data-v-bb5e40bd{min-width:140rpx;height:80rpx;box-shadow:0 6rpx 20rpx rgba(33,150,243,.4);transform:translateY(-5rpx)}.map-container .map-controls .control-btn.main-btn .control-icon.data-v-bb5e40bd{width:36rpx;height:36rpx;margin-right:16rpx}.map-container .map-controls .control-btn.main-btn text.data-v-bb5e40bd{font-size:28rpx;font-weight:600}.map-container .map-controls .control-btn.main-btn.data-v-bb5e40bd:active{transform:translateY(-5rpx) scale(.95)}.map-container .map-controls .scan-control.data-v-bb5e40bd{background:#2196f3}.map-container .map-controls .scan-control .control-icon.data-v-bb5e40bd{filter:brightness(0) invert(1)}.map-container .map-controls .scan-control text.data-v-bb5e40bd{color:#fff}.map-container .map-controls .list-control.data-v-bb5e40bd{background:#4caf50}.map-container .map-controls .list-control .control-icon.data-v-bb5e40bd{filter:brightness(0) invert(1)}.map-container .map-controls .list-control text.data-v-bb5e40bd{color:#fff}.map-container .map-controls .location-control.data-v-bb5e40bd{background:#fff;border:2rpx solid #e0e0e0}.map-container .map-controls .location-control .control-icon.data-v-bb5e40bd{filter:none}.map-container .map-controls .location-control text.data-v-bb5e40bd{color:#333}@keyframes spin-bb5e40bd{0%{transform:rotate(0)}to{transform:rotate(360deg)}} diff --git a/unpackage/dist/build/mp-weixin/config/url.js b/unpackage/dist/build/mp-weixin/config/url.js index 47647ca..e9d06a3 100644 --- a/unpackage/dist/build/mp-weixin/config/url.js +++ b/unpackage/dist/build/mp-weixin/config/url.js @@ -1 +1 @@ -"use strict";exports.URL="https://my.gxfs123.com/api",exports.appid="wx2165f0be356ae7a9"; +"use strict";exports.URL="https://fansdev.gxfs123.com/api",exports.appid="wx2165f0be356ae7a9"; diff --git a/unpackage/dist/build/mp-weixin/node-modules/@climblee/uv-ui/components/uv-column-notice/uv-column-notice.js b/unpackage/dist/build/mp-weixin/node-modules/@climblee/uv-ui/components/uv-column-notice/uv-column-notice.js new file mode 100644 index 0000000..4d92ef3 --- /dev/null +++ b/unpackage/dist/build/mp-weixin/node-modules/@climblee/uv-ui/components/uv-column-notice/uv-column-notice.js @@ -0,0 +1 @@ +"use strict";const e=require("../../../../../common/vendor.js"),o={emits:["click","close","change"],mixins:[e.mpMixin,e.mixin,e.props$2],watch:{text:{immediate:!0,handler(e,o){this.$uv.test.array(e)||this.$uv.error("noticebar组件direction为column时,要求text参数为数组形式")}}},computed:{textStyle(){let e={};return e.color=this.color,e.fontSize=this.$uv.addUnit(this.fontSize),e},vertical(){return"horizontal"!=this.mode},swiperStyle:()=>({})},data:()=>({index:0}),methods:{noticeChange(e){this.index=e.detail.current,this.$emit("change",this.index)},clickHandler(){this.$emit("click",this.index)},close(){this.$emit("close")}}};if(!Array){e.resolveComponent("uv-icon")()}Math;const i=e._export_sfc(o,[["render",function(o,i,t,c,n,l){return e.e({a:o.icon},o.icon?{b:e.p({name:o.icon,color:o.color,size:"19"})}:{},{c:e.f(o.text,((o,i,t)=>({a:e.t(o),b:i}))),d:e.s(l.textStyle),e:o.disableTouch,f:!o.step,g:o.duration,h:!o.disableScroll,i:e.s(l.swiperStyle),j:e.o(((...e)=>l.noticeChange&&l.noticeChange(...e))),k:["link","closable"].includes(o.mode)},["link","closable"].includes(o.mode)?e.e({l:"link"===o.mode},"link"===o.mode?{m:e.p({name:"arrow-right",size:17,color:o.color})}:{},{n:"closable"===o.mode},"closable"===o.mode?{o:e.o(l.close),p:e.p({name:"close",size:16,color:o.color})}:{}):{},{q:e.o(((...e)=>l.clickHandler&&l.clickHandler(...e)))})}],["__scopeId","data-v-1e0ed8e8"]]);wx.createComponent(i); diff --git a/unpackage/dist/build/mp-weixin/node-modules/@climblee/uv-ui/components/uv-column-notice/uv-column-notice.json b/unpackage/dist/build/mp-weixin/node-modules/@climblee/uv-ui/components/uv-column-notice/uv-column-notice.json new file mode 100644 index 0000000..700e739 --- /dev/null +++ b/unpackage/dist/build/mp-weixin/node-modules/@climblee/uv-ui/components/uv-column-notice/uv-column-notice.json @@ -0,0 +1,6 @@ +{ + "component": true, + "usingComponents": { + "uv-icon": "../uv-icon/uv-icon" + } +} \ No newline at end of file diff --git a/unpackage/dist/build/mp-weixin/node-modules/@climblee/uv-ui/components/uv-column-notice/uv-column-notice.wxml b/unpackage/dist/build/mp-weixin/node-modules/@climblee/uv-ui/components/uv-column-notice/uv-column-notice.wxml new file mode 100644 index 0000000..be4d72e --- /dev/null +++ b/unpackage/dist/build/mp-weixin/node-modules/@climblee/uv-ui/components/uv-column-notice/uv-column-notice.wxml @@ -0,0 +1 @@ +{{item.a}} \ No newline at end of file diff --git a/unpackage/dist/build/mp-weixin/node-modules/@climblee/uv-ui/components/uv-column-notice/uv-column-notice.wxss b/unpackage/dist/build/mp-weixin/node-modules/@climblee/uv-ui/components/uv-column-notice/uv-column-notice.wxss new file mode 100644 index 0000000..f9288d7 --- /dev/null +++ b/unpackage/dist/build/mp-weixin/node-modules/@climblee/uv-ui/components/uv-column-notice/uv-column-notice.wxss @@ -0,0 +1 @@ +.uv-line-1.data-v-1e0ed8e8{display:-webkit-box!important;overflow:hidden;text-overflow:ellipsis;word-break:break-all;-webkit-line-clamp:1;-webkit-box-orient:vertical!important}.uv-line-2.data-v-1e0ed8e8{display:-webkit-box!important;overflow:hidden;text-overflow:ellipsis;word-break:break-all;-webkit-line-clamp:2;-webkit-box-orient:vertical!important}.uv-line-3.data-v-1e0ed8e8{display:-webkit-box!important;overflow:hidden;text-overflow:ellipsis;word-break:break-all;-webkit-line-clamp:3;-webkit-box-orient:vertical!important}.uv-line-4.data-v-1e0ed8e8{display:-webkit-box!important;overflow:hidden;text-overflow:ellipsis;word-break:break-all;-webkit-line-clamp:4;-webkit-box-orient:vertical!important}.uv-line-5.data-v-1e0ed8e8{display:-webkit-box!important;overflow:hidden;text-overflow:ellipsis;word-break:break-all;-webkit-line-clamp:5;-webkit-box-orient:vertical!important}view.data-v-1e0ed8e8,scroll-view.data-v-1e0ed8e8,swiper-item.data-v-1e0ed8e8{display:flex;flex-direction:column;flex-shrink:0;flex-grow:0;flex-basis:auto;align-items:stretch;align-content:flex-start}.uv-notice.data-v-1e0ed8e8{display:flex;flex-direction:row;align-items:center;justify-content:space-between}.uv-notice__left-icon.data-v-1e0ed8e8{align-items:center;margin-right:5px}.uv-notice__right-icon.data-v-1e0ed8e8{margin-left:5px;align-items:center}.uv-notice__swiper.data-v-1e0ed8e8{height:16px;display:flex;flex-direction:row;align-items:center;flex:1}.uv-notice__swiper__item.data-v-1e0ed8e8{display:flex;flex-direction:row;align-items:center;overflow:hidden}.uv-notice__swiper__item__text.data-v-1e0ed8e8{font-size:14px;color:#f9ae3d} diff --git a/unpackage/dist/build/mp-weixin/node-modules/@climblee/uv-ui/components/uv-icon/uv-icon.js b/unpackage/dist/build/mp-weixin/node-modules/@climblee/uv-ui/components/uv-icon/uv-icon.js new file mode 100644 index 0000000..0e06f4e --- /dev/null +++ b/unpackage/dist/build/mp-weixin/node-modules/@climblee/uv-ui/components/uv-icon/uv-icon.js @@ -0,0 +1 @@ +"use strict";const i=require("../../../../../common/vendor.js"),t={name:"uv-icon",emits:["click"],mixins:[i.mpMixin,i.mixin,i.props$1],data:()=>({colorType:["primary","success","info","error","warning"]}),computed:{uClasses(){let i=[];return i.push(this.customPrefix),i.push(this.customPrefix+"-"+this.name),this.color&&this.colorType.includes(this.color)&&i.push("uv-icon__icon--"+this.color),i},iconStyle(){let i={};return i={fontSize:this.$uv.addUnit(this.size),lineHeight:this.$uv.addUnit(this.size),fontWeight:this.bold?"bold":"normal",top:this.$uv.addUnit(this.top)},this.color&&!this.colorType.includes(this.color)&&(i.color=this.color),i},isImg(){const i=this.name.indexOf("data:")>-1&&this.name.indexOf("base64")>-1;return-1!==this.name.indexOf("/")||i},imgStyle(){let i={};return i.width=this.width?this.$uv.addUnit(this.width):this.$uv.addUnit(this.size),i.height=this.height?this.$uv.addUnit(this.height):this.$uv.addUnit(this.size),i},icon(){const t=i.icons["uvicon-"+this.name];return t?unescape(`%u${t}`):["uvicon"].indexOf(this.customPrefix)>-1?this.name:""}},methods:{clickHandler(i){this.$emit("click",this.index),this.stop&&this.preventEvent(i)}}};const e=i._export_sfc(t,[["render",function(t,e,s,o,n,l){return i.e({a:l.isImg},l.isImg?{b:t.name,c:t.imgMode,d:i.s(l.imgStyle),e:i.s(t.$uv.addStyle(t.customStyle))}:{f:i.t(l.icon),g:i.n(l.uClasses),h:i.s(l.iconStyle),i:i.s(t.$uv.addStyle(t.customStyle)),j:t.hoverClass},{k:""!==t.label},""!==t.label?{l:i.t(t.label),m:t.labelColor,n:t.$uv.addUnit(t.labelSize),o:"right"==t.labelPos?t.$uv.addUnit(t.space):0,p:"bottom"==t.labelPos?t.$uv.addUnit(t.space):0,q:"left"==t.labelPos?t.$uv.addUnit(t.space):0,r:"top"==t.labelPos?t.$uv.addUnit(t.space):0}:{},{s:i.o(((...i)=>l.clickHandler&&l.clickHandler(...i))),t:i.n("uv-icon--"+t.labelPos)})}],["__scopeId","data-v-553bbf60"]]);wx.createComponent(e); diff --git a/unpackage/dist/build/mp-weixin/node-modules/@climblee/uv-ui/components/uv-icon/uv-icon.json b/unpackage/dist/build/mp-weixin/node-modules/@climblee/uv-ui/components/uv-icon/uv-icon.json new file mode 100644 index 0000000..e8cfaaf --- /dev/null +++ b/unpackage/dist/build/mp-weixin/node-modules/@climblee/uv-ui/components/uv-icon/uv-icon.json @@ -0,0 +1,4 @@ +{ + "component": true, + "usingComponents": {} +} \ No newline at end of file diff --git a/unpackage/dist/build/mp-weixin/node-modules/@climblee/uv-ui/components/uv-icon/uv-icon.wxml b/unpackage/dist/build/mp-weixin/node-modules/@climblee/uv-ui/components/uv-icon/uv-icon.wxml new file mode 100644 index 0000000..e360fd9 --- /dev/null +++ b/unpackage/dist/build/mp-weixin/node-modules/@climblee/uv-ui/components/uv-icon/uv-icon.wxml @@ -0,0 +1 @@ +{{f}}{{l}} \ No newline at end of file diff --git a/unpackage/dist/build/mp-weixin/node-modules/@climblee/uv-ui/components/uv-icon/uv-icon.wxss b/unpackage/dist/build/mp-weixin/node-modules/@climblee/uv-ui/components/uv-icon/uv-icon.wxss new file mode 100644 index 0000000..122bc32 --- /dev/null +++ b/unpackage/dist/build/mp-weixin/node-modules/@climblee/uv-ui/components/uv-icon/uv-icon.wxss @@ -0,0 +1 @@ +view.data-v-553bbf60,scroll-view.data-v-553bbf60,swiper-item.data-v-553bbf60{display:flex;flex-direction:column;flex-shrink:0;flex-grow:0;flex-basis:auto;align-items:stretch;align-content:flex-start}@font-face{font-family:uvicon-iconfont;src:url(data:font/ttf;base64,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AF8AAOZDAADmQwAAAGAAAOZEAADmRAAAAGEAAOZGAADmRgAAAGIAAOZHAADmRwAAAGMAAOZIAADmSAAAAGQAAOZKAADmSgAAAGUAAOZLAADmSwAAAGYAAOZMAADmTAAAAGcAAOZNAADmTQAAAGgAAOZOAADmTgAAAGkAAOZPAADmTwAAAGoAAOZQAADmUAAAAGsAAOZRAADmUQAAAGwAAOZTAADmUwAAAG0AAOZVAADmVQAAAG4AAOZWAADmVgAAAG8AAOZXAADmVwAAAHAAAOZZAADmWQAAAHEAAOZaAADmWgAAAHIAAOZcAADmXAAAAHMAAOZdAADmXQAAAHQAAOZfAADmXwAAAHUAAOZgAADmYAAAAHYAAOZiAADmYgAAAHcAAOZkAADmZAAAAHgAAOZlAADmZQAAAHkAAOZmAADmZgAAAHoAAOZoAADmaAAAAHsAAOZrAADmawAAAHwAAOZsAADmbAAAAH0AAOZtAADmbQAAAH4AAOZuAADmbgAAAH8AAOZvAADmbwAAAIAAAOZwAADmcAAAAIEAAOZxAADmcQAAAIIAAOZyAADmcgAAAIMAAOZzAADmcwAAAIQAAOZ1AADmdQAAAIUAAOZ3AADmdwAAAIYAAOZ5AADmeQAAAIcAAOZ7AADmewAAAIgAAOZ8AADmfAAAAIkAAOZ9AADmfQAAAIoAAOZ+AADmfgAAAIsAAOZ/AADmfwAAAIwAAOaAAADmgAAAAI0AAOaDAADmgwAAAI4AAOaEAADmhAAAAI8AAOaFAADmhQAAAJAAAOaHAADmhwAAAJEAAOaIAADmiAAAAJIAAOaKAADmigAAAJMAAOaLAADmiwAAAJQAAOaMAADmjAAAAJUAAOaNAADmjQAAAJYAAOaOAADmjgAAAJcAAOaPAADmjwAAAJgAAOaQAADmkAAAAJkAAOaRAADmkQAAAJoAAOaTAADmkwAAACAAAOaUAADmlAAAACEAAOaVAADmlQAAACIAAOaWAADmlgAAACMAAOaXAADmlwAAACQAAOaYAADmmAAAACUAAOabAADmmwAAACYAAOacAADmnAAAACcAAOadAADmnQAAACgAAOaeAADmngAAACkAAOafAADmnwAAACoAAOagAADmoAAAACsAAOahAADmoQAAACwAAOaiAADmogAAAC0AAOalAADmpQAAAC4AAOamAADmpgAA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AWMBZAFlAWYBZwFoAWkBagFrAWwBbQFuAW8BcAFxAXIBcwF0AXUBdgF3AXgBeQF6AXsBfAF9AX4BfwGAAYEBggGDAYQBhQGGAYcBiAGJAYoBiwGMAY0BjgGPAZABkQGSAZMBlAGVAZYBlwGYAZkBmgGbAZwBnQGeAARzdGFyBXBhdXNlCXN0YXItZmlsbBJza2lwLWZvcndhcmQtcmlnaHQLd2VpeGluLWZpbGwEdGFncw9xdWVzdGlvbi1jaXJjbGUFdHJhc2gLdm9sdW1lLWZpbGwEcGx1cwV3b21hbgZyZWxvYWQPdGh1bWItZG93bi1maWxsBXNoYXJlC3NlcnZlci1maWxsEHBsdXMtY2lyY2xlLWZpbGwIdGh1bWItdXAJdGFncy1maWxsBW1pbnVzFHpoaWZ1YmFvLWNpcmNsZS1maWxsB3NldHRpbmcLcGx1cy1jaXJjbGUJYmVsbC1maWxsCXZvbHVtZS11cAZ0d2l0dGUHcXEtZmlsbAp0aHVtYi1kb3duEXBhdXNlLWNpcmNsZS1maWxsBXBob3RvCmVtcHR5LXBhZ2UKc2VydmVyLW1hbghpbnRlZ3JhbAZmb2xkZXIFb3JkZXIMcGF1c2UtY2lyY2xlCGV5ZS1maWxsCWdyaWQtZmlsbAxlbXB0eS1jb3Vwb24HZXllLW9mZgRsb2NrC21vcmUtY2lyY2xlC2luZm8tY2lyY2xlB21vbWVudHMQbG9jay1vcGVuZWQtZmlsbAVoZWFydAxtaW51cy1jaXJjbGUJbG9jay1maWxsEGluZm8tY2lyY2xlLWZpbGwIbWFwLWZpbGwIbGlzdC1kb3QKcGhvbmUtZmlsbA9wbGF5LXJpZ2h0LWZpbGwOcGxheS1sZWZ0LWZpbGwLcGxheS1jaXJjbGUJZ2lmdC1maWxsDWludGVncmFsLWZpbGwKcGxheS1yaWdodApwaG90by1maWxsDHB1c2hwaW4tZmlsbA5xcS1jaXJjbGUtZmlsbAVwaG9uZQpzaGFyZS1maWxsFHF1ZXN0aW9uLWNpcmNsZS1maWxsCnZvbHVtZS1vZmYJcGxheS1sZWZ0B3dhcm5pbmcTbW9tZW50cy1jaXJjZWwtZmlsbApyZWQtcGFja2V0DHNoYXJlLXNxdWFyZQ5za2lwLWJhY2stbGVmdAx3YXJuaW5nLWZpbGwPdm9sdW1lLW9mZi1maWxsDXNob3BwaW5nLWNhcnQId2lmaS1vZmYSd2VpeGluLWNpcmNsZS1maWxsCnRyYXNoLWZpbGwTdHdpdHRlci1jaXJjbGUtZmlsbAxzZXR0aW5nLWZpbGwHcHVzaHBpbhJzaG9wcGluZy1jYXJ0LWZpbGwEc2NhbgZzZWFyY2gIYXJyb3ctdXAOYXJyb3ctZG93bndhcmQKYXBwbGUtZmlsbA1hcnJvdy11cC1maWxsD2Fycm93LWRvd24tZmlsbAdhY2NvdW50DmFycm93LWxlZnR3YXJkC2Fycm93LXJpZ2h0CmFycm93LWRvd24JY2hhdC1maWxsBmF0dGFjaAxhcnJvdy11cHdhcmQGY2FtZXJhEGNoZWNrbWFyay1jaXJjbGUPYXJyb3ctcmlnaHR3YXJkCmFycm93LWxlZnQDYmFnCGNhci1maWxsCWNoZWNrbWFyawpjbG9jay1maWxsC2NvdXBvbi1maWxsCWJhY2tzcGFjZQxjbG9zZS1jaXJjbGUDY2FyC2NhbWVyYS1maWxsBGJlbGwMYWNjb3VudC1maWxsEWVycm9yLWNpcmNsZS1maWxsBGNoYXQJZW1wdHktY2FyDWNoZWNrYm94LW1hcmsFY2xvc2UIY2FsZW5kYXIIZWRpdC1wZW4GY291cG9uCmtlZnUtZXJtYWkLZW1wdHktZmF2b3IDZXllA21hcBFjbG9zZS1jaXJjbGUtZmlsbBVjaGVja21hcmstY2lyY2xlLWZpbGwLZW1wdHktb3JkZXIFY2xvY2sDbWljDGVycm9yLWNpcmNsZQ1tb3JlLWRvdC1maWxsCGRvd25sb2FkCmVtcHR5LWRhdGEKZW1wdHktbGlzdAVlbWFpbANtYW4MZW1wdHktc2VhcmNoDWVkaXQtcGVuLWZpbGwEaG9tZQVtb3ZpZRBlbXB0eS1wZXJtaXNzaW9uCmVtcHR5LW5ld3MOZmlsZS10ZXh0LWZpbGwEZ2lmdAplbWFpbC1maWxsEG1vcmUtY2lyY2xlLWZpbGwNZW1wdHktaGlzdG9yeQlmaWxlLXRleHQPZXllLW9mZi1vdXRsaW5lDWVtcHR5LWFkZHJlc3MKaGVhcnQtZmlsbARncmlkCWxvY2stb3Blbglob21lLWZpbGwFbGV2ZWwEbGlzdAdtaWMtb2ZmEHBsYXktY2lyY2xlLWZpbGwNdGh1bWItdXAtZmlsbAAAAAA=) format("truetype")}.uv-icon.data-v-553bbf60{display:flex;align-items:center}.uv-icon--left.data-v-553bbf60{flex-direction:row-reverse;align-items:center}.uv-icon--right.data-v-553bbf60{flex-direction:row;align-items:center}.uv-icon--top.data-v-553bbf60{flex-direction:column-reverse;justify-content:center}.uv-icon--bottom.data-v-553bbf60{flex-direction:column;justify-content:center}.uv-icon__icon.data-v-553bbf60{font-family:uvicon-iconfont;position:relative;display:flex;flex-direction:row;align-items:center}.uv-icon__icon--primary.data-v-553bbf60{color:#3c9cff}.uv-icon__icon--success.data-v-553bbf60{color:#5ac725}.uv-icon__icon--error.data-v-553bbf60{color:#f56c6c}.uv-icon__icon--warning.data-v-553bbf60{color:#f9ae3d}.uv-icon__icon--info.data-v-553bbf60{color:#909399}.uv-icon__img.data-v-553bbf60{height:auto;will-change:transform}.uv-icon__label.data-v-553bbf60{line-height:1} diff --git a/unpackage/dist/build/mp-weixin/node-modules/@climblee/uv-ui/components/uv-notice-bar/uv-notice-bar.js b/unpackage/dist/build/mp-weixin/node-modules/@climblee/uv-ui/components/uv-notice-bar/uv-notice-bar.js new file mode 100644 index 0000000..e85b198 --- /dev/null +++ b/unpackage/dist/build/mp-weixin/node-modules/@climblee/uv-ui/components/uv-notice-bar/uv-notice-bar.js @@ -0,0 +1 @@ +"use strict";const o=require("../../../../../common/vendor.js"),e={name:"uv-notice-bar",emits:["click","close","change"],mixins:[o.mpMixin,o.mixin,o.props],data:()=>({show:!0}),methods:{click(o){this.$emit("click",o),this.url&&this.linkType&&this.openPage()},close(){this.show=!1,this.$emit("close")},change(o){this.$emit("change",o)}}};if(!Array){(o.resolveComponent("uv-column-notice")+o.resolveComponent("uv-row-notice"))()}Math||((()=>"../uv-column-notice/uv-column-notice.js")+(()=>"../uv-row-notice/uv-row-notice.js"))();const c=o._export_sfc(e,[["render",function(e,c,i,t,n,s){return o.e({a:n.show},n.show?o.e({b:"column"===e.direction||"row"===e.direction&&e.step},"column"===e.direction||"row"===e.direction&&e.step?{c:o.o(s.close),d:o.o(s.click),e:o.o(s.change),f:o.p({color:e.color,bgColor:e.bgColor,text:e.text,mode:e.mode,step:e.step,icon:e.icon,"disable-touch":e.disableTouch,"disable-scroll":e.disableScroll,fontSize:e.fontSize,duration:e.duration})}:{g:o.o(s.close),h:o.o(s.click),i:o.p({color:e.color,bgColor:e.bgColor,text:e.text,mode:e.mode,fontSize:e.fontSize,speed:e.speed,url:e.url,linkType:e.linkType,icon:e.icon})},{j:o.s({backgroundColor:e.bgColor}),k:o.s(e.$uv.addStyle(e.customStyle))}):{})}],["__scopeId","data-v-20a3c1e7"]]);wx.createComponent(c); diff --git a/unpackage/dist/build/mp-weixin/node-modules/@climblee/uv-ui/components/uv-notice-bar/uv-notice-bar.json b/unpackage/dist/build/mp-weixin/node-modules/@climblee/uv-ui/components/uv-notice-bar/uv-notice-bar.json new file mode 100644 index 0000000..cd8263d --- /dev/null +++ b/unpackage/dist/build/mp-weixin/node-modules/@climblee/uv-ui/components/uv-notice-bar/uv-notice-bar.json @@ -0,0 +1,7 @@ +{ + "component": true, + "usingComponents": { + "uv-column-notice": "../uv-column-notice/uv-column-notice", + "uv-row-notice": "../uv-row-notice/uv-row-notice" + } +} \ No newline at end of file diff --git a/unpackage/dist/build/mp-weixin/node-modules/@climblee/uv-ui/components/uv-notice-bar/uv-notice-bar.wxml b/unpackage/dist/build/mp-weixin/node-modules/@climblee/uv-ui/components/uv-notice-bar/uv-notice-bar.wxml new file mode 100644 index 0000000..b58fe5f --- /dev/null +++ b/unpackage/dist/build/mp-weixin/node-modules/@climblee/uv-ui/components/uv-notice-bar/uv-notice-bar.wxml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/unpackage/dist/build/mp-weixin/node-modules/@climblee/uv-ui/components/uv-notice-bar/uv-notice-bar.wxss b/unpackage/dist/build/mp-weixin/node-modules/@climblee/uv-ui/components/uv-notice-bar/uv-notice-bar.wxss new file mode 100644 index 0000000..a9586d5 --- /dev/null +++ b/unpackage/dist/build/mp-weixin/node-modules/@climblee/uv-ui/components/uv-notice-bar/uv-notice-bar.wxss @@ -0,0 +1 @@ +view.data-v-20a3c1e7,scroll-view.data-v-20a3c1e7,swiper-item.data-v-20a3c1e7{display:flex;flex-direction:column;flex-shrink:0;flex-grow:0;flex-basis:auto;align-items:stretch;align-content:flex-start}.uv-notice-bar.data-v-20a3c1e7{overflow:hidden;padding:9px 12px;flex:1} diff --git a/unpackage/dist/build/mp-weixin/node-modules/@climblee/uv-ui/components/uv-row-notice/uv-row-notice.js b/unpackage/dist/build/mp-weixin/node-modules/@climblee/uv-ui/components/uv-row-notice/uv-row-notice.js new file mode 100644 index 0000000..871bc30 --- /dev/null +++ b/unpackage/dist/build/mp-weixin/node-modules/@climblee/uv-ui/components/uv-row-notice/uv-row-notice.js @@ -0,0 +1 @@ +"use strict";const t=require("../../../../../common/vendor.js"),e={name:"uv-row-notice",emits:["click","close"],mixins:[t.mpMixin,t.mixin,t.props$3],data:()=>({animationDuration:"0",animationPlayState:"paused",nvueInit:!0,show:!0}),watch:{text:{immediate:!0,handler(t,e){this.vue(),this.$uv.test.string(t)||this.$uv.error("noticebar组件direction为row时,要求text参数为字符串形式")}},fontSize(){this.vue()},speed(){this.vue()}},computed:{textStyle(){let t={};return t.color=this.color,t.fontSize=this.$uv.addUnit(this.fontSize),t},animationStyle(){let t={};return t.animationDuration=this.animationDuration,t.animationPlayState=this.animationPlayState,t},innerText(){let t=[];const e=this.text?this.text.split(""):[];for(let i=0;i{this.animationPlayState="running"}),10)},async nvue(){},loopAnimation(t,e){},getNvueRect(t){},clickHandler(t){this.$emit("click")},close(){this.$emit("close")}}};if(!Array){t.resolveComponent("uv-icon")()}Math;const i=t._export_sfc(e,[["render",function(e,i,n,o,a,s){return t.e({a:e.icon},e.icon?{b:t.p({name:e.icon,color:e.color,size:"19"})}:{},{c:t.f(s.innerText,((e,i,n)=>({a:t.t(e),b:i}))),d:t.s(s.textStyle),e:t.s(s.animationStyle),f:["link","closable"].includes(e.mode)},["link","closable"].includes(e.mode)?t.e({g:"link"===e.mode},"link"===e.mode?{h:t.p({name:"arrow-right",size:17,color:e.color})}:{},{i:"closable"===e.mode},"closable"===e.mode?{j:t.o(s.close),k:t.p({name:"close",size:16,color:e.color})}:{}):{},{l:t.o(((...t)=>s.clickHandler&&s.clickHandler(...t)))})}],["__scopeId","data-v-07c5f837"]]);wx.createComponent(i); diff --git a/unpackage/dist/build/mp-weixin/node-modules/@climblee/uv-ui/components/uv-row-notice/uv-row-notice.json b/unpackage/dist/build/mp-weixin/node-modules/@climblee/uv-ui/components/uv-row-notice/uv-row-notice.json new file mode 100644 index 0000000..700e739 --- /dev/null +++ b/unpackage/dist/build/mp-weixin/node-modules/@climblee/uv-ui/components/uv-row-notice/uv-row-notice.json @@ -0,0 +1,6 @@ +{ + "component": true, + "usingComponents": { + "uv-icon": "../uv-icon/uv-icon" + } +} \ No newline at end of file diff --git a/unpackage/dist/build/mp-weixin/node-modules/@climblee/uv-ui/components/uv-row-notice/uv-row-notice.wxml b/unpackage/dist/build/mp-weixin/node-modules/@climblee/uv-ui/components/uv-row-notice/uv-row-notice.wxml new file mode 100644 index 0000000..f33c91e --- /dev/null +++ b/unpackage/dist/build/mp-weixin/node-modules/@climblee/uv-ui/components/uv-row-notice/uv-row-notice.wxml @@ -0,0 +1 @@ +{{item.a}} \ No newline at end of file diff --git a/unpackage/dist/build/mp-weixin/node-modules/@climblee/uv-ui/components/uv-row-notice/uv-row-notice.wxss b/unpackage/dist/build/mp-weixin/node-modules/@climblee/uv-ui/components/uv-row-notice/uv-row-notice.wxss new file mode 100644 index 0000000..e98030f --- /dev/null +++ b/unpackage/dist/build/mp-weixin/node-modules/@climblee/uv-ui/components/uv-row-notice/uv-row-notice.wxss @@ -0,0 +1 @@ +view.data-v-07c5f837,scroll-view.data-v-07c5f837,swiper-item.data-v-07c5f837{display:flex;flex-direction:column;flex-shrink:0;flex-grow:0;flex-basis:auto;align-items:stretch;align-content:flex-start}.uv-notice.data-v-07c5f837{display:flex;flex-direction:row;align-items:center;justify-content:space-between}.uv-notice__left-icon.data-v-07c5f837{align-items:center;margin-right:5px}.uv-notice__right-icon.data-v-07c5f837{margin-left:5px;align-items:center}.uv-notice__content.data-v-07c5f837{text-align:right;flex:1;display:flex;flex-direction:row;flex-wrap:nowrap;overflow:hidden}.uv-notice__content__text.data-v-07c5f837{font-size:14px;color:#f9ae3d;padding-left:100%;word-break:keep-all;white-space:nowrap;animation:uv-loop-animation-07c5f837 10s linear infinite both;display:flex;flex-direction:row}@keyframes uv-loop-animation-07c5f837{0%{transform:translateZ(0)}to{transform:translate3d(-100%,0,0)}} diff --git a/unpackage/dist/build/mp-weixin/pages/device/detail.js b/unpackage/dist/build/mp-weixin/pages/device/detail.js index 99cb084..cf8a4f3 100644 --- a/unpackage/dist/build/mp-weixin/pages/device/detail.js +++ b/unpackage/dist/build/mp-weixin/pages/device/detail.js @@ -1 +1 @@ -"use strict";const e=require("../../common/vendor.js"),o=require("../../common/assets.js"),t=require("../../config/user.js"),a=require("../../util/index.js"),n={__name:"detail",setup(n){const i=e.ref({}),d=e.ref(""),r=e.ref({}),s=e.ref("一号教学楼大厅");e.ref(95);const c=e.ref(!1),l=e.reactive({text:"可使用",class:"available"}),u=e.ref(!0),g=e.ref(""),v=e.ref(!1);e.onLoad((o=>{o.deviceNo==e.index.getStorageSync("deviceId")&&e.index.getStorageSync("deviceId")?d.value=e.index.getStorageSync("deviceId"):(d.value=o.deviceNo,e.index.setStorageSync("deviceId",o.deviceNo)),f()})),e.onMounted((async()=>{await h()})),e.onShow((async()=>{await p()}));const h=async()=>{try{const e=await a.getUserInfo();console.log(e.data.phone,"getUserInfoPhone"),200==e.code&&e.data&&e.data.phone?g.value=e.data.phone:v.value=!0}catch(e){console.error("获取用户信息失败:",e)}},x=o=>{if(console.log("getPhoneNumber event:",o.detail),o.detail.errMsg&&o.detail.errMsg.includes("deny"))e.index.showToast({title:"需要授权手机号才能使用设备",icon:"none"});else if(o.detail.code){e.index.showLoading({title:"获取中..."}),console.log("获取到的授权code:",o.detail.code);try{a.getUserPhoneNumber(o.detail.code).then((o=>{if(console.log("获取手机号API响应原始数据:",JSON.stringify(o)),e.index.hideLoading(),!o)return console.error("API返回数据为空"),void e.index.showModal({title:"数据异常",content:"API返回为空",showCancel:!1});console.log("响应code:",o.code,"响应类型:",typeof o.code),console.log("是否有data:",!!o.data,"是否有phone:",o.data&&!!o.data.phone),200==o.code&&o.data&&o.data.phoneNumber?(g.value=o.data.phoneNumber,v.value=!1,e.index.showToast({title:"手机号获取成功",icon:"success"})):(console.warn("获取手机号响应异常:",o.msg||"未知错误"),e.index.showModal({title:"获取手机号异常",content:`状态码: ${o.code}, 消息: ${o.msg||"无"}`,showCancel:!1}))})).catch((o=>{e.index.hideLoading(),console.error("获取手机号码失败(catch):",o);let t=o.message||o.toString();e.index.showModal({title:"获取手机号失败",content:"错误信息: "+t,showCancel:!1})}))}catch(t){e.index.hideLoading(),console.error("获取手机号外部错误:",t),e.index.showModal({title:"意外错误",content:"处理过程发生异常: "+(t.message||t),showCancel:!1})}}else e.index.showToast({title:"获取授权码失败",icon:"none"})},p=async()=>{const e=await t.getDeviceInfo(d.value);200==e.code&&(i.value=e.data.device||{},i.value.deviceLocation?s.value=i.value.deviceLocation:e.data.position&&e.data.position.name&&(s.value=e.data.position.name),i.value.status&&("online"===i.value.status?(l.text="可使用",l.class="available"):"offline"===i.value.status&&(l.text="离线",l.class="offline")),console.log("feeconfig",i.value.feeConfig),r.value=JSON.parse(i.value.feeConfig)[0]||{})},f=async()=>{try{const o=await e.index.$api.checkActiveOrder();if(o.hasOrder){const t=o.order;"waiting_for_payment"===t.status?e.index.redirectTo({url:`/pages/order/payment?orderId=${t.orderId}&deviceId=${d.value}`}):"in_used"===t.status&&e.index.redirectTo({url:`/pages/device/return?deviceId=${d.value}`})}}catch(o){e.index.showToast({title:"订单状态查询失败",icon:"none"})}},m=o=>{u.value?g.value?I(o):v.value=!0:e.index.showModal({title:"提示",content:"请先登录后再操作",confirmText:"去登录",success:o=>{o.confirm&&e.index.navigateTo({url:"/pages/login/index"})}})},w=e.reactive({time:"1小时",price:"5.00"}),y=e.ref("99.00"),I=async o=>{try{e.index.showLoading({title:"处理中"});const s=await t.rentPowerBank(d.value,g.value);if(200!==s.code)throw new Error(s.msg||"设备租借失败");const c=s.data;try{let e=0;e=w.time.includes("小时")?60*parseInt(w.time):w.time.includes("分钟")?parseInt(w.time):60*parseInt(w.time);const o=await t.updateOrderPackage({orderId:c.orderId,packageTime:e,packagePrice:parseFloat(w.price)});200!==o.code?console.warn("更新订单套餐信息失败:",o.msg):console.log("订单套餐信息已提前更新")}catch(n){console.error("更新订单套餐信息时出错:",n)}if("wx-pay"==o){e.index.hideLoading();const o=await t.getOrderByOrderNo(c.orderNo);console.log(o);const a=parseFloat(i.value.depositAmount),n=(a+parseFloat(w.price)).toFixed(2);e.index.hideLoading(),e.index.redirectTo({url:`/pages/order/payment?orderId=${c.orderId}&packageTimeHours=${w.time.replace("小时","")}&packagePrice=${w.price}&totalAmount=${n}&depositAmount=${y.value}${i.value&&i.value.feeConfig?"&feeConfig="+encodeURIComponent(i.value.feeConfig):""}`})}else if("wx-score-pay"==o){e.index.hideLoading();const o=await t.getOrderByOrderNoScore(c.orderNo);if(e.index.hideLoading(),o&&200===o.code)try{if("0"==(await a.initiateWeChatScorePayment(o)).errCode){const o=await t.getOrderByOrderNoScorePayStatus(c.orderNo);console.log(o.data.orderStatus),"in_used"==o.data.orderStatus?(e.index.showToast({title:"设备租借成功",icon:"success"}),setTimeout((()=>{e.index.redirectTo({url:"/pages/order/index"})}),1500)):"waiting_for_payment"==o.data.orderStatus&&(e.index.showToast({title:"设备租借失败,订单已取消",icon:"error"}),await t.cancelOrder({orderId:c.orderNo}),setTimeout((()=>{e.index.switchTab({url:"/pages/index/index"})}),1500))}}catch(r){e.index.showToast({title:"支付分调用失败,请重试",icon:"none"})}else e.index.showToast({title:(null==o?void 0:o.msg)||"获取支付参数失败",icon:"none"})}}catch(s){e.index.hideLoading(),e.index.showToast({title:s.message||"租借失败,请重试",icon:"none"})}};return(t,a)=>e.e({a:e.t(l.text),b:e.n(l.class),c:e.t(d.value),d:o._imports_0$3,e:e.t(s.value),f:e.t(r.value.maxHourPrice),g:e.t(i.value.depositAmount),h:e.t(c.value?"归还设备":"免押租借"),i:c.value?1:"",j:e.o((e=>m("wx-score-pay"))),k:o._imports_0$2,l:v.value},v.value?{m:e.o((()=>{})),n:e.o(x),o:e.o((e=>v.value=!1))}:{})}},i=e._export_sfc(n,[["__scopeId","data-v-f998093e"]]);wx.createPage(i); +"use strict";const e=require("../../common/vendor.js"),o=require("../../common/assets.js"),t=require("../../config/user.js"),a=require("../../util/index.js"),n={__name:"detail",setup(n){const i=e.ref({}),d=e.ref(""),r=e.ref({}),s=e.ref("一号教学楼大厅");e.ref(95);const c=e.ref(!1),l=e.reactive({text:"可使用",class:"available"}),u=e.ref(!0),g=e.ref(""),v=e.ref(!1);e.onLoad((o=>{o.deviceNo==e.index.getStorageSync("deviceId")&&e.index.getStorageSync("deviceId")?d.value=e.index.getStorageSync("deviceId"):(d.value=o.deviceNo,e.index.setStorageSync("deviceId",o.deviceNo)),f()})),e.onMounted((async()=>{await h()})),e.onShow((async()=>{await p()}));const h=async()=>{try{const e=await a.getUserInfo();console.log(e.data.phone,"getUserInfoPhone"),200==e.code&&e.data&&e.data.phone?g.value=e.data.phone:v.value=!0}catch(e){console.error("获取用户信息失败:",e)}},x=o=>{if(console.log("getPhoneNumber event:",o.detail),o.detail.errMsg&&o.detail.errMsg.includes("deny"))e.index.showToast({title:"需要授权手机号才能使用设备",icon:"none"});else if(o.detail.code){e.index.showLoading({title:"获取中..."}),console.log("获取到的授权code:",o.detail.code);try{a.getUserPhoneNumber(o.detail.code).then((o=>{if(console.log("获取手机号API响应原始数据:",JSON.stringify(o)),e.index.hideLoading(),!o)return console.error("API返回数据为空"),void e.index.showModal({title:"数据异常",content:"API返回为空",showCancel:!1});console.log("响应code:",o.code,"响应类型:",typeof o.code),console.log("是否有data:",!!o.data,"是否有phone:",o.data&&!!o.data.phone),200==o.code&&o.data&&o.data.phoneNumber?(g.value=o.data.phoneNumber,v.value=!1,e.index.showToast({title:"手机号获取成功",icon:"success"})):(console.warn("获取手机号响应异常:",o.msg||"未知错误"),e.index.showModal({title:"获取手机号异常",content:`状态码: ${o.code}, 消息: ${o.msg||"无"}`,showCancel:!1}))})).catch((o=>{e.index.hideLoading(),console.error("获取手机号码失败(catch):",o);let t=o.message||o.toString();e.index.showModal({title:"获取手机号失败",content:"错误信息: "+t,showCancel:!1})}))}catch(t){e.index.hideLoading(),console.error("获取手机号外部错误:",t),e.index.showModal({title:"意外错误",content:"处理过程发生异常: "+(t.message||t),showCancel:!1})}}else e.index.showToast({title:"获取授权码失败",icon:"none"})},p=async()=>{const e=await t.getDeviceInfo(d.value);200==e.code&&(i.value=e.data.device||{},i.value.deviceLocation?s.value=i.value.deviceLocation:e.data.position&&e.data.position.name&&(s.value=e.data.position.name),i.value.status&&("online"===i.value.status?(l.text="可使用",l.class="available"):"offline"===i.value.status&&(l.text="离线",l.class="offline")),console.log("feeconfig",i.value.feeConfig),r.value=JSON.parse(i.value.feeConfig)[0]||{})},f=async()=>{try{const o=await e.index.$api.checkActiveOrder();if(o.hasOrder){const t=o.order;"waiting_for_payment"===t.status?e.index.redirectTo({url:`/pages/order/payment?orderId=${t.orderId}&deviceId=${d.value}`}):"in_used"===t.status&&e.index.redirectTo({url:`/pages/device/return?deviceId=${d.value}`})}}catch(o){e.index.showToast({title:"订单状态查询失败",icon:"none"})}},m=o=>{u.value?g.value?I(o):v.value=!0:e.index.showModal({title:"提示",content:"请先登录后再操作",confirmText:"去登录",success:o=>{o.confirm&&e.index.navigateTo({url:"/pages/login/index"})}})},w=e.reactive({time:"1小时",price:"5.00"}),y=e.ref("99.00"),I=async o=>{try{e.index.showLoading({title:"处理中"});const s=await t.rentPowerBank(d.value,g.value);if(200!==s.code)throw new Error(s.msg||"设备租借失败");const c=s.data;try{let e=0;e=w.time.includes("小时")?60*parseInt(w.time):w.time.includes("分钟")?parseInt(w.time):60*parseInt(w.time);const o=await t.updateOrderPackage({orderId:c.orderId,packageTime:e,packagePrice:parseFloat(w.price)});200!==o.code?console.warn("更新订单套餐信息失败:",o.msg):console.log("订单套餐信息已提前更新")}catch(n){console.error("更新订单套餐信息时出错:",n)}if("wx-pay"==o){e.index.hideLoading();const o=await t.getOrderByOrderNo(c.orderNo);console.log(o);const a=parseFloat(i.value.depositAmount),n=(a+parseFloat(w.price)).toFixed(2);e.index.hideLoading(),e.index.redirectTo({url:`/pages/order/payment?orderId=${c.orderId}&packageTimeHours=${w.time.replace("小时","")}&packagePrice=${w.price}&totalAmount=${n}&depositAmount=${y.value}${i.value&&i.value.feeConfig?"&feeConfig="+encodeURIComponent(i.value.feeConfig):""}`})}else if("wx-score-pay"==o){e.index.hideLoading();const o=await t.getOrderByOrderNoScore(c.orderNo);if(e.index.hideLoading(),o&&200===o.code)try{if("0"==(await a.initiateWeChatScorePayment(o)).errCode){const o=await t.getOrderByOrderNoScorePayStatus(c.orderNo);console.log(o.data.orderStatus),"in_used"==o.data.orderStatus?(e.index.showToast({title:"设备租借成功",icon:"success"}),setTimeout((()=>{e.index.redirectTo({url:"/pages/order/index"})}),1500)):"waiting_for_payment"==o.data.orderStatus&&(e.index.showToast({title:"设备租借失败,订单已取消",icon:"error"}),await t.cancelOrder({orderId:c.orderNo}),setTimeout((()=>{e.index.switchTab({url:"/pages/index/index"})}),1500))}}catch(r){e.index.showToast({title:"支付分调用失败,请重试",icon:"none"})}else e.index.showToast({title:(null==o?void 0:o.msg)||"获取支付参数失败",icon:"none"})}}catch(s){e.index.hideLoading(),e.index.showToast({title:s.message||"租借失败,请重试",icon:"none"})}};return(t,a)=>e.e({a:e.t(l.text),b:e.n(l.class),c:e.t(d.value),d:o._imports_0$4,e:e.t(s.value),f:e.t(r.value.maxHourPrice),g:e.t(i.value.depositAmount),h:e.t(c.value?"归还设备":"免押租借"),i:c.value?1:"",j:e.o((e=>m("wx-score-pay"))),k:o._imports_0$3,l:v.value},v.value?{m:e.o((()=>{})),n:e.o(x),o:e.o((e=>v.value=!1))}:{})}},i=e._export_sfc(n,[["__scopeId","data-v-f998093e"]]);wx.createPage(i); diff --git a/unpackage/dist/build/mp-weixin/pages/index/index.js b/unpackage/dist/build/mp-weixin/pages/index/index.js index a39444a..a872b26 100644 --- a/unpackage/dist/build/mp-weixin/pages/index/index.js +++ b/unpackage/dist/build/mp-weixin/pages/index/index.js @@ -1 +1 @@ -"use strict";const e=require("../../common/vendor.js"),t=require("../../common/assets.js"),a=require("../../util/index.js"),o=require("../../config/url.js"),i=require("../../config/user.js"),n=require("../../utils/amap.js");Math||d();const d=()=>"../../components/MapComponent.js",r={__name:"index",setup(d){const r=e.ref(""),s=e.ref(null),l=e.ref([]),c=e.ref([]),u=e.ref(!1),v=e.ref(!1),g=e.ref(!1),p=e.ref(!1),x=e.ref(!1),f=e.ref(null);e.computed((()=>s.value&&s.value.address?`${s.value.district||"当前位置"} - 搜索附近场地`:"搜索附近场地")),e.onMounted((()=>{h()})),e.onUnmounted((()=>{}));const h=async()=>{v.value=!0;try{await m(),await w()}catch(e){console.error("初始化失败:",e),await w()}finally{v.value=!1}},m=async()=>{try{const a=await new Promise(((t,a)=>{e.index.getLocation({type:"gcj02",success:t,fail:a})}));s.value={longitude:a.longitude,latitude:a.latitude},p.value||(p.value=!0);try{const e=await n.AmapUtil.regeocode(a.longitude,a.latitude);if(e.success){const t=e.data;s.value.address=t.formatted_address,s.value.city=t.addressComponent.city,s.value.district=t.addressComponent.district}}catch(t){}setTimeout((async()=>{await w(),e.index.hideLoading(),e.index.showToast({title:"定位成功",icon:"success"})}),800)}catch(t){console.error("获取位置失败:",t),e.index.showToast({title:"获取位置失败,显示默认地图",icon:"none"})}},w=async()=>{try{e.index.getStorageSync("token")||await a.wxLogin();const t=await e.index.request({url:`${o.URL}/device/position/list`,method:"GET",header:{Authorization:"Bearer "+e.index.getStorageSync("token"),Clientid:e.index.getStorageSync("client_id")}});200===t.statusCode&&200===t.data.code?(l.value=t.data.rows||[],y(),c.value=[...l.value]):console.error("获取场地列表失败:",t.data.msg)}catch(t){console.error("获取场地列表异常:",t)}},y=(e=null)=>{var t;const a=e||s.value||(null==(t=f.value)?void 0:t.mapCenter);a&&void 0!==a.longitude&&void 0!==a.latitude&&(l.value.forEach((e=>{if(e.longitude&&e.latitude)try{const t=n.AmapUtil.calculateDistance(a.latitude,a.longitude,parseFloat(e.latitude),parseFloat(e.longitude));e.distance=t.toFixed(1)}catch(t){console.error("计算距离异常:",t,e),e.distance="999.0"}})),l.value.sort(((e,t)=>(parseFloat(e.distance)||999)-(parseFloat(t.distance)||999))))},S=async()=>{e.index.showLoading({title:"定位中..."}),e.index.reLaunch({url:"/pages/index/index"})},T=t=>{(async t=>{try{e.index.getStorageSync("token")||await a.wxLogin();const i=await e.index.request({url:`${o.URL}/device/position/list`,method:"GET",header:{Authorization:"Bearer "+e.index.getStorageSync("token"),Clientid:e.index.getStorageSync("client_id")}});if(200===i.statusCode&&200===i.data.code){l.value=i.data.rows||[],y(t);const e=10;c.value=l.value.filter((t=>!t.distance||parseFloat(t.distance)<=e))}else console.error("根据地图中心加载场地失败:",i.data.msg),l.value=[],c.value=[]}catch(i){console.error("根据地图中心加载场地异常:",i)}})(t)},C=t=>{e.index.showActionSheet({itemList:["扫码使用","导航前往"],success:e=>{switch(e.tapIndex){case 0:L();break;case 1:k(t)}}})},k=t=>{const a=parseFloat(t.latitude),o=parseFloat(t.longitude);e.index.openLocation({latitude:a,longitude:o,name:t.name,address:t.location})},_=()=>{u.value=!u.value},L=async()=>{try{const d=await new Promise(((t,a)=>{e.index.scanCode({success:t,fail:a})}));let r=a.getQueryString(d.path,"deviceNo");if(!r)return void e.index.showToast({title:"无效的设备二维码",icon:"none"});e.index.getStorageSync("token")||await a.wxLogin();const s=await e.index.request({url:`${o.URL}/app/order/inUse`,method:"GET",header:{Authorization:"Bearer "+e.index.getStorageSync("token"),Clientid:e.index.getStorageSync("client_id")}});if(200==s.statusCode&&200==s.data.code&&s.data.data){const t=s.data.data;return void e.index.reLaunch({url:`/pages/return/index?orderId=${t.orderId}&deviceId=${r||t.deviceNo}`})}const l=await e.index.request({url:`${o.URL}/app/order/unpaid`,method:"GET",header:{Authorization:"Bearer "+e.index.getStorageSync("token"),Clientid:e.index.getStorageSync("client_id")}});if(200==l.statusCode&&200==l.data.code&&l.data.data){const t=l.data.data;e.index.navigateTo({url:`/pages/order/payment?orderId=${t.orderId}`})}else try{const a=await i.getDeviceInfo(r);if(200==a.code&&a.data&&a.data.device){const o=a.data.device;if(o.feeConfig)try{JSON.parse(o.feeConfig);e.index.navigateTo({url:`/pages/device/detail?deviceNo=${r}&feeConfig=${encodeURIComponent(o.feeConfig)}`})}catch(t){e.index.navigateTo({url:`/pages/device/detail?deviceNo=${r}`})}else e.index.navigateTo({url:`/pages/device/detail?deviceNo=${r}`})}else e.index.showToast({title:"获取设备信息失败",icon:"none"}),e.index.navigateTo({url:`/pages/device/detail?deviceNo=${r}`})}catch(n){console.error("获取设备信息异常:",n),e.index.navigateTo({url:`/pages/device/detail?deviceNo=${r}`})}}catch(n){console.error("扫码处理失败:",n),e.index.showToast({title:"扫码失败",icon:"none"})}},$=()=>{x.value=!0},I=()=>{x.value=!1},q=e=>{"getPhoneNumber:ok"===e.detail.errMsg&&(g.value=!1)};return(a,o)=>e.e({a:!v.value&&s.value},!v.value&&s.value?{b:e.sr(f,"ef66b09a-0",{k:"mapRef"}),c:e.o(S),d:e.o(L),e:e.o($),f:e.o(C),g:e.o(T),h:e.p({userLocation:s.value,positionList:l.value,filteredPositions:c.value,searchKeyword:r.value})}:{},{i:v.value||!s.value},(v.value||s.value,{}),{j:x.value},x.value?e.e({k:e.o(I),l:e.o(_),m:e.t(c.value.length),n:t._imports_0,o:e.o(I),p:e.f(c.value,((t,a,o)=>e.e({a:e.t(t.name),b:e.t(t.describe),c:e.t(t.location),d:t.workTime&&"0"!==t.workTime},t.workTime&&"0"!==t.workTime?{e:e.t(t.workTime)}:{},{f:t.distance},t.distance?{g:e.t(t.distance)}:{},{h:e.t("online"===t.status?"营业中":"暂停服务"),i:e.n(t.status),j:e.o((e=>k(t)),t.positionId),k:t.positionId,l:e.o((e=>{return a=t,I(),void setTimeout((()=>{C(a)}),200);var a}),t.positionId)}))),q:t._imports_0,r:0===c.value.length&&!v.value},0!==c.value.length||v.value?{}:{s:t._imports_0},{t:u.value?1:""}):{},{v:v.value},(v.value,{}),{w:g.value},g.value?{x:e.o((e=>g.value=!1)),y:e.o(q),z:e.o((e=>g.value=!1))}:{})}},s=e._export_sfc(r,[["__scopeId","data-v-ef66b09a"]]);wx.createPage(s); +"use strict";const e=require("../../common/vendor.js"),t=require("../../common/assets.js"),a=require("../../util/index.js"),o=require("../../config/url.js"),i=require("../../config/user.js"),n=require("../../utils/mapUtils.js");if(!Array){(e.resolveComponent("uv-notice-bar")+e.resolveComponent("uv-icon"))()}Math||((()=>"../../node-modules/@climblee/uv-ui/components/uv-notice-bar/uv-notice-bar.js")+d+(()=>"../../node-modules/@climblee/uv-ui/components/uv-icon/uv-icon.js"))();const d=()=>"../../components/MapComponent.js",r={__name:"index",setup(d){const r=e.ref(""),s=e.ref(null),l=e.ref([]),c=e.ref([]),u=e.ref(!1),v=e.ref(!1),g=e.ref(!1),p=e.ref(!1),m=e.ref(!1),x=e.ref([{title:"扫码使用",desc:"找到附近设备,扫描设备上的二维码即可开始租借"},{title:"免押金支付",desc:"无需支付押金,使用支付分免押即可完成租借"},{title:"开始使用",desc:"设备自动解锁,风扇弹出后取出即可开始使用"},{title:"归还设备",desc:"使用完毕后,按照设备规格要求将风扇还入即可结束订单"}]),h=e.ref("消费规则:每小时5元,不足1小时按1小时计费,最高24小时封顶,请爱护设备,使用后请及时归还"),f=e.ref(null);e.computed((()=>s.value&&s.value.address?`${s.value.district||"当前位置"} - 搜索附近场地`:"搜索附近场地")),e.onMounted((()=>{y()})),e.onUnmounted((()=>{}));const y=async()=>{v.value=!0;try{0,await w(),await S()}catch(e){console.error("初始化失败:",e),await S()}finally{v.value=!1}},w=async()=>{try{const o=await n.getUserLocation();s.value={longitude:o.longitude,latitude:o.latitude};try{e.index.setStorageSync("userLocation",{longitude:o.longitude,latitude:o.latitude})}catch(t){console.warn("缓存基础定位信息失败:",t)}p.value||(p.value=!0);try{const a=await n.getRegeo(o.longitude,o.latitude);if(a.success){const o=a.data;s.value.address=o.formatted_address,s.value.city=o.addressComponent.city,s.value.district=o.addressComponent.district;try{e.index.setStorageSync("userLocation",{longitude:s.value.longitude,latitude:s.value.latitude,address:s.value.address,city:s.value.city,district:s.value.district})}catch(t){console.warn("缓存带地址的定位信息失败:",t)}}}catch(a){}setTimeout((async()=>{await S(),e.index.hideLoading()}),800)}catch(a){console.error("获取位置失败:",a),e.index.showToast({title:"获取位置失败,显示默认地图",icon:"none"})}},S=async()=>{try{e.index.getStorageSync("token")||await a.wxLogin();const t=await e.index.request({url:`${o.URL}/device/position/app/list`,method:"GET",header:{Authorization:"Bearer "+e.index.getStorageSync("token"),Clientid:e.index.getStorageSync("client_id")},data:{latitude:s.value.latitude,longitude:s.value.longitude}});200===t.statusCode&&200===t.data.code?(l.value=t.data.rows||[],T(),c.value=[...l.value]):console.error("获取场地列表失败:",t.data.msg)}catch(t){console.error("获取场地列表异常:",t)}},T=async(e=null)=>{var t;const a=e||s.value||(null==(t=f.value)?void 0:t.mapCenter);a&&void 0!==a.longitude&&void 0!==a.latitude&&(l.value.forEach((e=>{if(e.longitude&&e.latitude)try{const t=n.calculateDistanceSync(a.latitude,a.longitude,parseFloat(e.latitude),parseFloat(e.longitude));e.distance=(e=>e<1e3?`${Math.round(e)}m`:`${(e/1e3).toFixed(1)}km`)(t),e.distanceInMeters=t}catch(t){console.error("计算距离异常:",t,e),e.distance="999.0km",e.distanceInMeters=999e3}})),l.value.sort(((e,t)=>(e.distanceInMeters||999e3)-(t.distanceInMeters||999e3))))},k=async()=>{e.index.showLoading({title:"定位中..."}),e.index.reLaunch({url:"/pages/index/index"})},C=t=>{(async t=>{try{e.index.getStorageSync("token")||await a.wxLogin();const i=await e.index.request({url:`${o.URL}/device/position/list`,method:"GET",header:{Authorization:"Bearer "+e.index.getStorageSync("token"),Clientid:e.index.getStorageSync("client_id")}});if(200===i.statusCode&&200===i.data.code){l.value=i.data.rows||[],T(t);const e=1e4;c.value=l.value.filter((t=>!t.distanceInMeters||t.distanceInMeters<=e))}else console.error("根据地图中心加载场地失败:",i.data.msg),l.value=[],c.value=[]}catch(i){console.error("根据地图中心加载场地异常:",i)}})(t)},I=t=>{e.index.showActionSheet({itemList:["扫码使用","导航前往"],success:e=>{switch(e.tapIndex){case 0:$();break;case 1:L(t)}}})},L=t=>{const a=parseFloat(t.latitude),o=parseFloat(t.longitude);e.index.openLocation({latitude:a,longitude:o,name:t.name,address:t.location})},$=async()=>{try{const d=await new Promise(((t,a)=>{e.index.scanCode({success:t,fail:a})}));let r=a.getQueryString(d.path,"deviceNo");if(!r)return void e.index.showToast({title:"无效的设备二维码",icon:"none"});e.index.getStorageSync("token")||await a.wxLogin();const s=await e.index.request({url:`${o.URL}/app/order/inUse`,method:"GET",header:{Authorization:"Bearer "+e.index.getStorageSync("token"),Clientid:e.index.getStorageSync("client_id")}});if(200==s.statusCode&&200==s.data.code&&s.data.data){const t=s.data.data;return void e.index.reLaunch({url:`/pages/return/index?orderId=${t.orderId}&deviceId=${r||t.deviceNo}`})}const l=await e.index.request({url:`${o.URL}/app/order/unpaid`,method:"GET",header:{Authorization:"Bearer "+e.index.getStorageSync("token"),Clientid:e.index.getStorageSync("client_id")}});if(200==l.statusCode&&200==l.data.code&&l.data.data){const t=l.data.data;e.index.navigateTo({url:`/pages/order/payment?orderId=${t.orderId}`})}else try{const a=await i.getDeviceInfo(r);if(200==a.code&&a.data&&a.data.device){const o=a.data.device;if(o.feeConfig)try{JSON.parse(o.feeConfig);e.index.navigateTo({url:`/pages/device/detail?deviceNo=${r}&feeConfig=${encodeURIComponent(o.feeConfig)}`})}catch(t){e.index.navigateTo({url:`/pages/device/detail?deviceNo=${r}`})}else e.index.navigateTo({url:`/pages/device/detail?deviceNo=${r}`})}else e.index.showToast({title:"获取设备信息失败",icon:"none"}),e.index.navigateTo({url:`/pages/device/detail?deviceNo=${r}`})}catch(n){console.error("获取设备信息异常:",n),e.index.navigateTo({url:`/pages/device/detail?deviceNo=${r}`})}}catch(n){console.error("扫码处理失败:",n),e.index.showToast({title:"扫码失败",icon:"none"})}},_=()=>{m.value=!0},b=()=>{m.value=!1},j=e=>{"getPhoneNumber:ok"===e.detail.errMsg&&(g.value=!1)};return(a,o)=>e.e({a:t._imports_0$1,b:e.p({text:h.value,mode:"link",speed:50,"show-icon":!0,color:"#2196F3","bg-color":"#E3F2FD",icon:"volume"}),c:!v.value&&s.value},!v.value&&s.value?{d:e.sr(f,"d45cdca7-1",{k:"mapRef"}),e:e.o(k),f:e.o($),g:e.o(_),h:e.o(I),i:e.o(C),j:e.p({userLocation:s.value,positionList:l.value,filteredPositions:c.value,searchKeyword:r.value})}:{},{k:e.f(x.value,((t,a,o)=>({a:e.t(a+1),b:e.t(t.title),c:e.t(t.desc),d:a}))),l:v.value||!s.value},(v.value||s.value,{}),{m:m.value},m.value?e.e({n:e.o(b),o:e.t(c.value.length),p:e.p({name:"close"}),q:e.o(b),r:e.f(c.value,((t,a,o)=>e.e({a:e.t(t.name),b:e.t("online"===t.status?"可租借/归还":"不可租借/归还"),c:e.n(t.status),d:t.workTime&&"0"!==t.workTime},t.workTime&&"0"!==t.workTime?{e:e.t(t.workTime)}:{},{f:t.distance},t.distance?{g:e.t(t.distance)}:{},{h:e.t("online"===t.status?"营业中":"暂停服务"),i:e.n(t.status),j:e.o((e=>L(t)),t.positionId),k:t.positionId,l:e.o((e=>{return a=t,b(),void setTimeout((()=>{I(a)}),200);var a}),t.positionId)}))),s:0===c.value.length&&!v.value},0!==c.value.length||v.value?{}:{t:t._imports_0},{v:u.value?1:""}):{},{w:v.value},(v.value,{}),{x:g.value},g.value?{y:e.o((e=>g.value=!1)),z:e.o(j),A:e.o((e=>g.value=!1))}:{})}},s=e._export_sfc(r,[["__scopeId","data-v-d45cdca7"]]);wx.createPage(s); diff --git a/unpackage/dist/build/mp-weixin/pages/index/index.json b/unpackage/dist/build/mp-weixin/pages/index/index.json index e11491c..9e1071b 100644 --- a/unpackage/dist/build/mp-weixin/pages/index/index.json +++ b/unpackage/dist/build/mp-weixin/pages/index/index.json @@ -1,6 +1,8 @@ { "navigationBarTitleText": "附近场地", "usingComponents": { + "uv-notice-bar": "../../node-modules/@climblee/uv-ui/components/uv-notice-bar/uv-notice-bar", + "uv-icon": "../../node-modules/@climblee/uv-ui/components/uv-icon/uv-icon", "map-component": "../../components/MapComponent" } } \ No newline at end of file diff --git a/unpackage/dist/build/mp-weixin/pages/index/index.wxml b/unpackage/dist/build/mp-weixin/pages/index/index.wxml index a7520d5..9599759 100644 --- a/unpackage/dist/build/mp-weixin/pages/index/index.wxml +++ b/unpackage/dist/build/mp-weixin/pages/index/index.wxml @@ -1 +1 @@ -正在获取位置信息...附近场地 ({{m}}){{item.a}}{{item.b}}{{item.c}}营业时间:{{item.e}}{{item.g}}km{{item.h}}导航暂无附近场地正在获取场地信息...授权获取手机号为了提供更好的服务和紧急联系,需要授权获取您的手机号暂不授权 \ No newline at end of file +共享风扇使用指南{{step.a}}{{step.b}}{{step.c}}正在获取位置信息...附近设备场地 ({{o}}){{item.a}}{{item.b}}营业时间:{{item.e}}{{item.g}}{{item.h}}导航附近5公里内暂无设备正在获取场地信息...授权获取手机号为了提供更好的服务和紧急联系,需要授权获取您的手机号暂不授权 \ No newline at end of file diff --git a/unpackage/dist/build/mp-weixin/pages/index/index.wxss b/unpackage/dist/build/mp-weixin/pages/index/index.wxss index 2385f7e..22052ff 100644 --- a/unpackage/dist/build/mp-weixin/pages/index/index.wxss +++ b/unpackage/dist/build/mp-weixin/pages/index/index.wxss @@ -1 +1 @@ -.container.data-v-ef66b09a{height:100%;width:100%;background-color:#f6f7fb;display:flex;flex-direction:column}.header-search.data-v-ef66b09a{padding:20rpx 30rpx;background:#fff;border-bottom:1px solid #f0f0f0;z-index:10}.header-search .search-box.data-v-ef66b09a{display:flex;align-items:center;background:#f8f9fa;border-radius:50rpx;padding:0 20rpx;height:80rpx}.header-search .search-box .search-icon.data-v-ef66b09a{width:32rpx;height:32rpx;margin-right:16rpx}.header-search .search-box .search-input.data-v-ef66b09a{flex:1;font-size:28rpx;color:#333}.header-search .search-box .location-btn.data-v-ef66b09a{width:60rpx;height:60rpx;display:flex;align-items:center;justify-content:center;background:#2196f3;border-radius:50%;margin-left:16rpx}.header-search .search-box .location-btn .location-icon.data-v-ef66b09a{width:24rpx;height:24rpx}.location-popup.data-v-ef66b09a{position:fixed;top:0;left:0;right:0;bottom:0;z-index:2000;display:flex;align-items:flex-end;justify-content:center}.location-popup .popup-mask.data-v-ef66b09a{position:absolute;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.5)}.location-popup .location-sheet.data-v-ef66b09a{background:#fff;border-radius:32rpx 32rpx 0 0;box-shadow:0 -4rpx 20rpx rgba(0,0,0,.1);max-height:70vh;transition:all .3s ease;z-index:1;position:relative;width:100%;display:flex;flex-direction:column;animation:slideUp-ef66b09a .3s ease-out}.location-popup .location-sheet.expanded.data-v-ef66b09a{max-height:85vh}.location-popup .location-sheet .sheet-handle.data-v-ef66b09a{display:flex;justify-content:center;padding:20rpx 0;cursor:pointer}.location-popup .location-sheet .sheet-handle .handle-bar.data-v-ef66b09a{width:80rpx;height:8rpx;background:#e0e0e0;border-radius:4rpx}.location-popup .location-sheet .sheet-header.data-v-ef66b09a{padding:0 30rpx 20rpx;border-bottom:1px solid #f0f0f0;display:flex;justify-content:space-between;align-items:center}.location-popup .location-sheet .sheet-header .sheet-title.data-v-ef66b09a{font-size:32rpx;font-weight:600;color:#333}.location-popup .location-sheet .sheet-header .close-btn.data-v-ef66b09a{width:60rpx;height:60rpx;display:flex;align-items:center;justify-content:center;background:#f0f0f0;border-radius:50%;transition:all .2s ease}.location-popup .location-sheet .sheet-header .close-btn.data-v-ef66b09a:active{background:#e0e0e0;transform:scale(.95)}.location-popup .location-sheet .sheet-header .close-btn .close-icon.data-v-ef66b09a{width:24rpx;height:24rpx}.location-popup .location-sheet .sheet-content.data-v-ef66b09a{flex:1;padding:20rpx 0;overflow:hidden}@keyframes slideUp-ef66b09a{0%{transform:translateY(100%)}to{transform:translateY(0)}}.position-item.data-v-ef66b09a{display:flex;align-items:center;padding:24rpx 30rpx;border-bottom:1px solid #f8f9fa}.position-item .position-info.data-v-ef66b09a{flex:1}.position-item .position-info .position-name.data-v-ef66b09a{font-size:32rpx;font-weight:500;color:#333;margin-bottom:8rpx}.position-item .position-info .position-desc.data-v-ef66b09a{font-size:26rpx;color:#666;margin-bottom:8rpx}.position-item .position-info .position-location.data-v-ef66b09a{display:flex;align-items:center;margin-bottom:8rpx}.position-item .position-info .position-location .location-icon-small.data-v-ef66b09a{width:24rpx;height:24rpx;margin-right:8rpx}.position-item .position-info .position-location text.data-v-ef66b09a{font-size:24rpx;color:#999}.position-item .position-info .position-time.data-v-ef66b09a{font-size:24rpx;color:#999}.position-item .position-actions.data-v-ef66b09a{display:flex;flex-direction:column;align-items:flex-end;gap:8rpx}.position-item .position-actions .distance-info.data-v-ef66b09a{font-size:24rpx;color:#2196f3;font-weight:500}.position-item .position-actions .status-tag.data-v-ef66b09a{padding:8rpx 16rpx;border-radius:20rpx;font-size:22rpx}.position-item .position-actions .status-tag.online.data-v-ef66b09a{background:#e8f5e8;color:#4caf50}.position-item .position-actions .status-tag.offline.data-v-ef66b09a{background:#ffeaea;color:#f44336}.position-item .position-actions .nav-btn.data-v-ef66b09a{padding:12rpx 20rpx;background:#2196f3;border-radius:20rpx;font-size:24rpx;color:#fff}.empty-state.data-v-ef66b09a{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:80rpx 0}.empty-state .empty-icon.data-v-ef66b09a{width:120rpx;height:120rpx;margin-bottom:24rpx;opacity:.5}.empty-state .empty-text.data-v-ef66b09a{font-size:28rpx;color:#999}.loading-overlay.data-v-ef66b09a{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.5);display:flex;align-items:center;justify-content:center;z-index:1000}.loading-overlay .loading-content.data-v-ef66b09a{background:#fff;border-radius:16rpx;padding:40rpx;display:flex;flex-direction:column;align-items:center}.loading-overlay .loading-content .loading-spinner.data-v-ef66b09a{width:60rpx;height:60rpx;border:4rpx solid #f0f0f0;border-top:4rpx solid #2196F3;border-radius:50%;animation:spin-ef66b09a 1s linear infinite;margin-bottom:24rpx}.loading-overlay .loading-content text.data-v-ef66b09a{font-size:28rpx;color:#666}@keyframes spin-ef66b09a{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.map-loading-placeholder.data-v-ef66b09a{position:absolute;top:0;left:0;right:0;bottom:0;background:#f6f7fb;display:flex;align-items:center;justify-content:center;z-index:100}.map-loading-placeholder .loading-content.data-v-ef66b09a{background:#fff;border-radius:16rpx;padding:40rpx;display:flex;flex-direction:column;align-items:center}.map-loading-placeholder .loading-content .loading-spinner.data-v-ef66b09a{width:60rpx;height:60rpx;border:4rpx solid #f0f0f0;border-top:4rpx solid #2196F3;border-radius:50%;animation:spin-ef66b09a 1s linear infinite;margin-bottom:24rpx}.map-loading-placeholder .loading-content text.data-v-ef66b09a{font-size:28rpx;color:#666}.phone-auth-popup.data-v-ef66b09a{position:fixed;top:0;left:0;right:0;bottom:0;z-index:2000;display:flex;align-items:center;justify-content:center}.phone-auth-popup .popup-mask.data-v-ef66b09a{position:absolute;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.5)}.phone-auth-popup .popup-content.data-v-ef66b09a{background:#fff;border-radius:24rpx;margin:0 60rpx;padding:40rpx;position:relative;z-index:1}.phone-auth-popup .popup-content .popup-header.data-v-ef66b09a{text-align:center;margin-bottom:30rpx}.phone-auth-popup .popup-content .popup-header .popup-title.data-v-ef66b09a{font-size:36rpx;font-weight:600;color:#333}.phone-auth-popup .popup-content .popup-body .auth-desc.data-v-ef66b09a{text-align:center;margin-bottom:40rpx}.phone-auth-popup .popup-content .popup-body .auth-desc text.data-v-ef66b09a{font-size:28rpx;color:#666;line-height:1.6}.phone-auth-popup .popup-content .popup-body .auth-btn.data-v-ef66b09a{width:100%;height:88rpx;background:#2196f3;border-radius:44rpx;border:none;color:#fff;font-size:32rpx;display:flex;align-items:center;justify-content:center;margin-bottom:20rpx}.phone-auth-popup .popup-content .popup-body .auth-cancel.data-v-ef66b09a{text-align:center;padding:20rpx}.phone-auth-popup .popup-content .popup-body .auth-cancel text.data-v-ef66b09a{font-size:28rpx;color:#999} +.container.data-v-d45cdca7{height:100%;width:100%;background-color:#f6f7fb;display:flex;flex-direction:column;padding-top:20rpx}.header-section.data-v-d45cdca7{width:92%;margin:0 auto 20rpx}.logo-container.data-v-d45cdca7{display:flex;align-items:center}.logo-container .logo-image.data-v-d45cdca7{width:80rpx;height:80rpx;margin-right:8rpx}.logo-container .app-name.data-v-d45cdca7{font-size:36rpx;font-weight:600;color:#333}.map-title.data-v-d45cdca7{width:92%;margin:0 auto 10rpx;padding:10rpx 0}.map-title text.data-v-d45cdca7{font-size:32rpx;font-weight:600;color:#333}.header-search.data-v-d45cdca7{padding:20rpx 30rpx;background:#fff;border-bottom:1px solid #f0f0f0;z-index:10}.header-search .search-box.data-v-d45cdca7{display:flex;align-items:center;background:#f8f9fa;border-radius:50rpx;padding:0 20rpx;height:80rpx}.header-search .search-box .search-icon.data-v-d45cdca7{width:32rpx;height:32rpx;margin-right:16rpx}.header-search .search-box .search-input.data-v-d45cdca7{flex:1;font-size:28rpx;color:#333}.header-search .search-box .location-btn.data-v-d45cdca7{width:60rpx;height:60rpx;display:flex;align-items:center;justify-content:center;background:#2196f3;border-radius:50%;margin-left:16rpx}.header-search .search-box .location-btn .location-icon.data-v-d45cdca7{width:24rpx;height:24rpx}.location-popup.data-v-d45cdca7{position:fixed;top:0;left:0;right:0;bottom:0;z-index:2000;display:flex;align-items:flex-end;justify-content:center}.location-popup .popup-mask.data-v-d45cdca7{position:absolute;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.5)}.location-popup .location-sheet.data-v-d45cdca7{background:#fff;border-radius:32rpx 32rpx 0 0;box-shadow:0 -4rpx 20rpx rgba(0,0,0,.1);max-height:70vh;transition:all .3s ease;z-index:1;position:relative;width:100%;display:flex;flex-direction:column;animation:slideUp-d45cdca7 .3s ease-out}.location-popup .location-sheet.expanded.data-v-d45cdca7{max-height:85vh}.location-popup .location-sheet .sheet-handle.data-v-d45cdca7{display:flex;justify-content:center;padding:20rpx 0;cursor:pointer}.location-popup .location-sheet .sheet-handle .handle-bar.data-v-d45cdca7{width:80rpx;height:8rpx;background:#e0e0e0;border-radius:4rpx}.location-popup .location-sheet .sheet-header.data-v-d45cdca7{padding:20rpx 30rpx;border-bottom:1px solid #f0f0f0;display:flex;justify-content:space-between;align-items:center}.location-popup .location-sheet .sheet-header .sheet-title.data-v-d45cdca7{font-size:32rpx;font-weight:600;color:#333}.location-popup .location-sheet .sheet-header .close-btn.data-v-d45cdca7{width:60rpx;height:60rpx;display:flex;align-items:center;justify-content:center;background:#f0f0f0;border-radius:50%;transition:all .2s ease}.location-popup .location-sheet .sheet-header .close-btn.data-v-d45cdca7:active{background:#e0e0e0;transform:scale(.95)}.location-popup .location-sheet .sheet-header .close-btn .close-icon.data-v-d45cdca7{width:24rpx;height:24rpx}.location-popup .location-sheet .sheet-content.data-v-d45cdca7{padding:20rpx 0;height:60vh}@keyframes slideUp-d45cdca7{0%{transform:translateY(100%)}to{transform:translateY(0)}}.position-item.data-v-d45cdca7{display:flex;align-items:center;padding:24rpx 30rpx;border-bottom:1px solid #f8f9fa}.position-item .position-info.data-v-d45cdca7{flex:1}.position-item .position-info .position-name.data-v-d45cdca7{font-size:32rpx;font-weight:500;color:#333;margin-bottom:8rpx}.position-item .position-info .position-desc.data-v-d45cdca7{font-size:26rpx;color:#666;margin-bottom:8rpx}.position-item .position-info .position-location.data-v-d45cdca7{display:flex;align-items:center;margin-bottom:8rpx}.position-item .position-info .position-location .location-icon-small.data-v-d45cdca7{width:24rpx;height:24rpx;margin-right:8rpx}.position-item .position-info .position-location text.data-v-d45cdca7{font-size:24rpx;color:#999}.position-item .position-info .position-time.data-v-d45cdca7{font-size:24rpx;color:#999}.position-item .position-actions.data-v-d45cdca7{display:flex;flex-direction:column;align-items:flex-end;gap:8rpx}.position-item .position-actions .distance-info.data-v-d45cdca7{font-size:24rpx;color:#2196f3;font-weight:500}.position-item .position-actions .status-tag.data-v-d45cdca7{padding:8rpx 16rpx;border-radius:20rpx;font-size:22rpx}.position-item .position-actions .status-tag.online.data-v-d45cdca7{background:#e8f5e8;color:#4caf50}.position-item .position-actions .status-tag.offline.data-v-d45cdca7{background:#ffeaea;color:#f44336}.position-item .position-actions .nav-btn.data-v-d45cdca7{padding:12rpx 20rpx;background:#2196f3;border-radius:20rpx;font-size:24rpx;color:#fff}.empty-state.data-v-d45cdca7{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:80rpx 0}.empty-state .empty-icon.data-v-d45cdca7{width:120rpx;height:120rpx;margin-bottom:24rpx;opacity:.5}.empty-state .empty-text.data-v-d45cdca7{font-size:28rpx;color:#999}.status-tag.data-v-d45cdca7{padding:8rpx 16rpx;border-radius:20rpx;font-size:22rpx;width:-webkit-fit-content;width:fit-content}.status-tag.online.data-v-d45cdca7{background:#e8f5e8;color:#4caf50}.status-tag.offline.data-v-d45cdca7,.status-tag.wait.data-v-d45cdca7{background:#ffeaea;color:#f44336}.loading-overlay.data-v-d45cdca7{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.5);display:flex;align-items:center;justify-content:center;z-index:1000}.loading-overlay .loading-content.data-v-d45cdca7{background:#fff;border-radius:16rpx;padding:40rpx;display:flex;flex-direction:column;align-items:center}.loading-overlay .loading-content .loading-spinner.data-v-d45cdca7{width:60rpx;height:60rpx;border:4rpx solid #f0f0f0;border-top:4rpx solid #2196F3;border-radius:50%;animation:spin-d45cdca7 1s linear infinite;margin-bottom:24rpx}.loading-overlay .loading-content text.data-v-d45cdca7{font-size:28rpx;color:#666}@keyframes spin-d45cdca7{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.map-loading-placeholder.data-v-d45cdca7{position:absolute;top:0;left:0;right:0;bottom:0;background:#f6f7fb;display:flex;align-items:center;justify-content:center;z-index:100}.map-loading-placeholder .loading-content.data-v-d45cdca7{background:#fff;border-radius:16rpx;padding:40rpx;display:flex;flex-direction:column;align-items:center}.map-loading-placeholder .loading-content .loading-spinner.data-v-d45cdca7{width:60rpx;height:60rpx;border:4rpx solid #f0f0f0;border-top:4rpx solid #2196F3;border-radius:50%;animation:spin-d45cdca7 1s linear infinite;margin-bottom:24rpx}.map-loading-placeholder .loading-content text.data-v-d45cdca7{font-size:28rpx;color:#666}.phone-auth-popup.data-v-d45cdca7{position:fixed;top:0;left:0;right:0;bottom:0;z-index:2000;display:flex;align-items:center;justify-content:center}.phone-auth-popup .popup-mask.data-v-d45cdca7{position:absolute;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.5)}.phone-auth-popup .popup-content.data-v-d45cdca7{background:#fff;border-radius:24rpx;margin:0 60rpx;padding:40rpx;position:relative;z-index:1}.phone-auth-popup .popup-content .popup-header.data-v-d45cdca7{text-align:center;margin-bottom:30rpx}.phone-auth-popup .popup-content .popup-header .popup-title.data-v-d45cdca7{font-size:36rpx;font-weight:600;color:#333}.phone-auth-popup .popup-content .popup-body .auth-desc.data-v-d45cdca7{text-align:center;margin-bottom:40rpx}.phone-auth-popup .popup-content .popup-body .auth-desc text.data-v-d45cdca7{font-size:28rpx;color:#666;line-height:1.6}.phone-auth-popup .popup-content .popup-body .auth-btn.data-v-d45cdca7{width:100%;height:88rpx;background:#2196f3;border-radius:44rpx;border:none;color:#fff;font-size:32rpx;display:flex;align-items:center;justify-content:center;margin-bottom:20rpx}.phone-auth-popup .popup-content .popup-body .auth-cancel.data-v-d45cdca7{text-align:center;padding:20rpx}.phone-auth-popup .popup-content .popup-body .auth-cancel text.data-v-d45cdca7{font-size:28rpx;color:#999}.steps-guide.data-v-d45cdca7{align-items:center;align-content:center;background-color:rgba(255,255,255,.95);border-radius:20rpx;padding:0;box-shadow:0 8rpx 32rpx rgba(0,0,0,.12);z-index:10;-webkit-backdrop-filter:blur(15rpx);backdrop-filter:blur(15rpx);border:1rpx solid rgba(255,255,255,.9);overflow:hidden;width:92%;margin:0 auto 20rpx}.guide-header.data-v-d45cdca7{padding:20rpx 24rpx;background:linear-gradient(135deg,#2196f3,#1976d2);border-bottom:1rpx solid rgba(255,255,255,.2)}.guide-header .guide-title.data-v-d45cdca7{font-size:32rpx;font-weight:600;color:#fff;text-align:center;display:block}.steps-container.data-v-d45cdca7{display:flex;flex-direction:column;gap:16rpx;padding:24rpx;background-color:rgba(255,255,255,.9)}.step-item.data-v-d45cdca7{display:flex;align-items:flex-start;width:100%;padding:16rpx 0;border-bottom:1rpx solid rgba(0,0,0,.05)}.step-item.data-v-d45cdca7:last-child{border-bottom:none}.step-item .step-number.data-v-d45cdca7{width:40rpx;height:40rpx;background:linear-gradient(135deg,#2196f3,#1976d2);color:#fff;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:24rpx;font-weight:700;margin-right:20rpx;flex-shrink:0;box-shadow:0 4rpx 12rpx rgba(33,150,243,.4)}.step-item .step-content.data-v-d45cdca7{flex:1;padding-top:4rpx}.step-item .step-content .step-title.data-v-d45cdca7{font-size:30rpx;font-weight:600;color:#333;margin-bottom:8rpx;display:block}.step-item .step-content .step-desc.data-v-d45cdca7{font-size:26rpx;color:#666;display:block;line-height:1.5} diff --git a/unpackage/dist/build/mp-weixin/pages/my/index.js b/unpackage/dist/build/mp-weixin/pages/my/index.js index 12e99b8..7963423 100644 --- a/unpackage/dist/build/mp-weixin/pages/my/index.js +++ b/unpackage/dist/build/mp-weixin/pages/my/index.js @@ -1 +1 @@ -"use strict";const e=require("../../common/vendor.js"),a=require("../../common/assets.js"),o=require("../../util/index.js");if(!Array){e.resolveComponent("uni-icons")()}const n={__name:"index",setup(n){const t=e.ref({}),r=e.ref("0.00"),i=e.ref(""),s=e.ref(null),d=e.ref(!1);e.onMounted((()=>{l()}));const l=async()=>{try{if(!e.index.getStorageSync("token"))return void(await o.wxLogin());const a=await o.getUserInfo();console.log("User info response:",a),200==a.code&&(a.data.openId&&(i.value=a.data.openId,e.index.setStorageSync("openId",a.data.openId)),t.value={nickName:a.data.nickname,phone:a.data.phone,avatar:a.data.iconUrl,isAdmin:a.data.isAdmin},e.index.setStorageSync("userInfo",t.value),r.value=a.data.balanceAmount||"0.00")}catch(a){console.error("获取用户信息失败:",a),e.index.showToast({title:"获取用户信息失败",icon:"none"})}},c=a=>{e.index.navigateTo({url:a})},p=()=>{c("/pages/deposit/index")},u=()=>{t.value||v()},v=()=>{s.value&&(s.value.open(),d.value=!0)};return(o,n)=>{return e.e({a:t.value.avatar},t.value.avatar?{b:t.value.avatar}:{c:a._imports_0$1},{d:t.value.isAdmin},(t.value.isAdmin,{}),{e:t.value},t.value?{f:e.t(t.value.nickName),g:e.t(t.value.phone?(i=t.value.phone,i?i.replace(/(\d{3})\d{4}(\d{4})/,"$1****$2"):""):"未绑定手机号")}:{},{h:e.p({type:"right",size:"16",color:"#999"}),i:e.o(u),j:e.t(r.value),k:e.o(p),l:a._imports_1,m:e.p({type:"right",size:"16",color:"#999"}),n:e.o((e=>c("/pages/order/index"))),o:a._imports_2,p:e.p({type:"right",size:"16",color:"#999"}),q:e.o((e=>c("/pages/feedback/index"))),r:a._imports_3,s:e.p({type:"right",size:"16",color:"#999"}),t:e.o((e=>c("/pages/help/index")))});var i}}},t=e._export_sfc(n,[["__scopeId","data-v-6fbc3933"]]);wx.createPage(t); +"use strict";const e=require("../../common/vendor.js"),a=require("../../common/assets.js"),o=require("../../util/index.js");if(!Array){e.resolveComponent("uni-icons")()}const n={__name:"index",setup(n){const t=e.ref({}),r=e.ref("0.00"),i=e.ref(""),s=e.ref(null),d=e.ref(!1);e.onMounted((()=>{l()}));const l=async()=>{try{if(!e.index.getStorageSync("token"))return void(await o.wxLogin());const a=await o.getUserInfo();console.log("User info response:",a),200==a.code&&(a.data.openId&&(i.value=a.data.openId,e.index.setStorageSync("openId",a.data.openId)),t.value={nickName:a.data.nickname,phone:a.data.phone,avatar:a.data.iconUrl,isAdmin:a.data.isAdmin},e.index.setStorageSync("userInfo",t.value),r.value=a.data.balanceAmount||"0.00")}catch(a){console.error("获取用户信息失败:",a),e.index.showToast({title:"获取用户信息失败",icon:"none"})}},c=a=>{e.index.navigateTo({url:a})},p=()=>{c("/pages/deposit/index")},u=()=>{t.value||v()},v=()=>{s.value&&(s.value.open(),d.value=!0)};return(o,n)=>{return e.e({a:t.value.avatar},t.value.avatar?{b:t.value.avatar}:{c:a._imports_0$2},{d:t.value.isAdmin},(t.value.isAdmin,{}),{e:t.value},t.value?{f:e.t(t.value.nickName),g:e.t(t.value.phone?(i=t.value.phone,i?i.replace(/(\d{3})\d{4}(\d{4})/,"$1****$2"):""):"未绑定手机号")}:{},{h:e.p({type:"right",size:"16",color:"#999"}),i:e.o(u),j:e.t(r.value),k:e.o(p),l:a._imports_1,m:e.p({type:"right",size:"16",color:"#999"}),n:e.o((e=>c("/pages/order/index"))),o:a._imports_2,p:e.p({type:"right",size:"16",color:"#999"}),q:e.o((e=>c("/pages/feedback/index"))),r:a._imports_3,s:e.p({type:"right",size:"16",color:"#999"}),t:e.o((e=>c("/pages/help/index")))});var i}}},t=e._export_sfc(n,[["__scopeId","data-v-6fbc3933"]]);wx.createPage(t); diff --git a/unpackage/dist/build/mp-weixin/pages/order/details.js b/unpackage/dist/build/mp-weixin/pages/order/details.js index d1cdfeb..70b1f0d 100644 --- a/unpackage/dist/build/mp-weixin/pages/order/details.js +++ b/unpackage/dist/build/mp-weixin/pages/order/details.js @@ -1 +1 @@ -"use strict";const e=require("../../common/vendor.js"),a=require("../../common/assets.js"),t=require("../../config/user.js"),r={__name:"details",setup(r){const n=e.ref(""),o=e.ref({}),i=e.computed((()=>{switch(o.value.orderStatus){case"waiting_for_payment":return"待支付";case"in_used":default:return"使用中";case"used_done":return"已完成";case"order_cancelled":return"已取消"}}));e.onLoad((async a=>{a&&a.orderId?(n.value=a.orderId,await u()):(e.index.showToast({title:"订单信息不存在",icon:"none"}),setTimeout((()=>{e.index.navigateBack()}),1500))}));const u=async()=>{try{e.index.showLoading({title:"加载中"});const a=await t.queryById(n.value);if(200!==a.code||!a.data)throw new Error("获取订单详情失败");o.value=a.data,o.value.createTime&&(o.value.createTime=s(new Date(o.value.createTime))),o.value.startTime&&(o.value.startTime=s(new Date(o.value.startTime))),o.value.endTime&&(o.value.endTime=s(new Date(o.value.endTime))),e.index.hideLoading()}catch(a){e.index.hideLoading(),e.index.showToast({title:a.message||"获取订单详情失败",icon:"none"})}},s=e=>`${e.getFullYear()}-${(e.getMonth()+1).toString().padStart(2,"0")}-${e.getDate().toString().padStart(2,"0")} ${e.getHours().toString().padStart(2,"0")}:${e.getMinutes().toString().padStart(2,"0")}`,d=e=>{if(!e)return"";const a=parseInt(e);if(a<60)return`${a}分钟`;{const e=Math.floor(a/60),t=a%60;return t>0?`${e}小时${t}分钟`:`${e}小时`}};return(t,r)=>e.e({a:e.t(i.value),b:e.t(o.value.orderNo||"-"),c:e.t(o.value.deviceNo||"-"),d:"wx_score_pay"===o.value.payWay},"wx_score_pay"===o.value.payWay?{e:a._imports_0$2}:{},{f:e.t(o.value.startTime||"-"),g:o.value.endTime},o.value.endTime?{h:e.t(o.value.endTime)}:{},{i:o.value.phone},o.value.phone?{j:e.t(o.value.phone)}:{},{k:o.value.depositAmount},o.value.depositAmount?{l:e.t(o.value.depositAmount)}:{},{m:o.value.packageTime&&o.value.packagePrice},o.value.packageTime&&o.value.packagePrice?{n:e.t(o.value.packagePrice),o:e.t(d(o.value.packageTime))}:{},{p:e.t(o.value.payAmount||0)})}},n=e._export_sfc(r,[["__scopeId","data-v-f9b4f795"]]);wx.createPage(n); +"use strict";const e=require("../../common/vendor.js"),a=require("../../common/assets.js"),t=require("../../config/user.js"),r={__name:"details",setup(r){const n=e.ref(""),o=e.ref({}),i=e.computed((()=>{switch(o.value.orderStatus){case"waiting_for_payment":return"待支付";case"in_used":default:return"使用中";case"used_done":return"已完成";case"order_cancelled":return"已取消"}}));e.onLoad((async a=>{a&&a.orderId?(n.value=a.orderId,await u()):(e.index.showToast({title:"订单信息不存在",icon:"none"}),setTimeout((()=>{e.index.navigateBack()}),1500))}));const u=async()=>{try{e.index.showLoading({title:"加载中"});const a=await t.queryById(n.value);if(200!==a.code||!a.data)throw new Error("获取订单详情失败");o.value=a.data,o.value.createTime&&(o.value.createTime=s(new Date(o.value.createTime))),o.value.startTime&&(o.value.startTime=s(new Date(o.value.startTime))),o.value.endTime&&(o.value.endTime=s(new Date(o.value.endTime))),e.index.hideLoading()}catch(a){e.index.hideLoading(),e.index.showToast({title:a.message||"获取订单详情失败",icon:"none"})}},s=e=>`${e.getFullYear()}-${(e.getMonth()+1).toString().padStart(2,"0")}-${e.getDate().toString().padStart(2,"0")} ${e.getHours().toString().padStart(2,"0")}:${e.getMinutes().toString().padStart(2,"0")}`,d=e=>{if(!e)return"";const a=parseInt(e);if(a<60)return`${a}分钟`;{const e=Math.floor(a/60),t=a%60;return t>0?`${e}小时${t}分钟`:`${e}小时`}};return(t,r)=>e.e({a:e.t(i.value),b:e.t(o.value.orderNo||"-"),c:e.t(o.value.deviceNo||"-"),d:"wx_score_pay"===o.value.payWay},"wx_score_pay"===o.value.payWay?{e:a._imports_0$3}:{},{f:e.t(o.value.startTime||"-"),g:o.value.endTime},o.value.endTime?{h:e.t(o.value.endTime)}:{},{i:o.value.phone},o.value.phone?{j:e.t(o.value.phone)}:{},{k:o.value.depositAmount},o.value.depositAmount?{l:e.t(o.value.depositAmount)}:{},{m:o.value.packageTime&&o.value.packagePrice},o.value.packageTime&&o.value.packagePrice?{n:e.t(o.value.packagePrice),o:e.t(d(o.value.packageTime))}:{},{p:e.t(o.value.payAmount||0)})}},n=e._export_sfc(r,[["__scopeId","data-v-f9b4f795"]]);wx.createPage(n); diff --git a/unpackage/dist/build/mp-weixin/pages/order/index.js b/unpackage/dist/build/mp-weixin/pages/order/index.js index 094354b..3ecfebe 100644 --- a/unpackage/dist/build/mp-weixin/pages/order/index.js +++ b/unpackage/dist/build/mp-weixin/pages/order/index.js @@ -1 +1 @@ -"use strict";const e=require("../../common/vendor.js"),t=require("../../common/assets.js"),a=require("../../config/user.js"),s=require("../../config/url.js"),r={__name:"index",setup(r){const o=e.ref(0),n=e.ref([]),d=e.reactive({0:{text:"待支付",class:"status-waiting"},1:{text:"使用中",class:"status-using"},2:{text:"已完成",class:"status-finished"},3:{text:"已取消",class:"status-cancelled"},waiting_for_payment:{text:"待支付",class:"status-waiting"},in_used:{text:"使用中",class:"status-using"},used_done:{text:"已完成",class:"status-finished"},order_cancelled:{text:"已取消",class:"status-cancelled"}}),i=e.reactive([{text:"全部",status:[]},{text:"待付款",status:["waiting_for_payment"]},{text:"使用中",status:["in_used"]},{text:"已完成",status:["used_done"]},{text:"已取消",status:["order_cancelled"]}]);e.onLoad((async e=>{if(e&&e.orderId)try{const t=await a.queryById(e.orderId);if(200===t.code&&t.data){const e=t.data,a=e.startTime||e.createTime||"",s={orderNo:e.orderId,status:e.orderStatus,deviceId:e.deviceNo,payWay:e.payWay,startTime:a,endTime:e.endTime||"",amount:e.payAmount||e.actualDeviceAmount||"0.00"};n.value=[s,...n.value];const r=i.findIndex((t=>t.status.includes(e.orderStatus)));-1!==r&&c(r)}}catch(t){console.error("获取订单详情失败:",t)}await u()}));const c=async e=>{o.value=e;const t=i[e].status[0];await u(t)},u=async t=>{try{null!=t&&(t={orderStatus:t});const e=await a.getOrderList(t);200===e.code&&e.data&&e.data.records&&(n.value=e.data.records.map((e=>{const t=e.startTime||e.createTime||"";return{orderNo:e.orderNo,orderId:e.orderId,orderStatus:e.orderStatus,deviceId:e.deviceNo,payWay:e.payWay,startTime:t,endTime:e.endTime||"",amount:e.payAmount||e.actualDeviceAmount||"0.00"}})))}catch(s){console.error("获取订单列表失败:",s),e.index.showToast({title:"获取订单列表失败",icon:"none"})}};return(r,l)=>e.e({a:e.f(i,((t,a,s)=>({a:e.t(t.text),b:a,c:o.value===a?1:"",d:e.o((e=>c(a)),a)}))),b:0===n.value.length},(n.value.length,{}),{c:e.f(n.value,((r,n,c)=>{var l,m;return e.e({a:e.t(r.orderNo),b:e.t(null==(l=d[r.orderStatus])?void 0:l.text),c:e.n(null==(m=d[r.orderStatus])?void 0:m.class),d:e.t(r.deviceId),e:"wx_score_pay"==r.payWay},"wx_score_pay"==r.payWay?{f:t._imports_0$2}:{},{g:e.t(r.startTime),h:e.t(r.endTime||"-"),i:e.t(r.amount),j:"waiting_for_payment"===r.status||"waiting_for_payment"===r.orderStatus},"waiting_for_payment"===r.status||"waiting_for_payment"===r.orderStatus?{k:e.o((t=>(async t=>{try{e.index.showLoading({title:"处理中"});const r=await e.index.request({url:`${s.URL||"http://127.0.0.1:8080"}/app/wx-payment/create/${t.orderNo}`,method:"GET",header:{Authorization:"Bearer "+e.index.getStorageSync("token"),Clientid:e.index.getStorageSync("client_id")}});if(200!==r.statusCode||200!==r.data.code)throw new Error(r.data.msg||"创建支付订单失败");{const s=r.data.data;await e.index.requestPayment({...s,success:async()=>{e.index.showToast({title:"支付成功",icon:"success"});try{await a.updateUserBalance(t.orderId||t.orderNo)}catch(s){console.warn("更新用户余额失败:",s)}await u(i[o.value].status)},fail:e=>{throw console.error("支付失败:",e),new Error("支付失败,请重试")}})}e.index.hideLoading()}catch(r){e.index.hideLoading(),e.index.showToast({title:r.message||"支付失败",icon:"none"})}})(r)),n)}:{},{l:"waiting_for_payment"===r.status||"waiting_for_payment"===r.orderStatus},"waiting_for_payment"===r.status||"waiting_for_payment"===r.orderStatus?{m:e.o((t=>(async t=>{try{e.index.showModal({title:"确认取消",content:"确定要取消此订单吗?",success:async s=>{if(s.confirm){e.index.showLoading({title:"处理中"});const s=await a.cancelOrder({orderId:t.orderNo});if(!s)throw new Error(s.msg||"取消订单失败");e.index.hideLoading(),e.index.showToast({title:"订单已取消",icon:"success"}),await u()}}})}catch(s){e.index.hideLoading(),e.index.showToast({title:s.message||"取消订单失败",icon:"none"})}})(r)),n)}:{},{n:"in_used"==r.status||"in_used"==r.orderStatus},"in_used"==r.status||"in_used"==r.orderStatus?{o:e.o((t=>{return a=r.deviceId,s=r.orderId,console.log(s),void e.index.navigateTo({url:`/pages/return/index?deviceId=${a}&orderId=${s}`});var a,s}),n)}:{},{p:e.o((t=>(t=>{e.index.navigateTo({url:`/pages/order/details?orderId=${t.orderId||t.orderNo}`})})(r)),n),q:n})}))})}},o=e._export_sfc(r,[["__scopeId","data-v-57aa6fd9"]]);wx.createPage(o); +"use strict";const e=require("../../common/vendor.js"),t=require("../../common/assets.js"),a=require("../../config/user.js"),s=require("../../config/url.js"),r={__name:"index",setup(r){const o=e.ref(0),n=e.ref([]),d=e.reactive({0:{text:"待支付",class:"status-waiting"},1:{text:"使用中",class:"status-using"},2:{text:"已完成",class:"status-finished"},3:{text:"已取消",class:"status-cancelled"},waiting_for_payment:{text:"待支付",class:"status-waiting"},in_used:{text:"使用中",class:"status-using"},used_done:{text:"已完成",class:"status-finished"},order_cancelled:{text:"已取消",class:"status-cancelled"}}),i=e.reactive([{text:"全部",status:[]},{text:"待付款",status:["waiting_for_payment"]},{text:"使用中",status:["in_used"]},{text:"已完成",status:["used_done"]},{text:"已取消",status:["order_cancelled"]}]);e.onLoad((async e=>{if(e&&e.orderId)try{const t=await a.queryById(e.orderId);if(200===t.code&&t.data){const e=t.data,a=e.startTime||e.createTime||"",s={orderNo:e.orderId,status:e.orderStatus,deviceId:e.deviceNo,payWay:e.payWay,startTime:a,endTime:e.endTime||"",amount:e.payAmount||e.actualDeviceAmount||"0.00"};n.value=[s,...n.value];const r=i.findIndex((t=>t.status.includes(e.orderStatus)));-1!==r&&c(r)}}catch(t){console.error("获取订单详情失败:",t)}await u()}));const c=async e=>{o.value=e;const t=i[e].status[0];await u(t)},u=async t=>{try{null!=t&&(t={orderStatus:t});const e=await a.getOrderList(t);200===e.code&&e.data&&e.data.records&&(n.value=e.data.records.map((e=>{const t=e.startTime||e.createTime||"";return{orderNo:e.orderNo,orderId:e.orderId,orderStatus:e.orderStatus,deviceId:e.deviceNo,payWay:e.payWay,startTime:t,endTime:e.endTime||"",amount:e.payAmount||e.actualDeviceAmount||"0.00"}})))}catch(s){console.error("获取订单列表失败:",s),e.index.showToast({title:"获取订单列表失败",icon:"none"})}};return(r,l)=>e.e({a:e.f(i,((t,a,s)=>({a:e.t(t.text),b:a,c:o.value===a?1:"",d:e.o((e=>c(a)),a)}))),b:0===n.value.length},(n.value.length,{}),{c:e.f(n.value,((r,n,c)=>{var l,m;return e.e({a:e.t(r.orderNo),b:e.t(null==(l=d[r.orderStatus])?void 0:l.text),c:e.n(null==(m=d[r.orderStatus])?void 0:m.class),d:e.t(r.deviceId),e:"wx_score_pay"==r.payWay},"wx_score_pay"==r.payWay?{f:t._imports_0$3}:{},{g:e.t(r.startTime),h:e.t(r.endTime||"-"),i:e.t(r.amount),j:"waiting_for_payment"===r.status||"waiting_for_payment"===r.orderStatus},"waiting_for_payment"===r.status||"waiting_for_payment"===r.orderStatus?{k:e.o((t=>(async t=>{try{e.index.showLoading({title:"处理中"});const r=await e.index.request({url:`${s.URL||"http://127.0.0.1:8080"}/app/wx-payment/create/${t.orderNo}`,method:"GET",header:{Authorization:"Bearer "+e.index.getStorageSync("token"),Clientid:e.index.getStorageSync("client_id")}});if(200!==r.statusCode||200!==r.data.code)throw new Error(r.data.msg||"创建支付订单失败");{const s=r.data.data;await e.index.requestPayment({...s,success:async()=>{e.index.showToast({title:"支付成功",icon:"success"});try{await a.updateUserBalance(t.orderId||t.orderNo)}catch(s){console.warn("更新用户余额失败:",s)}await u(i[o.value].status)},fail:e=>{throw console.error("支付失败:",e),new Error("支付失败,请重试")}})}e.index.hideLoading()}catch(r){e.index.hideLoading(),e.index.showToast({title:r.message||"支付失败",icon:"none"})}})(r)),n)}:{},{l:"waiting_for_payment"===r.status||"waiting_for_payment"===r.orderStatus},"waiting_for_payment"===r.status||"waiting_for_payment"===r.orderStatus?{m:e.o((t=>(async t=>{try{e.index.showModal({title:"确认取消",content:"确定要取消此订单吗?",success:async s=>{if(s.confirm){e.index.showLoading({title:"处理中"});const s=await a.cancelOrder({orderId:t.orderNo});if(!s)throw new Error(s.msg||"取消订单失败");e.index.hideLoading(),e.index.showToast({title:"订单已取消",icon:"success"}),await u()}}})}catch(s){e.index.hideLoading(),e.index.showToast({title:s.message||"取消订单失败",icon:"none"})}})(r)),n)}:{},{n:"in_used"==r.status||"in_used"==r.orderStatus},"in_used"==r.status||"in_used"==r.orderStatus?{o:e.o((t=>{return a=r.deviceId,s=r.orderId,console.log(s),void e.index.navigateTo({url:`/pages/return/index?deviceId=${a}&orderId=${s}`});var a,s}),n)}:{},{p:e.o((t=>(t=>{e.index.navigateTo({url:`/pages/order/details?orderId=${t.orderId||t.orderNo}`})})(r)),n),q:n})}))})}},o=e._export_sfc(r,[["__scopeId","data-v-57aa6fd9"]]);wx.createPage(o); diff --git a/unpackage/dist/build/mp-weixin/pages/return/index.js b/unpackage/dist/build/mp-weixin/pages/return/index.js index b3e74ff..abb9368 100644 --- a/unpackage/dist/build/mp-weixin/pages/return/index.js +++ b/unpackage/dist/build/mp-weixin/pages/return/index.js @@ -1 +1 @@ -"use strict";const e=require("../../common/vendor.js"),r=require("../../config/user.js"),t=require("../../config/url.js"),o=require("../../common/assets.js"),s={data:()=>({deviceId:"",orderInfo:{orderId:"",startTime:"",_rawStartTime:"",usedTime:"0分钟",currentFee:"0.00",orderStatus:"in_used",payWay:"",orderNo:""},timer:null,statusCheckTimer:null,maxStatusChecks:30,currentStatusChecks:0,statusCheckInterval:5e3,isPageActive:!1}),onLoad(r){if(console.log("Return page loaded with options:",JSON.stringify(r)),this.isPageActive=!0,this.orderInfo.orderId=r.orderId||"",this.deviceId=r.deviceNo||r.deviceId||"",console.log(`初始化参数: orderId=${this.orderInfo.orderId}, deviceId=${this.deviceId}`),!this.orderInfo.orderId&&this.deviceId)this.getOrderByDevice();else if(this.orderInfo.orderId){this.getOrderDetails(),this.startTimer(),this.startStatusCheckTimer(),e.index.setStorageSync("activeOrderId",this.orderInfo.orderId);try{this.$orderMonitor?(this.$orderMonitor.removeOrder({orderId:this.orderInfo.orderId}),this.$orderMonitor.addOrder({orderId:this.orderInfo.orderId},"return"),console.log("订单已添加到监控队列:",this.orderInfo.orderId)):console.warn("$orderMonitor 未定义,无法添加订单到监控队列")}catch(t){console.error("添加订单到监控队列失败:",t)}}else e.index.showToast({title:"缺少订单信息",icon:"none"}),setTimeout((()=>{this.goToHome()}),1500);e.index.$on("orderCompleted",this.handleOrderCompleted)},onHide(){console.log("归还页面隐藏,清理计时器资源和监控服务"),this.isPageActive=!1,this.clearTimer(),this.clearStatusCheckTimer(),this.removeFromOrderMonitor()},onUnload(){console.log("归还页面卸载,清理所有资源"),this.isPageActive=!1,this.clearTimer(),this.clearStatusCheckTimer(),this.removeFromOrderMonitor(),e.index.$off("orderCompleted",this.handleOrderCompleted)},methods:{removeFromOrderMonitor(){if(this.orderInfo.orderId&&this.$orderMonitor)try{this.$orderMonitor.removeOrder({orderId:this.orderInfo.orderId}),console.log("订单已从监控队列移除:",this.orderInfo.orderId)}catch(e){console.error("从监控队列移除订单失败:",e)}},handleOrderCompleted(e){console.log("收到订单完成事件:",e),e.orderId!==this.orderInfo.orderId&&e.orderNo!==this.orderInfo.orderNo||this.showReturnSuccessModal(e)},showReturnSuccessModal(r){this.clearTimer(),this.clearStatusCheckTimer(),e.index.showModal({title:"归还成功",content:"风扇已归还成功,剩余押金将退还到您的账户",confirmText:"查看详情",success:t=>{t.confirm?e.index.redirectTo({url:`/pages/order/return-success?orderId=${r.orderId||this.orderInfo.orderId}`}):e.index.reLaunch({url:"/pages/index/index"})}})},getOrderStatusText(){return{waiting_for_payment:"待支付",payment_in_progress:"支付中",payment_successful:"支付成功",in_used:"使用中",payment_failed:"支付失败",order_cancelled:"订单取消",used_done:"订单完成",used_down:"订单完成"}[this.orderInfo.orderStatus]||"使用中"},async getOrderDetails(){if(this.isPageActive)try{if(!this.orderInfo.orderId)throw new Error("订单ID不能为空");const t=await r.queryById(this.orderInfo.orderId);if(200!==t.code||!t.data)throw new Error(t.msg||"获取订单详情失败");{const r=t.data;if(console.log("订单原始数据:",r),console.log("开始时间字段:",r.startTime,typeof r.startTime),r.orderStatus&&(this.orderInfo.orderStatus=r.orderStatus),r.payWay&&(this.orderInfo.payWay=r.payWay),r.orderStatus&&("used_done"===r.orderStatus||"used_down"===r.orderStatus))return e.index.$emit("orderCompleted",r),void this.showReturnSuccessModal(r);this.updateOrderInfo(r),console.log("更新后的开始时间:",this.orderInfo.startTime)}}catch(t){console.error("获取订单详情错误:",t),e.index.showToast({title:t.message||"获取订单信息失败",icon:"none"}),setTimeout((()=>{this.goToHome()}),1500)}finally{e.index.hideLoading()}else console.log("页面已不活跃,跳过订单详情请求")},formatTime:e=>`${e.getFullYear()}-${(e.getMonth()+1).toString().padStart(2,"0")}-${e.getDate().toString().padStart(2,"0")} ${e.getHours().toString().padStart(2,"0")}:${e.getMinutes().toString().padStart(2,"0")}`,updateOrderInfo(e){if(this.orderInfo.usedTime=e.usedTime||"0分钟",this.orderInfo.currentFee=e.currentFee||e.actualDeviceAmount||e.payAmount||"0.00",e.orderStatus&&(this.orderInfo.orderStatus=e.orderStatus),e.payWay&&(this.orderInfo.payWay=e.payWay),this.orderInfo._rawStartTime=e.startTime,e.startTime)try{console.log("API返回的开始时间:",e.startTime),this.orderInfo.startTime=e.startTime}catch(r){console.error("更新开始时间错误:",r),this.orderInfo.startTime="未知"}else console.warn("API返回的订单数据中没有startTime字段"),e.createTime?(console.log("使用createTime作为备选:",e.createTime),this.orderInfo.startTime=e.createTime):this.orderInfo.startTime="未知";e.orderNo&&(this.orderInfo.orderNo=e.orderNo),e.deviceNo&&!this.deviceId&&(this.deviceId=e.deviceNo)},startTimer(){this.clearTimer(),this.timer=setInterval((()=>{this.isPageActive?(console.log("执行定时更新订单信息"),this.getOrderDetails()):(console.log("页面已不活跃,停止计时器"),this.clearTimer())}),6e4),console.log("已启动使用时长更新计时器")},clearTimer(){this.timer&&(clearInterval(this.timer),this.timer=null,console.log("已清除使用时长更新计时器"))},clearStatusCheckTimer(){this.statusCheckTimer&&(clearInterval(this.statusCheckTimer),this.statusCheckTimer=null,console.log("已清除归还状态检查计时器"))},startStatusCheckTimer(){this.currentStatusChecks=0,this.clearStatusCheckTimer(),this.statusCheckTimer=setInterval((()=>{this.isPageActive?(this.currentStatusChecks++,console.log(`执行归还状态检查 (${this.currentStatusChecks}/${this.maxStatusChecks})`),this.checkReturnStatus(),this.currentStatusChecks>=this.maxStatusChecks&&(this.clearStatusCheckTimer(),e.index.showToast({title:"请手动刷新查看归还状态",icon:"none",duration:3e3}))):(console.log("页面已不活跃,停止状态检查计时器"),this.clearStatusCheckTimer())}),this.statusCheckInterval),console.log("已启动归还状态检查计时器")},async getOrderByDevice(){try{if(!this.deviceId)throw new Error("设备号不能为空");const r=await e.index.request({url:`${t.URL||"http://127.0.0.1:8080"}/app/order/inUse`,method:"GET",header:{Authorization:"Bearer "+e.index.getStorageSync("token"),Clientid:e.index.getStorageSync("client_id")}});if(console.log("通过设备号查询订单结果:",JSON.stringify(r)),200!==r.statusCode||200!==r.data.code||!r.data.data)throw new Error("未找到使用中的订单");{const e=r.data.data;console.log("使用中的订单:",e),this.orderInfo.orderId=e.orderId,e.orderStatus&&(this.orderInfo.orderStatus=e.orderStatus),e.payWay&&(this.orderInfo.payWay=e.payWay),e.startTime&&(console.log("inUse API返回的开始时间:",e.startTime),this.orderInfo.startTime=e.startTime),this.getOrderDetails(),this.startTimer(),this.startStatusCheckTimer()}}catch(r){console.error("通过设备号查询订单失败:",r),e.index.showToast({title:r.message||"获取订单信息失败",icon:"none"}),setTimeout((()=>{this.goToHome()}),1500)}finally{e.index.hideLoading()}},async checkReturnStatus(){try{this.isPageActive&&await this.getOrderDetails()}catch(e){console.error("检查归还状态失败:",e)}},goToHome(){e.index.reLaunch({url:"/pages/index/index"})}}};const i=e._export_sfc(s,[["render",function(r,t,s,i,d,a){return e.e({a:e.t(a.getOrderStatusText()),b:e.t(d.orderInfo.orderNo),c:e.t(d.deviceId),d:"wx_score_pay"==d.orderInfo.payWay},"wx_score_pay"==d.orderInfo.payWay?{e:o._imports_0$2}:{},{f:e.t(d.orderInfo.startTime),g:e.t(d.orderInfo.usedTime),h:e.t(d.orderInfo.currentFee)},{},{l:e.o(((...e)=>a.checkReturnStatus&&a.checkReturnStatus(...e))),m:e.o(((...e)=>a.goToHome&&a.goToHome(...e)))})}],["__scopeId","data-v-30d62b50"]]);wx.createPage(i); +"use strict";const e=require("../../common/vendor.js"),r=require("../../config/user.js"),t=require("../../config/url.js"),o=require("../../common/assets.js"),s={data:()=>({deviceId:"",orderInfo:{orderId:"",startTime:"",_rawStartTime:"",usedTime:"0分钟",currentFee:"0.00",orderStatus:"in_used",payWay:"",orderNo:""},timer:null,statusCheckTimer:null,maxStatusChecks:30,currentStatusChecks:0,statusCheckInterval:5e3,isPageActive:!1}),onLoad(r){if(console.log("Return page loaded with options:",JSON.stringify(r)),this.isPageActive=!0,this.orderInfo.orderId=r.orderId||"",this.deviceId=r.deviceNo||r.deviceId||"",console.log(`初始化参数: orderId=${this.orderInfo.orderId}, deviceId=${this.deviceId}`),!this.orderInfo.orderId&&this.deviceId)this.getOrderByDevice();else if(this.orderInfo.orderId){this.getOrderDetails(),this.startTimer(),this.startStatusCheckTimer(),e.index.setStorageSync("activeOrderId",this.orderInfo.orderId);try{this.$orderMonitor?(this.$orderMonitor.removeOrder({orderId:this.orderInfo.orderId}),this.$orderMonitor.addOrder({orderId:this.orderInfo.orderId},"return"),console.log("订单已添加到监控队列:",this.orderInfo.orderId)):console.warn("$orderMonitor 未定义,无法添加订单到监控队列")}catch(t){console.error("添加订单到监控队列失败:",t)}}else e.index.showToast({title:"缺少订单信息",icon:"none"}),setTimeout((()=>{this.goToHome()}),1500);e.index.$on("orderCompleted",this.handleOrderCompleted)},onHide(){console.log("归还页面隐藏,清理计时器资源和监控服务"),this.isPageActive=!1,this.clearTimer(),this.clearStatusCheckTimer(),this.removeFromOrderMonitor()},onUnload(){console.log("归还页面卸载,清理所有资源"),this.isPageActive=!1,this.clearTimer(),this.clearStatusCheckTimer(),this.removeFromOrderMonitor(),e.index.$off("orderCompleted",this.handleOrderCompleted)},methods:{removeFromOrderMonitor(){if(this.orderInfo.orderId&&this.$orderMonitor)try{this.$orderMonitor.removeOrder({orderId:this.orderInfo.orderId}),console.log("订单已从监控队列移除:",this.orderInfo.orderId)}catch(e){console.error("从监控队列移除订单失败:",e)}},handleOrderCompleted(e){console.log("收到订单完成事件:",e),e.orderId!==this.orderInfo.orderId&&e.orderNo!==this.orderInfo.orderNo||this.showReturnSuccessModal(e)},showReturnSuccessModal(r){this.clearTimer(),this.clearStatusCheckTimer(),e.index.showModal({title:"归还成功",content:"风扇已归还成功,剩余押金将退还到您的账户",confirmText:"查看详情",success:t=>{t.confirm?e.index.redirectTo({url:`/pages/order/return-success?orderId=${r.orderId||this.orderInfo.orderId}`}):e.index.reLaunch({url:"/pages/index/index"})}})},getOrderStatusText(){return{waiting_for_payment:"待支付",payment_in_progress:"支付中",payment_successful:"支付成功",in_used:"使用中",payment_failed:"支付失败",order_cancelled:"订单取消",used_done:"订单完成",used_down:"订单完成"}[this.orderInfo.orderStatus]||"使用中"},async getOrderDetails(){if(this.isPageActive)try{if(!this.orderInfo.orderId)throw new Error("订单ID不能为空");const t=await r.queryById(this.orderInfo.orderId);if(200!==t.code||!t.data)throw new Error(t.msg||"获取订单详情失败");{const r=t.data;if(console.log("订单原始数据:",r),console.log("开始时间字段:",r.startTime,typeof r.startTime),r.orderStatus&&(this.orderInfo.orderStatus=r.orderStatus),r.payWay&&(this.orderInfo.payWay=r.payWay),r.orderStatus&&("used_done"===r.orderStatus||"used_down"===r.orderStatus))return e.index.$emit("orderCompleted",r),void this.showReturnSuccessModal(r);this.updateOrderInfo(r),console.log("更新后的开始时间:",this.orderInfo.startTime)}}catch(t){console.error("获取订单详情错误:",t),e.index.showToast({title:t.message||"获取订单信息失败",icon:"none"}),setTimeout((()=>{this.goToHome()}),1500)}finally{e.index.hideLoading()}else console.log("页面已不活跃,跳过订单详情请求")},formatTime:e=>`${e.getFullYear()}-${(e.getMonth()+1).toString().padStart(2,"0")}-${e.getDate().toString().padStart(2,"0")} ${e.getHours().toString().padStart(2,"0")}:${e.getMinutes().toString().padStart(2,"0")}`,updateOrderInfo(e){if(this.orderInfo.usedTime=e.usedTime||"0分钟",this.orderInfo.currentFee=e.currentFee||e.actualDeviceAmount||e.payAmount||"0.00",e.orderStatus&&(this.orderInfo.orderStatus=e.orderStatus),e.payWay&&(this.orderInfo.payWay=e.payWay),this.orderInfo._rawStartTime=e.startTime,e.startTime)try{console.log("API返回的开始时间:",e.startTime),this.orderInfo.startTime=e.startTime}catch(r){console.error("更新开始时间错误:",r),this.orderInfo.startTime="未知"}else console.warn("API返回的订单数据中没有startTime字段"),e.createTime?(console.log("使用createTime作为备选:",e.createTime),this.orderInfo.startTime=e.createTime):this.orderInfo.startTime="未知";e.orderNo&&(this.orderInfo.orderNo=e.orderNo),e.deviceNo&&!this.deviceId&&(this.deviceId=e.deviceNo)},startTimer(){this.clearTimer(),this.timer=setInterval((()=>{this.isPageActive?(console.log("执行定时更新订单信息"),this.getOrderDetails()):(console.log("页面已不活跃,停止计时器"),this.clearTimer())}),6e4),console.log("已启动使用时长更新计时器")},clearTimer(){this.timer&&(clearInterval(this.timer),this.timer=null,console.log("已清除使用时长更新计时器"))},clearStatusCheckTimer(){this.statusCheckTimer&&(clearInterval(this.statusCheckTimer),this.statusCheckTimer=null,console.log("已清除归还状态检查计时器"))},startStatusCheckTimer(){this.currentStatusChecks=0,this.clearStatusCheckTimer(),this.statusCheckTimer=setInterval((()=>{this.isPageActive?(this.currentStatusChecks++,console.log(`执行归还状态检查 (${this.currentStatusChecks}/${this.maxStatusChecks})`),this.checkReturnStatus(),this.currentStatusChecks>=this.maxStatusChecks&&(this.clearStatusCheckTimer(),e.index.showToast({title:"请手动刷新查看归还状态",icon:"none",duration:3e3}))):(console.log("页面已不活跃,停止状态检查计时器"),this.clearStatusCheckTimer())}),this.statusCheckInterval),console.log("已启动归还状态检查计时器")},async getOrderByDevice(){try{if(!this.deviceId)throw new Error("设备号不能为空");const r=await e.index.request({url:`${t.URL||"http://127.0.0.1:8080"}/app/order/inUse`,method:"GET",header:{Authorization:"Bearer "+e.index.getStorageSync("token"),Clientid:e.index.getStorageSync("client_id")}});if(console.log("通过设备号查询订单结果:",JSON.stringify(r)),200!==r.statusCode||200!==r.data.code||!r.data.data)throw new Error("未找到使用中的订单");{const e=r.data.data;console.log("使用中的订单:",e),this.orderInfo.orderId=e.orderId,e.orderStatus&&(this.orderInfo.orderStatus=e.orderStatus),e.payWay&&(this.orderInfo.payWay=e.payWay),e.startTime&&(console.log("inUse API返回的开始时间:",e.startTime),this.orderInfo.startTime=e.startTime),this.getOrderDetails(),this.startTimer(),this.startStatusCheckTimer()}}catch(r){console.error("通过设备号查询订单失败:",r),e.index.showToast({title:r.message||"获取订单信息失败",icon:"none"}),setTimeout((()=>{this.goToHome()}),1500)}finally{e.index.hideLoading()}},async checkReturnStatus(){try{this.isPageActive&&await this.getOrderDetails()}catch(e){console.error("检查归还状态失败:",e)}},goToHome(){e.index.reLaunch({url:"/pages/index/index"})}}};const i=e._export_sfc(s,[["render",function(r,t,s,i,d,a){return e.e({a:e.t(a.getOrderStatusText()),b:e.t(d.orderInfo.orderNo),c:e.t(d.deviceId),d:"wx_score_pay"==d.orderInfo.payWay},"wx_score_pay"==d.orderInfo.payWay?{e:o._imports_0$3}:{},{f:e.t(d.orderInfo.startTime),g:e.t(d.orderInfo.usedTime),h:e.t(d.orderInfo.currentFee)},{},{l:e.o(((...e)=>a.checkReturnStatus&&a.checkReturnStatus(...e))),m:e.o(((...e)=>a.goToHome&&a.goToHome(...e)))})}],["__scopeId","data-v-30d62b50"]]);wx.createPage(i); diff --git a/unpackage/dist/build/mp-weixin/static/map.png b/unpackage/dist/build/mp-weixin/static/map.png new file mode 100644 index 0000000..775a079 Binary files /dev/null and b/unpackage/dist/build/mp-weixin/static/map.png differ diff --git a/unpackage/dist/build/mp-weixin/utils/amap.js b/unpackage/dist/build/mp-weixin/utils/amap.js deleted file mode 100644 index 996116c..0000000 --- a/unpackage/dist/build/mp-weixin/utils/amap.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";const t=require("../common/vendor.js");const e=new class{constructor(){this.key="4c513a688938fd89b88b296e867f66ec"}async regeocode(e,s){try{const a=await t.index.request({url:"https://restapi.amap.com/v3/geocode/regeo",method:"GET",data:{key:this.key,location:`${e},${s}`,poitype:"",radius:1e3,extensions:"base",batch:!1,roadlevel:0}});return 200===a.statusCode&&"1"===a.data.status?{success:!0,data:a.data.regeocode}:{success:!1,message:a.data.info||"逆地理编码失败"}}catch(a){return console.error("逆地理编码异常:",a),{success:!1,message:"网络异常"}}}async geocode(e,s=""){try{const a=await t.index.request({url:"https://restapi.amap.com/v3/geocode/geo",method:"GET",data:{key:this.key,address:e,city:s}});return 200===a.statusCode&&"1"===a.data.status&&a.data.geocodes.length>0?{success:!0,data:a.data.geocodes[0]}:{success:!1,message:a.data.info||"地理编码失败"}}catch(a){return console.error("地理编码异常:",a),{success:!1,message:"网络异常"}}}async searchPOI(e,s="",a=3e3,c=""){try{const o=await t.index.request({url:"https://restapi.amap.com/v3/place/text",method:"GET",data:{key:this.key,keywords:e,location:s,radius:a,city:c,citylimit:!0}});return 200===o.statusCode&&"1"===o.data.status?{success:!0,data:o.data.pois||[]}:{success:!1,message:o.data.info||"搜索失败"}}catch(o){return console.error("POI搜索异常:",o),{success:!1,message:"网络异常"}}}async getRoute(e,s,a=0){try{const c=await t.index.request({url:"https://restapi.amap.com/v3/direction/driving",method:"GET",data:{key:this.key,origin:e,destination:s,strategy:a,extensions:"base"}});return 200===c.statusCode&&"1"===c.data.status?{success:!0,data:c.data.route}:{success:!1,message:c.data.info||"路径规划失败"}}catch(c){return console.error("路径规划异常:",c),{success:!1,message:"网络异常"}}}calculateDistance(t,e,s,a){const c=t*Math.PI/180,o=s*Math.PI/180,r=c-o,n=e*Math.PI/180-a*Math.PI/180;let d=2*Math.asin(Math.sqrt(Math.pow(Math.sin(r/2),2)+Math.cos(c)*Math.cos(o)*Math.pow(Math.sin(n/2),2)));return d*=6378.137,d=Math.round(1e4*d)/1e4,d}};exports.AmapUtil=e; diff --git a/unpackage/dist/build/mp-weixin/utils/mapUtils.js b/unpackage/dist/build/mp-weixin/utils/mapUtils.js new file mode 100644 index 0000000..fbb2e41 --- /dev/null +++ b/unpackage/dist/build/mp-weixin/utils/mapUtils.js @@ -0,0 +1 @@ +"use strict";const e=require("../common/vendor.js"),t=function(){const t=310,o="请求参数信息有误",s=600,n="系统错误",i=1e3,r=200,l="https://apis.map.qq.com/ws/",a=l+"place/v1/search",c=l+"place/v1/suggestion",d=l+"geocoder/v1/",u=l+"distance/v1/",f={getLocationParam(e){if("string"==typeof e){const t=e.split(",");e=2===t.length?{latitude:e.split(",")[0],longitude:e.split(",")[1]}:{}}return e},checkLocation(e){const s=this.getLocationParam(e.location);if(!s||!s.latitude||!s.longitude){const s=this.buildErrorConfig(t,o+" location参数格式有误");return e.fail(s),e.complete(s),!1}return!0},buildErrorConfig:(e,t)=>({status:e,message:t}),polyfillParam(e){e.success=e.success||function(){},e.fail=e.fail||function(){},e.complete=e.complete||function(){}},locationProcess(t,o,s,n){const r=this;if(s=s||function(e){e.statusCode=i,t.fail(r.buildErrorConfig(i,e.errMsg))},n=n||function(e){e.statusCode==i&&t.complete(r.buildErrorConfig(i,e.errMsg))},t.location){if(r.checkLocation(t)){o(f.getLocationParam(t.location))}}else e.wx$1.getLocation({type:"gcj02",success:o,fail:s,complete:n})},buildWxRequestConfig(e,t,o){const l=this;return t.header={"content-type":"application/json"},t.method="GET",t.success=function(t){const s=t.data;0===s.status?l.handleData(e,s,o):e.fail(s)},t.fail=function(t){t.statusCode=i,e.fail(l.buildErrorConfig(i,t.errMsg))},t.complete=function(t){switch(+t.statusCode){case i:e.complete(l.buildErrorConfig(i,t.errMsg));break;case r:{const o=t.data;0===o.status?e.complete(o):e.complete(l.buildErrorConfig(o.status,o.message));break}default:e.complete(l.buildErrorConfig(s,n))}},t},handleData(e,t,o){if("search"==o){const o=t.data,s=[];for(let e=0;e{const i=s();i?i.reverseGeocoder({location:{latitude:t,longitude:e},success:(e,t)=>{const s=t.reverseGeocoderSimplify;o({success:!0,data:{formatted_address:s.address,addressComponent:{city:s.city,district:s.district,province:s.province,street:s.street,street_number:s.street_number}}})},fail:e=>{console.error("逆地理编码失败:",e),n({success:!1,message:e.message||"逆地理编码失败"})}}):n({success:!1,message:"腾讯地图SDK未初始化"})}))},exports.getUserLocation=function(){return new Promise(((t,o)=>{e.wx$1.getLocation({type:"gcj02",success:e=>{t({longitude:e.longitude,latitude:e.latitude})},fail:e=>{console.error("获取位置失败:",e),o(e)}})}))},exports.testDistanceCalculation=function(){const e=n(39.908823,116.39747,39.916527,116.397128);return console.log("天安门到故宫的距离:",e,"米"),console.log("转换为公里:",(e/1e3).toFixed(2),"公里"),e}; diff --git a/unpackage/dist/dev/.sourcemap/mp-weixin/common/assets.js.map b/unpackage/dist/dev/.sourcemap/mp-weixin/common/assets.js.map index 4623d9c..8ae3bcb 100644 --- a/unpackage/dist/dev/.sourcemap/mp-weixin/common/assets.js.map +++ b/unpackage/dist/dev/.sourcemap/mp-weixin/common/assets.js.map @@ -1 +1 @@ -{"version":3,"file":"assets.js","sources":["static/scan-icon.png","static/user-active.png","static/jl.png","static/complaint.png","static/hlep.png","static/images/wxpayflag.png","static/images/location-map.svg"],"sourcesContent":["export default \"__VITE_ASSET__b9d91c1a__\"","export default \"__VITE_ASSET__e217d500__\"","export default \"__VITE_ASSET__44ff4dfa__\"","export default \"__VITE_ASSET__d1c6bbb6__\"","export default \"__VITE_ASSET__f0ed8f64__\"","export default \"__VITE_ASSET__9081434a__\"","export default \"__VITE_ASSET__52e4836e__\""],"names":[],"mappings":";AAAA,MAAe,eAAA;ACAf,MAAe,eAAA;ACAf,MAAe,aAAA;ACAf,MAAe,aAAA;ACAf,MAAe,aAAA;ACAf,MAAe,eAAA;ACAf,MAAe,aAAA;;;;;;;;"} \ No newline at end of file +{"version":3,"file":"assets.js","sources":["static/logo.png","static/scan-icon.png","static/user-active.png","static/jl.png","static/complaint.png","static/hlep.png","static/images/wxpayflag.png","static/images/location-map.svg","static/map.png"],"sourcesContent":["export default \"__VITE_ASSET__fcf1191c__\"","export default \"__VITE_ASSET__b9d91c1a__\"","export default \"__VITE_ASSET__e217d500__\"","export default \"__VITE_ASSET__44ff4dfa__\"","export default \"__VITE_ASSET__d1c6bbb6__\"","export default \"__VITE_ASSET__f0ed8f64__\"","export default \"__VITE_ASSET__9081434a__\"","export default \"__VITE_ASSET__52e4836e__\"","export default \"__VITE_ASSET__8941e55a__\""],"names":[],"mappings":";AAAA,MAAe,eAAA;ACAf,MAAe,eAAA;ACAf,MAAe,eAAA;ACAf,MAAe,eAAA;ACAf,MAAe,aAAA;ACAf,MAAe,aAAA;ACAf,MAAe,eAAA;ACAf,MAAe,aAAA;ACAf,MAAe,aAAA;;;;;;;;;;"} \ No newline at end of file diff --git a/unpackage/dist/dev/.sourcemap/mp-weixin/common/qqmap-wx-jssdk.js.map b/unpackage/dist/dev/.sourcemap/mp-weixin/common/qqmap-wx-jssdk.js.map new file mode 100644 index 0000000..5cea544 --- /dev/null +++ b/unpackage/dist/dev/.sourcemap/mp-weixin/common/qqmap-wx-jssdk.js.map @@ -0,0 +1 @@ +{"version":3,"file":"qqmap-wx-jssdk.js","sources":["common/qqmap-wx-jssdk.js"],"sourcesContent":["/**\r\n * 微信小程序JavaScriptSDK\r\n * \r\n * @version 1.2\r\n * @date 2019-03-06\r\n */\r\n\r\nvar ERROR_CONF = {\r\n KEY_ERR: 311,\r\n KEY_ERR_MSG: 'key格式错误',\r\n PARAM_ERR: 310,\r\n PARAM_ERR_MSG: '请求参数信息有误',\r\n SYSTEM_ERR: 600,\r\n SYSTEM_ERR_MSG: '系统错误',\r\n WX_ERR_CODE: 1000,\r\n WX_OK_CODE: 200\r\n};\r\nvar BASE_URL = 'https://apis.map.qq.com/ws/';\r\nvar URL_SEARCH = BASE_URL + 'place/v1/search';\r\nvar URL_SUGGESTION = BASE_URL + 'place/v1/suggestion';\r\nvar URL_GET_GEOCODER = BASE_URL + 'geocoder/v1/';\r\nvar URL_CITY_LIST = BASE_URL + 'district/v1/list';\r\nvar URL_AREA_LIST = BASE_URL + 'district/v1/getchildren';\r\nvar URL_DISTANCE = BASE_URL + 'distance/v1/';\r\nvar URL_DIRECTION = BASE_URL + 'direction/v1/';\r\nvar MODE = {\r\n driving: 'driving',\r\n transit: 'transit'\r\n};\r\nvar EARTH_RADIUS = 6378136.49;\r\nvar Utils = {\r\n /**\r\n * md5加密方法\r\n * 版权所有©2011 Sebastian Tschan,https://blueimp.net\r\n */\r\n safeAdd(x, y) {\r\n var lsw = (x & 0xffff) + (y & 0xffff);\r\n var msw = (x >> 16) + (y >> 16) + (lsw >> 16);\r\n return (msw << 16) | (lsw & 0xffff);\r\n },\r\n bitRotateLeft(num, cnt) {\r\n return (num << cnt) | (num >>> (32 - cnt));\r\n },\r\n md5cmn(q, a, b, x, s, t) {\r\n return this.safeAdd(this.bitRotateLeft(this.safeAdd(this.safeAdd(a, q), this.safeAdd(x, t)), s), b);\r\n },\r\n md5ff(a, b, c, d, x, s, t) {\r\n return this.md5cmn((b & c) | (~b & d), a, b, x, s, t);\r\n },\r\n md5gg(a, b, c, d, x, s, t) {\r\n return this.md5cmn((b & d) | (c & ~d), a, b, x, s, t);\r\n },\r\n md5hh(a, b, c, d, x, s, t) {\r\n return this.md5cmn(b ^ c ^ d, a, b, x, s, t);\r\n },\r\n md5ii(a, b, c, d, x, s, t) {\r\n return this.md5cmn(c ^ (b | ~d), a, b, x, s, t);\r\n },\r\n binlMD5(x, len) {\r\n /* append padding */\r\n x[len >> 5] |= 0x80 << (len % 32);\r\n x[((len + 64) >>> 9 << 4) + 14] = len;\r\n\r\n var i;\r\n var olda;\r\n var oldb;\r\n var oldc;\r\n var oldd;\r\n var a = 1732584193;\r\n var b = -271733879;\r\n var c = -1732584194;\r\n var d = 271733878;\r\n\r\n for (i = 0; i < x.length; i += 16) {\r\n olda = a;\r\n oldb = b;\r\n oldc = c;\r\n oldd = d;\r\n\r\n a = this.md5ff(a, b, c, d, x[i], 7, -680876936);\r\n d = this.md5ff(d, a, b, c, x[i + 1], 12, -389564586);\r\n c = this.md5ff(c, d, a, b, x[i + 2], 17, 606105819);\r\n b = this.md5ff(b, c, d, a, x[i + 3], 22, -1044525330);\r\n a = this.md5ff(a, b, c, d, x[i + 4], 7, -176418897);\r\n d = this.md5ff(d, a, b, c, x[i + 5], 12, 1200080426);\r\n c = this.md5ff(c, d, a, b, x[i + 6], 17, -1473231341);\r\n b = this.md5ff(b, c, d, a, x[i + 7], 22, -45705983);\r\n a = this.md5ff(a, b, c, d, x[i + 8], 7, 1770035416);\r\n d = this.md5ff(d, a, b, c, x[i + 9], 12, -1958414417);\r\n c = this.md5ff(c, d, a, b, x[i + 10], 17, -42063);\r\n b = this.md5ff(b, c, d, a, x[i + 11], 22, -1990404162);\r\n a = this.md5ff(a, b, c, d, x[i + 12], 7, 1804603682);\r\n d = this.md5ff(d, a, b, c, x[i + 13], 12, -40341101);\r\n c = this.md5ff(c, d, a, b, x[i + 14], 17, -1502002290);\r\n b = this.md5ff(b, c, d, a, x[i + 15], 22, 1236535329);\r\n\r\n a = this.md5gg(a, b, c, d, x[i + 1], 5, -165796510);\r\n d = this.md5gg(d, a, b, c, x[i + 6], 9, -1069501632);\r\n c = this.md5gg(c, d, a, b, x[i + 11], 14, 643717713);\r\n b = this.md5gg(b, c, d, a, x[i], 20, -373897302);\r\n a = this.md5gg(a, b, c, d, x[i + 5], 5, -701558691);\r\n d = this.md5gg(d, a, b, c, x[i + 10], 9, 38016083);\r\n c = this.md5gg(c, d, a, b, x[i + 15], 14, -660478335);\r\n b = this.md5gg(b, c, d, a, x[i + 4], 20, -405537848);\r\n a = this.md5gg(a, b, c, d, x[i + 9], 5, 568446438);\r\n d = this.md5gg(d, a, b, c, x[i + 14], 9, -1019803690);\r\n c = this.md5gg(c, d, a, b, x[i + 3], 14, -187363961);\r\n b = this.md5gg(b, c, d, a, x[i + 8], 20, 1163531501);\r\n a = this.md5gg(a, b, c, d, x[i + 13], 5, -1444681467);\r\n d = this.md5gg(d, a, b, c, x[i + 2], 9, -51403784);\r\n c = this.md5gg(c, d, a, b, x[i + 7], 14, 1735328473);\r\n b = this.md5gg(b, c, d, a, x[i + 12], 20, -1926607734);\r\n\r\n a = this.md5hh(a, b, c, d, x[i + 5], 4, -378558);\r\n d = this.md5hh(d, a, b, c, x[i + 8], 11, -2022574463);\r\n c = this.md5hh(c, d, a, b, x[i + 11], 16, 1839030562);\r\n b = this.md5hh(b, c, d, a, x[i + 14], 23, -35309556);\r\n a = this.md5hh(a, b, c, d, x[i + 1], 4, -1530992060);\r\n d = this.md5hh(d, a, b, c, x[i + 4], 11, 1272893353);\r\n c = this.md5hh(c, d, a, b, x[i + 7], 16, -155497632);\r\n b = this.md5hh(b, c, d, a, x[i + 10], 23, -1094730640);\r\n a = this.md5hh(a, b, c, d, x[i + 13], 4, 681279174);\r\n d = this.md5hh(d, a, b, c, x[i], 11, -358537222);\r\n c = this.md5hh(c, d, a, b, x[i + 3], 16, -722521979);\r\n b = this.md5hh(b, c, d, a, x[i + 6], 23, 76029189);\r\n a = this.md5hh(a, b, c, d, x[i + 9], 4, -640364487);\r\n d = this.md5hh(d, a, b, c, x[i + 12], 11, -421815835);\r\n c = this.md5hh(c, d, a, b, x[i + 15], 16, 530742520);\r\n b = this.md5hh(b, c, d, a, x[i + 2], 23, -995338651);\r\n\r\n a = this.md5ii(a, b, c, d, x[i], 6, -198630844);\r\n d = this.md5ii(d, a, b, c, x[i + 7], 10, 1126891415);\r\n c = this.md5ii(c, d, a, b, x[i + 14], 15, -1416354905);\r\n b = this.md5ii(b, c, d, a, x[i + 5], 21, -57434055);\r\n a = this.md5ii(a, b, c, d, x[i + 12], 6, 1700485571);\r\n d = this.md5ii(d, a, b, c, x[i + 3], 10, -1894986606);\r\n c = this.md5ii(c, d, a, b, x[i + 10], 15, -1051523);\r\n b = this.md5ii(b, c, d, a, x[i + 1], 21, -2054922799);\r\n a = this.md5ii(a, b, c, d, x[i + 8], 6, 1873313359);\r\n d = this.md5ii(d, a, b, c, x[i + 15], 10, -30611744);\r\n c = this.md5ii(c, d, a, b, x[i + 6], 15, -1560198380);\r\n b = this.md5ii(b, c, d, a, x[i + 13], 21, 1309151649);\r\n a = this.md5ii(a, b, c, d, x[i + 4], 6, -145523070);\r\n d = this.md5ii(d, a, b, c, x[i + 11], 10, -1120210379);\r\n c = this.md5ii(c, d, a, b, x[i + 2], 15, 718787259);\r\n b = this.md5ii(b, c, d, a, x[i + 9], 21, -343485551);\r\n\r\n a = this.safeAdd(a, olda);\r\n b = this.safeAdd(b, oldb);\r\n c = this.safeAdd(c, oldc);\r\n d = this.safeAdd(d, oldd);\r\n }\r\n return [a, b, c, d];\r\n },\r\n binl2rstr(input) {\r\n var i;\r\n var output = '';\r\n var length32 = input.length * 32;\r\n for (i = 0; i < length32; i += 8) {\r\n output += String.fromCharCode((input[i >> 5] >>> (i % 32)) & 0xff);\r\n }\r\n return output;\r\n },\r\n rstr2binl(input) {\r\n var i;\r\n var output = [];\r\n output[(input.length >> 2) - 1] = undefined;\r\n for (i = 0; i < output.length; i += 1) {\r\n output[i] = 0;\r\n }\r\n var length8 = input.length * 8;\r\n for (i = 0; i < length8; i += 8) {\r\n output[i >> 5] |= (input.charCodeAt(i / 8) & 0xff) << (i % 32);\r\n }\r\n return output;\r\n },\r\n rstrMD5(s) {\r\n return this.binl2rstr(this.binlMD5(this.rstr2binl(s), s.length * 8));\r\n },\r\n rstrHMACMD5(key, data) {\r\n var i;\r\n var bkey = this.rstr2binl(key);\r\n var ipad = [];\r\n var opad = [];\r\n var hash;\r\n ipad[15] = opad[15] = undefined;\r\n if (bkey.length > 16) {\r\n bkey = this.binlMD5(bkey, key.length * 8);\r\n }\r\n for (i = 0; i < 16; i += 1) {\r\n ipad[i] = bkey[i] ^ 0x36363636;\r\n opad[i] = bkey[i] ^ 0x5c5c5c5c;\r\n }\r\n hash = this.binlMD5(ipad.concat(this.rstr2binl(data)), 512 + data.length * 8);\r\n return this.binl2rstr(this.binlMD5(opad.concat(hash), 512 + 128));\r\n },\r\n rstr2hex(input) {\r\n var hexTab = '0123456789abcdef';\r\n var output = '';\r\n var x;\r\n var i;\r\n for (i = 0; i < input.length; i += 1) {\r\n x = input.charCodeAt(i);\r\n output += hexTab.charAt((x >>> 4) & 0x0f) + hexTab.charAt(x & 0x0f);\r\n }\r\n return output;\r\n },\r\n str2rstrUTF8(input) {\r\n return unescape(encodeURIComponent(input));\r\n },\r\n rawMD5(s) {\r\n return this.rstrMD5(this.str2rstrUTF8(s));\r\n },\r\n hexMD5(s) {\r\n return this.rstr2hex(this.rawMD5(s));\r\n },\r\n rawHMACMD5(k, d) {\r\n return this.rstrHMACMD5(this.str2rstrUTF8(k), str2rstrUTF8(d));\r\n },\r\n hexHMACMD5(k, d) {\r\n return this.rstr2hex(this.rawHMACMD5(k, d));\r\n },\r\n\r\n md5(string, key, raw) {\r\n if (!key) {\r\n if (!raw) {\r\n return this.hexMD5(string);\r\n }\r\n return this.rawMD5(string);\r\n }\r\n if (!raw) {\r\n return this.hexHMACMD5(key, string);\r\n }\r\n return this.rawHMACMD5(key, string);\r\n },\r\n /**\r\n * 得到md5加密后的sig参数\r\n * @param {Object} requestParam 接口参数\r\n * @param {String} sk签名字符串\r\n * @param {String} featrue 方法名\r\n * @return 返回加密后的sig参数\r\n */\r\n getSig(requestParam, sk, feature, mode) {\r\n var sig = null;\r\n var requestArr = [];\r\n Object.keys(requestParam).sort().forEach(function(key){\r\n requestArr.push(key + '=' + requestParam[key]);\r\n });\r\n if (feature == 'search') {\r\n sig = '/ws/place/v1/search?' + requestArr.join('&') + sk;\r\n }\r\n if (feature == 'suggest') {\r\n sig = '/ws/place/v1/suggestion?' + requestArr.join('&') + sk;\r\n }\r\n if (feature == 'reverseGeocoder') {\r\n sig = '/ws/geocoder/v1/?' + requestArr.join('&') + sk;\r\n }\r\n if (feature == 'geocoder') {\r\n sig = '/ws/geocoder/v1/?' + requestArr.join('&') + sk;\r\n }\r\n if (feature == 'getCityList') {\r\n sig = '/ws/district/v1/list?' + requestArr.join('&') + sk;\r\n }\r\n if (feature == 'getDistrictByCityId') {\r\n sig = '/ws/district/v1/getchildren?' + requestArr.join('&') + sk;\r\n }\r\n if (feature == 'calculateDistance') {\r\n sig = '/ws/distance/v1/?' + requestArr.join('&') + sk;\r\n }\r\n if (feature == 'direction') {\r\n sig = '/ws/direction/v1/' + mode + '?' + requestArr.join('&') + sk;\r\n }\r\n sig = this.md5(sig);\r\n return sig;\r\n },\r\n /**\r\n * 得到终点query字符串\r\n * @param {Array|String} 检索数据\r\n */\r\n location2query(data) {\r\n if (typeof data == 'string') {\r\n return data;\r\n }\r\n var query = '';\r\n for (var i = 0; i < data.length; i++) {\r\n var d = data[i];\r\n if (!!query) {\r\n query += ';';\r\n }\r\n if (d.location) {\r\n query = query + d.location.lat + ',' + d.location.lng;\r\n }\r\n if (d.latitude && d.longitude) {\r\n query = query + d.latitude + ',' + d.longitude;\r\n }\r\n }\r\n return query;\r\n },\r\n\r\n /**\r\n * 计算角度\r\n */\r\n rad(d) {\r\n return d * Math.PI / 180.0;\r\n }, \r\n /**\r\n * 处理终点location数组\r\n * @return 返回终点数组\r\n */\r\n getEndLocation(location){\r\n var to = location.split(';');\r\n var endLocation = [];\r\n for (var i = 0; i < to.length; i++) {\r\n endLocation.push({\r\n lat: parseFloat(to[i].split(',')[0]),\r\n lng: parseFloat(to[i].split(',')[1])\r\n })\r\n }\r\n return endLocation;\r\n },\r\n\r\n /**\r\n * 计算两点间直线距离\r\n * @param a 表示纬度差\r\n * @param b 表示经度差\r\n * @return 返回的是距离,单位m\r\n */\r\n getDistance(latFrom, lngFrom, latTo, lngTo) {\r\n var radLatFrom = this.rad(latFrom);\r\n var radLatTo = this.rad(latTo);\r\n var a = radLatFrom - radLatTo;\r\n var b = this.rad(lngFrom) - this.rad(lngTo);\r\n var distance = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) + Math.cos(radLatFrom) * Math.cos(radLatTo) * Math.pow(Math.sin(b / 2), 2)));\r\n distance = distance * EARTH_RADIUS;\r\n distance = Math.round(distance * 10000) / 10000;\r\n return parseFloat(distance.toFixed(0));\r\n },\r\n /**\r\n * 使用微信接口进行定位\r\n */\r\n getWXLocation(success, fail, complete) {\r\n wx.getLocation({\r\n type: 'gcj02',\r\n success: success,\r\n fail: fail,\r\n complete: complete\r\n });\r\n },\r\n\r\n /**\r\n * 获取location参数\r\n */\r\n getLocationParam(location) {\r\n if (typeof location == 'string') {\r\n var locationArr = location.split(',');\r\n if (locationArr.length === 2) {\r\n location = {\r\n latitude: location.split(',')[0],\r\n longitude: location.split(',')[1]\r\n };\r\n } else {\r\n location = {};\r\n }\r\n }\r\n return location;\r\n },\r\n\r\n /**\r\n * 回调函数默认处理\r\n */\r\n polyfillParam(param) {\r\n param.success = param.success || function () { };\r\n param.fail = param.fail || function () { };\r\n param.complete = param.complete || function () { };\r\n },\r\n\r\n /**\r\n * 验证param对应的key值是否为空\r\n * \r\n * @param {Object} param 接口参数\r\n * @param {String} key 对应参数的key\r\n */\r\n checkParamKeyEmpty(param, key) {\r\n if (!param[key]) {\r\n var errconf = this.buildErrorConfig(ERROR_CONF.PARAM_ERR, ERROR_CONF.PARAM_ERR_MSG + key +'参数格式有误');\r\n param.fail(errconf);\r\n param.complete(errconf);\r\n return true;\r\n }\r\n return false;\r\n },\r\n\r\n /**\r\n * 验证参数中是否存在检索词keyword\r\n * \r\n * @param {Object} param 接口参数\r\n */\r\n checkKeyword(param){\r\n return !this.checkParamKeyEmpty(param, 'keyword');\r\n },\r\n\r\n /**\r\n * 验证location值\r\n * \r\n * @param {Object} param 接口参数\r\n */\r\n checkLocation(param) {\r\n var location = this.getLocationParam(param.location);\r\n if (!location || !location.latitude || !location.longitude) {\r\n var errconf = this.buildErrorConfig(ERROR_CONF.PARAM_ERR, ERROR_CONF.PARAM_ERR_MSG + ' location参数格式有误');\r\n param.fail(errconf);\r\n param.complete(errconf);\r\n return false;\r\n }\r\n return true;\r\n },\r\n\r\n /**\r\n * 构造错误数据结构\r\n * @param {Number} errCode 错误码\r\n * @param {Number} errMsg 错误描述\r\n */\r\n buildErrorConfig(errCode, errMsg) {\r\n return {\r\n status: errCode,\r\n message: errMsg\r\n };\r\n },\r\n\r\n /**\r\n * \r\n * 数据处理函数\r\n * 根据传入参数不同处理不同数据\r\n * @param {String} feature 功能名称\r\n * search 地点搜索\r\n * suggest关键词提示\r\n * reverseGeocoder逆地址解析\r\n * geocoder地址解析\r\n * getCityList获取城市列表:父集\r\n * getDistrictByCityId获取区县列表:子集\r\n * calculateDistance距离计算\r\n * @param {Object} param 接口参数\r\n * @param {Object} data 数据\r\n */\r\n handleData(param,data,feature){\r\n if (feature == 'search') {\r\n var searchResult = data.data;\r\n var searchSimplify = [];\r\n for (var i = 0; i < searchResult.length; i++) {\r\n searchSimplify.push({\r\n id: searchResult[i].id || null,\r\n title: searchResult[i].title || null,\r\n latitude: searchResult[i].location && searchResult[i].location.lat || null,\r\n longitude: searchResult[i].location && searchResult[i].location.lng || null,\r\n address: searchResult[i].address || null,\r\n category: searchResult[i].category || null,\r\n tel: searchResult[i].tel || null,\r\n adcode: searchResult[i].ad_info && searchResult[i].ad_info.adcode || null,\r\n city: searchResult[i].ad_info && searchResult[i].ad_info.city || null,\r\n district: searchResult[i].ad_info && searchResult[i].ad_info.district || null,\r\n province: searchResult[i].ad_info && searchResult[i].ad_info.province || null\r\n })\r\n }\r\n param.success(data, {\r\n searchResult: searchResult,\r\n searchSimplify: searchSimplify\r\n })\r\n } else if (feature == 'suggest') {\r\n var suggestResult = data.data;\r\n var suggestSimplify = [];\r\n for (var i = 0; i < suggestResult.length; i++) {\r\n suggestSimplify.push({\r\n adcode: suggestResult[i].adcode || null,\r\n address: suggestResult[i].address || null,\r\n category: suggestResult[i].category || null,\r\n city: suggestResult[i].city || null,\r\n district: suggestResult[i].district || null,\r\n id: suggestResult[i].id || null,\r\n latitude: suggestResult[i].location && suggestResult[i].location.lat || null,\r\n longitude: suggestResult[i].location && suggestResult[i].location.lng || null,\r\n province: suggestResult[i].province || null,\r\n title: suggestResult[i].title || null,\r\n type: suggestResult[i].type || null\r\n })\r\n }\r\n param.success(data, {\r\n suggestResult: suggestResult,\r\n suggestSimplify: suggestSimplify\r\n })\r\n } else if (feature == 'reverseGeocoder') {\r\n var reverseGeocoderResult = data.result;\r\n var reverseGeocoderSimplify = {\r\n address: reverseGeocoderResult.address || null,\r\n latitude: reverseGeocoderResult.location && reverseGeocoderResult.location.lat || null,\r\n longitude: reverseGeocoderResult.location && reverseGeocoderResult.location.lng || null,\r\n adcode: reverseGeocoderResult.ad_info && reverseGeocoderResult.ad_info.adcode || null,\r\n city: reverseGeocoderResult.address_component && reverseGeocoderResult.address_component.city || null,\r\n district: reverseGeocoderResult.address_component && reverseGeocoderResult.address_component.district || null,\r\n nation: reverseGeocoderResult.address_component && reverseGeocoderResult.address_component.nation || null,\r\n province: reverseGeocoderResult.address_component && reverseGeocoderResult.address_component.province || null,\r\n street: reverseGeocoderResult.address_component && reverseGeocoderResult.address_component.street || null,\r\n street_number: reverseGeocoderResult.address_component && reverseGeocoderResult.address_component.street_number || null,\r\n recommend: reverseGeocoderResult.formatted_addresses && reverseGeocoderResult.formatted_addresses.recommend || null,\r\n rough: reverseGeocoderResult.formatted_addresses && reverseGeocoderResult.formatted_addresses.rough || null\r\n };\r\n if (reverseGeocoderResult.pois) {//判断是否返回周边poi\r\n var pois = reverseGeocoderResult.pois;\r\n var poisSimplify = [];\r\n for (var i = 0;i < pois.length;i++) {\r\n poisSimplify.push({\r\n id: pois[i].id || null,\r\n title: pois[i].title || null,\r\n latitude: pois[i].location && pois[i].location.lat || null,\r\n longitude: pois[i].location && pois[i].location.lng || null,\r\n address: pois[i].address || null,\r\n category: pois[i].category || null,\r\n adcode: pois[i].ad_info && pois[i].ad_info.adcode || null,\r\n city: pois[i].ad_info && pois[i].ad_info.city || null,\r\n district: pois[i].ad_info && pois[i].ad_info.district || null,\r\n province: pois[i].ad_info && pois[i].ad_info.province || null\r\n })\r\n }\r\n param.success(data,{\r\n reverseGeocoderResult: reverseGeocoderResult,\r\n reverseGeocoderSimplify: reverseGeocoderSimplify,\r\n pois: pois,\r\n poisSimplify: poisSimplify\r\n })\r\n } else {\r\n param.success(data, {\r\n reverseGeocoderResult: reverseGeocoderResult,\r\n reverseGeocoderSimplify: reverseGeocoderSimplify\r\n })\r\n }\r\n } else if (feature == 'geocoder') {\r\n var geocoderResult = data.result;\r\n var geocoderSimplify = {\r\n title: geocoderResult.title || null,\r\n latitude: geocoderResult.location && geocoderResult.location.lat || null,\r\n longitude: geocoderResult.location && geocoderResult.location.lng || null,\r\n adcode: geocoderResult.ad_info && geocoderResult.ad_info.adcode || null,\r\n province: geocoderResult.address_components && geocoderResult.address_components.province || null,\r\n city: geocoderResult.address_components && geocoderResult.address_components.city || null,\r\n district: geocoderResult.address_components && geocoderResult.address_components.district || null,\r\n street: geocoderResult.address_components && geocoderResult.address_components.street || null,\r\n street_number: geocoderResult.address_components && geocoderResult.address_components.street_number || null,\r\n level: geocoderResult.level || null\r\n };\r\n param.success(data,{\r\n geocoderResult: geocoderResult,\r\n geocoderSimplify: geocoderSimplify\r\n });\r\n } else if (feature == 'getCityList') {\r\n var provinceResult = data.result[0];\r\n var cityResult = data.result[1];\r\n var districtResult = data.result[2];\r\n param.success(data,{\r\n provinceResult: provinceResult,\r\n cityResult: cityResult,\r\n districtResult: districtResult\r\n });\r\n } else if (feature == 'getDistrictByCityId') {\r\n var districtByCity = data.result[0];\r\n param.success(data, districtByCity);\r\n } else if (feature == 'calculateDistance') {\r\n var calculateDistanceResult = data.result.elements; \r\n var distance = [];\r\n for (var i = 0; i < calculateDistanceResult.length; i++){\r\n distance.push(calculateDistanceResult[i].distance);\r\n } \r\n param.success(data, {\r\n calculateDistanceResult: calculateDistanceResult,\r\n distance: distance\r\n });\r\n } else if (feature == 'direction') {\r\n var direction = data.result.routes;\r\n param.success(data,direction);\r\n } else {\r\n param.success(data);\r\n }\r\n },\r\n\r\n /**\r\n * 构造微信请求参数,公共属性处理\r\n * \r\n * @param {Object} param 接口参数\r\n * @param {Object} param 配置项\r\n * @param {String} feature 方法名\r\n */\r\n buildWxRequestConfig(param, options, feature) {\r\n var that = this;\r\n options.header = { \"content-type\": \"application/json\" };\r\n options.method = 'GET';\r\n options.success = function (res) {\r\n var data = res.data;\r\n if (data.status === 0) {\r\n that.handleData(param, data, feature);\r\n } else {\r\n param.fail(data);\r\n }\r\n };\r\n options.fail = function (res) {\r\n res.statusCode = ERROR_CONF.WX_ERR_CODE;\r\n param.fail(that.buildErrorConfig(ERROR_CONF.WX_ERR_CODE, res.errMsg));\r\n };\r\n options.complete = function (res) {\r\n var statusCode = +res.statusCode;\r\n switch(statusCode) {\r\n case ERROR_CONF.WX_ERR_CODE: {\r\n param.complete(that.buildErrorConfig(ERROR_CONF.WX_ERR_CODE, res.errMsg));\r\n break;\r\n }\r\n case ERROR_CONF.WX_OK_CODE: {\r\n var data = res.data;\r\n if (data.status === 0) {\r\n param.complete(data);\r\n } else {\r\n param.complete(that.buildErrorConfig(data.status, data.message));\r\n }\r\n break;\r\n }\r\n default:{\r\n param.complete(that.buildErrorConfig(ERROR_CONF.SYSTEM_ERR, ERROR_CONF.SYSTEM_ERR_MSG));\r\n }\r\n\r\n }\r\n };\r\n return options;\r\n },\r\n\r\n /**\r\n * 处理用户参数是否传入坐标进行不同的处理\r\n */\r\n locationProcess(param, locationsuccess, locationfail, locationcomplete) {\r\n var that = this;\r\n locationfail = locationfail || function (res) {\r\n res.statusCode = ERROR_CONF.WX_ERR_CODE;\r\n param.fail(that.buildErrorConfig(ERROR_CONF.WX_ERR_CODE, res.errMsg));\r\n };\r\n locationcomplete = locationcomplete || function (res) {\r\n if (res.statusCode == ERROR_CONF.WX_ERR_CODE) {\r\n param.complete(that.buildErrorConfig(ERROR_CONF.WX_ERR_CODE, res.errMsg));\r\n }\r\n };\r\n if (!param.location) {\r\n that.getWXLocation(locationsuccess, locationfail, locationcomplete);\r\n } else if (that.checkLocation(param)) {\r\n var location = Utils.getLocationParam(param.location);\r\n locationsuccess(location);\r\n }\r\n }\r\n};\r\n\r\n\r\nclass QQMapWX {\r\n\r\n /**\r\n * 构造函数\r\n * \r\n * @param {Object} options 接口参数,key 为必选参数\r\n */\r\n constructor(options) {\r\n if (!options.key) {\r\n throw Error('key值不能为空');\r\n }\r\n this.key = options.key;\r\n };\r\n\r\n /**\r\n * POI周边检索\r\n *\r\n * @param {Object} options 接口参数对象\r\n * \r\n * 参数对象结构可以参考\r\n * @see http://lbs.qq.com/webservice_v1/guide-search.html\r\n */\r\n search(options) {\r\n var that = this;\r\n options = options || {};\r\n\r\n Utils.polyfillParam(options);\r\n\r\n if (!Utils.checkKeyword(options)) {\r\n return;\r\n }\r\n\r\n var requestParam = {\r\n keyword: options.keyword,\r\n orderby: options.orderby || '_distance',\r\n page_size: options.page_size || 10,\r\n page_index: options.page_index || 1,\r\n output: 'json',\r\n key: that.key\r\n };\r\n\r\n if (options.address_format) {\r\n requestParam.address_format = options.address_format;\r\n }\r\n\r\n if (options.filter) {\r\n requestParam.filter = options.filter;\r\n }\r\n\r\n var distance = options.distance || \"1000\";\r\n var auto_extend = options.auto_extend || 1;\r\n var region = null;\r\n var rectangle = null;\r\n\r\n //判断城市限定参数\r\n if (options.region) {\r\n region = options.region;\r\n }\r\n\r\n //矩形限定坐标(暂时只支持字符串格式)\r\n if (options.rectangle) {\r\n rectangle = options.rectangle;\r\n }\r\n\r\n var locationsuccess = function (result) { \r\n if (region && !rectangle) {\r\n //城市限定参数拼接\r\n requestParam.boundary = \"region(\" + region + \",\" + auto_extend + \",\" + result.latitude + \",\" + result.longitude + \")\";\r\n if (options.sig) {\r\n requestParam.sig = Utils.getSig(requestParam, options.sig, 'search');\r\n }\r\n } else if (rectangle && !region) {\r\n //矩形搜索\r\n requestParam.boundary = \"rectangle(\" + rectangle + \")\";\r\n if (options.sig) {\r\n requestParam.sig = Utils.getSig(requestParam, options.sig, 'search');\r\n }\r\n } else {\r\n requestParam.boundary = \"nearby(\" + result.latitude + \",\" + result.longitude + \",\" + distance + \",\" + auto_extend + \")\";\r\n if (options.sig) {\r\n requestParam.sig = Utils.getSig(requestParam, options.sig, 'search');\r\n }\r\n } \r\n wx.request(Utils.buildWxRequestConfig(options, {\r\n url: URL_SEARCH,\r\n data: requestParam\r\n }, 'search'));\r\n };\r\n Utils.locationProcess(options, locationsuccess);\r\n };\r\n\r\n /**\r\n * sug模糊检索\r\n *\r\n * @param {Object} options 接口参数对象\r\n * \r\n * 参数对象结构可以参考\r\n * http://lbs.qq.com/webservice_v1/guide-suggestion.html\r\n */\r\n getSuggestion(options) {\r\n var that = this;\r\n options = options || {};\r\n Utils.polyfillParam(options);\r\n\r\n if (!Utils.checkKeyword(options)) {\r\n return;\r\n }\r\n\r\n var requestParam = {\r\n keyword: options.keyword,\r\n region: options.region || '全国',\r\n region_fix: options.region_fix || 0,\r\n policy: options.policy || 0,\r\n page_size: options.page_size || 10,//控制显示条数\r\n page_index: options.page_index || 1,//控制页数\r\n get_subpois : options.get_subpois || 0,//返回子地点\r\n output: 'json',\r\n key: that.key\r\n };\r\n //长地址\r\n if (options.address_format) {\r\n requestParam.address_format = options.address_format;\r\n }\r\n //过滤\r\n if (options.filter) {\r\n requestParam.filter = options.filter;\r\n }\r\n //排序\r\n if (options.location) {\r\n var locationsuccess = function (result) {\r\n requestParam.location = result.latitude + ',' + result.longitude;\r\n if (options.sig) {\r\n requestParam.sig = Utils.getSig(requestParam, options.sig, 'suggest');\r\n }\r\n wx.request(Utils.buildWxRequestConfig(options, {\r\n url: URL_SUGGESTION,\r\n data: requestParam\r\n }, \"suggest\")); \r\n };\r\n Utils.locationProcess(options, locationsuccess);\r\n } else {\r\n if (options.sig) {\r\n requestParam.sig = Utils.getSig(requestParam, options.sig, 'suggest');\r\n }\r\n wx.request(Utils.buildWxRequestConfig(options, {\r\n url: URL_SUGGESTION,\r\n data: requestParam\r\n }, \"suggest\")); \r\n } \r\n };\r\n\r\n /**\r\n * 逆地址解析\r\n *\r\n * @param {Object} options 接口参数对象\r\n * \r\n * 请求参数结构可以参考\r\n * http://lbs.qq.com/webservice_v1/guide-gcoder.html\r\n */\r\n reverseGeocoder(options) {\r\n var that = this;\r\n options = options || {};\r\n Utils.polyfillParam(options);\r\n var requestParam = {\r\n coord_type: options.coord_type || 5,\r\n get_poi: options.get_poi || 0,\r\n output: 'json',\r\n key: that.key\r\n };\r\n if (options.poi_options) {\r\n requestParam.poi_options = options.poi_options\r\n }\r\n\r\n var locationsuccess = function (result) {\r\n requestParam.location = result.latitude + ',' + result.longitude;\r\n if (options.sig) {\r\n requestParam.sig = Utils.getSig(requestParam, options.sig, 'reverseGeocoder');\r\n }\r\n wx.request(Utils.buildWxRequestConfig(options, {\r\n url: URL_GET_GEOCODER,\r\n data: requestParam\r\n }, 'reverseGeocoder'));\r\n };\r\n Utils.locationProcess(options, locationsuccess);\r\n };\r\n\r\n /**\r\n * 地址解析\r\n *\r\n * @param {Object} options 接口参数对象\r\n * \r\n * 请求参数结构可以参考\r\n * http://lbs.qq.com/webservice_v1/guide-geocoder.html\r\n */\r\n geocoder(options) {\r\n var that = this;\r\n options = options || {};\r\n Utils.polyfillParam(options);\r\n\r\n if (Utils.checkParamKeyEmpty(options, 'address')) {\r\n return;\r\n }\r\n\r\n var requestParam = {\r\n address: options.address,\r\n output: 'json',\r\n key: that.key\r\n };\r\n\r\n //城市限定\r\n if (options.region) {\r\n requestParam.region = options.region;\r\n }\r\n\r\n if (options.sig) {\r\n requestParam.sig = Utils.getSig(requestParam, options.sig, 'geocoder');\r\n }\r\n\r\n wx.request(Utils.buildWxRequestConfig(options, {\r\n url: URL_GET_GEOCODER,\r\n data: requestParam\r\n },'geocoder'));\r\n };\r\n\r\n\r\n /**\r\n * 获取城市列表\r\n *\r\n * @param {Object} options 接口参数对象\r\n * \r\n * 请求参数结构可以参考\r\n * http://lbs.qq.com/webservice_v1/guide-region.html\r\n */\r\n getCityList(options) {\r\n var that = this;\r\n options = options || {};\r\n Utils.polyfillParam(options);\r\n var requestParam = {\r\n output: 'json',\r\n key: that.key\r\n };\r\n\r\n if (options.sig) {\r\n requestParam.sig = Utils.getSig(requestParam, options.sig, 'getCityList');\r\n }\r\n\r\n wx.request(Utils.buildWxRequestConfig(options, {\r\n url: URL_CITY_LIST,\r\n data: requestParam\r\n },'getCityList'));\r\n };\r\n\r\n /**\r\n * 获取对应城市ID的区县列表\r\n *\r\n * @param {Object} options 接口参数对象\r\n * \r\n * 请求参数结构可以参考\r\n * http://lbs.qq.com/webservice_v1/guide-region.html\r\n */\r\n getDistrictByCityId(options) {\r\n var that = this;\r\n options = options || {};\r\n Utils.polyfillParam(options);\r\n\r\n if (Utils.checkParamKeyEmpty(options, 'id')) {\r\n return;\r\n }\r\n\r\n var requestParam = {\r\n id: options.id || '',\r\n output: 'json',\r\n key: that.key\r\n };\r\n\r\n if (options.sig) {\r\n requestParam.sig = Utils.getSig(requestParam, options.sig, 'getDistrictByCityId');\r\n }\r\n\r\n wx.request(Utils.buildWxRequestConfig(options, {\r\n url: URL_AREA_LIST,\r\n data: requestParam\r\n },'getDistrictByCityId'));\r\n };\r\n\r\n /**\r\n * 用于单起点到多终点的路线距离(非直线距离)计算:\r\n * 支持两种距离计算方式:步行和驾车。\r\n * 起点到终点最大限制直线距离10公里。\r\n *\r\n * 新增直线距离计算。\r\n * \r\n * @param {Object} options 接口参数对象\r\n * \r\n * 请求参数结构可以参考\r\n * http://lbs.qq.com/webservice_v1/guide-distance.html\r\n */\r\n calculateDistance(options) {\r\n var that = this;\r\n options = options || {};\r\n Utils.polyfillParam(options);\r\n\r\n if (Utils.checkParamKeyEmpty(options, 'to')) {\r\n return;\r\n }\r\n\r\n var requestParam = {\r\n mode: options.mode || 'walking',\r\n to: Utils.location2query(options.to),\r\n output: 'json',\r\n key: that.key\r\n };\r\n\r\n if (options.from) {\r\n options.location = options.from;\r\n }\r\n\r\n //计算直线距离\r\n if(requestParam.mode == 'straight'){ \r\n var locationsuccess = function (result) {\r\n var locationTo = Utils.getEndLocation(requestParam.to);//处理终点坐标\r\n var data = {\r\n message:\"query ok\",\r\n result:{\r\n elements:[]\r\n },\r\n status:0\r\n };\r\n for (var i = 0; i < locationTo.length; i++) {\r\n data.result.elements.push({//将坐标存入\r\n distance: Utils.getDistance(result.latitude, result.longitude, locationTo[i].lat, locationTo[i].lng),\r\n duration:0,\r\n from:{\r\n lat: result.latitude,\r\n lng:result.longitude\r\n },\r\n to:{\r\n lat: locationTo[i].lat,\r\n lng: locationTo[i].lng\r\n }\r\n }); \r\n }\r\n var calculateResult = data.result.elements;\r\n var distanceResult = [];\r\n for (var i = 0; i < calculateResult.length; i++) {\r\n distanceResult.push(calculateResult[i].distance);\r\n } \r\n return options.success(data,{\r\n calculateResult: calculateResult,\r\n distanceResult: distanceResult\r\n });\r\n };\r\n \r\n Utils.locationProcess(options, locationsuccess);\r\n } else {\r\n var locationsuccess = function (result) {\r\n requestParam.from = result.latitude + ',' + result.longitude;\r\n if (options.sig) {\r\n requestParam.sig = Utils.getSig(requestParam, options.sig, 'calculateDistance');\r\n }\r\n wx.request(Utils.buildWxRequestConfig(options, {\r\n url: URL_DISTANCE,\r\n data: requestParam\r\n },'calculateDistance'));\r\n };\r\n\r\n Utils.locationProcess(options, locationsuccess);\r\n } \r\n };\r\n\r\n /**\r\n * 路线规划:\r\n * \r\n * @param {Object} options 接口参数对象\r\n * \r\n * 请求参数结构可以参考\r\n * https://lbs.qq.com/webservice_v1/guide-road.html\r\n */\r\n direction(options) {\r\n var that = this;\r\n options = options || {};\r\n Utils.polyfillParam(options);\r\n\r\n if (Utils.checkParamKeyEmpty(options, 'to')) {\r\n return;\r\n }\r\n\r\n var requestParam = {\r\n output: 'json',\r\n key: that.key\r\n };\r\n\r\n //to格式处理\r\n if (typeof options.to == 'string') {\r\n requestParam.to = options.to;\r\n } else {\r\n requestParam.to = options.to.latitude + ',' + options.to.longitude;\r\n }\r\n //初始化局部请求域名\r\n var SET_URL_DIRECTION = null;\r\n //设置默认mode属性\r\n options.mode = options.mode || MODE.driving;\r\n\r\n //设置请求域名\r\n SET_URL_DIRECTION = URL_DIRECTION + options.mode;\r\n\r\n if (options.from) {\r\n options.location = options.from;\r\n }\r\n\r\n if (options.mode == MODE.driving) {\r\n if (options.from_poi) {\r\n requestParam.from_poi = options.from_poi;\r\n }\r\n if (options.heading) {\r\n requestParam.heading = options.heading;\r\n }\r\n if (options.speed) {\r\n requestParam.speed = options.speed;\r\n }\r\n if (options.accuracy) {\r\n requestParam.accuracy = options.accuracy;\r\n }\r\n if (options.road_type) {\r\n requestParam.road_type = options.road_type;\r\n }\r\n if (options.to_poi) {\r\n requestParam.to_poi = options.to_poi;\r\n }\r\n if (options.from_track) {\r\n requestParam.from_track = options.from_track;\r\n }\r\n if (options.waypoints) {\r\n requestParam.waypoints = options.waypoints;\r\n }\r\n if (options.policy) {\r\n requestParam.policy = options.policy;\r\n }\r\n if (options.plate_number) {\r\n requestParam.plate_number = options.plate_number;\r\n }\r\n }\r\n\r\n if (options.mode == MODE.transit) {\r\n if (options.departure_time) {\r\n requestParam.departure_time = options.departure_time;\r\n }\r\n if (options.policy) {\r\n requestParam.policy = options.policy;\r\n }\r\n } \r\n\r\n var locationsuccess = function (result) {\r\n requestParam.from = result.latitude + ',' + result.longitude;\r\n if (options.sig) {\r\n requestParam.sig = Utils.getSig(requestParam, options.sig, 'direction',options.mode);\r\n }\r\n wx.request(Utils.buildWxRequestConfig(options, {\r\n url: SET_URL_DIRECTION,\r\n data: requestParam\r\n }, 'direction'));\r\n };\r\n\r\n Utils.locationProcess(options, locationsuccess);\r\n }\r\n};\r\n\r\nmodule.exports = QQMapWX;"],"names":["wx"],"mappings":"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"} \ No newline at end of file diff --git a/unpackage/dist/dev/.sourcemap/mp-weixin/common/vendor.js.map b/unpackage/dist/dev/.sourcemap/mp-weixin/common/vendor.js.map index 4e3ca51..e29f45d 100644 --- a/unpackage/dist/dev/.sourcemap/mp-weixin/common/vendor.js.map +++ b/unpackage/dist/dev/.sourcemap/mp-weixin/common/vendor.js.map @@ -1 +1 @@ -{"version":3,"file":"vendor.js","sources":["E:/HBuilderX.4.24.2024072208/plugins/uniapp-cli-vite/node_modules/@vue/shared/dist/shared.esm-bundler.js","E:/HBuilderX.4.24.2024072208/plugins/uniapp-cli-vite/node_modules/@dcloudio/uni-i18n/dist/uni-i18n.es.js","E:/HBuilderX.4.24.2024072208/plugins/uniapp-cli-vite/node_modules/@dcloudio/uni-shared/dist/uni-shared.es.js","E:/HBuilderX.4.24.2024072208/plugins/uniapp-cli-vite/node_modules/@dcloudio/uni-mp-vue/dist/vue.runtime.esm.js","E:/HBuilderX.4.24.2024072208/plugins/uniapp-cli-vite/node_modules/@dcloudio/uni-mp-weixin/dist/uni.api.esm.js","E:/HBuilderX.4.24.2024072208/plugins/uniapp-cli-vite/node_modules/@dcloudio/uni-console/dist/mp.esm.js","E:/HBuilderX.4.24.2024072208/plugins/uniapp-cli-vite/node_modules/@dcloudio/uni-mp-weixin/dist/uni.mp.esm.js","node_modules/uview-ui/libs/function/deepClone.js","node_modules/uview-ui/libs/function/deepMerge.js","node_modules/uview-ui/libs/function/test.js","node_modules/uview-ui/libs/request/index.js","node_modules/uview-ui/libs/function/queryParams.js","node_modules/uview-ui/libs/function/route.js","node_modules/uview-ui/libs/function/timeFormat.js","node_modules/uview-ui/libs/function/timeFrom.js","node_modules/uview-ui/libs/function/colorGradient.js","node_modules/uview-ui/libs/function/guid.js","node_modules/uview-ui/libs/function/color.js","node_modules/uview-ui/libs/function/type2icon.js","node_modules/uview-ui/libs/function/randomArray.js","node_modules/uview-ui/libs/function/addUnit.js","node_modules/uview-ui/libs/function/random.js","node_modules/uview-ui/libs/function/trim.js","node_modules/uview-ui/libs/function/toast.js","node_modules/uview-ui/libs/function/getParent.js","node_modules/uview-ui/libs/function/$parent.js","node_modules/uview-ui/libs/function/sys.js","node_modules/uview-ui/libs/function/debounce.js","node_modules/uview-ui/libs/function/throttle.js","node_modules/uview-ui/libs/config/config.js","node_modules/uview-ui/libs/config/zIndex.js","node_modules/uview-ui/index.js","E:/HBuilderX.4.24.2024072208/plugins/uniapp-cli-vite/node_modules/@dcloudio/uni-app/dist/uni-app.es.js"],"sourcesContent":["/**\n* @vue/shared v3.4.21\n* (c) 2018-present Yuxi (Evan) You and Vue contributors\n* @license MIT\n**/\nfunction makeMap(str, expectsLowerCase) {\n const set = new Set(str.split(\",\"));\n return expectsLowerCase ? (val) => set.has(val.toLowerCase()) : (val) => set.has(val);\n}\n\nconst EMPTY_OBJ = !!(process.env.NODE_ENV !== \"production\") ? Object.freeze({}) : {};\nconst EMPTY_ARR = !!(process.env.NODE_ENV !== \"production\") ? Object.freeze([]) : [];\nconst NOOP = () => {\n};\nconst NO = () => false;\nconst isOn = (key) => key.charCodeAt(0) === 111 && key.charCodeAt(1) === 110 && // uppercase letter\n(key.charCodeAt(2) > 122 || key.charCodeAt(2) < 97);\nconst isModelListener = (key) => key.startsWith(\"onUpdate:\");\nconst extend = Object.assign;\nconst remove = (arr, el) => {\n const i = arr.indexOf(el);\n if (i > -1) {\n arr.splice(i, 1);\n }\n};\nconst hasOwnProperty = Object.prototype.hasOwnProperty;\nconst hasOwn = (val, key) => hasOwnProperty.call(val, key);\nconst isArray = Array.isArray;\nconst isMap = (val) => toTypeString(val) === \"[object Map]\";\nconst isSet = (val) => toTypeString(val) === \"[object Set]\";\nconst isDate = (val) => toTypeString(val) === \"[object Date]\";\nconst isRegExp = (val) => toTypeString(val) === \"[object RegExp]\";\nconst isFunction = (val) => typeof val === \"function\";\nconst isString = (val) => typeof val === \"string\";\nconst isSymbol = (val) => typeof val === \"symbol\";\nconst isObject = (val) => val !== null && typeof val === \"object\";\nconst isPromise = (val) => {\n return (isObject(val) || isFunction(val)) && isFunction(val.then) && isFunction(val.catch);\n};\nconst objectToString = Object.prototype.toString;\nconst toTypeString = (value) => objectToString.call(value);\nconst toRawType = (value) => {\n return toTypeString(value).slice(8, -1);\n};\nconst isPlainObject = (val) => toTypeString(val) === \"[object Object]\";\nconst isIntegerKey = (key) => isString(key) && key !== \"NaN\" && key[0] !== \"-\" && \"\" + parseInt(key, 10) === key;\nconst isReservedProp = /* @__PURE__ */ makeMap(\n // the leading comma is intentional so empty string \"\" is also included\n \",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted\"\n);\nconst isBuiltInDirective = /* @__PURE__ */ makeMap(\n \"bind,cloak,else-if,else,for,html,if,model,on,once,pre,show,slot,text,memo\"\n);\nconst cacheStringFunction = (fn) => {\n const cache = /* @__PURE__ */ Object.create(null);\n return (str) => {\n const hit = cache[str];\n return hit || (cache[str] = fn(str));\n };\n};\nconst camelizeRE = /-(\\w)/g;\nconst camelize = cacheStringFunction((str) => {\n return str.replace(camelizeRE, (_, c) => c ? c.toUpperCase() : \"\");\n});\nconst hyphenateRE = /\\B([A-Z])/g;\nconst hyphenate = cacheStringFunction(\n (str) => str.replace(hyphenateRE, \"-$1\").toLowerCase()\n);\nconst capitalize = cacheStringFunction((str) => {\n return str.charAt(0).toUpperCase() + str.slice(1);\n});\nconst toHandlerKey = cacheStringFunction((str) => {\n const s = str ? `on${capitalize(str)}` : ``;\n return s;\n});\nconst hasChanged = (value, oldValue) => !Object.is(value, oldValue);\nconst invokeArrayFns = (fns, arg) => {\n for (let i = 0; i < fns.length; i++) {\n fns[i](arg);\n }\n};\nconst def = (obj, key, value) => {\n Object.defineProperty(obj, key, {\n configurable: true,\n enumerable: false,\n value\n });\n};\nconst looseToNumber = (val) => {\n const n = parseFloat(val);\n return isNaN(n) ? val : n;\n};\nconst toNumber = (val) => {\n const n = isString(val) ? Number(val) : NaN;\n return isNaN(n) ? val : n;\n};\nlet _globalThis;\nconst getGlobalThis = () => {\n return _globalThis || (_globalThis = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : typeof global !== \"undefined\" ? global : {});\n};\nconst identRE = /^[_$a-zA-Z\\xA0-\\uFFFF][_$a-zA-Z0-9\\xA0-\\uFFFF]*$/;\nfunction genPropsAccessExp(name) {\n return identRE.test(name) ? `__props.${name}` : `__props[${JSON.stringify(name)}]`;\n}\n\nconst PatchFlags = {\n \"TEXT\": 1,\n \"1\": \"TEXT\",\n \"CLASS\": 2,\n \"2\": \"CLASS\",\n \"STYLE\": 4,\n \"4\": \"STYLE\",\n \"PROPS\": 8,\n \"8\": \"PROPS\",\n \"FULL_PROPS\": 16,\n \"16\": \"FULL_PROPS\",\n \"NEED_HYDRATION\": 32,\n \"32\": \"NEED_HYDRATION\",\n \"STABLE_FRAGMENT\": 64,\n \"64\": \"STABLE_FRAGMENT\",\n \"KEYED_FRAGMENT\": 128,\n \"128\": \"KEYED_FRAGMENT\",\n \"UNKEYED_FRAGMENT\": 256,\n \"256\": \"UNKEYED_FRAGMENT\",\n \"NEED_PATCH\": 512,\n \"512\": \"NEED_PATCH\",\n \"DYNAMIC_SLOTS\": 1024,\n \"1024\": \"DYNAMIC_SLOTS\",\n \"DEV_ROOT_FRAGMENT\": 2048,\n \"2048\": \"DEV_ROOT_FRAGMENT\",\n \"HOISTED\": -1,\n \"-1\": \"HOISTED\",\n \"BAIL\": -2,\n \"-2\": \"BAIL\"\n};\nconst PatchFlagNames = {\n [1]: `TEXT`,\n [2]: `CLASS`,\n [4]: `STYLE`,\n [8]: `PROPS`,\n [16]: `FULL_PROPS`,\n [32]: `NEED_HYDRATION`,\n [64]: `STABLE_FRAGMENT`,\n [128]: `KEYED_FRAGMENT`,\n [256]: `UNKEYED_FRAGMENT`,\n [512]: `NEED_PATCH`,\n [1024]: `DYNAMIC_SLOTS`,\n [2048]: `DEV_ROOT_FRAGMENT`,\n [-1]: `HOISTED`,\n [-2]: `BAIL`\n};\n\nconst ShapeFlags = {\n \"ELEMENT\": 1,\n \"1\": \"ELEMENT\",\n \"FUNCTIONAL_COMPONENT\": 2,\n \"2\": \"FUNCTIONAL_COMPONENT\",\n \"STATEFUL_COMPONENT\": 4,\n \"4\": \"STATEFUL_COMPONENT\",\n \"TEXT_CHILDREN\": 8,\n \"8\": \"TEXT_CHILDREN\",\n \"ARRAY_CHILDREN\": 16,\n \"16\": \"ARRAY_CHILDREN\",\n \"SLOTS_CHILDREN\": 32,\n \"32\": \"SLOTS_CHILDREN\",\n \"TELEPORT\": 64,\n \"64\": \"TELEPORT\",\n \"SUSPENSE\": 128,\n \"128\": \"SUSPENSE\",\n \"COMPONENT_SHOULD_KEEP_ALIVE\": 256,\n \"256\": \"COMPONENT_SHOULD_KEEP_ALIVE\",\n \"COMPONENT_KEPT_ALIVE\": 512,\n \"512\": \"COMPONENT_KEPT_ALIVE\",\n \"COMPONENT\": 6,\n \"6\": \"COMPONENT\"\n};\n\nconst SlotFlags = {\n \"STABLE\": 1,\n \"1\": \"STABLE\",\n \"DYNAMIC\": 2,\n \"2\": \"DYNAMIC\",\n \"FORWARDED\": 3,\n \"3\": \"FORWARDED\"\n};\nconst slotFlagsText = {\n [1]: \"STABLE\",\n [2]: \"DYNAMIC\",\n [3]: \"FORWARDED\"\n};\n\nconst GLOBALS_ALLOWED = \"Infinity,undefined,NaN,isFinite,isNaN,parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt,console,Error\";\nconst isGloballyAllowed = /* @__PURE__ */ makeMap(GLOBALS_ALLOWED);\nconst isGloballyWhitelisted = isGloballyAllowed;\n\nconst range = 2;\nfunction generateCodeFrame(source, start = 0, end = source.length) {\n let lines = source.split(/(\\r?\\n)/);\n const newlineSequences = lines.filter((_, idx) => idx % 2 === 1);\n lines = lines.filter((_, idx) => idx % 2 === 0);\n let count = 0;\n const res = [];\n for (let i = 0; i < lines.length; i++) {\n count += lines[i].length + (newlineSequences[i] && newlineSequences[i].length || 0);\n if (count >= start) {\n for (let j = i - range; j <= i + range || end > count; j++) {\n if (j < 0 || j >= lines.length)\n continue;\n const line = j + 1;\n res.push(\n `${line}${\" \".repeat(Math.max(3 - String(line).length, 0))}| ${lines[j]}`\n );\n const lineLength = lines[j].length;\n const newLineSeqLength = newlineSequences[j] && newlineSequences[j].length || 0;\n if (j === i) {\n const pad = start - (count - (lineLength + newLineSeqLength));\n const length = Math.max(\n 1,\n end > count ? lineLength - pad : end - start\n );\n res.push(` | ` + \" \".repeat(pad) + \"^\".repeat(length));\n } else if (j > i) {\n if (end > count) {\n const length = Math.max(Math.min(end - count, lineLength), 1);\n res.push(` | ` + \"^\".repeat(length));\n }\n count += lineLength + newLineSeqLength;\n }\n }\n break;\n }\n }\n return res.join(\"\\n\");\n}\n\nfunction normalizeStyle(value) {\n if (isArray(value)) {\n const res = {};\n for (let i = 0; i < value.length; i++) {\n const item = value[i];\n const normalized = isString(item) ? parseStringStyle(item) : normalizeStyle(item);\n if (normalized) {\n for (const key in normalized) {\n res[key] = normalized[key];\n }\n }\n }\n return res;\n } else if (isString(value) || isObject(value)) {\n return value;\n }\n}\nconst listDelimiterRE = /;(?![^(]*\\))/g;\nconst propertyDelimiterRE = /:([^]+)/;\nconst styleCommentRE = /\\/\\*[^]*?\\*\\//g;\nfunction parseStringStyle(cssText) {\n const ret = {};\n cssText.replace(styleCommentRE, \"\").split(listDelimiterRE).forEach((item) => {\n if (item) {\n const tmp = item.split(propertyDelimiterRE);\n tmp.length > 1 && (ret[tmp[0].trim()] = tmp[1].trim());\n }\n });\n return ret;\n}\nfunction stringifyStyle(styles) {\n let ret = \"\";\n if (!styles || isString(styles)) {\n return ret;\n }\n for (const key in styles) {\n const value = styles[key];\n const normalizedKey = key.startsWith(`--`) ? key : hyphenate(key);\n if (isString(value) || typeof value === \"number\") {\n ret += `${normalizedKey}:${value};`;\n }\n }\n return ret;\n}\nfunction normalizeClass(value) {\n let res = \"\";\n if (isString(value)) {\n res = value;\n } else if (isArray(value)) {\n for (let i = 0; i < value.length; i++) {\n const normalized = normalizeClass(value[i]);\n if (normalized) {\n res += normalized + \" \";\n }\n }\n } else if (isObject(value)) {\n for (const name in value) {\n if (value[name]) {\n res += name + \" \";\n }\n }\n }\n return res.trim();\n}\nfunction normalizeProps(props) {\n if (!props)\n return null;\n let { class: klass, style } = props;\n if (klass && !isString(klass)) {\n props.class = normalizeClass(klass);\n }\n if (style) {\n props.style = normalizeStyle(style);\n }\n return props;\n}\n\nconst HTML_TAGS = \"html,body,base,head,link,meta,style,title,address,article,aside,footer,header,hgroup,h1,h2,h3,h4,h5,h6,nav,section,div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,ruby,s,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,output,progress,select,textarea,details,dialog,menu,summary,template,blockquote,iframe,tfoot\";\nconst SVG_TAGS = \"svg,animate,animateMotion,animateTransform,circle,clipPath,color-profile,defs,desc,discard,ellipse,feBlend,feColorMatrix,feComponentTransfer,feComposite,feConvolveMatrix,feDiffuseLighting,feDisplacementMap,feDistantLight,feDropShadow,feFlood,feFuncA,feFuncB,feFuncG,feFuncR,feGaussianBlur,feImage,feMerge,feMergeNode,feMorphology,feOffset,fePointLight,feSpecularLighting,feSpotLight,feTile,feTurbulence,filter,foreignObject,g,hatch,hatchpath,image,line,linearGradient,marker,mask,mesh,meshgradient,meshpatch,meshrow,metadata,mpath,path,pattern,polygon,polyline,radialGradient,rect,set,solidcolor,stop,switch,symbol,text,textPath,title,tspan,unknown,use,view\";\nconst MATH_TAGS = \"annotation,annotation-xml,maction,maligngroup,malignmark,math,menclose,merror,mfenced,mfrac,mfraction,mglyph,mi,mlabeledtr,mlongdiv,mmultiscripts,mn,mo,mover,mpadded,mphantom,mprescripts,mroot,mrow,ms,mscarries,mscarry,msgroup,msline,mspace,msqrt,msrow,mstack,mstyle,msub,msubsup,msup,mtable,mtd,mtext,mtr,munder,munderover,none,semantics\";\nconst VOID_TAGS = \"area,base,br,col,embed,hr,img,input,link,meta,param,source,track,wbr\";\nconst isHTMLTag = /* @__PURE__ */ makeMap(HTML_TAGS);\nconst isSVGTag = /* @__PURE__ */ makeMap(SVG_TAGS);\nconst isMathMLTag = /* @__PURE__ */ makeMap(MATH_TAGS);\nconst isVoidTag = /* @__PURE__ */ makeMap(VOID_TAGS);\n\nconst specialBooleanAttrs = `itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly`;\nconst isSpecialBooleanAttr = /* @__PURE__ */ makeMap(specialBooleanAttrs);\nconst isBooleanAttr = /* @__PURE__ */ makeMap(\n specialBooleanAttrs + `,async,autofocus,autoplay,controls,default,defer,disabled,hidden,inert,loop,open,required,reversed,scoped,seamless,checked,muted,multiple,selected`\n);\nfunction includeBooleanAttr(value) {\n return !!value || value === \"\";\n}\nconst unsafeAttrCharRE = /[>/=\"'\\u0009\\u000a\\u000c\\u0020]/;\nconst attrValidationCache = {};\nfunction isSSRSafeAttrName(name) {\n if (attrValidationCache.hasOwnProperty(name)) {\n return attrValidationCache[name];\n }\n const isUnsafe = unsafeAttrCharRE.test(name);\n if (isUnsafe) {\n console.error(`unsafe attribute name: ${name}`);\n }\n return attrValidationCache[name] = !isUnsafe;\n}\nconst propsToAttrMap = {\n acceptCharset: \"accept-charset\",\n className: \"class\",\n htmlFor: \"for\",\n httpEquiv: \"http-equiv\"\n};\nconst isKnownHtmlAttr = /* @__PURE__ */ makeMap(\n `accept,accept-charset,accesskey,action,align,allow,alt,async,autocapitalize,autocomplete,autofocus,autoplay,background,bgcolor,border,buffered,capture,challenge,charset,checked,cite,class,code,codebase,color,cols,colspan,content,contenteditable,contextmenu,controls,coords,crossorigin,csp,data,datetime,decoding,default,defer,dir,dirname,disabled,download,draggable,dropzone,enctype,enterkeyhint,for,form,formaction,formenctype,formmethod,formnovalidate,formtarget,headers,height,hidden,high,href,hreflang,http-equiv,icon,id,importance,inert,integrity,ismap,itemprop,keytype,kind,label,lang,language,loading,list,loop,low,manifest,max,maxlength,minlength,media,min,multiple,muted,name,novalidate,open,optimum,pattern,ping,placeholder,poster,preload,radiogroup,readonly,referrerpolicy,rel,required,reversed,rows,rowspan,sandbox,scope,scoped,selected,shape,size,sizes,slot,span,spellcheck,src,srcdoc,srclang,srcset,start,step,style,summary,tabindex,target,title,translate,type,usemap,value,width,wrap`\n);\nconst isKnownSvgAttr = /* @__PURE__ */ makeMap(\n `xmlns,accent-height,accumulate,additive,alignment-baseline,alphabetic,amplitude,arabic-form,ascent,attributeName,attributeType,azimuth,baseFrequency,baseline-shift,baseProfile,bbox,begin,bias,by,calcMode,cap-height,class,clip,clipPathUnits,clip-path,clip-rule,color,color-interpolation,color-interpolation-filters,color-profile,color-rendering,contentScriptType,contentStyleType,crossorigin,cursor,cx,cy,d,decelerate,descent,diffuseConstant,direction,display,divisor,dominant-baseline,dur,dx,dy,edgeMode,elevation,enable-background,end,exponent,fill,fill-opacity,fill-rule,filter,filterRes,filterUnits,flood-color,flood-opacity,font-family,font-size,font-size-adjust,font-stretch,font-style,font-variant,font-weight,format,from,fr,fx,fy,g1,g2,glyph-name,glyph-orientation-horizontal,glyph-orientation-vertical,glyphRef,gradientTransform,gradientUnits,hanging,height,href,hreflang,horiz-adv-x,horiz-origin-x,id,ideographic,image-rendering,in,in2,intercept,k,k1,k2,k3,k4,kernelMatrix,kernelUnitLength,kerning,keyPoints,keySplines,keyTimes,lang,lengthAdjust,letter-spacing,lighting-color,limitingConeAngle,local,marker-end,marker-mid,marker-start,markerHeight,markerUnits,markerWidth,mask,maskContentUnits,maskUnits,mathematical,max,media,method,min,mode,name,numOctaves,offset,opacity,operator,order,orient,orientation,origin,overflow,overline-position,overline-thickness,panose-1,paint-order,path,pathLength,patternContentUnits,patternTransform,patternUnits,ping,pointer-events,points,pointsAtX,pointsAtY,pointsAtZ,preserveAlpha,preserveAspectRatio,primitiveUnits,r,radius,referrerPolicy,refX,refY,rel,rendering-intent,repeatCount,repeatDur,requiredExtensions,requiredFeatures,restart,result,rotate,rx,ry,scale,seed,shape-rendering,slope,spacing,specularConstant,specularExponent,speed,spreadMethod,startOffset,stdDeviation,stemh,stemv,stitchTiles,stop-color,stop-opacity,strikethrough-position,strikethrough-thickness,string,stroke,stroke-dasharray,stroke-dashoffset,stroke-linecap,stroke-linejoin,stroke-miterlimit,stroke-opacity,stroke-width,style,surfaceScale,systemLanguage,tabindex,tableValues,target,targetX,targetY,text-anchor,text-decoration,text-rendering,textLength,to,transform,transform-origin,type,u1,u2,underline-position,underline-thickness,unicode,unicode-bidi,unicode-range,units-per-em,v-alphabetic,v-hanging,v-ideographic,v-mathematical,values,vector-effect,version,vert-adv-y,vert-origin-x,vert-origin-y,viewBox,viewTarget,visibility,width,widths,word-spacing,writing-mode,x,x-height,x1,x2,xChannelSelector,xlink:actuate,xlink:arcrole,xlink:href,xlink:role,xlink:show,xlink:title,xlink:type,xmlns:xlink,xml:base,xml:lang,xml:space,y,y1,y2,yChannelSelector,z,zoomAndPan`\n);\nfunction isRenderableAttrValue(value) {\n if (value == null) {\n return false;\n }\n const type = typeof value;\n return type === \"string\" || type === \"number\" || type === \"boolean\";\n}\n\nconst escapeRE = /[\"'&<>]/;\nfunction escapeHtml(string) {\n const str = \"\" + string;\n const match = escapeRE.exec(str);\n if (!match) {\n return str;\n }\n let html = \"\";\n let escaped;\n let index;\n let lastIndex = 0;\n for (index = match.index; index < str.length; index++) {\n switch (str.charCodeAt(index)) {\n case 34:\n escaped = \""\";\n break;\n case 38:\n escaped = \"&\";\n break;\n case 39:\n escaped = \"'\";\n break;\n case 60:\n escaped = \"<\";\n break;\n case 62:\n escaped = \">\";\n break;\n default:\n continue;\n }\n if (lastIndex !== index) {\n html += str.slice(lastIndex, index);\n }\n lastIndex = index + 1;\n html += escaped;\n }\n return lastIndex !== index ? html + str.slice(lastIndex, index) : html;\n}\nconst commentStripRE = /^-?>||--!>| looseEqual(item, val));\n}\n\nconst toDisplayString = (val) => {\n return isString(val) ? val : val == null ? \"\" : isArray(val) || isObject(val) && (val.toString === objectToString || !isFunction(val.toString)) ? JSON.stringify(val, replacer, 2) : String(val);\n};\nconst replacer = (_key, val) => {\n if (val && val.__v_isRef) {\n return replacer(_key, val.value);\n } else if (isMap(val)) {\n return {\n [`Map(${val.size})`]: [...val.entries()].reduce(\n (entries, [key, val2], i) => {\n entries[stringifySymbol(key, i) + \" =>\"] = val2;\n return entries;\n },\n {}\n )\n };\n } else if (isSet(val)) {\n return {\n [`Set(${val.size})`]: [...val.values()].map((v) => stringifySymbol(v))\n };\n } else if (isSymbol(val)) {\n return stringifySymbol(val);\n } else if (isObject(val) && !isArray(val) && !isPlainObject(val)) {\n return String(val);\n }\n return val;\n};\nconst stringifySymbol = (v, i = \"\") => {\n var _a;\n return isSymbol(v) ? `Symbol(${(_a = v.description) != null ? _a : i})` : v;\n};\n\nexport { EMPTY_ARR, EMPTY_OBJ, NO, NOOP, PatchFlagNames, PatchFlags, ShapeFlags, SlotFlags, camelize, capitalize, def, escapeHtml, escapeHtmlComment, extend, genPropsAccessExp, generateCodeFrame, getGlobalThis, hasChanged, hasOwn, hyphenate, includeBooleanAttr, invokeArrayFns, isArray, isBooleanAttr, isBuiltInDirective, isDate, isFunction, isGloballyAllowed, isGloballyWhitelisted, isHTMLTag, isIntegerKey, isKnownHtmlAttr, isKnownSvgAttr, isMap, isMathMLTag, isModelListener, isObject, isOn, isPlainObject, isPromise, isRegExp, isRenderableAttrValue, isReservedProp, isSSRSafeAttrName, isSVGTag, isSet, isSpecialBooleanAttr, isString, isSymbol, isVoidTag, looseEqual, looseIndexOf, looseToNumber, makeMap, normalizeClass, normalizeProps, normalizeStyle, objectToString, parseStringStyle, propsToAttrMap, remove, slotFlagsText, stringifyStyle, toDisplayString, toHandlerKey, toNumber, toRawType, toTypeString };\n","const isObject = (val) => val !== null && typeof val === 'object';\nconst defaultDelimiters = ['{', '}'];\nclass BaseFormatter {\n constructor() {\n this._caches = Object.create(null);\n }\n interpolate(message, values, delimiters = defaultDelimiters) {\n if (!values) {\n return [message];\n }\n let tokens = this._caches[message];\n if (!tokens) {\n tokens = parse(message, delimiters);\n this._caches[message] = tokens;\n }\n return compile(tokens, values);\n }\n}\nconst RE_TOKEN_LIST_VALUE = /^(?:\\d)+/;\nconst RE_TOKEN_NAMED_VALUE = /^(?:\\w)+/;\nfunction parse(format, [startDelimiter, endDelimiter]) {\n const tokens = [];\n let position = 0;\n let text = '';\n while (position < format.length) {\n let char = format[position++];\n if (char === startDelimiter) {\n if (text) {\n tokens.push({ type: 'text', value: text });\n }\n text = '';\n let sub = '';\n char = format[position++];\n while (char !== undefined && char !== endDelimiter) {\n sub += char;\n char = format[position++];\n }\n const isClosed = char === endDelimiter;\n const type = RE_TOKEN_LIST_VALUE.test(sub)\n ? 'list'\n : isClosed && RE_TOKEN_NAMED_VALUE.test(sub)\n ? 'named'\n : 'unknown';\n tokens.push({ value: sub, type });\n }\n // else if (char === '%') {\n // // when found rails i18n syntax, skip text capture\n // if (format[position] !== '{') {\n // text += char\n // }\n // }\n else {\n text += char;\n }\n }\n text && tokens.push({ type: 'text', value: text });\n return tokens;\n}\nfunction compile(tokens, values) {\n const compiled = [];\n let index = 0;\n const mode = Array.isArray(values)\n ? 'list'\n : isObject(values)\n ? 'named'\n : 'unknown';\n if (mode === 'unknown') {\n return compiled;\n }\n while (index < tokens.length) {\n const token = tokens[index];\n switch (token.type) {\n case 'text':\n compiled.push(token.value);\n break;\n case 'list':\n compiled.push(values[parseInt(token.value, 10)]);\n break;\n case 'named':\n if (mode === 'named') {\n compiled.push(values[token.value]);\n }\n else {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(`Type of token '${token.type}' and format of value '${mode}' don't match!`);\n }\n }\n break;\n case 'unknown':\n if (process.env.NODE_ENV !== 'production') {\n console.warn(`Detect 'unknown' type of token!`);\n }\n break;\n }\n index++;\n }\n return compiled;\n}\n\nconst LOCALE_ZH_HANS = 'zh-Hans';\nconst LOCALE_ZH_HANT = 'zh-Hant';\nconst LOCALE_EN = 'en';\nconst LOCALE_FR = 'fr';\nconst LOCALE_ES = 'es';\nconst hasOwnProperty = Object.prototype.hasOwnProperty;\nconst hasOwn = (val, key) => hasOwnProperty.call(val, key);\nconst defaultFormatter = new BaseFormatter();\nfunction include(str, parts) {\n return !!parts.find((part) => str.indexOf(part) !== -1);\n}\nfunction startsWith(str, parts) {\n return parts.find((part) => str.indexOf(part) === 0);\n}\nfunction normalizeLocale(locale, messages) {\n if (!locale) {\n return;\n }\n locale = locale.trim().replace(/_/g, '-');\n if (messages && messages[locale]) {\n return locale;\n }\n locale = locale.toLowerCase();\n if (locale === 'chinese') {\n // 支付宝\n return LOCALE_ZH_HANS;\n }\n if (locale.indexOf('zh') === 0) {\n if (locale.indexOf('-hans') > -1) {\n return LOCALE_ZH_HANS;\n }\n if (locale.indexOf('-hant') > -1) {\n return LOCALE_ZH_HANT;\n }\n if (include(locale, ['-tw', '-hk', '-mo', '-cht'])) {\n return LOCALE_ZH_HANT;\n }\n return LOCALE_ZH_HANS;\n }\n let locales = [LOCALE_EN, LOCALE_FR, LOCALE_ES];\n if (messages && Object.keys(messages).length > 0) {\n locales = Object.keys(messages);\n }\n const lang = startsWith(locale, locales);\n if (lang) {\n return lang;\n }\n}\nclass I18n {\n constructor({ locale, fallbackLocale, messages, watcher, formater, }) {\n this.locale = LOCALE_EN;\n this.fallbackLocale = LOCALE_EN;\n this.message = {};\n this.messages = {};\n this.watchers = [];\n if (fallbackLocale) {\n this.fallbackLocale = fallbackLocale;\n }\n this.formater = formater || defaultFormatter;\n this.messages = messages || {};\n this.setLocale(locale || LOCALE_EN);\n if (watcher) {\n this.watchLocale(watcher);\n }\n }\n setLocale(locale) {\n const oldLocale = this.locale;\n this.locale = normalizeLocale(locale, this.messages) || this.fallbackLocale;\n if (!this.messages[this.locale]) {\n // 可能初始化时不存在\n this.messages[this.locale] = {};\n }\n this.message = this.messages[this.locale];\n // 仅发生变化时,通知\n if (oldLocale !== this.locale) {\n this.watchers.forEach((watcher) => {\n watcher(this.locale, oldLocale);\n });\n }\n }\n getLocale() {\n return this.locale;\n }\n watchLocale(fn) {\n const index = this.watchers.push(fn) - 1;\n return () => {\n this.watchers.splice(index, 1);\n };\n }\n add(locale, message, override = true) {\n const curMessages = this.messages[locale];\n if (curMessages) {\n if (override) {\n Object.assign(curMessages, message);\n }\n else {\n Object.keys(message).forEach((key) => {\n if (!hasOwn(curMessages, key)) {\n curMessages[key] = message[key];\n }\n });\n }\n }\n else {\n this.messages[locale] = message;\n }\n }\n f(message, values, delimiters) {\n return this.formater.interpolate(message, values, delimiters).join('');\n }\n t(key, locale, values) {\n let message = this.message;\n if (typeof locale === 'string') {\n locale = normalizeLocale(locale, this.messages);\n locale && (message = this.messages[locale]);\n }\n else {\n values = locale;\n }\n if (!hasOwn(message, key)) {\n console.warn(`Cannot translate the value of keypath ${key}. Use the value of keypath as default.`);\n return key;\n }\n return this.formater.interpolate(message[key], values).join('');\n }\n}\n\nfunction watchAppLocale(appVm, i18n) {\n // 需要保证 watch 的触发在组件渲染之前\n if (appVm.$watchLocale) {\n // vue2\n appVm.$watchLocale((newLocale) => {\n i18n.setLocale(newLocale);\n });\n }\n else {\n appVm.$watch(() => appVm.$locale, (newLocale) => {\n i18n.setLocale(newLocale);\n });\n }\n}\nfunction getDefaultLocale() {\n if (typeof uni !== 'undefined' && uni.getLocale) {\n return uni.getLocale();\n }\n // 小程序平台,uni 和 uni-i18n 互相引用,导致访问不到 uni,故在 global 上挂了 getLocale\n if (typeof global !== 'undefined' && global.getLocale) {\n return global.getLocale();\n }\n return LOCALE_EN;\n}\nfunction initVueI18n(locale, messages = {}, fallbackLocale, watcher) {\n // 兼容旧版本入参\n if (typeof locale !== 'string') {\n // ;[locale, messages] = [\n // messages as unknown as string,\n // locale as unknown as LocaleMessages,\n // ]\n // 暂不使用数组解构,uts编译器暂未支持。\n const options = [\n messages,\n locale,\n ];\n locale = options[0];\n messages = options[1];\n }\n if (typeof locale !== 'string') {\n // 因为小程序平台,uni-i18n 和 uni 互相引用,导致此时访问 uni 时,为 undefined\n locale = getDefaultLocale();\n }\n if (typeof fallbackLocale !== 'string') {\n fallbackLocale =\n (typeof __uniConfig !== 'undefined' && __uniConfig.fallbackLocale) ||\n LOCALE_EN;\n }\n const i18n = new I18n({\n locale,\n fallbackLocale,\n messages,\n watcher,\n });\n let t = (key, values) => {\n if (typeof getApp !== 'function') {\n // app view\n /* eslint-disable no-func-assign */\n t = function (key, values) {\n return i18n.t(key, values);\n };\n }\n else {\n let isWatchedAppLocale = false;\n t = function (key, values) {\n const appVm = getApp().$vm;\n // 可能$vm还不存在,比如在支付宝小程序中,组件定义较早,在props的default里使用了t()函数(如uni-goods-nav),此时app还未初始化\n // options: {\n // \ttype: Array,\n // \tdefault () {\n // \t\treturn [{\n // \t\t\ticon: 'shop',\n // \t\t\ttext: t(\"uni-goods-nav.options.shop\"),\n // \t\t}, {\n // \t\t\ticon: 'cart',\n // \t\t\ttext: t(\"uni-goods-nav.options.cart\")\n // \t\t}]\n // \t}\n // },\n if (appVm) {\n // 触发响应式\n appVm.$locale;\n if (!isWatchedAppLocale) {\n isWatchedAppLocale = true;\n watchAppLocale(appVm, i18n);\n }\n }\n return i18n.t(key, values);\n };\n }\n return t(key, values);\n };\n return {\n i18n,\n f(message, values, delimiters) {\n return i18n.f(message, values, delimiters);\n },\n t(key, values) {\n return t(key, values);\n },\n add(locale, message, override = true) {\n return i18n.add(locale, message, override);\n },\n watch(fn) {\n return i18n.watchLocale(fn);\n },\n getLocale() {\n return i18n.getLocale();\n },\n setLocale(newLocale) {\n return i18n.setLocale(newLocale);\n },\n };\n}\n\nconst isString = (val) => typeof val === 'string';\nlet formater;\nfunction hasI18nJson(jsonObj, delimiters) {\n if (!formater) {\n formater = new BaseFormatter();\n }\n return walkJsonObj(jsonObj, (jsonObj, key) => {\n const value = jsonObj[key];\n if (isString(value)) {\n if (isI18nStr(value, delimiters)) {\n return true;\n }\n }\n else {\n return hasI18nJson(value, delimiters);\n }\n });\n}\nfunction parseI18nJson(jsonObj, values, delimiters) {\n if (!formater) {\n formater = new BaseFormatter();\n }\n walkJsonObj(jsonObj, (jsonObj, key) => {\n const value = jsonObj[key];\n if (isString(value)) {\n if (isI18nStr(value, delimiters)) {\n jsonObj[key] = compileStr(value, values, delimiters);\n }\n }\n else {\n parseI18nJson(value, values, delimiters);\n }\n });\n return jsonObj;\n}\nfunction compileI18nJsonStr(jsonStr, { locale, locales, delimiters, }) {\n if (!isI18nStr(jsonStr, delimiters)) {\n return jsonStr;\n }\n if (!formater) {\n formater = new BaseFormatter();\n }\n const localeValues = [];\n Object.keys(locales).forEach((name) => {\n if (name !== locale) {\n localeValues.push({\n locale: name,\n values: locales[name],\n });\n }\n });\n localeValues.unshift({ locale, values: locales[locale] });\n try {\n return JSON.stringify(compileJsonObj(JSON.parse(jsonStr), localeValues, delimiters), null, 2);\n }\n catch (e) { }\n return jsonStr;\n}\nfunction isI18nStr(value, delimiters) {\n return value.indexOf(delimiters[0]) > -1;\n}\nfunction compileStr(value, values, delimiters) {\n return formater.interpolate(value, values, delimiters).join('');\n}\nfunction compileValue(jsonObj, key, localeValues, delimiters) {\n const value = jsonObj[key];\n if (isString(value)) {\n // 存在国际化\n if (isI18nStr(value, delimiters)) {\n jsonObj[key] = compileStr(value, localeValues[0].values, delimiters);\n if (localeValues.length > 1) {\n // 格式化国际化语言\n const valueLocales = (jsonObj[key + 'Locales'] = {});\n localeValues.forEach((localValue) => {\n valueLocales[localValue.locale] = compileStr(value, localValue.values, delimiters);\n });\n }\n }\n }\n else {\n compileJsonObj(value, localeValues, delimiters);\n }\n}\nfunction compileJsonObj(jsonObj, localeValues, delimiters) {\n walkJsonObj(jsonObj, (jsonObj, key) => {\n compileValue(jsonObj, key, localeValues, delimiters);\n });\n return jsonObj;\n}\nfunction walkJsonObj(jsonObj, walk) {\n if (Array.isArray(jsonObj)) {\n for (let i = 0; i < jsonObj.length; i++) {\n if (walk(jsonObj, i)) {\n return true;\n }\n }\n }\n else if (isObject(jsonObj)) {\n for (const key in jsonObj) {\n if (walk(jsonObj, key)) {\n return true;\n }\n }\n }\n return false;\n}\n\nfunction resolveLocale(locales) {\n return (locale) => {\n if (!locale) {\n return locale;\n }\n locale = normalizeLocale(locale) || locale;\n return resolveLocaleChain(locale).find((locale) => locales.indexOf(locale) > -1);\n };\n}\nfunction resolveLocaleChain(locale) {\n const chain = [];\n const tokens = locale.split('-');\n while (tokens.length) {\n chain.push(tokens.join('-'));\n tokens.pop();\n }\n return chain;\n}\n\nexport { BaseFormatter as Formatter, I18n, LOCALE_EN, LOCALE_ES, LOCALE_FR, LOCALE_ZH_HANS, LOCALE_ZH_HANT, compileI18nJsonStr, hasI18nJson, initVueI18n, isI18nStr, isString, normalizeLocale, parseI18nJson, resolveLocale };\n","import { isHTMLTag, isSVGTag, isVoidTag, isString, isFunction, isPlainObject, hyphenate, camelize, normalizeStyle as normalizeStyle$1, parseStringStyle, isArray, normalizeClass as normalizeClass$1, extend, capitalize } from '@vue/shared';\n\nconst BUILT_IN_TAG_NAMES = [\n 'ad',\n 'ad-content-page',\n 'ad-draw',\n 'audio',\n 'button',\n 'camera',\n 'canvas',\n 'checkbox',\n 'checkbox-group',\n 'cover-image',\n 'cover-view',\n 'editor',\n 'form',\n 'functional-page-navigator',\n 'icon',\n 'image',\n 'input',\n 'label',\n 'live-player',\n 'live-pusher',\n 'map',\n 'movable-area',\n 'movable-view',\n 'navigator',\n 'official-account',\n 'open-data',\n 'picker',\n 'picker-view',\n 'picker-view-column',\n 'progress',\n 'radio',\n 'radio-group',\n 'rich-text',\n 'scroll-view',\n 'slider',\n 'swiper',\n 'swiper-item',\n 'switch',\n 'text',\n 'textarea',\n 'video',\n 'view',\n 'web-view',\n 'location-picker',\n 'location-view',\n];\nconst BUILT_IN_TAGS = BUILT_IN_TAG_NAMES.map((tag) => 'uni-' + tag);\nconst TAGS = [\n 'app',\n 'layout',\n 'content',\n 'main',\n 'top-window',\n 'left-window',\n 'right-window',\n 'tabbar',\n 'page',\n 'page-head',\n 'page-wrapper',\n 'page-body',\n 'page-refresh',\n 'actionsheet',\n 'modal',\n 'toast',\n 'resize-sensor',\n 'shadow-root',\n].map((tag) => 'uni-' + tag);\nconst NVUE_BUILT_IN_TAGS = [\n 'svg',\n 'view',\n 'a',\n 'div',\n 'img',\n 'image',\n 'text',\n 'span',\n 'input',\n 'textarea',\n 'spinner',\n 'select',\n // slider 被自定义 u-slider 替代\n // 'slider',\n 'slider-neighbor',\n 'indicator',\n 'canvas',\n 'list',\n 'cell',\n 'header',\n 'loading',\n 'loading-indicator',\n 'refresh',\n 'scrollable',\n 'scroller',\n 'video',\n 'web',\n 'embed',\n 'tabbar',\n 'tabheader',\n 'datepicker',\n 'timepicker',\n 'marquee',\n 'countdown',\n 'dc-switch',\n 'waterfall',\n 'richtext',\n 'recycle-list',\n 'u-scalable',\n 'barcode',\n 'gcanvas',\n];\nconst UVUE_BUILT_IN_TAGS = [\n 'ad',\n 'ad-content-page',\n 'ad-draw',\n 'native-view',\n 'loading-indicator',\n 'list-view',\n 'list-item',\n 'swiper',\n 'swiper-item',\n 'rich-text',\n 'sticky-view',\n 'sticky-header',\n 'sticky-section',\n // 自定义\n 'uni-slider',\n // 原生实现\n 'button',\n 'nested-scroll-header',\n 'nested-scroll-body',\n 'waterflow',\n 'flow-item',\n 'share-element',\n 'cover-view',\n 'cover-image',\n];\nconst UVUE_WEB_BUILT_IN_TAGS = [\n 'list-view',\n 'list-item',\n 'sticky-section',\n 'sticky-header',\n 'cloud-db-element',\n].map((tag) => 'uni-' + tag);\nconst UVUE_IOS_BUILT_IN_TAGS = [\n 'scroll-view',\n 'web-view',\n 'slider',\n 'form',\n 'switch',\n];\nconst UVUE_HARMONY_BUILT_IN_TAGS = [\n // TODO 列出完整列表\n ...BUILT_IN_TAG_NAMES,\n 'volume-panel',\n];\nconst NVUE_U_BUILT_IN_TAGS = [\n 'u-text',\n 'u-image',\n 'u-input',\n 'u-textarea',\n 'u-video',\n 'u-web-view',\n 'u-slider',\n 'u-ad',\n 'u-ad-draw',\n 'u-rich-text',\n];\nconst UNI_UI_CONFLICT_TAGS = ['list-item'].map((tag) => 'uni-' + tag);\nfunction isBuiltInComponent(tag) {\n if (UNI_UI_CONFLICT_TAGS.indexOf(tag) !== -1) {\n return false;\n }\n // h5 平台会被转换为 v-uni-\n const realTag = 'uni-' + tag.replace('v-uni-', '');\n // TODO 区分x和非x\n return (BUILT_IN_TAGS.indexOf(realTag) !== -1 ||\n UVUE_WEB_BUILT_IN_TAGS.indexOf(realTag) !== -1);\n}\nfunction isH5CustomElement(tag, isX = false) {\n if (isX && UVUE_WEB_BUILT_IN_TAGS.indexOf(tag) !== -1) {\n return true;\n }\n return TAGS.indexOf(tag) !== -1 || BUILT_IN_TAGS.indexOf(tag) !== -1;\n}\nfunction isUniXElement(name) {\n return /^I?Uni.*Element(?:Impl)?$/.test(name);\n}\nfunction isH5NativeTag(tag) {\n return (tag !== 'head' &&\n (isHTMLTag(tag) || isSVGTag(tag)) &&\n !isBuiltInComponent(tag));\n}\nfunction isAppNativeTag(tag) {\n return isHTMLTag(tag) || isSVGTag(tag) || isBuiltInComponent(tag);\n}\nconst NVUE_CUSTOM_COMPONENTS = [\n 'ad',\n 'ad-draw',\n 'button',\n 'checkbox-group',\n 'checkbox',\n 'form',\n 'icon',\n 'label',\n 'movable-area',\n 'movable-view',\n 'navigator',\n 'picker',\n 'progress',\n 'radio-group',\n 'radio',\n 'rich-text',\n 'swiper-item',\n 'swiper',\n 'switch',\n 'slider',\n 'picker-view',\n 'picker-view-column',\n];\n// 内置的easycom组件\nconst UVUE_BUILT_IN_EASY_COMPONENTS = ['map', 'camera'];\nfunction isAppUVueBuiltInEasyComponent(tag) {\n return UVUE_BUILT_IN_EASY_COMPONENTS.includes(tag);\n}\n// 主要是指前端实现的组件列表\nconst UVUE_CUSTOM_COMPONENTS = [\n ...NVUE_CUSTOM_COMPONENTS,\n ...UVUE_BUILT_IN_EASY_COMPONENTS,\n];\nfunction isAppUVueNativeTag(tag) {\n // 前端实现的内置组件都会注册一个根组件\n if (tag.startsWith('uni-') && tag.endsWith('-element')) {\n return true;\n }\n if (UVUE_BUILT_IN_TAGS.includes(tag)) {\n return true;\n }\n if (UVUE_CUSTOM_COMPONENTS.includes(tag)) {\n return false;\n }\n if (isBuiltInComponent(tag)) {\n return true;\n }\n // u-text,u-video...\n if (NVUE_U_BUILT_IN_TAGS.includes(tag)) {\n return true;\n }\n return false;\n}\nfunction isAppIOSUVueNativeTag(tag) {\n // 前端实现的内置组件都会注册一个根组件\n if (tag.startsWith('uni-') && tag.endsWith('-element')) {\n return true;\n }\n if (NVUE_BUILT_IN_TAGS.includes(tag)) {\n return true;\n }\n if (UVUE_BUILT_IN_TAGS.includes(tag)) {\n return true;\n }\n if (UVUE_IOS_BUILT_IN_TAGS.includes(tag)) {\n return true;\n }\n return false;\n}\nfunction isAppHarmonyUVueNativeTag(tag) {\n // video 目前是easycom实现的\n if (tag === 'video' || tag === 'map') {\n return false;\n }\n // 前端实现的内置组件都会注册一个根组件\n if (tag.startsWith('uni-') && tag.endsWith('-element')) {\n return true;\n }\n if (NVUE_BUILT_IN_TAGS.includes(tag)) {\n return true;\n }\n if (UVUE_BUILT_IN_TAGS.includes(tag)) {\n return true;\n }\n if (UVUE_HARMONY_BUILT_IN_TAGS.includes(tag)) {\n return true;\n }\n return false;\n}\nfunction isAppNVueNativeTag(tag) {\n if (NVUE_BUILT_IN_TAGS.includes(tag)) {\n return true;\n }\n if (NVUE_CUSTOM_COMPONENTS.includes(tag)) {\n return false;\n }\n if (isBuiltInComponent(tag)) {\n return true;\n }\n // u-text,u-video...\n if (NVUE_U_BUILT_IN_TAGS.includes(tag)) {\n return true;\n }\n return false;\n}\nfunction isMiniProgramNativeTag(tag) {\n return isBuiltInComponent(tag);\n}\nfunction isMiniProgramUVueNativeTag(tag) {\n // 小程序平台内置的自定义元素,会被转换为 view\n if (tag.startsWith('uni-') && tag.endsWith('-element')) {\n return true;\n }\n return isBuiltInComponent(tag);\n}\nfunction createIsCustomElement(tags = []) {\n return function isCustomElement(tag) {\n return tags.includes(tag);\n };\n}\nfunction isComponentTag(tag) {\n return tag[0].toLowerCase() + tag.slice(1) === 'component';\n}\nconst COMPONENT_SELECTOR_PREFIX = 'uni-';\nconst COMPONENT_PREFIX = 'v-' + COMPONENT_SELECTOR_PREFIX;\n// TODO 是否还存在其他需要特殊处理的 void 标签?\nconst APP_VOID_TAGS = ['textarea'];\nfunction isAppVoidTag(tag) {\n return APP_VOID_TAGS.includes(tag) || isVoidTag(tag);\n}\n\nconst LINEFEED = '\\n';\nconst NAVBAR_HEIGHT = 44;\nconst TABBAR_HEIGHT = 50;\nconst ON_REACH_BOTTOM_DISTANCE = 50;\nconst RESPONSIVE_MIN_WIDTH = 768;\nconst UNI_STORAGE_LOCALE = 'UNI_LOCALE';\n// quickapp-webview 不能使用 default 作为插槽名称\nconst SLOT_DEFAULT_NAME = 'd';\nconst COMPONENT_NAME_PREFIX = 'VUni';\nconst I18N_JSON_DELIMITERS = ['%', '%'];\nconst PRIMARY_COLOR = '#007aff';\nconst SELECTED_COLOR = '#0062cc'; // 选中的颜色,如选项卡默认的选中颜色\nconst BACKGROUND_COLOR = '#f7f7f7'; // 背景色,如标题栏默认背景色\nconst UNI_SSR = '__uniSSR';\nconst UNI_SSR_TITLE = 'title';\nconst UNI_SSR_STORE = 'store';\nconst UNI_SSR_DATA = 'data';\nconst UNI_SSR_GLOBAL_DATA = 'globalData';\nconst SCHEME_RE = /^([a-z-]+:)?\\/\\//i;\nconst DATA_RE = /^data:.*,.*/;\nconst WEB_INVOKE_APPSERVICE = 'WEB_INVOKE_APPSERVICE';\nconst WXS_PROTOCOL = 'wxs://';\nconst JSON_PROTOCOL = 'json://';\nconst WXS_MODULES = 'wxsModules';\nconst RENDERJS_MODULES = 'renderjsModules';\n// lifecycle\n// App and Page\nconst ON_SHOW = 'onShow';\nconst ON_HIDE = 'onHide';\n//App\nconst ON_LAUNCH = 'onLaunch';\nconst ON_ERROR = 'onError';\nconst ON_THEME_CHANGE = 'onThemeChange';\nconst OFF_THEME_CHANGE = 'offThemeChange';\nconst ON_HOST_THEME_CHANGE = 'onHostThemeChange';\nconst OFF_HOST_THEME_CHANGE = 'offHostThemeChange';\nconst ON_KEYBOARD_HEIGHT_CHANGE = 'onKeyboardHeightChange';\nconst ON_PAGE_NOT_FOUND = 'onPageNotFound';\nconst ON_UNHANDLE_REJECTION = 'onUnhandledRejection';\nconst ON_EXIT = 'onExit';\n//Page\nconst ON_LOAD = 'onLoad';\nconst ON_READY = 'onReady';\nconst ON_UNLOAD = 'onUnload';\n// 百度特有\nconst ON_INIT = 'onInit';\n// 微信特有\nconst ON_SAVE_EXIT_STATE = 'onSaveExitState';\nconst ON_RESIZE = 'onResize';\nconst ON_BACK_PRESS = 'onBackPress';\nconst ON_PAGE_SCROLL = 'onPageScroll';\nconst ON_TAB_ITEM_TAP = 'onTabItemTap';\nconst ON_REACH_BOTTOM = 'onReachBottom';\nconst ON_PULL_DOWN_REFRESH = 'onPullDownRefresh';\nconst ON_SHARE_TIMELINE = 'onShareTimeline';\nconst ON_SHARE_CHAT = 'onShareChat'; // xhs-share\nconst ON_ADD_TO_FAVORITES = 'onAddToFavorites';\nconst ON_SHARE_APP_MESSAGE = 'onShareAppMessage';\n// navigationBar\nconst ON_NAVIGATION_BAR_BUTTON_TAP = 'onNavigationBarButtonTap';\nconst ON_NAVIGATION_BAR_CHANGE = 'onNavigationBarChange';\nconst ON_NAVIGATION_BAR_SEARCH_INPUT_CLICKED = 'onNavigationBarSearchInputClicked';\nconst ON_NAVIGATION_BAR_SEARCH_INPUT_CHANGED = 'onNavigationBarSearchInputChanged';\nconst ON_NAVIGATION_BAR_SEARCH_INPUT_CONFIRMED = 'onNavigationBarSearchInputConfirmed';\nconst ON_NAVIGATION_BAR_SEARCH_INPUT_FOCUS_CHANGED = 'onNavigationBarSearchInputFocusChanged';\n// framework\nconst ON_APP_ENTER_FOREGROUND = 'onAppEnterForeground';\nconst ON_APP_ENTER_BACKGROUND = 'onAppEnterBackground';\nconst ON_WEB_INVOKE_APP_SERVICE = 'onWebInvokeAppService';\nconst ON_WXS_INVOKE_CALL_METHOD = 'onWxsInvokeCallMethod';\n// mergeVirtualHostAttributes\nconst VIRTUAL_HOST_STYLE = 'virtualHostStyle';\nconst VIRTUAL_HOST_CLASS = 'virtualHostClass';\nconst VIRTUAL_HOST_HIDDEN = 'virtualHostHidden';\nconst VIRTUAL_HOST_ID = 'virtualHostId';\n\nfunction cache(fn) {\n const cache = Object.create(null);\n return (str) => {\n const hit = cache[str];\n return hit || (cache[str] = fn(str));\n };\n}\nfunction cacheStringFunction(fn) {\n return cache(fn);\n}\nfunction getLen(str = '') {\n return ('' + str).replace(/[^\\x00-\\xff]/g, '**').length;\n}\nfunction hasLeadingSlash(str) {\n return str.indexOf('/') === 0;\n}\nfunction addLeadingSlash(str) {\n return hasLeadingSlash(str) ? str : '/' + str;\n}\nfunction removeLeadingSlash(str) {\n return hasLeadingSlash(str) ? str.slice(1) : str;\n}\nconst invokeArrayFns = (fns, arg) => {\n let ret;\n for (let i = 0; i < fns.length; i++) {\n ret = fns[i](arg);\n }\n return ret;\n};\nfunction updateElementStyle(element, styles) {\n for (const attrName in styles) {\n element.style[attrName] = styles[attrName];\n }\n}\nfunction once(fn, ctx = null) {\n let res;\n return ((...args) => {\n if (fn) {\n res = fn.apply(ctx, args);\n fn = null;\n }\n return res;\n });\n}\nconst sanitise = (val) => (val && JSON.parse(JSON.stringify(val))) || val;\nconst _completeValue = (value) => (value > 9 ? value : '0' + value);\nfunction formatDateTime({ date = new Date(), mode = 'date' }) {\n if (mode === 'time') {\n return (_completeValue(date.getHours()) + ':' + _completeValue(date.getMinutes()));\n }\n else {\n return (date.getFullYear() +\n '-' +\n _completeValue(date.getMonth() + 1) +\n '-' +\n _completeValue(date.getDate()));\n }\n}\nfunction callOptions(options, data) {\n options = options || {};\n if (isString(data)) {\n data = {\n errMsg: data,\n };\n }\n if (/:ok$/.test(data.errMsg)) {\n if (isFunction(options.success)) {\n options.success(data);\n }\n }\n else {\n if (isFunction(options.fail)) {\n options.fail(data);\n }\n }\n if (isFunction(options.complete)) {\n options.complete(data);\n }\n}\nfunction getValueByDataPath(obj, path) {\n if (!isString(path)) {\n return;\n }\n path = path.replace(/\\[(\\d+)\\]/g, '.$1');\n const parts = path.split('.');\n let key = parts[0];\n if (!obj) {\n obj = {};\n }\n if (parts.length === 1) {\n return obj[key];\n }\n return getValueByDataPath(obj[key], parts.slice(1).join('.'));\n}\nfunction sortObject(obj) {\n let sortObj = {};\n if (isPlainObject(obj)) {\n Object.keys(obj)\n .sort()\n .forEach((key) => {\n const _key = key;\n sortObj[_key] = obj[_key];\n });\n }\n return !Object.keys(sortObj) ? obj : sortObj;\n}\nfunction getGlobalOnce() {\n if (typeof globalThis !== 'undefined') {\n return globalThis;\n }\n // worker\n if (typeof self !== 'undefined') {\n return self;\n }\n // browser\n if (typeof window !== 'undefined') {\n return window;\n }\n // nodejs\n // if (typeof global !== 'undefined') {\n // return global\n // }\n function g() {\n return this;\n }\n if (typeof g() !== 'undefined') {\n return g();\n }\n return (function () {\n return new Function('return this')();\n })();\n}\nlet g = undefined;\nfunction getGlobal() {\n if (g) {\n return g;\n }\n g = getGlobalOnce();\n return g;\n}\n\nfunction isComponentInternalInstance(vm) {\n return !!vm.appContext;\n}\nfunction resolveComponentInstance(instance) {\n return (instance &&\n (isComponentInternalInstance(instance) ? instance.proxy : instance));\n}\nfunction resolveOwnerVm(vm) {\n if (!vm) {\n return;\n }\n let componentName = vm.type.name;\n while (componentName && isBuiltInComponent(hyphenate(componentName))) {\n // ownerInstance 内置组件需要使用父 vm\n vm = vm.parent;\n componentName = vm.type.name;\n }\n return vm.proxy;\n}\nfunction isElement(el) {\n // Element\n return el.nodeType === 1;\n}\nfunction resolveOwnerEl(instance, multi = false) {\n const { vnode } = instance;\n if (isElement(vnode.el)) {\n return multi ? (vnode.el ? [vnode.el] : []) : vnode.el;\n }\n const { subTree } = instance;\n // ShapeFlags.ARRAY_CHILDREN = 1<<4\n if (subTree.shapeFlag & 16) {\n const elemVNodes = subTree.children.filter((vnode) => vnode.el && isElement(vnode.el));\n if (elemVNodes.length > 0) {\n if (multi) {\n return elemVNodes.map((node) => node.el);\n }\n return elemVNodes[0].el;\n }\n }\n return multi ? (vnode.el ? [vnode.el] : []) : vnode.el;\n}\nfunction dynamicSlotName(name) {\n return name === 'default' ? SLOT_DEFAULT_NAME : name;\n}\nconst customizeRE = /:/g;\nfunction customizeEvent(str) {\n return camelize(str.replace(customizeRE, '-'));\n}\nfunction normalizeStyle(value) {\n const g = getGlobal();\n if (g && g.UTSJSONObject && value instanceof g.UTSJSONObject) {\n const styleObject = {};\n g.UTSJSONObject.keys(value).forEach((key) => {\n styleObject[key] = value[key];\n });\n return normalizeStyle$1(styleObject);\n }\n else if (value instanceof Map) {\n const styleObject = {};\n value.forEach((value, key) => {\n styleObject[key] = value;\n });\n return normalizeStyle$1(styleObject);\n }\n else if (isString(value)) {\n return parseStringStyle(value);\n }\n else if (isArray(value)) {\n const res = {};\n for (let i = 0; i < value.length; i++) {\n const item = value[i];\n const normalized = isString(item)\n ? parseStringStyle(item)\n : normalizeStyle(item);\n if (normalized) {\n for (const key in normalized) {\n res[key] = normalized[key];\n }\n }\n }\n return res;\n }\n else {\n return normalizeStyle$1(value);\n }\n}\nfunction normalizeClass(value) {\n let res = '';\n const g = getGlobal();\n if (g && g.UTSJSONObject && value instanceof g.UTSJSONObject) {\n g.UTSJSONObject.keys(value).forEach((key) => {\n if (value[key]) {\n res += key + ' ';\n }\n });\n }\n else if (value instanceof Map) {\n value.forEach((value, key) => {\n if (value) {\n res += key + ' ';\n }\n });\n }\n else if (isArray(value)) {\n for (let i = 0; i < value.length; i++) {\n const normalized = normalizeClass(value[i]);\n if (normalized) {\n res += normalized + ' ';\n }\n }\n }\n else {\n res = normalizeClass$1(value);\n }\n return res.trim();\n}\nfunction normalizeProps(props) {\n if (!props)\n return null;\n let { class: klass, style } = props;\n if (klass && !isString(klass)) {\n props.class = normalizeClass(klass);\n }\n if (style) {\n props.style = normalizeStyle(style);\n }\n return props;\n}\n\nlet lastLogTime = 0;\nfunction formatLog(module, ...args) {\n const now = Date.now();\n const diff = lastLogTime ? now - lastLogTime : 0;\n lastLogTime = now;\n return `[${now}][${diff}ms][${module}]:${args\n .map((arg) => JSON.stringify(arg))\n .join(' ')}`;\n}\n\nfunction formatKey(key) {\n return camelize(key.substring(5));\n}\n// question/139181,增加副作用,避免 initCustomDataset 在 build 下被 tree-shaking\nconst initCustomDatasetOnce = /*#__PURE__*/ once((isBuiltInElement) => {\n isBuiltInElement =\n isBuiltInElement || ((el) => el.tagName.startsWith('UNI-'));\n const prototype = HTMLElement.prototype;\n const setAttribute = prototype.setAttribute;\n prototype.setAttribute = function (key, value) {\n if (key.startsWith('data-') && isBuiltInElement(this)) {\n const dataset = this.__uniDataset ||\n (this.__uniDataset = {});\n dataset[formatKey(key)] = value;\n }\n setAttribute.call(this, key, value);\n };\n const removeAttribute = prototype.removeAttribute;\n prototype.removeAttribute = function (key) {\n if (this.__uniDataset &&\n key.startsWith('data-') &&\n isBuiltInElement(this)) {\n delete this.__uniDataset[formatKey(key)];\n }\n removeAttribute.call(this, key);\n };\n});\nfunction getCustomDataset(el) {\n return extend({}, el.dataset, el.__uniDataset);\n}\n\nconst unitRE = new RegExp(`\"[^\"]+\"|'[^']+'|url\\\\([^)]+\\\\)|(\\\\d*\\\\.?\\\\d+)[r|u]px`, 'g');\nfunction toFixed(number, precision) {\n const multiplier = Math.pow(10, precision + 1);\n const wholeNumber = Math.floor(number * multiplier);\n return (Math.round(wholeNumber / 10) * 10) / multiplier;\n}\nconst defaultRpx2Unit = {\n unit: 'rem',\n unitRatio: 10 / 320,\n unitPrecision: 5,\n};\nconst defaultMiniProgramRpx2Unit = {\n unit: 'rpx',\n unitRatio: 1,\n unitPrecision: 1,\n};\nconst defaultNVueRpx2Unit = defaultMiniProgramRpx2Unit;\nfunction createRpx2Unit(unit, unitRatio, unitPrecision) {\n // ignore: rpxCalcIncludeWidth\n return (val) => val.replace(unitRE, (m, $1) => {\n if (!$1) {\n return m;\n }\n if (unitRatio === 1) {\n return `${$1}${unit}`;\n }\n const value = toFixed(parseFloat($1) * unitRatio, unitPrecision);\n return value === 0 ? '0' : `${value}${unit}`;\n });\n}\n\nfunction passive(passive) {\n return { passive };\n}\nfunction normalizeDataset(el) {\n // TODO\n return JSON.parse(JSON.stringify(el.dataset || {}));\n}\nfunction normalizeTarget(el) {\n const { id, offsetTop, offsetLeft } = el;\n return {\n id,\n dataset: getCustomDataset(el),\n offsetTop,\n offsetLeft,\n };\n}\nfunction addFont(family, source, desc) {\n const fonts = document.fonts;\n if (fonts) {\n const fontFace = new FontFace(family, source, desc);\n return fontFace.load().then(() => {\n fonts.add && fonts.add(fontFace);\n });\n }\n return new Promise((resolve) => {\n const style = document.createElement('style');\n const values = [];\n if (desc) {\n const { style, weight, stretch, unicodeRange, variant, featureSettings } = desc;\n style && values.push(`font-style:${style}`);\n weight && values.push(`font-weight:${weight}`);\n stretch && values.push(`font-stretch:${stretch}`);\n unicodeRange && values.push(`unicode-range:${unicodeRange}`);\n variant && values.push(`font-variant:${variant}`);\n featureSettings && values.push(`font-feature-settings:${featureSettings}`);\n }\n style.innerText = `@font-face{font-family:\"${family}\";src:${source};${values.join(';')}}`;\n document.head.appendChild(style);\n resolve();\n });\n}\nfunction scrollTo(scrollTop, duration, isH5) {\n if (isString(scrollTop)) {\n const el = document.querySelector(scrollTop);\n if (el) {\n const { top } = el.getBoundingClientRect();\n scrollTop = top + window.pageYOffset;\n // 如果存在,减去 高度\n const pageHeader = document.querySelector('uni-page-head');\n if (pageHeader) {\n scrollTop -= pageHeader.offsetHeight;\n }\n }\n }\n if (scrollTop < 0) {\n scrollTop = 0;\n }\n const documentElement = document.documentElement;\n const { clientHeight, scrollHeight } = documentElement;\n scrollTop = Math.min(scrollTop, scrollHeight - clientHeight);\n if (duration === 0) {\n // 部分浏览器(比如微信)中 scrollTop 的值需要通过 document.body 来控制\n documentElement.scrollTop = document.body.scrollTop = scrollTop;\n return;\n }\n if (window.scrollY === scrollTop) {\n return;\n }\n const scrollTo = (duration) => {\n if (duration <= 0) {\n window.scrollTo(0, scrollTop);\n return;\n }\n const distaince = scrollTop - window.scrollY;\n requestAnimationFrame(function () {\n window.scrollTo(0, window.scrollY + (distaince / duration) * 10);\n scrollTo(duration - 10);\n });\n };\n scrollTo(duration);\n}\n\nconst encode = encodeURIComponent;\nfunction stringifyQuery(obj, encodeStr = encode) {\n const res = obj\n ? Object.keys(obj)\n .map((key) => {\n let val = obj[key];\n if (typeof val === undefined || val === null) {\n val = '';\n }\n else if (isPlainObject(val)) {\n val = JSON.stringify(val);\n }\n return encodeStr(key) + '=' + encodeStr(val);\n })\n .filter((x) => x.length > 0)\n .join('&')\n : null;\n return res ? `?${res}` : '';\n}\n/**\n * Decode text using `decodeURIComponent`. Returns the original text if it\n * fails.\n *\n * @param text - string to decode\n * @returns decoded string\n */\nfunction decode(text) {\n try {\n return decodeURIComponent('' + text);\n }\n catch (err) { }\n return '' + text;\n}\nfunction decodedQuery(query = {}) {\n const decodedQuery = {};\n Object.keys(query).forEach((name) => {\n try {\n decodedQuery[name] = decode(query[name]);\n }\n catch (e) {\n decodedQuery[name] = query[name];\n }\n });\n return decodedQuery;\n}\nconst PLUS_RE = /\\+/g; // %2B\n/**\n * https://github.com/vuejs/vue-router-next/blob/master/src/query.ts\n * @internal\n *\n * @param search - search string to parse\n * @returns a query object\n */\nfunction parseQuery(search) {\n const query = {};\n // avoid creating an object with an empty key and empty value\n // because of split('&')\n if (search === '' || search === '?')\n return query;\n const hasLeadingIM = search[0] === '?';\n const searchParams = (hasLeadingIM ? search.slice(1) : search).split('&');\n for (let i = 0; i < searchParams.length; ++i) {\n // pre decode the + into space\n const searchParam = searchParams[i].replace(PLUS_RE, ' ');\n // allow the = character\n let eqPos = searchParam.indexOf('=');\n let key = decode(eqPos < 0 ? searchParam : searchParam.slice(0, eqPos));\n let value = eqPos < 0 ? null : decode(searchParam.slice(eqPos + 1));\n if (key in query) {\n // an extra variable for ts types\n let currentValue = query[key];\n if (!isArray(currentValue)) {\n currentValue = query[key] = [currentValue];\n }\n currentValue.push(value);\n }\n else {\n query[key] = value;\n }\n }\n return query;\n}\n\nfunction parseUrl(url) {\n const [path, querystring] = url.split('?', 2);\n return {\n path,\n query: parseQuery(querystring || ''),\n };\n}\n\nfunction parseNVueDataset(attr) {\n const dataset = {};\n if (attr) {\n Object.keys(attr).forEach((key) => {\n if (key.indexOf('data-') === 0) {\n dataset[key.replace('data-', '')] = attr[key];\n }\n });\n }\n return dataset;\n}\n\nfunction plusReady(callback) {\n if (!isFunction(callback)) {\n return;\n }\n if (window.plus) {\n return callback();\n }\n document.addEventListener('plusready', callback);\n}\n\nclass DOMException extends Error {\n constructor(message) {\n super(message);\n this.name = 'DOMException';\n }\n}\n\nfunction normalizeEventType(type, options) {\n if (options) {\n if (options.capture) {\n type += 'Capture';\n }\n if (options.once) {\n type += 'Once';\n }\n if (options.passive) {\n type += 'Passive';\n }\n }\n return `on${capitalize(camelize(type))}`;\n}\nclass UniEvent {\n constructor(type, opts) {\n this.defaultPrevented = false;\n this.timeStamp = Date.now();\n this._stop = false;\n this._end = false;\n this.type = type;\n this.bubbles = !!opts.bubbles;\n this.cancelable = !!opts.cancelable;\n }\n preventDefault() {\n this.defaultPrevented = true;\n }\n stopImmediatePropagation() {\n this._end = this._stop = true;\n }\n stopPropagation() {\n this._stop = true;\n }\n}\nfunction createUniEvent(evt) {\n if (evt instanceof UniEvent) {\n return evt;\n }\n const [type] = parseEventName(evt.type);\n const uniEvent = new UniEvent(type, {\n bubbles: false,\n cancelable: false,\n });\n extend(uniEvent, evt);\n return uniEvent;\n}\nclass UniEventTarget {\n constructor() {\n this.listeners = Object.create(null);\n }\n dispatchEvent(evt) {\n const listeners = this.listeners[evt.type];\n if (!listeners) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.error(formatLog('dispatchEvent', this.nodeId), evt.type, 'not found');\n }\n return false;\n }\n // 格式化事件类型\n const event = createUniEvent(evt);\n const len = listeners.length;\n for (let i = 0; i < len; i++) {\n listeners[i].call(this, event);\n if (event._end) {\n break;\n }\n }\n return event.cancelable && event.defaultPrevented;\n }\n addEventListener(type, listener, options) {\n type = normalizeEventType(type, options);\n (this.listeners[type] || (this.listeners[type] = [])).push(listener);\n }\n removeEventListener(type, callback, options) {\n type = normalizeEventType(type, options);\n const listeners = this.listeners[type];\n if (!listeners) {\n return;\n }\n const index = listeners.indexOf(callback);\n if (index > -1) {\n listeners.splice(index, 1);\n }\n }\n}\nconst optionsModifierRE = /(?:Once|Passive|Capture)$/;\nfunction parseEventName(name) {\n let options;\n if (optionsModifierRE.test(name)) {\n options = {};\n let m;\n while ((m = name.match(optionsModifierRE))) {\n name = name.slice(0, name.length - m[0].length);\n options[m[0].toLowerCase()] = true;\n }\n }\n return [hyphenate(name.slice(2)), options];\n}\n\nconst EventModifierFlags = /*#__PURE__*/ (() => {\n return {\n stop: 1,\n prevent: 1 << 1,\n self: 1 << 2,\n };\n})();\nfunction encodeModifier(modifiers) {\n let flag = 0;\n if (modifiers.includes('stop')) {\n flag |= EventModifierFlags.stop;\n }\n if (modifiers.includes('prevent')) {\n flag |= EventModifierFlags.prevent;\n }\n if (modifiers.includes('self')) {\n flag |= EventModifierFlags.self;\n }\n return flag;\n}\n\nconst NODE_TYPE_PAGE = 0;\nconst NODE_TYPE_ELEMENT = 1;\nconst NODE_TYPE_TEXT = 3;\nconst NODE_TYPE_COMMENT = 8;\nfunction sibling(node, type) {\n const { parentNode } = node;\n if (!parentNode) {\n return null;\n }\n const { childNodes } = parentNode;\n return childNodes[childNodes.indexOf(node) + (type === 'n' ? 1 : -1)] || null;\n}\nfunction removeNode(node) {\n const { parentNode } = node;\n if (parentNode) {\n const { childNodes } = parentNode;\n const index = childNodes.indexOf(node);\n if (index > -1) {\n node.parentNode = null;\n childNodes.splice(index, 1);\n }\n }\n}\nfunction checkNodeId(node) {\n if (!node.nodeId && node.pageNode) {\n node.nodeId = node.pageNode.genId();\n }\n}\n// 为优化性能,各平台不使用proxy来实现node的操作拦截,而是直接通过pageNode定制\nclass UniNode extends UniEventTarget {\n constructor(nodeType, nodeName, container) {\n super();\n this.pageNode = null;\n this.parentNode = null;\n this._text = null;\n if (container) {\n const { pageNode } = container;\n if (pageNode) {\n this.pageNode = pageNode;\n this.nodeId = pageNode.genId();\n !pageNode.isUnmounted && pageNode.onCreate(this, nodeName);\n }\n }\n this.nodeType = nodeType;\n this.nodeName = nodeName;\n this.childNodes = [];\n }\n get firstChild() {\n return this.childNodes[0] || null;\n }\n get lastChild() {\n const { childNodes } = this;\n const length = childNodes.length;\n return length ? childNodes[length - 1] : null;\n }\n get nextSibling() {\n return sibling(this, 'n');\n }\n get nodeValue() {\n return null;\n }\n set nodeValue(_val) { }\n get textContent() {\n return this._text || '';\n }\n set textContent(text) {\n this._text = text;\n if (this.pageNode && !this.pageNode.isUnmounted) {\n this.pageNode.onTextContent(this, text);\n }\n }\n get parentElement() {\n const { parentNode } = this;\n if (parentNode && parentNode.nodeType === NODE_TYPE_ELEMENT) {\n return parentNode;\n }\n return null;\n }\n get previousSibling() {\n return sibling(this, 'p');\n }\n appendChild(newChild) {\n return this.insertBefore(newChild, null);\n }\n cloneNode(deep) {\n const cloned = extend(Object.create(Object.getPrototypeOf(this)), this);\n const { attributes } = cloned;\n if (attributes) {\n cloned.attributes = extend({}, attributes);\n }\n if (deep) {\n cloned.childNodes = cloned.childNodes.map((childNode) => childNode.cloneNode(true));\n }\n return cloned;\n }\n insertBefore(newChild, refChild) {\n // 先从现在的父节点移除(注意:不能触发onRemoveChild,否则会生成先remove该 id,再 insert)\n removeNode(newChild);\n newChild.pageNode = this.pageNode;\n newChild.parentNode = this;\n checkNodeId(newChild);\n const { childNodes } = this;\n if (refChild) {\n const index = childNodes.indexOf(refChild);\n if (index === -1) {\n throw new DOMException(`Failed to execute 'insertBefore' on 'Node': The node before which the new node is to be inserted is not a child of this node.`);\n }\n childNodes.splice(index, 0, newChild);\n }\n else {\n childNodes.push(newChild);\n }\n return this.pageNode && !this.pageNode.isUnmounted\n ? this.pageNode.onInsertBefore(this, newChild, refChild)\n : newChild;\n }\n removeChild(oldChild) {\n const { childNodes } = this;\n const index = childNodes.indexOf(oldChild);\n if (index === -1) {\n throw new DOMException(`Failed to execute 'removeChild' on 'Node': The node to be removed is not a child of this node.`);\n }\n oldChild.parentNode = null;\n childNodes.splice(index, 1);\n return this.pageNode && !this.pageNode.isUnmounted\n ? this.pageNode.onRemoveChild(oldChild)\n : oldChild;\n }\n}\nconst ATTR_CLASS = 'class';\nconst ATTR_STYLE = 'style';\nconst ATTR_INNER_HTML = 'innerHTML';\nconst ATTR_TEXT_CONTENT = 'textContent';\nconst ATTR_V_SHOW = '.vShow';\nconst ATTR_V_OWNER_ID = '.vOwnerId';\nconst ATTR_V_RENDERJS = '.vRenderjs';\nconst ATTR_CHANGE_PREFIX = 'change:';\nclass UniBaseNode extends UniNode {\n constructor(nodeType, nodeName, container) {\n super(nodeType, nodeName, container);\n this.attributes = Object.create(null);\n this.style = null;\n this.vShow = null;\n this._html = null;\n }\n get className() {\n return (this.attributes[ATTR_CLASS] || '');\n }\n set className(val) {\n this.setAttribute(ATTR_CLASS, val);\n }\n get innerHTML() {\n return '';\n }\n set innerHTML(html) {\n this._html = html;\n }\n addEventListener(type, listener, options) {\n super.addEventListener(type, listener, options);\n if (this.pageNode && !this.pageNode.isUnmounted) {\n if (listener.wxsEvent) {\n this.pageNode.onAddWxsEvent(this, normalizeEventType(type, options), listener.wxsEvent, encodeModifier(listener.modifiers || []));\n }\n else {\n this.pageNode.onAddEvent(this, normalizeEventType(type, options), encodeModifier(listener.modifiers || []));\n }\n }\n }\n removeEventListener(type, callback, options) {\n super.removeEventListener(type, callback, options);\n if (this.pageNode && !this.pageNode.isUnmounted) {\n this.pageNode.onRemoveEvent(this, normalizeEventType(type, options));\n }\n }\n getAttribute(qualifiedName) {\n if (qualifiedName === ATTR_STYLE) {\n return this.style;\n }\n return this.attributes[qualifiedName];\n }\n removeAttribute(qualifiedName) {\n if (qualifiedName == ATTR_STYLE) {\n this.style = null;\n }\n else {\n delete this.attributes[qualifiedName];\n }\n if (this.pageNode && !this.pageNode.isUnmounted) {\n this.pageNode.onRemoveAttribute(this, qualifiedName);\n }\n }\n setAttribute(qualifiedName, value) {\n if (qualifiedName === ATTR_STYLE) {\n this.style = value;\n }\n else {\n this.attributes[qualifiedName] = value;\n }\n if (this.pageNode && !this.pageNode.isUnmounted) {\n this.pageNode.onSetAttribute(this, qualifiedName, value);\n }\n }\n toJSON({ attr, normalize, } = {}) {\n const { attributes, style, listeners, _text } = this;\n const res = {};\n if (Object.keys(attributes).length) {\n res.a = normalize ? normalize(attributes) : attributes;\n }\n const events = Object.keys(listeners);\n if (events.length) {\n let w = undefined;\n const e = {};\n events.forEach((name) => {\n const handlers = listeners[name];\n if (handlers.length) {\n // 可能存在多个 handler 且不同 modifiers 吗?\n const { wxsEvent, modifiers } = handlers[0];\n const modifier = encodeModifier(modifiers || []);\n if (!wxsEvent) {\n e[name] = modifier;\n }\n else {\n if (!w) {\n w = {};\n }\n w[name] = [normalize ? normalize(wxsEvent) : wxsEvent, modifier];\n }\n }\n });\n res.e = normalize ? normalize(e, false) : e;\n if (w) {\n res.w = normalize ? normalize(w, false) : w;\n }\n }\n if (style !== null) {\n res.s = normalize ? normalize(style) : style;\n }\n if (!attr) {\n res.i = this.nodeId;\n res.n = this.nodeName;\n }\n if (_text !== null) {\n res.t = normalize ? normalize(_text) : _text;\n }\n return res;\n }\n}\n\nclass UniCommentNode extends UniNode {\n constructor(text, container) {\n super(NODE_TYPE_COMMENT, '#comment', container);\n this._text = (process.env.NODE_ENV !== 'production') ? text : '';\n }\n toJSON(opts = {}) {\n // 暂时不传递 text 到 view 层,没啥意义,节省点数据量\n return opts.attr\n ? {}\n : {\n i: this.nodeId,\n };\n // return opts.attr\n // ? { t: this._text as string }\n // : {\n // i: this.nodeId!,\n // t: this._text as string,\n // }\n }\n}\n\nclass UniElement extends UniBaseNode {\n constructor(nodeName, container) {\n super(NODE_TYPE_ELEMENT, nodeName.toUpperCase(), container);\n this.tagName = this.nodeName;\n }\n}\nclass UniInputElement extends UniElement {\n get value() {\n return this.getAttribute('value');\n }\n set value(val) {\n this.setAttribute('value', val);\n }\n}\nclass UniTextAreaElement extends UniInputElement {\n}\n\nclass UniTextNode extends UniBaseNode {\n constructor(text, container) {\n super(NODE_TYPE_TEXT, '#text', container);\n this._text = text;\n }\n get nodeValue() {\n return this._text || '';\n }\n set nodeValue(text) {\n this._text = text;\n if (this.pageNode && !this.pageNode.isUnmounted) {\n this.pageNode.onNodeValue(this, text);\n }\n }\n}\n\nconst forcePatchProps = {\n AD: ['data'],\n 'AD-DRAW': ['data'],\n 'LIVE-PLAYER': ['picture-in-picture-mode'],\n MAP: [\n 'markers',\n 'polyline',\n 'circles',\n 'controls',\n 'include-points',\n 'polygons',\n ],\n PICKER: ['range', 'value'],\n 'PICKER-VIEW': ['value'],\n 'RICH-TEXT': ['nodes'],\n VIDEO: ['danmu-list', 'header'],\n 'WEB-VIEW': ['webview-styles'],\n};\nconst forcePatchPropKeys = ['animation'];\n\nconst forcePatchProp = (el, key) => {\n if (forcePatchPropKeys.indexOf(key) > -1) {\n return true;\n }\n const keys = forcePatchProps[el.nodeName];\n if (keys && keys.indexOf(key) > -1) {\n return true;\n }\n return false;\n};\n\nconst ACTION_TYPE_PAGE_CREATE = 1;\nconst ACTION_TYPE_PAGE_CREATED = 2;\nconst ACTION_TYPE_CREATE = 3;\nconst ACTION_TYPE_INSERT = 4;\nconst ACTION_TYPE_REMOVE = 5;\nconst ACTION_TYPE_SET_ATTRIBUTE = 6;\nconst ACTION_TYPE_REMOVE_ATTRIBUTE = 7;\nconst ACTION_TYPE_ADD_EVENT = 8;\nconst ACTION_TYPE_REMOVE_EVENT = 9;\nconst ACTION_TYPE_SET_TEXT = 10;\nconst ACTION_TYPE_ADD_WXS_EVENT = 12;\nconst ACTION_TYPE_PAGE_SCROLL = 15;\nconst ACTION_TYPE_EVENT = 20;\n\n/**\n * 需要手动传入 timer,主要是解决 App 平台的定制 timer\n */\nfunction debounce(fn, delay, { clearTimeout, setTimeout }) {\n let timeout;\n const newFn = function () {\n clearTimeout(timeout);\n const timerFn = () => fn.apply(this, arguments);\n timeout = setTimeout(timerFn, delay);\n };\n newFn.cancel = function () {\n clearTimeout(timeout);\n };\n return newFn;\n}\n\nclass EventChannel {\n constructor(id, events) {\n this.id = id;\n this.listener = {};\n this.emitCache = [];\n if (events) {\n Object.keys(events).forEach((name) => {\n this.on(name, events[name]);\n });\n }\n }\n emit(eventName, ...args) {\n const fns = this.listener[eventName];\n if (!fns) {\n return this.emitCache.push({\n eventName,\n args,\n });\n }\n fns.forEach((opt) => {\n opt.fn.apply(opt.fn, args);\n });\n this.listener[eventName] = fns.filter((opt) => opt.type !== 'once');\n }\n on(eventName, fn) {\n this._addListener(eventName, 'on', fn);\n this._clearCache(eventName);\n }\n once(eventName, fn) {\n this._addListener(eventName, 'once', fn);\n this._clearCache(eventName);\n }\n off(eventName, fn) {\n const fns = this.listener[eventName];\n if (!fns) {\n return;\n }\n if (fn) {\n for (let i = 0; i < fns.length;) {\n if (fns[i].fn === fn) {\n fns.splice(i, 1);\n i--;\n }\n i++;\n }\n }\n else {\n delete this.listener[eventName];\n }\n }\n _clearCache(eventName) {\n for (let index = 0; index < this.emitCache.length; index++) {\n const cache = this.emitCache[index];\n const _name = eventName\n ? cache.eventName === eventName\n ? eventName\n : null\n : cache.eventName;\n if (!_name)\n continue;\n const location = this.emit.apply(this, [_name, ...cache.args]);\n if (typeof location === 'number') {\n this.emitCache.pop();\n continue;\n }\n this.emitCache.splice(index, 1);\n index--;\n }\n }\n _addListener(eventName, type, fn) {\n (this.listener[eventName] || (this.listener[eventName] = [])).push({\n fn,\n type,\n });\n }\n}\n\nconst PAGE_HOOKS = [\n ON_INIT,\n ON_LOAD,\n ON_SHOW,\n ON_HIDE,\n ON_UNLOAD,\n ON_BACK_PRESS,\n ON_PAGE_SCROLL,\n ON_TAB_ITEM_TAP,\n ON_REACH_BOTTOM,\n ON_PULL_DOWN_REFRESH,\n ON_SHARE_TIMELINE,\n ON_SHARE_APP_MESSAGE,\n ON_SHARE_CHAT,\n ON_ADD_TO_FAVORITES,\n ON_SAVE_EXIT_STATE,\n ON_NAVIGATION_BAR_BUTTON_TAP,\n ON_NAVIGATION_BAR_SEARCH_INPUT_CLICKED,\n ON_NAVIGATION_BAR_SEARCH_INPUT_CHANGED,\n ON_NAVIGATION_BAR_SEARCH_INPUT_CONFIRMED,\n ON_NAVIGATION_BAR_SEARCH_INPUT_FOCUS_CHANGED,\n];\nfunction isRootImmediateHook(name) {\n const PAGE_SYNC_HOOKS = [ON_LOAD, ON_SHOW];\n return PAGE_SYNC_HOOKS.indexOf(name) > -1;\n}\n// isRootImmediateHookX deprecated\nfunction isRootHook(name) {\n return PAGE_HOOKS.indexOf(name) > -1;\n}\nconst UniLifecycleHooks = [\n ON_SHOW,\n ON_HIDE,\n ON_LAUNCH,\n ON_ERROR,\n ON_THEME_CHANGE,\n ON_PAGE_NOT_FOUND,\n ON_UNHANDLE_REJECTION,\n ON_EXIT,\n ON_INIT,\n ON_LOAD,\n ON_READY,\n ON_UNLOAD,\n ON_RESIZE,\n ON_BACK_PRESS,\n ON_PAGE_SCROLL,\n ON_TAB_ITEM_TAP,\n ON_REACH_BOTTOM,\n ON_PULL_DOWN_REFRESH,\n ON_SHARE_TIMELINE,\n ON_ADD_TO_FAVORITES,\n ON_SHARE_APP_MESSAGE,\n ON_SHARE_CHAT,\n ON_SAVE_EXIT_STATE,\n ON_NAVIGATION_BAR_BUTTON_TAP,\n ON_NAVIGATION_BAR_SEARCH_INPUT_CLICKED,\n ON_NAVIGATION_BAR_SEARCH_INPUT_CHANGED,\n ON_NAVIGATION_BAR_SEARCH_INPUT_CONFIRMED,\n ON_NAVIGATION_BAR_SEARCH_INPUT_FOCUS_CHANGED,\n];\nconst MINI_PROGRAM_PAGE_RUNTIME_HOOKS = /*#__PURE__*/ (() => {\n return {\n onPageScroll: 1,\n onShareAppMessage: 1 << 1,\n onShareTimeline: 1 << 2,\n };\n})();\nfunction isUniLifecycleHook(name, value, checkType = true) {\n // 检查类型\n if (checkType && !isFunction(value)) {\n return false;\n }\n if (UniLifecycleHooks.indexOf(name) > -1) {\n // 已预定义\n return true;\n }\n else if (name.indexOf('on') === 0) {\n // 以 on 开头\n return true;\n }\n return false;\n}\n\nlet vueApp;\nconst createVueAppHooks = [];\n/**\n * 提供 createApp 的回调事件,方便三方插件接收 App 对象,处理挂靠全局 mixin 之类的逻辑\n */\nfunction onCreateVueApp(hook) {\n // TODO 每个 nvue 页面都会触发\n if (vueApp) {\n return hook(vueApp);\n }\n createVueAppHooks.push(hook);\n}\nfunction invokeCreateVueAppHook(app) {\n vueApp = app;\n createVueAppHooks.forEach((hook) => hook(app));\n}\nconst invokeCreateErrorHandler = once((app, createErrorHandler) => {\n // 不再判断开发者是否监听了onError,直接返回 createErrorHandler,内部 errorHandler 会调用开发者自定义的 errorHandler,以及判断开发者是否监听了onError\n return createErrorHandler(app);\n});\n\nconst E = function () {\n // Keep this empty so it's easier to inherit from\n // (via https://github.com/lipsmack from https://github.com/scottcorgan/tiny-emitter/issues/3)\n};\nE.prototype = {\n _id: 1,\n on: function (name, callback, ctx) {\n var e = this.e || (this.e = {});\n (e[name] || (e[name] = [])).push({\n fn: callback,\n ctx: ctx,\n _id: this._id,\n });\n return this._id++;\n },\n once: function (name, callback, ctx) {\n var self = this;\n function listener() {\n self.off(name, listener);\n callback.apply(ctx, arguments);\n }\n listener._ = callback;\n return this.on(name, listener, ctx);\n },\n emit: function (name) {\n var data = [].slice.call(arguments, 1);\n var evtArr = ((this.e || (this.e = {}))[name] || []).slice();\n var i = 0;\n var len = evtArr.length;\n for (i; i < len; i++) {\n evtArr[i].fn.apply(evtArr[i].ctx, data);\n }\n return this;\n },\n off: function (name, event) {\n var e = this.e || (this.e = {});\n var evts = e[name];\n var liveEvents = [];\n if (evts && event) {\n for (var i = evts.length - 1; i >= 0; i--) {\n if (evts[i].fn === event ||\n evts[i].fn._ === event ||\n evts[i]._id === event) {\n evts.splice(i, 1);\n break;\n }\n }\n liveEvents = evts;\n }\n // Remove event from queue to prevent memory leak\n // Suggested by https://github.com/lazd\n // Ref: https://github.com/scottcorgan/tiny-emitter/commit/c6ebfaa9bc973b33d110a84a307742b7cf94c953#commitcomment-5024910\n liveEvents.length ? (e[name] = liveEvents) : delete e[name];\n return this;\n },\n};\nvar E$1 = E;\n\nconst borderStyles = {\n black: 'rgba(0,0,0,0.4)',\n white: 'rgba(255,255,255,0.4)',\n};\nfunction normalizeTabBarStyles(borderStyle) {\n if (borderStyle && borderStyle in borderStyles) {\n return borderStyles[borderStyle];\n }\n return borderStyle;\n}\nfunction normalizeTitleColor(titleColor) {\n return titleColor === 'black' ? '#000000' : '#ffffff';\n}\nfunction resolveStringStyleItem(modeStyle, styleItem, key) {\n if (isString(styleItem) && styleItem.startsWith('@')) {\n const _key = styleItem.replace('@', '');\n let _styleItem = modeStyle[_key] || styleItem;\n switch (key) {\n case 'titleColor':\n _styleItem = normalizeTitleColor(_styleItem);\n break;\n case 'borderStyle':\n _styleItem = normalizeTabBarStyles(_styleItem);\n break;\n }\n return _styleItem;\n }\n return styleItem;\n}\nfunction normalizeStyles(pageStyle, themeConfig = {}, mode = 'light') {\n const modeStyle = themeConfig[mode];\n const styles = {};\n if (typeof modeStyle === 'undefined' || !pageStyle)\n return pageStyle;\n Object.keys(pageStyle).forEach((key) => {\n const styleItem = pageStyle[key]; // Object Array String\n const parseStyleItem = () => {\n if (isPlainObject(styleItem))\n return normalizeStyles(styleItem, themeConfig, mode);\n if (isArray(styleItem))\n return styleItem.map((item) => {\n if (isPlainObject(item))\n return normalizeStyles(item, themeConfig, mode);\n return resolveStringStyleItem(modeStyle, item);\n });\n return resolveStringStyleItem(modeStyle, styleItem, key);\n };\n styles[key] = parseStyleItem();\n });\n return styles;\n}\n\nfunction getEnvLocale() {\n const { env } = process;\n const lang = env.LC_ALL || env.LC_MESSAGES || env.LANG || env.LANGUAGE;\n return (lang && lang.replace(/[.:].*/, '')) || 'en';\n}\n\nconst isStringIntegerKey = (key) => typeof key === 'string' &&\n key !== 'NaN' &&\n key[0] !== '-' &&\n '' + parseInt(key, 10) === key;\nconst isNumberIntegerKey = (key) => typeof key === 'number' &&\n !isNaN(key) &&\n key >= 0 &&\n parseInt(key + '', 10) === key;\n/**\n * 用于替代@vue/shared的isIntegerKey,原始方法在鸿蒙arkts中会引发bug。根本原因是arkts的数组的key是数字而不是字符串。\n * 目前这个方法使用的地方都和数组有关,切记不能挪作他用。\n * @param key\n * @returns\n */\nconst isIntegerKey = (key) => isNumberIntegerKey(key) || isStringIntegerKey(key);\n\nexport { ACTION_TYPE_ADD_EVENT, ACTION_TYPE_ADD_WXS_EVENT, ACTION_TYPE_CREATE, ACTION_TYPE_EVENT, ACTION_TYPE_INSERT, ACTION_TYPE_PAGE_CREATE, ACTION_TYPE_PAGE_CREATED, ACTION_TYPE_PAGE_SCROLL, ACTION_TYPE_REMOVE, ACTION_TYPE_REMOVE_ATTRIBUTE, ACTION_TYPE_REMOVE_EVENT, ACTION_TYPE_SET_ATTRIBUTE, ACTION_TYPE_SET_TEXT, ATTR_CHANGE_PREFIX, ATTR_CLASS, ATTR_INNER_HTML, ATTR_STYLE, ATTR_TEXT_CONTENT, ATTR_V_OWNER_ID, ATTR_V_RENDERJS, ATTR_V_SHOW, BACKGROUND_COLOR, BUILT_IN_TAGS, BUILT_IN_TAG_NAMES, COMPONENT_NAME_PREFIX, COMPONENT_PREFIX, COMPONENT_SELECTOR_PREFIX, DATA_RE, E$1 as Emitter, EventChannel, EventModifierFlags, I18N_JSON_DELIMITERS, JSON_PROTOCOL, LINEFEED, MINI_PROGRAM_PAGE_RUNTIME_HOOKS, NAVBAR_HEIGHT, NODE_TYPE_COMMENT, NODE_TYPE_ELEMENT, NODE_TYPE_PAGE, NODE_TYPE_TEXT, NVUE_BUILT_IN_TAGS, NVUE_U_BUILT_IN_TAGS, OFF_HOST_THEME_CHANGE, OFF_THEME_CHANGE, ON_ADD_TO_FAVORITES, ON_APP_ENTER_BACKGROUND, ON_APP_ENTER_FOREGROUND, ON_BACK_PRESS, ON_ERROR, ON_EXIT, ON_HIDE, ON_HOST_THEME_CHANGE, ON_INIT, ON_KEYBOARD_HEIGHT_CHANGE, ON_LAUNCH, ON_LOAD, ON_NAVIGATION_BAR_BUTTON_TAP, ON_NAVIGATION_BAR_CHANGE, ON_NAVIGATION_BAR_SEARCH_INPUT_CHANGED, ON_NAVIGATION_BAR_SEARCH_INPUT_CLICKED, ON_NAVIGATION_BAR_SEARCH_INPUT_CONFIRMED, ON_NAVIGATION_BAR_SEARCH_INPUT_FOCUS_CHANGED, ON_PAGE_NOT_FOUND, ON_PAGE_SCROLL, ON_PULL_DOWN_REFRESH, ON_REACH_BOTTOM, ON_REACH_BOTTOM_DISTANCE, ON_READY, ON_RESIZE, ON_SAVE_EXIT_STATE, ON_SHARE_APP_MESSAGE, ON_SHARE_CHAT, ON_SHARE_TIMELINE, ON_SHOW, ON_TAB_ITEM_TAP, ON_THEME_CHANGE, ON_UNHANDLE_REJECTION, ON_UNLOAD, ON_WEB_INVOKE_APP_SERVICE, ON_WXS_INVOKE_CALL_METHOD, PLUS_RE, PRIMARY_COLOR, RENDERJS_MODULES, RESPONSIVE_MIN_WIDTH, SCHEME_RE, SELECTED_COLOR, SLOT_DEFAULT_NAME, TABBAR_HEIGHT, TAGS, UNI_SSR, UNI_SSR_DATA, UNI_SSR_GLOBAL_DATA, UNI_SSR_STORE, UNI_SSR_TITLE, UNI_STORAGE_LOCALE, UNI_UI_CONFLICT_TAGS, UVUE_BUILT_IN_TAGS, UVUE_HARMONY_BUILT_IN_TAGS, UVUE_IOS_BUILT_IN_TAGS, UVUE_WEB_BUILT_IN_TAGS, UniBaseNode, UniCommentNode, UniElement, UniEvent, UniInputElement, UniLifecycleHooks, UniNode, UniTextAreaElement, UniTextNode, VIRTUAL_HOST_CLASS, VIRTUAL_HOST_HIDDEN, VIRTUAL_HOST_ID, VIRTUAL_HOST_STYLE, WEB_INVOKE_APPSERVICE, WXS_MODULES, WXS_PROTOCOL, addFont, addLeadingSlash, borderStyles, cache, cacheStringFunction, callOptions, createIsCustomElement, createRpx2Unit, createUniEvent, customizeEvent, debounce, decode, decodedQuery, defaultMiniProgramRpx2Unit, defaultNVueRpx2Unit, defaultRpx2Unit, dynamicSlotName, forcePatchProp, formatDateTime, formatLog, getCustomDataset, getEnvLocale, getGlobal, getLen, getValueByDataPath, initCustomDatasetOnce, invokeArrayFns, invokeCreateErrorHandler, invokeCreateVueAppHook, isAppHarmonyUVueNativeTag, isAppIOSUVueNativeTag, isAppNVueNativeTag, isAppNativeTag, isAppUVueBuiltInEasyComponent, isAppUVueNativeTag, isAppVoidTag, isBuiltInComponent, isComponentInternalInstance, isComponentTag, isH5CustomElement, isH5NativeTag, isIntegerKey, isMiniProgramNativeTag, isMiniProgramUVueNativeTag, isRootHook, isRootImmediateHook, isUniLifecycleHook, isUniXElement, normalizeClass, normalizeDataset, normalizeEventType, normalizeProps, normalizeStyle, normalizeStyles, normalizeTabBarStyles, normalizeTarget, normalizeTitleColor, onCreateVueApp, once, parseEventName, parseNVueDataset, parseQuery, parseUrl, passive, plusReady, removeLeadingSlash, resolveComponentInstance, resolveOwnerEl, resolveOwnerVm, sanitise, scrollTo, sortObject, stringifyQuery, updateElementStyle };\n","import { isRootHook, getValueByDataPath, isUniLifecycleHook, ON_ERROR, UniLifecycleHooks, invokeCreateErrorHandler, dynamicSlotName } from '@dcloudio/uni-shared';\nimport { NOOP, extend, isSymbol, isObject, def, hasChanged, isFunction, isArray, isPromise, camelize, capitalize, EMPTY_OBJ, remove, toHandlerKey, hasOwn, hyphenate, isReservedProp, toRawType, isString, normalizeClass, normalizeStyle, isOn, toTypeString, isMap, isIntegerKey, isSet, isPlainObject, makeMap, invokeArrayFns, isBuiltInDirective, looseToNumber, NO, EMPTY_ARR, isModelListener, toNumber, toDisplayString } from '@vue/shared';\nexport { EMPTY_OBJ, camelize, normalizeClass, normalizeProps, normalizeStyle, toDisplayString, toHandlerKey } from '@vue/shared';\n\n/**\n* @dcloudio/uni-mp-vue v3.4.21\n* (c) 2018-present Yuxi (Evan) You and Vue contributors\n* @license MIT\n**/\n\nfunction warn$2(msg, ...args) {\n console.warn(`[Vue warn] ${msg}`, ...args);\n}\n\nlet activeEffectScope;\nclass EffectScope {\n constructor(detached = false) {\n this.detached = detached;\n /**\n * @internal\n */\n this._active = true;\n /**\n * @internal\n */\n this.effects = [];\n /**\n * @internal\n */\n this.cleanups = [];\n this.parent = activeEffectScope;\n if (!detached && activeEffectScope) {\n this.index = (activeEffectScope.scopes || (activeEffectScope.scopes = [])).push(\n this\n ) - 1;\n }\n }\n get active() {\n return this._active;\n }\n run(fn) {\n if (this._active) {\n const currentEffectScope = activeEffectScope;\n try {\n activeEffectScope = this;\n return fn();\n } finally {\n activeEffectScope = currentEffectScope;\n }\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$2(`cannot run an inactive effect scope.`);\n }\n }\n /**\n * This should only be called on non-detached scopes\n * @internal\n */\n on() {\n activeEffectScope = this;\n }\n /**\n * This should only be called on non-detached scopes\n * @internal\n */\n off() {\n activeEffectScope = this.parent;\n }\n stop(fromParent) {\n if (this._active) {\n let i, l;\n for (i = 0, l = this.effects.length; i < l; i++) {\n this.effects[i].stop();\n }\n for (i = 0, l = this.cleanups.length; i < l; i++) {\n this.cleanups[i]();\n }\n if (this.scopes) {\n for (i = 0, l = this.scopes.length; i < l; i++) {\n this.scopes[i].stop(true);\n }\n }\n if (!this.detached && this.parent && !fromParent) {\n const last = this.parent.scopes.pop();\n if (last && last !== this) {\n this.parent.scopes[this.index] = last;\n last.index = this.index;\n }\n }\n this.parent = void 0;\n this._active = false;\n }\n }\n}\nfunction effectScope(detached) {\n return new EffectScope(detached);\n}\nfunction recordEffectScope(effect, scope = activeEffectScope) {\n if (scope && scope.active) {\n scope.effects.push(effect);\n }\n}\nfunction getCurrentScope() {\n return activeEffectScope;\n}\nfunction onScopeDispose(fn) {\n if (activeEffectScope) {\n activeEffectScope.cleanups.push(fn);\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$2(\n `onScopeDispose() is called when there is no active effect scope to be associated with.`\n );\n }\n}\n\nlet activeEffect;\nclass ReactiveEffect {\n constructor(fn, trigger, scheduler, scope) {\n this.fn = fn;\n this.trigger = trigger;\n this.scheduler = scheduler;\n this.active = true;\n this.deps = [];\n /**\n * @internal\n */\n this._dirtyLevel = 4;\n /**\n * @internal\n */\n this._trackId = 0;\n /**\n * @internal\n */\n this._runnings = 0;\n /**\n * @internal\n */\n this._shouldSchedule = false;\n /**\n * @internal\n */\n this._depsLength = 0;\n recordEffectScope(this, scope);\n }\n get dirty() {\n if (this._dirtyLevel === 2 || this._dirtyLevel === 3) {\n this._dirtyLevel = 1;\n pauseTracking();\n for (let i = 0; i < this._depsLength; i++) {\n const dep = this.deps[i];\n if (dep.computed) {\n triggerComputed(dep.computed);\n if (this._dirtyLevel >= 4) {\n break;\n }\n }\n }\n if (this._dirtyLevel === 1) {\n this._dirtyLevel = 0;\n }\n resetTracking();\n }\n return this._dirtyLevel >= 4;\n }\n set dirty(v) {\n this._dirtyLevel = v ? 4 : 0;\n }\n run() {\n this._dirtyLevel = 0;\n if (!this.active) {\n return this.fn();\n }\n let lastShouldTrack = shouldTrack;\n let lastEffect = activeEffect;\n try {\n shouldTrack = true;\n activeEffect = this;\n this._runnings++;\n preCleanupEffect(this);\n return this.fn();\n } finally {\n postCleanupEffect(this);\n this._runnings--;\n activeEffect = lastEffect;\n shouldTrack = lastShouldTrack;\n }\n }\n stop() {\n var _a;\n if (this.active) {\n preCleanupEffect(this);\n postCleanupEffect(this);\n (_a = this.onStop) == null ? void 0 : _a.call(this);\n this.active = false;\n }\n }\n}\nfunction triggerComputed(computed) {\n return computed.value;\n}\nfunction preCleanupEffect(effect2) {\n effect2._trackId++;\n effect2._depsLength = 0;\n}\nfunction postCleanupEffect(effect2) {\n if (effect2.deps.length > effect2._depsLength) {\n for (let i = effect2._depsLength; i < effect2.deps.length; i++) {\n cleanupDepEffect(effect2.deps[i], effect2);\n }\n effect2.deps.length = effect2._depsLength;\n }\n}\nfunction cleanupDepEffect(dep, effect2) {\n const trackId = dep.get(effect2);\n if (trackId !== void 0 && effect2._trackId !== trackId) {\n dep.delete(effect2);\n if (dep.size === 0) {\n dep.cleanup();\n }\n }\n}\nfunction effect(fn, options) {\n if (fn.effect instanceof ReactiveEffect) {\n fn = fn.effect.fn;\n }\n const _effect = new ReactiveEffect(fn, NOOP, () => {\n if (_effect.dirty) {\n _effect.run();\n }\n });\n if (options) {\n extend(_effect, options);\n if (options.scope)\n recordEffectScope(_effect, options.scope);\n }\n if (!options || !options.lazy) {\n _effect.run();\n }\n const runner = _effect.run.bind(_effect);\n runner.effect = _effect;\n return runner;\n}\nfunction stop(runner) {\n runner.effect.stop();\n}\nlet shouldTrack = true;\nlet pauseScheduleStack = 0;\nconst trackStack = [];\nfunction pauseTracking() {\n trackStack.push(shouldTrack);\n shouldTrack = false;\n}\nfunction resetTracking() {\n const last = trackStack.pop();\n shouldTrack = last === void 0 ? true : last;\n}\nfunction pauseScheduling() {\n pauseScheduleStack++;\n}\nfunction resetScheduling() {\n pauseScheduleStack--;\n while (!pauseScheduleStack && queueEffectSchedulers.length) {\n queueEffectSchedulers.shift()();\n }\n}\nfunction trackEffect(effect2, dep, debuggerEventExtraInfo) {\n var _a;\n if (dep.get(effect2) !== effect2._trackId) {\n dep.set(effect2, effect2._trackId);\n const oldDep = effect2.deps[effect2._depsLength];\n if (oldDep !== dep) {\n if (oldDep) {\n cleanupDepEffect(oldDep, effect2);\n }\n effect2.deps[effect2._depsLength++] = dep;\n } else {\n effect2._depsLength++;\n }\n if (!!(process.env.NODE_ENV !== \"production\")) {\n (_a = effect2.onTrack) == null ? void 0 : _a.call(effect2, extend({ effect: effect2 }, debuggerEventExtraInfo));\n }\n }\n}\nconst queueEffectSchedulers = [];\nfunction triggerEffects(dep, dirtyLevel, debuggerEventExtraInfo) {\n var _a;\n pauseScheduling();\n for (const effect2 of dep.keys()) {\n let tracking;\n if (effect2._dirtyLevel < dirtyLevel && (tracking != null ? tracking : tracking = dep.get(effect2) === effect2._trackId)) {\n effect2._shouldSchedule || (effect2._shouldSchedule = effect2._dirtyLevel === 0);\n effect2._dirtyLevel = dirtyLevel;\n }\n if (effect2._shouldSchedule && (tracking != null ? tracking : tracking = dep.get(effect2) === effect2._trackId)) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n (_a = effect2.onTrigger) == null ? void 0 : _a.call(effect2, extend({ effect: effect2 }, debuggerEventExtraInfo));\n }\n effect2.trigger();\n if ((!effect2._runnings || effect2.allowRecurse) && effect2._dirtyLevel !== 2) {\n effect2._shouldSchedule = false;\n if (effect2.scheduler) {\n queueEffectSchedulers.push(effect2.scheduler);\n }\n }\n }\n }\n resetScheduling();\n}\n\nconst createDep = (cleanup, computed) => {\n const dep = /* @__PURE__ */ new Map();\n dep.cleanup = cleanup;\n dep.computed = computed;\n return dep;\n};\n\nconst targetMap = /* @__PURE__ */ new WeakMap();\nconst ITERATE_KEY = Symbol(!!(process.env.NODE_ENV !== \"production\") ? \"iterate\" : \"\");\nconst MAP_KEY_ITERATE_KEY = Symbol(!!(process.env.NODE_ENV !== \"production\") ? \"Map key iterate\" : \"\");\nfunction track(target, type, key) {\n if (shouldTrack && activeEffect) {\n let depsMap = targetMap.get(target);\n if (!depsMap) {\n targetMap.set(target, depsMap = /* @__PURE__ */ new Map());\n }\n let dep = depsMap.get(key);\n if (!dep) {\n depsMap.set(key, dep = createDep(() => depsMap.delete(key)));\n }\n trackEffect(\n activeEffect,\n dep,\n !!(process.env.NODE_ENV !== \"production\") ? {\n target,\n type,\n key\n } : void 0\n );\n }\n}\nfunction trigger(target, type, key, newValue, oldValue, oldTarget) {\n const depsMap = targetMap.get(target);\n if (!depsMap) {\n return;\n }\n let deps = [];\n if (type === \"clear\") {\n deps = [...depsMap.values()];\n } else if (key === \"length\" && isArray(target)) {\n const newLength = Number(newValue);\n depsMap.forEach((dep, key2) => {\n if (key2 === \"length\" || !isSymbol(key2) && key2 >= newLength) {\n deps.push(dep);\n }\n });\n } else {\n if (key !== void 0) {\n deps.push(depsMap.get(key));\n }\n switch (type) {\n case \"add\":\n if (!isArray(target)) {\n deps.push(depsMap.get(ITERATE_KEY));\n if (isMap(target)) {\n deps.push(depsMap.get(MAP_KEY_ITERATE_KEY));\n }\n } else if (isIntegerKey(key)) {\n deps.push(depsMap.get(\"length\"));\n }\n break;\n case \"delete\":\n if (!isArray(target)) {\n deps.push(depsMap.get(ITERATE_KEY));\n if (isMap(target)) {\n deps.push(depsMap.get(MAP_KEY_ITERATE_KEY));\n }\n }\n break;\n case \"set\":\n if (isMap(target)) {\n deps.push(depsMap.get(ITERATE_KEY));\n }\n break;\n }\n }\n pauseScheduling();\n for (const dep of deps) {\n if (dep) {\n triggerEffects(\n dep,\n 4,\n !!(process.env.NODE_ENV !== \"production\") ? {\n target,\n type,\n key,\n newValue,\n oldValue,\n oldTarget\n } : void 0\n );\n }\n }\n resetScheduling();\n}\nfunction getDepFromReactive(object, key) {\n var _a;\n return (_a = targetMap.get(object)) == null ? void 0 : _a.get(key);\n}\n\nconst isNonTrackableKeys = /* @__PURE__ */ makeMap(`__proto__,__v_isRef,__isVue`);\nconst builtInSymbols = new Set(\n /* @__PURE__ */ Object.getOwnPropertyNames(Symbol).filter((key) => key !== \"arguments\" && key !== \"caller\").map((key) => Symbol[key]).filter(isSymbol)\n);\nconst arrayInstrumentations = /* @__PURE__ */ createArrayInstrumentations();\nfunction createArrayInstrumentations() {\n const instrumentations = {};\n [\"includes\", \"indexOf\", \"lastIndexOf\"].forEach((key) => {\n instrumentations[key] = function(...args) {\n const arr = toRaw(this);\n for (let i = 0, l = this.length; i < l; i++) {\n track(arr, \"get\", i + \"\");\n }\n const res = arr[key](...args);\n if (res === -1 || res === false) {\n return arr[key](...args.map(toRaw));\n } else {\n return res;\n }\n };\n });\n [\"push\", \"pop\", \"shift\", \"unshift\", \"splice\"].forEach((key) => {\n instrumentations[key] = function(...args) {\n pauseTracking();\n pauseScheduling();\n const res = toRaw(this)[key].apply(this, args);\n resetScheduling();\n resetTracking();\n return res;\n };\n });\n return instrumentations;\n}\nfunction hasOwnProperty(key) {\n const obj = toRaw(this);\n track(obj, \"has\", key);\n return obj.hasOwnProperty(key);\n}\nclass BaseReactiveHandler {\n constructor(_isReadonly = false, _isShallow = false) {\n this._isReadonly = _isReadonly;\n this._isShallow = _isShallow;\n }\n get(target, key, receiver) {\n const isReadonly2 = this._isReadonly, isShallow2 = this._isShallow;\n if (key === \"__v_isReactive\") {\n return !isReadonly2;\n } else if (key === \"__v_isReadonly\") {\n return isReadonly2;\n } else if (key === \"__v_isShallow\") {\n return isShallow2;\n } else if (key === \"__v_raw\") {\n if (receiver === (isReadonly2 ? isShallow2 ? shallowReadonlyMap : readonlyMap : isShallow2 ? shallowReactiveMap : reactiveMap).get(target) || // receiver is not the reactive proxy, but has the same prototype\n // this means the reciever is a user proxy of the reactive proxy\n Object.getPrototypeOf(target) === Object.getPrototypeOf(receiver)) {\n return target;\n }\n return;\n }\n const targetIsArray = isArray(target);\n if (!isReadonly2) {\n if (targetIsArray && hasOwn(arrayInstrumentations, key)) {\n return Reflect.get(arrayInstrumentations, key, receiver);\n }\n if (key === \"hasOwnProperty\") {\n return hasOwnProperty;\n }\n }\n const res = Reflect.get(target, key, receiver);\n if (isSymbol(key) ? builtInSymbols.has(key) : isNonTrackableKeys(key)) {\n return res;\n }\n if (!isReadonly2) {\n track(target, \"get\", key);\n }\n if (isShallow2) {\n return res;\n }\n if (isRef(res)) {\n return targetIsArray && isIntegerKey(key) ? res : res.value;\n }\n if (isObject(res)) {\n return isReadonly2 ? readonly(res) : reactive(res);\n }\n return res;\n }\n}\nclass MutableReactiveHandler extends BaseReactiveHandler {\n constructor(isShallow2 = false) {\n super(false, isShallow2);\n }\n set(target, key, value, receiver) {\n let oldValue = target[key];\n if (!this._isShallow) {\n const isOldValueReadonly = isReadonly(oldValue);\n if (!isShallow(value) && !isReadonly(value)) {\n oldValue = toRaw(oldValue);\n value = toRaw(value);\n }\n if (!isArray(target) && isRef(oldValue) && !isRef(value)) {\n if (isOldValueReadonly) {\n return false;\n } else {\n oldValue.value = value;\n return true;\n }\n }\n }\n const hadKey = isArray(target) && isIntegerKey(key) ? Number(key) < target.length : hasOwn(target, key);\n const result = Reflect.set(target, key, value, receiver);\n if (target === toRaw(receiver)) {\n if (!hadKey) {\n trigger(target, \"add\", key, value);\n } else if (hasChanged(value, oldValue)) {\n trigger(target, \"set\", key, value, oldValue);\n }\n }\n return result;\n }\n deleteProperty(target, key) {\n const hadKey = hasOwn(target, key);\n const oldValue = target[key];\n const result = Reflect.deleteProperty(target, key);\n if (result && hadKey) {\n trigger(target, \"delete\", key, void 0, oldValue);\n }\n return result;\n }\n has(target, key) {\n const result = Reflect.has(target, key);\n if (!isSymbol(key) || !builtInSymbols.has(key)) {\n track(target, \"has\", key);\n }\n return result;\n }\n ownKeys(target) {\n track(\n target,\n \"iterate\",\n isArray(target) ? \"length\" : ITERATE_KEY\n );\n return Reflect.ownKeys(target);\n }\n}\nclass ReadonlyReactiveHandler extends BaseReactiveHandler {\n constructor(isShallow2 = false) {\n super(true, isShallow2);\n }\n set(target, key) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$2(\n `Set operation on key \"${String(key)}\" failed: target is readonly.`,\n target\n );\n }\n return true;\n }\n deleteProperty(target, key) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$2(\n `Delete operation on key \"${String(key)}\" failed: target is readonly.`,\n target\n );\n }\n return true;\n }\n}\nconst mutableHandlers = /* @__PURE__ */ new MutableReactiveHandler();\nconst readonlyHandlers = /* @__PURE__ */ new ReadonlyReactiveHandler();\nconst shallowReactiveHandlers = /* @__PURE__ */ new MutableReactiveHandler(\n true\n);\nconst shallowReadonlyHandlers = /* @__PURE__ */ new ReadonlyReactiveHandler(true);\n\nconst toShallow = (value) => value;\nconst getProto = (v) => Reflect.getPrototypeOf(v);\nfunction get(target, key, isReadonly = false, isShallow = false) {\n target = target[\"__v_raw\"];\n const rawTarget = toRaw(target);\n const rawKey = toRaw(key);\n if (!isReadonly) {\n if (hasChanged(key, rawKey)) {\n track(rawTarget, \"get\", key);\n }\n track(rawTarget, \"get\", rawKey);\n }\n const { has: has2 } = getProto(rawTarget);\n const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive;\n if (has2.call(rawTarget, key)) {\n return wrap(target.get(key));\n } else if (has2.call(rawTarget, rawKey)) {\n return wrap(target.get(rawKey));\n } else if (target !== rawTarget) {\n target.get(key);\n }\n}\nfunction has(key, isReadonly = false) {\n const target = this[\"__v_raw\"];\n const rawTarget = toRaw(target);\n const rawKey = toRaw(key);\n if (!isReadonly) {\n if (hasChanged(key, rawKey)) {\n track(rawTarget, \"has\", key);\n }\n track(rawTarget, \"has\", rawKey);\n }\n return key === rawKey ? target.has(key) : target.has(key) || target.has(rawKey);\n}\nfunction size(target, isReadonly = false) {\n target = target[\"__v_raw\"];\n !isReadonly && track(toRaw(target), \"iterate\", ITERATE_KEY);\n return Reflect.get(target, \"size\", target);\n}\nfunction add(value) {\n value = toRaw(value);\n const target = toRaw(this);\n const proto = getProto(target);\n const hadKey = proto.has.call(target, value);\n if (!hadKey) {\n target.add(value);\n trigger(target, \"add\", value, value);\n }\n return this;\n}\nfunction set$1(key, value) {\n value = toRaw(value);\n const target = toRaw(this);\n const { has: has2, get: get2 } = getProto(target);\n let hadKey = has2.call(target, key);\n if (!hadKey) {\n key = toRaw(key);\n hadKey = has2.call(target, key);\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n checkIdentityKeys(target, has2, key);\n }\n const oldValue = get2.call(target, key);\n target.set(key, value);\n if (!hadKey) {\n trigger(target, \"add\", key, value);\n } else if (hasChanged(value, oldValue)) {\n trigger(target, \"set\", key, value, oldValue);\n }\n return this;\n}\nfunction deleteEntry(key) {\n const target = toRaw(this);\n const { has: has2, get: get2 } = getProto(target);\n let hadKey = has2.call(target, key);\n if (!hadKey) {\n key = toRaw(key);\n hadKey = has2.call(target, key);\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n checkIdentityKeys(target, has2, key);\n }\n const oldValue = get2 ? get2.call(target, key) : void 0;\n const result = target.delete(key);\n if (hadKey) {\n trigger(target, \"delete\", key, void 0, oldValue);\n }\n return result;\n}\nfunction clear() {\n const target = toRaw(this);\n const hadItems = target.size !== 0;\n const oldTarget = !!(process.env.NODE_ENV !== \"production\") ? isMap(target) ? new Map(target) : new Set(target) : void 0;\n const result = target.clear();\n if (hadItems) {\n trigger(target, \"clear\", void 0, void 0, oldTarget);\n }\n return result;\n}\nfunction createForEach(isReadonly, isShallow) {\n return function forEach(callback, thisArg) {\n const observed = this;\n const target = observed[\"__v_raw\"];\n const rawTarget = toRaw(target);\n const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive;\n !isReadonly && track(rawTarget, \"iterate\", ITERATE_KEY);\n return target.forEach((value, key) => {\n return callback.call(thisArg, wrap(value), wrap(key), observed);\n });\n };\n}\nfunction createIterableMethod(method, isReadonly, isShallow) {\n return function(...args) {\n const target = this[\"__v_raw\"];\n const rawTarget = toRaw(target);\n const targetIsMap = isMap(rawTarget);\n const isPair = method === \"entries\" || method === Symbol.iterator && targetIsMap;\n const isKeyOnly = method === \"keys\" && targetIsMap;\n const innerIterator = target[method](...args);\n const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive;\n !isReadonly && track(\n rawTarget,\n \"iterate\",\n isKeyOnly ? MAP_KEY_ITERATE_KEY : ITERATE_KEY\n );\n return {\n // iterator protocol\n next() {\n const { value, done } = innerIterator.next();\n return done ? { value, done } : {\n value: isPair ? [wrap(value[0]), wrap(value[1])] : wrap(value),\n done\n };\n },\n // iterable protocol\n [Symbol.iterator]() {\n return this;\n }\n };\n };\n}\nfunction createReadonlyMethod(type) {\n return function(...args) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n const key = args[0] ? `on key \"${args[0]}\" ` : ``;\n warn$2(\n `${capitalize(type)} operation ${key}failed: target is readonly.`,\n toRaw(this)\n );\n }\n return type === \"delete\" ? false : type === \"clear\" ? void 0 : this;\n };\n}\nfunction createInstrumentations() {\n const mutableInstrumentations2 = {\n get(key) {\n return get(this, key);\n },\n get size() {\n return size(this);\n },\n has,\n add,\n set: set$1,\n delete: deleteEntry,\n clear,\n forEach: createForEach(false, false)\n };\n const shallowInstrumentations2 = {\n get(key) {\n return get(this, key, false, true);\n },\n get size() {\n return size(this);\n },\n has,\n add,\n set: set$1,\n delete: deleteEntry,\n clear,\n forEach: createForEach(false, true)\n };\n const readonlyInstrumentations2 = {\n get(key) {\n return get(this, key, true);\n },\n get size() {\n return size(this, true);\n },\n has(key) {\n return has.call(this, key, true);\n },\n add: createReadonlyMethod(\"add\"),\n set: createReadonlyMethod(\"set\"),\n delete: createReadonlyMethod(\"delete\"),\n clear: createReadonlyMethod(\"clear\"),\n forEach: createForEach(true, false)\n };\n const shallowReadonlyInstrumentations2 = {\n get(key) {\n return get(this, key, true, true);\n },\n get size() {\n return size(this, true);\n },\n has(key) {\n return has.call(this, key, true);\n },\n add: createReadonlyMethod(\"add\"),\n set: createReadonlyMethod(\"set\"),\n delete: createReadonlyMethod(\"delete\"),\n clear: createReadonlyMethod(\"clear\"),\n forEach: createForEach(true, true)\n };\n const iteratorMethods = [\n \"keys\",\n \"values\",\n \"entries\",\n Symbol.iterator\n ];\n iteratorMethods.forEach((method) => {\n mutableInstrumentations2[method] = createIterableMethod(method, false, false);\n readonlyInstrumentations2[method] = createIterableMethod(method, true, false);\n shallowInstrumentations2[method] = createIterableMethod(method, false, true);\n shallowReadonlyInstrumentations2[method] = createIterableMethod(\n method,\n true,\n true\n );\n });\n return [\n mutableInstrumentations2,\n readonlyInstrumentations2,\n shallowInstrumentations2,\n shallowReadonlyInstrumentations2\n ];\n}\nconst [\n mutableInstrumentations,\n readonlyInstrumentations,\n shallowInstrumentations,\n shallowReadonlyInstrumentations\n] = /* @__PURE__ */ createInstrumentations();\nfunction createInstrumentationGetter(isReadonly, shallow) {\n const instrumentations = shallow ? isReadonly ? shallowReadonlyInstrumentations : shallowInstrumentations : isReadonly ? readonlyInstrumentations : mutableInstrumentations;\n return (target, key, receiver) => {\n if (key === \"__v_isReactive\") {\n return !isReadonly;\n } else if (key === \"__v_isReadonly\") {\n return isReadonly;\n } else if (key === \"__v_raw\") {\n return target;\n }\n return Reflect.get(\n hasOwn(instrumentations, key) && key in target ? instrumentations : target,\n key,\n receiver\n );\n };\n}\nconst mutableCollectionHandlers = {\n get: /* @__PURE__ */ createInstrumentationGetter(false, false)\n};\nconst shallowCollectionHandlers = {\n get: /* @__PURE__ */ createInstrumentationGetter(false, true)\n};\nconst readonlyCollectionHandlers = {\n get: /* @__PURE__ */ createInstrumentationGetter(true, false)\n};\nconst shallowReadonlyCollectionHandlers = {\n get: /* @__PURE__ */ createInstrumentationGetter(true, true)\n};\nfunction checkIdentityKeys(target, has2, key) {\n const rawKey = toRaw(key);\n if (rawKey !== key && has2.call(target, rawKey)) {\n const type = toRawType(target);\n warn$2(\n `Reactive ${type} contains both the raw and reactive versions of the same object${type === `Map` ? ` as keys` : ``}, which can lead to inconsistencies. Avoid differentiating between the raw and reactive versions of an object and only use the reactive version if possible.`\n );\n }\n}\n\nconst reactiveMap = /* @__PURE__ */ new WeakMap();\nconst shallowReactiveMap = /* @__PURE__ */ new WeakMap();\nconst readonlyMap = /* @__PURE__ */ new WeakMap();\nconst shallowReadonlyMap = /* @__PURE__ */ new WeakMap();\nfunction targetTypeMap(rawType) {\n switch (rawType) {\n case \"Object\":\n case \"Array\":\n return 1 /* COMMON */;\n case \"Map\":\n case \"Set\":\n case \"WeakMap\":\n case \"WeakSet\":\n return 2 /* COLLECTION */;\n default:\n return 0 /* INVALID */;\n }\n}\nfunction getTargetType(value) {\n return value[\"__v_skip\"] || !Object.isExtensible(value) ? 0 /* INVALID */ : targetTypeMap(toRawType(value));\n}\nfunction reactive(target) {\n if (isReadonly(target)) {\n return target;\n }\n return createReactiveObject(\n target,\n false,\n mutableHandlers,\n mutableCollectionHandlers,\n reactiveMap\n );\n}\nfunction shallowReactive(target) {\n return createReactiveObject(\n target,\n false,\n shallowReactiveHandlers,\n shallowCollectionHandlers,\n shallowReactiveMap\n );\n}\nfunction readonly(target) {\n return createReactiveObject(\n target,\n true,\n readonlyHandlers,\n readonlyCollectionHandlers,\n readonlyMap\n );\n}\nfunction shallowReadonly(target) {\n return createReactiveObject(\n target,\n true,\n shallowReadonlyHandlers,\n shallowReadonlyCollectionHandlers,\n shallowReadonlyMap\n );\n}\nfunction createReactiveObject(target, isReadonly2, baseHandlers, collectionHandlers, proxyMap) {\n if (!isObject(target)) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$2(`value cannot be made reactive: ${String(target)}`);\n }\n return target;\n }\n if (target[\"__v_raw\"] && !(isReadonly2 && target[\"__v_isReactive\"])) {\n return target;\n }\n const existingProxy = proxyMap.get(target);\n if (existingProxy) {\n return existingProxy;\n }\n const targetType = getTargetType(target);\n if (targetType === 0 /* INVALID */) {\n return target;\n }\n const proxy = new Proxy(\n target,\n targetType === 2 /* COLLECTION */ ? collectionHandlers : baseHandlers\n );\n proxyMap.set(target, proxy);\n return proxy;\n}\nfunction isReactive(value) {\n if (isReadonly(value)) {\n return isReactive(value[\"__v_raw\"]);\n }\n return !!(value && value[\"__v_isReactive\"]);\n}\nfunction isReadonly(value) {\n return !!(value && value[\"__v_isReadonly\"]);\n}\nfunction isShallow(value) {\n return !!(value && value[\"__v_isShallow\"]);\n}\nfunction isProxy(value) {\n return isReactive(value) || isReadonly(value);\n}\nfunction toRaw(observed) {\n const raw = observed && observed[\"__v_raw\"];\n return raw ? toRaw(raw) : observed;\n}\nfunction markRaw(value) {\n if (Object.isExtensible(value)) {\n def(value, \"__v_skip\", true);\n }\n return value;\n}\nconst toReactive = (value) => isObject(value) ? reactive(value) : value;\nconst toReadonly = (value) => isObject(value) ? readonly(value) : value;\n\nconst COMPUTED_SIDE_EFFECT_WARN = `Computed is still dirty after getter evaluation, likely because a computed is mutating its own dependency in its getter. State mutations in computed getters should be avoided. Check the docs for more details: https://vuejs.org/guide/essentials/computed.html#getters-should-be-side-effect-free`;\nclass ComputedRefImpl {\n constructor(getter, _setter, isReadonly, isSSR) {\n this.getter = getter;\n this._setter = _setter;\n this.dep = void 0;\n this.__v_isRef = true;\n this[\"__v_isReadonly\"] = false;\n this.effect = new ReactiveEffect(\n () => getter(this._value),\n () => triggerRefValue(\n this,\n this.effect._dirtyLevel === 2 ? 2 : 3\n )\n );\n this.effect.computed = this;\n this.effect.active = this._cacheable = !isSSR;\n this[\"__v_isReadonly\"] = isReadonly;\n }\n get value() {\n const self = toRaw(this);\n if ((!self._cacheable || self.effect.dirty) && hasChanged(self._value, self._value = self.effect.run())) {\n triggerRefValue(self, 4);\n }\n trackRefValue(self);\n if (self.effect._dirtyLevel >= 2) {\n if (!!(process.env.NODE_ENV !== \"production\") && this._warnRecursive) {\n warn$2(COMPUTED_SIDE_EFFECT_WARN, `\n\ngetter: `, this.getter);\n }\n triggerRefValue(self, 2);\n }\n return self._value;\n }\n set value(newValue) {\n this._setter(newValue);\n }\n // #region polyfill _dirty for backward compatibility third party code for Vue <= 3.3.x\n get _dirty() {\n return this.effect.dirty;\n }\n set _dirty(v) {\n this.effect.dirty = v;\n }\n // #endregion\n}\nfunction computed$1(getterOrOptions, debugOptions, isSSR = false) {\n let getter;\n let setter;\n const onlyGetter = isFunction(getterOrOptions);\n if (onlyGetter) {\n getter = getterOrOptions;\n setter = !!(process.env.NODE_ENV !== \"production\") ? () => {\n warn$2(\"Write operation failed: computed value is readonly\");\n } : NOOP;\n } else {\n getter = getterOrOptions.get;\n setter = getterOrOptions.set;\n }\n const cRef = new ComputedRefImpl(getter, setter, onlyGetter || !setter, isSSR);\n if (!!(process.env.NODE_ENV !== \"production\") && debugOptions && !isSSR) {\n cRef.effect.onTrack = debugOptions.onTrack;\n cRef.effect.onTrigger = debugOptions.onTrigger;\n }\n return cRef;\n}\n\nfunction trackRefValue(ref2) {\n var _a;\n if (shouldTrack && activeEffect) {\n ref2 = toRaw(ref2);\n trackEffect(\n activeEffect,\n (_a = ref2.dep) != null ? _a : ref2.dep = createDep(\n () => ref2.dep = void 0,\n ref2 instanceof ComputedRefImpl ? ref2 : void 0\n ),\n !!(process.env.NODE_ENV !== \"production\") ? {\n target: ref2,\n type: \"get\",\n key: \"value\"\n } : void 0\n );\n }\n}\nfunction triggerRefValue(ref2, dirtyLevel = 4, newVal) {\n ref2 = toRaw(ref2);\n const dep = ref2.dep;\n if (dep) {\n triggerEffects(\n dep,\n dirtyLevel,\n !!(process.env.NODE_ENV !== \"production\") ? {\n target: ref2,\n type: \"set\",\n key: \"value\",\n newValue: newVal\n } : void 0\n );\n }\n}\nfunction isRef(r) {\n return !!(r && r.__v_isRef === true);\n}\nfunction ref(value) {\n return createRef(value, false);\n}\nfunction shallowRef(value) {\n return createRef(value, true);\n}\nfunction createRef(rawValue, shallow) {\n if (isRef(rawValue)) {\n return rawValue;\n }\n return new RefImpl(rawValue, shallow);\n}\nclass RefImpl {\n constructor(value, __v_isShallow) {\n this.__v_isShallow = __v_isShallow;\n this.dep = void 0;\n this.__v_isRef = true;\n this._rawValue = __v_isShallow ? value : toRaw(value);\n this._value = __v_isShallow ? value : toReactive(value);\n }\n get value() {\n trackRefValue(this);\n return this._value;\n }\n set value(newVal) {\n const useDirectValue = this.__v_isShallow || isShallow(newVal) || isReadonly(newVal);\n newVal = useDirectValue ? newVal : toRaw(newVal);\n if (hasChanged(newVal, this._rawValue)) {\n this._rawValue = newVal;\n this._value = useDirectValue ? newVal : toReactive(newVal);\n triggerRefValue(this, 4, newVal);\n }\n }\n}\nfunction triggerRef(ref2) {\n triggerRefValue(ref2, 4, !!(process.env.NODE_ENV !== \"production\") ? ref2.value : void 0);\n}\nfunction unref(ref2) {\n return isRef(ref2) ? ref2.value : ref2;\n}\nfunction toValue(source) {\n return isFunction(source) ? source() : unref(source);\n}\nconst shallowUnwrapHandlers = {\n get: (target, key, receiver) => unref(Reflect.get(target, key, receiver)),\n set: (target, key, value, receiver) => {\n const oldValue = target[key];\n if (isRef(oldValue) && !isRef(value)) {\n oldValue.value = value;\n return true;\n } else {\n return Reflect.set(target, key, value, receiver);\n }\n }\n};\nfunction proxyRefs(objectWithRefs) {\n return isReactive(objectWithRefs) ? objectWithRefs : new Proxy(objectWithRefs, shallowUnwrapHandlers);\n}\nclass CustomRefImpl {\n constructor(factory) {\n this.dep = void 0;\n this.__v_isRef = true;\n const { get, set } = factory(\n () => trackRefValue(this),\n () => triggerRefValue(this)\n );\n this._get = get;\n this._set = set;\n }\n get value() {\n return this._get();\n }\n set value(newVal) {\n this._set(newVal);\n }\n}\nfunction customRef(factory) {\n return new CustomRefImpl(factory);\n}\nfunction toRefs(object) {\n if (!!(process.env.NODE_ENV !== \"production\") && !isProxy(object)) {\n warn$2(`toRefs() expects a reactive object but received a plain one.`);\n }\n const ret = isArray(object) ? new Array(object.length) : {};\n for (const key in object) {\n ret[key] = propertyToRef(object, key);\n }\n return ret;\n}\nclass ObjectRefImpl {\n constructor(_object, _key, _defaultValue) {\n this._object = _object;\n this._key = _key;\n this._defaultValue = _defaultValue;\n this.__v_isRef = true;\n }\n get value() {\n const val = this._object[this._key];\n return val === void 0 ? this._defaultValue : val;\n }\n set value(newVal) {\n this._object[this._key] = newVal;\n }\n get dep() {\n return getDepFromReactive(toRaw(this._object), this._key);\n }\n}\nclass GetterRefImpl {\n constructor(_getter) {\n this._getter = _getter;\n this.__v_isRef = true;\n this.__v_isReadonly = true;\n }\n get value() {\n return this._getter();\n }\n}\nfunction toRef(source, key, defaultValue) {\n if (isRef(source)) {\n return source;\n } else if (isFunction(source)) {\n return new GetterRefImpl(source);\n } else if (isObject(source) && arguments.length > 1) {\n return propertyToRef(source, key, defaultValue);\n } else {\n return ref(source);\n }\n}\nfunction propertyToRef(source, key, defaultValue) {\n const val = source[key];\n return isRef(val) ? val : new ObjectRefImpl(source, key, defaultValue);\n}\n\nconst stack = [];\nfunction pushWarningContext(vnode) {\n stack.push(vnode);\n}\nfunction popWarningContext() {\n stack.pop();\n}\nfunction warn$1(msg, ...args) {\n pauseTracking();\n const instance = stack.length ? stack[stack.length - 1].component : null;\n const appWarnHandler = instance && instance.appContext.config.warnHandler;\n const trace = getComponentTrace();\n if (appWarnHandler) {\n callWithErrorHandling(\n appWarnHandler,\n instance,\n 11,\n [\n msg + args.map((a) => {\n var _a, _b;\n return (_b = (_a = a.toString) == null ? void 0 : _a.call(a)) != null ? _b : JSON.stringify(a);\n }).join(\"\"),\n instance && instance.proxy,\n trace.map(\n ({ vnode }) => `at <${formatComponentName(instance, vnode.type)}>`\n ).join(\"\\n\"),\n trace\n ]\n );\n } else {\n const warnArgs = [`[Vue warn]: ${msg}`, ...args];\n if (trace.length && // avoid spamming console during tests\n true) {\n warnArgs.push(`\n`, ...formatTrace(trace));\n }\n console.warn(...warnArgs);\n }\n resetTracking();\n}\nfunction getComponentTrace() {\n let currentVNode = stack[stack.length - 1];\n if (!currentVNode) {\n return [];\n }\n const normalizedStack = [];\n while (currentVNode) {\n const last = normalizedStack[0];\n if (last && last.vnode === currentVNode) {\n last.recurseCount++;\n } else {\n normalizedStack.push({\n vnode: currentVNode,\n recurseCount: 0\n });\n }\n const parentInstance = currentVNode.component && currentVNode.component.parent;\n currentVNode = parentInstance && parentInstance.vnode;\n }\n return normalizedStack;\n}\nfunction formatTrace(trace) {\n const logs = [];\n trace.forEach((entry, i) => {\n logs.push(...i === 0 ? [] : [`\n`], ...formatTraceEntry(entry));\n });\n return logs;\n}\nfunction formatTraceEntry({ vnode, recurseCount }) {\n const postfix = recurseCount > 0 ? `... (${recurseCount} recursive calls)` : ``;\n const isRoot = vnode.component ? vnode.component.parent == null : false;\n const open = ` at <${formatComponentName(\n vnode.component,\n vnode.type,\n isRoot\n )}`;\n const close = `>` + postfix;\n return vnode.props ? [open, ...formatProps(vnode.props), close] : [open + close];\n}\nfunction formatProps(props) {\n const res = [];\n const keys = Object.keys(props);\n keys.slice(0, 3).forEach((key) => {\n res.push(...formatProp(key, props[key]));\n });\n if (keys.length > 3) {\n res.push(` ...`);\n }\n return res;\n}\nfunction formatProp(key, value, raw) {\n if (isString(value)) {\n value = JSON.stringify(value);\n return raw ? value : [`${key}=${value}`];\n } else if (typeof value === \"number\" || typeof value === \"boolean\" || value == null) {\n return raw ? value : [`${key}=${value}`];\n } else if (isRef(value)) {\n value = formatProp(key, toRaw(value.value), true);\n return raw ? value : [`${key}=Ref<`, value, `>`];\n } else if (isFunction(value)) {\n return [`${key}=fn${value.name ? `<${value.name}>` : ``}`];\n } else {\n value = toRaw(value);\n return raw ? value : [`${key}=`, value];\n }\n}\n\nconst ErrorTypeStrings = {\n [\"sp\"]: \"serverPrefetch hook\",\n [\"bc\"]: \"beforeCreate hook\",\n [\"c\"]: \"created hook\",\n [\"bm\"]: \"beforeMount hook\",\n [\"m\"]: \"mounted hook\",\n [\"bu\"]: \"beforeUpdate hook\",\n [\"u\"]: \"updated\",\n [\"bum\"]: \"beforeUnmount hook\",\n [\"um\"]: \"unmounted hook\",\n [\"a\"]: \"activated hook\",\n [\"da\"]: \"deactivated hook\",\n [\"ec\"]: \"errorCaptured hook\",\n [\"rtc\"]: \"renderTracked hook\",\n [\"rtg\"]: \"renderTriggered hook\",\n [0]: \"setup function\",\n [1]: \"render function\",\n [2]: \"watcher getter\",\n [3]: \"watcher callback\",\n [4]: \"watcher cleanup function\",\n [5]: \"native event handler\",\n [6]: \"component event handler\",\n [7]: \"vnode hook\",\n [8]: \"directive hook\",\n [9]: \"transition hook\",\n [10]: \"app errorHandler\",\n [11]: \"app warnHandler\",\n [12]: \"ref function\",\n [13]: \"async component loader\",\n [14]: \"scheduler flush. This is likely a Vue internals bug. Please open an issue at https://github.com/vuejs/core .\"\n};\nfunction callWithErrorHandling(fn, instance, type, args) {\n try {\n return args ? fn(...args) : fn();\n } catch (err) {\n handleError(err, instance, type);\n }\n}\nfunction callWithAsyncErrorHandling(fn, instance, type, args) {\n if (isFunction(fn)) {\n const res = callWithErrorHandling(fn, instance, type, args);\n if (res && isPromise(res)) {\n res.catch((err) => {\n handleError(err, instance, type);\n });\n }\n return res;\n }\n const values = [];\n for (let i = 0; i < fn.length; i++) {\n values.push(callWithAsyncErrorHandling(fn[i], instance, type, args));\n }\n return values;\n}\nfunction handleError(err, instance, type, throwInDev = true) {\n const contextVNode = instance ? instance.vnode : null;\n if (instance) {\n let cur = instance.parent;\n const exposedInstance = instance.proxy;\n const errorInfo = !!(process.env.NODE_ENV !== \"production\") ? ErrorTypeStrings[type] || type : `https://vuejs.org/error-reference/#runtime-${type}`;\n while (cur) {\n const errorCapturedHooks = cur.ec;\n if (errorCapturedHooks) {\n for (let i = 0; i < errorCapturedHooks.length; i++) {\n if (errorCapturedHooks[i](err, exposedInstance, errorInfo) === false) {\n return;\n }\n }\n }\n cur = cur.parent;\n }\n const appErrorHandler = instance.appContext.config.errorHandler;\n if (appErrorHandler) {\n callWithErrorHandling(\n appErrorHandler,\n null,\n 10,\n [err, exposedInstance, errorInfo]\n );\n return;\n }\n }\n logError(err, type, contextVNode, throwInDev);\n}\nfunction logError(err, type, contextVNode, throwInDev = true) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n const info = ErrorTypeStrings[type] || type;\n if (contextVNode) {\n pushWarningContext(contextVNode);\n }\n warn$1(`Unhandled error${info ? ` during execution of ${info}` : ``}`);\n if (contextVNode) {\n popWarningContext();\n }\n if (throwInDev) {\n console.error(err);\n } else {\n console.error(err);\n }\n } else {\n console.error(err);\n }\n}\n\nlet isFlushing = false;\nlet isFlushPending = false;\nconst queue = [];\nlet flushIndex = 0;\nconst pendingPostFlushCbs = [];\nlet activePostFlushCbs = null;\nlet postFlushIndex = 0;\nconst resolvedPromise = /* @__PURE__ */ Promise.resolve();\nlet currentFlushPromise = null;\nconst RECURSION_LIMIT = 100;\nfunction nextTick$1(fn) {\n const p = currentFlushPromise || resolvedPromise;\n return fn ? p.then(this ? fn.bind(this) : fn) : p;\n}\nfunction findInsertionIndex(id) {\n let start = flushIndex + 1;\n let end = queue.length;\n while (start < end) {\n const middle = start + end >>> 1;\n const middleJob = queue[middle];\n const middleJobId = getId(middleJob);\n if (middleJobId < id || middleJobId === id && middleJob.pre) {\n start = middle + 1;\n } else {\n end = middle;\n }\n }\n return start;\n}\nfunction queueJob(job) {\n if (!queue.length || !queue.includes(\n job,\n isFlushing && job.allowRecurse ? flushIndex + 1 : flushIndex\n )) {\n if (job.id == null) {\n queue.push(job);\n } else {\n queue.splice(findInsertionIndex(job.id), 0, job);\n }\n queueFlush();\n }\n}\nfunction queueFlush() {\n if (!isFlushing && !isFlushPending) {\n isFlushPending = true;\n currentFlushPromise = resolvedPromise.then(flushJobs);\n }\n}\nfunction hasQueueJob(job) {\n return queue.indexOf(job) > -1;\n}\nfunction invalidateJob(job) {\n const i = queue.indexOf(job);\n if (i > flushIndex) {\n queue.splice(i, 1);\n }\n}\nfunction queuePostFlushCb(cb) {\n if (!isArray(cb)) {\n if (!activePostFlushCbs || !activePostFlushCbs.includes(\n cb,\n cb.allowRecurse ? postFlushIndex + 1 : postFlushIndex\n )) {\n pendingPostFlushCbs.push(cb);\n }\n } else {\n pendingPostFlushCbs.push(...cb);\n }\n queueFlush();\n}\nfunction flushPreFlushCbs(instance, seen, i = isFlushing ? flushIndex + 1 : 0) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n seen = seen || /* @__PURE__ */ new Map();\n }\n for (; i < queue.length; i++) {\n const cb = queue[i];\n if (cb && cb.pre) {\n if (!!(process.env.NODE_ENV !== \"production\") && checkRecursiveUpdates(seen, cb)) {\n continue;\n }\n queue.splice(i, 1);\n i--;\n cb();\n }\n }\n}\nfunction flushPostFlushCbs(seen) {\n if (pendingPostFlushCbs.length) {\n const deduped = [...new Set(pendingPostFlushCbs)].sort(\n (a, b) => getId(a) - getId(b)\n );\n pendingPostFlushCbs.length = 0;\n if (activePostFlushCbs) {\n activePostFlushCbs.push(...deduped);\n return;\n }\n activePostFlushCbs = deduped;\n if (!!(process.env.NODE_ENV !== \"production\")) {\n seen = seen || /* @__PURE__ */ new Map();\n }\n for (postFlushIndex = 0; postFlushIndex < activePostFlushCbs.length; postFlushIndex++) {\n if (!!(process.env.NODE_ENV !== \"production\") && checkRecursiveUpdates(seen, activePostFlushCbs[postFlushIndex])) {\n continue;\n }\n activePostFlushCbs[postFlushIndex]();\n }\n activePostFlushCbs = null;\n postFlushIndex = 0;\n }\n}\nconst getId = (job) => job.id == null ? Infinity : job.id;\nconst comparator = (a, b) => {\n const diff = getId(a) - getId(b);\n if (diff === 0) {\n if (a.pre && !b.pre)\n return -1;\n if (b.pre && !a.pre)\n return 1;\n }\n return diff;\n};\nfunction flushJobs(seen) {\n isFlushPending = false;\n isFlushing = true;\n if (!!(process.env.NODE_ENV !== \"production\")) {\n seen = seen || /* @__PURE__ */ new Map();\n }\n queue.sort(comparator);\n const check = !!(process.env.NODE_ENV !== \"production\") ? (job) => checkRecursiveUpdates(seen, job) : NOOP;\n try {\n for (flushIndex = 0; flushIndex < queue.length; flushIndex++) {\n const job = queue[flushIndex];\n if (job && job.active !== false) {\n if (!!(process.env.NODE_ENV !== \"production\") && check(job)) {\n continue;\n }\n callWithErrorHandling(job, null, 14);\n }\n }\n } finally {\n flushIndex = 0;\n queue.length = 0;\n flushPostFlushCbs(seen);\n isFlushing = false;\n currentFlushPromise = null;\n if (queue.length || pendingPostFlushCbs.length) {\n flushJobs(seen);\n }\n }\n}\nfunction checkRecursiveUpdates(seen, fn) {\n if (!seen.has(fn)) {\n seen.set(fn, 1);\n } else {\n const count = seen.get(fn);\n if (count > RECURSION_LIMIT) {\n const instance = fn.ownerInstance;\n const componentName = instance && getComponentName(instance.type);\n handleError(\n `Maximum recursive updates exceeded${componentName ? ` in component <${componentName}>` : ``}. This means you have a reactive effect that is mutating its own dependencies and thus recursively triggering itself. Possible sources include component template, render function, updated hook or watcher source function.`,\n null,\n 10\n );\n return true;\n } else {\n seen.set(fn, count + 1);\n }\n }\n}\n\nlet devtools;\nlet buffer = [];\nlet devtoolsNotInstalled = false;\nfunction emit$1(event, ...args) {\n if (devtools) {\n devtools.emit(event, ...args);\n } else if (!devtoolsNotInstalled) {\n buffer.push({ event, args });\n }\n}\nfunction setDevtoolsHook(hook, target) {\n var _a, _b;\n devtools = hook;\n if (devtools) {\n devtools.enabled = true;\n buffer.forEach(({ event, args }) => devtools.emit(event, ...args));\n buffer = [];\n } else if (\n // handle late devtools injection - only do this if we are in an actual\n // browser environment to avoid the timer handle stalling test runner exit\n // (#4815)\n typeof window !== \"undefined\" && // some envs mock window but not fully\n window.HTMLElement && // also exclude jsdom\n !((_b = (_a = window.navigator) == null ? void 0 : _a.userAgent) == null ? void 0 : _b.includes(\"jsdom\"))\n ) {\n const replay = target.__VUE_DEVTOOLS_HOOK_REPLAY__ = target.__VUE_DEVTOOLS_HOOK_REPLAY__ || [];\n replay.push((newHook) => {\n setDevtoolsHook(newHook, target);\n });\n setTimeout(() => {\n if (!devtools) {\n target.__VUE_DEVTOOLS_HOOK_REPLAY__ = null;\n devtoolsNotInstalled = true;\n buffer = [];\n }\n }, 3e3);\n } else {\n devtoolsNotInstalled = true;\n buffer = [];\n }\n}\nfunction devtoolsInitApp(app, version) {\n emit$1(\"app:init\" /* APP_INIT */, app, version, {\n Fragment,\n Text,\n Comment,\n Static\n });\n}\nconst devtoolsComponentAdded = /* @__PURE__ */ createDevtoolsComponentHook(\n \"component:added\" /* COMPONENT_ADDED */\n);\nconst devtoolsComponentUpdated = /* @__PURE__ */ createDevtoolsComponentHook(\"component:updated\" /* COMPONENT_UPDATED */);\nconst _devtoolsComponentRemoved = /* @__PURE__ */ createDevtoolsComponentHook(\n \"component:removed\" /* COMPONENT_REMOVED */\n);\nconst devtoolsComponentRemoved = (component) => {\n if (devtools && typeof devtools.cleanupBuffer === \"function\" && // remove the component if it wasn't buffered\n !devtools.cleanupBuffer(component)) {\n _devtoolsComponentRemoved(component);\n }\n};\n/*! #__NO_SIDE_EFFECTS__ */\n// @__NO_SIDE_EFFECTS__\nfunction createDevtoolsComponentHook(hook) {\n return (component) => {\n emit$1(\n hook,\n component.appContext.app,\n component.uid,\n // fixed by xxxxxx\n // 为 0 是 App,无 parent 是 Page 指向 App\n component.uid === 0 ? void 0 : component.parent ? component.parent.uid : 0,\n component\n );\n };\n}\nconst devtoolsPerfStart = /* @__PURE__ */ createDevtoolsPerformanceHook(\n \"perf:start\" /* PERFORMANCE_START */\n);\nconst devtoolsPerfEnd = /* @__PURE__ */ createDevtoolsPerformanceHook(\n \"perf:end\" /* PERFORMANCE_END */\n);\nfunction createDevtoolsPerformanceHook(hook) {\n return (component, type, time) => {\n emit$1(hook, component.appContext.app, component.uid, component, type, time);\n };\n}\nfunction devtoolsComponentEmit(component, event, params) {\n emit$1(\n \"component:emit\" /* COMPONENT_EMIT */,\n component.appContext.app,\n component,\n event,\n params\n );\n}\n\nfunction emit(instance, event, ...rawArgs) {\n if (instance.isUnmounted)\n return;\n const props = instance.vnode.props || EMPTY_OBJ;\n if (!!(process.env.NODE_ENV !== \"production\")) {\n const {\n emitsOptions,\n propsOptions: [propsOptions]\n } = instance;\n if (emitsOptions) {\n if (!(event in emitsOptions) && true) {\n if (!propsOptions || !(toHandlerKey(event) in propsOptions)) {\n warn$1(\n `Component emitted event \"${event}\" but it is neither declared in the emits option nor as an \"${toHandlerKey(event)}\" prop.`\n );\n }\n } else {\n const validator = emitsOptions[event];\n if (isFunction(validator)) {\n const isValid = validator(...rawArgs);\n if (!isValid) {\n warn$1(\n `Invalid event arguments: event validation failed for event \"${event}\".`\n );\n }\n }\n }\n }\n }\n let args = rawArgs;\n const isModelListener = event.startsWith(\"update:\");\n const modelArg = isModelListener && event.slice(7);\n if (modelArg && modelArg in props) {\n const modifiersKey = `${modelArg === \"modelValue\" ? \"model\" : modelArg}Modifiers`;\n const { number, trim } = props[modifiersKey] || EMPTY_OBJ;\n if (trim) {\n args = rawArgs.map((a) => isString(a) ? a.trim() : a);\n }\n if (number) {\n args = rawArgs.map(looseToNumber);\n }\n }\n if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n devtoolsComponentEmit(instance, event, args);\n }\n if (!!(process.env.NODE_ENV !== \"production\")) {\n const lowerCaseEvent = event.toLowerCase();\n if (lowerCaseEvent !== event && props[toHandlerKey(lowerCaseEvent)]) {\n warn$1(\n `Event \"${lowerCaseEvent}\" is emitted in component ${formatComponentName(\n instance,\n instance.type\n )} but the handler is registered for \"${event}\". Note that HTML attributes are case-insensitive and you cannot use v-on to listen to camelCase events when using in-DOM templates. You should probably use \"${hyphenate(\n event\n )}\" instead of \"${event}\".`\n );\n }\n }\n let handlerName;\n let handler = props[handlerName = toHandlerKey(event)] || // also try camelCase event handler (#2249)\n props[handlerName = toHandlerKey(camelize(event))];\n if (!handler && isModelListener) {\n handler = props[handlerName = toHandlerKey(hyphenate(event))];\n }\n if (handler) {\n callWithAsyncErrorHandling(\n handler,\n instance,\n 6,\n args\n );\n }\n const onceHandler = props[handlerName + `Once`];\n if (onceHandler) {\n if (!instance.emitted) {\n instance.emitted = {};\n } else if (instance.emitted[handlerName]) {\n return;\n }\n instance.emitted[handlerName] = true;\n callWithAsyncErrorHandling(\n onceHandler,\n instance,\n 6,\n args\n );\n }\n}\nfunction normalizeEmitsOptions(comp, appContext, asMixin = false) {\n const cache = appContext.emitsCache;\n const cached = cache.get(comp);\n if (cached !== void 0) {\n return cached;\n }\n const raw = comp.emits;\n let normalized = {};\n let hasExtends = false;\n if (__VUE_OPTIONS_API__ && !isFunction(comp)) {\n const extendEmits = (raw2) => {\n const normalizedFromExtend = normalizeEmitsOptions(raw2, appContext, true);\n if (normalizedFromExtend) {\n hasExtends = true;\n extend(normalized, normalizedFromExtend);\n }\n };\n if (!asMixin && appContext.mixins.length) {\n appContext.mixins.forEach(extendEmits);\n }\n if (comp.extends) {\n extendEmits(comp.extends);\n }\n if (comp.mixins) {\n comp.mixins.forEach(extendEmits);\n }\n }\n if (!raw && !hasExtends) {\n if (isObject(comp)) {\n cache.set(comp, null);\n }\n return null;\n }\n if (isArray(raw)) {\n raw.forEach((key) => normalized[key] = null);\n } else {\n extend(normalized, raw);\n }\n if (isObject(comp)) {\n cache.set(comp, normalized);\n }\n return normalized;\n}\nfunction isEmitListener(options, key) {\n if (!options || !isOn(key)) {\n return false;\n }\n key = key.slice(2).replace(/Once$/, \"\");\n return hasOwn(options, key[0].toLowerCase() + key.slice(1)) || hasOwn(options, hyphenate(key)) || hasOwn(options, key);\n}\n\nlet currentRenderingInstance = null;\nlet currentScopeId = null;\nfunction setCurrentRenderingInstance(instance) {\n const prev = currentRenderingInstance;\n currentRenderingInstance = instance;\n currentScopeId = instance && instance.type.__scopeId || null;\n return prev;\n}\nconst withScopeId = (_id) => withCtx;\nfunction withCtx(fn, ctx = currentRenderingInstance, isNonScopedSlot) {\n if (!ctx)\n return fn;\n if (fn._n) {\n return fn;\n }\n const renderFnWithContext = (...args) => {\n if (renderFnWithContext._d) {\n setBlockTracking(-1);\n }\n const prevInstance = setCurrentRenderingInstance(ctx);\n let res;\n try {\n res = fn(...args);\n } finally {\n setCurrentRenderingInstance(prevInstance);\n if (renderFnWithContext._d) {\n setBlockTracking(1);\n }\n }\n if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n devtoolsComponentUpdated(ctx);\n }\n return res;\n };\n renderFnWithContext._n = true;\n renderFnWithContext._c = true;\n renderFnWithContext._d = true;\n return renderFnWithContext;\n}\n\nfunction markAttrsAccessed() {\n}\n\nconst COMPONENTS = \"components\";\nconst DIRECTIVES = \"directives\";\nfunction resolveComponent(name, maybeSelfReference) {\n return resolveAsset(COMPONENTS, name, true, maybeSelfReference) || name;\n}\nconst NULL_DYNAMIC_COMPONENT = Symbol.for(\"v-ndc\");\nfunction resolveDirective(name) {\n return resolveAsset(DIRECTIVES, name);\n}\nfunction resolveAsset(type, name, warnMissing = true, maybeSelfReference = false) {\n const instance = currentRenderingInstance || currentInstance;\n if (instance) {\n const Component = instance.type;\n if (type === COMPONENTS) {\n const selfName = getComponentName(\n Component,\n false\n );\n if (selfName && (selfName === name || selfName === camelize(name) || selfName === capitalize(camelize(name)))) {\n return Component;\n }\n }\n const res = (\n // local registration\n // check instance[type] first which is resolved for options API\n resolve(instance[type] || Component[type], name) || // global registration\n resolve(instance.appContext[type], name)\n );\n if (!res && maybeSelfReference) {\n return Component;\n }\n if (!!(process.env.NODE_ENV !== \"production\") && warnMissing && !res) {\n const extra = type === COMPONENTS ? `\nIf this is a native custom element, make sure to exclude it from component resolution via compilerOptions.isCustomElement.` : ``;\n warn$1(`Failed to resolve ${type.slice(0, -1)}: ${name}${extra}`);\n }\n return res;\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(\n `resolve${capitalize(type.slice(0, -1))} can only be used in render() or setup().`\n );\n }\n}\nfunction resolve(registry, name) {\n return registry && (registry[name] || registry[camelize(name)] || registry[capitalize(camelize(name))]);\n}\n\nconst ssrContextKey = Symbol.for(\"v-scx\");\nconst useSSRContext = () => {\n {\n const ctx = inject(ssrContextKey);\n if (!ctx) {\n !!(process.env.NODE_ENV !== \"production\") && warn$1(\n `Server rendering context not provided. Make sure to only call useSSRContext() conditionally in the server build.`\n );\n }\n return ctx;\n }\n};\n\nfunction watchEffect(effect, options) {\n return doWatch(effect, null, options);\n}\nfunction watchPostEffect(effect, options) {\n return doWatch(\n effect,\n null,\n !!(process.env.NODE_ENV !== \"production\") ? extend({}, options, { flush: \"post\" }) : { flush: \"post\" }\n );\n}\nfunction watchSyncEffect(effect, options) {\n return doWatch(\n effect,\n null,\n !!(process.env.NODE_ENV !== \"production\") ? extend({}, options, { flush: \"sync\" }) : { flush: \"sync\" }\n );\n}\nconst INITIAL_WATCHER_VALUE = {};\nfunction watch(source, cb, options) {\n if (!!(process.env.NODE_ENV !== \"production\") && !isFunction(cb)) {\n warn$1(\n `\\`watch(fn, options?)\\` signature has been moved to a separate API. Use \\`watchEffect(fn, options?)\\` instead. \\`watch\\` now only supports \\`watch(source, cb, options?) signature.`\n );\n }\n return doWatch(source, cb, options);\n}\nfunction doWatch(source, cb, {\n immediate,\n deep,\n flush,\n once,\n onTrack,\n onTrigger\n} = EMPTY_OBJ) {\n if (cb && once) {\n const _cb = cb;\n cb = (...args) => {\n _cb(...args);\n unwatch();\n };\n }\n if (!!(process.env.NODE_ENV !== \"production\") && deep !== void 0 && typeof deep === \"number\") {\n warn$1(\n `watch() \"deep\" option with number value will be used as watch depth in future versions. Please use a boolean instead to avoid potential breakage.`\n );\n }\n if (!!(process.env.NODE_ENV !== \"production\") && !cb) {\n if (immediate !== void 0) {\n warn$1(\n `watch() \"immediate\" option is only respected when using the watch(source, callback, options?) signature.`\n );\n }\n if (deep !== void 0) {\n warn$1(\n `watch() \"deep\" option is only respected when using the watch(source, callback, options?) signature.`\n );\n }\n if (once !== void 0) {\n warn$1(\n `watch() \"once\" option is only respected when using the watch(source, callback, options?) signature.`\n );\n }\n }\n const warnInvalidSource = (s) => {\n warn$1(\n `Invalid watch source: `,\n s,\n `A watch source can only be a getter/effect function, a ref, a reactive object, or an array of these types.`\n );\n };\n const instance = currentInstance;\n const reactiveGetter = (source2) => deep === true ? source2 : (\n // for deep: false, only traverse root-level properties\n traverse(source2, deep === false ? 1 : void 0)\n );\n let getter;\n let forceTrigger = false;\n let isMultiSource = false;\n if (isRef(source)) {\n getter = () => source.value;\n forceTrigger = isShallow(source);\n } else if (isReactive(source)) {\n getter = () => reactiveGetter(source);\n forceTrigger = true;\n } else if (isArray(source)) {\n isMultiSource = true;\n forceTrigger = source.some((s) => isReactive(s) || isShallow(s));\n getter = () => source.map((s) => {\n if (isRef(s)) {\n return s.value;\n } else if (isReactive(s)) {\n return reactiveGetter(s);\n } else if (isFunction(s)) {\n return callWithErrorHandling(s, instance, 2);\n } else {\n !!(process.env.NODE_ENV !== \"production\") && warnInvalidSource(s);\n }\n });\n } else if (isFunction(source)) {\n if (cb) {\n getter = () => callWithErrorHandling(source, instance, 2);\n } else {\n getter = () => {\n if (cleanup) {\n cleanup();\n }\n return callWithAsyncErrorHandling(\n source,\n instance,\n 3,\n [onCleanup]\n );\n };\n }\n } else {\n getter = NOOP;\n !!(process.env.NODE_ENV !== \"production\") && warnInvalidSource(source);\n }\n if (cb && deep) {\n const baseGetter = getter;\n getter = () => traverse(baseGetter());\n }\n let cleanup;\n let onCleanup = (fn) => {\n cleanup = effect.onStop = () => {\n callWithErrorHandling(fn, instance, 4);\n cleanup = effect.onStop = void 0;\n };\n };\n let oldValue = isMultiSource ? new Array(source.length).fill(INITIAL_WATCHER_VALUE) : INITIAL_WATCHER_VALUE;\n const job = () => {\n if (!effect.active || !effect.dirty) {\n return;\n }\n if (cb) {\n const newValue = effect.run();\n if (deep || forceTrigger || (isMultiSource ? newValue.some((v, i) => hasChanged(v, oldValue[i])) : hasChanged(newValue, oldValue)) || false) {\n if (cleanup) {\n cleanup();\n }\n callWithAsyncErrorHandling(cb, instance, 3, [\n newValue,\n // pass undefined as the old value when it's changed for the first time\n oldValue === INITIAL_WATCHER_VALUE ? void 0 : isMultiSource && oldValue[0] === INITIAL_WATCHER_VALUE ? [] : oldValue,\n onCleanup\n ]);\n oldValue = newValue;\n }\n } else {\n effect.run();\n }\n };\n job.allowRecurse = !!cb;\n let scheduler;\n if (flush === \"sync\") {\n scheduler = job;\n } else if (flush === \"post\") {\n scheduler = () => queuePostRenderEffect$1(job, instance && instance.suspense);\n } else {\n job.pre = true;\n if (instance)\n job.id = instance.uid;\n scheduler = () => queueJob(job);\n }\n const effect = new ReactiveEffect(getter, NOOP, scheduler);\n const scope = getCurrentScope();\n const unwatch = () => {\n effect.stop();\n if (scope) {\n remove(scope.effects, effect);\n }\n };\n if (!!(process.env.NODE_ENV !== \"production\")) {\n effect.onTrack = onTrack;\n effect.onTrigger = onTrigger;\n }\n if (cb) {\n if (immediate) {\n job();\n } else {\n oldValue = effect.run();\n }\n } else if (flush === \"post\") {\n queuePostRenderEffect$1(\n effect.run.bind(effect),\n instance && instance.suspense\n );\n } else {\n effect.run();\n }\n return unwatch;\n}\nfunction instanceWatch(source, value, options) {\n const publicThis = this.proxy;\n const getter = isString(source) ? source.includes(\".\") ? createPathGetter(publicThis, source) : () => publicThis[source] : source.bind(publicThis, publicThis);\n let cb;\n if (isFunction(value)) {\n cb = value;\n } else {\n cb = value.handler;\n options = value;\n }\n const reset = setCurrentInstance(this);\n const res = doWatch(getter, cb.bind(publicThis), options);\n reset();\n return res;\n}\nfunction createPathGetter(ctx, path) {\n const segments = path.split(\".\");\n return () => {\n let cur = ctx;\n for (let i = 0; i < segments.length && cur; i++) {\n cur = cur[segments[i]];\n }\n return cur;\n };\n}\nfunction traverse(value, depth, currentDepth = 0, seen) {\n if (!isObject(value) || value[\"__v_skip\"]) {\n return value;\n }\n if (depth && depth > 0) {\n if (currentDepth >= depth) {\n return value;\n }\n currentDepth++;\n }\n seen = seen || /* @__PURE__ */ new Set();\n if (seen.has(value)) {\n return value;\n }\n seen.add(value);\n if (isRef(value)) {\n traverse(value.value, depth, currentDepth, seen);\n } else if (isArray(value)) {\n for (let i = 0; i < value.length; i++) {\n traverse(value[i], depth, currentDepth, seen);\n }\n } else if (isSet(value) || isMap(value)) {\n value.forEach((v) => {\n traverse(v, depth, currentDepth, seen);\n });\n } else if (isPlainObject(value)) {\n for (const key in value) {\n traverse(value[key], depth, currentDepth, seen);\n }\n }\n return value;\n}\n\nfunction validateDirectiveName(name) {\n if (isBuiltInDirective(name)) {\n warn$1(\"Do not use built-in directive ids as custom directive id: \" + name);\n }\n}\nfunction withDirectives(vnode, directives) {\n if (currentRenderingInstance === null) {\n !!(process.env.NODE_ENV !== \"production\") && warn$1(`withDirectives can only be used inside render functions.`);\n return vnode;\n }\n const instance = getExposeProxy(currentRenderingInstance) || currentRenderingInstance.proxy;\n const bindings = vnode.dirs || (vnode.dirs = []);\n for (let i = 0; i < directives.length; i++) {\n let [dir, value, arg, modifiers = EMPTY_OBJ] = directives[i];\n if (dir) {\n if (isFunction(dir)) {\n dir = {\n mounted: dir,\n updated: dir\n };\n }\n if (dir.deep) {\n traverse(value);\n }\n bindings.push({\n dir,\n instance,\n value,\n oldValue: void 0,\n arg,\n modifiers\n });\n }\n }\n return vnode;\n}\n\nfunction createAppContext() {\n return {\n app: null,\n config: {\n isNativeTag: NO,\n performance: false,\n globalProperties: {},\n optionMergeStrategies: {},\n errorHandler: void 0,\n warnHandler: void 0,\n compilerOptions: {}\n },\n mixins: [],\n components: {},\n directives: {},\n provides: /* @__PURE__ */ Object.create(null),\n optionsCache: /* @__PURE__ */ new WeakMap(),\n propsCache: /* @__PURE__ */ new WeakMap(),\n emitsCache: /* @__PURE__ */ new WeakMap()\n };\n}\nlet uid$1 = 0;\nfunction createAppAPI(render, hydrate) {\n return function createApp(rootComponent, rootProps = null) {\n if (!isFunction(rootComponent)) {\n rootComponent = extend({}, rootComponent);\n }\n if (rootProps != null && !isObject(rootProps)) {\n !!(process.env.NODE_ENV !== \"production\") && warn$1(`root props passed to app.mount() must be an object.`);\n rootProps = null;\n }\n const context = createAppContext();\n const installedPlugins = /* @__PURE__ */ new WeakSet();\n const app = context.app = {\n _uid: uid$1++,\n _component: rootComponent,\n _props: rootProps,\n _container: null,\n _context: context,\n _instance: null,\n version,\n get config() {\n return context.config;\n },\n set config(v) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(\n `app.config cannot be replaced. Modify individual options instead.`\n );\n }\n },\n use(plugin, ...options) {\n if (installedPlugins.has(plugin)) {\n !!(process.env.NODE_ENV !== \"production\") && warn$1(`Plugin has already been applied to target app.`);\n } else if (plugin && isFunction(plugin.install)) {\n installedPlugins.add(plugin);\n plugin.install(app, ...options);\n } else if (isFunction(plugin)) {\n installedPlugins.add(plugin);\n plugin(app, ...options);\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(\n `A plugin must either be a function or an object with an \"install\" function.`\n );\n }\n return app;\n },\n mixin(mixin) {\n if (__VUE_OPTIONS_API__) {\n if (!context.mixins.includes(mixin)) {\n context.mixins.push(mixin);\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(\n \"Mixin has already been applied to target app\" + (mixin.name ? `: ${mixin.name}` : \"\")\n );\n }\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(\"Mixins are only available in builds supporting Options API\");\n }\n return app;\n },\n component(name, component) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n validateComponentName(name, context.config);\n }\n if (!component) {\n return context.components[name];\n }\n if (!!(process.env.NODE_ENV !== \"production\") && context.components[name]) {\n warn$1(`Component \"${name}\" has already been registered in target app.`);\n }\n context.components[name] = component;\n return app;\n },\n directive(name, directive) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n validateDirectiveName(name);\n }\n if (!directive) {\n return context.directives[name];\n }\n if (!!(process.env.NODE_ENV !== \"production\") && context.directives[name]) {\n warn$1(`Directive \"${name}\" has already been registered in target app.`);\n }\n context.directives[name] = directive;\n return app;\n },\n // fixed by xxxxxx\n mount() {\n },\n // fixed by xxxxxx\n unmount() {\n },\n provide(key, value) {\n if (!!(process.env.NODE_ENV !== \"production\") && key in context.provides) {\n warn$1(\n `App already provides property with key \"${String(key)}\". It will be overwritten with the new value.`\n );\n }\n context.provides[key] = value;\n return app;\n },\n runWithContext(fn) {\n const lastApp = currentApp;\n currentApp = app;\n try {\n return fn();\n } finally {\n currentApp = lastApp;\n }\n }\n };\n return app;\n };\n}\nlet currentApp = null;\n\nfunction provide(key, value) {\n if (!currentInstance) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(`provide() can only be used inside setup().`);\n }\n } else {\n let provides = currentInstance.provides;\n const parentProvides = currentInstance.parent && currentInstance.parent.provides;\n if (parentProvides === provides) {\n provides = currentInstance.provides = Object.create(parentProvides);\n }\n provides[key] = value;\n if (currentInstance.type.mpType === \"app\") {\n currentInstance.appContext.app.provide(key, value);\n }\n }\n}\nfunction inject(key, defaultValue, treatDefaultAsFactory = false) {\n const instance = currentInstance || currentRenderingInstance;\n if (instance || currentApp) {\n const provides = instance ? instance.parent == null ? instance.vnode.appContext && instance.vnode.appContext.provides : instance.parent.provides : currentApp._context.provides;\n if (provides && key in provides) {\n return provides[key];\n } else if (arguments.length > 1) {\n return treatDefaultAsFactory && isFunction(defaultValue) ? defaultValue.call(instance && instance.proxy) : defaultValue;\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(`injection \"${String(key)}\" not found.`);\n }\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(`inject() can only be used inside setup() or functional components.`);\n }\n}\nfunction hasInjectionContext() {\n return !!(currentInstance || currentRenderingInstance || currentApp);\n}\n\n/*! #__NO_SIDE_EFFECTS__ */\n// @__NO_SIDE_EFFECTS__\nfunction defineComponent(options, extraOptions) {\n return isFunction(options) ? (\n // #8326: extend call and options.name access are considered side-effects\n // by Rollup, so we have to wrap it in a pure-annotated IIFE.\n /* @__PURE__ */ (() => extend({ name: options.name }, extraOptions, { setup: options }))()\n ) : options;\n}\n\nconst isKeepAlive = (vnode) => vnode.type.__isKeepAlive;\nfunction onActivated(hook, target) {\n registerKeepAliveHook(hook, \"a\", target);\n}\nfunction onDeactivated(hook, target) {\n registerKeepAliveHook(hook, \"da\", target);\n}\nfunction registerKeepAliveHook(hook, type, target = currentInstance) {\n const wrappedHook = hook.__wdc || (hook.__wdc = () => {\n let current = target;\n while (current) {\n if (current.isDeactivated) {\n return;\n }\n current = current.parent;\n }\n return hook();\n });\n injectHook(type, wrappedHook, target);\n if (target) {\n let current = target.parent;\n while (current && current.parent) {\n if (isKeepAlive(current.parent.vnode)) {\n injectToKeepAliveRoot(wrappedHook, type, target, current);\n }\n current = current.parent;\n }\n }\n}\nfunction injectToKeepAliveRoot(hook, type, target, keepAliveRoot) {\n const injected = injectHook(\n type,\n hook,\n keepAliveRoot,\n true\n /* prepend */\n );\n onUnmounted(() => {\n remove(keepAliveRoot[type], injected);\n }, target);\n}\n\nfunction injectHook(type, hook, target = currentInstance, prepend = false) {\n if (target) {\n if (isRootHook(type)) {\n target = target.root;\n }\n const hooks = target[type] || (target[type] = []);\n const wrappedHook = hook.__weh || (hook.__weh = (...args) => {\n if (target.isUnmounted) {\n return;\n }\n pauseTracking();\n const reset = setCurrentInstance(target);\n const res = callWithAsyncErrorHandling(hook, target, type, args);\n reset();\n resetTracking();\n return res;\n });\n if (prepend) {\n hooks.unshift(wrappedHook);\n } else {\n hooks.push(wrappedHook);\n }\n return wrappedHook;\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n const apiName = toHandlerKey(\n (ErrorTypeStrings[type] || type.replace(/^on/, \"\")).replace(/ hook$/, \"\")\n );\n warn$1(\n `${apiName} is called when there is no active component instance to be associated with. Lifecycle injection APIs can only be used during execution of setup().` + (``)\n );\n }\n}\nconst createHook = (lifecycle) => (hook, target = currentInstance) => (\n // post-create lifecycle registrations are noops during SSR (except for serverPrefetch)\n (!isInSSRComponentSetup || lifecycle === \"sp\") && injectHook(lifecycle, (...args) => hook(...args), target)\n);\nconst onBeforeMount = createHook(\"bm\");\nconst onMounted = createHook(\"m\");\nconst onBeforeUpdate = createHook(\"bu\");\nconst onUpdated = createHook(\"u\");\nconst onBeforeUnmount = createHook(\"bum\");\nconst onUnmounted = createHook(\"um\");\nconst onServerPrefetch = createHook(\"sp\");\nconst onRenderTriggered = createHook(\n \"rtg\"\n);\nconst onRenderTracked = createHook(\n \"rtc\"\n);\nfunction onErrorCaptured(hook, target = currentInstance) {\n injectHook(\"ec\", hook, target);\n}\n\nfunction toHandlers(obj, preserveCaseIfNecessary) {\n const ret = {};\n if (!!(process.env.NODE_ENV !== \"production\") && !isObject(obj)) {\n warn$1(`v-on with no argument expects an object value.`);\n return ret;\n }\n for (const key in obj) {\n ret[preserveCaseIfNecessary && /[A-Z]/.test(key) ? `on:${key}` : toHandlerKey(key)] = obj[key];\n }\n return ret;\n}\n\nconst getPublicInstance = (i) => {\n if (!i)\n return null;\n if (isStatefulComponent(i))\n return getExposeProxy(i) || i.proxy;\n return getPublicInstance(i.parent);\n};\nconst publicPropertiesMap = (\n // Move PURE marker to new line to workaround compiler discarding it\n // due to type annotation\n /* @__PURE__ */ extend(/* @__PURE__ */ Object.create(null), {\n $: (i) => i,\n // fixed by xxxxxx vue-i18n 在 dev 模式,访问了 $el,故模拟一个假的\n // $el: i => i.vnode.el,\n $el: (i) => i.__$el || (i.__$el = {}),\n $data: (i) => i.data,\n $props: (i) => !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(i.props) : i.props,\n $attrs: (i) => !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(i.attrs) : i.attrs,\n $slots: (i) => !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(i.slots) : i.slots,\n $refs: (i) => !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(i.refs) : i.refs,\n $parent: (i) => getPublicInstance(i.parent),\n $root: (i) => getPublicInstance(i.root),\n $emit: (i) => i.emit,\n $options: (i) => __VUE_OPTIONS_API__ ? resolveMergedOptions(i) : i.type,\n $forceUpdate: (i) => i.f || (i.f = () => {\n i.effect.dirty = true;\n queueJob(i.update);\n }),\n // $nextTick: i => i.n || (i.n = nextTick.bind(i.proxy!)),// fixed by xxxxxx\n $watch: (i) => __VUE_OPTIONS_API__ ? instanceWatch.bind(i) : NOOP\n })\n);\nconst isReservedPrefix = (key) => key === \"_\" || key === \"$\";\nconst hasSetupBinding = (state, key) => state !== EMPTY_OBJ && !state.__isScriptSetup && hasOwn(state, key);\nconst PublicInstanceProxyHandlers = {\n get({ _: instance }, key) {\n const { ctx, setupState, data, props, accessCache, type, appContext } = instance;\n if (!!(process.env.NODE_ENV !== \"production\") && key === \"__isVue\") {\n return true;\n }\n let normalizedProps;\n if (key[0] !== \"$\") {\n const n = accessCache[key];\n if (n !== void 0) {\n switch (n) {\n case 1 /* SETUP */:\n return setupState[key];\n case 2 /* DATA */:\n return data[key];\n case 4 /* CONTEXT */:\n return ctx[key];\n case 3 /* PROPS */:\n return props[key];\n }\n } else if (hasSetupBinding(setupState, key)) {\n accessCache[key] = 1 /* SETUP */;\n return setupState[key];\n } else if (data !== EMPTY_OBJ && hasOwn(data, key)) {\n accessCache[key] = 2 /* DATA */;\n return data[key];\n } else if (\n // only cache other properties when instance has declared (thus stable)\n // props\n (normalizedProps = instance.propsOptions[0]) && hasOwn(normalizedProps, key)\n ) {\n accessCache[key] = 3 /* PROPS */;\n return props[key];\n } else if (ctx !== EMPTY_OBJ && hasOwn(ctx, key)) {\n accessCache[key] = 4 /* CONTEXT */;\n return ctx[key];\n } else if (!__VUE_OPTIONS_API__ || shouldCacheAccess) {\n accessCache[key] = 0 /* OTHER */;\n }\n }\n const publicGetter = publicPropertiesMap[key];\n let cssModule, globalProperties;\n if (publicGetter) {\n if (key === \"$attrs\") {\n track(instance, \"get\", key);\n !!(process.env.NODE_ENV !== \"production\") && markAttrsAccessed();\n } else if (!!(process.env.NODE_ENV !== \"production\") && key === \"$slots\") {\n track(instance, \"get\", key);\n }\n return publicGetter(instance);\n } else if (\n // css module (injected by vue-loader)\n (cssModule = type.__cssModules) && (cssModule = cssModule[key])\n ) {\n return cssModule;\n } else if (ctx !== EMPTY_OBJ && hasOwn(ctx, key)) {\n accessCache[key] = 4 /* CONTEXT */;\n return ctx[key];\n } else if (\n // global properties\n globalProperties = appContext.config.globalProperties, hasOwn(globalProperties, key)\n ) {\n {\n return globalProperties[key];\n }\n } else if (!!(process.env.NODE_ENV !== \"production\") && currentRenderingInstance && (!isString(key) || // #1091 avoid internal isRef/isVNode checks on component instance leading\n // to infinite warning loop\n key.indexOf(\"__v\") !== 0)) {\n if (data !== EMPTY_OBJ && isReservedPrefix(key[0]) && hasOwn(data, key)) {\n warn$1(\n `Property ${JSON.stringify(\n key\n )} must be accessed via $data because it starts with a reserved character (\"$\" or \"_\") and is not proxied on the render context.`\n );\n } else if (instance === currentRenderingInstance) {\n warn$1(\n `Property ${JSON.stringify(key)} was accessed during render but is not defined on instance.`\n );\n }\n }\n },\n set({ _: instance }, key, value) {\n const { data, setupState, ctx } = instance;\n if (hasSetupBinding(setupState, key)) {\n setupState[key] = value;\n return true;\n } else if (!!(process.env.NODE_ENV !== \"production\") && setupState.__isScriptSetup && hasOwn(setupState, key)) {\n warn$1(`Cannot mutate \r\n\r\n ","import Component from 'D:/uni-fans-score/components/MapComponent.vue'\nwx.createComponent(Component)"],"names":["ref","nextTick","uni","computed","watch","onMounted","onUnmounted"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"MapComponent.js","sources":["components/MapComponent.vue","E:/HBuilderX.4.24.2024072208/plugins/uniapp-cli-vite/uniComponent:/RDovdW5pLWZhbnMtc2NvcmUvY29tcG9uZW50cy9NYXBDb21wb25lbnQudnVl"],"sourcesContent":["\r\n\r\n\r\n\r\n","import Component from 'D:/uni-fans-score/components/MapComponent.vue'\nwx.createComponent(Component)"],"names":["ref","uni","watch","onMounted","nextTick","onUnmounted","computed"],"mappings":"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"} \ No newline at end of file diff --git a/unpackage/dist/dev/.sourcemap/mp-weixin/config/url.js.map b/unpackage/dist/dev/.sourcemap/mp-weixin/config/url.js.map index 4681748..36a941a 100644 --- a/unpackage/dist/dev/.sourcemap/mp-weixin/config/url.js.map +++ b/unpackage/dist/dev/.sourcemap/mp-weixin/config/url.js.map @@ -1 +1 @@ -{"version":3,"file":"url.js","sources":["config/url.js"],"sourcesContent":["export const URL = \"https://my.gxfs123.com/api\" //正式服务器\r\n// export const URL = \"https://unifans.gxfs123.com/api\" //测试服务器\r\n// export const URL = \"http://192.168.10.31:8080\" \t\t//本地调试\r\n\r\nexport const appid = \"wx2165f0be356ae7a9\" //小程序appid"],"names":[],"mappings":";AAAY,MAAC,MAAM;AAIP,MAAC,QAAQ;;;"} \ No newline at end of file +{"version":3,"file":"url.js","sources":["config/url.js"],"sourcesContent":["// export const URL = \"https://my.gxfs123.com/api\" //正式服务器\r\nexport const URL = \"https://fansdev.gxfs123.com/api\" //测试服务器\r\n// export const URL = \"http://192.168.10.69:8080\" \t\t//本地调试\r\n\r\nexport const appid = \"wx2165f0be356ae7a9\" //小程序appid"],"names":[],"mappings":";AACY,MAAC,MAAM;AAGP,MAAC,QAAQ;;;"} \ No newline at end of file diff --git a/unpackage/dist/dev/.sourcemap/mp-weixin/config/user.js.map b/unpackage/dist/dev/.sourcemap/mp-weixin/config/user.js.map index 5f88911..e4726a7 100644 --- a/unpackage/dist/dev/.sourcemap/mp-weixin/config/user.js.map +++ b/unpackage/dist/dev/.sourcemap/mp-weixin/config/user.js.map @@ -1 +1 @@ -{"version":3,"file":"user.js","sources":["config/user.js"],"sourcesContent":["import request from './http'\r\n\r\n\r\nexport const login = (data) => {\r\n return request({\r\n url: '/app/user/login',\r\n method: 'get',\r\n data\r\n })\r\n}\r\n\r\n\r\nexport const getMyIndexInfo = (data) => {\r\n return request({\r\n url: '/app/user/userInfo',\r\n method: 'get',\r\n data,\r\n })\r\n}\r\n\r\n// 添加押金提现API\r\nexport const withdrawDeposit = (orderNo) => {\r\n console.log('调用提现API,订单号:', orderNo)\r\n return request({\r\n url: `/app/withdraw/add/${orderNo}`,\r\n method: 'get',\r\n hideLoading: true\r\n })\r\n}\r\n\r\n//获取所有全部订单\r\nexport const getOrderList = (data) => {\r\n return request({\r\n url: '/app/order/list',\r\n method: 'get',\r\n data,\r\n hideLoading:true\r\n })\r\n}\r\n\r\n//查询是否有订单\r\nexport const queryHasOrder = (deviceNo) => {\r\n return request({\r\n url: `/app/order/list?deviceNo=${deviceNo}&orderStatus=in_used`,\r\n method: 'get',\r\n })\r\n}\r\n\r\n// 查询指定设备号下,特定状态的订单列表\r\nexport const checkOrdersByStatus = (deviceNo, statuses) => {\r\n // statuses 是一个包含状态字符串的数组,例如 ['in_used', 'waiting_for_payment']\r\n const statusQuery = statuses.join(','); // 后端需要支持逗号分隔的状态查询\r\n return request({\r\n url: `/app/order/list?deviceNo=${deviceNo}&orderStatus=${statusQuery}`,\r\n method: 'get',\r\n hideLoading: true, // 隐藏加载提示,避免干扰用户\r\n ignoreEmptyError: true // 添加标记,表示即使返回空数据也不视为错误\r\n })\r\n}\r\n\r\n//设备查询\r\nexport const getDeviceInfo = (deviceNo) => {\r\n return request({\r\n url: `/app/device/${deviceNo}`,\r\n method: 'get',\r\n })\r\n}\r\n\r\n\r\n//创建订单\r\nexport const createOrder = (data) => {\r\n return request({\r\n url: '/app/order/add',\r\n method: 'post',\r\n data,\r\n })\r\n}\r\n\r\n//查询订单\r\nexport const queryById = (id) => {\r\n console.log(`查询订单详情, orderId: ${id}`)\r\n return request({\r\n url: `/app/order/${id}`,\r\n method: 'get',\r\n hideLoading: true\r\n })\r\n}\r\n\r\n\r\n//取消订单\nexport const cancelOrder = (data) => {\n\treturn request({\n\t\turl: `/device/order/clear/${data.orderId}`,\n\t\tmethod: 'get',\n\t\tdata,\n\t})\n}\r\n\r\n\r\n//结束订单\r\nexport const overOrderById = (orderId) => {\r\n console.log(`调用结束订单API, orderId: ${orderId}`)\r\n return request({\r\n url: `/app/order/close/${orderId}`,\r\n method: 'get',\r\n })\r\n}\r\n\r\n//立即租借\r\nexport const rentPowerBank = (deviceNo, phone) => {\r\n return request({\r\n url: '/app/device/rentPowerBank',\r\n method: 'post',\r\n data: { deviceNo, phone }\r\n })\r\n}\r\n\r\n//确认支付并弹出风扇\r\nexport const confirmPaymentAndRent = (orderId) => {\r\n console.log(`确认支付并弹出风扇, orderId: ${orderId}`)\r\n return request({\r\n url: `/app/device/confirmPaymentAndRent?orderId=${orderId}`,\r\n method: 'GET'\r\n })\r\n}\r\n\r\n\r\n\r\n//投诉反馈\r\nexport const addUserFeedback = (data) => {\r\n return request({\r\n url: '/app/feedback/add',\r\n method: 'post',\r\n data,\r\n })\r\n}\r\n\r\n//强制打开空格子\r\nexport const forcefOpenEmptyGrid = (deviceNo) => {\r\n console.log(`强制打开空格子, deviceNo: ${deviceNo}`)\r\n return request({\r\n url: `/app/device/forcef/${deviceNo}`,\r\n method: 'post'\r\n })\r\n}\r\n\r\n// 通过订单号获取订单信息\r\nexport const getOrderByOrderNo = (orderNo) => {\r\n return request({\r\n url: `/app/order/byOrderNo/${orderNo}`,\r\n method: 'get',\r\n hideLoading: true\r\n })\r\n}\r\n// 通过订单号获取支付分订单信息\r\nexport const getOrderByOrderNoScore = (orderNo) => {\r\n\tconsole.log('通过订单号获取支付分订单信息',orderNo);\r\n return request({\r\n url: `/app/wx-payment/score/create/${orderNo}`,\r\n method: 'get',\r\n hideLoading: true\r\n })\r\n}\r\n\r\nexport const getOrderByOrderNoScorePayStatus = (orderNo) => {\r\n\tconsole.log('通过订单号获取支付分订单状态',orderNo);\r\n return request({\r\n url: `/app/wx-payment/score/status/${orderNo}`,\r\n method: 'get',\r\n hideLoading: true\r\n })\r\n}\r\n\r\n// 更新订单套餐信息\r\nexport const updateOrderPackage = (data) => {\r\n console.log('更新订单套餐信息:', data)\r\n return request({\r\n url: '/app/device/updateOrderPackage',\r\n method: 'post',\r\n data\r\n })\r\n}\r\n\r\n// 更新用户余额\r\nexport const updateUserBalance = (orderId) => {\r\n return request({\r\n url: `/app/user/updateBalance/${orderId}`,\r\n method: 'post',\r\n hideLoading: true\r\n })\r\n}\r\n\r\n"],"names":["request","uni"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"user.js","sources":["config/user.js"],"sourcesContent":["import request from './http'\r\n\r\n\r\nexport const login = (data) => {\r\n\treturn request({\r\n\t\turl: '/app/user/login',\r\n\t\tmethod: 'get',\r\n\t\tdata\r\n\t})\r\n}\r\n\r\n\r\nexport const getMyIndexInfo = (data) => {\r\n\treturn request({\r\n\t\turl: '/app/user/userInfo',\r\n\t\tmethod: 'get',\r\n\t\tdata,\r\n\t})\r\n}\r\n\r\n// 添加押金提现API\r\nexport const withdrawDeposit = (orderNo) => {\r\n\tconsole.log('调用提现API,订单号:', orderNo)\r\n\treturn request({\r\n\t\turl: `/app/withdraw/add/${orderNo}`,\r\n\t\tmethod: 'get',\r\n\t\thideLoading: true\r\n\t})\r\n}\r\n\r\n//获取所有全部订单\r\nexport const getOrderList = (data) => {\r\n\treturn request({\r\n\t\turl: '/app/order/list',\r\n\t\tmethod: 'get',\r\n\t\tdata,\r\n\t\thideLoading: true\r\n\t})\r\n}\r\n\r\n//查询是否有订单\r\nexport const queryHasOrder = (deviceNo) => {\r\n\treturn request({\r\n\t\turl: `/app/order/list?deviceNo=${deviceNo}&orderStatus=in_used`,\r\n\t\tmethod: 'get',\r\n\t})\r\n}\r\n\r\n// 查询指定设备号下,特定状态的订单列表\r\nexport const checkOrdersByStatus = (deviceNo, statuses) => {\r\n\t// statuses 是一个包含状态字符串的数组,例如 ['in_used', 'waiting_for_payment']\r\n\tconst statusQuery = statuses.join(','); // 后端需要支持逗号分隔的状态查询\r\n\treturn request({\r\n\t\turl: `/app/order/list?deviceNo=${deviceNo}&orderStatus=${statusQuery}`,\r\n\t\tmethod: 'get',\r\n\t\thideLoading: true, // 隐藏加载提示,避免干扰用户\r\n\t\tignoreEmptyError: true // 添加标记,表示即使返回空数据也不视为错误\r\n\t})\r\n}\r\n\r\n//设备查询\r\nexport const getDeviceInfo = (deviceNo) => {\r\n\treturn request({\r\n\t\turl: `/app/device/${deviceNo}`,\r\n\t\tmethod: 'get',\r\n\t})\r\n}\r\n\r\n\r\n//创建订单\r\nexport const createOrder = (data) => {\r\n\treturn request({\r\n\t\turl: '/app/order/add',\r\n\t\tmethod: 'post',\r\n\t\tdata,\r\n\t})\r\n}\r\n\r\n//查询订单\r\nexport const queryById = (id) => {\r\n\tconsole.log(`查询订单详情, orderId: ${id}`)\r\n\treturn request({\r\n\t\turl: `/app/order/${id}`,\r\n\t\tmethod: 'get',\r\n\t\thideLoading: true\r\n\t})\r\n}\r\n\r\n\r\n//取消订单\r\nexport const cancelOrder = (data) => {\r\n\treturn request({\r\n\t\turl: `/device/order/clear/${data.orderId}`,\r\n\t\tmethod: 'get',\r\n\t\tdata,\r\n\t})\r\n}\r\n\r\n\r\n//结束订单\r\nexport const overOrderById = (orderId) => {\r\n\tconsole.log(`调用结束订单API, orderId: ${orderId}`)\r\n\treturn request({\r\n\t\turl: `/app/order/close/${orderId}`,\r\n\t\tmethod: 'get',\r\n\t})\r\n}\r\n\r\n//立即租借\r\nexport const rentPowerBank = (deviceNo, phone) => {\r\n\treturn request({\r\n\t\turl: '/app/device/rentPowerBank',\r\n\t\tmethod: 'post',\r\n\t\tdata: {\r\n\t\t\tdeviceNo,\r\n\t\t\tphone\r\n\t\t}\r\n\t})\r\n}\r\n\r\n//确认支付并弹出风扇\r\nexport const confirmPaymentAndRent = (orderId) => {\r\n\tconsole.log(`确认支付并弹出风扇, orderId: ${orderId}`)\r\n\treturn request({\r\n\t\turl: `/app/device/confirmPaymentAndRent?orderId=${orderId}`,\r\n\t\tmethod: 'GET'\r\n\t})\r\n}\r\n\r\n\r\n\r\n//投诉反馈\r\nexport const addUserFeedback = (data) => {\r\n\treturn request({\r\n\t\turl: '/app/feedback/add',\r\n\t\tmethod: 'post',\r\n\t\tdata,\r\n\t})\r\n}\r\n\r\n//强制打开空格子\r\nexport const forcefOpenEmptyGrid = (deviceNo) => {\r\n\tconsole.log(`强制打开空格子, deviceNo: ${deviceNo}`)\r\n\treturn request({\r\n\t\turl: `/app/device/forcef/${deviceNo}`,\r\n\t\tmethod: 'post'\r\n\t})\r\n}\r\n\r\n// 通过订单号获取订单信息\r\nexport const getOrderByOrderNo = (orderNo) => {\r\n\treturn request({\r\n\t\turl: `/app/order/byOrderNo/${orderNo}`,\r\n\t\tmethod: 'get',\r\n\t\thideLoading: true\r\n\t})\r\n}\r\n// 通过订单号获取支付分订单信息\r\nexport const getOrderByOrderNoScore = (orderNo) => {\r\n\tconsole.log('通过订单号获取支付分订单信息', orderNo);\r\n\treturn request({\r\n\t\turl: `/app/wx-payment/score/create/${orderNo}`,\r\n\t\tmethod: 'get',\r\n\t\thideLoading: true\r\n\t})\r\n}\r\n\r\nexport const getOrderByOrderNoScorePayStatus = (orderNo) => {\r\n\tconsole.log('通过订单号获取支付分订单状态', orderNo);\r\n\treturn request({\r\n\t\turl: `/app/wx-payment/score/status/${orderNo}`,\r\n\t\tmethod: 'get',\r\n\t\thideLoading: true\r\n\t})\r\n}\r\n\r\n// 更新订单套餐信息\r\nexport const updateOrderPackage = (data) => {\r\n\tconsole.log('更新订单套餐信息:', data)\r\n\treturn request({\r\n\t\turl: '/app/device/updateOrderPackage',\r\n\t\tmethod: 'post',\r\n\t\tdata\r\n\t})\r\n}\r\n\r\n// 更新用户余额\r\nexport const updateUserBalance = (orderId) => {\r\n\treturn request({\r\n\t\turl: `/app/user/updateBalance/${orderId}`,\r\n\t\tmethod: 'post',\r\n\t\thideLoading: true\r\n\t})\r\n}\r\n\r\n/*\r\n *\r\n *弃用\r\n */\r\nexport const getPotionsDetail = (data) => {\r\n\tconsole.log(data);\r\n\treturn request({\r\n\t\turl: '/device/position/positionDetails',\r\n\t\tmethod: 'get',\r\n\t\tdata\r\n\t})\r\n}"],"names":["request","uni"],"mappings":"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"} \ No newline at end of file diff --git a/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/@climblee/uv-ui/components/uv-cell/uv-cell.js.map b/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/@climblee/uv-ui/components/uv-cell/uv-cell.js.map new file mode 100644 index 0000000..77e26de --- /dev/null +++ b/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/@climblee/uv-ui/components/uv-cell/uv-cell.js.map @@ -0,0 +1 @@ +{"version":3,"file":"uv-cell.js","sources":["node_modules/@climblee/uv-ui/components/uv-cell/uv-cell.vue","E:/HBuilderX.4.24.2024072208/plugins/uniapp-cli-vite/uniComponent:/RDovdW5pLWZhbnMtc2NvcmUvbm9kZV9tb2R1bGVzL0BjbGltYmxlZS91di11aS9jb21wb25lbnRzL3V2LWNlbGwvdXYtY2VsbC52dWU"],"sourcesContent":["\r\n\r\n\r\n\r\n","import Component from 'D:/uni-fans-score/node_modules/@climblee/uv-ui/components/uv-cell/uv-cell.vue'\nwx.createComponent(Component)"],"names":["mpMixin","mixin","props"],"mappings":";;AA2EC,MAAK,YAAU;AAAA,EACd,MAAM;AAAA,EACN,OAAO,CAAC,OAAO;AAAA,EACf,QAAQ,CAACA,cAAAA,SAASC,cAAK,OAAEC,qBAAK;AAAA,EAC9B,UAAU;AAAA,IACT,iBAAiB;AAChB,aAAO,KAAK,IAAI,SAAS,KAAK,UAAU;AAAA,IACzC;AAAA,EACA;AAAA,EACD,SAAS;AAAA;AAAA,IAER,aAAa,GAAG;AACf,UAAI,KAAK;AAAU;AACnB,WAAK,MAAM,SAAS;AAAA,QACnB,MAAM,KAAK;AAAA,OACX;AAED,WAAK,SAAS;AAEd,WAAK,QAAQ,KAAK,aAAa,CAAC;AAAA,IAChC;AAAA,EACF;AACD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AChGD,GAAG,gBAAgB,SAAS;","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/@climblee/uv-ui/components/uv-collapse-item/uv-collapse-item.js.map b/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/@climblee/uv-ui/components/uv-collapse-item/uv-collapse-item.js.map new file mode 100644 index 0000000..93a2002 --- /dev/null +++ b/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/@climblee/uv-ui/components/uv-collapse-item/uv-collapse-item.js.map @@ -0,0 +1 @@ +{"version":3,"file":"uv-collapse-item.js","sources":["node_modules/@climblee/uv-ui/components/uv-collapse-item/uv-collapse-item.vue","E:/HBuilderX.4.24.2024072208/plugins/uniapp-cli-vite/uniComponent:/RDovdW5pLWZhbnMtc2NvcmUvbm9kZV9tb2R1bGVzL0BjbGltYmxlZS91di11aS9jb21wb25lbnRzL3V2LWNvbGxhcHNlLWl0ZW0vdXYtY29sbGFwc2UtaXRlbS52dWU"],"sourcesContent":["\r\n\r\n\r\n\r\n\r\n","import Component from 'D:/uni-fans-score/node_modules/@climblee/uv-ui/components/uv-collapse-item/uv-collapse-item.vue'\nwx.createComponent(Component)"],"names":["mpMixin","mixin","props","uni"],"mappings":";;AAqEC,MAAK,YAAU;AAAA,EACd,MAAM;AAAA,EACN,QAAQ,CAACA,cAAAA,SAASC,cAAK,OAAEC,qBAAK;AAAA,EAC9B,OAAO;AACN,WAAO;AAAA,MACN,MAAM;AAAA;AAAA,MAEN,eAAe,CAAE;AAAA;AAAA,MAEjB,UAAU;AAAA;AAAA,MAEV,YAAY;AAAA;AAAA,MAEZ,WAAW;AAAA;AAAA,MAEX,YAAY;AAAA,QACX,WAAW;AAAA,QACX,QAAQ;AAAA,MACT;AAAA;EAED;AAAA,EACD,OAAO;AAAA,IACN,SAAS,GAAG;AACX,mBAAa,KAAK,KAAK;AACvB,WAAK,QAAQ;AAEb,WAAK,QAAQ,WAAW,MAAM;AAC7B,aAAK,aAAa;AAAA,SAChB,IAAI,KAAK,GAAG;AAAA,IAChB;AAAA,EACA;AAAA,EACD,UAAU;AACT,SAAK,OAAO,KAAK,IAAI,KAAI;AAAA,EACzB;AAAA,EACD,UAAU;AACT,SAAK,KAAK;AAAA,EACV;AAAA,EACD,SAAS;AAAA;AAAA,IAER,OAAO;AAEN,WAAK,iBAAiB;AACtB,UAAI,CAAC,KAAK,QAAQ;AACjB,eAAO,KAAK,IAAI,MAAM,sCAAsC;AAAA,MAC7D;AACA,YAAM;AAAA,QACL;AAAA,QACA;AAAA,QACA,WAAW,CAAC;AAAA,MACX,IAAE,KAAK;AAET,UAAI,WAAW;AACd,YAAI,KAAK,IAAI,KAAK,MAAM,KAAK,GAAG;AAC/B,iBAAO,KAAK,IAAI,MAAM,mCAAmC;AAAA,QAC1D;AACA,aAAK,WAAW,KAAK,QAAQ;AAAA,aACvB;AACN,YAAI,CAAC,KAAK,IAAI,KAAK,MAAM,KAAK,KAAK,UAAU,MAAM;AAClD,iBAAO,KAAK,IAAI,MAAM,oCAAoC;AAAA,QAC3D;AACA,aAAK,YAAY,SAAS,CAAE,GAAE,KAAK,UAAQ,QAAQ,KAAK,IAAI;AAAA,MAC7D;AAEA,WAAK,UAAU,WAAW;AACzB,aAAK,kBAAkB;AAAA,OACvB;AAAA,IACD;AAAA,IACD,mBAAmB;AAElB,WAAK,cAAc,aAAa;AAAA,IAChC;AAAA,IACD,MAAM,oBAAoB;AAGzB,YAAM,OAAO,MAAM,KAAK,UAAU;AAClC,YAAM,SAAS,KAAK,WAAW,KAAK,SAAS;AAC7C,WAAK,YAAY;AAiBjB,YAAM,YAAYC,cAAG,MAAC,gBAAgB;AAAA,QACrC,gBAAgB;AAAA,MACjB,CAAC;AACD,gBACE,OAAO,MAAM,EACb,KAAK;AAAA,QACL,UAAU,KAAK;AAAA,OACf,EACA,KAAK;AAEP,WAAK,gBAAgB,UAAU,OAAO;AAEtC,WAAK,IAAI,MAAM,KAAK,QAAQ,EAAE,KAAK,MAAM;AACxC,aAAK,YAAY;AAAA,OACjB;AAAA,IAED;AAAA;AAAA,IAED,eAAe;AACd,UAAI,KAAK,YAAY,KAAK;AAAW;AAErC,WAAK,UAAU,KAAK,OAAO,SAAS,IAAI;AAAA,IACxC;AAAA;AAAA,IAED,YAAY;AAGX,aAAO,IAAI,QAAQ,aAAW;AAC7B,aAAK,WAAW,IAAI,KAAK,IAAI,EAAE,EAAE,KAAK,UAAQ;AAC7C,kBAAQ,IAAI;AAAA,SACZ;AAAA,OACD;AAAA,IAYF;AAAA,EACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC7MH,GAAG,gBAAgB,SAAS;","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/@climblee/uv-ui/components/uv-collapse/uv-collapse.js.map b/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/@climblee/uv-ui/components/uv-collapse/uv-collapse.js.map new file mode 100644 index 0000000..3aaca0d --- /dev/null +++ b/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/@climblee/uv-ui/components/uv-collapse/uv-collapse.js.map @@ -0,0 +1 @@ +{"version":3,"file":"uv-collapse.js","sources":["node_modules/@climblee/uv-ui/components/uv-collapse/uv-collapse.vue","E:/HBuilderX.4.24.2024072208/plugins/uniapp-cli-vite/uniComponent:/RDovdW5pLWZhbnMtc2NvcmUvbm9kZV9tb2R1bGVzL0BjbGltYmxlZS91di11aS9jb21wb25lbnRzL3V2LWNvbGxhcHNlL3V2LWNvbGxhcHNlLnZ1ZQ"],"sourcesContent":["\r\n\r\n\r\n","import Component from 'D:/uni-fans-score/node_modules/@climblee/uv-ui/components/uv-collapse/uv-collapse.vue'\nwx.createComponent(Component)"],"names":["mpMixin","mixin","props"],"mappings":";;AAqBC,MAAK,YAAU;AAAA,EACd,MAAM;AAAA,EACN,QAAQ,CAACA,cAAAA,SAASC,cAAK,OAAEC,qBAAK;AAAA,EAC9B,OAAO;AAAA,IACN,WAAW;AACV,WAAK,KAAK;AAAA,IACV;AAAA;AAAA,IAED,aAAa;AACZ,UAAI,KAAK,SAAS,QAAQ;AACzB,aAAK,SAAS,IAAI,WAAS;AAE1B,iBAAO,MAAM,qBAAsB,cAAc,MAAM,iBAAiB;AAAA,SACxE;AAAA,MACF;AAAA,IACD;AAAA,EACA;AAAA,EACD,UAAU;AACT,SAAK,WAAW,CAAC;AAAA,EACjB;AAAA,EACD,UAAU;AAAA,IACT,WAAW;AAGV,aAAO,CAAC,KAAK,WAAW,KAAK,KAAK;AAAA,IACnC;AAAA,EACA;AAAA,EACD,SAAS;AAAA;AAAA,IAER,OAAO;AACN,WAAK,SAAS,IAAI,WAAS;AAC1B,cAAM,KAAK;AAAA,OACX;AAAA,IACD;AAAA;AAAA;AAAA;AAAA;AAAA,IAKD,SAAS,QAAQ;AAChB,UAAI,YAAY,CAAC;AACjB,WAAK,SAAS,IAAI,CAAC,OAAO,UAAU;AAEnC,YAAI,KAAK,WAAW;AACnB,gBAAM,WAAW,UAAU,SAAS,CAAC,OAAO,WAAW;AACvD,gBAAM,kBAAkB;AAAA,eAClB;AACN,cAAG,UAAU,QAAQ;AACpB,kBAAM,WAAW,CAAC,MAAM;AACxB,kBAAM,kBAAkB;AAAA,UACzB;AAAA,QACD;AAEA,kBAAU,KAAK;AAAA;AAAA,UAEd,MAAM,MAAM,QAAQ;AAAA,UACpB,QAAQ,MAAM,WAAW,SAAS;AAAA,SAClC;AAAA,OACD;AAED,WAAK,MAAM,UAAU,SAAS;AAC9B,WAAK,MAAM,OAAO,WAAW,SAAS,SAAS,OAAO,IAAI;AAAA,IAC3D;AAAA,EACD;AACD;;;;;;;;;;;;;;;ACnFD,GAAG,gBAAgB,SAAS;","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/@climblee/uv-ui/components/uv-column-notice/uv-column-notice.js.map b/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/@climblee/uv-ui/components/uv-column-notice/uv-column-notice.js.map new file mode 100644 index 0000000..bbac9f4 --- /dev/null +++ b/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/@climblee/uv-ui/components/uv-column-notice/uv-column-notice.js.map @@ -0,0 +1 @@ +{"version":3,"file":"uv-column-notice.js","sources":["node_modules/@climblee/uv-ui/components/uv-column-notice/uv-column-notice.vue","E:/HBuilderX.4.24.2024072208/plugins/uniapp-cli-vite/uniComponent:/RDovdW5pLWZhbnMtc2NvcmUvbm9kZV9tb2R1bGVzL0BjbGltYmxlZS91di11aS9jb21wb25lbnRzL3V2LWNvbHVtbi1ub3RpY2UvdXYtY29sdW1uLW5vdGljZS52dWU"],"sourcesContent":["\r\n\r\n\r\n\r\n\r\n","import Component from 'D:/uni-fans-score/node_modules/@climblee/uv-ui/components/uv-column-notice/uv-column-notice.vue'\nwx.createComponent(Component)"],"names":["mpMixin","mixin","props"],"mappings":";;AA+EC,MAAK,YAAU;AAAA,EACd,OAAO,CAAC,SAAQ,SAAQ,QAAQ;AAAA,EAChC,QAAQ,CAACA,cAAAA,SAASC,cAAK,OAAEC,qBAAK;AAAA,EAC9B,OAAO;AAAA,IACN,MAAM;AAAA,MACL,WAAW;AAAA,MACX,QAAQ,UAAU,UAAU;AAC3B,YAAG,CAAC,KAAK,IAAI,KAAK,MAAM,QAAQ,GAAG;AAClC,eAAK,IAAI,MAAM,4CAA4C;AAAA,QAC5D;AAAA,MACD;AAAA,IACD;AAAA,EACA;AAAA,EACD,UAAU;AAAA;AAAA,IAET,YAAY;AACX,UAAI,QAAQ,CAAC;AACb,YAAM,QAAQ,KAAK;AACnB,YAAM,WAAW,KAAK,IAAI,QAAQ,KAAK,QAAQ;AAC/C,aAAO;AAAA,IACP;AAAA;AAAA,IAED,WAAW;AACV,UAAI,KAAK,QAAQ;AAAc,eAAO;AAAA;AACjC,eAAO;AAAA,IACZ;AAAA;AAAA,IAED,cAAa;AACZ,YAAM,QAAQ,CAAA;AAKd,aAAO;AAAA,IACR;AAAA,EACA;AAAA,EACD,OAAO;AACN,WAAO;AAAA,MACN,OAAM;AAAA,IACP;AAAA,EACA;AAAA,EACD,SAAS;AAAA,IACR,aAAa,GAAE;AACd,WAAK,QAAQ,EAAE,OAAO;AACtB,WAAK,MAAM,UAAU,KAAK,KAAK;AAAA,IAC/B;AAAA;AAAA,IAED,eAAe;AACd,WAAK,MAAM,SAAS,KAAK,KAAK;AAAA,IAC9B;AAAA;AAAA,IAED,QAAQ;AACP,WAAK,MAAM,OAAO;AAAA,IACnB;AAAA,EACD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACpIF,GAAG,gBAAgB,SAAS;","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/@climblee/uv-ui/components/uv-icon/uv-icon.js.map b/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/@climblee/uv-ui/components/uv-icon/uv-icon.js.map new file mode 100644 index 0000000..54c832c --- /dev/null +++ b/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/@climblee/uv-ui/components/uv-icon/uv-icon.js.map @@ -0,0 +1 @@ +{"version":3,"file":"uv-icon.js","sources":["node_modules/@climblee/uv-ui/components/uv-icon/uv-icon.vue","E:/HBuilderX.4.24.2024072208/plugins/uniapp-cli-vite/uniComponent:/RDovdW5pLWZhbnMtc2NvcmUvbm9kZV9tb2R1bGVzL0BjbGltYmxlZS91di11aS9jb21wb25lbnRzL3V2LWljb24vdXYtaWNvbi52dWU"],"sourcesContent":["\r\n\r\n\r\n\r\n","import Component from 'D:/uni-fans-score/node_modules/@climblee/uv-ui/components/uv-icon/uv-icon.vue'\nwx.createComponent(Component)"],"names":["mpMixin","mixin","props","icons"],"mappings":";;AA8EC,MAAK,YAAU;AAAA,EACd,MAAM;AAAA,EACN,OAAO,CAAC,OAAO;AAAA,EACf,QAAQ,CAACA,cAAAA,SAASC,cAAK,OAAEC,qBAAK;AAAA,EAC9B,OAAO;AACN,WAAO;AAAA,MACN,WAAW;AAAA,QACV;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACD;AAAA,IACD;AAAA,EACA;AAAA,EACD,UAAU;AAAA,IACT,WAAW;AACV,UAAI,UAAU,CAAC;AACf,cAAQ,KAAK,KAAK,YAAY;AAC9B,cAAQ,KAAK,KAAK,eAAe,MAAM,KAAK,IAAI;AAEhD,UAAI,KAAK,SAAS,KAAK,UAAU,SAAS,KAAK,KAAK;AAAG,gBAAQ,KAAK,oBAAoB,KAAK,KAAK;AAMlG,aAAO;AAAA,IACP;AAAA,IACD,YAAY;AACX,UAAI,QAAQ,CAAC;AACb,cAAQ;AAAA,QACP,UAAU,KAAK,IAAI,QAAQ,KAAK,IAAI;AAAA,QACpC,YAAY,KAAK,IAAI,QAAQ,KAAK,IAAI;AAAA,QACtC,YAAY,KAAK,OAAO,SAAS;AAAA;AAAA,QAEjC,KAAK,KAAK,IAAI,QAAQ,KAAK,GAAG;AAAA,MAC/B;AAEA,UAAI,KAAK,SAAS,CAAC,KAAK,UAAU,SAAS,KAAK,KAAK;AAAG,cAAM,QAAQ,KAAK;AAC3E,aAAO;AAAA,IACP;AAAA;AAAA,IAED,QAAQ;AACP,YAAM,WAAW,KAAK,KAAK,QAAQ,OAAO,IAAI,MAAM,KAAK,KAAK,QAAQ,QAAQ,IAAI;AAClF,aAAO,KAAK,KAAK,QAAQ,GAAG,MAAM,MAAM;AAAA,IACxC;AAAA,IACD,WAAW;AACV,UAAI,QAAQ,CAAC;AAEb,YAAM,QAAQ,KAAK,QAAQ,KAAK,IAAI,QAAQ,KAAK,KAAK,IAAI,KAAK,IAAI,QAAQ,KAAK,IAAI;AACpF,YAAM,SAAS,KAAK,SAAS,KAAK,IAAI,QAAQ,KAAK,MAAM,IAAI,KAAK,IAAI,QAAQ,KAAK,IAAI;AACvF,aAAO;AAAA,IACP;AAAA;AAAA,IAED,OAAO;AAEN,YAAM,OAAOC,cAAK,MAAC,YAAY,KAAK,IAAI;AAMxC,aAAO,OAAO,SAAS,KAAK,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,QAAQ,KAAK,YAAY,IAAI,KAAK,KAAK,OAAO;AAAA,IAChG;AAAA,EACA;AAAA,EACD,SAAS;AAAA,IACR,aAAa,GAAG;AACf,WAAK,MAAM,SAAS,KAAK,KAAK;AAE9B,WAAK,QAAQ,KAAK,aAAa,CAAC;AAAA,IACjC;AAAA,EACD;AACD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACtJD,GAAG,gBAAgB,SAAS;","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/@climblee/uv-ui/components/uv-line/uv-line.js.map b/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/@climblee/uv-ui/components/uv-line/uv-line.js.map new file mode 100644 index 0000000..154c9b5 --- /dev/null +++ b/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/@climblee/uv-ui/components/uv-line/uv-line.js.map @@ -0,0 +1 @@ +{"version":3,"file":"uv-line.js","sources":["node_modules/@climblee/uv-ui/components/uv-line/uv-line.vue","E:/HBuilderX.4.24.2024072208/plugins/uniapp-cli-vite/uniComponent:/RDovdW5pLWZhbnMtc2NvcmUvbm9kZV9tb2R1bGVzL0BjbGltYmxlZS91di11aS9jb21wb25lbnRzL3V2LWxpbmUvdXYtbGluZS52dWU"],"sourcesContent":["\r\n\r\n\r\n\r\n\r\n","import Component from 'D:/uni-fans-score/node_modules/@climblee/uv-ui/components/uv-line/uv-line.vue'\nwx.createComponent(Component)"],"names":["mpMixin","mixin","props"],"mappings":";;AAyBC,MAAK,YAAU;AAAA,EACd,MAAM;AAAA,EACN,QAAQ,CAACA,cAAAA,SAASC,cAAK,OAAEC,qBAAK;AAAA,EAC9B,UAAU;AAAA,IACT,YAAY;AACX,YAAM,QAAQ,CAAC;AACf,YAAM,SAAS,KAAK;AAEpB,UAAI,KAAK,cAAc,OAAO;AAE7B,cAAM,oBAAoB;AAC1B,cAAM,oBAAoB,KAAK,SAAS,WAAW;AACnD,cAAM,QAAQ,KAAK,IAAI,QAAQ,KAAK,MAAM;AAC1C,YAAI,KAAK;AAAU,gBAAM,YAAY;AAAA,aAC/B;AAEN,cAAM,kBAAkB;AACxB,cAAM,kBAAkB,KAAK,SAAS,WAAW;AACjD,cAAM,SAAS,KAAK,IAAI,QAAQ,KAAK,MAAM;AAC3C,YAAI,KAAK;AAAU,gBAAM,YAAY;AAAA,MACtC;AACA,YAAM,cAAc,KAAK;AACzB,aAAO,KAAK,IAAI,UAAU,OAAO,KAAK,IAAI,SAAS,KAAK,WAAW,CAAC;AAAA,IACrE;AAAA,EACD;AACD;;;;;;;ACjDD,GAAG,gBAAgB,SAAS;","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/@climblee/uv-ui/components/uv-notice-bar/uv-notice-bar.js.map b/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/@climblee/uv-ui/components/uv-notice-bar/uv-notice-bar.js.map new file mode 100644 index 0000000..7b16c2a --- /dev/null +++ b/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/@climblee/uv-ui/components/uv-notice-bar/uv-notice-bar.js.map @@ -0,0 +1 @@ +{"version":3,"file":"uv-notice-bar.js","sources":["node_modules/@climblee/uv-ui/components/uv-notice-bar/uv-notice-bar.vue","E:/HBuilderX.4.24.2024072208/plugins/uniapp-cli-vite/uniComponent:/RDovdW5pLWZhbnMtc2NvcmUvbm9kZV9tb2R1bGVzL0BjbGltYmxlZS91di11aS9jb21wb25lbnRzL3V2LW5vdGljZS1iYXIvdXYtbm90aWNlLWJhci52dWU"],"sourcesContent":["\r\n\r\n\r\n\r\n","import Component from 'D:/uni-fans-score/node_modules/@climblee/uv-ui/components/uv-notice-bar/uv-notice-bar.vue'\nwx.createComponent(Component)"],"names":["mpMixin","mixin","props"],"mappings":";;AAsEC,MAAK,YAAU;AAAA,EACd,MAAM;AAAA,EACN,OAAO,CAAC,SAAQ,SAAQ,QAAQ;AAAA,EAChC,QAAQ,CAACA,cAAAA,SAASC,cAAK,OAAEC,mBAAK;AAAA,EAC9B,OAAO;AACN,WAAO;AAAA,MACN,MAAM;AAAA,IACP;AAAA,EACA;AAAA,EACD,SAAS;AAAA;AAAA,IAER,MAAM,OAAO;AACZ,WAAK,MAAM,SAAS,KAAK;AACzB,UAAI,KAAK,OAAO,KAAK,UAAU;AAE9B,aAAK,SAAS;AAAA,MACf;AAAA,IACA;AAAA;AAAA,IAED,QAAQ;AACP,WAAK,OAAO;AACZ,WAAK,MAAM,OAAO;AAAA,IAClB;AAAA;AAAA,IAED,OAAO,OAAM;AACZ,WAAK,MAAM,UAAS,KAAK;AAAA,IAC1B;AAAA,EACD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AChGF,GAAG,gBAAgB,SAAS;","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/@climblee/uv-ui/components/uv-row-notice/uv-row-notice.js.map b/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/@climblee/uv-ui/components/uv-row-notice/uv-row-notice.js.map new file mode 100644 index 0000000..a86143b --- /dev/null +++ b/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/@climblee/uv-ui/components/uv-row-notice/uv-row-notice.js.map @@ -0,0 +1 @@ +{"version":3,"file":"uv-row-notice.js","sources":["node_modules/@climblee/uv-ui/components/uv-row-notice/uv-row-notice.vue","E:/HBuilderX.4.24.2024072208/plugins/uniapp-cli-vite/uniComponent:/RDovdW5pLWZhbnMtc2NvcmUvbm9kZV9tb2R1bGVzL0BjbGltYmxlZS91di11aS9jb21wb25lbnRzL3V2LXJvdy1ub3RpY2UvdXYtcm93LW5vdGljZS52dWU"],"sourcesContent":["\r\n\r\n\r\n\r\n","import Component from 'D:/uni-fans-score/node_modules/@climblee/uv-ui/components/uv-row-notice/uv-row-notice.vue'\nwx.createComponent(Component)"],"names":["mpMixin","mixin","props"],"mappings":";;AA6EC,MAAK,YAAU;AAAA,EACd,MAAM;AAAA,EACN,OAAO,CAAC,SAAQ,OAAO;AAAA,EACvB,QAAQ,CAACA,cAAAA,SAASC,cAAK,OAAEC,qBAAK;AAAA,EAC9B,OAAO;AACN,WAAO;AAAA,MACN,mBAAmB;AAAA;AAAA,MACnB,oBAAoB;AAAA;AAAA;AAAA;AAAA,MAGpB,UAAU;AAAA,MACV,MAAM;AAAA;EAEP;AAAA,EACD,OAAO;AAAA,IACN,MAAM;AAAA,MACL,WAAW;AAAA,MACX,QAAQ,UAAU,UAAU;AAK3B,aAAK,IAAI;AAGT,YAAG,CAAC,KAAK,IAAI,KAAK,OAAO,QAAQ,GAAG;AACnC,eAAK,IAAI,MAAM,0CAA0C;AAAA,QAC1D;AAAA,MACD;AAAA,IACA;AAAA,IACD,WAAW;AAKV,WAAK,IAAI;AAAA,IAET;AAAA,IACD,QAAQ;AAKP,WAAK,IAAI;AAAA,IAEV;AAAA,EACA;AAAA,EACD,UAAU;AAAA;AAAA,IAET,YAAY;AACX,UAAI,QAAQ,CAAC;AACb,YAAM,QAAQ,KAAK;AACnB,YAAM,WAAW,KAAK,IAAI,QAAQ,KAAK,QAAQ;AAC/C,aAAO;AAAA,IACP;AAAA,IACD,iBAAiB;AAChB,UAAI,QAAQ,CAAC;AACb,YAAM,oBAAoB,KAAK;AAC/B,YAAM,qBAAqB,KAAK;AAChC,aAAO;AAAA,IACP;AAAA;AAAA;AAAA,IAGD,YAAY;AACX,UAAI,SAAS,CAAE,GAEd,MAAM;AACP,YAAM,UAAU,KAAK,OAAM,KAAK,KAAK,MAAM,EAAE,IAAE,CAAC;AAChD,eAAS,IAAI,GAAG,IAAI,QAAQ,QAAQ,KAAK,KAAK;AAE7C,eAAO,KAAK,QAAQ,MAAM,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,CAAC;AAAA,MAC/C;AACA,aAAO;AAAA,IACR;AAAA,EACA;AAAA,EACD,UAAU;AAeT,SAAK,KAAK;AAAA,EACV;AAAA,EACD,SAAS;AAAA,IACR,OAAO;AAMN,WAAK,IAAI;AAGT,UAAG,CAAC,KAAK,IAAI,KAAK,OAAO,KAAK,IAAI,GAAG;AACpC,aAAK,IAAI,MAAM,0CAA0C;AAAA,MAC1D;AAAA,IACA;AAAA;AAAA,IAED,MAAM,MAAM;AAEP,UACH,YAAY;AAEb,YAAM,KAAK,IAAI,MAAM;AAErB,mBAAa,MAAM,KAAK,WAAW,2BAA2B,GAAG;AACtD,OAAC,MAAM,KAAK,WAAW,qBAAqB,GAAG;AAG1D,WAAK,oBAAoB,GAAG,YAAY,KAAK,IAAI,MAAM,KAAK,KAAK,CAAC;AAElE,WAAK,qBAAqB;AAC1B,iBAAW,MAAM;AAChB,aAAK,qBAAqB;AAAA,MAC1B,GAAE,EAAE;AAAA,IAEL;AAAA;AAAA,IAED,MAAM,OAAO;AAAA,IAoBZ;AAAA,IACD,cAAc,WAAW,UAAU;AAAA,IA6BlC;AAAA,IACD,YAAY,IAAI;AAAA,IASf;AAAA;AAAA,IAED,aAAa,OAAO;AACnB,WAAK,MAAM,OAAO;AAAA,IAClB;AAAA;AAAA,IAED,QAAQ;AACP,WAAK,MAAM,OAAO;AAAA,IACnB;AAAA,EACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AChRH,GAAG,gBAAgB,SAAS;","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/unpackage/dist/dev/.sourcemap/mp-weixin/pages/index/index.js.map b/unpackage/dist/dev/.sourcemap/mp-weixin/pages/index/index.js.map index a563a18..4665758 100644 --- a/unpackage/dist/dev/.sourcemap/mp-weixin/pages/index/index.js.map +++ b/unpackage/dist/dev/.sourcemap/mp-weixin/pages/index/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sources":["pages/index/index.vue","E:/HBuilderX.4.24.2024072208/plugins/uniapp-cli-vite/uniPage:/cGFnZXMvaW5kZXgvaW5kZXgudnVl"],"sourcesContent":["\r\n\r\n\r\n\r\n\t","import MiniProgramPage from 'D:/uni-fans-score/pages/index/index.vue'\nwx.createPage(MiniProgramPage)"],"names":["ref","computed","onMounted","onUnmounted","uni","AmapUtil","wxLogin","URL","getQueryString","getDeviceInfo"],"mappings":";;;;;;;;;;AAoIA,MAAM,eAAe,MAAW;;;;AAGhC,UAAM,gBAAgBA,cAAG,IAAC,EAAE;AAC5B,UAAM,eAAeA,cAAG,IAAC,IAAI;AAC7B,UAAM,eAAeA,cAAG,IAAC,EAAE;AAC3B,UAAM,oBAAoBA,cAAG,IAAC,EAAE;AAChC,UAAM,aAAaA,cAAG,IAAC,KAAK;AAC5B,UAAM,YAAYA,cAAG,IAAC,KAAK;AAC3B,UAAM,qBAAqBA,cAAG,IAAC,KAAK;AACpC,UAAM,wBAAwBA,cAAG,IAAC,KAAK;AACvC,UAAM,oBAAoBA,cAAG,IAAC,KAAK;AAGnC,UAAM,SAASA,cAAG,IAAC,IAAI;AAGGC,kBAAAA,SAAS,MAAM;AACxC,UAAI,aAAa,SAAS,aAAa,MAAM,SAAS;AACrD,eAAO,GAAG,aAAa,MAAM,YAAY,MAAM;AAAA,MAC/C;AACD,aAAO;AAAA,IACR,CAAC;AAGDC,kBAAAA,UAAU,MAAM;AACf,WAAM;AAAA,IACP,CAAC;AAEDC,kBAAAA,YAAY,MAAM;AAAA,IAElB,CAAC;AAGD,UAAM,OAAO,YAAY;AACxB,gBAAU,QAAQ;AAClB,UAAI;AAEH,cAAM,gBAAiB;AAGvB,cAAM,cAAe;AAAA,MAErB,SAAQ,OAAO;AACfC,sBAAAA,MAAc,MAAA,SAAA,gCAAA,UAAU,KAAK;AAE7B,cAAM,cAAe;AAAA,MACvB,UAAW;AACT,kBAAU,QAAQ;AAAA,MAClB;AAAA,IACF;AAEA,UAAM,kBAAkB,YAAY;AACnC,UAAI;AACH,cAAM,WAAW,MAAM,IAAI,QAAQ,CAAC,SAAS,WAAW;AACvDA,wBAAAA,MAAI,YAAY;AAAA,YACf,MAAM;AAAA,YACN,SAAS;AAAA,YACT,MAAM;AAAA,UACV,CAAI;AAAA,QACJ,CAAG;AAGD,qBAAa,QAAQ;AAAA,UACpB,WAAW,SAAS;AAAA,UACpB,UAAU,SAAS;AAAA,QACnB;AAGD,YAAI,CAAC,sBAAsB,OAAO;AACjC,gCAAsB,QAAQ;AAAA,QAC9B;AAGD,YAAI;AACH,gBAAM,gBAAgB,MAAMC,oBAAS,UAAU,SAAS,WAAW,SAAS,QAAQ;AACpF,cAAI,cAAc,SAAS;AAC1B,kBAAM,cAAc,cAAc;AAClC,yBAAa,MAAM,UAAU,YAAY;AACzC,yBAAa,MAAM,OAAO,YAAY,iBAAiB;AACvD,yBAAa,MAAM,WAAW,YAAY,iBAAiB;AAAA,UAC3D;AAAA,QACD,SAAQ,OAAO;AAAA,QAEf;AAGD,mBAAW,YAAY;AACtB,gBAAM,cAAe;AAErBD,wBAAAA,MAAI,YAAa;AACjBA,wBAAAA,MAAI,UAAU;AAAA,YACb,OAAO;AAAA,YACP,MAAM;AAAA,UACV,CAAI;AAAA,QACD,GAAE,GAAG;AAAA,MAEN,SAAQ,OAAO;AACfA,sBAAAA,MAAc,MAAA,SAAA,gCAAA,WAAW,KAAK;AAC9BA,sBAAAA,MAAI,UAAU;AAAA,UACb,OAAO;AAAA,UACP,MAAM;AAAA,QACT,CAAG;AAAA,MACD;AAAA,IACF;AAEA,UAAM,gBAAgB,YAAY;AACjC,UAAI;AACH,YAAI,CAACA,cAAG,MAAC,eAAe,OAAO,GAAG;AACjC,gBAAME,mBAAS;AAAA,QACf;AAED,cAAM,MAAM,MAAMF,cAAG,MAAC,QAAQ;AAAA,UAC7B,KAAK,GAAGG,WAAG,GAAA;AAAA,UACX,QAAQ;AAAA,UACR,QAAQ;AAAA,YACP,iBAAiB,YAAYH,oBAAI,eAAe,OAAO;AAAA,YACvD,YAAYA,cAAAA,MAAI,eAAe,WAAW;AAAA,UAC1C;AAAA,QACJ,CAAG;AAED,YAAI,IAAI,eAAe,OAAO,IAAI,KAAK,SAAS,KAAK;AACpD,uBAAa,QAAQ,IAAI,KAAK,QAAQ,CAAE;AACxC,6BAAoB;AACpB,4BAAkB,QAAQ,CAAC,GAAG,aAAa,KAAK;AAAA,QACnD,OAAS;AACNA,wBAAc,MAAA,MAAA,SAAA,gCAAA,aAAa,IAAI,KAAK,GAAG;AAAA,QACvC;AAAA,MACD,SAAQ,OAAO;AACfA,sBAAAA,qDAAc,aAAa,KAAK;AAAA,MAChC;AAAA,IACF;AAEA,UAAM,qBAAqB,CAAC,cAAc,SAAS;;AAElD,YAAM,SAAS,eAAe,aAAa,WAAU,YAAO,UAAP,mBAAc;AAGnE,UAAI,CAAC,UAAU,OAAO,OAAO,cAAc,eAAe,OAAO,OAAO,aAAa,aAAa;AACjG;AAAA,MACA;AAED,mBAAa,MAAM,QAAQ,UAAQ;AAClC,YAAI,KAAK,aAAa,KAAK,UAAU;AACpC,cAAI;AACH,kBAAM,WAAWC,WAAAA,SAAS;AAAA,cACzB,OAAO;AAAA,cACP,OAAO;AAAA,cACP,WAAW,KAAK,QAAQ;AAAA,cACxB,WAAW,KAAK,SAAS;AAAA,YACzB;AACD,iBAAK,WAAW,SAAS,QAAQ,CAAC;AAAA,UAClC,SAAQ,OAAO;AACfD,0BAAc,MAAA,MAAA,SAAA,gCAAA,WAAW,OAAO,IAAI;AACpC,iBAAK,WAAW;AAAA,UAChB;AAAA,QACD;AAAA,MACH,CAAE;AAGD,mBAAa,MAAM,KAAK,CAAC,GAAG,MAAM;AACjC,gBAAQ,WAAW,EAAE,QAAQ,KAAK,QAAQ,WAAW,EAAE,QAAQ,KAAK;AAAA,MACtE,CAAE;AAAA,IACF;AAEA,UAAM,wBAAwB,OAAO,WAAW;AAC/C,UAAI;AACH,YAAI,CAACA,cAAG,MAAC,eAAe,OAAO,GAAG;AACjC,gBAAME,mBAAS;AAAA,QACf;AAGD,cAAM,MAAM,MAAMF,cAAG,MAAC,QAAQ;AAAA,UAC7B,KAAK,GAAGG,WAAG,GAAA;AAAA,UACX,QAAQ;AAAA,UACR,QAAQ;AAAA,YACP,iBAAiB,YAAYH,oBAAI,eAAe,OAAO;AAAA,YACvD,YAAYA,cAAAA,MAAI,eAAe,WAAW;AAAA,UAC1C;AAAA,QACJ,CAAG;AAED,YAAI,IAAI,eAAe,OAAO,IAAI,KAAK,SAAS,KAAK;AACpD,uBAAa,QAAQ,IAAI,KAAK,QAAQ,CAAE;AAExC,6BAAmB,MAAM;AAGzB,gBAAM,cAAc;AACpB,4BAAkB,QAAQ,aAAa,MAAM,OAAO,UAAQ;AAC3D,mBAAO,CAAC,KAAK,YAAY,WAAW,KAAK,QAAQ,KAAK;AAAA,UAC1D,CAAI;AAAA,QAEJ,OAAS;AACNA,wBAAc,MAAA,MAAA,SAAA,gCAAA,iBAAiB,IAAI,KAAK,GAAG;AAC3C,uBAAa,QAAQ,CAAE;AACvB,4BAAkB,QAAQ,CAAE;AAAA,QAC5B;AAAA,MACD,SAAQ,OAAO;AACfA,sBAAAA,MAAc,MAAA,SAAA,gCAAA,iBAAiB,KAAK;AAAA,MAEpC;AAAA,IACF;AAEA,UAAM,iBAAiB,YAAY;AAClCA,oBAAAA,MAAI,YAAY,EAAE,OAAO,SAAQ,CAAE;AAGnCA,oBAAAA,MAAI,SAAS;AAAA,QACZ,KAAK;AAAA,MACP,CAAE;AAAA,IACF;AAEA,UAAM,oBAAoB,CAAC,WAAW;AACrC,4BAAsB,MAAM;AAAA,IAC7B;AAEA,UAAM,iBAAiB,CAAC,aAAa;AACpCA,oBAAAA,MAAI,gBAAgB;AAAA,QACnB,UAAU,CAAC,QAAQ,MAAM;AAAA,QACzB,SAAS,CAAC,QAAQ;AACjB,kBAAQ,IAAI,UAAQ;AAAA,YACnB,KAAK;AACJ,yBAAY;AACZ;AAAA,YACD,KAAK;AACJ,iCAAmB,QAAQ;AAC3B;AAAA,UACD;AAAA,QACD;AAAA,MACH,CAAE;AAAA,IACF;AAEA,UAAM,0BAA0B,CAAC,aAAa;AAE7C,uBAAkB;AAGlB,iBAAW,MAAM;AAChB,uBAAe,QAAQ;AAAA,MACvB,GAAE,GAAG;AAAA,IACP;AAEA,UAAM,qBAAqB,CAAC,aAAa;AACxC,YAAM,WAAW,WAAW,SAAS,QAAQ;AAC7C,YAAM,YAAY,WAAW,SAAS,SAAS;AAE/CA,oBAAAA,MAAI,aAAa;AAAA,QAChB;AAAA,QACA;AAAA,QACA,MAAM,SAAS;AAAA,QACf,SAAS,SAAS;AAAA,MACpB,CAAE;AAAA,IACF;AAEA,UAAM,cAAc,MAAM;AACzB,iBAAW,QAAQ,CAAC,WAAW;AAAA,IAChC;AAcA,UAAM,aAAa,YAAY;AAC3B,UAAI;AACH,cAAM,aAAa,MAAM,IAAI,QAAQ,CAAC,SAAS,WAAW;AACzDA,wBAAAA,MAAI,SAAS;AAAA,YACZ,SAAS;AAAA,YACT,MAAM;AAAA,UACb,CAAO;AAAA,QACP,CAAM;AAED,YAAI,WAAWI,WAAc,eAAC,WAAW,MAAM,UAAU;AAEzD,YAAI,CAAC,UAAU;AACdJ,wBAAAA,MAAI,UAAU;AAAA,YACb,OAAO;AAAA,YACP,MAAM;AAAA,UACb,CAAO;AACD;AAAA,QACA;AAED,YAAI,CAACA,cAAG,MAAC,eAAe,OAAO,GAAG;AACjC,gBAAME,mBAAS;AAAA,QACf;AAGD,cAAM,WAAW,MAAMF,cAAG,MAAC,QAAQ;AAAA,UACrC,KAAK,GAAGG,WAAG,GAAA;AAAA,UACR,QAAQ;AAAA,UACR,QAAQ;AAAA,YACP,iBAAiB,YAAYH,oBAAI,eAAe,OAAO;AAAA,YACvD,YAAYA,cAAAA,MAAI,eAAe,WAAW;AAAA,UAC1C;AAAA,QACP,CAAM;AAED,YAAI,SAAS,cAAc,OAAO,SAAS,KAAK,QAAQ,OAAO,SAAS,KAAK,MAAM;AAClF,gBAAM,aAAa,SAAS,KAAK;AACjCA,wBAAAA,MAAI,SAAS;AAAA,YACZ,KAAK,+BAA+B,WAAW,OAAO,aAAa,YAAY,WAAW,QAAQ;AAAA,UACzG,CAAO;AACD;AAAA,QACA;AAGD,cAAM,WAAW,MAAMA,cAAG,MAAC,QAAQ;AAAA,UACrC,KAAK,GAAGG,WAAG,GAAA;AAAA,UACR,QAAQ;AAAA,UACR,QAAQ;AAAA,YACP,iBAAiB,YAAYH,oBAAI,eAAe,OAAO;AAAA,YACvD,YAAYA,cAAAA,MAAI,eAAe,WAAW;AAAA,UAC1C;AAAA,QACP,CAAM;AAED,YAAI,SAAS,cAAc,OAAO,SAAS,KAAK,QAAQ,OAAO,SAAS,KAAK,MAAM;AAClF,gBAAM,cAAc,SAAS,KAAK;AAClCA,wBAAAA,MAAI,WAAW;AAAA,YACd,KAAK,gCAAgC,YAAY,OAAO;AAAA,UAC/D,CAAO;AAAA,QACP,OAAY;AACN,cAAI;AACH,kBAAM,gBAAgB,MAAMK,YAAa,cAAC,QAAQ;AAElD,gBAAI,cAAc,QAAQ,OAAO,cAAc,QAAQ,cAAc,KAAK,QAAQ;AACjF,oBAAM,aAAa,cAAc,KAAK;AAEtC,kBAAI,WAAW,WAAW;AACzB,oBAAI;AACH,wBAAM,YAAY,KAAK,MAAM,WAAW,SAAS;AACjDL,gCAAAA,MAAI,WAAW;AAAA,oBACd,KAAK,iCAAiC,QAAQ,cAAc,mBAAmB,WAAW,SAAS,CAAC;AAAA,kBAC/G,CAAW;AAAA,gBACD,SAAQ,GAAG;AACXA,gCAAAA,MAAI,WAAW;AAAA,oBACd,KAAK,iCAAiC,QAAQ;AAAA,kBACzD,CAAW;AAAA,gBACD;AAAA,cACV,OAAe;AACNA,8BAAAA,MAAI,WAAW;AAAA,kBACd,KAAK,iCAAiC,QAAQ;AAAA,gBACxD,CAAU;AAAA,cACD;AAAA,YACT,OAAc;AACNA,4BAAAA,MAAI,UAAU;AAAA,gBACb,OAAO;AAAA,gBACP,MAAM;AAAA,cACf,CAAS;AACDA,4BAAAA,MAAI,WAAW;AAAA,gBACd,KAAK,iCAAiC,QAAQ;AAAA,cACvD,CAAS;AAAA,YACD;AAAA,UACD,SAAQ,OAAO;AACfA,0BAAAA,MAAA,MAAA,SAAA,gCAAc,aAAa,KAAK;AAChCA,0BAAAA,MAAI,WAAW;AAAA,cACd,KAAK,iCAAiC,QAAQ;AAAA,YACtD,CAAQ;AAAA,UACD;AAAA,QACD;AAAA,MACD,SAAQ,OAAO;AACfA,sBAAAA,qDAAc,WAAW,KAAK;AAC9BA,sBAAAA,MAAI,UAAU;AAAA,UACb,OAAO;AAAA,UACP,MAAM;AAAA,QACZ,CAAM;AAAA,MACD;AAAA,IACD;AAEF,UAAM,mBAAmB,MAAM;AAC9B,wBAAkB,QAAQ;AAAA,IAC1B;AAED,UAAM,mBAAmB,MAAM;AAC9B,wBAAkB,QAAQ;AAAA,IAC1B;AAED,UAAM,mBAAmB,CAAC,MAAM;AAC/B,UAAI,EAAE,OAAO,WAAW,qBAAqB;AAC5C,2BAAmB,QAAQ;AAAA,MAC1B;AAAA,IACD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACrgBJ,GAAG,WAAW,eAAe;"} \ No newline at end of file +{"version":3,"file":"index.js","sources":["pages/index/index.vue","E:/HBuilderX.4.24.2024072208/plugins/uniapp-cli-vite/uniPage:/cGFnZXMvaW5kZXgvaW5kZXgudnVl"],"sourcesContent":["\r\n\r\n\r\n\r\n","import MiniProgramPage from 'D:/uni-fans-score/pages/index/index.vue'\nwx.createPage(MiniProgramPage)"],"names":["ref","computed","onMounted","onUnmounted","testDistanceCalculation","uni","getUserLocation","getRegeo","wxLogin","URL","calculateDistanceSync","getQueryString","getDeviceInfo"],"mappings":"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"} \ No newline at end of file diff --git a/unpackage/dist/dev/.sourcemap/mp-weixin/utils/amap-adapter.js.map b/unpackage/dist/dev/.sourcemap/mp-weixin/utils/amap-adapter.js.map new file mode 100644 index 0000000..71707bc --- /dev/null +++ b/unpackage/dist/dev/.sourcemap/mp-weixin/utils/amap-adapter.js.map @@ -0,0 +1 @@ +{"version":3,"file":"amap-adapter.js","sources":["utils/amap-adapter.js"],"sourcesContent":["// 高德地图适配器,使用官方SDK\r\nimport { AMapWX } from './amap-wx.130.js';\r\n\r\n// 简化的SDK实例获取函数\r\nfunction getAMapWXInstance(key) {\r\n // 直接创建实例\r\n return new AMapWX({key: key});\r\n}\r\n\r\n// 导出获取实例的方法\r\nexport { getAMapWXInstance };"],"names":["AMapWX"],"mappings":";;AAIA,SAAS,kBAAkB,KAAK;AAE9B,SAAO,IAAIA,iBAAAA,OAAO,EAAC,IAAQ,CAAC;AAC9B;;"} \ No newline at end of file diff --git a/unpackage/dist/dev/.sourcemap/mp-weixin/utils/amap-wx.130.js.map b/unpackage/dist/dev/.sourcemap/mp-weixin/utils/amap-wx.130.js.map new file mode 100644 index 0000000..9ed68e2 --- /dev/null +++ b/unpackage/dist/dev/.sourcemap/mp-weixin/utils/amap-wx.130.js.map @@ -0,0 +1 @@ +{"version":3,"file":"amap-wx.130.js","sources":["utils/amap-wx.130.js"],"sourcesContent":["function AMapWX(a) {\r\n\tthis.key = a.key;\r\n\tthis.requestConfig = {\r\n\t\tkey: a.key,\r\n\t\ts: \"rsx\",\r\n\t\tplatform: \"WXJS\",\r\n\t\tappname: a.key,\r\n\t\tsdkversion: \"1.2.0\",\r\n\t\tlogversion: \"2.0\"\r\n\t};\r\n\tthis.MeRequestConfig = {\r\n\t\tkey: a.key,\r\n\t\tserviceName: \"https://restapi.amap.com/rest/me\"\r\n\t}\r\n}\r\nAMapWX.prototype.getWxLocation = function(a, b) {\r\n\twx.getLocation({\r\n\t\ttype: \"gcj02\",\r\n\t\tsuccess: function(c) {\r\n\t\t\tc = c.longitude + \",\" + c.latitude;\r\n\t\t\twx.setStorage({\r\n\t\t\t\tkey: \"userLocation\",\r\n\t\t\t\tdata: c\r\n\t\t\t});\r\n\t\t\tb(c)\r\n\t\t},\r\n\t\tfail: function(c) {\r\n\t\t\twx.getStorage({\r\n\t\t\t\tkey: \"userLocation\",\r\n\t\t\t\tsuccess: function(d) {\r\n\t\t\t\t\td.data && b(d.data)\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\ta.fail({\r\n\t\t\t\terrCode: \"0\",\r\n\t\t\t\terrMsg: c.errMsg || \"\"\r\n\t\t\t})\r\n\t\t}\r\n\t})\r\n};\r\nAMapWX.prototype.getMEKeywordsSearch = function(a) {\r\n\tif (!a.options) return a.fail({\r\n\t\terrCode: \"0\",\r\n\t\terrMsg: \"\\u7f3a\\u5c11\\u5fc5\\u8981\\u53c2\\u6570\"\r\n\t});\r\n\tvar b = a.options,\r\n\t\tc = this.MeRequestConfig,\r\n\t\td = {\r\n\t\t\tkey: c.key,\r\n\t\t\ts: \"rsx\",\r\n\t\t\tplatform: \"WXJS\",\r\n\t\t\tappname: a.key,\r\n\t\t\tsdkversion: \"1.2.0\",\r\n\t\t\tlogversion: \"2.0\"\r\n\t\t};\r\n\tb.layerId && (d.layerId = b.layerId);\r\n\tb.keywords && (d.keywords = b.keywords);\r\n\tb.city && (d.city = b.city);\r\n\tb.filter && (d.filter = b.filter);\r\n\tb.sortrule && (d.sortrule = b.sortrule);\r\n\tb.pageNum && (d.pageNum = b.pageNum);\r\n\tb.pageSize && (d.pageSize = b.pageSize);\r\n\tb.sig && (d.sig =\r\n\t\tb.sig);\r\n\twx.request({\r\n\t\turl: c.serviceName + \"/cpoint/datasearch/local\",\r\n\t\tdata: d,\r\n\t\tmethod: \"GET\",\r\n\t\theader: {\r\n\t\t\t\"content-type\": \"application/json\"\r\n\t\t},\r\n\t\tsuccess: function(e) {\r\n\t\t\t(e = e.data) && e.status && \"1\" === e.status && 0 === e.code ? a.success(e.data) : a.fail({\r\n\t\t\t\terrCode: \"0\",\r\n\t\t\t\terrMsg: e\r\n\t\t\t})\r\n\t\t},\r\n\t\tfail: function(e) {\r\n\t\t\ta.fail({\r\n\t\t\t\terrCode: \"0\",\r\n\t\t\t\terrMsg: e.errMsg || \"\"\r\n\t\t\t})\r\n\t\t}\r\n\t})\r\n};\r\nAMapWX.prototype.getMEIdSearch = function(a) {\r\n\tif (!a.options) return a.fail({\r\n\t\terrCode: \"0\",\r\n\t\terrMsg: \"\\u7f3a\\u5c11\\u5fc5\\u8981\\u53c2\\u6570\"\r\n\t});\r\n\tvar b = a.options,\r\n\t\tc = this.MeRequestConfig,\r\n\t\td = {\r\n\t\t\tkey: c.key,\r\n\t\t\ts: \"rsx\",\r\n\t\t\tplatform: \"WXJS\",\r\n\t\t\tappname: a.key,\r\n\t\t\tsdkversion: \"1.2.0\",\r\n\t\t\tlogversion: \"2.0\"\r\n\t\t};\r\n\tb.layerId && (d.layerId = b.layerId);\r\n\tb.id && (d.id = b.id);\r\n\tb.sig && (d.sig = b.sig);\r\n\twx.request({\r\n\t\turl: c.serviceName + \"/cpoint/datasearch/id\",\r\n\t\tdata: d,\r\n\t\tmethod: \"GET\",\r\n\t\theader: {\r\n\t\t\t\"content-type\": \"application/json\"\r\n\t\t},\r\n\t\tsuccess: function(e) {\r\n\t\t\t(e = e.data) && e.status && \"1\" === e.status &&\r\n\t\t\t\t0 === e.code ? a.success(e.data) : a.fail({\r\n\t\t\t\t\terrCode: \"0\",\r\n\t\t\t\t\terrMsg: e\r\n\t\t\t\t})\r\n\t\t},\r\n\t\tfail: function(e) {\r\n\t\t\ta.fail({\r\n\t\t\t\terrCode: \"0\",\r\n\t\t\t\terrMsg: e.errMsg || \"\"\r\n\t\t\t})\r\n\t\t}\r\n\t})\r\n};\r\nAMapWX.prototype.getMEPolygonSearch = function(a) {\r\n\tif (!a.options) return a.fail({\r\n\t\terrCode: \"0\",\r\n\t\terrMsg: \"\\u7f3a\\u5c11\\u5fc5\\u8981\\u53c2\\u6570\"\r\n\t});\r\n\tvar b = a.options,\r\n\t\tc = this.MeRequestConfig,\r\n\t\td = {\r\n\t\t\tkey: c.key,\r\n\t\t\ts: \"rsx\",\r\n\t\t\tplatform: \"WXJS\",\r\n\t\t\tappname: a.key,\r\n\t\t\tsdkversion: \"1.2.0\",\r\n\t\t\tlogversion: \"2.0\"\r\n\t\t};\r\n\tb.layerId && (d.layerId = b.layerId);\r\n\tb.keywords && (d.keywords = b.keywords);\r\n\tb.polygon && (d.polygon = b.polygon);\r\n\tb.filter && (d.filter = b.filter);\r\n\tb.sortrule && (d.sortrule = b.sortrule);\r\n\tb.pageNum && (d.pageNum = b.pageNum);\r\n\tb.pageSize && (d.pageSize = b.pageSize);\r\n\tb.sig && (d.sig = b.sig);\r\n\twx.request({\r\n\t\turl: c.serviceName + \"/cpoint/datasearch/polygon\",\r\n\t\tdata: d,\r\n\t\tmethod: \"GET\",\r\n\t\theader: {\r\n\t\t\t\"content-type\": \"application/json\"\r\n\t\t},\r\n\t\tsuccess: function(e) {\r\n\t\t\t(e = e.data) && e.status && \"1\" === e.status && 0 === e.code ? a.success(e.data) : a.fail({\r\n\t\t\t\terrCode: \"0\",\r\n\t\t\t\terrMsg: e\r\n\t\t\t})\r\n\t\t},\r\n\t\tfail: function(e) {\r\n\t\t\ta.fail({\r\n\t\t\t\terrCode: \"0\",\r\n\t\t\t\terrMsg: e.errMsg || \"\"\r\n\t\t\t})\r\n\t\t}\r\n\t})\r\n};\r\nAMapWX.prototype.getMEaroundSearch = function(a) {\r\n\tif (!a.options) return a.fail({\r\n\t\terrCode: \"0\",\r\n\t\terrMsg: \"\\u7f3a\\u5c11\\u5fc5\\u8981\\u53c2\\u6570\"\r\n\t});\r\n\tvar b = a.options,\r\n\t\tc = this.MeRequestConfig,\r\n\t\td = {\r\n\t\t\tkey: c.key,\r\n\t\t\ts: \"rsx\",\r\n\t\t\tplatform: \"WXJS\",\r\n\t\t\tappname: a.key,\r\n\t\t\tsdkversion: \"1.2.0\",\r\n\t\t\tlogversion: \"2.0\"\r\n\t\t};\r\n\tb.layerId && (d.layerId = b.layerId);\r\n\tb.keywords && (d.keywords = b.keywords);\r\n\tb.center && (d.center = b.center);\r\n\tb.radius && (d.radius = b.radius);\r\n\tb.filter && (d.filter = b.filter);\r\n\tb.sortrule && (d.sortrule = b.sortrule);\r\n\tb.pageNum && (d.pageNum = b.pageNum);\r\n\tb.pageSize &&\r\n\t\t(d.pageSize = b.pageSize);\r\n\tb.sig && (d.sig = b.sig);\r\n\twx.request({\r\n\t\turl: c.serviceName + \"/cpoint/datasearch/around\",\r\n\t\tdata: d,\r\n\t\tmethod: \"GET\",\r\n\t\theader: {\r\n\t\t\t\"content-type\": \"application/json\"\r\n\t\t},\r\n\t\tsuccess: function(e) {\r\n\t\t\t(e = e.data) && e.status && \"1\" === e.status && 0 === e.code ? a.success(e.data) : a.fail({\r\n\t\t\t\terrCode: \"0\",\r\n\t\t\t\terrMsg: e\r\n\t\t\t})\r\n\t\t},\r\n\t\tfail: function(e) {\r\n\t\t\ta.fail({\r\n\t\t\t\terrCode: \"0\",\r\n\t\t\t\terrMsg: e.errMsg || \"\"\r\n\t\t\t})\r\n\t\t}\r\n\t})\r\n};\r\nAMapWX.prototype.getGeo = function(a) {\r\n\tvar b = this.requestConfig,\r\n\t\tc = a.options;\r\n\tb = {\r\n\t\tkey: this.key,\r\n\t\textensions: \"all\",\r\n\t\ts: b.s,\r\n\t\tplatform: b.platform,\r\n\t\tappname: this.key,\r\n\t\tsdkversion: b.sdkversion,\r\n\t\tlogversion: b.logversion\r\n\t};\r\n\tc.address && (b.address = c.address);\r\n\tc.city && (b.city = c.city);\r\n\tc.batch && (b.batch = c.batch);\r\n\tc.sig && (b.sig = c.sig);\r\n\twx.request({\r\n\t\turl: \"https://restapi.amap.com/v3/geocode/geo\",\r\n\t\tdata: b,\r\n\t\tmethod: \"GET\",\r\n\t\theader: {\r\n\t\t\t\"content-type\": \"application/json\"\r\n\t\t},\r\n\t\tsuccess: function(d) {\r\n\t\t\t(d = d.data) && d.status && \"1\" === d.status ? a.success(d) : a.fail({\r\n\t\t\t\terrCode: \"0\",\r\n\t\t\t\terrMsg: d\r\n\t\t\t})\r\n\t\t},\r\n\t\tfail: function(d) {\r\n\t\t\ta.fail({\r\n\t\t\t\terrCode: \"0\",\r\n\t\t\t\terrMsg: d.errMsg || \"\"\r\n\t\t\t})\r\n\t\t}\r\n\t})\r\n};\r\nAMapWX.prototype.getRegeo = function(a) {\r\n\tfunction b(d) {\r\n\t\tvar e = c.requestConfig;\r\n\t\twx.request({\r\n\t\t\turl: \"https://restapi.amap.com/v3/geocode/regeo\",\r\n\t\t\tdata: {\r\n\t\t\t\tkey: c.key,\r\n\t\t\t\tlocation: d,\r\n\t\t\t\textensions: \"all\",\r\n\t\t\t\ts: e.s,\r\n\t\t\t\tplatform: e.platform,\r\n\t\t\t\tappname: c.key,\r\n\t\t\t\tsdkversion: e.sdkversion,\r\n\t\t\t\tlogversion: e.logversion\r\n\t\t\t},\r\n\t\t\tmethod: \"GET\",\r\n\t\t\theader: {\r\n\t\t\t\t\"content-type\": \"application/json\"\r\n\t\t\t},\r\n\t\t\tsuccess: function(g) {\r\n\t\t\t\tif (g.data.status && \"1\" == g.data.status) {\r\n\t\t\t\t\tg = g.data.regeocode;\r\n\t\t\t\t\tvar h = g.addressComponent,\r\n\t\t\t\t\t\tf = [],\r\n\t\t\t\t\t\tk = g.roads[0].name + \"\\u9644\\u8fd1\",\r\n\t\t\t\t\t\tm = d.split(\",\")[0],\r\n\t\t\t\t\t\tn = d.split(\",\")[1];\r\n\t\t\t\t\tif (g.pois &&\r\n\t\t\t\t\t\tg.pois[0]) {\r\n\t\t\t\t\t\tk = g.pois[0].name + \"\\u9644\\u8fd1\";\r\n\t\t\t\t\t\tvar l = g.pois[0].location;\r\n\t\t\t\t\t\tl && (m = parseFloat(l.split(\",\")[0]), n = parseFloat(l.split(\",\")[1]))\r\n\t\t\t\t\t}\r\n\t\t\t\t\th.provice && f.push(h.provice);\r\n\t\t\t\t\th.city && f.push(h.city);\r\n\t\t\t\t\th.district && f.push(h.district);\r\n\t\t\t\t\th.streetNumber && h.streetNumber.street && h.streetNumber.number ? (f.push(h\r\n\t\t\t\t\t\t.streetNumber.street), f.push(h.streetNumber.number)) : f.push(g.roads[0]\r\n\t\t\t\t\t\t.name);\r\n\t\t\t\t\tf = f.join(\"\");\r\n\t\t\t\t\ta.success([{\r\n\t\t\t\t\t\ticonPath: a.iconPath,\r\n\t\t\t\t\t\twidth: a.iconWidth,\r\n\t\t\t\t\t\theight: a.iconHeight,\r\n\t\t\t\t\t\tname: f,\r\n\t\t\t\t\t\tdesc: k,\r\n\t\t\t\t\t\tlongitude: m,\r\n\t\t\t\t\t\tlatitude: n,\r\n\t\t\t\t\t\tid: 0,\r\n\t\t\t\t\t\tregeocodeData: g\r\n\t\t\t\t\t}])\r\n\t\t\t\t} else a.fail({\r\n\t\t\t\t\terrCode: g.data.infocode,\r\n\t\t\t\t\terrMsg: g.data.info\r\n\t\t\t\t})\r\n\t\t\t},\r\n\t\t\tfail: function(g) {\r\n\t\t\t\ta.fail({\r\n\t\t\t\t\terrCode: \"0\",\r\n\t\t\t\t\terrMsg: g.errMsg || \"\"\r\n\t\t\t\t})\r\n\t\t\t}\r\n\t\t})\r\n\t}\r\n\tvar c = this;\r\n\ta.location ? b(a.location) : c.getWxLocation(a, function(d) {\r\n\t\tb(d)\r\n\t})\r\n};\r\nAMapWX.prototype.getWeather = function(a) {\r\n\tfunction b(g) {\r\n\t\tvar h = \"base\";\r\n\t\ta.type && \"forecast\" == a.type && (h = \"all\");\r\n\t\twx.request({\r\n\t\t\turl: \"https://restapi.amap.com/v3/weather/weatherInfo\",\r\n\t\t\tdata: {\r\n\t\t\t\tkey: d.key,\r\n\t\t\t\tcity: g,\r\n\t\t\t\textensions: h,\r\n\t\t\t\ts: e.s,\r\n\t\t\t\tplatform: e.platform,\r\n\t\t\t\tappname: d.key,\r\n\t\t\t\tsdkversion: e.sdkversion,\r\n\t\t\t\tlogversion: e.logversion\r\n\t\t\t},\r\n\t\t\tmethod: \"GET\",\r\n\t\t\theader: {\r\n\t\t\t\t\"content-type\": \"application/json\"\r\n\t\t\t},\r\n\t\t\tsuccess: function(f) {\r\n\t\t\t\tif (f.data.status && \"1\" == f.data.status)\r\n\t\t\t\t\tif (f.data.lives) {\r\n\t\t\t\t\t\tif ((f = f.data.lives) && 0 < f.length) {\r\n\t\t\t\t\t\t\tf = f[0];\r\n\t\t\t\t\t\t\tvar k = {\r\n\t\t\t\t\t\t\t\tcity: {\r\n\t\t\t\t\t\t\t\t\ttext: \"\\u57ce\\u5e02\",\r\n\t\t\t\t\t\t\t\t\tdata: f.city\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\tweather: {\r\n\t\t\t\t\t\t\t\t\ttext: \"\\u5929\\u6c14\",\r\n\t\t\t\t\t\t\t\t\tdata: f.weather\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\ttemperature: {\r\n\t\t\t\t\t\t\t\t\ttext: \"\\u6e29\\u5ea6\",\r\n\t\t\t\t\t\t\t\t\tdata: f.temperature\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\twinddirection: {\r\n\t\t\t\t\t\t\t\t\ttext: \"\\u98ce\\u5411\",\r\n\t\t\t\t\t\t\t\t\tdata: f.winddirection + \"\\u98ce\"\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\twindpower: {\r\n\t\t\t\t\t\t\t\t\ttext: \"\\u98ce\\u529b\",\r\n\t\t\t\t\t\t\t\t\tdata: f.windpower + \"\\u7ea7\"\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\thumidity: {\r\n\t\t\t\t\t\t\t\t\ttext: \"\\u6e7f\\u5ea6\",\r\n\t\t\t\t\t\t\t\t\tdata: f.humidity + \"%\"\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t\tk.liveData = f;\r\n\t\t\t\t\t\t\ta.success(k)\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else f.data.forecasts && f.data.forecasts[0] && a.success({\r\n\t\t\t\t\t\tforecast: f.data.forecasts[0]\r\n\t\t\t\t\t});\r\n\t\t\t\telse a.fail({\r\n\t\t\t\t\terrCode: f.data.infocode,\r\n\t\t\t\t\terrMsg: f.data.info\r\n\t\t\t\t})\r\n\t\t\t},\r\n\t\t\tfail: function(f) {\r\n\t\t\t\ta.fail({\r\n\t\t\t\t\terrCode: \"0\",\r\n\t\t\t\t\terrMsg: f.errMsg || \"\"\r\n\t\t\t\t})\r\n\t\t\t}\r\n\t\t})\r\n\t}\r\n\r\n\tfunction c(g) {\r\n\t\twx.request({\r\n\t\t\turl: \"https://restapi.amap.com/v3/geocode/regeo\",\r\n\t\t\tdata: {\r\n\t\t\t\tkey: d.key,\r\n\t\t\t\tlocation: g,\r\n\t\t\t\textensions: \"all\",\r\n\t\t\t\ts: e.s,\r\n\t\t\t\tplatform: e.platform,\r\n\t\t\t\tappname: d.key,\r\n\t\t\t\tsdkversion: e.sdkversion,\r\n\t\t\t\tlogversion: e.logversion\r\n\t\t\t},\r\n\t\t\tmethod: \"GET\",\r\n\t\t\theader: {\r\n\t\t\t\t\"content-type\": \"application/json\"\r\n\t\t\t},\r\n\t\t\tsuccess: function(h) {\r\n\t\t\t\tif (h.data.status && \"1\" == h.data.status) {\r\n\t\t\t\t\th = h.data.regeocode;\r\n\t\t\t\t\tif (h.addressComponent) var f = h.addressComponent.adcode;\r\n\t\t\t\t\telse h.aois && 0 < h.aois.length && (f = h.aois[0].adcode);\r\n\t\t\t\t\tb(f)\r\n\t\t\t\t} else a.fail({\r\n\t\t\t\t\terrCode: h.data.infocode,\r\n\t\t\t\t\terrMsg: h.data.info\r\n\t\t\t\t})\r\n\t\t\t},\r\n\t\t\tfail: function(h) {\r\n\t\t\t\ta.fail({\r\n\t\t\t\t\terrCode: \"0\",\r\n\t\t\t\t\terrMsg: h.errMsg || \"\"\r\n\t\t\t\t})\r\n\t\t\t}\r\n\t\t})\r\n\t}\r\n\tvar d = this,\r\n\t\te = d.requestConfig;\r\n\ta.city ? b(a.city) : d.getWxLocation(a, function(g) {\r\n\t\tc(g)\r\n\t})\r\n};\r\nAMapWX.prototype.getPoiAround = function(a) {\r\n\tfunction b(e) {\r\n\t\te = {\r\n\t\t\tkey: c.key,\r\n\t\t\tlocation: e,\r\n\t\t\ts: d.s,\r\n\t\t\tplatform: d.platform,\r\n\t\t\tappname: c.key,\r\n\t\t\tsdkversion: d.sdkversion,\r\n\t\t\tlogversion: d.logversion\r\n\t\t};\r\n\t\ta.querytypes && (e.types = a.querytypes);\r\n\t\ta.querykeywords && (e.keywords = a.querykeywords);\r\n\t\twx.request({\r\n\t\t\turl: \"https://restapi.amap.com/v3/place/around\",\r\n\t\t\tdata: e,\r\n\t\t\tmethod: \"GET\",\r\n\t\t\theader: {\r\n\t\t\t\t\"content-type\": \"application/json\"\r\n\t\t\t},\r\n\t\t\tsuccess: function(g) {\r\n\t\t\t\tif (g.data.status && \"1\" == g.data.status) {\r\n\t\t\t\t\tif ((g = g.data) && g.pois) {\r\n\t\t\t\t\t\tfor (var h = [], f = 0; f < g.pois.length; f++) {\r\n\t\t\t\t\t\t\tvar k = 0 ==\r\n\t\t\t\t\t\t\t\tf ? a.iconPathSelected : a.iconPath;\r\n\t\t\t\t\t\t\th.push({\r\n\t\t\t\t\t\t\t\tlatitude: parseFloat(g.pois[f].location.split(\",\")[1]),\r\n\t\t\t\t\t\t\t\tlongitude: parseFloat(g.pois[f].location.split(\",\")[0]),\r\n\t\t\t\t\t\t\t\ticonPath: k,\r\n\t\t\t\t\t\t\t\twidth: 22,\r\n\t\t\t\t\t\t\t\theight: 32,\r\n\t\t\t\t\t\t\t\tid: f,\r\n\t\t\t\t\t\t\t\tname: g.pois[f].name,\r\n\t\t\t\t\t\t\t\taddress: g.pois[f].address\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\ta.success({\r\n\t\t\t\t\t\t\tmarkers: h,\r\n\t\t\t\t\t\t\tpoisData: g.pois\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t}\r\n\t\t\t\t} else a.fail({\r\n\t\t\t\t\terrCode: g.data.infocode,\r\n\t\t\t\t\terrMsg: g.data.info\r\n\t\t\t\t})\r\n\t\t\t},\r\n\t\t\tfail: function(g) {\r\n\t\t\t\ta.fail({\r\n\t\t\t\t\terrCode: \"0\",\r\n\t\t\t\t\terrMsg: g.errMsg || \"\"\r\n\t\t\t\t})\r\n\t\t\t}\r\n\t\t})\r\n\t}\r\n\tvar c = this,\r\n\t\td = c.requestConfig;\r\n\ta.location ? b(a.location) : c.getWxLocation(a, function(e) {\r\n\t\tb(e)\r\n\t})\r\n};\r\nAMapWX.prototype.getStaticmap = function(a) {\r\n\tfunction b(e) {\r\n\t\tc.push(\"location=\" + e);\r\n\t\ta.zoom && c.push(\"zoom=\" + a.zoom);\r\n\t\ta.size && c.push(\"size=\" + a.size);\r\n\t\ta.scale && c.push(\"scale=\" + a.scale);\r\n\t\ta.markers && c.push(\"markers=\" + a.markers);\r\n\t\ta.labels && c.push(\"labels=\" + a.labels);\r\n\t\ta.paths && c.push(\"paths=\" + a.paths);\r\n\t\ta.traffic && c.push(\"traffic=\" + a.traffic);\r\n\t\te = \"https://restapi.amap.com/v3/staticmap?\" + c.join(\"&\");\r\n\t\ta.success({\r\n\t\t\turl: e\r\n\t\t})\r\n\t}\r\n\tvar c = [];\r\n\tc.push(\"key=\" + this.key);\r\n\tvar d = this.requestConfig;\r\n\tc.push(\"s=\" + d.s);\r\n\tc.push(\"platform=\" + d.platform);\r\n\tc.push(\"appname=\" + d.appname);\r\n\tc.push(\"sdkversion=\" + d.sdkversion);\r\n\tc.push(\"logversion=\" + d.logversion);\r\n\ta.location ? b(a.location) : this.getWxLocation(a, function(e) {\r\n\t\tb(e)\r\n\t})\r\n};\r\nAMapWX.prototype.getInputtips = function(a) {\r\n\tvar b = Object.assign({}, this.requestConfig);\r\n\ta.location && (b.location = a.location);\r\n\ta.keywords && (b.keywords = a.keywords);\r\n\ta.type && (b.type = a.type);\r\n\ta.city && (b.city = a.city);\r\n\ta.citylimit && (b.citylimit = a.citylimit);\r\n\twx.request({\r\n\t\turl: \"https://restapi.amap.com/v3/assistant/inputtips\",\r\n\t\tdata: b,\r\n\t\tmethod: \"GET\",\r\n\t\theader: {\r\n\t\t\t\"content-type\": \"application/json\"\r\n\t\t},\r\n\t\tsuccess: function(c) {\r\n\t\t\tc && c.data && c.data.tips && a.success({\r\n\t\t\t\ttips: c.data.tips\r\n\t\t\t})\r\n\t\t},\r\n\t\tfail: function(c) {\r\n\t\t\ta.fail({\r\n\t\t\t\terrCode: \"0\",\r\n\t\t\t\terrMsg: c.errMsg ||\r\n\t\t\t\t\t\"\"\r\n\t\t\t})\r\n\t\t}\r\n\t})\r\n};\r\nAMapWX.prototype.getDrivingRoute = function(a) {\r\n\tvar b = Object.assign({}, this.requestConfig);\r\n\ta.origin && (b.origin = a.origin);\r\n\ta.destination && (b.destination = a.destination);\r\n\ta.strategy && (b.strategy = a.strategy);\r\n\ta.waypoints && (b.waypoints = a.waypoints);\r\n\ta.avoidpolygons && (b.avoidpolygons = a.avoidpolygons);\r\n\ta.avoidroad && (b.avoidroad = a.avoidroad);\r\n\twx.request({\r\n\t\turl: \"https://restapi.amap.com/v3/direction/driving\",\r\n\t\tdata: b,\r\n\t\tmethod: \"GET\",\r\n\t\theader: {\r\n\t\t\t\"content-type\": \"application/json\"\r\n\t\t},\r\n\t\tsuccess: function(c) {\r\n\t\t\tc && c.data && c.data.route && a.success({\r\n\t\t\t\tpaths: c.data.route.paths,\r\n\t\t\t\ttaxi_cost: c.data.route.taxi_cost || \"\"\r\n\t\t\t})\r\n\t\t},\r\n\t\tfail: function(c) {\r\n\t\t\ta.fail({\r\n\t\t\t\terrCode: \"0\",\r\n\t\t\t\terrMsg: c.errMsg || \"\"\r\n\t\t\t})\r\n\t\t}\r\n\t})\r\n};\r\nAMapWX.prototype.getWalkingRoute = function(a) {\r\n\tvar b = Object.assign({}, this.requestConfig);\r\n\ta.origin && (b.origin = a.origin);\r\n\ta.destination && (b.destination = a.destination);\r\n\twx.request({\r\n\t\turl: \"https://restapi.amap.com/v3/direction/walking\",\r\n\t\tdata: b,\r\n\t\tmethod: \"GET\",\r\n\t\theader: {\r\n\t\t\t\"content-type\": \"application/json\"\r\n\t\t},\r\n\t\tsuccess: function(c) {\r\n\t\t\tc && c.data && c.data.route && a.success({\r\n\t\t\t\tpaths: c.data.route.paths\r\n\t\t\t})\r\n\t\t},\r\n\t\tfail: function(c) {\r\n\t\t\ta.fail({\r\n\t\t\t\terrCode: \"0\",\r\n\t\t\t\terrMsg: c.errMsg || \"\"\r\n\t\t\t})\r\n\t\t}\r\n\t})\r\n};\r\nAMapWX.prototype.getTransitRoute = function(a) {\r\n\tvar b = Object.assign({}, this.requestConfig);\r\n\ta.origin && (b.origin = a.origin);\r\n\ta.destination && (b.destination = a.destination);\r\n\ta.strategy && (b.strategy = a.strategy);\r\n\ta.city && (b.city = a.city);\r\n\ta.cityd && (b.cityd = a.cityd);\r\n\twx.request({\r\n\t\turl: \"https://restapi.amap.com/v3/direction/transit/integrated\",\r\n\t\tdata: b,\r\n\t\tmethod: \"GET\",\r\n\t\theader: {\r\n\t\t\t\"content-type\": \"application/json\"\r\n\t\t},\r\n\t\tsuccess: function(c) {\r\n\t\t\tc && c.data && c.data.route && (c = c.data.route, a.success({\r\n\t\t\t\tdistance: c.distance || \"\",\r\n\t\t\t\ttaxi_cost: c.taxi_cost ||\r\n\t\t\t\t\t\"\",\r\n\t\t\t\ttransits: c.transits\r\n\t\t\t}))\r\n\t\t},\r\n\t\tfail: function(c) {\r\n\t\t\ta.fail({\r\n\t\t\t\terrCode: \"0\",\r\n\t\t\t\terrMsg: c.errMsg || \"\"\r\n\t\t\t})\r\n\t\t}\r\n\t})\r\n};\r\nAMapWX.prototype.getRidingRoute = function(a) {\r\n\tvar b = Object.assign({}, this.requestConfig);\r\n\ta.origin && (b.origin = a.origin);\r\n\ta.destination && (b.destination = a.destination);\r\n\twx.request({\r\n\t\turl: \"https://restapi.amap.com/v3/direction/riding\",\r\n\t\tdata: b,\r\n\t\tmethod: \"GET\",\r\n\t\theader: {\r\n\t\t\t\"content-type\": \"application/json\"\r\n\t\t},\r\n\t\tsuccess: function(c) {\r\n\t\t\tc && c.data && c.data.route && a.success({\r\n\t\t\t\tpaths: c.data.route.paths\r\n\t\t\t})\r\n\t\t},\r\n\t\tfail: function(c) {\r\n\t\t\ta.fail({\r\n\t\t\t\terrCode: \"0\",\r\n\t\t\t\terrMsg: c.errMsg || \"\"\r\n\t\t\t})\r\n\t\t}\r\n\t})\r\n};\r\n// 导出为ES模块以与amap-adapter.js兼容\r\nexport { AMapWX };"],"names":["wx"],"mappings":"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"} \ No newline at end of file diff --git a/unpackage/dist/dev/.sourcemap/mp-weixin/utils/amap-wx.js.map b/unpackage/dist/dev/.sourcemap/mp-weixin/utils/amap-wx.js.map new file mode 100644 index 0000000..cda0601 --- /dev/null +++ b/unpackage/dist/dev/.sourcemap/mp-weixin/utils/amap-wx.js.map @@ -0,0 +1 @@ +{"version":3,"file":"amap-wx.js","sources":["utils/amap-wx.js"],"sourcesContent":["// 直接实现高德地图SDK核心功能,避免依赖问题\r\nfunction AMapWX(a) {\r\n this.key = a.key;\r\n this.requestConfig = {\r\n key: a.key,\r\n s: \"rsx\",\r\n platform: \"WXJS\",\r\n appname: a.key,\r\n sdkversion: \"1.2.0\",\r\n logversion: \"2.0\"\r\n };\r\n this.MeRequestConfig = {\r\n key: a.key,\r\n serviceName: \"https://restapi.amap.com/rest/me\"\r\n };\r\n}\r\n\r\n// 基础方法:获取位置\r\nAMapWX.prototype.getWxLocation = function(a, b) {\r\n uni.getLocation({\r\n type: \"gcj02\",\r\n success: function(c) {\r\n const locationStr = c.longitude + \",\" + c.latitude;\r\n uni.setStorage({\r\n key: \"userLocation\",\r\n data: locationStr\r\n });\r\n b(locationStr);\r\n },\r\n fail: function(c) {\r\n uni.getStorage({\r\n key: \"userLocation\",\r\n success: function(d) {\r\n d.data && b(d.data);\r\n }\r\n });\r\n a.fail({\r\n errCode: \"0\",\r\n errMsg: c.errMsg || \"\"\r\n });\r\n }\r\n });\r\n};\r\n\r\n// 逆地理编码\r\nAMapWX.prototype.getRegeo = function(a) {\r\n const that = this;\r\n uni.request({\r\n url: \"https://restapi.amap.com/v3/geocode/regeo\",\r\n data: {\r\n key: that.key,\r\n location: a.location,\r\n extensions: 'all'\r\n },\r\n method: \"GET\",\r\n header: {\"content-type\": \"application/json\"},\r\n success: function(b) {\r\n const data = b.data;\r\n if (data.status && data.status === '1') {\r\n const regeocode = {\r\n addressComponent: data.regeocode.addressComponent,\r\n formatted_address: data.regeocode.formatted_address\r\n };\r\n a.success && a.success([{\r\n id: 0,\r\n iconPath: a.iconPath,\r\n width: a.iconWidth,\r\n height: a.iconHeight,\r\n name: '',\r\n desc: '',\r\n longitude: a.location.split(',')[0],\r\n latitude: a.location.split(',')[1],\r\n regeocodeData: regeocode\r\n }]);\r\n } else {\r\n a.fail && a.fail({\r\n errCode: data.infocode,\r\n errMsg: data.info\r\n });\r\n }\r\n },\r\n fail: function(b) {\r\n a.fail && a.fail({\r\n errCode: \"0\",\r\n errMsg: b.errMsg || \"\"\r\n });\r\n }\r\n });\r\n};\r\n\r\n// POI周边搜索\r\nAMapWX.prototype.getPoiAround = function(a) {\r\n const that = this;\r\n uni.request({\r\n url: \"https://restapi.amap.com/v3/place/around\",\r\n data: {\r\n key: that.key,\r\n location: a.location,\r\n keywords: a.querykeywords || '',\r\n types: a.querytypes || '',\r\n radius: a.radius || 1000,\r\n offset: a.offset || 20,\r\n page: a.page || 1,\r\n extensions: 'all'\r\n },\r\n method: \"GET\",\r\n header: {\"content-type\": \"application/json\"},\r\n success: function(b) {\r\n const data = b.data;\r\n if (data.status && data.status === '1') {\r\n const pois = data.pois.map((poi, index) => {\r\n return {\r\n id: index,\r\n longitude: poi.location.split(',')[0],\r\n latitude: poi.location.split(',')[1],\r\n iconPath: a.iconPath,\r\n width: a.iconWidth,\r\n height: a.iconHeight,\r\n name: poi.name,\r\n address: poi.address,\r\n distance: poi.distance,\r\n tel: poi.tel,\r\n type: poi.type\r\n };\r\n });\r\n a.success && a.success({\r\n poisData: pois,\r\n keyword: a.querykeywords\r\n });\r\n } else {\r\n a.fail && a.fail({\r\n errCode: data.infocode,\r\n errMsg: data.info\r\n });\r\n }\r\n },\r\n fail: function(b) {\r\n a.fail && a.fail({\r\n errCode: \"0\",\r\n errMsg: b.errMsg || \"\"\r\n });\r\n }\r\n });\r\n};\r\n\r\n// 驾车路线规划\r\nAMapWX.prototype.getDrivingRoute = function(a) {\r\n const that = this;\r\n uni.request({\r\n url: \"https://restapi.amap.com/v3/direction/driving\",\r\n data: {\r\n key: that.key,\r\n origin: a.origin,\r\n destination: a.destination,\r\n strategy: a.strategy || 0,\r\n waypoints: a.waypoints || \"\",\r\n avoidpolygons: a.avoidpolygons || \"\",\r\n avoidroad: a.avoidroad || \"\"\r\n },\r\n method: \"GET\",\r\n header: {\"content-type\": \"application/json\"},\r\n success: function(b) {\r\n const data = b.data;\r\n if (data.status && data.status === '1') {\r\n a.success && a.success(data);\r\n } else {\r\n a.fail && a.fail({\r\n errCode: data.infocode,\r\n errMsg: data.info\r\n });\r\n }\r\n },\r\n fail: function(b) {\r\n a.fail && a.fail({\r\n errCode: \"0\",\r\n errMsg: b.errMsg || \"\"\r\n });\r\n }\r\n });\r\n};\r\n\r\n// 步行路线规划\r\nAMapWX.prototype.getWalkingRoute = function(a) {\r\n const that = this;\r\n uni.request({\r\n url: \"https://restapi.amap.com/v3/direction/walking\",\r\n data: {\r\n key: that.key,\r\n origin: a.origin,\r\n destination: a.destination\r\n },\r\n method: \"GET\",\r\n header: {\"content-type\": \"application/json\"},\r\n success: function(b) {\r\n const data = b.data;\r\n if (data.status && data.status === '1') {\r\n a.success && a.success(data);\r\n } else {\r\n a.fail && a.fail({\r\n errCode: data.infocode,\r\n errMsg: data.info\r\n });\r\n }\r\n },\r\n fail: function(b) {\r\n a.fail && a.fail({\r\n errCode: \"0\",\r\n errMsg: b.errMsg || \"\"\r\n });\r\n }\r\n });\r\n};\r\n\r\n// 静态地图\r\nAMapWX.prototype.getStaticmap = function(a) {\r\n const that = this;\r\n const params = {\r\n key: that.key,\r\n location: a.location,\r\n zoom: a.zoom || 13,\r\n size: a.size || \"750*500\",\r\n scale: a.scale || 1,\r\n markers: a.markers || \"\",\r\n labels: a.labels || \"\",\r\n paths: a.paths || \"\",\r\n traffic: a.traffic || 0\r\n };\r\n \r\n try {\r\n const url = \"https://restapi.amap.com/v3/staticmap?\" + \r\n Object.keys(params).map(key => {\r\n return key + \"=\" + encodeURIComponent(params[key]);\r\n }).join(\"&\");\r\n \r\n a.success && a.success({\r\n url: url\r\n });\r\n } catch (error) {\r\n console.error('构建静态地图URL失败:', error);\r\n if (a.fail) {\r\n a.fail({\r\n errCode: '0',\r\n errMsg: error.message || '构建静态地图URL失败'\r\n });\r\n }\r\n }\r\n};\r\n\r\n// 兼容MapComponent使用的函数名称 - 额外添加的静态地图URL获取方法\r\nAMapWX.prototype.updateStaticMap = function() {\r\n console.log('使用了旧的updateStaticMap方法,请迁移到getStaticmap');\r\n // 提供一个空实现,防止错误\r\n};\r\n\r\nexport { AMapWX };"],"names":["uni"],"mappings":"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"} \ No newline at end of file diff --git a/unpackage/dist/dev/.sourcemap/mp-weixin/utils/amapManager.js.map b/unpackage/dist/dev/.sourcemap/mp-weixin/utils/amapManager.js.map new file mode 100644 index 0000000..7bd8ee1 --- /dev/null +++ b/unpackage/dist/dev/.sourcemap/mp-weixin/utils/amapManager.js.map @@ -0,0 +1 @@ +{"version":3,"file":"amapManager.js","sources":["utils/amapManager.js"],"sourcesContent":["// 高德地图SDK管理器\r\n// 使用相对路径导入模块,解决小程序环境下的路径解析问题\r\nimport { getAMapWXInstance } from './amap-adapter.js'\r\n\r\n// 高德地图Key\r\nconst AMAP_KEY = '4c513a688938fd89b88b296e867f66ec'\r\n\r\n// 提前创建单例,确保实例化过程在模块引入时完成\r\nlet amapInstanceSingleton = null\r\ntry {\r\n amapInstanceSingleton = getAMapWXInstance(AMAP_KEY)\r\n} catch (err) {\r\n console.error('初始化高德地图SDK失败:', err)\r\n}\r\n\r\nclass AmapManager {\r\n constructor() {\r\n this.key = AMAP_KEY\r\n this.amapInstance = amapInstanceSingleton\r\n if (!this.amapInstance) {\r\n // 如果全局实例创建失败,再次尝试初始化\r\n this.init()\r\n }\r\n }\r\n\r\n // 初始化高德地图SDK\r\n init() {\r\n if (!this.amapInstance) {\r\n try {\r\n this.amapInstance = getAMapWXInstance(this.key)\r\n // 更新全局单例\r\n amapInstanceSingleton = this.amapInstance\r\n } catch (err) {\r\n console.error('重试初始化高德地图SDK失败:', err)\r\n }\r\n }\r\n return this.amapInstance\r\n }\r\n\r\n // 获取高德地图SDK实例\r\n getAmapInstance() {\r\n return this.amapInstance || this.init()\r\n }\r\n\r\n // 获取用户位置\r\n getUserLocation() {\r\n return new Promise((resolve, reject) => {\r\n this.getAmapInstance().getWxLocation({\r\n success: (locationData) => {\r\n // locationData格式为 \"longitude,latitude\" 字符串\r\n const [longitude, latitude] = locationData.split(',').map(parseFloat)\r\n resolve({ longitude, latitude })\r\n },\r\n fail: (error) => {\r\n console.error('获取位置失败:', error)\r\n reject(error)\r\n }\r\n }, (locationData) => {\r\n // 这是getWxLocation的回调函数,处理成功情况\r\n const [longitude, latitude] = locationData.split(',').map(parseFloat)\r\n resolve({ longitude, latitude })\r\n })\r\n })\r\n }\r\n\r\n // 逆地理编码 - 根据经纬度获取地址信息\r\n getRegeo(longitude, latitude) {\r\n return new Promise((resolve, reject) => {\r\n this.getAmapInstance().getRegeo({\r\n location: `${longitude},${latitude}`,\r\n iconPath: '/static/scan-icon.png', // 必须提供,即使不使用\r\n iconWidth: 32,\r\n iconHeight: 32,\r\n success: (data) => {\r\n resolve({\r\n success: true,\r\n data: data[0].regeocodeData\r\n })\r\n },\r\n fail: (error) => {\r\n console.error('逆地理编码失败:', error)\r\n reject({\r\n success: false,\r\n message: error.errMsg || '逆地理编码失败'\r\n })\r\n }\r\n })\r\n })\r\n }\r\n\r\n // 获取周边POI信息\r\n getPoiAround(longitude, latitude, keywords = '', types = '') {\r\n return new Promise((resolve, reject) => {\r\n this.getAmapInstance().getPoiAround({\r\n location: `${longitude},${latitude}`,\r\n querykeywords: keywords,\r\n querytypes: types,\r\n iconPath: '/static/scan-icon.png',\r\n iconPathSelected: '/static/scan-icon.png',\r\n success: (data) => {\r\n resolve({\r\n success: true,\r\n data: data.poisData\r\n })\r\n },\r\n fail: (error) => {\r\n console.error('获取周边POI失败:', error)\r\n reject({\r\n success: false,\r\n message: error.errMsg || '获取周边POI失败'\r\n })\r\n }\r\n })\r\n })\r\n }\r\n\r\n // 获取导航路线\r\n getDrivingRoute(origin, destination) {\r\n return new Promise((resolve, reject) => {\r\n this.getAmapInstance().getDrivingRoute({\r\n origin: origin,\r\n destination: destination,\r\n success: (data) => {\r\n resolve({\r\n success: true,\r\n data: data\r\n })\r\n },\r\n fail: (error) => {\r\n console.error('获取驾车路线失败:', error)\r\n reject({\r\n success: false,\r\n message: error.errMsg || '获取驾车路线失败'\r\n })\r\n }\r\n })\r\n })\r\n }\r\n\r\n // 获取步行路线\r\n getWalkingRoute(origin, destination) {\r\n return new Promise((resolve, reject) => {\r\n this.getAmapInstance().getWalkingRoute({\r\n origin: origin,\r\n destination: destination,\r\n success: (data) => {\r\n resolve({\r\n success: true,\r\n data: data\r\n })\r\n },\r\n fail: (error) => {\r\n console.error('获取步行路线失败:', error)\r\n reject({\r\n success: false,\r\n message: error.errMsg || '获取步行路线失败'\r\n })\r\n }\r\n })\r\n })\r\n }\r\n\r\n // 获取静态地图URL\r\n getStaticMapUrl(options) {\r\n return new Promise((resolve, reject) => {\r\n this.getAmapInstance().getStaticmap({\r\n location: options.location,\r\n zoom: options.zoom || 14,\r\n size: options.size || '750*500',\r\n scale: options.scale || 2,\r\n markers: options.markers,\r\n labels: options.labels,\r\n paths: options.paths,\r\n traffic: options.traffic || 0,\r\n success: (data) => {\r\n resolve({\r\n success: true,\r\n url: data.url\r\n })\r\n },\r\n fail: (error) => {\r\n console.error('获取静态地图失败:', error)\r\n reject({\r\n success: false,\r\n message: error.errMsg || '获取静态地图失败'\r\n })\r\n }\r\n })\r\n })\r\n }\r\n\r\n // 计算两点间距离(单位:公里)\r\n calculateDistance(lat1, lng1, lat2, lng2) {\r\n const radLat1 = lat1 * Math.PI / 180.0\r\n const radLat2 = lat2 * Math.PI / 180.0\r\n const a = radLat1 - radLat2\r\n const b = lng1 * Math.PI / 180.0 - lng2 * Math.PI / 180.0\r\n let s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) + Math.cos(radLat1) * Math.cos(radLat2) * Math.pow(Math.sin(b / 2), 2)))\r\n s = s * 6378.137 // 地球半径\r\n s = Math.round(s * 10000) / 10000 // 保留4位小数\r\n return s\r\n }\r\n}\r\n\r\nexport default new AmapManager()"],"names":["getAMapWXInstance","uni"],"mappings":";;;AAKA,MAAM,WAAW;AAGjB,IAAI,wBAAwB;AAC5B,IAAI;AACF,0BAAwBA,kBAAiB,kBAAC,QAAQ;AACpD,SAAS,KAAK;AACZC,gBAAAA,mDAAc,iBAAiB,GAAG;AACpC;AAEA,MAAM,YAAY;AAAA,EAChB,cAAc;AACZ,SAAK,MAAM;AACX,SAAK,eAAe;AACpB,QAAI,CAAC,KAAK,cAAc;AAEtB,WAAK,KAAM;AAAA,IACZ;AAAA,EACF;AAAA;AAAA,EAGD,OAAO;AACL,QAAI,CAAC,KAAK,cAAc;AACtB,UAAI;AACF,aAAK,eAAeD,oCAAkB,KAAK,GAAG;AAE9C,gCAAwB,KAAK;AAAA,MAC9B,SAAQ,KAAK;AACZC,sBAAAA,MAAA,MAAA,SAAA,8BAAc,mBAAmB,GAAG;AAAA,MACrC;AAAA,IACF;AACD,WAAO,KAAK;AAAA,EACb;AAAA;AAAA,EAGD,kBAAkB;AAChB,WAAO,KAAK,gBAAgB,KAAK,KAAM;AAAA,EACxC;AAAA;AAAA,EAGD,kBAAkB;AAChB,WAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AACtC,WAAK,gBAAiB,EAAC,cAAc;AAAA,QACnC,SAAS,CAAC,iBAAiB;AAEzB,gBAAM,CAAC,WAAW,QAAQ,IAAI,aAAa,MAAM,GAAG,EAAE,IAAI,UAAU;AACpE,kBAAQ,EAAE,WAAW,UAAU;AAAA,QAChC;AAAA,QACD,MAAM,CAAC,UAAU;AACfA,wBAAAA,MAAc,MAAA,SAAA,8BAAA,WAAW,KAAK;AAC9B,iBAAO,KAAK;AAAA,QACb;AAAA,MACF,GAAE,CAAC,iBAAiB;AAEnB,cAAM,CAAC,WAAW,QAAQ,IAAI,aAAa,MAAM,GAAG,EAAE,IAAI,UAAU;AACpE,gBAAQ,EAAE,WAAW,UAAU;AAAA,MACvC,CAAO;AAAA,IACP,CAAK;AAAA,EACF;AAAA;AAAA,EAGD,SAAS,WAAW,UAAU;AAC5B,WAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AACtC,WAAK,gBAAiB,EAAC,SAAS;AAAA,QAC9B,UAAU,GAAG,SAAS,IAAI,QAAQ;AAAA,QAClC,UAAU;AAAA;AAAA,QACV,WAAW;AAAA,QACX,YAAY;AAAA,QACZ,SAAS,CAAC,SAAS;AACjB,kBAAQ;AAAA,YACN,SAAS;AAAA,YACT,MAAM,KAAK,CAAC,EAAE;AAAA,UAC1B,CAAW;AAAA,QACF;AAAA,QACD,MAAM,CAAC,UAAU;AACfA,wBAAAA,MAAA,MAAA,SAAA,8BAAc,YAAY,KAAK;AAC/B,iBAAO;AAAA,YACL,SAAS;AAAA,YACT,SAAS,MAAM,UAAU;AAAA,UACrC,CAAW;AAAA,QACF;AAAA,MACT,CAAO;AAAA,IACP,CAAK;AAAA,EACF;AAAA;AAAA,EAGD,aAAa,WAAW,UAAU,WAAW,IAAI,QAAQ,IAAI;AAC3D,WAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AACtC,WAAK,gBAAiB,EAAC,aAAa;AAAA,QAClC,UAAU,GAAG,SAAS,IAAI,QAAQ;AAAA,QAClC,eAAe;AAAA,QACf,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,kBAAkB;AAAA,QAClB,SAAS,CAAC,SAAS;AACjB,kBAAQ;AAAA,YACN,SAAS;AAAA,YACT,MAAM,KAAK;AAAA,UACvB,CAAW;AAAA,QACF;AAAA,QACD,MAAM,CAAC,UAAU;AACfA,wBAAAA,MAAA,MAAA,SAAA,+BAAc,cAAc,KAAK;AACjC,iBAAO;AAAA,YACL,SAAS;AAAA,YACT,SAAS,MAAM,UAAU;AAAA,UACrC,CAAW;AAAA,QACF;AAAA,MACT,CAAO;AAAA,IACP,CAAK;AAAA,EACF;AAAA;AAAA,EAGD,gBAAgB,QAAQ,aAAa;AACnC,WAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AACtC,WAAK,gBAAiB,EAAC,gBAAgB;AAAA,QACrC;AAAA,QACA;AAAA,QACA,SAAS,CAAC,SAAS;AACjB,kBAAQ;AAAA,YACN,SAAS;AAAA,YACT;AAAA,UACZ,CAAW;AAAA,QACF;AAAA,QACD,MAAM,CAAC,UAAU;AACfA,wBAAAA,MAAA,MAAA,SAAA,+BAAc,aAAa,KAAK;AAChC,iBAAO;AAAA,YACL,SAAS;AAAA,YACT,SAAS,MAAM,UAAU;AAAA,UACrC,CAAW;AAAA,QACF;AAAA,MACT,CAAO;AAAA,IACP,CAAK;AAAA,EACF;AAAA;AAAA,EAGD,gBAAgB,QAAQ,aAAa;AACnC,WAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AACtC,WAAK,gBAAiB,EAAC,gBAAgB;AAAA,QACrC;AAAA,QACA;AAAA,QACA,SAAS,CAAC,SAAS;AACjB,kBAAQ;AAAA,YACN,SAAS;AAAA,YACT;AAAA,UACZ,CAAW;AAAA,QACF;AAAA,QACD,MAAM,CAAC,UAAU;AACfA,wBAAAA,MAAA,MAAA,SAAA,+BAAc,aAAa,KAAK;AAChC,iBAAO;AAAA,YACL,SAAS;AAAA,YACT,SAAS,MAAM,UAAU;AAAA,UACrC,CAAW;AAAA,QACF;AAAA,MACT,CAAO;AAAA,IACP,CAAK;AAAA,EACF;AAAA;AAAA,EAGD,gBAAgB,SAAS;AACvB,WAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AACtC,WAAK,gBAAiB,EAAC,aAAa;AAAA,QAClC,UAAU,QAAQ;AAAA,QAClB,MAAM,QAAQ,QAAQ;AAAA,QACtB,MAAM,QAAQ,QAAQ;AAAA,QACtB,OAAO,QAAQ,SAAS;AAAA,QACxB,SAAS,QAAQ;AAAA,QACjB,QAAQ,QAAQ;AAAA,QAChB,OAAO,QAAQ;AAAA,QACf,SAAS,QAAQ,WAAW;AAAA,QAC5B,SAAS,CAAC,SAAS;AACjB,kBAAQ;AAAA,YACN,SAAS;AAAA,YACT,KAAK,KAAK;AAAA,UACtB,CAAW;AAAA,QACF;AAAA,QACD,MAAM,CAAC,UAAU;AACfA,wBAAAA,MAAA,MAAA,SAAA,+BAAc,aAAa,KAAK;AAChC,iBAAO;AAAA,YACL,SAAS;AAAA,YACT,SAAS,MAAM,UAAU;AAAA,UACrC,CAAW;AAAA,QACF;AAAA,MACT,CAAO;AAAA,IACP,CAAK;AAAA,EACF;AAAA;AAAA,EAGD,kBAAkB,MAAM,MAAM,MAAM,MAAM;AACxC,UAAM,UAAU,OAAO,KAAK,KAAK;AACjC,UAAM,UAAU,OAAO,KAAK,KAAK;AACjC,UAAM,IAAI,UAAU;AACpB,UAAM,IAAI,OAAO,KAAK,KAAK,MAAQ,OAAO,KAAK,KAAK;AACpD,QAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,IAAI,OAAO,IAAI,KAAK,IAAI,OAAO,IAAI,KAAK,IAAI,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AACpI,QAAI,IAAI;AACR,QAAI,KAAK,MAAM,IAAI,GAAK,IAAI;AAC5B,WAAO;AAAA,EACR;AACH;AAEA,MAAA,cAAe,IAAI,YAAW;;"} \ No newline at end of file diff --git a/unpackage/dist/dev/.sourcemap/mp-weixin/utils/mapUtils.js.map b/unpackage/dist/dev/.sourcemap/mp-weixin/utils/mapUtils.js.map new file mode 100644 index 0000000..f15d016 --- /dev/null +++ b/unpackage/dist/dev/.sourcemap/mp-weixin/utils/mapUtils.js.map @@ -0,0 +1 @@ +{"version":3,"file":"mapUtils.js","sources":["utils/mapUtils.js"],"sourcesContent":["// 地图工具函数 - 内联腾讯地图SDK核心代码\r\n\r\n// 腾讯地图Key\r\nconst QQMAP_KEY = 'RO5BZ-ECZ63-7US3C-RT5QW-TIDZE-2FF35';\r\n\r\n// 内联腾讯地图SDK核心代码\r\nconst QQMapWX = (function() {\r\n // 错误配置\r\n const ERROR_CONF = {\r\n KEY_ERR: 311,\r\n KEY_ERR_MSG: 'key格式错误',\r\n PARAM_ERR: 310,\r\n PARAM_ERR_MSG: '请求参数信息有误',\r\n SYSTEM_ERR: 600,\r\n SYSTEM_ERR_MSG: '系统错误',\r\n WX_ERR_CODE: 1000,\r\n WX_OK_CODE: 200\r\n };\r\n\r\n // API基础URL\r\n const BASE_URL = 'https://apis.map.qq.com/ws/';\r\n const URL_SEARCH = BASE_URL + 'place/v1/search';\r\n const URL_SUGGESTION = BASE_URL + 'place/v1/suggestion';\r\n const URL_GET_GEOCODER = BASE_URL + 'geocoder/v1/';\r\n const URL_DISTANCE = BASE_URL + 'distance/v1/';\r\n\r\n // 工具函数\r\n const Utils = {\r\n // 获取location参数\r\n getLocationParam(location) {\r\n if (typeof location == 'string') {\r\n const locationArr = location.split(',');\r\n if (locationArr.length === 2) {\r\n location = {\r\n latitude: location.split(',')[0],\r\n longitude: location.split(',')[1]\r\n };\r\n } else {\r\n location = {};\r\n }\r\n }\r\n return location;\r\n },\r\n\r\n // 验证location值\r\n checkLocation(param) {\r\n const location = this.getLocationParam(param.location);\r\n if (!location || !location.latitude || !location.longitude) {\r\n const errconf = this.buildErrorConfig(ERROR_CONF.PARAM_ERR, ERROR_CONF.PARAM_ERR_MSG + ' location参数格式有误');\r\n param.fail(errconf);\r\n param.complete(errconf);\r\n return false;\r\n }\r\n return true;\r\n },\r\n\r\n // 构造错误数据结构\r\n buildErrorConfig(errCode, errMsg) {\r\n return {\r\n status: errCode,\r\n message: errMsg\r\n };\r\n },\r\n\r\n // 回调函数默认处理\r\n polyfillParam(param) {\r\n param.success = param.success || function () { };\r\n param.fail = param.fail || function () { };\r\n param.complete = param.complete || function () { };\r\n },\r\n\r\n // 处理用户参数是否传入坐标进行不同的处理\r\n locationProcess(param, locationsuccess, locationfail, locationcomplete) {\r\n const that = this;\r\n locationfail = locationfail || function (res) {\r\n res.statusCode = ERROR_CONF.WX_ERR_CODE;\r\n param.fail(that.buildErrorConfig(ERROR_CONF.WX_ERR_CODE, res.errMsg));\r\n };\r\n locationcomplete = locationcomplete || function (res) {\r\n if (res.statusCode == ERROR_CONF.WX_ERR_CODE) {\r\n param.complete(that.buildErrorConfig(ERROR_CONF.WX_ERR_CODE, res.errMsg));\r\n }\r\n };\r\n if (!param.location) {\r\n wx.getLocation({\r\n type: 'gcj02',\r\n success: locationsuccess,\r\n fail: locationfail,\r\n complete: locationcomplete\r\n });\r\n } else if (that.checkLocation(param)) {\r\n const location = Utils.getLocationParam(param.location);\r\n locationsuccess(location);\r\n }\r\n },\r\n\r\n // 构造微信请求参数\r\n buildWxRequestConfig(param, options, feature) {\r\n const that = this;\r\n options.header = { \"content-type\": \"application/json\" };\r\n options.method = 'GET';\r\n options.success = function (res) {\r\n const data = res.data;\r\n if (data.status === 0) {\r\n that.handleData(param, data, feature);\r\n } else {\r\n param.fail(data);\r\n }\r\n };\r\n options.fail = function (res) {\r\n res.statusCode = ERROR_CONF.WX_ERR_CODE;\r\n param.fail(that.buildErrorConfig(ERROR_CONF.WX_ERR_CODE, res.errMsg));\r\n };\r\n options.complete = function (res) {\r\n const statusCode = +res.statusCode;\r\n switch(statusCode) {\r\n case ERROR_CONF.WX_ERR_CODE: {\r\n param.complete(that.buildErrorConfig(ERROR_CONF.WX_ERR_CODE, res.errMsg));\r\n break;\r\n }\r\n case ERROR_CONF.WX_OK_CODE: {\r\n const data = res.data;\r\n if (data.status === 0) {\r\n param.complete(data);\r\n } else {\r\n param.complete(that.buildErrorConfig(data.status, data.message));\r\n }\r\n break;\r\n }\r\n default:{\r\n param.complete(that.buildErrorConfig(ERROR_CONF.SYSTEM_ERR, ERROR_CONF.SYSTEM_ERR_MSG));\r\n }\r\n }\r\n };\r\n return options;\r\n },\r\n\r\n // 数据处理函数\r\n handleData(param, data, feature) {\r\n if (feature == 'search') {\r\n const searchResult = data.data;\r\n const searchSimplify = [];\r\n for (let i = 0; i < searchResult.length; i++) {\r\n searchSimplify.push({\r\n id: searchResult[i].id || null,\r\n title: searchResult[i].title || null,\r\n latitude: searchResult[i].location && searchResult[i].location.lat || null,\r\n longitude: searchResult[i].location && searchResult[i].location.lng || null,\r\n address: searchResult[i].address || null,\r\n category: searchResult[i].category || null,\r\n tel: searchResult[i].tel || null,\r\n adcode: searchResult[i].ad_info && searchResult[i].ad_info.adcode || null,\r\n city: searchResult[i].ad_info && searchResult[i].ad_info.city || null,\r\n district: searchResult[i].ad_info && searchResult[i].ad_info.district || null,\r\n province: searchResult[i].ad_info && searchResult[i].ad_info.province || null\r\n });\r\n }\r\n param.success(data, {\r\n searchResult: searchResult,\r\n searchSimplify: searchSimplify\r\n });\r\n } else if (feature == 'suggest') {\r\n const suggestResult = data.data;\r\n const suggestSimplify = [];\r\n for (let i = 0; i < suggestResult.length; i++) {\r\n suggestSimplify.push({\r\n adcode: suggestResult[i].adcode || null,\r\n address: suggestResult[i].address || null,\r\n category: suggestResult[i].category || null,\r\n city: suggestResult[i].city || null,\r\n district: suggestResult[i].district || null,\r\n id: suggestResult[i].id || null,\r\n latitude: suggestResult[i].location && suggestResult[i].location.lat || null,\r\n longitude: suggestResult[i].location && suggestResult[i].location.lng || null,\r\n province: suggestResult[i].province || null,\r\n title: suggestResult[i].title || null,\r\n type: suggestResult[i].type || null\r\n });\r\n }\r\n param.success(data, {\r\n suggestResult: suggestResult,\r\n suggestSimplify: suggestSimplify\r\n });\r\n } else if (feature == 'reverseGeocoder') {\r\n const reverseGeocoderResult = data.result;\r\n const reverseGeocoderSimplify = {\r\n address: reverseGeocoderResult.address || null,\r\n latitude: reverseGeocoderResult.location && reverseGeocoderResult.location.lat || null,\r\n longitude: reverseGeocoderResult.location && reverseGeocoderResult.location.lng || null,\r\n adcode: reverseGeocoderResult.ad_info && reverseGeocoderResult.ad_info.adcode || null,\r\n city: reverseGeocoderResult.address_component && reverseGeocoderResult.address_component.city || null,\r\n district: reverseGeocoderResult.address_component && reverseGeocoderResult.address_component.district || null,\r\n nation: reverseGeocoderResult.address_component && reverseGeocoderResult.address_component.nation || null,\r\n province: reverseGeocoderResult.address_component && reverseGeocoderResult.address_component.province || null,\r\n street: reverseGeocoderResult.address_component && reverseGeocoderResult.address_component.street || null,\r\n street_number: reverseGeocoderResult.address_component && reverseGeocoderResult.address_component.street_number || null,\r\n recommend: reverseGeocoderResult.formatted_addresses && reverseGeocoderResult.formatted_addresses.recommend || null,\r\n rough: reverseGeocoderResult.formatted_addresses && reverseGeocoderResult.formatted_addresses.rough || null\r\n };\r\n param.success(data, {\r\n reverseGeocoderResult: reverseGeocoderResult,\r\n reverseGeocoderSimplify: reverseGeocoderSimplify\r\n });\r\n } else if (feature == 'calculateDistance') {\r\n const calculateDistanceResult = data.result.elements; \r\n const distance = [];\r\n for (let i = 0; i < calculateDistanceResult.length; i++){\r\n distance.push(calculateDistanceResult[i].distance);\r\n } \r\n param.success(data, {\r\n calculateDistanceResult: calculateDistanceResult,\r\n distance: distance\r\n });\r\n } else {\r\n param.success(data);\r\n }\r\n }\r\n };\r\n\r\n // QQMapWX类\r\n class QQMapWX {\r\n constructor(options) {\r\n if (!options.key) {\r\n throw Error('key值不能为空');\r\n }\r\n this.key = options.key;\r\n }\r\n\r\n // 逆地址解析\r\n reverseGeocoder(options) {\r\n const that = this;\r\n options = options || {};\r\n Utils.polyfillParam(options);\r\n \r\n const requestParam = {\r\n coord_type: options.coord_type || 5,\r\n get_poi: options.get_poi || 0,\r\n output: 'json',\r\n key: that.key\r\n };\r\n if (options.poi_options) {\r\n requestParam.poi_options = options.poi_options;\r\n }\r\n\r\n const locationsuccess = function (result) {\r\n requestParam.location = result.latitude + ',' + result.longitude;\r\n wx.request(Utils.buildWxRequestConfig(options, {\r\n url: URL_GET_GEOCODER,\r\n data: requestParam\r\n }, 'reverseGeocoder'));\r\n };\r\n Utils.locationProcess(options, locationsuccess);\r\n }\r\n\r\n // POI周边检索\r\n search(options) {\r\n const that = this;\r\n options = options || {};\r\n Utils.polyfillParam(options);\r\n\r\n if (!options.keyword) {\r\n const errconf = Utils.buildErrorConfig(ERROR_CONF.PARAM_ERR, ERROR_CONF.PARAM_ERR_MSG + ' keyword参数格式有误');\r\n options.fail(errconf);\r\n options.complete(errconf);\r\n return;\r\n }\r\n\r\n const requestParam = {\r\n keyword: options.keyword,\r\n orderby: options.orderby || '_distance',\r\n page_size: options.page_size || 10,\r\n page_index: options.page_index || 1,\r\n output: 'json',\r\n key: that.key\r\n };\r\n\r\n if (options.address_format) {\r\n requestParam.address_format = options.address_format;\r\n }\r\n\r\n if (options.filter) {\r\n requestParam.filter = options.filter;\r\n }\r\n\r\n const distance = options.distance || \"1000\";\r\n const auto_extend = options.auto_extend || 1;\r\n\r\n const locationsuccess = function (result) {\r\n requestParam.boundary = \"nearby(\" + result.latitude + \",\" + result.longitude + \",\" + distance + \",\" + auto_extend + \")\";\r\n wx.request(Utils.buildWxRequestConfig(options, {\r\n url: URL_SEARCH,\r\n data: requestParam\r\n }, 'search'));\r\n };\r\n\r\n Utils.locationProcess(options, locationsuccess);\r\n }\r\n\r\n // sug模糊检索\r\n getSuggestion(options) {\r\n const that = this;\r\n options = options || {};\r\n Utils.polyfillParam(options);\r\n\r\n if (!options.keyword) {\r\n const errconf = Utils.buildErrorConfig(ERROR_CONF.PARAM_ERR, ERROR_CONF.PARAM_ERR_MSG + ' keyword参数格式有误');\r\n options.fail(errconf);\r\n options.complete(errconf);\r\n return;\r\n }\r\n\r\n const requestParam = {\r\n keyword: options.keyword,\r\n region: options.region || '全国',\r\n region_fix: options.region_fix || 0,\r\n policy: options.policy || 0,\r\n page_size: options.page_size || 10,\r\n page_index: options.page_index || 1,\r\n get_subpois: options.get_subpois || 0,\r\n output: 'json',\r\n key: that.key\r\n };\r\n\r\n if (options.address_format) {\r\n requestParam.address_format = options.address_format;\r\n }\r\n\r\n if (options.filter) {\r\n requestParam.filter = options.filter;\r\n }\r\n\r\n if (options.location) {\r\n const locationsuccess = function (result) {\r\n requestParam.location = result.latitude + ',' + result.longitude;\r\n wx.request(Utils.buildWxRequestConfig(options, {\r\n url: URL_SUGGESTION,\r\n data: requestParam\r\n }, \"suggest\"));\r\n };\r\n Utils.locationProcess(options, locationsuccess);\r\n } else {\r\n wx.request(Utils.buildWxRequestConfig(options, {\r\n url: URL_SUGGESTION,\r\n data: requestParam\r\n }, \"suggest\"));\r\n }\r\n }\r\n\r\n // 距离计算\r\n calculateDistance(options) {\r\n const that = this;\r\n options = options || {};\r\n Utils.polyfillParam(options);\r\n\r\n if (!options.to) {\r\n const errconf = Utils.buildErrorConfig(ERROR_CONF.PARAM_ERR, ERROR_CONF.PARAM_ERR_MSG + ' to参数格式有误');\r\n options.fail(errconf);\r\n options.complete(errconf);\r\n return;\r\n }\r\n\r\n const requestParam = {\r\n mode: options.mode || 'walking',\r\n to: options.to,\r\n output: 'json',\r\n key: that.key\r\n };\r\n\r\n if (options.from) {\r\n options.location = options.from;\r\n }\r\n\r\n const locationsuccess = function (result) {\r\n requestParam.from = result.latitude + ',' + result.longitude;\r\n wx.request(Utils.buildWxRequestConfig(options, {\r\n url: URL_DISTANCE,\r\n data: requestParam\r\n }, 'calculateDistance'));\r\n };\r\n\r\n Utils.locationProcess(options, locationsuccess);\r\n }\r\n }\r\n\r\n return QQMapWX;\r\n})();\r\n\r\n// 全局QQMap实例\r\nlet qqmapInstance = null;\r\n\r\n// 初始化腾讯地图SDK\r\nfunction initQQMap() {\r\n if (!qqmapInstance) {\r\n try {\r\n qqmapInstance = new QQMapWX({\r\n key: QQMAP_KEY\r\n });\r\n console.log('腾讯地图SDK初始化成功');\r\n } catch (err) {\r\n console.error('初始化腾讯地图SDK失败:', err);\r\n }\r\n }\r\n return qqmapInstance;\r\n}\r\n\r\n// 获取腾讯地图SDK实例\r\nfunction getQQMapInstance() {\r\n return qqmapInstance || initQQMap();\r\n}\r\n\r\n// 获取用户位置(使用微信的接口获取位置)\r\nfunction getUserLocation() {\r\n return new Promise((resolve, reject) => {\r\n wx.getLocation({\r\n type: 'gcj02',\r\n success: (res) => {\r\n resolve({\r\n longitude: res.longitude,\r\n latitude: res.latitude\r\n });\r\n },\r\n fail: (error) => {\r\n console.error('获取位置失败:', error);\r\n reject(error);\r\n }\r\n });\r\n });\r\n}\r\n\r\n// 逆地理编码 - 根据经纬度获取地址信息\r\nfunction getRegeo(longitude, latitude) {\r\n return new Promise((resolve, reject) => {\r\n const qqmap = getQQMapInstance();\r\n if (!qqmap) {\r\n reject({ success: false, message: '腾讯地图SDK未初始化' });\r\n return;\r\n }\r\n \r\n qqmap.reverseGeocoder({\r\n location: {\r\n latitude,\r\n longitude\r\n },\r\n success: (data, result) => {\r\n // 官方SDK返回的数据结构:data是原始数据,result是简化数据\r\n const reverseGeocoderSimplify = result.reverseGeocoderSimplify;\r\n resolve({\r\n success: true,\r\n data: {\r\n formatted_address: reverseGeocoderSimplify.address,\r\n addressComponent: {\r\n city: reverseGeocoderSimplify.city,\r\n district: reverseGeocoderSimplify.district,\r\n province: reverseGeocoderSimplify.province,\r\n street: reverseGeocoderSimplify.street,\r\n street_number: reverseGeocoderSimplify.street_number\r\n }\r\n }\r\n });\r\n },\r\n fail: (error) => {\r\n console.error('逆地理编码失败:', error);\r\n reject({ success: false, message: error.message || '逆地理编码失败' });\r\n }\r\n });\r\n });\r\n}\r\n\r\n// 搜索周边POI\r\nfunction getPoiAround(longitude, latitude, keyword = '', radius = 1000) {\r\n return new Promise((resolve, reject) => {\r\n const qqmap = getQQMapInstance();\r\n if (!qqmap) {\r\n reject({ success: false, message: '腾讯地图SDK未初始化' });\r\n return;\r\n }\r\n \r\n qqmap.search({\r\n keyword: keyword,\r\n location: {\r\n latitude,\r\n longitude\r\n },\r\n distance: radius,\r\n success: (data, result) => {\r\n const searchSimplify = result.searchSimplify;\r\n resolve({\r\n success: true,\r\n data: searchSimplify\r\n });\r\n },\r\n fail: (error) => {\r\n console.error('搜索POI失败:', error);\r\n reject({ success: false, message: error.message || '搜索POI失败' });\r\n }\r\n });\r\n });\r\n}\r\n\r\n// 计算距离(异步)\r\nfunction calculateDistance(from, to) {\r\n return new Promise((resolve, reject) => {\r\n const qqmap = getQQMapInstance();\r\n if (!qqmap) {\r\n reject({ success: false, message: '腾讯地图SDK未初始化' });\r\n return;\r\n }\r\n \r\n qqmap.calculateDistance({\r\n from: from,\r\n to: to,\r\n mode: 'walking',\r\n success: (data, result) => {\r\n const distance = result.distance;\r\n resolve({\r\n success: true,\r\n data: distance\r\n });\r\n },\r\n fail: (error) => {\r\n console.error('计算距离失败:', error);\r\n reject({ success: false, message: error.message || '计算距离失败' });\r\n }\r\n });\r\n });\r\n}\r\n\r\n// 计算距离(同步,使用球面距离公式)\r\nfunction calculateDistanceSync(lat1, lng1, lat2, lng2) {\r\n const R = 6371000; // 地球半径(米)\r\n const dLat = (lat2 - lat1) * Math.PI / 180;\r\n const dLng = (lng2 - lng1) * Math.PI / 180;\r\n const a = Math.sin(dLat / 2) * Math.sin(dLat / 2) +\r\n Math.cos(lat1 * Math.PI / 180) * Math.cos(lat2 * Math.PI / 180) *\r\n Math.sin(dLng / 2) * Math.sin(dLng / 2);\r\n const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\r\n return Math.round(R * c); // 返回距离,单位为米\r\n}\r\n\r\n// 关键词提示\r\nfunction getSuggestion(keyword, region = '全国') {\r\n return new Promise((resolve, reject) => {\r\n const qqmap = getQQMapInstance();\r\n if (!qqmap) {\r\n reject({ success: false, message: '腾讯地图SDK未初始化' });\r\n return;\r\n }\r\n \r\n qqmap.getSuggestion({\r\n keyword: keyword,\r\n region: region,\r\n success: (data, result) => {\r\n const suggestSimplify = result.suggestSimplify;\r\n resolve({\r\n success: true,\r\n data: suggestSimplify\r\n });\r\n },\r\n fail: (error) => {\r\n console.error('关键词提示失败:', error);\r\n reject({ success: false, message: error.message || '关键词提示失败' });\r\n }\r\n });\r\n });\r\n}\r\n\r\n// 导出函数\r\nexport {\r\n getUserLocation,\r\n getRegeo,\r\n getPoiAround,\r\n calculateDistance,\r\n calculateDistanceSync,\r\n getSuggestion,\r\n initQQMap,\r\n getQQMapInstance\r\n};\r\n\r\n// 测试距离计算函数(开发调试用)\r\nexport function testDistanceCalculation() {\r\n // 测试用例:北京天安门到故宫的距离(约1.5公里)\r\n const tiananmen = { lat: 39.908823, lng: 116.397470 };\r\n const gugong = { lat: 39.916527, lng: 116.397128 };\r\n \r\n const distance = calculateDistanceSync(tiananmen.lat, tiananmen.lng, gugong.lat, gugong.lng);\r\n console.log('天安门到故宫的距离:', distance, '米');\r\n console.log('转换为公里:', (distance / 1000).toFixed(2), '公里');\r\n \r\n return distance;\r\n} "],"names":["wx","QQMapWX","uni"],"mappings":"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"} \ No newline at end of file diff --git a/unpackage/dist/dev/.sourcemap/mp-weixin/utils/qqmapManager.js.map b/unpackage/dist/dev/.sourcemap/mp-weixin/utils/qqmapManager.js.map new file mode 100644 index 0000000..6364e68 --- /dev/null +++ b/unpackage/dist/dev/.sourcemap/mp-weixin/utils/qqmapManager.js.map @@ -0,0 +1 @@ +{"version":3,"file":"qqmapManager.js","sources":["utils/qqmapManager.js"],"sourcesContent":["// 腾讯地图SDK管理器\r\n// 导入腾讯地图SDK - 使用绝对路径导入\r\nconst QQMapWX = require('./qqmap-wx-jssdk.js');\r\n\r\n// 腾讯地图Key\r\nconst QQMAP_KEY = 'RO5BZ-ECZ63-7US3C-RT5QW-TIDZE-2FF35';\r\n\r\n// 提前创建单例,确保实例化过程在模块引入时完成\r\nlet qqmapInstanceSingleton = null;\r\ntry {\r\n qqmapInstanceSingleton = new QQMapWX({\r\n key: QQMAP_KEY\r\n });\r\n} catch (err) {\r\n console.error('初始化腾讯地图SDK失败:', err);\r\n}\r\n\r\nclass QQMapManager {\r\n constructor() {\r\n this.key = QQMAP_KEY;\r\n this.qqmapInstance = qqmapInstanceSingleton;\r\n if (!this.qqmapInstance) {\r\n // 如果全局实例创建失败,再次尝试初始化\r\n this.init();\r\n }\r\n }\r\n\r\n // 初始化腾讯地图SDK\r\n init() {\r\n if (!this.qqmapInstance) {\r\n try {\r\n this.qqmapInstance = new QQMapWX({\r\n key: this.key\r\n });\r\n // 更新全局单例\r\n qqmapInstanceSingleton = this.qqmapInstance;\r\n } catch (err) {\r\n console.error('重试初始化腾讯地图SDK失败:', err);\r\n }\r\n }\r\n return this.qqmapInstance;\r\n }\r\n\r\n // 获取腾讯地图SDK实例\r\n getQQMapInstance() {\r\n return this.qqmapInstance || this.init();\r\n }\r\n\r\n // 获取用户位置(使用微信的接口获取位置)\r\n getUserLocation() {\r\n return new Promise((resolve, reject) => {\r\n wx.getLocation({\r\n type: 'gcj02',\r\n success: (res) => {\r\n resolve({\r\n longitude: res.longitude,\r\n latitude: res.latitude\r\n });\r\n },\r\n fail: (error) => {\r\n console.error('获取位置失败:', error);\r\n reject(error);\r\n }\r\n });\r\n });\r\n }\r\n\r\n // 逆地理编码 - 根据经纬度获取地址信息\r\n getRegeo(longitude, latitude) {\r\n return new Promise((resolve, reject) => {\r\n this.getQQMapInstance().reverseGeocoder({\r\n location: {\r\n latitude,\r\n longitude\r\n },\r\n success: (res) => {\r\n resolve({\r\n success: true,\r\n data: {\r\n formatted_address: res.result.address,\r\n addressComponent: {\r\n city: res.result.address_component.city,\r\n district: res.result.address_component.district,\r\n province: res.result.address_component.province,\r\n street: res.result.address_component.street,\r\n street_number: res.result.address_component.street_number\r\n }\r\n }\r\n });\r\n },\r\n fail: (error) => {\r\n console.error('逆地理编码失败:', error);\r\n reject({\r\n success: false,\r\n message: error.message || '逆地理编码失败'\r\n });\r\n }\r\n });\r\n });\r\n }\r\n\r\n // 获取周边POI信息\r\n getPoiAround(longitude, latitude, keywords = '', types = '') {\r\n return new Promise((resolve, reject) => {\r\n this.getQQMapInstance().search({\r\n keyword: keywords || '商店',\r\n location: {\r\n latitude,\r\n longitude\r\n },\r\n page_size: 20,\r\n success: (res) => {\r\n const poisData = res.data.map(item => {\r\n return {\r\n id: item.id,\r\n name: item.title,\r\n address: item.address,\r\n location: {\r\n latitude: item.latitude,\r\n longitude: item.longitude\r\n },\r\n tel: item.tel,\r\n category: item.category,\r\n type: item.type,\r\n distance: item._distance\r\n };\r\n });\r\n \r\n resolve({\r\n success: true,\r\n data: poisData\r\n });\r\n },\r\n fail: (error) => {\r\n console.error('获取周边POI失败:', error);\r\n reject({\r\n success: false,\r\n message: error.message || '获取周边POI失败'\r\n });\r\n }\r\n });\r\n });\r\n }\r\n\r\n // 获取导航路线(驾车)\r\n getDrivingRoute(origin, destination) {\r\n return new Promise((resolve, reject) => {\r\n this.getQQMapInstance().direction({\r\n mode: 'driving',\r\n from: {\r\n latitude: origin.split(',')[1],\r\n longitude: origin.split(',')[0]\r\n },\r\n to: {\r\n latitude: destination.split(',')[1],\r\n longitude: destination.split(',')[0]\r\n },\r\n success: (res) => {\r\n resolve({\r\n success: true,\r\n data: res\r\n });\r\n },\r\n fail: (error) => {\r\n console.error('获取驾车路线失败:', error);\r\n reject({\r\n success: false,\r\n message: error.message || '获取驾车路线失败'\r\n });\r\n }\r\n });\r\n });\r\n }\r\n\r\n // 获取步行路线\r\n getWalkingRoute(origin, destination) {\r\n return new Promise((resolve, reject) => {\r\n this.getQQMapInstance().direction({\r\n mode: 'walking',\r\n from: {\r\n latitude: origin.split(',')[1],\r\n longitude: origin.split(',')[0]\r\n },\r\n to: {\r\n latitude: destination.split(',')[1],\r\n longitude: destination.split(',')[0]\r\n },\r\n success: (res) => {\r\n resolve({\r\n success: true,\r\n data: res\r\n });\r\n },\r\n fail: (error) => {\r\n console.error('获取步行路线失败:', error);\r\n reject({\r\n success: false,\r\n message: error.message || '获取步行路线失败'\r\n });\r\n }\r\n });\r\n });\r\n }\r\n\r\n // 计算两点间距离(单位:公里)\r\n calculateDistance(lat1, lng1, lat2, lng2) {\r\n return new Promise((resolve, reject) => {\r\n this.getQQMapInstance().calculateDistance({\r\n mode: 'straight', // 直线距离\r\n from: {\r\n latitude: lat1,\r\n longitude: lng1\r\n },\r\n to: [{\r\n latitude: lat2,\r\n longitude: lng2\r\n }],\r\n success: (res) => {\r\n // 腾讯地图返回的是米\r\n const distance = res.result.elements[0].distance / 1000; // 转为公里\r\n resolve(distance);\r\n },\r\n fail: (error) => {\r\n console.error('计算距离失败:', error);\r\n \r\n // 如果API调用失败,使用球面距离公式计算(备用方案)\r\n const radLat1 = lat1 * Math.PI / 180.0;\r\n const radLat2 = lat2 * Math.PI / 180.0;\r\n const a = radLat1 - radLat2;\r\n const b = lng1 * Math.PI / 180.0 - lng2 * Math.PI / 180.0;\r\n let s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) + Math.cos(radLat1) * Math.cos(radLat2) * Math.pow(Math.sin(b / 2), 2)));\r\n s = s * 6378.137; // 地球半径\r\n s = Math.round(s * 10000) / 10000; // 保留4位小数\r\n resolve(s);\r\n }\r\n });\r\n });\r\n }\r\n \r\n // 同步计算两点间距离的方法,用于不支持Promise的场景\r\n calculateDistanceSync(lat1, lng1, lat2, lng2) {\r\n const radLat1 = lat1 * Math.PI / 180.0;\r\n const radLat2 = lat2 * Math.PI / 180.0;\r\n const a = radLat1 - radLat2;\r\n const b = lng1 * Math.PI / 180.0 - lng2 * Math.PI / 180.0;\r\n let s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) + Math.cos(radLat1) * Math.cos(radLat2) * Math.pow(Math.sin(b / 2), 2)));\r\n s = s * 6378.137; // 地球半径,单位:公里\r\n s = Math.round(s * 10000) / 10000; // 保留4位小数\r\n return s;\r\n }\r\n\r\n // 获取建议地点(搜索建议)\r\n getSuggestion(keyword, region = '全国') {\r\n return new Promise((resolve, reject) => {\r\n this.getQQMapInstance().getSuggestion({\r\n keyword: keyword,\r\n region: region,\r\n success: (res) => {\r\n resolve({\r\n success: true,\r\n data: res.data\r\n });\r\n },\r\n fail: (error) => {\r\n console.error('获取地点建议失败:', error);\r\n reject({\r\n success: false,\r\n message: error.message || '获取地点建议失败'\r\n });\r\n }\r\n });\r\n });\r\n }\r\n}\r\n\r\n// 创建并导出实例\r\nconst qqmapManagerInstance = new QQMapManager();\r\nmodule.exports = qqmapManagerInstance;"],"names":["uni","wx"],"mappings":"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"} \ No newline at end of file diff --git a/unpackage/dist/dev/mp-weixin/common/assets.js b/unpackage/dist/dev/mp-weixin/common/assets.js index 95dfa25..266ebff 100644 --- a/unpackage/dist/dev/mp-weixin/common/assets.js +++ b/unpackage/dist/dev/mp-weixin/common/assets.js @@ -1,16 +1,20 @@ "use strict"; +const _imports_0$4 = "/static/logo.png"; const _imports_0$3 = "/static/scan-icon.png"; const _imports_0$2 = "/static/user-active.png"; -const _imports_1 = "/static/jl.png"; +const _imports_1$1 = "/static/jl.png"; const _imports_2 = "/static/complaint.png"; const _imports_3 = "/static/hlep.png"; const _imports_0$1 = "/static/images/wxpayflag.png"; const _imports_0 = "/static/images/location-map.svg"; +const _imports_1 = "/static/map.png"; exports._imports_0 = _imports_0$3; -exports._imports_0$1 = _imports_0$2; -exports._imports_0$2 = _imports_0$1; -exports._imports_0$3 = _imports_0; -exports._imports_1 = _imports_1; +exports._imports_0$1 = _imports_0$4; +exports._imports_0$2 = _imports_0$2; +exports._imports_0$3 = _imports_0$1; +exports._imports_0$4 = _imports_0; +exports._imports_1 = _imports_1$1; +exports._imports_1$1 = _imports_1; exports._imports_2 = _imports_2; exports._imports_3 = _imports_3; //# sourceMappingURL=../../.sourcemap/mp-weixin/common/assets.js.map diff --git a/unpackage/dist/dev/mp-weixin/common/vendor.js b/unpackage/dist/dev/mp-weixin/common/vendor.js index 4902521..8e005c2 100644 --- a/unpackage/dist/dev/mp-weixin/common/vendor.js +++ b/unpackage/dist/dev/mp-weixin/common/vendor.js @@ -4,6 +4,7 @@ * (c) 2018-present Yuxi (Evan) You and Vue contributors * @license MIT **/ +var _e, _f, _g, _h, _i, _j, _k, _l; function makeMap(str, expectsLowerCase) { const set2 = new Set(str.split(",")); return expectsLowerCase ? (val) => set2.has(val.toLowerCase()) : (val) => set2.has(val); @@ -68,8 +69,8 @@ const capitalize = cacheStringFunction((str) => { return str.charAt(0).toUpperCase() + str.slice(1); }); const toHandlerKey = cacheStringFunction((str) => { - const s = str ? `on${capitalize(str)}` : ``; - return s; + const s2 = str ? `on${capitalize(str)}` : ``; + return s2; }); const hasChanged = (value, oldValue) => !Object.is(value, oldValue); const invokeArrayFns$1 = (fns, arg) => { @@ -88,6 +89,36 @@ const looseToNumber = (val) => { const n2 = parseFloat(val); return isNaN(n2) ? val : n2; }; +function normalizeStyle(value) { + if (isArray(value)) { + const res = {}; + for (let i = 0; i < value.length; i++) { + const item = value[i]; + const normalized = isString(item) ? parseStringStyle(item) : normalizeStyle(item); + if (normalized) { + for (const key in normalized) { + res[key] = normalized[key]; + } + } + } + return res; + } else if (isString(value) || isObject(value)) { + return value; + } +} +const listDelimiterRE = /;(?![^(]*\))/g; +const propertyDelimiterRE = /:([^]+)/; +const styleCommentRE = /\/\*[^]*?\*\//g; +function parseStringStyle(cssText) { + const ret = {}; + cssText.replace(styleCommentRE, "").split(listDelimiterRE).forEach((item) => { + if (item) { + const tmp = item.split(propertyDelimiterRE); + tmp.length > 1 && (ret[tmp[0].trim()] = tmp[1].trim()); + } + }); + return ret; +} function normalizeClass(value) { let res = ""; if (isString(value)) { @@ -1551,11 +1582,11 @@ function formatTraceEntry({ vnode, recurseCount }) { const close = `>` + postfix; return vnode.props ? [open, ...formatProps(vnode.props), close] : [open + close]; } -function formatProps(props) { +function formatProps(props2) { const res = []; - const keys = Object.keys(props); + const keys = Object.keys(props2); keys.slice(0, 3).forEach((key) => { - res.push(...formatProp(key, props[key])); + res.push(...formatProp(key, props2[key])); }); if (keys.length > 3) { res.push(` ...`); @@ -1955,7 +1986,7 @@ function devtoolsComponentEmit(component, event, params) { function emit(instance, event, ...rawArgs) { if (instance.isUnmounted) return; - const props = instance.vnode.props || EMPTY_OBJ; + const props2 = instance.vnode.props || EMPTY_OBJ; { const { emitsOptions, @@ -1984,9 +2015,9 @@ function emit(instance, event, ...rawArgs) { let args = rawArgs; const isModelListener2 = event.startsWith("update:"); const modelArg = isModelListener2 && event.slice(7); - if (modelArg && modelArg in props) { + if (modelArg && modelArg in props2) { const modifiersKey = `${modelArg === "modelValue" ? "model" : modelArg}Modifiers`; - const { number: number2, trim: trim2 } = props[modifiersKey] || EMPTY_OBJ; + const { number: number2, trim: trim2 } = props2[modifiersKey] || EMPTY_OBJ; if (trim2) { args = rawArgs.map((a) => isString(a) ? a.trim() : a); } @@ -1999,7 +2030,7 @@ function emit(instance, event, ...rawArgs) { } { const lowerCaseEvent = event.toLowerCase(); - if (lowerCaseEvent !== event && props[toHandlerKey(lowerCaseEvent)]) { + if (lowerCaseEvent !== event && props2[toHandlerKey(lowerCaseEvent)]) { warn$1( `Event "${lowerCaseEvent}" is emitted in component ${formatComponentName( instance, @@ -2011,10 +2042,10 @@ function emit(instance, event, ...rawArgs) { } } let handlerName; - let handler = props[handlerName = toHandlerKey(event)] || // also try camelCase event handler (#2249) - props[handlerName = toHandlerKey(camelize(event))]; + let handler = props2[handlerName = toHandlerKey(event)] || // also try camelCase event handler (#2249) + props2[handlerName = toHandlerKey(camelize(event))]; if (!handler && isModelListener2) { - handler = props[handlerName = toHandlerKey(hyphenate(event))]; + handler = props2[handlerName = toHandlerKey(hyphenate(event))]; } if (handler) { callWithAsyncErrorHandling( @@ -2024,7 +2055,7 @@ function emit(instance, event, ...rawArgs) { args ); } - const onceHandler = props[handlerName + `Once`]; + const onceHandler = props2[handlerName + `Once`]; if (onceHandler) { if (!instance.emitted) { instance.emitted = {}; @@ -2442,13 +2473,13 @@ function createAppAPI(render, hydrate) { } return app; }, - mixin(mixin) { + mixin(mixin2) { { - if (!context.mixins.includes(mixin)) { - context.mixins.push(mixin); + if (!context.mixins.includes(mixin2)) { + context.mixins.push(mixin2); } else { warn$1( - "Mixin has already been applied to target app" + (mixin.name ? `: ${mixin.name}` : "") + "Mixin has already been applied to target app" + (mixin2.name ? `: ${mixin2.name}` : "") ); } } @@ -2670,7 +2701,7 @@ const isReservedPrefix = (key) => key === "_" || key === "$"; const hasSetupBinding = (state, key) => state !== EMPTY_OBJ && !state.__isScriptSetup && hasOwn(state, key); const PublicInstanceProxyHandlers = { get({ _: instance }, key) { - const { ctx, setupState, data, props, accessCache, type, appContext } = instance; + const { ctx, setupState, data, props: props2, accessCache, type, appContext } = instance; if (key === "__isVue") { return true; } @@ -2686,7 +2717,7 @@ const PublicInstanceProxyHandlers = { case 4: return ctx[key]; case 3: - return props[key]; + return props2[key]; } } else if (hasSetupBinding(setupState, key)) { accessCache[key] = 1; @@ -2700,7 +2731,7 @@ const PublicInstanceProxyHandlers = { (normalizedProps = instance.propsOptions[0]) && hasOwn(normalizedProps, key) ) { accessCache[key] = 3; - return props[key]; + return props2[key]; } else if (ctx !== EMPTY_OBJ && hasOwn(ctx, key)) { accessCache[key] = 4; return ctx[key]; @@ -2860,11 +2891,11 @@ function exposeSetupStateOnRenderContext(instance) { } }); } -function normalizePropsOrEmits(props) { - return isArray(props) ? props.reduce( +function normalizePropsOrEmits(props2) { + return isArray(props2) ? props2.reduce( (normalized, p2) => (normalized[p2] = null, normalized), {} - ) : props; + ) : props2; } function createDuplicateChecker() { const cache = /* @__PURE__ */ Object.create(null); @@ -3293,25 +3324,25 @@ function mergeWatchOptions(to, from) { return merged; } function initProps$1(instance, rawProps, isStateful, isSSR = false) { - const props = {}; + const props2 = {}; const attrs = {}; instance.propsDefaults = /* @__PURE__ */ Object.create(null); - setFullProps(instance, rawProps, props, attrs); + setFullProps(instance, rawProps, props2, attrs); for (const key in instance.propsOptions[0]) { - if (!(key in props)) { - props[key] = void 0; + if (!(key in props2)) { + props2[key] = void 0; } } { - validateProps(rawProps || {}, props, instance); + validateProps(rawProps || {}, props2, instance); } if (isStateful) { - instance.props = isSSR ? props : shallowReactive(props); + instance.props = isSSR ? props2 : shallowReactive(props2); } else { if (!instance.type.props) { instance.props = attrs; } else { - instance.props = props; + instance.props = props2; } } instance.attrs = attrs; @@ -3320,11 +3351,11 @@ function isInHmrContext(instance) { } function updateProps(instance, rawProps, rawPrevProps, optimized) { const { - props, + props: props2, attrs, vnode: { patchFlag } } = instance; - const rawCurrentProps = toRaw(props); + const rawCurrentProps = toRaw(props2); const [options] = instance.propsOptions; let hasAttrsChanged = false; if ( @@ -3349,7 +3380,7 @@ function updateProps(instance, rawProps, rawPrevProps, optimized) { } } else { const camelizedKey = camelize(key); - props[camelizedKey] = resolvePropValue$1( + props2[camelizedKey] = resolvePropValue$1( options, rawCurrentProps, camelizedKey, @@ -3367,7 +3398,7 @@ function updateProps(instance, rawProps, rawPrevProps, optimized) { } } } else { - if (setFullProps(instance, rawProps, props, attrs)) { + if (setFullProps(instance, rawProps, props2, attrs)) { hasAttrsChanged = true; } let kebabKey; @@ -3380,7 +3411,7 @@ function updateProps(instance, rawProps, rawPrevProps, optimized) { if (rawPrevProps && // for camelCase (rawPrevProps[key] !== void 0 || // for kebab-case rawPrevProps[kebabKey] !== void 0)) { - props[key] = resolvePropValue$1( + props2[key] = resolvePropValue$1( options, rawCurrentProps, key, @@ -3390,7 +3421,7 @@ function updateProps(instance, rawProps, rawPrevProps, optimized) { ); } } else { - delete props[key]; + delete props2[key]; } } } @@ -3407,10 +3438,10 @@ function updateProps(instance, rawProps, rawPrevProps, optimized) { trigger(instance, "set", "$attrs"); } { - validateProps(rawProps || {}, props, instance); + validateProps(rawProps || {}, props2, instance); } } -function setFullProps(instance, rawProps, props, attrs) { +function setFullProps(instance, rawProps, props2, attrs) { const [options, needCastKeys] = instance.propsOptions; let hasAttrsChanged = false; let rawCastValues; @@ -3423,7 +3454,7 @@ function setFullProps(instance, rawProps, props, attrs) { let camelKey; if (options && hasOwn(options, camelKey = camelize(key))) { if (!needCastKeys || !needCastKeys.includes(camelKey)) { - props[camelKey] = value; + props2[camelKey] = value; } else { (rawCastValues || (rawCastValues = {}))[camelKey] = value; } @@ -3436,11 +3467,11 @@ function setFullProps(instance, rawProps, props, attrs) { } } if (needCastKeys) { - const rawCurrentProps = toRaw(props); + const rawCurrentProps = toRaw(props2); const castValues = rawCastValues || EMPTY_OBJ; for (let i = 0; i < needCastKeys.length; i++) { const key = needCastKeys[i]; - props[key] = resolvePropValue$1( + props2[key] = resolvePropValue$1( options, rawCurrentProps, key, @@ -3452,7 +3483,7 @@ function setFullProps(instance, rawProps, props, attrs) { } return hasAttrsChanged; } -function resolvePropValue$1(options, props, key, value, instance, isAbsent) { +function resolvePropValue$1(options, props2, key, value, instance, isAbsent) { const opt = options[key]; if (opt != null) { const hasDefault = hasOwn(opt, "default"); @@ -3466,7 +3497,7 @@ function resolvePropValue$1(options, props, key, value, instance, isAbsent) { const reset = setCurrentInstance(instance); value = propsDefaults[key] = defaultValue.call( null, - props + props2 ); reset(); } @@ -3503,8 +3534,8 @@ function normalizePropsOptions(comp, appContext, asMixin = false) { if (!isFunction(comp)) { const extendProps = (raw2) => { hasExtends = true; - const [props, keys] = normalizePropsOptions(raw2, appContext, true); - extend(normalized, props); + const [props2, keys] = normalizePropsOptions(raw2, appContext, true); + extend(normalized, props2); if (keys) needCastKeys.push(...keys); }; @@ -3598,8 +3629,8 @@ function getTypeIndex(type, expectedTypes) { } return -1; } -function validateProps(rawProps, props, instance) { - const resolvedValues = toRaw(props); +function validateProps(rawProps, props2, instance) { + const resolvedValues = toRaw(props2); const options = instance.propsOptions[0]; for (const key in options) { let opt = options[key]; @@ -3614,7 +3645,7 @@ function validateProps(rawProps, props, instance) { ); } } -function validateProp$1(name, value, prop, props, isAbsent) { +function validateProp$1(name, value, prop, props2, isAbsent) { const { type, required, validator, skipCheck } = prop; if (required && isAbsent) { warn$1('Missing required prop: "' + name + '"'); @@ -3637,7 +3668,7 @@ function validateProp$1(name, value, prop, props, isAbsent) { return; } } - if (validator && !validator(value, props)) { + if (validator && !validator(value, props2)) { warn$1('Invalid prop: custom validator check failed for prop "' + name + '".'); } } @@ -3749,10 +3780,10 @@ function isVNode(value) { return value ? value.__v_isVNode === true : false; } const InternalObjectKey = `__vInternal`; -function guardReactiveProps(props) { - if (!props) +function guardReactiveProps(props2) { + if (!props2) return null; - return isProxy(props) || InternalObjectKey in props ? extend({}, props) : props; + return isProxy(props2) || InternalObjectKey in props2 ? extend({}, props2) : props2; } const emptyAppContext = createAppContext(); let uid = 0; @@ -3891,11 +3922,11 @@ let isInSSRComponentSetup = false; function setupComponent(instance, isSSR = false) { isSSR && setInSSRSetupState(isSSR); const { - props + props: props2 /*, children*/ } = instance.vnode; const isStateful = isStatefulComponent(instance); - initProps$1(instance, props, isStateful, isSSR); + initProps$1(instance, props2, isStateful, isSSR); const setupResult = isStateful ? setupStatefulComponent(instance, isSSR) : void 0; isSSR && setInSSRSetupState(false); return setupResult; @@ -4564,7 +4595,7 @@ function renderComponentRoot(instance) { vnode, proxy, withProxy, - props, + props: props2, propsOptions: [propsOptions], slots, attrs, @@ -4595,13 +4626,13 @@ function renderComponentRoot(instance) { const prev = setCurrentRenderingInstance(instance); try { if (vnode.shapeFlag & 4) { - fallthroughAttrs(inheritAttrs, props, propsOptions, attrs); + fallthroughAttrs(inheritAttrs, props2, propsOptions, attrs); const proxyToUse = withProxy || proxy; result = render.call( proxyToUse, proxyToUse, renderCache, - props, + props2, setupState, data, ctx @@ -4609,13 +4640,13 @@ function renderComponentRoot(instance) { } else { fallthroughAttrs( inheritAttrs, - props, + props2, propsOptions, Component2.props ? attrs : getFunctionalFallthrough(attrs) ); const render2 = Component2; - result = render2.length > 1 ? render2(props, { attrs, slots, emit: emit2 }) : render2( - props, + result = render2.length > 1 ? render2(props2, { attrs, slots, emit: emit2 }) : render2( + props2, null /* we know it doesn't need it */ ); @@ -4628,8 +4659,8 @@ function renderComponentRoot(instance) { setCurrentRenderingInstance(prev); return result; } -function fallthroughAttrs(inheritAttrs, props, propsOptions, fallthroughAttrs2) { - if (props && fallthroughAttrs2 && inheritAttrs !== false) { +function fallthroughAttrs(inheritAttrs, props2, propsOptions, fallthroughAttrs2) { + if (props2 && fallthroughAttrs2 && inheritAttrs !== false) { const keys = Object.keys(fallthroughAttrs2).filter( (key) => key !== "class" && key !== "style" ); @@ -4639,11 +4670,11 @@ function fallthroughAttrs(inheritAttrs, props, propsOptions, fallthroughAttrs2) if (propsOptions && keys.some(isModelListener)) { keys.forEach((key) => { if (!isModelListener(key) || !(key.slice(9) in propsOptions)) { - props[key] = fallthroughAttrs2[key]; + props2[key] = fallthroughAttrs2[key]; } }); } else { - keys.forEach((key) => props[key] = fallthroughAttrs2[key]); + keys.forEach((key) => props2[key] = fallthroughAttrs2[key]); } } } @@ -4939,7 +4970,7 @@ function b64DecodeUnicode(str) { }).join("")); } function getCurrentUserInfo() { - const token = index.getStorageSync("uni_id_token") || ""; + const token = index$1.getStorageSync("uni_id_token") || ""; const tokenArr = token.split("."); if (!token || tokenArr.length !== 3) { return { @@ -4952,8 +4983,8 @@ function getCurrentUserInfo() { let userInfo; try { userInfo = JSON.parse(b64DecodeUnicode(tokenArr[1])); - } catch (error) { - throw new Error("获取当前用户信息出错,详细错误信息为:" + error.message); + } catch (error2) { + throw new Error("获取当前用户信息出错,详细错误信息为:" + error2.message); } userInfo.tokenExpired = userInfo.exp * 1e3; delete userInfo.exp; @@ -4988,13 +5019,13 @@ function initApp(app) { globalProperties.$callMethod = $callMethod; } { - index.invokeCreateVueAppHook(app); + index$1.invokeCreateVueAppHook(app); } } const propsCaches = /* @__PURE__ */ Object.create(null); -function renderProps(props) { +function renderProps(props2) { const { uid: uid2, __counter } = getCurrentInstance(); - const propsId = (propsCaches[uid2] || (propsCaches[uid2] = [])).push(guardReactiveProps(props)) - 1; + const propsId = (propsCaches[uid2] || (propsCaches[uid2] = [])).push(guardReactiveProps(props2)) - 1; return uid2 + "," + propsId + "," + __counter; } function pruneComponentPropsCache(uid2) { @@ -5037,6 +5068,22 @@ function getCreateApp() { return my[method]; } } +function stringifyStyle(value) { + if (isString(value)) { + return value; + } + return stringify(normalizeStyle(value)); +} +function stringify(styles) { + let ret = ""; + if (!styles || isString(styles)) { + return ret; + } + for (const key in styles) { + ret += `${key.startsWith(`--`) ? key : hyphenate(key)}:${styles[key]};`; + } + return ret; +} function vOn(value, key) { const instance = getCurrentInstance(); const ctx = instance.ctx; @@ -5169,10 +5216,11 @@ function setRef(ref2, id, opts = {}) { } const o = (value, key) => vOn(value, key); const f = (source, renderItem) => vFor(source, renderItem); +const s = (value) => stringifyStyle(value); const e = (target, ...sources) => extend(target, ...sources); const n = (value) => normalizeClass(value); const t = (val) => toDisplayString(val); -const p = (props) => renderProps(props); +const p = (props2) => renderProps(props2); const sr = (ref2, id, opts) => setRef(ref2, id, opts); function createApp$1(rootComponent, rootProps = null) { rootComponent && (rootComponent.mpType = "app"); @@ -5393,15 +5441,15 @@ function wrapperHook(hook, params) { }; } function queue(hooks, data, params) { - let promise = false; + let promise2 = false; for (let i = 0; i < hooks.length; i++) { const hook = hooks[i]; - if (promise) { - promise = Promise.resolve(wrapperHook(hook, params)); + if (promise2) { + promise2 = Promise.resolve(wrapperHook(hook, params)); } else { const res = hook(data, params); if (isPromise(res)) { - promise = Promise.resolve(res); + promise2 = Promise.resolve(res); } if (res === false) { return { @@ -5413,7 +5461,7 @@ function queue(hooks, data, params) { } } } - return promise || { + return promise2 || { then(callback) { return callback(data); }, @@ -5487,8 +5535,8 @@ function hasCallback(args) { } return false; } -function handlePromise(promise) { - return promise; +function handlePromise(promise2) { + return promise2; } function promisify$1(name, fn) { return (args = {}, ...rest) => { @@ -5878,8 +5926,8 @@ function shouldPromise(name) { } if (!Promise.prototype.finally) { Promise.prototype.finally = function(onfinally) { - const promise = this.constructor; - return this.then((value) => promise.resolve(onfinally && onfinally()).then(() => value), (reason) => promise.resolve(onfinally && onfinally()).then(() => { + const promise2 = this.constructor; + return this.then((value) => promise2.resolve(onfinally && onfinally()).then(() => value), (reason) => promise2.resolve(onfinally && onfinally()).then(() => { throw reason; })); }; @@ -6490,12 +6538,12 @@ var protocols = /* @__PURE__ */ Object.freeze({ showActionSheet }); const wx$1 = initWx(); -var index = initUni(shims, protocols, wx$1); +var index$1 = initUni(shims, protocols, wx$1); function initRuntimeSocket(hosts, port, id) { if (hosts == "" || port == "" || id == "") return Promise.resolve(null); - return hosts.split(",").reduce((promise, host2) => { - return promise.then((socket) => { + return hosts.split(",").reduce((promise2, host2) => { + return promise2.then((socket) => { if (socket != null) return Promise.resolve(socket); return tryConnectSocket(host2, port, id); @@ -6505,7 +6553,7 @@ function initRuntimeSocket(hosts, port, id) { const SOCKET_TIMEOUT = 500; function tryConnectSocket(host2, port, id) { return new Promise((resolve2, reject) => { - const socket = index.connectSocket({ + const socket = index$1.connectSocket({ url: `ws://${host2}:${port}/${id}`, multiple: true, // 支付宝小程序 是否开启多实例 @@ -6544,8 +6592,8 @@ const errorQueue = /* @__PURE__ */ new Set(); const errorExtra = {}; function sendErrorMessages(errors) { if (sendError == null) { - errors.forEach((error) => { - errorQueue.add(error); + errors.forEach((error2) => { + errorQueue.add(error2); }); return; } @@ -6591,31 +6639,31 @@ function setSendError(value, extra = {}) { } } function initOnError() { - function onError2(error) { + function onError2(error2) { try { - if (typeof PromiseRejectionEvent !== "undefined" && error instanceof PromiseRejectionEvent && error.reason instanceof Error && error.reason.message && error.reason.message.includes(`Cannot create property 'errMsg' on string 'taskId`)) { + if (typeof PromiseRejectionEvent !== "undefined" && error2 instanceof PromiseRejectionEvent && error2.reason instanceof Error && error2.reason.message && error2.reason.message.includes(`Cannot create property 'errMsg' on string 'taskId`)) { return; } if (true) { - originalConsole.error(error); + originalConsole.error(error2); } - sendErrorMessages([error]); + sendErrorMessages([error2]); } catch (err) { originalConsole.error(err); } } - if (typeof index.onError === "function") { - index.onError(onError2); + if (typeof index$1.onError === "function") { + index$1.onError(onError2); } - if (typeof index.onUnhandledRejection === "function") { - index.onUnhandledRejection(onError2); + if (typeof index$1.onUnhandledRejection === "function") { + index$1.onUnhandledRejection(onError2); } return function offError2() { - if (typeof index.offError === "function") { - index.offError(onError2); + if (typeof index$1.offError === "function") { + index$1.offError(onError2); } - if (typeof index.offUnhandledRejection === "function") { - index.offUnhandledRejection(onError2); + if (typeof index$1.offUnhandledRejection === "function") { + index$1.offUnhandledRejection(onError2); } }; } @@ -6962,16 +7010,16 @@ function rewriteConsole() { }; } else { { - if (typeof index !== "undefined" && index.__f__) { - const oldLog = index.__f__; + if (typeof index$1 !== "undefined" && index$1.__f__) { + const oldLog = index$1.__f__; if (oldLog) { - index.__f__ = function(...args) { + index$1.__f__ = function(...args) { const [type, filename, ...rest] = args; oldLog(type, "", ...rest); sendConsoleMessages([formatMessage(type, [...rest, filename])]); }; return function restoreConsole() { - index.__f__ = oldLog; + index$1.__f__ = oldLog; }; } } @@ -6993,9 +7041,9 @@ function isConsoleWritable() { return isWritable; } function initRuntimeSocketService() { - const hosts = "198.18.0.1,192.168.1.8,127.0.0.1"; + const hosts = "192.168.10.62,127.0.0.1"; const port = "8090"; - const id = "mp-weixin_RTBzKu"; + const id = "mp-weixin_MczgwA"; const lazy = typeof swan !== "undefined"; let restoreError = lazy ? () => { } : initOnError(); @@ -7042,8 +7090,8 @@ function initRuntimeSocketService() { }); } const ERROR_CHAR = "‌"; -function wrapError(error) { - return `${ERROR_CHAR}${error}${ERROR_CHAR}`; +function wrapError(error2) { + return `${ERROR_CHAR}${error2}${ERROR_CHAR}`; } function initMiniProgramGlobalFlag() { if (typeof wx$1 !== "undefined") { @@ -7069,9 +7117,9 @@ function initMiniProgramGlobalFlag() { } } initRuntimeSocketService(); -const _export_sfc = (sfc, props) => { +const _export_sfc = (sfc, props2) => { const target = sfc.__vccOpts || sfc; - for (const [key, val] of props) { + for (const [key, val] of props2) { target[key] = val; } return target; @@ -7291,7 +7339,7 @@ function findHooks(vueOptions, hooks = /* @__PURE__ */ new Set()) { { const { extends: extendsOptions, mixins } = vueOptions; if (mixins) { - mixins.forEach((mixin) => findHooks(mixin, hooks)); + mixins.forEach((mixin2) => findHooks(mixin2, hooks)); } if (extendsOptions) { findHooks(extendsOptions, hooks); @@ -7332,9 +7380,9 @@ const findMixinRuntimeHooks = /* @__PURE__ */ once(() => { const mixins = app.$vm.$.appContext.mixins; if (isArray(mixins)) { const hooks = Object.keys(MINI_PROGRAM_PAGE_RUNTIME_HOOKS); - mixins.forEach((mixin) => { + mixins.forEach((mixin2) => { hooks.forEach((hook) => { - if (hasOwn(mixin, hook) && !runtimeHooks.includes(hook)) { + if (hasOwn(mixin2, hook) && !runtimeHooks.includes(hook)) { runtimeHooks.push(hook); } }); @@ -7825,7 +7873,7 @@ function initTriggerEvent(mpInstance) { }; try { mpInstance.triggerEvent = newTriggerEvent; - } catch (error) { + } catch (error2) { mpInstance._triggerEvent = newTriggerEvent; } } @@ -7941,7 +7989,7 @@ const createSubpackageApp = initCreateSubpackageApp(); wx.createPluginApp = global.createPluginApp = createPluginApp; wx.createSubpackageApp = global.createSubpackageApp = createSubpackageApp; } -function deepClone(obj, cache = /* @__PURE__ */ new WeakMap()) { +function deepClone$1(obj, cache = /* @__PURE__ */ new WeakMap()) { if (obj === null || typeof obj !== "object") return obj; if (cache.has(obj)) @@ -7952,16 +8000,16 @@ function deepClone(obj, cache = /* @__PURE__ */ new WeakMap()) { } else if (obj instanceof RegExp) { clone2 = new RegExp(obj); } else if (obj instanceof Map) { - clone2 = new Map(Array.from(obj, ([key, value]) => [key, deepClone(value, cache)])); + clone2 = new Map(Array.from(obj, ([key, value]) => [key, deepClone$1(value, cache)])); } else if (obj instanceof Set) { - clone2 = new Set(Array.from(obj, (value) => deepClone(value, cache))); + clone2 = new Set(Array.from(obj, (value) => deepClone$1(value, cache))); } else if (Array.isArray(obj)) { - clone2 = obj.map((value) => deepClone(value, cache)); + clone2 = obj.map((value) => deepClone$1(value, cache)); } else if (Object.prototype.toString.call(obj) === "[object Object]") { clone2 = Object.create(Object.getPrototypeOf(obj)); cache.set(obj, clone2); for (const [key, value] of Object.entries(obj)) { - clone2[key] = deepClone(value, cache); + clone2[key] = deepClone$1(value, cache); } } else { clone2 = Object.assign({}, obj); @@ -7969,8 +8017,8 @@ function deepClone(obj, cache = /* @__PURE__ */ new WeakMap()) { cache.set(obj, clone2); return clone2; } -function deepMerge(target = {}, source = {}) { - target = deepClone(target); +function deepMerge$1(target = {}, source = {}) { + target = deepClone$1(target); if (typeof target !== "object" || target === null || typeof source !== "object" || source === null) return target; const merged = Array.isArray(target) ? target.slice() : Object.assign({}, target); @@ -7988,40 +8036,40 @@ function deepMerge(target = {}, source = {}) { } else if (sourceValue instanceof Set) { merged[prop] = new Set(sourceValue); } else if (typeof sourceValue === "object" && sourceValue !== null) { - merged[prop] = deepMerge(targetValue, sourceValue); + merged[prop] = deepMerge$1(targetValue, sourceValue); } else { merged[prop] = sourceValue; } } return merged; } -function email(value) { +function email$1(value) { return /[\w!#$%&'*+/=?^_`{|}~-]+(?:\.[\w!#$%&'*+/=?^_`{|}~-]+)*@(?:[\w](?:[\w-]*[\w])?\.)+[\w](?:[\w-]*[\w])?/.test(value); } -function mobile(value) { +function mobile$1(value) { return /^1[3-9]\d{9}$/.test(value); } -function url(value) { +function url$1(value) { return /http(s)?:\/\/([\w-]+\.)+[\w-]+(\/[\w-.\/?%&=]*)?/.test(value); } -function date(value) { +function date$1(value) { return !/Invalid|NaN/.test(new Date(value).toString()); } -function dateISO(value) { +function dateISO$1(value) { return /^\d{4}[\/\-](0?[1-9]|1[012])[\/\-](0?[1-9]|[12][0-9]|3[01])$/.test(value); } -function number(value) { +function number$1(value) { return /^[\+-]?(\d+\.?\d*|\.\d+|\d\.\d+e\+\d+)$/.test(value); } -function digits(value) { +function digits$1(value) { return /^\d+$/.test(value); } -function idCard(value) { +function idCard$1(value) { return /^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$/.test( value ); } -function carNo(value) { +function carNo$1(value) { const xreg = /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}(([0-9]{5}[DF]$)|([DF][A-HJ-NP-Z0-9][0-9]{4}$))/; const creg = /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}[A-HJ-NP-Z0-9]{4}[A-HJ-NP-Z0-9挂学警港澳]{1}$/; if (value.length === 7) { @@ -8032,34 +8080,34 @@ function carNo(value) { return false; } } -function amount(value) { +function amount$1(value) { return /^[1-9]\d*(,\d{3})*(\.\d{1,2})?$|^0\.\d{1,2}$/.test(value); } -function chinese(value) { +function chinese$1(value) { let reg = /^[\u4e00-\u9fa5]+$/gi; return reg.test(value); } -function letter(value) { +function letter$1(value) { return /^[a-zA-Z]*$/.test(value); } -function enOrNum(value) { +function enOrNum$1(value) { let reg = /^[0-9a-zA-Z]*$/g; return reg.test(value); } -function contains(value, param) { +function contains$1(value, param) { return value.indexOf(param) >= 0; } -function range(value, param) { +function range$2(value, param) { return value >= param[0] && value <= param[1]; } -function rangeLength(value, param) { +function rangeLength$1(value, param) { return value.length >= param[0] && value.length <= param[1]; } -function landline(value) { +function landline$1(value) { let reg = /^\d{3,4}-\d{7,8}(-\d{3,4})?$/; return reg.test(value); } -function empty(value) { +function empty$1(value) { switch (typeof value) { case "undefined": return true; @@ -8085,7 +8133,7 @@ function empty(value) { } return false; } -function jsonString(value) { +function jsonString$1(value) { if (typeof value == "string") { try { var obj = JSON.parse(value); @@ -8100,48 +8148,48 @@ function jsonString(value) { } return false; } -function array(value) { +function array$1(value) { if (typeof Array.isArray === "function") { return Array.isArray(value); } else { return Object.prototype.toString.call(value) === "[object Array]"; } } -function object(value) { +function object$1(value) { return Object.prototype.toString.call(value) === "[object Object]"; } -function code(value, len = 6) { +function code$1(value, len = 6) { return new RegExp(`^\\d{${len}}$`).test(value); } -const test = { - email, - mobile, - url, - date, - dateISO, - number, - digits, - idCard, - carNo, - amount, - chinese, - letter, - enOrNum, - contains, - range, - rangeLength, - empty, - isEmpty: empty, - jsonString, - landline, - object, - array, - code +const test$1 = { + email: email$1, + mobile: mobile$1, + url: url$1, + date: date$1, + dateISO: dateISO$1, + number: number$1, + digits: digits$1, + idCard: idCard$1, + carNo: carNo$1, + amount: amount$1, + chinese: chinese$1, + letter: letter$1, + enOrNum: enOrNum$1, + contains: contains$1, + range: range$2, + rangeLength: rangeLength$1, + empty: empty$1, + isEmpty: empty$1, + jsonString: jsonString$1, + landline: landline$1, + object: object$1, + array: array$1, + code: code$1 }; class Request { // 设置全局默认配置 setConfig(customConfig) { - this.config = deepMerge(this.config, customConfig); + this.config = deepMerge$1(this.config, customConfig); } // 主要请求部分 request(options = {}) { @@ -8161,7 +8209,7 @@ class Request { options.method = options.method || this.config.method; return new Promise((resolve2, reject) => { options.complete = (response) => { - index.hideLoading(); + index$1.hideLoading(); clearTimeout(this.config.timer); this.config.timer = null; if (this.config.originalData) { @@ -8192,17 +8240,17 @@ class Request { } } }; - options.url = test.url(options.url) ? options.url : this.config.baseUrl + (options.url.indexOf("/") == 0 ? options.url : "/" + options.url); + options.url = test$1.url(options.url) ? options.url : this.config.baseUrl + (options.url.indexOf("/") == 0 ? options.url : "/" + options.url); if (this.config.showLoading && !this.config.timer) { this.config.timer = setTimeout(() => { - index.showLoading({ + index$1.showLoading({ title: this.config.loadingText, mask: this.config.loadingMask }); this.config.timer = null; }, this.config.loadingTime); } - index.request(options); + index$1.request(options); }); } constructor() { @@ -8269,7 +8317,7 @@ class Request { } } const http = new Request(); -function queryParams(data = {}, isPrefix = true, arrayFormat = "brackets") { +function queryParams$1(data = {}, isPrefix = true, arrayFormat = "brackets") { let prefix = isPrefix ? "?" : ""; let _result = []; if (["indices", "brackets", "repeat", "comma"].indexOf(arrayFormat) == -1) @@ -8314,7 +8362,7 @@ function queryParams(data = {}, isPrefix = true, arrayFormat = "brackets") { } return _result.length ? prefix + _result.join("&") : ""; } -class Router { +let Router$1 = class Router { constructor() { this.config = { type: "navigateTo", @@ -8341,10 +8389,10 @@ class Router { url2 = url2 && this.addRootPath(url2); let query = ""; if (/.*\/.*\?.*=.*/.test(url2)) { - query = index.$u.queryParams(params, false); + query = index$1.$u.queryParams(params, false); return url2 += "&" + query; } else { - query = index.$u.queryParams(params); + query = index$1.$u.queryParams(params); return url2 += query; } } @@ -8355,17 +8403,17 @@ class Router { mergeConfig.url = this.mixinParam(options, params); mergeConfig.type = "navigateTo"; } else { - mergeConfig = index.$u.deepMerge(this.config, options); + mergeConfig = index$1.$u.deepMerge(this.config, options); mergeConfig.url = this.mixinParam(options.url, options.params); } if (params.intercept) { this.config.intercept = params.intercept; } mergeConfig.params = params; - mergeConfig = index.$u.deepMerge(this.config, mergeConfig); - if (typeof index.$u.routeIntercept === "function") { + mergeConfig = index$1.$u.deepMerge(this.config, mergeConfig); + if (typeof index$1.$u.routeIntercept === "function") { const isNext = await new Promise((resolve2, reject) => { - index.$u.routeIntercept(mergeConfig, resolve2); + index$1.$u.routeIntercept(mergeConfig, resolve2); }); isNext && this.openPage(mergeConfig); } else { @@ -8382,35 +8430,35 @@ class Router { animationDuration } = config2; if (config2.type == "navigateTo" || config2.type == "to") { - index.navigateTo({ + index$1.navigateTo({ url: url2, animationType, animationDuration }); } if (config2.type == "redirectTo" || config2.type == "redirect") { - index.redirectTo({ + index$1.redirectTo({ url: url2 }); } if (config2.type == "switchTab" || config2.type == "tab") { - index.switchTab({ + index$1.switchTab({ url: url2 }); } if (config2.type == "reLaunch" || config2.type == "launch") { - index.reLaunch({ + index$1.reLaunch({ url: url2 }); } if (config2.type == "navigateBack" || config2.type == "back") { - index.navigateBack({ + index$1.navigateBack({ delta }); } } -} -const route = new Router().route; +}; +const route$1 = new Router$1().route; if (!String.prototype.padStart) { String.prototype.padStart = function(maxLength, fillString = " ") { if (Object.prototype.toString.call(fillString) !== "[object String]") @@ -8420,17 +8468,17 @@ if (!String.prototype.padStart) { let str = this; if (str.length >= maxLength) return String(str); - let fillLength = maxLength - str.length, times = Math.ceil(fillLength / fillString.length); - while (times >>= 1) { + let fillLength = maxLength - str.length, times2 = Math.ceil(fillLength / fillString.length); + while (times2 >>= 1) { fillString += fillString; - if (times === 1) { + if (times2 === 1) { fillString += fillString; } } return fillString.slice(0, fillLength) + str; }; } -function timeFormat(dateTime = null, fmt = "yyyy-mm-dd") { +function timeFormat$1(dateTime = null, fmt = "yyyy-mm-dd") { if (!dateTime) dateTime = Number(/* @__PURE__ */ new Date()); if (dateTime.toString().length == 10) @@ -8460,7 +8508,7 @@ function timeFormat(dateTime = null, fmt = "yyyy-mm-dd") { } return fmt; } -function timeFrom(dateTime = null, format = "yyyy-mm-dd") { +function timeFrom$1(dateTime = null, format = "yyyy-mm-dd") { if (!dateTime) dateTime = Number(/* @__PURE__ */ new Date()); if (dateTime.toString().length == 10) @@ -8489,7 +8537,7 @@ function timeFrom(dateTime = null, format = "yyyy-mm-dd") { tips = parseInt(timer / (86400 * 365)) + "年前"; } } else { - tips = timeFormat(timestamp, format); + tips = timeFormat$1(timestamp, format); } } return tips; @@ -8600,7 +8648,7 @@ const colorGradient$1 = { rgbToHex, colorToRgba }; -function guid(len = 32, firstU = true, radix = null) { +function guid$1(len = 32, firstU = true, radix = null) { let chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""); let uuid = []; radix = radix || chars.length; @@ -8653,7 +8701,7 @@ let color = { lightColor: "#c0c4cc", borderColor: "#e4e7ed" }; -function type2icon(type = "success", fill = false) { +function type2icon$1(type = "success", fill = false) { if (["primary", "info", "error", "warning", "success"].indexOf(type) == -1) type = "success"; let iconName = ""; @@ -8680,14 +8728,14 @@ function type2icon(type = "success", fill = false) { iconName += "-fill"; return iconName; } -function randomArray(array2 = []) { +function randomArray$1(array2 = []) { return array2.sort(() => Math.random() - 0.5); } -function addUnit(value = "auto", unit = "rpx") { +function addUnit$1(value = "auto", unit = "rpx") { value = String(value); - return test.number(value) ? `${value}${unit}` : value; + return test$1.number(value) ? `${value}${unit}` : value; } -function random(min, max) { +function random$1(min, max) { if (min >= 0 && max > 0 && max >= min) { let gab = max - min + 1; return Math.floor(Math.random() * gab + min); @@ -8695,7 +8743,7 @@ function random(min, max) { return 0; } } -function trim(str, pos = "both") { +function trim$1(str, pos = "both") { if (pos == "both") { return str.replace(/^\s+|\s+$/g, ""); } else if (pos == "left") { @@ -8708,8 +8756,8 @@ function trim(str, pos = "both") { return str; } } -function toast(title, duration = 1500) { - index.showToast({ +function toast$1(title, duration = 1500) { + index$1.showToast({ title, icon: "none", duration @@ -8750,7 +8798,7 @@ function getParent(name, keys) { } return {}; } -function $parent(name = void 0) { +function $parent$1(name = void 0) { let parent = this.$parent; while (parent) { if (parent.$options && parent.$options.name !== name) { @@ -8761,45 +8809,45 @@ function $parent(name = void 0) { } return false; } -function os() { - return index.getSystemInfoSync().platform; +function os$1() { + return index$1.getSystemInfoSync().platform; } -function sys() { - return index.getSystemInfoSync(); +function sys$1() { + return index$1.getSystemInfoSync(); } -let timeout = null; -function debounce(func, wait = 500, immediate = false) { - if (timeout !== null) - clearTimeout(timeout); +let timeout$1 = null; +function debounce$1(func2, wait = 500, immediate = false) { + if (timeout$1 !== null) + clearTimeout(timeout$1); if (immediate) { - var callNow = !timeout; - timeout = setTimeout(function() { - timeout = null; + var callNow = !timeout$1; + timeout$1 = setTimeout(function() { + timeout$1 = null; }, wait); if (callNow) - typeof func === "function" && func(); + typeof func2 === "function" && func2(); } else { - timeout = setTimeout(function() { - typeof func === "function" && func(); + timeout$1 = setTimeout(function() { + typeof func2 === "function" && func2(); }, wait); } } -let flag; -function throttle(func, wait = 500, immediate = true) { +let flag$1; +function throttle$1(func2, wait = 500, immediate = true) { if (immediate) { - if (!flag) { - flag = true; - typeof func === "function" && func(); + if (!flag$1) { + flag$1 = true; + typeof func2 === "function" && func2(); setTimeout(() => { - flag = false; + flag$1 = false; }, wait); } } else { - if (!flag) { - flag = true; + if (!flag$1) { + flag$1 = true; setTimeout(() => { - flag = false; - typeof func === "function" && func(); + flag$1 = false; + typeof func2 === "function" && func2(); }, wait); } } @@ -8830,24 +8878,24 @@ const zIndex = { }; function wranning(str) { { - index.__f__("warn", "at node_modules/uview-ui/index.js:13", str); + index$1.__f__("warn", "at node_modules/uview-ui/index.js:13", str); } } const $u = { - queryParams, - route, - timeFormat, - date: timeFormat, + queryParams: queryParams$1, + route: route$1, + timeFormat: timeFormat$1, + date: timeFormat$1, // 另名date - timeFrom, + timeFrom: timeFrom$1, colorGradient: colorGradient$1.colorGradient, colorToRgba: colorGradient$1.colorToRgba, - guid, + guid: guid$1, color, - sys, - os, - type2icon, - randomArray, + sys: sys$1, + os: os$1, + type2icon: type2icon$1, + randomArray: randomArray$1, wranning, get: http.get, post: http.post, @@ -8855,35 +8903,1478 @@ const $u = { "delete": http.delete, hexToRgb: colorGradient$1.hexToRgb, rgbToHex: colorGradient$1.rgbToHex, - test, - random, - deepClone, - deepMerge, + test: test$1, + random: random$1, + deepClone: deepClone$1, + deepMerge: deepMerge$1, getParent, - $parent, - addUnit, - trim, + $parent: $parent$1, + addUnit: addUnit$1, + trim: trim$1, type: ["primary", "success", "error", "warning", "info"], http, - toast, + toast: toast$1, config, // uView配置信息相关,比如版本号 zIndex, - debounce, - throttle + debounce: debounce$1, + throttle: throttle$1 }; -index.$u = $u; +index$1.$u = $u; const createHook = (lifecycle) => (hook, target = getCurrentInstance()) => { !isInSSRComponentSetup && injectHook(lifecycle, hook, target); }; const onShow = /* @__PURE__ */ createHook(ON_SHOW); const onLoad = /* @__PURE__ */ createHook(ON_LOAD); +const mpMixin = { + // 将自定义节点设置成虚拟的(去掉自定义组件包裹层),更加接近Vue组件的表现,能更好的使用flex属性 + options: { + virtualHost: true + } +}; +function email(value) { + return /^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/.test(value); +} +function mobile(value) { + return /^1([3589]\d|4[5-9]|6[1-2,4-7]|7[0-8])\d{8}$/.test(value); +} +function url(value) { + return /^((https|http|ftp|rtsp|mms):\/\/)(([0-9a-zA-Z_!~*'().&=+$%-]+: )?[0-9a-zA-Z_!~*'().&=+$%-]+@)?(([0-9]{1,3}.){3}[0-9]{1,3}|([0-9a-zA-Z_!~*'()-]+.)*([0-9a-zA-Z][0-9a-zA-Z-]{0,61})?[0-9a-zA-Z].[a-zA-Z]{2,6})(:[0-9]{1,4})?((\/?)|(\/[0-9a-zA-Z_!~*'().;?:@&=+$,%#-]+)+\/?)$/.test(value); +} +function date(value) { + if (!value) + return false; + if (number(value)) + value = +value; + return !/Invalid|NaN/.test(new Date(value).toString()); +} +function dateISO(value) { + return /^\d{4}[\/\-](0?[1-9]|1[012])[\/\-](0?[1-9]|[12][0-9]|3[01])$/.test(value); +} +function number(value) { + return /^[\+-]?(\d+\.?\d*|\.\d+|\d\.\d+e\+\d+)$/.test(value); +} +function string(value) { + return typeof value === "string"; +} +function digits(value) { + return /^\d+$/.test(value); +} +function idCard(value) { + return /^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$/.test( + value + ); +} +function carNo(value) { + const xreg = /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}(([0-9]{5}[DF]$)|([DF][A-HJ-NP-Z0-9][0-9]{4}$))/; + const creg = /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}[A-HJ-NP-Z0-9]{4}[A-HJ-NP-Z0-9挂学警港澳]{1}$/; + if (value.length === 7) { + return creg.test(value); + } + if (value.length === 8) { + return xreg.test(value); + } + return false; +} +function amount(value) { + return /^[1-9]\d*(,\d{3})*(\.\d{1,2})?$|^0\.\d{1,2}$/.test(value); +} +function chinese(value) { + const reg = /^[\u4e00-\u9fa5]+$/gi; + return reg.test(value); +} +function letter(value) { + return /^[a-zA-Z]*$/.test(value); +} +function enOrNum(value) { + const reg = /^[0-9a-zA-Z]*$/g; + return reg.test(value); +} +function contains(value, param) { + return value.indexOf(param) >= 0; +} +function range$1(value, param) { + return value >= param[0] && value <= param[1]; +} +function rangeLength(value, param) { + return value.length >= param[0] && value.length <= param[1]; +} +function landline(value) { + const reg = /^\d{3,4}-\d{7,8}(-\d{3,4})?$/; + return reg.test(value); +} +function empty(value) { + switch (typeof value) { + case "undefined": + return true; + case "string": + if (value.replace(/(^[ \t\n\r]*)|([ \t\n\r]*$)/g, "").length == 0) + return true; + break; + case "boolean": + if (!value) + return true; + break; + case "number": + if (value === 0 || isNaN(value)) + return true; + break; + case "object": + if (value === null || value.length === 0) + return true; + for (const i in value) { + return false; + } + return true; + } + return false; +} +function jsonString(value) { + if (typeof value === "string") { + try { + const obj = JSON.parse(value); + if (typeof obj === "object" && obj) { + return true; + } + return false; + } catch (e2) { + return false; + } + } + return false; +} +function array(value) { + if (typeof Array.isArray === "function") { + return Array.isArray(value); + } + return Object.prototype.toString.call(value) === "[object Array]"; +} +function object(value) { + return Object.prototype.toString.call(value) === "[object Object]"; +} +function code(value, len = 6) { + return new RegExp(`^\\d{${len}}$`).test(value); +} +function func(value) { + return typeof value === "function"; +} +function promise(value) { + return object(value) && func(value.then) && func(value.catch); +} +function image(value) { + const newValue = value.split("?")[0]; + const IMAGE_REGEXP = /\.(jpeg|jpg|gif|png|svg|webp|jfif|bmp|dpg)/i; + return IMAGE_REGEXP.test(newValue); +} +function video(value) { + const VIDEO_REGEXP = /\.(mp4|mpg|mpeg|dat|asf|avi|rm|rmvb|mov|wmv|flv|mkv|m3u8)/i; + return VIDEO_REGEXP.test(value); +} +function regExp(o2) { + return o2 && Object.prototype.toString.call(o2) === "[object RegExp]"; +} +const test = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({ + __proto__: null, + amount, + array, + carNo, + chinese, + code, + contains, + date, + dateISO, + digits, + email, + empty, + enOrNum, + func, + idCard, + image, + jsonString, + landline, + letter, + mobile, + number, + object, + promise, + range: range$1, + rangeLength, + regExp, + string, + url, + video +}, Symbol.toStringTag, { value: "Module" })); +function strip(num, precision = 15) { + return +parseFloat(Number(num).toPrecision(precision)); +} +function digitLength(num) { + const eSplit = num.toString().split(/[eE]/); + const len = (eSplit[0].split(".")[1] || "").length - +(eSplit[1] || 0); + return len > 0 ? len : 0; +} +function float2Fixed(num) { + if (num.toString().indexOf("e") === -1) { + return Number(num.toString().replace(".", "")); + } + const dLen = digitLength(num); + return dLen > 0 ? strip(Number(num) * Math.pow(10, dLen)) : Number(num); +} +function checkBoundary(num) { + { + if (num > Number.MAX_SAFE_INTEGER || num < Number.MIN_SAFE_INTEGER) { + index$1.__f__("warn", "at node_modules/@climblee/uv-ui/libs/function/digit.js:45", `${num} 超出了精度限制,结果可能不正确`); + } + } +} +function iteratorOperation(arr, operation) { + const [num1, num2, ...others] = arr; + let res = operation(num1, num2); + others.forEach((num) => { + res = operation(res, num); + }); + return res; +} +function times(...nums) { + if (nums.length > 2) { + return iteratorOperation(nums, times); + } + const [num1, num2] = nums; + const num1Changed = float2Fixed(num1); + const num2Changed = float2Fixed(num2); + const baseNum = digitLength(num1) + digitLength(num2); + const leftValue = num1Changed * num2Changed; + checkBoundary(leftValue); + return leftValue / Math.pow(10, baseNum); +} +function divide(...nums) { + if (nums.length > 2) { + return iteratorOperation(nums, divide); + } + const [num1, num2] = nums; + const num1Changed = float2Fixed(num1); + const num2Changed = float2Fixed(num2); + checkBoundary(num1Changed); + checkBoundary(num2Changed); + return times(num1Changed / num2Changed, strip(Math.pow(10, digitLength(num2) - digitLength(num1)))); +} +function round(num, ratio) { + const base = Math.pow(10, ratio); + let result = divide(Math.round(Math.abs(times(num, base))), base); + if (num < 0 && result !== 0) { + result = times(result, -1); + } + return result; +} +function range(min = 0, max = 0, value = 0) { + return Math.max(min, Math.min(max, Number(value))); +} +function getPx(value, unit = false) { + if (number(value)) { + return unit ? `${value}px` : Number(value); + } + if (/(rpx|upx)$/.test(value)) { + return unit ? `${index$1.upx2px(parseInt(value))}px` : Number(index$1.upx2px(parseInt(value))); + } + return unit ? `${parseInt(value)}px` : parseInt(value); +} +function sleep(value = 30) { + return new Promise((resolve2) => { + setTimeout(() => { + resolve2(); + }, value); + }); +} +function os() { + return index$1.getSystemInfoSync().platform.toLowerCase(); +} +function sys() { + return index$1.getSystemInfoSync(); +} +function random(min, max) { + if (min >= 0 && max > 0 && max >= min) { + const gab = max - min + 1; + return Math.floor(Math.random() * gab + min); + } + return 0; +} +function guid(len = 32, firstU = true, radix = null) { + const chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""); + const uuid = []; + radix = radix || chars.length; + if (len) { + for (let i = 0; i < len; i++) + uuid[i] = chars[0 | Math.random() * radix]; + } else { + let r; + uuid[8] = uuid[13] = uuid[18] = uuid[23] = "-"; + uuid[14] = "4"; + for (let i = 0; i < 36; i++) { + if (!uuid[i]) { + r = 0 | Math.random() * 16; + uuid[i] = chars[i == 19 ? r & 3 | 8 : r]; + } + } + } + if (firstU) { + uuid.shift(); + return `u${uuid.join("")}`; + } + return uuid.join(""); +} +function $parent(name = void 0) { + let parent = this.$parent; + while (parent) { + if (parent.$options && parent.$options.name !== name) { + parent = parent.$parent; + } else { + return parent; + } + } + return false; +} +function addStyle(customStyle, target = "object") { + if (empty(customStyle) || typeof customStyle === "object" && target === "object" || target === "string" && typeof customStyle === "string") { + return customStyle; + } + if (target === "object") { + customStyle = trim(customStyle); + const styleArray = customStyle.split(";"); + const style = {}; + for (let i = 0; i < styleArray.length; i++) { + if (styleArray[i]) { + const item = styleArray[i].split(":"); + style[trim(item[0])] = trim(item[1]); + } + } + return style; + } + let string2 = ""; + for (const i in customStyle) { + const key = i.replace(/([A-Z])/g, "-$1").toLowerCase(); + string2 += `${key}:${customStyle[i]};`; + } + return trim(string2); +} +function addUnit(value = "auto", unit = ((_b) => (_b = ((_a) => (_a = index$1 == null ? void 0 : index$1.$uv) == null ? void 0 : _a.config)()) == null ? void 0 : _b.unit)() ? ((_d) => (_d = ((_c) => (_c = index$1 == null ? void 0 : index$1.$uv) == null ? void 0 : _c.config)()) == null ? void 0 : _d.unit)() : "px") { + value = String(value); + return number(value) ? `${value}${unit}` : value; +} +function deepClone(obj, cache = /* @__PURE__ */ new WeakMap()) { + if (obj === null || typeof obj !== "object") + return obj; + if (cache.has(obj)) + return cache.get(obj); + let clone2; + if (obj instanceof Date) { + clone2 = new Date(obj.getTime()); + } else if (obj instanceof RegExp) { + clone2 = new RegExp(obj); + } else if (obj instanceof Map) { + clone2 = new Map(Array.from(obj, ([key, value]) => [key, deepClone(value, cache)])); + } else if (obj instanceof Set) { + clone2 = new Set(Array.from(obj, (value) => deepClone(value, cache))); + } else if (Array.isArray(obj)) { + clone2 = obj.map((value) => deepClone(value, cache)); + } else if (Object.prototype.toString.call(obj) === "[object Object]") { + clone2 = Object.create(Object.getPrototypeOf(obj)); + cache.set(obj, clone2); + for (const [key, value] of Object.entries(obj)) { + clone2[key] = deepClone(value, cache); + } + } else { + clone2 = Object.assign({}, obj); + } + cache.set(obj, clone2); + return clone2; +} +function deepMerge(target = {}, source = {}) { + target = deepClone(target); + if (typeof target !== "object" || target === null || typeof source !== "object" || source === null) + return target; + const merged = Array.isArray(target) ? target.slice() : Object.assign({}, target); + for (const prop in source) { + if (!source.hasOwnProperty(prop)) + continue; + const sourceValue = source[prop]; + const targetValue = merged[prop]; + if (sourceValue instanceof Date) { + merged[prop] = new Date(sourceValue); + } else if (sourceValue instanceof RegExp) { + merged[prop] = new RegExp(sourceValue); + } else if (sourceValue instanceof Map) { + merged[prop] = new Map(sourceValue); + } else if (sourceValue instanceof Set) { + merged[prop] = new Set(sourceValue); + } else if (typeof sourceValue === "object" && sourceValue !== null) { + merged[prop] = deepMerge(targetValue, sourceValue); + } else { + merged[prop] = sourceValue; + } + } + return merged; +} +function error(err) { + { + index$1.__f__("error", "at node_modules/@climblee/uv-ui/libs/function/index.js:250", `uvui提示:${err}`); + } +} +function randomArray(array2 = []) { + return array2.sort(() => Math.random() - 0.5); +} +if (!String.prototype.padStart) { + String.prototype.padStart = function(maxLength, fillString = " ") { + if (Object.prototype.toString.call(fillString) !== "[object String]") { + throw new TypeError( + "fillString must be String" + ); + } + const str = this; + if (str.length >= maxLength) + return String(str); + const fillLength = maxLength - str.length; + let times2 = Math.ceil(fillLength / fillString.length); + while (times2 >>= 1) { + fillString += fillString; + if (times2 === 1) { + fillString += fillString; + } + } + return fillString.slice(0, fillLength) + str; + }; +} +function timeFormat(dateTime = null, formatStr = "yyyy-mm-dd") { + let date2; + if (!dateTime) { + date2 = /* @__PURE__ */ new Date(); + } else if (/^\d{10}$/.test(dateTime == null ? void 0 : dateTime.toString().trim())) { + date2 = new Date(dateTime * 1e3); + } else if (typeof dateTime === "string" && /^\d+$/.test(dateTime.trim())) { + date2 = new Date(Number(dateTime)); + } else if (typeof dateTime === "string" && dateTime.includes("-") && !dateTime.includes("T")) { + date2 = new Date(dateTime.replace(/-/g, "/")); + } else { + date2 = new Date(dateTime); + } + const timeSource = { + "y": date2.getFullYear().toString(), + // 年 + "m": (date2.getMonth() + 1).toString().padStart(2, "0"), + // 月 + "d": date2.getDate().toString().padStart(2, "0"), + // 日 + "h": date2.getHours().toString().padStart(2, "0"), + // 时 + "M": date2.getMinutes().toString().padStart(2, "0"), + // 分 + "s": date2.getSeconds().toString().padStart(2, "0") + // 秒 + // 有其他格式化字符需求可以继续添加,必须转化成字符串 + }; + for (const key in timeSource) { + const [ret] = new RegExp(`${key}+`).exec(formatStr) || []; + if (ret) { + const beginIndex = key === "y" && ret.length === 2 ? 2 : 0; + formatStr = formatStr.replace(ret, timeSource[key].slice(beginIndex)); + } + } + return formatStr; +} +function timeFrom(timestamp = null, format = "yyyy-mm-dd") { + if (timestamp == null) + timestamp = Number(/* @__PURE__ */ new Date()); + timestamp = parseInt(timestamp); + if (timestamp.toString().length == 10) + timestamp *= 1e3; + let timer = (/* @__PURE__ */ new Date()).getTime() - timestamp; + timer = parseInt(timer / 1e3); + let tips = ""; + switch (true) { + case timer < 300: + tips = "刚刚"; + break; + case (timer >= 300 && timer < 3600): + tips = `${parseInt(timer / 60)}分钟前`; + break; + case (timer >= 3600 && timer < 86400): + tips = `${parseInt(timer / 3600)}小时前`; + break; + case (timer >= 86400 && timer < 2592e3): + tips = `${parseInt(timer / 86400)}天前`; + break; + default: + if (format === false) { + if (timer >= 2592e3 && timer < 365 * 86400) { + tips = `${parseInt(timer / (86400 * 30))}个月前`; + } else { + tips = `${parseInt(timer / (86400 * 365))}年前`; + } + } else { + tips = timeFormat(timestamp, format); + } + } + return tips; +} +function trim(str, pos = "both") { + str = String(str); + if (pos == "both") { + return str.replace(/^\s+|\s+$/g, ""); + } + if (pos == "left") { + return str.replace(/^\s*/, ""); + } + if (pos == "right") { + return str.replace(/(\s*$)/g, ""); + } + if (pos == "all") { + return str.replace(/\s+/g, ""); + } + return str; +} +function queryParams(data = {}, isPrefix = true, arrayFormat = "brackets") { + const prefix = isPrefix ? "?" : ""; + const _result = []; + if (["indices", "brackets", "repeat", "comma"].indexOf(arrayFormat) == -1) + arrayFormat = "brackets"; + for (const key in data) { + const value = data[key]; + if (["", void 0, null].indexOf(value) >= 0) { + continue; + } + if (value.constructor === Array) { + switch (arrayFormat) { + case "indices": + for (let i = 0; i < value.length; i++) { + _result.push(`${key}[${i}]=${value[i]}`); + } + break; + case "brackets": + value.forEach((_value) => { + _result.push(`${key}[]=${_value}`); + }); + break; + case "repeat": + value.forEach((_value) => { + _result.push(`${key}=${_value}`); + }); + break; + case "comma": + let commaStr = ""; + value.forEach((_value) => { + commaStr += (commaStr ? "," : "") + _value; + }); + _result.push(`${key}=${commaStr}`); + break; + default: + value.forEach((_value) => { + _result.push(`${key}[]=${_value}`); + }); + } + } else { + _result.push(`${key}=${value}`); + } + } + return _result.length ? prefix + _result.join("&") : ""; +} +function toast(title, duration = 2e3) { + index$1.showToast({ + title: String(title), + icon: "none", + duration + }); +} +function type2icon(type = "success", fill = false) { + if (["primary", "info", "error", "warning", "success"].indexOf(type) == -1) + type = "success"; + let iconName = ""; + switch (type) { + case "primary": + iconName = "info-circle"; + break; + case "info": + iconName = "info-circle"; + break; + case "error": + iconName = "close-circle"; + break; + case "warning": + iconName = "error-circle"; + break; + case "success": + iconName = "checkmark-circle"; + break; + default: + iconName = "checkmark-circle"; + } + if (fill) + iconName += "-fill"; + return iconName; +} +function priceFormat(number2, decimals = 0, decimalPoint = ".", thousandsSeparator = ",") { + number2 = `${number2}`.replace(/[^0-9+-Ee.]/g, ""); + const n2 = !isFinite(+number2) ? 0 : +number2; + const prec = !isFinite(+decimals) ? 0 : Math.abs(decimals); + const sep = typeof thousandsSeparator === "undefined" ? "," : thousandsSeparator; + const dec = typeof decimalPoint === "undefined" ? "." : decimalPoint; + let s2 = ""; + s2 = (prec ? round(n2, prec) + "" : `${Math.round(n2)}`).split("."); + const re = /(-?\d+)(\d{3})/; + while (re.test(s2[0])) { + s2[0] = s2[0].replace(re, `$1${sep}$2`); + } + if ((s2[1] || "").length < prec) { + s2[1] = s2[1] || ""; + s2[1] += new Array(prec - s2[1].length + 1).join("0"); + } + return s2.join(dec); +} +function getDuration(value, unit = true) { + const valueNum = parseInt(value); + if (unit) { + if (/s$/.test(value)) + return value; + return value > 30 ? `${value}ms` : `${value}s`; + } + if (/ms$/.test(value)) + return valueNum; + if (/s$/.test(value)) + return valueNum > 30 ? valueNum : valueNum * 1e3; + return valueNum; +} +function padZero(value) { + return `00${value}`.slice(-2); +} +function formValidate(instance, event) { + const formItem = $parent.call(instance, "uv-form-item"); + const form = $parent.call(instance, "uv-form"); + if (formItem && form) { + form.validateField(formItem.prop, () => { + }, event); + } +} +function getProperty(obj, key) { + if (!obj) { + return; + } + if (typeof key !== "string" || key === "") { + return ""; + } + if (key.indexOf(".") !== -1) { + const keys = key.split("."); + let firstObj = obj[keys[0]] || {}; + for (let i = 1; i < keys.length; i++) { + if (firstObj) { + firstObj = firstObj[keys[i]]; + } + } + return firstObj; + } + return obj[key]; +} +function setProperty(obj, key, value) { + if (!obj) { + return; + } + const inFn = function(_obj, keys, v) { + if (keys.length === 1) { + _obj[keys[0]] = v; + return; + } + while (keys.length > 1) { + const k = keys[0]; + if (!_obj[k] || typeof _obj[k] !== "object") { + _obj[k] = {}; + } + keys.shift(); + inFn(_obj[k], keys, v); + } + }; + if (typeof key !== "string" || key === "") + ; + else if (key.indexOf(".") !== -1) { + const keys = key.split("."); + inFn(obj, keys, value); + } else { + obj[key] = value; + } +} +function page() { + var _a; + const pages2 = getCurrentPages(); + const route2 = (_a = pages2[pages2.length - 1]) == null ? void 0 : _a.route; + return `/${route2 ? route2 : ""}`; +} +function pages() { + const pages2 = getCurrentPages(); + return pages2; +} +function getHistoryPage(back = 0) { + const pages2 = getCurrentPages(); + const len = pages2.length; + return pages2[len - 1 + back]; +} +function setConfig({ + props: props2 = {}, + config: config2 = {}, + color: color2 = {}, + zIndex: zIndex2 = {} +}) { + const { + deepMerge: deepMerge2 + } = index$1.$uv; + index$1.$uv.config = deepMerge2(index$1.$uv.config, config2); + index$1.$uv.props = deepMerge2(index$1.$uv.props, props2); + index$1.$uv.color = deepMerge2(index$1.$uv.color, color2); + index$1.$uv.zIndex = deepMerge2(index$1.$uv.zIndex, zIndex2); +} +const index = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({ + __proto__: null, + $parent, + addStyle, + addUnit, + deepClone, + deepMerge, + error, + formValidate, + getDuration, + getHistoryPage, + getProperty, + getPx, + guid, + os, + padZero, + page, + pages, + priceFormat, + queryParams, + random, + randomArray, + range, + setConfig, + setProperty, + sleep, + sys, + timeFormat, + timeFrom, + toast, + trim, + type2icon +}, Symbol.toStringTag, { value: "Module" })); +class Router2 { + constructor() { + this.config = { + type: "navigateTo", + url: "", + delta: 1, + // navigateBack页面后退时,回退的层数 + params: {}, + // 传递的参数 + animationType: "pop-in", + // 窗口动画,只在APP有效 + animationDuration: 300, + // 窗口动画持续时间,单位毫秒,只在APP有效 + intercept: false, + // 是否需要拦截 + events: {} + // 页面间通信接口,用于监听被打开页面发送到当前页面的数据。hbuilderx 2.8.9+ 开始支持。 + }; + this.route = this.route.bind(this); + } + // 判断url前面是否有"/",如果没有则加上,否则无法跳转 + addRootPath(url2) { + return url2[0] === "/" ? url2 : `/${url2}`; + } + // 整合路由参数 + mixinParam(url2, params) { + url2 = url2 && this.addRootPath(url2); + let query = ""; + if (/.*\/.*\?.*=.*/.test(url2)) { + query = queryParams(params, false); + return url2 += `&${query}`; + } + query = queryParams(params); + return url2 += query; + } + // 对外的方法名称 + async route(options = {}, params = {}) { + let mergeConfig = {}; + if (typeof options === "string") { + mergeConfig.url = this.mixinParam(options, params); + mergeConfig.type = "navigateTo"; + } else { + mergeConfig = deepMerge(this.config, options); + mergeConfig.url = this.mixinParam(options.url, options.params); + } + if (mergeConfig.url === page()) + return; + if (params.intercept) { + mergeConfig.intercept = params.intercept; + } + mergeConfig.params = params; + mergeConfig = deepMerge(this.config, mergeConfig); + if (typeof mergeConfig.intercept === "function") { + const isNext = await new Promise((resolve2, reject) => { + mergeConfig.intercept(mergeConfig, resolve2); + }); + isNext && this.openPage(mergeConfig); + } else { + this.openPage(mergeConfig); + } + } + // 执行路由跳转 + openPage(config2) { + const { + url: url2, + type, + delta, + animationType, + animationDuration, + events + } = config2; + if (config2.type == "navigateTo" || config2.type == "to") { + index$1.navigateTo({ + url: url2, + animationType, + animationDuration, + events + }); + } + if (config2.type == "redirectTo" || config2.type == "redirect") { + index$1.redirectTo({ + url: url2 + }); + } + if (config2.type == "switchTab" || config2.type == "tab") { + index$1.switchTab({ + url: url2 + }); + } + if (config2.type == "reLaunch" || config2.type == "launch") { + index$1.reLaunch({ + url: url2 + }); + } + if (config2.type == "navigateBack" || config2.type == "back") { + index$1.navigateBack({ + delta + }); + } + } +} +const route = new Router2().route; +let timeout = null; +function debounce(func2, wait = 500, immediate = false) { + if (timeout !== null) + clearTimeout(timeout); + if (immediate) { + const callNow = !timeout; + timeout = setTimeout(() => { + timeout = null; + }, wait); + if (callNow) + typeof func2 === "function" && func2(); + } else { + timeout = setTimeout(() => { + typeof func2 === "function" && func2(); + }, wait); + } +} +let flag; +function throttle(func2, wait = 500, immediate = true) { + if (immediate) { + if (!flag) { + flag = true; + typeof func2 === "function" && func2(); + setTimeout(() => { + flag = false; + }, wait); + } + } else if (!flag) { + flag = true; + setTimeout(() => { + flag = false; + typeof func2 === "function" && func2(); + }, wait); + } +} +const mixin = { + // 定义每个组件都可能需要用到的外部样式以及类名 + props: { + // 每个组件都有的父组件传递的样式,可以为字符串或者对象形式 + customStyle: { + type: [Object, String], + default: () => ({}) + }, + customClass: { + type: String, + default: "" + }, + // 跳转的页面路径 + url: { + type: String, + default: "" + }, + // 页面跳转的类型 + linkType: { + type: String, + default: "navigateTo" + } + }, + data() { + return {}; + }, + onLoad() { + this.$uv.getRect = this.$uvGetRect; + }, + created() { + this.$uv.getRect = this.$uvGetRect; + }, + computed: { + $uv() { + var _a, _b; + return { + ...index, + test, + route, + debounce, + throttle, + unit: (_b = (_a = index$1 == null ? void 0 : index$1.$uv) == null ? void 0 : _a.config) == null ? void 0 : _b.unit + }; + }, + /** + * 生成bem规则类名 + * 由于微信小程序,H5,nvue之间绑定class的差异,无法通过:class="[bem()]"的形式进行同用 + * 故采用如下折中做法,最后返回的是数组(一般平台)或字符串(支付宝和字节跳动平台),类似['a', 'b', 'c']或'a b c'的形式 + * @param {String} name 组件名称 + * @param {Array} fixed 一直会存在的类名 + * @param {Array} change 会根据变量值为true或者false而出现或者隐藏的类名 + * @returns {Array|string} + */ + bem() { + return function(name, fixed, change) { + const prefix = `uv-${name}--`; + const classes = {}; + if (fixed) { + fixed.map((item) => { + classes[prefix + this[item]] = true; + }); + } + if (change) { + change.map((item) => { + this[item] ? classes[prefix + item] = this[item] : delete classes[prefix + item]; + }); + } + return Object.keys(classes); + }; + } + }, + methods: { + // 跳转某一个页面 + openPage(urlKey = "url") { + const url2 = this[urlKey]; + if (url2) { + index$1[this.linkType]({ + url: url2 + }); + } + }, + // 查询节点信息 + // 目前此方法在支付宝小程序中无法获取组件跟接点的尺寸,为支付宝的bug(2020-07-21) + // 解决办法为在组件根部再套一个没有任何作用的view元素 + $uvGetRect(selector, all) { + return new Promise((resolve2) => { + index$1.createSelectorQuery().in(this)[all ? "selectAll" : "select"](selector).boundingClientRect((rect) => { + if (all && Array.isArray(rect) && rect.length) { + resolve2(rect); + } + if (!all && rect) { + resolve2(rect); + } + }).exec(); + }); + }, + getParentData(parentName = "") { + if (!this.parent) + this.parent = {}; + this.parent = this.$uv.$parent.call(this, parentName); + if (this.parent.children) { + this.parent.children.indexOf(this) === -1 && this.parent.children.push(this); + } + if (this.parent && this.parentData) { + Object.keys(this.parentData).map((key) => { + this.parentData[key] = this.parent[key]; + }); + } + }, + // 阻止事件冒泡 + preventEvent(e2) { + e2 && typeof e2.stopPropagation === "function" && e2.stopPropagation(); + }, + // 空操作 + noop(e2) { + this.preventEvent(e2); + } + }, + onReachBottom() { + index$1.$emit("uvOnReachBottom"); + }, + beforeDestroy() { + if (this.parent && array(this.parent.children)) { + const childrenList = this.parent.children; + childrenList.map((child, index2) => { + if (child === this) { + childrenList.splice(index2, 1); + } + }); + } + }, + // 兼容vue3 + unmounted() { + if (this.parent && array(this.parent.children)) { + const childrenList = this.parent.children; + childrenList.map((child, index2) => { + if (child === this) { + childrenList.splice(index2, 1); + } + }); + } + } +}; +const props$3 = { + props: { + // 显示的内容,数组 + text: { + type: [Array, String], + default: () => [] + }, + // 通告滚动模式,row-横向滚动,column-竖向滚动 + direction: { + type: String, + default: "row" + }, + // direction = row时,是否使用步进形式滚动 + step: { + type: Boolean, + default: false + }, + // 是否显示左侧的音量图标 + icon: { + type: [String, Boolean, null], + default: "volume" + }, + // 通告模式,link-显示右箭头,closable-显示右侧关闭图标 + mode: { + type: String, + default: "" + }, + // 文字颜色,各图标也会使用文字颜色 + color: { + type: String, + default: "#f9ae3d" + }, + // 背景颜色 + bgColor: { + type: String, + default: "#fdf6ec" + }, + // 水平滚动时的滚动速度,即每秒滚动多少px(px),这有利于控制文字无论多少时,都能有一个恒定的速度 + speed: { + type: [String, Number], + default: 80 + }, + // 字体大小 + fontSize: { + type: [String, Number], + default: 14 + }, + // 滚动一个周期的时间长,单位ms + duration: { + type: [String, Number], + default: 2e3 + }, + // 跳转的页面路径 + url: { + type: String, + default: "" + }, + // 页面跳转的类型 + linkType: { + type: String, + default: "navigateTo" + }, + // 是否禁止用手滑动切换 + // 目前HX2.6.11,只支持App 2.5.5+、H5 2.5.5+、支付宝小程序、字节跳动小程序 + disableTouch: { + type: Boolean, + default: true + }, + // 是否禁止滚动,仅`direction="column"生效` + disableScroll: { + type: Boolean, + default: false + }, + ...(_f = (_e = index$1.$uv) == null ? void 0 : _e.props) == null ? void 0 : _f.noticeBar + } +}; +const icons = { + "uvicon-level": "e68f", + "uvicon-checkbox-mark": "e659", + "uvicon-folder": "e694", + "uvicon-movie": "e67c", + "uvicon-star-fill": "e61e", + "uvicon-star": "e618", + "uvicon-phone-fill": "e6ac", + "uvicon-phone": "e6ba", + "uvicon-apple-fill": "e635", + "uvicon-backspace": "e64d", + "uvicon-attach": "e640", + "uvicon-empty-data": "e671", + "uvicon-empty-address": "e68a", + "uvicon-empty-favor": "e662", + "uvicon-empty-car": "e657", + "uvicon-empty-order": "e66b", + "uvicon-empty-list": "e672", + "uvicon-empty-search": "e677", + "uvicon-empty-permission": "e67d", + "uvicon-empty-news": "e67e", + "uvicon-empty-history": "e685", + "uvicon-empty-coupon": "e69b", + "uvicon-empty-page": "e60e", + "uvicon-empty-wifi-off": "e6cc", + "uvicon-reload": "e627", + "uvicon-order": "e695", + "uvicon-server-man": "e601", + "uvicon-search": "e632", + "uvicon-more-dot-fill": "e66f", + "uvicon-scan": "e631", + "uvicon-map": "e665", + "uvicon-map-fill": "e6a8", + "uvicon-tags": "e621", + "uvicon-tags-fill": "e613", + "uvicon-eye": "e664", + "uvicon-eye-fill": "e697", + "uvicon-eye-off": "e69c", + "uvicon-eye-off-outline": "e688", + "uvicon-mic": "e66d", + "uvicon-mic-off": "e691", + "uvicon-calendar": "e65c", + "uvicon-trash": "e623", + "uvicon-trash-fill": "e6ce", + "uvicon-play-left": "e6bf", + "uvicon-play-right": "e6b3", + "uvicon-minus": "e614", + "uvicon-plus": "e625", + "uvicon-info-circle": "e69f", + "uvicon-info-circle-fill": "e6a7", + "uvicon-question-circle": "e622", + "uvicon-question-circle-fill": "e6bc", + "uvicon-close": "e65a", + "uvicon-checkmark": "e64a", + "uvicon-checkmark-circle": "e643", + "uvicon-checkmark-circle-fill": "e668", + "uvicon-setting": "e602", + "uvicon-setting-fill": "e6d0", + "uvicon-heart": "e6a2", + "uvicon-heart-fill": "e68b", + "uvicon-camera": "e642", + "uvicon-camera-fill": "e650", + "uvicon-more-circle": "e69e", + "uvicon-more-circle-fill": "e684", + "uvicon-chat": "e656", + "uvicon-chat-fill": "e63f", + "uvicon-bag": "e647", + "uvicon-error-circle": "e66e", + "uvicon-error-circle-fill": "e655", + "uvicon-close-circle": "e64e", + "uvicon-close-circle-fill": "e666", + "uvicon-share": "e629", + "uvicon-share-fill": "e6bb", + "uvicon-share-square": "e6c4", + "uvicon-shopping-cart": "e6cb", + "uvicon-shopping-cart-fill": "e630", + "uvicon-bell": "e651", + "uvicon-bell-fill": "e604", + "uvicon-list": "e690", + "uvicon-list-dot": "e6a9", + "uvicon-zhifubao-circle-fill": "e617", + "uvicon-weixin-circle-fill": "e6cd", + "uvicon-weixin-fill": "e620", + "uvicon-qq-fill": "e608", + "uvicon-qq-circle-fill": "e6b9", + "uvicon-moments-circel-fill": "e6c2", + "uvicon-moments": "e6a0", + "uvicon-car": "e64f", + "uvicon-car-fill": "e648", + "uvicon-warning-fill": "e6c7", + "uvicon-warning": "e6c1", + "uvicon-clock-fill": "e64b", + "uvicon-clock": "e66c", + "uvicon-edit-pen": "e65d", + "uvicon-edit-pen-fill": "e679", + "uvicon-email": "e673", + "uvicon-email-fill": "e683", + "uvicon-minus-circle": "e6a5", + "uvicon-plus-circle": "e603", + "uvicon-plus-circle-fill": "e611", + "uvicon-file-text": "e687", + "uvicon-file-text-fill": "e67f", + "uvicon-pushpin": "e6d1", + "uvicon-pushpin-fill": "e6b6", + "uvicon-grid": "e68c", + "uvicon-grid-fill": "e698", + "uvicon-play-circle": "e6af", + "uvicon-play-circle-fill": "e62a", + "uvicon-pause-circle-fill": "e60c", + "uvicon-pause": "e61c", + "uvicon-pause-circle": "e696", + "uvicon-gift-fill": "e6b0", + "uvicon-gift": "e680", + "uvicon-kefu-ermai": "e660", + "uvicon-server-fill": "e610", + "uvicon-coupon-fill": "e64c", + "uvicon-coupon": "e65f", + "uvicon-integral": "e693", + "uvicon-integral-fill": "e6b1", + "uvicon-home-fill": "e68e", + "uvicon-home": "e67b", + "uvicon-account": "e63a", + "uvicon-account-fill": "e653", + "uvicon-thumb-down-fill": "e628", + "uvicon-thumb-down": "e60a", + "uvicon-thumb-up": "e612", + "uvicon-thumb-up-fill": "e62c", + "uvicon-lock-fill": "e6a6", + "uvicon-lock-open": "e68d", + "uvicon-lock-opened-fill": "e6a1", + "uvicon-lock": "e69d", + "uvicon-red-packet": "e6c3", + "uvicon-photo-fill": "e6b4", + "uvicon-photo": "e60d", + "uvicon-volume-off-fill": "e6c8", + "uvicon-volume-off": "e6bd", + "uvicon-volume-fill": "e624", + "uvicon-volume": "e605", + "uvicon-download": "e670", + "uvicon-arrow-up-fill": "e636", + "uvicon-arrow-down-fill": "e638", + "uvicon-play-left-fill": "e6ae", + "uvicon-play-right-fill": "e6ad", + "uvicon-arrow-downward": "e634", + "uvicon-arrow-leftward": "e63b", + "uvicon-arrow-rightward": "e644", + "uvicon-arrow-upward": "e641", + "uvicon-arrow-down": "e63e", + "uvicon-arrow-right": "e63c", + "uvicon-arrow-left": "e646", + "uvicon-arrow-up": "e633", + "uvicon-skip-back-left": "e6c5", + "uvicon-skip-forward-right": "e61f", + "uvicon-arrow-left-double": "e637", + "uvicon-man": "e675", + "uvicon-woman": "e626", + "uvicon-en": "e6b8", + "uvicon-twitte": "e607", + "uvicon-twitter-circle-fill": "e6cf" +}; +const props$2 = { + props: { + // 图标类名 + name: { + type: String, + default: "" + }, + // 图标颜色,可接受主题色 + color: { + type: String, + default: "#606266" + }, + // 字体大小,单位px + size: { + type: [String, Number], + default: "16px" + }, + // 是否显示粗体 + bold: { + type: Boolean, + default: false + }, + // 点击图标的时候传递事件出去的index(用于区分点击了哪一个) + index: { + type: [String, Number], + default: null + }, + // 触摸图标时的类名 + hoverClass: { + type: String, + default: "" + }, + // 自定义扩展前缀,方便用户扩展自己的图标库 + customPrefix: { + type: String, + default: "uvicon" + }, + // 图标右边或者下面的文字 + label: { + type: [String, Number], + default: "" + }, + // label的位置,只能右边或者下边 + labelPos: { + type: String, + default: "right" + }, + // label的大小 + labelSize: { + type: [String, Number], + default: "15px" + }, + // label的颜色 + labelColor: { + type: String, + default: "#606266" + }, + // label与图标的距离 + space: { + type: [String, Number], + default: "3px" + }, + // 图片的mode + imgMode: { + type: String, + default: "aspectFit" + }, + // 用于显示图片小图标时,图片的宽度 + width: { + type: [String, Number], + default: "" + }, + // 用于显示图片小图标时,图片的高度 + height: { + type: [String, Number], + default: "" + }, + // 用于解决某些情况下,让图标垂直居中的用途 + top: { + type: [String, Number], + default: 0 + }, + // 是否阻止事件传播 + stop: { + type: Boolean, + default: false + }, + ...(_h = (_g = index$1.$uv) == null ? void 0 : _g.props) == null ? void 0 : _h.icon + } +}; +const props$1 = { + props: { + // 显示的内容,字符串 + text: { + type: [Array], + default: "" + }, + // 是否显示左侧的音量图标 + icon: { + type: [String, Boolean, null], + default: "volume" + }, + // 通告模式,link-显示右箭头,closable-显示右侧关闭图标 + mode: { + type: String, + default: "" + }, + // 文字颜色,各图标也会使用文字颜色 + color: { + type: String, + default: "#f9ae3d" + }, + // 背景颜色 + bgColor: { + type: String, + default: "#fdf6ec" + }, + // 字体大小,单位px + fontSize: { + type: [String, Number], + default: 14 + }, + // 水平滚动时的滚动速度,即每秒滚动多少px(px),这有利于控制文字无论多少时,都能有一个恒定的速度 + speed: { + type: [String, Number], + default: 80 + }, + // direction = row时,是否使用步进形式滚动 + step: { + type: Boolean, + default: false + }, + // 滚动一个周期的时间长,单位ms + duration: { + type: [String, Number], + default: 1500 + }, + // 是否禁止用手滑动切换,仅`direction="column"生效` + // 目前HX2.6.11,只支持App 2.5.5+、H5 2.5.5+、支付宝小程序、字节跳动小程序 + disableTouch: { + type: Boolean, + default: true + }, + // 是否禁止滚动,仅`direction="column"生效` + disableScroll: { + type: Boolean, + default: false + }, + ...(_j = (_i = index$1.$uv) == null ? void 0 : _i.props) == null ? void 0 : _j.columnNotice + } +}; +const props = { + props: { + // 显示的内容,字符串 + text: { + type: String, + default: "" + }, + // 是否显示左侧的音量图标 + icon: { + type: [String, Boolean, null], + default: "volume" + }, + // 通告模式,link-显示右箭头,closable-显示右侧关闭图标 + mode: { + type: String, + default: "" + }, + // 文字颜色,各图标也会使用文字颜色 + color: { + type: String, + default: "#f9ae3d" + }, + // 背景颜色 + bgColor: { + type: String, + default: "#fdf6ec" + }, + // 字体大小,单位px + fontSize: { + type: [String, Number], + default: 14 + }, + // 水平滚动时的滚动速度,即每秒滚动多少px(rpx),这有利于控制文字无论多少时,都能有一个恒定的速度 + speed: { + type: [String, Number], + default: 80 + }, + ...(_l = (_k = index$1.$uv) == null ? void 0 : _k.props) == null ? void 0 : _l.rowNotice + } +}; exports._export_sfc = _export_sfc; exports.computed = computed; exports.createSSRApp = createSSRApp; exports.e = e; exports.f = f; -exports.index = index; +exports.icons = icons; +exports.index = index$1; +exports.mixin = mixin; +exports.mpMixin = mpMixin; exports.n = n; exports.nextTick$1 = nextTick$1; exports.o = o; @@ -8892,9 +10383,14 @@ exports.onMounted = onMounted; exports.onShow = onShow; exports.onUnmounted = onUnmounted; exports.p = p; +exports.props = props$3; +exports.props$1 = props$2; +exports.props$2 = props$1; +exports.props$3 = props; exports.reactive = reactive; exports.ref = ref; exports.resolveComponent = resolveComponent; +exports.s = s; exports.sr = sr; exports.t = t; exports.watch = watch; diff --git a/unpackage/dist/dev/mp-weixin/components/MapComponent.js b/unpackage/dist/dev/mp-weixin/components/MapComponent.js index 45acffc..d78471c 100644 --- a/unpackage/dist/dev/mp-weixin/components/MapComponent.js +++ b/unpackage/dist/dev/mp-weixin/components/MapComponent.js @@ -1,6 +1,14 @@ "use strict"; const common_vendor = require("../common/vendor.js"); const common_assets = require("../common/assets.js"); +if (!Array) { + const _easycom_uv_icon2 = common_vendor.resolveComponent("uv-icon"); + _easycom_uv_icon2(); +} +const _easycom_uv_icon = () => "../node-modules/@climblee/uv-ui/components/uv-icon/uv-icon.js"; +if (!Math) { + _easycom_uv_icon(); +} const _sfc_main = { __name: "MapComponent", props: { @@ -29,41 +37,179 @@ const _sfc_main = { "mapCenterChange" ], setup(__props, { expose: __expose, emit: __emit }) { + const collapseRef = common_vendor.ref(null); + common_vendor.ref([ + { + title: "扫码使用", + desc: "找到附近设备,扫描设备上的二维码" + }, + { + title: "免押金支付", + desc: "无需支付押金,使用支付分免押即可完成租借" + }, + { + title: "开始使用", + desc: "设备自动解锁,风扇弹出后取出即可开始使用" + }, + { + title: "归还设备", + desc: "使用完毕后,按照设备规格要求将风扇还入即可结束订单" + } + ]); const props = __props; const emit = __emit; - const mapKey = common_vendor.ref(0); - const mapZoom = common_vendor.ref(16); + const isLoading = common_vendor.ref(true); const mapCenter = common_vendor.ref({ longitude: 116.397128, latitude: 39.916527 }); - const loadPositionsTimer = common_vendor.ref(null); - const isMapInitialized = common_vendor.ref(false); - const updateMapCenter = (longitude, latitude) => { - if (mapCenter.value.longitude === longitude && mapCenter.value.latitude === latitude) { - return; - } - mapCenter.value = { longitude, latitude }; - mapZoom.value = 16; - common_vendor.nextTick$1(() => { - setTimeout(() => { - const mapContext = common_vendor.index.createMapContext("mainMap"); - if (mapContext) { - mapContext.setCenterOffset({ - longitude, - latitude, - success: () => { - }, - fail: () => { - mapContext.includePoints({ - points: [{ longitude, latitude }], - padding: [0, 0, 0, 0] - }); - } - }); + const mapZoom = common_vendor.ref(17); + const mapMarkers = common_vendor.ref([]); + const mapContext = common_vendor.ref(null); + const updateMapMarkers = () => { + mapMarkers.value = []; + if (props.userLocation) { + mapMarkers.value.push({ + id: 0, + // ID必须是数字 + // iconPath: '/static/scan-icon.png', + width: 32, + height: 32, + latitude: props.userLocation.latitude, + longitude: props.userLocation.longitude, + title: "我的位置", + callout: { + content: "我的位置", + color: "#ffffff", + fontSize: 12, + borderRadius: 4, + bgColor: "#2196F3", + padding: 6, + display: "BYCLICK" + // 点击时显示 + }, + customCallout: { + anchorX: 0, + anchorY: 0 } - }, 200); - }); + }); + } + if (props.filteredPositions && props.filteredPositions.length > 0) { + props.filteredPositions.forEach((pos, index) => { + if (pos.longitude && pos.latitude) { + const lat = parseFloat(pos.latitude); + const lng = parseFloat(pos.longitude); + if (lat >= -90 && lat <= 90 && lng >= -180 && lng <= 180) { + mapMarkers.value.push({ + id: index + 1, + // ID必须是数字,避免和用户位置的ID冲突 + // iconPath: '/static/scan-icon.png', + width: 30, + height: 30, + latitude: lat, + longitude: lng, + title: pos.name, + position: pos, + // 存储原始位置数据,用于事件处理 + callout: { + content: pos.name, + color: "#333333", + fontSize: 12, + borderRadius: 4, + bgColor: "#ffffff", + padding: 6, + display: "BYCLICK" + // 点击时显示 + } + }); + } else { + common_vendor.index.__f__("warn", "at components/MapComponent.vue:176", `忽略无效坐标: ${pos.name}, 纬度=${lat}, 经度=${lng}`); + } + } + }); + } + isLoading.value = false; + }; + const moveToLocation = (location) => { + if (!location || !location.longitude || !location.latitude) + return; + if (mapContext.value) { + mapContext.value.moveToLocation({ + longitude: location.longitude, + latitude: location.latitude, + success: () => { + common_vendor.index.__f__("log", "at components/MapComponent.vue:194", "地图已移动到指定位置"); + }, + fail: (error) => { + common_vendor.index.__f__("error", "at components/MapComponent.vue:197", "移动地图失败:", error); + } + }); + } + }; + common_vendor.watch(() => props.userLocation, (newLocation) => { + if (newLocation && newLocation.longitude && newLocation.latitude) { + mapCenter.value = { + longitude: newLocation.longitude, + latitude: newLocation.latitude + }; + updateMapMarkers(); + moveToLocation(newLocation); + } + }, { + immediate: true, + deep: true + }); + common_vendor.watch(() => props.filteredPositions, (newPositions) => { + updateMapMarkers(); + }, { + deep: true + }); + const onMapUpdated = () => { + isLoading.value = false; + }; + const onMapRegionChange = (e) => { + if (e.type === "end" && e.causedBy === "drag") { + if (mapContext.value) { + mapContext.value.getCenterLocation({ + success: (res) => { + if (res.longitude && res.latitude) { + mapCenter.value = { + longitude: res.longitude, + latitude: res.latitude + }; + emit("mapCenterChange", mapCenter.value); + } + } + }); + } + } + }; + const onMapMarkerTap = (e) => { + const markerId = e.markerId; + const marker = mapMarkers.value.find((item) => item.id === markerId); + if (marker) { + if (markerId === 0) { + common_vendor.index.showToast({ + title: "这是您的位置", + icon: "none" + }); + return; + } + if (marker.position) { + emit("markerTap", marker.position); + } + } + }; + const onCalloutTap = (e) => { + const markerId = e.markerId; + const marker = mapMarkers.value.find((item) => item.id === markerId); + if (marker && marker.position) { + emit("markerTap", marker.position); + } + }; + const onMapError = (error) => { + common_vendor.index.__f__("error", "at components/MapComponent.vue:283", "地图加载失败:", error); + isLoading.value = false; }; const handleRelocate = () => { emit("relocate"); @@ -74,121 +220,50 @@ const _sfc_main = { const handleShowList = () => { emit("showList"); }; - const handleMarkerTap = (e) => { - if (!e.detail || typeof e.detail.markerId === "undefined") { - return; - } - const markerId = e.detail.markerId; - if (markerId === 9999) { - common_vendor.index.showToast({ - title: "这是您的位置", - icon: "none" - }); - return; - } - const position = props.filteredPositions[markerId]; - if (position) { - emit("markerTap", position); - } - }; - const handleRegionChange = (e) => { - if (e.detail.type === "end") { - const { center } = e.detail; - if (!center || typeof center.longitude === "undefined" || typeof center.latitude === "undefined") { - return; - } - mapCenter.value = { - longitude: center.longitude, - latitude: center.latitude - }; - mapZoom.value = 16; - if (loadPositionsTimer.value) { - clearTimeout(loadPositionsTimer.value); - } - loadPositionsTimer.value = setTimeout(() => { - emit("mapCenterChange", mapCenter.value); - }, 500); - } - }; - const mapMarkers = common_vendor.computed(() => { - const markers = []; - props.filteredPositions.forEach((item, index) => { - if (item.longitude && item.latitude) { - markers.push({ - id: index, - longitude: parseFloat(item.longitude), - latitude: parseFloat(item.latitude), - title: item.name, - iconPath: "/static/scan-icon.png", - width: 30, - height: 30, - callout: { - content: item.name, - fontSize: 14, - borderRadius: 8, - bgColor: "#ffffff", - padding: 10, - display: "BYCLICK" - } - }); + common_vendor.onMounted(() => { + common_vendor.nextTick$1(() => { + mapContext.value = common_vendor.index.createMapContext("map"); + updateMapMarkers(); + if (collapseRef.value) { + collapseRef.value.init(); } }); - if (props.userLocation) { - markers.push({ - id: 9999, - // 特殊ID标识用户位置 - longitude: props.userLocation.longitude, - latitude: props.userLocation.latitude, - title: "我的位置", - iconPath: "/static/scan-icon.png", - width: 32, - height: 32, - callout: { - content: "我的位置", - fontSize: 14, - borderRadius: 8, - bgColor: "#2196F3", - color: "#ffffff", - padding: 10, - display: "BYCLICK" - } - }); - } - return markers; - }); - common_vendor.watch(() => props.userLocation, (newLocation) => { - if (newLocation && newLocation.longitude && newLocation.latitude && !isMapInitialized.value) { - updateMapCenter(newLocation.longitude, newLocation.latitude); - isMapInitialized.value = true; - } - }, { immediate: true, deep: true }); - common_vendor.onMounted(() => { }); common_vendor.onUnmounted(() => { - if (loadPositionsTimer.value) { - clearTimeout(loadPositionsTimer.value); - } + mapContext.value = null; }); __expose({ - mapCenter: common_vendor.computed(() => mapCenter.value) + mapCenter: common_vendor.computed(() => mapCenter.value), + moveToLocation, + updateMapMarkers, + initCollapse: () => { + if (collapseRef.value) { + collapseRef.value.init(); + } + } }); return (_ctx, _cache) => { return common_vendor.e({ - a: mapKey.value, - b: mapCenter.value.longitude, - c: mapCenter.value.latitude, + a: mapCenter.value.longitude, + b: mapCenter.value.latitude, + c: mapMarkers.value, d: mapZoom.value, - e: mapMarkers.value, - f: common_vendor.o(handleMarkerTap), - g: common_vendor.o(handleRegionChange), - h: !mapCenter.value.longitude - }, !mapCenter.value.longitude ? {} : {}, { - i: common_assets._imports_0, - j: common_vendor.o(handleRelocate), - k: common_assets._imports_0, - l: common_vendor.o(handleScan), + e: common_vendor.o(onMapRegionChange), + f: common_vendor.o(onMapMarkerTap), + g: common_vendor.o(onCalloutTap), + h: common_vendor.o(onMapUpdated), + i: common_vendor.o(onMapError), + j: isLoading.value + }, isLoading.value ? {} : {}, { + k: common_vendor.p({ + name: "map-fill", + size: "18" + }), + l: common_vendor.o(handleRelocate), m: common_assets._imports_0, - n: common_vendor.o(handleShowList) + n: common_vendor.o(handleScan), + o: common_assets._imports_1$1, + p: common_vendor.o(handleShowList) }); }; } diff --git a/unpackage/dist/dev/mp-weixin/components/MapComponent.json b/unpackage/dist/dev/mp-weixin/components/MapComponent.json index e8cfaaf..1672a04 100644 --- a/unpackage/dist/dev/mp-weixin/components/MapComponent.json +++ b/unpackage/dist/dev/mp-weixin/components/MapComponent.json @@ -1,4 +1,6 @@ { "component": true, - "usingComponents": {} + "usingComponents": { + "uv-icon": "../node-modules/@climblee/uv-ui/components/uv-icon/uv-icon" + } } \ No newline at end of file diff --git a/unpackage/dist/dev/mp-weixin/components/MapComponent.wxml b/unpackage/dist/dev/mp-weixin/components/MapComponent.wxml index dc0c61d..91b6ef9 100644 --- a/unpackage/dist/dev/mp-weixin/components/MapComponent.wxml +++ b/unpackage/dist/dev/mp-weixin/components/MapComponent.wxml @@ -1 +1 @@ -地图加载中...我的位置扫码使用附近场地 \ No newline at end of file +地图加载中...我的位置扫码使用附近设备 \ No newline at end of file diff --git a/unpackage/dist/dev/mp-weixin/components/MapComponent.wxss b/unpackage/dist/dev/mp-weixin/components/MapComponent.wxss index d7c9770..a3eba81 100644 --- a/unpackage/dist/dev/mp-weixin/components/MapComponent.wxss +++ b/unpackage/dist/dev/mp-weixin/components/MapComponent.wxss @@ -27,12 +27,33 @@ .map-container.data-v-651a9dc3 { flex: 1; position: relative; - height: 100vh; - width: 100%; + height: 60vh; + /* 增加高度 */ + width: 92%; + /* 略微增加宽度 */ + margin: 10rpx auto 30rpx; + /* 调整上下间距,左右自动居中 */ + border-radius: 24rpx; + /* 添加圆角 */ + overflow: hidden; + /* 确保圆角生效 */ + box-shadow: 0 4rpx 16rpx rgba(0, 0, 0, 0.1); + /* 添加阴影效果 */ } -.map-container .map.data-v-651a9dc3 { +.map-container .map-wrapper.data-v-651a9dc3 { width: 100%; height: 100%; + position: relative; + overflow: hidden; + border-radius: 24rpx; + /* 内层也添加圆角 */ +} +.map-container .map-wrapper .native-map.data-v-651a9dc3 { + width: 100%; + height: 100%; + display: block; + border-radius: 24rpx; + /* 地图也添加圆角 */ } .map-container .map-loading.data-v-651a9dc3 { position: absolute; @@ -68,26 +89,28 @@ } .map-container .map-controls.data-v-651a9dc3 { position: absolute; - right: 30rpx; + right: 20rpx; bottom: 20rpx; - left: 30rpx; + left: 20rpx; display: flex; justify-content: center; align-items: center; - gap: 30rpx; + gap: 20rpx; } .map-container .map-controls .control-btn.data-v-651a9dc3 { - min-width: 140rpx; - height: 80rpx; + min-width: 120rpx; + /* 减小按钮宽度 */ + height: 70rpx; + /* 减小按钮高度 */ background: #ffffff; - border-radius: 40rpx; + border-radius: 35rpx; display: flex; flex-direction: row; align-items: center; justify-content: center; box-shadow: 0 4rpx 12rpx rgba(0, 0, 0, 0.1); transition: all 0.2s ease; - padding: 0 20rpx; + padding: 0 16rpx; } .map-container .map-controls .control-btn.data-v-651a9dc3:active { transform: scale(0.95); @@ -104,8 +127,10 @@ font-weight: 500; } .map-container .map-controls .control-btn.main-btn.data-v-651a9dc3 { - min-width: 160rpx; - height: 90rpx; + min-width: 140rpx; + /* 减小主按钮宽度 */ + height: 80rpx; + /* 减小主按钮高度 */ box-shadow: 0 6rpx 20rpx rgba(33, 150, 243, 0.4); transform: translateY(-5rpx); } diff --git a/unpackage/dist/dev/mp-weixin/config/url.js b/unpackage/dist/dev/mp-weixin/config/url.js index 088fc72..d9a3a4f 100644 --- a/unpackage/dist/dev/mp-weixin/config/url.js +++ b/unpackage/dist/dev/mp-weixin/config/url.js @@ -1,5 +1,5 @@ "use strict"; -const URL = "https://my.gxfs123.com/api"; +const URL = "https://fansdev.gxfs123.com/api"; const appid = "wx2165f0be356ae7a9"; exports.URL = URL; exports.appid = appid; diff --git a/unpackage/dist/dev/mp-weixin/config/user.js b/unpackage/dist/dev/mp-weixin/config/user.js index ee484f5..3dcfc39 100644 --- a/unpackage/dist/dev/mp-weixin/config/user.js +++ b/unpackage/dist/dev/mp-weixin/config/user.js @@ -67,11 +67,14 @@ const rentPowerBank = (deviceNo, phone) => { return config_http.request({ url: "/app/device/rentPowerBank", method: "post", - data: { deviceNo, phone } + data: { + deviceNo, + phone + } }); }; const confirmPaymentAndRent = (orderId) => { - common_vendor.index.__f__("log", "at config/user.js:120", `确认支付并弹出风扇, orderId: ${orderId}`); + common_vendor.index.__f__("log", "at config/user.js:123", `确认支付并弹出风扇, orderId: ${orderId}`); return config_http.request({ url: `/app/device/confirmPaymentAndRent?orderId=${orderId}`, method: "GET" @@ -85,7 +88,7 @@ const getOrderByOrderNo = (orderNo) => { }); }; const getOrderByOrderNoScore = (orderNo) => { - common_vendor.index.__f__("log", "at config/user.js:157", "通过订单号获取支付分订单信息", orderNo); + common_vendor.index.__f__("log", "at config/user.js:160", "通过订单号获取支付分订单信息", orderNo); return config_http.request({ url: `/app/wx-payment/score/create/${orderNo}`, method: "get", @@ -93,7 +96,7 @@ const getOrderByOrderNoScore = (orderNo) => { }); }; const getOrderByOrderNoScorePayStatus = (orderNo) => { - common_vendor.index.__f__("log", "at config/user.js:166", "通过订单号获取支付分订单状态", orderNo); + common_vendor.index.__f__("log", "at config/user.js:169", "通过订单号获取支付分订单状态", orderNo); return config_http.request({ url: `/app/wx-payment/score/status/${orderNo}`, method: "get", @@ -101,7 +104,7 @@ const getOrderByOrderNoScorePayStatus = (orderNo) => { }); }; const updateOrderPackage = (data) => { - common_vendor.index.__f__("log", "at config/user.js:176", "更新订单套餐信息:", data); + common_vendor.index.__f__("log", "at config/user.js:179", "更新订单套餐信息:", data); return config_http.request({ url: "/app/device/updateOrderPackage", method: "post", diff --git a/unpackage/dist/dev/mp-weixin/node-modules/@climblee/uv-ui/components/uv-cell/uv-cell.js b/unpackage/dist/dev/mp-weixin/node-modules/@climblee/uv-ui/components/uv-cell/uv-cell.js new file mode 100644 index 0000000..7eddba6 --- /dev/null +++ b/unpackage/dist/dev/mp-weixin/node-modules/@climblee/uv-ui/components/uv-cell/uv-cell.js @@ -0,0 +1,90 @@ +"use strict"; +const common_vendor = require("../../../../../common/vendor.js"); +const _sfc_main = { + name: "uv-cell", + emits: ["click"], + mixins: [common_vendor.mpMixin, common_vendor.mixin, common_vendor.props$6], + computed: { + titleTextStyle() { + return this.$uv.addStyle(this.titleStyle); + } + }, + methods: { + // 点击cell + clickHandler(e) { + if (this.disabled) + return; + this.$emit("click", { + name: this.name + }); + this.openPage(); + this.stop && this.preventEvent(e); + } + } +}; +if (!Array) { + const _easycom_uv_icon2 = common_vendor.resolveComponent("uv-icon"); + const _easycom_uv_line2 = common_vendor.resolveComponent("uv-line"); + (_easycom_uv_icon2 + _easycom_uv_line2)(); +} +const _easycom_uv_icon = () => "../uv-icon/uv-icon.js"; +const _easycom_uv_line = () => "../uv-line/uv-line.js"; +if (!Math) { + (_easycom_uv_icon + _easycom_uv_line)(); +} +function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) { + return common_vendor.e({ + a: _ctx.icon + }, _ctx.icon ? { + b: common_vendor.p({ + name: _ctx.icon, + ["custom-style"]: _ctx.iconStyle, + size: _ctx.size === "large" ? 22 : 18 + }) + } : {}, { + c: _ctx.title + }, _ctx.title ? { + d: common_vendor.t(_ctx.title), + e: common_vendor.s($options.titleTextStyle), + f: common_vendor.n(_ctx.disabled && "uv-cell--disabled"), + g: common_vendor.n(_ctx.size === "large" && "uv-cell__title-text--large") + } : {}, { + h: _ctx.label + }, _ctx.label ? { + i: common_vendor.t(_ctx.label), + j: common_vendor.n(_ctx.disabled && "uv-cell--disabled"), + k: common_vendor.n(_ctx.size === "large" && "uv-cell__label--large") + } : {}, { + l: !_ctx.$uv.test.empty(_ctx.value) + }, !_ctx.$uv.test.empty(_ctx.value) ? { + m: common_vendor.t(_ctx.value), + n: common_vendor.n(_ctx.disabled && "uv-cell--disabled"), + o: common_vendor.n(_ctx.size === "large" && "uv-cell__value--large") + } : {}, { + p: _ctx.$slots["right-icon"] || _ctx.isLink + }, _ctx.$slots["right-icon"] || _ctx.isLink ? common_vendor.e({ + q: _ctx.$slots["right-icon"] + }, _ctx.$slots["right-icon"] ? {} : { + r: common_vendor.p({ + name: _ctx.rightIcon, + ["custom-style"]: _ctx.rightIconStyle, + color: _ctx.disabled ? "#c8c9cc" : "info", + size: _ctx.size === "large" ? 18 : 16 + }) + }, { + s: common_vendor.n(`uv-cell__right-icon-wrap--${_ctx.arrowDirection}`) + }) : {}, { + t: common_vendor.n(_ctx.center && "uv-cell--center"), + v: common_vendor.n(_ctx.size === "large" && "uv-cell__body--large"), + w: common_vendor.s(_ctx.cellStyle), + x: _ctx.border + }, _ctx.border ? {} : {}, { + y: common_vendor.n(_ctx.customClass), + z: common_vendor.s(_ctx.$uv.addStyle(_ctx.customStyle)), + A: !_ctx.disabled && (_ctx.clickable || _ctx.isLink) ? "uv-cell--clickable" : "", + B: common_vendor.o((...args) => $options.clickHandler && $options.clickHandler(...args)) + }); +} +const Component = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["render", _sfc_render], ["__scopeId", "data-v-fd61d93a"]]); +wx.createComponent(Component); +//# sourceMappingURL=../../../../../../.sourcemap/mp-weixin/node-modules/@climblee/uv-ui/components/uv-cell/uv-cell.js.map diff --git a/unpackage/dist/dev/mp-weixin/node-modules/@climblee/uv-ui/components/uv-cell/uv-cell.json b/unpackage/dist/dev/mp-weixin/node-modules/@climblee/uv-ui/components/uv-cell/uv-cell.json new file mode 100644 index 0000000..bf52e01 --- /dev/null +++ b/unpackage/dist/dev/mp-weixin/node-modules/@climblee/uv-ui/components/uv-cell/uv-cell.json @@ -0,0 +1,7 @@ +{ + "component": true, + "usingComponents": { + "uv-icon": "../uv-icon/uv-icon", + "uv-line": "../uv-line/uv-line" + } +} \ No newline at end of file diff --git a/unpackage/dist/dev/mp-weixin/node-modules/@climblee/uv-ui/components/uv-cell/uv-cell.wxml b/unpackage/dist/dev/mp-weixin/node-modules/@climblee/uv-ui/components/uv-cell/uv-cell.wxml new file mode 100644 index 0000000..fd062c2 --- /dev/null +++ b/unpackage/dist/dev/mp-weixin/node-modules/@climblee/uv-ui/components/uv-cell/uv-cell.wxml @@ -0,0 +1 @@ +{{d}}{{i}}{{m}} \ No newline at end of file diff --git a/unpackage/dist/dev/mp-weixin/node-modules/@climblee/uv-ui/components/uv-cell/uv-cell.wxss b/unpackage/dist/dev/mp-weixin/node-modules/@climblee/uv-ui/components/uv-cell/uv-cell.wxss new file mode 100644 index 0000000..c355a54 --- /dev/null +++ b/unpackage/dist/dev/mp-weixin/node-modules/@climblee/uv-ui/components/uv-cell/uv-cell.wxss @@ -0,0 +1,110 @@ +/** + * 这里是uni-app内置的常用样式变量 + * + * uni-app 官方扩展插件及插件市场(https://ext.dcloud.net.cn)上很多三方插件均使用了这些样式变量 + * 如果你是插件开发者,建议你使用scss预处理,并在插件代码中直接使用这些变量(无需 import 这个文件),方便用户通过搭积木的方式开发整体风格一致的App + * + */ +/** + * 如果你是App开发者(插件使用者),你可以通过修改这些变量来定制自己的插件主题,实现自定义主题功能 + * + * 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件 + */ +/* 颜色变量 */ +/* 行为相关颜色 */ +/* 文字基本颜色 */ +/* 背景颜色 */ +/* 边框颜色 */ +/* 尺寸变量 */ +/* 文字尺寸 */ +/* 图片尺寸 */ +/* Border Radius */ +/* 水平间距 */ +/* 垂直间距 */ +/* 透明度 */ +/* 文章场景相关 */ +view.data-v-fd61d93a, scroll-view.data-v-fd61d93a, swiper-item.data-v-fd61d93a { + display: flex; + flex-direction: column; + flex-shrink: 0; + flex-grow: 0; + flex-basis: auto; + align-items: stretch; + align-content: flex-start; +} +.uv-cell__body.data-v-fd61d93a { + display: flex; + flex-direction: row; + box-sizing: border-box; + padding: 10px 15px; + font-size: 15px; + color: #303133; +} +.uv-cell__body__content.data-v-fd61d93a { + display: flex; + flex-direction: row; + align-items: center; + flex: 1; +} +.uv-cell__body--large.data-v-fd61d93a { + padding-top: 13px; + padding-bottom: 13px; +} +.uv-cell__left-icon-wrap.data-v-fd61d93a, .uv-cell__right-icon-wrap.data-v-fd61d93a { + display: flex; + flex-direction: row; + align-items: center; + font-size: 16px; +} +.uv-cell__left-icon-wrap.data-v-fd61d93a { + margin-right: 4px; +} +.uv-cell__right-icon-wrap.data-v-fd61d93a { + margin-left: 4px; + transition: transform 0.3s; +} +.uv-cell__right-icon-wrap--up.data-v-fd61d93a { + transform: rotate(-90deg); +} +.uv-cell__right-icon-wrap--down.data-v-fd61d93a { + transform: rotate(90deg); +} +.uv-cell__title.data-v-fd61d93a { + flex: 1; +} +.uv-cell__title-text.data-v-fd61d93a { + font-size: 15px; + line-height: 22px; + color: #303133; +} +.uv-cell__title-text--large.data-v-fd61d93a { + font-size: 16px; +} +.uv-cell__label.data-v-fd61d93a { + margin-top: 5px; + font-size: 12px; + color: #909193; + line-height: 18px; +} +.uv-cell__label--large.data-v-fd61d93a { + font-size: 14px; +} +.uv-cell__value.data-v-fd61d93a { + text-align: right; + font-size: 14px; + line-height: 24px; + color: #606266; +} +.uv-cell__value--large.data-v-fd61d93a { + font-size: 15px; +} +.uv-cell--clickable.data-v-fd61d93a { + background-color: #f3f4f6; +} +.uv-cell--disabled.data-v-fd61d93a { + color: #c8c9cc; + cursor: not-allowed; +} +.uv-cell--center.data-v-fd61d93a { + align-items: center; +} \ No newline at end of file diff --git a/unpackage/dist/dev/mp-weixin/node-modules/@climblee/uv-ui/components/uv-collapse-item/uv-collapse-item.js b/unpackage/dist/dev/mp-weixin/node-modules/@climblee/uv-ui/components/uv-collapse-item/uv-collapse-item.js new file mode 100644 index 0000000..44877f5 --- /dev/null +++ b/unpackage/dist/dev/mp-weixin/node-modules/@climblee/uv-ui/components/uv-collapse-item/uv-collapse-item.js @@ -0,0 +1,132 @@ +"use strict"; +const common_vendor = require("../../../../../common/vendor.js"); +const _sfc_main = { + name: "uv-collapse-item", + mixins: [common_vendor.mpMixin, common_vendor.mixin, common_vendor.props$1], + data() { + return { + elId: "", + // uni.createAnimation的导出数据 + animationData: {}, + // 是否展开状态 + expanded: false, + // 根据expanded确定是否显示border,为了控制展开时,cell的下划线更好的显示效果,进行一定时间的延时 + showBorder: false, + // 是否动画中,如果是则不允许继续触发点击 + animating: false, + // 父组件uv-collapse的参数 + parentData: { + accordion: false, + border: false + } + }; + }, + watch: { + expanded(n) { + clearTimeout(this.timer); + this.timer = null; + this.timer = setTimeout(() => { + this.showBorder = n; + }, n ? 10 : 290); + } + }, + created() { + this.elId = this.$uv.guid(); + }, + mounted() { + this.init(); + }, + methods: { + // 异步获取内容,或者动态修改了内容时,需要重新初始化 + init() { + this.updateParentData(); + if (!this.parent) { + return this.$uv.error("uv-collapse-item必须要搭配uv-collapse组件使用"); + } + const { + value, + accordion, + children = [] + } = this.parent; + if (accordion) { + if (this.$uv.test.array(value)) { + return this.$uv.error("手风琴模式下,uv-collapse组件的value参数不能为数组"); + } + this.expanded = this.name == value; + } else { + if (!this.$uv.test.array(value) && value !== null) { + return this.$uv.error("非手风琴模式下,uv-collapse组件的value参数必须为数组"); + } + this.expanded = (value || []).some((item) => item == this.name); + } + this.$nextTick(function() { + this.setContentAnimate(); + }); + }, + updateParentData() { + this.getParentData("uv-collapse"); + }, + async setContentAnimate() { + const rect = await this.queryRect(); + const height = this.expanded ? rect.height : 0; + this.animating = true; + const animation = common_vendor.index.createAnimation({ + timingFunction: "ease-in-out" + }); + animation.height(height).step({ + duration: this.duration + }).step(); + this.animationData = animation.export(); + this.$uv.sleep(this.duration).then(() => { + this.animating = false; + }); + }, + // 点击collapsehead头部 + clickHandler() { + if (this.disabled && this.animating) + return; + this.parent && this.parent.onChange(this); + }, + // 查询内容高度 + queryRect() { + return new Promise((resolve) => { + this.$uvGetRect(`#${this.elId}`).then((size) => { + resolve(size); + }); + }); + } + } +}; +if (!Array) { + const _easycom_uv_cell2 = common_vendor.resolveComponent("uv-cell"); + const _easycom_uv_line2 = common_vendor.resolveComponent("uv-line"); + (_easycom_uv_cell2 + _easycom_uv_line2)(); +} +const _easycom_uv_cell = () => "../uv-cell/uv-cell.js"; +const _easycom_uv_line = () => "../uv-line/uv-line.js"; +if (!Math) { + (_easycom_uv_cell + _easycom_uv_line)(); +} +function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) { + return common_vendor.e({ + a: common_vendor.o($options.clickHandler), + b: common_vendor.p({ + title: _ctx.title, + value: _ctx.value, + label: _ctx.label, + icon: _ctx.icon, + isLink: _ctx.isLink, + clickable: _ctx.clickable, + border: $data.parentData.border && $data.showBorder, + arrowDirection: $data.expanded ? "up" : "down", + disabled: _ctx.disabled + }), + c: $data.elId, + d: $data.elId, + e: $data.animationData, + f: $data.parentData.border + }, $data.parentData.border ? {} : {}); +} +const Component = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["render", _sfc_render], ["__scopeId", "data-v-b32ffb1f"]]); +wx.createComponent(Component); +//# sourceMappingURL=../../../../../../.sourcemap/mp-weixin/node-modules/@climblee/uv-ui/components/uv-collapse-item/uv-collapse-item.js.map diff --git a/unpackage/dist/dev/mp-weixin/node-modules/@climblee/uv-ui/components/uv-collapse-item/uv-collapse-item.json b/unpackage/dist/dev/mp-weixin/node-modules/@climblee/uv-ui/components/uv-collapse-item/uv-collapse-item.json new file mode 100644 index 0000000..3b52d6e --- /dev/null +++ b/unpackage/dist/dev/mp-weixin/node-modules/@climblee/uv-ui/components/uv-collapse-item/uv-collapse-item.json @@ -0,0 +1,7 @@ +{ + "component": true, + "usingComponents": { + "uv-cell": "../uv-cell/uv-cell", + "uv-line": "../uv-line/uv-line" + } +} \ No newline at end of file diff --git a/unpackage/dist/dev/mp-weixin/node-modules/@climblee/uv-ui/components/uv-collapse-item/uv-collapse-item.wxml b/unpackage/dist/dev/mp-weixin/node-modules/@climblee/uv-ui/components/uv-collapse-item/uv-collapse-item.wxml new file mode 100644 index 0000000..f770a08 --- /dev/null +++ b/unpackage/dist/dev/mp-weixin/node-modules/@climblee/uv-ui/components/uv-collapse-item/uv-collapse-item.wxml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/unpackage/dist/dev/mp-weixin/node-modules/@climblee/uv-ui/components/uv-collapse-item/uv-collapse-item.wxss b/unpackage/dist/dev/mp-weixin/node-modules/@climblee/uv-ui/components/uv-collapse-item/uv-collapse-item.wxss new file mode 100644 index 0000000..4618efc --- /dev/null +++ b/unpackage/dist/dev/mp-weixin/node-modules/@climblee/uv-ui/components/uv-collapse-item/uv-collapse-item.wxss @@ -0,0 +1,44 @@ +/** + * 这里是uni-app内置的常用样式变量 + * + * uni-app 官方扩展插件及插件市场(https://ext.dcloud.net.cn)上很多三方插件均使用了这些样式变量 + * 如果你是插件开发者,建议你使用scss预处理,并在插件代码中直接使用这些变量(无需 import 这个文件),方便用户通过搭积木的方式开发整体风格一致的App + * + */ +/** + * 如果你是App开发者(插件使用者),你可以通过修改这些变量来定制自己的插件主题,实现自定义主题功能 + * + * 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件 + */ +/* 颜色变量 */ +/* 行为相关颜色 */ +/* 文字基本颜色 */ +/* 背景颜色 */ +/* 边框颜色 */ +/* 尺寸变量 */ +/* 文字尺寸 */ +/* 图片尺寸 */ +/* Border Radius */ +/* 水平间距 */ +/* 垂直间距 */ +/* 透明度 */ +/* 文章场景相关 */ +view.data-v-b32ffb1f, scroll-view.data-v-b32ffb1f, swiper-item.data-v-b32ffb1f { + display: flex; + flex-direction: column; + flex-shrink: 0; + flex-grow: 0; + flex-basis: auto; + align-items: stretch; + align-content: flex-start; +} +.uv-collapse-item__content.data-v-b32ffb1f { + overflow: hidden; + height: 0; +} +.uv-collapse-item__content__text.data-v-b32ffb1f { + padding: 12px 15px; + color: #606266; + font-size: 14px; + line-height: 18px; +} \ No newline at end of file diff --git a/unpackage/dist/dev/mp-weixin/node-modules/@climblee/uv-ui/components/uv-collapse/uv-collapse.js b/unpackage/dist/dev/mp-weixin/node-modules/@climblee/uv-ui/components/uv-collapse/uv-collapse.js new file mode 100644 index 0000000..1c3f114 --- /dev/null +++ b/unpackage/dist/dev/mp-weixin/node-modules/@climblee/uv-ui/components/uv-collapse/uv-collapse.js @@ -0,0 +1,76 @@ +"use strict"; +const common_vendor = require("../../../../../common/vendor.js"); +const _sfc_main = { + name: "uv-collapse", + mixins: [common_vendor.mpMixin, common_vendor.mixin, common_vendor.props$2], + watch: { + needInit() { + this.init(); + }, + // 当父组件需要子组件需要共享的参数发生了变化,手动通知子组件 + parentData() { + if (this.children.length) { + this.children.map((child) => { + typeof child.updateParentData === "function" && child.updateParentData(); + }); + } + } + }, + created() { + this.children = []; + }, + computed: { + needInit() { + return [this.accordion, this.value]; + } + }, + methods: { + // 重新初始化一次内部的所有子元素 + init() { + this.children.map((child) => { + child.init(); + }); + }, + /** + * collapse-item被点击时触发,由collapse统一处理各子组件的状态 + * @param {Object} target 被操作的面板的实例 + */ + onChange(target) { + let changeArr = []; + this.children.map((child, index) => { + if (this.accordion) { + child.expanded = child === target ? !target.expanded : false; + child.setContentAnimate(); + } else { + if (child === target) { + child.expanded = !child.expanded; + child.setContentAnimate(); + } + } + changeArr.push({ + // 如果没有定义name属性,则默认返回组件的index索引 + name: child.name || index, + status: child.expanded ? "open" : "close" + }); + }); + this.$emit("change", changeArr); + this.$emit(target.expanded ? "open" : "close", target.name); + } + } +}; +if (!Array) { + const _easycom_uv_line2 = common_vendor.resolveComponent("uv-line"); + _easycom_uv_line2(); +} +const _easycom_uv_line = () => "../uv-line/uv-line.js"; +if (!Math) { + _easycom_uv_line(); +} +function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) { + return common_vendor.e({ + a: _ctx.border + }, _ctx.border ? {} : {}); +} +const Component = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["render", _sfc_render]]); +wx.createComponent(Component); +//# sourceMappingURL=../../../../../../.sourcemap/mp-weixin/node-modules/@climblee/uv-ui/components/uv-collapse/uv-collapse.js.map diff --git a/unpackage/dist/dev/mp-weixin/node-modules/@climblee/uv-ui/components/uv-collapse/uv-collapse.json b/unpackage/dist/dev/mp-weixin/node-modules/@climblee/uv-ui/components/uv-collapse/uv-collapse.json new file mode 100644 index 0000000..c4e5adf --- /dev/null +++ b/unpackage/dist/dev/mp-weixin/node-modules/@climblee/uv-ui/components/uv-collapse/uv-collapse.json @@ -0,0 +1,6 @@ +{ + "component": true, + "usingComponents": { + "uv-line": "../uv-line/uv-line" + } +} \ No newline at end of file diff --git a/unpackage/dist/dev/mp-weixin/node-modules/@climblee/uv-ui/components/uv-collapse/uv-collapse.wxml b/unpackage/dist/dev/mp-weixin/node-modules/@climblee/uv-ui/components/uv-collapse/uv-collapse.wxml new file mode 100644 index 0000000..eb4b22d --- /dev/null +++ b/unpackage/dist/dev/mp-weixin/node-modules/@climblee/uv-ui/components/uv-collapse/uv-collapse.wxml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/unpackage/dist/dev/mp-weixin/node-modules/@climblee/uv-ui/components/uv-collapse/uv-collapse.wxss b/unpackage/dist/dev/mp-weixin/node-modules/@climblee/uv-ui/components/uv-collapse/uv-collapse.wxss new file mode 100644 index 0000000..e69de29 diff --git a/unpackage/dist/dev/mp-weixin/node-modules/@climblee/uv-ui/components/uv-column-notice/uv-column-notice.js b/unpackage/dist/dev/mp-weixin/node-modules/@climblee/uv-ui/components/uv-column-notice/uv-column-notice.js new file mode 100644 index 0000000..380a00b --- /dev/null +++ b/unpackage/dist/dev/mp-weixin/node-modules/@climblee/uv-ui/components/uv-column-notice/uv-column-notice.js @@ -0,0 +1,112 @@ +"use strict"; +const common_vendor = require("../../../../../common/vendor.js"); +const _sfc_main = { + emits: ["click", "close", "change"], + mixins: [common_vendor.mpMixin, common_vendor.mixin, common_vendor.props$2], + watch: { + text: { + immediate: true, + handler(newValue, oldValue) { + if (!this.$uv.test.array(newValue)) { + this.$uv.error("noticebar组件direction为column时,要求text参数为数组形式"); + } + } + } + }, + computed: { + // 文字内容的样式 + textStyle() { + let style = {}; + style.color = this.color; + style.fontSize = this.$uv.addUnit(this.fontSize); + return style; + }, + // 垂直或者水平滚动 + vertical() { + if (this.mode == "horizontal") + return false; + else + return true; + }, + // NVUE中的swiper在css中样式不生效 + swiperStyle() { + const style = {}; + return style; + } + }, + data() { + return { + index: 0 + }; + }, + methods: { + noticeChange(e) { + this.index = e.detail.current; + this.$emit("change", this.index); + }, + // 点击通告栏 + clickHandler() { + this.$emit("click", this.index); + }, + // 点击关闭按钮 + close() { + this.$emit("close"); + } + } +}; +if (!Array) { + const _easycom_uv_icon2 = common_vendor.resolveComponent("uv-icon"); + _easycom_uv_icon2(); +} +const _easycom_uv_icon = () => "../uv-icon/uv-icon.js"; +if (!Math) { + _easycom_uv_icon(); +} +function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) { + return common_vendor.e({ + a: _ctx.icon + }, _ctx.icon ? { + b: common_vendor.p({ + name: _ctx.icon, + color: _ctx.color, + size: "19" + }) + } : {}, { + c: common_vendor.f(_ctx.text, (item, index, i0) => { + return { + a: common_vendor.t(item), + b: index + }; + }), + d: common_vendor.s($options.textStyle), + e: _ctx.disableTouch, + f: _ctx.step ? false : true, + g: _ctx.duration, + h: !_ctx.disableScroll, + i: common_vendor.s($options.swiperStyle), + j: common_vendor.o((...args) => $options.noticeChange && $options.noticeChange(...args)), + k: ["link", "closable"].includes(_ctx.mode) + }, ["link", "closable"].includes(_ctx.mode) ? common_vendor.e({ + l: _ctx.mode === "link" + }, _ctx.mode === "link" ? { + m: common_vendor.p({ + name: "arrow-right", + size: 17, + color: _ctx.color + }) + } : {}, { + n: _ctx.mode === "closable" + }, _ctx.mode === "closable" ? { + o: common_vendor.o($options.close), + p: common_vendor.p({ + name: "close", + size: 16, + color: _ctx.color + }) + } : {}) : {}, { + q: common_vendor.o((...args) => $options.clickHandler && $options.clickHandler(...args)) + }); +} +const Component = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["render", _sfc_render], ["__scopeId", "data-v-edae50b8"]]); +wx.createComponent(Component); +//# sourceMappingURL=../../../../../../.sourcemap/mp-weixin/node-modules/@climblee/uv-ui/components/uv-column-notice/uv-column-notice.js.map diff --git a/unpackage/dist/dev/mp-weixin/node-modules/@climblee/uv-ui/components/uv-column-notice/uv-column-notice.json b/unpackage/dist/dev/mp-weixin/node-modules/@climblee/uv-ui/components/uv-column-notice/uv-column-notice.json new file mode 100644 index 0000000..700e739 --- /dev/null +++ b/unpackage/dist/dev/mp-weixin/node-modules/@climblee/uv-ui/components/uv-column-notice/uv-column-notice.json @@ -0,0 +1,6 @@ +{ + "component": true, + "usingComponents": { + "uv-icon": "../uv-icon/uv-icon" + } +} \ No newline at end of file diff --git a/unpackage/dist/dev/mp-weixin/node-modules/@climblee/uv-ui/components/uv-column-notice/uv-column-notice.wxml b/unpackage/dist/dev/mp-weixin/node-modules/@climblee/uv-ui/components/uv-column-notice/uv-column-notice.wxml new file mode 100644 index 0000000..7c289c3 --- /dev/null +++ b/unpackage/dist/dev/mp-weixin/node-modules/@climblee/uv-ui/components/uv-column-notice/uv-column-notice.wxml @@ -0,0 +1 @@ +{{item.a}} \ No newline at end of file diff --git a/unpackage/dist/dev/mp-weixin/node-modules/@climblee/uv-ui/components/uv-column-notice/uv-column-notice.wxss b/unpackage/dist/dev/mp-weixin/node-modules/@climblee/uv-ui/components/uv-column-notice/uv-column-notice.wxss new file mode 100644 index 0000000..0f3326d --- /dev/null +++ b/unpackage/dist/dev/mp-weixin/node-modules/@climblee/uv-ui/components/uv-column-notice/uv-column-notice.wxss @@ -0,0 +1,105 @@ +/** + * 这里是uni-app内置的常用样式变量 + * + * uni-app 官方扩展插件及插件市场(https://ext.dcloud.net.cn)上很多三方插件均使用了这些样式变量 + * 如果你是插件开发者,建议你使用scss预处理,并在插件代码中直接使用这些变量(无需 import 这个文件),方便用户通过搭积木的方式开发整体风格一致的App + * + */ +/** + * 如果你是App开发者(插件使用者),你可以通过修改这些变量来定制自己的插件主题,实现自定义主题功能 + * + * 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件 + */ +/* 颜色变量 */ +/* 行为相关颜色 */ +/* 文字基本颜色 */ +/* 背景颜色 */ +/* 边框颜色 */ +/* 尺寸变量 */ +/* 文字尺寸 */ +/* 图片尺寸 */ +/* Border Radius */ +/* 水平间距 */ +/* 垂直间距 */ +/* 透明度 */ +/* 文章场景相关 */ +.uv-line-1.data-v-edae50b8 { + display: -webkit-box !important; + overflow: hidden; + text-overflow: ellipsis; + word-break: break-all; + -webkit-line-clamp: 1; + -webkit-box-orient: vertical !important; +} +.uv-line-2.data-v-edae50b8 { + display: -webkit-box !important; + overflow: hidden; + text-overflow: ellipsis; + word-break: break-all; + -webkit-line-clamp: 2; + -webkit-box-orient: vertical !important; +} +.uv-line-3.data-v-edae50b8 { + display: -webkit-box !important; + overflow: hidden; + text-overflow: ellipsis; + word-break: break-all; + -webkit-line-clamp: 3; + -webkit-box-orient: vertical !important; +} +.uv-line-4.data-v-edae50b8 { + display: -webkit-box !important; + overflow: hidden; + text-overflow: ellipsis; + word-break: break-all; + -webkit-line-clamp: 4; + -webkit-box-orient: vertical !important; +} +.uv-line-5.data-v-edae50b8 { + display: -webkit-box !important; + overflow: hidden; + text-overflow: ellipsis; + word-break: break-all; + -webkit-line-clamp: 5; + -webkit-box-orient: vertical !important; +} +view.data-v-edae50b8, scroll-view.data-v-edae50b8, swiper-item.data-v-edae50b8 { + display: flex; + flex-direction: column; + flex-shrink: 0; + flex-grow: 0; + flex-basis: auto; + align-items: stretch; + align-content: flex-start; +} +.uv-notice.data-v-edae50b8 { + display: flex; + flex-direction: row; + align-items: center; + justify-content: space-between; +} +.uv-notice__left-icon.data-v-edae50b8 { + align-items: center; + margin-right: 5px; +} +.uv-notice__right-icon.data-v-edae50b8 { + margin-left: 5px; + align-items: center; +} +.uv-notice__swiper.data-v-edae50b8 { + height: 16px; + display: flex; + flex-direction: row; + align-items: center; + flex: 1; +} +.uv-notice__swiper__item.data-v-edae50b8 { + display: flex; + flex-direction: row; + align-items: center; + overflow: hidden; +} +.uv-notice__swiper__item__text.data-v-edae50b8 { + font-size: 14px; + color: #f9ae3d; +} \ No newline at end of file diff --git a/unpackage/dist/dev/mp-weixin/node-modules/@climblee/uv-ui/components/uv-icon/uv-icon.js b/unpackage/dist/dev/mp-weixin/node-modules/@climblee/uv-ui/components/uv-icon/uv-icon.js new file mode 100644 index 0000000..949fcf7 --- /dev/null +++ b/unpackage/dist/dev/mp-weixin/node-modules/@climblee/uv-ui/components/uv-icon/uv-icon.js @@ -0,0 +1,95 @@ +"use strict"; +const common_vendor = require("../../../../../common/vendor.js"); +const _sfc_main = { + name: "uv-icon", + emits: ["click"], + mixins: [common_vendor.mpMixin, common_vendor.mixin, common_vendor.props$1], + data() { + return { + colorType: [ + "primary", + "success", + "info", + "error", + "warning" + ] + }; + }, + computed: { + uClasses() { + let classes = []; + classes.push(this.customPrefix); + classes.push(this.customPrefix + "-" + this.name); + if (this.color && this.colorType.includes(this.color)) + classes.push("uv-icon__icon--" + this.color); + return classes; + }, + iconStyle() { + let style = {}; + style = { + fontSize: this.$uv.addUnit(this.size), + lineHeight: this.$uv.addUnit(this.size), + fontWeight: this.bold ? "bold" : "normal", + // 某些特殊情况需要设置一个到顶部的距离,才能更好的垂直居中 + top: this.$uv.addUnit(this.top) + }; + if (this.color && !this.colorType.includes(this.color)) + style.color = this.color; + return style; + }, + // 判断传入的name属性,是否图片路径,只要带有"/"均认为是图片形式 + isImg() { + const isBase64 = this.name.indexOf("data:") > -1 && this.name.indexOf("base64") > -1; + return this.name.indexOf("/") !== -1 || isBase64; + }, + imgStyle() { + let style = {}; + style.width = this.width ? this.$uv.addUnit(this.width) : this.$uv.addUnit(this.size); + style.height = this.height ? this.$uv.addUnit(this.height) : this.$uv.addUnit(this.size); + return style; + }, + // 通过图标名,查找对应的图标 + icon() { + const code = common_vendor.icons["uvicon-" + this.name]; + return code ? unescape(`%u${code}`) : ["uvicon"].indexOf(this.customPrefix) > -1 ? this.name : ""; + } + }, + methods: { + clickHandler(e) { + this.$emit("click", this.index); + this.stop && this.preventEvent(e); + } + } +}; +function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) { + return common_vendor.e({ + a: $options.isImg + }, $options.isImg ? { + b: _ctx.name, + c: _ctx.imgMode, + d: common_vendor.s($options.imgStyle), + e: common_vendor.s(_ctx.$uv.addStyle(_ctx.customStyle)) + } : { + f: common_vendor.t($options.icon), + g: common_vendor.n($options.uClasses), + h: common_vendor.s($options.iconStyle), + i: common_vendor.s(_ctx.$uv.addStyle(_ctx.customStyle)), + j: _ctx.hoverClass + }, { + k: _ctx.label !== "" + }, _ctx.label !== "" ? { + l: common_vendor.t(_ctx.label), + m: _ctx.labelColor, + n: _ctx.$uv.addUnit(_ctx.labelSize), + o: _ctx.labelPos == "right" ? _ctx.$uv.addUnit(_ctx.space) : 0, + p: _ctx.labelPos == "bottom" ? _ctx.$uv.addUnit(_ctx.space) : 0, + q: _ctx.labelPos == "left" ? _ctx.$uv.addUnit(_ctx.space) : 0, + r: _ctx.labelPos == "top" ? _ctx.$uv.addUnit(_ctx.space) : 0 + } : {}, { + s: common_vendor.o((...args) => $options.clickHandler && $options.clickHandler(...args)), + t: common_vendor.n("uv-icon--" + _ctx.labelPos) + }); +} +const Component = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["render", _sfc_render], ["__scopeId", "data-v-7cc7ad3f"]]); +wx.createComponent(Component); +//# sourceMappingURL=../../../../../../.sourcemap/mp-weixin/node-modules/@climblee/uv-ui/components/uv-icon/uv-icon.js.map diff --git a/unpackage/dist/dev/mp-weixin/node-modules/@climblee/uv-ui/components/uv-icon/uv-icon.json b/unpackage/dist/dev/mp-weixin/node-modules/@climblee/uv-ui/components/uv-icon/uv-icon.json new file mode 100644 index 0000000..e8cfaaf --- /dev/null +++ b/unpackage/dist/dev/mp-weixin/node-modules/@climblee/uv-ui/components/uv-icon/uv-icon.json @@ -0,0 +1,4 @@ +{ + "component": true, + "usingComponents": {} +} \ No newline at end of file diff --git a/unpackage/dist/dev/mp-weixin/node-modules/@climblee/uv-ui/components/uv-icon/uv-icon.wxml b/unpackage/dist/dev/mp-weixin/node-modules/@climblee/uv-ui/components/uv-icon/uv-icon.wxml new file mode 100644 index 0000000..2c8fdfc --- /dev/null +++ b/unpackage/dist/dev/mp-weixin/node-modules/@climblee/uv-ui/components/uv-icon/uv-icon.wxml @@ -0,0 +1 @@ +{{f}}{{l}} \ No newline at end of file diff --git a/unpackage/dist/dev/mp-weixin/node-modules/@climblee/uv-ui/components/uv-icon/uv-icon.wxss b/unpackage/dist/dev/mp-weixin/node-modules/@climblee/uv-ui/components/uv-icon/uv-icon.wxss new file mode 100644 index 0000000..233c1c6 --- /dev/null +++ b/unpackage/dist/dev/mp-weixin/node-modules/@climblee/uv-ui/components/uv-icon/uv-icon.wxss @@ -0,0 +1,87 @@ +/** + * 这里是uni-app内置的常用样式变量 + * + * uni-app 官方扩展插件及插件市场(https://ext.dcloud.net.cn)上很多三方插件均使用了这些样式变量 + * 如果你是插件开发者,建议你使用scss预处理,并在插件代码中直接使用这些变量(无需 import 这个文件),方便用户通过搭积木的方式开发整体风格一致的App + * + */ +/** + * 如果你是App开发者(插件使用者),你可以通过修改这些变量来定制自己的插件主题,实现自定义主题功能 + * + * 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件 + */ +/* 颜色变量 */ +/* 行为相关颜色 */ +/* 文字基本颜色 */ +/* 背景颜色 */ +/* 边框颜色 */ +/* 尺寸变量 */ +/* 文字尺寸 */ +/* 图片尺寸 */ +/* Border Radius */ +/* 水平间距 */ +/* 垂直间距 */ +/* 透明度 */ +/* 文章场景相关 */ +view.data-v-7cc7ad3f, scroll-view.data-v-7cc7ad3f, swiper-item.data-v-7cc7ad3f { + display: flex; + flex-direction: column; + flex-shrink: 0; + flex-grow: 0; + flex-basis: auto; + align-items: stretch; + align-content: flex-start; +} +@font-face { + font-family: "uvicon-iconfont"; + src: url("data:font/ttf;base64,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AF8AAOZDAADmQwAAAGAAAOZEAADmRAAAAGEAAOZGAADmRgAAAGIAAOZHAADmRwAAAGMAAOZIAADmSAAAAGQAAOZKAADmSgAAAGUAAOZLAADmSwAAAGYAAOZMAADmTAAAAGcAAOZNAADmTQAAAGgAAOZOAADmTgAAAGkAAOZPAADmTwAAAGoAAOZQAADmUAAAAGsAAOZRAADmUQAAAGwAAOZTAADmUwAAAG0AAOZVAADmVQAAAG4AAOZWAADmVgAAAG8AAOZXAADmVwAAAHAAAOZZAADmWQAAAHEAAOZaAADmWgAAAHIAAOZcAADmXAAAAHMAAOZdAADmXQAAAHQAAOZfAADmXwAAAHUAAOZgAADmYAAAAHYAAOZiAADmYgAAAHcAAOZkAADmZAAAAHgAAOZlAADmZQAAAHkAAOZmAADmZgAAAHoAAOZoAADmaAAAAHsAAOZrAADmawAAAHwAAOZsAADmbAAAAH0AAOZtAADmbQAAAH4AAOZuAADmbgAAAH8AAOZvAADmbwAAAIAAAOZwAADmcAAAAIEAAOZxAADmcQAAAIIAAOZyAADmcgAAAIMAAOZzAADmcwAAAIQAAOZ1AADmdQAAAIUAAOZ3AADmdwAAAIYAAOZ5AADmeQAAAIcAAOZ7AADmewAAAIgAAOZ8AADmfAAAAIkAAOZ9AADmfQAAAIoAAOZ+AADmfgAAAIsAAOZ/AADmfwAAAIwAAOaAAADmgAAAAI0AAOaDAADmgwAAAI4AAOaEAADmhAAAAI8AAOaFAADmhQAAAJAAAOaHAADmhwAAAJEAAOaIAADmiAAAAJIAAOaKAADmigAAAJMAAOaLAADmiwAAAJQAAOaMAADmjAAAAJUAAOaNAADmjQAAAJYAAOaOAADmjgAAAJcAAOaPAADmjwAAAJgAAOaQAADmkAAAAJkAAOaRAADmkQAAAJoAAOaTAADmkwAAACAAAOaUAADmlAAAACEAAOaVAADmlQAAACIAAOaWAADmlgAAACMAAOaXAADmlwAAACQAAOaYAADmmAAAACUAAOabAADmmwAAACYAAOacAADmnAAAACcAAOadAADmnQAAACgAAOaeAADmngAAACkAAOafAADmnwAAACoAAOagAADmoAAAACsAAOahAADmoQAAACwAAOaiAADmogAAAC0AAOalAADmpQAAAC4AAOamAADmpgAA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AWMBZAFlAWYBZwFoAWkBagFrAWwBbQFuAW8BcAFxAXIBcwF0AXUBdgF3AXgBeQF6AXsBfAF9AX4BfwGAAYEBggGDAYQBhQGGAYcBiAGJAYoBiwGMAY0BjgGPAZABkQGSAZMBlAGVAZYBlwGYAZkBmgGbAZwBnQGeAARzdGFyBXBhdXNlCXN0YXItZmlsbBJza2lwLWZvcndhcmQtcmlnaHQLd2VpeGluLWZpbGwEdGFncw9xdWVzdGlvbi1jaXJjbGUFdHJhc2gLdm9sdW1lLWZpbGwEcGx1cwV3b21hbgZyZWxvYWQPdGh1bWItZG93bi1maWxsBXNoYXJlC3NlcnZlci1maWxsEHBsdXMtY2lyY2xlLWZpbGwIdGh1bWItdXAJdGFncy1maWxsBW1pbnVzFHpoaWZ1YmFvLWNpcmNsZS1maWxsB3NldHRpbmcLcGx1cy1jaXJjbGUJYmVsbC1maWxsCXZvbHVtZS11cAZ0d2l0dGUHcXEtZmlsbAp0aHVtYi1kb3duEXBhdXNlLWNpcmNsZS1maWxsBXBob3RvCmVtcHR5LXBhZ2UKc2VydmVyLW1hbghpbnRlZ3JhbAZmb2xkZXIFb3JkZXIMcGF1c2UtY2lyY2xlCGV5ZS1maWxsCWdyaWQtZmlsbAxlbXB0eS1jb3Vwb24HZXllLW9mZgRsb2NrC21vcmUtY2lyY2xlC2luZm8tY2lyY2xlB21vbWVudHMQbG9jay1vcGVuZWQtZmlsbAVoZWFydAxtaW51cy1jaXJjbGUJbG9jay1maWxsEGluZm8tY2lyY2xlLWZpbGwIbWFwLWZpbGwIbGlzdC1kb3QKcGhvbmUtZmlsbA9wbGF5LXJpZ2h0LWZpbGwOcGxheS1sZWZ0LWZpbGwLcGxheS1jaXJjbGUJZ2lmdC1maWxsDWludGVncmFsLWZpbGwKcGxheS1yaWdodApwaG90by1maWxsDHB1c2hwaW4tZmlsbA5xcS1jaXJjbGUtZmlsbAVwaG9uZQpzaGFyZS1maWxsFHF1ZXN0aW9uLWNpcmNsZS1maWxsCnZvbHVtZS1vZmYJcGxheS1sZWZ0B3dhcm5pbmcTbW9tZW50cy1jaXJjZWwtZmlsbApyZWQtcGFja2V0DHNoYXJlLXNxdWFyZQ5za2lwLWJhY2stbGVmdAx3YXJuaW5nLWZpbGwPdm9sdW1lLW9mZi1maWxsDXNob3BwaW5nLWNhcnQId2lmaS1vZmYSd2VpeGluLWNpcmNsZS1maWxsCnRyYXNoLWZpbGwTdHdpdHRlci1jaXJjbGUtZmlsbAxzZXR0aW5nLWZpbGwHcHVzaHBpbhJzaG9wcGluZy1jYXJ0LWZpbGwEc2NhbgZzZWFyY2gIYXJyb3ctdXAOYXJyb3ctZG93bndhcmQKYXBwbGUtZmlsbA1hcnJvdy11cC1maWxsD2Fycm93LWRvd24tZmlsbAdhY2NvdW50DmFycm93LWxlZnR3YXJkC2Fycm93LXJpZ2h0CmFycm93LWRvd24JY2hhdC1maWxsBmF0dGFjaAxhcnJvdy11cHdhcmQGY2FtZXJhEGNoZWNrbWFyay1jaXJjbGUPYXJyb3ctcmlnaHR3YXJkCmFycm93LWxlZnQDYmFnCGNhci1maWxsCWNoZWNrbWFyawpjbG9jay1maWxsC2NvdXBvbi1maWxsCWJhY2tzcGFjZQxjbG9zZS1jaXJjbGUDY2FyC2NhbWVyYS1maWxsBGJlbGwMYWNjb3VudC1maWxsEWVycm9yLWNpcmNsZS1maWxsBGNoYXQJZW1wdHktY2FyDWNoZWNrYm94LW1hcmsFY2xvc2UIY2FsZW5kYXIIZWRpdC1wZW4GY291cG9uCmtlZnUtZXJtYWkLZW1wdHktZmF2b3IDZXllA21hcBFjbG9zZS1jaXJjbGUtZmlsbBVjaGVja21hcmstY2lyY2xlLWZpbGwLZW1wdHktb3JkZXIFY2xvY2sDbWljDGVycm9yLWNpcmNsZQ1tb3JlLWRvdC1maWxsCGRvd25sb2FkCmVtcHR5LWRhdGEKZW1wdHktbGlzdAVlbWFpbANtYW4MZW1wdHktc2VhcmNoDWVkaXQtcGVuLWZpbGwEaG9tZQVtb3ZpZRBlbXB0eS1wZXJtaXNzaW9uCmVtcHR5LW5ld3MOZmlsZS10ZXh0LWZpbGwEZ2lmdAplbWFpbC1maWxsEG1vcmUtY2lyY2xlLWZpbGwNZW1wdHktaGlzdG9yeQlmaWxlLXRleHQPZXllLW9mZi1vdXRsaW5lDWVtcHR5LWFkZHJlc3MKaGVhcnQtZmlsbARncmlkCWxvY2stb3Blbglob21lLWZpbGwFbGV2ZWwEbGlzdAdtaWMtb2ZmEHBsYXktY2lyY2xlLWZpbGwNdGh1bWItdXAtZmlsbAAAAAA=") format("truetype"); +} +.uv-icon.data-v-7cc7ad3f { + display: flex; + align-items: center; +} +.uv-icon--left.data-v-7cc7ad3f { + flex-direction: row-reverse; + align-items: center; +} +.uv-icon--right.data-v-7cc7ad3f { + flex-direction: row; + align-items: center; +} +.uv-icon--top.data-v-7cc7ad3f { + flex-direction: column-reverse; + justify-content: center; +} +.uv-icon--bottom.data-v-7cc7ad3f { + flex-direction: column; + justify-content: center; +} +.uv-icon__icon.data-v-7cc7ad3f { + font-family: uvicon-iconfont; + position: relative; + display: flex; + flex-direction: row; + align-items: center; +} +.uv-icon__icon--primary.data-v-7cc7ad3f { + color: #3c9cff; +} +.uv-icon__icon--success.data-v-7cc7ad3f { + color: #5ac725; +} +.uv-icon__icon--error.data-v-7cc7ad3f { + color: #f56c6c; +} +.uv-icon__icon--warning.data-v-7cc7ad3f { + color: #f9ae3d; +} +.uv-icon__icon--info.data-v-7cc7ad3f { + color: #909399; +} +.uv-icon__img.data-v-7cc7ad3f { + height: auto; + will-change: transform; +} +.uv-icon__label.data-v-7cc7ad3f { + line-height: 1; +} \ No newline at end of file diff --git a/unpackage/dist/dev/mp-weixin/node-modules/@climblee/uv-ui/components/uv-line/uv-line.js b/unpackage/dist/dev/mp-weixin/node-modules/@climblee/uv-ui/components/uv-line/uv-line.js new file mode 100644 index 0000000..e80b391 --- /dev/null +++ b/unpackage/dist/dev/mp-weixin/node-modules/@climblee/uv-ui/components/uv-line/uv-line.js @@ -0,0 +1,35 @@ +"use strict"; +const common_vendor = require("../../../../../common/vendor.js"); +const _sfc_main = { + name: "uv-line", + mixins: [common_vendor.mpMixin, common_vendor.mixin, common_vendor.props$7], + computed: { + lineStyle() { + const style = {}; + style.margin = this.margin; + if (this.direction === "row") { + style.borderBottomWidth = "1px"; + style.borderBottomStyle = this.dashed ? "dashed" : "solid"; + style.width = this.$uv.addUnit(this.length); + if (this.hairline) + style.transform = "scaleY(0.5)"; + } else { + style.borderLeftWidth = "1px"; + style.borderLeftStyle = this.dashed ? "dashed" : "solid"; + style.height = this.$uv.addUnit(this.length); + if (this.hairline) + style.transform = "scaleX(0.5)"; + } + style.borderColor = this.color; + return this.$uv.deepMerge(style, this.$uv.addStyle(this.customStyle)); + } + } +}; +function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) { + return { + a: common_vendor.s($options.lineStyle) + }; +} +const Component = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["render", _sfc_render], ["__scopeId", "data-v-0a68c4fc"]]); +wx.createComponent(Component); +//# sourceMappingURL=../../../../../../.sourcemap/mp-weixin/node-modules/@climblee/uv-ui/components/uv-line/uv-line.js.map diff --git a/unpackage/dist/dev/mp-weixin/node-modules/@climblee/uv-ui/components/uv-line/uv-line.json b/unpackage/dist/dev/mp-weixin/node-modules/@climblee/uv-ui/components/uv-line/uv-line.json new file mode 100644 index 0000000..e8cfaaf --- /dev/null +++ b/unpackage/dist/dev/mp-weixin/node-modules/@climblee/uv-ui/components/uv-line/uv-line.json @@ -0,0 +1,4 @@ +{ + "component": true, + "usingComponents": {} +} \ No newline at end of file diff --git a/unpackage/dist/dev/mp-weixin/node-modules/@climblee/uv-ui/components/uv-line/uv-line.wxml b/unpackage/dist/dev/mp-weixin/node-modules/@climblee/uv-ui/components/uv-line/uv-line.wxml new file mode 100644 index 0000000..39d05ee --- /dev/null +++ b/unpackage/dist/dev/mp-weixin/node-modules/@climblee/uv-ui/components/uv-line/uv-line.wxml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/unpackage/dist/dev/mp-weixin/node-modules/@climblee/uv-ui/components/uv-line/uv-line.wxss b/unpackage/dist/dev/mp-weixin/node-modules/@climblee/uv-ui/components/uv-line/uv-line.wxss new file mode 100644 index 0000000..92218a9 --- /dev/null +++ b/unpackage/dist/dev/mp-weixin/node-modules/@climblee/uv-ui/components/uv-line/uv-line.wxss @@ -0,0 +1,28 @@ +/** + * 这里是uni-app内置的常用样式变量 + * + * uni-app 官方扩展插件及插件市场(https://ext.dcloud.net.cn)上很多三方插件均使用了这些样式变量 + * 如果你是插件开发者,建议你使用scss预处理,并在插件代码中直接使用这些变量(无需 import 这个文件),方便用户通过搭积木的方式开发整体风格一致的App + * + */ +/** + * 如果你是App开发者(插件使用者),你可以通过修改这些变量来定制自己的插件主题,实现自定义主题功能 + * + * 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件 + */ +/* 颜色变量 */ +/* 行为相关颜色 */ +/* 文字基本颜色 */ +/* 背景颜色 */ +/* 边框颜色 */ +/* 尺寸变量 */ +/* 文字尺寸 */ +/* 图片尺寸 */ +/* Border Radius */ +/* 水平间距 */ +/* 垂直间距 */ +/* 透明度 */ +/* 文章场景相关 */ +.uv-line.data-v-0a68c4fc { + vertical-align: middle; +} \ No newline at end of file diff --git a/unpackage/dist/dev/mp-weixin/node-modules/@climblee/uv-ui/components/uv-notice-bar/uv-notice-bar.js b/unpackage/dist/dev/mp-weixin/node-modules/@climblee/uv-ui/components/uv-notice-bar/uv-notice-bar.js new file mode 100644 index 0000000..893375e --- /dev/null +++ b/unpackage/dist/dev/mp-weixin/node-modules/@climblee/uv-ui/components/uv-notice-bar/uv-notice-bar.js @@ -0,0 +1,85 @@ +"use strict"; +const common_vendor = require("../../../../../common/vendor.js"); +const _sfc_main = { + name: "uv-notice-bar", + emits: ["click", "close", "change"], + mixins: [common_vendor.mpMixin, common_vendor.mixin, common_vendor.props], + data() { + return { + show: true + }; + }, + methods: { + // 点击通告栏 + click(index) { + this.$emit("click", index); + if (this.url && this.linkType) { + this.openPage(); + } + }, + // 点击关闭按钮 + close() { + this.show = false; + this.$emit("close"); + }, + // 竖向滚动时触发 + change(index) { + this.$emit("change", index); + } + } +}; +if (!Array) { + const _easycom_uv_column_notice2 = common_vendor.resolveComponent("uv-column-notice"); + const _easycom_uv_row_notice2 = common_vendor.resolveComponent("uv-row-notice"); + (_easycom_uv_column_notice2 + _easycom_uv_row_notice2)(); +} +const _easycom_uv_column_notice = () => "../uv-column-notice/uv-column-notice.js"; +const _easycom_uv_row_notice = () => "../uv-row-notice/uv-row-notice.js"; +if (!Math) { + (_easycom_uv_column_notice + _easycom_uv_row_notice)(); +} +function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) { + return common_vendor.e({ + a: $data.show + }, $data.show ? common_vendor.e({ + b: _ctx.direction === "column" || _ctx.direction === "row" && _ctx.step + }, _ctx.direction === "column" || _ctx.direction === "row" && _ctx.step ? { + c: common_vendor.o($options.close), + d: common_vendor.o($options.click), + e: common_vendor.o($options.change), + f: common_vendor.p({ + color: _ctx.color, + bgColor: _ctx.bgColor, + text: _ctx.text, + mode: _ctx.mode, + step: _ctx.step, + icon: _ctx.icon, + ["disable-touch"]: _ctx.disableTouch, + ["disable-scroll"]: _ctx.disableScroll, + fontSize: _ctx.fontSize, + duration: _ctx.duration + }) + } : { + g: common_vendor.o($options.close), + h: common_vendor.o($options.click), + i: common_vendor.p({ + color: _ctx.color, + bgColor: _ctx.bgColor, + text: _ctx.text, + mode: _ctx.mode, + fontSize: _ctx.fontSize, + speed: _ctx.speed, + url: _ctx.url, + linkType: _ctx.linkType, + icon: _ctx.icon + }) + }, { + j: common_vendor.s({ + backgroundColor: _ctx.bgColor + }), + k: common_vendor.s(_ctx.$uv.addStyle(_ctx.customStyle)) + }) : {}); +} +const Component = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["render", _sfc_render], ["__scopeId", "data-v-47251d11"]]); +wx.createComponent(Component); +//# sourceMappingURL=../../../../../../.sourcemap/mp-weixin/node-modules/@climblee/uv-ui/components/uv-notice-bar/uv-notice-bar.js.map diff --git a/unpackage/dist/dev/mp-weixin/node-modules/@climblee/uv-ui/components/uv-notice-bar/uv-notice-bar.json b/unpackage/dist/dev/mp-weixin/node-modules/@climblee/uv-ui/components/uv-notice-bar/uv-notice-bar.json new file mode 100644 index 0000000..cd8263d --- /dev/null +++ b/unpackage/dist/dev/mp-weixin/node-modules/@climblee/uv-ui/components/uv-notice-bar/uv-notice-bar.json @@ -0,0 +1,7 @@ +{ + "component": true, + "usingComponents": { + "uv-column-notice": "../uv-column-notice/uv-column-notice", + "uv-row-notice": "../uv-row-notice/uv-row-notice" + } +} \ No newline at end of file diff --git a/unpackage/dist/dev/mp-weixin/node-modules/@climblee/uv-ui/components/uv-notice-bar/uv-notice-bar.wxml b/unpackage/dist/dev/mp-weixin/node-modules/@climblee/uv-ui/components/uv-notice-bar/uv-notice-bar.wxml new file mode 100644 index 0000000..22f5959 --- /dev/null +++ b/unpackage/dist/dev/mp-weixin/node-modules/@climblee/uv-ui/components/uv-notice-bar/uv-notice-bar.wxml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/unpackage/dist/dev/mp-weixin/node-modules/@climblee/uv-ui/components/uv-notice-bar/uv-notice-bar.wxss b/unpackage/dist/dev/mp-weixin/node-modules/@climblee/uv-ui/components/uv-notice-bar/uv-notice-bar.wxss new file mode 100644 index 0000000..a865e18 --- /dev/null +++ b/unpackage/dist/dev/mp-weixin/node-modules/@climblee/uv-ui/components/uv-notice-bar/uv-notice-bar.wxss @@ -0,0 +1,39 @@ +/** + * 这里是uni-app内置的常用样式变量 + * + * uni-app 官方扩展插件及插件市场(https://ext.dcloud.net.cn)上很多三方插件均使用了这些样式变量 + * 如果你是插件开发者,建议你使用scss预处理,并在插件代码中直接使用这些变量(无需 import 这个文件),方便用户通过搭积木的方式开发整体风格一致的App + * + */ +/** + * 如果你是App开发者(插件使用者),你可以通过修改这些变量来定制自己的插件主题,实现自定义主题功能 + * + * 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件 + */ +/* 颜色变量 */ +/* 行为相关颜色 */ +/* 文字基本颜色 */ +/* 背景颜色 */ +/* 边框颜色 */ +/* 尺寸变量 */ +/* 文字尺寸 */ +/* 图片尺寸 */ +/* Border Radius */ +/* 水平间距 */ +/* 垂直间距 */ +/* 透明度 */ +/* 文章场景相关 */ +view.data-v-47251d11, scroll-view.data-v-47251d11, swiper-item.data-v-47251d11 { + display: flex; + flex-direction: column; + flex-shrink: 0; + flex-grow: 0; + flex-basis: auto; + align-items: stretch; + align-content: flex-start; +} +.uv-notice-bar.data-v-47251d11 { + overflow: hidden; + padding: 9px 12px; + flex: 1; +} \ No newline at end of file diff --git a/unpackage/dist/dev/mp-weixin/node-modules/@climblee/uv-ui/components/uv-row-notice/uv-row-notice.js b/unpackage/dist/dev/mp-weixin/node-modules/@climblee/uv-ui/components/uv-row-notice/uv-row-notice.js new file mode 100644 index 0000000..0f0c98f --- /dev/null +++ b/unpackage/dist/dev/mp-weixin/node-modules/@climblee/uv-ui/components/uv-row-notice/uv-row-notice.js @@ -0,0 +1,150 @@ +"use strict"; +const common_vendor = require("../../../../../common/vendor.js"); +const _sfc_main = { + name: "uv-row-notice", + emits: ["click", "close"], + mixins: [common_vendor.mpMixin, common_vendor.mixin, common_vendor.props$3], + data() { + return { + animationDuration: "0", + // 动画执行时间 + animationPlayState: "paused", + // 动画的开始和结束执行 + // nvue下,内容发生变化,导致滚动宽度也变化,需要标志为是否需要重新计算宽度 + // 不能在内容变化时直接重新计算,因为nvue的animation模块上一次的滚动不是刚好结束,会有影响 + nvueInit: true, + show: true + }; + }, + watch: { + text: { + immediate: true, + handler(newValue, oldValue) { + this.vue(); + if (!this.$uv.test.string(newValue)) { + this.$uv.error("noticebar组件direction为row时,要求text参数为字符串形式"); + } + } + }, + fontSize() { + this.vue(); + }, + speed() { + this.vue(); + } + }, + computed: { + // 文字内容的样式 + textStyle() { + let style = {}; + style.color = this.color; + style.fontSize = this.$uv.addUnit(this.fontSize); + return style; + }, + animationStyle() { + let style = {}; + style.animationDuration = this.animationDuration; + style.animationPlayState = this.animationPlayState; + return style; + }, + // 内部对用户传入的数据进一步分割,放到多个text标签循环,否则如果用户传入的字符串很长(100个字符以上) + // 放在一个text标签中进行滚动,在低端安卓机上,动画可能会出现抖动现象,需要分割到多个text中可解决此问题 + innerText() { + let result = [], len = 20; + const textArr = this.text ? this.text.split("") : []; + for (let i = 0; i < textArr.length; i += len) { + result.push(textArr.slice(i, i + len).join("")); + } + return result; + } + }, + mounted() { + this.init(); + }, + methods: { + init() { + this.vue(); + if (!this.$uv.test.string(this.text)) { + this.$uv.error("noticebar组件direction为row时,要求text参数为字符串形式"); + } + }, + // vue版处理 + async vue() { + let textWidth = 0; + await this.$uv.sleep(); + textWidth = (await this.$uvGetRect(".uv-notice__content__text")).width; + (await this.$uvGetRect(".uv-notice__content")).width; + this.animationDuration = `${textWidth / this.$uv.getPx(this.speed)}s`; + this.animationPlayState = "paused"; + setTimeout(() => { + this.animationPlayState = "running"; + }, 10); + }, + // nvue版处理 + async nvue() { + }, + loopAnimation(textWidth, boxWidth) { + }, + getNvueRect(el) { + }, + // 点击通告栏 + clickHandler(index) { + this.$emit("click"); + }, + // 点击右侧按钮,需要判断点击的是关闭图标还是箭头图标 + close() { + this.$emit("close"); + } + } +}; +if (!Array) { + const _easycom_uv_icon2 = common_vendor.resolveComponent("uv-icon"); + _easycom_uv_icon2(); +} +const _easycom_uv_icon = () => "../uv-icon/uv-icon.js"; +if (!Math) { + _easycom_uv_icon(); +} +function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) { + return common_vendor.e({ + a: _ctx.icon + }, _ctx.icon ? { + b: common_vendor.p({ + name: _ctx.icon, + color: _ctx.color, + size: "19" + }) + } : {}, { + c: common_vendor.f($options.innerText, (item, index, i0) => { + return { + a: common_vendor.t(item), + b: index + }; + }), + d: common_vendor.s($options.textStyle), + e: common_vendor.s($options.animationStyle), + f: ["link", "closable"].includes(_ctx.mode) + }, ["link", "closable"].includes(_ctx.mode) ? common_vendor.e({ + g: _ctx.mode === "link" + }, _ctx.mode === "link" ? { + h: common_vendor.p({ + name: "arrow-right", + size: 17, + color: _ctx.color + }) + } : {}, { + i: _ctx.mode === "closable" + }, _ctx.mode === "closable" ? { + j: common_vendor.o($options.close), + k: common_vendor.p({ + name: "close", + size: 16, + color: _ctx.color + }) + } : {}) : {}, { + l: common_vendor.o((...args) => $options.clickHandler && $options.clickHandler(...args)) + }); +} +const Component = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["render", _sfc_render], ["__scopeId", "data-v-c6b51d8b"]]); +wx.createComponent(Component); +//# sourceMappingURL=../../../../../../.sourcemap/mp-weixin/node-modules/@climblee/uv-ui/components/uv-row-notice/uv-row-notice.js.map diff --git a/unpackage/dist/dev/mp-weixin/node-modules/@climblee/uv-ui/components/uv-row-notice/uv-row-notice.json b/unpackage/dist/dev/mp-weixin/node-modules/@climblee/uv-ui/components/uv-row-notice/uv-row-notice.json new file mode 100644 index 0000000..700e739 --- /dev/null +++ b/unpackage/dist/dev/mp-weixin/node-modules/@climblee/uv-ui/components/uv-row-notice/uv-row-notice.json @@ -0,0 +1,6 @@ +{ + "component": true, + "usingComponents": { + "uv-icon": "../uv-icon/uv-icon" + } +} \ No newline at end of file diff --git a/unpackage/dist/dev/mp-weixin/node-modules/@climblee/uv-ui/components/uv-row-notice/uv-row-notice.wxml b/unpackage/dist/dev/mp-weixin/node-modules/@climblee/uv-ui/components/uv-row-notice/uv-row-notice.wxml new file mode 100644 index 0000000..2cb279e --- /dev/null +++ b/unpackage/dist/dev/mp-weixin/node-modules/@climblee/uv-ui/components/uv-row-notice/uv-row-notice.wxml @@ -0,0 +1 @@ +{{item.a}} \ No newline at end of file diff --git a/unpackage/dist/dev/mp-weixin/node-modules/@climblee/uv-ui/components/uv-row-notice/uv-row-notice.wxss b/unpackage/dist/dev/mp-weixin/node-modules/@climblee/uv-ui/components/uv-row-notice/uv-row-notice.wxss new file mode 100644 index 0000000..6626937 --- /dev/null +++ b/unpackage/dist/dev/mp-weixin/node-modules/@climblee/uv-ui/components/uv-row-notice/uv-row-notice.wxss @@ -0,0 +1,74 @@ +/** + * 这里是uni-app内置的常用样式变量 + * + * uni-app 官方扩展插件及插件市场(https://ext.dcloud.net.cn)上很多三方插件均使用了这些样式变量 + * 如果你是插件开发者,建议你使用scss预处理,并在插件代码中直接使用这些变量(无需 import 这个文件),方便用户通过搭积木的方式开发整体风格一致的App + * + */ +/** + * 如果你是App开发者(插件使用者),你可以通过修改这些变量来定制自己的插件主题,实现自定义主题功能 + * + * 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件 + */ +/* 颜色变量 */ +/* 行为相关颜色 */ +/* 文字基本颜色 */ +/* 背景颜色 */ +/* 边框颜色 */ +/* 尺寸变量 */ +/* 文字尺寸 */ +/* 图片尺寸 */ +/* Border Radius */ +/* 水平间距 */ +/* 垂直间距 */ +/* 透明度 */ +/* 文章场景相关 */ +view.data-v-c6b51d8b, scroll-view.data-v-c6b51d8b, swiper-item.data-v-c6b51d8b { + display: flex; + flex-direction: column; + flex-shrink: 0; + flex-grow: 0; + flex-basis: auto; + align-items: stretch; + align-content: flex-start; +} +.uv-notice.data-v-c6b51d8b { + display: flex; + flex-direction: row; + align-items: center; + justify-content: space-between; +} +.uv-notice__left-icon.data-v-c6b51d8b { + align-items: center; + margin-right: 5px; +} +.uv-notice__right-icon.data-v-c6b51d8b { + margin-left: 5px; + align-items: center; +} +.uv-notice__content.data-v-c6b51d8b { + text-align: right; + flex: 1; + display: flex; + flex-direction: row; + flex-wrap: nowrap; + overflow: hidden; +} +.uv-notice__content__text.data-v-c6b51d8b { + font-size: 14px; + color: #f9ae3d; + padding-left: 100%; + word-break: keep-all; + white-space: nowrap; + animation: uv-loop-animation-c6b51d8b 10s linear infinite both; + display: flex; + flex-direction: row; +} +@keyframes uv-loop-animation-c6b51d8b { +0% { + transform: translate3d(0, 0, 0); +} +100% { + transform: translate3d(-100%, 0, 0); +} +} \ No newline at end of file diff --git a/unpackage/dist/dev/mp-weixin/pages/device/detail.js b/unpackage/dist/dev/mp-weixin/pages/device/detail.js index a00d26a..1ee6e60 100644 --- a/unpackage/dist/dev/mp-weixin/pages/device/detail.js +++ b/unpackage/dist/dev/mp-weixin/pages/device/detail.js @@ -295,14 +295,14 @@ const _sfc_main = { a: common_vendor.t(deviceStatus.text), b: common_vendor.n(deviceStatus.class), c: common_vendor.t(deviceId.value), - d: common_assets._imports_0$3, + d: common_assets._imports_0$4, e: common_vendor.t(deviceLocation.value), f: common_vendor.t(deviceFeeConfig.value.maxHourPrice), g: common_vendor.t(deviceInfo.value.depositAmount), h: common_vendor.t(hasActiveOrder.value ? "归还设备" : "免押租借"), i: hasActiveOrder.value ? 1 : "", j: common_vendor.o(($event) => handleRent("wx-score-pay")), - k: common_assets._imports_0$2, + k: common_assets._imports_0$3, l: showPhoneAuthPopup.value }, showPhoneAuthPopup.value ? { m: common_vendor.o(() => { diff --git a/unpackage/dist/dev/mp-weixin/pages/index/index.js b/unpackage/dist/dev/mp-weixin/pages/index/index.js index 0fdff84..029a54c 100644 --- a/unpackage/dist/dev/mp-weixin/pages/index/index.js +++ b/unpackage/dist/dev/mp-weixin/pages/index/index.js @@ -4,9 +4,16 @@ const common_assets = require("../../common/assets.js"); const util_index = require("../../util/index.js"); const config_url = require("../../config/url.js"); const config_user = require("../../config/user.js"); -const utils_amap = require("../../utils/amap.js"); +const utils_mapUtils = require("../../utils/mapUtils.js"); +if (!Array) { + const _easycom_uv_notice_bar2 = common_vendor.resolveComponent("uv-notice-bar"); + const _easycom_uv_icon2 = common_vendor.resolveComponent("uv-icon"); + (_easycom_uv_notice_bar2 + _easycom_uv_icon2)(); +} +const _easycom_uv_notice_bar = () => "../../node-modules/@climblee/uv-ui/components/uv-notice-bar/uv-notice-bar.js"; +const _easycom_uv_icon = () => "../../node-modules/@climblee/uv-ui/components/uv-icon/uv-icon.js"; if (!Math) { - MapComponent(); + (_easycom_uv_notice_bar + MapComponent + _easycom_uv_icon)(); } const MapComponent = () => "../../components/MapComponent.js"; const _sfc_main = { @@ -21,6 +28,32 @@ const _sfc_main = { const showPhoneAuthPopup = common_vendor.ref(false); const isLocationInitialized = common_vendor.ref(false); const showLocationPopup = common_vendor.ref(false); + const guideSteps = common_vendor.ref([ + { + title: "扫码使用", + desc: "找到附近设备,扫描设备上的二维码即可开始租借" + }, + { + title: "免押金支付", + desc: "无需支付押金,使用支付分免押即可完成租借" + }, + { + title: "开始使用", + desc: "设备自动解锁,风扇弹出后取出即可开始使用" + }, + { + title: "归还设备", + desc: "使用完毕后,按照设备规格要求将风扇还入即可结束订单" + } + ]); + const noticeText = common_vendor.ref("消费规则:每小时5元,不足1小时按1小时计费,最高24小时封顶,请爱护设备,使用后请及时归还"); + const formatDistance = (distanceInMeters) => { + if (distanceInMeters < 1e3) { + return `${Math.round(distanceInMeters)}m`; + } else { + return `${(distanceInMeters / 1e3).toFixed(1)}km`; + } + }; const mapRef = common_vendor.ref(null); common_vendor.computed(() => { if (userLocation.value && userLocation.value.address) { @@ -36,51 +69,63 @@ const _sfc_main = { const init = async () => { isLoading.value = true; try { - await getUserLocation(); + if (true) { + utils_mapUtils.testDistanceCalculation(); + } + await getUserLocationAndAddress(); await loadPositions(); } catch (error) { - common_vendor.index.__f__("error", "at pages/index/index.vue:177", "初始化失败:", error); + common_vendor.index.__f__("error", "at pages/index/index.vue:241", "初始化失败:", error); await loadPositions(); } finally { isLoading.value = false; } }; - const getUserLocation = async () => { + const getUserLocationAndAddress = async () => { try { - const location = await new Promise((resolve, reject) => { - common_vendor.index.getLocation({ - type: "gcj02", - success: resolve, - fail: reject - }); - }); + const location = await utils_mapUtils.getUserLocation(); userLocation.value = { longitude: location.longitude, latitude: location.latitude }; + try { + common_vendor.index.setStorageSync("userLocation", { + longitude: location.longitude, + latitude: location.latitude + }); + } catch (e) { + common_vendor.index.__f__("warn", "at pages/index/index.vue:267", "缓存基础定位信息失败:", e); + } if (!isLocationInitialized.value) { isLocationInitialized.value = true; } try { - const addressResult = await utils_amap.AmapUtil.regeocode(location.longitude, location.latitude); + const addressResult = await utils_mapUtils.getRegeo(location.longitude, location.latitude); if (addressResult.success) { const addressInfo = addressResult.data; userLocation.value.address = addressInfo.formatted_address; userLocation.value.city = addressInfo.addressComponent.city; userLocation.value.district = addressInfo.addressComponent.district; + try { + common_vendor.index.setStorageSync("userLocation", { + longitude: userLocation.value.longitude, + latitude: userLocation.value.latitude, + address: userLocation.value.address, + city: userLocation.value.city, + district: userLocation.value.district + }); + } catch (e) { + common_vendor.index.__f__("warn", "at pages/index/index.vue:294", "缓存带地址的定位信息失败:", e); + } } } catch (error) { } setTimeout(async () => { await loadPositions(); common_vendor.index.hideLoading(); - common_vendor.index.showToast({ - title: "定位成功", - icon: "success" - }); }, 800); } catch (error) { - common_vendor.index.__f__("error", "at pages/index/index.vue:231", "获取位置失败:", error); + common_vendor.index.__f__("error", "at pages/index/index.vue:309", "获取位置失败:", error); common_vendor.index.showToast({ title: "获取位置失败,显示默认地图", icon: "none" @@ -93,11 +138,15 @@ const _sfc_main = { await util_index.wxLogin(); } const res = await common_vendor.index.request({ - url: `${config_url.URL}/device/position/list`, + url: `${config_url.URL}/device/position/app/list`, method: "GET", header: { "Authorization": "Bearer " + common_vendor.index.getStorageSync("token"), "Clientid": common_vendor.index.getStorageSync("client_id") + }, + data: { + latitude: userLocation.value.latitude, + longitude: userLocation.value.longitude } }); if (res.statusCode === 200 && res.data.code === 200) { @@ -105,13 +154,13 @@ const _sfc_main = { calculateDistances(); filteredPositions.value = [...positionList.value]; } else { - common_vendor.index.__f__("error", "at pages/index/index.vue:259", "获取场地列表失败:", res.data.msg); + common_vendor.index.__f__("error", "at pages/index/index.vue:341", "获取场地列表失败:", res.data.msg); } } catch (error) { - common_vendor.index.__f__("error", "at pages/index/index.vue:262", "获取场地列表异常:", error); + common_vendor.index.__f__("error", "at pages/index/index.vue:344", "获取场地列表异常:", error); } }; - const calculateDistances = (centerPoint = null) => { + const calculateDistances = async (centerPoint = null) => { var _a; const center = centerPoint || userLocation.value || ((_a = mapRef.value) == null ? void 0 : _a.mapCenter); if (!center || typeof center.longitude === "undefined" || typeof center.latitude === "undefined") { @@ -120,21 +169,23 @@ const _sfc_main = { positionList.value.forEach((item) => { if (item.longitude && item.latitude) { try { - const distance = utils_amap.AmapUtil.calculateDistance( + const distanceInMeters = utils_mapUtils.calculateDistanceSync( center.latitude, center.longitude, parseFloat(item.latitude), parseFloat(item.longitude) ); - item.distance = distance.toFixed(1); + item.distance = formatDistance(distanceInMeters); + item.distanceInMeters = distanceInMeters; } catch (error) { - common_vendor.index.__f__("error", "at pages/index/index.vue:286", "计算距离异常:", error, item); - item.distance = "999.0"; + common_vendor.index.__f__("error", "at pages/index/index.vue:372", "计算距离异常:", error, item); + item.distance = "999.0km"; + item.distanceInMeters = 999e3; } } }); positionList.value.sort((a, b) => { - return (parseFloat(a.distance) || 999) - (parseFloat(b.distance) || 999); + return (a.distanceInMeters || 999e3) - (b.distanceInMeters || 999e3); }); }; const loadPositionsByCenter = async (center) => { @@ -153,21 +204,23 @@ const _sfc_main = { if (res.statusCode === 200 && res.data.code === 200) { positionList.value = res.data.rows || []; calculateDistances(center); - const maxDistance = 10; + const maxDistanceInMeters = 1e4; filteredPositions.value = positionList.value.filter((item) => { - return !item.distance || parseFloat(item.distance) <= maxDistance; + return !item.distanceInMeters || item.distanceInMeters <= maxDistanceInMeters; }); } else { - common_vendor.index.__f__("error", "at pages/index/index.vue:326", "根据地图中心加载场地失败:", res.data.msg); + common_vendor.index.__f__("error", "at pages/index/index.vue:413", "根据地图中心加载场地失败:", res.data.msg); positionList.value = []; filteredPositions.value = []; } } catch (error) { - common_vendor.index.__f__("error", "at pages/index/index.vue:331", "根据地图中心加载场地异常:", error); + common_vendor.index.__f__("error", "at pages/index/index.vue:418", "根据地图中心加载场地异常:", error); } }; const handleRelocate = async () => { - common_vendor.index.showLoading({ title: "定位中..." }); + common_vendor.index.showLoading({ + title: "定位中..." + }); common_vendor.index.reLaunch({ url: "/pages/index/index" }); @@ -206,9 +259,6 @@ const _sfc_main = { address: position.location }); }; - const toggleSheet = () => { - isExpanded.value = !isExpanded.value; - }; const handleScan = async () => { try { const scanResult = await new Promise((resolve, reject) => { @@ -287,14 +337,14 @@ const _sfc_main = { }); } } catch (error) { - common_vendor.index.__f__("error", "at pages/index/index.vue:492", "获取设备信息异常:", error); + common_vendor.index.__f__("error", "at pages/index/index.vue:581", "获取设备信息异常:", error); common_vendor.index.navigateTo({ url: `/pages/device/detail?deviceNo=${deviceNo}` }); } } } catch (error) { - common_vendor.index.__f__("error", "at pages/index/index.vue:499", "扫码处理失败:", error); + common_vendor.index.__f__("error", "at pages/index/index.vue:588", "扫码处理失败:", error); common_vendor.index.showToast({ title: "扫码失败", icon: "none" @@ -314,37 +364,56 @@ const _sfc_main = { }; return (_ctx, _cache) => { return common_vendor.e({ - a: !isLoading.value && userLocation.value + a: common_assets._imports_0$1, + b: common_vendor.p({ + text: noticeText.value, + mode: "link", + speed: 50, + ["show-icon"]: true, + color: "#2196F3", + ["bg-color"]: "#E3F2FD", + icon: "volume" + }), + c: !isLoading.value && userLocation.value }, !isLoading.value && userLocation.value ? { - b: common_vendor.sr(mapRef, "1cf27b2a-0", { + d: common_vendor.sr(mapRef, "1cf27b2a-1", { "k": "mapRef" }), - c: common_vendor.o(handleRelocate), - d: common_vendor.o(handleScan), - e: common_vendor.o(showLocationList), - f: common_vendor.o(selectPosition), - g: common_vendor.o(onMapCenterChange), - h: common_vendor.p({ + e: common_vendor.o(handleRelocate), + f: common_vendor.o(handleScan), + g: common_vendor.o(showLocationList), + h: common_vendor.o(selectPosition), + i: common_vendor.o(onMapCenterChange), + j: common_vendor.p({ userLocation: userLocation.value, positionList: positionList.value, filteredPositions: filteredPositions.value, searchKeyword: searchKeyword.value }) } : {}, { - i: isLoading.value || !userLocation.value + k: common_vendor.f(guideSteps.value, (step, index, i0) => { + return { + a: common_vendor.t(index + 1), + b: common_vendor.t(step.title), + c: common_vendor.t(step.desc), + d: index + }; + }), + l: isLoading.value || !userLocation.value }, isLoading.value || !userLocation.value ? {} : {}, { - j: showLocationPopup.value + m: showLocationPopup.value }, showLocationPopup.value ? common_vendor.e({ - k: common_vendor.o(hideLocationList), - l: common_vendor.o(toggleSheet), - m: common_vendor.t(filteredPositions.value.length), - n: common_assets._imports_0, - o: common_vendor.o(hideLocationList), - p: common_vendor.f(filteredPositions.value, (item, index, i0) => { + n: common_vendor.o(hideLocationList), + o: common_vendor.t(filteredPositions.value.length), + p: common_vendor.p({ + name: "close" + }), + q: common_vendor.o(hideLocationList), + r: common_vendor.f(filteredPositions.value, (item, index, i0) => { return common_vendor.e({ a: common_vendor.t(item.name), - b: common_vendor.t(item.describe), - c: common_vendor.t(item.location), + b: common_vendor.t(item.status === "online" ? "可租借/归还" : "不可租借/归还"), + c: common_vendor.n(item.status), d: item.workTime && item.workTime !== "0" }, item.workTime && item.workTime !== "0" ? { e: common_vendor.t(item.workTime) @@ -360,20 +429,19 @@ const _sfc_main = { l: common_vendor.o(($event) => selectPositionFromPopup(item), item.positionId) }); }), - q: common_assets._imports_0, - r: filteredPositions.value.length === 0 && !isLoading.value + s: filteredPositions.value.length === 0 && !isLoading.value }, filteredPositions.value.length === 0 && !isLoading.value ? { - s: common_assets._imports_0 + t: common_assets._imports_0 } : {}, { - t: isExpanded.value ? 1 : "" + v: isExpanded.value ? 1 : "" }) : {}, { - v: isLoading.value + w: isLoading.value }, isLoading.value ? {} : {}, { - w: showPhoneAuthPopup.value + x: showPhoneAuthPopup.value }, showPhoneAuthPopup.value ? { - x: common_vendor.o(($event) => showPhoneAuthPopup.value = false), - y: common_vendor.o(onGetPhoneNumber), - z: common_vendor.o(($event) => showPhoneAuthPopup.value = false) + y: common_vendor.o(($event) => showPhoneAuthPopup.value = false), + z: common_vendor.o(onGetPhoneNumber), + A: common_vendor.o(($event) => showPhoneAuthPopup.value = false) } : {}); }; } diff --git a/unpackage/dist/dev/mp-weixin/pages/index/index.json b/unpackage/dist/dev/mp-weixin/pages/index/index.json index e11491c..9e1071b 100644 --- a/unpackage/dist/dev/mp-weixin/pages/index/index.json +++ b/unpackage/dist/dev/mp-weixin/pages/index/index.json @@ -1,6 +1,8 @@ { "navigationBarTitleText": "附近场地", "usingComponents": { + "uv-notice-bar": "../../node-modules/@climblee/uv-ui/components/uv-notice-bar/uv-notice-bar", + "uv-icon": "../../node-modules/@climblee/uv-ui/components/uv-icon/uv-icon", "map-component": "../../components/MapComponent" } } \ No newline at end of file diff --git a/unpackage/dist/dev/mp-weixin/pages/index/index.wxml b/unpackage/dist/dev/mp-weixin/pages/index/index.wxml index 4698d63..e7ceff1 100644 --- a/unpackage/dist/dev/mp-weixin/pages/index/index.wxml +++ b/unpackage/dist/dev/mp-weixin/pages/index/index.wxml @@ -1 +1 @@ -正在获取位置信息...附近场地 ({{m}}){{item.a}}{{item.b}}{{item.c}}营业时间:{{item.e}}{{item.g}}km{{item.h}}导航暂无附近场地正在获取场地信息...授权获取手机号为了提供更好的服务和紧急联系,需要授权获取您的手机号暂不授权 \ No newline at end of file +共享风扇使用指南{{step.a}}{{step.b}}{{step.c}}正在获取位置信息...附近设备场地 ({{o}}){{item.a}}{{item.b}}营业时间:{{item.e}}{{item.g}}{{item.h}}导航附近5公里内暂无设备正在获取场地信息...授权获取手机号为了提供更好的服务和紧急联系,需要授权获取您的手机号暂不授权 \ No newline at end of file diff --git a/unpackage/dist/dev/mp-weixin/pages/index/index.wxss b/unpackage/dist/dev/mp-weixin/pages/index/index.wxss index ce0a62f..932f3dd 100644 --- a/unpackage/dist/dev/mp-weixin/pages/index/index.wxss +++ b/unpackage/dist/dev/mp-weixin/pages/index/index.wxss @@ -29,6 +29,39 @@ background-color: #f6f7fb; display: flex; flex-direction: column; + padding-top: 20rpx; +} + +/* 顶部Logo和通知栏 */ +.header-section.data-v-1cf27b2a { + width: 92%; + margin: 0 auto 20rpx; +} +.logo-container.data-v-1cf27b2a { + display: flex; + align-items: center; +} +.logo-container .logo-image.data-v-1cf27b2a { + width: 80rpx; + height: 80rpx; + margin-right: 8rpx; +} +.logo-container .app-name.data-v-1cf27b2a { + font-size: 36rpx; + font-weight: 600; + color: #333; +} + +/* 地图标题 */ +.map-title.data-v-1cf27b2a { + width: 92%; + margin: 0 auto 10rpx; + padding: 10rpx 0; +} +.map-title text.data-v-1cf27b2a { + font-size: 32rpx; + font-weight: 600; + color: #333; } /* 顶部搜索栏 */ @@ -120,7 +153,7 @@ border-radius: 4rpx; } .location-popup .location-sheet .sheet-header.data-v-1cf27b2a { - padding: 0 30rpx 20rpx; + padding: 20rpx 30rpx; border-bottom: 1px solid #f0f0f0; display: flex; justify-content: space-between; @@ -150,9 +183,9 @@ height: 24rpx; } .location-popup .location-sheet .sheet-content.data-v-1cf27b2a { - flex: 1; padding: 20rpx 0; - overflow: hidden; + height: 60vh; + /* 固定高度以保证小程序端 scroll-view 正常滚动 */ } @keyframes slideUp-1cf27b2a { from { @@ -251,6 +284,25 @@ to { font-size: 28rpx; color: #999; } +.status-tag.data-v-1cf27b2a { + padding: 8rpx 16rpx; + border-radius: 20rpx; + font-size: 22rpx; + width: -webkit-fit-content; + width: fit-content; +} +.status-tag.online.data-v-1cf27b2a { + background: #e8f5e8; + color: #4caf50; +} +.status-tag.offline.data-v-1cf27b2a { + background: #ffeaea; + color: #f44336; +} +.status-tag.wait.data-v-1cf27b2a { + background: #ffeaea; + color: #f44336; +} /* 加载状态 */ .loading-overlay.data-v-1cf27b2a { @@ -395,4 +447,82 @@ to { .phone-auth-popup .popup-content .popup-body .auth-cancel text.data-v-1cf27b2a { font-size: 28rpx; color: #999; +} + +/* 操作步骤指引 */ +.steps-guide.data-v-1cf27b2a { + align-items: center; + align-content: center; + background-color: rgba(255, 255, 255, 0.95); + border-radius: 20rpx; + padding: 0; + box-shadow: 0 8rpx 32rpx rgba(0, 0, 0, 0.12); + z-index: 10; + -webkit-backdrop-filter: blur(15rpx); + backdrop-filter: blur(15rpx); + border: 1rpx solid rgba(255, 255, 255, 0.9); + overflow: hidden; + width: 92%; + margin: 0 auto 20rpx; +} +.guide-header.data-v-1cf27b2a { + padding: 20rpx 24rpx; + background: linear-gradient(135deg, #2196F3, #1976D2); + border-bottom: 1rpx solid rgba(255, 255, 255, 0.2); +} +.guide-header .guide-title.data-v-1cf27b2a { + font-size: 32rpx; + font-weight: 600; + color: #ffffff; + text-align: center; + display: block; +} +.steps-container.data-v-1cf27b2a { + display: flex; + flex-direction: column; + gap: 16rpx; + padding: 24rpx; + background-color: rgba(255, 255, 255, 0.9); +} +.step-item.data-v-1cf27b2a { + display: flex; + align-items: flex-start; + width: 100%; + padding: 16rpx 0; + border-bottom: 1rpx solid rgba(0, 0, 0, 0.05); +} +.step-item.data-v-1cf27b2a:last-child { + border-bottom: none; +} +.step-item .step-number.data-v-1cf27b2a { + width: 40rpx; + height: 40rpx; + background: linear-gradient(135deg, #2196F3, #1976D2); + color: #ffffff; + border-radius: 50%; + display: flex; + align-items: center; + justify-content: center; + font-size: 24rpx; + font-weight: bold; + margin-right: 20rpx; + flex-shrink: 0; + box-shadow: 0 4rpx 12rpx rgba(33, 150, 243, 0.4); +} +.step-item .step-content.data-v-1cf27b2a { + flex: 1; + padding-top: 4rpx; +} +.step-item .step-content .step-title.data-v-1cf27b2a { + font-size: 30rpx; + font-weight: 600; + color: #333; + margin-bottom: 8rpx; + display: block; +} +.step-item .step-content .step-desc.data-v-1cf27b2a { + font-size: 26rpx; + color: #666; + display: block; + line-height: 1.5; } \ No newline at end of file diff --git a/unpackage/dist/dev/mp-weixin/pages/my/index.js b/unpackage/dist/dev/mp-weixin/pages/my/index.js index d88a107..219039b 100644 --- a/unpackage/dist/dev/mp-weixin/pages/my/index.js +++ b/unpackage/dist/dev/mp-weixin/pages/my/index.js @@ -78,7 +78,7 @@ const _sfc_main = { }, userInfo.value.avatar ? { b: userInfo.value.avatar } : { - c: common_assets._imports_0$1 + c: common_assets._imports_0$2 }, { d: userInfo.value.isAdmin }, userInfo.value.isAdmin ? {} : {}, { diff --git a/unpackage/dist/dev/mp-weixin/pages/order/details.js b/unpackage/dist/dev/mp-weixin/pages/order/details.js index b729d37..e4fc64c 100644 --- a/unpackage/dist/dev/mp-weixin/pages/order/details.js +++ b/unpackage/dist/dev/mp-weixin/pages/order/details.js @@ -90,7 +90,7 @@ const _sfc_main = { c: common_vendor.t(orderInfo.value.deviceNo || "-"), d: orderInfo.value.payWay === "wx_score_pay" }, orderInfo.value.payWay === "wx_score_pay" ? { - e: common_assets._imports_0$2 + e: common_assets._imports_0$3 } : {}, { f: common_vendor.t(orderInfo.value.startTime || "-"), g: orderInfo.value.endTime diff --git a/unpackage/dist/dev/mp-weixin/pages/order/index.js b/unpackage/dist/dev/mp-weixin/pages/order/index.js index 3b69f80..7aa928d 100644 --- a/unpackage/dist/dev/mp-weixin/pages/order/index.js +++ b/unpackage/dist/dev/mp-weixin/pages/order/index.js @@ -242,7 +242,7 @@ const _sfc_main = { d: common_vendor.t(order.deviceId), e: order.payWay == "wx_score_pay" }, order.payWay == "wx_score_pay" ? { - f: common_assets._imports_0$2 + f: common_assets._imports_0$3 } : {}, { g: common_vendor.t(order.startTime), h: common_vendor.t(order.endTime || "-"), diff --git a/unpackage/dist/dev/mp-weixin/pages/return/index.js b/unpackage/dist/dev/mp-weixin/pages/return/index.js index 46fafdd..3946f64 100644 --- a/unpackage/dist/dev/mp-weixin/pages/return/index.js +++ b/unpackage/dist/dev/mp-weixin/pages/return/index.js @@ -357,7 +357,7 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) { c: common_vendor.t($data.deviceId), d: $data.orderInfo.payWay == "wx_score_pay" }, $data.orderInfo.payWay == "wx_score_pay" ? { - e: common_assets._imports_0$2 + e: common_assets._imports_0$3 } : {}, { f: common_vendor.t($data.orderInfo.startTime), g: common_vendor.t($data.orderInfo.usedTime), diff --git a/unpackage/dist/dev/mp-weixin/static/map.png b/unpackage/dist/dev/mp-weixin/static/map.png new file mode 100644 index 0000000..775a079 Binary files /dev/null and b/unpackage/dist/dev/mp-weixin/static/map.png differ diff --git a/unpackage/dist/dev/mp-weixin/utils/amap.js b/unpackage/dist/dev/mp-weixin/utils/amap.js deleted file mode 100644 index 06f7c03..0000000 --- a/unpackage/dist/dev/mp-weixin/utils/amap.js +++ /dev/null @@ -1,155 +0,0 @@ -"use strict"; -const common_vendor = require("../common/vendor.js"); -const AMAP_KEY = "4c513a688938fd89b88b296e867f66ec"; -class AmapUtil { - constructor() { - this.key = AMAP_KEY; - } - // 逆地理编码 - 根据经纬度获取地址信息 - async regeocode(longitude, latitude) { - try { - const res = await common_vendor.index.request({ - url: "https://restapi.amap.com/v3/geocode/regeo", - method: "GET", - data: { - key: this.key, - location: `${longitude},${latitude}`, - poitype: "", - radius: 1e3, - extensions: "base", - batch: false, - roadlevel: 0 - } - }); - if (res.statusCode === 200 && res.data.status === "1") { - return { - success: true, - data: res.data.regeocode - }; - } else { - return { - success: false, - message: res.data.info || "逆地理编码失败" - }; - } - } catch (error) { - common_vendor.index.__f__("error", "at utils/amap.js:38", "逆地理编码异常:", error); - return { - success: false, - message: "网络异常" - }; - } - } - // 地理编码 - 根据地址获取经纬度 - async geocode(address, city = "") { - try { - const res = await common_vendor.index.request({ - url: "https://restapi.amap.com/v3/geocode/geo", - method: "GET", - data: { - key: this.key, - address, - city - } - }); - if (res.statusCode === 200 && res.data.status === "1" && res.data.geocodes.length > 0) { - return { - success: true, - data: res.data.geocodes[0] - }; - } else { - return { - success: false, - message: res.data.info || "地理编码失败" - }; - } - } catch (error) { - common_vendor.index.__f__("error", "at utils/amap.js:71", "地理编码异常:", error); - return { - success: false, - message: "网络异常" - }; - } - } - // 搜索POI - async searchPOI(keywords, location = "", radius = 3e3, city = "") { - try { - const res = await common_vendor.index.request({ - url: "https://restapi.amap.com/v3/place/text", - method: "GET", - data: { - key: this.key, - keywords, - location, - radius, - city, - citylimit: true - } - }); - if (res.statusCode === 200 && res.data.status === "1") { - return { - success: true, - data: res.data.pois || [] - }; - } else { - return { - success: false, - message: res.data.info || "搜索失败" - }; - } - } catch (error) { - common_vendor.index.__f__("error", "at utils/amap.js:107", "POI搜索异常:", error); - return { - success: false, - message: "网络异常" - }; - } - } - // 路径规划 - async getRoute(origin, destination, strategy = 0) { - try { - const res = await common_vendor.index.request({ - url: "https://restapi.amap.com/v3/direction/driving", - method: "GET", - data: { - key: this.key, - origin, - destination, - strategy, - extensions: "base" - } - }); - if (res.statusCode === 200 && res.data.status === "1") { - return { - success: true, - data: res.data.route - }; - } else { - return { - success: false, - message: res.data.info || "路径规划失败" - }; - } - } catch (error) { - common_vendor.index.__f__("error", "at utils/amap.js:142", "路径规划异常:", error); - return { - success: false, - message: "网络异常" - }; - } - } - // 计算两点间距离 - calculateDistance(lat1, lng1, lat2, lng2) { - const radLat1 = lat1 * Math.PI / 180; - const radLat2 = lat2 * Math.PI / 180; - const a = radLat1 - radLat2; - const b = lng1 * Math.PI / 180 - lng2 * Math.PI / 180; - let s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) + Math.cos(radLat1) * Math.cos(radLat2) * Math.pow(Math.sin(b / 2), 2))); - s = s * 6378.137; - s = Math.round(s * 1e4) / 1e4; - return s; - } -} -const AmapUtil$1 = new AmapUtil(); -exports.AmapUtil = AmapUtil$1; -//# sourceMappingURL=../../.sourcemap/mp-weixin/utils/amap.js.map diff --git a/unpackage/dist/dev/mp-weixin/utils/mapUtils.js b/unpackage/dist/dev/mp-weixin/utils/mapUtils.js new file mode 100644 index 0000000..dd83275 --- /dev/null +++ b/unpackage/dist/dev/mp-weixin/utils/mapUtils.js @@ -0,0 +1,439 @@ +"use strict"; +const common_vendor = require("../common/vendor.js"); +const QQMAP_KEY = "RO5BZ-ECZ63-7US3C-RT5QW-TIDZE-2FF35"; +const QQMapWX = function() { + const ERROR_CONF = { + KEY_ERR: 311, + KEY_ERR_MSG: "key格式错误", + PARAM_ERR: 310, + PARAM_ERR_MSG: "请求参数信息有误", + SYSTEM_ERR: 600, + SYSTEM_ERR_MSG: "系统错误", + WX_ERR_CODE: 1e3, + WX_OK_CODE: 200 + }; + const BASE_URL = "https://apis.map.qq.com/ws/"; + const URL_SEARCH = BASE_URL + "place/v1/search"; + const URL_SUGGESTION = BASE_URL + "place/v1/suggestion"; + const URL_GET_GEOCODER = BASE_URL + "geocoder/v1/"; + const URL_DISTANCE = BASE_URL + "distance/v1/"; + const Utils = { + // 获取location参数 + getLocationParam(location) { + if (typeof location == "string") { + const locationArr = location.split(","); + if (locationArr.length === 2) { + location = { + latitude: location.split(",")[0], + longitude: location.split(",")[1] + }; + } else { + location = {}; + } + } + return location; + }, + // 验证location值 + checkLocation(param) { + const location = this.getLocationParam(param.location); + if (!location || !location.latitude || !location.longitude) { + const errconf = this.buildErrorConfig(ERROR_CONF.PARAM_ERR, ERROR_CONF.PARAM_ERR_MSG + " location参数格式有误"); + param.fail(errconf); + param.complete(errconf); + return false; + } + return true; + }, + // 构造错误数据结构 + buildErrorConfig(errCode, errMsg) { + return { + status: errCode, + message: errMsg + }; + }, + // 回调函数默认处理 + polyfillParam(param) { + param.success = param.success || function() { + }; + param.fail = param.fail || function() { + }; + param.complete = param.complete || function() { + }; + }, + // 处理用户参数是否传入坐标进行不同的处理 + locationProcess(param, locationsuccess, locationfail, locationcomplete) { + const that = this; + locationfail = locationfail || function(res) { + res.statusCode = ERROR_CONF.WX_ERR_CODE; + param.fail(that.buildErrorConfig(ERROR_CONF.WX_ERR_CODE, res.errMsg)); + }; + locationcomplete = locationcomplete || function(res) { + if (res.statusCode == ERROR_CONF.WX_ERR_CODE) { + param.complete(that.buildErrorConfig(ERROR_CONF.WX_ERR_CODE, res.errMsg)); + } + }; + if (!param.location) { + common_vendor.wx$1.getLocation({ + type: "gcj02", + success: locationsuccess, + fail: locationfail, + complete: locationcomplete + }); + } else if (that.checkLocation(param)) { + const location = Utils.getLocationParam(param.location); + locationsuccess(location); + } + }, + // 构造微信请求参数 + buildWxRequestConfig(param, options, feature) { + const that = this; + options.header = { "content-type": "application/json" }; + options.method = "GET"; + options.success = function(res) { + const data = res.data; + if (data.status === 0) { + that.handleData(param, data, feature); + } else { + param.fail(data); + } + }; + options.fail = function(res) { + res.statusCode = ERROR_CONF.WX_ERR_CODE; + param.fail(that.buildErrorConfig(ERROR_CONF.WX_ERR_CODE, res.errMsg)); + }; + options.complete = function(res) { + const statusCode = +res.statusCode; + switch (statusCode) { + case ERROR_CONF.WX_ERR_CODE: { + param.complete(that.buildErrorConfig(ERROR_CONF.WX_ERR_CODE, res.errMsg)); + break; + } + case ERROR_CONF.WX_OK_CODE: { + const data = res.data; + if (data.status === 0) { + param.complete(data); + } else { + param.complete(that.buildErrorConfig(data.status, data.message)); + } + break; + } + default: { + param.complete(that.buildErrorConfig(ERROR_CONF.SYSTEM_ERR, ERROR_CONF.SYSTEM_ERR_MSG)); + } + } + }; + return options; + }, + // 数据处理函数 + handleData(param, data, feature) { + if (feature == "search") { + const searchResult = data.data; + const searchSimplify = []; + for (let i = 0; i < searchResult.length; i++) { + searchSimplify.push({ + id: searchResult[i].id || null, + title: searchResult[i].title || null, + latitude: searchResult[i].location && searchResult[i].location.lat || null, + longitude: searchResult[i].location && searchResult[i].location.lng || null, + address: searchResult[i].address || null, + category: searchResult[i].category || null, + tel: searchResult[i].tel || null, + adcode: searchResult[i].ad_info && searchResult[i].ad_info.adcode || null, + city: searchResult[i].ad_info && searchResult[i].ad_info.city || null, + district: searchResult[i].ad_info && searchResult[i].ad_info.district || null, + province: searchResult[i].ad_info && searchResult[i].ad_info.province || null + }); + } + param.success(data, { + searchResult, + searchSimplify + }); + } else if (feature == "suggest") { + const suggestResult = data.data; + const suggestSimplify = []; + for (let i = 0; i < suggestResult.length; i++) { + suggestSimplify.push({ + adcode: suggestResult[i].adcode || null, + address: suggestResult[i].address || null, + category: suggestResult[i].category || null, + city: suggestResult[i].city || null, + district: suggestResult[i].district || null, + id: suggestResult[i].id || null, + latitude: suggestResult[i].location && suggestResult[i].location.lat || null, + longitude: suggestResult[i].location && suggestResult[i].location.lng || null, + province: suggestResult[i].province || null, + title: suggestResult[i].title || null, + type: suggestResult[i].type || null + }); + } + param.success(data, { + suggestResult, + suggestSimplify + }); + } else if (feature == "reverseGeocoder") { + const reverseGeocoderResult = data.result; + const reverseGeocoderSimplify = { + address: reverseGeocoderResult.address || null, + latitude: reverseGeocoderResult.location && reverseGeocoderResult.location.lat || null, + longitude: reverseGeocoderResult.location && reverseGeocoderResult.location.lng || null, + adcode: reverseGeocoderResult.ad_info && reverseGeocoderResult.ad_info.adcode || null, + city: reverseGeocoderResult.address_component && reverseGeocoderResult.address_component.city || null, + district: reverseGeocoderResult.address_component && reverseGeocoderResult.address_component.district || null, + nation: reverseGeocoderResult.address_component && reverseGeocoderResult.address_component.nation || null, + province: reverseGeocoderResult.address_component && reverseGeocoderResult.address_component.province || null, + street: reverseGeocoderResult.address_component && reverseGeocoderResult.address_component.street || null, + street_number: reverseGeocoderResult.address_component && reverseGeocoderResult.address_component.street_number || null, + recommend: reverseGeocoderResult.formatted_addresses && reverseGeocoderResult.formatted_addresses.recommend || null, + rough: reverseGeocoderResult.formatted_addresses && reverseGeocoderResult.formatted_addresses.rough || null + }; + param.success(data, { + reverseGeocoderResult, + reverseGeocoderSimplify + }); + } else if (feature == "calculateDistance") { + const calculateDistanceResult = data.result.elements; + const distance = []; + for (let i = 0; i < calculateDistanceResult.length; i++) { + distance.push(calculateDistanceResult[i].distance); + } + param.success(data, { + calculateDistanceResult, + distance + }); + } else { + param.success(data); + } + } + }; + class QQMapWX2 { + constructor(options) { + if (!options.key) { + throw Error("key值不能为空"); + } + this.key = options.key; + } + // 逆地址解析 + reverseGeocoder(options) { + const that = this; + options = options || {}; + Utils.polyfillParam(options); + const requestParam = { + coord_type: options.coord_type || 5, + get_poi: options.get_poi || 0, + output: "json", + key: that.key + }; + if (options.poi_options) { + requestParam.poi_options = options.poi_options; + } + const locationsuccess = function(result) { + requestParam.location = result.latitude + "," + result.longitude; + common_vendor.wx$1.request(Utils.buildWxRequestConfig(options, { + url: URL_GET_GEOCODER, + data: requestParam + }, "reverseGeocoder")); + }; + Utils.locationProcess(options, locationsuccess); + } + // POI周边检索 + search(options) { + const that = this; + options = options || {}; + Utils.polyfillParam(options); + if (!options.keyword) { + const errconf = Utils.buildErrorConfig(ERROR_CONF.PARAM_ERR, ERROR_CONF.PARAM_ERR_MSG + " keyword参数格式有误"); + options.fail(errconf); + options.complete(errconf); + return; + } + const requestParam = { + keyword: options.keyword, + orderby: options.orderby || "_distance", + page_size: options.page_size || 10, + page_index: options.page_index || 1, + output: "json", + key: that.key + }; + if (options.address_format) { + requestParam.address_format = options.address_format; + } + if (options.filter) { + requestParam.filter = options.filter; + } + const distance = options.distance || "1000"; + const auto_extend = options.auto_extend || 1; + const locationsuccess = function(result) { + requestParam.boundary = "nearby(" + result.latitude + "," + result.longitude + "," + distance + "," + auto_extend + ")"; + common_vendor.wx$1.request(Utils.buildWxRequestConfig(options, { + url: URL_SEARCH, + data: requestParam + }, "search")); + }; + Utils.locationProcess(options, locationsuccess); + } + // sug模糊检索 + getSuggestion(options) { + const that = this; + options = options || {}; + Utils.polyfillParam(options); + if (!options.keyword) { + const errconf = Utils.buildErrorConfig(ERROR_CONF.PARAM_ERR, ERROR_CONF.PARAM_ERR_MSG + " keyword参数格式有误"); + options.fail(errconf); + options.complete(errconf); + return; + } + const requestParam = { + keyword: options.keyword, + region: options.region || "全国", + region_fix: options.region_fix || 0, + policy: options.policy || 0, + page_size: options.page_size || 10, + page_index: options.page_index || 1, + get_subpois: options.get_subpois || 0, + output: "json", + key: that.key + }; + if (options.address_format) { + requestParam.address_format = options.address_format; + } + if (options.filter) { + requestParam.filter = options.filter; + } + if (options.location) { + const locationsuccess = function(result) { + requestParam.location = result.latitude + "," + result.longitude; + common_vendor.wx$1.request(Utils.buildWxRequestConfig(options, { + url: URL_SUGGESTION, + data: requestParam + }, "suggest")); + }; + Utils.locationProcess(options, locationsuccess); + } else { + common_vendor.wx$1.request(Utils.buildWxRequestConfig(options, { + url: URL_SUGGESTION, + data: requestParam + }, "suggest")); + } + } + // 距离计算 + calculateDistance(options) { + const that = this; + options = options || {}; + Utils.polyfillParam(options); + if (!options.to) { + const errconf = Utils.buildErrorConfig(ERROR_CONF.PARAM_ERR, ERROR_CONF.PARAM_ERR_MSG + " to参数格式有误"); + options.fail(errconf); + options.complete(errconf); + return; + } + const requestParam = { + mode: options.mode || "walking", + to: options.to, + output: "json", + key: that.key + }; + if (options.from) { + options.location = options.from; + } + const locationsuccess = function(result) { + requestParam.from = result.latitude + "," + result.longitude; + common_vendor.wx$1.request(Utils.buildWxRequestConfig(options, { + url: URL_DISTANCE, + data: requestParam + }, "calculateDistance")); + }; + Utils.locationProcess(options, locationsuccess); + } + } + return QQMapWX2; +}(); +let qqmapInstance = null; +function initQQMap() { + if (!qqmapInstance) { + try { + qqmapInstance = new QQMapWX({ + key: QQMAP_KEY + }); + common_vendor.index.__f__("log", "at utils/mapUtils.js:398", "腾讯地图SDK初始化成功"); + } catch (err) { + common_vendor.index.__f__("error", "at utils/mapUtils.js:400", "初始化腾讯地图SDK失败:", err); + } + } + return qqmapInstance; +} +function getQQMapInstance() { + return qqmapInstance || initQQMap(); +} +function getUserLocation() { + return new Promise((resolve, reject) => { + common_vendor.wx$1.getLocation({ + type: "gcj02", + success: (res) => { + resolve({ + longitude: res.longitude, + latitude: res.latitude + }); + }, + fail: (error) => { + common_vendor.index.__f__("error", "at utils/mapUtils.js:423", "获取位置失败:", error); + reject(error); + } + }); + }); +} +function getRegeo(longitude, latitude) { + return new Promise((resolve, reject) => { + const qqmap = getQQMapInstance(); + if (!qqmap) { + reject({ success: false, message: "腾讯地图SDK未初始化" }); + return; + } + qqmap.reverseGeocoder({ + location: { + latitude, + longitude + }, + success: (data, result) => { + const reverseGeocoderSimplify = result.reverseGeocoderSimplify; + resolve({ + success: true, + data: { + formatted_address: reverseGeocoderSimplify.address, + addressComponent: { + city: reverseGeocoderSimplify.city, + district: reverseGeocoderSimplify.district, + province: reverseGeocoderSimplify.province, + street: reverseGeocoderSimplify.street, + street_number: reverseGeocoderSimplify.street_number + } + } + }); + }, + fail: (error) => { + common_vendor.index.__f__("error", "at utils/mapUtils.js:462", "逆地理编码失败:", error); + reject({ success: false, message: error.message || "逆地理编码失败" }); + } + }); + }); +} +function calculateDistanceSync(lat1, lng1, lat2, lng2) { + const R = 6371e3; + const dLat = (lat2 - lat1) * Math.PI / 180; + const dLng = (lng2 - lng1) * Math.PI / 180; + const a = Math.sin(dLat / 2) * Math.sin(dLat / 2) + Math.cos(lat1 * Math.PI / 180) * Math.cos(lat2 * Math.PI / 180) * Math.sin(dLng / 2) * Math.sin(dLng / 2); + const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a)); + return Math.round(R * c); +} +function testDistanceCalculation() { + const tiananmen = { lat: 39.908823, lng: 116.39747 }; + const gugong = { lat: 39.916527, lng: 116.397128 }; + const distance = calculateDistanceSync(tiananmen.lat, tiananmen.lng, gugong.lat, gugong.lng); + common_vendor.index.__f__("log", "at utils/mapUtils.js:586", "天安门到故宫的距离:", distance, "米"); + common_vendor.index.__f__("log", "at utils/mapUtils.js:587", "转换为公里:", (distance / 1e3).toFixed(2), "公里"); + return distance; +} +exports.calculateDistanceSync = calculateDistanceSync; +exports.getRegeo = getRegeo; +exports.getUserLocation = getUserLocation; +exports.testDistanceCalculation = testDistanceCalculation; +//# sourceMappingURL=../../.sourcemap/mp-weixin/utils/mapUtils.js.map diff --git a/utils/amap.js b/utils/amap.js deleted file mode 100644 index 83102a0..0000000 --- a/utils/amap.js +++ /dev/null @@ -1,163 +0,0 @@ -// 高德地图工具类 -const AMAP_KEY = '4c513a688938fd89b88b296e867f66ec' - -class AmapUtil { - constructor() { - this.key = AMAP_KEY - } - - // 逆地理编码 - 根据经纬度获取地址信息 - async regeocode(longitude, latitude) { - try { - const res = await uni.request({ - url: 'https://restapi.amap.com/v3/geocode/regeo', - method: 'GET', - data: { - key: this.key, - location: `${longitude},${latitude}`, - poitype: '', - radius: 1000, - extensions: 'base', - batch: false, - roadlevel: 0 - } - }) - - if (res.statusCode === 200 && res.data.status === '1') { - return { - success: true, - data: res.data.regeocode - } - } else { - return { - success: false, - message: res.data.info || '逆地理编码失败' - } - } - } catch (error) { - console.error('逆地理编码异常:', error) - return { - success: false, - message: '网络异常' - } - } - } - - // 地理编码 - 根据地址获取经纬度 - async geocode(address, city = '') { - try { - const res = await uni.request({ - url: 'https://restapi.amap.com/v3/geocode/geo', - method: 'GET', - data: { - key: this.key, - address: address, - city: city - } - }) - - if (res.statusCode === 200 && res.data.status === '1' && res.data.geocodes.length > 0) { - return { - success: true, - data: res.data.geocodes[0] - } - } else { - return { - success: false, - message: res.data.info || '地理编码失败' - } - } - } catch (error) { - console.error('地理编码异常:', error) - return { - success: false, - message: '网络异常' - } - } - } - - // 搜索POI - async searchPOI(keywords, location = '', radius = 3000, city = '') { - try { - const res = await uni.request({ - url: 'https://restapi.amap.com/v3/place/text', - method: 'GET', - data: { - key: this.key, - keywords: keywords, - location: location, - radius: radius, - city: city, - citylimit: true - } - }) - - if (res.statusCode === 200 && res.data.status === '1') { - return { - success: true, - data: res.data.pois || [] - } - } else { - return { - success: false, - message: res.data.info || '搜索失败' - } - } - } catch (error) { - console.error('POI搜索异常:', error) - return { - success: false, - message: '网络异常' - } - } - } - - // 路径规划 - async getRoute(origin, destination, strategy = 0) { - try { - const res = await uni.request({ - url: 'https://restapi.amap.com/v3/direction/driving', - method: 'GET', - data: { - key: this.key, - origin: origin, - destination: destination, - strategy: strategy, - extensions: 'base' - } - }) - - if (res.statusCode === 200 && res.data.status === '1') { - return { - success: true, - data: res.data.route - } - } else { - return { - success: false, - message: res.data.info || '路径规划失败' - } - } - } catch (error) { - console.error('路径规划异常:', error) - return { - success: false, - message: '网络异常' - } - } - } - - // 计算两点间距离 - calculateDistance(lat1, lng1, lat2, lng2) { - const radLat1 = lat1 * Math.PI / 180.0 - const radLat2 = lat2 * Math.PI / 180.0 - const a = radLat1 - radLat2 - const b = lng1 * Math.PI / 180.0 - lng2 * Math.PI / 180.0 - let s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) + Math.cos(radLat1) * Math.cos(radLat2) * Math.pow(Math.sin(b / 2), 2))) - s = s * 6378.137 - s = Math.round(s * 10000) / 10000 - return s - } -} - -export default new AmapUtil() \ No newline at end of file diff --git a/utils/mapUtils.js b/utils/mapUtils.js new file mode 100644 index 0000000..45da67b --- /dev/null +++ b/utils/mapUtils.js @@ -0,0 +1,590 @@ +// 地图工具函数 - 内联腾讯地图SDK核心代码 + +// 腾讯地图Key +const QQMAP_KEY = 'RO5BZ-ECZ63-7US3C-RT5QW-TIDZE-2FF35'; + +// 内联腾讯地图SDK核心代码 +const QQMapWX = (function() { + // 错误配置 + const ERROR_CONF = { + KEY_ERR: 311, + KEY_ERR_MSG: 'key格式错误', + PARAM_ERR: 310, + PARAM_ERR_MSG: '请求参数信息有误', + SYSTEM_ERR: 600, + SYSTEM_ERR_MSG: '系统错误', + WX_ERR_CODE: 1000, + WX_OK_CODE: 200 + }; + + // API基础URL + const BASE_URL = 'https://apis.map.qq.com/ws/'; + const URL_SEARCH = BASE_URL + 'place/v1/search'; + const URL_SUGGESTION = BASE_URL + 'place/v1/suggestion'; + const URL_GET_GEOCODER = BASE_URL + 'geocoder/v1/'; + const URL_DISTANCE = BASE_URL + 'distance/v1/'; + + // 工具函数 + const Utils = { + // 获取location参数 + getLocationParam(location) { + if (typeof location == 'string') { + const locationArr = location.split(','); + if (locationArr.length === 2) { + location = { + latitude: location.split(',')[0], + longitude: location.split(',')[1] + }; + } else { + location = {}; + } + } + return location; + }, + + // 验证location值 + checkLocation(param) { + const location = this.getLocationParam(param.location); + if (!location || !location.latitude || !location.longitude) { + const errconf = this.buildErrorConfig(ERROR_CONF.PARAM_ERR, ERROR_CONF.PARAM_ERR_MSG + ' location参数格式有误'); + param.fail(errconf); + param.complete(errconf); + return false; + } + return true; + }, + + // 构造错误数据结构 + buildErrorConfig(errCode, errMsg) { + return { + status: errCode, + message: errMsg + }; + }, + + // 回调函数默认处理 + polyfillParam(param) { + param.success = param.success || function () { }; + param.fail = param.fail || function () { }; + param.complete = param.complete || function () { }; + }, + + // 处理用户参数是否传入坐标进行不同的处理 + locationProcess(param, locationsuccess, locationfail, locationcomplete) { + const that = this; + locationfail = locationfail || function (res) { + res.statusCode = ERROR_CONF.WX_ERR_CODE; + param.fail(that.buildErrorConfig(ERROR_CONF.WX_ERR_CODE, res.errMsg)); + }; + locationcomplete = locationcomplete || function (res) { + if (res.statusCode == ERROR_CONF.WX_ERR_CODE) { + param.complete(that.buildErrorConfig(ERROR_CONF.WX_ERR_CODE, res.errMsg)); + } + }; + if (!param.location) { + wx.getLocation({ + type: 'gcj02', + success: locationsuccess, + fail: locationfail, + complete: locationcomplete + }); + } else if (that.checkLocation(param)) { + const location = Utils.getLocationParam(param.location); + locationsuccess(location); + } + }, + + // 构造微信请求参数 + buildWxRequestConfig(param, options, feature) { + const that = this; + options.header = { "content-type": "application/json" }; + options.method = 'GET'; + options.success = function (res) { + const data = res.data; + if (data.status === 0) { + that.handleData(param, data, feature); + } else { + param.fail(data); + } + }; + options.fail = function (res) { + res.statusCode = ERROR_CONF.WX_ERR_CODE; + param.fail(that.buildErrorConfig(ERROR_CONF.WX_ERR_CODE, res.errMsg)); + }; + options.complete = function (res) { + const statusCode = +res.statusCode; + switch(statusCode) { + case ERROR_CONF.WX_ERR_CODE: { + param.complete(that.buildErrorConfig(ERROR_CONF.WX_ERR_CODE, res.errMsg)); + break; + } + case ERROR_CONF.WX_OK_CODE: { + const data = res.data; + if (data.status === 0) { + param.complete(data); + } else { + param.complete(that.buildErrorConfig(data.status, data.message)); + } + break; + } + default:{ + param.complete(that.buildErrorConfig(ERROR_CONF.SYSTEM_ERR, ERROR_CONF.SYSTEM_ERR_MSG)); + } + } + }; + return options; + }, + + // 数据处理函数 + handleData(param, data, feature) { + if (feature == 'search') { + const searchResult = data.data; + const searchSimplify = []; + for (let i = 0; i < searchResult.length; i++) { + searchSimplify.push({ + id: searchResult[i].id || null, + title: searchResult[i].title || null, + latitude: searchResult[i].location && searchResult[i].location.lat || null, + longitude: searchResult[i].location && searchResult[i].location.lng || null, + address: searchResult[i].address || null, + category: searchResult[i].category || null, + tel: searchResult[i].tel || null, + adcode: searchResult[i].ad_info && searchResult[i].ad_info.adcode || null, + city: searchResult[i].ad_info && searchResult[i].ad_info.city || null, + district: searchResult[i].ad_info && searchResult[i].ad_info.district || null, + province: searchResult[i].ad_info && searchResult[i].ad_info.province || null + }); + } + param.success(data, { + searchResult: searchResult, + searchSimplify: searchSimplify + }); + } else if (feature == 'suggest') { + const suggestResult = data.data; + const suggestSimplify = []; + for (let i = 0; i < suggestResult.length; i++) { + suggestSimplify.push({ + adcode: suggestResult[i].adcode || null, + address: suggestResult[i].address || null, + category: suggestResult[i].category || null, + city: suggestResult[i].city || null, + district: suggestResult[i].district || null, + id: suggestResult[i].id || null, + latitude: suggestResult[i].location && suggestResult[i].location.lat || null, + longitude: suggestResult[i].location && suggestResult[i].location.lng || null, + province: suggestResult[i].province || null, + title: suggestResult[i].title || null, + type: suggestResult[i].type || null + }); + } + param.success(data, { + suggestResult: suggestResult, + suggestSimplify: suggestSimplify + }); + } else if (feature == 'reverseGeocoder') { + const reverseGeocoderResult = data.result; + const reverseGeocoderSimplify = { + address: reverseGeocoderResult.address || null, + latitude: reverseGeocoderResult.location && reverseGeocoderResult.location.lat || null, + longitude: reverseGeocoderResult.location && reverseGeocoderResult.location.lng || null, + adcode: reverseGeocoderResult.ad_info && reverseGeocoderResult.ad_info.adcode || null, + city: reverseGeocoderResult.address_component && reverseGeocoderResult.address_component.city || null, + district: reverseGeocoderResult.address_component && reverseGeocoderResult.address_component.district || null, + nation: reverseGeocoderResult.address_component && reverseGeocoderResult.address_component.nation || null, + province: reverseGeocoderResult.address_component && reverseGeocoderResult.address_component.province || null, + street: reverseGeocoderResult.address_component && reverseGeocoderResult.address_component.street || null, + street_number: reverseGeocoderResult.address_component && reverseGeocoderResult.address_component.street_number || null, + recommend: reverseGeocoderResult.formatted_addresses && reverseGeocoderResult.formatted_addresses.recommend || null, + rough: reverseGeocoderResult.formatted_addresses && reverseGeocoderResult.formatted_addresses.rough || null + }; + param.success(data, { + reverseGeocoderResult: reverseGeocoderResult, + reverseGeocoderSimplify: reverseGeocoderSimplify + }); + } else if (feature == 'calculateDistance') { + const calculateDistanceResult = data.result.elements; + const distance = []; + for (let i = 0; i < calculateDistanceResult.length; i++){ + distance.push(calculateDistanceResult[i].distance); + } + param.success(data, { + calculateDistanceResult: calculateDistanceResult, + distance: distance + }); + } else { + param.success(data); + } + } + }; + + // QQMapWX类 + class QQMapWX { + constructor(options) { + if (!options.key) { + throw Error('key值不能为空'); + } + this.key = options.key; + } + + // 逆地址解析 + reverseGeocoder(options) { + const that = this; + options = options || {}; + Utils.polyfillParam(options); + + const requestParam = { + coord_type: options.coord_type || 5, + get_poi: options.get_poi || 0, + output: 'json', + key: that.key + }; + if (options.poi_options) { + requestParam.poi_options = options.poi_options; + } + + const locationsuccess = function (result) { + requestParam.location = result.latitude + ',' + result.longitude; + wx.request(Utils.buildWxRequestConfig(options, { + url: URL_GET_GEOCODER, + data: requestParam + }, 'reverseGeocoder')); + }; + Utils.locationProcess(options, locationsuccess); + } + + // POI周边检索 + search(options) { + const that = this; + options = options || {}; + Utils.polyfillParam(options); + + if (!options.keyword) { + const errconf = Utils.buildErrorConfig(ERROR_CONF.PARAM_ERR, ERROR_CONF.PARAM_ERR_MSG + ' keyword参数格式有误'); + options.fail(errconf); + options.complete(errconf); + return; + } + + const requestParam = { + keyword: options.keyword, + orderby: options.orderby || '_distance', + page_size: options.page_size || 10, + page_index: options.page_index || 1, + output: 'json', + key: that.key + }; + + if (options.address_format) { + requestParam.address_format = options.address_format; + } + + if (options.filter) { + requestParam.filter = options.filter; + } + + const distance = options.distance || "1000"; + const auto_extend = options.auto_extend || 1; + + const locationsuccess = function (result) { + requestParam.boundary = "nearby(" + result.latitude + "," + result.longitude + "," + distance + "," + auto_extend + ")"; + wx.request(Utils.buildWxRequestConfig(options, { + url: URL_SEARCH, + data: requestParam + }, 'search')); + }; + + Utils.locationProcess(options, locationsuccess); + } + + // sug模糊检索 + getSuggestion(options) { + const that = this; + options = options || {}; + Utils.polyfillParam(options); + + if (!options.keyword) { + const errconf = Utils.buildErrorConfig(ERROR_CONF.PARAM_ERR, ERROR_CONF.PARAM_ERR_MSG + ' keyword参数格式有误'); + options.fail(errconf); + options.complete(errconf); + return; + } + + const requestParam = { + keyword: options.keyword, + region: options.region || '全国', + region_fix: options.region_fix || 0, + policy: options.policy || 0, + page_size: options.page_size || 10, + page_index: options.page_index || 1, + get_subpois: options.get_subpois || 0, + output: 'json', + key: that.key + }; + + if (options.address_format) { + requestParam.address_format = options.address_format; + } + + if (options.filter) { + requestParam.filter = options.filter; + } + + if (options.location) { + const locationsuccess = function (result) { + requestParam.location = result.latitude + ',' + result.longitude; + wx.request(Utils.buildWxRequestConfig(options, { + url: URL_SUGGESTION, + data: requestParam + }, "suggest")); + }; + Utils.locationProcess(options, locationsuccess); + } else { + wx.request(Utils.buildWxRequestConfig(options, { + url: URL_SUGGESTION, + data: requestParam + }, "suggest")); + } + } + + // 距离计算 + calculateDistance(options) { + const that = this; + options = options || {}; + Utils.polyfillParam(options); + + if (!options.to) { + const errconf = Utils.buildErrorConfig(ERROR_CONF.PARAM_ERR, ERROR_CONF.PARAM_ERR_MSG + ' to参数格式有误'); + options.fail(errconf); + options.complete(errconf); + return; + } + + const requestParam = { + mode: options.mode || 'walking', + to: options.to, + output: 'json', + key: that.key + }; + + if (options.from) { + options.location = options.from; + } + + const locationsuccess = function (result) { + requestParam.from = result.latitude + ',' + result.longitude; + wx.request(Utils.buildWxRequestConfig(options, { + url: URL_DISTANCE, + data: requestParam + }, 'calculateDistance')); + }; + + Utils.locationProcess(options, locationsuccess); + } + } + + return QQMapWX; +})(); + +// 全局QQMap实例 +let qqmapInstance = null; + +// 初始化腾讯地图SDK +function initQQMap() { + if (!qqmapInstance) { + try { + qqmapInstance = new QQMapWX({ + key: QQMAP_KEY + }); + console.log('腾讯地图SDK初始化成功'); + } catch (err) { + console.error('初始化腾讯地图SDK失败:', err); + } + } + return qqmapInstance; +} + +// 获取腾讯地图SDK实例 +function getQQMapInstance() { + return qqmapInstance || initQQMap(); +} + +// 获取用户位置(使用微信的接口获取位置) +function getUserLocation() { + return new Promise((resolve, reject) => { + wx.getLocation({ + type: 'gcj02', + success: (res) => { + resolve({ + longitude: res.longitude, + latitude: res.latitude + }); + }, + fail: (error) => { + console.error('获取位置失败:', error); + reject(error); + } + }); + }); +} + +// 逆地理编码 - 根据经纬度获取地址信息 +function getRegeo(longitude, latitude) { + return new Promise((resolve, reject) => { + const qqmap = getQQMapInstance(); + if (!qqmap) { + reject({ success: false, message: '腾讯地图SDK未初始化' }); + return; + } + + qqmap.reverseGeocoder({ + location: { + latitude, + longitude + }, + success: (data, result) => { + // 官方SDK返回的数据结构:data是原始数据,result是简化数据 + const reverseGeocoderSimplify = result.reverseGeocoderSimplify; + resolve({ + success: true, + data: { + formatted_address: reverseGeocoderSimplify.address, + addressComponent: { + city: reverseGeocoderSimplify.city, + district: reverseGeocoderSimplify.district, + province: reverseGeocoderSimplify.province, + street: reverseGeocoderSimplify.street, + street_number: reverseGeocoderSimplify.street_number + } + } + }); + }, + fail: (error) => { + console.error('逆地理编码失败:', error); + reject({ success: false, message: error.message || '逆地理编码失败' }); + } + }); + }); +} + +// 搜索周边POI +function getPoiAround(longitude, latitude, keyword = '', radius = 1000) { + return new Promise((resolve, reject) => { + const qqmap = getQQMapInstance(); + if (!qqmap) { + reject({ success: false, message: '腾讯地图SDK未初始化' }); + return; + } + + qqmap.search({ + keyword: keyword, + location: { + latitude, + longitude + }, + distance: radius, + success: (data, result) => { + const searchSimplify = result.searchSimplify; + resolve({ + success: true, + data: searchSimplify + }); + }, + fail: (error) => { + console.error('搜索POI失败:', error); + reject({ success: false, message: error.message || '搜索POI失败' }); + } + }); + }); +} + +// 计算距离(异步) +function calculateDistance(from, to) { + return new Promise((resolve, reject) => { + const qqmap = getQQMapInstance(); + if (!qqmap) { + reject({ success: false, message: '腾讯地图SDK未初始化' }); + return; + } + + qqmap.calculateDistance({ + from: from, + to: to, + mode: 'walking', + success: (data, result) => { + const distance = result.distance; + resolve({ + success: true, + data: distance + }); + }, + fail: (error) => { + console.error('计算距离失败:', error); + reject({ success: false, message: error.message || '计算距离失败' }); + } + }); + }); +} + +// 计算距离(同步,使用球面距离公式) +function calculateDistanceSync(lat1, lng1, lat2, lng2) { + const R = 6371000; // 地球半径(米) + const dLat = (lat2 - lat1) * Math.PI / 180; + const dLng = (lng2 - lng1) * Math.PI / 180; + const a = Math.sin(dLat / 2) * Math.sin(dLat / 2) + + Math.cos(lat1 * Math.PI / 180) * Math.cos(lat2 * Math.PI / 180) * + Math.sin(dLng / 2) * Math.sin(dLng / 2); + const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a)); + return Math.round(R * c); // 返回距离,单位为米 +} + +// 关键词提示 +function getSuggestion(keyword, region = '全国') { + return new Promise((resolve, reject) => { + const qqmap = getQQMapInstance(); + if (!qqmap) { + reject({ success: false, message: '腾讯地图SDK未初始化' }); + return; + } + + qqmap.getSuggestion({ + keyword: keyword, + region: region, + success: (data, result) => { + const suggestSimplify = result.suggestSimplify; + resolve({ + success: true, + data: suggestSimplify + }); + }, + fail: (error) => { + console.error('关键词提示失败:', error); + reject({ success: false, message: error.message || '关键词提示失败' }); + } + }); + }); +} + +// 导出函数 +export { + getUserLocation, + getRegeo, + getPoiAround, + calculateDistance, + calculateDistanceSync, + getSuggestion, + initQQMap, + getQQMapInstance +}; + +// 测试距离计算函数(开发调试用) +export function testDistanceCalculation() { + // 测试用例:北京天安门到故宫的距离(约1.5公里) + const tiananmen = { lat: 39.908823, lng: 116.397470 }; + const gugong = { lat: 39.916527, lng: 116.397128 }; + + const distance = calculateDistanceSync(tiananmen.lat, tiananmen.lng, gugong.lat, gugong.lng); + console.log('天安门到故宫的距离:', distance, '米'); + console.log('转换为公里:', (distance / 1000).toFixed(2), '公里'); + + return distance; +} \ No newline at end of file diff --git a/utils/qqmap-wx-jssdk.js b/utils/qqmap-wx-jssdk.js new file mode 100644 index 0000000..595b65b --- /dev/null +++ b/utils/qqmap-wx-jssdk.js @@ -0,0 +1,1122 @@ +/** + * 微信小程序JavaScriptSDK + * + * @version 1.2 + * @date 2019-03-06 + */ + +var ERROR_CONF = { + KEY_ERR: 311, + KEY_ERR_MSG: 'key格式错误', + PARAM_ERR: 310, + PARAM_ERR_MSG: '请求参数信息有误', + SYSTEM_ERR: 600, + SYSTEM_ERR_MSG: '系统错误', + WX_ERR_CODE: 1000, + WX_OK_CODE: 200 +}; +var BASE_URL = 'https://apis.map.qq.com/ws/'; +var URL_SEARCH = BASE_URL + 'place/v1/search'; +var URL_SUGGESTION = BASE_URL + 'place/v1/suggestion'; +var URL_GET_GEOCODER = BASE_URL + 'geocoder/v1/'; +var URL_CITY_LIST = BASE_URL + 'district/v1/list'; +var URL_AREA_LIST = BASE_URL + 'district/v1/getchildren'; +var URL_DISTANCE = BASE_URL + 'distance/v1/'; +var URL_DIRECTION = BASE_URL + 'direction/v1/'; +var MODE = { + driving: 'driving', + transit: 'transit' +}; +var EARTH_RADIUS = 6378136.49; +var Utils = { + /** + * md5加密方法 + * 版权所有©2011 Sebastian Tschan,https://blueimp.net + */ + safeAdd(x, y) { + var lsw = (x & 0xffff) + (y & 0xffff); + var msw = (x >> 16) + (y >> 16) + (lsw >> 16); + return (msw << 16) | (lsw & 0xffff); + }, + bitRotateLeft(num, cnt) { + return (num << cnt) | (num >>> (32 - cnt)); + }, + md5cmn(q, a, b, x, s, t) { + return this.safeAdd(this.bitRotateLeft(this.safeAdd(this.safeAdd(a, q), this.safeAdd(x, t)), s), b); + }, + md5ff(a, b, c, d, x, s, t) { + return this.md5cmn((b & c) | (~b & d), a, b, x, s, t); + }, + md5gg(a, b, c, d, x, s, t) { + return this.md5cmn((b & d) | (c & ~d), a, b, x, s, t); + }, + md5hh(a, b, c, d, x, s, t) { + return this.md5cmn(b ^ c ^ d, a, b, x, s, t); + }, + md5ii(a, b, c, d, x, s, t) { + return this.md5cmn(c ^ (b | ~d), a, b, x, s, t); + }, + binlMD5(x, len) { + /* append padding */ + x[len >> 5] |= 0x80 << (len % 32); + x[((len + 64) >>> 9 << 4) + 14] = len; + + var i; + var olda; + var oldb; + var oldc; + var oldd; + var a = 1732584193; + var b = -271733879; + var c = -1732584194; + var d = 271733878; + + for (i = 0; i < x.length; i += 16) { + olda = a; + oldb = b; + oldc = c; + oldd = d; + + a = this.md5ff(a, b, c, d, x[i], 7, -680876936); + d = this.md5ff(d, a, b, c, x[i + 1], 12, -389564586); + c = this.md5ff(c, d, a, b, x[i + 2], 17, 606105819); + b = this.md5ff(b, c, d, a, x[i + 3], 22, -1044525330); + a = this.md5ff(a, b, c, d, x[i + 4], 7, -176418897); + d = this.md5ff(d, a, b, c, x[i + 5], 12, 1200080426); + c = this.md5ff(c, d, a, b, x[i + 6], 17, -1473231341); + b = this.md5ff(b, c, d, a, x[i + 7], 22, -45705983); + a = this.md5ff(a, b, c, d, x[i + 8], 7, 1770035416); + d = this.md5ff(d, a, b, c, x[i + 9], 12, -1958414417); + c = this.md5ff(c, d, a, b, x[i + 10], 17, -42063); + b = this.md5ff(b, c, d, a, x[i + 11], 22, -1990404162); + a = this.md5ff(a, b, c, d, x[i + 12], 7, 1804603682); + d = this.md5ff(d, a, b, c, x[i + 13], 12, -40341101); + c = this.md5ff(c, d, a, b, x[i + 14], 17, -1502002290); + b = this.md5ff(b, c, d, a, x[i + 15], 22, 1236535329); + + a = this.md5gg(a, b, c, d, x[i + 1], 5, -165796510); + d = this.md5gg(d, a, b, c, x[i + 6], 9, -1069501632); + c = this.md5gg(c, d, a, b, x[i + 11], 14, 643717713); + b = this.md5gg(b, c, d, a, x[i], 20, -373897302); + a = this.md5gg(a, b, c, d, x[i + 5], 5, -701558691); + d = this.md5gg(d, a, b, c, x[i + 10], 9, 38016083); + c = this.md5gg(c, d, a, b, x[i + 15], 14, -660478335); + b = this.md5gg(b, c, d, a, x[i + 4], 20, -405537848); + a = this.md5gg(a, b, c, d, x[i + 9], 5, 568446438); + d = this.md5gg(d, a, b, c, x[i + 14], 9, -1019803690); + c = this.md5gg(c, d, a, b, x[i + 3], 14, -187363961); + b = this.md5gg(b, c, d, a, x[i + 8], 20, 1163531501); + a = this.md5gg(a, b, c, d, x[i + 13], 5, -1444681467); + d = this.md5gg(d, a, b, c, x[i + 2], 9, -51403784); + c = this.md5gg(c, d, a, b, x[i + 7], 14, 1735328473); + b = this.md5gg(b, c, d, a, x[i + 12], 20, -1926607734); + + a = this.md5hh(a, b, c, d, x[i + 5], 4, -378558); + d = this.md5hh(d, a, b, c, x[i + 8], 11, -2022574463); + c = this.md5hh(c, d, a, b, x[i + 11], 16, 1839030562); + b = this.md5hh(b, c, d, a, x[i + 14], 23, -35309556); + a = this.md5hh(a, b, c, d, x[i + 1], 4, -1530992060); + d = this.md5hh(d, a, b, c, x[i + 4], 11, 1272893353); + c = this.md5hh(c, d, a, b, x[i + 7], 16, -155497632); + b = this.md5hh(b, c, d, a, x[i + 10], 23, -1094730640); + a = this.md5hh(a, b, c, d, x[i + 13], 4, 681279174); + d = this.md5hh(d, a, b, c, x[i], 11, -358537222); + c = this.md5hh(c, d, a, b, x[i + 3], 16, -722521979); + b = this.md5hh(b, c, d, a, x[i + 6], 23, 76029189); + a = this.md5hh(a, b, c, d, x[i + 9], 4, -640364487); + d = this.md5hh(d, a, b, c, x[i + 12], 11, -421815835); + c = this.md5hh(c, d, a, b, x[i + 15], 16, 530742520); + b = this.md5hh(b, c, d, a, x[i + 2], 23, -995338651); + + a = this.md5ii(a, b, c, d, x[i], 6, -198630844); + d = this.md5ii(d, a, b, c, x[i + 7], 10, 1126891415); + c = this.md5ii(c, d, a, b, x[i + 14], 15, -1416354905); + b = this.md5ii(b, c, d, a, x[i + 5], 21, -57434055); + a = this.md5ii(a, b, c, d, x[i + 12], 6, 1700485571); + d = this.md5ii(d, a, b, c, x[i + 3], 10, -1894986606); + c = this.md5ii(c, d, a, b, x[i + 10], 15, -1051523); + b = this.md5ii(b, c, d, a, x[i + 1], 21, -2054922799); + a = this.md5ii(a, b, c, d, x[i + 8], 6, 1873313359); + d = this.md5ii(d, a, b, c, x[i + 15], 10, -30611744); + c = this.md5ii(c, d, a, b, x[i + 6], 15, -1560198380); + b = this.md5ii(b, c, d, a, x[i + 13], 21, 1309151649); + a = this.md5ii(a, b, c, d, x[i + 4], 6, -145523070); + d = this.md5ii(d, a, b, c, x[i + 11], 10, -1120210379); + c = this.md5ii(c, d, a, b, x[i + 2], 15, 718787259); + b = this.md5ii(b, c, d, a, x[i + 9], 21, -343485551); + + a = this.safeAdd(a, olda); + b = this.safeAdd(b, oldb); + c = this.safeAdd(c, oldc); + d = this.safeAdd(d, oldd); + } + return [a, b, c, d]; + }, + binl2rstr(input) { + var i; + var output = ''; + var length32 = input.length * 32; + for (i = 0; i < length32; i += 8) { + output += String.fromCharCode((input[i >> 5] >>> (i % 32)) & 0xff); + } + return output; + }, + rstr2binl(input) { + var i; + var output = []; + output[(input.length >> 2) - 1] = undefined; + for (i = 0; i < output.length; i += 1) { + output[i] = 0; + } + var length8 = input.length * 8; + for (i = 0; i < length8; i += 8) { + output[i >> 5] |= (input.charCodeAt(i / 8) & 0xff) << (i % 32); + } + return output; + }, + rstrMD5(s) { + return this.binl2rstr(this.binlMD5(this.rstr2binl(s), s.length * 8)); + }, + rstrHMACMD5(key, data) { + var i; + var bkey = this.rstr2binl(key); + var ipad = []; + var opad = []; + var hash; + ipad[15] = opad[15] = undefined; + if (bkey.length > 16) { + bkey = this.binlMD5(bkey, key.length * 8); + } + for (i = 0; i < 16; i += 1) { + ipad[i] = bkey[i] ^ 0x36363636; + opad[i] = bkey[i] ^ 0x5c5c5c5c; + } + hash = this.binlMD5(ipad.concat(this.rstr2binl(data)), 512 + data.length * 8); + return this.binl2rstr(this.binlMD5(opad.concat(hash), 512 + 128)); + }, + rstr2hex(input) { + var hexTab = '0123456789abcdef'; + var output = ''; + var x; + var i; + for (i = 0; i < input.length; i += 1) { + x = input.charCodeAt(i); + output += hexTab.charAt((x >>> 4) & 0x0f) + hexTab.charAt(x & 0x0f); + } + return output; + }, + str2rstrUTF8(input) { + return unescape(encodeURIComponent(input)); + }, + rawMD5(s) { + return this.rstrMD5(this.str2rstrUTF8(s)); + }, + hexMD5(s) { + return this.rstr2hex(this.rawMD5(s)); + }, + rawHMACMD5(k, d) { + return this.rstrHMACMD5(this.str2rstrUTF8(k), str2rstrUTF8(d)); + }, + hexHMACMD5(k, d) { + return this.rstr2hex(this.rawHMACMD5(k, d)); + }, + + md5(string, key, raw) { + if (!key) { + if (!raw) { + return this.hexMD5(string); + } + return this.rawMD5(string); + } + if (!raw) { + return this.hexHMACMD5(key, string); + } + return this.rawHMACMD5(key, string); + }, + /** + * 得到md5加密后的sig参数 + * @param {Object} requestParam 接口参数 + * @param {String} sk签名字符串 + * @param {String} featrue 方法名 + * @return 返回加密后的sig参数 + */ + getSig(requestParam, sk, feature, mode) { + var sig = null; + var requestArr = []; + Object.keys(requestParam).sort().forEach(function(key){ + requestArr.push(key + '=' + requestParam[key]); + }); + if (feature == 'search') { + sig = '/ws/place/v1/search?' + requestArr.join('&') + sk; + } + if (feature == 'suggest') { + sig = '/ws/place/v1/suggestion?' + requestArr.join('&') + sk; + } + if (feature == 'reverseGeocoder') { + sig = '/ws/geocoder/v1/?' + requestArr.join('&') + sk; + } + if (feature == 'geocoder') { + sig = '/ws/geocoder/v1/?' + requestArr.join('&') + sk; + } + if (feature == 'getCityList') { + sig = '/ws/district/v1/list?' + requestArr.join('&') + sk; + } + if (feature == 'getDistrictByCityId') { + sig = '/ws/district/v1/getchildren?' + requestArr.join('&') + sk; + } + if (feature == 'calculateDistance') { + sig = '/ws/distance/v1/?' + requestArr.join('&') + sk; + } + if (feature == 'direction') { + sig = '/ws/direction/v1/' + mode + '?' + requestArr.join('&') + sk; + } + sig = this.md5(sig); + return sig; + }, + /** + * 得到终点query字符串 + * @param {Array|String} 检索数据 + */ + location2query(data) { + if (typeof data == 'string') { + return data; + } + var query = ''; + for (var i = 0; i < data.length; i++) { + var d = data[i]; + if (!!query) { + query += ';'; + } + if (d.location) { + query = query + d.location.lat + ',' + d.location.lng; + } + if (d.latitude && d.longitude) { + query = query + d.latitude + ',' + d.longitude; + } + } + return query; + }, + + /** + * 计算角度 + */ + rad(d) { + return d * Math.PI / 180.0; + }, + /** + * 处理终点location数组 + * @return 返回终点数组 + */ + getEndLocation(location){ + var to = location.split(';'); + var endLocation = []; + for (var i = 0; i < to.length; i++) { + endLocation.push({ + lat: parseFloat(to[i].split(',')[0]), + lng: parseFloat(to[i].split(',')[1]) + }) + } + return endLocation; + }, + + /** + * 计算两点间直线距离 + * @param a 表示纬度差 + * @param b 表示经度差 + * @return 返回的是距离,单位m + */ + getDistance(latFrom, lngFrom, latTo, lngTo) { + var radLatFrom = this.rad(latFrom); + var radLatTo = this.rad(latTo); + var a = radLatFrom - radLatTo; + var b = this.rad(lngFrom) - this.rad(lngTo); + var distance = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) + Math.cos(radLatFrom) * Math.cos(radLatTo) * Math.pow(Math.sin(b / 2), 2))); + distance = distance * EARTH_RADIUS; + distance = Math.round(distance * 10000) / 10000; + return parseFloat(distance.toFixed(0)); + }, + /** + * 使用微信接口进行定位 + */ + getWXLocation(success, fail, complete) { + wx.getLocation({ + type: 'gcj02', + success: success, + fail: fail, + complete: complete + }); + }, + + /** + * 获取location参数 + */ + getLocationParam(location) { + if (typeof location == 'string') { + var locationArr = location.split(','); + if (locationArr.length === 2) { + location = { + latitude: location.split(',')[0], + longitude: location.split(',')[1] + }; + } else { + location = {}; + } + } + return location; + }, + + /** + * 回调函数默认处理 + */ + polyfillParam(param) { + param.success = param.success || function () { }; + param.fail = param.fail || function () { }; + param.complete = param.complete || function () { }; + }, + + /** + * 验证param对应的key值是否为空 + * + * @param {Object} param 接口参数 + * @param {String} key 对应参数的key + */ + checkParamKeyEmpty(param, key) { + if (!param[key]) { + var errconf = this.buildErrorConfig(ERROR_CONF.PARAM_ERR, ERROR_CONF.PARAM_ERR_MSG + key +'参数格式有误'); + param.fail(errconf); + param.complete(errconf); + return true; + } + return false; + }, + + /** + * 验证参数中是否存在检索词keyword + * + * @param {Object} param 接口参数 + */ + checkKeyword(param){ + return !this.checkParamKeyEmpty(param, 'keyword'); + }, + + /** + * 验证location值 + * + * @param {Object} param 接口参数 + */ + checkLocation(param) { + var location = this.getLocationParam(param.location); + if (!location || !location.latitude || !location.longitude) { + var errconf = this.buildErrorConfig(ERROR_CONF.PARAM_ERR, ERROR_CONF.PARAM_ERR_MSG + ' location参数格式有误'); + param.fail(errconf); + param.complete(errconf); + return false; + } + return true; + }, + + /** + * 构造错误数据结构 + * @param {Number} errCode 错误码 + * @param {Number} errMsg 错误描述 + */ + buildErrorConfig(errCode, errMsg) { + return { + status: errCode, + message: errMsg + }; + }, + + /** + * + * 数据处理函数 + * 根据传入参数不同处理不同数据 + * @param {String} feature 功能名称 + * search 地点搜索 + * suggest关键词提示 + * reverseGeocoder逆地址解析 + * geocoder地址解析 + * getCityList获取城市列表:父集 + * getDistrictByCityId获取区县列表:子集 + * calculateDistance距离计算 + * @param {Object} param 接口参数 + * @param {Object} data 数据 + */ + handleData(param,data,feature){ + if (feature == 'search') { + var searchResult = data.data; + var searchSimplify = []; + for (var i = 0; i < searchResult.length; i++) { + searchSimplify.push({ + id: searchResult[i].id || null, + title: searchResult[i].title || null, + latitude: searchResult[i].location && searchResult[i].location.lat || null, + longitude: searchResult[i].location && searchResult[i].location.lng || null, + address: searchResult[i].address || null, + category: searchResult[i].category || null, + tel: searchResult[i].tel || null, + adcode: searchResult[i].ad_info && searchResult[i].ad_info.adcode || null, + city: searchResult[i].ad_info && searchResult[i].ad_info.city || null, + district: searchResult[i].ad_info && searchResult[i].ad_info.district || null, + province: searchResult[i].ad_info && searchResult[i].ad_info.province || null + }) + } + param.success(data, { + searchResult: searchResult, + searchSimplify: searchSimplify + }) + } else if (feature == 'suggest') { + var suggestResult = data.data; + var suggestSimplify = []; + for (var i = 0; i < suggestResult.length; i++) { + suggestSimplify.push({ + adcode: suggestResult[i].adcode || null, + address: suggestResult[i].address || null, + category: suggestResult[i].category || null, + city: suggestResult[i].city || null, + district: suggestResult[i].district || null, + id: suggestResult[i].id || null, + latitude: suggestResult[i].location && suggestResult[i].location.lat || null, + longitude: suggestResult[i].location && suggestResult[i].location.lng || null, + province: suggestResult[i].province || null, + title: suggestResult[i].title || null, + type: suggestResult[i].type || null + }) + } + param.success(data, { + suggestResult: suggestResult, + suggestSimplify: suggestSimplify + }) + } else if (feature == 'reverseGeocoder') { + var reverseGeocoderResult = data.result; + var reverseGeocoderSimplify = { + address: reverseGeocoderResult.address || null, + latitude: reverseGeocoderResult.location && reverseGeocoderResult.location.lat || null, + longitude: reverseGeocoderResult.location && reverseGeocoderResult.location.lng || null, + adcode: reverseGeocoderResult.ad_info && reverseGeocoderResult.ad_info.adcode || null, + city: reverseGeocoderResult.address_component && reverseGeocoderResult.address_component.city || null, + district: reverseGeocoderResult.address_component && reverseGeocoderResult.address_component.district || null, + nation: reverseGeocoderResult.address_component && reverseGeocoderResult.address_component.nation || null, + province: reverseGeocoderResult.address_component && reverseGeocoderResult.address_component.province || null, + street: reverseGeocoderResult.address_component && reverseGeocoderResult.address_component.street || null, + street_number: reverseGeocoderResult.address_component && reverseGeocoderResult.address_component.street_number || null, + recommend: reverseGeocoderResult.formatted_addresses && reverseGeocoderResult.formatted_addresses.recommend || null, + rough: reverseGeocoderResult.formatted_addresses && reverseGeocoderResult.formatted_addresses.rough || null + }; + if (reverseGeocoderResult.pois) {//判断是否返回周边poi + var pois = reverseGeocoderResult.pois; + var poisSimplify = []; + for (var i = 0;i < pois.length;i++) { + poisSimplify.push({ + id: pois[i].id || null, + title: pois[i].title || null, + latitude: pois[i].location && pois[i].location.lat || null, + longitude: pois[i].location && pois[i].location.lng || null, + address: pois[i].address || null, + category: pois[i].category || null, + adcode: pois[i].ad_info && pois[i].ad_info.adcode || null, + city: pois[i].ad_info && pois[i].ad_info.city || null, + district: pois[i].ad_info && pois[i].ad_info.district || null, + province: pois[i].ad_info && pois[i].ad_info.province || null + }) + } + param.success(data,{ + reverseGeocoderResult: reverseGeocoderResult, + reverseGeocoderSimplify: reverseGeocoderSimplify, + pois: pois, + poisSimplify: poisSimplify + }) + } else { + param.success(data, { + reverseGeocoderResult: reverseGeocoderResult, + reverseGeocoderSimplify: reverseGeocoderSimplify + }) + } + } else if (feature == 'geocoder') { + var geocoderResult = data.result; + var geocoderSimplify = { + title: geocoderResult.title || null, + latitude: geocoderResult.location && geocoderResult.location.lat || null, + longitude: geocoderResult.location && geocoderResult.location.lng || null, + adcode: geocoderResult.ad_info && geocoderResult.ad_info.adcode || null, + province: geocoderResult.address_components && geocoderResult.address_components.province || null, + city: geocoderResult.address_components && geocoderResult.address_components.city || null, + district: geocoderResult.address_components && geocoderResult.address_components.district || null, + street: geocoderResult.address_components && geocoderResult.address_components.street || null, + street_number: geocoderResult.address_components && geocoderResult.address_components.street_number || null, + level: geocoderResult.level || null + }; + param.success(data,{ + geocoderResult: geocoderResult, + geocoderSimplify: geocoderSimplify + }); + } else if (feature == 'getCityList') { + var provinceResult = data.result[0]; + var cityResult = data.result[1]; + var districtResult = data.result[2]; + param.success(data,{ + provinceResult: provinceResult, + cityResult: cityResult, + districtResult: districtResult + }); + } else if (feature == 'getDistrictByCityId') { + var districtByCity = data.result[0]; + param.success(data, districtByCity); + } else if (feature == 'calculateDistance') { + var calculateDistanceResult = data.result.elements; + var distance = []; + for (var i = 0; i < calculateDistanceResult.length; i++){ + distance.push(calculateDistanceResult[i].distance); + } + param.success(data, { + calculateDistanceResult: calculateDistanceResult, + distance: distance + }); + } else if (feature == 'direction') { + var direction = data.result.routes; + param.success(data,direction); + } else { + param.success(data); + } + }, + + /** + * 构造微信请求参数,公共属性处理 + * + * @param {Object} param 接口参数 + * @param {Object} param 配置项 + * @param {String} feature 方法名 + */ + buildWxRequestConfig(param, options, feature) { + var that = this; + options.header = { "content-type": "application/json" }; + options.method = 'GET'; + options.success = function (res) { + var data = res.data; + if (data.status === 0) { + that.handleData(param, data, feature); + } else { + param.fail(data); + } + }; + options.fail = function (res) { + res.statusCode = ERROR_CONF.WX_ERR_CODE; + param.fail(that.buildErrorConfig(ERROR_CONF.WX_ERR_CODE, res.errMsg)); + }; + options.complete = function (res) { + var statusCode = +res.statusCode; + switch(statusCode) { + case ERROR_CONF.WX_ERR_CODE: { + param.complete(that.buildErrorConfig(ERROR_CONF.WX_ERR_CODE, res.errMsg)); + break; + } + case ERROR_CONF.WX_OK_CODE: { + var data = res.data; + if (data.status === 0) { + param.complete(data); + } else { + param.complete(that.buildErrorConfig(data.status, data.message)); + } + break; + } + default:{ + param.complete(that.buildErrorConfig(ERROR_CONF.SYSTEM_ERR, ERROR_CONF.SYSTEM_ERR_MSG)); + } + + } + }; + return options; + }, + + /** + * 处理用户参数是否传入坐标进行不同的处理 + */ + locationProcess(param, locationsuccess, locationfail, locationcomplete) { + var that = this; + locationfail = locationfail || function (res) { + res.statusCode = ERROR_CONF.WX_ERR_CODE; + param.fail(that.buildErrorConfig(ERROR_CONF.WX_ERR_CODE, res.errMsg)); + }; + locationcomplete = locationcomplete || function (res) { + if (res.statusCode == ERROR_CONF.WX_ERR_CODE) { + param.complete(that.buildErrorConfig(ERROR_CONF.WX_ERR_CODE, res.errMsg)); + } + }; + if (!param.location) { + that.getWXLocation(locationsuccess, locationfail, locationcomplete); + } else if (that.checkLocation(param)) { + var location = Utils.getLocationParam(param.location); + locationsuccess(location); + } + } +}; + + +class QQMapWX { + + /** + * 构造函数 + * + * @param {Object} options 接口参数,key 为必选参数 + */ + constructor(options) { + if (!options.key) { + throw Error('key值不能为空'); + } + this.key = options.key; + }; + + /** + * POI周边检索 + * + * @param {Object} options 接口参数对象 + * + * 参数对象结构可以参考 + * @see http://lbs.qq.com/webservice_v1/guide-search.html + */ + search(options) { + var that = this; + options = options || {}; + + Utils.polyfillParam(options); + + if (!Utils.checkKeyword(options)) { + return; + } + + var requestParam = { + keyword: options.keyword, + orderby: options.orderby || '_distance', + page_size: options.page_size || 10, + page_index: options.page_index || 1, + output: 'json', + key: that.key + }; + + if (options.address_format) { + requestParam.address_format = options.address_format; + } + + if (options.filter) { + requestParam.filter = options.filter; + } + + var distance = options.distance || "1000"; + var auto_extend = options.auto_extend || 1; + var region = null; + var rectangle = null; + + //判断城市限定参数 + if (options.region) { + region = options.region; + } + + //矩形限定坐标(暂时只支持字符串格式) + if (options.rectangle) { + rectangle = options.rectangle; + } + + var locationsuccess = function (result) { + if (region && !rectangle) { + //城市限定参数拼接 + requestParam.boundary = "region(" + region + "," + auto_extend + "," + result.latitude + "," + result.longitude + ")"; + if (options.sig) { + requestParam.sig = Utils.getSig(requestParam, options.sig, 'search'); + } + } else if (rectangle && !region) { + //矩形搜索 + requestParam.boundary = "rectangle(" + rectangle + ")"; + if (options.sig) { + requestParam.sig = Utils.getSig(requestParam, options.sig, 'search'); + } + } else { + requestParam.boundary = "nearby(" + result.latitude + "," + result.longitude + "," + distance + "," + auto_extend + ")"; + if (options.sig) { + requestParam.sig = Utils.getSig(requestParam, options.sig, 'search'); + } + } + wx.request(Utils.buildWxRequestConfig(options, { + url: URL_SEARCH, + data: requestParam + }, 'search')); + }; + Utils.locationProcess(options, locationsuccess); + }; + + /** + * sug模糊检索 + * + * @param {Object} options 接口参数对象 + * + * 参数对象结构可以参考 + * http://lbs.qq.com/webservice_v1/guide-suggestion.html + */ + getSuggestion(options) { + var that = this; + options = options || {}; + Utils.polyfillParam(options); + + if (!Utils.checkKeyword(options)) { + return; + } + + var requestParam = { + keyword: options.keyword, + region: options.region || '全国', + region_fix: options.region_fix || 0, + policy: options.policy || 0, + page_size: options.page_size || 10,//控制显示条数 + page_index: options.page_index || 1,//控制页数 + get_subpois : options.get_subpois || 0,//返回子地点 + output: 'json', + key: that.key + }; + //长地址 + if (options.address_format) { + requestParam.address_format = options.address_format; + } + //过滤 + if (options.filter) { + requestParam.filter = options.filter; + } + //排序 + if (options.location) { + var locationsuccess = function (result) { + requestParam.location = result.latitude + ',' + result.longitude; + if (options.sig) { + requestParam.sig = Utils.getSig(requestParam, options.sig, 'suggest'); + } + wx.request(Utils.buildWxRequestConfig(options, { + url: URL_SUGGESTION, + data: requestParam + }, "suggest")); + }; + Utils.locationProcess(options, locationsuccess); + } else { + if (options.sig) { + requestParam.sig = Utils.getSig(requestParam, options.sig, 'suggest'); + } + wx.request(Utils.buildWxRequestConfig(options, { + url: URL_SUGGESTION, + data: requestParam + }, "suggest")); + } + }; + + /** + * 逆地址解析 + * + * @param {Object} options 接口参数对象 + * + * 请求参数结构可以参考 + * http://lbs.qq.com/webservice_v1/guide-gcoder.html + */ + reverseGeocoder(options) { + var that = this; + options = options || {}; + Utils.polyfillParam(options); + var requestParam = { + coord_type: options.coord_type || 5, + get_poi: options.get_poi || 0, + output: 'json', + key: that.key + }; + if (options.poi_options) { + requestParam.poi_options = options.poi_options + } + + var locationsuccess = function (result) { + requestParam.location = result.latitude + ',' + result.longitude; + if (options.sig) { + requestParam.sig = Utils.getSig(requestParam, options.sig, 'reverseGeocoder'); + } + wx.request(Utils.buildWxRequestConfig(options, { + url: URL_GET_GEOCODER, + data: requestParam + }, 'reverseGeocoder')); + }; + Utils.locationProcess(options, locationsuccess); + }; + + /** + * 地址解析 + * + * @param {Object} options 接口参数对象 + * + * 请求参数结构可以参考 + * http://lbs.qq.com/webservice_v1/guide-geocoder.html + */ + geocoder(options) { + var that = this; + options = options || {}; + Utils.polyfillParam(options); + + if (Utils.checkParamKeyEmpty(options, 'address')) { + return; + } + + var requestParam = { + address: options.address, + output: 'json', + key: that.key + }; + + //城市限定 + if (options.region) { + requestParam.region = options.region; + } + + if (options.sig) { + requestParam.sig = Utils.getSig(requestParam, options.sig, 'geocoder'); + } + + wx.request(Utils.buildWxRequestConfig(options, { + url: URL_GET_GEOCODER, + data: requestParam + },'geocoder')); + }; + + + /** + * 获取城市列表 + * + * @param {Object} options 接口参数对象 + * + * 请求参数结构可以参考 + * http://lbs.qq.com/webservice_v1/guide-region.html + */ + getCityList(options) { + var that = this; + options = options || {}; + Utils.polyfillParam(options); + var requestParam = { + output: 'json', + key: that.key + }; + + if (options.sig) { + requestParam.sig = Utils.getSig(requestParam, options.sig, 'getCityList'); + } + + wx.request(Utils.buildWxRequestConfig(options, { + url: URL_CITY_LIST, + data: requestParam + },'getCityList')); + }; + + /** + * 获取对应城市ID的区县列表 + * + * @param {Object} options 接口参数对象 + * + * 请求参数结构可以参考 + * http://lbs.qq.com/webservice_v1/guide-region.html + */ + getDistrictByCityId(options) { + var that = this; + options = options || {}; + Utils.polyfillParam(options); + + if (Utils.checkParamKeyEmpty(options, 'id')) { + return; + } + + var requestParam = { + id: options.id || '', + output: 'json', + key: that.key + }; + + if (options.sig) { + requestParam.sig = Utils.getSig(requestParam, options.sig, 'getDistrictByCityId'); + } + + wx.request(Utils.buildWxRequestConfig(options, { + url: URL_AREA_LIST, + data: requestParam + },'getDistrictByCityId')); + }; + + /** + * 用于单起点到多终点的路线距离(非直线距离)计算: + * 支持两种距离计算方式:步行和驾车。 + * 起点到终点最大限制直线距离10公里。 + * + * 新增直线距离计算。 + * + * @param {Object} options 接口参数对象 + * + * 请求参数结构可以参考 + * http://lbs.qq.com/webservice_v1/guide-distance.html + */ + calculateDistance(options) { + var that = this; + options = options || {}; + Utils.polyfillParam(options); + + if (Utils.checkParamKeyEmpty(options, 'to')) { + return; + } + + var requestParam = { + mode: options.mode || 'walking', + to: Utils.location2query(options.to), + output: 'json', + key: that.key + }; + + if (options.from) { + options.location = options.from; + } + + //计算直线距离 + if(requestParam.mode == 'straight'){ + var locationsuccess = function (result) { + var locationTo = Utils.getEndLocation(requestParam.to);//处理终点坐标 + var data = { + message:"query ok", + result:{ + elements:[] + }, + status:0 + }; + for (var i = 0; i < locationTo.length; i++) { + data.result.elements.push({//将坐标存入 + distance: Utils.getDistance(result.latitude, result.longitude, locationTo[i].lat, locationTo[i].lng), + duration:0, + from:{ + lat: result.latitude, + lng:result.longitude + }, + to:{ + lat: locationTo[i].lat, + lng: locationTo[i].lng + } + }); + } + var calculateResult = data.result.elements; + var distanceResult = []; + for (var i = 0; i < calculateResult.length; i++) { + distanceResult.push(calculateResult[i].distance); + } + return options.success(data,{ + calculateResult: calculateResult, + distanceResult: distanceResult + }); + }; + + Utils.locationProcess(options, locationsuccess); + } else { + var locationsuccess = function (result) { + requestParam.from = result.latitude + ',' + result.longitude; + if (options.sig) { + requestParam.sig = Utils.getSig(requestParam, options.sig, 'calculateDistance'); + } + wx.request(Utils.buildWxRequestConfig(options, { + url: URL_DISTANCE, + data: requestParam + },'calculateDistance')); + }; + + Utils.locationProcess(options, locationsuccess); + } + }; + + /** + * 路线规划: + * + * @param {Object} options 接口参数对象 + * + * 请求参数结构可以参考 + * https://lbs.qq.com/webservice_v1/guide-road.html + */ + direction(options) { + var that = this; + options = options || {}; + Utils.polyfillParam(options); + + if (Utils.checkParamKeyEmpty(options, 'to')) { + return; + } + + var requestParam = { + output: 'json', + key: that.key + }; + + //to格式处理 + if (typeof options.to == 'string') { + requestParam.to = options.to; + } else { + requestParam.to = options.to.latitude + ',' + options.to.longitude; + } + //初始化局部请求域名 + var SET_URL_DIRECTION = null; + //设置默认mode属性 + options.mode = options.mode || MODE.driving; + + //设置请求域名 + SET_URL_DIRECTION = URL_DIRECTION + options.mode; + + if (options.from) { + options.location = options.from; + } + + if (options.mode == MODE.driving) { + if (options.from_poi) { + requestParam.from_poi = options.from_poi; + } + if (options.heading) { + requestParam.heading = options.heading; + } + if (options.speed) { + requestParam.speed = options.speed; + } + if (options.accuracy) { + requestParam.accuracy = options.accuracy; + } + if (options.road_type) { + requestParam.road_type = options.road_type; + } + if (options.to_poi) { + requestParam.to_poi = options.to_poi; + } + if (options.from_track) { + requestParam.from_track = options.from_track; + } + if (options.waypoints) { + requestParam.waypoints = options.waypoints; + } + if (options.policy) { + requestParam.policy = options.policy; + } + if (options.plate_number) { + requestParam.plate_number = options.plate_number; + } + } + + if (options.mode == MODE.transit) { + if (options.departure_time) { + requestParam.departure_time = options.departure_time; + } + if (options.policy) { + requestParam.policy = options.policy; + } + } + + var locationsuccess = function (result) { + requestParam.from = result.latitude + ',' + result.longitude; + if (options.sig) { + requestParam.sig = Utils.getSig(requestParam, options.sig, 'direction',options.mode); + } + wx.request(Utils.buildWxRequestConfig(options, { + url: SET_URL_DIRECTION, + data: requestParam + }, 'direction')); + }; + + Utils.locationProcess(options, locationsuccess); + } +}; + +module.exports = QQMapWX; \ No newline at end of file diff --git a/utils/staticMap.js b/utils/staticMap.js index 621a31b..e0ced93 100644 --- a/utils/staticMap.js +++ b/utils/staticMap.js @@ -1,10 +1,10 @@ -// 高德静态地图API工具类 -const AMAP_KEY = '4c513a688938fd89b88b296e867f66ec' +// 腾讯静态地图API工具类 +const QQMAP_KEY = 'RO5BZ-ECZ63-7US3C-RT5QW-TIDZE-2FF35' class StaticMapUtil { constructor() { - this.key = AMAP_KEY - this.baseUrl = 'https://restapi.amap.com/v3/staticmap' + this.key = QQMAP_KEY + this.baseUrl = 'https://apis.map.qq.com/ws/staticmap/v2/' } /** @@ -14,54 +14,40 @@ class StaticMapUtil { */ generateMapUrl(options = {}) { const defaultOptions = { - location: '116.397128,39.916527', // 默认中心点(北京) - zoom: 13, // 缩放级别 - size: '750*500', // 图片尺寸 - scale: 2, // 高清显示 - markers: [], // 标记点 - labels: [], // 文字标注 - paths: [], // 路径 - traffic: 0, // 交通路况 0-不显示 1-显示 - format: 'png' // 图片格式 + center: '39.916527,116.397128', // 默认中心点(北京) + zoom: 13, // 缩放级别 + size: '750*500', // 图片尺寸 + scale: 2, // 高清显示 + markers: [], // 标记点 + labels: [], // 文字标注 + paths: [], // 路径 + traffic: 0, // 交通路况 0-不显示 1-显示 + format: 'png' // 图片格式 } const config = { ...defaultOptions, ...options } let url = `${this.baseUrl}?key=${this.key}` - url += `&location=${config.location}` + url += `¢er=${config.center}` url += `&zoom=${config.zoom}` url += `&size=${config.size}` url += `&scale=${config.scale}` - url += `&traffic=${config.traffic}` - url += `&format=${config.format}` - - // 添加标记点 + + // 腾讯地图添加标记点 if (config.markers && config.markers.length > 0) { - const markersStr = config.markers.map(marker => { - let markerStr = '' - if (marker.size) markerStr += `size:${marker.size}|` - if (marker.color) markerStr += `color:${marker.color}|` - if (marker.label) markerStr += `label:${marker.label}|` - markerStr += `${marker.longitude},${marker.latitude}` - return markerStr - }).join('|') - url += `&markers=${encodeURIComponent(markersStr)}` + config.markers.forEach((marker, index) => { + url += `&markers=size:${marker.size || 'medium'}|color:${marker.color || '0x2196F3'}|label:${marker.label || ' '}|${marker.latitude},${marker.longitude}` + }) } - // 添加文字标注 - if (config.labels && config.labels.length > 0) { - const labelsStr = config.labels.map(label => { - let labelStr = '' - if (label.content) labelStr += `content:${label.content}|` - if (label.font) labelStr += `font:${label.font}|` - if (label.bold) labelStr += `bold:${label.bold}|` - if (label.fontSize) labelStr += `fontSize:${label.fontSize}|` - if (label.fontColor) labelStr += `fontColor:${label.fontColor}|` - if (label.background) labelStr += `background:${label.background}|` - labelStr += `${label.longitude},${label.latitude}` - return labelStr + // 添加路径 + if (config.paths && config.paths.length > 0) { + const pathsStr = config.paths.map(path => { + let pathStr = `color:${path.color || '0xFF0000'}|weight:${path.weight || 5}|` + pathStr += path.points.map(point => `${point.latitude},${point.longitude}`).join(';') + return pathStr }).join('|') - url += `&labels=${encodeURIComponent(labelsStr)}` + url += `&path=${encodeURIComponent(pathsStr)}` } return url @@ -86,13 +72,13 @@ class StaticMapUtil { const markers = positions.map((position, index) => ({ longitude: parseFloat(position.longitude), latitude: parseFloat(position.latitude), - size: 'mid', - color: position.status === 'online' ? 'green' : 'red', + size: 'medium', + color: position.status === 'online' ? '0x4CAF50' : '0xF44336', label: String.fromCharCode(65 + (index % 26)) // A, B, C... })) return this.generateMapUrl({ - location: `${center.longitude},${center.latitude}`, + center: `${center.latitude},${center.longitude}`, zoom: zoom, markers: markers, ...options @@ -114,14 +100,23 @@ class StaticMapUtil { return { longitude: 116.397128, latitude: 39.916527 } } - const sum = validPositions.reduce((acc, pos) => ({ - longitude: acc.longitude + parseFloat(pos.longitude), - latitude: acc.latitude + parseFloat(pos.latitude) - }), { longitude: 0, latitude: 0 }) + if (validPositions.length === 1) { + return { + longitude: parseFloat(validPositions[0].longitude), + latitude: parseFloat(validPositions[0].latitude) + } + } + + let sumLat = 0 + let sumLng = 0 + validPositions.forEach(position => { + sumLat += parseFloat(position.latitude) + sumLng += parseFloat(position.longitude) + }) return { - longitude: (sum.longitude / validPositions.length).toFixed(6), - latitude: (sum.latitude / validPositions.length).toFixed(6) + latitude: sumLat / validPositions.length, + longitude: sumLng / validPositions.length } } @@ -132,63 +127,56 @@ class StaticMapUtil { * @returns {Number} 缩放级别 */ calculateOptimalZoom(positions, center) { - if (positions.length <= 1) return 15 + if (!positions || positions.length <= 1) { + return 13 // 默认缩放级别 + } const validPositions = positions.filter(p => p.longitude && p.latitude) - if (validPositions.length <= 1) return 15 + if (validPositions.length <= 1) { + return 13 + } // 计算最大距离 let maxDistance = 0 - validPositions.forEach(pos => { - const distance = this.getDistance( + validPositions.forEach(position => { + const distance = this.calculateHaversineDistance( center.latitude, center.longitude, - parseFloat(pos.latitude), parseFloat(pos.longitude) + parseFloat(position.latitude), parseFloat(position.longitude) ) maxDistance = Math.max(maxDistance, distance) }) - // 根据最大距离确定缩放级别 - if (maxDistance < 1) return 16 // 1km内 - if (maxDistance < 2) return 15 // 2km内 - if (maxDistance < 5) return 14 // 5km内 - if (maxDistance < 10) return 13 // 10km内 - if (maxDistance < 20) return 12 // 20km内 - if (maxDistance < 50) return 11 // 50km内 - return 10 // 50km以上 + // 基于距离计算缩放级别 + if (maxDistance > 10) return 10 // 10km以上 + if (maxDistance > 5) return 11 // 5-10km + if (maxDistance > 2) return 12 // 2-5km + if (maxDistance > 1) return 13 // 1-2km + if (maxDistance > 0.5) return 14 // 500m-1km + if (maxDistance > 0.2) return 15 // 200-500m + return 16 // 200m以内 } /** * 计算两点间距离(公里) - * @param {Number} lat1 纬度1 - * @param {Number} lng1 经度1 - * @param {Number} lat2 纬度2 - * @param {Number} lng2 经度2 + * @param {Number} lat1 第一点纬度 + * @param {Number} lng1 第一点经度 + * @param {Number} lat2 第二点纬度 + * @param {Number} lng2 第二点经度 * @returns {Number} 距离(公里) */ - getDistance(lat1, lng1, lat2, lng2) { - const radLat1 = lat1 * Math.PI / 180.0 - const radLat2 = lat2 * Math.PI / 180.0 - const a = radLat1 - radLat2 - const b = lng1 * Math.PI / 180.0 - lng2 * Math.PI / 180.0 - let s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) + Math.cos(radLat1) * Math.cos(radLat2) * Math.pow(Math.sin(b / 2), 2))) - s = s * 6378.137 - s = Math.round(s * 10000) / 10000 - return s - } - - /** - * 预加载地图图片 - * @param {String} mapUrl 地图URL - * @returns {Promise} 图片加载Promise - */ - preloadMapImage(mapUrl) { - return new Promise((resolve, reject) => { - const img = new Image() - img.onload = () => resolve(mapUrl) - img.onerror = reject - img.src = mapUrl - }) + calculateHaversineDistance(lat1, lng1, lat2, lng2) { + const R = 6371 // 地球半径(公里) + const dLat = (lat2 - lat1) * Math.PI / 180 + const dLng = (lng2 - lng1) * Math.PI / 180 + + const a = Math.sin(dLat/2) * Math.sin(dLat/2) + + Math.cos(lat1 * Math.PI / 180) * Math.cos(lat2 * Math.PI / 180) * + Math.sin(dLng/2) * Math.sin(dLng/2) + + const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a)) + return R * c } } -export default new StaticMapUtil() \ No newline at end of file +// 导出实例 +module.exports = new StaticMapUtil() \ No newline at end of file