提交 0fabb976 authored 作者: huaxinzhu's avatar huaxinzhu

订单优化和售后列表静态页面

上级 ada37dee
......@@ -137,13 +137,23 @@
<el-button size="mini" type="primary" @click="addRemark">添加备注</el-button>
</div>
<div style="width: 75%; min-height: 100px; border: 1px solid #eee; padding: 10px;">
<dl v-for="(item, index) in orderDetail.remark_list"
:key="index"
class="remark-con"
>
<dt>{{item.date_time}}</dt>
<dd>{{item.content}}</dd>
</dl>
<!-- <el-timeline-item-->
<!-- v-for="(remarkItem, index) in orderDetail.remark"-->
<!-- :key="index"-->
<!-- color="#0bbd87"-->
<!-- :timestamp="formatter(remarkItem.date_time)">-->
<!-- {{remarkItem.content}}-->
<!-- </el-timeline-item>-->
<!-- </el-timeline>-->
<!-- <div ">暂无留言备注</div>-->
<p v-if="orderDetail.remark.length == 0" style="color:#999;">暂无备注</p>
<div v-for="(remarkItem, index) in orderDetail.remark" :key="index" class="remark-con">
<span class="remark-time">{{ formatter(remarkItem.date_time) }}</span>
<span class="remark-text">{{ remarkItem.content }}</span>
</div>
</div>
</div>
</div>
......@@ -308,41 +318,9 @@ export default {
goods_ids: null, // 发货的商品订单 id
}
},
created() {
},
mounted() {
},
computed: {
// goodsFreight() {
// let freight = 0
// // if (this.orderDetail) {
// // this.orderDetail.item.map(item => {
// // freight += item.freight
// // })
// // }
// return freight
// },
// goodsPrice() {
// let price = 0
// if (this.orderDetail) {
// this.orderDetail.item.map(item => {
// price += item.goods_list[0].price
// })
// }
// return price
// },
// goodsNum() {
// let goodsNum = 0
// if (this.orderDetail) {
// this.orderDetail.item.map(item => {
// goodsNum += item.goods_list[0].num
// })
// }
// return goodsNum
// }
},
watch: {},
created() {},
mounted() {},
methods: {
/** 商品 发货状态 */
goodsStatusFormatter(status) {
......@@ -589,13 +567,8 @@ export default {
// 订单详情
handleInfo() {
this.detailDialog = true
let order_id = this.orderDetail.id
orderInfo({order_id: order_id}).then(res => {
if (res.code == 1 && res.data) {
this.orderDetail = res.data.order
this.orderGoodsDetail = res.data.order_goods_detail ? res.data.order_goods_detail : [];
}
})
let id = this.orderDetail.id
this.$emit('updateOrder',id);
},
// 选中的表格
handleSelectionChange(val) {
......@@ -861,6 +834,20 @@ export default {
/* 留言框样式 */
.remark-con {
border: 1px solid #eee;
line-height:28px;
color: #333;
box-shadow :0 2px 10px 0 rgba(0,0,0,0.05);
margin: 10px;
padding: 10px;
}
.remark-con > p {
margin: 0;
padding: 10px;
}
.remark-con .remark-time {
padding: 0 20px;
}
.remark-con .remark-text {
}
</style>
......@@ -146,7 +146,7 @@
<el-dialog title="订单详情" width="85%" :close-on-click-modal="false" :destroy-on-close="true"
:visible.sync="detailDialog" center :before-close="handleClose">
<div style="height:100%;">
<order-detail :order-detail="order_detail" :order-goods-detail="order_goods_detail" :express-lists="expressLists"/>
<order-detail :order-detail="order_detail" :order-goods-detail="order_goods_detail" :express-lists="expressLists" @updateOrder="updateOrder"/>
</div>
</el-dialog>
<!-- 批量发货 -->
......@@ -205,6 +205,7 @@
import {dateFormat} from '@/utils'
import OrderDetail from './components/orderDetail.vue'
import XLSX from "xlsx"
import {isArray} from "../../../utils/validate";
export default {
components: {
......@@ -230,7 +231,9 @@
detailDialog: false,
isDeliveryOpen: false,
excelList: [],
order_detail: null, // 订单信息
order_detail: {
remark: []
}, // 订单信息
order_goods_detail: [], // 订单商品信息
expressLists: [],
fullHeight:'',
......@@ -510,14 +513,40 @@
let order_id = row.order_id
orderInfo({order_id: order_id}).then(res => {
if (res.code == 1 && res.data) {
// order 对象 订单信息 order_goods_detail-订单商品信息数组
this.order_detail = res.data.order
// 留言备注,需要单独处理
let remarkList = []
// res.data.order.remark 返回数据格式比较多,不判断了
try {
remarkList = JSON.parse(res.data.order.remark)
} catch (e) {
remarkList = []
console.log(99,e);
}
res.data.order.remark = remarkList
this.order_detail = res.data.order;
// let isArray = Array.isArray(remarkList)
//
// if(isArray) {
// res.data.order.remark = remarkList
// this.order_detail = res.data.order;
// }else {
//
// }
this.order_goods_detail = res.data.order_goods_detail ? res.data.order_goods_detail : [];
//console.log("详情数据",this.order_goods_detail);
//console.log('备注留言返回原始数据',res.data.order.remark);
// this.$router.push({path: '/system/goods/management'});
}
})
},
/** 更新 订单备注 */
updateOrder(id) {
let row = {order_id: id}
this.handleInfo(row);
},
// 获取物流信息
getExpressList() {
expressList().then(res => {
......
<template>
<div>
售后详情成功
</div>
</template>
<script>
export default {
name: "EditOrder",
data() {
return {
}
},
}
</script>
<style scoped>
</style>
<template>
<div class="app-container">
<el-card class="box-card">
<div slot="header" class="clearfix">
<el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="82px" class="queryFormInline">
<el-form-item label="申请时间" prop="applyTime">
<el-date-picker
size="small"
v-model="queryParams.applyTime"
type="daterange"
align="left"
unlink-panels
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
:picker-options="pickerOptions">
</el-date-picker>
</el-form-item>
<el-form-item label="商品ID" prop="goodsId">
<el-input
v-model="queryParams.goodsId"
placeholder="请输入商品id"
clearable
size="small"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="商品名称" prop="goodsName">
<el-input
v-model="queryParams.goodsName"
placeholder="请输入商品名称"
clearable
size="small"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<!-- 状态页签 -->
<el-tabs v-model="activeName" @tab-click="handleClick" class="after-sale-tabs">
<el-tab-pane label="未处理" name="first"></el-tab-pane>
<el-tab-pane label="处理中" name="second"></el-tab-pane>
<el-tab-pane label="已完成" name="third"></el-tab-pane>
</el-tabs>
<!-- 搜索条件 -->
<el-form class="form-params" :model="queryParams" label-width="auto" :inline="true" size="small">
<el-form-item label="申请时间" prop="applyTime">
<el-date-picker
v-model="queryParams.applyTime"
type="daterange"
align="left"
unlink-panels
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
:picker-options="pickerOptions">
</el-date-picker>
</el-form-item>
<el-form-item label="退换货类型" prop="userNeed">
<el-select v-model="queryParams.userNeed" placeholder="全部原因" size="small" clearable >
<el-option v-for="item in userNeedOptions" :key="item.value" :label="item.label"
:value="item.value"></el-option>
</el-select>
</el-form-item>
<el-form-item label="商品ID" prop="goodsId">
<el-input
v-model="queryParams.goodsId"
placeholder="请输入商品id"
clearable
@keyup.enter.native="handleQuery"
/></el-form-item>
<el-form-item label="退换货原因" prop="needMsg">
<el-select v-model="queryParams.needMsg" placeholder="全部类型" size="small" clearable >
<el-option v-for="item in needMsgOptions" :key="item.value" :label="item.label"
:value="item.value"></el-option>
</el-select>
</el-form-item>
<el-form-item label="商品名称" prop="goodsName">
<el-input
v-model="queryParams.goodsName"
placeholder="请输入商品名称"
clearable
@keyup.enter.native="handleQuery"
/></el-form-item>
<el-form-item label="处理状态" prop="processDes">
<el-select v-model="queryParams.processDes" placeholder="全部状态" size="small" clearable >
<el-option v-for="item in processDesOptions" :key="item.value" :label="item.label"
:value="item.value"></el-option>
</el-select>
</el-form-item>
<el-form-item label="退换货类型" prop="userNeed">
<el-select v-model="queryParams.userNeed" placeholder="全部类型" clearable >
<el-option v-for="item in userNeedOptions" :key="item.value" :label="item.label"
:value="item.value"></el-option>
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
</div>
<el-table v-loading="loading" :data="retreatList" :height="tableHeight">
<el-table-column label="序号" align="center" prop="id"/>
<el-table-column label="商品名称" align="center" prop="goods_title"/>
<el-table-column label="订单号" align="center" prop="refund_sn"/>
<el-table-column label="订单手机号" align="center" prop="UPhone"/>
<el-form-item label="订单号" prop="order_sn">
<el-input
v-model="queryParams.order_sn"
placeholder="请输入订单号"
clearable
@keyup.enter.native="handleQuery"
/></el-form-item>
<el-form-item label="退换货原因" prop="needMsg">
<el-select v-model="queryParams.needMsg" placeholder="全部类型" size="small" clearable >
<el-option v-for="item in needMsgOptions" :key="item.value" :label="item.label"
:value="item.value"></el-option>
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="getList">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
<!-- 列表 -->
<el-table class="after-sale-table" :data="afterSaleList" :height="afterSaleHeight">
<el-table-column label="商品ID" align="center" width="180" prop="goodsId"></el-table-column>
<el-table-column label="商品名称" align="center" width="180" prop="goodsName"></el-table-column>
<el-table-column label="订单号" align="center" width="180" prop="order_sn"></el-table-column>
<el-table-column label="退换货类型" width="180">
<template slot-scope="scope">
<span v-if="scope.row.userNeed == 1">仅退款</span>
<span v-if="scope.row.userNeed == 2">退货退款</span>
</template>
</el-table-column>
<el-table-column label="退换货原因" align="center" prop="reason">
<template slot-scope="scope">
<span v-if="scope.row.reason==1">协商一致退款</span>
......@@ -77,347 +86,58 @@
<span v-if="scope.row.reason==6">7天无理由</span>
<span v-if="scope.row.reason==7">拍错/多拍/不想要</span>
<span v-if="scope.row.reason==8">其他</span>
</template>
</el-table-column>
<el-table-column label="退换货类型" align="center" prop="refund_type">
<el-table-column label="申请时间" align="center" prop="created_time">
<template slot-scope="scope">
<span v-if="scope.row.refund_type==1">退款</span>
<span v-if="scope.row.refund_type==2">退货</span>
<span v-if="scope.row.refund_type==3">换货</span>
{{formatter(scope.row.created_time)}}
</template>
</el-table-column>
<el-table-column label="处理状态" align="center" prop="status">
<template slot-scope="scope">
<span v-if="scope.row.reason==-1">关闭</span>
<span v-if="scope.row.reason==1">用户取消</span>
<span v-if="scope.row.reason==2">待审核</span>
<span v-if="scope.row.reason==3">驳回</span>
<span v-if="scope.row.reason==4">待退货</span>
<span v-if="scope.row.reason==5">待收货</span>
<span v-if="scope.row.reason==6">重新发货</span>
<span v-if="scope.row.reason==7">重新收货</span>
<span v-if="scope.row.reason==8">待打款</span>
<span v-if="scope.row.reason==9">已完成</span>
</template>
</el-table-column>
<!-- <el-table-column label="到期时间" align="center" prop="TaskEndtime"/> -->
<el-table-column label="申请时间" align="center" prop="created_time">
<template slot-scope="scope">
<el-table-column label="到期时间" align="center" prop="created_time">
<template slot-scope="scope">
{{formatter(scope.row.created_time)}}
</template>
</el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<el-table-column label="操作" width="140" align="center">
<template slot-scope="scope">
<el-button
size="mini"
type="text"
@click="handleInfo(scope.row)"
>详情
</el-button>
<el-button type="text" @click="handleInfo(scope.row)">详情</el-button>
</template>
</el-table-column>
</el-table>
<pagination
v-show="total>0"
:total="total"
:page.sync="queryParams.page"
:limit.sync="queryParams.limit"
@pagination="getList"
/>
<!-- 售后申请信息对话框 -->
<el-dialog :title="title" :visible.sync="open" width="80%" class="after-sales-details" :modal-append-to-body="false" :close-on-click-modal='false'>
<el-col :span="24" class="card-box" >
<el-card>
<div slot="header">
<span>订单信息</span>
</div>
<div class="el-table el-table--enable-row-hover el-table--medium">
<el-row>
<el-col :span="12"><div class="cells">订单编号: {{form.order.order_sn}}</div></el-col>
<el-col :span="12"><div class="cells">下单时间: {{form.order.order_create_time}}</div></el-col>
<el-col :span="12"><div class="cells">订单金额: {{form.order.order_money/100}} 元</div></el-col>
<el-col :span="12"><div class="cells">运费: {{form.order.dispatch_price/100}}元</div></el-col>
<el-col :span="12"><div class="cells">数量: x {{form.order.order_goods_total}}</div></el-col>
<el-col :span="12"><div class="cells">订单来源: xxxxxxxx</div></el-col>
<el-col :span="12"><div class="cells">支付时间: {{form.order.order_pay_time}}</div></el-col>
<el-col :span="12"><div class="cells">支付方式: xxxxxx</div></el-col>
<el-col :span="24"><div class="cells">订单状态: {{goodsStatus(form.order.order_status)}}</div></el-col>
</el-row>
</div>
</el-card>
</el-col>
<el-col :span="24" class="card-box" >
<el-card>
<div slot="header">
<span>商品信息</span>
</div>
<div class="el-table el-table--enable-row-hover el-table--medium">
<el-row>
<el-col :span="24"><div class="cells">商品名称: {{form.order.goods_title}}</div></el-col>
<el-col :span="24"><div class="cells">商品ID: {{form.order.goods_id}}</div></el-col>
<el-col :span="24"><div class="cells">商品数量: x {{form.order.goods_total}}</div></el-col>
<el-col :span="24"><div class="cells">商品规格: {{form.order.goods_option_title}}</div></el-col>
</el-row>
</div>
</el-card>
</el-col>
<el-col :span="24" class="card-box" >
<el-card>
<div slot="header">
<span>退换货信息</span>
</div>
<div class="el-table el-table--enable-row-hover el-table--medium">
<el-row>
<el-col :span="24"><div class="cells">退换货类型: {{userNeed(form.order.refund_type)}}</div></el-col>
<el-col :span="24"><div class="cells">退货数量: {{form.order.refund_goods_total}}</div></el-col>
<el-col :span="24"><div class="cells">联系电话: {{form.order.receiver_phone}}</div></el-col>
<el-col :span="24"><div class="cells">申请原因: {{userMsg(form.order.reason)}}</div></el-col>
<el-col :span="24"><div class="cells">问题描述: {{form.order.content}}</div></el-col>
<el-col :span="24"><div class="cells">申请金额: {{form.order.goods_option_title}}</div></el-col>
<el-col :span="24"><div class="cells">退款金额: {{form.order.goods_option_title}}</div></el-col>
</el-row>
</div>
</el-card>
</el-col>
<!-- 退款 同意,拒绝 -->
<!-- 退货退换 同意,拒绝 -->
<!-- 同意 确认收货 退款 -->
<!-- 同意 拒绝收货 拒绝 -->
<el-row>
<!-- refundtype//退款类型 1退款2退货3换货-->
<!-- refundstatus//退款状态 退款状态-1关闭1用户取消2待审核3驳回4待退货5待收货6重新发货7重新收货8待打款9已完成 -->
<el-button type="primary" v-if='refundstatus==2' @click=refundagree()>同意申请</el-button>
<el-button type="warning" v-if='refundstatus==2' >拒绝申请</el-button>
<el-button type="info" v-if='refundstatus==3' disabled>拒绝申请</el-button>
<el-button type="warning" disabled v-if='refundstatus==8'>退款</el-button>
</el-row>
<el-col :span="24" class="card-box" v-if="reject">
<el-card>
<div slot="header">
<span>拒绝信息</span>
</div>
<div class="el-table el-table--enable-row-hover el-table--medium">
<el-form :model="submitParam" ref="queryForm" label-width="68px">
<el-form-item label="拒绝原因">
<el-select v-model="submitParam.act_cause" placeholder="拒绝原因">
<el-option v-for="item in actCause" :key="item.value" :label="item.label"
:value="item.value"></el-option>
</el-select>
</el-form-item>
<el-form-item label="详细说明" prop="goods_name">
<el-input
v-model="submitParam.des"
placeholder="请输入商品名称"
clearable
size="small"
/>
</el-form-item>
<el-form-item>
<el-button type="cyan" size="mini" @click="handleReject">确定提交</el-button>
<el-button size="mini" @click="handleRejectCancel">取消</el-button>
</el-form-item>
</el-form>
</div>
</el-card>
</el-col>
<el-col :span="24" class="card-box" v-if="reback">
<el-card>
<div slot="header">
<span>退货地址</span>
</div>
<div class="el-table el-table--enable-row-hover el-table--medium">
<el-form :model="submitParam" ref="queryForm" label-width="68px">
<el-form-item label="退货地址">
<el-select v-model="submitParam.address" placeholder="退货地址" style="width:500px;">
<el-option v-for="(item,index) in form.address" :key="item.value" :label="item.label" v-if="item != '' "
:value="item.value"></el-option>
</el-select>
</el-form-item>
<el-form-item label="退货说明" prop="des">
<el-input
v-model="submitParam.des"
placeholder="可以详细说明原因"
clearable
size="small"
/>
</el-form-item>
</el-form>
</div>
</el-card>
</el-col>
</el-form>
<!-- 退货退款弹窗 -->
<el-dialog title="退货退款" width="500px" center :visible.sync="dialogTableVisible" :modal-append-to-body="false" :append-to-body="true" :close-on-click-modal='false'>
<el-form style='width:400px; margin:0 auto;'>
<el-form-item>
确定同意买家的退货退款申请吗?请确认您已收到买家寄回的商品后,再同意退款!
</el-form-item>
<el-form-item label="选择售后收货地址">
<el-select v-model="restaddress" placeholder="售后收货地址" style="width:260px;">
<el-option v-for="(item,index) in address" :key="index" :label="item.address"
:value="item.id"></el-option>
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="digrefundagree">确定</el-button>
<el-button @click="dialogTableVisible = false">取消</el-button>
</el-form-item>
</el-form>
</el-dialog>
<!-- 拒绝申请弹窗 -->
<el-dialog title="拒绝申请" width="500px" center :visible.sync="dialogTableVisible" :modal-append-to-body="false" :append-to-body="true" :close-on-click-modal='false'>
<el-form style='width:400px; margin:0 auto;'>
<el-form-item>
确定同意买家的退货退款申请吗?请确认您已收到买家寄回的商品后,再同意退款!
</el-form-item>
<el-form-item label="拒绝原因">
<el-select v-model="restaddress" placeholder="拒绝原因" style="width:260px;">
<el-option v-for="(item,index) in address" :key="index" :label="item.address"
:value="item.id"></el-option>
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="digrefundagree">确定</el-button>
<el-button @click="dialogTableVisible = false">取消</el-button>
</el-form-item>
</el-form>
</el-dialog>
</el-dialog>
<!-- 分页 -->
<div class="pagination-con">
<el-pagination
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page="currentPage"
:page-sizes="[20, 40, 60, 80, 100]"
:page-size="pageSize"
layout="total, sizes, prev, pager, next, jumper"
:total="total">
</el-pagination>
</div>
</el-card>
</div>
</template>
<script>
import {listRetreat, getRetreat, refundagreeat,refundReject , getSearchParams} from '@/api/module/retreat'
import {getAddressList} from '@/api/module/retreat/address'
import {dateFormat} from '@/utils'
import { dateFormat } from '@/utils'
export default {
name: "retreat",
name: "Index",
data() {
return {
// 遮罩层
loading: false,
fullHeight: 0,
tableHeight: 0,
//退货地址
address: [],
//提交信息
submitParam: {
event_id: 0,
act: "",
act_cause: 0,
des: "",
address: "",
imgObj: []
},
//拒绝原因 1:,2:,3:,4:,5,6:,7:,8:,9:,10:,11:,12:,13:,14:
actCause: [
{label: '请选择拒绝原因',value:0},
{label: "买家要求退款金额过高", value: 1},
{label: "买家举证无效,商品没问题", value: 2},
{label: "买家未举证,商品没问题", value: 3},
{label: "商品已超售后服务时限", value: 4},
{label: "退回商品后才能退款", value: 5},
{label: "过期未操作", value: 6},
{label: "退回的商品影响2次销售", value: 7},
{label: "已经协商好换货或维修", value: 8},
{label: "买家家退回的商品不是我店铺的", value: 9},
{label: "买家填写的退货单号无记录", value: 10},
{label: "没收到退货,快递还在途中", value: 11},
{label: "买家擅自使用到货付款", value: 12},
{label: "买家退回的商品不全", value: 13},
{label: "其他", value: 14},
],
// 售后类型/退换货类型
userNeedOptions: [
{value: -1,label:'全部类型'},
{value: 1,label: '仅退款'},
{value: 2,label: '退货退款'},
{value: 3,label: '客服仲裁'}
],
// 退换货原因
needMsgOptions: [
{value: -1,label: '全部原因'},
{value: 1,label: '协商一致退款'},
{value: 2,label: '质量问题'},
{value: 3,label: '物流问题'},
{value: 4,label: '假冒品牌'},
{value: 5,label: '少件/漏发/破损/污渍'},
{value: 6,label: '7天无理由'},
{value: 7,label: '拍错/多拍/不想要'},
{value: 8,label: '其他'},
],
// 处理状态
processDesOptions: [
{value: -1,label: '全部状态'},
{value: 1,label: '未处理'},
{value: 2,label: '处理中'},
{value: 3,label: '已处理'},
{value: 4,label: '客服介入'},
],
//状态
orderInfo: true,
//拒绝框
reject: false,
//退货地址
reback: false,
// 选中数组
ids: [],
// 非单个禁用
single: true,
// 非多个禁用
multiple: true,
// 显示搜索条件
showSearch: true,
// 总条数
total: 0,
// 售后申请信息表格数据
retreatList: [],
// 弹出层标题
title: "",
// 是否显示弹出层
open: false,
// 查询参数
goodsStatus: 0,
activeName: 'first',
queryParams: {
page: 1,
limit: 10,
applyTime: [],
beginTime: '',
endTime: '',
goodsId: null,
goodsName: null,
userNeed: null,
needMsg: null,
processDes: null
applyTime: '', // 申请时间
goodsId: 0, // 商品Id
goodsName: '', // 商品名称
userNeed: '', // 退货退款类型
order_sn: '', // 订单号
},
data: {},
// 表单参数
form: {
retreat: {info: {needMsg: 0}},
order: {},
},
orderrefundid:'',//订单号
refundtype:'',//退款类型
refundstatus:'',//退款状态
dialogTableVisible:false,//退货退款弹窗
restaddress:'',//退货地址id
pickerOptions: {
shortcuts: [{
text: '最近一周',
......@@ -445,338 +165,137 @@ import {dateFormat} from '@/utils'
}
}]
},
};
// 退换货类型
userNeedOptions: [
{value: -1,label: '全部类型'},
{value: 1,label: '仅退款'},
{value: 2,label: '退货退款'},
],
// 退换货原因
needMsgOptions: [
{value: -1,label: '全部原因'},
{value: 1,label: '协商一致退款'},
{value: 2,label: '质量问题'},
{value: 3,label: '物流问题'},
{value: 4,label: '假冒品牌'},
{value: 5,label: '少件/漏发/破损/污渍'},
{value: 6,label: '7天无理由'},
{value: 7,label: '拍错/多拍/不想要'},
{value: 8,label: '其他'},
],
fullHeight: 0,
afterSaleHeight: 200,
currentPage: 1,
pageSize: 20,
total: 0,
// 售后列表
afterSaleList: [
{goodsId: 1},
{goodsId: 1},
{goodsId: 1},
{goodsId: 1},
{goodsId: 1},
{goodsId: 1},
{goodsId: 1},
{goodsId: 1},
{goodsId: 1},
{goodsId: 1},
{goodsId: 1},
],
}
}, // data end
watch: {
fullHeight(val) {
let formHeight = document.getElementsByClassName('form-params')[0].clientHeight;
let tabsHeight = document.getElementsByClassName('after-sale-tabs')[0].clientHeight;
this.afterSaleHeight = val - formHeight -tabsHeight - 40 - 40
}
},
created() {
this.getParams();
this.getList();
this.getgetAddressList()
this.$nextTick(() => {
this.fullHeight = document.getElementsByClassName('box-card')[0].clientHeight
})
},
watch: {
fullHeight(val) {
let formHeight = document.getElementsByClassName('clearfix')[0].clientHeight
this.tableHeight = val - formHeight - 120
},
'queryParams.applyTime'() {
// select组件,clear的时候,将addTimeInterval的值,初始化为null,判断当其值为null时,赋值为数组
if(!this.queryParams.applyTime && typeof(this.queryParams.applyTime) !== "undefined") {
this.queryParams.applyTime = [];
this.queryParams.beginTime = '';
this.queryParams.endTime = '';
}
}
mounted() {
},
methods: {
// 获取售后地址
getgetAddressList(){
let data = {
limit:10,
page:1
/** 顶部 状态页签切换 */
handleClick() {
switch (this.activeName) {
case 'first':
this.goodsStatus = 1
break
case 'second':
this.goodsStatus = 2
break
case 'third':
this.goodsStatus = 3
break
default:
break
}
getAddressList(data).then(res=>{
if(res.code==1){
this.address = res.data.data
}
})
},
/** 查看售后详情 */
handleInfo(row) {
const id = row.refund_sn
getRetreat(id).then(response => {
this.loading = false;
this.form.order = response.data;
this.orderrefundid = response.data.order_refund_sn
// this.refundtype= response.data.refund_type//退款类型
// this.refundstatus= response.data.status//退款状态
this.refundtype= 2//退款类型
this.refundstatus= 2//退款状态
this.open = true;
this.title = "售后申请信息详情";
});
// 搜索条件初始化
this.resetSearchParams();
// 列表 查询
this.getList();
},
// 售后star
// refundtype//退款类型 1退款2退货3换货
// refundstatus//退款状态 退款状态-1关闭1用户取消2待审核3驳回4待退货5待收货6重新发货7重新收货8待打款9已完成
refundagree(){
if(this.refundtype == 1){ //退款
this.$msgbox({
title: '确认同意买家的仅退款申请吗?',
message:'如果您同意,将直接退款给买家,买家不用寄回商品!',
center:true,
showCancelButton: true,
confirmButtonText: '确定',
cancelButtonText: '取消',
beforeClose: (action, instance, done) => {
if (action === 'confirm') {
done();
let data={
order_refund_id:this.orderrefundid
}
refundagreeat(data).then(res=>{
if(res.code==1){
done();
this.$message({
type: 'success',
message: '操作成功!'
});
}else{
done();
this.$message({
type: 'warning',
message: res.message
});
}
})
} else {
done();
}
}
}).then(action => {
});
}else if(this.refundtype == 2){ //退货
this.dialogTableVisible = true
}
},
digrefundagree(){
let data = {
order_refund_id:this.orderrefundid,
order_refund_address:this.restaddress
}
refundagreeat(data).then(res=>{
if(res.code==1){
this.dialogTableVisible = false
this.$message({
type: 'success',
message: '操作成功!'
});
}else{
this.$message({
type: 'warning',
message: res.message
});
}
})
/** 列表查询 */
getList() {
console.log('参数:',this.queryParams);
},
// 售后over
formatter(time) {
return dateFormat(time, 'Y-m-d H:i:s')
/** 重置 操作 */
resetQuery() {
this.resetSearchParams();
this.getList();
},
getParams() {
getSearchParams().then(res => {
if(res.userNeed && res.userNeed.length > 0) {
this.userNeedOptions = res.userNeed;
}
if(res.needMsg && res.needMsg.length > 0) {
this.needMsgOptions = res.needMsg;
}
if(res.processDes && res.processDes.length > 0) {
this.processDesOptions = res.processDes;
}
/** 售后 订单 详情 */
handleInfo(row) {
// 入参 为 未处理-1,处理中-2,已完成-3
let type = row.type ? row.type : 0;
this.$router.push({
path: '/system/goods/management',
query: { goodsStatus: type }
});
},
//原因 卖家拒绝(1:买家要求退款金额过高2:买家举证无效,商品没问题3:买家未举证,商品没问题4:商品已超售后服务时限5:退回商品后才能退款6:过期未操作,7:其他)
actCauses(actCause) {
if (actCause == 1) {
return "买家要求退款金额过高"
} else if (actCause == 2) {
return "买家举证无效,商品没问题"
} else if (actCause == 3) {
return "买家未举证,商品没问题"
} else if (actCause == 4) {
return "商品已超售后服务时限"
} else if (actCause == 5) {
return "退回商品后才能退款"
} else if (actCause == 6) {
return "过期未操作"
} else if (actCause == 7) {
return "其他"
} else {
return "未知"
}
},
//行为1:同意:2拒绝3:客服介入4:撤销 5:发送收货地址 6:同意收货 7:买家上传物流信息
act(act) {
if (act == 1) {
return "同意"
} else if (act == 2) {
return "拒绝"
} else if (act == 3) {
return "客服介入"
} else if (act == 4) {
return "撤销"
} else if (act == 5) {
return "发送收货地址"
} else if (act == 6) {
return "同意收货"
} else if (act == 7) {
return "买家上传物流信息"
} else {
return "未知"
}
},
//角色 1:2:3:客服 4:系统
role(id) {
if (id == 1) {
return "商家操作"
} else if (id == 2) {
return "用户操作"
} else if (id == 3) {
return "客服操作"
} else if (id == 4) {
return "系统操作"
} else {
return "未知"
}
},
// //获取地址后缀id
// getIndex(index) {
// index = index.slice(14);
// return index
// },
//商品状态 0:,1:,2:,3
goodsStatus(status) {
if (status == 0) {
return "待付款"
} else if (status == 1) {
return "待发货"
} else if (status == 2) {
return "待收货"
} else if (status == 3) {
return "已完成"
} else if (status == 4){
return "已结算"
}else if (status == -1){
return "订单取消"
}
},
userNeed(ids) { //1::2:3:
if (ids == 1) {
return "仅退款"
} else if (ids == 2) {
return "退款退货"
} else if (ids == 3) {
return "换货"
} else {
return "未知"
}
},
userMsg(typs) {
if (typs == 1) {
return "协商一致退款"
} else if (typs == 2) {
return "质量问题"
} else if (typs == 3) {
return "物流问题"
} else if (typs == 4) {
return "假冒品牌"
} else if (typs == 5) {
return "少件/漏发/破损/污渍"
} else if (typs == 6) {
return "7天无理由"
} else if (typs == 7) {
return "拍错/多拍/不想要"
} else {
return "其他"
}
},
handleSizeChange(val) {
/** 查询售后申请信息列表 */
getList() {
listRetreat(this.queryParams).then(res => {
if(res.data) {
this.retreatList = res.data.data;
this.total = res.data.count;
}
});
},
// 取消按钮
cancel() {
this.open = false;
this.reset();
handleCurrentChange(val) {
},
// 表单重置
reset() {
this.form = {
"order": [],
"retreat": []
/** 搜索条件初始化 */
resetSearchParams() {
};
this.resetForm("form");
},
/** 搜索按钮操作 */
/** 搜索条件 键盘enter */
handleQuery() {
if(this.queryParams.applyTime.length === 2) {
this.queryParams.beginTime = new Date(this.queryParams.applyTime[0]).getTime() / 1000;
this.queryParams.endTime = new Date(this.queryParams.applyTime[1]).getTime() / 1000;
}
this.queryParams.page = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm("queryForm");
this.queryParams.beginTime = '';
this.queryParams.endTime = '';
this.handleQuery();
},
//同意申请并发货
handleAddress() {
this.orderInfo = false
this.reject = false
this.reback = true
},
// 多选框选中数据
handleSelectionChange(selection) {
this.ids = selection.map(item => item.id)
this.single = selection.length !== 1
this.multiple = !selection.length
},
handleRejectCancel() {
this.orderInfo = true
this.reject = false
},
handleRejectPre() {
this.orderInfo = false
this.reject = true
},
handleRebackCancel() {
this.reject = false
this.reback = false
this.orderInfo = true
},
},
//methods结束
};
/** 时间戳转化 格式化 */
formatter(time) {
return dateFormat(time * 1000, 'Y-m-d H:i:s')
},
} // methods end
}
</script>
<style scoped lang="scss" type="text/stylus">
/deep/.queryFormInline {
.el-form-item {
margin-bottom: 5px ;
}
<style scoped>
/deep/ .el-dialog__body{
height: 100%;
overflow:hidden;
}
/deep/ .after-sales-details .el-dialog{
height:80%;
overflow: hidden;
/deep/.after-sale-tabs .el-tabs__item {
line-height: 30px;
}
/deep/ .el-dialog__body{
height:calc(100% - 50px);
overflow-y: scroll;
/deep/.el-form--inline .el-form-item {
margin-right: 15px;
}
.cells{
line-height:32px;
.pagination-con {
text-align: center;
margin-top: 15px;
}
</style>
<template>
<div class="app-container">
<el-card class="box-card">
<div slot="header" class="clearfix">
<el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="82px" class="queryFormInline">
<el-form-item label="申请时间" prop="applyTime">
<el-date-picker
size="small"
v-model="queryParams.applyTime"
type="daterange"
align="left"
unlink-panels
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
:picker-options="pickerOptions">
</el-date-picker>
</el-form-item>
<el-form-item label="商品ID" prop="goodsId">
<el-input
v-model="queryParams.goodsId"
placeholder="请输入商品id"
clearable
size="small"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="商品名称" prop="goodsName">
<el-input
v-model="queryParams.goodsName"
placeholder="请输入商品名称"
clearable
size="small"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="退换货类型" prop="userNeed">
<el-select v-model="queryParams.userNeed" placeholder="全部原因" size="small" clearable >
<el-option v-for="item in userNeedOptions" :key="item.value" :label="item.label"
:value="item.value"></el-option>
</el-select>
</el-form-item>
<el-form-item label="退换货原因" prop="needMsg">
<el-select v-model="queryParams.needMsg" placeholder="全部类型" size="small" clearable >
<el-option v-for="item in needMsgOptions" :key="item.value" :label="item.label"
:value="item.value"></el-option>
</el-select>
</el-form-item>
<el-form-item label="处理状态" prop="processDes">
<el-select v-model="queryParams.processDes" placeholder="全部状态" size="small" clearable >
<el-option v-for="item in processDesOptions" :key="item.value" :label="item.label"
:value="item.value"></el-option>
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
</div>
<el-table v-loading="loading" :data="retreatList" :height="tableHeight">
<el-table-column label="序号" align="center" prop="id"/>
<el-table-column label="商品名称" align="center" prop="goods_title"/>
<el-table-column label="订单号" align="center" prop="refund_sn"/>
<el-table-column label="订单手机号" align="center" prop="UPhone"/>
<el-table-column label="退换货原因" align="center" prop="reason">
<template slot-scope="scope">
<span v-if="scope.row.reason==1">协商一致退款</span>
<span v-if="scope.row.reason==2">质量问题</span>
<span v-if="scope.row.reason==3">物流问题</span>
<span v-if="scope.row.reason==4">假冒品牌</span>
<span v-if="scope.row.reason==5">少件/漏发/破损/污渍</span>
<span v-if="scope.row.reason==6">7天无理由</span>
<span v-if="scope.row.reason==7">拍错/多拍/不想要</span>
<span v-if="scope.row.reason==8">其他</span>
</template>
</el-table-column>
<el-table-column label="退换货类型" align="center" prop="refund_type">
<template slot-scope="scope">
<span v-if="scope.row.refund_type==1">退款</span>
<span v-if="scope.row.refund_type==2">退货</span>
<span v-if="scope.row.refund_type==3">换货</span>
</template>
</el-table-column>
<el-table-column label="处理状态" align="center" prop="status">
<template slot-scope="scope">
<span v-if="scope.row.reason==-1">关闭</span>
<span v-if="scope.row.reason==1">用户取消</span>
<span v-if="scope.row.reason==2">待审核</span>
<span v-if="scope.row.reason==3">驳回</span>
<span v-if="scope.row.reason==4">待退货</span>
<span v-if="scope.row.reason==5">待收货</span>
<span v-if="scope.row.reason==6">重新发货</span>
<span v-if="scope.row.reason==7">重新收货</span>
<span v-if="scope.row.reason==8">待打款</span>
<span v-if="scope.row.reason==9">已完成</span>
</template>
</el-table-column>
<!-- <el-table-column label="到期时间" align="center" prop="TaskEndtime"/> -->
<el-table-column label="申请时间" align="center" prop="created_time">
<template slot-scope="scope">
{{formatter(scope.row.created_time)}}
</template>
</el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button
size="mini"
type="text"
@click="handleInfo(scope.row)"
>详情
</el-button>
</template>
</el-table-column>
</el-table>
<pagination
v-show="total>0"
:total="total"
:page.sync="queryParams.page"
:limit.sync="queryParams.limit"
@pagination="getList"
/>
<!-- 售后申请信息对话框 -->
<el-dialog :title="title" :visible.sync="open" width="80%" class="after-sales-details" :modal-append-to-body="false" :close-on-click-modal='false'>
<el-col :span="24" class="card-box" >
<el-card>
<div slot="header">
<span>订单信息</span>
</div>
<div class="el-table el-table--enable-row-hover el-table--medium">
<el-row>
<el-col :span="12"><div class="cells">订单编号: {{form.order.order_sn}}</div></el-col>
<el-col :span="12"><div class="cells">下单时间: {{form.order.order_create_time}}</div></el-col>
<el-col :span="12"><div class="cells">订单金额: {{form.order.order_money/100}} 元</div></el-col>
<el-col :span="12"><div class="cells">运费: {{form.order.dispatch_price/100}}元</div></el-col>
<el-col :span="12"><div class="cells">数量: x {{form.order.order_goods_total}}</div></el-col>
<el-col :span="12"><div class="cells">订单来源: xxxxxxxx</div></el-col>
<el-col :span="12"><div class="cells">支付时间: {{form.order.order_pay_time}}</div></el-col>
<el-col :span="12"><div class="cells">支付方式: xxxxxx</div></el-col>
<el-col :span="24"><div class="cells">订单状态: {{goodsStatus(form.order.order_status)}}</div></el-col>
</el-row>
</div>
</el-card>
</el-col>
<el-col :span="24" class="card-box" >
<el-card>
<div slot="header">
<span>商品信息</span>
</div>
<div class="el-table el-table--enable-row-hover el-table--medium">
<el-row>
<el-col :span="24"><div class="cells">商品名称: {{form.order.goods_title}}</div></el-col>
<el-col :span="24"><div class="cells">商品ID: {{form.order.goods_id}}</div></el-col>
<el-col :span="24"><div class="cells">商品数量: x {{form.order.goods_total}}</div></el-col>
<el-col :span="24"><div class="cells">商品规格: {{form.order.goods_option_title}}</div></el-col>
</el-row>
</div>
</el-card>
</el-col>
<el-col :span="24" class="card-box" >
<el-card>
<div slot="header">
<span>退换货信息</span>
</div>
<div class="el-table el-table--enable-row-hover el-table--medium">
<el-row>
<el-col :span="24"><div class="cells">退换货类型: {{userNeed(form.order.refund_type)}}</div></el-col>
<el-col :span="24"><div class="cells">退货数量: {{form.order.refund_goods_total}}</div></el-col>
<el-col :span="24"><div class="cells">联系电话: {{form.order.receiver_phone}}</div></el-col>
<el-col :span="24"><div class="cells">申请原因: {{userMsg(form.order.reason)}}</div></el-col>
<el-col :span="24"><div class="cells">问题描述: {{form.order.content}}</div></el-col>
<el-col :span="24"><div class="cells">申请金额: {{form.order.goods_option_title}}</div></el-col>
<el-col :span="24"><div class="cells">退款金额: {{form.order.goods_option_title}}</div></el-col>
</el-row>
</div>
</el-card>
</el-col>
<!-- 退款 同意,拒绝 -->
<!-- 退货退换 同意,拒绝 -->
<!-- 同意 确认收货 退款 -->
<!-- 同意 拒绝收货 拒绝 -->
<el-row>
<!-- refundtype//退款类型 1退款2退货3换货-->
<!-- refundstatus//退款状态 退款状态-1关闭1用户取消2待审核3驳回4待退货5待收货6重新发货7重新收货8待打款9已完成 -->
<el-button type="primary" v-if='refundstatus==2' @click=refundagree()>同意申请</el-button>
<el-button type="warning" v-if='refundstatus==2' >拒绝申请</el-button>
<el-button type="info" v-if='refundstatus==3' disabled>拒绝申请</el-button>
<el-button type="warning" disabled v-if='refundstatus==8'>退款</el-button>
</el-row>
<el-col :span="24" class="card-box" v-if="reject">
<el-card>
<div slot="header">
<span>拒绝信息</span>
</div>
<div class="el-table el-table--enable-row-hover el-table--medium">
<el-form :model="submitParam" ref="queryForm" label-width="68px">
<el-form-item label="拒绝原因">
<el-select v-model="submitParam.act_cause" placeholder="拒绝原因">
<el-option v-for="item in actCause" :key="item.value" :label="item.label"
:value="item.value"></el-option>
</el-select>
</el-form-item>
<el-form-item label="详细说明" prop="goods_name">
<el-input
v-model="submitParam.des"
placeholder="请输入商品名称"
clearable
size="small"
/>
</el-form-item>
<el-form-item>
<el-button type="cyan" size="mini" @click="handleReject">确定提交</el-button>
<el-button size="mini" @click="handleRejectCancel">取消</el-button>
</el-form-item>
</el-form>
</div>
</el-card>
</el-col>
<el-col :span="24" class="card-box" v-if="reback">
<el-card>
<div slot="header">
<span>退货地址</span>
</div>
<div class="el-table el-table--enable-row-hover el-table--medium">
<el-form :model="submitParam" ref="queryForm" label-width="68px">
<el-form-item label="退货地址">
<el-select v-model="submitParam.address" placeholder="退货地址" style="width:500px;">
<el-option v-for="(item,index) in form.address" :key="item.value" :label="item.label" v-if="item != '' "
:value="item.value"></el-option>
</el-select>
</el-form-item>
<el-form-item label="退货说明" prop="des">
<el-input
v-model="submitParam.des"
placeholder="可以详细说明原因"
clearable
size="small"
/>
</el-form-item>
</el-form>
</div>
</el-card>
</el-col>
</el-form>
<!-- 退货退款弹窗 -->
<el-dialog title="退货退款" width="500px" center :visible.sync="dialogTableVisible" :modal-append-to-body="false" :append-to-body="true" :close-on-click-modal='false'>
<el-form style='width:400px; margin:0 auto;'>
<el-form-item>
确定同意买家的退货退款申请吗?请确认您已收到买家寄回的商品后,再同意退款!
</el-form-item>
<el-form-item label="选择售后收货地址">
<el-select v-model="restaddress" placeholder="售后收货地址" style="width:260px;">
<el-option v-for="(item,index) in address" :key="index" :label="item.address"
:value="item.id"></el-option>
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="digrefundagree">确定</el-button>
<el-button @click="dialogTableVisible = false">取消</el-button>
</el-form-item>
</el-form>
</el-dialog>
<!-- 拒绝申请弹窗 -->
<el-dialog title="拒绝申请" width="500px" center :visible.sync="dialogTableVisible" :modal-append-to-body="false" :append-to-body="true" :close-on-click-modal='false'>
<el-form style='width:400px; margin:0 auto;'>
<el-form-item>
确定同意买家的退货退款申请吗?请确认您已收到买家寄回的商品后,再同意退款!
</el-form-item>
<el-form-item label="拒绝原因">
<el-select v-model="restaddress" placeholder="拒绝原因" style="width:260px;">
<el-option v-for="(item,index) in address" :key="index" :label="item.address"
:value="item.id"></el-option>
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="digrefundagree">确定</el-button>
<el-button @click="dialogTableVisible = false">取消</el-button>
</el-form-item>
</el-form>
</el-dialog>
</el-dialog>
</el-card>
</div>
</template>
<script>
import {listRetreat, getRetreat, refundagreeat,refundReject , getSearchParams} from '@/api/module/retreat'
import {getAddressList} from '@/api/module/retreat/address'
import {dateFormat} from '@/utils'
export default {
name: "retreat",
data() {
return {
// 遮罩层
loading: false,
fullHeight: 0,
tableHeight: 0,
//退货地址
address: [],
//提交信息
submitParam: {
event_id: 0,
act: "",
act_cause: 0,
des: "",
address: "",
imgObj: []
},
//拒绝原因 1:,2:,3:,4:,5,6:,7:,8:,9:,10:,11:,12:,13:,14:
actCause: [
{label: '请选择拒绝原因',value:0},
{label: "买家要求退款金额过高", value: 1},
{label: "买家举证无效,商品没问题", value: 2},
{label: "买家未举证,商品没问题", value: 3},
{label: "商品已超售后服务时限", value: 4},
{label: "退回商品后才能退款", value: 5},
{label: "过期未操作", value: 6},
{label: "退回的商品影响2次销售", value: 7},
{label: "已经协商好换货或维修", value: 8},
{label: "买家家退回的商品不是我店铺的", value: 9},
{label: "买家填写的退货单号无记录", value: 10},
{label: "没收到退货,快递还在途中", value: 11},
{label: "买家擅自使用到货付款", value: 12},
{label: "买家退回的商品不全", value: 13},
{label: "其他", value: 14},
],
// 售后类型/退换货类型
userNeedOptions: [
{value: -1,label:'全部类型'},
{value: 1,label: '仅退款'},
{value: 2,label: '退货退款'},
{value: 3,label: '客服仲裁'}
],
// 退换货原因
needMsgOptions: [
{value: -1,label: '全部原因'},
{value: 1,label: '协商一致退款'},
{value: 2,label: '质量问题'},
{value: 3,label: '物流问题'},
{value: 4,label: '假冒品牌'},
{value: 5,label: '少件/漏发/破损/污渍'},
{value: 6,label: '7天无理由'},
{value: 7,label: '拍错/多拍/不想要'},
{value: 8,label: '其他'},
],
// 处理状态
processDesOptions: [
{value: -1,label: '全部状态'},
{value: 1,label: '未处理'},
{value: 2,label: '处理中'},
{value: 3,label: '已处理'},
{value: 4,label: '客服介入'},
],
//状态
orderInfo: true,
//拒绝框
reject: false,
//退货地址
reback: false,
// 选中数组
ids: [],
// 非单个禁用
single: true,
// 非多个禁用
multiple: true,
// 显示搜索条件
showSearch: true,
// 总条数
total: 0,
// 售后申请信息表格数据
retreatList: [],
// 弹出层标题
title: "",
// 是否显示弹出层
open: false,
// 查询参数
queryParams: {
page: 1,
limit: 10,
applyTime: [],
beginTime: '',
endTime: '',
goodsId: null,
goodsName: null,
userNeed: null,
needMsg: null,
processDes: null
},
data: {},
// 表单参数
form: {
retreat: {info: {needMsg: 0}},
order: {},
},
orderrefundid:'',//订单号
refundtype:'',//退款类型
refundstatus:'',//退款状态
dialogTableVisible:false,//退货退款弹窗
restaddress:'',//退货地址id
pickerOptions: {
shortcuts: [{
text: '最近一周',
onClick(picker) {
const end = new Date();
const start = new Date();
start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
picker.$emit('pick', [start, end]);
}
}, {
text: '最近一个月',
onClick(picker) {
const end = new Date();
const start = new Date();
start.setTime(start.getTime() - 3600 * 1000 * 24 * 30);
picker.$emit('pick', [start, end]);
}
}, {
text: '最近三个月',
onClick(picker) {
const end = new Date();
const start = new Date();
start.setTime(start.getTime() - 3600 * 1000 * 24 * 90);
picker.$emit('pick', [start, end]);
}
}]
},
};
},
created() {
this.getParams();
this.getList();
this.getgetAddressList()
this.$nextTick(() => {
this.fullHeight = document.getElementsByClassName('box-card')[0].clientHeight
})
},
watch: {
fullHeight(val) {
let formHeight = document.getElementsByClassName('clearfix')[0].clientHeight
this.tableHeight = val - formHeight - 120
},
'queryParams.applyTime'() {
// select组件,clear的时候,将addTimeInterval的值,初始化为null,判断当其值为null时,赋值为数组
if(!this.queryParams.applyTime && typeof(this.queryParams.applyTime) !== "undefined") {
this.queryParams.applyTime = [];
this.queryParams.beginTime = '';
this.queryParams.endTime = '';
}
}
},
methods: {
// 获取售后地址
getgetAddressList(){
let data = {
limit:10,
page:1
}
getAddressList(data).then(res=>{
if(res.code==1){
this.address = res.data.data
}
})
},
/** 查看售后详情 */
handleInfo(row) {
const id = row.refund_sn
getRetreat(id).then(response => {
this.loading = false;
this.form.order = response.data;
this.orderrefundid = response.data.order_refund_sn
// this.refundtype= response.data.refund_type//退款类型
// this.refundstatus= response.data.status//退款状态
this.refundtype= 2//退款类型
this.refundstatus= 2//退款状态
this.open = true;
this.title = "售后申请信息详情";
});
},
// 售后star
// refundtype//退款类型 1退款2退货3换货
// refundstatus//退款状态 退款状态-1关闭1用户取消2待审核3驳回4待退货5待收货6重新发货7重新收货8待打款9已完成
refundagree(){
if(this.refundtype == 1){ //退款
this.$msgbox({
title: '确认同意买家的仅退款申请吗?',
message:'如果您同意,将直接退款给买家,买家不用寄回商品!',
center:true,
showCancelButton: true,
confirmButtonText: '确定',
cancelButtonText: '取消',
beforeClose: (action, instance, done) => {
if (action === 'confirm') {
done();
let data={
order_refund_id:this.orderrefundid
}
refundagreeat(data).then(res=>{
if(res.code==1){
done();
this.$message({
type: 'success',
message: '操作成功!'
});
}else{
done();
this.$message({
type: 'warning',
message: res.message
});
}
})
} else {
done();
}
}
}).then(action => {
});
}else if(this.refundtype == 2){ //退货
this.dialogTableVisible = true
}
},
digrefundagree(){
let data = {
order_refund_id:this.orderrefundid,
order_refund_address:this.restaddress
}
refundagreeat(data).then(res=>{
if(res.code==1){
this.dialogTableVisible = false
this.$message({
type: 'success',
message: '操作成功!'
});
}else{
this.$message({
type: 'warning',
message: res.message
});
}
})
},
// 售后over
formatter(time) {
return dateFormat(time, 'Y-m-d H:i:s')
},
getParams() {
getSearchParams().then(res => {
if(res.userNeed && res.userNeed.length > 0) {
this.userNeedOptions = res.userNeed;
}
if(res.needMsg && res.needMsg.length > 0) {
this.needMsgOptions = res.needMsg;
}
if(res.processDes && res.processDes.length > 0) {
this.processDesOptions = res.processDes;
}
});
},
//原因 卖家拒绝(1:买家要求退款金额过高2:买家举证无效,商品没问题3:买家未举证,商品没问题4:商品已超售后服务时限5:退回商品后才能退款6:过期未操作,7:其他)
actCauses(actCause) {
if (actCause == 1) {
return "买家要求退款金额过高"
} else if (actCause == 2) {
return "买家举证无效,商品没问题"
} else if (actCause == 3) {
return "买家未举证,商品没问题"
} else if (actCause == 4) {
return "商品已超售后服务时限"
} else if (actCause == 5) {
return "退回商品后才能退款"
} else if (actCause == 6) {
return "过期未操作"
} else if (actCause == 7) {
return "其他"
} else {
return "未知"
}
},
//行为1:同意:2拒绝3:客服介入4:撤销 5:发送收货地址 6:同意收货 7:买家上传物流信息
act(act) {
if (act == 1) {
return "同意"
} else if (act == 2) {
return "拒绝"
} else if (act == 3) {
return "客服介入"
} else if (act == 4) {
return "撤销"
} else if (act == 5) {
return "发送收货地址"
} else if (act == 6) {
return "同意收货"
} else if (act == 7) {
return "买家上传物流信息"
} else {
return "未知"
}
},
//角色 1:2:3:客服 4:系统
role(id) {
if (id == 1) {
return "商家操作"
} else if (id == 2) {
return "用户操作"
} else if (id == 3) {
return "客服操作"
} else if (id == 4) {
return "系统操作"
} else {
return "未知"
}
},
// //获取地址后缀id
// getIndex(index) {
// index = index.slice(14);
// return index
// },
//商品状态 0:,1:,2:,3
goodsStatus(status) {
if (status == 0) {
return "待付款"
} else if (status == 1) {
return "待发货"
} else if (status == 2) {
return "待收货"
} else if (status == 3) {
return "已完成"
} else if (status == 4){
return "已结算"
}else if (status == -1){
return "订单取消"
}
},
userNeed(ids) { //1::2:3:
if (ids == 1) {
return "仅退款"
} else if (ids == 2) {
return "退款退货"
} else if (ids == 3) {
return "换货"
} else {
return "未知"
}
},
userMsg(typs) {
if (typs == 1) {
return "协商一致退款"
} else if (typs == 2) {
return "质量问题"
} else if (typs == 3) {
return "物流问题"
} else if (typs == 4) {
return "假冒品牌"
} else if (typs == 5) {
return "少件/漏发/破损/污渍"
} else if (typs == 6) {
return "7天无理由"
} else if (typs == 7) {
return "拍错/多拍/不想要"
} else {
return "其他"
}
},
/** 查询售后申请信息列表 */
getList() {
listRetreat(this.queryParams).then(res => {
if(res.data) {
this.retreatList = res.data.data;
this.total = res.data.count;
}
});
},
// 取消按钮
cancel() {
this.open = false;
this.reset();
},
// 表单重置
reset() {
this.form = {
"order": [],
"retreat": []
};
this.resetForm("form");
},
/** 搜索按钮操作 */
handleQuery() {
if(this.queryParams.applyTime.length === 2) {
this.queryParams.beginTime = new Date(this.queryParams.applyTime[0]).getTime() / 1000;
this.queryParams.endTime = new Date(this.queryParams.applyTime[1]).getTime() / 1000;
}
this.queryParams.page = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm("queryForm");
this.queryParams.beginTime = '';
this.queryParams.endTime = '';
this.handleQuery();
},
//同意申请并发货
handleAddress() {
this.orderInfo = false
this.reject = false
this.reback = true
},
// 多选框选中数据
handleSelectionChange(selection) {
this.ids = selection.map(item => item.id)
this.single = selection.length !== 1
this.multiple = !selection.length
},
handleRejectCancel() {
this.orderInfo = true
this.reject = false
},
handleRejectPre() {
this.orderInfo = false
this.reject = true
},
handleRebackCancel() {
this.reject = false
this.reback = false
this.orderInfo = true
},
},
//methods结束
};
</script>
<style scoped lang="scss" type="text/stylus">
/deep/.queryFormInline {
.el-form-item {
margin-bottom: 5px ;
}
}
/deep/ .after-sales-details .el-dialog{
height:80%;
overflow: hidden;
}
/deep/ .el-dialog__body{
height:calc(100% - 50px);
overflow-y: scroll;
}
.cells{
line-height:32px;
}
</style>
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论