send 7.28

This commit is contained in:
ghusermoon 2020-07-28 20:47:31 +08:00
parent 208f27aa93
commit b12a3c1722
9 changed files with 743 additions and 345 deletions

View File

@ -278,7 +278,8 @@ export default {
searchwordlist() { searchwordlist() {
return vm.$u.post('ShopSearch/searchwordlist') return vm.$u.post('ShopSearch/searchwordlist')
}, },
saveGoodsTry({ member_name, member_mobile, area_info, address_detail, goods_id, num, store_id }) { // 提交试穿订单
saveGoodsTry({ member_name, member_mobile, area_info, address_detail, goods_id, num, store_id, appointment_time }) {
return vm.$u.post('Order/saveGoodsTry', { return vm.$u.post('Order/saveGoodsTry', {
member_name: member_name, member_name: member_name,
member_mobile: member_mobile, member_mobile: member_mobile,
@ -287,6 +288,7 @@ export default {
goods_id: goods_id, goods_id: goods_id,
num: num, num: num,
store_id: store_id, store_id: store_id,
appointment_time: appointment_time,
}) })
}, },
} }

View File

@ -244,6 +244,10 @@ export default {
goodsTryOrderList() { goodsTryOrderList() {
return vm.$u.post('order/goodsTryOrderList'); return vm.$u.post('order/goodsTryOrderList');
}, },
// 试穿订单确认完成
goodsTryConfirm({ id }) {
return vm.$u.post('order/goodsTryConfirm', { id: id });
},
// 订单详情 // 订单详情
getOrderInfo({ order_id }) { getOrderInfo({ order_id }) {
return vm.$u.post('Order/orderInfo', { order_id: order_id }); return vm.$u.post('Order/orderInfo', { order_id: order_id });
@ -330,6 +334,30 @@ export default {
code: code, code: code,
}); });
}, },
// 送洗列表-平台订单 实体店订单
sendLaundryOrderList({ type, page }) {
return vm.$u.post('member/sendLaundryOrderList', {
type: type,
page: page,
});
},
// 送洗-获取衣服类型
getClothesTypeList() {
return vm.$u.post('member/getClothesTypeList');
},
// 送洗评价
sendOrderComment({ id, comment }) {
return vm.$u.post('member/sendOrderComment', {
id: id,
comment: comment,
});
},
// 送洗确认完成
sendLaundryOrderConfirm({ id }) {
return vm.$u.post('member/sendOrderConfirm', {
id: id,
});
}
} }
} }
} }

View File

@ -0,0 +1,192 @@
<template>
<view class="order-item">
<view class="order-title">
<view class="store-info">
<image :src="order.store_avatar"></image>
<view class="store-name">{{ order.store_name }}</view>
</view>
<view class="order-status">{{ state }}</view>
</view>
<view class="goods-info">
<view class="goods-item">
<image :src="order.goods_image"></image>
<view class="goods-text">
<view class="goods-name u-line-2">{{ order.goods_name }}</view>
<!-- <view class="goods-sku u-line-1" v-if="order.order_state !== 20 && order.order_state !== 40 && goods.goods_spec">
<text v-for="(spec, index) in goods.goods_spec" :key="index">{{ spec + ';' }}</text>
</view> -->
<!-- <view class="goods-time u-line-1" v-if="order.order_state == 10 || order.order_state == 10">结束时间{{ order.add_time * 1000 | date('yyyy-mm-dd hh:MM') }}</view> -->
</view>
</view>
</view>
<view class="order-btn" v-if="order.goods_try_order_status == 20">
<view class="logistics" @click="confirmOrder">确认完成</view>
</view>
</view>
</template>
<script>
import common from '@/static/js/common.js';
export default {
data() {
return {
state: '',
}
},
props: {
order: Object
},
created() {
this.viewState();
},
filters: {},
methods: {
// "goods_try_order_status": 0, 穿 0: 20: 40: 50:
viewState() {
let state;
switch (this.order.goods_try_order_status) {
case 0:
state = '等待商家回复';
break;
case 20:
state = '商家已接单';
break;
case 40:
state = '商家已拒绝';
break;
case 50:
state = '订单已结束';
break;
default:
break;
}
this.state = state;
},
confirmOrder() {
this.$u.api.goodsTryConfirm({
id: this.order.goods_try_id,
}).then(res => {
if(res.errCode == 0) {
this.$emit("refreshOrderList");
}
this.$u.toast(res.message);
})
},
toOtherPage(url) {
this.$u.route('/pageE/order/' + url, {
oid: this.order.order_id,
});
},
},
};
</script>
<style lang="scss" scoped>
.order-item {
width: 690rpx;
background: rgba(255,255,255,1);
border-radius: 20rpx;
padding: 30rpx;
.order-title {
display: flex;
align-items: center;
justify-content: space-between;
margin-bottom: 20rpx;
.store-info {
display: flex;
align-items: center;
> image {
width: 50rpx;
height: 50rpx;
border-radius: 50%;
margin-right: 15rpx;
background-color: aquamarine;
}
.store-name {
font-size: 26rpx;
color: rgba(51,51,51,1);
}
}
.order-status {
font-size: 28rpx;
color: rgba(255,120,15,1);
}
}
.goods-info {
.goods-item {
display: flex;
margin-bottom: 28rpx;
> image {
flex-shrink: 0;
width: 180rpx;
height: 160rpx;
border-radius: 10rpx;
margin-right: 30rpx;
}
.goods-text {
display: flex;
flex-direction: column;
justify-content: space-between;
.goods-name {
font-size: 28rpx;
color: rgba(51,51,51,1);
line-height: 38rpx;
}
.goods-sku {
max-width: 230rpx;
background: rgba(236,236,236,1);
border-radius: 6rpx;
padding: 10rpx 15rpx;
font-size: 24rpx;
color: rgba(153,153,153,1);
}
.goods-time {
font-size: 24rpx;
color: rgba(255,49,49,1);
}
.goods-price {
font-size: 24rpx;
color: rgba(253,211,96,1);
}
.goods-date {
display: flex;
align-items: center;
font-size: 24rpx;
color: rgba(153,153,153,1);
> image {
width: 24rpx;
height: 24rpx;
margin-right: 21rpx;
}
}
}
}
}
.order-btn {
display: flex;
justify-content: flex-end;
@mixin btn-class($width, $color) {
width: $width;
height: 60rpx;
border: 2rpx solid $color;
color: $color;
border-radius: 30rpx;
padding: 15rpx 23rpx;
font-size: 28rpx;
&:not(:last-child) {
margin-right: 30rpx;
}
}
.logistics, .comment, .payment {
@include btn-class($width: 160rpx, $color: rgba(255,119,15,1));
}
.calcel {
@include btn-class($width: 160rpx, $color: rgba(155,153,153,1));
}
.service {
@include btn-class($width: 216rpx, $color: rgba(155,153,153,1));
}
.submit {
@include btn-class($width: 216rpx, $color: rgba(255,119,15,1));
}
}
}
</style>

View File

@ -21,11 +21,12 @@
<label for="area">详细地址:</label> <label for="area">详细地址:</label>
<input type="text" id="area" placeholder="" v-model="area" /> <input type="text" id="area" placeholder="" v-model="area" />
</view> </view>
<view> <view @click="showTime=true">
<label for="time">预约时间:</label> <label for="time">预约时间:</label>
<input type="text" id="time" placeholder="" v-model="time" /> <input type="text" id="time" placeholder="" disabled v-model="time" />
</view> </view>
</view> </view>
<u-picker mode="time" v-model="showTime" :params="params" @confirm="chooseDate"></u-picker>
<view class="goods-container"> <view class="goods-container">
<view class="store"> <view class="store">
<image :src="store.store_avatar"></image> <image :src="store.store_avatar"></image>
@ -63,11 +64,20 @@ export default {
address: '', // address: '', //
area: '', // area: '', //
time: '', time: '',
showTime: false,
number: 1, // number: 1, //
area_id: '', // id area_id: '', // id
city_id: '', // id city_id: '', // id
goodsInfo: {}, goodsInfo: {},
store: {}, store: {},
params: {
year: true,
month: true,
day: true,
hour: true,
minute: true,
second: false
},
} }
}, },
mounted() { mounted() {
@ -98,10 +108,22 @@ export default {
this.$u.toast('详细地址不可为空'); this.$u.toast('详细地址不可为空');
return false; return false;
} }
if(this.$u.test.isEmpty(this.time)) {
this.$u.toast('预约时间不可为空');
return false;
}
if(new Date(this.time) < new Date()) {
this.$u.toast('预约时间错误');
return false;
}
return true; return true;
}, },
chooseDate(e) {
let time = e.year + '-' + e.month + '-' + e.day + ' ' + e.hour + ':' + e.minute;
this.time = time;
},
confirmBtn() { confirmBtn() {
if(!this.verification) return false; if(!this.verification()) return false;
this.$u.api.saveGoodsTry({ this.$u.api.saveGoodsTry({
member_name: this.name, member_name: this.name,
member_mobile: this.phone, member_mobile: this.phone,
@ -110,7 +132,8 @@ export default {
goods_id: this.goodsInfo.goods_id, goods_id: this.goodsInfo.goods_id,
num: this.number, num: this.number,
store_id: this.store.store_id, store_id: this.store.store_id,
}).then((res)=>{ appointment_time: new Date(this.time),
}).then(res => {
this.$u.toast(res.message); this.$u.toast(res.message);
if (res.errCode == 0) { if (res.errCode == 0) {
// this.$u.route({ type: 'navigateBack' }); // this.$u.route({ type: 'navigateBack' });

View File

@ -8,7 +8,8 @@
<scroll-view scroll-y style="height: 100%;" @scrolltolower="reachBottom"> <scroll-view scroll-y style="height: 100%;" @scrolltolower="reachBottom">
<view> <view>
<view class="item-container" v-for="order in orderList" :key="order.order_id"> <view class="item-container" v-for="order in orderList" :key="order.order_id">
<OrderItem :order="order" @refreshOrderList="getOrderList"></OrderItem> <OrderItem :order="order" @refreshOrderList="refreshOrderList" v-if="current != 4"></OrderItem>
<TryOrderItem :order="order" @refreshOrderList="refreshOrderList" v-else></TryOrderItem>
</view> </view>
</view> </view>
<u-empty text="暂无订单" mode="order" color="#000000" v-if="!orderList.length"></u-empty> <u-empty text="暂无订单" mode="order" color="#000000" v-if="!orderList.length"></u-empty>
@ -20,6 +21,7 @@
</template> </template>
<script> <script>
import OrderItem from '@/components/mine/order-item/index' import OrderItem from '@/components/mine/order-item/index'
import TryOrderItem from '@/components/mine/order-item/try'
export default { export default {
data() { data() {
return { return {
@ -48,13 +50,16 @@ export default {
} }
}, },
components: { components: {
OrderItem OrderItem,
TryOrderItem,
}, },
watch: { watch: {
current(value) { current(value, origin) {
if((origin == 4 && value != 4) || (value == 4 && origin != 4)) {
this.orderList = [];
}
this.page = 0; this.page = 0;
// again // again
value == 6 ? this.getAfterSaleList({ reload: 'again' }): this.getOrderList({ reload: 'again' });
if(value == 6) { if(value == 6) {
this.getAfterSaleList({ reload: 'again' }); this.getAfterSaleList({ reload: 'again' });
} else if(value == 4) { } else if(value == 4) {
@ -96,6 +101,16 @@ export default {
} }
return type; return type;
}, },
refreshOrderList() {
this.page = 0;
if(this.current == 6) {
this.getAfterSaleList({ reload: 'again' });
} else if(this.current == 4) {
this.goodsTryOrderList({ reload: 'again' });
} else {
this.getOrderList({ reload: 'again' });
}
},
async getOrderList({ reload = '' } = {}) { async getOrderList({ reload = '' } = {}) {
const type = this.setOrderType(); const type = this.setOrderType();
const res = await this.$u.api.getOrderList({ const res = await this.$u.api.getOrderList({
@ -126,8 +141,8 @@ export default {
}) })
this.timer = true; this.timer = true;
if(res.errCode == 0) { if(res.errCode == 0) {
if(reload) this.orderList = res.data; if(reload) this.orderList = res.data.list;
else this.orderList.push(...res.data); else this.orderList.push(...res.data.list);
} }
return res; return res;
}, },

View File

@ -38,7 +38,7 @@ export default {
const res = await this.$u.api.getBrowseList({ page: this.page }); const res = await this.$u.api.getBrowseList({ page: this.page });
this.timer = false; this.timer = false;
if(res.errCode == 0) { if(res.errCode == 0) {
this.historyList = res.data.storeInfo; this.historyList.push(...res.data.storeInfo);
} }
return res.data.storeInfo.length; return res.data.storeInfo.length;
}, },

View File

@ -1,28 +1,43 @@
<template> <template>
<view class="wash"> <view class="wash">
<view class="title"> <view class="title">
<u-tabs-swiper ref="tabs" :list="list" :is-scroll="false" active-color="#FF780F" :current="current" font-size="32" :show-bar="false" @change="tabsChange" height="88" ></u-tabs-swiper> <u-tabs-swiper ref="tabs" :list="list" :is-scroll="false" active-color="#FF780F" :current="current" font-size="32" :show-bar="false" @change="tabsChange" height="88"></u-tabs-swiper>
<u-icon name="arrow-down-fill" :color="current == 0 ? '#FF780F' : '#333333'" size="17" class="order-icon" :style="{ left: list[0].name == '平台历史订单' ? '236rpx' : '252rpx' }"></u-icon>
</view> </view>
<swiper :current="swiperCurrent" @animationfinish="animationfinish"> <swiper :current="swiperCurrent" @animationfinish="animationfinish">
<swiper-item class="swiper-item"> <swiper-item class="swiper-item">
<scroll-view scroll-y class="order-list"> <scroll-view scroll-y class="order-list" @scrolltolower="loadmore">
<view v-for="(item, index) in 6" :key="index" class="order-item"> <view v-for="(item, index) in orderList" :key="index" class="order-item">
<view class="order-title"> <view class="order-title">
<view class="order-text">订单状态</view> <view class="order-text">订单状态</view>
<view class="order-status">已预约</view> <view class="order-status">{{ item.order_status | viewStatus }}</view>
</view> </view>
<view class="order-info"> <view class="order-info">
<image src="../static/mine/23.png"></image> <image src="../static/mine/23.png"></image>
<view> <view v-if="item.deliver_goods_type == 2 && item.order_status == 20">
<view>骑手名字xxx</view> <view>骑手名字{{ item.takeawayer_name }}</view>
<view>联系方式123456789</view> <view>联系方式{{ item.member_phone }}</view>
<view>所属公司xx公司</view> </view>
<view v-if="item.order_status == 0">
<view>正在等待接单</view>
</view>
<view v-if="item.order_status == 40">
<view>商家已拒绝</view>
</view>
<view v-if="item.order_status == 50">
<view>交易已完成</view>
</view>
<view v-if="item.deliver_goods_type == 1 && item.order_status == 20">
<view>商家在正路途中请耐心等待</view>
</view> </view>
</view> </view>
<view class="send-btn"> <view class="send-btn" v-if="item.order_status == 20 || item.order_status == 50">
<view class="btn" v-if="btn_show"> <view class="btn" v-if="item.order_status == 20" @click="sendLaundryOrderConfirm(item.laundry_id)">
确认完成 确认完成
</view> </view>
<view class="btn" v-if="item.order_status == 50">
去评价
</view>
</view> </view>
</view> </view>
</scroll-view> </scroll-view>
@ -40,7 +55,7 @@
</scroll-view> </scroll-view>
</swiper-item> </swiper-item>
</swiper> </swiper>
<view class="popup" v-if="showPopup" @click="onTap"> <view class="popup" v-if="showPopup" @click="onTap">
<view class="popup_cont" @click="replaces(1)"> <view class="popup_cont" @click="replaces(1)">
实体店历史订单 实体店历史订单
</view> </view>
@ -51,7 +66,7 @@
</view> </view>
</template> </template>
<script> <script>
import Comment from '@/components/mine/comment/index' import Comment from '@/components/mine/comment/index';
export default { export default {
data() { data() {
return { return {
@ -65,18 +80,85 @@ export default {
}], }],
current: 0, current: 0,
swiperCurrent: 0, swiperCurrent: 0,
btn_show:true btn_show:true,
page: 1,
orderList: [],
timer: true,
} }
}, },
components: { components: {
Comment Comment
}, },
filters: {
viewStatus(status) {
let state;
switch (status) {
case 0:
state = '等待接单';
break;
case 20:
state = '已接单';
break;
case 40:
state = '交易失败';
break;
case 50:
state = '交易成功';
break;
default:
break;
}
return state;
},
},
onShow() { onShow() {
this.current = 0; this.current = 0;
this.swiperCurrent = 0; this.swiperCurrent = 0;
this.showPopup= false this.showPopup = false;
this.sendLaundryOrderList();
}, },
methods: { methods: {
async sendLaundryOrderList({ load = 'reload' } = {}) {
let type = this.list[0].name == '平台历史订单' ? 1 : 2;
const res = await this.$u.api.sendLaundryOrderList({
type: type,
page: this.page,
})
this.timer = false;
if(res.errCode == 0) {
// this.orderList = res.data.list;
// console.log(...res.data.list);
if(load == 'loadmore') this.orderList = this.orderList.concat(res.data.list);
else if(load == 'reload') this.orderList = res.data.list;
} else {
this.orderList = [];
}
return res.data.list.length;
},
sendLaundryOrderConfirm(id) {
this.$u.api.sendLaundryOrderConfirm({ id: id }).then(res => {
if(res.errCode == 0) {
this.sendLaundryOrderList();
}
this.$u.toast(res.message);
})
},
loadmore() {
if(!this.timer) return false;
this.loadStatus = "loading";
this.page++;
this.sendLaundryOrderList({ load: 'loadmore' }).then(length => {
if(length == 0) {
this.page--;
this.status = 'nomore';
} else {
this.status = 'loading';
}
}).catch(() => {
this.loadStatus = "nomore";
this.page--;
})
},
tabsChange(index) { tabsChange(index) {
this.swiperCurrent = index; this.swiperCurrent = index;
this.toApplyPage(index); this.toApplyPage(index);
@ -90,14 +172,14 @@ export default {
toApplyPage(index) { toApplyPage(index) {
var that = this; var that = this;
if(index == 1) { if(index == 1) {
this.showPopup = false this.showPopup = false;
uni.navigateTo({ uni.navigateTo({
url: '/pageE/tool/WashOrder' url: '/pageE/tool/WashOrder'
}); });
}else if(index ==0){ } else if (index == 0){
this.history(); this.history();
}else{ } else {
this.showPopup = false this.showPopup = false;
} }
}, },
history(){ history(){
@ -106,9 +188,10 @@ export default {
replaces(e){ replaces(e){
if(e == 1){ if(e == 1){
this.$set(this.list,0,{name: '实体店历史订单'} ) this.$set(this.list,0,{name: '实体店历史订单'} )
}else{ } else {
this.$set(this.list,0,{name: '平台历史订单'} ) this.$set(this.list,0,{name: '平台历史订单'} )
} }
this.sendLaundryOrderList();
}, },
onTap(){ onTap(){
this.showPopup = false this.showPopup = false
@ -124,10 +207,15 @@ export default {
flex-direction: column; flex-direction: column;
> uni-swiper { > uni-swiper {
flex: 1; flex: 1;
height: 85vh;
} }
.title{ .title {
position: relative;
.order-icon {
position: absolute;
top: 50%;
transform: translate(0, -50%);
z-index: 9;
}
} }
.swiper-item { .swiper-item {
padding-top: 20rpx; padding-top: 20rpx;
@ -138,8 +226,8 @@ export default {
padding: 0 30rpx; padding: 0 30rpx;
.order-item { .order-item {
padding: 30rpx; padding: 30rpx;
width:690rpx; width: 690rpx;
height: 362rpx; // height: 362rpx;
background: rgba(255,255,255,1); background: rgba(255,255,255,1);
border-radius: 10rpx; border-radius: 10rpx;
margin-bottom: 20rpx; margin-bottom: 20rpx;
@ -218,7 +306,6 @@ export default {
justify-content: top; justify-content: top;
align-items: center; align-items: center;
transition-duration: 0.3s; transition-duration: 0.3s;
.popup_cont{ .popup_cont{
border-top: 1px solid RGBA(239, 236, 240, 1); border-top: 1px solid RGBA(239, 236, 240, 1);
background-color: #fff; background-color: #fff;
@ -230,6 +317,7 @@ export default {
font-weight:400; font-weight:400;
color:rgba(102,102,102,1); color:rgba(102,102,102,1);
padding-left: 41rpx; padding-left: 41rpx;
position: relative;
} }
} }
} }

View File

@ -3,105 +3,63 @@
<view> <view>
<u-tabs-swiper ref="tabs" :list="list" :is-scroll="false" active-color="#FF780F" :current="current" font-size="32" :show-bar="false" @change="tabsChange" height="88" ></u-tabs-swiper> <u-tabs-swiper ref="tabs" :list="list" :is-scroll="false" active-color="#FF780F" :current="current" font-size="32" :show-bar="false" @change="tabsChange" height="88" ></u-tabs-swiper>
</view> </view>
<swiper :current="swiperCurrent" @animationfinish="animationfinish"> <swiper :current="swiperCurrent" @animationfinish="animationfinish" :style="{ height: swiperHeight }">
<swiper-item class="swiper-item">
<view class="order-info">
<view class="order-name" @click="order()">
<view class="title titles" >
<text>选择订单</text>
<image src="../../static/image/shop/2.png" mode=""></image>
</view>
<u-icon name="arrow-dwon" color="#2979ff" size="28"></u-icon>
</view>
<view class="choose-info" v-if="choose">
<view class="store">
<view>
<image src="../../static/image/mine/23.png" mode=""></image>胖胖的店
</view>
<view>
订单编号2222222222222
</view>
</view>
<view class="store_info">
<view class="info_img">
<image src="../../static/image/mine/23.png" mode="">
</view>
<view class="info_txt">
<view class="content">
木糖少女小紫薯西装领连衣裙夏季新款女装夏收腰格子格纹裙子
</view>
<view class="much">
<text>99</text>
<text>x1</text>
</view>
</view>
</view>
</view>
<view class="order-name">
<view class="title">送洗人</view>
<input type="text" v-model="name" />
</view>
<view class="order-phone">
<view class="title">手机号</view>
<input type="text" v-model="phone" />
</view>
<view class="order-area">
<view class="title">省市区</view>
<input type="text" v-model="area" />
<view class="location">
<image src="../static/mine/28.png"></image>
<view>定位</view>
</view>
</view>
<view class="order-address">
<view class="title">详细地址</view>
<input type="text" v-model="address" />
</view>
</view>
<view class="upload-image">
<view class="title">上传商品图片</view>
<u-upload
ref="uUpload"
@on-uploaded="onUploaded"
:custom-btn="true"
:max-count="count"
:auto-upload="false"
>
<view slot="addBtn" class="slot-btn" hover-class="slot-btn__hover" hover-stay-time="150">
<img src="../static/mine/27.png" />
</view>
</u-upload>
</view>
<view class="wash-btn" @click="reset()">确认送洗</view>
</swiper-item>
<swiper-item class="swiper-item"> <swiper-item class="swiper-item">
<scroll-view scroll-y="true" style="height: 100%;">
<view class="order-info"> <view class="order-info">
<view class="order-name"> <view class="order-name" @click="order()">
<view class="title">商品名称</view> <view class="title titles" >
<text>选择订单:</text>
<image src="../../static/image/shop/2.png" mode=""></image>
</view>
<u-icon name="arrow-dwon" color="#2979ff" size="28"></u-icon>
</view>
<view class="choose-info" v-if="choose">
<view class="store">
<view>
<image :src="checkedGoods.store.store_avatar"></image>{{ checkedGoods.store.store_name }}
</view>
<view>
订单编号{{ checkedGoods.order_sn }}
</view>
</view>
<view class="store_info">
<view class="info_img">
<image :src="checkedGoods.goods.goods_image" mode="">
</view>
<view class="info_txt">
<view class="content u-line-2">
{{ checkedGoods.goods.goods_name }}
</view>
<view class="much">
<text>{{ checkedGoods.goods.goods_pay_price }}</text>
<text>x{{ checkedGoods.goods.goods_num }}</text>
</view>
</view>
</view>
</view>
<view class="order-view order-type" @click="showClothesType=true">
<view class="title">商品类型:</view>
<input type="text" v-model="type" disabled />
</view>
<view class="order-view order-name">
<view class="title">送洗人:</view>
<input type="text" v-model="name" /> <input type="text" v-model="name" />
</view> </view>
<view class="order-phone"> <view class="order-view order-phone">
<view class="title">商品类型</view> <view class="title">手机号:</view>
<input type="text" v-model="name" /> <input type="text" v-model="phone" maxlength="11" />
</view> </view>
<view class="order-phone"> <view class="order-view order-area" @click="showAddress=true">
<view class="title">衣服状况</view> <view class="title">省市区:</view>
<input type="text" v-model="name" /> <input type="text" v-model="area" disabled />
</view>
<view class="order-name">
<view class="title">送洗人</view>
<input type="text" v-model="name" />
</view>
<view class="order-area">
<view class="title">省市区</view>
<input type="text" v-model="area" />
<view class="location"> <view class="location">
<image src="../static/mine/28.png"></image> <image src="../static/mine/28.png"></image>
<view>定位</view> <view>定位</view>
</view> </view>
</view> </view>
<view class="order-address"> <view class="order-view order-address">
<view class="title">详细地址</view> <view class="title">详细地址:</view>
<input type="text" v-model="address" /> <input type="text" v-model="address" />
</view> </view>
</view> </view>
@ -119,59 +77,111 @@
</view> </view>
</u-upload> </u-upload>
</view> </view>
<view class="wash-btn">确认送洗</view> <view class="wash-btn" @click="reset()">确认送洗</view>
</scroll-view>
</swiper-item>
<swiper-item class="swiper-item">
<view class="order-info">
<view class="order-view order-name">
<view class="title">商品名称:</view>
<input type="text" v-model="goodsName" />
</view>
<view class="order-view order-phone" @click="showClothesType=true">
<view class="title">商品类型:</view>
<input type="text" v-model="type" disabled />
</view>
<view class="order-view order-phone">
<view class="title">衣服状况:</view>
<input type="text" v-model="name" />
</view>
<view class="order-view order-name">
<view class="title">送洗人:</view>
<input type="text" v-model="name" />
</view>
<view class="order-view order-area" @click="showAddress=true">
<view class="title">省市区:</view>
<input type="text" v-model="area" disabled />
<view class="location">
<image src="../static/mine/28.png"></image>
<view>定位</view>
</view>
</view>
<view class="order-view order-address">
<view class="title">详细地址:</view>
<input type="text" v-model="address" />
</view>
</view>
<view class="upload-image">
<view class="title">上传商品图片</view>
<u-upload
ref="uUpload"
@on-uploaded="onUploaded"
:custom-btn="true"
:max-count="count"
:auto-upload="false"
>
<view slot="addBtn" class="slot-btn" hover-class="slot-btn__hover" hover-stay-time="150">
<img src="../static/mine/27.png" />
</view>
</u-upload>
</view>
<view class="wash-btn">确认送洗</view>
</swiper-item> </swiper-item>
</swiper> </swiper>
<view class="popup" v-if="showPopup"> <u-select v-model="showClothesType" :list="typeList" value-name="id" label-name="name" @confirm="confirmType"></u-select>
<view class="popup_cont" > <u-select v-model="showAddress"
mode="mutil-column-auto"
:list="areaList"
value-name="area_id"
label-name="area_name"
child-name="_child"
@confirm="setArea">
</u-select>
<u-popup v-model="showPopup" mode="bottom" border-radius="20">
<view class="order-popup">
<view class="check"> <view class="check">
<text>选择订单</text> <text>选择订单</text>
<image src="../../static/image/common/17.png" @click="close()"></image> <u-icon name="close" color="#A29FA3" size="32"></u-icon>
</view> </view>
<swiper style="height: 1000px;" vertical="true"> <scroll-view scroll-y class="order-list">
<swiper-item class="swiper-item"> <u-radio-group v-model="value" @change="radioChange">
<scroll-view scroll-y class="order-list"> <view v-for="(items, index) in orderList" :key="index" class="order-item">
<view v-for="(items, index) in 3" :key="index"> <view class="store">
<view class="store"> <view class="name">
<view> <image :src="items.extend_store.store_avatar" mode=""></image>
<image src="../../static/image/mine/23.png" mode=""></image>胖胖的店 <text>{{ items.store_name }}</text>
</view>
<view>
订单编号2222222222222
</view>
</view> </view>
<view class="checkd"> <view class="order-sn">
<radio-group @change="er"> 订单编号{{ items.order_sn }}
<label class="uni-list-cell uni-list-cell-pd" v-for="(item, index) in checkLidt" :key="index">
<view class="radio">
<radio color="#F0AD4E" :value="item.id" :checked="a==item.id"/>
</view>
<view class="store_info">
<view class="info_img">
<image src="../../static/image/mine/23.png" mode="">
</view>
<view class="info_txt">
<view class="content">
木糖少女小紫薯西装领连衣裙夏季新款女装夏收腰格子格纹裙子
</view>
<view class="much">
<text>99</text>
<text>x1</text>
</view>
</view>
</view>
</label>
</radio-group>
</view> </view>
</view> </view>
</scroll-view> <view class="checkd">
</swiper-item> <label class="radio-view" v-for="(item, index) in items.extend_order_goods" :key="index">
</swiper> <view class="radio">
<view class="bottom_btn" style="width: 100%;background-color: #fff;"> <u-radio color="#F0AD4E" :name="items.order_id + ' ' + item.goods_id" active-color="#FF780F" icon-size="34"></u-radio>
<view class="wash-btn" @click="confirm()">确认</view> </view>
</view> <view class="store_info">
<view class="info_img">
<image :src="item.goods_image" mode="">
</view>
<view class="info_txt">
<view class="content u-line-2">
{{ item.goods_name }}
</view>
<view class="much">
<text>{{ item.goods_pay_price }}</text>
<text>x{{ item.goods_num }}</text>
</view>
</view>
</view>
</label>
</view>
</view>
</u-radio-group>
</scroll-view>
<view class="order-btn" @click="confirm">确认</view>
</view> </view>
</view> </u-popup>
</view> </view>
</template> </template>
<script> <script>
@ -180,45 +190,119 @@ export default {
return { return {
items: [], items: [],
count: 4, // count: 4, //
type: '',
name: '', name: '',
phone: '', phone: '',
area: '', area: '',
address: '', address: '',
// platformForm: {
// type: '',
// name: '',
// phone: '',
// area: '',
// address: '',
// },
// physicalForm: {
// },
goodsName: '',
list: [{ list: [{
name: '平台历史订单' name: '平台历史订单'
}, { }, {
name: '实体店历史订单' name: '实体店历史订单'
}], }],
typeList: [],
orderList: [],
current: 0, current: 0,
areaList: [],
showClothesType: false,
showAddress: false,
swiperCurrent: 0, swiperCurrent: 0,
showPopup : false, showPopup : false,
a:"", checkedList: [],
checkLidt:[ page: 0,
{id:'1'}, swiperHeight: '',
{id:'2'}, value: '', // radio
{id:'3'} checkedGoods: {},
] choose: false, //
} }
}, },
onShow() {
this.current = 0;
this.swiperCurrent = 0;
this.showPopup = false;
this.choose = false;
},
onLoad() {
this.getOrderList();
this.setViewHeight();
this.getAreaData();
this.getClothesTypeList();
},
methods: { methods: {
onShow() { getClothesTypeList() {
this.current = 0; this.$u.api.getClothesTypeList().then(res => {
this.swiperCurrent = 0; this.typeList = res.data.typeList;
this.showPopup = false; })
this.choose = false },
confirmType(e) {
// console.log(e);
this.type = e[0].label;
},
async getOrderList({ load = 'reload' } = {}) {
const res = await this.$u.api.getOrderList({
page: this.page,
// type: '40',
})
this.timer = true;
if(res.errCode == 0) {
if(load == 'reload') this.orderList = res.data;
else this.orderList.push(...res.data);
}
return res;
}, },
submit() { submit() {
this.$refs.uUpload.upload(); this.$refs.uUpload.upload();
}, },
onUploaded(list) { onUploaded(list) {
console.log(list) console.log(list);
},tabsChange(index) { },
tabsChange(index) {
this.swiperCurrent = index; this.swiperCurrent = index;
}, },
er(e){ radioChange(e){
console.log(e) const ids = e.split(" ");
this.a =e.detail.value; console.log(ids)
console.log(this.a) let checkedGoods = {};
this.orderList.forEach(order => {
if(order.order_id == ids[0]) {
Object.assign(checkedGoods, { store: order.extend_store });
Object.assign(checkedGoods, { order_sn: order.order_sn });
order.extend_order_goods.forEach(goods => {
if(goods.goods_id == ids[1]) {
Object.assign(checkedGoods, { goods: goods });
this.checkedGoods = checkedGoods;
}
})
}
})
},
setArea(area) {
// console.log(area);
this.area_id = area[0].value;
this.city_id = area[1].value;
let temp = '';
area.forEach(e => {
temp += e.label;
});
this.area = temp;
},
getAreaData() {
this.$u.api.getArea().then((res)=>{
if (res.errCode == 0) {
this.areaList = res.data;
}
})
}, },
animationfinish(e) { animationfinish(e) {
let current = e.detail.current; let current = e.detail.current;
@ -226,16 +310,20 @@ export default {
this.current = current; this.current = current;
this.toApplyPage(current); this.toApplyPage(current);
}, },
order(){ order() {
this.showPopup = true; this.showPopup = true;
}, },
toApplyPage(index) { toApplyPage(index) {
console.log(index) // console.log(index)
if(index == 1) { if(index == 1) {
this.showPopup = false; this.showPopup = false;
this.choose = false this.choose = false
} }
}, },
setViewHeight() {
const res = uni.getSystemInfoSync();
this.swiperHeight = res.windowHeight - (88 / 2) + 'px';
},
// replaces(){ // replaces(){
// if(this.list[0].name==''){ // if(this.list[0].name==''){
// this.$set(this.list,0,{name: ''} ) // this.$set(this.list,0,{name: ''} )
@ -245,12 +333,11 @@ export default {
// }, // },
confirm(){ confirm(){
this.showPopup = false; this.showPopup = false;
if(this.a ==''){ if(JSON.stringify(this.checkedGoods) != '{}'){
this.choose =false this.choose = true;
}else{ }else{
this.choose = true this.choose = false;
} }
}, },
close(){ close(){
this.showPopup = false this.showPopup = false
@ -258,66 +345,58 @@ export default {
reset(){ reset(){
this.choose = false this.choose = false
}, },
radioChange: function(evt) {
for (let i = 0; i < this.items.length; i++) {
if (this.items[i].value === evt.target.value) {
this.current = i;
}
}
}
}, },
}; };
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.wash-order { .wash-order {
height: calc(100vh - 1rpx);
overflow: hidden;
border-top: 1rpx solid #ECECEC; border-top: 1rpx solid #ECECEC;
> uni-swiper { > uni-swiper {
flex: 1; flex: 1;
height: 95vh; // height: 95vh;
} }
.order-info { .order-info {
.choose-info{ .choose-info{
display: flex;flex-wrap: wrap; display: flex;flex-wrap: wrap;
height: 335rpx; height: 335rpx;
.store{ .store{
>view{ >view{
>image{ >image {
width:60rpx; width:60rpx;
height:60rpx; height:60rpx;
border-radius:50%; border-radius: 50%;
vertical-align: middle; vertical-align: middle;
padding-right:13rpx margin-right: 12rpx;
} }
} }
font-size: 28rpx;
font-size:28rpx;
font-family:PingFang SC;
font-weight:400;
color:rgba(51,51,51,1); color:rgba(51,51,51,1);
line-height: 60rpx; line-height: 60rpx;
} }
.store_info{ .store_info{
display: flex; display: flex;
flex-wrap: nowrap; flex-wrap: nowrap;
width: 100%; width: 100%;
height: 150rpx; height: 150rpx;
.info_img{ .info_img {
>image{ >image {
width: 180rpx; width: 180rpx;
height: 160rpx; height: 160rpx;
background-color: aqua;
border-radius: 10rpx;
} }
} }
.info_txt{ .info_txt {
padding-left: 30rpx; padding-left: 30rpx;
padding-right: 30rpx; padding-right: 30rpx;
display: flex; display: flex;
flex-wrap: wrap; flex-wrap: wrap;
width: 100%; width: 100%;
.content{ .content {
line-height: 44rpx; height: 74rpx;
line-height: 37rpx;
font-size: 30rpx; font-size: 30rpx;
color:rgba(51,51,51,1); color:rgba(51,51,51,1);
} }
@ -363,12 +442,10 @@ export default {
>image{ >image{
width: 27rpx; width: 27rpx;
height: 12rpx; height: 12rpx;
} }
} }
> input { > input {
flex: 1; flex: 1;
text-align: right;
} }
} }
@ -385,6 +462,17 @@ export default {
} }
} }
} }
.order-view {
.title {
width: 140rpx;
font-size: 30rpx;
color: rgba(51,51,51,1);
margin-right: 10rpx;
}
> input {
text-align: left;
}
}
} }
.upload-image { .upload-image {
padding: 35rpx 30rpx; padding: 35rpx 30rpx;
@ -417,141 +505,103 @@ export default {
height: 98rpx; height: 98rpx;
background: rgba(255,120,15,1); background: rgba(255,120,15,1);
border-radius: 49rpx; border-radius: 49rpx;
position: absolute; margin: 30rpx auto 30rpx;
bottom: 40rpx;
left: 50%;
transform: translate(-50%, 0);
font-size: 36rpx; font-size: 36rpx;
color:rgba(255,255,255,1); color:rgba(255,255,255,1);
text-align: center; text-align: center;
line-height: 98rpx; line-height: 98rpx;
} }
.popup{ .order-popup {
width: 100%; .check{
height: 100%; padding: 30rpx;
position: fixed; border-bottom: 1rpx solid rgba(236, 236, 236, 1);
bottom: 0;
left: 0;
right: 0;
z-index: 2;
background-color: rgba(0, 0, 0, 0.4);
transform: scale(1);
align-items: center;
transition-duration: 0.3s;
.popup_cont{
border-top: 1px solid RGBA(239, 236, 240, 1);
background-color: #fff;
width: 100%;
height: 1072rpx;
line-height: 80rpx;
font-size:28rpx;
font-family:PingFang SC;
font-weight:400;
color:rgba(102,102,102,1);
transform: scale(1);
position: fixed;
display: flex; display: flex;
flex-direction: column; align-items: center;
bottom: 0px; justify-content: space-between;
left: 0px; > text {
right: 0px; font-size: 30rpx;
/* top: 0px; */ font-weight: 500;
transition-duration: 0.3s; color: rgba(51,51,51,1);
border-radius:20px 20px 0px 0px;
> uni-swiper {
flex: 1;
height: 100vh;
.order-list{
height: 60vh;
padding-bottom: 140rpx;
}
} }
.check{ }
font-size:30rpx; .order-list {
font-family:PingFang SC; height: 60vh;
font-weight:500; padding: 30rpx;
color:rgba(51,51,51,1); box-sizing: border-box;
height:88rpx; .order-item {
width: 100%; margin-bottom: 30rpx;
padding-left: 30rpx; .store {
border-bottom: 1px solid rgba(236, 236, 236, 1); .name {
margin-bottom: 20rpx;
>image{ font-size: 28rpx;
width: 32rpx; color:rgba(51,51,51,1);
height: 32rpx; > image {
vertical-align: middle; width: 60rpx;
float: right; height: 60rpx;
padding-top: 30rpx; border-radius: 50%;
padding-right:30rpx vertical-align: middle;
margin-right: 13rpx;
}
}
.store{
>view{
padding-left: 30rpx;
padding-top: 30rpx;
>image{
width:60rpx;
height:60rpx;
border-radius:50%;
vertical-align: middle;
padding-right:13rpx
}
}
font-size:28rpx;
font-family:PingFang SC;
font-weight:400;
color:rgba(51,51,51,1);
line-height: 60rpx;
}
.checkd{
>radio-group .uni-list-cell{
display: flex;
flex-wrap: nowrap;
width: 100%;
}
.radio{
display: flex;
align-items: center;
padding-left: 30rpx;
}
.store_info{
display: flex;
flex-wrap: nowrap;
width: 100%;
.info_img{
>image{
width: 180rpx;
height: 160rpx;
} }
} }
.info_txt{ .order-sn {
padding-left: 30rpx; margin-bottom: 20rpx;
padding-right: 30rpx; font-size: 24rpx;
color: rgba(153,153,153,1);
}
}
.checkd {
.radio-view {
display: flex; display: flex;
flex-wrap: wrap; align-items: center;
width: 100%; .radio {
.content{ margin-right: 20rpx;
line-height: 44rpx;
font-size: 30rpx;
color:rgba(51,51,51,1);
} }
.much{ .store_info {
display: flex; display: flex;
justify-content: space-between; flex-wrap: nowrap;
width: 100%; width: 100%;
.info_img{
>image{
width: 180rpx;
height: 160rpx;
background-color: aqua;
border-radius: 10rpx;
}
}
.info_txt{
padding-left: 30rpx;
padding-right: 30rpx;
display: flex;
flex-wrap: wrap;
width: 100%;
.content{
height: 74rpx;
line-height: 37rpx;
font-size: 30rpx;
color:rgba(51,51,51,1);
}
.much{
display: flex;
justify-content: space-between;
width: 100%;
}
}
} }
} }
} }
} }
} }
.order-btn {
width: 690rpx;
height: 98rpx;
background: rgba(255,120,15,1);
border-radius: 49rpx;
line-height: 98rpx;
text-align: center;
margin: 0 auto 40rpx;
font-size: 36rpx;
color: rgba(255,255,255,1);
}
} }
} }
</style> </style>

View File

@ -24,7 +24,7 @@
<view>商品收藏</view> <view>商品收藏</view>
</view> </view>
<view @click="toOtherPage('/mine/StoreCollection')"> <view @click="toOtherPage('/mine/StoreCollection')">
<view>{{ userInfo.member_fav_store_num }}</view> <view>{{ userInfo.member_fav_store_num || 0 }}</view>
<view>店铺收藏</view> <view>店铺收藏</view>
</view> </view>
<view @click="toOtherPage('/mine/ImageTextCollection')"> <view @click="toOtherPage('/mine/ImageTextCollection')">
@ -32,11 +32,11 @@
<view>图文收藏</view> <view>图文收藏</view>
</view> </view>
<view @click="toOtherPage('/mine/Integral')"> <view @click="toOtherPage('/mine/Integral')">
<view>{{ userInfo ? userInfo.member_points : 0 }}</view> <view>{{ userInfo.member_points || 0 }}</view>
<view>积分数</view> <view>积分数</view>
</view> </view>
<view @click="toOtherPage('/mine/MineConcerns')"> <view @click="toOtherPage('/mine/MineConcerns')">
<view>{{ userInfo.member_snsfrend_num }}</view> <view>{{ userInfo.member_snsfrend_num || 0 }}</view>
<view>关注</view> <view>关注</view>
</view> </view>
</view> </view>