1 line
77 KiB
JSON
1 line
77 KiB
JSON
[{"E:\\work\\sino\\sino-h5\\src\\main.js":"1","E:\\work\\sino\\sino-h5\\src\\utils\\rem.js":"2","E:\\work\\sino\\sino-h5\\src\\App.vue":"3","E:\\work\\sino\\sino-h5\\src\\router\\index.js":"4","E:\\work\\sino\\sino-h5\\src\\components\\bottomItem.vue":"5","E:\\work\\sino\\sino-h5\\src\\utils\\serverMap.js":"6","E:\\work\\sino\\sino-h5\\src\\components\\tabBar.vue":"7","E:\\work\\sino\\sino-h5\\src\\utils\\appointTime.js":"8","E:\\work\\sino\\sino-h5\\src\\utils\\common.js":"9","E:\\work\\sino\\sino-h5\\src\\components\\attentionItem.vue":"10","E:\\work\\sino\\sino-h5\\src\\components\\commonBtn.vue":"11","E:\\work\\sino\\sino-h5\\src\\components\\operationBtn.vue":"12","E:\\work\\sino\\sino-h5\\src\\utils\\map.js":"13","E:\\work\\sino\\sino-h5\\src\\store\\index.js":"14","E:\\work\\sino\\sino-h5\\src\\store\\getters.js":"15","E:\\work\\sino\\sino-h5\\src\\store\\modules\\order.js":"16","E:\\work\\sino\\sino-h5\\src\\utils\\myMixins.js":"17","E:\\work\\sino\\sino-h5\\src\\api\\order.js":"18","E:\\work\\sino\\sino-h5\\src\\utils\\http.js":"19","E:\\work\\sino\\sino-h5\\src\\components\\feeComponent.vue":"20","E:\\work\\sino\\sino-h5\\src\\components\\protocolContent.vue":"21","E:\\work\\sino\\sino-h5\\src\\views\\index\\addressMap.vue":"22","E:\\work\\sino\\sino-h5\\src\\views\\index\\rescue.vue":"23","E:\\work\\sino\\sino-h5\\src\\views\\index\\search.vue":"24","E:\\work\\sino\\sino-h5\\src\\views\\index\\orderStatus.vue":"25","E:\\work\\sino\\sino-h5\\src\\views\\index\\cancel.vue":"26","E:\\work\\sino\\sino-h5\\src\\views\\index\\index.vue":"27","E:\\work\\sino\\sino-h5\\src\\views\\index\\pay.vue":"28","E:\\work\\sino\\sino-h5\\src\\utils\\status.js":"29"},{"size":336,"mtime":1688106627323,"results":"30","hashOfConfig":"31"},{"size":603,"mtime":1686900641809,"results":"32","hashOfConfig":"31"},{"size":483,"mtime":1688634264766,"results":"33","hashOfConfig":"31"},{"size":1675,"mtime":1689217850816,"results":"34","hashOfConfig":"31"},{"size":1155,"mtime":1687165565669,"results":"35","hashOfConfig":"31"},{"size":1570,"mtime":1687923483824,"results":"36","hashOfConfig":"31"},{"size":2139,"mtime":1689153284616,"results":"37","hashOfConfig":"31"},{"size":1845,"mtime":1687680468781,"results":"38","hashOfConfig":"31"},{"size":3929,"mtime":1688451061762,"results":"39","hashOfConfig":"31"},{"size":826,"mtime":1687682752089,"results":"40","hashOfConfig":"31"},{"size":632,"mtime":1687748944609,"results":"41","hashOfConfig":"31"},{"size":964,"mtime":1687779937861,"results":"42","hashOfConfig":"31"},{"size":3348,"mtime":1688642194857,"results":"43","hashOfConfig":"31"},{"size":531,"mtime":1688104391380,"results":"44","hashOfConfig":"31"},{"size":77,"mtime":1688104878335,"results":"45","hashOfConfig":"31"},{"size":1676,"mtime":1688544371833,"results":"46","hashOfConfig":"31"},{"size":1084,"mtime":1689213876522,"results":"47","hashOfConfig":"31"},{"size":1641,"mtime":1689217497790,"results":"48","hashOfConfig":"31"},{"size":1314,"mtime":1688721985124,"results":"49","hashOfConfig":"31"},{"size":1339,"mtime":1688538651236,"results":"50","hashOfConfig":"31"},{"size":6041,"mtime":1688462121108,"results":"51","hashOfConfig":"31"},{"size":5951,"mtime":1688608649386,"results":"52","hashOfConfig":"31"},{"size":12003,"mtime":1689215502528,"results":"53","hashOfConfig":"31"},{"size":5282,"mtime":1688627589151,"results":"54","hashOfConfig":"31"},{"size":11505,"mtime":1688646687536,"results":"55","hashOfConfig":"31"},{"size":3065,"mtime":1688633482599,"results":"56","hashOfConfig":"31"},{"size":15479,"mtime":1689214838108,"results":"57","hashOfConfig":"31"},{"size":3735,"mtime":1689218075636,"results":"58","hashOfConfig":"31"},{"size":1649,"mtime":1688638238803,"results":"59","hashOfConfig":"31"},{"filePath":"60","messages":"61","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"62"},"d13unh",{"filePath":"63","messages":"64","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"62"},{"filePath":"65","messages":"66","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"67"},{"filePath":"68","messages":"69","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"70","messages":"71","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"67"},{"filePath":"72","messages":"73","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"62"},{"filePath":"74","messages":"75","errorCount":2,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"76","messages":"77","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"62"},{"filePath":"78","messages":"79","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"62"},{"filePath":"80","messages":"81","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"67"},{"filePath":"82","messages":"83","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"67"},{"filePath":"84","messages":"85","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"67"},{"filePath":"86","messages":"87","errorCount":8,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":"88","usedDeprecatedRules":"62"},{"filePath":"89","messages":"90","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"62"},{"filePath":"91","messages":"92","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"62"},{"filePath":"93","messages":"94","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"62"},{"filePath":"95","messages":"96","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"97","messages":"98","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"99","messages":"100","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"62"},{"filePath":"101","messages":"102","errorCount":2,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":"103","usedDeprecatedRules":"67"},{"filePath":"104","messages":"105","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"67"},{"filePath":"106","messages":"107","errorCount":6,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":"108","usedDeprecatedRules":"67"},{"filePath":"109","messages":"110","errorCount":7,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":"111","usedDeprecatedRules":"67"},{"filePath":"112","messages":"113","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":"114","usedDeprecatedRules":"67"},{"filePath":"115","messages":"116","errorCount":5,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":"117","usedDeprecatedRules":"67"},{"filePath":"118","messages":"119","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":"120","usedDeprecatedRules":"67"},{"filePath":"121","messages":"122","errorCount":9,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":"123","usedDeprecatedRules":"67"},{"filePath":"124","messages":"125","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"126","messages":"127","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"62"},"E:\\work\\sino\\sino-h5\\src\\main.js",[],[],"E:\\work\\sino\\sino-h5\\src\\utils\\rem.js",[],"E:\\work\\sino\\sino-h5\\src\\App.vue",[],[],"E:\\work\\sino\\sino-h5\\src\\router\\index.js",[],"E:\\work\\sino\\sino-h5\\src\\components\\bottomItem.vue",[],"E:\\work\\sino\\sino-h5\\src\\utils\\serverMap.js",[],"E:\\work\\sino\\sino-h5\\src\\components\\tabBar.vue",["128","129"],"E:\\work\\sino\\sino-h5\\src\\utils\\appointTime.js",[],"E:\\work\\sino\\sino-h5\\src\\utils\\common.js",[],"E:\\work\\sino\\sino-h5\\src\\components\\attentionItem.vue",[],"E:\\work\\sino\\sino-h5\\src\\components\\commonBtn.vue",[],"E:\\work\\sino\\sino-h5\\src\\components\\operationBtn.vue",[],"E:\\work\\sino\\sino-h5\\src\\utils\\map.js",["130","131","132","133","134","135","136","137"],"// 获取定位, 返回 经纬度\r\nexport function getLocal(mapContext) {\r\n return new Promise((resolve, reject) => {\r\n mapContext.plugin('AMap.Geolocation', function () {\r\n let geolocation = new AMap.Geolocation({\r\n enableHighAccuracy: true, // 是否使用高精度定位,默认:true\r\n timeout: 10000, // 设置定位超时时间,默认:无穷大\r\n offset: [10, 20], // 定位按钮的停靠位置的偏移量\r\n zoomToAccuracy: true, // 定位成功后调整地图视野范围使定位位置及精度范围视野内可见,默认:false\r\n position: 'RB' // 定位按钮的排放位置, RB表示右下\r\n })\r\n\r\n geolocation.getCurrentPosition(function(status, result){\r\n if(status == 'complete'){\r\n resolve(result.position)\r\n }else{\r\n reject(result)\r\n }\r\n });\r\n })\r\n })\r\n}\r\n\r\n// 逆地址解析,根据经纬度获取详细地址\r\nexport function getAddress(mapContext, lnglat) {\r\n return new Promise((resolve, reject) => {\r\n mapContext.plugin('AMap.Geocoder', function () {\r\n let geocoder = new AMap.Geocoder({\r\n // city: \"010\", //城市设为北京,默认:“全国”\r\n });\r\n\r\n geocoder.getAddress(lnglat, function(status, result) {\r\n if (status === 'complete' && result.info === 'OK') {\r\n // result为对应的地理位置详细信息\r\n resolve(result)\r\n } else {\r\n console.log(result)\r\n alert(JSON.stringify(result))\r\n }\r\n })\r\n })\r\n })\r\n}\r\n\r\n// 输入提示\r\nexport function searchFun(mapContext, cityCode, keyword) {\r\n return new Promise((resolve, reject) => {\r\n mapContext.plugin('AMap.AutoComplete', function(){\r\n var autoOptions = {\r\n city: cityCode || '全国',\r\n };\r\n // 实例化AutoComplete\r\n var autoComplete= new AMap.AutoComplete(autoOptions);\r\n // 根据关键字进行搜索\r\n autoComplete.search(keyword, function(status, result) {\r\n // 搜索成功时,result即是对应的匹配数据\r\n if(result.info == 'OK') {\r\n resolve(result.tips)\r\n } else {\r\n reject(result)\r\n }\r\n })\r\n })\r\n })\r\n}\r\n\r\n// 路径规划\r\nexport function getRoad( mapContext, startLng, startLat, endLng, endLat ) {\r\n return new Promise((resolve, reject) => {\r\n mapContext.plugin('AMap.Driving', function() {\r\n let driving = new AMap.Driving({\r\n // 驾车路线规划策略,AMap.DrivingPolicy.LEAST_TIME是最快捷模式\r\n // policy: AMap.DrivingPolicy.LEAST_TIME,\r\n // map: mapContext\r\n })\r\n\r\n let startLngLat = [startLng, startLat]\r\n let endLngLat = [endLng, endLat]\r\n\r\n driving.search(startLngLat, endLngLat, function (status, result) {\r\n // 未出错时,result即是对应的路线规划方案\r\n if (status === 'complete') {\r\n resolve(result)\r\n } else {\r\n reject(result)\r\n }\r\n })\r\n })\r\n })\r\n}\r\n\r\n\r\nfunction drawRoute(route, map) {\r\n let path = parseRouteToPath(route)\r\n\r\n let routeLine = new AMap.Polyline({\r\n path: path,\r\n isOutline: true,\r\n outlineColor: '#ffeeee',\r\n borderWeight: 2,\r\n strokeWeight: 5,\r\n strokeOpacity: 0.9,\r\n strokeColor: '#0091ff',\r\n lineJoin: 'round'\r\n })\r\n\r\n map.add(routeLine);\r\n}\r\n","E:\\work\\sino\\sino-h5\\src\\store\\index.js",[],"E:\\work\\sino\\sino-h5\\src\\store\\getters.js",[],"E:\\work\\sino\\sino-h5\\src\\store\\modules\\order.js",[],"E:\\work\\sino\\sino-h5\\src\\utils\\myMixins.js",[],"E:\\work\\sino\\sino-h5\\src\\api\\order.js",[],"E:\\work\\sino\\sino-h5\\src\\utils\\http.js",[],"E:\\work\\sino\\sino-h5\\src\\components\\feeComponent.vue",["138","139"],"<template>\r\n <div class=\"protocol_content\">\r\n <div class=\"content\">{{ feeTitle }}</div>\r\n <div>\r\n <div class=\"protocol_title bolder\">\r\n 其他收费规则:\r\n </div>\r\n <div class=\"content\" v-for=\"item in feeListArr[this.activeTab].otherRules\">\r\n {{item}}\r\n </div>\r\n </div>\r\n <div>\r\n <div class=\"protocol_title bolder\">\r\n 取消收费规则:\r\n </div>\r\n <div class=\"content\" v-for=\"item in feeListArr[this.activeTab].cancelRules\">\r\n {{item}}\r\n </div>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script>\r\n export default {\r\n name: \"feeComponent\",\r\n props: {\r\n feeTitle: {\r\n type: String,\r\n },\r\n feeListArr: {\r\n type: Array\r\n },\r\n activeTab: {\r\n type: Number\r\n }\r\n }\r\n }\r\n</script>\r\n\r\n<style scoped lang=\"less\">\r\n .protocol_content {\r\n color: #252525;\r\n width: 100%;\r\n text-align: left;\r\n margin-bottom: 5px;\r\n box-sizing: border-box;\r\n padding: 0 10px;\r\n .content {\r\n font-size: 12px;\r\n color: #252525;\r\n margin-bottom: 5px;\r\n box-sizing: border-box;\r\n }\r\n .protocol_title {\r\n font-size: 14px;\r\n text-align: left;\r\n margin-bottom: 5px;\r\n box-sizing: border-box;\r\n }\r\n .bolder {\r\n font-weight: bold;\r\n }\r\n }\r\n</style>\r\n","E:\\work\\sino\\sino-h5\\src\\components\\protocolContent.vue",[],"E:\\work\\sino\\sino-h5\\src\\views\\index\\addressMap.vue",["140","141","142","143","144","145"],"<template>\r\n <div>\r\n <div class=\"map_wrap\" id=\"mapId\" :style=\"{ bottom: mapPosition + '%' }\">\r\n </div>\r\n <div class=\"button_wrap\">\r\n <div class=\"cancel_btn\" @click=\"cancelHandler\">取消</div>\r\n <div class=\"confirm_btn\" @click=\"successHandler\">完成</div>\r\n </div>\r\n <div class=\"search_wrap\" :style=\"{ height: mapPosition + '%' }\">\r\n <div class=\"section\">\r\n <input type=\"text\" v-model=\"keyword\" @change=\"searchHandler\" placeholder=\"请输入地址\" />\r\n </div>\r\n <div class=\"server_list\" v-if=\"keyword\">\r\n <div class=\"text_box\" v-for=\"(item, index) in addressList\" @click=\"chooseHandler(item, index)\" :class=\"{'active': index == activeIndex}\">\r\n <div class=\"address_name\">{{ item.name }}</div>\r\n <div class=\"address_detail\">{{ ( item.district || '' ) + ( item.address || '' ) }}</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script>\r\n import { searchFun } from '@/utils/map'\r\n import { leftCopy } from '@/utils/common'\r\n export default {\r\n name: \"addressMap\",\r\n data() {\r\n return {\r\n map: '',\r\n mapPosition: 60,\r\n source: '',\r\n keyword: '',\r\n addressList: [],\r\n activeIndex: null,\r\n marker: null,\r\n }\r\n },\r\n watch: {\r\n keyword() {\r\n this.searchHandler()\r\n }\r\n },\r\n created() {\r\n this.source = this.$route.query.source || ''\r\n },\r\n async mounted() {\r\n await this.initMap()\r\n },\r\n methods: {\r\n chooseHandler(item, index) {\r\n this.activeIndex = index;\r\n this.addMarker()\r\n },\r\n addMarker() {\r\n if( this.marker ) {\r\n this.map.remove(this.marker)\r\n }\r\n let content = '<div class=\"my-position\"></div>';\r\n let activeObj = this.addressList[this.activeIndex];\r\n this.marker = new AMap.Marker({\r\n position: new AMap.LngLat( activeObj.location.lng, activeObj.location.lat ),\r\n content: content,\r\n offset: new AMap.Pixel(-13, -30)\r\n });\r\n this.map.add(this.marker)\r\n },\r\n // 取消 返回上一页\r\n cancelHandler() {\r\n this.$router.go(-1)\r\n },\r\n // 完成 选择了事发地或者目的地\r\n async successHandler() {\r\n if( this.activeIndex == null ) {\r\n this.$toast('请选择具体地址')\r\n return\r\n }\r\n let activeObj = this.addressList[this.activeIndex];\r\n if( this.source == 'address') { // 事发地地址\r\n await this.$store.dispatch('order/setServerCity', activeObj.district)\r\n await this.$store.dispatch('order/setAddress', {\r\n startPoiAddress: activeObj.district + activeObj.address + activeObj.name,\r\n startLat: activeObj.location.lat,\r\n startLng: activeObj.location.lng,\r\n })\r\n } else if( this.source == 'dest' ) { // 目的地地址\r\n await this.$store.dispatch('order/setDestAddress', {\r\n endLat: activeObj.location.lat,\r\n endLng: activeObj.location.lng,\r\n endPoiAddress: activeObj.district + activeObj.address + activeObj.name,\r\n })\r\n }\r\n this.$router.go(-1)\r\n },\r\n initMap() { // 初始化地图\r\n let orderInfo = this.$store.getters.order.localAddress\r\n this.map = new AMap.Map('mapId', {\r\n viewMode: '2D', // 默认使用 2D 模式\r\n zoom:11, //初始化地图层级\r\n center: [orderInfo.lng, orderInfo.lat] //初始化地图中心点\r\n })\r\n },\r\n async searchHandler() { // 根据当前定位城市搜索,将选中的地址清空\r\n let localCityCode = this.$store.getters.order.localAddress.localCityCode\r\n this.activeIndex = null\r\n if( this.keyword ) {\r\n this.addressList = await searchFun(this.map, localCityCode, this.keyword)\r\n } else {\r\n this.addressList = []\r\n }\r\n\r\n }\r\n }\r\n }\r\n</script>\r\n<style>\r\n @import '@/styles/common.css';\r\n</style>\r\n<style scoped lang=\"less\">\r\n .map_wrap {\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n right: 0;\r\n z-index: -1;\r\n }\r\n .button_wrap {\r\n width: 100%;\r\n padding: 5px;\r\n box-sizing: border-box;\r\n zoom: 1;\r\n .cancel_btn {\r\n width: 50px;\r\n height: 27px;\r\n background: #F37877;\r\n font-size: 12px;\r\n text-align: center;\r\n line-height: 27px;\r\n color: #fff;\r\n border-radius: 3px;\r\n float: left;\r\n }\r\n .confirm_btn {\r\n width: 50px;\r\n height: 27px;\r\n background: rgba(5,193,98,1);\r\n font-size: 12px;\r\n text-align: center;\r\n line-height: 27px;\r\n color: #fff;\r\n border-radius: 3px;\r\n float: right;\r\n }\r\n }\r\n .search_wrap {\r\n background-color: #fff;\r\n position: absolute;\r\n width: 100%;\r\n bottom: 0;\r\n left: 0;\r\n overflow: auto;\r\n .section {\r\n height: 35px;\r\n width: 100%;\r\n background-color: #fff;\r\n position: fixed;\r\n /*top: calc(50% - 10px);*/\r\n padding-top: 10px;\r\n input {\r\n width: 90%;\r\n margin: 0 auto;\r\n display: block;\r\n border: none;\r\n height: 30px;\r\n border-radius: 3px;\r\n padding: 0 10px;\r\n background: #e2e0e0;\r\n font-size: 14px;\r\n }\r\n }\r\n .server_list {\r\n overflow-y: auto;\r\n padding-top: 30px;\r\n .text_box {\r\n margin: 10px 25px;\r\n padding-top: 10px;\r\n .address_name {\r\n font-size: 14px !important;\r\n color: rgba(0,0,0,0.8);\r\n }\r\n .address_detail {\r\n margin-top: 3px;\r\n color: #c3c3c3 !important;\r\n font-size: 12px !important;\r\n }\r\n }\r\n .active {\r\n .address_name {\r\n color: green !important;\r\n }\r\n .address_detail {\r\n color: green !important;\r\n }\r\n }\r\n }\r\n }\r\n</style>\r\n","E:\\work\\sino\\sino-h5\\src\\views\\index\\rescue.vue",["146","147","148","149","150","151","152"],"<template>\r\n <div class=\"main_wrap\">\r\n <div class=\"map_wrap\" id=\"mapId\">\r\n </div>\r\n <!--服务信息-->\r\n <div class=\"server_wrap\" @touchmove.stop=\"touchmoveHandle\" @touchstart.stop=\"touchstartHandle\" @touchend.stop=\"touchendHandle\">\r\n <tab-bar :click-flag=\"false\" :active-tab=\"activeTab\" :server-list=\"serverList\"></tab-bar>\r\n <div class=\"server_main\">\r\n <!-- 车牌号 -->\r\n <div class=\"form_item border_bottom\">\r\n <img class=\"radio\" src=\"@/assets/radio.png\" alt=\"\">\r\n <div class=\"form_label\">车牌号:</div>\r\n <input type=\"text\" v-model=\"form.plateNumber\" placeholder=\"请输入车牌号\" class=\"input_class\" />\r\n </div>\r\n <!-- 姓名 -->\r\n <div class=\"form_item border_bottom\">\r\n <img class=\"radio\" src=\"@/assets/radio.png\" alt=\"\">\r\n <div class=\"form_label\">姓 名:</div>\r\n <input type=\"text\" v-model=\"form.name\" placeholder=\"请输入您的姓名\" class=\"input_class\" />\r\n </div>\r\n <!-- 手机号 -->\r\n <div class=\"form_item border_bottom\">\r\n <img class=\"radio\" src=\"@/assets/radio.png\" alt=\"\">\r\n <div class=\"form_label\">手机号:</div>\r\n <input type=\"number\" v-model=\"form.phone\" placeholder=\"请输入您的手机号\" class=\"input_class\" />\r\n </div>\r\n <!-- 手机号 -->\r\n <div class=\"form_item border_bottom\">\r\n <img class=\"radio\" src=\"@/assets/radio.png\" alt=\"\">\r\n <div class=\"form_label\">预计:</div>\r\n <div class=\"incident_text\">\r\n <span class=\"money_count\">{{ extraFee }}</span>元起\r\n <div class=\"fee_desc\" @click=\"show = true\">费用说明</div>\r\n </div>\r\n </div>\r\n <div class=\"protocol_wrap\">\r\n <van-checkbox v-model=\"checked\" icon-size=\"15px\" shape=\"square\">我已经阅读并同意</van-checkbox>\r\n <span class=\"server_protocol\" @click=\"protocolShow = true\">《道路救援服务协议》</span>\r\n </div>\r\n <attention-item color=\"#939393\" attention=\"温馨提示:服务申请后,请保持您的手机畅通,我们的工作人员会与您联系并确认救援金额,在线支付完成后会及时安排救援人员前往施救,谢谢。\"></attention-item>\r\n </div>\r\n <div class=\"btn_wrap\" v-if=\"slideShow\">\r\n <common-btn title=\"呼叫救援\" @ownClick=\"ownClickHandler\"></common-btn>\r\n </div>\r\n </div>\r\n\r\n <van-dialog v-model=\"show\" title=\"费用说明\" show-cancel-button v-if=\"show\">\r\n <fee-component :fee-title=\"feeTitle\" :fee-list-arr=\"feeListArr\" :active-tab=\"activeTab\"></fee-component>\r\n </van-dialog>\r\n <van-dialog v-model=\"protocolShow\" title=\"中道救援服务协议\" show-cancel-button>\r\n <protocol-content />\r\n </van-dialog>\r\n </div>\r\n</template>\r\n\r\n<script>\r\n import { Dialog } from 'vant';\r\n import protocolContent from \"@/components/protocolContent\";\r\n import feeComponent from \"@/components/feeComponent\";\r\n import { getFeeTitle, feeList } from '@/utils/common'\r\n import { getFee, getCurrentOrder, createOrder } from '@/api/order'\r\n import { serverList } from '@/utils/serverMap'\r\n import tabBar from \"@/components/tabBar\";\r\n import AttentionItem from '@/components/attentionItem'\r\n import commonBtn from \"@/components/commonBtn\";\r\n import { myMixins } from '@/utils/myMixins.js'\r\n export default {\r\n name: \"rescuePage\",\r\n mixins: [myMixins],\r\n data() {\r\n return {\r\n map: '',\r\n activeTab: 0,\r\n serverList: serverList,\r\n checked: false,\r\n feeTitle: '',\r\n feeListArr: [],\r\n extraFee: 0,\r\n show: false,\r\n protocolShow: false,\r\n marker: null,\r\n destMarker: null,\r\n form: {\r\n plateNumber: '',\r\n name: '',\r\n phone: '',\r\n }\r\n }\r\n },\r\n components: {\r\n tabBar,\r\n AttentionItem,\r\n commonBtn,\r\n feeComponent,\r\n protocolContent\r\n },\r\n async mounted() {\r\n await this.initMap()\r\n await this.setTab() // 设置服务\r\n await this.setMarker()\r\n await this.getFeeFun();\r\n },\r\n methods: {\r\n async ownClickHandler() {\r\n if( !this.form.plateNumber ) {\r\n this.$toast('请输入车牌号')\r\n return\r\n }\r\n if( !this.form.name ) {\r\n this.$toast('请输入您的姓名')\r\n return\r\n }\r\n if( !this.form.phone ) {\r\n this.$toast('请输入您的手机号')\r\n return\r\n }\r\n if( !(/^1[3456789]\\d{9}$/.test(this.form.phone)) ) {\r\n this.$toast('请输入正确的手机号')\r\n return\r\n }\r\n if( !this.checked ) {\r\n this.$toast('请先同意协议')\r\n return\r\n }\r\n let res = await getCurrentOrder({\r\n appCode: localStorage.getItem('appCode'),\r\n userPhone: this.form.phone,\r\n isPresent: 1,\r\n plateNumber: this.form.plateNumber\r\n })\r\n if( res?.ticketId ) { // 已存在订单\r\n Dialog.alert({\r\n title: '提示',\r\n message: '您当前已有订单,不能重复下单',\r\n }).then(async () => {\r\n await this.goDetail(res)\r\n /*this.goPage('orderStatus', {\r\n ticketId: res.ticketId,\r\n userPhone: this.form.phone,\r\n plateNumber: this.form.plateNumber\r\n })*/\r\n })\r\n } else { // 不存在订单,创建订单\r\n let params = this.getParams()\r\n let res = await createOrder({\r\n ...params,\r\n userPhone: this.form.phone,\r\n userName: this.form.name,\r\n plateNumber: this.form.plateNumber\r\n })\r\n await this.$store.dispatch('order/setAddress', {})\r\n await this.$store.dispatch('order/setDestAddress', {})\r\n await this.$store.dispatch('order/setOrderInfo', {})\r\n await this.goDetail(res)\r\n /*if( res.orderStatus == 17 ) { // 代付款页\r\n this.goPage('payPage', {\r\n ticketId: res.ticketId\r\n })\r\n } else { // 订单状态页\r\n this.goPage('orderStatus', {\r\n ticketId: res.ticketId,\r\n userPhone: this.form.phone,\r\n plateNumber: this.form.plateNumber\r\n })\r\n }*/\r\n }\r\n\r\n },\r\n goDetail(result) {\r\n if( result.orderStatus == 17 ) { // 代付款页\r\n this.goPage('payPage', {\r\n ticketId: result.ticketId\r\n })\r\n } else { // 订单状态页\r\n this.goPage('orderStatus', {\r\n ticketId: result.ticketId,\r\n userPhone: this.form.phone,\r\n plateNumber: this.form.plateNumber\r\n })\r\n }\r\n },\r\n getParams() {\r\n const address = this.$store.getters.order.address\r\n const destAddress = this.$store.getters.order.destAddress\r\n const orderInfo = this.$store.getters.order.orderInfo\r\n let params = {\r\n appCode: localStorage.getItem('appCode'),\r\n serviceId: this.serverList[this.activeTab].serverId,\r\n startLat: address?.startLat,\r\n startLng: address?.startLng,\r\n startPoiAddress: address?.startPoiAddress,\r\n endLat: destAddress?.endLat || '',\r\n endLng: destAddress?.endLng || '',\r\n endPoiAddress: destAddress?.endPoiAddress || '',\r\n isAppoint: orderInfo?.isAppoint,\r\n appointTime: orderInfo?.appointTime ? orderInfo?.appointTime + ':00' : '',\r\n positionEnvironment: parseInt(orderInfo?.positionEnvironment),\r\n }\r\n return params\r\n },\r\n async getFeeFun() { // 获取费用说明\r\n let params = this.getParams()\r\n let res = await getFee(params)\r\n console.log('feee', res)\r\n this.extraFee = res?.extraFee;\r\n this.feeTitle = await getFeeTitle(this.serverList[this.activeTab].serverId, res.finishedPrice, res.trailUndergroundFee, res.finishedLimitedMileage, res.finishedExcessUnitPrice)\r\n let unitPrice = res?.finishedExcessUnitPrice || 0;\r\n this.feeListArr = await feeList(unitPrice)\r\n },\r\n initMap() {\r\n this.map = new AMap.Map('mapId', {\r\n viewMode: '2D', // 默认使用 2D 模式\r\n zoom:11, //初始化地图层级\r\n })\r\n },\r\n setTab() {\r\n this.activeTab = this.$store.getters.order.orderInfo.activeTab\r\n },\r\n setMarker() {\r\n this.addMarker()\r\n if( this.serverList[this.activeTab].serverId == 1041 ) {\r\n this.addDestMarker()\r\n }\r\n },\r\n // 事发地 marker\r\n addMarker() {\r\n const address = this.$store.getters.order.address\r\n if( this.marker ) {\r\n this.map.remove(this.marker)\r\n }\r\n let content = '<div class=\"my-position\"></div>';\r\n this.marker = new AMap.Marker({\r\n position: new AMap.LngLat( address.startLng, address.startLat ),\r\n content: content,\r\n offset: new AMap.Pixel(-13, -30)\r\n });\r\n this.map.add(this.marker)\r\n },\r\n // 目的地 marker\r\n addDestMarker() {\r\n const destAddress = this.$store.getters.order.destAddress\r\n if( this.destMarker ) {\r\n this.map.remove(this.destMarker)\r\n }\r\n let content = '<div class=\"dest-position\"></div>';\r\n this.destMarker = new AMap.Marker({\r\n position: new AMap.LngLat( destAddress?.endLng, destAddress?.endLat ),\r\n content: content,\r\n offset: new AMap.Pixel(-13, -30)\r\n });\r\n this.map.add(this.destMarker)\r\n },\r\n }\r\n }\r\n</script>\r\n\r\n<style scoped lang=\"less\">\r\n .main_wrap {\r\n height: 100%;\r\n display: flex;\r\n flex-direction: column;\r\n box-sizing: border-box;\r\n .map_wrap {\r\n width: 100%;\r\n flex: 1;\r\n /*height: 80vh;*/\r\n }\r\n .server_wrap {\r\n padding-bottom: 10px;\r\n width: 100%;\r\n /*position: fixed;\r\n bottom: 0;\r\n left: 0;*/\r\n background: #fff;\r\n z-index: 10000000 !important;\r\n .btn_wrap {\r\n width: 74%;\r\n margin: 5px auto 10px;\r\n }\r\n .server_main {\r\n .form_item {\r\n width: calc(100% - 20px);\r\n box-sizing: border-box;\r\n height: 50px;\r\n line-height: 50px;\r\n display: flex;\r\n font-size: 14px;\r\n margin-left: 10px;\r\n align-items: center;\r\n .radio {\r\n width: 10px;\r\n height: 11px;\r\n margin-right: 10px;\r\n }\r\n .form_label {\r\n width: 60px;\r\n text-align: right;\r\n }\r\n .input_class {\r\n flex: 1;\r\n height: 50px;\r\n line-height: 50px;\r\n border: 0;\r\n background: none;\r\n }\r\n .incident_text {\r\n color: #252525;\r\n font-size: 13px;\r\n margin-left: 5px;\r\n flex: 1;\r\n display: flex;\r\n .money_count {\r\n font-size: 22px;\r\n color: #2C2A53;\r\n font-weight: bolder;\r\n }\r\n .fee_desc {\r\n margin-left: 5px;\r\n color: #FF9876;\r\n }\r\n }\r\n }\r\n .protocol_wrap {\r\n padding: 15px 10px 0;\r\n display: flex;\r\n .server_protocol {\r\n color: #3364B7;\r\n }\r\n }\r\n .border_bottom {\r\n border-bottom: 1px solid #F1F2F5;\r\n }\r\n }\r\n }\r\n /*底部按钮*/\r\n .bottom_wrap {\r\n position: fixed;\r\n width: 100%;\r\n bottom: 0;\r\n background: #FFFFFF;\r\n box-shadow: 0px -2px 8px 0px rgba(74,74,74,0.08);\r\n z-index: 1000000000 !important;\r\n .wrap {\r\n width: 100%;\r\n display: flex;\r\n }\r\n }\r\n }\r\n\r\n\r\n</style>\r\n<style>\r\n @import '@/styles/common.css';\r\n</style>\r\n","E:\\work\\sino\\sino-h5\\src\\views\\index\\search.vue",["153"],"<template>\r\n <div>\r\n <div class=\"search_wrap\">\r\n <div class=\"search_top\">\r\n <div class=\"input_wrap\">\r\n <input class=\"input_cls\" v-model=\"searchValue\" type=\"text\" placeholder=\"输入手机号 或 车牌号\" />\r\n <div class=\"search_btn\" @click=\"searchHandler\">查询</div>\r\n </div>\r\n </div>\r\n <div class=\"split_bar\"></div>\r\n <div class=\"order_wrap\" v-if=\"orderInfo\">\r\n <div class=\"order_item\" @click=\"goDetailHandler\">\r\n <img src=\"@/assets/point.png\" alt=\"\">\r\n <div class=\"order_detail\">\r\n <div class=\"order_title\">{{orderInfo.serviceName}}</div>\r\n <div class=\"order_code\">订单号:{{orderInfo.ticketId}}</div>\r\n <div class=\"order_time\">提交时间:{{orderInfo.createTime}}</div>\r\n </div>\r\n <div class=\"order_status\">\r\n {{orderInfo.orderStatusName}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"order_wrap text-center\" v-if=\"noneOrder\">\r\n 暂无订单\r\n </div>\r\n </div>\r\n <!-- 底部 button -->\r\n <div class=\"bottom_wrap\">\r\n <div class=\"wrap\">\r\n <bottom-item server-name=\"叫服务\" page=\"Home\" :url=\"require('@/assets/server_btn.png')\" @pageClick=\"goPage\"></bottom-item>\r\n <bottom-item server-name=\"查订单\" :active=\"true\" :url=\"require('@/assets/search_active_btn.png')\" ></bottom-item>\r\n </div>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script>\r\n import { myMixins } from '@/utils/myMixins.js'\r\n import { getCurrentOrder } from '@/api/order'\r\n import BottomItem from '@/components/bottomItem'\r\n export default {\r\n name: \"Search\",\r\n mixins: [ myMixins ],\r\n data() {\r\n return {\r\n searchValue: '',\r\n orderInfo: null,\r\n noneOrder: false,\r\n }\r\n },\r\n components: {\r\n BottomItem\r\n },\r\n methods: {\r\n async searchHandler() {\r\n if( !this.searchValue ) {\r\n this.$toast('查询内容不能为空')\r\n return\r\n }\r\n let data = this.getParams()\r\n this.orderInfo = await getCurrentOrder(data)\r\n if( this.orderInfo ) {\r\n this.noneOrder = false\r\n } else {\r\n this.noneOrder = true\r\n }\r\n },\r\n getParams () {\r\n let data = {\r\n userPhone: '',\r\n plateNumber: '',\r\n appCode: localStorage.getItem('appCode'),\r\n }\r\n if(/^1[3456789]\\d{9}$/.test(this.searchValue)) {\r\n data.userPhone = this.searchValue;\r\n } else {\r\n data.plateNumber = this.searchValue;\r\n }\r\n return data\r\n },\r\n goDetailHandler() {\r\n let data = this.getParams()\r\n if( this.orderInfo.orderStatus == 17 ) {\r\n this.goPage('payPage', {\r\n ticketId: this.orderInfo.ticketId,\r\n ...data\r\n })\r\n } else {\r\n this.goPage('orderStatus', {\r\n ticketId: this.orderInfo.ticketId,\r\n ...data\r\n })\r\n }\r\n },\r\n }\r\n }\r\n</script>\r\n\r\n<style scoped lang=\"less\">\r\n .search_wrap {\r\n .search_top {\r\n padding: 20px 22px;\r\n .input_wrap {\r\n width: 100%;\r\n box-sizing: border-box;\r\n height: 50px;\r\n border-radius: 25px;\r\n border: 1px solid #D5D7E2;\r\n display: flex;\r\n .input_cls {\r\n flex: 1;\r\n height: 48px;\r\n line-height: 48px;\r\n padding-left: 20px;\r\n font-size: 14px;\r\n border: 0;\r\n background: none;\r\n }\r\n .search_btn {\r\n padding: 0 20px;\r\n border-radius: 25px;\r\n color: #fff;\r\n background: #3364B7;\r\n font-size: 15px;\r\n margin-right: 6px;\r\n height: 38px;\r\n line-height: 38px;\r\n margin-top: 5px;\r\n font-size: 15px;\r\n z-index: 10000;\r\n }\r\n }\r\n }\r\n .split_bar {\r\n width: 100%;\r\n height: 10px;\r\n background-color: #FAFAFA;\r\n }\r\n .text-center {\r\n text-align: center;\r\n }\r\n .order_wrap {\r\n padding: 15px 20px;\r\n .order_item {\r\n width: 100%;\r\n box-sizing: border-box;\r\n border: 1px solid #3364B7;\r\n border-radius: 15px;\r\n padding: 15px 20px 25px 10px;\r\n display: flex;\r\n img {\r\n width: 11px;\r\n height: 11px;\r\n margin-right: 8px;\r\n margin-top: 6px;\r\n }\r\n .order_detail {\r\n flex: 1;\r\n .order_title {\r\n font-size: 16px;\r\n color: #33495E;\r\n font-weight: 500;\r\n }\r\n .order_code {\r\n color: #203152;\r\n font-size: 12px;\r\n font-weight: 500;\r\n line-height: 26px;\r\n }\r\n .order_time {\r\n color: #33495E;\r\n font-size: 10px;\r\n font-weight: 300;\r\n }\r\n }\r\n .order_status {\r\n color: #3374E3;\r\n font-size: 12px;\r\n font-weight: 500;\r\n }\r\n }\r\n }\r\n }\r\n .bottom_wrap {\r\n position: fixed;\r\n width: 100%;\r\n bottom: 0;\r\n background: #FFFFFF;\r\n box-shadow: 0px -2px 8px 0px rgba(74,74,74,0.08);\r\n .wrap {\r\n width: 100%;\r\n display: flex;\r\n }\r\n }\r\n</style>\r\n","E:\\work\\sino\\sino-h5\\src\\views\\index\\orderStatus.vue",["154","155","156","157","158"],"<template>\r\n <div class=\"order_wrap\">\r\n <div class=\"map_wrap\" id=\"mapId\">\r\n </div>\r\n <div class=\"info_wrap\">\r\n <div class=\"refresh_wrap\" @click=\"refreshHandler\">\r\n <img src=\"@/assets/refresh.png\" alt=\"\">\r\n </div>\r\n <div class=\"top_wrap\">\r\n <div class=\"top_line\"></div>\r\n <attention-item :attention=\"attentionStr\"></attention-item>\r\n </div>\r\n <div class=\"order_info\">\r\n <div class=\"order_status_wrap\">\r\n <img v-if=\"orderInfo?.orderStatus == 55 && orderInfo?.appraiseFlag != 1\" class=\"finish_img\" src=\"@/assets/serverSuccess.png\" alt=\"\">\r\n <img v-else class=\"doing_img\" src=\"@/assets/point.png\" alt=\"\">\r\n <div class=\"order_status_info\">\r\n <div class=\"status_str\">{{ statusStr }}</div>\r\n <div class=\"driver_info\" v-if=\"[35,41].includes(orderInfo?.orderStatus) && ( orderInfo?.driveinfo?.driverName || orderInfo?.driveinfo?.driverPhone )\">\r\n {{orderInfo?.driveinfo?.driverName}} {{ (orderInfo?.driveinfo?.driverName && orderInfo?.driveinfo?.driverPhone) ? '-' : '' }} {{orderInfo?.driveinfo?.driverPhone}}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!--评价-->\r\n <div class=\"judge_wrap\" v-if=\"orderInfo?.orderStatus == 55 && orderInfo?.appraiseFlag != 1\">\r\n <div class=\"judge_title\">\r\n <img src=\"@/assets/radio.png\" alt=\"\">\r\n <span>请您对本次服务进行评价</span>\r\n </div>\r\n <div class=\"judge_level\">\r\n <div class=\"judge_item\" @click=\"chooseJudgeLevel(4)\">\r\n <img src=\"@/assets/satisfiedCheck.png\" v-if=\"judgeContent === 4\" alt=\"\">\r\n <img src=\"@/assets/satisfiedUncheck.png\" v-else alt=\"\">\r\n <div>满意</div>\r\n </div>\r\n <div class=\"judge_item\" @click=\"chooseJudgeLevel(3)\">\r\n <img src=\"@/assets/generalCheck.png\" v-if=\"judgeContent === 3\" alt=\"\">\r\n <img src=\"@/assets/generalUncheck.png\" v-else alt=\"\">\r\n <div>一般</div>\r\n </div>\r\n <div class=\"judge_item\" @click=\"chooseJudgeLevel(2)\">\r\n <img src=\"@/assets/disconentCheck.png\" v-if=\"judgeContent === 2\" alt=\"\">\r\n <img src=\"@/assets/disconentUncheck.png\" v-else alt=\"\">\r\n <div>不满意</div>\r\n </div>\r\n </div>\r\n <textarea class=\"judge_content\" placeholder=\"请输入评价内容\" v-model=\"content\" name=\"\" id=\"\" cols=\"30\" rows=\"10\"></textarea>\r\n <div class=\"btn_wrap\">\r\n <common-btn title=\"提交评价\" @ownClick=\"judgeHandler\"></common-btn>\r\n </div>\r\n </div>\r\n\r\n <!--操作按钮-->\r\n <div>\r\n <operation-btn v-if=\"[31, 35, 41, 50, 51].includes(orderInfo?.orderStatus)\" title=\"联系客服\" :url=\"require('@/assets/callPhone.png')\" :has-distance=\"true\" @ownClick=\"callClient\"></operation-btn>\r\n <operation-btn v-if=\"[35].includes(orderInfo?.orderStatus) && orderInfo?.driveinfo?.driverPhone\" title=\"联系司机\" :url=\"require('@/assets/connectDriver.png')\" :has-distance=\"true\" @ownClick=\"callDriver\"></operation-btn>\r\n <operation-btn v-if=\"[31, 32].includes(orderInfo?.orderStatus)\" title=\"催单\" :url=\"require('@/assets/bell.png')\" :has-distance=\"true\" @ownClick=\"urgedOrder\"></operation-btn>\r\n <operation-btn v-if=\"[35].includes(orderInfo?.orderStatus)\" title=\"服务催促\" :url=\"require('@/assets/bell.png')\" :has-distance=\"true\" @ownClick=\"urgedOrder\"></operation-btn>\r\n <operation-btn v-if=\"[31, 32, 35].includes(orderInfo?.orderStatus)\" title=\"取消订单\" :url=\"require('@/assets/cancel.png')\" :has-distance=\"true\" @ownClick=\"goPage('CancelPage', { ticketId: ticketId })\"></operation-btn>\r\n </div>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script>\r\n import { myMixins } from '@/utils/myMixins.js'\r\n import AttentionItem from '@/components/attentionItem'\r\n import operationBtn from \"@/components/operationBtn\";\r\n import commonBtn from \"@/components/commonBtn\";\r\n import { getCurrentOrder, appraise } from '@/api/order'\r\n import { orderStatus } from '@/utils/status'\r\n import { operatorOrder } from '@/api/order'\r\n import { getRoad } from '@/utils/map'\r\n export default {\r\n name: \"orderStatus\",\r\n mixins: [ myMixins ],\r\n data() {\r\n return {\r\n map: '',\r\n marker: '',\r\n destMarker: '',\r\n driverMarker: '',\r\n finishFlag: true,\r\n ticketId: '',\r\n orderInfo: null,\r\n userPhone: '',\r\n plateNumber: '',\r\n attentionStr: '',\r\n statusStr: '',\r\n judgeContent: 0,\r\n content: ''\r\n }\r\n },\r\n components: {\r\n AttentionItem,\r\n operationBtn,\r\n commonBtn\r\n },\r\n async mounted() {\r\n this.ticketId = this.$route.query.ticketId\r\n this.userPhone = this.$route.query.userPhone\r\n this.plateNumber = this.$route.query.plateNumber\r\n await this.initMap()\r\n await this.getOrderInfo()\r\n },\r\n methods: {\r\n async judgeHandler() {\r\n if( !this.judgeContent ) {\r\n this.$toast('请选择满意度');\r\n return\r\n }\r\n await appraise({\r\n appCode: localStorage.getItem('appCode'),\r\n ticketId: this.ticketId,\r\n userPhone: this.userPhone,\r\n serviceLevel: this.judgeContent,\r\n content: this.content,\r\n })\r\n await this.getOrderInfo()\r\n },\r\n chooseJudgeLevel(content) {\r\n this.judgeContent = content\r\n },\r\n async refreshHandler() {\r\n await this.initMap()\r\n await this.getOrderInfo()\r\n },\r\n callDriver() {\r\n window.location.href = 'tel:' + this.orderInfo?.driveinfo?.driverPhone\r\n },\r\n callClient() {\r\n window.location.href = 'tel:' + localStorage.getItem('client');\r\n },\r\n async urgedOrder() {\r\n await operatorOrder({\r\n appCode: localStorage.getItem('appCode'),\r\n ticketId: this.ticketId,\r\n userPhone: this.userPhone,\r\n plateNumber: this.plateNumber,\r\n type: 1,\r\n content: '服务催促'\r\n })\r\n this.$toast('已催促')\r\n },\r\n getStatusStr() {\r\n let res = orderStatus(this.orderInfo.orderStatus, this.orderInfo.appraiseFlag)\r\n this.statusStr = res.name;\r\n this.attentionStr = res.tip\r\n },\r\n initMap() {\r\n this.map = new AMap.Map('mapId', {\r\n viewMode: '2D', // 默认使用 2D 模式\r\n zoom:11, //初始化地图层级\r\n })\r\n },\r\n markerFn(lng, lat, marker , markerCls) {\r\n if(marker) {\r\n this.map.remove(marker)\r\n }\r\n let content = `<div class=\"${markerCls}\"></div>`;\r\n marker = new AMap.Marker({\r\n position: new AMap.LngLat( lng, lat ),\r\n content: content,\r\n offset: new AMap.Pixel(-13, -30)\r\n });\r\n this.map.add(marker)\r\n },\r\n async getOrderInfo() {\r\n this.orderInfo = await getCurrentOrder({\r\n ticketId: this.ticketId,\r\n userPhone: this.userPhone,\r\n plateNumber: this.plateNumber\r\n })\r\n this.getStatusStr()\r\n // 目的地 marker\r\n if( this?.orderInfo?.desLat && this?.orderInfo?.desLng ) {\r\n this.markerFn(this.orderInfo.desLng, this.orderInfo.desLat, this.destMarker, 'dest-position')\r\n }\r\n // 事发地 marker\r\n if( this?.orderInfo?.startLng && this?.orderInfo?.startLat ) {\r\n this.markerFn(this.orderInfo.startLng, this.orderInfo.startLat, this.marker, 'my-position')\r\n }\r\n //\r\n if( this?.orderInfo?.driveinfo?.driverLat && this?.orderInfo?.driveinfo?.driverLng ) {\r\n this.markerFn(this?.orderInfo?.driveinfo?.driverLng, this?.orderInfo?.driveinfo?.driverLat, this.driverMarker, 'driver-position')\r\n }\r\n if( this?.orderInfo?.orderStatus == 35 ) {\r\n let res = await getRoad(this.map, this?.orderInfo?.driveinfo?.driverLng, this?.orderInfo?.driveinfo?.driverLat, this.orderInfo.startLng, this.orderInfo.startLat)\r\n this.drawRoute(res.routes[0])\r\n }\r\n },\r\n drawRoute(route) {\r\n let path = this.parseRouteToPath(route)\r\n let routeLine = new AMap.Polyline({\r\n path: path,\r\n isOutline: true,\r\n outlineColor: '#ffeeee',\r\n borderWeight: 2,\r\n strokeWeight: 5,\r\n strokeOpacity: 0.9,\r\n strokeColor: '#0091ff',\r\n lineJoin: 'round'\r\n })\r\n this.map.add(routeLine);\r\n this.map.setFitView([ this.driverMarker, this.marker, routeLine ])\r\n },\r\n parseRouteToPath(route) { // 获取第一个路径规划\r\n let path = []\r\n for (let i = 0, l = route.steps.length; i < l; i++) {\r\n let step = route.steps[i]\r\n for (let j = 0, n = step.path.length; j < n; j++) {\r\n path.push(step.path[j])\r\n }\r\n }\r\n return path\r\n },\r\n }\r\n }\r\n</script>\r\n\r\n<style scoped lang=\"less\">\r\n.order_wrap {\r\n height: 100%;\r\n display: flex;\r\n flex-direction: column;\r\n box-sizing: border-box;\r\n .map_wrap {\r\n flex: 1;\r\n }\r\n .info_wrap {\r\n background: #fff;\r\n padding-bottom: 25px;\r\n position: relative;\r\n .refresh_wrap {\r\n position: absolute;\r\n right: 5px;\r\n top: -35px;\r\n background: #fafafa;\r\n width: 30px;\r\n height: 30px;\r\n img {\r\n width: 30px;\r\n height: 30px;\r\n }\r\n }\r\n .top_wrap {\r\n padding-top: 10px;\r\n background: #fafafa;\r\n .top_line {\r\n width: 34px;\r\n height: 3px;\r\n background: #9FA5B4;\r\n border-radius: 3px;\r\n opacity: 0.19;\r\n margin: 0 auto;\r\n }\r\n }\r\n .order_info {\r\n padding: 25px 20px 0;\r\n .order_status_wrap {\r\n text-align: left;\r\n padding: 0 0 25px;\r\n display: flex;\r\n .doing_img {\r\n width: 11px;\r\n height: 11px;\r\n margin-right: 8px;\r\n margin-top: 8px;\r\n }\r\n .finish_img {\r\n width: 30px;\r\n height: 30px;\r\n margin-right:8px;\r\n }\r\n .order_status_info {\r\n flex: 1;\r\n .status_str {\r\n font-size: 18px;\r\n font-weight: 500;\r\n color: #33495E;\r\n }\r\n .driver_info {\r\n font-size: 13px;\r\n color: #33495E;\r\n margin-top: 2px;\r\n }\r\n }\r\n }\r\n .btn_wrap {\r\n width: 80%;\r\n margin: 15px auto 25px;\r\n }\r\n }\r\n }\r\n}\r\n\r\n /*评价*/\r\n .judge_wrap {\r\n .judge_title {\r\n width: 100%;\r\n padding: 0 20px;\r\n text-align: left;\r\n font-size: 14px;\r\n color: rgba(0,0,0,0.7);\r\n img {\r\n width: 10px;\r\n height: 11px;\r\n margin-right: 10px;\r\n }\r\n }\r\n .judge_level {\r\n display: flex;\r\n justify-content: space-evenly;\r\n margin-top: 30px;\r\n .judge_item {\r\n width: 50px;\r\n color: rgba(0,0,0,0.3);\r\n font-size: 12px;\r\n text-align: center;\r\n img {\r\n width: 40px;\r\n height: 40px;\r\n }\r\n }\r\n }\r\n .judge_content {\r\n width: calc(100% - 20px);\r\n text-align: left;\r\n margin: 10px;\r\n border: 1px solid #ccc;\r\n padding: 5px;\r\n box-sizing: border-box;\r\n border-radius: 5px;\r\n height: 60px;\r\n font-size: 12px;\r\n }\r\n .btn_wrap {\r\n width: 74%;\r\n margin: 15px auto;\r\n }\r\n }\r\n</style>\r\n","E:\\work\\sino\\sino-h5\\src\\views\\index\\cancel.vue",["159"],"<template>\r\n <div class=\"cancel_wrap\">\r\n <attention-item attention=\"温馨提示:取消收费规则 1.非预约案件报案成功后10分钟内可免费取消,预约案件在距预约时间两个小时之前可免费取消;2.非预约案件超过10分钟、预约案件距预约时间两个小时之内、师傅到达现场之前取消,将收取服务费用的50%作为服务师傅的空驶费用;3.师傅到达现场之后,不再支持取消订单;4.有任何收费疑问可以拨打24小时客服电话400-920-1995。\"></attention-item>\r\n <div class=\"cancel_list\">\r\n <div class=\"list_item\" v-for=\"(item, index) in serverList\" @click=\"clickHandler(index)\">\r\n <img v-if=\"index == selected\" src=\"@/assets/checked.png\" alt=\"\">\r\n <img v-else src=\"@/assets/unchecked.png\" alt=\"\">\r\n <span>{{item.text}}</span>\r\n </div>\r\n </div>\r\n <div class=\"btn_wrap\">\r\n <common-btn title=\"确认取消\" @ownClick=\"cancelHandler\"></common-btn>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script>\r\n import { myMixins } from '@/utils/myMixins.js'\r\n import commonBtn from \"@/components/commonBtn\";\r\n import AttentionItem from '@/components/attentionItem'\r\n import { operatorOrder } from '@/api/order'\r\n export default {\r\n name: \"CancelPage\",\r\n components: {\r\n AttentionItem,\r\n commonBtn\r\n },\r\n mixins: [ myMixins ],\r\n data() {\r\n return {\r\n serverList: [\r\n { text: '车子恢复正常了' },\r\n { text: '车子已找人处理或被交警拖走' },\r\n { text: '人不在车边' },\r\n { text: '救援时效慢' },\r\n { text: '其他原因' },\r\n ],\r\n selected: null,\r\n ticketId: ''\r\n }\r\n },\r\n async mounted() {\r\n this.ticketId = this.$route.query.ticketId\r\n },\r\n methods: {\r\n clickHandler(index) {\r\n this.selected = index\r\n },\r\n async cancelHandler() {\r\n if( this.selected == null ) {\r\n this.$toast('请选择取消原因')\r\n return\r\n }\r\n this.$toast.loading({\r\n message: '加载中...',\r\n forbidClick: true,\r\n duration: 0\r\n })\r\n try {\r\n await operatorOrder({\r\n appCode: localStorage.getItem('appCode'),\r\n ticketId: this.ticketId,\r\n type: 2,\r\n content: this.serverList[this.selected].text\r\n })\r\n this.goPage('Home')\r\n }finally {\r\n this.$toast.clear()\r\n }\r\n }\r\n }\r\n }\r\n</script>\r\n\r\n<style scoped lang=\"less\">\r\n.cancel_wrap {\r\n padding-top: 10px;\r\n .cancel_list {\r\n padding-left: 15px;\r\n .list_item {\r\n border-bottom: 1px solid rgba(233, 233, 234, 0.6);\r\n font-size: 15px;\r\n height: 55px;\r\n line-height: 55px;\r\n font-weight: 400;\r\n color: #203152;\r\n img {\r\n width: 16px;\r\n height: 16px;\r\n margin-right: 6px;\r\n vertical-align: middle;\r\n }\r\n }\r\n }\r\n .btn_wrap {\r\n width: 74%;\r\n margin: 50px auto 10px;\r\n }\r\n}\r\n</style>\r\n","E:\\work\\sino\\sino-h5\\src\\views\\index\\index.vue",["160","161","162","163","164","165","166","167","168"],"<template>\r\n <div class=\"main_wrap\">\r\n <div class=\"map_wrap\" id=\"mapId\">\r\n </div>\r\n <!--服务信息-->\r\n <div class=\"server_wrap\" @touchmove.stop=\"touchmoveHandle\" @touchstart.stop=\"touchstartHandle\" @touchend.stop=\"touchendHandle\">\r\n <tab-bar @changeTab=\"changeTabHandler\" :click-flag=\"true\" :active-tab=\"activeTab\" :server-list=\"serverList\"></tab-bar>\r\n <div class=\"server_main\">\r\n <div class=\"address_item pt15\" @click=\"goPage('addressMap', { source: 'address' })\">\r\n <img class=\"address_icon\" src=\"@/assets/addressPoint.png\" alt=\"\">\r\n <div class=\"address\">{{form.startPoiAddress}}</div>\r\n <img class=\"arrow_icon\" src=\"@/assets/arrow.png\" alt=\"\">\r\n </div>\r\n <div class=\"address_item pb15 border_bottom\" v-if=\"serverList[activeTab].serverId == 1041\" @click=\"goPage('addressMap', { source: 'dest' })\">\r\n <img class=\"address_icon\" src=\"@/assets/destionAddress.png\" alt=\"\">\r\n <div class=\"address\" :class=\"{ 'placeholder': !form.endPoiAddress }\">{{form.endPoiAddress || '您的拖车目的地'}}</div>\r\n <img class=\"arrow_icon\" src=\"@/assets/arrow.png\" alt=\"\">\r\n </div>\r\n <!--车辆位置-->\r\n <div class=\"form_item border_bottom\">\r\n <img class=\"radio\" src=\"@/assets/radio.png\" alt=\"\">\r\n <div class=\"form_label\">车辆位于</div>\r\n <van-radio-group class=\"flex_right\" v-model=\"form.positionEnvironment\" icon-size=\"16px\" direction=\"horizontal\">\r\n <van-radio name=\"1\">地面</van-radio>\r\n <van-radio name=\"6\">地库</van-radio>\r\n <van-radio name=\"2\">高架</van-radio>\r\n </van-radio-group>\r\n </div>\r\n <!--预约时间-->\r\n <div class=\"form_item border_bottom\" @click=\"show = true\" v-if=\"slideShow\">\r\n <img class=\"appoint_time\" src=\"@/assets/appointTime.png\" alt=\"\">\r\n <div class=\"form_label\">预约时间</div>\r\n <div class=\"form_time\">\r\n <div>{{form.appointTime || '尽快到'}}</div>\r\n <img class=\"arrow_icon\" src=\"@/assets/arrow.png\" alt=\"\">\r\n </div>\r\n </div>\r\n <attention-item color=\"#939393\" :attention=\"serverList[activeTab].attentionTip\" v-if=\"slideShow\"></attention-item>\r\n </div>\r\n <div class=\"btn_wrap\" v-if=\"slideShow\">\r\n <common-btn @ownClick=\"ownClickHandler\"></common-btn>\r\n </div>\r\n </div>\r\n <!-- 底部按钮 -->\r\n <div class=\"bottom_wrap\">\r\n <div class=\"wrap\">\r\n <bottom-item server-name=\"叫服务\" :active=\"true\"></bottom-item>\r\n <bottom-item server-name=\"查订单\" :url=\"require('@/assets/search_btn.png')\" page=\"Search\" @pageClick=\"goPage\"></bottom-item>\r\n </div>\r\n </div>\r\n <van-popup v-model=\"show\" v-if=\"show\" position=\"bottom\">\r\n <van-picker show-toolbar title=\"预约时间\" :columns=\"columns\" @cancel=\"show = false\" @confirm=\"appointHandler\" />\r\n </van-popup>\r\n </div>\r\n</template>\r\n\r\n<script>\r\n import { getAppointFun } from '@/utils/appointTime'\r\n import { serverList } from '@/utils/serverMap'\r\n import { getClientPhone } from '@/api/order'\r\n import tabBar from \"@/components/tabBar\";\r\n import BottomItem from '@/components/bottomItem'\r\n import AttentionItem from '@/components/attentionItem'\r\n import commonBtn from \"@/components/commonBtn\";\r\n import { getLocal, getAddress } from '@/utils/map'\r\n import { myMixins } from '@/utils/myMixins.js'\r\n export default {\r\n name: \"Home\",\r\n mixins: [myMixins],\r\n data() {\r\n return {\r\n map: '',\r\n location: [],\r\n locationAddress: '',\r\n activeTab: 0,\r\n serverList: serverList,\r\n radio: '',\r\n show: false, // 预约时间弹框\r\n form: {\r\n startLat: '',\r\n startLng: '',\r\n startPoiAddress: '',\r\n endLat: '',\r\n endLng: '',\r\n endPoiAddress: '',\r\n isAppoint: 0,\r\n appointTime: '',\r\n positionEnvironment: '',\r\n },\r\n marker: null,\r\n destMarker: null,\r\n columns: [],\r\n }\r\n },\r\n components: {\r\n BottomItem,\r\n tabBar,\r\n AttentionItem,\r\n commonBtn\r\n },\r\n async mounted() {\r\n if( this.$route.query.appCode ) { // 获取 appCode 存入缓存\r\n localStorage.setItem('appCode', this.$route.query.appCode)\r\n }\r\n this.getClientHandler() // 获取客服电话\r\n await this.initMap() // 初始化地图\r\n this.columns = getAppointFun(new Date()) // 获取预约时间 picker\r\n await this.initData()\r\n if( ! (this.form && this.form.startPoiAddress) ) { // 缓存里没有地址,获取定位地址\r\n await this.setLocalInfo()\r\n }\r\n // 添加 事发地 marker\r\n this.addMarker()\r\n // 拖车并且目的地存在,设置目的地 marker\r\n if( this.serverList[this.activeTab].serverId == 1041 && this.form.endPoiAddress ) {\r\n this.addDestMarker()\r\n }\r\n },\r\n async beforeDestroy() {\r\n await this.saveAddress()\r\n await this.saveDestAddress()\r\n await this.setOrder()\r\n },\r\n methods: {\r\n // 事发地 marker\r\n addMarker() {\r\n if( this.marker ) {\r\n this.map.remove(this.marker)\r\n }\r\n let content = '<div class=\"my-position\"></div>';\r\n this.marker = new AMap.Marker({\r\n position: new AMap.LngLat( this.form.startLng, this.form.startLat ),\r\n content: content,\r\n offset: new AMap.Pixel(-13, -30)\r\n });\r\n this.map.add(this.marker)\r\n },\r\n // 目的地 marker\r\n addDestMarker() {\r\n if( this.destMarker ) {\r\n this.map.remove(this.destMarker)\r\n }\r\n let content = '<div class=\"dest-position\"></div>';\r\n this.destMarker = new AMap.Marker({\r\n position: new AMap.LngLat( this.form.endLng, this.form.endLat ),\r\n content: content,\r\n offset: new AMap.Pixel(-13, -30)\r\n });\r\n this.map.add(this.destMarker)\r\n },\r\n async getClientHandler() { // 根据 appCode 获取客服电话\r\n let res = await getClientPhone({\r\n appCode: localStorage.getItem('appCode'),\r\n })\r\n let client\r\n if( res && res.phone.length > 0 ) {\r\n client = res.phone[0].phone\r\n } else {\r\n client = '4009201995'\r\n }\r\n localStorage.setItem('client', client)\r\n // alert(localStorage.getItem('client'))\r\n },\r\n async initData() {\r\n await this.initOrderInfo()\r\n await this.initAddress()\r\n await this.initDestAddress()\r\n },\r\n // 设置 表单除地址外的信息\r\n initOrderInfo() {\r\n const orderInfo = this.$store.getters.order.orderInfo\r\n this.form.isAppoint = (orderInfo && orderInfo.isAppoint) || 0\r\n this.form.appointTime = ( orderInfo && orderInfo.appointTime ) || ''\r\n this.form.positionEnvironment = ( orderInfo && orderInfo.positionEnvironment ) || ''\r\n this.activeTab = (orderInfo && orderInfo.activeTab) || 0\r\n },\r\n // 设置事发地\r\n initAddress() {\r\n const address = this.$store.getters.order.address\r\n const localAddress = this.$store.getters.order.localAddress\r\n this.form.startPoiAddress = (address && address.startPoiAddress ) || ( localAddress && localAddress.startPoiAddress )\r\n this.form.startLat = (address && address.startLat ) || ( localAddress && localAddress.startLat )\r\n this.form.startLng = (address && address.startLng ) || ( localAddress && localAddress.startLng )\r\n },\r\n // 设置目的地\r\n initDestAddress() {\r\n const destAddress = this.$store.getters.order.destAddress\r\n if( this.serverList[this.activeTab].serverId == 1041 ) {\r\n this.form.endPoiAddress = (destAddress && destAddress.endPoiAddress) || ''\r\n this.form.endLat = ( destAddress && destAddress.endLat ) || ''\r\n this.form.endLng = ( destAddress && destAddress.endLng ) || ''\r\n } else {\r\n this.form.endPoiAddress = '';\r\n this.form.endLat = '';\r\n this.form.endLng = '';\r\n }\r\n },\r\n // 保存事发地地址\r\n async saveAddress() {\r\n await this.$store.dispatch('order/setAddress', {\r\n startPoiAddress: this.form.startPoiAddress,\r\n startLat: this.form.startLat,\r\n startLng: this.form.startLng,\r\n })\r\n },\r\n // 保存目的地地址\r\n async saveDestAddress() {\r\n if( this.serverList[this.activeTab].serverId == 1041 ) {\r\n await this.$store.dispatch('order/setDestAddress', {\r\n endPoiAddress: this.form.endPoiAddress,\r\n endLat: this.form.endLat,\r\n endLng: this.form.endLng,\r\n })\r\n }\r\n },\r\n // 保存下单信息\r\n async setOrder() {\r\n await this.$store.dispatch('order/setOrderInfo', {\r\n serviceId: this.serverList[this.activeTab].serverId,\r\n activeTab: this.activeTab,\r\n appointTime: this.form.appointTime,\r\n isAppoint: this.form.isAppoint,\r\n positionEnvironment: this.form.positionEnvironment\r\n })\r\n },\r\n // 保存定位地址\r\n async saveLocalAddress(obj) {\r\n await this.$store.dispatch('order/setLocalAddress', obj)\r\n },\r\n // 定位地址\r\n async setLocalInfo() {\r\n this.location = await getLocal(this.map) // 获取经纬度\r\n this.map.setCenter(this.location) // 设置地图中心点\r\n let tempAddress = await getAddress(this.map, this.location) // 设置定位\r\n this.form.startPoiAddress = tempAddress.regeocode.formattedAddress\r\n this.form.startLng = this.location.lng\r\n this.form.startLat = this.location.lat\r\n // 设置当前服务的城市\r\n let city = '';\r\n city = tempAddress.regeocode.addressComponent.province + tempAddress.regeocode.addressComponent.city\r\n this.$store.dispatch('order/setServerCity', city)\r\n // 设置定位信息\r\n let localObj = {\r\n address: this.form.startPoiAddress,\r\n lat: this.form.startLat,\r\n lng: this.form.startLng,\r\n localCityCode: tempAddress.regeocode.addressComponent.adcode\r\n }\r\n // 设置 当前定位位置信息\r\n await this.saveLocalAddress(localObj)\r\n // 初始化 设置事发地\r\n await this.saveAddress()\r\n },\r\n initMap() { // 初始化地图\r\n this.map = new AMap.Map('mapId', {\r\n viewMode: '2D', // 默认使用 2D 模式\r\n zoom:11, //初始化地图层级\r\n })\r\n },\r\n async ownClickHandler() { // 将事发地,目的地,服务类型,车辆位置,预约时间存入,跳转到救援页\r\n if( !this.form.startPoiAddress ) {\r\n this.$toast('请先选择事发地')\r\n return false\r\n }\r\n if( this.serverList[this.activeTab].serverId == 1041 && !this.form.endPoiAddress ) {\r\n this.$toast('请选择拖车目的地')\r\n return false\r\n }\r\n if( this.serverList[this.activeTab].serverId == 2160 ) { // 判断服务城市是否开通上门充电\r\n let chargeCityArr = ['北京', '上海', '杭州', '广州', '深圳', '东莞', '成都', '苏州', '无锡', '常州', '宁波', '南京', '武汉'];\r\n const serverCity = this.$store.getters.order.serverCity\r\n console.log('serverCity', serverCity)\r\n let flag = false;\r\n chargeCityArr.map(item => {\r\n if( serverCity.indexOf(item) != -1 ) {\r\n flag = true;\r\n return;\r\n }\r\n })\r\n if(!flag) {\r\n this.$toast('当前城市未开通上门充电服务,建议选择拖车服务拖至最近的充电桩进行充电')\r\n return false\r\n }\r\n }\r\n if( !this.form.positionEnvironment ) {\r\n this.$toast('请选择车辆位置')\r\n return false\r\n }\r\n await this.saveAddress()\r\n await this.saveDestAddress()\r\n await this.setOrder()\r\n await this.goPage('rescuePage')\r\n },\r\n\r\n changeTabHandler(index) { //切换 tab\r\n this.activeTab = index\r\n },\r\n appointHandler(value, index) { // 设置预约时间\r\n if( value[1] == '尽快到' ) {\r\n this.form.appointTime = ''\r\n this.form.isAppoint = 0\r\n } else {\r\n this.form.appointTime = value[0] + \" \" + value[1]\r\n this.form.isAppoint = 1\r\n }\r\n this.show = false;\r\n // this.$toast(`当前值:${value}, 当前索引:${index}`)\r\n }\r\n }\r\n }\r\n</script>\r\n<style>\r\n @import '@/styles/common.css';\r\n</style>\r\n<style scoped lang=\"less\">\r\n .main_wrap {\r\n height: 100%;\r\n display: flex;\r\n flex-direction: column;\r\n box-sizing: border-box;\r\n .map_wrap {\r\n width: 100%;\r\n /*height: 80vh;*/\r\n flex: 1;\r\n }\r\n .server_wrap {\r\n padding-bottom: 50px;\r\n /*position: fixed;*/\r\n /*bottom: 0;*/\r\n /*left: 0;*/\r\n width: 100%;\r\n background: #fff;\r\n z-index: 10000000 !important;\r\n .btn_wrap {\r\n width: 74%;\r\n margin: 5px auto 10px;\r\n }\r\n .server_main {\r\n .address_item {\r\n display: flex;\r\n padding: 10px 15px 10px 3px;\r\n align-items: center;\r\n justify-content: space-between;\r\n margin-left: 15px;\r\n .address_icon {\r\n width: 12px;\r\n height: 12px;\r\n margin-right: 10px;\r\n }\r\n .address {\r\n font-size: 15px;\r\n color: rgba( 0, 0, 0, 0.79);\r\n flex: 1;\r\n }\r\n .placeholder {\r\n color: rgba(147, 147, 147, 0.83);\r\n }\r\n }\r\n .arrow_icon {\r\n width: 12px;\r\n height: 11px;\r\n margin-left: 3px;\r\n }\r\n .form_item {\r\n display: flex;\r\n padding: 15px 15px 15px 3px;\r\n align-items: center;\r\n justify-content: space-between;\r\n margin-left: 15px;\r\n .radio {\r\n width: 10px;\r\n height: 11px;\r\n margin-right: 10px;\r\n }\r\n .appoint_time {\r\n width: 11px;\r\n height: 11px;\r\n margin-right: 10px;\r\n }\r\n .form_label {\r\n font-size: 14px;\r\n color: rgba( 0, 0, 0, 0.7 );\r\n }\r\n .flex_right {\r\n flex: 1;\r\n justify-content: flex-end;\r\n }\r\n .form_time {\r\n flex: 1;\r\n display: flex;\r\n justify-content: flex-end;\r\n align-items: center;\r\n }\r\n }\r\n .pb15 {\r\n padding-bottom: 15px;\r\n }\r\n .pt15 {\r\n padding-top: 15px;\r\n }\r\n .border_bottom {\r\n border-bottom: 1px solid #F1F2F5;\r\n }\r\n }\r\n }\r\n /*底部按钮*/\r\n .bottom_wrap {\r\n position: fixed;\r\n width: 100%;\r\n bottom: 0;\r\n background: #FFFFFF;\r\n box-shadow: 0px -2px 8px 0px rgba(74,74,74,0.08);\r\n z-index: 1000000000 !important;\r\n .wrap {\r\n width: 100%;\r\n display: flex;\r\n }\r\n }\r\n }\r\n</style>\r\n<style>\r\n .van-overlay {\r\n z-index: 9999999999 !important;\r\n }\r\n .van-popup--bottom {\r\n z-index: 10000000000 !important;\r\n }\r\n</style>\r\n","E:\\work\\sino\\sino-h5\\src\\views\\index\\pay.vue",["169"],"E:\\work\\sino\\sino-h5\\src\\utils\\status.js",[],{"ruleId":"170","severity":2,"message":"171","line":5,"column":7,"nodeType":"172","endLine":5,"endColumn":137},{"ruleId":"173","severity":2,"message":"174","line":36,"column":18,"nodeType":"175","endLine":36,"endColumn":20},{"ruleId":"176","severity":2,"message":"177","line":5,"column":29,"nodeType":"178","messageId":"179","endLine":5,"endColumn":33},{"ruleId":"180","severity":2,"message":"181","line":26,"column":32,"nodeType":"178","messageId":"182","endLine":26,"endColumn":38},{"ruleId":"176","severity":2,"message":"177","line":28,"column":26,"nodeType":"178","messageId":"179","endLine":28,"endColumn":30},{"ruleId":"176","severity":2,"message":"177","line":53,"column":29,"nodeType":"178","messageId":"179","endLine":53,"endColumn":33},{"ruleId":"176","severity":2,"message":"177","line":71,"column":25,"nodeType":"178","messageId":"179","endLine":71,"endColumn":29},{"ruleId":"180","severity":2,"message":"183","line":93,"column":10,"nodeType":"178","messageId":"182","endLine":93,"endColumn":19},{"ruleId":"176","severity":2,"message":"184","line":94,"column":14,"nodeType":"178","messageId":"179","endLine":94,"endColumn":30},{"ruleId":"176","severity":2,"message":"177","line":96,"column":23,"nodeType":"178","messageId":"179","endLine":96,"endColumn":27},{"ruleId":"170","severity":2,"message":"171","line":8,"column":7,"nodeType":"172","endLine":8,"endColumn":82},{"ruleId":"170","severity":2,"message":"171","line":16,"column":7,"nodeType":"172","endLine":16,"endColumn":83},{"ruleId":"170","severity":2,"message":"171","line":14,"column":9,"nodeType":"172","endLine":14,"endColumn":146},{"ruleId":"180","severity":2,"message":"185","line":25,"column":12,"nodeType":"178","messageId":"182","endLine":25,"endColumn":20},{"ruleId":"176","severity":2,"message":"177","line":61,"column":27,"nodeType":"178","messageId":"179","endLine":61,"endColumn":31},{"ruleId":"176","severity":2,"message":"177","line":62,"column":25,"nodeType":"178","messageId":"179","endLine":62,"endColumn":29},{"ruleId":"176","severity":2,"message":"177","line":64,"column":23,"nodeType":"178","messageId":"179","endLine":64,"endColumn":27},{"ruleId":"176","severity":2,"message":"177","line":97,"column":24,"nodeType":"178","messageId":"179","endLine":97,"endColumn":28},{"ruleId":"176","severity":2,"message":"177","line":211,"column":24,"nodeType":"178","messageId":"179","endLine":211,"endColumn":28},{"ruleId":"176","severity":2,"message":"177","line":232,"column":27,"nodeType":"178","messageId":"179","endLine":232,"endColumn":31},{"ruleId":"176","severity":2,"message":"177","line":233,"column":25,"nodeType":"178","messageId":"179","endLine":233,"endColumn":29},{"ruleId":"176","severity":2,"message":"177","line":235,"column":23,"nodeType":"178","messageId":"179","endLine":235,"endColumn":27},{"ruleId":"176","severity":2,"message":"177","line":246,"column":31,"nodeType":"178","messageId":"179","endLine":246,"endColumn":35},{"ruleId":"176","severity":2,"message":"177","line":247,"column":25,"nodeType":"178","messageId":"179","endLine":247,"endColumn":29},{"ruleId":"176","severity":2,"message":"177","line":249,"column":23,"nodeType":"178","messageId":"179","endLine":249,"endColumn":27},{"ruleId":"186","severity":2,"message":"187","line":43,"column":11,"nodeType":"188","messageId":"189","endLine":43,"endColumn":19},{"ruleId":"176","severity":2,"message":"177","line":153,"column":24,"nodeType":"178","messageId":"179","endLine":153,"endColumn":28},{"ruleId":"176","severity":2,"message":"177","line":163,"column":22,"nodeType":"178","messageId":"179","endLine":163,"endColumn":26},{"ruleId":"176","severity":2,"message":"177","line":164,"column":25,"nodeType":"178","messageId":"179","endLine":164,"endColumn":29},{"ruleId":"176","severity":2,"message":"177","line":166,"column":23,"nodeType":"178","messageId":"179","endLine":166,"endColumn":27},{"ruleId":"176","severity":2,"message":"177","line":196,"column":29,"nodeType":"178","messageId":"179","endLine":196,"endColumn":33},{"ruleId":"170","severity":2,"message":"171","line":5,"column":7,"nodeType":"172","endLine":5,"endColumn":95},{"ruleId":"186","severity":2,"message":"190","line":68,"column":11,"nodeType":"188","messageId":"189","endLine":68,"endColumn":17},{"ruleId":"176","severity":2,"message":"177","line":131,"column":27,"nodeType":"178","messageId":"179","endLine":131,"endColumn":31},{"ruleId":"176","severity":2,"message":"177","line":132,"column":25,"nodeType":"178","messageId":"179","endLine":132,"endColumn":29},{"ruleId":"176","severity":2,"message":"177","line":134,"column":23,"nodeType":"178","messageId":"179","endLine":134,"endColumn":27},{"ruleId":"176","severity":2,"message":"177","line":144,"column":31,"nodeType":"178","messageId":"179","endLine":144,"endColumn":35},{"ruleId":"176","severity":2,"message":"177","line":145,"column":25,"nodeType":"178","messageId":"179","endLine":145,"endColumn":29},{"ruleId":"176","severity":2,"message":"177","line":147,"column":23,"nodeType":"178","messageId":"179","endLine":147,"endColumn":27},{"ruleId":"176","severity":2,"message":"177","line":255,"column":24,"nodeType":"178","messageId":"179","endLine":255,"endColumn":28},{"ruleId":"180","severity":2,"message":"191","line":298,"column":29,"nodeType":"178","messageId":"182","endLine":298,"endColumn":34},{"ruleId":"176","severity":2,"message":"177","line":62,"column":24,"nodeType":"178","messageId":"179","endLine":62,"endColumn":28},"vue/require-v-for-key","Elements in iteration expect to have 'v-bind:key' directives.","VStartTag","vue/require-valid-default-prop","Type of the default value for 'serverList' prop must be a function.","ArrayExpression","no-undef","'AMap' is not defined.","Identifier","undef","no-unused-vars","'reject' is defined but never used.","unusedVar","'drawRoute' is defined but never used.","'parseRouteToPath' is not defined.","'leftCopy' is defined but never used.","vue/multi-word-component-names","Component name \"Search\" should always be multi-word.","Literal","unexpected","Component name \"Home\" should always be multi-word.","'index' is defined but never used."] |