Merge branch 'master' of http://git.luyuan.tk/luyuan/deming into xbx

This commit is contained in:
luyuan 2020-07-28 20:49:21 +08:00
commit ee08038a64
Signed by: theluyuan
GPG Key ID: A7972FD973317FF3
9 changed files with 743 additions and 345 deletions

View File

@ -278,7 +278,8 @@ export default {
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', {
member_name: member_name,
member_mobile: member_mobile,
@ -287,6 +288,7 @@ export default {
goods_id: goods_id,
num: num,
store_id: store_id,
appointment_time: appointment_time,
})
},
}

View File

@ -244,6 +244,10 @@ export default {
goodsTryOrderList() {
return vm.$u.post('order/goodsTryOrderList');
},
// 试穿订单确认完成
goodsTryConfirm({ id }) {
return vm.$u.post('order/goodsTryConfirm', { id: id });
},
// 订单详情
getOrderInfo({ order_id }) {
return vm.$u.post('Order/orderInfo', { order_id: order_id });
@ -330,6 +334,30 @@ export default {
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>
<input type="text" id="area" placeholder="" v-model="area" />
</view>
<view>
<view @click="showTime=true">
<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>
<u-picker mode="time" v-model="showTime" :params="params" @confirm="chooseDate"></u-picker>
<view class="goods-container">
<view class="store">
<image :src="store.store_avatar"></image>
@ -63,11 +64,20 @@ export default {
address: '', //
area: '', //
time: '',
showTime: false,
number: 1, //
area_id: '', // id
city_id: '', // id
goodsInfo: {},
store: {},
params: {
year: true,
month: true,
day: true,
hour: true,
minute: true,
second: false
},
}
},
mounted() {
@ -98,10 +108,22 @@ export default {
this.$u.toast('详细地址不可为空');
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;
},
chooseDate(e) {
let time = e.year + '-' + e.month + '-' + e.day + ' ' + e.hour + ':' + e.minute;
this.time = time;
},
confirmBtn() {
if(!this.verification) return false;
if(!this.verification()) return false;
this.$u.api.saveGoodsTry({
member_name: this.name,
member_mobile: this.phone,
@ -110,7 +132,8 @@ export default {
goods_id: this.goodsInfo.goods_id,
num: this.number,
store_id: this.store.store_id,
}).then((res)=>{
appointment_time: new Date(this.time),
}).then(res => {
this.$u.toast(res.message);
if (res.errCode == 0) {
// this.$u.route({ type: 'navigateBack' });

View File

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

View File

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

View File

@ -1,28 +1,43 @@
<template>
<view class="wash">
<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>
<swiper :current="swiperCurrent" @animationfinish="animationfinish">
<swiper-item class="swiper-item">
<scroll-view scroll-y class="order-list">
<view v-for="(item, index) in 6" :key="index" class="order-item">
<scroll-view scroll-y class="order-list" @scrolltolower="loadmore">
<view v-for="(item, index) in orderList" :key="index" class="order-item">
<view class="order-title">
<view class="order-text">订单状态</view>
<view class="order-status">已预约</view>
<view class="order-status">{{ item.order_status | viewStatus }}</view>
</view>
<view class="order-info">
<image src="../static/mine/23.png"></image>
<view>
<view>骑手名字xxx</view>
<view>联系方式123456789</view>
<view>所属公司xx公司</view>
<view v-if="item.deliver_goods_type == 2 && item.order_status == 20">
<view>骑手名字{{ item.takeawayer_name }}</view>
<view>联系方式{{ item.member_phone }}</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 class="send-btn">
<view class="btn" v-if="btn_show">
<view class="send-btn" v-if="item.order_status == 20 || item.order_status == 50">
<view class="btn" v-if="item.order_status == 20" @click="sendLaundryOrderConfirm(item.laundry_id)">
确认完成
</view>
<view class="btn" v-if="item.order_status == 50">
去评价
</view>
</view>
</view>
</scroll-view>
@ -40,7 +55,7 @@
</scroll-view>
</swiper-item>
</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>
@ -51,7 +66,7 @@
</view>
</template>
<script>
import Comment from '@/components/mine/comment/index'
import Comment from '@/components/mine/comment/index';
export default {
data() {
return {
@ -65,18 +80,85 @@ export default {
}],
current: 0,
swiperCurrent: 0,
btn_show:true
btn_show:true,
page: 1,
orderList: [],
timer: true,
}
},
components: {
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() {
this.current = 0;
this.swiperCurrent = 0;
this.showPopup= false
this.showPopup = false;
this.sendLaundryOrderList();
},
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) {
this.swiperCurrent = index;
this.toApplyPage(index);
@ -90,14 +172,14 @@ export default {
toApplyPage(index) {
var that = this;
if(index == 1) {
this.showPopup = false
this.showPopup = false;
uni.navigateTo({
url: '/pageE/tool/WashOrder'
});
}else if(index ==0){
} else if (index == 0){
this.history();
}else{
this.showPopup = false
} else {
this.showPopup = false;
}
},
history(){
@ -106,9 +188,10 @@ export default {
replaces(e){
if(e == 1){
this.$set(this.list,0,{name: '实体店历史订单'} )
}else{
} else {
this.$set(this.list,0,{name: '平台历史订单'} )
}
this.sendLaundryOrderList();
},
onTap(){
this.showPopup = false
@ -124,10 +207,15 @@ export default {
flex-direction: column;
> uni-swiper {
flex: 1;
height: 85vh;
}
.title{
.title {
position: relative;
.order-icon {
position: absolute;
top: 50%;
transform: translate(0, -50%);
z-index: 9;
}
}
.swiper-item {
padding-top: 20rpx;
@ -138,8 +226,8 @@ export default {
padding: 0 30rpx;
.order-item {
padding: 30rpx;
width:690rpx;
height: 362rpx;
width: 690rpx;
// height: 362rpx;
background: rgba(255,255,255,1);
border-radius: 10rpx;
margin-bottom: 20rpx;
@ -218,7 +306,6 @@ export default {
justify-content: top;
align-items: center;
transition-duration: 0.3s;
.popup_cont{
border-top: 1px solid RGBA(239, 236, 240, 1);
background-color: #fff;
@ -230,6 +317,7 @@ export default {
font-weight:400;
color:rgba(102,102,102,1);
padding-left: 41rpx;
position: relative;
}
}
}

View File

@ -3,105 +3,63 @@
<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>
</view>
<swiper :current="swiperCurrent" @animationfinish="animationfinish">
<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 :current="swiperCurrent" @animationfinish="animationfinish" :style="{ height: swiperHeight }">
<swiper-item class="swiper-item">
<scroll-view scroll-y="true" style="height: 100%;">
<view class="order-info">
<view class="order-name">
<view class="title">商品名称</view>
<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="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" />
</view>
<view class="order-phone">
<view class="title">商品类型</view>
<input type="text" v-model="name" />
<view class="order-view order-phone">
<view class="title">手机号:</view>
<input type="text" v-model="phone" maxlength="11" />
</view>
<view class="order-phone">
<view class="title">衣服状况</view>
<input type="text" v-model="name" />
</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="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-address">
<view class="title">详细地址</view>
<view class="order-view order-address">
<view class="title">详细地址:</view>
<input type="text" v-model="address" />
</view>
</view>
@ -119,59 +77,111 @@
</view>
</u-upload>
</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>
<view class="popup" v-if="showPopup">
<view class="popup_cont" >
<u-select v-model="showClothesType" :list="typeList" value-name="id" label-name="name" @confirm="confirmType"></u-select>
<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">
<text>选择订单</text>
<image src="../../static/image/common/17.png" @click="close()"></image>
<u-icon name="close" color="#A29FA3" size="32"></u-icon>
</view>
<swiper style="height: 1000px;" vertical="true">
<swiper-item class="swiper-item">
<scroll-view scroll-y class="order-list">
<view v-for="(items, index) in 3" :key="index">
<view class="store">
<view>
<image src="../../static/image/mine/23.png" mode=""></image>胖胖的店
</view>
<view>
订单编号2222222222222
</view>
<scroll-view scroll-y class="order-list">
<u-radio-group v-model="value" @change="radioChange">
<view v-for="(items, index) in orderList" :key="index" class="order-item">
<view class="store">
<view class="name">
<image :src="items.extend_store.store_avatar" mode=""></image>
<text>{{ items.store_name }}</text>
</view>
<view class="checkd">
<radio-group @change="er">
<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 class="order-sn">
订单编号{{ items.order_sn }}
</view>
</view>
</scroll-view>
</swiper-item>
</swiper>
<view class="bottom_btn" style="width: 100%;background-color: #fff;">
<view class="wash-btn" @click="confirm()">确认</view>
</view>
<view class="checkd">
<label class="radio-view" v-for="(item, index) in items.extend_order_goods" :key="index">
<view class="radio">
<u-radio color="#F0AD4E" :name="items.order_id + ' ' + item.goods_id" active-color="#FF780F" icon-size="34"></u-radio>
</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>
</u-popup>
</view>
</template>
<script>
@ -180,45 +190,119 @@ export default {
return {
items: [],
count: 4, //
type: '',
name: '',
phone: '',
area: '',
address: '',
// platformForm: {
// type: '',
// name: '',
// phone: '',
// area: '',
// address: '',
// },
// physicalForm: {
// },
goodsName: '',
list: [{
name: '平台历史订单'
}, {
name: '实体店历史订单'
}],
typeList: [],
orderList: [],
current: 0,
areaList: [],
showClothesType: false,
showAddress: false,
swiperCurrent: 0,
showPopup : false,
a:"",
checkLidt:[
{id:'1'},
{id:'2'},
{id:'3'}
]
showPopup : false,
checkedList: [],
page: 0,
swiperHeight: '',
value: '', // radio
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: {
onShow() {
this.current = 0;
this.swiperCurrent = 0;
this.showPopup = false;
this.choose = false
getClothesTypeList() {
this.$u.api.getClothesTypeList().then(res => {
this.typeList = res.data.typeList;
})
},
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() {
this.$refs.uUpload.upload();
},
onUploaded(list) {
console.log(list)
},tabsChange(index) {
console.log(list);
},
tabsChange(index) {
this.swiperCurrent = index;
},
er(e){
console.log(e)
this.a =e.detail.value;
console.log(this.a)
radioChange(e){
const ids = e.split(" ");
console.log(ids)
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) {
let current = e.detail.current;
@ -226,16 +310,20 @@ export default {
this.current = current;
this.toApplyPage(current);
},
order(){
order() {
this.showPopup = true;
},
toApplyPage(index) {
console.log(index)
// console.log(index)
if(index == 1) {
this.showPopup = false;
this.choose = false
}
},
setViewHeight() {
const res = uni.getSystemInfoSync();
this.swiperHeight = res.windowHeight - (88 / 2) + 'px';
},
// replaces(){
// if(this.list[0].name==''){
// this.$set(this.list,0,{name: ''} )
@ -245,79 +333,70 @@ export default {
// },
confirm(){
this.showPopup = false;
if(this.a ==''){
this.choose =false
if(JSON.stringify(this.checkedGoods) != '{}'){
this.choose = true;
}else{
this.choose = true
this.choose = false;
}
},
close(){
this.showPopup = false
},
reset(){
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>
<style lang="scss" scoped>
.wash-order {
height: calc(100vh - 1rpx);
overflow: hidden;
border-top: 1rpx solid #ECECEC;
> uni-swiper {
flex: 1;
height: 95vh;
// height: 95vh;
}
.order-info {
.choose-info{
display: flex;flex-wrap: wrap;
height: 335rpx;
.store{
>view{
>image{
width:60rpx;
height:60rpx;
border-radius:50%;
vertical-align: middle;
padding-right:13rpx
>image {
width:60rpx;
height:60rpx;
border-radius: 50%;
vertical-align: middle;
margin-right: 12rpx;
}
}
font-size:28rpx;
font-family:PingFang SC;
font-weight:400;
font-size: 28rpx;
color:rgba(51,51,51,1);
line-height: 60rpx;
}
.store_info{
display: flex;
flex-wrap: nowrap;
width: 100%;
height: 150rpx;
.info_img{
>image{
width: 180rpx;
height: 160rpx;
.info_img {
>image {
width: 180rpx;
height: 160rpx;
background-color: aqua;
border-radius: 10rpx;
}
}
.info_txt{
.info_txt {
padding-left: 30rpx;
padding-right: 30rpx;
display: flex;
flex-wrap: wrap;
width: 100%;
.content{
line-height: 44rpx;
.content {
height: 74rpx;
line-height: 37rpx;
font-size: 30rpx;
color:rgba(51,51,51,1);
}
@ -363,12 +442,10 @@ export default {
>image{
width: 27rpx;
height: 12rpx;
}
}
> input {
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 {
padding: 35rpx 30rpx;
@ -417,141 +505,103 @@ export default {
height: 98rpx;
background: rgba(255,120,15,1);
border-radius: 49rpx;
position: absolute;
bottom: 40rpx;
left: 50%;
transform: translate(-50%, 0);
margin: 30rpx auto 30rpx;
font-size: 36rpx;
color:rgba(255,255,255,1);
text-align: center;
line-height: 98rpx;
}
.popup{
width: 100%;
height: 100%;
position: fixed;
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;
.order-popup {
.check{
padding: 30rpx;
border-bottom: 1rpx solid rgba(236, 236, 236, 1);
display: flex;
flex-direction: column;
bottom: 0px;
left: 0px;
right: 0px;
/* top: 0px; */
transition-duration: 0.3s;
border-radius:20px 20px 0px 0px;
> uni-swiper {
flex: 1;
height: 100vh;
.order-list{
height: 60vh;
padding-bottom: 140rpx;
}
align-items: center;
justify-content: space-between;
> text {
font-size: 30rpx;
font-weight: 500;
color: rgba(51,51,51,1);
}
.check{
font-size:30rpx;
font-family:PingFang SC;
font-weight:500;
color:rgba(51,51,51,1);
height:88rpx;
width: 100%;
padding-left: 30rpx;
border-bottom: 1px solid rgba(236, 236, 236, 1);
>image{
width: 32rpx;
height: 32rpx;
vertical-align: middle;
float: right;
padding-top: 30rpx;
padding-right:30rpx
}
}
.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;
}
.order-list {
height: 60vh;
padding: 30rpx;
box-sizing: border-box;
.order-item {
margin-bottom: 30rpx;
.store {
.name {
margin-bottom: 20rpx;
font-size: 28rpx;
color:rgba(51,51,51,1);
> image {
width: 60rpx;
height: 60rpx;
border-radius: 50%;
vertical-align: middle;
margin-right: 13rpx;
}
}
.info_txt{
padding-left: 30rpx;
padding-right: 30rpx;
.order-sn {
margin-bottom: 20rpx;
font-size: 24rpx;
color: rgba(153,153,153,1);
}
}
.checkd {
.radio-view {
display: flex;
flex-wrap: wrap;
width: 100%;
.content{
line-height: 44rpx;
font-size: 30rpx;
color:rgba(51,51,51,1);
align-items: center;
.radio {
margin-right: 20rpx;
}
.much{
.store_info {
display: flex;
justify-content: space-between;
flex-wrap: nowrap;
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>

View File

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