index.vue 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181
  1. <template>
  2. <view class="container">
  3. <empty v-if="!storeInfo" :isLoading="isLoading" tips="数据加载中..."></empty>
  4. <block>
  5. <HomeBanner v-if="storeInfo" :banners="banner"/>
  6. </block>
  7. <block>
  8. <HomeUser v-if="storeInfo" :userInfo="userInfo"/>
  9. </block>
  10. <block>
  11. <HomeService v-if="storeInfo" :data="[]"/>
  12. </block>
  13. <block>
  14. <HomeNav v-if="storeInfo" :ads="[]"/>
  15. </block>
  16. <block>
  17. <HomeAds v-if="storeInfo" :ads="ads"/>
  18. </block>
  19. </view>
  20. </template>
  21. <script>
  22. import { setCartTabBadge, showMessage } from '@/utils/app'
  23. import Empty from '@/components/empty'
  24. import HomeBanner from "./components/HomeBanner.vue"
  25. import HomeService from "./components/HomeService.vue"
  26. import HomeUser from "./components/HomeUser.vue"
  27. import HomeNav from "./components/HomeNav.vue"
  28. import HomeAds from "./components/HomeAds.vue"
  29. import * as settingApi from '@/api/setting'
  30. import * as Api from '@/api/page'
  31. import * as UserApi from '@/api/user'
  32. import MescrollCompMixin from "@/components/mescroll-uni/mixins/mescroll-comp.js";
  33. const App = getApp()
  34. export default {
  35. mixins: [MescrollCompMixin],
  36. components: {
  37. Empty,
  38. HomeBanner,
  39. HomeService,
  40. HomeUser,
  41. HomeNav,
  42. HomeAds
  43. },
  44. data() {
  45. return {
  46. banner: [],
  47. ads: [],
  48. storeInfo: null,
  49. userInfo: {},
  50. isReflash: false,
  51. isLoading: false
  52. }
  53. },
  54. /**
  55. * 生命周期函数--监听页面加载
  56. */
  57. onLoad({ storeId }) {
  58. storeId = storeId ? parseInt(storeId) : 0;
  59. if (storeId > 0) {
  60. uni.setStorageSync('storeId', storeId);
  61. uni.setStorageSync("reflashHomeData", true);
  62. } else {
  63. this.getPageData();
  64. }
  65. },
  66. /**
  67. * 生命周期函数--监听页面显示
  68. */
  69. onShow() {
  70. const app = this;
  71. showMessage();
  72. setCartTabBadge();
  73. app.onGetStoreInfo();
  74. app.getUserInfo();
  75. uni.getLocation({
  76. type: 'gcj02',
  77. success(res){
  78. uni.setStorageSync('latitude', res.latitude);
  79. uni.setStorageSync('longitude', res.longitude);
  80. app.onGetStoreInfo();
  81. },
  82. fail(e) {
  83. // empty
  84. }
  85. })
  86. },
  87. methods: {
  88. /**
  89. * 加载页面数据
  90. * @param {Object} callback
  91. */
  92. getPageData(callback) {
  93. const app = this;
  94. Api.home()
  95. .then(result => {
  96. app.banner = result.data.banner;
  97. app.ads = result.data.ads;
  98. uni.removeStorageSync("reflashHomeData");
  99. app.isReflash = false;
  100. })
  101. .finally(() => callback && callback())
  102. },
  103. /**
  104. * 获取用户信息
  105. * */
  106. getUserInfo() {
  107. const app = this;
  108. UserApi.info()
  109. .then(result => {
  110. app.userInfo = result.data.userInfo ? result.data.userInfo : {};
  111. })
  112. },
  113. /**
  114. * 下拉刷新
  115. */
  116. onPullDownRefresh() {
  117. // 获取数据
  118. this.getUserInfo();
  119. this.getPageData(() => {
  120. uni.stopPullDownRefresh()
  121. })
  122. },
  123. /**
  124. * 获取默认店铺
  125. * */
  126. onGetStoreInfo() {
  127. const app = this;
  128. settingApi.systemConfig()
  129. .then(result => {
  130. app.storeInfo = result.data.storeInfo;
  131. if (app.storeInfo) {
  132. uni.setStorageSync("storeId", app.storeInfo.id);
  133. uni.setStorageSync("merchantNo", app.storeInfo.merchantNo);
  134. // 判断是否需要更新页面
  135. let isReflash = uni.getStorageSync("reflashHomeData");
  136. app.isReflash = isReflash;
  137. if (isReflash === true) {
  138. app.getPageData();
  139. }
  140. }
  141. })
  142. }
  143. },
  144. /**
  145. * 分享当前页面
  146. */
  147. onShareAppMessage() {
  148. const app = this
  149. return {
  150. title: "fuint点餐系统",
  151. path: "/pages/index/index?" + app.$getShareUrlParams()
  152. }
  153. },
  154. /**
  155. * 分享到朋友圈
  156. * 本接口为 Beta 版本,暂只在 Android 平台支持,详见分享到朋友圈 (Beta)
  157. * https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/share-timeline.html
  158. */
  159. onShareTimeline() {
  160. const app = this
  161. const { page } = app
  162. return {
  163. title: page.params.share_title,
  164. path: "/pages/index/index?" + app.$getShareUrlParams()
  165. }
  166. }
  167. }
  168. </script>