Commit 81955f616e3cc3e63d2ba902348672023c5fdf4a
1 parent
af1bcbd6
优化房屋页面
Showing
73 changed files
with
896 additions
and
1402 deletions
public/import/hc.xlsx
0 → 100644
No preview for this file type
public/import/hc20200610.xlsx
0 → 100644
No preview for this file type
public/import/importCar.xlsx
0 → 100644
No preview for this file type
public/import/importCarFeeDetail.xlsx
0 → 100644
No preview for this file type
public/import/importFeeDetail.xlsx
0 → 100644
No preview for this file type
public/import/importResourceStore.xlsx
0 → 100644
No preview for this file type
public/import/importRoom.xlsx
0 → 100644
No preview for this file type
public/import/meterMachine.xlsx
0 → 100644
No preview for this file type
public/import/wy.xlsx
0 → 100644
No preview for this file type
src/api/room/addFloorApi.js
| ... | ... | @@ -3,11 +3,11 @@ import request from '@/utils/request' |
| 3 | 3 | export function addFloor(data) { |
| 4 | 4 | return new Promise((resolve, reject) => { |
| 5 | 5 | request({ |
| 6 | - url: '/floor/saveFloor', | |
| 6 | + url: '/floor.saveFloor', | |
| 7 | 7 | method: 'post', |
| 8 | 8 | data |
| 9 | 9 | }).then(response => { |
| 10 | - resolve(response) | |
| 10 | + resolve(response.data) | |
| 11 | 11 | }).catch(error => { |
| 12 | 12 | reject(error) |
| 13 | 13 | }) | ... | ... |
src/api/room/deleteFloorApi.js
| ... | ... | @@ -3,11 +3,11 @@ import request from '@/utils/request' |
| 3 | 3 | export function deleteFloor(data) { |
| 4 | 4 | return new Promise((resolve, reject) => { |
| 5 | 5 | request({ |
| 6 | - url: '/floor/deleteFloor', | |
| 6 | + url: '/floor.deleteFloor', | |
| 7 | 7 | method: 'post', |
| 8 | 8 | data |
| 9 | 9 | }).then(response => { |
| 10 | - resolve(response) | |
| 10 | + resolve(response.data) | |
| 11 | 11 | }).catch(error => { |
| 12 | 12 | reject(error) |
| 13 | 13 | }) | ... | ... |
src/api/room/deleteUnitApi.js
| 1 | 1 | import request from '@/utils/request' |
| 2 | 2 | |
| 3 | -export function deleteUnit(params) { | |
| 3 | +export function deleteUnit(data) { | |
| 4 | 4 | return new Promise((resolve, reject) => { |
| 5 | 5 | request({ |
| 6 | 6 | url: '/unit.deleteUnit', |
| 7 | 7 | method: 'post', |
| 8 | - params | |
| 8 | + data | |
| 9 | 9 | }).then(response => { |
| 10 | 10 | const res = response.data |
| 11 | - if (res.code === 0) { | |
| 11 | + if (res.code == 0) { | |
| 12 | 12 | resolve(res) |
| 13 | 13 | } else { |
| 14 | 14 | reject(new Error(res.msg || '删除单元失败')) | ... | ... |
src/api/room/editFloorApi.js
| ... | ... | @@ -3,11 +3,11 @@ import request from '@/utils/request' |
| 3 | 3 | export function editFloor(data) { |
| 4 | 4 | return new Promise((resolve, reject) => { |
| 5 | 5 | request({ |
| 6 | - url: '/floor/editFloor', | |
| 6 | + url: '/floor.editFloor', | |
| 7 | 7 | method: 'post', |
| 8 | 8 | data |
| 9 | 9 | }).then(response => { |
| 10 | - resolve(response) | |
| 10 | + resolve(response.data) | |
| 11 | 11 | }).catch(error => { |
| 12 | 12 | reject(error) |
| 13 | 13 | }) | ... | ... |
src/api/room/editRoomApi.js
| ... | ... | @@ -27,11 +27,8 @@ export function getUnits(params) { |
| 27 | 27 | params |
| 28 | 28 | }).then(response => { |
| 29 | 29 | const res = response.data |
| 30 | - if (res.code === 0) { | |
| 31 | - resolve(res.data) | |
| 32 | - } else { | |
| 33 | - reject(new Error(res.msg || '获取单元列表失败')) | |
| 34 | - } | |
| 30 | + | |
| 31 | + resolve(res) | |
| 35 | 32 | }).catch(error => { |
| 36 | 33 | reject(error) |
| 37 | 34 | }) | ... | ... |
src/api/room/floorUnitTreeApi.js
| ... | ... | @@ -8,11 +8,7 @@ export function getFloorAndUnits(communityId) { |
| 8 | 8 | params: { communityId } |
| 9 | 9 | }).then(response => { |
| 10 | 10 | const res = response.data |
| 11 | - if (res.code === 0) { | |
| 12 | - resolve(res.data) | |
| 13 | - } else { | |
| 14 | - reject(new Error(res.msg || '获取楼栋单元失败')) | |
| 15 | - } | |
| 11 | + resolve(res) | |
| 16 | 12 | }).catch(error => { |
| 17 | 13 | reject(error) |
| 18 | 14 | }) | ... | ... |
src/api/room/ownerRoomsApi.js
| ... | ... | @@ -8,11 +8,7 @@ export function queryRoomsByOwner(params) { |
| 8 | 8 | params |
| 9 | 9 | }).then(response => { |
| 10 | 10 | const res = response.data |
| 11 | - if (res.code === 0) { | |
| 12 | - resolve(res.data) | |
| 13 | - } else { | |
| 14 | - reject(new Error(res.msg || '获取业主房屋失败')) | |
| 15 | - } | |
| 11 | + resolve(res) | |
| 16 | 12 | }).catch(error => { |
| 17 | 13 | reject(error) |
| 18 | 14 | }) | ... | ... |
src/api/room/roomApi.js
| ... | ... | @@ -9,11 +9,7 @@ export function queryRooms(params) { |
| 9 | 9 | params |
| 10 | 10 | }).then(response => { |
| 11 | 11 | const res = response.data |
| 12 | - if (res.code === 0) { | |
| 13 | 12 | resolve(res) |
| 14 | - } else { | |
| 15 | - reject(new Error(res.msg || '获取房屋列表失败')) | |
| 16 | - } | |
| 17 | 13 | }).catch(error => { |
| 18 | 14 | reject(error) |
| 19 | 15 | }) |
| ... | ... | @@ -29,11 +25,8 @@ export function getFloors(params) { |
| 29 | 25 | params |
| 30 | 26 | }).then(response => { |
| 31 | 27 | const res = response.data |
| 32 | - if (res.code === 0) { | |
| 28 | + | |
| 33 | 29 | resolve(res) |
| 34 | - } else { | |
| 35 | - reject(new Error(res.msg || '获取楼栋列表失败')) | |
| 36 | - } | |
| 37 | 30 | }).catch(error => { |
| 38 | 31 | reject(error) |
| 39 | 32 | }) |
| ... | ... | @@ -49,11 +42,8 @@ export function getUnits(params) { |
| 49 | 42 | params |
| 50 | 43 | }).then(response => { |
| 51 | 44 | const res = response.data |
| 52 | - if (res.code === 0) { | |
| 45 | + | |
| 53 | 46 | resolve(res) |
| 54 | - } else { | |
| 55 | - reject(new Error(res.msg || '获取单元列表失败')) | |
| 56 | - } | |
| 57 | 47 | }).catch(error => { |
| 58 | 48 | reject(error) |
| 59 | 49 | }) | ... | ... |
src/components/admin/WriteAdvertMachine.vue
src/components/community/DeleteRoomRenovation.vue
src/components/community/EditRoomRenovation.vue
src/components/community/RoomDecorationAcceptance.vue
| ... | ... | @@ -71,7 +71,7 @@ export default { |
| 71 | 71 | state: '', |
| 72 | 72 | remark: '', |
| 73 | 73 | detailType: '1001', |
| 74 | - communityId: this.$store.getters.communityId | |
| 74 | + communityId: this.getCommunityId() | |
| 75 | 75 | } |
| 76 | 76 | this.visible = true |
| 77 | 77 | }, |
| ... | ... | @@ -83,7 +83,7 @@ export default { |
| 83 | 83 | state: '', |
| 84 | 84 | remark: '', |
| 85 | 85 | detailType: '1001', |
| 86 | - communityId: this.$store.getters.communityId | |
| 86 | + communityId: this.getCommunityId() | |
| 87 | 87 | } |
| 88 | 88 | }, |
| 89 | 89 | ... | ... |
src/components/community/RoomRenovationCompleted.vue
src/components/community/RoomToExamine.vue
src/components/mall/DeleteJunkRequirement.vue
| ... | ... | @@ -39,7 +39,7 @@ export default { |
| 39 | 39 | try { |
| 40 | 40 | await deleteJunkRequirement({ |
| 41 | 41 | junkRequirementId: this.junkRequirementId, |
| 42 | - communityId: this.$store.getters.communityId | |
| 42 | + communityId: this.getCommunityId() | |
| 43 | 43 | }) |
| 44 | 44 | this.$message.success(this.$t('junkRequirement.delete.success')) |
| 45 | 45 | this.$emit('success') | ... | ... |
src/components/mall/EditJunkRequirement.vue
| ... | ... | @@ -120,7 +120,7 @@ export default { |
| 120 | 120 | try { |
| 121 | 121 | await updateJunkRequirement({ |
| 122 | 122 | ...this.editJunkRequirementInfo, |
| 123 | - communityId: this.$store.getters.communityId | |
| 123 | + communityId: this.getCommunityId() | |
| 124 | 124 | }) |
| 125 | 125 | this.$message.success(this.$t('junkRequirement.edit.success')) |
| 126 | 126 | this.$emit('success') | ... | ... |
src/components/owner/ownerCars.vue
| 1 | 1 | <template> |
| 2 | - <el-dialog | |
| 3 | - :visible.sync="dialogVisible" | |
| 4 | - :title="$t('ownerCars.title')" | |
| 5 | - width="80%" | |
| 6 | - top="5vh" | |
| 7 | - @close="handleClose" | |
| 8 | - > | |
| 2 | + <el-dialog :visible.sync="dialogVisible" :title="$t('ownerCars.title')" width="80%" top="5vh" @close="handleClose"> | |
| 9 | 3 | <el-row> |
| 10 | 4 | <el-col :span="24"> |
| 11 | 5 | <div class="table-container"> |
| ... | ... | @@ -42,15 +36,8 @@ |
| 42 | 36 | </el-table-column> |
| 43 | 37 | </el-table> |
| 44 | 38 | </div> |
| 45 | - <el-pagination | |
| 46 | - background | |
| 47 | - layout="prev, pager, next, sizes, total" | |
| 48 | - :total="totalCount" | |
| 49 | - :page-size="pageSize" | |
| 50 | - :current-page="currentPage" | |
| 51 | - @size-change="handleSizeChange" | |
| 52 | - @current-change="handleCurrentChange" | |
| 53 | - /> | |
| 39 | + <el-pagination background layout="prev, pager, next, sizes, total" :total="totalCount" :page-size="pageSize" | |
| 40 | + :current-page="currentPage" @size-change="handleSizeChange" @current-change="handleCurrentChange" /> | |
| 54 | 41 | </el-col> |
| 55 | 42 | </el-row> |
| 56 | 43 | </el-dialog> |
| ... | ... | @@ -95,10 +82,10 @@ export default { |
| 95 | 82 | const params = { |
| 96 | 83 | page: page, |
| 97 | 84 | row: size, |
| 98 | - communityId: this.$store.getters.communityId, | |
| 85 | + communityId: this.getCommunityId(), | |
| 99 | 86 | ownerId: this.ownerCarsInfo.ownerId |
| 100 | 87 | } |
| 101 | - | |
| 88 | + | |
| 102 | 89 | const response = await queryOwnerCars(params) |
| 103 | 90 | this.ownerCarsInfo.cars = response.data |
| 104 | 91 | this.totalCount = response.total | ... | ... |
src/components/owner/ownerComplaints.vue
| 1 | 1 | <template> |
| 2 | - <el-dialog | |
| 3 | - :visible.sync="dialogVisible" | |
| 4 | - :title="$t('ownerComplaints.title')" | |
| 5 | - width="80%" | |
| 6 | - top="5vh" | |
| 7 | - @close="handleClose" | |
| 8 | - > | |
| 2 | + <el-dialog :visible.sync="dialogVisible" :title="$t('ownerComplaints.title')" width="80%" top="5vh" | |
| 3 | + @close="handleClose"> | |
| 9 | 4 | <el-row> |
| 10 | 5 | <el-col :span="24"> |
| 11 | 6 | <div class="table-container"> |
| ... | ... | @@ -32,15 +27,8 @@ |
| 32 | 27 | <el-table-column prop="createTime" :label="$t('ownerComplaints.createTime')" align="center" /> |
| 33 | 28 | </el-table> |
| 34 | 29 | </div> |
| 35 | - <el-pagination | |
| 36 | - background | |
| 37 | - layout="prev, pager, next, sizes, total" | |
| 38 | - :total="totalCount" | |
| 39 | - :page-size="pageSize" | |
| 40 | - :current-page="currentPage" | |
| 41 | - @size-change="handleSizeChange" | |
| 42 | - @current-change="handleCurrentChange" | |
| 43 | - /> | |
| 30 | + <el-pagination background layout="prev, pager, next, sizes, total" :total="totalCount" :page-size="pageSize" | |
| 31 | + :current-page="currentPage" @size-change="handleSizeChange" @current-change="handleCurrentChange" /> | |
| 44 | 32 | </el-col> |
| 45 | 33 | </el-row> |
| 46 | 34 | </el-dialog> |
| ... | ... | @@ -85,10 +73,10 @@ export default { |
| 85 | 73 | const params = { |
| 86 | 74 | page: page, |
| 87 | 75 | row: size, |
| 88 | - communityId: this.$store.getters.communityId, | |
| 76 | + communityId: this.getCommunityId(), | |
| 89 | 77 | ownerId: this.ownerComplaintsInfo.ownerId |
| 90 | 78 | } |
| 91 | - | |
| 79 | + | |
| 92 | 80 | const response = await listComplaints(params) |
| 93 | 81 | this.ownerComplaintsInfo.complaints = response.data |
| 94 | 82 | this.totalCount = response.total | ... | ... |
src/components/owner/ownerMembers.vue
| 1 | 1 | <template> |
| 2 | - <el-dialog | |
| 3 | - :visible.sync="dialogVisible" | |
| 4 | - :title="$t('ownerMembers.title')" | |
| 5 | - width="80%" | |
| 6 | - top="5vh" | |
| 7 | - @close="handleClose" | |
| 8 | - > | |
| 2 | + <el-dialog :visible.sync="dialogVisible" :title="$t('ownerMembers.title')" width="80%" top="5vh" @close="handleClose"> | |
| 9 | 3 | <el-row> |
| 10 | 4 | <el-col :span="24"> |
| 11 | 5 | <div class="table-container"> |
| ... | ... | @@ -23,15 +17,8 @@ |
| 23 | 17 | <el-table-column prop="address" :label="$t('ownerMembers.address')" align="center" /> |
| 24 | 18 | </el-table> |
| 25 | 19 | </div> |
| 26 | - <el-pagination | |
| 27 | - background | |
| 28 | - layout="prev, pager, next, sizes, total" | |
| 29 | - :total="totalCount" | |
| 30 | - :page-size="pageSize" | |
| 31 | - :current-page="currentPage" | |
| 32 | - @size-change="handleSizeChange" | |
| 33 | - @current-change="handleCurrentChange" | |
| 34 | - /> | |
| 20 | + <el-pagination background layout="prev, pager, next, sizes, total" class="margin-top" :total="totalCount" :page-size="pageSize" | |
| 21 | + :current-page="currentPage" @size-change="handleSizeChange" @current-change="handleCurrentChange" /> | |
| 35 | 22 | </el-col> |
| 36 | 23 | </el-row> |
| 37 | 24 | </el-dialog> |
| ... | ... | @@ -76,10 +63,10 @@ export default { |
| 76 | 63 | const params = { |
| 77 | 64 | page: page, |
| 78 | 65 | row: size, |
| 79 | - communityId: this.$store.getters.communityId, | |
| 66 | + communityId: this.getCommunityId(), | |
| 80 | 67 | ownerId: this.ownerMembersInfo.ownerId |
| 81 | 68 | } |
| 82 | - | |
| 69 | + | |
| 83 | 70 | const response = await queryOwnerMembers(params) |
| 84 | 71 | this.ownerMembersInfo.members = response.data |
| 85 | 72 | this.totalCount = response.total | ... | ... |
src/components/owner/ownerOweFees.vue
| 1 | 1 | <template> |
| 2 | - <el-dialog | |
| 3 | - :visible.sync="visible" | |
| 4 | - :title="$t('ownerOweFees.title')" | |
| 5 | - width="80%" | |
| 6 | - top="5vh" | |
| 7 | - custom-class="custom-modal" | |
| 8 | - @close="handleClose" | |
| 9 | - > | |
| 10 | - <el-table | |
| 11 | - :data="ownerOweFeesInfo.fees" | |
| 12 | - stripe | |
| 13 | - border | |
| 14 | - style="width: 100%; margin-top: 15px" | |
| 15 | - > | |
| 16 | - <el-table-column | |
| 17 | - prop="payerObjName" | |
| 18 | - :label="$t('ownerOweFees.payerObj')" | |
| 19 | - align="center" | |
| 20 | - /> | |
| 21 | - <el-table-column | |
| 22 | - prop="ownerName" | |
| 23 | - :label="$t('ownerOweFees.ownerName')" | |
| 24 | - align="center" | |
| 25 | - /> | |
| 26 | - <el-table-column | |
| 27 | - prop="ownerTel" | |
| 28 | - :label="$t('ownerOweFees.phone')" | |
| 29 | - align="center" | |
| 30 | - /> | |
| 31 | - <el-table-column | |
| 32 | - prop="endTime" | |
| 33 | - :label="$t('ownerOweFees.startTime')" | |
| 34 | - align="center" | |
| 35 | - /> | |
| 36 | - <el-table-column | |
| 37 | - prop="deadlineTime" | |
| 38 | - :label="$t('ownerOweFees.endTime')" | |
| 39 | - align="center" | |
| 40 | - /> | |
| 41 | - <el-table-column | |
| 42 | - prop="amountOwed" | |
| 43 | - :label="`${$t('ownerOweFees.total')} (${$t('ownerOweFees.unit')})`" | |
| 44 | - align="center" | |
| 45 | - /> | |
| 46 | - <el-table-column | |
| 47 | - prop="updateTime" | |
| 48 | - :label="$t('ownerOweFees.updateTime')" | |
| 49 | - align="center" | |
| 50 | - /> | |
| 2 | + <el-dialog :visible.sync="visible" :title="$t('ownerOweFees.title')" width="80%" top="5vh" custom-class="custom-modal" | |
| 3 | + @close="handleClose"> | |
| 4 | + <el-table :data="ownerOweFeesInfo.fees" stripe border style="width: 100%; margin-top: 15px"> | |
| 5 | + <el-table-column prop="payerObjName" :label="$t('ownerOweFees.payerObj')" align="center" /> | |
| 6 | + <el-table-column prop="ownerName" :label="$t('ownerOweFees.ownerName')" align="center" /> | |
| 7 | + <el-table-column prop="ownerTel" :label="$t('ownerOweFees.phone')" align="center" /> | |
| 8 | + <el-table-column prop="endTime" :label="$t('ownerOweFees.startTime')" align="center" /> | |
| 9 | + <el-table-column prop="deadlineTime" :label="$t('ownerOweFees.endTime')" align="center" /> | |
| 10 | + <el-table-column prop="amountOwed" :label="`${$t('ownerOweFees.total')} (${$t('ownerOweFees.unit')})`" | |
| 11 | + align="center" /> | |
| 12 | + <el-table-column prop="updateTime" :label="$t('ownerOweFees.updateTime')" align="center" /> | |
| 51 | 13 | </el-table> |
| 52 | - | |
| 53 | - <el-pagination | |
| 54 | - v-if="pagination.total > 0" | |
| 55 | - background | |
| 56 | - layout="prev, pager, next" | |
| 57 | - :total="pagination.total" | |
| 58 | - :page-size="pagination.pageSize" | |
| 59 | - :current-page="pagination.currentPage" | |
| 60 | - @current-change="handlePageChange" | |
| 61 | - style="margin-top: 20px; text-align: right" | |
| 62 | - /> | |
| 14 | + | |
| 15 | + <el-pagination v-if="pagination.total > 0" background layout="prev, pager, next" :total="pagination.total" | |
| 16 | + :page-size="pagination.pageSize" :current-page="pagination.currentPage" @current-change="handlePageChange" | |
| 17 | + style="margin-top: 20px; text-align: right" /> | |
| 63 | 18 | </el-dialog> |
| 64 | 19 | </template> |
| 65 | 20 | |
| ... | ... | @@ -104,7 +59,7 @@ export default { |
| 104 | 59 | communityId: this.getCommunityId(), |
| 105 | 60 | ownerId: this.ownerOweFeesInfo.ownerId |
| 106 | 61 | } |
| 107 | - | |
| 62 | + | |
| 108 | 63 | const response = await getOwnerOweFees(params) |
| 109 | 64 | this.ownerOweFeesInfo.fees = response.data |
| 110 | 65 | this.pagination.total = response.records |
| ... | ... | @@ -113,15 +68,12 @@ export default { |
| 113 | 68 | this.$message.error(this.$t('common.loadFailed')) |
| 114 | 69 | } |
| 115 | 70 | }, |
| 116 | - getCommunityId() { | |
| 117 | - return this.$store.state.user.currentCommunity.communityId | |
| 118 | - } | |
| 119 | 71 | } |
| 120 | 72 | } |
| 121 | 73 | </script> |
| 122 | 74 | |
| 123 | 75 | <style scoped> |
| 124 | -.custom-modal >>> .el-dialog__body { | |
| 76 | +.custom-modal>>>.el-dialog__body { | |
| 125 | 77 | padding: 15px 20px; |
| 126 | 78 | } |
| 127 | 79 | </style> |
| 128 | 80 | \ No newline at end of file | ... | ... |
src/components/owner/ownerRepairs.vue
| 1 | 1 | <template> |
| 2 | - <el-dialog | |
| 3 | - :visible.sync="dialogVisible" | |
| 4 | - :title="$t('ownerRepairs.title')" | |
| 5 | - width="80%" | |
| 6 | - top="5vh" | |
| 7 | - @close="handleClose" | |
| 8 | - > | |
| 2 | + <el-dialog :visible.sync="dialogVisible" :title="$t('ownerRepairs.title')" width="80%" top="5vh" @close="handleClose"> | |
| 9 | 3 | <el-row> |
| 10 | 4 | <el-col :span="24"> |
| 11 | 5 | <div class="table-container"> |
| ... | ... | @@ -28,15 +22,8 @@ |
| 28 | 22 | </el-table-column> |
| 29 | 23 | </el-table> |
| 30 | 24 | </div> |
| 31 | - <el-pagination | |
| 32 | - background | |
| 33 | - layout="prev, pager, next, sizes, total" | |
| 34 | - :total="totalCount" | |
| 35 | - :page-size="pageSize" | |
| 36 | - :current-page="currentPage" | |
| 37 | - @size-change="handleSizeChange" | |
| 38 | - @current-change="handleCurrentChange" | |
| 39 | - /> | |
| 25 | + <el-pagination background layout="prev, pager, next, sizes, total" :total="totalCount" :page-size="pageSize" | |
| 26 | + :current-page="currentPage" @size-change="handleSizeChange" @current-change="handleCurrentChange" /> | |
| 40 | 27 | </el-col> |
| 41 | 28 | </el-row> |
| 42 | 29 | </el-dialog> |
| ... | ... | @@ -81,10 +68,10 @@ export default { |
| 81 | 68 | const params = { |
| 82 | 69 | page: page, |
| 83 | 70 | row: size, |
| 84 | - communityId: this.$store.getters.communityId, | |
| 71 | + communityId: this.getCommunityId(), | |
| 85 | 72 | ownerId: this.ownerRepairsInfo.ownerId |
| 86 | 73 | } |
| 87 | - | |
| 74 | + | |
| 88 | 75 | const response = await listOwnerRepairs(params) |
| 89 | 76 | this.ownerRepairsInfo.repairs = response.data |
| 90 | 77 | this.totalCount = response.total | ... | ... |
src/components/owner/ownerRooms.vue
| 1 | 1 | <template> |
| 2 | - <el-dialog | |
| 3 | - :title="$t('ownerRooms.title')" | |
| 4 | - :visible.sync="visible" | |
| 5 | - width="70%" | |
| 6 | - :before-close="handleClose" | |
| 7 | - > | |
| 2 | + <el-dialog :title="$t('ownerRooms.title')" :visible.sync="visible" width="70%" :before-close="handleClose"> | |
| 8 | 3 | <el-table :data="ownerRoomsInfo.rooms" style="width: 100%"> |
| 9 | 4 | <el-table-column prop="roomId" :label="$t('ownerRooms.roomId')" align="center" /> |
| 10 | 5 | <el-table-column prop="layer" :label="$t('ownerRooms.layer')" align="center" /> |
| ... | ... | @@ -22,19 +17,14 @@ |
| 22 | 17 | </template> |
| 23 | 18 | </el-table-column> |
| 24 | 19 | </el-table> |
| 25 | - | |
| 26 | - <el-row class="mt-3"> | |
| 20 | + | |
| 21 | + <el-row class="mt-3 margin-top"> | |
| 27 | 22 | <el-col :span="8"> |
| 28 | 23 | <span>{{ $t('ownerRooms.subtotal') }}: {{ ownerRoomsInfo.allOweFeeAmount }}</span> |
| 29 | 24 | </el-col> |
| 30 | 25 | <el-col :span="16" class="text-right"> |
| 31 | - <el-pagination | |
| 32 | - :current-page="pagination.currentPage" | |
| 33 | - :page-size="pagination.pageSize" | |
| 34 | - :total="pagination.total" | |
| 35 | - layout="prev, pager, next" | |
| 36 | - @current-change="handlePageChange" | |
| 37 | - /> | |
| 26 | + <el-pagination :current-page="pagination.currentPage" :page-size="pagination.pageSize" :total="pagination.total" | |
| 27 | + layout="prev, pager, next" @current-change="handlePageChange" /> | |
| 38 | 28 | </el-col> |
| 39 | 29 | </el-row> |
| 40 | 30 | </el-dialog> |
| ... | ... | @@ -81,7 +71,7 @@ export default { |
| 81 | 71 | communityId: this.getCommunityId(), |
| 82 | 72 | ownerId: this.ownerRoomsInfo.ownerId |
| 83 | 73 | } |
| 84 | - | |
| 74 | + | |
| 85 | 75 | const response = await queryRoomsByOwner(params) |
| 86 | 76 | this.ownerRoomsInfo.rooms = response.rooms |
| 87 | 77 | this.pagination.total = response.total || 0 | ... | ... |
src/components/room/addFloor.vue
| ... | ... | @@ -20,7 +20,7 @@ |
| 20 | 20 | </el-input> |
| 21 | 21 | </el-form-item> |
| 22 | 22 | |
| 23 | - <el-form-item :label="$t('room.addFloor.seq')" prop="seq"> | |
| 23 | + <el-form-item :label="$t('room.addFloor.seq')" class="text-left" prop="seq"> | |
| 24 | 24 | <el-input-number v-model="form.seq" :min="1" /> |
| 25 | 25 | </el-form-item> |
| 26 | 26 | |
| ... | ... | @@ -28,7 +28,6 @@ |
| 28 | 28 | <el-input v-model="form.remark" type="textarea" :placeholder="$t('room.addFloor.remarkPlaceholder')" /> |
| 29 | 29 | </el-form-item> |
| 30 | 30 | |
| 31 | - <el-alert v-if="errorInfo" :title="errorInfo" type="error" show-icon /> | |
| 32 | 31 | </el-form> |
| 33 | 32 | |
| 34 | 33 | <span slot="footer" class="dialog-footer"> |
| ... | ... | @@ -117,21 +116,13 @@ export default { |
| 117 | 116 | if (!valid) return |
| 118 | 117 | |
| 119 | 118 | try { |
| 120 | - if (this.callBackListener && this.callBackFunction) { | |
| 121 | - const floorInfo = { ...this.form } | |
| 122 | - floorInfo.floorName = this.form.name | |
| 123 | - this.$emit(this.callBackFunction, floorInfo) | |
| 124 | - this.handleClose() | |
| 125 | - return | |
| 126 | - } | |
| 127 | - | |
| 119 | + | |
| 128 | 120 | const response = await addFloor(this.form) |
| 129 | 121 | |
| 130 | - if (response.code === 0) { | |
| 122 | + if (response.code == 0) { | |
| 131 | 123 | this.$message.success(this.$t('room.addFloor.saveSuccess')) |
| 132 | 124 | this.handleClose() |
| 133 | - this.$emit('refresh-data') | |
| 134 | - this.$emit('refresh-tree') | |
| 125 | + this.$emit('handleRefreshTree', {}) | |
| 135 | 126 | } else { |
| 136 | 127 | this.errorInfo = response.msg || this.$t('room.addFloor.saveFailed') |
| 137 | 128 | } |
| ... | ... | @@ -140,10 +131,6 @@ export default { |
| 140 | 131 | } |
| 141 | 132 | }) |
| 142 | 133 | }, |
| 143 | - getCommunityId() { | |
| 144 | - // 实际项目中替换为获取社区ID的逻辑 | |
| 145 | - return 'your-community-id' | |
| 146 | - } | |
| 147 | 134 | } |
| 148 | 135 | } |
| 149 | 136 | </script> |
| 150 | 137 | \ No newline at end of file | ... | ... |
src/components/room/addUnit.vue
| 1 | 1 | <template> |
| 2 | - <el-dialog | |
| 3 | - :title="$t('addUnit.title')" | |
| 4 | - :visible.sync="visible" | |
| 5 | - width="50%" | |
| 6 | - :before-close="handleClose" | |
| 7 | - > | |
| 2 | + <el-dialog :title="$t('addUnit.title')" :visible.sync="visible" width="50%" :before-close="handleClose"> | |
| 8 | 3 | <el-form ref="form" :model="addUnitInfo" label-width="120px"> |
| 9 | 4 | <el-form-item :label="$t('addUnit.unitNum')" prop="unitNum" required> |
| 10 | - <el-input | |
| 11 | - v-model="addUnitInfo.unitNum" | |
| 12 | - :placeholder="$t('addUnit.unitNumPlaceholder')" | |
| 13 | - ></el-input> | |
| 5 | + <el-input v-model="addUnitInfo.unitNum" :placeholder="$t('addUnit.unitNumPlaceholder')"></el-input> | |
| 14 | 6 | </el-form-item> |
| 15 | - | |
| 7 | + | |
| 16 | 8 | <el-form-item :label="$t('addUnit.layerCount')" prop="layerCount" required> |
| 17 | - <el-input | |
| 18 | - v-model.number="addUnitInfo.layerCount" | |
| 19 | - type="number" | |
| 20 | - :placeholder="$t('addUnit.layerCountPlaceholder')" | |
| 21 | - ></el-input> | |
| 9 | + <el-input v-model.number="addUnitInfo.layerCount" type="number" | |
| 10 | + :placeholder="$t('addUnit.layerCountPlaceholder')"></el-input> | |
| 22 | 11 | </el-form-item> |
| 23 | - | |
| 12 | + | |
| 24 | 13 | <el-form-item :label="$t('addUnit.unitArea')" prop="unitArea" required> |
| 25 | - <el-input | |
| 26 | - v-model="addUnitInfo.unitArea" | |
| 27 | - :placeholder="$t('addUnit.unitAreaPlaceholder')" | |
| 28 | - ></el-input> | |
| 14 | + <el-input v-model="addUnitInfo.unitArea" :placeholder="$t('addUnit.unitAreaPlaceholder')"></el-input> | |
| 29 | 15 | </el-form-item> |
| 30 | - | |
| 16 | + | |
| 31 | 17 | <el-form-item :label="$t('addUnit.lift')" prop="lift" required> |
| 32 | - <el-select | |
| 33 | - v-model="addUnitInfo.lift" | |
| 34 | - :placeholder="$t('addUnit.liftPlaceholder')" | |
| 35 | - style="width: 100%" | |
| 36 | - > | |
| 37 | - <el-option | |
| 38 | - :label="$t('addUnit.liftOption1')" | |
| 39 | - value="1010" | |
| 40 | - ></el-option> | |
| 41 | - <el-option | |
| 42 | - :label="$t('addUnit.liftOption2')" | |
| 43 | - value="2020" | |
| 44 | - ></el-option> | |
| 18 | + <el-select v-model="addUnitInfo.lift" :placeholder="$t('addUnit.liftPlaceholder')" style="width: 100%"> | |
| 19 | + <el-option :label="$t('addUnit.liftOption1')" value="1010"></el-option> | |
| 20 | + <el-option :label="$t('addUnit.liftOption2')" value="2020"></el-option> | |
| 45 | 21 | </el-select> |
| 46 | 22 | </el-form-item> |
| 47 | - | |
| 23 | + | |
| 48 | 24 | <el-form-item :label="$t('addUnit.remark')"> |
| 49 | - <el-input | |
| 50 | - v-model="addUnitInfo.remark" | |
| 51 | - type="textarea" | |
| 52 | - :rows="3" | |
| 53 | - :placeholder="$t('addUnit.remarkPlaceholder')" | |
| 54 | - ></el-input> | |
| 25 | + <el-input v-model="addUnitInfo.remark" type="textarea" :rows="3" | |
| 26 | + :placeholder="$t('addUnit.remarkPlaceholder')"></el-input> | |
| 55 | 27 | </el-form-item> |
| 56 | 28 | </el-form> |
| 57 | - | |
| 29 | + | |
| 58 | 30 | <span slot="footer" class="dialog-footer"> |
| 59 | 31 | <el-button @click="handleClose">{{ $t('addUnit.cancel') }}</el-button> |
| 60 | 32 | <el-button type="primary" @click="addUnit">{{ $t('addUnit.save') }}</el-button> |
| ... | ... | @@ -119,17 +91,17 @@ export default { |
| 119 | 91 | async addUnit() { |
| 120 | 92 | const isValid = await this.validateForm() |
| 121 | 93 | if (!isValid) return |
| 122 | - | |
| 94 | + | |
| 123 | 95 | if (this.addUnitInfo.unitNum === '0') { |
| 124 | 96 | this.$message.warning(this.$t('addUnit.zeroUnitWarning')) |
| 125 | 97 | return |
| 126 | 98 | } |
| 127 | - | |
| 99 | + | |
| 128 | 100 | try { |
| 129 | 101 | await saveUnit(this.addUnitInfo) |
| 130 | 102 | this.$message.success(this.$t('addUnit.successMessage')) |
| 131 | - this.$emit('refresh-tree', { floorId: this.addUnitInfo.floorId }) | |
| 132 | - this.$emit('refresh-data', { floorId: this.addUnitInfo.floorId }) | |
| 103 | + this.$emit('handleRefreshTree', {}) | |
| 104 | + | |
| 133 | 105 | this.handleClose() |
| 134 | 106 | } catch (error) { |
| 135 | 107 | console.error('添加单元失败:', error) | ... | ... |
src/components/room/deleteFloor.vue
| 1 | 1 | <template> |
| 2 | - <el-dialog | |
| 3 | - :title="$t('room.deleteFloor.title')" | |
| 4 | - :visible.sync="visible" | |
| 5 | - width="30%" | |
| 6 | - :before-close="handleClose" | |
| 7 | - > | |
| 2 | + <el-dialog :title="$t('room.deleteFloor.title')" :visible.sync="visible" width="30%" :before-close="handleClose"> | |
| 8 | 3 | <p>{{ $t('room.deleteFloor.confirmMessage') }}</p> |
| 9 | 4 | <span slot="footer" class="dialog-footer"> |
| 10 | 5 | <el-button @click="handleClose">{{ $t('room.deleteFloor.cancelText') }}</el-button> |
| ... | ... | @@ -41,12 +36,12 @@ export default { |
| 41 | 36 | async handleDelete() { |
| 42 | 37 | try { |
| 43 | 38 | const response = await deleteFloor(this.floorInfo) |
| 44 | - | |
| 45 | - if (response.code === 0) { | |
| 39 | + | |
| 40 | + if (response.code == 0) { | |
| 46 | 41 | this.$message.success(this.$t('room.deleteFloor.deleteSuccess')) |
| 47 | 42 | this.handleClose() |
| 48 | - this.$emit('refresh-data') | |
| 49 | - this.$emit('refresh-tree') | |
| 43 | + this.$emit('handleRefreshTree', {}) | |
| 44 | + | |
| 50 | 45 | } else { |
| 51 | 46 | this.$message.error(response.msg || this.$t('room.deleteFloor.deleteFailed')) |
| 52 | 47 | } |
| ... | ... | @@ -54,10 +49,6 @@ export default { |
| 54 | 49 | this.$message.error(this.$t('room.deleteFloor.deleteError')) |
| 55 | 50 | } |
| 56 | 51 | }, |
| 57 | - getCommunityId() { | |
| 58 | - // 实际项目中替换为获取社区ID的逻辑 | |
| 59 | - return 'your-community-id' | |
| 60 | - } | |
| 61 | 52 | } |
| 62 | 53 | } |
| 63 | 54 | </script> |
| 64 | 55 | \ No newline at end of file | ... | ... |
src/components/room/deleteRoom.vue
| 1 | 1 | <template> |
| 2 | - <el-dialog | |
| 3 | - :title="$t('room.deleteRoom.title')" | |
| 4 | - :visible.sync="dialogVisible" | |
| 5 | - width="30%" | |
| 6 | - > | |
| 2 | + <el-dialog :title="$t('room.deleteRoom.title')" :visible.sync="dialogVisible" width="30%"> | |
| 7 | 3 | <div style="text-align: center"> |
| 8 | 4 | <p>{{ $t('room.deleteRoom.confirmMessage') }}</p> |
| 9 | 5 | </div> |
| 10 | 6 | <div slot="footer"> |
| 11 | 7 | <el-button @click="dialogVisible = false">{{ $t('common.cancel') }}</el-button> |
| 12 | - <el-button type="danger" @click="deleteRoom">{{ $t('common.confirmDelete') }}</el-button> | |
| 8 | + <el-button type="danger" @click="deleteRoom">{{ $t('common.confirm') }}</el-button> | |
| 13 | 9 | </div> |
| 14 | 10 | </el-dialog> |
| 15 | 11 | </template> |
| ... | ... | @@ -39,21 +35,18 @@ export default { |
| 39 | 35 | async deleteRoom() { |
| 40 | 36 | try { |
| 41 | 37 | this.roomInfo.communityId = this.getCommunityId() |
| 42 | - | |
| 38 | + | |
| 43 | 39 | await deleteRoom(this.roomInfo) |
| 44 | - | |
| 40 | + | |
| 45 | 41 | this.dialogVisible = false |
| 46 | - this.$emit('room-deleted') | |
| 47 | - this.$eventBus.$emit('room', 'loadData', { floorId: this.roomInfo.floorId }) | |
| 42 | + this.$emit('handleRefreshRoom') | |
| 43 | + | |
| 48 | 44 | this.$message.success(this.$t('common.deleteSuccess')) |
| 49 | 45 | } catch (error) { |
| 50 | 46 | console.error('删除房屋失败', error) |
| 51 | 47 | this.$message.error(error.message || this.$t('common.deleteFailed')) |
| 52 | 48 | } |
| 53 | 49 | }, |
| 54 | - getCommunityId() { | |
| 55 | - return this.$store.state.community.currentCommunity.communityId | |
| 56 | - } | |
| 57 | 50 | } |
| 58 | 51 | } |
| 59 | 52 | </script> |
| 60 | 53 | \ No newline at end of file | ... | ... |
src/components/room/deleteUnit.vue
| ... | ... | @@ -48,8 +48,8 @@ export default { |
| 48 | 48 | try { |
| 49 | 49 | await deleteUnit(param) |
| 50 | 50 | this.$message.success(this.$t('deleteUnit.successMessage')) |
| 51 | - this.$emit('refresh-tree', { floorId: this.deleteUnitInfo._currentFloorId }) | |
| 52 | - this.$emit('refresh-data', { floorId: this.deleteUnitInfo._currentFloorId }) | |
| 51 | + this.$emit('handleRefreshTree', {}) | |
| 52 | + | |
| 53 | 53 | this.handleClose() |
| 54 | 54 | } catch (error) { |
| 55 | 55 | console.error('删除单元失败:', error) | ... | ... |
src/components/room/editFloor.vue
| 1 | 1 | <template> |
| 2 | - <el-dialog | |
| 3 | - :title="$t('room.editFloor.title')" | |
| 4 | - :visible.sync="visible" | |
| 5 | - width="50%" | |
| 6 | - :before-close="handleClose" | |
| 7 | - > | |
| 2 | + <el-dialog :title="$t('room.editFloor.title')" :visible.sync="visible" width="50%" :before-close="handleClose"> | |
| 8 | 3 | <el-form ref="form" :model="form" :rules="rules" label-width="120px"> |
| 9 | 4 | <el-form-item :label="$t('room.editFloor.floorNum')" prop="floorNum"> |
| 10 | 5 | <el-input v-model="form.floorNum" :placeholder="$t('room.editFloor.floorNumPlaceholder')" /> |
| 11 | 6 | </el-form-item> |
| 12 | - | |
| 7 | + | |
| 13 | 8 | <el-form-item :label="$t('room.editFloor.floorName')" prop="floorName"> |
| 14 | 9 | <el-input v-model="form.floorName" :placeholder="$t('room.editFloor.floorNamePlaceholder')" /> |
| 15 | 10 | </el-form-item> |
| 16 | - | |
| 11 | + | |
| 17 | 12 | <el-form-item :label="$t('room.editFloor.floorArea')" prop="floorArea"> |
| 18 | 13 | <el-input v-model="form.floorArea" :placeholder="$t('room.editFloor.floorAreaPlaceholder')"> |
| 19 | 14 | <template slot="append">m²</template> |
| 20 | 15 | </el-input> |
| 21 | 16 | </el-form-item> |
| 22 | - | |
| 23 | - <el-form-item :label="$t('room.editFloor.seq')" prop="seq"> | |
| 17 | + | |
| 18 | + <el-form-item :label="$t('room.editFloor.seq')" class="text-left" prop="seq"> | |
| 24 | 19 | <el-input-number v-model="form.seq" :min="1" /> |
| 25 | 20 | </el-form-item> |
| 26 | - | |
| 21 | + | |
| 27 | 22 | <el-form-item :label="$t('room.editFloor.remark')" prop="remark"> |
| 28 | 23 | <el-input v-model="form.remark" type="textarea" :placeholder="$t('room.editFloor.remarkPlaceholder')" /> |
| 29 | 24 | </el-form-item> |
| 30 | - | |
| 25 | + | |
| 31 | 26 | <el-alert v-if="errorInfo" :title="errorInfo" type="error" show-icon /> |
| 32 | 27 | </el-form> |
| 33 | - | |
| 28 | + | |
| 34 | 29 | <span slot="footer" class="dialog-footer"> |
| 35 | 30 | <el-button @click="handleClose">{{ $t('common.cancel') }}</el-button> |
| 36 | 31 | <el-button type="primary" @click="handleUpdate">{{ $t('common.update') }}</el-button> |
| ... | ... | @@ -107,20 +102,20 @@ export default { |
| 107 | 102 | async handleUpdate() { |
| 108 | 103 | this.$refs.form.validate(async (valid) => { |
| 109 | 104 | if (!valid) return |
| 110 | - | |
| 105 | + | |
| 111 | 106 | try { |
| 112 | 107 | const payload = { |
| 113 | 108 | ...this.form, |
| 114 | 109 | name: this.form.floorName |
| 115 | 110 | } |
| 116 | - | |
| 111 | + | |
| 117 | 112 | const response = await editFloor(payload) |
| 118 | - | |
| 119 | - if (response.code === 0) { | |
| 113 | + | |
| 114 | + if (response.code == 0) { | |
| 120 | 115 | this.$message.success(this.$t('room.editFloor.updateSuccess')) |
| 121 | 116 | this.handleClose() |
| 122 | - this.$emit('refresh-data') | |
| 123 | - this.$emit('refresh-tree', { floorId: this.form.floorId }) | |
| 117 | + this.$emit('handleRefreshTree', {}) | |
| 118 | + | |
| 124 | 119 | } else { |
| 125 | 120 | this.errorInfo = response.msg || this.$t('room.editFloor.updateFailed') |
| 126 | 121 | } |
| ... | ... | @@ -129,10 +124,6 @@ export default { |
| 129 | 124 | } |
| 130 | 125 | }) |
| 131 | 126 | }, |
| 132 | - getCommunityId() { | |
| 133 | - // 实际项目中替换为获取社区ID的逻辑 | |
| 134 | - return 'your-community-id' | |
| 135 | - } | |
| 136 | 127 | } |
| 137 | 128 | } |
| 138 | 129 | </script> |
| 139 | 130 | \ No newline at end of file | ... | ... |
src/components/room/editRoom.vue
| 1 | 1 | <template> |
| 2 | - <el-dialog | |
| 3 | - :title="$t('room.editRoom.title')" | |
| 4 | - :visible.sync="dialogVisible" | |
| 5 | - width="50%" | |
| 6 | - > | |
| 2 | + <el-dialog :title="$t('room.editRoom.title')" :visible.sync="dialogVisible" width="50%"> | |
| 7 | 3 | <el-form :model="form" label-width="120px" label-position="right"> |
| 8 | 4 | <el-row> |
| 9 | 5 | <el-col :span="12"> |
| ... | ... | @@ -17,65 +13,47 @@ |
| 17 | 13 | </el-form-item> |
| 18 | 14 | </el-col> |
| 19 | 15 | </el-row> |
| 20 | - | |
| 16 | + | |
| 21 | 17 | <el-row> |
| 22 | 18 | <el-col :span="12"> |
| 23 | 19 | <el-form-item :label="$t('room.editRoom.unit')" required> |
| 24 | - <el-select v-model="form.unitId" :placeholder="$t('room.editRoom.placeholder.unit')"> | |
| 25 | - <el-option | |
| 26 | - v-for="unit in units" | |
| 27 | - :key="unit.unitId" | |
| 28 | - :label="`${unit.unitNum}${$t('room.editRoom.unit')}`" | |
| 29 | - :value="unit.unitId" | |
| 30 | - /> | |
| 20 | + <el-select v-model="form.unitId" :placeholder="$t('room.editRoom.placeholder.unit')" style="width: 100%;"> | |
| 21 | + <el-option v-for="unit in units" :key="unit.unitId" :label="`${unit.unitNum}${$t('room.editRoom.unit')}`" | |
| 22 | + :value="unit.unitId" /> | |
| 31 | 23 | </el-select> |
| 32 | 24 | </el-form-item> |
| 33 | 25 | </el-col> |
| 34 | 26 | <el-col :span="12"> |
| 35 | 27 | <el-form-item :label="$t('room.editRoom.roomType')" required> |
| 36 | - <el-select v-model="form.roomSubType" :placeholder="$t('room.editRoom.placeholder.roomType')"> | |
| 37 | - <el-option | |
| 38 | - v-for="item in roomSubTypes" | |
| 39 | - :key="item.statusCd" | |
| 40 | - :label="item.name" | |
| 41 | - :value="item.statusCd" | |
| 42 | - /> | |
| 28 | + <el-select v-model="form.roomSubType" :placeholder="$t('room.editRoom.placeholder.roomType')" style="width: 100%;"> | |
| 29 | + <el-option v-for="item in roomSubTypes" :key="item.statusCd" :label="item.name" :value="item.statusCd" /> | |
| 43 | 30 | </el-select> |
| 44 | 31 | </el-form-item> |
| 45 | 32 | </el-col> |
| 46 | 33 | </el-row> |
| 47 | - | |
| 34 | + | |
| 48 | 35 | <el-row> |
| 49 | 36 | <el-col :span="12"> |
| 50 | 37 | <el-form-item :label="$t('room.editRoom.apartment1')" required> |
| 51 | - <el-select v-model="form.apartment1" :placeholder="$t('room.editRoom.placeholder.apartment')"> | |
| 52 | - <el-option | |
| 53 | - v-for="item in apartment1Options" | |
| 54 | - :key="item.value" | |
| 55 | - :label="item.label" | |
| 56 | - :value="item.value" | |
| 57 | - /> | |
| 38 | + <el-select v-model="form.apartment1" :placeholder="$t('room.editRoom.placeholder.apartment')" style="width: 100%;"> | |
| 39 | + <el-option v-for="item in apartment1Options" :key="item.value" :label="item.label" :value="item.value" /> | |
| 58 | 40 | </el-select> |
| 59 | 41 | </el-form-item> |
| 60 | 42 | </el-col> |
| 61 | 43 | <el-col :span="12"> |
| 62 | 44 | <el-form-item :label="$t('room.editRoom.apartment2')" required> |
| 63 | - <el-select v-model="form.apartment2" :placeholder="$t('room.editRoom.placeholder.apartment')"> | |
| 64 | - <el-option | |
| 65 | - v-for="item in apartment2Options" | |
| 66 | - :key="item.value" | |
| 67 | - :label="item.label" | |
| 68 | - :value="item.value" | |
| 69 | - /> | |
| 45 | + <el-select v-model="form.apartment2" :placeholder="$t('room.editRoom.placeholder.apartment')" style="width: 100%;"> | |
| 46 | + <el-option v-for="item in apartment2Options" :key="item.value" :label="item.label" :value="item.value" /> | |
| 70 | 47 | </el-select> |
| 71 | 48 | </el-form-item> |
| 72 | 49 | </el-col> |
| 73 | 50 | </el-row> |
| 74 | - | |
| 51 | + | |
| 75 | 52 | <el-row> |
| 76 | 53 | <el-col :span="12"> |
| 77 | 54 | <el-form-item :label="$t('room.editRoom.builtUpArea')" required> |
| 78 | - <el-input v-model="form.builtUpArea" type="number" :placeholder="$t('room.editRoom.placeholder.builtUpArea')" /> | |
| 55 | + <el-input v-model="form.builtUpArea" type="number" | |
| 56 | + :placeholder="$t('room.editRoom.placeholder.builtUpArea')" /> | |
| 79 | 57 | </el-form-item> |
| 80 | 58 | </el-col> |
| 81 | 59 | <el-col :span="12"> |
| ... | ... | @@ -84,7 +62,7 @@ |
| 84 | 62 | </el-form-item> |
| 85 | 63 | </el-col> |
| 86 | 64 | </el-row> |
| 87 | - | |
| 65 | + | |
| 88 | 66 | <el-row> |
| 89 | 67 | <el-col :span="12"> |
| 90 | 68 | <el-form-item :label="$t('room.editRoom.feeCoefficient')"> |
| ... | ... | @@ -97,64 +75,37 @@ |
| 97 | 75 | </el-form-item> |
| 98 | 76 | </el-col> |
| 99 | 77 | </el-row> |
| 100 | - | |
| 78 | + | |
| 101 | 79 | <el-row v-if="form.state !== '2002'"> |
| 102 | 80 | <el-col :span="12"> |
| 103 | 81 | <el-form-item :label="$t('room.editRoom.roomState')" required> |
| 104 | - <el-select v-model="form.state" :placeholder="$t('room.editRoom.placeholder.roomState')"> | |
| 105 | - <el-option | |
| 106 | - v-for="item in roomStateOptions" | |
| 107 | - :key="item.value" | |
| 108 | - :label="item.label" | |
| 109 | - :value="item.value" | |
| 110 | - /> | |
| 82 | + <el-select v-model="form.state" :placeholder="$t('room.editRoom.placeholder.roomState')" style="width: 100%;"> | |
| 83 | + <el-option v-for="item in roomStateOptions" :key="item.value" :label="item.label" :value="item.value" /> | |
| 111 | 84 | </el-select> |
| 112 | 85 | </el-form-item> |
| 113 | 86 | </el-col> |
| 114 | 87 | <el-col :span="12"> |
| 115 | 88 | <el-form-item :label="$t('room.editRoom.endTime')" required> |
| 116 | - <el-date-picker | |
| 117 | - v-model="form.endTime" | |
| 118 | - type="date" | |
| 119 | - :placeholder="$t('room.editRoom.placeholder.endTime')" | |
| 120 | - value-format="yyyy-MM-dd" | |
| 121 | - /> | |
| 89 | + <el-date-picker v-model="form.endTime" type="date" :placeholder="$t('room.editRoom.placeholder.endTime')" style="width: 100%;" | |
| 90 | + value-format="yyyy-MM-dd" /> | |
| 122 | 91 | </el-form-item> |
| 123 | 92 | </el-col> |
| 124 | 93 | </el-row> |
| 125 | - | |
| 94 | + | |
| 126 | 95 | <div v-for="(item, index) in form.attrs" :key="index"> |
| 127 | 96 | <el-form-item :label="item.specName"> |
| 128 | - <el-input | |
| 129 | - v-if="item.specType === '2233'" | |
| 130 | - v-model="item.value" | |
| 131 | - :placeholder="item.specHoldplace" | |
| 132 | - /> | |
| 133 | - <el-select | |
| 134 | - v-else-if="item.specType === '3344'" | |
| 135 | - v-model="item.value" | |
| 136 | - :placeholder="item.specHoldplace" | |
| 137 | - > | |
| 138 | - <el-option | |
| 139 | - v-for="value in item.values" | |
| 140 | - :key="value.value" | |
| 141 | - :label="value.valueName" | |
| 142 | - :value="value.value" | |
| 143 | - /> | |
| 97 | + <el-input v-if="item.specType === '2233'" v-model="item.value" :placeholder="item.specHoldplace" /> | |
| 98 | + <el-select v-else-if="item.specType === '3344'" v-model="item.value" :placeholder="item.specHoldplace"> | |
| 99 | + <el-option v-for="value in item.values" :key="value.value" :label="value.valueName" :value="value.value" /> | |
| 144 | 100 | </el-select> |
| 145 | 101 | </el-form-item> |
| 146 | 102 | </div> |
| 147 | - | |
| 103 | + | |
| 148 | 104 | <el-form-item :label="$t('room.editRoom.remark')"> |
| 149 | - <el-input | |
| 150 | - v-model="form.remark" | |
| 151 | - type="textarea" | |
| 152 | - :placeholder="$t('room.editRoom.placeholder.remark')" | |
| 153 | - :rows="3" | |
| 154 | - /> | |
| 105 | + <el-input v-model="form.remark" type="textarea" :placeholder="$t('room.editRoom.placeholder.remark')" :rows="3" /> | |
| 155 | 106 | </el-form-item> |
| 156 | 107 | </el-form> |
| 157 | - | |
| 108 | + | |
| 158 | 109 | <div slot="footer"> |
| 159 | 110 | <el-button @click="dialogVisible = false">{{ $t('common.cancel') }}</el-button> |
| 160 | 111 | <el-button type="primary" @click="editRoom">{{ $t('common.save') }}</el-button> |
| ... | ... | @@ -223,24 +174,22 @@ export default { |
| 223 | 174 | }, |
| 224 | 175 | created() { |
| 225 | 176 | this.loadRoomAttrSpec() |
| 226 | - this.$eventBus.$on('editRoom', this.open) | |
| 227 | 177 | }, |
| 228 | 178 | beforeDestroy() { |
| 229 | - this.$eventBus.$off('editRoom', this.open) | |
| 230 | 179 | }, |
| 231 | 180 | methods: { |
| 232 | 181 | async open(room) { |
| 233 | 182 | this.resetForm() |
| 234 | 183 | this.form = { ...this.form, ...room } |
| 235 | - | |
| 184 | + | |
| 236 | 185 | try { |
| 237 | 186 | // 加载房屋类型字典 |
| 238 | 187 | const data = await getDict('building_room', 'room_sub_type') |
| 239 | 188 | this.roomSubTypes = data |
| 240 | - | |
| 189 | + | |
| 241 | 190 | // 加载单元列表 |
| 242 | 191 | await this.loadUnits(room.floorId) |
| 243 | - | |
| 192 | + | |
| 244 | 193 | this.dialogVisible = true |
| 245 | 194 | } catch (error) { |
| 246 | 195 | console.error('打开编辑房屋失败', error) |
| ... | ... | @@ -270,13 +219,11 @@ export default { |
| 270 | 219 | try { |
| 271 | 220 | this.form.apartment = this.form.apartment1 + this.form.apartment2 |
| 272 | 221 | this.form.communityId = this.getCommunityId() |
| 273 | - | |
| 222 | + | |
| 274 | 223 | await updateRoom(this.form) |
| 275 | - | |
| 224 | + | |
| 276 | 225 | this.dialogVisible = false |
| 277 | - this.$emit('room-updated') | |
| 278 | - this.$eventBus.$emit('room', 'loadData', { floorId: this.form.floorId }) | |
| 279 | - this.$message.success(this.$t('common.updateSuccess')) | |
| 226 | + this.$emit('handleRefreshRoom') | |
| 280 | 227 | } catch (error) { |
| 281 | 228 | console.error('更新房屋失败', error) |
| 282 | 229 | this.$message.error(error.message || this.$t('common.updateFailed')) |
| ... | ... | @@ -303,9 +250,6 @@ export default { |
| 303 | 250 | endTime: '' |
| 304 | 251 | } |
| 305 | 252 | }, |
| 306 | - getCommunityId() { | |
| 307 | - return this.$store.state.community.currentCommunity.communityId | |
| 308 | - } | |
| 309 | 253 | } |
| 310 | 254 | } |
| 311 | 255 | </script> |
| 312 | 256 | \ No newline at end of file | ... | ... |
src/components/room/editUnit.vue
| ... | ... | @@ -110,8 +110,8 @@ export default { |
| 110 | 110 | try { |
| 111 | 111 | await updateUnit(this.editUnitInfo) |
| 112 | 112 | this.$message.success(this.$t('editUnit.successMessage')) |
| 113 | - this.$emit('refresh-tree', { floorId: this.editUnitInfo.floorId }) | |
| 114 | - this.$emit('refresh-data', { floorId: this.editUnitInfo.floorId }) | |
| 113 | + this.$emit('handleRefreshTree', {}) | |
| 114 | + | |
| 115 | 115 | this.handleClose() |
| 116 | 116 | } catch (error) { |
| 117 | 117 | console.error('修改单元失败:', error) | ... | ... |
src/components/room/floorUnitTree.vue
| ... | ... | @@ -5,7 +5,6 @@ |
| 5 | 5 | :data="treeData" |
| 6 | 6 | :props="defaultProps" |
| 7 | 7 | node-key="id" |
| 8 | - default-expand-all | |
| 9 | 8 | :expand-on-click-node="false" |
| 10 | 9 | @node-click="handleNodeClick" |
| 11 | 10 | > |
| ... | ... | @@ -35,19 +34,20 @@ export default { |
| 35 | 34 | treeData: [], |
| 36 | 35 | defaultProps: { |
| 37 | 36 | children: 'children', |
| 38 | - label: 'text' | |
| 37 | + label: 'text', | |
| 39 | 38 | }, |
| 40 | 39 | currentFloorId: '' |
| 41 | 40 | } |
| 42 | 41 | }, |
| 43 | 42 | mounted() { |
| 44 | 43 | this.loadData() |
| 45 | - this.$eventBus.$on('floorUnitTree', this.handleRefreshTree) | |
| 46 | 44 | }, |
| 47 | 45 | beforeDestroy() { |
| 48 | - this.$eventBus.$off('floorUnitTree', this.handleRefreshTree) | |
| 49 | 46 | }, |
| 50 | 47 | methods: { |
| 48 | + refreshTree(param) { | |
| 49 | + this.handleRefreshTree(param) | |
| 50 | + }, | |
| 51 | 51 | handleRefreshTree(param) { |
| 52 | 52 | if (param) { |
| 53 | 53 | this.currentFloorId = param.floorId |
| ... | ... | @@ -94,11 +94,9 @@ export default { |
| 94 | 94 | }, |
| 95 | 95 | handleNodeClick(data) { |
| 96 | 96 | if (data.id.startsWith('f_')) { |
| 97 | - this.$emit('switchFloor', { floorId: data.floorId }) | |
| 98 | - this.$eventBus.$emit(this.callBackListener, 'switchFloor', { floorId: data.floorId }) | |
| 97 | + this.$emit('switchFloorUnit', { floorId: data.floorId,unitId: '' }) | |
| 99 | 98 | } else { |
| 100 | - this.$emit('switchUnit', { unitId: data.unitId }) | |
| 101 | - this.$eventBus.$emit(this.callBackListener, 'switchUnit', { unitId: data.unitId }) | |
| 99 | + this.$emit('switchFloorUnit', { floorId:'',unitId: data.unitId }) | |
| 102 | 100 | } |
| 103 | 101 | }, |
| 104 | 102 | } |
| ... | ... | @@ -118,4 +116,10 @@ export default { |
| 118 | 116 | padding: 20px; |
| 119 | 117 | color: #909399; |
| 120 | 118 | } |
| 119 | +.custom-tree-node { | |
| 120 | + white-space: nowrap; | |
| 121 | + overflow: hidden; | |
| 122 | + text-overflow: ellipsis; | |
| 123 | + max-width: 200px; /* 根据你的布局调整 */ | |
| 124 | +} | |
| 121 | 125 | </style> |
| 122 | 126 | \ No newline at end of file | ... | ... |
src/components/room/importOwnerRoom.vue
| 1 | 1 | <template> |
| 2 | - <el-dialog | |
| 3 | - :title="$t('room.importOwnerRoom.title')" | |
| 4 | - :visible.sync="visible" | |
| 5 | - width="50%" | |
| 6 | - :before-close="handleClose" | |
| 7 | - > | |
| 8 | - <el-form ref="form" :model="form" label-width="120px"> | |
| 2 | + <el-dialog :title="$t('room.importOwnerRoom.title')" :visible.sync="visible" width="40%" :before-close="handleClose"> | |
| 3 | + <el-form ref="form" :model="form" label-width="120px" class="text-left"> | |
| 9 | 4 | <el-form-item :label="$t('room.importOwnerRoom.selectFile')"> |
| 10 | - <el-upload | |
| 11 | - ref="upload" | |
| 12 | - action="" | |
| 13 | - :auto-upload="false" | |
| 14 | - :on-change="handleFileChange" | |
| 15 | - accept=".xls,.xlsx" | |
| 16 | - > | |
| 5 | + <el-upload ref="upload" action="" :auto-upload="false" :on-change="handleFileChange" accept=".xls,.xlsx" class="margin-left"> | |
| 17 | 6 | <el-button size="small" type="primary">{{ $t('room.importOwnerRoom.clickUpload') }}</el-button> |
| 18 | 7 | <div slot="tip" class="el-upload__tip"> |
| 19 | 8 | {{ fileName || $t('room.importOwnerRoom.requiredFile') }} |
| 20 | 9 | </div> |
| 21 | 10 | </el-upload> |
| 22 | 11 | </el-form-item> |
| 23 | - | |
| 12 | + | |
| 24 | 13 | <el-form-item :label="$t('room.importOwnerRoom.downloadTemplate')"> |
| 25 | - <span>{{ $t('room.importOwnerRoom.downloadFirst') }}</span> | |
| 14 | + <span class="margin-left">{{ $t('room.importOwnerRoom.downloadFirst') }}</span> | |
| 26 | 15 | <el-link type="primary" :href="templateUrl" target="_blank"> |
| 27 | 16 | {{ $t('room.importOwnerRoom.propertyTemplate') }} |
| 28 | 17 | </el-link> |
| 29 | 18 | <span>{{ $t('room.importOwnerRoom.prepareData') }}</span> |
| 30 | 19 | </el-form-item> |
| 31 | 20 | </el-form> |
| 32 | - | |
| 21 | + | |
| 33 | 22 | <span slot="footer" class="dialog-footer"> |
| 34 | 23 | <el-button @click="handleClose">{{ $t('common.cancel') }}</el-button> |
| 35 | 24 | <el-button type="primary" @click="handleImport">{{ $t('common.import') }}</el-button> |
| ... | ... | @@ -78,31 +67,31 @@ export default { |
| 78 | 67 | this.$message.error(this.$t('room.importOwnerRoom.fileRequired')) |
| 79 | 68 | return false |
| 80 | 69 | } |
| 81 | - | |
| 70 | + | |
| 82 | 71 | const fileType = this.fileName.split('.').pop().toLowerCase() |
| 83 | 72 | if (!['xls', 'xlsx'].includes(fileType)) { |
| 84 | 73 | this.$message.error(this.$t('room.importOwnerRoom.invalidFormat')) |
| 85 | 74 | return false |
| 86 | 75 | } |
| 87 | - | |
| 76 | + | |
| 88 | 77 | if (this.form.file.size > 2 * 1024 * 1024) { |
| 89 | 78 | this.$message.error(this.$t('room.importOwnerRoom.fileSizeExceeded')) |
| 90 | 79 | return false |
| 91 | 80 | } |
| 92 | - | |
| 81 | + | |
| 93 | 82 | return true |
| 94 | 83 | }, |
| 95 | 84 | async handleImport() { |
| 96 | 85 | if (!this.validate()) return |
| 97 | - | |
| 86 | + | |
| 98 | 87 | try { |
| 99 | 88 | const formData = new FormData() |
| 100 | 89 | formData.append('uploadFile', this.form.file) |
| 101 | 90 | formData.append('communityId', this.form.communityId) |
| 102 | 91 | formData.append('importAdapt', 'importRoomOwner') |
| 103 | - | |
| 92 | + | |
| 104 | 93 | const response = await importOwnerRoom(formData) |
| 105 | - | |
| 94 | + | |
| 106 | 95 | if (response.code === 0) { |
| 107 | 96 | this.$message.success(this.$t('room.importOwnerRoom.importSuccess')) |
| 108 | 97 | this.handleClose() |
| ... | ... | @@ -120,10 +109,6 @@ export default { |
| 120 | 109 | this.$message.error(this.$t('room.importOwnerRoom.importError')) |
| 121 | 110 | } |
| 122 | 111 | }, |
| 123 | - getCommunityId() { | |
| 124 | - // 实际项目中替换为获取社区ID的逻辑 | |
| 125 | - return 'your-community-id' | |
| 126 | - } | |
| 127 | 112 | } |
| 128 | 113 | } |
| 129 | 114 | </script> |
| 130 | 115 | \ No newline at end of file | ... | ... |
src/components/room/roomContracts.vue
| 1 | 1 | <template> |
| 2 | - <el-dialog | |
| 3 | - :visible.sync="visible" | |
| 4 | - :title="$t('roomContracts.title')" | |
| 5 | - width="90%" | |
| 6 | - top="5vh" | |
| 7 | - custom-class="custom-modal" | |
| 8 | - @close="handleClose" | |
| 9 | - > | |
| 10 | - <el-table | |
| 11 | - :data="roomContractsInfo.contracts" | |
| 12 | - stripe | |
| 13 | - border | |
| 14 | - style="width: 100%; margin-top: 15px" | |
| 15 | - > | |
| 16 | - <el-table-column | |
| 17 | - prop="contractName" | |
| 18 | - :label="$t('roomContracts.contractName')" | |
| 19 | - align="center" | |
| 20 | - /> | |
| 21 | - <el-table-column | |
| 22 | - prop="contractCode" | |
| 23 | - :label="$t('roomContracts.contractCode')" | |
| 24 | - align="center" | |
| 25 | - /> | |
| 26 | - <el-table-column | |
| 27 | - prop="parentContractCode" | |
| 28 | - :label="$t('roomContracts.parentContractCode')" | |
| 29 | - align="center" | |
| 30 | - > | |
| 2 | + <el-dialog :visible.sync="visible" :title="$t('roomContracts.title')" width="90%" top="5vh" custom-class="custom-modal" | |
| 3 | + @close="handleClose"> | |
| 4 | + <el-table :data="roomContractsInfo.contracts" stripe border style="width: 100%; margin-top: 15px"> | |
| 5 | + <el-table-column prop="contractName" :label="$t('roomContracts.contractName')" align="center" /> | |
| 6 | + <el-table-column prop="contractCode" :label="$t('roomContracts.contractCode')" align="center" /> | |
| 7 | + <el-table-column prop="parentContractCode" :label="$t('roomContracts.parentContractCode')" align="center"> | |
| 31 | 8 | <template slot-scope="scope"> |
| 32 | 9 | {{ scope.row.parentContractCode || '-' }} |
| 33 | 10 | </template> |
| 34 | 11 | </el-table-column> |
| 35 | - <el-table-column | |
| 36 | - prop="contractTypeName" | |
| 37 | - :label="$t('roomContracts.contractType')" | |
| 38 | - align="center" | |
| 39 | - /> | |
| 40 | - <el-table-column | |
| 41 | - prop="operator" | |
| 42 | - :label="$t('roomContracts.operator')" | |
| 43 | - align="center" | |
| 44 | - /> | |
| 45 | - <el-table-column | |
| 46 | - prop="amount" | |
| 47 | - :label="$t('roomContracts.amount')" | |
| 48 | - align="center" | |
| 49 | - /> | |
| 50 | - <el-table-column | |
| 51 | - prop="startTime" | |
| 52 | - :label="$t('roomContracts.startTime')" | |
| 53 | - align="center" | |
| 54 | - /> | |
| 55 | - <el-table-column | |
| 56 | - prop="endTime" | |
| 57 | - :label="$t('roomContracts.endTime')" | |
| 58 | - align="center" | |
| 59 | - /> | |
| 60 | - <el-table-column | |
| 61 | - prop="createTime" | |
| 62 | - :label="$t('roomContracts.createTime')" | |
| 63 | - align="center" | |
| 64 | - /> | |
| 65 | - <el-table-column | |
| 66 | - prop="stateName" | |
| 67 | - :label="$t('roomContracts.state')" | |
| 68 | - align="center" | |
| 69 | - /> | |
| 12 | + <el-table-column prop="contractTypeName" :label="$t('roomContracts.contractType')" align="center" /> | |
| 13 | + <el-table-column prop="operator" :label="$t('roomContracts.operator')" align="center" /> | |
| 14 | + <el-table-column prop="amount" :label="$t('roomContracts.amount')" align="center" /> | |
| 15 | + <el-table-column prop="startTime" :label="$t('roomContracts.startTime')" align="center" /> | |
| 16 | + <el-table-column prop="endTime" :label="$t('roomContracts.endTime')" align="center" /> | |
| 17 | + <el-table-column prop="createTime" :label="$t('roomContracts.createTime')" align="center" /> | |
| 18 | + <el-table-column prop="stateName" :label="$t('roomContracts.state')" align="center" /> | |
| 70 | 19 | </el-table> |
| 71 | - | |
| 72 | - <el-pagination | |
| 73 | - v-if="pagination.total > 0" | |
| 74 | - background | |
| 75 | - layout="prev, pager, next" | |
| 76 | - :total="pagination.total" | |
| 77 | - :page-size="pagination.pageSize" | |
| 78 | - :current-page="pagination.currentPage" | |
| 79 | - @current-change="handlePageChange" | |
| 80 | - style="margin-top: 20px; text-align: right" | |
| 81 | - /> | |
| 20 | + | |
| 21 | + <el-pagination v-if="pagination.total > 0" background layout="prev, pager, next" :total="pagination.total" | |
| 22 | + :page-size="pagination.pageSize" :current-page="pagination.currentPage" @current-change="handlePageChange" | |
| 23 | + style="margin-top: 20px; text-align: right" /> | |
| 82 | 24 | </el-dialog> |
| 83 | 25 | </template> |
| 84 | 26 | |
| ... | ... | @@ -125,11 +67,11 @@ export default { |
| 125 | 67 | communityId: this.getCommunityId(), |
| 126 | 68 | objId: this.roomContractsInfo.ownerId |
| 127 | 69 | } |
| 128 | - | |
| 70 | + | |
| 129 | 71 | if (this.roomContractsInfo.roomId) { |
| 130 | 72 | params.roomId = this.roomContractsInfo.roomId |
| 131 | 73 | } |
| 132 | - | |
| 74 | + | |
| 133 | 75 | const response = await getRoomContracts(params, this.roomContractsInfo.roomId) |
| 134 | 76 | this.roomContractsInfo.contracts = response.data |
| 135 | 77 | this.pagination.total = response.records |
| ... | ... | @@ -138,15 +80,13 @@ export default { |
| 138 | 80 | this.$message.error(this.$t('common.loadFailed')) |
| 139 | 81 | } |
| 140 | 82 | }, |
| 141 | - getCommunityId() { | |
| 142 | - return this.$store.state.user.currentCommunity.communityId | |
| 143 | - } | |
| 83 | + | |
| 144 | 84 | } |
| 145 | 85 | } |
| 146 | 86 | </script> |
| 147 | 87 | |
| 148 | 88 | <style scoped> |
| 149 | -.custom-modal >>> .el-dialog__body { | |
| 89 | +.custom-modal>>>.el-dialog__body { | |
| 150 | 90 | padding: 15px 20px; |
| 151 | 91 | } |
| 152 | 92 | </style> |
| 153 | 93 | \ No newline at end of file | ... | ... |
src/components/room/roomOweFees.vue
| 1 | 1 | <template> |
| 2 | - <el-dialog | |
| 3 | - :visible.sync="visible" | |
| 4 | - :title="$t('roomOweFees.title')" | |
| 5 | - width="80%" | |
| 6 | - top="5vh" | |
| 7 | - custom-class="custom-modal" | |
| 8 | - @close="handleClose" | |
| 9 | - > | |
| 10 | - <el-table | |
| 11 | - :data="roomOweFeesInfo.fees" | |
| 12 | - stripe | |
| 13 | - border | |
| 14 | - style="width: 100%; margin-top: 15px" | |
| 15 | - > | |
| 16 | - <el-table-column | |
| 17 | - prop="payerObjName" | |
| 18 | - :label="$t('roomOweFees.payerObj')" | |
| 19 | - align="center" | |
| 20 | - /> | |
| 21 | - <el-table-column | |
| 22 | - prop="ownerName" | |
| 23 | - :label="$t('roomOweFees.ownerName')" | |
| 24 | - align="center" | |
| 25 | - /> | |
| 26 | - <el-table-column | |
| 27 | - prop="ownerTel" | |
| 28 | - :label="$t('roomOweFees.phone')" | |
| 29 | - align="center" | |
| 30 | - /> | |
| 31 | - <el-table-column | |
| 32 | - prop="endTime" | |
| 33 | - :label="$t('roomOweFees.startTime')" | |
| 34 | - align="center" | |
| 35 | - /> | |
| 36 | - <el-table-column | |
| 37 | - prop="deadlineTime" | |
| 38 | - :label="$t('roomOweFees.endTime')" | |
| 39 | - align="center" | |
| 40 | - /> | |
| 41 | - <el-table-column | |
| 42 | - prop="amountOwed" | |
| 43 | - :label="`${$t('roomOweFees.total')} (${$t('roomOweFees.unit')})`" | |
| 44 | - align="center" | |
| 45 | - /> | |
| 46 | - <el-table-column | |
| 47 | - prop="updateTime" | |
| 48 | - :label="$t('roomOweFees.updateTime')" | |
| 49 | - align="center" | |
| 50 | - /> | |
| 2 | + <el-dialog :visible.sync="visible" :title="$t('roomOweFees.title')" width="80%" top="5vh" custom-class="custom-modal" | |
| 3 | + @close="handleClose"> | |
| 4 | + <el-table :data="roomOweFeesInfo.fees" stripe border style="width: 100%; margin-top: 15px"> | |
| 5 | + <el-table-column prop="payerObjName" :label="$t('roomOweFees.payerObj')" align="center" /> | |
| 6 | + <el-table-column prop="ownerName" :label="$t('roomOweFees.ownerName')" align="center" /> | |
| 7 | + <el-table-column prop="ownerTel" :label="$t('roomOweFees.phone')" align="center" /> | |
| 8 | + <el-table-column prop="endTime" :label="$t('roomOweFees.startTime')" align="center" /> | |
| 9 | + <el-table-column prop="deadlineTime" :label="$t('roomOweFees.endTime')" align="center" /> | |
| 10 | + <el-table-column prop="amountOwed" :label="`${$t('roomOweFees.total')} (${$t('roomOweFees.unit')})`" | |
| 11 | + align="center" /> | |
| 12 | + <el-table-column prop="updateTime" :label="$t('roomOweFees.updateTime')" align="center" /> | |
| 51 | 13 | </el-table> |
| 52 | - | |
| 53 | - <el-pagination | |
| 54 | - v-if="pagination.total > 0" | |
| 55 | - background | |
| 56 | - layout="prev, pager, next" | |
| 57 | - :total="pagination.total" | |
| 58 | - :page-size="pagination.pageSize" | |
| 59 | - :current-page="pagination.currentPage" | |
| 60 | - @current-change="handlePageChange" | |
| 61 | - style="margin-top: 20px; text-align: right" | |
| 62 | - /> | |
| 14 | + | |
| 15 | + <el-pagination v-if="pagination.total > 0" background layout="prev, pager, next" :total="pagination.total" | |
| 16 | + :page-size="pagination.pageSize" :current-page="pagination.currentPage" @current-change="handlePageChange" | |
| 17 | + style="margin-top: 20px; text-align: right" /> | |
| 63 | 18 | </el-dialog> |
| 64 | 19 | </template> |
| 65 | 20 | |
| ... | ... | @@ -105,7 +60,7 @@ export default { |
| 105 | 60 | payerObjId: this.roomOweFeesInfo.roomId, |
| 106 | 61 | payerObjType: '3333' |
| 107 | 62 | } |
| 108 | - | |
| 63 | + | |
| 109 | 64 | const response = await getRoomOweFees(params) |
| 110 | 65 | this.roomOweFeesInfo.fees = response.data |
| 111 | 66 | this.pagination.total = response.records |
| ... | ... | @@ -114,15 +69,13 @@ export default { |
| 114 | 69 | this.$message.error(this.$t('common.loadFailed')) |
| 115 | 70 | } |
| 116 | 71 | }, |
| 117 | - getCommunityId() { | |
| 118 | - return this.$store.state.user.currentCommunity.communityId | |
| 119 | - } | |
| 72 | + | |
| 120 | 73 | } |
| 121 | 74 | } |
| 122 | 75 | </script> |
| 123 | 76 | |
| 124 | 77 | <style scoped> |
| 125 | -.custom-modal >>> .el-dialog__body { | |
| 78 | +.custom-modal>>>.el-dialog__body { | |
| 126 | 79 | padding: 15px 20px; |
| 127 | 80 | } |
| 128 | 81 | </style> |
| 129 | 82 | \ No newline at end of file | ... | ... |
src/components/room/searchFloor.vue
| ... | ... | @@ -132,9 +132,6 @@ export default { |
| 132 | 132 | this.$eventBus.$emit(this.emitLoadData, 'loadData', { floorId: floor.floorId }) |
| 133 | 133 | this.dialogVisible = false |
| 134 | 134 | }, |
| 135 | - getCommunityId() { | |
| 136 | - return this.$store.state.community.currentCommunity.communityId | |
| 137 | - } | |
| 138 | 135 | } |
| 139 | 136 | } |
| 140 | 137 | </script> |
| 141 | 138 | \ No newline at end of file | ... | ... |
src/components/work/ReplyRepairAppraise.vue
| ... | ... | @@ -60,7 +60,7 @@ export default { |
| 60 | 60 | try { |
| 61 | 61 | await replyRepairAppraise({ |
| 62 | 62 | ...this.form, |
| 63 | - communityId: this.$store.getters.communityId | |
| 63 | + communityId: this.getCommunityId() | |
| 64 | 64 | }) |
| 65 | 65 | this.$message.success(this.$t('adminRepairDetail.replySuccess')) |
| 66 | 66 | this.visible = false | ... | ... |
src/i18n/commonLang.js
| ... | ... | @@ -39,6 +39,7 @@ export const messages = { |
| 39 | 39 | status: 'Status', |
| 40 | 40 | enabled: 'Enabled', |
| 41 | 41 | disabled: 'Disabled', |
| 42 | + import: 'Import', | |
| 42 | 43 | } |
| 43 | 44 | }, |
| 44 | 45 | zh: { |
| ... | ... | @@ -81,6 +82,7 @@ export const messages = { |
| 81 | 82 | status: '状态', |
| 82 | 83 | enabled: '启用', |
| 83 | 84 | disabled: '禁用', |
| 85 | + import: '导入', | |
| 84 | 86 | } |
| 85 | 87 | } |
| 86 | 88 | } |
| 87 | 89 | \ No newline at end of file | ... | ... |
src/i18n/index.js
src/router/index.js
| ... | ... | @@ -625,6 +625,9 @@ router.beforeEach((to, from, next) => { |
| 625 | 625 | if (to.path.startsWith('/img/') || to.path.startsWith('/static/')) { |
| 626 | 626 | return next(); // 直接放行 |
| 627 | 627 | } |
| 628 | + if (to.path.endsWith('.xlsx')) { | |
| 629 | + return next(); // 直接放行 | |
| 630 | + } | |
| 628 | 631 | const token = localStorage.getItem('token') |
| 629 | 632 | if (to.path !== '/views/user/login' && !token) { |
| 630 | 633 | next('/views/user/login') | ... | ... |
src/views/community/roomRenovationManageList.vue
src/views/mall/junkRequirementManageList.vue
| ... | ... | @@ -135,7 +135,7 @@ export default { |
| 135 | 135 | page: page, |
| 136 | 136 | row: size, |
| 137 | 137 | ...this.junkRequirementManageInfo.conditions, |
| 138 | - communityId: this.$store.getters.communityId | |
| 138 | + communityId: this.getCommunityId() | |
| 139 | 139 | } |
| 140 | 140 | const { data, total } = await listJunkRequirements(params) |
| 141 | 141 | this.junkRequirementManageInfo.junkRequirements = data | ... | ... |
src/views/room/addFloorLang.js deleted
| 1 | -export default { | |
| 2 | - en: { | |
| 3 | - room: { | |
| 4 | - addFloor: { | |
| 5 | - title: 'Add Building', | |
| 6 | - floorNum: 'Building Number', | |
| 7 | - name: 'Building Name', | |
| 8 | - floorArea: 'Floor Area', | |
| 9 | - seq: 'Sequence', | |
| 10 | - remark: 'Remark', | |
| 11 | - buildingSuffix: ' Building', | |
| 12 | - floorNumPlaceholder: 'Required, please enter number', | |
| 13 | - namePlaceholder: 'Required, please enter name', | |
| 14 | - floorAreaPlaceholder: 'Required, please enter floor area', | |
| 15 | - remarkPlaceholder: 'Optional, please enter remark', | |
| 16 | - floorNumRequired: 'Building number is required', | |
| 17 | - floorNumLength: 'Building number must be 1-64 characters', | |
| 18 | - nameRequired: 'Building name is required', | |
| 19 | - nameLength: 'Building name must be 2-64 characters', | |
| 20 | - floorAreaRequired: 'Floor area is required', | |
| 21 | - floorAreaFormat: 'Invalid floor area format, e.g. 300.00', | |
| 22 | - seqRequired: 'Sequence is required', | |
| 23 | - seqNumber: 'Sequence must be a number', | |
| 24 | - remarkMaxLength: 'Remark cannot exceed 200 characters', | |
| 25 | - saveSuccess: 'Add successful', | |
| 26 | - saveFailed: 'Add failed', | |
| 27 | - saveError: 'Error adding building' | |
| 28 | - } | |
| 29 | - } | |
| 30 | - }, | |
| 31 | - zh: { | |
| 32 | - room: { | |
| 33 | - addFloor: { | |
| 34 | - title: '添加楼栋', | |
| 35 | - floorNum: '楼栋编号', | |
| 36 | - name: '楼栋名称', | |
| 37 | - floorArea: '建筑面积', | |
| 38 | - seq: '排序', | |
| 39 | - remark: '备注', | |
| 40 | - buildingSuffix: '号楼', | |
| 41 | - floorNumPlaceholder: '必填,请填写编号', | |
| 42 | - namePlaceholder: '必填,请填写名称', | |
| 43 | - floorAreaPlaceholder: '必填,请填写建筑面积', | |
| 44 | - remarkPlaceholder: '可填,请填写备注', | |
| 45 | - floorNumRequired: '楼栋编号不能为空', | |
| 46 | - floorNumLength: '楼栋编号长度必须在1位至64位', | |
| 47 | - nameRequired: '楼栋名称不能为空', | |
| 48 | - nameLength: '楼栋名称长度必须在2位至64位', | |
| 49 | - floorAreaRequired: '建筑面积不能为空', | |
| 50 | - floorAreaFormat: '建筑面积错误,如300.00', | |
| 51 | - seqRequired: '排序不能为空', | |
| 52 | - seqNumber: '排序必须是数字', | |
| 53 | - remarkMaxLength: '备注长度不能超过200位', | |
| 54 | - saveSuccess: '添加成功', | |
| 55 | - saveFailed: '添加失败', | |
| 56 | - saveError: '添加楼栋出错' | |
| 57 | - } | |
| 58 | - } | |
| 59 | - } | |
| 60 | -} | |
| 61 | 0 | \ No newline at end of file |
src/views/room/addUnitLang.js deleted
| 1 | -export const messages = { | |
| 2 | - en: { | |
| 3 | - addUnit: { | |
| 4 | - title: 'Add Unit', | |
| 5 | - unitNum: 'Unit Number', | |
| 6 | - unitNumPlaceholder: 'Required, please enter unit number', | |
| 7 | - layerCount: 'Total Floors', | |
| 8 | - layerCountPlaceholder: 'Required, please enter total floors', | |
| 9 | - unitArea: 'Building Area', | |
| 10 | - unitAreaPlaceholder: 'Required, please enter building area', | |
| 11 | - lift: 'Elevator', | |
| 12 | - liftPlaceholder: 'Required, please select elevator availability', | |
| 13 | - liftOption1: 'Yes', | |
| 14 | - liftOption2: 'No', | |
| 15 | - remark: 'Remark', | |
| 16 | - remarkPlaceholder: 'Please enter remarks', | |
| 17 | - save: 'Save', | |
| 18 | - cancel: 'Cancel', | |
| 19 | - zeroUnitWarning: 'Unit 0 is specific to shops and cannot be added', | |
| 20 | - successMessage: 'Unit added successfully', | |
| 21 | - errorMessage: 'Failed to add unit' | |
| 22 | - } | |
| 23 | - }, | |
| 24 | - zh: { | |
| 25 | - addUnit: { | |
| 26 | - title: '添加单元', | |
| 27 | - unitNum: '单元编号', | |
| 28 | - unitNumPlaceholder: '必填,请填写单元编号', | |
| 29 | - layerCount: '总层数', | |
| 30 | - layerCountPlaceholder: '必填,请填写单元总层数', | |
| 31 | - unitArea: '建筑面积', | |
| 32 | - unitAreaPlaceholder: '必填,请填写建筑面积', | |
| 33 | - lift: '电梯', | |
| 34 | - liftPlaceholder: '必填,请选择是否有电梯', | |
| 35 | - liftOption1: '有', | |
| 36 | - liftOption2: '无', | |
| 37 | - remark: '备注', | |
| 38 | - remarkPlaceholder: '请填写备注信息', | |
| 39 | - save: '保存', | |
| 40 | - cancel: '取消', | |
| 41 | - zeroUnitWarning: '0单元为商铺特有,不允许添加', | |
| 42 | - successMessage: '单元添加成功', | |
| 43 | - errorMessage: '添加单元失败' | |
| 44 | - } | |
| 45 | - } | |
| 46 | -} | |
| 47 | 0 | \ No newline at end of file |
src/views/room/deleteFloorLang.js deleted
| 1 | -export default { | |
| 2 | - en: { | |
| 3 | - room: { | |
| 4 | - deleteFloor: { | |
| 5 | - title: 'Confirm Operation', | |
| 6 | - confirmMessage: 'Are you sure you want to delete?', | |
| 7 | - cancelText: 'Cancel', | |
| 8 | - confirmDelete: 'Confirm Delete', | |
| 9 | - deleteSuccess: 'Delete successful', | |
| 10 | - deleteFailed: 'Delete failed', | |
| 11 | - deleteError: 'Error deleting building' | |
| 12 | - } | |
| 13 | - } | |
| 14 | - }, | |
| 15 | - zh: { | |
| 16 | - room: { | |
| 17 | - deleteFloor: { | |
| 18 | - title: '请确认您的操作', | |
| 19 | - confirmMessage: '确认是否删除?', | |
| 20 | - cancelText: '点错了', | |
| 21 | - confirmDelete: '确认删除', | |
| 22 | - deleteSuccess: '删除成功', | |
| 23 | - deleteFailed: '删除失败', | |
| 24 | - deleteError: '删除楼栋出错' | |
| 25 | - } | |
| 26 | - } | |
| 27 | - } | |
| 28 | -} | |
| 29 | 0 | \ No newline at end of file |
src/views/room/deleteRoomLang.js deleted
| 1 | -export const messages = { | |
| 2 | - en: { | |
| 3 | - room: { | |
| 4 | - deleteRoom: { | |
| 5 | - title: 'Confirm Operation', | |
| 6 | - confirmMessage: 'Confirm deletion! Deleting a room will delete associated fees and payment records, and automatically unbind owners!' | |
| 7 | - } | |
| 8 | - } | |
| 9 | - }, | |
| 10 | - zh: { | |
| 11 | - room: { | |
| 12 | - deleteRoom: { | |
| 13 | - title: '请确认您的操作', | |
| 14 | - confirmMessage: '确认是否删除! 删除房屋会关联删除房屋下的费用以及缴费记录,并且自动解绑业主!' | |
| 15 | - } | |
| 16 | - } | |
| 17 | - } | |
| 18 | -} | |
| 19 | 0 | \ No newline at end of file |
src/views/room/deleteUnitLang.js deleted
| 1 | -export const messages = { | |
| 2 | - en: { | |
| 3 | - deleteUnit: { | |
| 4 | - title: 'Confirm Operation', | |
| 5 | - confirmMessage: 'Are you sure you want to delete this unit?', | |
| 6 | - cancel: 'Cancel', | |
| 7 | - confirm: 'Confirm Delete', | |
| 8 | - successMessage: 'Unit deleted successfully', | |
| 9 | - errorMessage: 'Failed to delete unit' | |
| 10 | - } | |
| 11 | - }, | |
| 12 | - zh: { | |
| 13 | - deleteUnit: { | |
| 14 | - title: '请确认您的操作', | |
| 15 | - confirmMessage: '确定删除小区单元?', | |
| 16 | - cancel: '点错了', | |
| 17 | - confirm: '确认删除', | |
| 18 | - successMessage: '单元删除成功', | |
| 19 | - errorMessage: '删除单元失败' | |
| 20 | - } | |
| 21 | - } | |
| 22 | -} | |
| 23 | 0 | \ No newline at end of file |
src/views/room/editFloorLang.js deleted
| 1 | -export default { | |
| 2 | - en: { | |
| 3 | - room: { | |
| 4 | - editFloor: { | |
| 5 | - title: 'Edit Building', | |
| 6 | - floorNum: 'Building Number', | |
| 7 | - floorName: 'Building Name', | |
| 8 | - floorArea: 'Floor Area', | |
| 9 | - seq: 'Sequence', | |
| 10 | - remark: 'Remark', | |
| 11 | - floorNumPlaceholder: 'Required, please enter number', | |
| 12 | - floorNamePlaceholder: 'Required, please enter name', | |
| 13 | - floorAreaPlaceholder: 'Required, please enter floor area', | |
| 14 | - remarkPlaceholder: 'Optional, please enter remark', | |
| 15 | - floorNumRequired: 'Building number is required', | |
| 16 | - floorNumLength: 'Building number must be 1-64 characters', | |
| 17 | - floorNameRequired: 'Building name is required', | |
| 18 | - floorNameLength: 'Building name must be 2-64 characters', | |
| 19 | - floorAreaRequired: 'Floor area is required', | |
| 20 | - floorAreaFormat: 'Invalid floor area format, e.g. 300.00', | |
| 21 | - seqRequired: 'Sequence is required', | |
| 22 | - seqNumber: 'Sequence must be a number', | |
| 23 | - remarkMaxLength: 'Remark cannot exceed 200 characters', | |
| 24 | - updateSuccess: 'Update successful', | |
| 25 | - updateFailed: 'Update failed', | |
| 26 | - updateError: 'Error updating building' | |
| 27 | - } | |
| 28 | - } | |
| 29 | - }, | |
| 30 | - zh: { | |
| 31 | - room: { | |
| 32 | - editFloor: { | |
| 33 | - title: '修改楼栋', | |
| 34 | - floorNum: '楼栋编号', | |
| 35 | - floorName: '楼栋名称', | |
| 36 | - floorArea: '建筑面积', | |
| 37 | - seq: '排序', | |
| 38 | - remark: '备注', | |
| 39 | - floorNumPlaceholder: '必填,请填写编号', | |
| 40 | - floorNamePlaceholder: '必填,请填写名称', | |
| 41 | - floorAreaPlaceholder: '必填,请填写建筑面积', | |
| 42 | - remarkPlaceholder: '可填,请填写备注', | |
| 43 | - floorNumRequired: '楼栋编号不能为空', | |
| 44 | - floorNumLength: '楼栋编号长度必须在1位至64位', | |
| 45 | - floorNameRequired: '楼栋名称不能为空', | |
| 46 | - floorNameLength: '楼栋名称长度必须在2位至64位', | |
| 47 | - floorAreaRequired: '建筑面积不能为空', | |
| 48 | - floorAreaFormat: '建筑面积错误,如300.00', | |
| 49 | - seqRequired: '排序不能为空', | |
| 50 | - seqNumber: '排序必须是数字', | |
| 51 | - remarkMaxLength: '备注长度不能超过200位', | |
| 52 | - updateSuccess: '修改成功', | |
| 53 | - updateFailed: '修改失败', | |
| 54 | - updateError: '修改楼栋出错' | |
| 55 | - } | |
| 56 | - } | |
| 57 | - } | |
| 58 | -} | |
| 59 | 0 | \ No newline at end of file |
src/views/room/editRoomLang.js deleted
| 1 | -export const messages = { | |
| 2 | - en: { | |
| 3 | - room: { | |
| 4 | - editRoom: { | |
| 5 | - title: 'Edit Room', | |
| 6 | - roomNum: 'Room Number', | |
| 7 | - layer: 'Floor', | |
| 8 | - unit: 'Unit', | |
| 9 | - roomType: 'Room Type', | |
| 10 | - apartment1: 'Bedrooms', | |
| 11 | - apartment2: 'Living Rooms', | |
| 12 | - builtUpArea: 'Built-up Area (m²)', | |
| 13 | - roomArea: 'Indoor Area (m²)', | |
| 14 | - feeCoefficient: 'Fee Coefficient', | |
| 15 | - roomRent: 'Rent', | |
| 16 | - roomState: 'Room State', | |
| 17 | - endTime: 'End Time', | |
| 18 | - remark: 'Remark', | |
| 19 | - placeholder: { | |
| 20 | - roomNum: 'Required, please enter room number', | |
| 21 | - layer: 'Required, please enter floor', | |
| 22 | - unit: 'Required, please select unit', | |
| 23 | - roomType: 'Required, please select room type', | |
| 24 | - apartment: 'Required, please select apartment layout', | |
| 25 | - builtUpArea: 'Required, please enter built-up area! m²', | |
| 26 | - roomArea: 'Required, please enter indoor area! m²', | |
| 27 | - feeCoefficient: 'Please enter fee coefficient', | |
| 28 | - roomRent: 'Required, please enter rent', | |
| 29 | - roomState: 'Required, please select room state', | |
| 30 | - endTime: 'Required, please select end time', | |
| 31 | - remark: 'Please enter remark information' | |
| 32 | - }, | |
| 33 | - apartment1Options: { | |
| 34 | - oneRoom: 'One Bedroom', | |
| 35 | - twoRooms: 'Two Bedrooms', | |
| 36 | - threeRooms: 'Three Bedrooms', | |
| 37 | - fourRooms: 'Four Bedrooms', | |
| 38 | - fiveRooms: 'Five Bedrooms', | |
| 39 | - sixRooms: 'Six Bedrooms', | |
| 40 | - sevenRooms: 'Seven Bedrooms', | |
| 41 | - eightRooms: 'Eight Bedrooms' | |
| 42 | - }, | |
| 43 | - apartment2Options: { | |
| 44 | - oneHall: 'One Living Room', | |
| 45 | - twoHalls: 'Two Living Rooms', | |
| 46 | - threeHalls: 'Three Living Rooms', | |
| 47 | - fourHalls: 'Four Living Rooms', | |
| 48 | - fiveHalls: 'Five Living Rooms', | |
| 49 | - sixHalls: 'Six Living Rooms', | |
| 50 | - sevenHalls: 'Seven Living Rooms', | |
| 51 | - eightHalls: 'Eight Living Rooms' | |
| 52 | - }, | |
| 53 | - roomStateOptions: { | |
| 54 | - occupied: 'Occupied', | |
| 55 | - delivered: 'Delivered', | |
| 56 | - decorated: 'Decorated', | |
| 57 | - vacant: 'Vacant', | |
| 58 | - decorating: 'Decorating' | |
| 59 | - } | |
| 60 | - } | |
| 61 | - } | |
| 62 | - }, | |
| 63 | - zh: { | |
| 64 | - room: { | |
| 65 | - editRoom: { | |
| 66 | - title: '修改房屋', | |
| 67 | - roomNum: '房屋编号', | |
| 68 | - layer: '房屋楼层', | |
| 69 | - unit: '房屋单元', | |
| 70 | - roomType: '房屋类型', | |
| 71 | - apartment1: '户型室', | |
| 72 | - apartment2: '户型厅', | |
| 73 | - builtUpArea: '建筑面积(平方)', | |
| 74 | - roomArea: '室内面积(平方)', | |
| 75 | - feeCoefficient: '算费系数', | |
| 76 | - roomRent: '租金', | |
| 77 | - roomState: '房屋状态', | |
| 78 | - endTime: '结束时间', | |
| 79 | - remark: '备注', | |
| 80 | - placeholder: { | |
| 81 | - roomNum: '必填,请填写房屋编号', | |
| 82 | - layer: '必填,请填写房屋楼层', | |
| 83 | - unit: '必填,请选择单元', | |
| 84 | - roomType: '必填,请选择房屋类型', | |
| 85 | - apartment: '必填,请选择房屋户型', | |
| 86 | - builtUpArea: '必填,请填写房屋建筑面积! 平方', | |
| 87 | - roomArea: '必填,请填写室内面积! 平方', | |
| 88 | - feeCoefficient: '请填写算费系数', | |
| 89 | - roomRent: '必填,请填写租金', | |
| 90 | - roomState: '必填,请选择房屋状态', | |
| 91 | - endTime: '必填,请选择结束时间', | |
| 92 | - remark: '请填写备注信息' | |
| 93 | - }, | |
| 94 | - apartment1Options: { | |
| 95 | - oneRoom: '一室', | |
| 96 | - twoRooms: '两室', | |
| 97 | - threeRooms: '三室', | |
| 98 | - fourRooms: '四室', | |
| 99 | - fiveRooms: '五室', | |
| 100 | - sixRooms: '六室', | |
| 101 | - sevenRooms: '七室', | |
| 102 | - eightRooms: '八室' | |
| 103 | - }, | |
| 104 | - apartment2Options: { | |
| 105 | - oneHall: '一厅', | |
| 106 | - twoHalls: '两厅', | |
| 107 | - threeHalls: '三厅', | |
| 108 | - fourHalls: '四厅', | |
| 109 | - fiveHalls: '五厅', | |
| 110 | - sixHalls: '六厅', | |
| 111 | - sevenHalls: '七厅', | |
| 112 | - eightHalls: '八厅' | |
| 113 | - }, | |
| 114 | - roomStateOptions: { | |
| 115 | - occupied: '已入住', | |
| 116 | - delivered: '已交房', | |
| 117 | - decorated: '已装修', | |
| 118 | - vacant: '未入住', | |
| 119 | - decorating: '装修中' | |
| 120 | - } | |
| 121 | - } | |
| 122 | - } | |
| 123 | - } | |
| 124 | -} | |
| 125 | 0 | \ No newline at end of file |
src/views/room/editUnitLang.js deleted
| 1 | -export const messages = { | |
| 2 | - en: { | |
| 3 | - editUnit: { | |
| 4 | - title: 'Edit Unit', | |
| 5 | - unitNum: 'Unit Number', | |
| 6 | - unitNumPlaceholder: 'Required, please enter unit number', | |
| 7 | - layerCount: 'Total Floors', | |
| 8 | - layerCountPlaceholder: 'Required, please enter total floors', | |
| 9 | - unitArea: 'Building Area', | |
| 10 | - unitAreaPlaceholder: 'Required, please enter building area', | |
| 11 | - lift: 'Elevator', | |
| 12 | - liftPlaceholder: 'Required, please select elevator availability', | |
| 13 | - liftOption1: 'Yes', | |
| 14 | - liftOption2: 'No', | |
| 15 | - remark: 'Remark', | |
| 16 | - remarkPlaceholder: 'Please enter remarks', | |
| 17 | - save: 'Save', | |
| 18 | - cancel: 'Cancel', | |
| 19 | - zeroUnitWarning: 'Unit 0 is specific to shops and cannot be edited', | |
| 20 | - successMessage: 'Unit updated successfully', | |
| 21 | - errorMessage: 'Failed to update unit' | |
| 22 | - } | |
| 23 | - }, | |
| 24 | - zh: { | |
| 25 | - editUnit: { | |
| 26 | - title: '修改单元', | |
| 27 | - unitNum: '单元编号', | |
| 28 | - unitNumPlaceholder: '必填,请填写单元编号', | |
| 29 | - layerCount: '总层数', | |
| 30 | - layerCountPlaceholder: '必填,请填写单元总层数', | |
| 31 | - unitArea: '建筑面积', | |
| 32 | - unitAreaPlaceholder: '必填,请填写建筑面积', | |
| 33 | - lift: '电梯', | |
| 34 | - liftPlaceholder: '必填,请选择是否有电梯', | |
| 35 | - liftOption1: '有', | |
| 36 | - liftOption2: '无', | |
| 37 | - remark: '备注', | |
| 38 | - remarkPlaceholder: '请填写备注信息', | |
| 39 | - save: '保存', | |
| 40 | - cancel: '取消', | |
| 41 | - zeroUnitWarning: '0单元为商铺特有,不允许修改', | |
| 42 | - successMessage: '单元修改成功', | |
| 43 | - errorMessage: '修改单元失败' | |
| 44 | - } | |
| 45 | - } | |
| 46 | -} | |
| 47 | 0 | \ No newline at end of file |
src/views/room/floorUnitTreeLang.js deleted
| 1 | -export const messages = { | |
| 2 | - en: { | |
| 3 | - room: { | |
| 4 | - floorUnitTree: { | |
| 5 | - building: 'Building', | |
| 6 | - unit: 'Unit', | |
| 7 | - noData: 'No buildings currently' | |
| 8 | - } | |
| 9 | - } | |
| 10 | - }, | |
| 11 | - zh: { | |
| 12 | - room: { | |
| 13 | - floorUnitTree: { | |
| 14 | - building: '栋', | |
| 15 | - unit: '单元', | |
| 16 | - noData: '当前没有楼栋' | |
| 17 | - } | |
| 18 | - } | |
| 19 | - } | |
| 20 | -} | |
| 21 | 0 | \ No newline at end of file |
src/views/room/importOwnerRoomLang.js deleted
| 1 | -export default { | |
| 2 | - en: { | |
| 3 | - room: { | |
| 4 | - importOwnerRoom: { | |
| 5 | - title: 'Property Import', | |
| 6 | - selectFile: 'Select File', | |
| 7 | - clickUpload: 'Click to upload', | |
| 8 | - requiredFile: 'Required, please select data file', | |
| 9 | - downloadTemplate: 'Download Template', | |
| 10 | - downloadFirst: 'Please download first', | |
| 11 | - propertyTemplate: 'Property Template', | |
| 12 | - prepareData: 'to prepare data, then upload for import', | |
| 13 | - fileRequired: 'File cannot be empty', | |
| 14 | - invalidFormat: 'Invalid Excel format', | |
| 15 | - fileSizeExceeded: 'Excel file size cannot exceed 2MB', | |
| 16 | - importSuccess: 'Import successful', | |
| 17 | - importFailed: 'Import failed', | |
| 18 | - importError: 'Import error occurred' | |
| 19 | - } | |
| 20 | - } | |
| 21 | - }, | |
| 22 | - zh: { | |
| 23 | - room: { | |
| 24 | - importOwnerRoom: { | |
| 25 | - title: '房产导入', | |
| 26 | - selectFile: '选择文件', | |
| 27 | - clickUpload: '点击上传', | |
| 28 | - requiredFile: '必填,请选择数据文件', | |
| 29 | - downloadTemplate: '下载模板', | |
| 30 | - downloadFirst: '请先下载', | |
| 31 | - propertyTemplate: '房产模板', | |
| 32 | - prepareData: '准备数据后,上传导入', | |
| 33 | - fileRequired: '文件不能为空', | |
| 34 | - invalidFormat: '不是有效的Excel格式', | |
| 35 | - fileSizeExceeded: 'Excel文件大小不能超过2M', | |
| 36 | - importSuccess: '导入成功', | |
| 37 | - importFailed: '导入失败', | |
| 38 | - importError: '导入出错' | |
| 39 | - } | |
| 40 | - } | |
| 41 | - } | |
| 42 | -} | |
| 43 | 0 | \ No newline at end of file |
src/views/room/ownerCarsLang.js deleted
| 1 | -export const messages = { | |
| 2 | - en: { | |
| 3 | - ownerCars: { | |
| 4 | - title: 'Owner Cars', | |
| 5 | - licensePlate: 'License Plate', | |
| 6 | - licenseType: 'License Type', | |
| 7 | - temporary: 'Temporary Car', | |
| 8 | - carType: 'Car Type', | |
| 9 | - color: 'Color', | |
| 10 | - owner: 'Owner', | |
| 11 | - parkingSpace: 'Parking Space', | |
| 12 | - park: ' Park', | |
| 13 | - space: ' Space', | |
| 14 | - released: 'Space Released', | |
| 15 | - validity: 'Validity Period' | |
| 16 | - } | |
| 17 | - }, | |
| 18 | - zh: { | |
| 19 | - ownerCars: { | |
| 20 | - title: '业主车辆', | |
| 21 | - licensePlate: '车牌号', | |
| 22 | - licenseType: '车牌类型', | |
| 23 | - temporary: '临时车', | |
| 24 | - carType: '车辆类型', | |
| 25 | - color: '颜色', | |
| 26 | - owner: '业主', | |
| 27 | - parkingSpace: '车位', | |
| 28 | - park: '车场', | |
| 29 | - space: '车位', | |
| 30 | - released: '车位已释放', | |
| 31 | - validity: '有效期' | |
| 32 | - } | |
| 33 | - } | |
| 34 | -} | |
| 35 | 0 | \ No newline at end of file |
src/views/room/ownerComplaintsLang.js deleted
| 1 | -export const messages = { | |
| 2 | - en: { | |
| 3 | - ownerComplaints: { | |
| 4 | - title: 'Owner Complaints', | |
| 5 | - type: 'Type', | |
| 6 | - room: 'Room', | |
| 7 | - contact: 'Contact', | |
| 8 | - phone: 'Phone', | |
| 9 | - status: 'Status', | |
| 10 | - handler: 'Handler', | |
| 11 | - handlerPhone: 'Handler Phone', | |
| 12 | - createTime: 'Create Time', | |
| 13 | - none: 'None' | |
| 14 | - } | |
| 15 | - }, | |
| 16 | - zh: { | |
| 17 | - ownerComplaints: { | |
| 18 | - title: '业主投诉', | |
| 19 | - type: '类型', | |
| 20 | - room: '房屋', | |
| 21 | - contact: '联系人', | |
| 22 | - phone: '联系电话', | |
| 23 | - status: '状态', | |
| 24 | - handler: '处理人', | |
| 25 | - handlerPhone: '处理人电话', | |
| 26 | - createTime: '创建时间', | |
| 27 | - none: '无' | |
| 28 | - } | |
| 29 | - } | |
| 30 | -} | |
| 31 | 0 | \ No newline at end of file |
src/views/room/ownerMembersLang.js deleted
| 1 | -export const messages = { | |
| 2 | - en: { | |
| 3 | - ownerMembers: { | |
| 4 | - title: 'Owner Members', | |
| 5 | - name: 'Name', | |
| 6 | - sex: 'Gender', | |
| 7 | - male: 'Male', | |
| 8 | - female: 'Female', | |
| 9 | - age: 'Age', | |
| 10 | - type: 'Type', | |
| 11 | - idCard: 'ID Card', | |
| 12 | - contact: 'Contact', | |
| 13 | - address: 'Address' | |
| 14 | - } | |
| 15 | - }, | |
| 16 | - zh: { | |
| 17 | - ownerMembers: { | |
| 18 | - title: '业主成员', | |
| 19 | - name: '名称', | |
| 20 | - sex: '性别', | |
| 21 | - male: '男', | |
| 22 | - female: '女', | |
| 23 | - age: '年龄', | |
| 24 | - type: '类型', | |
| 25 | - idCard: '身份证', | |
| 26 | - contact: '联系方式', | |
| 27 | - address: '家庭住址' | |
| 28 | - } | |
| 29 | - } | |
| 30 | -} | |
| 31 | 0 | \ No newline at end of file |
src/views/room/ownerOweFeesLang.js deleted
| 1 | -export const messages = { | |
| 2 | - en: { | |
| 3 | - ownerOweFees: { | |
| 4 | - title: 'Owner Arrears', | |
| 5 | - payerObj: 'Charge Object', | |
| 6 | - ownerName: 'Owner Name', | |
| 7 | - phone: 'Phone', | |
| 8 | - startTime: 'Start Time', | |
| 9 | - endTime: 'End Time', | |
| 10 | - total: 'Total', | |
| 11 | - unit: 'Unit: Yuan', | |
| 12 | - updateTime: 'Update Time' | |
| 13 | - }, | |
| 14 | - ownerOweFeesDemo: { | |
| 15 | - openBtn: 'View Owner Arrears' | |
| 16 | - } | |
| 17 | - }, | |
| 18 | - zh: { | |
| 19 | - ownerOweFees: { | |
| 20 | - title: '业主欠费', | |
| 21 | - payerObj: '收费对象', | |
| 22 | - ownerName: '业主名称', | |
| 23 | - phone: '手机号', | |
| 24 | - startTime: '开始时间', | |
| 25 | - endTime: '结束时间', | |
| 26 | - total: '合计', | |
| 27 | - unit: '单位:元', | |
| 28 | - updateTime: '更新时间' | |
| 29 | - }, | |
| 30 | - ownerOweFeesDemo: { | |
| 31 | - openBtn: '查看业主欠费' | |
| 32 | - } | |
| 33 | - } | |
| 34 | -} | |
| 35 | 0 | \ No newline at end of file |
src/views/room/ownerRepairsLang.js deleted
| 1 | -export const messages = { | |
| 2 | - en: { | |
| 3 | - ownerRepairs: { | |
| 4 | - title: 'Owner Repairs', | |
| 5 | - workOrder: 'Work Order ID', | |
| 6 | - location: 'Location', | |
| 7 | - repairType: 'Repair Type', | |
| 8 | - reporter: 'Reporter', | |
| 9 | - contact: 'Contact', | |
| 10 | - appointmentTime: 'Appointment Time', | |
| 11 | - status: 'Status', | |
| 12 | - taskProcessed: '(Task Processed)' | |
| 13 | - } | |
| 14 | - }, | |
| 15 | - zh: { | |
| 16 | - ownerRepairs: { | |
| 17 | - title: '业主报修', | |
| 18 | - workOrder: '工单编码', | |
| 19 | - location: '位置', | |
| 20 | - repairType: '报修类型', | |
| 21 | - reporter: '报修人', | |
| 22 | - contact: '联系方式', | |
| 23 | - appointmentTime: '预约时间', | |
| 24 | - status: '状态', | |
| 25 | - taskProcessed: '(定时任务处理)' | |
| 26 | - } | |
| 27 | - } | |
| 28 | -} | |
| 29 | 0 | \ No newline at end of file |
src/views/room/ownerRoomsLang.js deleted
| 1 | -export const messages = { | |
| 2 | - en: { | |
| 3 | - ownerRooms: { | |
| 4 | - title: 'Owner Rooms', | |
| 5 | - roomId: 'Room ID', | |
| 6 | - layer: 'Floor', | |
| 7 | - type: 'Type', | |
| 8 | - area: 'Built/Indoor Area', | |
| 9 | - rent: 'Rent', | |
| 10 | - status: 'Room Status', | |
| 11 | - oweFee: 'Owed Fee', | |
| 12 | - updateDaily: 'Updated daily', | |
| 13 | - subtotal: 'Subtotal of owed fees', | |
| 14 | - successMessage: 'Data loaded successfully', | |
| 15 | - errorMessage: 'Failed to load data' | |
| 16 | - } | |
| 17 | - }, | |
| 18 | - zh: { | |
| 19 | - ownerRooms: { | |
| 20 | - title: '业主房屋', | |
| 21 | - roomId: '房屋ID', | |
| 22 | - layer: '楼层', | |
| 23 | - type: '类型', | |
| 24 | - area: '建筑/室内面积', | |
| 25 | - rent: '租金', | |
| 26 | - status: '房屋状态', | |
| 27 | - oweFee: '房屋欠费', | |
| 28 | - updateDaily: '按天更新', | |
| 29 | - subtotal: '欠费小计', | |
| 30 | - successMessage: '数据加载成功', | |
| 31 | - errorMessage: '加载数据失败' | |
| 32 | - } | |
| 33 | - } | |
| 34 | -} | |
| 35 | 0 | \ No newline at end of file |
src/views/room/roomContractsLang.js deleted
| 1 | -export const messages = { | |
| 2 | - en: { | |
| 3 | - roomContracts: { | |
| 4 | - title: 'Room Contracts', | |
| 5 | - contractName: 'Contract Name', | |
| 6 | - contractCode: 'Contract Code', | |
| 7 | - parentContractCode: 'Parent Contract Code', | |
| 8 | - contractType: 'Contract Type', | |
| 9 | - operator: 'Operator', | |
| 10 | - amount: 'Contract Amount', | |
| 11 | - startTime: 'Start Time', | |
| 12 | - endTime: 'End Time', | |
| 13 | - createTime: 'Draft Time', | |
| 14 | - state: 'Status' | |
| 15 | - }, | |
| 16 | - roomContractsDemo: { | |
| 17 | - openByOwner: 'Open by Owner', | |
| 18 | - openByRoom: 'Open by Room' | |
| 19 | - } | |
| 20 | - }, | |
| 21 | - zh: { | |
| 22 | - roomContracts: { | |
| 23 | - title: '房屋合同', | |
| 24 | - contractName: '合同名称', | |
| 25 | - contractCode: '合同编号', | |
| 26 | - parentContractCode: '父合同编号', | |
| 27 | - contractType: '合同类型', | |
| 28 | - operator: '经办人', | |
| 29 | - amount: '合同金额', | |
| 30 | - startTime: '开始时间', | |
| 31 | - endTime: '结束时间', | |
| 32 | - createTime: '起草时间', | |
| 33 | - state: '状态' | |
| 34 | - }, | |
| 35 | - roomContractsDemo: { | |
| 36 | - openByOwner: '按业主打开', | |
| 37 | - openByRoom: '按房屋打开' | |
| 38 | - } | |
| 39 | - } | |
| 40 | -} | |
| 41 | 0 | \ No newline at end of file |
src/views/room/roomLang.js
| ... | ... | @@ -44,7 +44,321 @@ export const messages = { |
| 44 | 44 | roomStatusDesc2: '1. Unsold means there is no relationship between the room and the owner, so the status cannot be manually modified. It needs to be changed to occupied by the owner moving in.', |
| 45 | 45 | roomStatusDesc3: '2. Unoccupied, handed over, decorated, and occupied status indicate that there is a relationship between the owner and the room. They can be modified mutually, mainly used to create different fees based on different status when creating room fees.', |
| 46 | 46 | rentDesc: 'Rent: Mainly used for park-type properties or properties with many rented rooms, residential properties can ignore this.' |
| 47 | - } | |
| 47 | + }, | |
| 48 | + room: { | |
| 49 | + floorUnitTree: { | |
| 50 | + building: 'Building', | |
| 51 | + unit: 'Unit', | |
| 52 | + noData: 'No buildings currently' | |
| 53 | + }, | |
| 54 | + searchFloor: { | |
| 55 | + title: 'Building Search', | |
| 56 | + placeholder: { | |
| 57 | + floorId: 'Please enter building ID', | |
| 58 | + floorName: 'Please enter building name', | |
| 59 | + floorNum: 'Please enter building number' | |
| 60 | + }, | |
| 61 | + table: { | |
| 62 | + floorId: 'Building ID', | |
| 63 | + floorName: 'Name', | |
| 64 | + floorNum: 'Number', | |
| 65 | + creator: 'Creator', | |
| 66 | + actions: 'Actions' | |
| 67 | + } | |
| 68 | + }, | |
| 69 | + editRoom: { | |
| 70 | + title: 'Edit Room', | |
| 71 | + roomNum: 'Room Number', | |
| 72 | + layer: 'Floor', | |
| 73 | + unit: 'Unit', | |
| 74 | + roomType: 'Room Type', | |
| 75 | + apartment1: 'Bedrooms', | |
| 76 | + apartment2: 'Living Rooms', | |
| 77 | + builtUpArea: 'Built-up Area (m²)', | |
| 78 | + roomArea: 'Indoor Area (m²)', | |
| 79 | + feeCoefficient: 'Fee Coefficient', | |
| 80 | + roomRent: 'Rent', | |
| 81 | + roomState: 'Room State', | |
| 82 | + endTime: 'End Time', | |
| 83 | + remark: 'Remark', | |
| 84 | + placeholder: { | |
| 85 | + roomNum: 'Required, please enter room number', | |
| 86 | + layer: 'Required, please enter floor', | |
| 87 | + unit: 'Required, please select unit', | |
| 88 | + roomType: 'Required, please select room type', | |
| 89 | + apartment: 'Required, please select apartment layout', | |
| 90 | + builtUpArea: 'Required, please enter built-up area! m²', | |
| 91 | + roomArea: 'Required, please enter indoor area! m²', | |
| 92 | + feeCoefficient: 'Please enter fee coefficient', | |
| 93 | + roomRent: 'Required, please enter rent', | |
| 94 | + roomState: 'Required, please select room state', | |
| 95 | + endTime: 'Required, please select end time', | |
| 96 | + remark: 'Please enter remark information' | |
| 97 | + }, | |
| 98 | + apartment1Options: { | |
| 99 | + oneRoom: 'One Bedroom', | |
| 100 | + twoRooms: 'Two Bedrooms', | |
| 101 | + threeRooms: 'Three Bedrooms', | |
| 102 | + fourRooms: 'Four Bedrooms', | |
| 103 | + fiveRooms: 'Five Bedrooms', | |
| 104 | + sixRooms: 'Six Bedrooms', | |
| 105 | + sevenRooms: 'Seven Bedrooms', | |
| 106 | + eightRooms: 'Eight Bedrooms' | |
| 107 | + }, | |
| 108 | + apartment2Options: { | |
| 109 | + oneHall: 'One Living Room', | |
| 110 | + twoHalls: 'Two Living Rooms', | |
| 111 | + threeHalls: 'Three Living Rooms', | |
| 112 | + fourHalls: 'Four Living Rooms', | |
| 113 | + fiveHalls: 'Five Living Rooms', | |
| 114 | + sixHalls: 'Six Living Rooms', | |
| 115 | + sevenHalls: 'Seven Living Rooms', | |
| 116 | + eightHalls: 'Eight Living Rooms' | |
| 117 | + }, | |
| 118 | + roomStateOptions: { | |
| 119 | + occupied: 'Occupied', | |
| 120 | + delivered: 'Delivered', | |
| 121 | + decorated: 'Decorated', | |
| 122 | + vacant: 'Vacant', | |
| 123 | + decorating: 'Decorating' | |
| 124 | + } | |
| 125 | + }, | |
| 126 | + deleteRoom: { | |
| 127 | + title: 'Confirm Operation', | |
| 128 | + confirmMessage: 'Confirm deletion! Deleting a room will delete associated fees and payment records, and automatically unbind owners!' | |
| 129 | + }, | |
| 130 | + importOwnerRoom: { | |
| 131 | + title: 'Property Import', | |
| 132 | + selectFile: 'Select File', | |
| 133 | + clickUpload: 'Click to upload', | |
| 134 | + requiredFile: 'Required, please select data file', | |
| 135 | + downloadTemplate: 'Download Template', | |
| 136 | + downloadFirst: 'Please download first', | |
| 137 | + propertyTemplate: 'Property Template', | |
| 138 | + prepareData: 'to prepare data, then upload for import', | |
| 139 | + fileRequired: 'File cannot be empty', | |
| 140 | + invalidFormat: 'Invalid Excel format', | |
| 141 | + fileSizeExceeded: 'Excel file size cannot exceed 2MB', | |
| 142 | + importSuccess: 'Import successful', | |
| 143 | + importFailed: 'Import failed', | |
| 144 | + importError: 'Import error occurred' | |
| 145 | + }, | |
| 146 | + addFloor: { | |
| 147 | + title: 'Add Building', | |
| 148 | + floorNum: 'Building Number', | |
| 149 | + name: 'Building Name', | |
| 150 | + floorArea: 'Floor Area', | |
| 151 | + seq: 'Sequence', | |
| 152 | + remark: 'Remark', | |
| 153 | + buildingSuffix: ' Building', | |
| 154 | + floorNumPlaceholder: 'Required, please enter number', | |
| 155 | + namePlaceholder: 'Required, please enter name', | |
| 156 | + floorAreaPlaceholder: 'Required, please enter floor area', | |
| 157 | + remarkPlaceholder: 'Optional, please enter remark', | |
| 158 | + floorNumRequired: 'Building number is required', | |
| 159 | + floorNumLength: 'Building number must be 1-64 characters', | |
| 160 | + nameRequired: 'Building name is required', | |
| 161 | + nameLength: 'Building name must be 2-64 characters', | |
| 162 | + floorAreaRequired: 'Floor area is required', | |
| 163 | + floorAreaFormat: 'Invalid floor area format, e.g. 300.00', | |
| 164 | + seqRequired: 'Sequence is required', | |
| 165 | + seqNumber: 'Sequence must be a number', | |
| 166 | + remarkMaxLength: 'Remark cannot exceed 200 characters', | |
| 167 | + saveSuccess: 'Add successful', | |
| 168 | + saveFailed: 'Add failed', | |
| 169 | + saveError: 'Error adding building' | |
| 170 | + }, | |
| 171 | + editFloor: { | |
| 172 | + title: 'Edit Building', | |
| 173 | + floorNum: 'Building Number', | |
| 174 | + floorName: 'Building Name', | |
| 175 | + floorArea: 'Floor Area', | |
| 176 | + seq: 'Sequence', | |
| 177 | + remark: 'Remark', | |
| 178 | + floorNumPlaceholder: 'Required, please enter number', | |
| 179 | + floorNamePlaceholder: 'Required, please enter name', | |
| 180 | + floorAreaPlaceholder: 'Required, please enter floor area', | |
| 181 | + remarkPlaceholder: 'Optional, please enter remark', | |
| 182 | + floorNumRequired: 'Building number is required', | |
| 183 | + floorNumLength: 'Building number must be 1-64 characters', | |
| 184 | + floorNameRequired: 'Building name is required', | |
| 185 | + floorNameLength: 'Building name must be 2-64 characters', | |
| 186 | + floorAreaRequired: 'Floor area is required', | |
| 187 | + floorAreaFormat: 'Invalid floor area format, e.g. 300.00', | |
| 188 | + seqRequired: 'Sequence is required', | |
| 189 | + seqNumber: 'Sequence must be a number', | |
| 190 | + remarkMaxLength: 'Remark cannot exceed 200 characters', | |
| 191 | + updateSuccess: 'Update successful', | |
| 192 | + updateFailed: 'Update failed', | |
| 193 | + updateError: 'Error updating building' | |
| 194 | + }, | |
| 195 | + deleteFloor: { | |
| 196 | + title: 'Confirm Operation', | |
| 197 | + confirmMessage: 'Are you sure you want to delete?', | |
| 198 | + cancelText: 'Cancel', | |
| 199 | + confirmDelete: 'Confirm Delete', | |
| 200 | + deleteSuccess: 'Delete successful', | |
| 201 | + deleteFailed: 'Delete failed', | |
| 202 | + deleteError: 'Error deleting building' | |
| 203 | + } | |
| 204 | + }, | |
| 205 | + ownerRooms: { | |
| 206 | + title: 'Owner Rooms', | |
| 207 | + roomId: 'Room ID', | |
| 208 | + layer: 'Floor', | |
| 209 | + type: 'Type', | |
| 210 | + area: 'Built/Indoor Area', | |
| 211 | + rent: 'Rent', | |
| 212 | + status: 'Room Status', | |
| 213 | + oweFee: 'Owed Fee', | |
| 214 | + updateDaily: 'Updated daily', | |
| 215 | + subtotal: 'Subtotal of owed fees', | |
| 216 | + successMessage: 'Data loaded successfully', | |
| 217 | + errorMessage: 'Failed to load data' | |
| 218 | + }, | |
| 219 | + ownerMembers: { | |
| 220 | + title: 'Owner Members', | |
| 221 | + name: 'Name', | |
| 222 | + sex: 'Gender', | |
| 223 | + male: 'Male', | |
| 224 | + female: 'Female', | |
| 225 | + age: 'Age', | |
| 226 | + type: 'Type', | |
| 227 | + idCard: 'ID Card', | |
| 228 | + contact: 'Contact', | |
| 229 | + address: 'Address' | |
| 230 | + }, | |
| 231 | + ownerCars: { | |
| 232 | + title: 'Owner Cars', | |
| 233 | + licensePlate: 'License Plate', | |
| 234 | + licenseType: 'License Type', | |
| 235 | + temporary: 'Temporary Car', | |
| 236 | + carType: 'Car Type', | |
| 237 | + color: 'Color', | |
| 238 | + owner: 'Owner', | |
| 239 | + parkingSpace: 'Parking Space', | |
| 240 | + park: ' Park', | |
| 241 | + space: ' Space', | |
| 242 | + released: 'Space Released', | |
| 243 | + validity: 'Validity Period' | |
| 244 | + }, | |
| 245 | + ownerComplaints: { | |
| 246 | + title: 'Owner Complaints', | |
| 247 | + type: 'Type', | |
| 248 | + room: 'Room', | |
| 249 | + contact: 'Contact', | |
| 250 | + phone: 'Phone', | |
| 251 | + status: 'Status', | |
| 252 | + handler: 'Handler', | |
| 253 | + handlerPhone: 'Handler Phone', | |
| 254 | + createTime: 'Create Time', | |
| 255 | + none: 'None' | |
| 256 | + }, | |
| 257 | + ownerRepairs: { | |
| 258 | + title: 'Owner Repairs', | |
| 259 | + workOrder: 'Work Order ID', | |
| 260 | + location: 'Location', | |
| 261 | + repairType: 'Repair Type', | |
| 262 | + reporter: 'Reporter', | |
| 263 | + contact: 'Contact', | |
| 264 | + appointmentTime: 'Appointment Time', | |
| 265 | + status: 'Status', | |
| 266 | + taskProcessed: '(Task Processed)' | |
| 267 | + }, | |
| 268 | + ownerOweFees: { | |
| 269 | + title: 'Owner Arrears', | |
| 270 | + payerObj: 'Charge Object', | |
| 271 | + ownerName: 'Owner Name', | |
| 272 | + phone: 'Phone', | |
| 273 | + startTime: 'Start Time', | |
| 274 | + endTime: 'End Time', | |
| 275 | + total: 'Total', | |
| 276 | + unit: 'Unit: Yuan', | |
| 277 | + updateTime: 'Update Time' | |
| 278 | + }, | |
| 279 | + ownerOweFeesDemo: { | |
| 280 | + openBtn: 'View Owner Arrears' | |
| 281 | + }, | |
| 282 | + roomOweFees: { | |
| 283 | + title: 'Room Arrears', | |
| 284 | + payerObj: 'Charge Object', | |
| 285 | + ownerName: 'Owner Name', | |
| 286 | + phone: 'Phone', | |
| 287 | + startTime: 'Start Time', | |
| 288 | + endTime: 'End Time', | |
| 289 | + total: 'Total', | |
| 290 | + unit: 'Unit: Yuan', | |
| 291 | + updateTime: 'Update Time' | |
| 292 | + }, | |
| 293 | + roomOweFeesDemo: { | |
| 294 | + openBtn: 'View Room Arrears' | |
| 295 | + }, | |
| 296 | + roomContracts: { | |
| 297 | + title: 'Room Contracts', | |
| 298 | + contractName: 'Contract Name', | |
| 299 | + contractCode: 'Contract Code', | |
| 300 | + parentContractCode: 'Parent Contract Code', | |
| 301 | + contractType: 'Contract Type', | |
| 302 | + operator: 'Operator', | |
| 303 | + amount: 'Contract Amount', | |
| 304 | + startTime: 'Start Time', | |
| 305 | + endTime: 'End Time', | |
| 306 | + createTime: 'Draft Time', | |
| 307 | + state: 'Status' | |
| 308 | + }, | |
| 309 | + roomContractsDemo: { | |
| 310 | + openByOwner: 'Open by Owner', | |
| 311 | + openByRoom: 'Open by Room' | |
| 312 | + | |
| 313 | + }, | |
| 314 | + addUnit: { | |
| 315 | + title: 'Add Unit', | |
| 316 | + unitNum: 'Unit Number', | |
| 317 | + unitNumPlaceholder: 'Required, please enter unit number', | |
| 318 | + layerCount: 'Total Floors', | |
| 319 | + layerCountPlaceholder: 'Required, please enter total floors', | |
| 320 | + unitArea: 'Building Area', | |
| 321 | + unitAreaPlaceholder: 'Required, please enter building area', | |
| 322 | + lift: 'Elevator', | |
| 323 | + liftPlaceholder: 'Required, please select elevator availability', | |
| 324 | + liftOption1: 'Yes', | |
| 325 | + liftOption2: 'No', | |
| 326 | + remark: 'Remark', | |
| 327 | + remarkPlaceholder: 'Please enter remarks', | |
| 328 | + save: 'Save', | |
| 329 | + cancel: 'Cancel', | |
| 330 | + zeroUnitWarning: 'Unit 0 is specific to shops and cannot be added', | |
| 331 | + successMessage: 'Unit added successfully', | |
| 332 | + errorMessage: 'Failed to add unit' | |
| 333 | + }, | |
| 334 | + editUnit: { | |
| 335 | + title: 'Edit Unit', | |
| 336 | + unitNum: 'Unit Number', | |
| 337 | + unitNumPlaceholder: 'Required, please enter unit number', | |
| 338 | + layerCount: 'Total Floors', | |
| 339 | + layerCountPlaceholder: 'Required, please enter total floors', | |
| 340 | + unitArea: 'Building Area', | |
| 341 | + unitAreaPlaceholder: 'Required, please enter building area', | |
| 342 | + lift: 'Elevator', | |
| 343 | + liftPlaceholder: 'Required, please select elevator availability', | |
| 344 | + liftOption1: 'Yes', | |
| 345 | + liftOption2: 'No', | |
| 346 | + remark: 'Remark', | |
| 347 | + remarkPlaceholder: 'Please enter remarks', | |
| 348 | + save: 'Save', | |
| 349 | + cancel: 'Cancel', | |
| 350 | + zeroUnitWarning: 'Unit 0 is specific to shops and cannot be edited', | |
| 351 | + successMessage: 'Unit updated successfully', | |
| 352 | + errorMessage: 'Failed to update unit' | |
| 353 | + }, | |
| 354 | + deleteUnit: { | |
| 355 | + title: 'Confirm Operation', | |
| 356 | + confirmMessage: 'Are you sure you want to delete this unit?', | |
| 357 | + cancel: 'Cancel', | |
| 358 | + confirm: 'Confirm Delete', | |
| 359 | + successMessage: 'Unit deleted successfully', | |
| 360 | + errorMessage: 'Failed to delete unit' | |
| 361 | + }, | |
| 48 | 362 | }, |
| 49 | 363 | zh: { |
| 50 | 364 | roomList: { |
| ... | ... | @@ -91,6 +405,320 @@ export const messages = { |
| 91 | 405 | roomStatusDesc2: '1、未销售表示 房屋和业主之间还没有任何关系,所以修改时状态不能手工修改 需要业主入住房屋的方式 将未销售改为已入住', |
| 92 | 406 | roomStatusDesc3: '2、未入住 已交房 已装修 已入住 状态表示业主和房屋之间已经有关系 可以相互修改,主要作用为在房屋创建费用时根据不同的状态去创建不同的费用', |
| 93 | 407 | rentDesc: '租金:主要用于园区类或者房屋出租比较多的物业使用,小区物业忽略' |
| 408 | + }, | |
| 409 | + room: { | |
| 410 | + floorUnitTree: { | |
| 411 | + building: '栋', | |
| 412 | + unit: '单元', | |
| 413 | + noData: '当前没有楼栋' | |
| 414 | + }, | |
| 415 | + searchFloor: { | |
| 416 | + title: '小区楼', | |
| 417 | + placeholder: { | |
| 418 | + floorId: '请输入楼栋ID', | |
| 419 | + floorName: '请输入楼栋名称', | |
| 420 | + floorNum: '请输入楼栋编号' | |
| 421 | + }, | |
| 422 | + table: { | |
| 423 | + floorId: '楼ID', | |
| 424 | + floorName: '名称', | |
| 425 | + floorNum: '编号', | |
| 426 | + creator: '创建人', | |
| 427 | + actions: '操作' | |
| 428 | + } | |
| 429 | + }, | |
| 430 | + editRoom: { | |
| 431 | + title: '修改房屋', | |
| 432 | + roomNum: '房屋编号', | |
| 433 | + layer: '房屋楼层', | |
| 434 | + unit: '房屋单元', | |
| 435 | + roomType: '房屋类型', | |
| 436 | + apartment1: '户型室', | |
| 437 | + apartment2: '户型厅', | |
| 438 | + builtUpArea: '建筑面积(平方)', | |
| 439 | + roomArea: '室内面积(平方)', | |
| 440 | + feeCoefficient: '算费系数', | |
| 441 | + roomRent: '租金', | |
| 442 | + roomState: '房屋状态', | |
| 443 | + endTime: '结束时间', | |
| 444 | + remark: '备注', | |
| 445 | + placeholder: { | |
| 446 | + roomNum: '必填,请填写房屋编号', | |
| 447 | + layer: '必填,请填写房屋楼层', | |
| 448 | + unit: '必填,请选择单元', | |
| 449 | + roomType: '必填,请选择房屋类型', | |
| 450 | + apartment: '必填,请选择房屋户型', | |
| 451 | + builtUpArea: '必填,请填写房屋建筑面积! 平方', | |
| 452 | + roomArea: '必填,请填写室内面积! 平方', | |
| 453 | + feeCoefficient: '请填写算费系数', | |
| 454 | + roomRent: '必填,请填写租金', | |
| 455 | + roomState: '必填,请选择房屋状态', | |
| 456 | + endTime: '必填,请选择结束时间', | |
| 457 | + remark: '请填写备注信息' | |
| 458 | + }, | |
| 459 | + apartment1Options: { | |
| 460 | + oneRoom: '一室', | |
| 461 | + twoRooms: '两室', | |
| 462 | + threeRooms: '三室', | |
| 463 | + fourRooms: '四室', | |
| 464 | + fiveRooms: '五室', | |
| 465 | + sixRooms: '六室', | |
| 466 | + sevenRooms: '七室', | |
| 467 | + eightRooms: '八室' | |
| 468 | + }, | |
| 469 | + apartment2Options: { | |
| 470 | + oneHall: '一厅', | |
| 471 | + twoHalls: '两厅', | |
| 472 | + threeHalls: '三厅', | |
| 473 | + fourHalls: '四厅', | |
| 474 | + fiveHalls: '五厅', | |
| 475 | + sixHalls: '六厅', | |
| 476 | + sevenHalls: '七厅', | |
| 477 | + eightHalls: '八厅' | |
| 478 | + }, | |
| 479 | + roomStateOptions: { | |
| 480 | + occupied: '已入住', | |
| 481 | + delivered: '已交房', | |
| 482 | + decorated: '已装修', | |
| 483 | + vacant: '未入住', | |
| 484 | + decorating: '装修中' | |
| 485 | + } | |
| 486 | + }, | |
| 487 | + deleteRoom: { | |
| 488 | + title: '请确认您的操作', | |
| 489 | + confirmMessage: '确认是否删除! 删除房屋会关联删除房屋下的费用以及缴费记录,并且自动解绑业主!' | |
| 490 | + }, | |
| 491 | + importOwnerRoom: { | |
| 492 | + title: '房产导入', | |
| 493 | + selectFile: '选择文件', | |
| 494 | + clickUpload: '点击上传', | |
| 495 | + requiredFile: '必填,请选择数据文件', | |
| 496 | + downloadTemplate: '下载模板', | |
| 497 | + downloadFirst: '请先下载', | |
| 498 | + propertyTemplate: '房产模板', | |
| 499 | + prepareData: '准备数据后,上传导入', | |
| 500 | + fileRequired: '文件不能为空', | |
| 501 | + invalidFormat: '不是有效的Excel格式', | |
| 502 | + fileSizeExceeded: 'Excel文件大小不能超过2M', | |
| 503 | + importSuccess: '导入成功', | |
| 504 | + importFailed: '导入失败', | |
| 505 | + importError: '导入出错' | |
| 506 | + }, | |
| 507 | + addFloor: { | |
| 508 | + title: '添加楼栋', | |
| 509 | + floorNum: '楼栋编号', | |
| 510 | + name: '楼栋名称', | |
| 511 | + floorArea: '建筑面积', | |
| 512 | + seq: '排序', | |
| 513 | + remark: '备注', | |
| 514 | + buildingSuffix: '号楼', | |
| 515 | + floorNumPlaceholder: '必填,请填写编号', | |
| 516 | + namePlaceholder: '必填,请填写名称', | |
| 517 | + floorAreaPlaceholder: '必填,请填写建筑面积', | |
| 518 | + remarkPlaceholder: '可填,请填写备注', | |
| 519 | + floorNumRequired: '楼栋编号不能为空', | |
| 520 | + floorNumLength: '楼栋编号长度必须在1位至64位', | |
| 521 | + nameRequired: '楼栋名称不能为空', | |
| 522 | + nameLength: '楼栋名称长度必须在2位至64位', | |
| 523 | + floorAreaRequired: '建筑面积不能为空', | |
| 524 | + floorAreaFormat: '建筑面积错误,如300.00', | |
| 525 | + seqRequired: '排序不能为空', | |
| 526 | + seqNumber: '排序必须是数字', | |
| 527 | + remarkMaxLength: '备注长度不能超过200位', | |
| 528 | + saveSuccess: '添加成功', | |
| 529 | + saveFailed: '添加失败', | |
| 530 | + saveError: '添加楼栋出错' | |
| 531 | + }, | |
| 532 | + editFloor: { | |
| 533 | + title: '修改楼栋', | |
| 534 | + floorNum: '楼栋编号', | |
| 535 | + floorName: '楼栋名称', | |
| 536 | + floorArea: '建筑面积', | |
| 537 | + seq: '排序', | |
| 538 | + remark: '备注', | |
| 539 | + floorNumPlaceholder: '必填,请填写编号', | |
| 540 | + floorNamePlaceholder: '必填,请填写名称', | |
| 541 | + floorAreaPlaceholder: '必填,请填写建筑面积', | |
| 542 | + remarkPlaceholder: '可填,请填写备注', | |
| 543 | + floorNumRequired: '楼栋编号不能为空', | |
| 544 | + floorNumLength: '楼栋编号长度必须在1位至64位', | |
| 545 | + floorNameRequired: '楼栋名称不能为空', | |
| 546 | + floorNameLength: '楼栋名称长度必须在2位至64位', | |
| 547 | + floorAreaRequired: '建筑面积不能为空', | |
| 548 | + floorAreaFormat: '建筑面积错误,如300.00', | |
| 549 | + seqRequired: '排序不能为空', | |
| 550 | + seqNumber: '排序必须是数字', | |
| 551 | + remarkMaxLength: '备注长度不能超过200位', | |
| 552 | + updateSuccess: '修改成功', | |
| 553 | + updateFailed: '修改失败', | |
| 554 | + updateError: '修改楼栋出错' | |
| 555 | + }, | |
| 556 | + deleteFloor: { | |
| 557 | + title: '请确认您的操作', | |
| 558 | + confirmMessage: '确认是否删除?', | |
| 559 | + cancelText: '点错了', | |
| 560 | + confirmDelete: '确认删除', | |
| 561 | + deleteSuccess: '删除成功', | |
| 562 | + deleteFailed: '删除失败', | |
| 563 | + deleteError: '删除楼栋出错' | |
| 564 | + }, | |
| 565 | + }, | |
| 566 | + ownerRooms: { | |
| 567 | + title: '业主房屋', | |
| 568 | + roomId: '房屋ID', | |
| 569 | + layer: '楼层', | |
| 570 | + type: '类型', | |
| 571 | + area: '建筑/室内面积', | |
| 572 | + rent: '租金', | |
| 573 | + status: '房屋状态', | |
| 574 | + oweFee: '房屋欠费', | |
| 575 | + updateDaily: '按天更新', | |
| 576 | + subtotal: '欠费小计', | |
| 577 | + successMessage: '数据加载成功', | |
| 578 | + errorMessage: '加载数据失败' | |
| 579 | + }, | |
| 580 | + ownerMembers: { | |
| 581 | + title: '业主成员', | |
| 582 | + name: '名称', | |
| 583 | + sex: '性别', | |
| 584 | + male: '男', | |
| 585 | + female: '女', | |
| 586 | + age: '年龄', | |
| 587 | + type: '类型', | |
| 588 | + idCard: '身份证', | |
| 589 | + contact: '联系方式', | |
| 590 | + address: '家庭住址' | |
| 591 | + }, | |
| 592 | + ownerCars: { | |
| 593 | + title: '业主车辆', | |
| 594 | + licensePlate: '车牌号', | |
| 595 | + licenseType: '车牌类型', | |
| 596 | + temporary: '临时车', | |
| 597 | + carType: '车辆类型', | |
| 598 | + color: '颜色', | |
| 599 | + owner: '业主', | |
| 600 | + parkingSpace: '车位', | |
| 601 | + park: '车场', | |
| 602 | + space: '车位', | |
| 603 | + released: '车位已释放', | |
| 604 | + validity: '有效期' | |
| 605 | + }, | |
| 606 | + ownerComplaints: { | |
| 607 | + title: '业主投诉', | |
| 608 | + type: '类型', | |
| 609 | + room: '房屋', | |
| 610 | + contact: '联系人', | |
| 611 | + phone: '联系电话', | |
| 612 | + status: '状态', | |
| 613 | + handler: '处理人', | |
| 614 | + handlerPhone: '处理人电话', | |
| 615 | + createTime: '创建时间', | |
| 616 | + none: '无' | |
| 617 | + }, | |
| 618 | + ownerRepairs: { | |
| 619 | + title: '业主报修', | |
| 620 | + workOrder: '工单编码', | |
| 621 | + location: '位置', | |
| 622 | + repairType: '报修类型', | |
| 623 | + reporter: '报修人', | |
| 624 | + contact: '联系方式', | |
| 625 | + appointmentTime: '预约时间', | |
| 626 | + status: '状态', | |
| 627 | + taskProcessed: '(定时任务处理)' | |
| 628 | + }, | |
| 629 | + ownerOweFees: { | |
| 630 | + title: '业主欠费', | |
| 631 | + payerObj: '收费对象', | |
| 632 | + ownerName: '业主名称', | |
| 633 | + phone: '手机号', | |
| 634 | + startTime: '开始时间', | |
| 635 | + endTime: '结束时间', | |
| 636 | + total: '合计', | |
| 637 | + unit: '单位:元', | |
| 638 | + updateTime: '更新时间' | |
| 639 | + }, | |
| 640 | + ownerOweFeesDemo: { | |
| 641 | + openBtn: '查看业主欠费' | |
| 642 | + }, | |
| 643 | + roomOweFees: { | |
| 644 | + title: '房屋欠费', | |
| 645 | + payerObj: '收费对象', | |
| 646 | + ownerName: '业主名称', | |
| 647 | + phone: '手机号', | |
| 648 | + startTime: '开始时间', | |
| 649 | + endTime: '结束时间', | |
| 650 | + total: '合计', | |
| 651 | + unit: '单位:元', | |
| 652 | + updateTime: '更新时间' | |
| 653 | + }, | |
| 654 | + roomOweFeesDemo: { | |
| 655 | + openBtn: '查看房屋欠费' | |
| 656 | + }, | |
| 657 | + roomContracts: { | |
| 658 | + title: '房屋合同', | |
| 659 | + contractName: '合同名称', | |
| 660 | + contractCode: '合同编号', | |
| 661 | + parentContractCode: '父合同编号', | |
| 662 | + contractType: '合同类型', | |
| 663 | + operator: '经办人', | |
| 664 | + amount: '合同金额', | |
| 665 | + startTime: '开始时间', | |
| 666 | + endTime: '结束时间', | |
| 667 | + createTime: '起草时间', | |
| 668 | + state: '状态' | |
| 669 | + }, | |
| 670 | + roomContractsDemo: { | |
| 671 | + openByOwner: '按业主打开', | |
| 672 | + openByRoom: '按房屋打开' | |
| 94 | 673 | } |
| 674 | + , | |
| 675 | + addUnit: { | |
| 676 | + title: '添加单元', | |
| 677 | + unitNum: '单元编号', | |
| 678 | + unitNumPlaceholder: '必填,请填写单元编号', | |
| 679 | + layerCount: '总层数', | |
| 680 | + layerCountPlaceholder: '必填,请填写单元总层数', | |
| 681 | + unitArea: '建筑面积', | |
| 682 | + unitAreaPlaceholder: '必填,请填写建筑面积', | |
| 683 | + lift: '电梯', | |
| 684 | + liftPlaceholder: '必填,请选择是否有电梯', | |
| 685 | + liftOption1: '有', | |
| 686 | + liftOption2: '无', | |
| 687 | + remark: '备注', | |
| 688 | + remarkPlaceholder: '请填写备注信息', | |
| 689 | + save: '保存', | |
| 690 | + cancel: '取消', | |
| 691 | + zeroUnitWarning: '0单元为商铺特有,不允许添加', | |
| 692 | + successMessage: '单元添加成功', | |
| 693 | + errorMessage: '添加单元失败' | |
| 694 | + }, | |
| 695 | + editUnit: { | |
| 696 | + title: '修改单元', | |
| 697 | + unitNum: '单元编号', | |
| 698 | + unitNumPlaceholder: '必填,请填写单元编号', | |
| 699 | + layerCount: '总层数', | |
| 700 | + layerCountPlaceholder: '必填,请填写单元总层数', | |
| 701 | + unitArea: '建筑面积', | |
| 702 | + unitAreaPlaceholder: '必填,请填写建筑面积', | |
| 703 | + lift: '电梯', | |
| 704 | + liftPlaceholder: '必填,请选择是否有电梯', | |
| 705 | + liftOption1: '有', | |
| 706 | + liftOption2: '无', | |
| 707 | + remark: '备注', | |
| 708 | + remarkPlaceholder: '请填写备注信息', | |
| 709 | + save: '保存', | |
| 710 | + cancel: '取消', | |
| 711 | + zeroUnitWarning: '0单元为商铺特有,不允许修改', | |
| 712 | + successMessage: '单元修改成功', | |
| 713 | + errorMessage: '修改单元失败' | |
| 714 | + }, | |
| 715 | + deleteUnit: { | |
| 716 | + title: '请确认您的操作', | |
| 717 | + confirmMessage: '确定删除小区单元?', | |
| 718 | + cancel: '点错了', | |
| 719 | + confirm: '确认删除', | |
| 720 | + successMessage: '单元删除成功', | |
| 721 | + errorMessage: '删除单元失败' | |
| 722 | + }, | |
| 95 | 723 | } |
| 96 | 724 | } |
| 97 | 725 | \ No newline at end of file | ... | ... |
src/views/room/roomList.vue
| ... | ... | @@ -4,19 +4,22 @@ |
| 4 | 4 | <el-button type="primary" size="small" @click="openAddRoomFloorModal"> |
| 5 | 5 | <i class="el-icon-plus"></i>{{ $t('roomList.addBuilding') }} |
| 6 | 6 | </el-button> |
| 7 | - <el-button type="primary" size="small" @click="openUpdateRoomFloorModal"> | |
| 7 | + <el-button type="primary" size="small" @click="openUpdateRoomFloorModal" v-if="roomInfo.conditions.floorId"> | |
| 8 | 8 | <i class="el-icon-edit"></i>{{ $t('roomList.editBuilding') }} |
| 9 | 9 | </el-button> |
| 10 | - <el-button type="primary" size="small" @click="openDeleteRoomFloorModal"> | |
| 10 | + <el-button type="primary" size="small" @click="openDeleteRoomFloorModal" v-if="roomInfo.conditions.floorId"> | |
| 11 | 11 | <i class="el-icon-close"></i>{{ $t('roomList.deleteBuilding') }} |
| 12 | 12 | </el-button> |
| 13 | - <el-button type="primary" size="small" class="margin-left-sm" @click="openAddRoomUnitModal"> | |
| 13 | + <el-button type="primary" size="small" class="margin-left-sm" @click="openAddRoomUnitModal" | |
| 14 | + v-if="roomInfo.conditions.floorId"> | |
| 14 | 15 | <i class="el-icon-plus"></i>{{ $t('roomList.addUnit') }} |
| 15 | 16 | </el-button> |
| 16 | - <el-button type="primary" size="small" class="margin-left-sm" @click="openUpdateRoomUnitModal"> | |
| 17 | + <el-button type="primary" size="small" class="margin-left-sm" @click="openUpdateRoomUnitModal" | |
| 18 | + v-if="roomInfo.conditions.unitId"> | |
| 17 | 19 | <i class="el-icon-edit"></i>{{ $t('roomList.editUnit') }} |
| 18 | 20 | </el-button> |
| 19 | - <el-button type="primary" size="small" class="margin-left-sm" @click="openDeleteRoomUnitModal"> | |
| 21 | + <el-button type="primary" size="small" class="margin-left-sm" @click="openDeleteRoomUnitModal" | |
| 22 | + v-if="roomInfo.conditions.unitId"> | |
| 20 | 23 | <i class="el-icon-close"></i>{{ $t('roomList.deleteUnit') }} |
| 21 | 24 | </el-button> |
| 22 | 25 | <el-button type="primary" size="small" class="margin-left-sm" @click="openAddRoom" |
| ... | ... | @@ -36,8 +39,7 @@ |
| 36 | 39 | |
| 37 | 40 | <el-row class="flex justify-start"> |
| 38 | 41 | <el-col :span="4" class="room-floor-unit-tree"> |
| 39 | - <floor-unit-tree :call-back-listener="callbackListener" @switchFloor="handleSwitchFloor" | |
| 40 | - @switchUnit="handleSwitchUnit" /> | |
| 42 | + <floor-unit-tree ref="floorUnitTree" @switchFloorUnit="switchFloorUnit" /> | |
| 41 | 43 | </el-col> |
| 42 | 44 | <el-col :span="20" class="margin-top-xs margin-left-sm"> |
| 43 | 45 | <el-card class="ibox"> |
| ... | ... | @@ -266,16 +268,18 @@ |
| 266 | 268 | </el-row> |
| 267 | 269 | |
| 268 | 270 | <!-- 子组件 --> |
| 271 | + <add-floor ref="addFloor" @handleRefreshTree="floorUnitTree" /> | |
| 272 | + <edit-floor ref="editFloor" @handleRefreshTree="floorUnitTree" /> | |
| 273 | + <delete-floor ref="deleteFloor" @handleRefreshTree="floorUnitTree" /> | |
| 274 | + <add-unit ref="addUnit" @handleRefreshTree="floorUnitTree" /> | |
| 275 | + <edit-unit ref="editUnit" @handleRefreshTree="floorUnitTree" /> | |
| 276 | + <delete-unit ref="deleteUnit" @handleRefreshTree="floorUnitTree" /> | |
| 269 | 277 | <search-floor ref="searchFloor" emit-choose-floor="room" emit-load-data="room" /> |
| 270 | - <edit-room ref="editRoom" /> | |
| 271 | - <delete-room ref="deleteRoom" /> | |
| 278 | + <edit-room ref="editRoom" @handleRefreshRoom="handleRefreshRoom" /> | |
| 279 | + <delete-room ref="deleteRoom" @handleRefreshRoom="handleRefreshRoom" /> | |
| 272 | 280 | <import-owner-room ref="importOwnerRoom" /> |
| 273 | - <add-floor ref="addFloor" /> | |
| 274 | - <edit-floor ref="editFloor" /> | |
| 275 | - <delete-floor ref="deleteFloor" /> | |
| 276 | - <add-unit ref="addUnit" /> | |
| 277 | - <edit-unit ref="editUnit" /> | |
| 278 | - <delete-unit ref="deleteUnit" /> | |
| 281 | + | |
| 282 | + | |
| 279 | 283 | <owner-rooms ref="ownerRooms" /> |
| 280 | 284 | <owner-members ref="ownerMembers" /> |
| 281 | 285 | <owner-cars ref="ownerCars" /> |
| ... | ... | @@ -289,7 +293,7 @@ |
| 289 | 293 | |
| 290 | 294 | <script> |
| 291 | 295 | import { getDict } from '@/api/community/communityApi' |
| 292 | -import { queryRooms,getFloors,getUnits } from '@/api/room/roomApi' | |
| 296 | +import { queryRooms, getFloors, getUnits } from '@/api/room/roomApi' | |
| 293 | 297 | import FloorUnitTree from '@/components/room/floorUnitTree' |
| 294 | 298 | import SearchFloor from '@/components/room/searchFloor' |
| 295 | 299 | import EditRoom from '@/components/room/editRoom' |
| ... | ... | @@ -310,6 +314,9 @@ import OwnerOweFees from '@/components/owner/ownerOweFees' |
| 310 | 314 | import RoomOweFees from '@/components/room/roomOweFees' |
| 311 | 315 | import RoomContracts from '@/components/room/roomContracts' |
| 312 | 316 | |
| 317 | +import { getAttrSpecList } from '@/api/dev/attrSpecApi' | |
| 318 | +// import { getAttrValueList } from '@/api/dev/attrValueApi' | |
| 319 | + | |
| 313 | 320 | const DEFAULT_PAGE = 1 |
| 314 | 321 | const DEFAULT_ROW = 10 |
| 315 | 322 | |
| ... | ... | @@ -371,10 +378,10 @@ export default { |
| 371 | 378 | }, |
| 372 | 379 | mounted() { |
| 373 | 380 | this.initData() |
| 374 | - // window.addEventListener('resize', this.handleResize) | |
| 381 | + // window.addEventListener('resize', this.handleResize) | |
| 375 | 382 | }, |
| 376 | 383 | beforeDestroy() { |
| 377 | - // window.removeEventListener('resize', this.handleResize) | |
| 384 | + // window.removeEventListener('resize', this.handleResize) | |
| 378 | 385 | }, |
| 379 | 386 | methods: { |
| 380 | 387 | async initData() { |
| ... | ... | @@ -395,7 +402,9 @@ export default { |
| 395 | 402 | console.error('初始化数据失败:', error) |
| 396 | 403 | } |
| 397 | 404 | }, |
| 398 | - | |
| 405 | + handleRefreshRoom(){ | |
| 406 | + this.listRoom(this.roomInfo.conditions.page,this.roomInfo.conditions.row) | |
| 407 | + }, | |
| 399 | 408 | async listRoom(page, row) { |
| 400 | 409 | this.roomInfo.conditions.page = page |
| 401 | 410 | this.roomInfo.conditions.row = row |
| ... | ... | @@ -455,8 +464,12 @@ export default { |
| 455 | 464 | |
| 456 | 465 | async getColumns(rooms, callback) { |
| 457 | 466 | try { |
| 458 | - const attrSpecs = await getDict('building_room_attr') | |
| 459 | - this.roomInfo.listColumns = attrSpecs | |
| 467 | + const { data } = await getAttrSpecList({ | |
| 468 | + page: 1, | |
| 469 | + row: 100, | |
| 470 | + tableName: 'building_room_attr' | |
| 471 | + }) | |
| 472 | + this.roomInfo.listColumns = data | |
| 460 | 473 | .filter(item => item.listShow === 'Y') |
| 461 | 474 | .map(item => item.specName) |
| 462 | 475 | callback() |
| ... | ... | @@ -465,16 +478,8 @@ export default { |
| 465 | 478 | } |
| 466 | 479 | }, |
| 467 | 480 | |
| 468 | - handleSwitchFloor(data) { | |
| 481 | + switchFloorUnit(data) { | |
| 469 | 482 | this.roomInfo.conditions.floorId = data.floorId |
| 470 | - this.roomInfo.conditions.unitId = '' | |
| 471 | - this.roomInfo.conditions.flag = 1 | |
| 472 | - this.roomInfo.isAll = 'N' | |
| 473 | - this.listRoom(DEFAULT_PAGE, DEFAULT_ROW) | |
| 474 | - }, | |
| 475 | - | |
| 476 | - handleSwitchUnit(data) { | |
| 477 | - this.roomInfo.conditions.floorId = '' | |
| 478 | 483 | this.roomInfo.conditions.unitId = data.unitId |
| 479 | 484 | this.roomInfo.conditions.flag = 1 |
| 480 | 485 | this.roomInfo.isAll = 'N' |
| ... | ... | @@ -490,18 +495,14 @@ export default { |
| 490 | 495 | this.listRoom(val, DEFAULT_ROW) |
| 491 | 496 | }, |
| 492 | 497 | |
| 493 | - computeTableDivWidth() { | |
| 494 | - // const bodyWidth = document.body.clientWidth | |
| 495 | - // const menuWidth = document.getElementById('menu-nav').offsetWidth || 0 | |
| 496 | - // const treeWidth = document.querySelector('.room-floor-unit-tree').offsetWidth || 0 | |
| 497 | - // return `${bodyWidth - menuWidth - treeWidth - 80}px` | |
| 498 | - return '100%' | |
| 499 | - }, | |
| 500 | 498 | |
| 501 | 499 | handleResize() { |
| 502 | 500 | this.$forceUpdate() |
| 503 | 501 | }, |
| 504 | 502 | |
| 503 | + floorUnitTree(param) { | |
| 504 | + this.$refs.floorUnitTree.refreshTree(param) | |
| 505 | + }, | |
| 505 | 506 | // 按钮操作相关方法 |
| 506 | 507 | openAddRoom() { |
| 507 | 508 | this.$router.push('/pages/property/addRoomView') | ... | ... |
src/views/room/roomOweFeesLang.js deleted
| 1 | -export const messages = { | |
| 2 | - en: { | |
| 3 | - roomOweFees: { | |
| 4 | - title: 'Room Arrears', | |
| 5 | - payerObj: 'Charge Object', | |
| 6 | - ownerName: 'Owner Name', | |
| 7 | - phone: 'Phone', | |
| 8 | - startTime: 'Start Time', | |
| 9 | - endTime: 'End Time', | |
| 10 | - total: 'Total', | |
| 11 | - unit: 'Unit: Yuan', | |
| 12 | - updateTime: 'Update Time' | |
| 13 | - }, | |
| 14 | - roomOweFeesDemo: { | |
| 15 | - openBtn: 'View Room Arrears' | |
| 16 | - } | |
| 17 | - }, | |
| 18 | - zh: { | |
| 19 | - roomOweFees: { | |
| 20 | - title: '房屋欠费', | |
| 21 | - payerObj: '收费对象', | |
| 22 | - ownerName: '业主名称', | |
| 23 | - phone: '手机号', | |
| 24 | - startTime: '开始时间', | |
| 25 | - endTime: '结束时间', | |
| 26 | - total: '合计', | |
| 27 | - unit: '单位:元', | |
| 28 | - updateTime: '更新时间' | |
| 29 | - }, | |
| 30 | - roomOweFeesDemo: { | |
| 31 | - openBtn: '查看房屋欠费' | |
| 32 | - } | |
| 33 | - } | |
| 34 | -} | |
| 35 | 0 | \ No newline at end of file |
src/views/room/searchFloorLang.js deleted
| 1 | -export const messages = { | |
| 2 | - en: { | |
| 3 | - room: { | |
| 4 | - searchFloor: { | |
| 5 | - title: 'Building Search', | |
| 6 | - placeholder: { | |
| 7 | - floorId: 'Please enter building ID', | |
| 8 | - floorName: 'Please enter building name', | |
| 9 | - floorNum: 'Please enter building number' | |
| 10 | - }, | |
| 11 | - table: { | |
| 12 | - floorId: 'Building ID', | |
| 13 | - floorName: 'Name', | |
| 14 | - floorNum: 'Number', | |
| 15 | - creator: 'Creator', | |
| 16 | - actions: 'Actions' | |
| 17 | - } | |
| 18 | - } | |
| 19 | - } | |
| 20 | - }, | |
| 21 | - zh: { | |
| 22 | - room: { | |
| 23 | - searchFloor: { | |
| 24 | - title: '小区楼', | |
| 25 | - placeholder: { | |
| 26 | - floorId: '请输入楼栋ID', | |
| 27 | - floorName: '请输入楼栋名称', | |
| 28 | - floorNum: '请输入楼栋编号' | |
| 29 | - }, | |
| 30 | - table: { | |
| 31 | - floorId: '楼ID', | |
| 32 | - floorName: '名称', | |
| 33 | - floorNum: '编号', | |
| 34 | - creator: '创建人', | |
| 35 | - actions: '操作' | |
| 36 | - } | |
| 37 | - } | |
| 38 | - } | |
| 39 | - } | |
| 40 | -} | |
| 41 | 0 | \ No newline at end of file |
src/views/staff/aStaffDetailList.vue
| ... | ... | @@ -141,7 +141,7 @@ export default { |
| 141 | 141 | page: 1 |
| 142 | 142 | }) |
| 143 | 143 | Object.assign(this.staffDetailInfo, response.staffs[0]) |
| 144 | - //this.staffDetailInfo.photo = `/callComponent/download/getFile/fileByObjId?objId=${this.staffDetailInfo.staffId}&communityId=${this.$store.getters.communityId}&fileTypeCd=12000&time=${new Date().getTime()}` | |
| 144 | + //this.staffDetailInfo.photo = `/callComponent/download/getFile/fileByObjId?objId=${this.staffDetailInfo.staffId}&communityId=${this.getCommunityId()}&fileTypeCd=12000&time=${new Date().getTime()}` | |
| 145 | 145 | } catch (error) { |
| 146 | 146 | this.$message.error(this.$t('aStaffDetailList.loadError')) |
| 147 | 147 | } | ... | ... |
vue.config.js
| ... | ... | @@ -22,7 +22,8 @@ module.exports = { |
| 22 | 22 | historyApiFallback: { |
| 23 | 23 | disableDotRule: true, |
| 24 | 24 | rewrites: [ |
| 25 | - { from: /\/img\/.*/, to: function (context) { return context.parsedUrl.pathname; } } | |
| 25 | + { from: /\/img\/.*/, to: function (context) { return context.parsedUrl.pathname; } }, | |
| 26 | + { from: /\*.xlsx/, to: function (context) { return context.parsedUrl.pathname; } } | |
| 26 | 27 | ] |
| 27 | 28 | } |
| 28 | 29 | } | ... | ... |