多租户商城-商户小程序端
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

407 lines
10 KiB

<!-- 申请售后 -->
<template>
<view>
<global-loading />
<view class="content">
<view class="order-list-box">
<view class="item">
<view class="order-info-box">
<view class="order-info">
<u-checkbox-group @change="checkboxGroupChange">
<u-checkbox
active-color="#252744"
shape="circle"
size="40"
v-for="(item, index) in item.skus"
:key="index"
v-model="item.checked"
:name='item.skuId'
@change="checkboxChange(item)">
<view class="order-info-item">
<image :src="item.image"
class="product-img"></image>
<view class="info-box">
<text class="product-name">{{ item.productName }}</text>
<view class="product-sku">{{ item.value }}</view>
<view class="price-sku-box">
<text class="product-price">
<text class="fuhao">¥</text>
{{ item.price }}
</text>
<text class="product-num">x {{ item.number }}</text>
</view>
</view>
</view>
</u-checkbox>
</u-checkbox-group>
</view>
</view>
</view>
</view>
<view class="afterSale-select-box">
<view class="selectBtn flex-items flex-sp-between">
<view class="selectBox">
<checkbox-group name="allCheck"
@change="changeAll">
<label>
<checkbox color="#252744"
:value="allCheck.value"
:checked="allCheck.checked"/>
<text>{{ allCheck.name }}</text>
</label>
</checkbox-group>
</view>
<view class="selectRight flex-items">
<view style="margin-right: 12rpx">{{ number || 0 }}件商品</view>
<view class="totalPrice">合计:
<text>¥{{ total.toFixed(2) }}</text>
</view>
</view>
</view>
<view class="afterBtnBox flex-items flex-sp-between">
<view class="afterBtn1"
@click="ReturnMoney(item)">{{$t('common.refund_only')}}
</view>
<view v-if="distribution !== 1"
class="afterBtn2"
@click="ReturnGoods(item)">{{$t('common.refunds_and_returns')}}
</view>
</view>
</view>
</view>
</view>
</template>
<script>
const NET = require('../../utils/request')
const API = require('../../config/api')
export default {
data() {
return {
item: {},
checkboxChangelist: [],
xuanzlist: [],
allCheck: {
name: this.$t('common.chooseall'),
value: 'all',
checked: false
},
number: null,
total: 0,
distribution: null,
isAllSelect: 0,
evaluated: 0,//待评价订单申请
}
},
onLoad(options) {
this.item = JSON.parse(options.item)
this.distribution = this.item.skus[0].distribution
if([2].includes(this.item.state)){
this.distribution = 1
}
this.evaluated = options.isAllSelect
// this.item.skus.forEach((item) => {
// this.number = this.number + item.number
// this.total = this.total + item.total
// })
},
methods: {
// 算钱
HandleGetRefundMoney() {
return new Promise((resolve, reject) => {
if (this.xuanzlist.length <= 0) {
resolve(0)
return
}
// uni.showLoading({
// title: "计算中..."
// })
let postData = {
orderId: this.item.orderId,
isAllSelect: this.evaluated == 1 ? this.xuanzlist.length === this.item.skus.length ? 1 : 0 : 0,
skus: this.xuanzlist
}
NET.request(API.GetRefundMoney, postData, "POST").then(res => {
uni.hideLoading()
resolve(parseFloat(res.json))
})
})
},
// 申请退款
ReturnMoney(item) {
if (this.xuanzlist.length <= 0) {
uni.showToast({
title: '请选择退款的商品',
duration: 2000,
icon: 'none'
})
} else {
uni.setStorageSync('afterSaleApplyRefund', this.xuanzlist)
uni.navigateTo({
url: 'afterSaleApplyRefund?orderId=' + this.item.orderId + '&isAllSelect=' + (this.evaluated==1?this.isAllSelect:0)
})
}
},
// 全选
async changeAll(e) {
if (e.detail.value.length == 0) {
this.item.skus.map(item => this.$set(item, 'checked', false));
this.$set(this.allCheck, 'checked', false);
this.xuanzlist = []
if (this.item.state === 4 && this.evaluated != undefined) {
this.isAllSelect = this.evaluated
} else {
this.isAllSelect = 0
}
} else {
this.item.skus.map(item => this.$set(item, 'checked', true));
this.$set(this.allCheck, 'checked', true);
if (this.item.state === 4 && this.evaluated != undefined) {
this.isAllSelect = this.evaluated
} else {
this.isAllSelect = 1
}
this.xuanzlist = this.item.skus.filter(item => item.checked == true)
this.number = 0
// this.total = 0
this.item.skus.forEach((item) => {
this.number = this.number + item.number
// this.total = this.total + item.total
})
}
this.total = await this.HandleGetRefundMoney()
},
// 申请退货
ReturnGoods(item) {
if (this.xuanzlist.length <= 0) {
uni.showToast({
title: '请选择退货的商品',
duration: 2000,
icon: 'none'
})
} else {
uni.navigateTo({
url: 'afterSaleApplyRetund?list=' + encodeURIComponent(JSON.stringify(this.xuanzlist)) + '&orderId=' + this.item.orderId + '&isAllSelect='+ (this.evaluated==1?this.isAllSelect:0)
})
}
},
checkboxGroupChange(e) {
// console.log(e, 'fdsfdsfsdf')
},
async checkboxChange(e) {
// 动态设置商品件数和总计
if (e.checked) {
this.number = this.number + e.number
// this.total = this.total + e.total
} else {
this.number = this.number - e.number
// this.total = this.total - e.total
}
// 筛选勾选的
this.xuanzlist = this.item.skus.filter(item => item.checked == true)
// 是否为全选
if (this.item.skus.length == this.xuanzlist.length) {
if (this.item.state === 4 && this.evaluated != undefined) {
this.isAllSelect = this.evaluated
} else {
this.isAllSelect = 1
}
this.$set(this.allCheck, 'checked', true);
} else {
if (this.item.state === 4 && this.evaluated != undefined) {
this.isAllSelect = this.evaluated
} else {
this.isAllSelect = 0
}
this.$set(this.allCheck, 'checked', false);
}
this.total = await this.HandleGetRefundMoney()
// if(this.xuanzlist.findIndex(item=>item.checked===true)==-1){
// console.log(this.allCheck,'this.allCheck')
// console.log(this.xuanzlist,'this.xuanzlist')
// this.$set(this.allCheck, 'checked', false);
// } else {
// console.log(this.allCheck,'this.allCheck')
// this.$set(this.allCheck, 'checked', true);
// console.log(this.xuanzlist,'this.xuanzlist')
// }
}
}
}
</script>
<style lang="scss"
scoped>
page {
background: #F8F8F8;
}
.order-list-box {
padding: 20upx 30upx;
box-sizing: border-box;
}
.order-list-box .item {
background: #fff;
border-radius: 10upx;
}
.order-list-top {
height: 96upx;
padding: 0 30upx;
box-sizing: border-box;
display: flex;
flex-direction: row;
align-items: center;
justify-content: space-between;
border-bottom: 1px solid #eee;
}
.top-l {
display: flex;
flex-direction: row;
align-items: center;
}
.shop-img {
width: 36upx;
height: 36upx;
margin-right: 10upx;
}
.shop-name {
font-size: 30upx;
color: #333;
font-weight: bold;
}
.arrow-img {
margin-left: 15upx;
width: 24upx;
height: 24upx;
}
.order-status {
font-size: 28upx;
color: #ff7911;
font-weight: 500;
}
.order-info-box {
padding: 0 30upx;
box-sizing: border-box;
}
.order-info {
/* border-bottom: 1px solid #eee; */
}
.order-info-item {
display: flex;
flex-direction: row;
padding: 10upx 20upx;
border-bottom: solid 1px #eee;
width: 600rpx;
}
.order-info-item:last-child {
border-bottom: none;
}
.product-img {
width: 180upx;
height: 180upx;
border-radius: 10upx;
margin-right: 30upx;
}
.info-box {
flex: 1;
display: flex;
flex-direction: column;
}
.product-name {
font-size: 28rpx;
color: #252744;
//height: 68upx;
//line-height: 34upx;
display: -webkit-box;
overflow: hidden;
text-overflow: ellipsis;
word-break: break-all;
-webkit-box-orient: vertical;
-webkit-line-clamp: 2;
}
.price-sku-box {
display: flex;
flex-direction: row;
justify-content: space-between;
margin-top: 10upx;
}
.product-sku {
font-size: 28rpx;
color: #90919C;
margin-top: 12rpx;
}
.product-price {
font-size: 32rpx;
color: #252744;
font-weight: 400;
}
.product-price .fuhao {
font-size: 32rpx;
}
.product-num {
font-size: 32rpx;
color: #90919C;
}
.afterSale-select-box {
position: fixed;
bottom: 0;
width: 100%;
background: #fff;
padding: 30rpx;
box-sizing: border-box;
height: 240rpx;
}
.afterBtnBox {
margin-top: 30rpx;
.afterBtn1 {
width: 342rpx;
line-height: 100rpx;
border: 1rpx solid #252744;
text-align: center;
color: #252744;
border-radius: 50rpx;
margin-right: 30rpx;
}
.afterBtn2 {
width: 342rpx;
height: 100rpx;
line-height: 100rpx;
background: #333333;
border: 1rpx solid #252744;
border-radius: 50rpx;
text-align: center;
color: #252744;
}
}
.selectBox /deep/ .uni-checkbox:not([disabled]) .uni-checkbox-input:hover {
border-color: #252744;
}
</style>