1
0

2 Commity fce555a5ff ... dccb9262de

Autor SHA1 Správa Dátum
  liujiaxin dccb9262de a 1 mesiac pred
  liujiaxin 9266f148b1 a 1 mesiac pred
41 zmenil súbory, kde vykonal 2255 pridanie a 188 odobranie
  1. 12 14
      api/live.js
  2. 1 1
      manifest.json
  3. 18 2
      pages.json
  4. 75 18
      pages/home/living.vue
  5. 0 1
      pages/list/index.vue
  6. 3 2
      pages_shop/goods.vue
  7. 23 25
      pages_shop/store.vue
  8. 529 0
      pages_user/integral.vue
  9. 330 0
      pages_user/integralGoodsList.vue
  10. BIN
      static/images/hongbao.png
  11. 8 12
      unpackage/dist/dev/mp-weixin/api/live.js
  12. 2 0
      unpackage/dist/dev/mp-weixin/app.js
  13. 2 0
      unpackage/dist/dev/mp-weixin/app.json
  14. 12 10
      unpackage/dist/dev/mp-weixin/common/assets.js
  15. 18 0
      unpackage/dist/dev/mp-weixin/common/vendor.js
  16. 20 0
      unpackage/dist/dev/mp-weixin/components/Loading.js
  17. 4 0
      unpackage/dist/dev/mp-weixin/components/Loading.json
  18. 1 0
      unpackage/dist/dev/mp-weixin/components/Loading.wxml
  19. 0 0
      unpackage/dist/dev/mp-weixin/components/Loading.wxss
  20. 97 65
      unpackage/dist/dev/mp-weixin/pages/home/living.js
  21. 0 0
      unpackage/dist/dev/mp-weixin/pages/home/living.wxml
  22. 2 1
      unpackage/dist/dev/mp-weixin/pages_shop/goods.js
  23. 33 31
      unpackage/dist/dev/mp-weixin/pages_shop/store.js
  24. 0 0
      unpackage/dist/dev/mp-weixin/pages_shop/store.wxml
  25. 4 5
      unpackage/dist/dev/mp-weixin/pages_shop/store.wxss
  26. 219 0
      unpackage/dist/dev/mp-weixin/pages_user/integral.js
  27. 9 0
      unpackage/dist/dev/mp-weixin/pages_user/integral.json
  28. 0 0
      unpackage/dist/dev/mp-weixin/pages_user/integral.wxml
  29. 274 0
      unpackage/dist/dev/mp-weixin/pages_user/integral.wxss
  30. 188 0
      unpackage/dist/dev/mp-weixin/pages_user/integralGoodsList.js
  31. 10 0
      unpackage/dist/dev/mp-weixin/pages_user/integralGoodsList.json
  32. 1 0
      unpackage/dist/dev/mp-weixin/pages_user/integralGoodsList.wxml
  33. 144 0
      unpackage/dist/dev/mp-weixin/pages_user/integralGoodsList.wxss
  34. 1 1
      unpackage/dist/dev/mp-weixin/project.config.json
  35. BIN
      unpackage/dist/dev/mp-weixin/static/images/hongbao.png
  36. 37 0
      unpackage/dist/dev/mp-weixin/uni_modules/uview-plus/components/u-sticky/props.js
  37. 141 0
      unpackage/dist/dev/mp-weixin/uni_modules/uview-plus/components/u-sticky/u-sticky.js
  38. 4 0
      unpackage/dist/dev/mp-weixin/uni_modules/uview-plus/components/u-sticky/u-sticky.json
  39. 1 0
      unpackage/dist/dev/mp-weixin/uni_modules/uview-plus/components/u-sticky/u-sticky.wxml
  40. 30 0
      unpackage/dist/dev/mp-weixin/uni_modules/uview-plus/components/u-sticky/u-sticky.wxss
  41. 2 0
      unpackage/dist/dev/mp-weixin/uni_modules/uview-plus/libs/function/index.js

+ 12 - 14
api/live.js

@@ -4,18 +4,15 @@ const api = {
 	liveDataLike: (liveId) => `/app/live/liveData/like/${liveId}`, // 点赞
 	collectStore:(sotreId)=> `/app/live/liveData/collectStore?storeId=${sotreId}`, // 店铺收藏/取消收藏
 	collectGoods:(goodId)=> `/app/live/liveData/collectGoods?goodId=${goodId}`, // 商品收藏/取消收藏
-	store:(storeld)=> `/app/live/store/${storeld}`, // 查询店铺
+	store:(storeld,key)=> `/app/live/store/${storeld}?key=${key}`, // 查询店铺
 	follow: (liveId) => `/app/live/liveData/follow/${liveId}`, // 关注/取消关注
 	getRecentLiveViewers: (liveId) => `/app/live/liveData/getRecentLiveViewers/${liveId}`, // 获取直播间用户(展示在线用户)
 	// checkSms: 'api/sms/checkSms',
 	getLiveInfo: (liveId) => `/app/live/${liveId}`, // 获取直播间信息接口
 	getLiveViewData: (liveId) => `/app/live/liveData/getLiveViewData/${liveId}`, // 直播间点赞、关注、在线人数数据
-
-
-
+	liveRed:'/app/live/liveRed/claim', // 点击领红包
 	// 直播订单
-	searchStore: (storeId) => `/app/live/store/${storeId}`, // 查询店铺
-	liveStore: (liveId) => `/app/live/liveGoods/liveStore/${liveId}`, // 店铺展示
+	liveStore: (liveId,key) => `/app/live/liveGoods/liveStore/${liveId}?key=${key}`, // 店铺展示
 	liveGoodsDetail: (productId) => `/app/live/liveGoods/liveGoodsDetail/${productId}`, // 商品详情
 	liveOrderUser: (liveId) => `/app/live/liveOrder/liveOrderUser/${liveId}`, // 正在购买
 
@@ -36,13 +33,18 @@ export function collectGoods(goodId,data= {}) {
 	return request(api.collectGoods(goodId), data, 'POST', 'application/json;charset=UTF-8')
 }
 // 查询店铺
-export function store(storeld,data= {}) {
-	return request(api.store(storeld), data, 'GET', 'application/json;charset=UTF-8')
+export function store(storeld,key,data= {}) {
+	return request(api.store(storeld,key), data, 'GET', 'application/json;charset=UTF-8')
 }
 // 分享(还没有)
 // export function userLoginH5(data) {
 // 	return request.get(api.userLoginH5, data)
 // }
+// 点击领红包
+export function liveRed(data) {
+	return liveRed(api.follow, data, 'POST', 'application/json;charset=UTF-8')
+}
+
 // 关注/取消关注
 export function follow(liveId, data = {}) {
 	return request(api.follow(liveId), data, 'GET', 'application/json;charset=UTF-8')
@@ -65,8 +67,8 @@ export function getRecentLiveViewers(liveId, data = {}) {
 // 小黄车
 
 // 店铺展示
-export function liveStore(liveId, data) {
-	return request(api.liveStore(liveId), data, 'GET', 'application/json;charset=UTF-8')
+export function liveStore(liveId,key, data) {
+	return request(api.liveStore(liveId,key), data, 'GET', 'application/json;charset=UTF-8')
 }
 
 // 商品详情
@@ -78,10 +80,6 @@ export function liveGoodsDetail(productId, data) {
 export function liveOrderUser(liveId, data = {}) {
 	return request(api.liveOrderUser(liveId), data, 'GET', 'application/json;charset=UTF-8')
 }
-//查询店铺
-export function searchStore(storeId, data = {}) {
-	return request(api.searchStore(storeId), data, 'GET', 'application/json;charset=UTF-8')
-}
 
 
 

+ 1 - 1
manifest.json

@@ -115,7 +115,7 @@
     "quickapp" : {},
     /* 小程序特有相关 */
     "mp-weixin" : {
-        "appid" : "wx29d26f63f836be7f",
+        "appid" : "wxd70f99287830cb51",
         "libVersion" : "3.4.2",
         "setting" : {
             "urlCheck" : true,

+ 18 - 2
pages.json

@@ -198,7 +198,7 @@
 							"bounce": "none"
 						}
 					}
-				},{
+				}, {
 					"path": "storeOrder",
 					"style": {
 						"navigationBarTitleText": "订单",
@@ -207,7 +207,7 @@
 							"bounce": "none"
 						}
 					}
-				},{
+				}, {
 					"path": "refundOrder",
 					"style": {
 						"navigationBarTitleText": "申请售后",
@@ -253,6 +253,22 @@
 					}
 				}
 			}, {
+				"path": "integral",
+				"style": {
+					"navigationBarTitleText": "我的芳华币",
+					"enablePullDownRefresh": false,
+					"navigationBarBackgroundColor": "#ffffff",
+					"navigationBarTextStyle": "black"
+				}
+			}, {
+			"path": "integralGoodsList",
+			"style": {
+				"navigationBarTitleText": "芳华币商城",
+				"enablePullDownRefresh": false,
+				"navigationBarBackgroundColor": "#ffffff",
+				"navigationBarTextStyle": "black"
+			}
+		},{
 				"path": "addAddress",
 				"style": {
 					"navigationBarTitleText": "新建收货地址",

+ 75 - 18
pages/home/living.vue

@@ -36,6 +36,15 @@
 				</view>
 			</view>
 
+			<!-- 页面内容 -->
+			<view style=" position: fixed;top:100rpx;left: 0rpx; z-index: 5;" class="content-top">
+				<view class="u-flex-y-center">
+					<image v-if="redInfo?.status==1" @click="onRed" style="width: 70rpx;height: 70rpx;"
+						src="@/static/images/hongbao.png"></image>
+				</view>
+
+			</view>
+
 			<!-- 右边的 -->
 			<view :class=" showType==1 ? 'siderow-group' : 'side-group'">
 				<view class="side-item">
@@ -307,10 +316,10 @@
 					<view class="search-input u-flex-y-center">
 						<image style="width: 24rpx;height: 24rpx;margin-right: 16rpx;" src="@/static/images/search.png">
 						</image>
-						<input placeholder="搜索商品或序号" />
+						<input placeholder="请搜索商品" v-model="inputInfo" @input="handleSearchInput" />
 					</view>
-					<view class="t-c search-top" style="margin-right: 48rpx;" @click="onStoreCollect">
-						<image v-if="store.isFavorite" style="width: 32rpx;height: 32rpx;"
+					<view class="t-c search-top" style="margin-right: 48rpx;">
+						<image @click="onStoreCollect" v-if="store.isFavorite" style="width: 32rpx;height: 32rpx;"
 							src="@/static/images/collect_select.png"></image>
 						<image v-else @click="onStoreCollect" style="width: 32rpx;height: 32rpx;"
 							src="@/static/images/collect.png"></image>
@@ -363,6 +372,7 @@
 	import Hls from 'hls.js';
 	import CryptoJS from 'crypto-js'
 	import {
+		liveRed,// 点击领红包
 		liveDataLike, // 点赞
 		collectStore, // 店铺收藏/取消收藏
 		collectGoods, // 商品收藏/取消收藏
@@ -392,7 +402,8 @@
 	} from '@/api/home'
 	// var wsUrl = "ws://192.168.10.166:7114/app/webSocket";
 
-	var wsUrl = "ws://192.168.10.166:7114/app/webSocket"; //余红奇
+	// var wsUrl = "ws://192.168.10.166:7114/app/webSocket"; //余红奇
+	var wsUrl = "ws://192.168.10.125:7114/app/webSocket"; //涂小龙
 	// var wsUrl = "ws://live.test.ylrztop.com/prod-api/app/webSocket"; //余红奇
 	// var wsUrl = "ws://nd383294.natappfree.cc/app/webSocket"; //余红奇
 	// var wsUrl = "ws://v56c9b8e.natappfree.cc/app/webSocket"; //余红奇
@@ -406,6 +417,9 @@
 	export default {
 		data() {
 			return {
+				redInfo:null,
+				inputInfo: '',
+				searchTimer: null,
 				storeId: null,
 				reconnectCount: 0,
 				maxReconnectAttempts: 3,
@@ -479,13 +493,14 @@
 
 			};
 		},
+		
+		
 		onLoad(options) {
 
-			if (options.liveId) {
-				this.liveId = options.liveId;
-				// this.liveId = decodeURIComponent(options.liveId);
-				console.log("接收到的liveId:", this.liveId);
-			}
+			 if (options.liveId && options.liveId !== this.liveId) {
+			    this.liveId = options.liveId; // 仅当 liveId 变化时更新
+			    this.getliveViewData(); // 主动调用一次
+			  }
 			uni.showShareMenu({
 				withShareTicket: true
 			});
@@ -513,6 +528,9 @@
 		mounted() {
 			// this.onLike() 
 			this.getliveViewData() ////直播间点赞、关注、在线人数数据
+			// this.intervalId = setInterval(() => {
+			// 	this.getliveViewData();
+			// }, 60 * 1000);
 			this.intervalId = setInterval(() => {
 				this.getliveViewData();
 			}, 60 * 1000);
@@ -540,12 +558,15 @@
 			this.gettalklist()
 			// this.getAnswerlists()
 			this.userinfo = JSON.parse(uni.getStorageSync("userInfo"))
-			
+
 		},
 		onReady: function(res) {
 			this.videoContext = uni.createVideoContext('myVideo')
 			// console.log(this.videoContext)
 		},
+		onHide() {
+		  clearInterval(this.intervalId); // 页面隐藏时清理
+		},
 		onUnload() {
 			this.closeWebSocket(); // 安全关闭
 			if (this.hlsPlayer) {
@@ -569,6 +590,33 @@
 			}
 		},
 		methods: {
+			
+			onRed() {
+				if (!this.liveId) return;
+				let data={
+					liveId:this.liveId,
+					userId:this.userinfo.userId,
+					redId:this.redInfo.redId,
+				}
+				liveRed(data).then(res => {
+						if (res.code == 200) {
+						} else {
+							uni.showToast({
+								title: res.msg,
+								icon: 'none'
+							});
+						}
+					},
+					rej => {}
+				);
+			},
+			handleSearchInput() {
+				// 使用防抖优化性能,避免频繁请求
+				clearTimeout(this.searchTimer);
+				this.searchTimer = setTimeout(() => {
+					this.queryCollect();
+				}, 500); // 500毫秒延迟
+			},
 			// 显示购买提示信息
 			showPurchaseMessage() {
 				// 清除之前的定时器
@@ -646,7 +694,7 @@
 					this.livedata = res.data;
 					this.showType = res.data.showType;
 					this.storeId = res.storeId
-					this.queryCollect()//查询店铺
+					this.queryCollect() //查询店铺
 					console.log("横屏1或竖屏2", this.showType)
 					// 1. 根据直播类型设置播放地址
 					if (res.data.liveType === 2) {
@@ -735,6 +783,7 @@
 
 			//直播间点赞、关注、在线人数数据
 			getliveViewData() {
+				console.log("直播间点赞、关注、在线人数数据>>>",this.liveId)
 				if (!this.liveId) return;
 				getLiveViewData(this.liveId).then(res => {
 						if (res.code == 200) {
@@ -862,11 +911,11 @@
 			// 查询店铺
 			queryCollect() {
 				if (!this.storeId) return;
-				store(this.storeId).then(res => {
+				store(this.storeId, this.inputInfo).then(res => {
 						if (res.code == 200) {
 							console.log("查询店铺>>", res)
 							this.products = res.data.goodsList
-							this.store=res.data
+							this.store = res.data
 						} else {
 							uni.showToast({
 								title: res.msg,
@@ -880,7 +929,7 @@
 			// 店铺收藏
 			onStoreCollect() {
 				if (!this.storeId) return;
-				collectStore(this.products[0].storeId).then(res => {
+				collectStore(this.storeId).then(res => {
 						if (res.code == 200) {
 							uni.showToast({
 								title: res.msg,
@@ -1049,7 +1098,6 @@
 			// 	}
 			// },
 			getAnswerlists() {
-				console.log(123)
 				if (!this.liveId) return;
 				const data = {
 					liveId: this.liveId
@@ -1264,12 +1312,21 @@
 							this.$nextTick(() => {
 								this.scrollIntoView = `list_${this.talklist.length-1}`
 							})
-							if (redata.cmd == 'deleteId') {
+							if (redata.data.cmd == 'deleteId') {
 								uni.$emit('deleteId');
-							} else if (redata.cmd == 'init') {
+							} else if (redata.data.cmd == 'init') {
 								uni.$emit('init', redata.data);
-							} else if (redata.cmd == 'reload') {
+							} else if (redata.data.cmd == 'reload') {
 								uni.$emit('reload');
+							} else if (redata.data.cmd == 'red') {
+								// 领红包
+								console.log(" 领红包>>",redata)
+								this.redInfo=JSON.parse(redata.data.data)
+								// let redId= this.redInfo.redId
+								// this.redInfo.redNum=redata.data.redNum
+								// this.redInfo.redStatus=redata.data.redStatus
+								// this.redInfo.duration=redata.data.duration
+								
 							} else if (redata.data.cmd == 'sendRedPacketQuestion') {
 								const list = JSON.parse(redata.data.data)
 								this.redanswerAll = [...this.redanswerAll, ...list]

+ 0 - 1
pages/list/index.vue

@@ -16,7 +16,6 @@
 <script>
 	import {
 		liveList
-
 	} from '@/api/list'
 	// import { LiveWS } from '@/utils/liveWS'
 	// import { login,loginByWeChat,getUserInfo,loginByApple } from '@/api/user'

+ 3 - 2
pages_shop/goods.vue

@@ -281,7 +281,7 @@
 
 <script>
 	import {
-		searchStore //查询店铺
+		store //查询店铺
 	} from '@/api/live'
 	import {
 		liveCartDetails, //获取购物车详情
@@ -389,7 +389,8 @@
 		methods: {
 			//查询店铺
 			getSearchStore() {
-				searchStore(this.storeId).then(res => {
+				let key=""
+				store(this.storeId,key).then(res => {
 						if (res.code == 200) {
 							console.log("查询店铺>>>>", res)
 							this.storeInfo=res.data

+ 23 - 25
pages_shop/store.vue

@@ -8,10 +8,10 @@
 					<u-icon name="arrow-left" color="#1a1a1a" size="20" @click="rightClick"></u-icon>
 				</view>
 				<view class="uni-nav-title">
-					<view class="inputbox" style="background: rgba(255, 255, 255, 0.4)"
-						@click="toSearch">
+					<view class="inputbox" style="background: rgba(255, 255, 255, 0.4)" @click="toSearch">
 						<image class="icon-search" src="/static/images/search_white.png"></image>
-						<view>搜索本店</view>
+						<input placeholder="搜索本店" v-model="inputInfo" @input="handleSearchInput" />
+						<!-- <view>搜索本店</view> -->
 					</view>
 				</view>
 			</view>
@@ -114,7 +114,7 @@
 
 <script>
 	import {
-		searchStore, //查询店铺
+		store, //查询店铺
 		liveStore //店铺展示,
 	} from '@/api/live'
 	// import {getProductCate} from '@/api/product';
@@ -124,6 +124,9 @@
 	export default {
 		data() {
 			return {
+				inputInfo: '',
+				inputno: '',
+				searchTimer: null,
 				tabList: [{
 					name: '推荐',
 				}, {
@@ -196,6 +199,13 @@
 
 		},
 		methods: {
+			handleSearchInput() {
+				// 使用防抖优化性能,避免频繁请求
+				clearTimeout(this.searchTimer);
+				this.searchTimer = setTimeout(() => {
+					this.getliveStore();
+				}, 500); // 500毫秒延迟
+			},
 			getPureDecimal(num, precision = 6) {
 				const decimalPart = Math.abs(num).toFixed(precision).split('.')[1];
 				return decimalPart?.replace(/0+$/, '') || ''; // 移除末尾多余的0
@@ -206,7 +216,7 @@
 					pageSize: 10,
 					page: 1
 				}
-				liveStore(this.liveId, data).then(res => {
+				liveStore(this.liveId, this.inputInfo, data).then(res => {
 						if (res.code == 200) {
 							console.log("小黄车 店铺展示>>>>", res)
 							this.products = res.data
@@ -222,7 +232,8 @@
 			},
 			//查询店铺
 			getSearchStore() {
-				searchStore(this.storeId).then(res => {
+				if (!this.storeId) return;
+				store(this.storeId, this.inputno).then(res => {
 						if (res.code == 200) {
 							console.log("查询店铺>>>>", res)
 							this.storeInfo = res.data
@@ -282,17 +293,7 @@
 			// 		rej => {}
 			// 	);
 			// },
-			toSearch() {
-				if (this.from == 'company') {
-					uni.navigateTo({
-						url: '/pages_company/order/productList?storeId=' + this.storeId || ''
-					})
-				} else {
-					uni.navigateTo({
-						url: '/pages/home/productSearch?storeId=' + this.storeId || ''
-					})
-				}
-			},
+
 			handleAdvClick(item) {
 				if (item.showType == 1) {
 					uni.setStorageSync('url', item.advUrl);
@@ -369,7 +370,7 @@
 			showProductList(item) {
 				uni.navigateTo({
 					url: '/pages_shop/goods?productId=' + item.productId + '&liveId=' + this.liveId + '&goodsId=' +
-						item.goodsId+ '&storeId=' +	this.storeId
+						item.goodsId + '&storeId=' + this.storeId
 				})
 			}
 		}
@@ -445,7 +446,6 @@
 	.content {
 		width: 100%;
 		position: relative;
-
 		// .bg {
 		// 	width: 100%;
 		// 	height: auto;
@@ -536,7 +536,6 @@
 
 	.storebox {
 		width: 100%;
-		background-color: #fff;
 		position: relative;
 		z-index: 1;
 
@@ -575,7 +574,6 @@
 			box-sizing: border-box;
 			height: 100%;
 
-
 			// .banner-box {
 			// 	margin-top: 30rpx;
 			// 	width: 100%;
@@ -593,10 +591,10 @@
 
 
 			.medic-list {
-				padding: 20upx 30upx;
+				width: 100%;
+				padding: 20upx 24upx;
 				box-sizing: border-box;
 				overflow-y: auto;
-				background: #F5F7FA;
 				height: calc(100% - 220upx);
 				position: relative;
 
@@ -605,8 +603,8 @@
 					flex-wrap: wrap;
 
 					.definite {
-						width: calc(50% - 10upx);
-						margin-right: 20upx;
+						width: 342rpx;
+						margin-right: 18upx;
 						margin-bottom: 30upx;
 						background: #ffffff;
 						border-radius: 16rpx;

+ 529 - 0
pages_user/integral.vue

@@ -0,0 +1,529 @@
+<template>
+	<view>
+		<view class="top-cont">
+			<!-- 背景图片 -->
+			<image class="bg" src="https://fs-1319721001.cos.ap-chongqing.myqcloud.com/fs/20240229/ed4a8ff0406747a68e40988b210d1c78.png" mode=""></image>
+			<view class="top-inner">			
+				<!-- 这里是状态栏 -->
+				<view class="fixed-top-box" :style="{ background: bg }">
+					<view class="status_bar" :style="{height: statusBarHeight}"></view>
+					<view class="back-box" @click="back">
+						<!-- <image src="../static/images/back_white.png" mode=""></image> -->
+						<text class="title">我的芳华币</text>
+						<text></text>
+					</view>
+				</view>
+				<!-- 顶部固定后站位元素 -->
+				<view style="padding-bottom: 88upx;">
+					<view :style="{height: statusBarHeight}"></view>
+				</view>
+				<!-- 可用芳华币 -->
+				<view class="available-points">
+					<text class="label">可用芳华币</text>
+					<text class="num">{{integral}}</text>
+				</view>
+				<!-- 签到 -->
+				<view class="singn-content">
+					<view class="sign-in-box">
+						<view class="inner">
+							<view class="title-box">已连续签到<text class="num">{{signNum}}</text>天</view>
+							<!-- 签到天数 -->
+							<view class="sign-list">
+								<view v-for="(item,index) in sign" :key="index"  :class="signNum >= index+ 1?'item active':'item'">
+									<view class="line"></view>
+									<view class="right">
+										<!-- 已签到图标 -->
+										<image v-if="signNum >= index+ 1" src="https://fs-1319721001.cos.ap-chongqing.myqcloud.com/fs/20240229/f3bdd5d388854e9a8f365904840c3b32.png" mode=""></image>
+										<!-- 未签到图标 -->
+										<image v-else src="https://fs-1319721001.cos.ap-chongqing.myqcloud.com/fs/20240229/c593e551e4b246b981aaa58deb1fe725.png" mode=""></image>
+										<text class="text">{{ item.day }}</text>
+									</view>
+								</view>
+							</view>
+						</view>
+						<!-- 签到按钮 -->
+						<view class="sign-btn-box"  >
+							<view class="btn" v-if="isDaySign==false" @click="doSign()">
+								<image src="https://fs-1319721001.cos.ap-chongqing.myqcloud.com/fs/20240229/295aa046433d4feb95b467c83f8b4096.png" mode=""></image>
+								<text class="text">签到</text>
+							</view>
+							<view class="btn" v-else>
+								<image src="https://fs-1319721001.cos.ap-chongqing.myqcloud.com/fs/20240229/295aa046433d4feb95b467c83f8b4096.png" mode=""></image>
+								<text class="text">签到</text>
+							</view>
+						</view>
+					</view>
+				</view>
+				<view class="content">
+					<!-- 芳华币列表 -->
+					<view class="points-cont">
+						<!-- tab切换 -->
+						<view class="pub-tab-box">
+							<view class="tab-inner">
+								<view 
+									v-for="(item,index) in tags" 
+									:key="index"
+									:class="tabIndex == item.value?'item active':'item'"
+									@click="tabChange(item)">
+									<view class="text">
+										{{ item.lable }}
+										<image v-show="tabIndex == item.value" class="tab-bg" src="https://fs-1319721001.cos.ap-chongqing.myqcloud.com/fs/20240229/1828ea6b3b124b5f84e3556267a8d9ef.png" mode=""></image>
+									</view>
+								</view>
+							</view>
+						</view>
+						
+						<!-- 列表 -->
+						<view class="point-list">
+							<view v-for="(item,index) in list" :key="index" class="item">
+								<view class="left">
+									<text class="title"  >
+										{{$getDictLabelName(typeOptions,item.logType)}}
+									</text>
+									<view class="time">{{item.createTime}}</view>
+								</view>
+								<view class="right">
+									<text v-if="item.integral<0" class="less">{{item.integral}}</text>
+									<text v-else class="add">+{{item.integral}}</text>
+								</view>
+							</view>
+						</view>
+						<Loading :loaded="loaded" :loading="loading"></Loading>
+					</view>
+				</view>
+				
+			</view>
+		</view>
+		
+	</view>
+</template>
+
+<script>
+	// import {getDictByKey} from '@/api/common.js'
+	// import {getUserSign,getUserIntegralLogsList,doSign} from '@/api/integral';
+	import Loading from "@/components/Loading";
+	export default {
+		components: {
+		  Loading,
+		},
+		data() {
+			return {
+				typeOptions:[],
+				isDaySign:false,
+				top:0,
+				signNum:0,
+				integral:0,
+				sign:[],
+				// 状态栏的高度
+				statusBarHeight: uni.getStorageSync('menuInfo').statusBarHeight,
+				// tab切换
+				tags: [{lable:'全部',value:0},{lable:'获得',value:1},{lable:'消耗',value:2}],
+				// 选中的tab
+				tabIndex: 0,
+				current: 0,
+				page: {
+				  type:0,
+				  page: 1,
+				  pageSize: 10
+				},
+				list: [],
+				loaded: false,
+				loading: false
+			};
+		},
+		onLoad(option) {
+			
+			this.getDictByKey("sys_integral_log_type");
+			this.getUserSign()
+			this.getUserIntegralLogsList()
+		},
+		onReachBottom() {
+		  !this.loading && this.getUserIntegralLogsList();
+		},
+		onPageScroll(e) {
+			if(e.scrollTop > 30) {
+				this.topFixed = true
+			} else {
+				this.topFixed = false
+			}
+		},
+		onPageScroll(e) {
+			this.top=e.scrollTop;
+		},
+		computed: {
+			// 计算属性的 getter
+			bg: function() {
+				return 'rgba(255,142,60, ' + this.top / 30 + ')';
+			},
+		},
+		methods: {
+			getDictByKey(key){
+				var data={key:key}
+				getDictByKey(data).then(
+					res => {
+						if(res.code==200){
+							this.typeOptions=res.data;
+						}
+					},
+					err => {
+					}
+				);
+				
+			},
+			doSign(){
+				var data={};
+				uni.showLoading({
+					title:"正在加载中..."
+				})
+				doSign(data).then(
+					res => {
+						uni.hideLoading()
+						if(res.code==200){
+							uni.showToast({
+								icon:'success',
+								title: res.msg,
+							});
+							this.list=[];
+							this.page.page=1;
+							this.list=[];
+							this.loaded=false;
+							this.loading=false;
+							this.getUserIntegralLogsList();
+							this.getUserSign();
+						}else{
+							uni.showToast({
+								icon:'none',
+								title: res.msg,
+							});
+						}
+					},
+					rej => {}
+				);
+			},
+			getUserSign(){
+				getUserSign().then(
+					res => {
+						if(res.code==200){
+							this.data=res.member;
+							this.signNum=res.signNum;
+							this.isDaySign=res.isDaySign;
+							this.integral=res.integral;
+							this.sign=JSON.parse(res.sign);
+							
+						}else{
+							uni.showToast({
+								icon:'none',
+								title: "请求失败",
+							});
+						}
+					},
+					rej => {}
+				);
+			},
+			
+			getUserIntegralLogsList() {
+			  let that = this;
+			  if (that.loaded == true || that.loading == true) return;
+			  that.loading = true;
+			  uni.showLoading({
+			  	title:"加载中..."
+			  })
+			  getUserIntegralLogsList(that.page).then(
+			    res => {
+			      that.loading = false;
+			      that.loaded = res.data.list.length < that.page.pageSize;
+			      that.page.page = that.page.page + 1;
+			      that.list.push.apply(that.list, res.data.list);
+				  uni.hideLoading()
+			    },
+			    err => {
+					uni.hideLoading()
+					uni.showToast({
+							title: err.msg ,
+							icon: 'none',
+							duration: 2000
+						});
+			    }
+			  );
+			},
+			// 返回上一页
+			back() {
+				uni.navigateBack()
+			},
+			// tab选择
+			tabChange(item) {
+				console.log(item)
+				this.tabIndex = item.value
+				this.page.type=this.tabIndex;
+				this.page.page=1;
+				this.list=[];
+				this.loaded=false;
+				this.loading=false;
+				this.getUserIntegralLogsList();
+			}
+		}
+	}
+</script>
+
+<style lang="scss">
+	.fixed-top-box{
+		width: 100%;
+		position: fixed;
+		top: 0;
+		left: 0;
+		z-index: 1000;
+		transition: all 0.5s;
+		 
+	}
+	.top-cont{
+		width: 100%;
+		height: 654upx;
+		position: relative;
+		.bg{
+			width: 100%;
+			height: 100%;
+			position: absolute;
+			top: 0;
+			left: 0;
+			z-index: 1;
+		}
+		.top-inner{
+			width: 100%;
+			height: 100%;
+			position: absolute;
+			top: 0;
+			left: 0;
+			z-index: 2;
+			.back-box{
+				height: 88upx;
+				padding-left: 22upx;
+				display: flex;
+				align-items: center;
+				justify-content: space-between;
+				padding: 0 20upx;
+				image{
+					width: 40upx;
+					height: 40upx;
+				}
+				.title{
+					font-size: 36upx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #FFFFFF;
+				}
+			}
+			.available-points{
+				margin-top: 140upx;
+				display: flex;
+				flex-direction: column;
+				align-items: center;
+				justify-content: center;
+				.label{
+					font-size: 30upx;
+					font-family: PingFang SC;
+					font-weight: bold;
+					color: #FFFFFF;
+					line-height: 1;
+				}
+				.num{
+					font-size: 80upx;
+					font-family: Gilroy;
+					font-weight: 500;
+					color: #FFFFFF;
+					line-height: 1;
+					margin-top: 28upx;
+				}
+			}
+			.singn-content{
+				padding: 0 20upx;
+				margin-top: 50upx;
+			}
+			.sign-in-box{
+				height: 380upx;
+				background: #FFFFFF;
+				border-radius: 16upx;
+				.inner{
+					padding: 40upx 30upx;
+					.title-box{
+						font-size: 26upx;
+						font-family: PingFang SC;
+						font-weight: 500;
+						color: #666666;
+						line-height: 1;
+						.num{
+							font-size: 32upx;
+							font-family: PingFang SC;
+							font-weight: Bold;
+							color: #FF7511;
+							margin: 0 10upx;
+							line-height: 1;
+						}
+					}
+					.sign-list{
+						display: flex;
+						align-items: center;
+						justify-content: space-between;
+						margin-top: 40upx;
+						.item{
+							display: flex;
+							justify-content: center;
+							.right{
+								display: flex;
+								flex-direction: column;
+								align-items: center;
+								justify-content: center;
+								image{
+									width: 44upx;
+									height: 44upx;
+									margin-bottom: 20upx;
+								}
+								.text{
+									font-size: 24upx;
+									font-family: PingFang SC;
+									font-weight: 500;
+									color: #FF7511;
+									line-height: 1;
+									white-space: nowrap;
+								}
+							}
+							.line{
+								width: 34upx;
+								height: 4upx;
+								background: #F6CDA7;
+								border-radius: 2upx;
+								margin-top: 22upx;
+							}
+							&:first-child{
+								.line{
+									display: none;
+								}
+							}
+							&.active{
+								.line{
+									background: #FF8E3C;
+								}
+							}
+						}
+					}
+				}
+				.sign-btn-box{
+					padding: 0 14upx;
+					.btn{
+						width: 100%;
+						height: 88upx;
+						box-shadow: 0px 0px 5px 2px rgba(0,0,0,0.05);
+						background-color: #FF7511;
+						border-radius: 44rpx;
+						display: flex;
+						justify-content: center;
+						align-items: center;
+						image{
+							width: 32upx;
+							height: 32upx;
+						}
+						.text{
+							font-size: 30upx;
+							font-family: PingFang SC;
+							font-weight: bold;
+							color: #FFFFFF;
+							line-height: 1;
+						}
+					}
+				}
+			}
+			
+		}
+	}
+	.content{
+		margin-top: 20upx;
+		padding: 0 20upx 40upx;
+		.points-cont{
+			
+			background-color: #FFFFFF;
+			border-radius: 16upx;
+			.pub-tab-box{
+				padding: 0 80upx;
+				.tab-inner{
+					height: 88upx;
+					line-height: 88upx;
+					display: flex;
+					align-items: center;
+					justify-content: space-between;
+				}
+				.item{
+					font-size: 28upx;
+					white-space: nowrap;
+					line-height: 1;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #666666;
+					display: flex;
+					align-items: center;
+					justify-content: center;
+					&.active{
+						font-weight: bold;
+						color: #333333;
+					}
+					.text{
+						position: relative;
+						z-index: 1;
+					}
+					.tab-bg{
+						width: 72upx;
+						height: 28upx;
+						position: absolute;
+						top: 17upx;
+						left: 50%;
+						transform: translateX(-36upx);
+						z-index: -1;
+					}
+				}
+			}
+			.point-list{
+				padding: 0 30upx;
+				.item{
+					padding: 30upx 0;
+					display: flex;
+					align-items: center;
+					justify-content: space-between;
+					border-bottom: 1px solid #F0F0F0;
+					&:last-child{
+						border-bottom: none;
+					}
+					.left{
+						.title{
+							font-size: 28upx;
+							font-family: PingFang SC;
+							font-weight: 500;
+							color: #111111;
+							line-height: 1;
+						}
+						.time{
+							font-size: 24upx;
+							font-family: PingFang SC;
+							font-weight: 500;
+							color: #999999;
+							line-height: 1;
+							margin-top: 22upx;
+						}
+					}
+					.right{
+						.add{
+							font-size: 28upx;
+							font-family: PingFang SC;
+							font-weight: 500;
+							color: #111111;
+						}
+						.less{
+							font-size: 28upx;
+							font-family: PingFang SC;
+							font-weight: 500;
+							color: #F56C6C;
+						}
+					}
+				}
+			}
+		}
+	}
+	
+</style>

+ 330 - 0
pages_user/integralGoodsList.vue

@@ -0,0 +1,330 @@
+<template>
+	<view class="content">
+		<view class="cont-box">
+			<u-sticky>
+				<view class="top-box">
+					<view class="my-integral">
+						<view class="left">
+							<view class="label">我的芳华币</view>
+							<view style="margin-top: 30rpx;display: flex;align-items: baseline;">
+								<view class="integral">{{integral}}</view>
+								<view class="integralbtn" @click="goIntegral">获取芳华币</view>
+							</view>
+						</view>
+						<view class="btn-box">
+							<view class="btn" @click="navTo('/pages/user/integral/integralLogsList')">获得记录</view>
+							<view class="btn" @click="navTo('/pages/user/integral/integralOrderList')">兑换记录</view>
+						</view>
+					</view>
+					<view class="tabs" v-if="tabs.length>0">
+						<u-tabs
+						 :current="tabIndex"
+						 :scrollable="true"
+						 :list="tabs"  
+						 lineColor="#FF5C03"
+						@change="tabChange">
+						</u-tabs>
+					</view>
+				</view>
+			</u-sticky>
+			<mescroll-body bottom="0"  ref="mescrollRef" @init="mescrollInit" @down="downCallback" @up="upCallback" :down="downOption" :up="upOption">
+			<view class="integral-box">
+				<view class="item"  @click="navTo('/pages/user/integral/integralGoodsDetails?goodsId='+item.goodsId)" v-for="(item,index) in dataList">
+					<view class="top">
+						<image :src="item.imgUrl"></image>
+					</view>
+					<view class="bottom">
+						<view class="title ellipsis2">
+							{{item.goodsName}}
+						</view>
+						<view class="price-box">
+							<view class="price">{{item.integral}}芳华币</view>
+							<view class="count">价值:{{item.otPrice.toFixed(2)}}元</view>
+						</view>
+					</view>
+				</view>
+			</view>
+			</mescroll-body>
+		</view>
+		
+	</view>
+</template>
+
+<script>
+ // import {getDictByKey} from '@/api/common.js'
+ // import MescrollMixin from "@/uni_modules/mescroll-uni/components/mescroll-uni/mescroll-mixins.js";
+ // import {getIntegralGoodsList} from '@/api/integral.js'
+ // import {getUserInfo} from '@/api/user'
+ export default {
+	mixins: [MescrollMixin], 
+ 	data() {
+ 		return {
+			integral:0,
+			type:"0",
+			typeOptions:[],
+			tabIndex:0,
+			tabs: [],
+			mescroll:null,
+			downOption: {   //下拉刷新
+			 	use:true,
+				auto: false // 不自动加载 (mixin已处理第一个tab触发downCallback)
+			},
+			upOption: {
+				onScroll:false,
+				use: true, // 是否启用上拉加载; 默认true
+				page: {
+					pae: 0, // 当前页码,默认0,回调之前会加1,即callback(page)会从1开始
+					size: 10 // 每页数据的数量,默认10
+				},
+				noMoreSize: 10, // 配置列表的总数量要大于等于5条才显示'-- END --'的提示
+				textNoMore:"已经到底了",
+				empty: {
+					icon:'https://cos.his.cdwjyyh.com/fs/20240423/cf4a86b913a04341bb44e34bb4d37aa2.png',
+					tip: '暂无数据'
+				}
+			},
+			dataList: []
+ 		}
+ 	},
+	onLoad() {
+		this.getDictByKey("sys_integral_goods_type");
+		this.getUserInfo();
+	},
+ 	methods: {
+		getUserInfo(){
+			getUserInfo().then(
+				res => {
+					if(res.code==200){
+						if(res.user!=null){
+							this.integral=res.user.integral;
+						}
+					}else{
+						uni.showToast({
+							icon:'none',
+							title: "请求失败",
+						});
+					}
+				},
+				rej => {}
+			);
+		},
+		navTo(url) {
+			uni.navigateTo({
+				url: url
+			})
+		},
+		goIntegral() {
+			let pages = getCurrentPages();
+			let url = pages[ pages.length - 2];
+			if(pages.length > 1&&url&&url.route == 'pages/user/integral/points') {
+				uni.navigateBack()
+			} else {
+				uni.navigateTo({
+					url: '/pages/user/integral/points'
+				})
+			}
+		},
+		getDictByKey(key){
+			var data={key:key}
+			var that=this;
+			getDictByKey(data).then(
+				res => {
+					if(res.code==200){
+						this.typeOptions=res.data;
+						this.typeOptions.forEach(function(item,index){
+							var data={name:item.dictLabel};
+							that.tabs.push(data);
+						})
+						if(this.tabs.length>0){
+							this.tabIndex=0
+						}
+						
+					}
+				},
+				err => {
+				}
+			);
+			
+		},
+		tabChange(item){
+			console.log(item.index)
+			this.type=this.typeOptions[item.index].dictValue;
+			this.mescroll.resetUpScroll()
+		},
+		mescrollInit(mescroll) {
+			this.mescroll = mescroll;
+		},
+		/*下拉刷新的回调 */
+		downCallback(mescroll) {
+			mescroll.resetUpScroll()
+		},
+		upCallback(page) {
+			//联网加载数据
+			var that = this;
+			var data = {
+				pageNum: page.num,
+				pageSize: page.size
+			};
+			if(this.type!=null){
+				data.goodsType=this.type
+			}
+			getIntegralGoodsList(data).then(res => {
+				if(res.code==200){
+					//设置列表数据
+					if (page.num == 1) {
+						that.dataList = res.data.list; 
+						
+					} else {
+						that.dataList = that.dataList.concat(res.data.list);
+						 
+					}
+					that.mescroll.endBySize(res.data.list.length, res.data.total);
+					
+				}else{
+					uni.showToast({
+						icon:'none',
+						title: "请求失败",
+					});
+					that.dataList = null;
+					that.mescroll.endErr();
+				}
+			});
+		}
+		 
+ 	}
+ }
+ 
+ 
+</script>
+
+
+<style scoped lang="scss">
+page{
+	height: 100%;
+	background-color: #f5f5f5;
+}
+.content{
+	height: 100%;
+	.cont-box{
+		.top-box{
+			padding: 30rpx 30rpx 0 30rpx;
+			width: 100%;
+			background-color: #f5f5f5;
+			.my-integral{
+				height: 200rpx;
+				box-shadow: 0px 0px 5px 2px rgba(0,0,0,0.05);
+				background: linear-gradient(#FF5C03, #E2C99E);
+				border-radius: 30rpx;
+				display: flex;
+				align-items: flex-start;
+				justify-content: space-between;
+				padding: 30rpx;
+				.integralbtn {
+					font-size: 24rpx;
+					font-family: PingFang SC;
+					color: #fff;
+					margin-left: 16rpx;
+					text-decoration: underline;
+				}
+				.btn{
+					margin-bottom: 30rpx;
+					background-color: #fff;
+					border-radius: 30rpx;
+					display: flex;
+					align-items: center;
+					justify-content: center;
+					padding: 10rpx 15rpx;
+					font-size: 20upx;
+					font-family: PingFang SC;
+					color: #FF5C03;
+				}
+				.left{
+					.label{
+						font-size: 28upx;
+						font-family: PingFang SC;
+						color: #fff;
+					}
+					.integral{
+						font-weight: bold;
+						font-size: 40upx;
+						font-family: PingFang SC;
+						color: #fff;
+					}
+				}
+				.btn-box{
+					display: flex;
+					flex-direction: column;
+					align-items: flex-start;
+					justify-content: flex-start;
+				}
+			}
+			.tabs{
+				height: 88rpx;
+			}
+		}
+		.integral-box{
+			padding: 0 30rpx 30rpx 30rpx;
+			display: flex;
+			align-items: flex-start;
+			justify-content: flex-start;
+			flex-wrap: wrap;
+			.item{
+				box-shadow: 0px 0px 5px 2px rgba(0,0,0,0.05);
+				background-color: #fff;
+				width: calc(50% - 20rpx);
+				border-radius: 15rpx;
+				margin: 10rpx;
+				display: flex;
+				flex-direction: column;
+				align-items: flex-start;
+				justify-content: flex-start;
+				&:last-child{
+				}
+				.top{
+					width:100%;
+					height:300rpx;
+					image{
+						border-radius: 15rpx 15rpx 0rpx 0rpx;
+						width:100%;
+						height:300rpx;
+					}
+					
+				}
+				.bottom{
+					width: 100%;
+					padding: 15rpx;
+					.title{
+						font-weight: bold;
+						font-size: 28upx;
+						font-family: PingFang SC;
+						color: #111111;
+					}
+					.price-box{
+						margin-top: 10rpx;
+						display: flex;
+						align-items: center;
+						justify-content: space-between;
+						width: 100%;
+						.price{
+							padding: 5rpx 10rpx;
+							background-color: #FF5C03;
+							border-radius: 30rpx;
+							font-size: 20upx;
+							font-family: PingFang SC;
+							color: #ffffff;
+						}
+						.count{
+							font-size: 24upx;
+							font-family: PingFang SC;
+							color: #333333;
+						}
+						
+					}
+				}
+			}
+		}
+	}
+}
+ 
+
+</style>

BIN
static/images/hongbao.png


+ 8 - 12
unpackage/dist/dev/mp-weixin/api/live.js

@@ -8,7 +8,7 @@ const api = {
   // 店铺收藏/取消收藏
   collectGoods: (goodId) => `/app/live/liveData/collectGoods?goodId=${goodId}`,
   // 商品收藏/取消收藏
-  store: (storeld) => `/app/live/store/${storeld}`,
+  store: (storeld, key) => `/app/live/store/${storeld}?key=${key}`,
   // 查询店铺
   follow: (liveId) => `/app/live/liveData/follow/${liveId}`,
   // 关注/取消关注
@@ -19,10 +19,10 @@ const api = {
   // 获取直播间信息接口
   getLiveViewData: (liveId) => `/app/live/liveData/getLiveViewData/${liveId}`,
   // 直播间点赞、关注、在线人数数据
+  liveRed: "/app/live/liveRed/claim",
+  // 点击领红包
   // 直播订单
-  searchStore: (storeId) => `/app/live/store/${storeId}`,
-  // 查询店铺
-  liveStore: (liveId) => `/app/live/liveGoods/liveStore/${liveId}`,
+  liveStore: (liveId, key) => `/app/live/liveGoods/liveStore/${liveId}?key=${key}`,
   // 店铺展示
   liveGoodsDetail: (productId) => `/app/live/liveGoods/liveGoodsDetail/${productId}`,
   // 商品详情
@@ -38,8 +38,8 @@ function collectStore(sotreId, data = {}) {
 function collectGoods(goodId, data = {}) {
   return request(api.collectGoods(goodId), data, "POST", "application/json;charset=UTF-8");
 }
-function store(storeld, data = {}) {
-  return request(api.store(storeld), data, "GET", "application/json;charset=UTF-8");
+function store(storeld, key, data = {}) {
+  return request(api.store(storeld, key), data, "GET", "application/json;charset=UTF-8");
 }
 function follow(liveId, data = {}) {
   return request(api.follow(liveId), data, "GET", "application/json;charset=UTF-8");
@@ -47,8 +47,8 @@ function follow(liveId, data = {}) {
 function getRecentLiveViewers(liveId, data = {}) {
   return request(api.getRecentLiveViewers(liveId), data, "GET", "application/json;charset=UTF-8");
 }
-function liveStore(liveId, data) {
-  return request(api.liveStore(liveId), data, "GET", "application/json;charset=UTF-8");
+function liveStore(liveId, key, data) {
+  return request(api.liveStore(liveId, key), data, "GET", "application/json;charset=UTF-8");
 }
 function liveGoodsDetail(productId, data) {
   return request(api.liveGoodsDetail(productId), data, "GET", "application/json;charset=UTF-8");
@@ -56,9 +56,6 @@ function liveGoodsDetail(productId, data) {
 function liveOrderUser(liveId, data = {}) {
   return request(api.liveOrderUser(liveId), data, "GET", "application/json;charset=UTF-8");
 }
-function searchStore(storeId, data = {}) {
-  return request(api.searchStore(storeId), data, "GET", "application/json;charset=UTF-8");
-}
 function getLiveInfo(liveId, data = {}) {
   return request(api.getLiveInfo(liveId), data, "GET", "application/json;charset=UTF-8");
 }
@@ -75,5 +72,4 @@ exports.liveDataLike = liveDataLike;
 exports.liveGoodsDetail = liveGoodsDetail;
 exports.liveOrderUser = liveOrderUser;
 exports.liveStore = liveStore;
-exports.searchStore = searchStore;
 exports.store = store;

+ 2 - 0
unpackage/dist/dev/mp-weixin/app.js

@@ -33,6 +33,8 @@ if (!Math) {
   "./pages_shop/success.js";
   "./pages_shop/storeOrderDelivery.js";
   "./pages_user/address.js";
+  "./pages_user/integral.js";
+  "./pages_user/integralGoodsList.js";
   "./pages_user/addAddress.js";
 }
 const _sfc_main = {

+ 2 - 0
unpackage/dist/dev/mp-weixin/app.json

@@ -34,6 +34,8 @@
       "root": "pages_user",
       "pages": [
         "address",
+        "integral",
+        "integralGoodsList",
         "addAddress"
       ]
     }

+ 12 - 10
unpackage/dist/dev/mp-weixin/common/assets.js

@@ -1,16 +1,17 @@
 "use strict";
 const _imports_0$f = "/static/images/shipin.png";
 const _imports_0$e = "/static/images/live/return.png";
-const _imports_1$a = "/static/images/live/like.png";
-const _imports_2$6 = "/static/images/live/shop.png";
-const _imports_3$3 = "/static/images/live/share.png";
-const _imports_4 = "/static/images/live/shopping.png";
-const _imports_5 = "/static/images/shopping.png";
-const _imports_6 = "/static/images/more-icon.png";
+const _imports_1$a = "/static/images/hongbao.png";
+const _imports_2$6 = "/static/images/live/like.png";
+const _imports_3$3 = "/static/images/live/shop.png";
+const _imports_4 = "/static/images/live/share.png";
+const _imports_5 = "/static/images/live/shopping.png";
+const _imports_6 = "/static/images/shopping.png";
+const _imports_7 = "/static/images/more-icon.png";
 const _imports_1$9 = "/static/images/search.png";
-const _imports_11 = "/static/images/collect_select.png";
-const _imports_12 = "/static/images/collect.png";
-const _imports_10 = "/static/images/order.png";
+const _imports_12 = "/static/images/collect_select.png";
+const _imports_13 = "/static/images/collect.png";
+const _imports_11 = "/static/images/order.png";
 const _imports_0$d = "/static/images/top.png";
 const _imports_1$8 = "/static/images/up-down.png";
 const _imports_2$5 = "/static/images/wechat.png";
@@ -70,9 +71,9 @@ exports._imports_1$6 = _imports_1$4;
 exports._imports_1$7 = _imports_1$3;
 exports._imports_1$8 = _imports_1$2;
 exports._imports_1$9 = _imports_1$1;
-exports._imports_10 = _imports_10;
 exports._imports_11 = _imports_11;
 exports._imports_12 = _imports_12;
+exports._imports_13 = _imports_13;
 exports._imports_2 = _imports_2$6;
 exports._imports_2$1 = _imports_2$5;
 exports._imports_2$2 = _imports_2$3;
@@ -87,3 +88,4 @@ exports._imports_3$3 = _imports_3;
 exports._imports_4 = _imports_4;
 exports._imports_5 = _imports_5;
 exports._imports_6 = _imports_6;
+exports._imports_7 = _imports_7;

+ 18 - 0
unpackage/dist/dev/mp-weixin/common/vendor.js

@@ -46896,6 +46896,24 @@ const subPackages = [
           }
         }
       },
+      {
+        path: "integral",
+        style: {
+          navigationBarTitleText: "我的芳华币",
+          enablePullDownRefresh: false,
+          navigationBarBackgroundColor: "#ffffff",
+          navigationBarTextStyle: "black"
+        }
+      },
+      {
+        path: "integralGoodsList",
+        style: {
+          navigationBarTitleText: "芳华币商城",
+          enablePullDownRefresh: false,
+          navigationBarBackgroundColor: "#ffffff",
+          navigationBarTextStyle: "black"
+        }
+      },
       {
         path: "addAddress",
         style: {

+ 20 - 0
unpackage/dist/dev/mp-weixin/components/Loading.js

@@ -0,0 +1,20 @@
+"use strict";
+const common_vendor = require("../common/vendor.js");
+const _sfc_main = {
+  name: "Loading",
+  props: {
+    loaded: Boolean,
+    loading: Boolean
+  }
+};
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+  return common_vendor.e({
+    a: $props.loading || !$props.loaded
+  }, $props.loading || !$props.loaded ? common_vendor.e({
+    b: $props.loading
+  }, $props.loading ? {} : {}, {
+    c: !$props.loading
+  }, !$props.loading ? {} : {}) : {});
+}
+const Component = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["render", _sfc_render]]);
+wx.createComponent(Component);

+ 4 - 0
unpackage/dist/dev/mp-weixin/components/Loading.json

@@ -0,0 +1,4 @@
+{
+  "component": true,
+  "usingComponents": {}
+}

+ 1 - 0
unpackage/dist/dev/mp-weixin/components/Loading.wxml

@@ -0,0 +1 @@
+<view wx:if="{{a}}" class="Loads acea-row row-center-wrapper" style="margin-top:20rpx"><block wx:if="{{b}}"><view class="iconfont icon-jiazai loading acea-row row-center-wrapper"></view> 正在加载中 </block><block wx:if="{{c}}"> 上拉加载更多 </block></view>

+ 0 - 0
unpackage/dist/dev/mp-weixin/components/Loading.wxss


+ 97 - 65
unpackage/dist/dev/mp-weixin/pages/home/living.js

@@ -4,12 +4,15 @@ const api_live = require("../../api/live.js");
 require("../../api/order.js");
 const api_home = require("../../api/home.js");
 const common_assets = require("../../common/assets.js");
-var wsUrl = "ws://192.168.10.166:7114/app/webSocket";
+var wsUrl = "ws://192.168.10.125:7114/app/webSocket";
 var isSocketOpen = false;
 var socket = null;
 const _sfc_main = {
   data() {
     return {
+      redInfo: null,
+      inputInfo: "",
+      searchTimer: null,
       storeId: null,
       reconnectCount: 0,
       maxReconnectAttempts: 3,
@@ -114,9 +117,9 @@ const _sfc_main = {
     };
   },
   onLoad(options) {
-    if (options.liveId) {
+    if (options.liveId && options.liveId !== this.liveId) {
       this.liveId = options.liveId;
-      console.log("接收到的liveId:", this.liveId);
+      this.getliveViewData();
     }
     common_vendor.index.showShareMenu({
       withShareTicket: true
@@ -168,6 +171,9 @@ const _sfc_main = {
   onReady: function(res) {
     this.videoContext = common_vendor.index.createVideoContext("myVideo");
   },
+  onHide() {
+    clearInterval(this.intervalId);
+  },
   onUnload() {
     this.closeWebSocket();
     if (this.hlsPlayer) {
@@ -191,6 +197,21 @@ const _sfc_main = {
     }
   },
   methods: {
+    onRed() {
+      if (!this.liveId)
+        return;
+      ({
+        liveId: this.liveId,
+        userId: this.userinfo.userId,
+        redId: this.redInfo.redId
+      });
+    },
+    handleSearchInput() {
+      clearTimeout(this.searchTimer);
+      this.searchTimer = setTimeout(() => {
+        this.queryCollect();
+      }, 500);
+    },
     // 显示购买提示信息
     showPurchaseMessage() {
       if (this.purchasePromptTimer) {
@@ -322,6 +343,7 @@ const _sfc_main = {
     },
     //直播间点赞、关注、在线人数数据
     getliveViewData() {
+      console.log("直播间点赞、关注、在线人数数据>>>", this.liveId);
       if (!this.liveId)
         return;
       api_live.getLiveViewData(this.liveId).then(
@@ -457,7 +479,7 @@ const _sfc_main = {
     queryCollect() {
       if (!this.storeId)
         return;
-      api_live.store(this.storeId).then(
+      api_live.store(this.storeId, this.inputInfo).then(
         (res) => {
           if (res.code == 200) {
             console.log("查询店铺>>", res);
@@ -478,7 +500,7 @@ const _sfc_main = {
     onStoreCollect() {
       if (!this.storeId)
         return;
-      api_live.collectStore(this.products[0].storeId).then(
+      api_live.collectStore(this.storeId).then(
         (res) => {
           if (res.code == 200) {
             common_vendor.index.showToast({
@@ -639,7 +661,6 @@ const _sfc_main = {
     // 	}
     // },
     getAnswerlists() {
-      console.log(123);
       if (!this.liveId)
         return;
       const data = {
@@ -824,12 +845,15 @@ const _sfc_main = {
             this.$nextTick(() => {
               this.scrollIntoView = `list_${this.talklist.length - 1}`;
             });
-            if (redata.cmd == "deleteId") {
+            if (redata.data.cmd == "deleteId") {
               common_vendor.index.$emit("deleteId");
-            } else if (redata.cmd == "init") {
+            } else if (redata.data.cmd == "init") {
               common_vendor.index.$emit("init", redata.data);
-            } else if (redata.cmd == "reload") {
+            } else if (redata.data.cmd == "reload") {
               common_vendor.index.$emit("reload");
+            } else if (redata.data.cmd == "red") {
+              console.log(" 领红包>>", redata);
+              this.redInfo = JSON.parse(redata.data.data);
             } else if (redata.data.cmd == "sendRedPacketQuestion") {
               const list = JSON.parse(redata.data.data);
               this.redanswerAll = [...this.redanswerAll, ...list];
@@ -931,6 +955,7 @@ if (!Math) {
   (_easycom_u_avatar + _easycom_u_input + _easycom_u_icon + _easycom_u_popup)();
 }
 function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+  var _a, _b;
   return common_vendor.e({
     a: common_vendor.o((...args) => $options.goBack && $options.goBack(...args)),
     b: common_assets._imports_0$1,
@@ -953,34 +978,39 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
       };
     }),
     j: common_vendor.t($data.liveViewData.online || 0),
-    k: common_vendor.o((...args) => $options.onLike && $options.onLike(...args)),
-    l: common_assets._imports_1$1,
-    m: common_vendor.t($data.liveViewData.like),
-    n: common_vendor.o(($event) => $options.goStore()),
+    k: ((_a = $data.redInfo) == null ? void 0 : _a.status) == 1
+  }, ((_b = $data.redInfo) == null ? void 0 : _b.status) == 1 ? {
+    l: common_vendor.o((...args) => $options.onRed && $options.onRed(...args)),
+    m: common_assets._imports_1$1
+  } : {}, {
+    n: common_vendor.o((...args) => $options.onLike && $options.onLike(...args)),
     o: common_assets._imports_2,
-    p: common_assets._imports_3,
-    q: common_vendor.n($data.showType == 1 ? "siderow-group" : "side-group"),
-    r: $data.showPurchasePrompt
-  }, $data.showPurchasePrompt ? {
+    p: common_vendor.t($data.liveViewData.like),
+    q: common_vendor.o(($event) => $options.goStore()),
+    r: common_assets._imports_3,
     s: common_assets._imports_4,
-    t: common_vendor.t($data.orderUser.userName ? $options.maskString($data.orderUser.userName) : ""),
-    v: common_vendor.t($data.orderUser.count || 0)
+    t: common_vendor.n($data.showType == 1 ? "siderow-group" : "side-group"),
+    v: $data.showPurchasePrompt
+  }, $data.showPurchasePrompt ? {
+    w: common_assets._imports_5,
+    x: common_vendor.t($data.orderUser.userName ? $options.maskString($data.orderUser.userName) : ""),
+    y: common_vendor.t($data.orderUser.count || 0)
   } : {}, {
-    w: $data.livingUrl
+    z: $data.livingUrl
   }, $data.livingUrl ? {
-    x: common_vendor.n($data.showType == 1 ? "video_row" : "videotop"),
-    y: $data.livingUrl,
-    z: $data.autoplay,
-    A: common_vendor.o((...args) => $options.videoError && $options.videoError(...args))
+    A: common_vendor.n($data.showType == 1 ? "video_row" : "videotop"),
+    B: $data.livingUrl,
+    C: $data.autoplay,
+    D: common_vendor.o((...args) => $options.videoError && $options.videoError(...args))
   } : {}, {
-    B: $data.videoUrl
+    E: $data.videoUrl
   }, $data.videoUrl ? {
-    C: common_vendor.n($data.showType == 1 ? "video_row" : "videotop"),
-    D: $data.videoUrl,
-    E: $data.autoplay,
-    F: common_vendor.o((...args) => $options.videoError && $options.videoError(...args))
+    F: common_vendor.n($data.showType == 1 ? "video_row" : "videotop"),
+    G: $data.videoUrl,
+    H: $data.autoplay,
+    I: common_vendor.o((...args) => $options.videoError && $options.videoError(...args))
   } : {}, {
-    G: common_vendor.f($data.talklist, (item, index, i0) => {
+    J: common_vendor.f($data.talklist, (item, index, i0) => {
       return {
         a: common_vendor.t(item.msg),
         b: item.index,
@@ -988,8 +1018,8 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
         d: item.cmd == "announcement"
       };
     }),
-    H: common_vendor.t($data.messageContent),
-    I: common_vendor.f($data.talklist, (item, index, i0) => {
+    K: common_vendor.t($data.messageContent),
+    L: common_vendor.f($data.talklist, (item, index, i0) => {
       return {
         a: common_vendor.t(item.nickName),
         b: common_vendor.t(item.msg),
@@ -998,9 +1028,9 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
         e: item.cmd == "sendMsg"
       };
     }),
-    J: $data.showWelcomeMessage
+    M: $data.showWelcomeMessage
   }, $data.showWelcomeMessage ? {
-    K: common_vendor.f($data.talklist, (item, index, i0) => {
+    N: common_vendor.f($data.talklist, (item, index, i0) => {
       return {
         a: common_vendor.t(item.nickName),
         b: common_vendor.t(item.msg),
@@ -1009,13 +1039,13 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
         e: item.cmd == "entry" || item.cmd == "out"
       };
     }),
-    L: common_vendor.t($data.messageContent)
+    O: common_vendor.t($data.messageContent)
   } : {}, {
-    M: $data.scrollIntoView,
-    N: common_vendor.o($options.sendMsg),
-    O: common_vendor.o($options.sendMsg),
-    P: common_vendor.o(($event) => $data.value = $event),
-    Q: common_vendor.p({
+    P: $data.scrollIntoView,
+    Q: common_vendor.o($options.sendMsg),
+    R: common_vendor.o($options.sendMsg),
+    S: common_vendor.o(($event) => $data.value = $event),
+    T: common_vendor.p({
       placeholder: $data.placeholderText,
       border: "none",
       customStyle: "font-size:24rpx;",
@@ -1024,38 +1054,40 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
       placeholderStyle: "color:#e7e7e7",
       modelValue: $data.value
     }),
-    R: common_assets._imports_5,
-    S: common_vendor.o(($event) => $data.shopping = !$data.shopping),
-    T: common_assets._imports_6,
-    U: common_vendor.o(($event) => $data.showziliao = !$data.showziliao),
-    V: common_vendor.o(($event) => $data.showziliao = !$data.showziliao),
-    W: common_vendor.p({
+    U: common_assets._imports_6,
+    V: common_vendor.o(($event) => $data.shopping = !$data.shopping),
+    W: common_assets._imports_7,
+    X: common_vendor.o(($event) => $data.showziliao = !$data.showziliao),
+    Y: common_vendor.o(($event) => $data.showziliao = !$data.showziliao),
+    Z: common_vendor.p({
       name: "close",
       size: "18"
     }),
-    X: $data.livedata.liveDesc,
-    Y: common_vendor.o($options.closes),
-    Z: common_vendor.p({
+    aa: $data.livedata.liveDesc,
+    ab: common_vendor.o($options.closes),
+    ac: common_vendor.p({
       show: $data.showziliao,
       round: "20",
       bgColor: "#fffee1"
     }),
-    aa: common_vendor.p({
+    ad: common_vendor.p({
       src: $data.store.logoUrl,
       size: "36"
     }),
-    ab: common_assets._imports_1,
-    ac: $data.store.isFavorite
+    ae: common_assets._imports_1,
+    af: common_vendor.o([($event) => $data.inputInfo = $event.detail.value, (...args) => $options.handleSearchInput && $options.handleSearchInput(...args)]),
+    ag: $data.inputInfo,
+    ah: $data.store.isFavorite
   }, $data.store.isFavorite ? {
-    ad: common_assets._imports_11
+    ai: common_vendor.o((...args) => $options.onStoreCollect && $options.onStoreCollect(...args)),
+    aj: common_assets._imports_12
   } : {
-    ae: common_vendor.o((...args) => $options.onStoreCollect && $options.onStoreCollect(...args)),
-    af: common_assets._imports_12
+    ak: common_vendor.o((...args) => $options.onStoreCollect && $options.onStoreCollect(...args)),
+    al: common_assets._imports_13
   }, {
-    ag: common_vendor.o((...args) => $options.onStoreCollect && $options.onStoreCollect(...args)),
-    ah: common_assets._imports_10,
-    ai: common_vendor.o((...args) => $options.goOrderList && $options.goOrderList(...args)),
-    aj: common_vendor.f($data.products, (item, index, i0) => {
+    am: common_assets._imports_11,
+    an: common_vendor.o((...args) => $options.goOrderList && $options.goOrderList(...args)),
+    ao: common_vendor.f($data.products, (item, index, i0) => {
       return common_vendor.e({
         a: item.imgUrl,
         b: common_vendor.t(index + 1),
@@ -1066,10 +1098,10 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
         g: item.isFavorite
       }, item.isFavorite ? {
         h: common_vendor.o(($event) => $options.onGoodsCollect(item), index),
-        i: common_assets._imports_11
+        i: common_assets._imports_12
       } : {
         j: common_vendor.o(($event) => $options.onGoodsCollect(item), index),
-        k: common_assets._imports_12
+        k: common_assets._imports_13
       }, {
         l: item.status == 1
       }, item.status == 1 ? {
@@ -1081,10 +1113,10 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
         p: index
       });
     }),
-    ak: $data.boxHeight + "px",
-    al: common_vendor.o($options.closeshop),
-    am: common_vendor.o($options.open),
-    an: common_vendor.p({
+    ap: $data.boxHeight + "px",
+    aq: common_vendor.o($options.closeshop),
+    ar: common_vendor.o($options.open),
+    as: common_vendor.p({
       show: $data.shopping,
       round: "20rpx",
       bgColor: "#f3f5f9"

Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 0 - 0
unpackage/dist/dev/mp-weixin/pages/home/living.wxml


+ 2 - 1
unpackage/dist/dev/mp-weixin/pages_shop/goods.js

@@ -88,7 +88,8 @@ const _sfc_main = {
   methods: {
     //查询店铺
     getSearchStore() {
-      api_live.searchStore(this.storeId).then(
+      let key = "";
+      api_live.store(this.storeId, key).then(
         (res) => {
           if (res.code == 200) {
             console.log("查询店铺>>>>", res);

+ 33 - 31
unpackage/dist/dev/mp-weixin/pages_shop/store.js

@@ -5,6 +5,9 @@ const common_assets = require("../common/assets.js");
 const _sfc_main = {
   data() {
     return {
+      inputInfo: "",
+      inputno: "",
+      searchTimer: null,
       tabList: [{
         name: "推荐"
       }, {
@@ -74,6 +77,12 @@ const _sfc_main = {
     }
   },
   methods: {
+    handleSearchInput() {
+      clearTimeout(this.searchTimer);
+      this.searchTimer = setTimeout(() => {
+        this.getliveStore();
+      }, 500);
+    },
     getPureDecimal(num, precision = 6) {
       const decimalPart = Math.abs(num).toFixed(precision).split(".")[1];
       return (decimalPart == null ? void 0 : decimalPart.replace(/0+$/, "")) || "";
@@ -84,7 +93,7 @@ const _sfc_main = {
         pageSize: 10,
         page: 1
       };
-      api_live.liveStore(this.liveId, data).then(
+      api_live.liveStore(this.liveId, this.inputInfo, data).then(
         (res) => {
           if (res.code == 200) {
             console.log("小黄车 店铺展示>>>>", res);
@@ -102,7 +111,9 @@ const _sfc_main = {
     },
     //查询店铺
     getSearchStore() {
-      api_live.searchStore(this.storeId).then(
+      if (!this.storeId)
+        return;
+      api_live.store(this.storeId, this.inputno).then(
         (res) => {
           if (res.code == 200) {
             console.log("查询店铺>>>>", res);
@@ -157,17 +168,6 @@ const _sfc_main = {
     // 		rej => {}
     // 	);
     // },
-    toSearch() {
-      if (this.from == "company") {
-        common_vendor.index.navigateTo({
-          url: "/pages_company/order/productList?storeId=" + this.storeId || ""
-        });
-      } else {
-        common_vendor.index.navigateTo({
-          url: "/pages/home/productSearch?storeId=" + this.storeId || ""
-        });
-      }
-    },
     handleAdvClick(item) {
       if (item.showType == 1) {
         common_vendor.index.setStorageSync("url", item.advUrl);
@@ -260,18 +260,20 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
       size: "20"
     }),
     d: common_assets._imports_0$9,
-    e: common_vendor.o((...args) => $options.toSearch && $options.toSearch(...args)),
-    f: common_vendor.p({
+    e: common_vendor.o([($event) => $data.inputInfo = $event.detail.value, (...args) => $options.handleSearchInput && $options.handleSearchInput(...args)]),
+    f: $data.inputInfo,
+    g: common_vendor.o((...args) => _ctx.toSearch && _ctx.toSearch(...args)),
+    h: common_vendor.p({
       shape: "square",
       src: $data.storeInfo.logoUrl || _ctx.logoUrl,
       width: "100rpx",
       height: "100rpx",
       radius: "6"
     }),
-    g: common_vendor.t($data.storeInfo.storeName || ""),
-    h: common_vendor.t($data.storeInfo.salesCount),
-    i: $data.storeInfo.storeName,
-    j: common_vendor.f($data.products, (subItem, index, i0) => {
+    i: common_vendor.t($data.storeInfo.storeName || ""),
+    j: common_vendor.t($data.storeInfo.salesCount),
+    k: $data.storeInfo.storeName,
+    l: common_vendor.f($data.products, (subItem, index, i0) => {
       return {
         a: subItem.imgUrl,
         b: common_vendor.t(subItem.productName),
@@ -281,36 +283,36 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
         f: common_vendor.o(($event) => $options.showProductList(subItem), index)
       };
     }),
-    k: common_vendor.p({
+    m: common_vendor.p({
       name: "map",
       color: "#ccc",
       size: "18"
     }),
-    l: common_vendor.t($data.storeInfo.address || "--"),
-    m: $data.storeInfo.phone
+    n: common_vendor.t($data.storeInfo.address || "--"),
+    o: $data.storeInfo.phone
   }, $data.storeInfo.phone ? {
-    n: common_vendor.p({
+    p: common_vendor.p({
       name: "phone",
       color: "#ccc",
       size: "18"
     }),
-    o: common_vendor.t($data.storeInfo.phone || "--")
+    q: common_vendor.t($data.storeInfo.phone || "--")
   } : {}, {
-    p: $data.storeInfo.descs
+    r: $data.storeInfo.descs
   }, $data.storeInfo.descs ? {
-    q: common_vendor.p({
+    s: common_vendor.p({
       name: "volume",
       color: "#ccc",
       size: "18"
     }),
-    r: common_vendor.t($data.storeInfo.descs || "--")
+    t: common_vendor.t($data.storeInfo.descs || "--")
   } : {}, {
-    s: common_vendor.p({
+    v: common_vendor.p({
       name: "file-text",
       color: "#ccc",
       size: "18"
     }),
-    t: common_vendor.f(_ctx.licenseImagesList, (img, i, i0) => {
+    w: common_vendor.f(_ctx.licenseImagesList, (img, i, i0) => {
       return {
         a: common_vendor.o(($event) => $options.previewImage(i), i),
         b: "dd5fc6f3-6-" + i0,
@@ -325,8 +327,8 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
         d: i
       };
     }),
-    v: $data.divHeight,
-    w: $data.current == 1
+    x: $data.divHeight,
+    y: $data.current == 1
   });
 }
 const MiniProgramPage = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["render", _sfc_render], ["__scopeId", "data-v-dd5fc6f3"]]);

Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 0 - 0
unpackage/dist/dev/mp-weixin/pages_shop/store.wxml


+ 4 - 5
unpackage/dist/dev/mp-weixin/pages_shop/store.wxss

@@ -149,7 +149,6 @@
 }
 .storebox.data-v-dd5fc6f3 {
   width: 100%;
-  background-color: #fff;
   position: relative;
   z-index: 1;
 }
@@ -184,10 +183,10 @@
   height: 100%;
 }
 .medic-box .medic .medic-list.data-v-dd5fc6f3 {
-  padding: 20rpx 30rpx;
+  width: 100%;
+  padding: 20rpx 24rpx;
   box-sizing: border-box;
   overflow-y: auto;
-  background: #F5F7FA;
   height: calc(100% - 220rpx);
   position: relative;
 }
@@ -196,8 +195,8 @@
   flex-wrap: wrap;
 }
 .medic-box .medic .medic-list .inner-list .definite.data-v-dd5fc6f3 {
-  width: calc(50% - 10rpx);
-  margin-right: 20rpx;
+  width: 342rpx;
+  margin-right: 18rpx;
   margin-bottom: 30rpx;
   background: #ffffff;
   border-radius: 16rpx;

+ 219 - 0
unpackage/dist/dev/mp-weixin/pages_user/integral.js

@@ -0,0 +1,219 @@
+"use strict";
+const common_vendor = require("../common/vendor.js");
+const Loading = () => "../components/Loading.js";
+const _sfc_main = {
+  components: {
+    Loading
+  },
+  data() {
+    return {
+      typeOptions: [],
+      isDaySign: false,
+      top: 0,
+      signNum: 0,
+      integral: 0,
+      sign: [],
+      // 状态栏的高度
+      statusBarHeight: common_vendor.index.getStorageSync("menuInfo").statusBarHeight,
+      // tab切换
+      tags: [{ lable: "全部", value: 0 }, { lable: "获得", value: 1 }, { lable: "消耗", value: 2 }],
+      // 选中的tab
+      tabIndex: 0,
+      current: 0,
+      page: {
+        type: 0,
+        page: 1,
+        pageSize: 10
+      },
+      list: [],
+      loaded: false,
+      loading: false
+    };
+  },
+  onLoad(option) {
+    this.getDictByKey("sys_integral_log_type");
+    this.getUserSign();
+    this.getUserIntegralLogsList();
+  },
+  onReachBottom() {
+    !this.loading && this.getUserIntegralLogsList();
+  },
+  onPageScroll(e) {
+    if (e.scrollTop > 30) {
+      this.topFixed = true;
+    } else {
+      this.topFixed = false;
+    }
+  },
+  onPageScroll(e) {
+    this.top = e.scrollTop;
+  },
+  computed: {
+    // 计算属性的 getter
+    bg: function() {
+      return "rgba(255,142,60, " + this.top / 30 + ")";
+    }
+  },
+  methods: {
+    getDictByKey(key) {
+      var data = { key };
+      getDictByKey(data).then(
+        (res) => {
+          if (res.code == 200) {
+            this.typeOptions = res.data;
+          }
+        },
+        (err) => {
+        }
+      );
+    },
+    doSign() {
+      var data = {};
+      common_vendor.index.showLoading({
+        title: "正在加载中..."
+      });
+      doSign(data).then(
+        (res) => {
+          common_vendor.index.hideLoading();
+          if (res.code == 200) {
+            common_vendor.index.showToast({
+              icon: "success",
+              title: res.msg
+            });
+            this.list = [];
+            this.page.page = 1;
+            this.list = [];
+            this.loaded = false;
+            this.loading = false;
+            this.getUserIntegralLogsList();
+            this.getUserSign();
+          } else {
+            common_vendor.index.showToast({
+              icon: "none",
+              title: res.msg
+            });
+          }
+        },
+        (rej) => {
+        }
+      );
+    },
+    getUserSign() {
+      getUserSign().then(
+        (res) => {
+          if (res.code == 200) {
+            this.data = res.member;
+            this.signNum = res.signNum;
+            this.isDaySign = res.isDaySign;
+            this.integral = res.integral;
+            this.sign = JSON.parse(res.sign);
+          } else {
+            common_vendor.index.showToast({
+              icon: "none",
+              title: "请求失败"
+            });
+          }
+        },
+        (rej) => {
+        }
+      );
+    },
+    getUserIntegralLogsList() {
+      let that = this;
+      if (that.loaded == true || that.loading == true)
+        return;
+      that.loading = true;
+      common_vendor.index.showLoading({
+        title: "加载中..."
+      });
+      getUserIntegralLogsList(that.page).then(
+        (res) => {
+          that.loading = false;
+          that.loaded = res.data.list.length < that.page.pageSize;
+          that.page.page = that.page.page + 1;
+          that.list.push.apply(that.list, res.data.list);
+          common_vendor.index.hideLoading();
+        },
+        (err) => {
+          common_vendor.index.hideLoading();
+          common_vendor.index.showToast({
+            title: err.msg,
+            icon: "none",
+            duration: 2e3
+          });
+        }
+      );
+    },
+    // 返回上一页
+    back() {
+      common_vendor.index.navigateBack();
+    },
+    // tab选择
+    tabChange(item) {
+      console.log(item);
+      this.tabIndex = item.value;
+      this.page.type = this.tabIndex;
+      this.page.page = 1;
+      this.list = [];
+      this.loaded = false;
+      this.loading = false;
+      this.getUserIntegralLogsList();
+    }
+  }
+};
+if (!Array) {
+  const _component_Loading = common_vendor.resolveComponent("Loading");
+  _component_Loading();
+}
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+  return common_vendor.e({
+    a: $data.statusBarHeight,
+    b: common_vendor.o((...args) => $options.back && $options.back(...args)),
+    c: $options.bg,
+    d: $data.statusBarHeight,
+    e: common_vendor.t($data.integral),
+    f: common_vendor.t($data.signNum),
+    g: common_vendor.f($data.sign, (item, index, i0) => {
+      return common_vendor.e({
+        a: $data.signNum >= index + 1
+      }, $data.signNum >= index + 1 ? {} : {}, {
+        b: common_vendor.t(item.day),
+        c: index,
+        d: common_vendor.n($data.signNum >= index + 1 ? "item active" : "item")
+      });
+    }),
+    h: $data.isDaySign == false
+  }, $data.isDaySign == false ? {
+    i: common_vendor.o(($event) => $options.doSign())
+  } : {}, {
+    j: common_vendor.f($data.tags, (item, index, i0) => {
+      return {
+        a: common_vendor.t(item.lable),
+        b: $data.tabIndex == item.value,
+        c: index,
+        d: common_vendor.n($data.tabIndex == item.value ? "item active" : "item"),
+        e: common_vendor.o(($event) => $options.tabChange(item), index)
+      };
+    }),
+    k: common_vendor.f($data.list, (item, index, i0) => {
+      return common_vendor.e({
+        a: common_vendor.t(_ctx.$getDictLabelName($data.typeOptions, item.logType)),
+        b: common_vendor.t(item.createTime),
+        c: item.integral < 0
+      }, item.integral < 0 ? {
+        d: common_vendor.t(item.integral)
+      } : {
+        e: common_vendor.t(item.integral)
+      }, {
+        f: index
+      });
+    }),
+    l: common_vendor.p({
+      loaded: $data.loaded,
+      loading: $data.loading
+    })
+  });
+}
+const MiniProgramPage = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["render", _sfc_render]]);
+_sfc_main.__runtimeHooks = 1;
+wx.createPage(MiniProgramPage);

+ 9 - 0
unpackage/dist/dev/mp-weixin/pages_user/integral.json

@@ -0,0 +1,9 @@
+{
+  "navigationBarTitleText": "我的芳华币",
+  "enablePullDownRefresh": false,
+  "navigationBarBackgroundColor": "#ffffff",
+  "navigationBarTextStyle": "black",
+  "usingComponents": {
+    "loading": "../components/Loading"
+  }
+}

Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 0 - 0
unpackage/dist/dev/mp-weixin/pages_user/integral.wxml


+ 274 - 0
unpackage/dist/dev/mp-weixin/pages_user/integral.wxss

@@ -0,0 +1,274 @@
+/**
+ * 这里是uni-app内置的常用样式变量
+ *
+ * uni-app 官方扩展插件及插件市场(https://ext.dcloud.net.cn)上很多三方插件均使用了这些样式变量
+ * 如果你是插件开发者,建议你使用scss预处理,并在插件代码中直接使用这些变量(无需 import 这个文件),方便用户通过搭积木的方式开发整体风格一致的App
+ *
+ */
+/**
+ * 如果你是App开发者(插件使用者),你可以通过修改这些变量来定制自己的插件主题,实现自定义主题功能
+ *
+ * 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件
+ */
+/* 颜色变量 */
+/* 行为相关颜色 */
+/* 文字基本颜色 */
+/* 背景颜色 */
+/* 边框颜色 */
+/* 尺寸变量 */
+/* 文字尺寸 */
+/* 图片尺寸 */
+/* Border Radius */
+/* 水平间距 */
+/* 垂直间距 */
+/* 透明度 */
+/* 文章场景相关 */
+/*自定义主题色 */
+.fixed-top-box {
+  width: 100%;
+  position: fixed;
+  top: 0;
+  left: 0;
+  z-index: 1000;
+  transition: all 0.5s;
+}
+.top-cont {
+  width: 100%;
+  height: 654rpx;
+  position: relative;
+}
+.top-cont .bg {
+  width: 100%;
+  height: 100%;
+  position: absolute;
+  top: 0;
+  left: 0;
+  z-index: 1;
+}
+.top-cont .top-inner {
+  width: 100%;
+  height: 100%;
+  position: absolute;
+  top: 0;
+  left: 0;
+  z-index: 2;
+}
+.top-cont .top-inner .back-box {
+  height: 88rpx;
+  padding-left: 22rpx;
+  display: flex;
+  align-items: center;
+  justify-content: space-between;
+  padding: 0 20rpx;
+}
+.top-cont .top-inner .back-box image {
+  width: 40rpx;
+  height: 40rpx;
+}
+.top-cont .top-inner .back-box .title {
+  font-size: 36rpx;
+  font-family: PingFang SC;
+  font-weight: 500;
+  color: #FFFFFF;
+}
+.top-cont .top-inner .available-points {
+  margin-top: 140rpx;
+  display: flex;
+  flex-direction: column;
+  align-items: center;
+  justify-content: center;
+}
+.top-cont .top-inner .available-points .label {
+  font-size: 30rpx;
+  font-family: PingFang SC;
+  font-weight: bold;
+  color: #FFFFFF;
+  line-height: 1;
+}
+.top-cont .top-inner .available-points .num {
+  font-size: 80rpx;
+  font-family: Gilroy;
+  font-weight: 500;
+  color: #FFFFFF;
+  line-height: 1;
+  margin-top: 28rpx;
+}
+.top-cont .top-inner .singn-content {
+  padding: 0 20rpx;
+  margin-top: 50rpx;
+}
+.top-cont .top-inner .sign-in-box {
+  height: 380rpx;
+  background: #FFFFFF;
+  border-radius: 16rpx;
+}
+.top-cont .top-inner .sign-in-box .inner {
+  padding: 40rpx 30rpx;
+}
+.top-cont .top-inner .sign-in-box .inner .title-box {
+  font-size: 26rpx;
+  font-family: PingFang SC;
+  font-weight: 500;
+  color: #666666;
+  line-height: 1;
+}
+.top-cont .top-inner .sign-in-box .inner .title-box .num {
+  font-size: 32rpx;
+  font-family: PingFang SC;
+  font-weight: Bold;
+  color: #FF7511;
+  margin: 0 10rpx;
+  line-height: 1;
+}
+.top-cont .top-inner .sign-in-box .inner .sign-list {
+  display: flex;
+  align-items: center;
+  justify-content: space-between;
+  margin-top: 40rpx;
+}
+.top-cont .top-inner .sign-in-box .inner .sign-list .item {
+  display: flex;
+  justify-content: center;
+}
+.top-cont .top-inner .sign-in-box .inner .sign-list .item .right {
+  display: flex;
+  flex-direction: column;
+  align-items: center;
+  justify-content: center;
+}
+.top-cont .top-inner .sign-in-box .inner .sign-list .item .right image {
+  width: 44rpx;
+  height: 44rpx;
+  margin-bottom: 20rpx;
+}
+.top-cont .top-inner .sign-in-box .inner .sign-list .item .right .text {
+  font-size: 24rpx;
+  font-family: PingFang SC;
+  font-weight: 500;
+  color: #FF7511;
+  line-height: 1;
+  white-space: nowrap;
+}
+.top-cont .top-inner .sign-in-box .inner .sign-list .item .line {
+  width: 34rpx;
+  height: 4rpx;
+  background: #F6CDA7;
+  border-radius: 2rpx;
+  margin-top: 22rpx;
+}
+.top-cont .top-inner .sign-in-box .inner .sign-list .item:first-child .line {
+  display: none;
+}
+.top-cont .top-inner .sign-in-box .inner .sign-list .item.active .line {
+  background: #FF8E3C;
+}
+.top-cont .top-inner .sign-in-box .sign-btn-box {
+  padding: 0 14rpx;
+}
+.top-cont .top-inner .sign-in-box .sign-btn-box .btn {
+  width: 100%;
+  height: 88rpx;
+  box-shadow: 0px 0px 5px 2px rgba(0, 0, 0, 0.05);
+  background-color: #FF7511;
+  border-radius: 44rpx;
+  display: flex;
+  justify-content: center;
+  align-items: center;
+}
+.top-cont .top-inner .sign-in-box .sign-btn-box .btn image {
+  width: 32rpx;
+  height: 32rpx;
+}
+.top-cont .top-inner .sign-in-box .sign-btn-box .btn .text {
+  font-size: 30rpx;
+  font-family: PingFang SC;
+  font-weight: bold;
+  color: #FFFFFF;
+  line-height: 1;
+}
+.content {
+  margin-top: 20rpx;
+  padding: 0 20rpx 40rpx;
+}
+.content .points-cont {
+  background-color: #FFFFFF;
+  border-radius: 16rpx;
+}
+.content .points-cont .pub-tab-box {
+  padding: 0 80rpx;
+}
+.content .points-cont .pub-tab-box .tab-inner {
+  height: 88rpx;
+  line-height: 88rpx;
+  display: flex;
+  align-items: center;
+  justify-content: space-between;
+}
+.content .points-cont .pub-tab-box .item {
+  font-size: 28rpx;
+  white-space: nowrap;
+  line-height: 1;
+  font-family: PingFang SC;
+  font-weight: 500;
+  color: #666666;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+}
+.content .points-cont .pub-tab-box .item.active {
+  font-weight: bold;
+  color: #333333;
+}
+.content .points-cont .pub-tab-box .item .text {
+  position: relative;
+  z-index: 1;
+}
+.content .points-cont .pub-tab-box .item .tab-bg {
+  width: 72rpx;
+  height: 28rpx;
+  position: absolute;
+  top: 17rpx;
+  left: 50%;
+  transform: translateX(-36rpx);
+  z-index: -1;
+}
+.content .points-cont .point-list {
+  padding: 0 30rpx;
+}
+.content .points-cont .point-list .item {
+  padding: 30rpx 0;
+  display: flex;
+  align-items: center;
+  justify-content: space-between;
+  border-bottom: 1px solid #F0F0F0;
+}
+.content .points-cont .point-list .item:last-child {
+  border-bottom: none;
+}
+.content .points-cont .point-list .item .left .title {
+  font-size: 28rpx;
+  font-family: PingFang SC;
+  font-weight: 500;
+  color: #111111;
+  line-height: 1;
+}
+.content .points-cont .point-list .item .left .time {
+  font-size: 24rpx;
+  font-family: PingFang SC;
+  font-weight: 500;
+  color: #999999;
+  line-height: 1;
+  margin-top: 22rpx;
+}
+.content .points-cont .point-list .item .right .add {
+  font-size: 28rpx;
+  font-family: PingFang SC;
+  font-weight: 500;
+  color: #111111;
+}
+.content .points-cont .point-list .item .right .less {
+  font-size: 28rpx;
+  font-family: PingFang SC;
+  font-weight: 500;
+  color: #F56C6C;
+}

+ 188 - 0
unpackage/dist/dev/mp-weixin/pages_user/integralGoodsList.js

@@ -0,0 +1,188 @@
+"use strict";
+const common_vendor = require("../common/vendor.js");
+const _sfc_main = {
+  mixins: [MescrollMixin],
+  data() {
+    return {
+      integral: 0,
+      type: "0",
+      typeOptions: [],
+      tabIndex: 0,
+      tabs: [],
+      mescroll: null,
+      downOption: {
+        //下拉刷新
+        use: true,
+        auto: false
+        // 不自动加载 (mixin已处理第一个tab触发downCallback)
+      },
+      upOption: {
+        onScroll: false,
+        use: true,
+        // 是否启用上拉加载; 默认true
+        page: {
+          pae: 0,
+          // 当前页码,默认0,回调之前会加1,即callback(page)会从1开始
+          size: 10
+          // 每页数据的数量,默认10
+        },
+        noMoreSize: 10,
+        // 配置列表的总数量要大于等于5条才显示'-- END --'的提示
+        textNoMore: "已经到底了",
+        empty: {
+          icon: "https://cos.his.cdwjyyh.com/fs/20240423/cf4a86b913a04341bb44e34bb4d37aa2.png",
+          tip: "暂无数据"
+        }
+      },
+      dataList: []
+    };
+  },
+  onLoad() {
+    this.getDictByKey("sys_integral_goods_type");
+    this.getUserInfo();
+  },
+  methods: {
+    getUserInfo() {
+      getUserInfo().then(
+        (res) => {
+          if (res.code == 200) {
+            if (res.user != null) {
+              this.integral = res.user.integral;
+            }
+          } else {
+            common_vendor.index.showToast({
+              icon: "none",
+              title: "请求失败"
+            });
+          }
+        },
+        (rej) => {
+        }
+      );
+    },
+    navTo(url) {
+      common_vendor.index.navigateTo({
+        url
+      });
+    },
+    goIntegral() {
+      let pages = getCurrentPages();
+      let url = pages[pages.length - 2];
+      if (pages.length > 1 && url && url.route == "pages/user/integral/points") {
+        common_vendor.index.navigateBack();
+      } else {
+        common_vendor.index.navigateTo({
+          url: "/pages/user/integral/points"
+        });
+      }
+    },
+    getDictByKey(key) {
+      var data = { key };
+      var that = this;
+      getDictByKey(data).then(
+        (res) => {
+          if (res.code == 200) {
+            this.typeOptions = res.data;
+            this.typeOptions.forEach(function(item, index) {
+              var data2 = { name: item.dictLabel };
+              that.tabs.push(data2);
+            });
+            if (this.tabs.length > 0) {
+              this.tabIndex = 0;
+            }
+          }
+        },
+        (err) => {
+        }
+      );
+    },
+    tabChange(item) {
+      console.log(item.index);
+      this.type = this.typeOptions[item.index].dictValue;
+      this.mescroll.resetUpScroll();
+    },
+    mescrollInit(mescroll) {
+      this.mescroll = mescroll;
+    },
+    /*下拉刷新的回调 */
+    downCallback(mescroll) {
+      mescroll.resetUpScroll();
+    },
+    upCallback(page) {
+      var that = this;
+      var data = {
+        pageNum: page.num,
+        pageSize: page.size
+      };
+      if (this.type != null) {
+        data.goodsType = this.type;
+      }
+      getIntegralGoodsList(data).then((res) => {
+        if (res.code == 200) {
+          if (page.num == 1) {
+            that.dataList = res.data.list;
+          } else {
+            that.dataList = that.dataList.concat(res.data.list);
+          }
+          that.mescroll.endBySize(res.data.list.length, res.data.total);
+        } else {
+          common_vendor.index.showToast({
+            icon: "none",
+            title: "请求失败"
+          });
+          that.dataList = null;
+          that.mescroll.endErr();
+        }
+      });
+    }
+  }
+};
+if (!Array) {
+  const _easycom_u_tabs2 = common_vendor.resolveComponent("u-tabs");
+  const _easycom_u_sticky2 = common_vendor.resolveComponent("u-sticky");
+  const _component_mescroll_body = common_vendor.resolveComponent("mescroll-body");
+  (_easycom_u_tabs2 + _easycom_u_sticky2 + _component_mescroll_body)();
+}
+const _easycom_u_tabs = () => "../uni_modules/uview-plus/components/u-tabs/u-tabs.js";
+const _easycom_u_sticky = () => "../uni_modules/uview-plus/components/u-sticky/u-sticky.js";
+if (!Math) {
+  (_easycom_u_tabs + _easycom_u_sticky)();
+}
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+  return common_vendor.e({
+    a: common_vendor.t($data.integral),
+    b: common_vendor.o((...args) => $options.goIntegral && $options.goIntegral(...args)),
+    c: common_vendor.o(($event) => $options.navTo("/pages/user/integral/integralLogsList")),
+    d: common_vendor.o(($event) => $options.navTo("/pages/user/integral/integralOrderList")),
+    e: $data.tabs.length > 0
+  }, $data.tabs.length > 0 ? {
+    f: common_vendor.o($options.tabChange),
+    g: common_vendor.p({
+      current: $data.tabIndex,
+      scrollable: true,
+      list: $data.tabs,
+      lineColor: "#FF5C03"
+    })
+  } : {}, {
+    h: common_vendor.f($data.dataList, (item, index, i0) => {
+      return {
+        a: item.imgUrl,
+        b: common_vendor.t(item.goodsName),
+        c: common_vendor.t(item.integral),
+        d: common_vendor.t(item.otPrice.toFixed(2)),
+        e: common_vendor.o(($event) => $options.navTo("/pages/user/integral/integralGoodsDetails?goodsId=" + item.goodsId))
+      };
+    }),
+    i: common_vendor.sr("mescrollRef", "a55124e7-2"),
+    j: common_vendor.o($options.mescrollInit),
+    k: common_vendor.o($options.downCallback),
+    l: common_vendor.o($options.upCallback),
+    m: common_vendor.p({
+      bottom: "0",
+      down: $data.downOption,
+      up: $data.upOption
+    })
+  });
+}
+const MiniProgramPage = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["render", _sfc_render], ["__scopeId", "data-v-a55124e7"]]);
+wx.createPage(MiniProgramPage);

+ 10 - 0
unpackage/dist/dev/mp-weixin/pages_user/integralGoodsList.json

@@ -0,0 +1,10 @@
+{
+  "navigationBarTitleText": "芳华币商城",
+  "enablePullDownRefresh": false,
+  "navigationBarBackgroundColor": "#ffffff",
+  "navigationBarTextStyle": "black",
+  "usingComponents": {
+    "u-tabs": "../uni_modules/uview-plus/components/u-tabs/u-tabs",
+    "u-sticky": "../uni_modules/uview-plus/components/u-sticky/u-sticky"
+  }
+}

+ 1 - 0
unpackage/dist/dev/mp-weixin/pages_user/integralGoodsList.wxml

@@ -0,0 +1 @@
+<view class="content data-v-a55124e7"><view class="cont-box data-v-a55124e7"><u-sticky class="data-v-a55124e7" u-s="{{['d']}}" u-i="a55124e7-0" bind:__l="__l"><view class="top-box data-v-a55124e7"><view class="my-integral data-v-a55124e7"><view class="left data-v-a55124e7"><view class="label data-v-a55124e7">我的芳华币</view><view class="data-v-a55124e7" style="margin-top:30rpx;display:flex;align-items:baseline"><view class="integral data-v-a55124e7">{{a}}</view><view class="integralbtn data-v-a55124e7" bindtap="{{b}}">获取芳华币</view></view></view><view class="btn-box data-v-a55124e7"><view class="btn data-v-a55124e7" bindtap="{{c}}">获得记录</view><view class="btn data-v-a55124e7" bindtap="{{d}}">兑换记录</view></view></view><view wx:if="{{e}}" class="tabs data-v-a55124e7"><u-tabs wx:if="{{g}}" class="data-v-a55124e7" bindchange="{{f}}" u-i="a55124e7-1,a55124e7-0" bind:__l="__l" u-p="{{g}}"></u-tabs></view></view></u-sticky><mescroll-body wx:if="{{m}}" class="r data-v-a55124e7" u-s="{{['d']}}" u-r="mescrollRef" bindinit="{{j}}" binddown="{{k}}" bindup="{{l}}" u-i="a55124e7-2" bind:__l="__l" u-p="{{m}}"><view class="integral-box data-v-a55124e7"><view wx:for="{{h}}" wx:for-item="item" class="item data-v-a55124e7" bindtap="{{item.e}}"><view class="top data-v-a55124e7"><image class="data-v-a55124e7" src="{{item.a}}"></image></view><view class="bottom data-v-a55124e7"><view class="title ellipsis2 data-v-a55124e7">{{item.b}}</view><view class="price-box data-v-a55124e7"><view class="price data-v-a55124e7">{{item.c}}芳华币</view><view class="count data-v-a55124e7">价值:{{item.d}}元</view></view></view></view></view></mescroll-body></view></view>

+ 144 - 0
unpackage/dist/dev/mp-weixin/pages_user/integralGoodsList.wxss

@@ -0,0 +1,144 @@
+/**
+ * 这里是uni-app内置的常用样式变量
+ *
+ * uni-app 官方扩展插件及插件市场(https://ext.dcloud.net.cn)上很多三方插件均使用了这些样式变量
+ * 如果你是插件开发者,建议你使用scss预处理,并在插件代码中直接使用这些变量(无需 import 这个文件),方便用户通过搭积木的方式开发整体风格一致的App
+ *
+ */
+/**
+ * 如果你是App开发者(插件使用者),你可以通过修改这些变量来定制自己的插件主题,实现自定义主题功能
+ *
+ * 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件
+ */
+/* 颜色变量 */
+/* 行为相关颜色 */
+/* 文字基本颜色 */
+/* 背景颜色 */
+/* 边框颜色 */
+/* 尺寸变量 */
+/* 文字尺寸 */
+/* 图片尺寸 */
+/* Border Radius */
+/* 水平间距 */
+/* 垂直间距 */
+/* 透明度 */
+/* 文章场景相关 */
+/*自定义主题色 */
+page.data-v-a55124e7 {
+  height: 100%;
+  background-color: #f5f5f5;
+}
+.content.data-v-a55124e7 {
+  height: 100%;
+}
+.content .cont-box .top-box.data-v-a55124e7 {
+  padding: 30rpx 30rpx 0 30rpx;
+  width: 100%;
+  background-color: #f5f5f5;
+}
+.content .cont-box .top-box .my-integral.data-v-a55124e7 {
+  height: 200rpx;
+  box-shadow: 0px 0px 5px 2px rgba(0, 0, 0, 0.05);
+  background: linear-gradient(#FF5C03, #E2C99E);
+  border-radius: 30rpx;
+  display: flex;
+  align-items: flex-start;
+  justify-content: space-between;
+  padding: 30rpx;
+}
+.content .cont-box .top-box .my-integral .integralbtn.data-v-a55124e7 {
+  font-size: 24rpx;
+  font-family: PingFang SC;
+  color: #fff;
+  margin-left: 16rpx;
+  text-decoration: underline;
+}
+.content .cont-box .top-box .my-integral .btn.data-v-a55124e7 {
+  margin-bottom: 30rpx;
+  background-color: #fff;
+  border-radius: 30rpx;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  padding: 10rpx 15rpx;
+  font-size: 20rpx;
+  font-family: PingFang SC;
+  color: #FF5C03;
+}
+.content .cont-box .top-box .my-integral .left .label.data-v-a55124e7 {
+  font-size: 28rpx;
+  font-family: PingFang SC;
+  color: #fff;
+}
+.content .cont-box .top-box .my-integral .left .integral.data-v-a55124e7 {
+  font-weight: bold;
+  font-size: 40rpx;
+  font-family: PingFang SC;
+  color: #fff;
+}
+.content .cont-box .top-box .my-integral .btn-box.data-v-a55124e7 {
+  display: flex;
+  flex-direction: column;
+  align-items: flex-start;
+  justify-content: flex-start;
+}
+.content .cont-box .top-box .tabs.data-v-a55124e7 {
+  height: 88rpx;
+}
+.content .cont-box .integral-box.data-v-a55124e7 {
+  padding: 0 30rpx 30rpx 30rpx;
+  display: flex;
+  align-items: flex-start;
+  justify-content: flex-start;
+  flex-wrap: wrap;
+}
+.content .cont-box .integral-box .item.data-v-a55124e7 {
+  box-shadow: 0px 0px 5px 2px rgba(0, 0, 0, 0.05);
+  background-color: #fff;
+  width: calc(50% - 20rpx);
+  border-radius: 15rpx;
+  margin: 10rpx;
+  display: flex;
+  flex-direction: column;
+  align-items: flex-start;
+  justify-content: flex-start;
+}
+.content .cont-box .integral-box .item .top.data-v-a55124e7 {
+  width: 100%;
+  height: 300rpx;
+}
+.content .cont-box .integral-box .item .top image.data-v-a55124e7 {
+  border-radius: 15rpx 15rpx 0rpx 0rpx;
+  width: 100%;
+  height: 300rpx;
+}
+.content .cont-box .integral-box .item .bottom.data-v-a55124e7 {
+  width: 100%;
+  padding: 15rpx;
+}
+.content .cont-box .integral-box .item .bottom .title.data-v-a55124e7 {
+  font-weight: bold;
+  font-size: 28rpx;
+  font-family: PingFang SC;
+  color: #111111;
+}
+.content .cont-box .integral-box .item .bottom .price-box.data-v-a55124e7 {
+  margin-top: 10rpx;
+  display: flex;
+  align-items: center;
+  justify-content: space-between;
+  width: 100%;
+}
+.content .cont-box .integral-box .item .bottom .price-box .price.data-v-a55124e7 {
+  padding: 5rpx 10rpx;
+  background-color: #FF5C03;
+  border-radius: 30rpx;
+  font-size: 20rpx;
+  font-family: PingFang SC;
+  color: #ffffff;
+}
+.content .cont-box .integral-box .item .bottom .price-box .count.data-v-a55124e7 {
+  font-size: 24rpx;
+  font-family: PingFang SC;
+  color: #333333;
+}

+ 1 - 1
unpackage/dist/dev/mp-weixin/project.config.json

@@ -13,7 +13,7 @@
   },
   "compileType": "miniprogram",
   "libVersion": "3.4.2",
-  "appid": "wx29d26f63f836be7f",
+  "appid": "wxd70f99287830cb51",
   "projectname": "签约",
   "condition": {
     "search": {

BIN
unpackage/dist/dev/mp-weixin/static/images/hongbao.png


+ 37 - 0
unpackage/dist/dev/mp-weixin/uni_modules/uview-plus/components/u-sticky/props.js

@@ -0,0 +1,37 @@
+"use strict";
+const uni_modules_uviewPlus_libs_config_props = require("../../libs/config/props.js");
+const props = {
+  props: {
+    // 吸顶容器到顶部某个距离的时候,进行吸顶,在H5平台,NavigationBar为44px
+    offsetTop: {
+      type: [String, Number],
+      default: () => uni_modules_uviewPlus_libs_config_props.defProps.sticky.offsetTop
+    },
+    // 自定义导航栏的高度
+    customNavHeight: {
+      type: [String, Number],
+      default: () => uni_modules_uviewPlus_libs_config_props.defProps.sticky.customNavHeight
+    },
+    // 是否开启吸顶功能
+    disabled: {
+      type: Boolean,
+      default: () => uni_modules_uviewPlus_libs_config_props.defProps.sticky.disabled
+    },
+    // 吸顶区域的背景颜色
+    bgColor: {
+      type: String,
+      default: () => uni_modules_uviewPlus_libs_config_props.defProps.sticky.bgColor
+    },
+    // z-index值
+    zIndex: {
+      type: [String, Number],
+      default: () => uni_modules_uviewPlus_libs_config_props.defProps.sticky.zIndex
+    },
+    // 列表中的索引值
+    index: {
+      type: [String, Number],
+      default: () => uni_modules_uviewPlus_libs_config_props.defProps.sticky.index
+    }
+  }
+};
+exports.props = props;

+ 141 - 0
unpackage/dist/dev/mp-weixin/uni_modules/uview-plus/components/u-sticky/u-sticky.js

@@ -0,0 +1,141 @@
+"use strict";
+const common_vendor = require("../../../../common/vendor.js");
+const uni_modules_uviewPlus_components_uSticky_props = require("./props.js");
+const uni_modules_uviewPlus_libs_mixin_mpMixin = require("../../libs/mixin/mpMixin.js");
+const uni_modules_uviewPlus_libs_mixin_mixin = require("../../libs/mixin/mixin.js");
+const uni_modules_uviewPlus_libs_function_index = require("../../libs/function/index.js");
+const uni_modules_uviewPlus_libs_config_zIndex = require("../../libs/config/zIndex.js");
+const _sfc_main = {
+  name: "u-sticky",
+  mixins: [uni_modules_uviewPlus_libs_mixin_mpMixin.mpMixin, uni_modules_uviewPlus_libs_mixin_mixin.mixin, uni_modules_uviewPlus_components_uSticky_props.props],
+  data() {
+    return {
+      cssSticky: false,
+      // 是否使用css的sticky实现
+      stickyTop: 0,
+      // 吸顶的top值,因为可能受自定义导航栏影响,最终的吸顶值非offsetTop值
+      elId: uni_modules_uviewPlus_libs_function_index.guid(),
+      left: 0,
+      // js模式时,吸顶的内容因为处于postition: fixed模式,为了和原来保持一致的样式,需要记录并重新设置它的left,height,width属性
+      width: "auto",
+      height: "auto",
+      fixed: false
+      // js模式时,是否处于吸顶模式
+    };
+  },
+  computed: {
+    style() {
+      const style = {};
+      if (!this.disabled) {
+        if (this.cssSticky) {
+          style.position = "sticky";
+          style.zIndex = this.uZindex;
+          style.top = uni_modules_uviewPlus_libs_function_index.addUnit(this.stickyTop);
+        } else {
+          style.height = this.fixed ? this.height + "px" : "auto";
+        }
+      } else {
+        style.position = "static";
+      }
+      style.backgroundColor = this.bgColor;
+      return uni_modules_uviewPlus_libs_function_index.deepMerge(uni_modules_uviewPlus_libs_function_index.addStyle(this.customStyle), style);
+    },
+    // 吸顶内容的样式
+    stickyContent() {
+      const style = {};
+      if (!this.cssSticky) {
+        style.position = this.fixed ? "fixed" : "static";
+        style.top = this.stickyTop + "px";
+        style.left = this.left + "px";
+        style.width = this.width == "auto" ? "auto" : this.width + "px";
+        style.zIndex = this.uZindex;
+      }
+      return style;
+    },
+    uZindex() {
+      return this.zIndex ? this.zIndex : uni_modules_uviewPlus_libs_config_zIndex.zIndex.sticky;
+    }
+  },
+  mounted() {
+    this.init();
+  },
+  methods: {
+    init() {
+      this.getStickyTop();
+      this.checkSupportCssSticky();
+      if (!this.cssSticky) {
+        !this.disabled && this.initObserveContent();
+      }
+    },
+    initObserveContent() {
+      this.$uGetRect("#" + this.elId).then((res) => {
+        this.height = res.height;
+        this.left = res.left;
+        this.width = res.width;
+        this.$nextTick(() => {
+          this.observeContent();
+        });
+      });
+    },
+    observeContent() {
+      this.disconnectObserver("contentObserver");
+      const contentObserver = common_vendor.index.createIntersectionObserver({
+        // 检测的区间范围
+        thresholds: [0.95, 0.98, 1]
+      });
+      contentObserver.relativeToViewport({
+        top: -this.stickyTop
+      });
+      contentObserver.observe(`#${this.elId}`, (res) => {
+        this.setFixed(res.boundingClientRect.top);
+      });
+      this.contentObserver = contentObserver;
+    },
+    setFixed(top) {
+      const fixed = top <= this.stickyTop;
+      this.fixed = fixed;
+    },
+    disconnectObserver(observerName) {
+      const observer = this[observerName];
+      observer && observer.disconnect();
+    },
+    getStickyTop() {
+      this.stickyTop = uni_modules_uviewPlus_libs_function_index.getPx(this.offsetTop) + uni_modules_uviewPlus_libs_function_index.getPx(this.customNavHeight);
+    },
+    async checkSupportCssSticky() {
+      if (uni_modules_uviewPlus_libs_function_index.os() === "android" && Number(uni_modules_uviewPlus_libs_function_index.sys().system) > 8) {
+        this.cssSticky = true;
+      }
+      this.cssSticky = await this.checkComputedStyle();
+      if (uni_modules_uviewPlus_libs_function_index.os() === "ios") {
+        this.cssSticky = true;
+      }
+    },
+    // 在APP和微信小程序上,通过uni.createSelectorQuery可以判断是否支持css sticky
+    checkComputedStyle() {
+      return new Promise((resolve) => {
+        common_vendor.index.createSelectorQuery().in(this).select(".u-sticky").fields({
+          computedStyle: ["position"]
+        }).exec((e) => {
+          resolve("sticky" === e[0].position);
+        });
+      });
+    },
+    // H5通过创建元素的形式嗅探是否支持css sticky
+    // 判断浏览器是否支持sticky属性
+    checkCssStickyForH5() {
+    }
+  },
+  beforeUnmount() {
+    this.disconnectObserver("contentObserver");
+  }
+};
+function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
+  return {
+    a: common_vendor.s($options.stickyContent),
+    b: $data.elId,
+    c: common_vendor.s($options.style)
+  };
+}
+const Component = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["render", _sfc_render], ["__scopeId", "data-v-8b303089"]]);
+wx.createComponent(Component);

+ 4 - 0
unpackage/dist/dev/mp-weixin/uni_modules/uview-plus/components/u-sticky/u-sticky.json

@@ -0,0 +1,4 @@
+{
+  "component": true,
+  "usingComponents": {}
+}

+ 1 - 0
unpackage/dist/dev/mp-weixin/uni_modules/uview-plus/components/u-sticky/u-sticky.wxml

@@ -0,0 +1 @@
+<view class="u-sticky data-v-8b303089" id="{{b}}" style="{{c}}"><view style="{{a}}" class="u-sticky__content data-v-8b303089"><slot/></view></view>

+ 30 - 0
unpackage/dist/dev/mp-weixin/uni_modules/uview-plus/components/u-sticky/u-sticky.wxss

@@ -0,0 +1,30 @@
+/**
+ * 这里是uni-app内置的常用样式变量
+ *
+ * uni-app 官方扩展插件及插件市场(https://ext.dcloud.net.cn)上很多三方插件均使用了这些样式变量
+ * 如果你是插件开发者,建议你使用scss预处理,并在插件代码中直接使用这些变量(无需 import 这个文件),方便用户通过搭积木的方式开发整体风格一致的App
+ *
+ */
+/**
+ * 如果你是App开发者(插件使用者),你可以通过修改这些变量来定制自己的插件主题,实现自定义主题功能
+ *
+ * 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件
+ */
+/* 颜色变量 */
+/* 行为相关颜色 */
+/* 文字基本颜色 */
+/* 背景颜色 */
+/* 边框颜色 */
+/* 尺寸变量 */
+/* 文字尺寸 */
+/* 图片尺寸 */
+/* Border Radius */
+/* 水平间距 */
+/* 垂直间距 */
+/* 透明度 */
+/* 文章场景相关 */
+/*自定义主题色 */
+.u-sticky.data-v-8b303089 {
+  position: -webkit-sticky;
+  position: sticky;
+}

+ 2 - 0
unpackage/dist/dev/mp-weixin/uni_modules/uview-plus/libs/function/index.js

@@ -496,7 +496,9 @@ exports.deepMerge = deepMerge;
 exports.error = error;
 exports.formValidate = formValidate;
 exports.getPx = getPx;
+exports.guid = guid;
 exports.index = index;
+exports.os = os;
 exports.page = page;
 exports.priceFormat = priceFormat;
 exports.queryParams = queryParams;

Niektoré súbory nie sú zobrazené, pretože je v týchto rozdielových dátach zmenené mnoho súborov