From 57f3afad90b0748424b92bca3754aeed994269a7 Mon Sep 17 00:00:00 2001
From: zxl <763096477@qq.com>
Date: 星期四, 19 六月 2025 20:04:32 +0800
Subject: [PATCH] 注释客户管理

---
 api/customerManager.js                    |   13 +++
 pages/customerManager/customerManager.vue |  225 ++++++++++++++++++++++++++++++++++++++++++++-----------
 2 files changed, 192 insertions(+), 46 deletions(-)

diff --git a/api/customerManager.js b/api/customerManager.js
index e69de29..b358cc5 100644
--- a/api/customerManager.js
+++ b/api/customerManager.js
@@ -0,0 +1,13 @@
+/**
+ * 瀹㈡埛绠$悊API
+ */
+import { http, Method } from "@/utils/request.js";
+
+export function getPage(param){
+	return http.request({
+		url:"/lmk/customer",
+		method: Method.GET,
+		needToken: true,
+		data:param
+	})
+}
\ No newline at end of file
diff --git a/pages/customerManager/customerManager.vue b/pages/customerManager/customerManager.vue
index f2e7aa5..f8b7435 100644
--- a/pages/customerManager/customerManager.vue
+++ b/pages/customerManager/customerManager.vue
@@ -1,50 +1,59 @@
 <template>
-	<view >
+	<view class="container">
+		<view class="header">
+			<text class="title">瀹㈡埛鍒楄〃</text>
+		</view>
+		<!-- 鎼滅储妗� -->
+		<view class="search-box">
+			<u-search v-model="query.username" placeholder="鎼滅储瀹㈡埛" :showAction="false" @change="searchMember"></u-search>
+		</view>
+
 		<!-- 鍐呭鍖哄煙 -->
-		<scroll-view scroll-y  style="height: 100vh;"   @scrolltolower="loadMore" class="user-list"
-			 :lower-threshold="100"
-			>
-			<view >
-			<view class="user-item" v-for="(user, index) in userList" :key="user.id" >
-			
-				<view class="user-info">
-					<text class="realName">{{ user.realName }}</text>
-					<text class="mobile">{{ user.mobile }}</text>
+		<scroll-view scroll-y class="member-list" @scrolltolower="loadMore" :lower-threshold="100">
+			<view>
+				<view class="member-item" v-for="(member, index) in memberList" :key="member.id"
+					v-if="memberList.length > 0">
+
+					<view class="member-info">
+						<text class="mobile">{{ member.mobile }}</text>
+						<text class="region">{{ member.region }}</text>
+					</view>
+					<!-- 鎿嶄綔鎸夐挳鍖哄煙 -->
+					<view class="action-buttons">
+						<u-button type="primary" size="mini" @click.stop="navigateToDetail(member.id)"
+							class="edit-btn">淇敼</u-button>
+						<u-button type="error" size="mini" @click.stop="joinBlack(member.id)"
+							class="delete-btn"></u-button>
+					</view>
+
 				</view>
-				<!-- 鎿嶄綔鎸夐挳鍖哄煙 -->
-				<view class="action-buttons">
-					<u-button type="primary" size="mini" @click.stop="restPassword(user.memberId)" class="edit-btn">閲嶇疆瀵嗙爜</u-button>
-					<u-button type="primary" size="mini" @click.stop="navigateToDetail(user.id)" class="edit-btn">淇敼</u-button>
-					<u-button type="error" size="mini" @click.stop="deleteUser(user.id)"
-						class="delete-btn">鍒犻櫎</u-button>
-				</view>
-			
-			</view>
 			</view>
 
-			 <!-- 鏀硅繘鐨勫姞杞芥洿澶氭彁绀� -->
-			      <view >
-			        <u-loadmore  class="load-more"
-			          v-if="mockData.length > 0"
-			          :status="loading ? 'loading' : noMore ? 'nomore' : 'loadmore'"
-			          :load-text="{
+			<!-- 鏀硅繘鐨勫姞杞芥洿澶氭彁绀� -->
+			<view>
+				<u-loadmore class="load-more" v-if="memberList.length > 0"
+					:status="loading ? 'loading' : noMore ? 'nomore' : 'loadmore'" :load-text="{
 			            loadmore: '涓婃媺鍔犺浇鏇村',
 			            loading: '姝e湪鍔犺浇',
 			            nomore: '娌℃湁鏇村浜�'
-			          }"
-			        />
-			      </view>
-				  <view style="height:150rpx">
-					  
-				  </view>
+			          }" />
+			</view>
+			<view style="height:150rpx">
+
+			</view>
 		</scroll-view>
-	
-		
-	
+
+
+
 	</view>
 </template>
 
 <script>
+	import {
+		getPage,
+		
+	} from "@/api/customerManager.js"
+	
 	import UIcon from '@/uview-components/uview-ui/components/u-icon/u-icon.vue';
 	import UButton from '@/uview-components/uview-ui/components/u-button/u-button.vue';
 	import UForm from '@/uview-components/uview-ui/components/u-form/u-form.vue';
@@ -52,7 +61,8 @@
 	import UInput from '@/uview-components/uview-ui/components/u-input/u-input.vue';
 	import USearch from '@/uview-components/uview-ui/components/u-search/u-search.vue';
 	import UPopup from '@/uview-components/uview-ui/components/u-popup/u-popup.vue';
-	import ULoading from '@/uview-components/uview-ui/components/u-loading/u-loading.vue'
+	import ULoading from '@/uview-components/uview-ui/components/u-loading/u-loading.vue';
+	import ULoadmore from '@/uview-components/uview-ui/components/u-loadmore/u-loadmore.vue';
 	export default {
 		components: {
 			UIcon,
@@ -62,25 +72,148 @@
 			UInput,
 			USearch,
 			UPopup,
-			ULoading
+			ULoading,
+			ULoadmore,
 		},
 		data() {
 			return {
-				
+				loading: false,
+				noMore: false,
+
+				query: {
+					username: '',
+					pageNumber: 1,
+					pageSize: 15,
+				},
+				memberList: [],
+				total:0,
 			}
 		},
+		onLoad(){
+			this.getPage()
+		},
 		methods: {
-			
+			// 鎼滅储鐢ㄦ埛
+			searchMember() {
+				this.query.pageNumber = 1
+				this.noMore = false
+				this.clerkList = []
+				this.getPage()
+			},
+			joinBlack(memberId){
+				
+			},
+			async getPage(){
+				uni.showLoading({
+					title: '鍔犺浇涓�'
+				});
+				getPage(this.query).then(res =>{
+					uni.hideLoading();
+					if (res.statusCode === 200) {
+						const newData = res.data.data;
+						// 鏇存柊鎬绘暟鎹噺
+						this.total = res.data.total || 0;
+						// 杩藉姞鎴栨浛鎹㈡暟鎹�
+						this.memberList = this.query.pageNumber === 1 ?
+							newData :
+							[...this.memberList, ...newData];
+							
+						// 鍒ゆ柇鏄惁杩樻湁鏇村鏁版嵁
+						this.noMore = newData.length < this.query.pageSize ||
+							this.memberList.length >= this.total;
+						
+					}
+				})
+			},
+			// 鍔犺浇鏇村
+			loadMore() {
+				if (!this.noMore) {
+					this.query.pageNumber++
+					this.getPage()
+				}
+			},
+
 		}
 	}
 </script>
 
-<style>
-.load-more {
-			padding: 20rpx 0;
-			text-align: center;
-			color: #999;
-			font-size: 26rpx;
-			background-color: #f7f8fa;
+<style lang="scss" scoped>
+	.action-buttons {
+	  display: flex;
+	  margin-left: 20rpx;
+	}
+	.container {
+		padding: 20rpx;
+		height: 100vh;
+		display: flex;
+		flex-direction: column;
+		background-color: #f5f5f5;
+	}
+
+	.header {
+		display: flex;
+		justify-content: space-between;
+		align-items: center;
+		padding: 20rpx 0;
+		margin-bottom: 20rpx;
+
+		.title {
+			font-size: 36rpx;
+			font-weight: bold;
+			color: #333;
 		}
-</style>
+
+
+	}
+
+	.search-box {
+		margin-bottom: 20rpx;
+	}
+
+	.member-list {
+		flex: 1;
+		overflow: hidden;
+	}
+
+	.member-item {
+		display: flex;
+		align-items: center;
+		padding: 20rpx;
+		margin-bottom: 20rpx;
+		background-color: #fff;
+		border-radius: 12rpx;
+		box-shadow: 0 2rpx 8rpx rgba(0, 0, 0, 0.05);
+
+		.avatar {
+			width: 80rpx;
+			height: 80rpx;
+			border-radius: 50%;
+			margin-right: 20rpx;
+		}
+
+		.member-info {
+			flex: 1;
+			display: flex;
+			flex-direction: column;
+
+			.mobile {
+				font-size: 32rpx;
+				color: #333;
+				margin-bottom: 8rpx;
+			}
+
+			.region {
+				font-size: 24rpx;
+				color: #999;
+			}
+		}
+	}
+
+	.load-more {
+		padding: 20rpx 0;
+		text-align: center;
+		color: #999;
+		font-size: 26rpx;
+		background-color: #f7f8fa;
+	}
+</style>
\ No newline at end of file

--
Gitblit v1.8.0