Преглед на файлове

完成研究报告列表页面设计

LinWuTai преди 1 месец
родител
ревизия
e3fc0c5fdb
променени са 3 файла, в които са добавени 359 реда и са изтрити 3 реда
  1. 10 0
      pages.json
  2. 9 3
      pages/researchReport/reportHome/reportHome.vue
  3. 340 0
      pages/researchReport/reportList/reportList.vue

+ 10 - 0
pages.json

@@ -406,6 +406,16 @@
               "titleNView": true
             }
           }
+        },
+        {
+        	"path" : "pages/researchReport/reportList/reportList",
+        	"style" : 
+        	{
+						"enablePullDownRefresh": false,
+						"app-plus": {
+							"titleNView": true
+						}
+        	}
         }
 	],
 	"globalStyle": {

+ 9 - 3
pages/researchReport/reportHome/reportHome.vue

@@ -2,7 +2,7 @@
 	<view class="container">
 		<view v-show="menuCurrent === 0">
 			<view class="menus-box">
-				<view class="menus-item-box">
+				<view class="menus-item-box" @click="toReportList('二手住宅市场')">
 					<view class="icon-box">
 						<view class="iconfont icon-hetong"></view>
 					</view>
@@ -10,7 +10,7 @@
 						二手住宅市场
 					</view>
 				</view>
-				<view class="menus-item-box">
+				<view class="menus-item-box" @click="toReportList('住宅租赁市场')">
 					<view class="icon-box">
 						<view class="iconfont icon-chengshi"></view>
 					</view>
@@ -18,7 +18,7 @@
 						住宅租赁市场
 					</view>
 				</view>
-				<view class="menus-item-box">
+				<view class="menus-item-box" @click="toReportList('房地产中介行业')">
 					<view class="icon-box">
 						<view class="iconfont icon-zhongjie"></view>
 					</view>
@@ -135,6 +135,12 @@
 		menuCurrent.value = index
 	}
 	
+	function toReportList(model) {
+		uni.navigateTo({
+			url: `/pages/researchReport/reportList/reportList?model=${model}`
+		})
+	}
+	
 	const list = [
 		{
 			id: '01',

+ 340 - 0
pages/researchReport/reportList/reportList.vue

@@ -0,0 +1,340 @@
+<template>
+	<view class="container">
+		<view class="header-box">
+			<view class="search-box">
+				<u-search
+					v-model="searchForm.keyword"
+					:clearabled="true"
+					bg-color="#E5E5E5"
+					:input-style="searchInputStyle"
+					placeholder="搜索您想要的内容"
+				></u-search>
+			</view>
+			<view class="tab-box">
+				<u-tabs 
+					name="label"
+					:list="searchType"
+					:is-scroll="true"
+					v-model="searchForm.type"
+					@change="onSearchTypeChange"
+					font-size="24"
+					:bold="false"
+					inactive-color="#000000"
+					active-color="#000000"
+					:bar-style="{'background-color': '#2979ff'}"
+					:gutter="25"
+					height="45"
+				></u-tabs>
+			</view>
+		</view>
+		<view class="list-box">
+			<view class="list-item-box" v-for="item in list" :key="item.id" @click="onClickReport(item)">
+				<view class="image-box">
+					<image :src="item.image" mode="aspectFill"></image>
+				</view>
+				<view class="info-box">
+					<view class="title">
+						{{item.title}}
+					</view>
+					<view class="type">
+						<span>{{item.type}}</span>
+					</view>
+					<view class="func">
+						<view class="" v-if="item.free > 0"></view>
+						<view class="price" v-if="item.price">
+							¥{{item.price}}元
+						</view>
+						<view class="member-free" v-if="item.price == null && item.free < 1">
+							{{item.memberFree > 0 ? '会员免费' : `会员:${item.memberPrice}元`}}
+						</view>
+						<view class="not-member-price" v-if="item.price == null && item.free < 1">
+							非会员:¥{{item.notMemberPrice}}元
+						</view>
+						<view v-if="item.free > 0" class="button free">免费</view>
+						<view v-else-if="item.memberFree > 0" class="button member-free">会员免费</view>
+						<view v-else :class="['button', item.status > 0 ? 'free' : 'buy']">{{item.status > 0 ? '已购买' : '立即购买'}}</view>
+					</view>
+				</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script setup>
+	import { ref, computed } from 'vue'
+	import { onLoad } from '@dcloudio/uni-app'
+	
+	const customButtonStyle = {
+		height: '40rpx',
+		lineHeight: '40rpx',
+		padding: '0 30rpx'
+	}
+	const searchInputStyle = {
+		backgroundColor: '#E5E5E5'
+	}
+	const searchType = [
+		{
+			label: '全部',
+			value: 0
+		},
+		{
+			label: '每周成交简报',
+			value: 1
+		},
+		{
+			label: '月度成交简报',
+			value: 2
+		},
+		{
+			label: '经理人指数报告',
+			value: 3
+		},
+		{
+			label: '一周楼市资讯',
+			value: 4
+		},
+	]
+	function onSearchTypeChange(val) {
+		console.log('搜索表单', searchForm.value)
+	}
+	const searchForm = ref({
+		keyword: '',
+		type: 0
+	})
+	
+	const modelName = ref()
+	
+	const list = [
+		{
+			id: '01',
+			title: '2024年11月广州市中介促成二手住宅市场交易简报',
+			time: '2023年8月8日',
+			image: 'https://img.shetu66.com/2023/10/21/1697901453723364.png',
+			type: '月度成交简报',
+			price: '9.9',
+			memberPrice: '9.9',
+			notMemberPrice: null,
+			free: 0, // 是否免费
+			memberFree: 0, // 是否会员免费
+			status: 0, // 是否购买
+		},
+		{
+			id: '02',
+			title: '2024年11月广州市中介促成二手住宅市场交易简报',
+			time: '2023年8月8日',
+			image: 'https://img.shetu66.com/2023/12/13/1702403646894275.png',
+			type: '月度成交简报',
+			price: '9.9',
+			memberPrice: '9.9',
+			notMemberPrice: null,
+			free: 0, // 是否免费
+			memberFree: 0, // 是否会员免费
+			status: 1, // 是否购买
+		},
+		{
+			id: '03',
+			title: '2024年11月广州市中介促成二手住宅市场交易简报',
+			time: '2023年8月8日',
+			image: 'https://img.shetu66.com/2023/10/16/1697397333933789.png',
+			type: '月度成交简报',
+			price: null,
+			memberPrice: null,
+			notMemberPrice: null,
+			free: 1, // 是否免费
+			memberFree: 0, // 是否会员免费
+			status: 0, // 是否购买
+		},
+		{
+			id: '04',
+			title: '2024年11月广州市中介促成二手住宅市场交易简报',
+			time: '2023年8月8日',
+			image: 'https://img.shetu66.com/2023/10/24/1698106006242859.png',
+			type: '月度成交简报',
+			price: '9.9',
+			memberPrice: null,
+			notMemberPrice: null,
+			free: 0, // 是否免费
+			memberFree: 1, // 是否会员免费
+			status: 0, // 是否购买
+		},
+		{
+			id: '05',
+			title: '2024年11月广州市中介促成二手住宅市场交易简报',
+			time: '2023年8月8日',
+			image: 'https://static.fxbaogao.com/subject/cover/prod/361.jpg',
+			type: '月度成交简报',
+			price: '9.9',
+			memberPrice: null,
+			notMemberPrice: null,
+			free: 0, // 是否免费
+			memberFree: 1, // 是否会员免费
+			status: 0, // 是否购买
+		},
+		{
+			id: '06',
+			title: '2024年11月广州市中介促成二手住宅市场交易简报',
+			time: '2023年8月8日',
+			image: 'https://img.shetu66.com/2023/10/16/1697387221220874.png',
+			type: '月度成交简报',
+			price: null,
+			memberPrice: null,
+			notMemberPrice: '9.9',
+			free: 0, // 是否免费
+			memberFree: 1, // 是否会员免费
+			status: 1, // 是否购买
+		},
+		{
+			id: '07',
+			title: '2024年11月广州市中介促成二手住宅市场交易简报',
+			time: '2023年8月8日',
+			image: 'https://img.shetu66.com/2023/10/21/1697901453723364.png',
+			type: '月度成交简报',
+			price: null,
+			memberPrice: '9.9',
+			notMemberPrice: '19.9',
+			free: 0, // 是否免费
+			memberFree: 0, // 是否会员免费
+			status: 0, // 是否购买
+		},
+		{
+			id: '08',
+			title: '2024年11月广州市中介促成二手住宅市场交易简报',
+			time: '2023年8月8日',
+			image: 'https://img.shetu66.com/2023/12/13/1702403646894275.png',
+			type: '月度成交简报',
+			price: null,
+			memberPrice: '9.9',
+			notMemberPrice: '19.9',
+			free: 0, // 是否免费
+			memberFree: 0, // 是否会员免费
+			status: 1, // 是否购买
+		},
+	]
+	
+	function onClickReport(report) {
+		uni.navigateTo({
+			url: `/pages/reportDetail/reportDetail?id=${report.id}&title=${report.title}`
+		})
+	}
+	
+	onLoad((load) => {
+		if (load.model) {
+			modelName.value = load.model
+			uni.setNavigationBarTitle({
+				title: modelName.value
+			})
+		}
+	})
+</script>
+
+<style lang="scss">
+$image-width: 230rpx;
+	
+	.container {
+		height: 100vh;
+		width: 100vw;
+		background-color: $uni-text-color-inverse;
+		
+		.header-box {
+			padding: 0 20rpx;
+			background-color: $uni-text-color-inverse;
+			@include topMagnet();
+		}
+		
+		.search-box {
+			margin-bottom: 20rpx;
+			::v-deep(.u-search) {
+				background-color: #e5e5e5;
+				border-radius: 50rpx;
+				
+				.u-action {
+					width: 18%;
+					background-color: $uni-color-primary;
+					border-radius: 50rpx;
+					color: $uni-text-color-inverse;
+					margin-right: 8rpx;
+					font-size: 28rpx;
+					line-height: 50rpx;
+					letter-spacing: 3rpx;
+					text-align: center;
+				}
+			}
+		}
+		
+		.list-box {
+			padding: 0 20rpx;
+			.list-item-box {
+				padding: 30rpx 20rpx;
+				display: flex;
+				gap: 20rpx;
+				height: 210rpx;
+				border-bottom: 5rpx solid #E6E6E6;
+				&:active {
+					background-color: $uni-bg-color-hover;
+				}
+				.image-box {
+					width: $image-width;
+					image {
+						width: $image-width;
+						flex: 0 0 $image-width;
+						height: 100%;
+						border-radius: $uni-card-border-radius;
+					}
+				}
+				.info-box {
+					.title {
+						font-size: $uni-title-font-size-2;
+						font-weight: bold;
+						line-height: 40rpx;
+						margin-bottom: 15rpx;
+						@include text-line-overflow(2);
+					}
+					.type {
+						font-size: $uni-font-size-2;
+						.iconfont {
+							font-size: $uni-font-size-2;
+							padding-right: 10rpx;
+						}
+					}
+					.func {
+						display: flex;
+						justify-content: space-between;
+						align-items: flex-end;
+						font-size: $uni-font-size-2;
+						font-weight: bold;
+						.button {
+							text-align: center;
+							width: 130rpx;
+						}
+						.price {
+							color: $uni-color-error;
+							font-size: $uni-title-font-size-3;
+						}
+						.not-member-price {
+							font-size: $uni-font-size-4;
+							color: $uni-text-color-grey;
+							text-align: end;
+						}
+						.buy {
+							padding: 6rpx 25rpx;
+							background-color: $uni-color-error;
+							border-radius: $uni-card-border-radius;
+							color: $uni-text-color-inverse;
+						}
+						.free {
+							padding: 6rpx 25rpx;
+							background-color: $uni-color-primary;
+							border-radius: $uni-card-border-radius;
+							color: $uni-text-color-inverse;
+						}
+						.member-free {
+							padding: 10rpx 20rpx;
+							@include backgroundImg('@/static/images/bg-label.png');
+							color: $uni-text-color;
+						}
+					}
+				}
+			}
+		}
+	}
+</style>