机械配置
parent
27bc05232f
commit
4fecf9f677
Binary file not shown.
After Width: | Height: | Size: 4.0 KiB |
|
@ -1,5 +1,6 @@
|
||||||
import request from '@/utils/request'
|
import request from '@/utils/request'
|
||||||
|
|
||||||
|
//机智管家-管理指标
|
||||||
const machGetManageQuota=(projectId)=>{
|
const machGetManageQuota=(projectId)=>{
|
||||||
return request({
|
return request({
|
||||||
url: '/manage/bgscreen/machMater/machGetManageQuota',
|
url: '/manage/bgscreen/machMater/machGetManageQuota',
|
||||||
|
@ -9,8 +10,132 @@ const machGetManageQuota=(projectId)=>{
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
//机智管家-设备概况
|
||||||
|
const machGetEquipmentOverview=(projectId)=>{
|
||||||
|
return request({
|
||||||
|
url: '/manage/bgscreen/machMater/machGetEquipmentOverview',
|
||||||
|
method: 'get',
|
||||||
|
params: {
|
||||||
|
projectId: projectId
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
//时间段内工号申领情况
|
|
||||||
|
//机智管家-操作证情况
|
||||||
|
const machGetCertInfoData=(projectId)=>{
|
||||||
|
return request({
|
||||||
|
url: '/manage/bgscreen/machMater/machGetCertInfoData',
|
||||||
|
method: 'get',
|
||||||
|
params: {
|
||||||
|
projectId: projectId
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
//机智管家-机械地图数据
|
||||||
|
const machSelectMachineMapData=(projectId)=>{
|
||||||
|
return request({
|
||||||
|
url: '/manage/bgscreen/machMater/machSelectMachineMapData',
|
||||||
|
method: 'get',
|
||||||
|
params: {
|
||||||
|
projectId: projectId
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
//机智管家-获取地图项目列表
|
||||||
|
const machGetMapData=(projectId)=>{
|
||||||
|
return request({
|
||||||
|
url: '/manage/bgscreen/machMater/machGetMapData',
|
||||||
|
method: 'get',
|
||||||
|
params: {
|
||||||
|
projectId: projectId
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
//机智管家-设备详情
|
||||||
|
const machGetMachineInfo=(projectId,deviceNum)=>{
|
||||||
|
return request({
|
||||||
|
url: '/manage/bgscreen/machMater/machGetMachineInfo',
|
||||||
|
method: 'get',
|
||||||
|
params: {
|
||||||
|
projectId: projectId,
|
||||||
|
deviceNum:deviceNum
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
//机智管家-分类及工时情况
|
||||||
|
const machGetClassifyWorks=(projectId)=>{
|
||||||
|
return request({
|
||||||
|
url: '/manage/bgscreen/machMater/machGetClassifyWorks',
|
||||||
|
method: 'get',
|
||||||
|
params: {
|
||||||
|
projectId: projectId
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
//机智管家-设备详情Url
|
||||||
|
const machGetSystemDeviceInfoUrl=(projectId,deviceNum)=>{
|
||||||
|
return request({
|
||||||
|
url: '/manage/bgscreen/machMater/machGetSystemDeviceInfoUrl',
|
||||||
|
method: 'get',
|
||||||
|
params: {
|
||||||
|
projectId: projectId,
|
||||||
|
deviceNum:deviceNum
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//机智管家-监控预警
|
||||||
|
const machGetClockInException=(projectId,pageSize)=>{
|
||||||
|
return request({
|
||||||
|
url: '/manage/bgscreen/machMater/machGetClockInException',
|
||||||
|
method: 'get',
|
||||||
|
params: {
|
||||||
|
projectId: projectId,
|
||||||
|
pageSize:pageSize
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
//机智管家-根据项目获取设备信息
|
||||||
|
const machGetDeviceInfoByProjectId=(projectId)=>{
|
||||||
|
return request({
|
||||||
|
url: '/manage/bgscreen/machMater/machGetDeviceInfoByProjectId',
|
||||||
|
method: 'get',
|
||||||
|
params: {
|
||||||
|
projectId: projectId
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
//机智管家-获取异常预警
|
||||||
|
const machGetExceptionAlert=(projectId,size)=>{
|
||||||
|
return request({
|
||||||
|
url: '/manage/bgscreen/machMater/machGetExceptionAlert',
|
||||||
|
method: 'get',
|
||||||
|
params: {
|
||||||
|
projectId: projectId,
|
||||||
|
size:size
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
//材料销号制-获取工号信息
|
||||||
|
const materGetConcreteMaterialActQuantityGhInfoService=data=>{
|
||||||
|
return request({
|
||||||
|
url: '/manage/bgscreen/machMater/materGetConcreteMaterialActQuantityGhInfoService',
|
||||||
|
method: 'get',
|
||||||
|
params: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
//材料销号制-时间段内工号申领情况
|
||||||
const materGetConcreteMaterialActQuantityBuildingNoInfoService=data=>{
|
const materGetConcreteMaterialActQuantityBuildingNoInfoService=data=>{
|
||||||
return request({
|
return request({
|
||||||
url: '/manage/bgscreen/machMater/materGetConcreteMaterialActQuantityBuildingNoInfoService',
|
url: '/manage/bgscreen/machMater/materGetConcreteMaterialActQuantityBuildingNoInfoService',
|
||||||
|
@ -19,7 +144,58 @@ const materGetConcreteMaterialActQuantityBuildingNoInfoService=data=>{
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//材料销号制-获取用量情况统计服务
|
||||||
|
const materGetProjectChaoHaoStatisticsRPTService=data=>{
|
||||||
|
return request({
|
||||||
|
url: '/manage/bgscreen/machMater/materGetProjectChaoHaoStatisticsRPTService',
|
||||||
|
method: 'get',
|
||||||
|
params: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
//材料销号制-获取超耗原因分析(混凝土)
|
||||||
|
const materGetReportConcreteExceedReasonService=data=>{
|
||||||
|
return request({
|
||||||
|
url: '/manage/bgscreen/machMater/materGetReportConcreteExceedReasonService',
|
||||||
|
method: 'get',
|
||||||
|
params: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
//获取超耗率top5材料(混凝土)
|
||||||
|
const materGetReportConcreteExceedMaterielTopService=data=>{
|
||||||
|
return request({
|
||||||
|
url: '/manage/bgscreen/machMater/materGetReportConcreteExceedMaterielTopService',
|
||||||
|
method: 'get',
|
||||||
|
params: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
//材料销号制-今日申领工单
|
||||||
|
const materGetConcreteOrderDetailsInfoService=data=>{
|
||||||
|
return request({
|
||||||
|
url: '/manage/bgscreen/machMater/materGetConcreteOrderDetailsInfoService',
|
||||||
|
method: 'get',
|
||||||
|
params: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
export default{
|
export default{
|
||||||
machGetManageQuota,
|
machGetManageQuota,
|
||||||
materGetConcreteMaterialActQuantityBuildingNoInfoService
|
machGetEquipmentOverview,
|
||||||
|
machGetCertInfoData,
|
||||||
|
machSelectMachineMapData,
|
||||||
|
machGetMapData,
|
||||||
|
machGetClassifyWorks,
|
||||||
|
machGetClockInException,
|
||||||
|
machGetDeviceInfoByProjectId,
|
||||||
|
machGetExceptionAlert,
|
||||||
|
machGetMachineInfo,
|
||||||
|
machGetSystemDeviceInfoUrl,
|
||||||
|
materGetConcreteMaterialActQuantityBuildingNoInfoService,
|
||||||
|
materGetConcreteMaterialActQuantityGhInfoService,
|
||||||
|
materGetProjectChaoHaoStatisticsRPTService,
|
||||||
|
materGetReportConcreteExceedReasonService,
|
||||||
|
materGetReportConcreteExceedMaterielTopService,
|
||||||
|
materGetConcreteOrderDetailsInfoService
|
||||||
}
|
}
|
|
@ -0,0 +1 @@
|
||||||
|
<svg class="icon" style="width: 1.017578125em;height: 1em;vertical-align: middle;fill: currentColor;overflow: hidden;" viewBox="0 0 1042 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="13458"><path d="M682.057143 310.857143h-256v73.142857h219.428571v493.714286h-493.714285V384h128v-73.142857h-164.571429c-20.114286 0-36.571429 16.457143-36.571429 36.571428v566.857143c0 20.114286 16.457143 36.571429 36.571429 36.571429h566.857143c20.114286 0 36.571429-16.457143 36.571428-36.571429V347.428571c0-20.114286-16.457143-36.571429-36.571428-36.571428zM919.771429 73.142857h-566.857143c-20.114286 0-36.571429 16.457143-36.571429 36.571429v566.857143c0 20.114286 16.457143 36.571429 36.571429 36.571428h256v-73.142857h-219.428572V146.285714h493.714286v493.714286h-128v73.142857h164.571429c20.114286 0 36.571429-16.457143 36.571428-36.571428V109.714286c0-20.114286-16.457143-36.571429-36.571428-36.571429z" p-id="13459"></path></svg>
|
After Width: | Height: | Size: 938 B |
|
@ -0,0 +1 @@
|
||||||
|
<svg class="icon" style="width: 1em;height: 1em;vertical-align: middle;fill: currentColor;overflow: hidden;" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="8341"><path d="M658.285714 1024H0V0h658.285714z m-512-146.285714h365.714286V146.285714H146.285714z" p-id="8342"></path><path d="M329.142857 329.142857m-109.714286 0a109.714286 109.714286 0 1 0 219.428572 0 109.714286 109.714286 0 1 0-219.428572 0Z" p-id="8343"></path><path d="M219.428571 731.428571h219.428572v73.142858H219.428571zM771.657143 1011.565714l-80.457143-121.417143L877.714286 765.074286V258.925714L691.2 133.851429l80.457143-121.417143L1024 179.931429v664.137142l-252.342857 167.497143z" p-id="8344"></path></svg>
|
After Width: | Height: | Size: 717 B |
|
@ -0,0 +1,236 @@
|
||||||
|
<template>
|
||||||
|
<div :style="{ height: height + 'px' }" ref="chart"></div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
props: {
|
||||||
|
data: {
|
||||||
|
type: Array,
|
||||||
|
},
|
||||||
|
height: {
|
||||||
|
type: Number,
|
||||||
|
},
|
||||||
|
showval: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
option: {},
|
||||||
|
};
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
this.init();
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
init() {
|
||||||
|
this.getChartData();
|
||||||
|
},
|
||||||
|
//分类及工时情况
|
||||||
|
getChartData() {
|
||||||
|
var chChartBar = echarts.init(this.$refs.chart);
|
||||||
|
this.echartBar(chChartBar, this.data);
|
||||||
|
},
|
||||||
|
echartBar(chChart, chartData) {
|
||||||
|
let newPromise = new Promise((resolve) => {
|
||||||
|
resolve();
|
||||||
|
});
|
||||||
|
//然后异步执行echarts的初始化函数
|
||||||
|
newPromise.then(() => {
|
||||||
|
var value = [];
|
||||||
|
var prop = [];
|
||||||
|
var text = [];
|
||||||
|
var zero = [];
|
||||||
|
var bgd = [];
|
||||||
|
var total = 0;
|
||||||
|
for (let i = chartData.length - 1; i >= 0; i--) {
|
||||||
|
total += +chartData[i].value;
|
||||||
|
value.push(chartData[i].value);
|
||||||
|
prop.push(chartData[i].prop);
|
||||||
|
text.push(chartData[i].text);
|
||||||
|
bgd.push(100);
|
||||||
|
zero.push(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
var data = [];
|
||||||
|
var data_all = new Array(prop.length);
|
||||||
|
for (let i = 0; i < prop.length; i++) {
|
||||||
|
let tmp = new Array(prop.length).fill(0);
|
||||||
|
tmp[i] = prop[i];
|
||||||
|
data.push(tmp);
|
||||||
|
let tmp_all = 0;
|
||||||
|
|
||||||
|
for (let j = i; j < prop.length; j++) {
|
||||||
|
tmp_all += +prop[j];
|
||||||
|
}
|
||||||
|
data_all[i] = tmp_all.toFixed(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
data_all.splice(0, 1);
|
||||||
|
data_all.push(0);
|
||||||
|
|
||||||
|
var series = [
|
||||||
|
//背景色--------------------我是分割线君------------------------------//
|
||||||
|
{
|
||||||
|
show: true,
|
||||||
|
type: "bar",
|
||||||
|
barGap: "-100%",
|
||||||
|
barWidth: "6", //统计条宽度
|
||||||
|
itemStyle: {
|
||||||
|
normal: {
|
||||||
|
color: "rgba(27, 61, 133,0.5)",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
z: 1,
|
||||||
|
data: bgd,
|
||||||
|
},
|
||||||
|
//数据条--------------------我是分割线君------------------------------//
|
||||||
|
{
|
||||||
|
show: true,
|
||||||
|
type: "bar",
|
||||||
|
xAxisIndex: 1, //代表使用第二个X轴刻度!!!!!!!!!!!!!!!!!!!!!!!!
|
||||||
|
barGap: "-100%",
|
||||||
|
barWidth: "6", //统计条宽度
|
||||||
|
itemStyle: {
|
||||||
|
normal: {
|
||||||
|
color: "rgba(22,203,115,0.05)",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
label: {
|
||||||
|
normal: {
|
||||||
|
show: true,
|
||||||
|
//label 的position位置可以是top bottom left,right,也可以是固定值
|
||||||
|
//在这里需要上下统一对齐,所以用固定值
|
||||||
|
position: [0, "-25"],
|
||||||
|
rich: {
|
||||||
|
//富文本
|
||||||
|
prop: {
|
||||||
|
//自定义颜色
|
||||||
|
color: "#c6d9fa",
|
||||||
|
fontSize: "16",
|
||||||
|
},
|
||||||
|
index: {
|
||||||
|
color: "#fcbc02",
|
||||||
|
fontStyle: "italic",
|
||||||
|
padding: [0, 0, 0, 5],
|
||||||
|
fontSize: "14",
|
||||||
|
},
|
||||||
|
name: {
|
||||||
|
width: this.showval ? 280 : 300,
|
||||||
|
color: "#c6d9fa",
|
||||||
|
padding: [0, 0, 0, 10],
|
||||||
|
fontSize: "16",
|
||||||
|
},
|
||||||
|
color: {
|
||||||
|
color: "#8ca2be",
|
||||||
|
fontSize: "14",
|
||||||
|
},
|
||||||
|
arrow: {
|
||||||
|
width: 12,
|
||||||
|
height: 8,
|
||||||
|
backgroundColor: {
|
||||||
|
image: "http://fileimg.makalu.cc/WEB_2B7C06210CD44D55BFEE6205A35DE4A7.png",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
formatter: (data) => {
|
||||||
|
//富文本固定格式{colorName|这里填你想要写的内容}
|
||||||
|
if (this.showval) {
|
||||||
|
return "{arrow|}{index|No." + (chartData.length - data.dataIndex) + "}{name|" + text[data.dataIndex] + "}{prop|" + value[data.dataIndex] + " " + prop[data.dataIndex] + "} {color| %}";
|
||||||
|
}
|
||||||
|
return "{arrow|}{index|No." + (chartData.length - data.dataIndex) + "}{name|" + text[data.dataIndex] + "}{prop|" + prop[data.dataIndex] + "} {color| %}";
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
data: value,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: "bar",
|
||||||
|
stack: "总",
|
||||||
|
barWidth: 6,
|
||||||
|
itemStyle: {
|
||||||
|
normal: {
|
||||||
|
barBorderColor: "rgba(0,0,0,0)",
|
||||||
|
color: "rgba(0,0,0,0)",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
data: data_all,
|
||||||
|
},
|
||||||
|
];
|
||||||
|
for (let i = 0; i < data.length; i++) {
|
||||||
|
series.push({
|
||||||
|
type: "bar",
|
||||||
|
barWidth: 6,
|
||||||
|
stack: "总",
|
||||||
|
// itemStyle: {
|
||||||
|
// normal: {
|
||||||
|
// color: '#0780d9'
|
||||||
|
// }
|
||||||
|
// },
|
||||||
|
itemStyle: {
|
||||||
|
normal: {
|
||||||
|
color: new echarts.graphic.LinearGradient(1, 0, 0, 0, [
|
||||||
|
{
|
||||||
|
offset: 0,
|
||||||
|
color: "#41adf5",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
offset: 1,
|
||||||
|
color: "#175eac",
|
||||||
|
},
|
||||||
|
]),
|
||||||
|
barBorderRadius: [5, 5, 5, 5],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
data: data[i],
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
this.option = {
|
||||||
|
grid: {
|
||||||
|
left: "2%",
|
||||||
|
right: "2%",
|
||||||
|
bottom: "-8%",
|
||||||
|
top: "3%",
|
||||||
|
containLabel: true,
|
||||||
|
},
|
||||||
|
yAxis: {
|
||||||
|
type: "category",
|
||||||
|
axisLabel: {
|
||||||
|
show: false, //让Y轴数据不显示
|
||||||
|
},
|
||||||
|
itemStyle: {},
|
||||||
|
axisTick: {
|
||||||
|
show: false, //隐藏Y轴刻度
|
||||||
|
},
|
||||||
|
axisLine: {
|
||||||
|
show: false, //隐藏Y轴线段
|
||||||
|
},
|
||||||
|
data: text,
|
||||||
|
},
|
||||||
|
|
||||||
|
xAxis: [
|
||||||
|
{
|
||||||
|
show: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
show: false,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
series: series,
|
||||||
|
};
|
||||||
|
|
||||||
|
chChart.setOption(this.option);
|
||||||
|
window.onresize = chChart.resize;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
},
|
||||||
|
watch: {
|
||||||
|
data: function () {
|
||||||
|
this.init();
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
</script>
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,244 @@
|
||||||
|
<template>
|
||||||
|
<div style="height:100%" ref="map"></div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
props: {
|
||||||
|
data: {
|
||||||
|
type: Array,
|
||||||
|
},
|
||||||
|
height: {
|
||||||
|
type: Number,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
option: {},
|
||||||
|
};
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
this.loadMap(this.data);
|
||||||
|
window.chartClick = this.chartClick;
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
chartClick(id) {
|
||||||
|
this.$emit("projectid", id);
|
||||||
|
},
|
||||||
|
loadMap(outdata) {
|
||||||
|
console.log();
|
||||||
|
|
||||||
|
var myChart = echarts.init(this.$refs.map);
|
||||||
|
var max = 1000,
|
||||||
|
min = 1;
|
||||||
|
var maxSize4Pin = 100,
|
||||||
|
minSize4Pin = 20;
|
||||||
|
var geoCoordMap = {};
|
||||||
|
/*获取地图数据*/
|
||||||
|
var mapFeatures = echarts.getMap("china").geoJson.features;
|
||||||
|
// console.log(mapFeatures)
|
||||||
|
mapFeatures.forEach(function (v) {
|
||||||
|
// 地区名称
|
||||||
|
var name = v.properties.name;
|
||||||
|
// 地区经纬度
|
||||||
|
geoCoordMap[name] = v.properties.cp;
|
||||||
|
});
|
||||||
|
|
||||||
|
var convertData = function (outdata) {
|
||||||
|
var res = [];
|
||||||
|
for (var i = 0; i < outdata.length; i++) {
|
||||||
|
var geoCoord = geoCoordMap[outdata[i].name];
|
||||||
|
if (geoCoord) {
|
||||||
|
res.push({
|
||||||
|
name: outdata[i].name,
|
||||||
|
value: geoCoord.concat(outdata[i].count),
|
||||||
|
items: outdata[i].items,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return res;
|
||||||
|
};
|
||||||
|
|
||||||
|
this.option = {
|
||||||
|
tooltip: {
|
||||||
|
show: true,
|
||||||
|
trigger: "item",
|
||||||
|
enterable: true,
|
||||||
|
showContent: true,
|
||||||
|
padding: 0,
|
||||||
|
triggerOn: "click",
|
||||||
|
formatter: function (params) {
|
||||||
|
var tipHtml = "";
|
||||||
|
if (params.data) {
|
||||||
|
tipHtml += '<div style="background:rgba(22,80,158,0.5);padding: 0 10px;border: 2px solid #265dad">' + '<div style="width:100%;height:40px;line-height:40px;border-bottom:2px solid rgba(7,166,255,0.7);">' + '<i style="display:inline-block;width:10px;height:10px;background:#16d6ff;border-radius:40px;">' + "</i>" + '<span style="margin-left:10px;color:#fff;font-size:16px;">' + params.data.name + " (项目总数:" + params.data.value[2] + ")" + "</span>" + "</div>" + '<div style="padding:5px;max-height: 350px;overflow: auto" class="china-map">';
|
||||||
|
for (var i = 0; i < params.data.items.length; i++) {
|
||||||
|
tipHtml += `<p style="color:#11ee7d;padding:8px 0;cursor: pointer" onclick="chartClick('${params.data.items[i].id}')">${params.data.items[i].projectName}</p>`;
|
||||||
|
}
|
||||||
|
tipHtml += "</div>" + "</div>";
|
||||||
|
return tipHtml;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
geo: {
|
||||||
|
map: "china",
|
||||||
|
show: true,
|
||||||
|
roam: false,
|
||||||
|
zoom: 1.17,
|
||||||
|
label: {
|
||||||
|
emphasis: {
|
||||||
|
show: false,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
layoutSize: "100%",
|
||||||
|
itemStyle: {
|
||||||
|
areaColor: "#86c2f8",
|
||||||
|
borderColor: "#86c2f8",
|
||||||
|
shadowColor: "#86c2f8",
|
||||||
|
shadowBlur: 25,
|
||||||
|
borderWidth: 5,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
series: [
|
||||||
|
{
|
||||||
|
type: "scatter",
|
||||||
|
coordinateSystem: "geo",
|
||||||
|
symbolSize: 25,
|
||||||
|
label: {
|
||||||
|
normal: {
|
||||||
|
formatter: "{b}",
|
||||||
|
position: "top",
|
||||||
|
show: true,
|
||||||
|
fontSize: 16, //省会字体大小
|
||||||
|
fontWeight: "bold",
|
||||||
|
color: "#ffffff",
|
||||||
|
},
|
||||||
|
emphasis: {
|
||||||
|
show: false,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
itemStyle: {
|
||||||
|
normal: {
|
||||||
|
color: "#ffffff",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
data: convertData(outdata),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: "map",
|
||||||
|
roam: false,
|
||||||
|
zoom: 1.15,
|
||||||
|
map: "china", //使用
|
||||||
|
label: {
|
||||||
|
normal: {
|
||||||
|
show: true,
|
||||||
|
fontSize: 16, //省会字体大小
|
||||||
|
|
||||||
|
textStyle: {
|
||||||
|
color: "#ffffff",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
emphasis: {
|
||||||
|
show: false,
|
||||||
|
color: "#11ee7d", //指上省会字体颜色
|
||||||
|
},
|
||||||
|
},
|
||||||
|
itemStyle: {
|
||||||
|
normal: {
|
||||||
|
areaColor: {
|
||||||
|
type: "radial",
|
||||||
|
x: 0.5,
|
||||||
|
y: 0.5,
|
||||||
|
r: 0.8,
|
||||||
|
colorStops: [
|
||||||
|
{
|
||||||
|
offset: 0,
|
||||||
|
color: "#1c2a4c", // 0% 处的颜色
|
||||||
|
},
|
||||||
|
{
|
||||||
|
offset: 1,
|
||||||
|
color: "#1f335e", // 100% 处的颜色
|
||||||
|
},
|
||||||
|
],
|
||||||
|
globalCoord: true, // 缺省为 false
|
||||||
|
},
|
||||||
|
shadowColor: "rgb(58,115,192)",
|
||||||
|
borderColor: "#8ac2fb",
|
||||||
|
},
|
||||||
|
emphasis: {
|
||||||
|
areaColor: "#22578b", //指上背景限色
|
||||||
|
textStyle: {
|
||||||
|
color: "#11ee7d",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: "effectScatter",
|
||||||
|
coordinateSystem: "geo",
|
||||||
|
rippleEffect: {
|
||||||
|
brushType: "stroke", //fill
|
||||||
|
period: 2,
|
||||||
|
scale: 3,
|
||||||
|
},
|
||||||
|
showEffectOn: "render",
|
||||||
|
symbol: "circle",
|
||||||
|
symbolSize: 25,
|
||||||
|
zlevel: 1,
|
||||||
|
itemStyle: {
|
||||||
|
normal: {
|
||||||
|
show: true,
|
||||||
|
color: {
|
||||||
|
type: "radial",
|
||||||
|
x: 0.5,
|
||||||
|
y: 0.5,
|
||||||
|
r: 0.5,
|
||||||
|
colorStops: [
|
||||||
|
{
|
||||||
|
offset: 0,
|
||||||
|
color: "rgba(129,229,255,1)",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
offset: 0.8,
|
||||||
|
color: "rgba(129,229,255,1)",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
offset: 1,
|
||||||
|
color: "rgba(129,229,255,1)",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
global: false, // 缺省为 false
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
label: {
|
||||||
|
normal: {
|
||||||
|
show: true,
|
||||||
|
color: "#fff",
|
||||||
|
fontWeight: "bold",
|
||||||
|
position: "inside", // inside 中间
|
||||||
|
formatter: function (para) {
|
||||||
|
return "{cnNum|" + para.data.value[2] + "}";
|
||||||
|
},
|
||||||
|
rich: {
|
||||||
|
cnNum: {
|
||||||
|
fontSize: 16,
|
||||||
|
color: "#000000",
|
||||||
|
fontWeight: "bold",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
data: convertData(outdata),
|
||||||
|
},
|
||||||
|
],
|
||||||
|
};
|
||||||
|
myChart.setOption(this.option);
|
||||||
|
},
|
||||||
|
},
|
||||||
|
watch: {
|
||||||
|
data: function (n, o) {
|
||||||
|
this.loadMap(this.data);
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
</script>
|
|
@ -0,0 +1,301 @@
|
||||||
|
<template>
|
||||||
|
<MyDialog v-if="show" v-model="show" width="40vw" height="65vh" class="machine-info-dlg">
|
||||||
|
<template slot="title">
|
||||||
|
{{ title }}
|
||||||
|
</template>
|
||||||
|
<div class="scroll info-main" v-loading="loading">
|
||||||
|
<div class="info-top">基础信息</div>
|
||||||
|
<div class="info-list" v-if="machInfo">
|
||||||
|
<div class="info-item">
|
||||||
|
<span class="info-label">设备简称:</span>
|
||||||
|
<span class="info-value">{{ machInfo.device_name }}</span>
|
||||||
|
</div>
|
||||||
|
<div class="info-item">
|
||||||
|
<span class="info-label">设备型号:</span>
|
||||||
|
<span class="info-value">{{ machInfo.device_model }}</span>
|
||||||
|
</div>
|
||||||
|
<div class="info-item">
|
||||||
|
<span class="info-label">设备品牌:</span>
|
||||||
|
<span class="info-value">{{ machInfo.device_brand }}</span>
|
||||||
|
</div>
|
||||||
|
<div class="info-item">
|
||||||
|
<span class="info-label">管理号码:</span>
|
||||||
|
<span class="info-value">{{ machInfo.manage_num }}</span>
|
||||||
|
</div>
|
||||||
|
<div class="info-item">
|
||||||
|
<span class="info-label">功率(kw):</span>
|
||||||
|
<span class="info-value">{{ machInfo.power }}</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="info-top">归属信息</div>
|
||||||
|
<div class="info-list" v-if="machInfo">
|
||||||
|
<div class="info-item">
|
||||||
|
<span class="info-label">公司名称:</span>
|
||||||
|
<span class="info-value">{{ machInfo.dept_name }}</span>
|
||||||
|
</div>
|
||||||
|
<div class="info-item">
|
||||||
|
<span class="info-label">项目名称:</span>
|
||||||
|
<span class="info-value">{{ machInfo.project_Name }}</span>
|
||||||
|
</div>
|
||||||
|
<div class="info-item">
|
||||||
|
<span class="info-label">当前位置:</span>
|
||||||
|
<span class="info-value">{{ machInfo.address }}</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="info-top">进场验收信息</div>
|
||||||
|
<div class="info-list" v-if="machInfo">
|
||||||
|
<div class="info-item">
|
||||||
|
<span class="info-label">评估价值(万元):</span>
|
||||||
|
<span class="info-value">{{ machInfo.costRemark }}</span>
|
||||||
|
</div>
|
||||||
|
<div class="info-item">
|
||||||
|
<span class="info-label">综合评价:</span>
|
||||||
|
<span class="info-value">{{ machInfo.examineRemark }}</span>
|
||||||
|
</div>
|
||||||
|
<div class="info-item">
|
||||||
|
<span class="info-label">验收时间:</span>
|
||||||
|
<span class="info-value">{{ machInfo.examineDate }}</span>
|
||||||
|
</div>
|
||||||
|
<div class="info-item" v-if="machInfo.pdfUrl">
|
||||||
|
<span class="info-label">验收报告:</span>
|
||||||
|
<span class="info-value">
|
||||||
|
<a class="link" :href="machInfo.pdfUrl" target="_blank">点击文件预览</a>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
<div class="info-item" v-if="photoInfo && photoInfo.length > 0">
|
||||||
|
<span class="info-label"></span>
|
||||||
|
<span class="info-value img-list">
|
||||||
|
<div v-for="(it, idx) in photoInfo" :key="idx" class="img-item">
|
||||||
|
<el-image :src="it.imageUrl" :preview-src-list="[it.imageUrl]" fit="cover" />
|
||||||
|
<div>{{ it.site }}</div>
|
||||||
|
</div>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="info-top">维保信息</div>
|
||||||
|
<div class="info-list" v-if="machInfo">
|
||||||
|
<div class="info-item">
|
||||||
|
<span class="info-label">维保类型:</span>
|
||||||
|
<span class="info-value">{{ machInfo.maintenance_type }}</span>
|
||||||
|
</div>
|
||||||
|
<div class="info-item">
|
||||||
|
<span class="info-label">维保内容:</span>
|
||||||
|
<span class="info-value">{{ machInfo.maintenance_content }}</span>
|
||||||
|
</div>
|
||||||
|
<div class="info-item">
|
||||||
|
<span class="info-label">维保金额:</span>
|
||||||
|
<span class="info-value">{{ machInfo.maintenance_money }}</span>
|
||||||
|
</div>
|
||||||
|
<div class="info-item">
|
||||||
|
<span class="info-label">维保时间:</span>
|
||||||
|
<span class="info-value">{{ machInfo.maintenance_time }}</span>
|
||||||
|
</div>
|
||||||
|
<div class="info-item">
|
||||||
|
<span class="info-label">维保人员:</span>
|
||||||
|
<span class="info-value">{{ machInfo.maintenance_person }}</span>
|
||||||
|
</div>
|
||||||
|
<div class="info-item" v-if="machInfo.maintenance_photo">
|
||||||
|
<span class="info-label">维保图片:</span>
|
||||||
|
<span class="info-value">
|
||||||
|
<el-image class="el-img-20" :src="machInfo.maintenance_photo" :preview-src-list="[machInfo.maintenance_photo]"></el-image>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="info-top">操作证信息</div>
|
||||||
|
<div class="info-list">
|
||||||
|
<div v-for="(it, idx) in deviceInfo" :key="idx">
|
||||||
|
<div class="info-item">
|
||||||
|
<span class="info-label">证书编码:</span>
|
||||||
|
<span class="info-value">{{ it.num }}</span>
|
||||||
|
</div>
|
||||||
|
<div class="info-item">
|
||||||
|
<span class="info-label">人员名称:</span>
|
||||||
|
<span class="info-value">{{ it.name }}</span>
|
||||||
|
</div>
|
||||||
|
<div class="info-item">
|
||||||
|
<span class="info-label">人员电话:</span>
|
||||||
|
<span class="info-value">{{ it.phone }}</span>
|
||||||
|
</div>
|
||||||
|
<div class="info-item">
|
||||||
|
<span class="info-label">有效日期:</span>
|
||||||
|
<span class="info-value">{{ it.date }}</span>
|
||||||
|
</div>
|
||||||
|
<div class="info-item">
|
||||||
|
<span class="info-label">交底培训:</span>
|
||||||
|
<span class="info-value">已进行交底培训</span>
|
||||||
|
</div>
|
||||||
|
<div class="info-item">
|
||||||
|
<span class="info-label">操作证图片:</span>
|
||||||
|
<span class="info-value">
|
||||||
|
<div v-if="it.photo" style="display: inline-block">
|
||||||
|
<el-image class="el-img-20" :src="it.photo" :preview-src-list="[it.photo]" fit="cover" />
|
||||||
|
</div>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="info-top">操作规范文档</div>
|
||||||
|
<div class="info-list">
|
||||||
|
<div class="info-item">
|
||||||
|
<a class="link" v-if="machInfo.manual_url" :href="getManualUrl(machInfo.manual_url)" target="_blank">点击预览</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</MyDialog>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
show: false,
|
||||||
|
title: "机械信息卡",
|
||||||
|
machInfo: {},
|
||||||
|
photoInfo: [],
|
||||||
|
deviceInfo: [],
|
||||||
|
loading: true,
|
||||||
|
};
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
getManualUrl(url){
|
||||||
|
if(url.indexOf("://")==-1){
|
||||||
|
if(url.indexOf("/")!=0){
|
||||||
|
url="/"+url;
|
||||||
|
}
|
||||||
|
return "https://file-other.makalu.cc"+url;
|
||||||
|
}
|
||||||
|
return url;
|
||||||
|
},
|
||||||
|
showDialog(prjId, deviceNum) {
|
||||||
|
this.$api.machMater.machGetMachineInfo(prjId, deviceNum).then((res) => {
|
||||||
|
this.loading = false;
|
||||||
|
this.machInfo = res.data?.getMachineInfo?.data || {};
|
||||||
|
this.photoInfo = res.data?.getMachinePhoto?.data || [];
|
||||||
|
this.deviceInfo = res.data?.getMachineDeviceInfo?.data || [];
|
||||||
|
});
|
||||||
|
this.show = true;
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="less">
|
||||||
|
.machine-info-dlg {
|
||||||
|
.popup-project-introduction-min {
|
||||||
|
transform: translateY(20%);
|
||||||
|
min-width: 960px;
|
||||||
|
.popup-project-introduction-details {
|
||||||
|
padding: 0px;
|
||||||
|
.quality-table {
|
||||||
|
padding: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
* {
|
||||||
|
font-size: 16px;
|
||||||
|
line-height: 30px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.info-item {
|
||||||
|
.info-label {
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
.info-value {
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.link {
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.info-top {
|
||||||
|
color: #00eaff;
|
||||||
|
background-image: linear-gradient(120deg, #097fca5e 0%, #010b2d4d 100%);
|
||||||
|
padding-left: 20px;
|
||||||
|
}
|
||||||
|
.info-list {
|
||||||
|
padding-left: 40px;
|
||||||
|
}
|
||||||
|
.info-item {
|
||||||
|
.info-label {
|
||||||
|
color: #4ab4bc;
|
||||||
|
vertical-align: top;
|
||||||
|
margin-right:10px;
|
||||||
|
}
|
||||||
|
.info-value {
|
||||||
|
color: #16d6ff;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.link {
|
||||||
|
color: #097fca;
|
||||||
|
}
|
||||||
|
.img-list {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
.img-item {
|
||||||
|
width: 10%;
|
||||||
|
margin-right: 10px;
|
||||||
|
text-align: center;
|
||||||
|
.el-image{
|
||||||
|
height: 100px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.el-img-20 {
|
||||||
|
width: 20%;
|
||||||
|
}
|
||||||
|
.info-main {
|
||||||
|
max-height: 690px;
|
||||||
|
overflow-y: auto;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (min-width: 1921px) and (max-width: 2560px) {
|
||||||
|
.machine-info-dlg {
|
||||||
|
.popup-project-introduction-details {
|
||||||
|
* {
|
||||||
|
font-size: 24px;
|
||||||
|
line-height: 40px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.info-main {
|
||||||
|
max-height: 740px;
|
||||||
|
overflow-y: auto;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (min-width: 2561px) {
|
||||||
|
.machine-info-dlg {
|
||||||
|
.popup-project-introduction-details {
|
||||||
|
* {
|
||||||
|
font-size: 32px;
|
||||||
|
line-height: 60px;
|
||||||
|
}
|
||||||
|
.info-main {
|
||||||
|
max-height: 1110px;
|
||||||
|
}
|
||||||
|
.info-list {
|
||||||
|
padding-left: 60px;
|
||||||
|
}
|
||||||
|
.info-item {
|
||||||
|
.info-label {
|
||||||
|
font-size: 24px;
|
||||||
|
}
|
||||||
|
.info-value {
|
||||||
|
margin-left: 20px;
|
||||||
|
font-size: 24px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.link {
|
||||||
|
font-size: 24px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
|
@ -1,14 +1,87 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="machine-manage main-page">
|
<div class="machine-manage main-page">
|
||||||
<el-col :span="6" class="h100">
|
<el-col :span="6" class="h100">
|
||||||
<module-one-1-1 label="设备概况" class="labor-base"> </module-one-1-1>
|
<module-one-1-1 label="设备概况" class="device-info">
|
||||||
|
<div class="survey_title">
|
||||||
|
<div class="survey_title_btn">
|
||||||
|
<div :class="overview == 0 ? 'survey_title_btn_min active' : 'survey_title_btn_min'" @click="onClickoOverview(0)">设备数量</div>
|
||||||
|
</div>
|
||||||
|
<div class="survey_title_btn">
|
||||||
|
<div :class="overview == 1 ? 'survey_title_btn_min active' : 'survey_title_btn_min'" @click="onClickoOverview(1)">绑定数量</div>
|
||||||
|
</div>
|
||||||
|
<div class="survey_title_btn">
|
||||||
|
<div :class="overview == 2 ? 'survey_title_btn_min active' : 'survey_title_btn_min'" @click="onClickoOverview(2)">监测数量</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="survey_content">
|
||||||
|
<div class="survey_content_img">
|
||||||
|
<svg-icon icon-class="device" v-show="overview == 0" />
|
||||||
|
<svg-icon icon-class="monitor" v-show="overview == 2" />
|
||||||
|
<svg-icon icon-class="bind" v-show="overview == 1" />
|
||||||
|
</div>
|
||||||
|
<div class="survey_content_number">
|
||||||
|
<p v-cloak>{{ showOverViewLabel }}</p>
|
||||||
|
<div class="survey_content_value">
|
||||||
|
<span v-cloak>{{ showOverviewData.countNum }}</span> 台
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="survey_title">
|
||||||
|
<div class="survey_title_btn">
|
||||||
|
<div class="survey_text survey_text_zy"></div>
|
||||||
|
<div class="survey_text_value">
|
||||||
|
<p>自有</p>
|
||||||
|
<span v-cloak>{{ showOverviewData.zyNum }}</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="survey_title_btn">
|
||||||
|
<div class="survey_text survey_text_zl"></div>
|
||||||
|
<div class="survey_text_value">
|
||||||
|
<p>租赁</p>
|
||||||
|
<span v-cloak>{{ showOverviewData.zlNum }}</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="survey_title_btn">
|
||||||
|
<div class="survey_text survey_text_fb"></div>
|
||||||
|
<div class="survey_text_value">
|
||||||
|
<p>分包</p>
|
||||||
|
<span v-cloak>{{ showOverviewData.fbNum }}</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</module-one-1-1>
|
||||||
|
|
||||||
<module-one-1-1 label="分类及工时情况" class="labor-base"> </module-one-1-1>
|
<module-one-1-1 label="分类及工时情况" class="warning-info">
|
||||||
|
<div class="warning-info-title">
|
||||||
|
<div :class="infoNav == 0 ? 'active' : ''" @click="onWarningInfoNav(0)">设备数量</div>
|
||||||
|
<div :class="infoNav == 1 ? 'active' : ''" @click="onWarningInfoNav(1)">昨日工时</div>
|
||||||
|
<div :class="infoNav == 2 ? 'active' : ''" @click="onWarningInfoNav(2)">当月工时</div>
|
||||||
|
</div>
|
||||||
|
<div class="pcd-output-value" style="padding: 10px; justify-content: right">
|
||||||
|
<div class="pcd-output-value-key">
|
||||||
|
<div class="pcd-output-value-key-info">
|
||||||
|
<div class="pcd-rect"></div>
|
||||||
|
<div>已监控</div>
|
||||||
|
</div>
|
||||||
|
<div class="pcd-output-value-key-info">
|
||||||
|
<div class="pcd-rect"></div>
|
||||||
|
<div>未监控</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<process-control-bar :list="showClassifyBarData" :height="warningHeight" :number="3"></process-control-bar>
|
||||||
|
</module-one-1-1>
|
||||||
|
|
||||||
<module-one-1-1 label="设备运行动态" class="labor-base"> </module-one-1-1>
|
<module-one-1-1 label="设备运行动态" class="device-status">
|
||||||
|
<project-overview-chart :htmlShow="true" :key="'ai1' + chart3Key" :sp="''" :fn="changeChart3" :maintitle="deviceTitle" :legend-opt="deviceLegendOpt" :typedata="typeDistributionData" text="台" :height="chart3Height"></project-overview-chart>
|
||||||
|
</module-one-1-1>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="12" class="h100">
|
<el-col :span="12" class="h100">
|
||||||
<module-one-2-2 label="项目设备分布总览" class="h77"> </module-one-2-2>
|
<module-one-2-2 label="项目设备分布总览" class="h77">
|
||||||
|
<div style="height: calc(100% - 10px)">
|
||||||
|
<baidu-map :data="personnelListData" :building="buildingData"></baidu-map>
|
||||||
|
</div>
|
||||||
|
</module-one-2-2>
|
||||||
|
|
||||||
<module-one-2-1 label class="no-title no-border h22"> </module-one-2-1>
|
<module-one-2-1 label class="no-title no-border h22"> </module-one-2-1>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
@ -20,21 +93,57 @@
|
||||||
|
|
||||||
<module-one-1-1 label="监控异常预警" class="labor-base"> </module-one-1-1>
|
<module-one-1-1 label="监控异常预警" class="labor-base"> </module-one-1-1>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
<machine-info-dialog ref="machineInfoDialog"></machine-info-dialog>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import debounce from "lodash.debounce";
|
import debounce from "lodash.debounce";
|
||||||
|
import processControlBar from "./processControlBar.vue";
|
||||||
|
import machineInfoDialog from "./machineInfoDialog.vue";
|
||||||
|
import baiduMap from "./baiduMap.vue";
|
||||||
export default {
|
export default {
|
||||||
|
components: {
|
||||||
|
processControlBar,
|
||||||
|
baiduMap,
|
||||||
|
machineInfoDialog,
|
||||||
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
dpi: "",
|
dpi: "",
|
||||||
selProject: null,
|
selProject: null,
|
||||||
apiPath: "//jzgj.crfeb.com.cn",
|
//设备概况
|
||||||
|
overview: 0,
|
||||||
|
showOverViewLabel: "设备数量",
|
||||||
|
showOverviewData: {
|
||||||
|
countNum: 0,
|
||||||
|
zyNum: 0, //自有
|
||||||
|
zlNum: 0, //租赁
|
||||||
|
fbNum: 0, //分包
|
||||||
|
},
|
||||||
|
overviewData: [],
|
||||||
|
overviewInterval: null,
|
||||||
|
//分类及工时情况
|
||||||
|
warningHeight: 270,
|
||||||
|
infoNav: 0,
|
||||||
|
showClassifyBarData: null,
|
||||||
|
classifyBarData: [],
|
||||||
|
//设备运行动态
|
||||||
|
typeDistributionData: [],
|
||||||
|
chart3Key: 0,
|
||||||
|
deviceTitle: "",
|
||||||
|
deviceLegendOpt: {},
|
||||||
|
chart3Height: 260,
|
||||||
|
//项目设备分布总览
|
||||||
|
//百度地图
|
||||||
|
personnelListData: [],
|
||||||
|
buildingData: [],
|
||||||
|
baiduMapShow: false,
|
||||||
|
figureShow: true,
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
|
window.machApp = this;
|
||||||
this.$store.dispatch("ChangeNav", 801);
|
this.$store.dispatch("ChangeNav", 801);
|
||||||
this.$bus.$on(
|
this.$bus.$on(
|
||||||
"projectChange",
|
"projectChange",
|
||||||
|
@ -53,12 +162,100 @@ export default {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
this.resize();
|
this.resize();
|
||||||
|
window.machineInfoCard = this.machineInfoCard;
|
||||||
|
window.goZhgDetails = this.goZhgDetails;
|
||||||
|
window.goAQDetails = this.goAQDetails;
|
||||||
|
window.goOBDDetails = this.goOBDDetails;
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
goOBDDetails(deviceNum) {
|
||||||
|
//跳转OBD轨迹回放页面
|
||||||
|
let requestUrl = "https://jzgj.crfeb.com.cn/largeScreen/digitalConstruction/";
|
||||||
|
let url = requestUrl + "trajectory?deviceId=" + id;
|
||||||
|
window.open(url, "_blank");
|
||||||
|
},
|
||||||
|
goAQDetails(id) {
|
||||||
|
let deviceId = id.replace("aqzg-", "");
|
||||||
|
let url = "https://aqzg.makalu.cc/api/jumpLogin/jumpUrl?phone=15129368192&token=1e2b2fc6899044a59e7d473e33690adc&deviceId=" + deviceId;
|
||||||
|
window.open(url);
|
||||||
|
},
|
||||||
|
goZhgDetails(deviceNum) {
|
||||||
|
//跳转指挥官设备详情页
|
||||||
|
this.$api.machMater.machGetSystemDeviceInfoUrl(this.selProject.id, deviceNum).then((res) => {
|
||||||
|
if (res.msg) {
|
||||||
|
window.open(res.msg, "_blank");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
machineInfoCard(deviceNum) {
|
||||||
|
this.$refs.machineInfoDialog.showDialog(this.selProject.id, deviceNum);
|
||||||
|
},
|
||||||
|
projectClick() {},
|
||||||
|
changeChart3(opt) {
|
||||||
|
if (this.$dpi() == "1K") {
|
||||||
|
opt.legend[0].left = 200;
|
||||||
|
return opt;
|
||||||
|
} else if (this.$dpi() == "2K") {
|
||||||
|
opt.legend[0].left = 290;
|
||||||
|
return opt;
|
||||||
|
} else {
|
||||||
|
opt.legend[0].left = 500;
|
||||||
|
return opt;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
onWarningInfoNav(n) {
|
||||||
|
this.infoNav = n;
|
||||||
|
let tmps = this.classifyBarData.length > n ? this.classifyBarData[n] : [];
|
||||||
|
if (tmps.length == 0) {
|
||||||
|
tmps = [
|
||||||
|
{
|
||||||
|
total: 0,
|
||||||
|
unit: "台",
|
||||||
|
yesMonitor: 0,
|
||||||
|
name: "高空升降平台(无司机室)",
|
||||||
|
notMonitor: 0,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
total: 0,
|
||||||
|
unit: "台",
|
||||||
|
yesMonitor: 0,
|
||||||
|
name: "施工电梯",
|
||||||
|
notMonitor: 0,
|
||||||
|
},
|
||||||
|
];
|
||||||
|
}
|
||||||
|
this.showClassifyBarData = tmps;
|
||||||
|
},
|
||||||
|
overviewClick() {
|
||||||
|
let n = this.overview;
|
||||||
|
n++;
|
||||||
|
if (n > 2) {
|
||||||
|
n = 0;
|
||||||
|
}
|
||||||
|
this.onClickoOverview(n);
|
||||||
|
},
|
||||||
|
onClickoOverview(n) {
|
||||||
|
this.overview = n;
|
||||||
|
this.showOverViewLabel = "设备数量,绑定数量,监测数量".split(",")[0];
|
||||||
|
let tmp =
|
||||||
|
this.overviewData.length > n
|
||||||
|
? this.overviewData[n]
|
||||||
|
: {
|
||||||
|
countNum: 0,
|
||||||
|
zyNum: 0, //自有
|
||||||
|
zlNum: 0, //租赁
|
||||||
|
fbNum: 0, //分包
|
||||||
|
};
|
||||||
|
this.showOverviewData = tmp;
|
||||||
|
},
|
||||||
resize() {
|
resize() {
|
||||||
let is1K = this.$dpi() == "1K";
|
let is1K = this.$dpi() == "1K";
|
||||||
let is2K = this.$dpi() == "2K";
|
let is2K = this.$dpi() == "2K";
|
||||||
|
this.warningHeight = is1K ? 166 : is2K ? 270 : 470;
|
||||||
|
this.mapHeight = is1K ? 720 : is2K ? 1500 : 2000;
|
||||||
|
this.chart3Height = is1K ? 260 : is2K ? 400 : 600;
|
||||||
this.chartKey++;
|
this.chartKey++;
|
||||||
|
this.chart3Key++;
|
||||||
},
|
},
|
||||||
init() {
|
init() {
|
||||||
if (!this.selProject) {
|
if (!this.selProject) {
|
||||||
|
@ -67,7 +264,170 @@ export default {
|
||||||
this.$api.machMater.machGetManageQuota(this.selProject.id).then((d) => {
|
this.$api.machMater.machGetManageQuota(this.selProject.id).then((d) => {
|
||||||
console.log("====>", d);
|
console.log("====>", d);
|
||||||
});
|
});
|
||||||
|
this.loadDeviceOverview();
|
||||||
|
this.loadClassifyBarData();
|
||||||
|
|
||||||
|
this.loadMapData();
|
||||||
|
if (this.overviewInterval) {
|
||||||
|
clearInterval(this.overviewInterval);
|
||||||
|
}
|
||||||
|
this.overviewInterval = setInterval(this.overviewClick, 5000);
|
||||||
|
|
||||||
|
this.setOpts();
|
||||||
},
|
},
|
||||||
|
setOpts() {
|
||||||
|
let is1K = this.$dpi() == "1K";
|
||||||
|
let is2K = this.$dpi() == "2K";
|
||||||
|
this.deviceLegendOpt = {
|
||||||
|
icon: "rect",
|
||||||
|
orient: "vertical",
|
||||||
|
itemWidth: "50%",
|
||||||
|
|
||||||
|
itemWidth: 20,
|
||||||
|
itemGap: 20,
|
||||||
|
itemHeight: 20,
|
||||||
|
type: "scroll",
|
||||||
|
pageTextStyle: {
|
||||||
|
color: "#c3dbfd",
|
||||||
|
fontSize: is1K ? 12 : is2K ? 16 : 20,
|
||||||
|
},
|
||||||
|
scroll: {
|
||||||
|
y: is1K ? 300 : is2K ? 500 : 600,
|
||||||
|
bar: {
|
||||||
|
show: true,
|
||||||
|
width: 5,
|
||||||
|
height: 10,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
textStyle: {
|
||||||
|
padding: [0, 0, 0, 0],
|
||||||
|
fontSize: is1K ? 12 : is2K ? 14 : 20,
|
||||||
|
color: "#c3dbfd",
|
||||||
|
align: "center",
|
||||||
|
rich: {
|
||||||
|
name: {
|
||||||
|
fontSize: is1K ? 12 : is2K ? 14 : 20,
|
||||||
|
color: "#c3dbfd",
|
||||||
|
padding: [5, 2, 5, 2],
|
||||||
|
},
|
||||||
|
percent: {
|
||||||
|
fontSize: is1K ? 12 : is2K ? 14 : 20,
|
||||||
|
color: "#4676FD",
|
||||||
|
padding: [0, 2, 0, 2],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
},
|
||||||
|
loadMapData() {
|
||||||
|
this.$api.machMater.machSelectMachineMapData(this.selProject.id).then((d) => {
|
||||||
|
let obj = {};
|
||||||
|
let result = (d.data?.data?.data || []).map((it) => {
|
||||||
|
it.icon = it.icon.replace("../../images", "./images");
|
||||||
|
if (["1", "2"].includes(it.state)) {
|
||||||
|
if (!obj[it.state1]) {
|
||||||
|
obj[it.state1] = [];
|
||||||
|
}
|
||||||
|
obj[it.state1].push(it);
|
||||||
|
}
|
||||||
|
return it;
|
||||||
|
});
|
||||||
|
this.typeDistributionData = [];
|
||||||
|
this.deviceTitle = 0;
|
||||||
|
for (let key in obj) {
|
||||||
|
this.typeDistributionData.push({
|
||||||
|
name: key,
|
||||||
|
value: obj[key].length,
|
||||||
|
});
|
||||||
|
this.deviceTitle += obj[key].length;
|
||||||
|
}
|
||||||
|
this.chart3Key++;
|
||||||
|
for (let i = 0; i < result.length; i++) {
|
||||||
|
var info = `<div class="popup-baidu-max">
|
||||||
|
<div class="popup-baidu-min">
|
||||||
|
<div class="popup-baidu-con">
|
||||||
|
<div class="popup-baidu-title">
|
||||||
|
<div class="popup-baidu-machine-img"><img src="${result[i].photo_url}"></div>
|
||||||
|
<div class="popup-baidu-machine-info">
|
||||||
|
<div class="popup-baidu-machine-first">
|
||||||
|
<div class="popup-baidu-machine-name ">${result[i].device_name}</div>
|
||||||
|
<div class="popup-baidu-machine-state ${result[i].state1 == "运行" ? "state-yx" : result[i].state1 == "怠速" ? "state-ds" : result[i].state1 == "静止" ? "state-jz" : "state-lx"} ">
|
||||||
|
${result[i].state1}</div>
|
||||||
|
</div>
|
||||||
|
<div class="popup-baidu-machine-second">
|
||||||
|
<div class="popup-baidu-machine-model popup-baidu-text">${result[i].device_model} </div>
|
||||||
|
<div class="popup-baidu-machine-oil popup-baidu-text">${result[i].percentage}%</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="popup-baidu-machine-details">
|
||||||
|
<table>`;
|
||||||
|
|
||||||
|
if (result[i].smart_terminal_type == 2 && result[i].smart_terminal_number.length != 15) {
|
||||||
|
info += "<tr>" + "<td >工作时长</td>" + "<td>" + result[i].workTime + "</td>" + "</tr>" + "<tr>" + "<td>剩余油量</td>" + "<td>" + result[i].volume + "L</td>" + "</tr>";
|
||||||
|
}
|
||||||
|
if (result[i].smart_terminal_type == 2 && result[i].smart_terminal_number.length == 15) {
|
||||||
|
info += "<tr>" + "<td>工作时长</td>" + "<td>" + result[i].workTime + "</td>" + "</tr>" + "<tr>" + "<td>工作里程</td>" + "<td>" + result[i].milestat + "KM</td>" + "</tr>";
|
||||||
|
}
|
||||||
|
|
||||||
|
info += `<tr>
|
||||||
|
<td>项目名称:</td>
|
||||||
|
<td> ${result[i].project_abbreviation} </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>工点名称:</td>
|
||||||
|
<td>${result[i].work_poonts_name}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>位置时间:</td>
|
||||||
|
<td> ${result[i].last_location_at} </td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="popup-baidu-machine-address popup-baidu-text">${result[i].address || ""}</div>
|
||||||
|
<div class="popup-baidu-machine-button">
|
||||||
|
<div class="popup-baidu-machine-blue popup-baidu-text" onclick="machineInfoCard('${result[i].device_num}')">机械信息卡</div>`;
|
||||||
|
|
||||||
|
if (result[i].smart_terminal_type == 1) {
|
||||||
|
info += "</div></div></div></div>";
|
||||||
|
} else if (result[i].smart_terminal_type == 2 && result[i].smart_terminal_number.length != 15 && result[i].smart_terminal_number.indexOf("aqzg") < 0) {
|
||||||
|
info += '<div class="popup-baidu-machine-green" onclick="goZhgDetails(\'' + result[i].device_num + "')\">实时监控状态</div>" + "</div></div></div></div>";
|
||||||
|
} else if (result[i].smart_terminal_type == 2 && result[i].smart_terminal_number.length != 15 && result[i].smart_terminal_number.indexOf("aqzg") > -1) {
|
||||||
|
info += '<div class="popup-baidu-machine-green" onclick="goAQDetails(\'' + result[i].smart_terminal_number + "')\">实时监控状态</div>" + "</div></div></div></div>";
|
||||||
|
} else if (result[i].smart_terminal_type == 2 && result[i].smart_terminal_number.length == 15) {
|
||||||
|
info += '<div class="popup-baidu-machine-green" onclick="goOBDDetails(\'' + result[i].id + "')\">轨迹回放</div>" + "</div></div></div></div>";
|
||||||
|
}
|
||||||
|
result[i].info = info;
|
||||||
|
}
|
||||||
|
this.personnelListData = result;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
loadClassifyBarData() {
|
||||||
|
//分类及工时情况
|
||||||
|
this.$api.machMater.machGetClassifyWorks(this.selProject.id).then((d) => {
|
||||||
|
let data = d.data.data;
|
||||||
|
this.classifyBarData = [data.num, data.dayWorkTime, data.monthWorkTime];
|
||||||
|
this.showClassifyBarData = this.classifyBarData[0];
|
||||||
|
});
|
||||||
|
},
|
||||||
|
loadDeviceOverview() {
|
||||||
|
this.$api.machMater.machGetEquipmentOverview(this.selProject.id).then((d) => {
|
||||||
|
let data = d.data.data;
|
||||||
|
this.overviewData = [data.count, data.bind, data.monitor];
|
||||||
|
this.onWarningInfoNav(0);
|
||||||
|
});
|
||||||
|
},
|
||||||
|
},
|
||||||
|
beforeDestroy() {
|
||||||
|
if (this.overviewInterval) {
|
||||||
|
clearInterval(this.overviewInterval);
|
||||||
|
this.overviewInterval = null;
|
||||||
|
}
|
||||||
|
delete window.machineInfoCard;
|
||||||
|
delete window.goZhgDetails;
|
||||||
|
delete window.goAQDetails;
|
||||||
|
delete window.goOBDDetails;
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
@ -82,5 +442,298 @@ export default {
|
||||||
height: calc(22% - 20px);
|
height: calc(22% - 20px);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
.device-info {
|
||||||
|
.survey_title {
|
||||||
|
padding: 24px 15px;
|
||||||
|
}
|
||||||
|
.survey_content {
|
||||||
|
.survey_content_img {
|
||||||
|
.svg-icon {
|
||||||
|
fill: rgb(1, 169, 255);
|
||||||
|
width: 20px;
|
||||||
|
height: 20px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.warning-info {
|
||||||
|
.pcd-rect {
|
||||||
|
width: 15px;
|
||||||
|
height: 10px;
|
||||||
|
margin-right: 5px;
|
||||||
|
background: #52adf4;
|
||||||
|
}
|
||||||
|
.warning-info-title {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.device-status {
|
||||||
|
.project-overview-chart {
|
||||||
|
.chart-gif {
|
||||||
|
top: 76px !important;
|
||||||
|
left: 50px;
|
||||||
|
}
|
||||||
|
.chart-text {
|
||||||
|
top: 72px !important;
|
||||||
|
left: 46px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@media (min-width: 1921px) and (max-width: 2560px) {
|
||||||
|
.device-info {
|
||||||
|
.survey_title {
|
||||||
|
padding: 30px 15px;
|
||||||
|
.survey_title_btn {
|
||||||
|
.survey_title_btn_min {
|
||||||
|
width: 150px;
|
||||||
|
height: 50px;
|
||||||
|
line-height: 50px;
|
||||||
|
font-size: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.survey_text {
|
||||||
|
width: 150px;
|
||||||
|
height: 32px;
|
||||||
|
}
|
||||||
|
.survey_text_value {
|
||||||
|
height: 32px;
|
||||||
|
line-height: 32px;
|
||||||
|
padding-left: 70px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.survey_content {
|
||||||
|
margin: 20px 0px;
|
||||||
|
.survey_content_img {
|
||||||
|
width: 120px;
|
||||||
|
height: 120px;
|
||||||
|
background-size: 120px 90px;
|
||||||
|
.svg-icon {
|
||||||
|
width: 30px;
|
||||||
|
height: 30px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.warning-info {
|
||||||
|
.pcd-rect {
|
||||||
|
width: 24px;
|
||||||
|
height: 16px;
|
||||||
|
margin-right: 8px;
|
||||||
|
}
|
||||||
|
.pcd-output-value-key-info {
|
||||||
|
font-size: 16px;
|
||||||
|
}
|
||||||
|
.warning-info-title {
|
||||||
|
font-size: 20px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.device-status {
|
||||||
|
.project-overview-chart {
|
||||||
|
.chart-gif {
|
||||||
|
width: 195px;
|
||||||
|
height: 195px;
|
||||||
|
top: 100px !important;
|
||||||
|
left: 47px;
|
||||||
|
}
|
||||||
|
.chart-text {
|
||||||
|
width: 195px;
|
||||||
|
height: 195px;
|
||||||
|
top: 100px !important;
|
||||||
|
left: 47px;
|
||||||
|
.chart-text-title {
|
||||||
|
font-size: 32px;
|
||||||
|
}
|
||||||
|
.chart-text-sub-title {
|
||||||
|
font-size: 24px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.BMap_bubble_pop {
|
||||||
|
width: 440px !important;
|
||||||
|
.BMap_bubble_top {
|
||||||
|
.BMap_bubble_buttons {
|
||||||
|
div {
|
||||||
|
font-size: 30px !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.BMap_bubble_content {
|
||||||
|
.popup-baidu-max {
|
||||||
|
.popup-baidu-machine-second {
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
.popup-baidu-text {
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
.popup-baidu-machine-state {
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
.popup-baidu-machine-name {
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
.popup-baidu-machine-details tr {
|
||||||
|
td {
|
||||||
|
font-size: 14px;
|
||||||
|
&:first-child {
|
||||||
|
width: 80px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.BMap_bubble_pop {
|
||||||
|
.BMap_bubble_content {
|
||||||
|
width: 100% !important;
|
||||||
|
.popup-baidu-max {
|
||||||
|
width: 100%;
|
||||||
|
background-size: 100% calc(100% - 3px);
|
||||||
|
.popup-baidu-machine-second {
|
||||||
|
font-size: 12px;
|
||||||
|
}
|
||||||
|
.popup-baidu-text {
|
||||||
|
font-size: 12px;
|
||||||
|
}
|
||||||
|
.popup-baidu-machine-state {
|
||||||
|
font-size: 12px;
|
||||||
|
}
|
||||||
|
.popup-baidu-machine-name {
|
||||||
|
font-size: 12px;
|
||||||
|
}
|
||||||
|
.popup-baidu-machine-details tr {
|
||||||
|
td {
|
||||||
|
font-size: 12px;
|
||||||
|
&:first-child {
|
||||||
|
width: 60px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (min-width: 2561px) {
|
||||||
|
.device-info {
|
||||||
|
.survey_title {
|
||||||
|
padding: 40px 15px;
|
||||||
|
.survey_title_btn {
|
||||||
|
.survey_title_btn_min {
|
||||||
|
width: 240px;
|
||||||
|
height: 80px;
|
||||||
|
line-height: 80px;
|
||||||
|
font-size: 32px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.survey_text {
|
||||||
|
width: 220px;
|
||||||
|
height: 50px;
|
||||||
|
}
|
||||||
|
.survey_text_value {
|
||||||
|
height: 50px;
|
||||||
|
line-height: 50px;
|
||||||
|
padding-left: 100px;
|
||||||
|
font-size: 28px;
|
||||||
|
span {
|
||||||
|
font-size: 28px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.survey_content {
|
||||||
|
margin: 30px 0px;
|
||||||
|
.survey_content_number {
|
||||||
|
font-size: 30px;
|
||||||
|
}
|
||||||
|
.survey_content_img {
|
||||||
|
width: 240px;
|
||||||
|
height: 240px;
|
||||||
|
background-size: 240px 180px;
|
||||||
|
.svg-icon {
|
||||||
|
width: 60px;
|
||||||
|
height: 60px;
|
||||||
|
position: relative;
|
||||||
|
top: 40px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.BMap_bubble_pop {
|
||||||
|
.BMap_bubble_top {
|
||||||
|
.BMap_bubble_buttons {
|
||||||
|
div {
|
||||||
|
font-size: 40px !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.BMap_bubble_content {
|
||||||
|
.popup-baidu-max {
|
||||||
|
.popup-baidu-machine-second {
|
||||||
|
font-size: 18px;
|
||||||
|
}
|
||||||
|
.popup-baidu-text {
|
||||||
|
font-size: 18px;
|
||||||
|
}
|
||||||
|
.popup-baidu-machine-state {
|
||||||
|
font-size: 18px;
|
||||||
|
}
|
||||||
|
.popup-baidu-machine-name {
|
||||||
|
font-size: 18px;
|
||||||
|
}
|
||||||
|
.popup-baidu-machine-details tr {
|
||||||
|
td {
|
||||||
|
font-size: 18px;
|
||||||
|
&:first-child {
|
||||||
|
width: 120px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.warning-info {
|
||||||
|
.pcd-rect {
|
||||||
|
width: 36px;
|
||||||
|
height: 24px;
|
||||||
|
margin-right: 8px;
|
||||||
|
}
|
||||||
|
.pcd-output-value-key-info {
|
||||||
|
font-size: 20px;
|
||||||
|
}
|
||||||
|
.warning-info-title {
|
||||||
|
font-size: 28px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.device-status {
|
||||||
|
.project-overview-chart {
|
||||||
|
.chart-gif {
|
||||||
|
width: 285px;
|
||||||
|
height: 285px;
|
||||||
|
top: 156px !important;
|
||||||
|
left: 82px;
|
||||||
|
}
|
||||||
|
.chart-text {
|
||||||
|
width: 285px;
|
||||||
|
height: 285px;
|
||||||
|
top: 156px !important;
|
||||||
|
left: 82px;
|
||||||
|
.chart-text-title {
|
||||||
|
font-size: 48px;
|
||||||
|
}
|
||||||
|
.chart-text-sub-title {
|
||||||
|
font-size: 32px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
|
@ -0,0 +1,127 @@
|
||||||
|
<template>
|
||||||
|
<div @mouseover="MouseEnter" @mouseout="MouseLeave" class="process-control-bar">
|
||||||
|
<div class="output-content" ref="process" :style="{ height: height + 'px' }">
|
||||||
|
<div class="process-for" v-for="(item, i) in forData" :key="i">
|
||||||
|
<div style="display: flex; align-items: center; justify-content: space-between; padding: 10px 0 5px">
|
||||||
|
<div class="text-row1">
|
||||||
|
<img src="/cdn/images/arr_up_green.png" width="12" height="8" />
|
||||||
|
<span style="color: #fcbc02; font-style: italic; padding-right: 5px">No.{{ i + 1 }}</span>
|
||||||
|
<span style="color: #c6d9fa">{{ item.name }}</span>
|
||||||
|
</div>
|
||||||
|
<div style="color: #6c829a" class="text-row2">
|
||||||
|
<span style="color: #c6d9fa">{{ item.total }}</span> {{ item.unit }}
|
||||||
|
<span>(</span>
|
||||||
|
<span style="color: #52adf4">{{ item.yesMonitor }}</span> {{ item.unit }} / <span style="color: #4677ff">{{ item.notMonitor }}</span> {{ item.unit }}
|
||||||
|
<span>)</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div style="padding-top: 8px">
|
||||||
|
<div style="height: 6px; background: rgba(22, 203, 115, 0.1); display: flex; align-items: center">
|
||||||
|
<div :style="{ width: item.yesWidth + '%', height: '6px', background: '#52adf4' }"></div>
|
||||||
|
<div :style="{ width: item.notWidth + '%', height: '6px', background: '#4677ff' }"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
props: {
|
||||||
|
list: {
|
||||||
|
type: Array,
|
||||||
|
},
|
||||||
|
height: {
|
||||||
|
type: Number,
|
||||||
|
},
|
||||||
|
number: {
|
||||||
|
type: Number,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
forData: [],
|
||||||
|
interval: "",
|
||||||
|
index: 0,
|
||||||
|
};
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
//this.init()
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
init() {
|
||||||
|
this.getData();
|
||||||
|
//计划时间
|
||||||
|
},
|
||||||
|
getData() {
|
||||||
|
var data = this.list;
|
||||||
|
var max = 0;
|
||||||
|
for (let i = 0; i < data.length; i++) {
|
||||||
|
if (max < Number(data[i].total)) {
|
||||||
|
max = Number(data[i].total);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
data.map((x) => {
|
||||||
|
x.yesWidth = (Number(x.yesMonitor) / max) * 100;
|
||||||
|
x.notWidth = (Number(x.notMonitor) / max) * 100;
|
||||||
|
return x;
|
||||||
|
});
|
||||||
|
this.forData = data;
|
||||||
|
this.$refs.process.scrollTop = 0;
|
||||||
|
this.index = 0;
|
||||||
|
this.interval = setInterval(this.scroll, 5000);
|
||||||
|
},
|
||||||
|
scroll() {
|
||||||
|
let els=this.$el.querySelectorAll(".process-for");
|
||||||
|
if(els.length==0){
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
let offsetHeight = els[0].offsetHeight;
|
||||||
|
if (this.index == this.forData.length - this.number) {
|
||||||
|
this.index = 0;
|
||||||
|
} else {
|
||||||
|
this.index += 1;
|
||||||
|
}
|
||||||
|
$(this.$refs.process).animate({ scrollTop: offsetHeight * this.index + "px" });
|
||||||
|
},
|
||||||
|
MouseEnter() {
|
||||||
|
//鼠标移入停止滚动
|
||||||
|
clearInterval(this.interval);
|
||||||
|
},
|
||||||
|
MouseLeave() {
|
||||||
|
//鼠标离开继续滚动
|
||||||
|
this.interval = setInterval(this.scroll, 5000);
|
||||||
|
},
|
||||||
|
},
|
||||||
|
watch: {
|
||||||
|
list: function (n, o) {
|
||||||
|
this.init();
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="less">
|
||||||
|
.process-control-bar {
|
||||||
|
.process-for {
|
||||||
|
height: 60px;
|
||||||
|
font-size:14px;
|
||||||
|
}
|
||||||
|
@media (min-width: 1921px) and (max-width: 2560px) {
|
||||||
|
.process-for {
|
||||||
|
height: 70px;
|
||||||
|
margin: 20px 0px;
|
||||||
|
font-size: 18px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (min-width: 2561px) {
|
||||||
|
.process-for {
|
||||||
|
height: 80px;
|
||||||
|
margin: 40px 0px;
|
||||||
|
font-size: 24px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
|
@ -34,6 +34,9 @@ public class MachMaterController extends BaseController {
|
||||||
}
|
}
|
||||||
paramJson.remove("url");
|
paramJson.remove("url");
|
||||||
Map<String, Object> map = new HashMap<>();
|
Map<String, Object> map = new HashMap<>();
|
||||||
|
if(url.endsWith("/")){
|
||||||
|
url = url.substring(0, url.length() - 1);
|
||||||
|
}
|
||||||
map.put("url", url);
|
map.put("url", url);
|
||||||
map.put("obj", paramJson);
|
map.put("obj", paramJson);
|
||||||
return map;
|
return map;
|
||||||
|
@ -49,10 +52,10 @@ public class MachMaterController extends BaseController {
|
||||||
public AjaxResult machGetManageQuota(Long projectId) throws Exception {
|
public AjaxResult machGetManageQuota(Long projectId) throws Exception {
|
||||||
Map<String, Object> map = getConfig(projectId, "mach");
|
Map<String, Object> map = getConfig(projectId, "mach");
|
||||||
String url = map.get("url").toString();
|
String url = map.get("url").toString();
|
||||||
url += "/largeScreen/digitalConstruction/getManageQuota";
|
|
||||||
JSONObject paramJson = (JSONObject) map.get("obj");
|
JSONObject paramJson = (JSONObject) map.get("obj");
|
||||||
HttpUtils httpUtils = new HttpUtils();
|
HttpUtils httpUtils = new HttpUtils();
|
||||||
String result = httpUtils.sendJSONPost(url, paramJson.toString(), null);
|
url += "/largeScreen/digitalConstruction/getManageQuota?"+ HttpUtils.jsonToGetParams( paramJson);
|
||||||
|
String result = httpUtils.sendGet(url);
|
||||||
return AjaxResult.success(JSONObject.parseObject(result));
|
return AjaxResult.success(JSONObject.parseObject(result));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -63,10 +66,10 @@ public class MachMaterController extends BaseController {
|
||||||
public AjaxResult machGetEquipmentOverview(Long projectId) throws Exception {
|
public AjaxResult machGetEquipmentOverview(Long projectId) throws Exception {
|
||||||
Map<String, Object> map = getConfig(projectId, "mach");
|
Map<String, Object> map = getConfig(projectId, "mach");
|
||||||
String url = map.get("url").toString();
|
String url = map.get("url").toString();
|
||||||
url += "/largeScreen/digitalConstruction/getEquipmentOverview";
|
|
||||||
JSONObject paramJson = (JSONObject) map.get("obj");
|
JSONObject paramJson = (JSONObject) map.get("obj");
|
||||||
HttpUtils httpUtils = new HttpUtils();
|
HttpUtils httpUtils = new HttpUtils();
|
||||||
String result = httpUtils.sendJSONPost(url, paramJson.toString(), null);
|
url += "/largeScreen/digitalConstruction/getEquipmentOverview?"+ HttpUtils.jsonToGetParams( paramJson);
|
||||||
|
String result = httpUtils.sendGet(url);
|
||||||
return AjaxResult.success(JSONObject.parseObject(result));
|
return AjaxResult.success(JSONObject.parseObject(result));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -78,10 +81,10 @@ public class MachMaterController extends BaseController {
|
||||||
public AjaxResult machGetCertInfoData(Long projectId) throws Exception {
|
public AjaxResult machGetCertInfoData(Long projectId) throws Exception {
|
||||||
Map<String, Object> map = getConfig(projectId, "mach");
|
Map<String, Object> map = getConfig(projectId, "mach");
|
||||||
String url = map.get("url").toString();
|
String url = map.get("url").toString();
|
||||||
url += "/largeScreen/digitalConstruction/getCertInfoData";
|
|
||||||
JSONObject paramJson = (JSONObject) map.get("obj");
|
JSONObject paramJson = (JSONObject) map.get("obj");
|
||||||
HttpUtils httpUtils = new HttpUtils();
|
HttpUtils httpUtils = new HttpUtils();
|
||||||
String result = httpUtils.sendJSONPost(url, paramJson.toString(), null);
|
url += "/largeScreen/digitalConstruction/getCertInfoData?"+ HttpUtils.jsonToGetParams( paramJson);
|
||||||
|
String result = httpUtils.sendGet(url);
|
||||||
return AjaxResult.success(JSONObject.parseObject(result));
|
return AjaxResult.success(JSONObject.parseObject(result));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -92,10 +95,11 @@ public class MachMaterController extends BaseController {
|
||||||
public AjaxResult machSelectMachineMapData(Long projectId) throws Exception {
|
public AjaxResult machSelectMachineMapData(Long projectId) throws Exception {
|
||||||
Map<String, Object> map = getConfig(projectId, "mach");
|
Map<String, Object> map = getConfig(projectId, "mach");
|
||||||
String url = map.get("url").toString();
|
String url = map.get("url").toString();
|
||||||
url += "/largeScreen/digitalConstruction/selectMachineMapData";
|
|
||||||
JSONObject paramJson = (JSONObject) map.get("obj");
|
JSONObject paramJson = (JSONObject) map.get("obj");
|
||||||
HttpUtils httpUtils = new HttpUtils();
|
HttpUtils httpUtils = new HttpUtils();
|
||||||
String result = httpUtils.sendJSONPost(url, paramJson.toString(), null);
|
url += "/largeScreen/digitalConstruction/selectMachineMapData?"+ HttpUtils.jsonToGetParams( paramJson);
|
||||||
|
String result = httpUtils.sendGet(url);
|
||||||
return AjaxResult.success(JSONObject.parseObject(result));
|
return AjaxResult.success(JSONObject.parseObject(result));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -106,10 +110,10 @@ public class MachMaterController extends BaseController {
|
||||||
public AjaxResult machGetMapData(Long projectId) throws Exception {
|
public AjaxResult machGetMapData(Long projectId) throws Exception {
|
||||||
Map<String, Object> map = getConfig(projectId, "mach");
|
Map<String, Object> map = getConfig(projectId, "mach");
|
||||||
String url = map.get("url").toString();
|
String url = map.get("url").toString();
|
||||||
url += "/largeScreen/digitalConstruction/getMapData";
|
|
||||||
JSONObject paramJson = (JSONObject) map.get("obj");
|
JSONObject paramJson = (JSONObject) map.get("obj");
|
||||||
HttpUtils httpUtils = new HttpUtils();
|
HttpUtils httpUtils = new HttpUtils();
|
||||||
String result = httpUtils.sendJSONPost(url, paramJson.toString(), null);
|
url += "/largeScreen/digitalConstruction/getMapData?"+ HttpUtils.jsonToGetParams( paramJson);
|
||||||
|
String result = httpUtils.sendGet(url);
|
||||||
return AjaxResult.success(JSONObject.parseObject(result));
|
return AjaxResult.success(JSONObject.parseObject(result));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -120,13 +124,57 @@ public class MachMaterController extends BaseController {
|
||||||
public AjaxResult machGetClassifyWorks(Long projectId) throws Exception {
|
public AjaxResult machGetClassifyWorks(Long projectId) throws Exception {
|
||||||
Map<String, Object> map = getConfig(projectId, "mach");
|
Map<String, Object> map = getConfig(projectId, "mach");
|
||||||
String url = map.get("url").toString();
|
String url = map.get("url").toString();
|
||||||
url += "/largeScreen/digitalConstruction/getClassifyWorks";
|
|
||||||
JSONObject paramJson = (JSONObject) map.get("obj");
|
JSONObject paramJson = (JSONObject) map.get("obj");
|
||||||
HttpUtils httpUtils = new HttpUtils();
|
HttpUtils httpUtils = new HttpUtils();
|
||||||
String result = httpUtils.sendJSONPost(url, paramJson.toString(), null);
|
url += "/largeScreen/digitalConstruction/getClassifyWorks?"+ HttpUtils.jsonToGetParams( paramJson);
|
||||||
|
String result = httpUtils.sendGet(url);
|
||||||
return AjaxResult.success(JSONObject.parseObject(result));
|
return AjaxResult.success(JSONObject.parseObject(result));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 机智管家-设备详情
|
||||||
|
@GetMapping("/machGetMachineInfo")
|
||||||
|
public AjaxResult machGetMachineInfo(Long projectId,String deviceNum) throws Exception {
|
||||||
|
Map<String, Object> map = getConfig(projectId, "mach");
|
||||||
|
String url = map.get("url").toString();
|
||||||
|
JSONObject paramJson = (JSONObject) map.get("obj");
|
||||||
|
HttpUtils httpUtils = new HttpUtils();
|
||||||
|
Map<String,Object> result=new HashMap<>();
|
||||||
|
String urlPath=url+"/largeScreen/digitalConstruction/getMachineInfo?"+HttpUtils.jsonToGetParams( paramJson);
|
||||||
|
String postString="device_num="+deviceNum;
|
||||||
|
String res = httpUtils.sendPost(urlPath,postString);
|
||||||
|
JSONObject jo=JSONObject.parseObject(res);
|
||||||
|
result.put("getMachineInfo",jo);
|
||||||
|
if(jo.get("code").toString().equals("0")){
|
||||||
|
JSONObject jdata= jo.getJSONObject("data");
|
||||||
|
if(jdata!=null){
|
||||||
|
String examine_id= jdata.getString("examine_id");
|
||||||
|
if(StringUtils.isNotBlank(examine_id)){
|
||||||
|
urlPath=url+"/largeScreen/digitalConstruction/getMachinePhoto?"+HttpUtils.jsonToGetParams( paramJson);
|
||||||
|
res = httpUtils.sendPost(urlPath,"id="+examine_id);
|
||||||
|
result.put("getMachinePhoto",JSONObject.parseObject(res));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
urlPath=url+"/largeScreen/digitalConstruction/getMachineDeviceInfo?"+HttpUtils.jsonToGetParams( paramJson);
|
||||||
|
res = httpUtils.sendPost(urlPath,postString);
|
||||||
|
result.put("getMachineDeviceInfo",JSONObject.parseObject(res));
|
||||||
|
return AjaxResult.success(result);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 机智管家-设备详情Url
|
||||||
|
@GetMapping("/machGetSystemDeviceInfoUrl")
|
||||||
|
public AjaxResult machGetSystemDeviceInfoUrl(Long projectId,String deviceNum)throws Exception{
|
||||||
|
Map<String, Object> map = getConfig(projectId, "mach");
|
||||||
|
String url = map.get("url").toString();
|
||||||
|
JSONObject paramJson = (JSONObject) map.get("obj");
|
||||||
|
HttpUtils httpUtils = new HttpUtils();
|
||||||
|
String urlPath=url+"/largeScreen/digitalConstruction/getSystemDeviceInfoUrl?"+HttpUtils.jsonToGetParams( paramJson);
|
||||||
|
String postString="phone=17795687332&device_num="+deviceNum;
|
||||||
|
String res = httpUtils.sendPost(urlPath,postString);
|
||||||
|
return AjaxResult.success(res);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 机智管家-监控预警
|
* 机智管家-监控预警
|
||||||
*/
|
*/
|
||||||
|
@ -134,11 +182,11 @@ public class MachMaterController extends BaseController {
|
||||||
public AjaxResult machGetClockInException(Long projectId, int pageSize) throws Exception {
|
public AjaxResult machGetClockInException(Long projectId, int pageSize) throws Exception {
|
||||||
Map<String, Object> map = getConfig(projectId, "mach");
|
Map<String, Object> map = getConfig(projectId, "mach");
|
||||||
String url = map.get("url").toString();
|
String url = map.get("url").toString();
|
||||||
url += "/largeScreen/digitalConstruction/getClockInException";
|
|
||||||
JSONObject paramJson = (JSONObject) map.get("obj");
|
JSONObject paramJson = (JSONObject) map.get("obj");
|
||||||
paramJson.put("pageSize", pageSize);
|
paramJson.put("pageSize", pageSize);
|
||||||
HttpUtils httpUtils = new HttpUtils();
|
HttpUtils httpUtils = new HttpUtils();
|
||||||
String result = httpUtils.sendJSONPost(url, paramJson.toString(), null);
|
url += "/largeScreen/digitalConstruction/getClockInException?"+ HttpUtils.jsonToGetParams( paramJson);
|
||||||
|
String result = httpUtils.sendGet(url);
|
||||||
return AjaxResult.success(JSONObject.parseObject(result));
|
return AjaxResult.success(JSONObject.parseObject(result));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -149,10 +197,10 @@ public class MachMaterController extends BaseController {
|
||||||
public AjaxResult machGetDeviceInfoByProjectId(Long projectId) throws Exception {
|
public AjaxResult machGetDeviceInfoByProjectId(Long projectId) throws Exception {
|
||||||
Map<String, Object> map = getConfig(projectId, "mach");
|
Map<String, Object> map = getConfig(projectId, "mach");
|
||||||
String url = map.get("url").toString();
|
String url = map.get("url").toString();
|
||||||
url += "/largeScreen/digitalConstruction/getDeviceInfoByProjectId";
|
|
||||||
JSONObject paramJson = (JSONObject) map.get("obj");
|
JSONObject paramJson = (JSONObject) map.get("obj");
|
||||||
HttpUtils httpUtils = new HttpUtils();
|
HttpUtils httpUtils = new HttpUtils();
|
||||||
String result = httpUtils.sendJSONPost(url, paramJson.toString(), null);
|
url += "/largeScreen/digitalConstruction/getDeviceInfoByProjectId?"+ HttpUtils.jsonToGetParams( paramJson);
|
||||||
|
String result = httpUtils.sendGet(url);
|
||||||
return AjaxResult.success(JSONObject.parseObject(result));
|
return AjaxResult.success(JSONObject.parseObject(result));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -164,11 +212,11 @@ public class MachMaterController extends BaseController {
|
||||||
public AjaxResult machGetExceptionAlert(Long projectId, int size) throws Exception {
|
public AjaxResult machGetExceptionAlert(Long projectId, int size) throws Exception {
|
||||||
Map<String, Object> map = getConfig(projectId, "mach");
|
Map<String, Object> map = getConfig(projectId, "mach");
|
||||||
String url = map.get("url").toString();
|
String url = map.get("url").toString();
|
||||||
url += "/largeScreen/digitalConstruction/getExceptionAlert";
|
|
||||||
JSONObject paramJson = (JSONObject) map.get("obj");
|
JSONObject paramJson = (JSONObject) map.get("obj");
|
||||||
paramJson.put("size", size);
|
paramJson.put("size", size);
|
||||||
HttpUtils httpUtils = new HttpUtils();
|
HttpUtils httpUtils = new HttpUtils();
|
||||||
String result = httpUtils.sendJSONPost(url, paramJson.toString(), null);
|
url += "/largeScreen/digitalConstruction/getExceptionAlert?"+ HttpUtils.jsonToGetParams( paramJson);
|
||||||
|
String result = httpUtils.sendGet(url);
|
||||||
return AjaxResult.success(JSONObject.parseObject(result));
|
return AjaxResult.success(JSONObject.parseObject(result));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -6,18 +6,25 @@
|
||||||
<span v-if="mode == 'show'">{{ form.url }}</span>
|
<span v-if="mode == 'show'">{{ form.url }}</span>
|
||||||
<el-input v-else v-model="form.url" placeholder="请输入服务地址"></el-input>
|
<el-input v-else v-model="form.url" placeholder="请输入服务地址"></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="用户ID" prop="userId">
|
|
||||||
<span v-if="mode == 'show'">{{ form.userId }}</span>
|
<el-form-item label="部门ID" prop="deptId">
|
||||||
<el-input v-else v-model="form.userId" placeholder="请输入用户ID"></el-input>
|
<span v-if="mode == 'show'">{{ form.deptId }}</span>
|
||||||
</el-form-item>
|
<el-input v-else v-model="form.deptId" placeholder="请输入用户ID"></el-input>
|
||||||
<el-form-item label="配置key" prop="chinaKey">
|
|
||||||
<span v-if="mode == 'show'">{{ form.chinaKey }}</span>
|
|
||||||
<el-input v-else v-model="form.chinaKey" placeholder="请输入配置key"></el-input>
|
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="项目ID" prop="projectId">
|
<el-form-item label="项目ID" prop="projectId">
|
||||||
<span v-if="mode == 'show'">{{ form.projectId }}</span>
|
<span v-if="mode == 'show'">{{ form.projectId }}</span>
|
||||||
<el-input v-else v-model="form.projectId" placeholder="请输入项目ID"></el-input>
|
<el-input v-else v-model="form.projectId" placeholder="请输入项目ID"></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
|
<el-form-item label="配置key" prop="app_key">
|
||||||
|
<span v-if="mode == 'show'">{{ form.app_key }}</span>
|
||||||
|
<el-input v-else v-model="form.app_key" placeholder="请输入配置key"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="配置密钥" prop="app_secret">
|
||||||
|
<span v-if="mode == 'show'">{{ form.app_secret }}</span>
|
||||||
|
<el-input v-else v-model="form.app_secret" placeholder="请输入配置密钥"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
</el-form>
|
</el-form>
|
||||||
<template #footer>
|
<template #footer>
|
||||||
<div v-hasPermi="['machmange:config:edit']">
|
<div v-hasPermi="['machmange:config:edit']">
|
||||||
|
@ -50,31 +57,37 @@ export default {
|
||||||
mode: "show",
|
mode: "show",
|
||||||
form: {
|
form: {
|
||||||
url:"",
|
url:"",
|
||||||
userId: "",
|
deptId: "",
|
||||||
chinaKey: "",
|
app_key: "",
|
||||||
projectId: "",
|
projectId: "",
|
||||||
|
app_secret:""
|
||||||
},
|
},
|
||||||
rules: {
|
rules: {
|
||||||
userId: {
|
url: {
|
||||||
|
required: true,
|
||||||
|
message: "请输入服务地址",
|
||||||
|
trigger: "blur",
|
||||||
|
},
|
||||||
|
deptId: {
|
||||||
required: true,
|
required: true,
|
||||||
message: "请输入用户ID",
|
message: "请输入用户ID",
|
||||||
trigger: "blur",
|
trigger: "blur",
|
||||||
},
|
},
|
||||||
chinaKey: {
|
app_key: {
|
||||||
required: true,
|
required: true,
|
||||||
message: "请输入配置key",
|
message: "请输入配置key",
|
||||||
trigger: "blur",
|
trigger: "blur",
|
||||||
},
|
},
|
||||||
|
app_secret: {
|
||||||
|
required: true,
|
||||||
|
message: "请输入配置密钥",
|
||||||
|
trigger: "blur",
|
||||||
|
},
|
||||||
projectId: {
|
projectId: {
|
||||||
required: true,
|
required: true,
|
||||||
message: "请输入项目ID",
|
message: "请输入项目ID",
|
||||||
trigger: "blur",
|
trigger: "blur",
|
||||||
},
|
},
|
||||||
url: {
|
|
||||||
required: true,
|
|
||||||
message: "请输入服务地址",
|
|
||||||
trigger: "blur",
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
@ -93,9 +106,10 @@ export default {
|
||||||
methods: {
|
methods: {
|
||||||
doEdit() {
|
doEdit() {
|
||||||
this.mode = "edit";
|
this.mode = "edit";
|
||||||
this.form.userId = this.cfgInfo?.userId || "";
|
this.form.deptId = this.cfgInfo?.deptId || "";
|
||||||
this.form.chinaKey = this.cfgInfo?.chinaKey || "";
|
this.form.app_key = this.cfgInfo?.app_key || "";
|
||||||
this.form.projectId = this.cfgInfo?.projectId || "";
|
this.form.projectId = this.cfgInfo?.projectId || "";
|
||||||
|
this.form.app_secret = this.cfgInfo?.app_secret || "";
|
||||||
this.form.url = this.cfgInfo?.url || "";
|
this.form.url = this.cfgInfo?.url || "";
|
||||||
},
|
},
|
||||||
doSave() {
|
doSave() {
|
||||||
|
@ -137,9 +151,10 @@ export default {
|
||||||
if (this.cfgData) {
|
if (this.cfgData) {
|
||||||
this.cfgInfo = this.$tryToJson(this.cfgData.paramData, null);
|
this.cfgInfo = this.$tryToJson(this.cfgData.paramData, null);
|
||||||
}
|
}
|
||||||
this.form.userId = this.cfgInfo?.userId || "未配置";
|
this.form.deptId = this.cfgInfo?.deptId || "未配置";
|
||||||
this.form.chinaKey = this.cfgInfo?.chinaKey || "未配置";
|
this.form.app_key = this.cfgInfo?.app_key || "未配置";
|
||||||
this.form.projectId = this.cfgInfo?.projectId || "未配置";
|
this.form.projectId = this.cfgInfo?.projectId || "未配置";
|
||||||
|
this.form.app_secret = this.cfgInfo?.app_secret || "未配置";
|
||||||
this.form.url = this.cfgInfo?.url || "未配置";
|
this.form.url = this.cfgInfo?.url || "未配置";
|
||||||
cb && cb();
|
cb && cb();
|
||||||
});
|
});
|
||||||
|
|
|
@ -6,25 +6,18 @@
|
||||||
<span v-if="mode == 'show'">{{ form.url }}</span>
|
<span v-if="mode == 'show'">{{ form.url }}</span>
|
||||||
<el-input v-else v-model="form.url" placeholder="请输入服务地址"></el-input>
|
<el-input v-else v-model="form.url" placeholder="请输入服务地址"></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
<el-form-item label="用户ID" prop="userId">
|
||||||
<el-form-item label="部门ID" prop="deptId">
|
<span v-if="mode == 'show'">{{ form.userId }}</span>
|
||||||
<span v-if="mode == 'show'">{{ form.deptId }}</span>
|
<el-input v-else v-model="form.userId" placeholder="请输入用户ID"></el-input>
|
||||||
<el-input v-else v-model="form.deptId" placeholder="请输入用户ID"></el-input>
|
</el-form-item>
|
||||||
|
<el-form-item label="配置key" prop="chinaKey">
|
||||||
|
<span v-if="mode == 'show'">{{ form.chinaKey }}</span>
|
||||||
|
<el-input v-else v-model="form.chinaKey" placeholder="请输入配置key"></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="项目ID" prop="projectId">
|
<el-form-item label="项目ID" prop="projectId">
|
||||||
<span v-if="mode == 'show'">{{ form.projectId }}</span>
|
<span v-if="mode == 'show'">{{ form.projectId }}</span>
|
||||||
<el-input v-else v-model="form.projectId" placeholder="请输入项目ID"></el-input>
|
<el-input v-else v-model="form.projectId" placeholder="请输入项目ID"></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
<el-form-item label="配置key" prop="app_key">
|
|
||||||
<span v-if="mode == 'show'">{{ form.app_key }}</span>
|
|
||||||
<el-input v-else v-model="form.app_key" placeholder="请输入配置key"></el-input>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="配置密钥" prop="app_secret">
|
|
||||||
<span v-if="mode == 'show'">{{ form.app_secret }}</span>
|
|
||||||
<el-input v-else v-model="form.app_secret" placeholder="请输入配置密钥"></el-input>
|
|
||||||
</el-form-item>
|
|
||||||
|
|
||||||
</el-form>
|
</el-form>
|
||||||
<template #footer>
|
<template #footer>
|
||||||
<div v-hasPermi="['machmange:config:edit']">
|
<div v-hasPermi="['machmange:config:edit']">
|
||||||
|
@ -57,37 +50,31 @@ export default {
|
||||||
mode: "show",
|
mode: "show",
|
||||||
form: {
|
form: {
|
||||||
url:"",
|
url:"",
|
||||||
deptId: "",
|
userId: "",
|
||||||
app_key: "",
|
chinaKey: "",
|
||||||
projectId: "",
|
projectId: "",
|
||||||
app_secret:""
|
|
||||||
},
|
},
|
||||||
rules: {
|
rules: {
|
||||||
url: {
|
userId: {
|
||||||
required: true,
|
|
||||||
message: "请输入服务地址",
|
|
||||||
trigger: "blur",
|
|
||||||
},
|
|
||||||
deptId: {
|
|
||||||
required: true,
|
required: true,
|
||||||
message: "请输入用户ID",
|
message: "请输入用户ID",
|
||||||
trigger: "blur",
|
trigger: "blur",
|
||||||
},
|
},
|
||||||
app_key: {
|
chinaKey: {
|
||||||
required: true,
|
required: true,
|
||||||
message: "请输入配置key",
|
message: "请输入配置key",
|
||||||
trigger: "blur",
|
trigger: "blur",
|
||||||
},
|
},
|
||||||
app_secret: {
|
|
||||||
required: true,
|
|
||||||
message: "请输入配置密钥",
|
|
||||||
trigger: "blur",
|
|
||||||
},
|
|
||||||
projectId: {
|
projectId: {
|
||||||
required: true,
|
required: true,
|
||||||
message: "请输入项目ID",
|
message: "请输入项目ID",
|
||||||
trigger: "blur",
|
trigger: "blur",
|
||||||
},
|
},
|
||||||
|
url: {
|
||||||
|
required: true,
|
||||||
|
message: "请输入服务地址",
|
||||||
|
trigger: "blur",
|
||||||
|
},
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
@ -106,10 +93,9 @@ export default {
|
||||||
methods: {
|
methods: {
|
||||||
doEdit() {
|
doEdit() {
|
||||||
this.mode = "edit";
|
this.mode = "edit";
|
||||||
this.form.deptId = this.cfgInfo?.deptId || "";
|
this.form.userId = this.cfgInfo?.userId || "";
|
||||||
this.form.app_key = this.cfgInfo?.app_key || "";
|
this.form.chinaKey = this.cfgInfo?.chinaKey || "";
|
||||||
this.form.projectId = this.cfgInfo?.projectId || "";
|
this.form.projectId = this.cfgInfo?.projectId || "";
|
||||||
this.form.app_secret = this.cfgInfo?.app_secret || "";
|
|
||||||
this.form.url = this.cfgInfo?.url || "";
|
this.form.url = this.cfgInfo?.url || "";
|
||||||
},
|
},
|
||||||
doSave() {
|
doSave() {
|
||||||
|
@ -151,10 +137,9 @@ export default {
|
||||||
if (this.cfgData) {
|
if (this.cfgData) {
|
||||||
this.cfgInfo = this.$tryToJson(this.cfgData.paramData, null);
|
this.cfgInfo = this.$tryToJson(this.cfgData.paramData, null);
|
||||||
}
|
}
|
||||||
this.form.deptId = this.cfgInfo?.deptId || "未配置";
|
this.form.userId = this.cfgInfo?.userId || "未配置";
|
||||||
this.form.app_key = this.cfgInfo?.app_key || "未配置";
|
this.form.chinaKey = this.cfgInfo?.chinaKey || "未配置";
|
||||||
this.form.projectId = this.cfgInfo?.projectId || "未配置";
|
this.form.projectId = this.cfgInfo?.projectId || "未配置";
|
||||||
this.form.app_secret = this.cfgInfo?.app_secret || "未配置";
|
|
||||||
this.form.url = this.cfgInfo?.url || "未配置";
|
this.form.url = this.cfgInfo?.url || "未配置";
|
||||||
cb && cb();
|
cb && cb();
|
||||||
});
|
});
|
||||||
|
|
|
@ -126,7 +126,11 @@ function clearAllSelection(that) {
|
||||||
}
|
}
|
||||||
|
|
||||||
function initBim(that) {
|
function initBim(that) {
|
||||||
let tmps = that.allBimData.filter((it) => it.id == that.plan.id);
|
let planId = -1;
|
||||||
|
if (that.plan) {
|
||||||
|
planId = that.plan.id;
|
||||||
|
}
|
||||||
|
let tmps = that.allBimData.filter((it) => it.id == planId);
|
||||||
if (tmps.length > 0) {
|
if (tmps.length > 0) {
|
||||||
tmps[0].bim.forEach((it) => {
|
tmps[0].bim.forEach((it) => {
|
||||||
if (
|
if (
|
||||||
|
@ -608,22 +612,47 @@ function makePlanTree(that) {
|
||||||
that.planTreeKey++;
|
that.planTreeKey++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function resetModel(that, cb) {
|
||||||
|
let api = bimSelectionDlgApi;
|
||||||
|
that.hideParts = [];
|
||||||
|
that.readlyParts = [];
|
||||||
|
that.hideFeatures = [];
|
||||||
|
that.allBimData = that.planList.filter((d) => d.hasBim);
|
||||||
|
that.models.forEach(model => {
|
||||||
|
api.Model.setVisible(model.modelId, true);
|
||||||
|
api.Model.original(model.modelId);
|
||||||
|
that.$refs.tree.setChecked(model.modelId, true, true)
|
||||||
|
setTimeout(() => {
|
||||||
|
cb && cb();
|
||||||
|
}, 1000)
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
//根据选择的计划显示构件
|
//根据选择的计划显示构件
|
||||||
function showPlanFeatchure(that) {
|
function showPlanFeatchure(that) {
|
||||||
let api = bimSelectionDlgApi;
|
let api = bimSelectionDlgApi;
|
||||||
|
resetModel(that, () => {
|
||||||
if (that.plan.hasBim) {
|
if (that.plan.hasBim) {
|
||||||
//已绑定BIM模型 显示已绑定的构件
|
//已绑定BIM模型 显示已绑定的构件
|
||||||
let featureIds = that.plan.bim.map((it) => it.featureId);
|
let featureIds = that.plan.bim.map((it) => it.featureId);
|
||||||
if (featureIds.length > 0) {
|
if (featureIds.length > 0) {
|
||||||
let tmpsIds2 = featureIds.splice(0, 1000);
|
let tmpsIds2 = featureIds.splice(0, 1000);
|
||||||
api.Feature.showFeatures(tmpsIds2.join("#"));
|
api.Feature.showFeatures(tmpsIds2.join("#"));
|
||||||
that.selectItems = that.plan.bim.map((it) => it);
|
setFeatueVisible(featureIds, true);
|
||||||
|
initBim(that)
|
||||||
|
//that.selectItems = that.plan.bim.map((it) => it);
|
||||||
|
|
||||||
featureIds = that.plan.bim.map((it) => it.featureId);
|
featureIds = that.plan.bim.map((it) => it.featureId);
|
||||||
api.Feature.setColor(featureIds.join("#"), "rgba(255,0,255,1)");
|
api.Feature.setColor(featureIds.join("#"), "rgba(255,0,255,1)");
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
that.selectItems = [];
|
||||||
//未绑定BIM模型 显示所有可以绑定的构件
|
//未绑定BIM模型 显示所有可以绑定的构件
|
||||||
|
|
||||||
|
initBim(that)
|
||||||
|
setFeatueVisible(that.readlyParts,false)
|
||||||
}
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
|
|
|
@ -309,14 +309,22 @@ export default {
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
doSave() {
|
doSave() {
|
||||||
|
if(!this.plan){
|
||||||
|
ElMessage.error("请选择计划");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
let text=
|
||||||
|
this.selectItems.length > 0 ? JSON.stringify(this.selectItems) : ""
|
||||||
updateBimInfo({
|
updateBimInfo({
|
||||||
id: this.plan.id,
|
id: this.plan.id,
|
||||||
text:
|
text:text,
|
||||||
this.selectItems.length > 0 ? JSON.stringify(this.selectItems) : "",
|
|
||||||
}).then((res) => {
|
}).then((res) => {
|
||||||
if (res.success) {
|
if (res.success) {
|
||||||
|
this.plan.bimId=text;
|
||||||
|
this.plan.bim=this.$tryToJson(text||"[]",[]);
|
||||||
|
this.plan.hasBim=this.plan && this.plan.bim.length>0;
|
||||||
ElMessage.success("保存成功");
|
ElMessage.success("保存成功");
|
||||||
this.show = false;
|
bimTools.showPlanFeatchure(this)
|
||||||
this.$emit("success");
|
this.$emit("success");
|
||||||
} else {
|
} else {
|
||||||
ElMessage.error("保存失败");
|
ElMessage.error("保存失败");
|
||||||
|
@ -353,6 +361,9 @@ export default {
|
||||||
case 5:
|
case 5:
|
||||||
bimTools.selectTreeData(this);
|
bimTools.selectTreeData(this);
|
||||||
break;
|
break;
|
||||||
|
case 6:
|
||||||
|
this.doSave();
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
showDialog(planList) {
|
showDialog(planList) {
|
||||||
|
@ -476,10 +487,9 @@ export default {
|
||||||
} else {
|
} else {
|
||||||
this.models.forEach((it) => {
|
this.models.forEach((it) => {
|
||||||
this.addModel(it.modelId, () => {
|
this.addModel(it.modelId, () => {
|
||||||
this.$refs.tree.setChecked(it.modelId, true);
|
this.$refs.tree.setChecked(it.modelId, true,true);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
this.$refs.tree.setChecked("root", true);
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
@ -655,7 +665,7 @@ export default {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
bottom: 6vh;
|
bottom: 6vh;
|
||||||
left: 50%;
|
left: 50%;
|
||||||
margin-left: -120px;
|
margin-left: -140px;
|
||||||
background: #274754;
|
background: #274754;
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue