buyOrder.vue 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938
  1. <template>
  2. <view class="content">
  3. <view class="list_box1">
  4. <view class="part2" v-if="orderDelites.indentType == 1 || orderDelites.indentType == 2">
  5. <view class="box_add">
  6. <!-- <view class="distance">
  7. <view v-if="orderDelites.distancess>1000">{{(Number(orderDelites.distancess) / 1000).toFixed(2)}}</view>
  8. <view v-else>{{Number(orderDelites.distancess?(orderDelites.distancess).toFixed(2):0)}}</view>
  9. <view class="a" v-if="orderDelites.distancess>1000">km</view>
  10. <view class="a" v-else>m</view>
  11. <view>{{orderDelites.distancess}}</view>
  12. </view> -->
  13. <view class="add_name" @click="goStart()">
  14. <view class="flex align-center">
  15. <view class="buy">
  16. <image src="../../../static/rider/icon-buy.png"></image>
  17. </view>
  18. <view class="sh_name">
  19. {{orderDelites.shopAddressDetail}}({{orderDelites.shopProvince?orderDelites.shopProvince:''}}{{orderDelites.shopCity?orderDelites.shopCity:''}}{{orderDelites.shopDistrict?orderDelites.shopDistrict:''}})
  20. <u-icon name="map"></u-icon>
  21. </view>
  22. </view>
  23. <!-- <view class="xs_add">
  24. {{orderDelites.shopProvince?orderDelites.shopProvince:''}}{{orderDelites.shopCity?orderDelites.shopCity:''}}
  25. {{orderDelites.shopDistrict?orderDelites.shopDistrict:''}}
  26. </view> -->
  27. </view>
  28. </view>
  29. <!-- <view class="jiantou">
  30. <image src="../../../static/rider/jiantou.png"></image>
  31. <view>{{orderDelites.distance}}</view>
  32. </view> -->
  33. <view class="box_add">
  34. <!-- <view class="distance">
  35. <view v-if="orderDelites.distance>1000">{{(Number(orderDelites.distance)/ 1000).toFixed(2)}}</view>
  36. <view v-else>{{Number(orderDelites.distance?(orderDelites.distance).toFixed(2):0)}}</view>
  37. <view class="a" v-if="orderDelites.distance>1000">km</view>
  38. <view class="a" v-else>m</view>
  39. <view>{{orderDelites.distancessd}}</view>
  40. </view> -->
  41. <view class="add_name" @click="goEnd()">
  42. <view class="flex align-center">
  43. <view class="send">
  44. <image src="../../../static/rider/icon-send.png"></image>
  45. </view>
  46. <view class="sh_name">
  47. {{orderDelites.userAddressDetail}}({{orderDelites.userProvince?orderDelites.userProvince:''}}{{orderDelites.userCity?orderDelites.userCity:''}}{{orderDelites.userDistrict?orderDelites.userDistrict:''}})
  48. <u-icon name="map"></u-icon>
  49. </view>
  50. </view>
  51. </view>
  52. </view>
  53. </view>
  54. <view class="part2" v-if="orderDelites.indentType == 3 && orderDelites.buyType==0">
  55. <view class="box_add">
  56. <!-- <view class="distance">
  57. <view v-if="orderDelites.distance>1000">{{(Number(orderDelites.distance)/ 1000).toFixed(2)}}</view>
  58. <view v-else>{{Number(orderDelites.distance?(orderDelites.distance).toFixed(2):0)}}</view>
  59. <view class="a" v-if="orderDelites.distance>1000">km</view>
  60. <view class="a" v-else>m</view>
  61. <view>{{orderDelites.distancessd}}</view>
  62. </view> -->
  63. <view class="add_name flex align-center" @click="goEnd()">
  64. <view class="send">
  65. <image src="../../../static/rider/icon-send.png"></image>
  66. </view>
  67. <view class="sh_name">
  68. {{orderDelites.userAddressDetail}}({{orderDelites.userProvince?orderDelites.userProvince:''}}{{orderDelites.userCity?orderDelites.userCity:''}}{{orderDelites.userDistrict?orderDelites.userDistrict:''}})
  69. <u-icon name="map"></u-icon>
  70. </view>
  71. </view>
  72. </view>
  73. </view>
  74. <view class="part2" v-if="orderDelites.indentType == 3 && orderDelites.buyType==1">
  75. <view class="box_add">
  76. <!-- <view class="distance">
  77. <view v-if="orderDelites.distancess>1000">{{(Number(orderDelites.distancess) / 1000).toFixed(2)}}</view>
  78. <view v-else>{{Number(orderDelites.distancess?(orderDelites.distancess).toFixed(2):0)}}</view>
  79. <view class="a" v-if="orderDelites.distancess>1000">km</view>
  80. <view class="a" v-else>m</view>
  81. <view>{{orderDelites.distancess}}</view>
  82. </view> -->
  83. <view class="add_name flex" @click="goStart()">
  84. <view class="buy">
  85. <image src="../../../static/rider/icon-buy.png"></image>
  86. </view>
  87. <view class="sh_name">
  88. {{orderDelites.shopAddressDetail}}({{orderDelites.shopProvince?orderDelites.shopProvince:''}}{{orderDelites.shopCity?orderDelites.shopCity:''}}{{orderDelites.shopDistrict?orderDelites.shopDistrict:''}})
  89. <u-icon name="map"></u-icon>
  90. </view>
  91. <!-- <view class="xs_add">
  92. {{orderDelites.shopProvince?orderDelites.shopProvince:''}}{{orderDelites.shopCity?orderDelites.shopCity:''}}
  93. {{orderDelites.shopDistrict?orderDelites.shopDistrict:''}}
  94. </view> -->
  95. </view>
  96. </view>
  97. <!-- <view class="jiantou">
  98. <image src="../../../static/rider/jiantou.png"></image>
  99. <view>{{orderDelites.distance}}</view>
  100. </view> -->
  101. <view class="box_add">
  102. <!-- <view class="distance">
  103. <view v-if="orderDelites.distance>1000">{{(Number(orderDelites.distance)/ 1000).toFixed(2)}}</view>
  104. <view v-else>{{Number(item.distance?(item.distance).toFixed(2):0)}}</view>
  105. <view class="a" v-if="orderDelites.distance>1000">km</view>
  106. <view class="a" v-else>m</view>
  107. <view>{{orderDelites.distancessd}}</view>
  108. </view> -->
  109. <view class="add_name" @click="goEnd()">
  110. <view class="flex align-center">
  111. <view class="send">
  112. <image src="../../../static/rider/icon-send.png"></image>
  113. </view>
  114. <view class="sh_name">
  115. {{orderDelites.userAddressDetail}}({{orderDelites.userProvince?orderDelites.userProvince:''}}{{orderDelites.userCity?orderDelites.userCity:''}}{{orderDelites.userDistrict?orderDelites.userDistrict:''}})
  116. <u-icon name="map"></u-icon>
  117. </view>
  118. </view>
  119. </view>
  120. </view>
  121. </view>
  122. <view class="part2" v-if="orderDelites.indentType == 4">
  123. <view class="box_add">
  124. <view class="distance">
  125. <!-- <view v-if="orderDelites.distancessd>1000">{{(Number(orderDelites.distancessd)/ 1000).toFixed(2)}}</view>
  126. <view v-else>{{Number(orderDelites.distancessd?(orderDelites.distancessd).toFixed(2):0)}}</view>
  127. <view class="a" v-if="orderDelites.distancessd>1000">km</view>
  128. <view class="a" v-else>m</view> -->
  129. <!-- <view>{{orderDelites.distancessd}}</view> -->
  130. </view>
  131. <view class="add_name" @click="goEnd()">
  132. <view class="send">
  133. <image src="../../../static/rider/icon-send.png"></image>
  134. </view>
  135. <view class="sh_name">
  136. {{orderDelites.userAddressDetail}}({{orderDelites.userProvince?orderDelites.userProvince:''}}{{orderDelites.userCity?orderDelites.userCity:''}}{{orderDelites.userDistrict?orderDelites.userDistrict:''}})
  137. <u-icon name="map"></u-icon>
  138. </view>
  139. </view>
  140. </view>
  141. </view>
  142. <view class="part2" v-if="orderDelites.indentType == 5">
  143. <view class="box_add">
  144. <view class="distance">
  145. <!-- <view v-if="orderDelites.distancess>1000">{{(Number(orderDelites.distancess) / 1000).toFixed(2)}}</view>
  146. <view v-else>{{Number(orderDelites.distancess?(orderDelites.distancess).toFixed(2):0)}}</view>
  147. <view class="a" v-if="orderDelites.distancess>1000">km</view>
  148. <view class="a" v-else>m</view> -->
  149. <view>{{orderDelites.distancess}}</view>
  150. </view>
  151. <view class="add_name" @click="goStart()">
  152. <view class="flex align-center">
  153. <view class="buy">
  154. <image src="../../../static/rider/icon-buy.png"></image>
  155. </view>
  156. <view class="sh_name">
  157. {{orderDelites.shopAddressDetail}}
  158. <u-icon name="map"></u-icon>
  159. </view>
  160. </view>
  161. <view class="xs_add">
  162. {{orderDelites.shopProvince?orderDelites.shopProvince:''}}{{orderDelites.shopCity?orderDelites.shopCity:''}}
  163. {{orderDelites.shopDistrict?orderDelites.shopDistrict:''}}
  164. </view>
  165. </view>
  166. </view>
  167. <view class="jiantou">
  168. <image src="../../../static/rider/jiantou.png"></image>
  169. <!-- <view>{{orderDelites.distance}}</view> -->
  170. </view>
  171. <view class="box_add">
  172. <view class="distance">
  173. <!-- <view v-if="orderDelites.distance>1000">{{(Number(orderDelites.distance)/ 1000).toFixed(2)}}</view>
  174. <view v-else>{{Number(item.distance?(item.distance).toFixed(2):0)}}</view>
  175. <view class="a" v-if="orderDelites.distance>1000">km</view>
  176. <view class="a" v-else>m</view> -->
  177. <view>{{orderDelites.distancessd}}</view>
  178. </view>
  179. <view class="add_name" @click="goEnd()">
  180. <view class="flex align-center">
  181. <view class="send">
  182. <image src="../../../static/rider/icon-send.png"></image>
  183. </view>
  184. <view class="sh_name">
  185. {{orderDelites.userAddressDetail}}({{orderDelites.userProvince?orderDelites.userProvince:''}}{{orderDelites.userCity?orderDelites.userCity:''}}{{orderDelites.userDistrict?orderDelites.userDistrict:''}})
  186. <u-icon name="map"></u-icon>
  187. </view>
  188. </view>
  189. </view>
  190. </view>
  191. </view>
  192. </view>
  193. <!-- tip -->
  194. <view class="tip_box" v-if="orderDelites.indentType != 5">
  195. <view class="tip_part1">
  196. <view class="tip_title" v-if="orderDelites.indentType == 1">帮送清单</view>
  197. <view class="tip_title" v-if="orderDelites.indentType == 2">帮取清单</view>
  198. <view class="tip_title" v-if="orderDelites.indentType == 3">帮买清单</view>
  199. <view class="tip_title" v-if="orderDelites.indentType == 4">服务内容</view>
  200. <view class="tip_rider" v-if="orderDelites.prepayMoney">
  201. 用户预付:¥<text>{{orderDelites.prepayMoney}}</text>
  202. </view>
  203. <view class="box_two1" v-if="orderDelites.itemType">{{orderDelites.itemType}}</view>
  204. <view class="box_two1" v-if="orderDelites.itemValue">{{orderDelites.itemValue}}</view>
  205. <view class="box_two1" v-if="orderDelites.itemWeight">{{orderDelites.itemWeight}}</view>
  206. </view>
  207. <u-line color="#F2F2F2" />
  208. <view class="tip_content" v-if="orderDelites.indentType == 3">
  209. {{orderDelites.productDetails?orderDelites.productDetails:''}}
  210. </view>
  211. <view class="tip_content"
  212. v-if="orderDelites.indentType == 1 || orderDelites.indentType == 2&&orderDelites.remarks">
  213. 备注:{{orderDelites.remarks?orderDelites.remarks:''}}</view>
  214. <view class="tip_content" v-if="orderDelites.indentType == 4">
  215. {{orderDelites.serviceDetails?orderDelites.serviceDetails:''}}
  216. </view>
  217. </view>
  218. <!-- 订单信息 -->
  219. <view class="order_box">
  220. <view class="order_title">订单信息</view>
  221. <view style="padding:0 30rpx;color:#FF7F00">{{orderDelites.shopName}}</view>
  222. <view class="order_list">
  223. <view class="order_name">订单号码</view>
  224. <view class="order_numbers" @click="copyOrder(orderDelites.indentNumber)">{{orderDelites.indentNumber}}
  225. <u-icon name="order"></u-icon>
  226. </view>
  227. </view>
  228. <view class="order_list">
  229. <view class="order_name">送达时间</view>
  230. <view class="order_numbers">
  231. {{orderDelites.sendOutTime?orderDelites.sendOutTime:'立即配送'}}
  232. </view>
  233. </view>
  234. <view class="order_list" v-if="orderDelites.remarks">
  235. <view class="order_name">订单备注</view>
  236. <view class="order_numbers">
  237. {{orderDelites.remarks}}
  238. </view>
  239. </view>
  240. <!-- <view class="order_list">
  241. <view class="order_name">发票抬头</view>
  242. <view class="order_numbers">无(不需要发票)</view>
  243. </view> -->
  244. </view>
  245. <!-- 费用明细 -->
  246. <view class="order_box">
  247. <view class="order_title">费用明细</view>
  248. <view class="order_list">
  249. <view class="income_name">跑腿费</view>
  250. <view class="income_numbers">¥<text>{{orderDelites.errandMoney}}</text></view>
  251. </view>
  252. <view class="order_list" v-if="orderDelites.tip">
  253. <view class="income_name">小费奖励</view>
  254. <view class="income_numbers">¥<text>{{orderDelites.tip?orderDelites.tip:0}}</text></view>
  255. </view>
  256. <view class="order_list" v-if="orderDelites.prepayMoney">
  257. <view class="income_name">商品费用</view>
  258. <view class="income_numbers1">¥<text>{{orderDelites.prepayMoney}}</text></view>
  259. </view>
  260. </view>
  261. <!-- 接单按钮 -->
  262. <view class="tabbar_btn">
  263. <view class="btn" @click="bindorder">
  264. 接单
  265. </view>
  266. </view>
  267. </view>
  268. </template>
  269. <script>
  270. export default {
  271. data() {
  272. return {
  273. orderDelites: {},
  274. longitude: '', //骑手起点经度
  275. latitude: '', //骑手起点纬度
  276. qiJuli: '', //骑手距离
  277. dianJuli: '', //店家之间距离
  278. checkCertification: '',
  279. userId: '',
  280. arr: [],
  281. showModal: false
  282. }
  283. },
  284. onLoad(options) {
  285. uni.showLoading({
  286. title: '加载中......',
  287. icon: 'none'
  288. })
  289. console.log(options)
  290. this.indentNumber = options.id
  291. var that = this
  292. uni.getLocation({
  293. type: 'wgs84',
  294. success: function(res) {
  295. console.log('当前位置的经度:' + res.longitude);
  296. console.log('当前位置的纬度:' + res.latitude);
  297. that.longitude = res.longitude
  298. that.latitude = res.latitude
  299. that.taskData()
  300. }
  301. });
  302. that.userId = that.$queue.getData("userId");
  303. },
  304. onShow() {
  305. this.checkCertification = this.$queue.getData("checkCertification");
  306. //用户端骑手转单订单通知 335
  307. this.$Request.getT('/app/common/type/335').then(res => {
  308. if (res.code === 0) {
  309. this.arr = [];
  310. this.arr.push(res.data.value)
  311. }
  312. });
  313. // #ifdef MP-WEIXIN
  314. //订阅
  315. if (this.userId) {
  316. if (this.showModal) {
  317. this.openMsg()
  318. }
  319. }
  320. // #endif
  321. },
  322. methods: {
  323. openMsg() {
  324. console.log('订阅消息')
  325. var that = this
  326. uni.getSetting({
  327. withSubscriptions: true, //是否获取用户订阅消息的订阅状态,默认false不返回
  328. success(ret) {
  329. console.log(ret.subscriptionsSetting, '------------------')
  330. // if (ret.subscriptionsSetting.itemSettings && Object.keys(ret.subscriptionsSetting.itemSettings).length == 2) {
  331. if (ret.subscriptionsSetting.itemSettings) {
  332. uni.setStorageSync('sendOrderMsg', true)
  333. uni.openSetting({ // 打开设置页
  334. success(rea) {
  335. console.log(rea.authSetting)
  336. }
  337. });
  338. } else { // 用户没有点击“总是保持以上,不再询问”则每次都会调起订阅消息
  339. uni.setStorageSync('sendOrderMsg', false)
  340. uni.showModal({
  341. title: '提示',
  342. content: '为了更好的体验,请绑定消息推送',
  343. confirmText: '确定',
  344. cancelText: '取消',
  345. success: function(res) {
  346. if (res.confirm) {
  347. wx.requestSubscribeMessage({
  348. tmplIds: that.arr,
  349. success(re) {
  350. var datas = JSON.stringify(re);
  351. if (datas.indexOf("accept") != -1) {
  352. console.log(re)
  353. // uni.setStorageSync('sendMsg', true)
  354. }
  355. },
  356. fail: (res) => {
  357. console.log(res)
  358. }
  359. })
  360. // uni.setStorageSync('sendMsg', true)
  361. that.showModal = false
  362. } else if (res.cancel) {
  363. console.log('取消')
  364. // uni.setStorageSync('sendMsg', false)
  365. // that.showModal = true
  366. }
  367. }
  368. })
  369. }
  370. }
  371. })
  372. },
  373. copyOrder(value) {
  374. // #ifdef MP-WEIXIN
  375. if (uni.getStorageSync('sendOrderMsg')) {
  376. uni.requestSubscribeMessage({
  377. tmplIds: this.arr,
  378. success(re) {
  379. // console.log(re,'**********')
  380. var datas = JSON.stringify(re);
  381. if (datas.indexOf("accept") != -1) {
  382. console.log(re)
  383. }
  384. },
  385. fail: (res) => {
  386. console.log(res)
  387. }
  388. })
  389. }
  390. // #endif
  391. uni.setClipboardData({
  392. data: value, //要被复制的内容
  393. success: () => { //复制成功的回调函数
  394. uni.showToast({ //提示
  395. title: '复制成功'
  396. })
  397. }
  398. });
  399. },
  400. // 获取任务数据
  401. taskData() {
  402. this.$Request.postT('/app/tbindent/indentMessage', {
  403. indentNumber: this.indentNumber,
  404. ol: this.longitude,
  405. od: this.latitude
  406. }).then(res => {
  407. if (res.code == 0) {
  408. uni.hideLoading()
  409. if (res.data.distancess > 1000) {
  410. res.data.distancess = Number((res.data.distancess / 1000)).toFixed(2) + "km"
  411. } else {
  412. if (res.data.distancess == 0) {
  413. res.data.distancess = "0m";
  414. } else {
  415. res.data.distancess = Number(res.data.distancess).toFixed(1) + "m";
  416. }
  417. }
  418. if (res.data.distance > 1000) {
  419. res.data.distance = Number((res.data.distance / 1000)).toFixed(2) + "km"
  420. } else {
  421. res.data
  422. if (res.data.distance == 0) {
  423. res.data.distance = "0m";
  424. } else {
  425. res.data.distance = Number(res.data.distance).toFixed(1) + "m";
  426. }
  427. }
  428. if (res.data.distancessd > 1000) {
  429. res.data.distancessd = Number((res.data.distancessd / 1000)).toFixed(2) + "km"
  430. } else {
  431. if (res.data.distancessd == 0) {
  432. res.data.distancessd = "0m";
  433. } else {
  434. res.data.distancessd = Number(res.data.distancessd).toFixed(1) + "m";
  435. }
  436. }
  437. this.orderDelites = res.data
  438. } else {
  439. console.log('失败:', res.data)
  440. }
  441. });
  442. },
  443. bindorder() {
  444. let that = this
  445. if (!that.userId) {
  446. uni.showModal({
  447. title: '提示',
  448. content: '请先登录后再接单',
  449. success: function(res) {
  450. if (res.confirm) {
  451. console.log('用户点击确定');
  452. uni.navigateTo({
  453. url: '/pages/login/login'
  454. })
  455. } else if (res.cancel) {
  456. console.log('用户点击取消');
  457. }
  458. }
  459. });
  460. return;
  461. }
  462. // #ifdef MP-WEIXIN
  463. if (uni.getStorageSync('sendOrderMsg')) {
  464. uni.requestSubscribeMessage({
  465. tmplIds: this.arr,
  466. success(re) {
  467. // console.log(re,'**********')
  468. var datas = JSON.stringify(re);
  469. if (datas.indexOf("accept") != -1) {
  470. console.log(re)
  471. }
  472. },
  473. fail: (res) => {
  474. console.log(res)
  475. }
  476. })
  477. }
  478. // #endif
  479. if (that.checkCertification == null) {
  480. uni.showModal({
  481. title: '提示',
  482. content: '请先实名认证后再接单',
  483. success: function(res) {
  484. if (res.confirm) {
  485. console.log('用户点击确定');
  486. uni.navigateTo({
  487. url: '/pages/riderMy/approve/approve'
  488. })
  489. } else if (res.cancel) {
  490. console.log('用户点击取消');
  491. }
  492. }
  493. });
  494. return;
  495. }
  496. if (that.checkCertification == 0) {
  497. uni.showToast({
  498. title: '实名认证审核中,无法接单',
  499. icon: 'none'
  500. });
  501. return;
  502. }
  503. if (that.checkCertification == 2) {
  504. uni.showToast({
  505. title: '实名认证未通过,无法接单',
  506. icon: 'none'
  507. });
  508. return;
  509. }
  510. uni.showModal({
  511. title: '提示',
  512. content: '确认接单吗',
  513. success: function(res) {
  514. if (res.confirm) {
  515. console.log('用户点击确定');
  516. that.$Request.postT('/app/tbindent/indentReceiving', {
  517. indentNumber: that.indentNumber
  518. }).then(res => {
  519. if (res.code == 0) {
  520. uni.navigateTo({
  521. url: '/pages/index/orderdetail/orderdetail?id=' + that
  522. .indentNumber
  523. })
  524. } else {
  525. console.log('失败:', res.data)
  526. uni.showToast({
  527. title: res.msg,
  528. icon: 'none',
  529. duration: 1500
  530. });
  531. setTimeout(()=>{
  532. uni.reLaunch({
  533. url:'/pages/index/index'
  534. })
  535. },1500)
  536. }
  537. });
  538. } else if (res.cancel) {
  539. console.log('用户点击取消');
  540. }
  541. }
  542. });
  543. },
  544. // 计算两点之间的距离
  545. jsjl(qj, qw, jj, jw) {
  546. this.$Request.postT('/app/indent/findNewIndent', {
  547. ol: qj,
  548. od: qw,
  549. dl: jj,
  550. dd: jw
  551. }).then(res => {
  552. // if(){
  553. // }
  554. });
  555. },
  556. goStart() {
  557. // let obj = {
  558. // name: this.orderDelites.shopAddressDetail,
  559. // lat: this.orderDelites.shopLat,
  560. // long: this.orderDelites.shopLng,
  561. // }
  562. // this.navgate(obj)
  563. // 一键导航
  564. let latitude = this.orderDelites.shopLat
  565. let longitude = this.orderDelites.shopLng
  566. let name = this.orderDelites.shopAddressDetail
  567. uni.openLocation({
  568. latitude: Number(latitude), //要去的纬度-地址
  569. longitude: Number(longitude), //要去的经度-地址
  570. name: name, //地址名称
  571. address: name, //详细地址名称
  572. success: function() {
  573. console.log('导航成功');
  574. },
  575. fail: function(error) {
  576. console.log(error)
  577. }
  578. })
  579. },
  580. goEnd() {
  581. // let obj = {
  582. // name: this.orderDelites.userAddressDetail,
  583. // lat: this.orderDelites.userLat,
  584. // long: this.orderDelites.userLng,
  585. // }
  586. // this.navgate(obj)
  587. let latitude = this.orderDelites.userLat
  588. let longitude = this.orderDelites.userLng
  589. let name = this.orderDelites.userAddressDetail
  590. uni.openLocation({
  591. latitude: Number(latitude), //要去的纬度-地址
  592. longitude: Number(longitude), //要去的经度-地址
  593. name: name, //地址名称
  594. address: name, //详细地址名称
  595. success: function() {
  596. console.log('导航成功');
  597. },
  598. fail: function(error) {
  599. console.log(error)
  600. }
  601. })
  602. },
  603. navgate(e) {
  604. let plugin = requirePlugin('routePlan');
  605. let key = this.$queue.getData('mapKey'); //使用在腾讯位置服务申请的key
  606. let referer = this.$queue.getData('mapName'); //调用插件的app的名称
  607. let endPoint = JSON.stringify({ //终点
  608. 'name': e.name,
  609. 'latitude': e.lat,
  610. 'longitude': e.long
  611. });
  612. wx.navigateTo({
  613. url: 'plugin://routePlan/index?key=' + key + '&referer=' + referer + '&endPoint=' + endPoint
  614. });
  615. }
  616. }
  617. }
  618. </script>
  619. <style>
  620. body {
  621. background: #F5F5F5;
  622. }
  623. .content {
  624. width: 100%;
  625. margin-bottom: 159rpx;
  626. }
  627. .list_box1 {
  628. width: 90%;
  629. margin: 0 auto;
  630. /* height: 320rpx; */
  631. background: #FFFFFF;
  632. border-radius: 23rpx;
  633. box-shadow: 0rpx 5rpx 5rpx 0rpx rgba(198, 186, 181, 0.20);
  634. margin-top: 20rpx;
  635. }
  636. .part2 {
  637. width: 92%;
  638. margin: 0 auto;
  639. padding: 25rpx 0;
  640. }
  641. .box_add {
  642. display: flex;
  643. }
  644. .box_two1 {
  645. background: #c4e2ff;
  646. color: #359CFF;
  647. width: 72px;
  648. height: 45rpx;
  649. font-size: 22rpx;
  650. text-align: center;
  651. line-height: 45rpx;
  652. border-radius: 5rpx;
  653. margin-top: 20rpx;
  654. margin-left: 10rpx;
  655. }
  656. .distance {
  657. flex: 1;
  658. /* text-align: center; */
  659. font-size: 28rpx;
  660. display: flex;
  661. align-items: center;
  662. justify-content: left;
  663. }
  664. .a {
  665. font-size: 16rpx;
  666. }
  667. .add_name {
  668. flex: 8;
  669. position: relative;
  670. padding-bottom: 20px;
  671. }
  672. .buy {
  673. /* position: absolute;
  674. top: 0rpx; */
  675. }
  676. .buy image {
  677. width: 20px;
  678. height: 20px;
  679. }
  680. .send {
  681. /* position: absolute;
  682. top: 0rpx; */
  683. }
  684. .send image {
  685. width: 20px;
  686. height: 20px;
  687. }
  688. .sh_name {
  689. font-size: 30rpx;
  690. font-weight: bold;
  691. letter-spacing: 2rpx;
  692. /* text-indent: 15rpx; */
  693. margin-left: 8upx;
  694. }
  695. .xs_add {
  696. color: #999999;
  697. font-size: 24rpx;
  698. margin-top: 10rpx;
  699. margin-left: 30px;
  700. }
  701. .jiantou {
  702. margin-left: 23rpx;
  703. display: flex;
  704. /* justify-content: space-between; */
  705. align-items: center;
  706. }
  707. .jiantou image {
  708. width: 20rpx;
  709. height: 40rpx;
  710. }
  711. .jiantou>view {
  712. margin-left: 10rpx;
  713. }
  714. .part3 {
  715. width: 90%;
  716. margin: 0 auto;
  717. display: flex;
  718. }
  719. .three_left {
  720. flex: 1;
  721. height: 100rpx;
  722. display: flex;
  723. justify-content: left;
  724. align-items: center;
  725. }
  726. .three_left image {
  727. width: 36rpx;
  728. height: 37rpx;
  729. }
  730. .three_left text {
  731. color: #333333;
  732. font-size: 25rpx;
  733. margin-left: 10rpx;
  734. }
  735. .three_right {
  736. flex: 1;
  737. height: 100rpx;
  738. display: flex;
  739. justify-content: flex-end;
  740. align-items: center;
  741. color: #FF412D;
  742. font-size: 32rpx;
  743. font-weight: bold;
  744. }
  745. /* tip */
  746. .tip_box {
  747. width: 90%;
  748. margin: 0 auto;
  749. /* height: 180rpx; */
  750. background: #FFFFFF;
  751. margin-top: 20rpx;
  752. border-radius: 22rpx;
  753. }
  754. .tip_part1 {
  755. display: flex;
  756. }
  757. .tip_title {
  758. /* flex: 1; */
  759. height: 80rpx;
  760. display: flex;
  761. justify-content: left;
  762. align-items: center;
  763. font-size: 32rpx;
  764. font-weight: bold;
  765. margin-left: 30rpx;
  766. }
  767. .tip_rider {
  768. /* flex: 1; */
  769. font-size: 20rpx;
  770. display: flex;
  771. justify-content: flex-end;
  772. align-items: center;
  773. margin-left: 30rpx;
  774. }
  775. .tip_rider text {
  776. font-size: 30rpx;
  777. }
  778. .tip_content {
  779. width: 90%;
  780. margin: 0 auto;
  781. font-size: 27rpx;
  782. font-weight: bold;
  783. letter-spacing: 2rpx;
  784. margin-top: 15rpx;
  785. padding-bottom: 15rpx;
  786. }
  787. .u-line {
  788. border-bottom-width: 3px !important;
  789. }
  790. /* 订单信息 */
  791. .order_box {
  792. width: 90%;
  793. margin: 0 auto;
  794. /* height: 300rpx; */
  795. background: #ffffff;
  796. margin-top: 20rpx;
  797. border-radius: 22rpx;
  798. }
  799. .order_title {
  800. width: 90%;
  801. margin: 0 auto;
  802. font-size: 32rpx;
  803. font-weight: 600;
  804. line-height: 67rpx;
  805. letter-spacing: 3rpx;
  806. }
  807. .order_list {
  808. display: flex;
  809. }
  810. .order_name {
  811. flex: 1;
  812. margin-left: 35rpx;
  813. color: #999999;
  814. font-size: 25rpx;
  815. height: 75rpx;
  816. display: flex;
  817. justify-content: left;
  818. align-items: center;
  819. }
  820. .order_numbers {
  821. flex: 1;
  822. color: #333333;
  823. display: flex;
  824. justify-content: flex-end;
  825. align-items: center;
  826. font-size: 26rpx;
  827. margin-right: 35rpx;
  828. }
  829. /* 费用明细 */
  830. .income_name {
  831. flex: 1;
  832. margin-left: 35rpx;
  833. color: #999999;
  834. font-size: 26rpx;
  835. height: 75rpx;
  836. display: flex;
  837. justify-content: left;
  838. align-items: center;
  839. }
  840. .income_numbers {
  841. flex: 1;
  842. color: #333333;
  843. display: flex;
  844. justify-content: flex-end;
  845. align-items: center;
  846. font-size: 26rpx;
  847. margin-right: 35rpx;
  848. }
  849. .income_numbers1 {
  850. flex: 1;
  851. color: #FF2400;
  852. display: flex;
  853. justify-content: flex-end;
  854. align-items: center;
  855. font-size: 26rpx;
  856. margin-right: 35rpx;
  857. }
  858. /* 接单按钮 */
  859. .tabbar_btn {
  860. position: fixed;
  861. bottom: 0rpx;
  862. left: 0rpx;
  863. right: 0rpx;
  864. width: 100%;
  865. height: 120rpx;
  866. background: #FFFFFF;
  867. display: flex;
  868. justify-content: center;
  869. align-items: center;
  870. }
  871. .btn {
  872. width: 90%;
  873. height: 80rpx;
  874. background: #FF7F00;
  875. border-radius: 21rpx;
  876. color: white;
  877. text-align: center;
  878. line-height: 80rpx;
  879. font-size: 26rpx;
  880. }
  881. </style>