Sfoglia il codice sorgente

Merge branch 'deploy' of http://git.chelingzhu.com/chelingzhu-web/qhsxKx-mini-html into deploy

lilei 4 anni fa
parent
commit
f55e3e37d9
8 ha cambiato i file con 227 aggiunte e 107 eliminazioni
  1. 8 0
      api/data.js
  2. 19 0
      api/order.js
  3. 1 0
      api/store.js
  4. 5 1
      libs/tools.js
  5. 18 0
      pages/index/index.vue
  6. 116 93
      pages/order/order.vue
  7. 57 10
      pages/order/orderDetail.vue
  8. 3 3
      store/index.js

+ 8 - 0
api/data.js

@@ -0,0 +1,8 @@
+import axios from '@/libs/axios.js';
+// 根据字典code查询选项
+export const getLookUpDatas = (params) => {
+  return axios.request({
+    url: `lookup/findByLookup/${params.type}`,
+    method: 'get'
+  })
+}

+ 19 - 0
api/order.js

@@ -23,4 +23,23 @@ export const signPay  = params => {
     url: `order/pay?orderId=${params.orderId}`,
     method: 'get',
   })
+};
+
+// 我的订单
+export const getOrderList = params => {
+	let url = `order/query/${params.pageNo}/${params.pageSize}`
+	delete params.pageNo
+	delete params.pageSize
+	return axios.request({
+		url: url,
+		method: 'post',
+		data: params
+	})
+};
+// 订单详情
+export const orderDetail = params => {
+  return axios.request({
+    url: `order/find/${params.id}`,
+    method: 'get',
+  })
 };

+ 1 - 0
api/store.js

@@ -0,0 +1 @@
+import axios from '@/libs/axios.js';

+ 5 - 1
libs/tools.js

@@ -8,4 +8,8 @@ export function objToUrl(obj) {
   uri = uri.substr(1);
 
   return uri;
-}
+}
+
+
+
+  

+ 18 - 0
pages/index/index.vue

@@ -48,6 +48,7 @@
 	import uniNavBar from "@/components/uni-nav-bar/uni-nav-bar.vue"
 	import uniPopup from '@/components/uni-popup/uni-popup.vue'
 	import {checkLogin} from '@/api/login.js'
+	import {getLookUpDatas} from '@/api/data.js'
 	export default {
 		components: {
 			uniNavBar, uniPopup
@@ -111,8 +112,25 @@
 		},
 		onLoad() {
 			this.getUserLocation()
+			// 获取订单状态数据字典
+			this.getCodeList('ORDER_STATUS')
+			// 获取支付方式数据字典
+			this.getCodeList('PAY_TYPE')
 		},
 		methods: {
+			// 获取数据字典
+			getCodeList (code) {
+				getLookUpDatas({type:code}).then(res =>{
+					if (res.status == 200) {
+						console.log(res.data,'res.data')
+						if (code == 'ORDER_STATUS') {
+							this.$u.vuex('vuex_payStatus', res.data)
+						} else {
+							this.$u.vuex('vuex_payType', res.data)
+						}
+					}
+				})
+			},
 			// 用户位置信息授权
 			getUserLocation() {
 				let _this = this

+ 116 - 93
pages/order/order.vue

@@ -1,136 +1,159 @@
 <template>
 	<view class="order-pages">
-		<view class="order-list">
-			<view class="order-list-item" @click="goView">
-				<view>
-					<view>高新二路站</view>
-					<view class="order-finish">已完成</view>
-				</view>
-				<view>
-					<view class="order-carNo">13709146191</view>
-					<u-icon name="arrow-right" color="#666" size="28"></u-icon>
-				</view>
-				<view>
-					<view class="order-price">
-						<text>¥9.8</text>
-						<text>微信支付</text>
+		<scroll-view scroll-y="true" class="scroll-Y" @scrolltolower="reachBottom">
+			<view class="order-list">
+				<view v-for="item in list" :key="item.id" class="order-list-item" @click="goView(item)">
+					<view>
+						<view>{{item.storeName}}</view>
+						<view class="order-finish">{{item.payStatus}}</view>
 					</view>
-					<view>2020-07-25 16:20:33</view>
-				</view>
-			</view>
-			<view class="order-list-item">
-				<view>
-					<view>高新二路站</view>
-					<view class="order-unPay">待支付</view>
-				</view>
-				<view>
-					<view class="order-carNo">13709146191</view>
-					<u-icon name="arrow-right" color="#666" size="28"></u-icon>
-				</view>
-				<view>
-					<view class="order-price">
-						<text>¥9.8</text>
-						<text>微信支付</text>
+					<view>
+						<view class="order-carNo">{{item.customerMobile}}</view>
+						<u-icon name="arrow-right" color="#666" size="28"></u-icon>
 					</view>
-					<view>2020-07-25 16:20:33</view>
-				</view>
-			</view>
-			<view class="order-list-item">
-				<view>
-					<view>高新二路站</view>
-					<view class="order-cansel">已取消</view>
-				</view>
-				<view>
-					<view class="order-carNo">13709146191</view>
-					<u-icon name="arrow-right" color="#666" size="28"></u-icon>
-				</view>
-				<view>
-					<view class="order-price">
-						<text>¥9.8</text>
-						<text>微信支付</text>
+					<view>
+						<view class="order-price">
+							<text>¥{{item.paymentAmount}}</text>
+							<text>{{item.payType}}</text>
+						</view>
+						<view>2020-07-25 16:20:33</view>
 					</view>
-					<view>2020-07-25 16:20:33</view>
 				</view>
 			</view>
-		</view>
+			<u-empty :text="noDataText" img-width="120" v-if="list.length==0 && status!='loading'" mode="list"></u-empty>
+			<view style="padding: 20upx;">
+				<u-loadmore v-if="total>pageSize || status=='loading'" :status="status" />
+			</view>
+		</scroll-view>
 	</view>
 </template>
 
 <script>
+	import {getOrderList, orderDetail} from '@/api/order.js'
 	export default {
 		data() {
 			return {
+				noDataText: '暂无数据',
+				status: 'loadmore',
 				list:[],
 				pageNo:1,
 				pageSize:15,
 				count:0,
-				status:'loading'
 			};
 		},
+		onLoad() {
+			this.getList()
+			console.log(this.orderStatusList,'1111')
+		},
 		methods: {
+			
+			getOptionName (list,val) {
+			  let p = list.find((item) => {
+				  return item.code == val
+			  })
+			  return p ? p.dispName : '-'
+			},
 			// 获取订单列表
 			getList() {
-				
+				this.status = "loading"
+				let orderStatusList = this.$store.state.vuex_payStatus
+				let payTypeList = this.$store.state.vuex_payType
+				let params = {
+					pageNo: this.pageNo,
+					pageSize: this.pageSize
+				}
+				getOrderList(params).then(res=>{
+					this.status = "loadmore"
+					if(res.status == 200) {
+						let list = res.data.list
+						list.map(item => {
+							item.payStatus = this.getOptionName(orderStatusList,item.payStatus)
+							item.payType = item.payType ? this.getOptionName(payTypeList,item.payType) : ''
+						})
+						this.list = this.list.concat(list)
+						this.count = res.data.count
+					} else {
+						this.list = []
+						this.count = 0
+						this.noDataText = res.message
+						this.toashMsg(res.message)
+					}
+				})
 			},
 			// 查看详情
 			goView(item){
 				uni.navigateTo({
 					url:"/pages/order/orderDetail?id="+item.id
 				})
+			},
+			// 滚动到底部自动加载下页
+			reachBottom() {
+				console.log(22)
+				if(this.list.length < this.count){
+					this.pageNo += 1
+					this.getList()
+				}else{
+					this.status = "nomore"
+				}
 			}
 		},
-		// 滚动到底部自动加载下页
-		onReachBottom() {
-			
-		}
+		
 	}
 </script>
 
 <style lang="scss">
+	page{
+		height: 100%;
+	}
 	.order-pages{
 		width: 100%;
-		.order-list{
-			padding: 25rpx;
-			.order-list-item{
-				box-shadow: 1rpx 1rpx 5rpx #eee;
-				border: 1px solid #eee;
-				border-radius: 10rpx;
-				margin: 30rpx 0;
-				> view{
-					padding:20rpx 30rpx;
-					display: flex;
-					align-items: center;
-					border-bottom: 1px dashed #eee;
-					&:last-child{
-						border: 0;
-					}
-					>view{
-						&:first-child{
-							flex-grow: 1;
-						}
+		height: 100%;
+		.scroll-Y {
+			width: 100%;
+			height: 100%;
+			.order-list{
+				padding: 25rpx;
+				.order-list-item{
+					box-shadow: 1rpx 1rpx 5rpx #eee;
+					border: 1px solid #eee;
+					border-radius: 10rpx;
+					margin: 30rpx 0;
+					> view{
+						padding:20rpx 30rpx;
+						display: flex;
+						align-items: center;
+						border-bottom: 1px dashed #eee;
 						&:last-child{
-							padding-left: 15rpx;
+							border: 0;
 						}
-					}
-					.order-finish{
-						color: #00aa00;
-					}
-					.order-unPay{
-						color: #ff0000;
-					}
-					.order-cansel{
-						color: #7e7b88;
-					}
-					.order-carNo{
-						font-size: 32rpx;
-					}
-					.order-price{
-						text{
-							margin-right: 20rpx;
-							color: #666;
+						>view{
 							&:first-child{
-								color: red;
-								font-size: 32rpx;
+								flex-grow: 1;
+							}
+							&:last-child{
+								padding-left: 15rpx;
+							}
+						}
+						.order-finish{
+							color: #00aa00;
+						}
+						.order-unPay{
+							color: #ff0000;
+						}
+						.order-cansel{
+							color: #7e7b88;
+						}
+						.order-carNo{
+							font-size: 32rpx;
+						}
+						.order-price{
+							text{
+								margin-right: 20rpx;
+								color: #666;
+								&:first-child{
+									color: red;
+									font-size: 32rpx;
+								}
 							}
 						}
 					}

+ 57 - 10
pages/order/orderDetail.vue

@@ -3,19 +3,35 @@
 		<u-cell-group>
 			<u-cell-item title="订单状态" :arrow="false">
 				<view slot="right-icon">
-					<text class="order-finish">已完成</text>
+					<text class="order-finish">{{orderInfo.payStatus}}</text>
 				</view>
 			</u-cell-item>
-			<u-cell-item title="订单编号" :arrow="false" value="BD426464654646466"></u-cell-item>
-			<u-cell-item title="创建时间" :arrow="false" value="2020-12-25 12:45:36"></u-cell-item>
-			<u-cell-item title="服务网点" :arrow="false" value="西部大道点"></u-cell-item>
-			<u-cell-item title="服务项目" :arrow="false" value="标准洗车"></u-cell-item>
-			<u-cell-item title="手机号" :arrow="false" value="1370946191"></u-cell-item>
-			<u-cell-item title="支付方式" :arrow="false" value="微信支付"></u-cell-item>
-			<u-cell-item title="应付金额" :arrow="false" value="¥30"></u-cell-item>
-			<u-cell-item title="优惠价" :arrow="false" value="5元代金卷"></u-cell-item>
+			<u-cell-item title="订单编号" :arrow="false" >
+				{{orderInfo.orderNo}}
+			</u-cell-item>
+			<u-cell-item title="创建时间" :arrow="false" >
+				{{orderInfo.orderTime}}
+			</u-cell-item>
+			<u-cell-item title="服务网点" :arrow="false">
+				{{orderInfo.storeName}}
+			</u-cell-item>
+			<u-cell-item title="服务项目" :arrow="false">
+				{{orderInfo.itemName}}
+			</u-cell-item>
+			<u-cell-item title="手机号" :arrow="false">
+				{{orderInfo.customerMobile}}
+			</u-cell-item>
+			<u-cell-item title="支付方式" :arrow="false">
+				{{orderInfo.payType}}
+			</u-cell-item>
+			<u-cell-item title="应付金额" :arrow="false">
+				¥{{orderInfo.payableAmount}}
+			</u-cell-item>
+			<u-cell-item title="优惠价" :arrow="false">
+				{{orderInfo.storeName}}
+			</u-cell-item>
 			<u-cell-item title="实付金额" :arrow="false">
-				<text class="order-price">¥25</text>
+				<text class="order-price">¥{{orderInfo.payStatus=='已支付' ? orderInfo.paymentAmount : 0}}</text>
 			</u-cell-item>
 		</u-cell-group>
 		<view class="order-photo">
@@ -28,12 +44,43 @@
 </template>
 
 <script>
+	import {orderDetail} from '@/api/order.js'
+	import {getLookUpDatas} from '@/api/data.js'
 	export default{
 		data() {
 			return {
+				orderInfo: null,
 				src: ''
 			}
 		},
+		onLoad(options) {
+			if (options.id) {
+				console.log(options.id)
+				this.getOrderDetail(options.id)
+			}
+		},
+		methods:{
+			getOptionName (list,val) {
+			  let p = list.find((item) => {
+				  return item.code == val
+			  })
+			  return p ? p.dispName : '-'
+			},
+			// 获取订单详情
+			getOrderDetail (id) {
+				let orderStatusList = this.$store.state.vuex_payStatus
+				let payTypeList = this.$store.state.vuex_payType
+				orderDetail({id:id}).then(res =>{
+					if (res.status == 200) {
+						this.orderInfo = res.data
+						this.orderInfo.payStatus = this.getOptionName(orderStatusList,this.orderInfo.payStatus)
+						this.orderInfo.payType = this.orderInfo.payType ? this.getOptionName(payTypeList,this.orderInfo.payType) : ''
+					} else {
+						this.toashMsg(res.message)
+					}
+				})
+			}
+		},
 	}
 </script>
 

+ 3 - 3
store/index.js

@@ -12,7 +12,7 @@ try{
 }
 
 // 需要永久存储,且下次APP启动需要取出的,在state中的变量名
-let saveStateKeys = ['vuex_user', 'vuex_token', 'vuex_userData','vuex_hasLogin','vuex_openid','vuex_orderInfo'];
+let saveStateKeys = ['vuex_user', 'vuex_token', 'vuex_userData','vuex_payType','vuex_payStatus','vuex_orderInfo'];
 
 // 保存变量到本地存储中
 const saveLifeData = function(key, value){
@@ -35,8 +35,8 @@ const store = new Vuex.Store({
 		vuex_user: lifeData.vuex_user ? lifeData.vuex_user : {account:'',password:''},
 		vuex_token: lifeData.vuex_token ? lifeData.vuex_token : '',
 		vuex_userData: lifeData.vuex_userData ? lifeData.vuex_userData : '',
-		vuex_hasLogin: lifeData.vuex_hasLogin ? lifeData.vuex_hasLogin : false,
-		vuex_openid: lifeData.vuex_openid ? lifeData.vuex_openid : '',
+		vuex_payType: lifeData.vuex_payType ? lifeData.vuex_payType : [], // 支付方式数据字典
+		vuex_payStatus: lifeData.vuex_payStatus ? lifeData.vuex_payStatus : [], // 支付状态数据字典
 		// 如果无需保存到本地永久存储,无需lifeData.xx方式
 		vuex_socket: null,
 		vuex_wsMessageData: '',