多租户商城-商户小程序端

1027 lines
25 KiB

2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
1 year ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
  1. <!-- 订单中心 -->
  2. <template>
  3. <view class="container">
  4. <global-loading />
  5. <view style="padding-bottom:68upx;">
  6. <u-sticky
  7. bg-color="#fff"
  8. >
  9. <u-tabs
  10. class="tabs"
  11. :list="tabList"
  12. disabled
  13. :is-scroll="false"
  14. active-color="#252744 !important"
  15. :current="tabCurrentType"
  16. @change="handleTabChange"
  17. />
  18. </u-sticky>
  19. <view class="order-list-box u-skeleton">
  20. <Skeleton
  21. el-color="#efefef"
  22. bg-color="#fff"
  23. :loading="loading"
  24. :animation="true"
  25. />
  26. <view
  27. class="item ske-loading u-skeleton-fillet"
  28. v-for="(orderItem, orderIndex) in list"
  29. :key="orderIndex"
  30. >
  31. <view class="order-list-top">
  32. <view
  33. class="top-l"
  34. @click.stop="goShop(orderItem.shopId)"
  35. >
  36. <!-- <image
  37. :src="orderItem.shopLogo"
  38. class="shop-img"
  39. />-->
  40. <image
  41. src="https://wechat.hnthee.com/ceres-local-file/image/cart_shop.png"
  42. class="shop-img"
  43. />
  44. <text class="shop-name">{{ orderItem.shopName }}</text>
  45. <image
  46. src="https://wechat.hnthee.com/ceres-local-file/image/icon_common_grey_forward.png"
  47. class="arrow-img"
  48. />
  49. </view>
  50. <view class="order-status">
  51. {{ getOrderStatusLabel(orderItem.state, orderItem.returnType) }}
  52. </view>
  53. </view>
  54. <view
  55. class="order-info-box"
  56. @click="goOrderDesc(orderItem)"
  57. >
  58. <view class="order-info">
  59. <view
  60. class="order-info-item"
  61. v-for="(skuItem, skuIndex) in orderItem.skus"
  62. :key="skuIndex"
  63. >
  64. <image
  65. :src="skuItem.image"
  66. class="product-img default-img"
  67. onerror="this.src='url(https://wechat.hnthee.com/ceres-local-file/image/default.png) no-repeat center';this.οnerrοr=null"
  68. />
  69. <view class="info-box">
  70. <text class="product-name">{{ skuItem.productName&&skuItem.productName }}</text>
  71. <view class="product-sku">{{ skuItem.value&&skuItem.value }}</view>
  72. <view class="price-sku-box">
  73. <view class="box-h flex-items-plus">
  74. <text class="product-price">
  75. <text
  76. class="fuhao"
  77. ></text>{{ skuItem.price && skuItem.price }}</text>
  78. <text class="product-num">x{{ skuItem.number&&skuItem.number }}</text>
  79. </view>
  80. <view
  81. v-if="skuItem.commentId === 0 && orderItem.state === 4"
  82. class="evaluate"
  83. @click.stop="goEvaluate(skuItem,orderItem.orderId)"
  84. >立即评价
  85. </view>
  86. <view
  87. v-if="skuItem.commentId !== 0 && orderItem.state === 4 && orderItem.skus[0].ifAdd !== 1"
  88. class="evaluate2"
  89. @click.stop="goAdditionalEvaluation(orderIndex,skuItem.commentId)"
  90. >追加评价
  91. </view>
  92. </view>
  93. </view>
  94. </view>
  95. <view class="total-price-box" >
  96. <template v-if="orderItem.orderPrice!==undefined || orderItem.discountPrice!==undefined">
  97. 总价¥{{
  98. (orderItem.orderPrice + orderItem.logisticsPrice).toFixed(2)
  99. }}优惠¥{{ orderItem.discountPrice }}
  100. <span v-if="orderItem.price > 0" style="font-weight: bold">
  101. {{ orderItem.state === 1 ? '应付¥' : '实付¥' }}{{ orderItem.price }}
  102. </span>
  103. </template>
  104. </view>
  105. </view>
  106. <view
  107. class="btnBox flex-items"
  108. :class="{flexSpBetween: orderItem.state===5 || orderItem.state === 9}"
  109. >
  110. <view
  111. class="delIcon"
  112. v-if="orderItem.state===5 || orderItem.state === 9"
  113. @click.stop="handleDeleteOrder(orderItem)"
  114. ></view>
  115. <view class="order-btn-box">
  116. <text
  117. :class="['btn',buttonItem.className] "
  118. v-for="buttonItem in getOrderOptionButtonObj(orderItem)"
  119. :key="buttonItem.name"
  120. @click.stop="handleOrderOptionButtonEvent(buttonItem)"
  121. >
  122. {{ buttonItem.name }}
  123. </text>
  124. </view>
  125. </view>
  126. </view>
  127. </view>
  128. <NoMore :show="!isEmpty && list.length >=listTotal" />
  129. <Empty
  130. :show="isEmpty"
  131. icon-url="https://ceres.zkthink.com/static/images/emptyOrderImg.png"
  132. >您还没有订单哦~
  133. </Empty>
  134. </view>
  135. </view>
  136. <!-- 支付 -->
  137. <u-popup
  138. v-model="payObj.showPayPopup"
  139. border-radius="15"
  140. closeable
  141. mode="bottom"
  142. >
  143. <view class="pay-list-content">
  144. <CashierList
  145. :total-price="payObj.totalPrice"
  146. @change="handleChangePayItem"
  147. />
  148. <view
  149. class="pay-confirm-btn"
  150. @click="handleGoPay"
  151. >确认
  152. </view>
  153. </view>
  154. </u-popup>
  155. </view>
  156. </template>
  157. <script>
  158. import CashierList from "../../components/CashierList";
  159. import AliHbPay from "../../components/AliHbPay";
  160. import NoMore from "../../components/NoMore";
  161. import Empty from "../../components/Empty";
  162. import { orderTabList, orderTypeEnum } from "./config/orderConfig";
  163. import { handleDoPay } from "../../utils/payUtil";
  164. import Skeleton from "../../components/Skeleton";
  165. const NET = require('../../utils/request')
  166. const API = require('../../config/api')
  167. export default {
  168. components: {
  169. AliHbPay,
  170. NoMore,
  171. Empty,
  172. CashierList,
  173. Skeleton
  174. },
  175. data() {
  176. return {
  177. loading: true,
  178. orderState: '',// 订单类型(params参数)
  179. page: 1,
  180. pageSize: 20,
  181. list: [{}, {}, {}, {}, {}, {}],
  182. listTotal: 0, // 用户订单总数
  183. isEmpty: false, // 列表是否为空
  184. tabList: orderTabList, // 顶部tabs
  185. tabCurrentType: 0,// 选中tab的索引
  186. // 支付相关
  187. payObj: {
  188. showPayPopup: false,
  189. totalPrice: 0,
  190. payInfo: {}
  191. },
  192. }
  193. },
  194. onLoad(options) {
  195. if (options.type) {
  196. this.tabCurrentType = options.type
  197. this.orderState = options.type
  198. }else{
  199. this.orderState = ''
  200. }
  201. },
  202. onShow() {
  203. const pageList = getCurrentPages();//获取应用页面栈
  204. const {options} = pageList[pageList.length - 1];//获取当前页面信息
  205. if (options.type) {
  206. this.tabCurrentType = options.type
  207. this.orderState = options.type
  208. }else{
  209. this.orderState = ''
  210. }
  211. if(Number(options.isJumpBack)===1){
  212. setTimeout(()=>{
  213. this.handleRefreshList()
  214. },2000)
  215. }else{
  216. this.handleRefreshList()
  217. }
  218. },
  219. onReachBottom() {
  220. ++this.page
  221. this.handleGetOrderList()
  222. },
  223. onBackPress(e) {
  224. if (e && e.from === 'navigateBack') {
  225. return false;
  226. }
  227. this.goUserIndex();
  228. return true;
  229. },
  230. methods: {
  231. /**
  232. * 重新加载列表
  233. */
  234. async handleRefreshList() {
  235. this.loading = true
  236. this.page = 1
  237. this.list = [{}, {}, {}, {}, {}, {}]
  238. this.isEmpty = false
  239. await this.handleGetOrderList()
  240. },
  241. /**
  242. * 切换tab
  243. * @param tabIndex
  244. */
  245. async handleTabChange(tabIndex) {
  246. if (this.loading) return
  247. this.tabCurrentType = tabIndex;
  248. this.orderState = this.tabList[tabIndex].number
  249. await this.handleRefreshList()
  250. },
  251. /**
  252. * 获取列表数据
  253. * @return {Promise<void>}
  254. */
  255. async handleGetOrderList() {
  256. this.$showLoading()
  257. this.orderState === 0 ? this.orderState = '' : undefined
  258. try {
  259. const params = {
  260. state: this.orderState,
  261. page: this.page,
  262. pageSize: this.pageSize
  263. }
  264. const {data: {list, total}} = await NET.request(API.FindOrderList, params, 'GET')
  265. this.listTotal = total
  266. this.list = this.list.concat(list)
  267. this.list = this.list.filter(item => JSON.stringify(item) !== '{}')
  268. if (this.list.length === 0) {
  269. this.isEmpty = true
  270. }
  271. } finally {
  272. this.loading = false
  273. this.$hideLoading()
  274. }
  275. },
  276. /**
  277. * 根据订单状态获取状态label
  278. * @param state
  279. * @param returnType 是否退款1是
  280. * @return {string}
  281. */
  282. getOrderStatusLabel(state, returnType = 0) {
  283. if (returnType) return '退款中'
  284. return orderTypeEnum[state] || ''
  285. },
  286. /**
  287. * 根据订单Item获取按钮信息
  288. * @param orderItem
  289. * @return *[]
  290. */
  291. getOrderOptionButtonObj(orderItem) {
  292. const {state, returnType, afterState, skus, collageId} = orderItem
  293. const orderNeedBtnList = [] // 订单应有的btn
  294. // 取消订单
  295. if ([1, 6].includes(state)) {
  296. orderNeedBtnList.push({
  297. name: '取消订单',
  298. className: 'l',
  299. functionName: 'handleCancelOrder',
  300. functionParams: [orderItem]
  301. })
  302. }
  303. // 立即付款
  304. if (state === 1) {
  305. orderNeedBtnList.push({
  306. name: '立即付款',
  307. className: 'r',
  308. functionName: 'handlePayOrder',
  309. functionParams: [orderItem]
  310. })
  311. }
  312. // 申请售后
  313. if ([2, 3, 4].includes(state) && [0, 6].includes(Number(afterState)) && skus[0].ifAdd !== 1) {
  314. orderNeedBtnList.push({
  315. name: '申请售后',
  316. className: 'l',
  317. functionName: 'goAfterSalesService',
  318. functionParams: [orderItem]
  319. })
  320. }
  321. // 查看物流
  322. if ([3, 4].includes(state)) {
  323. orderNeedBtnList.push({
  324. name: '查看物流',
  325. className: 'l',
  326. functionName: 'goLogisticsInformation',
  327. functionParams: [orderItem]
  328. })
  329. }
  330. // 确认收货
  331. if ([3].includes(state)) {
  332. orderNeedBtnList.push({
  333. name: '确认收货',
  334. className: 'r',
  335. functionName: 'handleConfirmReceipt',
  336. functionParams: [orderItem]
  337. })
  338. }
  339. // 退款详情
  340. if ([1].includes(returnType)) {
  341. orderNeedBtnList.push({
  342. name: '退款详情',
  343. className: 'l',
  344. functionName: 'goRefundDetail',
  345. functionParams: [orderItem]
  346. })
  347. }
  348. // 邀请拼单
  349. if ([6].includes(state)) {
  350. orderNeedBtnList.push({
  351. name: '邀请拼单',
  352. className: 'r',
  353. functionName: 'goSpellGroup',
  354. functionParams: [orderItem]
  355. })
  356. }
  357. // 再次开团 | 再次购买
  358. if ([5].includes(state)) {
  359. orderNeedBtnList.push({
  360. name: collageId !== 0 ? '再次开团' : '再次购买',
  361. className: 'r',
  362. functionName: 'handleBuyAgainEvent',
  363. functionParams: [orderItem]
  364. })
  365. }
  366. return orderNeedBtnList
  367. },
  368. /**
  369. * 处理订单btn事件
  370. * @param buttonItem 由getOrderOptionButtonObj生成的item项
  371. */
  372. handleOrderOptionButtonEvent(buttonItem) {
  373. const {functionName, functionParams} = buttonItem
  374. if (this[functionName]) {
  375. this[functionName](...functionParams)
  376. } else {
  377. throw new Error(`${ buttonItem.name }的function在本VM中不存在`)
  378. }
  379. },
  380. /**
  381. * 取消订单
  382. * @param orderItem
  383. */
  384. handleCancelOrder(orderItem) {
  385. let _this = this;
  386. const modalOptions = {
  387. title: _this.$t('common.notice_dialog_title'),
  388. content: '您确定要取消该订单吗?',
  389. confirmText: '确定取消',
  390. cancelText: '点错了',
  391. success: ({confirm}) => {
  392. confirm ? this.handleDoCancel(orderItem) : undefined
  393. }
  394. }
  395. uni.showModal(modalOptions)
  396. },
  397. /**
  398. * 确定取消订单
  399. * @param orderItem
  400. * @return {Promise<void>}
  401. */
  402. async handleDoCancel(orderItem) {
  403. this.$showLoading()
  404. try {
  405. await NET.request(API.CancelOrder, {
  406. orderId: orderItem.orderId
  407. }, 'POST')
  408. await this.handleRefreshList()
  409. uni.showToast({
  410. icon: 'none',
  411. title: '取消成功'
  412. })
  413. } finally {
  414. this.$hideLoading()
  415. }
  416. },
  417. /**
  418. * 确认收货
  419. * @param orderItem
  420. */
  421. handleConfirmReceipt(orderItem) {
  422. let _this = this;
  423. const modalOptions = {
  424. title: _this.$t('common.notice_dialog_title'),
  425. content: '确定您已经收到货物,否则会造成财产损失',
  426. confirmText: '确定收到',
  427. cancelText: '点错了',
  428. success: ({confirm}) => {
  429. confirm ? this.handleDoConfirmReceipt(orderItem) : undefined
  430. }
  431. }
  432. uni.showModal(modalOptions)
  433. },
  434. /**
  435. * 确定确认收货
  436. * @param orderItem
  437. * @return {Promise<void>}
  438. */
  439. async handleDoConfirmReceipt(orderItem) {
  440. this.$showLoading()
  441. const {orderId} = orderItem
  442. try {
  443. await NET.request(API.ConfirmReceive, {
  444. orderId: orderId
  445. }, 'POST')
  446. this.tabCurrentType = 4;
  447. this.orderState = 4
  448. await this.handleRefreshList()
  449. uni.showToast({
  450. icon: 'none',
  451. title: '收货成功'
  452. })
  453. } finally {
  454. this.$hideLoading()
  455. }
  456. },
  457. /**
  458. * 删除订单
  459. * @param orderItem
  460. */
  461. handleDeleteOrder(orderItem) {
  462. let _this = this;
  463. const modalOptions = {
  464. title: _this.$t('common.notice_dialog_title'),
  465. content: '您确定要删除该订单吗?',
  466. confirmText: '确定删除',
  467. cancelText: '点错了',
  468. success: ({confirm}) => {
  469. confirm ? this.handleDoDeleteOrder(orderItem) : undefined
  470. }
  471. }
  472. uni.showModal(modalOptions)
  473. },
  474. /**
  475. * 确定删除订单
  476. * @param orderItem
  477. */
  478. async handleDoDeleteOrder(orderItem) {
  479. this.$showLoading()
  480. const {orderId} = orderItem
  481. try {
  482. await NET.request(API.DelOrder, {orderId}, 'POST')
  483. await this.handleRefreshList()
  484. uni.showToast({
  485. icon: 'none',
  486. title: this.$t('common.deletesuccess')
  487. })
  488. } finally {
  489. this.$hideLoading()
  490. }
  491. },
  492. /**
  493. * 再次购买 || 再次拼团
  494. * @param orderItem
  495. */
  496. handleBuyAgainEvent(orderItem) {
  497. const {skus, shopId, collageId} = orderItem
  498. // 判断拼团ID是否为0
  499. if (collageId !== 0) {
  500. // 拼团直接跳回商品详情
  501. const path = `../goodsModule/goodsDetails`
  502. const params = {
  503. productId: skus[0].productId,
  504. shopId,
  505. skuId: skus[0].skuId
  506. }
  507. this.$jump(path, params)
  508. } else {
  509. // 跳转详情
  510. this.goBuyAgain(orderItem)
  511. }
  512. },
  513. /**
  514. * 处理选择支付方式
  515. * @param params
  516. */
  517. handleChangePayItem(params) {
  518. const {payInfo} = this.payObj
  519. payInfo.paymentMode = params.paymentMode
  520. payInfo.huabeiPeriod = params.huabeiPeriod
  521. },
  522. /**
  523. * 处理下单支付
  524. * @param orderItem
  525. * @return {Promise<void>}
  526. */
  527. async handlePayOrder(orderItem) {
  528. const {orderPrice, collageId, orderId} = orderItem
  529. const {payObj} = this,payInfo = payObj.payInfo
  530. payObj.totalPrice = orderPrice
  531. payInfo.collageId =collageId
  532. payInfo.money =orderPrice
  533. payInfo.orderId =orderId
  534. payInfo.type =2
  535. payObj.showPayPopup = true
  536. },
  537. /**
  538. * 处理支付选择支付方式以后
  539. */
  540. async handleGoPay() {
  541. const {payObj} = this
  542. await handleDoPay(this.payObj.payInfo)
  543. payObj.showPayPopup = false
  544. payObj.totalPrice = 0
  545. payObj.payInfo = {}
  546. },
  547. /**
  548. * 去物流信息
  549. * @param orderItem
  550. */
  551. goLogisticsInformation(orderItem) {
  552. const {express, deliverFormid} = orderItem
  553. const url = `logisticsInfo?express=${ express }&deliverFormid=${ deliverFormid }`
  554. this.$jump(url)
  555. },
  556. /**
  557. * 跳转再次购买
  558. * @param orderItem
  559. * @return {Promise<void>}
  560. */
  561. async goBuyAgain(orderItem) {
  562. // 循环sku,获取商品详情,并且判断库存
  563. const postAjax = []
  564. orderItem.skus.forEach(skuItem => {
  565. postAjax.push(this.queryProductDetail(skuItem))
  566. })
  567. // 并发执行
  568. const skuDetailList = await Promise.all(postAjax);
  569. let canNotBuyNameList = []
  570. // 判断库存
  571. skuDetailList.forEach(skuDetail => {
  572. for (const skuDetailSkuMapKey in skuDetail.map) {
  573. // 判断此SKU是否存在于传进来的item
  574. const orderItemSku = orderItem.skus.find(skuItem => skuItem.skuId === skuDetail.map[skuDetailSkuMapKey].skuId);
  575. if (!orderItemSku) continue
  576. const dbSku = skuDetail.map[skuDetailSkuMapKey]
  577. if (orderItemSku.number > dbSku.stockNumber) {
  578. canNotBuyNameList.push(orderItemSku.productName)
  579. }
  580. }
  581. })
  582. // 如果有库存不足
  583. if (canNotBuyNameList.length > 0) {
  584. return uni.showToast({
  585. icon: 'none',
  586. title: canNotBuyNameList.join(",") + " " + this.$t('common.understock')
  587. })
  588. }
  589. // 制造数据
  590. const buyInfo = [{
  591. ifWork: orderItem.ifWork,
  592. shopId: orderItem.shopId,
  593. shopName: orderItem.shopName,
  594. shopDiscountId: orderItem.shopDiscountId,
  595. shopSeckillId: orderItem.shopSeckillId,
  596. skus: orderItem.skus
  597. }]
  598. uni.setStorageSync('skuItemDTOList', buyInfo)
  599. uni.navigateTo({
  600. url: '../orderModule/orderConfirm?type=1',
  601. })
  602. },
  603. /**
  604. * 获取商品详情
  605. * @param orderItem
  606. * @return {Promise<*>}
  607. */
  608. async queryProductDetail(orderItem) {
  609. const {shopId, productId, skuId} = orderItem
  610. this.$showLoading()
  611. let postData = {
  612. shopId,
  613. productId,
  614. skuId,
  615. terminal: 1
  616. }
  617. try {
  618. const res = await NET.request(API.QueryProductDetail, postData, "GET")
  619. return res.data
  620. } catch (e) {
  621. throw new Error(e)
  622. } finally {
  623. this.$hideLoading()
  624. }
  625. },
  626. /**
  627. * 邀请拼单
  628. * @param orderItem
  629. */
  630. goSpellGroup(orderItem) {
  631. const {collageId, orderId, skus, shopGroupWorkId} = orderItem
  632. const url = `../goodsModule/inviteSpell?collageId=${ collageId }&orderId=${ orderId }&type=1&productId=${ skus[0].productId }&skuId=${ skus[0].skuId }&shopGroupWorkId=${ shopGroupWorkId }`
  633. this.$jump(url)
  634. },
  635. /**
  636. * 去用户中心
  637. */
  638. goUserIndex() {
  639. this.$jumpToTabbar('../../pages/tabbar/user/index')
  640. },
  641. /**
  642. * 去退款详情
  643. * @param orderItem
  644. */
  645. goRefundDetail(orderItem) {
  646. this.$jump(`/pages_category_page2/orderModule/refundDetails?item=${ JSON.stringify(orderItem) }`)
  647. },
  648. /**
  649. * 跳转订单详情
  650. * @param orderItem
  651. */
  652. goOrderDesc(orderItem) {
  653. this.$jump(`orderDetails`, orderItem)
  654. },
  655. /**
  656. * 跳转店铺
  657. * @param id
  658. */
  659. goShop(id) {
  660. this.$jump(`../store/index?storeId=${ id }`)
  661. },
  662. /**
  663. * 申请售后
  664. * @param orderItem
  665. */
  666. goAfterSalesService(orderItem) {
  667. this.$jump(`afterSaleApply?item=${ JSON.stringify(orderItem) }`)
  668. },
  669. /**
  670. * 立即评价
  671. * @param skuItem
  672. * @param orderId
  673. */
  674. goEvaluate( skuItem, orderId) {
  675. const params = {
  676. commentData: skuItem,
  677. orderId
  678. }
  679. console.log(params)
  680. this.$jump('../goodsModule/evaluate', params)
  681. },
  682. /**
  683. * 追加评价
  684. * @param orderIndex
  685. * @param commentId
  686. */
  687. goAdditionalEvaluation(orderIndex, commentId) {
  688. const params = {
  689. addCommentVOList: this.list[orderIndex],
  690. commentId,
  691. type: 1
  692. }
  693. this.$jump('../goodsModule/addEvaluate', params)
  694. }
  695. }
  696. }
  697. </script>
  698. <style lang="scss">
  699. .tabs {
  700. position: relative;
  701. z-index: 999999;
  702. }
  703. page {
  704. width: 100%;
  705. height: 100%;
  706. background: #f6f6f6;
  707. }
  708. .nav-box-box {
  709. height: 88rpx;
  710. background: #f6f6f6;
  711. white-space: nowrap;
  712. position: fixed;
  713. top: 0;
  714. left: 0;
  715. width: 100%;
  716. z-index: 10;
  717. }
  718. .nav-box-box .item {
  719. display: inline-view;
  720. padding: 0 30rpx;
  721. box-sizing: border-box;
  722. height: 88rpx;
  723. text-align: center;
  724. line-height: 88rpx;
  725. font-size: 30rpx;
  726. color: #666;
  727. font-weight: 500;
  728. }
  729. .nav-box-box .item.active text {
  730. display: inline-view;
  731. color: #ff7911;
  732. box-sizing: border-box;
  733. height: 88rpx;
  734. border-bottom: 2px solid #ff7911;
  735. }
  736. .order-list-box {
  737. padding: 20rpx 30rpx 0;
  738. box-sizing: border-box;
  739. }
  740. .order-list-box .item {
  741. margin-bottom: 20rpx;
  742. background: #fff;
  743. border-radius: 10rpx;
  744. }
  745. .order-list-top {
  746. height: 96rpx;
  747. padding: 0 30rpx;
  748. box-sizing: border-box;
  749. display: flex;
  750. flex-direction: row;
  751. align-items: center;
  752. justify-content: space-between;
  753. border-bottom: 1px solid #eee;
  754. }
  755. .top-l {
  756. display: flex;
  757. flex-direction: row;
  758. align-items: center;
  759. }
  760. .shop-img {
  761. width: 36rpx;
  762. height: 36rpx;
  763. margin-right: 12rpx;
  764. }
  765. .shop-name {
  766. font-size: 30rpx;
  767. color: #252744;
  768. font-weight: bold;
  769. }
  770. .arrow-img {
  771. margin-left: 12rpx;
  772. margin-top: 6rpx;
  773. width: 14rpx;
  774. height: 24rpx;
  775. }
  776. .order-status {
  777. font-size: 28rpx;
  778. color: #F54639;
  779. font-weight: 400;
  780. }
  781. .order-info-box {
  782. padding: 0 30upx;
  783. box-sizing: border-box;
  784. .btnBox {
  785. width: 100%;
  786. justify-content: flex-end;
  787. .delIcon {
  788. width: 40rpx;
  789. height: 40rpx;
  790. background: url("https://wechat.hnthee.com/ceres-local-file/image/order_del.png") no-repeat center center;
  791. background-size: contain;
  792. }
  793. }
  794. .flexSpBetween {
  795. justify-content: space-between;
  796. }
  797. }
  798. .order-info {
  799. //border-bottom: 1px solid #eee;
  800. }
  801. .order-info-item {
  802. display: flex;
  803. flex-direction: row;
  804. padding: 20upx 0;
  805. }
  806. .product-img {
  807. width: 180rpx;
  808. height: 180rpx;
  809. margin-right: 25rpx;
  810. border-radius: 30rpx;
  811. }
  812. .info-box {
  813. flex: 1;
  814. display: flex;
  815. flex-direction: column;
  816. justify-content: space-between;
  817. }
  818. .product-name {
  819. font-size: 28rpx;
  820. color: #252744;
  821. display: -webkit-box;
  822. overflow: hidden;
  823. text-overflow: ellipsis;
  824. word-break: break-all;
  825. -webkit-box-orient: vertical;
  826. -webkit-line-clamp: 2;
  827. }
  828. .price-sku-box {
  829. display: flex;
  830. flex-direction: row;
  831. justify-content: space-between;
  832. }
  833. .product-sku {
  834. font-size: 28rpx;
  835. color: #90919C;
  836. margin-top: -25rpx;
  837. }
  838. .product-price {
  839. font-size: 32rpx;
  840. color: #252744;
  841. font-weight: 400;
  842. }
  843. .product-price .fuhao {
  844. font-size: 32rpx;
  845. }
  846. .product-num {
  847. display: inline-view;
  848. font-size: 32rpx;
  849. margin-left: 20upx;
  850. color: #999;
  851. }
  852. .total-price-box {
  853. font-size: 28rpx;
  854. color: #252744;
  855. text-align: right;
  856. padding: 30upx 0;
  857. }
  858. .order-btn-box {
  859. padding: 20upx 0;
  860. display: flex;
  861. flex-direction: row;
  862. justify-content: flex-end;
  863. }
  864. .order-btn-box .btn {
  865. display: inline-view;
  866. width: 150upx;
  867. height: 56upx;
  868. text-align: center;
  869. line-height: 50upx;
  870. font-size: 26upx;
  871. color: #252744;
  872. margin-left: 20upx;
  873. }
  874. .evaluate {
  875. height: 52rpx;
  876. text-align: center;
  877. line-height: 52rpx;
  878. font-size: 26rpx;
  879. padding: 0 25rpx;
  880. color: #FFFFFF;
  881. background: #252744;
  882. border-radius: 50rpx;
  883. }
  884. .evaluate2 {
  885. height: 52rpx;
  886. text-align: center;
  887. line-height: 52rpx;
  888. font-size: 26rpx;
  889. padding: 0 25rpx;
  890. background: #252744;
  891. border-radius: 50rpx;
  892. color: #FFFFFF;
  893. }
  894. .order-btn-box .btn.l {
  895. border: 1rpx solid #252744;
  896. color: #252744;
  897. border-radius: 50rpx;
  898. }
  899. .order-btn-box .btn.r {
  900. border: 1rpx solid #252744;
  901. color: #252744;
  902. border-radius: 50rpx;
  903. }
  904. .emptyOrder-box {
  905. margin-top: 70upx;
  906. .emptyOrder-img {
  907. margin-top: 30%;
  908. width: 216upx;
  909. height: 152upx;
  910. }
  911. }
  912. .Put-box1 {
  913. .btn {
  914. text-align: center;
  915. margin-top: 40rpx;
  916. border: 2rpx solid #333333;
  917. height: 80rpx;
  918. line-height: 80rpx;
  919. width: 240rpx;
  920. color: #333333;
  921. }
  922. .submit {
  923. background-color: #333333;
  924. color: #FFEBC4;
  925. }
  926. }
  927. .pay-list-content {
  928. width: 100%;
  929. padding: 60rpx 30rpx 20rpx 30rpx;
  930. box-sizing: border-box;
  931. display: flex;
  932. flex-direction: column;
  933. align-items: center;
  934. .pay-confirm-btn {
  935. width: 80%;
  936. height: 88rpx;
  937. margin-top: 15rpx;
  938. border-radius: 50rpx;
  939. color: #fff;
  940. background-color: #252744;
  941. display: flex;
  942. align-items: center;
  943. justify-content: center;
  944. }
  945. }
  946. </style>
  947. <style scoped>
  948. .container /deep/ .u-tab-item {
  949. color: #999999 !important;
  950. }
  951. </style>