page.vue 1.2 KB

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