52 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Vue
		
	
	
			
		
		
	
	
			52 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Vue
		
	
	
| <!-- 自定义页面:支持装修 -->
 | ||
| <template>
 | ||
|   <s-layout
 | ||
|     :title="state.name"
 | ||
|     navbar="custom"
 | ||
|     :bgStyle="state.page"
 | ||
|     :navbarStyle="state.navigationBar"
 | ||
|     onShareAppMessage
 | ||
|     showLeftButton
 | ||
|   >
 | ||
|     <s-block v-for="(item, index) in state.components" :key="index" :styles="item.property.style">
 | ||
|       <s-block-item :type="item.id" :data="item.property" :styles="item.property.style" />
 | ||
|     </s-block>
 | ||
|   </s-layout>
 | ||
| </template>
 | ||
| 
 | ||
| <script setup>
 | ||
|   import { reactive } from 'vue';
 | ||
|   import { onLoad, onPageScroll } from '@dcloudio/uni-app';
 | ||
|   import DiyApi from '@/sheep/api/promotion/diy';
 | ||
| 
 | ||
|   const state = reactive({
 | ||
|     name: '',
 | ||
|     components: [],
 | ||
|     navigationBar: {},
 | ||
|     page: {},
 | ||
|   });
 | ||
|   onLoad(async (options) => {
 | ||
|     let id = options.id
 | ||
| 
 | ||
|     // #ifdef MP
 | ||
|     // 小程序预览自定义页面
 | ||
|     if (options.scene) {
 | ||
|       const sceneParams = decodeURIComponent(options.scene).split('=');
 | ||
|       id = sceneParams[1];
 | ||
|     }
 | ||
|     // #endif
 | ||
| 
 | ||
|     const { code, data } = await DiyApi.getDiyPage(id);
 | ||
|     if (code === 0) {
 | ||
|       state.name = data.name;
 | ||
|       state.components = data.property?.components;
 | ||
|       state.navigationBar = data.property?.navigationBar;
 | ||
|       state.page = data.property?.page;
 | ||
|     }
 | ||
|   });
 | ||
| 
 | ||
|   onPageScroll(() => {});
 | ||
| </script>
 | ||
| 
 | ||
| <style></style>
 |