更新Note
1. 修复购物车,订单和退单后后置任务正确执行 2. 修复佣金记录金额和详情 3. 修复管理端 移动应用界面下订单管理数据统计不准确的问题 4. 修复短信API升级-后台使用一号通 5. 修复用户管理相关问题 6. 修复核销点核销后核销地址不准确 7. 修复资源同步云服务的问题 新增功能 1. 秒杀 a. 秒杀时段配置 b. 秒杀商品维护 2. 财务管理 a. 申请提现 b. 财务记录 i. 充值记录 ii. 资金监控 c. 佣金记录 3. 普通商品显示该商品正在参加的活动信息[秒杀]
This commit is contained in:
@@ -1,13 +1,327 @@
|
||||
<template>
|
||||
<div>佣金记录</div>
|
||||
<div class="divBox">
|
||||
<el-card class="box-card">
|
||||
<div slot="header" class="clearfix">
|
||||
<div class="container">
|
||||
<el-form size="small" label-width="100px" :inline="true">
|
||||
<el-form-item label="关键字:">
|
||||
<el-input v-model="tableFrom.keywords" placeholder="昵称/ID" class="selWidth" size="small" clearable>
|
||||
<el-button slot="append" icon="el-icon-search" size="small" @click="getList(1)" />
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="佣金范围:">
|
||||
<el-col :span="11">
|
||||
<el-input v-model="tableFrom.min" placeholder="请输入最小金额" type="number" clearable></el-input>
|
||||
</el-col>
|
||||
<el-col class="line" :span="2" style="text-align: center;">-</el-col>
|
||||
<el-col :span="11">
|
||||
<el-input v-model="tableFrom.max" placeholder="请输入最大金额" type="number" clearable></el-input>
|
||||
</el-col>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="getList(1)" size="mini">查询</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</div>
|
||||
</div>
|
||||
<el-table
|
||||
v-loading="listLoading"
|
||||
:data="tableData.data"
|
||||
style="width: 100%"
|
||||
size="mini"
|
||||
class="table"
|
||||
highlight-current-row
|
||||
>
|
||||
<el-table-column
|
||||
prop="uid"
|
||||
label="会员ID"
|
||||
width="80"
|
||||
/>
|
||||
<el-table-column
|
||||
prop="nickname"
|
||||
label="昵称"
|
||||
min-width="130"
|
||||
/>
|
||||
<el-table-column
|
||||
prop="totalBrokerage"
|
||||
label="总佣金金额"
|
||||
min-width="120"
|
||||
/>
|
||||
<el-table-column
|
||||
label="账户余额"
|
||||
min-width="100"
|
||||
prop="nowMoney"
|
||||
/>
|
||||
<el-table-column
|
||||
prop="brokerage"
|
||||
label="账户佣金"
|
||||
min-width="200"
|
||||
/>
|
||||
<el-table-column
|
||||
prop="totalExtract"
|
||||
label="到账佣金"
|
||||
min-width="150"
|
||||
/>
|
||||
<el-table-column label="操作" min-width="130" fixed="right">
|
||||
<template slot-scope="scope">
|
||||
<el-button size="small" type="text" @click="handlerOpenInfo(scope.row)">详情</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<div class="block">
|
||||
<el-pagination
|
||||
:page-sizes="[20, 40, 60, 80]"
|
||||
:page-size="tableFrom.limit"
|
||||
:current-page="tableFrom.page"
|
||||
layout="total, sizes, prev, pager, next, jumper"
|
||||
:total="tableData.total"
|
||||
@size-change="handleSizeChange"
|
||||
@current-change="pageChange"
|
||||
/>
|
||||
</div>
|
||||
</el-card>
|
||||
|
||||
<el-dialog
|
||||
title="佣金详情"
|
||||
:visible.sync="Visible"
|
||||
width="900px"
|
||||
v-if="Visible"
|
||||
:before-close="Close">
|
||||
<div>
|
||||
<div class="acea-row row-middle" v-if="userDetail">
|
||||
<div class="dashboard-workplace-header-tip-desc">
|
||||
<span class="dashboard-workplace-header-tip-desc-sp">姓名: {{ userDetail.nickname }}</span>
|
||||
<span class="dashboard-workplace-header-tip-desc-sp">上级推广人: {{ userDetail.spreadName | filterEmpty }}</span>
|
||||
<span class="dashboard-workplace-header-tip-desc-sp">佣金总收入: {{ userDetail.totalBrokerage }}</span>
|
||||
<span class="dashboard-workplace-header-tip-desc-sp">账户余额: {{ userDetail.nowMoney }}</span>
|
||||
<span class="dashboard-workplace-header-tip-desc-sp">创建时间: {{ userDetail.createTime }}</span>
|
||||
</div>
|
||||
</div>
|
||||
<el-divider></el-divider>
|
||||
<el-form size="small" label-position="left" label-width="90px">
|
||||
<el-form-item label="时间选择:" class="width100">
|
||||
<el-radio-group v-model="userTableFrom.dateLimit" type="button" class="mr20" size="small" @change="selectChangeUser(userTableFrom.dateLimit)">
|
||||
<el-radio-button v-for="(item,i) in fromList.fromTxt" :key="i" :label="item.val">{{ item.text }}</el-radio-button>
|
||||
</el-radio-group>
|
||||
<el-date-picker v-model="timeValUser" value-format="yyyy-MM-dd" format="yyyy-MM-dd" size="small" type="daterange" placement="bottom-end" placeholder="自定义时间" style="width: 250px;" @change="onchangeTimeUser" />
|
||||
</el-form-item>
|
||||
<el-form-item label="关键字:">
|
||||
<el-input v-model="userTableFrom.keywords" placeholder="请输入订单id" class="selWidth" size="small">
|
||||
<el-button slot="append" icon="el-icon-search" size="small" @click="getUserList(1)" />
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<el-divider></el-divider>
|
||||
<el-table
|
||||
v-loading="tablistLoading"
|
||||
:data="userDetailData.data"
|
||||
style="width: 100%"
|
||||
size="mini"
|
||||
class="table"
|
||||
highlight-current-row
|
||||
>
|
||||
<el-table-column
|
||||
prop="nickName"
|
||||
label="昵称"
|
||||
width="80"
|
||||
/>
|
||||
<el-table-column
|
||||
prop="number"
|
||||
label="佣金金额"
|
||||
min-width="100"
|
||||
/>
|
||||
<el-table-column
|
||||
prop="createTime"
|
||||
label="获得时间"
|
||||
min-width="120"
|
||||
/>
|
||||
<el-table-column
|
||||
label="备注"
|
||||
min-width="150"
|
||||
prop="mark"
|
||||
/>
|
||||
</el-table>
|
||||
<div class="block">
|
||||
<el-pagination
|
||||
:page-sizes="[10, 20, 30, 40]"
|
||||
:page-size="userTableFrom.limit"
|
||||
:current-page="userTableFrom.page"
|
||||
layout="total, sizes, prev, pager, next, jumper"
|
||||
:total="userDetailData.total"
|
||||
@size-change="handleSizeChange"
|
||||
@current-change="pageChange"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
|
||||
}
|
||||
import { brokerageListApi, monitorListDetailApi } from '@/api/financial'
|
||||
import { fromList } from '@/utils/constants.js'
|
||||
export default {
|
||||
name: 'AccountsCapital',
|
||||
data() {
|
||||
return {
|
||||
timeVal: [],
|
||||
tableData: {
|
||||
data: [],
|
||||
total: 0
|
||||
},
|
||||
userDetailData: {
|
||||
data: [],
|
||||
total: 0
|
||||
},
|
||||
listLoading: true,
|
||||
tableFrom: {
|
||||
min: '',
|
||||
max: '',
|
||||
keywords: '',
|
||||
page: 1,
|
||||
limit: 20
|
||||
},
|
||||
userTableFrom: {
|
||||
page: 1,
|
||||
limit: 10,
|
||||
keywords: '',
|
||||
dateLimit: ''
|
||||
},
|
||||
fromList: fromList,
|
||||
options: [],
|
||||
Visible: false,
|
||||
tablistLoading: false,
|
||||
userDetail: {},
|
||||
timeValUser: []
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
// this.getTypes()
|
||||
this.getList()
|
||||
},
|
||||
methods: {
|
||||
Close(){
|
||||
this.Visible = false
|
||||
},
|
||||
handlerOpenInfo(row){
|
||||
this.userDetail = row
|
||||
this.Visible = true
|
||||
this.tablistLoading = true
|
||||
this.getUserList()
|
||||
},
|
||||
getUserList(num){
|
||||
this.userTableFrom.page = num ? num : this.userTableFrom.page;
|
||||
monitorListDetailApi(this.userDetail.uid, this.userTableFrom).then(res => {
|
||||
this.userDetailData.data = res.list
|
||||
this.userDetailData.total = res.total
|
||||
this.tablistLoading = false
|
||||
}).catch((res) => {
|
||||
this.tablistLoading = false
|
||||
})
|
||||
},
|
||||
selectChangeUser (tab) {
|
||||
this.userTableFrom.dateLimit = tab
|
||||
this.timeValUser = []
|
||||
this.userTableFrom.page = 1;
|
||||
this.getUserList()
|
||||
},
|
||||
// 具体日期
|
||||
onchangeTimeUser(e) {
|
||||
this.timeValUser = e
|
||||
this.userTableFrom.dateLimit = e ? this.timeValUser.join(',') : ''
|
||||
this.userTableFrom.page = 1;
|
||||
this.getUserList()
|
||||
},
|
||||
// 列表
|
||||
getList(num) {
|
||||
this.listLoading = true
|
||||
this.tableFrom.page = num ? num : this.tableFrom.page;
|
||||
brokerageListApi(this.tableFrom).then(res => {
|
||||
this.tableData.data = res.list
|
||||
this.tableData.total = res.total
|
||||
this.listLoading = false
|
||||
}).catch((res) => {
|
||||
this.listLoading = false
|
||||
})
|
||||
},
|
||||
pageChange(page) {
|
||||
this.tableFrom.page = page
|
||||
this.getList()
|
||||
},
|
||||
handleSizeChange(val) {
|
||||
this.tableFrom.limit = val
|
||||
this.getList()
|
||||
},
|
||||
getTypes() {
|
||||
billTypeApi().then(res => {
|
||||
this.options = res.data
|
||||
localStorage.setItem('CashKey', JSON.stringify(res.data))
|
||||
}).catch((res) => {
|
||||
this.$message.error(res.message)
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="sass" scoped>
|
||||
<style scoped lang="scss">
|
||||
.dashboard-workplace {
|
||||
&-header {
|
||||
&-avatar {
|
||||
width: 64px;
|
||||
height: 64px;
|
||||
border-radius: 50%;
|
||||
margin-right: 16px;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
&-tip {
|
||||
width: 82%;
|
||||
display: inline-block;
|
||||
vertical-align: middle;
|
||||
margin-top: -12px;
|
||||
&-title {
|
||||
font-size: 13px;
|
||||
color: #000000;
|
||||
margin-bottom: 12px;
|
||||
}
|
||||
|
||||
&-desc {
|
||||
width: 100%;
|
||||
&-sp {
|
||||
width: 32%;
|
||||
color: #17233D;
|
||||
font-size: 13px;
|
||||
display: inline-block;
|
||||
line-height: 25px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&-extra {
|
||||
.ivu-col {
|
||||
p {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
p:first-child {
|
||||
span:first-child {
|
||||
margin-right: 4px;
|
||||
}
|
||||
|
||||
span:last-child {
|
||||
color: #808695;
|
||||
}
|
||||
}
|
||||
|
||||
p:last-child {
|
||||
font-size: 22px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.selWidth{
|
||||
width: 300px;
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -1,13 +1,351 @@
|
||||
<template>
|
||||
<div>提现申请</div>
|
||||
<div class="divBox">
|
||||
<el-card class="box-card">
|
||||
<div slot="header" class="clearfix">
|
||||
<div class="container">
|
||||
<el-form size="small" label-width="100px">
|
||||
<el-form-item label="时间选择:" class="width100">
|
||||
<el-radio-group v-model="tableFrom.dateLimit" type="button" class="mr20" size="small" @change="selectChange(tableFrom.dateLimit)">
|
||||
<el-radio-button v-for="(item,i) in fromList.fromTxt" :key="i" :label="item.val">{{ item.text }}</el-radio-button>
|
||||
</el-radio-group>
|
||||
<el-date-picker v-model="timeVal" value-format="yyyy-MM-dd" format="yyyy-MM-dd" size="small" type="daterange" placement="bottom-end" placeholder="自定义时间" style="width: 250px;" @change="onchangeTime" />
|
||||
</el-form-item>
|
||||
<el-form-item label="提现状态:">
|
||||
<el-radio-group v-model="tableFrom.status" type="button" size="small" @change="getList(1)">
|
||||
<el-radio-button label="">全部</el-radio-button>
|
||||
<el-radio-button label="0">审核中</el-radio-button>
|
||||
<el-radio-button label="1">已提现</el-radio-button>
|
||||
<el-radio-button label="-1">已拒绝</el-radio-button>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item label="提现方式:">
|
||||
<el-radio-group v-model="tableFrom.extractType" type="button" size="small" @change="getList(1)">
|
||||
<el-radio-button label="">全部</el-radio-button>
|
||||
<el-radio-button label="bank">银行卡</el-radio-button>
|
||||
<el-radio-button label="alipay">支付宝</el-radio-button>
|
||||
<el-radio-button label="weixin">微信</el-radio-button>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item label="关键字:" class="width100">
|
||||
<el-input v-model="tableFrom.keywords" placeholder="微信号/姓名/支付宝账号/银行卡号/失败原因" class="selWidth" size="small">
|
||||
<el-button slot="append" icon="el-icon-search" size="small" @click="getList(1)" />
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</div>
|
||||
<cards-data :cardLists="cardLists"></cards-data>
|
||||
</div>
|
||||
<el-table
|
||||
v-loading="listLoading"
|
||||
:data="tableData.data"
|
||||
style="width: 100%"
|
||||
size="mini"
|
||||
class="table"
|
||||
highlight-current-row
|
||||
>
|
||||
<el-table-column
|
||||
prop="id"
|
||||
label="ID"
|
||||
width="60"
|
||||
/>
|
||||
<el-table-column
|
||||
label="用户信息"
|
||||
min-width="180"
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<p>用户昵称:{{scope.row.nickName}}</p>
|
||||
<p>用户id:{{scope.row.uid}}</p>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="extractPrice"
|
||||
label="提现金额"
|
||||
min-width="120"
|
||||
/>
|
||||
<el-table-column
|
||||
label="提现方式"
|
||||
min-width="100"
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<span>{{ scope.row.extractType | extractTypeFilter }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
label="账号"
|
||||
min-width="200"
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<div v-if="scope.row.extractType=== 'bank'">
|
||||
<p>姓名:{{scope.row.realName }}</p>
|
||||
<p>卡号:{{scope.row.bankCode }}</p>
|
||||
<p>开户行:{{scope.row.bankName }}</p>
|
||||
</div>
|
||||
<span v-else-if="scope.row.extractType=== 'alipay'">
|
||||
<p>姓名:{{scope.row.realName }}</p>
|
||||
<p>支付宝号:{{scope.row.alipayCode }}</p>
|
||||
<div class="acea-row">
|
||||
收款码:
|
||||
<div class="demo-image__preview" v-if="scope.row.qrcodeUrl">
|
||||
<el-image
|
||||
:src="scope.row.qrcodeUrl"
|
||||
:preview-src-list="[scope.row.qrcodeUrl]"
|
||||
/>
|
||||
</div>
|
||||
<div v-else>无</div>
|
||||
</div>
|
||||
</span>
|
||||
<span v-else-if="scope.row.extractType=== 'weixin'">
|
||||
<p>姓名:{{scope.row.realName }}</p>
|
||||
<p>微信号:{{scope.row.wechat }}</p>
|
||||
<div class="acea-row">
|
||||
收款码:
|
||||
<div class="demo-image__preview" v-if="scope.row.qrcodeUrl">
|
||||
<el-image
|
||||
:src="scope.row.qrcodeUrl"
|
||||
:preview-src-list="[scope.row.qrcodeUrl]"
|
||||
/>
|
||||
</div>
|
||||
<div v-else>无</div>
|
||||
</div>
|
||||
</span>
|
||||
<span v-else>已退款</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
label="审核状态"
|
||||
min-width="200"
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<span class="spBlock">{{ scope.row.status | extractStatusFilter }}</span>
|
||||
<span v-if="scope.row.status === -1">拒绝原因:{{scope.row.failMsg}}</span>
|
||||
<template v-if="scope.row.status === 0">
|
||||
<el-button type="danger" icon="el-icon-close" size="mini" @click="onExamine(scope.row.id)">未通过</el-button>
|
||||
<el-button type="primary" icon="el-icon-check" size="mini" @click="ok(scope.row.id)">通过</el-button>
|
||||
</template>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
label="备注"
|
||||
min-width="200"
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<span class="spBlock">{{ scope.row.mark | filterEmpty }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="createTime"
|
||||
label="创建时间"
|
||||
min-width="150"
|
||||
/>
|
||||
<el-table-column label="操作" min-width="80" fixed="right" align="center">
|
||||
<template slot-scope="scope">
|
||||
<el-button type="text" size="small" @click="handleEdit(scope.row)">编辑</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<div class="block">
|
||||
<el-pagination
|
||||
:page-sizes="[20, 40, 60, 80]"
|
||||
:page-size="tableFrom.limit"
|
||||
:current-page="tableFrom.page"
|
||||
layout="total, sizes, prev, pager, next, jumper"
|
||||
:total="tableData.total"
|
||||
@size-change="handleSizeChange"
|
||||
@current-change="pageChange"
|
||||
/>
|
||||
</div>
|
||||
</el-card>
|
||||
|
||||
<!--编辑-->
|
||||
<el-dialog
|
||||
title="编辑"
|
||||
:visible.sync="dialogVisible"
|
||||
width="500px"
|
||||
:before-close="handleClose">
|
||||
<!--微信-->
|
||||
<zb-parser
|
||||
v-if="dialogVisible && (tableFrom.extractType==='weixin' || extractType==='weixin')"
|
||||
:form-id="124"
|
||||
:is-create="isCreate"
|
||||
:edit-data="editData"
|
||||
@submit="handlerSubmit"
|
||||
@resetForm="resetForm"
|
||||
/>
|
||||
<!--支付宝-->
|
||||
<zb-parser
|
||||
v-if="dialogVisible && (tableFrom.extractType==='alipay' || extractType==='alipay')"
|
||||
:form-id="126"
|
||||
:is-create="isCreate"
|
||||
:edit-data="editData"
|
||||
@submit="handlerSubmit"
|
||||
@resetForm="resetForm"
|
||||
/>
|
||||
<!--银行卡-->
|
||||
<zb-parser
|
||||
v-if="dialogVisible && (tableFrom.extractType==='bank' || extractType==='bank')"
|
||||
:form-id="125"
|
||||
:is-create="isCreate"
|
||||
:edit-data="editData"
|
||||
@submit="handlerSubmit"
|
||||
@resetForm="resetForm"
|
||||
/>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
|
||||
}
|
||||
import { applyListApi, applyBalanceApi, applyUpdateApi, applyStatusApi } from '@/api/financial'
|
||||
import { fromList } from '@/utils/constants.js'
|
||||
import cardsData from '@/components/cards/index'
|
||||
import zbParser from '@/components/FormGenerator/components/parser/ZBParser'
|
||||
export default {
|
||||
name: 'AccountsExtract',
|
||||
components: {
|
||||
cardsData,
|
||||
zbParser
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
editData: {},
|
||||
isCreate: 1,
|
||||
dialogVisible: false,
|
||||
timeVal: [],
|
||||
tableData: {
|
||||
data: [],
|
||||
total: 0
|
||||
},
|
||||
listLoading: true,
|
||||
tableFrom: {
|
||||
extractType: '',
|
||||
status: '',
|
||||
dateLimit: '',
|
||||
keywords: '',
|
||||
page: 1,
|
||||
limit: 20
|
||||
},
|
||||
fromList: fromList,
|
||||
cardLists: [],
|
||||
applyId: null,
|
||||
extractType: ''
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this.getList()
|
||||
this.getBalance()
|
||||
},
|
||||
methods: {
|
||||
resetForm(){
|
||||
this.dialogVisible = false;
|
||||
},
|
||||
handleEdit(row) {
|
||||
this.extractType = row.extractType;
|
||||
this.applyId = row.id;
|
||||
this.dialogVisible = true;
|
||||
this.isCreate = 1;
|
||||
this.editData = JSON.parse(JSON.stringify(row));
|
||||
},
|
||||
handlerSubmit(formValue) {
|
||||
formValue.id = this.applyId;
|
||||
formValue.extractType = this.extractType;
|
||||
applyUpdateApi(formValue).then(data => {
|
||||
this.$message.success('编辑成功')
|
||||
this.dialogVisible = false
|
||||
this.getList()
|
||||
})
|
||||
},
|
||||
handleClose() {
|
||||
this.dialogVisible = false
|
||||
this.editData = {}
|
||||
},
|
||||
onExamine(id) {
|
||||
this.$prompt('未通过', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
inputErrorMessage: '请输入原因',
|
||||
inputType: 'textarea',
|
||||
inputValue: '输入信息不完整或有误!',
|
||||
inputPlaceholder: '请输入原因',
|
||||
inputValidator: (value) => {
|
||||
if (!value) {
|
||||
return '请输入原因'
|
||||
}
|
||||
}
|
||||
}).then(({ value }) => {
|
||||
applyStatusApi({ id: id, status: -1, backMessage: value }).then(res => {
|
||||
this.$message({
|
||||
type: 'success',
|
||||
message: '提交成功'
|
||||
})
|
||||
this.getList()
|
||||
})
|
||||
}).catch(() => {
|
||||
this.$message({
|
||||
type: 'info',
|
||||
message: '取消输入'
|
||||
})
|
||||
})
|
||||
},
|
||||
ok(id) {
|
||||
this.$modalSure('审核通过吗').then(() => {
|
||||
applyStatusApi({id: id, status: 1 }).then(() => {
|
||||
this.$message.success('操作成功')
|
||||
this.getList()
|
||||
})
|
||||
})
|
||||
},
|
||||
// 金额
|
||||
getBalance() {
|
||||
applyBalanceApi({dateLimit: this.tableFrom.dateLimit}).then(res => {
|
||||
this.cardLists = [
|
||||
{ name: '待提现金额', count: res.toBeWithdrawn },
|
||||
{ name: '佣金总金额', count: res.commissionTotal },
|
||||
{ name: '已提现金额', count: res.withdrawn },
|
||||
{ name: '未提现金额', count: res.unDrawn }
|
||||
]
|
||||
})
|
||||
},
|
||||
// 选择时间
|
||||
selectChange(tab) {
|
||||
this.timeVal = []
|
||||
this.tableFrom.dateLimit = tab
|
||||
this.tableFrom.page = 1;
|
||||
this.getList();
|
||||
this.getBalance();
|
||||
},
|
||||
// 具体日期
|
||||
onchangeTime(e) {
|
||||
this.timeVal = e
|
||||
this.tableFrom.dateLimit = e ? this.timeVal.join(',') : ''
|
||||
this.tableFrom.page = 1;
|
||||
this.getList();
|
||||
this.getBalance();
|
||||
},
|
||||
// 列表
|
||||
getList(num) {
|
||||
this.listLoading = true
|
||||
this.tableFrom.page = num ? num : this.tableFrom.page;
|
||||
applyListApi(this.tableFrom).then(res => {
|
||||
this.tableData.data = res.list
|
||||
this.tableData.total = res.total
|
||||
this.listLoading = false
|
||||
}).catch(() => {
|
||||
this.listLoading = false
|
||||
})
|
||||
},
|
||||
pageChange(page) {
|
||||
this.tableFrom.page = page
|
||||
this.getList()
|
||||
},
|
||||
handleSizeChange(val) {
|
||||
this.tableFrom.limit = val
|
||||
this.getList()
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="sass" scoped>
|
||||
|
||||
<style scoped>
|
||||
.selWidth{
|
||||
width: 300px;
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -1,13 +1,221 @@
|
||||
<template>
|
||||
<div>充值记录</div>
|
||||
<div class="divBox">
|
||||
<el-card class="box-card">
|
||||
<div slot="header" class="clearfix">
|
||||
<div class="container">
|
||||
<el-form size="small" label-width="100px">
|
||||
<el-form-item label="时间选择:" class="width100">
|
||||
<el-radio-group v-model="tableFrom.dateLimit" type="button" class="mr20" size="small" @change="selectChange(tableFrom.dateLimit)">
|
||||
<el-radio-button v-for="(item,i) in fromList.fromTxt" :key="i" :label="item.val">{{ item.text }}</el-radio-button>
|
||||
</el-radio-group>
|
||||
<el-date-picker v-model="timeVal" value-format="yyyy-MM-dd" format="yyyy-MM-dd" size="small" type="daterange" placement="bottom-end" placeholder="自定义时间" style="width: 250px;" @change="onchangeTime" />
|
||||
</el-form-item>
|
||||
<el-form-item label="是否支付:">
|
||||
<el-radio-group v-model="tableFrom.paid" type="button" size="small" @change="getList(1)">
|
||||
<el-radio-button label="">全部</el-radio-button>
|
||||
<el-radio-button label="1">已支付</el-radio-button>
|
||||
<el-radio-button label="0">未支付</el-radio-button>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item label="关键字:" class="width100">
|
||||
<el-input v-model="tableFrom.keywords" placeholder="微信昵称/姓名/订单号" class="selWidth" size="small">
|
||||
<el-button slot="append" icon="el-icon-search" size="small" @click="getList(1)" />
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</div>
|
||||
<cards-data :card-lists="cardLists" />
|
||||
</div>
|
||||
<el-table
|
||||
v-loading="listLoading"
|
||||
:data="tableData.data"
|
||||
style="width: 100%"
|
||||
size="mini"
|
||||
class="table"
|
||||
highlight-current-row
|
||||
>
|
||||
<el-table-column
|
||||
prop="id"
|
||||
label="ID"
|
||||
width="60"
|
||||
/>
|
||||
<el-table-column
|
||||
label="头像"
|
||||
min-width="80"
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<div class="demo-image__preview">
|
||||
<el-image
|
||||
:src="scope.row.avatar"
|
||||
:preview-src-list="[scope.row.avatar]"
|
||||
/>
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="nickname"
|
||||
label="用户昵称"
|
||||
min-width="130"
|
||||
/>
|
||||
<el-table-column
|
||||
prop="orderId"
|
||||
label="订单号"
|
||||
min-width="180"
|
||||
/>
|
||||
<el-table-column
|
||||
sortable
|
||||
label="支付金额"
|
||||
min-width="120"
|
||||
:sort-method="(a,b)=>{return a.price - b.price}"
|
||||
prop="price"
|
||||
/>
|
||||
<el-table-column
|
||||
sortable
|
||||
label="赠送金额"
|
||||
min-width="120"
|
||||
prop="givePrice"
|
||||
:sort-method="(a,b)=>{return a.givePrice - b.givePrice}"
|
||||
/>
|
||||
<el-table-column
|
||||
label="是否支付"
|
||||
min-width="80"
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<span class="spBlock">{{ scope.row.paid | payStatusFilter }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
label="充值类型"
|
||||
min-width="80"
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<span>{{ scope.row.rechargeType | rechargeTypeFilter }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
label="支付时间"
|
||||
min-width="150"
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<span class="spBlock">{{ scope.row.payTime || '无' }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" min-width="120" fixed="right" align="center">
|
||||
<template slot-scope="scope">
|
||||
<el-button type="text" size="small" @click="handleDelete(scope.row)" v-if="!scope.row.paid">删除</el-button>
|
||||
<el-button type="text" size="small" @click="handleRefund(scope.row)" v-else>退款</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<div class="block">
|
||||
<el-pagination
|
||||
:page-sizes="[20, 40, 60, 80]"
|
||||
:page-size="tableFrom.limit"
|
||||
:current-page="tableFrom.page"
|
||||
layout="total, sizes, prev, pager, next, jumper"
|
||||
:total="tableData.total"
|
||||
@size-change="handleSizeChange"
|
||||
@current-change="pageChange"
|
||||
/>
|
||||
</div>
|
||||
</el-card>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
import { topUpLogListApi, balanceApi, topUpLogDeleteApi } from '@/api/financial'
|
||||
import cardsData from '@/components/cards/index'
|
||||
import { fromList } from '@/utils/constants.js'
|
||||
export default {
|
||||
name: 'AccountsBill',
|
||||
components: { cardsData },
|
||||
data() {
|
||||
return {
|
||||
cardLists: [],
|
||||
timeVal: [],
|
||||
tableData: {
|
||||
data: [],
|
||||
total: 0
|
||||
},
|
||||
listLoading: true,
|
||||
tableFrom: {
|
||||
paid: '',
|
||||
dateLimit: '',
|
||||
keywords: '',
|
||||
page: 1,
|
||||
limit: 20
|
||||
},
|
||||
fromList: fromList
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this.getList()
|
||||
this.getStatistics()
|
||||
},
|
||||
methods: {
|
||||
handleRefund(row) {
|
||||
|
||||
}
|
||||
},
|
||||
handleDelete(row, idx) {
|
||||
this.$modalSure().then(() => {
|
||||
topUpLogDeleteApi( {id:row.id} ).then(() => {
|
||||
this.$message.success('删除成功')
|
||||
this.getList(this.tableFrom.page)
|
||||
})
|
||||
})
|
||||
},
|
||||
// 选择时间
|
||||
selectChange(tab) {
|
||||
this.tableFrom.dateLimit = tab
|
||||
this.timeVal = []
|
||||
this.tableFrom.page = 1;
|
||||
this.getList()
|
||||
},
|
||||
// 具体日期
|
||||
onchangeTime(e) {
|
||||
this.timeVal = e
|
||||
this.tableFrom.dateLimit = e ? this.timeVal.join(',') : ''
|
||||
this.tableFrom.page = 1;
|
||||
this.getList()
|
||||
},
|
||||
// 列表
|
||||
getList(num) {
|
||||
this.listLoading = true
|
||||
this.tableFrom.page = num ? num : this.tableFrom.page;
|
||||
topUpLogListApi(this.tableFrom).then(res => {
|
||||
this.tableData.data = res.list
|
||||
this.tableData.total = res.total
|
||||
this.listLoading = false
|
||||
}).catch(() => {
|
||||
this.listLoading = false
|
||||
})
|
||||
},
|
||||
pageChange(page) {
|
||||
this.tableFrom.page = page
|
||||
this.getList()
|
||||
},
|
||||
handleSizeChange(val) {
|
||||
this.tableFrom.limit = val
|
||||
this.getList()
|
||||
},
|
||||
// 统计
|
||||
getStatistics() {
|
||||
balanceApi().then(res => {
|
||||
const stat = res
|
||||
this.cardLists = [
|
||||
{ name: '充值总金额', count: stat.totalPayPrice, icon: 'el-icon-s-goods' },
|
||||
{ name: '充值退款金额', count: stat.totalRefundPrice, icon: 'el-icon-s-order' },
|
||||
{ name: '小程序充值金额', count: stat.totalRoutinePrice, icon: 'el-icon-s-cooperation' },
|
||||
{ name: '公众号充值金额', count: stat.totalWxPrice, icon: 'el-icon-s-finance' }
|
||||
]
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="sass" scoped>
|
||||
|
||||
<style scoped>
|
||||
.selWidth{
|
||||
width: 300px;
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -1,13 +1,165 @@
|
||||
<template>
|
||||
<div>资金监控</div>
|
||||
<div class="divBox">
|
||||
<el-card class="box-card">
|
||||
<div slot="header" class="clearfix">
|
||||
<div class="container">
|
||||
<el-form size="small" label-width="100px">
|
||||
<el-form-item label="时间选择:" class="width100">
|
||||
<el-radio-group v-model="tableFrom.dateLimit" type="button" class="mr20" size="small" @change="selectChange(tableFrom.dateLimit)">
|
||||
<el-radio-button v-for="(item,i) in fromList.fromTxt" :key="i" :label="item.val">{{ item.text }}</el-radio-button>
|
||||
</el-radio-group>
|
||||
<el-date-picker v-model="timeVal" value-format="yyyy-MM-dd" format="yyyy-MM-dd" size="small" type="daterange" placement="bottom-end" placeholder="自定义时间" style="width: 250px;" @change="onchangeTime" />
|
||||
</el-form-item>
|
||||
<el-form-item label="明细类型:">
|
||||
<el-select class="selWidth" v-model="tableFrom.type" filterable clearable placeholder="请选择" @change="getList(1)">
|
||||
<el-option
|
||||
v-for="(item, index) in optionList"
|
||||
:key="index"
|
||||
:label="item.title"
|
||||
:value="item.type"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="关键字:" class="width100">
|
||||
<el-input v-model="tableFrom.keywords" placeholder="微信昵称/ID" class="selWidth" size="small">
|
||||
<el-button slot="append" icon="el-icon-search" size="small" @click="getList(1)" />
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</div>
|
||||
</div>
|
||||
<el-table
|
||||
v-loading="listLoading"
|
||||
:data="tableData.data"
|
||||
style="width: 100%"
|
||||
size="mini"
|
||||
class="table"
|
||||
highlight-current-row
|
||||
>
|
||||
<el-table-column
|
||||
prop="uid"
|
||||
label="会员ID"
|
||||
width="80"
|
||||
/>
|
||||
<el-table-column
|
||||
prop="nickName"
|
||||
label="昵称"
|
||||
min-width="130"
|
||||
/>
|
||||
<el-table-column
|
||||
prop="number"
|
||||
label="金额"
|
||||
sortable
|
||||
:sort-method="(a,b)=>{return a.number - b.number}"
|
||||
min-width="120"
|
||||
/>
|
||||
<el-table-column
|
||||
label="明细类型"
|
||||
min-width="100"
|
||||
prop="title"
|
||||
/>
|
||||
<el-table-column
|
||||
prop="mark"
|
||||
label="备注"
|
||||
min-width="200"
|
||||
/>
|
||||
<el-table-column
|
||||
prop="createTime"
|
||||
label="创建时间"
|
||||
min-width="150"
|
||||
/>
|
||||
</el-table>
|
||||
<div class="block">
|
||||
<el-pagination
|
||||
:page-sizes="[20, 40, 60, 80]"
|
||||
:page-size="tableFrom.limit"
|
||||
:current-page="tableFrom.page"
|
||||
layout="total, sizes, prev, pager, next, jumper"
|
||||
:total="tableData.total"
|
||||
@size-change="handleSizeChange"
|
||||
@current-change="pageChange"
|
||||
/>
|
||||
</div>
|
||||
</el-card>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
|
||||
}
|
||||
import { monitorListApi, monitorListOptionApi } from '@/api/financial'
|
||||
import { fromList } from '@/utils/constants.js'
|
||||
export default {
|
||||
name: 'AccountsCapital',
|
||||
data() {
|
||||
return {
|
||||
timeVal: [],
|
||||
tableData: {
|
||||
data: [],
|
||||
total: 0
|
||||
},
|
||||
listLoading: true,
|
||||
tableFrom: {
|
||||
type: '',
|
||||
dateLimit: '',
|
||||
keywords: '',
|
||||
page: 1,
|
||||
limit: 20
|
||||
},
|
||||
categoryId: '',
|
||||
fromList: fromList,
|
||||
optionList: []
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
// this.getTypes()
|
||||
this.getOptionList()
|
||||
this.getList()
|
||||
},
|
||||
methods: {
|
||||
getOptionList() {
|
||||
monitorListOptionApi().then(res => {
|
||||
this.optionList = res
|
||||
})
|
||||
},
|
||||
selectChange(tab) {
|
||||
this.tableFrom.dateLimit = tab
|
||||
this.timeVal = []
|
||||
this.tableFrom.page = 1;
|
||||
this.getList()
|
||||
},
|
||||
// 具体日期
|
||||
onchangeTime(e) {
|
||||
this.timeVal = e
|
||||
this.tableFrom.dateLimit = e ? this.timeVal.join(',') : ''
|
||||
this.tableFrom.page = 1;
|
||||
this.getList()
|
||||
},
|
||||
// 列表
|
||||
getList(num) {
|
||||
this.listLoading = true
|
||||
this.tableFrom.page = num ? num : this.tableFrom.page;
|
||||
monitorListApi(this.tableFrom).then(res => {
|
||||
this.tableData.data = res.list
|
||||
this.tableData.total = res.total
|
||||
this.listLoading = false
|
||||
}).catch((res) => {
|
||||
this.$message.error(res.message)
|
||||
this.listLoading = false
|
||||
})
|
||||
},
|
||||
pageChange(page) {
|
||||
this.tableFrom.page = page
|
||||
this.getList()
|
||||
},
|
||||
handleSizeChange(val) {
|
||||
this.tableFrom.limit = val
|
||||
this.getList()
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="sass" scoped>
|
||||
|
||||
<style scoped>
|
||||
.selWidth{
|
||||
width: 300px;
|
||||
}
|
||||
</style>
|
||||
|
||||
Reference in New Issue
Block a user