From d89c495a7da517d653e9ea42b8e6405eef823ef6 Mon Sep 17 00:00:00 2001
From: xuxueyang <xuxy@fengyuntec.com>
Date: 星期一, 29 七月 2024 16:23:24 +0800
Subject: [PATCH] update 还有售后需要测试一下

---
 pages/order/order.vue |  515 ++++++++++++++++++++++----------------------------------
 1 files changed, 206 insertions(+), 309 deletions(-)

diff --git a/pages/order/order.vue b/pages/order/order.vue
index 0097fe7..7a3e36d 100644
--- a/pages/order/order.vue
+++ b/pages/order/order.vue
@@ -1,315 +1,212 @@
+<script>
+export default {
+  data() {
+    return {
+      type: 'customer',
+      query: {
+        status: '',
+      },
+      status: [
+        {name: '全部', value: ''},
+        {name: '待付款', value: 'PENDING'},
+        {name: '待发货', value: 'SEND'},
+        {name: '待收货', value: 'RECEIVE'},
+        {name: '待评价', value: 'EVALUATE'},
+        {name: '售后', value: 'COMPLETED'},
+        {name: '已退款', value: 'REFUND'},
+      ]
+    };
+  },
+  onLoad(options) {
+    this.query.status = options.status || ''
+    this.listApi = `/api/customer/order/list`
+    this.getList()
+  },
+  onReachBottom() {
+    this.page.current += 1
+    this.getMore()
+  },
+  async onPullDownRefresh() {
+    this.page.current = 1
+    await this.getList()
+    uni.stopPullDownRefresh()
+  },
+  methods: {
+    toDetail(item) {
+      //  订单详情页面
+	  console.log(' toDetail item',item)
+      uni.navigateTo({
+        url: '/pages/order/order-detail?id=' + item.id
+      })
+    },
+  },
+}
+</script>
 <template>
-	<view>
-		<!-- 团购、粗去玩、深夜食堂、挖宝商品 -->
-		<view style="position: fixed;left: 0;right: 0;top: 0;background-color: #fff;height: 84rpx;z-index: 999;">
-			<top-tabs :tabs="tabs" :flg.sync="tabIndex" @change="changeTab"></top-tabs>
+  <view class="order-container">
+    <view class="order-top">
+      <view class="title">订单信息</view>
+      <view class="flex">
+        <image class="image img100"
+               src="https://hmy-flower.oss-cn-shanghai.aliyuncs.com/67/67acf980f310460a97d305c6ffc7e811位图@2x (1).png"></image>
+        <view>消费订单:¥<span class="m-r-10">{{ '0' }}</span> 总消费:¥<span>{{ '0' }}</span></view>
+      </view>
+    </view>
+    <view class="status-list m-t-12 flex flex-wrap-normal">
+      <view v-for="each of status" :key="each.value"
+            @click.stop="(e)=>{
+              query.status = each.value || '';
+              refreshList();
+            }"
+            class="status-each" :class="[query.status===each.value?'cur':'']">
+        {{ each.name }}
+      </view>
+    </view>
+    <no-data v-if="!list||list.length===0" style="width: 100%;" class="m-t-12"></no-data>
+    <view v-for="(item,index) in list" :key="index" class="m-t-12">
+      <view @click.stop="toDetail(item)" class="order-item list-item">
+        <view class="title flex">
+          <view>
+            订单:{{ item.orderNo }}
+          </view>
+          <view class="status t-red m-l-a m-r-0">¥{{ item.paymentAmount || item.totalAmount || '0'}}</view>
+        </view>
+        <view class="desc flex" v-if="!query.status">
+          <view class="label">
+            订单状态:
+          </view>
+          <view class="value">{{ item.statusBackendStr }}</view>
+        </view>
+        <view class="desc flex">
+          <view class="label">
+            收货人:
+          </view>
+          <view class="value">{{ item.customer }}</view>
+        </view>
+        <view class="desc flex">
+          <view class="label">
+            收货人手机号码:
+          </view>
+          <view class="value">{{ item.customerTel }}</view>
+        </view>
+        <view class="desc flex">
+          <view class="label">
+            收货地址:
+          </view>
+          <view class="value">{{ item.customerAddress }}</view>
+        </view>
+        <view class="desc flex">
+          <view class="label">
+            支付时间:
+          </view>
+          <view class="value">{{ item.paymentTime }}</view>
+        </view>
+      </view>
 
-		</view>
-		<view style="height: 100rpx;"></view>
-		<!-- 根据tab不同显示不同信息 -->
+    </view>
 
-		<!-- 根据不同加载不同的继续的底部 -->
-		<view style="min-height: calc(100vh - 200rpx);">
-			<no-data v-if="!list||list.length==0" style="width: 100%;"></no-data>
-			<view v-if="type=='shop'" class="order-container">
-				<card-list-item source="order" :type="type" :dto="item" v-for="(item,index) in list" @refresh="refresh"
-					:key="index"></card-list-item>
-			</view>
-			<view v-if="type=='travel'" class="order-container">
-				<card-list-item source="order" :type="type" :dto="item" v-for="(item,index) in list" @refresh="refresh"
-					:key="index"></card-list-item>
-			</view>
-			<view v-if="type=='canteen'" class="order-container">
-				<!-- 时间,状态 -->
-				<view class="order-item good-item" v-for="(item,index) in list" :key="index">
-					<view class="flex ">
-						<view class="time">下单: {{item.createdDate}}</view>
-						<view class="status">{{item.statusStr}}</view>
-					</view>
-
-					<view class="flex">
-						<!-- overfi -->
-						<scroll-view class="flex scroll-view" :scroll-x="true" style="max-width: 500rpx;"
-							v-if="item.items">
-							<view v-for="each of item.items" class="item-each">
-								<image :src="each.cover" class="cover"></image>
-								<!-- 文字缩写 -->
-								<view class="cover-name word-e">{{each.name}}</view>
-							</view>
-						</scroll-view>
-						<view style="min-width: 100rpx;margin-left: auto;">
-							<view class="price"><span class="dot">¥</span>{{item.totalAmount||'0.0'}}</view>
-							<view class="num-tip">共{{getItemsNum(item.items)||0}}件</view>
-						</view>
-					</view>
-					<!-- 	<view class="address">
-						{{item.customerAddress}}
-					</view> -->
-					<view class="infos">
-						<view class="flex">
-							<view class="info-user-name flex flex1">
-								<uni-icons type="person-filled" class="icon"></uni-icons>
-								{{item.customer}}
-							</view>
-							<view class="info-user-tel flex flex1">
-								<uni-icons type="phone-filled" class="icon"></uni-icons>
-								{{item.customerTel}}
-							</view>
-						</view>
-						<view class="info-user-address flex">
-							<uni-icons type="location-filled" class="icon"></uni-icons>
-							{{item.customerAddress}}
-						</view>
-
-					</view>
-					<view class="buttons">
-						<view class="button-wuliu button" v-if="item.status=='PENDING'||item.status==='PREPAYMENT'"
-							@click.stop="toPay(item)">支付订单</view>
-						<view class="button-wuliu button" v-if="item.status=='PENDING'||item.status==='PREPAYMENT'"
-							@click.stop="cancelPay(item)">取消订单</view>
-
-						<view class="button-shouhuo button" @click.stop="toOrderDetail(item)">订单详情</view>
-					</view>
-				</view>
-				<!-- 货物单 -->
-				<!-- 地址 -->
-			</view>
-			<view v-if="type=='good'" class="order-container">
-				<view class="order-item good-item" v-for="(item,index) in list" :key="index">
-					<view class="flex ">
-						<view class="time">下单: {{item.createdDate}}</view>
-						<view class="status">{{item.statusStr}}</view>
-					</view>
-					<view class="flex">
-						<image class="cover" :src="item.items[0].cover"></image>
-						<view>
-							<view class="name">{{item.items[0].name}}</view>
-							<!-- <view>介绍尺码</view> -->
-							<view class="price"><span class="dot">¥</span>{{item.totalAmount||'0.0'}}</view>
-						</view>
-					</view>
-					<view class="infos">
-						<view class="info-user-name flex">
-							<uni-icons type="person-filled" class="icon"></uni-icons>
-							{{item.customer}}
-						</view>
-						<view class="info-user-tel flex">
-							<uni-icons type="phone-filled" class="icon"></uni-icons>
-							{{item.customerTel}}
-						</view>
-						<view class="info-user-address flex">
-							<uni-icons type="location-filled" class="icon"></uni-icons>
-							{{item.customerAddress}}
-						</view>
-
-					</view>
-					<view class="buttons">
-						<view class="button-wuliu button" v-if="item.status=='PENDING'||item.status==='PREPAYMENT'"
-							@click.stop="toPay(item)">支付订单</view>
-						<view class="button-wuliu button" v-if="item.status=='PENDING'||item.status==='PREPAYMENT'"
-							@click.stop="cancelPay(item)">取消订单</view>
-
-						<!-- <view class="button-shouhuo button"  v-if="item.status!=='PENDING'&&item.status!=='PREPAYMENT'||true">查看物流</view> -->
-						<view class="button-shouhuo button" @click.stop="toOrderDetail(item)">订单详情</view>
-
-						<!-- <view class="button-shouhuo button"  v-if="item.status!=='PENDING'&&item.status!=='PREPAYMENT'">确认收货</view> -->
-					</view>
-
-				</view>
-			</view>
-		</view>
-
-		<footer-msg :more="page.total>0&&page.total>page.current*page.size"></footer-msg>
-
-	</view>
+  </view>
 </template>
 
-<script>
-	export default {
-		data() {
-			return {
-				type: '',
-				tabIndex: 1,
-				query: {
-
-				},
-				tabs: [{
-						name: '团购',
-						id: 'shop',
-						api: '/api/buy/customer/group/list/mine'
-					},
-					{
-						name: '粗去玩',
-						id: 'travel',
-						api: '/api/trip/customer/list/mine'
-					},
-					{
-						name: '每日维C',
-						id: 'canteen',
-						api: '/api/canteen/customer/order/list'
-
-					},
-					{
-						name: '挖宝商品',
-						id: 'good',
-						api: '/api/wabao/customer/order/list'
-
-					},
-				],
-			}
-		},
-		onLoad(options) {
-			this.type = options.type || ''
-			var index = -1
-			for (var item of this.tabs) {
-				index++
-				if (item.id == this.type) {
-					this.tabIndex = index
-					this.listApi = item.api
-					break
-				}
-			}
-			this.refresh()
-
-
-		},
-		onReachBottom() {
-			this.page.current += 1
-			this.getMore()
-		},
-		methods: {
-			toOrderDetail(row) {
-				var url = `/pages/order/bussiness-order/bussincess-order-detail?source=user&type=${this.type}`
-				if (this.type == 'travel') {
-					url += `&id=${row.id}&userId=${this.currentInfo.id}`
-				} else {
-					url += `&id=${row.id}`
-				}
-				uni.navigateTo({
-					url: url
-				})
-			},
-			async cancelPay(item) {
-				if (!this.currentInfo.id) {
-					await this.$message.confirm('未登录,前往登录?')
-					uni.navigateTo({
-						url: '/pages/user/user'
-					})
-					return
-				}
-				await this.$message.confirm('是否确认取消支付?')
-				this.$message.showLoading()
-				const orderInfo = await this.$http.request('post', '/api/order/cancel/' + (item.orderId ||
-					item.id || ''), {
-
-				})
-				this.$message.hideLoading()
-				if (code == 0) {
-					this.$message.showToast('取消成功')
-					this.dto.status = 'COMPLETED'
-					this.dto.statusStr = '已取消'
-					setTimeout(() => {
-						that.refresh()
-					}, 500)
-				}
-
-			},
-			async toPay(item) {
-				if (!this.currentInfo.id) {
-					this.$message.showToast('请先登陆')
-					return
-				}
-				if (item.status === 'PENDING' || item.status === 'PREPAYMENT') {
-					if (this.type == 'canteen') {
-						const orderInfo = await this.$http.request('get', '/api/canteen/customer/payment/' + item
-							.id, {})
-						//支付准备
-						var info = orderInfo.data
-						let that = this
-						wx.requestPayment({
-							...info,
-							success(res) {
-								console.log('pay success', res)
-								that.$message.showToast('支付成功')
-								setTimeout(() => {
-									that.refresh()
-								}, 500)
-							},
-							fail(err) {
-								console.error('pay fail', err)
-								that.$message.showToast('支付失败')
-							}
-						})
-
-					} else {
-						// this.$message.showToast('等待接口,请联系开发者')
-						// return
-						this.$message.showLoading()
-						const orderInfo = await this.$http.request('post', '/api/order/pay/again/' + (item.orderId ||
-							item.id || ''), {
-
-						})
-						var info = orderInfo.data || {}
-						this.$message.hideLoading()
-						if (code == 0) {
-							let that = this
-							wx.requestPayment({
-								...info,
-								success(res) {
-									console.log('pay success', res)
-									that.$message.showToast('支付成功')
-									item.status = 'PAYMENT'
-									item.statusStr = '已支付'
-									setTimeout(() => {
-										that.refresh()
-									}, 500)
-								},
-								fail(err) {
-									console.error('pay fail', err)
-									that.$message.showToast('支付失败')
-								}
-							})
-						}
-					}
-
-				} else {
-					this.$message.showToast('请不要重复支付')
-					return
-				}
-			},
-			getItemsNum(arr) {
-				var a = 0
-				if (arr) {
-					for (var item of arr) {
-						a += item.num || 0
-					}
-				}
-
-				return a
-			},
-			refresh() {
-				//获取
-				console.log('refresh')
-				this.page.current = 1
-				this.getList()
-			},
-			changeTab(e) {
-				this.type = this.tabs[e].id
-				console.log('this.type', this.type, this.tabs, e)
-
-				this.list = []
-				for (var item of this.tabs) {
-					if (item.id == this.type) {
-						this.listApi = item.api
-						break
-					}
-				}
-				this.refresh()
-			},
-		}
-	}
-</script>
-
 <style lang="scss" scoped>
-	@import './order.scss'
-</style>
\ No newline at end of file
+.order-container {
+  padding: 24rpx 30rpx;
+  .order-item {
+    margin-bottom: 20rpx;
+    padding: 28rpx;
+	background-color: #fff;
+	border-radius: 8rpx;
+
+    .title {
+      font-weight: 600;
+      font-size: 28rpx;
+      color: #000000;
+      line-height: 40rpx;
+      .status {
+        font-weight: 400;
+        font-size: 28rpx;
+        color: #20613D;
+        line-height: 40rpx;
+      }
+    }
+    .desc{
+      font-weight: 400;
+      font-size: 24rpx;
+      color: #666666;
+      line-height: 34rpx;
+    }
+
+
+    .line {
+      height: 2rpx solid #EEEEEE;
+      margin-top: 16rpx;
+      margin-bottom: 16rpx;
+    }
+
+
+ }
+
+  .status-list {
+    overflow-x: scroll;
+
+    .status-each {
+      font-weight: 400;
+      font-size: 28rpx;
+      color: #666666;
+      line-height: 40rpx;
+      margin: 0 auto;
+      //min-width: ;
+      // padding-left: 10rpx;
+      // padding-right: 10rpx;
+      width: fit-content;
+      min-width: 120rpx;
+      text-align: center;
+    }
+
+    .status-each.cur {
+      font-weight: 600;
+      font-size: 32rpx;
+      color: #20613D;
+      // line-height: 44rpx;
+    }
+
+    .status-each:first-child {
+      margin-left: 0
+    }
+
+    .status-each:last-child {
+      margin-right: 0;
+    }
+  }
+
+  .order-top {
+    position: relative;
+    min-height: 182rpx;
+    background: #E1F0E7;
+    border-radius: 8rpx;
+    padding: 45rpx 35rpx;
+
+    .title {
+      font-weight: 600;
+      font-size: 30rpx;
+      color: #000000;
+      line-height: 42rpx;
+    }
+
+    .desc {
+      font-weight: 400;
+      font-size: 24rpx;
+      color: #666666;
+      line-height: 34rpx;
+    }
+
+    .image {
+      position: absolute;
+      right: 0rpx;
+      width: 288rpx;
+      height: 148rpx;
+      bottom: 0rpx;
+    }
+  }
+}
+</style>

--
Gitblit v1.9.3