Browse Source

Merge branch 'dev-0420' of http://git.elinkit.com.cn:7070/r/epmet-oper-gov into dev-0420

# Conflicts:
#	src/views/modules/base/resi.vue
shibei_master
dai 3 years ago
parent
commit
d24d03fc88
  1. 499
      src/assets/scss/modules/visual/basicInfoMain copy.scss
  2. 2
      src/assets/scss/modules/visual/basicInfoMain.scss
  3. 20
      src/assets/scss/modules/visual/houseStatic.scss
  4. 86
      src/views/modules/base/community/buildTable.vue
  5. 85
      src/views/modules/base/community/roomTable.vue
  6. 21
      src/views/modules/base/resi.vue
  7. 2
      src/views/modules/visual/basicinfo/basicInfoCommunity.vue
  8. 23
      src/views/modules/visual/basicinfo/houseStatic/houseStatic.vue
  9. 27
      src/views/modules/visual/basicinfo/peopleList.vue

499
src/assets/scss/modules/visual/basicInfoMain copy.scss

@ -1,499 +0,0 @@
.div_top {
margin-left: 10px;
height: 35px;
.router_line {
width: 212px;
height: 1px;
border: 1px solid #ffffff;
opacity: 0.09;
/* opacity: 0.09; */
}
.div_router {
margin-top: 5px;
font-size: 16px;
.router_parents {
color: #a0c3d9;
.arrow {
padding: 0 5px;
}
}
.router_parents:hover {
cursor: pointer;
}
.router_child {
color: #ffffff;
}
}
}
.div_content {
display: flex;
.div_map {
box-sizing: border-box;
width: 100%;
// padding: 10px 5px 13px;
// margin-top: 8px;
height: calc(88vh - 15px);
color: #fff;
// background: url('../../../img/modules/visual/warning-box.png') no-repeat
// center;
// background-size: 100% 100%;
}
.div_data {
flex: 0 0 562px;
margin-left: 12px;
.div_search {
width: 100%;
height: 56px;
text-align: center;
background-color: #011168;
border-radius: 4px 0 0 4px;
border: none;
box-shadow: 0 0 10px inset #1a5afd;
font-size: 18px;
font-family: PingFang SC;
font-weight: 400;
color: #ffffff;
opacity: 0.7;
display: flex;
justify-content: space-between;
.div_search_left {
display: flex;
justify-content: flex-start;
.icon {
display: flex;
align-items: center;
margin-left: 29px;
> img {
width: 24px;
height: 24px;
}
}
> span {
line-height: 56px;
margin-left: 10px;
}
}
.btn {
text-align: center;
flex: 0 0 113px;
height: 56px;
background: linear-gradient(90deg, #1a5afd, #26c4ff);
font-size: 20px;
font-family: PingFang SC;
font-weight: 400;
color: #ffffff;
line-height: 56px;
border-radius: 0 4px 4px 0;
}
}
.div_search:hover {
cursor: pointer;
}
.div_info {
box-sizing: border-box;
width: 100%;
margin-top: 21px;
height: calc(88vh - 87px);
color: #fff;
background: url('../../../img/modules/visual/warning-box.png') no-repeat
center;
background-size: 100% 100%;
// padding: 45px 21px 35px 24px;
.info_loading {
margin-top: 50px;
}
.info_tip {
padding: 31px 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;
}
}
.info_list {
margin-top: 9px;
.item {
.item_line {
margin-top: 13px;
margin-left: 24px;
width: 517px;
height: 0px;
border: 1px dotted #1797ff31;
border-width: 0.5px;
}
.last_line {
border: 1px dotted #1797ff00;
}
.list_item {
display: flex;
padding: 18px 59px 0;
justify-content: space-between;
.list_item_col {
flex: 0 0 240px;
display: flex;
> img {
height: 76px;
width: 76px;
}
.item_content {
margin-left: 10px;
height: 76px;
display: flex;
flex-direction: column;
justify-content: center;
.item_label {
font-size: 18px;
font-family: PingFang SC;
font-weight: 400;
color: #ffffff;
}
.item_count {
margin-top: 10px;
font-size: 28px;
font-family: PingFang SC;
font-weight: bold;
color: #00fffc;
}
}
}
}
::v-deep .el-popper {
padding: 0px;
}
//
}
}
}
.div_info {
/deep/ .el-scrollbar__wrap {
overflow-x: hidden !important;
}
}
}
}
.div_community_info {
box-sizing: border-box;
flex: 0 0 calc(100vw - 620px);
// width: calc(100vw - 560px);
height: calc(88vh - 10px);
color: #fff;
background: url('../../../img/modules/visual/warning-box.png') no-repeat
center;
background-size: 100% 100%;
.div_select {
margin-top: 28px;
margin-left: 24px;
display: flex;
.customer_select {
display: flex;
justify-content: flex-start;
> span {
width: auto;
font-size: 22px;
font-family: PingFang SC;
font-weight: 800;
color: #ffffff;
line-height: 34px;
}
}
> img {
height: 34px;
width: 46px;
}
.tip_title {
line-height: 34px;
margin-left: 12px;
font-size: 22px;
font-family: PingFang SC;
font-weight: 800;
color: #ffffff;
}
}
.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: flex-start;
margin: 0 21px 0 21px;
.item:hover {
cursor: pointer;
}
.item_sel {
box-shadow: 0 0 10px inset #1a5afd;
}
.item {
background-color: #011168;
margin-top: 12px;
width: 244px;
height: 190px;
border: 1px solid #037ddc;
border-radius: 8px;
text-align: center;
margin-left: 11px;
position: relative;
// &:first-child {
// margin-left: 0;
// }
.housename {
margin-top: 70px;
font-size: 24px;
font-family: PingFang SC;
font-weight: 500;
color: #ffffff;
// line-height: 180px;
}
.icon_party {
position: absolute;
top: 13px;
left: 18px;
}
.icon_category {
position: absolute;
bottom: 14px;
left: 9px;
// margin-left: 7px;
> img {
margin-left: 5px;
width: 21px;
height: 20px;
}
}
.div_user:hover {
cursor: pointer;
}
.div_user {
position: absolute;
bottom: 10px;
right: 11px;
width: 88px;
height: 30px;
background: #073082;
border-radius: 15px;
> img {
width: 10px;
height: 6px;
margin-left: 4px;
}
> span {
font-size: 14px;
font-family: PingFang SC;
font-weight: 400;
color: #ffffff;
line-height: 30px;
}
}
}
}
.div_room::after {
content: '';
flex: 1;
}
}
.user_list {
position: relative;
z-index: 10;
background: #020340;
border: 1px solid #0a359b;
border-radius: 4px;
box-shadow: 0 0 10px inset #1a5afd;
.user_item {
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;
height: 0px;
border: 1px dotted #1797ff31;
border-width: 0.5px;
}
.last_line {
border: 1px dotted #1797ff00;
}
}
}
.div_agency_tran {
transition: width 2s ease-out, opacity 1s ease-in, visibility 1s ease-in;
width: 0;
height: 470px;
z-index: 1000;
position: absolute;
top: 50px;
right: 600px;
box-sizing: border-box;
display: flex;
justify-content: center;
align-items: center;
.div_agency_list {
width: 320px;
height: 470px;
color: #fff;
background: url('../../../img/modules/visual/box-2.png') no-repeat center;
background-size: 100% 100%;
padding: 45px 20px 35px 20px;
.agency_main {
height: 100%;
position: relative;
}
.agency_main {
/deep/ .el-scrollbar__wrap {
overflow-x: hidden !important;
}
}
.no-data-img {
text-align: center;
margin-top: 50px;
margin-left: 15px;
}
.agency_list {
.agency_item {
// height: 60px;
padding: 15px 0;
font-size: 17px;
font-family: PingFang SC;
font-weight: 400;
color: #ffffff;
// line-height: 50px;
padding-left: 12px;
display: flex;
flex-direction: row;
align-items: center;
// padding-top: 15px;
.agency_item_name {
// line-height: 20px;
}
}
.agency_item_on {
background: #08216c;
border-radius: 2px;
}
.agency_item:hover {
cursor: pointer;
background-color: #011168;
border-radius: 4px 0 0 4px;
border: none;
box-shadow: 0 0 10px inset #1a5afd;
border-radius: 2px;
}
}
}
.arrow_tip {
margin-right: -2px;
> img {
width: 21px;
height: 176px;
}
}
.arrow_tip:hover {
cursor: pointer;
}
}
.div_agency_tran-fade-in {
width: 341px;
opacity: 1;
visibility: 1;
}
.div_agency_tran-fade-out {
visibility: 0;
opacity: 1;
width: 0;
right: 575px;
}
// .div_agency_list-fade-in {
// width: 341px;
// opacity: 1;
// visibility: 1;
// }
// .div_agency_list-fade-out {
// visibility: 0;
// opacity: 0;
// width: 0;
// }

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

@ -324,7 +324,7 @@
height: 20px;
}
.icon_name{
text-align: center;
display: flex;
justify-content: center;
}

20
src/assets/scss/modules/visual/houseStatic.scss

@ -164,17 +164,19 @@
display: flex;
justify-content: flex-start;
margin-top: 30px;
.cz-tip-dot {
margin-top:2px;
width: 20px;
height: 10px;
margin-top:1px;
width: 18px;
height: 8px;
background: #ff7800;
border-radius: 4px;
}
>span{
margin-left:10px;
font-size: 10px;
}
}
@ -184,14 +186,15 @@
margin-top: 30px;
.ld-tip-dot{
margin-top:2px;
width: 20px;
height: 10px;
margin-top:1px;
width: 18px;
height: 8px;
background: #00E5ED;
border-radius: 4px;
}
>span{
margin-left:10px;
font-size: 10px;
}
}
@ -269,6 +272,11 @@
}
}
.table_item:hover{
background: url('../../../img/modules/visual/hover-bac.png') no-repeat
center;
background-size: 100% 100%;
}
.item_dark{
background: #082586;

86
src/views/modules/base/community/buildTable.vue

@ -59,6 +59,7 @@
:data="tableData"
:header-cell-style="{background:'#2195FE',color:'#FFFFFF'}"
border
@sort-change="handleSortOrderChange"
:height="tableHeight"
v-loading="tableLoading"
style="width: 100%"
@ -84,7 +85,7 @@
</el-table-column>
<el-table-column prop="buildingType"
label="楼栋类型"
min-width="140">
min-width="110">
</el-table-column>
<el-table-column prop="buildingLeaderName"
label="楼长姓名"
@ -106,6 +107,25 @@
<el-table-column prop="totalHouseNum"
label="总户数">
</el-table-column>
<el-table-column prop="sort"
sortable="custom"
min-width="140"
label="序号">
<template slot-scope="scope">
<div @click="handleEditSort(scope.row)">
<span v-if="!scope.row.isChange">{{scope.row.sort}}</span>
<el-input-number v-else
@change="handleChangeSort(scope.row)"
v-model="scope.row.sort"
class="item_width_4"
:precision="2"
:min="1"
:max="9999"
label="描述文字"></el-input-number>
</div>
</template>
</el-table-column>
<el-table-column label="操作"
fixed="right"
@ -180,6 +200,7 @@ export default {
total: 0,
pageSize: 20,
pageNo: 0,
sortType: 'asc',//ascdesc
tableLoading: true,
tableData: [],
@ -212,6 +233,51 @@ export default {
},
methods: {
handleSortOrderChange (value) {
console.log(value.column, value.prop, value.order)
this.sortType = value.order === 'ascending' ? 'asc' : 'desc'
this.loadTable()
},
// handleChangeSort(row){
// },
handleEditSort (row) {
if (!row.isChange) {
row.isChange = true
}
},
async handleChangeSort (row, index) {
// row.isChange = false
console.log(row.sort)
let params = {
id: row.buildingId,
sort: row.sort,
type: 'building',
}
let url = '/gov/org/house/update-sort'
const { data, code, msg } = await requestPost(url, params)
if (code === 0) {
this.$message({
type: 'success',
message: '操作成功'
})
} else {
this.$message.error(msg)
}
},
checkSelect (row, index) {
let isChecked = false;
@ -226,6 +292,7 @@ export default {
async loadTable (fromTree, treeObj) {
this.tableLoading = true
if (fromTree) {
this.sortType = 'asc'
this.agencyObj = treeObj
@ -242,7 +309,7 @@ export default {
let params = {
pageSize: this.pageSize,
pageNo: this.pageNo,
sortType: this.sortType,
neighborHoodId: this.agencyObj.id
}
@ -252,6 +319,8 @@ export default {
this.validTableDataNum = 0
this.total = data.total
data.list.forEach(item => {
item.sort = item.sort.toFixed(2)
item.isChange = false
if (item.agencyId === this.staffAgencyId) {
item.showBtn = true
this.validTableDataNum++
@ -649,4 +718,17 @@ export default {
</script>
<style lang="scss" scoped >
@import "@/assets/scss/modules/visual/communityManage.scss";
.item_width_4 {
width: 120px;
}
/deep/.el-input-number--medium .el-input-number__decrease,
/deep/.el-input-number--medium .el-input-number__increase {
width: 26px;
}
/deep/.el-input-number--medium .el-input__inner {
padding-left: 0px;
padding-right: 0px;
}
</style>

85
src/views/modules/base/community/roomTable.vue

@ -42,6 +42,7 @@
:data="tableData"
:header-cell-style="{background:'#2195FE',color:'#FFFFFF'}"
v-loading="tableLoading"
@sort-change="handleSortOrderChange"
border
:height="tableHeight"
style="width: 100%"
@ -51,6 +52,26 @@
:selectable="checkSelect"
width="55">
</el-table-column>
<el-table-column prop="sort"
sortable="custom"
min-width="140"
label="序号">
<template slot-scope="scope">
<div @click="handleEditSort(scope.row)">
<span v-if="!scope.row.isChange">{{scope.row.sort}}</span>
<el-input-number v-else
@change="handleChangeSort(scope.row)"
v-model="scope.row.sort"
class="item_width_4"
:precision="2"
size="mini"
:min="1"
:max="9999"
label="描述文字"></el-input-number>
</div>
</template>
</el-table-column>
<el-table-column prop="houseNameShow"
label="房屋名称"
min-width="160">
@ -168,6 +189,7 @@ export default {
total: 0,
pageSize: 20,
pageNo: 0,
sortType: 'asc',//ascdesc
tableLoading: true,
// showImportBtn: false,//
@ -220,7 +242,53 @@ export default {
...mapGetters(['clientHeight', 'iframeHeight'])
},
methods: {
handleSortOrderChange (value) {
console.log(value.column, value.prop, value.order)
this.sortType = value.order === 'ascending' ? 'asc' : 'desc'
this.loadTable()
},
handleSortChange (value) {
console.log(value.column, value.prop, value.order)
this.sortType = value.order === 'ascending' ? 'asc' : 'desc'
this.loadTable()
},
handleEditSort (row) {
if (!row.isChange) {
row.isChange = true
}
},
async handleChangeSort (row, index) {
// row.isChange = false
console.log(row.sort)
let params = {
id: row.houseId,
sort: row.sort,
type: 'house',
}
let url = '/gov/org/house/update-sort'
const { data, code, msg } = await requestPost(url, params)
if (code === 0) {
this.$message({
type: 'success',
message: '操作成功'
})
} else {
this.$message.error(msg)
}
},
checkSelect (row, index) {
let isChecked = false;
@ -242,6 +310,7 @@ export default {
this.tableLoading = true
if (source === 'tree') {//tree
this.sortType = 'asc'
this.agencyObj = treeObj
this.ownerName = null
this.ownerPhone = null
@ -265,6 +334,7 @@ export default {
ownerName: this.ownerName,
ownerPhone: this.ownerPhone,
rentFlag: this.rentFlag,
sortType: this.sortType,
}
const url = "/gov/org/house/houselist"
@ -275,6 +345,8 @@ export default {
this.total = data.total
this.validTableDataNum = 0
data.list.forEach(item => {
item.sort = item.sort.toFixed(2)
item.isChange = false
item.houseNameShow = item.neighborHoodName + item.buildingName + item.unitNum + item.doorName
if (item.agencyId === this.staffAgencyId) {
@ -650,4 +722,17 @@ export default {
</script>
<style lang="scss" scoped >
@import "@/assets/scss/modules/visual/communityManage.scss";
.item_width_4 {
width: 120px;
}
// /deep/.el-input-number--medium .el-input-number__decrease,
// /deep/.el-input-number--medium .el-input-number__increase {
// width: 26px;
// }
// /deep/.el-input-number--medium .el-input__inner {
// padding-left: 0px;
// padding-right: 0px;
// }
</style>

21
src/views/modules/base/resi.vue

@ -3,7 +3,10 @@
<el-card class="resi-card">
<el-collapse v-if="openSearch" v-model="activeNames">
<el-collapse-item v-for="item in searchList" :key="item.itemGroupId"
:title="item.groupName" :name="item.itemGroupId">
:name="item.itemGroupId">
<template slot="title">
<div class="collapse-title">{{ item.groupName }}</div>
</template>
<resi-search v-if="searchList.length > 0"
:ref="'resiSearch' + item.itemGroupId"
:form-list="item.queryItemList"
@ -17,6 +20,7 @@
ref="resiSearch"
:form-list="searchList[0].queryItemList"
:column-name="defaultCategotyKey"
:show-grid="true"
:is-arrow="true"
@search="handleSearch" />
</template>
@ -59,14 +63,14 @@
:loading="importLoading">{{importBtnTitle}}</el-button>
</el-upload>
<el-button size="small"
<!-- <el-button size="small"
class="diy-button--reset"
:loading="exportBtn"
@click="handleExport">{{exportBtnTitle}}</el-button>
@click="handleExport">{{exportBtnTitle}}</el-button> -->
<el-button
class="diy-button--add"
class="diy-button--reset"
size="small"
@click="diyExport">自定义导出</el-button>
@click="diyExport">导出</el-button>
<el-button
class="diy-button--add"
size="small"
@ -410,8 +414,8 @@ export default {
computed: {
...mapGetters(['clientHeight', 'iframeHeight']),
tableHeight() {
const h = this.clientHeight - this.searchH - 280 + this.iframeHeight
const _h = this.clientHeight - 280 - this.searchH
const h = this.clientHeight - this.searchH - 310 + this.iframeHeight
const _h = this.clientHeight - 310 - this.searchH
return this.$store.state.inIframe ? h : _h
}
},
@ -1358,6 +1362,9 @@ export default {
// border-right: 1px solid rgba(33, 149, 254, 1);
}
}
.collapse-title {
font-weight: bold;
}
.resi-table {
::v-deep .el-button--text {
text-decoration: underline;

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

@ -37,6 +37,7 @@
:key="index"
:class="['item',{'item_sel':selHouseIndex==index}]"
@click="handleClickRoom(index)">
<div class="housename">{{item.houseName}}</div>
<div class="icon_party">
@ -557,5 +558,6 @@ export default {
margin-top: 5px !important;
padding: 3px !important;
background-color: rgb(247, 250, 253);
text-align: center;
}
</style>

23
src/views/modules/visual/basicinfo/houseStatic/houseStatic.vue

@ -281,21 +281,25 @@ export default {
};
},
async mounted () {
this.dataLoading = true
await this.getApiData()
this.dataLoading = false
},
methods: {
async getApiData () {
this.dataLoading = true
this.housePieInitState = false
this.userPieInitState = false
this.getHousechart()
this.getUserchart()
this.getSubuserhouselist()
this.getHousePie()
this.getUserPie()
await this.getSubuserhouselist()
this.dataLoading = false
},
housePieInitOk (dom) {
console.log('pie准备好了', dom)
@ -310,7 +314,6 @@ export default {
},
async getHousechart (node, resolve) {
if (this.$refs.housePieChart) {
this.$refs.housePieChart.showLoading()
@ -567,16 +570,19 @@ export default {
// this.getTable()
},
handleToSubAgency (item) {
async handleToSubAgency (item) {
if (!this.dataLoading) {
this.toSubAgency(item)
await this.getApiData()
}
this.toSubAgency(item)
this.getApiData()
},
// type:polygon / people
//
async toSubAgency (item) {
this.runNum++
@ -586,6 +592,7 @@ export default {
orgName: this.orgName,
}
this.runAgencyArray.push(obj)
this.orgId = item.orgId

27
src/views/modules/visual/basicinfo/peopleList.vue

@ -10,7 +10,7 @@
</el-breadcrumb>
</div>
<div v-if="orgLevel!=='people'">
<div>
<div class="list_box">
<div class="info_tip">
@ -115,6 +115,7 @@ export default {
pageNo: 1,
total: 0,
orgLevel: 'search',
orgId: '',
selUserId: '',
//
runNum: 0,
@ -128,11 +129,18 @@ export default {
this.searchName = ''
this.tableData = []
const { columnName, label, id, level } = this.$route.query
this.orgLevel = level
this.orgId = id
this.searchName = columnName
this.tableTitle = label
this.loadList(id, level)
},
deactivated() {
this.orgLevel = ''
this.orgId = ''
this.pageNo = 1
},
beforeRouteEnter(to, from, next) {
const arr = [ {...from }, { ...to, meta: { title: '人员列表'}}]
next((vm) =>{
@ -176,24 +184,9 @@ export default {
pageCurrentChangeHandle (val) {
this.pageNo = val
this.loadList()
this.loadList(this.orgId, this.orgLevel)
},
// type:polygon / people
async toSubAgency (type, userId) {
this.orgLevel = 'people'
this.selUserId = userId
},
//
handleClickBack () {
this.orgLevel = 'search'
},
},
destroyed () {

Loading…
Cancel
Save