From b9b64778f693ebe82fcbc97837b6012dadb3b084 Mon Sep 17 00:00:00 2001
From: doum <doum>
Date: 星期二, 10 二月 2026 18:03:39 +0800
Subject: [PATCH] 经销商管理

---
 mini-program/pages/distributor/distributor.vue |  244 +++++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 217 insertions(+), 27 deletions(-)

diff --git a/mini-program/pages/distributor/distributor.vue b/mini-program/pages/distributor/distributor.vue
index efe8f20..d23a85f 100644
--- a/mini-program/pages/distributor/distributor.vue
+++ b/mini-program/pages/distributor/distributor.vue
@@ -44,11 +44,12 @@
 					<view class="data-c-item">
 						<view class="data-c-item-top">
 							<text>閿�鍞(鍏�)</text>
-							<image src="/static/icon/ic_visible@2x.png" mode="widthFix"></image>
+							<image :src="showMoney?'/static/icon/ic_visible@2x.png':'/static/icon/ic_invisible@2x.png'" @click="showMoney=!showMoney" mode="widthFix"></image>
 						</view>
 						<view class="data-c-item-bottom">
-							<text>{{(countData.saleTotal||0).toFixed(0)}}</text>
-							<text>.{{countData.saleTotalFloat || '00'}}</text>
+							<text v-if="showMoney">{{(countData.saleTotalNum||0).toFixed(0)}}</text>
+							<text  v-if="showMoney">{{countData.saleTotalFloat || '.00'}}</text>
+							<text  v-if="!showMoney">****</text>
 						</view>
 					</view>
 					<view class="data-c-item">
@@ -56,8 +57,9 @@
 							<text>缁撶畻鍒╂鼎(鍏�)</text>
 						</view>
 						<view class="data-c-item-bottom">
-							<text>{{(countData.profitTotal||0).toFixed(0)}}</text>
-							<text>.{{countData.profitTotalFloat || '00'}}</text>
+							<text  v-if="showMoney">{{(countData.profitTotalNum||0).toFixed(0)}}</text>
+							<text  v-if="showMoney">{{countData.profitTotalFloat || '.00'}}</text>
+							<text  v-if="!showMoney">****</text>
 						</view>
 					</view>
 					<view class="data-c-item">
@@ -65,7 +67,8 @@
 							<text>璁㈠崟鏁�</text>
 						</view>
 						<view class="data-c-item-bottom">
-							<text>{{countData.orderNum||0}}</text>
+							<text  v-if="showMoney">{{countData.orderNum||0}}</text>
+							<text  v-if="!showMoney">****</text>
 						</view>
 					</view>
 				</view>
@@ -102,45 +105,61 @@
 				<view style="width: 25%; height: 0;"></view>
 				<view style="width: 25%; height: 0;"></view>
 			</view>
-			<view class="title"  v-if="!show">寰呭鐞嗚鍗� (2)</view>
+			<view class="title"  v-if="!show">寰呭鐞嗚鍗� ({{total}})</view>
 			<view class="list"  v-if="!show">
-				<view class="list-item" v-for="(item, index) in 5" :key="index">
+				<view class="list-item" v-for="(item, index) in dataList" :key="index">
 					<view class="a">
 						<view class="a-left">
-							<view class="a-left-tips">鑷彁</view>
-							<text>璁㈠崟鍙凤細71379283984239</text>
+							<view class="a-left-tips">{{item.receiveType==1?'鑷彁':'蹇�掗厤閫�'}}</view>
+							<text>璁㈠崟鍙凤細{{item.id}}</text>
 						</view>
-						<view class="a-right">寰呰嚜鎻�</view>
+						<text v-if="item.status ==0" class="a-right">寰呮敮浠�</text>
+						<text  v-if="item.status ==1" class="a-right">{{item.receiveType==1?'寰呰嚜鎻�':'寰呭彂璐�'}}</text>
+						<text  v-if="item.status ==2" class="a-right">寰呮敹璐�</text>
+						<text  v-if="item.status ==3" class="a-right">浜ゆ槗瀹屾垚</text>
+						<text  v-if="item.status ==4"class="a-right">宸插彇娑�</text>
+						<text  v-if="item.status ==6" class="a-right">宸查��娆�</text>
 					</view>
 					<view class="b">
-						<view class="b-item">
+						<view class="b-item" v-for="(item1, index1) in (item.goodsorderDetailList||[])">
 							<view class="b-item-image">
-								<image src="/static/logo.png" mode="widthFix"></image>
+								<image :src="item1.imgurl||'/static/logo.png'" mode="widthFix"></image>
 							</view>
-							<view class="b-item-title">涓仈鑹剧瀹介娇 閫傜敤闆锋矁/涓仈/涔呬繚鐢�</view>
+							<view class="b-item-title">{{item1.name||''}}</view>
 							<view class="b-item-jia">
-								<text>楼499.00</text>
-								<text>x1</text>
+								<text>楼{{(item1.price||0).toFixed(2)}}</text>
+								<text>x{{item1.goodsNum||0}}</text>
+							</view>
+						</view>
+						<view class="b-item" v-for="(item1, index1) in (item.goodsorderDetailList||[])">
+							<view class="b-item-image">
+								<image :src="item1.imgurl||'/static/logo.png'" mode="widthFix"></image>
+							</view>
+							<view class="b-item-title">{{item1.name||''}}</view>
+							<view class="b-item-jia">
+								<text>楼{{(item1.price||0).toFixed(2)}}</text>
+								<text>x{{item1.goodsNum||0}}</text>
 							</view>
 						</view>
 					</view>
 					<view class="c">
 						<view class="c-label">
-							<view class="c-label-title">闇�浠樻锛�</view>
+							<view class="c-label-title">瀹炰粯娆撅細</view>
 							<view class="c-label-price">
-								<text>998</text>
-								<text>.00</text>
+								<text>{{(item.price||0).toFixed(2)}}</text>
+								<text></text>
 							</view>
 						</view>
 						<view class="c-btns">
-							<view class="c-btns-item blue">鑱旂郴瀹㈡埛</view>
+							<view class="c-btns-item blue" @click="contactPhone(item)">鑱旂郴瀹㈡埛</view>
 							<view class="c-btns-item bg">鑷彁鏍搁攢</view>
 						</view>
 					</view>
-					<view class="d">
-						璁㈠崟澶囨敞锛�11鏈�22鏃ユ潵鎷�
+					<view class="d" v-if="item.memberInfo">
+						璁㈠崟澶囨敞锛歿{item.memberInfo||''}}
 					</view>
 				</view>
+				<view v-if="!hasNext" class="nomore">宸插姞杞藉叏閮�</view>
 			</view>
 		</view>
 		<!-- 纭閫�鍑虹櫥闄� -->
@@ -158,6 +177,30 @@
 				</view>
 			</view>
 		</u-popup>
+		<u-popup :show="showPhone" round="15" mode="bottom" :safeAreaInsetBottom="true"  @close="contactPhone()" :closeable="true" :closeOnClickOverlay="true">
+			<view class="phone">
+				<view class="phone-head">
+					<view></view>
+					<text>鑱旂郴瀹㈡埛</text> 
+				</view>
+				<!-- <view class="phone-item">
+					<view>
+						<image style="width: 36rpx;height: 36rpx" src="/static/icon/ic_kefu.png" mode="widthFix"></image>
+						<button open-type="contact" plain="true" bindcontact="handleContact">鍦ㄧ嚎瀹㈡湇</button>
+					</view>
+					 <view class="line" v-if="serverPhone && serverPhone.length"></view>
+				</view> -->
+				 <view class="phone-item" >
+				 	<view>
+						<image src="/static/icon/ic_call@2x.png" mode="widthFix" @click="contactPhoneDo()"></image>
+						<text>{{linkItem.linkname}} </text> 
+						<text style="margin-left: 10px;"> {{linkItem.linkphone}}</text> 
+					</view> 
+				 </view>  
+				 <view style="width: 100%; height: 30rpx;"></view>
+				<!-- <view class="phone-botton"  @click="contactPhone()" >鍏抽棴</view> -->
+			</view>
+		</u-popup>
 	</view>
 </template>
 
@@ -171,7 +214,15 @@
 			return { 
 				show:false,
 				active:0,
+				loading:false,
+				showMoney:false,
+				showPhone:false,
+				currentPage:1,
+				total:0,
+				hasNext:true,
+				dataList:[],
 				shop:{}, 
+				linkItem:{},
 				countData:{},
 				backgroundImage: require('@/static/images/bg_card@2x.png')
 			};
@@ -179,20 +230,86 @@
 		onShow() {
 			 this.shop  ={}
 			 this.checkShopLogin()
+			 this.active=0
 			 this.shop = this.shopInfo || {}
+			 this.getCountData()
+			 this.currentPage = 0
+			 this.getOrderList()
 		},
-		onReachBottom(){
-			
+		onReachBottom(){ 
+			this.getOrderList( );
 		},
 		methods:{ 
+			contactPhone(item){
+				 this.showPhone = !this.showPhone
+				 this.linkItem = item ||{}
+				 console.log("==================================",this.showPhone)
+			},
+			contactPhoneDo(){ 
+				if(this.linkItem.linkphone !=null && this.linkItem.linkphone!=''){
+					uni.makePhoneCall({
+					   phoneNumber: this.linkItem.linkphone  
+					})
+				}
+			},
 			changeActive(index){
-				this.active = index
+				this.getCountData(index)
 			},
 		    checkShopLogin(){
 				var that =this
 				if( this.shopInfo ==null || this.shopInfo.id==null ||  this.shopToken==null || this.shopToken==''){
 					 this.jumpShopLogin()
 				} 
+			},
+			async  getCountData(index){
+					var that =this 
+					let res = await that.$u.api.saleReport({  dateType: index,  endDate: null, startDate: null, tokenType:1  })
+					if (res.code === 200) { 
+						this.active = index
+						this.countData = res.data 
+						this.countData.profitTotal = (this.countData.profitTotal||0.00 ).toFixed(2)
+						this.countData.saleTotal = (this.countData.saleTotal||0.00).toFixed(2)  
+						this.countData.profitTotalNum = Math.floor(this.countData.profitTotal) 
+						this.countData.saleTotalNum = Math.floor( this.countData.saleTotal) 
+						var t1 =(this.countData.profitTotal - this.countData.profitTotalNum).toFixed(2)
+						var t2 =(this.countData.saleTotal - this.countData.saleTotalNum).toFixed(2)
+						this.countData.profitTotalFloat =( t1+'').slice(1, 4)
+						this.countData.saleTotalFloat = ( t2+'').slice(1, 4) 
+					} 
+			},
+			async  getOrderList(){
+					if(this.loading || !this.hasNext){
+						return
+					}
+					this.loading=true
+					this.currentPage =   this.currentPage+1
+					if(this.currentPage == 1){
+						this.hasNext =true
+						this.dataList=[]
+					}
+					var that =this 
+					let res = await that.$u.api.shopOrderPage({
+							capacity:10,
+							model: {
+								receiveType: 1, 
+								status: 1
+							},
+							page:this.currentPage
+						});
+						console.log(res)
+					if (res.code === 200 ) { 
+						if ( res.data && res.data.page ===this.currentPage) { 
+							res.data.records = res.data.records||[]
+							 that.dataList.push(...res.data.records)
+							 that.total=res.data.total
+							 if( this.currentPage >= res.data.pageCount||0){
+								 that.hasNext=false
+							 }else{
+								 that.hasNext=true
+							 }
+						}
+					} 
+					this.loading=false
 			},
 			logoutCom(){
 				this.show=!this.show
@@ -275,6 +392,13 @@
 			.list {
 				width: 100%;
 				margin-top: 30rpx;
+				padding-bottom: 60rpx;
+				.nomore{
+					width: 100%;
+					text-align: center;
+					font-size: 24rpx;
+					color: #666666;
+				}
 				.list-item {
 					width: 100%;
 					padding: 30rpx;
@@ -317,8 +441,7 @@
 						}
 					}
 					.b {
-						width: 100%;
-						height: 136rpx;
+						width: 100%; 
 						display: flex;
 						flex-direction: column;
 						margin-top: 22rpx;
@@ -350,6 +473,10 @@
 								font-size: 30rpx;
 								color: #222222;
 								margin-right: 30rpx;
+								display: -webkit-box;
+								-webkit-line-clamp: 2; /* 闄愬埗鏂囨湰涓�2琛� */
+								-webkit-box-orient: vertical;
+								overflow: hidden;
 							}
 							.b-item-jia {
 								flex-shrink: 0;
@@ -636,5 +763,68 @@
 				}
 			}
 		}
+		.phone {
+			width: 100%;
+			padding-top: 40rpx;
+			box-sizing: border-box;
+			.phone-botton {
+				width: 100%;
+				height: 88rpx;
+				line-height: 88rpx;
+				text-align: center;
+				font-weight: 500;
+				font-size: 32rpx;
+				color: #FFFFFF;
+				background: #00BC12;
+				border-radius: 44rpx;
+				margin-top: 60rpx;
+			}
+			.phone-head {
+				width: 100%;
+				text-align: center;
+				justify-content: space-between; 
+				margin-bottom: 40rpx;
+				text {
+					font-weight: 800;
+					font-size: 32rpx;
+					color: #222222;
+				}
+			}
+			 
+			.phone-item {
+				width: 100%;
+				text-align: center;
+				display: flex;
+				justify-content: center;
+				flex-direction: column;
+				// border-bottom: 1rpx solid #eeeeee;
+				line-height: 78rpx;
+				button{
+					border: 1rpx white solid;
+					display: inline;
+					width: 300rpx;
+					font-weight: 500;
+					font-size: 32rpx;
+					line-height: 32rpx;
+					color: #222222;
+				}
+				image{
+					width: 28rpx;
+					height: 28rpx;
+					margin-right: 30rpx;
+				}
+				.line{
+					width: 100%;
+					height: 1rpx;
+					background-color: #f2f2f2
+				}
+				text {
+					font-weight: 500;
+					font-size: 28rpx;
+					line-height: 28rpx;
+					color: #222222;
+				}
+			}
+		}
 	}
 </style>
\ No newline at end of file

--
Gitblit v1.9.3