Authored by shuaiguo

feat(refund): 新增申请退款&退款管理

import App from './index.vue';
import createApp from 'create-app';
createApp(App);
\ No newline at end of file
... ...
<template>
<LayoutContent :breads="[{title: '退款登记'}]">
<div class="header-container">
<LayoutFilter @on-filter="onFilter" @on-clear="onClear">
<i-form ref="filterForm" inline :model="filter">
<i-form-item prop="uid">
<i-input placeholder="输入UID" v-model="filter.uid"></i-input>
</i-form-item>
<i-form-item prop="status">
<i-select placeholder="状态" v-model="filter.status" style="width: 100px;">
<i-option :value="0">待退款</i-option>
<i-option :value="1">已退款</i-option>
<i-option :value="2">驳回退款</i-option>
</i-select>
</i-form-item>
<i-form-item prop="applicant">
<i-input placeholder="退款发起人" v-model="filter.applicant"></i-input>
</i-form-item>
<i-form-item prop="time">
<i-date-picker type="datetimerange" v-model="filter.time" placeholder="开始-结束时间" format="yyyy-MM-dd HH:mm" style="width: 280px"></i-date-picker>
</i-form-item>
</i-form>
</LayoutFilter>
<i-button type="success" icon="md-add" @click="onCreateRefund">新增退款信息</i-button>
</div>
<LayoutTools class="export-container">
<i-button type="primary" icon="ios-cloud-download" @click="onExport">导出</i-button>
</LayoutTools>
<LayoutTable
:page="page"
:total="total"
:columns="columns"
:data="refundList"
@on-page-change="onPageChange">
<template slot="footer" class="btns">
<i-button type="warning" @click="onBatchDelete">批量删除</i-button>
</template>
</LayoutTable>
</LayoutContent>
</template>
<script>
import qs from 'qs';
export default {
data() {
return {
filter: {
uid: '',
applicant: '',
status: '',
time: []
},
page: 1,
total: 0,
refundList: [],
columns: [{
type: 'selection',
width: 60,
align: 'center'
},{
title: '日期',
key: 'time',
width: 80
}, {
title: '退款发起人',
key: 'applicant',
width: 80
},{
title: '订单号',
key: 'orderNum',
width: 80
},{
title: 'UID',
key: 'UID',
width: 80
}, {
title: '说明',
key: 'description',
width: 90
},
{
title: '退款类型',
key: 'refundType',
width: 90
},
{
title: '金额',
key: 'refundPrice',
width: 90
},
{
title: '退款渠道',
key: 'refundChannel',
width: 80
},{
title: '收款人姓名',
key: 'payeeName',
align:'center',
width: 90
}, {
title: '收款账号',
align: 'center',
key: 'account'
},{
title: '商品名称',
align: 'center',
key: 'itemName',
width: 165
},
{
title: '商品尺码',
key: 'itemSize',
align:'center',
width: 80
}, {
title: '退回地址',
align: 'center',
key: 'address'
},{
title: '处理人',
key: 'operator',
width: 90
},{
title: '状态',
key: 'status',
align:'center',
width: 80
}, {
title: '备注',
align: 'center',
key: 'note'
}, {
title: '操作',
align: 'center',
width: 200,
render: (h, {row}) => {
return (
<div>
<i-button type="success" size="small" onClick={() => this.onEditCoupon(row, true, true)}>编辑</i-button>
<i-button type="error" size="small" onClick={() => this.onDelete(row)}>删除</i-button>
</div>
);
}
}]
}
},
computed: {
fitlerTime(vm) {
const [startTime, endTime] = vm.filter.time;
}
},
methods: {
onFilter() {},
onClear() {
this.$refs.filterForm.resetFields();
},
onCreateRefund() {
},
onBatchDelete() {},
onDelete() {}
},
watch: {
'filter.time': function(newVal) {
console.log('-------filter.time-------',newVal);
},
'filter.refundType'(newVal) {
console.log('--------------', newVal);
}
}
}
</script>
<style lang="scss" scoped>
.header-container {
display: flex;
justify-content: space-between;
}
.export-container {
display: flex;
justify-content: flex-end;
}
</style>
\ No newline at end of file
... ...
import App from './index.vue';
import createApp from 'create-app';
createApp(App);
\ No newline at end of file
... ...
<template>
<LayoutContent :breads="[{title: '退款管理'}]">
<div class="header-container">
<LayoutFilter @on-filter="onFilter" @on-clear="onClear">
<i-form ref="filterForm" inline :model="filter">
<i-form-item prop="uid">
<i-input placeholder="输入UID" v-model="filter.uid"></i-input>
</i-form-item>
<i-form-item prop="refundType">
<i-select placeholder="退款类型" v-model="filter.refundType" style="width: 100px;">
<i-option :value="' '"></i-option>
<i-option :value="1">补偿类</i-option>
<i-option :value="2">吃货类</i-option>
<i-option :value="3">打款类</i-option>
</i-select>
</i-form-item>
<i-form-item prop="status">
<i-select placeholder="状态" v-model="filter.status" style="width: 100px;">
<i-option :value="0">待退款</i-option>
<i-option :value="1">已退款</i-option>
<i-option :value="2">驳回退款</i-option>
</i-select>
</i-form-item>
<i-form-item prop="time">
<i-date-picker type="datetimerange" v-model="filter.time" placeholder="开始-结束时间" format="yyyy-MM-dd HH:mm" style="width: 280px"></i-date-picker>
</i-form-item>
</i-form>
</LayoutFilter>
<i-button type="success" icon="md-add" @click="onCreateRefund">新增退款信息</i-button>
</div>
<LayoutTools class="export-container">
<i-button type="primary" icon="ios-cloud-download" @click="onExport">导出</i-button>
</LayoutTools>
<LayoutTable
:page="page"
:total="total"
:columns="columns"
:data="refundList"
@on-page-change="onPageChange">
<template slot="footer" class="btns">
<i-button type="primary" @click="onBatchDelete">批量删除</i-button>
</template>
</LayoutTable>
</LayoutContent>
</template>
<script>
import qs from 'qs';
export default {
data() {
return {
filter: {
uid: '',
refundType: '',
status: '',
time: []
},
page: 1,
total: 0,
refundList: [{}, {},{}],
columns: [{
type: 'selection',
width: 60,
align: 'center'
}, {
title: '日期',
key: 'time',
width: 80
}, {
title: '订单号',
key: 'orderNum',
width: 80
},
{
title: 'UID',
key: 'UID',
width: 80
}, {
title: '说明',
key: 'description',
width: 90
},
{
title: '退款类型',
key: 'refundType',
width: 90
},
{
title: '金额',
key: 'refundPrice',
width: 90
},
{
title: '退款渠道',
key: 'refundChannel',
width: 80
},{
title: '收款人姓名',
key: 'payeeName',
align:'center',
width: 90
}, {
title: '收款账号',
align: 'center',
key: 'account'
},{
title: '商品名称',
align: 'center',
key: 'itemName',
width: 165
},
{
title: '商品尺码',
key: 'itemSize',
align:'center',
width: 80
}, {
title: '退回地址',
align: 'center',
key: 'address'
},{
title: '处理人',
key: 'operator',
width: 90
},{
title: '状态',
key: 'status',
align:'center',
width: 80
}, {
title: '备注',
align: 'center',
key: 'note'
}, {
title: '操作',
align: 'center',
width: 200,
render: (h, {row}) => {
return (
<div>
<i-button type="success" size="small" onClick={() => this.onEditCoupon(row, true, true)}>退款</i-button>
<i-button type="error" size="small" onClick={() => this.onToRecord(row)}>驳回</i-button>
</div>
);
}
}]
}
},
computed: {
fitlerTime(vm) {
const [startTime, endTime] = vm.filter.time;
}
},
methods: {
onFilter() {},
onClear() {
this.$refs.filterForm.resetFields();
},
onCreateRefund() {
},
onBatchDelete() {},
},
watch: {
'filter.time': function(newVal) {
console.log('-------filter.time-------',newVal);
},
'filter.refundType'(newVal) {
console.log('--------------', newVal);
}
}
}
</script>
<style lang="scss" scoped>
.header-container {
display: flex;
justify-content: space-between;
}
.export-container {
display: flex;
justify-content: flex-end;
}
</style>
\ No newline at end of file
... ...