Commit 20ddb87696df1baf8b8917adcf1a7ff6d9c17672
1 parent
8fc7c791
优化房屋产权
Showing
7 changed files
with
24 additions
and
161 deletions
src/components/car/floorUnitTree.vue deleted
| 1 | -<template> | |
| 2 | - <el-card class="tree-card"> | |
| 3 | - <el-tree | |
| 4 | - ref="tree" | |
| 5 | - :data="treeData" | |
| 6 | - :props="defaultProps" | |
| 7 | - node-key="id" | |
| 8 | - :default-expanded-keys="expandedKeys" | |
| 9 | - :highlight-current="true" | |
| 10 | - @node-click="handleNodeClick" | |
| 11 | - > | |
| 12 | - <template #default="{ node, data }"> | |
| 13 | - <span class="custom-tree-node"> | |
| 14 | - <img :src="data.icon" class="tree-icon" v-if="data.icon"> | |
| 15 | - <span>{{ node.label }}</span> | |
| 16 | - </span> | |
| 17 | - </template> | |
| 18 | - </el-tree> | |
| 19 | - <div v-if="!treeData || treeData.length === 0" class="no-data"> | |
| 20 | - {{ $t('floorUnitTree.noBuilding') }} | |
| 21 | - </div> | |
| 22 | - </el-card> | |
| 23 | -</template> | |
| 24 | - | |
| 25 | -<script> | |
| 26 | -import { queryFloorAndUnits } from '@/api/car/carStructureApi' | |
| 27 | -import { getCommunityId } from '@/api/community/communityApi' | |
| 28 | - | |
| 29 | -export default { | |
| 30 | - name: 'FloorUnitTree', | |
| 31 | - props: { | |
| 32 | - floorId: { | |
| 33 | - type: String, | |
| 34 | - default: '' | |
| 35 | - } | |
| 36 | - }, | |
| 37 | - data() { | |
| 38 | - return { | |
| 39 | - treeData: [], | |
| 40 | - defaultProps: { | |
| 41 | - children: 'children', | |
| 42 | - label: 'text' | |
| 43 | - }, | |
| 44 | - expandedKeys: [], | |
| 45 | - communityId: '' | |
| 46 | - } | |
| 47 | - }, | |
| 48 | - watch: { | |
| 49 | - floorId(newVal) { | |
| 50 | - this.$nextTick(() => { | |
| 51 | - if (newVal) { | |
| 52 | - const node = this.$refs.tree.getNode('f_' + newVal) | |
| 53 | - if (node) { | |
| 54 | - this.$refs.tree.setCurrentKey(node.key) | |
| 55 | - } | |
| 56 | - } | |
| 57 | - }) | |
| 58 | - } | |
| 59 | - }, | |
| 60 | - created() { | |
| 61 | - this.communityId = getCommunityId() | |
| 62 | - this.loadFloorAndUnits() | |
| 63 | - }, | |
| 64 | - methods: { | |
| 65 | - async loadFloorAndUnits() { | |
| 66 | - try { | |
| 67 | - const params = { | |
| 68 | - communityId: this.communityId | |
| 69 | - } | |
| 70 | - const data = await queryFloorAndUnits(params) | |
| 71 | - this.treeData = this.formatTreeData(data) | |
| 72 | - this.setDefaultExpanded() | |
| 73 | - } catch (error) { | |
| 74 | - this.$message.error(this.$t('floorUnitTree.fetchError')) | |
| 75 | - } | |
| 76 | - }, | |
| 77 | - formatTreeData(data) { | |
| 78 | - const formattedData = [] | |
| 79 | - const floorMap = {} | |
| 80 | - | |
| 81 | - // First pass: create floor nodes | |
| 82 | - data.forEach(item => { | |
| 83 | - if (!floorMap[item.floorId]) { | |
| 84 | - floorMap[item.floorId] = { | |
| 85 | - id: 'f_' + item.floorId, | |
| 86 | - floorId: item.floorId, | |
| 87 | - floorNum: item.floorNum, | |
| 88 | - icon: require('@/assets/img/floor.png'), | |
| 89 | - text: `${item.floorNum}${this.$t('floorUnitTree.building')}(${item.floorName})`, | |
| 90 | - children: [] | |
| 91 | - } | |
| 92 | - formattedData.push(floorMap[item.floorId]) | |
| 93 | - } | |
| 94 | - | |
| 95 | - // Add unit if it exists and not '0' | |
| 96 | - if (item.unitId && item.unitNum !== '0') { | |
| 97 | - floorMap[item.floorId].children.push({ | |
| 98 | - id: 'u_' + item.unitId, | |
| 99 | - unitId: item.unitId, | |
| 100 | - text: `${item.unitNum}${this.$t('floorUnitTree.unit')}`, | |
| 101 | - icon: require('@/assets/img/unit.png') | |
| 102 | - }) | |
| 103 | - } | |
| 104 | - }) | |
| 105 | - | |
| 106 | - return formattedData | |
| 107 | - }, | |
| 108 | - setDefaultExpanded() { | |
| 109 | - if (this.treeData.length > 0) { | |
| 110 | - this.expandedKeys = [this.treeData[0].id] | |
| 111 | - } | |
| 112 | - }, | |
| 113 | - handleNodeClick(data) { | |
| 114 | - if (data.id.startsWith('f_')) { | |
| 115 | - this.$emit('switchFloor', { floorId: data.floorId }) | |
| 116 | - } else if (data.id.startsWith('u_')) { | |
| 117 | - this.$emit('switchUnit', { unitId: data.unitId }) | |
| 118 | - } | |
| 119 | - }, | |
| 120 | - refreshTree(params) { | |
| 121 | - if (params && params.floorId) { | |
| 122 | - this.floorId = params.floorId | |
| 123 | - } | |
| 124 | - this.loadFloorAndUnits() | |
| 125 | - } | |
| 126 | - } | |
| 127 | -} | |
| 128 | -</script> | |
| 129 | - | |
| 130 | -<style lang="scss" scoped> | |
| 131 | -.tree-card { | |
| 132 | - height: 100%; | |
| 133 | - | |
| 134 | - .custom-tree-node { | |
| 135 | - display: flex; | |
| 136 | - align-items: center; | |
| 137 | - } | |
| 138 | - | |
| 139 | - .tree-icon { | |
| 140 | - width: 16px; | |
| 141 | - height: 16px; | |
| 142 | - margin-right: 5px; | |
| 143 | - } | |
| 144 | - | |
| 145 | - .no-data { | |
| 146 | - padding: 10px; | |
| 147 | - text-align: center; | |
| 148 | - color: #909399; | |
| 149 | - } | |
| 150 | -} | |
| 151 | -</style> | |
| 152 | 0 | \ No newline at end of file |
src/components/room/editPropertyRightRegistrationDetail.vue
| ... | ... | @@ -114,30 +114,32 @@ export default { |
| 114 | 114 | this.visible = true |
| 115 | 115 | }, |
| 116 | 116 | loadPhotos() { |
| 117 | + setTimeout(() => { | |
| 117 | 118 | if (this.editPropertyRightRegistrationDetailInfo.securities === '001' && this.editPropertyRightRegistrationDetailInfo.idCardUrl) { |
| 118 | - const urls = this.editPropertyRightRegistrationDetailInfo.idCardUrl.trim() | |
| 119 | + const urls = this.editPropertyRightRegistrationDetailInfo.idCardUrl | |
| 119 | 120 | if (urls) { |
| 120 | 121 | this.$refs.idCardUpload.setImages(urls.split(',')) |
| 121 | 122 | } |
| 122 | 123 | } |
| 123 | 124 | if (this.editPropertyRightRegistrationDetailInfo.securities === '002' && this.editPropertyRightRegistrationDetailInfo.housePurchaseUrl) { |
| 124 | - const urls = this.editPropertyRightRegistrationDetailInfo.housePurchaseUrl.trim() | |
| 125 | + const urls = this.editPropertyRightRegistrationDetailInfo.housePurchaseUrl | |
| 125 | 126 | if (urls) { |
| 126 | 127 | this.$refs.housePurchaseUpload.setImages(urls.split(',')) |
| 127 | 128 | } |
| 128 | 129 | } |
| 129 | 130 | if (this.editPropertyRightRegistrationDetailInfo.securities === '003' && this.editPropertyRightRegistrationDetailInfo.repairUrl) { |
| 130 | - const urls = this.editPropertyRightRegistrationDetailInfo.repairUrl.trim() | |
| 131 | + const urls = this.editPropertyRightRegistrationDetailInfo.repairUrl | |
| 131 | 132 | if (urls) { |
| 132 | 133 | this.$refs.repairUpload.setImages(urls.split(',')) |
| 133 | 134 | } |
| 134 | 135 | } |
| 135 | 136 | if (this.editPropertyRightRegistrationDetailInfo.securities === '004' && this.editPropertyRightRegistrationDetailInfo.deedTaxUrl) { |
| 136 | - const urls = this.editPropertyRightRegistrationDetailInfo.deedTaxUrl.trim() | |
| 137 | + const urls = this.editPropertyRightRegistrationDetailInfo.deedTaxUrl | |
| 137 | 138 | if (urls) { |
| 138 | - this.$refs.deedTaxUpload.setImages(urls.split(',')) | |
| 139 | + this.$refs.deedTaxUpload.setImages(urls.split(',')) | |
| 140 | + } | |
| 139 | 141 | } |
| 140 | - } | |
| 142 | + }, 1000) | |
| 141 | 143 | }, |
| 142 | 144 | handleIdCardImageChange(photos) { |
| 143 | 145 | this.editPropertyRightRegistrationDetailInfo.idCardPhotos = photos | ... | ... |
src/components/room/floorUnitTree.vue
| ... | ... | @@ -48,6 +48,13 @@ export default { |
| 48 | 48 | refreshTree(param) { |
| 49 | 49 | this.handleRefreshTree(param) |
| 50 | 50 | }, |
| 51 | + selectFirstUnit(){ | |
| 52 | + if(this.treeData.length > 0){ | |
| 53 | + this.handleNodeClick(this.treeData[0].children[0]) | |
| 54 | + // 并且展开 | |
| 55 | + | |
| 56 | + } | |
| 57 | + }, | |
| 51 | 58 | handleRefreshTree(param) { |
| 52 | 59 | if (param) { |
| 53 | 60 | this.currentFloorId = param.floorId | ... | ... |
src/views/car/carStructureList.vue
src/views/room/listPropertyRightRegistrationDetailList.vue
| 1 | 1 | <template> |
| 2 | 2 | <div class="property-right-detail-container"> |
| 3 | 3 | <el-card class="box-card"> |
| 4 | - <div slot="header" class="clearfix"> | |
| 5 | - <div class="card-header"> | |
| 4 | + <div slot="header" class="flex justify-between"> | |
| 6 | 5 | <div> |
| 7 | 6 | <span>{{ listPropertyRightRegistrationDetailInfo.conditions.floorNum }}-{{ |
| 8 | 7 | listPropertyRightRegistrationDetailInfo.conditions.unitNum }}-{{ |
| ... | ... | @@ -15,7 +14,7 @@ |
| 15 | 14 | <span>{{ $t('common.back') }}</span> |
| 16 | 15 | </el-button> |
| 17 | 16 | </div> |
| 18 | - </div> | |
| 17 | + | |
| 19 | 18 | </div> |
| 20 | 19 | |
| 21 | 20 | <el-table :data="listPropertyRightRegistrationDetailInfo.propertyRightRegistrationDetails" border | ... | ... |
src/views/room/propertyRightRegistrationManageList.vue
src/views/room/roomStructureList.vue