diff --git a/api/order.js b/api/order.js index fdc2143..2b74638 100644 --- a/api/order.js +++ b/api/order.js @@ -1,6 +1,10 @@ import request from './request'; export default { + deliveryTimeType:{immediate:'IMMEDIATE',scheduled:'SCHEDULED'}, + deliveryTimeTypeKV:{ + IMMEDIATE:'及时达',SCHEDULED:'定时达' + }, status:{ created:"CREATED",pending:"PENDING", delivering:"DELIVERING",pickupReady:"PICKUP_READY",completed:"COMPLETED", @@ -10,8 +14,17 @@ export default { CREATED:'待支付',PENDING:'待接单',DELIVERING:'待配送',PICKUP_READY:'待自提', COMPLETED:'已完成',CANCELLED:'已取消',REFUNDING:'退款中',REFUNDED:'已退款' }, + product:{ + typeKV:{ + 'SELF_OPERATED':'自营','MERCHANT':'商家' + } + }, list:(params)=>request.get('/api/merchant/order/merchant',params), - test:(data)=>request.post('/api/merchant',data) + accept:(order_id)=>request.put(`/api/merchant/order/${order_id}/accept`), + complete:(order_id)=>request.put(`/api/merchant/order/${order_id}/complete`), + + summary:()=>request.get('/api/merchant/order/merchant/summary') + } \ No newline at end of file diff --git a/pages/order/list/index.js b/pages/order/list/index.js index 5f95b61..0f84450 100644 --- a/pages/order/list/index.js +++ b/pages/order/list/index.js @@ -2,42 +2,190 @@ import orderApi from '../../../api/order'; import userApi from '../../../api/user'; Page({ - /** * 页面的初始数据 */ data: { - orderCategory:['及时达','定时达'], - categoryIndex:0, + statusDic:{ + [orderApi.deliveryTimeType.immediate]:[ + {key:'PENDING',value:orderApi.statusKV['PENDING']}, + {key:'DELIVERING',value:orderApi.statusKV['DELIVERING']}, + {key:'COMPLETED',value:orderApi.statusKV['COMPLETED']} + ], + [orderApi.deliveryTimeType.scheduled]:[ + {key:'PICKUP_READY',value:orderApi.statusKV['PICKUP_READY']}, + {key:'COMPLETED',value:orderApi.statusKV['COMPLETED']}, + ] + }, + orderStatusList:[], + orderStatusIndex:0, - list:[{ - status:'PENDING', - packages:[{},{}] - }], + list:[], + filterKey:'', + filtedList:[], pager:{limit:10,loading:false,loadAll:false,pageIndex:0,refreshTrigger:false}, + loadMoreText:'已经到底了', orderStatus:orderApi.status, - genderKV:userApi.genderKV + genderKV:userApi.genderKV, + productTypeKV:orderApi.product.typeKV, + deliveryTimeType:orderApi.deliveryTimeType, + deliveryTimeTypeKV:orderApi.deliveryTimeTypeKV, + currentDeliveryTimeType:orderApi.deliveryTimeType.immediate, }, /** * 生命周期函数--监听页面加载 */ onLoad(options) { - // orderApi.test({ - // community_id:1, - // "user_id":3,"category_id":2,"name":"一乐拉面","business_hours":"08:00 - 21:00","address":"四川省成都市双流区怡心街道天府滨河湾(3号门)","longitude":104.046831,"latitude":30.518607,"phone":"13438370499","brand_image_url":"https://dman-1311994147.cos.ap-chengdu.myqcloud.com/uploads/1/ecb77b5a2d4075f6ff320070ac55f81c085e54b0_1e8ba893-9966-436e-90a4-63361f1fdf79.jpg" - // }) - orderApi.list(); + this.loadList(); }, - changeOrderCategory(event){ - const index = event.currentTarget.dataset.index; + refreshList(){ + this.data.pager.pageIndex = 0; + this.data.pager.loadAll = false; this.setData({ - categoryIndex:index + pager:this.data.pager + }); + this.loadList(); + }, + loadList(){ + if(this.data.pager.loading||this.data.pager.loadAll){ + return; + } + this.setData({ + "pager.loading":true + }); + let status = this.data.statusDic[this.data.currentDeliveryTimeType][this.data.orderStatusIndex].key; + let params = { + skip:this.data.pager.pageIndex*this.data.pager.limit, + limit:this.data.pager.limit, + delivery_time_type:this.data.currentDeliveryTimeType, + status:status + } + if(this.needFilterList()){ + //不分页 直接返回全部,供本地搜索 + params.skip = 0; + params.limit = 1000; + }else{ + this.setData({ + loadMoreText:'已经到底了' + }) + } + orderApi.list(params).then((data)=>{ + if(this.data.pager.pageIndex==0){ + this.data.list = data.items; + }else{ + this.data.list = this.data.list.concat(data.items); + } + this.data.pager.loading = false; + this.data.pager.pageIndex++; + this.data.pager.refreshTrigger = false; + if(data.items.length{ + const endNumber = item.address.phone.substr(item.address.phone.length-4,4); + console.log(endNumber); + return endNumber.indexOf(value)>-1; + }); + let loadMoreText = '已经到底了'; + if(value&&list.length==0){ + loadMoreText = `暂无尾号 ${value} 的订单` + } + this.setData({ + loadMoreText:loadMoreText, + filtedList:list + }) + }, + + //接单 + getOrder(event){ + const item = event.currentTarget.dataset.item; + const index = event.currentTarget.dataset.index; + if(item.receiving)return; + this.setData({ + [`list[${index}].receiving`]:true + }) + orderApi.accept(item.order.order_id).then((data)=>{ + wx.showToast({ + icon:'success', + title: '接单成功', + }) + this.refreshList(); + }) + }, + + //我已送达 + receivedOrder(event){ + const index = event.currentTarget.dataset.index; + const item = event.currentTarget.dataset.item; + orderApi.complete(item.order.order_id).then((data)=>{ + wx.showToast({ + icon:'success', + title: '取货成功', + }) + this.refreshList(); + }).catch(()=>{ + this.setData({ + [`list[${index}].receiving`]:false + }) + }) + }, + + openMap(event){ + const item = event.currentTarget.dataset.item; + wx.openLocation({ + name:`${item.address.name}${this.data.genderKV[item.address.gender]}:${item.address.phone}`, + address:`${item.address.community_name}${item.address.address_detail}`, + latitude:item.address.latitude, + longitude:item.address.longitude, + }) + }, + emptyFun(){}, /** * 生命周期函数--监听页面初次渲染完成 */ diff --git a/pages/order/list/index.wxml b/pages/order/list/index.wxml index 76ea08b..04256f0 100644 --- a/pages/order/list/index.wxml +++ b/pages/order/list/index.wxml @@ -1,87 +1,91 @@ - - - {{item}} + + + + {{item}} + + + + + {{item.value}}(0) + + + + + - - - 待接单(0) - 待配送(0) - 已送达(0) - - - - - - - - - - 自营商品 - - 剩余(19:30前送达) + + + + + {{productTypeKV[item.product.operation_type]}} + + 剩余(19:30前送达) + - - - - 家庭私厨烤串【鲜货】 - x 1 + + + {{item.product.name}} + x {{item.order.qty}} + + 9.9 - 9.9 - - - 佳兆业丽晶公馆3栋2单元2702 - - {{'仙人模斗'}}{{genderKV['MALE']}}:{{'13438370499'}} - - - + + + {{item.address.community_name}} + {{item.address.address_detail}} + + + + {{item.address.name}}{{genderKV[item.address.gender]}}:{{item.address.phone}} + + + + + - - - 【】加价金额: - + + + + + + + + + + + + - - - - - - - - - - - - - - - \ No newline at end of file + + \ No newline at end of file diff --git a/pages/order/list/index.wxss b/pages/order/list/index.wxss index f2a9161..67a67b1 100644 --- a/pages/order/list/index.wxss +++ b/pages/order/list/index.wxss @@ -9,6 +9,7 @@ content: ''; position: absolute; top:6rpx;bottom:6rpx; + left:6rpx; width:140rpx; background-color: #fff; border-radius: 8rpx; @@ -16,10 +17,10 @@ /* transition-timing-function:cubic-bezier(0.215, 0.61, 0.355, 1); */ transition-timing-function:cubic-bezier(.26,.9,.31,.97); } -.order-category.active0::before{ +.order-category.IMMEDIATE::before{ right:auto;left:6rpx; } -.order-category.active1::before{ +.order-category.SCHEDULED::before{ left:126rpx; } .order-category .item{ @@ -34,7 +35,7 @@ .top-bar{ display: flex; - justify-content: space-between; + justify-content: space-around; padding:40rpx 0; } .top-bar .item{ @@ -77,6 +78,10 @@ padding:20rpx; position: relative; } +.package-list .item:first-child{ + margin-top:0; + background-color: red; +} .package-list .item .item-head{ display: flex; align-items: center; @@ -105,15 +110,9 @@ left:38.5rpx;top:160rpx; bottom:250rpx; } -.package-list .item.has-markup::before{ - bottom:200rpx; -} .package-list .item.no-btns::before{ bottom:100rpx; } -.package-list .item.no-btns.has-markup::before{ - bottom:50rpx; -} .package-list .item .name{ font-size: 40rpx; display: flex; @@ -153,8 +152,7 @@ } .package-list .item .merchant::before, -.package-list .item .address::before, -.package-list .item .markup .mu-item::before{ +.package-list .item .address::before{ position: absolute; content: '商'; left:0;top:0; @@ -170,33 +168,6 @@ content: '送'; background-color: var(--main-color); } -.package-list .item .markup{ - font-size: 34rpx; - line-height: 40rpx; - padding-bottom:20rpx; - color: var(--main-font-color); -} -.package-list .item .markup .bold{ - font-weight: 500; -} -.package-list .item .markup .mu-item{ - padding-left:48rpx; - position: relative; - display: flex; - align-items: center; - margin-top:30rpx; -} -.package-list .item .markup .mu-item::before{ - content: '加'; - background-color:#ff0000; -} - -/* .package-list .item .package .value{ - flex:1; - display: flex; - flex-wrap: wrap; - gap: 16rpx; -} */ .package-list .item .address{ padding-left:64rpx; @@ -207,6 +178,9 @@ color:var(--main-font-color); font-size: 40rpx; font-weight: 600; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; } .package-list .item .address .sub-title{ font-size: 32rpx; @@ -225,7 +199,7 @@ padding:10rpx; font-size:24rpx; } -.package-list .item.is-new-order .address .sub-title::before{ +/* .package-list .item.is-new-order .address .sub-title::before{ content:'新'; background-color:#ff0000; color:#fff; @@ -233,7 +207,7 @@ margin-right: 12rpx; border-radius: 8rpx; padding:6rpx 8rpx; -} +} */ .package-list .item .btns{ display: flex;