good-hot.vue 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927
  1. <template>
  2. <view class="container floor clearfix">
  3. <tui-skeleton v-if="skeletonShow" backgroundColor="#fafafa" borderRadius="10rpx" :isLoading ="true" :loadingType="5"></tui-skeleton>
  4. <view v-else>
  5. <view class="container-topcontent">
  6. <view class="topcontent-image" :style="{ paddingTop: StatusBar + 'px' }">
  7. <view class="topcontent-title">
  8. 采美新品橱窗 <view class="topcontent-title-icon" @click="haveBack"> <text class="iconfont icon-fanhui"></text> </view>
  9. </view>
  10. </view>
  11. <view class="topcontent-swiper" :style="{ top: StatusBar + 40 + 'px' }">
  12. <view class="swiper-goods">
  13. <view class="swiper-banner-box">
  14. <swiper
  15. class="tui-banner-swiper tui-banner tui-skeleton-fillet"
  16. :autoplay="true"
  17. :interval="5000"
  18. :duration="500"
  19. @change="swiperChange"
  20. :circular="true"
  21. >
  22. <swiper-item
  23. v-for="(item, index) in topGoodList"
  24. :key="index"
  25. @click.stop="navToDetailPage(item.productId)"
  26. >
  27. <view class="swiper-goods-image"> <image :src="item.mainImage" mode="scaleToFill" /> </view>
  28. <view class="swiper-goods-info">
  29. <view class="swiper-goods-name"> {{ item.name }} </view>
  30. <view class="swiper-goods-btn"> <view class="btn"> 立即购买 </view> </view>
  31. </view>
  32. </swiper-item>
  33. </swiper>
  34. <view class="swiper__dots-box" v-if="topGoodList.length > 1">
  35. <view
  36. v-for="(item, idx) in topGoodList"
  37. :key="idx"
  38. :class="[idx === current ? 'swiper__dots-long' : 'none']"
  39. :data-index="current"
  40. class="swiper__dots-item"
  41. >
  42. </view>
  43. </view>
  44. </view>
  45. </view>
  46. </view>
  47. </view>
  48. <view class="container-screen">
  49. <view class="container-screen-box" @click="showDropShow">
  50. <view class="screen-box-em">品牌</view>
  51. <view class="screen-box-mi" v-if="!dropShow">
  52. <view class="screen-list" :class="isAllcheckedBrand ? 'active' : ''">全部</view>
  53. <view class="screen-list" v-for="(brand, index) in brandList" :key="index" v-if="index < 2">
  54. {{ brand.name }}
  55. </view>
  56. </view>
  57. <view class="screen-box-sp">
  58. <text class="iconfont" :class="dropShow ? 'icon-xiangshangjiantou' : 'icon-xiangxiajiantou'"></text>
  59. </view>
  60. </view>
  61. <view class="container-screen-popup" v-if="dropShow">
  62. <!-- <uni-transition mode-class="slide-top" :show=""> -->
  63. <view class="container-screen-popupbox">
  64. <!--header 顶部下拉选择框-->
  65. <scroll-view class="tui-scroll-box" scroll-y scroll-with-animation :scroll-top="scrollTop">
  66. <view class="screen-list" :class="isAllcheckedBrand ? 'active' : ''" @click="choiceBrandAll">全部</view>
  67. <view
  68. class="screen-list"
  69. v-for="(brand, index) in brandList"
  70. :key="index"
  71. @click="choiceBrand(brand, index)"
  72. :class="brand.isChecked ? 'active' : ''"
  73. >
  74. {{ brand.name }}
  75. </view>
  76. </scroll-view>
  77. <view class="container-screen-btnbox"> <view class="btns" @tap="btnCloseDrop">确定</view> </view>
  78. </view>
  79. <!-- </uni-transition> -->
  80. </view>
  81. </view>
  82. <!-- 楼层 -->
  83. <view class="container-section tui-skeleton">
  84. <view class="floor-item-banner ad_01" v-if="appletsBanner">
  85. <image class="item-img-gg" :src="appletsBanner"></image>
  86. </view>
  87. <view class="section_page_main clearfix">
  88. <view
  89. class="floor-item clearfix"
  90. v-for="(pros, idx) in productList"
  91. :key="idx"
  92. @click.stop="navToDetailPage(pros.productId)"
  93. >
  94. <image class="item-img tui-skeleton-fillet" :src="pros.image" mode="aspectFill"></image>
  95. <view class="floor-item-type" v-if="pros.productType == 2">医疗器械</view>
  96. <view class="floor-item-content">
  97. <view class="title tui-skeleton-rect">
  98. <text class="mclap-tag" v-if="pros.beautyActFlag == '1'">美博会</text>
  99. <text class="mclap" :class="pros.beautyActFlag == '1' ? 'indent' : ''"
  100. >{{ pros.name }}
  101. </text>
  102. </view>
  103. <view class="floor-item-price">
  104. <view class="floor-item-act">
  105. <view class="coupon-tags">优惠券</view>
  106. <template v-if="pros.actStatus === 1">
  107. <view class="floor-tags" v-if="PromotionsFormat(pros.promotions)">
  108. {{ pros.promotions.name }}
  109. <text v-if="pros.priceFlag != 1">:¥{{ pros.price | NumFormat }}</text>
  110. </view>
  111. <view class="floor-tags" v-else>{{ pros.promotions.name }}</view>
  112. </template>
  113. <template v-if="pros.svipProductFlag == 1">
  114. <view class="svip-tags">
  115. <view class="tags" :class="{ none: vipFlag != 1 }">SVIP</view>
  116. <view class="price" v-if="isShowVipFlag(pros)">{{ pros.svipPriceTag }}</view>
  117. </view>
  118. </template>
  119. </view>
  120. <view v-if="hasLogin" class="list-price">
  121. <template v-if="userIdentity == 1">
  122. <text
  123. class="price-larger"
  124. :class="
  125. PromotionsFormat(pros.promotions) || pros.svipProductFlag == 1
  126. ? 'none'
  127. : ''
  128. "
  129. >
  130. ¥{{
  131. (PromotionsFormat(pros.promotions) || pros.svipProductFlag == 1
  132. ? pros.originalPrice
  133. : pros.price) | NumFormat
  134. }}
  135. </text>
  136. </template>
  137. <template v-if="userIdentity == 4 && vipFlag != 1">
  138. <view class="price-larger" v-if="pros.priceFlag == 1">
  139. <text class="txt">¥未公开价格</text>
  140. </view>
  141. <view class="price-larger" v-if="pros.priceFlag == 2">
  142. <text class="txt">¥价格仅会员可见</text>
  143. </view>
  144. <view class="price-larger" v-else-if="pros.priceFlag == 3">
  145. <text class="txt">¥仅医美机构可见</text>
  146. </view>
  147. <text
  148. v-else
  149. class="price-larger"
  150. :class="
  151. PromotionsFormat(pros.promotions) || pros.svipProductFlag == 1
  152. ? 'none'
  153. : ''
  154. "
  155. >
  156. ¥{{
  157. (PromotionsFormat(pros.promotions) || pros.svipProductFlag == 1
  158. ? pros.originalPrice
  159. : pros.price) | NumFormat
  160. }}
  161. </text>
  162. </template>
  163. <template v-if="userIdentity == 3">
  164. <template v-if="pros.shopId === shopId">
  165. <view class="price-larger" v-if="pros.priceFlag == 1">
  166. <text class="txt">¥未公开价格</text>
  167. </view>
  168. <text
  169. v-else
  170. class="price-larger"
  171. :class="
  172. PromotionsFormat(pros.promotions) || pros.svipProductFlag == 1
  173. ? 'none'
  174. : ''
  175. "
  176. >
  177. ¥{{
  178. (PromotionsFormat(pros.promotions) || pros.svipProductFlag == 1
  179. ? pros.originalPrice
  180. : pros.price) | NumFormat
  181. }}
  182. </text>
  183. </template>
  184. <template v-else>
  185. <view class="list-login-now">
  186. <text class="p-no">¥</text>
  187. <uni-grader :grade="Number(pros.priceGrade)"></uni-grader>
  188. </view>
  189. </template>
  190. </template>
  191. <template v-if="userIdentity == 2 || (userIdentity == 4 && vipFlag == 1)">
  192. <view class="price-larger" v-if="pros.priceFlag == 1">
  193. <text class="txt">¥未公开价格</text>
  194. </view>
  195. <view class="price-larger" v-if="pros.priceFlag == 3 && (firstClubType!=1)">
  196. <text class="txt">¥仅医美机构可见</text>
  197. </view>
  198. <text
  199. v-else
  200. class="price-larger"
  201. :class="
  202. PromotionsFormat(pros.promotions) || pros.svipProductFlag == 1
  203. ? 'none'
  204. : ''
  205. "
  206. >
  207. ¥{{
  208. (PromotionsFormat(pros.promotions) || pros.svipProductFlag == 1
  209. ? pros.originalPrice
  210. : pros.price) | NumFormat
  211. }}
  212. </text>
  213. </template>
  214. </view>
  215. <view v-else class="list-login-now">
  216. <text class="p-no">¥</text>
  217. <uni-grader :grade="Number(pros.priceGrade)"></uni-grader>
  218. </view>
  219. </view>
  220. </view>
  221. </view>
  222. </view>
  223. <!--加载loadding-->
  224. <tui-loadmore :visible="loadding" :index="3" type="black"></tui-loadmore>
  225. <tui-nomore :visible="!pullUpOn" :backgroundColor="'#F7F7F7'" :text="nomoreText"></tui-nomore>
  226. <!--加载loadding-->
  227. </view>
  228. </view>
  229. </view>
  230. </template>
  231. <script>
  232. import { mapState, mapMutations } from 'vuex'
  233. import uniGrader from '@/components/uni-grade/uni-grade.vue'
  234. export default {
  235. components: {
  236. uniGrader
  237. },
  238. data() {
  239. return {
  240. StatusBar: this.StatusBar,
  241. skeletonShow:true,
  242. dropShow: false,
  243. vipFlag: 0,
  244. userIdentity: 0,
  245. productList: [],
  246. brandList: [],
  247. checkedBrandList: [],
  248. isAllcheckedBrand: true,
  249. topGoodList: [],
  250. current: 0,
  251. appletsBanner: '',
  252. listQuery: {
  253. userId:0,
  254. brandID:'',
  255. pageSize: 10,
  256. pageNum: 1
  257. },
  258. NavigationBarTitle: '',
  259. nomoreText: '上拉显示更多',
  260. hasNextPage: false,
  261. loadding: false,
  262. pullUpOn: true,
  263. pullFlag: true
  264. }
  265. },
  266. onLoad(option) {
  267. this.initGetStotage()
  268. },
  269. filters: {
  270. NumFormat: function(text) {
  271. //处理金额
  272. return Number(text).toFixed(2)
  273. }
  274. },
  275. computed: {
  276. ...mapState(['hasLogin', 'userInfo', 'identity'])
  277. },
  278. methods: {
  279. async initGetStotage() {
  280. // 初始化
  281. const userInfo = await this.$api.getStorage()
  282. this.listQuery.userId = userInfo.userId ? userInfo.userId : 0
  283. this.vipFlag = userInfo.vipFlag ? userInfo.vipFlag : 0
  284. this.userIdentity = userInfo.userIdentity ? userInfo.userIdentity : 0
  285. this.GetHomeRecommend()
  286. this.GetHomeNewBrandNames()
  287. this.GetHomeNewFloorList()
  288. },
  289. GetHomeNewBrandNames(){
  290. //新品商品品牌列表
  291. this.CommonService.GetHomeNewBrandNames().then(response => {
  292. this.brandList = response.data
  293. })
  294. .catch(error => {
  295. console.log('获取新品橱窗推荐模块信息异常')
  296. })
  297. },
  298. GetHomeRecommend() {
  299. //新品橱窗顶部推荐
  300. this.CommonService.GetHomeRecommend().then(response => {
  301. this.topGoodList = response.data
  302. })
  303. .catch(error => {
  304. console.log('获取新品橱窗推荐模块信息异常')
  305. })
  306. },
  307. GetHomeNewFloorList() {
  308. //楼层查看更多
  309. this.CommonService.GetHomeNewFloorList(this.listQuery)
  310. .then(response => {
  311. let data = response.data
  312. this.productList = data.results
  313. this.hasNextPage = data.hasNextPage
  314. this.skeletonShow = false
  315. if (this.hasNextPage) {
  316. this.pullUpOn = false
  317. this.nomoreText = '上拉显示更多'
  318. } else {
  319. if (this.productList.length < 6) {
  320. this.pullUpOn = true
  321. } else {
  322. this.pullUpOn = false
  323. this.loadding = false
  324. this.nomoreText = '已至底部'
  325. }
  326. }
  327. })
  328. .catch(error => {
  329. this.$util.msg(error.msg, 2000)
  330. })
  331. },
  332. OnReachBottomData() {
  333. // 上滑加载
  334. this.listQuery.pageNum += 1
  335. this.CommonService.GetHomeNewFloorList(this.listQuery)
  336. .then(response => {
  337. let data = response.data
  338. this.hasNextPage = data.hasNextPage
  339. this.productList = this.productList.concat(data.results)
  340. this.skeletonShow = false
  341. if (this.hasNextPage) {
  342. this.pullUpOn = false
  343. this.nomoreText = '上拉显示更多'
  344. } else {
  345. this.pullUpOn = false
  346. this.loadding = false
  347. this.nomoreText = '已至底部'
  348. }
  349. })
  350. .catch(error => {
  351. this.$util.msg(error.msg, 2000)
  352. })
  353. },
  354. PromotionsFormat(promo) {
  355. //促销活动类型数据处理
  356. if (promo != null) {
  357. if (promo.type == 1 && promo.mode == 1) {
  358. return true
  359. } else {
  360. return false
  361. }
  362. }
  363. return false
  364. },
  365. navToDetailPage(productId) {
  366. //跳转商品详情页
  367. this.$api.navigateTo(`/pages/goods/product?id=${productId}`)
  368. },
  369. isShowVipFlag(pros) {
  370. // 超级会员价格显示控制
  371. if (this.hasLogin && pros.priceFlag != 1) {
  372. if (this.userIdentity == 4 && this.vipFlag == 1) {
  373. return true
  374. } else if (this.userIdentity == 2) {
  375. return true
  376. }
  377. }
  378. },
  379. swiperChange(e) {
  380. //轮播图切换
  381. const index = e.detail.current
  382. this.current = index
  383. },
  384. choiceBrand(brand, index) {
  385. // 选择品牌
  386. brand.isChecked = !brand.isChecked
  387. if (brand.isChecked) {
  388. this.checkedBrandList.push(brand.id)
  389. } else {
  390. this.checkedBrandList.splice(index, 1)
  391. }
  392. this.isAllcheckedBrand = false
  393. this.checkedBrandLength = this.checkedBrandList.length
  394. console.log('checkedBrandList', this.checkedBrandList)
  395. this.listQuery.brandID = this.checkedBrandList.join(',')
  396. console.log('this.listQuery.brandID', this.listQuery.brandID)
  397. },
  398. choiceBrandAll() {
  399. // 点击选择全部品牌
  400. this.isAllcheckedBrand = true
  401. this.listQuery.brandID = ''
  402. this.brandList.forEach(el => {
  403. el.isChecked = false
  404. })
  405. },
  406. showDropShow() {
  407. this.dropShow = !this.dropShow
  408. },
  409. btnCloseDrop() {
  410. this.dropShow = false
  411. this.productList = []
  412. this.listQuery.pageNum = 1
  413. this.GetHomeNewFloorList()
  414. },
  415. haveBack(){
  416. uni.navigateBack({
  417. delta: 1
  418. })
  419. },
  420. },
  421. onPullDownRefresh() {
  422. setTimeout(() => {
  423. this.productList = []
  424. this.listQuery.pageNum = 1
  425. this.GetHomeNewFloorList()
  426. uni.stopPullDownRefresh()
  427. }, 200)
  428. },
  429. onReachBottom() {
  430. if (this.hasNextPage) {
  431. this.loadding = true
  432. this.pullUpOn = true
  433. this.OnReachBottomData()
  434. }
  435. },
  436. onShow() {}
  437. }
  438. </script>
  439. <style lang="scss">
  440. page {
  441. background-color: #f7f7f7;
  442. }
  443. .container-home {
  444. width: 100%;
  445. height: auto;
  446. }
  447. .container-topcontent {
  448. width: 100%;
  449. height: 640rpx;
  450. background: #ffffff;
  451. box-sizing: border-box;
  452. position: relative;
  453. .topcontent-image {
  454. width: 100%;
  455. height: 430rpx;
  456. background: url(https://static.caimei365.com/app/img/hot/hot-bg@2x.png);
  457. background-size: cover;
  458. box-sizing: border-box;
  459. .topcontent-title {
  460. width: 100%;
  461. height: 80rpx;
  462. line-height: 80rpx;
  463. font-size: 38rpx;
  464. color: #ffffff;
  465. font-weight: bold;
  466. text-align: center;
  467. position: relative;
  468. }
  469. .topcontent-title-icon {
  470. width: 50rpx;
  471. height: 50rpx;
  472. line-height: 50rpx;
  473. position: absolute;
  474. left: 24rpx;
  475. top: 14rpx;
  476. border-radius: 50%;
  477. text-align: center;
  478. background: rgba(255, 255, 255, 0.6);
  479. border: 0.5px solid rgba(0, 0, 0, 0.1);
  480. box-sizing: border-box;
  481. z-index: 9999;
  482. .iconfont {
  483. height: 100%;
  484. width: 100%;
  485. font-size: 32rpx;
  486. display: inline-block;
  487. overflow: hidden;
  488. }
  489. }
  490. }
  491. .topcontent-swiper {
  492. width: 100%;
  493. height: auto;
  494. position: absolute;
  495. left: 0;
  496. }
  497. .swiper-goods {
  498. width: 100%;
  499. height: auto;
  500. position: relative;
  501. background-size: cover;
  502. }
  503. .swiper-banner-box {
  504. width: 100%;
  505. height: 360rpx;
  506. position: relative;
  507. background-size: cover;
  508. }
  509. .tui-banner-swiper {
  510. width: 680rpx;
  511. margin: 0 auto;
  512. height: 340rpx;
  513. background: url(https://static.caimei365.com/app/img/hot/hot-bg@3x.png);
  514. background-size: cover;
  515. border-radius: 24rpx;
  516. overflow: hidden;
  517. transform: translateY(0);
  518. box-shadow: 0px 3px 6px rgba(225, 86, 22, 0.08);
  519. margin-top: 16rpx;
  520. padding: 12rpx;
  521. .swiper-goods-image {
  522. width: 336rpx;
  523. height: 336rpx;
  524. float: left;
  525. image {
  526. width: 336rpx;
  527. height: 336rpx;
  528. display: block;
  529. border-radius: 8rpx;
  530. }
  531. }
  532. .swiper-goods-info {
  533. width: 326rpx;
  534. height: 336rpx;
  535. box-sizing: border-box;
  536. padding:32rpx 24rpx;
  537. float: right;
  538. position: relative;
  539. .swiper-goods-name {
  540. width: 100%;
  541. height: auto;
  542. line-height: 44rpx;
  543. text-overflow: ellipsis;
  544. display: -webkit-box;
  545. word-break: break-all;
  546. -webkit-box-orient: vertical;
  547. -webkit-line-clamp: 4;
  548. overflow: hidden;
  549. font-size: 28rpx;
  550. color: #333333;
  551. text-align: center;
  552. }
  553. .swiper-goods-btn {
  554. width: 100%;
  555. height: 64rpx;
  556. position: absolute;
  557. bottom: 60rpx;
  558. left: 0;
  559. .btn {
  560. width: 200rpx;
  561. height: 64rpx;
  562. margin: 0 auto;
  563. text-align: center;
  564. line-height: 64rpx;
  565. background-color: #f94b4b;
  566. font-size: 26rpx;
  567. color: #ffffff;
  568. border-radius: 32rpx;
  569. }
  570. }
  571. }
  572. }
  573. .swiper__dots-box {
  574. position: absolute;
  575. bottom: -60rpx;
  576. left: 0;
  577. right: 0;
  578. /* #ifndef APP-NVUE */
  579. display: flex;
  580. /* #endif */
  581. flex: 1;
  582. flex-direction: row;
  583. justify-content: center;
  584. align-items: center;
  585. .swiper__dots-item {
  586. width: 14rpx;
  587. height: 8rpx;
  588. border-radius: 4rpx;
  589. margin-left: 6px;
  590. background-color: rgba(225, 86, 22, 0.39);
  591. }
  592. .swiper__dots-long {
  593. width: 40rpx;
  594. height: 8rpx;
  595. border-radius: 4rpx;
  596. background-color: #e15616;
  597. transition: all 0.4s;
  598. }
  599. }
  600. .swiper-banner-msg {
  601. width: 100%;
  602. height: 54rpx;
  603. box-sizing: border-box;
  604. padding: 0 24rpx;
  605. margin-top: 24rpx;
  606. .content {
  607. width: 100%;
  608. height: 54rpx;
  609. box-sizing: border-box;
  610. padding: 0 34rpx;
  611. background-color: #fff0e9;
  612. border-radius: 16rpx;
  613. .item {
  614. width: 33.33%;
  615. height: 54rpx;
  616. line-height: 54rpx;
  617. font-size: $font-size-24;
  618. color: $color-system;
  619. float: left;
  620. &.le {
  621. text-align: left;
  622. }
  623. &.ce {
  624. text-align: center;
  625. }
  626. &.ri {
  627. text-align: right;
  628. }
  629. .iconfont {
  630. color: $color-system;
  631. font-size: $font-size-32;
  632. .sm {
  633. font-size: $font-size-26;
  634. }
  635. }
  636. }
  637. }
  638. }
  639. }
  640. .container-screen {
  641. width: 100%;
  642. height: 138rpx;
  643. padding: 24rpx;
  644. box-sizing: border-box;
  645. background-color: #f7f7f7;
  646. position: relative;
  647. .container-screen-box {
  648. width: 100%;
  649. height: 100%;
  650. background-color: #ffffff;
  651. border-radius: 16rpx;
  652. .screen-box-em {
  653. float: left;
  654. width: 134rpx;
  655. line-height: 90rpx;
  656. text-align: center;
  657. color: #333333;
  658. font-size: 30rpx;
  659. font-weight: bold;
  660. }
  661. .screen-box-mi {
  662. float: left;
  663. width: 468rpx;
  664. height: 100%;
  665. box-sizing: border-box;
  666. padding: 21rpx 0;
  667. .screen-list {
  668. width: 140rpx;
  669. height: 48rpx;
  670. padding: 0 12rpx;
  671. float: left;
  672. text-align: center;
  673. box-sizing: border-box;
  674. line-height: 48rpx;
  675. font-size: 30rpx;
  676. color: #666666;
  677. border-radius: 24rpx;
  678. margin-right: 20rpx;
  679. text-overflow: ellipsis;
  680. overflow: hidden;
  681. display: -webkit-box;
  682. -webkit-line-clamp: 1;
  683. line-clamp: 1;
  684. -webkit-box-orient: vertical;
  685. word-break: break-all;
  686. &:last-child {
  687. margin-right: 0;
  688. }
  689. &.active {
  690. background-color: #ffe6dc;
  691. color: #e15616;
  692. }
  693. }
  694. }
  695. .screen-box-sp {
  696. float: right;
  697. width: 100rpx;
  698. line-height: 90rpx;
  699. text-align: center;
  700. .iconfont {
  701. color: #999999;
  702. font-size: 40rpx;
  703. }
  704. }
  705. }
  706. .container-screen-popup {
  707. width: 100%;
  708. height: 480rpx;
  709. box-sizing: border-box;
  710. padding: 24rpx;
  711. position: absolute;
  712. left: 0;
  713. top: 86rpx;
  714. z-index: 999;
  715. .container-screen-popupbox {
  716. width: 100%;
  717. height: 100%;
  718. box-sizing: border-box;
  719. padding: 0 24rpx;
  720. background-color: #ffffff;
  721. border-radius: 0 0 16rpx 16rpx;
  722. box-shadow: 0 10rpx 14rpx 0 rgba(86, 119, 252, 0.2);
  723. }
  724. .tui-scroll-box {
  725. width: 100%;
  726. height: 300rpx;
  727. overflow: hidden;
  728. .screen-list {
  729. width: 140rpx;
  730. height: 48rpx;
  731. padding: 0 12rpx;
  732. float: left;
  733. text-align: center;
  734. box-sizing: border-box;
  735. line-height: 48rpx;
  736. font-size: 30rpx;
  737. color: #666666;
  738. border-radius: 24rpx;
  739. margin-right: 30rpx;
  740. margin-bottom: 30rpx;
  741. text-overflow: ellipsis;
  742. overflow: hidden;
  743. display: -webkit-box;
  744. -webkit-line-clamp: 1;
  745. line-clamp: 1;
  746. -webkit-box-orient: vertical;
  747. word-break: break-all;
  748. &:nth-child(4n) {
  749. margin-right: 0;
  750. }
  751. &.active {
  752. background-color: #ffe6dc;
  753. color: #e15616;
  754. }
  755. }
  756. }
  757. .container-screen-btnbox {
  758. width: 100%;
  759. height: 84rpx;
  760. margin-top: 15rpx;
  761. .btns {
  762. width: 314rpx;
  763. height: 84rpx;
  764. line-height: 84rpx;
  765. border-radius: 42rpx;
  766. text-align: center;
  767. font-size: 30rpx;
  768. color: #ffffff;
  769. background: $btn-confirm;
  770. margin: 0 auto;
  771. }
  772. }
  773. }
  774. }
  775. .container-section {
  776. width: 100%;
  777. height: auto;
  778. background-color: #f7f7f7;
  779. box-sizing: border-box;
  780. padding: 0 24rpx 24rpx 24rpx;
  781. }
  782. .floor-item-banner {
  783. width: 100%;
  784. height: 240rpx;
  785. margin-bottom: 20rpx;
  786. .item-img-gg {
  787. width: 100%;
  788. height: 240rpx;
  789. display: block;
  790. border-radius: 16rpx;
  791. }
  792. }
  793. .section_page_main {
  794. width: 100%;
  795. height: auto;
  796. box-sizing: border-box;
  797. .floor-item {
  798. width: 339rpx;
  799. height: 516rpx;
  800. margin-right: 20rpx;
  801. font-size: $font-size-24;
  802. color: $text-color;
  803. background: #ffffff;
  804. line-height: 36rpx;
  805. border-radius: 16rpx;
  806. margin-bottom: 20rpx;
  807. float: left;
  808. box-sizing: border-box;
  809. position: relative;
  810. &:nth-child(2n) {
  811. margin-right: 0;
  812. }
  813. .item-img {
  814. width: 339rpx;
  815. height: 339rpx;
  816. border-radius: 16rpx 16rpx 0 0;
  817. display: block;
  818. margin-bottom: 8rpx;
  819. }
  820. .floor-item-type {
  821. width: 64rpx;
  822. height: 64rpx;
  823. text-align: justify;
  824. box-sizing: border-box;
  825. padding: 10rpx;
  826. border-radius: 0 0 8rpx 8rpx;
  827. background-color: #33ccbf;
  828. font-size: $font-size-22;
  829. color: #ffffff;
  830. line-height: 25rpx;
  831. position: absolute;
  832. top: 0;
  833. right: 16rpx;
  834. }
  835. .floor-item-content {
  836. width: 100%;
  837. padding: 0 20rpx;
  838. box-sizing: border-box;
  839. }
  840. .floor-item-act {
  841. display: block;
  842. width: 100%;
  843. height: 32rpx;
  844. text-align: center;
  845. box-sizing: border-box;
  846. }
  847. .title-none {
  848. font-size: $font-size-26;
  849. color: #ff2a2a;
  850. line-height: 54rpx;
  851. }
  852. .title {
  853. width: 100%;
  854. height: 70rpx;
  855. display: flex;
  856. line-height: 35rpx;
  857. flex-direction: column;
  858. margin: 8rpx 0;
  859. padding: 0;
  860. position: relative;
  861. .mclap {
  862. width: 100%;
  863. line-height: 35rpx;
  864. text-overflow: ellipsis;
  865. display: -webkit-box;
  866. word-break: break-all;
  867. -webkit-box-orient: vertical;
  868. -webkit-line-clamp: 2;
  869. overflow: hidden;
  870. font-size: 26rpx;
  871. &.indent {
  872. text-indent: 95rpx;
  873. }
  874. }
  875. .mclap-tag {
  876. display: block;
  877. width: 84rpx;
  878. height: 32rpx;
  879. background-image: linear-gradient(270deg, #f9c023 0%, #f83600 100%);
  880. border-radius: 4rpx 48rpx 4px 4px;
  881. line-height: 32rpx;
  882. font-size: $font-size-22;
  883. color: #ffffff;
  884. text-align: center;
  885. position: absolute;
  886. left: 0;
  887. top: 0;
  888. }
  889. }
  890. .list-price {
  891. color: #ff2a2a;
  892. height: 44rpx;
  893. float: left;
  894. .list-login-now{
  895. line-height: 44rpx;
  896. .p-no{
  897. height: 44rpx;
  898. line-height: 44rpx;
  899. display: inline-block;
  900. float: left;
  901. }
  902. }
  903. .price-larger {
  904. width: 100%;
  905. height: 44rpx;
  906. font-size: 32rpx;
  907. &.none {
  908. text-decoration: line-through;
  909. color: #999999;
  910. }
  911. &.small {
  912. font-size: $font-size-24;
  913. }
  914. .txt {
  915. font-size: $font-size-24;
  916. display: inline-block;
  917. line-height: 44rpx;
  918. text-align: left;
  919. float: left;
  920. }
  921. }
  922. }
  923. }
  924. }
  925. </style>