提交 67d5f266 authored 作者: PC-20210205TDZC\Administrator's avatar PC-20210205TDZC\Administrator

Merge branch 'dev_hxz' of http://120.27.146.32:8888/wangfulong/shop-new into dev_zwn

import request from '@/utils/request'
// 查询 订单 四种状态和总数量
export function getOrderTabData(query) {
return request({
url: '/system/order/statusCount',
method: 'get',
params: query
})
}
// 查询order列表
export function listOrder(query) {
return request({
url: '/system/order/getOrderList',
url: '/system/order/getOrderSellerList',
method: 'get',
params: query
})
......@@ -12,25 +21,25 @@ export function listOrder(query) {
// 查询order详细
export function orderInfo (query) {
return request({
url: '/system/order/getOrderInfo',
url: '/system/order/getOrderSellerListInfo',
method: 'get',
params: query
})
}
// order发货
export function sendOrder(data) {
/*export function sendOrder(data) {
return request({
url: '/system/order/sendOrde',
method: 'post',
data: data
})
}
}*/
//查看物流
export function expressInfoNew(params){
return request({
url: '/system/order/getExpressInfoNew',
url: '/system/order/getOrderInfoDeliver',
method: 'get',
params
})
......@@ -39,7 +48,7 @@ export function expressInfoNew(params){
// 修改订单收货信息
export function orderInfoEdit(data){
return request({
url: '/system/order/orderInfoEdit',
url: '/system/order/orderUpdateAddress',
method: 'post',
data: data
})
......@@ -48,7 +57,7 @@ export function orderInfoEdit(data){
//订单备注
export function remarkOrder(data){
return request({
url: '/system/order/remarkOrder',
url: '/system/order/orderListRemark',
method: 'post',
data: data
})
......@@ -90,14 +99,22 @@ export function delOrder(ids) {
})
}
// 订单导出
// 订单导出-按搜索条件,全部导出
export function exportOrder(query) {
return request({
url: '/system/order/batchDeliveryGoodsOut',
url: '/system/order/unSendOrderGoodsExport',
method: 'get',
params: query
})
}
// old
// export function exportOrder(query) {
// return request({
// url: '/system/order/getOrderListExport',
// method: 'get',
// params: query
// })
// }
// 批量发货
export function deliveryOrder(data) {
......@@ -107,3 +124,32 @@ export function deliveryOrder(data) {
data: data
})
}
// 订单 右上角的 批量发货接口 /system/order/batchDeliveryGoodsOut 老接口
// 批量 去发货
export function deliveryOrderOne(data) {
return request({
url: '/system/order/orderListSend',
method: 'post',
data: data
})
}
// 批量 补单发货
export function deliveryOrderTwo(data) {
return request({
url: '/system/order/orderListAllSend',
method: 'post',
data: data
})
}
//
// // 单商品订单 补单发货
// export function toReissueOrderData(data) {
// return request({
// url: '/system/order/orderListAgainSend',
// method: 'post',
// data: data
// })
// }
......@@ -20,21 +20,6 @@ export function refundReject(data) {
}
// 查询retreat列表
export function listRetreat(query) {
return request({
......@@ -88,3 +73,47 @@ export function getSearchParams(query) {
// })
// }
// 列表
export function getRetreatList(query) {
return request({
url: '/system/retreat/list',
method: 'get',
params: query
})
}
// 详情
export function getASOrderDetail(query) {
return request({
url: '/system/retreat/edit',
method: 'get',
params: query
})
}
// 售后 同意类操作
export function agreeRefundData(data) {
return request({
url: '/system/retreat/refundAgree',
method: 'post',
data: data
})
}
// 售后 拒绝类 操作
export function refuseRefundData(data) {
return request({
url: '/system/retreat/refundReject',
method: 'post',
data: data
})
}
// 退货退款 地址
export function getASAdressData(query) {
return request({
url: '/local/AfterSalesAddress/list',
method: 'get',
params: query
})
}
......@@ -216,12 +216,12 @@ export const constantRoutes = [
name: 'modelFields',
meta: { title: '商品导入' }
},
{
path: 'management',
component: (resolve) => require(['@/views/system/goodsimport/goodsgement.vue'], resolve),
name: 'goodsgement',
meta: { title: '商品管理' }
}
// {
// path: 'management',
// component: (resolve) => require(['@/views/system/goodsimport/goodsgement.vue'], resolve),
// name: 'goodsgement',
// meta: { title: '商品管理' }
// }
]
}
/* 正式上线需要 注释 */
......
......@@ -17,23 +17,23 @@
<div>
<el-row class="row-title">
<el-col :span="3" class="text-r">订单编号</el-col>
<el-col :span="6" class="text-l">{{orderDetail ? orderDetail.parent_order_sn : ''}}</el-col>
<el-col :span="6" class="text-l">{{orderDetail ? orderDetail.parent_order_sn : ''}}</el-col>
</el-row>
<el-row class="row-title">
<el-col :span="3" class="text-r">下单时间</el-col>
<el-col :span="6" class="text-l">{{orderDetail ? formatter(orderDetail.addtime) : ''}}</el-col>
<el-col :span="6" class="text-l">{{orderDetail ? formatter(orderDetail.created_time) : ''}}</el-col>
</el-row>
<el-row class="row-title">
<el-col :span="3" class="text-r">商品数量</el-col>
<el-col :span="6" class="text-l">{{goodsNum}}</el-col>
<el-col :span="6" class="text-l">{{orderDetail ? orderDetail.goods_total : ''}}</el-col>
</el-row>
<el-row class="row-title">
<el-col :span="3" class="text-r">商品总价</el-col>
<el-col :span="6" class="text-l">{{goodsPrice}}</el-col>
<el-col :span="6" class="text-l">{{orderDetail ? orderDetail.goods_price / 100 : ''}}</el-col>
</el-row>
<el-row class="row-title">
<el-col :span="3" class="text-r">运费</el-col>
<el-col :span="6" class="text-l">{{goodsFreight}}</el-col>
<el-col :span="6" class="text-l">{{orderDetail ? orderDetail.dispatch_price / 100 : ''}}</el-col>
</el-row>
</div>
</div>
......@@ -43,18 +43,18 @@
<img class="icon" src="@/assets/image/order/icon2.png" alt="">
<span>买家信息</span>
</div>
<el-button size="mini" type="primary" @click="modifyinfo" :disabled="orderDetail && orderDetail.status > 2">修改收货信息</el-button>
<el-button size="mini" type="primary" @click="modifyinfo" :disabled="orderDetail && orderDetail.status > 1">修改买家信息</el-button>
</div>
<div>
<el-row class="row-title">
<el-col :span="3" class="text-r">收货人姓名</el-col>
<el-col :span="6" class="text-l">{{orderDetail ? orderDetail.shipping_name : ''}}</el-col>
<el-col :span="6" class="text-l">{{ orderDetail ? orderDetail.real_name : ''}}</el-col>
<el-col :span="3" class="text-r">联系电话</el-col>
<el-col :span="6" class="text-l">{{orderDetail ? orderDetail.phone : ''}}</el-col>
<el-col :span="6" class="text-l">{{ orderDetail ? orderDetail.mobile : ''}}</el-col>
</el-row>
<el-row class="row-title">
<el-col :span="3" class="text-r">收货地址</el-col>
<el-col :span="6" class="text-l">{{orderDetail ? orderDetail.province + orderDetail.city + orderDetail.county + orderDetail.town + orderDetail.address : ''}}</el-col>
<el-col :span="6" class="text-l">{{orderDetail ? orderDetail.provice + orderDetail.city + orderDetail.district + orderDetail.street + orderDetail.address : ''}}</el-col>
<el-col :span="3" class="text-r"></el-col>
<el-col :span="6" class="text-l"></el-col>
</el-row>
......@@ -67,52 +67,52 @@
<span>商品信息</span>
</div>
<div>
<el-button size="mini" type="primary" @click="goShipping(1)" :disabled="orderDetail && orderDetail.status > 1">去发货</el-button>
<el-button size="mini" @click="goShipping(2)" :disabled="orderDetail && orderDetail.status != 2">补单发货</el-button>
<el-button size="mini" type="primary" @click="goShipping(1)">去发货</el-button>
<el-button size="mini" type="primary" @click="goShipping(2)" >补单发货</el-button>
</div>
</div>
<el-table :data="orderDetail ? orderDetail.item : []" style="border: 1px solid #eee;" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" />
<el-table-column label="订单号" prop="order_sn" />
<el-table-column label="商品名称">
<el-table :data="orderGoodsDetail" style="border: 1px solid #eee;" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center"></el-table-column>
<el-table-column label="订单号" prop="goods_order_sn" align="center"></el-table-column>
<el-table-column label="商品名称" prop="title" align="center"></el-table-column>
<el-table-column label="下单时间" prop="created_time" align="center">
<template slot-scope="scope">
{{scope.row.goods_list[0].title}}
{{ scope.row.created_time ? formatter(scope.row.created_time) : '' }}
</template>
</el-table-column>
<el-table-column label="商品规格">
<el-table-column label="规格/数量/单价" align="center">
<template slot-scope="scope">
{{scope.row.goods_list[0].goods_option_title}}
{{ scope.row.goods_option_title }}<br/>
{{scope.row.total}}<br/>
{{scope.row.goods_price / 100}}
</template>
</el-table-column>
<el-table-column label="单价">
<el-table-column label="商品订单状态" align="center">
<template slot-scope="scope">
{{scope.row.goods_list[0].price}}
{{ goodsStatusFormatter(scope.row.goods_status) }}
</template>
</el-table-column>
<el-table-column label="数量">
<el-table-column label="快递公司" prop="express_company_name" align="center">
<template slot-scope="scope">
{{scope.row.goods_list[0].num}}
{{ scope.row.express_company_name ? scope.row.express_company_name : '—' }}
</template>
</el-table-column>
<el-table-column label="商品状态">
<el-table-column label="快递单号" prop="express_sn" align="center">
<template slot-scope="scope">
{{scope.row.goods_list[0].goods_status == 0 ? '未发货' : '已发货'}}
{{ scope.row.express_sn ? scope.row.express_sn : '—' }}
</template>
</el-table-column>
<el-table-column label="快递公司">
<el-table-column label="发货时间" prop="send_time" align="center">
<template slot-scope="scope">
{{scope.row.goods_list[0].deliver_Name}}
{{ scope.row.send_time ? scope.row.send_time : '—' }}
</template>
</el-table-column>
<el-table-column label="快递单号" prop="Tel">
<el-table-column label="操作" class-name="small-padding fixed-width" align="center">
<template slot-scope="scope">
{{scope.row.goods_list[0].deliver_no}}
</template>
</el-table-column>
<el-table-column label="操作" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button size="mini" type="text" @click="goShipping(3, scope.row.goods_list[0].goods_id)" :disabled="scope.row.goods_list[0].goods_status > 0">{{getStatus(scope.row.goods_list[0].goods_status, scope.row.goods_list[0].is_reissue)}}</el-button>
<el-button v-if="scope.row.goods_list[0].goods_status > 0" size="mini" type="text" @click="getExpressInfoNew(scope.row.order_sn, scope.row.goods_list[0].goods_id, scope.row.goods_list[0].sku_id)">查看物流</el-button>
<span style="font-size:12px;padding: 0 15px 0 0;" v-if="deliveryTypeText(scope.row.goods_status,scope.row.is_reissue) == '已补单'">已补单</span>
<el-button size="mini" type="text" v-if="deliveryTypeText(scope.row.goods_status,scope.row.is_reissue) == '去补单'" @click="goShipping(4,scope.row.id)">去补单</el-button>
<el-button size="mini" type="text" v-if="deliveryTypeText(scope.row.goods_status,scope.row.is_reissue) == '去发货'" @click="goShipping(3,scope.row.id)">去发货</el-button>
<el-button size="mini" type="text" @click="getExpressInfoNew(scope.row)">查看物流</el-button>
</template>
</el-table-column>
</el-table>
......@@ -136,30 +136,54 @@
</div>
<el-button size="mini" type="primary" @click="addRemark">添加备注</el-button>
</div>
<div style="width: 75%; min-height: 100px; border: 1px solid #eee; padding: 10px;">{{orderDetail ? orderDetail.remark : ''}}</div>
<div style="width: 75%; min-height: 100px; border: 1px solid #eee; padding: 10px;">
<!-- <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>
</el-card>
<!-- 修改买家信息 -->
<el-dialog
title="修改买家信息"
:visible.sync="modifyinfoDialog"
width="25%"
width="30%"
:modal-append-to-body="false"
:close-on-click-modal="false"
:append-to-body="true"
center
>
<div style="margin: 0 10%">
<div style="margin: 0 20px;">
<el-form ref="addressForm" :model="addressForm" label-width="100px">
<el-form-item label="收货人姓名:">
<el-input size="mini" v-model="addressForm.name" placeholder="请输入收货人姓名"></el-input>
<el-input size="mini" v-model="addressForm.shipping_name" placeholder="请输入收货人姓名"></el-input>
</el-form-item>
<el-form-item label="联系电话:">
<el-input size="mini" v-model="addressForm.mobile" placeholder="请输入联系电话"></el-input>
<el-input size="mini" v-model="addressForm.tel" placeholder="请输入联系电话"></el-input>
</el-form-item>
<el-form-item label="收货地址:">
<el-cascader v-model="addressForm.areaList" :props='props' placeholder="请选择具体的省市区" style="width:100%"></el-cascader>
<el-input size="mini" v-model="addressForm.street_name" placeholder="请输入街道"></el-input>
<el-input size="mini" v-model="addressForm.address" placeholder="请输入收货地址"></el-input>
<el-cascader v-model="addressForm.areaList" :props='props' ref="ssqCascader" placeholder="请选择具体的省市区" style="width:100%"></el-cascader>
</el-form-item>
<el-form-item label="街道:">
<el-input size="mini" v-model="addressForm.street" placeholder="请输入街道"></el-input>
</el-form-item>
<el-form-item label="详细地址:">
<el-input size="mini" v-model="addressForm.address" placeholder="请输入详细地址"></el-input>
</el-form-item>
</el-form>
</div>
......@@ -168,6 +192,7 @@
<el-button size="mini" type="primary" @click="handleModifyInfo">确 定</el-button>
</span>
</el-dialog>
<!-- 发货 -->
<el-dialog
:title="titleInfo"
:visible.sync="goShippingDialog"
......@@ -245,14 +270,19 @@
</template>
<script>
import {orderInfo, sendOrder, expressInfoNew, remarkOrder, orderInfoEdit} from '@/api/module/order'
import {orderInfo, sendOrder, expressInfoNew, remarkOrder, orderInfoEdit,deliveryOrderOne, deliveryOrderTwo, toReissueOrderData} from '@/api/module/order'
import {dateFormat} from '@/utils'
import {getAreaList} from '@/api/module/retreat/address'
export default {
props: {
// 订单信息
orderDetail: {
type: Object
},
// 商品订单 信息
orderGoodsDetail: {
type: Array,
},
expressLists: {
type: Array
}
......@@ -268,10 +298,10 @@ export default {
dialogCheck: false,
titleInfo: '',
addressForm: {
name: '',
mobile: '',
shipping_name: '',
tel: '',
address: '',
street_name: '',
street: '',
areaList: [] // 省市区
},
activities: [],
......@@ -284,113 +314,290 @@ export default {
label: 'name',
leaf: 'leaf'
},
goShippingNum: 0,
goods_ids: null
goShippingNum: 0, // 发货类型
goods_ids: null, // 发货的商品订单 id
}
},
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
})
watch: {},
created() {},
mounted() {},
methods: {
/** 商品 发货状态 */
goodsStatusFormatter(status) {
let res = '—';
if (status == 0) {
res = '未发货'
}else if (status == 1) {
res = '已发货'
}else if (status == 2) {
res = '已收货'
}else if (status == 3) {
res = '配货中'
}else if (status == 4) {
res = '拒收'
}
return price
return res
},
goodsNum() {
let goodsNum = 0
if (this.orderDetail) {
this.orderDetail.item.map(item => {
goodsNum += item.goods_list[0].num
})
}
return goodsNum
}
},
methods: {
getStatus(status, is_reissue) {
return status == 0 ? '去发货' : status == 1 && is_reissue == 1 ? '已补单' : status == 1 && is_reissue == 0 ? '已发货' : '已完成'
/**
* 商品订单 操作类型
* gs:goods_status ir:is_reissue
* 返回值有三种情况:去发货,补单,已补单(不可点击)
* */
deliveryTypeText(gs,ir) {
return gs == 0 ? '去发货' : ir == 0 ? '去补单' : '已补单'
},
/**
* 时间戳转换为日期格式
* 项目中,后台一般均返回10位数的时间戳,在公用的封装方法dateFormat中,第一个入参,需要*1000 ,具体参考 new Date(时间戳) 方法
* */
formatter(time) {
return dateFormat(time, 'Y-m-d H:i:s')
return dateFormat(time * 1000, 'Y-m-d H:i:s')
},
/**
* 发货
* val 发货类型:1-商品的批量发货;2-批量补单发货;3-单商品发货;4-单格个商品订单 补单发货
* */
// 发货,补单,补单发货
goShipping(val, id) {
//console.log(361,this.multipleSelection);
this.goShippingNum = val
this.goods_ids = id
this.goods_ids = []
this.expressNum = ''
this.express_sn = ''
let isContinue = true;
// 批量发货
if(this.goShippingNum === 1) {
if (this.multipleSelection.length === 0) {
this.$message({type: 'warning',message: '请先选择需要发货的商品'});
return
}
for(let i = 0; i < this.multipleSelection.length; i++) {
// 批量发货 goods_status 0:未发货,1:已发货,2:已收货,3:配货中,4:拒收
if (this.multipleSelection[i].goods_status > 0) {
this.$message({type: 'warning',message: '所选商品中部分已发货,请重新选择'});
isContinue = false
break;
}else {
let idNum = Number(this.multipleSelection[i].id);
this.goods_ids.push(idNum);
}
}
if(!isContinue) {
// 批量发货时候,goods_ids 为数组 [3,4,5]
this.goods_ids = []
return;
}
this.titleInfo = '去发货'
this.goShippingDialog = true
}
// 批量补单
if(this.goShippingNum === 2) {
if (this.multipleSelection.length === 0) {
this.$message({type: 'warning',message: '请先选择需要补单发货的商品'});
return
}
for(let i = 0; i < this.multipleSelection.length; i++) {
// 批量补单 is_reissue 1-已补发;2-未补发
// 首先,先发货了,才能补单
if( this.multipleSelection[i].goods_status > 0 ) {
if (this.multipleSelection[i].is_reissue) {
this.$message({type: 'warning',message: '所选商品中部分已补单,请重新选择'});
isContinue = false;
break;
}else {
let idObj = {id: Number(this.multipleSelection[i].id)};
this.goods_ids.push(idObj);
}
}else {
isContinue = false;
this.$message({type:'warning',message:'所选商品中部分未发货,不能进行补单操作,请重新选择'});
break
}
}
if(!isContinue) {
this.goods_ids = []
return;
}
this.titleInfo = '补单发货'
this.goShippingDialog = true
}
// 单商品订单 发货
if(this.goShippingNum === 3) {
this.goods_ids = id;
this.titleInfo = '去发货'
this.goShippingDialog = true
}
if (this.multipleSelection.length == 0 && val != 3) {
// 单格个商品订单 补单发货
if (this.goShippingNum === 4) {
this.goods_ids = id;
this.titleInfo = '去补单'
this.goShippingDialog = true
}
//console.log(5555555,this.goods_ids);
},
/** ReissueOrder*/
/** 批量发货,批量补单发货,单个发货,单个补单发货 */
handleGoShipping() {
if (!this.expressNum) {
this.$message({
type: 'warning',
message: '请选择快递公司'
})
return
}
if (!this.express_sn) {
this.$message({
type: 'warning',
message: '请选择需要发货的商品'
message: '请输入快递单号'
})
return
}
switch(val) {
case 1:
this.titleInfo = '去发货'
this.goShippingDialog = true
break
case 2:
this.titleInfo = '补单发货'
this.goShippingDialog = true
break
case 3:
this.titleInfo = '去发货'
this.goShippingDialog = true
break
default:
break
// 物流公司,名称
let expressName = ''
this.expressLists.map((item) => {
if (item.value == this.expressNum) {
expressName = item.label
}
})
// 批量 去发货
if( this.goShippingNum === 1) {
let paramsObj = {
order_goods_ids: this.goods_ids,
express_company_name: expressName, // 快递公司 名称
express_sn: this.express_sn, // 快递单号
//express_code: ''
}
//console.log(11111,paramsObj);
deliveryOrderOne(paramsObj).then(res=> {
if(res.code == 1) {
this.$message({type:'success',message:'发货成功'});
this.goShippingDialog = false
this.handleInfo()
}else {
this.$message({type:'error',message: res.message ? res.message : '发货失败'});
}
});
}
// 批量 补单发货
if (this.goShippingNum === 2 ) {
let listObj = { list: [] }
this.goods_ids.forEach((item,index)=> {
item['express_name'] = expressName;
item['express_sn'] = this.express_sn
})
listObj.list = this.goods_ids;
//console.log("批量补单发货",listObj);
deliveryOrderTwo(listObj).then(res=> {
if(res.code == 1) {
this.$message({type:'success',message:'补单发货成功'});
this.goShippingDialog = false
this.handleInfo()
}else {
this.$message({type:'error',message: res.message ? res.message : '补单发货失败'});
}
});
}
// 单商品订单 发货
if(this.goShippingNum === 3) {
let paramsObj = {
order_goods_ids: [],//this.goods_ids,
express_company_name: expressName, // 快递公司 名称
express_sn: this.express_sn, // 快递单号
//express_code: ''
}
paramsObj.order_goods_ids.push(this.goods_ids);
//console.log(11111,paramsObj);
deliveryOrderOne(paramsObj).then(res=> {
if(res.code == 1) {
this.$message({type:'success',message:'发货成功'});
this.goShippingDialog = false
this.handleInfo()
}else {
this.$message({type:'error',message: res.message ? res.message : '发货失败'});
}
});
}
// 单个商品订单 补单发货
if(this.goShippingNum === 4) {
let singleOrderObj = { list: []};
let orderObj = {
id: 0,
express_name: '',
express_sn: ''
}
orderObj.id = this.goods_ids;
orderObj.express_name = expressName;
orderObj.express_sn = this.express_sn;
singleOrderObj.list.push(orderObj);
deliveryOrderTwo(singleOrderObj).then(res=> {
if(res.code == 1) {
this.$message({type:'success',message:'补单发货成功'});
this.goShippingDialog = false
this.handleInfo()
}else {
this.$message({type:'error',message: res.message ? res.message : '补单发货失败'});
}
});
}
// sendOrder(params).then(res => {})
},
// 订单详情
handleInfo() {
this.detailDialog = true
// let order_sn = '20200318e095e2d09354'
let order_sn = this.orderDetail.parent_order_sn
orderInfo({order_sn: order_sn}).then(res => {
if (res.code == 1) {
this.orderDetail = res.data
}
})
let id = this.orderDetail.id
this.$emit('updateOrder',id);
},
// 选中的表格
handleSelectionChange(val) {
this.multipleSelection = val;
},
/** 修改 买家信息 */
modifyinfo() {
this.addressForm = {
name: '',
mobile: '',
shipping_name: '',
tel: '',
address: '',
street_name: ''
street: ''
}
this.modifyinfoDialog = true
},
// 修改买家信息
/** 保存 买家信息 */
handleModifyInfo() {
if (!this.addressForm.name) {
// console.log(555,this.addressForm.areaList);
// let ssqLabelList = this.$refs['ssqCascader'].getCheckedNodes()[0].pathLabels;
// console.log(444,ssqLabelList)
if (!this.addressForm.shipping_name) {
this.$message({
type: 'warning',
message: '请输入收货人姓名'
})
return
}
if (!this.addressForm.mobile) {
if (!this.addressForm.tel) {
this.$message({
type: 'warning',
message: '请输入联系电话'
......@@ -399,7 +606,7 @@ export default {
}
// 手机号码格式校验
const reg = /^1[3456789]\d{9}$/;
if (!reg.test(this.addressForm.mobile)) {
if (!reg.test(this.addressForm.tel)) {
this.$message({
type: 'warning',
message: '手机号码格式有误'
......@@ -413,7 +620,7 @@ export default {
})
return
}
if (!this.addressForm.street_name) {
if (!this.addressForm.street) {
this.$message({
type: 'warning',
message: '请输入街道'
......@@ -428,16 +635,23 @@ export default {
return
}
// 省市区 转化
let ssqLabelList = [];
if(this.addressForm.areaList && this.addressForm.areaList.length > 1) {
ssqLabelList = this.$refs['ssqCascader'].getCheckedNodes()[0].pathLabels;
}
let params = {
id: this.orderDetail.parent_order_sn,
shipping_name: this.addressForm.name,
mobile: this.addressForm.mobile,
street_name: this.addressForm.street_name,
order_sn : this.orderDetail.order_sn,
shipping_name: this.addressForm.shipping_name,
province_name: ssqLabelList[0] ? ssqLabelList[0] : '',
city_name: ssqLabelList[1] ? ssqLabelList[1] : '',
district_name: ssqLabelList[2] ? ssqLabelList[2] : '',
street_name: this.addressForm.street,
address: this.addressForm.address,
province_name: this.addressForm.areaList[0],
city_name: this.addressForm.areaList[1],
district_name: this.addressForm.areaList[2]
tel: this.addressForm.tel,
}
orderInfoEdit(params).then(res => {
if (res.code == 1) {
this.$message({
......@@ -449,76 +663,31 @@ export default {
}
})
},
// 去发货
handleGoShipping() {
if (!this.expressNum) {
this.$message({
type: 'warning',
message: '请选择快递公司'
})
return
}
if (!this.express_sn) {
this.$message({
type: 'warning',
message: '请输入快递单号'
})
/** 查看 商品订单 物流信息 */
getExpressInfoNew(row) {
// 如果 商品订单没有发货,则不用请求了
if(row.goods_status == 0) {
this.$message({type:'warning',message:'您还未发货,暂无物流信息'});
return
}
let expressName = ''
this.expressLists.map((item, index) => {
if (item.value == this.expressNum) {
expressName = item.label
}
})
let goods_ids = []
if (this.goShippingNum != 3) {
this.multipleSelection.map(item => {
goods_ids.push(item.goods_list[0].goods_id)
})
} else {
goods_ids = [this.goods_ids]
}
let params = {
order_goods_ids: goods_ids,
express_company_name: expressName,
express_sn: this.express_sn,
express_code: this.expressNum
}
sendOrder(params).then(res => {
if (res.code == 1) {
this.$message({
type: 'success',
message: '商品已发货'
})
this.goShippingDialog = false
this.handleInfo()
}
})
},
// 查看物流
getExpressInfoNew(sn, goodsId, skuId) {
this.dialogCheck = true
let params = {
order_sn: sn,
goods_id: goodsId,
sku_id: skuId
goods_order_sn: row.goods_order_sn,
sku_id: row.goods_option_id
}
expressInfoNew(params).then(res => {
if (res.code == 1) {
this.activities = res.data.orderTrack
if (res.code == 1 && res.data) {
this.activities = res.data.order_track ? res.data.order_track : [];
}
})
},
/** 添加备注 */
addRemark() {
this.remark = ''
this.addRemarkDialog = true
},
// 订单备注
/** 订单备注 */
getRemarkOrder() {
if (!this.remark) {
this.$message({
......@@ -529,7 +698,7 @@ export default {
}
let params = {
order_id: this.orderDetail.item[0].order_sn,
order_sn: this.orderDetail.order_sn,
remark: this.remark
}
remarkOrder(params).then(res => {
......@@ -623,7 +792,7 @@ export default {
/deep/.el-input--medium .el-input__inner {
height: 28px;
}
.orderDetail {
height: 660px;
overflow-y: auto;
......@@ -662,4 +831,23 @@ export default {
height: 600px;
overflow-y: auto;
}
</style>
\ No newline at end of file
/* 留言框样式 */
.remark-con {
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>
<template>
<div class="app-container">
<el-card class="box-card">
<div style="position: relative;">
<el-card class="box-card box-cardone">
<div style="position: relative;" class="clearfixall">
<el-tabs v-model="activeName" @tab-click="handleClick">
<el-tab-pane name="first">
<div slot="label">待发货{{activeName == 'first' ? '(' + total1 + ')' : ''}}</div>
<!--<div slot="label">待发货{{activeName == 'first' ? '(' + total1 + ')' : '(0)'}}</div>-->
<div slot="label">待发货{{'(' + total1 + ')' }}</div>
</el-tab-pane>
<el-tab-pane name="second">
<div slot="label">已发货{{activeName == 'second' ? '(' + total2 + ')' : ''}}</div>
<div slot="label">已发货{{'(' + total2 + ')' }}</div>
</el-tab-pane>
<el-tab-pane label="已完成" name="third"></el-tab-pane>
<el-tab-pane label="全部订单" name="fourth"></el-tab-pane>
</el-tabs>
<div style="position: absolute; top: -5px; right: 0;">
<div v-show="this.activeName == 'first' " style="position: absolute; top: -5px; right: 0;">
<el-button size="mini" type="primary" icon="el-icon-download" @click="handleExport">导出订单</el-button>
<el-button size="mini" icon="el-icon-position" @click="isDeliveryOpen = true">批量发货</el-button>
</div>
</div>
<div class="scollbox">
<div class="form-box">
<el-form ref="form" :model="form" label-width="85px">
<el-form class="form-params" ref="form" :model="form" label-width="85px">
<el-row type="flex" class="row-bg" justify="space-around">
<el-col :span="6">
<el-form-item label="订单号:">
<el-input size="mini" v-model="form.order_sn" placeholder="请输入订单号" />
<el-input size="mini" v-model="form.order_sn" placeholder="请输入订单号"/>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="商品名称:">
<el-input size="mini" v-model="form.GoodsName" placeholder="请输入商品名称" />
<el-input size="mini" v-model="form.GoodsName" placeholder="请输入商品名称"/>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="收货人:">
<el-input size="mini" v-model="form.shipname" placeholder="请输入收货人" />
<el-input size="mini" v-model="form.shipname" placeholder="请输入收货人"/>
</el-form-item>
</el-col>
</el-row>
<el-row type="flex" class="row-bg" justify="space-around">
<el-col :span="6">
<el-form-item label="联系电话:">
<el-input size="mini" v-model="form.Tel" placeholder="请输入联系电话" />
<el-input size="mini" v-model="form.Tel" placeholder="请输入联系电话"/>
</el-form-item>
</el-col>
<el-col :span="6">
......@@ -51,7 +51,7 @@
v-model="form.dateTime"
type="daterange"
align="left"
unlink-panels
unaLink-panels
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
......@@ -59,42 +59,77 @@
</el-form-item>
</el-col>
<el-col :span="6">
<el-button size="mini" type="primary" icon="el-icon-search" style="margin-left: 20px;" @click="getListOrder">搜索</el-button>
<el-button size="mini" type="primary" icon="el-icon-search" style="margin-left: 20px;"
@click="getListOrder">搜索
</el-button>
<el-button size="mini" icon="el-icon-refresh" @click="resetBtn(true)">重置</el-button>
</el-col>
</el-row>
</el-form>
</div>
<el-table :data="tableData" max-height="1080">
<el-table-column type="selection" width="55" />
<el-table-column label="订单号" align="center" prop="order_sn" width="255"/>
<el-table-column label="下单时间" align="center" prop="Updatetime" width="155">
<template slot-scope="scope">
{{formatter(scope.row.Updatetime)}}
</template>
</el-table-column>
<el-table-column label="数量" align="center" prop="goods_total"/>
<el-table-column label="订单金额" align="center" prop="goods_price">
<template slot-scope="scope">
{{scope.row.goods_price/100}}
</template>
</el-table-column>
<el-table-column label="收货人" align="center" prop="real_name"/>
<el-table-column label="联系电话" align="center" prop="mobile"/>
<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>
<!-- 表头 -->
<div class="table-header-spe">
<el-table class="title_table hxz-el-table" align="center">
<el-table-column align="center" width="55">
<template slot="header" slot-scope="scope">
<el-checkbox v-model="allTablesChecked" ></el-checkbox>
</template>
</el-table-column>
<el-table-column label="订单号" align="center" width="180" ></el-table-column>
<el-table-column label="商品名称" align="center" ></el-table-column>
<el-table-column label="规格/数量/金额" align="center" width="180" ></el-table-column>
<el-table-column label="下单时间" align="center" width="180" ></el-table-column>
<el-table-column label="收货人" align="center" width="180" ></el-table-column>
<el-table-column label="联系电话" align="center" width="180"></el-table-column>
<el-table-column label="操作" align="center" width="140" ></el-table-column>
</el-table>
<div class="hxz-el-table-check"></div>
</div>
<div class="table-all-con box-card">
<el-card v-for="(item, index) in tableDataList" :key="index" class="card1 text item">
<div slot="header" class="el-card-header-spe">
<div><span>订单状态:</span><span>{{ orderStatusFormatter(item.order.status) }}</span></div>
</div>
<div class="item-table">
<el-table
border
:show-header="false"
:span-method="arraySpanMethod"
:data="item.order_goods">
<el-table-column type="selection" width="55" align="center"></el-table-column>
<el-table-column prop="goods_order_sn" label="订单号" width="180" align="center"></el-table-column>
<el-table-column prop="goods_option_title" label="商品名称" align="center">
<template slot-scope="scope">
<img style="width:60px;height:60px;" :src="scope.row.thumb"/>
<div>{{ scope.row.goods_option_title }}</div>
</template>
</el-table-column>
<el-table-column label="规格/数量/金额" width="180" align="center">
<template slot-scope="scope">
{{ scope.row.goods_option_title }}<br/>
{{ scope.row.total }}<br/>
{{ scope.row.goods_price / 100 }}<br/>
</template>
</el-table-column>
<el-table-column prop="created_time" label="下单时间" width="180" align="center">
<template slot-scope="scope">
{{ formatter(scope.row.created_time) }}
</template>
</el-table-column>
<el-table-column prop="phone" width="180" label="收货人" align="center"></el-table-column>
<el-table-column prop="real_name" label="联系电话" width="180" align="center"></el-table-column>
<el-table-column label="操作" width="140" align="center">
<template slot-scope="scope">
<el-button type="text" @click="handleInfo(scope.row)">详情</el-button>
</template>
</el-table-column>
</el-table>
</div>
</el-card>
</div>
<!-- 分页 -->
<div class="footer_pagination">
<el-pagination
background
......@@ -108,9 +143,10 @@
</el-pagination>
</div>
</el-card>
<el-dialog title="订单详情" width="85%" :close-on-click-modal="false" :destroy-on-close="true" :visible.sync="detailDialog" center :before-close="handleClose">
<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" :express-lists="expressLists"/>
<order-detail :order-detail="order_detail" :order-goods-detail="order_goods_detail" :express-lists="expressLists" @updateOrder="updateOrder"/>
</div>
</el-dialog>
<!-- 批量发货 -->
......@@ -137,12 +173,13 @@
action=""
class="upload-demo"
:auto-upload="false"
:limit = "1"
:limit="1"
accept="*/*"
:on-change="importExcel"
:on-remove="removeDevExcel"
ref="upload"
><el-button size="small" type="primary" >上传批量发货Excel表单</el-button>
>
<el-button size="small" type="primary">上传批量发货Excel表单</el-button>
</el-upload>
</div>
<div class="delivery-tips-con">
......@@ -164,21 +201,24 @@
</template>
<script>
import {listOrder, exportOrder, orderInfo, deliveryOrder, expressList} from '@/api/module/order'
import {listOrder, exportOrder, orderInfo, deliveryOrder, expressList, getOrderTabData} from '@/api/module/order'
import {dateFormat} from '@/utils'
import OrderDetail from './components/orderDetail.vue'
import XLSX from "xlsx"
import {isArray} from "../../../utils/validate";
export default {
components: {
OrderDetail
},
data() {
return {
sellerId: 0,
currentPage: 1,
pageSize: 20,
total: 0,
total1:'',//待发货
total2:'',//已发货
total1: '',//待发货
total2: '',//已发货
activeName: 'first',
form: {
order_sn: '',
......@@ -188,21 +228,92 @@
dateTime: [],
},
goodsStatus: 1,
tableData: [],
tableDataList: [], // 后台返回所有数据
detailDialog: false,
isDeliveryOpen: false,
excelList: [],
order_detail: null,
expressLists: []
order_detail: {
remark: []
}, // 订单信息
order_goods_detail: [], // 订单商品信息
expressLists: [],
fullHeight:'',
tableHeight: null,
allTablesChecked: false,
// 订单导出 入参
exportParams: {
order_sn: '',
goods_name: '',
real_name: '',
tel: 0,
created_start_time: 0,
created_end_time: 0,
}
}
},
watch: {
// fullHeight(val, oldval) {
// const contheight = document.getElementsByClassName('box-cardone')[0].clientHeight
// this.tableHeight = contheight - val - 250;
// // const heights = contheight
// // document.getElementsByClassName('cardHeight')[0].style.height = heights + 'px'
// }
},
created() {
// this.$nextTick(() => {
// this.fullHeight = document.getElementsByClassName('clearfixall')[0].clientHeight
// })
},
mounted() {
/** 获取 seller_id*/
this.sellerId = this.$store.state.user.sellerid;
// 获取 订单 状态对应数量
//this.getOrderTab()
// 订单列表 搜索
this.getListOrder()
//
this.getExpressList()
},
methods: {
checkSelectable( row,index) {
},
// 表格合并 列单元格
arraySpanMethod({ row, column, rowIndex, columnIndex }) {
if (columnIndex > 5) { // 用于设置要合并开始的列号
if (rowIndex === 0) { // 用于设置合并开始的行号
return {
rowspan: 100,     // 合并的行数
colspan: 1 // 合并的列数,设为0则直接不显示
}
} else {
return {
rowspan: 0,
colspan: 0
}
}
}
},
formatter(time) {
return dateFormat(time, 'Y-m-d H:i:s')
return dateFormat(time *1000, 'Y-m-d H:i:s')
},
/** 订单状态 */
orderStatusFormatter(status) {
if(status === -1) {
return '订单取消'
}else 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 {
return '' // 保险,返回空
}
},
// 重置
resetBtn(iscall) {
......@@ -223,7 +334,7 @@
handleClick(tab, event) {
this.total = 0
switch(this.activeName) {
switch (this.activeName) {
case 'first':
this.goodsStatus = 1
break
......@@ -247,13 +358,29 @@
this.detailDialog = false
this.getListOrder()
},
/** 获取 订单 状态对应数量 */
getOrderTab() {
// getOrderTabData().then(res => {
// //console.log("获取订单状态和对应订单数量",res);
// if (res.code === 1 && res.data.length > 0) {
// // 1 表示 代发货;2 表示 已发货
// for (let i = 0; i < res.data.length; i++) {
// if (res.data[i].Status === 1) {
// this.total1 = res.data[i].Count > 999 ? '999+' : res.data[i].Count;
// } else if (res.data[i].Status === 2) {
// this.total2 = res.data[i].Count > 999 ? '999+' : res.data[i].Count;
// }
// }
// }
// });
},
// 获取订单列表
getListOrder() {
this.tableData = []
this.tableDataList = []
let params = {
page: this.currentPage,
limit: this.pageSize,
seller_id: this.sellerId,
status: this.goodsStatus,
start_time: new Date(this.form.dateTime[0]).getTime() / 1000 || '',
end_time: new Date(this.form.dateTime[1]).getTime() / 1000 || '',
......@@ -264,29 +391,59 @@
}
listOrder(params).then(res => {
if (res.code == 1) {
// 每次订单 查询成功,保存查询参数,供商品导出接口使用(入参)
this.exportParams.order_sn = params.order_sn;
this.exportParams.goods_name = params.goods_name;
this.exportParams.real_name = params.real_name;
this.exportParams.tel = params.tel;
this.exportParams.created_start_time = params.created_start_time;
this.exportParams.created_end_time = params.created_end_time;
this.total = res.data.count || 0
if( this.goodsStatus == 1){
this.total1 = res.data.count || 0
}
if( this.goodsStatus == 2){
this.total2 = res.data.count || 0
this.tableDataList = res.data.data
if(this.goodsStatus == 1) {
this.taotal1 = res.data.count;
}else if(this.goodsStatus == 2) {
this.taotal2 = res.data.count;
}
this.tableData = res.data.data
}
})
},
// 合并数据
// listSpanMethod() {
//
// },
// row 当前行 column 当前列 rowIndex 当前行号, columnIndex 当前列号
listSpanMethod({row, column, rowIndex, columnIndex}) {
if (columnIndex === 1) {
if (rowIndex % 2 === 0) {
return {
rowspan: 2,
colspan: 1
};
} else {
return {
rowspan: 0,
colspan: 0
};
}
}
},
// 订单导出
handleExport(row) {
let query = {page: 1, limit: 100}
exportOrder(query).then(res => {
if(res.code === 1) {
const link = document.createElement('a');
link.href = res.data;
//link.download = '订单.xls'; //下载的文件名
link.style.display = 'none';
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
handleExport() {
exportOrder(this.exportParams).then(res => {
if (res.code === 1) {
const aLink = document.createElement('a');
aLink.href = res.data.file_url;
//aLink.download = '订单.xls'; //下载的文件名
aLink.style.display = 'none';
document.body.appendChild(aLink);
aLink.click();
document.body.removeChild(aLink);
}else {
this.$message({type:'error',message: res.message ? res.message: '导出失败'});
}
});
},
......@@ -299,7 +456,7 @@
// xlsxJson就是解析出来的json数据,数据格式如下
// [{sheetName: sheet1, sheet: sheetData }]
if (item[0] && item[0].sheet && item[0].sheet.length) {
//_this.tableData = item[0].sheet //把数据塞到表格预览
//_this.tableDataList = item[0].sheet //把数据塞到表格预览
// this.excelList = item[0].sheet
item[0].sheet.map((item, index) => {
this.excelList.push({
......@@ -317,9 +474,9 @@
* @param {Object} file
*/
file2Xce(file) {
return new Promise(function(resolve, reject) {
return new Promise(function (resolve, reject) {
const reader = new FileReader();
reader.onload = function(e) {
reader.onload = function (e) {
const data = e.target.result;
this.wb = XLSX.read(data, {
type: "binary"
......@@ -341,37 +498,65 @@
},
// 提交导入数据
subDelivery() {
if(this.excelList.length === 0) {
this.$message({type:'warning',message:'请先上传填写好的表格数据'});
if (this.excelList.length === 0) {
this.$message({type: 'warning', message: '请先上传填写好的表格数据'});
return
}
if(this.excelList.length > 0 && this.excelList[0].id && this.excelList[0].express_name && this.excelList[0].express_sn) {
deliveryOrder(this.excelList).then(res=> {
if(res.code === 1) {
if (this.excelList.length > 0 && this.excelList[0].id && this.excelList[0].express_name && this.excelList[0].express_sn) {
deliveryOrder(this.excelList).then(res => {
if (res.code === 1) {
this.isDeliveryOpen = false;
this.$message({type:'success',message:'批量发货成功'});
this.$message({type: 'success', message: '批量发货成功'});
this.getList();
}else {
} else {
let msg = res.message || '批量发货失败'
this.$message({type:'error',message:msg});
this.$message({type: 'error', message: msg});
}
});
}else {
this.$message({type:'error',message:'导入表格数据有误'});
} else {
this.$message({type: 'error', message: '导入表格数据有误'});
}
},
// 订单详情
handleInfo(row) {
this.detailDialog = true
// let order_sn = '20200318e095e2d09354'
let order_sn = row.parent_order_sn
let order_id = row.order_id
orderInfo({order_id: order_id}).then(res => {
if (res.code == 1 && res.data) {
// 留言备注,需要单独处理
let remarkList = []
// res.data.order.remark 返回数据格式比较多,不判断了
try {
remarkList = JSON.parse(res.data.order.remark)
} catch (e) {
remarkList = []
console.log(99,e);
}
orderInfo({order_sn: order_sn}).then(res => {
if (res.code == 1) {
this.order_detail = res.data
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('备注留言返回原始数据',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 => {
......@@ -393,35 +578,77 @@
</script>
<style scoped>
/deep/.el-range-editor.el-input__inner {
width: 100%;
}
/deep/ .el-card__body{
height:calc(100% - 50px);
}
.scollbox{
height: calc(100% - 50px);
overflow-y: scroll;
}
.form-box {
background-color: #F7F8FA;
margin-bottom: 20px;
padding-top: 22px;
}
.footer_pagination {
text-align: right;
margin-top: 15px;
}
.delivery-tips-con,.delivery-data-con {
width: 80%;
margin: 5px auto;
font-weight: bold;
}
.delivery-data-con {
height: 100px;
margin: 20px auto;
}
.upload-demo {
text-align : center;
}
</style>
\ No newline at end of file
/deep/ .el-range-editor.el-input__inner {
width: 100%;
}
/deep/ .el-card__body {
height: calc(100% - 50px);
}
.scollbox {
height: calc(100% - 50px);
overflow-y: hidden;
}
.form-box {
background-color: #F7F8FA;
/*margin-bottom: 20px;*/
padding-top: 20px;
}
.form-params {
}
.footer_pagination {
text-align: center;
margin-top: 15px;
}
.delivery-tips-con, .delivery-data-con {
width: 80%;
margin: 5px auto;
font-weight: bold;
}
.delivery-data-con {
height: 100px;
margin: 20px auto;
}
.upload-demo {
text-align: center;
}
/* 订单卡片 样式 */
.card1 {
margin-bottom: 20px;
}
.table-header-spe {
background-color: #F7F8FA;
margin:10px 0 10px;
}
/deep/ .title_table{
width: calc(100% - 94px) !important;
margin: 0 40px;
}
/deep/ .title_table .el-table__body-wrapper{
display: none !important;
height:0 !important;
}
/deep/ .title_table tr th {
border-bottom: 0 !important;
}
/deep/ .title_table::before{
height:0;
}
.table-all-con {
height: calc(100% - 250px);
overflow-y: auto;
padding: 0 20px;
}
</style>
<template>
<div class="app-container after-sale-detail">
<el-card>
<!-- <p class="as-detail-title">售后详情</p>-->
<!-- 仅退款 -->
<div v-if="asOrderType == 1" class="as-step-info">
<el-steps :active="step" align-center>
<el-step title="买家提出售后申请"></el-step>
<el-step :title="onlyStep2"></el-step>
<el-step :title="onlyStep3"></el-step>
</el-steps>
</div>
<!-- 退货退款 -->
<div v-if="asOrderType == 2" class="as-step-info">
<el-steps :active="step" align-center>
<el-step title="买家提出售后申请"></el-step>
<el-step :title="refundStep2"></el-step>
<el-step :title="refundStep3"></el-step>
<el-step :title="refundStep4" v-if="has45 === 4"></el-step>
<el-step :title="refundStep5" v-if="has45 > 4"></el-step>
</el-steps>
</div>
</el-card>
<el-card class="as-order-details">
<!-- 倒计时 提示 -->
<p class="count-down-con" v-if="asOrderType == 1">剩余处理时间: 25小时46分 请在72小时内处理,逾期不处理,系统将自动退款到买家账户</p>
<p class="count-down-con" v-if="asOrderType == 2">222剩余处理时间: 25小时46分 请在72小时内处理,逾期不处理,系统将自动退款到买家账户222</p>
<!-- 售后信息 -->
<div>
<p>售后信息</p>
<div>
<el-row class="row-title">
<el-col :span="3" class="text-r">售后类型</el-col>
<el-col :span="9" class="text-l">{{ refundTypeFormatter(asOrderDetail.refund_type) }}</el-col>
</el-row>
<el-row class="row-title">
<el-col :span="3" class="text-r">申请金额</el-col>
<el-col :span="9" class="text-l">{{ asOrderDetail.apply_price }}</el-col>
</el-row>
<el-row class="row-title">
<el-col :span="3" class="text-r">申请原因</el-col>
<el-col :span="9" class="text-l">{{ reasonFormatter(asOrderDetail.reason) }}</el-col>
</el-row>
<el-row class="row-title">
<el-col :span="3" class="text-r">申请说明</el-col>
<el-col :span="9" class="text-l">{{ asOrderDetail.content }}</el-col>
</el-row>
<el-row class="row-title-pic">
<el-col :span="3" class="text-r">申请图片</el-col>
<el-col :span="9" class="text-l">
<!-- {{ asOrderDetail.images }}-->
<div v-if="asSrcList.length > 0">
<el-image
style="width: 70px; height: 70px;border:1px solid #eee;"
v-for="(itemSrc,index) in asSrcList"
:src="itemSrc"
:preview-src-list="asSrcList">
</el-image>
</div>
<p v-else style="color:#666">暂无图片</p>
</el-col>
</el-row>
</div>
</div>
<!-- 订单信息 -->
<div>
<p>订单信息</p>
<div>
<el-row class="row-title">
<el-col :span="3" class="text-r">订单状态</el-col>
<el-col :span="6" class="text-l">{{ GDSFormatter(goodsOrderDetail.goods_status) }}</el-col>
<el-col :span="3" class="text-r">商品名称</el-col>
<el-col :span="6" class="text-l">{{ goodsOrderDetail.title }}</el-col>
</el-row>
<el-row class="row-title">
<el-col :span="3" class="text-r">订单编号</el-col>
<el-col :span="6" class="text-l">{{ goodsOrderDetail.goods_order_sn }}</el-col>
<el-col :span="3" class="text-r">商品规格</el-col>
<el-col :span="6" class="text-l">{{ goodsOrderDetail.goods_option_title }}</el-col>
</el-row>
<el-row class="row-title">
<el-col :span="3" class="text-r">商品金额</el-col>
<el-col :span="6" class="text-l">{{ goodsOrderDetail.price }}</el-col>
<el-col :span="3" class="text-r">商品数量</el-col>
<el-col :span="6" class="text-l">{{ goodsOrderDetail.total }}</el-col>
</el-row>
</div>
</div>
<!-- 历史售后申请 -->
<div>
<p>历史售后申请</p>
<el-table :data="asApplyList">
<el-table-column label="申请时间" align="center" prop="tabapply_time">
<template slot-scope="scope">
{{formatter(scope.row.tabapply_time)}}
</template>
</el-table-column>
<el-table-column label="退换货类型" align="center" width="180" prop="refund_type">
<template slot-scope="scope">
{{ refundTypeFormatter(scope.row.refund_type) }}
</template>
</el-table-column>
<el-table-column label="申请金额" align="center" prop="apply_price">
<template slot-scope="scope">
{{scope.row.apply_price/100 }}
</template>
</el-table-column>
<el-table-column label="申请原因" align="center" prop="reason">
<template slot-scope="scope">
{{ reasonFormatter(scope.row.reason) }}
</template>
</el-table-column>
<el-table-column label="申请说明" align="center" prop="content"></el-table-column>
<el-table-column label="处理结果" align="center">
<template slot-scope="scope">
{{ ASResult(scope.row) }}
</template>
</el-table-column>
<el-table-column label="申请图片" align="center">
<template slot-scope="scope">
{{scope.row.apply_price/100 }}
</template>
</el-table-column>
</el-table>
</div>
<!-- 售后 操作按钮 -->
<div class="as-handle-btn" v-if="onlyOrRefundBtnType == 1">
<el-button class="as-btn" type="primary" @click="agreeHandle(1)">同意退款</el-button>
<el-button class="as-btn" type="primary" @click="refuseHandle(2)">拒绝退款</el-button>
</div>
<div class="as-handle-btn" v-if="onlyOrRefundBtnType == 2">
<el-button class="as-btn" type="primary" @click="agreeHandle(3)">同意退货退款</el-button>
<el-button class="as-btn" type="primary" @click="refuseHandle(4)">拒绝退货退款</el-button>
</div>
<div class="as-handle-btn" v-if="onlyOrRefundBtnType == 3">
<el-button class="as-btn" type="primary" @click="refuseHandle(4)">拒收包裹</el-button>
<el-button class="as-btn" type="primary" @click="agreeHandle(1)">确定退款</el-button>
</div>
</el-card>
<!-- [仅退款 同意/拒绝] [退货退款 确定退款/拒收包裹] 对话框 -->
<el-dialog
:title="dialogASTypeTitle"
:visible.sync="isASTypeDialog"
width="50%"
center>
<div v-if="onlyIsAgree == 1" class="only-refund-agree">
<p>同意退款,该订单将关闭,请您仔细核实商品发货状态以及退款金额,若因此导致的损失将由您自己承担!</p>
<p>确定同意同款吗?</p>
<p>确定同意退款后,将关闭该订单</p>
</div>
<div v-if="onlyIsAgree == 2" class="only-refund-refuse">
<p>拒绝原因:</p>
<p style="width:80%">
<el-input type="textarea" v-model="onlyRefuseReason" :rows="4"></el-input>
</p>
</div>
<div v-if="onlyIsAgree == 3" class="refund-agree">
<div class="refund-agree-1">
<p>同意退货退款,买家回填退货商品的物流单号,收到货后,请您仔细核实商品,核实无误后,点击【确定退款】按钮进行退款!若因此导致的损失将由您自己承担!</p>
<p>确定同意退货退款吗?</p>
<p>确定同意退货退款后,等待买家退回商品</p>
</div>
<div class="refund-agree-2">
<p>选择发送退换货地址:</p>
<p style="width:80%">
<el-select v-model="order_refund_address" placeholder="退货地址" style="width: 80%;">
<el-option v-for="(item,index) in asAddressOptions" :key="item.id" :label="item.info"
:value="item.id"></el-option>
</el-select>
</p>
</div>
</div>
<div v-if="onlyIsAgree == 4" class="onlyIsAgree-4">
<div class="onlyIsAgree-4-1">
<p>拒绝原因:</p>
<p style="width:80%">
<el-input type="textarea" v-model="refuseReason" :rows="4"></el-input>
</p>
</div>
<p>请详细说明您拒绝的原因,拒绝后售后不会结束,买家可再次申请</p>
</div>
<span slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitAfterSale(onlyIsAgree)" size="small">确 定</el-button>
<el-button @click="cancelAfterSale(onlyIsAgree)" size="small">取 消</el-button>
</span>
</el-dialog>
</div>
</template>
<script>
import { getASOrderDetail, agreeRefundData, refuseRefundData,getASAdressData } from '@/api/module/retreat'
import { dateFormat } from '@/utils' //getASOrderDetail
export default {
name: "Edit",
data() {
return {
// Refund only 仅退款
// Return refund 退货退款
asGoodId: 0, // 当前 售后订单的 id
asOrderType: 1, // 售后类型 1-仅退款; 2-退货退款
// 仅退款 流程,每个步骤文字提示
step: 1, // 激活 当前步骤
onlyStep2: '卖家处理中',
onlyStep3: '售后结束',
// 退货退款 流程 每个步骤文字提示
has45: 3, // 此值,控制步骤数量,是 3 步,4 步,还是 5 步
refundStep2: '卖家处理中',
refundStep3: '售后完成',
refundStep4: '',
refundStep5: '',
// 售后订单 信息
asOrderDetail: {
status: 0, // 退款状态
refund_type: 1, // 退换货类型
apply_price: 0, // 申请金额
reason: 0, // 申请原因
content: '', // 申请说明
images: '', // 申请图片
},
// 商品订单信息
goodsOrderDetail: {
goods_status: 0, // 订单状态
goods_order_sn: '', // 订单编号
price: '', // 商品金额
title: '',// 商品名称
goods_option_title: '', // 商品规格
total: '', // 商品数量
},
// 售后申请 图片 list
asSrcList: [],
asApplyList: [
{ data1:1256332213,data2: 1,data3: 3,data4: 4,data5:5, data6: 6,data7: 7 }
],
// 0-全部隐藏-默认状态; 1-显示 仅退款 按钮;2-显示 退货退款中(同意/拒绝 退货退款)按钮; 3-显示 退货退款中 (拒收包裹 / 确定退款) 按钮
onlyOrRefundBtnType: 0,
// 1-仅退款 同意退款; 2-仅退款 拒绝退款; 3-退货退款 同意退款退款; 4-; 5-
onlyIsAgree: 0,
dialogASTypeTitle: '',
isASTypeDialog: false,
onlyRefuseReason: '',
refuseReason: '',
sellerId: 0,
asAddressOptions: [],
order_refund_address:''
} // return end
},
watch: {},
created() {
this.sellerId = this.$store.state.user.sellerid;
/** 获取 当前售后 订单的id */
this.asGoodId = this.$route.query.refund_sn;
/** 查询 售后订单详情 */
this.getDetail();
/** 获取 退货退款的发送 地址 */
this.getASAdress();
},
mounted() {},
methods: {
/** Only 代表 仅退款
* 售后步骤和对应文案提示,
* 在售后订单详情 查询时,需要同步调用
* */
returnOnlyStatus(status,close_status) {
// 步骤和步骤文字提示的初始化
this.step = 1;
this.onlyStep2 = '卖家处理中'
this.onlyStep3 = '售后完成'
// 卖家超时未处理,和卖家主动同意退款
if(status === 5){
this.step = 3
this.onlyStep2 = '卖家同意退款'
this.onlyStep3 = '退款完成,售后完成'
}else if(status === -1) { // 1、卖家拒绝退款;2、买家取消售后
if(close_status === 1) {
this.step = 3
this.onlyStep2 = '卖家拒绝退款'
this.onlyStep3 = '卖家拒绝,售后关闭'
} else if(close_status === 6) {
this.step = 3
this.onlyStep2 = '买家取消售后申请'
this.onlyStep3 = '买家取消,售后关闭'
}
}
},
/** Refund 代表 退货退款
* 售后步骤和对应文案提示,
* 在售后订单详情 查询时,需要同步调用
* */
returnRefundStatus(status,close_status) {
// 步骤和步骤文字提示的初始化
this.has45 = 3; // 当前售后流程有 3/4/5 步
this.step = 1; // 当前激活是第 几 步
this.refundStep2 = '卖家处理中' // 第2步 对应提示
this.refundStep3 = '售后完成' // 第3步 对应提示
this.refundStep4 = '' // 第4步 对应提示
this.refundStep5 = '' // 第5步 对应提示
if( status === 2 ) {
this.has45 = 5;
this.refundStep2 = '卖家同意退货退款'
this.refundStep3 = '买家回填物流单号'
this.refundStep4 = '卖家收货,确定退款'
this.refundStep5 = '退款完成,售后完成'
this.step = 2
}else if (status === 3) {
this.has45 = 5;
this.refundStep2 = '卖家同意退货退款'
this.refundStep3 = '买家回填物流单号'
this.refundStep4 = '卖家收货,确定退款'
this.refundStep5 = '退款完成,售后完成'
this.step = 3
}else if ( status === 4 ) {
this.has45 = 5;
this.refundStep2 = '卖家同意退货退款'
this.refundStep3 = '买家回填物流单号'
this.refundStep4 = '卖家收货,确定退款'
this.refundStep5 = '退款完成,售后完成'
this.step = 4
}else if ( status === 5 ) {
this.has45 = 5;
this.refundStep2 = '卖家同意退货退款'
this.refundStep3 = '买家回填物流单号'
this.refundStep4 = '卖家收货,确定退款'
this.refundStep5 = '退款完成,售后完成'
this.step = 5
}else if ( status === -1 ) {
if( close_status === 1 ) {
this.has45 = 3;
this.refundStep2 = '卖家拒绝退货退款'
this.refundStep3 = '卖家拒绝,售后关闭'
this.refundStep4 = ''
this.refundStep5 = ''
this.step = 3
}else if (close_status === 2) {
this.has45 = 5;
this.refundStep2 = '卖家同意退货退款'
this.refundStep3 = '买家回填物流单号'
this.refundStep4 = '卖家拒绝,包裹退回'
this.refundStep5 = '卖家拒绝,售后关闭'
this.step = 5
}else if(close_status === 3) {
this.has45 = 4
this.refundStep2 = '卖家同意退货退款'
this.refundStep3 = '买家超时未退货'
this.refundStep4 = '买家未退货,售后关闭'
this.refundStep5 = ''
this.step = 5
}else if (close_status === 6) {
this.has45 = 3
this.refundStep2 = '买家取消售后申请'
this.refundStep3 = '买家取消,售后关闭'
this.refundStep4 = ''
this.refundStep5 = ''
this.step = 3
}
}
// return step
},
/** 查询订单详情*/
getDetail() {
//console.log("售后单号",this.asGoodId);
getASOrderDetail({order_refund_sn: this.asGoodId}).then(res=> {
//console.log("296",res);
if( res.code === 1 && res.data ) {
// 售后订单详情
if( res.data.order_refund ) {
this.asOrderDetail = res.data.order_refund;
//------------ 测试数据
// this.asOrderDetail.refund_type = 2;
// this.asOrderDetail.status = 2;
// this.asOrderDetail.close_reason = 2;
//--------------
// 先确定 售后类型
this.asOrderType = this.asOrderDetail.refund_type
// 根据售后订单信息,判断 订单状态,显示对应按钮操作
this.asHandleBtnType(this.asOrderDetail)
// 金额处理
this.asOrderDetail.apply_price = this.asOrderDetail.apply_price / 100
this.asOrderDetail.price = this.asOrderDetail.price / 100
// 售后图片 处理
this.asSrcList = []
if(this.asOrderDetail.images) {
this.asSrcList = this.asOrderDetail.images.split(',')
}
// 更新 售后订单 流程和状态
// 仅退款
if(this.asOrderDetail.refund_type == 1) {
this.returnOnlyStatus(this.asOrderDetail.status,this.asOrderDetail.close_reason);
}
// 退货退款
if(this.asOrderDetail.refund_type == 2) {
this.returnRefundStatus(this.asOrderDetail.status,this.asOrderDetail.close_reason);
}
}
// 订单 详情
if(res.data.order_goods) {
this.goodsOrderDetail = res.data.order_goods;
}
// 售后历史
if(res.data.order_refund_history) {
this.asApplyList = res.data.order_refund_history
}
}
});
},
/** 仅退款
* 操作按钮 类型
* onlyOrRefundBtnType:// 1-显示 仅退款 按钮; 2-显示 退货退款中(同意/拒绝 退货退款)按钮; 3-显示 退货退款中 (拒收包裹 / 确定退款) 按钮
* disabledOnlyBtn: true-售后结束-不能点击;false-可以点击
* 每次 订单详情更新,被调用
* */
asHandleBtnType(row) {
// row.refund_type 1-仅退款 ; 2-退货退款
// row.status 退款状态-1关闭1待审核2待退货3待收货4待打款5已完成
// row.close_reason 售后关闭原因: 1卖家拒绝退款、退货退款 2卖家拒收拒绝退款 3买家超时未退货自动关闭 6买家取消
if( row ) {
if(row.refund_type == 1) {
this.onlyOrRefundBtnType = 1
}else if(row.refund_type == 2) {
this.onlyOrRefundBtnType = (row.status == 1) ? 2 : 3
}else {
this.onlyOrRefundBtnType = 0;
}
}
},
/** 同意 */
agreeHandle(type) {
if(type == 1) {
this.onlyIsAgree = type // 仅退款 同意退款
this.dialogASTypeTitle = "提示";
this.isASTypeDialog = true;
}
if(type ==3) {
this.onlyIsAgree = type // 退货退款 同意退货退款
this.dialogASTypeTitle = "提示";
this.isASTypeDialog = true;
}
},
/** 拒绝 */
refuseHandle(type) {
if( type== 2 ) {
this.onlyIsAgree = type // 仅退款的 拒绝退款
this.dialogASTypeTitle = "拒绝原因";
this.onlyRefuseReason = '';
this.isASTypeDialog = true;
}
if( type == 4 ) {
this.onlyIsAgree = type // 4 拒绝退货退款
this.dialogASTypeTitle = "拒绝原因";
this.refuseReason = '';
this.isASTypeDialog = true;
}
},
/** 提交 退款 处理信息
*
* */
submitAfterSale(type) {
console.log("确定的类型",type);
let params = {
order_refund_sn: 0
};
// type为1,则为,仅退款的 同意退款 操作
if(this.onlyIsAgree == 1) {
params.order_refund_sn = this.asGoodId
// 1、为了更好提示,2、预防后期接口解耦
agreeRefundData(params).then(res=> {
let msg = ''
if(res.code == 1) {
this.$message({type:'success',message:'操作成功'});
}else {
msg = res.message ? res.message : '操作失败'
this.$message({type:'error',message:msg});
}
this.isASTypeDialog = false;
// 更新订单
this.getDetail();
});
}
// type为2,则为,仅退款的 拒绝退款 操作
if(this.onlyIsAgree == 2) {
if(this.onlyRefuseReason == '') {
this.$message({type:'warning',message: '请输入拒绝退款的原因'});
return
}
params['reason'] = this.onlyRefuseReason;
refuseRefundData(params).then(res=> {
let msg = ''
if(res.code == 1) {
this.$message({type:'success',message:'操作成功'});
}else {
msg = res.message ? res.message : '操作失败'
this.$message({type:'error',message:msg});
}
this.isASTypeDialog = false;
// 更新订单
this.getDetail();
});
} // type 2 end
// type 为3,则为,退货退款的 同意退货退款,发送地址
if(this.onlyIsAgree == 3) {
// console.log('地址信息:',this.order_refund_address);
if( this.order_refund_address == '' ) {
this.$message({type:'warning',message: '请选择地址信息'});
return
}
params['order_refund_address'] = this.order_refund_address;
agreeRefundData(params).then(res=> {
let msg = ''
if(res.code == 1) {
this.$message({type:'success',message:'操作成功'});
}else {
msg = res.message ? res.message : '操作失败'
this.$message({type:'error',message:msg});
}
this.isASTypeDialog = false;
// 更新订单
this.getDetail();
});
} // type 3 end
// type 为4,则为 退货退款的 拒绝
if(this.onlyIsAgree == 4) {
if(this.refuseReason == '') {
this.$message({type:'warning',message: '请输入拒绝的原因'});
return
}
params['reason'] = this.refuseReason;
refuseRefundData(params).then(res=> {
let msg = ''
if(res.code == 1) {
this.$message({type:'success',message:'操作成功'});
}else {
msg = res.message ? res.message : '操作失败'
this.$message({type:'error',message:msg});
}
this.isASTypeDialog = false;
// 更新订单
this.getDetail();
});
} // type 4 end
//
},
/** */
/** 取消 售后对话框 */
cancelAfterSale(type) {
//console.log("拒绝类型",type);
this.isASTypeDialog = false;
},
/** 售后 退货退款 地址 */
getASAdress() {
let params = {
page:1,
limit:100,
seller_id: this.sellerId
}
getASAdressData(params).then(res=> {
if(res.code == 1) {
this.asAddressOptions = res.data.list;
}else {
let msg = res.message ? res.message : '获取售后地址失败'
this.$message({type:'error',message: msg});
}
});
},
/** 订单发货状态 goodsDeliveryStatus Formatter*/
GDSFormatter(status) {
let statusText = ''
if(status == 0) {
statusText = '未发货';
}else if(status == 1) {
statusText = '已发货';
}else if(status == 2) {
statusText = '已收货';
}else if(status == 3) {
statusText = '配货中';
}else if(status == 4) {
statusText = '拒收';
}
return statusText
},
/** 售后结果 */
ASResult(row) {
let result = ''
if(row.status == 5) {
result = '退款完成,售后完成'
}else if(row.status == -1) {
if( row.close_reason == 1 || row.close_reason == 2) {
result = '卖家拒绝,售后关闭'
}else if ( row.close_reason == 3 ) {
result = '买家未退货,售后关闭'
}else if ( row.close_reason == 4 ) {
}
}
return result
},
/** 售后 申请原因 */
reasonFormatter(type) {
let reasonText = ''
if ( type == 1 ) {
reasonText = '其他'
} else if( type == 2 ) {
reasonText = '漏发'
}else if( type == 3 ) {
reasonText = '协商一致'
}else if( type == 4 ) {
reasonText = '质量不符'
}
return reasonText
},
/** 售后类型 */
refundTypeFormatter(type) {
let typeText = ''
if (type == 1) {
typeText = '仅退款'
} else if(type == 2) {
typeText = '退货退款'
}
return typeText
},
/** 时间戳转化 格式化 */
formatter(time) {
return dateFormat(time * 1000, 'Y-m-d H:i:s')
},
}
}
</script>
<style scoped>
.after-sale-detail {
overflow: auto;
}
.as-detail-title {
text-align: center;
margin: 10px 0 20px;
padding: 0 0 20px;
font-size: 18px;
border-bottom: 1px solid #eee;
}
.as-order-details {
margin-top: 20px;
}
/* 售后信息 表格 样式 */
/deep/.el-col {
/*border: 1px solid #eee;*/
/*padding: 0 10px;*/
/*height: 38px;*/
/*display: flex;*/
/*align-items: center;*/
}
.row-title,.row-title-pic {
font-size: 14px;
color: #333;
}
.row-title .text-r,.row-title .text-l {
border: 1px solid #eee;
padding: 0 10px;
height: 38px;
display: flex;
align-items: center;
}
.row-title-pic .text-r,.row-title-pic .text-l{
border: 1px solid #eee;
padding: 0 10px;
height: 98px;
display: flex;
align-items: center;
}
.text-r {
justify-content: flex-end;
background: #F7F8FA;
}
.text-l {
text-align: left;
}
.as-handle-btn {
display: flex;
align-items: center;
justify-content: center;
}
.only-refund-agree {
margin: 0 50px;
}
.only-refund-agree > p{
text-align: center;
line-height: 30px;
}
.only-refund-refuse {
display: flex;
align-items: center;
justify-content: center;
flex-direction: row;
}
.refund-agree .refund-agree-1 > p {
text-align: center;
line-height: 30px;
}
.refund-agree > .refund-agree-2{
display: flex;
align-items: center;
justify-content: center;
flex-direction: row;
}
.onlyIsAgree-4 > .onlyIsAgree-4-1 {
display: flex;
align-items: center;
justify-content: center;
flex-direction: row;
}
.onlyIsAgree-4 > p {
text-align: center;
line-height: 30px;
}
.as-btn {
margin: 40px 20px 20px;
}
.no-bd-t {
border-top: 0!important;
}
.no-bd-r {
border-right: 0!important;
}
.no-bd-b {
border-bottom: 0!important;
}
.no-bd-l {
border-left: 0!important;
}
</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="结束日期"
@change="applyTimeChange"
: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="goods_id">
<el-input
v-model="queryParams.goods_id"
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="goods_title">
<el-input
v-model="queryParams.goods_title"
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="refund_type">
<el-select v-model="queryParams.refund_type" 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-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>
<el-form-item label="订单号" prop="goods_order_sn">
<el-input
v-model="queryParams.goods_order_sn"
placeholder="请输入订单号"
clearable
@keyup.enter.native="handleQuery"
/></el-form-item>
<el-form-item label="退换货原因" prop="reason">
<el-select v-model="queryParams.reason" 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="150" prop="goodsId"></el-table-column>
<el-table-column label="商品名称" align="center" width="180" prop="title"></el-table-column>
<el-table-column label="订单号" align="center" width="240" prop="goods_order_sn"></el-table-column>
<el-table-column label="退换货类型" align="center" width="180">
<template slot-scope="scope">
<span v-if="scope.row.refund_type == 1">仅退款</span>
<span v-if="scope.row.refund_type == 2">退货退款</span>
</template>
</el-table-column>
<el-table-column label="退换货类型" align="center" prop="refund_type">
<el-table-column label="退换货原因" align="center" prop="reason">
<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>
<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>
</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">
<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="到期时间" align="center" prop="deadline">
<template slot-scope="scope">
{{formatter(scope.row.deadline)}}
</template>
</el-table-column>
<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 size="small" 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 { getRetreatList } from '@/api/module/retreat'
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: 1,
activeName: 'first',
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: {},
goods_id: '',
goods_title: '',
refund_type: '',
goods_order_sn: '',
reason: '',
},
orderrefundid:'',//订单号
refundtype:'',//退款类型
refundstatus:'',//退款状态
dialogTableVisible:false,//退货退款弹窗
restaddress:'',//退货地址id
pickerOptions: {
shortcuts: [{
text: '最近一周',
......@@ -445,338 +161,182 @@ import {dateFormat} from '@/utils'
}
}]
},
};
// 退换货类型
userNeedOptions: [
{value: -1,label: '全部类型'},
{value: 1,label: '仅退款'},
{value: 2,label: '退货退款'},
],
// 退换货原因
needMsgOptions: [
{value: -1,label: '全部原因'},
{value: 3,label: '协商一致退款'},
{value: 1,label: '其他'},
{value: 2,label: '漏发'},
{value: 4,label: '质量不符'},
],
fullHeight: 0,
afterSaleHeight: 200,
currentPage: 1,
pageSize: 10,
total: 0,
// 售后列表
afterSaleList: [],
}
}, // 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
}
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-已完成
* */
handleClick() {
switch (this.activeName) {
case 'first':
this.goodsStatus = 1
break
case 'second':
this.goodsStatus = 2
break
case 'third':
this.goodsStatus = 3
break
default:
break
}
// 搜索条件初始化
this.resetSearchParams();
// 列表 查询
this.getList();
},
//行为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 "未知"
/** 时间格式处理 */
applyTimeChange() {
if( !Array.isArray(this.queryParams.applyTime) ) {
this.queryParams.applyTime = [];
}
},
//角色 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 "未知"
/** 列表查询 */
getList() {
let params = {
page: this.currentPage,
limit: this.pageSize,
status: this.goodsStatus,
apply_start_time: '',
apply_end_time: '',
goods_id: this.queryParams.goods_id,
goods_title: this.queryParams.goods_title,
refund_type: '',
goods_order_sn: '',
reason: ''
}
},
// //获取地址后缀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 "订单取消"
// console.log('queryParams:',this.queryParams);
//console.log('传向后台的参数:',params);
if( this.queryParams.applyTime.length === 2) {
params.apply_start_time = new Date(this.queryParams.applyTime[0]).getTime() / 1000
params.apply_end_time = new Date(this.queryParams.applyTime[1]).getTime() / 1000
}else {
params.apply_start_time = ''
params.apply_end_time = ''
}
},
userNeed(ids) { //1::2:3:
if (ids == 1) {
return "仅退款"
} else if (ids == 2) {
return "退款退货"
} else if (ids == 3) {
return "换货"
} else {
return "未知"
if (this.queryParams.refund_type === -1) {
params.refund_type = ''
}else {
params.refund_type = this.queryParams.refund_type;
}
},
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 "其他"
if (this.queryParams.reason === -1) {
params.reason = ''
}else {
params.reason = this.queryParams.reason;
}
},
/** 查询售后申请信息列表 */
getList() {
listRetreat(this.queryParams).then(res => {
if(res.data) {
this.retreatList = res.data.data;
getRetreatList(params).then(res=> {
if(res.code === 1) {
this.afterSaleList = 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
this.resetSearchParams();
this.getList();
},
// 多选框选中数据
handleSelectionChange(selection) {
this.ids = selection.map(item => item.id)
this.single = selection.length !== 1
this.multiple = !selection.length
/** 售后 订单 详情 */
handleInfo(row) {
let id = row.refund_sn ? row.refund_sn : 0;
this.$router.push({
path: '/system/repeat/edit',
query: { refund_sn: id }
});
},
handleRejectCancel() {
this.orderInfo = true
this.reject = false
/** 调整 列表当前页面 最大展示条数 */
handleSizeChange(val) {
this.pageSize = val;
// this.getList();
},
handleRejectPre() {
this.orderInfo = false
this.reject = true
/** 列表 跳转到 第 几 页 */
handleCurrentChange(val) {
this.currentPage = val
// this.getList();
},
handleRebackCancel() {
this.reject = false
this.reback = false
this.orderInfo = true
/** 搜索条件初始化 */
resetSearchParams() {
this.pageSize = 10;
this.currentPage = 1;
// this.goodsStatus = 1;
this.queryParams = {
applyTime: [],
goods_id: '',
goods_title: '',
refund_type: '',
goods_order_sn: '',
reason: '',
}
},
/** 搜索条件 键盘enter */
handleQuery() {
},
//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 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论