page.vue 1.2 KB

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