Files
jsowell-charger-web/jsowell-ui/src/views/financial/financeDetail.vue

535 lines
18 KiB
Vue
Raw Normal View History

<template>
2025-02-20 08:23:38 +08:00
<div class="wp">
<div class="header">
2025-02-21 15:10:21 +08:00
<div class="text-gray" v-if="showAccountList" v-for="(item, index) in settleAccountList" :key="index" >
2025-02-20 08:23:38 +08:00
<h3>运营商信息</h3>
<div>
<p>运营商</p>
2025-02-21 08:35:21 +08:00
<span>{{ merchant }}</span>
2025-02-20 08:23:38 +08:00
</div>
<div>
<p>商家性质</p>
2025-02-21 08:35:21 +08:00
<span>{{ merchantNature === "1" ? "对公" : "对私" }}</span>
2025-02-20 08:23:38 +08:00
</div>
<div>
<p>开户行名称</p>
2025-02-21 08:35:21 +08:00
<span>{{ cityBankCode(item.bankCode) }}</span>
2025-02-20 08:23:38 +08:00
</div>
<div>
<p>收款卡号</p>
2025-02-21 08:35:21 +08:00
<span>{{ item.cardId }}</span>
</div>
2025-02-20 08:23:38 +08:00
<div>
<p>预留手机号</p>
2025-02-21 08:35:21 +08:00
<span>{{ item.telNo }}</span>
</div>
</div>
<div class="text-gray" v-else>
<h3>运营商信息</h3>
<div>
<p>运营商</p>
<span>{{ merchant }}</span>
</div>
<div>
<p>商家性质</p>
<span>{{ merchantNature === "1" ? "对公" : "对私" }}</span>
</div>
<div>
<p>开户行名称</p>
<span>{{ cityBankCode(adapayCorpMember.bankCode) }}</span>
</div>
<div>
<p>收款卡号</p>
<span>{{ adapayCorpMember.cardNo }}</span>
</div>
<div>
<p>预留手机号</p>
<span>{{ adapayCorpMember.legalMp }}</span>
</div>
</div>
2025-02-20 08:23:38 +08:00
<div class="text-gray">
<h3>分润数据</h3>
<div>
<p>参与分润金额</p>
<span style="color: #2563eb">¥ 153,426.82</span>
</div>
<div>
<p>分出总金额</p>
<span style="color: #16a34a">¥ 98,142.35</span>
</div>
<div>
<p>分润订单数</p>
<span>286</span>
</div>
</div>
2025-02-20 08:23:38 +08:00
<div class="text-gray">
<h3>金额信息</h3>
<div>
<p>电费金额</p>
2025-02-21 15:10:21 +08:00
<span>¥ {{ merchantOrderReport.electricityAmount ? merchantOrderReport.electricityAmount.toFixed(2) : '0.00'}}</span>
2023-08-31 16:04:44 +08:00
</div>
2025-02-20 08:23:38 +08:00
<div>
<p>交易金额</p>
2025-02-21 15:10:21 +08:00
<span>¥ {{ merchantOrderReport.tradeAmount? merchantOrderReport.tradeAmount.toFixed(2) : '0.00'}}</span>
2024-01-06 09:50:40 +08:00
</div>
2025-02-20 08:23:38 +08:00
<div>
<p>虚拟金额</p>
2025-02-21 15:10:21 +08:00
<span>¥ {{merchantOrderReport.virtualAmount? merchantOrderReport.virtualAmount.toFixed(2): '0.00' }}</span>
2025-02-20 08:23:38 +08:00
</div>
<div>
<p>服务费金额</p>
2025-02-21 15:10:21 +08:00
<span>¥ {{ merchantOrderReport.serviceAmount?merchantOrderReport.serviceAmount.toFixed(2) : '0.00'}}</span>
2025-02-20 08:23:38 +08:00
</div>
<div>
<p>交易手续费</p>
2025-02-21 15:10:21 +08:00
<span>¥ {{merchantOrderReport.tradeFee? merchantOrderReport.tradeFee.toFixed(2): '0.00' }}</span>
2025-02-20 08:23:38 +08:00
</div>
</div>
<div class="text-gray">
<h3>提现信息</h3>
<div>
<p>总结算金额</p>
2025-02-21 15:10:21 +08:00
<span>¥ {{ merchantOrderReport.totalAmount?merchantOrderReport.totalAmount.toFixed(2): '0.00' }}</span>
2025-02-20 08:23:38 +08:00
</div>
<div>
<p>可提现金额</p>
2025-02-21 15:10:21 +08:00
<span style="color: #2563eb">¥ {{ adapayMember.avlBalance?adapayMember.avlBalance.toFixed(2) : '0.00'}}</span>
2025-02-20 08:23:38 +08:00
</div>
<div>
<p>总提现金额</p>
2025-02-21 08:35:21 +08:00
<span style="color: #16a34a">
2025-02-21 15:10:21 +08:00
¥ {{ adapayMember.totalWithdraw?adapayMember.totalWithdraw.toFixed(2) : '0.00'}}
2025-02-21 08:35:21 +08:00
</span>
2025-02-20 08:23:38 +08:00
</div>
<p class="concentrate">已成功提现到绑定银行卡的金额</p>
</div>
2025-02-20 08:23:38 +08:00
</div>
2025-02-21 08:35:21 +08:00
<div class="inquire">
2025-02-21 15:10:21 +08:00
<el-form :model="queryParams" ref="queryForm" size="small" inline label-width="68px" >
2025-02-21 08:35:21 +08:00
<el-form-item label="日期" prop="tradeDate">
2025-02-21 15:10:21 +08:00
<el-date-picker v-model="createTimeRange" style="width: 240px" value-format="yyyy-MM-dd" :default-time="['00:00:00', '23:59:59']" type="daterange" range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期" :clearable="false" ></el-date-picker>
2025-02-21 08:35:21 +08:00
</el-form-item>
<el-form-item>
2025-02-21 15:10:21 +08:00
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
</el-form-item>
</el-form>
<el-form>
<el-form-item>
<el-button style="height: 40px" type="success" icon="el-icon-s-claim" @click="already">提现记录</el-button >
2025-02-21 08:35:21 +08:00
</el-form-item>
</el-form>
</div>
<div class="container">
<!-- <el-table :data="reportList"> -->
<el-table :data="temporary">
<el-table-column label="日期" align="center" prop="tradeDate" />
<el-table-column label="账单状态" align="center" prop="billStatus">
<template slot-scope="scope">
<dict-tag :options="dict.type.bill_status" :value="scope.row.billStatus" />
</template>
</el-table-column>
<el-table-column label="应收金额(元)" align="center" prop="receivableAmount" />
2025-02-21 15:10:21 +08:00
<el-table-column label="可提现金额(元)" align="center" prop="withdrawAbleAmount" />
<el-table-column label="交易手续费(元)" align="center" prop="feeAmount"/>
2025-02-21 08:35:21 +08:00
<el-table-column label="分润金额(元)" align="center" prop="aaa" />
<el-table-column label="实际到账金额(元)" align="center" prop="bbb" />
<el-table-column label="提现订单号" align="center" prop="withdrawCode" />
<el-table-column label="提现申请时间" align="center" prop="applicationTime" />
<el-table-column label="操作" align="center">
<template slot-scope="scope">
<span class="link-type" @click="goTradeDate(scope)">订单流水</span>
2025-02-21 15:10:21 +08:00
<span class="link-type" style="margin-left: 10px" @click="getProfitSharing(scope)">分润流水</span>
2025-02-21 08:35:21 +08:00
</template>
</el-table-column>
</el-table>
2025-02-21 15:10:21 +08:00
<pagination v-show="reportTotal > 0" :total="reportTotal" :page.sync="reportQueryParams.pageNum" :limit.sync="reportQueryParams.pageSize"
@pagination="getList" />
2025-02-21 08:35:21 +08:00
</div>
2025-02-21 15:10:21 +08:00
<!-- 提现记录 -->
<el-dialog title="提现记录" :visible.sync="recordDialog">
<el-table :data="payoutInformation" style="width: 100%">
<el-table-column label="申请时间" align="center" property="applicationTime" />
<el-table-column label="提现编号" align="center" property="withdrawCode" />
<el-table-column label="状态" align="center" property="statusDesc" />
<el-table-column label="金额" align="center" property="cashAmt" />
</el-table>
<pagination v-show="getTotal > 0" :total="getTotal" :page.sync="getWithdrawnParameters.pageNum" :limit.sync="getWithdrawnParameters.pageSize" @pagination="getHistory"/>
</el-dialog>
2025-02-21 08:35:21 +08:00
<!-- 订单流水 -->
2025-02-21 15:10:21 +08:00
<el-dialog title="订单流水" :visible.sync="dialogTableVisible" :before-close="orderClose" >
2025-02-21 08:35:21 +08:00
<el-table :data="orderList" v-loading="orderLoading">
<el-table-column property="orderCode" label="订单编号" align="center" />
<el-table-column property="settleAmount" label="结算金额(元)" align="center" />
<el-table-column property="clearingStatus" label="清分状态" align="center" />
2025-02-21 15:10:21 +08:00
<el-table-column property="clearingBillCode" label="清分账单编号" align="center"/>
2025-02-21 08:35:21 +08:00
<el-table-column property="withdrawStatus" label="提现状态" align="center" />
<el-table-column property="withdrawCode" label="提现编号" align="center" />
</el-table>
2025-02-21 15:10:21 +08:00
<pagination v-show="orderTotal > 0" :total="orderTotal" :page.sync="getOrderParams.pageNum" :limit.sync="getOrderParams.pageSize" @pagination="getOrderList"/>
2025-02-21 08:35:21 +08:00
</el-dialog>
<!-- 分润流水 -->
2025-02-21 15:10:21 +08:00
<el-dialog title="分润流水" :visible.sync="profitSharing" :before-close="turnOffProfitSharing" >
<el-form :model="queryParams" ref="queryForm" size="small" inline label-width="68px">
2025-02-21 08:35:21 +08:00
<el-form-item label="分润类型" prop="tradeDate">
2025-02-21 15:10:21 +08:00
<el-select v-model="queryParams.orderStatus" placeholder="请选择分润类型" clearable style="width: 180px" >
<el-option v-for="item1 in sharingType" :key="item1.value" :label="item1.label" :value="item1.value"/>
2025-02-21 08:35:21 +08:00
</el-select>
</el-form-item>
<el-form-item>
2025-02-21 15:10:21 +08:00
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
2025-02-21 08:35:21 +08:00
<el-button icon="el-icon-refresh" size="mini" @click="">重置</el-button>
2025-02-21 15:10:21 +08:00
<el-button type="warning" plain icon="el-icon-download" size="mini" @click=" ">导出</el-button>
2025-02-21 08:35:21 +08:00
</el-form-item>
</el-form>
<el-table :data="orderList">
<el-table-column property="orderCode" label="订单编号" align="center" />
<el-table-column property="settleAmount" label="结算金额(元)" align="center" />
<el-table-column property="" label="分润类型" align="center" />
2025-03-04 09:49:32 +08:00
<el-table-column property="" label="电费分润比例" align="center" />
<el-table-column property="" label="电费分润金额(元)" align="center" />
<el-table-column property="" label="服务费分润比例" align="center" />
<el-table-column property="" label="服务费分润金额(元)" align="center" />
2025-02-21 08:35:21 +08:00
</el-table>
2025-02-21 15:10:21 +08:00
<pagination v-show="orderTotal > 0" :total="orderTotal" :page.sync="getOrderParams.pageNum" :limit.sync="getOrderParams.pageSize" @pagination="getOrderList" />
2025-02-21 08:35:21 +08:00
</el-dialog>
</div>
</template>
<script>
import {
getMerchantOrderReport,
withdraw,
selectAdapayMember,
queryAdapayAccountBalance,
2025-02-20 08:23:38 +08:00
WithdrawalHistory,
} from "@/api/adapayMember/adapayMember";
import { getOrderReportDetail } from "@/api/order/order";
import { getDay } from "@/utils/common";
import text from "@/assets/json/bank_code.json";
export default {
dicts: ["bill_status"],
data() {
return {
2023-08-31 16:04:44 +08:00
orderLoading: true,
2023-08-30 11:55:30 +08:00
loading: true,
operationStatus: null,
adapayMember: {},
// 开启
recordDialog: false,
tableData: [],
merchant: this.$route.query.merchantName,
orderTotal: 0,
getOrderParams: {
pageNum: 1,
pageSize: 10,
merchantId: null,
tradeDate: null,
},
orderList: [],
dialogTableVisible: false,
dialogVisible: false,
withdrawalFee: 5,
reportTotal: 0,
queryParams: {
pageNum: 1,
pageSize: 10,
},
merchantId: this.$route.query.merchantId,
createTimeRange: [],
reportList: [],
reportQueryParams: {
pageNum: 1,
pageSize: 10,
merchantId: this.$route.query.merchantId,
startTime: "",
endTime: "",
},
bankName: "",
merchantOrderReport: {},
adapayCorpMember: {},
settleAccountList: [],
merchantNature: "",
showAdapayCorp: "",
showAccountList: false,
2024-01-06 09:50:40 +08:00
//已提现参数
getWithdrawnParameters: {
merchantId: this.$route.query.merchantId,
pageNum: 1,
pageSize: 10,
},
payoutInformation: [],
2025-02-20 08:23:38 +08:00
getTotal: 0,
2025-02-21 08:35:21 +08:00
profitSharing: false,
temporary: [
{
tradeDate: "2025-02-18",
billStatus: "提现申请中",
receivableAmount: "313.92",
withdrawAbleAmount: "1371.99",
feeAmount: "1.83",
aaa: "1059.92",
bbb: "1059.92",
withdrawCode: "0021110738083352290123776",
applicationTime: "2025-02-19 08:31:00",
},
],
sharingType: [
{ label: "直接分润", value: "1" },
{ label: "间接分润", value: "2" },
],
};
},
methods: {
// 银行编码
cityBankCode(code) {
if (code == null) {
return "";
}
const bankList = text.bankList;
let arr = bankList.find((item) => item.bankCode === code);
if (arr.bankName != null) {
2023-08-31 16:04:44 +08:00
this.bankName = arr.bankName;
}
return this.bankName;
},
selectAdapayMember() {
console.log("this.merchantId", this.merchantId);
2023-08-30 11:55:30 +08:00
// this.loading = true;
let param = {
merchantId: this.merchantId,
};
selectAdapayMember(param).then((response) => {
console.log("查询结算账户", response);
this.operationStatus = response.data;
2023-08-30 11:55:30 +08:00
this.loading = false;
// console.log("this.operationStatus", this.operationStatus.bankAcctType);
// 商家性质:
if (response.data != null) {
// 对公返回的结果 商家性质:
this.merchantNature = this.operationStatus.bankAcctType;
console.log("对公信息", this.adapayCorpMember);
if (response.data.settleAccountList != null) {
// 个人账户
this.adapayCorpMember = response.data.adapayMember;
this.settleAccountList = response.data.settleAccountList;
this.showAccountList = true;
}
this.showAdapayCorp = response.data.adapayCorpMember;
if (response.data.adapayCorpMember != null)
return (this.adapayCorpMember = response.data.adapayCorpMember);
}
this.loading = false;
});
},
getAdapayBalance() {
let param = {
merchantId: this.merchantId,
};
queryAdapayAccountBalance(param).then((response) => {
console.log("查询 可提现金额 queryAdapayAccountBalance", response);
this.adapayMember = response.data;
});
},
2023-08-30 11:55:30 +08:00
// 订单流水请求
getOrderList() {
2023-08-31 16:04:44 +08:00
this.orderLoading = true;
console.log("this.getOrderParams", this.getOrderParams);
getOrderReportDetail(this.getOrderParams).then((res) => {
console.log("获取订单列表res", res);
this.orderList = res.rows;
this.orderTotal = res.total;
2023-08-31 16:04:44 +08:00
this.orderLoading = false;
});
},
// 弹层关闭之前执行的事情
orderClose() {
this.dialogTableVisible = false;
this.getOrderParams.pageNum = 1;
this.orderList = [];
this.orderTotal = 0;
},
// 订单流水按钮
goTradeDate(scope) {
// console.log("点击日期出现弹层", scope);
if (scope.row.tradeDate === null)
return this.$message.info("此条数据暂不显示订单流水");
// console.log("点击日期出现弹层", scope.row.tradeDate);
this.dialogTableVisible = true;
this.getOrderParams.merchantId = scope.row.merchantId;
this.getOrderParams.tradeDate = scope.row.tradeDate;
this.getOrderList();
},
getList() {
console.log("queryParams", this.queryParams);
getMerchantOrderReport(this.reportQueryParams).then((response) => {
console.log("getMerchantOrderReport", response);
if (response.data) {
this.merchantOrderReport = response.data.merchantOrderReport;
2025-02-20 08:23:38 +08:00
if (response.data.pageResponse === null) return (this.reportList = []);
this.reportList = response.data.pageResponse.list;
this.reportTotal = response.data.pageResponse.total;
} else {
this.reportList = [];
this.merchantOrderReport = null;
}
});
},
handleClose() {
this.$confirm("确认提交?")
.then((_) => {
let params = {
merchantId: this.merchantId,
cashAmt: this.adapayMember.avlBalance,
};
console.log("点击提交按钮之前执行 params", params);
withdraw(params).then((response) => {
console.log("res 提现金额", response);
2025-02-20 08:23:38 +08:00
if (response.code !== 200) return this.$modal.msgError(response.msg);
this.$modal.msgSuccess("操作成功");
// 重新查询当前 显示的可提现金额
this.getAdapayBalance();
});
this.dialogVisible = false;
})
2025-02-20 08:23:38 +08:00
.catch((_) => {});
},
// 点击提交按钮
submit() {
this.handleClose();
},
withdrawalClick() {
// this.$router.push({
// name: "withdrawalRecords",
// });
},
goAccount() {
this.$router.push({
name: "accountUserInfo",
params: {
id: this.merchantId,
},
});
},
// 点击搜索按钮
handleQuery() {
let arr = this.createTimeRange[0];
let str = this.createTimeRange[1];
console.log("点击搜索时展示的日期数据", arr, str);
this.reportQueryParams.startTime = arr;
this.reportQueryParams.endTime = str;
this.reportQueryParams.pageNum = 1;
this.reportTotal = 0;
this.getList();
},
defaultDate() {
//字符串拼接,开始时间,结束时间
let beg = getDay(-30); //当月第一天
let end = getDay(0); //当天
this.createTimeRange = [beg, end];
// console.log("this.createTimeRange", this.createTimeRange);
// return this.createTimeRange;
this.reportQueryParams.startTime = beg;
this.reportQueryParams.endTime = end;
this.getList();
},
2023-10-30 09:32:56 +08:00
already() {
2024-01-06 09:50:40 +08:00
this.recordDialog = true;
2025-02-20 08:23:38 +08:00
this.getHistory();
2024-01-06 09:50:40 +08:00
},
//提现记录
getHistory() {
2025-02-20 08:23:38 +08:00
console.log("etWithdrawnParameters", this.getWithdrawnParameters);
2024-01-06 09:50:40 +08:00
WithdrawalHistory(this.getWithdrawnParameters).then((response) => {
console.log("提现记录", response);
this.payoutInformation = response.data.list;
this.getTotal = response.data.total;
});
2025-02-20 08:23:38 +08:00
},
2025-02-21 08:35:21 +08:00
// 分润流水弹框
getProfitSharing(scope) {
console.log("点击分润流水", scope);
this.profitSharing = true;
},
// 关闭分润流水弹框
turnOffProfitSharing() {
this.profitSharing = false;
2025-02-21 15:10:21 +08:00
this.orderList = [];
2025-02-25 17:01:34 +08:00
this.queryParams = {};
2025-02-21 08:35:21 +08:00
},
},
created() {
this.defaultDate();
this.getAdapayBalance();
this.selectAdapayMember();
},
};
</script>
<style lang="scss" scoped>
2025-02-20 08:23:38 +08:00
.wp {
2025-02-21 08:35:21 +08:00
background: #f3f3f3;
2025-02-20 08:23:38 +08:00
padding: 20px;
min-height: 100vh;
}
2025-02-21 08:35:21 +08:00
.header {
2023-10-30 09:32:56 +08:00
display: flex;
align-items: center;
justify-content: space-between;
2025-02-20 08:23:38 +08:00
width: 100%;
height: 240px;
2025-02-21 08:35:21 +08:00
2025-02-20 08:23:38 +08:00
h3 {
margin: 0px;
margin-bottom: 10px;
2023-10-30 09:32:56 +08:00
}
2025-02-21 08:35:21 +08:00
2025-02-20 08:23:38 +08:00
.text-gray {
width: 24.5%;
height: 100%;
background: #fff;
border-radius: 8px;
2025-02-21 15:10:21 +08:00
box-shadow: 0 3px 2px rgba(0, 0, 0, 0.15);
2025-02-20 08:23:38 +08:00
padding: 20px;
2025-02-21 08:35:21 +08:00
2025-02-20 08:23:38 +08:00
div {
height: 35px;
display: flex;
align-items: center;
justify-content: space-between;
2025-02-21 08:35:21 +08:00
2025-02-20 08:23:38 +08:00
p {
color: #666;
font-size: 15px;
}
2025-02-21 08:35:21 +08:00
2025-02-20 08:23:38 +08:00
span {
display: block;
color: #333;
2025-02-21 08:35:21 +08:00
font-size: 16px;
2025-02-20 08:23:38 +08:00
}
}
2025-02-21 08:35:21 +08:00
2025-02-20 08:23:38 +08:00
.concentrate {
color: #666;
font-size: 15px;
}
2023-10-30 09:32:56 +08:00
}
}
2025-02-21 08:35:21 +08:00
.inquire {
padding: 20px 20px 0 20px;
background: #fff;
margin-top: 20px;
display: flex;
align-items: center;
2025-02-21 15:10:21 +08:00
justify-content: space-between;
2025-02-21 08:35:21 +08:00
}
.container {
padding: 20px;
background: #fff;
margin-top: 20px;
}
</style>