{"ast":null,"code":"import { Dialog } from 'vant';\nimport protocolContent from \"@/components/protocolContent\";\nimport feeComponent from \"@/components/feeComponent\";\nimport { getFeeTitle, feeList } from '@/utils/common';\nimport { getFee, getCurrentOrder, createOrder } from '@/api/order';\nimport { serverList } from '@/utils/serverMap';\nimport tabBar from \"@/components/tabBar\";\nimport AttentionItem from '@/components/attentionItem';\nimport commonBtn from \"@/components/commonBtn\";\nimport { myMixins } from '@/utils/myMixins.js';\nexport default {\n name: \"rescuePage\",\n mixins: [myMixins],\n data() {\n return {\n map: '',\n activeTab: 0,\n serverList: serverList,\n checked: false,\n feeTitle: '',\n feeListArr: [],\n show: false,\n protocolShow: false,\n marker: null,\n destMarker: null,\n form: {\n plateNumber: '',\n name: '',\n phone: ''\n }\n };\n },\n components: {\n tabBar,\n AttentionItem,\n commonBtn,\n feeComponent,\n protocolContent\n },\n async mounted() {\n await this.initMap();\n await this.setTab(); // 设置服务\n await this.setMarker();\n await this.getFeeFun();\n },\n methods: {\n async ownClickHandler() {\n if (!this.form.plateNumber) {\n this.$toast('请输入车牌号');\n return;\n }\n if (!this.form.name) {\n this.$toast('请输入您的姓名');\n return;\n }\n if (!this.form.phone) {\n this.$toast('请输入您的手机号');\n return;\n }\n if (!/^1[3456789]\\d{9}$/.test(this.form.phone)) {\n this.$toast('请输入正确的手机号');\n return;\n }\n if (!this.checked) {\n this.$toast('请先同意协议');\n return;\n }\n let res = await getCurrentOrder({\n appCode: localStorage.getItem('appCode'),\n userPhone: this.form.phone,\n isPresent: 1\n });\n if (res?.ticketId) {\n // 已存在订单\n Dialog.alert({\n title: '提示',\n message: '您当前已有订单,不能重复下单'\n }).then(() => {\n this.goPage('orderStatus', {\n ticketId: res.ticketId\n });\n });\n } else {\n // 不存在订单,创建订单\n let params = this.getParams();\n let res = await createOrder({\n ...params,\n userPhone: this.form.phone,\n userName: this.form.name,\n plateNumber: this.form.plateNumber\n });\n if (res.orderStatus == 17) {\n // 代付款页\n this.goPage('payPage', {\n ticketId: res.ticketId\n });\n } else {\n // 订单状态页\n this.goPage('orderStatus', {\n ticketId: res.ticketId\n });\n }\n }\n },\n getParams() {\n const address = this.$store.getters.order.address;\n const destAddress = this.$store.getters.order.destAddress;\n const orderInfo = this.$store.getters.order.orderInfo;\n let params = {\n appCode: localStorage.getItem('appCode'),\n serviceId: this.serverList[this.activeTab].serverId,\n startLat: address?.startLat,\n startLng: address?.startLng,\n startPoiAddress: address?.startPoiAddress,\n endLat: destAddress?.endLat || '',\n endLng: destAddress?.endLng || '',\n endPoiAddress: destAddress?.endPoiAddress || '',\n isAppoint: orderInfo?.isAppoint,\n appointTime: orderInfo?.appointTime ? orderInfo?.appointTime + ':00' : '',\n positionEnvironment: parseInt(orderInfo?.positionEnvironment)\n };\n return params;\n },\n async getFeeFun() {\n // 获取费用说明\n let params = this.getParams();\n let res = await getFee(params);\n this.feeTitle = await getFeeTitle(this.serverList[this.activeTab].serverId, res.finishedPrice, res.trailUndergroundFee, res.finishedLimitedMileage, res.finishedExcessUnitPrice);\n let unitPrice = res?.finishedExcessUnitPrice || 0;\n this.feeListArr = await feeList(unitPrice);\n },\n initMap() {\n this.map = new AMap.Map('mapId', {\n viewMode: '2D',\n // 默认使用 2D 模式\n zoom: 11 //初始化地图层级\n });\n },\n\n setTab() {\n this.activeTab = this.$store.getters.order.orderInfo.activeTab;\n },\n setMarker() {\n this.addMarker();\n if (this.serverList[this.activeTab].serverId == 1041) {\n this.addDestMarker();\n }\n },\n // 事发地 marker\n addMarker() {\n const address = this.$store.getters.order.address;\n if (this.marker) {\n this.map.remove(this.marker);\n }\n let content = '
';\n this.marker = new AMap.Marker({\n position: new AMap.LngLat(address.startLng, address.startLat),\n content: content,\n offset: new AMap.Pixel(-13, -30)\n });\n this.map.add(this.marker);\n },\n // 目的地 marker\n addDestMarker() {\n const destAddress = this.$store.getters.order.destAddress;\n if (this.destMarker) {\n this.map.remove(this.destMarker);\n }\n let content = '';\n this.destMarker = new AMap.Marker({\n position: new AMap.LngLat(destAddress?.endLng, destAddress?.endLat),\n content: content,\n offset: new AMap.Pixel(-13, -30)\n });\n this.map.add(this.destMarker);\n }\n }\n};","map":{"version":3,"names":["Dialog","protocolContent","feeComponent","getFeeTitle","feeList","getFee","getCurrentOrder","createOrder","serverList","tabBar","AttentionItem","commonBtn","myMixins","name","mixins","data","map","activeTab","checked","feeTitle","feeListArr","show","protocolShow","marker","destMarker","form","plateNumber","phone","components","mounted","initMap","setTab","setMarker","getFeeFun","methods","ownClickHandler","$toast","test","res","appCode","localStorage","getItem","userPhone","isPresent","ticketId","alert","title","message","then","goPage","params","getParams","userName","orderStatus","address","$store","getters","order","destAddress","orderInfo","serviceId","serverId","startLat","startLng","startPoiAddress","endLat","endLng","endPoiAddress","isAppoint","appointTime","positionEnvironment","parseInt","finishedPrice","trailUndergroundFee","finishedLimitedMileage","finishedExcessUnitPrice","unitPrice","AMap","Map","viewMode","zoom","addMarker","addDestMarker","remove","content","Marker","position","LngLat","offset","Pixel","add"],"sources":["src/views/index/rescue.vue"],"sourcesContent":["\r\n