shopDetail.vue 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832
  1. <template>
  2. <view class="shopDetail">
  3. <!-- 导航栏 -->
  4. <!-- <zs-header title="店铺详情" :background="background"></zs-header> -->
  5. <view class="top-box">
  6. <image class="bg target" :src="info.logoPath" mode="aspectFill"></image>
  7. <view class="shop-info">
  8. <image class="shop-logo" :src="info.logoPath" mode=""></image>
  9. <view class="info-box">
  10. <view class="title-box">
  11. <view class="title">
  12. {{info.shopVo.shopName}}
  13. </view>
  14. </view>
  15. <view class="address-box">
  16. <view class="distance">
  17. 距你直线距离{{(info.shopVo.distance/1000).toFixed(2)}}km
  18. </view>
  19. <view class="address">
  20. ·{{info.district}}
  21. </view>
  22. </view>
  23. </view>
  24. </view>
  25. <view class="shop-desc">
  26. 伊藤洋华堂(Ito Yokado,日文:イトーヨーカドー),又名伊藤荣堂,于1904年...
  27. </view>
  28. </view>
  29. <view class="tab-box">
  30. <view class="tab" :class="tab == 1?'active':''" @click="handleTab(1)">
  31. 商品
  32. </view>
  33. <view class="tab" :class="tab == 2?'active':''" @click="handleTab(2)">
  34. 优惠券
  35. </view>
  36. </view>
  37. <view class="content ">
  38. <view class="discounts" v-if="freeList.length && tab == 2">
  39. <view class="title">
  40. 免费领取
  41. </view>
  42. <view class="discounts-item" v-for="(item,index) in freeList" :key="index" >
  43. <view class="card-content" :class="item.buySet == 2&&item.useCount==0?'card-used':''">
  44. <view class="info">
  45. <view class="title">
  46. {{item.goodsName}}
  47. </view>
  48. <view class="limit">
  49. {{item.useType | filterType(item)}}
  50. </view>
  51. <view class="desc" :class="[open == index?'open':'']" @click="handleOpen(index,'open')">
  52. 展开详情 <image class="jiantou" src="../../static/jiantou-icon.png" mode=""></image>
  53. </view>
  54. </view>
  55. <view class="btn-box">
  56. <view class="btn" @click="handleBuy(item)">
  57. 领取
  58. </view>
  59. </view>
  60. <view class="num" v-if="item.buySet == 2">
  61. 剩余领取次数:{{item.useCount}}次
  62. </view>
  63. </view>
  64. <view class="card-desc" v-show="open == index">
  65. <view class="time">
  66. {{item.validType | filterType1(item)}}
  67. </view>
  68. <view class="desc" v-html="item.goodsDescribe">
  69. {{item.goodsDescribe}}
  70. </view>
  71. </view>
  72. </view>
  73. </view>
  74. <view class="goods-list" v-else-if="buyList.length && tab == 1">
  75. <view class="goods-item" v-for="item in buyList" :key="item.goodsId" @click="goDetail(item)">
  76. <zs-img :src="item.goodsImg" width="342rpx" height="322rpx" raduis="full" mode="" ></zs-img>
  77. <view class="goods-info">
  78. <view class="goods-name">
  79. {{item.goodsName}}
  80. </view>
  81. <view class="type">
  82. {{goodsTypeObj[item.goodsCode]}}
  83. </view>
  84. <view class="price">
  85. ¥{{item.buyPrice}}
  86. </view>
  87. </view>
  88. </view>
  89. </view>
  90. <u-empty marginTop="100" textSize="20" v-if="!freeList.length && tab == 2" mode="data"></u-empty>
  91. <u-empty marginTop="100" textSize="20" v-if="!buyList.length && tab == 1" mode="data"></u-empty>
  92. </view>
  93. <!-- <view class="hot-title">
  94. <image class="icon" src="../../static/hot.png" mode=""></image>
  95. <view class="title">
  96. 热门推荐
  97. </view>
  98. <image class="icon" src="../../static/hot.png" mode=""></image>
  99. </view> -->
  100. <!-- 列表 -->
  101. <!-- <zs-list class="store-box" mt="0" @load="loadMore" :status="status">
  102. <view class="left">
  103. <view class="left-frist">
  104. <view class="top-box">
  105. <view class="title">
  106. 天天低价
  107. </view>
  108. <view class="type-box">
  109. <image class="hot" src="../../static/hot-white.png" mode=""></image>
  110. <view class="type">
  111. 今日超低价
  112. </view>
  113. </view>
  114. </view>
  115. <view class="image-box">
  116. <image class="image" src="https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fsafe-img.xhscdn.com%2Fbw1%2F45f7efd9-3760-4fa0-8cf0-79ca4b44d017%3FimageView2%2F2%2Fw%2F1080%2Fformat%2Fjpg&refer=http%3A%2F%2Fsafe-img.xhscdn.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=auto?sec=1695803683&t=09678f8c997578d3e8101dd2b0a597e8" mode=""></image>
  117. <view class="btn-box">
  118. <view class="btn">
  119. </view>
  120. <view class="desc">
  121. 满200享7折
  122. </view>
  123. </view>
  124. </view>
  125. </view>
  126. <view class="store-item" v-for="(item,index) in list" :key="index" @click="goShopDetail(item)">
  127. <zs-img :src="item.src" width="335rpx" mode="widthFix" ></zs-img>
  128. <view class="info">
  129. <view class="title">
  130. {{item.title}}
  131. </view>
  132. <view class="address">
  133. <image class="position" src="../../static/position.png" mode=""></image>
  134. {{item.distance}}km
  135. </view>
  136. <image v-if="index==0" class="hot-icon" src="../../static/hot1.png" mode=""></image>
  137. </view>
  138. </view>
  139. </view>
  140. <view class="right">
  141. <view class="store-item frist" @click="goShopDetail(list1[0])">
  142. <zs-img :src="list1[0].src" width="335rpx" mode="widthFix" ></zs-img>
  143. <view class="info">
  144. <view class="title">
  145. {{list1[0].title}}
  146. </view>
  147. <view class="tags">
  148. <view class="tag-item">
  149. <view class="label">
  150. </view>
  151. <view class="value">
  152. 满200享8折
  153. </view>
  154. </view>
  155. </view>
  156. </view>
  157. </view>
  158. <view v-if="index!=0" class="store-item" v-for="(item,index) in list1" :key="index" @click="goShopDetail(item)">
  159. <zs-img :src="item.src" width="335rpx" mode="widthFix" ></zs-img>
  160. <view class="info">
  161. <view class="title">
  162. {{item.title}}
  163. </view>
  164. <view class="address">
  165. <image class="position" src="../../static/position.png" mode=""></image>
  166. {{item.distance}}km
  167. </view>
  168. </view>
  169. </view>
  170. </view>
  171. </zs-list> -->
  172. <!-- 地图 -->
  173. <map v-show="false" id="map"></map>
  174. </view>
  175. </template>
  176. <script>
  177. import { allCouponByUser,creat } from '@/api/goods.js';
  178. import guid from '@/utils/guid.js'
  179. import {rpxTopx} from '@/utils/tool.js'
  180. export default {
  181. data() {
  182. return {
  183. tab:1,
  184. open:999,
  185. info: null,
  186. background:false,
  187. status: 'more',
  188. _mapContext: null,
  189. query:{
  190. currentPage:1,
  191. pageSize:99,
  192. setMealId:0,
  193. goodsType:1,
  194. shopId:'',
  195. userId:''
  196. },
  197. freeList:[],
  198. buyList:[],
  199. goodsTypeObj:{}
  200. };
  201. },
  202. filters: {
  203. filterType: function(val,item) {
  204. if(val == 1){
  205. return '无使用限制'
  206. }else if(val == 2){
  207. return '使用期至' + item.useEndTime
  208. }else if(val == 3){
  209. return '每周'+ item.day +'可用'
  210. }else if(val == 4){
  211. return '每月'+ item.day +'可用'
  212. }
  213. },
  214. filterType1: function(val,item) {
  215. if(val == 1){
  216. return '有效期:无限制'
  217. }else if(val == 2){
  218. return '有效期:' + item.validStartTime + '-' + item.validEndTime
  219. }
  220. }
  221. },
  222. methods: {
  223. // 地图中打开商家
  224. handleAdress(item) {
  225. this._mapContext.openMapApp({
  226. longitude: Number(item.longitude) ,
  227. latitude: Number(item.latitude),
  228. destination: item.shopVo.shopName,
  229. complete(r) {
  230. console.log(r);
  231. }
  232. })
  233. },
  234. init(){
  235. let userInfo
  236. if(uni.getStorageSync('userInfo')){
  237. userInfo = JSON.parse(uni.getStorageSync('userInfo'))
  238. }else{
  239. userInfo = {setMealId:0,userId:''}
  240. }
  241. this.info = JSON.parse(uni.getStorageSync('shopInfo'))
  242. this.query.shopId = this.info.shopVo.id
  243. this.query.setMealId = userInfo.setMealId
  244. this.query.userId = userInfo.userId
  245. this.allCouponByUser(this.tab)//优惠券
  246. },
  247. handleTab(val){
  248. this.tab = val
  249. this.allCouponByUser(val)
  250. },
  251. handleOpen(val,open){
  252. if(val === this[open]){
  253. this[open] = 7
  254. }else{
  255. this[open] = val
  256. }
  257. },
  258. // 点击领取
  259. handleBuy(item) {
  260. if(!uni.getStorageSync('token')){
  261. uni.showModal({
  262. title:'请登录',
  263. confirmText:'去登录',
  264. success(res){
  265. if(res.confirm){
  266. uni.navigateTo({
  267. url:'/login/login/login'
  268. })
  269. }
  270. }
  271. })
  272. }else{
  273. if(item.buySet == 2&&item.useCount == 0){
  274. return uni.showToast({
  275. title:'领取次数不足',
  276. icon:'none'
  277. })
  278. }
  279. creat({
  280. "discountId": [
  281. ],
  282. "goodsList": [
  283. item.goodsId
  284. ],
  285. "idempotent": guid(),
  286. "shopId": this.query.shopId
  287. }).then(res=>{
  288. if(res.state == 'Success'){
  289. uni.showToast({
  290. title:'领取成功'
  291. })
  292. this.allCouponByUser(2)//优惠券
  293. }
  294. })
  295. // uni.navigateTo({
  296. // url: '../qrcode/index'
  297. // })
  298. }
  299. },
  300. goShopDetail(item) {
  301. uni.setStorageSync('shopInfo', JSON.stringify(item))
  302. uni.navigateTo({
  303. url: `../../detail/shopDetail/shopDetail`
  304. })
  305. },
  306. goDetail(item){
  307. let data = item
  308. data.shopName = this.info.shopVo.shopName
  309. data.address = this.info.district
  310. uni.setStorageSync('goodsInfo', JSON.stringify(data))
  311. uni.navigateTo({
  312. url: `../goodsDetail/index`,
  313. // success: function(res) {
  314. // // 通过eventChannel向被打开页面传送数据
  315. // res.eventChannel.emit('goodsInfo', data)
  316. // }
  317. })
  318. },
  319. loadMore(){
  320. // this.status = 'loading'
  321. // setTimeout(() => {
  322. // this.status = 'more'
  323. // this.list = this.list.concat([{
  324. // src: 'https://img1.baidu.com/it/u=384382004,2638328762&fm=253&fmt=auto&app=138&f=JPEG?w=667&h=500',
  325. // title: '万安加油站(中石化)',
  326. // distance: 13.62
  327. // }, {
  328. // src: 'https://img1.baidu.com/it/u=1281595595,1208289696&fm=253&fmt=auto&app=138&f=JPEG?w=667&h=500',
  329. // title: '万安加油站(中石化)',
  330. // distance: 13.62
  331. // }])
  332. // }, 1000)
  333. },
  334. allCouponByUser(val){
  335. this.query.goodsType = val
  336. allCouponByUser(this.query).then(res=>{
  337. if(res.state == 'Success'){
  338. if(val == 1){
  339. this.buyList = res.content.records
  340. }else{
  341. this.freeList = res.content.records
  342. }
  343. uni.stopPullDownRefresh()
  344. }
  345. })
  346. },
  347. },
  348. onPullDownRefresh() {
  349. this.init()
  350. },
  351. onReady() {
  352. this._mapContext = uni.createMapContext("map", this);
  353. },
  354. onPageScroll(e) {
  355. // if(e.scrollTop >= rpxTopx(658)-84-rpxTopx(80)){
  356. // this.background = true
  357. // }else{
  358. // this.background = false
  359. // }
  360. },
  361. onShow() {
  362. this.init()
  363. },
  364. onLoad(options) {
  365. this.goodsTypeObj = JSON.parse(uni.getStorageSync('goodsTypeObj'))
  366. },
  367. }
  368. </script>
  369. <style lang="scss">
  370. .shopDetail {
  371. background: #fff;
  372. min-height: 100vh;
  373. .top-box{
  374. .bg {
  375. width: 100%;
  376. height: 240rpx;
  377. object-fit: cover;
  378. vertical-align: bottom;
  379. }
  380. .shop-info {
  381. padding: 16rpx 24rpx;
  382. margin-top: -30rpx;
  383. box-sizing: border-box;
  384. background: #fff;
  385. border-radius: 32rpx;
  386. position: relative;
  387. z-index: 2;
  388. display: flex;
  389. .shop-logo{
  390. width: 120rpx;
  391. height: 120rpx;
  392. border-radius: 16rpx 16rpx 16rpx 16rpx;
  393. margin-top: -28rpx;
  394. }
  395. .info-box{
  396. margin-left: 20rpx;
  397. color: #222222;
  398. .title-box{
  399. display: flex;
  400. justify-content: space-between;
  401. .title {
  402. font-size: 32rpx;
  403. font-weight: bold;
  404. }
  405. }
  406. .address-box{
  407. width: 100%;
  408. display: flex;
  409. align-items: center;
  410. // padding: 30rpx 0;
  411. margin-top: 12rpx;
  412. box-sizing: border-box;
  413. font-size: 22rpx;
  414. .address {
  415. display: flex;
  416. align-items: center;
  417. }
  418. .distance{
  419. }
  420. }
  421. }
  422. }
  423. .shop-desc{
  424. font-size: 20rpx;
  425. color: #AAAAAA;
  426. padding: 0 24rpx;
  427. width: 100%;
  428. overflow: hidden;
  429. text-overflow: ellipsis;
  430. box-sizing: border-box;
  431. white-space: nowrap;
  432. }
  433. }
  434. .tab-box{
  435. display: flex;
  436. height: 80rpx;
  437. background: #fff;
  438. margin: 20rpx 24rpx;
  439. border-bottom: 1rpx solid #F0F0F0;
  440. .tab{
  441. flex: 1;
  442. line-height: 80rpx;
  443. text-align: center;
  444. font-size: 28rpx;
  445. color: #222222;
  446. }
  447. .tab.active{
  448. font-weight: bold;
  449. color: #222222;
  450. position: relative;
  451. &::before{
  452. content: '';
  453. width: 40rpx;
  454. height: 8rpx;
  455. background: linear-gradient(135deg, #FFA467 0%, #FFC888 100%);
  456. border-radius: 4rpx 4rpx 4rpx 4rpx;
  457. position: absolute;
  458. bottom: 0%;
  459. left: calc(50% - 20rpx);
  460. }
  461. }
  462. }
  463. .content {
  464. padding: 0 30rpx 100rpx;
  465. .discounts {
  466. padding: 30rpx 0;
  467. border-radius: 8px;
  468. .title {
  469. font-weight: bold;
  470. font-size: 28rpx;
  471. }
  472. .discounts-item {
  473. filter: drop-shadow(0 6rpx 2rpx rgba(0,0,0,.1));
  474. .card-content.card-used{
  475. background: url('../../static/card-used.png') no-repeat;
  476. background-size: 100% 144rpx;
  477. }
  478. .card-content{
  479. display: flex;
  480. align-items: center;
  481. justify-content: space-between;
  482. background-color: rgb(239, 239, 239);
  483. background: url('../../static/card.png') no-repeat;
  484. background-repeat: no-repeat;
  485. background-size: 100% 144rpx;
  486. filter: drop-shadow(0rpx 0rpx 6rpx 2rpx rgba(0,0,0,0.1));
  487. border-radius: 16rpx;
  488. height: 144rpx;
  489. padding: 0 30rpx 0 48rpx;
  490. margin-top: 20rpx;
  491. position: relative;
  492. box-sizing: border-box;
  493. .info {
  494. .title {
  495. color: #FFAA6C;
  496. font-size: 28rpx;
  497. font-weight: bold;
  498. }
  499. .desc{
  500. display: flex;
  501. align-items: center;
  502. font-size: 20rpx;
  503. color: #AAAAAA;
  504. .jiantou{
  505. width: 20rpx;
  506. height: 20rpx;
  507. transform: rotateZ(90deg);
  508. display: block;
  509. margin-left: 10rpx;
  510. transition: transform .3s;
  511. }
  512. }
  513. .open{
  514. .jiantou{
  515. transform: rotateZ(270deg)!important;
  516. }
  517. }
  518. .red{
  519. color: $uni-text-primary!important;
  520. }
  521. .limit{
  522. font-size: 20rpx;
  523. color: #AAAAAA;
  524. margin:10rpx 0;
  525. }
  526. .time {
  527. color: #9a9a9a;
  528. font-size: 24rpx;
  529. margin-top: 15rpx;
  530. }
  531. }
  532. .btn-box{
  533. .btn {
  534. width: 118rpx;
  535. height: 48rpx;
  536. line-height: 48rpx;
  537. text-align: center;
  538. font-size: 24rpx;
  539. font-weight: bold;
  540. background: linear-gradient(135deg, #FFA467 0%, #FFC888 100%);
  541. border-radius: 24rpx;
  542. color: #fff;
  543. margin-top: 15rpx;
  544. }
  545. }
  546. .num{
  547. position: absolute;
  548. white-space: nowrap;
  549. bottom: 10rpx;
  550. right: 26rpx;
  551. font-size: 18rpx;
  552. color: #222222;
  553. }
  554. }
  555. .card-desc{
  556. font-size: 20rpx;
  557. color: #AAAAAA;
  558. padding: 20rpx 10rpx;
  559. background: #FFFFFF;
  560. border-radius: 0rpx 0rpx 16rpx 16rpx;
  561. .time{
  562. }
  563. .desc{
  564. margin-top: 22rpx;
  565. }
  566. }
  567. }
  568. }
  569. .goods-list{
  570. display: flex;
  571. justify-content: space-between;
  572. flex-wrap: wrap;
  573. .goods-item{
  574. background: #F9F9F9;
  575. // box-shadow: 0rpx 0rpx 24rpx 2rpx rgba(0,0,0,0.08);
  576. border-radius: 16rpx;
  577. width: 342rpx;
  578. box-sizing: border-box;
  579. margin-top: 20rpx;
  580. display: flex;
  581. flex-direction: column;
  582. .goods-info{
  583. display: flex;
  584. flex-direction: column;
  585. justify-content: space-between;
  586. padding: 8rpx;
  587. flex:1;
  588. .goods-name{
  589. font-weight: bold;
  590. color: #222222;
  591. font-size: 24rpx;
  592. margin: 16rpx 0;
  593. overflow: hidden;
  594. width: 100%;
  595. text-overflow: ellipsis;
  596. display: -webkit-box;
  597. -moz-box-orient: vertical;
  598. -webkit-line-clamp: 2;
  599. }
  600. .type{
  601. color: #AAAAAA;
  602. font-size: 20rpx;
  603. }
  604. .price{
  605. font-weight: bold;
  606. color: #FF4C3A;
  607. font-size: 28rpx;
  608. margin-top: 16rpx;
  609. }
  610. }
  611. }
  612. }
  613. }
  614. .hot-title{
  615. display: flex;
  616. justify-content: center;
  617. align-items: center;
  618. margin: 20rpx 0;
  619. .icon{
  620. width: 29rpx;
  621. height: 35rpx;
  622. }
  623. .title{
  624. font-size: 32rpx;
  625. color: #0F0F0F;
  626. font-weight: bold;
  627. padding: 0 10rpx;
  628. }
  629. }
  630. .zs-list {
  631. display: flex;
  632. flex-wrap: wrap;
  633. justify-content: space-between;
  634. padding: 0 30rpx;
  635. .left{
  636. .left-frist{
  637. padding: 15rpx;
  638. border-radius: 16rpx;
  639. width: 332rpx;
  640. height: 284rpx;
  641. box-sizing: border-box;
  642. background: linear-gradient(180deg, #FFDEDE 0%, #FFFFFF 100%);
  643. box-shadow: 0rpx 6rpx 12rpx 2rpx rgba(0,0,0,0.16);
  644. margin-bottom: 25rpx;
  645. .top-box{
  646. display: flex;
  647. align-items: center;
  648. justify-content: space-between;
  649. .title{
  650. color: #0F0F0F;
  651. font-size: 26rpx;
  652. }
  653. .type-box{
  654. display: flex;
  655. align-items: center;
  656. padding: 0 16rpx;
  657. height: 40rpx;
  658. line-height: 40rpx;
  659. border-radius: 20rpx;
  660. background: linear-gradient(90deg, #FE574C 0%, #FE2A5C 100%);
  661. .hot{
  662. width: 16.7rpx;
  663. height: 21.7rpx;
  664. }
  665. .type{
  666. font-size: 20rpx;
  667. font-weight: 400;
  668. color: #FFFFFF;
  669. margin-left: 6rpx;
  670. }
  671. }
  672. }
  673. .image-box{
  674. position: relative;
  675. margin-top: 20rpx;
  676. .image{
  677. width: 302rpx;
  678. height: 182rpx;
  679. border-radius: 16rpx;
  680. }
  681. .btn-box{
  682. position: absolute;
  683. left: 0;
  684. bottom: 10rpx;
  685. display: flex;
  686. align-items: center;
  687. .desc{
  688. font-size: 24rpx;
  689. font-weight: 400;
  690. color: #FFFFFF;
  691. margin-left: 10rpx;
  692. }
  693. .btn{
  694. height: 36rpx;
  695. line-height: 36rpx;
  696. padding: 0 14rpx;
  697. background: $uni-color-primary;
  698. border-radius: 8rpx;
  699. color: #FFFFFF;
  700. font-size: 20rpx;
  701. }
  702. }
  703. }
  704. }
  705. }
  706. .right{
  707. .frist{
  708. border: 1px solid #FF612E;
  709. .info{
  710. background: #FF612E;
  711. color: #fff;
  712. .address{
  713. color: #fff;
  714. }
  715. }
  716. }
  717. }
  718. .store-item {
  719. width: 335rpx;
  720. margin-bottom: 25rpx;
  721. box-shadow: 0rpx 0rpx 24rpx 2rpx rgba(0, 0, 0, 0.08);
  722. border-radius: 16rpx;
  723. background: #fff;
  724. .icon {
  725. width: 100%;
  726. height: 300rpx;
  727. border-radius: 16rpx 16rpx 0 0;
  728. }
  729. .info {
  730. padding: 20rpx;
  731. background: #fff;
  732. border-radius: 0 0 16rpx 16rpx;
  733. position: relative;
  734. .hot-icon{
  735. position: absolute;
  736. bottom: 20rpx;
  737. right: 25rpx;
  738. width: 44.6rpx;
  739. height: 48.6rpx;
  740. }
  741. .title {
  742. font-weight: bold;
  743. width: 100%;
  744. white-space: nowrap;
  745. text-overflow: ellipsis;
  746. overflow: hidden;
  747. }
  748. .tags{
  749. display: flex;
  750. align-items: center;
  751. .tag-item{
  752. line-height: 50rpx;
  753. border-radius: 8rpx;
  754. padding: 6rpx 0;
  755. font-size: 24rpx;
  756. margin-left: 10rpx;
  757. display: flex;
  758. .label{
  759. background: #FFF;
  760. color: #FE5B47;
  761. padding: 0 10rpx;
  762. border-radius: 8rpx 0 0 8rpx;
  763. }
  764. .value{
  765. color: #FFF;
  766. background: rgba(255, 255, 255, .2);
  767. padding: 0 14rpx;
  768. border-radius: 0 8rpx 8rpx 0;
  769. }
  770. }
  771. }
  772. .address {
  773. display: flex;
  774. align-items: center;
  775. margin-top: 15rpx;
  776. color: #999;
  777. .position{
  778. width: 25rpx;
  779. height: 29rpx;
  780. margin-right: 8rpx;
  781. }
  782. }
  783. }
  784. }
  785. }
  786. #map {
  787. position: relative;
  788. top: -100000px;
  789. left: -1000000px;
  790. }
  791. }
  792. </style>