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 | \ No newline at end of file | 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 | \ No newline at end of file | 21 | \ No newline at end of file |
src/api/aCommunity/aRoomDetailContractApi.js
0 → 100644
| 1 | +import request from '@/utils/request' | ||
| 2 | + | ||
| 3 | +export function queryAdminOwnerContract(params) { | ||
| 4 | + return request({ | ||
| 5 | + url: '/contract.queryAdminOwnerContract', | ||
| 6 | + method: 'get', | ||
| 7 | + params | ||
| 8 | + }).then(res => { | ||
| 9 | + return res.data | ||
| 10 | + }) | ||
| 11 | +} | ||
| 0 | \ No newline at end of file | 12 | \ No newline at end of file |
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 | \ No newline at end of file | 21 | \ No newline at end of file |
src/api/aCommunity/aRoomDetailMemberApi.js
0 → 100644
| 1 | +import request from '@/utils/request' | ||
| 2 | + | ||
| 3 | +export function queryAdminOwnerMembers(params) { | ||
| 4 | + return request({ | ||
| 5 | + url: '/owner.queryAdminOwnerMembers', | ||
| 6 | + method: 'get', | ||
| 7 | + params | ||
| 8 | + }).then(res => { | ||
| 9 | + return res.data | ||
| 10 | + }) | ||
| 11 | +} | ||
| 0 | \ No newline at end of file | 12 | \ No newline at end of file |
src/api/aCommunity/aRoomDetailRepairApi.js
0 → 100644
| 1 | +import request from '@/utils/request' | ||
| 2 | + | ||
| 3 | +export function listAdminOwnerRepairs(params) { | ||
| 4 | + return request({ | ||
| 5 | + url: '/ownerRepair.listAdminOwnerRepairs', | ||
| 6 | + method: 'get', | ||
| 7 | + params | ||
| 8 | + }).then(res => { | ||
| 9 | + return res.data | ||
| 10 | + }) | ||
| 11 | +} | ||
| 0 | \ No newline at end of file | 12 | \ No newline at end of file |
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 | \ No newline at end of file | 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 | \ No newline at end of file | 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 | \ No newline at end of file | 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 | \ No newline at end of file | 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 | \ No newline at end of file | 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 | \ No newline at end of file | 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 | \ No newline at end of file | 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 | \ No newline at end of file | 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 | \ No newline at end of file | 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 | \ No newline at end of file | 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 | \ No newline at end of file | 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 | \ No newline at end of file | 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 | \ No newline at end of file | 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 | \ No newline at end of file | 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 | \ No newline at end of file | 19 | \ No newline at end of file |
src/i18n/communityI18n.js
| @@ -7,6 +7,7 @@ import { messages as addCommunityPublicityMessages } from '../views/community/ad | @@ -7,6 +7,7 @@ import { messages as addCommunityPublicityMessages } from '../views/community/ad | ||
| 7 | import { messages as editCommunityPublicityMessages } from '../views/community/editCommunityPublicityLang' | 7 | import { messages as editCommunityPublicityMessages } from '../views/community/editCommunityPublicityLang' |
| 8 | import { messages as handoverMessages } from '../views/room/handoverLang' | 8 | 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 | export const messages = { | 11 | export const messages = { |
| 11 | en: { | 12 | en: { |
| 12 | ...roomStructureMessages.en, | 13 | ...roomStructureMessages.en, |
| @@ -18,6 +19,7 @@ export const messages = { | @@ -18,6 +19,7 @@ export const messages = { | ||
| 18 | ...editCommunityPublicityMessages.en, | 19 | ...editCommunityPublicityMessages.en, |
| 19 | ...handoverMessages.en, | 20 | ...handoverMessages.en, |
| 20 | ...ownerExitRoomMessages.en, | 21 | ...ownerExitRoomMessages.en, |
| 22 | + ...adminRoomDetailMessages.en, | ||
| 21 | }, | 23 | }, |
| 22 | zh: { | 24 | zh: { |
| 23 | ...roomStructureMessages.zh, | 25 | ...roomStructureMessages.zh, |
| @@ -29,5 +31,6 @@ export const messages = { | @@ -29,5 +31,6 @@ export const messages = { | ||
| 29 | ...editCommunityPublicityMessages.zh, | 31 | ...editCommunityPublicityMessages.zh, |
| 30 | ...handoverMessages.zh, | 32 | ...handoverMessages.zh, |
| 31 | ...ownerExitRoomMessages.zh, | 33 | ...ownerExitRoomMessages.zh, |
| 34 | + ...adminRoomDetailMessages.zh, | ||
| 32 | } | 35 | } |
| 33 | } | 36 | } |
| 34 | \ No newline at end of file | 37 | \ No newline at end of file |
src/router/communityRouter.js
| @@ -44,4 +44,9 @@ export default [ | @@ -44,4 +44,9 @@ export default [ | ||
| 44 | name: '/views/room/ownerExitRoom', | 44 | name: '/views/room/ownerExitRoom', |
| 45 | component: () => import('@/views/room/ownerExitRoomList.vue') | 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 | \ No newline at end of file | 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 | \ No newline at end of file | 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 | \ No newline at end of file | 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 | \ No newline at end of file | 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 | \ No newline at end of file | 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 | \ No newline at end of file | 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 | \ No newline at end of file | 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 | \ No newline at end of file | 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 | \ No newline at end of file | 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 | <template> | 1 | <template> |
| 2 | - <div class="route-container"> | 2 | + <div class="route-container padding"> |
| 3 | <!-- 左侧菜单组列表 --> | 3 | <!-- 左侧菜单组列表 --> |
| 4 | <div class="menu-group-wrapper"> | 4 | <div class="menu-group-wrapper"> |
| 5 | <div class="group-content"> | 5 | <div class="group-content"> |
| @@ -40,7 +40,8 @@ | @@ -40,7 +40,8 @@ | ||
| 40 | <el-table-column prop="orderTypeCd" :label="$t('route.table.orderTypeCd')" /> | 40 | <el-table-column prop="orderTypeCd" :label="$t('route.table.orderTypeCd')" /> |
| 41 | <el-table-column :label="$t('common.operation')" width="200" fixed="right"> | 41 | <el-table-column :label="$t('common.operation')" width="200" fixed="right"> |
| 42 | <template slot-scope="scope"> | 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 | </template> | 45 | </template> |
| 45 | </el-table-column> | 46 | </el-table-column> |
| 46 | </el-table> | 47 | </el-table> |
| @@ -89,7 +90,7 @@ export default { | @@ -89,7 +90,7 @@ export default { | ||
| 89 | }, | 90 | }, |
| 90 | created() { | 91 | created() { |
| 91 | this.getApps() | 92 | this.getApps() |
| 92 | - | 93 | + |
| 93 | }, | 94 | }, |
| 94 | methods: { | 95 | methods: { |
| 95 | async getApps() { | 96 | async getApps() { |
| @@ -101,7 +102,7 @@ export default { | @@ -101,7 +102,7 @@ export default { | ||
| 101 | } | 102 | } |
| 102 | const { apps } = await getAppList(params) | 103 | const { apps } = await getAppList(params) |
| 103 | this.apps = apps | 104 | this.apps = apps |
| 104 | - if(apps && apps.length>0){ | 105 | + if (apps && apps.length > 0) { |
| 105 | this.searchForm.appId = apps[0].appId | 106 | this.searchForm.appId = apps[0].appId |
| 106 | this.getList() | 107 | this.getList() |
| 107 | } | 108 | } |
| @@ -136,7 +137,7 @@ export default { | @@ -136,7 +137,7 @@ export default { | ||
| 136 | this.getList() | 137 | this.getList() |
| 137 | }, | 138 | }, |
| 138 | handleAdd() { | 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 | handleEdit(row) { | 142 | handleEdit(row) { |
| 142 | this.currentRow = { ...row } | 143 | this.currentRow = { ...row } |
| @@ -167,8 +168,7 @@ export default { | @@ -167,8 +168,7 @@ export default { | ||
| 167 | 168 | ||
| 168 | <style lang="scss" scoped> | 169 | <style lang="scss" scoped> |
| 169 | .route-container { | 170 | .route-container { |
| 170 | - padding: 0; | ||
| 171 | - margin: 0; | 171 | + |
| 172 | display: flex; | 172 | display: flex; |
| 173 | background-color: #f0f2f5; | 173 | background-color: #f0f2f5; |
| 174 | 174 |