Files
huangguo_admin/src/views/tran/recharge/index.vue
T
2025-06-10 17:11:41 +07:00

367 lines
16 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<template>
<div class="pf-warpper">
<el-row class="table-form">
<el-form :inline="true" :model="searchData" class="form-inline" size="mini">
<el-form-item>
<el-input @clear="onClear('userId')" clearable placeholder="请输入用户ID" v-model="searchData.userId" />
</el-form-item>
<el-form-item>
<el-input @clear="onClear('uuid')" clearable placeholder="请输入设备ID" v-model="searchData.uuid" />
</el-form-item>
<el-form-item>
<el-select @clear="onClear('devType')" clearable placeholder="请选择设备类型" v-model="searchData.devType">
<el-option :key="item.value" :label="item.label" :value="item.value" v-for="item in devTypeList" />
</el-select>
</el-form-item>
<el-form-item>
<el-select @clear="onClear('rchgUse')" clearable placeholder="请选择充值用途" v-model="searchData.rchgUse">
<el-option :key="item.value" :label="item.label" :value="item.value" v-for="item in rchgUseList" />
</el-select>
</el-form-item>
<el-form-item>
<el-input @clear="onClear('tradeNo')" clearable placeholder="请输入订单号" v-model="searchData.tradeNo" />
</el-form-item>
<el-form-item>
<el-input @clear="onClear('oid')" clearable placeholder="请输入第三方订单号" v-model="searchData.oid" />
</el-form-item>
<el-form-item>
<el-input @clear="onClear('phoneNo')" clearable placeholder="请输入手机号" v-model="searchData.phoneNo" />
</el-form-item>
<el-form-item>
<el-input @clear="onClear('ipAddr')" clearable placeholder="请输入IP地址" v-model="searchData.ipAddr" />
</el-form-item>
<el-form-item>
<el-select @clear="onClear('payMode')" clearable placeholder="请选择支付模式" v-model="searchData.payMode">
<el-option :key="item.value" :label="item.label" :value="item.value" v-for="item in payModeList" />
</el-select>
</el-form-item>
<el-form-item>
<el-select @clear="onClear('sysType')" clearable placeholder="请选择系统类型" v-model="searchData.sysType" filterable>
<el-option :key="item.value" :label="item.label" :value="item.value" v-for="item in sysTypeList" />
</el-select>
</el-form-item>
<el-form-item>
<el-select @clear="onClear('isSwell')" clearable placeholder="请选择是否膨胀" v-model="searchData.isSwell" filterable>
<el-option :key="true" label="是" :value="true" />
<el-option :key="false" label="否" :value="false" />
</el-select>
</el-form-item>
<el-form-item>
<el-input v-model="searchData.payChannel" clearable placeholder="请输入支付渠道" @clear="onClear('payChannel')" />
</el-form-item>
<el-form-item>
<el-select @clear="onClear('status')" clearable placeholder="请选择充值状态" v-model="searchData.status">
<el-option :key="item.value" :label="item.label" :value="item.value" v-for="item in statusList" />
</el-select>
</el-form-item>
<el-form-item label="订单生成">
<el-date-picker
:default-time="['00:00:00', '23:59:59']"
end-placeholder="结束日期"
range-separator=""
start-placeholder="开始日期"
type="datetimerange"
v-model="timeG"
value-format="yyyy-MM-ddTHH:mm:ss+08:00"/>
</el-form-item>
<el-form-item label="订单支付">
<el-date-picker
:default-time="['00:00:00', '23:59:59']"
end-placeholder="结束日期"
range-separator=""
start-placeholder="开始日期"
type="datetimerange"
v-model="timeW"
value-format="yyyy-MM-ddTHH:mm:ss+08:00"/>
</el-form-item>
<el-form-item>
<el-button @click="onSearch()" icon="el-icon-search" plain type="primary">搜索</el-button>
<!-- <el-button @click="handleExport" icon="el-icon-download" plain type="primary">导出</el-button> -->
<el-button @click="refreshView" icon="el-icon-refresh" plain type="info">刷新</el-button>
</el-form-item>
<el-form-item style="float: right" label-width="15px">
充值总金额<span style="color: red">{{ totalRchgAmount }}</span>
</el-form-item>
</el-form>
</el-row>
<el-row>
<el-col>
<el-table :data="tableData" element-loading-text="拼命加载中" v-loading="loading" @sort-change="sortChange" border height="700" highlight-current-row style="width: 100%">
<el-table-column align="center" fixed="left" label="用户id">
<template slot-scope="scope">{{ scope.row.userId }}</template>
</el-table-column>
<el-table-column align="center" fixed="left" label="用户名" width="150">
<template slot-scope="scope">{{ scope.row.userName }}</template>
</el-table-column>
<el-table-column align="center" fixed="left" label="卡片名称" width="150">
<template slot-scope="scope">{{ scope.row.cardName }}</template>
</el-table-column>
<el-table-column align="center" label="手机号" width="120">
<template slot-scope="scope">{{ scope.row.phoneNo }}</template>
</el-table-column>
<el-table-column align="center" label="订单产生时间" width="160">
<template slot-scope="scope">{{ scope.row.createdAt | BeiJingTime }}</template>
</el-table-column>
<el-table-column align="center" label="订单完成日期" sortable width="160">
<template slot-scope="scope">{{ scope.row.finishedAt | BeiJingTime }}</template>
</el-table-column>
<el-table-column align="center" label="充值用途">
<template slot-scope="scope">{{ scope.row.rchgUse | changeRchgUse }}</template>
</el-table-column>
<el-table-column align="center" label="订单号" width="240">
<template slot-scope="scope">{{ scope.row.tradeNo }}</template>
</el-table-column>
<el-table-column align="center" label="第三方订单号" width="240">
<template slot-scope="scope">{{ scope.row.oid }}</template>
</el-table-column>
<el-table-column align="center" label="支付模式">
<template slot-scope="scope">{{ scope.row.payMode | changepayMode }}</template>
</el-table-column>
<el-table-column align="center" label="支付渠道" width="150">
<template slot-scope="scope">{{ scope.row.payChannel }}</template>
</el-table-column>
<el-table-column align="center" label="充值金额" sortable width="120">
<template slot-scope="scope">{{ scope.row.amount | changeMoneyYuan }}</template>
</el-table-column>
<el-table-column align="center" label="实际到账金额" width="120">
<template slot-scope="scope">{{ scope.row.realAmount | changeMoneyYuan }}</template>
</el-table-column>
<el-table-column align="center" label="状态">
<template slot-scope="scope">{{ scope.row.status | changestatus }}</template>
</el-table-column>
<el-table-column align="center" label="是否膨胀" width="100">
<template slot-scope="scope">
<el-button :type="scope.row.isSwell ? 'success' : 'danger'" plain size="mini">{{ scope.row.isSwell ? "是" : "否" }}</el-button>
</template>
</el-table-column>
<el-table-column align="center" label="游戏划拨订单" width="220">
<template slot-scope="scope">{{ scope.row.trfOrder }}</template>
</el-table-column>
<el-table-column align="center" label="上下分处理状态" width="120">
<template slot-scope="scope">{{ scope.row.trfStatus | changeRtfstatus }}</template>
</el-table-column>
<el-table-column align="center" label="系统类型">
<template slot-scope="scope">{{ scope.row.sysType | changeSysType }}</template>
</el-table-column>
<el-table-column align="center" label="商区码" width="150">
<template slot-scope="scope">{{ scope.row.districtCode }}</template>
</el-table-column>
<el-table-column align="center" label="充值对象">
<template slot-scope="scope">{{ scope.row.rchgFor }}</template>
</el-table-column>
<el-table-column align="center" label="赠送金额">
<template slot-scope="scope">{{ scope.row.backGiftVal | changeMoneyYuan }}</template>
</el-table-column>
<el-table-column align="center" label="设备类型" prop="devType" width="100">
<template slot-scope="scope">{{ scope.row.devType }}</template>
</el-table-column>
<el-table-column align="center" label="是否是直推用户" width="120">
<template slot-scope="scope">{{ scope.row.isDirect ? '是' : '不是' }}</template>
</el-table-column>
<el-table-column align="center" label="ip地址" width="120">
<template slot-scope="scope">{{ scope.row.ipAddr }}</template>
</el-table-column>
<el-table-column align="center" label="支付账号">
<template slot-scope="scope">{{ scope.row.payAcc }}</template>
</el-table-column>
<el-table-column align="center" label="代充平台支付凭证" width="150">
<template slot-scope="scope">
<ShowImg style="width: 40px; height: 40px; margin: 0 auto; line-height: 40px" :urls="scope.row.proof"></ShowImg>
<!-- type="daichong" -->
</template>
</el-table-column>
<el-table-column align="center" label="渠道平台充值类型">
<template slot-scope="scope">{{ scope.row.platPayMode }}</template>
</el-table-column>
<el-table-column align="center" label="费率">
<template slot-scope="scope">{{ scope.row.payRate }}</template>
</el-table-column>
<el-table-column align="center" label="用户折扣卡ID" width="100">
<template slot-scope="scope">{{ scope.row.userDiscountCardId }}</template>
</el-table-column>
<el-table-column align="center" label="充值使用ID" width="100">
<template slot-scope="scope">{{ scope.row.rchgUseId }}</template>
</el-table-column>
<el-table-column align="center" label="商人Id">
<template slot-scope="scope">{{ scope.row.traderId }}</template>
</el-table-column>
<el-table-column align="center" label="推广序列">
<template slot-scope="scope">{{ scope.row.promSeqe }}</template>
</el-table-column>
<el-table-column align="center" label="支付链接" width="450">
<template slot-scope="scope">
<el-button slot="reference" @click="doCopy(scope.row.payUrl)">复制链接</el-button>
</template>
</el-table-column>
<el-table-column align="center" label="支付链接模式" width="100">
<template slot-scope="scope">{{ scope.row.payUrlMode }}</template>
</el-table-column>
<el-table-column align="center" label="备注" width="100" show-overflow-tooltip="">
<template slot-scope="scope">{{ scope.row.remarks }}</template>
</el-table-column>
<el-table-column align="center" label="通知第三方上分情况状态" width="200">
<template slot-scope="scope">{{ scope.row.traderNotify }}</template>
</el-table-column>
<el-table-column align="center" label="第三方支付时间" width="160">
<template slot-scope="scope">{{ scope.row.paymentAt | BeiJingTime }}</template>
</el-table-column>
<el-table-column align="center" label="订单修改日期" width="160">
<template slot-scope="scope">{{ scope.row.updatedAt | BeiJingTime }}</template>
</el-table-column>
<el-table-column align="center" label="第三方下单成功时间" width="160">
<template slot-scope="scope">{{ scope.row.progressAt | BeiJingTime }}</template>
</el-table-column>
<el-table-column align="center" label="设备id" width="350">
<template slot-scope="scope">{{ scope.row.uuid }}</template>
</el-table-column>
</el-table>
</el-col>
</el-row>
<!-- 分页 -->
<div class="table-pagination">
<el-pagination
:current-page="searchData.pageNum"
:page-size="searchData.pageSize"
:page-sizes="[10, 20, 30, 50, 100]"
:total="totals"
@current-change="handleCurrentChange"
@size-change="handleSizeChange"
layout="total, sizes, prev, pager, next, jumper"/>
</div>
</div>
</template>
<script>
import { devTypeList, payModeList, statusList, rchgUseList, rcgTypeList, sysTypeList } from '@/filters/tran/recharge'
import { getRechargeList } from '@/api/tran/recharge'
import ShowImg from '@/components/ShowImg/index.vue'
export default {
name: 'Recharge',
components: {
ShowImg
},
data() {
return {
devTypeList: devTypeList(),
payModeList: payModeList(),
statusList: statusList(),
rchgUseList: rchgUseList(),
rcgTypeList: rcgTypeList(),
sysTypeList: sysTypeList(),
loading: true, // 列表加载状态
totals: 0, // 数据总条数
totalRchgAmount: undefined,
timeG: undefined,
timeW: undefined,
searchData: {
// 表单参数
userId: undefined, // 用户id
uuid: undefined, // 设备id
devType: null, // 设备类型
tradeNo: undefined, // 订单号
oid: undefined, // 第三方返回,核对账单信息
phoneNo: undefined, // 手机号
payMode: undefined, // 支付模式
status: undefined, // 订单处理状态
finishAtsort: undefined, // 交易时间 -1--倒序 1--正序
amountSort: undefined, // 金额 -1--倒序 1--正序
startAt: undefined, // 开始时间
endAt: undefined, // 结束时间
payStartAt: undefined, // 订单支付 时间
rchgUse: undefined,
rcgTypeList: undefined,
pageNum: 1,
pageSize: 20
},
tableData: []
}
},
mounted() {
this.onSubmit()
},
methods: {
doCopy(str) {
this.$copyText(str).then(() => {
this.$notify({
type: 'success',
message: '複製成功,趕快去分享吧。'
})
})
},
// TODO:请求充值列表数据
onSubmit() {
this.loading = true
if (this.timeG) {
this.searchData.startAt = this.timeG[0]
this.searchData.endAt = this.timeG[1]
} else {
this.searchData.startAt = undefined
this.searchData.endAt = undefined
}
if (this.timeW) {
this.searchData.payStartAt = this.timeW[0]
this.searchData.payEndAt = this.timeW[1]
} else {
this.searchData.payStartAt = undefined
this.searchData.payEndAt = undefined
}
getRechargeList(this.searchData).then(res => {
if (res.code === 200) {
this.tableData = res.data.orders
this.totals = res.data.totalCount
this.totalRchgAmount = res.data.totalRchgAmount / 100
} else {
this.tableData = []
this.totals = 0
this.$message.error('请求列表失败')
}
this.loading = false
})
},
onSearch() {
this.searchData.pageNum = 1
this.searchData.pageSize = 20
this.onSubmit()
},
// 升序降序
sortChange(columns) {
if (columns.order === 'ascending') {
this.searchData.finishAtsort = -1
this.searchData.amountSort = 1
} else if (columns.order === 'descending') {
this.searchData.finishAtsort = 1
this.searchData.amountSort = -1
}
this.onSubmit()
},
// 刷新
refreshView() {
this.searchData.pageNum = 1
this.searchData.pageSize = 20
this.onSubmit()
},
// 清理搜索框
onClear(key) {
this.searchData[key] = undefined
this.onSubmit()
},
// 切换列表条数
handleSizeChange(val) {
this.searchData.pageSize = Number(val)
this.onSubmit()
},
// 切换列表页码
handleCurrentChange(val) {
this.searchData.pageNum = Number(val)
this.onSubmit()
}
}
}
</script>