浏览代码

营销:接入 APP 装修页面

owen 1 年之前
父节点
当前提交
aa30c2659c
共有 3 个文件被更改,包括 37 次插入34 次删除
  1. 18 21
      pages/index/page.vue
  2. 15 0
      sheep/api/promotion/diy/page.js
  3. 4 13
      sheep/components/s-goods-column/s-goods-column.vue

+ 18 - 21
pages/index/page.vue

@@ -1,35 +1,32 @@
 <!-- 自定义页面:支持装修 -->
 <template>
   <s-layout
-    :title="page.name"
+    :title="state.name"
     navbar="custom"
-    :bgStyle="page.style?.background"
-    :navbarStyle="page.style?.navbar"
+    :bgStyle="state.page"
+    :navbarStyle="state.navigationBar"
     onShareAppMessage
     showLeftButton
   >
-    <s-block v-for="(item, index) in page.list" :key="index" :styles="item.style">
-      <s-block-item :type="item.type" :data="item.data" :styles="item.style" />
+    <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 { computed, reactive } from 'vue';
-  import sheep from '@/sheep';
+  import { reactive } from 'vue';
   import { onLoad, onPageScroll } from '@dcloudio/uni-app';
+  import DiyPageApi from "@/sheep/api/promotion/diy/page";
 
-  const page = reactive({
+  const state = reactive({
     name: '',
-    list: [],
-    style: {},
+    components: [],
+    navigationBar: {},
+    page: {},
   });
   onLoad(async (options) => {
-    let id;
-
-    if (options.id) {
-      id = options.id;
-    }
+    let id = options.id
 
     // #ifdef MP
     // 小程序预览自定义页面
@@ -39,12 +36,12 @@
     }
     // #endif
 
-    // TODO @疯狂:貌似这里还没接上哈
-    const { error, data } = await sheep.$api.app.page(id);
-    if (error === 0) {
-      page.name = data.name;
-      page.list = data.diypage?.page?.data;
-      page.style = data.diypage?.page?.style;
+    const { code, data } = await DiyPageApi.getDiyPage(id);
+    if (code === 0) {
+      state.name = data.name;
+      state.components = data.property?.components;
+      state.navigationBar = data.property?.navigationBar;
+      state.page = data.property?.page;
     }
   });
 

+ 15 - 0
sheep/api/promotion/diy/page.js

@@ -0,0 +1,15 @@
+import request from '@/sheep/request';
+
+const DiyPageApi = {
+	getDiyPage: (id) => {
+		return request({
+			url: '/app-api/promotion/diy-page/get',
+			method: 'GET',
+			params: {
+				id
+			}
+		});
+	},
+};
+
+export default DiyPageApi;

+ 4 - 13
sheep/components/s-goods-column/s-goods-column.vue

@@ -307,26 +307,17 @@
       type: [Array, Object],
       default() {
         return {
-          // TODO @疯狂:旧的要不剔除掉,后续都用新的
-          // 商品名称(旧)
-          title: { show: true },
-          // 商品介绍(旧)
-          subtitle: { show: true },
           // 商品价格
           price: { show: true },
-          // 市场价(旧)
-          original_price: { show: true },
-          // 销量(旧)
-          sales: { show: true },
           // 库存
           stock: { show: true },
-          // 商品名称(新)
+          // 商品名称
           name: { show: true },
-          // 商品介绍(新)
+          // 商品介绍
           introduction: { show: true },
-          // 市场价(新)
+          // 市场价
           marketPrice: { show: true },
-          // 销量(新)
+          // 销量
           salesCount: { show: true },
         };
       },