search-order.vue 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020
  1. <template>
  2. <view class="search-container">
  3. <!-- <or-search :theme="themeClass" @getSearchText="getSearchText"></or-search> -->
  4. <view class="search-main">
  5. <view class="search">
  6. <view class="search-input">
  7. <text class="iconfont icon-iconfonticonfontsousuo1"></text>
  8. <input
  9. maxlength="20"
  10. focus
  11. type="text"
  12. value=""
  13. confirm-type="search"
  14. @focus="onFocus"
  15. @input="onShowClose"
  16. @confirm="subMitSearch()"
  17. placeholder="请输入商品关键词"
  18. v-model.trim="listQuery.searchWord"
  19. />
  20. <text class="iconfont icon-shanchu1" v-if="isShowClose" @click="delInputText()"></text>
  21. </view>
  22. <view class="search-btn" @click="subMitSearch()">搜索</view>
  23. </view>
  24. </view>
  25. <view class="search-container-history" v-if="!isShowWrapper">
  26. <view :class="'s-' + themeClass" v-if="serachRecordList.length > 0">
  27. <view class="header">
  28. 搜索历史 <text class="iconfont icon-shanchu" @click="confirmDetele"></text>
  29. </view>
  30. <view class="list">
  31. <view
  32. v-for="(item, index) in serachRecordList"
  33. :key="index"
  34. @click="keywordsClick(item.searchWord)"
  35. >{{ item.searchWord }}</view
  36. >
  37. </view>
  38. </view>
  39. </view>
  40. <view
  41. class=" order-container"
  42. v-if="isShowWrapper"
  43. :style="{ overflow: 'auto', height: showSkeleton ? windowHeight + 'px' : 'auto' }"
  44. >
  45. <scroll-view
  46. class="tui-skeleton"
  47. :style="{ height: scrollHeight + 'px' }"
  48. @scrolltolower="scrolltolower"
  49. scroll-y
  50. >
  51. <view :class="{ 'tui-order-list': scrollTop >= 0 }" class="tui-skeleton clearfix">
  52. <!-- 空白页 -->
  53. <empty v-if="isShowEmpty" :navbarHeight="navbarHeight"></empty>
  54. <!-- 列表 -->
  55. <view v-else class="tui-order-content">
  56. <view
  57. class="tui-order-item"
  58. v-for="(order, orderIndex) in orderList"
  59. :key="orderIndex"
  60. @click.stop="detail(order.orderId)"
  61. >
  62. <view class="order-title">
  63. <view class="order-title-t">
  64. <text
  65. class="bage-buss tui-skeleton-fillet"
  66. v-if="order.orderSubmitType == 3 || order.orderSubmitType == 4"
  67. >协销</text
  68. >
  69. <text
  70. class="bage-auto tui-skeleton-fillet"
  71. v-if="
  72. order.orderSubmitType == 0 ||
  73. order.orderSubmitType == 1 ||
  74. order.orderSubmitType == 2
  75. "
  76. >自主</text
  77. >
  78. <text class="bage-text tui-skeleton-fillet">订单编号:{{ order.orderNo }}</text>
  79. <image
  80. class="bage-icon"
  81. src="https://static.caimei365.com/app/img/icon/icon-type@3x.png"
  82. mode="widthFix"
  83. v-if="order.secondHandOrderFlag == 1"
  84. ></image>
  85. </view>
  86. <view class="order-title-b">
  87. <view class="order-title-btxt tui-skeleton-fillet"
  88. >下单时间:{{ order.orderTime }}</view
  89. >
  90. <view class="order-title-tip tui-skeleton-fillet">{{
  91. StateExpFormat(order.status)
  92. }}</view>
  93. </view>
  94. </view>
  95. <block v-for="(shop, index) in order.shopOrderList" :key="index">
  96. <view class="goods-title">
  97. <view v-if="shop.shopPromotion" class="floor-item-act">
  98. <view class="floor-tags">{{ shop.shopPromotion.name }}</view>
  99. </view>
  100. <view class="title-text tui-skeleton-fillet">{{ shop.shopName }}</view>
  101. </view>
  102. <view
  103. class="goods-item"
  104. v-for="(pros, prosIndex) in shop.orderProductList"
  105. :key="prosIndex"
  106. >
  107. <view class="goods-pros-t">
  108. <view class="pros-img tui-skeleton-fillet">
  109. <image :src="pros.image" alt="" />
  110. <text class="tips" v-if="pros.productType == 2 || pros.productType == 1"
  111. >赠品</text
  112. >
  113. </view>
  114. <view class="pros-product">
  115. <view class="producttitle tui-skeleton-fillet">{{ pros.name }}</view>
  116. <view
  117. class="productspec tui-skeleton-fillet"
  118. v-if="pros.productCategory != 2"
  119. >规格:{{ pros.productUnit }}</view
  120. >
  121. <view class="productprice">
  122. <view
  123. class="price tui-skeleton-fillet"
  124. :class="
  125. pros.svipPriceFlag == 1 ||
  126. PromotionsFormat(pros.productPromotion)
  127. ? 'none'
  128. : ''
  129. "
  130. >
  131. <text>¥{{ pros.price | NumFormat }}</text>
  132. </view>
  133. <view class="count tui-skeleton-fillet">
  134. <text class="small">x</text>{{ pros.num }}
  135. </view>
  136. </view>
  137. <view class="floor-item-act">
  138. <template v-if="pros.productPromotion">
  139. <view
  140. v-if="PromotionsFormat(pros.productPromotion)"
  141. class="floor-tags"
  142. @click.stop="clickPopupShow(pros.productPromotion)"
  143. >
  144. {{ pros.productPromotion.name }}
  145. <text
  146. v-if="
  147. pros.productPromotion != null &&
  148. pros.productPromotion.type != 3
  149. "
  150. >
  151. :¥{{
  152. pros.productPromotion == null
  153. ? '0.00'
  154. : pros.productPromotion.touchPrice | NumFormat
  155. }}
  156. </text>
  157. </view>
  158. <view
  159. v-else-if="pros.productPromotion.type != 3"
  160. class="floor-tags"
  161. @click.stop="clickPopupShow(pros.productPromotion)"
  162. >{{ pros.productPromotion.name }}</view
  163. >
  164. </template>
  165. <template v-if="pros.svipPriceFlag == 1">
  166. <view class="svip-tags">
  167. <view class="tags">SVIP</view>
  168. <view class="price">{{ pros.svipPriceTag }}</view>
  169. </view>
  170. </template>
  171. </view>
  172. </view>
  173. </view>
  174. </view>
  175. </block>
  176. <view class="order-footer">
  177. <view class="order-footer-top" v-if="order.discountFee != 0"
  178. >经理折扣:¥{{ order.discountFee | NumFormat }}</view
  179. >
  180. <view class="order-footer-bot">
  181. <view class="count tui-skeleton-fillet">共{{ order.productCount }}件商品</view>
  182. <view
  183. class="money tui-skeleton-fillet"
  184. v-if="order.status == 31 || order.status == 32 || order.status == 33"
  185. >
  186. 已支付:<label style="color:#f94b4b ;"
  187. >¥{{ order.receiptAmount | NumFormat }}</label
  188. >
  189. </view>
  190. <view class="money tui-skeleton-fillet" v-else>
  191. 待付总额:<label style="color:#f94b4b ;"
  192. >¥{{ order.pendingPayments | NumFormat }}</label
  193. >
  194. </view>
  195. </view>
  196. </view>
  197. <!-- 底部button -->
  198. <order-button
  199. ref="orderButton"
  200. :status="order.status"
  201. :order="order"
  202. :onlinePayFlag="order.onlinePayFlag"
  203. @buttonConfirm="handButtonConfirm"
  204. >
  205. </order-button>
  206. </view>
  207. <!--加载loadding-->
  208. <tui-loadmore :visible="loadding" :index="3" type="black"></tui-loadmore>
  209. <tui-nomore :visible="!pullUpOn" :backgroundColor="'#ffffff'" :text="nomoreText"></tui-nomore>
  210. <!--加载loadding-->
  211. </view>
  212. </view>
  213. </scroll-view>
  214. </view>
  215. <!-- 分享弹窗 -->
  216. <share-alert v-if="isShareModal" :orderId="btnoRderID" @shareConfirm="onShareAppMessage"> </share-alert>
  217. <!-- 透明模态层 -->
  218. <modal-layer v-if="isModalLayer"></modal-layer>
  219. </view>
  220. </template>
  221. <script>
  222. import orSearch from '@/components/uni-search/or-search.vue'
  223. import orderButton from './components/details/orderListButton' //按钮
  224. import modalLayer from '@/components/modal-layer'
  225. import empty from './components/empty'
  226. import shareAlert from '@/components/cm-module/modelAlert/shareAlert' //分享弹窗
  227. import authorize from '@/common/config/authorize.js'
  228. const defaultListQuery = {
  229. pageNum: 1, // 页码
  230. pageSize: 10, // 每页条数
  231. userId: 0, // 用户Id
  232. searchWord: '' // 搜索关键词
  233. }
  234. export default {
  235. components: {
  236. orSearch,
  237. orderButton,
  238. empty,
  239. shareAlert,
  240. },
  241. data() {
  242. return {
  243. listQuery: Object.assign({}, defaultListQuery),
  244. themeClass: 'block',
  245. isShowClose: false, // 是否显示清空输入框图标
  246. isSearchHistory: false, // 是都显示搜索历史
  247. serachRecordList: [],
  248. isShowWrapper: false,
  249. isModallayer: false,
  250. isShowEmpty: false,
  251. windowHeight: '',
  252. showSkeleton: true,
  253. orderList: [],
  254. btnoRderID: 0, // 点击按钮传入的的订单ID
  255. scrollTop: 0,
  256. skeletonShow: true,
  257. isShareModal: false, // 控制分享弹窗
  258. isCenceModal: false, // 控制取消订单弹窗
  259. isShowDelModal: false, // 控制删除订单弹窗
  260. isModalLayer: false,
  261. loadding: false,
  262. pullUpOn: true,
  263. hasNextPage: false,
  264. pullFlag: true,
  265. navbarHeight: '',
  266. nomoreText: '上拉显示更多',
  267. scrollHeight: '',
  268. beansType: 1,
  269. beanNumber: 0,
  270. isActivityBean: false
  271. }
  272. },
  273. onLoad() {
  274. this.initGetSerachRecord()
  275. },
  276. filters: {
  277. NumFormat(value) {
  278. //处理金额
  279. return Number(value).toFixed(2)
  280. }
  281. },
  282. methods: {
  283. subMitSearch() {
  284. if (this.listQuery.searchWord == '') {
  285. this.$util.msg('请输入商品关键词', 2000)
  286. } else {
  287. this.commodityList = []
  288. this.getOrderDatainit()
  289. }
  290. },
  291. async initGetSerachRecord() {
  292. const userInfo = await this.$api.getStorage()
  293. this.listQuery.userId = userInfo.userId ? userInfo.userId : 0
  294. this.OrderService.SearchOrderHistory({ userId: this.listQuery.userId })
  295. .then(response => {
  296. this.serachRecordList = response.data
  297. if (this.serachRecordList.length > 0) {
  298. this.isSearchHistory = true
  299. } else {
  300. this.isSearchHistory = false
  301. }
  302. })
  303. .catch(error => {
  304. this.$util.msg(error.msg, 2000)
  305. })
  306. },
  307. onShowClose() {
  308. //输入框失去焦点时触发
  309. this.inputEmpty(this.listQuery.searchWord)
  310. },
  311. onFocus() {
  312. //输入框获取焦点时触发
  313. this.inputEmpty(this.listQuery.searchWord)
  314. this.initGetSerachRecord()
  315. },
  316. delInputText() {
  317. //清除输入框内容
  318. this.listQuery.searchWord = ''
  319. this.isShowClose = false
  320. this.isShowWrapper = false
  321. this.inputEmpty(this.listQuery.searchWord)
  322. this.initGetSerachRecord()
  323. },
  324. keywordsClick(item) {
  325. //关键词搜索与历史搜索
  326. this.listQuery.searchWord = item
  327. this.isShowClose = true
  328. this.subMitSearch()
  329. },
  330. confirmDetele() {
  331. //清空历史记录
  332. this.$util.modal('提示', '确定删除历史记录?', '确定', '取消', true, () => {
  333. this.OrderService.ClearOrderHistory({ userId: this.listQuery.userId })
  334. .then(response => {
  335. this.$util.msg('删除记录成功', 2000, true, 'success')
  336. this.serachRecordList = []
  337. })
  338. .catch(error => {
  339. this.$util.msg(error.msg, 2000)
  340. })
  341. })
  342. },
  343. inputEmpty(val) {
  344. this.isShowWrapper = false
  345. if (val != '') {
  346. this.isShowClose = true
  347. } else {
  348. this.isShowClose = false
  349. }
  350. },
  351. getOrderDatainit(index, source) {
  352. this.OrderService.SearchOrderInfo(this.listQuery)
  353. .then(response => {
  354. this.isShowWrapper = true
  355. this.showSkeleton = true
  356. let data = response.data
  357. if (data && data.list.length > 0) {
  358. let filrerData = data.list.filter(item => {
  359. //添加不同状态下订单的表现形式
  360. item = Object.assign(item, this.StateExpFormat(item.status))
  361. return item
  362. })
  363. this.orderList = []
  364. filrerData.forEach(item => {
  365. this.orderList.push(item)
  366. })
  367. this.hasNextPage = data
  368. if (this.hasNextPage) {
  369. this.pullUpOn = false
  370. this.nomoreText = '上拉显示更多'
  371. } else {
  372. if (this.orderList.length < 2) {
  373. this.pullUpOn = true
  374. } else {
  375. this.pullUpOn = false
  376. this.nomoreText = '已至底部'
  377. }
  378. }
  379. this.isShowEmpty = false
  380. } else {
  381. this.isShowEmpty = true
  382. }
  383. })
  384. .catch(error => {
  385. this.$util.msg(error.msg, 2000)
  386. })
  387. },
  388. getOnReachBottomData() {
  389. //上拉加载
  390. this.listQuery.pageNum += 1
  391. this.OrderService.SearchOrderInfo(this.listQuery)
  392. .then(response => {
  393. let data = response.data
  394. this.hasNextPage = data.hasNextPage
  395. this.orderList = this.orderList.concat(data.list)
  396. this.pullFlag = false // 防上拉暴滑
  397. setTimeout(() => {
  398. this.pullFlag = true
  399. }, 500)
  400. if (this.hasNextPage) {
  401. this.pullUpOn = false
  402. this.nomoreText = '上拉显示更多'
  403. } else {
  404. this.loadding = false
  405. this.pullUpOn = false
  406. this.nomoreText = '已至底部'
  407. }
  408. })
  409. .catch(error => {
  410. this.$util.msg(error.msg, 2000)
  411. })
  412. },
  413. scrolltolower() {
  414. if (this.hasNextPage) {
  415. this.loadding = true
  416. this.pullUpOn = true
  417. this.showSkeleton = false
  418. this.getOnReachBottomData()
  419. }
  420. },
  421. detail(orderId) {
  422. //订单详情跳转
  423. this.isModalLayer = true
  424. this.$api.navigateTo(`/pages/user/order/order-details?type=search&orderId=${orderId}`)
  425. },
  426. handButtonConfirm(data) {
  427. //获取点击
  428. this.handShowAlert(data)
  429. this.btnoRderID = data.orderId
  430. },
  431. handShowAlert(data) {
  432. //执行
  433. switch (data.type) {
  434. case 'delete':
  435. this.handOrderDetele(data.orderId)
  436. break
  437. case 'cancel':
  438. this.handCenceConfirm(data.orderId)
  439. break
  440. case 'query':
  441. this.isModalLayer = true
  442. this.$api.navigateTo('/pages/user/order/order-logistics?orderId=' + data.orderId)
  443. break
  444. case 'confirm':
  445. this.handOrderConfirm(data.orderId)
  446. break
  447. case 'confirmation':
  448. this.handOrderConfirmation(data.orderId)
  449. break
  450. }
  451. },
  452. handOrderConfirm(orderId) {
  453. //确认收货
  454. this.$util.modal('提示', '是否确认收货', '确定', '取消', true, () => {
  455. this.OrderService.ConfirmReceipt({ orderId: orderId })
  456. .then(response => {
  457. this.beansType = 7
  458. this.beanNumber = 100
  459. this.isActivityBean = true
  460. })
  461. .catch(error => {
  462. this.$util.msg(error.msg, 2000)
  463. })
  464. })
  465. },
  466. handOrderConfirmation(orderId) {
  467. //确认订单
  468. this.$util.modal('提示', '确认此订单?', '确定', '取消', true, () => {
  469. this.OrderService.AffirmOrder({ orderId: orderId })
  470. .then(response => {
  471. this.$util.msg(response.msg, 2000, true, 'success')
  472. setTimeout(() => {
  473. this.getOrderDatainit()
  474. }, 2000)
  475. })
  476. .catch(error => {
  477. this.$util.msg(error.msg, 2000)
  478. })
  479. })
  480. },
  481. handOrderDetele(orderId) {
  482. //删除订单
  483. this.$util.modal('提示', '确认删除该订单吗?', '确定', '取消', true, () => {
  484. this.OrderService.DeleteOrder({ orderId: orderId })
  485. .then(response => {
  486. this.$util.msg(response.msg, 2000, true, 'success')
  487. setTimeout(() => {
  488. this.getOrderDatainit()
  489. }, 2000)
  490. })
  491. .catch(error => {
  492. this.$util.msg(error.msg, 2000)
  493. })
  494. })
  495. },
  496. handCenceConfirm(orderId) {
  497. //取消订单
  498. this.$util.modal('提示', '确认取消该订单吗?', '确定', '取消', true, () => {
  499. this.OrderService.CancelOrder({ orderId: orderId , userIdentity : 0})
  500. .then(response => {
  501. this.$util.msg(response.msg, 2000, true, 'success')
  502. setTimeout(() => {
  503. this.getOrderDatainit()
  504. }, 2000)
  505. })
  506. .catch(error => {
  507. this.$util.msg(error.msg, 2000)
  508. })
  509. })
  510. },
  511. onShareAppMessage(res) {
  512. //分享转发
  513. this.isShareModal = false
  514. if (res.from === 'button') {
  515. // 来自页面内转发按钮
  516. }
  517. return {
  518. title: '您有新的分享订单,快来查看吧~',
  519. path: `/pages/user/order/order-sharelogin?orderID=${this.btnoRderID}&userId=${this.listQuery.userId}`,
  520. imageUrl: 'https://static.caimei365.com/app/img/bg/min-banner.jpg'
  521. }
  522. },
  523. setScrollHeight() {
  524. const { windowHeight, pixelRatio } = wx.getSystemInfoSync()
  525. this.windowHeight = windowHeight - 1
  526. this.scrollHeight = windowHeight - 1
  527. },
  528. PromotionsFormat(promo) {
  529. //促销活动类型数据处理
  530. if (promo != null) {
  531. if (promo.type == 1 && promo.mode == 1) {
  532. return true
  533. } else {
  534. return false
  535. }
  536. }
  537. return false
  538. },
  539. StateExpFormat(state) {
  540. //订单状态文字和颜色
  541. var HtmlStateText = '',
  542. stateTextObject = {
  543. 0: '待确认',
  544. 4: '交易完成',
  545. 5: '订单完成',
  546. 6: '已关闭',
  547. 7: '交易全退',
  548. 77: '交易全退',
  549. 11: '待付款待发货',
  550. 12: '待付款部分发货',
  551. 13: '待付款已发货',
  552. 21: '部分付款待发货',
  553. 22: '部分付款部分发货',
  554. 23: '部分付款已发货',
  555. 31: '已付款待发货',
  556. 32: '已付款部分发货',
  557. 33: '已付款已发货',
  558. 111: '待付款待发货'
  559. }
  560. Object.keys(stateTextObject).forEach(function(key) {
  561. if (key == state) {
  562. HtmlStateText = stateTextObject[key]
  563. }
  564. })
  565. return HtmlStateText
  566. },
  567. handleBeanlClick() {
  568. //关闭采美豆弹窗
  569. this.isActivityBean = false
  570. this.getOrderDatainit()
  571. }
  572. },
  573. onPageScroll(e) {
  574. this.scrollTop = e.scrollTop
  575. },
  576. onShow() {
  577. this.setScrollHeight()
  578. }
  579. }
  580. </script>
  581. <style lang="scss">
  582. @import '@/uni.scss';
  583. page {
  584. background-color: #f7f7f7 !important;
  585. }
  586. .search {
  587. width: 702rpx;
  588. height: 70rpx;
  589. padding: 12rpx 24rpx;
  590. border-bottom: 1px solid #f0f0f0;
  591. position: fixed;
  592. top: 0;
  593. left: 0;
  594. background: #ffffff;
  595. z-index: 1001;
  596. .search-input {
  597. width: 448rpx;
  598. height: 70rpx;
  599. padding: 0 68rpx;
  600. line-height: 70rpx;
  601. border-radius: 40rpx;
  602. position: relative;
  603. background: #f0f0f0;
  604. float: left;
  605. .icon-iconfonticonfontsousuo1 {
  606. font-size: 36rpx;
  607. color: #8a8a8a;
  608. position: absolute;
  609. left: 24rpx;
  610. z-index: 10;
  611. }
  612. .icon-shanchu1 {
  613. font-size: 36rpx;
  614. color: #8a8a8a;
  615. position: absolute;
  616. right: 24rpx;
  617. top: 0;
  618. padding: 0 10rpx;
  619. z-index: 10;
  620. }
  621. input {
  622. width: 448rpx;
  623. height: 70rpx;
  624. background-color: #f0f0f0;
  625. font-size: 26rpx;
  626. }
  627. }
  628. .search-btn {
  629. width: 118rpx;
  630. height: 70rpx;
  631. line-height: 70rpx;
  632. color: $color-system;
  633. font-size: 30rpx;
  634. text-align: center;
  635. float: left;
  636. }
  637. .voice-icon {
  638. width: 36rpx;
  639. height: 36rpx;
  640. padding: 16rpx 20rpx 16rpx 0;
  641. position: absolute;
  642. left: 16rpx;
  643. top: 4rpx;
  644. z-index: 10;
  645. }
  646. }
  647. .search-container {
  648. padding-top: 106rpx;
  649. }
  650. .s-block {
  651. background: #ffffff;
  652. .header {
  653. font-size: 32rpx;
  654. padding: 40rpx 24rpx 22rpx 24rpx;
  655. line-height: 42rpx;
  656. font-size: 30rpx;
  657. font-weight: bold;
  658. position: relative;
  659. .icon-shanchu {
  660. font-size: 36rpx;
  661. color: #333333;
  662. float: right;
  663. padding: 0 10rpx;
  664. z-index: 10;
  665. font-weight: normal;
  666. }
  667. }
  668. .list {
  669. display: flex;
  670. flex-wrap: wrap;
  671. padding-bottom: 40rpx;
  672. view {
  673. color: #8a8a8a;
  674. font-size: 24rpx;
  675. box-sizing: border-box;
  676. text-align: center;
  677. height: 48rpx;
  678. line-height: 48rpx;
  679. border-radius: 24rpx;
  680. margin: 12rpx;
  681. padding: 0 30rpx;
  682. overflow: hidden;
  683. white-space: nowrap;
  684. text-overflow: ellipsis;
  685. background-color: #f3f3f3;
  686. }
  687. }
  688. }
  689. .s-circle {
  690. margin-top: 30rpx;
  691. .header {
  692. font-size: 32rpx;
  693. padding: 30rpx;
  694. border-bottom: 2rpx solid #f9f9f9;
  695. position: relative;
  696. image {
  697. width: 36rpx;
  698. height: 36rpx;
  699. padding: 10rpx;
  700. position: absolute;
  701. right: 40rpx;
  702. top: 24rpx;
  703. }
  704. }
  705. .list {
  706. display: flex;
  707. flex-wrap: wrap;
  708. padding: 0 30rpx 20rpx;
  709. view {
  710. padding: 8rpx 30rpx;
  711. margin: 20rpx 30rpx 0 0;
  712. font-size: 28rpx;
  713. color: #8a8a8a;
  714. background-color: #f7f7f7;
  715. box-sizing: border-box;
  716. text-align: center;
  717. border-radius: 20rpx;
  718. }
  719. }
  720. }
  721. .wanted-block {
  722. margin-top: 30rpx;
  723. .header {
  724. font-size: 32rpx;
  725. padding: 30rpx;
  726. }
  727. .list {
  728. display: flex;
  729. flex-wrap: wrap;
  730. view {
  731. width: 50%;
  732. color: #8a8a8a;
  733. font-size: 28rpx;
  734. box-sizing: border-box;
  735. text-align: center;
  736. padding: 20rpx 0;
  737. border-top: 2rpx solid #fff;
  738. border-left: 2rpx solid #fff;
  739. background-color: #f7f7f7;
  740. overflow: hidden;
  741. white-space: nowrap;
  742. text-overflow: ellipsis;
  743. }
  744. }
  745. }
  746. .wanted-circle {
  747. margin-top: 30rpx;
  748. .header {
  749. font-size: 32rpx;
  750. padding: 30rpx;
  751. }
  752. .list {
  753. display: flex;
  754. flex-wrap: wrap;
  755. padding: 0 30rpx 20rpx;
  756. view {
  757. padding: 8rpx 30rpx;
  758. margin: 20rpx 30rpx 0 0;
  759. font-size: 28rpx;
  760. color: #8a8a8a;
  761. background-color: #f7f7f7;
  762. box-sizing: border-box;
  763. text-align: center;
  764. border-radius: 20rpx;
  765. }
  766. }
  767. }
  768. .order-container {
  769. scroll-view {
  770. height: 100%;
  771. overflow: scroll;
  772. }
  773. }
  774. .container {
  775. padding-bottom: env(safe-area-inset-bottom);
  776. height: auto;
  777. position: relative;
  778. }
  779. .tui-order-content {
  780. width: 100%;
  781. height: auto;
  782. }
  783. .tui-order-list {
  784. width: 100%;
  785. position: relative;
  786. }
  787. .tui-order-item {
  788. display: flex;
  789. flex-direction: column;
  790. width: 702rpx;
  791. padding: 20rpx 24rpx 0 24rpx;
  792. background: #fff;
  793. border-bottom: 20rpx solid #f7f7f7;
  794. }
  795. .order-title {
  796. width: 100%;
  797. height: auto;
  798. .order-title-t {
  799. width: 100%;
  800. height: 68rpx;
  801. float: left;
  802. line-height: 68rpx;
  803. position: relative;
  804. .bage-icon {
  805. width: 50rpx;
  806. height: 50rpx;
  807. display: block;
  808. position: absolute;
  809. right: 0;
  810. top: 9rpx;
  811. }
  812. .bage-buss {
  813. display: inline-block;
  814. width: 72rpx;
  815. height: 30rpx;
  816. background: radial-gradient(circle, rgba(255, 39, 180, 1) 0%, rgba(193, 77, 245, 1) 100%);
  817. border-radius: 4rpx;
  818. line-height: 30rpx;
  819. font-size: $font-size-22;
  820. text-align: center;
  821. color: #ffffff;
  822. }
  823. .bage-auto {
  824. display: inline-block;
  825. width: 72rpx;
  826. height: 30rpx;
  827. background: radial-gradient(circle, rgba(255, 180, 39, 1) 0%, rgba(245, 142, 77, 1) 100%);
  828. border-radius: 4rpx;
  829. line-height: 30rpx;
  830. font-size: $font-size-22;
  831. text-align: center;
  832. color: #ffffff;
  833. }
  834. .bage-text {
  835. display: inline-block;
  836. font-size: $font-size-28;
  837. line-height: 68rpx;
  838. text-align: left;
  839. color: $color-system;
  840. margin-left: 10rpx;
  841. }
  842. }
  843. .order-title-b {
  844. width: 100%;
  845. height: 40rpx;
  846. float: left;
  847. margin-top: 8rpx;
  848. .order-title-btxt {
  849. float: left;
  850. font-size: $font-size-28;
  851. line-height: 40rpx;
  852. color: #999999;
  853. text-align: lef;
  854. }
  855. .order-title-tip {
  856. float: right;
  857. font-size: $font-size-28;
  858. line-height: 40rpx;
  859. text-align: right;
  860. color: #ff2a2a;
  861. }
  862. }
  863. }
  864. .goods-title {
  865. width: 100%;
  866. height: 56rpx;
  867. float: left;
  868. margin-top: 10rpx;
  869. .floor-item-act {
  870. height: 56rpx;
  871. text-align: center;
  872. box-sizing: border-box;
  873. float: left;
  874. padding: 10rpx 0;
  875. margin-right: 12rpx;
  876. }
  877. .title-text {
  878. width: 400rpx;
  879. overflow: hidden;
  880. text-overflow: ellipsis;
  881. white-space: nowrap;
  882. float: left;
  883. font-size: $font-size-28;
  884. color: $text-color;
  885. text-align: left;
  886. line-height: 56rpx;
  887. font-weight: bold;
  888. }
  889. }
  890. .goods-item {
  891. width: 100%;
  892. height: auto;
  893. }
  894. .goods-pros-t {
  895. display: flex;
  896. align-items: center;
  897. width: 100%;
  898. height: 217rpx;
  899. padding: 24rpx 0;
  900. .pros-img {
  901. float: left;
  902. width: 210rpx;
  903. height: 100%;
  904. border-radius: 10rpx;
  905. margin: 0 26rpx 0 0;
  906. position: relative;
  907. .tips {
  908. display: inline-block;
  909. width: 80rpx;
  910. height: 40rpx;
  911. background-image: linear-gradient(214deg, #ff4500 0%, #ff5800 53%, #ff4367 100%);
  912. line-height: 40rpx;
  913. text-align: center;
  914. font-size: $font-size-24;
  915. color: #ffffff;
  916. border-radius: 10rpx 0 10rpx 0;
  917. position: absolute;
  918. top: 0;
  919. left: 0;
  920. }
  921. image {
  922. width: 210rpx;
  923. height: 210rpx;
  924. border-radius: 10rpx;
  925. border: 1px solid #f3f3f3;
  926. }
  927. }
  928. }
  929. .pros-product {
  930. width: 468rpx;
  931. height: 100%;
  932. line-height: 36rpx;
  933. font-size: $font-size-26;
  934. position: relative;
  935. .producttitle {
  936. width: 100%;
  937. display: inline-block;
  938. height: auto;
  939. text-overflow: ellipsis;
  940. display: -webkit-box;
  941. word-break: break-all;
  942. -webkit-box-orient: vertical;
  943. -webkit-line-clamp: 2;
  944. overflow: hidden;
  945. margin-bottom: 8rpx;
  946. }
  947. .productspec {
  948. height: 36rpx;
  949. color: #999999;
  950. }
  951. .productprice {
  952. height: 48rpx;
  953. position: absolute;
  954. width: 100%;
  955. bottom: 0;
  956. .price {
  957. line-height: 48rpx;
  958. font-size: $font-size-28;
  959. width: 48%;
  960. color: #ff2a2a;
  961. float: left;
  962. font-weight: bold;
  963. &.none {
  964. text-decoration: line-through;
  965. color: #999999;
  966. }
  967. }
  968. .count {
  969. height: 100%;
  970. float: right;
  971. position: relative;
  972. .small {
  973. color: #666666;
  974. }
  975. }
  976. }
  977. .floor-item-act {
  978. width: 100%;
  979. height: 56rpx;
  980. text-align: center;
  981. box-sizing: border-box;
  982. float: left;
  983. padding: 0 0 10rpx 0;
  984. }
  985. }
  986. .order-footer {
  987. width: 100%;
  988. height: 78rpx;
  989. float: left;
  990. .order-footer-top {
  991. width: 100%;
  992. height: 34rpx;
  993. line-height: 34rpx;
  994. font-size: $font-size-24;
  995. color: #999999;
  996. text-align: right;
  997. }
  998. .order-footer-bot {
  999. width: 100%;
  1000. float: left;
  1001. height: 48rpx;
  1002. line-height: 48rpx;
  1003. font-size: $font-size-28;
  1004. font-weight: bold;
  1005. color: $text-color;
  1006. .count {
  1007. width: 50%;
  1008. float: left;
  1009. text-align: left;
  1010. }
  1011. .money {
  1012. width: 50%;
  1013. float: right;
  1014. text-align: right;
  1015. }
  1016. }
  1017. }
  1018. </style>