search-order.vue 25 KB

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