Browse Source

基础信息可视化

shibei_master
jiangyy 4 years ago
parent
commit
651ab8d3a6
  1. BIN
      src/assets/img/jinru.png
  2. 0
      src/assets/img/xiala.png
  3. 39
      src/assets/scss/modules/visual/basicInfoMain.scss
  4. 168
      src/assets/scss/modules/visual/searchPerson.scss
  5. 298
      src/views/modules/visual/basicinfo/basicInfoCommunity.vue
  6. 109
      src/views/modules/visual/basicinfo/basicInfoMain.vue
  7. 184
      src/views/modules/visual/basicinfo/peopleSearch.vue

BIN
src/assets/img/jinru.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 193 B

0
src/assets/img/shuju/xiala.png → src/assets/img/xiala.png

Before

Width:  |  Height:  |  Size: 178 B

After

Width:  |  Height:  |  Size: 178 B

39
src/assets/scss/modules/visual/basicInfoMain.scss

@ -203,12 +203,20 @@
} }
} }
.div_room { .div_room_bar {
box-sizing: border-box;
margin-top: 9px; margin-top: 9px;
height: calc(88vh - 120px);
}
.div_room {
// height: calc(88vh - 40px);
// margin-top: 9px;
display: flex; display: flex;
flex-wrap: wrap; flex-wrap: wrap;
justify-content: space-around; justify-content: flex-start;
margin: 0 21px 0 11px; margin: 0 21px 0 21px;
.item:hover { .item:hover {
cursor: pointer; cursor: pointer;
@ -288,19 +296,38 @@
margin-top: 2px; margin-top: 2px;
position: relative; position: relative;
z-index: 10; z-index: 10;
width: 90px;
background: #020340; background: #020340;
border: 1px solid #0a359b; border: 1px solid #0a359b;
border-radius: 4px; border-radius: 4px;
box-shadow: 0 0 10px inset #1a5afd; box-shadow: 0 0 10px inset #1a5afd;
.user_item { .user_item {
padding: 13px 14px 0 14px; padding: 13px 8px 0 14px;
font-size: 16px; font-size: 16px;
font-family: PingFang SC; font-family: PingFang SC;
font-weight: 400; font-weight: 400;
color: #ffffff; color: #ffffff;
.user_item_content {
display: flex;
// justify-content: space-between;
align-items: center;
.name {
max-width: 80%;
text-align: left;
}
> img {
margin-left: auto;
margin-top: 4px;
width: 8px;
height: 12px;
}
}
.item_line { .item_line {
margin-top: 9px; margin-top: 9px;
width: 70px; width: 70px;
@ -319,6 +346,6 @@
.div_room::after { .div_room::after {
content: ''; content: '';
flex: auto; flex: 1;
} }
} }

168
src/assets/scss/modules/visual/searchPerson.scss

@ -0,0 +1,168 @@
.div_search_list {
margin: 54px auto;
text-align: center;
width: 750px;
height: 53px;
background: #01106800;
border-radius: 8px;
display: flex;
justify-content: flex-end;
.icon {
display: flex;
align-items: center;
margin-left: 29px;
margin-top: 16px;
> img {
width: 24px;
height: 24px;
}
}
.btn {
text-align: center;
flex: 0 0 113px;
height: 53px;
background: #0082fb;
border-radius: 0px 8px 8px 0px;
font-size: 22px;
font-family: PingFang SC;
font-weight: 400;
color: #ffffff;
line-height: 53px;
}
}
.list_box {
margin: 96px auto 0;
box-sizing: border-box;
// width: 70%;
width: 1021px;
// height: calc(88vh - 200px);
height: 349px;
color: #fff;
background: url('../../../img/modules/visual/warning-box.png') no-repeat
center;
background-size: 100% 100%;
}
.info_tip {
padding: 20px 0 0 19px;
display: flex;
> img {
height: 34px;
width: 46px;
}
.tip_title {
line-height: 34px;
margin-left: 7px;
font-size: 22px;
font-family: PingFang SC;
font-weight: 800;
color: #ffffff;
}
}
.warning-table {
margin: 21px 24px auto 24px;
box-sizing: border-box;
height: 100%;
.table {
width: 100%;
height: 100%;
&-header {
width: 100%;
height: 50px;
display: flex;
justify-content: space-around;
align-items: center;
background: rgba(8, 37, 134, 0.85);
font-size: 16px;
font-weight: 400;
color: #ffffff;
}
&-body {
box-sizing: border-box;
width: 100%;
height: calc(100% - 50px);
font-size: 18px;
font-weight: 400;
color: #ffffff;
&-tr {
width: 100%;
height: 50px;
// height: calc(100% / 5);
// padding: 10px auto;
display: flex;
justify-content: space-around;
align-items: center;
.btn_detail:hover {
cursor: pointer;
}
}
&-tr:nth-child(2n) {
background: rgba(16, 75, 164, 0.24);
}
&-tr:hover {
background: url('../../../img/modules/visual/hover-bac.png') no-repeat
center;
background-size: 100% 100%;
}
}
}
}
.td {
text-align: center;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
// width: calc(100% / 5);
}
.td1 {
width: calc(100% / 10);
}
.td2 {
width: calc(100% / 5);
}
.td3 {
width: calc(100% / 4);
}
.pagination {
box-sizing: border-box;
margin-top: 20px;
width: 100%;
height: 40px;
display: flex;
justify-content: flex-end;
/deep/ .el-pagination.is-background .el-pager li:not(.disabled).active {
background: #0266d1;
color: #000d3f;
}
/deep/ .el-pagination .el-pager li {
background: #002e74;
}
/deep/ .el-pagination .btn-prev {
background: #002e74;
}
/deep/ .el-pagination .btn-next {
background: #002e74;
}
}

298
src/views/modules/visual/basicinfo/basicInfoCommunity.vue

@ -1,6 +1,7 @@
<template> <template>
<div class="div_community_info"> <div class="div_community_info"
@click="handleShowAllUser()">
<div class="div_select"> <div class="div_select">
<img src="../../../../assets/img/shuju/title-tip.png" <img src="../../../../assets/img/shuju/title-tip.png"
@ -18,49 +19,58 @@
</el-select> </el-select>
</div> </div>
</div> </div>
<el-scrollbar style="height:100%"> <div class="div_room_bar">
<el-scrollbar style="height:100%">
<div v-if="roomLoaded" <div v-if="roomLoaded"
class="div_room"> class="div_room">
<div v-for="(item,index) in roomArray"
:key="index" <div v-for="(item,index) in roomArray"
:class="['item',{'item_sel':selHouseIndex==index}]" :key="index"
@click="handleClickRoom(index)"> :class="['item',{'item_sel':selHouseIndex==index}]"
<span>{{item.houseName}}</span> @click="handleClickRoom(index)">
<span>{{item.houseName}}</span>
<div class="icon_party">
<img :src="item.partyUrl" <div class="icon_party">
alt /> <img :src="item.partyUrl"
</div> alt />
<div class="icon_category"> </div>
<img v-for="(iconItem,iconIndex) in item.iconArrayShow" <div class="icon_category">
:key="iconIndex" <img v-for="(iconItem,iconIndex) in item.iconArrayShow"
:src="iconItem.iconUrl" :key="iconIndex"
alt /> :src="iconItem.iconUrl"
</div> alt />
<div @click="handleShowAllUser(index)" </div>
class="div_user"> <div @click.stop="handleShowAllUser(index)"
<span>全部成员</span> class="div_user">
<img src="../../../../assets/img/shuju/xiala.png"
alt /> <span>全部成员</span>
<img src="../../../../assets/img/xiala.png"
<div class="user_list" alt />
v-show="item.showAllUser">
<div v-for="(userItem,userIndex) in userArray" <div class="user_list"
:key="userIndex" v-show="item.showAllUser">
class="user_item" <div v-for="(userItem,userIndex) in userArray"
@click.stop="handleClickUser(userIndex)"> :key="userIndex"
{{userItem.name}} class="user_item"
<div :class="['item_line',{'last_line':userIndex==(userArray.length-1)}]"></div> @click.stop="handleClickUser(userIndex)">
</div> <div class="user_item_content">
<div class="name">{{userItem.name}}</div>
<img src="../../../../assets/img/jinru.png"
alt />
</div>
<div :class="['item_line',{'last_line':userIndex==(userArray.length-1)}]"></div>
</div>
</div>
</div> </div>
</div> </div>
</div> </div>
</el-scrollbar>
</div> </div>
</el-scrollbar>
</div> </div>
</template> </template>
@ -103,6 +113,30 @@ export default {
{ {
buildingId: "6", buildingId: "6",
buildingName: '6号楼' buildingName: '6号楼'
},
{
buildingId: "7",
buildingName: '1号楼'
},
{
buildingId: "8",
buildingName: '2号楼'
},
{
buildingId: "9",
buildingName: '3号楼'
},
{
buildingId: "10",
buildingName: '4号楼'
},
{
buildingId: "11",
buildingName: '5号楼'
},
{
buildingId: "12",
buildingName: '6号楼'
} }
],// ],//
selBuildingId: '', selBuildingId: '',
@ -185,6 +219,176 @@ export default {
} }
] ]
}, },
{
houseId: "6",
houseName: "106室",
categoryList: [
{
name: '低保',
iconUrl: require('../../../../assets/img/modules/visual/dabing.png'),
isSpecial: '0',
}
]
}, {
houseId: "1",
houseName: "101室",
categoryList: [
{
name: '党员',
iconUrl: require('../../../../assets/img/shuju/dangyuan.png'),
isSpecial: '1',
},
{
name: '低保',
iconUrl: require('../../../../assets/img/modules/visual/dabing.png'),
isSpecial: '0',
}
]
},
{
houseId: "2",
houseName: "102室",
categoryList: [
{
name: '低保',
iconUrl: require('../../../../assets/img/modules/visual/dabing.png'),
isSpecial: '0',
},
{
name: '低保',
iconUrl: require('../../../../assets/img/modules/visual/dabing.png'),
isSpecial: '0',
},
{
name: '低保',
iconUrl: require('../../../../assets/img/modules/visual/dabing.png'),
isSpecial: '0',
},
{
name: '低保',
iconUrl: require('../../../../assets/img/modules/visual/dabing.png'),
isSpecial: '0',
}
]
},
{
houseId: "3",
houseName: "103室",
categoryList: [
{
name: '低保',
iconUrl: require('../../../../assets/img/modules/visual/dabing.png'),
isSpecial: '0',
}
]
},
{
houseId: "4",
houseName: "104室",
categoryList: [
{
name: '低保',
iconUrl: require('../../../../assets/img/modules/visual/dabing.png'),
isSpecial: '0',
}
]
},
{
houseId: "5",
houseName: "105室",
categoryList: [
{
name: '低保',
iconUrl: require('../../../../assets/img/modules/visual/dabing.png'),
isSpecial: '0',
}
]
},
{
houseId: "6",
houseName: "106室",
categoryList: [
{
name: '低保',
iconUrl: require('../../../../assets/img/modules/visual/dabing.png'),
isSpecial: '0',
}
]
}, {
houseId: "1",
houseName: "101室",
categoryList: [
{
name: '党员',
iconUrl: require('../../../../assets/img/shuju/dangyuan.png'),
isSpecial: '1',
},
{
name: '低保',
iconUrl: require('../../../../assets/img/modules/visual/dabing.png'),
isSpecial: '0',
}
]
},
{
houseId: "2",
houseName: "102室",
categoryList: [
{
name: '低保',
iconUrl: require('../../../../assets/img/modules/visual/dabing.png'),
isSpecial: '0',
},
{
name: '低保',
iconUrl: require('../../../../assets/img/modules/visual/dabing.png'),
isSpecial: '0',
},
{
name: '低保',
iconUrl: require('../../../../assets/img/modules/visual/dabing.png'),
isSpecial: '0',
},
{
name: '低保',
iconUrl: require('../../../../assets/img/modules/visual/dabing.png'),
isSpecial: '0',
}
]
},
{
houseId: "3",
houseName: "103室",
categoryList: [
{
name: '低保',
iconUrl: require('../../../../assets/img/modules/visual/dabing.png'),
isSpecial: '0',
}
]
},
{
houseId: "4",
houseName: "104室",
categoryList: [
{
name: '低保',
iconUrl: require('../../../../assets/img/modules/visual/dabing.png'),
isSpecial: '0',
}
]
},
{
houseId: "5",
houseName: "105室",
categoryList: [
{
name: '低保',
iconUrl: require('../../../../assets/img/modules/visual/dabing.png'),
isSpecial: '0',
}
]
},
{ {
houseId: "6", houseId: "6",
houseName: "106室", houseName: "106室",
@ -207,13 +411,18 @@ export default {
userId: '1', userId: '1',
}, },
{ {
name: '李四', name: '李四',
userId: '2', userId: '2',
}, },
{ {
name: '王婷', name: '王婷',
userId: '3', userId: '3',
} }
,
{
name: '王婷婷婷王婷婷婷',
userId: '4',
}
], ],
selUserName: '', selUserName: '',
selUserId: '', selUserId: '',
@ -236,6 +445,7 @@ export default {
}, },
methods: { methods: {
//id
async initData (neighborHoodId, neighborHoodName) { async initData (neighborHoodId, neighborHoodName) {
this.roomLoaded = false this.roomLoaded = false
this.neighborHoodId = neighborHoodId this.neighborHoodId = neighborHoodId
@ -258,8 +468,6 @@ export default {
// //
async handleShowAllUser (selIndex) { async handleShowAllUser (selIndex) {
this.roomArray.forEach((element, index) => { this.roomArray.forEach((element, index) => {
let obj = JSON.parse(JSON.stringify(element)) let obj = JSON.parse(JSON.stringify(element))
@ -539,6 +747,10 @@ export default {
border-radius: 0px; border-radius: 0px;
} }
/* 修改选项整体的样式 */
/deep/ .el-select-dropdown__list {
padding: 6px 0 20px 0;
}
/* 修改单个的选项的样式 */ /* 修改单个的选项的样式 */
/deep/ .el-select-dropdown__item { /deep/ .el-select-dropdown__item {
background-color: transparent; background-color: transparent;

109
src/views/modules/visual/basicinfo/basicInfoMain.vue

@ -14,24 +14,32 @@
</div> </div>
</div> </div>
<div class="div_content"> <people-search v-if="orgLevel==='search'"
@toSubAgency="toSubAgency"
ref="ref_search"></people-search>
<people v-else-if="orgLevel==='people'"
:userId="selUserId"
ref="ref_people"></people>
<basic-info-community ref="ref_community"></basic-info-community> <div v-else
class="div_content">
<!-- <basic-info-community v-if="orgLevel==='neighborHood'" <!-- <basic-info-community ref="ref_community"></basic-info-community> -->
<basic-info-community v-if="orgLevel==='neighborHood'"
ref="ref_community"></basic-info-community> ref="ref_community"></basic-info-community>
<div v-else <div v-else
id="map" id="map"
class="div_map"> class="div_map">
</div> --> </div>
<div class="div_data"> <div class="div_data">
<div class="div_search"> <div class="div_search">
<el-input size="mini" <el-input size="mini"
@focus="handleSearch"
WarningColor='warning' WarningColor='warning'
placeholder="请输入姓名" placeholder="请输入姓名">
v-model="searchName">
<i slot="prefix" <i slot="prefix"
class="icon"> class="icon">
<img src="../../../../assets/img/modules/visual/sousuo.png" <img src="../../../../assets/img/modules/visual/sousuo.png"
@ -97,6 +105,8 @@ import { mapGetters } from "vuex";
import { Loading } from 'element-ui'; //Loading import { Loading } from 'element-ui'; //Loading
import { requestPost } from "@/js/dai/request"; import { requestPost } from "@/js/dai/request";
import BasicInfoCommunity from "./basicInfoCommunity"; import BasicInfoCommunity from "./basicInfoCommunity";
import PeopleSearch from "./peopleSearch";
import People from "./people";
let loading;// let loading;//
@ -158,9 +168,6 @@ const vueGis = {
subAgencyArray: [],// subAgencyArray: [],//
selPolygonId: '',//id
selPolygon: {},
// //
searchName: "", searchName: "",
@ -257,6 +264,8 @@ const vueGis = {
// //
runNum: 0, runNum: 0,
runAgencyArray: [], runAgencyArray: [],
selUserId: '',
} }
}, },
@ -264,11 +273,6 @@ const vueGis = {
// //
await this.loadOrgData() await this.loadOrgData()
this.$nextTick(() => {
// ref_tree ref value node-key
this.$refs.ref_community.initData('', '南山111小区');
});
// //
this.initMap() this.initMap()
@ -282,9 +286,12 @@ const vueGis = {
}, },
methods: { methods: {
handleSearch () { handleSearch () {
this.toSubAgency('search')
}, },
//infolist //infolist
async loadList () { async loadList () {
// const url = "/epmetuser/statsresiwarn/list" // const url = "/epmetuser/statsresiwarn/list"
@ -322,29 +329,53 @@ const vueGis = {
} }
}, },
// // type:polygon / search people
async toSubAgency (e) { async toSubAgency (type, e, searchName) {
//neighborHood //neighborHood
this.runNum++ this.runNum++
this.runAgencyArray.push(this.orgData) this.runAgencyArray.push(this.orgData)
this.subAgencyArray.forEach(item => { if (type === 'people') {
if (item.id === e.selected[0].id_) { this.orgLevel = 'people'
this.selPolygonId = item.id this.selUserId = e
this.selPolygon = item this.orgId = ''
this.orgId = item.id this.orgData = {
this.orgLevel = item.level id: '',
this.orgData = item level: 'people',
name: '人员档案'
} }
}); this.searchName = searchName
console.log(this.runNum) } else if (type === 'search') {
console.log(this.runAgencyArray) this.orgLevel = 'search'
// debugger this.orgId = ''
if (this.orgLevel === 'neighborHood') { this.orgData = {
id: '',
level: 'search',
name: '搜索'
}
this.$nextTick(() => {
// ref_tree ref value node-key
this.$refs.ref_search.loadList();
});
} else { } else {
this.refreshMap(true) this.subAgencyArray.forEach(item => {
if (item.id === e.selected[0].id_) {
this.orgId = item.id
this.orgLevel = item.level
this.orgData = item
}
});
if (this.orgLevel === 'neighborHood') {
this.$nextTick(() => {
// id
this.$refs.ref_community.initData('', '南山111小区');
});
} else {
this.refreshMap(true)
}
} }
@ -376,6 +407,7 @@ const vueGis = {
const cutNum = this.runAgencyArray.length - index// const cutNum = this.runAgencyArray.length - index//
this.runNum = this.runNum - cutNum this.runNum = this.runNum - cutNum
this.orgData = this.runAgencyArray[index] this.orgData = this.runAgencyArray[index]
for (let i = 0; i < cutNum; i++) { for (let i = 0; i < cutNum; i++) {
this.runAgencyArray.pop() this.runAgencyArray.pop()
} }
@ -383,10 +415,17 @@ const vueGis = {
this.orgId = this.orgData.id this.orgId = this.orgData.id
this.orgLevel = this.orgData.level this.orgLevel = this.orgData.level
console.log(this.runAgencyArray) if (this.orgLevel === 'people') {
console.log(this.orgData)
} else if (this.orgLevel === 'search') {
this.$nextTick(() => {
debugger
// ref_tree ref value node-key
this.$refs.ref_search.loadByName(this.searchName);
});
if (this.orgLevel === 'neighborHood') {// } else if (this.orgLevel === 'neighborHood') {//
} else { } else {
this.refreshMap(true) this.refreshMap(true)
@ -602,7 +641,7 @@ const vueGis = {
map.addInteraction(select); map.addInteraction(select);
select.on('select', e => { select.on('select', e => {
this.toSubAgency(e) this.toSubAgency('polygon', e)
}); });
}, },
@ -654,7 +693,7 @@ const vueGis = {
...mapGetters(["clientHeight"]) ...mapGetters(["clientHeight"])
}, },
components: { BasicInfoCommunity }, components: { BasicInfoCommunity, PeopleSearch, People },
} }
export default vueGis; export default vueGis;
</script> </script>

184
src/views/modules/visual/basicinfo/peopleSearch.vue

@ -0,0 +1,184 @@
<template>
<div>
<div>
<div class="div_search_list">
<el-input size="mini"
WarningColor='warning'
placeholder="请输入姓名"
v-model="searchName">
<i slot="prefix"
class="icon">
<img src="../../../../assets/img/modules/visual/sousuo.png"
alt />
</i>
</el-input>
<div class="btn"
@click="loadList">搜索</div>
</div>
<div class="list_box">
<div class="info_tip">
<img src="../../../../assets/img/shuju/title-tip.png"
alt />
<div class="tip_title">查询列表</div>
</div>
<div class="warning-table">
<div class="table">
<div class="table-header">
<div class="td td1">序号</div>
<div class="td td2">姓名</div>
<div class="td td3">所属网格</div>
<div class="td td3">所属小区</div>
<div class="td td3">所属楼栋</div>
<div class="td td2">操作</div>
</div>
<div class="table-body">
<div class="table-body-tr"
v-for="(item,index) in tableData"
:key='index'>
<div class="td td1">{{item.sort}} </div>
<div class="td td2">{{item.name}} </div>
<div class="td td3">{{item.gridName}} </div>
<div class="td td3">{{item.neighborHoodName}} </div>
<div class="td td3">{{item.buildNum}} </div>
<div @click="handelToPeople(index)"
class="td td2 btn_detail">{{'查看'}} </div>
</div>
</div>
</div>
</div>
<div class="pagination">
<el-pagination background
layout="prev, pager, next"
:current-page="pageNo"
:page-size="pageSize"
:total="total"
@current-change="pageCurrentChangeHandle">
</el-pagination>
</div>
</div>
</div>
</div>
</template>
<script>
import { requestPost } from "@/js/dai/request";
import People from "./people";
export default {
name: "people-list",
components: {
People
},
data () {
return {
headerList: [],
tableData: [
{
sort: 1,
name: '杨明',
gridName: '市北区第二网格市北区第二网格市北区第二网格市北区第二网格',
neighborHoodName: '南宁路小区',
buildNum: '2号楼',
userId: '1',
},
{
sort: 2,
name: '杨明',
gridName: '市北区第二网格',
neighborHoodName: '南宁路小区',
buildNum: '2号楼',
userId: '1',
},
{
sort: 3,
name: '杨明',
gridName: '市北区第二网格',
neighborHoodName: '南宁路小区',
buildNum: '2号楼',
userId: '2',
},
{
sort: 4,
name: '杨明',
gridName: '市北区第二网格',
neighborHoodName: '南宁路小区',
buildNum: '2号楼',
userId: '3',
},
],
searchName: '',
pageSize: 4,
pageNo: 1,
total: 0
};
},
methods: {
handleSearch () {
},
loadByName (searchName) {
this.searchName = searchName
this.loadList()
},
async loadList () {
// const url = "/epmetuser/icresiuser/searchbyname"
const url = "http://yapi.elinkservice.cn/mock/245/epmetuser/icresiuser/searchbyname"
let params = {
name: this.searchName,
pageSize: this.pageSize,
pageNo: this.pageNo
}
const { data, code, msg } = await requestPost(url, params)
if (code === 0) {
this.total = data.total
this.tableData = data.list
} else {
this.$message.error(msg)
}
},
//
handelToPeople (index) {
this.$emit('toSubAgency', 'people', this.tableData[index].userId, this.searchName)
},
pageCurrentChangeHandle (val) {
this.pageNo = val
this.loadList()
},
}
};
</script>
<style
lang="scss"
src="@/assets/scss/modules/visual/searchPerson.scss"
scoped
></style>
<style lang=scss>
.div_search_list {
.el-input__inner[WarningColor="warning"] {
border-radius: 8px 0 0 8px;
height: 53px;
background-color: #01106800;
border: 2px solid #0082fb;
padding-left: 70px;
font-size: 18px;
font-family: PingFang SC;
font-weight: 400;
color: #ffffff;
}
}
</style>
Loading…
Cancel
Save