From 4b80c98ef5fda8d6358778f2efe8bb35cb20ccf9 Mon Sep 17 00:00:00 2001
From: queenwuli <942534046@qq.com>
Date: Fri, 15 Jan 2021 16:18:21 +0800
Subject: [PATCH] gx

---
 hive-app/pages/workbench/orderList.vue |  263 +++++++++++++++++++++++++++++++++++++++-------------
 1 files changed, 198 insertions(+), 65 deletions(-)

diff --git a/hive-app/pages/workbench/orderList.vue b/hive-app/pages/workbench/orderList.vue
index bb1fb8d..d1c17a1 100644
--- a/hive-app/pages/workbench/orderList.vue
+++ b/hive-app/pages/workbench/orderList.vue
@@ -1,46 +1,57 @@
 <template>
 	<!-- 订单列表 -->
 	<view>
-		<!-- #ifndef H5 -->
-		<view class="status_bar"></view>
-		<!-- #endif -->
-		<search-bar :placeholder=placeholder class="header-input"></search-bar>
+		<view class="header">
+			<search-bar @confirm="search" placeholder="输入会员姓名、手机号、订单号" class="mb-0"></search-bar>
+		</view>
 		<view>
 			<h-tabs
 				class="tab"
+				:activeIndex="orderStatus"
+				@tabClick="tabChange"
 				:tabData="tabs" 
 				:config="{
 					color: '#abb1cc',
 					activeColor: '#518EFF',
 					underLineColor: '#518EFF',
 					underLineHeight: 4,
-					fontSize: '30',
+					fontSize: '28',
 					underLineWidth: 60,
 				}"
 			/>
-			<view class="order">
-				<view class="flex justify-between order-number">
-					<text class="font-14">订单号: N202012123556</text>
-					<text class="font-14 blue">待付款</text>
-				</view>
-				<view class="flex justify-between order-content">
-					<view class="flex flex-v">
-						<text class="font-12">李某某</text>
-						<text class="font-12 gray mt-10">2020-12-15 18:11:01</text>
-					</view>
-					<view class="flex flex-v">
-						<text class="font-12">应付金额</text>
-						<text class="font-12 mt-10">实付金额</text>
-						<text class="font-12 mt-10">欠款总额</text>
-					</view>
-					<view class="flex flex-v">
-						<text class="font-12">¥ 8000.00</text>
-						<text class="font-12 mt-10">¥ 0.00</text>
-						<text class="font-12 mt-10">¥ 8000.00</text>
+			<view class="list">
+				<view class="list-item" v-for="item in list">
+					<navigator :url="'./orderDetail?orderId='+item.orderId" hover-class="none">
+						<view class="list-header">
+							<text>订单号: {{item.orderNo}}</text>
+							<text :class="caculateColor(item.orderStatus)">{{item.orderStatus}}</text>
+						</view>
+						<view class="list-content">
+							<view class="flex flex-v flex-1">
+								<text class="font-bold font-15">{{item.vipName}}</text>
+								<text class="gray">{{item.orderTime}}</text>
+							</view>
+							<view class="flex justify-between flex-1">
+								<view>
+									<view>应付金额</view>
+									<view>实付金额</view>
+									<view>欠款总额</view>
+								</view>
+								<view class="right">
+									<view>¥ {{item.needPay | formatNum}}</view>
+									<view>¥ {{item.realPay | formatNum}}</view>
+									<view>¥ {{item.arrears | formatNum}}</view>
+								</view>
+							</view>
+						</view>
+					</navigator>
+					<view class="list-footer" v-if="item.orderStatus!=='已取消' && $utils.hasPermission('ddgl.cancel')">
+						<text class="blue-btn small-btn" @click="cancelOrder(item.orderId)">取消订单</text>
 					</view>
 				</view>
-				<view class="flex justify-end">
-					<button class="blue-btn small-btn">取消订单</button>
+				<no-record :isShow="!list.length" txt="暂无订单记录"></no-record>
+				<view v-if="list.length">
+					<uni-load-more :status="loadStatus" color="#a5abaf"></uni-load-more>
 				</view>
 			</view>
 		</view>
@@ -50,64 +61,186 @@
 <script>
 	import HTabs from "@/components/liuyuno-tabs/liuyuno-tabs.vue";
 	import searchBar from '../../components/searchBar/index.vue';
+	import uniLoadMore from '@/components/uni-load-more/uni-load-more.vue';
 	export default {
 		components: {
 		    HTabs,
-			searchBar
+			searchBar,
+			uniLoadMore
 		},
 		data() {
-		  return {
-			placeholder:"输入会员姓名、手机号、编号查询",
-		    tabs:[
-				{
-					state: 1,
-					name: '全部'
-				},
-				{
-					state: 2,
-					name: '代付款'
-				},
-				{
-					state: 3,
-					name: '已付款'
-				},
-				{
-					state: 4,
-					name: '欠款'
-				},
-			],
-		  }  
+			return {
+				queryKey: '',
+				orderStatus: 0,
+				tabs:[
+					{
+						state: 0,
+						name: '全部'
+					},
+					{
+						state: 1,
+						name: '待付款'
+					},
+					{
+						state: 2,
+						name: '已付款'
+					},
+					{
+						state: 3,
+						name: '欠款'
+					},
+				],
+				list: [],
+				loadStatus: 'more',
+				pageNum: 1
+			}  
+		},
+		onLoad(options) {
+			if(options.status){
+				this.orderStatus = Number(options.status);
+			}
+			if(options.queryKey){
+				this.queryKey = options.queryKey;
+			}
+			this.loadList()
+			
+			// 判断权限
+			// #ifdef APP-PLUS
+			if(!this.$utils.hasPermission('ddgl.add')){
+				let webView = this.$mp.page.$getAppWebview();
+				webView.setTitleNViewButtonStyle(0, {
+				    width: 0,  
+				});
+			}
+			// #endif
+		},
+		onPullDownRefresh(){
+			this.reloadData();
+			let timer = setTimeout(function () {
+				uni.startPullDownRefresh();
+				clearTimeout(timer);
+				timer = null;
+			}, 800);
+		},
+		onReachBottom(){
+			this.loadList()
+		},
+		onNavigationBarButtonTap(Object){
+			if(Object.key === 'add'){
+				uni.navigateTo({
+					url: './selectCustomer'
+				})
+			}
+		},
+		methods:{
+			reloadData(){
+				this.list = [];
+				this.pageNum = 1;
+				this.loadStatus = 'more';
+				this.loadList();
+			},
+			loadList(){
+				if(this.loadStatus!=='more'){
+					return;
+				}
+				this.$httpUtils.request('/api/order/findOrderList', {
+					pageNum: this.pageNum,
+					pageSize: 10,
+					queryKey: this.queryKey,
+					orderStatus: this.orderStatus
+				}, 'POST').then((res) => {
+					if(res.status == 200){
+						let result = res.rows;
+						if(result.length < 10){
+							this.loadStatus = 'noMore';
+						} else {
+							this.pageNum ++ ;
+							this.loadStatus = 'more';
+						}
+						this.list = this.list.concat(result);
+					}
+				})
+			},
+			search(val){
+				this.queryKey = val;
+				this.reloadData();
+			},
+			tabChange(index){
+				if(this.orderStatus === index){
+					return;
+				}
+				this.orderStatus = index;
+				this.reloadData();
+			},
+			caculateColor(status){
+				if(status==='待付款'){
+					return 'blue'
+				} else if(status === '已付款'){
+					return 'blueness'
+				} else if(status === '欠款'){
+					return 'red'
+				} else {
+					return 'gray'
+				}
+			},
+			cancelOrder(id){
+				uni.showModal({
+				    title: '提示',
+				    content: '确定取消订单吗?',
+				    success: (res) => {
+				        if (res.confirm) {
+							this.$httpUtils.request('/api/order/cancelOrder/'+id).then((res) => {
+								if(res.status == 200){
+									this.reloadData()
+								}
+								this.$toast.info(res.info);
+							})
+				        }
+				    }
+				});
+			}
 		}
 	}
 </script>
 
 <style>
-	.header-input{
-		margin: 0 10px;
+	page{
+		background: #F6F6F8;
+	}
+	.header{
+		padding: 10px 10px 5px;
+		background: #FFFFFF;
 	}
 	.tab{
+		background: #FFFFFF;
 		border-bottom: 1px solid #EDEAF4;
-		border-radius: 4px;
-		box-shadow:0 6px 6px rgba(237,234,244,0.5);
 	}
-	.order{
-		border: 1px solid #EDEAF4;
+	.list-item{
+		background: #FFFFFF;
 		border-radius: 4px;
-		box-shadow:0 6px 6px rgba(237,234,244,0.5);
 		margin: 10px;
-		padding: 0 6px;
+		color: #3a3f3f;
+		border: 1px solid #EDEAF4;
+		padding: 0 10px;
 	}
-	.order-number{
-		padding: 10px 6px;
+	.list-header{
+		display: flex;
+		justify-content: space-between;
+		padding: 12px 0;
+		font-size: 15px;
 		border-bottom: 1px solid #EDEAF4;
 	}
-	.order-content{
-		padding: 15px 6px;
-		border-bottom: 1px solid #EDEAF4;
+	.list-content{
+		display: flex;
+		justify-content: space-between;
+		padding: 12px 0;
+		font-size: 14px;
+		line-height: 28px;
 	}
-	.small-btn{
-		width: 100px;
-		margin: 10px 0;
-		line-height: 30px;
+	.list-footer{
+		display: flex;
+		justify-content: flex-end;
+		padding: 10px 0;
+		border-top: 1px solid #EDEAF4;
 	}
 </style>

--
Gitblit v1.9.1