更新Note

1. 修复购物车,订单和退单后后置任务正确执行
	2. 修复佣金记录金额和详情
	3. 修复管理端 移动应用界面下订单管理数据统计不准确的问题
	4. 修复短信API升级-后台使用一号通
	5. 修复用户管理相关问题
	6. 修复核销点核销后核销地址不准确
	7. 修复资源同步云服务的问题
新增功能
	1. 秒杀
		a. 秒杀时段配置
		b. 秒杀商品维护
	2. 财务管理
		a. 申请提现
		b. 财务记录
			i. 充值记录
			ii. 资金监控
		c. 佣金记录
	3. 普通商品显示该商品正在参加的活动信息[秒杀]
This commit is contained in:
stivepeim
2020-11-05 16:21:06 +08:00
parent 912cf6403e
commit 6827148d7a
574 changed files with 45105 additions and 4899 deletions

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>