2 changed files with 922 additions and 0 deletions
			
			
		| @ -0,0 +1,356 @@ | |||
| <template> | |||
|   <div class="mode-block resi-container"> | |||
|     <el-card ref="searchCard" class="search-card"> | |||
|       <el-form :inline="true" :model="dataForm" size="small"> | |||
|         <el-form-item label="所属组织" label-width="100px" | |||
|                       prop="agencyId"> | |||
|           <el-cascader ref="cascaderUnit" v-model="dataForm.agencyId" :options="optionsA" :props="{ checkStrictly: true, emitPath: false,children:'subAgencyList',label:'agencyName',value:'agencyId'}" clearable /> | |||
|             <!-- <template slot-scope="{ node, data }"> | |||
|               <div @click="cascaderClick(data)"> | |||
|                 <span>{{ data.objectName }}</span> | |||
|                 <span v-if="!node.isLeaf"> ({{ data.children.length }}) </span> | |||
|               </div> | |||
|             </template> --> | |||
|         </el-form-item> | |||
|         <el-form-item label="时间范围" | |||
|                       prop="startTime"> | |||
|           <el-date-picker v-model="timeRange" | |||
|                           type="daterange" | |||
|                           clearable | |||
|                           size="small" | |||
|                           range-separator="至" | |||
|                           start-placeholder="选择日期" | |||
|                           end-placeholder="选择日期" | |||
|                           value-format="yyyy-MM-dd"> | |||
|           </el-date-picker> | |||
|         </el-form-item> | |||
|         <el-form-item> | |||
|           <el-button type="primary" size="small" class="diy-button--search" @click="handleSearch">查询</el-button> | |||
|         </el-form-item> | |||
|       </el-form> | |||
|     </el-card> | |||
|     <el-card class="resi-card-table"> | |||
|       <div class="resi-row-btn"> | |||
|         <el-button @click="totalHandle" | |||
|                     class="diy-button--add" | |||
|                     size="small">总计</el-button> | |||
|         <el-button @click="exportHandle" | |||
|                     class="diy-button--reset" | |||
|                     size="small">导出</el-button> | |||
|       </div> | |||
|       <el-table class="resi-table" v-loading="dataListLoading" :data="dataList" border @selection-change="dataListSelectionChangeHandle" style="width: 100%" | |||
|       :height="tableHeight"> | |||
|         <el-table-column type="selection" header-align="center" align="center" width="50"></el-table-column> | |||
|         <el-table-column min-width="100" prop="orgName" label="网格员数" header-align="center" align="center" /> | |||
|         <el-table-column min-width="100" prop="memberCount" label="所属社区" header-align="center" align="center" /> | |||
|         <el-table-column min-width="100" prop="projectCount" label="上报数量" header-align="center" align="center" /> | |||
|         <el-table-column min-width="110" prop="closedCount" label="办结数" header-align="center" align="center" /> | |||
|         <el-table-column min-width="110" prop="projectAve" label="人均上报" header-align="center" align="center" /> | |||
|         <el-table-column min-width="110" prop="closedAve" label="人均办结" header-align="center" align="center" /> | |||
|       </el-table> | |||
|       <div> | |||
|         <el-pagination | |||
|           @size-change="handleSizeChange" | |||
|           @current-change="handleCurrentChange" | |||
|           :current-page.sync="pageNo" | |||
|           :page-sizes="[20, 50, 100, 200]" | |||
|           :page-size="pageSize" | |||
|           layout="sizes, prev, pager, next, total" | |||
|           :total="total" | |||
|         > | |||
|         </el-pagination> | |||
|       </div> | |||
|     </el-card> | |||
|     <!-- 弹窗, 新增 / 修改 --> | |||
|     <add-or-update v-if="addOrUpdateVisible" ref="addOrUpdate" @refreshDataList="getDataList"></add-or-update> | |||
|     <el-dialog | |||
|             title="总计" | |||
|             :visible.sync="totalVisible" | |||
|             width="60%"> | |||
|       <template> | |||
|         <el-table | |||
|                 :data="tableData" | |||
|                 style="width: 100%" | |||
|                 height="200"> | |||
|           <el-table-column type="selection" header-align="center" align="center" width="50"></el-table-column> | |||
|           <el-table-column min-width="100" prop="orgName" label="网格员数" header-align="center" align="center" /> | |||
|           <el-table-column min-width="100" prop="memberCount" label="所属社区" header-align="center" align="center" /> | |||
|           <el-table-column min-width="100" prop="projectCount" label="上报数量" header-align="center" align="center" /> | |||
|           <el-table-column min-width="110" prop="closedCount" label="办结数" header-align="center" align="center" /> | |||
|           <el-table-column min-width="110" prop="projectAve" label="人均上报" header-align="center" align="center" /> | |||
|           <el-table-column min-width="110" prop="closedAve" label="人均办结" header-align="center" align="center" /> | |||
|         </el-table> | |||
|       </template> | |||
|     </el-dialog> | |||
|   </div> | |||
| </template> | |||
| 
 | |||
| <script> | |||
| import { mapGetters } from "vuex"; | |||
| // import AddOrUpdate from './factagencyuserhousedaily-add-or-update' | |||
| export default { | |||
|   data () { | |||
|     return { | |||
|       mixinViewModuleOptions: { | |||
|         getDataListURL: '/data/stats/factAgencyUserHouseDaily/page', | |||
|         getDataListIsPage: true, | |||
|         deleteURL: '/data/stats/factAgencyUserHouseDaily', | |||
|         deleteIsBatch: true, | |||
|         exportURL: '/data/stats/factAgencyUserHouseDaily/export' | |||
|       }, | |||
|       optionsA: [], | |||
|       totalVisible: false, | |||
|       timeRange: '', | |||
|       dataForm: { | |||
|         agencyId: '', | |||
|         startTime: '', | |||
|         endTime: '', | |||
|         type: '' | |||
|       }, | |||
|       total: 0, | |||
|       tableData: [], | |||
|       pageNo: 1, | |||
|       pageSize: 20 | |||
|     } | |||
|   }, | |||
|   components: { | |||
|     // AddOrUpdate | |||
|   }, | |||
|   created () { | |||
|     this.getGridList() | |||
|     this.getTableList() | |||
|     // this.getValiheList() | |||
|   }, | |||
|   watch: { | |||
|     timeRange (val) { | |||
|       if (Array.isArray(val) && val.length == 2) { | |||
|         this.dataForm.startTime = val[0]; | |||
|         this.dataForm.endTime = val[1]; | |||
|       } else { | |||
|         this.dataForm.startTime = ""; | |||
|         this.dataForm.endTime = ""; | |||
|       } | |||
|     } | |||
|   }, | |||
|   computed: { | |||
|     ...mapGetters(["clientHeight", "iframeHeight"]), | |||
|     tableHeight() { | |||
|       const h = this.clientHeight - 360 + this.iframeHeigh; | |||
|       const _h = this.clientHeight - 360; | |||
|       return this.$store.state.inIframe ? h : _h; | |||
|     }, | |||
|   }, | |||
|   methods: { | |||
|      | |||
|     handleSearch() { | |||
|       this.dataForm.type = 1 | |||
|       this.pageNo = 1 | |||
|       this.getTableList() | |||
|     }, | |||
|     handleSizeChange(val) { | |||
|       console.log(`每页 ${val} 条`); | |||
|       this.pageSize = val; | |||
|       this.getTableList(); | |||
|     }, | |||
|     handleCurrentChange(val) { | |||
|       console.log(`当前页: ${val}`); | |||
|       this.pageNo = val; | |||
|       this.getTableList(); | |||
|     }, | |||
|     exportHandle () { | |||
|       const url = this.mixinViewModuleOptions.exportURL | |||
|       this.$http({ | |||
|         method: 'GET', | |||
|         url, | |||
|         responseType: 'blob', | |||
|         params: this.dataForm | |||
|       }).then(res => { | |||
|         // this.download(res.data, title + '.xls') | |||
|         if (res.headers["content-disposition"]) { | |||
|           let fileName = window.decodeURI(res.headers["content-disposition"].split(";")[1].split("=")[1]) | |||
|           console.log('filename', fileName) | |||
|           let blob = new Blob([res.data], { type: 'application/vnd.ms-excel' }) | |||
|           var url = window.URL.createObjectURL(blob) | |||
|           var aLink = document.createElement('a') | |||
|           aLink.style.display = 'none' | |||
|           aLink.href = url | |||
|           aLink.setAttribute('download', fileName) | |||
|           document.body.appendChild(aLink) | |||
|           aLink.click() | |||
|           document.body.removeChild(aLink) //下载完成移除元素 | |||
|           window.URL.revokeObjectURL(url) //释放掉blob对象 | |||
|         } else this.$message.error('下载失败') | |||
|       }).catch(err => { | |||
|         console.log('err', err) | |||
|         return this.$message.error('网络错误') | |||
|       }) | |||
|     }, | |||
|     cascaderClick (nodeData) { | |||
|       this.dataForm.agencyId = nodeData.objectId; | |||
|       this.dataForm.level = nodeData.objectType | |||
|       this.$refs.cascaderUnit.checkedValue = nodeData.objectId; | |||
|       this.$refs.cascaderUnit.computePresentText(); | |||
|       this.$refs.cascaderUnit.toggleDropDownVisible(false); | |||
| 
 | |||
|     }, | |||
|     totalHandle () { | |||
|       this.tableData = [] | |||
|       this.dataForm.type = 0 | |||
|       this.$http | |||
|               .get('/data/stats/factAgencyUserHouseDaily/total',{params: this.dataForm}) | |||
|               .then(({ data: res }) => { | |||
|                 if (res.code !== 0) { | |||
|                   return this.$message.error(res.msg) | |||
|                 } else { | |||
|                   console.log('获取查询详情成功', res.data) | |||
|                   if (res.data) this.tableData.push(res.data) | |||
|                 } | |||
|               }) | |||
|               .catch(() => { | |||
|                 return this.$message.error('网络错误') | |||
|               }) | |||
|       this.totalVisible = true | |||
|     }, | |||
|     getTableList() { | |||
|       const { user } = this.$store.state | |||
|        | |||
|       this.$http | |||
|         .post('/data/aggregator/org/orgProjectDetailList', this.dataForm) | |||
|         .then(({ data: res }) => { | |||
|           if (res.code !== 0) { | |||
|             return this.$message.error(res.msg) | |||
|           } else { | |||
|             this.dataList = res.data.list | |||
|             this.total = res.data.total | |||
|           } | |||
|         }) | |||
|         .catch(() => { | |||
|           return this.$message.error('网络错误') | |||
|         }) | |||
|     }, | |||
|     getGridList() { | |||
|       const { user } = this.$store.state | |||
|       const params = { | |||
|         agencyId: user.agencyId, | |||
|         client: 'gov' | |||
|       } | |||
|       this.$http | |||
|         // .post('/gov/org/userhouse/service/serviceScopeTree') | |||
|         // .post('/data/aggregator/org/agencytree', params) | |||
|         .post('/gov/org/customeragency/staffinagencylist') | |||
|         .then(({ data: res }) => { | |||
|           if (res.code !== 0) { | |||
|             return this.$message.error(res.msg) | |||
|           } else { | |||
|             console.log('获取查询详情成功', res.data) | |||
|             let { agencyList, subAgencyList } = res.data | |||
|             // this.optionsA = res.data | |||
|             // console.log(this.optionsA); | |||
|             const _arr = [{...agencyList, subAgencyList: [...subAgencyList] }] | |||
|             this.optionsA = this.deepTree(_arr) | |||
|             console.log('optionsA----', this.optionsA) | |||
|           } | |||
|         }) | |||
|         .catch(() => { | |||
|           return this.$message.error('网络错误') | |||
|         }) | |||
|     }, | |||
|     deepTree(arr) { | |||
|       if (Array.isArray(arr)) { | |||
|         return arr.map(item => { | |||
|           return { | |||
|             ...item, | |||
|             subAgencyList: item.subAgencyList.length > 0 && this.deepTree(item.subAgencyList) || null | |||
|           } | |||
|         }) | |||
|       } | |||
|     } | |||
|   } | |||
| } | |||
| </script> | |||
| <style> | |||
| .block{ | |||
|   position: absolute; | |||
|   left: 0px; | |||
|   display: inline-block; | |||
|   width: 35px; | |||
|   height: 50px; | |||
|   background: #fff; | |||
| } | |||
| .cascader-block .el-cascader-node>.el-radio{ | |||
|   display: none; | |||
| } | |||
| </style> | |||
| <style lang="scss" scoped> | |||
|   .blacklist-reason { | |||
|     width: 100%; | |||
|     height: 80px; | |||
|     border: 1px solid #e4e4e4; | |||
|     border-radius: 4px; | |||
|     resize: none; | |||
|     padding: 8px; | |||
|     box-sizing: border-box; | |||
|   } | |||
| </style> | |||
| <style lang="scss" scoped> | |||
|   @import "@/assets/scss/buttonstyle.scss"; | |||
| 
 | |||
|   .resi-container .resi-card-table { | |||
|     ::v-deep .el-table th { | |||
|       color: #fff; | |||
|       background-color: rgba(33, 149, 254, 1); | |||
|       // border-right: 1px solid rgba(33, 149, 254, 1); | |||
|     } | |||
|   } | |||
|   .resi-table { | |||
|     ::v-deep .el-button--text { | |||
|       text-decoration: underline; | |||
|     } | |||
|     ::v-deep .btn-color-del { | |||
|       margin-left: 10px; | |||
|       color: rgba(213, 16, 16, 1); | |||
|     } | |||
|     ::v-deep .btn-color-edit { | |||
|       color: rgba(0, 167, 169, 1); | |||
|     } | |||
|   } | |||
|   .form-wr { | |||
|     .input-width { | |||
|       width: 260px; | |||
| 
 | |||
|     } | |||
|     .input-width-textarea { | |||
|       width: 500px; | |||
|     } | |||
|     .imsg-list { | |||
|       display: flex; | |||
|       align-items: center; | |||
|       .imgs-item { | |||
|         position: relative; | |||
|         margin-right: 10px; | |||
|         .el-icon-delete { | |||
|           position: absolute; | |||
|           top: 0; | |||
|           right: 0; | |||
|           font-size: 18px; | |||
|           color: red; | |||
|           z-index: 3; | |||
|           cursor: pointer; | |||
|         } | |||
|       } | |||
|     } | |||
|   } | |||
|   .div-content { | |||
|     width: 100%; | |||
|     overflow: hidden; | |||
|     text-overflow: ellipsis; | |||
|     white-space: nowrap; | |||
|   } | |||
|   .resi-row-btn { | |||
|     margin-bottom: 13px; | |||
|     .upload-btn { | |||
|       display: inline-block; | |||
|       margin: 0 10px; | |||
|     } | |||
|   } | |||
| </style> | |||
| @ -0,0 +1,566 @@ | |||
| <template> | |||
|   <div class="div_main"> | |||
| 
 | |||
|     <div :style="{height:rowHeight}" | |||
|          class="div_tree"> | |||
|       <el-input placeholder="输入关键字进行过滤" | |||
|                 v-model="filterText"> | |||
|       </el-input> | |||
|       <el-scrollbar :style="{height:treeHeight}" | |||
|                     class="scrollar"> | |||
|         <el-tree ref="ref_tree" | |||
|                  v-loading="treeLoading" | |||
|                  class="filter_tree" | |||
|                  :data="treeData" | |||
|                  :props="defaultProps" | |||
|                  :highlight-current="true" | |||
|                  node-key="id" | |||
|                  :default-expanded-keys="openNodes" | |||
|                  :expand-on-click-node="false" | |||
|                  :filter-node-method="filterNode" | |||
|                  @node-click="handleNodeClick"> | |||
| 
 | |||
|           <span slot-scope="{ node, data }" | |||
|                 class="custom-tree-node"> | |||
|             <span :id="data.id">{{ data.showName }}</span> | |||
|           </span> | |||
|         </el-tree> | |||
|       </el-scrollbar> | |||
| 
 | |||
|     </div> | |||
| 
 | |||
|     <div :style="{height:rowHeight}" | |||
|          class=div_left> | |||
| 
 | |||
|       <div class="div_search marginl-20"> | |||
|         <el-form :inline="true" | |||
|                  ref="ref_searchform" | |||
|                  :label-width="'80px'"> | |||
|           <div> | |||
| 
 | |||
|             <el-form-item label="房主姓名" | |||
|                           prop="ownerName"> | |||
|               <el-input v-model="ownerName" | |||
|                         class="item_width_2" | |||
|                         size="small" | |||
|                         clearable | |||
|                         placeholder="请输入内容"> | |||
| 
 | |||
|               </el-input> | |||
|             </el-form-item> | |||
|             <el-form-item label="联系方式" | |||
|                           prop="ownerPhone"> | |||
|               <el-input v-model="ownerPhone" | |||
|                         class="item_width_2" | |||
|                         size="small" | |||
|                         clearable | |||
|                         placeholder="请输入手机"> | |||
|               </el-input> | |||
| 
 | |||
|             </el-form-item> | |||
| 
 | |||
|             <el-form-item label="房屋状态" | |||
|                           prop="rentFlag"> | |||
|               <el-select class="item_width_2" | |||
|                          v-model="rentFlag" | |||
|                          placeholder="请选择" | |||
|                          size="small" | |||
|                          clearable> | |||
|                 <el-option v-for="item in rentList" | |||
|                            :key="item.value" | |||
|                            :label="item.label" | |||
|                            :value="item.value"> | |||
|                 </el-option> | |||
|               </el-select> | |||
|             </el-form-item> | |||
| 
 | |||
|             <el-form-item label="房屋用途" | |||
|                           prop="purpose"> | |||
|               <el-select v-model="purpose" | |||
|                          class="item_width_2" | |||
|                          placeholder="请选择" | |||
|                          size="small" | |||
|                          clearable> | |||
|                 <el-option v-for="item in purposeArr" | |||
|                            :key="item.dictValue" | |||
|                            :label="item.dictName" | |||
|                            :value="item.dictValue"> | |||
|                 </el-option> | |||
|               </el-select> | |||
| 
 | |||
|             </el-form-item> | |||
| 
 | |||
|             <el-form-item label="备注" | |||
|                           prop="remark"> | |||
|               <el-input v-model="remark" | |||
|                         class="item_width_2" | |||
|                         size="small" | |||
|                         clearable | |||
|                         placeholder="请输入备注"> | |||
|               </el-input> | |||
|             </el-form-item> | |||
|             <el-form-item label="更新时间" | |||
|                           prop="updateStartDate"> | |||
|               <el-date-picker v-model="updateStartDate" | |||
|                               :picker-options="startPickerOptions" | |||
|                               class="item_width_2" | |||
|                               size="small" | |||
|                               type="date" | |||
|                               value-format="yyyyMMdd" | |||
|                               value="yyyy-MM-dd" | |||
|                               placeholder="开始时间"> | |||
|               </el-date-picker> | |||
|               <span class="data-tag">至</span> | |||
|               <el-date-picker v-model="updateEndDate" | |||
|                               :picker-options="endPickerOptions" | |||
|                               class="item_width_2 data-tag" | |||
|                               size="small" | |||
|                               type="date" | |||
|                               value-format="yyyyMMdd" | |||
|                               value="yyyy-MM-dd" | |||
|                               placeholder="结束时间"> | |||
|               </el-date-picker> | |||
|             </el-form-item> | |||
| 
 | |||
|             <el-button style="margin-left:30px" | |||
|                        size="small" | |||
|                        class="diy-button--search" | |||
|                        @click="handleSearch">查询</el-button> | |||
|             <el-button style="margin-left:10px" | |||
|                        size="small" | |||
|                        class="diy-button--reset" | |||
|                        @click="resetSearch">重置</el-button> | |||
|           </div> | |||
|         </el-form> | |||
|       </div> | |||
|       <div class=div_left_table> | |||
|          | |||
|       </div> | |||
|     </div> | |||
| 
 | |||
|   </div> | |||
| </template> | |||
| 
 | |||
| <script> | |||
| import CDialog from '@c/CDialog' | |||
| import { requestPost } from "@/js/dai/request"; | |||
| import { mapGetters } from 'vuex' | |||
| import { Loading } from 'element-ui' // 引入Loading服务 | |||
| 
 | |||
| let loading // 加载动画 | |||
| export default { | |||
|   data () { | |||
|     let endDisabledDate = (time) => {//这个关键属性我们一定要写在data的里面并且return的外面,这是动态改变区间的关键 | |||
|       let nowData = Date.now() | |||
|       if (this.updateStartDate) { | |||
|         let startTime = new Date(this.updateStartDate) | |||
|         return time.getTime() > nowData || time.getTime() < startTime || time.getTime() === startTime | |||
|       } else { | |||
|         return time.getTime() > nowData | |||
|       } | |||
| 
 | |||
|     } | |||
|     let startDisabledDate = (time) => {//这个关键属性我们一定要写在data的里面并且return的外面,这是动态改变区间的关键 | |||
|       let nowData = Date.now() | |||
|       return time.getTime() > nowData | |||
|     } | |||
|     return { | |||
|       filterText: '', | |||
|       treeLoading: true, | |||
|       treeData: [], | |||
|       openNodes: [], | |||
|       defaultProps: { | |||
|         children: 'children', | |||
|         label: 'showName' | |||
|       }, | |||
| 
 | |||
|       selTreeObj: {}, | |||
| 
 | |||
|       centerPoint: [], | |||
|       staffAgencyId: localStorage.getItem("agencyId"), | |||
|       showImportBtn: false, | |||
| 
 | |||
|       rentList: [ | |||
|         { | |||
|           value: '1', | |||
|           label: '出租' | |||
|         }, | |||
|         { | |||
|           value: '2', | |||
|           label: '闲置' | |||
|         }, | |||
|         { | |||
|           value: '0', | |||
|           label: '自住' | |||
|         }, | |||
|         { | |||
|           value: '3', | |||
|           label: '未出售' | |||
|         }, | |||
|       ], | |||
|       ownerName: '', | |||
|       ownerPhone: '', | |||
|       rentFlag: '', | |||
|       purpose: '', | |||
|       remark: '', | |||
|       updateStartDate: '', | |||
|       updateEndDate: '', | |||
|       showRoomTable: false, | |||
|       selObj: {}, | |||
|       purposeArr: [ | |||
|         { dictValue: '1', dictName: '住宅' }, | |||
|         { dictValue: '2', dictName: '商业' }, | |||
|         { dictValue: '3', dictName: '办公' }, | |||
|         { dictValue: '4', dictName: '工业' }, | |||
|         { dictValue: '5', dictName: '仓储' }, | |||
|         { dictValue: '6', dictName: '商住混用' }, | |||
|         { dictValue: '7', dictName: '其他' } | |||
|       ], | |||
|       endPickerOptions: { | |||
|         disabledDate: endDisabledDate | |||
|       }, | |||
|       startPickerOptions: { | |||
|         disabledDate: startDisabledDate | |||
|       }, | |||
|     } | |||
|   }, | |||
|   components: { | |||
|     CDialog | |||
|   }, | |||
|   async mounted () { | |||
|     this.treeLoading = true | |||
| 
 | |||
|     await this.loadOrgData() | |||
|     await this.loadTree() | |||
|     // await this.loadOpenNode() | |||
| 
 | |||
|     await this.$refs['ref_communityTable'].loadTable(true, this.selTreeObj) | |||
|     if (this.treeData.length > 0) { | |||
|       this.$nextTick(() => { | |||
|         // ref_tree 元素的ref   value 绑定的node-key | |||
|         this.$refs.ref_tree.setCurrentKey(this.treeData[0].id); | |||
|       }); | |||
|     } | |||
|     this.treeLoading = false | |||
| 
 | |||
|   }, | |||
|   computed: { | |||
|     rowHeight () { | |||
| 
 | |||
|       return this.$store.state.inIframe ? this.clientHeight - 140 + this.iframeHeight + 'px' : this.clientHeight - 140 + 'px' | |||
| 
 | |||
|     }, | |||
|     treeHeight () { | |||
|       return this.$store.state.inIframe ? this.clientHeight - 200 + this.iframeHeight + 'px' : this.clientHeight - 200 + 'px' | |||
| 
 | |||
|     }, | |||
| 
 | |||
|     ...mapGetters(['clientHeight', 'iframeHeight']) | |||
|   }, | |||
|   methods: { | |||
| 
 | |||
|     handleSearch () { | |||
|       // if (this.ownerName || this.ownerPhone || this.rentFlag || this.purpose || this.remark) { | |||
|       this.showRoomTable = true | |||
| 
 | |||
|       this.$nextTick(() => { | |||
|         this.$refs['ref_buildingTable'].loadTable('search', this.selTreeObj) | |||
|       }) | |||
|       // } else { | |||
|       //   this.$message.warning('请输入查询条件') | |||
|       // } | |||
| 
 | |||
| 
 | |||
|     }, | |||
| 
 | |||
|     //重置搜索条件 | |||
|     resetSearch () { | |||
|       this.ownerName = '' | |||
|       this.ownerPhone = '' | |||
|       this.rentFlag = '' | |||
|       this.purpose = '' | |||
|       this.remark = '' | |||
|       this.updateStartDate = '' | |||
|       this.updateEndDate = '' | |||
| 
 | |||
|       this.pageSize = 10 | |||
|       this.pageNo = 1 | |||
|       // this.handleNodeClick(this.selObj) | |||
|       // this.loadTable() | |||
|     }, | |||
| 
 | |||
|     async loadOpenNode () { | |||
|       const url = "/gov/org/building/tree-ids" | |||
|       let params = {} | |||
| 
 | |||
|       const { data, code, msg } = await requestPost(url, params) | |||
| 
 | |||
|       if (code === 0) { | |||
|         this.openNodes = data | |||
| 
 | |||
| 
 | |||
|       } else { | |||
|         this.$message.error(msg) | |||
|       } | |||
|     }, | |||
|     async loadTree (isRefresh) { | |||
|       const url = "/gov/org/building/treelist" | |||
|       let params = {} | |||
| 
 | |||
|       const { data, code, msg } = await requestPost(url, params) | |||
| 
 | |||
|       if (code === 0) { | |||
|         this.openNodes = [] | |||
|         this.openNodes.push(data[0].id) | |||
| 
 | |||
|         this.treeData = data | |||
|         if (!isRefresh && data.length > 0) { | |||
| 
 | |||
|           this.selTreeObj = data[0] | |||
|           if (!this.selTreeObj.latitude) { | |||
|             this.selTreeObj.latitude = this.centerPoint[0] | |||
|           } | |||
| 
 | |||
|           if (!this.selTreeObj.longitude) { | |||
|             this.selTreeObj.longitude = this.centerPoint[1] | |||
|           } | |||
|         } | |||
| 
 | |||
|       } else { | |||
|         this.$message.error(msg) | |||
|       } | |||
|     }, | |||
| 
 | |||
|     //加载组织数据 | |||
|     async loadOrgData () { | |||
|       const url = "/gov/org/agency/maporg" | |||
|       // const url = "http://yapi.elinkservice.cn/mock/245/gov/org/agency/maporg" | |||
|       let params = {} | |||
| 
 | |||
|       const { data, code, msg } = await requestPost(url, params) | |||
| 
 | |||
|       if (code === 0) { | |||
|         this.centerPoint = [] | |||
| 
 | |||
|         this.centerPoint.push(data.latitude) | |||
|         this.centerPoint.push(data.longitude) | |||
| 
 | |||
|       } else { | |||
|         this.$message.error(msg) | |||
|       } | |||
| 
 | |||
|     }, | |||
| 
 | |||
|     handleNodeClick (obj) { | |||
|       this.ownerName = '' | |||
|       this.ownerPhone = '' | |||
|       this.rentFlag = '' | |||
|       this.purpose = '' | |||
|       this.remark = '' | |||
|       this.updateStartDate = '' | |||
|       this.updateEndDate = '' | |||
|       this.showRoomTable = false | |||
| 
 | |||
|       this.selObj = JSON.parse(JSON.stringify(obj)) | |||
|       this.getTreeObj(obj) | |||
| 
 | |||
|       this.$nextTick(() => { | |||
|         if (obj.level === 'building') {//点击楼栋 | |||
|           this.$refs['ref_buildingTable'].loadTable('tree', this.selTreeObj) | |||
| 
 | |||
|         } else if (obj.level === 'neighborHood') {//点击小区 | |||
|           this.$refs['ref_neighTable'].loadTable(true, this.selTreeObj) | |||
| 
 | |||
|         } else { | |||
|           this.$refs['ref_communityTable'].loadTable(true, this.selTreeObj) | |||
|         } | |||
|       }) | |||
| 
 | |||
|     }, | |||
| 
 | |||
|     //添加小区结束 | |||
|     async refreshTree () { | |||
|       this.treeLoading = true | |||
|       await this.loadTree(this.selTreeObj.id) | |||
|       this.$nextTick(() => { | |||
|         // ref_tree 元素的ref   value 绑定的node-key | |||
|         this.$refs.ref_tree.setCurrentKey(this.selTreeObj.id); | |||
|       }); | |||
|       this.treeLoading = false | |||
|     }, | |||
| 
 | |||
|     //进入下一级 | |||
|     toNextLevel (row, level) { | |||
| 
 | |||
|       if (level === 'community') { | |||
|         this.selTreeObj = this.$refs.ref_tree.getNode(row.neighborHoodId).data | |||
|         this.openNodes.push(this.selTreeObj.id) | |||
|       } else { | |||
|         this.selTreeObj = this.$refs.ref_tree.getNode(row.buildingId).data | |||
|       } | |||
| 
 | |||
| 
 | |||
|       this.handleNodeClick(this.selTreeObj) | |||
|       this.$nextTick(() => { | |||
|         // ref_tree 元素的ref   value 绑定的node-key | |||
|         this.$refs.ref_tree.setCurrentKey(this.selTreeObj.id); | |||
|       }); | |||
| 
 | |||
|       const node = document.getElementById(this.selTreeObj.id) // 通过Id获取到对应的dom元素 | |||
|       setTimeout(() => { | |||
|         if (node) { | |||
|           this.$nextTick(() => { | |||
|             node.scrollIntoView({ block: 'center' }) // 通过scrollIntoView方法将对应的dom元素定位到可见区域 【block: 'center'】这个属性是在垂直方向居中显示 | |||
|           }) | |||
|         } | |||
|       }, 100) | |||
| 
 | |||
| 
 | |||
|     }, | |||
| 
 | |||
|     //解析树数据 | |||
|     getTreeObj (obj) { | |||
|       // 树接口: | |||
|       // 组织:组织id、组织名称、type、经度、纬度 | |||
|       // 小区:小区id、小区名称、type、所属网格id、所属网格名称、所属组织id、所属组织名称、经度、纬度 | |||
|       // 楼:楼id、楼名称、type、所属小区id、所属小区名称 | |||
|       if (obj.level === 'building') {//点击楼栋 | |||
|         let neighborHoodNode = this.$refs.ref_tree.getNode(obj.pid)//所属小区 | |||
| 
 | |||
|         let gridNode = this.$refs.ref_tree.getNode(neighborHoodNode.data.pid)//所属网格 | |||
|         let agencyNode = this.$refs.ref_tree.getNode(gridNode.data.pid)//所属社区 | |||
|         obj.agencyId = agencyNode.data.id | |||
|         obj.agencyName = agencyNode.data.label | |||
|         obj.gridId = gridNode.data.id | |||
|         obj.gridName = gridNode.data.label | |||
|         obj.neighborHoodId = neighborHoodNode.data.id | |||
|         obj.neighborHoodName = neighborHoodNode.data.label | |||
|         if (obj.agencyId === this.staffAgencyId) { | |||
|           this.showImportBtn = true | |||
|         } else { | |||
|           this.showImportBtn = false | |||
|         } | |||
| 
 | |||
|       } else if (obj.level === 'neighborHood') {//点击小区 | |||
|         let gridNode = this.$refs.ref_tree.getNode(obj.pid) | |||
|         let agencyNode = this.$refs.ref_tree.getNode(gridNode.data.pid) | |||
|         obj.gridId = gridNode.data.id | |||
|         obj.gridName = gridNode.data.label | |||
|         obj.agencyId = agencyNode.data.id | |||
|         obj.agencyName = agencyNode.data.label | |||
|         if (obj.agencyId === this.staffAgencyId) { | |||
|           this.showImportBtn = true | |||
|         } else { | |||
|           this.showImportBtn = false | |||
|         } | |||
| 
 | |||
|       } else { | |||
| 
 | |||
|       } | |||
| 
 | |||
|       if (!obj.latitude) { | |||
|         obj.latitude = this.centerPoint[0] | |||
|       } | |||
| 
 | |||
|       if (!obj.longitude) { | |||
|         obj.longitude = this.centerPoint[1] | |||
|       } | |||
|       this.selTreeObj = obj | |||
|       console.log(this.selTreeObj) | |||
| 
 | |||
|     }, | |||
| 
 | |||
|     filterNode (value, data) { | |||
|       if (!value) return true; | |||
|       return data.label.indexOf(value) !== -1; | |||
|     }, | |||
| 
 | |||
|     // 开启加载动画 | |||
|     startLoading () { | |||
|       loading = Loading.service({ | |||
|         lock: true, // 是否锁定 | |||
|         text: '正在加载……', // 加载中需要显示的文字 | |||
|         background: 'rgba(0,0,0,.7)' // 背景颜色 | |||
|       }) | |||
|     }, | |||
|     // 结束加载动画 | |||
|     endLoading () { | |||
|       // clearTimeout(timer); | |||
|       if (loading) { | |||
|         loading.close() | |||
|       } | |||
|     } | |||
|   }, | |||
|   watch: { | |||
|     filterText (val) { | |||
|       this.$refs.ref_tree.filter(val); | |||
|     } | |||
|   } | |||
| } | |||
| </script> | |||
| 
 | |||
| 
 | |||
| <style> | |||
| /* .aui-content > .el-tabs > .el-tabs__content { | |||
|     padding: 0px; | |||
|   } */ | |||
| 
 | |||
| .el-tree-node:focus > .el-tree-node__content { | |||
|   /* background-color: #ccc !important; */ | |||
|   color: #2195fe; | |||
| } | |||
| </style> | |||
| <style lang="scss" scoped> | |||
| .div_tree { | |||
|   /deep/ .el-scrollbar__wrap { | |||
|     overflow-x: hidden !important; | |||
|   } | |||
| } | |||
| </style> | |||
| 
 | |||
| <style lang="scss" scoped > | |||
| @import "@/assets/scss/modules/visual/communityManage.scss"; | |||
| @import "@/assets/scss/modules/management/list-main.scss"; | |||
| </style> | |||
| 
 | |||
| <style lang="scss" scoped > | |||
| .div_main { | |||
|   display: flex; | |||
| } | |||
| .scrollar { | |||
|   margin-top: 10px; | |||
| } | |||
| 
 | |||
| .div_tree { | |||
|   flex: 0 0 280px; | |||
|   background-color: #ffffff; | |||
|   border-radius: 5px; | |||
|   padding: 10px; | |||
|   overflow-y: hidden; | |||
| } | |||
| .filter_tree { | |||
|   overflow-x: auto; | |||
| } | |||
| 
 | |||
| // .div_table { | |||
| //   margin-left: 15px; | |||
| //   // flex: 1; | |||
| //   width: calc(100% - 300px); | |||
| //   background-color: #ffffff; | |||
| //   border-radius: 5px; | |||
| //   padding: 10px; | |||
| // } | |||
| .div_left { | |||
|   // flex: 1; | |||
|   width: calc(100% - 300px); | |||
| } | |||
| .div_left_table { | |||
|   margin-top: 10px; | |||
|   margin-left: 15px; | |||
|   background-color: #ffffff; | |||
|   border-radius: 5px; | |||
|   padding: 10px; | |||
| } | |||
| </style> | |||
| 
 | |||
| 
 | |||
					Loading…
					
					
				
		Reference in new issue