StoreHome.vue 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. <template>
  2. <view :class="['qn-page-' + theme]" class="view-wrap" :style="pageStyle">
  3. <block v-for="(item, index) in temData" :key="index">
  4. <u-navbar
  5. v-if="item.comName === 'NavigationBar'"
  6. :border-bottom="false"
  7. :back-icon-color="item.modelData.textColor"
  8. :title="item.modelData.name"
  9. :background="navBackground"
  10. :title-color="item.modelData.textColor"
  11. ></u-navbar>
  12. <shopInfo v-if="item.comName === 'ShopInfo'" :modelData="item.modelData" :storeData="storeData" />
  13. <ImgSwiper v-if="item.comName === 'ImgSwiper'" :modelData="item.modelData" />
  14. <SearchC v-if="item.comName === 'SearchC'" :modelData="item.modelData" />
  15. <MagicImg v-if="item.comName === 'MagicImg'" :modelData="item.modelData" />
  16. <Notice v-if="item.comName === 'Notice'" :modelData="item.modelData" :noticeData="item.data" />
  17. <NavBar v-if="item.comName === 'NavBar'" :modelData="item.modelData" />
  18. <GoodsGroup v-if="item.comName === 'GoodsGroup'" :modelData="item.modelData" :goodsList="item.data" :showGoodsPrice="showGoodsPrice" :selAddress="selAddressD" />
  19. <LimitedSeckill
  20. v-if="item.comName === 'LimitedSeckill'"
  21. :modelData="item.modelData"
  22. :goodsList="item.data"
  23. :showGoodsPrice="showGoodsPrice"
  24. :selAddress="selAddressD"
  25. />
  26. <CouponGroup v-if="item.comName === 'CouponGroup'" :modelData="item.modelData" :couponList="item.data" />
  27. <LineF v-if="item.comName === 'LineF'" :modelData="item.modelData" />
  28. <Blank v-if="item.comName === 'Blank'" :modelData="item.modelData" />
  29. </block>
  30. </view>
  31. </template>
  32. <script>
  33. import SearchC from '@/components/PageDesign/components/Search.vue';
  34. import ImgSwiper from '@/components/PageDesign/components/Banner.vue';
  35. import MagicImg from '@/components/PageDesign/components/MagicImg.vue';
  36. import Notice from '@/components/PageDesign/components/Notice.vue';
  37. import NavBar from '@/components/PageDesign/components/NavBar.vue';
  38. import GoodsGroup from '@/components/PageDesign/components/GoodsGroup.vue';
  39. import LimitedSeckill from '@/components/PageDesign/components/LimitedSeckill.vue';
  40. import CouponGroup from '@/components/PageDesign/components/CouponGroup.vue';
  41. import LineF from '@/components/PageDesign/components/Line.vue';
  42. import Blank from '@/components/PageDesign/components/Blank.vue';
  43. import shopInfo from '@/components/PageDesign/components/shopInfo.vue';
  44. export default {
  45. name: 'StoreHome',
  46. components: {
  47. SearchC,
  48. ImgSwiper,
  49. MagicImg,
  50. Notice,
  51. NavBar,
  52. GoodsGroup,
  53. LimitedSeckill,
  54. CouponGroup,
  55. LineF,
  56. Blank,
  57. shopInfo
  58. },
  59. computed: {
  60. pageStyle() {
  61. if (this.temData.length) {
  62. const obj = this.temData[0].modelData;
  63. return `background-color:${obj.pageBgColor};background-image:url(${obj.bgImage});backgroundPosition: ${
  64. obj.topBgColor ? '0 ' + (this.barHeight + 44) + 'px' : '0 0'
  65. }`;
  66. } else {
  67. return '';
  68. }
  69. },
  70. navBackground() {
  71. if (this.temData.length) {
  72. const obj = this.temData[0].modelData;
  73. if (!obj.topBgColor) {
  74. return { background: 'url(' + obj.bgImage + ') no-repeat', backgroundSize: 'cover' };
  75. } else {
  76. return { backgroundColor: obj.topBgColor };
  77. }
  78. } else {
  79. return {};
  80. }
  81. }
  82. },
  83. data() {
  84. return {
  85. temData: [],
  86. storeData: '',
  87. shopId: ''
  88. };
  89. },
  90. onLoad(options) {
  91. this.storeData = JSON.parse(options.storeData);
  92. this.shopId = this.storeData.id;
  93. this.shopHome();
  94. },
  95. methods: {
  96. shopHome() {
  97. this.$u.api
  98. .shopHome({
  99. pageType: 1,
  100. merchantId: this.shopId
  101. })
  102. .then(res => {
  103. uni.stopPullDownRefresh();
  104. if(!res.data.length){
  105. this.$u.toast('该商户未设置商户首页')
  106. setTimeout(()=>{
  107. uni.navigateBack()
  108. },2000)
  109. return
  110. }
  111. this.temData = res.data;
  112. });
  113. }
  114. },
  115. // 下拉刷新
  116. onPullDownRefresh() {
  117. this.shopHome();
  118. }
  119. };
  120. </script>
  121. <style scoped lang="scss">
  122. .view-wrap {
  123. background-repeat: no-repeat;
  124. background-color: #f7f8fa;
  125. background-size: 750rpx;
  126. height: 100vh;
  127. overflow-y: auto;
  128. // background-position: 0 calc(var(--status-bar-height) + 44px);
  129. }
  130. </style>