update 同步前端代码

This commit is contained in:
Lemon
2025-05-21 11:10:20 +08:00
parent fb8167f93d
commit 587ec56936
18 changed files with 753 additions and 168 deletions

View File

@@ -5,7 +5,7 @@ VUE_APP_TITLE = 万车充运营管理平台
ENV = 'development'
# 万车充运营管理平台/预生产环境
VUE_APP_BASE_API = 'https://apitest.jsowellcloud.com'
VUE_APP_BASE_API = 'http://apitest.jsowellcloud.com'
# 路由懒加载
VUE_CLI_BABEL_TRANSPILE_MODULES = true

View File

@@ -5,7 +5,7 @@ VUE_APP_TITLE = 万车充运营管理平台
ENV = 'staging'
# 万车充运营管理平台/测试环境
VUE_APP_BASE_API = 'http://192.168.2.21:8080'
VUE_APP_BASE_API = 'http://192.168.2.2:8080'
# 开发环境配置
NODE_ENV = production

View File

@@ -1,12 +1,12 @@
@echo off
echo.
echo [信息] 打包Web工程生成dist文件。
echo [<EFBFBD><EFBFBD>Ϣ] <20><><EFBFBD>Web<65><62><EFBFBD>̣<EFBFBD><CCA3><EFBFBD><EFBFBD><EFBFBD>dist<73>ļ<EFBFBD><C4BC><EFBFBD>
echo.
%~d0
cd %~dp0
cd ..
npm run build:stage
npm run build:sit
pause
pause

View File

@@ -1,12 +1,12 @@
@echo off
echo.
echo [信息] 打包Web工程生成dist文件。
echo [<EFBFBD><EFBFBD>Ϣ] <20><><EFBFBD>Web<65><62><EFBFBD>̣<EFBFBD><CCA3><EFBFBD><EFBFBD><EFBFBD>dist<73>ļ<EFBFBD><C4BC><EFBFBD>
echo.
%~d0
cd %~dp0
cd ..
npm run build:prod
npm run build:prd
pause
pause

View File

@@ -81,4 +81,22 @@ export function WithdrawalHistory(data) {
method: "post",
data: data,
});
}
//查询运营商配置的提现方式
export function queryWithdrawalType(data) {
return request({
url: "/pile/merchant/queryWithdrawalType",
method: "post",
data: data,
});
}
//修改提现方式
export function updateWithdrawalType(data) {
return request({
url: "/pile/merchant/updateWithdrawalType",
method: "post",
data: data,
});
}

View File

@@ -86,4 +86,29 @@ export function concatenateAuthLinks(data) {
method: 'post',
data: data
})
}
//根据汇付会员id查询配置分账的站点列表
export function queryStationList(data) {
return request({
url: '/station/splitconfig/queryStationList',
method: 'post',
data: data
})
}
//查询订单分账数据
export function queryOrderSplitData(data) {
return request({
url: '/order/queryOrderSplitData',
method: 'post',
data: data
})
}
export function queryStationAggregateData(data) {
return request({
url: '/order/queryStationAggregateData',
method: 'post',
data: data
})
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

View File

@@ -205,19 +205,33 @@ export const constantRoutes = [
},
],
},
{
path: "/secret/detail",
component: Layout,
hidden: true,
children: [
{
path: "index/:id",
component: () => import("@/views/thirdparty/secret/detail"),
name: "secretDetail",
meta: { title: "第三方平台配置详情", activeMenu: "/secret/detail" },
},
],
},
{
path: "/secret/detail",
component: Layout,
hidden: true,
children: [
{
path: "index/:id",
component: () => import("@/views/thirdparty/secret/detail"),
name: "secretDetail",
meta: { title: "第三方平台配置详情", activeMenu: "/secret/detail" },
},
],
},
{
path: "/financial/profitDetails",
component: Layout,
hidden: true,
children: [{
path: "",
component: () => import("@/views/financial/profitDetails.vue"),
name: "profitDetails",
meta: {
title: "分润详情",
activeMenu: "/financial/profitDetails"
}
}]
}
];
// 动态路由,基于用户权限动态去加载

View File

@@ -2,6 +2,7 @@
<div class="app-container">
<div class="header-cont ">
<div class="header-txt">运营汇总</div>
<p class="payout">提现方式:{{ modifyMethod }}<span @click="modifyWithdrawal">修改</span></p>
<el-button type="primary" @click="goAccount">开户信息</el-button>
</div>
<div class="header" v-loading="loading">
@@ -119,7 +120,7 @@
<div class="color60" style="margin-bottom: 15px;color:#000;">账户总余额{{ adapayMember.avlBalance }}</div>
<div class="color60">可提现()</div>
<div class="margin-20 color">{{ adapayMember.lastAvlBalance }}</div>
<el-button type="primary" @click="dialogVisible = true">提现申请</el-button>
<el-button v-if="modifyMethod == '手动提现'" type="primary" @click="dialogVisible = true">提现申请</el-button>
<!-- <div v-else>
<span class="text">该余额大于{{ withdrawalFee }}元时才可发起取现</span>
</div> -->
@@ -225,6 +226,21 @@
<pagination v-show="orderTotal > 0" :total="orderTotal" :page.sync="getOrderParams.pageNum"
:limit.sync="getOrderParams.pageSize" @pagination="getOrderList" />
</el-dialog>
<!-- 提现方式 -->
<el-dialog title="修改提现方式" :visible.sync="withdrawalPop" width="500px" append-to-body :before-close="cancel">
<el-form ref="methodParameters" :model="methodParameters" label-width="80px">
<el-form-item label="提现方式">
<el-radio-group v-model="methodParameters.withdrawalType" size="small">
<el-radio label="1" border>手动提现</el-radio>
<el-radio label="2" border>自动提现</el-radio>
</el-radio-group>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
@@ -233,7 +249,9 @@ import {
withdraw,
selectAdapayMember,
queryAdapayAccountBalance,
WithdrawalHistory
WithdrawalHistory,
queryWithdrawalType,
updateWithdrawalType
} from "@/api/adapayMember/adapayMember";
import { getOrderReportDetail } from "@/api/order/order";
import { getDay } from "@/utils/common";
@@ -291,7 +309,14 @@ export default {
pageSize: 10,
},
payoutInformation: [],
getTotal: 0
getTotal: 0,
modifyMethod: null,
withdrawalPop: false,
methodParameters: {
merchantId: this.$route.query.merchantId,
withdrawalType: null,
reservedAmount: null
}
};
},
methods: {
@@ -461,12 +486,50 @@ export default {
this.payoutInformation = response.data.list;
this.getTotal = response.data.total;
});
}
},
// 查询提现方式
withdrawalMethod() {
let param = {
merchantId: this.merchantId,
};
console.log("提现方式参数", param);
queryWithdrawalType(param).then((response) => {
console.log("提现方式", response);
this.modifyMethod = response.data.withdrawalType == 1 ? '手动提现' : '自动提现';
this.methodParameters.withdrawalType = response.data.withdrawalType;
});
},
// 修改提现方式
updateWithdrawalMethod() {
console.log("修改提现方式参数", this.getWithdrawnParameters.merchantId);
updateWithdrawalType(this.getWithdrawnParameters.merchantId).then(() => {
console.log("修改提现方式", response);
});
},
// 提现方式弹窗取消
cancel() {
this.withdrawalPop = false;
},
// 提现方式弹窗确定
submitForm() {
console.log("methodParameters", this.methodParameters);
updateWithdrawalType(this.methodParameters).then((response) => {
console.log("修改提现方式", response);
this.$modal.msgSuccess("操作成功");
this.withdrawalMethod();
this.withdrawalPop = false;
});
},
modifyWithdrawal() {
this.withdrawalPop = true;
this.withdrawalMethod();
},
},
created() {
this.defaultDate();
this.getAdapayBalance();
this.selectAdapayMember();
this.withdrawalMethod();
},
};
</script>
@@ -556,4 +619,14 @@ export default {
color: #000;
font-weight: bolder;
}
.payout {
margin: 0;
span {
color: #1890ff;
cursor: pointer;
margin-left: 10px;
}
}
</style>

View File

@@ -1,116 +1,74 @@
<template>
<div class="app-container">
<el-form
:model="queryParams"
ref="queryForm"
size="small"
:inline="true"
label-width="110px"
@submit.native.prevent
>
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" label-width="110px"
@submit.native.prevent>
<el-form-item label="运营商" prop="merchantId" label-width="120">
<el-select v-model="queryParams.merchantId" filterable clearable placeholder="请选择运营商">
<el-option
v-for="item in merchantList"
:key="item.merchantName"
:label="item.merchantName"
:value="item.id"
/>
<el-option v-for="item in merchantList" :key="item.merchantName" :label="item.merchantName"
:value="item.id" />
</el-select>
</el-form-item>
<el-form-item label="联系人名称" prop="managerName">
<el-input
v-model="queryParams.managerName"
placeholder="请输入联系人名称"
clearable
@keyup.enter.native="handleQuery"
/>
<el-input v-model="queryParams.managerName" placeholder="请输入联系人名称" clearable
@keyup.enter.native="handleQuery" />
</el-form-item>
<el-form-item label="管理员联系方式" prop="managerPhone">
<el-input
v-model="queryParams.managerPhone"
placeholder="请输入管理员联系方式"
clearable
@keyup.enter.native="handleQuery"
/>
<el-input v-model="queryParams.managerPhone" placeholder="请输入管理员联系方式" clearable
@keyup.enter.native="handleQuery" />
</el-form-item>
<el-form-item>
<el-button
type="primary"
icon="el-icon-search"
size="mini"
@click="handleQuery"
>搜索</el-button
>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery"
>重置</el-button
>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
<el-table :data="merchantInfoList" style="width: 100%" v-loading="loading">
<el-table-column prop="merchantName" label="运营商" align="center">
<template slot-scope="scope">
<router-link
:to="{
path: '/financial/merchant/financeDetail',
query: {
merchantId: scope.row.merchantId,
merchantName: scope.row.merchantName,
},
}"
class="link-type"
>
<router-link :to="{
path: '/financial/merchant/financeDetail',
query: {
merchantId: scope.row.merchantId,
merchantName: scope.row.merchantName,
},
}" class="link-type">
<span>{{ scope.row.merchantName }}</span>
</router-link>
</template>
</el-table-column>
<el-table-column
prop="organizationCode"
label="组织机构代码"
align="center"
/>
<el-table-column prop="organizationCode" label="组织机构代码" align="center" />
<el-table-column prop="status" label="状态" align="center" width="130">
<template slot-scope="scope">
<dict-tag
:options="dict.type.merchant_status"
:value="scope.row.status"
/>
<dict-tag :options="dict.type.merchant_status" :value="scope.row.status" />
</template>
</el-table-column>
<el-table-column
prop="adapayMemberId"
label="汇付会员id"
align="center"
/>
<!-- <el-table-column prop="auditStatus" label="汇付会员审核状态" align="center" width="130">-->
<!-- <template slot-scope="scope">-->
<!-- <dict-tag-->
<!-- :options="dict.type.account_audit_status"-->
<!-- :value="scope.row.status"-->
<!-- />-->
<!-- </template>-->
<!-- </el-table-column>-->
<el-table-column
prop="settleAccountId"
label="汇付结算账户id"
align="center"
/>
<el-table-column prop="adapayMemberId" label="汇付会员id" align="center" />
<!-- <el-table-column prop="auditStatus" label="汇付会员审核状态" align="center" width="130">-->
<!-- <template slot-scope="scope">-->
<!-- <dict-tag-->
<!-- :options="dict.type.account_audit_status"-->
<!-- :value="scope.row.status"-->
<!-- />-->
<!-- </template>-->
<!-- </el-table-column>-->
<el-table-column prop="settleAccountId" label="汇付结算账户id" align="center" />
<el-table-column
prop="managerName"
label="联系人"
align="center"
width="130"
/>
<el-table-column
prop="managerPhone"
label="联系方式"
align="center"
width="300"
/>
<el-table-column prop="managerName" label="联系人" align="center" width="130" />
<el-table-column prop="managerPhone" label="联系方式" align="center" width="300" />
<el-table-column prop="createTime" label="入驻时间" align="center" />
<el-table-column label="操作" align="center">
<template slot-scope="scope">
<router-link :to="{
path: '/financial/profitDetails',
query: {
adapayMemberId: scope.row.adapayMemberId
},
}" class="link-type">
<span class="link-type">分润详情</span>
</router-link>
</template>
</el-table-column>
<!-- :to="'/merchant/detail/index/' + scope.row.id" -->
<!-- <el-table-column prop="address" label="操作" align="center">
<template slot-scope="scope">
@@ -141,18 +99,13 @@
</el-table-column> -->
</el-table>
<pagination
v-show="total > 0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
<pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize"
@pagination="getList" />
</div>
</template>
<script>
import {getFinancialMerchantList, getMerchantList} from "@/api/pile/merchant";
import { getFinancialMerchantList, getMerchantList } from "@/api/pile/merchant";
export default {
dicts: ["merchant_status", "account_audit_status"],
@@ -219,6 +172,9 @@ export default {
// this.resetForm("queryForm");
this.handleQuery();
},
profitDetails() {
}
},
};
</script>

View File

@@ -0,0 +1,313 @@
<template>
<div class="wp">
<el-tabs type="border-card" @tab-click="handleClick">
<el-tab-pane label="分润订单">
<div class="querySift">
<el-form :model="queryParams" size="small" :inline="true" label-width="110px"
@submit.native.prevent>
<el-form-item label="日期范围" style="width: 380px;margin-bottom: 0px;">
<el-date-picker v-model="queryParams.createTimeRange" style="width: 240px"
value-format="yyyy-MM-dd HH:mm:ss" :default-time="['00:00:00', '23:59:59']"
type="daterange" range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期"
:clearable="true" />
</el-form-item>
<el-form-item label="选择站点" prop="stationName" label-width="120" style="margin-bottom: 0px;">
<el-select v-model="queryParams.stationId" filterable clearable placeholder="请选择站点">
<el-option v-for="item in stationList" :key="item.stationId" :label="item.stationName"
:value="item.stationId" />
</el-select>
</el-form-item>
<el-form-item style="margin-bottom: 0px;">
<el-button type="primary" icon="el-icon-search" size="mini"
@click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
</div>
<div class="concentrate" style="margin-top: 20px;">
<h3 style="margin-top: 0px;">订单分账明细</h3>
<el-table :data="orderList" v-loading="loading">
<el-table-column property="orderCode" label="订单编号" align="center" />
<el-table-column property="orderAmount" label="订单消费金额(元)" align="center" />
<el-table-column property="settleAmount" label="订单结算金额(元)" align="center" />
<el-table-column label="操作" align="center">
<template slot-scope="scope">
<el-popover placement="top" trigger="hover" width="1150">
<!-- 嵌套表格 -->
<el-table :data="scope.row.orderSplitList">
<el-table-column property="merchantName" label="运营商名称" align="center"
width="150" />
<el-table-column property="adapayMemberId" label="汇付会员id" align="center"
width="150" />
<el-table-column property="electricitySplitRatio" label="电费分账比例(%)"
align="center" width="130" />
<el-table-column property="electricitySplitAmount" label="电费分账金额(元)"
align="center" width="140" />
<el-table-column property="serviceSplitRatio" label="服务费分账比例(%)" align="center"
width="140" />
<el-table-column property="serviceSplitAmount" label="服务费分账金额(元)" align="center"
width="140" />
<el-table-column property="revenueAmount" label="总收入金额(元)" align="center"
width="140" />
<el-table-column property="feeAmount" label="手续费(元)" align="center"
width="120" />
</el-table>
<span slot="reference" class="link-type"
@mouseover="hoverRow = scope.$index">分润明细</span>
</el-popover>
</template>
</el-table-column>
</el-table>
<pagination v-show="orderTotal > 0" :total="orderTotal" :page.sync="getOrderParams.pageNo"
:limit.sync="getOrderParams.pageSize" @pagination="getOrderList" />
</div>
</el-tab-pane>
<el-tab-pane label="分润汇总">
<div class="querySift">
<el-form :model="statisticsParams" size="small" :inline="true" label-width="110px"
@submit.native.prevent>
<el-form-item label="日期范围" style="width: 380px;margin-bottom: 0px;">
<el-date-picker v-model="statisticsParams.createTimeRange" style="width: 240px"
value-format="yyyy-MM-dd HH:mm:ss" :default-time="['00:00:00', '23:59:59']"
type="daterange" range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期"
:clearable="true" />
</el-form-item>
<el-form-item label="选择站点" prop="stationName" label-width="120" style="margin-bottom: 0px;">
<el-select v-model="statisticsParams.stationId" filterable clearable placeholder="请选择站点">
<el-option v-for="item in stationList" :key="item.stationId" :label="item.stationName"
:value="item.stationId" />
</el-select>
</el-form-item>
<el-form-item style="margin-bottom: 0px;">
<el-button type="primary" icon="el-icon-search" size="mini"
@click="handleStatistics">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetStatistics">重置</el-button>
</el-form-item>
</el-form>
</div>
<div class="concentrate">
<p class="prompt"
v-if="statisticsParams.createTimeRange && statisticsParams.createTimeRange.length >= 2">
创建时间 {{ statisticsParams.createTimeRange[0] }} - {{ statisticsParams.createTimeRange[1] }} 期间
</p>
<p class="prompt" v-else>时间范围未选择</p>
<el-table :data="tableData" border show-summary :summary-method="getSummaries">
<el-table-column prop="stationName" label="站点名称" align="center" />
<el-table-column prop="orderCount" label="订单数量" align="center" />
<el-table-column prop="totalElectricitySplitAmount" label="总电费分账金额(元)" align="center" />
<el-table-column prop="totalServiceSplitAmount" label="总服务费分账金额(元)" align="center" />
<el-table-column prop="totalFeeAmount" label="总手续费(元)" align="center" />
<el-table-column prop="totalRevenueAmount" label="总收入金额(元)" align="center" />
</el-table>
</div>
</el-tab-pane>
</el-tabs>
</div>
</template>
<script>
import { queryStationList, queryOrderSplitData, queryStationAggregateData } from "@/api/pile/merchant";
export default {
data() {
return {
queryParams: {
stationId: null,
createTimeRange: this.getDefaultDateRange(),
},
statisticsParams: {
stationId: null,
createTimeRange: this.getDefaultDateRange(),
},
stationList: [],
orderList: [],
orderTotal: 0,
getOrderParams: {
pageNo: 1,
pageSize: 10,
stationId: null,
adapayMemberId: this.$route.query.adapayMemberId,
startTime: this.getDefaultDateRange()[0],
endTime: this.getDefaultDateRange()[1],
},
loading: false,
tableData: [],
};
},
created() {
this.getList();
},
methods: {
// 获取当前日期范围
getDefaultDateRange() {
// 获取当前日期
const now = new Date()
// 当月第一天
const start = new Date(now.getFullYear(), now.getMonth(), 1)
start.setHours(0, 0, 0, 0)
// 今天
const end = new Date()
end.setHours(23, 59, 59, 999)
// 格式化函数
const format = date => {
const pad = n => n.toString().padStart(2, '0')
return [
date.getFullYear(),
pad(date.getMonth() + 1),
pad(date.getDate())
].join('-') + ' ' + [
pad(date.getHours()),
pad(date.getMinutes()),
pad(date.getSeconds())
].join(':')
}
return [format(start), format(end)]
},
// 搜索按钮操作
handleQuery() {
if (!this.queryParams.createTimeRange) {
this.$message.error("请选择日期范围");
return;
}
if (!this.queryParams.stationId) {
this.$message.error("请选择站点");
return;
}
this.getOrderParams.pageNo = 1;
this.getOrderParams.startTime = this.queryParams.createTimeRange[0];
this.getOrderParams.endTime = this.queryParams.createTimeRange[1];
console.log("搜索的值", this.queryParams);
this.getOrderList();
},
// 重置按钮操作
resetQuery() {
this.getList();
this.queryParams.createTimeRange = this.getDefaultDateRange();
this.getOrderParams = {
pageNo: 1,
pageSize: 10,
stationId: this.queryParams.stationId,
adapayMemberId: this.$route.query.adapayMemberId,
startTime: this.getDefaultDateRange()[0],
endTime: this.getDefaultDateRange()[1],
};
},
// 获取站点列表
getList() {
let params = {
adapayMemberId: this.$route.query.adapayMemberId,
};
queryStationList(params).then((response) => {
this.stationList = response.obj.stationList;
this.queryParams.stationId = response.obj.stationList[0].stationId;
this.getOrderList();
});
},
// 获取订单列表
getOrderList() {
this.loading = true;
this.getOrderParams.stationId = this.queryParams.stationId
queryOrderSplitData(this.getOrderParams).then((response) => {
this.orderList = response.obj.list;;
this.orderTotal = response.obj.total;
this.loading = false;
});
},
getSummaries(param) {
const { columns, data } = param;
const integerFields = ['orderCount', 'quantity']; // 需要显示整数的字段
return columns.map((col, index) => {
if (index === 0) return '总计';
const total = data.reduce((sum, row) => {
const val = Number(row[col.property]) || 0;
return sum + val;
}, 0);
return integerFields.includes(col.property)
? total.toLocaleString('zh-CN', { maximumFractionDigits: 0 })
: total.toLocaleString('zh-CN', { minimumFractionDigits: 2, maximumFractionDigits: 2 });
});
},
// 获取统计数据
getAggregateData() {
let params = {
adapayMemberId: this.$route.query.adapayMemberId,
startTime: this.statisticsParams.createTimeRange[0],
endTime: this.statisticsParams.createTimeRange[1],
stationId: this.statisticsParams.stationId,
};
queryStationAggregateData(params).then((response) => {
this.tableData = response.obj;
});
},
// 搜索统计数据
handleStatistics() {
if (!this.statisticsParams.createTimeRange) {
this.$message.error("请选择日期范围");
return;
}
this.statisticsParams.startTime = this.statisticsParams.createTimeRange[0];
this.statisticsParams.endTime = this.statisticsParams.createTimeRange[1];
this.statisticsParams.stationId = this.statisticsParams.stationId;
this.getAggregateData();
},
// 重置统计按钮操作
resetStatistics() {
this.statisticsParams.createTimeRange = this.getDefaultDateRange();
this.statisticsParams.stationId = null;
this.getAggregateData();
},
// Tab切换事件
handleClick(tab, event) {
if (tab.label === "分润订单") {
this.resetQuery();
} else if (tab.label === "分润汇总") {
this.resetStatistics();
}
},
}
};
</script>
<style lang="scss" scoped>
.wp {
width: 100%;
min-height: 100vh;
background: #f9fafb;
padding: 20px;
box-sizing: border-box;
}
p {
margin: 0;
}
.querySift {
width: 98%;
height: 100px;
display: flex;
align-items: center;
border-radius: 8px;
background: #FFFFFF;
box-shadow: 0px 2px 6px 0px rgba(0, 0, 0, 0.1);
margin: 20px auto;
}
.concentrate {
width: 98%;
border-radius: 8px;
background: #FFFFFF;
box-shadow: 0px 2px 6px 0px rgba(0, 0, 0, 0.1);
margin: auto;
padding: 24px;
box-sizing: border-box;
}
.prompt {
margin-bottom: 20px;
}
</style>

View File

@@ -1,15 +1,13 @@
<template>
<div class="app-container">
<h1>概况 (自2023-01-01)</h1>
<h1>概况 (自2023-01-01) </h1>
<hr />
<div
style="
<div style="
display: flex;
justify-content: space-between;
margin-top: 10px;
flex-wrap: wrap;
"
>
">
<div class="box" style="background-color: #ffba00">
<el-image class="box-image" :src="require('@/assets/images/lightning.png')" />
<div class="flex1">
@@ -43,23 +41,36 @@
<hr />
<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"
@change="init"
></el-date-picker>
<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" @change="init"></el-date-picker>
</el-form-item>
</el-form>
<!-- <el-button style="background-color: #1ab394; color: #ffffff">最近30天 </el-button> -->
<div ref="chart" :style="{ width: '100%', height: '500px' }"></div>
<hr />
//通知弹窗
<el-dialog :visible.sync="dialogVisible" width="40%" :before-close="handleClose">
<div class="notice">
<div class="noticeContent">
<h3>关于平台充电订单抽成的通知</h3>
<p class="optimize">为持续优化平台服务提升运营效率并为您提供更优质的充电体验经平台研究决定自2025年6月1日起将对所有通过平台完成的充电订单收取订单金额2%的平台服务费具体说明如下
</p>
<div class="adjustment">
<h5>调整内容</h5>
<p><span>&nbsp;&nbsp;2025-06-01&nbsp;&nbsp;</span></p>
<p>平台将按照订单金额2%的比例从订单中扣取费用若订单金额为100元平台服务费为2元实际到账金额为98元</p>
</div>
<div class="adjustment" style="background: #F9FAFB;">
<h5>注意事项</h5>
<p>2025年6月1日前完成的订单仍按原规则结算</p>
<p>您可通过平台XXX实时查询费用变动</p>
<p style="color: #3B82F6;">您可以随时操作提现但请注意提现金额与抽成账单的关联</p>
</div>
<p style="margin-top: 20px;">感谢您一直以来的信任与支持我们将继续努力为您创造价值携手共建更便捷的充电服务生态</p>
</div>
</div>
</el-dialog>
</div>
</template>
<script>
@@ -88,6 +99,7 @@ export default {
],
createTimeRange: [],
queryParams: {},
dialogVisible: true,
};
}, //图表实例
created() {
@@ -453,6 +465,10 @@ export default {
let h = date.getHours();
return `${y}-${m}-${d}`;
},
handleClose(done) {
this.dialogVisible = false;
done();
},
},
};
</script>
@@ -501,4 +517,69 @@ export default {
.box-text {
margin-top: 0px;
}
::v-deep .el-dialog__header,
::v-deep .el-dialog__body {
padding: 0;
}
.notice {
width: 100%;
height: 700px;
background: url("../../assets/images/img.png") no-repeat 0 0;
background-size: 100% 100%;
h3,
h5,
p {
margin: 0;
padding: 0;
}
.noticeContent {
padding: 70px 68px 40px;
box-sizing: border-box;
}
h3 {
font-size: 26px;
font-weight: 600;
color: #3B82F6;
}
.optimize {
margin-top: 60px;
font-size: 18px;
font-weight: 600;
color: #374151;
}
}
.adjustment {
padding: 16px;
border-radius: 8px;
background: #EFF6FF;
box-sizing: border-box;
margin-top: 30px;
h5 {
font-size: 16px;
font-weight: 600;
color: #374151;
}
p {
font-size: 16px;
font-weight: normal;
color: #374151;
margin-top: 10px;
span {
font-weight: 600;
color: #2563EB;
}
}
}
</style>

View File

@@ -36,7 +36,7 @@
</el-form>
<!-- 底部 -->
<div class="el-login-footer">
<span>Copyright © 2016-{{ year }} Jsowell All Rights Reserved.</span>
<span>Copyright © 2016-{{ year }} Jsowell All Rights Reserved. 沪ICP备16035790号-3 </span>
</div>
</div>
</template>

View File

@@ -104,7 +104,7 @@
<el-card class="box-card" shadow="hover">
<div slot="header" class="clearUnbinding">
<span>个人桩信息</span>
<p @click="unbinding">解绑</p>
<p @click="unbinding(personalPileInfo.memberId)">解绑</p>
</div>
<!-- 表格 -->
<div style="margin: 10px 0">
@@ -498,10 +498,11 @@ export default {
});
},
// 解绑
unbinding() {
unbinding(memberId) {
console.log('解绑', this.pileDetail.pileSn);
let from = {
pileSn: this.pileDetail.pileSn
pileSn: this.pileDetail.pileSn,
memberId: memberId,
}
// 弹出确认框
this.$confirm('确定要解绑该设备吗?此操作不可逆,请谨慎操作。', '提示', {

View File

@@ -275,6 +275,7 @@ export default {
businessHours: "",
pictures: "",
deptId: "",
aloneApply: "",
},
stationId: this.$route.params.id,
publicFlagOptions: [

View File

@@ -339,6 +339,9 @@
<el-tab-pane label="分润配置" name="Config">
<Config ref="Config" :stationId="stationId" :merchantId="merchantId"></Config>
</el-tab-pane>
<el-tab-pane label="引流抽成" name="drainage">
<drainage ref="drainage" :stationId="stationId"></drainage>
</el-tab-pane>
</el-tabs>
<el-dialog :title="dialogTitle" :visible.sync="dialogFormVisible">
@@ -380,6 +383,7 @@ import {
import Whitelist from "@/views/pile/station/stationWhiteList";
import OrderReport from "./orderReport.vue";
import Config from "@/views/pile/station/splitConfig.vue";
import drainage from "@/views/pile/station/drainageRake.vue";
import {formatTime, formatTimeStr} from "@/utils";
export default {
@@ -396,6 +400,7 @@ export default {
stationWhiteList,
OrderReport,
Config,
drainage
},
data() {
return {

View File

@@ -0,0 +1,104 @@
<template>
<div class="container">
<div class="querySift">
<el-form :model="queryParams" size="small" :inline="true" label-width="110px" @submit.native.prevent>
<el-form-item label="日期范围" style="width: 380px;margin-bottom: 0px;">
<el-date-picker v-model="queryParams.createTimeRange" style="width: 240px"
value-format="yyyy-MM-dd HH:mm:ss" :default-time="['00:00:00', '23:59:59']" type="daterange"
range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期" :clearable="true" />
</el-form-item>
<el-form-item label="订单流水号" prop="stationName" label-width="120" style="margin-bottom: 0px;">
<el-input v-model="queryParams.orderNo" placeholder="请输入订单流水号" clearable />
</el-form-item>
<el-form-item label="订单编号" prop="memberId">
<el-input v-model="queryParams.orderId" placeholder="请输入订单编号" clearable />
</el-form-item>
<el-form-item style="margin-bottom: 0px;">
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
</div>
<div class="concentrate" style="margin-top: 20px;">
<h3 style="margin-top: 0px;">引流抽成支出列表</h3>
<el-table :data="list" v-loading="loading">
<el-table-column property="orderCode" label="订单编号" align="center" />
<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" />
<el-table-column property="流水时间" label="" align="center" />
</el-table>
<pagination v-show="total > 0" :total="total" :page.sync="pageParams.pageNo"
:limit.sync="pageParams.pageSize" @pagination="getList" />
</div>
</div>
</template>
<script>
export default {
props: {
stationId: {
type: String,
required: true,
},
},
data() {
return {
queryParams: {
createTimeRange: [],
orderNo: '',
orderId: '',
},
list: [],
total: 0,
loading: false,
pageParams: {
pageNo: 1,
pageSize: 10,
},
};
},
methods: {
// 查询
handleQuery() {
this.pageParams.pageNo = 1;
this.getList();
},
// 重置查询条件
resetQuery() {
this.queryParams.createTimeRange = [];
this.queryParams.orderNo = '';
this.queryParams.orderId = '';
this.getList();
},
// 获取列表数据
getList() {
},
},
};
</script>
<style scoped lang="scss">
.querySift {
width: 98%;
height: 100px;
display: flex;
align-items: center;
border-radius: 8px;
background: #FFFFFF;
box-shadow: 0px 2px 6px 0px rgba(0, 0, 0, 0.1);
margin: 20px auto;
}
.concentrate {
width: 98%;
border-radius: 8px;
background: #FFFFFF;
box-shadow: 0px 2px 6px 0px rgba(0, 0, 0, 0.1);
margin: auto;
padding: 24px;
box-sizing: border-box;
}
</style>

View File

@@ -74,17 +74,8 @@
/>
</el-form-item> -->
<el-form-item label="交易日期" prop="tradeDate">
<el-date-picker
v-model="value"
style="width: 240px"
value-format="yyyy-MM-dd HH:mm:ss"
:default-time="['00:00:00', '23:59:59']"
type="daterange"
range-separator=""
start-placeholder="开始日期"
end-placeholder="结束日期"
:clearable=false
></el-date-picker>
<el-date-picker v-model="value" style="width: 240px" value-format="yyyy-MM-dd" type="daterange"
range-separator="" start-placeholder="开始日期" end-placeholder="结束日期" :clearable=false></el-date-picker>
</el-form-item>
<!-- <el-form-item label="交易金额" prop="tradeAmount">
<el-input
@@ -157,7 +148,7 @@
<el-table v-loading="loading" :data="reportList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<!-- <el-table-column label="主键" align="center" prop="id" /> -->
<!-- <el-table-column label="运营商id" align="center" prop="merchantId" />-->
<!-- <el-table-column label="运营商id" align="center" prop="merchantId" />-->
<!-- <el-table-column label="站点id" align="center" prop="stationId" /> -->
<el-table-column label="交易日期" align="center" prop="tradeDate" />
<el-table-column label="用电度数" align="center" prop="useElectricity" />
@@ -169,7 +160,7 @@
<el-table-column label="虚拟金额" align="center" prop="virtualAmount" />
<el-table-column label="交易金额" align="center" prop="tradeAmount" />
<el-table-column label="交易手续费" align="center" prop="tradeFee" />
<!-- <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<!-- <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button
size="mini"
@@ -186,16 +177,11 @@
v-hasPermi="['pile:report:remove']"
>删除</el-button>
</template>
</el-table-column>-->
</el-table-column>-->
</el-table>
<pagination
v-show="total>0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
<pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize"
@pagination="getList" />
<!-- 添加或修改结算订单报对话框 -->
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
@@ -255,7 +241,7 @@ export default {
name: "Report",
data() {
return {
value:'',
value: '',
// 遮罩层
loading: true,
// 选中数组
@@ -290,7 +276,7 @@ export default {
tradeDate: null,
tradeAmount: null,
tradeFee: null,
},
// 表单参数
form: {},
@@ -306,9 +292,10 @@ export default {
/** 查询结算订单报列表 */
getList() {
this.loading = true;
this.queryParams.stationId = this.$route.params.id
this.queryParams.stationId = this.$route.params.id;
listReport(this.queryParams).then(response => {
console.log('查询订单日报',response)
console.log('查询订单日报', response)
this.reportList = response.rows;
this.total = response.total;
this.loading = false;
@@ -343,8 +330,15 @@ export default {
},
/** 搜索按钮操作 */
handleQuery() {
console.log('this.value 日期',this.value)
console.log('this.value 日期', this.value)
this.queryParams.pageNum = 1;
if (this.value != null) {
this.queryParams.startTime = this.value[0];
this.queryParams.endTime = this.value[1];
} else {
this.queryParams.startTime = null;
this.queryParams.endTime = null;
}
this.getList();
},
/** 重置按钮操作 */
@@ -356,7 +350,7 @@ export default {
// 多选框选中数据
handleSelectionChange(selection) {
this.ids = selection.map(item => item.id)
this.single = selection.length!==1
this.single = selection.length !== 1
this.multiple = !selection.length
},
/** 新增按钮操作 */
@@ -398,12 +392,12 @@ export default {
/** 删除按钮操作 */
handleDelete(row) {
const ids = row.id || this.ids;
this.$modal.confirm('是否确认删除结算订单报编号为"' + ids + '"的数据项?').then(function() {
this.$modal.confirm('是否确认删除结算订单报编号为"' + ids + '"的数据项?').then(function () {
return delReport(ids);
}).then(() => {
this.getList();
this.$modal.msgSuccess("删除成功");
}).catch(() => {});
}).catch(() => { });
},
/** 导出按钮操作 */
handleExport() {