فهرست منبع

搜索结果页优化;保险相关部分修改

学习?学个屁 3 روز پیش
والد
کامیت
6816c85227

+ 48 - 9
src/pages/index/eventsDetail/index.vue

@@ -34,13 +34,13 @@
 		<view class="d-timedown-card">
 			<view class="d-title">距离报名结束</view>
 			<view class="timedown">
-				<view class="time">{{ days||'--' }}</view>
+				<view class="time">{{ days || '--' }}</view>
 				<view class="unit">天</view>
-				<view class="time">{{ hours||'--' }}</view>
+				<view class="time">{{ hours || '--' }}</view>
 				<view class="unit">:</view>
-				<view class="time">{{ minutes||'--' }}</view>
+				<view class="time">{{ minutes || '--' }}</view>
 				<view class="unit">:</view>
-				<view class="time">{{ seconds||'--' }}</view>
+				<view class="time">{{ seconds || '--' }}</view>
 			</view>
 			<view class="timedown-tips">
 				<view class="tips-icon">!</view>
@@ -146,7 +146,8 @@
 	</view>
 	<view style="height: 170rpx;"></view>
 	<view class="d-footer">
-		<button hover-class="hover-style" :style="{backgroundColor:eventsInfoObj.isEntry==1?'#AAA':''}" @click="footerEnlists">马上报名</button>
+		<button hover-class="hover-style" :style="{ backgroundColor: eventsInfoObj.isEntry == 1 ? '#AAA' : '' }"
+			@click="footerEnlists">马上报名</button>
 	</view>
 </template>
 
@@ -155,7 +156,7 @@ import { ref, onMounted, computed, onUnmounted, getCurrentInstance, nextTick } f
 import { http } from '@/utils/http';
 import { useCacheStore } from '@/stores/cache';
 import zzxNavbar from '@/components/zzx-navbar/zzx-navbar.vue';
-import { RouterUtils,TipsUtils } from '@/utils/util';
+import { RouterUtils, TipsUtils } from '@/utils/util';
 import { onLoad, onPageScroll } from '@dcloudio/uni-app';
 const statusBarHeight = ref(0);
 const cache = useCacheStore()
@@ -172,6 +173,7 @@ const selectList = ref(['赛程安排', '图文说明']);
 const instance = getCurrentInstance();
 onLoad((option) => {
 	formData.value.id = option.id;
+	get_location()
 })
 onMounted(() => {
 	get_eventsInfo()
@@ -339,9 +341,46 @@ const open_phone = () => {
 	});
 }
 
-const footerEnlists=()=>{
-	if (eventsInfoObj.value.isEntry==1) return TipsUtils.tips_toast('报名已结束');
-RouterUtils.to_page(`/pages/index/eventsRegister/index?id=${eventsInfoObj.value.id}`)
+const footerEnlists = () => {
+	if (eventsInfoObj.value.isEntry == 1) return TipsUtils.tips_toast('报名已结束');
+	RouterUtils.to_page(`/pages/index/eventsRegister/index?id=${eventsInfoObj.value.id}`)
+}
+
+const get_location = () => {
+	uni.authorize({
+		scope: 'scope.userLocation',
+		success() {
+			uni.getLocation({
+				type: 'gcj02',
+				success: function (res) {
+					uni.hideLoading()
+					// cache.set('LON', res.longitude)
+					// cache.set('LAT', res.latitude)
+				},
+				fail: function (err) {
+					if (err.errMsg === 'getFuzzyLocation:fail system permission denied') {
+						TipsUtils.tips_alert('系统定位未开启,请开启定位以便提供更好服务', false)
+					} else if (err.errMsg === 'getFuzzyLocation:fail:ERROR_NOCELL&WIFI_LOCATIONSWITCHOFF' ||
+						err.errMsg === 'getFuzzyLocation:fail system permission denied' ||
+						err.errMsg === 'getFuzzyLocation:fail:system permission denied' || err.errMsg === 'getFuzzyLocation:fail auth deny') {
+						showAuthGuide()
+					}
+					console.log(err, '错误信息')
+				}
+			});
+		},
+		fail: (err) => {
+			showAuthGuide()
+		}
+	});
+}
+
+// 引导操作
+const showAuthGuide = async () => {
+	let res: any = await TipsUtils.tips_alert('授权定位以提供更好服务', true)
+	if (res.confirm) {
+		uni.openSetting()
+	}
 }
 </script>
 

+ 79 - 36
src/pages/index/eventsRegister/index.vue

@@ -6,7 +6,7 @@
 			<view class="r-list-box">
 				<view class="r-events"
 					v-for="(item, index) in (selectTabs == 0 ? individualEvents[0].gamePriceRulesVOList : teamsEvents[0].gamePriceRulesVOList)"
-					:key="index" @click="toggleSelect(item,index)" :class="{ 'selected-item':selectEvents == index}">
+					:key="index" @click="toggleSelect(item, index)" :class="{ 'selected-item': selectEvents == index }">
 					<view class="events-type">
 						<view class="r-check">
 							<zzx-icon :name="selectEvents == index ? 'selected' : 'unchecked'" size="14"></zzx-icon>
@@ -16,7 +16,7 @@
 					<view class="events-price">¥{{ item.sellingPrice }}/人</view>
 				</view>
 			</view>
-			<view class="r-team-tips" v-if="peopleNum&&selectTabs==1">该团队赛需{{peopleNum}}位一组报名参赛</view>
+			<view class="r-team-tips" v-if="peopleNum && selectTabs == 1">该团队赛需{{ peopleNum }}位一组报名参赛</view>
 			<view class="r-shoping">
 				<view class="shoping-title">购买数量</view>
 				<view class="shoping-num">
@@ -30,7 +30,7 @@
 		</view>
 		<view class="g-userinfo-card">
 			<view class="r-user">
-				<view class="user-title">用户信息<text>(需选择{{ peopleNum||'--' }}位用户)</text></view>
+				<view class="user-title">用户信息<text>(需选择{{ peopleNum || '--' }}位用户)</text></view>
 				<view class="invite">
 					<zzx-icon name="wechat" size="16"></zzx-icon>
 					<view style="margin-bottom: 8rpx;">邀请微信好友</view>
@@ -74,19 +74,19 @@
 			</view>
 		</view>
 		<view class="r-insurance">
-			<view class="insurance-title">
-				<view class="title">参赛意外险</view>
-				<view class="r-check">
-					<view style="margin-bottom: 8rpx;">查看详情</view>
-					<zzx-icon name="ashRight" size="12"></zzx-icon>
-				</view>
+			<view class="r-image-box">
+				<image src="https://img.keaitupian.cn/newupload/08/1629449018344288.jpg" mode=""></image>
 			</view>
-			<view class="r-insurance-detail" @click="select_insurance = !select_insurance">
-				<view class="detail-text">
-					¥3/人×1份(意外事故10万,社保内医疗1万)
+			<view class="r-insurance-title">
+				<view class="r-insurance-name">
+					<view class="r-name">运动无忧保</view>
+					<view class="r-tags">不支持退款</view>
 				</view>
-				<view class="detail-icon">
-					<zzx-icon :name="select_insurance ? 'selected' : 'unchecked'" size="14"></zzx-icon>
+				<view class="r-insurance-desc">意外身故、残疾10万;意外医疗1万;意外补充医疗1万;</view>
+				<view class="r-insurance-type">保险公司:中国人保</view>
+				<view class="r-insurance-price">
+					<view class="r-price">¥2/天·人</view>
+					<view class="r-insurance-btn">去投保</view>
 				</view>
 			</view>
 		</view>
@@ -123,8 +123,8 @@ onMounted(() => {
 })
 // 切换选中状态
 const selectEvents = ref()
-const peopleNum=ref()
-const toggleSelect = (item:any,index: number) => {
+const peopleNum = ref()
+const toggleSelect = (item: any, index: number) => {
 	peopleNum.value = item.peopleNum
 	selectEvents.value = index;
 };
@@ -207,7 +207,8 @@ const get_eventsInfoDetail = () => {
 			}
 		}
 	}
-	.r-team-tips{
+
+	.r-team-tips {
 		font-size: 24rpx;
 		color: #999999;
 		margin-top: 20rpx;
@@ -261,6 +262,7 @@ const get_eventsInfoDetail = () => {
 		display: flex;
 		align-items: center;
 		justify-content: space-between;
+		margin-bottom: 20rpx;
 
 		.user-title {
 			font-weight: bold;
@@ -400,37 +402,78 @@ const get_eventsInfoDetail = () => {
 	padding: 20rpx;
 	background: #FFFFFF;
 	border-radius: 32rpx;
+	display: flex;
+	align-items: center;
+	justify-content: space-between;
+	gap: 20rpx;
 
-	.insurance-title {
-		display: flex;
-		align-items: center;
-		justify-content: space-between;
-
-		.title {
-			font-weight: bold;
-			font-size: 28rpx;
-			color: #222222;
+	.r-image-box {
+		&>image {
+			width: 200rpx;
+			height: 200rpx;
+			border-radius: 32rpx;
 		}
+	}
 
-		.r-check {
+	.r-insurance-title {
+		.r-insurance-name {
 			display: flex;
 			align-items: center;
-			gap: 10rpx;
+			gap: 16rpx;
+
+			.r-name {
+				font-weight: 800;
+				font-size: 28rpx;
+				color: #222222;
+			}
+
+			.r-tags {
+				width: 136rpx;
+				height: 36rpx;
+				background: #FDD143;
+				border-radius: 8rpx;
+				font-size: 22rpx;
+				color: #222222;
+				text-align: center;
+				line-height: 36rpx;
+			}
+		}
+
+		.r-insurance-desc {
+			margin-top: 10rpx;
 			font-size: 24rpx;
 			color: #AAAAAA;
 		}
-	}
-
-	.r-insurance-detail {
-		margin-top: 20rpx;
-		display: flex;
-		align-items: center;
-		justify-content: space-between;
 
-		.detail-text {
+		.r-insurance-type {
+			margin-top: 10rpx;
 			font-size: 24rpx;
 			color: #AAAAAA;
 		}
+
+		.r-insurance-price {
+			display: flex;
+			align-items: center;
+			justify-content: space-between;
+
+			.r-price {
+				font-weight: bold;
+				font-size: 28rpx;
+				color: #FB5B5B;
+			}
+
+			.r-insurance-btn {
+				width: 200rpx;
+				height: 68rpx;
+				background: #C8FF0C;
+				border-radius: 60rpx;
+				font-weight: bold;
+				font-size: 28rpx;
+				color: #222222;
+				text-align: center;
+				line-height: 68rpx;
+			}
+		}
 	}
 }
 

+ 1 - 0
src/pages/index/gymDetail/index.vue

@@ -138,6 +138,7 @@
 						</view> -->
 					</view>
 				</view>
+			<view class="not-data" v-if="detailInfo.placeInfoMsgVO.length<1">暂无场地数据</view>
 			</view>
 		</view>
 		<view class="course-card" id="notice">

+ 2 - 2
src/pages/index/index.vue

@@ -183,10 +183,9 @@
 </template>
 
 <script setup lang="ts">
-	import zzxNavbar from '@/components/zzx-navbar/zzx-navbar.vue';
 	import zsLoading from '@/components/zzx-loading/zzx-loading.vue'
 	import { ref, onMounted, computed } from 'vue'
-	import { onShow,onLoad, onPageScroll, onPullDownRefresh } from '@dcloudio/uni-app';
+	import { onLoad, onPageScroll, onPullDownRefresh } from '@dcloudio/uni-app';
 	import { RouterUtils, TipsUtils } from '@/utils/util';
 	import { http } from '@/utils/http'
 	import { useCacheStore } from '@/stores/cache'
@@ -308,6 +307,7 @@
 			uni.openSetting()
 		}
 	}
+	
 	// 手动选择
 	const addressName = ref('选择定位')
 	const openSellocation = () => {

+ 86 - 87
src/pages/index/searchPage/components/events.vue

@@ -1,5 +1,5 @@
 <template>
-	<view class="e-card-list" v-for="item in listData" :key="item.id">
+	<view class="e-card-list" v-for="item in listData" :key="item.id" @click="RouterUtils.to_page(`/pages/index/eventsDetail/index?id=${item.id}`)">
 		<view class="e-events-info">
 			<view class="e-picture">
 				<image class="pic" :src="item.cover" mode=""></image>
@@ -7,25 +7,25 @@
 					<image src="/src/static/events-icon1.png" mode="widthFix"></image>
 					<view class="text">
 						<!-- type(0:个人;1:团队;2:个人/团队) -->
-						<text v-if="item.type==0">个人</text>
-						<text v-else-if="item.type==1">团队</text>
+						<text v-if="item.type == 0">个人</text>
+						<text v-else-if="item.type == 1">团队</text>
 						<text v-else>个人/团队</text>
 					</view>
 				</view>
 			</view>
 			<view class="e-info">
-				<view class="e-title">{{item.name}}</view>
+				<view class="e-title">{{ item.name }}</view>
 				<view class="e-address">
-					{{item.placeName}} <text>|</text> {{item.km}}km
+					{{ item.placeName }} <text>|</text> {{ item.km }}km
 				</view>
 				<view class="e-time">
 					<zzx-icon name="clock" size="12"></zzx-icon>
-					<text>{{DateUtils.formatDateToMMDD(item.startTime)}}-{{DateUtils.formatDateToMMDD(item.endTime)}}</text>
+					<text>{{ DateUtils.formatDateToMMDD(item.startTime) }}-{{ DateUtils.formatDateToMMDD(item.endTime) }}</text>
 				</view>
 			</view>
 		</view>
 		<view class="e-price">
-			<view class="price"><text>¥</text>{{item.sellingPrice}}起</view>
+			<view class="price"><text>¥</text>{{ item.sellingPrice }} <text class="mini-text"></text></view>
 			<view class="entry" @click="RouterUtils.to_page('/pages/index/eventsDetail/index')">
 				<image v-if="item.registrationOpen" src="/src/static/events-icon2.png" mode="widthFix"></image>
 				<image v-else src="/src/static/end-entry.png" mode="widthFix"></image>
@@ -35,108 +35,107 @@
 </template>
 
 <script lang="ts" setup>
-	import { DateUtils } from '@/utils/util'
-	interface Props {
-		listData ?: any;
-	}
-	const props = withDefaults(defineProps<Props>(), {
-		listData: []
-	});
+import { DateUtils,RouterUtils } from '@/utils/util'
+interface Props {
+	listData?: any;
+}
+const props = withDefaults(defineProps<Props>(), {
+	listData: []
+});
 </script>
 
 <style lang="less" scoped>
-	.e-card-list {
-		margin-top: 20rpx;
-		padding: 20rpx;
-		background: linear-gradient(179deg, #F2FFBE 0%, #FFFFFF 60%);
-		border-radius: 32rpx;
-
-		.e-events-info {
-			display: flex;
-			align-items: center;
-			gap: 20rpx;
+.e-card-list {
+	margin-top: 20rpx;
+	padding: 20rpx;
+	background: linear-gradient(179deg, #F2FFBE 0%, #FFFFFF 60%);
+	border-radius: 32rpx;
 
-			.e-picture {
-				position: relative;
+	.e-events-info {
+		display: flex;
+		align-items: center;
+		gap: 20rpx;
 
-				.pic {
-					width: 200rpx;
-					height: 200rpx;
-					border-radius: 32rpx;
-				}
+		.e-picture {
+			position: relative;
 
-				.e-badge {
-					position: absolute;
-					top: -4rpx;
-					left: -20rpx;
+			.pic {
+				width: 200rpx;
+				height: 200rpx;
+				border-radius: 32rpx;
+			}
 
-					&>image {
-						width: 114rpx;
-					}
+			.e-badge {
+				position: absolute;
+				top: -4rpx;
+				left: -20rpx;
 
-					.text {
-						position: absolute;
-						top: 14rpx;
-						left: 30rpx;
-						font-size: 20rpx;
-						color: #222222;
-					}
+				&>image {
+					width: 114rpx;
 				}
-			}
 
-			.e-info {
-				.e-title {
-					font-weight: 800;
-					font-size: 32rpx;
+				.text {
+					position: absolute;
+					top: 14rpx;
+					left: 30rpx;
+					font-size: 18rpx;
 					color: #222222;
 				}
+			}
+		}
 
-				.e-address {
-					margin-top: 12rpx;
-					font-size: 24rpx;
-					color: #222222;
-				}
+		.e-info {
+			.e-title {
+				font-weight: 800;
+				font-size: 32rpx;
+				color: #222222;
+			}
 
-				.e-time {
-					margin-top: 16rpx;
-					// width: 132rpx;
-					height: 42rpx;
-					border-radius: 28rpx;
-					background: linear-gradient(90deg, #C8FF0C 0%, #F2FFC7 79%, rgba(255, 255, 255, 0) 100%);
-					display: flex;
-					align-items: center;
-					justify-content: center;
-					gap: 10rpx;
-					font-weight: bold;
-					font-size: 24rpx;
-					color: #222222;
-				}
+			.e-address {
+				margin-top: 12rpx;
+				font-size: 24rpx;
+				color: #222222;
+			}
+
+			.e-time {
+				margin-top: 16rpx;
+				height: 42rpx;
+				padding-left: 10rpx;
+				border-radius: 28rpx;
+				background: linear-gradient(90deg, #C8FF0C 0%, #F2FFC7 79%, rgba(255, 255, 255, 0) 100%);
+				display: flex;
+				align-items: center;
+				gap: 10rpx;
+				font-weight: bold;
+				font-size: 24rpx;
+				color: #222222;
 			}
 		}
+	}
 
-		.e-price {
-			height: 110rpx;
-			display: flex;
-			align-items: center;
-			justify-content: space-between;
-			border-top: 1rpx solid #F0F0F0;
-			margin-top: 24rpx;
+	.e-price {
+		height: 110rpx;
+		display: flex;
+		align-items: center;
+		justify-content: space-between;
+		border-top: 1rpx solid #F0F0F0;
+		margin-top: 24rpx;
 
-			.price {
-				font-weight: 800;
-				font-size: 48rpx;
-				color: #FB5B5B;
+		.price {
+			font-weight: 800;
+			font-size: 48rpx;
+			color: #FB5B5B;
 
-				&>text {
-					font-size: 24rpx;
-				}
+			&>text {
+				font-size: 24rpx;
 			}
+		}
 
-			.entry {
-				&>image {
-					width: 156rpx;
-				}
+		.entry {
+			&>image {
+				width: 156rpx;
 			}
 		}
 	}
+}
 </style>

+ 177 - 168
src/pages/index/searchPage/components/instructor.vue

@@ -1,26 +1,28 @@
 <template>
 	<view class="instructor-card-list">
 		<view class="i-info-card">
-			<view class="i-card-list" :style="{background:index % 2=== 0?'linear-gradient(179deg, #FFD5FB 0%, #FFFFFF 40%)':'linear-gradient( 179deg, #F2FFBE 0%, #FFFFFF 40%)'}" v-for="(item,index) in listData" :key="index">
+			<view class="i-card-list"
+				:style="{ background: index % 2 === 0 ? 'linear-gradient(179deg, #FFD5FB 0%, #FFFFFF 40%)' : 'linear-gradient( 179deg, #F2FFBE 0%, #FFFFFF 40%)' }"
+				v-for="(item, index) in listData" :key="index"
+				@click="RouterUtils.to_page(`/pages/index/instructorDetail/index?id=${item.userId}`)">
 				<view class="i-info">
-					<view class="header" :style="{background:index % 2=== 0?'#FFB8F9':'#C8FF0C'}">
-						<image class="head-img" src="https://img.keaitupian.cn/newupload/08/1629449018344288.jpg"
-							mode=""></image>
+					<view class="header" :style="{ background: index % 2 === 0 ? '#FFB8F9' : '#C8FF0C' }">
+						<image class="head-img" :src="item.avatar"></image>
 						<image class="head-tag" src="/src/static/badge.png" mode=""></image>
 					</view>
 					<view class="i-name-tag">
 						<view class="name-tag">
 							<view class="name">
 								<view class="">
-									<text>{{item.name}}</text>
+									<text>{{ item.name }}</text>
 								</view>
-								<image v-if="index % 2=== 0" src="/src/static/name_bg.png" mode=""></image>
+								<image v-if="index % 2 === 0" src="/src/static/name_bg.png" mode=""></image>
 								<image v-else src="/src/static/name_bg1.png" mode=""></image>
 							</view>
 							<view class="tag">篮球</view>
 						</view>
-						<view class="ascription">{{item.orgName}}</view>
-						<view class="sign">{{item.teachingPhilosophy}}</view>
+						<view class="ascription">{{ item.orgName }}</view>
+						<view class="sign">{{ item.teachingPhilosophy }}</view>
 					</view>
 					<view class="type-icon">
 						<image src="/src/static/hot-icon2.png" mode=""></image>
@@ -29,212 +31,219 @@
 				<view class="i-data">
 					<view class="acclaim">
 						<zzx-icon name="acclaim"></zzx-icon>
-						<view style="color: #FFCC00;">好评 {{item.goodRate}}%</view>
+						<view style="color: #FFCC00;">好评 {{ item.goodRate }}%</view>
 					</view>
 					<view class="acclaim">
 						<zzx-icon name="order"></zzx-icon>
-						<view style="color: #4DDF96;">订单数 {{item.orderCount}}</view>
+						<view style="color: #4DDF96;">订单数 {{ item.orderCount }}</view>
 					</view>
 					<view class="acclaim">
 						<zzx-icon name="number"></zzx-icon>
-						<view style="color: #AB7BFF;">授课人数 {{item.classesNumber}}</view>
+						<view style="color: #AB7BFF;">授课人数 {{ item.classesNumber }}</view>
 					</view>
 				</view>
 				<view class="i-skill">
-					{{item.excelMsg}}
+					{{ item.excelMsg }}
 				</view>
-				<view class="i-course" v-for="course in item.courseList" :key="item.id">
-					<view class="course-name">
-						<view class="price">¥{{course.course||'0.00'}}</view>
-						<view class="name textHidden">{{course.name}}</view>
+				<block v-if="item.courseList && item.courseList.length > 0">
+					<view class="i-course" v-for="course in item.courseList" :key="item.id">
+						<view class="course-name">
+							<view class="price">¥{{ course.course || '0.00' }}</view>
+							<view class="name textHidden">{{ course.name }}</view>
+						</view>
+						<view class="num">已售{{ course.sales }}</view>
 					</view>
-					<view class="num">已售{{course.sales}}</view>
-				</view>
-				<view class="more">更多课程</view>
+					<view class="more">更多课程</view>
+				</block>
+				<view class="not-data" v-else>该教练暂无课程</view>
 			</view>
 		</view>
 	</view>
 </template>
 
 <script lang="ts" setup>
-	interface Props {
-		listData ?: any; 
-	}
-	const props = withDefaults(defineProps<Props>(), {
-		listData:[]
-	});
+import { RouterUtils } from '@/utils/util'
+
+interface Props {
+	listData?: any;
+}
+const props = withDefaults(defineProps<Props>(), {
+	listData: []
+});
 </script>
 
 <style lang="less" scoped>
-	.instructor-card-list{
-		margin-top: 20rpx;
-		.i-info-card {
-			.i-card-list {
-				margin-bottom:24rpx;
+.instructor-card-list {
+	margin-top: 20rpx;
+
+	.i-info-card {
+		.i-card-list {
+			margin-bottom: 24rpx;
+			border-radius: 32rpx;
+			padding: 20rpx;
+			width: 670rpx;
+			height: 480rpx;
+		}
+
+		.i-info {
+			display: flex;
+			align-items: center;
+			justify-content: space-around;
+
+			.header {
+				width: 150rpx;
+				height: 150rpx;
 				border-radius: 32rpx;
-				padding: 20rpx;
-				width: 670rpx;
-				height: 480rpx;
-			}
-		
-			.i-info {
-				display: flex;
-				align-items: center;
-				justify-content: space-around;
-		
-				.header {
+				// background: #FFB8F9;
+				padding: 4rpx;
+				position: relative;
+
+				.head-img {
 					width: 150rpx;
 					height: 150rpx;
 					border-radius: 32rpx;
-					// background: #FFB8F9;
-					padding: 4rpx;
-					position: relative;
-		
-					.head-img {
-						width: 150rpx;
-						height: 150rpx;
-						border-radius: 32rpx;
-					}
-		
-					.head-tag {
-						position: absolute;
-						bottom: 0;
-						right: -14rpx;
-						width: 36rpx;
-						height: 36rpx;
-					}
 				}
-		
-				.i-name-tag {
-					.name-tag {
-						display: flex;
-						align-items: center;
-						gap: 8rpx;
-		
-						.name {
-							width: 134rpx;
-							height: 60rpx;
-							font-weight: 800;
-							font-size:28rpx;
-							color: #222222;
-							position: relative;
-		
-							&>view {
-								&>text {
-									position: absolute;
-									z-index: 1;
-									top: 10rpx;
-								}
-							}
-		
-							&>image {
-								top: 0;
-								left: 0;
+
+				.head-tag {
+					position: absolute;
+					bottom: 0;
+					right: -14rpx;
+					width: 36rpx;
+					height: 36rpx;
+				}
+			}
+
+			.i-name-tag {
+				.name-tag {
+					display: flex;
+					align-items: center;
+					gap: 8rpx;
+
+					.name {
+						width: 134rpx;
+						height: 60rpx;
+						font-weight: 800;
+						font-size: 28rpx;
+						color: #222222;
+						position: relative;
+
+						&>view {
+							&>text {
 								position: absolute;
-								width: 133rpx;
-								height: 48rpx;
+								z-index: 1;
+								top: 10rpx;
 							}
 						}
-		
-						.tag {
-							font-size: 24rpx;
-							color: #AAAAAA;
+
+						&>image {
+							top: 0;
+							left: 0;
+							position: absolute;
+							width: 133rpx;
+							height: 48rpx;
 						}
 					}
-		
-					.ascription {
-						font-size: 24rpx;
-						color: #222222;
-					}
-		
-					.sign {
-						margin-top: 20rpx;
-						font-weight: bold;
+
+					.tag {
 						font-size: 24rpx;
-						color: #222222;
+						color: #AAAAAA;
 					}
 				}
-		
-				.type-icon {
-					&>image {
-						width: 106rpx;
-						height: 100rpx;
-					}
+
+				.ascription {
+					font-size: 24rpx;
+					color: #222222;
 				}
-			}
-		
-			.i-data {
-				display: flex;
-				align-items: center;
-				gap: 28rpx;
-				margin-top: 20rpx;
-		
-				.acclaim {
-					display: flex;
-					align-items: center;
-					gap: 10rpx;
+
+				.sign {
+					max-width: 300rpx;
+					margin-top: 20rpx;
+					font-weight: bold;
 					font-size: 24rpx;
+					color: #222222;
+				}
+			}
+
+			.type-icon {
+				&>image {
+					width: 106rpx;
+					height: 100rpx;
 				}
 			}
-		
-			.i-skill {
-				width: 700rpx;
-				margin-top: 20rpx;
+		}
+
+		.i-data {
+			display: flex;
+			align-items: center;
+			gap: 28rpx;
+			margin-top: 20rpx;
+
+			.acclaim {
+				display: flex;
+				align-items: center;
+				gap: 10rpx;
 				font-size: 24rpx;
-				color: #AAAAAA;
 			}
-		
-			.i-course {
+		}
+
+		.i-skill {
+			max-width: 700rpx;
+			margin-top: 20rpx;
+			font-size: 24rpx;
+			color: #AAAAAA;
+		}
+
+		.i-course {
+			display: flex;
+			align-items: center;
+			justify-content: space-between;
+			margin-top: 20rpx;
+
+			.course-name {
 				display: flex;
 				align-items: center;
-				justify-content: space-between;
-				margin-top: 20rpx;
-		
-				.course-name {
-					display: flex;
-					align-items: center;
-					gap: 20rpx;
-		
-					.price {
-						font-weight: bold;
-						font-size: 28rpx;
-						color: #FB5B5B;
-					}
-		
-					.name {
-						width: 440rpx;
-						font-weight: bold;
-						font-size: 28rpx;
-						color: #222222;
-					}
+				gap: 20rpx;
+
+				.price {
+					font-weight: bold;
+					font-size: 28rpx;
+					color: #FB5B5B;
 				}
-		
-				.num {
-					font-size: 24rpx;
-					color: #AAAAAA;
+
+				.name {
+					width: 440rpx;
+					font-weight: bold;
+					font-size: 28rpx;
+					color: #222222;
 				}
 			}
-		
-			.more {
-				margin: auto;
-				width: 100rpx;
-				margin-top: 20rpx;
-				text-align: center;
+
+			.num {
 				font-size: 24rpx;
-				color: #CCCCCC;
-				position: relative;
-			}
-		
-			.more::after {
-				position: absolute;
-				bottom: -10rpx;
-				left: 25rpx;
-				content: '';
-				width: 38rpx;
-				height: 4rpx;
-				border-radius: 2rpx;
-				background-color: #CCCCCC;
+				color: #AAAAAA;
 			}
 		}
+
+		.more {
+			margin: auto;
+			width: 100rpx;
+			margin-top: 20rpx;
+			text-align: center;
+			font-size: 24rpx;
+			color: #CCCCCC;
+			position: relative;
+		}
+
+		.more::after {
+			position: absolute;
+			bottom: -10rpx;
+			left: 25rpx;
+			content: '';
+			width: 38rpx;
+			height: 4rpx;
+			border-radius: 2rpx;
+			background-color: #CCCCCC;
+		}
 	}
+}
 </style>

+ 4 - 3
src/pages/index/searchPage/index.vue

@@ -23,7 +23,7 @@
 			<!-- 场地 -->
 			<view v-if="sel_index==0">
 				<!-- pages/index/gymDetail/index -->
-				<view class="s-venue-card" v-for="(venue,index) in searchList" :key="venue.id" @click="RouterUtils.to_page(`/pages/index/gymDetail/index`)">
+				<view class="s-venue-card" v-for="(venue,index) in searchList" :key="venue.id" @click="RouterUtils.to_page(`/pages/index/gymDetail/index?id=${venue.id}`)">
 					<view class="s-venue-info">
 						<view class="venue-img">
 							<image :src="venue.cover" mode=""></image>
@@ -51,7 +51,7 @@
 			</view>
 			<!-- 培训 -->
 			<view v-if="sel_index==1">
-				<view class="s-training-card" v-for="(venue,index) in searchList" :key="venue.id">
+				<view class="s-training-card" v-for="(venue,index) in searchList" :key="venue.id" @click="RouterUtils.to_page(`/pages/index/courseDetail/index?id=${venue.id}`)">
 					<view class="training-box">
 						<view class="training-img">
 							<image class="t-img" src="https://img.keaitupian.cn/newupload/08/1629449018344288.jpg" mode="">
@@ -94,7 +94,7 @@
 	import { ref, onMounted } from 'vue';
 	import { onLoad,onReachBottom } from '@dcloudio/uni-app';
 	import { http } from '@/utils/http'
-	import {RouterUtils} from '@/utils/util'
+	import {RouterUtils,TipsUtils} from '@/utils/util'
 	import { useCacheStore } from '@/stores/cache'
 	import events from './components/events.vue'
 	import instructor from './components/instructor.vue'
@@ -156,6 +156,7 @@
 	
 	const tagsVal=ref()
 	const to_search=()=>{
+		if(keyword.value=='') return TipsUtils.tips_toast('请输入搜索内容')
 		searchLoading.value=true
 		get_searchInfo(tagsVal.value||'0-1')
 	}

+ 2 - 2
src/utils/http/index.ts

@@ -179,8 +179,8 @@ export class HttpClient {
 
 // 创建实例
 export const http = new HttpClient({
-  // baseURL: 'http://192.168.1.34:8080/jeecg-boot/app',
-  baseURL: 'http://192.168.1.166:8080/jeecg-boot/app',
+  baseURL: 'http://192.168.1.34:8080/jeecg-boot/app',
+  // baseURL: 'http://192.168.1.166:8080/jeecg-boot/app',
   headers: {
     'Content-Type': 'application/json'
   }