integral_order_details.vue 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944
  1. <template>
  2. <view :style="colorStyle">
  3. <view class='order-details'>
  4. <view v-if="cartInfo.product_type == 0">
  5. <view class='address'>
  6. <view class='name'>{{cartInfo.real_name}}<text class='phone'>{{cartInfo.user_phone}}</text></view>
  7. <view>{{cartInfo.user_address}}</view>
  8. </view>
  9. <view class='line'>
  10. <image src='@/static/images/line.jpg'></image>
  11. </view>
  12. </view>
  13. <view class="orderGoods" :class="cartInfo.product_type == 0?'':'on'">
  14. <view class='total'>共{{cartInfo.total_num}}件商品</view>
  15. <view class='goodWrapper'>
  16. <view class='item acea-row row-between-wrapper' @click="jumpCon(cartInfo.product_id)">
  17. <view class='pictrue'>
  18. <image :src='cartInfo.image'></image>
  19. </view>
  20. <view class='text'>
  21. <view class='acea-row row-between-wrapper'>
  22. <view class='name line1'>{{cartInfo.store_name}}</view>
  23. <view class='num'>x {{cartInfo.total_num}}</view>
  24. </view>
  25. <view class='attr line1' v-if="cartInfo.attrInfo">{{cartInfo.attrInfo.suk}}</view>
  26. <view class='money font-num'>
  27. <text v-if="parseFloat(cartInfo.integral)">{{cartInfo.integral}}积分</text>
  28. <text v-if="parseFloat(cartInfo.integral) && parseFloat(cartInfo.price)">+</text>
  29. <text v-if="parseFloat(cartInfo.price)">{{cartInfo.price}}元</text>
  30. </view>
  31. </view>
  32. </view>
  33. </view>
  34. </view>
  35. <view v-if="cartInfo.status!=0">
  36. <view class='wrapper' v-if='cartInfo.delivery_type=="fictitious" && cartInfo.product_type!=1'>
  37. <view class='item acea-row row-between'>
  38. <view>虚拟发货:</view>
  39. <view class='conter'>已发货,请注意查收</view>
  40. </view>
  41. <view class='item acea-row row-between' v-if="cartInfo.fictitious_content">
  42. <view>虚拟备注:</view>
  43. <view class='conter'>{{cartInfo.fictitious_content}}</view>
  44. </view>
  45. </view>
  46. <view class='wrapper' v-if="cartInfo.virtual_info && cartInfo.product_type==1">
  47. <view class='item acea-row row-between'>
  48. <view>卡密发货:</view>
  49. <view class='conter'>{{cartInfo.virtual_info}}</view>
  50. </view>
  51. <view class="item acea-row row-right">
  52. <view class="conter">
  53. <!-- #ifndef H5 -->
  54. <text class='copy' @tap='copyKm'>复制</text>
  55. <!-- #endif -->
  56. <!-- #ifdef H5 -->
  57. <text class='copy copy-data' :data-clipboard-text="cartInfo.virtual_info">复制</text>
  58. <!-- #endif -->
  59. </view>
  60. </view>
  61. </view>
  62. </view>
  63. <customForm :customForm="cartInfo.custom_form"></customForm>
  64. <view class='wrapper'>
  65. <view class='item acea-row row-between'>
  66. <view>订单编号:</view>
  67. <view class='conter acea-row row-middle row-right'>{{cartInfo.order_id}}
  68. <!-- #ifndef H5 -->
  69. <text class='copy' @tap='copy'>复制</text>
  70. <!-- #endif -->
  71. <!-- #ifdef H5 -->
  72. <text class='copy copy-data' :data-clipboard-text="cartInfo.order_id">复制</text>
  73. <!-- #endif -->
  74. </view>
  75. </view>
  76. <view class='item acea-row row-between'>
  77. <view>订单状态:</view>
  78. <view class='conter'>{{cartInfo.status_name}}</view>
  79. </view>
  80. <view class='item acea-row row-between'>
  81. <view>下单时间:</view>
  82. <view class='conter'>{{cartInfo.add_time}}</view>
  83. </view>
  84. <view class='item acea-row row-between' v-if="cartInfo.total_integral>0">
  85. <view>支付积分:</view>
  86. <view class='conter'>{{cartInfo.total_integral}}</view>
  87. </view>
  88. <view class='item acea-row row-between' v-if="cartInfo.total_price>0">
  89. <view>支付金额:</view>
  90. <view class='conter'>{{cartInfo.total_price}}</view>
  91. </view>
  92. <view class='item acea-row row-between' v-if="cartInfo.mark">
  93. <view>备注信息:</view>
  94. <view class='conter'>{{cartInfo.mark}}</view>
  95. </view>
  96. <view class='item acea-row row-between' v-if="cartInfo.delivery_type === 'express'">
  97. <view>快递单号:</view>
  98. <view class='conter'>{{cartInfo.delivery_id}}</view>
  99. </view>
  100. <view class='item acea-row row-between' v-if="cartInfo.delivery_type === 'express'">
  101. <view>快递公司:</view>
  102. <view class='conter'>{{cartInfo.delivery_name}}</view>
  103. </view>
  104. <view class='item acea-row row-between' v-if="cartInfo.delivery_type === 'send'">
  105. <view>送货人电话:</view>
  106. <view class='conter'>{{cartInfo.delivery_id}}</view>
  107. </view>
  108. <view class='item acea-row row-between' v-if="cartInfo.delivery_type === 'send'">
  109. <view>配送人姓名:</view>
  110. <view class='conter'>{{cartInfo.delivery_name}}</view>
  111. </view>
  112. <!-- <view class='item acea-row row-between' v-if="cartInfo.delivery_type === 'fictitious'">
  113. <view>虚拟发货:</view>
  114. <view class='conter'>>已发货,请注意查收</view>
  115. </view> -->
  116. <view class='item acea-row row-between' v-if="cartInfo.fictitious_content">
  117. <view>虚拟备注:</view>
  118. <view class='conter'>{{cartInfo.fictitious_content}}</view>
  119. </view>
  120. <view class='item acea-row row-between' v-if="cartInfo.delivery_type === 'send'">
  121. <view>配送核销码:</view>
  122. <view class='conter'>{{cartInfo.verify_code}}</view>
  123. </view>
  124. </view>
  125. <view style='height:120rpx;'></view>
  126. <view class='footer acea-row row-right row-middle' v-if="cartInfo.status>1">
  127. <view class='bnt bg-color' v-if="cartInfo.status==3" @tap='delOrder'>删除订单</view>
  128. <navigator class='bnt cancel' hover-class='none'
  129. v-if="cartInfo.delivery_id && cartInfo.delivery_type === 'express'"
  130. :url="'/pages/points_mall/logistics_details?order_id='+ cartInfo.order_id">查看物流
  131. </navigator>
  132. <view class='bnt bg-color' v-if="cartInfo.status==2" @tap='confirmOrder'>确认收货</view>
  133. </view>
  134. </view>
  135. <home v-if="navigation"></home>
  136. <!-- #ifdef MP -->
  137. <authorize v-if="isShowAuth" @authColse="authColse" @onLoadFun="onLoadFun"></authorize>
  138. <!-- #endif -->
  139. </view>
  140. </template>
  141. <script>
  142. import {
  143. integralOrderDetails,
  144. orderTake,
  145. orderDel
  146. } from '@/api/activity.js'
  147. import {
  148. openOrderRefundSubscribe
  149. } from '@/utils/SubscribeMessage.js';
  150. import {
  151. getUserInfo
  152. } from '@/api/user.js';
  153. import home from '@/components/home';
  154. import customForm from "@/components/customForm";
  155. import orderGoods from "@/components/orderGoods";
  156. import ClipboardJS from "@/plugin/clipboard/clipboard.js";
  157. import {
  158. toLogin
  159. } from '@/libs/login.js';
  160. import {
  161. mapGetters
  162. } from "vuex";
  163. import colors from "@/mixins/color";
  164. export default {
  165. components: {
  166. home,
  167. customForm,
  168. orderGoods
  169. },
  170. mixins: [colors],
  171. data() {
  172. return {
  173. order_id: '',
  174. evaluate: 0,
  175. cartInfo: [], //购物车产品
  176. orderInfo: {
  177. system_store: {},
  178. _status: {}
  179. }, //订单详情
  180. system_store: {},
  181. isGoodsReturn: false, //是否为退款订单
  182. status: {}, //订单底部按钮状态
  183. isClose: false,
  184. payMode: [{
  185. name: "微信支付",
  186. icon: "icon-weixinzhifu",
  187. value: 'weixin',
  188. title: '使用微信快捷支付',
  189. payStatus: true,
  190. },
  191. // #ifdef H5 || APP-PLUS
  192. {
  193. name: '支付宝支付',
  194. icon: 'icon-zhifubao',
  195. value: 'alipay',
  196. title: '使用线上支付宝支付',
  197. payStatus: true
  198. },
  199. // #endif
  200. {
  201. name: "余额支付",
  202. icon: "icon-yuezhifu",
  203. value: 'yue',
  204. title: '当前可用余额:',
  205. number: 0,
  206. payStatus: true
  207. },
  208. ],
  209. pay_close: false,
  210. pay_order_id: '',
  211. totalPrice: '0',
  212. isAuto: false, //没有授权的不会自动授权
  213. isShowAuth: false, //是否隐藏授权
  214. routineContact: '0'
  215. };
  216. },
  217. computed: mapGetters(['isLogin']),
  218. onLoad: function(options) {
  219. if (options.order_id) {
  220. this.$set(this, 'order_id', options.order_id);
  221. }
  222. },
  223. onShow() {
  224. uni.removeStorageSync('form_type_cart');
  225. if (this.isLogin) {
  226. this.getOrderInfo();
  227. // this.getUserInfo();
  228. } else {
  229. //#ifndef MP
  230. toLogin();
  231. //#endif
  232. //#ifdef MP
  233. this.isShowAuth = true;
  234. //#endif
  235. }
  236. },
  237. onHide: function() {
  238. this.isClose = true;
  239. },
  240. onReady: function() {
  241. // #ifdef H5 || APP-PLUS
  242. this.$nextTick(function() {
  243. const clipboard = new ClipboardJS(".copy-data");
  244. clipboard.on("success", () => {
  245. this.$util.Tips({
  246. title: '复制成功'
  247. });
  248. });
  249. });
  250. // #endif
  251. },
  252. methods: {
  253. /**
  254. * 登录授权回调
  255. *
  256. */
  257. onLoadFun: function() {
  258. this.getOrderInfo();
  259. this.isShowAuth = false;
  260. },
  261. // 授权关闭
  262. authColse: function(e) {
  263. this.isShowAuth = e
  264. },
  265. goGoodCall() {
  266. let self = this
  267. uni.navigateTo({
  268. url: `/pages/extension/customer_list/chat?orderId=${self.order_id}`
  269. })
  270. },
  271. openSubcribe: function(e) {
  272. let page = e;
  273. uni.showLoading({
  274. title: '正在加载',
  275. })
  276. openOrderRefundSubscribe().then(res => {
  277. uni.hideLoading();
  278. uni.navigateTo({
  279. url: page,
  280. });
  281. }).catch(() => {
  282. uni.hideLoading();
  283. });
  284. },
  285. /**
  286. * 事件回调
  287. *
  288. */
  289. onChangeFun: function(e) {
  290. let opt = e;
  291. let action = opt.action || null;
  292. let value = opt.value != undefined ? opt.value : null;
  293. (action && this[action]) && this[action](value);
  294. },
  295. /**
  296. * 拨打电话
  297. */
  298. makePhone: function() {
  299. uni.makePhoneCall({
  300. phoneNumber: this.system_store.phone
  301. })
  302. },
  303. /**
  304. * 打开地图
  305. *
  306. */
  307. showMaoLocation: function() {
  308. if (!this.system_store.latitude || !this.system_store.longitude) return this.$util.Tips({
  309. title: '缺少经纬度信息无法查看地图!'
  310. });
  311. uni.openLocation({
  312. latitude: parseFloat(this.system_store.latitude),
  313. longitude: parseFloat(this.system_store.longitude),
  314. scale: 8,
  315. name: this.system_store.name,
  316. address: this.system_store.address + this.system_store.detailed_address,
  317. success: function() {
  318. },
  319. });
  320. },
  321. /**
  322. * 关闭支付组件
  323. *
  324. */
  325. payClose: function() {
  326. this.pay_close = false;
  327. },
  328. /**
  329. * 打开支付组件
  330. *
  331. */
  332. pay_open: function() {
  333. this.pay_close = true;
  334. this.pay_order_id = this.orderInfo.order_id;
  335. this.totalPrice = this.orderInfo.pay_price;
  336. },
  337. /**
  338. * 支付成功回调
  339. *
  340. */
  341. pay_complete: function() {
  342. this.pay_close = false;
  343. this.pay_order_id = '';
  344. this.getOrderInfo();
  345. },
  346. /**
  347. * 支付失败回调
  348. *
  349. */
  350. pay_fail: function() {
  351. this.pay_close = false;
  352. this.pay_order_id = '';
  353. },
  354. /**
  355. * 获取用户信息
  356. *
  357. */
  358. getUserInfo: function() {
  359. let that = this;
  360. getUserInfo().then(res => {
  361. // #ifdef H5 || APP-PLUS
  362. that.payMode[2].number = res.data.now_money;
  363. // #endif
  364. // #ifdef MP
  365. that.payMode[1].number = res.data.now_money;
  366. // #endif
  367. that.$set(that, 'payMode', that.payMode);
  368. })
  369. },
  370. /**
  371. * 获取订单详细信息
  372. *
  373. */
  374. getOrderInfo: function() {
  375. let that = this;
  376. uni.showLoading({
  377. title: "正在加载中"
  378. });
  379. integralOrderDetails(this.order_id).then(res => {
  380. uni.hideLoading();
  381. that.$set(that, 'cartInfo', res.data);
  382. }).catch(err => {
  383. uni.hideLoading();
  384. that.$util.Tips({
  385. title: err
  386. }, '/pages/points_mall/exchange_record');
  387. });
  388. },
  389. /**
  390. *
  391. * 剪切订单号
  392. */
  393. // #ifndef H5
  394. copy: function() {
  395. let that = this;
  396. uni.setClipboardData({
  397. data: this.cartInfo.order_id
  398. });
  399. },
  400. copyKm: function() {
  401. let that = this;
  402. uni.setClipboardData({
  403. data: this.cartInfo.virtual_info
  404. });
  405. },
  406. // #endif
  407. /**
  408. * 打电话
  409. */
  410. goTel: function() {
  411. uni.makePhoneCall({
  412. phoneNumber: this.orderInfo.delivery_id
  413. })
  414. },
  415. /**
  416. * 设置底部按钮
  417. *
  418. */
  419. getOrderStatus: function() {
  420. let orderInfo = this.orderInfo || {},
  421. _status = orderInfo._status || {
  422. _type: 0
  423. },
  424. status = {};
  425. let type = parseInt(_status._type),
  426. delivery_type = orderInfo.delivery_type,
  427. seckill_id = orderInfo.seckill_id ? parseInt(orderInfo.seckill_id) : 0,
  428. bargain_id = orderInfo.bargain_id ? parseInt(orderInfo.bargain_id) : 0,
  429. combination_id = orderInfo.combination_id ? parseInt(orderInfo.combination_id) : 0;
  430. status = {
  431. type: type == 9 ? -9 : type,
  432. class_status: 0
  433. };
  434. if (type == 1 && combination_id > 0) status.class_status = 1; //查看拼团
  435. if (type == 2 && delivery_type == 'express') status.class_status = 2; //查看物流
  436. if (type == 2) status.class_status = 3; //确认收货
  437. if (type == 4 || type == 0) status.class_status = 4; //删除订单
  438. if (!seckill_id && !bargain_id && !combination_id && (type == 3 || type == 4)) status.class_status =
  439. 5; //再次购买
  440. this.$set(this, 'status', status);
  441. },
  442. /**
  443. * 去拼团详情
  444. *
  445. */
  446. goJoinPink: function() {
  447. uni.navigateTo({
  448. url: '/pages/activity/goods_combination_status/index?id=' + this.orderInfo.pink_id,
  449. });
  450. },
  451. confirmOrder() {
  452. let that = this;
  453. // #ifdef MP
  454. if (wx.openBusinessView && this.cartInfo.order_shipping_open && this.cartInfo
  455. .trade_no && this.cartInfo.total_price>0) {
  456. uni.showLoading({
  457. title: '加载中'
  458. });
  459. wx.openBusinessView({
  460. businessType: 'weappOrderConfirm',
  461. extraData: {
  462. transaction_id: this.cartInfo.trade_no
  463. },
  464. success() {
  465. },
  466. fail(err) {
  467. uni.hideLoading();
  468. return that.$util.Tips({
  469. title: err.errMsg
  470. });
  471. },
  472. complete() {
  473. uni.hideLoading();
  474. }
  475. });
  476. } else {
  477. this.defaultTake()
  478. }
  479. // #endif
  480. // #ifndef MP
  481. this.defaultTake()
  482. // #endif
  483. },
  484. defaultTake: function() {
  485. let that = this;
  486. uni.showModal({
  487. title: '确认收货',
  488. content: '为保障权益,请收到货确认无误后,再确认收货',
  489. success: function(res) {
  490. if (res.confirm) {
  491. orderTake({
  492. order_id: that.order_id
  493. }).then(res => {
  494. return that.$util.Tips({
  495. title: '操作成功',
  496. icon: 'success'
  497. }, function() {
  498. that.getOrderInfo();
  499. });
  500. }).catch(err => {
  501. return that.$util.Tips({
  502. title: err
  503. });
  504. })
  505. }
  506. }
  507. })
  508. },
  509. /**
  510. *
  511. * 删除订单
  512. */
  513. delOrder: function() {
  514. let that = this;
  515. orderDel({
  516. order_id: that.order_id
  517. }).then(res => {
  518. return that.$util.Tips({
  519. title: '删除成功',
  520. icon: 'success'
  521. }, {
  522. tab: 5,
  523. url: '/pages/points_mall/exchange_record'
  524. });
  525. }).catch(err => {
  526. return that.$util.Tips({
  527. title: err
  528. });
  529. });
  530. },
  531. }
  532. }
  533. </script>
  534. <style scoped lang="scss">
  535. .qs-btn {
  536. width: auto;
  537. height: 60rpx;
  538. text-align: center;
  539. line-height: 60rpx;
  540. border-radius: 50rpx;
  541. color: #fff;
  542. font-size: 27rpx;
  543. padding: 0 3%;
  544. color: #aaa;
  545. border: 1px solid #ddd;
  546. margin-right: 20rpx;
  547. }
  548. .goodWrapper{
  549. padding: 0 30rpx;
  550. .item{
  551. padding: 20rpx 0;
  552. }
  553. }
  554. .goodCall {
  555. color: #e93323;
  556. text-align: center;
  557. width: 100%;
  558. height: 86rpx;
  559. padding: 0 30rpx;
  560. border-bottom: 1rpx solid #eee;
  561. font-size: 30rpx;
  562. line-height: 86rpx;
  563. background: #fff;
  564. .icon-kefu {
  565. font-size: 36rpx;
  566. margin-right: 15rpx;
  567. }
  568. /* #ifdef MP */
  569. button {
  570. display: flex;
  571. align-items: center;
  572. justify-content: center;
  573. height: 86rpx;
  574. font-size: 30rpx;
  575. color: #e93323;
  576. }
  577. /* #endif */
  578. }
  579. .order-details .header {
  580. padding: 0 30rpx;
  581. height: 150rpx;
  582. }
  583. .order-details .header.on {
  584. background-color: #666 !important;
  585. }
  586. .order-details .header .pictrue {
  587. width: 110rpx;
  588. height: 110rpx;
  589. }
  590. .order-details .header .pictrue image {
  591. width: 100%;
  592. height: 100%;
  593. }
  594. .order-details .header .data {
  595. color: rgba(255, 255, 255, 0.8);
  596. font-size: 24rpx;
  597. margin-left: 27rpx;
  598. }
  599. .order-details .header .data.on {
  600. margin-left: 0;
  601. }
  602. .order-details .header .data .state {
  603. font-size: 30rpx;
  604. font-weight: bold;
  605. color: #fff;
  606. margin-bottom: 7rpx;
  607. }
  608. .order-details .header .data .time {
  609. margin-left: 20rpx;
  610. }
  611. .order-details .nav {
  612. background-color: #fff;
  613. font-size: 26rpx;
  614. color: #282828;
  615. padding: 25rpx 0;
  616. }
  617. .order-details .nav .navCon {
  618. padding: 0 40rpx;
  619. }
  620. .order-details .nav .on {
  621. color: #e93323;
  622. }
  623. .order-details .nav .progress {
  624. padding: 0 65rpx;
  625. margin-top: 10rpx;
  626. }
  627. .order-details .nav .progress .line {
  628. width: 100rpx;
  629. height: 2rpx;
  630. background-color: #939390;
  631. }
  632. .order-details .nav .progress .iconfont {
  633. font-size: 25rpx;
  634. color: #939390;
  635. margin-top: -2rpx;
  636. }
  637. .order-details .address {
  638. font-size: 26rpx;
  639. color: #868686;
  640. background-color: #fff;
  641. padding: 35rpx 30rpx;
  642. }
  643. .order-details .address .name {
  644. font-size: 30rpx;
  645. color: #282828;
  646. margin-bottom: 15rpx;
  647. }
  648. .order-details .address .name .phone {
  649. margin-left: 40rpx;
  650. }
  651. .order-details .line {
  652. width: 100%;
  653. height: 3rpx;
  654. }
  655. .order-details .line image {
  656. width: 100%;
  657. height: 100%;
  658. display: block;
  659. }
  660. .order-details .wrapper {
  661. background-color: #fff;
  662. margin-top: 12rpx;
  663. padding: 30rpx;
  664. }
  665. .order-details .wrapper .item {
  666. font-size: 28rpx;
  667. color: #282828;
  668. }
  669. .order-details .wrapper .item~.item {
  670. margin-top: 20rpx;
  671. }
  672. .order-details .wrapper .item .conter {
  673. color: #868686;
  674. width: 460rpx;
  675. text-align: right;
  676. }
  677. .order-details .wrapper .item .conter .copy {
  678. font-size: 20rpx;
  679. color: #333;
  680. border-radius: 3rpx;
  681. border: 1rpx solid #666;
  682. padding: 3rpx 15rpx;
  683. margin-left: 24rpx;
  684. }
  685. .order-details .wrapper .actualPay {
  686. border-top: 1rpx solid #eee;
  687. margin-top: 30rpx;
  688. padding-top: 30rpx;
  689. }
  690. .order-details .wrapper .actualPay .money {
  691. font-weight: bold;
  692. font-size: 30rpx;
  693. }
  694. .order-details .footer {
  695. width: 100%;
  696. height: 100rpx;
  697. position: fixed;
  698. bottom: 0;
  699. left: 0;
  700. background-color: #fff;
  701. padding: 0 30rpx;
  702. box-sizing: border-box;
  703. }
  704. .order-details .footer .bnt {
  705. width: 150rpx;
  706. height: 60rpx;
  707. text-align: center;
  708. line-height: 60rpx;
  709. border-radius: 50rpx;
  710. color: #fff;
  711. font-size: 27rpx;
  712. }
  713. .order-details .footer .bnt.cancel {
  714. color: #aaa;
  715. border: 1rpx solid #ddd;
  716. }
  717. .order-details .footer .bnt~.bnt {
  718. margin-left: 18rpx;
  719. }
  720. .order-details .writeOff {
  721. background-color: #fff;
  722. margin-top: 13rpx;
  723. padding-bottom: 30rpx;
  724. }
  725. .order-details .writeOff .title {
  726. font-size: 30rpx;
  727. color: #282828;
  728. height: 87rpx;
  729. border-bottom: 1px solid #f0f0f0;
  730. padding: 0 30rpx;
  731. line-height: 87rpx;
  732. }
  733. .order-details .writeOff .grayBg {
  734. background-color: #f2f5f7;
  735. width: 590rpx;
  736. height: 384rpx;
  737. border-radius: 20rpx 20rpx 0 0;
  738. margin: 50rpx auto 0 auto;
  739. padding-top: 55rpx;
  740. position: relative;
  741. }
  742. .order-details .writeOff .grayBg .written {
  743. position: absolute;
  744. top: 0;
  745. right: 0;
  746. width: 60rpx;
  747. height: 60rpx;
  748. }
  749. .order-details .writeOff .grayBg .written image {
  750. width: 100%;
  751. height: 100%;
  752. }
  753. .order-details .writeOff .grayBg .pictrue {
  754. width: 290rpx;
  755. height: 290rpx;
  756. margin: 0 auto;
  757. }
  758. .order-details .writeOff .grayBg .pictrue image {
  759. width: 100%;
  760. height: 100%;
  761. display: block;
  762. }
  763. .order-details .writeOff .gear {
  764. width: 590rpx;
  765. height: 30rpx;
  766. margin: 0 auto;
  767. }
  768. .order-details .writeOff .gear image {
  769. width: 100%;
  770. height: 100%;
  771. display: block;
  772. }
  773. .order-details .writeOff .num {
  774. background-color: #f0c34c;
  775. width: 590rpx;
  776. height: 84rpx;
  777. color: #282828;
  778. font-size: 48rpx;
  779. margin: 0 auto;
  780. border-radius: 0 0 20rpx 20rpx;
  781. text-align: center;
  782. padding-top: 4rpx;
  783. }
  784. .order-details .writeOff .rules {
  785. margin: 46rpx 30rpx 0 30rpx;
  786. border-top: 1px solid #f0f0f0;
  787. padding-top: 10rpx;
  788. }
  789. .order-details .writeOff .rules .item {
  790. margin-top: 20rpx;
  791. }
  792. .order-details .writeOff .rules .item .rulesTitle {
  793. font-size: 28rpx;
  794. color: #282828;
  795. }
  796. .order-details .writeOff .rules .item .rulesTitle .iconfont {
  797. font-size: 30rpx;
  798. color: #333;
  799. margin-right: 8rpx;
  800. margin-top: 5rpx;
  801. }
  802. .order-details .writeOff .rules .item .info {
  803. font-size: 28rpx;
  804. color: #999;
  805. margin-top: 7rpx;
  806. }
  807. .order-details .writeOff .rules .item .info .time {
  808. margin-left: 20rpx;
  809. }
  810. .order-details .map {
  811. height: 86rpx;
  812. font-size: 30rpx;
  813. color: #282828;
  814. line-height: 86rpx;
  815. border-bottom: 1px solid #f0f0f0;
  816. margin-top: 13rpx;
  817. background-color: #fff;
  818. padding: 0 30rpx;
  819. }
  820. .order-details .map .place {
  821. font-size: 26rpx;
  822. width: 176rpx;
  823. height: 50rpx;
  824. border-radius: 25rpx;
  825. line-height: 50rpx;
  826. text-align: center;
  827. }
  828. .order-details .map .place .iconfont {
  829. font-size: 27rpx;
  830. height: 27rpx;
  831. line-height: 27rpx;
  832. margin: 2rpx 3rpx 0 0;
  833. }
  834. .order-details .address .name .iconfont {
  835. font-size: 34rpx;
  836. margin-left: 10rpx;
  837. }
  838. .refund {
  839. padding: 0 30rpx 30rpx;
  840. margin-top: 24rpx;
  841. background-color: #fff;
  842. .title {
  843. display: flex;
  844. align-items: center;
  845. font-size: 30rpx;
  846. color: #333;
  847. height: 86rpx;
  848. border-bottom: 1px solid #f5f5f5;
  849. image {
  850. width: 32rpx;
  851. height: 32rpx;
  852. margin-right: 10rpx;
  853. }
  854. }
  855. .con {
  856. padding-top: 25rpx;
  857. font-size: 28rpx;
  858. color: #868686;
  859. }
  860. }
  861. .orderGoods {
  862. background-color: #fff;
  863. margin-top: 12rpx;
  864. &.on{
  865. margin-top: 0;
  866. }
  867. }
  868. .orderGoods .total {
  869. width: 100%;
  870. height: 86rpx;
  871. padding: 0 30rpx;
  872. border-bottom: 2rpx solid #f0f0f0;
  873. font-size: 30rpx;
  874. color: #282828;
  875. line-height: 86rpx;
  876. box-sizing: border-box;
  877. }
  878. </style>