多租户商城-商户小程序端
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1021 lines
24 KiB

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