From bf42cd15dc7a71ebf7aa5242ad5c29414df27be9 Mon Sep 17 00:00:00 2001
From: MrShi <1878285526@qq.com>
Date: 星期五, 30 一月 2026 14:11:25 +0800
Subject: [PATCH] 优化
---
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