Browse Source

初版

master
mk 2 years ago
parent
commit
ff5533cd39
  1. 1
      .env.development
  2. 6
      .env.production
  3. BIN
      src/assets/images/icon/azbj.png
  4. BIN
      src/assets/images/icon/blueBg.png
  5. BIN
      src/assets/images/icon/cjr.png
  6. BIN
      src/assets/images/icon/dbry.png
  7. BIN
      src/assets/images/icon/dbry1.png
  8. BIN
      src/assets/images/icon/gllr.png
  9. BIN
      src/assets/images/icon/hongdneg.png
  10. BIN
      src/assets/images/icon/huangdeng.png
  11. BIN
      src/assets/images/icon/jdry.png
  12. BIN
      src/assets/images/icon/jshz.png
  13. BIN
      src/assets/images/icon/lvdeng.png
  14. BIN
      src/assets/images/icon/redBg.png
  15. BIN
      src/assets/images/icon/snry.png
  16. BIN
      src/assets/images/icon/sqjz.png
  17. BIN
      src/assets/images/icon/tkry.png
  18. BIN
      src/assets/images/icon/tyjr.png
  19. BIN
      src/assets/images/icon/xfry.png
  20. BIN
      src/assets/images/icon/yellowBg.png
  21. BIN
      src/assets/images/icon/ylfn.png
  22. BIN
      src/assets/images/index/peiBg.png
  23. BIN
      src/assets/images/map/down.png
  24. BIN
      src/assets/images/map/flow.png
  25. BIN
      src/assets/images/map/headerBg.png
  26. BIN
      src/assets/images/resource/whyf/11.jpg
  27. 2
      src/store/modules/map.js
  28. 27
      src/style/page.scss
  29. 2
      src/views/next/layout/screen-header.vue
  30. 2
      src/views/next/screen-content-left/hsyf-left/index.vue
  31. 888
      src/views/next/screen-content-left/szyf-left/index.vue
  32. 177
      src/views/next/screen-content-map/cpt/szyf-map.vue
  33. 59
      src/views/next/screen-content-map/cpt/zdyf-map.vue
  34. 4
      src/views/next/screen-content-map/index.vue
  35. 335
      src/views/next/screen-content-right/szyf-right/index.vue

1
.env.development

@ -2,6 +2,7 @@ NODE_ENV=development
# 中间地图 geojson 地址
VUE_APP_MAP_URL='/json'
VUE_APP_MAP_IMG='/images/map/'
VUE_APP_PLAYER_URL='/js/h5player/'
# 锦水印象宣传视频地址
VUE_APP_VIDEO_URL='/video/'

6
.env.production

@ -1,5 +1,5 @@
NODE_ENV=production
VUE_APP_MAP_URL='/jinshui-screen/json'
VUE_APP_PLAYER_URL='/jinshui-screen/js/h5player/'
VUE_APP_VIDEO_URL='/jinshui-screen/video/'
VUE_APP_MAP_IMG='/lingshan-front/images/map/'
VUE_APP_PLAYER_URL='/lingshan-front/js/h5player/'
VUE_APP_VIDEO_URL='/lingshan-front/video/'

BIN
src/assets/images/icon/azbj.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.2 KiB

BIN
src/assets/images/icon/blueBg.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

BIN
src/assets/images/icon/cjr.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

BIN
src/assets/images/icon/dbry.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

BIN
src/assets/images/icon/dbry1.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

BIN
src/assets/images/icon/gllr.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

BIN
src/assets/images/icon/hongdneg.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

BIN
src/assets/images/icon/huangdeng.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

BIN
src/assets/images/icon/jdry.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

BIN
src/assets/images/icon/jshz.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

BIN
src/assets/images/icon/lvdeng.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

BIN
src/assets/images/icon/redBg.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

BIN
src/assets/images/icon/snry.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.5 KiB

BIN
src/assets/images/icon/sqjz.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.2 KiB

BIN
src/assets/images/icon/tkry.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

BIN
src/assets/images/icon/tyjr.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

BIN
src/assets/images/icon/xfry.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.7 KiB

BIN
src/assets/images/icon/yellowBg.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

BIN
src/assets/images/icon/ylfn.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

BIN
src/assets/images/index/peiBg.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.2 KiB

BIN
src/assets/images/map/down.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.2 KiB

BIN
src/assets/images/map/flow.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 421 KiB

BIN
src/assets/images/map/headerBg.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

BIN
src/assets/images/resource/whyf/11.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 MiB

2
src/store/modules/map.js

@ -4,7 +4,7 @@ export default {
streetId: '12121212121212ab', // 锦水街道id 1215437824174608386
communityId: '', // 社区id
gridId: '', // 网格id
navId:'hsyf'//选中nav
navId:'sy'//选中nav
},
mutations: {
set_mapLevel (state, mapLevel) {

27
src/style/page.scss

@ -19,17 +19,22 @@ img {
// text-shadow: 0px -2px 20px rgb(0, 2, 41, 0.55);
}
.screen-title-right{
font-size: 14px;
color: #90B1DC;
padding: 2px 8px;
box-sizing: border-box;
width: -moz-fit-content;
width: fit-content;
cursor: pointer;
border: 1px solid #11649E;
border-radius: 2px;
margin-right: 3px;
font-family: normal;
>span{
font-size: 14px;
color: #90B1DC;
padding: 2px 8px;
box-sizing: border-box;
width: -moz-fit-content;
width: fit-content;
cursor: pointer;
border: 1px solid #11649E;
border-radius: 2px;
margin-right: 3px;
font-family: normal;
}
>*{
margin-left: 4px;
}
}
.card{
background: url("~@/assets/images/common/cardBg.png") no-repeat;

2
src/views/next/layout/screen-header.vue

@ -48,7 +48,7 @@ export default {
if(this.navId == 'whyf'){
this.set_nav('sy')
}else{
this.$EventBus.$emit('clearMap','Emap')
this.$EventBus.$emit('switcMapType','Emap')
}
},

2
src/views/next/screen-content-left/hsyf-left/index.vue

@ -792,7 +792,7 @@ export default {
flex: 1;
display: flex;
justify-content: space-around;
color: rgb(83, 180, 255,0.2);
.item {
display: flex;
flex-direction: column;

888
src/views/next/screen-content-left/szyf-left/index.vue

@ -4,19 +4,83 @@
<screen-title>
<div slot="left" class="screen-title-left">事件处理实况</div>
</screen-title>
<div class="card-item-sjcl1">
<section>
<div class="total">
<span>事件总数</span>
<span><b>1,762</b></span>
</div>
<div id="chart"></div>
</section>
<div class="flex">
<div class="item" v-for="item in eventTotalList" :key="item.name">
<div class="img">
<img :src="item.imgSrc" alt="">
</div>
<div>
<span>{{ item.num }}</span>
<span>{{ item.name }}</span>
</div>
</div>
</div>
</div>
</div>
<div class='card h379' style="margin-top:8px;">
<screen-title>
<div slot="left" class="screen-title-left">事件处理实况</div>
</screen-title>
<div class="card-item-sjcl2">
<section>
<div id="chart3D"></div>
<div class="buttomCharts"></div>
</section>
<div class="box">
<div class="left">
<div class="item">
<span class="num">137</span>
<span class="type">即诉即办</span>
</div>
<div class="item">
<span class="num">46</span>
<span class="type">直通联办</span>
</div>
<div class="item">
<span class="num">28</span>
<span class="type">网格化平台</span>
</div>
</div>
<div class="right">
<div class="top">
<div><span>已结案</span><span>26</span><span>19%</span></div>
<div><span>待响应</span><span>6</span><span>5%</span></div>
</div>
<div class="bot">
<div><span>处理中</span><span>3</span><span>2%</span></div>
<div><span>已归档</span><span>102</span><span>74%</span></div>
</div>
<div id="chartPei"
style="width: 100px;height: 100px; position: absolute;top: 50%;left: 50%;transform: translate(-50px,-50px);">
</div>
</div>
</div>
</div>
</div>
<div class='card h232 m-top12' >
<div class='card h232 m-top12'>
<screen-title>
<div slot="left" class="screen-title-left">重点维稳人员</div>
</screen-title>
<div class="card-item-zdyf">
<div class="card-item-wwry">
<div class="item" v-for="item in stabilizeList" :key="item.name">
<div class="img">
<img :src="item.imgSrc" alt="">
</div>
<div>
<span>{{ item.num }}</span>
<span>{{ item.name }}</span>
</div>
</div>
</div>
</div>
</div>
@ -26,17 +90,611 @@
export default {
data() {
return {
optionData: [
{
name: '待处理',
value: 51
}, {
name: '处理中',
value: 25
}, {
name: '已结案',
value: 25
}],
eventTotalList: [
{
imgSrc: require('@/assets/images/icon/hongdneg.png'),
num: 13,
name: '红灯事件'
},
{
imgSrc: require('@/assets/images/icon/huangdeng.png'),
num: 24,
name: '黄灯事件'
},
{
imgSrc: require('@/assets/images/icon/lvdeng.png'),
num: 267,
name: '绿灯事件'
}
],
stabilizeList: [
{
imgSrc: require('@/assets/images/icon/xfry.png'),
num: 312,
name: '信访人员'
},
{
imgSrc: require('@/assets/images/icon/azbj.png'),
num: 97,
name: '安置帮教'
},
{
imgSrc: require('@/assets/images/icon/sqjz.png'),
num: 63,
name: '社区矫正'
},
{
imgSrc: require('@/assets/images/icon/jshz.png'),
num: 29,
name: '精神患者'
}
,
{
imgSrc: require('@/assets/images/icon/jdry.png'),
num: 23,
name: '戒毒人员'
}
,
{
imgSrc: require('@/assets/images/icon/snry.png'),
num: 16,
name: '失能人员'
}
],
peiOption: null,
optionData3D: [
{
name: '城市管理',//
value: 19,//
itemStyle: {
color: 'rgba(13, 144, 254,1)'
}
}, {
name: '交通设施',
value: 13,
itemStyle: {
color: 'rgba(68, 212, 205,1)',
}
}, {
name: '噪音扰民',
value: 15,
itemStyle: {
color: 'rgba(242, 169, 128, 1)'
}
},
{
name: '环境卫生',
value: 16,
itemStyle: {
color: 'rgba(219, 219, 138, 1)'
}
},
{
name: '其他',
value: 16,
itemStyle: {
color: 'rgba(238, 116, 56,1)'
}
},
],
peiOption3D: null,
};
},
created() {
},
mounted() {
this.$nextTick(() => {
this.initChartPei();
this.initChartPei3D()
this.initChartPei2()
})
},
beforeDestroy() {
},
methods: {
initChartPei() {
let myChart = echarts.init(document.getElementById('chart'));
this.peiOption = this.getPei(this.optionData)
myChart.setOption(this.peiOption)
},
initChartPei3D() {
let myChart = echarts.init(document.getElementById('chart3D'));
this.peiOption3D = this.getPie3D(this.optionData3D, 0.85)
myChart.setOption(this.peiOption3D)
this.bindListen(myChart);
},
initChartPei2() {
let myChart = echarts.init(document.getElementById('chartPei'));
let option = {
title: {
text: '即诉即办',
// subtext: '12',
x: 'center',
y: 'center',
textStyle: {
fontWeight: 'normal',
fontSize: 14,
color: '#BCD0F0',
}
},
tooltip: {
trigger: 'item',
formatter: function (params, ticket, callback) {
var res = params.seriesName;
res += params.name + ' : ' + params.percent + '%';
return res;
}
},
clockWise: false,
series: [{
name: '',
type: 'pie',
radius: ['70%', '100%'],
color: ['#2e8cff', '#ff6529'],
hoverAnimation: false,
label: {
normal: {
show: false,
position: 'inner',
textStyle: {
color: '#fff',
fontSize: 14,
}
}
},
data: [{
value: 11,
name: '已结案'
}, {
value: 22,
name: '已归档'
}]
}]
};
myChart.setOption(option)
},
getPei(data) {
let colors = [['#10a2ff', '#155ea3'], ['#ebab12', '#155ca3'], ['#02afd8', '#155ca3'],]
let titleArr = [];
let seriesArr = [];
data.forEach((item, index) => {
titleArr.push(
{
text: item.name,
left: index * 35 + 15 + '%',
top: '82%',
textAlign: 'center',
textStyle: {
fontWeight: 'normal',
fontSize: '16',
color: '#BCD0F0',
textAlign: 'center',
},
}
);
seriesArr.push(
{
name: item.name,
type: 'pie',
clockWise: false,
radius: [30, 35],
itemStyle: {
normal: {
color: colors[index][0],
shadowColor: colors[index][0],
shadowBlur: 0,
label: {
show: false,
color: '#fff',
},
labelLine: {
show: false
},
}
},
hoverAnimation: false,
center: [index * 35 + 15 + '%', '48%'],
data: [{
value: item.value,
label: {
normal: {
formatter: function (params) {
return params.value + '%';
},
position: 'center',
show: true,
textStyle: {
fontSize: '16',
fontWeight: 'bold',
}
}
},
}, {
value: 100 - item.value,
name: 'invisible',
itemStyle: {
normal: {
color: colors[index][1]
},
emphasis: {
color: colors[index][1]
}
}
}]
}
)
});
let option = {
// backgroundColor: "#fff",
title: titleArr,
series: seriesArr
};
return option
},
getPie3D(pieData, internalDiameterRatio) {
let that = this;
let series = [];
let sumValue = 0;
let startValue = 0;
let endValue = 0;
let legendData = [];
let legendBfb = [];
let k = 1 - internalDiameterRatio;
pieData.sort((a, b) => {
return (b.value - a.value);
});
// series-surface()
for (let i = 0; i < pieData.length; i++) {
sumValue += pieData[i].value;
let seriesItem = {
//
name: typeof pieData[i].name === 'undefined' ? `series${i}` : pieData[i].name,
type: 'surface',
//
parametric: true,
//线
wireframe: {
show: false
},
pieData: pieData[i],
pieStatus: {
selected: false,
hovered: false,
k: k
},
//()
// center: ['50%', '100%']
};
//
if (typeof pieData[i].itemStyle != 'undefined') {
let itemStyle = {};
typeof pieData[i].itemStyle.color != 'undefined' ? itemStyle.color = pieData[i].itemStyle.color : null;
typeof pieData[i].itemStyle.opacity != 'undefined' ? itemStyle.opacity = pieData[i].itemStyle.opacity : null;
seriesItem.itemStyle = itemStyle;
}
series.push(seriesItem);
}
// 使 sumValue getParametricEquation
// series-surface series-surface.parametricEquation
legendData = [];
legendBfb = [];
for (let i = 0; i < series.length; i++) {
endValue = startValue + series[i].pieData.value;
series[i].pieData.startRatio = startValue / sumValue;
series[i].pieData.endRatio = endValue / sumValue;
series[i].parametricEquation = this.getParametricEquation(series[i].pieData.startRatio, series[i].pieData.endRatio,
false, false, k, series[i].pieData.value);
startValue = endValue;
let bfb = that.fomatFloat(series[i].pieData.value / sumValue, 4);
legendData.push({
name: series[i].name,
value: bfb
});
legendBfb.push({
name: series[i].name,
value: bfb
});
}
//()
let boxHeight = this.getHeight3D(series, 13);//3d/
// legendDataseries
let option = {
//
legend: {
data: legendData,
//
orient: 'vertical',
right: 10,
// top: 140,
//
itemGap: 15,
textStyle: {
color: '#A1E2FF',
},
show: true,
icon: "vertical",
//
// formatter: function (name) {
// var target;
// for (var i = 0, l = pieData.length; i < l; i++) {
// if (pieData[i].name == name) {
// target = pieData[i].value;
// }
// }
// return `${name}: ${target}`;
// }
//
formatter: function (param) {
let item = legendBfb.filter(item => item.name == param)[0];
let bfs = that.fomatFloat(item.value * 100, 2) + "%";
console.log(item.name)
return `${item.name} :${bfs}`;
}
},
//( )
tooltip: {
formatter: params => {
if (params.seriesName !== 'mouseoutSeries' && params.seriesName !== 'pie2d') {
let bfb = ((option.series[params.seriesIndex].pieData.endRatio - option.series[params.seriesIndex].pieData.startRatio) *
100).toFixed(2);
return `${params.seriesName}<br/>` +
`<span style="display:inline-block;margin-right:5px;border-radius:10px;width:10px;height:10px;background-color:${params.color};"></span>` +
`${bfb}`;
}
}
},
//
xAxis3D: {
min: -1,
max: 1
},
yAxis3D: {
min: -1,
max: 1
},
zAxis3D: {
min: -1,
max: 1
},
// legend:{
// bottom:20,
// // left: '-15%',
// textStyle: {
// color: '#fff !important'
// }
// },
//
grid3D: {
show: false,
boxHeight: boxHeight, //
//
top: '-10.5%',
left: '-27%',
viewControl: { //3d
alpha: 30, //( )
distance: 150,//zoom()
rotateSensitivity: 0, //0
zoomSensitivity: 0, //0
panSensitivity: 0, //0
autoRotate: false //
}
},
series: series
};
return option;
},
// series-surface.parametricEquation
getParametricEquation(startRatio, endRatio, isSelected, isHovered, k, h) {
//
let midRatio = (startRatio + endRatio) / 2;
let startRadian = startRatio * Math.PI * 2;
let endRadian = endRatio * Math.PI * 2;
let midRadian = midRatio * Math.PI * 2;
//
if (startRatio === 0 && endRatio === 1) {
isSelected = false;
}
// / k 1/3
k = typeof k !== 'undefined' ? k : 1 / 3;
// x y 0
let offsetX = isSelected ? Math.cos(midRadian) * 0.1 : 0;
let offsetY = isSelected ? Math.sin(midRadian) * 0.1 : 0;
// 1
let hoverRate = isHovered ? 1.05 : 1;
//
return {
u: {
min: -Math.PI,
max: Math.PI * 3,
step: Math.PI / 32
},
v: {
min: 0,
max: Math.PI * 2,
step: Math.PI / 20
},
x: function (u, v) {
if (u < startRadian) {
return offsetX + Math.cos(startRadian) * (1 + Math.cos(v) * k) * hoverRate;
}
if (u > endRadian) {
return offsetX + Math.cos(endRadian) * (1 + Math.cos(v) * k) * hoverRate;
}
return offsetX + Math.cos(u) * (1 + Math.cos(v) * k) * hoverRate;
},
y: function (u, v) {
if (u < startRadian) {
return offsetY + Math.sin(startRadian) * (1 + Math.cos(v) * k) * hoverRate;
}
if (u > endRadian) {
return offsetY + Math.sin(endRadian) * (1 + Math.cos(v) * k) * hoverRate;
}
return offsetY + Math.sin(u) * (1 + Math.cos(v) * k) * hoverRate;
},
z: function (u, v) {
if (u < -Math.PI * 0.5) {
return Math.sin(u);
}
if (u > Math.PI * 2.5) {
return Math.sin(u) * h * .1;
}
return Math.sin(v) > 0 ? 1 * h * .1 : -1;
}
};
},
fomatFloat(num, n) {
var f = parseFloat(num);
if (isNaN(f)) {
return false;
}
f = Math.round(num * Math.pow(10, n)) / Math.pow(10, n); // n
var s = f.toString();
var rs = s.indexOf('.');
//0
if (rs < 0) {
rs = s.length;
s += '.';
}
while (s.length <= rs + n) {
s += '0';
}
return s;
},
bindListen(myChart) {
let that = this;
let selectedIndex = '';
let hoveredIndex = '';
//
myChart.on('click', function (params) {
// option.series
let isSelected = !that.peiOption3D3D.series[params.seriesIndex].pieStatus.selected;
let isHovered = that.peiOption3D3D.series[params.seriesIndex].pieStatus.hovered;
let k = that.peiOption3D3D.series[params.seriesIndex].pieStatus.k;
let startRatio = that.peiOption3D3D.series[params.seriesIndex].pieData.startRatio;
let endRatio = that.peiOption3D3D.series[params.seriesIndex].pieData.endRatio;
// option
if (selectedIndex !== '' && selectedIndex !== params.seriesIndex) {
that.peiOption3D3D.series[selectedIndex].parametricEquation = that.getParametricEquation(that.peiOption3D3D.series[
selectedIndex].pieData
.startRatio, that.peiOption3D3D.series[selectedIndex].pieData.endRatio, false, false, k, that.peiOption3D3D.series[
selectedIndex].pieData
.value);
that.peiOption3D3D.series[selectedIndex].pieStatus.selected = false;
}
// / option
that.peiOption3D3D.series[params.seriesIndex].parametricEquation = that.getParametricEquation(startRatio, endRatio,
isSelected,
isHovered, k, that.peiOption3D3D.series[params.seriesIndex].pieData.value);
that.peiOption3D3D.series[params.seriesIndex].pieStatus.selected = isSelected;
// seriesIndex
isSelected ? selectedIndex = params.seriesIndex : null;
// 使 option
myChart.setOption(that.peiOption3D3D);
});
// mouseover
myChart.on('mouseover', function (params) {
//
let isSelected;
let isHovered;
let startRatio;
let endRatio;
let k;
// mouseover
if (hoveredIndex === params.seriesIndex) {
return;
//
} else {
// option
if (hoveredIndex !== '') {
// option.series false
isSelected = that.peiOption3D3D.series[hoveredIndex].pieStatus.selected;
isHovered = false;
startRatio = that.peiOption3D3D.series[hoveredIndex].pieData.startRatio;
endRatio = that.peiOption3D3D.series[hoveredIndex].pieData.endRatio;
k = that.peiOption3D3D.series[hoveredIndex].pieStatus.k;
// option
that.peiOption3D3D.series[hoveredIndex].parametricEquation = that.getParametricEquation(startRatio, endRatio,
isSelected,
isHovered, k, that.peiOption3D3D.series[hoveredIndex].pieData.value);
that.peiOption3D3D.series[hoveredIndex].pieStatus.hovered = isHovered;
// seriesIndex
hoveredIndex = '';
}
// mouseover option
if (params.seriesName !== 'mouseoutSeries' && params.seriesName !== 'pie2d') {
// option.series true
isSelected = that.peiOption3D3D.series[params.seriesIndex].pieStatus.selected;
isHovered = true;
startRatio = that.peiOption3D3D.series[params.seriesIndex].pieData.startRatio;
endRatio = that.peiOption3D3D.series[params.seriesIndex].pieData.endRatio;
k = that.peiOption3D3D.series[params.seriesIndex].pieStatus.k;
// option
that.peiOption3D3D.series[params.seriesIndex].parametricEquation = that.getParametricEquation(startRatio, endRatio,
isSelected, isHovered, k, that.peiOption3D3D.series[params.seriesIndex].pieData.value + 5);
that.peiOption3D3D.series[params.seriesIndex].pieStatus.hovered = isHovered;
// seriesIndex
hoveredIndex = params.seriesIndex;
}
// 使 option
myChart.setOption(that.peiOption3D3D);
}
});
// bug
myChart.on('globalout', function () {
//
let isSelected;
let isHovered;
let startRatio;
let endRatio;
let k;
if (hoveredIndex !== '') {
// option.series true
isSelected = that.peiOption3D3D.series[hoveredIndex].pieStatus.selected;
isHovered = false;
k = that.peiOption3D3D.series[hoveredIndex].pieStatus.k;
startRatio = that.peiOption3D3D.series[hoveredIndex].pieData.startRatio;
endRatio = that.peiOption3D3D.series[hoveredIndex].pieData.endRatio;
// option
that.peiOption3D3D.series[hoveredIndex].parametricEquation = that.getParametricEquation(startRatio, endRatio,
isSelected,
isHovered, k, that.peiOption3D3D.series[hoveredIndex].pieData.value);
that.peiOption3D3D.series[hoveredIndex].pieStatus.hovered = isHovered;
// seriesIndex
hoveredIndex = '';
}
// 使 option
myChart.setOption(that.peiOption3D3D);
});
},
//3d
getHeight3D(series, height) {
series.sort((a, b) => {
return (b.pieData.value - a.pieData.value);
})
return height * 15 / series[0].pieData.value;
},
},
components: {},
computed: {},
@ -50,6 +708,228 @@ export default {
display: flex;
flex-direction: column;
&-item-sjcl1 {
padding: 12px 26px 26px;
box-sizing: border-box;
>section {
display: flex;
.total {
flex: 1;
display: flex;
flex-direction: column;
align-items: left;
font-size: 18px;
color: #BDCEEA;
justify-content: center;
>span>b {
display: inline-block;
font-size: 24px;
color: #EBF2FA;
text-shadow: 0 0 2px #fff;
font-family: pangmenzhengdao;
letter-spacing: 6px;
margin: 16px 11px 0 0;
}
}
#chart {
width: 260px;
height: 110px;
}
}
.flex {
display: flex;
justify-content: space-around;
margin-top: 30px;
.item {
display: flex;
align-items: center;
.img {
width: 32px;
height: 32px;
}
div {
display: flex;
flex-direction: column;
:nth-child(1) {
font-family: pangmenzhengdao;
font-size: 20px;
font-weight: 400;
}
:nth-child(2) {
color: #B8D3F1;
margin-top: 12px;
}
}
}
}
}
&-item-sjcl2 {
padding: 16px 24px 19px 16px;
box-sizing: border-box;
>section {
position: relative;
#chart3D {
height: 150px;
width: 100%;
border-radius: 1px solid red;
z-index: 10;
}
.buttomCharts {
height: 95px;
width: 184px;
position: absolute;
top: 36px;
left: 6px;
background: center top url('~@/assets/images/common/peiBg.png') no-repeat;
background-size: 100% 100%;
}
}
.box {
display: flex;
.left {
width: 106px;
text-align: center;
>:nth-child(1)>.num::after {
background: url('~@/assets/images/icon/redBg.png') no-repeat;
}
>:nth-child(2)>.num::after {
background: url('~@/assets/images/icon/yellowBg.png') no-repeat;
}
>:nth-child(3)>.num::after {
background: url('~@/assets/images/icon/blueBg.png') no-repeat;
}
>.item {
display: flex;
flex-direction: column;
margin-bottom: 8px;
.num {
font-family: pangmenzhengdao;
font-size: 24px;
// background: linear-gradient(to left, transparent 0%, transparent 30%, #ff0000 50%, transparent 70%, transparent 100%),
// linear-gradient(to bottom, transparent 0%, transparent 50%, #ff0000 100%);
position: relative;
z-index: 10;
&::after {
content: '';
position: absolute;
left: 0;
top: -5px;
width: 106px;
height: 28px;
// background: url('~@/assets/images/icon/redBg.png') no-repeat;
background-size: 100% 100%;
}
}
.type {
font-size: 14px;
color: #DBE9FF;
}
}
}
.right {
background: url('~@/assets/images/index/peiBg.png') no-repeat;
background-size: 100% 100%;
flex: 1;
height: 160px;
display: flex;
flex-direction: column;
justify-content: space-between;
padding: 10px 18px;
box-sizing: border-box;
color: #BCD0F0;
position: relative;
.top,
.bot {
display: flex;
justify-content: space-between;
width: 100%;
>div {
display: flex;
flex-direction: column;
>:nth-child(1) {
font-size: 14px;
}
>:nth-child(2) {
font-size: 22px;
}
>:nth-child(3) {
font-size: 14px;
}
}
>:nth-child(2) {
text-align: right;
}
}
}
}
}
&-item-wwry {
display: flex;
flex-wrap: wrap;
padding: 16px;
.item {
display: flex;
justify-content: space-around;
align-items: center;
box-sizing: border-box;
margin-bottom: 20px;
.img {
width: 76px;
height: 68px;
}
>:nth-child(2) {
display: flex;
flex-direction: column;
:nth-child(1) {
font-family: pangmenzhengdao;
font-size: 20px;
font-weight: 400;
}
:nth-child(2) {
color: #B8D3F1;
font-size: 14px;
margin-top: 12px;
}
}
}
}
}
</style>

177
src/views/next/screen-content-map/cpt/szyf-map.vue

@ -0,0 +1,177 @@
<template>
<div style="width: 100% ;height: 100%;">
<div id="myMap">
<!-- <screen-map-header :data="headerList"></screen-map-header> -->
</div>
<div class="mapImage">
<div>事件处置流程图</div>
<img src="@/assets/images/map/flow.png" alt="">
</div>
</div>
</template>
<script>
import { Scene } from "@antv/l7";
import { GaodeMap } from "@antv/l7-maps";
import yifengJson from './yifeng.json';
import chinaMap from "./chinaMap.vue"
import { mapActions } from 'vuex'
let myMap;
let scene;
let roadLayer;
export default {
data() {
return {
darkStyle: {
style: "amap://styles/blue",
polygonColor: [
// "rgba(255, 100, 60, 0.5)",
// "rgba(43, 231, 253, 0.35)",
"rgba(0, 127, 241, .5)",
// "rgba(255, 255, 50, 0.35)",
],
lineColor: [
// "rgba(255, 180, 150, 0.9)",
// "rgba(43, 231, 253, 0.7)",
"rgba(0, 127, 241, .6)",
// "rgba(255, 255, 50, 0.7)",
],
circleColor: [
// "rgba(255, 180, 150, 0.99)",
// "rgba(43, 231, 253, 0.99)",
"rgba(0, 127, 241, 0.99)",
// "rgba(255, 255, 50, 0.99)",
],
textColor: [
// "rgba(255, 100, 60, 0.99)",
// "rgba(43, 231, 253, 0.99)",
"rgba(126, 187, 255, 1)",
// "rgba(255, 255, 50, 0.99)",
],
textStrokeColor: "#fff",
},
lightStyle: {
style: "amap://styles/whitesmoke",
polygonColor: [
// "rgba(255, 100, 60, 0.3)",
"rgba(43, 231, 253, 0.3)",
// "rgba(255, 255, 50, 0.3)",
],
lineColor: [
// "rgba(220, 150, 120, 0.9)",
"rgba(155, 212, 242, 1)",
// "rgba(200, 200, 50, 0.9)",
],
circleColor: [
// "rgba(255, 180, 150, 0.99)",
"rgba(13, 181, 203, 0.8)",
// "rgba(255, 255, 50, 0.99)",
],
textColor: [
// "rgba(200, 50, 10, 0.99)",
"rgba(0, 130, 153, 0.99)",
// "rgba(120, 120, 0, 0.99)",
],
textStrokeColor: "#666",
},
};
},
created() {
},
mounted() {
this.$nextTick(() => {
this.init();
})
},
methods: {
init() {
if (!yifengJson) return false;
myMap = new GaodeMap({
pitch: 40.24716321414439,
mapStyle: "amap://styles/darkblue",
// style: styleConfig.style,
showLabel: false,
center: [120.220563, 36.496127],
token: "fc14b42e0ca18387866d68ebd4f150c1",
zoom: 10,
isHotspot: false,
showIndoorMap: false,
showBuildingBlock: false,
resizeEnable: true,
doubleClickZoom: false,
showRoad: false,
viewMode: "3D",
});
scene = new Scene({
id: "myMap",
logoVisible: false,
map: myMap,
});
scene.on("loaded", () => {
});
},
},
components: { chinaMap },
computed: {},
watch: {},
}
</script>
<style lang="scss" scoped>
#myMap {
width: 100%;
height: 100%;
}
.mapImage {
display: flex;
flex-direction: column;
align-items: center;
width: 879px;
height: 647px;
position: absolute;
top: 50%;
left: 50%;
transform: translate(-439px, -323px);
div {
width: 371px;
height: 49px;
text-align: center;
background: url('~@/assets/images/map/headerBg.png') no-repeat;
background-size: 100% 100%;
color: #fff;
margin-bottom: 100px;
position: relative;
&::after {
content: '';
display: inline-block;
width: 58px;
height: 54px;
position: absolute;
top: 30px;
left: 43%;
background: url('~@/assets/images/map/down.png') no-repeat;
background-size: 100% 100%;
animation: moveUpDown 2s infinite;
}
}
}
@keyframes moveUpDown {
0% {
transform: translateY(0);
}
50% {
transform: translateY(10px);
}
100% {
transform: translateY(0);
}
}
</style>

59
src/views/next/screen-content-map/cpt/zdyf-map.vue

@ -24,7 +24,7 @@ import { GaodeMap } from "@antv/l7-maps";
import yifengJson from './yifeng.json';
import point from './point.json';
import chinaMap from "./chinaMap.vue"
import { mapActions } from 'vuex'
import { mapActions,mapGetters } from 'vuex'
let myMap;
let scene;
let circleLayerSmall;
@ -107,13 +107,9 @@ export default {
window._AMapSecurityConfig = {
securityJsCode: "92ea2c965c6cf1ba7ee3a8fe01449ef2",
};
let that = this
this.$nextTick(() => {
this.$EventBus.$on("switcMapType", (data) => {
that.switcMapType(data)
});
this.$EventBus.$on("clearMap", (data) => {
that.switcMapType(data)
this.switcMapType(data)
});
})
},
@ -131,7 +127,7 @@ export default {
}
this.mapFlag = 'Amap';
if (!myMap) {
await new Promise(resolve => setTimeout(resolve, 500));
await new Promise(resolve => setTimeout(resolve, 5000));
await this.init(type);
} else {
if (polygonLayer) {
@ -190,27 +186,18 @@ export default {
this.initPolygonLayer()
} else if (type == 'resource') {
this.initPolygonLayer(type)
}else if (type == 'szyf') {
this.initFlow(type)
}
});
scene.on("click", (feature) => {
// console.log(feature);
});
},
initCircle() {
//
// circleLayerSmall = new ImageLayer()
// .source('https://elink-esua-epdc.oss-cn-qingdao.aliyuncs.com/epmet/test/internal/20240117/345b5d3a72de49bc9d2c9d676aaa4804.png', {
// parser: {
// type: 'image',
// extent: [121.168, 30.2828, 121.384, 30.4219],
// },
// },
// )
// .shape("circle1")
circleLayerSmall = new ImageLayer({});
circleLayerSmall.source(
'/images/map/circle1.png',
`${process.env.VUE_APP_MAP_IMG}/circle1.png`,
{
parser: {
type: 'image',
@ -232,7 +219,7 @@ export default {
scene.setZoom(10)
roadLayer = new ImageLayer({});
roadLayer.source(
'/images/map/road1.png',
`${process.env.VUE_APP_MAP_IMG}/road1.png`,
{
parser: {
type: 'image',
@ -247,7 +234,35 @@ export default {
that.initPolygonLayer()
});
},
initFlow(){
if (circleLayerSmall) {
scene.removeLayer(circleLayerSmall);
}
if(roadLayer){
scene.removeLayer(roadLayer);
}
if(polygonLayer){
scene.removeLayer(polygonLayer);
}
scene.setZoom(10)
roadLayer = new ImageLayer({});
roadLayer.source(
'/images/map/flow.png',
{
parser: {
type: 'image',
extent: [119.7829, 36.7398, 120.5205, 36.2552]
}
}
);
scene.addLayer(roadLayer);
},
initPolygonLayer(type) {
if(type == 'szyf') {
this.initFlow()
return
}
if (roadLayer) {
scene.removeLayer(roadLayer);
}
@ -382,7 +397,9 @@ export default {
},
},
components: { chinaMap },
computed: {},
computed: {
...mapGetters(['navId',]),
},
watch: {},
}
</script>

4
src/views/next/screen-content-map/index.vue

@ -12,6 +12,8 @@ import szyfImg from './cpt/szyf-img.vue'
import homeMap from './cpt/home-map.vue'
import zdyfMap from './cpt/zdyf-map.vue'
import whyf from './cpt/whyf.vue'
import szyfMap from './cpt/szyf-map.vue'
export default {
name: 'screen-content-map',
@ -29,7 +31,7 @@ export default {
} else if (this.navId === 'sy') {
return homeMap
} else if (this.navId === 'szyf') {
return szyfImg
return szyfMap
} else if (this.navId === 'whyf') {
return whyf
}

335
src/views/next/screen-content-right/szyf-right/index.vue

@ -4,19 +4,37 @@
<screen-title>
<div slot="left" class="screen-title-left">服务事项分析</div>
</screen-title>
<div id="myChart" style="width:100%;height: 100%;"></div>
</div>
<div class='card h379' style="margin-top: 8px;">
<screen-title>
<div slot="left" class="screen-title-left">事件处理实况</div>
</screen-title>
<div class="card-item-sjcl">
<div class="item" v-for="(item, index) in monitorList" :key="index">
<img :src="item.src" alt="">
<span class="time">{{ item.time }}</span>
<div class="name">{{ item.name }}</div>
</div>
</div>
</div>
<div class='card h232 m-top12'>
<screen-title>
<div slot="left" class="screen-title-left">重点帮扶人员</div>
</screen-title>
<div class="card-item-zdyf">
<div class="card-item-zdbf">
<div class="item" v-for="item in stabilizeList" :key="item.name">
<div class="img">
<img :src="item.imgSrc" alt="">
</div>
<div>
<span>{{ item.num }}</span>
<span>{{ item.name }}</span>
</div>
</div>
<div class="item" style="margin-left: 41px;font-size: 20px;display: flex;justify-content: center;align-items: center;">
. . .
</div>
</div>
</div>
</div>
@ -26,17 +44,242 @@
export default {
data() {
return {
stabilizeList: [
{
imgSrc: require('@/assets/images/icon/cjr.png'),
num: 10,
name: '残疾人'
},
{
imgSrc: require('@/assets/images/icon/dbry.png'),
num: 97,
name: '低保人员'
},
{
imgSrc: require('@/assets/images/icon/dbry1.png'),
num: 34,
name: '大病人员'
},
{
imgSrc: require('@/assets/images/icon/gllr.png'),
num: 22,
name: '高龄老人'
},
{
imgSrc: require('@/assets/images/icon/tkry.png'),
num: 23,
name: '特困人员'
},
{
imgSrc: require('@/assets/images/icon/ylfn.png'),
num: 562,
name: '育龄妇女'
},
{
imgSrc: require('@/assets/images/icon/tyjr.png'),
num: 562,
name: '退役军人'
}
],
monitorList: [
{
src: require('@/assets/images/resource/whyf/7.jpg'),
time: '2022-07-12 12:00:00',
name: '预警监测',
},
{
src: require('@/assets/images/resource/whyf/9.jpg'),
time: '2022-07-12 12:00:00',
name: '预警监测',
},
{
src: require('@/assets/images/resource/whyf/10.jpg'),
time: '2022-07-12 12:00:00',
name: '预警监测',
},
{
src: require('@/assets/images/resource/whyf/11.jpg'),
time: '2022-07-12 12:00:00',
name: '预警监测',
}
]
};
},
created() {
},
mounted() {
this.$nextTick(() => {
this.initChart()
})
},
beforeDestroy() {
},
methods: {
initChart() {
let myChart = echarts.init(document.getElementById('myChart'));
let option = {
grid: {
left: '5%',
right: '5%',
top: '15%',
bottom: '5%',
containLabel: true,
},
xAxis: {
type: 'category',
axisLine: {
lineStyle: {
color: '#174489',
width: '3'
}
},
axisTick: {
show: false
},
axisLabel: {
show: true,
color: '#BDCEEA',
fontSize: '12'
},
data: ['社会保障', '生产许可', '户籍', '就业', 'xxx', '其他']
},
title: {
text: '件',
textStyle: {
color: '#ACBBD4',
fontWeight: '800',
fontSize: 14,
},
left: '18px',
top: '1%',
},
yAxis: {
show: true,
name: '',
nameTextStyle: {
color: ' #ACBBD4',
fontSize: '14',
},
splitLine: {
show: false
},
axisLabel: {
show: true,
color: '#ACBBD4',
fontSize: '14'
},
axisLine: {
show: false,
}
},
series: [{
name: 'leftA',
type: 'bar',
barWidth: 10,
itemStyle: {
normal: {
color: {
type: 'linear',
x: 0,
y: 0,
x2: 0,
y2: 1,
colorStops: [
{ offset: 1, color: 'rgb(83, 180, 255,0)' }, //
{ offset: 0, color: '#5098fb' } //
]
},
barBorderRadius: [0, 0, 0, 0],
}
},
data: [220, 182, 191, 234, 290, 330]
},
{
name: 'rightA',
tooltip: {
show: false
},
type: 'bar',
barWidth: 10,
itemStyle: {
normal: {
color: {
type: 'linear',
x: 0,
y: 0,
x2: 0,
y2: 1,
colorStops: [
{ offset: 1, color: 'rgb(83, 180, 255,0)' }, //
{ offset: 0, color: '#207dfb' } //
]
},
barBorderRadius: [0, 0, 0, 0],
}
},
data: [220, 182, 191, 234, 290, 330],
barGap: 0
},
{
name: 'topA',
tooltip: {
show: false
},
type: 'pictorialBar',
itemStyle: {
normal: {
color: '#53b4ff',
// borderWidth: 1,
// borderColor: '#00183F',
opacity: '1',
shadowColor: 'rgb(0,0,0,0.1)',
shadowOffsetX: '0.5',
shadowOffsetY: '0.5'
}
},
label: {
show: false,
color: '#04F9FD',
offset: [0, 0],
position: 'top',
fontSize: '16',
fontWeight: 'normal'
},
symbol: 'diamond',
symbolRotate: 0,
symbolSize: ['25', '12'],
symbolOffset: ['0', '-8'],
symbolPosition: 'end',
data: [220, 182, 191, 234, 290, 330],
z: 3
},
{
//
type: "pictorialBar",
itemStyle: {
normal: {
color: "#174489"
}
},
symbolRepeat: "fixed",
symbolMargin: 2,
symbol: "rect",
symbolClip: true,
symbolSize: [60, 2],
symbolPosition: "start",
symbolOffset: [3, -4],
symbolBoundingData: [350, 350, 350, 350, 350, 350,],
data: [350, 350, 350, 350, 350, 350,],
z: 1,
animationEasing: "elasticOut",
},
]
}
myChart.setOption(option);
}
},
components: {},
computed: {},
@ -50,6 +293,82 @@ export default {
display: flex;
flex-direction: column;
}
</style>
&-item-zdbf {
height: 100%;
display: flex;
flex-wrap: wrap;
padding: 0 16px 16px 0;
.item {
display: flex;
justify-content: space-around;
align-items: center;
box-sizing: border-box;
margin-left: 18px;
.img {
width: 36px;
height: 36px;
margin-right: 4px;
}
>:nth-child(2) {
display: flex;
flex-direction: column;
justify-content: space-between;
:nth-child(1) {
font-family: pangmenzhengdao;
font-size: 20px;
font-weight: 400;
}
:nth-child(2) {
color: #B8D3F1;
font-size: 14px;
}
}
}
}
&-item-sjcl {
display: flex;
flex-wrap: wrap;
padding: 16px 8px 8px 16px;
box-sizing: border-box;
.item {
margin: 0 8px 8px 0;
width: 210px;
height: 146px;
position: relative;
img {
width: 100%;
height: 100%;
}
.time{
position: absolute;
top: 2px;
left: 7px;
color: #fff;
font-size: 10px;
}
.name{
width: 100%;
height: 20px;
line-height: 20px;
box-sizing: border-box;
padding-left: 10px;
position: absolute;
bottom: 0px;
left: 0px;
color: #fff;
background: rgba(0,0,0,0.6);
font-size: 12px;
color: #BDCEEA;
}
}
}
}</style>

Loading…
Cancel
Save