Files
jsowell-charger-web/jsowell-ui/src/views/financial/financeDetail.vue
2023-08-30 11:21:45 +08:00

609 lines
20 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="app-container">
<div class="header">
<div class="header-txt">运营汇总</div>
<el-button type="primary" @click="goAccount">开户信息</el-button>
</div>
<div class="header">
<template v-if="operationStatus == null">
<div class="foot1">
<div style="margin: 12px 0">没有查询到结算账户</div>
</div>
</template>
<template v-else>
<template v-if="showAccountList">
<div
class="foot1"
v-for="(item, index) in settleAccountList"
:key="index"
>
<div>
<span>运营商</span>
{{ merchant }}
</div>
<div class="margin-10">
商家性质{{ merchantNature === "1" ? "对公" : "对私" }}
</div>
<div class="margin-10">
开户行名称{{ cityBankCode(item.bankCode) }}
</div>
<div>收款卡号{{ item.cardId }}</div>
<div class="margin-10">预留手机{{ item.telNo }}</div>
</div>
</template>
<div class="foot1" v-else>
<div>
<span>运营商</span>
{{ merchant }}
</div>
<div class="margin-10">
商家性质{{ merchantNature === "1" ? "对公" : "对私" }}
</div>
<div>开户状态{{ adapayCorpMember.auditDesc }}</div>
<div class="margin-10">
开户行名称{{ cityBankCode(adapayCorpMember.bankCode) }}
</div>
<div>收款卡号{{ adapayCorpMember.cardNo }}</div>
<div class="margin-10">预留手机{{ adapayCorpMember.legalMp }}</div>
</div>
</template>
<div class="foot2">
<el-descriptions :column="1">
<el-descriptions-item label="总度数(度)">
<span class="color">
{{ merchantOrderReport.useElectricity }}
</span>
</el-descriptions-item>
<el-descriptions-item label="充电时长(分钟)">
<span class="color">{{ merchantOrderReport.chargeTime }}</span>
</el-descriptions-item>
<el-descriptions-item label="电费金额(元)">
<span class="color">{{
merchantOrderReport.electricityAmount
}}</span>
</el-descriptions-item>
<el-descriptions-item label="交易金额(元)">
<span class="color">{{ merchantOrderReport.tradeAmount }}</span>
</el-descriptions-item>
<el-descriptions-item label="虚拟金额(元)">
<span class="color">{{ merchantOrderReport.virtualAmount }}</span>
</el-descriptions-item>
</el-descriptions>
</div>
<div class="foot3">
<el-descriptions :column="1">
<el-descriptions-item label="充电次数(次)">
<span class="color">{{ merchantOrderReport.chargeNum }}</span>
</el-descriptions-item>
<el-descriptions-item label="收入金额(元)">
<span class="color">{{ merchantOrderReport.totalAmount }}</span>
</el-descriptions-item>
<el-descriptions-item label="服务费金额(元)">
<span class="color">{{ merchantOrderReport.serviceAmount }}</span>
</el-descriptions-item>
<el-descriptions-item label="交易手续费(元)">
<span class="color">{{ merchantOrderReport.tradeFee }}</span>
</el-descriptions-item>
<el-descriptions-item label="白名单支付(次)">
<span class="color">{{
merchantOrderReport.whitelistPaymentsNum === null
? "一"
: merchantOrderReport.whitelistPaymentsNum
}}</span>
</el-descriptions-item>
</el-descriptions>
</div>
<template v-if="operationStatus == null">
<div class="foot4">未查询到运营商结算账户提现功能现已关闭</div>
</template>
<template v-else>
<div class="foot4">
<div class="margin-right">
<div>可提现()</div>
<div class="margin-10">{{ adapayMember.avlBalance }}</div>
<el-button
type="primary"
v-if="adapayMember.avlBalance > withdrawalFee"
@click="dialogVisible = true"
>提现申请</el-button
>
<p class="center" v-else>
:
<span class="text"
>该余额大于{{ withdrawalFee }}元时才可发起取现</span
>
</p>
</div>
<div class="margin-right">
<div class="">冻结金额()</div>
<div class="margin-10">{{ adapayMember.frzBalance }}</div>
<div class="">
:
<span class="text"
>当配置了自动结算功能在每日发起结算时会将可用余额转为冻结金额该部分金额不允许取现</span
>
</div>
</div>
<div class="margin-right">
<div class="">昨日日终余额()</div>
<div class="margin-10">{{ adapayMember.lastAvlBalance }}</div>
</div>
<!-- <div class="margin-right">
<div>提现申请中</div>
<div class="margin-10">
{{ adapayMember.withdrawalApplication }}()
</div>
<el-button type="primary" @click="recordDialog = true"
>提现记录</el-button
>
</div>
<div class="margin-right">
<div>已提现</div>
<div class="margin-10">{{ adapayMember.withdrawn }}()</div>
<div style="font-size: 13px">已成功提现到绑定银行卡的金额汇总</div>
</div> -->
</div>
</template>
</div>
<hr />
<div class="center">
<div class="header-txt">运营分析</div>
<el-form
:model="queryParams"
ref="queryForm"
size="small"
inline
label-width="68px"
>
<el-form-item label="日期" prop="tradeDate">
<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>
</el-form-item>
<el-form-item>
<el-button
type="primary"
icon="el-icon-search"
size="mini"
@click="handleQuery"
>搜索</el-button
>
</el-form-item>
</el-form>
</div>
<hr />
<el-table :data="reportList">
<el-table-column label="日期" align="center" prop="tradeDate" />
<!-- <el-table-column label="站点名称" align="center" prop="stationName">
<template slot-scope="scope">
<router-link
:to="
'/station/detail/index/' +
scope.row.stationId +
'/' +
scope.row.stationName
"
class="link-type"
>
<span>{{ scope.row.stationName }}</span>
</router-link>
</template>
</el-table-column> -->
<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"
/>
<el-table-column
label="可提现金额(元)"
align="center"
prop="withdrawAbleAmount"
/>
<el-table-column
label="交易手续费(元)"
align="center"
prop="feeAmount"
/>
<!-- <el-table-column label="清分时间" align="center" prop="clearingTime" /> -->
<!-- <el-table-column
label="应清分金额"
align="center"
prop="shouldClearingAmount"
/>
<el-table-column
label="实际清分金额"
align="center"
prop="actualClearingAmount"
/>
<el-table-column
label="清分账单编号"
align="center"
prop="clearingBillCode"
/> -->
<el-table-column label="提现订单号" align="center" prop=" withdrawCode" />
<el-table-column
label="提现申请时间"
align="center"
prop="withdrawalTime"
/>
<el-table-column label="操作" align="center">
<template slot-scope="scope">
<span class="link-type" @click="goTradeDate(scope)">订单流水</span>
</template>
</el-table-column>
</el-table>
<pagination
v-show="reportTotal > 0"
:total="reportTotal"
:page.sync="reportQueryParams.pageNum"
:limit.sync="reportQueryParams.pageSize"
@pagination="getList"
/>
<!-- 提现申请弹窗 -->
<el-dialog title="提现申请" :visible.sync="dialogVisible" width="33%">
温馨提示
<div style="font-size: 12px; color: gray">
<p>1.提现将在3个工作日内审核到账,节假日审核顺延</p>
<p>2.部分流量方的充电订单存在账期,需要一定周期后才开始执行清分</p>
<p>3.提现为银行自动付款,根据银行要求会收取手续费,请知悉</p>
</div>
<p>
可提现
<span class="number">{{ adapayMember.avlBalance }}</span>
</p>
<p>
手续费
<span class="number">{{ withdrawalFee.toFixed(2) }}</span>
</p>
<p>
实际到账
<span class="number">
<!-- <span>11</span> -->
{{ adapayMember.avlBalance - withdrawalFee }}
</span>
</p>
<span slot="footer" class="dialog-footer">
<el-button @click="dialogVisible = false"> </el-button>
<el-button type="primary" @click="submit">提交</el-button>
</span>
</el-dialog>
<!-- 提现记录 -->
<el-dialog title="提现记录" :visible.sync="recordDialog">
<el-table :data="tableData" style="width: 100%">
<el-table-column label="日期" />
<el-table-column label="账单状态" />
<el-table-column label="应收金额(元)" />
<el-table-column label="充值手续费(元)" />
<el-table-column label="可提现金额(元)" />
<el-table-column label="提现订单号(元)" />
<el-table-column label="提现申请时间(元)" />
<el-table-column label="操作">
<template slot-scope="scope">
<router-link
:to="{
path: '/financial/merchant/merchantVirtual',
query: {
merchantId: scope.row.id,
merchantName: scope.row.merchantName,
},
}"
class="link-type"
>
<span>订单流水</span>
</router-link>
</template>
</el-table-column>
</el-table>
</el-dialog>
<el-dialog
title="订单流水"
:visible.sync="dialogTableVisible"
:before-close="orderClose"
>
<el-table :data="orderList">
<el-table-column property="orderCode" label="订单编号" />
<el-table-column property="settleAmount" label="结算金额(元)" />
<el-table-column property="clearingStatus" label="清分状态">
<template slot-scope="scope">
<span>{{
scope.row.clearingStatus === "0" ? "未清分" : "已清分"
}}</span>
</template>
</el-table-column>
<el-table-column property="clearingBillCode" label="清分账单编号" />
<el-table-column property="withdrawStatus" label="提现状态" />
<el-table-column property="withdrawCode" label="提现编号" />
</el-table>
<pagination
v-show="orderTotal > 0"
:total="orderTotal"
:page.sync="getOrderParams.pageNum"
:limit.sync="getOrderParams.pageSize"
@pagination="getOrderList"
/>
</el-dialog>
</div>
</template>
<script>
import {
getMerchantOrderReport,
withdraw,
selectAdapayMember,
queryAdapayAccountBalance,
} 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 {
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: "",
},
merchantOrderReport: {},
adapayCorpMember: {},
settleAccountList: [],
merchantNature: "",
showAdapayCorp: "",
showAccountList: false,
};
},
methods: {
// 银行编码
cityBankCode(code) {
// if (code === undefined) return;
const cityList = text.cityList;
let arr = cityList.find((item) => item.bankCode === code);
// console.log("银行编码对应的银行名称 arr", arr);
return arr.bankName;
},
selectAdapayMember() {
console.log("this.merchantId", this.merchantId);
let param = {
merchantId: this.merchantId,
};
selectAdapayMember(param).then((response) => {
console.log("查询结算账户", response);
this.operationStatus = response.data;
// 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);
}
});
},
getAdapayBalance() {
let param = {
merchantId: this.merchantId,
};
queryAdapayAccountBalance(param).then((response) => {
console.log("查询 可提现金额 queryAdapayAccountBalance", response);
this.adapayMember = response.data;
});
},
getOrderList() {
console.log("this.getOrderParams", this.getOrderParams);
getOrderReportDetail(this.getOrderParams).then((res) => {
console.log("获取订单列表res", res);
this.orderList = res.rows;
this.orderTotal = res.total;
// console.log("this.orderTotal", this.orderTotal);
});
},
// 弹层关闭之前执行的事情
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("查询报表", reportList, merchantOrderReport);
console.log("getMerchantOrderReport", response);
if (response.data) {
this.merchantOrderReport = response.data.merchantOrderReport;
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);
if (response.code !== 200)
return this.$modal.msgError(response.msg);
this.$modal.msgSuccess("操作成功");
// 重新查询当前 显示的可提现金额
this.getAdapayBalance();
});
this.dialogVisible = false;
})
.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();
// this.getOrderList();
},
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();
},
},
created() {
this.defaultDate();
this.getAdapayBalance();
this.selectAdapayMember();
},
};
</script>
<style lang="scss" scoped>
.center {
display: flex;
align-content: center;
margin-top: 30px;
}
.margin-10 {
margin: 10px 0;
}
.font-13 {
font-size: 13px;
}
.header {
display: flex;
justify-content: space-between;
align-items: center;
}
.header-txt {
font-size: 24px;
}
.text {
font-size: 12px;
color: red;
}
.foot1 {
margin-top: 10px;
// width: 320px;
// margin-right: 10px;
// font-size: 13px;
}
.foot2 {
margin-left: 10px;
margin-right: 10px;
width: 200px;
}
.foot3 {
width: 200px;
margin-right: 10px;
}
.foot4 {
flex: 1;
display: contents;
}
.margin-right {
width: 180px;
margin-right: 10px;
text-align: center;
}
.color {
color: #000;
font-weight: bolder;
}
</style>