Commit a254762819528629e55f91a51698de1c3d172fc3
1 parent
8c078200
运营加入房屋详情页面
Showing
34 changed files
with
1964 additions
and
7 deletions
src/api/aCommunity/aRoomDetailCarApi.js
0 → 100644
src/api/aCommunity/aRoomDetailCarFeeApi.js
0 → 100644
| 1 | +import request from '@/utils/request' | |
| 2 | + | |
| 3 | +export function listAdminFee(params) { | |
| 4 | + return request({ | |
| 5 | + url: '/fee.listAdminFee', | |
| 6 | + method: 'get', | |
| 7 | + params | |
| 8 | + }).then(res => { | |
| 9 | + return res.data | |
| 10 | + }) | |
| 11 | +} | |
| 12 | + | |
| 13 | +export function queryAdminOwnerCars(params) { | |
| 14 | + return request({ | |
| 15 | + url: '/owner.queryAdminOwnerCars', | |
| 16 | + method: 'get', | |
| 17 | + params | |
| 18 | + }).then(res => { | |
| 19 | + return res.data | |
| 20 | + }) | |
| 21 | +} | |
| 0 | 22 | \ No newline at end of file | ... | ... |
src/api/aCommunity/aRoomDetailComplaintApi.js
0 → 100644
| 1 | +import request from '@/utils/request' | |
| 2 | + | |
| 3 | +export function listAdminComplaints(params) { | |
| 4 | + return new Promise((resolve, reject) => { | |
| 5 | + request({ | |
| 6 | + url: '/complaint.listAdminComplaints', | |
| 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 complaint list')) | |
| 15 | + } | |
| 16 | + }).catch(error => { | |
| 17 | + reject(error) | |
| 18 | + }) | |
| 19 | + }) | |
| 20 | +} | |
| 0 | 21 | \ No newline at end of file | ... | ... |
src/api/aCommunity/aRoomDetailContractApi.js
0 → 100644
src/api/aCommunity/aRoomDetailHisOwnerApi.js
0 → 100644
| 1 | +import request from '@/utils/request' | |
| 2 | + | |
| 3 | +export function queryAdminRoomHisOwner(params) { | |
| 4 | + return new Promise((resolve, reject) => { | |
| 5 | + request({ | |
| 6 | + url: '/owner.queryAdminRoomHisOwner', | |
| 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 history')) | |
| 15 | + } | |
| 16 | + }).catch(error => { | |
| 17 | + reject(error) | |
| 18 | + }) | |
| 19 | + }) | |
| 20 | +} | |
| 0 | 21 | \ No newline at end of file | ... | ... |
src/api/aCommunity/aRoomDetailMemberApi.js
0 → 100644
src/api/aCommunity/aRoomDetailRepairApi.js
0 → 100644
src/api/aCommunity/adminRoomDetailApi.js
0 → 100644
| 1 | +import request from '@/utils/request' | |
| 2 | + | |
| 3 | +// 获取房屋详情 | |
| 4 | +export function getRoomDetail(params) { | |
| 5 | + return new Promise((resolve, reject) => { | |
| 6 | + request({ | |
| 7 | + url: '/room.queryAdminRoom', | |
| 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 || '获取房屋详情失败')) | |
| 16 | + } | |
| 17 | + }).catch(error => { | |
| 18 | + reject(error) | |
| 19 | + }) | |
| 20 | + }) | |
| 21 | +} | |
| 22 | + | |
| 23 | +// 获取业主信息 | |
| 24 | +export function getOwnerInfo(params) { | |
| 25 | + return new Promise((resolve, reject) => { | |
| 26 | + request({ | |
| 27 | + url: '/owner.queryOwner', | |
| 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 || '获取业主信息失败')) | |
| 36 | + } | |
| 37 | + }).catch(error => { | |
| 38 | + reject(error) | |
| 39 | + }) | |
| 40 | + }) | |
| 41 | +} | |
| 42 | + | |
| 43 | +// 获取家庭成员列表 | |
| 44 | +export function getMemberList(params) { | |
| 45 | + return new Promise((resolve, reject) => { | |
| 46 | + request({ | |
| 47 | + url: '/member.queryMember', | |
| 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 || '获取家庭成员列表失败')) | |
| 56 | + } | |
| 57 | + }).catch(error => { | |
| 58 | + reject(error) | |
| 59 | + }) | |
| 60 | + }) | |
| 61 | +} | |
| 62 | + | |
| 63 | +// 获取业主车辆列表 | |
| 64 | +export function getCarList(params) { | |
| 65 | + return new Promise((resolve, reject) => { | |
| 66 | + request({ | |
| 67 | + url: '/car.queryCar', | |
| 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 || '获取业主车辆列表失败')) | |
| 76 | + } | |
| 77 | + }).catch(error => { | |
| 78 | + reject(error) | |
| 79 | + }) | |
| 80 | + }) | |
| 81 | +} | |
| 0 | 82 | \ No newline at end of file | ... | ... |
src/components/aCommunity/aRoomDetailCar.vue
0 → 100644
| 1 | +<template> | |
| 2 | + <div class="margin-top"> | |
| 3 | + <el-row class="margin-top-lg"> | |
| 4 | + <el-col :span="4" class="padding-right-xs padding-left-xl"> | |
| 5 | + <el-input v-model="aRoomDetailCarInfo.carNum" type="text" | |
| 6 | + :placeholder="$t('aRoomDetailCar.placeholderCarNum')"></el-input> | |
| 7 | + </el-col> | |
| 8 | + <el-col :span="4" class="padding-right-xs padding-right-xl"> | |
| 9 | + <el-button type="primary" size="small" style="margin-left:10px" @click="_qureyARoomDetailCar()"> | |
| 10 | + <i class="el-icon-search"></i>{{ $t('common.search') }} | |
| 11 | + </el-button> | |
| 12 | + </el-col> | |
| 13 | + <el-col :span="16" class="text-right"></el-col> | |
| 14 | + </el-row> | |
| 15 | + <div class="margin-top"> | |
| 16 | + <el-table :data="aRoomDetailCarInfo.cars" style="width: 100%"> | |
| 17 | + <el-table-column prop="carNum" :label="$t('aRoomDetailCar.carNum')" align="center"></el-table-column> | |
| 18 | + <el-table-column prop="leaseType" :label="$t('aRoomDetailCar.leaseType')" align="center"> | |
| 19 | + <template slot-scope="scope"> | |
| 20 | + {{ scope.row.leaseType == 'T' ? $t('aRoomDetailCar.tempCar') : scope.row.leaseTypeName }} | |
| 21 | + </template> | |
| 22 | + </el-table-column> | |
| 23 | + <el-table-column prop="carTypeName" :label="$t('aRoomDetailCar.carType')" align="center"></el-table-column> | |
| 24 | + <el-table-column prop="carColor" :label="$t('aRoomDetailCar.color')" align="center"></el-table-column> | |
| 25 | + <el-table-column prop="ownerName" :label="$t('aRoomDetailCar.owner')" align="center"> | |
| 26 | + <template slot-scope="scope">{{ scope.row.ownerName }}({{ scope.row.link }})</template> | |
| 27 | + </el-table-column> | |
| 28 | + <el-table-column prop="areaNum" :label="$t('aRoomDetailCar.parkingSpace')" align="center"> | |
| 29 | + <template slot-scope="scope"> | |
| 30 | + {{ scope.row.areaNum && scope.row.state == '1001' ? `${scope.row.areaNum}-${scope.row.num}` : | |
| 31 | + $t('aRoomDetailCar.released')}} | |
| 32 | + </template> | |
| 33 | + </el-table-column> | |
| 34 | + <el-table-column :label="$t('aRoomDetailCar.validity')" align="center"> | |
| 35 | + <template slot-scope="scope"> | |
| 36 | + {{ scope.row.startTime }}<br />~{{ scope.row.endTime }} | |
| 37 | + </template> | |
| 38 | + </el-table-column> | |
| 39 | + </el-table> | |
| 40 | + <el-row> | |
| 41 | + <el-col :span="16" :offset="8"> | |
| 42 | + <el-pagination @current-change="handleCurrentChange" :current-page="currentPage" :page-size="pageSize" | |
| 43 | + layout="total, prev, pager, next" :total="total"> | |
| 44 | + </el-pagination> | |
| 45 | + </el-col> | |
| 46 | + </el-row> | |
| 47 | + </div> | |
| 48 | + </div> | |
| 49 | +</template> | |
| 50 | + | |
| 51 | +<script> | |
| 52 | +import { queryAdminOwnerCars } from '@/api/aCommunity/aRoomDetailCarApi' | |
| 53 | + | |
| 54 | +export default { | |
| 55 | + name: 'ARoomDetailCar', | |
| 56 | + data() { | |
| 57 | + return { | |
| 58 | + aRoomDetailCarInfo: { | |
| 59 | + cars: [], | |
| 60 | + ownerId: '', | |
| 61 | + ownerName: '', | |
| 62 | + carNum: '', | |
| 63 | + memberId: '' | |
| 64 | + }, | |
| 65 | + currentPage: 1, | |
| 66 | + pageSize: 10, | |
| 67 | + total: 0 | |
| 68 | + } | |
| 69 | + }, | |
| 70 | + created() { | |
| 71 | + }, | |
| 72 | + methods: { | |
| 73 | + open(data) { | |
| 74 | + this.aRoomDetailCarInfo.ownerId = data.ownerId | |
| 75 | + this.aRoomDetailCarInfo.memberId = data.carId | |
| 76 | + this.aRoomDetailCarInfo.ownerName = data.ownerName | |
| 77 | + this._loadARoomDetailCarData(this.currentPage, this.pageSize) | |
| 78 | + }, | |
| 79 | + handleSwitch(data) { | |
| 80 | + this.aRoomDetailCarInfo.ownerId = data.ownerId | |
| 81 | + this.aRoomDetailCarInfo.memberId = data.carId | |
| 82 | + this.aRoomDetailCarInfo.ownerName = data.ownerName | |
| 83 | + this._loadARoomDetailCarData(this.currentPage, this.pageSize) | |
| 84 | + }, | |
| 85 | + handleNotify() { | |
| 86 | + this._loadARoomDetailCarData(this.currentPage, this.pageSize) | |
| 87 | + }, | |
| 88 | + handleCurrentChange(val) { | |
| 89 | + this.currentPage = val | |
| 90 | + this._loadARoomDetailCarData(val, this.pageSize) | |
| 91 | + }, | |
| 92 | + async _loadARoomDetailCarData(page, row) { | |
| 93 | + try { | |
| 94 | + const res = await queryAdminOwnerCars({ | |
| 95 | + ownerId: this.aRoomDetailCarInfo.ownerId, | |
| 96 | + carNum: this.aRoomDetailCarInfo.carNum, | |
| 97 | + memberId: this.aRoomDetailCarInfo.memberId, | |
| 98 | + page, | |
| 99 | + row | |
| 100 | + }) | |
| 101 | + this.aRoomDetailCarInfo.cars = res.data | |
| 102 | + this.total = res.records | |
| 103 | + } catch (error) { | |
| 104 | + console.error('请求失败:', error) | |
| 105 | + } | |
| 106 | + }, | |
| 107 | + _qureyARoomDetailCar() { | |
| 108 | + this.currentPage = 1 | |
| 109 | + this._loadARoomDetailCarData(1, this.pageSize) | |
| 110 | + } | |
| 111 | + } | |
| 112 | +} | |
| 113 | +</script> | |
| 114 | + | |
| 115 | +<style scoped> | |
| 116 | +/* Same styles as aRoomDetailMember */ | |
| 117 | +</style> | |
| 0 | 118 | \ No newline at end of file | ... | ... |
src/components/aCommunity/aRoomDetailCarDemo.vue
0 → 100644
| 1 | +<template> | |
| 2 | + <a-room-detail-car ref="carComponent" /> | |
| 3 | +</template> | |
| 4 | + | |
| 5 | +<script> | |
| 6 | +import ARoomDetailCar from './aRoomDetailCar' | |
| 7 | + | |
| 8 | +export default { | |
| 9 | + components: { | |
| 10 | + ARoomDetailCar | |
| 11 | + }, | |
| 12 | + methods: { | |
| 13 | + open(data) { | |
| 14 | + this.$refs.carComponent.handleSwitch(data) | |
| 15 | + }, | |
| 16 | + refresh() { | |
| 17 | + this.$refs.carComponent.handleNotify() | |
| 18 | + } | |
| 19 | + } | |
| 20 | +} | |
| 21 | +</script> | |
| 0 | 22 | \ No newline at end of file | ... | ... |
src/components/aCommunity/aRoomDetailCarFee.vue
0 → 100644
| 1 | +<template> | |
| 2 | + <div> | |
| 3 | + <el-row class="margin-top"> | |
| 4 | + <el-col :span="4" class="text-left"> | |
| 5 | + <el-select v-model="aRoomDetailCarFeeInfo.carId" @change="changeARoomDetailCar" | |
| 6 | + :placeholder="$t('aRoomDetailCarFee.selectCar')"> | |
| 7 | + <el-option v-for="item in aRoomDetailCarFeeInfo.ownerCars" :key="item.carId" :label="item.carNum" | |
| 8 | + :value="item.carId"> | |
| 9 | + </el-option> | |
| 10 | + </el-select> | |
| 11 | + </el-col> | |
| 12 | + <el-col :span="16" class="text-right"></el-col> | |
| 13 | + </el-row> | |
| 14 | + <div> | |
| 15 | + <el-table :data="aRoomDetailCarFeeInfo.fees" style="margin-top:10px"> | |
| 16 | + <el-table-column prop="feeName" :label="$t('aRoomDetailCarFee.feeItem')" align="center"> | |
| 17 | + <template slot-scope="scope"> | |
| 18 | + <span class="hand">{{ scope.row.feeName }}</span> | |
| 19 | + <i class="el-icon-info"></i> | |
| 20 | + </template> | |
| 21 | + </el-table-column> | |
| 22 | + <el-table-column prop="feeFlagName" :label="$t('aRoomDetailCarFee.feeFlag')" align="center"></el-table-column> | |
| 23 | + <el-table-column prop="feeTypeCdName" :label="$t('aRoomDetailCarFee.feeType')" align="center"></el-table-column> | |
| 24 | + <el-table-column prop="amountOwed" :label="$t('aRoomDetailCarFee.amount')" align="center"></el-table-column> | |
| 25 | + <el-table-column prop="startTime" :label="$t('aRoomDetailCarFee.createTime')" align="center"></el-table-column> | |
| 26 | + <el-table-column :label="$t('aRoomDetailCarFee.timeRange')" align="center"> | |
| 27 | + <template slot-scope="scope"> | |
| 28 | + {{ _getEndTime(scope.row) }}~<br />{{ _getDeadlineTime(scope.row) }} | |
| 29 | + </template> | |
| 30 | + </el-table-column> | |
| 31 | + <el-table-column :label="$t('aRoomDetailCarFee.description')" align="center" width="150"> | |
| 32 | + <template slot-scope="scope"> | |
| 33 | + <div v-if="scope.row.feeTypeCd == '888800010015' || scope.row.feeTypeCd == '888800010016'"> | |
| 34 | + <div>{{ $t('aRoomDetailCarFee.preDegrees') }}:{{ scope.row.preDegrees }}</div> | |
| 35 | + <div>{{ $t('aRoomDetailCarFee.curDegrees') }}:{{ scope.row.curDegrees }}</div> | |
| 36 | + <div>{{ $t('aRoomDetailCarFee.unitPrice') }}:{{ scope.row.squarePrice }}</div> | |
| 37 | + <div>{{ $t('aRoomDetailCarFee.additionalFee') }}:{{ scope.row.additionalAmount }}</div> | |
| 38 | + </div> | |
| 39 | + <div v-else-if="scope.row.feeTypeCd == '888800010017'"> | |
| 40 | + <div>{{ $t('aRoomDetailCarFee.algorithm') }}:{{ _getAttrValue(scope.row.feeAttrs, '390005') }}</div> | |
| 41 | + <div>{{ $t('aRoomDetailCarFee.usage') }}:{{ _getAttrValue(scope.row.feeAttrs, '390003') }}</div> | |
| 42 | + </div> | |
| 43 | + <div v-else> | |
| 44 | + <div>{{ $t('aRoomDetailCarFee.unitPrice') }}:{{ scope.row.squarePrice }}</div> | |
| 45 | + <div>{{ $t('aRoomDetailCarFee.fixedFee') }}:{{ scope.row.additionalAmount }}</div> | |
| 46 | + </div> | |
| 47 | + </template> | |
| 48 | + </el-table-column> | |
| 49 | + <el-table-column prop="stateName" :label="$t('aRoomDetailCarFee.state')" align="center"></el-table-column> | |
| 50 | + <el-table-column :label="$t('common.operation')" align="center"></el-table-column> | |
| 51 | + </el-table> | |
| 52 | + <el-row> | |
| 53 | + <el-col :span="12"> | |
| 54 | + <div> | |
| 55 | + {{ $t('aRoomDetailCarFee.note1') }} | |
| 56 | + </div> | |
| 57 | + <div> | |
| 58 | + {{ $t('aRoomDetailCarFee.note2') }} | |
| 59 | + </div> | |
| 60 | + </el-col> | |
| 61 | + <el-col :span="4"> | |
| 62 | + <span> {{ $t('aRoomDetailCarFee.totalArrears') }}: {{ aRoomDetailCarFeeInfo.totalAmount }}</span> | |
| 63 | + </el-col> | |
| 64 | + <el-col :span="8"> | |
| 65 | + <el-pagination @current-change="handleCurrentChange" :current-page="currentPage" :page-size="pageSize" | |
| 66 | + layout="total, prev, pager, next" :total="total"> | |
| 67 | + </el-pagination> | |
| 68 | + </el-col> | |
| 69 | + </el-row> | |
| 70 | + </div> | |
| 71 | + </div> | |
| 72 | +</template> | |
| 73 | + | |
| 74 | +<script> | |
| 75 | +import { listAdminFee, queryAdminOwnerCars } from '@/api/aCommunity/aRoomDetailCarFeeApi' | |
| 76 | + | |
| 77 | +export default { | |
| 78 | + name: 'ARoomDetailCarFee', | |
| 79 | + data() { | |
| 80 | + return { | |
| 81 | + aRoomDetailCarFeeInfo: { | |
| 82 | + fees: [], | |
| 83 | + ownerCars: [], | |
| 84 | + ownerId: '', | |
| 85 | + name: '', | |
| 86 | + carNum: '', | |
| 87 | + carId: '', | |
| 88 | + total: 0, | |
| 89 | + records: 1, | |
| 90 | + areaNum: '', | |
| 91 | + num: '', | |
| 92 | + parkingName: '', | |
| 93 | + totalAmount: 0.0 | |
| 94 | + }, | |
| 95 | + currentPage: 1, | |
| 96 | + pageSize: 100, | |
| 97 | + total: 0 | |
| 98 | + } | |
| 99 | + }, | |
| 100 | + created() { | |
| 101 | + }, | |
| 102 | + methods: { | |
| 103 | + open(data) { | |
| 104 | + if (!data.ownerId) return | |
| 105 | + this.clearARoomDetailCarFeeInfo() | |
| 106 | + Object.assign(this.aRoomDetailCarFeeInfo, data) | |
| 107 | + this._listOwnerCar() | |
| 108 | + .then(() => { | |
| 109 | + this._listARoomDetailCarFee(this.currentPage, this.pageSize) | |
| 110 | + }) | |
| 111 | + .catch(err => { | |
| 112 | + this.$message.error(err) | |
| 113 | + }) | |
| 114 | + }, | |
| 115 | + handleNotify() { | |
| 116 | + this._listARoomDetailCarFee(this.currentPage, this.pageSize) | |
| 117 | + }, | |
| 118 | + handleCurrentChange(val) { | |
| 119 | + this.currentPage = val | |
| 120 | + this._listARoomDetailCarFee(val, this.pageSize) | |
| 121 | + }, | |
| 122 | + async _listARoomDetailCarFee(page, row) { | |
| 123 | + if (!this.aRoomDetailCarFeeInfo.carId) return | |
| 124 | + | |
| 125 | + try { | |
| 126 | + const res = await listAdminFee({ | |
| 127 | + page, | |
| 128 | + row, | |
| 129 | + payerObjId: this.aRoomDetailCarFeeInfo.carId | |
| 130 | + }) | |
| 131 | + this.aRoomDetailCarFeeInfo.fees = res.fees | |
| 132 | + this.total = res.records | |
| 133 | + let totalAmount = 0.0 | |
| 134 | + res.fees.forEach(item => { | |
| 135 | + totalAmount += parseFloat(item.amountOwed) | |
| 136 | + }) | |
| 137 | + this.aRoomDetailCarFeeInfo.totalAmount = totalAmount | |
| 138 | + } catch (error) { | |
| 139 | + console.error('请求失败:', error) | |
| 140 | + } | |
| 141 | + }, | |
| 142 | + _getDeadlineTime(fee) { | |
| 143 | + if (fee.amountOwed == 0 && fee.endTime == fee.deadlineTime) { | |
| 144 | + return "-" | |
| 145 | + } | |
| 146 | + if (fee.state == '2009001') { | |
| 147 | + return "-" | |
| 148 | + } | |
| 149 | + return fee.deadlineTime | |
| 150 | + }, | |
| 151 | + _getEndTime(fee) { | |
| 152 | + if (fee.state == '2009001') { | |
| 153 | + return "-" | |
| 154 | + } | |
| 155 | + return fee.endTime | |
| 156 | + }, | |
| 157 | + async _listOwnerCar() { | |
| 158 | + return new Promise((resolve, reject) => { | |
| 159 | + queryAdminOwnerCars({ | |
| 160 | + page: 1, | |
| 161 | + row: 50, | |
| 162 | + ownerId: this.aRoomDetailCarFeeInfo.ownerId, | |
| 163 | + carTypeCd: '1001', | |
| 164 | + }) | |
| 165 | + .then(res => { | |
| 166 | + this.aRoomDetailCarFeeInfo.ownerCars = res.data | |
| 167 | + if (res.data.length > 0) { | |
| 168 | + this.aRoomDetailCarFeeInfo.carId = res.data[0].carId | |
| 169 | + this.aRoomDetailCarFeeInfo.carNum = res.data[0].carNum | |
| 170 | + this.aRoomDetailCarFeeInfo.num = res.data[0].num | |
| 171 | + this.aRoomDetailCarFeeInfo.parkingName = `${res.data[0].areaNum}${this.$t('aRoomDetailCarFee.parkingLot')}${res.data[0].num}${this.$t('aRoomDetailCarFee.parkingSpace')}` | |
| 172 | + resolve(res.data) | |
| 173 | + return | |
| 174 | + } | |
| 175 | + reject(this.$t('aRoomDetailCarFee.noParkingSpace')) | |
| 176 | + }) | |
| 177 | + .catch(err => { | |
| 178 | + reject(err) | |
| 179 | + }) | |
| 180 | + }) | |
| 181 | + }, | |
| 182 | + changeARoomDetailCar() { | |
| 183 | + const car = this.aRoomDetailCarFeeInfo.ownerCars.find(item => item.carId == this.aRoomDetailCarFeeInfo.carId) | |
| 184 | + if (!car) return | |
| 185 | + | |
| 186 | + this.aRoomDetailCarFeeInfo.carNum = car.carNum | |
| 187 | + this.aRoomDetailCarFeeInfo.num = car.num | |
| 188 | + this.aRoomDetailCarFeeInfo.parkingName = `${car.areaNum}${this.$t('aRoomDetailCarFee.parkingLot')}${car.num}${this.$t('aRoomDetailCarFee.parkingSpace')}` | |
| 189 | + this._listARoomDetailCarFee(this.currentPage, this.pageSize) | |
| 190 | + }, | |
| 191 | + clearARoomDetailCarFeeInfo() { | |
| 192 | + this.aRoomDetailCarFeeInfo = { | |
| 193 | + fees: [], | |
| 194 | + ownerCars: [], | |
| 195 | + ownerId: '', | |
| 196 | + name: '', | |
| 197 | + carNum: '', | |
| 198 | + carId: '', | |
| 199 | + total: 0, | |
| 200 | + records: 1, | |
| 201 | + areaNum: '', | |
| 202 | + num: '', | |
| 203 | + parkingName: '', | |
| 204 | + totalAmount: 0.0 | |
| 205 | + } | |
| 206 | + }, | |
| 207 | + _simplifyCarGetFeeOwnerInfo(attrs) { | |
| 208 | + const ownerName = this._getAttrValue(attrs, '390008') | |
| 209 | + const ownerLink = this._getAttrValue(attrs, '390009') | |
| 210 | + return `${this.$t('aRoomDetailCarFee.owner')}:${ownerName},${this.$t('aRoomDetailCarFee.phone')}:${ownerLink}` | |
| 211 | + }, | |
| 212 | + _getAttrValue(attrs, attrId) { | |
| 213 | + if (!attrs) return '' | |
| 214 | + const attr = attrs.find(item => item.attrId == attrId) | |
| 215 | + return attr ? attr.value : '' | |
| 216 | + } | |
| 217 | + } | |
| 218 | +} | |
| 219 | +</script> | |
| 220 | + | |
| 221 | +<style scoped> | |
| 222 | +.hand { | |
| 223 | + cursor: pointer; | |
| 224 | +} | |
| 225 | + | |
| 226 | +/* Other styles same as previous components */ | |
| 227 | +</style> | |
| 0 | 228 | \ No newline at end of file | ... | ... |
src/components/aCommunity/aRoomDetailCarFeeDemo.vue
0 → 100644
| 1 | +<template> | |
| 2 | + <a-room-detail-car-fee ref="carFeeComponent" /> | |
| 3 | +</template> | |
| 4 | + | |
| 5 | +<script> | |
| 6 | +import ARoomDetailCarFee from './aRoomDetailCarFee' | |
| 7 | + | |
| 8 | +export default { | |
| 9 | + components: { | |
| 10 | + ARoomDetailCarFee | |
| 11 | + }, | |
| 12 | + methods: { | |
| 13 | + open(data) { | |
| 14 | + this.$refs.carFeeComponent.handleSwitch(data) | |
| 15 | + }, | |
| 16 | + refresh() { | |
| 17 | + this.$refs.carFeeComponent.handleNotify() | |
| 18 | + } | |
| 19 | + } | |
| 20 | +} | |
| 21 | +</script> | |
| 0 | 22 | \ No newline at end of file | ... | ... |
src/components/aCommunity/aRoomDetailComplaint.vue
0 → 100644
| 1 | +<template> | |
| 2 | + <div class="margin-top"> | |
| 3 | + <el-table :data="aRoomDetailComplaintInfo.complaints" border style="width: 100%" class="margin-top"> | |
| 4 | + <el-table-column prop="typeCdName" :label="$t('aRoomDetailComplaint.type')" align="center" /> | |
| 5 | + <el-table-column :label="$t('aRoomDetailComplaint.room')" align="center"> | |
| 6 | + <template slot-scope="scope"> | |
| 7 | + {{ scope.row.floorNum }}-{{ scope.row.unitNum }}-{{ scope.row.roomNum }} | |
| 8 | + </template> | |
| 9 | + </el-table-column> | |
| 10 | + <el-table-column prop="complaintName" :label="$t('aRoomDetailComplaint.contact')" align="center" /> | |
| 11 | + <el-table-column prop="tel" :label="$t('aRoomDetailComplaint.phone')" align="center" /> | |
| 12 | + <el-table-column prop="stateName" :label="$t('aRoomDetailComplaint.status')" align="center" /> | |
| 13 | + <el-table-column :label="$t('aRoomDetailComplaint.handler')" align="center"> | |
| 14 | + <template slot-scope="scope"> | |
| 15 | + {{ scope.row.currentUserName || $t('aRoomDetailComplaint.none') }} | |
| 16 | + </template> | |
| 17 | + </el-table-column> | |
| 18 | + <el-table-column :label="$t('aRoomDetailComplaint.handlerPhone')" align="center"> | |
| 19 | + <template slot-scope="scope"> | |
| 20 | + {{ scope.row.currentUserTel || $t('aRoomDetailComplaint.none') }} | |
| 21 | + </template> | |
| 22 | + </el-table-column> | |
| 23 | + <el-table-column prop="createTime" :label="$t('aRoomDetailComplaint.createTime')" align="center" /> | |
| 24 | + <el-table-column :label="$t('aRoomDetailComplaint.actions')" align="center" width="180"> | |
| 25 | + <template slot-scope="scope"> | |
| 26 | + <el-button size="mini" @click="handleOpenComplaintDetail(scope.row)"> | |
| 27 | + {{ $t('aRoomDetailComplaint.detail') }} | |
| 28 | + </el-button> | |
| 29 | + <el-button size="mini" @click="handleOpenWorkflowImage(scope.row)"> | |
| 30 | + {{ $t('aRoomDetailComplaint.flowChart') }} | |
| 31 | + </el-button> | |
| 32 | + </template> | |
| 33 | + </el-table-column> | |
| 34 | + </el-table> | |
| 35 | + | |
| 36 | + <el-row class="margin-top"> | |
| 37 | + <el-col :span="24" class="text-right"> | |
| 38 | + <el-pagination @current-change="handlePageChange" :current-page="pagination.currentPage" | |
| 39 | + :page-size="pagination.pageSize" layout="total, prev, pager, next" :total="pagination.total" /> | |
| 40 | + </el-col> | |
| 41 | + </el-row> | |
| 42 | + | |
| 43 | + <complaint-detail ref="complaintDetail" /> | |
| 44 | + <view-image ref="viewImage" /> | |
| 45 | + </div> | |
| 46 | +</template> | |
| 47 | + | |
| 48 | +<script> | |
| 49 | +import { listAdminComplaints } from '@/api/aCommunity/aRoomDetailComplaintApi' | |
| 50 | +import ComplaintDetail from '@/components/oa/complaintDetail' | |
| 51 | +import ViewImage from '@/components/system/viewImage' | |
| 52 | + | |
| 53 | +export default { | |
| 54 | + name: 'ARoomDetailComplaint', | |
| 55 | + components: { | |
| 56 | + ComplaintDetail, | |
| 57 | + ViewImage | |
| 58 | + }, | |
| 59 | + data() { | |
| 60 | + return { | |
| 61 | + aRoomDetailComplaintInfo: { | |
| 62 | + complaints: [], | |
| 63 | + ownerId: '', | |
| 64 | + name: '', | |
| 65 | + currentAppUserId: '' | |
| 66 | + }, | |
| 67 | + pagination: { | |
| 68 | + currentPage: 1, | |
| 69 | + pageSize: 10, | |
| 70 | + total: 0 | |
| 71 | + } | |
| 72 | + } | |
| 73 | + }, | |
| 74 | + methods: { | |
| 75 | + open(data) { | |
| 76 | + this.aRoomDetailComplaintInfo.ownerId = data.ownerId | |
| 77 | + this.loadComplaintData() | |
| 78 | + }, | |
| 79 | + loadComplaintData() { | |
| 80 | + const params = { | |
| 81 | + memberId: this.aRoomDetailComplaintInfo.ownerId, | |
| 82 | + page: this.pagination.currentPage, | |
| 83 | + row: this.pagination.pageSize | |
| 84 | + } | |
| 85 | + | |
| 86 | + listAdminComplaints(params).then(response => { | |
| 87 | + this.aRoomDetailComplaintInfo.complaints = response.data | |
| 88 | + this.pagination.total = response.records | |
| 89 | + }).catch(error => { | |
| 90 | + console.error('Failed to load complaints:', error) | |
| 91 | + }) | |
| 92 | + }, | |
| 93 | + handlePageChange(currentPage) { | |
| 94 | + this.pagination.currentPage = currentPage | |
| 95 | + this.loadComplaintData() | |
| 96 | + }, | |
| 97 | + handleOpenComplaintDetail(complaint) { | |
| 98 | + this.$refs.complaintDetail.open(complaint) | |
| 99 | + }, | |
| 100 | + handleOpenWorkflowImage(complaint) { | |
| 101 | + this.$refs.viewImage.open(complaint.workflowImageUrl) | |
| 102 | + } | |
| 103 | + } | |
| 104 | +} | |
| 105 | +</script> | |
| 106 | + | |
| 107 | +<style scoped> | |
| 108 | +.margin-top { | |
| 109 | + margin-top: 20px; | |
| 110 | +} | |
| 111 | + | |
| 112 | +.text-right { | |
| 113 | + text-align: right; | |
| 114 | +} | |
| 115 | +</style> | |
| 0 | 116 | \ No newline at end of file | ... | ... |
src/components/aCommunity/aRoomDetailComplaintDemo.vue
0 → 100644
| 1 | +<template> | |
| 2 | + <a-room-detail-complaint ref="complaintComponent" /> | |
| 3 | +</template> | |
| 4 | + | |
| 5 | +<script> | |
| 6 | +import ARoomDetailComplaint from './aRoomDetailComplaint' | |
| 7 | + | |
| 8 | +export default { | |
| 9 | + components: { | |
| 10 | + ARoomDetailComplaint | |
| 11 | + }, | |
| 12 | + methods: { | |
| 13 | + open(ownerId) { | |
| 14 | + this.$refs.complaintComponent.handleSwitch({ ownerId }) | |
| 15 | + } | |
| 16 | + } | |
| 17 | +} | |
| 18 | +</script> | |
| 0 | 19 | \ No newline at end of file | ... | ... |
src/components/aCommunity/aRoomDetailContract.vue
0 → 100644
| 1 | +<template> | |
| 2 | + <div class="margin-top"> | |
| 3 | + <div class="margin-top"> | |
| 4 | + <el-table :data="aRoomDetailContractInfo.contracts" style="width: 100%"> | |
| 5 | + <el-table-column prop="contractName" :label="$t('aRoomDetailContract.contractName')" align="center"></el-table-column> | |
| 6 | + <el-table-column prop="contractCode" :label="$t('aRoomDetailContract.contractCode')" align="center"></el-table-column> | |
| 7 | + <el-table-column prop="parentContractCode" :label="$t('aRoomDetailContract.parentContractCode')" align="center"> | |
| 8 | + <template slot-scope="scope"> | |
| 9 | + {{scope.row.parentContractCode || '-'}} | |
| 10 | + </template> | |
| 11 | + </el-table-column> | |
| 12 | + <el-table-column prop="contractTypeName" :label="$t('aRoomDetailContract.contractType')" align="center"></el-table-column> | |
| 13 | + <el-table-column prop="operator" :label="$t('aRoomDetailContract.operator')" align="center"></el-table-column> | |
| 14 | + <el-table-column prop="amount" :label="$t('aRoomDetailContract.amount')" align="center"></el-table-column> | |
| 15 | + <el-table-column prop="startTime" :label="$t('aRoomDetailContract.startTime')" align="center"></el-table-column> | |
| 16 | + <el-table-column prop="endTime" :label="$t('aRoomDetailContract.endTime')" align="center"></el-table-column> | |
| 17 | + <el-table-column prop="createTime" :label="$t('aRoomDetailContract.createTime')" align="center"></el-table-column> | |
| 18 | + <el-table-column prop="stateName" :label="$t('aRoomDetailContract.state')" align="center"></el-table-column> | |
| 19 | + </el-table> | |
| 20 | + <el-row> | |
| 21 | + <el-col :span="16" :offset="8"> | |
| 22 | + <el-pagination | |
| 23 | + @current-change="handleCurrentChange" | |
| 24 | + :current-page="currentPage" | |
| 25 | + :page-size="pageSize" | |
| 26 | + layout="total, prev, pager, next" | |
| 27 | + :total="total"> | |
| 28 | + </el-pagination> | |
| 29 | + </el-col> | |
| 30 | + </el-row> | |
| 31 | + </div> | |
| 32 | + </div> | |
| 33 | +</template> | |
| 34 | + | |
| 35 | +<script> | |
| 36 | +import { queryAdminOwnerContract } from '@/api/aCommunity/aRoomDetailContractApi' | |
| 37 | +import { getCommunityId } from '@/api/community/communityApi' | |
| 38 | + | |
| 39 | +export default { | |
| 40 | + name: 'ARoomDetailContract', | |
| 41 | + data() { | |
| 42 | + return { | |
| 43 | + aRoomDetailContractInfo: { | |
| 44 | + contracts: [], | |
| 45 | + ownerId: '' | |
| 46 | + }, | |
| 47 | + currentPage: 1, | |
| 48 | + pageSize: 10, | |
| 49 | + total: 0, | |
| 50 | + communityId: '' | |
| 51 | + } | |
| 52 | + }, | |
| 53 | + created() { | |
| 54 | + this.communityId = getCommunityId() | |
| 55 | + }, | |
| 56 | + methods: { | |
| 57 | + open(data) { | |
| 58 | + this.aRoomDetailContractInfo.ownerId = data.ownerId | |
| 59 | + this._loadARoomDetailContractData(this.currentPage, this.pageSize) | |
| 60 | + }, | |
| 61 | + handleCurrentChange(val) { | |
| 62 | + this.currentPage = val | |
| 63 | + this._loadARoomDetailContractData(val, this.pageSize) | |
| 64 | + }, | |
| 65 | + async _loadARoomDetailContractData(page, row) { | |
| 66 | + try { | |
| 67 | + const res = await queryAdminOwnerContract({ | |
| 68 | + communityId: this.communityId, | |
| 69 | + ownerId: this.aRoomDetailContractInfo.ownerId, | |
| 70 | + page, | |
| 71 | + row | |
| 72 | + }) | |
| 73 | + this.aRoomDetailContractInfo.contracts = res.data | |
| 74 | + this.total = res.records | |
| 75 | + } catch (error) { | |
| 76 | + console.error('请求失败:', error) | |
| 77 | + } | |
| 78 | + }, | |
| 79 | + _qureyARoomDetailContract() { | |
| 80 | + this.currentPage = 1 | |
| 81 | + this._loadARoomDetailContractData(1, this.pageSize) | |
| 82 | + } | |
| 83 | + } | |
| 84 | +} | |
| 85 | +</script> | |
| 86 | + | |
| 87 | +<style scoped> | |
| 88 | +/* Same styles as aRoomDetailMember */ | |
| 89 | +</style> | |
| 0 | 90 | \ No newline at end of file | ... | ... |
src/components/aCommunity/aRoomDetailContractDemo.vue
0 → 100644
| 1 | +<template> | |
| 2 | + <a-room-detail-contract ref="contractComponent" /> | |
| 3 | +</template> | |
| 4 | + | |
| 5 | +<script> | |
| 6 | +import ARoomDetailContract from './aRoomDetailContract' | |
| 7 | + | |
| 8 | +export default { | |
| 9 | + components: { | |
| 10 | + ARoomDetailContract | |
| 11 | + }, | |
| 12 | + methods: { | |
| 13 | + open(ownerId) { | |
| 14 | + this.$refs.contractComponent.handleSwitch({ ownerId }) | |
| 15 | + } | |
| 16 | + } | |
| 17 | +} | |
| 18 | +</script> | |
| 0 | 19 | \ No newline at end of file | ... | ... |
src/components/aCommunity/aRoomDetailHisOwner.vue
0 → 100644
| 1 | +<template> | |
| 2 | + <div> | |
| 3 | + <el-table | |
| 4 | + :data="aRoomDetailHisOwnerInfo.owners" | |
| 5 | + border | |
| 6 | + style="width: 100%; margin-top: 10px" | |
| 7 | + > | |
| 8 | + <el-table-column prop="name" :label="$t('aRoomDetailHisOwner.ownerName')" align="center" /> | |
| 9 | + <el-table-column prop="link" :label="$t('aRoomDetailHisOwner.ownerPhone')" align="center" /> | |
| 10 | + <el-table-column prop="startTime" :label="$t('aRoomDetailHisOwner.startTime')" align="center" /> | |
| 11 | + <el-table-column prop="endTime" :label="$t('aRoomDetailHisOwner.endTime')" align="center" /> | |
| 12 | + <el-table-column prop="createTime" :label="$t('aRoomDetailHisOwner.createTime')" align="center" /> | |
| 13 | + <el-table-column :label="$t('aRoomDetailHisOwner.status')" align="center"> | |
| 14 | + <template slot-scope="scope"> | |
| 15 | + {{scope.row.statusCd === '0' ? $t('aRoomDetailHisOwner.active') : $t('aRoomDetailHisOwner.inactive')}} | |
| 16 | + </template> | |
| 17 | + </el-table-column> | |
| 18 | + </el-table> | |
| 19 | + | |
| 20 | + <el-row class="margin-top"> | |
| 21 | + <el-col :span="24" class="text-right"> | |
| 22 | + <el-pagination | |
| 23 | + @current-change="handlePageChange" | |
| 24 | + :current-page="pagination.currentPage" | |
| 25 | + :page-size="pagination.pageSize" | |
| 26 | + layout="total, prev, pager, next" | |
| 27 | + :total="pagination.total" | |
| 28 | + /> | |
| 29 | + </el-col> | |
| 30 | + </el-row> | |
| 31 | + </div> | |
| 32 | +</template> | |
| 33 | + | |
| 34 | +<script> | |
| 35 | +import { queryAdminRoomHisOwner } from '@/api/aCommunity/aRoomDetailHisOwnerApi' | |
| 36 | + | |
| 37 | +export default { | |
| 38 | + name: 'ARoomDetailHisOwner', | |
| 39 | + data() { | |
| 40 | + return { | |
| 41 | + aRoomDetailHisOwnerInfo: { | |
| 42 | + owners: [], | |
| 43 | + ownerId: '', | |
| 44 | + roomId: '' | |
| 45 | + }, | |
| 46 | + pagination: { | |
| 47 | + currentPage: 1, | |
| 48 | + pageSize: 10, | |
| 49 | + total: 0 | |
| 50 | + } | |
| 51 | + } | |
| 52 | + }, | |
| 53 | + methods: { | |
| 54 | + open(data) { | |
| 55 | + if (!data.roomId) return | |
| 56 | + this.clearData() | |
| 57 | + this.aRoomDetailHisOwnerInfo.roomId = data.roomId | |
| 58 | + this.loadOwnerData() | |
| 59 | + }, | |
| 60 | + loadOwnerData() { | |
| 61 | + const params = { | |
| 62 | + page: this.pagination.currentPage, | |
| 63 | + row: this.pagination.pageSize, | |
| 64 | + roomId: this.aRoomDetailHisOwnerInfo.roomId | |
| 65 | + } | |
| 66 | + | |
| 67 | + queryAdminRoomHisOwner(params).then(response => { | |
| 68 | + this.aRoomDetailHisOwnerInfo.owners = response.data | |
| 69 | + this.pagination.total = response.records | |
| 70 | + }).catch(error => { | |
| 71 | + console.error('Failed to load owner history:', error) | |
| 72 | + }) | |
| 73 | + }, | |
| 74 | + handlePageChange(currentPage) { | |
| 75 | + this.pagination.currentPage = currentPage | |
| 76 | + this.loadOwnerData() | |
| 77 | + }, | |
| 78 | + clearData() { | |
| 79 | + this.aRoomDetailHisOwnerInfo = { | |
| 80 | + owners: [], | |
| 81 | + ownerId: '', | |
| 82 | + roomId: '' | |
| 83 | + } | |
| 84 | + } | |
| 85 | + } | |
| 86 | +} | |
| 87 | +</script> | |
| 88 | + | |
| 89 | +<style scoped> | |
| 90 | +.margin-top { | |
| 91 | + margin-top: 20px; | |
| 92 | +} | |
| 93 | +.text-right { | |
| 94 | + text-align: right; | |
| 95 | +} | |
| 96 | +</style> | |
| 0 | 97 | \ No newline at end of file | ... | ... |
src/components/aCommunity/aRoomDetailHisOwnerDemo.vue
0 → 100644
| 1 | +<template> | |
| 2 | + <a-room-detail-his-owner ref="hisOwnerComponent" /> | |
| 3 | +</template> | |
| 4 | + | |
| 5 | +<script> | |
| 6 | +import ARoomDetailHisOwner from './aRoomDetailHisOwner' | |
| 7 | + | |
| 8 | +export default { | |
| 9 | + components: { | |
| 10 | + ARoomDetailHisOwner | |
| 11 | + }, | |
| 12 | + methods: { | |
| 13 | + open(data) { | |
| 14 | + this.$refs.hisOwnerComponent.handleSwitch(data) | |
| 15 | + } | |
| 16 | + } | |
| 17 | +} | |
| 18 | +</script> | |
| 0 | 19 | \ No newline at end of file | ... | ... |
src/components/aCommunity/aRoomDetailMember.vue
0 → 100644
| 1 | +<template> | |
| 2 | + <div class="margin-top"> | |
| 3 | + <el-row class="margin-top-lg"> | |
| 4 | + <el-col :span="4" class="padding-right-xs padding-left-xl"> | |
| 5 | + <el-input v-model="aRoomDetailMemberInfo.name" type="text" | |
| 6 | + :placeholder="$t('aRoomDetailMember.placeholderName')"></el-input> | |
| 7 | + </el-col> | |
| 8 | + <el-col :span="4" class="padding-right-xs padding-right-xl"> | |
| 9 | + <el-button type="primary" size="small" style="margin-left:10px" @click="_qureyARoomDetailMember()"> | |
| 10 | + <i class="el-icon-search"></i>{{ $t('common.search') }} | |
| 11 | + </el-button> | |
| 12 | + </el-col> | |
| 13 | + <el-col :span="16" class="text-right"></el-col> | |
| 14 | + </el-row> | |
| 15 | + <div class="margin-top"> | |
| 16 | + <el-table :data="aRoomDetailMemberInfo.members" style="width: 100%"> | |
| 17 | + <el-table-column prop="faceUrl" :label="$t('aRoomDetailMember.face')" align="center"> | |
| 18 | + <template slot-scope="scope"> | |
| 19 | + <img style="width: 60px; height: 60px;" class="border-radius" v-if="scope.row.faceUrl" | |
| 20 | + :src="scope.row.faceUrl" @click="_viewOwnerFace(scope.row.faceUrl)" /> | |
| 21 | + <img style="width: 60px; height: 60px;" class="border-radius" v-else src="/img/noPhoto.jpg" /> | |
| 22 | + </template> | |
| 23 | + </el-table-column> | |
| 24 | + <el-table-column prop="name" :label="$t('aRoomDetailMember.name')" align="center"></el-table-column> | |
| 25 | + <el-table-column prop="sex" :label="$t('aRoomDetailMember.sex')" align="center"> | |
| 26 | + <template slot-scope="scope">{{ scope.row.sex == 0 ? $t('common.male') : $t('common.female') }}</template> | |
| 27 | + </el-table-column> | |
| 28 | + <el-table-column prop="personRoleName" :label="$t('aRoomDetailMember.personRole')" | |
| 29 | + align="center"></el-table-column> | |
| 30 | + <el-table-column prop="idCard" :label="$t('aRoomDetailMember.idCard')" align="center"></el-table-column> | |
| 31 | + <el-table-column prop="link" :label="$t('aRoomDetailMember.contact')" align="center"></el-table-column> | |
| 32 | + <el-table-column prop="address" :label="$t('aRoomDetailMember.address')" align="center"></el-table-column> | |
| 33 | + </el-table> | |
| 34 | + <el-row> | |
| 35 | + <el-col :span="16" :offset="8"> | |
| 36 | + <el-pagination @current-change="handleCurrentChange" :current-page="currentPage" :page-size="pageSize" | |
| 37 | + layout="total, prev, pager, next" :total="total"> | |
| 38 | + </el-pagination> | |
| 39 | + </el-col> | |
| 40 | + </el-row> | |
| 41 | + </div> | |
| 42 | + </div> | |
| 43 | +</template> | |
| 44 | + | |
| 45 | +<script> | |
| 46 | +import { queryAdminOwnerMembers } from '@/api/aCommunity/aRoomDetailMemberApi' | |
| 47 | + | |
| 48 | +export default { | |
| 49 | + name: 'ARoomDetailMember', | |
| 50 | + data() { | |
| 51 | + return { | |
| 52 | + aRoomDetailMemberInfo: { | |
| 53 | + members: [], | |
| 54 | + ownerId: '', | |
| 55 | + name: '', | |
| 56 | + }, | |
| 57 | + currentPage: 1, | |
| 58 | + pageSize: 10, | |
| 59 | + total: 0 | |
| 60 | + } | |
| 61 | + }, | |
| 62 | + created() { | |
| 63 | + }, | |
| 64 | + methods: { | |
| 65 | + open(data) { | |
| 66 | + this.aRoomDetailMemberInfo.ownerId = data.ownerId | |
| 67 | + this._loadARoomDetailMemberData(this.currentPage, this.pageSize) | |
| 68 | + }, | |
| 69 | + handleSwitch(data) { | |
| 70 | + this.aRoomDetailMemberInfo.ownerId = data.ownerId | |
| 71 | + this._loadARoomDetailMemberData(this.currentPage, this.pageSize) | |
| 72 | + }, | |
| 73 | + handleCurrentChange(val) { | |
| 74 | + this.currentPage = val | |
| 75 | + this._loadARoomDetailMemberData(val, this.pageSize) | |
| 76 | + }, | |
| 77 | + async _loadARoomDetailMemberData(page, row) { | |
| 78 | + if (!this.aRoomDetailMemberInfo.ownerId) return | |
| 79 | + | |
| 80 | + try { | |
| 81 | + const res = await queryAdminOwnerMembers({ | |
| 82 | + ownerId: this.aRoomDetailMemberInfo.ownerId, | |
| 83 | + name: this.aRoomDetailMemberInfo.name, | |
| 84 | + page, | |
| 85 | + row | |
| 86 | + }) | |
| 87 | + this.aRoomDetailMemberInfo.members = res.data | |
| 88 | + this.total = res.records | |
| 89 | + } catch (error) { | |
| 90 | + console.error('请求失败:', error) | |
| 91 | + } | |
| 92 | + }, | |
| 93 | + _qureyARoomDetailMember() { | |
| 94 | + this.currentPage = 1 | |
| 95 | + this._loadARoomDetailMemberData(1, this.pageSize) | |
| 96 | + }, | |
| 97 | + _viewOwnerFace(url) { | |
| 98 | + this.$emit('viewImage', url) | |
| 99 | + } | |
| 100 | + } | |
| 101 | +} | |
| 102 | +</script> | |
| 103 | + | |
| 104 | +<style scoped> | |
| 105 | +.margin-top { | |
| 106 | + margin-top: 20px; | |
| 107 | +} | |
| 108 | + | |
| 109 | +.margin-top-lg { | |
| 110 | + margin-top: 30px; | |
| 111 | +} | |
| 112 | + | |
| 113 | +.padding-right-xs { | |
| 114 | + padding-right: 10px; | |
| 115 | +} | |
| 116 | + | |
| 117 | +.padding-left-xl { | |
| 118 | + padding-left: 20px; | |
| 119 | +} | |
| 120 | + | |
| 121 | +.border-radius { | |
| 122 | + border-radius: 4px; | |
| 123 | +} | |
| 124 | +</style> | |
| 0 | 125 | \ No newline at end of file | ... | ... |
src/components/aCommunity/aRoomDetailMemberDemo.vue
0 → 100644
| 1 | +<template> | |
| 2 | + <a-room-detail-member ref="memberComponent" @viewImage="handleViewImage" /> | |
| 3 | +</template> | |
| 4 | + | |
| 5 | +<script> | |
| 6 | +import ARoomDetailMember from './aRoomDetailMember' | |
| 7 | + | |
| 8 | +export default { | |
| 9 | + components: { | |
| 10 | + ARoomDetailMember | |
| 11 | + }, | |
| 12 | + methods: { | |
| 13 | + open(ownerId) { | |
| 14 | + this.$refs.memberComponent.handleSwitch({ ownerId }) | |
| 15 | + }, | |
| 16 | + handleViewImage(url) { | |
| 17 | + // Handle image view | |
| 18 | + } | |
| 19 | + } | |
| 20 | +} | |
| 21 | +</script> | |
| 0 | 22 | \ No newline at end of file | ... | ... |
src/components/aCommunity/aRoomDetailRepair.vue
0 → 100644
| 1 | +<template> | |
| 2 | + <div class="margin-top"> | |
| 3 | + <div class="margin-top"> | |
| 4 | + <el-table :data="aRoomDetailRepairInfo.repairs" style="width: 100%"> | |
| 5 | + <el-table-column prop="repairId" :label="$t('aRoomDetailRepair.repairId')" align="center"></el-table-column> | |
| 6 | + <el-table-column prop="repairObjName" :label="$t('aRoomDetailRepair.location')" align="center"></el-table-column> | |
| 7 | + <el-table-column prop="repairTypeName" :label="$t('aRoomDetailRepair.repairType')" align="center"></el-table-column> | |
| 8 | + <el-table-column prop="repairName" :label="$t('aRoomDetailRepair.repairPerson')" align="center"></el-table-column> | |
| 9 | + <el-table-column prop="tel" :label="$t('aRoomDetailRepair.contact')" align="center"></el-table-column> | |
| 10 | + <el-table-column prop="appointmentTime" :label="$t('aRoomDetailRepair.appointmentTime')" align="center"></el-table-column> | |
| 11 | + <el-table-column prop="stateName" :label="$t('aRoomDetailRepair.state')" align="center"> | |
| 12 | + <template slot-scope="scope"> | |
| 13 | + {{scope.row.state == '1800' && (scope.row.returnVisitFlag == '001' || scope.row.returnVisitFlag == '002') ? | |
| 14 | + `${scope.row.stateName}(${$t('aRoomDetailRepair.taskProcessing')})` : scope.row.stateName}} | |
| 15 | + </template> | |
| 16 | + </el-table-column> | |
| 17 | + <el-table-column :label="$t('common.operation')" align="center"> | |
| 18 | + <template slot-scope="scope"> | |
| 19 | + <el-button size="mini" @click="_openRepairDetail(scope.row)"> | |
| 20 | + {{$t('common.detail')}} | |
| 21 | + </el-button> | |
| 22 | + </template> | |
| 23 | + </el-table-column> | |
| 24 | + </el-table> | |
| 25 | + <el-row> | |
| 26 | + <el-col :span="16" :offset="8"> | |
| 27 | + <el-pagination | |
| 28 | + @current-change="handleCurrentChange" | |
| 29 | + :current-page="currentPage" | |
| 30 | + :page-size="pageSize" | |
| 31 | + layout="total, prev, pager, next" | |
| 32 | + :total="total"> | |
| 33 | + </el-pagination> | |
| 34 | + </el-col> | |
| 35 | + </el-row> | |
| 36 | + </div> | |
| 37 | + </div> | |
| 38 | +</template> | |
| 39 | + | |
| 40 | +<script> | |
| 41 | +import { listAdminOwnerRepairs } from '@/api/aCommunity/aRoomDetailRepairApi' | |
| 42 | + | |
| 43 | +export default { | |
| 44 | + name: 'ARoomDetailRepair', | |
| 45 | + data() { | |
| 46 | + return { | |
| 47 | + aRoomDetailRepairInfo: { | |
| 48 | + repairs: [], | |
| 49 | + ownerId: '', | |
| 50 | + link: '' | |
| 51 | + }, | |
| 52 | + currentPage: 1, | |
| 53 | + pageSize: 10, | |
| 54 | + total: 0 | |
| 55 | + } | |
| 56 | + }, | |
| 57 | + created() { | |
| 58 | + }, | |
| 59 | + methods: { | |
| 60 | + open(data) { | |
| 61 | + this.aRoomDetailRepairInfo.ownerId = data.ownerId | |
| 62 | + this.aRoomDetailRepairInfo.link = data.link | |
| 63 | + this._loadARoomDetailRepairData(this.currentPage, this.pageSize) | |
| 64 | + }, | |
| 65 | + handleCurrentChange(val) { | |
| 66 | + this.currentPage = val | |
| 67 | + this._loadARoomDetailRepairData(val, this.pageSize) | |
| 68 | + }, | |
| 69 | + async _loadARoomDetailRepairData(page, row) { | |
| 70 | + try { | |
| 71 | + const res = await listAdminOwnerRepairs({ | |
| 72 | + tel: this.aRoomDetailRepairInfo.link, | |
| 73 | + page, | |
| 74 | + row | |
| 75 | + }) | |
| 76 | + this.aRoomDetailRepairInfo.repairs = res.data | |
| 77 | + this.total = res.records | |
| 78 | + } catch (error) { | |
| 79 | + console.error('请求失败:', error) | |
| 80 | + } | |
| 81 | + }, | |
| 82 | + _qureyARoomDetailRepair() { | |
| 83 | + this.currentPage = 1 | |
| 84 | + this._loadARoomDetailRepairData(1, this.pageSize) | |
| 85 | + }, | |
| 86 | + _openRepairDetail(repairPool) { | |
| 87 | + this.$router.push(`/pages/property/ownerRepairDetail?repairId=${repairPool.repairId}`) | |
| 88 | + } | |
| 89 | + } | |
| 90 | +} | |
| 91 | +</script> | |
| 92 | + | |
| 93 | +<style scoped> | |
| 94 | +/* Same styles as previous components */ | |
| 95 | +</style> | |
| 0 | 96 | \ No newline at end of file | ... | ... |
src/components/aCommunity/aRoomDetailRepairDemo.vue
0 → 100644
| 1 | +<template> | |
| 2 | + <a-room-detail-repair ref="repairComponent" /> | |
| 3 | +</template> | |
| 4 | + | |
| 5 | +<script> | |
| 6 | +import ARoomDetailRepair from './aRoomDetailRepair' | |
| 7 | + | |
| 8 | +export default { | |
| 9 | + components: { | |
| 10 | + ARoomDetailRepair | |
| 11 | + }, | |
| 12 | + methods: { | |
| 13 | + open(data) { | |
| 14 | + this.$refs.repairComponent.handleSwitch(data) | |
| 15 | + } | |
| 16 | + } | |
| 17 | +} | |
| 18 | +</script> | |
| 0 | 19 | \ No newline at end of file | ... | ... |
src/i18n/communityI18n.js
| ... | ... | @@ -7,6 +7,7 @@ import { messages as addCommunityPublicityMessages } from '../views/community/ad |
| 7 | 7 | import { messages as editCommunityPublicityMessages } from '../views/community/editCommunityPublicityLang' |
| 8 | 8 | import { messages as handoverMessages } from '../views/room/handoverLang' |
| 9 | 9 | import { messages as ownerExitRoomMessages } from '../views/room/ownerExitRoomLang' |
| 10 | +import { messages as adminRoomDetailMessages } from '../views/aCommunity/adminRoomDetailLang.js' | |
| 10 | 11 | export const messages = { |
| 11 | 12 | en: { |
| 12 | 13 | ...roomStructureMessages.en, |
| ... | ... | @@ -18,6 +19,7 @@ export const messages = { |
| 18 | 19 | ...editCommunityPublicityMessages.en, |
| 19 | 20 | ...handoverMessages.en, |
| 20 | 21 | ...ownerExitRoomMessages.en, |
| 22 | + ...adminRoomDetailMessages.en, | |
| 21 | 23 | }, |
| 22 | 24 | zh: { |
| 23 | 25 | ...roomStructureMessages.zh, |
| ... | ... | @@ -29,5 +31,6 @@ export const messages = { |
| 29 | 31 | ...editCommunityPublicityMessages.zh, |
| 30 | 32 | ...handoverMessages.zh, |
| 31 | 33 | ...ownerExitRoomMessages.zh, |
| 34 | + ...adminRoomDetailMessages.zh, | |
| 32 | 35 | } |
| 33 | 36 | } |
| 34 | 37 | \ No newline at end of file | ... | ... |
src/router/communityRouter.js
| ... | ... | @@ -44,4 +44,9 @@ export default [ |
| 44 | 44 | name: '/views/room/ownerExitRoom', |
| 45 | 45 | component: () => import('@/views/room/ownerExitRoomList.vue') |
| 46 | 46 | }, |
| 47 | + { | |
| 48 | + path: '/pages/community/adminRoomDetail', | |
| 49 | + name: '/pages/community/adminRoomDetail', | |
| 50 | + component: () => import('@/views/aCommunity/adminRoomDetail.vue') | |
| 51 | + }, | |
| 47 | 52 | ] |
| 48 | 53 | \ No newline at end of file | ... | ... |
src/views/aCommunity/aRoomDetailCarFeeLang.js
0 → 100644
| 1 | +export const messages = { | |
| 2 | + en: { | |
| 3 | + aRoomDetailCarFee: { | |
| 4 | + selectCar: 'Select Car', | |
| 5 | + feeItem: 'Fee Item', | |
| 6 | + feeFlag: 'Fee Flag', | |
| 7 | + feeType: 'Fee Type', | |
| 8 | + amount: 'Amount', | |
| 9 | + createTime: 'Create Time', | |
| 10 | + timeRange: 'Time Range', | |
| 11 | + description: 'Description', | |
| 12 | + state: 'Status', | |
| 13 | + operation: 'Operation', | |
| 14 | + preDegrees: 'Previous Degrees', | |
| 15 | + curDegrees: 'Current Degrees', | |
| 16 | + unitPrice: 'Unit Price', | |
| 17 | + additionalFee: 'Additional Fee', | |
| 18 | + algorithm: 'Algorithm', | |
| 19 | + usage: 'Usage', | |
| 20 | + fixedFee: 'Fixed Fee', | |
| 21 | + note1: 'Note: The end time "-" means the charging time has not arrived or the charging has ended', | |
| 22 | + note2: 'Note: The amount -1 generally means an error in the fee formula setting, please check', | |
| 23 | + totalArrears: 'Total Arrears', | |
| 24 | + parkingLot: ' Parking Lot ', | |
| 25 | + parkingSpace: ' Parking Space', | |
| 26 | + owner: 'Owner', | |
| 27 | + phone: 'Phone', | |
| 28 | + noParkingSpace: 'No parking space' | |
| 29 | + } | |
| 30 | + }, | |
| 31 | + zh: { | |
| 32 | + aRoomDetailCarFee: { | |
| 33 | + selectCar: '选择车辆', | |
| 34 | + feeItem: '费用项目', | |
| 35 | + feeFlag: '费用标识', | |
| 36 | + feeType: '费用类型', | |
| 37 | + amount: '应收金额', | |
| 38 | + createTime: '建账时间', | |
| 39 | + timeRange: '应收时间段', | |
| 40 | + description: '说明', | |
| 41 | + state: '状态', | |
| 42 | + operation: '操作', | |
| 43 | + preDegrees: '上期度数', | |
| 44 | + curDegrees: '本期度数', | |
| 45 | + unitPrice: '单价', | |
| 46 | + additionalFee: '附加费', | |
| 47 | + algorithm: '算法', | |
| 48 | + usage: '用量', | |
| 49 | + fixedFee: '固定费', | |
| 50 | + note1: '注意: 应收结束时间 "-" 表示未到应收时间 或 收费已结束', | |
| 51 | + note2: '注意: 应收金额 为-1 一般为费用项公式设置出错请检查', | |
| 52 | + totalArrears: '欠费小计', | |
| 53 | + parkingLot: '停车场', | |
| 54 | + parkingSpace: '停车位', | |
| 55 | + owner: '业主', | |
| 56 | + phone: '电话', | |
| 57 | + noParkingSpace: '没有车位' | |
| 58 | + } | |
| 59 | + } | |
| 60 | +} | |
| 0 | 61 | \ No newline at end of file | ... | ... |
src/views/aCommunity/aRoomDetailCarLang.js
0 → 100644
| 1 | +export const messages = { | |
| 2 | + en: { | |
| 3 | + aRoomDetailCar: { | |
| 4 | + placeholderCarNum: 'Please enter license plate number', | |
| 5 | + carNum: 'License Plate', | |
| 6 | + leaseType: 'Plate Type', | |
| 7 | + tempCar: 'Temporary Car', | |
| 8 | + carType: 'Vehicle Type', | |
| 9 | + color: 'Color', | |
| 10 | + owner: 'Owner', | |
| 11 | + parkingSpace: 'Parking Space', | |
| 12 | + released: 'Released', | |
| 13 | + validity: 'Validity' | |
| 14 | + } | |
| 15 | + }, | |
| 16 | + zh: { | |
| 17 | + aRoomDetailCar: { | |
| 18 | + placeholderCarNum: '请填写车牌号', | |
| 19 | + carNum: '车牌号', | |
| 20 | + leaseType: '车牌类型', | |
| 21 | + tempCar: '临时车', | |
| 22 | + carType: '车辆类型', | |
| 23 | + color: '颜色', | |
| 24 | + owner: '业主', | |
| 25 | + parkingSpace: '车位', | |
| 26 | + released: '车位已释放', | |
| 27 | + validity: '有效期' | |
| 28 | + } | |
| 29 | + } | |
| 30 | +} | |
| 0 | 31 | \ No newline at end of file | ... | ... |
src/views/aCommunity/aRoomDetailComplaintLang.js
0 → 100644
| 1 | +export const messages = { | |
| 2 | + en: { | |
| 3 | + aRoomDetailComplaint: { | |
| 4 | + type: 'Type', | |
| 5 | + room: 'Room', | |
| 6 | + contact: 'Contact', | |
| 7 | + phone: 'Phone', | |
| 8 | + status: 'Status', | |
| 9 | + handler: 'Handler', | |
| 10 | + handlerPhone: 'Handler Phone', | |
| 11 | + createTime: 'Create Time', | |
| 12 | + actions: 'Actions', | |
| 13 | + detail: 'Detail', | |
| 14 | + flowChart: 'Flow Chart', | |
| 15 | + none: 'None' | |
| 16 | + } | |
| 17 | + }, | |
| 18 | + zh: { | |
| 19 | + aRoomDetailComplaint: { | |
| 20 | + type: '类型', | |
| 21 | + room: '房屋', | |
| 22 | + contact: '联系人', | |
| 23 | + phone: '联系电话', | |
| 24 | + status: '状态', | |
| 25 | + handler: '处理人', | |
| 26 | + handlerPhone: '处理人电话', | |
| 27 | + createTime: '创建时间', | |
| 28 | + actions: '操作', | |
| 29 | + detail: '详情', | |
| 30 | + flowChart: '流程图', | |
| 31 | + none: '无' | |
| 32 | + } | |
| 33 | + } | |
| 34 | +} | |
| 0 | 35 | \ No newline at end of file | ... | ... |
src/views/aCommunity/aRoomDetailContractLang.js
0 → 100644
| 1 | +export const messages = { | |
| 2 | + en: { | |
| 3 | + aRoomDetailContract: { | |
| 4 | + contractName: 'Contract Name', | |
| 5 | + contractCode: 'Contract Code', | |
| 6 | + parentContractCode: 'Parent Contract Code', | |
| 7 | + contractType: 'Contract Type', | |
| 8 | + operator: 'Operator', | |
| 9 | + amount: 'Amount', | |
| 10 | + startTime: 'Start Time', | |
| 11 | + endTime: 'End Time', | |
| 12 | + createTime: 'Create Time', | |
| 13 | + state: 'Status' | |
| 14 | + } | |
| 15 | + }, | |
| 16 | + zh: { | |
| 17 | + aRoomDetailContract: { | |
| 18 | + contractName: '合同名称', | |
| 19 | + contractCode: '合同编号', | |
| 20 | + parentContractCode: '父合同编号', | |
| 21 | + contractType: '合同类型', | |
| 22 | + operator: '经办人', | |
| 23 | + amount: '合同金额', | |
| 24 | + startTime: '开始时间', | |
| 25 | + endTime: '结束时间', | |
| 26 | + createTime: '起草时间', | |
| 27 | + state: '状态' | |
| 28 | + } | |
| 29 | + } | |
| 30 | +} | |
| 0 | 31 | \ No newline at end of file | ... | ... |
src/views/aCommunity/aRoomDetailHisOwnerLang.js
0 → 100644
| 1 | +export const messages = { | |
| 2 | + en: { | |
| 3 | + aRoomDetailHisOwner: { | |
| 4 | + ownerName: 'Owner Name', | |
| 5 | + ownerPhone: 'Owner Phone', | |
| 6 | + startTime: 'Start Time', | |
| 7 | + endTime: 'End Time', | |
| 8 | + createTime: 'Create Time', | |
| 9 | + status: 'Status', | |
| 10 | + active: 'Active', | |
| 11 | + inactive: 'Inactive' | |
| 12 | + } | |
| 13 | + }, | |
| 14 | + zh: { | |
| 15 | + aRoomDetailHisOwner: { | |
| 16 | + ownerName: '业主名称', | |
| 17 | + ownerPhone: '业主电话', | |
| 18 | + startTime: '开始时间', | |
| 19 | + endTime: '结束时间', | |
| 20 | + createTime: '创建时间', | |
| 21 | + status: '状态', | |
| 22 | + active: '在用', | |
| 23 | + inactive: '失效' | |
| 24 | + } | |
| 25 | + } | |
| 26 | +} | |
| 0 | 27 | \ No newline at end of file | ... | ... |
src/views/aCommunity/aRoomDetailMemberLang.js
0 → 100644
| 1 | +export const messages = { | |
| 2 | + en: { | |
| 3 | + aRoomDetailMember: { | |
| 4 | + placeholderName: 'Please enter member name', | |
| 5 | + face: 'Face', | |
| 6 | + name: 'Name', | |
| 7 | + sex: 'Gender', | |
| 8 | + personRole: 'Person Role', | |
| 9 | + idCard: 'ID Card', | |
| 10 | + contact: 'Contact', | |
| 11 | + address: 'Address' | |
| 12 | + } | |
| 13 | + }, | |
| 14 | + zh: { | |
| 15 | + aRoomDetailMember: { | |
| 16 | + placeholderName: '请填写成员名称', | |
| 17 | + face: '人脸', | |
| 18 | + name: '名称', | |
| 19 | + sex: '性别', | |
| 20 | + personRole: '人员角色', | |
| 21 | + idCard: '身份证', | |
| 22 | + contact: '联系方式', | |
| 23 | + address: '地址' | |
| 24 | + } | |
| 25 | + } | |
| 26 | +} | |
| 0 | 27 | \ No newline at end of file | ... | ... |
src/views/aCommunity/aRoomDetailRepairLang.js
0 → 100644
| 1 | +export const messages = { | |
| 2 | + en: { | |
| 3 | + aRoomDetailRepair: { | |
| 4 | + repairId: 'Work Order Code', | |
| 5 | + location: 'Location', | |
| 6 | + repairType: 'Repair Type', | |
| 7 | + repairPerson: 'Repair Person', | |
| 8 | + contact: 'Contact', | |
| 9 | + appointmentTime: 'Appointment Time', | |
| 10 | + state: 'Status', | |
| 11 | + taskProcessing: 'Task Processing', | |
| 12 | + detail: 'Detail' | |
| 13 | + } | |
| 14 | + }, | |
| 15 | + zh: { | |
| 16 | + aRoomDetailRepair: { | |
| 17 | + repairId: '工单编码', | |
| 18 | + location: '位置', | |
| 19 | + repairType: '报修类型', | |
| 20 | + repairPerson: '报修人', | |
| 21 | + contact: '联系方式', | |
| 22 | + appointmentTime: '预约时间', | |
| 23 | + state: '状态', | |
| 24 | + taskProcessing: '定时任务处理', | |
| 25 | + detail: '详情' | |
| 26 | + } | |
| 27 | + } | |
| 28 | +} | |
| 0 | 29 | \ No newline at end of file | ... | ... |
src/views/aCommunity/adminRoomDetail.vue
0 → 100644
| 1 | +<template> | |
| 2 | + <div class="white-bg padding-lg padding-top border-radius"> | |
| 3 | + <div class="flex justify-between"> | |
| 4 | + <div class="text-title">{{ $t('adminRoomDetail.title') }}</div> | |
| 5 | + <div> | |
| 6 | + <el-button type="primary" size="small" style="margin-left:10px" @click="goBack"> | |
| 7 | + <i class="el-icon-close"></i>{{ $t('adminRoomDetail.back') }} | |
| 8 | + </el-button> | |
| 9 | + </div> | |
| 10 | + </div> | |
| 11 | + | |
| 12 | + <!-- 房屋信息 --> | |
| 13 | + <div class="margin-top"> | |
| 14 | + <el-row style="min-height: 160px;"> | |
| 15 | + <el-col :span="24"> | |
| 16 | + <el-form class="text-left"> | |
| 17 | + <el-row> | |
| 18 | + <el-col :span="6"> | |
| 19 | + <el-form-item :label="$t('adminRoomDetailInfo.roomCode')"> | |
| 20 | + <label>{{ adminRoomDetailInfo.floorNum }}-{{ adminRoomDetailInfo.unitNum }}-{{ | |
| 21 | + adminRoomDetailInfo.roomNum }}</label> | |
| 22 | + </el-form-item> | |
| 23 | + </el-col> | |
| 24 | + <el-col :span="6"> | |
| 25 | + <el-form-item :label="$t('adminRoomDetailInfo.floor')"> | |
| 26 | + <label>{{ adminRoomDetailInfo.layer }}</label> | |
| 27 | + </el-form-item> | |
| 28 | + </el-col> | |
| 29 | + <el-col :span="6"> | |
| 30 | + <el-form-item :label="$t('adminRoomDetailInfo.roomArea')"> | |
| 31 | + <label>{{ adminRoomDetailInfo.builtUpArea }}</label> | |
| 32 | + </el-form-item> | |
| 33 | + </el-col> | |
| 34 | + <el-col :span="6"> | |
| 35 | + <el-form-item :label="$t('adminRoomDetailInfo.roomType')"> | |
| 36 | + <label>{{ adminRoomDetailInfo.roomSubTypeName }}</label> | |
| 37 | + </el-form-item> | |
| 38 | + </el-col> | |
| 39 | + <el-col :span="6"> | |
| 40 | + <el-form-item :label="$t('adminRoomDetailInfo.roomStatus')"> | |
| 41 | + <label>{{ adminRoomDetailInfo.stateName }}</label> | |
| 42 | + </el-form-item> | |
| 43 | + </el-col> | |
| 44 | + <el-col :span="6"> | |
| 45 | + <el-form-item :label="$t('adminRoomDetailInfo.indoorArea')"> | |
| 46 | + <label>{{ adminRoomDetailInfo.roomArea }}</label> | |
| 47 | + </el-form-item> | |
| 48 | + </el-col> | |
| 49 | + <el-col :span="6"> | |
| 50 | + <el-form-item :label="$t('adminRoomDetailInfo.rent')"> | |
| 51 | + <label>{{ adminRoomDetailInfo.roomRent }}</label> | |
| 52 | + </el-form-item> | |
| 53 | + </el-col> | |
| 54 | + <el-col :span="6"> | |
| 55 | + <el-form-item :label="$t('adminRoomDetailInfo.validity')"> | |
| 56 | + <label>{{ adminRoomDetailInfo.startTime }}~{{ adminRoomDetailInfo.endTime }}</label> | |
| 57 | + </el-form-item> | |
| 58 | + </el-col> | |
| 59 | + <el-col :span="6"> | |
| 60 | + <el-form-item :label="$t('adminRoomDetailInfo.ownerName')"> | |
| 61 | + <label>{{ adminRoomDetailInfo.ownerName }}</label> | |
| 62 | + </el-form-item> | |
| 63 | + </el-col> | |
| 64 | + <el-col :span="6"> | |
| 65 | + <el-form-item :label="$t('adminRoomDetailInfo.contact')"> | |
| 66 | + <label>{{ adminRoomDetailInfo.link }}</label> | |
| 67 | + </el-form-item> | |
| 68 | + </el-col> | |
| 69 | + <el-col :span="12"> | |
| 70 | + <el-form-item :label="$t('adminRoomDetailInfo.remark')"> | |
| 71 | + <label>{{ adminRoomDetailInfo.remark }}</label> | |
| 72 | + </el-form-item> | |
| 73 | + </el-col> | |
| 74 | + <el-col :span="6"> | |
| 75 | + <el-form-item :label="$t('adminRoomDetailInfo.communityName')"> | |
| 76 | + <label>{{ adminRoomDetailInfo.communityName }}</label> | |
| 77 | + </el-form-item> | |
| 78 | + </el-col> | |
| 79 | + </el-row> | |
| 80 | + </el-form> | |
| 81 | + </el-col> | |
| 82 | + </el-row> | |
| 83 | + </div> | |
| 84 | + | |
| 85 | + <divider></divider> | |
| 86 | + | |
| 87 | + <div class="margin-top-sm"> | |
| 88 | + <el-tabs v-model="adminRoomDetailInfo._currentTab" @tab-click="handleTabClick(adminRoomDetailInfo._currentTab)"> | |
| 89 | + <el-tab-pane :label="$t('adminRoomDetail.owner')" name="aRoomDetailOwner"></el-tab-pane> | |
| 90 | + <el-tab-pane v-if="adminRoomDetailInfo.ownerId" :label="$t('adminRoomDetail.member')" name="aRoomDetailMember"> | |
| 91 | + </el-tab-pane> | |
| 92 | + <el-tab-pane v-if="adminRoomDetailInfo.ownerId" :label="$t('adminRoomDetail.ownerRoom')" name="aRoomDetailRoom"> | |
| 93 | + </el-tab-pane> | |
| 94 | + <el-tab-pane v-if="adminRoomDetailInfo.ownerId" :label="$t('adminRoomDetail.ownerCar')" name="aRoomDetailCar"> | |
| 95 | + </el-tab-pane> | |
| 96 | + <el-tab-pane v-if="adminRoomDetailInfo.ownerId" :label="$t('adminRoomDetail.contract')" | |
| 97 | + name="aRoomDetailContract"> | |
| 98 | + </el-tab-pane> | |
| 99 | + <el-tab-pane :label="$t('adminRoomDetail.roomFee')" name="aRoomDetailRoomFee"> | |
| 100 | + </el-tab-pane> | |
| 101 | + <el-tab-pane v-if="adminRoomDetailInfo.ownerId" :label="$t('adminRoomDetail.carFee')" name="aRoomDetailCarFee"> | |
| 102 | + </el-tab-pane> | |
| 103 | + <el-tab-pane v-if="adminRoomDetailInfo.ownerId" :label="$t('adminRoomDetail.paymentHistory')" | |
| 104 | + name="aRoomDetailHisFee"> | |
| 105 | + </el-tab-pane> | |
| 106 | + <el-tab-pane v-if="adminRoomDetailInfo.ownerId" :label="$t('adminRoomDetail.receipt')" | |
| 107 | + name="aRoomDetailReceipt"> | |
| 108 | + </el-tab-pane> | |
| 109 | + <el-tab-pane v-if="adminRoomDetailInfo.ownerId" :label="$t('adminRoomDetail.repair')" name="aRoomDetailRepair"> | |
| 110 | + </el-tab-pane> | |
| 111 | + <el-tab-pane v-if="adminRoomDetailInfo.ownerId" :label="$t('adminRoomDetail.complaint')" | |
| 112 | + name="aRoomDetailComplaint"> | |
| 113 | + </el-tab-pane> | |
| 114 | + <el-tab-pane :label="$t('adminRoomDetail.meterReading')" name="aRoomDetailMeterWaterLog"> | |
| 115 | + </el-tab-pane> | |
| 116 | + <el-tab-pane :label="$t('adminRoomDetail.historyOwner')" name="aRoomDetailHisOwner"> | |
| 117 | + </el-tab-pane> | |
| 118 | + </el-tabs> | |
| 119 | + </div> | |
| 120 | + | |
| 121 | + <component :is="adminRoomDetailInfo._currentTab" :ref="adminRoomDetailInfo._currentTab" | |
| 122 | + :roomId="adminRoomDetailInfo.roomId" :ownerId="adminRoomDetailInfo.ownerId" | |
| 123 | + :ownerName="adminRoomDetailInfo.ownerName" :link="adminRoomDetailInfo.link"></component> | |
| 124 | + </div> | |
| 125 | +</template> | |
| 126 | + | |
| 127 | +<script> | |
| 128 | +import { getCommunityId } from '@/api/community/communityApi' | |
| 129 | +import { getRoomDetail } from '@/api/aCommunity/adminRoomDetailApi' | |
| 130 | +import ARoomDetailOwner from '@/components/fee/aRoomDetailOwner' | |
| 131 | +import ARoomDetailMember from '@/components/aCommunity/aRoomDetailMember' | |
| 132 | +import ARoomDetailRoom from '@/components/fee/aRoomDetailRoom' | |
| 133 | +import ARoomDetailCar from '@/components/aCommunity/aRoomDetailCar' | |
| 134 | +import ARoomDetailContract from '@/components/aCommunity/aRoomDetailContract' | |
| 135 | +import ARoomDetailRoomFee from '@/components/fee/aRoomDetailRoomFee' | |
| 136 | +import ARoomDetailCarFee from '@/components/aCommunity/aRoomDetailCarFee' | |
| 137 | +import ARoomDetailHisFee from '@/components/fee/aRoomDetailHisFee' | |
| 138 | +import ARoomDetailReceipt from '@/components/fee/aRoomDetailReceipt' | |
| 139 | +import ARoomDetailRepair from '@/components/aCommunity/aRoomDetailRepair' | |
| 140 | +import ARoomDetailComplaint from '@/components/aCommunity/aRoomDetailComplaint' | |
| 141 | +import ARoomDetailMeterWaterLog from '@/components/fee/aRoomDetailMeterWaterLog' | |
| 142 | +import ARoomDetailHisOwner from '@/components/aCommunity/aRoomDetailHisOwner' | |
| 143 | +import Divider from '@/components/system/divider' | |
| 144 | + | |
| 145 | +export default { | |
| 146 | + components: { | |
| 147 | + ARoomDetailOwner, | |
| 148 | + ARoomDetailMember, | |
| 149 | + ARoomDetailRoom, | |
| 150 | + ARoomDetailCar, | |
| 151 | + ARoomDetailContract, | |
| 152 | + ARoomDetailRoomFee, | |
| 153 | + ARoomDetailCarFee, | |
| 154 | + ARoomDetailHisFee, | |
| 155 | + ARoomDetailReceipt, | |
| 156 | + ARoomDetailRepair, | |
| 157 | + ARoomDetailComplaint, | |
| 158 | + ARoomDetailMeterWaterLog, | |
| 159 | + ARoomDetailHisOwner, | |
| 160 | + Divider | |
| 161 | + }, | |
| 162 | + data() { | |
| 163 | + return { | |
| 164 | + adminRoomDetailInfo: { | |
| 165 | + viewOwnerFlag: '', | |
| 166 | + roomId: "", | |
| 167 | + floorNum: '', | |
| 168 | + unitNum: '', | |
| 169 | + roomNum: '', | |
| 170 | + layer: "", | |
| 171 | + builtUpArea: "", | |
| 172 | + roomSubTypeName: "", | |
| 173 | + stateName: "", | |
| 174 | + roomArea: "", | |
| 175 | + roomRent: "", | |
| 176 | + startTime: "", | |
| 177 | + endTime: "", | |
| 178 | + _currentTab: 'aRoomDetailOwner', | |
| 179 | + remark: '', | |
| 180 | + ownerId: '', | |
| 181 | + ownerName: '', | |
| 182 | + link: '', | |
| 183 | + communityId: '', | |
| 184 | + communityName: '' | |
| 185 | + } | |
| 186 | + } | |
| 187 | + }, | |
| 188 | + created() { | |
| 189 | + this.adminRoomDetailInfo.roomId = this.$route.query.roomId | |
| 190 | + if (!this.adminRoomDetailInfo.roomId) { | |
| 191 | + return | |
| 192 | + } | |
| 193 | + const currentTab = this.$route.query.currentTab | |
| 194 | + if (currentTab) { | |
| 195 | + this.adminRoomDetailInfo._currentTab = currentTab | |
| 196 | + } | |
| 197 | + this.loadAdminRoomInfo() | |
| 198 | + this.communityId = getCommunityId() | |
| 199 | + }, | |
| 200 | + methods: { | |
| 201 | + loadAdminRoomInfo() { | |
| 202 | + getRoomDetail({ | |
| 203 | + roomId: this.adminRoomDetailInfo.roomId, | |
| 204 | + page: 1, | |
| 205 | + row: 1 | |
| 206 | + }).then(res => { | |
| 207 | + Object.assign(this.adminRoomDetailInfo, res.data[0]) | |
| 208 | + | |
| 209 | + this.handleTabClick(this.adminRoomDetailInfo._currentTab) | |
| 210 | + }).catch(err => { | |
| 211 | + console.error('请求失败:', err) | |
| 212 | + }) | |
| 213 | + }, | |
| 214 | + handleTabClick(tab) { | |
| 215 | + this.adminRoomDetailInfo._currentTab = tab | |
| 216 | + setTimeout(() => { | |
| 217 | + if (this.$refs[tab] && this.$refs[tab].open) { | |
| 218 | + this.$refs[tab].open({ | |
| 219 | + roomId: this.adminRoomDetailInfo.roomId, | |
| 220 | + ownerId: this.adminRoomDetailInfo.ownerId, | |
| 221 | + ownerName: this.adminRoomDetailInfo.ownerName, | |
| 222 | + link: this.adminRoomDetailInfo.link | |
| 223 | + }) | |
| 224 | + } | |
| 225 | + }, 500) | |
| 226 | + }, | |
| 227 | + goBack() { | |
| 228 | + this.$router.go(-1) | |
| 229 | + } | |
| 230 | + } | |
| 231 | +} | |
| 232 | +</script> | |
| 233 | + | |
| 234 | +<style scoped> | |
| 235 | +.white-bg { | |
| 236 | + background: #fff; | |
| 237 | +} | |
| 238 | + | |
| 239 | +.padding-lg { | |
| 240 | + padding: 20px; | |
| 241 | +} | |
| 242 | + | |
| 243 | +.padding-top { | |
| 244 | + padding-top: 20px; | |
| 245 | +} | |
| 246 | + | |
| 247 | +.border-radius { | |
| 248 | + border-radius: 4px; | |
| 249 | +} | |
| 250 | + | |
| 251 | +.margin-top { | |
| 252 | + margin-top: 20px; | |
| 253 | +} | |
| 254 | + | |
| 255 | +.margin-top-sm { | |
| 256 | + margin-top: 10px; | |
| 257 | +} | |
| 258 | + | |
| 259 | +.flex { | |
| 260 | + display: flex; | |
| 261 | +} | |
| 262 | + | |
| 263 | +.justify-between { | |
| 264 | + justify-content: space-between; | |
| 265 | +} | |
| 266 | + | |
| 267 | +.text-title { | |
| 268 | + font-size: 18px; | |
| 269 | + font-weight: bold; | |
| 270 | +} | |
| 271 | +</style> | |
| 0 | 272 | \ No newline at end of file | ... | ... |
src/views/aCommunity/adminRoomDetailLang.js
0 → 100644
| 1 | +export const messages = { | |
| 2 | + en: { | |
| 3 | + adminRoomDetail: { | |
| 4 | + title: 'Room Details', | |
| 5 | + back: 'Back', | |
| 6 | + owner: 'Owner', | |
| 7 | + member: 'Family Member', | |
| 8 | + ownerRoom: 'Owner Room', | |
| 9 | + ownerCar: 'Owner Car', | |
| 10 | + contract: 'Contract', | |
| 11 | + roomFee: 'Room Fee', | |
| 12 | + carFee: 'Car Fee', | |
| 13 | + paymentHistory: 'Payment History', | |
| 14 | + receipt: 'Receipt', | |
| 15 | + repair: 'Repair', | |
| 16 | + complaint: 'Complaint', | |
| 17 | + meterReading: 'Meter Reading', | |
| 18 | + historyOwner: 'History Owner' | |
| 19 | + }, | |
| 20 | + adminRoomDetailInfo: { | |
| 21 | + roomCode: 'Room Code:', | |
| 22 | + floor: 'Floor:', | |
| 23 | + roomArea: 'Room Area:', | |
| 24 | + roomType: 'Room Type:', | |
| 25 | + roomStatus: 'Room Status:', | |
| 26 | + indoorArea: 'Indoor Area:', | |
| 27 | + rent: 'Rent:', | |
| 28 | + validity: 'Validity:', | |
| 29 | + ownerName: 'Owner Name:', | |
| 30 | + contact: 'Contact:', | |
| 31 | + remark: 'Remark:', | |
| 32 | + communityName: 'Community Name:' | |
| 33 | + }, | |
| 34 | + aRoomDetailMember: { | |
| 35 | + placeholderName: 'Please enter member name', | |
| 36 | + face: 'Face', | |
| 37 | + name: 'Name', | |
| 38 | + sex: 'Gender', | |
| 39 | + personRole: 'Person Role', | |
| 40 | + idCard: 'ID Card', | |
| 41 | + contact: 'Contact', | |
| 42 | + address: 'Address' | |
| 43 | + }, | |
| 44 | + aRoomDetailCar: { | |
| 45 | + placeholderCarNum: 'Please enter license plate number', | |
| 46 | + carNum: 'License Plate', | |
| 47 | + leaseType: 'Plate Type', | |
| 48 | + tempCar: 'Temporary Car', | |
| 49 | + carType: 'Vehicle Type', | |
| 50 | + color: 'Color', | |
| 51 | + owner: 'Owner', | |
| 52 | + parkingSpace: 'Parking Space', | |
| 53 | + released: 'Released', | |
| 54 | + validity: 'Validity' | |
| 55 | + }, | |
| 56 | + aRoomDetailContract: { | |
| 57 | + contractName: 'Contract Name', | |
| 58 | + contractCode: 'Contract Code', | |
| 59 | + parentContractCode: 'Parent Contract Code', | |
| 60 | + contractType: 'Contract Type', | |
| 61 | + operator: 'Operator', | |
| 62 | + amount: 'Amount', | |
| 63 | + startTime: 'Start Time', | |
| 64 | + endTime: 'End Time', | |
| 65 | + createTime: 'Create Time', | |
| 66 | + state: 'Status' | |
| 67 | + }, | |
| 68 | + aRoomDetailCarFee: { | |
| 69 | + selectCar: 'Select Car', | |
| 70 | + feeItem: 'Fee Item', | |
| 71 | + feeFlag: 'Fee Flag', | |
| 72 | + feeType: 'Fee Type', | |
| 73 | + amount: 'Amount', | |
| 74 | + createTime: 'Create Time', | |
| 75 | + timeRange: 'Time Range', | |
| 76 | + description: 'Description', | |
| 77 | + state: 'Status', | |
| 78 | + operation: 'Operation', | |
| 79 | + preDegrees: 'Previous Degrees', | |
| 80 | + curDegrees: 'Current Degrees', | |
| 81 | + unitPrice: 'Unit Price', | |
| 82 | + additionalFee: 'Additional Fee', | |
| 83 | + algorithm: 'Algorithm', | |
| 84 | + usage: 'Usage', | |
| 85 | + fixedFee: 'Fixed Fee', | |
| 86 | + note1: 'Note: The end time "-" means the charging time has not arrived or the charging has ended', | |
| 87 | + note2: 'Note: The amount -1 generally means an error in the fee formula setting, please check', | |
| 88 | + totalArrears: 'Total Arrears', | |
| 89 | + parkingLot: ' Parking Lot ', | |
| 90 | + parkingSpace: ' Parking Space', | |
| 91 | + owner: 'Owner', | |
| 92 | + phone: 'Phone', | |
| 93 | + noParkingSpace: 'No parking space' | |
| 94 | + }, | |
| 95 | + aRoomDetailRepair: { | |
| 96 | + repairId: 'Work Order Code', | |
| 97 | + location: 'Location', | |
| 98 | + repairType: 'Repair Type', | |
| 99 | + repairPerson: 'Repair Person', | |
| 100 | + contact: 'Contact', | |
| 101 | + appointmentTime: 'Appointment Time', | |
| 102 | + state: 'Status', | |
| 103 | + taskProcessing: 'Task Processing', | |
| 104 | + detail: 'Detail' | |
| 105 | + }, | |
| 106 | + aRoomDetailComplaint: { | |
| 107 | + type: 'Type', | |
| 108 | + room: 'Room', | |
| 109 | + contact: 'Contact', | |
| 110 | + phone: 'Phone', | |
| 111 | + status: 'Status', | |
| 112 | + handler: 'Handler', | |
| 113 | + handlerPhone: 'Handler Phone', | |
| 114 | + createTime: 'Create Time', | |
| 115 | + actions: 'Actions', | |
| 116 | + detail: 'Detail', | |
| 117 | + flowChart: 'Flow Chart', | |
| 118 | + none: 'None' | |
| 119 | + }, | |
| 120 | + aRoomDetailHisOwner: { | |
| 121 | + ownerName: 'Owner Name', | |
| 122 | + ownerPhone: 'Owner Phone', | |
| 123 | + startTime: 'Start Time', | |
| 124 | + endTime: 'End Time', | |
| 125 | + createTime: 'Create Time', | |
| 126 | + status: 'Status', | |
| 127 | + active: 'Active', | |
| 128 | + inactive: 'Inactive' | |
| 129 | + } | |
| 130 | + }, | |
| 131 | + zh: { | |
| 132 | + adminRoomDetail: { | |
| 133 | + title: '房屋详情', | |
| 134 | + back: '返回', | |
| 135 | + owner: '业主', | |
| 136 | + member: '家庭成员', | |
| 137 | + ownerRoom: '业主房屋', | |
| 138 | + ownerCar: '业主车辆', | |
| 139 | + contract: '合同', | |
| 140 | + roomFee: '房屋费用', | |
| 141 | + carFee: '车辆费用', | |
| 142 | + paymentHistory: '缴费历史', | |
| 143 | + receipt: '收据', | |
| 144 | + repair: '报修', | |
| 145 | + complaint: '投诉', | |
| 146 | + meterReading: '抄表记录', | |
| 147 | + historyOwner: '历史业主' | |
| 148 | + }, | |
| 149 | + adminRoomDetailInfo: { | |
| 150 | + roomCode: '房屋编号:', | |
| 151 | + floor: '楼层:', | |
| 152 | + roomArea: '房屋面积:', | |
| 153 | + roomType: '房屋类型:', | |
| 154 | + roomStatus: '房屋状态:', | |
| 155 | + indoorArea: '室内面积:', | |
| 156 | + rent: '租金:', | |
| 157 | + validity: '有效期:', | |
| 158 | + ownerName: '业主名称:', | |
| 159 | + contact: '联系电话:', | |
| 160 | + remark: '备注:', | |
| 161 | + communityName: '小区名称:' | |
| 162 | + }, | |
| 163 | + aRoomDetailMember: { | |
| 164 | + placeholderName: '请填写成员名称', | |
| 165 | + face: '人脸', | |
| 166 | + name: '名称', | |
| 167 | + sex: '性别', | |
| 168 | + personRole: '人员角色', | |
| 169 | + idCard: '身份证', | |
| 170 | + contact: '联系方式', | |
| 171 | + address: '地址' | |
| 172 | + }, | |
| 173 | + aRoomDetailCar: { | |
| 174 | + placeholderCarNum: '请填写车牌号', | |
| 175 | + carNum: '车牌号', | |
| 176 | + leaseType: '车牌类型', | |
| 177 | + tempCar: '临时车', | |
| 178 | + carType: '车辆类型', | |
| 179 | + color: '颜色', | |
| 180 | + owner: '业主', | |
| 181 | + parkingSpace: '车位', | |
| 182 | + released: '车位已释放', | |
| 183 | + validity: '有效期' | |
| 184 | + }, | |
| 185 | + aRoomDetailContract: { | |
| 186 | + contractName: '合同名称', | |
| 187 | + contractCode: '合同编号', | |
| 188 | + parentContractCode: '父合同编号', | |
| 189 | + contractType: '合同类型', | |
| 190 | + operator: '经办人', | |
| 191 | + amount: '合同金额', | |
| 192 | + startTime: '开始时间', | |
| 193 | + endTime: '结束时间', | |
| 194 | + createTime: '起草时间', | |
| 195 | + state: '状态' | |
| 196 | + }, | |
| 197 | + aRoomDetailCarFee: { | |
| 198 | + selectCar: '选择车辆', | |
| 199 | + feeItem: '费用项目', | |
| 200 | + feeFlag: '费用标识', | |
| 201 | + feeType: '费用类型', | |
| 202 | + amount: '应收金额', | |
| 203 | + createTime: '建账时间', | |
| 204 | + timeRange: '应收时间段', | |
| 205 | + description: '说明', | |
| 206 | + state: '状态', | |
| 207 | + operation: '操作', | |
| 208 | + preDegrees: '上期度数', | |
| 209 | + curDegrees: '本期度数', | |
| 210 | + unitPrice: '单价', | |
| 211 | + additionalFee: '附加费', | |
| 212 | + algorithm: '算法', | |
| 213 | + usage: '用量', | |
| 214 | + fixedFee: '固定费', | |
| 215 | + note1: '注意: 应收结束时间 "-" 表示未到应收时间 或 收费已结束', | |
| 216 | + note2: '注意: 应收金额 为-1 一般为费用项公式设置出错请检查', | |
| 217 | + totalArrears: '欠费小计', | |
| 218 | + parkingLot: '停车场', | |
| 219 | + parkingSpace: '停车位', | |
| 220 | + owner: '业主', | |
| 221 | + phone: '电话', | |
| 222 | + noParkingSpace: '没有车位' | |
| 223 | + }, | |
| 224 | + aRoomDetailRepair: { | |
| 225 | + repairId: '工单编码', | |
| 226 | + location: '位置', | |
| 227 | + repairType: '报修类型', | |
| 228 | + repairPerson: '报修人', | |
| 229 | + contact: '联系方式', | |
| 230 | + appointmentTime: '预约时间', | |
| 231 | + state: '状态', | |
| 232 | + taskProcessing: '定时任务处理', | |
| 233 | + detail: '详情' | |
| 234 | + }, | |
| 235 | + aRoomDetailComplaint: { | |
| 236 | + type: '类型', | |
| 237 | + room: '房屋', | |
| 238 | + contact: '联系人', | |
| 239 | + phone: '联系电话', | |
| 240 | + status: '状态', | |
| 241 | + handler: '处理人', | |
| 242 | + handlerPhone: '处理人电话', | |
| 243 | + createTime: '创建时间', | |
| 244 | + actions: '操作', | |
| 245 | + detail: '详情', | |
| 246 | + flowChart: '流程图', | |
| 247 | + none: '无' | |
| 248 | + }, | |
| 249 | + aRoomDetailHisOwner: { | |
| 250 | + ownerName: '业主名称', | |
| 251 | + ownerPhone: '业主电话', | |
| 252 | + startTime: '开始时间', | |
| 253 | + endTime: '结束时间', | |
| 254 | + createTime: '创建时间', | |
| 255 | + status: '状态', | |
| 256 | + active: '在用', | |
| 257 | + inactive: '失效' | |
| 258 | + } | |
| 259 | + } | |
| 260 | +} | ... | ... |
src/views/dev/routeList.vue
| 1 | 1 | <template> |
| 2 | - <div class="route-container"> | |
| 2 | + <div class="route-container padding"> | |
| 3 | 3 | <!-- 左侧菜单组列表 --> |
| 4 | 4 | <div class="menu-group-wrapper"> |
| 5 | 5 | <div class="group-content"> |
| ... | ... | @@ -40,7 +40,8 @@ |
| 40 | 40 | <el-table-column prop="orderTypeCd" :label="$t('route.table.orderTypeCd')" /> |
| 41 | 41 | <el-table-column :label="$t('common.operation')" width="200" fixed="right"> |
| 42 | 42 | <template slot-scope="scope"> |
| 43 | - <el-button size="mini" type="danger" @click="handleDelete(scope.row)">{{ $t('common.delete') }}</el-button> | |
| 43 | + <el-button size="mini" type="danger" @click="handleDelete(scope.row)">{{ $t('common.delete') | |
| 44 | + }}</el-button> | |
| 44 | 45 | </template> |
| 45 | 46 | </el-table-column> |
| 46 | 47 | </el-table> |
| ... | ... | @@ -89,7 +90,7 @@ export default { |
| 89 | 90 | }, |
| 90 | 91 | created() { |
| 91 | 92 | this.getApps() |
| 92 | - | |
| 93 | + | |
| 93 | 94 | }, |
| 94 | 95 | methods: { |
| 95 | 96 | async getApps() { |
| ... | ... | @@ -101,7 +102,7 @@ export default { |
| 101 | 102 | } |
| 102 | 103 | const { apps } = await getAppList(params) |
| 103 | 104 | this.apps = apps |
| 104 | - if(apps && apps.length>0){ | |
| 105 | + if (apps && apps.length > 0) { | |
| 105 | 106 | this.searchForm.appId = apps[0].appId |
| 106 | 107 | this.getList() |
| 107 | 108 | } |
| ... | ... | @@ -136,7 +137,7 @@ export default { |
| 136 | 137 | this.getList() |
| 137 | 138 | }, |
| 138 | 139 | handleAdd() { |
| 139 | - this.$router.push('/views/dev/addRoute?appId='+this.searchForm.appId) | |
| 140 | + this.$router.push('/views/dev/addRoute?appId=' + this.searchForm.appId) | |
| 140 | 141 | }, |
| 141 | 142 | handleEdit(row) { |
| 142 | 143 | this.currentRow = { ...row } |
| ... | ... | @@ -167,8 +168,7 @@ export default { |
| 167 | 168 | |
| 168 | 169 | <style lang="scss" scoped> |
| 169 | 170 | .route-container { |
| 170 | - padding: 0; | |
| 171 | - margin: 0; | |
| 171 | + | |
| 172 | 172 | display: flex; |
| 173 | 173 | background-color: #f0f2f5; |
| 174 | 174 | ... | ... |