소스 검색

fix: 主页样式调整

chenjj 3 주 전
부모
커밋
c9b59faa68

+ 33 - 42
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,7 +83,7 @@
 	const selected = ref([])
 
 	// 普通用户
-	const serviceList1 = ref([{
+	const serviceList1 = [{
 			icon: '/static/Tioimages/1 妇女儿童权益保护服务.png',
 			name: '孩子陪伴',
 			key: 2,
@@ -158,10 +138,10 @@
 			name: '本地生活',
 			key: 11,
 		},
-	]);
+	]
 
 	//志愿者
-	const serviceList2 = ref([{
+	const serviceList2 = [{
 			icon: '/static/Tioimages/1v专业指导.png',
 			name: '陪伴陪聊',
 			key: 1,
@@ -221,7 +201,16 @@
 			name: '排班管理',
 			key: 7
 		},
-	]);
+	]
+
+	const serveiceList =computed(()=>{
+		console.log('userType ____>',userType);
+		
+		if(userType === 1){
+			return serviceList1
+		}
+		return serviceList2
+	})
 
 	const parentIdMap = {
 		'孩子陪护': 2,
@@ -238,9 +227,10 @@
 
 	// 宫格点击事件
 	const handleGridClick = async (index) => {
-		const service = serviceList1.value[index]; // 获取点击的服务条目
+		const service = serveiceList.value[index]; // 获取点击的服务条目
 		// 用户
 		if (userType == 1) {
+
 			// 动态获取 parentId
 			const parentId = getParentId(service); // 通过服务条目动态获取 parentId
 			const params = {
@@ -263,23 +253,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'
@@ -435,12 +422,16 @@
 	}
 
 .swiper {
-	height: 420rpx;
+	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 - 1
pages.json

@@ -14,7 +14,8 @@
 		{
 			"path": "pages/index",
 			"style": {
-				"navigationBarTitleText": "金邻助家"
+				"navigationBarTitleText": "金邻助家",
+				"navigationStyle": "custom"
 			}
 		},
 		{

+ 13 - 20
pages/common/rankingList/index.vue

@@ -26,31 +26,23 @@
 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>
@@ -66,12 +58,13 @@ const datas = [
         display: flex;
         align-items: flex-start;
         justify-content: space-between;
-        padding: 12px 0;
+        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);
 

+ 129 - 89
pages/index.vue

@@ -1,16 +1,18 @@
 <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-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>
@@ -18,38 +20,35 @@
 		</view>
 
 		<view class="home-grid">
+		
 			<Client />
 		</view>
 
-		<view class="home-grid hot-box">
+		<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;">
+				<img :src="item" alt="" style="width: 100%;height:  160rpx;">
 			</view>
 		</view>
 
-		<view class="home-grid">
-			<view class="serve-title hot-box-title">超值专区</view>
-			<view class="hot-swiper">
-					<up-swiper :list="ValueZone" indicator indicatorMode="line" circular></up-swiper>
+		<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>
-		</view>
 
-		<view class="home-ranking">
-			<ServIces :leftList="leftList" :rightList="rightList" v-if="userType == 1"></ServIces>
-			<RankingList v-if="userType === 2" />
+			<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"
-		/>
+
+		<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>
 
@@ -78,69 +77,72 @@ 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: '重庆市永川区',
+	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: '已经到底啦~'
-	})
-
-	const getList = async () => {
-		try {
-			loadmoreInfo.value.status = 'loading'
-			
-			const res = await volunteerinfolist();
-			
-			
-			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'
-			}
-			
-			
-			listData.value.push(...res.rows)
-			
-
-			let leftArr = [];
-			let rightArr = [];
-
-			listData.value.forEach((item, index) => {
-				index % 2 !== 0 ? leftArr.push(item) : rightArr.push(item);
-			});
-
-			leftList.value = leftArr;
-			rightList.value = rightArr;
-			pages.value.total = res.total;
-		} catch (error) {
-			listData.value = []
-			pages.value.total = 0
-			console.error('Error fetching data:', error);
-		} finally {
+
+// 分页
+const pages = ref({
+	current: 1,
+	pageSize: 10,
+	total: 0
+})
+
+const loadmoreInfo = ref({
+	status: 'loadmore',
+	loadingText: '努力加载中...',
+	loadmoreText: '点击加载更多~',
+	nomoreText: '已经到底啦~'
+})
+
+const getList = async () => {
+	try {
+		loadmoreInfo.value.status = 'loading'
+
+		const res = await volunteerinfolist();
+
+
+		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'
 		}
+
+
+		listData.value.push(...res.rows)
+
+
+		let leftArr = [];
+		let rightArr = [];
+
+		listData.value.forEach((item, index) => {
+			index % 2 !== 0 ? leftArr.push(item) : rightArr.push(item);
+		});
+
+		leftList.value = leftArr;
+		rightList.value = rightArr;
+		pages.value.total = res.total;
+	} catch (error) {
+		listData.value = []
+		pages.value.total = 0
+		console.error('Error fetching data:', error);
+	} finally {
+		loadmoreInfo.value.status = 'loadmore'
 	}
+}
 
 
 
@@ -169,34 +171,59 @@ const getBanners = async () => {
 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 {
+	background: rgba(255, 255, 255, 1);
+
 	.home-banner {
 		display: flex;
-		align-items: center;
+		align-items: flex-end;
 		justify-content: space-between;
-		background: rgba(255, 255, 255, 1);
+		// 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;
+		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;
-		}
 
 	}
 
@@ -208,6 +235,7 @@ onShow(() => {
 .hot-box-title {
 	padding: 0 32rpx;
 }
+
 .hot-swiper {
 	padding: 24rpx 32rpx 0;
 }
@@ -224,4 +252,16 @@ onShow(() => {
 		// border-radius: 10rpx;
 	}
 }
+
+.home-grid2 {
+	margin-bottom: 32rpx;
+	background: #fff;
+	padding: 12px 0;
+	border-radius: 8px;
+}
+
+.home-g-bgc {
+	background: #f7f7f7;
+	padding: 24rpx;
+}
 </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