my-order.vue 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980
  1. <template>
  2. <view class="my-order">
  3. <custom-nav noback="noback" transparent="transparent" ref="ltm" title=" " />
  4. <view class="content">
  5. <!-- <view class="topt">
  6. <view class="search_con">
  7. <view class="search_inp">
  8. <view class="flex">
  9. <image src="../../static/icon/search.png" mode="widthFix"
  10. style="width: 48rpx;margin-right: 10rpx;"></image>
  11. <input type="text" placeholder="输入订单号" style="width: 370rpx;" />
  12. </view>
  13. <view class="search">查询</view>
  14. </view>
  15. </view>
  16. </view> -->
  17. <view class="SwiperNav">
  18. <view v-for="(item, index) in typeList" :key="index" @click="orderParams.status = index" :class="orderParams.status === index ? 'red' : ''"
  19. style="display: flex;align-items: center;flex-direction: column;">
  20. {{ item }}
  21. <view :class="orderParams.status === index ? 'active' : ''"
  22. style="width: 42rpx; height: 8rpx;margin-top:3rpx; border-radius:4rpx;"></view>
  23. </view>
  24. </view>
  25. <scroll-view class="OrderList" scroll-y="true" @scrolltolower="addOrderList">
  26. <template v-if="orderList.length > 0">
  27. <view v-for="item in orderList" :key="item.id" @click="toDetail(item)" class="OrderList-item"
  28. :class="item.is_deleted ? 'OrderList-cancel' : ''">
  29. <image v-if="item.is_deleted" src="../../static/icon/cancel.png" mode="widthFix"
  30. class="item-cancel-img"></image>
  31. <image v-if="!item.is_deleted && item.apply_status == 1"
  32. src="../../static/new_order/daishen_biao.png" mode="widthFix" class="item-cancel-img">
  33. </image>
  34. <view class="item-header">
  35. <!-- <view class="item-header-copy" @click.stop="copyOrderNum(item.order_num)">复制</view> -->
  36. <view class="grey">订单号:{{ item.order_num }}</view>
  37. <view class="spec" v-if="item.apply_status == 0 && item.is_deleted == false">
  38. {{ item | orderStatus }}
  39. </view>
  40. </view>
  41. <view class="item-body">
  42. <view class="item-body-name grey">{{ item.address.username.slice(0,6) }}</view>
  43. <view class="item-body-phone">{{ item.address.mobile }}</view>
  44. <view class="item-body-address">
  45. <view class="address-text grey">
  46. {{ `${item.address.province}${item.address.city}${ item.address.town }${ item.address.address }` }}
  47. </view>
  48. <image class="address-arrow" src="../../static/icon/arrow.png"></image>
  49. </view>
  50. <view class="flex">
  51. <view class="hebing" @click.stop="goDetail(item.id)" v-if="item.is_merge === 1">
  52. 合并
  53. </view>
  54. <view></view>
  55. <view style="display: flex;">
  56. <view class="gray">{{ item.type }}类;共{{ item.total }}件,</view>
  57. <view :class="item.is_deleted? 'gray':''">合计:</view>
  58. <view :class="item.is_deleted? 'gray':'pai_red'">¥{{ item.money }}</view>
  59. </view>
  60. </view>
  61. <!-- <view class="yellow">
  62. 作废订单的申请已被拒绝
  63. </view> -->
  64. </view>
  65. <view class="item-footer">
  66. <view class="item-footer-time grey">
  67. {{ item.created_at | dateFormatter('yyyy-MM-dd hh:mm') }}
  68. </view>
  69. <view class="anniugray"
  70. v-if="item.status == 0 && item.apply_status == 0 && item.is_deleted == false && item.destroy_status != 2"
  71. @click.stop="showCancel = true; destroy_cause = ''; order_num = item.order_num ">
  72. 作废订单
  73. </view>
  74. <view v-if="item.status == 3 || item.status == 4" class="item-footer-btn"
  75. @click.stop="toGoodsInfo(item)">
  76. 发货详情
  77. </view>
  78. <view v-if="!item.is_deleted && item.pay_status && item.status == 4" class="item-footer-btn"
  79. @click.stop="buyAgain(item)">
  80. 再次购买
  81. </view>
  82. <view v-if="!item.is_deleted && item.pay_status && item.status == 3" class="item-footer-btn"
  83. @click.stop="received(item)">
  84. 确认收货
  85. </view>
  86. </view>
  87. </view>
  88. </template>
  89. <view v-else class="noTips">暂无订单</view>
  90. </scroll-view>
  91. </view>
  92. <u-popup v-model="showCancel" mode="bottom" height="700rpx;">
  93. <view class="popBox">
  94. <view class="popBox_title">
  95. 作废订单原因
  96. </view>
  97. <view class="">
  98. <radio-group @change="radioChange">
  99. <label v-for="(item, index) in cancelCause" :key="item.value">
  100. <view class="uni-list" :class="index == 3 ? '':'border'">
  101. <view>{{item.name}}</view>
  102. <view>
  103. <radio :value="item.value" :checked="index === current" color="#FF232C" />
  104. </view>
  105. </view>
  106. <view v-if="index == 3" class="input">
  107. <textarea v-model="destroy_cause" placeholder="请输入您作废的原因"
  108. placeholder-style="color: #CCCCCC" style="height: 150rpx;" />
  109. </view>
  110. </label>
  111. </radio-group>
  112. </view>
  113. </view>
  114. <view class="popBox_btn">
  115. <view class="btn qu" @click="destroy_cause = '';showCancel = false">
  116. 取消作废
  117. </view>
  118. <view class="btn submit" @click="$noMultipleClicks(commitWork)">
  119. 确定作废
  120. </view>
  121. </view>
  122. </u-popup>
  123. </view>
  124. </template>
  125. <script>
  126. import {
  127. _API_GoodList
  128. } from '@/apis/good.js'
  129. import {
  130. deepClone
  131. } from '@/common/util/index.js'
  132. import {
  133. _API_OrderDel,
  134. _API_OrderDetail1,
  135. _API_OrderCancel,
  136. _API_OrderReceiveGoods1,
  137. getOrderList,
  138. _API_destory
  139. } from '@/apis/order.js'
  140. import "@/common/util/ican-H5Api"
  141. export default {
  142. data() {
  143. return {
  144. lists: {
  145. 0: [],
  146. 1: [],
  147. 2: [],
  148. 3: [],
  149. 4: {}
  150. }, // 数据
  151. typeList: ['全部', '未付款', '审核中'],
  152. orderParams: {
  153. status: 0,
  154. page: 1
  155. },
  156. current: 0,
  157. order_num: '',
  158. destroy_cause: '',
  159. showCancel: false, // 作废弹窗
  160. noClick: true,
  161. cancelCause: [{
  162. value: '0',
  163. name: '收货信息错了'
  164. },
  165. {
  166. value: '1',
  167. name: '尺码或数量错了'
  168. },
  169. {
  170. value: '2',
  171. name: '订单下多了'
  172. },
  173. {
  174. value: '3',
  175. name: '其他原因'
  176. },
  177. ],
  178. orderList: [],
  179. orderTotal: 0
  180. }
  181. },
  182. filters: {
  183. orderStatus(orderItem) { // 计算订单总金额过滤器
  184. if (orderItem.is_deleted) {
  185. return '已作废'
  186. } else if (!orderItem.pay_status) {
  187. return '待支付'
  188. } else if (orderItem.status == 3) {
  189. return '待收货'
  190. } else if (orderItem.status == 4) {
  191. return '已完成'
  192. } else if (orderItem.status == 0) {
  193. return '订单审核中'
  194. } else if (orderItem.status == 1) {
  195. return '财务审核中'
  196. } else if (orderItem.status == 2) {
  197. return '发货审核中'
  198. } else {
  199. return '待审核'
  200. }
  201. },
  202. orderStatusClass(status) {
  203. if (status == '已完成') {
  204. return ''
  205. } else {
  206. return 'basecolor'
  207. }
  208. },
  209. maxNickname(str) {
  210. if (!str) return ""
  211. return `${str.substr(0,4)}${str.length > 4 ? '...' : ''}`
  212. }
  213. },
  214. watch: {
  215. 'orderParams.status'() {
  216. this.orderParams.page = 1
  217. this.getOrderList()
  218. }
  219. },
  220. onLoad(opt) {
  221. if (this.$store.state.userinfo.user_type !== 3) {
  222. uni.navigateBack()
  223. setTimeout(() => uni.$emit('noopening'))
  224. return
  225. }
  226. if (opt.type) {
  227. this.orderParams.status = Number(opt.type)
  228. }
  229. this.getOrderList()
  230. },
  231. onPullDownRefresh() {
  232. this.orderParams.page = 1
  233. this.getOrderList()
  234. },
  235. methods: {
  236. // 作废订单提交
  237. commitWork() {
  238. let that = this
  239. if (that.current != 3) {
  240. that.reject_cause = that.cancelCause[that.current].name
  241. } else {
  242. if (that.destroy_cause == '') {
  243. uni.showToast({
  244. title: '请输入作废原因',
  245. icon: 'none'
  246. })
  247. return false;
  248. } else {
  249. that.reject_cause = that.destroy_cause
  250. }
  251. }
  252. const data = {
  253. order_num: that.order_num,
  254. destroy_cause: that.reject_cause
  255. }
  256. console.log(data)
  257. _API_destory(data).then(res => {
  258. if (res.code == 200) {
  259. uni.showToast({
  260. title: '作废成功',
  261. icon: 'none'
  262. })
  263. this.showCancel = false
  264. that.getOrderList()
  265. } else {
  266. uni.showToast({
  267. title: res.message || '作废失败',
  268. icon: 'none'
  269. })
  270. }
  271. })
  272. },
  273. // 选择作废原因
  274. radioChange(e) {
  275. console.log(e.detail.value)
  276. this.current = e.detail.value
  277. if (this.current != 3) {
  278. this.destroy_cause = ''
  279. }
  280. },
  281. goDetail(id) {
  282. uni.navigateTo({
  283. url: './order-detail?id=' + id
  284. })
  285. },
  286. // 发货详情
  287. toGoodsInfo(data) {
  288. if (!data.track_status) {
  289. uni.showModal({
  290. content: "该订单尚未发货,暂不能查看详情",
  291. showCancel: false
  292. })
  293. return false
  294. }
  295. uni.navigateTo({
  296. url: "../lading_detail/index?data=" + encodeURIComponent(JSON.stringify(data))
  297. })
  298. // uni.navigateTo({
  299. // url: "../stock/dai_ruku?order_id="+data.order_id
  300. // })
  301. },
  302. addOrderList() {
  303. if (this.orderParams.page * 15 > this.orderTotal) {
  304. return false
  305. }
  306. this.orderParams.page += 1
  307. this.getOrderList()
  308. },
  309. showTime(time) {
  310. let _d = new Date(time)
  311. return `${_d.getFullYear()}/${_d.getMonth() + 1 > 10 ? _d.getMonth() + 1 : '0'+_d.getMonth() + 1}/${_d.getDay() > 10 ? _d.getDay() : '0'+_d.getDay()}`
  312. },
  313. getOrderList() {
  314. getOrderList(this.navSelect, this.orderParams).then(res => {
  315. uni.stopPullDownRefresh()
  316. if (res.code === 200) {
  317. if (this.orderParams.page === 1) {
  318. this.orderList = []
  319. }
  320. this.orderList = [...this.orderList, ...res.data.list]
  321. this.orderTotal = res.data.total
  322. }
  323. }).catch(() => {
  324. uni.stopPullDownRefresh()
  325. })
  326. },
  327. // 复制订单号
  328. copyOrderNum(order_num) {
  329. try {
  330. uni.setClipboardData({
  331. data: order_num,
  332. success: () => {
  333. uni.showModal({
  334. content: '订单号已复制',
  335. showCancel: false
  336. })
  337. }
  338. })
  339. } catch (e) {
  340. uni.showModal({
  341. content: '您的手机暂不支持复制',
  342. showCancel: false
  343. })
  344. }
  345. },
  346. confirmReceive(order_num, index) { // 点击确认收货
  347. this.$refs.ltm.modal('提示', ['确定收到商品?']).then(() => {
  348. uni.showLoading({
  349. mask: true
  350. })
  351. _API_OrderReceiveGoods({
  352. order_num
  353. }).then(res => {
  354. if (res.code === 200) {
  355. const list1 = deepClone(this.lists[1])
  356. list1.splice(index, 1) // 把当前订单从待收货列表删除
  357. this.$set(this.lists, 1, list1)
  358. uni.toast('收货成功')
  359. } else {
  360. uni.toast('收货失败,请稍后重试')
  361. }
  362. })
  363. }).catch(() => {
  364. uni.toast('取消确认')
  365. })
  366. },
  367. toDetail(goodItem) { // 点击查看订单
  368. const {
  369. order_num,
  370. order_id,
  371. is_deleted,
  372. pay_status,
  373. money,
  374. created_at,
  375. is_merge,
  376. total,
  377. status,
  378. apply_status,
  379. destroy_status
  380. } = goodItem
  381. let str = ''
  382. if (!is_deleted && !pay_status) {
  383. str = '&nopay=1'
  384. }
  385. const URL = encodeURIComponent(JSON.stringify(goodItem)).replace(/%/g, '%25')
  386. uni.navigateTo({
  387. url: '../order-detail1/order-detail1?item=' + URL
  388. })
  389. },
  390. changeOrder({
  391. order_num
  392. }) { // 取消订单
  393. uni.showModal({
  394. title: '',
  395. content: '修改订单后会作废此订单,然后复制此订单的商品到购物车中重新下单,确定作废?',
  396. success: (res) => {
  397. if (res.confirm) {
  398. uni.loading()
  399. _API_OrderCancel({
  400. order_num
  401. }).then(({
  402. code,
  403. message
  404. }) => {
  405. if (code != 200) {
  406. uni.toast(message)
  407. } else {
  408. uni.loading()
  409. _API_GoodList().then(({
  410. data: {
  411. list: list1
  412. }
  413. }) => {
  414. uni.loading()
  415. list1.forEach(e => e.cart = Array(e.size.length).fill(
  416. 0))
  417. _API_OrderDetail1({
  418. order_num
  419. }).then(({
  420. data: {
  421. list: list2
  422. }
  423. }) => {
  424. uni.loading()
  425. this.$store.commit('cart/CLEAR')
  426. list1.forEach((item, index) => {
  427. const findRes = list2.find(e =>
  428. e.attr_id == item
  429. .attr_id)
  430. if (findRes) {
  431. findRes.size.forEach((size,
  432. sizeIndex) => {
  433. const
  434. goodItemSizeIndex =
  435. list1[
  436. index]
  437. .size
  438. .findIndex(
  439. e =>
  440. e ===
  441. size)
  442. list1[index]
  443. .cart[
  444. goodItemSizeIndex
  445. ] =
  446. findRes
  447. .num[
  448. sizeIndex
  449. ]
  450. })
  451. item.choosed = true
  452. item.sizeChoosed = Array(
  453. item.size.length)
  454. .fill(true)
  455. this.$store.commit(
  456. 'cart/ADD', item)
  457. uni.navigateTo({
  458. url: '../shop-car1/shop-car1'
  459. })
  460. }
  461. })
  462. })
  463. })
  464. }
  465. })
  466. }
  467. }
  468. })
  469. },
  470. buyAgain({
  471. order_num
  472. }) { // 点击再次购买
  473. uni.showModal({
  474. title: '提示',
  475. content: '确定要再次购买?',
  476. success: (res) => {
  477. if (res.confirm) {
  478. uni.loading()
  479. _API_GoodList().then(({
  480. data: {
  481. list: list1
  482. }
  483. }) => {
  484. uni.loading()
  485. list1.forEach(e => e.cart = Array(e.size.length).fill(0))
  486. _API_OrderDetail1({
  487. order_num
  488. }).then(({
  489. data: {
  490. list: list2
  491. }
  492. }) => {
  493. this.$store.commit('cart/CLEAR')
  494. let waitPustCart = []
  495. list1.forEach((item, index) => {
  496. const findRes = list2.find(e => e.attr_id ==
  497. item.attr_id)
  498. if (findRes) {
  499. findRes.size.forEach((size, sizeIndex) => {
  500. const goodItemSizeIndex =
  501. list1[index].size
  502. .findIndex(e => e === size)
  503. list1[index].cart[
  504. goodItemSizeIndex] =
  505. findRes.num[sizeIndex]
  506. })
  507. item.choosed = true
  508. item.sizeChoosed = Array(item.size.length)
  509. .fill(true)
  510. item.storage.forEach((num, i) => {
  511. if (num <= 0) {
  512. item.cart[i] = 0
  513. }
  514. })
  515. if (item.cart.filter(n => n !== 0)
  516. .length !== 0) {
  517. waitPustCart.push(item)
  518. }
  519. }
  520. })
  521. if (waitPustCart.length > 0) {
  522. waitPustCart.forEach(item => {
  523. this.$store.commit('cart/ADD', item)
  524. })
  525. uni.navigateTo({
  526. url: '../shop-car1/shop-car1'
  527. })
  528. } else {
  529. uni.showModal({
  530. content: '该订单商品库存均不足,不能再次下单',
  531. showCancel: false
  532. })
  533. }
  534. })
  535. })
  536. }
  537. }
  538. })
  539. },
  540. // 物流查询
  541. logisticsQuery(item) {
  542. let {
  543. track_status,
  544. order_num
  545. } = item
  546. if (track_status === 0) {
  547. uni.showModal({
  548. content: '物流信息不存在',
  549. showCancel: false
  550. });
  551. return false
  552. }
  553. uni.navigateTo({
  554. url: `../logistics-info/logistics-info?order_no=${order_num}&status=${track_status}`
  555. });
  556. },
  557. express(expCode, expNo) {
  558. KDNWidget.run({
  559. serviceType: "A",
  560. expCode,
  561. expNo
  562. })
  563. },
  564. payNow({
  565. order_num,
  566. money,
  567. order_id
  568. }) { // 点击立即付款
  569. // console.log(order_id)
  570. uni.navigateTo({
  571. url: `../pay-order/pay-order?order_num=${order_num}&money=${money}&order_id=${order_id}`
  572. })
  573. },
  574. received({
  575. order_num
  576. }) { // 点击确认收货
  577. uni.showModal({
  578. title: '提示',
  579. content: '确认收到货物?',
  580. success: (res) => {
  581. if (res.confirm) {
  582. uni.loading()
  583. _API_OrderReceiveGoods1({
  584. order_num
  585. }).then(() => {
  586. uni.startPullDownRefresh()
  587. })
  588. }
  589. }
  590. })
  591. }
  592. }
  593. }
  594. </script>
  595. <style lang="scss">
  596. .my-order {
  597. @include page();
  598. .content {
  599. // padding-top: 116rpx;
  600. @include flex(column);
  601. display: flex;
  602. justify-content: space-between;
  603. flex-direction: column;
  604. }
  605. }
  606. .topt {
  607. width: 100%;
  608. padding: 30rpx 24rpx 24rpx 24rpx;
  609. box-sizing: border-box;
  610. background-color: #fff;
  611. position: fixed;
  612. left: 0;
  613. top: 0;
  614. z-index: 10000;
  615. .search_con {
  616. width: 700rpx;
  617. display: flex;
  618. justify-content: space-between;
  619. align-items: center;
  620. }
  621. .search_inp {
  622. height: 80rpx;
  623. width: 100%;
  624. padding: 0 10rpx 0 30rpx;
  625. border-radius: 44rpx;
  626. background: #F9F9FB;
  627. display: flex;
  628. justify-content: space-between;
  629. align-items: center;
  630. .flex {
  631. display: flex;
  632. }
  633. }
  634. .search {
  635. width: 132rpx;
  636. height: 64rpx;
  637. line-height: 64rpx;
  638. font-size: 24rpx;
  639. color: #FFFFFF;
  640. text-align: center;
  641. background: linear-gradient(92deg, #F30000 0%, #FE4815 100%);
  642. border-radius: 32rpx;
  643. }
  644. }
  645. .popBox {
  646. border-radius: 40rpx 40rpx 0px 0px;
  647. padding: 30rpx 30rpx 0 30rpx;
  648. &_title {
  649. width: 100%;
  650. text-align: center;
  651. font-size: 36rpx;
  652. font-weight: bold;
  653. color: #333;
  654. margin-bottom: 20rpx;
  655. }
  656. &_btn {
  657. display: flex;
  658. justify-content: space-between;
  659. align-items: center;
  660. padding: 0 52rpx;
  661. height: 100rpx;
  662. border-top: 2rpx solid #EEEEEE;
  663. margin-top: 40rpx;
  664. .btn {
  665. width: 308rpx;
  666. height: 88rpx;
  667. text-align: center;
  668. line-height: 88rpx;
  669. font-size: 32rpx;
  670. font-weight: bold;
  671. border-radius: 44rpx;
  672. }
  673. .qu {
  674. border: 2rpx solid #FB231F;
  675. color: #FB231F;
  676. background-color: #FFF4F3;
  677. }
  678. .submit {
  679. color: #fff;
  680. background: linear-gradient(93deg, #FF232C 0%, #FF571B 100%);
  681. }
  682. }
  683. .uni-list {
  684. padding: 30rpx 0;
  685. width: 690rpx;
  686. font-size: 32rpx;
  687. font-weight: bold;
  688. color: #333;
  689. display: flex;
  690. justify-content: space-between;
  691. align-items: center;
  692. }
  693. .input {
  694. width: 690rpx;
  695. height: 224rpx;
  696. background: #F8F8F8;
  697. border-radius: 24rpx;
  698. padding: 30rpx;
  699. }
  700. .border {
  701. border-bottom: 2rpx solid #EEEEEE;
  702. }
  703. }
  704. .pai_red {
  705. font-size: 32rpx;
  706. color: #FB231F;
  707. font-weight: bold;
  708. }
  709. .SwiperNav {
  710. width: 100%;
  711. display: flex;
  712. align-items: center;
  713. justify-content: space-between;
  714. height: 112rpx;
  715. color: #333333;
  716. font-size: 28rpx;
  717. background-color: #ffffff;
  718. padding: 0 98rpx;
  719. .red {
  720. color: #FB231F;
  721. }
  722. .active {
  723. position: relative;
  724. font-weight: bolder;
  725. &::before {
  726. content: "";
  727. display: block;
  728. width: 42rpx;
  729. height: 8rpx;
  730. border-radius: 8rpx;
  731. background: linear-gradient(180deg, #FF232C 0%, #FF571B 100%);
  732. position: absolute;
  733. bottom: 0;
  734. left: 0;
  735. transform: translateY(8rpx);
  736. }
  737. }
  738. }
  739. .flex {
  740. display: flex;
  741. justify-content: space-between;
  742. align-items: center;
  743. .hebing {
  744. width: 76rpx;
  745. line-height: 44rpx;
  746. color: #fff;
  747. font-size: 28rpx;
  748. text-align: center;
  749. border-radius: 6rpx;
  750. background: linear-gradient(82deg, #FFC401 0%, #FE0000 100%);
  751. }
  752. }
  753. .OrderList {
  754. flex: 1;
  755. overflow: hidden;
  756. width: 100%;
  757. padding: 30rpx;
  758. .anniugray {
  759. width: 160rpx;
  760. height: 64rpx;
  761. text-align: center;
  762. line-height: 64rpx;
  763. border-radius: 34rpx;
  764. margin-left: 20rpx;
  765. font-size: 28rpx;
  766. background: #F8F8F8;
  767. border: 2rpx solid #CCCCCC;
  768. color: 333;
  769. // margin-right: 22rpx;
  770. }
  771. &-cancel {
  772. .item-body-level,
  773. .item-footer-btn {
  774. background: #F8F8F8 !important;
  775. color: #999999 !important;
  776. }
  777. .item-header .spec,
  778. .item-body-total .spec {
  779. color: #999999 !important;
  780. }
  781. .grey {
  782. color: #999999 !important;
  783. }
  784. }
  785. &-item {
  786. width: 100%;
  787. border-radius: 24rpx;
  788. background-color: #fff;
  789. margin-bottom: 30rpx;
  790. position: relative;
  791. overflow: hidden;
  792. .item-cancel-img {
  793. position: absolute;
  794. top: -30rpx;
  795. right: 30rpx;
  796. z-index: 99;
  797. display: block;
  798. width: 153rpx;
  799. height: 153rpx;
  800. }
  801. .item-header {
  802. height: 100rpx;
  803. width: 100%;
  804. border-bottom: 1px solid #E9E9E9;
  805. display: flex;
  806. align-items: center;
  807. justify-content: space-between;
  808. color: #333333;
  809. font-size: 28rpx;
  810. padding: 0 30rpx;
  811. .spec {
  812. color: #FB231F;
  813. font-weight: bold;
  814. }
  815. &-copy {
  816. color: #FFFFFF;
  817. font-size: 24rpx;
  818. width: 88rpx;
  819. height: 46rpx;
  820. line-height: 46rpx;
  821. text-align: center;
  822. background: linear-gradient(to right, #F97C55, #F44545);
  823. border-radius: 4rpx;
  824. }
  825. }
  826. .item-body {
  827. width: 100%;
  828. padding: 30rpx;
  829. border-bottom: 1px solid #E9E9E9;
  830. box-sizing: border-box;
  831. position: relative;
  832. .yellow {
  833. width: 630rpx;
  834. height: 70rpx;
  835. background: #FBF7D2;
  836. border-radius: 8rpx;
  837. padding-left: 50rpx;
  838. // text-align: center;
  839. line-height: 70rpx;
  840. font-size: 28rpx;
  841. font-weight: bold;
  842. color: #FF6400;
  843. margin-top: 30rpx;
  844. }
  845. &-level {
  846. font-size: 24rpx;
  847. height: 50rpx;
  848. border-top-left-radius: 50rpx;
  849. border-bottom-left-radius: 50rpx;
  850. background: linear-gradient(203deg, #FBDCAC 0%, #FFEFD7 31%, #FFDCA5 55%, #FEEACB 90%, #F9D193 100%);
  851. padding: 0 10rpx 0 16rpx;
  852. position: absolute;
  853. top: 30rpx;
  854. right: 0;
  855. line-height: 50rpx;
  856. color: #FB231F;
  857. }
  858. &-name {
  859. color: #333333;
  860. font-size: 32rpx;
  861. margin-bottom: 10rpx;
  862. font-weight: bold;
  863. }
  864. &-phone {
  865. color: #999999;
  866. font-size: 28rpx;
  867. margin-bottom: 10rpx;
  868. }
  869. &-address {
  870. width: 100%;
  871. display: flex;
  872. align-items: center;
  873. justify-content: space-between;
  874. margin-bottom: 30rpx;
  875. .address-text {
  876. flex: 1;
  877. overflow: hidden;
  878. margin-right: 100rpx;
  879. color: #333333;
  880. font-size: 28rpx;
  881. }
  882. .address-arrow {
  883. display: block;
  884. width: 30rpx;
  885. height: 30rpx;
  886. }
  887. }
  888. &-total {
  889. width: 100%;
  890. display: flex;
  891. align-items: center;
  892. justify-content: flex-end;
  893. color: #333333;
  894. font-size: 28rpx;
  895. .spec {
  896. color: #F76454;
  897. }
  898. }
  899. }
  900. .item-footer {
  901. width: 100%;
  902. height: 128rpx;
  903. display: flex;
  904. align-items: center;
  905. justify-content: flex-end;
  906. padding: 0 30rpx;
  907. box-sizing: border-box;
  908. &-time {
  909. color: #333333;
  910. font-size: 28rpx;
  911. margin-right: auto;
  912. }
  913. &-btn {
  914. color: #ffffff;
  915. font-size: 28rpx;
  916. background: linear-gradient(to right, #F97C55, #F44545);
  917. width: 160rpx;
  918. height: 64rpx;
  919. border-radius: 34rpx;
  920. line-height: 64rpx;
  921. text-align: center;
  922. margin-right: 20rpx;
  923. &:nth-last-of-type(1) {
  924. margin-right: 0;
  925. }
  926. }
  927. }
  928. }
  929. }
  930. .noTips {
  931. width: 100%;
  932. text-align: center;
  933. }
  934. </style>