fix: 冲突解决以及BUG修改

This commit is contained in:
kun 2024-06-06 09:26:02 +08:00
commit d78ce42578
14 changed files with 1229 additions and 620 deletions

View File

@ -24,13 +24,13 @@ NODE_ENV = 'development'
# VITE_API_URL = 'http://182.90.224.237:15551'
# agjt
# VITE_API_URL = 'http://42.180.188.17:9809' #生产环境
# VITE_API_URL = 'http://42.180.188.17:11211' #测试环境
VITE_API_URL = 'http://42.180.188.17:11211' #测试环境
# VITE_API_URL = 'http://42.180.188.17:11211' #测试环境
# VITE_API_URL = 'http://jxj.zhgdyun.com:19812'
# 苏立信
# VITE_API_URL = 'http://101.43.164.214:11111'
# 中科安信
VITE_API_URL = 'http://8.136.222.164:8808'
# VITE_API_URL = 'http://8.136.222.164:8808'
# 上传
VITE_ULD_API_URL = 'http://192.168.34.155:8012/onlinePreview?url='

View File

@ -22,11 +22,11 @@ NODE_ENV = "production"
# VITE_API_URL = 'http://182.90.224.237:15551'
# agjt
# VITE_API_URL = 'http://42.180.188.17:9809' #生产环境
# VITE_API_URL = 'http://42.180.188.17:11211' #测试环境
VITE_API_URL = 'http://42.180.188.17:11211' #测试环境
# 苏立信
# VITE_API_URL = 'http://101.43.164.214:11111'
# 中科安信
VITE_API_URL = 'http://8.136.222.164:8808'
# VITE_API_URL = 'http://8.136.222.164:8808'
# 打包
VITE_ULD_API_URL = 'http://jxj.zhgdyun.com:8012/onlinePreview?url='

937
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -35,8 +35,8 @@
"dhtmlx-gantt": "^8.0.6",
"driver.js": "^0.9.8",
"echarts": "^4.9.0",
"echarts-gl": "^2.0.9",
"echarts-liquidfill": "^3.1.0",
"echarts-gl": "^1.1.2",
"echarts-liquidfill": "^2.0.6",
"element-china-area-data": "^5.0.2",
"element-plus": "^2.2.30",
"ezuikit-js": "^7.7.8",

View File

@ -9,11 +9,15 @@ export const getMemberJobStatusApi = (params: {}) => {
};
// 检查人
export const getInspectManStatusApi = (params: {}) => {
return http.post(BASEURL + `/xmgl/xzSecurityQualityInspectionRecord/statsByInspectMan`, params, { headers: { noLoading: true } });
return http.post(BASEURL + `/xmgl/xzSecurityQualityInspectionRecord/statsByInspectMan`, params, {
headers: { noLoading: true }
});
};
// 按分包单位分析
export const getEnterpriseStatusApi = (params: {}) => {
return http.post(BASEURL + `/xmgl/xzSecurityQualityInspectionRecord/statsByEnterprise`, params, { headers: { noLoading: true } });
return http.post(BASEURL + `/xmgl/xzSecurityQualityInspectionRecord/statsByEnterprise`, params, {
headers: { noLoading: true }
});
};
// 危大工程弹窗
@ -49,17 +53,20 @@ export const getProgressContentApi = (params: {}) => {
return http.get(BASEURL + `/xmgl/xzTaskProgressContent/page`, params, { headers: { noLoading: true } });
};
// 风险统计弹窗
// 顶部数据
export const getStatisticsNumDataApi = (params: {}) => {
return http.post(BASEURL + `/xmgl/xzSecurityQualityInspectionRecord/selectQualityStatisticsNum`, params, { headers: { noLoading: true } });
return http.post(BASEURL + `/xmgl/xzSecurityQualityInspectionRecord/selectQualityStatisticsNum`, params, {
headers: { noLoading: true }
});
};
// 安全隐患
// 顶部数据
export const getQualityStatisticsNumDataApi = (params: {}) => {
return http.post(BASEURL + `/xmgl/xzSecurityQualityInspectionRecord/selectQualityStatisticsNumList`, params, { headers: { noLoading: true } });
return http.post(BASEURL + `/xmgl/xzSecurityQualityInspectionRecord/selectQualityStatisticsNumList`, params, {
headers: { noLoading: true }
});
};
// 获取分包单位
export const getProjectEnterpriseApi = (params: {}) => {
@ -86,35 +93,41 @@ export const getAlarmTypeCountApi = (params: {}) => {
};
// 顶部数据分页接口
export const getAlarmTypeCountPageApi = (params: {}) => {
return http.post(BASEURL + `/xmgl/aiStatistic/selectAiAnalyseHardWareAlarmTypeCountPage`, params, { headers: { noLoading: true } });
return http.post(BASEURL + `/xmgl/aiStatistic/selectAiAnalyseHardWareAlarmTypeCountPage`, params, {
headers: { noLoading: true }
});
};
// centerTop底部按钮显示数据接口
export const getStatsDirectorateBigScreenApi = (params: {}) => {
return http.post(BASEURL + `/xmgl/xzSecurityQualityInspectionRecord/statsDirectorateBigScreen`, params, { headers: { noLoading: true } });
export const getStatsDirectorateBigScreenApi = (params: {}, showLoading: boolean) => {
return http.post(BASEURL + `/xmgl/xzSecurityQualityInspectionRecord/statsDirectorateBigScreen`, params, {
headers: { noLoading: showLoading }
});
};
// centerTop评分数据接口
export const getStatScoreApi = (params: {}) => {
return http.get(BASEURL + `/xmgl/xzSecurityQualityInspectionRecord/getStatScore`, params, { headers: { noLoading: true } });
export const getStatScoreApi = (params: {}, showLoading: boolean) => {
return http.get(BASEURL + `/xmgl/xzSecurityQualityInspectionRecord/getStatScore`, params, { headers: { noLoading: showLoading } });
};
// 项目人员考勤
// 出勤人员/考勤日环比
export const getPersonTypeAndEduStatisticsApi = (params: {}) => {
return http.post(BASEURL + `/xmgl/workerInfo/selectPersonTypeAndEduStatistics`, params, { headers: { noLoading: true } });
export const getPersonTypeAndEduStatisticsApi = (params: {}, showLoading: boolean) => {
return http.post(BASEURL + `/xmgl/workerInfo/selectPersonTypeAndEduStatistics`, params, {
headers: { noLoading: showLoading }
});
};
// 总包出勤情况分析
export const queryAttendanceOfEachCompanyApi = (params: {}) => {
return http.get(BASEURL + `/xmgl/workerAttendance/queryAttendanceOfEachCompany`, params, { headers: { noLoading: true } });
export const queryAttendanceOfEachCompanyApi = (params: {}, showLoading: boolean) => {
return http.get(BASEURL + `/xmgl/workerAttendance/queryAttendanceOfEachCompany`, params, {
headers: { noLoading: showLoading }
});
};
// 进度情况分析
// 项目总进度/项目剩余天数
export const getCountTaskProgressApi = (params: {}) => {
return http.post(BASEURL + `/xmgl/xzTaskProgress/countTaskProgress`, params, { headers: { noLoading: true } });
export const getCountTaskProgressApi = (params: {}, showLoading: boolean) => {
return http.post(BASEURL + `/xmgl/xzTaskProgress/countTaskProgress`, params, { headers: { noLoading: showLoading } });
};
// 总包进度列表
export const queryCountEnterpriseApi = (params: {}) => {
return http.post(BASEURL + `/xmgl/xzTaskProgressTotal/countEnterprise`, params, { headers: { noLoading: true } });
export const queryCountEnterpriseApi = (params: {}, showLoading: boolean) => {
return http.post(BASEURL + `/xmgl/xzTaskProgressTotal/countEnterprise`, params, { headers: { noLoading: showLoading } });
};

View File

@ -3,8 +3,8 @@ import http from "@/api";
const BASEURL = import.meta.env.VITE_API_URL;
// 项目信息
export const getProjectDetail = (params: {}) => {
return http.post(BASEURL + `/xmgl/project/getProjectInfoBySn`, params, { headers: { noLoading: true } });
export const getProjectDetail = (params: {}, showLoading: boolean) => {
return http.post(BASEURL + `/xmgl/project/getProjectInfoBySn`, params, { headers: { noLoading: showLoading } });
};
// 统计企业下项目各人员统计
@ -40,13 +40,13 @@ export const eidtProjectShowConfig = (params: {}) => {
};
// 查询效果图
export const queryBySnData = (params: {}) => {
return http.post(BASEURL + `/xmgl/projectShowConfig/queryBySn`, params, { headers: { noLoading: true } });
export const queryBySnData = (params: {}, showLoading: boolean) => {
return http.post(BASEURL + `/xmgl/projectShowConfig/queryBySn`, params, { headers: { noLoading: showLoading } });
};
// 里程碑字典
export const getStageOption = (params: {}) => {
return http.get(BASEURL + `/xmgl/dictionaryItem/list`, params, { headers: { noLoading: true } });
export const getStageOption = (params: {}, showLoading: boolean) => {
return http.get(BASEURL + `/xmgl/dictionaryItem/list`, params, { headers: { noLoading: showLoading } });
};
//甘特图-列表查询任务进度
@ -55,12 +55,16 @@ export const getParentChildTaskListApi = (params: {}) => {
};
// 隐患统计智能分析
export const getSelectQualityStatisticsNumApi = (params: {}) => {
return http.post(BASEURL + `/xmgl/xzSecurityQualityInspectionRecord/selectQualityStatisticsNum`, params);
export const getSelectQualityStatisticsNumApi = (params: {}, showLoading: boolean) => {
return http.post(BASEURL + `/xmgl/xzSecurityQualityInspectionRecord/selectQualityStatisticsNum`, params, {
headers: { noLoading: showLoading }
});
};
export const getCountDangerLevelApi = (params: {}) => {
return http.post(BASEURL + `/xmgl/xzSecurityQualityInspectionRecord/countDangerLevel`, params);
export const getCountDangerLevelApi = (params: {}, showLoading: boolean) => {
return http.post(BASEURL + `/xmgl/xzSecurityQualityInspectionRecord/countDangerLevel`, params, {
headers: { noLoading: showLoading }
});
};
// 分包单位统计
@ -88,36 +92,42 @@ export const getXzSecurityQualitylnspectionRecordSuperviseApi = (params: {}) =>
};
// 隐患智能分析
export const getNoticeListApi = (params: {}) => {
return http.post(BASEURL + `/xmgl/notice/list`, params);
export const getNoticeListApi = (params: {}, showLoading: boolean) => {
return http.post(BASEURL + `/xmgl/notice/list`, params, { headers: { noLoading: showLoading } });
};
// 安全问题统计数据|列表
export const getInspectionSelectQualityApi = (params: {}) => {
return http.post(BASEURL + `/xmgl/xzSecurityQualityInspectionRecord/selectQualityStatisticsNum`, params);
export const getInspectionSelectQualityApi = (params: {}, showLoading: boolean) => {
return http.post(BASEURL + `/xmgl/xzSecurityQualityInspectionRecord/selectQualityStatisticsNum`, params, {
headers: { noLoading: showLoading }
});
};
export const getInspectionSelectQualityListApi = (params: {}) => {
return http.post(BASEURL + `/xmgl/xzSecurityQualityInspectionRecord/selectQualityStatisticsNumList`, params);
};
// 风险走势图
export const getInspectionRiskChartApi = (params: {}) => {
return http.post(BASEURL + `/xmgl/xzSecurityQualityInspectionRecord/riskChart`, params);
export const getInspectionRiskChartApi = (params: {}, showLoading: boolean) => {
return http.post(BASEURL + `/xmgl/xzSecurityQualityInspectionRecord/riskChart`, params, {
headers: { noLoading: showLoading }
});
};
// 特殊作业
export const getSpecialCountAllSpecialApi = (params: {}) => {
return http.post(BASEURL + `/xmgl/xzSpecial/countAllSpecial`, params);
export const getSpecialCountAllSpecialApi = (params: {}, showLoading: boolean) => {
return http.post(BASEURL + `/xmgl/xzSpecial/countAllSpecial`, params, { headers: { noLoading: showLoading } });
};
// 应急类型统计(今日)
export const getCountEmergencyTypedApi = (params: {}) => {
return http.post(BASEURL + `/xmgl/xzEmergencyRecord/countEmergencyTyped`, params);
export const getCountEmergencyTypedApi = (params: {}, showLoading: boolean) => {
return http.post(BASEURL + `/xmgl/xzEmergencyRecord/countEmergencyTyped`, params, { headers: { noLoading: showLoading } });
};
// 应急处置(近七日)
export const getCountAlarmNumByEnterpriseApi = (params: {}) => {
return http.post(BASEURL + `/xmgl/xzEmergencyRecord/countAlarmNumByEnterprise`, params);
export const getCountAlarmNumByEnterpriseApi = (params: {}, showLoading: boolean) => {
return http.post(BASEURL + `/xmgl/xzEmergencyRecord/countAlarmNumByEnterprise`, params, {
headers: { noLoading: showLoading }
});
};
// 获取应急物资

View File

@ -20,6 +20,6 @@ export const getSafeHatSessionApi = (params: {}) => {
};
// 现场视频
export const selectLiveVideoListApi = (params: {}) => {
return http.get(BASEURL + `/xmgl/project/getProjectExtendInfo`, params);
export const selectLiveVideoListApi = (params: {}, showLoading: boolean) => {
return http.get(BASEURL + `/xmgl/project/getProjectExtendInfo`, params, { headers: { noLoading: showLoading } });
};

View File

@ -28,7 +28,7 @@ export const BASE_IMAGE_URL = import.meta.env.VITE_BASE_IMAGE_URL;
// export const COMPANY: string = "zsbf"; //中水北方
// export const COMPANY: string = "as"; //鞍山项目
// export const COMPANY: string = "agjt"; //鞍钢集团
// export const COMPANY: string = "agjtCommand"; //鞍钢集团指挥部大屏
export const COMPANY: string = "agjtCommand"; //鞍钢集团指挥部大屏
// export const COMPANY: string = "slx"; //苏立信项目
// export const COMPANY: string = "hfqc"; //合肥启程项目
// export const COMPANY: string = "jsyc"; // 江苏盐城项目
@ -37,4 +37,4 @@ export const BASE_IMAGE_URL = import.meta.env.VITE_BASE_IMAGE_URL;
// export const COMPANY: string = "phmw"; //鄱湖美湾医疗、医美产业集群项目 (需要去src\routers\modules\staticRouter.ts更换首页)
// export const COMPANY: string = "xjnb"; // 新建宁波项目
// export const COMPANY: string = "ahsa"; // 安徽水安项目
export const COMPANY: string = "zkax"; // 中科安信项目
// export const COMPANY: string = "zkax"; // 中科安信项目

View File

@ -24,8 +24,8 @@ export const staticRouter: RouteRecordRaw[] = [
{
path: "/large",
name: "大屏",
component: () => import("@/views/sevenLargeScreen/indexL.vue"), //七参数标准版
// component: () => import("@/views/commandScreen/indexCommand.vue"), //指挥部大屏
// component: () => import("@/views/sevenLargeScreen/indexL.vue"), //七参数标准版
component: () => import("@/views/commandScreen/indexCommand.vue"), //指挥部大屏
// component: () => import("@/views/sevenLargeScreen/indexL_syhy.vue"), // 只有一级路由(盘锦、嘉兴、鄱湖美湾医疗项目需切换至该首页)
children: [
{

View File

@ -159,10 +159,10 @@ let listData = ref([
// { header: 'AI', type: 3, content: '1#60%...', startTime: '2024-04-01', endTime: "2024-04-20" },
]);
const getNoticeList = async () => {
const getNoticeList = async (showLoading: boolean) => {
// const res: any = await getNoticeListApi({ projectSn: store.sn, type: 10, pageNo: 1, pageSize: 99999, });
// const res: any = await getNoticeListApi({ isBigScreen: 1, type: 32 }); //
const res: any = await getNoticeListApi({ isBigScreen: 1, type: 31 });
const res: any = await getNoticeListApi({ isBigScreen: 1, type: 31 }, showLoading);
console.log("隐患智能分析", res);
listData.value = res.result.records;
@ -666,11 +666,11 @@ function getMessCountEchart() {
});
}
const getMessCountEchartType = async () => {
const getMessCountEchartType = async (showLoading: boolean) => {
const res: any = await getCountEmergencyTypedApi({
projectSn: store.sn,
type: 1
});
},showLoading);
console.log("应急统计图", res);
messCountType.value.data = res.result.data.map((item: any) => {
return {
@ -690,11 +690,11 @@ const getMessCountEchartType = async () => {
getMessCountEchart();
};
const getCountAlarmNumByEnterprise = async () => {
const getCountAlarmNumByEnterprise = async (showLoading: boolean) => {
const res: any = await getCountAlarmNumByEnterpriseApi({
projectSn: store.sn,
type: 1
});
},showLoading);
dataListAlarm.value = res.result.reduce((prev: any[], item: any) => {
console.log("1111", prev);
item.list.forEach((ele: any) => {
@ -723,16 +723,16 @@ const getCountAlarmNumByEnterprise = async () => {
console.log("应急处置统计图", res);
getMessEchart();
};
const setIntervalFn = () => {
getNoticeList();
getCountAlarmNumByEnterprise();
getMessCountEchartType();
const setIntervalFn = (showLoading: boolean) => {
getNoticeList(showLoading);
getCountAlarmNumByEnterprise(showLoading);
getMessCountEchartType(showLoading);
};
onMounted(async () => {
setIntervalFn();
setIntervalFn(false);
//
setInterval(() => {
setIntervalFn();
setIntervalFn(true);
}, 30000);
});
</script>

View File

@ -2,35 +2,40 @@
<div class="centerTop">
<div class="top-content">
<div class="content-div aq">
<div class="circle-box">
<!-- <div class="circle-box">
<span>{{ statScore.hiddenDangerScore }}</span>
</div>
<span>安全隐患治理</span>
</div> -->
<div id="waterAq" style="width:80%;height:80%;transform:translateY(-25px)"></div>
<span style="transform:translateY(-50px)">安全隐患治理</span>
</div>
<div class="content-div wd">
<div class="circle-box">
<!-- <div class="circle-box">
<span>{{ statScore.dangerEngScore }}</span>
</div>
<span>危大工程</span>
</div> -->
<div id="waterWd" style="width:80%;height:80%;transform:translateY(-25px)"></div>
<span style="transform:translateY(-50px)">危大工程</span>
</div>
<div class="content-div jy">
<div class="circle-box">
<!-- <div class="circle-box"> -->
<!-- <span>{{statScore}}</span> -->
<span>25</span>
</div>
<span>安全教育</span>
<!-- <span>25</span>
</div> -->
<div id="waterJy" style="width:80%;height:80%;transform:translateY(-25px)"></div>
<span style="transform:translateY(-50px)">安全教育</span>
</div>
<div class="content-div fx">
<div class="circle-box">
<!-- <div class="circle-box">
<span>{{ statScore.riskScore }}</span>
</div>
<span>风险管理</span>
</div> -->
<div id="waterFx" style="width:80%;height:80%;transform:translateY(-25px)"></div>
<span style="transform:translateY(-50px)">风险管理</span>
</div>
<div class="content-div zn">
<div class="circle-box">
<!-- <div class="circle-box">
<span>{{ statScore.aiScore }}</span>
</div>
<span>AI警报</span>
</div> -->
<div id="waterZn" style="width:80%;height:80%;transform:translateY(-25px)"></div>
<span style="transform:translateY(-50px)">AI警报</span>
</div>
<div class="count-div">
<div class="count-div-item">
@ -107,6 +112,8 @@ import Card from "@/components/card.vue";
import { ref, onMounted, watch } from "vue";
import { GlobalStore } from "@/stores";
import { ElMessage } from "element-plus";
import * as echarts from "echarts";
import 'echarts-liquidfill';
import { editProjectInfo, eidtProjectShowConfig, queryBySnData } from "@/api/modules/projectOverview";
import { getStatsDirectorateBigScreenApi, getStatScoreApi } from "@/api/modules/agjtCommandApi";
@ -141,6 +148,401 @@ watch(
}
}
);
//
function drawAqWater(){
type EChartsOption = echarts.EChartsOption;
var chartDom = document.getElementById("waterAq")!;
var myChart = echarts.init(chartDom);
var option: EChartsOption;
//
option = {
series: [
{
type: "liquidFill", //
// data: [0.6], // 01
data:[0.001,0.001,0.001,0.001,0.001], //
// data: [
// 0.2,
// {
// value: 0.3, //
// direction: "left", //
// itemStyle: {
// color: "blue", //
// opacity: 0.8, //
// },
// emphasis: {
// itemStyle: {
// color: "lightblue", //
// opacity: 1, //
// },
// },
// },
// ],
waveAnimation:true,//,
amplitude: 15, //
waveLength:150,//
shape: "circle", //'circle', 'rect', 'roundRect', 'triangle', 'diamond', 'pin', 'arrow'
direction: "right", //'left', 'right', 'top', 'bottom',
radius: "60%", // 50%
// color:['#1E90FF','#191970','#000080','#6495ED','#0000FF'] ,//
color:['#156ACF'] ,//
center:['50%','50%'],//1E90FF
// animationEasing:'linear',
animationEasing:'easeOut',
outline: {
borderDistance: 4, //
itemStyle: {
borderWidth: 2, //
borderColor: "#156ACF", //
},
},
// //
// itemStyle:{
// opacity:0.5, //
// color:'red', //
// shadowBlur:10, //
// shadowColor:'red', //
// shadowOffsetX:10, //
// shadowOffsetY:10, //
// },
backgroundStyle: {
color: "rgba(0,0,0,0)", //
},
label: {
normal: {
formatter: function(){
return statScore.value.hiddenDangerScore + "分"
},
textStyle: {
// color: "#6495ED", //
color: "#fff",
insideColor: "#fff",
fontSize: 16,
},
},
},
},
],
};
// 使
myChart.setOption(option);
}
//
function drawWdWater(){
type EChartsOption = echarts.EChartsOption;
var chartDom = document.getElementById("waterWd")!;
var myChart = echarts.init(chartDom);
var option: EChartsOption;
//
option = {
series: [
{
type: "liquidFill", //
// data: [0.6], // 01
data:[0.001,0.001,0.001,0.001,0.001], //
// data: [
// 0.2,
// {
// value: 0.3, //
// direction: "left", //
// itemStyle: {
// color: "blue", //
// opacity: 0.8, //
// },
// emphasis: {
// itemStyle: {
// color: "lightblue", //
// opacity: 1, //
// },
// },
// },
// ],
waveAnimation:true,//,
amplitude: 15, //
waveLength:150,//
shape: "circle", //'circle', 'rect', 'roundRect', 'triangle', 'diamond', 'pin', 'arrow'
direction: "right", //'left', 'right', 'top', 'bottom',
radius: "60%", // 50%
// color:['#1E90FF','#191970','#000080','#6495ED','#0000FF'] ,//
color:['#156ACF'] ,//
center:['50%','50%'],//1E90FF
// animationEasing:'linear',
animationEasing:'easeOut',
outline: {
borderDistance: 4, //
itemStyle: {
borderWidth: 2, //
borderColor: "#156ACF", //
},
},
// //
// itemStyle:{
// opacity:0.5, //
// color:'red', //
// shadowBlur:10, //
// shadowColor:'red', //
// shadowOffsetX:10, //
// shadowOffsetY:10, //
// },
backgroundStyle: {
color: "rgba(0,0,0,0)", //
},
label: {
normal: {
formatter: function(){
return statScore.value.dangerEngScore + "分"
},
textStyle: {
color: "#fff",
insideColor: "#fff",
fontSize: 16,
},
},
},
},
],
};
// 使
myChart.setOption(option);
}
//
function drawJyWater(){
type EChartsOption = echarts.EChartsOption;
var chartDom = document.getElementById("waterJy")!;
var myChart = echarts.init(chartDom);
var option: EChartsOption;
//
option = {
series: [
{
type: "liquidFill", //
// data: [0.6], // 01
data:[0.001,0.001,0.001,0.001,0.001], //
// data: [
// 0.2,
// {
// value: 0.3, //
// direction: "left", //
// itemStyle: {
// color: "blue", //
// opacity: 0.8, //
// },
// emphasis: {
// itemStyle: {
// color: "lightblue", //
// opacity: 1, //
// },
// },
// },
// ],
waveAnimation:true,//,
amplitude: 15, //
waveLength:150,//
shape: "circle", //'circle', 'rect', 'roundRect', 'triangle', 'diamond', 'pin', 'arrow'
direction: "right", //'left', 'right', 'top', 'bottom',
radius: "60%", // 50%
// color:['#1E90FF','#191970','#000080','#6495ED','#0000FF'] ,//
color:['#156ACF'] ,//
center:['50%','50%'],//1E90FF
// animationEasing:'linear',
animationEasing:'easeOut',
outline: {
borderDistance: 4, //
itemStyle: {
borderWidth: 2, //
borderColor: "#156ACF", //
},
},
// //
// itemStyle:{
// opacity:0.5, //
// color:'red', //
// shadowBlur:10, //
// shadowColor:'red', //
// shadowOffsetX:10, //
// shadowOffsetY:10, //
// },
backgroundStyle: {
color: "rgba(0,0,0,0)", //
},
label: {
normal: {
formatter: function(){
// return statScore.value + ""
return "25分"
},
textStyle: {
color: "#fff",
insideColor: "#fff",
fontSize: 16,
},
},
},
},
],
};
// 使
myChart.setOption(option);
}
//
function drawFxWater(){
type EChartsOption = echarts.EChartsOption;
var chartDom = document.getElementById("waterFx")!;
var myChart = echarts.init(chartDom);
var option: EChartsOption;
//
option = {
series: [
{
type: "liquidFill", //
// data: [0.6], // 01
data:[0.001,0.001,0.001,0.001,0.001], //
// data: [
// 0.2,
// {
// value: 0.3, //
// direction: "left", //
// itemStyle: {
// color: "blue", //
// opacity: 0.8, //
// },
// emphasis: {
// itemStyle: {
// color: "lightblue", //
// opacity: 1, //
// },
// },
// },
// ],
waveAnimation:true,//,
amplitude: 15, //
waveLength:150,//
shape: "circle", //'circle', 'rect', 'roundRect', 'triangle', 'diamond', 'pin', 'arrow'
direction: "right", //'left', 'right', 'top', 'bottom',
radius: "60%", // 50%
// color:['#1E90FF','#191970','#000080','#6495ED','#0000FF'] ,//
color:['#156ACF'] ,//
center:['50%','50%'],//1E90FF
// animationEasing:'linear',
animationEasing:'easeOut',
outline: {
borderDistance: 4, //
itemStyle: {
borderWidth: 2, //
borderColor: "#156ACF", //
},
},
// //
// itemStyle:{
// opacity:0.5, //
// color:'red', //
// shadowBlur:10, //
// shadowColor:'red', //
// shadowOffsetX:10, //
// shadowOffsetY:10, //
// },
backgroundStyle: {
color: "rgba(0,0,0,0)", //
},
label: {
normal: {
formatter: function(){
return statScore.value.riskScore + "分"
},
textStyle: {
color: "#fff",
insideColor: "#fff",
fontSize: 16,
},
},
},
},
],
};
// 使
myChart.setOption(option);
}
//
function drawZnWater(){
type EChartsOption = echarts.EChartsOption;
var chartDom = document.getElementById("waterZn")!;
var myChart = echarts.init(chartDom);
var option: EChartsOption;
//
option = {
series: [
{
type: "liquidFill", //
// data: [0.6], // 01
data:[0.001,0.001,0.001,0.001,0.001], //
// data: [
// 0.2,
// {
// value: 0.3, //
// direction: "left", //
// itemStyle: {
// color: "blue", //
// opacity: 0.8, //
// },
// emphasis: {
// itemStyle: {
// color: "lightblue", //
// opacity: 1, //
// },
// },
// },
// ],
waveAnimation:true,//,
amplitude: 15, //
waveLength:150,//
shape: "circle", //'circle', 'rect', 'roundRect', 'triangle', 'diamond', 'pin', 'arrow'
direction: "right", //'left', 'right', 'top', 'bottom',
radius: "60%", // 50%
// color:['#1E90FF','#191970','#000080','#6495ED','#0000FF'] ,//
color:['#156ACF'] ,//
center:['50%','50%'],//1E90FF
// animationEasing:'linear',
animationEasing:'easeOut',
outline: {
borderDistance: 4, //
itemStyle: {
borderWidth: 2, //
borderColor: "#156ACF", //
},
},
// //
// itemStyle:{
// opacity:0.5, //
// color:'red', //
// shadowBlur:10, //
// shadowColor:'red', //
// shadowOffsetX:10, //
// shadowOffsetY:10, //
// },
backgroundStyle: {
color: "rgba(0,0,0,0)", //
},
label: {
normal: {
formatter: function(){
return statScore.value.aiScore + "分"
},
textStyle: {
color: "#fff",
insideColor: "#fff",
fontSize: 16,
},
},
},
},
],
};
// 使
myChart.setOption(option);
}
//
const picUrl = ref("" as any);
@ -164,10 +566,13 @@ let topText = ref([
{ id: 2, title: "宣传视频", isActive: false },
{ id: 3, title: "效果图", isActive: false }
]);
const getVideoList = async () => {
let res: any = await selectLiveVideoListApi({
projectSn: store.sn
});
const getVideoList = async (showLoading: boolean) => {
let res: any = await selectLiveVideoListApi(
{
projectSn: store.sn
},
showLoading
);
console.log(res, "445566");
if (res.result && res.result.extend1) {
videoList.value = JSON.parse(res.result.extend1).result.videoList;
@ -188,8 +593,8 @@ const getVideoList = async () => {
};
let statsDirectorateBigScreen = ref({} as any);
//centerTop
const getStatsDirectorateBigScreen = async () => {
const res = await getStatsDirectorateBigScreenApi({ projectSn: store.sn });
const getStatsDirectorateBigScreen = async (showLoading: boolean) => {
const res = await getStatsDirectorateBigScreenApi({ projectSn: store.sn }, showLoading);
statsDirectorateBigScreen.value = res.result;
};
let statScore = ref({
@ -201,10 +606,16 @@ let statScore = ref({
lastMonthTotal: 0
} as any);
//centerTop
const getStatScore = async () => {
const res = await getStatScoreApi({ projectSn: store.sn });
const getStatScore = async (showLoading: boolean) => {
const res = await getStatScoreApi({ projectSn: store.sn }, showLoading);
console.log("获取项目信息6666666666666666666666666666666666", res);
statScore.value = res.result;
drawAqWater()
drawWdWater()
drawJyWater()
drawFxWater()
drawZnWater()
};
function boxStyle(item: any) {
@ -254,11 +665,14 @@ const uploadSuccess = () => {
});
};
//
function getQueryBySnData() {
queryBySnData({
projectSn: store.sn,
showType: 3
}).then((res: any) => {
function getQueryBySnData(showLoading: boolean) {
queryBySnData(
{
projectSn: store.sn,
showType: 3
},
showLoading
).then((res: any) => {
console.log(res, "效果图");
if (res.result) {
picUrl.value = res.result.configValue;
@ -280,17 +694,17 @@ function saveOrDeleteVideo(url) {
defineExpose({
getQueryBySnData
});
const setIntervalFn = () => {
getVideoList();
getQueryBySnData();
getStatsDirectorateBigScreen();
getStatScore();
const setIntervalFn = (showLoading: boolean) => {
getVideoList(showLoading);
getQueryBySnData(showLoading);
getStatsDirectorateBigScreen(showLoading);
getStatScore(showLoading);
};
onMounted(async () => {
setIntervalFn();
setIntervalFn(false);
//
setInterval(() => {
setIntervalFn();
setIntervalFn(true);
}, 30000);
});
</script>

View File

@ -159,10 +159,13 @@ let totalPerson = ref("" as any);
//
let totalPersonRhbRatio = ref("" as any);
///
const getPersonTypeAndEduStatistics = async () => {
const res: any = await getPersonTypeAndEduStatisticsApi({
projectSn: store.sn
});
const getPersonTypeAndEduStatistics = async (showLoading: boolean) => {
const res: any = await getPersonTypeAndEduStatisticsApi(
{
projectSn: store.sn
},
showLoading
);
if (res.result) {
console.log("出勤人员数据/考勤日环比", res);
totalPerson.value = res.result.personType.attendancePerson.totalPerson;
@ -182,11 +185,14 @@ let xData = ref([] as any);
let yData = ref([] as any);
//
let isFlag = ref(true as any);
const queryAttendanceOfEachCompany = async () => {
const res: any = await queryAttendanceOfEachCompanyApi({
projectSn: store.sn,
isCountMainEnterprise: 1
});
const queryAttendanceOfEachCompany = async (showLoading: boolean) => {
const res: any = await queryAttendanceOfEachCompanyApi(
{
projectSn: store.sn,
isCountMainEnterprise: 1
},
showLoading
);
if (res.result) {
console.log("获取总包出勤情况分析数据", res);
projectCompanyWorkTotalList.value = res.result.projectCompanyWorkTotalList;
@ -367,10 +373,13 @@ let projectTotalProgress = ref("" as any);
//
let projectSurplusDayNum = ref({} as any);
// /
const getCountTaskProgress = async () => {
const res: any = await getCountTaskProgressApi({
projectSn: store.sn
});
const getCountTaskProgress = async (showLoading: boolean) => {
const res: any = await getCountTaskProgressApi(
{
projectSn: store.sn
},
showLoading
);
if (res.result) {
console.log("项目总进度/项目剩余天数", res);
projectTotalProgress.value = res.result.projectTotalProgress + "";
@ -380,28 +389,31 @@ const getCountTaskProgress = async () => {
//
let processList = ref([] as any);
//
const queryCountEnterprise = async () => {
const res: any = await queryCountEnterpriseApi({
projectSn: store.sn,
isCountMainEnterprise: 1
});
const queryCountEnterprise = async (showLoading: boolean) => {
const res: any = await queryCountEnterpriseApi(
{
projectSn: store.sn,
isCountMainEnterprise: 1
},
showLoading
);
if (res.result) {
console.log("总包进度列表", res);
processList.value = res.result;
}
};
const setIntervalFn = () => {
const setIntervalFn = (showLoading: boolean) => {
// drawBar()
getPersonTypeAndEduStatistics();
queryAttendanceOfEachCompany();
getCountTaskProgress();
queryCountEnterprise();
getPersonTypeAndEduStatistics(showLoading);
queryAttendanceOfEachCompany(showLoading);
getCountTaskProgress(showLoading);
queryCountEnterprise(showLoading);
};
onMounted(async () => {
setIntervalFn();
setIntervalFn(false);
//
setInterval(() => {
setIntervalFn();
setIntervalFn(true);
}, 30000);
});
</script>

View File

@ -15,50 +15,53 @@
</div>
<div class="content">
<div class="content-info">
<span style="font-size:15px">项目名称</span>
<span style="font-size:15px">{{ projectData.projectName || "" }}</span>
<span style="font-size: 15px">项目名称</span>
<span style="font-size: 15px">{{ projectData.projectName || "" }}</span>
</div>
<div class="content-info">
<span style="font-size:15px">项目地址</span>
<span style="font-size:15px">{{addressData()}}</span>
<span style="font-size: 15px">项目地址</span>
<span style="font-size: 15px">{{ addressData() }}</span>
</div>
<div class="content-info">
<span style="font-size:15px">项目编号</span>
<span style="font-size:15px">{{ projectData.projectNumber || "" }}</span>
<span style="font-size: 15px">项目编号</span>
<span style="font-size: 15px">{{ projectData.projectNumber || "" }}</span>
</div>
<div style="font-size:15px;line-height:22px">
<div style="display:flex;color:white;margin-top:8px">
<div style="width:50%;display:flex;">
<div style="font-size: 15px; line-height: 22px">
<div style="display: flex; color: white; margin-top: 8px">
<div style="width: 50%; display: flex">
<span>项目经理</span>
<span>{{ projectData.projectManage || "" }}</span>
</div>
<div style="width:50%;display:flex;">
<div style="width: 50%; display: flex">
<span>联系电话</span>
<span>{{ projectData.projectTel || "" }}</span>
</div>
</div>
<div style="display:flex;color:white;margin-top:8px">
<div style="width:50%;display:flex;">
<div style="display: flex; color: white; margin-top: 8px">
<div style="width: 50%; display: flex">
<span>建筑面积</span>
<span>{{ projectData.projectAcreage || "" }} {{ projectData.projectAcreage ? '㎡' : "" }}</span>
<span>{{ projectData.projectAcreage || "" }} {{ projectData.projectAcreage ? "㎡" : "" }}</span>
</div>
<div style="width:50%;display:flex;">
<div style="width: 50%; display: flex">
<span>开工日期</span>
<span>{{ projectData.startWorkDate || "" }}</span>
</div>
</div>
<div style="display:flex;color:white;margin-top:8px">
<div style="width:50%;display:flex;">
<div style="display: flex; color: white; margin-top: 8px">
<div style="width: 50%; display: flex">
<span>工程类别</span>
<span>{{ projectData.projectType && projectTypeEnumList.length > 0 ? projectTypeEnumList[projectData.projectType - 1].name : "" }}</span>
<div style="margin-left:5px;line-height:20px;">
<img style="width:25px;height:25px;" src="@/assets/images/mountain-icon.png" alt="" />
<span>{{
projectData.projectType && projectTypeEnumList.length > 0
? projectTypeEnumList[projectData.projectType - 1].name
: ""
}}</span>
<div style="margin-left: 5px; line-height: 20px">
<img style="width: 25px; height: 25px" src="@/assets/images/mountain-icon.png" alt="" />
</div>
</div>
</div>
</div>
<!-- <div class="content-info">
<span>项目名称</span>
<span>{{ projectData.projectName || "" }}</span>
@ -101,16 +104,15 @@ import { getProjectDetail, getStageOption } from "@/api/modules/projectOverview"
import { GlobalStore } from "@/stores";
const store = GlobalStore();
const projectData = ref({} as any);
const projectTypeEnumList:any = ref([]); //
const projectTypeEnumList: any = ref([]); //
const addressData = () => {
return projectData.value.provinceName ? projectData.value.provinceName +
projectData.value.cityName +
projectData.value.areaName +
projectData.value.projectAddress : '';
}
return projectData.value.provinceName
? projectData.value.provinceName + projectData.value.cityName + projectData.value.areaName + projectData.value.projectAddress
: "";
};
//
const projectTypeEnum = async () => {
const res: any = await getStageOption({ dictionaryEncoding: "project_type", projectSn: store.sn });
const projectTypeEnum = async (showLoading: boolean) => {
const res: any = await getStageOption({ dictionaryEncoding: "project_type", projectSn: store.sn }, showLoading);
if (res.result.length > 0) {
let newArray = res.result.map((item: any) => {
return {
@ -118,21 +120,28 @@ const projectTypeEnum = async () => {
id: Number(item.data)
};
});
projectTypeEnumList.value = newArray
projectTypeEnumList.value = newArray;
} else {
projectTypeEnumList.value = []
projectTypeEnumList.value = [];
}
};
//
const getProjectInfo = async () => {
const res = await getProjectDetail({ projectSn: store.sn });
const getProjectInfo = async (showLoading: boolean) => {
const res = await getProjectDetail({ projectSn: store.sn }, showLoading);
console.log("获取项目信息666", res);
// console.log("", projectTypeEnum);
projectData.value = res.result;
};
const setIntervalFn = (showLoading: boolean) => {
getProjectInfo(showLoading);
projectTypeEnum(showLoading);
};
onMounted(async () => {
getProjectInfo();
projectTypeEnum();
setIntervalFn(false);
setInterval(() => {
setIntervalFn(true);
}, 30000);
});
</script>
<style lang="scss" scoped>
@ -155,7 +164,7 @@ onMounted(async () => {
// color: white;
font-size: 20px;
font-weight: bold;
background-image: linear-gradient(to bottom left, #c8E3FF, #007AFF);
background-image: linear-gradient(to bottom left, #c8e3ff, #007aff);
-webkit-background-clip: text;
background-clip: text;
color: transparent;
@ -169,15 +178,15 @@ onMounted(async () => {
flex-direction: column;
margin-top: 10px;
margin-left: 10px;
&-info:not(:first-child){
&-info:not(:first-child) {
margin-top: 11px;
}
&-info{
&-info {
display: flex;
align-items: center;
color: white;
font-size: 14px;
span:nth-child(2){
span:nth-child(2) {
display: inline-block;
width: 80%;
white-space: nowrap;
@ -275,24 +284,24 @@ onMounted(async () => {
}
}
}
::v-deep .el-dialog{
::v-deep .el-dialog {
background: url("@/assets/images/commandScreen/dialog-bg.png") no-repeat;
// background-color: #fff;
background-size: 100% 100%;
margin-top: 12%;
}
::v-deep .el-dialog__headerbtn{
::v-deep .el-dialog__headerbtn {
right: 35px;
top: 25px;
}
::v-deep .el-dialog .el-dialog__header .el-dialog__title{
::v-deep .el-dialog .el-dialog__header .el-dialog__title {
margin-left: 30px;
margin-top: 10px;
font-size: 18px;
color: #fff;
position: absolute;
}
::v-deep el-dialog__header{
::v-deep el-dialog__header {
margin-top: 20px;
}
</style>

View File

@ -940,17 +940,20 @@ function getSpecialEchart() {
console.log(echartsTest);
}
const getSafeInfo = async () => {
const getSafeInfo = async (showLoading: boolean) => {
// const res: any = await getProjectInspectRecordCountApi({ projectSn: store.sn });
// console.log("", res);
// safeData.value = res.result;
// dataList.value[0].value = res.result.rectificationNum;
// dataList.value[1].value = res.result.totalNum - res.result.rectificationNum;
const result: any = await getInspectionSelectQualityApi({
projectSn: store.sn,
inspectStartTime: dateRange.value[0],
inspectEndTime: dateRange.value[1]
});
const result: any = await getInspectionSelectQualityApi(
{
projectSn: store.sn,
inspectStartTime: dateRange.value[0],
inspectEndTime: dateRange.value[1]
},
showLoading
);
console.log("安全统计数据", result);
dataList.value = [];
@ -1017,12 +1020,15 @@ const getSafeInfo = async () => {
// majorDangerRate.value = result.result.percent;
console.log("1111111111111", dataList.value);
const res: any = await getCountDangerLevelApi({
projectSn: store.sn,
isOverdueRectification: 1,
inspectStartTime: dateRange.value[0],
inspectEndTime: dateRange.value[1]
});
const res: any = await getCountDangerLevelApi(
{
projectSn: store.sn,
isOverdueRectification: 1,
inspectStartTime: dateRange.value[0],
inspectEndTime: dateRange.value[1]
},
showLoading
);
// dataList.value = res.result.data.map((item: any, index: number) => {
// return {
// ...item,
@ -1313,18 +1319,21 @@ let dataList2 = ref([
// });
// }
const qualityInfo = async () => {
const qualityInfo = async (showLoading: boolean) => {
// const res: any = await selectQualityStatisticsApi({ projectSn: store.sn });
// dataList2.value[0].value = res.result.total.rectificationNum;
// dataList2.value[1].value = res.result.total.totalNum - res.result.total.rectificationNum;
// questionTotal.value = res.result.total.totalNum;
const res: any = await getCountDangerLevelApi({
projectSn: store.sn,
isNotQualified: 1,
inspectStartTime: dateRange.value[0],
inspectEndTime: dateRange.value[1]
});
const res: any = await getCountDangerLevelApi(
{
projectSn: store.sn,
isNotQualified: 1,
inspectStartTime: dateRange.value[0],
inspectEndTime: dateRange.value[1]
},
showLoading
);
// dataList2.value = res.result.data.map((item: any, index: number) => {
// return {
// ...item,
@ -1347,18 +1356,21 @@ const qualityInfo = async () => {
// drawEchart2();
};
const getSelectQualityStatisticsNum = async () => {
const res: any = await getSelectQualityStatisticsNumApi({
projectSn: store.sn,
inspectStartTime: dateRange.value[0],
inspectEndTime: dateRange.value[1]
});
const getSelectQualityStatisticsNum = async (showLoading: boolean) => {
const res: any = await getSelectQualityStatisticsNumApi(
{
projectSn: store.sn,
inspectStartTime: dateRange.value[0],
inspectEndTime: dateRange.value[1]
},
showLoading
);
console.log(res);
};
const getNoticeList = async () => {
const getNoticeList = async (showLoading: boolean) => {
// const res: any = await getNoticeListApi({ projectSn: store.sn, type: 10, pageNo: 1, pageSize: 99999, });
const res: any = await getNoticeListApi({ isBigScreen: 1, type: 31 });
const res: any = await getNoticeListApi({ isBigScreen: 1, type: 31 }, showLoading);
console.log("隐患智能分析", res);
listData2.value = res.result.records;
// listData2.value.push({
@ -1377,50 +1389,56 @@ const getNoticeList = async () => {
watch(
dateRange,
async () => {
() => {
if (dateRange.value == null) {
dateRange.value = [];
}
await getSafeInfo();
await qualityInfo();
getSafeInfo(true);
qualityInfo(true);
// await getSelectQualityStatisticsNum();
},
{ deep: true }
);
const getInspectionRiskChart = async () => {
const res: any = await getInspectionRiskChartApi({
projectSn: store.sn,
queryType: 1
});
const getInspectionRiskChart = async (showLoading: boolean) => {
const res: any = await getInspectionRiskChartApi(
{
projectSn: store.sn,
queryType: 1
},
showLoading
);
console.log("风险走势图", res);
riskList.value = res.result;
getRiskEchart();
};
const getCountAllSpecial = async () => {
const res: any = await getSpecialCountAllSpecialApi({
projectSn: store.sn,
type: 1
});
const getCountAllSpecial = async (showLoading: boolean) => {
const res: any = await getSpecialCountAllSpecialApi(
{
projectSn: store.sn,
type: 1
},
showLoading
);
console.log("特殊作业图", res);
specialList.value = res.result;
getSpecialEchart();
};
const setIntervalFn = () => {
getInspectionRiskChart();
getCountAllSpecial();
getSafeInfo();
qualityInfo();
getSelectQualityStatisticsNum();
getNoticeList();
const setIntervalFn = (showLoading: boolean) => {
getInspectionRiskChart(showLoading);
getCountAllSpecial(showLoading);
getSafeInfo(showLoading);
qualityInfo(showLoading);
getSelectQualityStatisticsNum(showLoading);
getNoticeList(showLoading);
};
onMounted(async () => {
setIntervalFn();
setIntervalFn(false);
setInterval(() => {
setIntervalFn();
setIntervalFn(true);
}, 30000);
});
</script>