page.vue 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. <template>
  2. <s-layout
  3. :title="page.name"
  4. navbar="custom"
  5. :bgStyle="page.style?.background"
  6. :navbarStyle="page.style?.navbar"
  7. onShareAppMessage
  8. >
  9. <s-block v-for="(item, index) in page.list" :key="index" :styles="item.style">
  10. <s-block-item :type="item.type" :data="item.data" :styles="item.style" />
  11. </s-block>
  12. </s-layout>
  13. </template>
  14. <script setup>
  15. import { computed, reactive } from 'vue';
  16. import sheep from '@/sheep';
  17. import { onLoad, onPageScroll } from '@dcloudio/uni-app';
  18. const page = reactive({
  19. name: '',
  20. list: [],
  21. style: {},
  22. });
  23. onLoad(async (options) => {
  24. let id;
  25. if (options.id) {
  26. id = options.id;
  27. }
  28. // #ifdef MP
  29. // 小程序预览自定义页面
  30. if (options.scene) {
  31. const sceneParams = decodeURIComponent(options.scene).split('=');
  32. id = sceneParams[1];
  33. }
  34. // #endif
  35. const { error, data } = await sheep.$api.app.page(id);
  36. if (error === 0) {
  37. page.name = data.name;
  38. page.list = data.diypage?.page?.data;
  39. page.style = data.diypage?.page?.style;
  40. }
  41. });
  42. onPageScroll(() => {});
  43. </script>
  44. <style></style>