| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236 |
- <template>
- <div class="app-container">
- <div class="filter-container filter-view">
- <el-select
- class="filter-view-item"
- v-model="filter.pageVo.userType"
- placeholder="User Type"
- @change="toSearch"
- clearable>
- <el-option
- v-for="item in userTypeOptions"
- :key="item"
- :label="item"
- :value="item" />
- </el-select>
- <div style="flex: 1; max-width: 420px;">
- <el-input
- clearable
- prefix-icon="el-icon-search"
- v-model="filter.pageVo.criteria"
- placeholder="Station ID, Vehicle, Transaction ID, Email, Carpark Code"
- @keyup.enter.native="toSearch"
- @change="toSearch"/>
- </div>
- <!-- <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> -->
- <div>
- <el-button
- type="primary"
- icon="el-icon-search"
- @click="getTableData">
- Search
- </el-button>
- </div>
- </div>
- <el-table
- :data="table.list"
- v-loading="loading">
- <el-table-column
- label="User ID"
- align="center"
- prop="userPk"
- min-width="100"/>
- <el-table-column
- label="Site Name"
- align="center"
- prop="siteName"
- min-width="100"/>
- <el-table-column
- label="Station ID"
- align="center"
- prop="chargeBoxId"
- min-width="100"/>
- <el-table-column
- label="Carpark Code"
- prop="carParkCode"
- align="center"
- min-width="120"/>
- <el-table-column
- label="Start Date/Time"
- align="center"
- prop="startTime"
- min-width="130"/>
- <el-table-column
- label="End Date/Time"
- align="center"
- prop="endTime"
- min-width="130"/>
- <el-table-column
- label="Duration"
- align="center"
- prop="duration"
- min-width="100"/>
- <el-table-column
- label="Rate"
- align="center"
- prop="rate"
- min-width="200"/>
- <el-table-column
- label="Charges"
- align="center"
- prop="charges"
- min-width="100"/>
- </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 apiUser from '../../http/api/apiUser.js'
- import financial from '@/http/api/financial'
- import Pagination from '@/components/Pagination'
- export default {
- data() {
- return {
- loading: false,
- listLoading: false,
- siteOptions: [],
- stationOptions: [],
- userTypeOptions: [],
- table: {
- list: [],
- total: 0
- },
- filter: {
- pageNo: 1,
- pageSize: 10,
- pageVo: {
- date: "",
- sitePk: "",
- criteria: "",
- userType: "",
- chargeBoxId: ""
- }
- },
- }
- },
- components: { Pagination },
- created() {
- this.getUserTypeOption();
- //this.getSiteOptions()
- this.getTableData()
- },
- methods: {
- toSearch() {
- this.filter.pageNo = 1;
- this.getTableData();
- },
- 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;
- })
- },
- getUserTypeOption() {
- apiUser.getUserTypeOptions().then(res => {
- if (res.data) {
- this.userTypeOptions = res.data
- }
- }).catch(error => {
- this.$message({
- message: error,
- type: 'error'
- })
- })
- },
- getTableData() {
- this.loading = true;
- financial.getIdleFeesPages(this.filter).then(res => {
- this.loading = false;
- if (res.data) {
- this.table.total = res.total
- this.table.list = res.data
- } else {
- this.table.total = 0;
- this.table.list = [];
- }
- }).catch(err => {
- this.loading = false;
- this.$message({
- message: err,
- type: 'error'
- })
- this.table.total = 0;
- this.table.list = [];
- })
- }
- }
- }
- </script>
- <style>
-
- </style>
|