diff --git a/common/qqmap-wx-jssdk.js b/common/qqmap-wx-jssdk.js
deleted file mode 100644
index 595b65b..0000000
--- a/common/qqmap-wx-jssdk.js
+++ /dev/null
@@ -1,1122 +0,0 @@
-/**
- * 微信小程序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/page_user/khfw/khfw.vue b/page_user/khfw/khfw.vue
index 2090f89..5cc448b 100644
--- a/page_user/khfw/khfw.vue
+++ b/page_user/khfw/khfw.vue
@@ -473,12 +473,13 @@
 				border-bottom: 2rpx solid #fff;
 			}
 			.qs_li{
-					margin-top: 10rpx;
+					// margin-top: 10rpx;
 				display: flex;
 				flex-wrap: nowrap;
 				align-items: center;
 				justify-content: space-between;
-				border-bottom: 2rpx solid #D8D8D8;
+				border-bottom: 2rpx solid #D8D8D870;
+				padding-top: 26rpx;
 				padding-bottom: 26rpx;
 				.qs_li_txt{
 				
diff --git a/page_user/yj.vue b/page_user/yj.vue
index 5d3cd82..8053581 100644
--- a/page_user/yj.vue
+++ b/page_user/yj.vue
@@ -174,7 +174,8 @@
 				areaInfo: "",
 				isback:false,
 				showBack:false,
-				loadingmask:false
+				loadingmask:false,
+				ispaid:false
 
 			}
 
@@ -337,64 +338,74 @@
 				});
 			},
 			sub4() {
-				let id = uni.getStorageSync('areaId');
-				let data = {
-					userId: this.userId,
-
-					// ruleId: this.freeInfo.ruleId,
-					money: this.areaInfo.deposit,
-					mark: "押金充值",
-					type: '4',
-					areaId: id
-
-
-				}
-				this.$u.post('/appVerify/pre/order', data).then((res) => {
-					if (res.code === 200) {
-						// this.freList=res.rows
-						let that = this
-						uni.requestPayment({
-							provider: 'wxpay',
-							timeStamp: res.data.timeStamp,
-							nonceStr: res.data.nonceStr,
-							package: res.data.packageVal,
-							signType: res.data.signType,
-							paySign: res.data.paySign,
-							success(res) {
-								// 支付成功逻辑
-								// uni.showLoading({
-								// 	title: '加载中'
-								// })
-								that.loadingmask=true
-								setTimeout(() => {
-									
-									that.check()
-									
-								}, 2000)
-								setTimeout(() => {
-									
-									that.check()
-									
-								}, 4000)
-
-							},
-							fail(err) {
-								// 支付失败逻辑
-								uni.showToast({
-									title: '支付失败',
-									icon: 'none',
-									duration: 2000
-								});
-							}
-						});
-					} else {
-						uni.showToast({
-							title: res.data,
-							icon: 'none',
-							duration: 2000
-						});
+				if(this.ispaid==false){
+					this.ispaid=true
+					let id = uni.getStorageSync('areaId');
+					let data = {
+						userId: this.userId,
+					
+						// ruleId: this.freeInfo.ruleId,
+						money: this.areaInfo.deposit,
+						mark: "押金充值",
+						type: '4',
+						areaId: id
+					
+					
 					}
-				})
+					let that = this
+					this.$u.post('/appVerify/pre/order', data).then((res) => {
+						if (res.code === 200) {
+							// this.freList=res.rows
+							
+							uni.requestPayment({
+								provider: 'wxpay',
+								timeStamp: res.data.timeStamp,
+								nonceStr: res.data.nonceStr,
+								package: res.data.packageVal,
+								signType: res.data.signType,
+								paySign: res.data.paySign,
+								success(res) {
+									// 支付成功逻辑
+									// uni.showLoading({
+									// 	title: '加载中'
+									// })
+									that.ispaid=false
+									that.loadingmask=true
+									setTimeout(() => {
+										
+										that.check()
+										
+									}, 2000)
+									setTimeout(() => {
+										
+										that.check()
+										
+									}, 4000)
+					
+								},
+								fail(err) {
+									that.ispaid=false
+									// 支付失败逻辑
+									uni.showToast({
+										title: '支付失败',
+										icon: 'none',
+										duration: 2000
+									});
+								}
+							});
+						} else {
+							that.ispaid=false
+							uni.showToast({
+								title: res.data,
+								icon: 'none',
+								duration: 2000
+							});
+						}
+					})
+								
+				}
+				
+			
 			},
 		}
 	}
diff --git a/pages/index/index.vue b/pages/index/index.vue
index 57e0ea0..70bb3b5 100644
--- a/pages/index/index.vue
+++ b/pages/index/index.vue
@@ -748,7 +748,7 @@
 			<view class="maskpage1" v-if="maskepage==5">
 				<view class="top_info">
 					<image src="https://lxnapi.ccttiot.com/bike/img/static/uG3cbPgvPDzwlq6IHHxK" mode=""></image>
-					<view class="masktxt">
+					<view class="masktxt" v-if="orderinfo.sn">
 						蓝牙连接失败
 					</view>
 				</view>
@@ -764,9 +764,13 @@
 				</view>
 				<view class="btn_box">
 
-					<view class="btn4" @click="maskloading=false">
+					<view class="btn4" @click="maskloading=false"  v-if="orderinfo.sn">
 						继续用车
 
+					</view>
+					<view class="btn4" @click="maskloading=false" v-else>
+						返回
+					
 					</view>
 					<view class="btn3" @click="Binddevice">
 						重新连接
@@ -797,6 +801,30 @@
 					</view>
 				</view>
 			</view>
+			<view class="maskpage1" v-if="maskepage==7">
+				<view class="top_info">
+					<image src="https://lxnapi.ccttiot.com/bike/img/static/uvAGhjbhjhSaxCru8dSN" mode=""
+						style="width: 25rpx;"></image>
+					<view class="masktxt">
+						设备电量过低
+					</view>
+				</view>
+				<view class="masktips" style="width: 100%;margin-top: 45rpx;">
+					请使用附近其他车辆
+				</view>
+				<view class="tipsimg" style="margin-top: 90rpx;">
+					<image src="https://lxnapi.ccttiot.com/bike/img/static/ugvqmfB3QYujZ6SnfTia" mode=""></image>
+				</view>
+				<view class="btn_box" style="justify-content: center;">
+
+					<view class="btn3" @click="maskloading=false" style="width: 600rpx;">
+						换车解锁
+					</view>
+				</view>
+			</view>
+		</view>
+		<view class="fixdivce">
+			
 		</view>
 	</view>
 </template>
@@ -805,7 +833,8 @@
 	const app = getApp();
 	var xBlufi = require("@/utils/blufi/xBlufi.js");
 	let _this = null;
-	import QQMapWX from '@/common/qqmap-wx-jssdk.js'
+	import QQMapWX from '@/common/qqmap-wx-jssdk.min.js'
+	var qqmapsdk
 	export default {
 		data() {
 			return {
@@ -920,8 +949,15 @@
 				navBarHeight: 0,
 
 				mappolyline: [],
-				qqmapsdk: {},
+				qqmapsdk: null,
 				index: 0,
+
+				lastClickedMarkerId: null, // To store the ID of the last clicked marker
+				defaultMarkerIconPath: 'https://api.ccttiot.com/smartmeter/img/static/uF9qLejuAZErNTrRuHq7',
+				clickedMarkerIconPath: 'https://lxnapi.ccttiot.com/bike/img/static/uf2TwgtQ2sKJrUY3wTz4',
+				ispaid:false,
+				isInParkingArea:null,
+				specificDeviceMarkerId:null
 			}
 		},
 		watch: {
@@ -949,10 +985,10 @@
 			// #endif
 
 
-			this.qqmapsdk = new QQMapWX({
+			 qqmapsdk = new QQMapWX({
 				key: 'E7OBZ-KRKWW-5VKRH-36XXR-TB3NS-MUFHB' // 自己申请的key值
 			});
-
+			
 			this.gps.deptId = uni.getStorageSync('deptId');
 
 			if (e.q) {
@@ -993,40 +1029,7 @@
 			}, 500)
 		},
 		onShow() {
-			this.timers = setInterval(() => {
-				// console.log('定时器运行中...');
-				this.getmarks()
-				// 在这里执行你的逻辑
-				if (this.orderinfo.sn) {
-
-					this.$u.get('/app/device/info?sn=' + this.orderinfo.sn).then((res) => {
-						if (res.code === 200) {
-							this.mac = this.OrderdeviceInfos.mac
-							if (this.OrderdeviceInfos.onlineStatus != res.data.onlineStatus) {
-								this.OrderdeviceInfos = res.data
-								// this.OrderdeviceInfos.onlineStatus ='0'
-
-								// if (this.OrderdeviceInfos.onlineStatus == 0 && this.orderinfo.status !=
-								// 	3) {
-
-								// 	if (this.carstause == false) {
-
-								// 		this.isnoline = true
-								// 	}
-
-								// }
-							}
-
-
-						} else {
-							// 处理接口返回错误的情况
-						}
-					}).catch(error => {
-						// 处理接口请求失败的情况
-					});
-				}
-
-			}, 3000); // 每秒执行一次
+			this.timestare()
 			// 检查蓝牙权限状态
 			uni.getBluetoothAdapterState({
 				success: function(res) {
@@ -1085,7 +1088,7 @@
 						that.latitude = lb.latitude;
 						that.longitude = lb.longitude;
 
-						that.routePlanning(27.10557727,120.25709224)
+						
 						console.log(that.areaInfo, 'that.areaInfo');
 						that.getArea()
 						if (that.qParam != 'null' && that.showagre == false) {
@@ -1218,11 +1221,11 @@
 			},
 		},
 		methods: {
-			routePlanning(end_lat,end_long) {
+			routePlanning(end_lat, end_long) {
 				console.log('调用了');
 				let that = this
-				that.qqmapsdk.direction({
-					mode: 'driving', // 驾车
+				qqmapsdk.direction({
+					mode: 'walking', // 驾车
 					from: { // 起始位置(当前位置)坐标
 						latitude: that.latitude,
 						longitude: that.longitude
@@ -1248,25 +1251,327 @@
 								longitude: coors[i + 1]
 							})
 						}
-						console.log('点串数组', pl)
+						// console.log('点串数组', pl)
 						// 设置polyline属性,将路线显示出来,将解压坐标第一个数据作为起点
 						that.mappolyline = [{
 							points: pl,
-							color: '#367EEF', // 线的填充色
-							width: 3, // 折现宽度
-							borderWidth: 2, // 边线宽度 
-							borderColor: '#5B98FD', // 边线颜色
-							lineCap: 'square', // 线端头
-							showArrow: true, // 沿线路方向显示箭头
+							// color: '#367EEF', // 线的填充色
+							// width: 3, // 折现宽度
+							// borderWidth: 2, // 边线宽度 
+							// borderColor: '#5B98FD', // 边线颜色
+							// lineCap: 'square', // 线端头
+							// showArrow: true, // 沿线路方向显示箭头
+							width: 8,
+							arrowLine: true,
+							color: '#00AF99',
+							strokeWidth: 2,
+							strokeColor: '#00AF99',
+							fillColor: '#00AF99'
 						}]
-						console.log(that.mappolyline,'that.mappolylinethat.mappolyline');
+						// console.log(that.mappolyline, 'that.mappolylinethat.mappolyline');
 					},
 					fail(res) {
-						console.log('resresresresresresres',res)
+						console.log('resresresresresresres', res)
 					}
 				})
 			},
+			
+			
+			onMapTap(event) {
+				this.showdevice = false
+				this.deviceIndex = 0
+				// this.sn = ''
+				this.type = 0
+				this.freeInfo = {}
+				this.freeListIndex = 0
+				this.mappolyline=[]
+				// const {
+				// 	latitude,
+				// 	longitude
+				// } = event.detail;
+				// console.log('Map tapped at:', latitude, longitude);
+				// this.close()
+				// 在这里添加你的回调逻辑
+			},
+			onMarkerTap(e) {
+				this.showdevice = false;
+				this.deviceIndex = 0;
+				this.type = 0;
+				this.freeInfo = {};
+				this.freeListIndex = 0;
 
+				if (e.type === 'markertap') {
+					console.log('Clicked marker:', e.markerId);
+
+					const markerExists = this.listData.some(item => item.sn == e.markerId);
+
+					if (markerExists) {
+						this.sn = e.markerId;
+						this.deviceInfo(0);
+
+						// Revert the last clicked marker to the default image
+						if (this.lastClickedMarkerId !== null) {
+							this.markers = this.markers.map(marker => {
+								if (marker.id === this.lastClickedMarkerId) {
+									return {
+										...marker,
+										iconPath: this.defaultMarkerIconPath
+									};
+								}
+								return marker;
+							});
+						}
+
+						// Update the clicked marker's image
+						this.markers = this.markers.map(marker => {
+							if (marker.id === e.markerId) {
+								return {
+									...marker,
+									iconPath: this.clickedMarkerIconPath
+								};
+							}
+							return marker;
+						});
+
+						// Store the ID of the currently clicked marker
+						this.lastClickedMarkerId = e.markerId;
+
+						// Get the latitude and longitude of the clicked marker
+						const clickedMarker = this.markers.find(marker => marker.id === e.markerId);
+						if (clickedMarker) {
+							const {
+								latitude,
+								longitude
+							} = clickedMarker;
+							console.log(`Clicked marker location - Latitude: ${latitude}, Longitude: ${longitude}`);
+							this.routePlanning(latitude, longitude)
+							// Find nearby markers
+							this.getNearbyMarkers(latitude, longitude);
+						}
+
+						// console.log(this.markers, 'Updated markers');
+					} else {
+						console.log('Marker ID does not exist in the list data');
+					}
+
+					// Prevent event bubbling
+					e.stopPropagation();
+				}
+			},
+			getNearbyMarkers(clickedLat, clickedLon) {
+				const nearbyMarkers = this.listData.filter(item => {
+					if (item.latitude && item.longitude) {
+						const distance = this.haversineDistance(
+							parseFloat(clickedLat),
+							parseFloat(clickedLon),
+							parseFloat(item.latitude),
+							parseFloat(item.longitude)
+						);
+						return distance <= 15;
+					}
+					return false;
+				});
+				console.log('Nearby markers within 15 meters:', nearbyMarkers);
+			},
+			haversineDistance(lat1, lon1, lat2, lon2) {
+				const R = 6371e3; // Earth radius in meters
+				const toRad = angle => angle * Math.PI / 180;
+				const dLat = toRad(lat2 - lat1);
+				const dLon = toRad(lon2 - lon1);
+				const a = Math.sin(dLat / 2) * Math.sin(dLat / 2) +
+					Math.cos(toRad(lat1)) * Math.cos(toRad(lat2)) *
+					Math.sin(dLon / 2) * Math.sin(dLon / 2);
+				const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
+				return R * c;
+			},
+			
+			getmarks() {
+			    let data = {
+			        areaId: this.areaInfo.areaId
+			    };
+			    if (this.areaInfo.areaId) {
+			        this.$u.get(`/app/allVehicleByArea`, data).then((res) => {
+			            if (res.code === 200 && res.data != '') {
+			                this.listData = res.data;
+			                const newDeviceMarkers = this.listData.map(item => ({
+			                    id: parseFloat(item.sn),
+			                    latitude: parseFloat(item.latitude),
+			                    longitude: parseFloat(item.longitude),
+			                    width: 40,
+			                    height: 28,
+			                    iconPath: this.defaultMarkerIconPath,
+			                    isDeviceMarker: true // 区分为设备标记
+			                }));
+			
+			                // 保留停车标记和特定设备标记
+			                const preservedMarkers = this.markers.filter(marker => marker.isParkingMarker || marker.id === this.specificDeviceMarkerId);
+			
+			                // 更新markers数组,避免删除已识别的重要标记
+			                let updatedMarkers = [...newDeviceMarkers, ...preservedMarkers];
+			
+			                // 确保点击的标记保持其图标
+			                if (this.lastClickedMarkerId !== null) {
+			                    updatedMarkers = updatedMarkers.map(marker => {
+			                        if (marker.id === this.lastClickedMarkerId) {
+			                            return {
+			                                ...marker,
+			                                iconPath: this.clickedMarkerIconPath
+			                            };
+			                        }
+			                        return marker;
+			                    });
+			                }
+			
+			                // 使用this.$set触发Vue的响应式更新
+			                this.$set(this, 'markers', updatedMarkers);
+			
+			                this.oldMarkers = [...this.markers];
+			            }
+			        }).catch(error => {
+			            console.error("Error fetching device data:", error);
+			        });
+			    }
+			},
+			
+			timestare() {
+			    this.timers = setInterval(() => {
+			        this.getmarks();
+			
+			        if (this.orderinfo.sn) {
+			            this.$u.get('/app/device/info?sn=' + this.orderinfo.sn).then((res) => {
+			                if (res.code === 200) {
+			                    this.mac = this.OrderdeviceInfos.mac;
+			                    if (this.OrderdeviceInfos.onlineStatus != res.data.onlineStatus) {
+			                        this.OrderdeviceInfos = res.data;
+			                    }
+			// 					console.log(parseFloat(res.data.latitude),parseFloat(res.data.longitude),'每次更新的经纬度');
+			//                     // 添加或更新特定设备标记
+			//                     this.specificDeviceMarkerId = parseFloat(this.orderinfo.sn);
+			//                     const specificDeviceMarker = {
+			//                         id: this.specificDeviceMarkerId,
+			//                         latitude: parseFloat(res.data.latitude),
+			//                         longitude: parseFloat(res.data.longitude),
+			//                         width: 40,
+			//                         height: 28,
+			//                         iconPath: 'https://lxnapi.ccttiot.com/bike/img/static/u5Im6YipwNSYiiaMTHxH',
+			//                         // isSpecificDeviceMarker: true // 区分为特定设备标记
+			//                     };
+			
+			//                     // 保留现有标记
+			//                     const preservedMarkers = this.markers.filter(marker => marker.id !== this.specificDeviceMarkerId);
+			
+			//                     // 更新markers数组
+			//                     const updatedMarkers = [...preservedMarkers, specificDeviceMarker];
+			//                     this.$set(this, 'markers', updatedMarkers);
+			                } else {
+			                    // 处理接口返回错误的情况
+			                }
+			            }).catch(error => {
+			                console.error("Error fetching specific device data:", error);
+			            });
+			        }
+			    }, 3000); // 每3秒执行一次
+			},
+			toggleIconAndCallout() {
+			    this.showIconAndCallout = !this.showIconAndCallout;
+			    this.markers = this.markers.map(marker => {
+			        if (this.showIconAndCallout) {
+			            // Show callout
+			            if (marker.isParkingMarker) {
+			                marker.callout.display = 'ALWAYS';
+			                marker.isCalloutVisible = true;
+			            }
+			        } else {
+			            // Hide callout
+			            if (marker.isParkingMarker) {
+			                marker.callout.display = 'BYCLICK';
+			                marker.isCalloutVisible = false;
+			            }
+			        }
+			        return marker;
+			    });
+			    // Force update markers array
+			    this.$set(this, 'markers', [...this.markers]);
+			},
+			
+			getParking() {
+			    // Send request to get data
+			    let data = {
+			        areaId: this.areaInfo.areaId
+			    };
+			    this.$u.get('/app/parking/list?', data).then((res) => {
+			        if (res.code === 200) {
+			            // Process returned data
+			            const type1Data = [];
+			            const type2Data = [];
+			            const type3Data = [];
+			
+			            res.rows.forEach(row => {
+			                if (row.type == 1) {
+			                    type1Data.push(row);
+			                } else if (row.type == 2) {
+			                    type2Data.push(row);
+			                } else if (row.type == 3) {
+			                    type3Data.push(row);
+			                }
+			            });
+			            const validBoundaries = type1Data.map(row => row.boundaryStr).filter(
+			                boundary => typeof boundary === 'string' && boundary.trim() !== '');
+			            const polylines = this.convertBoundaryToPolylines(validBoundaries, 1);
+			
+			            const validBoundaries1 = type2Data.map(row => row.boundaryStr).filter(
+			                boundary => typeof boundary === 'string' && boundary.trim() !== '');
+			            const polylines1 = this.convertBoundaryToPolylines(validBoundaries1, 2);
+			
+			            const validBoundaries2 = type3Data.map(row => row.boundaryStr).filter(
+			                boundary => typeof boundary === 'string' && boundary.trim() !== '');
+			            const polylines2 = this.convertBoundaryToPolylines(validBoundaries2, 3);
+			
+			            // Add processed data to this.polyline
+			            this.polyline = this.polyline.concat(polylines2);
+			            this.polyline = this.polyline.concat(polylines1);
+			            this.polyline = this.polyline.concat(polylines);
+			            this.parkingList = res.rows;
+			
+			            // Set parking markers and distinguish them
+			            const newParkingMarkers = res.rows.map(item => ({
+			                id: parseFloat(item.parkingId),
+			                latitude: parseFloat(item.latitude),
+			                longitude: parseFloat(item.longitude),
+			                width: 20,
+			                height: 29,
+			                iconPath: item.type == 1 ?
+			                    'https://lxnapi.ccttiot.com/bike/img/static/up2xXqAgwCX5iER600k3' :
+			                    item.type == 2 ?
+			                    'https://lxnapi.ccttiot.com/bike/img/static/u53BAQcFIX3vxsCzEZ7t' :
+			                    'https://lxnapi.ccttiot.com/bike/img/static/uDNY5Q4zOiZTCBTA2Jdq',
+			                callout: {
+			                    content: item.parkingName,
+			                    color: '#ffffff',
+			                    fontSize: 14,
+			                    borderRadius: 10,
+			                    bgColor: item.type == 1 ? '#3A7EDB' : item.type == 2 ?
+			                        '#FFC107' : '#FF473E',
+			                    padding: 6,
+			                    display: 'BYCLICK' // Initially do not show callout
+			                },
+			                isCalloutVisible: false, // Initially do not show callout
+			                isParkingMarker: true // Distinguish as parking marker
+			            }));
+			
+			            // Preserve device markers and specific device marker
+			            const preservedMarkers = this.markers.filter(marker => marker.isDeviceMarker || marker.id === this.specificDeviceMarkerId);
+			
+			            // Merge parking markers and device markers
+			            this.markers = [...newParkingMarkers, ...preservedMarkers];
+			            this.$set(this, 'markers', [...this.markers]);
+			        }
+			    }).catch(error => {
+			        console.error("Error fetching parking data:", error);
+			    });
+			},
+			
+			
 			totxtpage() {
 				this.seeDetail = true
 				uni.navigateTo({
@@ -1313,6 +1618,9 @@
 								// this.showYjTip = true;
 							} else if (res.msg == '【扫码/编号开锁骑行】发送开锁命令失败') {
 								this.maskepage = 3
+							} else if (res.msg == '低电量不得骑行') {
+								this.maskepage = 7
+								// this.offopencar()
 							} else {
 								// uni.showToast({
 								// 	title: res.msg,
@@ -1322,7 +1630,11 @@
 								this.toploadtxt = '开锁失败';
 								setTimeout(() => {
 									this.maskloading = false;
-
+									uni.showToast({
+										title: res.msg,
+										icon: 'none',
+										duration: 2000
+									});
 								}, 800);
 							}
 						}
@@ -1516,7 +1828,8 @@
 						let data = {
 							latitude: lb.latitude,
 							longitude: lb.longitude,
-							areaId: that.areaInfo.areaId
+							areaId: that.areaInfo.areaId,
+							sn:that.OrderdeviceInfos.sn
 						}
 						that.backgps.latitude = lb.latitude
 						that.backgps.longitude = lb.longitude
@@ -1528,6 +1841,7 @@
 								let parkingReturn = res.data
 									.parkingReturn /** 强制停车点还车 true:开启,false:关闭*/
 								let isInParkingArea = res.data.isInParkingArea /** 是否在停车区内*/
+								that.isInParkingArea=res.data.isInParkingArea 
 								if (parkingReturn) {
 									// 不可以在停车点外还车
 									if (isInParkingArea) {
@@ -1544,7 +1858,7 @@
 													'/appVerify/device/return?returnType=1&orderNo=' +
 													that.orderinfo.orderNo + '&isBluetooth=true' +
 													'&lon=' + that.backgps.longitude + '&lat=' +
-													that.backgps.latitude).then((
+													that.backgps.latitude+'&isInParkingArea='+that.isInParkingArea).then((
 													res) => {
 
 													if (res.code === 200) {
@@ -1564,6 +1878,11 @@
 														that.toploadtxt = '还车失败';
 														setTimeout(() => {
 															that.maskloading = false;
+															uni.showToast({
+																title: res.msg,
+																icon: 'none',
+																duration: 2000
+															});
 														}, 1000);
 
 													}
@@ -1593,7 +1912,7 @@
 													that.orderinfo
 													.orderNo + '&isBluetooth=true' + '&lon=' + that
 													.backgps.longitude + '&lat=' + that.backgps
-													.latitude).then((
+													.latitude+'&isInParkingArea='+that.isInParkingArea).then((
 													res) => {
 
 													if (res.code === 200) {
@@ -1614,6 +1933,11 @@
 														that.toploadtxt = '还车失败';
 														setTimeout(() => {
 															that.maskloading = false;
+															uni.showToast({
+																title: res.msg,
+																icon: 'none',
+																duration: 2000
+															});
 														}, 1000);
 													}
 												})
@@ -1671,6 +1995,11 @@
 								that.toploadtxt = '校验失败';
 								setTimeout(() => {
 									that.maskloading = false;
+									uni.showToast({
+										title: res.msg,
+										icon: 'none',
+										duration: 2000
+									});
 								}, 1000);
 								// uni.showToast({
 								// 	title: res.msg,
@@ -1730,7 +2059,7 @@
 							this.$u.post('/appVerify/device/return?returnType=1&orderNo=' + this.orderinfo
 								.orderNo + '&isBluetooth=true' + '&lon=' + this.backgps.longitude +
 								'&lat=' + this.backgps
-								.latitude).then((
+								.latitude+'&isInParkingArea='+this.isInParkingArea).then((
 								res) => {
 
 								if (res.code === 200) {
@@ -1753,6 +2082,11 @@
 									this.buletxt = '还车失败!';
 									setTimeout(() => {
 										this.maskloading = false;
+										uni.showToast({
+											title: res.msg,
+											icon: 'none',
+											duration: 2000
+										});
 										this.getisInOrder();
 									}, 1000);
 									// uni.showToast({
@@ -1776,7 +2110,7 @@
 			},
 			backDevice() {
 
-				this.$u.post('/appVerify/device/return?returnType=1&orderNo=' + this.orderinfo.orderNo).then((
+				this.$u.post('/appVerify/device/return?returnType=1&orderNo=' + this.orderinfo.orderNo+'&isInParkingArea='+this.isInParkingArea).then((
 					res) => {
 
 					if (res.code === 200) {
@@ -1793,6 +2127,11 @@
 						this.toploadtxt = '还车失败';
 						setTimeout(() => {
 							this.maskloading = false;
+							uni.showToast({
+								title: res.msg,
+								icon: 'none',
+								duration: 2000
+							});
 						}, 1000);
 					}
 				})
@@ -1976,6 +2315,8 @@
 				this.$u.post('/appVerify/device/snSwitch', data).then((res) => {
 					// uni.hideLoading();
 					this.seeDetail = false;
+					// res.code=500
+					// res.msg='低电量不得骑行'
 					if (res.code === 200) {
 						this.loadimg = 'https://lxnapi.ccttiot.com/bike/img/static/upNvRa9ZQMyiwxLliF5z';
 						this.toploadtxt = '开锁成功';
@@ -1990,18 +2331,21 @@
 							this.maskepage = 6
 							// this.showYjTip = true;
 						} else if (res.msg == '【扫码/编号开锁骑行】发送开锁命令失败') {
-							// this.maskepage=3
+							// this.maskepage=3 低电量不得骑行
 							this.offopencar()
+						} else if (res.msg == '低电量不得骑行') {
+							this.maskepage = 7
+							// this.offopencar()
 						} else {
-							// uni.showToast({
-							// 	title: res.msg,
-							// 	icon: 'none',
-							// 	duration: 2000
-							// });
+
 							this.toploadtxt = '开锁失败';
 							setTimeout(() => {
 								this.maskloading = false;
-
+								uni.showToast({
+									title: res.msg,
+									icon: 'none',
+									duration: 2000
+								});
 							}, 800);
 						}
 					}
@@ -2389,6 +2733,11 @@
 										that.buletxt = '开锁失败';
 										setTimeout(() => {
 											that.maskloading = false;
+											uni.showToast({
+												title: res.msg,
+												icon: 'none',
+												duration: 2000
+											});
 										}, 1000);
 										// if (res.msg == '10500-----') {
 										// 	uni.showToast({
@@ -2454,6 +2803,11 @@
 							this.toploadtxt = '锁车失败';
 							setTimeout(() => {
 								this.maskloading = false;
+								uni.showToast({
+									title: res.msg,
+									icon: 'none',
+									duration: 2000
+								});
 							}, 1000);
 
 							// if (res.msg == '10500-----') {
@@ -2512,6 +2866,11 @@
 										that.buletxt = '锁车失败';
 										setTimeout(() => {
 											that.maskloading = false;
+											uni.showToast({
+												title: res.msg,
+												icon: 'none',
+												duration: 2000
+											});
 										}, 1000);
 
 
@@ -3090,21 +3449,7 @@
 					url: '/page_user/agreement'
 				})
 			},
-			onMapTap(event) {
-				this.showdevice = false
-				this.deviceIndex = 0
-				// this.sn = ''
-				this.type = 0
-				this.freeInfo = {}
-				this.freeListIndex = 0
-				// const {
-				// 	latitude,
-				// 	longitude
-				// } = event.detail;
-				// console.log('Map tapped at:', latitude, longitude);
-				// this.close()
-				// 在这里添加你的回调逻辑
-			},
+
 			// lockDevice() {
 			// 	if (this.orderinfo.status) {
 			// 		this.showtcs = true
@@ -3399,56 +3744,68 @@
 			},
 			// 骑行结束支付
 			topay1() {
-				let data = {
-					userId: this.userId,
-					sn: this.orderinfo.sn,
-					orderNo: this.orderinfo.orderNo,
-
-					// money: this.freeInfo.fee,
-					mark: "订单支付",
-					type: '1'
-
-
-				}
-				uni.showLoading({
-
-				})
-				console.log('点击了');
-				let that = this
-				this.$u.post('/appVerify/pre/order', data).then((res) => {
-					if (res.code === 200) {
-						uni.hideLoading()
-						// this.freList=res.rows
-						uni.requestPayment({
-							provider: 'wxpay',
-							timeStamp: res.data.timeStamp,
-							nonceStr: res.data.nonceStr,
-							package: res.data.packageVal,
-							signType: res.data.signType,
-							paySign: res.data.paySign,
-							success(res) {
-								console.log('支付成功');
-								// 支付成功逻辑
-								that.getisInOrder()
-
-							},
-							fail(err) {
-								// 支付失败逻辑
-								uni.showToast({
-									title: '支付失败',
-									icon: 'none',
-									duration: 2000
-								});
-							}
-						});
-					} else {
-						uni.showToast({
-							title: res.msg,
-							icon: 'none',
-							duration: 2000
-						});
+				if(this.ispaid==false){
+					this.ispaid=true
+					let data = {
+						userId: this.userId,
+						sn: this.orderinfo.sn,
+						orderNo: this.orderinfo.orderNo,
+					
+						// money: this.freeInfo.fee,
+						mark: "订单支付",
+						type: '1'
+					
+					
 					}
-				})
+					uni.showLoading({
+					
+					})
+					console.log('点击了');
+					let that = this
+					this.$u.post('/appVerify/pre/order', data).then((res) => {
+						if (res.code === 200) {
+							uni.hideLoading()
+							// this.freList=res.rows
+							uni.requestPayment({
+								provider: 'wxpay',
+								timeStamp: res.data.timeStamp,
+								nonceStr: res.data.nonceStr,
+								package: res.data.packageVal,
+								signType: res.data.signType,
+								paySign: res.data.paySign,
+								success(res) {
+									that.ispaid=false
+									console.log('支付成功');
+									// 支付成功逻辑
+									clearInterval(that.timer)
+									that.orderinfo = {}
+									that.showdevice = false
+									that.deviceIndex = 0
+									that.getisInOrder()
+									
+								},
+								fail(err) {
+									that.ispaid=false
+									// 支付失败逻辑
+									uni.showToast({
+										title: '支付失败',
+										icon: 'none',
+										duration: 2000
+									});
+								}
+							});
+						} else {
+							that.ispaid=false
+							uni.showToast({
+								title: res.msg,
+								icon: 'none',
+								duration: 2000
+							});
+						}
+					})
+				}
+				
+				
 			},
 
 
@@ -3860,95 +4217,21 @@
 				});
 			},
 			findBike() {
-				uni.showToast({
-					title: '响铃请求发送成功',
-					icon: 'none',
-					duration: 2000
-				});
+				uni.showLoading({
+					
+				})
+				// uni.showToast({
+				// 	title: '响铃请求发送成功',
+				// 	icon: 'none',
+				// 	duration: 2000
+				// });
 				this.$u.post('/app/device/ring?sn=' + this.sn).then((res) => {
 					if (res.code === 200) {
-
+						uni.hideLoading()
 					}
 				})
 			},
-			onMarkerTap(e) {
-				this.showdevice = false
-				this.deviceIndex = 0
-				// this.sn = ''
-				this.type = 0
-				this.freeInfo = {}
-				this.freeListIndex = 0
-				if (e.type === 'markertap') {
-					console.log('点击了标记:', e.markerId);
-					// 这里可以根据需要处理点击标记的逻辑
-					// 阻止事件冒泡\
 
-					const markerExists = this.listData.some(item => item.sn == e.markerId);
-
-					if (markerExists) {
-						// 处理点击标记的逻辑
-						this.sn = e.markerId;
-						this.deviceInfo(0);
-						// this.markers = this.markers.map(item => {
-						// 	if (item.sn === e.markerId) { // 假设markers数组中的mark对象也有sn属性
-						// 		// 你可以根据需要设置更大的尺寸
-						// 		return {
-						// 			...item,
-						// 			width: item.width * 2, // 假设初始宽度是25,这里放大到50
-						// 			height: item.height * 2 // 假设初始高度是25,这里放大到50
-						// 		};
-						// 	}
-						// 	return item;
-						// });
-						console.log(this.markers, 'this.markersthis.markers');
-					} else {
-						console.log('标记ID不存在于列表数据中');
-					}
-
-					// 阻止事件冒泡
-					e.stopPropagation();
-
-				}
-
-			},
-
-
-
-
-			getmarks() {
-				let data = {
-					areaId: this.areaInfo.areaId
-				};
-				if (this.areaInfo.areaId) {
-					this.$u.get(`/app/allVehicleByArea`, data).then((res) => {
-						if (res.code === 200 && res.data != '') {
-							this.listData = res.data
-							// this.listData[0].onlineStatus=0
-							// this.listData = res.data.filter(item => item.onlineStatus != 0);
-							const newDeviceMarkers = this.listData.map(item => ({
-								id: parseFloat(item.sn),
-								latitude: parseFloat(item.latitude),
-								longitude: parseFloat(item.longitude),
-								width: 40,
-								height: 28, // 确保这里是数字类型
-								iconPath: 'https://api.ccttiot.com/smartmeter/img/static/uF9qLejuAZErNTrRuHq7',
-								isDeviceMarker: true // 区分为设备标记
-							}));
-
-							// 保留停车场标记
-							const preservedMarkers = this.markers.filter(marker => marker.isParkingMarker);
-
-							// 更新markers数组,避免删除已标识的重要标记
-							this.markers = [...newDeviceMarkers, ...preservedMarkers];
-							this.$set(this, 'markers', [...this.markers]);
-
-							this.oldMarkers = [...this.markers];
-						}
-					}).catch(error => {
-						console.error("Error fetching device data:", error);
-					});
-				}
-			},
 			isMarkersChanged(newMarkers) {
 				if (this.oldMarkers.length !== newMarkers.length) {
 					return true;
@@ -4121,106 +4404,7 @@
 					console.error("Error fetching area data:", error);
 				});
 			},
-			toggleIconAndCallout() {
-				this.showIconAndCallout = !this.showIconAndCallout;
-				this.markers = this.markers.map(marker => {
-					if (this.showIconAndCallout) {
-						// 显示气泡
-						if (marker.isParkingMarker) {
-							marker.callout.display = 'ALWAYS';
-							marker.isCalloutVisible = true;
-						}
-					} else {
-						// 隐藏气泡
-						if (marker.isParkingMarker) {
-							marker.callout.display = 'BYCLICK';
-							marker.isCalloutVisible = false;
-						}
-					}
-					return marker;
-				});
-				// 强制更新markers数组
-				this.$set(this, 'markers', [...this.markers]);
-			},
-			getParking() {
-				// 发送请求获取数据
-				let data = {
-					areaId: this.areaInfo.areaId
-				}
-				this.$u.get('/app/parking/list?', data).then((res) => {
-					if (res.code === 200) {
-						// 处理接口返回的数据
-						const type1Data = [];
-						const type2Data = [];
-						const type3Data = [];
-
-						res.rows.forEach(row => {
-							if (row.type == 1) {
-								type1Data.push(row);
-							} else if (row.type == 2) {
-								type2Data.push(row);
-							} else if (row.type == 3) {
-								type3Data.push(row);
-							}
-						});
-						const validBoundaries = type1Data.map(row => row.boundaryStr).filter(
-							boundary =>
-							typeof boundary === 'string' && boundary.trim() !== '');
-						const polylines = this.convertBoundaryToPolylines(validBoundaries, 1);
-
-						const validBoundaries1 = type2Data.map(row => row.boundaryStr).filter(
-							boundary =>
-							typeof boundary === 'string' && boundary.trim() !== '');
-						const polylines1 = this.convertBoundaryToPolylines(validBoundaries1, 2);
-
-						const validBoundaries2 = type3Data.map(row => row.boundaryStr).filter(
-							boundary =>
-							typeof boundary === 'string' && boundary.trim() !== '');
-						const polylines2 = this.convertBoundaryToPolylines(validBoundaries2, 3);
-						// 将处理后的数据添加到 this.polyline 中
-						this.polyline = this.polyline.concat(polylines2);
-						this.polyline = this.polyline.concat(polylines1);
-						this.polyline = this.polyline.concat(polylines);
-						this.parkingList = res.rows;
-
-						// 设置停车场标记并区分
-						const newParkingMarkers = res.rows.map(item => ({
-							id: parseFloat(item.parkingId),
-							latitude: parseFloat(item.latitude),
-							longitude: parseFloat(item.longitude),
-							width: 20,
-							height: 29,
-							iconPath: item.type == 1 ?
-								'https://lxnapi.ccttiot.com/bike/img/static/up2xXqAgwCX5iER600k3' :
-								item
-								.type == 2 ?
-								'https://lxnapi.ccttiot.com/bike/img/static/u53BAQcFIX3vxsCzEZ7t' :
-								'https://lxnapi.ccttiot.com/bike/img/static/uDNY5Q4zOiZTCBTA2Jdq',
-							callout: {
-								content: item.parkingName,
-								color: '#ffffff',
-								fontSize: 14,
-								borderRadius: 10,
-								bgColor: item.type == 1 ? '#3A7EDB' : item.type == 2 ?
-									'#FFC107' : '#FF473E',
-								padding: 6,
-								display: 'BYCLICK' // 初始时不显示气泡
-							},
-							isCalloutVisible: false, // 初始时不显示气泡
-							isParkingMarker: true // 区分为停车场标记
-						}));
-
-						// 保留设备标记
-						const preservedMarkers = this.markers.filter(marker => marker.isDeviceMarker);
-
-						// 合并停车场标记和设备标记
-						this.markers = [...newParkingMarkers, ...preservedMarkers];
-						this.$set(this, 'markers', [...this.markers]);
-					}
-				}).catch(error => {
-					console.error("Error fetching parking data:", error);
-				});
-			},
+			
 			convertBoundaryToPolyline(boundary) {
 				if (!boundary) return null;
 
@@ -4590,7 +4774,7 @@
 										duration: 4000
 									});
 								} else if (this.deviceInfos.status == 1) {
-									this.routePlanning(res.data.latitude,res.data.longitude)
+									// this.routePlanning(res.data.latitude, res.data.longitude)
 									this.showdevice = true
 									this.type = 1;
 									this.deviceIndex = 1;
@@ -4633,7 +4817,8 @@
 															this.deviceInfos = res.data;
 
 															if (num == 0) {
-																this.routePlanning(res.data.latitude,res.data.longitude)
+																// this.routePlanning(res.data.latitude,
+																// 	res.data.longitude)
 																this.showdevice = true;
 																this.type = 0;
 															} else {
@@ -4705,7 +4890,9 @@
 																} else if (this.deviceInfos
 																	.status ==
 																	1) {
-																		this.routePlanning(res.data.latitude,res.data.longitude)
+																	// this.routePlanning(res.data
+																	// 	.latitude, res.data
+																	// 	.longitude)
 																	this.showdevice = true;
 																	this.type = 1;
 																	this.deviceIndex = 1;
@@ -4792,7 +4979,9 @@
 
 	.page {
 		width: 750rpx;
-
+		// .fixdivce{
+			
+		// }
 		.maskload {
 
 			position: fixed;
@@ -5084,7 +5273,7 @@
 			width: 370rpx;
 			height: 73rpx;
 			position: fixed;
-			bottom: 600rpx;
+			bottom: 35.5vh;
 			left: 38rpx;
 
 			.tipss {
diff --git a/pages_admin/admin_index.vue b/pages_admin/admin_index.vue
index f4524a3..d5d0ce4 100644
--- a/pages_admin/admin_index.vue
+++ b/pages_admin/admin_index.vue
@@ -135,7 +135,7 @@
 				infonum: {},
 				rangeMin: 0,
 				rangMax: 100,
-				rangeValue: [1, 100],
+				rangeValue: [0, 100],
 				status0: [], //未上架
 				status1: [], //正常
 				status2: [], //预约中
diff --git a/pages_admin/worke/worke_Operation.vue b/pages_admin/worke/worke_Operation.vue
index bddce9e..b1dfb85 100644
--- a/pages_admin/worke/worke_Operation.vue
+++ b/pages_admin/worke/worke_Operation.vue
@@ -37,24 +37,36 @@
 			</view>
 			<view class="info">
 				<view class="info_li">
-					总营收
+					订单总费用:
+					<span style="color: #4C97E7;" >¥{{displayAmount(info.income.totalFee) }}</span>
+					
+				</view>
+				<view class="info_li">
+					手续费:
+					<span style="color: #4C97E7;" >¥{{displayAmount(info.income.handlingFee)}}</span>
+					
+				</view>
+			</view>
+			<view class="info">
+				<view class="info_li">
+					总营收:
 					<span style="color: #4C97E7;" v-if="info.income.totalIncome">¥{{info.income.totalIncome}}</span>
 					<span style="color: #4C97E7;" v-else>¥--</span>
 				</view>
 				<view class="info_li">
-					累计待支付
+					累计待支付:
 					<span style="color: #4C97E7;" v-if="info.income.totalUnpaid">¥{{info.income.totalUnpaid}}</span>
 					<span style="color: #4C97E7;" v-else>¥--</span>
 				</view>
 			</view>
 			<view class="info">
 				<view class="info_li">
-					已支付
+					已支付:
 					<span style="color: #3D3D3D;" v-if="info.income.totalPaid">¥{{info.income.totalPaid}}</span>
 					<span style="color: #3D3D3D;" v-else>¥--</span>
 				</view>
 				<view class="info_li">
-					已退款
+					已退款:
 					<span style="color: #3D3D3D;" v-if="info.income.totalRefund">¥{{info.income.totalRefund}}</span>
 					<span style="color: #3D3D3D;" v-else>¥--</span>
 				</view>