Bläddra i källkod

update:1.商城新首页;2店铺首页(未放开)

ruhuxu 4 månader sedan
förälder
incheckning
9a6f0bf5c6
100 ändrade filer med 1251 tillägg och 470 borttagningar
  1. 4 1
      locale/en.json
  2. 4 1
      locale/zh-Hans.json
  3. 24 0
      pages.json
  4. 2 2
      pages/goods/components/detail/detail-tabbar.vue
  5. 358 354
      pages/goods/list.vue
  6. 13 7
      pages/index/FirstList.vue
  7. 10 2
      pages/index/components/first-one.vue
  8. 76 66
      pages/index/components/first-two.vue
  9. 8 0
      pages/index/components/second-one.vue
  10. 381 0
      pages/shop/allproduct.vue
  11. 279 0
      pages/shop/category.vue
  12. 58 31
      pages/shop/index.vue
  13. 2 1
      sheep/api/product/category.js
  14. 1 0
      sheep/components/s-video-block/s-video-block.vue
  15. 7 0
      sheep/ui/su-video/su-video.vue
  16. 3 0
      sheep/util/index.js
  17. 1 0
      static/shopIndex/allProduct-active.svg
  18. 1 0
      static/shopIndex/allProduct.svg
  19. 1 0
      static/shopIndex/category-active.svg
  20. 1 0
      static/shopIndex/category.svg
  21. 8 0
      static/shopIndex/shopIndex-active.svg
  22. 0 0
      static/shopIndex/shopIndex.svg
  23. 1 0
      uni_modules/mp-html/components/mp-html/node/node.vue
  24. 0 0
      unpackage/dist/build/web/assets/FirstList-D9D2dv1v.css
  25. 0 1
      unpackage/dist/build/web/assets/FirstList-v3YrpZ37.css
  26. 1 0
      unpackage/dist/build/web/assets/allproduct-1cNZN1lr.css
  27. 1 0
      unpackage/dist/build/web/assets/category-B3qmXwqA.css
  28. 1 0
      unpackage/dist/build/web/assets/category-BCNFe82k.css
  29. 0 0
      unpackage/dist/build/web/assets/category-CXzJzcJm.css
  30. 1 1
      unpackage/dist/build/web/assets/comment-item.GxQHQvD1.js
  31. 1 1
      unpackage/dist/build/web/assets/const.DXU-L2w7.js
  32. 0 0
      unpackage/dist/build/web/assets/detail-content-card-BJaKMFxt.css
  33. 0 0
      unpackage/dist/build/web/assets/detail-content-card.BG6LPBl5.js
  34. 0 0
      unpackage/dist/build/web/assets/detail-content-card.Ccywo0sN.js
  35. 1 0
      unpackage/dist/build/web/assets/first-two-CdX79w_9.css
  36. 0 0
      unpackage/dist/build/web/assets/first-two.CJ5H0zSN.js
  37. 0 0
      unpackage/dist/build/web/assets/index-B2lrgxH7.js
  38. 0 1
      unpackage/dist/build/web/assets/list-BzH7mnFJ.css
  39. 1 0
      unpackage/dist/build/web/assets/list-CtcXKMEQ.css
  40. 0 0
      unpackage/dist/build/web/assets/md5.DIfkRCZm.js
  41. 0 0
      unpackage/dist/build/web/assets/mp-html-BRoRGaCt.css
  42. 0 0
      unpackage/dist/build/web/assets/mp-html-ChnMKd5V.css
  43. 0 0
      unpackage/dist/build/web/assets/mp-html.CABZ30S3.js
  44. 0 0
      unpackage/dist/build/web/assets/mp-html.vue_vue_type_style_index_0_scoped_b0aa647f_lang.-XhG44sh.js
  45. 0 0
      unpackage/dist/build/web/assets/pages-activity-bargain-detail.Cr_BHBFs.js
  46. 0 0
      unpackage/dist/build/web/assets/pages-activity-bargain-detail.OoMcykoF.js
  47. 0 0
      unpackage/dist/build/web/assets/pages-activity-bargain-list.DhMm3upI.js
  48. 0 0
      unpackage/dist/build/web/assets/pages-activity-bargain-list.Whxajs6w.js
  49. 0 0
      unpackage/dist/build/web/assets/pages-activity-groupon-detail.CjHZ47KU.js
  50. 0 0
      unpackage/dist/build/web/assets/pages-activity-groupon-detail.esKdK2HJ.js
  51. 0 0
      unpackage/dist/build/web/assets/pages-activity-groupon-list.BI5LRlpi.js
  52. 0 0
      unpackage/dist/build/web/assets/pages-activity-groupon-list.COR6g3KD.js
  53. 0 0
      unpackage/dist/build/web/assets/pages-activity-groupon-order.TMmS7wDy.js
  54. 0 0
      unpackage/dist/build/web/assets/pages-activity-groupon-order.lzGImZ7Y.js
  55. 0 0
      unpackage/dist/build/web/assets/pages-activity-index.1K4ASGPx.js
  56. 0 0
      unpackage/dist/build/web/assets/pages-activity-index.DZkrqdV_.js
  57. 0 0
      unpackage/dist/build/web/assets/pages-activity-seckill-list.CPIex0gz.js
  58. 0 0
      unpackage/dist/build/web/assets/pages-activity-seckill-list.D85ZsvpV.js
  59. 0 0
      unpackage/dist/build/web/assets/pages-app-sign.Dex9VmQL.js
  60. 0 0
      unpackage/dist/build/web/assets/pages-app-sign.FZ7u6h5o.js
  61. 0 0
      unpackage/dist/build/web/assets/pages-chat-index.C9WqfKNz.js
  62. 0 0
      unpackage/dist/build/web/assets/pages-chat-speechtotext.CjlxNN5b.js
  63. 0 0
      unpackage/dist/build/web/assets/pages-chat-speechtotext.CvPIoSPm.js
  64. 0 0
      unpackage/dist/build/web/assets/pages-commission-commission-ranking.BpvLpfHb.js
  65. 0 0
      unpackage/dist/build/web/assets/pages-commission-commission-ranking.KaNbdr2q.js
  66. 0 0
      unpackage/dist/build/web/assets/pages-commission-goods.BVmG0MQv.js
  67. 0 0
      unpackage/dist/build/web/assets/pages-commission-goods.Cbhv8RcY.js
  68. 0 0
      unpackage/dist/build/web/assets/pages-commission-index.Cyx0GrEj.js
  69. 0 0
      unpackage/dist/build/web/assets/pages-commission-index.TfTFdRJj.js
  70. 0 0
      unpackage/dist/build/web/assets/pages-commission-order.CFtCC4WW.js
  71. 0 0
      unpackage/dist/build/web/assets/pages-commission-order.rqLnSNTB.js
  72. 0 0
      unpackage/dist/build/web/assets/pages-commission-promoter.BHs-PEZr.js
  73. 0 0
      unpackage/dist/build/web/assets/pages-commission-promoter.C0btlayk.js
  74. 0 0
      unpackage/dist/build/web/assets/pages-commission-team.BE2Q4H9R.js
  75. 0 0
      unpackage/dist/build/web/assets/pages-commission-team.BgAu-1_w.js
  76. 0 0
      unpackage/dist/build/web/assets/pages-commission-wallet.DK1EwgHV.js
  77. 0 0
      unpackage/dist/build/web/assets/pages-commission-wallet.Jvwzfrbm.js
  78. 0 0
      unpackage/dist/build/web/assets/pages-commission-withdraw.EixRmACB.js
  79. 0 0
      unpackage/dist/build/web/assets/pages-commission-withdraw.OPWeb5pv.js
  80. 0 0
      unpackage/dist/build/web/assets/pages-coupon-detail.DDycXCBD.js
  81. 0 0
      unpackage/dist/build/web/assets/pages-coupon-detail.DO7drsLt.js
  82. 0 0
      unpackage/dist/build/web/assets/pages-coupon-list.CFM8LYK5.js
  83. 0 0
      unpackage/dist/build/web/assets/pages-coupon-list.DRIgcI_e.js
  84. 0 0
      unpackage/dist/build/web/assets/pages-goods-comment-add.BpKN9-yB.js
  85. 0 0
      unpackage/dist/build/web/assets/pages-goods-comment-add.DrSQuMKW.js
  86. 0 0
      unpackage/dist/build/web/assets/pages-goods-comment-list.CVXGvlJN.js
  87. 0 0
      unpackage/dist/build/web/assets/pages-goods-comment-list.Cos9BOBR.js
  88. 0 0
      unpackage/dist/build/web/assets/pages-goods-groupon.B8z21aQN.js
  89. 0 0
      unpackage/dist/build/web/assets/pages-goods-groupon.BL8dE_2D.js
  90. 0 0
      unpackage/dist/build/web/assets/pages-goods-index.BSQ4Jded.js
  91. 0 0
      unpackage/dist/build/web/assets/pages-goods-index.CR1oVcwK.js
  92. 0 0
      unpackage/dist/build/web/assets/pages-goods-list.C1EaU20Y.js
  93. 0 0
      unpackage/dist/build/web/assets/pages-goods-list.PopLGwiy.js
  94. 0 0
      unpackage/dist/build/web/assets/pages-goods-seckill.BPK4-F3U.js
  95. 0 0
      unpackage/dist/build/web/assets/pages-goods-seckill.Btwua1N-.js
  96. 0 1
      unpackage/dist/build/web/assets/pages-index-FirstActivity.4x0Zi-l8.js
  97. 1 0
      unpackage/dist/build/web/assets/pages-index-FirstActivity.QMmzFDOn.js
  98. 0 0
      unpackage/dist/build/web/assets/pages-index-FirstIndex.BDsTKbG_.js
  99. 0 0
      unpackage/dist/build/web/assets/pages-index-FirstIndex.BrjmnF49.js
  100. 0 0
      unpackage/dist/build/web/assets/pages-index-FirstList.sMH9Y_XM.js

+ 4 - 1
locale/en.json

@@ -231,7 +231,10 @@
 		"shared_mall": "Shared Mall",
 		"activities": "Activities",
 		"videos": "Videos",
-		"mall": "Mall"
+		"mall": "Mall",
+		"shop_index":"Shop Index",
+		"shop_category":"Shop Category",
+		"all_product":"All Product"
 	},
 	"account": {
 		"account_login": "Account Login",

+ 4 - 1
locale/zh-Hans.json

@@ -231,7 +231,10 @@
 		"shared_mall": "共享商城",
 		"activities": "活动",
 		"videos": "视频",
-		"mall": "商城"
+		"mall": "商城",
+		"shop_index":"店铺首页",
+		"shop_category":"店铺分类",
+		"all_product":"所有商品"
 	},
 	"account": {
 		"account_login": "账号登录",

+ 24 - 0
pages.json

@@ -702,6 +702,30 @@
 					"title": "店铺首页",
 					"group": "应用"
 				}
+			},
+			{
+				"path": "category",
+				"style": {
+					"navigationBarTitleText": "店铺分类"
+				},
+				"meta": {
+					"auth": true,
+					"sync": true,
+					"title": "店铺分类",
+					"group": "应用"
+				}
+			},
+			{
+				"path": "allproduct",
+				"style": {
+					"navigationBarTitleText": "所有商品"
+				},
+				"meta": {
+					"auth": true,
+					"sync": true,
+					"title": "所有商品",
+					"group": "应用"
+				}
 			}]
 		},
 		{

+ 2 - 2
pages/goods/components/detail/detail-tabbar.vue

@@ -9,12 +9,12 @@
 						mode="aspectFit" />
 					<view class="item-title">{{$t('common.home')}}</view>
 				</view>
-				<view v-if="serviceIcon" class="detail-tabbar-item ss-flex ss-flex-col ss-row-center ss-col-center"
+				<!-- <view v-if="serviceIcon" class="detail-tabbar-item ss-flex ss-flex-col ss-row-center ss-col-center"
 					@tap="onShopIndex">
 					<image class="item-icon" src="@/static/icon/shop.png"
 						mode="aspectFit" />
 					<view class="item-title">{{$t('title.shop_home')}}</view>
-				</view>
+				</view> -->
 				<!-- <view v-if="serviceIcon" class="detail-tabbar-item ss-flex ss-flex-col ss-row-center ss-col-center"
 					@tap="onChat">
 					<image class="item-icon" src="@/static/icon/service.png"

+ 358 - 354
pages/goods/list.vue

@@ -1,362 +1,366 @@
-<template>
-	<s-layout navbar="normal" :leftWidth="0" :rightWidth="0" tools="search" :defaultSearch="state.keyword"
-		@search="onSearch">
-		<!-- 筛选 -->
-		<su-sticky bgColor="#fff">
-			<view class="ss-flex">
-				<view class="ss-flex-1">
-					<su-tabs :list="state.tabList" :scrollable="false" @change="onTabsChange"
-                   :current="state.currentTab" />
-				</view>
-				<view class="list-icon" @tap="state.iconStatus = !state.iconStatus">
-					<text v-if="state.iconStatus" class="sicon-goods-list" />
-					<text v-else class="sicon-goods-card" />
-				</view>
-			</view>
-		</su-sticky>
-
-		<!-- 弹窗 -->
-		<su-popup :show="state.showFilter" type="top" round="10" :space="sys_navBar + 38" backgroundColor="#F6F6F6"
-			:zIndex="10" @close="state.showFilter = false">
-			<view class="filter-list-box">
-				<view class="filter-item" v-for="(item, index) in state.tabList[state.currentTab].list"
-					:key="item.value" :class="[{ 'filter-item-active': index === state.curFilter }]"
-					@tap="onFilterItem(index)">
-					{{ item.label }}
-				</view>
-			</view>
-		</su-popup>
-
-    <!-- 情况一:单列布局 -->
-		<view v-if="state.iconStatus && state.pagination.total > 0" class="goods-list ss-m-t-20">
-			<view class="ss-p-l-20 ss-p-r-20 ss-m-b-20" v-for="item in state.pagination.list" :key="item.id">
-				<s-goods-column
-          class=""
-          size="lg"
-          :data="item"
-          :topRadius="10"
-          :bottomRadius="10"
-					@click="sheep.$router.go('/pages/goods/index', { id: item.id })"
-        />
-			</view>
-		</view>
-    <!-- 情况二:双列布局 -->
-    <view v-if="!state.iconStatus && state.pagination.total > 0"
-			class="ss-flex ss-flex-wrap ss-p-x-20 ss-m-t-20 ss-col-top">
-			<view class="goods-list-box">
-				<view class="left-list" v-for="item in state.leftGoodsList" :key="item.id">
-					<s-goods-column
-            class="goods-md-box"
-            size="md"
-            :data="item"
-            :topRadius="10"
-            :bottomRadius="10"
-						@click="sheep.$router.go('/pages/goods/index', { id: item.id })"
-						@getHeight="mountMasonry($event, 'left')"
-          >
-						<template v-slot:cart>
-							<button class="ss-reset-button cart-btn" />
-						</template>
-					</s-goods-column>
-				</view>
-			</view>
-			<view class="goods-list-box">
-				<view class="right-list" v-for="item in state.rightGoodsList" :key="item.id">
-					<s-goods-column
-            class="goods-md-box"
-            size="md"
-            :topRadius="10"
-            :bottomRadius="10"
-            :data="item"
-						@click="sheep.$router.go('/pages/goods/index', { id: item.id })"
-						@getHeight="mountMasonry($event, 'right')"
-          >
-						<template v-slot:cart>
-							<button class="ss-reset-button cart-btn" />
-						</template>
-					</s-goods-column>
-				</view>
-			</view>
-		</view>
-		<uni-load-more v-if="state.pagination.total > 0" :status="state.loadStatus" :content-text="{
-        contentdown: '上拉加载更多',
-      }" @tap="loadMore" />
-		<s-empty v-if="state.pagination.total === 0" icon="/static/soldout-empty.png" text="暂无商品" />
-	</s-layout>
-</template>
-
-<script setup>
-	import { reactive } from 'vue';
-	import { onLoad, onReachBottom } from '@dcloudio/uni-app';
-	import sheep from '@/sheep';
-	import _ from 'lodash';
-	import { resetPagination } from '@/sheep/util';
-	import SpuApi from '@/sheep/api/product/spu';
-	import { t } from '@/locale'
-	const sys_navBar = sheep.$platform.navbar;
-	const emits = defineEmits(['close', 'change']);
-
-	const state = reactive({
-		pagination: {
-			list: [],
-      total: 0,
-      pageNo: 1,
-			pageSize: 6,
-		},
-		currentSort: undefined,
-		currentOrder: undefined,
-		currentTab: 0, // 当前选中的 tab
-		curFilter: 0, // 当前选中的 list 筛选项
-		showFilter: false,
-		iconStatus: false, // true - 单列布局;false - 双列布局
-    keyword: '',
-    categoryId: 0,
-		tabList: [{
-				name: t('common.recommended'),
-				list: [{
-						label: t('common.recommended')
-					},
-					{
-						label: t('common.price_asc'),
-						sort: 'price',
-						order: true,
-					},
-					{
-						label: t('common.price_desc'),
-						sort: 'price',
-						order: false,
-					},
-				],
-			},
-			{
-				name: t('common.sales'),
-				sort: 'salesCount',
-				order: false
-			},
-			{
-				name: t('common.newest'),
-				value: 'createTime',
-        order: false
-			},
-		],
-		loadStatus: '',
-		leftGoodsList: [], // 双列布局 - 左侧商品
-		rightGoodsList: [], // 双列布局 - 右侧商品
-	});
-
-	// 加载瀑布流
-	let count = 0;
-	let leftHeight = 0;
-	let rightHeight = 0;
-
-  // 处理双列布局 leftGoodsList + rightGoodsList
-	function mountMasonry(height = 0, where = 'left') {
-		if (!state.pagination.list[count]) {
-      return;
-    }
-
-		if (where === 'left') {
-			leftHeight += height;
-		} else {
-			rightHeight += height;
-		}
-		if (leftHeight <= rightHeight) {
-			state.leftGoodsList.push(state.pagination.list[count]);
-		} else {
-			state.rightGoodsList.push(state.pagination.list[count]);
-		}
-		count++;
-	}
-
-  // 清空列表
-	function emptyList() {
-    resetPagination(state.pagination);
-    state.leftGoodsList = [];
-		state.rightGoodsList = [];
-		count = 0;
-		leftHeight = 0;
-		rightHeight = 0;
-	}
-
-	// 搜索
-	function onSearch(e) {
-		state.keyword = e;
-		emptyList();
-		getList(state.currentSort, state.currentOrder);
-	}
-
-	// 点击
-	function onTabsChange(e) {
-    // 如果点击的是【综合推荐】,则直接展开或者收起筛选项
-		if (state.tabList[e.index].list) {
-			state.currentTab = e.index;
-			state.showFilter = !state.showFilter;
-			return;
-		}
-    state.showFilter = false;
-
-    // 如果点击的是【销量】或者【新品优先】,则直接切换 tab
-		if (e.index === state.currentTab) {
-			return;
-		}
-
-    state.currentTab = e.index;
-    state.currentSort = e.sort;
-    state.currentOrder = e.order;
-		emptyList();
-		getList(e.sort, e.order);
-	}
-
-	// 点击 tab 的 list 筛选项
-	const onFilterItem = (val) => {
-    // 如果点击的是当前的筛选项,则直接收起筛选项,不要加载数据
-    // 这里选择 tabList[0] 的原因,是目前只有它有 list
-		if (state.currentSort === state.tabList[0].list[val].sort
-      && state.currentOrder === state.tabList[0].list[val].order) {
-			state.showFilter = false;
-			return;
-		}
-    state.showFilter = false;
-
-    // 设置筛选条件
-		state.curFilter = val;
-		state.tabList[0].name = state.tabList[0].list[val].label;
-		state.currentSort = state.tabList[0].list[val].sort;
-		state.currentOrder = state.tabList[0].list[val].order;
-		// 清空 + 加载数据
-    emptyList();
-		getList();
-	}
-
-	async function getList() {
+<template>
+	<s-layout navbar="normal" :leftWidth="0" :rightWidth="0" tools="search" :defaultSearch="state.keyword"
+		@search="onSearch">
+		<!-- 筛选 -->
+		<su-sticky bgColor="#fff">
+			<view class="ss-flex">
+				<view class="ss-flex-1">
+					<su-tabs :list="state.tabList" :scrollable="false" @change="onTabsChange"
+						:current="state.currentTab" />
+				</view>
+				<view class="list-icon" @tap="state.iconStatus = !state.iconStatus">
+					<text v-if="state.iconStatus" class="sicon-goods-list" />
+					<text v-else class="sicon-goods-card" />
+				</view>
+			</view>
+		</su-sticky>
+
+		<!-- 弹窗 -->
+		<su-popup :show="state.showFilter" type="top" round="10" :space="sys_navBar + 38" backgroundColor="#F6F6F6"
+			:zIndex="10" @close="state.showFilter = false">
+			<view class="filter-list-box">
+				<view class="filter-item" v-for="(item, index) in state.tabList[state.currentTab].list"
+					:key="item.value" :class="[{ 'filter-item-active': index === state.curFilter }]"
+					@tap="onFilterItem(index)">
+					{{ item.label }}
+				</view>
+			</view>
+		</su-popup>
+
+		<!-- 情况一:单列布局 -->
+		<view v-if="state.iconStatus && state.pagination.total > 0" class="goods-list ss-m-t-20">
+			<view class="ss-p-l-20 ss-p-r-20 ss-m-b-20" v-for="item in state.pagination.list" :key="item.id">
+				<s-goods-column class="" size="lg" :data="item" :topRadius="10" :bottomRadius="10"
+					@click="sheep.$router.go('/pages/goods/index', { id: item.id })" />
+			</view>
+		</view>
+		<!-- 情况二:双列布局 -->
+		<view v-if="!state.iconStatus && state.pagination.total > 0"
+			class="ss-flex ss-flex-wrap ss-p-x-20 ss-m-t-20 ss-col-top">
+			<view class="goods-list-box">
+				<view class="left-list" v-for="item in state.leftGoodsList" :key="item.id">
+					<s-goods-column class="goods-md-box" size="md" :data="item" :topRadius="10" :bottomRadius="10"
+						@click="sheep.$router.go('/pages/goods/index', { id: item.id })"
+						@getHeight="mountMasonry($event, 'left')">
+						<template v-slot:cart>
+							<button class="ss-reset-button cart-btn" />
+						</template>
+					</s-goods-column>
+				</view>
+			</view>
+			<view class="goods-list-box">
+				<view class="right-list" v-for="item in state.rightGoodsList" :key="item.id">
+					<s-goods-column class="goods-md-box" size="md" :topRadius="10" :bottomRadius="10" :data="item"
+						@click="sheep.$router.go('/pages/goods/index', { id: item.id })"
+						@getHeight="mountMasonry($event, 'right')">
+						<template v-slot:cart>
+							<button class="ss-reset-button cart-btn" />
+						</template>
+					</s-goods-column>
+				</view>
+			</view>
+		</view>
+		<uni-load-more v-if="state.pagination.total > 0" :status="state.loadStatus" :content-text="{
+        contentdown: '上拉加载更多',
+      }" @tap="loadMore" />
+		<s-empty v-if="state.pagination.total === 0" icon="/static/soldout-empty.png" text="暂无商品" />
+	</s-layout>
+</template>
+
+<script setup>
+	import {
+		reactive
+	} from 'vue';
+	import {
+		onLoad,
+		onReachBottom
+	} from '@dcloudio/uni-app';
+	import sheep from '@/sheep';
+	import _ from 'lodash';
+	import {
+		resetPagination
+	} from '@/sheep/util';
+	import SpuApi from '@/sheep/api/product/spu';
+	import {
+		t
+	} from '@/locale'
+	const sys_navBar = sheep.$platform.navbar;
+	const emits = defineEmits(['close', 'change']);
+
+	const state = reactive({
+		pagination: {
+			list: [],
+			total: 0,
+			pageNo: 1,
+			pageSize: 6,
+		},
+		currentSort: undefined,
+		currentOrder: undefined,
+		currentTab: 0, // 当前选中的 tab
+		curFilter: 0, // 当前选中的 list 筛选项
+		showFilter: false,
+		iconStatus: false, // true - 单列布局;false - 双列布局
+		keyword: '',
+		categoryId: 0,
+		merchantId :undefined,
+		shopId:undefined,
+		tabList: [{
+				name: t('common.recommended'),
+				list: [{
+						label: t('common.recommended')
+					},
+					{
+						label: t('common.price_asc'),
+						sort: 'price',
+						order: true,
+					},
+					{
+						label: t('common.price_desc'),
+						sort: 'price',
+						order: false,
+					},
+				],
+			},
+			{
+				name: t('common.sales'),
+				sort: 'salesCount',
+				order: false
+			},
+			{
+				name: t('common.newest'),
+				value: 'createTime',
+				order: false
+			},
+		],
+		loadStatus: '',
+		leftGoodsList: [], // 双列布局 - 左侧商品
+		rightGoodsList: [], // 双列布局 - 右侧商品
+	});
+
+	// 加载瀑布流
+	let count = 0;
+	let leftHeight = 0;
+	let rightHeight = 0;
+
+	// 处理双列布局 leftGoodsList + rightGoodsList
+	function mountMasonry(height = 0, where = 'left') {
+		if (!state.pagination.list[count]) {
+			return;
+		}
+
+		if (where === 'left') {
+			leftHeight += height;
+		} else {
+			rightHeight += height;
+		}
+		if (leftHeight <= rightHeight) {
+			state.leftGoodsList.push(state.pagination.list[count]);
+		} else {
+			state.rightGoodsList.push(state.pagination.list[count]);
+		}
+		count++;
+	}
+
+	// 清空列表
+	function emptyList() {
+		resetPagination(state.pagination);
+		state.leftGoodsList = [];
+		state.rightGoodsList = [];
+		count = 0;
+		leftHeight = 0;
+		rightHeight = 0;
+	}
+
+	// 搜索
+	function onSearch(e) {
+		state.keyword = e;
+		emptyList();
+		getList(state.currentSort, state.currentOrder);
+	}
+
+	// 点击
+	function onTabsChange(e) {
+		// 如果点击的是【综合推荐】,则直接展开或者收起筛选项
+		if (state.tabList[e.index].list) {
+			state.currentTab = e.index;
+			state.showFilter = !state.showFilter;
+			return;
+		}
+		state.showFilter = false;
+
+		// 如果点击的是【销量】或者【新品优先】,则直接切换 tab
+		if (e.index === state.currentTab) {
+			return;
+		}
+
+		state.currentTab = e.index;
+		state.currentSort = e.sort;
+		state.currentOrder = e.order;
+		emptyList();
+		getList(e.sort, e.order);
+	}
+
+	// 点击 tab 的 list 筛选项
+	const onFilterItem = (val) => {
+		// 如果点击的是当前的筛选项,则直接收起筛选项,不要加载数据
+		// 这里选择 tabList[0] 的原因,是目前只有它有 list
+		if (state.currentSort === state.tabList[0].list[val].sort &&
+			state.currentOrder === state.tabList[0].list[val].order) {
+			state.showFilter = false;
+			return;
+		}
+		state.showFilter = false;
+
+		// 设置筛选条件
+		state.curFilter = val;
+		state.tabList[0].name = state.tabList[0].list[val].label;
+		state.currentSort = state.tabList[0].list[val].sort;
+		state.currentOrder = state.tabList[0].list[val].order;
+		// 清空 + 加载数据
+		emptyList();
+		getList();
+	}
+
+	async function getList() {
 		state.loadStatus = 'loading';
-		const { code, data } = await SpuApi.getSpuPage({
-      pageNo: state.pagination.pageNo,
-      pageSize: state.pagination.pageSize,
+		const qurey = {
+			pageNo: state.pagination.pageNo,
+			pageSize: state.pagination.pageSize,
 			sortField: state.currentSort,
 			sortAsc: state.currentOrder,
 			categoryId: state.categoryId,
 			keyword: state.keyword,
-		});
-    if (code !== 0) {
-      return;
-    }
-    state.pagination.list = _.concat(state.pagination.list, data.list)
-    state.pagination.total = data.total;
-    state.loadStatus = state.pagination.list.length < state.pagination.total ? 'more' : 'noMore';
-    mountMasonry();
-	}
-
-	// 加载更多
-	function loadMore() {
-    if (state.loadStatus === 'noMore') {
-      return;
-    }
-    state.pagination.pageNo++;
-    getList(state.currentSort, state.currentOrder);
-	}
-
-	onLoad((options) => {
-		state.categoryId = options.categoryId;
+			
+		};
+		if(state.merchantId !== 'undefined'&& state.shopId !== 'undefined'){
+			qurey.merchantId=state.merchantId;
+			qurey.shopId= state.shopId;
+		};
+		const {code,data} = await SpuApi.getSpuPage(qurey);
+		if (code !== 0) {
+			return;
+		}
+		state.pagination.list = _.concat(state.pagination.list, data.list)
+		state.pagination.total = data.total;
+		state.loadStatus = state.pagination.list.length < state.pagination.total ? 'more' : 'noMore';
+		mountMasonry();
+	}
+
+	// 加载更多
+	function loadMore() {
+		if (state.loadStatus === 'noMore') {
+			return;
+		}
+		state.pagination.pageNo++;
+		getList(state.currentSort, state.currentOrder);
+	}
+
+	onLoad((options) => {
+		state.categoryId = options.categoryId;
 		state.keyword = options.keyword;
-		getList(state.currentSort, state.currentOrder);
-	});
-
-	// 上拉加载更多
-	onReachBottom(() => {
-		loadMore();
-	});
-</script>
-
-<style lang="scss" scoped>
-	.goods-list-box {
-		width: 50%;
-		box-sizing: border-box;
-
-		.left-list {
-			margin-right: 10rpx;
-			margin-bottom: 20rpx;
-		}
-
-		.right-list {
-			margin-left: 10rpx;
-			margin-bottom: 20rpx;
-		}
-	}
-
-	.goods-box {
-		&:nth-last-of-type(1) {
-			margin-bottom: 0 !important;
-		}
-
-		&:nth-child(2n) {
-			margin-right: 0;
-		}
-	}
-
-	.list-icon {
-		width: 80rpx;
-
-		.sicon-goods-card {
-			font-size: 40rpx;
-		}
-
-		.sicon-goods-list {
-			font-size: 40rpx;
-		}
-	}
-
-	.goods-card {
-		margin-left: 20rpx;
-	}
-
-	.list-filter-tabs {
-		background-color: #fff;
-	}
-
-	.filter-list-box {
-		padding: 28rpx 52rpx;
-
-		.filter-item {
-			font-size: 28rpx;
-			font-weight: 500;
-			color: #333333;
-			line-height: normal;
-			margin-bottom: 24rpx;
-
-			&:nth-last-child(1) {
-				margin-bottom: 0;
-			}
-		}
-
-		.filter-item-active {
-			color: var(--ui-BG-Main);
-		}
-	}
-
-	.tab-item {
-		height: 50px;
-		position: relative;
-		z-index: 11;
-
-		.tab-title {
-			font-size: 30rpx;
-		}
-
-		.cur-tab-title {
-			font-weight: $font-weight-bold;
-		}
-
-		.tab-line {
-			width: 60rpx;
-			height: 6rpx;
-			border-radius: 6rpx;
-			position: absolute;
-			left: 50%;
-			transform: translateX(-50%);
-			bottom: 10rpx;
-			background-color: var(--ui-BG-Main);
-			z-index: 12;
+		if(options.merchantId && options.shopId){
+			state.merchantId = options.merchantId;
+			state.shopId = options.shopId;
 		}
-	}
+		
+		getList(state.currentSort, state.currentOrder);
+	});
+
+	// 上拉加载更多
+	onReachBottom(() => {
+		loadMore();
+	});
+</script>
+
+<style lang="scss" scoped>
+	.goods-list-box {
+		width: 50%;
+		box-sizing: border-box;
+
+		.left-list {
+			margin-right: 10rpx;
+			margin-bottom: 20rpx;
+		}
+
+		.right-list {
+			margin-left: 10rpx;
+			margin-bottom: 20rpx;
+		}
+	}
+
+	.goods-box {
+		&:nth-last-of-type(1) {
+			margin-bottom: 0 !important;
+		}
+
+		&:nth-child(2n) {
+			margin-right: 0;
+		}
+	}
+
+	.list-icon {
+		width: 80rpx;
+
+		.sicon-goods-card {
+			font-size: 40rpx;
+		}
+
+		.sicon-goods-list {
+			font-size: 40rpx;
+		}
+	}
+
+	.goods-card {
+		margin-left: 20rpx;
+	}
+
+	.list-filter-tabs {
+		background-color: #fff;
+	}
+
+	.filter-list-box {
+		padding: 28rpx 52rpx;
+
+		.filter-item {
+			font-size: 28rpx;
+			font-weight: 500;
+			color: #333333;
+			line-height: normal;
+			margin-bottom: 24rpx;
+
+			&:nth-last-child(1) {
+				margin-bottom: 0;
+			}
+		}
+
+		.filter-item-active {
+			color: var(--ui-BG-Main);
+		}
+	}
+
+	.tab-item {
+		height: 50px;
+		position: relative;
+		z-index: 11;
+
+		.tab-title {
+			font-size: 30rpx;
+		}
+
+		.cur-tab-title {
+			font-weight: $font-weight-bold;
+		}
+
+		.tab-line {
+			width: 60rpx;
+			height: 6rpx;
+			border-radius: 6rpx;
+			position: absolute;
+			left: 50%;
+			transform: translateX(-50%);
+			bottom: 10rpx;
+			background-color: var(--ui-BG-Main);
+			z-index: 12;
+		}
+	}
 </style>

+ 13 - 7
pages/index/FirstList.vue

@@ -1,8 +1,12 @@
 <!-- 商城宣传页,列表页 -->
 <template>
 	<view class="page-body"  style="background: #f6f6f6;">
+		
+		<!-- <video src="https://jvod.300hu.com/vod/product/4c17d312-2039-4668-8460-fd71540fb465/f0db5965187f4178bb7ed745bbff143c.mp4?info=50793-1054733-h264-aac" controls="true"></video>
+		<video src="http://192.168.3.158:80/static/firstIndex/f0db5965187f4178bb7ed745bbff143c.mp4"></video>
+		<video control s src="https://zxpt.newfeifan.cn/admin-api/infra/file/23/get/03488f68d9c9269a3eac373ab5309d574ffdd67e6882ec8a2f86f9b4766c91e7.mp4"></video>-->
 		<s-empty v-if="state.pagination.total === 0" icon="/static/data-empty.png" :text="t('common.no_data')" />
-		<view v-if="state.pagination.total > 0 && type == 'articleCard'">
+		<view v-if="state.pagination.total > 0 && type == 'activityCard'">
 			<view class="article ss-r-10" v-for="item in state.pagination.list"   @click="sheep.$router.go('/pages/public/richtext', {title:item.title});">
 				<view class="title" >
 					{{item.title}}
@@ -17,7 +21,7 @@
 				</view>
 			</view>
 		</view>
-		<view v-if="state.pagination.total > 0 && type == 'activityCard'">
+		<view v-if="state.pagination.total > 0 && type == 'articleCard'">
 			<view class="activity ss-r-10" v-for="item in state.pagination.list" :style="{ backgroundImage: `url(${item.picUrl})` }"  @click="sheep.$router.go('/pages/public/richtext', {title:item.title});">
 				<view class="activity-bottom">
 					<text>{{item.title}}</text>
@@ -189,7 +193,7 @@
 
 		.article {
 			padding:16rpx;
-			height: 170rpx;
+			height: 230rpx;
 			position: relative;
 			width: 90%;
 			margin: 0 auto;
@@ -210,9 +214,10 @@
 			  flex-direction: row;
 			}
 			.image {
-			  width: 200rpx;
-			  height: 113rpx;
+			  width: 300rpx;
+			  height: 169rpx;
 			  margin-right: 16rpx;
+			  background-color: #999;
 			}
 			
 			.image-content {
@@ -223,9 +228,10 @@
 			
 			.desc {
 			  flex: 1;
-			  font-size: 28rpx;
+			  font-size: 32rpx;
 			  color: #333;
-			  line-height: 1.3;
+			  line-height: 1.6;
+			  padding-top: 10rpx;
 			  overflow: hidden;
 			  display: -webkit-box;
 			  -webkit-box-orient: vertical;

+ 10 - 2
pages/index/components/first-one.vue

@@ -5,7 +5,7 @@
       <s-goods-column
         size="sl"
         :data="item"
-        @click="sheep.$router.go('/pages/goods/index', { id: item.id })"
+        @click="sheep.$router.go('/pages/goods/index', { id: item.id,merchantId,shopId })"
       />
     </view>
   </view>
@@ -15,7 +15,15 @@
   import sheep from '@/sheep';
 
   const props = defineProps({
-    pagination: Object,
+	  pagination:{
+		type: Object,
+	  },
+	  shopId:{
+		type: String,
+	  },
+	  merchantId:{
+		type: String,
+	  },
   });
 </script>
 

+ 76 - 66
pages/index/components/first-two.vue

@@ -1,66 +1,76 @@
-<!-- 分类展示:first-two 风格  -->
-<template>
-  <view>
-    <view class="ss-flex flex-wrap">
-      <view class="goods-box" v-for="item in pagination?.list" :key="item.id">
-        <view @click="sheep.$router.go('/pages/goods/index', { id: item.id })">
-          <view class="goods-img">
-            <image class="goods-img" :src="item.picUrl" mode="aspectFit" />
-          </view>
-          <view class="goods-content">
-            <view class="goods-title ss-line-1 ss-m-b-28">{{ item.title }}</view>
-            <view class="goods-price">¥{{ fen2yuan(item.price) }}</view>
-          </view>
-        </view>
-      </view>
-    </view>
-  </view>
-</template>
-
-<script setup>
-  import sheep from '@/sheep';
-  import { fen2yuan } from '@/sheep/hooks/useGoods';
-
-  const props = defineProps({
-    pagination: Object,
-  });
-</script>
-
-<style lang="scss" scoped>
-  .goods-box {
-    width: calc((100% - 20rpx) / 2);
-    margin-bottom: 20rpx;
-
-    .goods-img {
-      width: 100%;
-      height: 246rpx;
-      border-radius: 10rpx 10rpx 0px 0px;
-    }
-
-    .goods-content {
-      width: 100%;
-      background: #ffffff;
-      box-shadow: 0px 0px 20rpx 4rpx rgba(199, 199, 199, 0.22);
-      padding: 20rpx 0 32rpx 16rpx;
-      box-sizing: border-box;
-      border-radius: 0 0 10rpx 10rpx;
-
-      .goods-title {
-        font-size: 26rpx;
-        font-weight: bold;
-        color: #333333;
-      }
-
-      .goods-price {
-        font-size: 24rpx;
-        font-family: OPPOSANS;
-        font-weight: 500;
-        color: #e1212b;
-      }
-    }
-
-    &:nth-child(2n + 1) {
-      margin-right: 20rpx;
-    }
-  }
-</style>
+<!-- 分类展示:first-two 风格  -->
+<template>
+	<view>
+		<view class="ss-flex flex-wrap">
+			<view class="goods-box" v-for="item in pagination?.list" :key="item.id">
+				<view @click="sheep.$router.go('/pages/goods/index', { id: item.id,merchantId,shopId})">
+					<view class="goods-img">
+						<image class="goods-img" :src="item.picUrl" mode="aspectFit" />
+					</view>
+					<view class="goods-content">
+						<view class="goods-title ss-line-1 ss-m-b-28">{{ item.title }}</view>
+						<view class="goods-price">¥{{ fen2yuan(item.price) }}</view>
+					</view>
+				</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script setup>
+	import sheep from '@/sheep';
+	import {
+		fen2yuan
+	} from '@/sheep/hooks/useGoods';
+
+	const props = defineProps({
+		pagination: {
+			type: Object,
+		},
+		shopId: {
+			type: String,
+		},
+		merchantId: {
+			type: String,
+		},
+	});
+</script>
+
+<style lang="scss" scoped>
+	.goods-box {
+		width: calc((100% - 20rpx) / 2);
+		margin-bottom: 20rpx;
+
+		.goods-img {
+			width: 100%;
+			height: 246rpx;
+			border-radius: 10rpx 10rpx 0px 0px;
+		}
+
+		.goods-content {
+			width: 100%;
+			background: #ffffff;
+			box-shadow: 0px 0px 20rpx 4rpx rgba(199, 199, 199, 0.22);
+			padding: 20rpx 0 32rpx 16rpx;
+			box-sizing: border-box;
+			border-radius: 0 0 10rpx 10rpx;
+
+			.goods-title {
+				font-size: 26rpx;
+				font-weight: bold;
+				color: #333333;
+			}
+
+			.goods-price {
+				font-size: 24rpx;
+				font-family: OPPOSANS;
+				font-weight: 500;
+				color: #e1212b;
+			}
+		}
+
+		&:nth-child(2n + 1) {
+			margin-right: 20rpx;
+		}
+	}
+</style>

+ 8 - 0
pages/index/components/second-one.vue

@@ -16,6 +16,8 @@
         @tap="
           sheep.$router.go('/pages/goods/list', {
             categoryId: item.id,
+			shopId,
+			merchantId,
           })
         "
       >
@@ -37,6 +39,12 @@
       default: () => ({}),
     },
     activeMenu: [Number, String],
+	shopId:{
+			type: String,
+	},
+	merchantId:{
+			type: String,
+	},
   });
 </script>
 

+ 381 - 0
pages/shop/allproduct.vue

@@ -0,0 +1,381 @@
+<!-- 商品分类列表 -->
+<template>
+	<su-navbar :title="state.shopName" statusBar :color="color" :tools="tools" :opacityBgUi="opacityBgUi"
+		@search="(e) => emits('search', e)" :defaultSearch="defaultSearch" />
+
+	<!-- 情况一:单列布局 -->
+	<view v-if="state.iconStatus && state.pagination.total > 0" class="goods-list ss-m-t-20">
+		<view class="ss-p-l-20 ss-p-r-20 ss-m-b-20" v-for="item in state.pagination.list" :key="item.id">
+			<s-goods-column class="" size="lg" :data="item" :topRadius="10" :bottomRadius="10"
+				@click="sheep.$router.go('/pages/goods/index', { id: item.id })" />
+		</view>
+	</view>
+	<!-- 情况二:双列布局 -->
+	<view v-if="!state.iconStatus && state.pagination.total > 0"
+		class="ss-flex ss-flex-wrap ss-p-x-20 ss-m-t-20 ss-col-top">
+		<view class="goods-list-box">
+			<view class="left-list" v-for="item in state.leftGoodsList" :key="item.id">
+				<s-goods-column class="goods-md-box" size="md" :data="item" :topRadius="10" :bottomRadius="10"
+					@click="sheep.$router.go('/pages/goods/index', { id: item.id })"
+					@getHeight="mountMasonry($event, 'left')">
+					<template v-slot:cart>
+						<button class="ss-reset-button cart-btn" />
+					</template>
+				</s-goods-column>
+			</view>
+		</view>
+		<view class="goods-list-box">
+			<view class="right-list" v-for="item in state.rightGoodsList" :key="item.id">
+				<s-goods-column class="goods-md-box" size="md" :topRadius="10" :bottomRadius="10" :data="item"
+					@click="sheep.$router.go('/pages/goods/index', { id: item.id })"
+					@getHeight="mountMasonry($event, 'right')">
+					<template v-slot:cart>
+						<button class="ss-reset-button cart-btn" />
+					</template>
+				</s-goods-column>
+			</view>
+		</view>
+	</view>
+	<uni-load-more v-if="state.pagination.total > 0" :status="state.loadStatus" :content-text="{
+		    contentdown: '上拉加载更多',
+		  }" @tap="loadMore" />
+	<s-empty v-if="state.pagination.total === 0" icon="/static/soldout-empty.png" text="暂无商品" />
+
+	<s-tabbar path="/pages/shop/allproduct" :tabbar="tabbar" />
+	
+	<s-menu-tools />
+</template>
+
+<script setup>
+	import secondOne from '@/pages/index/components/second-one.vue';
+	import firstOne from '@/pages/index/components/first-one.vue';
+	import firstTwo from '@/pages/index/components/first-two.vue';
+	import sheep from '@/sheep';
+	import CategoryApi from '@/sheep/api/product/category';
+	import SpuApi from '@/sheep/api/product/spu';
+	import {
+		onLoad,
+		onReachBottom
+	} from '@dcloudio/uni-app';
+	import {
+		ref,
+		computed,
+		reactive
+	} from 'vue';
+	import _ from 'lodash';
+	import {
+		handleTree
+	} from '@/sheep/util';
+	import {
+		t
+	} from '@/locale'
+	const tabbar = ref({
+		"theme": "red",
+		"style": {
+			"bgType": "color",
+			"bgColor": "#ffffff",
+			"color": "#3c3c3c",
+			"activeColor": "#1fa380"
+		},
+		"items": [{
+				"text": t('common.shop_index'),
+				"url": "/pages/shop/index",
+				"iconUrl": sheep.$url.static('/static/shopIndex/shopIndex.svg'),
+				"activeIconUrl": sheep.$url.static('/static/shopIndex/shopIndex-active.svg')
+			},
+			{
+				"text": t('common.shop_category'),
+				"url": "/pages/shop/category",
+				"iconUrl": sheep.$url.static('/static/shopIndex/category.svg'),
+				"activeIconUrl": sheep.$url.static('/static/shopIndex/category-active.svg')
+			},
+			{
+				"text": t('common.all_product'),
+				"url": "/pages/shop/allproduct",
+				"iconUrl": sheep.$url.static('/static/shopIndex/allProduct.svg'),
+				"activeIconUrl": sheep.$url.static('/static/shopIndex/allProduct-active.svg')
+			},
+			
+		]
+	});
+	const state = reactive({
+		pagination: {
+			list: [],
+			total: 0,
+			pageNo: 1,
+			pageSize: 6,
+		},
+		currentSort: undefined,
+		currentOrder: undefined,
+		currentTab: 0, // 当前选中的 tab
+		curFilter: 0, // 当前选中的 list 筛选项
+		showFilter: false,
+		iconStatus: false, // true - 单列布局;false - 双列布局
+		keyword: '',
+		categoryId: 0,
+		tabList: [{
+				name: t('common.recommended'),
+				list: [{
+						label: t('common.recommended')
+					},
+					{
+						label: t('common.price_asc'),
+						sort: 'price',
+						order: true,
+					},
+					{
+						label: t('common.price_desc'),
+						sort: 'price',
+						order: false,
+					},
+				],
+			},
+			{
+				name: t('common.sales'),
+				sort: 'salesCount',
+				order: false
+			},
+			{
+				name: t('common.newest'),
+				value: 'createTime',
+				order: false
+			},
+		],
+		loadStatus: '',
+		leftGoodsList: [], // 双列布局 - 左侧商品
+		rightGoodsList: [], // 双列布局 - 右侧商品
+	});
+	
+	// 加载瀑布流
+	let count = 0;
+	let leftHeight = 0;
+	let rightHeight = 0;
+	
+	// 处理双列布局 leftGoodsList + rightGoodsList
+	function mountMasonry(height = 0, where = 'left') {
+		if (!state.pagination.list[count]) {
+			return;
+		}
+	
+		if (where === 'left') {
+			leftHeight += height;
+		} else {
+			rightHeight += height;
+		}
+		if (leftHeight <= rightHeight) {
+			state.leftGoodsList.push(state.pagination.list[count]);
+		} else {
+			state.rightGoodsList.push(state.pagination.list[count]);
+		}
+		count++;
+	}
+	
+	// 清空列表
+	function emptyList() {
+		resetPagination(state.pagination);
+		state.leftGoodsList = [];
+		state.rightGoodsList = [];
+		count = 0;
+		leftHeight = 0;
+		rightHeight = 0;
+	}
+	
+	// 搜索
+	function onSearch(e) {
+		state.keyword = e;
+		emptyList();
+		getList(state.currentSort, state.currentOrder);
+	}
+	
+	// 点击
+	function onTabsChange(e) {
+		// 如果点击的是【综合推荐】,则直接展开或者收起筛选项
+		if (state.tabList[e.index].list) {
+			state.currentTab = e.index;
+			state.showFilter = !state.showFilter;
+			return;
+		}
+		state.showFilter = false;
+	
+		// 如果点击的是【销量】或者【新品优先】,则直接切换 tab
+		if (e.index === state.currentTab) {
+			return;
+		}
+	
+		state.currentTab = e.index;
+		state.currentSort = e.sort;
+		state.currentOrder = e.order;
+		emptyList();
+		getList(e.sort, e.order);
+	}
+	
+	// 点击 tab 的 list 筛选项
+	const onFilterItem = (val) => {
+		// 如果点击的是当前的筛选项,则直接收起筛选项,不要加载数据
+		// 这里选择 tabList[0] 的原因,是目前只有它有 list
+		if (state.currentSort === state.tabList[0].list[val].sort &&
+			state.currentOrder === state.tabList[0].list[val].order) {
+			state.showFilter = false;
+			return;
+		}
+		state.showFilter = false;
+	
+		// 设置筛选条件
+		state.curFilter = val;
+		state.tabList[0].name = state.tabList[0].list[val].label;
+		state.currentSort = state.tabList[0].list[val].sort;
+		state.currentOrder = state.tabList[0].list[val].order;
+		// 清空 + 加载数据
+		emptyList();
+		getList();
+	}
+	
+	async function getList() {
+		state.loadStatus = 'loading';
+		const {
+			code,
+			data
+		} = await SpuApi.getSpuPage({
+			pageNo: state.pagination.pageNo,
+			pageSize: state.pagination.pageSize,
+			sortField: state.currentSort,
+			sortAsc: state.currentOrder,
+			categoryId: state.categoryId,
+			keyword: state.keyword,
+			shopId: state.shopId,
+			merchantId: state.merchantId
+		});
+		if (code !== 0) {
+			return;
+		}
+		state.pagination.list = _.concat(state.pagination.list, data.list)
+		state.pagination.total = data.total;
+		state.loadStatus = state.pagination.list.length < state.pagination.total ? 'more' : 'noMore';
+		mountMasonry();
+	}
+	
+	// 加载更多
+	function loadMore() {
+		if (state.loadStatus === 'noMore') {
+			return;
+		}
+		state.pagination.pageNo++;
+		getList(state.currentSort, state.currentOrder);
+	}
+	
+
+
+
+	onLoad(async (options) => {
+		state.merchantId = options.merchantId;
+		state.shopId = options.shopId;
+		state.shopName = options.shopName;
+		state.categoryId = options.categoryId;
+		state.keyword = options.keyword;
+		
+		tabbar.value.items = tabbar.value.items.map(item => {
+			// 为每个 URL 添加参数
+			item.url =
+				`${item.url}?shopId=${state.shopId}&shopName=${encodeURIComponent(state.shopName)}&merchantId=${state.merchantId}`;
+			return item;
+		});
+		getList(state.currentSort, state.currentOrder);
+	});
+
+	onReachBottom(() => {
+		loadMore();
+	});
+</script>
+
+<style lang="scss" scoped>
+	.goods-list-box {
+		width: 50%;
+		box-sizing: border-box;
+
+		.left-list {
+			margin-right: 10rpx;
+			margin-bottom: 20rpx;
+		}
+
+		.right-list {
+			margin-left: 10rpx;
+			margin-bottom: 20rpx;
+		}
+	}
+
+	.goods-box {
+		&:nth-last-of-type(1) {
+			margin-bottom: 0 !important;
+		}
+
+		&:nth-child(2n) {
+			margin-right: 0;
+		}
+	}
+
+	.list-icon {
+		width: 80rpx;
+
+		.sicon-goods-card {
+			font-size: 40rpx;
+		}
+
+		.sicon-goods-list {
+			font-size: 40rpx;
+		}
+	}
+
+	.goods-card {
+		margin-left: 20rpx;
+	}
+
+	.list-filter-tabs {
+		background-color: #fff;
+	}
+
+	.filter-list-box {
+		padding: 28rpx 52rpx;
+
+		.filter-item {
+			font-size: 28rpx;
+			font-weight: 500;
+			color: #333333;
+			line-height: normal;
+			margin-bottom: 24rpx;
+
+			&:nth-last-child(1) {
+				margin-bottom: 0;
+			}
+		}
+
+		.filter-item-active {
+			color: var(--ui-BG-Main);
+		}
+	}
+
+	.tab-item {
+		height: 50px;
+		position: relative;
+		z-index: 11;
+
+		.tab-title {
+			font-size: 30rpx;
+		}
+
+		.cur-tab-title {
+			font-weight: $font-weight-bold;
+		}
+
+		.tab-line {
+			width: 60rpx;
+			height: 6rpx;
+			border-radius: 6rpx;
+			position: absolute;
+			left: 50%;
+			transform: translateX(-50%);
+			bottom: 10rpx;
+			background-color: var(--ui-BG-Main);
+			z-index: 12;
+		}
+	}
+</style>

+ 279 - 0
pages/shop/category.vue

@@ -0,0 +1,279 @@
+<!-- 商品分类列表 -->
+<template>
+	<su-navbar :title="state.shopName" statusBar :color="color" :tools="tools" :opacityBgUi="opacityBgUi"
+		@search="(e) => emits('search', e)" :defaultSearch="defaultSearch" />
+
+	<view class="s-category">
+		<view class="three-level-wrap ss-flex ss-col-top" :style="[{ height: pageHeight + 'px' }]">
+			<!-- 商品分类(左) -->
+			<scroll-view class="side-menu-wrap" scroll-y :style="[{ height: pageHeight + 'px' }]">
+				<view class="menu-item ss-flex" v-for="(item, index) in state.categoryList" :key="item.id"
+					:class="[{ 'menu-item-active': index === state.activeMenu }]" @tap="onMenu(index)">
+					<view class="menu-title ss-line-1">
+						{{ item.name }}
+					</view>
+				</view>
+			</scroll-view>
+			<!-- 商品分类(右) -->
+			
+			<scroll-view class="goods-list-box" scroll-y :style="[{ height: pageHeight + 'px' }]"
+				v-if="state.categoryList?.length">
+				<image v-if="state.categoryList[state.activeMenu].picUrl" class="banner-img"
+					:src="sheep.$url.cdn(state.categoryList[state.activeMenu].picUrl)" mode="widthFix" />
+				<first-one v-if="state.style === 'first_one'" :pagination="state.pagination"  :merchantId="state.merchantId" :shopId="state.shopId"/>
+				<first-two v-if="state.style === 'first_two'" :pagination="state.pagination" :merchantId="state.merchantId" :shopId="state.shopId"/>
+				<second-one v-if="state.style === 'second_one'" :data="state.categoryList" :merchantId="state.merchantId " :shopId="state.shopId" :activeMenu="state.activeMenu" />
+				<uni-load-more v-if="
+              (state.style === 'first_one' || state.style === 'first_two') &&
+              state.pagination.total > 0
+            " :status="state.loadStatus" :content-text="{
+              contentdown: '点击查看更多',
+            }" @tap="loadMore" />
+			</scroll-view>
+		</view>
+	</view>
+
+	<s-tabbar path="/pages/shop/category" :tabbar="tabbar" />
+	<s-menu-tools />
+</template>
+
+<script setup>
+	import secondOne from '@/pages/index/components/second-one.vue';
+	import firstOne from '@/pages/index/components/first-one.vue';
+	import firstTwo from '@/pages/index/components/first-two.vue';
+	import sheep from '@/sheep';
+	import CategoryApi from '@/sheep/api/product/category';
+	import SpuApi from '@/sheep/api/product/spu';
+	import {
+		onLoad,
+		onReachBottom
+	} from '@dcloudio/uni-app';
+	import {
+		ref,
+		computed,
+		reactive
+	} from 'vue';
+	import _ from 'lodash';
+	import {
+		handleTree
+	} from '@/sheep/util';
+	import {
+		t
+	} from '@/locale'
+	const tabbar = ref({
+		"theme": "red",
+		"style": {
+			"bgType": "color",
+			"bgColor": "#ffffff",
+			"color": "#3c3c3c",
+			"activeColor": "#1fa380"
+		},
+		"items": [{
+				"text": t('common.shop_index'),
+				"url": "/pages/shop/index",
+				"iconUrl": sheep.$url.static('/static/shopIndex/shopIndex.svg'),
+				"activeIconUrl": sheep.$url.static('/static/shopIndex/shopIndex-active.svg')
+			},
+			{
+				"text": t('common.shop_category'),
+				"url": "/pages/shop/category",
+				"iconUrl": sheep.$url.static('/static/shopIndex/category.svg'),
+				"activeIconUrl": sheep.$url.static('/static/shopIndex/category-active.svg')
+			},
+			{
+				"text": t('common.all_product'),
+				"url": "/pages/shop/allproduct",
+				"iconUrl": sheep.$url.static('/static/shopIndex/allProduct.svg'),
+				"activeIconUrl": sheep.$url.static('/static/shopIndex/allProduct-active.svg')
+			},
+			
+		]
+	});
+
+	const state = reactive({
+		style: 'second_one', // first_one(一级 - 样式一), first_two(二级 - 样式二), second_one(二级)
+		categoryList: [], // 商品分类树
+		activeMenu: 0, // 选中的一级菜单,在 categoryList 的下标
+		shopId: 0, // 商家id
+		merchantId: 0, // 商家id
+		shopName: '',
+		pagination: {
+			// 商品分页
+			list: [], // 商品列表
+			total: [], // 商品总数
+			pageNo: 1,
+			pageSize: 6,
+		},
+		loadStatus: '',
+	});
+
+	const {
+		safeArea
+	} = sheep.$platform.device;
+	const pageHeight = computed(() => safeArea.height - 44 - 50);
+
+	// 加载商品分类
+	async function getList() {
+		const {
+			code,
+			data
+		} = await CategoryApi.getCategoryList({
+			merchantId: state.merchantId,
+			shopId: state.shopId
+		});
+		if (code !== 0) {
+			return;
+		}
+		
+		state.categoryList = handleTree(data);
+	}
+
+	// 选中菜单
+	const onMenu = (val) => {
+		state.activeMenu = val;
+		if (state.style === 'first_one' || state.style === 'first_two') {
+			state.pagination.pageNo = 1;
+			state.pagination.list = [];
+			state.pagination.total = 0;
+			getGoodsList();
+		}
+	};
+
+	// 加载商品列表
+	async function getGoodsList() {
+		// 加载列表
+		state.loadStatus = 'loading';
+		const res = await SpuApi.getSpuPage({
+			categoryId: state.categoryList[state.activeMenu].id,
+			pageNo: state.pagination.pageNo,
+			pageSize: state.pagination.pageSize,
+		});
+		if (res.code !== 0) {
+			return;
+		}
+		// 合并列表
+		state.pagination.list = _.concat(state.pagination.list, res.data.list);
+		state.pagination.total = res.data.total;
+		state.loadStatus = state.pagination.list.length < state.pagination.total ? 'more' : 'noMore';
+	}
+
+	// 加载更多商品
+	function loadMore() {
+		if (state.loadStatus === 'noMore') {
+			return;
+		}
+		state.pagination.pageNo++;
+		getGoodsList();
+	}
+
+	onLoad(async (options) => {
+		state.merchantId = options.merchantId;
+		state.shopId = options.shopId;
+		state.shopName = options.shopName;
+		tabbar.value.items = tabbar.value.items.map(item => {
+			// 为每个 URL 添加参数
+			item.url =
+				`${item.url}?shopId=${state.shopId}&shopName=${encodeURIComponent(state.shopName)}&merchantId=${state.merchantId}`;
+			return item;
+		});
+		await getList();
+		// 如果是 first 风格,需要加载商品分页
+		if (state.style === 'first_one' || state.style === 'first_two') {
+			onMenu(0);
+		}
+	});
+
+	onReachBottom(() => {
+		loadMore();
+	});
+</script>
+
+<style lang="scss" scoped>
+	.s-category {
+		:deep() {
+			.side-menu-wrap {
+				width: 200rpx;
+				height: 100%;
+				padding-left: 12rpx;
+				background-color: #f6f6f6;
+
+				.menu-item {
+					width: 100%;
+					height: 88rpx;
+					position: relative;
+					transition: all linear 0.2s;
+
+					.menu-title {
+						line-height: 32rpx;
+						font-size: 30rpx;
+						font-weight: 400;
+						color: #333;
+						margin-left: 28rpx;
+						position: relative;
+						z-index: 0;
+
+						// &::before {
+						// 	content: '';
+						// 	width: 64rpx;
+						// 	height: 12rpx;
+						// 	background: linear-gradient(90deg,
+						// 			var(--ui-BG-Main-gradient),
+						// 			var(--ui-BG-Main-light)) !important;
+						// 	position: absolute;
+						// 	left: -64rpx;
+						// 	bottom: 0;
+						// 	z-index: -1;
+						// 	transition: all linear 0.2s;
+						// }
+					}
+
+					&.menu-item-active {
+						background-color: #fff;
+						border-radius: 20rpx 0 0 20rpx;
+
+						&::before {
+							content: '';
+							position: absolute;
+							right: 0;
+							bottom: -20rpx;
+							width: 20rpx;
+							height: 20rpx;
+							background: radial-gradient(circle at 0 100%, transparent 20rpx, #fff 0);
+						}
+
+						&::after {
+							content: '';
+							position: absolute;
+							top: -20rpx;
+							right: 0;
+							width: 20rpx;
+							height: 20rpx;
+							background: radial-gradient(circle at 0% 0%, transparent 20rpx, #fff 0);
+						}
+
+						.menu-title {
+							font-weight: 600;
+							color: var(--ui-BG-Main);
+
+							&::before {
+								left: 0;
+							}
+						}
+					}
+				}
+			}
+
+			.goods-list-box {
+				background-color: #fff;
+				width: calc(100vw - 100px);
+				padding: 10px;
+			}
+
+			.banner-img {
+				width: calc(100vw - 130px);
+				border-radius: 5px;
+				margin-bottom: 20rpx;
+			}
+		}
+	}
+</style>

+ 58 - 31
pages/shop/index.vue

@@ -1,19 +1,23 @@
 <!-- 店铺首页,支持店铺装修 -->
 <template>
 	<view v-if="template">
-		<s-layout :title="shopName" navbar="normal"  :bgStyle="template.page"
-			:navbarStyle="template.style?.navbar" onShareAppMessage >
-			<s-block v-for="(item, index) in template.components" :key="index" :styles="item.property.style">
-				
-				<s-block-item :type="item.id" :data="item.property" :styles="item.property.style" />
-			</s-block>
-		</s-layout>
+		<su-navbar :title="state.shopName" statusBar :color="color" :tools="tools"
+			:opacityBgUi="opacityBgUi" @search="(e) => emits('search', e)" :defaultSearch="defaultSearch" />
+			
+		<s-block v-for="(item, index) in template.components" :key="index" :styles="item.property.style">
+			
+			<s-block-item :type="item.id" :data="item.property" :styles="item.property.style" />
+		</s-block>
+		
+		<s-tabbar path="/pages/shop/index" :tabbar="tabbar" />
+		<s-menu-tools />
 	</view>
 </template>
 
 <script setup>
 	import {
 		computed,
+		reactive,
 		ref
 	} from 'vue';
 	import {
@@ -24,36 +28,51 @@
 	import sheep from '@/sheep';
 	import $share from '@/sheep/platform/share';
 	import PageApi from '@/sheep/api/promotion/page';
+	import {
+		t
+	} from '@/locale'
 	// 隐藏原生tabBar
 	uni.hideTabBar();
 
 	const template = ref({})
 	const shopName = ref('')
-	// 在此处拦截改变一下首页轮播图 此处先写死后期复活 放到启动函数里
-	// (async function() {
-		// console.log('原代码首页定制化数据',template)
-		// let {
-		// 	data
-		// } = await index2Api.decorate();
-		// console.log('首页导航配置化过高无法兼容',JSON.parse(data[1].value))
-		// 改变首页底部数据 但是没有通过数组id获取商品数据接口
-		// let {
-		// 	data: datas
-		// } = await index2Api.spids();
-		// template.value.data[9].data.goodsIds = datas.list.map(item => item.id);
-		// template.value.data[0].data.list = JSON.parse(data[0].value).map(item => {
-		// 	return {
-		// 		src: item.picUrl,
-		// 		url: item.url,
-		// 		title: item.name,
-		// 		type: "image"
-		// 	}
-		// })
-	// }())
-
+	const state = reactive({
+		shopName : '',
+		merchantId: 0,
+		shopId:0
+	})
+	const tabbar = ref({
+		"theme": "red",
+		"style": {
+			"bgType": "color",
+			"bgColor": "#ffffff",
+			"color": "#3c3c3c",
+			"activeColor": "#1fa380"
+		},
+		"items": [{
+				"text": t('common.shop_index'),
+				"url": "/pages/shop/index",
+				"iconUrl": sheep.$url.static('/static/shopIndex/shopIndex.svg'),
+				"activeIconUrl": sheep.$url.static('/static/shopIndex/shopIndex-active.svg')
+			},
+			{
+				"text": t('common.shop_category'),
+				"url": "/pages/shop/category",
+				"iconUrl": sheep.$url.static('/static/shopIndex/category.svg'),
+				"activeIconUrl": sheep.$url.static('/static/shopIndex/category-active.svg')
+			},
+			{
+				"text": t('common.all_product'),
+				"url": "/pages/shop/allproduct",
+				"iconUrl": sheep.$url.static('/static/shopIndex/allProduct.svg'),
+				"activeIconUrl": sheep.$url.static('/static/shopIndex/allProduct-active.svg')
+			},
+			
+		]
+	});
 
 	onLoad(async(options) => {
-		shopName.value = options.shopName
+		
 		// #ifdef MP
 		// 小程序识别二维码
 		if (options.scene) {
@@ -77,8 +96,16 @@
 			sheep.$router.go(decodeURIComponent(options.page));
 		}
 		
+		state.merchantId = options.merchantId;
+		state.shopId = options.shopId;
+		state.shopName = options.shopName;
+		tabbar.value.items = tabbar.value.items.map(item => {
+		    // 为每个 URL 添加参数
+		    item.url = `${item.url}?shopId=${state.shopId}&shopName=${encodeURIComponent(state.shopName)}&merchantId=${state.merchantId}`;
+		    return item;
+		});
 		const { code,data } = await PageApi.getPage({shopId:options.shopId,merchantId:options.merchantId});
-		console.log(data)
+		// console.log(data)
 		template.value = data.property
 	});
 

+ 2 - 1
sheep/api/product/category.js

@@ -2,10 +2,11 @@ import request from '@/sheep/request';
 
 const CategoryApi = {
   // 查询分类列表
-  getCategoryList: () => {
+  getCategoryList: (data) => {
     return request({
       url: '/product/category/list',
       method: 'GET',
+	  data
     });
   },
   // 查询分类列表,指定编号

+ 1 - 0
sheep/components/s-video-block/s-video-block.vue

@@ -1,5 +1,6 @@
 <!-- 装修图文组件:视频播放 -->
 <template>
+	
   <su-video
     class="sss"
     :uid="guid()"

+ 7 - 0
sheep/ui/su-video/su-video.vue

@@ -105,10 +105,17 @@
     emits('videoTimeupdate', e);
   };
   const videoErrorCallback = (e) => {
+	  // sheep.$helper.toast(e)
+	  uni.showToast({
+	    title: JSON.stringify(e),
+	    icon: 'none',
+	    
+	  });
     console.log('视频错误信息:', e.target.errMsg);
   };
   // 当开始/继续播放时触发play事件
   const play = () => {
+	
     console.log('视频开始');
   };
   // 当暂停播放时触发 pause 事件

+ 3 - 0
sheep/util/index.js

@@ -86,6 +86,7 @@ export function formatDate(date, format) {
  * @param {*} rootId 根Id 默认 0
  */
 export function handleTree(data, id = 'id', parentId = 'parentId', children = 'children', rootId = 0) {
+	
   // 对源数据深度克隆
   const cloneData = JSON.parse(JSON.stringify(data))
   // 循环所有项
@@ -98,6 +99,8 @@ export function handleTree(data, id = 'id', parentId = 'parentId', children = 'c
     //返回第一层
     return father[parentId] === rootId;
   });
+
+  
   return treeData !== '' ? treeData : data;
 }
 

+ 1 - 0
static/shopIndex/allProduct-active.svg

@@ -0,0 +1 @@
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1731567856769" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="8249" xmlns:xlink="http://www.w3.org/1999/xlink" width="256" height="256"><path d="M969.333 920.832l-33.729-526.688c0-40.212-33.729-70.053-71.348-70.053h-142.699v-83.024c0-57.075-20.753-108.969-60.973-147.886-38.915-38.922-92.103-60.973-149.181-60.973-115.457 0-210.155 93.402-210.155 208.858v83.024h-142.699c-40.217 0-71.348 32.433-71.348 70.053l-33.729 526.688v1.298c0 40.212 32.433 71.348 71.348 71.348h770.565c40.217 0 71.349-32.433 71.349-71.348l2.597-1.298zM375.191 242.367c0-75.242 60.969-134.915 136.211-134.915 75.237 0 136.21 60.973 136.21 134.915v83.029h-272.419v-83.029zM181.898 383.767h115.457l2.593 84.321c-9.081 9.079-14.269 20.758-14.269 35.025 0 16.863 9.081 32.433 20.754 41.513 6.487 9.081 16.863 14.269 28.54 14.269 11.679 0 23.353-6.482 28.54-14.269 14.272-9.079 20.759-24.649 20.759-41.513 0-14.269-5.191-25.946-14.272-35.025v-84.321h275.020l-1.297 84.321c-9.081 9.079-14.272 20.758-14.272 35.025 0 16.863 9.081 32.433 20.754 41.513 6.487 9.081 16.865 14.269 28.54 14.269 11.679 0 23.353-6.482 28.545-14.269 14.268-9.079 20.753-24.649 20.753-41.513 0-14.269-5.19-25.946-14.271-35.025l2.598-84.321h106.371c37.627 0 49.299 0 50.596 50.595 1.297 119.346 27.242 346.364 27.242 452.74 0 23.348-16.865 45.403-37.618 45.403h-725.168c0 0-23.348-9.081-23.348-29.834 0-89.511 24.649-347.665 31.131-473.498 1.298-19.458 3.894-45.403 36.323-45.403v0zM181.898 383.767z" fill="#1fa380" p-id="8250"></path></svg>

+ 1 - 0
static/shopIndex/allProduct.svg

@@ -0,0 +1 @@
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1731567856769" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="8249" xmlns:xlink="http://www.w3.org/1999/xlink" width="256" height="256"><path d="M969.333 920.832l-33.729-526.688c0-40.212-33.729-70.053-71.348-70.053h-142.699v-83.024c0-57.075-20.753-108.969-60.973-147.886-38.915-38.922-92.103-60.973-149.181-60.973-115.457 0-210.155 93.402-210.155 208.858v83.024h-142.699c-40.217 0-71.348 32.433-71.348 70.053l-33.729 526.688v1.298c0 40.212 32.433 71.348 71.348 71.348h770.565c40.217 0 71.349-32.433 71.349-71.348l2.597-1.298zM375.191 242.367c0-75.242 60.969-134.915 136.211-134.915 75.237 0 136.21 60.973 136.21 134.915v83.029h-272.419v-83.029zM181.898 383.767h115.457l2.593 84.321c-9.081 9.079-14.269 20.758-14.269 35.025 0 16.863 9.081 32.433 20.754 41.513 6.487 9.081 16.863 14.269 28.54 14.269 11.679 0 23.353-6.482 28.54-14.269 14.272-9.079 20.759-24.649 20.759-41.513 0-14.269-5.191-25.946-14.272-35.025v-84.321h275.020l-1.297 84.321c-9.081 9.079-14.272 20.758-14.272 35.025 0 16.863 9.081 32.433 20.754 41.513 6.487 9.081 16.865 14.269 28.54 14.269 11.679 0 23.353-6.482 28.545-14.269 14.268-9.079 20.753-24.649 20.753-41.513 0-14.269-5.19-25.946-14.271-35.025l2.598-84.321h106.371c37.627 0 49.299 0 50.596 50.595 1.297 119.346 27.242 346.364 27.242 452.74 0 23.348-16.865 45.403-37.618 45.403h-725.168c0 0-23.348-9.081-23.348-29.834 0-89.511 24.649-347.665 31.131-473.498 1.298-19.458 3.894-45.403 36.323-45.403v0zM181.898 383.767z" fill="#272636" p-id="8250"></path></svg>

+ 1 - 0
static/shopIndex/category-active.svg

@@ -0,0 +1 @@
+<svg id="图层_1" data-name="图层 1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 664.1 664.1"><defs><style>.cls-1{fill:none;}.cls-2{clip-path:url(#clip-path);}.cls-3{fill:#1fa380;}</style><clipPath id="clip-path" transform="translate(-626.8 -208.7)"><rect class="cls-1" x="627" y="208" width="664.8" height="665.8"/></clipPath></defs><g class="cls-2"><path class="cls-3" d="M779,256.7A104.13,104.13,0,0,1,883.2,360.9V465H779a104.15,104.15,0,1,1,0-208.3m0-48A152.15,152.15,0,1,0,779,513H921.6a9.6,9.6,0,0,0,9.6-9.6V361c0-84.1-68.2-152.3-152.2-152.3ZM883.2,616.4V719.2a105.8,105.8,0,0,1-30.8,74.5c-19.8,20-45.8,31-73.4,31h-.8a103.59,103.59,0,0,1-73.1-176.8,106.24,106.24,0,0,1,34-23.1,104.46,104.46,0,0,1,41.3-8.4H883.2m38.4-48H780.4c-84.3,0-154.2,69-153.5,153.4a152.16,152.16,0,0,0,151,151H779c83.8,0,152.2-69.6,152.2-153.5V578a9.6,9.6,0,0,0-9.6-9.6Zm217.1-311.7a104.31,104.31,0,0,1,104.2,104c.1,27.3-10.8,53.2-30.6,73a107.15,107.15,0,0,1-33.9,23,104.78,104.78,0,0,1-41,8.4H1034.5V361a104.3,104.3,0,0,1,104.2-104.3m0-48A152.21,152.21,0,0,0,986.5,360.9V503.5a9.6,9.6,0,0,0,9.6,9.6h141.3c83.8,0,153.6-68.6,153.5-152.5s-68.3-151.9-152.2-151.9Zm-1.3,407.7a104.82,104.82,0,0,1,41.3,8.4,106.24,106.24,0,0,1,34,23.1,102.45,102.45,0,0,1,30.3,73.4,104.14,104.14,0,0,1-103.4,103.4h-.8a102.81,102.81,0,0,1-73.4-31,105.8,105.8,0,0,1-30.8-74.5V616.4h102.8m0-48H996.2a9.6,9.6,0,0,0-9.6,9.6V719.2c0,84,68.4,153.5,152.2,153.5h1.1a152.16,152.16,0,0,0,151-151c.6-84.3-69.2-153.3-153.5-153.3Z" transform="translate(-626.8 -208.7)"/></g></svg>

+ 1 - 0
static/shopIndex/category.svg

@@ -0,0 +1 @@
+<svg id="图层_1" data-name="图层 1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 664.1 664.1"><defs><style>.cls-1{fill:none;}.cls-2{clip-path:url(#clip-path);}.cls-3{fill:#575d6d;}</style><clipPath id="clip-path" transform="translate(-626.8 -208.7)"><rect class="cls-1" x="627" y="208" width="664.8" height="665.8"/></clipPath></defs><g class="cls-2"><path class="cls-3" d="M779,256.7A104.13,104.13,0,0,1,883.2,360.9V465H779a104.15,104.15,0,1,1,0-208.3m0-48A152.15,152.15,0,1,0,779,513H921.6a9.6,9.6,0,0,0,9.6-9.6V361c0-84.1-68.2-152.3-152.2-152.3ZM883.2,616.4V719.2a105.8,105.8,0,0,1-30.8,74.5c-19.8,20-45.8,31-73.4,31h-.8a103.59,103.59,0,0,1-73.1-176.8,106.24,106.24,0,0,1,34-23.1,104.46,104.46,0,0,1,41.3-8.4H883.2m38.4-48H780.4c-84.3,0-154.2,69-153.5,153.4a152.16,152.16,0,0,0,151,151H779c83.8,0,152.2-69.6,152.2-153.5V578a9.6,9.6,0,0,0-9.6-9.6Zm217.1-311.7a104.31,104.31,0,0,1,104.2,104c.1,27.3-10.8,53.2-30.6,73a107.15,107.15,0,0,1-33.9,23,104.78,104.78,0,0,1-41,8.4H1034.5V361a104.3,104.3,0,0,1,104.2-104.3m0-48A152.21,152.21,0,0,0,986.5,360.9V503.5a9.6,9.6,0,0,0,9.6,9.6h141.3c83.8,0,153.6-68.6,153.5-152.5s-68.3-151.9-152.2-151.9Zm-1.3,407.7a104.82,104.82,0,0,1,41.3,8.4,106.24,106.24,0,0,1,34,23.1,102.45,102.45,0,0,1,30.3,73.4,104.14,104.14,0,0,1-103.4,103.4h-.8a102.81,102.81,0,0,1-73.4-31,105.8,105.8,0,0,1-30.8-74.5V616.4h102.8m0-48H996.2a9.6,9.6,0,0,0-9.6,9.6V719.2c0,84,68.4,153.5,152.2,153.5h1.1a152.16,152.16,0,0,0,151-151c.6-84.3-69.2-153.3-153.5-153.3Z" transform="translate(-626.8 -208.7)"/></g></svg>

+ 8 - 0
static/shopIndex/shopIndex-active.svg

@@ -0,0 +1,8 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1731567780708"
+	class="icon" viewBox="0 0 1163 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4443"
+	xmlns:xlink="http://www.w3.org/1999/xlink" width="290.75" height="256">
+	<path fill="#1fa380"
+		d="M1162.83797 395.602361a222.33462 222.33462 0 0 0-11.163245-69.770278 2.093108 2.093108 0 0 0 0-1.627973 39.769059 39.769059 0 0 0-2.093108-6.977028L1050.740389 80.240704A124.888798 124.888798 0 0 0 927.9447 0.237452H237.916649A119.307176 119.307176 0 0 0 118.609473 77.68246L13.023785 321.645866a8.837569 8.837569 0 0 1-1.627973 5.81419 229.544215 229.544215 0 0 0-11.395812 69.770278 221.636917 221.636917 0 0 0 72.095954 162.797316v359.782068a106.050823 106.050823 0 0 0 107.678796 103.725147h788.869279a106.050823 106.050823 0 0 0 107.213661-104.887985V573.284003A223.26489 223.26489 0 0 0 1162.83797 395.602361z m-194.193941 546.533846H179.77475a23.256759 23.256759 0 0 1-23.256759-23.256759v-309.3149a247.219352 247.219352 0 0 0 74.886765 10.698109 232.567594 232.567594 0 0 0 176.053669-80.23582 230.939621 230.939621 0 0 0 325.594631 23.256759 239.079487 239.079487 0 0 0 23.256759-23.256759 232.567594 232.567594 0 0 0 176.518804 80.003252 270.243544 270.243544 0 0 0 59.537304-6.74446v305.593819a23.256759 23.256759 0 0 1-23.256759 23.256759z m33.954868-418.621669a150.936368 150.936368 0 0 1-69.770278 15.582029 146.750152 146.750152 0 0 1-125.121365-68.142305 62.095548 62.095548 0 0 0-11.163245-17.44257 56.746493 56.746493 0 0 0-80.23582 0 56.281358 56.281358 0 0 0-10.930677 16.744867 145.587314 145.587314 0 0 1-246.986784 0 66.979467 66.979467 0 0 0-10.000407-15.349461 58.839601 58.839601 0 0 0-81.16609-1.627974 70.933116 70.933116 0 0 0-11.62838 18.140273 147.215287 147.215287 0 0 1-124.423663 67.909737 147.215287 147.215287 0 0 1-69.770278-14.651758 140.935962 140.935962 0 0 1-69.770278-173.262858v-3.721081L196.752184 106.985977c2.093108-6.279325 8.837569-24.884733 40.931897-24.884732H927.9447a43.955275 43.955275 0 0 1 44.187843 26.512705l97.678389 237.218946a15.582029 15.582029 0 0 0 0 4.651352 140.935962 140.935962 0 0 1-68.374873 172.565155z"
+		p-id="4444"></path>
+</svg>

Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
static/shopIndex/shopIndex.svg


+ 1 - 0
uni_modules/mp-html/components/mp-html/node/node.vue

@@ -32,6 +32,7 @@
       </view>
       <!-- 视频 -->
       <!-- #ifdef APP-PLUS -->
+	  
       <view v-else-if="n.html" :id="n.attrs.id" :class="'_video '+n.attrs.class" :style="n.attrs.style" v-html="n.html" @vplay.stop="play" />
       <!-- #endif -->
       <!-- #ifndef APP-PLUS -->

Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
unpackage/dist/build/web/assets/FirstList-D9D2dv1v.css


+ 0 - 1
unpackage/dist/build/web/assets/FirstList-v3YrpZ37.css

@@ -1 +0,0 @@
-.page-body[data-v-dce029d0]{width:100%;position:relative;z-index:1;flex:1;padding-top:1.25rem;box-sizing:border-box}.page-body[data-v-dce029d0] .article[data-v-dce029d0]{padding:.5rem;height:5.3125rem;position:relative;width:90%;margin:0 auto;color:#000;margin-bottom:1.25rem;background-repeat:no-repeat;background-size:100%;background-position:center;background-color:#fff;overflow:hidden}.page-body[data-v-dce029d0] .article[data-v-dce029d0] .title[data-v-dce029d0]{font-size:1.0625rem;margin-bottom:8px}.page-body[data-v-dce029d0] .article[data-v-dce029d0] .content[data-v-dce029d0]{display:flex;flex-direction:row}.page-body[data-v-dce029d0] .article[data-v-dce029d0] .image[data-v-dce029d0]{width:6.25rem;height:3.53125rem;margin-right:.5rem}.page-body[data-v-dce029d0] .article[data-v-dce029d0] .image-content[data-v-dce029d0]{width:100%;height:100%;border-radius:.25rem}.page-body[data-v-dce029d0] .article[data-v-dce029d0] .desc[data-v-dce029d0]{flex:1;font-size:.875rem;color:#333;line-height:1.3;overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;text-overflow:ellipsis}.page-body[data-v-dce029d0] .activity[data-v-dce029d0]{height:9.375rem;position:relative;width:90%;margin:0 auto;color:#fff;margin-bottom:1.25rem;background-repeat:no-repeat;background-size:100%;background-position:center;background-color:#fff;overflow:hidden}.page-body[data-v-dce029d0] .activity[data-v-dce029d0] .activity-bottom[data-v-dce029d0]{position:absolute;bottom:0;left:0;width:100%;height:1.5625rem;background:rgba(0,0,0,.5);padding:.3125rem;box-sizing:border-box;display:flex;align-items:center;justify-content:space-between}.page-body[data-v-dce029d0] .activity[data-v-dce029d0] .activity-bottom[data-v-dce029d0] uni-text[data-v-dce029d0]{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.page-body[data-v-dce029d0] .activity[data-v-dce029d0] .activity-bottom[data-v-dce029d0] uni-image[data-v-dce029d0]{width:.625rem;height:.625rem}

+ 1 - 0
unpackage/dist/build/web/assets/allproduct-1cNZN1lr.css

@@ -0,0 +1 @@
+.goods-list-box[data-v-fc4c9623]{width:50%;box-sizing:border-box}.goods-list-box .left-list[data-v-fc4c9623]{margin-right:.3125rem;margin-bottom:.625rem}.goods-list-box .right-list[data-v-fc4c9623]{margin-left:.3125rem;margin-bottom:.625rem}.goods-box[data-v-fc4c9623]:nth-last-of-type(1){margin-bottom:0!important}.goods-box[data-v-fc4c9623]:nth-child(2n){margin-right:0}.list-icon[data-v-fc4c9623]{width:2.5rem}.list-icon .sicon-goods-card[data-v-fc4c9623],.list-icon .sicon-goods-list[data-v-fc4c9623]{font-size:1.25rem}.goods-card[data-v-fc4c9623]{margin-left:.625rem}.list-filter-tabs[data-v-fc4c9623]{background-color:#fff}.filter-list-box[data-v-fc4c9623]{padding:.875rem 1.625rem}.filter-list-box .filter-item[data-v-fc4c9623]{font-size:.875rem;font-weight:500;color:#333;line-height:normal;margin-bottom:.75rem}.filter-list-box .filter-item[data-v-fc4c9623]:nth-last-child(1){margin-bottom:0}.filter-list-box .filter-item-active[data-v-fc4c9623]{color:var(--ui-BG-Main)}.tab-item[data-v-fc4c9623]{height:50px;position:relative;z-index:11}.tab-item .tab-title[data-v-fc4c9623]{font-size:.9375rem}.tab-item .cur-tab-title[data-v-fc4c9623]{font-weight:700}.tab-item .tab-line[data-v-fc4c9623]{width:1.875rem;height:.1875rem;border-radius:.1875rem;position:absolute;left:50%;transform:translate(-50%);bottom:.3125rem;background-color:var(--ui-BG-Main);z-index:12}

+ 1 - 0
unpackage/dist/build/web/assets/category-B3qmXwqA.css

@@ -0,0 +1 @@
+.s-category[data-v-71159b83] .side-menu-wrap{width:6.25rem;height:100%;padding-left:.375rem;background-color:#f6f6f6}.s-category[data-v-71159b83] .side-menu-wrap .menu-item{width:100%;height:2.75rem;position:relative;transition:all linear .2s}.s-category[data-v-71159b83] .side-menu-wrap .menu-item .menu-title{line-height:1rem;font-size:.9375rem;font-weight:400;color:#333;margin-left:.875rem;position:relative;z-index:0}.s-category[data-v-71159b83] .side-menu-wrap .menu-item.menu-item-active{background-color:#fff;border-radius:.625rem 0 0 .625rem}.s-category[data-v-71159b83] .side-menu-wrap .menu-item.menu-item-active:before{content:"";position:absolute;right:0;bottom:-.625rem;width:.625rem;height:.625rem;background:radial-gradient(circle at 0 100%,transparent .625rem,#fff 0)}.s-category[data-v-71159b83] .side-menu-wrap .menu-item.menu-item-active:after{content:"";position:absolute;top:-.625rem;right:0;width:.625rem;height:.625rem;background:radial-gradient(circle at 0% 0%,transparent .625rem,#fff 0)}.s-category[data-v-71159b83] .side-menu-wrap .menu-item.menu-item-active .menu-title{font-weight:600;color:var(--ui-BG-Main)}.s-category[data-v-71159b83] .side-menu-wrap .menu-item.menu-item-active .menu-title:before{left:0}.s-category[data-v-71159b83] .goods-list-box{background-color:#fff;width:calc(100vw - 100px);padding:10px}.s-category[data-v-71159b83] .banner-img{width:calc(100vw - 130px);border-radius:5px;margin-bottom:.625rem}

+ 1 - 0
unpackage/dist/build/web/assets/category-BCNFe82k.css

@@ -0,0 +1 @@
+.s-category[data-v-61a789e0] .side-menu-wrap{width:6.25rem;height:100%;padding-left:.375rem;background-color:#f6f6f6}.s-category[data-v-61a789e0] .side-menu-wrap .menu-item{width:100%;height:2.75rem;position:relative;transition:all linear .2s}.s-category[data-v-61a789e0] .side-menu-wrap .menu-item .menu-title{line-height:1rem;font-size:.9375rem;font-weight:400;color:#333;margin-left:.875rem;position:relative;z-index:0}.s-category[data-v-61a789e0] .side-menu-wrap .menu-item.menu-item-active{background-color:#fff;border-radius:.625rem 0 0 .625rem}.s-category[data-v-61a789e0] .side-menu-wrap .menu-item.menu-item-active:before{content:"";position:absolute;right:0;bottom:-.625rem;width:.625rem;height:.625rem;background:radial-gradient(circle at 0 100%,transparent .625rem,#fff 0)}.s-category[data-v-61a789e0] .side-menu-wrap .menu-item.menu-item-active:after{content:"";position:absolute;top:-.625rem;right:0;width:.625rem;height:.625rem;background:radial-gradient(circle at 0% 0%,transparent .625rem,#fff 0)}.s-category[data-v-61a789e0] .side-menu-wrap .menu-item.menu-item-active .menu-title{font-weight:600;color:var(--ui-BG-Main)}.s-category[data-v-61a789e0] .side-menu-wrap .menu-item.menu-item-active .menu-title:before{left:0}.s-category[data-v-61a789e0] .goods-list-box{background-color:#fff;width:calc(100vw - 100px);padding:10px}.s-category[data-v-61a789e0] .banner-img{width:calc(100vw - 130px);border-radius:5px;margin-bottom:.625rem}

Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
unpackage/dist/build/web/assets/category-CXzJzcJm.css


+ 1 - 1
unpackage/dist/build/web/assets/comment-item.KKRoRJXb.js → unpackage/dist/build/web/assets/comment-item.GxQHQvD1.js

@@ -1 +1 @@
-import{a as s,b as e,e as a,d as l,w as t,f as r,g as i,j as c,y as m,F as u,z as n,x as o,k as d,i as p,I as f}from"./index-GG3wbp_l.js";import{_}from"./uni-rate.B7OjD4ql.js";import{_ as y}from"./su-image.BQ5Clfhv.js";import{_ as x}from"./_plugin-vue_export-helper.BCo6x5W8.js";const v=x({__name:"comment-item",props:{item:{type:Object,default(){}}},setup:x=>(v,g)=>{const b=d,h=p,j=s(e("uni-rate"),_),k=s(e("su-image"),y),w=f;return a(),l(h,null,{default:t((()=>{var s;return[r(h,{class:"user ss-flex ss-m-b-14"},{default:t((()=>[r(h,{class:"ss-m-r-20 ss-flex"},{default:t((()=>[r(b,{class:"avatar",src:x.item.userAvatar},null,8,["src"])])),_:1}),r(h,{class:"nickname ss-m-r-20"},{default:t((()=>[i(c(x.item.userNickname),1)])),_:1}),r(h,{class:""},{default:t((()=>[r(j,{readonly:!0,modelValue:x.item.scores,"onUpdate:modelValue":g[0]||(g[0]=s=>x.item.scores=s),size:"18"},null,8,["modelValue"])])),_:1})])),_:1}),r(h,{class:"content"},{default:t((()=>[i(c(x.item.content),1)])),_:1}),(null==(s=x.item.picUrls)?void 0:s.length)?(a(),l(h,{key:0,class:"ss-m-t-24"},{default:t((()=>[r(w,{class:"scroll-box","scroll-x":"","scroll-anchoring":""},{default:t((()=>[r(h,{class:"ss-flex"},{default:t((()=>[(a(!0),m(u,null,n(x.item.picUrls,((s,e)=>(a(),l(h,{key:s,class:"ss-m-r-10"},{default:t((()=>[r(k,{class:"content-img",isPreview:"",previewList:x.item.picUrls,current:e,src:s,height:120,width:120,mode:"aspectFill"},null,8,["previewList","current","src"])])),_:2},1024)))),128))])),_:1})])),_:1})])),_:1})):o("",!0),x.item.replyTime?(a(),l(h,{key:1,class:"ss-m-t-20 reply-box"},{default:t((()=>[r(h,{class:"reply-title"},{default:t((()=>[i("商家回复:")])),_:1}),r(h,{class:"reply-content"},{default:t((()=>[i(c(x.item.replyContent),1)])),_:1})])),_:1})):o("",!0)]})),_:1})}},[["__scopeId","data-v-9df53e2b"]]);export{v as c};
+import{a as s,b as e,e as a,d as l,w as t,f as r,g as i,j as c,y as m,F as u,z as n,x as o,k as d,i as p,I as f}from"./index-B2lrgxH7.js";import{_}from"./uni-rate.Yund1P5h.js";import{_ as y}from"./su-image.yQfp6qbl.js";import{_ as x}from"./_plugin-vue_export-helper.BCo6x5W8.js";const v=x({__name:"comment-item",props:{item:{type:Object,default(){}}},setup:x=>(v,g)=>{const b=d,h=p,j=s(e("uni-rate"),_),k=s(e("su-image"),y),w=f;return a(),l(h,null,{default:t((()=>{var s;return[r(h,{class:"user ss-flex ss-m-b-14"},{default:t((()=>[r(h,{class:"ss-m-r-20 ss-flex"},{default:t((()=>[r(b,{class:"avatar",src:x.item.userAvatar},null,8,["src"])])),_:1}),r(h,{class:"nickname ss-m-r-20"},{default:t((()=>[i(c(x.item.userNickname),1)])),_:1}),r(h,{class:""},{default:t((()=>[r(j,{readonly:!0,modelValue:x.item.scores,"onUpdate:modelValue":g[0]||(g[0]=s=>x.item.scores=s),size:"18"},null,8,["modelValue"])])),_:1})])),_:1}),r(h,{class:"content"},{default:t((()=>[i(c(x.item.content),1)])),_:1}),(null==(s=x.item.picUrls)?void 0:s.length)?(a(),l(h,{key:0,class:"ss-m-t-24"},{default:t((()=>[r(w,{class:"scroll-box","scroll-x":"","scroll-anchoring":""},{default:t((()=>[r(h,{class:"ss-flex"},{default:t((()=>[(a(!0),m(u,null,n(x.item.picUrls,((s,e)=>(a(),l(h,{key:s,class:"ss-m-r-10"},{default:t((()=>[r(k,{class:"content-img",isPreview:"",previewList:x.item.picUrls,current:e,src:s,height:120,width:120,mode:"aspectFill"},null,8,["previewList","current","src"])])),_:2},1024)))),128))])),_:1})])),_:1})])),_:1})):o("",!0),x.item.replyTime?(a(),l(h,{key:1,class:"ss-m-t-20 reply-box"},{default:t((()=>[r(h,{class:"reply-title"},{default:t((()=>[i("商家回复:")])),_:1}),r(h,{class:"reply-content"},{default:t((()=>[i(c(x.item.replyContent),1)])),_:1})])),_:1})):o("",!0)]})),_:1})}},[["__scopeId","data-v-9df53e2b"]]);export{v as c};

+ 1 - 1
unpackage/dist/build/web/assets/const.DJ8gYuP7.js → unpackage/dist/build/web/assets/const.DXU-L2w7.js

@@ -1 +1 @@
-import{bk as e}from"./index-GG3wbp_l.js";const T={PRICE:{type:1,name:"满减"},PERCENT:{type:2,name:"折扣"}},s={DATE:{type:1,name:"固定日期可用"},TERM:{type:2,name:"领取之后可用"}},t={WAIT_START:"即将开始",STARTED:"进行中",END:"已结束"},a=(T,s)=>{const a=e();return a.isBefore(T)?t.WAIT_START:a.isAfter(s)?t.END:t.STARTED};export{s as C,T as P,t as T,a as g};
+import{bk as e}from"./index-B2lrgxH7.js";const T={PRICE:{type:1,name:"满减"},PERCENT:{type:2,name:"折扣"}},s={DATE:{type:1,name:"固定日期可用"},TERM:{type:2,name:"领取之后可用"}},t={WAIT_START:"即将开始",STARTED:"进行中",END:"已结束"},a=(T,s)=>{const a=e();return a.isBefore(T)?t.WAIT_START:a.isAfter(s)?t.END:t.STARTED};export{s as C,T as P,t as T,a as g};

Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
unpackage/dist/build/web/assets/detail-content-card-BJaKMFxt.css


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
unpackage/dist/build/web/assets/detail-content-card.BG6LPBl5.js


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
unpackage/dist/build/web/assets/detail-content-card.Ccywo0sN.js


+ 1 - 0
unpackage/dist/build/web/assets/first-two-CdX79w_9.css

@@ -0,0 +1 @@
+.title-box .title-line-left[data-v-eb61c924],.title-box .title-line-right[data-v-eb61c924]{width:15px;height:1px;background:#d2d2d2}.goods-item[data-v-eb61c924]{width:calc((100% - 20px) / 3);margin-right:10px;margin-bottom:10px}.goods-item[data-v-eb61c924]:nth-of-type(3n){margin-right:0}.goods-item .goods-img[data-v-eb61c924]{width:calc((100vw - 140px) / 3);height:calc((100vw - 140px) / 3)}.goods-item .goods-title[data-v-eb61c924]{font-size:.8125rem;font-weight:700;color:#333;line-height:1.25rem;text-align:center}.goods-item .goods-price[data-v-eb61c924]{color:#ff3000;line-height:1.25rem}.goods-box[data-v-f338acf1]{width:100%}.goods-box[data-v-980f0a6c]{width:calc((100% - .625rem)/2);margin-bottom:.625rem}.goods-box .goods-img[data-v-980f0a6c]{width:100%;height:7.6875rem;border-radius:.3125rem .3125rem 0px 0px}.goods-box .goods-content[data-v-980f0a6c]{width:100%;background:#fff;box-shadow:0 0 .625rem .125rem rgba(199,199,199,.22);padding:.625rem 0 1rem .5rem;box-sizing:border-box;border-radius:0 0 .3125rem .3125rem}.goods-box .goods-content .goods-title[data-v-980f0a6c]{font-size:.8125rem;font-weight:700;color:#333}.goods-box .goods-content .goods-price[data-v-980f0a6c]{font-size:.75rem;font-family:OPPOSANS;font-weight:500;color:#e1212b}.goods-box[data-v-980f0a6c]:nth-child(odd){margin-right:.625rem}

Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
unpackage/dist/build/web/assets/first-two.CJ5H0zSN.js


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
unpackage/dist/build/web/assets/index-B2lrgxH7.js


+ 0 - 1
unpackage/dist/build/web/assets/list-BzH7mnFJ.css

@@ -1 +0,0 @@
-.goods-list-box[data-v-f717e5e6]{width:50%;box-sizing:border-box}.goods-list-box .left-list[data-v-f717e5e6]{margin-right:.3125rem;margin-bottom:.625rem}.goods-list-box .right-list[data-v-f717e5e6]{margin-left:.3125rem;margin-bottom:.625rem}.goods-box[data-v-f717e5e6]:nth-last-of-type(1){margin-bottom:0!important}.goods-box[data-v-f717e5e6]:nth-child(2n){margin-right:0}.list-icon[data-v-f717e5e6]{width:2.5rem}.list-icon .sicon-goods-card[data-v-f717e5e6],.list-icon .sicon-goods-list[data-v-f717e5e6]{font-size:1.25rem}.goods-card[data-v-f717e5e6]{margin-left:.625rem}.list-filter-tabs[data-v-f717e5e6]{background-color:#fff}.filter-list-box[data-v-f717e5e6]{padding:.875rem 1.625rem}.filter-list-box .filter-item[data-v-f717e5e6]{font-size:.875rem;font-weight:500;color:#333;line-height:normal;margin-bottom:.75rem}.filter-list-box .filter-item[data-v-f717e5e6]:nth-last-child(1){margin-bottom:0}.filter-list-box .filter-item-active[data-v-f717e5e6]{color:var(--ui-BG-Main)}.tab-item[data-v-f717e5e6]{height:50px;position:relative;z-index:11}.tab-item .tab-title[data-v-f717e5e6]{font-size:.9375rem}.tab-item .cur-tab-title[data-v-f717e5e6]{font-weight:700}.tab-item .tab-line[data-v-f717e5e6]{width:1.875rem;height:.1875rem;border-radius:.1875rem;position:absolute;left:50%;transform:translate(-50%);bottom:.3125rem;background-color:var(--ui-BG-Main);z-index:12}

+ 1 - 0
unpackage/dist/build/web/assets/list-CtcXKMEQ.css

@@ -0,0 +1 @@
+.goods-list-box[data-v-281fdd02]{width:50%;box-sizing:border-box}.goods-list-box .left-list[data-v-281fdd02]{margin-right:.3125rem;margin-bottom:.625rem}.goods-list-box .right-list[data-v-281fdd02]{margin-left:.3125rem;margin-bottom:.625rem}.goods-box[data-v-281fdd02]:nth-last-of-type(1){margin-bottom:0!important}.goods-box[data-v-281fdd02]:nth-child(2n){margin-right:0}.list-icon[data-v-281fdd02]{width:2.5rem}.list-icon .sicon-goods-card[data-v-281fdd02],.list-icon .sicon-goods-list[data-v-281fdd02]{font-size:1.25rem}.goods-card[data-v-281fdd02]{margin-left:.625rem}.list-filter-tabs[data-v-281fdd02]{background-color:#fff}.filter-list-box[data-v-281fdd02]{padding:.875rem 1.625rem}.filter-list-box .filter-item[data-v-281fdd02]{font-size:.875rem;font-weight:500;color:#333;line-height:normal;margin-bottom:.75rem}.filter-list-box .filter-item[data-v-281fdd02]:nth-last-child(1){margin-bottom:0}.filter-list-box .filter-item-active[data-v-281fdd02]{color:var(--ui-BG-Main)}.tab-item[data-v-281fdd02]{height:50px;position:relative;z-index:11}.tab-item .tab-title[data-v-281fdd02]{font-size:.9375rem}.tab-item .cur-tab-title[data-v-281fdd02]{font-weight:700}.tab-item .tab-line[data-v-281fdd02]{width:1.875rem;height:.1875rem;border-radius:.1875rem;position:absolute;left:50%;transform:translate(-50%);bottom:.3125rem;background-color:var(--ui-BG-Main);z-index:12}

Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
unpackage/dist/build/web/assets/md5.DIfkRCZm.js


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
unpackage/dist/build/web/assets/mp-html-BRoRGaCt.css


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
unpackage/dist/build/web/assets/mp-html-ChnMKd5V.css


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
unpackage/dist/build/web/assets/mp-html.CABZ30S3.js


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
unpackage/dist/build/web/assets/mp-html.vue_vue_type_style_index_0_scoped_b0aa647f_lang.-XhG44sh.js


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
unpackage/dist/build/web/assets/pages-activity-bargain-detail.Cr_BHBFs.js


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
unpackage/dist/build/web/assets/pages-activity-bargain-detail.OoMcykoF.js


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
unpackage/dist/build/web/assets/pages-activity-bargain-list.DhMm3upI.js


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
unpackage/dist/build/web/assets/pages-activity-bargain-list.Whxajs6w.js


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
unpackage/dist/build/web/assets/pages-activity-groupon-detail.CjHZ47KU.js


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
unpackage/dist/build/web/assets/pages-activity-groupon-detail.esKdK2HJ.js


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
unpackage/dist/build/web/assets/pages-activity-groupon-list.BI5LRlpi.js


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
unpackage/dist/build/web/assets/pages-activity-groupon-list.COR6g3KD.js


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
unpackage/dist/build/web/assets/pages-activity-groupon-order.TMmS7wDy.js


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
unpackage/dist/build/web/assets/pages-activity-groupon-order.lzGImZ7Y.js


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
unpackage/dist/build/web/assets/pages-activity-index.1K4ASGPx.js


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
unpackage/dist/build/web/assets/pages-activity-index.DZkrqdV_.js


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
unpackage/dist/build/web/assets/pages-activity-seckill-list.CPIex0gz.js


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
unpackage/dist/build/web/assets/pages-activity-seckill-list.D85ZsvpV.js


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
unpackage/dist/build/web/assets/pages-app-sign.Dex9VmQL.js


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
unpackage/dist/build/web/assets/pages-app-sign.FZ7u6h5o.js


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
unpackage/dist/build/web/assets/pages-chat-index.C9WqfKNz.js


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
unpackage/dist/build/web/assets/pages-chat-speechtotext.CjlxNN5b.js


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
unpackage/dist/build/web/assets/pages-chat-speechtotext.CvPIoSPm.js


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
unpackage/dist/build/web/assets/pages-commission-commission-ranking.BpvLpfHb.js


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
unpackage/dist/build/web/assets/pages-commission-commission-ranking.KaNbdr2q.js


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
unpackage/dist/build/web/assets/pages-commission-goods.BVmG0MQv.js


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
unpackage/dist/build/web/assets/pages-commission-goods.Cbhv8RcY.js


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
unpackage/dist/build/web/assets/pages-commission-index.Cyx0GrEj.js


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
unpackage/dist/build/web/assets/pages-commission-index.TfTFdRJj.js


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
unpackage/dist/build/web/assets/pages-commission-order.CFtCC4WW.js


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
unpackage/dist/build/web/assets/pages-commission-order.rqLnSNTB.js


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
unpackage/dist/build/web/assets/pages-commission-promoter.BHs-PEZr.js


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
unpackage/dist/build/web/assets/pages-commission-promoter.C0btlayk.js


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
unpackage/dist/build/web/assets/pages-commission-team.BE2Q4H9R.js


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
unpackage/dist/build/web/assets/pages-commission-team.BgAu-1_w.js


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
unpackage/dist/build/web/assets/pages-commission-wallet.DK1EwgHV.js


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
unpackage/dist/build/web/assets/pages-commission-wallet.Jvwzfrbm.js


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
unpackage/dist/build/web/assets/pages-commission-withdraw.EixRmACB.js


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
unpackage/dist/build/web/assets/pages-commission-withdraw.OPWeb5pv.js


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
unpackage/dist/build/web/assets/pages-coupon-detail.DDycXCBD.js


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
unpackage/dist/build/web/assets/pages-coupon-detail.DO7drsLt.js


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
unpackage/dist/build/web/assets/pages-coupon-list.CFM8LYK5.js


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
unpackage/dist/build/web/assets/pages-coupon-list.DRIgcI_e.js


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
unpackage/dist/build/web/assets/pages-goods-comment-add.BpKN9-yB.js


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
unpackage/dist/build/web/assets/pages-goods-comment-add.DrSQuMKW.js


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
unpackage/dist/build/web/assets/pages-goods-comment-list.CVXGvlJN.js


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
unpackage/dist/build/web/assets/pages-goods-comment-list.Cos9BOBR.js


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
unpackage/dist/build/web/assets/pages-goods-groupon.B8z21aQN.js


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
unpackage/dist/build/web/assets/pages-goods-groupon.BL8dE_2D.js


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
unpackage/dist/build/web/assets/pages-goods-index.BSQ4Jded.js


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
unpackage/dist/build/web/assets/pages-goods-index.CR1oVcwK.js


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
unpackage/dist/build/web/assets/pages-goods-list.C1EaU20Y.js


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
unpackage/dist/build/web/assets/pages-goods-list.PopLGwiy.js


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
unpackage/dist/build/web/assets/pages-goods-seckill.BPK4-F3U.js


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
unpackage/dist/build/web/assets/pages-goods-seckill.Btwua1N-.js


+ 0 - 1
unpackage/dist/build/web/assets/pages-index-FirstActivity.4x0Zi-l8.js

@@ -1 +0,0 @@
-import{h as t,r as i,t as s,s as e,m as a,p as r,q as o,a as c,b as n,d as l,w as d,i as v,e as p,f as m}from"./index-GG3wbp_l.js";import{_ as u}from"./s-tabbar.CZu-2u-H.js";import x from"./pages-index-FirstList.CmJOJ2KG.js";import"./_plugin-vue_export-helper.BCo6x5W8.js";import"./s-empty.DePKDhiW.js";/* empty css                                                                */import"./uni-load-more.BxzTHhU6.js";import"./youjiantou.DF0dutcV.js";const g={__name:"FirstActivity",setup(g){t();const f=i({theme:"red",style:{bgType:"color",bgColor:"#323b4e",color:"#e6e6e5",activeColor:"#1fa380"},items:[{text:s("common.home"),url:"/pages/index/FirstIndex",iconUrl:e.$url.static("/static/firstIndex/index.svg"),activeIconUrl:e.$url.static("/static/firstIndex/index-active.svg")},{text:s("common.activities"),url:"/pages/index/FirstActivity",iconUrl:e.$url.static("/static/firstIndex/activity.svg"),activeIconUrl:e.$url.static("/static/firstIndex/activity-active.svg")},{text:s("common.videos"),url:"/pages/index/FirstVideo",iconUrl:e.$url.static("/static/firstIndex/video.svg"),activeIconUrl:e.$url.static("/static/firstIndex/video-active.svg")},{text:s("common.mall"),url:"/pages/index/index",iconUrl:e.$url.static("/static/firstIndex/shop.svg"),activeIconUrl:e.$url.static("/static/firstIndex/shop-active.svg")}]});return a((()=>{})),r((()=>{setTimeout((function(){o()}),800)})),(t,i)=>{const s=c(n("s-tabbar"),u),e=v;return p(),l(e,{class:"page-body",style:{background:"#f6f6f6"}},{default:d((()=>[m(x,{categoryId:9,type:"activityCard"}),m(s,{path:"/pages/index/FirstActivity",tabbar:f.value},null,8,["tabbar"])])),_:1})}}};export{g as default};

+ 1 - 0
unpackage/dist/build/web/assets/pages-index-FirstActivity.QMmzFDOn.js

@@ -0,0 +1 @@
+import{h as t,r as s,t as i,s as e,m as a,p as r,q as o,a as c,b as n,d as l,w as d,i as p,e as v,f as m}from"./index-B2lrgxH7.js";import{_ as u}from"./s-tabbar.oxkK0ykY.js";import x from"./pages-index-FirstList.sMH9Y_XM.js";import"./_plugin-vue_export-helper.BCo6x5W8.js";import"./s-empty.C4KO9nbD.js";/* empty css                                                                */import"./uni-load-more.CaKfiZ1r.js";import"./youjiantou.DF0dutcV.js";const g={__name:"FirstActivity",setup(g){t();const f=s({theme:"red",style:{bgType:"color",bgColor:"#323b4e",color:"#e6e6e5",activeColor:"#1fa380"},items:[{text:i("common.home"),url:"/pages/index/FirstIndex",iconUrl:e.$url.static("/static/firstIndex/index.svg"),activeIconUrl:e.$url.static("/static/firstIndex/index-active.svg")},{text:i("common.activities"),url:"/pages/index/FirstActivity",iconUrl:e.$url.static("/static/firstIndex/activity.svg"),activeIconUrl:e.$url.static("/static/firstIndex/activity-active.svg")},{text:i("common.videos"),url:"/pages/index/FirstVideo",iconUrl:e.$url.static("/static/firstIndex/video.svg"),activeIconUrl:e.$url.static("/static/firstIndex/video-active.svg")},{text:i("common.mall"),url:"/pages/index/index",iconUrl:e.$url.static("/static/firstIndex/shop.svg"),activeIconUrl:e.$url.static("/static/firstIndex/shop-active.svg")}]});return a((()=>{})),r((()=>{setTimeout((function(){o()}),800)})),(t,s)=>{const i=c(n("s-tabbar"),u),e=p;return v(),l(e,{class:"page-body",style:{background:"#f6f6f6"}},{default:d((()=>[m(x,{categoryId:9,type:"activityCard"}),m(i,{path:"/pages/index/FirstActivity",tabbar:f.value},null,8,["tabbar"])])),_:1})}}};export{g as default};

Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
unpackage/dist/build/web/assets/pages-index-FirstIndex.BDsTKbG_.js


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
unpackage/dist/build/web/assets/pages-index-FirstIndex.BrjmnF49.js


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
unpackage/dist/build/web/assets/pages-index-FirstList.sMH9Y_XM.js


Vissa filer visades inte eftersom för många filer har ändrats