foodDetails.jsx 6.4KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171
  1. import CustomNav from '@/components/CustomNav'
  2. import withLayout from '@/layouts'
  3. import { getShopDetail, getShopPackage, getShopcity, getExtendContent } from '@/services/home'
  4. import { useState, useEffect } from 'react'
  5. import { Swiper, SwiperItem } from '@tarojs/components';
  6. import Star from '@/components/Star/Star.jsx'
  7. import Cards from '@/components/foodCards/foodCards.jsx'
  8. import ax from '@/assets/icons/housemantj/onlove.png'
  9. import yysj from '@/assets/icons/housemantj/营业时间.png'
  10. import dw from '@/assets/icons/housemantj/地址.png'
  11. import zhuandao from '@/assets/icons/housemantj/backTop.png'
  12. import titlezs from '@/assets/icons/housemantj/标题装饰.png'
  13. import showMore from '@/assets/icons/housemantj/查看更多.png'
  14. import './foodDetails.less'
  15. import Extend from '../components/extend'
  16. export default withLayout((props) => {
  17. const { router, person } = props
  18. const { id } = props.router.params
  19. //商铺基础信息
  20. const [detail, setDetail] = useState({})
  21. //商铺套餐
  22. const [spackage, setPackage] = useState([])
  23. const [city, setCity] = useState({})
  24. //banner图集数组
  25. const [imlist, setimlist] = useState([])
  26. const [index, setIndex] = useState(0)
  27. const handchange = (e) => {
  28. setIndex(e.detail.current)
  29. }
  30. //当前套餐总数
  31. const [newpgNum, setNewpgNum] = useState(0)
  32. //全部套餐个数
  33. const [AllpgNum, setAllpgNum] = useState(0)
  34. //套餐当前页数
  35. const [page, setpage] = useState(2)
  36. const pgMore = () => {
  37. setpage(page + 1)
  38. getShopPackage(id, { pageNum: page }).then((res) => {
  39. setPackage([...spackage, ...res.records])
  40. setNewpgNum(newpgNum + res.records.length)
  41. })
  42. }
  43. //本店指南
  44. const [extend, setExtend] = useState([])
  45. //当前指南总数
  46. const [newextNum, setNewextNum] = useState(0)
  47. //全部指南个数
  48. const [AllextNum, setAllextNum] = useState(0)
  49. //指南当前页数
  50. const [epage, setepage] = useState(2)
  51. const extendMore = () => {
  52. setepage(epage + 1)
  53. getExtendContent('shop', id, { pageNum: epage }).then((res) => {
  54. setExtend([...extend, ...res.records])
  55. setNewextNum(newextNum + res.records.length)
  56. })
  57. }
  58. useEffect(() => {
  59. getShopDetail(id).then((res) => {
  60. setDetail(res)
  61. setimlist(res.imageList || [])
  62. getShopcity(res.cityId).then((res2) => {
  63. setCity(res2)
  64. })
  65. })
  66. getShopPackage(id).then((res) => {
  67. setPackage(res.records || [])
  68. setNewpgNum(res.records.length)
  69. setAllpgNum(res.total)
  70. })
  71. getExtendContent('shop', id).then((res) => {
  72. setExtend(res.records || [])
  73. setAllextNum(res.total)
  74. setNewextNum(res.records.length)
  75. })
  76. }, [])
  77. const star = parseFloat(((detail.sweetScore + detail.environmentScore + detail.serviceScore) / 3).toFixed(1));
  78. return (
  79. <view className='page-index'>
  80. <view className='index-navbar'>
  81. <CustomNav title='十公里' />
  82. </view>
  83. <view style={{ overflow: 'auto', padding: '0 30rpx', background: '#F8F8F8' }}>
  84. <scroll-view scroll-y="true" scroll-view='true' bindscrolltoupper="upper" bindscrolltolower="lower" bindscroll="scroll">
  85. <view className='storeDetails'>
  86. <Swiper
  87. className='.swiper'
  88. circular
  89. current={index}
  90. onChange={handchange}
  91. >
  92. {
  93. imlist.map((item) =>
  94. <SwiperItem>
  95. <image src={item.url} className='storeImage' >
  96. <view className='tpPage'>
  97. <text>{index + 1}</text><text>/</text><text>{imlist.length}</text>
  98. </view>
  99. </image>
  100. </SwiperItem>
  101. )
  102. }
  103. </Swiper>
  104. <view className='storeJs'>
  105. <view style={{ overflow: 'hidden' }}>
  106. <view className='storeName'>{detail.shopName}</view>
  107. <view className='sprice'>
  108. <text className='t1'>¥</text>
  109. {detail.averagePrice}/人
  110. <view className='bzRight'>
  111. <image src={ax} style={{ width: '15px', height: '15px', marginRight: '11rpx', marginBottom: '-2px' }} />
  112. 爆赞{detail.likeNum}</view>
  113. </view>
  114. </view>
  115. <view className='appraise'>
  116. <Star star={star} />
  117. <text className='storezf'>{star}</text>
  118. <view style={{ float: 'right', marginTop: '5px' }}>
  119. <text className='comment'>点评:</text>
  120. <text className='t1'>口味:{detail.sweetScore}</text>
  121. <text className='t1'>环境:{detail.environmentScore}</text>
  122. <text className='t1'>服务:{detail.serviceScore}</text>
  123. </view>
  124. </view>
  125. <view className='yysj'>
  126. <image src={yysj} className='yysjImg' />营业时间:{detail.businessHours}
  127. </view>
  128. <view className='dpPosition'>
  129. <image src={dw} className='dwTip' />
  130. <view>{detail.address}
  131. <image src={zhuandao} className='zhuandao' />
  132. </view>
  133. </view>
  134. </view>
  135. </view>
  136. <view style={{ position: 'relative', display: spackage ? '' : 'none' }}>
  137. <view className='title'>
  138. <image src={titlezs}></image>
  139. <text>返现套餐</text>
  140. </view>
  141. {
  142. spackage?.map((item) => <Cards star={star} item={item} city={city} />)
  143. }
  144. <view className='showMore' style={{ display: newpgNum == AllpgNum ? 'none' : '' }} onClick={pgMore}>
  145. <view>查看更多</view>
  146. <image src={showMore} className='moreTip' />
  147. </view>
  148. </view>
  149. <view style={{ position: 'relative', display: extend ? '' : 'none' }}>
  150. <view className='title'>
  151. <image src={titlezs}></image>
  152. <text>本店指南</text>
  153. </view>
  154. {extend?.map((item) => <Extend item={item} />)}
  155. <view className='showMore' style={{ display: newextNum == AllextNum ? 'none' : '' }} onClick={extendMore}>
  156. <view>查看更多</view>
  157. <image src={showMore} className='moreTip' />
  158. </view>
  159. </view>
  160. <view className='botton'>已经到底了~</view>
  161. </scroll-view>
  162. </view>
  163. </view>
  164. )
  165. })