Merge pull request 'lukeyan' (#123) from lukeyan into master

Reviewed-on: #123
pull/125/head
lukeyan 1 year ago
commit 0b88cd9da7

27
package-lock.json generated

@ -16,6 +16,8 @@
"echarts": "^5.4.2",
"echarts-gl": "^2.0.9",
"element-ui": "^2.15.13",
"highcharts": "^11.1.0",
"highcharts-vue": "^1.4.3",
"js-cookie": "^3.0.1",
"less": "3.9.0",
"less-loader": "7",
@ -8507,6 +8509,20 @@
"dev": true,
"license": "MIT"
},
"node_modules/highcharts": {
"version": "11.1.0",
"resolved": "https://registry.npmjs.org/highcharts/-/highcharts-11.1.0.tgz",
"integrity": "sha512-vhmqq6/frteWMx0GKYWwEFL25g4OYc7+m+9KQJb/notXbNtIb8KVy+ijOF7XAFqF165cq0pdLIePAmyFY5ph3g=="
},
"node_modules/highcharts-vue": {
"version": "1.4.3",
"resolved": "https://registry.npmjs.org/highcharts-vue/-/highcharts-vue-1.4.3.tgz",
"integrity": "sha512-qIy9EFuLIgOw+reNkTvu0pvMBcSE0BAPtONAqZoEl0qaAIpGxiyXqhRNPDufWieSC0YlybpCznxE8EK19Kcg+A==",
"peerDependencies": {
"highcharts": ">=5.0.0",
"vue": ">=1.0.0"
}
},
"node_modules/highlight.js": {
"version": "10.7.3",
"resolved": "https://registry.npmmirror.com/highlight.js/-/highlight.js-10.7.3.tgz",
@ -22464,6 +22480,17 @@
"integrity": "sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==",
"dev": true
},
"highcharts": {
"version": "11.1.0",
"resolved": "https://registry.npmjs.org/highcharts/-/highcharts-11.1.0.tgz",
"integrity": "sha512-vhmqq6/frteWMx0GKYWwEFL25g4OYc7+m+9KQJb/notXbNtIb8KVy+ijOF7XAFqF165cq0pdLIePAmyFY5ph3g=="
},
"highcharts-vue": {
"version": "1.4.3",
"resolved": "https://registry.npmjs.org/highcharts-vue/-/highcharts-vue-1.4.3.tgz",
"integrity": "sha512-qIy9EFuLIgOw+reNkTvu0pvMBcSE0BAPtONAqZoEl0qaAIpGxiyXqhRNPDufWieSC0YlybpCznxE8EK19Kcg+A==",
"requires": {}
},
"highlight.js": {
"version": "10.7.3",
"resolved": "https://registry.npmmirror.com/highlight.js/-/highlight.js-10.7.3.tgz",

@ -16,6 +16,8 @@
"echarts": "^5.4.2",
"echarts-gl": "^2.0.9",
"element-ui": "^2.15.13",
"highcharts": "^11.1.0",
"highcharts-vue": "^1.4.3",
"js-cookie": "^3.0.1",
"less": "3.9.0",
"less-loader": "7",

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 367 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 64 KiB

@ -1,202 +1,222 @@
<template>
<div>
<div class="bmap" id="container" ref="container"></div>
<el-button class="fanhui" @click="goBack" v-if="isGoBack"></el-button>
</div>
<div>
<div class="bmap" id="container" ref="container"></div>
<el-button class="fanhui" @click="goBack" v-if="isGoBack"></el-button>
</div>
</template>
<script>
import MapLine from "../../../public/zhenhaiLine.json"
import MapPoint from "../../../public/zhenhaiPoint.json"
import styleJson from "../../../public/custom_map_config.json"
import { topMap, topMapOne } from '@/api/offLineMap'
import MapLine from "../../../public/zhenhaiLine.json";
import MapPoint from "../../../public/zhenhaiPoint.json";
import styleJson from "../../../public/custom_map_config.json";
import { topMap, topMapOne } from "@/api/offLineMap";
export default {
name: 'zhenhaimap',
data() {
return {
dongtaiPoint: [121.604192, 29.971189],
isGoBack: false,
villageList: [],
villageSumList: [],
flag: true,
companyList: [],
label1: {}
}
},
mounted() {
topMap({ scoreType: 'season' }).then(res => {
this.companyList = res.data
this.initMap()
})
name: "zhenhaimap",
data() {
return {
dongtaiPoint: [121.604192, 29.971189],
isGoBack: false,
villageList: [],
villageSumList: [],
flag: true,
companyList: [],
label1: {},
};
},
mounted() {
topMap({ scoreType: "season" }).then((res) => {
this.companyList = res.data;
this.initMap();
});
},
methods: {
goBack() {
this.initMap();
this.isGoBack = false;
this.$emit("goBack");
},
methods: {
goBack() {
this.initMap()
this.isGoBack = false
this.$emit('goBack')
initMap() {
var BMap = window.BMap;
// console.log(BMap, 'BMap');
var map = new BMap.Map("container", {
style: {
styleJson,
},
initMap() {
var BMap = window.BMap
// console.log(BMap, 'BMap');
var map = new BMap.Map('container', {
style: {
styleJson
}
});
let that = this
map.centerAndZoom(new BMap.Point(this.dongtaiPoint[0], this.dongtaiPoint[1]), 12);
map.setMinZoom(12)
map.setMaxZoom(19)
map.enableScrollWheelZoom(true);
// hjrequest({
// url: '/yc/dt/statistical/village',
// method: 'get',
// params: { areaCode: that.areaCode }
// }).then((res) => {
// that.villageSumList = res.data
// })
// console.log(MapLine, 'MapLine');
for (var i = 0, n = MapLine.features.length; i < n; i++) {
showBoundaryEx(MapLine.features[i]);
});
let that = this;
map.centerAndZoom(
new BMap.Point(this.dongtaiPoint[0], this.dongtaiPoint[1]),
12
);
map.setMinZoom(12);
map.setMaxZoom(19);
map.enableScrollWheelZoom(true);
// hjrequest({
// url: '/yc/dt/statistical/village',
// method: 'get',
// params: { areaCode: that.areaCode }
// }).then((res) => {
// that.villageSumList = res.data
// })
// console.log(MapLine, 'MapLine');
for (var i = 0, n = MapLine.features.length; i < n; i++) {
showBoundaryEx(MapLine.features[i]);
}
var label = new BMap.Label();
showPoint();
function showBoundaryEx(city) {
var paths = [];
var list = city.geometry.coordinates;
// console.log(list.length, 'list[0].length')
//console.log(list[1], 'list[1].length')
var polygon = {};
if (list.length > 1) {
for (let a = 0; a < list.length; a++) {
paths = [];
for (let i = 0; i < list[a][0].length; i++) {
let lat = list[a][0][i][1],
lng = list[a][0][i][0];
paths.push(new BMap.Point(lng, lat));
}
var label = new BMap.Label();
showPoint()
function showBoundaryEx(city) {
var paths = []
var list = city.geometry.coordinates
// console.log(list.length, 'list[0].length')
//console.log(list[1], 'list[1].length')
var polygon = {}
if (list.length > 1) {
for (let a = 0; a < list.length; a++) {
paths = []
for (let i = 0; i < list[a][0].length; i++) {
let lat = list[a][0][i][1],
lng = list[a][0][i][0];
paths.push(new BMap.Point(lng, lat));
}
polygon = new BMap.Polygon(paths, {
fillColor: '#3b4c44',
strokeColor: "#0f1423",
fillOpacity: 0.6,
strokeWeight: 1
}); //
map.addOverlay(polygon); //
}
// // console.log(list, 'length');
} else {
// console.log(list[0], ' list[0]');
for (let i = 0; i < list[0].length; i++) {
let lat = list[0][i][1],
lng = list[0][i][0];
paths.push(new BMap.Point(lng, lat));
}
// console.log(list, 'length');
polygon = new BMap.Polygon(paths, {
fillColor: '#3b4c44',
strokeColor: "#0f1423",
fillOpacity: 0.6,
strokeWeight: 1
}); //
map.addOverlay(polygon); //
}
polygon.infowindow = new BMap.InfoWindow();
polygon.infowindow.name = city.properties.name;
polygon.addEventListener("mouseover", function () {
polygon.setFillColor("#ffa500");
});
polygon.addEventListener("mouseout", function () {
map.removeOverlay(label);
polygon.setFillColor('#3b4c44');
});
//"mouseover","mouseout",,. click
polygon.addEventListener("click", function () {
console.log(city.properties.name, 'city.properties.name');
if (city.properties.name == '骆驼街道') {
map.centerAndZoom(new BMap.Point(121.58887, 29.986122), 15);
that.isGoBack = true
} else if (city.properties.name == '招宝山街道') {
map.centerAndZoom(new BMap.Point(121.713707, 29.95656), 15);
that.isGoBack = true
} else if (city.properties.name == '蛟川街道') {
map.centerAndZoom(new BMap.Point(121.686105, 29.947339), 15);
that.isGoBack = true
} else if (city.properties.name == '庄市街道') {
map.centerAndZoom(new BMap.Point(121.627037, 29.925579), 15);
that.isGoBack = true
} else if (city.properties.name == '贵驷街道') {
map.centerAndZoom(new BMap.Point(121.624142, 29.985606), 15);
that.isGoBack = true
} else if (city.properties.name == '澥浦镇') {
map.centerAndZoom(new BMap.Point(121.607133, 30.037162), 15);
that.isGoBack = true
} else if (city.properties.name == '九龙湖镇') {
map.centerAndZoom(new BMap.Point(121.558532, 30.039457), 15);
that.isGoBack = true
}
// let streetCode = that.streetCodeList.filter((item) => {
// if (item.areaName == city.properties.name) {
// return item.areaCode
// }
// });
// let goStreetData = { areaCode: that.areaCode, streetCode: streetCode[0].areaCode }
// that.$emit('goStreet', streetCode[0].areaCode)
// hjrequest({
// url: '/yc/dt/statistical/villages',
// method: 'get',
// params: goStreetData
// }).then((res) => {
// that.villageList = res.data
// that.villageList.forEach((item) => {
// var point = new BMap.Point(item.longitude, item.latitude);
// var marker = new BMap.Marker(point); //
// map.addOverlay(marker);
// var content = item.villageName;
// var label = new BMap.Label(content, { //
// position: point, //
// offset: new BMap.Size(-10, -50) //
// })
// label.setStyle({ backgroundColor: ' rgba(0, 0, 0, 0)', border: '0', color: 'yellow', fontSize: '20px' })
// map.addOverlay(label);
// marker.addEventListener("click", function () {
// // Cookies.set('village_current', item.villageCode)
// window.open(window.location.origin + '/#/communityShow', '_blank');
// });
// })
// })
polygon = new BMap.Polygon(paths, {
fillColor: "#3b4c44",
strokeColor: "#0f1423",
fillOpacity: 0.6,
strokeWeight: 1,
}); //
map.addOverlay(polygon); //
}
// // console.log(list, 'length');
} else {
// console.log(list[0], ' list[0]');
for (let i = 0; i < list[0].length; i++) {
let lat = list[0][i][1],
lng = list[0][i][0];
paths.push(new BMap.Point(lng, lat));
}
// console.log(list, 'length');
polygon = new BMap.Polygon(paths, {
fillColor: "#3b4c44",
strokeColor: "#0f1423",
fillOpacity: 0.6,
strokeWeight: 1,
}); //
map.addOverlay(polygon); //
}
polygon.infowindow = new BMap.InfoWindow();
polygon.infowindow.name = city.properties.name;
polygon.addEventListener("mouseover", function () {
polygon.setFillColor("#ffa500");
});
polygon.addEventListener("mouseout", function () {
map.removeOverlay(label);
polygon.setFillColor("#3b4c44");
});
//"mouseover","mouseout",,. click
polygon.addEventListener("click", function () {
console.log(city.properties.name, "city.properties.name");
if (city.properties.name == "骆驼街道") {
map.centerAndZoom(new BMap.Point(121.58887, 29.986122), 15);
that.isGoBack = true;
} else if (city.properties.name == "招宝山街道") {
map.centerAndZoom(new BMap.Point(121.713707, 29.95656), 15);
that.isGoBack = true;
} else if (city.properties.name == "蛟川街道") {
map.centerAndZoom(new BMap.Point(121.686105, 29.947339), 15);
that.isGoBack = true;
} else if (city.properties.name == "庄市街道") {
map.centerAndZoom(new BMap.Point(121.627037, 29.925579), 15);
that.isGoBack = true;
} else if (city.properties.name == "贵驷街道") {
map.centerAndZoom(new BMap.Point(121.624142, 29.985606), 15);
that.isGoBack = true;
} else if (city.properties.name == "澥浦镇") {
map.centerAndZoom(new BMap.Point(121.607133, 30.037162), 15);
that.isGoBack = true;
} else if (city.properties.name == "九龙湖镇") {
map.centerAndZoom(new BMap.Point(121.558532, 30.039457), 15);
that.isGoBack = true;
}
// let streetCode = that.streetCodeList.filter((item) => {
// if (item.areaName == city.properties.name) {
// return item.areaCode
// }
// });
// let goStreetData = { areaCode: that.areaCode, streetCode: streetCode[0].areaCode }
// that.$emit('goStreet', streetCode[0].areaCode)
// hjrequest({
// url: '/yc/dt/statistical/villages',
// method: 'get',
// params: goStreetData
// }).then((res) => {
// that.villageList = res.data
// that.villageList.forEach((item) => {
// var point = new BMap.Point(item.longitude, item.latitude);
// var marker = new BMap.Marker(point); //
// map.addOverlay(marker);
// var content = item.villageName;
// var label = new BMap.Label(content, { //
// position: point, //
// offset: new BMap.Size(-10, -50) //
// })
// label.setStyle({ backgroundColor: ' rgba(0, 0, 0, 0)', border: '0', color: 'yellow', fontSize: '20px' })
// map.addOverlay(label);
// marker.addEventListener("click", function () {
// // Cookies.set('village_current', item.villageCode)
// window.open(window.location.origin + '/#/communityShow', '_blank');
// });
// })
// })
that.companyList.forEach((item) => {
var point = new BMap.Point(item.longitude, item.latitude);
console.log(point, 'point123');
var marker = new BMap.Marker(point); //
map.addOverlay(marker);
var content = item.companyName;
var label = new BMap.Label(content, { //
position: point, //
offset: new BMap.Size(-10, -50) //
})
label.setStyle({ backgroundColor: ' rgba(0, 0, 0, 0)', border: '0', color: '#0060ce', fontSize: '16px' })
map.addOverlay(label);
label.addEventListener("click", function () {
map.removeOverlay(that.label1);
topMapOne({ companyId: item.companyId, companyName: item.companyName }).then(res => {
that.label1 = new BMap.Label();
that.label1.setStyle({
color: 'blue',
borderRadius: '5px',
borderColor: '#ccc',
padding: '10px',
fontSize: '16px',
fontFamily: '微软雅黑',
transform: 'translateX(-50%) translateY(calc(-100% - 10px))'
});
that.companyList.forEach((item) => {
var point = new BMap.Point(item.longitude, item.latitude);
console.log(point, "point123");
var marker = new BMap.Marker(point); //
map.addOverlay(marker);
var content = item.companyName;
var label = new BMap.Label(content, {
//
position: point, //
offset: new BMap.Size(-10, -50), //
});
label.setStyle({
backgroundColor: " rgba(0, 0, 0, 0)",
border: "0",
color: "#409EFF",
fontSize: "16px",
});
map.addOverlay(label);
label.addEventListener("click", function () {
map.removeOverlay(that.label1);
topMapOne({
companyId: item.companyId,
companyName: item.companyName,
}).then((res) => {
that.label1 = new BMap.Label();
that.label1.setStyle({
color: "blue",
borderRadius: "5px",
borderColor: "#ccc",
padding: "10px",
fontSize: "16px",
fontFamily: "微软雅黑",
transform: "translateX(-50%) translateY(calc(-100% - 10px))",
});
that.label1.setPosition(new BMap.Point(item.longitude, item.latitude));
that.label1.setOffset(new BMap.Size(130, -10))
that.label1.setStyle({ width: '372px', height: '242px', background: 'url(pbImg/bz49.png) no-repeat', backgroundSize: '100% 100%', border: '0', color: '#fff', padding: '13px 20px' })
that.label1.setContent(`
that.label1.setPosition(
new BMap.Point(item.longitude, item.latitude)
);
that.label1.setOffset(new BMap.Size(130, -10));
that.label1.setStyle({
width: "372px",
height: "242px",
background: "url(pbImg/bz49.png) no-repeat",
backgroundSize: "100% 100%",
border: "0",
color: "#fff",
padding: "13px 20px",
});
that.label1.setContent(`
<div style='width:100%;display:flex;justify-content: space-between;align-items: center;border-bottom:1px solid #657E83;'> <h4 style='margin:12px;font-size: 14px;color: #EBFFF4;letter-spacing: 1px;line-height: 24px;text-shadow: 0 0 9px rgba(21,255,195,0.77);overflow: hidden;text-overflow: ellipsis;white-space: nowrap;'>${res.data.companyName}</h4><div class='closeBtn' style='font-size: 14px;color: #30C4FF;letter-spacing: 1px;font-weight: 400;'>企业看板<i style='display:inline-block; background: url(pbImg/跳转.png) no-repeat;width:16px;height:14px;background-size: 100% 100%;"'></i></div><div class='closeBtn1' style='background: url(pbImg/.png) no-repeat;width:20px;height:20px;background-size: 100% 100%;position:relative;z-index:200000000;
margin-top:-15px;"'></div></div>
<div style='height:70px;width:100%;margin-top:15px;background: url(pbImg/编组.png);display:flex;justify-content: space-around;align-items: center;'>
@ -244,78 +264,75 @@ export default {
</div>
</div>
`);
map.addOverlay(that.label1);
let closebtn = document.querySelector('.closeBtn')
let closeBtn1 = document.querySelector('.closeBtn1')
closeBtn1.addEventListener('click', () => {
map.removeOverlay(that.label1);
})
//console.log(btn, 'btn');
closebtn.addEventListener('click', () => {
that.$emit('toArchives', item)
map.removeOverlay(that.label1);
})
})
});
})
polygon.removeEventListener('mousemove')
map.addOverlay(that.label1);
let closebtn = document.querySelector(".closeBtn");
let closeBtn1 = document.querySelector(".closeBtn1");
closeBtn1.addEventListener("click", () => {
map.removeOverlay(that.label1);
});
}
function showPoint() {
console.log(MapPoint, 'MapPoint');
for (let i = 0; i < MapPoint.features.length; i++) {
var opts = {
position: new BMap.Point(MapPoint.features[i].geometry.coordinates[0], MapPoint.features[i].geometry.coordinates[1]), //
offset: new BMap.Size(-30, -30) //
};
//
var label1 = new BMap.Label(MapPoint.features[i].properties.name, opts);
//
label1.setStyle({
color: 'orange',
borderRadius: '5px',
borderColor: '#ccc',
padding: '10px',
fontSize: '16px',
height: '20px',
lineHeight: '20px',
backgroundColor: 'rgba(0,0,0,0)',
border: '0',
fontFamily: '微软雅黑'
});
map.addOverlay(label1);
}
}
},
}
}
//console.log(btn, 'btn');
closebtn.addEventListener("click", () => {
that.$emit("toArchives", item);
map.removeOverlay(that.label1);
});
});
});
});
polygon.removeEventListener("mousemove");
});
}
function showPoint() {
console.log(MapPoint, "MapPoint");
for (let i = 0; i < MapPoint.features.length; i++) {
var opts = {
position: new BMap.Point(
MapPoint.features[i].geometry.coordinates[0],
MapPoint.features[i].geometry.coordinates[1]
), //
offset: new BMap.Size(-30, -30), //
};
//
var label1 = new BMap.Label(
MapPoint.features[i].properties.name,
opts
);
//
label1.setStyle({
color: "orange",
borderRadius: "5px",
borderColor: "#ccc",
padding: "10px",
fontSize: "16px",
height: "20px",
lineHeight: "20px",
backgroundColor: "rgba(0,0,0,0)",
border: "0",
fontFamily: "微软雅黑",
});
map.addOverlay(label1);
}
}
},
},
};
</script>
<style scoped lang="less">
.bmap {
width: 100%;
height: 100%;
border: 1px solid #000000;
width: 100%;
height: 100%;
border: 1px solid #000000;
}
.fanhui {
display: inline-block;
width: 50px;
height: 20px;
position: absolute;
left: 49%;
bottom: 30px;
display: flex;
justify-content: center;
align-items: center;
z-index: 50;
display: inline-block;
width: 50px;
height: 20px;
position: absolute;
left: 49%;
bottom: 30px;
display: flex;
justify-content: center;
align-items: center;
z-index: 50;
}
</style>

@ -17,6 +17,12 @@ export default {
visible: false,
};
},
methods:{
//
opne_dialog() {
},
},
};
</script>
<style lang="less" scoped>

@ -1,6 +1,10 @@
import Vue from 'vue'
import App from './App.vue'
import ElementUI from 'element-ui';
import HighchartsVue from 'highcharts-vue'
import highcharts from 'highcharts'
import highcharts3d from 'highcharts/highcharts-3d'
highcharts3d(highcharts)
import 'element-ui/lib/theme-chalk/index.css';
import router from './router'
import store from './store'
@ -9,7 +13,8 @@ import erupload from "./components/upload";
import lkyTable from "./components/publicModule/lkyTable" // 本组件样式包含普通表格、分页
import lkyPagination from "./components/publicModule/lkyPagination" // 本组件单独抽离分页样式
Vue.use(ElementUI);
Vue.use(Message)
Vue.use(Message);
Vue.use(HighchartsVue)
Vue.component('erupload', erupload)
Vue.component('lkyTable', lkyTable)
Vue.component('lkyPagination',lkyPagination)

@ -18,11 +18,16 @@ const routes = [
name: 'home',
component: () => import('@/views/head'),
children: [
// 待用首页
{
path: 'compositeIndex',
name: 'compositeIndex',
component: () => import('@/views/compositeIndex'),
},
{
path: 'enterpriseArchives',
name: 'enterpriseArchives',
component: () => import('@/views/enterpriseArchives'),
},
{
path: 'archives',

@ -1,29 +1,29 @@
<!-- 应用超市 -->
<!-- 安商惠企 -->
<template>
<div class="supermarket_body">
<div class="supermarket_title">
<div class="supermarket_title_01" @click="back_list"></div>
<div v-if="is_flag != '0'" class="supermarket_title_02">>>人员背景审</div>
<div class="supermarket_title_01" @click="back_list"></div>
<div v-if="is_flag != '0'" class="supermarket_title_02">>>人员背景审</div>
</div>
<div class="supermarket_list">
<div v-if="is_flag === '0'" class="list_boxs">
<!-- 人员背景审 -->
<!-- 人员背景审 -->
<div class="list_box person_back" @click="person_back_change">
<div class="person_back_icon_box">
<!-- 遮罩层 负责旋转动画 -->
<div class="green_mark turn"></div>
<div class="person_back_icon"></div>
</div>
<div class="person_back_text">人员背景审</div>
<div class="person_back_text">人员背景审</div>
</div>
<!-- 重点人员核查 -->
<!-- 重点岗位审核 -->
<div class="list_box key_person">
<div class="key_person_icon_box">
<!-- 遮罩层 负责旋转动画 -->
<div class="green_mark turn"></div>
<div class="key_person_icon"></div>
</div>
<div class="key_person_text">重点人员核查</div>
<div class="key_person_text">重点岗位审核</div>
</div>
<!-- 警情通报 -->
<div class="list_box key_item">
@ -34,59 +34,59 @@
</div>
<div class="key_item_text">警情通报</div>
</div>
<!-- 企业纠纷调解 -->
<!-- 道路拥堵提醒 -->
<div class="list_box company_dispute">
<div class="company_dispute_icon_box">
<!-- 遮罩层 负责旋转动画 -->
<div class="blue_mark turn"></div>
<div class="company_dispute_icon"></div>
</div>
<div class="company_dispute_text">企业纠纷调解</div>
<div class="company_dispute_text">道路拥堵提醒</div>
</div>
<!-- 企业通知公告 -->
<!-- 网络反诈提醒 -->
<div class="list_box company_notification">
<div class="company_notification_icon_box">
<!-- 遮罩层 负责旋转动画 -->
<div class="yellow_mark turn"></div>
<div class="company_notification_icon"></div>
</div>
<div class="company_notification_text">企业通知公告</div>
<div class="company_notification_text">网络反诈提醒</div>
</div>
<!-- 专家智库 -->
<!-- 企业纠纷提醒 -->
<div class="list_box expert_library">
<div class="expert_library_icon_box">
<!-- 遮罩层 负责旋转动画 -->
<div class="yellow_mark turn"></div>
<div class="expert_library_icon"></div>
</div>
<div class="expert_library_text">专家智库</div>
<div class="expert_library_text">企业纠纷提醒</div>
</div>
<!-- 企业法律法规 -->
<!-- 业务咨询 -->
<div class="list_box law_regulations">
<div class="law_regulations_icon_box">
<!-- 遮罩层 负责旋转动画 -->
<div class="green_mark turn"></div>
<div class="law_regulations_icon"></div>
</div>
<div class="law_regulations_text">企业法律法规</div>
<div class="law_regulations_text">业务咨询</div>
</div>
<!-- 行业协会 -->
<!-- 法律咨询 -->
<div class="list_box association">
<div class="association_icon_box">
<!-- 遮罩层 负责旋转动画 -->
<div class="green_mark turn"></div>
<div class="association_icon"></div>
</div>
<div class="association_text">行业协会</div>
<div class="association_text">法律咨询</div>
</div>
<!-- 统计报表 -->
<!-- 证照办理 -->
<div class="list_box statement">
<div class="statement_icon_box">
<!-- 遮罩层 负责旋转动画 -->
<div class="blue_mark turn"></div>
<div class="statement_icon"></div>
</div>
<div class="statement_text">统计报表</div>
<div class="statement_text">证照办理</div>
</div>
<!-- 企业反馈 -->
<div class="list_box target">
@ -118,7 +118,7 @@ export default {
};
},
methods: {
//
//
back_list() {
this.is_flag = '0'
},
@ -287,7 +287,7 @@ export default {
width: 50px;
height: 50px;
margin: 50px auto;
background: url("~@/assets/companyFile/icon03.png") no-repeat !important;
background: url("~@/assets/companyFile/icon04.png") no-repeat !important;
background-size: 100% 100% !important;
}
}
@ -332,7 +332,7 @@ export default {
width: 50px;
height: 50px;
margin: 50px auto;
background: url("~@/assets/companyFile/icon04.png") no-repeat !important;
background: url("~@/assets/companyFile/icon11.png") no-repeat !important;
background-size: 100% 100% !important;
}
}
@ -467,7 +467,7 @@ export default {
width: 50px;
height: 50px;
margin: 50px auto;
background: url("~@/assets/companyFile/icon07.png") no-repeat !important;
background: url("~@/assets/companyFile/icon08.png") no-repeat !important;
background-size: 100% 100% !important;
}
}
@ -512,7 +512,7 @@ export default {
width: 50px;
height: 50px;
margin: 50px auto;
background: url("~@/assets/companyFile/icon08.png") no-repeat !important;
background: url("~@/assets/companyFile/icon07.png") no-repeat !important;
background-size: 100% 100% !important;
}
}
@ -557,7 +557,7 @@ export default {
width: 50px;
height: 50px;
margin: 50px auto;
background: url("~@/assets/companyFile/icon09.png") no-repeat !important;
background: url("~@/assets/companyFile/icon10.png") no-repeat !important;
background-size: 100% 100% !important;
}
}
@ -602,7 +602,7 @@ export default {
width: 50px;
height: 50px;
margin: 50px auto;
background: url("~@/assets/companyFile/icon10.png") no-repeat !important;
background: url("~@/assets/companyFile/icon09.png") no-repeat !important;
background-size: 100% 100% !important;
}
}

@ -3,7 +3,7 @@
<div class="topZS"></div>
<div class="title">
企业员工<span>{{ total }}</span
>
>)
</div>
<el-form :model="formInline" class="search">
<el-form-item label="员工姓名:" class="formItem">

@ -0,0 +1,287 @@
/**
* 绘制3d图
* @param pieData 总数据
* @param internalDiameterRatio:透明的空心占比
* @param distance 视角到主体的距离
* @param alpha 旋转角度
* @param pieHeight 立体的高度
* @param opacity 饼或者环的透明度
*/
const getPie3D = (
pieData,
internalDiameterRatio,
distance,
alpha,
pieHeight,
opacity = 1
) => {
const series = [];
let sumValue = 0;
let startValue = 0;
let endValue = 0;
let legendData = [];
let legendBfb = [];
const 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;
const 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: ["10%", "50%"],
};
if (typeof pieData[i].itemStyle !== "undefined") {
const itemStyle = {};
itemStyle.color =
typeof pieData[i].itemStyle.color !== "undefined"
? pieData[i].itemStyle.color
: opacity;
itemStyle.opacity =
typeof pieData[i].itemStyle.opacity !== "undefined"
? pieData[i].itemStyle.opacity
: opacity;
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 = getParametricEquation(
series[i].pieData.startRatio,
series[i].pieData.endRatio,
false,
false,
k,
series[i].pieData.value
);
startValue = endValue;
const bfb = fomatFloat(series[i].pieData.value / sumValue, 4);
legendData.push({
name: series[i].name,
value: bfb,
});
legendBfb.push({
name: series[i].name,
value: bfb,
});
}
const boxHeight = getHeight3D(series, pieHeight); // 通过pieHeight设定3d饼/环的高度单位是px
// 准备待返回的配置项,把准备好的 legendData、series 传入。
const option = {
legend: {
show: false,
data: legendData,
orient: "vertical",
left: 10,
top: 10,
itemGap: 10,
textStyle: {
color: "#A1E2FF",
},
icon: "circle",
formatter: function (param) {
const item = legendBfb.filter((item) => item.name === param)[0];
const bfs = fomatFloat(item.value * 100, 2) + "%";
return `${item.name} ${bfs}`;
},
},
labelLine: {
show: true,
lineStyle: {
color: "#fff",
},
},
label: {
show: true,
position: "outside",
formatter: "{b} \n{c} {d}%",
},
tooltip: {
backgroundColor: "#033b77",
borderColor: "#21f2c4",
textStyle: {
color: "#fff",
fontSize: 13,
},
formatter: (params) => {
if (
params.seriesName !== "mouseoutSeries" &&
params.seriesName !== "信用评价"
) {
// console.log(option.series,params.seriesName,'option.series[params.seriesIndex].pieData');
const 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,
},
grid3D: {
show: false,
boxHeight: boxHeight, // 圆环的高度
viewControl: {
// 3d效果可以放大、旋转等请自己去查看官方配置
alpha, // 角度
distance, // 调整视角到主体的距离类似调整zoom
rotateSensitivity: 0, // 设置为0无法旋转
zoomSensitivity: 0, // 设置为0无法缩放
panSensitivity: 0, // 设置为0无法平移
autoRotate: false, // 自动旋转
},
},
series: series,
};
return option;
};
/**
* 生成扇形的曲面参数方程用于 series-surface.parametricEquation
*/
const getParametricEquation = (
startRatio,
endRatio,
isSelected,
isHovered,
k,
h
) => {
// 计算
const midRatio = (startRatio + endRatio) / 2;
const startRadian = startRatio * Math.PI * 2;
const endRadian = endRatio * Math.PI * 2;
const 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
const offsetX = isSelected ? Math.cos(midRadian) * 0.1 : 0;
const offsetY = isSelected ? Math.sin(midRadian) * 0.1 : 0;
// 计算高亮效果的放大比例(未高亮,则比例为 1
const 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 * 0.1;
}
return Math.sin(v) > 0 ? 1 * h * 0.1 : -1;
},
};
};
/**
* 获取3d丙图的最高扇区的高度
*/
const getHeight3D = (series, height) => {
series.sort((a, b) => {
return b.pieData.value - a.pieData.value;
});
return (height * 25) / series[0].pieData.value;
};
/**
* 格式化浮点数
*/
const fomatFloat = (num, n) => {
let f = parseFloat(num);
if (isNaN(f)) {
return false;
}
f = Math.round(num * Math.pow(10, n)) / Math.pow(10, n); // n 幂
let s = f.toString();
let rs = s.indexOf(".");
// 判定如果是整数增加小数点再补0
if (rs < 0) {
rs = s.length;
s += ".";
}
while (s.length <= rs + n) {
s += "0";
}
return s;
};
export { getPie3D, getParametricEquation };

@ -0,0 +1,327 @@
<!-- 园区企业 -->
<template>
<div class="company_num_box">
<!-- 模块标题 -->
<div class="title">
<div class="img_box">
<!-- <img src="@/assets/safetyIndex/装饰009991.png" alt="" /> -->
</div>
<div class="title_text">园区企业</div>
</div>
<!-- 企业数量 -->
<div class="company_num_box_body">
<div class="company_num_box_body_item green">
<div class="num_green">
{{ statisticsAlarmData.safeSum }}
</div>
<div class="type">平安企业</div>
</div>
<div class="company_num_box_body_item orange">
<div class="num_orange">
{{ statisticsAlarmData.companySum }}
</div>
<div class="type">石化企业</div>
</div>
<div class="company_num_box_body_item red">
<div class="num_red">
{{ statisticsAlarmData.alarmSum }}
</div>
<div class="type">预警企业</div>
</div>
</div>
<!-- 剧毒易制爆等四种企业展示 -->
<div class="company_danger">
<!-- 横向柱状图 -->
<div class="company_danger_charts" id="company_danger_charts"></div>
<!-- 占比 -->
<div class="company_proportion">
<div class="proportion_text">
<div class="proportion_text_item">占比</div>
<div class="proportion_text_item">占比</div>
<div class="proportion_text_item">占比</div>
<div class="proportion_text_item">占比</div>
</div>
<div class="proportion_value">
<div class="proportion_value_item">{{ this.proportion_list[0] }}</div>
<div class="proportion_value_item">{{ this.proportion_list[1] }}</div>
<div class="proportion_value_item">{{ this.proportion_list[2] }}</div>
<div class="proportion_value_item">{{ this.proportion_list[3] }}</div>
</div>
</div>
</div>
</div>
</template>
<script>
import { statisticsAlarm, statisticsDanger } from "@/api/safetyIndex";
import * as echarts from "echarts";
export default {
name: "CompanyNum",
data() {
return {
statisticsAlarmData: {},
statisticsDangerData: [],
y_data: [], // y
chart_data: [], // chart
proportion_list: [], //
};
},
created() {
this.getStatisticsAlarm();
this.getstatisticsDanger();
},
// mounted() {
// this.init_charts();
// },
methods: {
//
getStatisticsAlarm() {
statisticsAlarm().then((res) => {
this.statisticsAlarmData = res.data;
});
},
//
getstatisticsDanger() {
statisticsDanger().then((res) => {
this.statisticsDangerData = res.data;
// all_company_num
let all_company_num = this.statisticsDangerData
.map((item) => item.companyTypeSum)
.slice(0, 4);
let sum = 0;
for (let i = 0; i < all_company_num.length; i++) {
sum += all_company_num[i];
}
//
for (let i = 0; i < all_company_num.length; i++) {
this.proportion_list.push(
Math.round((Number(all_company_num[i]) / Number(sum)) * 10000) /
100 +
"%"
);
}
this.init_charts();
});
},
init_charts() {
// y
this.y_data = this.statisticsDangerData
.map((item) => item.companyTypeName)
.slice(0, 4);
// chart
this.chart_data = this.statisticsDangerData
.map((item) => item.companyTypeSum)
.slice(0, 4);
let danger_charts = document.getElementById("company_danger_charts");
let myChart = echarts.init(danger_charts);
let option = {
grid: {
top: "15%",
left: "3%",
right: "10%",
bottom: "3%",
containLabel: true, //
},
xAxis: {
type: "value",
splitLine: {
//线线
show: false,
},
axisLabel: {
color: "#fff",
},
},
yAxis: {
type: "category",
data: this.y_data,
inverse: true, //
axisLabel: {
color: "#fff",
},
axisLine: {
show: false, // 线
},
axisTick: {
show: false, // 线
},
},
series: [
{
data: this.chart_data,
type: "bar",
showBackground: true,
itemStyle: {
color: {
colorStops: [
{
offset: 0,
color: "#203e3a", // 0%
},
{
offset: 1,
color: "#326e57", // 100%
},
],
},
},
backgroundStyle: {
color: "rgba(180, 180, 180, 0.2)",
},
label: {
show: true,
position: "right",
color: "white",
},
},
],
};
option && myChart.setOption(option);
},
},
};
</script>
<style lang="less" scoped>
.company_num_box {
margin-top: 10px;
margin-left: 20px;
width: 24vw;
height: 28vh;
// border: 0.1px solid #495e70;
background: url("~@/assets/safetyIndex/back001.png") no-repeat;
background-size: 100% 100%;
/* 盒子标题 */
.title {
width: 24vw;
height: 2.7vh;
display: flex;
font-size: 16px;
color: #d9e7ff;
font-weight: 500;
/* 图片盒子 */
.img_box {
width: 1.5vw;
height: 2.7vh;
display: flex;
justify-content: center;
align-items: center;
img {
width: 16px;
height: 16px;
}
}
.title_text {
width: 4vw;
height: 3.2vh;
line-height: 3.2vh;
text-align: right;
}
}
.company_num_box_body {
margin-top: 1vh;
width: 24vw;
height: 8vh;
display: flex;
justify-content: space-around;
.company_num_box_body_item {
width: 6vw;
height: 8vh;
.num_green {
width: 6vw;
height: 5vh;
line-height: 5vh;
background: linear-gradient(#fff, #00ffd4);
background-clip: text;
color: transparent;
font-size: 46px;
font-weight: 700;
text-align: center;
}
.num_orange {
width: 6vw;
height: 5vh;
line-height: 5vh;
background: linear-gradient(#fff, #fef699);
background-clip: text;
color: transparent;
font-size: 46px;
font-weight: 700;
text-align: center;
}
.num_red {
width: 6vw;
height: 5vh;
line-height: 5vh;
background: linear-gradient(#fff, #ff4b4b);
background-clip: text;
color: transparent;
font-size: 46px;
font-weight: 700;
text-align: center;
}
.type {
font-size: 14px;
width: 6vw;
height: 3vh;
// line-height: 3vh;
color: #fff;
text-align: center;
}
}
.green {
background: url("~@/assets/safetyIndex/companyNum01.png") no-repeat;
background-size: 100% 100%;
}
.orange {
background: url("~@/assets/safetyIndex/companyNum02.png") no-repeat;
background-size: 100% 100%;
}
.red {
background: url("~@/assets/safetyIndex/companyNum03.png") no-repeat;
background-size: 100% 100%;
}
}
.company_danger {
margin-top: 1vh;
width: 24vw;
height: 15vh;
display: flex;
.company_danger_charts {
width: 18vw;
height: 15vh;
}
.company_proportion {
width: 6vw;
margin-top: 2.5vh;
height: 10vh;
display: flex;
.proportion_text {
width: 2vw;
height: 10vh;
// border: 0.1px solid #495e70;
.proportion_text_item {
width: 2vw;
height: 2.5vh;
line-height: 2.5vh;
color: #d9e7ff;
font-size: 14px;
text-shadow: 0 0 9px rgba(21, 255, 198, 0.64);
}
}
.proportion_value {
width: 4vw;
height: 10vh;
// border: 0.1px solid #495e70;
.proportion_value_item {
width: 4vw;
height: 2.5vh;
line-height: 2.5vh;
color: #d9e7ff;
font-size: 14px;
text-shadow: 0 0 9px rgba(21, 255, 198, 0.64);
}
}
}
}
}
</style>

@ -0,0 +1,335 @@
<!-- 企业员工 -->
<template>
<div class="employee_box">
<!-- 模块标题 -->
<div class="title">
<div class="img_box">
<!-- <img src="@/assets/safetyIndex/装饰009991.png" alt="" /> -->
</div>
<div class="title_text">企业员工</div>
</div>
<!-- 员工总数 -->
<div class="employee_num">
<div class="employee_num_text">员工总数</div>
<div class="employee_num_value">{{ this.person_sum }}</div>
</div>
<div class="chart_body">
<!-- 饼图 -->
<div class="chart_container">
<div :id="id" class="chart"></div>
</div>
<!-- 员工数据展示 -->
<div class="chart_data_body">
<div class="data_icon">
<div class="data_icon_item">
<div class="icon_color_blue"></div>
</div>
<div class="data_icon_item">
<div class="icon_color_purple"></div>
</div>
<div class="data_icon_item">
<div class="icon_color_yellow"></div>
</div>
<div class="data_icon_item">
<div class="icon_color_green"></div>
</div>
</div>
<!-- 员工类型 -->
<div class="person_type">
<div class="person_type_item">普通岗位</div>
<div class="person_type_item">重点岗位</div>
<div class="person_type_item">专家岗位</div>
<div class="person_type_item">重点人员</div>
</div>
<!-- 员工类型数量 -->
<div class="person_type_num">
<div class="person_type_num_item">
{{ this.person_list[0].number }}
</div>
<div class="person_type_num_item">
{{ this.person_list[1].number }}
</div>
<div class="person_type_num_item">
{{ this.person_list[2].number }}
</div>
<div class="person_type_num_item">
{{ this.person_list[3].number }}
</div>
</div>
</div>
</div>
</div>
</template>
<script>
import HighCharts from "highcharts";
import { staffStatistics } from "@/api/safetyIndex";
export default {
name: "Employee",
data() {
return {
person_sum: "", //
person_list: [], //
option_data: [],
statusChart: null,
id: "DispatchProportion",
option: {
chart: {
type: "pie", //
backgroundColor: "rgba(0, 0, 0, 0)", //
options3d: {
enabled: true, //使3d
alpha: 45, //y
},
},
title: {
text: "", //
},
subtitle: {
text: "", //
},
tooltip: {
formatter: function () {
return (
this.point.name +
'<br/><span style="color:' +
this.color +
'">\u25CF</span>占比:<b>' +
this.percentage.toFixed(2) +
"%</b>"
);
},
style: {
color: "#000",
fontSize: 10,
},
},
//
credits: {
enabled: false,
},
//
legend: {
itemStyle: { color: "#cfcfcf" },
},
plotOptions: {
pie: {
borderColor: "#000",
borderWidth: 1,
allowPointSelect: true, //
cursor: "pointer", //
colors: ["#66C3FF", "#4D74FF", "#ECDE3D", "#37FDC7"],
depth: 35, //
showInLegend: false, //
innerSize: 60,
dataLabels: {
enabled: false, //线tip
format: "{point.name}",
style: {
//
textOutline: "none", //
color: "#dfe9f9",
fontSize: 11,
},
},
},
},
series: [
{
type: "pie",
data: [],
},
],
},
};
},
created() {
this.get_data();
},
// mounted() {
//
// const that = this;
// window.onresize = function () {
// that.changeSize();
// };
// },
mounted() {
//
},
methods: {
get_data() {
staffStatistics().then((res) => {
console.log("resssss", res);
this.person_list = res.data.filter((item) => {
return item.type != "全部";
});
this.option_data = this.person_list.map((item) => {
return Object.assign({}, { value: item.number, name: item.type });
});
console.log("this.optionData", this.option_data);
this.person_sum = res.data.filter((item) => {
return item.type == "全部";
})[0].number;
console.log("this.optionData123", this.option_data);
let data = [
["普通岗位", Number(this.option_data[0].value)],
["重点岗位", Number(this.option_data[1].value)],
["专家岗位", Number(this.option_data[2].value)],
["重点人员", Number(this.option_data[3].value)],
];
this.option.series[0].data = data;
HighCharts.chart(this.id, this.option);
});
},
},
};
</script>
<style lang="less" scoped>
.employee_box {
margin-top: 10px;
margin-left: 20px;
width: 24vw;
height: 32vh;
// border: 0.1px solid #495e70;
background: url("~@/assets/safetyIndex/back001.png") no-repeat;
background-size: 100% 100%;
/* 盒子标题 */
.title {
width: 24vw;
height: 2.7vh;
display: flex;
font-size: 16px;
color: #d9e7ff;
font-weight: 500;
/* 图片盒子 */
.img_box {
width: 1.5vw;
height: 2.7vh;
display: flex;
justify-content: center;
align-items: center;
img {
width: 16px;
height: 16px;
}
}
.title_text {
width: 4vw;
height: 3.5vh;
line-height: 3.5vh;
text-align: right;
}
}
.employee_num {
margin-top: 1vh;
margin-left: 2vw;
width: 20vw;
height: 5vh;
background: url("~@/assets/safetyIndex/7691.png") no-repeat;
background-size: 100% 100%;
display: flex;
cursor: pointer;
.employee_num_text {
width: 10vw;
height: 5vh;
line-height: 5vh;
color: #37fdc7;
font-size: 20px;
font-weight: 500;
text-align: center;
// border: 0.1px solid #495e70;
}
.employee_num_value {
width: 10vw;
height: 5vh;
line-height: 5vh;
background: linear-gradient(#fff, #00ffd4);
background-clip: text;
color: transparent;
font-size: 36px;
font-weight: 600;
text-align: center;
// border: 0.1px solid #495e70;
}
}
.chart_body {
width: 24vw;
height: 16vh;
display: flex;
.chart_container {
width: 12vw;
height: 16vh;
// border: 0.1px solid #495e70;
.chart {
width: 100%;
height: 100%;
z-index: 1;
}
}
.chart_data_body {
width: 12vw;
height: 16vh;
border: 0.1px solid #495e70;
display: flex;
.data_icon {
width: 1vw;
height: 16vh;
.data_icon_item {
width: 1vw;
height: 4vh;
display: flex;
justify-content: center;
align-items: center;
.icon_color_blue {
width: 12px;
height: 12px;
border-radius: 50%;
background: #66c3ff;
}
.icon_color_purple {
width: 12px;
height: 12px;
border-radius: 50%;
background: #4d74ff;
}
.icon_color_yellow {
width: 12px;
height: 12px;
border-radius: 50%;
background: #ecde3d;
}
.icon_color_green {
width: 12px;
height: 12px;
border-radius: 50%;
background: #37fdc7;
}
}
}
.person_type {
width: 4vw;
height: 16vh;
.person_type_item {
width: 4vw;
height: 4vh;
color: #d9e7ff;
text-align: center;
line-height: 4vh;
}
}
.person_type_num {
width: 3vw;
height: 16vh;
border: 0.1px solid #495e70;
.person_type_num_item {
width: 3vw;
height: 4vh;
color: #d9e7ff;
text-align: center;
line-height: 4vh;
}
}
}
}
}
</style>

@ -0,0 +1,35 @@
<!-- 综合指数 -->
<template>
<div>
<!-- 最底层地图框 -->
<div class="map_box">
<!-- 园区企业 -->
<CompanyNum ref="companyNum"></CompanyNum>
<!-- 企业员工 -->
<Employee ref="employee"></Employee>
</div>
</div>
</template>
<script>
import CompanyNum from "./components/companyNum";
import Employee from "./components/employee";
export default {
name: "CompositeIndex",
components: {
CompanyNum,
Employee,
},
data() {
return {};
},
methods: {},
};
</script>
<style lang="less" scoped>
.map_box {
width: 100%;
height: calc(100% - 80px);
box-sizing: border-box;
// border: 0.1px solid #495e70;
}
</style>

@ -14,6 +14,7 @@ export default {
props: ["companyInfoList", "deviceVideoInfoList"],
data() {
return {
mapType:['BMAP_NORMAL_MAP', 'BMAP_SATELLITE_MAP'],
dongtaiPoint: [121.604192, 29.977299],
WaringList: this.companyInfoList,
VideoInfoList: this.deviceVideoInfoList,
@ -61,7 +62,7 @@ export default {
styleJson,
},
});
console.log('mapppp',map);
// console.log(this.WaringList, 'waringList');
let that = this;
map.centerAndZoom(
@ -71,6 +72,7 @@ export default {
map.setMinZoom(12);
map.setMaxZoom(19);
map.enableScrollWheelZoom(true);
// map.setMapType(this.mapType[1]);
// hjrequest({
// url: '/yc/dt/statistical/village',
// method: 'get',
@ -165,7 +167,7 @@ export default {
label.setStyle({
backgroundColor: " rgba(0, 0, 0, 0)",
border: "0",
color: "#0060ce",
color: "#409EFF",
fontSize: "16px",
});
map.addOverlay(label);

@ -2,7 +2,7 @@
<div class="mainHD">
<div class="topHeader">
<div class="iconbg">
<img src="../assets/companyFile/编组 7212.png" />
<img src="../assets/companyFile/police.png" style="width: 60px;height: 60px" />
</div>
<div class="headText">镇海平安企业园区</div>
<el-menu
@ -117,8 +117,8 @@ export default {
height: 35px;
width: 50px;
margin: 0 25px;
background: url("~@/assets/companyFile/矩形2111.png") no-repeat;
background-size: 100% 100%;
// background: url("~@/assets/companyFile/2111.png") no-repeat;
// background-size: 100% 100%;
display: flex;
justify-content: center;
align-items: center;
@ -232,7 +232,7 @@ export default {
}
.is-active {
background: url("~@/assets/companyFile/891771.png") no-repeat;
background: url("~@/assets/companyFile/891772.png") no-repeat;
background-size: 100% 100%;
}

@ -0,0 +1,342 @@
<template>
<div class="mainHD">
<div v-if="menu_box_show" class="top_box">
<div class="topHeader">
<!-- 首页标题 -->
<div class="safe_title" @mouseenter="handle_mouse_enter">
<div class="iconbg">
<img
src="../assets/companyFile/police.png"
style="width: 60px; height: 60px"
/>
</div>
<div class="headText">镇海平安企业园区</div>
</div>
<div class="jingGuan">
<div class="jgtx" @click="check_user">
<img src="../assets/companyFile/12110.png" />
</div>
&nbsp;&nbsp; 王警官
</div>
<div class="user_box" v-show="user_show">
<div class="user_box_body">
<!-- 用户个人中心 -->
<div class="user_center">修改密码</div>
<!-- 用户退出登录 -->
<div class="user_check_login" @click="logout">退</div>
</div>
</div>
</div>
<div class="menu_box" v-show="menu_show">
<div class="menu_item">
<el-menu
:default-active="activeIndex"
class="el-menu-demo topMenu"
mode="horizontal"
@select="handleSelect"
:router="true"
>
<div class="shu"></div>
<el-menu-item index="1" route="/home/safetyIndex" @click="menu_first_change"
>综合指数</el-menu-item
>
<div class="shu"></div>
<el-menu-item
index="6"
route="/home/applySupermarket"
@click="menu_change"
>安商惠企</el-menu-item
>
<div class="shu"></div>
<el-menu-item
index="2"
route="/home/realtimeWarning"
@click="menu_change"
>实时预警</el-menu-item
>
<div class="shu"></div>
<el-menu-item
index="3"
route="/home/closeLoopDispose"
@click="menu_change"
>闭环处置</el-menu-item
>
<div class="shu"></div>
<el-menu-item
index="4"
route="/home/factorResources"
@click="menu_change"
>要素资源</el-menu-item
>
<div class="shu"></div>
<el-menu-item
index="5"
route="/home/enterpriseArchives"
@click="menu_change"
>企业档案</el-menu-item
>
<div class="shu"></div>
<el-menu-item
index="7"
route="/home/systemManagement/safeIndex"
@click="menu_change"
>系统管理</el-menu-item
>
<div class="shu"></div>
</el-menu>
</div>
</div>
</div>
<router-view />
</div>
</template>
<script>
export default {
name: "Head",
data() {
return {
activeIndex: "1",
activeIndex2: "1",
user_show: false,
menu_show: false,
menu_box_show: true,
};
},
created() {
// 3201000563646357
this.activeIndex = sessionStorage.getItem("activeIndex")
? sessionStorage.getItem("activeIndex")
: "1";
},
methods: {
handleSelect(key) {
sessionStorage.setItem("activeIndex", key);
},
// 退
check_user() {
if (this.user_show) {
this.user_show = false;
} else {
this.user_show = true;
}
},
//
handle_mouse_enter() {
this.menu_show = true;
},
// 退
logout() {
// token
window.sessionStorage.clear();
//
this.$router.push("/login");
},
menu_first_change() {},
menu_change() {
console.log("2323232323");
},
},
};
</script>
<style lang="less" scoped>
.mainHD {
width: 100%;
height: 100%;
position: relative;
}
.topHeader {
width: 100%;
height: 80px;
background: url("~@/assets/companyFile/导航栏上.png") no-repeat;
background-size: 100% 100%;
display: flex;
align-items: center;
.iconbg {
height: 35px;
width: 50px;
margin: 0 25px;
// background: url("~@/assets/companyFile/2111.png") no-repeat;
// background-size: 100% 100%;
display: flex;
justify-content: center;
align-items: center;
.img {
height: 35px;
width: 50px;
}
}
.safe_title {
display: flex;
margin: 0 auto;
cursor: pointer;
}
.headText {
font-family: YouSheBiaoTiHei;
font-size: 38px;
color: #edf6ff;
letter-spacing: 4px;
text-shadow: 0 8px 8px rgba(0, 0, 0, 0.3);
font-weight: 400;
margin-right: 30px;
}
.jingGuan {
position: absolute;
right: 30px;
display: flex;
color: #edf6ff;
align-items: center;
.jgtx {
width: 40px;
height: 40px;
background: url("~@/assets/companyFile/矩形21112222.png") no-repeat;
background-size: 100% 100%;
cursor: pointer;
img {
width: 40px;
height: 40px;
}
}
}
.user_box {
position: absolute;
top: 70px;
right: 10px;
width: 180px;
height: 100px;
// border: 0.1px solid #33cccc;
padding: 10px;
background: url("~@/assets/archives/023.png") no-repeat;
background-size: 100% 100%;
z-index: 2;
.user_box_body {
width: 160px;
height: 80px;
// border: 0.1px solid #33cccc;
}
.user_center {
width: 160px;
height: 40px;
color: #d9e7ff;
text-align: center;
line-height: 40px;
cursor: pointer;
}
.user_check_login {
width: 160px;
height: 40px;
color: #d9e7ff;
text-align: center;
line-height: 40px;
cursor: pointer;
}
.user_center:hover,
.user_center:focus {
text-shadow: 0 0 20px rgba(21, 255, 198, 0.64);
}
.user_check_login:hover,
.user_check_login:focus {
text-shadow: 0 0 20px rgba(21, 255, 198, 0.64);
}
}
}
/* 导航盒子 */
.menu_box {
width: 100%;
height: 60px;
border: 0.1px solid #d9e7ff;
position: absolute;
top: 80px;
z-index: 10;
.menu_item {
/deep/.el-menu {
border: 0;
background-color: rgba(0, 0, 0, 0);
display: flex;
align-items: center;
width: 1102px;
margin: 0 auto;
.el-menu-item {
width: 130px;
height: 35px;
display: flex;
justify-content: center;
align-items: center;
padding: 10px 20px;
background: url("~@/assets/companyFile/Rectangle Copy 4.png") no-repeat;
background-size: 100% 100%;
font-size: 16px;
color: #d9e7ff;
letter-spacing: 3px;
text-align: center;
font-weight: 400;
}
.shu {
border-left: 1px solid rgba(217, 231, 255, 0.4);
width: 0;
height: 24px;
margin: 0 10px;
}
.is-active {
background: url("~@/assets/companyFile/891772.png") no-repeat;
background-size: 100% 100%;
}
/deep/.el-menu {
border: 0;
background-color: rgba(0, 0, 0, 0);
display: flex;
align-items: center;
.el-menu-item {
width: 100px;
height: 35px;
display: flex;
justify-content: center;
align-items: center;
padding: 10px 20px;
background: url("~@/assets/companyFile/Rectangle Copy 4.png")
no-repeat;
background-size: 100% 100%;
font-size: 16px;
color: #d9e7ff;
letter-spacing: 3px;
text-align: center;
font-weight: 400;
}
.shu {
border-left: 1px solid rgba(217, 231, 255, 0.4);
width: 0;
height: 24px;
margin: 0 10px;
}
.is-active {
background: url("~@/assets/companyFile/891771.png") no-repeat;
background-size: 100% 100%;
}
.el-menu-item.is-active {
border: 0 !important;
}
}
}
}
}
</style>

@ -0,0 +1,489 @@
<template>
<div class="mainHD">
<!-- 首页导航样式 -->
<div v-if="menu_box_show" class="top_box">
<div class="topHeader">
<!-- 首页标题 -->
<div class="safe_title" @mouseenter="handle_mouse_enter">
<div class="iconbg">
<img
src="../assets/companyFile/police.png"
style="width: 60px; height: 60px"
/>
</div>
<div class="headText">镇海平安企业园区</div>
</div>
<div class="jingGuan">
<div class="jgtx" @click="check_user">
<img src="../assets/companyFile/12110.png" />
</div>
&nbsp;&nbsp; 王警官
</div>
<div class="user_box" v-show="user_show">
<div class="user_box_body">
<!-- 用户个人中心 -->
<div class="user_center">修改密码</div>
<!-- 用户退出登录 -->
<div class="user_check_login" @click="logout">退</div>
</div>
</div>
</div>
<div class="menu_box" v-show="menu_show">
<div class="menu_item">
<el-menu
:default-active="activeIndex"
class="el-menu-demo topMenu"
mode="horizontal"
@select="handleSelect"
:router="true"
>
<div class="shu"></div>
<el-menu-item index="1" route="/home/safetyIndex"
>综合指数</el-menu-item
>
<div class="shu"></div>
<el-menu-item
index="6"
route="/home/applySupermarket"
@click="menu_change"
>安商惠企</el-menu-item
>
<div class="shu"></div>
<el-menu-item
index="2"
route="/home/realtimeWarning"
@click="menu_change"
>实时预警</el-menu-item
>
<div class="shu"></div>
<el-menu-item
index="3"
route="/home/closeLoopDispose"
@click="menu_change"
>闭环处置</el-menu-item
>
<div class="shu"></div>
<el-menu-item
index="4"
route="/home/factorResources"
@click="menu_change"
>要素资源</el-menu-item
>
<div class="shu"></div>
<el-menu-item
index="5"
route="/home/enterpriseArchives"
@click="menu_change"
>企业档案</el-menu-item
>
<div class="shu"></div>
<el-menu-item
index="7"
route="/home/systemManagement/safeIndex"
@click="menu_change"
>系统管理</el-menu-item
>
<div class="shu"></div>
</el-menu>
</div>
</div>
</div>
<!-- 旧版导航样式 -->
<div v-else class="topHeader">
<div class="iconbg">
<img
src="../assets/companyFile/police.png"
style="width: 60px; height: 60px"
/>
</div>
<div class="headText">镇海平安企业园区</div>
<el-menu
:default-active="activeIndex"
class="el-menu-demo topMenu"
mode="horizontal"
@select="handleSelect"
:router="true"
>
<div class="shu"></div>
<el-menu-item
index="1"
route="/home/safetyIndex"
@click="menu_first_change"
>综合指数</el-menu-item
>
<div class="shu"></div>
<el-menu-item index="6" route="/home/applySupermarket"
>安商惠企</el-menu-item
>
<div class="shu"></div>
<el-menu-item index="2" route="/home/realtimeWarning"
>实时预警</el-menu-item
>
<div class="shu"></div>
<el-menu-item index="3" route="/home/closeLoopDispose"
>闭环处置</el-menu-item
>
<div class="shu"></div>
<el-menu-item index="4" route="/home/factorResources"
>要素资源</el-menu-item
>
<div class="shu"></div>
<el-menu-item index="5" route="/home/enterpriseArchives"
>企业档案</el-menu-item
>
<div class="shu"></div>
<el-menu-item index="7" route="/home/systemManagement/safeIndex"
>系统管理</el-menu-item
>
<div class="shu"></div>
</el-menu>
<div class="jingGuan">
<div class="jgtx" @click="check_user">
<img src="../assets/companyFile/12110.png" />
</div>
&nbsp;&nbsp; 王警官
</div>
<div class="user_box" v-show="user_show">
<div class="user_box_body">
<!-- 用户个人中心 -->
<div class="user_center">修改密码</div>
<!-- 用户退出登录 -->
<div class="user_check_login" @click="logout">退</div>
</div>
</div>
</div>
<router-view />
</div>
</template>
<script>
export default {
name: "Head",
data() {
return {
activeIndex: "1",
activeIndex2: "1",
user_show: false,
menu_show: false,
menu_box_show: true,
};
},
created() {
this.activeIndex = sessionStorage.getItem("activeIndex")
? sessionStorage.getItem("activeIndex")
: "1";
},
methods: {
handleSelect(key) {
sessionStorage.setItem("activeIndex", key);
},
// 退
check_user() {
if (this.user_show) {
this.user_show = false;
} else {
this.user_show = true;
}
},
//
handle_mouse_enter() {
this.menu_show = true;
},
// 退
logout() {
// token
window.sessionStorage.clear();
//
this.$router.push("/login");
},
//
menu_first_change() {
this.menu_box_show = true;
},
//
menu_change() {
this.menu_box_show = false;
},
},
};
</script>
<style lang="less" scoped>
.mainHD {
width: 100%;
height: 100%;
position: relative;
}
.topHeader {
width: 100%;
height: 80px;
background: url("~@/assets/companyFile/导航栏上.png") no-repeat;
background-size: 100% 100%;
display: flex;
align-items: center;
.iconbg {
height: 35px;
width: 50px;
margin: 0 25px;
// background: url("~@/assets/companyFile/2111.png") no-repeat;
// background-size: 100% 100%;
display: flex;
justify-content: center;
align-items: center;
.img {
height: 35px;
width: 50px;
}
}
.safe_title {
display: flex;
margin: 0 auto;
cursor: pointer;
}
.headText {
font-family: YouSheBiaoTiHei;
font-size: 38px;
color: #edf6ff;
letter-spacing: 4px;
text-shadow: 0 8px 8px rgba(0, 0, 0, 0.3);
font-weight: 400;
margin-right: 30px;
}
.jingGuan {
position: absolute;
right: 30px;
display: flex;
color: #edf6ff;
align-items: center;
.jgtx {
width: 40px;
height: 40px;
background: url("~@/assets/companyFile/矩形21112222.png") no-repeat;
background-size: 100% 100%;
cursor: pointer;
img {
width: 40px;
height: 40px;
}
}
}
.user_box {
position: absolute;
top: 70px;
right: 10px;
width: 180px;
height: 100px;
// border: 0.1px solid #33cccc;
padding: 10px;
background: url("~@/assets/archives/023.png") no-repeat;
background-size: 100% 100%;
z-index: 2;
.user_box_body {
width: 160px;
height: 80px;
// border: 0.1px solid #33cccc;
}
.user_center {
width: 160px;
height: 40px;
color: #d9e7ff;
text-align: center;
line-height: 40px;
cursor: pointer;
}
.user_check_login {
width: 160px;
height: 40px;
color: #d9e7ff;
text-align: center;
line-height: 40px;
cursor: pointer;
}
.user_center:hover,
.user_center:focus {
text-shadow: 0 0 20px rgba(21, 255, 198, 0.64);
}
.user_check_login:hover,
.user_check_login:focus {
text-shadow: 0 0 20px rgba(21, 255, 198, 0.64);
}
}
/deep/.el-menu {
border: 0;
background-color: rgba(0, 0, 0, 0);
display: flex;
align-items: center;
.el-menu-item {
width: 130px;
height: 35px;
display: flex;
justify-content: center;
align-items: center;
padding: 10px 20px;
background: url("~@/assets/companyFile/Rectangle Copy 4.png") no-repeat;
background-size: 100% 100%;
font-size: 16px;
color: #d9e7ff;
letter-spacing: 3px;
text-align: center;
font-weight: 400;
}
.shu {
border-left: 1px solid rgba(217, 231, 255, 0.4);
width: 0;
height: 24px;
margin: 0 10px;
}
.is-active {
background: url("~@/assets/companyFile/891772.png") no-repeat;
background-size: 100% 100%;
}
/deep/.el-menu {
border: 0;
background-color: rgba(0, 0, 0, 0);
display: flex;
align-items: center;
.el-menu-item {
width: 100px;
height: 35px;
display: flex;
justify-content: center;
align-items: center;
padding: 10px 20px;
background: url("~@/assets/companyFile/Rectangle Copy 4.png") no-repeat;
background-size: 100% 100%;
font-size: 16px;
color: #d9e7ff;
letter-spacing: 3px;
text-align: center;
font-weight: 400;
}
.shu {
border-left: 1px solid rgba(217, 231, 255, 0.4);
width: 0;
height: 24px;
margin: 0 10px;
}
.is-active {
background: url("~@/assets/companyFile/891771.png") no-repeat;
background-size: 100% 100%;
}
.el-menu-item.is-active {
border: 0 !important;
}
}
}
}
/* 导航盒子 */
.menu_box {
width: 100%;
height: 60px;
border: 0.1px solid #d9e7ff;
position: absolute;
top: 80px;
z-index: 10;
.menu_item {
/deep/.el-menu {
border: 0;
background-color: rgba(0, 0, 0, 0);
display: flex;
align-items: center;
width: 1102px;
margin: 0 auto;
.el-menu-item {
width: 130px;
height: 35px;
display: flex;
justify-content: center;
align-items: center;
padding: 10px 20px;
background: url("~@/assets/companyFile/Rectangle Copy 4.png") no-repeat;
background-size: 100% 100%;
font-size: 16px;
color: #d9e7ff;
letter-spacing: 3px;
text-align: center;
font-weight: 400;
}
.shu {
border-left: 1px solid rgba(217, 231, 255, 0.4);
width: 0;
height: 24px;
margin: 0 10px;
}
.is-active {
background: url("~@/assets/companyFile/891772.png") no-repeat;
background-size: 100% 100%;
}
/deep/.el-menu {
border: 0;
background-color: rgba(0, 0, 0, 0);
display: flex;
align-items: center;
.el-menu-item {
width: 100px;
height: 35px;
display: flex;
justify-content: center;
align-items: center;
padding: 10px 20px;
background: url("~@/assets/companyFile/Rectangle Copy 4.png")
no-repeat;
background-size: 100% 100%;
font-size: 16px;
color: #d9e7ff;
letter-spacing: 3px;
text-align: center;
font-weight: 400;
}
.shu {
border-left: 1px solid rgba(217, 231, 255, 0.4);
width: 0;
height: 24px;
margin: 0 10px;
}
.is-active {
background: url("~@/assets/companyFile/891771.png") no-repeat;
background-size: 100% 100%;
}
.el-menu-item.is-active {
border: 0 !important;
}
}
}
}
}
</style>

@ -7,6 +7,8 @@
:pageNum="pageNum"
:total="total"
:pagination_width="pagination_width"
@size_change="size_change"
@num_change="num_change"
></lkyPagination>
</div>
</template>

@ -149,7 +149,7 @@ export default {
label.setStyle({
backgroundColor: " rgba(0, 0, 0, 0)",
border: "0",
color: "#0060ce",
color: "#409EFF",
fontSize: "16px",
});
map.addOverlay(label);

@ -243,6 +243,7 @@ export default {
},
getstatisticsDanger() {
statisticsDanger().then((res) => {
console.log('ressss',res.data);
this.statisticsDangerData = res.data;
});
},

16474
yarn.lock

File diff suppressed because it is too large Load Diff
Loading…
Cancel
Save