Browse Source

Merge branch 'dev_shequzhili'

shibei_master
jiangyy 3 years ago
parent
commit
3f61ccc157
  1. 335
      src/views/modules/visual/communityGovern/duoyuanDialog.vue
  2. 9
      src/views/modules/visual/communityGovern/duoyuanfuwu/duoyuanDialog.vue
  3. 21
      src/views/modules/visual/communityGovern/duoyuanfuwu/duoyuanfuwufenxi.vue

335
src/views/modules/visual/communityGovern/duoyuanDialog.vue

@ -0,0 +1,335 @@
<template>
<div class="m-pop">
<div class="wrap">
<cpt-card>
<div class="title">
<img src="@/assets/img/shuju/title-tip.png" />
<span>详情</span>
</div>
<div class="btn-close" @click="handleClose">
<img src="@/assets/img/shuju/people/close.png" />
</div>
<!-- <div class="list-title">需求内容</div> -->
<div class="list-wr">
<div class="list left-list" v-infinite-scroll="getServicelist" style="overflow:auto">
<template v-if="servicelist.length > 0">
<div class="left-item" :class="activeIndex == index ? 'active-item' : ''" v-for="(item, index) in servicelist" :key="index" @click="toDetail(index)">
<div class="item-time">{{item.reportTime || '2022-05-18'}}</div>
<div class="item-content">{{item.content || '本周加班本周加班本周加班本周加班本周加班本周加班'}}</div>
</div>
</template>
<screen-nodata class="nodata" v-else></screen-nodata>
</div>
<div class="dashed-line"></div>
<div class="list right-list">
<template v-if="info.content">
<!-- <div class="item-title">需求内容</div> -->
<div class="item">
<span class="item-field">所属网格</span>
<span>{{ info.gridName }}</span>
</div>
<div class="item">
<span class="item-field">需求类型</span>
<span>{{ info.categoryName }}</span>
</div>
<!-- <div class="item">
<span class="item-field">需求状态</span>
<span>{{ info.statusName }}</span>
</div> -->
<div class="item">
<span class="item-field">上报类型</span>
<span>{{ info.reportTypeName }}</span>
</div>
<div class="item">
<span class="item-field">上报人</span>
<span>{{ info.reportUserName }}</span>
</div>
<div class="item">
<span class="item-field">上报人联系方式 </span>
<span>{{ info.reportUserMobile }}</span>
</div>
<div class="item">
<span class="item-field">上报时间 </span>
<span>{{ info.reportTime }}</span>
</div>
<div class="item">
<span class="item-field">需求人 </span>
<span>{{ info.demandUserName }}</span>
</div>
<div class="item">
<span class="item-field">服务时间 </span>
<span>{{ info.wantServiceTime }}</span>
</div>
<div class="item">
<span class="item-field">需求内容</span>
<div>{{ info.content }}</div>
</div>
<div class="item">
<span class="item-field">服务方 </span>
<span>{{ info.serviceShowName }}</span>
</div>
<div class="item">
<span class="item-field">实际服务时间 </span>
<span>{{ info.serviceStartTime }} {{ info.serviceEndTime }}</span>
</div>
<!-- <div class="item">
<span class="item-field">完成情况 </span>
<span>{{ info.finishDesc }}</span>
</div> -->
<div class="item">
<span class="item-field">评价 </span>
<span>
<el-rate :value="info.score" disabled></el-rate>
</span>
</div>
</template>
<screen-nodata class="nodata" v-else></screen-nodata>
</div>
</div>
</cpt-card>
</div>
</div>
</template>
<script>
import ScreenNodata from "@/views/modules/visual/components/screen-nodata"
import cptCard from '@/views/modules/visual/cpts/card'
import { requestPost } from '@/js/dai/request'
export default {
name: 'dialogInfo',
props: {
userId: {
type: String,
default: '',
},
gridName: {
type: String,
default: '',
},
orgId: {
type: String,
default: ''
}
},
components: {
cptCard,
ScreenNodata
},
data() {
return {
pageNo: 1,
pageSize: 10,
servicelist: [],
info: {
// content: '56',
// gridName: '',
// categoryName: '便',
// statusName: '',
// reportTypeName: '',
// reportUserName: '',
// reportUserMobile: '13794049999',
// reportTime: '2022-05-18 14:47:00',
// wantServiceTime: '2022-05-18 14:47:00',
// serviceShowName: '',
// serviceStartTime: '2022-05-18 14:47:00',
// serviceEndTime: '2022-05-18 14:47:00',
// finishDesc: '',
// score: '3.5'
},
loadType: 'loading',
activeIndex: 0
}
},
created () {
this.servicelist = []
},
methods: {
//
async getServicelist () {
if (this.loadType == 'none') {
return
}
const url = '/heart/residemand/service-list'
const params = {
serverId: this.orgId,
pageNo: this.pageNo,
pageSize: this.pageSize,
type: 'community_org', // volunteercommunity_org
}
const { data, code, msg } = await requestPost(url, params)
if (code === 0) {
if (this.pageNo == 1) {
this.getDemandDetail(data.list[0].demandRecId)
}
this.pageNo++
this.servicelist = this.servicelist.concat(data.list)
this.loadType = this.servicelist.length < data.total ? 'loading' : 'none'
} else {
this.$message.error(msg)
}
},
//
async getDemandDetail (id) {
this.info = {}
const url = '/heart/userdemand/demandDetail'
const params = {
demandRecId: id, // id
}
const { data, code, msg } = await requestPost(url, params)
if (code === 0) {
this.info = data
} else {
this.$message.error(msg)
}
},
toDetail (index) {
this.activeIndex = index
this.getDemandDetail(this.servicelist[index].demandRecId)
},
handleClose() {
this.$emit("close")
},
}
}
</script>
<style lang="scss" src="@/assets/scss/modules/visual/people.scss" scoped></style>
<style lang="scss" scoped>
@mixin scrollBar {
&::-webkit-scrollbar {
/*滚动条整体样式*/
width: 8px; /*高宽分别对应横竖滚动条的尺寸*/
height: 1px;
}
&::-webkit-scrollbar-thumb {
/*滚动条里面小方块*/
border-radius: 8px;
box-shadow: inset 0 0 5px rgba(#00023f, 0.2);
background: linear-gradient(270deg, #0063fe, #0095ff);
}
&::-webkit-scrollbar-track {
/*滚动条里面轨道*/
box-shadow: inset 0 0 5px rgba(#00023f, 0.2);
border-radius: 8px;
background: darken(#0c81fe, 20);
}
}
.m-pop {
.wrap {
.list {
display: block;
width: calc(100% - 280px);
max-height: 600px;
overflow: auto;
@include scrollBar;
.item-title {
padding: 0;
font-size: 22px;
font-family: PingFang SC;
font-weight: 800;
color: #ffffff;
margin-bottom: 15px;
}
.item {
display: flex;
width: 100%;
box-sizing: border-box;
margin-top: 0;
margin-bottom: 15px;
font-size: 16px;
cursor: pointer;
.item-field {
// width: 100px;
flex-shrink: 0;
}
.item-content {
width: 100%;
max-height: 420px;
overflow-y: auto;
@include scrollBar;
}
::v-deep p {
margin: 0;
img {
width: 100%;
height: 100%;
}
}
.item-imgs {
width: 100%;
display: flex;
flex-wrap: wrap;
img {
display: block;
width: 240px;
height: 240px;
margin-right: 10px;
}
}
}
.item-desc {
font-size: 16px;
margin-bottom: 10px;
line-height: 24px;
}
}
}
.list-title {
width: 100%;
box-sizing: border-box;
padding: 20px 0 10px 62px;
font-size: 20px;
cursor: pointer;
}
}
.list-wr {
display: flex;
padding: 0 20px;
.dashed-line {
width: 1px;
height: 600px;
margin: 0 15px;
border: 1px dashed #1257c9;
}
.left-list {
width: 280px !important;
height: 600px;
overflow: auto;
padding: 10px 0 !important;
@include scrollBar;
.active-item {
border: 1px solid #0063FE !important;
box-shadow: 0px 0px 10px #0063fe inset;
}
.left-item {
display: flex;
flex-direction: column;
width: 100%;
box-sizing: border-box;
margin-top: 0;
margin-bottom: 20px;
font-size: 16px;
cursor: pointer;
color: #ffffff;
padding: 5px;
border: 1px solid transparent;
.item-content {
margin-top: 10px;
width: 100%;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
}
}
.right-list {
padding: 0 15px !important;
}
}
</style>

9
src/views/modules/visual/communityGovern/duoyuanfuwu/duoyuanDialog.vue

@ -21,6 +21,7 @@
</template> </template>
<screen-nodata class="nodata" v-else></screen-nodata> <screen-nodata class="nodata" v-else></screen-nodata>
</div> </div>
<div class="dashed-line"></div>
<div class="list right-list"> <div class="list right-list">
<template v-if="info.content"> <template v-if="info.content">
<!-- <div class="item-title">需求内容</div> --> <!-- <div class="item-title">需求内容</div> -->
@ -290,6 +291,12 @@ export default {
.list-wr { .list-wr {
display: flex; display: flex;
padding: 0 20px; padding: 0 20px;
.dashed-line {
width: 1px;
height: 600px;
margin: 0 15px;
border: 1px dashed #1257c9;
}
.left-list { .left-list {
width: 280px !important; width: 280px !important;
height: 600px; height: 600px;
@ -322,7 +329,7 @@ export default {
} }
} }
.right-list { .right-list {
padding: 0 25px !important; padding: 0 15px !important;
} }
} }
</style> </style>

21
src/views/modules/visual/communityGovern/duoyuanfuwu/duoyuanfuwufenxi.vue

@ -62,6 +62,8 @@
@clickFeature="clickMap" @clickFeature="clickMap"
:showIconLayer="true" :showIconLayer="true"
:showPolygonLayer="true" :showPolygonLayer="true"
:showPolIconLayer="true"
:areaScale="0.1"
:clickType="'popup'" :clickType="'popup'"
:isAddOpenlay="true"></screen-map> :isAddOpenlay="true"></screen-map>
</div> </div>
@ -369,8 +371,9 @@ export default {
if (item.coordinates && item.coordinates.length > 0) { if (item.coordinates && item.coordinates.length > 0) {
if (!this.isRepeatItem(item.name)) { if (!this.isRepeatItem(item.name)) {
let colorIndex = index < polygonColorArray.length ? index : 0 let colorIndex = index < polygonColorArray.length ? index : 0
item.fillColor = transparent, item.fillColor = 'rgba(0, 229, 237, 0.16)'
item.color = polygonColorArray[colorIndex] item.color = '#00E5ED'
// item.color = polygonColorArray[colorIndex]
subPolygonList.push(item) subPolygonList.push(item)
} }
} }
@ -456,7 +459,10 @@ export default {
if (this.isfirstInit) { if (this.isfirstInit) {
// this.agencyInfo.level = 'agency' // this.agencyInfo.level = 'agency'
//mapInfo, polygonArray, polIconUrlArray, iconArrays, iconUrlArray //mapInfo, polygonArray, polIconUrlArray, iconArrays, iconUrlArray
this.$refs.map.loadMap(this.agencyInfo, this.polygonList, null, this.distributionsList, this.iconUrlArray, null) const polygonIconArray = [
'https://elink-esua-epdc.oss-cn-qingdao.aliyuncs.com/epmet/test/20211116/a219130b6bc74b0b80b5ddb0fce0892a.png',
]
this.$refs.map.loadMap(this.agencyInfo, this.polygonList, polygonIconArray, this.distributionsList, this.iconUrlArray, null)
} else { } else {
this.$refs.map.refreshMap(this.agencyInfo, this.polygonList, this.distributionsList, false) this.$refs.map.refreshMap(this.agencyInfo, this.polygonList, this.distributionsList, false)
} }
@ -464,10 +470,11 @@ export default {
// //
async clickMap (feature) { async clickMap (feature) {
if (feature.values_.coordinates && feature.values_.coordinates.length > 0) { //
await this.loadOrgData(feature.values_.level, feature.values_.id) // if (feature.values_.coordinates && feature.values_.coordinates.length > 0) {
this.loadMap() // await this.loadOrgData(feature.values_.level, feature.values_.id)
} // this.loadMap()
// }
console.log('标注信息', feature.values_.properties) console.log('标注信息', feature.values_.properties)
if (!feature.values_.properties) { if (!feature.values_.properties) {
return return

Loading…
Cancel
Save