309 lines
8.7 KiB
Vue
309 lines
8.7 KiB
Vue
|
<template>
|
|||
|
<view class="refund-wrapper" :style="viewColor">
|
|||
|
<view class="form-box">
|
|||
|
<view class="form-item item-txt">
|
|||
|
<text class="label">审核</text>
|
|||
|
<view class="picker acea-row">
|
|||
|
<view :class="status == 1 ? 'on' : ''" class="agree-count" @click="status = 1"><text class="icon-agree"></text>同意</view>
|
|||
|
<view :class="status == -1 ? 'on' : ''" class="agree-count" @click="status = -1"><text class="icon-agree"></text>拒绝</view>
|
|||
|
</view>
|
|||
|
</view>
|
|||
|
</view>
|
|||
|
<view v-if="status == 1" class="form-box">
|
|||
|
<view class="form-item item-txt">
|
|||
|
<text class="label">商品实际支付(元)</text>
|
|||
|
<view class="picker">
|
|||
|
{{orderInfo.total_price}}
|
|||
|
</view>
|
|||
|
</view>
|
|||
|
<view class="form-item item-txt">
|
|||
|
<text class="label">运费实际支付(元)</text>
|
|||
|
<view class="picker">
|
|||
|
{{orderInfo.total_postage}}
|
|||
|
</view>
|
|||
|
</view>
|
|||
|
<view class="form-item item-txt">
|
|||
|
<text class="label">商品购买数量(件)</text>
|
|||
|
<view class="picker">
|
|||
|
{{orderInfo.total_num}}
|
|||
|
</view>
|
|||
|
</view>
|
|||
|
<view class="form-item item-txt">
|
|||
|
<text class="label">申请退款金额(元)</text>
|
|||
|
<view class="picker">
|
|||
|
{{orderInfo.refund_price}}
|
|||
|
</view>
|
|||
|
</view>
|
|||
|
<view class="form-item item-txt">
|
|||
|
<text class="label">申请退款数量(件)</text>
|
|||
|
<view class="picker">
|
|||
|
{{orderInfo.refund_num}}
|
|||
|
</view>
|
|||
|
</view>
|
|||
|
<view class="form-item item-txt">
|
|||
|
<text class="label">退款原因</text>
|
|||
|
<view class="picker">
|
|||
|
{{orderInfo.refund_message}}
|
|||
|
</view>
|
|||
|
</view>
|
|||
|
<view class="form-item item-txt">
|
|||
|
<text class="label">退款备注</text>
|
|||
|
<view class="picker">
|
|||
|
{{orderInfo.mark}}
|
|||
|
</view>
|
|||
|
</view>
|
|||
|
<view class="form-item item-txt">
|
|||
|
<text class="label">退款凭证</text>
|
|||
|
<view class="imgs">
|
|||
|
<image v-for="(img, index) in orderInfo.pics4" :src="img" :key="index" style="width: 60rpx;height: 60rpx;margin-right: 10rpx;"></image>
|
|||
|
<image @click="previewImg" src="@/static/images/right.png" style="width: 40rpx;height: 40rpx;transform: rotate(180deg);"></image>
|
|||
|
</view>
|
|||
|
</view>
|
|||
|
</view>
|
|||
|
<view v-if="orderInfo.refund_type == 2 && status == 1" class="form-box">
|
|||
|
<view class="form-item item-txt">
|
|||
|
<text class="label">收货人</text>
|
|||
|
<view class="picker">
|
|||
|
<input style="text-align: right;" maxlength="10" class="p-color" type="text" placeholder="请输入姓名" v-model="refundInfo.mer_delivery_user">
|
|||
|
</view>
|
|||
|
</view>
|
|||
|
<view class="form-item item-txtarea">
|
|||
|
<text class="label">收货地址</text>
|
|||
|
<view class="txtarea"><textarea v-model="refundInfo.mer_delivery_address" value="" placeholder="请输入地址" /></view>
|
|||
|
</view>
|
|||
|
<view class="form-item item-txt">
|
|||
|
<text class="label">手机号</text>
|
|||
|
<view class="picker">
|
|||
|
<input style="text-align: right;" class="p-color" type="text" placeholder="请输入手机号" v-model="refundInfo.phone">
|
|||
|
</view>
|
|||
|
</view>
|
|||
|
</view>
|
|||
|
<view v-if="status == -1" class="form-box">
|
|||
|
<view class="form-item item-txtarea">
|
|||
|
<text class="label">拒绝理由</text>
|
|||
|
<view class="txtarea"><textarea v-model="fail_message" value="" placeholder-class="coarea" placeholder="请填写拒绝退款的理由" /></view>
|
|||
|
</view>
|
|||
|
</view>
|
|||
|
<view class="confirm-btn">
|
|||
|
<view class="btn-box" @click="bindComfirm">确认提交</view>
|
|||
|
</view>
|
|||
|
</view>
|
|||
|
</template>
|
|||
|
<script>
|
|||
|
// +----------------------------------------------------------------------
|
|||
|
// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
|
|||
|
// +----------------------------------------------------------------------
|
|||
|
// | Copyright (c) 2016~2021 https://www.crmeb.com All rights reserved.
|
|||
|
// +----------------------------------------------------------------------
|
|||
|
// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
|
|||
|
// +----------------------------------------------------------------------
|
|||
|
// | Author: CRMEB Team <admin@crmeb.com>
|
|||
|
// +----------------------------------------------------------------------
|
|||
|
import { getRefundOrderInfo, refundOrderSubmit } from '@/api/admin.js'
|
|||
|
import { mapGetters } from "vuex";
|
|||
|
export default{
|
|||
|
components:{},
|
|||
|
computed: mapGetters(['viewColor']),
|
|||
|
data(){
|
|||
|
return {
|
|||
|
order_id:0,
|
|||
|
mer_id: 0,
|
|||
|
type: 0,
|
|||
|
isShowBox:false,
|
|||
|
refund_price:'',
|
|||
|
refund_order_id:'',//退款id
|
|||
|
status: '',
|
|||
|
order_status: false,
|
|||
|
status: 1,
|
|||
|
fail_message: '',
|
|||
|
refundInfo: {
|
|||
|
mer_delivery_user: '',
|
|||
|
mer_delivery_address: '',
|
|||
|
phone: '',
|
|||
|
},
|
|||
|
orderInfo: {}
|
|||
|
}
|
|||
|
},
|
|||
|
onLoad(options) {
|
|||
|
this.order_id = options.id
|
|||
|
this.mer_id = options.merId;
|
|||
|
Promise.all([this.getOrderInfo()])
|
|||
|
},
|
|||
|
methods:{
|
|||
|
// 获取退款订单信息
|
|||
|
getOrderInfo(){
|
|||
|
let that = this;
|
|||
|
getRefundOrderInfo(that.mer_id, that.order_id).then(
|
|||
|
res => {
|
|||
|
res.data.pics4 = res.data.pics.slice(0,4);
|
|||
|
that.orderInfo = res.data;
|
|||
|
that.refundInfo = res.data.refund_info;
|
|||
|
|
|||
|
let user = that.$store.state.app.userInfo;
|
|||
|
if(user) {
|
|||
|
that.refundInfo.mer_delivery_user ? null : that.refundInfo.mer_delivery_user = user.mer_info.mer_name
|
|||
|
that.refundInfo.mer_delivery_address ? null : that.refundInfo.mer_delivery_address = user.mer_info.mer_address
|
|||
|
that.refundInfo.phone ? null : that.refundInfo.phone = user.mer_info.service_phone
|
|||
|
}
|
|||
|
},
|
|||
|
err => {
|
|||
|
that.$util.Tips({title: err});
|
|||
|
}
|
|||
|
);
|
|||
|
},
|
|||
|
// 提交
|
|||
|
async bindComfirm(){
|
|||
|
let that = this
|
|||
|
if(that.status == -1){
|
|||
|
if (!that.fail_message) {
|
|||
|
return that.$util.Tips({
|
|||
|
title: '请填写拒绝理由'
|
|||
|
})
|
|||
|
}
|
|||
|
}
|
|||
|
let params = {
|
|||
|
status: that.status,
|
|||
|
fail_message: that.fail_message
|
|||
|
}
|
|||
|
if(that.orderInfo.refund_type == 2 && that.status != -1){
|
|||
|
if (!that.refundInfo.mer_delivery_user) {
|
|||
|
return that.$util.Tips({
|
|||
|
title: '请填写收货人姓名'
|
|||
|
})
|
|||
|
}
|
|||
|
if (!that.refundInfo.mer_delivery_address) {
|
|||
|
return that.$util.Tips({
|
|||
|
title: '请填写收货地址'
|
|||
|
})
|
|||
|
}
|
|||
|
if (!that.refundInfo.phone) {
|
|||
|
return that.$util.Tips({
|
|||
|
title: '请填写手机号'
|
|||
|
})
|
|||
|
}else if(!(/^1[3456789]\d{9}$/.test(that.refundInfo.phone))){
|
|||
|
return that.$util.Tips({
|
|||
|
title: '请填写正确的手机号码'
|
|||
|
})
|
|||
|
}
|
|||
|
params.mer_delivery_user = that.refundInfo.mer_delivery_user
|
|||
|
params.mer_delivery_address = that.refundInfo.mer_delivery_address
|
|||
|
params.phone = that.refundInfo.phone
|
|||
|
}
|
|||
|
refundOrderSubmit(that.mer_id,that.order_id,params).then(
|
|||
|
res => {
|
|||
|
that.$util.Tips({title: res.message});
|
|||
|
setTimeout(res => {
|
|||
|
uni.redirectTo({
|
|||
|
url:`/pages/admin/orderList/index?types=6&merId=${that.mer_id}`
|
|||
|
})
|
|||
|
}, 1000)
|
|||
|
},
|
|||
|
err => {
|
|||
|
that.$util.Tips({title: err});
|
|||
|
}
|
|||
|
);
|
|||
|
},
|
|||
|
// 查看图片
|
|||
|
previewImg(){
|
|||
|
uni.previewImage({
|
|||
|
urls: this.orderInfo.pics,
|
|||
|
|
|||
|
})
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
</script>
|
|||
|
|
|||
|
<style lang="scss">
|
|||
|
.refund-wrapper{
|
|||
|
padding-bottom: 150rpx;
|
|||
|
.form-box{
|
|||
|
padding-left: 30rpx;
|
|||
|
margin-top: 18rpx;
|
|||
|
background-color: #fff;
|
|||
|
.form-item{
|
|||
|
display: flex;
|
|||
|
justify-content: space-between;
|
|||
|
border-bottom: 1px solid #f0f0f0;
|
|||
|
font-size: 30rpx;
|
|||
|
.label{
|
|||
|
flex-shrink: 0;
|
|||
|
margin-right: 24rpx;
|
|||
|
}
|
|||
|
.imgs{
|
|||
|
display: flex;
|
|||
|
flex-wrap: wrap;
|
|||
|
align-items: center;
|
|||
|
}
|
|||
|
}
|
|||
|
.item-txt{
|
|||
|
align-items: center;
|
|||
|
width: 100%;
|
|||
|
padding:30rpx 30rpx 30rpx 0;
|
|||
|
}
|
|||
|
.item-txtarea{
|
|||
|
padding:30rpx 30rpx 30rpx 0;
|
|||
|
textarea{
|
|||
|
display: block;
|
|||
|
width: 500rpx;
|
|||
|
height: 100rpx;
|
|||
|
font-size: 30rpx;
|
|||
|
}
|
|||
|
.coarea{
|
|||
|
color: #ccc;
|
|||
|
}
|
|||
|
}
|
|||
|
.icon-jiantou{
|
|||
|
margin-left: 10rpx;
|
|||
|
font-size: 28rpx;
|
|||
|
color: #BBBBBB;
|
|||
|
}
|
|||
|
.agree-count{
|
|||
|
margin-left: 30rpx;
|
|||
|
.icon-agree{
|
|||
|
display: inline-block;
|
|||
|
width: 24rpx;
|
|||
|
height: 24rpx;
|
|||
|
background: #CCCCCC;
|
|||
|
border-radius: 100%;
|
|||
|
position: relative;
|
|||
|
top: 2rpx;
|
|||
|
margin-right: 8rpx;
|
|||
|
&::after{
|
|||
|
content: "";
|
|||
|
display: inline-block;
|
|||
|
width: 8rpx;
|
|||
|
height: 8rpx;
|
|||
|
border-radius: 100%;
|
|||
|
background-color: #fff;
|
|||
|
position: absolute;
|
|||
|
top: 8rpx;
|
|||
|
left: 8rpx;
|
|||
|
}
|
|||
|
}
|
|||
|
&.on{
|
|||
|
.icon-agree{
|
|||
|
background: #2291F8;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
.confirm-btn{
|
|||
|
position: fixed;
|
|||
|
bottom: 0;
|
|||
|
padding: 20rpx 30rpx;
|
|||
|
background: #fff;
|
|||
|
width: 100%;
|
|||
|
.btn-box{
|
|||
|
width:100%;
|
|||
|
height:86rpx;
|
|||
|
line-height: 86rpx;
|
|||
|
text-align: center;
|
|||
|
color: #fff;
|
|||
|
background: #2291F8;
|
|||
|
border-radius:43rpx;
|
|||
|
font-size: 32rpx;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
</style>
|