Commit c5e14095 authored by 郭铭瑶's avatar 郭铭瑶 🤘

公共管理&公共服务&公共安全 改版

parent 64a1cdfa
src/assets/images/china.png

1.96 KB | W: | H:

src/assets/images/china.png

1.27 KB | W: | H:

src/assets/images/china.png
src/assets/images/china.png
src/assets/images/china.png
src/assets/images/china.png
  • 2-up
  • Swipe
  • Onion skin
src/assets/images/img1.png

1.3 KB | W: | H:

src/assets/images/img1.png

1.13 KB | W: | H:

src/assets/images/img1.png
src/assets/images/img1.png
src/assets/images/img1.png
src/assets/images/img1.png
  • 2-up
  • Swipe
  • Onion skin
src/assets/images/img2.png

1.27 KB | W: | H:

src/assets/images/img2.png

1.07 KB | W: | H:

src/assets/images/img2.png
src/assets/images/img2.png
src/assets/images/img2.png
src/assets/images/img2.png
  • 2-up
  • Swipe
  • Onion skin
src/assets/images/img3.png

1.38 KB | W: | H:

src/assets/images/img3.png

1.2 KB | W: | H:

src/assets/images/img3.png
src/assets/images/img3.png
src/assets/images/img3.png
src/assets/images/img3.png
  • 2-up
  • Swipe
  • Onion skin
src/assets/images/img4.png

1.66 KB | W: | H:

src/assets/images/img4.png

1.33 KB | W: | H:

src/assets/images/img4.png
src/assets/images/img4.png
src/assets/images/img4.png
src/assets/images/img4.png
  • 2-up
  • Swipe
  • Onion skin
src/assets/images/img5.png

1.6 KB | W: | H:

src/assets/images/img5.png

1.27 KB | W: | H:

src/assets/images/img5.png
src/assets/images/img5.png
src/assets/images/img5.png
src/assets/images/img5.png
  • 2-up
  • Swipe
  • Onion skin
src/assets/images/img6.png

1.3 KB | W: | H:

src/assets/images/img6.png

1.12 KB | W: | H:

src/assets/images/img6.png
src/assets/images/img6.png
src/assets/images/img6.png
src/assets/images/img6.png
  • 2-up
  • Swipe
  • Onion skin
src/assets/images/img7.png

1.44 KB | W: | H:

src/assets/images/img7.png

1.51 KB | W: | H:

src/assets/images/img7.png
src/assets/images/img7.png
src/assets/images/img7.png
src/assets/images/img7.png
  • 2-up
  • Swipe
  • Onion skin
src/assets/images/img8.png

1.32 KB | W: | H:

src/assets/images/img8.png

1.03 KB | W: | H:

src/assets/images/img8.png
src/assets/images/img8.png
src/assets/images/img8.png
src/assets/images/img8.png
  • 2-up
  • Swipe
  • Onion skin
src/assets/images/in.png

2.09 KB | W: | H:

src/assets/images/in.png

1.33 KB | W: | H:

src/assets/images/in.png
src/assets/images/in.png
src/assets/images/in.png
src/assets/images/in.png
  • 2-up
  • Swipe
  • Onion skin
src/assets/images/out.png

1.69 KB | W: | H:

src/assets/images/out.png

1.15 KB | W: | H:

src/assets/images/out.png
src/assets/images/out.png
src/assets/images/out.png
src/assets/images/out.png
  • 2-up
  • Swipe
  • Onion skin
...@@ -10,18 +10,19 @@ $color-main = #5BD5FF ...@@ -10,18 +10,19 @@ $color-main = #5BD5FF
.ant-select .ant-select
z-index 99 z-index 99
font-size .08rem font-size .08rem
color $color-main color #fff
min-width .6rem min-width .6rem
.ant-select-selector .ant-select-selector
border .01rem solid $color-main background rgba(70,83,97,.4)
border-radius 0 box-shadow inset 0 .01rem .02rem 0 rgba(204,204,204,.2)
background rgba(0,0,0,0.3) border-radius .02rem
border none
height .2rem height .2rem
padding 0 .04rem padding 0 .06rem
.ant-select-selection-item .ant-select-selection-item
line-height .2rem line-height .2rem
.ant-select-arrow .ant-select-arrow
color $color-main color #fff
font-size .08rem font-size .08rem
right .05rem right .05rem
width auto width auto
......
...@@ -4,6 +4,16 @@ ...@@ -4,6 +4,16 @@
<p> <p>
{{ title }} {{ title }}
</p> </p>
<div v-if="btns && btns.length > 0">
<span
v-for="btn in btns"
:key="btn.key"
:class="{ on: btn.key === curBtn }"
@click="handleSelect(btn)"
>
{{ btn.name }}
</span>
</div>
</div> </div>
<div class="card-content"> <div class="card-content">
<span class="border" /> <span class="border" />
...@@ -27,6 +37,21 @@ export default defineComponent({ ...@@ -27,6 +37,21 @@ export default defineComponent({
type: Boolean as PropType<boolean>, type: Boolean as PropType<boolean>,
default: true, default: true,
}, },
btns: {
type: Array as PropType<{ key?: string; name?: string }[]>,
default: null,
},
curBtn: {
type: String as PropType<string>,
default: null,
},
},
emits: ['select'],
setup(_, ctx) {
const handleSelect = (btn: { key?: string; name?: string }) => {
ctx.emit('select', btn.key)
}
return { handleSelect }
}, },
}) })
</script> </script>
...@@ -42,10 +67,12 @@ export default defineComponent({ ...@@ -42,10 +67,12 @@ export default defineComponent({
.card-title .card-title
display flex display flex
align-items center align-items center
justify-content space-between
background linear-gradient(to right, rgba(59,85,102,.8), transparent) background linear-gradient(to right, rgba(59,85,102,.8), transparent)
position relative position relative
border-bottom .01rem solid rgba(105,110,114,.15) border-bottom .01rem solid rgba(105,110,114,.15)
margin-bottom .05rem margin-bottom .05rem
padding 0 .1rem
&:before &:before
content '' content ''
display block display block
...@@ -59,7 +86,16 @@ export default defineComponent({ ...@@ -59,7 +86,16 @@ export default defineComponent({
font-size $card-title-size font-size $card-title-size
font-weight bold font-weight bold
margin 0 margin 0
margin-left .1rem >div
span
cursor pointer
margin-left .05rem
color $primary-border
&:hover
&.on
color #fff
font-weight bold
.card-content .card-content
position relative position relative
box-sizing border-box box-sizing border-box
......
...@@ -37,7 +37,7 @@ export default defineComponent({ ...@@ -37,7 +37,7 @@ export default defineComponent({
}, },
mode: { mode: {
type: String as PropType<ModeType>, type: String as PropType<ModeType>,
default: '2', default: '4',
}, },
enter: { enter: {
type: String as PropType<string>, type: String as PropType<string>,
......
<template> <template>
<div class="my-title" :class="{ 'work-station': inWorkStation }"> <div class="my-title">
<div class="date"> <div class="date">
<span>{{ date }}</span> <span>{{ date }}</span>
<span>{{ time }}</span> <span>{{ time }}</span>
...@@ -11,7 +11,7 @@ ...@@ -11,7 +11,7 @@
:class="{ on: btn.type === curBtn }" :class="{ on: btn.type === curBtn }"
@click="handleThemeSelect(btn.type)" @click="handleThemeSelect(btn.type)"
> >
{{ btn.name }} <p>{{ btn.name }}</p>
</div> </div>
</div> </div>
<h1><slot />{{ curView.name.includes('工作站') ? curView.name : '' }}</h1> <h1><slot />{{ curView.name.includes('工作站') ? curView.name : '' }}</h1>
...@@ -46,9 +46,6 @@ export default defineComponent({ ...@@ -46,9 +46,6 @@ export default defineComponent({
]) ])
const curBtn = computed(() => store.state.curTheme) const curBtn = computed(() => store.state.curTheme)
const curView = computed(() => store.state.curView) const curView = computed(() => store.state.curView)
const inWorkStation = computed(
() => store.state.curView.type.indexOf('work') >= 0
)
const handleThemeSelect = (type: string) => { const handleThemeSelect = (type: string) => {
if (curBtn.value === type) return if (curBtn.value === type) return
store.commit('SET_CURRENT_THEME', type) store.commit('SET_CURRENT_THEME', type)
...@@ -61,7 +58,6 @@ export default defineComponent({ ...@@ -61,7 +58,6 @@ export default defineComponent({
timer.value = null timer.value = null
}) })
return { return {
inWorkStation,
date, date,
time, time,
timer, timer,
...@@ -81,13 +77,9 @@ export default defineComponent({ ...@@ -81,13 +77,9 @@ export default defineComponent({
$center() $center()
justify-content flex-start justify-content flex-start
position relative position relative
background url('@/assets/images/title-bg.png') center / cover no-repeat
font-weight bold font-weight bold
z-index 1
&.work-station
background url('@/assets/images/title-bg2.png') center / cover no-repeat background url('@/assets/images/title-bg2.png') center / cover no-repeat
h1 z-index 1
margin 0.4% 0 0 2%
.date .date
z-index 2 z-index 2
position absolute position absolute
...@@ -96,8 +88,9 @@ export default defineComponent({ ...@@ -96,8 +88,9 @@ export default defineComponent({
display block display block
text-align right text-align right
h1 h1
font-family $font-weibei font-family $font-pang
margin 0 0 0 10% width 18%
text-align center
z-index 2 z-index 2
background-clip text background-clip text
-webkit-background-clip text -webkit-background-clip text
...@@ -105,21 +98,29 @@ export default defineComponent({ ...@@ -105,21 +98,29 @@ export default defineComponent({
background-image linear-gradient(to bottom, #fff, #00C7FF) background-image linear-gradient(to bottom, #fff, #00C7FF)
font-size .22rem font-size .22rem
letter-spacing .05rem letter-spacing .05rem
margin-top 0.5%
.btn-container .btn-container
z-index 2 z-index 2
display flex display flex
position absolute position absolute
right 30% left 30%
color #ccc color #ccc
>div >div
$center() $center()
padding .03rem .1rem padding .02rem .18rem
box-sizing border-box box-sizing border-box
margin-left .1rem margin-left .1rem
background url('@/assets/images/btn-bg.png') 100% / 100% no-repeat
cursor pointer cursor pointer
color $blue
border .01rem solid @color
transform skew(-45deg)
opacity .6
transition all .3s ease
&:hover &:hover
&.on &.on
color #fff color $yellow
background url('@/assets/images/btn-bg-on.png') 100% / 100% no-repeat border-color @color
opacity 1
p
transform skew(45deg)
</style> </style>
...@@ -45,3 +45,8 @@ $font-color = #70A7E0 ...@@ -45,3 +45,8 @@ $font-color = #70A7E0
$table-bg(opacity = 0.3) $table-bg(opacity = 0.3)
rgba(0, 118, 255, opacity ) rgba(0, 118, 255, opacity )
$card-bg2()
background rgba(70,83,97,.4)
box-shadow inset 0 .01rem .02rem 0 rgba(204,204,204,.2)
border-radius .03rem
\ No newline at end of file
<template> <template>
<div class="summary-container" :class="{ 'two-child': twoChild }"> <div class="summary-container" :class="{ 'over-two': list.length > 3 }">
<div v-for="item in list" :key="item.name"> <div v-for="(item, i) in list" :key="item.name">
<p> <p>
<img v-if="avatar && i === 0" :src="avatar" />
<m-count class="count" :value="item.value" /> <m-count class="count" :value="item.value" />
<span class="unit">{{ item.unit }}</span> <span class="unit">{{ item.unit }}</span>
</p> </p>
...@@ -25,9 +26,9 @@ export default defineComponent({ ...@@ -25,9 +26,9 @@ export default defineComponent({
type: Array as PropType<SummaryProp[]>, type: Array as PropType<SummaryProp[]>,
required: true, required: true,
}, },
twoChild: { avatar: {
type: Boolean as PropType<boolean>, type: String as PropType<string>,
default: false, default: null,
}, },
}, },
}) })
...@@ -35,29 +36,57 @@ export default defineComponent({ ...@@ -35,29 +36,57 @@ export default defineComponent({
<style lang="stylus" scoped> <style lang="stylus" scoped>
@import '../../components/MyComponent/main.styl' @import '../../components/MyComponent/main.styl'
$create-border()
content ''
display block
height 40%
width .01rem
background #aaa
position absolute
top 0
bottom 0
margin auto 0
left -50%
.summary-container .summary-container
width 100% width 100%
min-height .4rem min-height .4rem
background url('@/assets/images/msg-wrapper.png') 100% / 100% 100% no-repeat
display flex display flex
align-items center align-items center
justify-content space-around justify-content space-around
&.two-child $card-bg2()
background url('@/assets/images/msg-wrapper2.png') 100% / 100% 100% no-repeat box-sizing border-box
padding .06rem 0
&.over-two
>div
&:nth-last-child(2)
&:before
$create-border()
>div >div
text-align center text-align center
margin-left -0.1rem position relative
&:first-child &:first-child
.count padding-left .5rem
color $yellow &:last-child
&:before
$create-border()
p p
.count .count
font-weight bold font-family $font-pang
font-size .12rem
margin-right .01rem margin-right .01rem
color $orange
.unit .unit
color #aaa color #aaa
font-size .09rem font-size .09rem
&:last-child &:last-child
color $font-color
font-weight bold font-weight bold
color #ccc
>img
position absolute
left 0
top 0
bottom 0
margin auto 0
width .26rem
</style> </style>
<template> <template>
<m-card mode="border"> <m-card mode="border2">
<m-card class="card" title="指挥体系"> <m-card class="card" title="指挥体系">
<div class="command"> <div class="command">
<div class="leader"> <div class="leader">
...@@ -21,48 +21,45 @@ ...@@ -21,48 +21,45 @@
</div> </div>
</div> </div>
<div class="disposal"> <div class="disposal">
<m-sub>网格工作站</m-sub> <m-sub2>网格工作站</m-sub2>
<div class="table"> <div v-for="item in dutyTableData" :key="item.group" class="card">
<div> <div class="title">
<p>网格工作站</p> {{ item.group }}
<p class="thead3">网格长</p> <span />
<p>工作时段</p> <p><m-count :value="item.number" /><b></b></p>
<p>总人数</p> </div>
<div class="content">
<p>日班:{{ item.workTimeDay }}</p>
<p>{{ item.personnelDay }}</p>
</div> </div>
<div v-for="(item, i) in dutyTableData" :key="i"> <div class="content">
<p>{{ item.group }}</p> <p>夜班:{{ item.workTimeNight }}</p>
<p class="doubleRow"> <p>{{ item.personnelNight }}</p>
<span>
<span></span>
<span>{{ item.personnelDay }}</span>
</span>
<span>
<span></span>
<span>{{ item.personnelNight }}</span>
</span>
</p>
<p class="doubleRow2">
<span>{{ item.workTimeDay }}</span>
<span>{{ item.workTimeNight }}</span>
</p>
<p>{{ item.number }}</p>
</div> </div>
</div> </div>
</div> </div>
</m-card> </m-card>
<m-card class="card" title="党建和经济"> <m-card
class="card"
title="党建和经济"
:btns="tabList"
:cur-btn="curTab"
@select="setCurTab"
>
<div class="party"> <div class="party">
<Tabs :list="tabList" @select="setCurTab" />
<div v-if="curTab === 'economic'" class="content economic"> <div v-if="curTab === 'economic'" class="content economic">
<div v-for="circle in economicList" :key="circle.name"> <div v-for="circle in economicList" :key="circle.name">
<Cricle :value="circle.value" :name="circle.name" /> <Cricle :value="circle.value" :name="circle.name" />
</div> </div>
</div> </div>
<div v-else class="content party"> <div v-else class="content party">
<SubTitle>街道党员人数</SubTitle> <m-sub2>街道党员人数</m-sub2>
<Summary :list="partySummary" /> <Summary :list="partySummary" :avatar="avatar6" />
<SubTitle>物业"三驾马车"</SubTitle> <m-sub2>物业"三驾马车"</m-sub2>
<Brief :list="propertySummary" /> <Brief :list="propertySummary.slice(0, 3)" color="#fff" />
<m-sub2 :addition="{ value: propertySummary[3].value }">
交叉任职
</m-sub2>
</div> </div>
</div> </div>
</m-card> </m-card>
...@@ -71,33 +68,30 @@ ...@@ -71,33 +68,30 @@
<script lang="ts"> <script lang="ts">
import { defineComponent, ref, computed, watch } from 'vue' import { defineComponent, ref, computed, watch } from 'vue'
import Tabs, { TabsProp } from '../components/tabs.vue' import Summary from '../components/summary.vue'
import SubTitle from '../components/sub-title.vue' import Brief from '../components/brief.vue'
import Summary, { SummaryProp } from '../components/summary.vue'
import Brief, { BriefProp } from '../components/brief.vue'
import Cricle from '../components/circle.vue' import Cricle from '../components/circle.vue'
import avatar1 from '@/assets/images/avatar1.png' import avatar3 from '@/assets/images/avatar3.png'
import avatar2 from '@/assets/images/avatar2.png' import avatar4 from '@/assets/images/avatar4.png'
import icon1 from '@/assets/images/icon1.png' import avatar6 from '@/assets/images/avatar6.png'
import icon2 from '@/assets/images/icon2.png' import icon31 from '@/assets/images/icon31.png'
import icon3 from '@/assets/images/icon3.png' import icon37 from '@/assets/images/icon37.png'
import icon4 from '@/assets/images/icon4.png' import icon38 from '@/assets/images/icon38.png'
import icon5 from '@/assets/images/icon5.png'
import store from '@/store' import store from '@/store'
export default defineComponent({ export default defineComponent({
name: 'Command', name: 'Command',
components: { Tabs, SubTitle, Summary, Brief, Cricle }, components: { Summary, Brief, Cricle },
setup() { setup() {
// 指挥体系-领导 // 指挥体系-领导
const leaders = computed(() => { const leaders = computed(() => {
return [ return [
{ {
img: avatar1, img: avatar3,
type: '指挥长', type: '指挥长',
name: commandSystem.value.zhz, name: commandSystem.value.zhz,
}, },
{ {
img: avatar2, img: avatar4,
type: '副指挥长', type: '副指挥长',
name: commandSystem.value.fzhz, name: commandSystem.value.fzhz,
}, },
...@@ -200,16 +194,6 @@ export default defineComponent({ ...@@ -200,16 +194,6 @@ export default defineComponent({
{ immediate: true } { immediate: true }
) )
const btns = ref([
{
icon: icon1,
name: '单兵专题',
},
{
icon: icon2,
name: '排班表',
},
])
const soldierList = ref([ const soldierList = ref([
{ {
id: '1', id: '1',
...@@ -229,7 +213,7 @@ export default defineComponent({ ...@@ -229,7 +213,7 @@ export default defineComponent({
]) ])
const curTab = ref('party') const curTab = ref('party')
const setCurTab = (tab: string) => (curTab.value = tab) const setCurTab = (tab: string) => (curTab.value = tab)
const tabList = ref<TabsProp[]>([ const tabList = ref([
{ {
key: 'party', key: 'party',
name: '党建引领', name: '党建引领',
...@@ -269,17 +253,17 @@ export default defineComponent({ ...@@ -269,17 +253,17 @@ export default defineComponent({
{ {
name: '居委会', name: '居委会',
value: com || 0, value: com || 0,
icon: icon3, icon: icon31,
}, },
{ {
name: '业委会', name: '业委会',
value: ywh || 0, value: ywh || 0,
icon: icon4, icon: icon37,
}, },
{ {
name: '物业企业', name: '物业企业',
value: wy || 0, value: wy || 0,
icon: icon5, icon: icon38,
}, },
{ {
name: '交叉任职', name: '交叉任职',
...@@ -300,10 +284,10 @@ export default defineComponent({ ...@@ -300,10 +284,10 @@ export default defineComponent({
] ]
}) })
return { return {
avatar6,
leaders, leaders,
members, members,
dutyTableData, dutyTableData,
btns,
soldierList, soldierList,
curTab, curTab,
setCurTab, setCurTab,
...@@ -327,12 +311,14 @@ export default defineComponent({ ...@@ -327,12 +311,14 @@ export default defineComponent({
display flex display flex
flex-direction column flex-direction column
white-space nowrap white-space nowrap
margin-bottom .1rem
.leader .leader
display flex display flex
flex-wrap wrap flex-wrap wrap
flex 1 flex 1
padding 0.1rem 0 padding 0.05rem 0
border-bottom 1px solid rgba(91, 213, 255, 0.5) border-bottom .01rem solid rgba(105,110,114,.3)
margin-bottom .05rem
>div >div
width 50% width 50%
display flex display flex
...@@ -366,73 +352,38 @@ export default defineComponent({ ...@@ -366,73 +352,38 @@ export default defineComponent({
color #ccc color #ccc
.disposal .disposal
flex 1.3 flex 1.3
.card
$card-bg2()
padding .05rem .1rem
&+.card
margin-top .05rem
.title
display flex
align-items center
font-size .11rem
font-weight bold
span
flex 1
margin 0 .1rem
height 0
border-bottom .01rem dashed $primary-border
i
font-size .09rem
.content
display flex
align-items center
justify-content space-between
.party .party
display flex display flex
height 100%
.content .content
padding-left 0.1rem padding-left 0.1rem
flex 1 flex 1
&.party
display flex display flex
flex-direction column flex-direction column
justify-content space-around justify-content space-around
padding-bottom 0.1rem
&.economic &.economic
display flex flex-direction row
>div >div
flex 1 flex 1
.table
border 0.01rem solid $blue
font-size 0.09rem
>div
display flex
background $table-bg(0.15)
&:first-child
background $table-bg()
&+div
border-top inherit
p
flex 1
line-height 4
text-align center
overflow hidden
text-overflow ellipsis
white-space nowrap
&+p
border-left 0.01rem solid $blue
&:nth-of-type(3)
flex 1.4
&:last-child
flex 0.7
&:first-child
flex 1.2
.thead3
flex 2.5
.doubleRow
flex 2.5
line-height 2
display flex
flex-direction column
flex-wrap wrap
>span
flex 1
padding 0
margin 0
display flex
&:first-child
flex 0.2
border-bottom 0.01rem solid $blue
>span
flex 1
&:first-child
width 30px
flex 0.2
border-right 0.01rem solid $blue
.doubleRow2
display flex
flex-direction column
line-height 2
>span
flex 1
&:first-child
border-bottom 0.01rem solid $blue
</style> </style>
<template> <template>
<m-card title="美丽家园"> <m-card title="美丽家园">
<m-sub>项目实施情况</m-sub> <m-sub2>项目实施情况</m-sub2>
<div class="summary"> <div class="summary">
<div v-for="item in summary" :key="item.name"> <div v-for="item in summary" :key="item.name">
<m-count class="count" :value="item.value" /> <m-count class="count" :value="item.value" />
<p>{{ item.name }}</p> <p>{{ item.name }}</p>
</div> </div>
</div> </div>
<Brief :list="situation" /> <Brief :list="situation" color="#fff" />
<div v-if="curViewType !== 'street'" class="sum-card work-station"> <div v-if="curViewType !== 'street'" class="sum-card work-station">
<div v-for="item in workStationProjects" :key="item.name"> <div v-for="item in workStationProjects" :key="item.name">
<m-count class="count" :value="item.value" /> <m-count class="count" :value="item.value" />
<p>{{ item.name }}</p> <p>{{ item.name }}</p>
</div> </div>
</div> </div>
<m-sub :addition="{ value: 33, unit: '幢' }">电梯加装(排摸)</m-sub> <m-sub2 :addition="{ value: 33, unit: '幢' }">电梯加装(排摸)</m-sub2>
<div v-if="curViewType === 'street'" class="sum-card"> <div v-if="curViewType === 'street'" class="sum-card">
<div v-for="item in elevList" :key="item.name"> <div v-for="item in elevList" :key="item.name">
<m-count class="count" :value="item.value" />
<p>{{ item.name }}</p> <p>{{ item.name }}</p>
<m-count class="count" :value="item.value" />
</div> </div>
</div> </div>
<m-sub>马桶改造</m-sub> <m-sub2>马桶改造</m-sub2>
<Brief :list="toiletSituation" /> <Brief :list="toiletSituation" color="#fff" />
<m-progress :value="80" :msg="{ value: 80, unit: '%', name: ' ' }" /> <m-progress
:value="80"
:color="['rgba(253,211,116,.15)', '#F7933E']"
:msg="{ value: 80, unit: '%', name: '改造进度', color: '#fff' }"
/>
</m-card> </m-card>
</template> </template>
...@@ -31,12 +35,12 @@ ...@@ -31,12 +35,12 @@
import { computed, defineComponent, ref } from 'vue' import { computed, defineComponent, ref } from 'vue'
import Brief, { BriefProp } from '../components/brief.vue' import Brief, { BriefProp } from '../components/brief.vue'
import store from '@/store' import store from '@/store'
import icon9 from '@/assets/images/icon9.png' import icon31 from '@/assets/images/icon31.png'
import icon10 from '@/assets/images/icon10.png' import icon32 from '@/assets/images/icon32.png'
import icon11 from '@/assets/images/icon11.png' import icon33 from '@/assets/images/icon33.png'
import icon12 from '@/assets/images/icon12.png' import icon34 from '@/assets/images/icon34.png'
import icon13 from '@/assets/images/icon13.png' import icon35 from '@/assets/images/icon35.png'
import icon14 from '@/assets/images/icon14.png' import icon36 from '@/assets/images/icon36.png'
export default defineComponent({ export default defineComponent({
name: 'BeautyHome', name: 'BeautyHome',
...@@ -49,10 +53,10 @@ export default defineComponent({ ...@@ -49,10 +53,10 @@ export default defineComponent({
{ name: '2018年', value: 18 }, { name: '2018年', value: 18 },
]) ])
const situation = ref<BriefProp[]>([ const situation = ref<BriefProp[]>([
{ name: '小区微更新', value: 26, icon: icon9 }, { name: '小区微更新', value: 26, icon: icon31 },
{ name: '充电桩', value: 64, icon: icon10 }, { name: '门岗规范化', value: 12, icon: icon32 },
{ name: '雨污混接', value: 18, icon: icon11 }, { name: '充电桩', value: 64, icon: icon33 },
{ name: '门岗规范化', value: 12, icon: icon12 }, { name: '雨污混接', value: 18, icon: icon34 },
]) ])
const elevList = ref([ const elevList = ref([
{ name: '振兴', value: 9 }, { name: '振兴', value: 9 },
...@@ -64,8 +68,8 @@ export default defineComponent({ ...@@ -64,8 +68,8 @@ export default defineComponent({
{ name: '顺天村', value: 1 }, { name: '顺天村', value: 1 },
]) ])
const toiletSituation = ref<BriefProp[]>([ const toiletSituation = ref<BriefProp[]>([
{ name: '已完成改造', value: 26, icon: icon13 }, { name: '已完成改造', value: 26, icon: icon35 },
{ name: '应改造', value: 64, icon: icon14 }, { name: '应改造', value: 64, icon: icon36 },
]) ])
const workStationProjects = ref([ const workStationProjects = ref([
{ name: '架空线梳理', value: 16 }, { name: '架空线梳理', value: 16 },
...@@ -93,37 +97,35 @@ export default defineComponent({ ...@@ -93,37 +97,35 @@ export default defineComponent({
display flex display flex
justify-content space-between justify-content space-between
>div >div
width 30% display flex
background url('@/assets/images/border.png') 100% / 100% 100% no-repeat align-items center
text-align center justify-content space-around
width 24%
padding .05rem padding .05rem
.count .count
font-size .12rem font-size .14rem
color $orange
font-family $font-pang
margin-right .03rem
p p
font-size .09rem font-size .09rem
color $font-color
.sum-card .sum-card
display flex display flex
flex-wrap wrap flex-wrap wrap
justify-content space-between
&.work-station &.work-station
margin .05rem 0 margin .05rem 0
>div >div
width 20% width 20%
>div >div
width 25% display flex
text-align center justify-content space-between
position relative align-items center
width 49%
$card-bg2()
padding 0 .1rem
margin-bottom .05rem
.count .count
font-size .12rem font-size .12rem
font-weight bold font-weight bold
p
color #ccc
font-size .09rem
&:after
content '|'
color $secondary-color
position absolute
top 50%
right 0
transform translateY(-50%)
</style> </style>
<template> <template>
<m-card title="美丽街区" class="beauty-street"> <m-card title="美丽街区" class="beauty-street">
<m-sub>项目实施情况</m-sub> <m-sub2>项目实施情况</m-sub2>
<div class="summary"> <div class="summary">
<div v-for="item in summary" :key="item.name"> <div v-for="item in summary" :key="item.name">
<m-count class="count" :value="item.value" /> <m-count class="count" :value="item.value" />
...@@ -51,7 +51,7 @@ export default defineComponent({ ...@@ -51,7 +51,7 @@ export default defineComponent({
}) })
const fontSize = computed(() => Math.floor((screen.height * 1.6) / 100)) const fontSize = computed(() => Math.floor((screen.height * 1.6) / 100))
const barOption = ref({ const barOption = ref({
color: [['#2DFDC7', 'rgba(42,253,195,.1)']], color: [['#F7973D', 'rgba(234,173,0,.1)']],
legend: { show: false }, legend: { show: false },
yAxis: { show: false }, yAxis: { show: false },
grid: { grid: {
...@@ -74,8 +74,8 @@ export default defineComponent({ ...@@ -74,8 +74,8 @@ export default defineComponent({
], ],
series: [ series: [
{ {
type: 'bar', type: 'pictorialBar',
barWidth: '30%', symbol: 'path://M0,10 L10,10 C5.5,10 5.5,5 5,0 C4.5,5 4.5,10 0,10 z',
label: { label: {
show: true, //开启显示 show: true, //开启显示
position: 'top', //在上方显示 position: 'top', //在上方显示
...@@ -103,15 +103,18 @@ export default defineComponent({ ...@@ -103,15 +103,18 @@ export default defineComponent({
display flex display flex
justify-content space-between justify-content space-between
>div >div
width 30% display flex
background url('@/assets/images/border.png') 100% / 100% 100% no-repeat align-items center
text-align center justify-content space-around
width 24%
padding .05rem padding .05rem
.count .count
font-size .12rem font-size .14rem
color $orange
font-family $font-pang
margin-right .03rem
p p
font-size .09rem font-size .09rem
color $font-color
.chart .chart
width 100% width 100%
height 1rem height 1rem
......
...@@ -21,7 +21,7 @@ export default defineComponent({ ...@@ -21,7 +21,7 @@ export default defineComponent({
props: { props: {
mode: { mode: {
type: String as PropType<string>, type: String as PropType<string>,
default: 'mode2', default: '4',
}, },
}, },
setup() { setup() {
......
<template> <template>
<m-card title="案件分析" class="box"> <m-card title="案件分析" class="box">
<div class="rank">
<m-sub2>分类排行</m-sub2>
<div class="nav"> <div class="nav">
<div>
<Tabs :list="tabs" horizontal @select="curTab = $event" />
</div>
<div> <div>
<span <span
v-for="option in options" v-for="option in options"
...@@ -15,8 +14,6 @@ ...@@ -15,8 +14,6 @@
</span> </span>
</div> </div>
</div> </div>
<div class="rank">
<SubTitle>分类排行</SubTitle>
<div v-if="rankList.length > 0" class="content"> <div v-if="rankList.length > 0" class="content">
<m-scroll :length="rankList.length" :limit="4"> <m-scroll :length="rankList.length" :limit="4">
<m-progress <m-progress
...@@ -24,16 +21,21 @@ ...@@ -24,16 +21,21 @@
:key="rank.name" :key="rank.name"
:value="rank.rate" :value="rank.rate"
:msg="rank" :msg="rank"
:color="['#FF692D', '#F7973D']"
/> />
</m-scroll> </m-scroll>
</div> </div>
<m-empty v-else /> <m-empty v-else />
</div> </div>
<div class="place"> <div class="place">
<SubTitle>多发地点</SubTitle> <m-sub2>多发地点</m-sub2>
<div class="content"> <div v-if="placeList.length > 0" class="content">
<div v-for="item in placeList" :key="item.name"> <div v-for="item in placeList" :key="item.name">
<Place :data="item" /> <p>{{ item.name }}</p>
<div>
<span>{{ item.type }}</span>
<m-count class="count" :value="item.value" />
</div>
</div> </div>
</div> </div>
</div> </div>
...@@ -42,20 +44,13 @@ ...@@ -42,20 +44,13 @@
<script lang="ts"> <script lang="ts">
import { defineComponent, ref, computed, watch } from 'vue' import { defineComponent, ref, computed, watch } from 'vue'
import Tabs, { TabsProp } from '../components/tabs.vue'
import SubTitle from '../components/sub-title.vue' import SubTitle from '../components/sub-title.vue'
import Place, { PlaceProp } from '../components/place.vue' import Place from '../components/place.vue'
import store from '@/store' import store from '@/store'
export default defineComponent({ export default defineComponent({
name: 'CaseAnalysis', name: 'CaseAnalysis',
components: { Tabs, SubTitle, Place }, components: { SubTitle, Place },
setup() { setup() {
const curTab = ref('综合')
const tabs = ref<TabsProp[]>([
{ name: '综合管理', key: '综合' },
{ name: '街面管理', key: '街面' },
{ name: '小区管理', key: '小区' },
])
const options = ref([ const options = ref([
{ name: '日', key: 'day' }, { name: '日', key: 'day' },
{ name: '周', key: 'week' }, { name: '周', key: 'week' },
...@@ -64,14 +59,14 @@ export default defineComponent({ ...@@ -64,14 +59,14 @@ export default defineComponent({
const curOption = ref('month') const curOption = ref('month')
watch( watch(
[() => curTab.value, () => curOption.value], () => curOption.value,
([type, time]) => { (time) => {
if (!time || !type) return if (!time) return
store.dispatch('GET_CASE_CLASSIFICATION_RANK', { store.dispatch('GET_CASE_CLASSIFICATION_RANK', {
managementType: type, managementType: '综合',
}) })
store.dispatch('GET_MOREHAPPEN_ADDR', { store.dispatch('GET_MOREHAPPEN_ADDR', {
managementType: type, managementType: '综合',
}) })
}, },
{ immediate: true } { immediate: true }
...@@ -98,9 +93,7 @@ export default defineComponent({ ...@@ -98,9 +93,7 @@ export default defineComponent({
}) })
return { return {
tabs,
options, options,
curTab,
curOption, curOption,
rankList, rankList,
placeList, placeList,
...@@ -115,11 +108,9 @@ export default defineComponent({ ...@@ -115,11 +108,9 @@ export default defineComponent({
overflow hidden overflow hidden
.nav .nav
width 100% width 100%
overflow hidden
display flex display flex
align-items center align-items center
justify-content space-between justify-content flex-end
margin-top 0.05rem
>div >div
width 75% width 75%
&:last-child &:last-child
...@@ -127,15 +118,17 @@ export default defineComponent({ ...@@ -127,15 +118,17 @@ export default defineComponent({
display flex display flex
>span >span
$center() $center()
width 0.22rem width .4rem
height @width height .12rem
margin-left .04rem
color $primary-border color $primary-border
border 0.01rem solid @color
cursor pointer cursor pointer
&:hover, &.on font-size .08rem
color $secondary-color background rgba(50,197,255,.2)
border-color @color &:hover
background rgba(50, 197, 255, 0.2) &.on
color #fff
background $secondary-color
.rank .rank
overflow hidden overflow hidden
// height 1rem // height 1rem
...@@ -143,10 +136,25 @@ export default defineComponent({ ...@@ -143,10 +136,25 @@ export default defineComponent({
height 1.2rem height 1.2rem
overflow hidden overflow hidden
.place .place
overflow hidden
.content .content
display flex display flex
justify-content space-between justify-content space-between
>div >div
width 32% width 32%
height .6rem
background url('@/assets/images/place-bg.png') center / cover no-repeat
padding .05rem
>div
display flex
justify-content space-between
align-items center
margin-top .05rem
span
color #77bff9
border .01rem solid @color
background rgba(119, 191, 249, 0.2)
font-size .08rem
padding 0 .05rem
.count
font-size .14rem
</style> </style>
<template> <template>
<m-card <m-card title="实有单位">
title="实有单位" <m-sub2 :addition="{ value: trueCompany.companyNum, unit: '家' }">
:addition="{ value: trueCompany.companyNum, unit: '家' }" 单位数量
> </m-sub2>
<div class="sum"> <div class="sum">
<div v-for="item in sum" :key="item.name"> <div v-for="item in sum" :key="item.name">
<m-count class="count" :value="item.value" /> <m-count class="count" :value="item.value" />
...@@ -13,24 +13,12 @@ ...@@ -13,24 +13,12 @@
</div> </div>
</div> </div>
<div class="content"> <div class="content">
<div v-if="showChart" class="chart"> <div v-for="item in pieData" :key="item.name">
<m-pie <span>{{ item.name }}</span>
v-if="showChart && pieData.source[0].value > 0" <div v-if="showChart" class="progress">
:dataset="pieData" <m-progress color="#EDB872" :value="item.rate" />
:option="pieOption"
/>
</div> </div>
<div class="legend">
<div v-for="(item, i) in pieData.source" :key="item.name">
<p>
<span :style="{ background: pieOption.color[i][0] }" />
{{ item.name }}
</p>
<p>
<m-count class="count" :value="item.value" /> <m-count class="count" :value="item.value" />
<span class="unit"></span>
</p>
</div>
</div> </div>
</div> </div>
</m-card> </m-card>
...@@ -56,43 +44,36 @@ export default defineComponent({ ...@@ -56,43 +44,36 @@ export default defineComponent({
] ]
}) })
const pieData = computed(() => { const pieData = computed(() => {
return { const {
dimensions: [ institution = 0,
{ name: 'name', displayName: '类型' }, enterprise = 0,
{ name: 'value', displayName: '数量' }, organization = 0,
], other = 0,
source: [ } = trueCompany.value
{ name: '事业单位', value: trueCompany.value.institution }, const total = institution + enterprise + organization + other
{ name: '企业单位', value: trueCompany.value.enterprise }, return [
{ name: '机关团体', value: trueCompany.value.organization },
{ name: '其他', value: trueCompany.value.other },
],
}
})
const pieOption = ref({
color: [
['#F76B1C', '#FAD961'],
['#429321', '#B4EC51'],
['#3023AE', '#C86DD7'],
['#51B7EC', '#212F93'],
],
legend: { show: false },
series: [
{ {
type: 'pie', name: '事业单位',
radius: [0, '90%'], value: institution,
center: ['50%', '50%'], rate: (institution / total) * 100,
label: {
show: false,
}, },
{
name: '企业单位',
value: enterprise,
rate: (enterprise / total) * 100,
},
{
name: '机关团体',
value: organization,
rate: (organization / total) * 100,
}, },
], { name: '其他', value: other, rate: (other / total) * 100 },
]
}) })
return { return {
showChart, showChart,
sum, sum,
pieData, pieData,
pieOption,
trueCompany, trueCompany,
} }
}, },
...@@ -104,59 +85,32 @@ export default defineComponent({ ...@@ -104,59 +85,32 @@ export default defineComponent({
.sum .sum
display flex display flex
align-items center align-items center
justify-content space-around
margin 0.05rem 0 margin 0.05rem 0
>div >div
flex 1 display flex
text-align center align-items center
position relative
&+div
&:before
content '|'
position absolute
left 0
top 50%
color $blue
transform translateY(-50%)
.count .count
font-size 0.12rem font-size 0.14rem
font-family $fong-pang
color $orange
margin-right .05rem
p p
color #ccc color #ccc
font-size 0.09rem
text-indent 0.1rem
img img
width 0.1rem width 0.1rem
height @width height @width
margin-left 0.02rem margin-left 0.02rem
.content .content
flex 1 flex 1
display flex
>div >div
height 100%
.chart
width 40%
.legend
width 60%
display flex display flex
flex-direction column
justify-content space-around
padding 0 0.1rem
>div
display flex
justify-content space-between
align-items center align-items center
>p justify-content space-between
&:first-child .progress
span flex 1
width 0.06rem margin 0 .05rem
height @width span,
display inline-block
margin-right @width
border-radius 50%
&:last-child
.count .count
font-size 0.12rem min-width .5rem
.unit
font-size 0.08rem
color #aaa
margin-left 0.03rem
</style> </style>
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
<div class="box"> <div class="box">
<div v-if="Object.keys(rank).length > 0" class="summary"> <div v-if="Object.keys(rank).length > 0" class="summary">
<div v-for="item in summary" :key="item.name"> <div v-for="item in summary" :key="item.name">
<m-wave :value="item.percent" size=".34rem" /> <m-wave :value="item.percent" size=".34rem" color="#DB8000" />
<div> <div>
<m-count class="count" :value="item.value" /> <m-count class="count" :value="item.value" />
<p>{{ item.name }}</p> <p>{{ item.name }}</p>
...@@ -11,13 +11,12 @@ ...@@ -11,13 +11,12 @@
</div> </div>
</div> </div>
<div class="manage"> <div class="manage">
<Tabs :list="tabList" @select="getCurTabKey" />
<div class="content"> <div class="content">
<SubTitle>响应度</SubTitle> <m-sub2>响应度</m-sub2>
<div v-if="showChart" class="chart"> <div v-if="showChart" class="chart">
<m-line :dataset="responseChartData" :option="chartOption" /> <m-line :dataset="responseChartData" :option="chartOption" />
</div> </div>
<SubTitle>分类排行</SubTitle> <m-sub2>分类排行</m-sub2>
<div class="chart wrapper"> <div class="chart wrapper">
<div v-if="showChart"> <div v-if="showChart">
<m-radar :dataset="classChartData" :option="chartOption2" /> <m-radar :dataset="classChartData" :option="chartOption2" />
...@@ -35,8 +34,18 @@ ...@@ -35,8 +34,18 @@
</div> </div>
</div> </div>
<div class="emergency"> <div class="emergency">
<m-sub>紧急案件</m-sub> <m-sub2 :addition="{ value: urgentCase.length }">紧急案件</m-sub2>
<m-scroll :limit="1" :length="urgentCase.length" :step="1" mode="2"> <m-empty
v-if="!urgentCase || urgentCase.length === 0"
style="height: 1.22rem"
/>
<m-scroll
v-else
:limit="1"
:length="urgentCase.length"
:step="1"
mode="2"
>
<div v-for="item in urgentCase" :key="item" class="detail"> <div v-for="item in urgentCase" :key="item" class="detail">
<div class="title"> <div class="title">
<p> <p>
...@@ -57,16 +66,12 @@ ...@@ -57,16 +66,12 @@
<script lang="ts"> <script lang="ts">
import { defineComponent, ref, computed, watch } from 'vue' import { defineComponent, ref, computed, watch } from 'vue'
import Tabs, { TabsProp } from '../components/tabs.vue'
import SubTitle from '../components/sub-title.vue'
import { ECOption } from '@/components/MyComponent/MyChart/my-line.vue'
import moment from 'moment' import moment from 'moment'
import { ChartTypes } from '@/components/MyComponent' import { ChartTypes } from '@/components/MyComponent'
import store from '@/store' import store from '@/store'
export default defineComponent({ export default defineComponent({
name: 'Complain', name: 'Complain',
components: { Tabs, SubTitle },
setup() { setup() {
store.dispatch('GET_YOUSUBIDA_RANK') store.dispatch('GET_YOUSUBIDA_RANK')
store.dispatch('GET_YOUSUBIDA_CLASSIFICATION_RANK', '综合') store.dispatch('GET_YOUSUBIDA_CLASSIFICATION_RANK', '综合')
...@@ -116,7 +121,7 @@ export default defineComponent({ ...@@ -116,7 +121,7 @@ export default defineComponent({
] ]
}) })
const tabList = ref<TabsProp[]>([ const tabList = ref([
{ {
key: '综合', key: '综合',
name: '综合管理', name: '综合管理',
...@@ -218,7 +223,7 @@ export default defineComponent({ ...@@ -218,7 +223,7 @@ export default defineComponent({
], ],
}) })
const chartOption = ref<ChartTypes.ECOption>({ const chartOption = ref<ChartTypes.ECOption>({
color: ['#9B88F9', 'gold'], color: ['#6BE1B2', '#FFCE34'],
legend: { legend: {
right: '1%', right: '1%',
itemWidth: fontSize.value, itemWidth: fontSize.value,
...@@ -254,10 +259,11 @@ export default defineComponent({ ...@@ -254,10 +259,11 @@ export default defineComponent({
.box .box
flex-direction column flex-direction column
display flex display flex
height 95% height 100%
overflow hidden overflow hidden
justify-content space-around
.summary .summary
height 5% height 8%
display flex display flex
justify-content space-between justify-content space-between
align-items center align-items center
...@@ -275,8 +281,7 @@ export default defineComponent({ ...@@ -275,8 +281,7 @@ export default defineComponent({
color #ccc color #ccc
.manage .manage
display flex display flex
height 70% height 60%
// margin-bottom .05rem
.content .content
flex 1 flex 1
padding-left 0.1rem padding-left 0.1rem
...@@ -315,21 +320,22 @@ export default defineComponent({ ...@@ -315,21 +320,22 @@ export default defineComponent({
&:last-child &:last-child
flex 1 flex 1
.emergency .emergency
height 1.2rem height 1.22rem
overflow hidden overflow hidden
// overflow hidden
.detail .detail
display flex display flex
flex-direction column flex-direction column
padding 0.1rem padding 0.1rem
background url('@/assets/images/border2.png') 100% / 100% 100% no-repeat margin-top .05rem
margin-bottom 0.05rem
height 0.95rem height 0.95rem
box-sizing border-box box-sizing border-box
$card-bg2()
.title
color $orange
>div >div
flex 1 flex 1
&:first-child &:first-child
border-bottom 0.01rem solid $primary-border border-bottom 0.01rem solid rgba(105,110,114,.5)
padding-bottom 0.05rem padding-bottom 0.05rem
margin-bottom @padding-bottom margin-bottom @padding-bottom
span span
......
<template> <template>
<m-card title="有求必应"> <m-card title="有求必应">
<div class="today-case"> <div class="today-case">
<m-sub :addition="{ value: todayCase.totalNum, unit: '件' }"> <m-sub2 :addition="{ value: todayCase.totalNum, unit: '件' }">
今日案件数 今日案件数
</m-sub> </m-sub2>
<Brief :list="summary" /> <Brief :list="summary" color="#F7933E" />
<div class="process"> <div class="process">
<img src="@/assets/images/arrow.png" /> <div v-for="(item, i) in process" :key="item.name">
<div> <template v-if="(i + 1) % 2 === 0">
<div v-for="item in process.slice(0, 3)" :key="item.name">
<m-count class="count" :value="item.value" /> <m-count class="count" :value="item.value" />
<p>{{ item.name }}</p> <p>{{ item.name }}</p>
</div> </template>
</div> <template v-else>
<div>
<div v-for="item in process.slice(3)" :key="item.name">
<m-count class="count" :value="item.value" />
<p>{{ item.name }}</p> <p>{{ item.name }}</p>
</div> <m-count class="count" :value="item.value" />
</template>
</div> </div>
</div> </div>
<div v-if="showChart" class="chart"> <div v-if="showChart" class="chart">
<m-bar :dataset="barData" :option="barOption" /> <m-bar :dataset="barData" :option="barOption" />
</div> </div>
<div class="chart wrapper"> <div class="chart wrapper">
<div v-if="showChart"> <img src="@/assets/images/pyramid.png" />
<!-- <div v-if="showChart">
<m-pie :option="pieOption" :dataset="pieData" /> <m-pie :option="pieOption" :dataset="pieData" />
</div> </div> -->
<div> <div>
<p v-for="item in pieData" :key="item.name"> <p v-for="item in pieData" :key="item.name">
<span :style="{ background: item.color }" /> <span :style="{ background: item.color }" />
...@@ -38,8 +36,18 @@ ...@@ -38,8 +36,18 @@
</div> </div>
</div> </div>
<div class="case-follow"> <div class="case-follow">
<m-sub search-able @search="searchCase">事件跟踪</m-sub> <m-sub2>事件跟踪</m-sub2>
<m-scroll :limit="1" :length="trackEvent.length" :step="1.1" mode="2"> <m-empty
v-if="!trackEvent || trackEvent.length === 0"
style="height: 1.8rem"
/>
<m-scroll
v-else
:limit="2"
:length="trackEvent.length"
:step="1"
mode="2"
>
<div v-for="(item, i) in trackEvent" :key="i" class="detail"> <div v-for="(item, i) in trackEvent" :key="i" class="detail">
<div class="title"> <div class="title">
<p>{{ item.communityName || '暂无' }}</p> <p>{{ item.communityName || '暂无' }}</p>
...@@ -58,19 +66,15 @@ ...@@ -58,19 +66,15 @@
</template> </template>
<script lang="ts"> <script lang="ts">
import { computed, defineComponent, watch, ref } from 'vue' import { computed, defineComponent, ref } from 'vue'
import Brief, { BriefProp } from '../components/brief.vue' import Brief from '../components/brief.vue'
import store from '@/store' import store from '@/store'
import icon6 from '@/assets/images/icon6.png'
import icon7 from '@/assets/images/icon7.png'
import icon8 from '@/assets/images/icon8.png'
import moment from 'moment' import moment from 'moment'
export default defineComponent({ export default defineComponent({
name: 'Demand', name: 'Demand',
components: { Brief }, components: { Brief },
setup() { setup() {
// dispatch('GET_TODAYCASE')
store.dispatch('GET_TODAYCASE') store.dispatch('GET_TODAYCASE')
store.dispatch('GET_STAGECASE') store.dispatch('GET_STAGECASE')
store.dispatch('GET_WORKSTATION') store.dispatch('GET_WORKSTATION')
...@@ -85,6 +89,7 @@ export default defineComponent({ ...@@ -85,6 +89,7 @@ export default defineComponent({
const workstationKind = computed(() => store.state.workstationKind) const workstationKind = computed(() => store.state.workstationKind)
const pieDatamodel = computed(() => store.state.workstationKindPiEData) const pieDatamodel = computed(() => store.state.workstationKindPiEData)
const trackEvent = computed(() => store.state.trackEvent) const trackEvent = computed(() => store.state.trackEvent)
const fontSize = computed(() => Math.floor((screen.height * 1.6) / 100)) const fontSize = computed(() => Math.floor((screen.height * 1.6) / 100))
const showChart = computed(() => store.state.curTheme === 'manage') const showChart = computed(() => store.state.curTheme === 'manage')
const summary = computed(() => { const summary = computed(() => {
...@@ -95,7 +100,6 @@ export default defineComponent({ ...@@ -95,7 +100,6 @@ export default defineComponent({
todayCase.value.comprehensiveDisposalNum || 0, todayCase.value.comprehensiveDisposalNum || 0,
todayCase.value.comprehensiveNum || 0, todayCase.value.comprehensiveNum || 0,
], ],
icon: icon6,
}, },
{ {
name: '街面管理', name: '街面管理',
...@@ -103,7 +107,6 @@ export default defineComponent({ ...@@ -103,7 +107,6 @@ export default defineComponent({
todayCase.value.streetDisposalNum || 0, todayCase.value.streetDisposalNum || 0,
todayCase.value.streetNum || 0, todayCase.value.streetNum || 0,
], ],
icon: icon7,
}, },
{ {
name: '小区管理', name: '小区管理',
...@@ -111,7 +114,6 @@ export default defineComponent({ ...@@ -111,7 +114,6 @@ export default defineComponent({
todayCase.value.communityDisposalNum || 0, todayCase.value.communityDisposalNum || 0,
todayCase.value.communityNum || 0, todayCase.value.communityNum || 0,
], ],
icon: icon8,
}, },
] ]
}) })
...@@ -186,7 +188,7 @@ export default defineComponent({ ...@@ -186,7 +188,7 @@ export default defineComponent({
} }
}) })
const barOption = ref({ const barOption = ref({
color: ['#5BD5FF', '#FFCE34', '#826AFA'], color: ['#77BFF9', '#EDB872', '#64C29D'],
legend: { legend: {
right: '2%', right: '2%',
itemWidth: fontSize.value * 0.6, itemWidth: fontSize.value * 0.6,
...@@ -212,7 +214,7 @@ export default defineComponent({ ...@@ -212,7 +214,7 @@ export default defineComponent({
100 100
) || 0, ) || 0,
num: pieDatamodel.value.oneNum, num: pieDatamodel.value.oneNum,
color: '#47B3FF', color: '#FE9B5F',
}, },
{ {
name: '第二工作站', name: '第二工作站',
...@@ -222,7 +224,7 @@ export default defineComponent({ ...@@ -222,7 +224,7 @@ export default defineComponent({
100 100
) || 0, ) || 0,
num: pieDatamodel.value.twoNum, num: pieDatamodel.value.twoNum,
color: '#FF9D27', color: '#36CFE1',
}, },
{ {
name: '第三工作站', name: '第三工作站',
...@@ -233,7 +235,7 @@ export default defineComponent({ ...@@ -233,7 +235,7 @@ export default defineComponent({
100 100
) || 0, ) || 0,
num: pieDatamodel.value.threeNum, num: pieDatamodel.value.threeNum,
color: '#6EB629', color: '#429BDF',
}, },
] ]
}) })
...@@ -320,52 +322,47 @@ $arrow-style() ...@@ -320,52 +322,47 @@ $arrow-style()
transform translate(-90%, 0) transform translate(-90%, 0)
.today-case .today-case
.process .process
margin-top 0.1rem width 100%
background-image url('@/assets/images/line.png')
background-repeat no-repeat
background-size 90%
background-position 50% 50%
margin .05rem auto .1rem
position relative position relative
>img
position absolute
width 0.2rem
height @width
right 13.3%
top 0
bottom 0
margin auto
transform rotate(90deg)
>div
display flex display flex
align-items center align-items center
justify-content space-around // justify-content space-between
margin-bottom 0.15rem
&:nth-of-type(1)
div+div
&::before
$arrow-style()
&:nth-of-type(2)
div+div
&::before
$arrow-style()
transform translate(-90%, 0) rotate(180deg)
>div >div
background url('@/assets/images/num-card.png') 100% / 100% 100% no-repeat flex 1
width 28%
padding 0.05rem 0
text-align center text-align center
font-weight bold height .6rem
position relative display flex
.count flex-direction column
font-size 0.12rem justify-content space-between
p p
color #ccc border .01rem solid #466275
font-size .08rem
background rgba(71,179,255,.15)
width .3rem
margin 0 auto
border-radius .02rem
.count
font-size .12rem
font-weight bold
.chart .chart
width 100% width 100%
height 1.1rem height 1.1rem
&.wrapper &.wrapper
display flex display flex
margin .05rem 0
padding-left .2rem
>img
width 36%
margin-right .28rem
>div >div
width 50% width 50%
height 100% height 100%
font-weight bold font-weight bold
// border 1px solid red
&:last-child &:last-child
$center() $center()
flex-direction column flex-direction column
...@@ -373,25 +370,36 @@ $arrow-style() ...@@ -373,25 +370,36 @@ $arrow-style()
display flex display flex
width 100% width 100%
align-items center align-items center
// border 1px solid red
margin-bottom 0.05rem margin-bottom 0.05rem
position relative
span span
display inline-block display inline-block
width 0.06rem width 0.06rem
height @width height @width
border-radius 50% border-radius 50%
margin-right 0.1rem margin-right 0.1rem
&:before
content ''
width .6rem
height .01rem
display block
position absolute
top 0
bottom 0
margin auto 0
background inherit
transform translateX(-120%)
.case-follow .case-follow
height 1.2rem height 1.8rem
overflow hidden overflow hidden
.detail .detail
display flex display flex
flex-direction column flex-direction column
justify-content space-between justify-content space-between
padding 0.1rem padding 0.1rem
background url('@/assets/images/border2.png') 100% / 100% 100% no-repeat $card-bg2()
height 1rem height .95rem
margin-bottom 0.1rem margin-top .05rem
box-sizing border-box box-sizing border-box
.title .title
display flex display flex
...@@ -399,17 +407,15 @@ $arrow-style() ...@@ -399,17 +407,15 @@ $arrow-style()
p p
font-size 0.12rem font-size 0.12rem
&:last-child &:last-child
color $edge
font-size 0.1rem font-size 0.1rem
span span
display block display block
height 0.01rem height 0
background $blue border-bottom .01rem dashed $primary-border
flex 1 flex 1
margin 0 0.1rem margin 0 0.1rem
.msg .msg
$center() $center()
justify-content space-between justify-content space-between
color $blue
font-size 0.08rem font-size 0.08rem
</style> </style>
<template> <template>
<m-card title="生态"> <m-card title="生态">
<div class="detail"> <div class="detail">
<img src="@/assets/images/ecology.png" />
<div v-for="item in ecologyList" :key="item.name"> <div v-for="item in ecologyList" :key="item.name">
<m-count class="count" :value="item.value" /> <m-count class="count" :value="item.value" />
<p>{{ item.name }}</p> <p>{{ item.name }}</p>
</div> </div>
</div> </div>
<m-sub2>便民设施</m-sub2>
<div class="sum"> <div class="sum">
<div v-for="item in sumList" :key="item.name"> <div v-for="item in sumList" :key="item.name">
<img :src="item.icon" /> <img :src="item.icon" />
...@@ -17,13 +17,19 @@ ...@@ -17,13 +17,19 @@
</div> </div>
</div> </div>
<div> <div>
<m-sub>商业综合体</m-sub> <m-sub2>商业综合体</m-sub2>
<div class="business photos"> <div class="business photos">
<img v-for="photo in businessPhotos" :key="photo" :src="photo" /> <img v-for="photo in businessPhotos" :key="photo" :src="photo" />
</div> </div>
</div> </div>
<div> <div>
<m-sub>历史文化场馆</m-sub> <m-sub2>历保</m-sub2>
<div class="history photos">
<img v-for="photo in historyPhotos" :key="photo" :src="photo" />
</div>
</div>
<div>
<m-sub2>文保</m-sub2>
<div class="history photos"> <div class="history photos">
<img v-for="photo in historyPhotos" :key="photo" :src="photo" /> <img v-for="photo in historyPhotos" :key="photo" :src="photo" />
</div> </div>
...@@ -81,41 +87,18 @@ export default defineComponent({ ...@@ -81,41 +87,18 @@ export default defineComponent({
<style lang="stylus" scoped> <style lang="stylus" scoped>
@import '../../components/MyComponent/main.styl' @import '../../components/MyComponent/main.styl'
.detail .detail
display flex
width 100% width 100%
height 1.2rem justify-content space-around
position relative
>img
width 36%
position absolute
top 0
right 0
bottom 0
left 0
margin auto
>div >div
$center() display flex
position absolute justify-content space-around
width 32% align-items center
height 45%
background rgba(49,94,139, .4)
border .04rem solid rgba(0,0,0,.25)
text-align center
flex-direction column
&:nth-of-type(1)
top 0
left 0
&:nth-of-type(2)
top 0
right 0
&:nth-of-type(3)
bottom .05rem
left 0
&:nth-of-type(4)
bottom .05rem
right 0
.count .count
font-size .12rem font-size .14rem
color $yellow font-family $font-pang
color $orange
margin-right .08rem
.sum .sum
display flex display flex
flex-wrap wrap flex-wrap wrap
......
This diff is collapsed.
<template> <template>
<m-card <m-card title="实有房屋">
title="实有房屋"
:addition="{
value: allTrueHouse,
unit: '幢',
}"
>
<div> <div>
<m-sub :addition="{ value: pubulicSafeHouse.house, unit: '幢' }"> <m-sub2 :addition="{ value: pubulicSafeHouse.house, unit: '幢' }">
居住房屋 居住房屋
</m-sub> </m-sub2>
<Brief :list="summary" color="#fff" /> <Brief :list="summary" color="#fff" />
<div class="bar-txt"> <div class="bar-txt">
<p> <p>
<span>2000年前房屋</span> <span>2000年前房屋</span>
</p>
<p>
<m-count class="count" :value="pubulicSafeHouse.befor" /> <m-count class="count" :value="pubulicSafeHouse.befor" />
<span class="unit"></span> <span class="unit"></span>
</p> </p>
<!-- <img src="@/assets/images/location.png" /> -->
</div> </div>
<m-progress <m-progress
v-if="allTrueHouse" v-if="allTrueHouse"
:value="(pubulicSafeHouse.befor / allTrueHouse) * 100" :value="(pubulicSafeHouse.befor / allTrueHouse) * 100"
:height="0.1" :height="0.1"
:color="['rgba(253,211,116,.15)', '#F7933E']"
/> />
<div class="house-types"> <div class="house-types">
<div v-for="item in houseTypes" :key="item.name"> <div v-for="item in houseTypes" :key="item.name">
<m-wave v-if="item.percent" :value="item.percent" size=".34rem" /> <m-wave
v-if="item.percent"
:value="item.percent"
size=".34rem"
color="#DB8000"
/>
<div> <div>
<m-count class="count" :value="item.value" /> <m-count class="count" :value="item.value" />
<p>{{ item.name }}</p> <p>{{ item.name }}</p>
...@@ -35,25 +36,25 @@ ...@@ -35,25 +36,25 @@
</div> </div>
</div> </div>
<div> <div>
<m-sub <m-sub2
:addition="{ value: pubulicSafeNonResident.nonResidentNum, unit: '幢' }" :addition="{ value: pubulicSafeNonResident.nonResidentNum, unit: '幢' }"
> >
非居房屋 非居房屋
</m-sub> </m-sub2>
<Brief :list="houseSum" color="#fff" /> <Brief :list="houseSum" color="#fff" />
</div> </div>
</m-card> </m-card>
</template> </template>
<script lang="ts"> <script lang="ts">
import { computed, defineComponent, ref } from 'vue' import { computed, defineComponent } from 'vue'
import Brief, { BriefProp } from '../components/brief.vue' import Brief from '../components/brief.vue'
import icon18 from '@/assets/images/icon18.png' import icon31 from '@/assets/images/icon31.png'
import icon19 from '@/assets/images/icon19.png' import icon38 from '@/assets/images/icon38.png'
import icon20 from '@/assets/images/icon20.png' import icon37 from '@/assets/images/icon37.png'
import icon7 from '@/assets/images/icon7.png' import img3 from '@/assets/images/img3.png'
import icon21 from '@/assets/images/icon21.png' import img9 from '@/assets/images/img9.png'
import icon22 from '@/assets/images/icon22.png' import img10 from '@/assets/images/img10.png'
import store from '@/store' import store from '@/store'
export default defineComponent({ export default defineComponent({
name: 'House', name: 'House',
...@@ -86,14 +87,14 @@ export default defineComponent({ ...@@ -86,14 +87,14 @@ export default defineComponent({
{ {
name: '小区数', name: '小区数',
value: pubulicSafeHouse.value.community, value: pubulicSafeHouse.value.community,
icon: icon18, icon: icon31,
}, },
{ {
name: '物业公司', name: '物业公司',
value: pubulicSafeHouse.value.company, value: pubulicSafeHouse.value.company,
icon: icon19, icon: icon38,
}, },
{ name: '业委会', value: pubulicSafeHouse.value.ic, icon: icon20 }, { name: '业委会', value: pubulicSafeHouse.value.ic, icon: icon37 },
] ]
}) })
const houseTypes = computed(() => { const houseTypes = computed(() => {
...@@ -129,17 +130,17 @@ export default defineComponent({ ...@@ -129,17 +130,17 @@ export default defineComponent({
{ {
name: '门面房', name: '门面房',
value: pubulicSafeNonResident.value.others, value: pubulicSafeNonResident.value.others,
icon: icon7, icon: img3,
}, },
{ {
name: '商办', name: '商办',
value: pubulicSafeNonResident.value.commercial, value: pubulicSafeNonResident.value.commercial,
icon: icon21, icon: img9,
}, },
{ {
name: '商业综合体', name: '商业综合体',
value: pubulicSafeNonResident.value.comprehensive, value: pubulicSafeNonResident.value.comprehensive,
icon: icon22, icon: img10,
}, },
] ]
}) })
...@@ -165,9 +166,8 @@ export default defineComponent({ ...@@ -165,9 +166,8 @@ export default defineComponent({
margin 0.05rem 0 0.02rem margin 0.05rem 0 0.02rem
color #eee color #eee
.count .count
color $secondary-color
font-size 0.14rem font-size 0.14rem
margin-left 0.15rem font-family $font-pang
.unit .unit
color #aaa color #aaa
font-size 0.08rem font-size 0.08rem
...@@ -179,7 +179,7 @@ export default defineComponent({ ...@@ -179,7 +179,7 @@ export default defineComponent({
display flex display flex
justify-content space-between justify-content space-between
align-items center align-items center
margin-top 0.1rem margin 0.1rem 0
>div >div
display flex display flex
align-items center align-items center
......
...@@ -93,9 +93,9 @@ export default defineComponent({ ...@@ -93,9 +93,9 @@ export default defineComponent({
series: [ series: [
{ {
type: 'wordCloud', type: 'wordCloud',
sizeRange: [sizeRate.value, sizeRate.value * 2], sizeRange: [sizeRate.value, sizeRate.value * 2.2],
rotationRange: [0, 0], rotationRange: [0, 0],
rotationStep: 45, rotationStep: 90,
gridSize: sizeRate.value, gridSize: sizeRate.value,
shape: 'pentagon', shape: 'pentagon',
width: '100%', width: '100%',
......
<template> <template>
<m-card title="智慧养老"> <m-card title="智慧养老">
<div> <div>
<m-sub :addition="{ value: 14696 }">老人数量</m-sub> <m-sub2 :addition="{ value: 14696 }">老人数量</m-sub2>
<div class="sum"> <div class="sum">
<div v-for="item in oldSum" :key="item.name"> <div v-for="item in oldSum" :key="item.name">
<m-count class="count" :value="item.value" /><span>%</span> <p class="count"><m-count :value="item.value" />%</p>
<p>{{ item.name }}</p> <span>{{ item.name }}</span>
</div> </div>
</div> </div>
</div> </div>
<div> <div>
<m-sub>年龄分布</m-sub> <m-sub2>年龄分布</m-sub2>
<div class="distribute"> <div class="distribute">
<div v-if="showChart" class="chart"> <div v-if="showChart" class="chart">
<m-pie :dataset="pieData" :option="pieOption" /> <m-pie :dataset="pieData" :option="pieOption" />
...@@ -30,17 +30,31 @@ ...@@ -30,17 +30,31 @@
</div> </div>
</div> </div>
<div> <div>
<m-sub>老人分类</m-sub> <m-sub2>老人分类</m-sub2>
<div class="table"> <div v-if="showChart" class="old-type">
<div v-for="item in oldType" :key="item.name">
<div class="circle">
<Circle
class="circle-item"
:value="item.percent"
:stroke-width="8"
:color="['#F7933E', 'rgba(253,211,116,.9)']"
:rate="2.4"
/>
</div>
<p>{{ item.name }}</p>
</div>
</div>
<!-- <div class="table">
<div v-for="item in oldType" :key="item.name"> <div v-for="item in oldType" :key="item.name">
<p>{{ item.name }}</p> <p>{{ item.name }}</p>
<p><m-count :value="item.value" /></p> <p><m-count :value="item.value" /></p>
<p><m-count :value="item.percent" :decimal="2" />%</p> <p><m-count :value="item.percent" :decimal="2" />%</p>
</div> </div>
</div> </div> -->
</div> </div>
<div> <div>
<m-sub>养老方式</m-sub> <m-sub2>养老方式</m-sub2>
<div class="bar"> <div class="bar">
<div <div
v-for="item in oldMethod" v-for="item in oldMethod"
...@@ -61,13 +75,15 @@ ...@@ -61,13 +75,15 @@
</div> </div>
</div> </div>
<div> <div>
<m-sub>长护险</m-sub> <m-sub2>长护险</m-sub2>
<div class="insurance"> <div class="insurance">
<div> <div>
申请人数 <m-count class="count" :value="1113" /><span></span> <m-count class="count" :value="1113" />
<span>申请人数</span>
</div> </div>
<div> <div>
申请通过人数 <m-count class="count" :value="812" /><span></span> <m-count class="count" :value="812" />
<span>申请通过人数</span>
</div> </div>
</div> </div>
<div v-if="showChart" class="insurance-chart"> <div v-if="showChart" class="insurance-chart">
...@@ -79,10 +95,12 @@ ...@@ -79,10 +95,12 @@
<script lang="ts"> <script lang="ts">
import { computed, defineComponent, ref } from 'vue' import { computed, defineComponent, ref } from 'vue'
import Circle from '../components/circle.vue'
import store from '@/store' import store from '@/store'
export default defineComponent({ export default defineComponent({
name: 'Old', name: 'Old',
components: { Circle },
setup() { setup() {
const oldSum = ref([ const oldSum = ref([
{ name: '女性占比', value: 65 }, { name: '女性占比', value: 65 },
...@@ -105,7 +123,7 @@ export default defineComponent({ ...@@ -105,7 +123,7 @@ export default defineComponent({
}) })
const total = pieData.value.source.reduce((acc, cur) => acc + cur.value, 0) const total = pieData.value.source.reduce((acc, cur) => acc + cur.value, 0)
const pieOption = ref({ const pieOption = ref({
color: ['#8D51C7', '#BEBEBE', '#CA3A40', '#F9B84C', '#34ACFF', '#429321'], color: ['#FE9B5F', '#51EBA4', '#77BFF9', '#8E6FFC', '#E06377', '#B9C3D1'],
legend: { show: false }, legend: { show: false },
series: [ series: [
{ {
...@@ -173,19 +191,20 @@ export default defineComponent({ ...@@ -173,19 +191,20 @@ export default defineComponent({
width 100% width 100%
display flex display flex
justify-content space-between justify-content space-between
padding 0 .1rem
>div >div
display flex
align-items center
justify-content space-around
width 30%
padding .05rem
.count .count
font-size .14rem font-size .14rem
font-weight bold color $orange
span font-family $font-pang
color #aaa margin-right .03rem
font-size .08rem
p
color #ccc
.distribute .distribute
width 100% width 100%
height 1.2rem height 1rem
display flex display flex
.chart .chart
width 40% width 40%
...@@ -207,32 +226,29 @@ export default defineComponent({ ...@@ -207,32 +226,29 @@ export default defineComponent({
&:last-child &:last-child
font-size .08rem font-size .08rem
margin-left .11rem margin-left .11rem
.table .old-type
width 100%
height 1.2rem
display flex display flex
border .01rem solid $blue flex-wrap wrap
margin-bottom .3rem
>div >div
flex 1 width 33.3%
text-align center text-align center
&+div .circle
border-left inherit width 100%
p height 80%
font-size .11rem background-image url('@/assets/images/circle-bg.png')
background $table-bg(0.15) background-repeat no-repeat
line-height 2 background-size 50%
&+p background-position 49% 0%
border-top .01rem solid $font-color .circle-item
&:nth-of-type(1) padding-top 0.04rem
font-size .1rem
background $table-bg()
&:nth-of-type(2)
color $yellow
&:nth-of-type(3)
color $edge
.bar .bar
display flex display flex
width 100% width 100%
height .1rem height .06rem
margin .2rem 0 .1rem margin .2rem 0 .14rem
>div >div
position relative position relative
.count .count
...@@ -268,15 +284,13 @@ export default defineComponent({ ...@@ -268,15 +284,13 @@ export default defineComponent({
.insurance .insurance
display flex display flex
justify-content space-around justify-content space-around
align-items center
.count .count
font-size .14rem font-size .14rem
color $yellow color $orange
font-weight bold font-family $font-pang
margin-left .1rem margin-right .1rem
span
color #aaa
font-size .08rem
.insurance-chart .insurance-chart
width 100% width 100%
height 1rem height 0.9rem
</style> </style>
<template> <template>
<m-card title="110非警情"> <m-card title="110非警情">
<div> <div>
<m-sub :addition="{ value: String(newFind.newFind), unit: '近30mins' }"> <m-sub2 :addition="{ value: String(newFind.newFind), unit: '近30mins' }">
最新发现 最新发现
</m-sub> </m-sub2>
<Brief :list="sumList" /> <Brief :list="sumList" color="#fff" />
<div v-if="showChart" class="chart"> <div v-if="showChart" class="chart">
<m-line :dataset="lineData" :option="lineOption" /> <m-line :dataset="lineData" :option="lineOption" />
</div> </div>
</div> </div>
<div> <div>
<m-sub>门岗值守分布</m-sub> <m-sub2>门岗值守分布</m-sub2>
<div class="gate"> <div class="gate">
<p>直管公房</p> <p>直管公房</p>
<Summary :list="zggfList" /> <Summary :list="zggfList" :avatar="avatar7" />
</div> </div>
<div class="gate"> <div class="gate">
<p>社会物业</p> <p>社会物业</p>
<Summary :list="shwyList" /> <Summary :list="shwyList" :avatar="avatar7" />
</div> </div>
</div> </div>
<div> <div>
<m-sub>平安地图</m-sub> <m-sub2>平安地图</m-sub2>
<div class="safe-map"> <div class="safe-map">
<div> <div>
<p <p
...@@ -67,12 +67,13 @@ ...@@ -67,12 +67,13 @@
<script lang="ts"> <script lang="ts">
import { computed, defineComponent, ref } from 'vue' import { computed, defineComponent, ref } from 'vue'
import Brief, { BriefProp } from '../components/brief.vue' import Brief from '../components/brief.vue'
import Summary, { SummaryProp } from '../components/summary.vue' import Summary from '../components/summary.vue'
import store from '@/store' import store from '@/store'
import icon15 from '@/assets/images/icon15.png' import icon39 from '@/assets/images/icon39.png'
import icon16 from '@/assets/images/icon16.png' import icon40 from '@/assets/images/icon40.png'
import icon17 from '@/assets/images/icon17.png' import icon41 from '@/assets/images/icon41.png'
import avatar7 from '@/assets/images/avatar7.png'
export default defineComponent({ export default defineComponent({
name: 'Police', name: 'Police',
...@@ -96,9 +97,9 @@ export default defineComponent({ ...@@ -96,9 +97,9 @@ export default defineComponent({
const sumList = computed(() => { const sumList = computed(() => {
return [ return [
{ name: '今日发现', value: newFind.value.find, icon: icon15 }, { name: '今日发现', value: newFind.value.find, icon: icon39 },
{ name: '今日处置中', value: newFind.value.doing, icon: icon16 }, { name: '今日处置中', value: newFind.value.doing, icon: icon40 },
{ name: '今日结案', value: newFind.value.done, icon: icon17 }, { name: '今日结案', value: newFind.value.done, icon: icon41 },
] ]
}) })
const lineData = ref({ const lineData = ref({
...@@ -126,7 +127,7 @@ export default defineComponent({ ...@@ -126,7 +127,7 @@ export default defineComponent({
], ],
}) })
const lineOption = ref({ const lineOption = ref({
color: ['#9B88F9', '#4F953B', '#FFCE34'], color: ['#0073CA', '#4F953B', '#FF9D27'],
legend: { legend: {
right: '1%', right: '1%',
itemWidth: fontSize.value, itemWidth: fontSize.value,
...@@ -185,6 +186,7 @@ export default defineComponent({ ...@@ -185,6 +186,7 @@ export default defineComponent({
// { name: '定兴', value: 92 }, // { name: '定兴', value: 92 },
// ]) // ])
return { return {
avatar7,
sumList, sumList,
lineData, lineData,
lineOption, lineOption,
...@@ -214,6 +216,8 @@ export default defineComponent({ ...@@ -214,6 +216,8 @@ export default defineComponent({
margin-bottom 0.01rem margin-bottom 0.01rem
.safe-map .safe-map
display flex display flex
$card-bg2()
padding .05rem .1rem
>div >div
&:first-child &:first-child
cursor pointer cursor pointer
...@@ -222,7 +226,6 @@ export default defineComponent({ ...@@ -222,7 +226,6 @@ export default defineComponent({
flex-wrap wrap flex-wrap wrap
>p >p
width 33.3% width 33.3%
margin-bottom 0.04rem
span span
color #ccc color #ccc
.count .count
...@@ -236,7 +239,6 @@ export default defineComponent({ ...@@ -236,7 +239,6 @@ export default defineComponent({
&:last-child &:last-child
$center() $center()
flex 1 flex 1
background url('@/assets/images/border3.png') 100% / 100% 100% no-repeat
>img >img
width 80% width 80%
</style> </style>
<template> <template>
<m-card <m-card title="实有人口">
title="实有人口" <m-sub2 :addition="{ value: truePeople.personnelNum }"> 人口数量 </m-sub2>
:addition="{ value: truePeople.personnelNum, unit: '人' }" <Brief :list="summary" color="#fff" />
>
<Brief :list="summary" />
<div class="content"> <div class="content">
<div v-for="item in population" :key="item.name"> <div v-for="item in population" :key="item.name">
<m-count class="count" :value="item.value" /> <m-count class="count" :value="item.value" />
<div> <div>
<span>{{ item.name }}</span> <span>{{ item.name }}</span>
<!-- <img src="@/assets/images/location.png" /> --> <img src="@/assets/images/location.png" />
</div> </div>
</div> </div>
</div> </div>
...@@ -18,7 +16,7 @@ ...@@ -18,7 +16,7 @@
<script lang="ts"> <script lang="ts">
import { computed, defineComponent, ref } from 'vue' import { computed, defineComponent, ref } from 'vue'
import Brief, { BriefProp } from '../components/brief.vue' import Brief from '../components/brief.vue'
import inImg from '@/assets/images/in.png' import inImg from '@/assets/images/in.png'
import out from '@/assets/images/out.png' import out from '@/assets/images/out.png'
import store from '@/store' import store from '@/store'
...@@ -54,24 +52,24 @@ export default defineComponent({ ...@@ -54,24 +52,24 @@ export default defineComponent({
</script> </script>
<style lang="stylus" scoped> <style lang="stylus" scoped>
@import '../../components/MyComponent/main.styl'
.content .content
display flex display flex
justify-content space-between justify-content space-between
>div >div
width 32% width 32%
background url('@/assets/images/border.png') 100% / 100% 100% no-repeat
padding 0.05rem 0.15rem padding 0.05rem 0.15rem
.count .count
font-size 0.12rem font-size 0.14rem
font-family $font-pang
color $orange
>div >div
display flex display flex
align-items center align-items center
justify-content space-between
width 100% width 100%
span
font-size 0.09rem
color #ccc
img img
width 0.1rem width 0.1rem
height @width height @width
margin-left .05rem
</style> </style>
<template> <template>
<div class="public-manage"> <div class="public-manage">
<m-card mode="border"> <m-card mode="border2">
<Complain /> <Complain />
</m-card> </m-card>
<m-card mode="border"> <m-card mode="border2">
<Demand /> <Demand />
</m-card> </m-card>
<m-card mode="border"> <m-card mode="border2">
<div class="first-child"><CaseAnalysis /></div> <div class="first-child"><CaseAnalysis /></div>
<div class="second-child"><KeyTask :show="showKeyTask" /></div> <div class="second-child">
<KeyTask
mode="4"
:show="showKeyTask"
:color="taskColor"
height="1rem"
:bg="null"
/>
</div>
<div class="third-child"><BussinessEntry /></div> <div class="third-child"><BussinessEntry /></div>
</m-card> </m-card>
</div> </div>
...@@ -28,7 +36,20 @@ export default defineComponent({ ...@@ -28,7 +36,20 @@ export default defineComponent({
components: { Complain, Demand, CaseAnalysis, KeyTask, BussinessEntry }, components: { Complain, Demand, CaseAnalysis, KeyTask, BussinessEntry },
setup() { setup() {
const showKeyTask = computed(() => store.state.curTheme === 'manage') const showKeyTask = computed(() => store.state.curTheme === 'manage')
return { showKeyTask } return {
showKeyTask,
taskColor: [
'#fff',
'#fff',
'#fff',
'#fff',
'#fff',
'#fff',
'#fff',
'#fff',
'#fff',
],
}
}, },
}) })
</script> </script>
...@@ -47,7 +68,6 @@ export default defineComponent({ ...@@ -47,7 +68,6 @@ export default defineComponent({
// height 50% // height 50%
.second-child .second-child
height 2rem height 2rem
// height 32%
.third-child .third-child
height 0.8rem height 1rem
</style> </style>
This diff is collapsed.
<template> <template>
<div class="public-service"> <div class="public-service">
<m-card mode="border"> <m-card mode="border2">
<div class="beauty1"><BeautyStreet /></div> <div class="beauty1"><BeautyStreet /></div>
<div class="beauty2"><BeautyHome /></div> <div class="beauty2"><BeautyHome /></div>
</m-card> </m-card>
<m-card mode="border"> <m-card mode="border2">
<Old /> <Old />
</m-card> </m-card>
<m-card mode="border"> <m-card mode="border2">
<Ecology /> <Ecology />
</m-card> </m-card>
</div> </div>
......
...@@ -49,14 +49,14 @@ export default defineComponent({ ...@@ -49,14 +49,14 @@ export default defineComponent({
showTask, showTask,
taskColor: [ taskColor: [
'#fff', '#fff',
'#fff', '#eee',
'#fff', '#ddd',
'#fff', '#ccc',
'#fff', '#bbb',
'#fff', '#aaa',
'#fff', '#999',
'#fff', '#888',
'#fff', '#777',
], ],
} }
}, },
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment