|
|
@@ -0,0 +1,187 @@
|
|
|
+<template>
|
|
|
+ <div class="app-container">
|
|
|
+ <el-form
|
|
|
+ :model="filter.pageVo"
|
|
|
+ class="filter-container"
|
|
|
+ label-position="right">
|
|
|
+ <div class="filter-view">
|
|
|
+ <el-form-item>
|
|
|
+ <el-input
|
|
|
+ clearable
|
|
|
+ v-model="filter.pageVo.criteria"
|
|
|
+ placeholder="Search by Number/Email"
|
|
|
+ @keyup.enter.native="handleFilter" />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item>
|
|
|
+ <el-date-picker
|
|
|
+ v-model="filter.pageVo.date"
|
|
|
+ type="month"
|
|
|
+ format="yyyy-MM"
|
|
|
+ value-format="yyyy-MM"
|
|
|
+ placeholder="Filter Date"/>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item>
|
|
|
+ <el-select
|
|
|
+ filterable
|
|
|
+ remote
|
|
|
+ clearable
|
|
|
+ v-model="filter.pageVo.sitePk"
|
|
|
+ :remote-method="(s) => getSiteOptions(s)"
|
|
|
+ placeholder="Filter by site"
|
|
|
+ @change="getStationOptions">
|
|
|
+ <el-option
|
|
|
+ v-for="(item, index) in siteOptions"
|
|
|
+ :key="index"
|
|
|
+ :label="item.siteName"
|
|
|
+ :value="item.sitePk"/>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item>
|
|
|
+ <el-select
|
|
|
+ clearable
|
|
|
+ v-model="filter.pageVo.chargeBoxId"
|
|
|
+ placeholder="Filter by Station ID"
|
|
|
+ v-loading="listLoading">
|
|
|
+ <el-option
|
|
|
+ v-for="(item, index) in stationOptions"
|
|
|
+ :key="index"
|
|
|
+ :label="item.stationId"
|
|
|
+ :value="item.stationId"/>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ <el-button
|
|
|
+ type="primary"
|
|
|
+ icon="el-icon-search"
|
|
|
+ @click="getTableData">
|
|
|
+ Search
|
|
|
+ </el-button>
|
|
|
+ </div>
|
|
|
+ </el-form>
|
|
|
+ <el-table
|
|
|
+ :data="table.list"
|
|
|
+ v-loading="loading">
|
|
|
+ <el-table-column
|
|
|
+ label="Transaction ID"
|
|
|
+ align="center"
|
|
|
+ prop="transactionPk"/>
|
|
|
+ <el-table-column
|
|
|
+ label="Site Name"
|
|
|
+ align="center"
|
|
|
+ prop="siteName"/>
|
|
|
+ <el-table-column
|
|
|
+ label="Station ID"
|
|
|
+ align="center"
|
|
|
+ prop="chargingPk"/>
|
|
|
+ <el-table-column
|
|
|
+ label="Start Date/Time"
|
|
|
+ align="center"
|
|
|
+ prop="startDateTime"/>
|
|
|
+ <el-table-column
|
|
|
+ label="End Date/Time"
|
|
|
+ align="center"
|
|
|
+ prop="endDateTime"/>
|
|
|
+ <el-table-column
|
|
|
+ label="Power (kwh)"
|
|
|
+ align="center"
|
|
|
+ prop="power"/>
|
|
|
+ <el-table-column
|
|
|
+ label="Rate"
|
|
|
+ align="center"
|
|
|
+ prop="rate"/>
|
|
|
+ <el-table-column
|
|
|
+ label="Charges"
|
|
|
+ align="center"
|
|
|
+ prop="charges"/>
|
|
|
+ </el-table>
|
|
|
+ <div class="right">
|
|
|
+ <Pagination
|
|
|
+ v-show="table.total > 0"
|
|
|
+ :total="table.total"
|
|
|
+ :page.sync="filter.pageNo"
|
|
|
+ :limit.sync="filter.pageSize"
|
|
|
+ @pagination="getTableData" />
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+</template>
|
|
|
+
|
|
|
+<script>
|
|
|
+import site from '@/http/api/site'
|
|
|
+import ocpp from '@/http/api/ocpp'
|
|
|
+import financial from '@/http/api/financial'
|
|
|
+import Pagination from '@/components/Pagination'
|
|
|
+export default {
|
|
|
+ data() {
|
|
|
+ return {
|
|
|
+ loading: false,
|
|
|
+ listLoading: false,
|
|
|
+ siteOptions: [],
|
|
|
+ stationOptions: [],
|
|
|
+ table: {
|
|
|
+ list: [],
|
|
|
+ total: 0
|
|
|
+ },
|
|
|
+ filter: {
|
|
|
+ pageNo: 1,
|
|
|
+ pageSize: 10,
|
|
|
+ pageVo: {
|
|
|
+ date: "",
|
|
|
+ sitePk: "",
|
|
|
+ criteria: "",
|
|
|
+ chargeBoxId: ""
|
|
|
+ }
|
|
|
+ },
|
|
|
+ }
|
|
|
+ },
|
|
|
+ components: { Pagination },
|
|
|
+ created() {
|
|
|
+ this.getSiteOptions()
|
|
|
+ this.getTableData()
|
|
|
+ },
|
|
|
+ methods: {
|
|
|
+ getSiteOptions(search) {
|
|
|
+ site.getAllSiteList({siteName: search ?? ""}).then(res => {
|
|
|
+ if (res.data && res.data.length > 0) {
|
|
|
+ this.siteOptions = res.data
|
|
|
+ }
|
|
|
+ });
|
|
|
+ },
|
|
|
+ getStationOptions() {
|
|
|
+ this.listLoading = true;
|
|
|
+ ocpp.getStationPages({
|
|
|
+ pageNo: 1,
|
|
|
+ pageSize: 20,
|
|
|
+ pageVo: {
|
|
|
+ date: "",
|
|
|
+ sitePk: this.filter.pageVo.sitePk
|
|
|
+ }
|
|
|
+ }).then(res => {
|
|
|
+ if (res.data) {
|
|
|
+ this.stationOptions = res.data;
|
|
|
+ }
|
|
|
+ }).finally(() => {
|
|
|
+ this.listLoading = false;
|
|
|
+ })
|
|
|
+ },
|
|
|
+ getTableData() {
|
|
|
+ this.loading = true;
|
|
|
+ financial.getTransactionsPages(this.filter).then(res => {
|
|
|
+ this.loading = false;
|
|
|
+ if (res.data) {
|
|
|
+ this.table.total = res.total
|
|
|
+ this.table.list = res.data
|
|
|
+ }
|
|
|
+ }).catch(err => {
|
|
|
+ this.loading = false;
|
|
|
+ this.$message({
|
|
|
+ message: err,
|
|
|
+ type: 'error'
|
|
|
+ })
|
|
|
+ })
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+</script>
|
|
|
+
|
|
|
+<style>
|
|
|
+
|
|
|
+</style>
|