贾宇博 4 hónapja%!(EXTRA string=óta)
szülő
commit
30faa7bacc

+ 52 - 59
components/Client/new_file.vue

@@ -1,32 +1,12 @@
 <template>
 	<view>
-		<!-- 服务选择 -->
-		<template v-if="userType == 1">
+		<template>
 			<view class="Wrapper-grid">
-				<!-- 横向滚动容器 -->
-				<scroll-view scroll-x class="grid-scroll-view" shows-horizontal-scroll-indicator="false">
-					<up-grid :border="false" col="5" @click="handleGridClick" class="grid-container">
-						<up-grid-item v-for="(item, index) in serviceList1" :key="index"
-							:custom-style="{ padding: '20rpx' }">
-							<!-- 图标 -->
-							<image :src="item.icon" class="service-img" mode="aspectFit" />
-
-							<!-- 文本 -->
-							<text class="grid-text">{{ item.name }}</text>
-						</up-grid-item>
-					</up-grid>
-				</scroll-view>
-
-				<up-toast ref="uToastRef" />
-			</view>
-		</template>
-
-		<template v-else-if="userType == 2">
-			<view class="Wrapper-grid">
-				<swiper :indicator-dots="true" class="swiper">
+				<view class="serve-title client-title" v-if="userType == 2">注册专区</view>
+				<swiper :indicator-dots="true" class="swiper" v-if="serveiceList && serveiceList.length > 0">
 					<swiper-item>
 						<up-grid :border="false" col="5" @click="handleGridClick">
-							<up-grid-item v-for="(item, index) in serviceList2.slice(0,10)" :key="index"
+							<up-grid-item v-for="(item, index) in serveiceList.slice(0,10)" :key="index"
 								:custom-style="custmoStyle">
 								<view class="grid-box">
 									<view class="grid-icon">
@@ -39,8 +19,8 @@
 						</up-grid>
 					</swiper-item>
 					<swiper-item>
-						<up-grid :border="false" col="4" @click="handleGridClick">
-							<up-grid-item v-for="(item, index) in serviceList2.slice(10,12)" :key="index"
+						<up-grid :border="false" col="5" @click="handleGridClick">
+							<up-grid-item v-for="(item, index) in serveiceList.slice(10,serveiceList.length)" :key="index"
 								:custom-style="custmoStyle">
 								<view class="grid-box">
 									<view class="grid-icon">
@@ -103,16 +83,17 @@
 	const selected = ref([])
 
 	// 普通用户
-	const serviceList1 = ref([{
+	const serviceList1 = [
+		{
+			icon: '/static/Tioimages/1v专业指导.png',
+			name: '陪伴陪聊',
+			key: 1,
+		},
+		{
 			icon: '/static/Tioimages/1 妇女儿童权益保护服务.png',
 			name: '孩子陪伴',
 			key: 2,
 		},
-		{
-			icon: '/static/Tioimages/家庭保洁.png',
-			name: '家庭保洁',
-			key: 1,
-		},
 		{
 			icon: '/static/Tioimages/临时帮手.png',
 			name: '临时帮手',
@@ -129,8 +110,8 @@
 			key: 5,
 		},
 		{
-			icon: '/static/Tioimages/1v专业指导.png',
-			name: '陪伴陪聊',
+			icon: '/static/Tioimages/家庭保洁.png',
+			name: '家庭保洁',
 			key: 6,
 		},
 		{
@@ -158,10 +139,11 @@
 			name: '本地生活',
 			key: 11,
 		},
-	]);
+	]
 
 	//志愿者
-	const serviceList2 = ref([{
+	const serviceList2 = [
+		{
 			icon: '/static/Tioimages/1v专业指导.png',
 			name: '陪伴陪聊',
 			key: 1,
@@ -221,7 +203,16 @@
 			name: '排班管理',
 			key: 7
 		},
-	]);
+	]
+
+	const serveiceList =computed(()=>{
+		console.log('userType ____>',userType);
+		
+		if(userType === 1){
+			return serviceList1
+		}
+		return serviceList2
+	})
 
 	const parentIdMap = {
 		'孩子陪护': 2,
@@ -233,24 +224,25 @@
 		'资讯与服务': 7,
 	};
 
-	const getParentId = (service) => parentIdMap[service.name] || 1;
+	// const getParentId = (service) => parentIdMap[service.name] || 1;
 
 
 	// 宫格点击事件
 	const handleGridClick = async (index) => {
-		const service = serviceList1.value[index]; // 获取点击的服务条目
+		const service = serveiceList.value[index]; // 获取点击的服务条目
 		// 用户
 		if (userType == 1) {
+
 			// 动态获取 parentId
-			const parentId = getParentId(service); // 通过服务条目动态获取 parentId
+			// const parentId = getParentId(service); // 通过服务条目动态获取 parentId
 			const params = {
-				parentId: parentId
+				parentId: service.key
 			}
 			const res = await volunteerSeachgetTreeList(params)
 			console.log(res, '>>>>>dictSort = null')
 
 			// 只有第一条和第二条可以跳转
-			if (index === 0 || index === 1) {
+			if (service.key === 1 || service.key === 2) {
 				uni.navigateTo({
 					url: `/pages_home/pages/client/details?dataList=${encodeURIComponent(JSON.stringify(res.data))}`
 				});
@@ -263,23 +255,20 @@
 			}
 		}
 		// 志愿者
-		if (userType == 2 && uToastRef.value) {
-			// pages_home/pages
-
-			const data = serviceList2.value[index]
-			if (data.key !== 7) {
+		if (userType == 2 ) {
+			if (service.key !== 7) {
 				const res = await getVolunteerInfo({
-					serviceCategory: data.key
+					serviceCategory: service.key
 				});
 				if (res.code === 200 && res.data) {
 					//已有注册,跳转详情页面
 					uni.navigateTo({
-						url: `/pages_home/pages/details/index?data=${encodeURIComponent(JSON.stringify(data))}`
+						url: `/pages_home/pages/details/index?data=${encodeURIComponent(JSON.stringify(service))}`
 					})
 					return
 				}
-				data.key === 1 || data.key === 2 ? uni.navigateTo({
-					url: `/pages_home/pages/register/index?data=${encodeURIComponent(JSON.stringify(data))}`
+				service.key === 1 || service.key === 2 ? uni.navigateTo({
+					url: `/pages_home/pages/register/index?data=${encodeURIComponent(JSON.stringify(service))}`
 				}) : uni.showToast({
 					title: '敬请期待',
 					icon: 'none'
@@ -407,7 +396,7 @@
 		font-size: 24rpx;
 		color: #333;
 		text-align: center;
-		margin-top: 18rpx;
+		/* margin-top: 18rpx; */
 	}
 
 	.grid-box {
@@ -423,24 +412,28 @@
 		height: 100rpx;
 		opacity: 1;
 		border-radius: 12rpx;
-		background: rgba(251, 229, 225, 1);
+		/* background: rgba(251, 229, 225, 1); */
 		display: flex;
 		align-items: center;
 		justify-content: center;
 	}
 
 	.service-img {
-		width: 58rpx;
-		height: 58rpx;
+		width: 78rpx;
+		height: 78rpx;
 	}
 
-	.swiper {
-		height: 205px;
-	}
+.swiper {
+	height: 340rpx;
+}
 
 	.grid-text {
 		font-size: 14px;
 		color: #909399;
-		padding: 10rpx 0 20rpx 0rpx;
+		/* padding: 10rpx 0 0 0rpx; */
+	}
+
+	.client-title {
+		padding: 0 32rpx;
 	}
 </style>

+ 2 - 2
config.js

@@ -2,8 +2,8 @@
 const config = {
 	// baseUrl: 'https://vue.ruoyi.vip/prod-api',
 	//cloud后台网关地址
-	// baseUrl: 'http://192.168.10.3:8080',
-	baseUrl: 'http://192.168.100.94:9527',
+	// baseUrl: 'http://192.168.100.94:9527',
+	baseUrl: 'https://zybooks.tech/prod-api',
 	// 应用信息
 	appInfo: {
 		// 应用名称

+ 8 - 1
pages.json

@@ -14,7 +14,8 @@
 		{
 			"path": "pages/index",
 			"style": {
-				"navigationBarTitleText": "金邻助家"
+				"navigationBarTitleText": "金邻助家",
+				"navigationStyle": "custom"
 			}
 		},
 		{
@@ -86,6 +87,12 @@
 					"style": {
 						"navigationBarTitleText": "隐私协议"
 					}
+				},
+				{
+					"path": "pages/login/user",
+					"style": {
+						"navigationBarTitleText": "用户协议"
+					}
 				}
 			]
 		},

+ 14 - 21
pages/common/rankingList/index.vue

@@ -26,38 +26,30 @@
 const datas = [
     {
         id: 1,
-        img: '/static/serverImg/home/ranking.png',
-        name: '专业深度保洁',
-        tag: '家庭清洁',
-        text: '专业设备,深度除螨,全面消毒',
-        dese: '本月已服务2890',
+        img: '/static/serverImg/home/ranking2.png',
+        name: '一对一解答',
+        tag: '孩子陪伴',
+        text: '个性化解答,有效提升',
+        dese: '本月已服务360',
         count: '4.9'
     },
     {
         id: 2,
         img: '/static/serverImg/home/ranking.png',
-        name: '高级月嫂服务',
-        tag: '家务帮手',
-        text: '专业母婴护理、科学坐月子',
-        dese: '本月已服务2456',
+        name: '专业深度保洁',
+        tag: '家庭保洁',
+        text: '专业设备,深度除螨,全面消毒',
+        dese: '本月已服务289',
         count: '4.8'
     },
-    {
-        id: 3,
-        img: '/static/serverImg/home/ranking.png',
-        name: '一对一解答',
-        tag: '陪伴陪聊',
-        text: '个性化解答,有效提升',
-        dese: '本月已服务2100',
-        count: '4.7'
-    }
+   
 ]
 
 </script>
 
 <style scoped lang="scss">
 .ranking-title {
-    margin-bottom: 16px;
+    margin-bottom: 18rpx ;
 }
 
 .ranking-list {
@@ -66,12 +58,13 @@ const datas = [
         display: flex;
         align-items: flex-start;
         justify-content: space-between;
-        padding: 12px;
+        padding: 12px ;
+        margin-bottom: 32rpx;
 
         border-radius: 8px;
         background: rgba(255, 255, 255, 1);
 
-        border: 0px solid rgba(243, 244, 246, 1);
+        border: 1px solid rgba(243, 244, 246, 1);
 
         box-shadow: 0px 0px 0px rgba(0, 0, 0, 0), 0px 0px 0px rgba(0, 0, 0, 0), 0px 1px 2px rgba(0, 0, 0, 0.05);
 

+ 247 - 211
pages/index.vue

@@ -1,255 +1,291 @@
 <template>
-	<view class="main-content ">
-		<view class="home-banner">
+	<view class="main-content">
+		<view class="home-banner" :style="`height: ${globalData.navBarHeight}px `">
 			<view class="home-banner-left">
-				<img src="/static/serverImg/home/address.png" alt=""
-					style="width: 41.67rpx;height:  41.67rpx;margin-right: 8rpx;">
+				<!-- <img src="/static/serverImg/home/address.png" alt=""
+					style="width: 41.67rpx;height:  41.67rpx;margin-right: 8rpx;"> -->
+				<up-icon name="map" color="#fff" size="25"></up-icon>
 				<text>{{ data.address }}</text>
 			</view>
-			<view>
-				<up-icon name="bell" :size="25" color="rgba(46, 46, 46, 1)"></up-icon>
-				<!-- <img src="/static/serverImg/home/message.png" alt="" style="width: 50rpx;height: 50rpx;"> -->
+			<view class="home-banner-cente">金邻助家</view>
+			<view class="home-banner-rigth">
+				<!-- <up-icon name="bell" :size="25" color="rgba(46, 46, 46, 1)"></up-icon> -->
 			</view>
 		</view>
-		<view class="home-main">
-			<view class="custom-swiper">
-				<up-swiper :list="list3" indicator indicatorMode="line" circular></up-swiper>
+		<view class="home-box" :style="`margin-top: ${globalData.navBarHeight}px `">
+			<view class="home-main">
+				<view class="custom-swiper">
+					<up-swiper :list="list3" indicator indicatorMode="line" circular></up-swiper>
+				</view>
 			</view>
-		</view>
 
-		<view class="home-grid">
-			<Client />
-		</view>
+			<view class="home-grid">
 
-		<!-- <view class="home-grid hot-box">
-			<view v-for="item in hotList" :key="item.key" class="hot-item">
-				<view>
-					<view>{{item.name}}</view>
-					<view>{{item.text}}</view>
+				<Client />
+			</view>
+
+			<view class="home-grid hot-box" v-if="userType === 1">
+				<view v-for="(item, index) in hotList" :key="index + 'hot'" class="hot-item">
+					<img :src="item" alt="" style="width: 100%;height:  160rpx;">
 				</view>
-				<up-icon :name="listItem.iconName" :size="22"></up-icon>
 			</view>
-		</view> -->
 
-		<view class="home-ranking">
-			<ServIces :leftList="leftList" :rightList="rightList" v-if="userType == 1"></ServIces>
-			<RankingList v-if="userType === 2" />
-		</view>
+			<view class="home-g-bgc">
+				<view class="home-grid2">
+					<view class="serve-title hot-box-title" v-if="userType === 1">超值专区</view>
+					<view class="hot-swiper">
+						<up-swiper :list="ValueZone" :indicator="false" indicatorMode="line" circular></up-swiper>
+					</view>
+				</view>
 
-		<up-loadmore style="margin-top: 40rpx;margin-bottom: 40rpx;" :status="loadmoreInfo.status"
-			:loadmoreText="loadmoreInfo.loadmoreTex" :loadingText="loadmoreInfo.loadingText"
-			:nomoreText="loadmoreInfo.nomoreText" @loadmore="handleLoadmore" />
+				<view class="home-ranking home-grid2">
+					<ServIces :leftList="leftList" :rightList="rightList" v-if="userType == 1"></ServIces>
+					<RankingList v-if="userType === 2" />
+				</view>
+			</view>
+
+			<up-loadmore style="margin-top: 40rpx;" :status="loadmoreInfo.status"
+				:loadmoreText="loadmoreInfo.loadingText" :loadingText="loadmoreInfo.loadmoreText"
+				:nomoreText="loadmoreInfo.nomoreText" @loadmore="handleLoadmore" v-if="userType == 1" />
 
 
+		</view>
 	</view>
 </template>
 
 <script setup>
-	import {
-		ref,
-		reactive,
-		onMounted
-	} from 'vue';
-	import {
-		onLoad,
-		onShow,
-		onReachBottom
-	} from "@dcloudio/uni-app";
-	import RankingList from '@/pages/common/rankingList/index.vue';
-	import ServIces from "@/components/Services/services.vue"
-	import {
-		Client
-	} from "@/components/Client/new_file.vue"
-	import {
-		volunteerinfolist,
-	} from "@/api/volunteerDetailsApi/details.js"
-	import {
-		slideshow
-	} from '@/api/home.js'
-
-	const listData = ref([])
-	const leftList = ref([])
-	const rightList = ref([])
-	const userType = uni.getStorageSync('userType') //读取本地存储
-
-	const data = reactive({
-		address: '重庆市永川区',
-		queryValue: ''
-	})
-	const list3 = ref([]);
-
-	const hotList = [{
-			key: 1,
-			icon: '/static/img/构建.png',
-			name: '专业辅导',
-			text: '与家长协同制定成长计划',
-		},
-		{
-			key: 2,
-			icon: '/static/img/构建.png',
-			name: '暖心陪护',
-			text: '倾听烦恼、缓解孤独感',
-		},
-	]
-	const hotList2 = [{
-			key: 1,
-			icon: '/static/img/构建.png',
-			name: '专业辅导',
-			text: '与家长协同制定成长计划',
-		},
-		{
-			key: 2,
-			icon: '/static/img/构建.png',
-			name: '暖心陪护',
-			text: '倾听烦恼、缓解孤独感',
-		},
-		{
-			key: 3,
-			icon: '/static/img/构建.png',
-			name: '专业辅导',
-			text: '与家长协同制定成长计划',
-		},
-		{
-			key: 4,
-			icon: '/static/img/构建.png',
-			name: '暖心陪护',
-			text: '倾听烦恼、缓解孤独感',
-		},
-	]
-
-	// 分页
-	const pages = ref({
-		current: 1,
-		pageSize: 10,
-		total: 0
-	})
-
-	const loadmoreInfo = ref({
-		status: 'loadmore',
-		loadingText: '努力加载中...',
-		loadmoreText: '点击加载更多~',
-		nomoreText: '已经到底啦~'
-	})
-
-	// 加载更多
-	async function handleLoadmore(e) {
-		if (pages.value.current < Math.ceil(pages.value.total / pages.value.pageSize)) {
-			pages.value.current += 1;
-			loadmoreInfo.value.status = 'loading';
-			await getList();
-		} else {
+import {
+	ref,
+	reactive,
+	onMounted
+} from 'vue';
+import {
+	onLoad,
+	onShow,
+	onReachBottom
+} from "@dcloudio/uni-app";
+import RankingList from '@/pages/common/rankingList/index.vue';
+import ServIces from "@/components/Services/services.vue"
+import {
+	Client
+} from "@/components/Client/new_file.vue"
+import {
+	volunteerinfolist,
+} from "@/api/volunteerDetailsApi/details.js"
+import {
+	slideshow
+} from '@/api/home.js'
+
+const total = ref(0)
+const listData = ref([])
+const rightList = ref([])
+const leftList = ref([])
+const userType = uni.getStorageSync('userType') //读取本地存储
+const globalData = ref({
+	statusBarHeight: 47,
+	navBarHeight: 91
+});
+const data = reactive({
+	address: '重庆市',
+	queryValue: ''
+})
+const list3 = ref([]);
+const ValueZone = ref([]);
+const hotList = ref([])
+
+// 分页
+const pages = ref({
+	current: 1,
+	pageSize: 10,
+	total: 0
+})
+
+
+
+const loadmoreInfo = ref({
+	status: 'loadmore',
+	loadingText: '努力加载中...',
+	loadmoreText: '点击加载更多~',
+	nomoreText: '已经到底啦~'
+})
+
+// 加载更多
+async function handleLoadmore(e) {
+	if (pages.value.current < Math.ceil(pages.value.total / pages.value.pageSize)) {
+		pages.value.current += 1;
+		loadmoreInfo.value.status = 'loading';
+		await getList();
+	} else {
+		loadmoreInfo.value.status = 'nomore';
+	}
+}
+
+
+const getList = async () => {
+	try {
+		loadmoreInfo.value.status = 'loading';
+
+		// 请求时传递分页参数
+		const res = await volunteerinfolist({
+			pageNumber: pages.value.current, // 当前页码
+			pageSize: pages.value.pageSize // 每页大小
+		});
+
+		console.log(res, '>>>>>>>res');
+
+		if (!res || !res.rows) {
+			return;
+		}
+
+		// 判断是否已经到了最后一页
+		if (pages.value.current >= Math.ceil(res.total / pages.value.pageSize)) {
 			loadmoreInfo.value.status = 'nomore';
+		} else {
+			loadmoreInfo.value.status = 'loadmore';
 		}
+
+		// 将数据分成左右两列
+		res.rows.forEach((item, index) => {
+			index % 2 !== 0 ? leftList.value.push(item) : rightList.value.push(item);
+		});
+
+		pages.value.total = res.total;
+	} catch (error) {
+		leftList.value = [];
+		rightList.value = [];
+		loadmoreInfo.value.status = 'loadmore';
+		pages.value.total = 0;
+		console.error('Error fetching data:', error);
 	}
+};
 
-	const getList = async () => {
-		try {
-			loadmoreInfo.value.status = 'loading';
-
-			// 请求时传递分页参数
-			const res = await volunteerinfolist({
-				pageNumber: pages.value.current, // 当前页码
-				pageSize: pages.value.pageSize // 每页大小
-			});
-
-			console.log(res, '>>>>>>>res');
-
-			if (!res || !res.rows) {
-				return;
-			}
-
-			// 判断是否已经到了最后一页
-			if (pages.value.current >= Math.ceil(res.total / pages.value.pageSize)) {
-				loadmoreInfo.value.status = 'nomore';
-			} else {
-				loadmoreInfo.value.status = 'loadmore';
-			}
-
-			// 将数据分成左右两列
-			res.rows.forEach((item, index) => {
-				index % 2 !== 0 ? leftList.value.push(item) : rightList.value.push(item);
-			});
-
-			pages.value.total = res.total;
-		} catch (error) {
-			leftList.value = [];
-			rightList.value = [];
-			loadmoreInfo.value.status = 'loadmore';
-			pages.value.total = 0;
-			console.error('Error fetching data:', error);
+
+onReachBottom(() => {
+	if (pages.value.current < Math.ceil(pages.value.total / pages.value.pageSize)) {
+		pages.value.current = pages.value.current + 1
+		loadmoreInfo.value.status = 'nomore'
+		getList()
+	}
+})
+
+
+
+const getBanners = async () => {
+	try {
+		const res = await slideshow(7);
+		if (res.code === 200 && res.data.picture) {
+			list3.value = res.data.picture.split(',');
 		}
-	};
 
-	const getBanners = async () => {
-		try {
-			const res = await slideshow(7);
-			if (res.code === 200 && res.data.picture) {
-				list3.value = res.data.picture.split(',');
-			}
-		} catch (error) {
-			console.log('error', error);
+		const value_res = await slideshow(8);
+		if (value_res.code === 200 && value_res.data.picture) {
+			ValueZone.value = value_res.data.picture.split(',');
+		}
 
+		const hot_res = await slideshow(11);
+		if (hot_res.code === 200 && hot_res.data.picture) {
+			hotList.value = hot_res.data.picture.split(',');
 		}
+	} catch (error) {
+		console.log('error', error);
+
 	}
+}
 
-	onReachBottom(() => {
-		if (pages.value.current < Math.ceil(pages.value.total / pages.value.pageSize)) {
-			pages.value.current = pages.value.current + 1
-			loadmoreInfo.value.status = 'nomore'
-			getList()
-		}
-	})
+onShow(() => {
+	getList()
+	getBanners();
 
-	onShow(() => {
-		getList()
-		getBanners();
-	})
+	// 在 App.vue  中初始化 
+	uni.getSystemInfo({
+		success: (res) => {
+			const statusBarHeight = res.statusBarHeight;
+			const navBarHeight = res.platform === 'android' ? 48 : 44 + res.statusBarHeight;
+			globalData.value = { statusBarHeight, navBarHeight };
+			console.log('statusBarHeight', statusBarHeight, navBarHeight);
+
+		}
+	});
+})
 </script>
 
 <style scoped lang="scss">
-	.main-content {
-		.home-banner {
-			display: flex;
-			align-items: center;
-			justify-content: space-between;
-			background: rgba(255, 255, 255, 1);
-			box-shadow: 0rpx 0rpx 0rpx rgba(0, 0, 0, 0), 0rpx 0rpx 0rpx rgba(0, 0, 0, 0), 0rpx 2.08rpx 4.17rpx rgba(0, 0, 0, 0.05);
-			padding: 20rpx 16rpx;
-		}
+.main-content {
+	background: rgba(255, 255, 255, 1);
+
+	.home-banner {
+		display: flex;
+		align-items: flex-end;
+		justify-content: space-between;
+		// background: rgba(255, 255, 255, 1);
+		// background-color: #ED806A;
+		background-color: rgba(221, 60, 62, 1);
+		box-shadow: 0rpx 0rpx 0rpx rgba(0, 0, 0, 0), 0rpx 0rpx 0rpx rgba(0, 0, 0, 0), 0rpx 2.08rpx 4.17rpx rgba(0, 0, 0, 0.05);
+		padding: 20rpx 16rpx;
+		color: #fff;
+		position: fixed;
+		top: 0px;
+		left: 0px;
+		right: 0;
+		z-index: 99;
+	}
 
-		.home-banner-left {
-			display: flex;
-			align-items: center;
+	.home-banner-left {
+		display: flex;
+		align-items: center;
+		width: 30%;
+	}
 
-		}
+	.home-banner-center {
+		flex: 1;
+		font-size: 38rpx;
+	}
 
-		.home-main {
-			padding: 12px 16px;
+	.home-banner-rigth {
+		width: 30%;
+	}
 
-			.custom-swiper {}
+	.home-main {
+		padding: 12px 16px 0;
 
-			.home-grid {
-				margin-bottom: 32px;
-			}
 
-		}
+	}
 
-		.home-ranking {
-			padding: 12px 16px;
-		}
+	.home-ranking {
+		padding: 24rpx 16px;
 	}
+}
 
-	.hot-box {
-		padding: 12px 16px;
-		display: grid;
-		grid-template-columns: repeat(2, 1fr);
-		/* 3 列,每列等宽 */
-		gap: 32rpx;
-
-		.hot-item {
-			.hot-item {
-				padding: 12px 16px;
-			}
-		}
+.hot-box-title {
+	padding: 0 32rpx;
+}
+
+.hot-swiper {
+	padding: 24rpx 32rpx 0;
+}
+
+.hot-box {
+	padding: 24rpx 32rpx;
+	display: grid;
+	grid-template-columns: repeat(2, 1fr);
+	gap: 8rpx;
+
+
+	.hot-item {
+		// padding: 32rpx 16rpx;
+		// border-radius: 10rpx;
 	}
+}
+
+.home-grid2 {
+	margin-bottom: 32rpx;
+	background: #fff;
+	padding: 12px 0;
+	border-radius: 8px;
+}
+
+.home-g-bgc {
+	background: #f7f7f7;
+	padding: 24rpx;
+}
 </style>

+ 3 - 1
pages/login.vue

@@ -87,7 +87,9 @@
 
 	// 用户协议
 	const handleUserAgrement = () => {
-		
+		uni.navigateTo({
+			url: '/pages_home/pages/login/user'
+		})
 	};
 
 	// 登录方法

+ 1 - 1
pages_home/pages/client/details.vue

@@ -172,7 +172,7 @@
 	onLoad((options) => {
 		const dataList = JSON.parse(decodeURIComponent(options.dataList));
 		// businessName
-		// console.log(option, '>>>>>option');
+		console.log(dataList, '>>>>>option');
 		// data.value = option;
 
 		list1.value = dataList

A különbségek nem kerülnek megjelenítésre, a fájl túl nagy
+ 37 - 68
pages_home/pages/login/index.vue


+ 43 - 0
pages_home/pages/login/user.vue

@@ -0,0 +1,43 @@
+<template>
+	<view class="privacy-main">
+		<view class="indent">重庆金树林科技有限公司已根据国家相关部门颁发的关于互联网平台《个人信息保护法》、《网络数据安全管理条例》等最新法规,制定本协议。</view>
+		<view class="bold">一、协议确认与修改</view>
+		<view>1.用户注册即视为同意本协议及重庆金树林科技有限公司运营的“金邻助家”服务平台规则,协议具有法律效力。</view>
+		<view>2.平台保留修改协议的权利,修改后将通过公告或推送通知,继续使用视为接受变更。</view>
+		<view class="bold">二、服务说明</view>
+		<view>1.服务范围:本平台提供志愿者家庭帮扶服务的信息展示、预约、支付、评价等线上功能,具体服务由第三方志愿者或合作方提供。</view>
+		<view>2.服务变更:平台有权根据运营需要调整服务内容,用户可自主选择是否继续使用。</view>
+		<view class="bold">三、账号管理</view>
+		<view>1.实名认证:用户需提供真实身份信息(如姓名、手机号、身份证、资格证等),企业用户需提供营业执照等相关资质证书和材料。</view>
+		<view>2.账号安全:用户对账号密码安全负责,不得转让、出借账号。如发现盗用需立即通知平台。</view>
+		<view>3.注销规则:用户可申请注销账号,注销后数据将按隐私政策处理。</view>
+		<view class="bold">四、用户义务</view>
+		<view>1.信息真实性:确保提交的信息(如家庭地址、服务需求等)真实有效。</view>
+		<view>2.合法使用:禁止利用平台从事违法活动(如传销、欺诈等)、发布违规内容(如虚假订单、辱骂信息等)。</view>
+		<view>3.责任承担:因用户违规导致的损失(如恶意差评、泄露服务者隐私等),用户需独立承担责任。</view>
+		<view class="bold">五、责任限制</view>
+		<view>1.第三方服务:平台仅提供信息中介服务,服务质量纠纷由用户与服务提供方协商解决,平台可协助但不承担直接责任。</view>
+		<view>2.不可抗力:因自然灾害、政策调整等导致服务中断,平台不承担违约责任。</view>
+		<view class="bold">六、知识产权</view>
+		<view>1.平台内容(Logo、文字、软件代码等)所有权归重庆金树林科技有限公司所有,未经授权不得复制、商用。</view>
+		<view>2.用户发布的内容(如评价、图片等)默认授予平台免费使用权(限于业务推广)。</view>
+		<view class="bold">七、争议解决</view>
+		<view>1.争议优先协商,协商不成可向公司所在地(重庆)有管辖权的法院提起诉讼。</view>
+	</view>
+</template>
+
+<script>
+</script>
+
+<style>
+.privacy-main {
+	padding: 32rpx;
+}
+.indent {
+	text-indent: 2em;
+}
+.bold {
+	font-weight: bold;
+}
+
+</style>

BIN
static/images/tabbar/home.png


BIN
static/images/tabbar/home_.png


BIN
static/images/tabbar/mine.png


BIN
static/images/tabbar/mine_.png


BIN
static/images/tabbar/work.png


BIN
static/images/tabbar/work_.png


+ 1 - 1
static/scss/server.scss

@@ -1,6 +1,6 @@
 .serve-title {
     font-size: 18px;
-    font-weight: 400;
+    font-weight: bold;
     line-height: 28px;
     color: rgba(51, 51, 51, 1);
 }

BIN
static/serverImg/home/ranking2.png