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;
height: calc(88vh - 120px);
}
.div_room {
// height: calc(88vh - 40px);
// margin-top: 9px;
display: flex;
flex-wrap: wrap;
justify-content: space-around;
margin: 0 21px 0 11px;
justify-content: flex-start;
margin: 0 21px 0 21px;
.item:hover {
cursor: pointer;
@ -288,19 +296,38 @@
margin-top: 2px;
position: relative;
z-index: 10;
width: 90px;
background: #020340;
border: 1px solid #0a359b;
border-radius: 4px;
box-shadow: 0 0 10px inset #1a5afd;
.user_item {
padding: 13px 14px 0 14px;
padding: 13px 8px 0 14px;
font-size: 16px;
font-family: PingFang SC;
font-weight: 400;
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 {
margin-top: 9px;
width: 70px;
@ -319,6 +346,6 @@
.div_room::after {
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>
<div class="div_community_info">
<div class="div_community_info"
@click="handleShowAllUser()">
<div class="div_select">
<img src="../../../../assets/img/shuju/title-tip.png"
@ -18,49 +19,58 @@
</el-select>
</div>
</div>
<el-scrollbar style="height:100%">
<div v-if="roomLoaded"
class="div_room">
<div v-for="(item,index) in roomArray"
:key="index"
:class="['item',{'item_sel':selHouseIndex==index}]"
@click="handleClickRoom(index)">
<span>{{item.houseName}}</span>
<div class="icon_party">
<img :src="item.partyUrl"
alt />
</div>
<div class="icon_category">
<img v-for="(iconItem,iconIndex) in item.iconArrayShow"
:key="iconIndex"
:src="iconItem.iconUrl"
alt />
</div>
<div @click="handleShowAllUser(index)"
class="div_user">
<span>全部成员</span>
<img src="../../../../assets/img/shuju/xiala.png"
alt />
<div class="user_list"
v-show="item.showAllUser">
<div v-for="(userItem,userIndex) in userArray"
:key="userIndex"
class="user_item"
@click.stop="handleClickUser(userIndex)">
{{userItem.name}}
<div :class="['item_line',{'last_line':userIndex==(userArray.length-1)}]"></div>
</div>
<div class="div_room_bar">
<el-scrollbar style="height:100%">
<div v-if="roomLoaded"
class="div_room">
<div v-for="(item,index) in roomArray"
:key="index"
:class="['item',{'item_sel':selHouseIndex==index}]"
@click="handleClickRoom(index)">
<span>{{item.houseName}}</span>
<div class="icon_party">
<img :src="item.partyUrl"
alt />
</div>
<div class="icon_category">
<img v-for="(iconItem,iconIndex) in item.iconArrayShow"
:key="iconIndex"
:src="iconItem.iconUrl"
alt />
</div>
<div @click.stop="handleShowAllUser(index)"
class="div_user">
<span>全部成员</span>
<img src="../../../../assets/img/xiala.png"
alt />
<div class="user_list"
v-show="item.showAllUser">
<div v-for="(userItem,userIndex) in userArray"
:key="userIndex"
class="user_item"
@click.stop="handleClickUser(userIndex)">
<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>
</el-scrollbar>
</el-scrollbar>
</div>
</div>
</template>
@ -103,6 +113,30 @@ export default {
{
buildingId: "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: '',
@ -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",
houseName: "106室",
@ -207,13 +411,18 @@ export default {
userId: '1',
},
{
name: '李四',
name: '李四',
userId: '2',
},
{
name: '王婷',
name: '王婷',
userId: '3',
}
,
{
name: '王婷婷婷王婷婷婷',
userId: '4',
}
],
selUserName: '',
selUserId: '',
@ -236,6 +445,7 @@ export default {
},
methods: {
//id
async initData (neighborHoodId, neighborHoodName) {
this.roomLoaded = false
this.neighborHoodId = neighborHoodId
@ -258,8 +468,6 @@ export default {
//
async handleShowAllUser (selIndex) {
this.roomArray.forEach((element, index) => {
let obj = JSON.parse(JSON.stringify(element))
@ -539,6 +747,10 @@ export default {
border-radius: 0px;
}
/* 修改选项整体的样式 */
/deep/ .el-select-dropdown__list {
padding: 6px 0 20px 0;
}
/* 修改单个的选项的样式 */
/deep/ .el-select-dropdown__item {
background-color: transparent;

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

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