10 changed files with 1621 additions and 23717 deletions
File diff suppressed because it is too large
|
After Width: | Height: | Size: 1.8 KiB |
|
After Width: | Height: | Size: 178 B |
@ -0,0 +1,566 @@ |
|||||
|
<template> |
||||
|
|
||||
|
<div class="div_community_info"> |
||||
|
<div class="div_select"> |
||||
|
|
||||
|
<img src="../../../../assets/img/shuju/title-tip.png" |
||||
|
alt /> |
||||
|
<div class="customer_select"> |
||||
|
<el-select v-model="selBuildingId" |
||||
|
:popper-append-to-body="false" |
||||
|
style="width:100%" |
||||
|
placeholder="请选择"> |
||||
|
<el-option v-for="item in buildingArray" |
||||
|
:key="item.buildingId" |
||||
|
:label="item.buildingName" |
||||
|
:value="item.buildingId"> |
||||
|
</el-option> |
||||
|
</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> |
||||
|
</div> |
||||
|
|
||||
|
</div> |
||||
|
|
||||
|
</div> |
||||
|
</el-scrollbar> |
||||
|
</div> |
||||
|
|
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
import { mapGetters } from "vuex"; |
||||
|
import { Loading } from 'element-ui'; //引入Loading服务 |
||||
|
import { requestPost } from "@/js/dai/request"; |
||||
|
|
||||
|
let loading;//加载动画 |
||||
|
|
||||
|
export default { |
||||
|
|
||||
|
data () { |
||||
|
return { |
||||
|
//父组件传过来的小区id |
||||
|
neighborHoodId: '', |
||||
|
neighborHoodName: '', |
||||
|
buildingArray: [ |
||||
|
{ |
||||
|
buildingId: "1", |
||||
|
buildingName: '1号楼' |
||||
|
}, |
||||
|
{ |
||||
|
buildingId: "2", |
||||
|
buildingName: '2号楼' |
||||
|
}, |
||||
|
{ |
||||
|
buildingId: "3", |
||||
|
buildingName: '3号楼' |
||||
|
}, |
||||
|
{ |
||||
|
buildingId: "4", |
||||
|
buildingName: '4号楼' |
||||
|
}, |
||||
|
{ |
||||
|
buildingId: "5", |
||||
|
buildingName: '5号楼' |
||||
|
}, |
||||
|
{ |
||||
|
buildingId: "6", |
||||
|
buildingName: '6号楼' |
||||
|
} |
||||
|
],//楼栋下拉框数据 |
||||
|
selBuildingId: '', |
||||
|
selBuildingName: '', |
||||
|
|
||||
|
roomLoaded: false, |
||||
|
roomArray: [ |
||||
|
{ |
||||
|
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', |
||||
|
} |
||||
|
] |
||||
|
} |
||||
|
], |
||||
|
selHouseId: '', |
||||
|
selHouseName: '', |
||||
|
selHouseIndex: 0, |
||||
|
|
||||
|
userArray: [ |
||||
|
{ |
||||
|
name: '张三', |
||||
|
userId: '1', |
||||
|
}, |
||||
|
{ |
||||
|
name: '李四', |
||||
|
userId: '2', |
||||
|
}, |
||||
|
{ |
||||
|
name: '王婷婷', |
||||
|
userId: '3', |
||||
|
} |
||||
|
], |
||||
|
selUserName: '', |
||||
|
selUserId: '', |
||||
|
|
||||
|
|
||||
|
orgData: {},//当前组织对象 |
||||
|
orgId: '', |
||||
|
orgLevel: '', |
||||
|
|
||||
|
|
||||
|
|
||||
|
//下钻层级记录 |
||||
|
runNum: 0, |
||||
|
runAgencyArray: [], |
||||
|
|
||||
|
} |
||||
|
}, |
||||
|
async mounted () { |
||||
|
|
||||
|
|
||||
|
}, |
||||
|
methods: { |
||||
|
async initData (neighborHoodId, neighborHoodName) { |
||||
|
this.roomLoaded = false |
||||
|
this.neighborHoodId = neighborHoodId |
||||
|
this.neighborHoodName = neighborHoodName |
||||
|
//加载楼栋数据 |
||||
|
await this.loadBuilding() |
||||
|
|
||||
|
if (this.selBuildingId) { |
||||
|
await this.loadRoom() |
||||
|
this.roomLoaded = true |
||||
|
|
||||
|
} |
||||
|
|
||||
|
}, |
||||
|
|
||||
|
//选择房间 |
||||
|
handleClickRoom (index) { |
||||
|
this.selHouseIndex = index |
||||
|
}, |
||||
|
//点击全部成员 |
||||
|
async handleShowAllUser (selIndex) { |
||||
|
|
||||
|
|
||||
|
|
||||
|
this.roomArray.forEach((element, index) => { |
||||
|
let obj = JSON.parse(JSON.stringify(element)) |
||||
|
|
||||
|
|
||||
|
if (index === selIndex) { |
||||
|
obj.showAllUser = !obj.showAllUser |
||||
|
this.$set(this.roomArray, selIndex, obj) |
||||
|
|
||||
|
this.loadUser(element.houseId, selIndex) |
||||
|
} else { |
||||
|
obj.showAllUser = false |
||||
|
this.$set(this.roomArray, index, obj) |
||||
|
// element.showAllUser = false |
||||
|
} |
||||
|
}); |
||||
|
|
||||
|
|
||||
|
}, |
||||
|
|
||||
|
//点击用户 |
||||
|
handleClickUser (index) { |
||||
|
|
||||
|
}, |
||||
|
//获取右侧infolist数据 |
||||
|
async loadList () { |
||||
|
|
||||
|
}, |
||||
|
|
||||
|
//下钻到下一级 |
||||
|
toSubAgency (e) { |
||||
|
//点击小区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 |
||||
|
} |
||||
|
}); |
||||
|
|
||||
|
console.log(this.runNum) |
||||
|
console.log(this.runAgencyArray) |
||||
|
if (this.orgLevel === 'neighborHood') { |
||||
|
|
||||
|
} else { |
||||
|
this.refreshMap(true) |
||||
|
} |
||||
|
|
||||
|
}, |
||||
|
|
||||
|
|
||||
|
//返回所选组织 |
||||
|
handleClickAgency (index) { |
||||
|
|
||||
|
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() |
||||
|
} |
||||
|
|
||||
|
this.orgId = this.orgData.id |
||||
|
this.orgLevel = this.orgData.level |
||||
|
|
||||
|
console.log(this.runAgencyArray) |
||||
|
console.log(this.orgData) |
||||
|
|
||||
|
if (this.orgLevel === 'neighborHood') {//显示小区 |
||||
|
|
||||
|
} else { |
||||
|
this.refreshMap(true) |
||||
|
} |
||||
|
|
||||
|
}, |
||||
|
|
||||
|
//加载楼栋数据 |
||||
|
async loadBuilding () { |
||||
|
// const url = "/gov/org/agency/baseinfofamilybuilding" |
||||
|
const url = "http://yapi.elinkservice.cn/mock/245/gov/org/agency/baseinfofamilybuilding" |
||||
|
let params = { |
||||
|
neighborHoodId: this.orgId |
||||
|
} |
||||
|
|
||||
|
const { data, code, msg } = await requestPost(url, params) |
||||
|
|
||||
|
if (code === 0) { |
||||
|
// this.buildingArray = data |
||||
|
this.buildingArray.forEach(item => { |
||||
|
item.buildingName = this.neighborHoodName + "-" + item.buildingName |
||||
|
}); |
||||
|
if (this.buildingArray.length > 0) { |
||||
|
this.selBuildingId = this.buildingArray[0].buildingId |
||||
|
this.selBuildingName = this.buildingArray[0].buildingName |
||||
|
} else { |
||||
|
this.selBuildingId = '' |
||||
|
this.selBuildingName = '' |
||||
|
} |
||||
|
|
||||
|
|
||||
|
} else { |
||||
|
this.$message.error(msg) |
||||
|
} |
||||
|
|
||||
|
}, |
||||
|
|
||||
|
//加载房间数据 |
||||
|
async loadRoom () { |
||||
|
// const url = "/gov/org/ichouse/houselist" |
||||
|
const url = "http://yapi.elinkservice.cn/mock/245/gov/org/ichouse/houselist" |
||||
|
let params = { |
||||
|
buildingId: this.selBuildingId |
||||
|
} |
||||
|
|
||||
|
const { data, code, msg } = await requestPost(url, params) |
||||
|
|
||||
|
if (code === 0) { |
||||
|
// this.roomArray = data |
||||
|
|
||||
|
if (this.roomArray.length > 0) { |
||||
|
this.selHouseId = this.roomArray[0].houseId |
||||
|
this.selHouseName = this.roomArray[0].houseName |
||||
|
|
||||
|
this.roomArray.forEach(roomItem => { |
||||
|
let iconArrayShow = JSON.parse(JSON.stringify(roomItem.categoryList)) |
||||
|
// debugger |
||||
|
if (iconArrayShow.length > 0) { |
||||
|
if (iconArrayShow[0].isSpecial === '1') {//第一个图标是党员 |
||||
|
roomItem.isParty = true |
||||
|
roomItem.partyUrl = iconArrayShow[0].iconUrl |
||||
|
iconArrayShow.shift();//删除第一个数据 |
||||
|
} else { |
||||
|
roomItem.isParty = false |
||||
|
} |
||||
|
} |
||||
|
this.$nextTick(() => { |
||||
|
// ref_tree 元素的ref value 绑定的node-key |
||||
|
roomItem.iconArrayShow = iconArrayShow |
||||
|
}); |
||||
|
|
||||
|
roomItem.showAllUser = false |
||||
|
|
||||
|
}); |
||||
|
|
||||
|
} |
||||
|
|
||||
|
|
||||
|
} else { |
||||
|
this.$message.error(msg) |
||||
|
} |
||||
|
|
||||
|
}, |
||||
|
|
||||
|
//加载成员数据 |
||||
|
async loadUser (houseId, index) { |
||||
|
// const url = "/epmetuser/icresiuser/getpeoplebyroom" |
||||
|
const url = "http://yapi.elinkservice.cn/mock/245/epmetuser/icresiuser/getpeoplebyroom" |
||||
|
let params = { |
||||
|
homeId: houseId |
||||
|
} |
||||
|
|
||||
|
const { data, code, msg } = await requestPost(url, params) |
||||
|
|
||||
|
if (code === 0) { |
||||
|
// this.userArray = data |
||||
|
|
||||
|
|
||||
|
} else { |
||||
|
this.$message.error(msg) |
||||
|
} |
||||
|
|
||||
|
}, |
||||
|
|
||||
|
|
||||
|
//开启加载动画 |
||||
|
startLoading () { |
||||
|
loading = Loading.service({ |
||||
|
lock: true, //是否锁定 |
||||
|
text: '正在加载……', //加载中需要显示的文字 |
||||
|
background: 'rgba(0,0,0,.7)' //背景颜色 |
||||
|
}); |
||||
|
|
||||
|
}, |
||||
|
|
||||
|
//结束加载动画 |
||||
|
endLoading () { |
||||
|
//clearTimeout(timer); |
||||
|
if (loading) { |
||||
|
loading.close(); |
||||
|
} |
||||
|
}, |
||||
|
}, |
||||
|
props: { |
||||
|
|
||||
|
}, |
||||
|
computed: { |
||||
|
|
||||
|
mapHeight () { |
||||
|
|
||||
|
return this.clientHeight - 120; |
||||
|
|
||||
|
}, |
||||
|
// zoom: { |
||||
|
// get () { |
||||
|
// //根据不同屏幕分辨率,控制zoom大小 |
||||
|
// if (this.clientHeight < 900) { |
||||
|
// return 2.3 |
||||
|
// } else { |
||||
|
// return 2.8 |
||||
|
// } |
||||
|
// }, |
||||
|
// set (value) { |
||||
|
// } |
||||
|
// }, |
||||
|
...mapGetters(["clientHeight"]) |
||||
|
|
||||
|
}, |
||||
|
components: {}, |
||||
|
} |
||||
|
|
||||
|
</script> |
||||
|
|
||||
|
<style |
||||
|
lang="scss" |
||||
|
src="@/assets/scss/modules/visual/basicInfoMain.scss" |
||||
|
scoped |
||||
|
></style> |
||||
|
|
||||
|
<style lang=scss scoped> |
||||
|
.customer_select { |
||||
|
/* 未选中任何选项的时候 placeholder的样式 需要先选中父元素 增加权重 */ |
||||
|
/deep/ input::-webkit-input-placeholder { |
||||
|
color: #fff; |
||||
|
} |
||||
|
/deep/ input::-moz-input-placeholder { |
||||
|
color: #fff; |
||||
|
} |
||||
|
/deep/ input::-ms-input-placeholder { |
||||
|
color: #fff; |
||||
|
} |
||||
|
|
||||
|
/* 修改的是el-input的样式 */ |
||||
|
/* 一种方法是设置最里层el-input__inner的背景色 外层的两级父元素设置为透明色 */ |
||||
|
/* 另一种方法是从el-select到el-input__inenr的背景色都设置为需要的颜色 */ |
||||
|
/deep/ .el-select, |
||||
|
/deep/ .el-input, |
||||
|
/deep/ .el-input__inner { |
||||
|
background-color: #08164d00; |
||||
|
color: #fff; |
||||
|
border: 0px; |
||||
|
border-radius: 0px; |
||||
|
text-align: left; |
||||
|
font-size: 22px; |
||||
|
font-family: PingFang SC; |
||||
|
font-weight: 800; |
||||
|
color: #ffffff; |
||||
|
display: flex; |
||||
|
} |
||||
|
|
||||
|
/* el-input聚焦的时候 外层的border会有一个样式 */ |
||||
|
/deep/ .el-select .el-input.is-focus .el-input__inner { |
||||
|
border: 0px; |
||||
|
} |
||||
|
|
||||
|
/* 修改的是el-input上下的小图标的颜色 */ |
||||
|
/deep/ .el-select .el-input .el-select__caret { |
||||
|
color: #fff; |
||||
|
} |
||||
|
|
||||
|
/* 修改总体选项的样式 最外层 */ |
||||
|
/deep/ .el-select-dropdown { |
||||
|
background-color: #08164d; |
||||
|
margin: 0px; |
||||
|
border: 0px; |
||||
|
border-radius: 0px; |
||||
|
} |
||||
|
|
||||
|
/* 修改单个的选项的样式 */ |
||||
|
/deep/ .el-select-dropdown__item { |
||||
|
background-color: transparent; |
||||
|
color: #fff; |
||||
|
} |
||||
|
|
||||
|
/* item选项的hover样式 */ |
||||
|
/deep/ .el-select-dropdown__item.hover, |
||||
|
/deep/ .el-select-dropdown__item:hover { |
||||
|
color: #409eff; |
||||
|
} |
||||
|
|
||||
|
/* 修改的是下拉框选项内容上方的尖角 */ |
||||
|
/deep/ .el-popper .popper__arrow, |
||||
|
.el-popper .popper__arrow::after { |
||||
|
display: none; |
||||
|
} |
||||
|
} |
||||
|
</style> |
||||
|
|
||||
|
<style lang=scss > |
||||
|
.el-scrollbar__wrap { |
||||
|
overflow-x: hidden !important; |
||||
|
} |
||||
|
</style> |
||||
@ -0,0 +1,551 @@ |
|||||
|
<template> |
||||
|
<div v-if="pageLoading" class="resi-container"> |
||||
|
<el-card class="resi-card-table"> |
||||
|
<div class="resi-row-btn"> |
||||
|
<el-select |
||||
|
v-model="value" |
||||
|
placeholder="请选择" |
||||
|
size="small" |
||||
|
clearable |
||||
|
> |
||||
|
<el-option |
||||
|
v-for="item in options" |
||||
|
:key="item.value" |
||||
|
:label="item.label" |
||||
|
:value="item.value" |
||||
|
> |
||||
|
</el-option> |
||||
|
</el-select> |
||||
|
<el-select |
||||
|
v-model="value" |
||||
|
placeholder="请选择" |
||||
|
size="small" |
||||
|
clearable |
||||
|
> |
||||
|
<el-option |
||||
|
v-for="item in options" |
||||
|
:key="item.value" |
||||
|
:label="item.label" |
||||
|
:value="item.value" |
||||
|
> |
||||
|
</el-option> |
||||
|
</el-select> |
||||
|
<el-button type="primary" size="mini" @click="handleSearch">查询</el-button> |
||||
|
</div> |
||||
|
<el-table |
||||
|
:data="tableData" |
||||
|
row-key="id" |
||||
|
v-loading="tableLoading" |
||||
|
border |
||||
|
style="width: 100%" |
||||
|
class="resi-table" |
||||
|
> |
||||
|
<el-table-column label="序号" type="index" align="center" width="50"> |
||||
|
</el-table-column> |
||||
|
<el-table-column |
||||
|
v-for="item in tableHeader" |
||||
|
:key="item.columnName" |
||||
|
:prop="item.columnName" |
||||
|
:label="item.label" |
||||
|
align="center" |
||||
|
width="180" |
||||
|
> |
||||
|
<template slot-scope="scope"> |
||||
|
<el-image |
||||
|
v-if="filterImage(item.columnName)" |
||||
|
style="width: 70px; height: 70px" |
||||
|
:src="handleFilterSpan(scope.row, item) " |
||||
|
fit="fill"></el-image> |
||||
|
<span v-else>{{ handleFilterSpan(scope.row, item) }}</span> |
||||
|
</template> |
||||
|
</el-table-column> |
||||
|
<el-table-column fixed="right" label="操作" align="center" width="120"> |
||||
|
<template slot-scope="scope"> |
||||
|
<el-button |
||||
|
@click="handleLook(scope.row)" |
||||
|
type="text" |
||||
|
size="small" |
||||
|
class="btn-color-look" |
||||
|
>{{(scope.row.status === 'show'&&'隐藏') || '显示'}}</el-button |
||||
|
> |
||||
|
<el-button |
||||
|
@click="handleEdit(scope.row)" |
||||
|
type="text" |
||||
|
size="small" |
||||
|
class="btn-color-edit" |
||||
|
>编辑</el-button |
||||
|
> |
||||
|
</template> |
||||
|
</el-table-column> |
||||
|
</el-table> |
||||
|
<div> |
||||
|
<el-pagination |
||||
|
@size-change="handleSizeChange" |
||||
|
@current-change="handleCurrentChange" |
||||
|
:current-page.sync="currentPage" |
||||
|
:page-sizes="[20, 50, 100, 200]" |
||||
|
:page-size="pageSize" |
||||
|
layout="sizes, prev, pager, next" |
||||
|
:total="total" |
||||
|
> |
||||
|
</el-pagination> |
||||
|
</div> |
||||
|
</el-card> |
||||
|
|
||||
|
<el-dialog |
||||
|
title="居民类别配置" |
||||
|
:visible.sync="dialogVisible" |
||||
|
width="40%" |
||||
|
append-to-body |
||||
|
:close-on-click-modal="false" |
||||
|
:before-close="handlerCancle" |
||||
|
> |
||||
|
<el-form label-width="100px" :model="form" :rules="rules" ref="ruleForm"> |
||||
|
<el-form-item label="类别名称"> |
||||
|
<el-input v-model="form.label" size="small" style="width: 180px;" disabled></el-input> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="管理平台图标" prop="managementIcon"> |
||||
|
<el-upload class="avatar-uploader" |
||||
|
:action="uploadUlr" |
||||
|
:data="{customerId:customerId}" |
||||
|
:show-file-list="false" |
||||
|
:on-success="(response, file, fileList) => handleImgSuccess('managementIcon', response, file, fileList)" |
||||
|
:before-upload="beforeImgUpload"> |
||||
|
<img v-if="form.managementIcon" |
||||
|
:src="form.managementIcon" |
||||
|
style="width:70px;height:70px" |
||||
|
class="function-icon"> |
||||
|
<i v-else class="el-icon-plus avatar-uploader-icon"></i> |
||||
|
</el-upload> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="数据平台图标" prop="dataIcon"> |
||||
|
<el-upload class="avatar-uploader" |
||||
|
:action="uploadUlr" |
||||
|
:data="{customerId:customerId}" |
||||
|
:show-file-list="false" |
||||
|
:on-success="(response, file, fileList) => handleImgSuccess('dataIcon', response, file, fileList)" |
||||
|
:before-upload="beforeImgUpload"> |
||||
|
<img v-if="form.dataIcon" |
||||
|
:src="form.dataIcon" |
||||
|
style="width:70px;height:70px" |
||||
|
class="function-icon"> |
||||
|
<i v-else class="el-icon-plus avatar-uploader-icon"></i> |
||||
|
</el-upload> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="房屋显示图标" prop="houseShowIcon"> |
||||
|
<el-upload class="avatar-uploader" |
||||
|
:action="uploadUlr" |
||||
|
:data="{customerId:customerId}" |
||||
|
:show-file-list="false" |
||||
|
:on-success="(response, file, fileList) => handleImgSuccess('houseShowIcon', response, file, fileList)" |
||||
|
:before-upload="beforeImgUpload"> |
||||
|
<img v-if="form.houseShowIcon" |
||||
|
:src="form.houseShowIcon" |
||||
|
style="width:70px;height:70px" |
||||
|
class="function-icon"> |
||||
|
<i v-else class="el-icon-plus avatar-uploader-icon"></i> |
||||
|
</el-upload> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="是否预警"> |
||||
|
<el-switch v-model="form.warn"></el-switch> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="黄色预警"> |
||||
|
<el-input-number v-model="form.level1" :min="0" size="small" label="描述文字"></el-input-number> 人/楼宇 |
||||
|
</el-form-item> |
||||
|
<el-form-item label="红色预警"> |
||||
|
<el-input-number v-model="form.level2" :min="0" size="small" label="描述文字"></el-input-number> 人/楼宇 |
||||
|
</el-form-item> |
||||
|
</el-form> |
||||
|
<div class="resi-btns"> |
||||
|
<el-button size="small" @click="handlerCancle">取消</el-button> |
||||
|
<el-button |
||||
|
type="primary" |
||||
|
size="small" |
||||
|
:loading="btnLoading" |
||||
|
@click="handleSUbmit" |
||||
|
>提交</el-button |
||||
|
> |
||||
|
</div> |
||||
|
</el-dialog> |
||||
|
|
||||
|
</div> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
import axios from 'axios' |
||||
|
import Sortable from 'sortablejs' |
||||
|
export default { |
||||
|
data() { |
||||
|
return { |
||||
|
tableLoading: false, |
||||
|
btnLoading: false, |
||||
|
disabled: false, |
||||
|
pageLoading: false, |
||||
|
dialogVisible: false, |
||||
|
uploadUlr: window.SITE_CONFIG['apiURL'] + '/oss/file/uploadqrcodeV2', |
||||
|
currentPage: 1, |
||||
|
pageSize: 20, |
||||
|
total: null, |
||||
|
conditions: [], |
||||
|
tableData: [], |
||||
|
value: '', |
||||
|
options: [ |
||||
|
{ |
||||
|
label: '是', |
||||
|
value: 1 |
||||
|
},{ |
||||
|
label: '否', |
||||
|
value: 2 |
||||
|
} |
||||
|
], |
||||
|
tableHeader: [ |
||||
|
{ |
||||
|
label: '类别名称', |
||||
|
columnName: 'label' |
||||
|
}, { |
||||
|
label: '管理平台图标', |
||||
|
columnName: 'managementIcon' |
||||
|
}, { |
||||
|
label: '数据平台图标', |
||||
|
columnName: 'dataIcon' |
||||
|
}, { |
||||
|
label: '房屋显示图标', |
||||
|
columnName: 'houseShowIcon' |
||||
|
}, { |
||||
|
label: '状态', |
||||
|
columnName: 'status', |
||||
|
options: [{ |
||||
|
value: 'show', |
||||
|
label: '显示' |
||||
|
}, { |
||||
|
value: 'hidden', |
||||
|
label: '隐藏' |
||||
|
}] |
||||
|
}, { |
||||
|
label: '是否预警', |
||||
|
columnName: 'warn', |
||||
|
options: [{ |
||||
|
value: '1', |
||||
|
label: '是' |
||||
|
}, { |
||||
|
value: '0', |
||||
|
label: '否' |
||||
|
}] |
||||
|
}, { |
||||
|
label: '黄色预警', |
||||
|
columnName: 'level1' |
||||
|
}, { |
||||
|
label: '红色预警', |
||||
|
columnName: 'level2' |
||||
|
} |
||||
|
], |
||||
|
customerId: '', |
||||
|
form: { |
||||
|
label: '', |
||||
|
dataIcon: '', |
||||
|
managementIcon: '', |
||||
|
houseShowIcon: '', |
||||
|
warn: '', |
||||
|
level1: '', |
||||
|
level2: '' |
||||
|
}, |
||||
|
rules: { |
||||
|
managementIcon: [{ required: true, message: '管理平台图标不能为空', trigger: 'blur' }], |
||||
|
dataIcon: [{ required: true, message: '数据平台图标不能为空', trigger: 'blur' }], |
||||
|
houseShowIcon: [{ required: true, message: '房屋显示图标不能为空', trigger: 'blur' }] |
||||
|
} |
||||
|
} |
||||
|
}, |
||||
|
async created() { |
||||
|
this.customerId = localStorage.getItem('customerId') |
||||
|
this.getTableData() |
||||
|
this.pageLoading = true |
||||
|
}, |
||||
|
mounted() { |
||||
|
this.rowDrop() |
||||
|
}, |
||||
|
methods: { |
||||
|
rowDrop() { |
||||
|
const tbody = document.querySelector('.el-table__body-wrapper tbody') |
||||
|
const _this = this |
||||
|
Sortable.create(tbody, { |
||||
|
onEnd({ newIndex, oldIndex }) { |
||||
|
const currRow = _this.tableData.splice(oldIndex, 1)[0] |
||||
|
_this.tableData.splice(newIndex, 0, currRow) |
||||
|
console.log('rowdrap', newIndex, oldIndex) |
||||
|
if (newIndex || newIndex === 0) _this.sortData() |
||||
|
// |
||||
|
} |
||||
|
}) |
||||
|
}, |
||||
|
computedWidth(label) { |
||||
|
const wd = 20 * label.length |
||||
|
return wd > 80 ? wd : 80 |
||||
|
}, |
||||
|
filterImage(item) { |
||||
|
const arr = ['managementIcon', 'dataIcon', 'houseShowIcon'] |
||||
|
return arr.includes(item) |
||||
|
}, |
||||
|
handleSizeChange(val) { |
||||
|
console.log(`每页 ${val} 条`) |
||||
|
this.pageSize = val |
||||
|
this.getTableData() |
||||
|
}, |
||||
|
handleCurrentChange(val) { |
||||
|
console.log(`当前页: ${val}`) |
||||
|
this.currentPage = val |
||||
|
this.getTableData() |
||||
|
}, |
||||
|
handleFilterSpan(row, item) { |
||||
|
let _val = '' |
||||
|
if (item.options && item.options.length > 0) { |
||||
|
item.options.forEach((n) => { |
||||
|
if (n.value === row[item.columnName]) _val = n.label |
||||
|
}) |
||||
|
} |
||||
|
return _val || row[item.columnName] |
||||
|
}, |
||||
|
handleSearch(val) { |
||||
|
console.log('searchhh--', val) |
||||
|
this.currentPage = 1 |
||||
|
this.conditions = val |
||||
|
this.getTableData() |
||||
|
}, |
||||
|
|
||||
|
handlerCancle() { |
||||
|
this.dialogVisible = false |
||||
|
}, |
||||
|
beforeImgUpload (file) { |
||||
|
const isPNG = (file.type === 'image/png') || (file.type === 'image/jpeg') |
||||
|
const isLt1M = file.size / 1024 / 1024 < 1 |
||||
|
|
||||
|
if (!isPNG) { |
||||
|
this.$message.error('上传图片只能是 PNG 格式!') |
||||
|
} |
||||
|
if (!isLt1M) { |
||||
|
this.$message.error('上传图片大小不能超过 1MB!') |
||||
|
} |
||||
|
return isPNG && isLt1M |
||||
|
}, |
||||
|
handleImgSuccess (type, res, file) { |
||||
|
if (res.code === 0 && res.msg === 'success') { |
||||
|
|
||||
|
console.log('type', type) |
||||
|
console.log('res.data.url', res.data.url) |
||||
|
this.form[type] = res.data.url |
||||
|
|
||||
|
} else { |
||||
|
this.$message.error(res.msg) |
||||
|
} |
||||
|
}, |
||||
|
async handleLook(row) { |
||||
|
const _show = { |
||||
|
show: 'hidden', |
||||
|
hidden: 'show' |
||||
|
} |
||||
|
const params = { |
||||
|
id: row.id, |
||||
|
status: _show[row.status] |
||||
|
} |
||||
|
this.$http |
||||
|
.post('/oper/customize/resicategorystatsconfig/updatestatus', params) |
||||
|
.then(({ data: res }) => { |
||||
|
if (res.code !== 0) { |
||||
|
return this.$message.error(res.msg) |
||||
|
} else { |
||||
|
this.getTableData() |
||||
|
} |
||||
|
}) |
||||
|
.catch(() => { |
||||
|
return this.$message.error('网络错误') |
||||
|
}) |
||||
|
}, |
||||
|
async handleEdit(row) { |
||||
|
|
||||
|
this.form = { ...row } |
||||
|
this.dialogVisible = true |
||||
|
}, |
||||
|
async handleSUbmit() { |
||||
|
this.$refs.ruleForm.validate(async (valid) => { |
||||
|
if (valid) { |
||||
|
this.btnLoading = true |
||||
|
const _form = { |
||||
|
...this.form, |
||||
|
warn: (this.form.warn && 1) || 0 |
||||
|
} |
||||
|
await this.$http |
||||
|
.post('/oper/customize/resicategorystatsconfig/update', _form) |
||||
|
.then(({ data: res }) => { |
||||
|
if (res.code !== 0) { |
||||
|
return this.$message.error(res.msg) |
||||
|
} else { |
||||
|
this.dialogVisible = false |
||||
|
this.getTableData() |
||||
|
} |
||||
|
}) |
||||
|
.catch(() => { |
||||
|
return this.$message.error('网络错误') |
||||
|
}) |
||||
|
this.btnLoading = false |
||||
|
} else { |
||||
|
console.log('error submit!!'); |
||||
|
return false; |
||||
|
} |
||||
|
}); |
||||
|
|
||||
|
}, |
||||
|
handleDel(row) { |
||||
|
let params = { |
||||
|
formCode: 'resi_base_info', |
||||
|
icResiUserId: row.icResiUserId |
||||
|
} |
||||
|
console.log('row1', row) |
||||
|
this.$http |
||||
|
.post('/epmetuser/icresiuser/delete', params) |
||||
|
.then(({ data: res }) => { |
||||
|
console.log('row2', row) |
||||
|
if (res.code !== 0) { |
||||
|
return this.$message.error(res.msg) |
||||
|
} else { |
||||
|
console.log('row3', row) |
||||
|
this.$message.success('删除成功') |
||||
|
this.getTableData() |
||||
|
} |
||||
|
}) |
||||
|
.catch((err) => { |
||||
|
console.log('row4', err) |
||||
|
return this.$message.error('网络错误') |
||||
|
}) |
||||
|
}, |
||||
|
sortData() { |
||||
|
const _data = this.tableData.map((item, index)=> { |
||||
|
return { |
||||
|
id: item.id, |
||||
|
sort: index |
||||
|
} |
||||
|
}) |
||||
|
this.$http |
||||
|
.post('/oper/customize/resicategorystatsconfig/updatesort', _data) |
||||
|
.then(({ data: res }) => { |
||||
|
if (res.code !== 0) { |
||||
|
return this.$message.error(res.msg) |
||||
|
} else { |
||||
|
// this.getTableData() |
||||
|
} |
||||
|
}) |
||||
|
.catch((err) => { |
||||
|
console.log('row4', err) |
||||
|
return this.$message.error('网络错误') |
||||
|
}) |
||||
|
}, |
||||
|
getTableHeader() { |
||||
|
this.$http |
||||
|
.post('/oper/customize/icform/tableheaders', { |
||||
|
formCode: 'resi_base_info' |
||||
|
}) |
||||
|
.then(({ data: res }) => { |
||||
|
if (res.code !== 0) { |
||||
|
return this.$message.error(res.msg) |
||||
|
} else { |
||||
|
this.tableHeader = res.data |
||||
|
} |
||||
|
}) |
||||
|
.catch(() => { |
||||
|
return this.$message.error('网络错误') |
||||
|
}) |
||||
|
}, |
||||
|
async getTableData() { |
||||
|
this.tableLoading = true |
||||
|
let params = { |
||||
|
// formCode: 'resi_base_info', |
||||
|
pageNo: this.currentPage, |
||||
|
pageSize: this.pageSize |
||||
|
} |
||||
|
await this.$http |
||||
|
.post('/oper/customize/resicategorystatsconfig/list', params) |
||||
|
.then(({ data: res }) => { |
||||
|
if (res.code !== 0) { |
||||
|
return this.$message.error(res.msg) |
||||
|
} else { |
||||
|
this.tableData = res.data |
||||
|
this.total = res.data.total |
||||
|
} |
||||
|
}) |
||||
|
.catch(() => { |
||||
|
return this.$message.error('网络错误') |
||||
|
}) |
||||
|
this.tableLoading = false |
||||
|
} |
||||
|
|
||||
|
} |
||||
|
} |
||||
|
</script> |
||||
|
|
||||
|
<style lang="scss" scoped> |
||||
|
.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); |
||||
|
} |
||||
|
} |
||||
|
</style> |
||||
|
|
||||
|
<style lang="scss" scoped> |
||||
|
.resi-row-btn { |
||||
|
display: flex; |
||||
|
margin-bottom: 13px; |
||||
|
::v-deep .el-button { |
||||
|
// margin-left: 10px; |
||||
|
border: 0; |
||||
|
} |
||||
|
::v-deep .el-select { |
||||
|
margin-right: 10px; |
||||
|
} |
||||
|
} |
||||
|
.avatar-uploader { |
||||
|
::v-deep |
||||
|
.el-upload { |
||||
|
cursor: pointer; |
||||
|
position: relative; |
||||
|
overflow: hidden; |
||||
|
} |
||||
|
.el-upload:hover { |
||||
|
border-color: #409EFF; |
||||
|
} |
||||
|
.avatar { |
||||
|
width: 70px; |
||||
|
height: 70px; |
||||
|
display: block; |
||||
|
} |
||||
|
.avatar-uploader-icon { |
||||
|
border: 1px dashed #d9d9d9; |
||||
|
border-radius: 6px; |
||||
|
font-size: 28px; |
||||
|
color: #8c939d; |
||||
|
width: 70px; |
||||
|
height: 70px; |
||||
|
line-height: 70px; |
||||
|
text-align: center; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
|
||||
|
|
||||
|
.resi-btns { |
||||
|
margin-top: 20px; |
||||
|
text-align: center; |
||||
|
} |
||||
|
</style> |
||||
Loading…
Reference in new issue