You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

270 lines
8.9 KiB

<template>
<div class="afterSealsContainer">
<!-- 搜索栏 -->
<div class="titleSearch">
<el-input v-model="query.orderCode" clearable placeholder="输入搜索订单号" style="width: 200px;" class="filter-item" @keyup.enter.native="toQuery" />
<el-date-picker
v-model="searchTime"
:default-time="['00:00:00','23:59:59']"
type="daterange"
range-separator=":"
size="small"
class="date-item"
value-format="yyyy-MM-dd HH:mm:ss"
start-placeholder="开始日期"
end-placeholder="结束日期"
/>
<br>
<el-select v-model="query.type"
clearable placeholder="售后类型"
class="filter-item"
style="width: 130px">
<el-option
v-for="item in serviceTypeOptions"
:key="item.key"
:label="item.name"
:value="item.key" />
</el-select>
<el-select v-model="query.salesState"
clearable placeholder="售后状态"
class="filter-item"
style="width: 130px">
<el-option
v-for="item in salesOptions"
:key="item.key"
:label="item.name"
:value="item.key" />
</el-select>
<el-select v-model="query.state"
clearable placeholder="订单状态"
class="filter-item"
style="width: 130px">
<el-option
v-for="item in statusOptions"
:key="item.key"
:label="item.name"
:value="item.key" />
</el-select>
<el-button size="mini" type="success" icon="el-icon-search" @click="toQuery">搜索</el-button>
<el-button
size="mini"
type="warning"
icon="el-icon-refresh-left"
@click="resetSearch">重置</el-button>
</div>
<!--如果想在工具栏加入更多按钮,可以使用插槽方式, slot = 'left' or 'right'-->
<!-- <crudOperation :permission="permission" /> -->
<!--表格渲染-->
<el-table
ref="table"
v-loading="loading"
:data="data"
size="small"
style="width: 100%;"
@selection-change="val => {selections = val}">
<!-- @selection-change="selectionChangeHandler" -->
<el-table-column type="selection" width="55" />
<el-table-column prop="orderCode" label="订单号" />
<el-table-column prop="refundAmount" label="退款金额" width="100px"/>
<el-table-column prop="serviceType" label="服务类型" >
<template slot-scope="scope">
<span v-if="scope.row.serviceType === 0">仅退款</span>
<span v-if="scope.row.serviceType === 1">退货退款</span>
</template>
</el-table-column>
<el-table-column prop="reasons" label="申请原因" />
<el-table-column prop="explains" label="说明" />
<el-table-column prop="createTime" label="申请时间" align="center">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.createTime) }}</span>
</template>
</el-table-column>
<el-table-column prop="state" label="状态" width="100px" align="center">
<template slot-scope="scope">
<span v-if="scope.row.state === 0" :style="'color: #E6A23C'">等待审核</span>
<span v-if="scope.row.state === 1&&scope.row.serviceType===1" :style="'color: #409EFF'">等待用户发货</span>
<span v-if="scope.row.state === 1&&scope.row.serviceType===0" :style="'color: #409EFF'">退款中</span>
<span v-if="scope.row.state === 2" :style="'color: #F56C6C'">用户已发货</span>
<span v-if="scope.row.state === 3" :style="'color: #909399'">退款成功</span>
</template>
</el-table-column>
<el-table-column prop="salesState" label="售后状态" width="100px" align="center">
<template slot-scope="scope">
<span v-if="scope.row.salesState === 0" :style="'color: #42b983'">正常</span>
<span v-if="scope.row.salesState === 1" :style="'color: #409EFF'">用户已取消</span>
<span v-if="scope.row.salesState === 2" :style="'color: #F56C6C'">已拒绝用户</span>
</template>
</el-table-column>
<el-table-column
v-permission="['admin','yxStoreAfterSales:edit','yxStoreAfterSales:del']" label="操作" width="150px" align="center">
<template slot-scope="scope">
<el-button type="text" @click="checkItem(scope.row, 0)">订单详情</el-button>
<el-button
size="mini"
type="success"
v-if="scope.row.state === 0 && scope.row.salesState === 0"
@click="checkItem(scope.row, 1)">审核</el-button>
<el-button
size="mini"
type="danger"
v-if="scope.row.state === 2"
@click="rebackVisible = true;
rebackQuery.salesId = scope.row.id;
rebackQuery.orderCode = scope.row.orderCode">
退款</el-button>
</template>
</el-table-column>
</el-table>
<!--分页组件-->
<el-pagination
:total="total"
:current-page="page"
style="margin-top: 20px; float: right"
layout="total, prev, pager, next, sizes"
@size-change="sizeChange"
@current-change="pageChanges" />
<!-- 审核、订单详情 -->
<CheckDialog ref="addForm" :visible="addVisible" @checkSuccess="toQuery"/>
<!-- 退款 -->
<el-dialog
title="退款"
:visible.sync="rebackVisible"
width="400px">
<span>
是否给订单号:<b :style="'color: #409EFF'">{{ this.rebackQuery.orderCode }}</b> 确认退款?
</span>
<span slot="footer" class="dialog-footer">
<el-button @click="rebackVisible = false">取 消</el-button>
<el-button type="primary" @click="rebackItem"> </el-button>
</span>
</el-dialog>
</div>
</template>
<script>
import initData from '@/mixins/crud'
import {rebackMoney} from '@/api/bxg/yxStoreAfterSales'
import CheckDialog from './checkDialog.vue'
export default {
name: 'YxStoreAfterSales',
components: { CheckDialog },
mixins: [initData],
data() {
return {
addVisible: false,
rebackVisible: false,
searchTime: [],
permission: {
add: ['admin', 'yxStoreAfterSales:add'],
edit: ['admin', 'yxStoreAfterSales:edit'],
del: ['admin', 'yxStoreAfterSales:del']
},
salesOptions: [
{ key: 0, name: '正常'},
{ key: 1, name: '用户已取消' },
{ key: 2, name: '已拒绝用户'}
],
serviceTypeOptions: [
{ key: null, name: '全部' },
{ key: 0, name: '仅退款' },
{ key: 1, name: '退货退款' }
],
statusOptions: [
{ key: 0, name: '待审核'},
{ key: 1, name: '等待用户发货'},
{ key: 2, name: '用户已发货'},
{ key: 3, name: '已完成'},
],
// 退款参数
rebackQuery: {
orderCode: '', // 订单号
salesId: 0 // 数据的id
}
}
},
created() {
this.$nextTick(() => {
this.init()
})
},
methods: {
beforeInit() {
this.url = 'bxg/api/yxStoreAfterSales/sales/List'
this.params = {
page: this.page,
size: this.size,
serviceType: this.query.type || '', // 查询类型
salesState: this.query.salesState || 0, // 售后状态
state: this.query.state,
orderCode: this.query.orderCode || '',
time: this.searchTime
// startingTime: `${this.searchTime[0]}` || '',
// endTime: `${this.searchTime[1]}` || ''
}
if (this.query.state === 0) this.params.state = 0;
return true
},
resetSearch() {
this.query.orderCode = this.query.type = this.query.salesState = this.query.state = '';
this.searchTime = [];
this.toQuery()
},
// 审核
checkItem(row, type) {
this.$refs.addForm.checkForm = row
this.$refs.addForm.getRefundInfo()
this.$refs.addForm.serviceType = row.serviceType
this.$refs.addForm.form.salesId = row.id
this.$refs.addForm.form.orderCode = row.orderCode
if (type === 1) {
this.$refs.addForm.isShow = true
} else {
this.$refs.addForm.isShow = false
}
this.$refs.addForm.visible = true
},
// 退款
async rebackItem() {
var res = await rebackMoney(this.rebackQuery)
console.log(res,'res')
if (res.status!=500) {
this.$message.success('提交退款成功!')
this.rebackVisible = false
this.toQuery()
} else {
this.$message.error(res.message || '提交退款失败!')
}
}
}
}
</script>
<style lang="scss" scoped>
.afterSealsContainer{
padding: 12px 8px;
.titleSearch {
line-height: 40px;
margin: 20px 0;
}
.table-img {
display: inline-block;
text-align: center;
background: #ccc;
color: #fff;
white-space: nowrap;
position: relative;
overflow: hidden;
vertical-align: middle;
width: 32px;
height: 32px;
line-height: 32px;
}
}
</style>