order-historylist.vue 26 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001
  1. <template>
  2. <view class="container" :style="{ paddingTop: 82 + 'px' }">
  3. <view class="order-section-top">
  4. <scroll-view scroll-x scroll-with-animation class="tab-view" :scroll-left="scrollLeft">
  5. <view
  6. v-for="(item, index) in orderTabBar"
  7. :key="index"
  8. class="tab-bar-item"
  9. :class="[currentTab == index ? 'active' : '']"
  10. :data-current="index"
  11. @tap.stop="onClickTab($event)"
  12. >
  13. <text class="tab-bar-title">{{ item.text }}</text>
  14. </view>
  15. </scroll-view>
  16. <view class="tab-screen">
  17. <view
  18. v-for="(item, index) in screenTabBar"
  19. :key="index"
  20. class="tab-screen-item"
  21. :class="[screenTab == index ? 'active' : '']"
  22. :data-current="index"
  23. @tap.stop="onClickScreenTab(index,item.type)"
  24. >{{ item.text }}</view
  25. >
  26. </view>
  27. </view>
  28. <swiper
  29. class="tab-content"
  30. :current="currentTab"
  31. duration="80"
  32. @animationfinish="onChange"
  33. :style="{ height: winHeight + 'px' }"
  34. >
  35. <swiper-item v-for="(tabItem, index) in orderTabBar" :key="index">
  36. <tui-skeleton
  37. v-if="skeletonShow"
  38. backgroundColor="#fafafa"
  39. borderRadius="10rpx"
  40. :isLoading="false"
  41. :loadingType="5"
  42. ></tui-skeleton>
  43. <scroll-view
  44. scroll-y
  45. class="scoll-y tui-skeleton"
  46. @scrolltolower="scrolltolower"
  47. :style="{ height: winHeight + 'px' }"
  48. >
  49. <view :class="{ 'tui-order-list': scrollTop >= 0 }" class="tui-skeleton clearfix">
  50. <!-- 空白页 -->
  51. <empty
  52. v-if="tabItem.loaded === true && tabItem.orderList.length === 0"
  53. :typeIndex="currentTab"
  54. :navbarHeight="navbarHeight"
  55. ></empty>
  56. <!-- 列表 -->
  57. <view v-else class="tui-order-content">
  58. <view
  59. class="tui-order-item"
  60. v-for="(order, orderIndex) in tabItem.orderList"
  61. :key="orderIndex"
  62. @click.stop="detail(order)"
  63. >
  64. <view class="order-title">
  65. <view class="order-title-name">
  66. <text>{{ order.clubName ? order.clubName : '' }}</text>
  67. <text class="tags" v-if="order.svipUserFlag == 0 && order.userIdentity === 2 ">VIP</text>
  68. <text class="tags sv" v-if="order.svipUserFlag == 1">SVIP</text>
  69. </view>
  70. <view class="order-title-t">
  71. <text
  72. class="bage buss tui-skeleton-fillet"
  73. v-if="order.orderSubmitType == 3 || order.orderSubmitType == 4"
  74. >
  75. 服务商
  76. </text>
  77. <text
  78. class="bage auto tui-skeleton-fillet"
  79. v-if="
  80. order.orderSubmitType == 0 ||
  81. order.orderSubmitType == 1 ||
  82. order.orderSubmitType == 2
  83. "
  84. >
  85. 自主
  86. </text>
  87. <view class="order-title-tip tui-skeleton-fillet">
  88. {{ order.status | statusFilters }}
  89. </view>
  90. <image
  91. class="bage-icon"
  92. src="https://static.caimei365.com/app/img/icon/icon-type@3x.png"
  93. mode="widthFix"
  94. v-if="order.secondHandOrderFlag == 1"
  95. >
  96. </image>
  97. </view>
  98. <view class="order-title-b">
  99. <view class="order-title-btxt num tui-skeleton-fillet">
  100. 订单编号:{{ order.shopOrderNo }}({{ order.shopOrderId }})
  101. </view>
  102. </view>
  103. <view class="order-title-b">
  104. <view class="order-title-btxt tui-skeleton-fillet">
  105. 下单时间:{{ order.orderTime }}
  106. </view>
  107. </view>
  108. </view>
  109. <view class="goods-title">
  110. <view v-if="order.shopPromotion" class="floor-item-act">
  111. <view class="floor-tags"> {{ order.shopPromotion.name }} </view>
  112. </view>
  113. <view class="title-text tui-skeleton-fillet"> {{ order.shopName }} </view>
  114. </view>
  115. <view
  116. class="goods-item"
  117. v-for="(pros, prosIndex) in order.orderProductList"
  118. :key="prosIndex"
  119. >
  120. <view class="goods-pros-t">
  121. <view class="pros-img tui-skeleton-fillet">
  122. <image :src="pros.image" alt="" />
  123. <text class="tips" v-if="pros.giftType == 2 || pros.giftType == 1"
  124. >赠品</text
  125. >
  126. </view>
  127. <view class="pros-product clearfix">
  128. <view class="producttitle tui-skeleton-fillet">{{ pros.name }}</view>
  129. <view
  130. class="productspec tui-skeleton-fillet"
  131. v-if="pros.productCategory != 2"
  132. >
  133. 规格:{{ pros.productUnit ? pros.productUnit : '' }}
  134. </view>
  135. <view class="productprice">
  136. <view
  137. class="price tui-skeleton-fillet"
  138. :class="
  139. pros.svipPriceFlag == 1 ||
  140. PromotionsFormat(pros.productPromotion)
  141. ? 'none'
  142. : ''
  143. "
  144. >
  145. <text>¥{{ pros.price | NumFormat }}</text>
  146. </view>
  147. <view class="count tui-skeleton-fillet">
  148. <text class="small">x</text>{{ pros.num }}
  149. </view>
  150. </view>
  151. <view class="floor-item-act">
  152. <template v-if="pros.productPromotion">
  153. <view
  154. v-if="PromotionsFormat(pros.productPromotion)"
  155. class="floor-tags"
  156. @click.stop="clickPopupShow(pros.productPromotion)"
  157. >
  158. {{ pros.productPromotion.name }}
  159. <text
  160. v-if="
  161. pros.productPromotion != null &&
  162. pros.productPromotion.type != 3
  163. "
  164. >
  165. :¥{{
  166. pros.productPromotion == null
  167. ? '0.00'
  168. : pros.productPromotion.touchPrice | NumFormat
  169. }}
  170. </text>
  171. </view>
  172. <view
  173. v-else-if="pros.productPromotion.type != 3"
  174. class="floor-tags"
  175. @click.stop="clickPopupShow(pros.productPromotion)"
  176. >{{ pros.productPromotion.name }}</view
  177. >
  178. </template>
  179. <template v-if="pros.svipPriceFlag == 1">
  180. <view class="svip-tags">
  181. <view class="tags">SVIP</view>
  182. <view class="price">{{ pros.svipPriceTag }}</view>
  183. </view>
  184. </template>
  185. </view>
  186. </view>
  187. </view>
  188. </view>
  189. <view class="order-footer">
  190. <!-- <view class="order-footer-top" v-if="order.discountFee != 0">
  191. 经理折扣:¥{{ order.discountFee | NumFormat }}
  192. </view> -->
  193. <view class="order-footer-bot">
  194. <view class="count tui-skeleton-fillet">共{{ order.itemCount }}件商品</view>
  195. <view
  196. class="money tui-skeleton-fillet"
  197. v-if="order.status == 31 || order.status == 32 || order.status == 33"
  198. >
  199. 已支付:<label style="color:#f94b4b ;"
  200. >¥{{ order.receiptAmount | NumFormat }}</label
  201. >
  202. </view>
  203. <view class="money tui-skeleton-fillet" v-else>
  204. 待付总额:<label style="color:#f94b4b ;"
  205. >¥{{ order.obligation | NumFormat }}</label
  206. >
  207. </view>
  208. </view>
  209. </view>
  210. <!-- 底部button -->
  211. <cm-list-button
  212. v-if="clubSpId === listQuery.serviceProviderId"
  213. ref="orderButton"
  214. :order="order"
  215. :status="order.status"
  216. :userId="order.userId"
  217. :shopOrderId="order.shopOrderId"
  218. :rechargeGoods="order.rechargeGoods"
  219. :secondHandOrderFlag="order.secondHandOrderFlag"
  220. @buttonConfirm="handButtonConfirm"
  221. />
  222. </view>
  223. <!--加载loadding-->
  224. <tui-loadmore :visible="loadding" :index="3" type="black"/>
  225. <tui-nomore
  226. :visible="!pullUpOn"
  227. :backgroundColor="'#ffffff'"
  228. :text="nomoreText"
  229. />
  230. <!--加载loadding-->
  231. </view>
  232. </view>
  233. </scroll-view>
  234. </swiper-item>
  235. </swiper>
  236. <!-- 分享弹窗 -->
  237. <cm-share-popup
  238. :shopOrderId="handleShopOrderId"
  239. :shareType="isShareType"
  240. v-if="isShareModal"
  241. @shareConfirm="onShareAppMessage"
  242. />
  243. <!-- 支付弹窗 -->
  244. <cm-pay-popup v-if="isBigPayModal" :showModal="isBigPayModal" :payInfo="bigPayInfo" />
  245. <!-- 再来一单弹窗 -->
  246. <view class="aganBj" v-show="showAgan">
  247. <view class="alertAgan">
  248. <text class="title">{{ promptitle }}</text>
  249. <view class="goods">
  250. <view class="list" v-for="(item, index) in failList" :key="index">
  251. <image class="image-left" :src="item.image"></image>
  252. <view class="name-right">{{ item.name }}</view>
  253. </view>
  254. </view>
  255. <view class="BtnAll">
  256. <view class="closebtn btn" @click="showAgan = false">取消</view>
  257. <view class="cancel btn" @click="handleAddAgian">确定</view>
  258. </view>
  259. </view>
  260. </view>
  261. <!-- 提示弹窗 -->
  262. <tui-modal
  263. :show="modal"
  264. @click="handleClick"
  265. :content="contentModalText"
  266. :button="modalButton"
  267. color="#333"
  268. :size="32"
  269. shape="circle"
  270. :maskClosable="false"
  271. />
  272. <!-- 透明模态层 -->
  273. <modal-layer v-if="isModalLayer" />
  274. </view>
  275. </template>
  276. <script>
  277. import { mapState, mapMutations } from 'vuex'
  278. import headerBack from '@/components/cm-module/headerNavbar/header-back' // 自定义顶部导航
  279. import modalLayer from '@/components/modal-layer'
  280. import empty from '@/components/empty'
  281. import cmListButton from './components/cm-list-button' //操作按钮
  282. import cmSharePopup from './components/cm-share-popup' //分享弹窗
  283. import cmPayPopup from './components/cm-pay-popup' //分享支付
  284. import orderMixins from './mixins/orderMixins.js'
  285. export default {
  286. mixins: [orderMixins],
  287. components: {
  288. headerBack,
  289. empty,
  290. modalLayer,
  291. cmListButton,
  292. cmSharePopup,
  293. cmPayPopup
  294. },
  295. data() {
  296. return {
  297. orderTabBar: [
  298. { listType: 0, text: '全部', orderList: [] },
  299. { listType: 1, text: '待确认', orderList: [] },
  300. { listType: 2, text: '待付款', orderList: [] },
  301. { listType: 3, text: '待发货', orderList: [] },
  302. { listType: 4, text: '已发货', orderList: [] },
  303. { listType: 5, text: '退货/款', orderList: [] }
  304. ],
  305. screenTabBar: [
  306. { type: 2, text: '服务商订单' },
  307. { type: 1, text: '自主订单' }
  308. ],
  309. winHeight: '', //窗口高度
  310. currentTab: 0, //预设当前项的值
  311. screenTab: 0, //筛选预设当前项的值
  312. scrollLeft: 0, //tab标题的滚动条位置
  313. clubSpId:0, // 机构服务商Id
  314. listQuery:{
  315. listType: 0,
  316. clubId: 0,
  317. orderSubmitType: 2,
  318. serviceProviderId: 0,
  319. pageNum: 1,
  320. pageSize: 10
  321. },
  322. orderData: [],
  323. scrollTop: 0,
  324. skeletonShow: true,
  325. isClickChange: false,
  326. isShareModal: false, //控制分享弹窗
  327. isShareType:2,
  328. isBigPayModal: false, //控制分享支付
  329. bigPayInfo: { // 银联转账信息
  330. orderNo: '',// 订单编号
  331. shopOrderId: '',// 子订单编号
  332. bankName: '',// 收款网点
  333. bankNumber: '',// 收款账号
  334. receiverName: '' // 收款账户名
  335. },
  336. isModalLayer: false,
  337. loadding: false,
  338. pullUpOn: true,
  339. hasNextPage: false,
  340. pullFlag: true,
  341. navbarHeight: '',
  342. nomoreText: '上拉显示更多',
  343. showAgan: false,
  344. failList: [], // 再来一单可购买商品
  345. promptitle: '',
  346. authType:0
  347. }
  348. },
  349. onLoad(option) {
  350. let self = this
  351. this.currentTab = this.listQuery.listType = option.listType
  352. this.authType = option.authType
  353. this.initDataInfo()
  354. uni.getSystemInfo({
  355. // 高度自适应
  356. success: function(res) {
  357. let calc = res.windowHeight
  358. self.winHeight = calc - 82
  359. }
  360. })
  361. },
  362. methods: {
  363. async initDataInfo() {
  364. const clubInfo = await this.$api.getComStorage('orderUserInfo')
  365. const userInfo = await this.$api.getStorage()
  366. this.listQuery.clubId = clubInfo.clubId
  367. this.clubSpId = clubInfo.serviceProviderId
  368. this.listQuery.serviceProviderId = userInfo.serviceProviderId
  369. this.getOrderDatainit(this.currentTab)
  370. },
  371. onChange(e) {
  372. // 滚动切换标签样式
  373. let index = e.target.current || e.detail.current
  374. if (this.isClickChange) {
  375. this.currentTab = index
  376. this.isClickChange = false
  377. return
  378. }
  379. this.isClickChange = false
  380. this.currentTab = index
  381. this.listQuery.listType = index
  382. this.checkCor()
  383. this.pageNum = 1
  384. this.pullUpOn = true //切换时隐藏
  385. this.loadding = false //切换时隐藏
  386. this.nomoreText = ''
  387. this.getOrderDatainit(this.currentTab, 'tabChange')
  388. },
  389. // 点击标题切换当前页时改变样式
  390. onClickTab(e) {
  391. let tabIndex = e.target.dataset.current || e.currentTarget.dataset.current
  392. if (this.currentTab === tabIndex) {
  393. return false
  394. } else {
  395. this.isClickChange = true
  396. this.currentTab = tabIndex
  397. this.listQuery.listType = tabIndex
  398. this.pullUpOn = true //切换时隐藏
  399. this.loadding = false //切换时隐藏
  400. this.getOrderDatainit(this.currentTab)
  401. }
  402. },
  403. onClickScreenTab(index,type) {
  404. this.screenTab = index
  405. this.listQuery.orderSubmitType = type
  406. this.pullUpOn = true //切换时隐藏
  407. this.loadding = false //切换时隐藏
  408. this.nomoreText = ''
  409. this.getOrderDatainit(this.currentTab)
  410. },
  411. //判断当前滚动超过一屏时,设置tab标题滚动条。
  412. checkCor: function() {
  413. if (this.currentTab > 3) {
  414. //这里距离按实际计算
  415. this.scrollLeft = 300
  416. } else {
  417. this.scrollLeft = 0
  418. }
  419. },
  420. async getOrderDatainit(index, source) {
  421. try {
  422. this.listQuery.pageNum = 1
  423. let orderItem = this.orderTabBar[index]
  424. if (source === 'tabChange' && orderItem.loaded === true) {
  425. //tab切换只有第一次需要加载数据
  426. return
  427. }
  428. const res = await this.SellerService.GetSellerClubOrderList(this.listQuery)
  429. const data = res.data
  430. if (data.list && data.list.length > 0) {
  431. orderItem.orderList =[]
  432. orderItem.orderList = data.list
  433. //loaded新字段用于表示数据加载完毕,如果为空可以显示空白页
  434. this.hasNextPage = data.hasNextPage
  435. if (this.hasNextPage) {
  436. this.pullUpOn = false
  437. this.nomoreText = '上拉显示更多'
  438. } else {
  439. if (orderItem.orderList.length < 2) {
  440. this.pullUpOn = true
  441. } else {
  442. this.pullUpOn = false
  443. this.nomoreText = '已至底部'
  444. }
  445. }
  446. } else {
  447. this.$set(orderItem, 'loaded', true)
  448. orderItem.orderList = []
  449. }
  450. this.skeletonShow = false
  451. } catch (error) {
  452. this.$util.msg(error.msg, 2000)
  453. }
  454. },
  455. async getOnReachBottomData(index) {
  456. //上拉加载
  457. try {
  458. this.listQuery.pageNum += 1
  459. const res = await this.SellerService.GetSellerClubOrderList(this.listQuery)
  460. const data = res.data
  461. const orderItem = this.orderTabBar[index]
  462. orderItem.orderList = orderItem.orderList.concat(data.list)
  463. this.hasNextPage = data.hasNextPage
  464. this.pullFlag = false // 防上拉暴滑
  465. setTimeout(() => {
  466. this.pullFlag = true
  467. }, 500)
  468. if (this.hasNextPage) {
  469. this.pullUpOn = false
  470. this.nomoreText = '上拉显示更多'
  471. } else {
  472. this.loadding = false
  473. this.pullUpOn = false
  474. this.nomoreText = '已至底部'
  475. }
  476. } catch (error) {
  477. this.$util.msg(error.msg, 2000)
  478. }
  479. },
  480. handButtonConfirm(data) {
  481. //获取点击
  482. this.handleShopOrderId = data.shopOrderId
  483. switch (data.type) {
  484. case 'cancel': //取消订单
  485. this.modal = true
  486. this.contentModalText = '确认取消该订单吗?'
  487. this.handleModelEven = 1
  488. break
  489. case 'delete': //删除订单
  490. this.modal = true
  491. this.contentModalText = '确认删除该订单吗?'
  492. this.handleModelEven = 2
  493. break
  494. case 'confirm': // 确认订单
  495. this.modal = true
  496. this.contentModalText = '确认此订单吗?'
  497. this.handleModelEven = 3
  498. break
  499. case 'again':
  500. this.handOrderAgain(data.shopOrderId)
  501. break
  502. case 'query':
  503. this.isModalLayer = true
  504. this.$api.navigateTo('/pages/user/order/order-logistics?shopOrderId=' + data.shopOrderId)
  505. break
  506. }
  507. },
  508. scrolltolower() {
  509. if (this.hasNextPage) {
  510. this.loadding = true
  511. this.pullUpOn = true
  512. this.getOnReachBottomData(this.currentTab)
  513. }
  514. },
  515. detail(order) {
  516. //订单详情跳转
  517. this.isModalLayer = true
  518. if(this.authType === '1' || this.authType === '2'){
  519. this.$api.navigateTo(
  520. `/pages/seller/order/order-club-details?listType=${this.currentTab}&shopOrderId=${order.shopOrderId}&userId=${
  521. order.userId
  522. }`
  523. )
  524. }else{
  525. this.$api.navigateTo(
  526. `/pages/seller/order/order-details?listType=${this.currentTab}&shopOrderId=${order.shopOrderId}&userId=${
  527. order.userId
  528. }`
  529. )
  530. }
  531. },
  532. handlSearchPath() {
  533. this.$api.navigateTo('/pages/seller/order/search-order')
  534. },
  535. PromotionsFormat(promo) {
  536. //促销活动类型数据处理
  537. if (promo != null) {
  538. if (promo.type == 1 && promo.mode == 1) {
  539. return true
  540. } else {
  541. return false
  542. }
  543. }
  544. return false
  545. }
  546. },
  547. onPageScroll(e) {
  548. this.scrollTop = e.scrollTop
  549. },
  550. onShow() {
  551. this.isModalLayer = false
  552. }
  553. }
  554. </script>
  555. <style lang="scss">
  556. /*tabbar end*/
  557. page {
  558. background: #f7f7f7;
  559. }
  560. /*tabbar start*/
  561. ::-webkit-scrollbar {
  562. width: 0;
  563. height: 0;
  564. color: transparent;
  565. }
  566. .order-section-top {
  567. width: 100%;
  568. position: fixed;
  569. top: 0;
  570. left: 0;
  571. z-index: 99;
  572. background: #ffffff;
  573. .tab-screen {
  574. height: 60rpx;
  575. width: 702rpx;
  576. padding: 10rpx 24rpx;
  577. border-top: 1px solid #f7f7f7;
  578. border-bottom: 1px solid #f7f7f7;
  579. display: flex;
  580. justify-content: flex-start;
  581. justify-items: center;
  582. .tab-screen-item {
  583. height: 60rpx;
  584. border-radius: 8rpx;
  585. padding: 0 24rpx;
  586. background: #f7f7f7;
  587. margin-right: 22rpx;
  588. line-height: 66rpx;
  589. font-size: $font-size-28;
  590. color: #333333;
  591. text-align: center;
  592. &.active {
  593. color: $color-system;
  594. }
  595. &:last-child {
  596. margin-right: 0;
  597. }
  598. }
  599. }
  600. }
  601. .tab-view::before {
  602. content: '';
  603. position: absolute;
  604. border-bottom: 1rpx solid #eaeef1;
  605. -webkit-transform: scaleY(0.5);
  606. transform: scaleY(0.5);
  607. bottom: 0;
  608. right: 0;
  609. left: 0;
  610. }
  611. .tab-view {
  612. width: 100%;
  613. height: 80rpx;
  614. overflow: hidden;
  615. box-sizing: border-box;
  616. background: #fff;
  617. white-space: nowrap;
  618. border-top: 1px solid #f7f7f7;
  619. }
  620. .tab-bar-item {
  621. padding: 0;
  622. height: 80rpx;
  623. min-width: 80rpx;
  624. line-height: 80rpx;
  625. margin: 0 28rpx;
  626. display: inline-block;
  627. text-align: center;
  628. box-sizing: border-box;
  629. &.active {
  630. border-bottom: 6rpx solid $color-system;
  631. }
  632. .tab-bar-title {
  633. height: 80rpx;
  634. line-height: 80rpx;
  635. font-size: $font-size-28;
  636. color: $text-color;
  637. }
  638. &.active .tab-bar-title {
  639. color: $color-system !important;
  640. }
  641. }
  642. .container {
  643. padding-bottom: env(safe-area-inset-bottom);
  644. height: auto;
  645. position: relative;
  646. }
  647. .tui-order-content {
  648. width: 100%;
  649. height: auto;
  650. box-sizing: border-box;
  651. padding: 0 20rpx;
  652. }
  653. .tui-order-list {
  654. width: 100%;
  655. position: relative;
  656. }
  657. .tui-order-item {
  658. display: flex;
  659. flex-direction: column;
  660. width: 100%;
  661. padding: 0rpx 20rpx;
  662. background: #fff;
  663. box-sizing: border-box;
  664. border-radius: 16rpx;
  665. overflow: hidden;
  666. margin: 20rpx 0;
  667. }
  668. .order-title {
  669. width: 100%;
  670. height: auto;
  671. .order-title-name {
  672. width: 100%;
  673. height: 72rpx;
  674. border-bottom: 1px solid #f7f7f7;
  675. line-height: 72rpx;
  676. text-align: left;
  677. font-size: $font-size-28;
  678. color: #333333;
  679. .tags {
  680. display: inline-block;
  681. width: 60rpx;
  682. height: 32rpx;
  683. border-radius: 16rpx 0;
  684. background: #f0cb72;
  685. font-size: $font-size-22;
  686. color: #4e4539;
  687. text-align: center;
  688. line-height: 32rpx;
  689. margin-left: 10rpx;
  690. &.sv {
  691. background: #333333;
  692. color: #f0cb72;
  693. }
  694. }
  695. }
  696. .order-title-t {
  697. width: 100%;
  698. height: 68rpx;
  699. float: left;
  700. line-height: 68rpx;
  701. position: relative;
  702. display: flex;
  703. .bage-icon {
  704. width: 50rpx;
  705. height: 50rpx;
  706. display: block;
  707. position: absolute;
  708. right: 110rpx;
  709. top: 12rpx;
  710. }
  711. .bage{
  712. display: inline-block;
  713. width: 72rpx;
  714. height: 32rpx;
  715. margin: 19rpx 10rpx 0 0;
  716. border-radius: 4rpx;
  717. line-height: 32rpx;
  718. font-size: $font-size-22;
  719. text-align: center;
  720. color: #ffffff;
  721. float: left;
  722. &.buss{
  723. background: rgb(223, 240, 255);
  724. color: rgb(126, 172, 213);
  725. padding: 0 6rpx;
  726. }
  727. &.auto{
  728. background: #7fba4f;
  729. color: #ffffff;
  730. }
  731. }
  732. .order-title-tip {
  733. font-size: $font-size-24;
  734. line-height: 68rpx;
  735. text-align: right;
  736. color: #ff2a2a;
  737. }
  738. }
  739. .order-title-b {
  740. width: 100%;
  741. height: 40rpx;
  742. float: left;
  743. margin-top: 8rpx;
  744. .order-title-btxt {
  745. float: left;
  746. font-size: $font-size-28;
  747. line-height: 40rpx;
  748. color: #999999;
  749. text-align: lef;
  750. &.num{
  751. color: #333333;
  752. }
  753. }
  754. .order-title-tip {
  755. float: right;
  756. font-size: $font-size-28;
  757. line-height: 40rpx;
  758. text-align: right;
  759. color: #ff2a2a;
  760. }
  761. }
  762. }
  763. .goods-title {
  764. width: 100%;
  765. height: 56rpx;
  766. float: left;
  767. margin-top: 10rpx;
  768. .floor-item-act {
  769. height: 56rpx;
  770. text-align: center;
  771. box-sizing: border-box;
  772. float: left;
  773. padding: 10rpx 0;
  774. margin-right: 12rpx;
  775. }
  776. .title-text {
  777. width: 400rpx;
  778. overflow: hidden;
  779. text-overflow: ellipsis;
  780. white-space: nowrap;
  781. float: left;
  782. font-size: $font-size-28;
  783. color: $text-color;
  784. text-align: left;
  785. line-height: 56rpx;
  786. font-weight: bold;
  787. }
  788. }
  789. .goods-item {
  790. width: 100%;
  791. height: auto;
  792. }
  793. .goods-pros-t {
  794. width: 100%;
  795. height: auto;
  796. padding: 24rpx 0;
  797. display: flex;
  798. .pros-img {
  799. float: left;
  800. width: 210rpx;
  801. height: 100%;
  802. border-radius: 10rpx;
  803. margin: 0 26rpx 0 0;
  804. position: relative;
  805. .tips {
  806. display: inline-block;
  807. width: 80rpx;
  808. height: 40rpx;
  809. background-image: linear-gradient(214deg, #ff4500 0%, #ff5800 53%, #ff4367 100%);
  810. line-height: 40rpx;
  811. text-align: center;
  812. font-size: $font-size-24;
  813. color: #ffffff;
  814. border-radius: 10rpx 0 10rpx 0;
  815. position: absolute;
  816. top: 0;
  817. left: 0;
  818. }
  819. image {
  820. width: 210rpx;
  821. height: 210rpx;
  822. border-radius: 10rpx;
  823. border: 1px solid #f3f3f3;
  824. }
  825. }
  826. }
  827. .pros-product {
  828. width: 460rpx;
  829. height: 100%;
  830. line-height: 36rpx;
  831. font-size: $font-size-26;
  832. position: relative;
  833. float: left;
  834. .producttitle {
  835. width: 100%;
  836. display: inline-block;
  837. height: auto;
  838. text-overflow: ellipsis;
  839. display: -webkit-box;
  840. word-break: break-all;
  841. -webkit-box-orient: vertical;
  842. -webkit-line-clamp: 2;
  843. overflow: hidden;
  844. margin-bottom: 8rpx;
  845. }
  846. .productspec {
  847. height: 36rpx;
  848. color: #999999;
  849. text-overflow: ellipsis;
  850. display: -webkit-box;
  851. word-break: break-all;
  852. -webkit-box-orient: vertical;
  853. -webkit-line-clamp: 1;
  854. overflow: hidden;
  855. }
  856. .productprice {
  857. height: 48rpx;
  858. width: 100%;
  859. float: left;
  860. .price {
  861. line-height: 48rpx;
  862. font-size: $font-size-28;
  863. width: 48%;
  864. color: #ff2a2a;
  865. float: left;
  866. font-weight: bold;
  867. &.none {
  868. text-decoration: line-through;
  869. color: #999999;
  870. }
  871. }
  872. .count {
  873. height: 100%;
  874. float: right;
  875. position: relative;
  876. .small {
  877. color: #666666;
  878. }
  879. }
  880. }
  881. .floor-item-act {
  882. width: 100%;
  883. height: 56rpx;
  884. text-align: center;
  885. box-sizing: border-box;
  886. float: left;
  887. padding: 0 0 10rpx 0;
  888. }
  889. }
  890. .order-footer {
  891. width: 100%;
  892. height: 78rpx;
  893. float: left;
  894. .order-footer-top {
  895. width: 100%;
  896. height: 34rpx;
  897. line-height: 34rpx;
  898. font-size: $font-size-24;
  899. color: #999999;
  900. text-align: right;
  901. }
  902. .order-footer-bot {
  903. width: 100%;
  904. float: left;
  905. height: 48rpx;
  906. line-height: 48rpx;
  907. font-size: $font-size-28;
  908. font-weight: bold;
  909. color: $text-color;
  910. .count {
  911. width: 50%;
  912. float: left;
  913. text-align: left;
  914. }
  915. .money {
  916. width: 50%;
  917. float: right;
  918. text-align: right;
  919. }
  920. }
  921. }
  922. .aganBj {
  923. position: fixed;
  924. left: 0;
  925. top: 0;
  926. bottom: 0;
  927. width: 100%;
  928. height: 100%;
  929. background-color: rgba(0, 0, 0, 0.5);
  930. z-index: 999999;
  931. .alertAgan {
  932. position: absolute;
  933. top: 50%;
  934. left: 50%;
  935. transform: translate(-50%, -50%);
  936. width: 580rpx;
  937. background-color: #fff;
  938. border-radius: 16rpx;
  939. .title {
  940. font-size: 30rpx;
  941. color: #333333;
  942. line-height: 42rpx;
  943. padding: 30rpx;
  944. display: block;
  945. }
  946. .goods {
  947. padding: 0 30rpx;
  948. .list {
  949. padding: 10px 0;
  950. border-bottom: 1rpx solid #e1e1e1;
  951. margin: 10rpx 0;
  952. .image-left {
  953. width: 86rpx;
  954. height: 86rpx;
  955. border: 2rpx solid #e1e1e1;
  956. border-radius: 6rpx;
  957. display: inline-block;
  958. vertical-align: middle;
  959. }
  960. .name-right {
  961. display: inline-block;
  962. width: 416rpx;
  963. margin-left: 15rpx;
  964. font-size: 26rpx;
  965. color: #666666;
  966. vertical-align: middle;
  967. word-break: break-all;
  968. overflow: hidden;
  969. text-overflow: ellipsis;
  970. display: -webkit-inline-box;
  971. -webkit-line-clamp: 2;
  972. -webkit-box-orient: vertical;
  973. }
  974. }
  975. }
  976. .BtnAll {
  977. margin-top: 30rpx;
  978. .btn {
  979. display: inline-block;
  980. width: 290rpx;
  981. height: 90rpx;
  982. line-height: 90rpx;
  983. text-align: center;
  984. &.closebtn {
  985. border-radius: 0px 0px 0px 10px;
  986. color: #999999;
  987. background: #efefef;
  988. }
  989. &.cancel {
  990. border-radius: 0px 0px 8px 0px;
  991. background: $btn-confirm;
  992. color: #fff;
  993. }
  994. }
  995. }
  996. }
  997. }
  998. </style>