From fad455d8943bd6af1501f7dca62f9530ed7d19cc Mon Sep 17 00:00:00 2001
From: doum <doum>
Date: 星期五, 30 一月 2026 15:29:29 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 mini-program/pages/index/index.vue |  251 ++++++++++++++++++++++++++++++++++++++------------
 1 files changed, 191 insertions(+), 60 deletions(-)

diff --git a/mini-program/pages/index/index.vue b/mini-program/pages/index/index.vue
index 0173946..364e67c 100644
--- a/mini-program/pages/index/index.vue
+++ b/mini-program/pages/index/index.vue
@@ -1,6 +1,6 @@
 <template>
 	<view class="index">
-		<!-- <view class="zhezhao"></view> -->
+		<view class="zhezhao" v-show="view" @click="view = null"></view>
 		<view class="head">
 			<view class="head-title">
 				<view class="head-title-left" @click="jumpList">
@@ -15,71 +15,86 @@
 			</view>
 			<view class="head-search">
 				<view class="head-search-input">
-					<u-search placeholder="璇疯緭鍏ヨ�佸笀濮撳悕" height="36" :showAction="false"></u-search>
+					<u-search placeholder="璇疯緭鍏ヨ�佸笀濮撳悕" height="36" v-model="form.name" :showAction="false" @search="search"></u-search>
 				</view>
 				<view class="cate">
-					<view class="cate-item">
-						<text>鍟嗕笟鍖栫被鍨�</text>
-						<image src="/static/ar_open7@2x.png" mode="widthFix"></image>
+					<view class="cate-item" @click="clickRow(1)">
+						<text :style="{ fontWeight: (view === 1 || form.bustypeIds) ? 'bold' : '', color: (view === 1 || form.bustypeIds) ? '#222222' : '' }">{{form.bustypeIds ? form.bustypeName : '鍟嗕笟鍖栫被鍨�'}}</text>
+						<image src="/static/ar_open_sel8@2x.png" mode="widthFix" v-if="view === 1"></image>
+						<image src="/static/ar_open7@2x.png" mode="widthFix" v-else></image>
 					</view>
-					<view class="cate-item">
-						<text>鎿呴暱棰嗗煙</text>
-						<image src="/static/ar_open7@2x.png" mode="widthFix"></image>
+					<view class="cate-item" @click="clickRow(2)">
+						<text :style="{ fontWeight: (view === 2 || form.fieldIds) ? 'bold' : '', color: (view === 2 || form.fieldIds) ? '#222222' : '' }">鎿呴暱棰嗗煙</text>
+						<image src="/static/ar_open_sel8@2x.png" mode="widthFix" v-if="view === 2"></image>
+						<image src="/static/ar_open7@2x.png" mode="widthFix" v-else></image>
 					</view>
-					<view class="cate-item">
-						<text>榛樿鎺掑簭</text>
-						<image src="/static/ar_open7@2x.png" mode="widthFix"></image>
+					<view class="cate-item" @click="clickRow(3)">
+						<text :style="{ fontWeight: (view === 3 || form.orderByType) ? 'bold' : '', color: (view === 3 || form.orderByType) ? '#222222' : '' }">{{form.orderByType ? form.orderByName : '榛樿鎺掑簭'}}</text>
+						<image src="/static/ar_open_sel8@2x.png" mode="widthFix" v-if="view === 3"></image>
+						<image src="/static/ar_open7@2x.png" mode="widthFix" v-else></image>
 					</view>
 				</view>
-				<!-- <view class="sou">
-					<view class="sou-cate">
-						<view class="sou-cate-item active">鍩硅鎻愭垚</view>
-						<view class="sou-cate-item">璋堝崟鎴愪氦</view>
-						<view class="sou-cate-item">涓诲姩钀ラ攢</view>
-					</view>
-					<view class="sou-list">
-						<view class="sou-list-item">
-							<text :style="{ color: '#2E68C4' }">鑾峰绫�</text>
-							<image src="/static/ic_selete@2x.png" mode="widthFix"></image>
+				<view class="sou" v-if="view">
+					<scroll-view scroll-y class="sou-list" v-show="view === 1">
+						<view class="sou-list-item" v-for="(item, index) in list1" :key="index" @click="clickSearch(index, 1)">
+							<text :style="{ color: item.active ? '#2E68C4' : '' }">{{item.name}}</text>
+							<image src="/static/ic_selete@2x.png" mode="widthFix" v-if="item.active"></image>
 						</view>
-						<view class="sou-list-item"><text>甯傚満绫�</text></view>
-						<view class="sou-list-item"><text>璁捐绫�</text></view>
-						<view class="sou-list-item"><text>鍩硅绫�</text></view>
-					</view>
-				</view> -->
+					</scroll-view>
+					<scroll-view scroll-y class="sou-cate" v-show="view === 2">
+						<view class="sou-cate-list">
+							<view :class="{'sou-cate-item': true, 'active': item.active}" v-for="(item, index) in list2" :key="index" @click="clickSearch(index, 2)">{{item.name}}</view>
+						</view>
+					</scroll-view>
+					<scroll-view scroll-y class="sou-list" v-show="view === 3">
+						<view class="sou-list-item" v-for="(item, index) in list3" :key="index" @click="clickSearch(index, 3)">
+							<text :style="{ color: item.active ? '#2E68C4' : '' }">{{item.name}}</text>
+							<image src="/static/ic_selete@2x.png" mode="widthFix" v-if="item.active"></image>
+						</view>
+					</scroll-view>
+				</view>
 			</view>
 		</view>
 		<view class="list">
-			<view class="item" v-for="(item, index) in 10" :key="index" @click="jump">
+			<view class="item" v-for="(item, index) in list" :key="index" @click="jump(item)">
 				<view class="item-tx">
-					<image src="/static/logo.png" mode="widthFix"></image>
+					<image :src="item.fullImgurl" mode="widthFix"></image>
 				</view>
 				<view class="item-info">
 					<view class="item-info-a">
-						<text>鍒樻案鎱�</text>
-						<text>P6锝滈攢鍞煿璁笀</text>
+						<text>{{item.name}}</text>
+						<template v-if="item.levelName && item.positon">
+							<text>{{item.levelName}}锝渰{item.positon}}</text>
+						</template>
+						<template v-if="item.levelName && !item.positon">
+							<text>{{item.levelName}}</text>
+						</template>
+						<template v-if="!item.levelName && item.positon">
+							<text>{{item.positon}}</text>
+						</template>
 					</view>
-					<view class="item-info-b">
-						<view class="item-info-b-row">甯傚満绫�</view>
-						<view class="item-info-b-row">鑾峰绫�</view>
-						<view class="item-info-b-row">鍩硅绫�</view>
+					<view class="item-info-b" v-if="item.typeList && item.typeList.length > 0">
+						<view class="item-info-b-row" v-for="(child, i) in item.typeList" :key="i">{{child.name}}</view>
 					</view>
 					<view class="item-info-c">
 						<view class="item-info-c-item">
 							<view class="item-info-c-item-label">浠庝笟骞撮檺锛�</view>
-							<view class="item-info-c-item-val">10骞�</view>
+							<view class="item-info-c-item-val">{{item.workYears}}骞�</view>
 						</view>
 						<view class="item-info-c-item">
 							<view class="item-info-c-item-label">杩戝崐骞存湇鍔″晢鍦烘暟锛�</view>
-							<view class="item-info-c-item-val">38涓�</view>
+							<view class="item-info-c-item-val">{{item.serveNum}}涓�</view>
 						</view>
 					</view>
-					<view class="item-info-d">
-						浠庝簨璁捐鍟嗕笟鍖栧凡鏈夊骞达紝鎿呴暱鍚勭椋庢牸锛屾湇鍔″ぇ瀹㈡埛瓒呰繃50鎴封��<text>鏇村</text>
+					<view class="item-info-d" v-if="item.isShow">
+						{{item.zhankai ? item.content : item.contentCopy}}<text @click.stop="zhankai(item)">{{item.zhankai ? '鏀惰捣' : '鏇村'}}</text>
+					</view>
+					<view class="item-info-d" v-else>
+						{{item.content}}
 					</view>
 					<view class="item-info-price">
 						<text>鏍囧噯鏀惰垂</text>
-						<text>2900</text>
+						<text>{{item.fee}}</text>
 					</view>
 				</view>
 			</view>
@@ -91,22 +106,124 @@
 	export default {
 		data() {
 			return {
-				
+				form: {
+					orderByType: '',
+					orderByName: '',
+					fieldIds: '',
+					bustypeIds: '',
+					bustypeName: '',
+					name: ''
+				},
+				list1: [],
+				list2: [],
+				list3: [
+					{ name: '鏀惰垂浠庨珮鍒颁綆', id: '0', active: false },
+					{ name: '鏀惰垂浠庝綆鍒伴珮', id: '1', active: false },
+					{ name: '绛夌骇浠庨珮鍒颁綆', id: '2', active: false },
+					{ name: '绛夌骇浠庝綆鍒伴珮', id: '3' , active: false},
+					{ name: '鏈嶅姟鏁颁粠楂樺埌浣�', id: '4', active: false }
+				],
+				view: null,
+				page: 1,
+				next: true,
+				list: []
 			}
 		},
 		onLoad() {
-
+			this.getCategary()
+			this.getList()
+		},
+		onReachBottom() {
+			this.getList()
 		},
 		methods: {
-			jump() {
+			getList() {
+				if (!this.next) return
+				this.$u.api.memberPage({
+					capacity: 10,
+					page: this.page,
+					model: this.form
+				}).then(res => {
+					if (res.code === 200) {
+						res.data.records.forEach(item => {
+							item.isShow = false
+							if (item.content && item.content.length > 30) {
+								item.isShow = true
+								item.zhankai = false
+								item.contentCopy = item.content.substring(0, 30) + '...'
+							}
+						})
+						this.page++
+						this.list.push(...res.data.records)
+						if (res.data.total === this.list.length) {
+							this.next = false
+						}
+					}
+				})
+			},
+			search() {
+				this.next = true
+				this.page = 1
+				this.list = []
+				this.getList()
+			},
+			clickSearch(i, type) {
+				if (type === 1) {
+					this.form.bustypeIds = this.list1[i].id
+					this.form.bustypeName = this.list1[i].name
+					this.list1.forEach((item, index) => {
+						item.active = index === i
+					})
+					this.view = null
+				} else if (type === 2) {
+					this.list2[i].active = !this.list2[i].active
+					this.form.fieldIds = this.list2.filter(item => item.active).map(item => item.id).join(',')
+					this.$forceUpdate()
+				} else {
+					this.form.orderByType = this.list3[i].id
+					this.form.orderByName = this.list3[i].name
+					this.list3.forEach((item, index) => {
+						item.active = index === i
+					})
+					this.view = null
+				}
+				this.search()
+			},
+			clickRow(view) {
+				if (view === this.view) {
+					this.view = null
+				} else {
+					this.view = view
+				}
+			},
+			getCategary() {
+				this.$u.api.categoryList({ type: 1 })
+					.then(res => {
+						if (res.code === 200) {
+							res.data.active = false
+							this.list1 = res.data
+						}
+					})
+				this.$u.api.categoryList({ type: 2 })
+					.then(res => {
+						if (res.code === 200) {
+							res.data.active = false
+							this.list2 = res.data
+						}
+					})
+			},
+			jump(item) {
 				uni.navigateTo({
-					url: '/pages/details/details'
+					url: '/pages/details/details?id=' + item.id
 				})
 			},
 			jumpList() {
 				uni.navigateTo({
 					url: '/pages/ranking-list/ranking-list'
 				})
+			},
+			zhankai(item) {
+				item.zhankai = !item.zhankai
 			}
 		}
 	}
@@ -246,6 +363,7 @@
 						margin-top: 20rpx;
 						text {
 							color: #2E68C4;
+							margin-left: 10rpx;
 						}
 					}
 				}
@@ -314,29 +432,42 @@
 					background-color: #ffffff;
 					.sou-cate {
 						width: 100%;
+						max-height: 480rpx;
 						padding: 0 0 30rpx 0;
 						box-sizing: border-box;
-						display: flex;
-						align-items: center;
-						justify-content: space-between;
-						.active {
-							background: rgba(46,104,196,0.1) !important;
-							color: #2E68C4 !important;
-						}
-						.sou-cate-item {
-							width: 216rpx;
-							height: 72rpx;
-							line-height: 72rpx;
-							text-align: center;
-							background: #F7F7F7;
-							border-radius: 8rpx;
-							font-weight: 400;
-							font-size: 28rpx;
-							color: #333333;
+						.sou-cate-list {
+							width: 100%;
+							display: flex;
+							align-items: center;
+							// justify-content: space-between;
+							flex-wrap: wrap;
+							.active {
+								background: rgba(46,104,196,0.1) !important;
+								color: #2E68C4 !important;
+							}
+							.sou-cate-item {
+								padding: 0 15rpx;
+								box-sizing: border-box;
+								height: 72rpx;
+								line-height: 72rpx;
+								text-align: center;
+								background: #F7F7F7;
+								border-radius: 8rpx;
+								font-weight: 400;
+								font-size: 28rpx;
+								color: #333333;
+								margin-top: 20rpx;
+								margin-right: 15rpx;
+								&:last-child {
+									margin-right: 0 !important;
+								}
+							}
 						}
 					}
 					.sou-list {
 						width: 100%;
+						max-height: 480rpx;
+						overflow-y: scroll;	
 						display: flex;
 						flex-direction: column;
 						.sou-list-item {

--
Gitblit v1.9.3