pay.vue 38 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440
  1. <template>
  2. <view style="padding-bottom: 90rpx;">
  3. <view class="top_view">
  4. <view class="top_title" v-if="order.status==3">司机正在努力赶来</view>
  5. <view class="top_title" v-if="order.status==1">等待用户支付...</view>
  6. <view class="top_title" v-if="order.status==2">等待附近司机接单...</view>
  7. <view class="top_title" v-if="order.status==6">订单已取消</view>
  8. <view class="top_title" v-if="order.status==4">订单进行中</view>
  9. <view class="top_title" v-if="order.status==5">已到达终点</view>
  10. </view>
  11. <view class="top_box">
  12. <view v-if="order.status!=3 && order.status!=4 && order.status!=5">
  13. <view class="topbox_addview justify-between">
  14. <view class="flex align-center" style="margin-bottom: 4rpx;">
  15. <view class="green"></view>
  16. <view class="topbox_addName">{{order.shipAddress}}</view>
  17. </view>
  18. <image v-if="globalImages" :src="globalImages + 'images/static/upload/up.png'"></image>
  19. <view class="flex align-center">
  20. <view class="orgin"></view>
  21. <view class="topbox_addName">{{order.deliveryAddress}}</view>
  22. </view>
  23. </view>
  24. <view class="flex justify-between margin-tb-sm">
  25. <view class="topbox_title">{{order.appointmentNum}}人·{{order.appointmentType == 1 ? '独享' : '拼车'}}
  26. </view>
  27. <view class="topbox_title">{{order.appointmentStartTime}}-{{order.appointmentEndTime}}</view>
  28. </view>
  29. </view>
  30. <view class="cph_item" v-if="order.status == 3 || order.status == 4 || order.status == 5">
  31. <view v-if="order.driver">
  32. <view class="cphitem_name">{{order.driver.driverPlate}}</view>
  33. <view class="cphitem_name flex align-center" style="font-size: 28rpx;margin-top: 20rpx;">
  34. <view>{{order.driver.driverColor}}</view>
  35. <view class="blackdian"></view>
  36. <view>{{order.driver.driverBrand}}</view>
  37. </view>
  38. <view class="flex align-center margin-top">
  39. <view class="sj_name">{{order.driver.driverName}}</view>
  40. <view style="width: 10rpx;height: 20rpx;margin: 0rpx 20rpx;">
  41. <u-line direction="col" color="#ababab" />
  42. </view>
  43. <view class="sj_name">接单{{order.ordersCount ? order.ordersCount : 1}}次</view>
  44. </view>
  45. </view>
  46. <image v-if="globalImages" :src="globalImages + 'images/static/upload/orderimage.png'"></image>
  47. </view>
  48. <map class="orderMap" id="orderMap" scale="12" :latitude="latitude" :longitude="longitude" :markers="covers"
  49. :polyline="polyline">
  50. </map>
  51. <u-line color="#E6E6E6" />
  52. <view class="order_btn">
  53. <view class="btn3" v-if="order.status == 1 || order.status == 2" @tap.stop="bindorderOff()">取消行程</view>
  54. <view class="btn2 margin-left" @click.stop="backindex()">再来一单</view>
  55. <view class="btn2 margin-left" v-if="order.status==1" @click.stop="orderpay()">
  56. 立即支付</view>
  57. <!-- <view class="btn2 margin-left" v-if="order.status==5" @tap.stop="bindcomment()">
  58. 去评价
  59. </view>
  60. <view class="btn2 margin-left" v-if="order.status==5" @tap.stop="bindtousu()">
  61. 去投诉
  62. </view> -->
  63. <view class="btn2 margin-left" v-if="order.status == 4 || order.status==3 && order.driver"
  64. @tap.stop="bindPhone">
  65. 致电车主
  66. </view>
  67. <view class="btn2 margin-left" v-if="order.status == 4 || order.status==3 && order.driver && zxMsg === '是'"
  68. @tap.stop="goMsg">
  69. 在线联系
  70. </view>
  71. </view>
  72. </view>
  73. <view v-if="order.status != 2">
  74. <view class="box ">
  75. <view>订单信息</view>
  76. <view class="flex align-center justify-between margin-top">
  77. <view>订单编号</view>
  78. <view @click.stop="copyClick(order.ordersNo)">{{order.ordersNo}}
  79. <image src="../static/copy.png" style="width:28rpx;height: 28rpx;margin-left: 10rpx;"></image>
  80. </view>
  81. </view>
  82. <!--<view class="flex align-center justify-between margin-top" v-if="order.couponMoney">
  83. <view>优惠券</view>
  84. <view>-¥{{order.couponMoney}}</view>
  85. </view> -->
  86. <view class="flex align-center justify-between margin-top">
  87. <view>下单时间</view>
  88. <view>{{order.createTime}}</view>
  89. </view>
  90. <view class="flex align-center justify-between margin-top" v-if="order.payWay">
  91. <view>支付方式</view>
  92. <!-- 支付方式 1微信小程序 2微信公众号 3微信app 4支付宝 5季钱 -->
  93. <view v-if="order.payWay==1">微信小程序支付</view>
  94. <view v-if="order.payWay==2">微信公众号支付</view>
  95. <view v-if="order.payWay==3">微信app支付</view>
  96. <view v-if="order.payWay==4">支付宝支付</view>
  97. <view v-if="order.payWay==5">零钱支付</view>
  98. <view v-if="order.payWay==6">线下支付</view>
  99. </view>
  100. <view class="flex align-center justify-between margin-top" v-if="order.driverRoute && order.driverRoute.isHighSpeedPrice">
  101. <view>高速费用</view>
  102. <!-- <view>{{order.driverRoute.isHighSpeedPrice == 1 ? '司机承担高速费' : '用户承担高速费'}}</view> -->
  103. <view v-if="order.driverRoute.isHighSpeedPrice == 1">
  104. ·司机承担</view>
  105. <view v-if="order.driverRoute.isHighSpeedPrice == 2">
  106. ·乘客承担</view>
  107. <view v-if="order.driverRoute.isHighSpeedPrice == 3">
  108. ·费用AA</view>
  109. </view>
  110. <view class="margin-tb" v-if="order.remark">
  111. <view>备注</view>
  112. <view class="margin-top-xs">{{order.remark}}</view>
  113. </view>
  114. </view>
  115. <view class="boxs">
  116. <!-- <view class="titls">出行信息</view> -->
  117. <view class="flex align-center padding-tb-sm">
  118. <view>
  119. <image v-if="globalImages" :src="globalImages + 'images/order/tiem.png'" style="width: 80rpx;height: 80rpx;" mode=""></image>
  120. </view>
  121. <view style="margin-left: 30rpx; line-height: 40rpx;">
  122. <view style="color: #999;">预约出发时间</view>
  123. <view>{{order.appointmentStartTime}}</view>
  124. </view>
  125. </view>
  126. <view class="flex align-center padding-tb-sm">
  127. <view>
  128. <image v-if="globalImages" :src="globalImages + 'images/order/tiem.png'" style="width: 80rpx;height: 80rpx;" mode=""></image>
  129. </view>
  130. <view style="margin-left: 30rpx; line-height: 40rpx;">
  131. <view style="color: #999;">预约到达时间</view>
  132. <view>{{order.appointmentEndTime}}</view>
  133. </view>
  134. </view>
  135. <view class="flex align-center padding-tb-sm">
  136. <view>
  137. <image v-if="globalImages" :src="globalImages + 'images/order/phone.png'" style="width: 80rpx;height: 80rpx;" mode=""></image>
  138. </view>
  139. <view style="margin-left: 30rpx; line-height: 40rpx;">
  140. <view style="color: #999;">联系方式</view>
  141. <view>{{order.shipUserPhone}}</view>
  142. </view>
  143. </view>
  144. <view class="flex align-center padding-tb-sm margin-top-xs">
  145. <view>
  146. <image v-if="globalImages" :src="globalImages + 'images/order/chufa.png'" style="width: 80rpx;height: 80rpx;" mode=""></image>
  147. </view>
  148. <view style="margin-left: 30rpx; line-height: 40rpx;">
  149. <view style="color: #999;">出发地</view>
  150. <view>{{order.shipAddress}}</view>
  151. </view>
  152. </view>
  153. <view class="flex align-center padding-tb-sm">
  154. <view>
  155. <image v-if="globalImages" :src="globalImages + 'images/order/mididi.png'" style="width: 80rpx;height: 80rpx;" mode=""></image>
  156. </view>
  157. <view style="margin-left: 30rpx; line-height: 40rpx;">
  158. <view style="color: #999;">目的地</view>
  159. <view>{{order.deliveryAddress}}</view>
  160. </view>
  161. </view>
  162. <view class="flex align-center padding-tb-sm">
  163. <view>
  164. <image v-if="globalImages" :src="globalImages + 'images/order/chengcheren.png'" style="width: 80rpx;height: 80rpx;" mode=""></image>
  165. </view>
  166. <view style="margin-left: 30rpx; line-height: 40rpx;">
  167. <view style="color: #999;">乘车人数</view>
  168. <view>{{order.appointmentNum}}人</view>
  169. </view>
  170. </view>
  171. <view v-if="order.kmDistance" class="flex align-center padding-tb-sm">
  172. <view>
  173. <image v-if="globalImages" :src="globalImages + 'images/order/chufa.png'" style="width: 80rpx;height: 80rpx;" mode=""></image>
  174. </view>
  175. <view style="margin-left: 30rpx; line-height: 40rpx;">
  176. <view style="color: #999;">总行程</view>
  177. <view>{{order.kmDistance}}公里</view>
  178. </view>
  179. </view>
  180. <view class="flex align-center padding-tb-sm">
  181. <view>
  182. <image v-if="globalImages" :src="globalImages + 'images/order/leixing.png'" style="width: 80rpx;height: 80rpx;" mode=""></image>
  183. </view>
  184. <view style="margin-left: 30rpx; line-height: 40rpx;">
  185. <view style="color: #999;">用车类型</view>
  186. <view>需要加一下</view>
  187. </view>
  188. </view>
  189. </view>
  190. <view class="boxa">
  191. <view class="align-center justify-between" style="padding-bottom: 30rpx; border-bottom: #ccc 1rpx solid;margin: 0 30rpx;">
  192. <view class="titls2">订单信息</view>
  193. <view class="flex align-center justify-between margin-top">
  194. <view>基础费用</view>
  195. <view >¥123123</view>
  196. </view>
  197. <view class="flex align-center justify-between margin-top">
  198. <view>里程费</view>
  199. <view >¥123123</view>
  200. </view>
  201. <view class="flex align-center justify-between margin-top">
  202. <view>市场费</view>
  203. <view >¥123123</view>
  204. </view>
  205. <view class="flex align-center justify-between margin-top" v-if="order.couponMoney">
  206. <view>优惠券</view>
  207. <view >-¥123123</view>
  208. </view>
  209. </view>
  210. <view class="flex align-center justify-between padding-lr" style="margin-top: 30rpx;">
  211. <view>总计</view>
  212. <view class="order_money">¥{{order.payMoney}}</view>
  213. </view>
  214. </view>
  215. </view>
  216. <view v-if="order.status == 2" style="padding: 0rpx 30rpx;">
  217. <view class="titls">联系车主接单</view>
  218. <view class="list_item" v-for="(item,index) in list">
  219. <view class="flex" style="padding: 30rpx 30rpx 20rpx;">
  220. <image v-if="globalImages" :src="globalImages + 'images/static/upload/ordercz.png'"></image>
  221. <view class="margin-left-sm">
  222. <view class="flex">
  223. <view class="item_time">{{item.startTime}}</view>
  224. <view class="item_shunlu">{{item.similarity ? item.similarity : 0}}%顺路</view>
  225. </view>
  226. <view class="flex align-center" style="margin-top: 6rpx;">
  227. <view class="sj_name" v-if="item.driver">
  228. {{item.driver.driverColor}}·{{item.driver.driverBrand}}
  229. </view>
  230. <view style="width: 10rpx;height: 20rpx;margin: 0rpx 20rpx;">
  231. <u-line direction="col" color="#ababab" />
  232. </view>
  233. <view class="sj_name">接单{{item.ordersCount ? item.ordersCount : 1}}次</view>
  234. </view>
  235. </view>
  236. </view>
  237. <u-line color="#E6E6E6" />
  238. <view class="padding">
  239. <view class="flex align-center" style="margin-bottom: 4rpx;margin-left: 6rpx;">
  240. <view class="green"></view>
  241. <view class="item_addName">{{item.shipAddress}}</view>
  242. <view class="item_juli" v-if="item.startDistance">{{item.startDistance}}km</view>
  243. </view>
  244. <image v-if="globalImages" :src="globalImages + 'images/static/upload/up.png'" style="width: 6rpx;height: 24rpx;margin-left: 12rpx;"></image>
  245. <view class="flex align-center" style="margin-left: 6rpx;">
  246. <view class="orgin"></view>
  247. <view class="item_addName">{{item.deliveryAddress}}</view>
  248. <view class="item_juli" v-if="item.endDistance">{{item.endDistance}}km</view>
  249. </view>
  250. <view class="flex align-center margin-top-sm" v-if="item.seatNum">
  251. <image v-if="globalImages" :src="globalImages + 'images/static/upload/person.png'" style="width: 24rpx;height: 30rpx;"></image>
  252. <view style="margin-left: 16rpx;" class="add_name">
  253. {{item.seatNum}}人乘车·{{item.isFriends === '1' ? '有亲友' : '无亲友'}}
  254. <text v-if="item.isHighSpeedPrice && item.isHighSpeedPrice == 1">·司机承担</text>
  255. <text v-if="item.isHighSpeedPrice && item.isHighSpeedPrice == 2">·乘客承担</text>
  256. <text v-if="item.isHighSpeedPrice && item.isHighSpeedPrice == 3">·费用AA</text>
  257. </view>
  258. </view>
  259. </view>
  260. <u-line color="#E6E6E6" />
  261. <view class="flex justify-between padding">
  262. <view class="item_xunzhao" style="font-size: 28rpx;">正在寻找顺路乘客...</view>
  263. <view class="item_btns" v-if="item.messageCount && item.messageCount == 1">已邀请</view>
  264. <view class="item_btn" v-else @tap="yqSave(item)">邀请接单</view>
  265. </view>
  266. </view>
  267. <view class="empty" v-if="list.length == 0">
  268. <view style="width: 100%;margin: 0 auto;text-align: center;">
  269. <image v-if="globalImages" :src="globalImages + 'images/static/image/emety.png'" style="width: 300rpx;height: 300rpx;"></image>
  270. <view style="color: #CCCCCC;">暂无顺路内容</view>
  271. </view>
  272. </view>
  273. </view>
  274. <u-popup v-model="showpay" mode="bottom">
  275. <view class="popup_pay">
  276. <view class=" margin-top padding-lr radius">
  277. <view style="padding: 0 20upx;margin-top: 36rpx;">
  278. <view
  279. style="display: flex;height: 100upx;align-items: center;padding: 20upx 0;justify-content: center;"
  280. v-for="(item,index) in openLists" :key='index'>
  281. <image :src="item.image" style="width: 55upx;height: 55upx;border-radius: 50upx;">
  282. </image>
  283. <view style="font-size: 30upx;margin-left: 20upx;width: 70%;">
  284. {{item.name}} <text @click="goconz" class="margin-left text-sm" style="color:#3699FF;"
  285. v-if="item.id==3">去充值</text>
  286. </view>
  287. <radio-group name="openWay" style="margin-left: 45rpx;" @tap='selectWay(item)'>
  288. <label class="tui-radio">
  289. <radio color="#3699FF" :checked="openWay == item.id ? true : false" />
  290. </label>
  291. </radio-group>
  292. </view>
  293. </view>
  294. </view>
  295. <view class="pay_btns" @click="pay()">确认支付</view>
  296. </view>
  297. </u-popup>
  298. <view class="sos" @click="goJinji()">
  299. <image v-if="globalImages" :src="globalImages + 'images/static/image/my/jjqz.png'" mode=""></image>
  300. </view>
  301. </view>
  302. </template>
  303. <script>
  304. import QQMapWX from '@/components/qqmap-wx-jssdk1.2/qqmap-wx-jssdk.js'
  305. import { waitForGlobalImages } from '@/utils/globalImageLoader'
  306. export default {
  307. data() {
  308. return {
  309. list: [],
  310. indentNumber: '',
  311. order: [],
  312. showpay: false,
  313. openWay: 1,
  314. openLists: [],
  315. creditScore: 0,
  316. AllcreditScore: 0,
  317. zxMsg: '是',
  318. myPhone: '',
  319. timer: null, //订单详情定时器
  320. qqmapsdk: {}, // 腾讯地图小程序的SDK
  321. latitude: '',
  322. longitude: '',
  323. covers: [], // 地图上面的标记点
  324. to: { // 目的地坐标
  325. latitude: '',
  326. longitude: '',
  327. },
  328. polyline: [], //路线
  329. polylines: '',
  330. globalImages: ''
  331. }
  332. },
  333. onLoad(option) {
  334. waitForGlobalImages().then((path) => {
  335. console.log('✅ 全局图片路径:', path)
  336. this.globalImages = path
  337. })
  338. this.getInitMap()
  339. this.zxMsg = this.$queue.getData('zxMsg');
  340. if (option.indentNumber) {
  341. this.indentNumber = option.indentNumber
  342. this.getDetail()
  343. }
  344. this.getUserInfo();
  345. // #ifdef MP-WEIXIN
  346. this.openLists = [{
  347. id: 1,
  348. image: '../../static/image/icon_weixin.png',
  349. name: '微信'
  350. }, {
  351. id: 3,
  352. image: '../../static/image/lingian.png',
  353. name: '余额'
  354. }]
  355. // #endif
  356. // #ifdef H5
  357. let ua = navigator.userAgent.toLowerCase();
  358. if (ua.indexOf('micromessenger') !== -1) {
  359. //公众号是否自动登录 443
  360. this.$Request.get('/app/common/type/443').then(res => {
  361. if (res.data && res.data.value && res.data.value == '是') {
  362. this.openLists = [{
  363. id: 1,
  364. image: '../../static/image/icon_weixin.png',
  365. name: '微信'
  366. }, {
  367. id: 3,
  368. image: '../../static/image/lingian.png',
  369. name: '余额'
  370. }];
  371. this.openWay = 1;
  372. } else {
  373. this.openLists = [{
  374. id: 3,
  375. image: '../../static/image/lingian.png',
  376. name: '余额'
  377. }];
  378. this.openWay = 3;
  379. }
  380. })
  381. } else {
  382. this.openLists = [{
  383. id: 2,
  384. image: '../../static/image/zhifubao.png',
  385. name: '支付宝'
  386. }, {
  387. id: 3,
  388. image: '../../static/image/lingian.png',
  389. name: '余额'
  390. }];
  391. this.openWay = 3;
  392. }
  393. // #endif
  394. // #ifdef APP-PLUS
  395. this.openLists = [{
  396. id: 1,
  397. image: '../../static/image/icon_weixin.png',
  398. name: '微信'
  399. },
  400. {
  401. id: 2,
  402. image: '../../static/image/zhifubao.png',
  403. name: '支付宝'
  404. }, {
  405. id: 3,
  406. image: '../../static/image/lingian.png',
  407. name: '余额'
  408. }
  409. ]
  410. this.openWay = 3;
  411. // #endif
  412. let that = this
  413. that.$Request.getT('/app/common/type/364').then(res => { // 每次取消扣除的信用分数量 364
  414. if (res.code == 0) {
  415. if (res.data && res.data.value) {
  416. that.creditScore = res.data.value
  417. }
  418. }
  419. })
  420. that.$Request.getT('/app/common/type/365').then(res => { // 低于多少不能接单和下单 365
  421. if (res.code == 0) {
  422. if (res.data && res.data.value) {
  423. that.AllcreditScore = res.data.value
  424. }
  425. }
  426. })
  427. },
  428. onShow() {
  429. if (this.indentNumber) {
  430. this.timer = setInterval(() => {
  431. this.getDetail()
  432. }, 5000)
  433. }
  434. },
  435. onHide() {
  436. clearInterval(this.timer)
  437. this.timer = null
  438. },
  439. onUnload() {
  440. clearInterval(this.timer)
  441. this.timer = null
  442. },
  443. methods: {
  444. getUserInfo(){
  445. this.$Request.getT('/app/user/selectUserById').then(res => {
  446. console.log(res)
  447. if (res.code == 0) {
  448. this.myPhone = res.data.phone
  449. this.$queue.setData("userId", res.data.userId);
  450. this.$queue.setData("mobile", res.data.phone);
  451. this.$queue.setData("invitationCode", res.data.invitationCode ? res.data.invitationCode :
  452. '0');
  453. this.$queue.setData("status", res.data.status);
  454. this.$queue.setData("nickName", res.data.nickName ? res.data.nickName : res
  455. .data.userName);
  456. this.$queue.setData("image_url", this.image_url);
  457. }
  458. });
  459. },
  460. goMsg() {
  461. let userId = this.$queue.getData('userId');
  462. let data = {
  463. userId: userId,
  464. focusedUserId: this.order.driver.userId,
  465. ordersId: this.indentNumber,
  466. userType: 1
  467. }
  468. this.$Request.postJson('/app/chat/insertChatConversation', data).then(res => {
  469. if (res.code == 0) {
  470. let id = userId == res.data.userId ? res.data.focusedUserId : res.data.userId
  471. uni.navigateTo({
  472. url: '/my/kefu/im?chatConversationId=' + res.data.chatConversationId +
  473. '&byUserId=' + id + '&ordersId=' + res.data.ordersId
  474. })
  475. }
  476. })
  477. },
  478. //初始化地图
  479. getInitMap() {
  480. this.$Request.getT('/app/common/type/128').then(res => { //用户端腾讯地图key
  481. if (res.code === 0) {
  482. this.qqmapsdk = new QQMapWX({
  483. key: res.data.value // 自己申请的key值
  484. })
  485. }
  486. });
  487. },
  488. goJinji() {
  489. uni.navigateTo({
  490. url: '/my/setting/jinji'
  491. })
  492. },
  493. yqSave(item) {
  494. uni.showModal({
  495. title: '温馨提示',
  496. content: '确认邀请当前司机接单吗?',
  497. showCancel: true,
  498. cancelText: '取消',
  499. confirmText: '确认',
  500. success: res => {
  501. if (res.confirm) {
  502. this.$Request.postT('/app/driverRoute/insertMessageByDriver?ordersId=' + this
  503. .indentNumber + '&driverRouteId=' + item.driverRouteId)
  504. .then(res => {
  505. if (res.code == 0) {
  506. uni.showToast({
  507. title: '邀请成功,等待车主同意!'
  508. });
  509. setTimeout(d => {
  510. this.getDetail()
  511. }, 1500)
  512. } else {
  513. uni.hideLoading();
  514. uni.showModal({
  515. showCancel: false,
  516. title: '订单邀请失败',
  517. content: res.msg
  518. });
  519. }
  520. });
  521. }
  522. }
  523. });
  524. },
  525. goconz() {
  526. uni.navigateTo({
  527. url: '/my/wallet/Txmoney'
  528. })
  529. },
  530. copyClick(copy) {
  531. uni.setClipboardData({
  532. data: copy,
  533. success: function(res) {
  534. uni.getClipboardData({
  535. success: function(res) {
  536. uni.showToast({
  537. title: "复制成功",
  538. icon: 'none',
  539. });
  540. },
  541. });
  542. },
  543. });
  544. },
  545. // 一键导航
  546. openMap(latitude, longitude, name) {
  547. uni.openLocation({
  548. latitude: latitude - 0, //要去的纬度-地址
  549. longitude: longitude - 0, //要去的经度-地址
  550. name: name, //地址名称
  551. address: name, //详细地址名称
  552. success: function() {
  553. console.log('导航成功');
  554. },
  555. fail: function(error) {
  556. console.log(error)
  557. }
  558. });
  559. },
  560. goriderMap() { //查看司机位置
  561. uni.navigateTo({
  562. url: '/my/order/orderMap?indentNumber=' + this.order.indentNumber
  563. })
  564. },
  565. // 去评价
  566. bindcomment(e) {
  567. uni.navigateTo({
  568. url: '/my/order/comments?indentNumber=' + this.order.indentNumber + '&riderUserId=' + this
  569. .order.riderUserId
  570. })
  571. },
  572. bindtousu(e) { //投诉
  573. uni.navigateTo({
  574. url: '/my/order/complaint?indentNumber=' + this.order.indentNumber + '&riderUserId=' + this
  575. .order.riderUserId
  576. })
  577. },
  578. selectWay: function(item) {
  579. this.openWay = item.id;
  580. },
  581. orderpay() {
  582. this.showpay = true
  583. },
  584. bindPhone() {
  585. let ysPhone = this.$queue.getData('ysPhone');
  586. if (ysPhone === '是') {
  587. this.$Request.getT('/app/user/insertVirtualPhone?phoneA=' + this.order.driver.phone + '&phoneB=' + this.myPhone).then(
  588. res => {
  589. if (res.code == 0) {
  590. if (res.data) {
  591. uni.makePhoneCall({
  592. phoneNumber: res.data //仅为示例
  593. });
  594. } else {
  595. this.$queue.showToast('手机号获取失败!');
  596. }
  597. } else {
  598. this.$queue.showToast(res.msg);
  599. }
  600. });
  601. } else {
  602. uni.makePhoneCall({
  603. phoneNumber: this.order.driver.phone //仅为示例
  604. });
  605. }
  606. // uni.makePhoneCall({
  607. // phoneNumber: this.order.driver.phone //仅为示例
  608. // });
  609. },
  610. getsjList() {
  611. this.$Request.getT('/app/driverRoute/selectDriverRouteList?page=1&limit=40&status=1&ordersId=' + this
  612. .indentNumber + '&shipCity=' + this.order.shipCity)
  613. .then(res => {
  614. if (res.code === 0 && res.data) {
  615. this.list = res.data.list
  616. }
  617. uni.hideLoading()
  618. });
  619. },
  620. getDetail() {
  621. this.$Request.getT('/app/orders/selectOrdersDetails?ordersId=' + this.indentNumber).then(res => {
  622. if (res.code === 0) {
  623. this.order = res.data
  624. this.getsjList();
  625. this.latitude = this.order.shipAddressLatitude
  626. this.longitude = this.order.shipAddressLongitude
  627. this.to.latitude = this.order.deliveryAddressLatitude
  628. this.to.longitude = this.order.deliveryAddressLongitude
  629. this.covers = [{
  630. id: 1,
  631. latitude: this.order.shipAddressLatitude,
  632. longitude: this.order.shipAddressLongitude,
  633. iconPath: '../../static/image/qi.png',
  634. width: 32,
  635. height: 44,
  636. callout: { //自定义标记点上方的气泡窗口 点击有效
  637. content: this.order.shipAddress, //文本
  638. color: '#333333', //文字颜色
  639. fontSize: 10, //文本大小
  640. padding: 10, //附近留白
  641. borderRadius: 6, //边框圆角
  642. bgColor: '#FFFFFF', //背景颜色
  643. display: 'ALWAYS', //常显
  644. },
  645. }, {
  646. id: 2,
  647. latitude: this.order.deliveryAddressLatitude,
  648. longitude: this.order.deliveryAddressLongitude,
  649. iconPath: '../../static/image/zd.png',
  650. width: 32,
  651. height: 44,
  652. callout: { //自定义标记点上方的气泡窗口 点击有效
  653. content: this.order.deliveryAddress, //文本
  654. color: '#333333', //文字颜色
  655. fontSize: 10, //文本大小
  656. padding: 10, //附近留白
  657. borderRadius: 6, //边框圆角
  658. bgColor: '#FFFFFF', //背景颜色
  659. display: 'ALWAYS', //常显
  660. },
  661. }]
  662. this.polylines = this.order.polyline
  663. // #ifdef MP-WEIXIN
  664. this.routePlanning()
  665. // #endif
  666. }
  667. uni.hideLoading()
  668. });
  669. },
  670. //规划路线
  671. routePlanning() {
  672. let that = this
  673. that.qqmapsdk.direction({
  674. mode: 'driving', // 驾车
  675. from: { // 起始位置(当前位置)坐标
  676. latitude: that.latitude,
  677. longitude: that.longitude
  678. },
  679. to: that.to, // 目的地位置坐标
  680. success(res) {
  681. console.log(res, '=======')
  682. // var coors = JSON.parse(that.polylines)
  683. // console.log(coors,'11111111111111')
  684. var coors = res.result.routes[0].polyline
  685. // console.log(coors2,'11111111111111')
  686. var pl = [] // 点串数组
  687. // 坐标解压(返回的点串坐标,通过前向差分进行压缩)
  688. var kr = 1000000
  689. for (var i = 2; i < coors.length; i++) {
  690. coors[i] = Number(coors[i - 2]) + Number(coors[i]) / kr
  691. }
  692. // 将解压后的坐标放入点串数组pl中
  693. for (var i = 0; i < coors.length; i += 2) {
  694. pl.push({
  695. latitude: coors[i],
  696. longitude: coors[i + 1]
  697. })
  698. }
  699. // 设置polyline属性,将路线显示出来,将解压坐标第一个数据作为起点
  700. that.polyline = [{
  701. points: pl,
  702. color: '#346EF6',
  703. width: 4
  704. }]
  705. }
  706. })
  707. },
  708. backindex() {
  709. uni.switchTab({
  710. url: '/pages/index/index'
  711. })
  712. },
  713. // 取消订单
  714. bindorderOff() {
  715. let content = ''
  716. uni.showModal({
  717. title: '温馨提示',
  718. content: '确认取消行程吗?',
  719. showCancel: true,
  720. cancelText: '取消',
  721. confirmText: '确认',
  722. success: res => {
  723. if (res.confirm) {
  724. this.$Request.postT('/app/orders/cancelOrders?ordersId=' + this.indentNumber + '&isDriver=0')
  725. .then(res => {
  726. if (res.code == 0) {
  727. uni.showToast({
  728. title: '订单取消成功'
  729. });
  730. this.getDetail()
  731. } else {
  732. uni.hideLoading();
  733. uni.showModal({
  734. showCancel: false,
  735. title: '订单失败',
  736. content: res.msg
  737. });
  738. }
  739. });
  740. }
  741. }
  742. });
  743. },
  744. pay() {
  745. if (this.openWay == 0) {
  746. this.$queue.showToast('请选择支付方式!')
  747. return;
  748. }
  749. this.showpay = false;
  750. if (this.openWay == 1) {
  751. // #ifdef APP-PLUS
  752. let data = {
  753. ordersId: this.indentNumber,
  754. type: 1
  755. }
  756. // 微信APP支付 根据订单id获取支付信息
  757. this.$Request.postT("/app/wxPay/payOrders", data).then(res => {
  758. console.log(JSON.stringify(res), '微信支付信息')
  759. this.isCheckPay(res.code, 'wxpay', JSON.stringify(res.data));
  760. });
  761. // #endif
  762. // #ifdef MP-WEIXIN
  763. let data = {
  764. ordersId: this.indentNumber,
  765. type: 3
  766. }
  767. let that = this
  768. that.$Request.postT("/app/wxPay/payOrders", data).then(res => {
  769. if (res.code == 0) {
  770. uni.requestPayment({
  771. provider: 'wxpay',
  772. timeStamp: res.data.timestamp,
  773. nonceStr: res.data.noncestr,
  774. package: res.data.package,
  775. signType: res.data.signType,
  776. paySign: res.data.sign,
  777. success: function(res) {
  778. console.log(res)
  779. uni.hideLoading();
  780. uni.showToast({
  781. title: '支付成功',
  782. icon: 'none'
  783. });
  784. setTimeout(function() {
  785. uni.switchTab({
  786. url: '/pages/order/order'
  787. })
  788. }, 1000)
  789. },
  790. fail: function(err) {
  791. console.log('fail:' + JSON.stringify(err));
  792. uni.hideLoading();
  793. that.$queue.showToast('支付失败');
  794. }
  795. });
  796. } else {
  797. uni.showToast({
  798. title: res.msg,
  799. icon: 'none'
  800. })
  801. }
  802. });
  803. // #endif
  804. // #ifdef H5
  805. let ua = navigator.userAgent.toLowerCase();
  806. if (ua.indexOf('micromessenger') !== -1) {
  807. let data = {
  808. ordersId: this.indentNumber,
  809. type: 2
  810. }
  811. this.$Request.postT("/app/wxPay/payOrders", data).then(res => {
  812. if (res.code == 0) {
  813. this.callPay(res.data);
  814. } else {
  815. uni.showToast({
  816. title: res.msg,
  817. icon: 'none'
  818. })
  819. }
  820. });
  821. }
  822. // #endif
  823. } else if (this.openWay == 2) {
  824. // APP支付宝支付
  825. // #ifdef H5
  826. let data = {
  827. ordersId: this.indentNumber,
  828. type: 1
  829. }
  830. this.$Request.postT("/app/aliPay/payOrders", data).then(res => {
  831. if (res.code == 0) {
  832. const div = document.createElement('div')
  833. div.innerHTML = res.data //此处form就是后台返回接收到的数据
  834. document.body.appendChild(div)
  835. document.forms[0].submit()
  836. } else {
  837. uni.showToast({
  838. icon: 'none',
  839. title: '支付失败!'
  840. });
  841. }
  842. });
  843. // #endif
  844. // #ifdef APP
  845. let data = {
  846. ordersId: this.indentNumber,
  847. type: 2
  848. }
  849. this.$Request.postT("/app/aliPay/payOrders", data).then(res => {
  850. console.log(JSON.stringify(res), '支付宝支付信息')
  851. this.isCheckPay(res.code, 'alipay', res.data)
  852. });
  853. // #endif
  854. } else if (this.openWay == 3) {
  855. let data = {
  856. ordersId: this.indentNumber
  857. }
  858. let that = this
  859. that.$Request.postT("/app/orders/payOrders", data).then(res => {
  860. if (res.code == 0) {
  861. uni.hideLoading();
  862. uni.showToast({
  863. title: '支付成功',
  864. icon: 'none'
  865. });
  866. setTimeout(function() {
  867. that.getDetail();
  868. }, 1000)
  869. } else {
  870. uni.showToast({
  871. title: res.msg,
  872. icon: 'none'
  873. })
  874. }
  875. });
  876. }
  877. },
  878. callPay: function(response) {
  879. if (typeof WeixinJSBridge === "undefined") {
  880. if (document.addEventListener) {
  881. document.addEventListener('WeixinJSBridgeReady', this.onBridgeReady(response), false);
  882. } else if (document.attachEvent) {
  883. document.attachEvent('WeixinJSBridgeReady', this.onBridgeReady(response));
  884. document.attachEvent('onWeixinJSBridgeReady', this.onBridgeReady(response));
  885. }
  886. } else {
  887. this.onBridgeReady(response);
  888. }
  889. },
  890. onBridgeReady: function(response) {
  891. let that = this;
  892. // if (!response.package) {
  893. // return;
  894. // }
  895. console.log(response, 111111)
  896. WeixinJSBridge.invoke(
  897. 'getBrandWCPayRequest', {
  898. "appId": response.appid, //公众号名称,由商户传入
  899. "timeStamp": response.timestamp, //时间戳,自1970年以来的秒数
  900. "nonceStr": response.noncestr, //随机串
  901. "package": response.package,
  902. "signType": response.signType, //微信签名方式:
  903. "paySign": response.sign //微信签名
  904. },
  905. function(res) {
  906. console.log(res, '/*-/*-/*-')
  907. if (res.err_msg === "get_brand_wcpay_request:ok") {
  908. // 使用以上方式判断前端返回,微信团队郑重提示:
  909. //res.err_msg将在用户支付成功后返回ok,但并不保证它绝对可靠。
  910. uni.showLoading({
  911. title: '支付成功'
  912. });
  913. setTimeout(function() {
  914. uni.hideLoading();
  915. that.getDetail();
  916. }, 1000);
  917. } else {
  918. uni.hideLoading();
  919. }
  920. WeixinJSBridge.log(response.err_msg);
  921. }
  922. );
  923. },
  924. isCheckPay(status, name, order) {
  925. if (status == 0) {
  926. this.setPayment(name, order);
  927. } else {
  928. uni.hideLoading();
  929. uni.showToast({
  930. title: '支付信息有误',
  931. icon: 'none'
  932. });
  933. }
  934. },
  935. setPayment(name, order) {
  936. console.log(name, '*-*-*', order)
  937. uni.requestPayment({
  938. provider: name,
  939. orderInfo: order, //微信、支付宝订单数据
  940. success: function(res) {
  941. console.log(res)
  942. uni.hideLoading();
  943. uni.showLoading({
  944. title: '支付成功'
  945. });
  946. setTimeout(function() {
  947. that.getDetail();
  948. }, 1000);
  949. },
  950. fail: function(err) {
  951. console.log(err)
  952. uni.hideLoading();
  953. },
  954. complete() {
  955. uni.hideLoading();
  956. }
  957. });
  958. },
  959. }
  960. }
  961. </script>
  962. <style lang="less">
  963. page {
  964. background: #F5F5F5;
  965. }
  966. .orderMap {
  967. width: 100%;
  968. height: 230rpx;
  969. border-radius: 14rpx;
  970. }
  971. .sos {
  972. width: 70rpx;
  973. height: 70rpx;
  974. position: fixed;
  975. bottom: 290rpx;
  976. left: 32rpx;
  977. z-index: 99;
  978. image {
  979. width: 70rpx;
  980. height: 70rpx;
  981. }
  982. }
  983. .bg {
  984. background: #FFFFFF;
  985. }
  986. .order_money {
  987. font-family: PingFang SC;
  988. font-weight: 800;
  989. font-size: 38rpx;
  990. color: #FF4B36;
  991. }
  992. .green {
  993. width: 16rpx;
  994. height: 16rpx;
  995. background: #1FC657;
  996. border-radius: 50%;
  997. margin-right: 20rpx;
  998. }
  999. .orgin {
  1000. width: 16rpx;
  1001. height: 16rpx;
  1002. background: #FBAC04;
  1003. border-radius: 50%;
  1004. margin-right: 20rpx;
  1005. }
  1006. .boxs {
  1007. background: #FFFFFF;
  1008. border-radius: 24rpx;
  1009. margin: 30rpx;
  1010. padding: 30rpx;
  1011. }
  1012. .boxa {
  1013. background: #FFFFFF;
  1014. border-radius: 24rpx;
  1015. margin: 30rpx;
  1016. padding: 30rpx 0;
  1017. }
  1018. .sj_name {
  1019. font-family: PingFang SC;
  1020. font-weight: 500;
  1021. font-size: 24rpx;
  1022. color: #999999;
  1023. }
  1024. .top_box {
  1025. width: 686rpx;
  1026. // height: 370rpx;
  1027. background: #FFFFFF;
  1028. border-radius: 24rpx;
  1029. margin: 30rpx;
  1030. padding: 30rpx;
  1031. position: relative;
  1032. margin-top: -230rpx;
  1033. z-index: 99;
  1034. .cph_item {
  1035. width: 624rpx;
  1036. height: 220rpx;
  1037. margin: 0 auto;
  1038. display: flex;
  1039. justify-content: space-between;
  1040. // align-items: center;
  1041. image {
  1042. width: 250rpx;
  1043. height: 110rpx;
  1044. margin-top: 30rpx;
  1045. }
  1046. .cphitem_name {
  1047. font-family: PingFang SC;
  1048. font-weight: 800;
  1049. font-size: 38rpx;
  1050. color: #1A1A1A;
  1051. }
  1052. .blackdian {
  1053. width: 6rpx;
  1054. height: 6rpx;
  1055. background: #333333;
  1056. border-radius: 50%;
  1057. margin-right: 10rpx;
  1058. margin-left: 10rpx;
  1059. }
  1060. .sj_sg {
  1061. width: 1rpx;
  1062. height: 20rpx;
  1063. border: 1rpx solid #A0A0A0;
  1064. margin: 0rpx 20rpx;
  1065. }
  1066. }
  1067. .topbox_addview {
  1068. width: 624rpx;
  1069. min-height: 100rpx;
  1070. background: #EFF4FF;
  1071. border-radius: 16rpx;
  1072. border: 1px solid #346EF6;
  1073. margin: 0 auto;
  1074. // display: flex;
  1075. align-items: center;
  1076. padding: 20rpx 30rpx;
  1077. image {
  1078. width: 6rpx;
  1079. height: 24rpx;
  1080. margin-left: 6rpx;
  1081. }
  1082. .topbox_title {
  1083. font-family: PingFang SC;
  1084. font-weight: 500;
  1085. font-size: 28rpx;
  1086. color: #151515;
  1087. }
  1088. }
  1089. }
  1090. .topbox_addName {
  1091. font-family: PingFang SC;
  1092. font-weight: 800;
  1093. font-size: 28rpx;
  1094. color: #1A1A1A;
  1095. width: 520rpx;
  1096. white-space: nowrap;
  1097. text-overflow: ellipsis;
  1098. overflow: hidden;
  1099. }
  1100. .top_view {
  1101. width: 750rpx;
  1102. height: 325rpx;
  1103. background: linear-gradient(to bottom, #346EF6 0%, #8EB0FF 70%, #F5F5F5 90%);
  1104. padding: 40rpx;
  1105. position: relative;
  1106. .top_title {
  1107. font-family: PingFang SC;
  1108. font-weight: bold;
  1109. font-size: 38rpx;
  1110. color: #FFFFFF;
  1111. }
  1112. }
  1113. .list_item {
  1114. width: 686rpx;
  1115. // height: 366rpx;
  1116. background: #FFFFFF;
  1117. border-radius: 24rpx;
  1118. margin-top: 20rpx;
  1119. .item_time {
  1120. font-family: PingFang SC;
  1121. font-weight: bold;
  1122. font-size: 28rpx;
  1123. color: #242424;
  1124. }
  1125. .item_addName {
  1126. font-family: PingFang SC;
  1127. font-weight: 500;
  1128. font-size: 28rpx;
  1129. color: #1A1A1A;
  1130. width: 520rpx;
  1131. white-space: nowrap;
  1132. text-overflow: ellipsis;
  1133. overflow: hidden;
  1134. }
  1135. .item_juli {
  1136. font-family: PingFang SC;
  1137. font-weight: 500;
  1138. font-size: 26rpx;
  1139. color: #999999;
  1140. width: 100rpx;
  1141. text-align: right;
  1142. }
  1143. .item_xunzhao {
  1144. font-family: PingFang SC;
  1145. font-weight: 500;
  1146. font-size: 26rpx;
  1147. color: #999999;
  1148. }
  1149. .item_btn {
  1150. width: 150rpx;
  1151. height: 58rpx;
  1152. background: #346EF6;
  1153. border-radius: 29rpx;
  1154. text-align: center;
  1155. line-height: 58rpx;
  1156. font-family: PingFang SC;
  1157. font-weight: 500;
  1158. font-size: 24rpx;
  1159. color: #FFFFFF;
  1160. }
  1161. .item_btns {
  1162. width: 150rpx;
  1163. height: 58rpx;
  1164. border: 2px solid #232323;
  1165. border-radius: 29rpx;
  1166. text-align: center;
  1167. line-height: 52rpx;
  1168. font-family: PingFang SC;
  1169. font-weight: 500;
  1170. font-size: 24rpx;
  1171. color: #232323;
  1172. }
  1173. .item_shunlu {
  1174. font-family: PingFang SC;
  1175. font-weight: bold;
  1176. font-size: 28rpx;
  1177. color: #346EF6;
  1178. margin-left: 20rpx;
  1179. }
  1180. image {
  1181. width: 68rpx;
  1182. height: 68rpx;
  1183. }
  1184. }
  1185. .box {
  1186. background: #FFFFFF;
  1187. border-radius: 24rpx;
  1188. padding: 30rpx;
  1189. margin: 30rpx;
  1190. }
  1191. .titls {
  1192. font-size: 32rpx;
  1193. font-family: PingFang SC;
  1194. font-weight: bold;
  1195. color: #333333;
  1196. }
  1197. .titls2 {
  1198. font-size: 32rpx;
  1199. font-family: PingFang SC;
  1200. color: #333333;
  1201. }
  1202. .bb {
  1203. width: 110rpx;
  1204. height: 38rpx;
  1205. // background: #49A5FF;
  1206. // opacity: 0.32;
  1207. background-color: rgba(73, 165, 255, 0.3);
  1208. border-radius: 4rpx;
  1209. font-size: 24rpx;
  1210. font-family: PingFang SC;
  1211. font-weight: 500;
  1212. color: #359CFF;
  1213. display: flex;
  1214. align-items: center;
  1215. justify-content: center;
  1216. margin-left: 10rpx;
  1217. }
  1218. .addbox {
  1219. display: flex;
  1220. align-items: center;
  1221. justify-content: space-between;
  1222. padding: 0 30rpx;
  1223. height: 110rpx;
  1224. border-radius: 16rpx;
  1225. }
  1226. .add_cont {
  1227. display: flex;
  1228. align-items: center;
  1229. }
  1230. .empty {
  1231. width: 100%;
  1232. background: #ffffff;
  1233. height: 800rpx;
  1234. margin-top: 20rpx;
  1235. padding-top: 200rpx;
  1236. }
  1237. .order_btn {
  1238. display: flex;
  1239. align-items: center;
  1240. justify-content: flex-end;
  1241. margin-top: 30rpx;
  1242. .btn3 {
  1243. width: 150rpx;
  1244. height: 60rpx;
  1245. border: 1px solid #CCCCCC;
  1246. border-radius: 50rpx;
  1247. font-size: 24rpx;
  1248. font-family: PingFang SC;
  1249. font-weight: 500;
  1250. color: #999999;
  1251. line-height: 60rpx;
  1252. display: flex;
  1253. align-items: center;
  1254. justify-content: center;
  1255. }
  1256. .btn2 {
  1257. width: 150rpx;
  1258. height: 60rpx;
  1259. background: #EFF4FF;
  1260. border: 1px solid #346EF6;
  1261. border-radius: 50rpx;
  1262. font-size: 24rpx;
  1263. font-family: PingFang SC;
  1264. line-height: 60rpx;
  1265. font-weight: 500;
  1266. color: #346EF6;
  1267. display: flex;
  1268. align-items: center;
  1269. justify-content: center;
  1270. }
  1271. .btn1 {
  1272. width: 150rpx;
  1273. height: 60rpx;
  1274. border: 1px solid #999999;
  1275. border-radius: 50rpx;
  1276. font-size: 24rpx;
  1277. font-family: PingFang SC;
  1278. font-weight: 500;
  1279. line-height: 60rpx;
  1280. color: #999999;
  1281. display: flex;
  1282. align-items: center;
  1283. justify-content: center;
  1284. }
  1285. }
  1286. .add_tit {
  1287. font-size: 30rpx;
  1288. font-family: PingFang SC;
  1289. font-weight: bold;
  1290. color: #333333;
  1291. }
  1292. .bg {
  1293. background: #F5F5F5;
  1294. }
  1295. .bgs {
  1296. background: #F5F8FF;
  1297. }
  1298. .tabber {
  1299. background: #FFFFFF;
  1300. position: fixed;
  1301. bottom: 0;
  1302. left: 0;
  1303. right: 0;
  1304. z-index: 9;
  1305. display: flex;
  1306. align-items: center;
  1307. justify-content: end;
  1308. padding: 10rpx 30rpx;
  1309. .btn {
  1310. flex: 1;
  1311. // width: 330rpx;
  1312. height: 78rpx;
  1313. border: 1px solid #A0A0A0;
  1314. border-radius: 16rpx;
  1315. font-size: 28rpx;
  1316. font-family: PingFang SC;
  1317. font-weight: bold;
  1318. color: #9C9C9C;
  1319. display: flex;
  1320. align-items: center;
  1321. justify-content: center;
  1322. }
  1323. .btn1 {
  1324. // width: 330rpx;
  1325. flex: 1;
  1326. height: 78rpx;
  1327. background: #346EF6;
  1328. border-radius: 16rpx;
  1329. font-size: 28rpx;
  1330. font-family: PingFang SC;
  1331. font-weight: bold;
  1332. color: #FFFFFF;
  1333. display: flex;
  1334. align-items: center;
  1335. justify-content: center;
  1336. }
  1337. .btn2 {
  1338. flex: 1;
  1339. // width: 330rpx;
  1340. height: 78rpx;
  1341. background: #3699FF;
  1342. border-radius: 16rpx;
  1343. font-size: 28rpx;
  1344. font-family: PingFang SC;
  1345. font-weight: bold;
  1346. color: #FFFFFF;
  1347. display: flex;
  1348. align-items: center;
  1349. justify-content: center;
  1350. }
  1351. }
  1352. /* 支付弹框 */
  1353. .popup_pay {
  1354. width: 100%;
  1355. }
  1356. .pay_btns {
  1357. width: 90%;
  1358. margin: 0 auto 40rpx;
  1359. text-align: center;
  1360. background: #3699FF;
  1361. height: 80rpx;
  1362. border-radius: 16rpx;
  1363. color: #ffffff;
  1364. line-height: 80rpx;
  1365. margin-top: 20rpx;
  1366. }
  1367. </style>