H5端齐采药项目,uniapp框架
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.
 
 
 
 
 

251 lines
5.2 KiB

<template>
<page-meta :page-style="themeColor"></page-meta>
<view class="goods-select">
<view class="top">
<text class="color-base-text">{{refund_data.length}}</text>件商品
</view>
<view class="body">
<view class="item" v-for="(item,index) in refund_data" :key="index">
<view @click="single(index)" v-if="promotion_type != 'bundling'">
<text v-if="item.judge" class="iconfont icon-yuan_checked color-base-text"></text>
<text v-else class="iconfont icon-yuan_checkbox"></text>
</view>
<image :src="$util.img(item.sku_image)" @error="error(index)"></image>
<view class="title">
<text>{{item.sku_name}}</text>
</view>
</view>
</view>
<view class="bottom-all">
<view @click="all" v-if="promotion_type != 'bundling'">
<text v-if=" judge" class="iconfont icon-yuan_checked color-base-text"></text>
<text v-else class="iconfont icon-yuan_checkbox"></text>
<text style="margin-left: 10rpx;">全选</text>
</view>
<view class="" v-else>
</view>
<view v-if="nexthover" class="next" @click="next">下一步</view>
<view v-else class="next nexthover">请选择商品</view>
</view>
<!-- <loading-cover ref="loadingCover"></loading-cover> -->
</view>
</template>
<script>
export default {
data() {
return {
refund_type: 1,
refund_data: [],
judge: false,
order_goods_id: [],
nexthover: true,
promotion_type: "",
}
},
onLoad(option) {
if (option.promotion_type) {
this.promotion_type = option.promotion_type
}
if (option.refund_type) {
this.refund_type = option.refund_type;
this.getGoodsInfo()
} else {
uni.showToast({
title: '未查找到订单信息',
icon: 'none'
})
setTimeout(() => {
this.$util.redirectTo('/pages/order/list');
}, 1000)
}
},
methods: {
/**
* 处理商品选中数据
*/
getGoodsInfo() {
uni.getStorage({
key: 'refund_goods_data',
success: res => {
let refund_data = JSON.parse(res.data);
this.refund_data = [];
refund_data.forEach(item => {
if (item.refund_status == 0) {
item.judge = false;
this.refund_data.push(item);
}
})
}
})
},
/**
*单选事件
*/
single(key) {
this.refund_data[key].judge = !this.refund_data[key].judge;
let allJudge = true;
this.refund_data.forEach((item) => {
if (!item.judge) {
allJudge = false;
}
})
this.judge = allJudge;
this.getOrderIdInfo();
this.$forceUpdate()
},
/**
* 全选选择
*/
all() {
this.judge = !this.judge;
this.refund_data.map(item => {
item.judge = this.judge;
return item;
})
this.getOrderIdInfo();
this.$forceUpdate()
},
/**
* 获取选择的order_goods_id
*/
getOrderIdInfo() {
this.order_goods_id = [];
this.refund_data.forEach(item => {
if (item.judge) {
this.order_goods_id.push(item.order_goods_id)
}
})
if (this.order_goods_id.length == 0) {
this.nexthover = false;
} else {
this.nexthover = true;
}
this.$forceUpdate();
},
/**
* 跳转退款界面
*/
next() {
if (this.order_goods_id.length == 0) {
this.getOrderIdInfo();
}
if (this.refund_type == '4') {
//仅退货=4
alert(this.refund_type)
this.$util.redirectTo('/pages_tool/order/sales_return', {
order_goods_id: this.order_goods_id.join(),
refund_type: this.refund_type
});
}else{
this.$util.redirectTo('/pages_tool/order/refund_batch', {
order_goods_id: this.order_goods_id.join(),
refund_type: this.refund_type
});
}
},
/**
* 默认图片处理
*/
error(index) {
this.refund_data[index].sku_image = this.$util.getDefaultImage().goods
this.$forceUpdate();
}
}
}
</script>
<style lang="scss" scoped>
.goods-select {
margin-top: 30rpx;
.top {
padding: 20rpx 30rpx;
box-sizing: border-box;
font-size: 28rpx;
background: #FFFFFF;
text {
font-size: 30rpx;
margin: 0 10rpx;
font-weight: bold;
}
}
.iconfont {
font-size: 40rpx;
}
.body {
margin: 30rpx;
border-radius: 10rpx;
background: #FFFFFF;
padding: 30rpx 0 0;
.item {
display: flex;
align-items: center;
justify-content: space-between;
padding: 0 30rpx 30rpx;
image {
width: 180rpx;
height: 180rpx;
border-radius: 10rpx;
}
.title {
width: 368rpx;
height: 180rpx;
font-size: 28rpx;
text {
text-overflow: -o-ellipsis-lastline;
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 3;
line-clamp: 3;
-webkit-box-orient: vertical;
}
}
}
}
.bottom-all {
padding-left: 30rpx;
display: flex;
align-items: center;
justify-content: space-between;
background: #FFFFFF;
position: fixed;
left: 0;
bottom: 0;
width: 100%;
box-sizing: border-box;
.next {
padding: 16rpx 80rpx;
color: #FFFFFF;
background: #ff4544;
}
.nexthover {
background: #e7dcdc !important;
}
}
}
</style>