19 changed files with 964 additions and 303 deletions
|
After Width: | Height: | Size: 390 B |
|
After Width: | Height: | Size: 432 B |
|
After Width: | Height: | Size: 18 KiB |
|
After Width: | Height: | Size: 3.1 KiB |
@ -0,0 +1,148 @@ |
|||
<template> |
|||
<div class="result"> |
|||
<div class="score"> |
|||
<div class="tit">当前得分</div> |
|||
<div class="branch"> |
|||
<span>{{synthesisScore?synthesisScore:'0'}}</span>分 |
|||
</div> |
|||
</div> |
|||
<div class="submit-num"> |
|||
<div class="tit">总提交人数</div> |
|||
<div class="data"> |
|||
<div class="people"> |
|||
<span>{{sumNum?sumNum:'0'}}</span>人 |
|||
</div> |
|||
<div> |
|||
<div class="today day"><span>今日</span> +{{todayNum?todayNum:0}}</div> |
|||
<div class="yesterday day"><span>昨日</span> +{{lastDayNum?lastDayNum:0}}</div> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
</template> |
|||
|
|||
<script> |
|||
export default { |
|||
name: "CommunityResult", |
|||
props: { |
|||
date: { |
|||
type: String, |
|||
default: '' |
|||
} |
|||
}, |
|||
data() { |
|||
return { |
|||
org: this.$store.state.chooseArea.chooseName, |
|||
lastDayNum: 0, |
|||
sumNum: 0, |
|||
synthesisScore: 0, |
|||
todayNum: 0, |
|||
}; |
|||
}, |
|||
watch: { |
|||
"$store.state.chooseArea.chooseName"(val) { |
|||
if (val.orgId) { |
|||
this.getData() |
|||
} |
|||
}, |
|||
date() { |
|||
this.getData() |
|||
} |
|||
}, |
|||
mounted() { |
|||
if (this.org.orgId) { |
|||
this.getData() |
|||
} |
|||
}, |
|||
methods: { |
|||
getData() { |
|||
this.$http.get('/actual/base/streetOverview/satisfactionCommunitySelfGroup?month='+this.date+'&level='+this.$store.state.chooseArea.chooseName.level+'&orgId='+this.$store.state.chooseArea.chooseName.orgId).then(({data: {data}}) => { |
|||
this.lastDayNum = data.lastDayNum |
|||
this.sumNum = data.sumNum |
|||
this.synthesisScore = data.synthesisScore |
|||
this.todayNum = data.todayNum |
|||
}) |
|||
} |
|||
} |
|||
} |
|||
</script> |
|||
|
|||
<style scoped lang="scss"> |
|||
.result { |
|||
display: flex; |
|||
align-items: center; |
|||
justify-content: space-between; |
|||
padding: 20px 30px 30px; |
|||
.tit { |
|||
font-size: 16px; |
|||
font-weight: 400; |
|||
color: #FFFFFF; |
|||
} |
|||
|
|||
.score { |
|||
.branch { |
|||
font-size: 14px; |
|||
font-weight: 500; |
|||
color: #A3B9DA; |
|||
margin-top: 20px; |
|||
span { |
|||
font-size: 36px; |
|||
font-weight: bold; |
|||
font-style: italic; |
|||
color: #08EBAE; |
|||
} |
|||
} |
|||
|
|||
} |
|||
|
|||
|
|||
.submit-num { |
|||
.data { |
|||
display: flex; |
|||
align-items: flex-end; |
|||
.people { |
|||
font-size: 14px; |
|||
font-weight: 500; |
|||
color: #A3B9DA; |
|||
margin-right: 21px; |
|||
span { |
|||
font-size: 36px; |
|||
font-weight: bold; |
|||
font-style: italic; |
|||
color: #7FCEFF; |
|||
} |
|||
} |
|||
.day { |
|||
display: flex; |
|||
align-items: center; |
|||
margin-top: 8px; |
|||
font-size: 18px; |
|||
font-weight: bold; |
|||
font-style: italic; |
|||
color: #00D6D9; |
|||
span { |
|||
display: block; |
|||
text-align: center; |
|||
font-style: normal; |
|||
font-size: 12px; |
|||
font-weight: 500; |
|||
color: #FFFFFF; |
|||
width: 36px; |
|||
height: 18px; |
|||
line-height: 18px; |
|||
} |
|||
&.today span { |
|||
background: url("@/assets/images/gailan/tag_blue.png") no-repeat; |
|||
} |
|||
|
|||
&.yesterday span { |
|||
background: url("@/assets/images/gailan/tag_orange.png") no-repeat; |
|||
} |
|||
} |
|||
} |
|||
} |
|||
|
|||
|
|||
} |
|||
|
|||
</style> |
|||
@ -0,0 +1,103 @@ |
|||
<template> |
|||
<div class="dhrd"> |
|||
<div class="dhrd-list"> |
|||
<!-- <div class="dhrd-item"> |
|||
<div class="time blue"> |
|||
刚刚 |
|||
</div> |
|||
<div class="title ">XX社区第一网格</div> |
|||
<div class="name ">杨波</div> |
|||
<div class="address "> |
|||
修改了新苑小区**的居民信息的居民信息的居民信息 |
|||
</div> |
|||
</div>--> |
|||
<div class="dhrd-item" v-for="(item,index) in list" :key="index"> |
|||
<div class="time"> |
|||
{{$moment(item.changeTime).format('HH:mm')}} |
|||
</div> |
|||
<div class="title">{{item.orgName}}</div> |
|||
<!-- <div class="name">{{item.orgName}}</div>--> |
|||
<div class="address">{{item.content}}</div> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
</template> |
|||
|
|||
<script> |
|||
export default { |
|||
name: "DynamicHumanRoomData", |
|||
data() { |
|||
return { |
|||
org: this.$store.state.chooseArea.chooseName, |
|||
list: [] |
|||
} |
|||
}, |
|||
watch: { |
|||
"$store.state.chooseArea.chooseName"(val) { |
|||
if (val.orgId) { |
|||
this.getList() |
|||
} |
|||
}, |
|||
}, |
|||
mounted() { |
|||
if (this.org.orgId) { |
|||
this.getList() |
|||
} |
|||
}, |
|||
methods: { |
|||
getList() { |
|||
this.$http.get('/actual/base/streetOverview/residentHouseUpdateRecord?level='+this.$store.state.chooseArea.chooseName.level+'&orgId='+this.$store.state.chooseArea.chooseName.orgId).then(({data: {data}}) => { |
|||
this.list = data |
|||
}) |
|||
} |
|||
} |
|||
} |
|||
</script> |
|||
|
|||
<style scoped lang="scss"> |
|||
@import "@/assets/scss/dataBoard/c/common.scss"; |
|||
.dhrd { |
|||
padding: 20px 16px; |
|||
} |
|||
.dhrd-list { |
|||
height: 200px; |
|||
overflow-y: auto; |
|||
@include scrollBar |
|||
.dhrd-item { |
|||
display: flex; |
|||
font-size: 14px; |
|||
font-weight: 400; |
|||
color: #FFFFFF; |
|||
height: 40px; |
|||
align-items: center; |
|||
padding: 0 16px; |
|||
&:nth-of-type(odd) { |
|||
background: rgba(14, 56, 115, 0.4); |
|||
} |
|||
.time { |
|||
flex: 1; |
|||
} |
|||
.title { |
|||
flex: 2; |
|||
overflow: hidden; |
|||
white-space: nowrap; |
|||
text-overflow: ellipsis; |
|||
} |
|||
.name { |
|||
flex: 1; |
|||
overflow: hidden; |
|||
white-space: nowrap; |
|||
text-overflow: ellipsis; |
|||
} |
|||
.address { |
|||
flex: 3; |
|||
overflow: hidden; |
|||
text-overflow: ellipsis; |
|||
white-space: nowrap; |
|||
} |
|||
} |
|||
} |
|||
.blue { |
|||
color: #0DEEEF; |
|||
} |
|||
</style> |
|||
@ -0,0 +1,194 @@ |
|||
<template> |
|||
<div class="event"> |
|||
<div class="tabs"> |
|||
<Tabs v-model="type" :list="typeList" @changeVal="typeChange"/> |
|||
</div> |
|||
<div class="content"> |
|||
<div class="total"> |
|||
<div class="tit">事件总数</div> |
|||
<div class="num orange">{{sumNum?sumNum:0}}</div> |
|||
<div class="desc"><span>较上月</span>-{{lastSumNum?lastSumNum:0}}</div> |
|||
</div> |
|||
<div class="processing"> |
|||
<div class="bg"> |
|||
<div class="bg-1"> |
|||
</div> |
|||
<div class="num"> |
|||
{{processNum?processNum:0}} |
|||
</div> |
|||
<div class="name">处理中</div> |
|||
</div> |
|||
</div> |
|||
<div class="total"> |
|||
<div class="tit">已办结</div> |
|||
<div class="num blue">{{closedNum?closedNum:0}}</div> |
|||
<div class="desc white"><span>办结率</span>{{closedRatio?closedRatio:0}}%</div> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
</template> |
|||
|
|||
<script> |
|||
import Tabs from "@/views/dataBoard/satisfactionEval/components/Tabs/index.vue"; |
|||
|
|||
export default { |
|||
name: "EventAndFollowUp", |
|||
components: {Tabs}, |
|||
props: { |
|||
date: { |
|||
type: String, |
|||
default: '' |
|||
} |
|||
}, |
|||
data() { |
|||
return { |
|||
org: this.$store.state.chooseArea.chooseName, |
|||
typeList: [{ |
|||
label: '12345事件', |
|||
value: '12345' |
|||
}, { |
|||
label: '事件回访', |
|||
value: 'follow' |
|||
}], |
|||
type: '12345', |
|||
sumNum: 0, |
|||
lastSumNum: 0, |
|||
processNum: 0, |
|||
closedNum: 0, |
|||
} |
|||
}, |
|||
watch: { |
|||
"$store.state.chooseArea.chooseName"(val) { |
|||
if (val.orgId) { |
|||
this.getData() |
|||
} |
|||
}, |
|||
date() { |
|||
this.getData() |
|||
} |
|||
}, |
|||
mounted() { |
|||
if (this.org.orgId) { |
|||
this.getData() |
|||
} |
|||
}, |
|||
methods: { |
|||
getData() { |
|||
this.$http.get('/actual/base/streetOverview/eventAndFollowGroup?month=' + this.date + '&level=' + this.$store.state.chooseArea.chooseName.level + '&orgId=' + this.$store.state.chooseArea.chooseName.orgId + '&queryType=' + this.type).then(({data: {data}}) => { |
|||
this.sumNum = data.sumNum |
|||
this.lastSumNum = data.lastSumNum |
|||
this.processNum = data.processNum |
|||
this.closedNum = data.closedNum |
|||
this.closedRatio = data.closedRatio |
|||
}) |
|||
}, |
|||
typeChange(val) { |
|||
console.log(val,'val') |
|||
this.type = val |
|||
this.getData() |
|||
} |
|||
} |
|||
} |
|||
</script> |
|||
|
|||
<style scoped lang="scss"> |
|||
.event { |
|||
padding: 10px 16px; |
|||
} |
|||
.tabs { |
|||
margin: 10px 0; |
|||
} |
|||
|
|||
.content { |
|||
background: linear-gradient(90deg, rgba(1, 94, 234, 0.1) 0%, rgba(16, 50, 103, 0) 50%, rgba(1, 94, 234, 0.1) 100%); |
|||
padding: 20px 19px; |
|||
display: flex; |
|||
justify-content: space-between; |
|||
align-items: center; |
|||
} |
|||
|
|||
.total { |
|||
.tit { |
|||
font-size: 16px; |
|||
font-weight: 400; |
|||
color: #FFFFFF; |
|||
} |
|||
|
|||
.num { |
|||
height: 24px; |
|||
font-size: 32px; |
|||
font-weight: bold; |
|||
font-style: italic; |
|||
margin: 20px 0 15px; |
|||
} |
|||
|
|||
.orange { |
|||
color: #FF7845; |
|||
} |
|||
|
|||
.blue { |
|||
color: #76C0EF; |
|||
} |
|||
|
|||
.desc { |
|||
font-size: 18px; |
|||
font-weight: bold; |
|||
font-style: italic; |
|||
color: #00D6D9; |
|||
|
|||
span { |
|||
font-style: normal; |
|||
font-size: 14px; |
|||
font-weight: 500; |
|||
color: #A3B9DA; |
|||
} |
|||
} |
|||
|
|||
.white { |
|||
color: #fff; |
|||
} |
|||
} |
|||
|
|||
|
|||
.processing { |
|||
.bg { |
|||
background: url("@/assets/images/gailan/yuan_bg.png") no-repeat center; |
|||
flex: 0 0 150px; |
|||
width: 150px; |
|||
height: 150px; |
|||
display: flex; |
|||
align-items: center; |
|||
justify-content: center; |
|||
position: relative; |
|||
|
|||
.bg-1 { |
|||
background: url("@/assets/images/gailan/zq_bg.png") no-repeat center; |
|||
width: 146px; |
|||
height: 136px; |
|||
position: absolute; |
|||
left: 9px; |
|||
top: 9px; |
|||
} |
|||
|
|||
.num { |
|||
font-size: 32px; |
|||
font-weight: bold; |
|||
font-style: italic; |
|||
color: #64C1FF; |
|||
} |
|||
|
|||
.name { |
|||
position: absolute; |
|||
bottom: 10px; |
|||
font-size: 16px; |
|||
font-weight: 400; |
|||
color: #FFFFFF; |
|||
} |
|||
|
|||
} |
|||
|
|||
|
|||
} |
|||
|
|||
|
|||
</style> |
|||
@ -0,0 +1,99 @@ |
|||
<template> |
|||
<div class="m-subbox m-sqrfph"> |
|||
<div class="rank"> |
|||
<div class="tit">{{ self.orgName }}</div> |
|||
<div class="num">第<span>{{ self.rank }}</span>名</div> |
|||
</div> |
|||
<div class="table"> |
|||
<div class="tr"> |
|||
<div class="th">排名</div> |
|||
<div class="th">网格</div> |
|||
<div class="th">房屋更新数</div> |
|||
<div class="th">人口更新数</div> |
|||
<div class="th">人房更新总数</div> |
|||
</div> |
|||
<div class="tr" v-for="item in pmList" :key="item.rank"> |
|||
<div :class="item.rank < 4 ? `td tdbg${item.rank}` : 'td'"> |
|||
{{ item.rank }} |
|||
</div> |
|||
<div class="td">{{ item.orgName }}</div> |
|||
<div class="td">{{ item.houseNum }}</div> |
|||
<div class="td">{{ item.residentNum }}</div> |
|||
<div class="td">{{ item.sumNum }}</div> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
</template> |
|||
<script> |
|||
export default { |
|||
name: "RankingGridData", |
|||
props: { |
|||
date: { |
|||
type: String, |
|||
default: '' |
|||
} |
|||
}, |
|||
data() { |
|||
return { |
|||
org: this.$store.state.chooseArea.chooseName, |
|||
pmList: [], |
|||
self: {} |
|||
}; |
|||
}, |
|||
watch: { |
|||
"$store.state.chooseArea.chooseName"(val) { |
|||
if (val.orgId) { |
|||
this.getList() |
|||
} |
|||
}, |
|||
date() { |
|||
this.getList() |
|||
} |
|||
}, |
|||
mounted() { |
|||
if (this.org.orgId) { |
|||
this.getList() |
|||
} |
|||
}, |
|||
methods: { |
|||
getList() { |
|||
this.$http.get('/actual/base/streetOverview/residentHouseUpdateGroupByGrid?month=' + this.date + '&level=' + this.$store.state.chooseArea.chooseName.level + '&orgId=' + this.$store.state.chooseArea.chooseName.orgId).then(({data: {data}}) => { |
|||
if (data) { |
|||
data = data.map((item, index) => { |
|||
return { |
|||
...item, |
|||
rank: index - 0 + 1 |
|||
} |
|||
}) |
|||
this.pmList = data.filter(item => !item.self) |
|||
this.self = data.filter(item => item.self)[0] |
|||
} |
|||
}) |
|||
} |
|||
} |
|||
}; |
|||
</script> |
|||
|
|||
<style lang="scss" src="@/assets/scss/dataBoard/overview/index.scss" scoped/> |
|||
<style scoped lang="scss"> |
|||
.rank { |
|||
font-size: 16px; |
|||
font-weight: 400; |
|||
color: #FFFFFF; |
|||
padding: 0 15px 20px; |
|||
|
|||
.num { |
|||
font-size: 14px; |
|||
font-weight: 500; |
|||
color: #A3B9DA; |
|||
margin-top: 20px; |
|||
|
|||
span { |
|||
font-size: 36px; |
|||
font-weight: bold; |
|||
font-style: italic; |
|||
color: #FFB73C; |
|||
} |
|||
} |
|||
} |
|||
</style> |
|||
Loading…
Reference in new issue