@@ -3,14 +3,15 @@ | |||||
height: 43px; | height: 43px; | ||||
line-height: 43px; | line-height: 43px; | ||||
text-align: center; | text-align: center; | ||||
background: url('./normal.png'); | |||||
background: url('./未选.png'); | |||||
background-size: 100% 100%; | background-size: 100% 100%; | ||||
margin-right: 10px; | |||||
} | } | ||||
.active { | .active { | ||||
width: 111px; | width: 111px; | ||||
height: 43px; | height: 43px; | ||||
text-align: center; | text-align: center; | ||||
background: url('./actice.png') !important; | |||||
background: url('./高亮.png') !important; | |||||
background-size: 100% 100% !important; | background-size: 100% 100% !important; | ||||
} | } |
@@ -6,13 +6,19 @@ const routes = [ | |||||
{ | { | ||||
path: '/', | path: '/', | ||||
name: 'root', | name: 'root', | ||||
redirect: '/capital' | |||||
redirect: '/resources' | |||||
}, | }, | ||||
// 首页 | |||||
// 资金 | |||||
{ | { | ||||
path: '/capital', | path: '/capital', | ||||
name: 'capital', | name: 'capital', | ||||
component: () => import('@/views/capital/index.vue') | component: () => import('@/views/capital/index.vue') | ||||
}, | |||||
// 资源 | |||||
{ | |||||
path: '/resources', | |||||
name: 'resources', | |||||
component: () => import('@/views/resources/index.vue') | |||||
} | } | ||||
]; | ]; | ||||
@@ -1,6 +1,6 @@ | |||||
<div class="page"> | <div class="page"> | ||||
<div class="map" id="map"></div> | <div class="map" id="map"></div> | ||||
<Header> | |||||
<Header title="资金一张图"> | |||||
<div slot="left"> | <div slot="left"> | ||||
<Tabs @change="tabChange" :data="tabData"></Tabs> | <Tabs @change="tabChange" :data="tabData"></Tabs> | ||||
</div> | </div> | ||||
@@ -0,0 +1,62 @@ | |||||
export default [ | |||||
[ | |||||
{ | |||||
show: false | |||||
}, | |||||
{ | |||||
show: true, | |||||
name: '经营收入', | |||||
value: '716' | |||||
}, | |||||
{ | |||||
show: true, | |||||
name: '投资收益', | |||||
value: '716' | |||||
}, | |||||
{ | |||||
show: true, | |||||
name: '补助收入', | |||||
value: '716' | |||||
}, | |||||
{ | |||||
show: true, | |||||
name: '其他收入', | |||||
value: '716' | |||||
}, | |||||
{ | |||||
show: false | |||||
} | |||||
], | |||||
[ | |||||
{ | |||||
show: true, | |||||
name: '经营支出', | |||||
value: '716' | |||||
}, | |||||
{ | |||||
show: true, | |||||
name: '税金及附加', | |||||
value: '716' | |||||
}, | |||||
{ | |||||
show: true, | |||||
name: '管理费用', | |||||
value: '716' | |||||
}, | |||||
{ | |||||
show: true, | |||||
name: '公益支出', | |||||
value: '716' | |||||
}, | |||||
{ | |||||
show: true, | |||||
name: '其他支出', | |||||
value: '716' | |||||
}, | |||||
{ | |||||
show: true, | |||||
name: '所得税费用', | |||||
value: '103' | |||||
} | |||||
] | |||||
] |
@@ -0,0 +1,9 @@ | |||||
<div class="buttom2"> | |||||
<table> | |||||
<tr v-for="line in data"> | |||||
<td v-for="item in line"> | |||||
<BlockValue v-if="item.show" :data="item"></BlockValue> | |||||
</td> | |||||
</tr> | |||||
</table> | |||||
</div> |
@@ -0,0 +1,18 @@ | |||||
import BlockValue from '@/components/value/index.vue'; | |||||
import data from './data.js'; | |||||
export default { | |||||
components: { | |||||
BlockValue | |||||
}, | |||||
data () { | |||||
return { | |||||
data | |||||
}; | |||||
}, | |||||
created () { | |||||
}, | |||||
mounted () { | |||||
}, | |||||
methods: { | |||||
} | |||||
}; |
@@ -0,0 +1,16 @@ | |||||
.buttom2 { | |||||
width: 960px; | |||||
table { | |||||
width: 100%; | |||||
tr { | |||||
width: 100%; | |||||
td { | |||||
width: 16.6%; | |||||
} | |||||
} | |||||
} | |||||
} |
@@ -0,0 +1,4 @@ | |||||
<template src='./index.html'/> | |||||
<script lang='js' src='./index.js'></script> | |||||
<style lang='scss' src='./index.scss' scoped> | |||||
</style> |
@@ -0,0 +1,4 @@ | |||||
<Pannel title="xx预警清单" height="305" width="960"> | |||||
<ScrollTable :headers="headers" :data="data" details></ScrollTable> | |||||
</Pannel> |
@@ -0,0 +1,25 @@ | |||||
import Pannel from '@/components/pannel/index.vue'; | |||||
import ScrollTable from '@/components/scroll-table/index.vue'; | |||||
export default { | |||||
components: { | |||||
ScrollTable, | |||||
Pannel | |||||
}, | |||||
data () { | |||||
return { | |||||
headers: ['摘要', '日期', '借方金额', '贷方金额'], | |||||
data: [ | |||||
['摘要内容摘要内容摘要内容摘要内容摘要内容摘', '2025-12', '234', '3434'] | |||||
] | |||||
}; | |||||
}, | |||||
created () { | |||||
}, | |||||
mounted () { | |||||
}, | |||||
methods: { | |||||
tabChange () { | |||||
} | |||||
} | |||||
}; |
@@ -0,0 +1,17 @@ | |||||
.full { | |||||
display: flex; | |||||
flex-direction: column; | |||||
.top { | |||||
height: 50px !important; | |||||
width: 100%; | |||||
display: flex !important; | |||||
align-items: center !important; | |||||
justify-content: flex-end; | |||||
} | |||||
.buttom { | |||||
flex: 1; | |||||
width: 100%; | |||||
} | |||||
} |
@@ -0,0 +1,4 @@ | |||||
<template src='./index.html'/> | |||||
<script lang='js' src='./index.js'></script> | |||||
<style lang='scss' src='./index.scss' scoped> | |||||
</style> |
@@ -0,0 +1,10 @@ | |||||
<Pannel title="资金支出分析" height="340"> | |||||
<div class="full"> | |||||
<div class="top"> | |||||
<PannelTabs @change="tabChange" :data="pannelTabData"></PannelTabs> | |||||
</div> | |||||
<div class="buttom"> | |||||
<Bar id="bar2"></Bar> | |||||
</div> | |||||
</div> | |||||
</Pannel> |
@@ -0,0 +1,36 @@ | |||||
import Pannel from '@/components/pannel/index.vue'; | |||||
import PannelTabs from '@/components/pannel-tabs/index.vue'; | |||||
import Bar from '@/components/charts/bar/index.vue'; | |||||
export default { | |||||
components: { | |||||
Bar, | |||||
PannelTabs, | |||||
Pannel | |||||
}, | |||||
data () { | |||||
return { | |||||
pannelTabData: [ | |||||
{ | |||||
id: '1', | |||||
name: '闲置' | |||||
}, | |||||
{ | |||||
id: '2', | |||||
name: '出租' | |||||
} | |||||
], | |||||
tabIndex: '1' | |||||
}; | |||||
}, | |||||
created () { | |||||
}, | |||||
mounted () { | |||||
}, | |||||
methods: { | |||||
tabChange (info) { | |||||
console.log(info); | |||||
this.tabIndex = info.id | |||||
} | |||||
} | |||||
}; |
@@ -0,0 +1,17 @@ | |||||
.full { | |||||
display: flex; | |||||
flex-direction: column; | |||||
.top { | |||||
height: 50px !important; | |||||
width: 100%; | |||||
display: flex !important; | |||||
align-items: center !important; | |||||
justify-content: flex-end; | |||||
} | |||||
.buttom { | |||||
flex: 1; | |||||
width: 100%; | |||||
} | |||||
} |
@@ -0,0 +1,4 @@ | |||||
<template src='./index.html'/> | |||||
<script lang='js' src='./index.js'></script> | |||||
<style lang='scss' src='./index.scss' scoped> | |||||
</style> |
@@ -0,0 +1,11 @@ | |||||
<Pannel title="资金往来不规范预警分析" height="305"> | |||||
<div class="full"> | |||||
<div class="top"> | |||||
<PannelTabs @change="tabChange" :data="pannelTabsData"></PannelTabs> | |||||
</div> | |||||
<div class="buttom"> | |||||
<BarSign id="bar3"></BarSign> | |||||
</div> | |||||
</div> | |||||
</Pannel> |
@@ -0,0 +1,33 @@ | |||||
import Pannel from '@/components/pannel/index.vue'; | |||||
import BarSign from '@/components/charts/bar-sign/index.vue'; | |||||
import PannelTabs from '@/components/pannel-tabs/index.vue'; | |||||
export default { | |||||
components: { | |||||
BarSign, | |||||
PannelTabs, | |||||
Pannel | |||||
}, | |||||
data () { | |||||
return { | |||||
pannelTabsData: [ | |||||
{ | |||||
id: '1', | |||||
name: '支出' | |||||
}, | |||||
{ | |||||
id: '2', | |||||
name: '收入' | |||||
} | |||||
] | |||||
}; | |||||
}, | |||||
created () { | |||||
}, | |||||
mounted () { | |||||
}, | |||||
methods: { | |||||
tabChange () { | |||||
} | |||||
} | |||||
}; |
@@ -0,0 +1,17 @@ | |||||
.full { | |||||
display: flex; | |||||
flex-direction: column; | |||||
.top { | |||||
height: 50px !important; | |||||
width: 100%; | |||||
display: flex !important; | |||||
align-items: center !important; | |||||
justify-content: flex-end; | |||||
} | |||||
.buttom { | |||||
flex: 1; | |||||
width: 100%; | |||||
} | |||||
} |
@@ -0,0 +1,4 @@ | |||||
<template src='./index.html'/> | |||||
<script lang='js' src='./index.js'></script> | |||||
<style lang='scss' src='./index.scss' scoped> | |||||
</style> |
@@ -0,0 +1,10 @@ | |||||
<Pannel title="资源类型分析" height="340"> | |||||
<div class="full"> | |||||
<div class="top"> | |||||
<PannelTabs @change="tabChange" :data="pannelTabData"></PannelTabs> | |||||
</div> | |||||
<div class="buttom"> | |||||
<Bar :color="['rgba(134, 91, 252, 1)', 'rgba(49, 129, 246, 1)']"></Bar> | |||||
</div> | |||||
</div> | |||||
</Pannel> |
@@ -0,0 +1,39 @@ | |||||
import Pannel from '@/components/pannel/index.vue'; | |||||
import PannelTabs from '@/components/pannel-tabs/index.vue'; | |||||
import Bar from '@/components/charts/bar/index.vue'; | |||||
export default { | |||||
components: { | |||||
Bar, | |||||
PannelTabs, | |||||
Pannel | |||||
}, | |||||
data () { | |||||
return { | |||||
pannelTabData: [ | |||||
{ | |||||
id: '1', | |||||
name: '农用地' | |||||
}, | |||||
{ | |||||
id: '2', | |||||
name: '建设用地' | |||||
}, | |||||
{ | |||||
id: '3', | |||||
name: '未利用地' | |||||
} | |||||
], | |||||
tabIndex: '1' | |||||
}; | |||||
}, | |||||
created () { | |||||
}, | |||||
mounted () { | |||||
}, | |||||
methods: { | |||||
tabChange (info) { | |||||
this.tabIndex = info.id | |||||
} | |||||
} | |||||
}; |
@@ -0,0 +1,17 @@ | |||||
.full { | |||||
display: flex; | |||||
flex-direction: column; | |||||
.top { | |||||
height: 50px !important; | |||||
width: 100%; | |||||
display: flex !important; | |||||
align-items: center !important; | |||||
justify-content: flex-end; | |||||
} | |||||
.buttom { | |||||
flex: 1; | |||||
width: 100%; | |||||
} | |||||
} |
@@ -0,0 +1,4 @@ | |||||
<template src='./index.html'/> | |||||
<script lang='js' src='./index.js'></script> | |||||
<style lang='scss' src='./index.scss' scoped> | |||||
</style> |
@@ -0,0 +1,11 @@ | |||||
<Pannel title="资金往来敏感词预警分析" height="305"> | |||||
<div class="full"> | |||||
<div class="top"> | |||||
<PannelTabs @change="tabChange" :data="pannelTabsData"></PannelTabs> | |||||
</div> | |||||
<div class="buttom"> | |||||
<Bar id="bar2" :color="['rgba(134, 91, 252, 1)', 'rgba(49, 129, 246, 1)']"></Bar> | |||||
</div> | |||||
</div> | |||||
</Pannel> |
@@ -0,0 +1,33 @@ | |||||
import Pannel from '@/components/pannel/index.vue'; | |||||
import Bar from '@/components/charts/bar/index.vue'; | |||||
import PannelTabs from '@/components/pannel-tabs/index.vue'; | |||||
export default { | |||||
components: { | |||||
PannelTabs, | |||||
Bar, | |||||
Pannel | |||||
}, | |||||
data () { | |||||
return { | |||||
pannelTabsData: [ | |||||
{ | |||||
id: '1', | |||||
name: '支出' | |||||
}, | |||||
{ | |||||
id: '2', | |||||
name: '收入' | |||||
} | |||||
] | |||||
}; | |||||
}, | |||||
created () { | |||||
}, | |||||
mounted () { | |||||
}, | |||||
methods: { | |||||
tabChange () { | |||||
} | |||||
} | |||||
}; |
@@ -0,0 +1,17 @@ | |||||
.full { | |||||
display: flex; | |||||
flex-direction: column; | |||||
.top { | |||||
height: 50px !important; | |||||
width: 100%; | |||||
display: flex !important; | |||||
align-items: center !important; | |||||
justify-content: flex-end; | |||||
} | |||||
.buttom { | |||||
flex: 1; | |||||
width: 100%; | |||||
} | |||||
} |
@@ -0,0 +1,4 @@ | |||||
<template src='./index.html'/> | |||||
<script lang='js' src='./index.js'></script> | |||||
<style lang='scss' src='./index.scss' scoped> | |||||
</style> |
@@ -0,0 +1,26 @@ | |||||
export default [ | |||||
[ | |||||
{ | |||||
name: '存款额(万元)', | |||||
icon: require('./1.png'), | |||||
value: '3420' | |||||
}, | |||||
{ | |||||
name: '组织数(个)', | |||||
icon: require('./2.png'), | |||||
value: '257' | |||||
} | |||||
], | |||||
[ | |||||
{ | |||||
name: '现金额(万元)', | |||||
icon: require('./3.png'), | |||||
value: '160' | |||||
}, | |||||
{ | |||||
name: '组织数(个)', | |||||
icon: require('./2.png'), | |||||
value: '101' | |||||
} | |||||
] | |||||
] |
@@ -0,0 +1,9 @@ | |||||
<Pannel title="货币资金分析" height="232"> | |||||
<table> | |||||
<tr v-for="line in data"> | |||||
<td v-for="item in line"> | |||||
<Block :data="item"></Block> | |||||
</td> | |||||
</tr> | |||||
</table> | |||||
</Pannel> |
@@ -0,0 +1,14 @@ | |||||
import Pannel from '@/components/pannel/index.vue'; | |||||
import Block from '@/components/block/index.vue'; | |||||
import data from './data.js'; | |||||
export default { | |||||
components: { | |||||
Block, | |||||
Pannel | |||||
}, | |||||
data () { | |||||
return { | |||||
data | |||||
}; | |||||
} | |||||
}; |
@@ -0,0 +1,12 @@ | |||||
table { | |||||
width: 100%; | |||||
height: 100%; | |||||
tr { | |||||
width: 100%; | |||||
td { | |||||
width: 50%; | |||||
} | |||||
} | |||||
} |
@@ -0,0 +1,4 @@ | |||||
<template src='./index.html'/> | |||||
<script lang='js' src='./index.js'></script> | |||||
<style lang='scss' src='./index.scss' scoped> | |||||
</style> |
@@ -0,0 +1,4 @@ | |||||
<Pannel title="资金支出大额预警分析" height="305"> | |||||
<Bar></Bar> | |||||
</Pannel> |
@@ -0,0 +1,19 @@ | |||||
import Pannel from '@/components/pannel/index.vue'; | |||||
import Bar from '@/components/charts/bar/index.vue'; | |||||
export default { | |||||
components: { | |||||
Bar, | |||||
Pannel | |||||
}, | |||||
data () { | |||||
return { | |||||
}; | |||||
}, | |||||
created () { | |||||
}, | |||||
mounted () { | |||||
}, | |||||
methods: { | |||||
} | |||||
}; |
@@ -0,0 +1,4 @@ | |||||
<template src='./index.html'/> | |||||
<script lang='js' src='./index.js'></script> | |||||
<style lang='scss' src='./index.scss' scoped> | |||||
</style> |
@@ -0,0 +1,3 @@ | |||||
<Pannel title="资金支出排名" height="340"> | |||||
<ScrollTable></ScrollTable> | |||||
</Pannel> |
@@ -0,0 +1,19 @@ | |||||
import Pannel from '@/components/pannel/index.vue'; | |||||
import ScrollTable from '@/components/scroll-table/index.vue'; | |||||
export default { | |||||
components: { | |||||
ScrollTable, | |||||
Pannel | |||||
}, | |||||
data () { | |||||
return { | |||||
}; | |||||
}, | |||||
created () { | |||||
}, | |||||
mounted () { | |||||
}, | |||||
methods: { | |||||
} | |||||
}; |
@@ -0,0 +1,4 @@ | |||||
<template src='./index.html'/> | |||||
<script lang='js' src='./index.js'></script> | |||||
<style lang='scss' src='./index.scss' scoped> | |||||
</style> |
@@ -0,0 +1,11 @@ | |||||
<Pannel title="资金往来不规范预警排名" height="305"> | |||||
<div class="full"> | |||||
<div class="top"> | |||||
<PannelTabs :data="pannelTabsData" @change="tabChange"></PannelTabs> | |||||
</div> | |||||
<div class="buttom"> | |||||
<ScrollTable :headers="headers" :bodyHeight="160"></ScrollTable> | |||||
</div> | |||||
</div> | |||||
</Pannel> |
@@ -0,0 +1,35 @@ | |||||
import Pannel from '@/components/pannel/index.vue'; | |||||
import ScrollTable from '@/components/scroll-table/index.vue'; | |||||
import PannelTabs from '@/components/pannel-tabs/index.vue'; | |||||
export default { | |||||
components: { | |||||
PannelTabs, | |||||
ScrollTable, | |||||
Pannel | |||||
}, | |||||
data () { | |||||
return { | |||||
pannelTabsData: [ | |||||
{ | |||||
id: '1', | |||||
name: '支出' | |||||
}, | |||||
{ | |||||
id: '2', | |||||
name: '收入' | |||||
} | |||||
], | |||||
tabIndex: '1', | |||||
headers: ['部门名称', '支出金额', '排名'] | |||||
}; | |||||
}, | |||||
created () { | |||||
}, | |||||
mounted () { | |||||
}, | |||||
methods: { | |||||
tabChange (info) { | |||||
this.tabIndex = info.id | |||||
} | |||||
} | |||||
}; |
@@ -0,0 +1,17 @@ | |||||
.full { | |||||
display: flex; | |||||
flex-direction: column; | |||||
.top { | |||||
height: 50px !important; | |||||
width: 100%; | |||||
display: flex !important; | |||||
align-items: center !important; | |||||
justify-content: flex-end; | |||||
} | |||||
.buttom { | |||||
flex: 1; | |||||
width: 100%; | |||||
} | |||||
} |
@@ -0,0 +1,4 @@ | |||||
<template src='./index.html'/> | |||||
<script lang='js' src='./index.js'></script> | |||||
<style lang='scss' src='./index.scss' scoped> | |||||
</style> |
@@ -0,0 +1,3 @@ | |||||
<Pannel title="资金收入排名" height="340"> | |||||
<ScrollTable></ScrollTable> | |||||
</Pannel> |
@@ -0,0 +1,19 @@ | |||||
import Pannel from '@/components/pannel/index.vue'; | |||||
import ScrollTable from '@/components/scroll-table/index.vue'; | |||||
export default { | |||||
components: { | |||||
ScrollTable, | |||||
Pannel | |||||
}, | |||||
data () { | |||||
return { | |||||
}; | |||||
}, | |||||
created () { | |||||
}, | |||||
mounted () { | |||||
}, | |||||
methods: { | |||||
} | |||||
}; |
@@ -0,0 +1,4 @@ | |||||
<template src='./index.html'/> | |||||
<script lang='js' src='./index.js'></script> | |||||
<style lang='scss' src='./index.scss' scoped> | |||||
</style> |
@@ -0,0 +1,11 @@ | |||||
<Pannel title="资金往来敏感词预警排名" height="305"> | |||||
<div class="full"> | |||||
<div class="top"> | |||||
<PannelTabs :data="pannelTabsData" @change="tabChange"></PannelTabs> | |||||
</div> | |||||
<div class="buttom"> | |||||
<ScrollTable :headers="headers" :bodyHeight="160"></ScrollTable> | |||||
</div> | |||||
</div> | |||||
</Pannel> |
@@ -0,0 +1,35 @@ | |||||
import Pannel from '@/components/pannel/index.vue'; | |||||
import ScrollTable from '@/components/scroll-table/index.vue'; | |||||
import PannelTabs from '@/components/pannel-tabs/index.vue'; | |||||
export default { | |||||
components: { | |||||
PannelTabs, | |||||
ScrollTable, | |||||
Pannel | |||||
}, | |||||
data () { | |||||
return { | |||||
pannelTabsData: [ | |||||
{ | |||||
id: '1', | |||||
name: '支出' | |||||
}, | |||||
{ | |||||
id: '2', | |||||
name: '收入' | |||||
} | |||||
], | |||||
tabIndex: '1', | |||||
headers: ['部门名称', '支出金额', '排名'] | |||||
}; | |||||
}, | |||||
created () { | |||||
}, | |||||
mounted () { | |||||
}, | |||||
methods: { | |||||
tabChange (info) { | |||||
this.tabIndex = info.id | |||||
} | |||||
} | |||||
}; |
@@ -0,0 +1,17 @@ | |||||
.full { | |||||
display: flex; | |||||
flex-direction: column; | |||||
.top { | |||||
height: 50px !important; | |||||
width: 100%; | |||||
display: flex !important; | |||||
align-items: center !important; | |||||
justify-content: flex-end; | |||||
} | |||||
.buttom { | |||||
flex: 1; | |||||
width: 100%; | |||||
} | |||||
} |
@@ -0,0 +1,4 @@ | |||||
<template src='./index.html'/> | |||||
<script lang='js' src='./index.js'></script> | |||||
<style lang='scss' src='./index.scss' scoped> | |||||
</style> |
@@ -0,0 +1,26 @@ | |||||
export default [ | |||||
[ | |||||
{ | |||||
name: '总资产(万元)', | |||||
icon: require('./1.png'), | |||||
value: '8000' | |||||
}, | |||||
{ | |||||
name: '总负债(万元)', | |||||
icon: require('./2.png'), | |||||
value: '257' | |||||
} | |||||
], | |||||
[ | |||||
{ | |||||
name: '总收入(万元)', | |||||
icon: require('./3.png'), | |||||
value: '1460' | |||||
}, | |||||
{ | |||||
name: '总支出(万元)', | |||||
icon: require('./2.png'), | |||||
value: '1011' | |||||
} | |||||
] | |||||
] |
@@ -0,0 +1,9 @@ | |||||
<Pannel title="资产负债分析" height="232"> | |||||
<table> | |||||
<tr v-for="line in data"> | |||||
<td v-for="item in line"> | |||||
<Block :data="item"></Block> | |||||
</td> | |||||
</tr> | |||||
</table> | |||||
</Pannel> |
@@ -0,0 +1,14 @@ | |||||
import Pannel from '@/components/pannel/index.vue'; | |||||
import Block from '@/components/block/index.vue'; | |||||
import data from './data.js'; | |||||
export default { | |||||
components: { | |||||
Block, | |||||
Pannel | |||||
}, | |||||
data () { | |||||
return { | |||||
data | |||||
}; | |||||
} | |||||
}; |
@@ -0,0 +1,12 @@ | |||||
table { | |||||
width: 100%; | |||||
height: 100%; | |||||
tr { | |||||
width: 100%; | |||||
td { | |||||
width: 50%; | |||||
} | |||||
} | |||||
} |
@@ -0,0 +1,4 @@ | |||||
<template src='./index.html'/> | |||||
<script lang='js' src='./index.js'></script> | |||||
<style lang='scss' src='./index.scss' scoped> | |||||
</style> |
@@ -0,0 +1,4 @@ | |||||
<Pannel title="资金支出大额预警排名" height="305"> | |||||
<ScrollTable :headers="headers"></ScrollTable> | |||||
</Pannel> |
@@ -0,0 +1,19 @@ | |||||
import Pannel from '@/components/pannel/index.vue'; | |||||
import ScrollTable from '@/components/scroll-table/index.vue'; | |||||
export default { | |||||
components: { | |||||
ScrollTable, | |||||
Pannel | |||||
}, | |||||
data () { | |||||
return { | |||||
headers: ['部门名称', '支出金额', '排名'] | |||||
}; | |||||
}, | |||||
created () { | |||||
}, | |||||
mounted () { | |||||
}, | |||||
methods: { | |||||
} | |||||
}; |
@@ -0,0 +1,4 @@ | |||||
<template src='./index.html'/> | |||||
<script lang='js' src='./index.js'></script> | |||||
<style lang='scss' src='./index.scss' scoped> | |||||
</style> |
@@ -0,0 +1,32 @@ | |||||
export const comps = { | |||||
'1': { | |||||
'left': [ | |||||
'Left11', | |||||
'Left21', | |||||
'Left31', | |||||
], | |||||
'right': [ | |||||
'Right11', | |||||
'Right21', | |||||
'Right31', | |||||
], | |||||
'buttom': [ | |||||
'Bottom1' | |||||
] | |||||
}, | |||||
'2': { | |||||
'left': [ | |||||
'Left12', | |||||
'Left22', | |||||
'Left32' | |||||
], | |||||
'right': [ | |||||
'Right12', | |||||
'Right22', | |||||
'Right32' | |||||
], | |||||
'buttom': [ | |||||
'Bottom2' | |||||
] | |||||
} | |||||
} |
@@ -0,0 +1,18 @@ | |||||
<div class="page"> | |||||
<div class="map" id="map"></div> | |||||
<Header title="资源一张图"> | |||||
<div slot="left"> | |||||
<Tabs @change="tabChange" :data="tabData"></Tabs> | |||||
</div> | |||||
</Header> | |||||
<!-- 项目初始化 --> | |||||
<div class="left_side col space_between"> | |||||
<component :is="item" v-for="(item, index) in currentComp.left" :key="index"></component> | |||||
</div> | |||||
<div class="right_side col space_between"> | |||||
<component :is="item" v-for="(item, index) in currentComp.right" :key="index"></component> | |||||
</div> | |||||
<div class="buttom_side row space_between"> | |||||
<component :is="item" v-for="(item, index) in currentComp.buttom" :key="index"></component> | |||||
</div> | |||||
</div> |
@@ -0,0 +1,237 @@ | |||||
import Header from '@/components/header/index.vue'; | |||||
import Tabs from '@/components/tabs/index.vue'; | |||||
import Left11 from './comps/left/top/1/index.vue'; | |||||
import Left21 from './comps/left/middle/1/index.vue'; | |||||
import Left31 from './comps/left/bottom/1/index.vue'; | |||||
import Right11 from './comps/right/top/1/index.vue'; | |||||
import Right21 from './comps/right/middle/1/index.vue'; | |||||
import Right31 from './comps/right/bottom/1/index.vue'; | |||||
import Left12 from './comps/left/top/2/index.vue'; | |||||
import Left22 from './comps/left/middle/2/index.vue'; | |||||
import Left32 from './comps/left/bottom/2/index.vue'; | |||||
import Right12 from './comps/right/top/2/index.vue'; | |||||
import Right22 from './comps/right/middle/2/index.vue'; | |||||
import Right32 from './comps/right/bottom/2/index.vue'; | |||||
import Bottom2 from './comps/buttom/2/index.vue'; | |||||
import Bottom1 from './comps/buttom/1/index.vue'; | |||||
import { getConfigKey } from "@/api/system/config"; | |||||
import { getInfo } from "@/api/login"; | |||||
import { treeselect, treeselectByDeptId } from "@/api/system/dept"; | |||||
import GisUtils from '@/utils/gis.js'; | |||||
import { comps } from './data.js' | |||||
import { | |||||
fromLonLat | |||||
} from 'ol/proj' | |||||
let gis = null; | |||||
export default { | |||||
components: { | |||||
Header, | |||||
Tabs, | |||||
Left11, | |||||
Left21, | |||||
Left31, | |||||
Right11, | |||||
Right21, | |||||
Right31, | |||||
Left12, | |||||
Left22, | |||||
Left32, | |||||
Right12, | |||||
Right22, | |||||
Right32, | |||||
Bottom2, | |||||
Bottom1 | |||||
}, | |||||
data () { | |||||
return { | |||||
tabData: [ | |||||
{ | |||||
id: '1', | |||||
name: '统计分析' | |||||
}, | |||||
{ | |||||
id: '2', | |||||
name: '预警分析' | |||||
} | |||||
], | |||||
yellowIcon: require('./icon/yellow.png'), | |||||
tab: '1', | |||||
comps, | |||||
map: "", // 地图 | |||||
mapGeoServerUrl: "", // geoserver地址 | |||||
mapBorder: "", // 地图边界 | |||||
deptLayer: "", // 坐标点图层 | |||||
countyBorderLayerName: "", // 区县边界图层名称 | |||||
townBorderLayerName: "", // 乡镇边界图层名称 | |||||
villageBorderLayerName: "", // 村边界图层名称 | |||||
groupBorderLayerName: "", // 组边界图层名称 | |||||
addrOptions: [], | |||||
}; | |||||
}, | |||||
computed: { | |||||
currentComp: function () { | |||||
return this.comps[this.tab] | |||||
} | |||||
}, | |||||
created () { | |||||
}, | |||||
mounted () { | |||||
// 获取geoserver的地址 | |||||
this.getGeoServerUrl(); | |||||
getInfo().then(res => { | |||||
// this.getData(); | |||||
treeselectByDeptId({ deptId: res.user.deptId }).then((resp) => { | |||||
this.addrOptions = resp.data; | |||||
// 初始化地图 | |||||
this.initMap(); | |||||
}); | |||||
}); | |||||
}, | |||||
methods: { | |||||
tabChange (info) { | |||||
this.tab = info.id; | |||||
}, | |||||
// 初始化地图 | |||||
initMap () { | |||||
let dept = this.addrOptions[0]; | |||||
let mapCenterLocation; | |||||
if (dept.lng && dept.lat) { | |||||
mapCenterLocation = [dept.lng, dept.lat]; | |||||
} else { | |||||
mapCenterLocation = [116.391461, 39.902359]; | |||||
} | |||||
gis = new GisUtils('map') | |||||
gis.addTianDiTuLayer() | |||||
gis.addAnnotationLayer() | |||||
if (dept.deptLevel === '5') { | |||||
// 登录身份为市级领导 | |||||
this.userRole = 'cityLeader'; | |||||
this.cityId = dept.id; | |||||
this.currentDeptLevel = '5'; | |||||
// 添加区县边界 | |||||
this.addCountyBorder(dept.children.map(item => item.id)); | |||||
} else if (dept.deptLevel === '4') { | |||||
// 登录身份为县级领导 | |||||
this.userRole = 'countyLeader'; | |||||
this.countyId = dept.id; | |||||
this.currentDeptLevel = '4'; | |||||
// 添加乡镇边界 | |||||
this.addTownBorder(dept.children.map(item => item.id)); | |||||
gis.getView().setZoom(11); | |||||
// this.villageIds = this.findLeafNodeIds(dept); | |||||
} else if (dept.deptLevel === '3') { | |||||
// 登录身份为镇级领导 | |||||
this.userRole = 'townLeader'; | |||||
this.townId = dept.id; | |||||
this.currentDeptLevel = '3'; | |||||
// 添加村边界 | |||||
this.addVillageBorder(dept.children.map(item => item.id)); | |||||
this.map.getView().setZoom(13); | |||||
// this.villageIds = this.findLeafNodeIds(dept); | |||||
} | |||||
// 添加坐标点图层 | |||||
if (dept.children) { | |||||
this.addDeptLayer(dept.children, 'yellow.png'); | |||||
} | |||||
gis.getView().setCenter(fromLonLat(mapCenterLocation)) | |||||
// 地图点击事件 | |||||
gis.getMapContainer().on("click", (evt) => { | |||||
let feature = this.map.forEachFeatureAtPixel( | |||||
evt.pixel, | |||||
(feature) => feature | |||||
); | |||||
if (feature) { | |||||
// 镇级:加载村级坐标点 | |||||
if (feature.get('level') === 'deptPoint') { | |||||
let parentIds = []; | |||||
this.findParentNodeIds(this.addrOptions, feature.get('deptId'), parentIds); | |||||
this.addrText = parentIds; | |||||
this.selectAddress(parentIds); | |||||
} | |||||
} | |||||
}); | |||||
}, | |||||
selectAddress (value, isLocated = true) { // isLocated 控制地图是否跳转 | |||||
this.queryParams.deptId = value[value.length - 1]; | |||||
this.getData(DEPT_CHANGED); | |||||
let node = this.$refs["cascader"].panel.getNodeByValue(value); | |||||
this.drawMap(node, isLocated); | |||||
}, | |||||
// 查找指定deptId的所有父节点id | |||||
findParentNodeIds (tree, deptId, result) { | |||||
for (let node of tree) { | |||||
if (node.id === deptId) { | |||||
result.unshift(node.id); | |||||
return true; | |||||
} | |||||
if (node.children && node.children.length > 0) { | |||||
let isFind = this.findParentNodeIds(node.children, deptId, result); | |||||
if (isFind) { | |||||
result.unshift(node.id); | |||||
return true; | |||||
} | |||||
} | |||||
} | |||||
return false; | |||||
}, | |||||
// 添加坐标点图层 | |||||
addDeptLayer (nextDeptSet) { | |||||
let features = []; | |||||
nextDeptSet.forEach(item => { | |||||
let fs = gis.getFeature(item, this.yellowIcon) | |||||
features.push(fs); | |||||
}); | |||||
console.log(features, 88); | |||||
gis.getVectorLayerByFs(features) | |||||
gis.mapSetFit(features) | |||||
}, | |||||
// 添加区县边界 | |||||
addCountyBorder (deptIds) { | |||||
gis.addImageLayer(this.mapGeoServerUrl, this.countyBorderLayerName, deptIds) | |||||
}, | |||||
// 添加乡镇边界 | |||||
addTownBorder (deptIds) { | |||||
gis.addImageLayer(this.mapGeoServerUrl, this.townBorderLayerName, deptIds) | |||||
}, | |||||
// 添加村边界 | |||||
addVillageBorder (deptIds) { | |||||
gis.addImageLayer(this.mapGeoServerUrl, this.villageBorderLayerName, deptIds) | |||||
}, | |||||
// 获取geoserver的地址 | |||||
getGeoServerUrl () { | |||||
// 获取geoserver的地址 | |||||
getConfigKey("system.geoServer.url").then(response => { | |||||
this.mapGeoServerUrl = response.msg; | |||||
}); | |||||
// 获取区县边界图层名称 | |||||
getConfigKey("geoserver.layer.countyBorder").then(response => { | |||||
this.countyBorderLayerName = response.msg; | |||||
}); | |||||
// 获取乡镇边界的图层名称 | |||||
getConfigKey("geoserver.layer.townBorder").then(response => { | |||||
this.townBorderLayerName = response.msg; | |||||
}); | |||||
// 获取村边界的图层名称 | |||||
getConfigKey("geoserver.layer.villageBorder").then(response => { | |||||
this.villageBorderLayerName = response.msg; | |||||
}); | |||||
// 获取组边界的图层名称 | |||||
getConfigKey("geoserver.layer.groupBorder").then(response => { | |||||
this.groupBorderLayerName = response.msg; | |||||
}); | |||||
} | |||||
} | |||||
}; |
@@ -0,0 +1,8 @@ | |||||
.map { | |||||
border: 1px solid red; | |||||
position: absolute; | |||||
top: 0; | |||||
left: 0; | |||||
right: 0; | |||||
bottom: 0; | |||||
} |
@@ -0,0 +1,4 @@ | |||||
<template src='./index.html'/> | |||||
<script lang='js' src='./index.js'></script> | |||||
<style lang='scss' src='./index.scss' scoped> | |||||
</style> |