多租户商城-客户PC端
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.
 
 
 
 
 

355 lines
10 KiB

<template>
<div class="orderList">
<div class="head">
<div style="flex:4;padding-left:20px;">
<span style="flex:2;">{{ $t('common.beautiproduct') }}</span>
<span style="flex:1;">单价</span>
<span style="flex:1;">数量</span>
</div>
<div style="flex:4;padding-right:20px;">
<span style="flex:1;">退款金额</span>
<span style="flex:1;">申请时间</span>
<span style="flex:1;">状态</span>
<span style="flex:1;">操作</span>
</div>
</div>
<div v-if="afterSaleList.length>0">
<div class="content" v-for="(item,index) in afterSaleList" :key="index">
<div class="top">
<div class="left">
<span class="shopName" @click="toStore(item.shopId)"><img :src="item.shopLogo" alt="">{{item.shopName}}</span>
<span class="orderCode">售后编号:{{item.afterFormid}}</span>
</div>
</div>
<div class="productBox">
<div class="product">
<div class="left fs13">
<div class="box" v-for="(pro,inx) in item.skus" :key="inx">
<div class="desc cur-poi" @click="toProductDetail(pro,item.shopId)">
<img :src="pro.image" alt="">
<div>
<p class="name">{{pro.productName}}</p>
<p class="size font-color-999"><span v-for="(val,idx) in pro.values" :key="idx">{{val}}</span></p>
</div>
</div>
<div class="price">¥{{pro.price}}</div>
<div class="num">{{pro.number}}</div>
</div>
</div>
<div class="right" :class="item.skus.length>1?'right_line':''">
<div class="actualPay">
<div>
<p class="fs13 mar-bot-5">¥{{item.price}}</p>
</div>
</div>
<div class="applicationTime">{{item.createTime}}</div>
<div class="status">
<div>
<p class="fs13 mar-bot-5" v-if="item.afterState==1">审核中</p>
<p class="fs13 mar-bot-5" v-if="item.afterState==2">退款中</p>
<p class="fs13 mar-bot-5" v-if="item.afterState==3">退货中</p>
<p class="fs13 mar-bot-5" v-if="item.afterState==4">退款成功</p>
<p class="fs13 mar-bot-5" v-if="item.afterState==5">退款失败</p>
<p class="fs13 mar-bot-5" v-if="item.afterState==6">审核不通过</p>
<p class="fs13 mar-bot-5" v-if="item.afterState==7">评审中</p>
<p class="fs13 mar-bot-5 font-color-999" v-if="item.afterState==8">退货完成拒绝退款</p>
<p class="fs13 mar-bot-5 font-color-999" v-if="item.afterState==9">已关闭</p>
<p class="fs13 mar-bot-5 font-color-71B" v-if="item.afterState==10">审核通过</p>
</div>
</div>
<div class="operate">
<el-button size="small"
@click="toAfterSaleDetail(item.afterId,item.orderId)"
>售后详情</el-button>
<p class="fs13 tex-und cur-poi mar-top-10"
@click="platform(item.afterId,item.orderId)"
v-if="item.afterState==6 || item.afterState==8"
v-throttle
>申请平台介入</p>
</div>
</div>
</div>
</div>
</div>
<el-pagination
:current-page="page"
:page-size="5"
:total='total'
@current-change="handleCurrentChange"
background
layout='prev, pager, next'
></el-pagination>
</div>
<div class="noorder" v-else>
<icon-svg style="width: 240px; height: 240px; margin-bottom: 20px;" icon-class="user-order-nodata" />
<p class="fs20 font-color-999">你还没有售后订单哦~</p>
</div>
<el-dialog
title="申请平台介入"
:visible.sync="interventionShow"
width="25%"
center
>
<el-input
type="textarea"
:rows="7"
placeholder="请输入内容"
v-model="reason">
</el-input>
<span slot="footer" class="dialog-footer">
<el-button type="primary" @click="interventionFn">确 定</el-button>
<el-button @click="closeIntervention"> </el-button>
</span>
</el-dialog>
</div>
</template>
<script>
import {
requestPlatform
} from '@/api/user/afterSale.js'
export default {
props: ['afterSaleList', 'page', 'total'],
data () {
return {
state: 1,
reason: '',
images: '',
interventionShow: false,
afterId: '',
orderId: ''
}
},
methods: {
// 分页器跳转
handleCurrentChange (val) {
this.$emit('handleCurrentChange', val)
},
// 跳转到店铺
toStore (id) {
this.$router.push({
path: '/store',
query: {
shopData: {shopId: id}
}
})
},
// 跳转到售后详情
toAfterSaleDetail (aid, oid) {
this.$router.push({
path: '/orderDetail',
query: {
afterId: aid, // 售后id
orderId: oid, // 订单id
type: 3
}
})
},
// 平台介入
platform (afterId, orderId) {
this.afterId = afterId
this.orderId = orderId
this.interventionShow = true
},
// 跳转到商品详情
toProductDetail (item, id) {
let data = {
productId: item.productId,
skuId: item.skuId,
shopId: id
}
this.$router.push({
path: '/productDetail',
query: {
proData: JSON.stringify(data)
}
})
},
closeIntervention () {
this.afterId = ''
this.orderId = ''
this.reason = ''
this.interventionShow = false
},
// 申请平台介入
async interventionFn () {
const response = await requestPlatform({
afterId: this.afterId,
orderId: this.orderId,
image: this.images,
reason: this.reason
})
const res = response.data
if (res.code === '200') {
this.$message.success('申请平台介入成功')
this.interventionShow = false
} else {
this.$message.warning(res.message)
this.interventionShow = false
}
}
}
}
</script>
<style lang="scss" scoped>
.orderList{
width: 100%;
.noorder{
width: 100%;
text-align: center;
padding: 100px 0;
p{
margin-bottom: 20px;
}
.el-button{
background-color: $mainColor;
color: $mainBtnFontColor;
font-weight: normal;
border-radius: 0;
}
}
.head{
box-sizing: border-box;
width: 100%;
height: 44px;
background-color: #F1F2F7;
display: flex;
align-items: center;
text-align: center;
margin-bottom: 20px;
div{
display: flex;
}
}
.content{
width: 100%;
margin-bottom: 20px;
border: 1px solid #E5E5E5;
border-bottom: 0;
box-sizing: border-box;
.top{
width: 100%;
font-size: 13px;
height: 40px;
display: flex;
justify-content: space-between;
align-items: center;
background-color: #F3F3F3;
.left{
display: flex;
.shopName{
margin-left: 20px;
margin-right: 60px;
cursor: pointer;
display: flex;
align-items: center;
img{
width: 16px;
height: 16px;
vertical-align: middle;
margin-right: 5px;
}
}
.time{
margin-right: 60px;
}
}
}
.productBox{
width: 100%;
box-sizing: border-box;
.product{
width: 100%;
display: flex;
.left{
flex: 4;
.box{
padding: 20px 0 20px 20px;
display: flex;
border-bottom: 1px solid #E5E5E5;
.desc{
flex: 2;
display: flex;
img{
width: 86px;
height: 86px;
margin-right: 10px;
}
div{
display: flex;
flex-direction: column;
justify-content: space-between;
.name{
font-size: 14px;
}
.size{
font-size: 13px;
span{
margin-right: 10px;
}
span:last-child{
margin-right: 0;
}
}
}
}
.price,.num{
flex: 1;
display: flex;
align-items: center;
justify-content: center;
}
}
}
.right{
padding: 20px 20px 20px 0;
flex: 4;
display: flex;
border-bottom: 1px solid #E5E5E5;
.actualPay,.applicationTime,.status,.operate{
flex: 1;
display: flex;
justify-content: center;
align-items: center;
text-align: center;
div{
text-align: center;
}
.el-button{
border: 1px solid $mainGlod;
color: $mainGlod;
border-radius: 0;
}
}
.status{
p{
color: #C83732;
}
}
.operate{
flex-direction: column;
}
}
.right_line{
border-left: 1px solid #E5E5E5;
}
}
}
}
>>>.el-pagination{
margin-top: 40px;
text-align: right;
.el-pager{
li:not(.disabled):hover{
color: $mainGlod;
}
li:not(.disabled).active{
background-color: $mainGlod;
}
li:not(.disabled).active:hover{
color: #F4F4F5;
}
}
}
}
</style>