修改大屏样式

main
jinna 3 years ago
parent 0367077895
commit 389b491eb4
  1. BIN
      public/favicon.ico
  2. BIN
      public/favicon1.ico
  3. 3
      public/index.html
  4. 67
      src/api/home.js
  5. BIN
      src/assets/fonts/YOUSHEBIAOTIHEI-2.TTF
  6. 22
      src/assets/fonts/font.css
  7. BIN
      src/assets/fonts/时尚中黑简体.TTF
  8. BIN
      src/assets/img/pause.png
  9. BIN
      src/assets/img/start.png
  10. BIN
      src/assets/img/video_bag.jpg
  11. BIN
      src/assets/img/video_pause.png
  12. BIN
      src/assets/img/wea.png
  13. 636
      src/components/map.vue
  14. 2
      src/config/index.js
  15. 16630
      src/libs/DHWs.js
  16. 13
      src/libs/amap.js
  17. 422
      src/libs/util.js
  18. 18
      src/router/index.js
  19. 580
      src/views/HomeView.vue

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.2 KiB

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

@ -5,7 +5,8 @@
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width,initial-scale=1.0">
<link rel="icon" href="<%= BASE_URL %>favicon.ico">
<title><%= htmlWebpackPlugin.options.title %></title>
<!-- <title><%= htmlWebpackPlugin.options.title %></title> -->
<title>矛盾纠纷调解平台</title>
<script src="./config.js"></script>
<script type="text/javascript">
window._AMapSecurityConfig = {

@ -5,3 +5,70 @@ export const queryResolve = () =>
url: "/api/blade-business/report/getMediateFinish",
method: "get",
});
export const querySubmit = () =>
request({
url: "/api/blade-business/report/getAppealSubmit",
method: "get",
});
export const queryList = () =>
request({
url: "/api/blade-business/report/getAppealList",
method: "get",
});
export const queryTrend = () =>
request({
url: "/api/blade-business/report/getAppealByMon",
method: "get",
});
export const queryType = () =>
request({
url: "/api/blade-business/report/getAppealTypePercent",
method: "get",
});
export const querySort = () =>
request({
url: "/api/blade-business/report/getAppealHot",
method: "get",
});
// 矛盾解决数量
export const queryResolveList = (query) =>
request({
url: "/api/blade-business/report/getAppealFinishCountByLoc",
method: "get",
params: query,
});
// 矛盾上报数量
export const querySubmitList = (query) =>
request({
url: "/api/blade-business/report/getAppealSubmitCountByLoc",
method: "get",
params: query,
});
// 越级上报
export const queryOverList = (query) =>
request({
url: "/api/blade-business/report/getImmediateCountByLoc",
method: "get",
params: query,
});
export const queryImmediateList = (query) =>
request({
url: "/api/blade-business/report/getImmediateList",
method: "get",
params: query,
});
export const getStreetList = () =>
request({
url: "/api/blade-system/dict/common/getStreetList",
method: "get",
});

@ -0,0 +1,22 @@
@font-face {
font-family: 'YOUS';
src: url("../fonts/YOUSHEBIAOTIHEI-2.TTF");
font-weight: normal;
font-style: normal;
}
@font-face {
font-family: 'ZHJT';
src: url('../fonts/时尚中黑简体.TTF');
font-weight: normal;
font-style: normal;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 91 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

@ -5,39 +5,55 @@
}" -->
<div class="amap-wai">
<div class="amap-box" :id="amapId"></div>
<!-- <div class="custom-info">
<div class="custom">
<div class="title_info">
<div class="title_name">胶西街道</div>
<div class="title_num">
<div>已上报</div>
<div><span>5</span></div>
</div>
<div class="custom-info" v-show="isShowInfo">
<div class="custom">
<div class="title_info">
<div class="title_name">{{title}}</div>
<div class="title_num">
<div style="color:#fff">已上报</div>
<div class="sb_num_txt"><span style="font-size:20px">{{listData.length}}</span></div>
</div>
</div>
<div class="con_info">
<div class="con_info_top">
<div class="con_tit">初登日期</div>
<div class="con_tit">诉求类型</div>
<div class="con_tit">来访人姓名</div>
</div>
<div class="con_info_con">
<div class="con_item">
<div class="item_txt">2023/06/08</div>
<div class="item_txt">王华华</div>
<div class="item_txt">家庭纠纷</div>
</div>
<div class="con_item">
<div class="item_txt">2023/06/08</div>
<div class="item_txt">王华华</div>
<div class="item_txt">家庭纠纷</div>
</div>
<el-table :data="listData" class="info_table" height="80%">
<el-table-column align="center" prop="firstRegTime" label="初登日期">
<template slot-scope="scope">{{scope.row.firstRegTime.slice(0,-9)}}</template>
</el-table-column>
<el-table-column align="center" prop="name" label="诉求类型"></el-table-column>
<el-table-column align="center" prop="username" label="来访人姓名"></el-table-column>
</el-table>
<!-- <el-pagination
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page.sync="currentPage1"
pager-count="3"
:page-size="10"
layout="total, prev, pager, next"
:total="200">
</el-pagination> -->
<!-- <div class="con_info_top">
<div class="con_tit">初登日期</div>
<div class="con_tit">诉求类型</div>
<div class="con_tit">来访人姓名</div>
</div>
<div class="con_info_con">
<div class="con_item">
<div class="item_txt">2023/06/08</div>
<div class="item_txt">王华华</div>
<div class="item_txt">家庭纠纷</div>
</div>
<div class="con_item">
<div class="item_txt">2023/06/08</div>
<div class="item_txt">王华华</div>
<div class="item_txt">家庭纠纷</div>
</div> -->
<!-- </div> -->
</div>
</div>
<div class="cancel">
<img src="@/assets/img/cancel.png" alt="">
</div>
</div> -->
</div>
<div class="cancel" @click="closeInfo1">
<img src="@/assets/img/cancel.png" alt="" />
</div>
</div>
</div>
</template>
@ -46,6 +62,7 @@ let communityData = [];
import AMapLoader from "@amap/amap-jsapi-loader";
import { getZoom, callFuncInMain, ifIframe } from "@/libs/util";
import { queryImmediateList,getStreetList } from "@/api/home";
import {
mapView1,
mapView2,
@ -80,15 +97,20 @@ import {
hotMapType$,
selectedModelInfo$,
} from "@/subjects/sub";
import { Divider } from 'element-ui';
import { Divider } from "element-ui";
export default {
name: "index",
props: {
reliData: Array,
active:Number
},
data() {
return {
listData:[
{}
],
streetData:[],
amapId: !ifIframe() ? "amap-id-click" : "amap-id",
aWidth: 1920,
aHeight: 1080,
@ -102,7 +124,8 @@ export default {
ob: null,
ob1: null,
rankList: {},
markersArr:[],
markersArr: [],
total:'',
markers: [
{
name: "洋河镇",
@ -165,6 +188,10 @@ export default {
offset: [-20, -70],
},
],
strHtml:'',
title:'',
actived:1,
isShowInfo:false,
};
},
// ,
@ -180,144 +207,176 @@ export default {
console.log("newVal ==>", newVal);
console.log("oldVal ==>", oldVal);
this.rankList = newVal[0];
if(this.amap == null){
this.$nextTick(() =>{
this.newMap()
})
}else{
this.selectedWanggeLevel2Event();
this.isShowInfo = false
if (this.amap == null) {
this.$nextTick(() => {
this.newMap();
});
} else {
this.selectedWanggeLevel2Event();
}
},
},
active:{
handler(newVal,oldVal){
this.actived = newVal
}
}
},
mounted() {
this.setZoom();
window.clickMark = this.clickMark;
window.closeInfo = this.closeInfo;
window.addEventListener("resize", () => {
this.setZoom();
});
},
beforeUnmount() {
this.ob?.unsubscribe();
this.ob1?.unsubscribe();
},
created() {
this.getStreet()
// console.log('reliData ===>',)
},
methods: {
createInfo(title, content){
var info = document.createElement("div");
info.className = "custom-info input-card content-window-card";
// //
info.style.width = "350px";
info.innerHTML =
'<div class="custom">'+
'<div class="title_info">' +
'<div class="title_name">洋河镇</div>'+
'<div class="title_num">'+
'<div style="color:#fff">已上报</div>'+
'<div class="sb_num_txt"><span style="font-size:20px">5</span>件</div>'+
'</div>'+'</div>'+
'<div class="con_info">' +
closeInfo(){
console.log('点击关闭按钮')
this.amap.clearInfoWindow()
},
closeInfo1(){
this.isShowInfo = false
},
getStreet(){
getStreetList().then(res =>{
this.streetData = res.data;
})
},
createInfo() {
var info = document.createElement("div");
info.className = "custom-info input-card content-window-card";
// //
info.style.width = "350px";
this.strHtml = ''
for(let i = 0;i < this.listData.length;i++){
this.strHtml += '<div class="con_item">' +
'<div class="item_txt">'+ this.listData[i].name +'</div>' +
'<div class="item_txt">'+ this.listData[i].name +'</div>' +
'<div class="item_txt">'+ this.listData[i].name +'</div>' +
"</div>"
}
info.innerHTML =
'<div class="custom">' +
'<div class="title_info">' +
'<div class="title_name">'+ this.title +'</div>' +
'<div class="title_num">' +
'<div style="color:#fff">已上报</div>' +
'<div class="sb_num_txt"><span style="font-size:20px">'+ this.total +'</span>件</div>' +
"</div>" +
"</div>" +
'<div class="con_info">' +
' <div class="con_info_top">' +
'<div class="con_tit">初登日期</div>' +
'<div class="con_tit">诉求类型</div>' +
' <div class="con_tit">来访人姓名</div>' +
' </div>' +
'<div class="con_info_con">' +
'<div class="con_item">'+
' <div class="item_txt">2023/06/08</div>'+
'<div class="item_txt">王华华</div>'+
'<div class="item_txt">家庭纠纷</div>'+
'</div>'+
'<div class="con_item">'+
' <div class="item_txt">2023/06/08</div>'+
'<div class="item_txt">王华华</div>'+
'<div class="item_txt">家庭纠纷</div>'+
'</div>'+
'</div>'+
'</div>'+
'</div>'+
'<div class="cancel">'+
'</div>'
console.log(info)
return info;
'<div class="con_tit">初登日期</div>' +
'<div class="con_tit">诉求类型</div>' +
' <div class="con_tit">来访人姓名</div>' +
" </div>" +
'<div class="con_info_con" id="content">' +
this.strHtml +
// '<div class="con_item" v-for="item in listData" :key="item.id">' +
// '<div class="item_txt">'+`${item.name}`+'</div>' +
// '<div class="item_txt">'+`${item.name}`+'</div>' +
// '<div class="item_txt">'+`${item.name}`+'</div>' +
// "</div>" +
"</div>" +
"</div>" +
"</div>"+'<div class="cancel" onclick="closeInfo()">' ;
return info;
},
clickMark(val){
console.log('点击事件',val + '')
let tmp = this.markers.find(item => item.name == val)
console.log(tmp)
var title = '方恒假日酒店<span style="font-size:11px;color:#F00;">价格:318</span>',
content = [];
content.push("<img src='http://tpc.googlesyndication.com/simgad/5843493769827749134'>地址:北京市朝阳区阜通东大街6号院3号楼东北8.3公里");
content.push("电话:010-64733333");
content.push("<a href='https://ditu.amap.com/detail/B000A8URXB?citycode=110105'>详细信息</a>");
var infoWindow = new AMap.InfoWindow({
isCustom: true, //使
content: this.createInfo(title, content.join("<br/>")),
offset: new AMap.Pixel(16, -45)
});
infoWindow.open(this.amap,tmp.position)
clickMark(val) {
if(this.actived == 3){
let tmp = this.markers.find((item) => item.name == val);
this.title = val
let street = ''
console.log(this.streetData)
console.log(val)
if(val.includes('镇')){
street = this.streetData.find(item => item.dictValue == val.replace('镇','街道'))
}else{
street = this.streetData.find(item => item.dictValue == val)
}
queryImmediateList({streetId:street.id,current:1,size:10}).then(res =>{
this.listData = res.data.records;
this.total = res.data.total
this.isShowInfo = true
// var infoWindow = new AMap.InfoWindow({
// isCustom: true, //使
// content: this.createInfo(),
// offset: new AMap.Pixel(16, -45),
// });
// infoWindow.open(this.amap, tmp.position);
})
}
},
// markerClick(e){
// console.log(e)
// },
newMap(){
AMapLoader.load({
key: this.config.amap.key, // WebKey load
version: "2.0", // JSAPI 1.4.15
plugins: ["AMap.GeoJSON"], // 使'AMap.Scale'
})
.then((AMap) => {
this.amap = createAMap(this.amapId);
this.amap.setCenter([119.954097, 36.220797]);
this.amap.on("complete", async () => {
callFuncInMain("wanggeScreenComplete", "");
this.ob = selectedWanggeLevel$.subscribe(async (key) => {
console.log('key',key)
this.amap?.clearMap()
newMap() {
AMapLoader.load({
key: this.config.amap.key, // WebKey load
version: "2.0", // JSAPI 1.4.15
plugins: ["AMap.GeoJSON"], // 使'AMap.Scale'
})
.then((AMap) => {
this.amap = createAMap(this.amapId);
this.amap.setCenter([119.954097, 36.220797]);
this.amap.on("complete", async () => {
callFuncInMain("wanggeScreenComplete", "");
this.ob = selectedWanggeLevel$.subscribe(async (key) => {
console.log("key", key);
this.amap?.clearMap();
this.clearModal();
hideWanggeAll();
if (key === 1) {
this.amap.setZoomAndCenter(mapView1.zoom, mapView1.center, true);
this.amap.setPitch(mapView1.pitch, true);
this.amap.setRotation(mapView1.rotation, true);
addQingdao(this.amap);
addJiaozhou(this.amap);
addJiaozhouMaker(this.amap);
// addQingDaoTexts(this.amap)
} else if (key === 2) {
// deleteWangge2()
this.selectedWanggeLevel2Event(hotMapType$.value);
}
});
// this.ob1 = hotMapType$.subscribe((type) => {
// if (selectedWanggeLevel$.value === 2) {
// this.selectedWanggeLevel2Event(hotMapType$.value);
// }
// });
});
this.amap.on("click", (e) => {
// console.log(this.amap.getCenter())
// console.log(this.amap.getZoom())
// console.log(this.amap.getPitch())
// console.log(this.amap.getRotation())
this.clearModal();
hideWanggeAll();
if (key === 1) {
this.amap.setZoomAndCenter(mapView1.zoom, mapView1.center, true);
this.amap.setPitch(mapView1.pitch, true);
this.amap.setRotation(mapView1.rotation, true);
addQingdao(this.amap);
addJiaozhou(this.amap);
addJiaozhouMaker(this.amap);
// addQingDaoTexts(this.amap)
} else if (key === 2) {
// deleteWangge2()
this.selectedWanggeLevel2Event(hotMapType$.value);
}
});
// this.ob1 = hotMapType$.subscribe((type) => {
// if (selectedWanggeLevel$.value === 2) {
// this.selectedWanggeLevel2Event(hotMapType$.value);
// }
// });
});
this.amap.on("click", (e) => {
// console.log(this.amap.getCenter())
// console.log(this.amap.getZoom())
// console.log(this.amap.getPitch())
// console.log(this.amap.getRotation())
this.clearModal();
})
.catch((e) => {
console.log(e);
});
})
.catch((e) => {
console.log(e);
});
},
async getSecret() {
const { data } = await this.$fetch.get("api/bs/secret", {});
return RSAJieMi(data);
},
// async getSecret() {
// const { data } = await this.$fetch.get("api/bs/secret", {});
// return RSAJieMi(data);
// },
/**
*
* @param {*} hotType 热力图 形式 0按积分 1 按数量
@ -336,7 +395,7 @@ content.push("<a href='https://ditu.amap.com/detail/B000A8URXB?citycode=110105'>
// // rankList = await this.getQrySqpm('zjd')
// }
// rankList = { : 1, : 4 };
console.log('selectedWanggeLevel$.value',selectedWanggeLevel$.value)
console.log("selectedWanggeLevel$.value", selectedWanggeLevel$.value);
if (selectedWanggeLevel$.value === 2) {
this.addAMapWanggeLevel2(this.rankList);
}
@ -347,15 +406,15 @@ content.push("<a href='https://ditu.amap.com/detail/B000A8URXB?citycode=110105'>
* @param {*} hotType
*/
addAMapWanggeLevel2(rankList) {
// console.log('hotType ==>',hotType,)
// this.amap.setZoomAndCenter(mapView2.zoom, mapView2.center, true);
// this.amap.setPitch(mapView2.pitch, true);
// this.amap.setRotation(mapView2.rotation, true);
// console.log('hotType ==>',hotType,)
// this.amap.setZoomAndCenter(mapView2.zoom, mapView2.center, true);
// this.amap.setPitch(mapView2.pitch, true);
// this.amap.setRotation(mapView2.rotation, true);
// let latLng = new LatLng(119.726968,36.126774);
if(this.markersArr.length !== 0){
this.amap.remove(this.markersArr)
if (this.markersArr.length !== 0) {
this.amap.remove(this.markersArr);
}
let markerArr = [];
for (let key in rankList) {
@ -364,7 +423,13 @@ content.push("<a href='https://ditu.amap.com/detail/B000A8URXB?citycode=110105'>
if (rankList[key] < 75) {
markerArr.push({
markerContent:
'<div class="green-content-marker">' +
"<div class='green-content-marker'" +
'onclick="clickMark(' +
"'" +
key +
"'" +
')"' +
"</div>" +
' <div class="green-btn">' +
rankList[key] +
"</div>" +
@ -372,10 +437,16 @@ content.push("<a href='https://ditu.amap.com/detail/B000A8URXB?citycode=110105'>
position: item.position,
offset: item.offset,
});
} else if (rankList[key] >= 75 && rankList[key] <= 85){
} else if (rankList[key] >= 75 && rankList[key] <= 85) {
markerArr.push({
markerContent:
"<div class='yellow-content-marker'" + 'onclick="clickMark(' + "'" + key + "'" +')"' + '</div>'+
"<div class='yellow-content-marker'" +
'onclick="clickMark(' +
"'" +
key +
"'" +
')"' +
"</div>" +
'<div class="yellow-btn">' +
rankList[key] +
"</div>" +
@ -386,7 +457,13 @@ content.push("<a href='https://ditu.amap.com/detail/B000A8URXB?citycode=110105'>
} else if (rankList[key] > 85) {
markerArr.push({
markerContent:
'<div class="red-content-marker">' +
"<div class='red-content-marker'" +
'onclick="clickMark(' +
"'" +
key +
"'" +
')"' +
"</div>" +
' <div class="red-btn">' +
rankList[key] +
"</div>" +
@ -399,21 +476,20 @@ content.push("<a href='https://ditu.amap.com/detail/B000A8URXB?citycode=110105'>
});
}
markerArr.forEach((marker) => {
let markTmp = new AMap.Marker({
let markTmp = new AMap.Marker({
map: this.amap,
content: marker.markerContent,
// icon: marker.icon,
position: [marker.position[0], marker.position[1]],
offset: new AMap.Pixel(marker.offset[0], marker.offset[1]),
});
this.markersArr.push(markTmp)
this.markersArr.push(markTmp);
// markTmp.on('click', this.markerClick);
});
addJiedao(this.amap, 2, rankList);
addJiaozhouTexts(this.amap);
addJiaozhouLabelMarker(this.amap)
// addJiaozhouTexts(this.amap);
addJiaozhouLabelMarker(this.amap);
},
clearModal() {
// ,
@ -450,6 +526,7 @@ content.push("<a href='https://ditu.amap.com/detail/B000A8URXB?citycode=110105'>
</script>
<style scoped lang="scss">
@import "~@/assets/fonts/font.css";
.amap-wai {
width: 100%;
height: 100%;
@ -467,108 +544,164 @@ content.push("<a href='https://ditu.amap.com/detail/B000A8URXB?citycode=110105'>
}
}
::v-deep .custom-info{
width: 350px;
height: 300px;
display: flex;
padding-top:20px;
.custom{
width: 90%;
::v-deep .custom-info {
width: 350px;
height: 300px;
display: flex;
padding-top: 20px;
position: absolute;
left: 50%;
top:50%;
transform: translate(-50%, -50%);
.custom {
width: 90%;
height: 100%;
background: url("@/assets/img/dia_bag.png") no-repeat;
background-size: 100% 100%;
.title_info {
width: 96%;
height: 14%;
/* background: red; */
display: flex;
/* margin-top: 20px; */
margin: 0 auto;
margin-top: 20px;
align-items: center;
justify-content: space-between;
.title_name {
width: 60%;
text-align: left;
padding-left: 10px;
font-size: 18px;
color: #fff;
}
.title_num {
width: 40%;
/* background: green; */
display: flex;
height: 100%;
background: url('@/assets/img/dia_bag.png') no-repeat;
align-items: center;
.sb_num_txt {
background-image: linear-gradient(to bottom, #92eeff, #5bcaf5);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
font-weight: bold;
}
// justify-content: center;
}
}
.con_info {
width: 90%;
height: 75%;
margin: 0 auto;
margin-top: 3%;
.con_info_top {
width: 100%;
height: 13%;
display: flex;
background: url("@/assets/img/title_bag.png") no-repeat;
background-size: 100% 100%;
color: #47c5f0;
.title_info{
width: 96%;
height: 14%;
/* background: red; */
.con_tit {
width: 33%;
display: flex;
align-items: center;
justify-content: center;
}
}
.con_info_con {
width: 100%;
height: 85%;
margin-top: 2%;
// +
.pagination {
margin-top: 23px;
text-align: center;
padding: 10px;
display: flex;
justify-content: center;
align-items: center;
}
.con_item {
width: 100%;
height: 12%;
background: rgba(17, 71, 96, 0.3);
display: flex;
align-items: center;
color: #fff;
margin-bottom: 5px;
.item_txt {
width: 33%;
display: flex;
/* margin-top: 20px; */
margin: 0 auto;
margin-top: 20px;
align-items: center;
justify-content: space-between;
.title_name{
width: 60%;
text-align: left;
padding-left: 10px;
font-size: 18px;
color: #fff;
}
.title_num{
width: 40%;
/* background: green; */
display: flex;
height: 100%;
align-items: center;
.sb_num_txt{
background-image: linear-gradient(to bottom, #92eeff, #5bcaf5);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
font-weight: bold;
}
// justify-content: center;
}
}
.con_info{
width: 90%;
height: 75%;
margin: 0 auto;
margin-top: 3%;
.con_info_top{
width: 100%;
height: 13%;
display: flex;
background: url("@/assets/img/title_bag.png") no-repeat;
background-size: 100% 100%;
color: #47c5f0;
.con_tit{
width: 33%;
display: flex;
align-items: center;
justify-content: center;
}
}
.con_info_con{
width: 100%;
height: 85%;
margin-top: 2%;
.con_item{
width: 100%;
height: 12%;
background: rgba(17, 71, 96, 0.3);
display: flex;
align-items: center;
color: #fff;
margin-bottom: 5px;
.item_txt{
width: 33%;
display: flex;
align-items: center;
justify-content: center;
}
}
}
justify-content: center;
}
}
}
}
}
.cancel{
width:30px;
height:30px;
background: url("@/assets/img/cancel.png") no-repeat;
background-size: 100% 100%;
.cancel {
width: 30px;
height: 30px;
background: url("@/assets/img/cancel.png") no-repeat;
background-size: 100% 100%;
}
}
::v-deep .el-table__body tr:hover > td{
background:rgba(17, 71, 96, 0.8) !important ;
}
::v-deep .el-pagination button{
min-width: 20px;
}
::v-deep .el-table {
background: transparent;
th{
.el-table__cell{
background: #47c5f0;
}
}
tr{
background:transparent
}
}
::v-deep .el-table::before{
height: 0;
}
::v-deep .el-table th.el-table__cell{
background: rgba(17, 71, 96, 0.8) !important;
color: #47c5f0;
padding: 5px 0;
border-bottom: none !important;
}
::v-deep .el-table .el-table__cell{
background: transparent;
padding: 5px 0;
border-bottom: none;
color: #fff;
}
::v-deep .el-table th.el-table__cell>.cell{
border-right: 1px solid #ccc !important;
&:last-child{
border-right: none;
}
}
::v-deep .green-content-marker {
@ -599,18 +732,21 @@ content.push("<a href='https://ditu.amap.com/detail/B000A8URXB?citycode=110105'>
justify-content: center;
}
::v-deep .green-btn {
font-family: "ZHJT";
background-image: linear-gradient(to bottom, #caffe9, #7effbb);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
font-size: 34px;
}
::v-deep .red-btn {
font-family: "ZHJT";
background-image: linear-gradient(to bottom, #ffbbbb, #ff7373);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
font-size: 34px;
}
::v-deep .yellow-btn {
font-family: "ZHJT";
background-image: linear-gradient(to bottom, #fff0c8, #f4e05c);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;

@ -4,7 +4,7 @@ export default {
*/
// title: '胶州市党建引领一网统筹城乡网格治理电子地图',
// title: '胶州市党建引领基层治理数字驾驶舱',
title: "党建引领基层治理综合服务平台",
// title: "党建引领基层治理综合服务平台",
/**
* 屏幕分辨率
*/

File diff suppressed because one or more lines are too long

@ -86,11 +86,13 @@ const huang42 = "rgb(114, 114, 61)"; //4级网格
// 4级网格内,
const wangge4_border = "rgb(39, 255, 229)";
// const wangge4_fill = "rgb(39, 255, 229)";
const wangge4_fill = "rgb(39, 255, 229)";
const wangge4_fill_opacity = "0.5";
const wangge4_s_border = "rgb(255, 255, 39)";
const wangge4_s_fill = "rgb(255, 255, 39)";
// const wangge4_s_fill = "red";
const wangge4_s_fill_opacity = "0.75";
// 2级网格线: #27FFE5 线粗4
@ -218,9 +220,14 @@ export const addJiedao = (amap, level = 2, rankObj, hotType) => {
// const hotCor1 = "#f9422f";
// const hotCor2 = "#ffbe37";
// const hotCor3 = "#83e659";
const hotCor1 = "#1df11d";
const hotCor2 = "#ffa200";
const hotCor3 = "#ff0000";
// 绿色:00cc73
// 橙色:eb7a00
// 红色:ae352c
// 透明度均60%
// const hotCor1 = "rgba(0,204,115,0.6)";
const hotCor1 = "rgba(0,251,106,0.6)";
const hotCor2 = "rgba(235,122,0,0.6)";
const hotCor3 = "rgba(174,53,44,0.6)";
/**
* 计算颜色

@ -1,24 +1,20 @@
import config from '@/config'
import { of, interval, fromEvent } from 'rxjs'
import { switchMap, merge, debounceTime, mapTo } from 'rxjs/operators'
import config from "@/config";
import { of, interval, fromEvent } from "rxjs";
import { switchMap, merge, debounceTime, mapTo } from "rxjs/operators";
export const baseUrl =
process.env.NODE_ENV === 'development'
? config.baseUrl.dev
: config.baseUrl.pro
export const baseUrlYF =
process.env.NODE_ENV === 'development'
? config.baseUrlYF.dev
: config.baseUrlYF.pro
export const imgBaseUrl = config.baseUrl.imgBase
// export const baseUrl =
// process.env.NODE_ENV === "development" ? config.baseUrl.dev : config.baseUrl.pro;
// export const baseUrlYF =
// process.env.NODE_ENV === "development" ? config.baseUrlYF.dev : config.baseUrlYF.pro;
// export const imgBaseUrl = config.baseUrl.imgBase;
//出去网关的通用地址
export const baseUrlIp = baseUrl.split('/').slice(0, 3).join('/')
// export const baseUrlIp = baseUrl.split('/').slice(0, 3).join('/')
/** 缩放屏幕 */
export const zoom = () => {
let k = getZoom()
document.body.style.transform = `scale(${k})`
}
let k = getZoom();
document.body.style.transform = `scale(${k})`;
};
/** 缩放屏幕 */
// export const zoom = () => {
// let k = getZoomArr()
@ -36,55 +32,54 @@ export const zoom = () => {
* @returns {number}
*/
export const getZoom = () => {
const [W, H] = [window.innerWidth, window.innerHeight]
const realk = W / H
let k = 1
if (realk > config.sWidth / config.sHeight) {
k = H / config.sHeight
} else {
k = W / config.sWidth
}
return k
}
const [W, H] = [window.innerWidth, window.innerHeight];
const realk = W / H;
let k = 1;
if (realk > config.sWidth / config.sHeight) {
k = H / config.sHeight;
} else {
k = W / config.sWidth;
}
return k;
};
/**
* 获取缩放比例
* @returns {number}
*/
function getZoomArr() {
const [W, H] = [window.innerWidth, window.innerHeight]
let k1, k2
k1 = H / config.sHeight
k2 = W / config.sWidth
return [k2, k1]
const [W, H] = [window.innerWidth, window.innerHeight];
let k1, k2;
k1 = H / config.sHeight;
k2 = W / config.sWidth;
return [k2, k1];
}
/**
* 在打包上传的时候 忽略console.log 打印
*/
export function rewirteLog() {
console.log = (function (log) {
return process.env.NODE_ENV === 'development' ? log : function () {}
})(console.log)
console.log = (function (log) {
return process.env.NODE_ENV === "development" ? log : function () {};
})(console.log);
}
export const getPx = (rem) => {
return config.sWidth * rem * 0.01
}
return config.sWidth * rem * 0.01;
};
/**
* 获取地图里点击的坐标值现在有问题
* @param {*} num
* @returns
*/
export const getRemInAmap = (num) => {
const zoom = getZoom()
return num / zoom / 19.2 + 'rem'
// return num + 'px'
}
const zoom = getZoom();
return num / zoom / 19.2 + "rem";
// return num + 'px'
};
export const getRandom = (num) => {
return parseInt(Math.random() * num)
}
return parseInt(Math.random() * num);
};
/**
* 轮播的方法
@ -93,135 +88,120 @@ export const getRandom = (num) => {
* @param type 滚动方式 1上下滚 0 :一直从上往下
*/
export const lunboById = function (id, d = 1, type = 0) {
const dom = document.getElementById(id)
if (!dom) {
return
}
// 加一个判断如果容器内本就不能滚动,就不做下面的操作
// 参考https://blog.csdn.net/weixin_30396777/article/details/117873347
if (d) {
dom.scrollTop = dom.scrollTop + 10
const top = dom.scrollTop
if (top === 0) return
} else {
dom.scrollLeft = dom.scrollLeft + 10
const left = dom.scrollLeft
if (left === 0) return
}
const dom = document.getElementById(id);
if (!dom) {
return;
}
// 加一个判断如果容器内本就不能滚动,就不做下面的操作
// 参考https://blog.csdn.net/weixin_30396777/article/details/117873347
if (d) {
dom.scrollTop = dom.scrollTop + 10;
const top = dom.scrollTop;
if (top === 0) return;
} else {
dom.scrollLeft = dom.scrollLeft + 10;
const left = dom.scrollLeft;
if (left === 0) return;
}
/** 固定数组的长度 */
let arrlength = 60
/** 偏移栈 */
let stack = Array.from({ length: arrlength }, (_, i) => i - arrlength + 10)
/** 移动方向 */
let de = 1
/** 停留一段时间 */
let ting = 0
/** 固定数组的长度 */
let arrlength = 60;
/** 偏移栈 */
let stack = Array.from({ length: arrlength }, (_, i) => i - arrlength + 10);
/** 移动方向 */
let de = 1;
/** 停留一段时间 */
let ting = 0;
return of(true)
.pipe(
merge(
fromEvent(dom, 'mouseleave').pipe(
debounceTime(2000),
mapTo(true)
)
),
merge(fromEvent(dom, 'mousemove').pipe(mapTo(false))),
switchMap((b) => (b ? interval(70) : of(0)))
)
.subscribe((n) => {
// console.log('在循环了')
// console.log(id)
if (n > 0) {
if (stack[0] === stack[arrlength - 1]) {
if (d) {
if (type) {
de *= -1
} else {
dom.scrollTop = 0
ting = 0
stack = Array.from(
{ length: arrlength },
(_, i) => i - arrlength + 10
)
}
} else {
if (type) {
de *= -1
} else {
dom.scrollLeft = 0
}
}
}
if (d) {
if (!type) {
ting++
if (ting < 30) {
return
}
}
dom.scrollTo(0, dom.scrollTop + 2 * de)
stack.push(dom.scrollTop)
} else {
dom.scrollTo(dom.scrollLeft + 2 * de, 0)
stack.push(dom.scrollLeft)
}
stack.shift()
return of(true)
.pipe(
merge(fromEvent(dom, "mouseleave").pipe(debounceTime(2000), mapTo(true))),
merge(fromEvent(dom, "mousemove").pipe(mapTo(false))),
switchMap((b) => (b ? interval(70) : of(0)))
)
.subscribe((n) => {
// console.log('在循环了')
// console.log(id)
if (n > 0) {
if (stack[0] === stack[arrlength - 1]) {
if (d) {
if (type) {
de *= -1;
} else {
stack = Array.from(
{ length: arrlength },
(_, i) => i - arrlength + 10
)
de = 1
dom.scrollTop = 0;
ting = 0;
stack = Array.from({ length: arrlength }, (_, i) => i - arrlength + 10);
}
})
}
} else {
if (type) {
de *= -1;
} else {
dom.scrollLeft = 0;
}
}
}
if (d) {
if (!type) {
ting++;
if (ting < 30) {
return;
}
}
dom.scrollTo(0, dom.scrollTop + 2 * de);
stack.push(dom.scrollTop);
} else {
dom.scrollTo(dom.scrollLeft + 2 * de, 0);
stack.push(dom.scrollLeft);
}
stack.shift();
} else {
stack = Array.from({ length: arrlength }, (_, i) => i - arrlength + 10);
de = 1;
}
});
};
/**
* 隐藏身份证号
* @param {*} card
* @returns
*/
export const hideIdCard = (card) => {
if (card) {
card = card + ''
let newC =
card.length > 10
? card.substring(0, 8) +
'********' +
card.substring(card.length - 2)
: card.substring(0, 3) +
'****' +
card.substring(card.length - 2)
return newC
} else {
return ''
}
}
if (card) {
card = card + "";
let newC =
card.length > 10
? card.substring(0, 8) + "********" + card.substring(card.length - 2)
: card.substring(0, 3) + "****" + card.substring(card.length - 2);
return newC;
} else {
return "";
}
};
/**
* 把姓名加密
* @param name
*/
export function hideName(name) {
if (name) {
// return name.substr(0, 1) + new Array(name.length).join('某')
return name.substr(0, 1) + '某' + name.substr(2)
} else {
return ''
}
if (name) {
// return name.substr(0, 1) + new Array(name.length).join('某')
return name.substr(0, 1) + "某" + name.substr(2);
} else {
return "";
}
}
/**
* 把电话加密
* @param phone
*/
export const hidePhone = (phone) => {
if (phone) {
phone = phone + ''
let newphone = phone?.substring(0, 3) + '****' + phone?.substring(7, 12)
return newphone
} else {
return ''
}
}
if (phone) {
phone = phone + "";
let newphone = phone?.substring(0, 3) + "****" + phone?.substring(7, 12);
return newphone;
} else {
return "";
}
};
/**
* 下载图片通用地址
* @param name 图片名
@ -229,49 +209,49 @@ export const hidePhone = (phone) => {
* @returns {string|*}
*/
export const getImgUrl = (name, flag) => {
// return name
if (!name) return name
if (flag) {
return imgBaseUrl + name
}
if (process.env.NODE_ENV === 'development') {
if (name.match(/^http/)) {
return name
} else {
return baseUrlIp + name
}
// return name
if (!name) return name;
if (flag) {
return imgBaseUrl + name;
}
if (process.env.NODE_ENV === "development") {
if (name.match(/^http/)) {
return name;
} else {
return name
return baseUrlIp + name;
}
}
} else {
return name;
}
};
/**
* 处理云帆他们的图变成我们的转发图片
* @param {*} url
* @returns
*/
export const getYunFanImg = (url) => {
if (!url) return url
// 处理为不带前缀的
let url2 = url.split('/')?.slice(3)?.join('/') ?? ''
if (!url2) return
if (process.env.NODE_ENV === 'development') {
return baseUrlIp + '/yunfanImg/' + url2
} else {
return '/yunfanImg/' + url2
}
}
if (!url) return url;
// 处理为不带前缀的
let url2 = url.split("/")?.slice(3)?.join("/") ?? "";
if (!url2) return;
if (process.env.NODE_ENV === "development") {
return baseUrlIp + "/yunfanImg/" + url2;
} else {
return "/yunfanImg/" + url2;
}
};
/**
* 处理获取第一张图片
* @param {*} str
*/
export const getFirstImg = (str) => {
if (!str) return null
let arr = str?.split(',')
let imgArr = arr.filter((url) => {
return url.match(/^.*?(gif|png|jpg|jpeg|webp|svg|psd|bmp|tif)$/i)
})
return imgArr?.[0] ?? null
}
if (!str) return null;
let arr = str?.split(",");
let imgArr = arr.filter((url) => {
return url.match(/^.*?(gif|png|jpg|jpeg|webp|svg|psd|bmp|tif)$/i);
});
return imgArr?.[0] ?? null;
};
/**
* 生成随机数
@ -279,12 +259,11 @@ export const getFirstImg = (str) => {
* @param min
*/
export const getRandomNumber = (max, min) => {
let Range = max - min
let Rand = Math.random()
let num = min + Math.round(Rand * Range) //四舍五入
return num
}
let Range = max - min;
let Rand = Math.random();
let num = min + Math.round(Rand * Range); //四舍五入
return num;
};
/**
* 获取中心点
@ -292,35 +271,36 @@ export const getRandomNumber = (max, min) => {
* @returns
*/
export const calculateCenter = (data) => {
var lng = 0.0,
lat = 0.0
for (var i = 0; i < data.length; i++) {
// if ($.isEmptyObject(data[i])) {
// continue
// }
lng = lng + parseFloat(data[i][0])
lat = lat + parseFloat(data[i][1])
}
lng = lng / data.length
lat = lat / data.length
return [lng, lat]
}
var lng = 0.0,
lat = 0.0;
for (var i = 0; i < data.length; i++) {
// if ($.isEmptyObject(data[i])) {
// continue
// }
lng = lng + parseFloat(data[i][0]);
lat = lat + parseFloat(data[i][1]);
}
lng = lng / data.length;
lat = lat / data.length;
return [lng, lat];
};
export const getUrlKey = (name) => {
return (
decodeURIComponent(
(new RegExp('[?|&]' + name + '=' + '([^&;]+?)(&|#|;|$)').exec(
location.href
) || [, ''])[1].replace(/\+/g, '%20')
) || null
)
}
return (
decodeURIComponent(
(new RegExp("[?|&]" + name + "=" + "([^&;]+?)(&|#|;|$)").exec(location.href) || [
,
"",
])[1].replace(/\+/g, "%20")
) || null
);
};
export const ifIframe = () => {
return !getUrlKey('iframe')
}
return !getUrlKey("iframe");
};
export const hideTop = () => {
return getUrlKey('hideTop')
}
return getUrlKey("hideTop");
};
/**
* 调用父级方法
@ -328,12 +308,12 @@ export const hideTop = () => {
* @param param 参数
*/
export const callFuncInMain = (funcName, data) => {
let message = {
funcName: funcName, // 所要调用父页面里的函数名
param: data,
}
// 向父窗体(用户主页面)发送消息
// 第一个参数是具体的信息内容,
// 第二个参数是接收消息的窗口的源(origin),即"协议 + 域名 + 端口"。也可以设为*,表示不限制域名,向所有窗口发送
window.parent.postMessage(message, '*')
}
let message = {
funcName: funcName, // 所要调用父页面里的函数名
param: data,
};
// 向父窗体(用户主页面)发送消息
// 第一个参数是具体的信息内容,
// 第二个参数是接收消息的窗口的源(origin),即"协议 + 域名 + 端口"。也可以设为*,表示不限制域名,向所有窗口发送
window.parent.postMessage(message, "*");
};

@ -1,27 +1,27 @@
import Vue from 'vue';
import VueRouter from 'vue-router';
import HomeView from '../views/HomeView.vue';
import Vue from "vue";
import VueRouter from "vue-router";
import HomeView from "../views/HomeView.vue";
Vue.use(VueRouter);
const routes = [
{
path: '/',
name: 'home',
path: "/",
name: "home",
component: HomeView,
},
{
path: '/about',
name: 'about',
path: "/about",
name: "about",
// route level code-splitting
// this generates a separate chunk (about.[hash].js) for this route
// which is lazy-loaded when the route is visited.
component: () => import(/* webpackChunkName: "about" */ '../views/AboutView.vue'),
component: () => import(/* webpackChunkName: "about" */ "../views/AboutView.vue"),
},
];
const router = new VueRouter({
mode: 'history',
mode: "hash",
base: process.env.BASE_URL,
routes,
});

@ -1,6 +1,6 @@
<template>
<div class="router-main-box">
<AmapBg :reliData="reliData" />
<AmapBg :reliData="reliData" :active="active" />
<!-- <div class="zoom-box"> -->
<!-- <div class="bg-mask" v-if="$ifIframe()">
<div class="top"></div>
@ -17,29 +17,30 @@
<div class="container">
<div class="time_box">{{ date }} {{ time }}</div>
<!-- <div class="wea_box">
<img src="" alt="">
<img src="@/assets/img/wea.png" alt="">
<div><span>26</span>青岛</div>
</div> -->
<div class="center_box">
<div class="sb_box">
<div style="margin-right: 8px">今日上报数</div>
<div><span class="number_txt">7</span> <span class="num_name"></span></div>
<div style="margin-right: 8px;font-family:ZHJT">今日上报数</div>
<div style="font-weight:bold"><span class="number_txt">{{dayValue}}</span> <span class="num_name"></span></div>
</div>
<div class="sb_box cen">
<div style="margin-right: 8px">本周上报数</div>
<div><span class="number_txt">25</span> <span class="num_name"></span></div>
<div style="margin-right: 8px;font-family:ZHJT">本周上报数</div>
<div style="font-weight:bold"><span class="number_txt">{{weekValue}}</span> <span class="num_name"></span></div>
</div>
<div class="sb_box cen">
<div style="margin-right: 8px">本月上报数</div>
<div><span class="number_txt">32</span> <span class="num_name"></span></div>
<div style="margin-right: 8px;font-family:ZHJT">本月上报数</div>
<div style="font-weight:bold"><span class="number_txt">{{monValue}}</span> <span class="num_name"></span></div>
</div>
<div class="sb_box last">
<div style="margin-right: 8px">本年上报数</div>
<div><span class="number_txt">7</span> <span class="num_name"></span></div>
<div style="margin-right: 8px;font-family:ZHJT">本年上报数</div>
<div style="font-weight:bold"><span class="number_txt">{{yearValue}}</span> <span class="num_name"></span></div>
</div>
</div>
<div class="left_box">
<div class="hj_box">
<div class="title">矛盾纠纷化解统计</div>
<div class="title left_top">矛盾纠纷化解统计</div>
<div class="top_con">
<div class="con_box day">
<div class="con_txt">
@ -86,8 +87,8 @@
<div class="con_txt" v-for="(item, index) in listData" :key="index">
<div class="con_text">{{ item.disputeName }}</div>
<div class="con_text">{{ item.street }}</div>
<div class="con_text">{{ item.firstRegTime }}</div>
<div class="con_text">{{ item.statusName }}</div>
<div class="con_text">{{ item.firstRegTime.slice(0,-9) }}</div>
<div class="con_text" :class="item.status == 0 ? 'ready_txt' : item.status == 1 ? 'now_rea_txt' : ''">{{ item.status == 0 ? '待处理' : item.status == 1 ? '正在处理' : item.status == 2 ? '达成协议' : item.status == 3 ? '调解成功' : '' }}</div>
</div>
</vueSeamless>
</div>
@ -104,9 +105,21 @@
</div>
<div class="right_box">
<div class="rig_box">
<div class="title">镇街矛调实况</div>
<div class="title">镇街矛调实况
<div class="video_pause_box" @click="changeVideo" v-show="isShowLogin">
<img v-show="isShowVideo" src="@/assets/img/pause.png" alt="">
<img v-show="!isShowVideo" src="@/assets/img/start.png" alt="">
<span class="pause_txt">{{isShowVideo ? '播放' : '暂停'}}</span>
</div>
</div>
<div class="video_box">
<div class="video" id="video"></div>
<div v-show="isShowLogin && !isShowVideo" class="video" id="video"></div>
<div class="ispause_box" v-show="isShowVideo && isShowLogin">
<img src="@/assets/img/video_pause.png" alt="">
</div>
<div class="ispause_box" v-show="!isShowVideo && !isShowLogin">
<img src="@/assets/img/video_bag.jpg" alt="">
</div>
</div>
</div>
<div class="rig_ph">
@ -120,7 +133,9 @@
</div>
<div class="bottom_box">
<div class="sele_box">
<el-select v-model="timeFrame" class="slect_box" popper-class="select_time">
<el-select v-model="timeFrame" class="slect_box" popper-class="select_time"
:disabled="isDis"
@change="changeFrame">
<el-option
v-for="item in timeData"
:key="item.value"
@ -138,6 +153,9 @@
range-separator="-"
start-placeholder="开始日期"
end-placeholder="结束日期"
format="yyyy-MM-dd"
value-format="yyyy-MM-dd"
@change="changeTime"
>
</el-date-picker>
</div>
@ -165,7 +183,8 @@ import AmapBg from "@/components/map.vue";
import { getZoom } from "@/libs/util";
import { selected_area$ } from "@/subjects/sub";
import vueSeamless from "vue-seamless-scroll";
import { queryResolve } from "@/api/home";
import { queryResolve,querySubmit,queryList,queryTrend,queryType,querySort,queryResolveList
,querySubmitList,queryImmediateList,queryOverList } from "@/api/home";
export default {
name: "",
components: {
@ -178,8 +197,11 @@ export default {
},
data() {
return {
pieData:[],
isDis:false,
reliData: [],
timeFrame: 1,
isShowVideo:false,
ob: null,
selectedArea: null,
zoom: 1,
@ -187,7 +209,7 @@ export default {
time: "",
calssOption: {
step: 0.2, //
limitMoveNum: 10, // this.dataList.length
limitMoveNum: 4, // this.dataList.length
hoverStop: true, // stop
direction: 1, // 0 1 2 3
openWatch: true, // dom
@ -200,77 +222,21 @@ export default {
{ label: "季", value: 2 },
{ label: "年", value: 3 },
],
dayValue:'',
weekValue:'',
monValue:'',
yearValue:'',
trendChart: null,
pieChart: null,
phChart: null,
deptChart: null,
listData: [
{
disputeName: "矛盾纠纷",
street: "洋河镇",
firstRegTime: "2022-05-31",
statusName: "办结",
},
{
disputeName: "合同纠纷",
street: "洋河镇",
firstRegTime: "2022-05-30",
statusName: "办结",
},
{
disputeName: "矛盾纠纷",
street: "洋河镇",
firstRegTime: "2022-05-30",
statusName: "办结",
},
{
disputeName: "婚姻纠纷",
street: "洋河镇",
firstRegTime: "2022-05-30",
statusName: "办结",
},
{
disputeName: "矛盾纠纷",
street: "里岔镇",
firstRegTime: "2022-05-30",
statusName: "办结",
},
{
disputeName: "邻里纠纷",
street: "洋河镇",
firstRegTime: "2022-05-30",
statusName: "办结",
},
{
disputeName: "矛盾纠纷",
street: "洋河镇",
firstRegTime: "2022-05-30",
statusName: "办结",
},
{
disputeName: "矛盾纠纷",
street: "洋河镇",
firstRegTime: "2022-05-30",
statusName: "办结",
},
{
disputeName: "矛盾纠纷",
street: "洋河镇",
firstRegTime: "2022-05-30",
statusName: "办结",
},
{
disputeName: "矛盾纠纷",
street: "洋河镇",
firstRegTime: "2022-05-30",
statusName: "办结",
},
],
xData: ["一月", "二月", "三月", "四月", "五月", "六月"],
yData1: [20, 40, 32, 12, 43, 12],
yData2: [25, 42, 30, 15, 23, 32],
listData: [],
xData: [],
yData1: [],
yData2: [],
activePanel: "key1",
isLogin: false,
isShowLogin:false,
loginType: "1",
loginIp: "112.6.205.8",
userName: "system",
@ -295,19 +261,21 @@ export default {
crtHeight: 400,
domId: "dom1",
mixedVideoDisplayMode: 2,
active: "1",
timePicker: "",
active: 1,
timePicker: [],
monReso: "",
quaReso: "",
yearReso: "",
allReso: "",
streetPh:[],
deptPh:[]
};
},
mounted() {
this.ws = this.DHWs.getInstance();
// console.log(ws)
this.reliData = [{ 胶东街道: 2, 洋河镇: 80, 铺集镇: 90, 九龙街道: 40 }];
// this.reliData = [{ : 2, : 80, : 90, : 40 }];
this.ob = selected_area$.subscribe((obj) => {
this.selectedArea = obj;
@ -319,7 +287,7 @@ export default {
});
this.$nextTick(() => {
this.getTime();
this.createChart();
this.getSubmitList()
this.createPieChart();
this.createPhChart();
this.createDeptChart();
@ -336,27 +304,159 @@ export default {
handleReli(val) {
this.active = val;
if (val == 1) {
this.reliData = [{ 胶东街道: 2, 洋河镇: 80, 铺集镇: 90, 九龙街道: 40 }];
this.getSubmitList()
// this.reliData = [{ : 2, : 80, : 90, : 40 }];
} else if (val == 2) {
this.reliData = [{ 里岔镇: 20, 胶西街道: 80, 中云街道: 90, 九龙街道: 40 }];
// this.reliData = [{ : 20, 西: 80, : 90, : 40 }];
this.getResolveList()
} else if (val == 3) {
this.reliData = [{ 阜安街道: 50, 三里河街道: 84, 胶东街道: 86, 胶北街道: 40 }];
this.getOverList()
// this.reliData = [{ : 50, : 84, : 86, : 40 }];
}
},
getResolve() {
queryResolve().then((res) => {
console.log("化解数据", res);
this.monReso = res.data ? res.data.mon : 1;
this.quaReso = res.data ? res.data.quarterly : 3;
(this.yearReso = res.data ? res.data.year : 10),
(this.allReso = res.data ? res.data.all : 20);
});
querySubmit().then(res =>{
console.log(res)
this.dayValue = res.data.day;
this.weekValue = res.data.week;
this.monValue = res.data.mon;
this.yearValue = res.data.year
})
queryList().then(res =>{
this.listData = res.data;
})
queryTrend().then(res =>{
this.xData = res.data.dateList.reverse();
this.yData1 = res.data.handlerCountList.reverse();
this.yData2 = res.data.finishContList.reverse();
this.$nextTick(() =>{
this.createChart();
})
})
queryType().then(res =>{
console.log('type===>',res)
this.pieData = res.data;
this.$nextTick(() =>{
this.createPieChart()
})
})
querySort().then(res =>{
this.streetPh = res.data.street
this.deptPh = res.data.town
this.$nextTick(() =>{
this.createPhChart();
this.createDeptChart()
})
})
},
getResolveList(){
this.reliData = []
console.log('timePicker===>',this.timePicker)
if(this.timePicker.length == 0){
queryResolveList({timeFrame:this.timeFrame}).then(res =>{
console.log('res ===>',res.data)
this.reliData.push(res.data)
})
}else{
queryResolveList({
startTime:this.timePicker[0] + ' 00:00:00',
endTime:this.timePicker[1] + '23:59:59'
}).then(res =>{
this.reliData.push(res.data)
})
}
},
getSubmitList(){
this.reliData = []
if(this.timePicker.length == 0){
querySubmitList({timeFrame:this.timeFrame}).then(res =>{
console.log('submit===>',res)
this.reliData.push(res.data)
})
}else{
querySubmitList({
startTime:this.timePicker[0] + ' 00:00:00',
endTime:this.timePicker[1] + '23:59:59'
}).then(res =>{
console.log('submit===>',res)
this.reliData.push(res.data)
})
}
// this.reliData = [{:80,:72,:88}]
},
getOverList(){
this.reliData = []
if(this.timePicker.length == 0){
queryOverList({timeFrame:this.timeFrame}).then(res =>{
console.log('submit===>',res)
this.reliData.push(res.data)
})
}else{
queryOverList({
startTime:this.timePicker[0] + ' 00:00:00',
endTime:this.timePicker[1] + '23:59:59'
}).then(res =>{
console.log('submit===>',res)
this.reliData.push(res.data)
})
}
},
changeFrame(){
this.timePicker = []
if(this.active == 1){
this.getSubmitList()
}else if(this.active == 2){
this.getResolveList()
}else if(this.active == 3){
this.getOverList();
}
},
changeTime(){
if(!this.timePicker){
this.timePicker = []
this.isDis = false
}else{
this.isDis = true
}
if(this.active == 1){
this.getSubmitList()
}else if(this.active == 2){
this.getResolveList()
}else if(this.active == 3){
this.getOverList()
}
},
fn(str) {
let num = null;
str >= 10 ? (num = str) : (num = "0" + str);
return num;
},
changeVideo(){
console.log('视频切换',this.isShowLogin)
this.isShowVideo = !this.isShowVideo;
if(this.isShowVideo){
this.ws.setCtrlVisible([
{
ctrlCode: this.ctrl,
visible: false
}
])
}else{
this.ws.setCtrlVisible([
{
ctrlCode: this.ctrl,
visible: true
}
])
}
},
getTime() {
//
this.timer = setInterval(() => {
@ -388,17 +488,21 @@ export default {
});
// this.$message.error('...')
this.ws.on("loginState", (res) => {
console.log("res ===>", res);
this.isLogin = res;
// dahuaIsLogin$.next(res)
console.log('isLogin',this.isLogin)
if (res) {
this.create();
this.isShowLogin = true
this.$nextTick(() =>{
this.create();
})
// this.$message.success('')
} else {
// this.$message.error('')
}
});
} else {
this.isShowLogin = false
//
this.$message.error("请重新安装客户端");
}
@ -418,18 +522,18 @@ export default {
domId: "video",
},
];
this.setPos();
// this.setPos();
this.ws.createCtrl(params).then((res) => {
console.log("paraRea===>", res);
});
this.ws.on("createCtrlResult", (res) => {
console.log("createCtrlResult", res);
});
// this.ws.on("createCtrlResult", (res) => {
// console.log("createCtrlResult", res);
// });
this.displayMode = 1;
console.log("this.ws.ctrls", this.ws.ctrls);
if (this.ws.ctrls.length === 0) {
message.info("请先创建控件!");
this.$message.error("请先创建控件!");
}
const params1 = {
ctrlCode: this.ctrl,
@ -441,11 +545,12 @@ export default {
let target = document.getElementById("video");
console.log(target, "target");
// target.style.right = `${this.crtPosX}px`
// target.style.top = `${this.crtPosY}px`
// target.style.top = `-10px`
// target.style.width = `${this.crtWidth}px`
// target.style.height = `${this.crtHeight}px`
if (document.createEvent) {
var event = document.createEvent("HTMLEvents");
console.log('event==>',event)
event.initEvent("resize", true, true);
window.dispatchEvent(event);
} else if (document.createEventObject) {
@ -612,21 +717,17 @@ export default {
borderRadius: 5,
},
label: {
show: false,
show: true,
position: 'inside',
fontSize: 10,
formatter: '{d}%'
},
emphasis: {
label: {
show: true,
show: false,
},
},
data: [
{ value: 40, name: "合同纠纷" },
{ value: 33, name: "事故纠纷" },
{ value: 28, name: "邻里纠纷" },
{ value: 22, name: "婚姻家庭纠纷" },
{ value: 20, name: "劳动纠纷" },
{ value: 15, name: "其他纠纷" },
],
data:this.pieData,
},
],
};
@ -639,49 +740,7 @@ export default {
});
var colorList = ["#00ff00", "#ffba00", "#ff3e54", "#36cfd9"];
var colorList1 = ["rgba(112 ,215, 77,0.8)", "rgba(243,151,0,0.8)", "rgba(222, 70, 87,0.8)", "rgba(71, 197, 240,0.5)"];
var datas = [
{
value: 99,
name: "系列一",
},
{
value: 97,
name: "系列二",
},
{
value: 94,
name: "系列三",
},
{
value: 90,
name: "系列四",
},
{
value: 88,
name: "系列五",
},
{
value: 84,
name: "系列6",
},
{
value: 81,
name: "系列7",
},
{
value: 79,
name: "系列8",
},
{
value: 75,
name: "系列9",
},
{
value: 65.88,
name: "系列a",
},
];
let maxArr = new Array(datas.length).fill(100);
var option = {
tooltip: {
show: false,
@ -694,11 +753,11 @@ export default {
show: false,
},
grid: {
top: 3,
left: 0,
top: '5%',
left: '30%',
right: 10,
bottom: 0,
containLabel: true,
bottom: '6%',
// containLabel: true,
},
xAxis: {
show: true,
@ -734,13 +793,29 @@ export default {
margin: 30,
},
},
data: datas.map((item) => item.name),
data: this.streetPh.map((item) => item.name),
axisLabel: {
margin: 50,
// margin: 115,
fontSize: 14,
align: "left",
align: "right",
color: "#fff",
},
formatter: (value) => {
// if(value.length > 4){
// // value = value.slice(0, 4) + '...'
// // return value
// }else{
// return value
// }
return value
},
rich:{
bValue:{
width:60,
height:20,
backgroundColor:"red"
}
}
}
},
],
series: [
@ -750,7 +825,7 @@ export default {
type: "bar",
barWidth: 8,
zlevel: 1,
data: datas.map((item, i) => {
data: this.streetPh.map((item, i) => {
let itemStyle = {};
itemStyle.color = new this.$echarts.graphic.LinearGradient(0, 0, 1, 0, [
{
@ -781,7 +856,7 @@ export default {
symbolSize: [3, 8],
symbolOffset: [2, 0],
z: 2,
data: datas,
data: this.streetPh,
itemStyle: {
normal: {
// barBorderRadius: 20,
@ -804,25 +879,6 @@ export default {
});
var colorList = ["#00ff00", "#ffba00", "#ff3e54", "#36cfd9"];
var colorList1 = ["rgba(112 ,215, 77,0.8)", "rgba(243,151,0,0.8)", "rgba(222, 70, 87,0.8)", "rgba(71, 197, 240,0.5)"];
var datas = [
{
value: 99,
name: "系列一",
},
{
value: 97,
name: "系列二",
},
{
value: 94,
name: "系列三",
},
{
value: 90,
name: "系列四",
},
];
let maxArr = new Array(datas.length).fill(100);
var option = {
tooltip: {
show: false,
@ -835,11 +891,10 @@ export default {
show: false,
},
grid: {
top: 3,
left: 0,
top: '5%',
left: '30%',
right: 10,
bottom: 0,
containLabel: true,
bottom: '15%',
},
xAxis: {
show: true,
@ -875,15 +930,35 @@ export default {
margin: 30,
},
},
data: datas.map((item) => item.name),
data: this.deptPh.map((item) => item.name),
axisLabel: {
margin: 50,
// margin: 115,
fontSize: 14,
align: "left",
align: "right",
color: "#fff",
formatter: function(value) {
// if(value.length > 4){
// value = value.slice(0, 4) + '...'
// return value
// }else{
// return value
// }
return value
}
},
},
],
dataZoom: [
//
{
yAxisIndex: 0, //X0
show: false, //使
type: "slider", // dataZoom slider dataZoom
startValue: 0, //
endValue: 4, // 6
},
],
series: [
{
z: 2,
@ -891,7 +966,7 @@ export default {
type: "bar",
barWidth: 8,
zlevel: 1,
data: datas.map((item, i) => {
data: this.deptPh.map((item, i) => {
let itemStyle = {};
itemStyle.color = new this.$echarts.graphic.LinearGradient(0, 0, 1, 0, [
{
@ -922,7 +997,7 @@ export default {
symbolSize: [3, 8],
symbolOffset: [2, 0],
z: 2,
data: datas,
data: this.deptPh,
itemStyle: {
normal: {
// barBorderRadius: 20,
@ -937,18 +1012,38 @@ export default {
],
};
this.deptChart.setOption(option);
if(this.deptPh.length > 4){
setInterval(()=>{
if (option.dataZoom[0].endValue == this.deptPh.length ) {
option.dataZoom[0].endValue = 3;
option.dataZoom[0].startValue = 0;
} else {
option.dataZoom[0].endValue = option.dataZoom[0].endValue + 1;
option.dataZoom[0].startValue = option.dataZoom[0].startValue + 1;
}
this.deptChart.setOption(option);
},2000)
}
},
},
beforeDestroy () {
this.ws.logout({
loginIp: this.loginIp
})
},
};
</script>
<style scoped lang="scss">
@import "~@/assets/fonts/font.css";
.router-main-box {
position: absolute;
width: 100%;
height: 100%;
// background: red;
margin: -8px;
overflow: hidden;
}
.zoom-box {
position: relative;
@ -975,9 +1070,10 @@ export default {
font-size: 27px;
color: #fff;
position: absolute;
font-weight: bold;
// font-weight: bold;
font-family: 'YOUS';
top: 38px;
left: 48px;
left: 20px;
}
.center_box {
@ -998,8 +1094,7 @@ export default {
color: #fff;
align-items: center;
border-right: 1px solid #fff;
font-weight: bold;
font-family: "ZHJT";
&.cen {
justify-content: center;
}
@ -1101,13 +1196,18 @@ export default {
.title {
font-size: 20px;
font-weight: bold;
font-stretch: normal;
font-family: "ZHJT";
letter-spacing: 0px;
color: #ffffff;
width: 88%;
margin-left: 12%;
text-align: left;
margin-top: 2px;
&.left_top{
padding-top: 3px;
margin-left: 11.5%;
}
}
.top_con {
@ -1159,7 +1259,7 @@ export default {
.num_txt {
font-size: 22px;
font-weight: bold;
font-family: "ZHJT";
// color: #fff;
margin-bottom: 5px;
background-image: linear-gradient(to bottom, #92eeff, #5bcaf5);
@ -1220,6 +1320,13 @@ export default {
align-items: center;
justify-content: center;
opacity: 1;
&.ready_txt{
color:#d24040;
}
&.now_rea_txt{
color:#55ec99 ;
}
}
}
}
@ -1253,20 +1360,37 @@ export default {
.title {
font-size: 20px;
font-weight: bold;
font-stretch: normal;
letter-spacing: 0px;
color: #ffffff;
width: 88%;
margin-left: 12%;
margin-left: 8%;
text-align: left;
font-family: "ZHJT";
display: flex;
margin-top: 2px;
padding-top: 1.5px;
.video_pause_box{
margin-left: 43%;
display: flex;
width: 25%;
align-items: center;
cursor: pointer;
.pause_txt{
font-size: 14px;
color: #47c5f0;
margin-left: 5px;
margin-top: 3px;
}
}
}
.video_box {
width: 90%;
height: 86%;
background-color: #31bdff;
opacity: 0.2;
height: 85%;
background-color: rgba(49,189,255,0.2);
// opacity: 0.2;
margin: 0 auto;
margin-top: 2%;
display: flex;
@ -1278,6 +1402,17 @@ export default {
height: 92%;
// background: red;
}
.ispause_box{
width: 96%;
height:94%;
margin: 0 auto;
img{
width:100%;
height: 100%;
}
}
}
}
@ -1287,12 +1422,11 @@ export default {
.title {
font-size: 20px;
font-weight: bold;
font-stretch: normal;
font-family: "ZHJT";
letter-spacing: 0px;
color: #ffffff;
width: 88%;
margin-left: 12%;
margin-left: 9%;
text-align: left;
}
.ph_box {
@ -1308,13 +1442,13 @@ export default {
height: 21%;
.title {
font-size: 20px;
font-weight: bold;
font-stretch: normal;
font-family: "ZHJT";
letter-spacing: 0px;
color: #ffffff;
width: 88%;
margin-left: 12%;
margin-left: 9%;
text-align: left;
margin-top: 4px;
}
.ph_box {
@ -1345,4 +1479,30 @@ export default {
}
}
}
.select_date{
background: rgba(17, 71, 96, 0.3) !important;
border:1px solid rgb(17, 71, 96) !important;
.el-picker-panel__body{
color: #fff;
.el-date-table{
th{
color: #fff;
}
}
}
.el-picker-panel__icon-btn{
color:#fff;
}
.el-date-table td.in-range div{
background:rgba(17, 71, 96, 0.9) ;
}
.el-date-range-picker__content.is-left{
border-right:1px solid rgb(17, 71, 96) !important;
}
.el-date-table th{
border-bottom:1px solid rgb(17, 71, 96) !important;
}
}
</style>

Loading…
Cancel
Save