Commit 0b8f34f9240c831bdeb99f2bf5053e44a0489424
1 parent
f6a81350
完成admin下的房屋详情页面,业主详情页面 车辆详情页面
Showing
34 changed files
with
2287 additions
and
109 deletions
src/api/aCommunity/aCarDetailApplySpaceApi.js
0 → 100644
| 1 | +import request from '@/utils/request' | ||
| 2 | + | ||
| 3 | +export function listAdminParkingSpaceApply(params) { | ||
| 4 | + return new Promise((resolve, reject) => { | ||
| 5 | + request({ | ||
| 6 | + url: '/parkingSpaceApply.listAdminParkingSpaceApply', | ||
| 7 | + method: 'get', | ||
| 8 | + params | ||
| 9 | + }).then(response => { | ||
| 10 | + const res = response.data | ||
| 11 | + if (res.code == 0) { | ||
| 12 | + resolve(res) | ||
| 13 | + } else { | ||
| 14 | + reject(new Error(res.msg || 'Failed to get parking space apply')) | ||
| 15 | + } | ||
| 16 | + }).catch(error => { | ||
| 17 | + reject(error) | ||
| 18 | + }) | ||
| 19 | + }) | ||
| 20 | +} | ||
| 0 | \ No newline at end of file | 21 | \ No newline at end of file |
src/api/aCommunity/aCarDetailCarInoutApi.js
0 → 100644
| 1 | +import request from '@/utils/request' | ||
| 2 | + | ||
| 3 | +export function getCarInoutDetail(params) { | ||
| 4 | + return new Promise((resolve, reject) => { | ||
| 5 | + request({ | ||
| 6 | + url: '/iot.getAdminOpenApi', | ||
| 7 | + method: 'get', | ||
| 8 | + params | ||
| 9 | + }).then(response => { | ||
| 10 | + const res = response.data | ||
| 11 | + if (res.code === 0) { | ||
| 12 | + resolve(res) | ||
| 13 | + } else { | ||
| 14 | + reject(new Error(res.msg || '获取车辆进出记录失败')) | ||
| 15 | + } | ||
| 16 | + }).catch(error => { | ||
| 17 | + reject(error) | ||
| 18 | + }) | ||
| 19 | + }) | ||
| 20 | +} | ||
| 0 | \ No newline at end of file | 21 | \ No newline at end of file |
src/api/aCommunity/aCarDetailFeeApi.js
0 → 100644
| 1 | +import request from '@/utils/request' | ||
| 2 | + | ||
| 3 | +export function listAdminFee(params) { | ||
| 4 | + return new Promise((resolve, reject) => { | ||
| 5 | + request({ | ||
| 6 | + url: '/fee.listAdminFee', | ||
| 7 | + method: 'get', | ||
| 8 | + params | ||
| 9 | + }).then(response => { | ||
| 10 | + const res = response.data | ||
| 11 | + resolve(res) | ||
| 12 | + }).catch(error => { | ||
| 13 | + reject(error) | ||
| 14 | + }) | ||
| 15 | + }) | ||
| 16 | +} | ||
| 0 | \ No newline at end of file | 17 | \ No newline at end of file |
src/api/aCommunity/aCarDetailHisApi.js
0 → 100644
| 1 | +import request from '@/utils/request' | ||
| 2 | + | ||
| 3 | +export function queryAdminHisOwnerCar(params) { | ||
| 4 | + return new Promise((resolve, reject) => { | ||
| 5 | + request({ | ||
| 6 | + url: '/car.queryAdminHisOwnerCar', | ||
| 7 | + method: 'get', | ||
| 8 | + params | ||
| 9 | + }).then(response => { | ||
| 10 | + const res = response.data | ||
| 11 | + if (res.code == 0) { | ||
| 12 | + resolve(res) | ||
| 13 | + } else { | ||
| 14 | + reject(new Error(res.msg || 'Failed to get car history')) | ||
| 15 | + } | ||
| 16 | + }).catch(error => { | ||
| 17 | + reject(error) | ||
| 18 | + }) | ||
| 19 | + }) | ||
| 20 | +} | ||
| 0 | \ No newline at end of file | 21 | \ No newline at end of file |
src/api/aCommunity/aCarDetailMemberApi.js
0 → 100644
| 1 | +import request from '@/utils/request' | ||
| 2 | + | ||
| 3 | +export function queryAdminOwnerCars(params) { | ||
| 4 | + return new Promise((resolve, reject) => { | ||
| 5 | + request({ | ||
| 6 | + url: '/owner.queryAdminOwnerCars', | ||
| 7 | + method: 'get', | ||
| 8 | + params | ||
| 9 | + }).then(response => { | ||
| 10 | + const res = response.data | ||
| 11 | + if (res.code == 0) { | ||
| 12 | + resolve(res) | ||
| 13 | + } else { | ||
| 14 | + reject(new Error(res.msg || 'Failed to get owner cars')) | ||
| 15 | + } | ||
| 16 | + }).catch(error => { | ||
| 17 | + reject(error) | ||
| 18 | + }) | ||
| 19 | + }) | ||
| 20 | +} | ||
| 0 | \ No newline at end of file | 21 | \ No newline at end of file |
src/api/aCommunity/aCarDetailOwnerApi.js
0 → 100644
| 1 | +import request from '@/utils/request' | ||
| 2 | + | ||
| 3 | +export function queryAdminOwners(params) { | ||
| 4 | + return new Promise((resolve, reject) => { | ||
| 5 | + request({ | ||
| 6 | + url: '/owner.queryAdminOwners', | ||
| 7 | + method: 'get', | ||
| 8 | + params | ||
| 9 | + }).then(response => { | ||
| 10 | + const res = response.data | ||
| 11 | + if (res.code == 0) { | ||
| 12 | + resolve(res) | ||
| 13 | + } else { | ||
| 14 | + reject(new Error(res.msg || 'Failed to get owners')) | ||
| 15 | + } | ||
| 16 | + }).catch(error => { | ||
| 17 | + reject(error) | ||
| 18 | + }) | ||
| 19 | + }) | ||
| 20 | +} | ||
| 0 | \ No newline at end of file | 21 | \ No newline at end of file |
src/api/aCommunity/aCarDetailTransactionCarApi.js
0 → 100644
| 1 | +import request from '@/utils/request' | ||
| 2 | + | ||
| 3 | +export function listAdminMachineTranslates(params) { | ||
| 4 | + return new Promise((resolve, reject) => { | ||
| 5 | + request({ | ||
| 6 | + url: '/machineTranslate.listAdminMachineTranslates', | ||
| 7 | + method: 'get', | ||
| 8 | + params | ||
| 9 | + }).then(response => { | ||
| 10 | + const res = response.data | ||
| 11 | + resolve(res) | ||
| 12 | + | ||
| 13 | + }).catch(error => { | ||
| 14 | + reject(error) | ||
| 15 | + }) | ||
| 16 | + }) | ||
| 17 | +} | ||
| 0 | \ No newline at end of file | 18 | \ No newline at end of file |
src/api/aCommunity/adminCarDetailApi.js
0 → 100644
| 1 | +import request from '@/utils/request' | ||
| 2 | + | ||
| 3 | +// 获取车主车辆信息 | ||
| 4 | +export function getOwnerCarInfo(params) { | ||
| 5 | + return new Promise((resolve, reject) => { | ||
| 6 | + request({ | ||
| 7 | + url: '/owner.queryAdminOwnerCars', | ||
| 8 | + method: 'get', | ||
| 9 | + params | ||
| 10 | + }).then(response => { | ||
| 11 | + const res = response.data | ||
| 12 | + if (res.code === 0) { | ||
| 13 | + resolve(res) | ||
| 14 | + } else { | ||
| 15 | + reject(new Error(res.msg || 'Failed to get owner car info')) | ||
| 16 | + } | ||
| 17 | + }).catch(error => { | ||
| 18 | + reject(error) | ||
| 19 | + }) | ||
| 20 | + }) | ||
| 21 | +} | ||
| 22 | + | ||
| 23 | +// 获取车辆费用列表 | ||
| 24 | +export function getCarFeeList(params) { | ||
| 25 | + return new Promise((resolve, reject) => { | ||
| 26 | + request({ | ||
| 27 | + url: '/carFee.listCarFee', | ||
| 28 | + method: 'get', | ||
| 29 | + params | ||
| 30 | + }).then(response => { | ||
| 31 | + const res = response.data | ||
| 32 | + if (res.code === 0) { | ||
| 33 | + resolve(res) | ||
| 34 | + } else { | ||
| 35 | + reject(new Error(res.msg || 'Failed to get car fee list')) | ||
| 36 | + } | ||
| 37 | + }).catch(error => { | ||
| 38 | + reject(error) | ||
| 39 | + }) | ||
| 40 | + }) | ||
| 41 | +} | ||
| 42 | + | ||
| 43 | +// 获取车辆缴费记录 | ||
| 44 | +export function getCarPaymentHistory(params) { | ||
| 45 | + return new Promise((resolve, reject) => { | ||
| 46 | + request({ | ||
| 47 | + url: '/payment.listCarPayment', | ||
| 48 | + method: 'get', | ||
| 49 | + params | ||
| 50 | + }).then(response => { | ||
| 51 | + const res = response.data | ||
| 52 | + if (res.code === 0) { | ||
| 53 | + resolve(res) | ||
| 54 | + } else { | ||
| 55 | + reject(new Error(res.msg || 'Failed to get car payment history')) | ||
| 56 | + } | ||
| 57 | + }).catch(error => { | ||
| 58 | + reject(error) | ||
| 59 | + }) | ||
| 60 | + }) | ||
| 61 | +} | ||
| 62 | + | ||
| 63 | +// 获取车辆修改记录 | ||
| 64 | +export function getCarModificationHistory(params) { | ||
| 65 | + return new Promise((resolve, reject) => { | ||
| 66 | + request({ | ||
| 67 | + url: '/car.listCarModification', | ||
| 68 | + method: 'get', | ||
| 69 | + params | ||
| 70 | + }).then(response => { | ||
| 71 | + const res = response.data | ||
| 72 | + if (res.code === 0) { | ||
| 73 | + resolve(res) | ||
| 74 | + } else { | ||
| 75 | + reject(new Error(res.msg || 'Failed to get car modification history')) | ||
| 76 | + } | ||
| 77 | + }).catch(error => { | ||
| 78 | + reject(error) | ||
| 79 | + }) | ||
| 80 | + }) | ||
| 81 | +} | ||
| 82 | + | ||
| 83 | +// 同步车牌信息 | ||
| 84 | +export function syncLicensePlate(data) { | ||
| 85 | + return new Promise((resolve, reject) => { | ||
| 86 | + request({ | ||
| 87 | + url: '/car.syncLicensePlate', | ||
| 88 | + method: 'post', | ||
| 89 | + data | ||
| 90 | + }).then(response => { | ||
| 91 | + const res = response.data | ||
| 92 | + if (res.code === 0) { | ||
| 93 | + resolve(res) | ||
| 94 | + } else { | ||
| 95 | + reject(new Error(res.msg || 'Failed to sync license plate')) | ||
| 96 | + } | ||
| 97 | + }).catch(error => { | ||
| 98 | + reject(error) | ||
| 99 | + }) | ||
| 100 | + }) | ||
| 101 | +} | ||
| 0 | \ No newline at end of file | 102 | \ No newline at end of file |
src/components/aCommunity/aCarDetailApplySpace.vue
0 → 100644
| 1 | +<template> | ||
| 2 | + <div> | ||
| 3 | + <el-row> | ||
| 4 | + <el-col :span="24" class="text-right"></el-col> | ||
| 5 | + </el-row> | ||
| 6 | + | ||
| 7 | + <div class="margin-top"> | ||
| 8 | + <el-table :data="aCarDetailApplySpaceInfo.applys" style="width: 100%"> | ||
| 9 | + <el-table-column prop="applyId" :label="$t('carDetailApply.applyId')" align="center"></el-table-column> | ||
| 10 | + <el-table-column prop="carNum" :label="$t('carDetailApply.carNum')" align="center"></el-table-column> | ||
| 11 | + <el-table-column :label="$t('carDetailApply.parkingSpace')" align="center"> | ||
| 12 | + <template slot-scope="scope"> | ||
| 13 | + <span v-if="scope.row.psId != null && scope.row.psId != ''"> | ||
| 14 | + {{scope.row.areaNum}}{{$t('carDetailApply.parkingLot')}} - {{scope.row.num}}{{$t('carDetailApply.space')}} | ||
| 15 | + </span> | ||
| 16 | + <span v-else>{{$t('carDetailApply.none')}}</span> | ||
| 17 | + </template> | ||
| 18 | + </el-table-column> | ||
| 19 | + <el-table-column prop="carBrand" :label="$t('carDetailApply.carBrand')" align="center"></el-table-column> | ||
| 20 | + <el-table-column :label="$t('carDetailApply.carType')" align="center"> | ||
| 21 | + <template slot-scope="scope"> | ||
| 22 | + {{_getParkingSpaceApplyCatType(scope.row.carType)}} | ||
| 23 | + </template> | ||
| 24 | + </el-table-column> | ||
| 25 | + <el-table-column prop="carColor" :label="$t('carDetailApply.color')" align="center"></el-table-column> | ||
| 26 | + <el-table-column prop="startTime" :label="$t('carDetailApply.startTime')" align="center"></el-table-column> | ||
| 27 | + <el-table-column prop="endTime" :label="$t('carDetailApply.endTime')" align="center"></el-table-column> | ||
| 28 | + <el-table-column prop="applyPersonName" :label="$t('carDetailApply.applicant')" align="center"></el-table-column> | ||
| 29 | + <el-table-column prop="applyPersonLink" :label="$t('carDetailApply.phone')" align="center"></el-table-column> | ||
| 30 | + <el-table-column :label="$t('carDetailApply.result')" align="center"> | ||
| 31 | + <template slot-scope="scope"> | ||
| 32 | + <el-tag v-if="scope.row.state == '1001'" type="success"> | ||
| 33 | + {{_getParkingSpaceApplyState(scope.row.state)}} | ||
| 34 | + </el-tag> | ||
| 35 | + <el-tag v-else-if="scope.row.state == '4004'" type="danger"> | ||
| 36 | + {{_getParkingSpaceApplyState(scope.row.state)}} | ||
| 37 | + </el-tag> | ||
| 38 | + <el-tag v-else-if="scope.row.state == '2002'" type="info"> | ||
| 39 | + {{_getParkingSpaceApplyState(scope.row.state)}} | ||
| 40 | + </el-tag> | ||
| 41 | + <el-tag v-else type="info"> | ||
| 42 | + {{_getParkingSpaceApplyState(scope.row.state)}} | ||
| 43 | + </el-tag> | ||
| 44 | + </template> | ||
| 45 | + </el-table-column> | ||
| 46 | + </el-table> | ||
| 47 | + | ||
| 48 | + <el-row class="margin-top"> | ||
| 49 | + <el-col :span="12"></el-col> | ||
| 50 | + <el-col :span="12" class="text-right"> | ||
| 51 | + <el-pagination | ||
| 52 | + @current-change="handlePageChange" | ||
| 53 | + :current-page="currentPage" | ||
| 54 | + :page-size="pageSize" | ||
| 55 | + layout="total, prev, pager, next" | ||
| 56 | + :total="total"> | ||
| 57 | + </el-pagination> | ||
| 58 | + </el-col> | ||
| 59 | + </el-row> | ||
| 60 | + </div> | ||
| 61 | + </div> | ||
| 62 | +</template> | ||
| 63 | + | ||
| 64 | +<script> | ||
| 65 | +import { listAdminParkingSpaceApply } from '@/api/aCommunity/aCarDetailApplySpaceApi' | ||
| 66 | + | ||
| 67 | +export default { | ||
| 68 | + name: 'ACarDetailApplySpace', | ||
| 69 | + data() { | ||
| 70 | + return { | ||
| 71 | + aCarDetailApplySpaceInfo: { | ||
| 72 | + applys: [], | ||
| 73 | + carId: '', | ||
| 74 | + carNum: '', | ||
| 75 | + memberId: '' | ||
| 76 | + }, | ||
| 77 | + currentPage: 1, | ||
| 78 | + pageSize: 10, | ||
| 79 | + total: 0 | ||
| 80 | + } | ||
| 81 | + }, | ||
| 82 | + methods: { | ||
| 83 | + open(data) { | ||
| 84 | + this.handleSwitch(data) | ||
| 85 | + }, | ||
| 86 | + handleSwitch(data) { | ||
| 87 | + this.aCarDetailApplySpaceInfo.carId = data.carId | ||
| 88 | + this.aCarDetailApplySpaceInfo.carNum = data.carNum | ||
| 89 | + this.aCarDetailApplySpaceInfo.memberId = data.memberId | ||
| 90 | + this._loadACarDetailApplySpaceData(1, this.pageSize) | ||
| 91 | + }, | ||
| 92 | + handlePageChange(page) { | ||
| 93 | + this.currentPage = page | ||
| 94 | + this._loadACarDetailApplySpaceData(page, this.pageSize) | ||
| 95 | + }, | ||
| 96 | + async _loadACarDetailApplySpaceData(page, row) { | ||
| 97 | + try { | ||
| 98 | + const param = { | ||
| 99 | + carNum: this.aCarDetailApplySpaceInfo.carNum, | ||
| 100 | + page, | ||
| 101 | + row | ||
| 102 | + } | ||
| 103 | + const response = await listAdminParkingSpaceApply(param) | ||
| 104 | + this.aCarDetailApplySpaceInfo.applys = response.data | ||
| 105 | + this.total = response.records | ||
| 106 | + } catch (error) { | ||
| 107 | + console.error('Failed to load apply space data:', error) | ||
| 108 | + } | ||
| 109 | + }, | ||
| 110 | + _getParkingSpaceApplyState(state) { | ||
| 111 | + if (state == '1001') { | ||
| 112 | + return this.$t('carDetailApply.pendingReview') | ||
| 113 | + } else if (state == '2002') { | ||
| 114 | + return this.$t('carDetailApply.pendingPayment') | ||
| 115 | + } else if (state == '3003') { | ||
| 116 | + return this.$t('carDetailApply.completed') | ||
| 117 | + } else if (state == '4004') { | ||
| 118 | + return this.$t('carDetailApply.reviewFailed') | ||
| 119 | + } | ||
| 120 | + return this.$t('carDetailApply.abnormalStatus') | ||
| 121 | + }, | ||
| 122 | + _getParkingSpaceApplyCatType(type) { | ||
| 123 | + if (type == '9901') { | ||
| 124 | + return this.$t('carDetailApply.familyCar') | ||
| 125 | + } else if (type == '9902') { | ||
| 126 | + return this.$t('carDetailApply.bus') | ||
| 127 | + } else if (type == '9903') { | ||
| 128 | + return this.$t('carDetailApply.truck') | ||
| 129 | + } | ||
| 130 | + return this.$t('carDetailApply.abnormalCar') | ||
| 131 | + } | ||
| 132 | + } | ||
| 133 | +} | ||
| 134 | +</script> | ||
| 135 | + | ||
| 136 | +<style scoped> | ||
| 137 | +.margin-top { | ||
| 138 | + margin-top: 20px; | ||
| 139 | +} | ||
| 140 | +.text-right { | ||
| 141 | + text-align: right; | ||
| 142 | +} | ||
| 143 | +</style> | ||
| 0 | \ No newline at end of file | 144 | \ No newline at end of file |
src/components/aCommunity/aCarDetailApplySpaceDemo.vue
0 → 100644
| 1 | +<template> | ||
| 2 | + <a-car-detail-apply-space ref="carDetailApply" /> | ||
| 3 | +</template> | ||
| 4 | + | ||
| 5 | +<script> | ||
| 6 | +import ACarDetailApplySpace from './aCarDetailApplySpace' | ||
| 7 | + | ||
| 8 | +export default { | ||
| 9 | + components: { | ||
| 10 | + ACarDetailApplySpace | ||
| 11 | + }, | ||
| 12 | + methods: { | ||
| 13 | + open(data) { | ||
| 14 | + this.$refs.carDetailApply.handleSwitch(data) | ||
| 15 | + } | ||
| 16 | + } | ||
| 17 | +} | ||
| 18 | +</script> | ||
| 0 | \ No newline at end of file | 19 | \ No newline at end of file |
src/components/aCommunity/aCarDetailCarInout.vue
0 → 100644
| 1 | +<template> | ||
| 2 | + <div class="car-inout-container"> | ||
| 3 | + <el-row> | ||
| 4 | + <el-col :span="24" class="text-right"> | ||
| 5 | + <!-- 可以在这里添加操作按钮 --> | ||
| 6 | + </el-col> | ||
| 7 | + </el-row> | ||
| 8 | + | ||
| 9 | + <div class="margin-top"> | ||
| 10 | + <el-table | ||
| 11 | + :data="aCarDetailCarInoutInfo.carIns" | ||
| 12 | + border | ||
| 13 | + style="width: 100%" | ||
| 14 | + class="footable" | ||
| 15 | + > | ||
| 16 | + <el-table-column prop="photoJpg" :label="$t('aCarDetailCarInout.entryImage')" align="center"> | ||
| 17 | + <template slot-scope="scope"> | ||
| 18 | + <img | ||
| 19 | + style="width: 60px; height: 60px;" | ||
| 20 | + class="border-radius" | ||
| 21 | + :src="scope.row.photoJpg || '/img/noPhoto.jpg'" | ||
| 22 | + @click="_carInoutOpenFile(scope.row.photoJpg)" | ||
| 23 | + /> | ||
| 24 | + </template> | ||
| 25 | + </el-table-column> | ||
| 26 | + <el-table-column prop="inoutId" :label="$t('aCarDetailCarInout.inoutNumber')" align="center" /> | ||
| 27 | + <el-table-column :label="$t('aCarDetailCarInout.vehicleStatus')" align="center"> | ||
| 28 | + <template slot-scope="scope"> | ||
| 29 | + {{ scope.row.carInout == '3306' ? $t('aCarDetailCarInout.entry') : $t('aCarDetailCarInout.exit') }}({{ scope.row.stateName }}) | ||
| 30 | + </template> | ||
| 31 | + </el-table-column> | ||
| 32 | + <el-table-column prop="carNum" :label="$t('aCarDetailCarInout.plateNumber')" align="center" /> | ||
| 33 | + <el-table-column prop="paNum" :label="$t('aCarDetailCarInout.parkingLot')" align="center" /> | ||
| 34 | + <el-table-column :label="$t('aCarDetailCarInout.billingRule')" align="center"> | ||
| 35 | + <template slot-scope="scope"> | ||
| 36 | + <span @click="_viewTempFeeConfigInOutCar(scope.row.configId)" style="cursor: pointer;"> | ||
| 37 | + {{ scope.row.feeName }} | ||
| 38 | + <i class="el-icon-info"></i> | ||
| 39 | + </span> | ||
| 40 | + </template> | ||
| 41 | + </el-table-column> | ||
| 42 | + <el-table-column prop="carTypeName" :label="$t('aCarDetailCarInout.plateType')" align="center" /> | ||
| 43 | + <el-table-column prop="inTime" :label="$t('aCarDetailCarInout.entryTime')" align="center" /> | ||
| 44 | + <el-table-column :label="$t('aCarDetailCarInout.exitTime')" align="center"> | ||
| 45 | + <template slot-scope="scope"> | ||
| 46 | + {{ scope.row.carInout != '3307' ? '-' : scope.row.outTime }} | ||
| 47 | + </template> | ||
| 48 | + </el-table-column> | ||
| 49 | + <el-table-column :label="$t('aCarDetailCarInout.parkingTime')" align="center"> | ||
| 50 | + <template slot-scope="scope"> | ||
| 51 | + {{ scope.row.hours }}{{ $t('aCarDetailCarInout.hour') }}{{ scope.row.min }}{{ $t('aCarDetailCarInout.minute') }} | ||
| 52 | + </template> | ||
| 53 | + </el-table-column> | ||
| 54 | + <el-table-column :label="$t('aCarDetailCarInout.chargeAmount')" align="center"> | ||
| 55 | + <template slot-scope="scope"> | ||
| 56 | + {{ scope.row.carType != 'T' ? '-' : scope.row.payCharge }} | ||
| 57 | + </template> | ||
| 58 | + </el-table-column> | ||
| 59 | + <el-table-column prop="remark" :label="$t('aCarDetailCarInout.remark')" align="center" /> | ||
| 60 | + </el-table> | ||
| 61 | + | ||
| 62 | + <el-row class="margin-top"> | ||
| 63 | + <el-col :span="8" :offset="16"> | ||
| 64 | + <el-pagination | ||
| 65 | + @current-change="handleCurrentChange" | ||
| 66 | + :current-page="currentPage" | ||
| 67 | + :page-size="pageSize" | ||
| 68 | + layout="total, prev, pager, next, jumper" | ||
| 69 | + :total="total" | ||
| 70 | + > | ||
| 71 | + </el-pagination> | ||
| 72 | + </el-col> | ||
| 73 | + </el-row> | ||
| 74 | + </div> | ||
| 75 | + </div> | ||
| 76 | +</template> | ||
| 77 | + | ||
| 78 | +<script> | ||
| 79 | +import { getCarInoutDetail } from '@/api/aCommunity/aCarDetailCarInoutApi' | ||
| 80 | + | ||
| 81 | +export default { | ||
| 82 | + name: 'ACarDetailCarInout', | ||
| 83 | + data() { | ||
| 84 | + return { | ||
| 85 | + aCarDetailCarInoutInfo: { | ||
| 86 | + carIns: [], | ||
| 87 | + carId: '', | ||
| 88 | + memberId: '', | ||
| 89 | + carNum: '', | ||
| 90 | + areaNum: '' | ||
| 91 | + }, | ||
| 92 | + currentPage: 1, | ||
| 93 | + pageSize: 10, | ||
| 94 | + total: 0 | ||
| 95 | + } | ||
| 96 | + }, | ||
| 97 | + methods: { | ||
| 98 | + open(data) { | ||
| 99 | + this.handleSwitch(data) | ||
| 100 | + }, | ||
| 101 | + handleSwitch(data) { | ||
| 102 | + this.aCarDetailCarInoutInfo.carId = data.carId | ||
| 103 | + this.aCarDetailCarInoutInfo.carNum = data.carNum | ||
| 104 | + this.aCarDetailCarInoutInfo.areaNum = data.areaNum | ||
| 105 | + this.aCarDetailCarInoutInfo.memberId = data.memberId | ||
| 106 | + this._loadACarDetailCarInoutData(this.currentPage, this.pageSize) | ||
| 107 | + }, | ||
| 108 | + handleNotify() { | ||
| 109 | + this._loadACarDetailCarInoutData(this.currentPage, this.pageSize) | ||
| 110 | + }, | ||
| 111 | + handleCurrentChange(val) { | ||
| 112 | + this.currentPage = val | ||
| 113 | + this._loadACarDetailCarInoutData(val, this.pageSize) | ||
| 114 | + }, | ||
| 115 | + _loadACarDetailCarInoutData(page, row) { | ||
| 116 | + const params = { | ||
| 117 | + carNum: this.aCarDetailCarInoutInfo.carNum, | ||
| 118 | + paNum: this.aCarDetailCarInoutInfo.areaNum, | ||
| 119 | + iotApiCode: 'listCarInoutDetailBmoImpl', | ||
| 120 | + page: page, | ||
| 121 | + row: row | ||
| 122 | + } | ||
| 123 | + | ||
| 124 | + getCarInoutDetail(params) | ||
| 125 | + .then(response => { | ||
| 126 | + const res = response.data | ||
| 127 | + this.aCarDetailCarInoutInfo.carIns = res.data | ||
| 128 | + this.total = res.records | ||
| 129 | + }) | ||
| 130 | + .catch(error => { | ||
| 131 | + console.error('请求失败:', error) | ||
| 132 | + }) | ||
| 133 | + }, | ||
| 134 | + _carInoutOpenFile(photoJpg) { | ||
| 135 | + if (photoJpg) { | ||
| 136 | + // 这里实现打开图片的逻辑 | ||
| 137 | + console.log('打开图片:', photoJpg) | ||
| 138 | + } | ||
| 139 | + }, | ||
| 140 | + _viewTempFeeConfigInOutCar(configId) { | ||
| 141 | + // 这里实现查看计费规则的逻辑 | ||
| 142 | + console.log('查看计费规则:', configId) | ||
| 143 | + } | ||
| 144 | + } | ||
| 145 | +} | ||
| 146 | +</script> | ||
| 147 | + | ||
| 148 | +<style scoped> | ||
| 149 | +.car-inout-container { | ||
| 150 | + padding: 20px; | ||
| 151 | +} | ||
| 152 | +.margin-top { | ||
| 153 | + margin-top: 20px; | ||
| 154 | +} | ||
| 155 | +.border-radius { | ||
| 156 | + border-radius: 4px; | ||
| 157 | +} | ||
| 158 | +.text-right { | ||
| 159 | + text-align: right; | ||
| 160 | +} | ||
| 161 | +</style> | ||
| 0 | \ No newline at end of file | 162 | \ No newline at end of file |
src/components/aCommunity/aCarDetailCarInoutDemo.vue
0 → 100644
| 1 | +<template> | ||
| 2 | + <a-car-detail-car-inout ref="carDetailCarInout" /> | ||
| 3 | +</template> | ||
| 4 | + | ||
| 5 | +<script> | ||
| 6 | +import ACarDetailCarInout from './aCarDetailCarInout' | ||
| 7 | + | ||
| 8 | +export default { | ||
| 9 | + components: { | ||
| 10 | + ACarDetailCarInout | ||
| 11 | + }, | ||
| 12 | + methods: { | ||
| 13 | + open(data) { | ||
| 14 | + this.$refs.carDetailCarInout.handleSwitch(data) | ||
| 15 | + }, | ||
| 16 | + refresh() { | ||
| 17 | + this.$refs.carDetailCarInout.handleNotify() | ||
| 18 | + } | ||
| 19 | + } | ||
| 20 | +} | ||
| 21 | +</script> | ||
| 0 | \ No newline at end of file | 22 | \ No newline at end of file |
src/components/aCommunity/aCarDetailFee.vue
0 → 100644
| 1 | +<template> | ||
| 2 | + <div> | ||
| 3 | + <el-row> | ||
| 4 | + <el-col :span="24" class="text-right"></el-col> | ||
| 5 | + </el-row> | ||
| 6 | + | ||
| 7 | + <div class="margin-top"> | ||
| 8 | + <el-table :data="aCarDetailFeeInfo.fees" style="width: 100%"> | ||
| 9 | + <el-table-column prop="feeName" :label="$t('carDetailFee.feeItem')" align="center"> | ||
| 10 | + <template slot-scope="scope"> | ||
| 11 | + <span class="hand" @click="_viewCarFeeConfig(scope.row)"> | ||
| 12 | + {{ scope.row.feeName }} | ||
| 13 | + <i class="el-icon-info"></i> | ||
| 14 | + </span> | ||
| 15 | + </template> | ||
| 16 | + </el-table-column> | ||
| 17 | + <el-table-column prop="feeFlagName" :label="$t('carDetailFee.feeFlag')" align="center"></el-table-column> | ||
| 18 | + <el-table-column prop="feeTypeCdName" :label="$t('carDetailFee.feeType')" align="center"></el-table-column> | ||
| 19 | + <el-table-column prop="amountOwed" :label="$t('carDetailFee.amountOwed')" align="center"></el-table-column> | ||
| 20 | + <el-table-column prop="startTime" :label="$t('carDetailFee.createTime')" align="center"></el-table-column> | ||
| 21 | + <el-table-column :label="$t('carDetailFee.duePeriod')" align="center"> | ||
| 22 | + <template slot-scope="scope"> | ||
| 23 | + {{ _getEndTime(scope.row) }}~<br />{{ _getDeadlineTime(scope.row) }} | ||
| 24 | + </template> | ||
| 25 | + </el-table-column> | ||
| 26 | + <el-table-column :label="$t('carDetailFee.remark')" align="center"> | ||
| 27 | + <template slot-scope="scope"> | ||
| 28 | + <div v-if="scope.row.feeTypeCd == '888800010015' || scope.row.feeTypeCd == '888800010016'"> | ||
| 29 | + <div>{{ $t('carDetailFee.preDegrees') }}:{{ scope.row.preDegrees }}</div> | ||
| 30 | + <div>{{ $t('carDetailFee.curDegrees') }}:{{ scope.row.curDegrees }}</div> | ||
| 31 | + <div>{{ $t('carDetailFee.unitPrice') }}:{{ scope.row.mwPrice ? scope.row.mwPrice : scope.row.squarePrice | ||
| 32 | + }}</div> | ||
| 33 | + <div>{{ $t('carDetailFee.additionalFee') }}:{{ scope.row.additionalAmount }}</div> | ||
| 34 | + </div> | ||
| 35 | + <div v-else> | ||
| 36 | + <div>{{ $t('carDetailFee.unitPrice') }}:{{ scope.row.squarePrice }}</div> | ||
| 37 | + <div>{{ $t('carDetailFee.fixedFee') }}:{{ scope.row.additionalAmount }}</div> | ||
| 38 | + </div> | ||
| 39 | + </template> | ||
| 40 | + </el-table-column> | ||
| 41 | + <el-table-column prop="stateName" :label="$t('carDetailFee.status')" align="center"></el-table-column> | ||
| 42 | + <el-table-column :label="$t('carDetailFee.operation')" align="center"></el-table-column> | ||
| 43 | + </el-table> | ||
| 44 | + | ||
| 45 | + <el-row class="margin-top"> | ||
| 46 | + <el-col :span="12"> | ||
| 47 | + <span>{{ $t('carDetailFee.paymentNotice') }}</span> | ||
| 48 | + </el-col> | ||
| 49 | + <el-col :span="12" class="text-right"> | ||
| 50 | + <el-pagination @current-change="handlePageChange" :current-page="currentPage" :page-size="pageSize" | ||
| 51 | + layout="total, prev, pager, next" :total="total"> | ||
| 52 | + </el-pagination> | ||
| 53 | + </el-col> | ||
| 54 | + </el-row> | ||
| 55 | + </div> | ||
| 56 | + </div> | ||
| 57 | +</template> | ||
| 58 | + | ||
| 59 | +<script> | ||
| 60 | +import { listAdminFee } from '@/api/aCommunity/aCarDetailFeeApi' | ||
| 61 | + | ||
| 62 | +export default { | ||
| 63 | + name: 'ACarDetailFee', | ||
| 64 | + data() { | ||
| 65 | + return { | ||
| 66 | + aCarDetailFeeInfo: { | ||
| 67 | + fees: [], | ||
| 68 | + carId: '', | ||
| 69 | + memberId: '', | ||
| 70 | + carNum: '' | ||
| 71 | + }, | ||
| 72 | + currentPage: 1, | ||
| 73 | + pageSize: 10, | ||
| 74 | + total: 0 | ||
| 75 | + } | ||
| 76 | + }, | ||
| 77 | + methods: { | ||
| 78 | + open(data) { | ||
| 79 | + this.aCarDetailFeeInfo.carId = data.carId | ||
| 80 | + this.aCarDetailFeeInfo.carNum = data.carNum | ||
| 81 | + this.aCarDetailFeeInfo.memberId = data.memberId | ||
| 82 | + this._loadACarDetailFeeData(1, this.pageSize) | ||
| 83 | + }, | ||
| 84 | + handleNotify() { | ||
| 85 | + this._loadACarDetailFeeData(this.currentPage, this.pageSize) | ||
| 86 | + }, | ||
| 87 | + handlePageChange(page) { | ||
| 88 | + this.currentPage = page | ||
| 89 | + this._loadACarDetailFeeData(page, this.pageSize) | ||
| 90 | + }, | ||
| 91 | + async _loadACarDetailFeeData(page, row) { | ||
| 92 | + try { | ||
| 93 | + const param = { | ||
| 94 | + payerObjId: this.aCarDetailFeeInfo.memberId, | ||
| 95 | + page, | ||
| 96 | + row | ||
| 97 | + } | ||
| 98 | + const response = await listAdminFee(param) | ||
| 99 | + this.aCarDetailFeeInfo.fees = response.fees | ||
| 100 | + this.total = response.records | ||
| 101 | + } catch (error) { | ||
| 102 | + console.error('Failed to load fee data:', error) | ||
| 103 | + } | ||
| 104 | + }, | ||
| 105 | + _getDeadlineTime(fee) { | ||
| 106 | + if (fee.amountOwed == 0 && fee.endTime == fee.deadlineTime) { | ||
| 107 | + return "-" | ||
| 108 | + } | ||
| 109 | + if (fee.state == '2009001') { | ||
| 110 | + return "-" | ||
| 111 | + } | ||
| 112 | + return fee.deadlineTime | ||
| 113 | + }, | ||
| 114 | + _getEndTime(fee) { | ||
| 115 | + if (fee.state == '2009001') { | ||
| 116 | + return "-" | ||
| 117 | + } | ||
| 118 | + return fee.endTime | ||
| 119 | + }, | ||
| 120 | + _viewCarFeeConfig(fee) { | ||
| 121 | + // Implement view fee config logic | ||
| 122 | + console.log(fee) | ||
| 123 | + } | ||
| 124 | + } | ||
| 125 | +} | ||
| 126 | +</script> | ||
| 127 | + | ||
| 128 | +<style scoped> | ||
| 129 | +.hand { | ||
| 130 | + cursor: pointer; | ||
| 131 | +} | ||
| 132 | + | ||
| 133 | +.margin-top { | ||
| 134 | + margin-top: 20px; | ||
| 135 | +} | ||
| 136 | + | ||
| 137 | +.text-right { | ||
| 138 | + text-align: right; | ||
| 139 | +} | ||
| 140 | +</style> | ||
| 0 | \ No newline at end of file | 141 | \ No newline at end of file |
src/components/aCommunity/aCarDetailFeeDemo.vue
0 → 100644
| 1 | +<template> | ||
| 2 | + <a-car-detail-fee ref="carDetailFee" /> | ||
| 3 | +</template> | ||
| 4 | + | ||
| 5 | +<script> | ||
| 6 | +import ACarDetailFee from './aCarDetailFee' | ||
| 7 | + | ||
| 8 | +export default { | ||
| 9 | + components: { | ||
| 10 | + ACarDetailFee | ||
| 11 | + }, | ||
| 12 | + methods: { | ||
| 13 | + open(data) { | ||
| 14 | + this.$refs.carDetailFee.handleSwitch(data) | ||
| 15 | + }, | ||
| 16 | + refresh() { | ||
| 17 | + this.$refs.carDetailFee.handleNotify() | ||
| 18 | + } | ||
| 19 | + } | ||
| 20 | +} | ||
| 21 | +</script> | ||
| 0 | \ No newline at end of file | 22 | \ No newline at end of file |
src/components/aCommunity/aCarDetailHis.vue
0 → 100644
| 1 | +<template> | ||
| 2 | + <div> | ||
| 3 | + <el-row> | ||
| 4 | + <el-col :span="24" class="text-right"></el-col> | ||
| 5 | + </el-row> | ||
| 6 | + | ||
| 7 | + <div class="margin-top"> | ||
| 8 | + <el-table :data="aCarDetailHisInfo.cars" style="width: 100%"> | ||
| 9 | + <el-table-column prop="carNum" :label="$t('carDetailHis.carNum')" align="center"></el-table-column> | ||
| 10 | + <el-table-column :label="$t('carDetailHis.leaseType')" align="center"> | ||
| 11 | + <template slot-scope="scope"> | ||
| 12 | + <span v-if="scope.row.leaseType == 'T'">{{$t('carDetailHis.tempCar')}}</span> | ||
| 13 | + <span v-else>{{scope.row.leaseTypeName}}</span> | ||
| 14 | + </template> | ||
| 15 | + </el-table-column> | ||
| 16 | + <el-table-column prop="carTypeName" :label="$t('carDetailHis.carType')" align="center"></el-table-column> | ||
| 17 | + <el-table-column prop="carColor" :label="$t('carDetailHis.color')" align="center"></el-table-column> | ||
| 18 | + <el-table-column :label="$t('carDetailHis.owner')" align="center"> | ||
| 19 | + <template slot-scope="scope"> | ||
| 20 | + <div class="hand">{{scope.row.ownerName}}({{scope.row.link}})</div> | ||
| 21 | + </template> | ||
| 22 | + </el-table-column> | ||
| 23 | + <el-table-column :label="$t('carDetailHis.parkingSpace')" align="center"> | ||
| 24 | + <template slot-scope="scope"> | ||
| 25 | + <span v-if="scope.row.areaNum && scope.row.state == '1001'"> | ||
| 26 | + {{scope.row.areaNum}}-{{scope.row.num}} | ||
| 27 | + </span> | ||
| 28 | + <span v-else>{{$t('carDetailHis.spaceReleased')}}</span> | ||
| 29 | + </template> | ||
| 30 | + </el-table-column> | ||
| 31 | + <el-table-column :label="$t('carDetailHis.validPeriod')" align="center"> | ||
| 32 | + <template slot-scope="scope"> | ||
| 33 | + <span v-if="scope.row.leaseType == 'H'"> | ||
| 34 | + {{scope.row.startTime}}<br>~{{scope.row.endTime}} | ||
| 35 | + </span> | ||
| 36 | + <span v-else>--</span> | ||
| 37 | + </template> | ||
| 38 | + </el-table-column> | ||
| 39 | + <el-table-column :label="$t('carDetailHis.action')" align="center"> | ||
| 40 | + <template slot-scope="scope"> | ||
| 41 | + {{_getHisOperate(scope.row)}} | ||
| 42 | + </template> | ||
| 43 | + </el-table-column> | ||
| 44 | + <el-table-column prop="userName" :label="$t('carDetailHis.operator')" align="center"></el-table-column> | ||
| 45 | + <el-table-column prop="createTime" :label="$t('carDetailHis.operateTime')" align="center"></el-table-column> | ||
| 46 | + </el-table> | ||
| 47 | + | ||
| 48 | + <el-row class="margin-top"> | ||
| 49 | + <el-col :span="12"></el-col> | ||
| 50 | + <el-col :span="12" class="text-right"> | ||
| 51 | + <el-pagination | ||
| 52 | + @current-change="handlePageChange" | ||
| 53 | + :current-page="currentPage" | ||
| 54 | + :page-size="pageSize" | ||
| 55 | + layout="total, prev, pager, next" | ||
| 56 | + :total="total"> | ||
| 57 | + </el-pagination> | ||
| 58 | + </el-col> | ||
| 59 | + </el-row> | ||
| 60 | + </div> | ||
| 61 | + </div> | ||
| 62 | +</template> | ||
| 63 | + | ||
| 64 | +<script> | ||
| 65 | +import { queryAdminHisOwnerCar } from '@/api/aCommunity/aCarDetailHisApi' | ||
| 66 | + | ||
| 67 | +export default { | ||
| 68 | + name: 'ACarDetailHis', | ||
| 69 | + data() { | ||
| 70 | + return { | ||
| 71 | + aCarDetailHisInfo: { | ||
| 72 | + cars: [], | ||
| 73 | + carId: '', | ||
| 74 | + memberId: '', | ||
| 75 | + carNum: '', | ||
| 76 | + carNumLike: '', | ||
| 77 | + logStartTime: '', | ||
| 78 | + logEndTime: '', | ||
| 79 | + paId: '' | ||
| 80 | + }, | ||
| 81 | + currentPage: 1, | ||
| 82 | + pageSize: 10, | ||
| 83 | + total: 0 | ||
| 84 | + } | ||
| 85 | + }, | ||
| 86 | + methods: { | ||
| 87 | + open(data) { | ||
| 88 | + this.handleSwitch(data) | ||
| 89 | + }, | ||
| 90 | + handleSwitch(data) { | ||
| 91 | + this.aCarDetailHisInfo.carId = data.carId | ||
| 92 | + this.aCarDetailHisInfo.carNum = data.carNum | ||
| 93 | + this.aCarDetailHisInfo.paId = data.paId | ||
| 94 | + this.aCarDetailHisInfo.memberId = data.memberId | ||
| 95 | + this.aCarDetailHisInfo.carNumLike = data.carNumLike | ||
| 96 | + this.aCarDetailHisInfo.logStartTime = data.logStartTime | ||
| 97 | + this.aCarDetailHisInfo.logEndTime = data.logEndTime | ||
| 98 | + this.aCarDetailHisInfo.staffNameLike = data.staffNameLike | ||
| 99 | + this._loadACarDetailHisData(1, this.pageSize) | ||
| 100 | + }, | ||
| 101 | + handlePageChange(page) { | ||
| 102 | + this.currentPage = page | ||
| 103 | + this._loadACarDetailHisData(page, this.pageSize) | ||
| 104 | + }, | ||
| 105 | + async _loadACarDetailHisData(page, row) { | ||
| 106 | + try { | ||
| 107 | + const param = { | ||
| 108 | + carNum: this.aCarDetailHisInfo.carNum, | ||
| 109 | + carNumLike: this.aCarDetailHisInfo.carNumLike, | ||
| 110 | + logStartTime: this.aCarDetailHisInfo.logStartTime, | ||
| 111 | + logEndTime: this.aCarDetailHisInfo.logEndTime, | ||
| 112 | + staffNameLike: this.aCarDetailHisInfo.staffNameLike, | ||
| 113 | + page, | ||
| 114 | + row | ||
| 115 | + } | ||
| 116 | + const response = await queryAdminHisOwnerCar(param) | ||
| 117 | + this.aCarDetailHisInfo.cars = response.data | ||
| 118 | + this.total = response.records | ||
| 119 | + } catch (error) { | ||
| 120 | + console.error('Failed to load history data:', error) | ||
| 121 | + } | ||
| 122 | + }, | ||
| 123 | + _getHisOperate(car) { | ||
| 124 | + let carCount = 0 | ||
| 125 | + this.aCarDetailHisInfo.cars.forEach(item => { | ||
| 126 | + if (car.bId == item.bId) { | ||
| 127 | + carCount += 1 | ||
| 128 | + } | ||
| 129 | + }) | ||
| 130 | + if (carCount <= 1) { | ||
| 131 | + if (car.operate == 'ADD') { | ||
| 132 | + return this.$t('carDetailHis.add') | ||
| 133 | + } | ||
| 134 | + if (car.operate == 'DEL') { | ||
| 135 | + return this.$t('carDetailHis.delete') | ||
| 136 | + } | ||
| 137 | + return "-" | ||
| 138 | + } | ||
| 139 | + if (car.operate == 'ADD') { | ||
| 140 | + return this.$t('carDetailHis.modifyNew') | ||
| 141 | + } | ||
| 142 | + if (car.operate == 'DEL') { | ||
| 143 | + return this.$t('carDetailHis.modifyOld') | ||
| 144 | + } | ||
| 145 | + return "-" | ||
| 146 | + } | ||
| 147 | + } | ||
| 148 | +} | ||
| 149 | +</script> | ||
| 150 | + | ||
| 151 | +<style scoped> | ||
| 152 | +.hand { | ||
| 153 | + cursor: pointer; | ||
| 154 | +} | ||
| 155 | +.margin-top { | ||
| 156 | + margin-top: 20px; | ||
| 157 | +} | ||
| 158 | +.text-right { | ||
| 159 | + text-align: right; | ||
| 160 | +} | ||
| 161 | +</style> | ||
| 0 | \ No newline at end of file | 162 | \ No newline at end of file |
src/components/aCommunity/aCarDetailHisDemo.vue
0 → 100644
| 1 | +<template> | ||
| 2 | + <a-car-detail-his ref="carDetailHis" /> | ||
| 3 | +</template> | ||
| 4 | + | ||
| 5 | +<script> | ||
| 6 | +import ACarDetailHis from './aCarDetailHis' | ||
| 7 | + | ||
| 8 | +export default { | ||
| 9 | + components: { | ||
| 10 | + ACarDetailHis | ||
| 11 | + }, | ||
| 12 | + methods: { | ||
| 13 | + open(data) { | ||
| 14 | + this.$refs.carDetailHis.handleSwitch(data) | ||
| 15 | + } | ||
| 16 | + } | ||
| 17 | +} | ||
| 18 | +</script> | ||
| 0 | \ No newline at end of file | 19 | \ No newline at end of file |
src/components/aCommunity/aCarDetailMember.vue
0 → 100644
| 1 | +<template> | ||
| 2 | + <div> | ||
| 3 | + <el-row> | ||
| 4 | + <el-col :span="24" class="text-right"></el-col> | ||
| 5 | + </el-row> | ||
| 6 | + | ||
| 7 | + <div class="margin-top"> | ||
| 8 | + <el-table :data="aCarDetailMemberInfo.ownerCars" style="width: 100%"> | ||
| 9 | + <el-table-column prop="carNum" :label="$t('carDetailMember.carNum')" align="center"></el-table-column> | ||
| 10 | + <el-table-column prop="roomName" :label="$t('carDetailMember.roomNum')" align="center"></el-table-column> | ||
| 11 | + <el-table-column prop="carBrand" :label="$t('carDetailMember.carBrand')" align="center"></el-table-column> | ||
| 12 | + <el-table-column prop="carTypeName" :label="$t('carDetailMember.carType')" align="center"></el-table-column> | ||
| 13 | + <el-table-column prop="carColor" :label="$t('carDetailMember.color')" align="center"></el-table-column> | ||
| 14 | + <el-table-column :label="$t('carDetailMember.owner')" align="center"> | ||
| 15 | + <template slot-scope="scope"> | ||
| 16 | + {{scope.row.ownerName}}({{scope.row.link}}) | ||
| 17 | + </template> | ||
| 18 | + </el-table-column> | ||
| 19 | + <el-table-column :label="$t('carDetailMember.parkingSpace')" align="center"> | ||
| 20 | + <template slot-scope="scope"> | ||
| 21 | + <span v-if="scope.row.areaNum"> | ||
| 22 | + {{scope.row.areaNum}}{{$t('carDetailMember.parkingLot')}}{{scope.row.num}}{{$t('carDetailMember.space')}} | ||
| 23 | + </span> | ||
| 24 | + <span v-else>{{$t('carDetailMember.none')}}</span> | ||
| 25 | + </template> | ||
| 26 | + </el-table-column> | ||
| 27 | + <el-table-column prop="startTime" :label="$t('carDetailMember.startTime')" align="center"></el-table-column> | ||
| 28 | + <el-table-column prop="endTime" :label="$t('carDetailMember.endTime')" align="center"></el-table-column> | ||
| 29 | + <el-table-column :label="$t('carDetailMember.status')" align="center"> | ||
| 30 | + <template slot-scope="scope"> | ||
| 31 | + {{scope.row.stateName}} | ||
| 32 | + <span v-if="scope.row.iotStateName"> | ||
| 33 | + ({{scope.row.iotStateName}}) | ||
| 34 | + </span> | ||
| 35 | + </template> | ||
| 36 | + </el-table-column> | ||
| 37 | + </el-table> | ||
| 38 | + | ||
| 39 | + <el-row class="margin-top"> | ||
| 40 | + <el-col :span="12"></el-col> | ||
| 41 | + <el-col :span="12" class="text-right"> | ||
| 42 | + <el-pagination | ||
| 43 | + @current-change="handlePageChange" | ||
| 44 | + :current-page="currentPage" | ||
| 45 | + :page-size="pageSize" | ||
| 46 | + layout="total, prev, pager, next" | ||
| 47 | + :total="total"> | ||
| 48 | + </el-pagination> | ||
| 49 | + </el-col> | ||
| 50 | + </el-row> | ||
| 51 | + </div> | ||
| 52 | + </div> | ||
| 53 | +</template> | ||
| 54 | + | ||
| 55 | +<script> | ||
| 56 | +import { queryAdminOwnerCars } from '@/api/aCommunity/aCarDetailMemberApi' | ||
| 57 | + | ||
| 58 | +export default { | ||
| 59 | + name: 'ACarDetailMember', | ||
| 60 | + data() { | ||
| 61 | + return { | ||
| 62 | + aCarDetailMemberInfo: { | ||
| 63 | + ownerCars: [], | ||
| 64 | + carId: '', | ||
| 65 | + carNum: '', | ||
| 66 | + memberId: '' | ||
| 67 | + }, | ||
| 68 | + currentPage: 1, | ||
| 69 | + pageSize: 10, | ||
| 70 | + total: 0 | ||
| 71 | + } | ||
| 72 | + }, | ||
| 73 | + methods: { | ||
| 74 | + open(data) { | ||
| 75 | + this.aCarDetailMemberInfo.carId = data.carId | ||
| 76 | + this.aCarDetailMemberInfo.carNum = data.carNum | ||
| 77 | + this.aCarDetailMemberInfo.memberId = data.memberId | ||
| 78 | + this._loadACarDetailMemberData(1, this.pageSize) | ||
| 79 | + }, | ||
| 80 | + handlePageChange(page) { | ||
| 81 | + this.currentPage = page | ||
| 82 | + this._loadACarDetailMemberData(page, this.pageSize) | ||
| 83 | + }, | ||
| 84 | + async _loadACarDetailMemberData(page, row) { | ||
| 85 | + try { | ||
| 86 | + const param = { | ||
| 87 | + carId: this.aCarDetailMemberInfo.carId, | ||
| 88 | + carTypeCd: '1002', | ||
| 89 | + page, | ||
| 90 | + row | ||
| 91 | + } | ||
| 92 | + const response = await queryAdminOwnerCars(param) | ||
| 93 | + this.aCarDetailMemberInfo.ownerCars = response.data | ||
| 94 | + this.total = response.records | ||
| 95 | + } catch (error) { | ||
| 96 | + console.error('Failed to load member data:', error) | ||
| 97 | + } | ||
| 98 | + }, | ||
| 99 | + _viewIotStateRemark(car) { | ||
| 100 | + // Implement view IoT remark logic | ||
| 101 | + console.log(car) | ||
| 102 | + } | ||
| 103 | + } | ||
| 104 | +} | ||
| 105 | +</script> | ||
| 106 | + | ||
| 107 | +<style scoped> | ||
| 108 | +.margin-top { | ||
| 109 | + margin-top: 20px; | ||
| 110 | +} | ||
| 111 | +.text-right { | ||
| 112 | + text-align: right; | ||
| 113 | +} | ||
| 114 | +</style> | ||
| 0 | \ No newline at end of file | 115 | \ No newline at end of file |
src/components/aCommunity/aCarDetailMemberDemo.vue
0 → 100644
| 1 | +<template> | ||
| 2 | + <a-car-detail-member ref="carDetailMember" /> | ||
| 3 | +</template> | ||
| 4 | + | ||
| 5 | +<script> | ||
| 6 | +import ACarDetailMember from './aCarDetailMember' | ||
| 7 | + | ||
| 8 | +export default { | ||
| 9 | + components: { | ||
| 10 | + ACarDetailMember | ||
| 11 | + }, | ||
| 12 | + methods: { | ||
| 13 | + open(data) { | ||
| 14 | + this.$refs.carDetailMember.handleSwitch(data) | ||
| 15 | + } | ||
| 16 | + } | ||
| 17 | +} | ||
| 18 | +</script> | ||
| 0 | \ No newline at end of file | 19 | \ No newline at end of file |
src/components/aCommunity/aCarDetailOwner.vue
0 → 100644
| 1 | +<template> | ||
| 2 | + <div> | ||
| 3 | + <el-row> | ||
| 4 | + <el-col :span="24" class="text-right"></el-col> | ||
| 5 | + </el-row> | ||
| 6 | + | ||
| 7 | + <div class="margin-top"> | ||
| 8 | + <el-table :data="aCarDetailOwnerInfo.owners" style="width: 100%"> | ||
| 9 | + <el-table-column :label="$t('carDetailOwner.ownerFace')" align="center" width="100"> | ||
| 10 | + <template slot-scope="scope"> | ||
| 11 | + <el-image style="width: 60px; height: 60px;" :src="scope.row.url || '/img/noPhoto.jpg'" fit="cover" | ||
| 12 | + @click="_viewOwnerFace(scope.row.url)" class="border-radius"> | ||
| 13 | + </el-image> | ||
| 14 | + </template> | ||
| 15 | + </el-table-column> | ||
| 16 | + <el-table-column :label="$t('carDetailOwner.name')" align="center"> | ||
| 17 | + <template slot-scope="scope"> | ||
| 18 | + {{ scope.row.name }}({{ scope.row.link }}) | ||
| 19 | + </template> | ||
| 20 | + </el-table-column> | ||
| 21 | + <el-table-column :label="$t('carDetailOwner.gender')" align="center"> | ||
| 22 | + <template slot-scope="scope"> | ||
| 23 | + {{ scope.row.sex == 0 ? $t('carDetailOwner.male') : $t('carDetailOwner.female') }} | ||
| 24 | + </template> | ||
| 25 | + </el-table-column> | ||
| 26 | + <el-table-column prop="idCard" :label="$t('carDetailOwner.idCard')" align="center"></el-table-column> | ||
| 27 | + <el-table-column prop="address" :label="$t('carDetailOwner.address')" align="center"></el-table-column> | ||
| 28 | + <el-table-column prop="roomCount" :label="$t('carDetailOwner.roomCount')" align="center"></el-table-column> | ||
| 29 | + <el-table-column prop="memberCount" :label="$t('carDetailOwner.memberCount')" align="center"></el-table-column> | ||
| 30 | + <el-table-column prop="carCount" :label="$t('carDetailOwner.carCount')" align="center"></el-table-column> | ||
| 31 | + <el-table-column prop="complaintCount" :label="$t('carDetailOwner.complaintCount')" | ||
| 32 | + align="center"></el-table-column> | ||
| 33 | + <el-table-column prop="repairCount" :label="$t('carDetailOwner.repairCount')" align="center"></el-table-column> | ||
| 34 | + <el-table-column prop="oweFee" :label="$t('carDetailOwner.oweFee')" align="center"></el-table-column> | ||
| 35 | + <el-table-column prop="contractCount" :label="$t('carDetailOwner.contractCount')" | ||
| 36 | + align="center"></el-table-column> | ||
| 37 | + <el-table-column :label="$t('common.operation')" align="center" width="120"> | ||
| 38 | + <template slot-scope="scope"> | ||
| 39 | + <el-button type="text" size="small" @click="_toACarDetailOwnerDetail(scope.row)"> | ||
| 40 | + {{ $t('carDetailOwner.detail') }} | ||
| 41 | + </el-button> | ||
| 42 | + </template> | ||
| 43 | + </el-table-column> | ||
| 44 | + </el-table> | ||
| 45 | + | ||
| 46 | + <el-row class="margin-top"> | ||
| 47 | + <el-col :span="12"></el-col> | ||
| 48 | + <el-col :span="12" class="text-right"> | ||
| 49 | + <el-pagination @current-change="handlePageChange" :current-page="currentPage" :page-size="pageSize" | ||
| 50 | + layout="total, prev, pager, next" :total="total"> | ||
| 51 | + </el-pagination> | ||
| 52 | + </el-col> | ||
| 53 | + </el-row> | ||
| 54 | + </div> | ||
| 55 | + | ||
| 56 | + <view-image ref="viewImage"></view-image> | ||
| 57 | + </div> | ||
| 58 | +</template> | ||
| 59 | + | ||
| 60 | +<script> | ||
| 61 | +import { queryAdminOwners } from '@/api/aCommunity/aCarDetailOwnerApi' | ||
| 62 | +import ViewImage from '@/components/system/viewImage' | ||
| 63 | + | ||
| 64 | +export default { | ||
| 65 | + name: 'ACarDetailOwner', | ||
| 66 | + components: { | ||
| 67 | + ViewImage | ||
| 68 | + }, | ||
| 69 | + data() { | ||
| 70 | + return { | ||
| 71 | + aCarDetailOwnerInfo: { | ||
| 72 | + owners: [], | ||
| 73 | + ownerId: '' | ||
| 74 | + }, | ||
| 75 | + currentPage: 1, | ||
| 76 | + pageSize: 10, | ||
| 77 | + total: 0 | ||
| 78 | + } | ||
| 79 | + }, | ||
| 80 | + methods: { | ||
| 81 | + open(data) { | ||
| 82 | + this.handleSwitch(data) | ||
| 83 | + }, | ||
| 84 | + handleSwitch(data) { | ||
| 85 | + this.aCarDetailOwnerInfo.ownerId = data.ownerId | ||
| 86 | + this._loadACarDetailOwnerData(1, this.pageSize) | ||
| 87 | + }, | ||
| 88 | + handlePageChange(page) { | ||
| 89 | + this.currentPage = page | ||
| 90 | + this._loadACarDetailOwnerData(page, this.pageSize) | ||
| 91 | + }, | ||
| 92 | + async _loadACarDetailOwnerData(page, row) { | ||
| 93 | + try { | ||
| 94 | + const param = { | ||
| 95 | + ownerId: this.aCarDetailOwnerInfo.ownerId, | ||
| 96 | + ownerTypeCd: '1001', | ||
| 97 | + page, | ||
| 98 | + row | ||
| 99 | + } | ||
| 100 | + const response = await queryAdminOwners(param) | ||
| 101 | + this.aCarDetailOwnerInfo.owners = response.data | ||
| 102 | + this.total = response.records | ||
| 103 | + } catch (error) { | ||
| 104 | + console.error('Failed to load owner data:', error) | ||
| 105 | + } | ||
| 106 | + }, | ||
| 107 | + _viewOwnerFace(url) { | ||
| 108 | + if (url) { | ||
| 109 | + this.$refs.viewImage.showImage({ url }) | ||
| 110 | + } | ||
| 111 | + }, | ||
| 112 | + _toACarDetailOwnerDetail(owner) { | ||
| 113 | + window.open('/#/views/aCommunity/adminOwnerDetail?ownerId=' + owner.ownerId) | ||
| 114 | + } | ||
| 115 | + } | ||
| 116 | +} | ||
| 117 | +</script> | ||
| 118 | + | ||
| 119 | +<style scoped> | ||
| 120 | +.margin-top { | ||
| 121 | + margin-top: 20px; | ||
| 122 | +} | ||
| 123 | + | ||
| 124 | +.text-right { | ||
| 125 | + text-align: right; | ||
| 126 | +} | ||
| 127 | + | ||
| 128 | +.border-radius { | ||
| 129 | + border-radius: 4px; | ||
| 130 | +} | ||
| 131 | +</style> | ||
| 0 | \ No newline at end of file | 132 | \ No newline at end of file |
src/components/aCommunity/aCarDetailOwnerDemo.vue
0 → 100644
| 1 | +<template> | ||
| 2 | + <a-car-detail-owner ref="carDetailOwner" /> | ||
| 3 | +</template> | ||
| 4 | + | ||
| 5 | +<script> | ||
| 6 | +import ACarDetailOwner from './aCarDetailOwner' | ||
| 7 | + | ||
| 8 | +export default { | ||
| 9 | + components: { | ||
| 10 | + ACarDetailOwner | ||
| 11 | + }, | ||
| 12 | + methods: { | ||
| 13 | + open(data) { | ||
| 14 | + this.$refs.carDetailOwner.handleSwitch(data) | ||
| 15 | + } | ||
| 16 | + } | ||
| 17 | +} | ||
| 18 | +</script> | ||
| 0 | \ No newline at end of file | 19 | \ No newline at end of file |
src/components/aCommunity/aCarDetailTransactionCar.vue
0 → 100644
| 1 | +<template> | ||
| 2 | + <div class="margin-top"> | ||
| 3 | + <el-row class="margin-top-lg"></el-row> | ||
| 4 | + | ||
| 5 | + <div class="margin-top"> | ||
| 6 | + <el-table :data="aCarDetailTransactionCarInfo.translates" style="width: 100%"> | ||
| 7 | + <el-table-column prop="machineTranslateId" :label="$t('carDetailTransaction.syncId')" align="center"></el-table-column> | ||
| 8 | + <el-table-column prop="machineCode" :label="$t('carDetailTransaction.deviceCode')" align="center"></el-table-column> | ||
| 9 | + <el-table-column prop="typeCdName" :label="$t('carDetailTransaction.objectType')" align="center"></el-table-column> | ||
| 10 | + <el-table-column prop="objName" :label="$t('carDetailTransaction.objectName')" align="center"></el-table-column> | ||
| 11 | + <el-table-column prop="machineCmdName" :label="$t('carDetailTransaction.command')" align="center"></el-table-column> | ||
| 12 | + <el-table-column prop="stateName" :label="$t('carDetailTransaction.status')" align="center"></el-table-column> | ||
| 13 | + <el-table-column prop="remark" :label="$t('carDetailTransaction.remark')" align="center" width="80"></el-table-column> | ||
| 14 | + <el-table-column prop="updateTime" :label="$t('carDetailTransaction.syncTime')" align="center"></el-table-column> | ||
| 15 | + </el-table> | ||
| 16 | + | ||
| 17 | + <el-row class="margin-top"> | ||
| 18 | + <el-col :span="12"></el-col> | ||
| 19 | + <el-col :span="12" class="text-right"> | ||
| 20 | + <el-pagination | ||
| 21 | + @current-change="handlePageChange" | ||
| 22 | + :current-page="currentPage" | ||
| 23 | + :page-size="pageSize" | ||
| 24 | + layout="total, prev, pager, next" | ||
| 25 | + :total="total"> | ||
| 26 | + </el-pagination> | ||
| 27 | + </el-col> | ||
| 28 | + </el-row> | ||
| 29 | + </div> | ||
| 30 | + </div> | ||
| 31 | +</template> | ||
| 32 | + | ||
| 33 | +<script> | ||
| 34 | +import { listAdminMachineTranslates } from '@/api/aCommunity/aCarDetailTransactionCarApi' | ||
| 35 | + | ||
| 36 | +export default { | ||
| 37 | + name: 'ACarDetailTransactionCar', | ||
| 38 | + data() { | ||
| 39 | + return { | ||
| 40 | + aCarDetailTransactionCarInfo: { | ||
| 41 | + translates: [], | ||
| 42 | + ownerId: '', | ||
| 43 | + carId: '', | ||
| 44 | + memberId: '' | ||
| 45 | + }, | ||
| 46 | + currentPage: 1, | ||
| 47 | + pageSize: 10, | ||
| 48 | + total: 0 | ||
| 49 | + } | ||
| 50 | + }, | ||
| 51 | + methods: { | ||
| 52 | + open(data) { | ||
| 53 | + this.handleSwitch(data) | ||
| 54 | + }, | ||
| 55 | + handleSwitch(data) { | ||
| 56 | + this.aCarDetailTransactionCarInfo.carId = data.carId | ||
| 57 | + this.aCarDetailTransactionCarInfo.memberId = data.memberId | ||
| 58 | + this._loadACarDetailTransactionCarData(1, this.pageSize) | ||
| 59 | + }, | ||
| 60 | + handlePageChange(page) { | ||
| 61 | + this.currentPage = page | ||
| 62 | + this._loadACarDetailTransactionCarData(page, this.pageSize) | ||
| 63 | + }, | ||
| 64 | + async _loadACarDetailTransactionCarData(page, row) { | ||
| 65 | + try { | ||
| 66 | + const param = { | ||
| 67 | + page, | ||
| 68 | + row, | ||
| 69 | + objId: this.aCarDetailTransactionCarInfo.memberId, | ||
| 70 | + typeCd: '4455' | ||
| 71 | + } | ||
| 72 | + const response = await listAdminMachineTranslates(param) | ||
| 73 | + this.aCarDetailTransactionCarInfo.translates = response.machineTranslates | ||
| 74 | + this.total = response.records | ||
| 75 | + } catch (error) { | ||
| 76 | + console.error('Failed to load transaction data:', error) | ||
| 77 | + } | ||
| 78 | + } | ||
| 79 | + } | ||
| 80 | +} | ||
| 81 | +</script> | ||
| 82 | + | ||
| 83 | +<style scoped> | ||
| 84 | +.margin-top { | ||
| 85 | + margin-top: 20px; | ||
| 86 | +} | ||
| 87 | +.margin-top-lg { | ||
| 88 | + margin-top: 40px; | ||
| 89 | +} | ||
| 90 | +.text-right { | ||
| 91 | + text-align: right; | ||
| 92 | +} | ||
| 93 | +</style> | ||
| 0 | \ No newline at end of file | 94 | \ No newline at end of file |
src/components/aCommunity/aCarDetailTransactionCarDemo.vue
0 → 100644
| 1 | +<template> | ||
| 2 | + <a-car-detail-transaction-car ref="carDetailTransaction" /> | ||
| 3 | +</template> | ||
| 4 | + | ||
| 5 | +<script> | ||
| 6 | +import ACarDetailTransactionCar from './aCarDetailTransactionCar' | ||
| 7 | + | ||
| 8 | +export default { | ||
| 9 | + components: { | ||
| 10 | + ACarDetailTransactionCar | ||
| 11 | + }, | ||
| 12 | + methods: { | ||
| 13 | + open(data) { | ||
| 14 | + this.$refs.carDetailTransaction.handleSwitch(data) | ||
| 15 | + } | ||
| 16 | + } | ||
| 17 | +} | ||
| 18 | +</script> | ||
| 0 | \ No newline at end of file | 19 | \ No newline at end of file |
src/i18n/communityI18n.js
| @@ -9,6 +9,7 @@ import { messages as handoverMessages } from '../views/room/handoverLang' | @@ -9,6 +9,7 @@ import { messages as handoverMessages } from '../views/room/handoverLang' | ||
| 9 | import { messages as ownerExitRoomMessages } from '../views/room/ownerExitRoomLang' | 9 | import { messages as ownerExitRoomMessages } from '../views/room/ownerExitRoomLang' |
| 10 | import { messages as adminRoomDetailMessages } from '../views/aCommunity/adminRoomDetailLang.js' | 10 | import { messages as adminRoomDetailMessages } from '../views/aCommunity/adminRoomDetailLang.js' |
| 11 | import { messages as adminOwnerDetailMessages } from '../views/aCommunity/adminOwnerDetailLang.js' | 11 | import { messages as adminOwnerDetailMessages } from '../views/aCommunity/adminOwnerDetailLang.js' |
| 12 | +import { messages as adminCarDetailMessages } from '../views/aCommunity/adminCarDetailLang.js' | ||
| 12 | export const messages = { | 13 | export const messages = { |
| 13 | en: { | 14 | en: { |
| 14 | ...roomStructureMessages.en, | 15 | ...roomStructureMessages.en, |
| @@ -22,6 +23,7 @@ export const messages = { | @@ -22,6 +23,7 @@ export const messages = { | ||
| 22 | ...ownerExitRoomMessages.en, | 23 | ...ownerExitRoomMessages.en, |
| 23 | ...adminRoomDetailMessages.en, | 24 | ...adminRoomDetailMessages.en, |
| 24 | ...adminOwnerDetailMessages.en, | 25 | ...adminOwnerDetailMessages.en, |
| 26 | + ...adminCarDetailMessages.en, | ||
| 25 | }, | 27 | }, |
| 26 | zh: { | 28 | zh: { |
| 27 | ...roomStructureMessages.zh, | 29 | ...roomStructureMessages.zh, |
| @@ -35,5 +37,6 @@ export const messages = { | @@ -35,5 +37,6 @@ export const messages = { | ||
| 35 | ...ownerExitRoomMessages.zh, | 37 | ...ownerExitRoomMessages.zh, |
| 36 | ...adminRoomDetailMessages.zh, | 38 | ...adminRoomDetailMessages.zh, |
| 37 | ...adminOwnerDetailMessages.zh, | 39 | ...adminOwnerDetailMessages.zh, |
| 40 | + ...adminCarDetailMessages.zh, | ||
| 38 | } | 41 | } |
| 39 | } | 42 | } |
| 40 | \ No newline at end of file | 43 | \ No newline at end of file |
src/router/communityRouter.js
| @@ -50,8 +50,13 @@ export default [ | @@ -50,8 +50,13 @@ export default [ | ||
| 50 | component: () => import('@/views/aCommunity/adminRoomDetail.vue') | 50 | component: () => import('@/views/aCommunity/adminRoomDetail.vue') |
| 51 | }, | 51 | }, |
| 52 | { | 52 | { |
| 53 | - path:'/views/aCommunity/adminOwnerDetail', | ||
| 54 | - name:'/views/aCommunity/adminOwnerDetail', | 53 | + path: '/views/aCommunity/adminOwnerDetail', |
| 54 | + name: '/views/aCommunity/adminOwnerDetail', | ||
| 55 | component: () => import('@/views/aCommunity/adminOwnerDetail.vue') | 55 | component: () => import('@/views/aCommunity/adminOwnerDetail.vue') |
| 56 | - }, | 56 | + }, |
| 57 | + { | ||
| 58 | + path: '/pages/car/adminCarDetail', | ||
| 59 | + name: '/pages/car/adminCarDetail', | ||
| 60 | + component: () => import('@/views/aCommunity/adminCarDetailList.vue') | ||
| 61 | + }, | ||
| 57 | ] | 62 | ] |
| 58 | \ No newline at end of file | 63 | \ No newline at end of file |
src/views/aCommunity/aCarDetailApplySpaceLang.js
0 → 100644
| 1 | +export const messages = { | ||
| 2 | + en: { | ||
| 3 | + carDetailApply: { | ||
| 4 | + applyId: 'Apply ID', | ||
| 5 | + carNum: 'License Plate', | ||
| 6 | + parkingSpace: 'Parking Space', | ||
| 7 | + parkingLot: 'Parking Lot', | ||
| 8 | + space: 'Space', | ||
| 9 | + none: 'None', | ||
| 10 | + carBrand: 'Car Brand', | ||
| 11 | + carType: 'Car Type', | ||
| 12 | + color: 'Color', | ||
| 13 | + startTime: 'Start Time', | ||
| 14 | + endTime: 'End Time', | ||
| 15 | + applicant: 'Applicant', | ||
| 16 | + phone: 'Phone', | ||
| 17 | + result: 'Result', | ||
| 18 | + pendingReview: 'Pending Review', | ||
| 19 | + pendingPayment: 'Pending Payment', | ||
| 20 | + completed: 'Completed', | ||
| 21 | + reviewFailed: 'Review Failed', | ||
| 22 | + abnormalStatus: 'Abnormal Status', | ||
| 23 | + familyCar: 'Family Car', | ||
| 24 | + bus: 'Bus', | ||
| 25 | + truck: 'Truck', | ||
| 26 | + abnormalCar: 'Abnormal Car' | ||
| 27 | + } | ||
| 28 | + }, | ||
| 29 | + zh: { | ||
| 30 | + carDetailApply: { | ||
| 31 | + applyId: '申请ID', | ||
| 32 | + carNum: '车牌号', | ||
| 33 | + parkingSpace: '停车位', | ||
| 34 | + parkingLot: '停车场', | ||
| 35 | + space: '停车位', | ||
| 36 | + none: '无', | ||
| 37 | + carBrand: '汽车品牌', | ||
| 38 | + carType: '车辆类型', | ||
| 39 | + color: '颜色', | ||
| 40 | + startTime: '起租时间', | ||
| 41 | + endTime: '结租时间', | ||
| 42 | + applicant: '申请人', | ||
| 43 | + phone: '手机号', | ||
| 44 | + result: '审核结果', | ||
| 45 | + pendingReview: '待审核', | ||
| 46 | + pendingPayment: '待缴费', | ||
| 47 | + completed: '完成', | ||
| 48 | + reviewFailed: '审核失败', | ||
| 49 | + abnormalStatus: '状态异常', | ||
| 50 | + familyCar: '家用小汽车', | ||
| 51 | + bus: '客车', | ||
| 52 | + truck: '货车', | ||
| 53 | + abnormalCar: '异常车辆' | ||
| 54 | + } | ||
| 55 | + } | ||
| 56 | +} | ||
| 0 | \ No newline at end of file | 57 | \ No newline at end of file |
src/views/aCommunity/aCarDetailCarInoutLang.js
0 → 100644
| 1 | +export const messages = { | ||
| 2 | + en: { | ||
| 3 | + aCarDetailCarInout: { | ||
| 4 | + entryImage: 'Entry Image', | ||
| 5 | + inoutNumber: 'In/Out Number', | ||
| 6 | + vehicleStatus: 'Vehicle Status', | ||
| 7 | + plateNumber: 'Plate Number', | ||
| 8 | + parkingLot: 'Parking Lot', | ||
| 9 | + billingRule: 'Billing Rule', | ||
| 10 | + plateType: 'Plate Type', | ||
| 11 | + entryTime: 'Entry Time', | ||
| 12 | + exitTime: 'Exit Time', | ||
| 13 | + parkingTime: 'Parking Time', | ||
| 14 | + chargeAmount: 'Charge Amount', | ||
| 15 | + remark: 'Remark', | ||
| 16 | + entry: 'Entry', | ||
| 17 | + exit: 'Exit', | ||
| 18 | + hour: 'hour', | ||
| 19 | + minute: 'min' | ||
| 20 | + } | ||
| 21 | + }, | ||
| 22 | + zh: { | ||
| 23 | + aCarDetailCarInout: { | ||
| 24 | + entryImage: '进场图', | ||
| 25 | + inoutNumber: '进出场编号', | ||
| 26 | + vehicleStatus: '车辆状态', | ||
| 27 | + plateNumber: '车牌号', | ||
| 28 | + parkingLot: '停车场', | ||
| 29 | + billingRule: '计费规则', | ||
| 30 | + plateType: '车牌类型', | ||
| 31 | + entryTime: '进场时间', | ||
| 32 | + exitTime: '出场时间', | ||
| 33 | + parkingTime: '停车时间', | ||
| 34 | + chargeAmount: '收费金额', | ||
| 35 | + remark: '说明', | ||
| 36 | + entry: '进场', | ||
| 37 | + exit: '出场', | ||
| 38 | + hour: '小时', | ||
| 39 | + minute: '分' | ||
| 40 | + } | ||
| 41 | + } | ||
| 42 | +} | ||
| 0 | \ No newline at end of file | 43 | \ No newline at end of file |
src/views/aCommunity/aCarDetailFeeLang.js
0 → 100644
| 1 | +export const messages = { | ||
| 2 | + en: { | ||
| 3 | + carDetailFee: { | ||
| 4 | + feeItem: 'Fee Item', | ||
| 5 | + feeFlag: 'Fee Flag', | ||
| 6 | + feeType: 'Fee Type', | ||
| 7 | + amountOwed: 'Amount Owed', | ||
| 8 | + createTime: 'Create Time', | ||
| 9 | + duePeriod: 'Due Period', | ||
| 10 | + remark: 'Remark', | ||
| 11 | + preDegrees: 'Previous Degrees', | ||
| 12 | + curDegrees: 'Current Degrees', | ||
| 13 | + unitPrice: 'Unit Price', | ||
| 14 | + additionalFee: 'Additional Fee', | ||
| 15 | + fixedFee: 'Fixed Fee', | ||
| 16 | + status: 'Status', | ||
| 17 | + operation: 'Operation', | ||
| 18 | + paymentNotice: 'Please go to the business acceptance page for payment' | ||
| 19 | + } | ||
| 20 | + }, | ||
| 21 | + zh: { | ||
| 22 | + carDetailFee: { | ||
| 23 | + feeItem: '费用项目', | ||
| 24 | + feeFlag: '费用标识', | ||
| 25 | + feeType: '费用类型', | ||
| 26 | + amountOwed: '应收金额', | ||
| 27 | + createTime: '建账时间', | ||
| 28 | + duePeriod: '应收时间段', | ||
| 29 | + remark: '说明', | ||
| 30 | + preDegrees: '上期度数', | ||
| 31 | + curDegrees: '本期度数', | ||
| 32 | + unitPrice: '单价', | ||
| 33 | + additionalFee: '附加费', | ||
| 34 | + fixedFee: '固定费', | ||
| 35 | + status: '状态', | ||
| 36 | + operation: '操作', | ||
| 37 | + paymentNotice: '缴费请到业务受理页面缴费' | ||
| 38 | + } | ||
| 39 | + } | ||
| 40 | +} | ||
| 0 | \ No newline at end of file | 41 | \ No newline at end of file |
src/views/aCommunity/aCarDetailHisLang.js
0 → 100644
| 1 | +export const messages = { | ||
| 2 | + en: { | ||
| 3 | + carDetailHis: { | ||
| 4 | + carNum: 'License Plate', | ||
| 5 | + leaseType: 'Plate Type', | ||
| 6 | + tempCar: 'Temporary Car', | ||
| 7 | + carType: 'Car Type', | ||
| 8 | + color: 'Color', | ||
| 9 | + owner: 'Owner', | ||
| 10 | + parkingSpace: 'Parking Space', | ||
| 11 | + spaceReleased: 'Space Released', | ||
| 12 | + validPeriod: 'Valid Period', | ||
| 13 | + action: 'Action', | ||
| 14 | + operator: 'Operator', | ||
| 15 | + operateTime: 'Operate Time', | ||
| 16 | + add: 'Add', | ||
| 17 | + delete: 'Delete', | ||
| 18 | + modifyNew: 'Modify(New)', | ||
| 19 | + modifyOld: 'Modify(Old)' | ||
| 20 | + } | ||
| 21 | + }, | ||
| 22 | + zh: { | ||
| 23 | + carDetailHis: { | ||
| 24 | + carNum: '车牌号', | ||
| 25 | + leaseType: '车牌类型', | ||
| 26 | + tempCar: '临时车', | ||
| 27 | + carType: '车辆类型', | ||
| 28 | + color: '颜色', | ||
| 29 | + owner: '业主', | ||
| 30 | + parkingSpace: '车位', | ||
| 31 | + spaceReleased: '车位已释放', | ||
| 32 | + validPeriod: '有效期', | ||
| 33 | + action: '动作', | ||
| 34 | + operator: '操作人', | ||
| 35 | + operateTime: '操作时间', | ||
| 36 | + add: '添加', | ||
| 37 | + delete: '删除', | ||
| 38 | + modifyNew: '修改(新)', | ||
| 39 | + modifyOld: '修改(旧)' | ||
| 40 | + } | ||
| 41 | + } | ||
| 42 | +} | ||
| 0 | \ No newline at end of file | 43 | \ No newline at end of file |
src/views/aCommunity/aCarDetailMemberLang.js
0 → 100644
| 1 | +export const messages = { | ||
| 2 | + en: { | ||
| 3 | + carDetailMember: { | ||
| 4 | + carNum: 'License Plate', | ||
| 5 | + roomNum: 'Room Number', | ||
| 6 | + carBrand: 'Car Brand', | ||
| 7 | + carType: 'Car Type', | ||
| 8 | + color: 'Color', | ||
| 9 | + owner: 'Owner', | ||
| 10 | + parkingSpace: 'Parking Space', | ||
| 11 | + parkingLot: 'Parking Lot', | ||
| 12 | + space: 'Space', | ||
| 13 | + none: 'None', | ||
| 14 | + startTime: 'Start Time', | ||
| 15 | + endTime: 'End Time', | ||
| 16 | + status: 'Status' | ||
| 17 | + } | ||
| 18 | + }, | ||
| 19 | + zh: { | ||
| 20 | + carDetailMember: { | ||
| 21 | + carNum: '车牌号', | ||
| 22 | + roomNum: '房屋号', | ||
| 23 | + carBrand: '车辆品牌', | ||
| 24 | + carType: '车辆类型', | ||
| 25 | + color: '颜色', | ||
| 26 | + owner: '业主', | ||
| 27 | + parkingSpace: '车位', | ||
| 28 | + parkingLot: '车场', | ||
| 29 | + space: '车位', | ||
| 30 | + none: '无', | ||
| 31 | + startTime: '起租时间', | ||
| 32 | + endTime: '截止时间', | ||
| 33 | + status: '状态' | ||
| 34 | + } | ||
| 35 | + } | ||
| 36 | +} | ||
| 0 | \ No newline at end of file | 37 | \ No newline at end of file |
src/views/aCommunity/aCarDetailOwnerLang.js
0 → 100644
| 1 | +export const messages = { | ||
| 2 | + en: { | ||
| 3 | + carDetailOwner: { | ||
| 4 | + ownerFace: 'Owner Face', | ||
| 5 | + name: 'Name', | ||
| 6 | + gender: 'Gender', | ||
| 7 | + male: 'Male', | ||
| 8 | + female: 'Female', | ||
| 9 | + idCard: 'ID Card', | ||
| 10 | + address: 'Address', | ||
| 11 | + roomCount: 'Room Count', | ||
| 12 | + memberCount: 'Member Count', | ||
| 13 | + carCount: 'Car Count', | ||
| 14 | + complaintCount: 'Complaint', | ||
| 15 | + repairCount: 'Repair', | ||
| 16 | + oweFee: 'Owe Fee', | ||
| 17 | + contractCount: 'Contract', | ||
| 18 | + operation: 'Operation', | ||
| 19 | + detail: 'Detail' | ||
| 20 | + } | ||
| 21 | + }, | ||
| 22 | + zh: { | ||
| 23 | + carDetailOwner: { | ||
| 24 | + ownerFace: '业主人脸', | ||
| 25 | + name: '姓名', | ||
| 26 | + gender: '性别', | ||
| 27 | + male: '男', | ||
| 28 | + female: '女', | ||
| 29 | + idCard: '身份证', | ||
| 30 | + address: '家庭住址', | ||
| 31 | + roomCount: '房屋数', | ||
| 32 | + memberCount: '业主成员', | ||
| 33 | + carCount: '车辆数', | ||
| 34 | + complaintCount: '投诉', | ||
| 35 | + repairCount: '报修', | ||
| 36 | + oweFee: '欠费', | ||
| 37 | + contractCount: '业主合同', | ||
| 38 | + operation: '操作', | ||
| 39 | + detail: '详情' | ||
| 40 | + } | ||
| 41 | + } | ||
| 42 | +} | ||
| 0 | \ No newline at end of file | 43 | \ No newline at end of file |
src/views/aCommunity/aCarDetailTransactionCarLang.js
0 → 100644
| 1 | +export const messages = { | ||
| 2 | + en: { | ||
| 3 | + carDetailTransaction: { | ||
| 4 | + syncId: 'Sync ID', | ||
| 5 | + deviceCode: 'Device Code', | ||
| 6 | + objectType: 'Object Type', | ||
| 7 | + objectName: 'Object Name', | ||
| 8 | + command: 'Command', | ||
| 9 | + status: 'Status', | ||
| 10 | + remark: 'Remark', | ||
| 11 | + syncTime: 'Sync Time' | ||
| 12 | + } | ||
| 13 | + }, | ||
| 14 | + zh: { | ||
| 15 | + carDetailTransaction: { | ||
| 16 | + syncId: '同步ID', | ||
| 17 | + deviceCode: '设备编码', | ||
| 18 | + objectType: '对象类型', | ||
| 19 | + objectName: '对象名称', | ||
| 20 | + command: '指令', | ||
| 21 | + status: '状态', | ||
| 22 | + remark: '说明', | ||
| 23 | + syncTime: '同步时间' | ||
| 24 | + } | ||
| 25 | + } | ||
| 26 | +} | ||
| 0 | \ No newline at end of file | 27 | \ No newline at end of file |
src/views/aCommunity/adminCarDetailLang.js
0 → 100644
| 1 | +export const messages = { | ||
| 2 | + en: { | ||
| 3 | + adminCarDetail: { | ||
| 4 | + vehicleInfo: 'Vehicle Information', | ||
| 5 | + vehicleFee: 'Vehicle Fee', | ||
| 6 | + paymentRecord: 'Payment Record', | ||
| 7 | + modificationRecord: 'Modification Record', | ||
| 8 | + memberVehicle: 'Member Vehicle', | ||
| 9 | + ownerInfo: 'Owner Information', | ||
| 10 | + ownerHouse: 'Owner House', | ||
| 11 | + ownerVehicle: 'Owner Vehicle', | ||
| 12 | + licensePlateSync: 'License Plate Sync', | ||
| 13 | + parkingSpaceApplication: 'Parking Space Application', | ||
| 14 | + accessRecord: 'Access Record' | ||
| 15 | + }, | ||
| 16 | + adminCarDetailInfo: { | ||
| 17 | + licensePlate: 'License Plate:', | ||
| 18 | + carBrand: 'Car Brand:', | ||
| 19 | + carType: 'Car Type:', | ||
| 20 | + color: 'Color:', | ||
| 21 | + plateType: 'Plate Type:', | ||
| 22 | + leaseStartTime: 'Lease Start Time:', | ||
| 23 | + leaseEndTime: 'Lease End Time:', | ||
| 24 | + remark: 'Remark:', | ||
| 25 | + parkingLot: 'Parking Lot:', | ||
| 26 | + parkingSpace: 'Parking Space:', | ||
| 27 | + status: 'Status:', | ||
| 28 | + relatedHouse: 'Related House:' | ||
| 29 | + }, | ||
| 30 | + carDetailFee: { | ||
| 31 | + feeItem: 'Fee Item', | ||
| 32 | + feeFlag: 'Fee Flag', | ||
| 33 | + feeType: 'Fee Type', | ||
| 34 | + amountOwed: 'Amount Owed', | ||
| 35 | + createTime: 'Create Time', | ||
| 36 | + duePeriod: 'Due Period', | ||
| 37 | + remark: 'Remark', | ||
| 38 | + preDegrees: 'Previous Degrees', | ||
| 39 | + curDegrees: 'Current Degrees', | ||
| 40 | + unitPrice: 'Unit Price', | ||
| 41 | + additionalFee: 'Additional Fee', | ||
| 42 | + fixedFee: 'Fixed Fee', | ||
| 43 | + status: 'Status', | ||
| 44 | + operation: 'Operation', | ||
| 45 | + paymentNotice: 'Please go to the business acceptance page for payment' | ||
| 46 | + }, | ||
| 47 | + carDetailHis: { | ||
| 48 | + carNum: 'License Plate', | ||
| 49 | + leaseType: 'Plate Type', | ||
| 50 | + tempCar: 'Temporary Car', | ||
| 51 | + carType: 'Car Type', | ||
| 52 | + color: 'Color', | ||
| 53 | + owner: 'Owner', | ||
| 54 | + parkingSpace: 'Parking Space', | ||
| 55 | + spaceReleased: 'Space Released', | ||
| 56 | + validPeriod: 'Valid Period', | ||
| 57 | + action: 'Action', | ||
| 58 | + operator: 'Operator', | ||
| 59 | + operateTime: 'Operate Time', | ||
| 60 | + add: 'Add', | ||
| 61 | + delete: 'Delete', | ||
| 62 | + modifyNew: 'Modify(New)', | ||
| 63 | + modifyOld: 'Modify(Old)' | ||
| 64 | + }, | ||
| 65 | + carDetailMember: { | ||
| 66 | + carNum: 'License Plate', | ||
| 67 | + roomNum: 'Room Number', | ||
| 68 | + carBrand: 'Car Brand', | ||
| 69 | + carType: 'Car Type', | ||
| 70 | + color: 'Color', | ||
| 71 | + owner: 'Owner', | ||
| 72 | + parkingSpace: 'Parking Space', | ||
| 73 | + parkingLot: 'Parking Lot', | ||
| 74 | + space: 'Space', | ||
| 75 | + none: 'None', | ||
| 76 | + startTime: 'Start Time', | ||
| 77 | + endTime: 'End Time', | ||
| 78 | + status: 'Status' | ||
| 79 | + }, | ||
| 80 | + carDetailOwner: { | ||
| 81 | + ownerFace: 'Owner Face', | ||
| 82 | + name: 'Name', | ||
| 83 | + gender: 'Gender', | ||
| 84 | + male: 'Male', | ||
| 85 | + female: 'Female', | ||
| 86 | + idCard: 'ID Card', | ||
| 87 | + address: 'Address', | ||
| 88 | + roomCount: 'Room Count', | ||
| 89 | + memberCount: 'Member Count', | ||
| 90 | + carCount: 'Car Count', | ||
| 91 | + complaintCount: 'Complaint', | ||
| 92 | + repairCount: 'Repair', | ||
| 93 | + oweFee: 'Owe Fee', | ||
| 94 | + contractCount: 'Contract', | ||
| 95 | + operation: 'Operation', | ||
| 96 | + detail: 'Detail' | ||
| 97 | + }, | ||
| 98 | + aRoomDetailCar: { | ||
| 99 | + placeholderCarNum: 'Please enter license plate number', | ||
| 100 | + carNum: 'License Plate', | ||
| 101 | + leaseType: 'Plate Type', | ||
| 102 | + tempCar: 'Temporary Car', | ||
| 103 | + carType: 'Vehicle Type', | ||
| 104 | + color: 'Color', | ||
| 105 | + owner: 'Owner', | ||
| 106 | + parkingSpace: 'Parking Space', | ||
| 107 | + released: 'Released', | ||
| 108 | + validity: 'Validity' | ||
| 109 | + }, | ||
| 110 | + carDetailTransaction: { | ||
| 111 | + syncId: 'Sync ID', | ||
| 112 | + deviceCode: 'Device Code', | ||
| 113 | + objectType: 'Object Type', | ||
| 114 | + objectName: 'Object Name', | ||
| 115 | + command: 'Command', | ||
| 116 | + status: 'Status', | ||
| 117 | + remark: 'Remark', | ||
| 118 | + syncTime: 'Sync Time' | ||
| 119 | + }, | ||
| 120 | + carDetailApply: { | ||
| 121 | + applyId: 'Apply ID', | ||
| 122 | + carNum: 'License Plate', | ||
| 123 | + parkingSpace: 'Parking Space', | ||
| 124 | + parkingLot: 'Parking Lot', | ||
| 125 | + space: 'Space', | ||
| 126 | + none: 'None', | ||
| 127 | + carBrand: 'Car Brand', | ||
| 128 | + carType: 'Car Type', | ||
| 129 | + color: 'Color', | ||
| 130 | + startTime: 'Start Time', | ||
| 131 | + endTime: 'End Time', | ||
| 132 | + applicant: 'Applicant', | ||
| 133 | + phone: 'Phone', | ||
| 134 | + result: 'Result', | ||
| 135 | + pendingReview: 'Pending Review', | ||
| 136 | + pendingPayment: 'Pending Payment', | ||
| 137 | + completed: 'Completed', | ||
| 138 | + reviewFailed: 'Review Failed', | ||
| 139 | + abnormalStatus: 'Abnormal Status', | ||
| 140 | + familyCar: 'Family Car', | ||
| 141 | + bus: 'Bus', | ||
| 142 | + truck: 'Truck', | ||
| 143 | + abnormalCar: 'Abnormal Car' | ||
| 144 | + }, | ||
| 145 | + aCarDetailCarInout: { | ||
| 146 | + entryImage: 'Entry Image', | ||
| 147 | + inoutNumber: 'In/Out Number', | ||
| 148 | + vehicleStatus: 'Vehicle Status', | ||
| 149 | + plateNumber: 'Plate Number', | ||
| 150 | + parkingLot: 'Parking Lot', | ||
| 151 | + billingRule: 'Billing Rule', | ||
| 152 | + plateType: 'Plate Type', | ||
| 153 | + entryTime: 'Entry Time', | ||
| 154 | + exitTime: 'Exit Time', | ||
| 155 | + parkingTime: 'Parking Time', | ||
| 156 | + chargeAmount: 'Charge Amount', | ||
| 157 | + remark: 'Remark', | ||
| 158 | + entry: 'Entry', | ||
| 159 | + exit: 'Exit', | ||
| 160 | + hour: 'hour', | ||
| 161 | + minute: 'min' | ||
| 162 | + } | ||
| 163 | + }, | ||
| 164 | + zh: { | ||
| 165 | + adminCarDetail: { | ||
| 166 | + vehicleInfo: '车辆信息', | ||
| 167 | + vehicleFee: '车辆费用', | ||
| 168 | + paymentRecord: '缴费记录', | ||
| 169 | + modificationRecord: '修改记录', | ||
| 170 | + memberVehicle: '成员车辆', | ||
| 171 | + ownerInfo: '业主信息', | ||
| 172 | + ownerHouse: '业主房屋', | ||
| 173 | + ownerVehicle: '业主车辆', | ||
| 174 | + licensePlateSync: '车牌同步', | ||
| 175 | + parkingSpaceApplication: '车位申请', | ||
| 176 | + accessRecord: '出入场记录' | ||
| 177 | + }, | ||
| 178 | + adminCarDetailInfo: { | ||
| 179 | + licensePlate: '车牌号:', | ||
| 180 | + carBrand: '车品牌:', | ||
| 181 | + carType: '车类型:', | ||
| 182 | + color: '颜色:', | ||
| 183 | + plateType: '车牌类型:', | ||
| 184 | + leaseStartTime: '起租时间:', | ||
| 185 | + leaseEndTime: '结租时间:', | ||
| 186 | + remark: '备注:', | ||
| 187 | + parkingLot: '停车场:', | ||
| 188 | + parkingSpace: '车位:', | ||
| 189 | + status: '状态:', | ||
| 190 | + relatedHouse: '关联房屋:' | ||
| 191 | + }, | ||
| 192 | + carDetailFee: { | ||
| 193 | + feeItem: '费用项目', | ||
| 194 | + feeFlag: '费用标识', | ||
| 195 | + feeType: '费用类型', | ||
| 196 | + amountOwed: '应收金额', | ||
| 197 | + createTime: '建账时间', | ||
| 198 | + duePeriod: '应收时间段', | ||
| 199 | + remark: '说明', | ||
| 200 | + preDegrees: '上期度数', | ||
| 201 | + curDegrees: '本期度数', | ||
| 202 | + unitPrice: '单价', | ||
| 203 | + additionalFee: '附加费', | ||
| 204 | + fixedFee: '固定费', | ||
| 205 | + status: '状态', | ||
| 206 | + operation: '操作', | ||
| 207 | + paymentNotice: '缴费请到业务受理页面缴费' | ||
| 208 | + }, | ||
| 209 | + carDetailHis: { | ||
| 210 | + carNum: '车牌号', | ||
| 211 | + leaseType: '车牌类型', | ||
| 212 | + tempCar: '临时车', | ||
| 213 | + carType: '车辆类型', | ||
| 214 | + color: '颜色', | ||
| 215 | + owner: '业主', | ||
| 216 | + parkingSpace: '车位', | ||
| 217 | + spaceReleased: '车位已释放', | ||
| 218 | + validPeriod: '有效期', | ||
| 219 | + action: '动作', | ||
| 220 | + operator: '操作人', | ||
| 221 | + operateTime: '操作时间', | ||
| 222 | + add: '添加', | ||
| 223 | + delete: '删除', | ||
| 224 | + modifyNew: '修改(新)', | ||
| 225 | + modifyOld: '修改(旧)' | ||
| 226 | + }, | ||
| 227 | + carDetailMember: { | ||
| 228 | + carNum: '车牌号', | ||
| 229 | + roomNum: '房屋号', | ||
| 230 | + carBrand: '车辆品牌', | ||
| 231 | + carType: '车辆类型', | ||
| 232 | + color: '颜色', | ||
| 233 | + owner: '业主', | ||
| 234 | + parkingSpace: '车位', | ||
| 235 | + parkingLot: '车场', | ||
| 236 | + space: '车位', | ||
| 237 | + none: '无', | ||
| 238 | + startTime: '起租时间', | ||
| 239 | + endTime: '截止时间', | ||
| 240 | + status: '状态' | ||
| 241 | + }, | ||
| 242 | + carDetailOwner: { | ||
| 243 | + ownerFace: '业主人脸', | ||
| 244 | + name: '姓名', | ||
| 245 | + gender: '性别', | ||
| 246 | + male: '男', | ||
| 247 | + female: '女', | ||
| 248 | + idCard: '身份证', | ||
| 249 | + address: '家庭住址', | ||
| 250 | + roomCount: '房屋数', | ||
| 251 | + memberCount: '业主成员', | ||
| 252 | + carCount: '车辆数', | ||
| 253 | + complaintCount: '投诉', | ||
| 254 | + repairCount: '报修', | ||
| 255 | + oweFee: '欠费', | ||
| 256 | + contractCount: '业主合同', | ||
| 257 | + operation: '操作', | ||
| 258 | + detail: '详情' | ||
| 259 | + }, | ||
| 260 | + aRoomDetailCar: { | ||
| 261 | + placeholderCarNum: '请填写车牌号', | ||
| 262 | + carNum: '车牌号', | ||
| 263 | + leaseType: '车牌类型', | ||
| 264 | + tempCar: '临时车', | ||
| 265 | + carType: '车辆类型', | ||
| 266 | + color: '颜色', | ||
| 267 | + owner: '业主', | ||
| 268 | + parkingSpace: '车位', | ||
| 269 | + released: '车位已释放', | ||
| 270 | + validity: '有效期' | ||
| 271 | + }, | ||
| 272 | + carDetailTransaction: { | ||
| 273 | + syncId: '同步ID', | ||
| 274 | + deviceCode: '设备编码', | ||
| 275 | + objectType: '对象类型', | ||
| 276 | + objectName: '对象名称', | ||
| 277 | + command: '指令', | ||
| 278 | + status: '状态', | ||
| 279 | + remark: '说明', | ||
| 280 | + syncTime: '同步时间' | ||
| 281 | + }, | ||
| 282 | + carDetailApply: { | ||
| 283 | + applyId: '申请ID', | ||
| 284 | + carNum: '车牌号', | ||
| 285 | + parkingSpace: '停车位', | ||
| 286 | + parkingLot: '停车场', | ||
| 287 | + space: '停车位', | ||
| 288 | + none: '无', | ||
| 289 | + carBrand: '汽车品牌', | ||
| 290 | + carType: '车辆类型', | ||
| 291 | + color: '颜色', | ||
| 292 | + startTime: '起租时间', | ||
| 293 | + endTime: '结租时间', | ||
| 294 | + applicant: '申请人', | ||
| 295 | + phone: '手机号', | ||
| 296 | + result: '审核结果', | ||
| 297 | + pendingReview: '待审核', | ||
| 298 | + pendingPayment: '待缴费', | ||
| 299 | + completed: '完成', | ||
| 300 | + reviewFailed: '审核失败', | ||
| 301 | + abnormalStatus: '状态异常', | ||
| 302 | + familyCar: '家用小汽车', | ||
| 303 | + bus: '客车', | ||
| 304 | + truck: '货车', | ||
| 305 | + abnormalCar: '异常车辆' | ||
| 306 | + }, | ||
| 307 | + aCarDetailCarInout: { | ||
| 308 | + entryImage: '进场图', | ||
| 309 | + inoutNumber: '进出场编号', | ||
| 310 | + vehicleStatus: '车辆状态', | ||
| 311 | + plateNumber: '车牌号', | ||
| 312 | + parkingLot: '停车场', | ||
| 313 | + billingRule: '计费规则', | ||
| 314 | + plateType: '车牌类型', | ||
| 315 | + entryTime: '进场时间', | ||
| 316 | + exitTime: '出场时间', | ||
| 317 | + parkingTime: '停车时间', | ||
| 318 | + chargeAmount: '收费金额', | ||
| 319 | + remark: '说明', | ||
| 320 | + entry: '进场', | ||
| 321 | + exit: '出场', | ||
| 322 | + hour: '小时', | ||
| 323 | + minute: '分' | ||
| 324 | + } | ||
| 325 | + } | ||
| 326 | +} | ||
| 0 | \ No newline at end of file | 327 | \ No newline at end of file |
src/views/aCommunity/adminCarDetailList.vue
0 → 100644
| 1 | +<template> | ||
| 2 | + <div class="admin-car-detail"> | ||
| 3 | + <div class="white-bg padding-left padding-right padding-top border-radius-top"> | ||
| 4 | + <div class="flex justify-between"> | ||
| 5 | + <div class="text-title"> | ||
| 6 | + {{ $t('adminCarDetail.vehicleInfo') }} | ||
| 7 | + </div> | ||
| 8 | + </div> | ||
| 9 | + | ||
| 10 | + <!-- 车辆信息 --> | ||
| 11 | + <div class="margin-top text-left"> | ||
| 12 | + <el-row> | ||
| 13 | + <el-col :span="24"> | ||
| 14 | + <el-row> | ||
| 15 | + <el-col :span="6"> | ||
| 16 | + <div class="form-group"> | ||
| 17 | + <label class="col-form-label"> | ||
| 18 | + {{ $t('adminCarDetailInfo.licensePlate') }} | ||
| 19 | + </label> | ||
| 20 | + <label>{{ adminCarDetailInfo.carNum }}</label> | ||
| 21 | + </div> | ||
| 22 | + </el-col> | ||
| 23 | + <el-col :span="6"> | ||
| 24 | + <div class="form-group"> | ||
| 25 | + <label class="col-form-label"> | ||
| 26 | + {{ $t('adminCarDetailInfo.carBrand') }} | ||
| 27 | + </label> | ||
| 28 | + <label>{{ adminCarDetailInfo.carBrand || '-' }}</label> | ||
| 29 | + </div> | ||
| 30 | + </el-col> | ||
| 31 | + <el-col :span="6"> | ||
| 32 | + <div class="form-group"> | ||
| 33 | + <label class="col-form-label"> | ||
| 34 | + {{ $t('adminCarDetailInfo.carType') }} | ||
| 35 | + </label> | ||
| 36 | + <label>{{ adminCarDetailInfo.leaseTypeName }}</label> | ||
| 37 | + </div> | ||
| 38 | + </el-col> | ||
| 39 | + <el-col :span="6"> | ||
| 40 | + <div class="form-group"> | ||
| 41 | + <label class="col-form-label"> | ||
| 42 | + {{ $t('adminCarDetailInfo.color') }} | ||
| 43 | + </label> | ||
| 44 | + <label>{{ adminCarDetailInfo.carColor || '-' }}</label> | ||
| 45 | + </div> | ||
| 46 | + </el-col> | ||
| 47 | + </el-row> | ||
| 48 | + | ||
| 49 | + <el-row> | ||
| 50 | + <el-col :span="6"> | ||
| 51 | + <div class="form-group"> | ||
| 52 | + <label class="col-form-label"> | ||
| 53 | + {{ $t('adminCarDetailInfo.plateType') }} | ||
| 54 | + </label> | ||
| 55 | + <label>{{ adminCarDetailInfo.carTypeName }}</label> | ||
| 56 | + </div> | ||
| 57 | + </el-col> | ||
| 58 | + <el-col :span="6"> | ||
| 59 | + <div class="form-group"> | ||
| 60 | + <label class="col-form-label"> | ||
| 61 | + {{ $t('adminCarDetailInfo.leaseStartTime') }} | ||
| 62 | + </label> | ||
| 63 | + <label>{{ adminCarDetailInfo.startTime }}</label> | ||
| 64 | + </div> | ||
| 65 | + </el-col> | ||
| 66 | + <el-col :span="6"> | ||
| 67 | + <div class="form-group"> | ||
| 68 | + <label class="col-form-label"> | ||
| 69 | + {{ $t('adminCarDetailInfo.leaseEndTime') }} | ||
| 70 | + </label> | ||
| 71 | + <label>{{ adminCarDetailInfo.endTime }}</label> | ||
| 72 | + </div> | ||
| 73 | + </el-col> | ||
| 74 | + <el-col :span="6"> | ||
| 75 | + <div class="form-group"> | ||
| 76 | + <label class="col-form-label"> | ||
| 77 | + {{ $t('adminCarDetailInfo.remark') }} | ||
| 78 | + </label> | ||
| 79 | + <label>{{ adminCarDetailInfo.remark }}</label> | ||
| 80 | + </div> | ||
| 81 | + </el-col> | ||
| 82 | + </el-row> | ||
| 83 | + | ||
| 84 | + <el-row> | ||
| 85 | + <el-col :span="6"> | ||
| 86 | + <div class="form-group"> | ||
| 87 | + <label class="col-form-label"> | ||
| 88 | + {{ $t('adminCarDetailInfo.parkingLot') }} | ||
| 89 | + </label> | ||
| 90 | + <label>{{ adminCarDetailInfo.areaNum }}</label> | ||
| 91 | + </div> | ||
| 92 | + </el-col> | ||
| 93 | + <el-col :span="6"> | ||
| 94 | + <div class="form-group"> | ||
| 95 | + <label class="col-form-label"> | ||
| 96 | + {{ $t('adminCarDetailInfo.parkingSpace') }} | ||
| 97 | + </label> | ||
| 98 | + <label>{{ adminCarDetailInfo.num }}</label> | ||
| 99 | + </div> | ||
| 100 | + </el-col> | ||
| 101 | + <el-col :span="6"> | ||
| 102 | + <div class="form-group"> | ||
| 103 | + <label class="col-form-label"> | ||
| 104 | + {{ $t('adminCarDetailInfo.status') }} | ||
| 105 | + </label> | ||
| 106 | + <label>{{ adminCarDetailInfo.stateName }}</label> | ||
| 107 | + </div> | ||
| 108 | + </el-col> | ||
| 109 | + <el-col :span="6"> | ||
| 110 | + <div class="form-group"> | ||
| 111 | + <label class="col-form-label"> | ||
| 112 | + {{ $t('adminCarDetailInfo.relatedHouse') }} | ||
| 113 | + </label> | ||
| 114 | + <label>{{ adminCarDetailInfo.roomName }}</label> | ||
| 115 | + </div> | ||
| 116 | + </el-col> | ||
| 117 | + </el-row> | ||
| 118 | + </el-col> | ||
| 119 | + </el-row> | ||
| 120 | + </div> | ||
| 121 | + | ||
| 122 | + <divider></divider> | ||
| 123 | + | ||
| 124 | + | ||
| 125 | + <div class="margin-top-sm"> | ||
| 126 | + <el-tabs v-model="adminCarDetailInfo._currentTab" @tab-click="handleTabClick(adminCarDetailInfo._currentTab)"> | ||
| 127 | + <el-tab-pane :label="$t('adminCarDetail.vehicleFee')" name="aCarDetailFee"></el-tab-pane> | ||
| 128 | + <el-tab-pane :label="$t('adminCarDetail.paymentRecord')" name="aRoomDetailHisFee"></el-tab-pane> | ||
| 129 | + <el-tab-pane :label="$t('adminCarDetail.modificationRecord')" name="aCarDetailHis"></el-tab-pane> | ||
| 130 | + <el-tab-pane :label="$t('adminCarDetail.memberVehicle')" name="aCarDetailMember"></el-tab-pane> | ||
| 131 | + <el-tab-pane :label="$t('adminCarDetail.ownerInfo')" name="aCarDetailOwner"></el-tab-pane> | ||
| 132 | + <el-tab-pane :label="$t('adminCarDetail.ownerHouse')" name="aRoomDetailRoom"></el-tab-pane> | ||
| 133 | + <el-tab-pane :label="$t('adminCarDetail.ownerVehicle')" name="aRoomDetailCar"></el-tab-pane> | ||
| 134 | + <el-tab-pane :label="$t('adminCarDetail.licensePlateSync')" name="aCarDetailTransactionCar"></el-tab-pane> | ||
| 135 | + <el-tab-pane :label="$t('adminCarDetail.parkingSpaceApplication')" name="aCarDetailApplySpace"></el-tab-pane> | ||
| 136 | + <el-tab-pane :label="$t('adminCarDetail.accessRecord')" name="aCarDetailCarInout"></el-tab-pane> | ||
| 137 | + </el-tabs> | ||
| 138 | + </div> | ||
| 139 | + </div> | ||
| 140 | + | ||
| 141 | + <div class="white-bg padding-left padding-right padding-top border-radius-bottom"> | ||
| 142 | + <a-car-detail-fee v-if="adminCarDetailInfo._currentTab === 'aCarDetailFee'" ref="aCarDetailFee"></a-car-detail-fee> | ||
| 143 | + <a-room-detail-his-fee v-if="adminCarDetailInfo._currentTab === 'aRoomDetailHisFee'" | ||
| 144 | + ref="aRoomDetailHisFee"></a-room-detail-his-fee> | ||
| 145 | + <a-car-detail-his v-if="adminCarDetailInfo._currentTab === 'aCarDetailHis'" ref="aCarDetailHis"></a-car-detail-his> | ||
| 146 | + <a-car-detail-member v-if="adminCarDetailInfo._currentTab === 'aCarDetailMember'" | ||
| 147 | + ref="aCarDetailMember"></a-car-detail-member> | ||
| 148 | + <a-car-detail-owner v-if="adminCarDetailInfo._currentTab === 'aCarDetailOwner'" | ||
| 149 | + ref="aCarDetailOwner"></a-car-detail-owner> | ||
| 150 | + <a-room-detail-room v-if="adminCarDetailInfo._currentTab === 'aRoomDetailRoom'" | ||
| 151 | + ref="aRoomDetailRoom"></a-room-detail-room> | ||
| 152 | + <a-room-detail-car v-if="adminCarDetailInfo._currentTab === 'aRoomDetailCar'" | ||
| 153 | + ref="aRoomDetailCar"></a-room-detail-car> | ||
| 154 | + <a-car-detail-transaction-car v-if="adminCarDetailInfo._currentTab === 'aCarDetailTransactionCar'" | ||
| 155 | + ref="aCarDetailTransactionCar"></a-car-detail-transaction-car> | ||
| 156 | + <a-car-detail-car-inout v-if="adminCarDetailInfo._currentTab === 'aCarDetailCarInout'" | ||
| 157 | + ref="aCarDetailCarInout"></a-car-detail-car-inout> | ||
| 158 | + <a-car-detail-apply-space v-if="adminCarDetailInfo._currentTab === 'aCarDetailApplySpace'" | ||
| 159 | + ref="aCarDetailApplySpace"></a-car-detail-apply-space> | ||
| 160 | + </div> | ||
| 161 | + </div> | ||
| 162 | +</template> | ||
| 163 | + | ||
| 164 | +<script> | ||
| 165 | +import { getCommunityId } from '@/api/community/communityApi' | ||
| 166 | +import { getOwnerCarInfo } from '@/api/aCommunity/adminCarDetailApi' | ||
| 167 | +import ACarDetailFee from '@/components/aCommunity/aCarDetailFee' | ||
| 168 | +import ARoomDetailHisFee from '@/components/fee/aRoomDetailHisFee' | ||
| 169 | +import ACarDetailHis from '@/components/aCommunity/aCarDetailHis' | ||
| 170 | +import ACarDetailMember from '@/components/aCommunity/aCarDetailMember' | ||
| 171 | +import ACarDetailOwner from '@/components/aCommunity/aCarDetailOwner' | ||
| 172 | +import ARoomDetailRoom from '@/components/fee/aRoomDetailRoom' | ||
| 173 | +import ARoomDetailCar from '@/components/aCommunity/aRoomDetailCar' | ||
| 174 | +import ACarDetailTransactionCar from '@/components/aCommunity/aCarDetailTransactionCar' | ||
| 175 | +import ACarDetailApplySpace from '@/components/aCommunity/aCarDetailApplySpace' | ||
| 176 | +import ACarDetailCarInout from '@/components/aCommunity/aCarDetailCarInout' | ||
| 177 | +import divider from '@/components/system/divider' | ||
| 178 | + | ||
| 179 | +export default { | ||
| 180 | + name: 'AdminCarDetailList', | ||
| 181 | + components: { | ||
| 182 | + ACarDetailFee, | ||
| 183 | + ARoomDetailHisFee, | ||
| 184 | + ACarDetailHis, | ||
| 185 | + ACarDetailMember, | ||
| 186 | + ACarDetailOwner, | ||
| 187 | + ARoomDetailRoom, | ||
| 188 | + ARoomDetailCar, | ||
| 189 | + ACarDetailTransactionCar, | ||
| 190 | + ACarDetailApplySpace, | ||
| 191 | + ACarDetailCarInout, | ||
| 192 | + divider | ||
| 193 | + }, | ||
| 194 | + data() { | ||
| 195 | + return { | ||
| 196 | + adminCarDetailInfo: { | ||
| 197 | + memberId: '', | ||
| 198 | + carId: '', | ||
| 199 | + carNum: '', | ||
| 200 | + carTypeCd: '', | ||
| 201 | + carTypeCdName: '', | ||
| 202 | + carType: '', | ||
| 203 | + carTypeName: '', | ||
| 204 | + startTime: '', | ||
| 205 | + endTime: '', | ||
| 206 | + leaseType: '', | ||
| 207 | + leaseTypeName: '', | ||
| 208 | + areaNum: '', | ||
| 209 | + num: '', | ||
| 210 | + remark: '', | ||
| 211 | + stateName: '', | ||
| 212 | + carColor: '', | ||
| 213 | + carBrand: '', | ||
| 214 | + ownerId: '', | ||
| 215 | + roomName: '', | ||
| 216 | + carNumType: '', | ||
| 217 | + paId: '', | ||
| 218 | + _currentTab: 'aCarDetailFee', | ||
| 219 | + needBack: false | ||
| 220 | + }, | ||
| 221 | + communityId: '' | ||
| 222 | + } | ||
| 223 | + }, | ||
| 224 | + created() { | ||
| 225 | + this.communityId = getCommunityId() | ||
| 226 | + this.adminCarDetailInfo.memberId = this.$route.query.memberId | ||
| 227 | + if (this.adminCarDetailInfo.memberId) { | ||
| 228 | + this.loadCarDetailInfo() | ||
| 229 | + } | ||
| 230 | + }, | ||
| 231 | + methods: { | ||
| 232 | + async loadCarDetailInfo() { | ||
| 233 | + const params = { | ||
| 234 | + page: 1, | ||
| 235 | + row: 1, | ||
| 236 | + memberId: this.adminCarDetailInfo.memberId | ||
| 237 | + } | ||
| 238 | + | ||
| 239 | + const response = await getOwnerCarInfo(params) | ||
| 240 | + const carInfo = response.data[0] | ||
| 241 | + Object.assign(this.adminCarDetailInfo, carInfo) | ||
| 242 | + this.handleTabClick(this.adminCarDetailInfo._currentTab) | ||
| 243 | + }, | ||
| 244 | + handleTabClick(tab) { | ||
| 245 | + this.adminCarDetailInfo._currentTab = tab | ||
| 246 | + const tabData = { | ||
| 247 | + memberId: this.adminCarDetailInfo.memberId, | ||
| 248 | + carId: this.adminCarDetailInfo.carId, | ||
| 249 | + ownerId: this.adminCarDetailInfo.ownerId, | ||
| 250 | + carNum: this.adminCarDetailInfo.carNum, | ||
| 251 | + paId: this.adminCarDetailInfo.paId, | ||
| 252 | + areaNum: this.adminCarDetailInfo.areaNum | ||
| 253 | + } | ||
| 254 | + | ||
| 255 | + setTimeout(() => { | ||
| 256 | + this.$refs[this.adminCarDetailInfo._currentTab].open(tabData) | ||
| 257 | + }, 1000) | ||
| 258 | + } | ||
| 259 | + } | ||
| 260 | +} | ||
| 261 | +</script> | ||
| 262 | + | ||
| 263 | +<style scoped> | ||
| 264 | +.white-bg { | ||
| 265 | + background-color: #fff; | ||
| 266 | +} | ||
| 267 | + | ||
| 268 | +.padding-left { | ||
| 269 | + padding-left: 20px; | ||
| 270 | +} | ||
| 271 | + | ||
| 272 | +.padding-right { | ||
| 273 | + padding-right: 20px; | ||
| 274 | +} | ||
| 275 | + | ||
| 276 | +.padding-top { | ||
| 277 | + padding-top: 20px; | ||
| 278 | +} | ||
| 279 | + | ||
| 280 | +.border-radius-top { | ||
| 281 | + border-radius: 4px 4px 0 0; | ||
| 282 | +} | ||
| 283 | + | ||
| 284 | +.border-radius-bottom { | ||
| 285 | + border-radius: 0 0 4px 4px; | ||
| 286 | +} | ||
| 287 | + | ||
| 288 | +.margin-top { | ||
| 289 | + margin-top: 20px; | ||
| 290 | +} | ||
| 291 | + | ||
| 292 | +.margin-top-sm { | ||
| 293 | + margin-top: 10px; | ||
| 294 | +} | ||
| 295 | + | ||
| 296 | +.text-title { | ||
| 297 | + font-size: 18px; | ||
| 298 | + font-weight: bold; | ||
| 299 | +} | ||
| 300 | + | ||
| 301 | +.flex { | ||
| 302 | + display: flex; | ||
| 303 | +} | ||
| 304 | + | ||
| 305 | +.justify-between { | ||
| 306 | + justify-content: space-between; | ||
| 307 | +} | ||
| 308 | + | ||
| 309 | +.vc-line-primary { | ||
| 310 | + height: 1px; | ||
| 311 | + background-color: #ebeef5; | ||
| 312 | +} | ||
| 313 | + | ||
| 314 | +.form-group { | ||
| 315 | + margin-bottom: 15px; | ||
| 316 | + | ||
| 317 | +} | ||
| 318 | + | ||
| 319 | +.col-form-label { | ||
| 320 | + margin-bottom: 5px; | ||
| 321 | + color: #606266; | ||
| 322 | +} | ||
| 323 | +</style> | ||
| 0 | \ No newline at end of file | 324 | \ No newline at end of file |
src/views/owner/adminAuthOwnerList.vue
| @@ -6,52 +6,31 @@ | @@ -6,52 +6,31 @@ | ||
| 6 | </el-col> | 6 | </el-col> |
| 7 | <el-col :span="21"> | 7 | <el-col :span="21"> |
| 8 | <el-card class="box-card"> | 8 | <el-card class="box-card"> |
| 9 | - <div slot="header" class="clearfix"> | 9 | + <div slot="header" class="flex justify-between"> |
| 10 | <span>{{ $t('adminAuthOwner.search.title') }}</span> | 10 | <span>{{ $t('adminAuthOwner.search.title') }}</span> |
| 11 | </div> | 11 | </div> |
| 12 | <el-row :gutter="20"> | 12 | <el-row :gutter="20"> |
| 13 | - <el-col :span="6"> | ||
| 14 | - <el-select | ||
| 15 | - v-model="searchForm.state" | ||
| 16 | - :placeholder="$t('adminAuthOwner.search.state')" | ||
| 17 | - clearable | ||
| 18 | - class="filter-item" | ||
| 19 | - > | ||
| 20 | - <el-option | ||
| 21 | - v-for="item in statusOptions" | ||
| 22 | - :key="item.statusCd" | ||
| 23 | - :label="item.name" | ||
| 24 | - :value="item.statusCd" | ||
| 25 | - /> | 13 | + <el-col :span="4"> |
| 14 | + <el-select v-model="searchForm.state" :placeholder="$t('adminAuthOwner.search.state')" clearable | ||
| 15 | + class="filter-item"> | ||
| 16 | + <el-option v-for="item in statusOptions" :key="item.statusCd" :label="item.name" | ||
| 17 | + :value="item.statusCd" /> | ||
| 26 | </el-select> | 18 | </el-select> |
| 27 | </el-col> | 19 | </el-col> |
| 28 | - <el-col :span="6"> | ||
| 29 | - <el-input | ||
| 30 | - v-model="searchForm.appUserName" | ||
| 31 | - :placeholder="$t('adminAuthOwner.search.appUserName')" | ||
| 32 | - clearable | ||
| 33 | - class="filter-item" | ||
| 34 | - /> | 20 | + <el-col :span="4"> |
| 21 | + <el-input v-model="searchForm.appUserName" :placeholder="$t('adminAuthOwner.search.appUserName')" | ||
| 22 | + clearable class="filter-item" /> | ||
| 35 | </el-col> | 23 | </el-col> |
| 36 | - <el-col :span="6"> | ||
| 37 | - <el-input | ||
| 38 | - v-model="searchForm.idCard" | ||
| 39 | - :placeholder="$t('adminAuthOwner.search.idCard')" | ||
| 40 | - clearable | ||
| 41 | - class="filter-item" | ||
| 42 | - /> | 24 | + <el-col :span="4"> |
| 25 | + <el-input v-model="searchForm.idCard" :placeholder="$t('adminAuthOwner.search.idCard')" clearable | ||
| 26 | + class="filter-item" /> | ||
| 43 | </el-col> | 27 | </el-col> |
| 44 | - <el-col :span="6"> | ||
| 45 | - <el-input | ||
| 46 | - v-model="searchForm.link" | ||
| 47 | - :placeholder="$t('adminAuthOwner.search.link')" | ||
| 48 | - clearable | ||
| 49 | - class="filter-item" | ||
| 50 | - /> | 28 | + <el-col :span="4"> |
| 29 | + <el-input v-model="searchForm.link" :placeholder="$t('adminAuthOwner.search.link')" clearable | ||
| 30 | + class="filter-item" /> | ||
| 51 | </el-col> | 31 | </el-col> |
| 52 | - </el-row> | ||
| 53 | - <el-row :gutter="20" style="margin-top: 15px;"> | ||
| 54 | - <el-col :span="24" style="text-align: right;"> | 32 | + |
| 33 | + <el-col :span="4" > | ||
| 55 | <el-button type="primary" @click="handleSearch"> | 34 | <el-button type="primary" @click="handleSearch"> |
| 56 | {{ $t('common.search') }} | 35 | {{ $t('common.search') }} |
| 57 | </el-button> | 36 | </el-button> |
| @@ -63,96 +42,45 @@ | @@ -63,96 +42,45 @@ | ||
| 63 | </el-card> | 42 | </el-card> |
| 64 | 43 | ||
| 65 | <el-card class="box-card" style="margin-top: 20px;"> | 44 | <el-card class="box-card" style="margin-top: 20px;"> |
| 66 | - <div slot="header" class="clearfix"> | 45 | + <div slot="header" class="flex justify-between"> |
| 67 | <span>{{ $t('adminAuthOwner.list.title') }}</span> | 46 | <span>{{ $t('adminAuthOwner.list.title') }}</span> |
| 68 | </div> | 47 | </div> |
| 69 | - <el-table | ||
| 70 | - v-loading="loading" | ||
| 71 | - :data="tableData" | ||
| 72 | - border | ||
| 73 | - style="width: 100%" | ||
| 74 | - > | ||
| 75 | - <el-table-column | ||
| 76 | - prop="communityName" | ||
| 77 | - :label="$t('adminAuthOwner.table.communityName')" | ||
| 78 | - align="center" | ||
| 79 | - /> | ||
| 80 | - <el-table-column | ||
| 81 | - :label="$t('adminAuthOwner.table.appUserName')" | ||
| 82 | - align="center" | ||
| 83 | - > | 48 | + <el-table v-loading="loading" :data="tableData" border style="width: 100%"> |
| 49 | + <el-table-column prop="communityName" :label="$t('adminAuthOwner.table.communityName')" align="center" /> | ||
| 50 | + <el-table-column :label="$t('adminAuthOwner.table.appUserName')" align="center"> | ||
| 84 | <template slot-scope="scope"> | 51 | <template slot-scope="scope"> |
| 85 | <div>{{ scope.row.appUserName }}</div> | 52 | <div>{{ scope.row.appUserName }}</div> |
| 86 | <div v-if="scope.row.ownerId">({{ scope.row.ownerId }})</div> | 53 | <div v-if="scope.row.ownerId">({{ scope.row.ownerId }})</div> |
| 87 | </template> | 54 | </template> |
| 88 | </el-table-column> | 55 | </el-table-column> |
| 89 | - <el-table-column | ||
| 90 | - prop="link" | ||
| 91 | - :label="$t('adminAuthOwner.table.link')" | ||
| 92 | - align="center" | ||
| 93 | - /> | ||
| 94 | - <el-table-column | ||
| 95 | - prop="roomName" | ||
| 96 | - :label="$t('adminAuthOwner.table.roomName')" | ||
| 97 | - align="center" | ||
| 98 | - > | 56 | + <el-table-column prop="link" :label="$t('adminAuthOwner.table.link')" align="center" /> |
| 57 | + <el-table-column prop="roomName" :label="$t('adminAuthOwner.table.roomName')" align="center"> | ||
| 99 | <template slot-scope="scope"> | 58 | <template slot-scope="scope"> |
| 100 | {{ scope.row.roomName || '-' }} | 59 | {{ scope.row.roomName || '-' }} |
| 101 | </template> | 60 | </template> |
| 102 | </el-table-column> | 61 | </el-table-column> |
| 103 | - <el-table-column | ||
| 104 | - prop="ownerTypeCdName" | ||
| 105 | - :label="$t('adminAuthOwner.table.ownerTypeCdName')" | ||
| 106 | - align="center" | ||
| 107 | - > | 62 | + <el-table-column prop="ownerTypeCdName" :label="$t('adminAuthOwner.table.ownerTypeCdName')" align="center"> |
| 108 | <template slot-scope="scope"> | 63 | <template slot-scope="scope"> |
| 109 | {{ scope.row.ownerTypeCdName || '-' }} | 64 | {{ scope.row.ownerTypeCdName || '-' }} |
| 110 | </template> | 65 | </template> |
| 111 | </el-table-column> | 66 | </el-table-column> |
| 112 | - <el-table-column | ||
| 113 | - prop="idCard" | ||
| 114 | - :label="$t('adminAuthOwner.table.idCard')" | ||
| 115 | - align="center" | ||
| 116 | - > | 67 | + <el-table-column prop="idCard" :label="$t('adminAuthOwner.table.idCard')" align="center"> |
| 117 | <template slot-scope="scope"> | 68 | <template slot-scope="scope"> |
| 118 | {{ scope.row.idCard || '-' }} | 69 | {{ scope.row.idCard || '-' }} |
| 119 | </template> | 70 | </template> |
| 120 | </el-table-column> | 71 | </el-table-column> |
| 121 | - <el-table-column | ||
| 122 | - prop="stateName" | ||
| 123 | - :label="$t('adminAuthOwner.table.stateName')" | ||
| 124 | - align="center" | ||
| 125 | - /> | ||
| 126 | - <el-table-column | ||
| 127 | - prop="remark" | ||
| 128 | - :label="$t('adminAuthOwner.table.remark')" | ||
| 129 | - align="center" | ||
| 130 | - > | 72 | + <el-table-column prop="stateName" :label="$t('adminAuthOwner.table.stateName')" align="center" /> |
| 73 | + <el-table-column prop="remark" :label="$t('adminAuthOwner.table.remark')" align="center"> | ||
| 131 | <template slot-scope="scope"> | 74 | <template slot-scope="scope"> |
| 132 | {{ scope.row.remark || '-' }} | 75 | {{ scope.row.remark || '-' }} |
| 133 | </template> | 76 | </template> |
| 134 | </el-table-column> | 77 | </el-table-column> |
| 135 | - <el-table-column | ||
| 136 | - prop="createTime" | ||
| 137 | - :label="$t('adminAuthOwner.table.createTime')" | ||
| 138 | - align="center" | ||
| 139 | - /> | ||
| 140 | - <el-table-column | ||
| 141 | - prop="appTypeName" | ||
| 142 | - :label="$t('adminAuthOwner.table.appTypeName')" | ||
| 143 | - align="center" | ||
| 144 | - /> | 78 | + <el-table-column prop="createTime" :label="$t('adminAuthOwner.table.createTime')" align="center" /> |
| 79 | + <el-table-column prop="appTypeName" :label="$t('adminAuthOwner.table.appTypeName')" align="center" /> | ||
| 145 | </el-table> | 80 | </el-table> |
| 146 | - <el-pagination | ||
| 147 | - :current-page="pagination.current" | ||
| 148 | - :page-sizes="[10, 20, 30, 50]" | ||
| 149 | - :page-size="pagination.size" | ||
| 150 | - :total="pagination.total" | ||
| 151 | - layout="total, sizes, prev, pager, next, jumper" | ||
| 152 | - style="margin-top: 15px;" | ||
| 153 | - @size-change="handleSizeChange" | ||
| 154 | - @current-change="handleCurrentChange" | ||
| 155 | - /> | 81 | + <el-pagination :current-page="pagination.current" :page-sizes="[10, 20, 30, 50]" :page-size="pagination.size" |
| 82 | + :total="pagination.total" layout="total, sizes, prev, pager, next, jumper" style="margin-top: 15px;" | ||
| 83 | + @size-change="handleSizeChange" @current-change="handleCurrentChange" /> | ||
| 156 | </el-card> | 84 | </el-card> |
| 157 | </el-col> | 85 | </el-col> |
| 158 | </el-row> | 86 | </el-row> |
| @@ -246,11 +174,11 @@ export default { | @@ -246,11 +174,11 @@ export default { | ||
| 246 | <style lang="scss" scoped> | 174 | <style lang="scss" scoped> |
| 247 | .admin-auth-owner-container { | 175 | .admin-auth-owner-container { |
| 248 | padding: 20px; | 176 | padding: 20px; |
| 249 | - | 177 | + |
| 250 | .box-card { | 178 | .box-card { |
| 251 | margin-bottom: 20px; | 179 | margin-bottom: 20px; |
| 252 | } | 180 | } |
| 253 | - | 181 | + |
| 254 | .filter-item { | 182 | .filter-item { |
| 255 | width: 100%; | 183 | width: 100%; |
| 256 | } | 184 | } |