Compare commits
6 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 8459d36259 | |||
| 5e3e531946 | |||
| 0961b82958 | |||
| f1449f587d | |||
| 71638c10ea | |||
| 92856d4cc0 |
@ -3,8 +3,8 @@ NODE_ENV = 'development'
|
||||
|
||||
# 本地环境接口地址(/api/index.ts文件中使用)
|
||||
# 后端本地
|
||||
# VITE_API_URL = 'http://192.168.34.155:19111'
|
||||
VITE_API_URL = 'http://192.168.34.221:9111' #雄哥本地
|
||||
VITE_API_URL = 'http://192.168.34.155:19111'
|
||||
# VITE_API_URL = 'http://192.168.34.221:9111' #雄哥本地
|
||||
# VITE_API_URL = 'http://182.90.224.237:51234' #雄哥远程
|
||||
# VITE_API_URL = 'http://192.168.34.221:28889'
|
||||
# VITE_API_URL = 'http://121.196.214.246/api'
|
||||
@ -41,12 +41,13 @@ VITE_API_URL = 'http://192.168.34.221:9111' #雄哥本地
|
||||
# 四川网诚
|
||||
# VITE_API_URL = 'http://jxj.zhgdyun.com:100'
|
||||
# VITE_API_URL = 'http://jxj.zhgdyun.com:34568'
|
||||
# VITE_API_URL = 'http://192.168.9.249:9820'
|
||||
# 九柱集团
|
||||
# VITE_API_URL = 'http://218.95.151.122:31004'
|
||||
# 包头化工
|
||||
# VITE_API_URL = 'http://jxj.zhgdyun.com:18000'
|
||||
# 大连金笔
|
||||
VITE_API_URL = 'http://101.43.164.214:11126'
|
||||
# VITE_API_URL = 'http://101.43.164.214:11126'
|
||||
|
||||
# 上传
|
||||
VITE_ULD_API_URL = 'http://192.168.34.155:8012/onlinePreview?url='
|
||||
|
||||
@ -36,13 +36,13 @@ NODE_ENV = "production"
|
||||
# 同济
|
||||
# VITE_API_URL = 'http://192.168.110.220:9809'
|
||||
# 四川网诚
|
||||
# VITE_API_URL = 'http://192.168.9.249:9820'
|
||||
VITE_API_URL = 'http://192.168.9.249:9820'
|
||||
# 九柱集团
|
||||
# VITE_API_URL = 'http://218.95.151.122:31004'
|
||||
# 包头化工
|
||||
# VITE_API_URL = 'http://jxj.zhgdyun.com:18000'
|
||||
# 大连金笔
|
||||
VITE_API_URL = 'http://101.43.164.214:11126'
|
||||
# VITE_API_URL = 'http://101.43.164.214:11126'
|
||||
# 打包
|
||||
VITE_ULD_API_URL = 'http://jxj.zhgdyun.com:8012/onlinePreview?url='
|
||||
|
||||
|
||||
13
.vscode/settings.json
vendored
Normal file
13
.vscode/settings.json
vendored
Normal file
@ -0,0 +1,13 @@
|
||||
{
|
||||
"leek-fund.binance": [
|
||||
"BTC_USDT",
|
||||
"ETH_USDT",
|
||||
"EOS_USDT"
|
||||
],
|
||||
"leek-fund.statusBarStock": [
|
||||
"sh000001"
|
||||
],
|
||||
"leek-fund.stockGroups": [
|
||||
"My Stocks"
|
||||
]
|
||||
}
|
||||
@ -26,6 +26,10 @@ export const getRealTimeDustNoiseDataApi = (params: {}) => {
|
||||
export const getWeatherDataApi = (params: {}) => {
|
||||
return http.post(BASEURL + `/xmgl/airQualityAnalysis/getWeatherData`, params);
|
||||
};
|
||||
//查询列表天气数据
|
||||
export const getWeatherList = (params: {}) => {
|
||||
return http.post(BASEURL + `/xmgl/weather/page`, params);
|
||||
};
|
||||
|
||||
//查询绿色设备最新10条报警数据信息
|
||||
export const selectNewEnvironmentAlarmListApi = (params: {}) => {
|
||||
|
||||
@ -29,8 +29,13 @@ export const getCompanyDataList = (params: {}) => {
|
||||
export const getPersonTypeAndEduStatisticsApi = (params: {}) => {
|
||||
return http.post(BASEURL + `/xmgl/workerInfo/selectPersonTypeAndEduStatistics`, params, { headers: { noLoading: true } });
|
||||
};
|
||||
//查询人员统计
|
||||
export const getCountEntryAndExitNum = (params: {}) => {
|
||||
return http.post(BASEURL + `/xmgl/workerInfo/countEntryAndExitNum`, params, { headers: { noLoading: true } });
|
||||
};
|
||||
//查询今日作业人员趋势
|
||||
export const getQueryTodayAttendanceTrendApi = (params: {}) => {
|
||||
// return http.get(BASEURL + `/xmgl/workerAttendance/queryYearAttendanceTrend`, params, { headers: { noLoading: true } });
|
||||
return http.get(BASEURL + `/xmgl/workerAttendance/queryTodayAttendanceTrend`, params, { headers: { noLoading: true } });
|
||||
};
|
||||
|
||||
|
||||
@ -13,9 +13,9 @@ export const getWorkerStatisticsCountApi = (params: {}) => {
|
||||
};
|
||||
|
||||
// 安全管理
|
||||
export const getProjectInspectRecordCountApi = (params: {}) => {
|
||||
export const getProjectInspectRecordCountApi = (params: {}, noLoading: boolean) => {
|
||||
return http.post(BASEURL + `/xmgl/hiddenDangerInspectRecord/getProjectInspectRecordCount`, params, {
|
||||
headers: { noLoading: true }
|
||||
headers: { noLoading }
|
||||
});
|
||||
};
|
||||
|
||||
@ -50,8 +50,8 @@ export const getStageOption = (params: {}, showLoading: boolean) => {
|
||||
};
|
||||
|
||||
//甘特图-列表查询任务进度
|
||||
export const getParentChildTaskListApi = (params: {}) => {
|
||||
return http.post(BASEURL + `/xmgl/taskProgress/getParentChildList`, params);
|
||||
export const getParentChildTaskListApi = (params: {}, showLoading: boolean) => {
|
||||
return http.post(BASEURL + `/xmgl/taskProgress/getParentChildList`, params, { headers: { noLoading: showLoading } });
|
||||
};
|
||||
|
||||
// 隐患统计智能分析
|
||||
|
||||
@ -29,8 +29,8 @@ export const BASE_IMAGE_URL = import.meta.env.VITE_BASE_IMAGE_URL;
|
||||
// export const COMPANY: string = "as"; //鞍山项目
|
||||
// export const COMPANY: string = "agjt"; //鞍钢集团
|
||||
// export const COMPANY: string = "tj"; // 同济项目
|
||||
// export const COMPANY: string = "scwc"; // 四川网诚项目
|
||||
export const COMPANY: string = "dljb"; // 大连金笔项目
|
||||
export const COMPANY: string = "scwc"; // 四川网诚项目
|
||||
// export const COMPANY: string = "dljb"; // 大连金笔项目
|
||||
// export const COMPANY: string = "agjtLive"; //鞍钢集团现场大屏
|
||||
// export const COMPANY: string = "bthg"; //包头化工
|
||||
// export const COMPANY: string = "agjtCommand"; //鞍钢集团指挥部大屏
|
||||
|
||||
@ -1584,35 +1584,19 @@ export const TJMenu: Array<any> = [
|
||||
]; //同济大屏
|
||||
export const SCWCMenu: Array<any> = [
|
||||
{
|
||||
moduleName: "综合管理",
|
||||
modulePath: "/projectOverview",
|
||||
menuList: [
|
||||
{
|
||||
menuName: "工程概况",
|
||||
companyPath: "/projectOverview"
|
||||
},
|
||||
{
|
||||
menuName: "智慧党建",
|
||||
companyPath: "/smartPartyBuilding"
|
||||
}
|
||||
]
|
||||
moduleName: "综合态势",
|
||||
modulePath: "/projectOverview"
|
||||
},
|
||||
{
|
||||
moduleName: "数字工地",
|
||||
modulePath: "/videoManagement",
|
||||
menuList: [
|
||||
{
|
||||
menuName: "视频管理",
|
||||
companyPath: "/videoManagement"
|
||||
},
|
||||
{
|
||||
menuName: "AI预警",
|
||||
companyPath: "/aIEarlyWarning"
|
||||
}
|
||||
]
|
||||
moduleName: "进度管理",
|
||||
modulePath: "/schedulePlan"
|
||||
},
|
||||
{
|
||||
moduleName: "劳务管理",
|
||||
moduleName: "质量管理",
|
||||
modulePath: "/qualityManagement"
|
||||
},
|
||||
{
|
||||
moduleName: "人员管理",
|
||||
modulePath: "/laborManagement"
|
||||
},
|
||||
{
|
||||
@ -1626,62 +1610,25 @@ export const SCWCMenu: Array<any> = [
|
||||
{
|
||||
menuName: "高支模监测",
|
||||
companyPath: "/highFormwork"
|
||||
},
|
||||
{
|
||||
menuName: "塔吊监测",
|
||||
companyPath: "/towerCraneMonitoring"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
moduleName: "质量管理",
|
||||
modulePath: "/qualityManagement",
|
||||
menuList: [
|
||||
{
|
||||
menuName: "质量管理",
|
||||
companyPath: "/qualityManagement"
|
||||
},
|
||||
{
|
||||
menuName: "进度计划",
|
||||
companyPath: "/schedulePlan"
|
||||
}
|
||||
]
|
||||
moduleName: "环境管理",
|
||||
modulePath: "/headNoise"
|
||||
},
|
||||
{
|
||||
moduleName: "行为管理",
|
||||
modulePath: "/aIEarlyWarning"
|
||||
},
|
||||
{
|
||||
moduleName: "视频监控",
|
||||
modulePath: "/videoManagement",
|
||||
menuList: [
|
||||
{
|
||||
menuName: "视频监控",
|
||||
companyPath: "/videoManagement"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
moduleName: "绿色施工",
|
||||
modulePath: "/headNoise",
|
||||
menuList: [
|
||||
{
|
||||
menuName: "环境监测",
|
||||
companyPath: "/headNoise"
|
||||
},
|
||||
{
|
||||
menuName: "塔吊监测",
|
||||
companyPath: "/towerCraneMonitoring"
|
||||
},
|
||||
{
|
||||
menuName: "高支模监测",
|
||||
companyPath: "/highFormwork"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
moduleName: "大型机械",
|
||||
modulePath: "/towerCraneMonitoring",
|
||||
menuList: [
|
||||
{
|
||||
menuName: "塔吊监测",
|
||||
companyPath: "/towerCraneMonitoring"
|
||||
}
|
||||
]
|
||||
},
|
||||
{ moduleName: "BIM模型", modulePath: "/bImModel" }
|
||||
modulePath: "/videoManagement"
|
||||
}
|
||||
]; //四川网诚
|
||||
export const BTHGMenu: Array<any> = [
|
||||
{
|
||||
|
||||
@ -128,8 +128,8 @@ watch(
|
||||
);
|
||||
|
||||
//获取里程碑option
|
||||
const getProgressOption = async () => {
|
||||
const res: any = await getStageOption({ dictionaryEncoding: "project_construction_stage", projectSn: store.sn });
|
||||
const getProgressOption = async (noLoading = false) => {
|
||||
const res: any = await getStageOption({ dictionaryEncoding: "project_construction_stage", projectSn: store.sn }, noLoading);
|
||||
if (res.result.length > 0) {
|
||||
let newArray = res.result.map((item: any) => {
|
||||
return {
|
||||
|
||||
@ -0,0 +1,386 @@
|
||||
<template>
|
||||
<div class="leftTop">
|
||||
<Card title="项目展示">
|
||||
<div class="top-tab" v-if="COMPANY === 'agjt'">
|
||||
<div
|
||||
class="tab-box"
|
||||
:style="boxStyle(item)"
|
||||
v-for="(item, index) in topText2"
|
||||
:key="item.id"
|
||||
@click="activeBtn(item, index)"
|
||||
>
|
||||
{{ item.title }}
|
||||
</div>
|
||||
</div>
|
||||
<div class="top-tab" v-else>
|
||||
<div
|
||||
class="tab-box"
|
||||
:style="boxStyle(item)"
|
||||
v-for="(item, index) in topText"
|
||||
:key="item.id"
|
||||
@click="activeBtn(item, index)"
|
||||
>
|
||||
{{ item.title }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="href-content" v-if="showVideo == 1">
|
||||
<el-carousel indicator-position="none" height="450px" style="width: 76%;">
|
||||
<el-carousel-item v-for="(item, index) in videoList" :key="item.id">
|
||||
<ckplayerComp
|
||||
:name="index"
|
||||
:poster="''"
|
||||
:deviceIp="`http://${item.account}:${item.password}`"
|
||||
:videoUrls="item.serialNumber"
|
||||
:autoPlay="true"
|
||||
></ckplayerComp>
|
||||
</el-carousel-item>
|
||||
</el-carousel>
|
||||
</div>
|
||||
<div class="videoBox" v-if="showVideo == 2" @mouseenter="showChangeVideo = true" @mouseleave="showChangeVideo = false">
|
||||
<el-upload
|
||||
:action="BASEURL + '/upload/image'"
|
||||
:on-success="file => handleSuccessTwo(file, 1)"
|
||||
:on-error="file => handleError(file, 1)"
|
||||
:beforeUpload="file => handleBeforeUploadVideo(file, 1)"
|
||||
name="files"
|
||||
:show-file-list="false"
|
||||
>
|
||||
<!-- 更换视频 -->
|
||||
<span class="change-video" v-if="showChangeVideo">更换视频</span>
|
||||
</el-upload>
|
||||
<video :src="BASEURL + '/image/' + projectData.videoUrl" class="videos" autoplay controls loop></video>
|
||||
</div>
|
||||
<div class="imgBox" v-if="showVideo == 3">
|
||||
<div class="imgs" @mouseenter="showChangeImg = true" @mouseleave="showChangeImg = false">
|
||||
<el-upload
|
||||
:action="BASEURL + '/upload/image'"
|
||||
:on-success="file => handleSuccess(file, 1)"
|
||||
:on-error="file => handleError(file, 1)"
|
||||
:beforeUpload="file => handleBeforeUploadPic(file, 1)"
|
||||
name="files"
|
||||
:show-file-list="false"
|
||||
>
|
||||
<!-- 更换图片 -->
|
||||
<span class="change-video" v-if="showChangeImg">更换图片</span>
|
||||
</el-upload>
|
||||
<img :src="BASEURL + '/image/' + picUrl" alt="" />
|
||||
</div>
|
||||
</div>
|
||||
</Card>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import Card from "@/components/card.vue";
|
||||
import { ref, onMounted, watch } from "vue";
|
||||
import { GlobalStore } from "@/stores";
|
||||
import { ElMessage } from "element-plus";
|
||||
|
||||
import { editProjectInfo, eidtProjectShowConfig, queryBySnData } from "@/api/modules/projectOverview";
|
||||
import { selectLiveVideoListApi } from "@/api/modules/video";
|
||||
import ckplayerComp from "./ckplayerComp.vue";
|
||||
import { COMPANY } from "@/config/config";
|
||||
|
||||
const store = GlobalStore();
|
||||
const videoList = ref([] as any);
|
||||
// ts
|
||||
type Props = {
|
||||
projectData?: any; // 传入项目信息
|
||||
};
|
||||
// withDefaults 定义默认值(传入的数据类型同默认值)
|
||||
const props = withDefaults(defineProps<Props>(), {
|
||||
projectData: {}
|
||||
});
|
||||
// 项目信息
|
||||
const projectData = ref({} as any);
|
||||
|
||||
watch(
|
||||
() => props.projectData,
|
||||
newVal => {
|
||||
// console.log(newVal, "newVal");
|
||||
if (newVal) {
|
||||
// props.xData = newVal;
|
||||
projectData.value = newVal;
|
||||
}
|
||||
}
|
||||
);
|
||||
//效果图
|
||||
const picUrl = ref("" as any);
|
||||
|
||||
const BASEURL = import.meta.env.VITE_API_URL;
|
||||
// 显示视频
|
||||
const showVideo = ref(1 as any);
|
||||
|
||||
// 显示更换图片
|
||||
const showChangeImg = ref(false as any);
|
||||
|
||||
// 显示更换视频
|
||||
const showChangeVideo = ref(false as any);
|
||||
|
||||
let topText2 = ref([
|
||||
{ id: 1, title: "现场视频", isActive: true },
|
||||
{ id: 2, title: "宣传视频", isActive: false },
|
||||
{ id: 3, title: "效果图", isActive: false }
|
||||
]);
|
||||
let topText = ref([
|
||||
// { id: 1, title: "现场视频", isActive: true },
|
||||
{ id: 2, title: "宣传视频", isActive: true },
|
||||
{ id: 3, title: "效果图", isActive: false }
|
||||
]);
|
||||
const getVideoList = async () => {
|
||||
let res: any = await selectLiveVideoListApi({
|
||||
projectSn: store.sn
|
||||
});
|
||||
console.log(res,'445566')
|
||||
if(res.result && res.result.extend1){
|
||||
videoList.value = JSON.parse(res.result.extend1).result.videoList;
|
||||
console.log(videoList.value,'112233')
|
||||
// 为了解决视频播放器渲染,第二个总是会默认显示一半,我动态设置样式让视图刷新,只要设置百分百就有问题,所以只能使用此方法
|
||||
setTimeout(() => {
|
||||
// 获取所有的 video 元素
|
||||
var videos = document.querySelectorAll(".href-content video")
|
||||
// var videos = document.getElementsByTagName("video");
|
||||
// 遍历所有的 video 元素
|
||||
for (var i = 0; i < videos.length; i++) {
|
||||
// 修改视频元素的样式
|
||||
videos[i].style.width = "99.9%";
|
||||
videos[i].style.height = "99.9%";
|
||||
}
|
||||
}, 2000);
|
||||
}
|
||||
};
|
||||
|
||||
function boxStyle(item: any) {
|
||||
if (item.isActive) {
|
||||
let choiseStyle = {
|
||||
color: "#fff"
|
||||
};
|
||||
return choiseStyle;
|
||||
}
|
||||
return {};
|
||||
}
|
||||
let tabIndex = ref(1 as any);
|
||||
function activeBtn(item: any) {
|
||||
let currentState = item.isActive;
|
||||
if (!currentState) {
|
||||
topText.value.forEach(el => {
|
||||
el.isActive = false;
|
||||
});
|
||||
item.isActive = !currentState;
|
||||
tabIndex.value = item.id;
|
||||
}
|
||||
showVideo.value = item.id;
|
||||
console.log(showVideo.value)
|
||||
}
|
||||
|
||||
const uploadFail = () => {
|
||||
ElMessage({
|
||||
showClose: true,
|
||||
message: "上传失败,请重试",
|
||||
type: "warning"
|
||||
});
|
||||
};
|
||||
|
||||
const fileTypeFail = (text: any) => {
|
||||
ElMessage({
|
||||
showClose: true,
|
||||
message: text,
|
||||
type: "warning"
|
||||
});
|
||||
};
|
||||
|
||||
const uploadSuccess = () => {
|
||||
ElMessage({
|
||||
showClose: true,
|
||||
message: "上传成功",
|
||||
type: "success"
|
||||
});
|
||||
};
|
||||
|
||||
// 视频文件上传 之前
|
||||
function handleBeforeUploadVideo(file: any) {
|
||||
console.log(file, "上传之前");
|
||||
let fileType = file.type.split("/")[0];
|
||||
if (fileType == "video") {
|
||||
return true;
|
||||
} else {
|
||||
fileTypeFail("请选择正确的视频文件"); //"请选择正确的文件"
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
// 图片文件上传 之前
|
||||
function handleBeforeUploadPic(file: any) {
|
||||
console.log(file, "上传之前");
|
||||
let fileType = file.type.split("/")[0];
|
||||
if (fileType == "image") {
|
||||
return true;
|
||||
} else {
|
||||
fileTypeFail("请选择正确的图片文件"); //"请选择正确的文件"
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
//上传失败
|
||||
function handleError(file: any) {
|
||||
console.log(file, "上传失败");
|
||||
uploadFail(); //"上传失败,请重试"
|
||||
}
|
||||
// 效果图上传成功
|
||||
function handleSuccess(file: any) {
|
||||
console.log("效果图上传成功", file);
|
||||
if (file.code == 200 || file.status == "SUCCESS") {
|
||||
console.log(file);
|
||||
let url = file.data[0].imageUrl;
|
||||
saveEffectData(url);
|
||||
}
|
||||
}
|
||||
|
||||
// 视频上传成功
|
||||
function handleSuccessTwo(file: any) {
|
||||
if (file.code == 200 || file.status == "SUCCESS") {
|
||||
console.log(file, "上传成功");
|
||||
let url = file.data[0].imageUrl;
|
||||
// this.imgUrl = url;
|
||||
saveOrDeleteVideo(url);
|
||||
}
|
||||
}
|
||||
//效果图 保存
|
||||
function saveEffectData(url: any) {
|
||||
// let configValue = JSON.stringify(url);
|
||||
let data = {
|
||||
projectSn: store.sn,
|
||||
showType: 3,
|
||||
showTitle: "效果图", //'效果图'
|
||||
configValue: url
|
||||
};
|
||||
eidtProjectShowConfig(data).then((res: any) => {
|
||||
if (res.code == 200) {
|
||||
getQueryBySnData();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// 查询效果图
|
||||
function getQueryBySnData() {
|
||||
queryBySnData({
|
||||
projectSn: store.sn,
|
||||
showType: 3
|
||||
}).then((res: any) => {
|
||||
console.log(res, "效果图");
|
||||
if (res.result) {
|
||||
picUrl.value = res.result.configValue;
|
||||
}
|
||||
});
|
||||
}
|
||||
// //保存或删除宣传视频
|
||||
function saveOrDeleteVideo(url) {
|
||||
editProjectInfo({
|
||||
projectSn: store.sn,
|
||||
videoUrl: url
|
||||
}).then(res => {
|
||||
console.log("保存成功", res);
|
||||
uploadSuccess(); //"上传成功"
|
||||
projectData.value.videoUrl = url;
|
||||
});
|
||||
}
|
||||
//将方法暴露给父组件
|
||||
defineExpose({
|
||||
getQueryBySnData
|
||||
})
|
||||
onMounted(async () => {
|
||||
if(COMPANY !== 'agjt') showVideo.value = 2
|
||||
await getVideoList();
|
||||
getQueryBySnData();
|
||||
if(COMPANY != 'agjt'){
|
||||
showVideo.value = 2;
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.leftTop {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
position: relative;
|
||||
.videoBox {
|
||||
width: 100%;
|
||||
height: 92%;
|
||||
margin-top: 8%;
|
||||
background: url("@/assets/images/comprehensiveManage/project10.png") no-repeat;
|
||||
background-size: 100% 100%;
|
||||
.videos {
|
||||
width: 78%;
|
||||
height: 90%;
|
||||
margin-left: 11%;
|
||||
margin-top: 1%;
|
||||
}
|
||||
}
|
||||
.imgBox {
|
||||
width: 100%;
|
||||
height: 92%;
|
||||
margin-top: 8%;
|
||||
background: url("@/assets/images/comprehensiveManage/project10.png") no-repeat;
|
||||
background-size: 100% 100%;
|
||||
.imgs {
|
||||
width: 78%;
|
||||
height: 82%;
|
||||
margin: 3% 11%;
|
||||
img {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
margin-top: 5%;
|
||||
}
|
||||
}
|
||||
}
|
||||
.href-content {
|
||||
width: 100%;
|
||||
height: 92%;
|
||||
margin-top: 8%;
|
||||
background: url("@/assets/images/comprehensiveManage/project10.png") no-repeat;
|
||||
background-size: 100% 100%;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
}
|
||||
|
||||
// .href-content {
|
||||
// width: 95%;
|
||||
// height: 92%;
|
||||
// margin: 0 auto;
|
||||
// margin-top: 8%;
|
||||
// }
|
||||
|
||||
.change-video {
|
||||
position: absolute;
|
||||
background: url("@/assets/images/cardImg.png") no-repeat;
|
||||
background-size: 100% 100%;
|
||||
color: #fff;
|
||||
padding: 1% 2%;
|
||||
font-size: 16px;
|
||||
left: 45%;
|
||||
top: 55%;
|
||||
z-index: 10;
|
||||
}
|
||||
|
||||
.top-tab {
|
||||
position: absolute;
|
||||
top: 12%;
|
||||
width: 100%;
|
||||
box-sizing: border-box;
|
||||
padding: 0 30%;
|
||||
display: flex;
|
||||
justify-content: space-around;
|
||||
.tab-box {
|
||||
font-size: 16px;
|
||||
color: rgba(255, 255, 255, 0.3);
|
||||
cursor: pointer;
|
||||
}
|
||||
}
|
||||
|
||||
::v-deep .h-card .content {
|
||||
background: none;
|
||||
}
|
||||
</style>
|
||||
File diff suppressed because it is too large
Load Diff
@ -6,8 +6,8 @@
|
||||
<leftBottom :statisticsCount="statisticsCount" class="leftBottom"></leftBottom>
|
||||
</div>
|
||||
<div class="center">
|
||||
<centerTop :projectData="projectData" class="centerTop" ref="centerTopRef"></centerTop>
|
||||
<centerBottom :projectData="projectData" class="centerBottom" ref="centerBottomRef"></centerBottom>
|
||||
<centerTop :projectData="projectData" class="centerTop" ref="centerTopRef"></centerTop>
|
||||
</div>
|
||||
<div class="right">
|
||||
<rightTop class="rightTop" ref="rightTopRef"></rightTop>
|
||||
@ -29,13 +29,13 @@ import rightBottom from "@/views/sevenLargeScreen/comprehensiveManage/projectOve
|
||||
import { GlobalStore } from "@/stores";
|
||||
const store = GlobalStore();
|
||||
import { getWorkerStatisticsCountApi, getProjectDetail } from "@/api/modules/projectOverview";
|
||||
import { ref, onMounted, onBeforeUnmount,nextTick } from "vue";
|
||||
import { ref, onMounted, onBeforeUnmount, nextTick } from "vue";
|
||||
const statisticsCount = ref(null as any);
|
||||
|
||||
const projectData = ref(null as any);
|
||||
//获取项目信息
|
||||
const getProjectInfo = async () => {
|
||||
const res = await getProjectDetail({ projectSn: store.sn });
|
||||
const getProjectInfo = async (noLoading = false) => {
|
||||
const res = await getProjectDetail({ projectSn: store.sn }, noLoading);
|
||||
// console.log("获取项目信息", res);
|
||||
// console.log("获取工程类别", projectTypeEnum);
|
||||
projectData.value = res.result;
|
||||
@ -54,39 +54,39 @@ const rightTopRef = ref();
|
||||
const rightCenterRef = ref();
|
||||
const rightBottomRef = ref();
|
||||
const callChildFn = async () => {
|
||||
nextTick( async ()=>{
|
||||
leftTopRef.value.projectTypeEnum()
|
||||
centerTopRef.value.getQueryBySnData()
|
||||
centerBottomRef.value.getProgressOption()
|
||||
rightTopRef.value.getSafeInfo()
|
||||
rightCenterRef.value.qualityInfo()
|
||||
rightBottomRef.value.getList()
|
||||
})
|
||||
}
|
||||
nextTick(async () => {
|
||||
leftTopRef.value.projectTypeEnum(true);
|
||||
centerTopRef.value.getDataList(true);
|
||||
centerBottomRef.value.getProgressOption(true);
|
||||
rightTopRef.value.getSafeInfo(true);
|
||||
rightCenterRef.value.qualityInfo();
|
||||
rightBottomRef.value.getList();
|
||||
});
|
||||
};
|
||||
//定时器
|
||||
const interval = ref(null as any);
|
||||
//定时调用
|
||||
const startInterval = async () => {
|
||||
interval.value= setInterval(() => {
|
||||
interval.value = setInterval(() => {
|
||||
getPersonDetail();
|
||||
getProjectInfo();
|
||||
getProjectInfo(true);
|
||||
callChildFn();
|
||||
}, 30 * 1000);
|
||||
}
|
||||
};
|
||||
// 在组件销毁时清除 interval
|
||||
const destroyInterval = () => {
|
||||
if (interval.value) {
|
||||
clearInterval(interval.value);
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
// 在组件销毁时调用 destroyInterval 方法清除 interval
|
||||
onBeforeUnmount(() => {
|
||||
destroyInterval();
|
||||
})
|
||||
window.onbeforeunload = (e) => {
|
||||
});
|
||||
window.onbeforeunload = () => {
|
||||
destroyInterval();
|
||||
}
|
||||
onMounted( async () => {
|
||||
};
|
||||
onMounted(async () => {
|
||||
getPersonDetail();
|
||||
getProjectInfo();
|
||||
startInterval();
|
||||
@ -113,13 +113,16 @@ onMounted( async () => {
|
||||
.center {
|
||||
width: 46%;
|
||||
margin: 0 1%;
|
||||
|
||||
.centerTop {
|
||||
height: 66%;
|
||||
margin-bottom: 2.1%;
|
||||
:deep(.content) {
|
||||
margin-top: 1.5%;
|
||||
height: 91%;
|
||||
}
|
||||
}
|
||||
.centerBottom {
|
||||
height: 32%;
|
||||
margin-bottom: 2.1%;
|
||||
}
|
||||
}
|
||||
.right {
|
||||
|
||||
@ -1,18 +1,18 @@
|
||||
<template>
|
||||
<div class="leftTop">
|
||||
<Card title="智能设备">
|
||||
<Card title="监测设备">
|
||||
<div class="deviceData">
|
||||
<div class="deviceDataA">
|
||||
<div class="num">
|
||||
<i>{{ statisticsCount.devcount.ufaceDevNum || 0 }}</i>
|
||||
</div>
|
||||
<div class="text">实名制设备数</div>
|
||||
<div class="text">人员监测设备</div>
|
||||
</div>
|
||||
<div class="deviceDataB">
|
||||
<div class="num">
|
||||
<i>{{ statisticsCount.devcount.environmentDevNum || 0 }}</i>
|
||||
</div>
|
||||
<div class="text">环境设备数</div>
|
||||
<div class="text">环境监测设备</div>
|
||||
</div>
|
||||
</div>
|
||||
</Card>
|
||||
|
||||
@ -1,59 +1,64 @@
|
||||
<template>
|
||||
<div class="leftTop">
|
||||
<Card title="人员概况">
|
||||
<Card title="人员管理">
|
||||
<div class="topPeopleNum">
|
||||
<div class="dataTlt" style="margin-left: 0;">
|
||||
<div class="text"><i>人员总数</i></div>
|
||||
<div class="num">
|
||||
<i>{{ statisticsCount.workercount.lwPersonTotal || 0 }}</i>
|
||||
</div>
|
||||
</div>
|
||||
<div class="dataTlo">
|
||||
<div class="text" v-if="COMPANY === 'agjt'"><i>出勤人数</i></div>
|
||||
<div class="text" v-else><i>实名制人数</i></div>
|
||||
<div class="text" v-else><i>进场人数</i></div>
|
||||
<div class="num">
|
||||
<i v-if="COMPANY === 'agjt'">{{ attendancePerson.totalPerson || 0 }}</i>
|
||||
<i v-else>{{ statisticsCount.workercount.totalPerson || 0 }}</i>
|
||||
<i v-else>{{ attendancePerson.lwPersonTotal || 0 }}</i>
|
||||
</div>
|
||||
</div>
|
||||
<div class="dataTlt">
|
||||
<div class="text"><i>在场人数</i></div>
|
||||
<div class="text"><i>出场人数</i></div>
|
||||
<div class="num">
|
||||
<i>{{ statisticsCount.presencecount.totalPerson || 0 }}</i>
|
||||
<i>{{ attendancePerson.lwExitPersonTotal || 0 }}</i>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="bottomPeopleNum">
|
||||
<div style="display: flex; margin-left: 2%">
|
||||
<div style="width: 5px; height: 5px; background: rgba(130, 251, 234, 1); border-radius: 10px; margin: 2%"></div>
|
||||
<div><i>管理人员</i></div>
|
||||
<div><i>在场施工人数</i></div>
|
||||
</div>
|
||||
<div class="peopleData">
|
||||
<div class="peoImg"><img src="@/assets/images/comprehensiveManage/project3.png" alt="" /></div>
|
||||
<!-- <div class="peoImg"><img src="@/assets/images/comprehensiveManage/project3.png" alt="" /></div> -->
|
||||
<div class="peoNum">
|
||||
<div class="penName"></div>
|
||||
<div class="penN"></div>
|
||||
<div class="numData1 numData">
|
||||
<div class="text"><i>甲方人员</i></div>
|
||||
<div class="text"><i>{{ presencePerson[0]?.typeName || '-'}}</i></div>
|
||||
<div class="num">
|
||||
<i style="color: #eea959">{{ statisticsCount.presencecount.jfGlPersonTotal || 0 }}/
|
||||
{{ statisticsCount.workercount.jfGlPersonTotal || 0 }}
|
||||
<i style="color: #eea959">
|
||||
<!-- {{ statisticsCount.presencecount.jfGlPersonTotal || 0 }}/ -->
|
||||
{{ presencePerson[0]?.presentPersonNum || 0 }}
|
||||
</i>
|
||||
</div>
|
||||
</div>
|
||||
<div class="numData2 numData">
|
||||
<div class="text"><i>监理人员</i></div>
|
||||
<div class="text"><i>{{ presencePerson[1]?.typeName || '-'}}</i></div>
|
||||
<div class="num">
|
||||
<i style="color: #82fbea"
|
||||
>{{ statisticsCount.presencecount.jlGlPersonTotal || 0 }}/{{
|
||||
statisticsCount.workercount.jlGlPersonTotal || 0
|
||||
}}</i
|
||||
>
|
||||
<i style="color: #82fbea">
|
||||
<!-- {{ statisticsCount.presencecount.jlGlPersonTotal || 0 }}/ -->
|
||||
{{ presencePerson[1]?.presentPersonNum || 0 }}
|
||||
</i>
|
||||
</div>
|
||||
</div>
|
||||
<div class="numData3 numData">
|
||||
<div class="text" v-if="COMPANY === 'agjt'"><i>施工方</i></div>
|
||||
<div class="text" v-else><i>乙方人员</i></div>
|
||||
<div class="text" v-else><i>{{ presencePerson[2]?.typeName || '-'}}</i></div>
|
||||
<div class="num">
|
||||
<i style="color: #7aa0ea"
|
||||
>{{ statisticsCount.presencecount.yfGlPersonTotal || 0 }}/{{
|
||||
statisticsCount.workercount.yfGlPersonTotal || 0
|
||||
}}</i
|
||||
>
|
||||
<i style="color: #7aa0ea">
|
||||
<!-- {{ statisticsCount.presencecount.yfGlPersonTotal || 0 }}/ -->
|
||||
{{ presencePerson[2]?.presentPersonNum || 0 }}
|
||||
</i>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -68,7 +73,8 @@ import Card from "@/components/card.vue";
|
||||
import { GlobalStore } from "@/stores";
|
||||
import { COMPANY } from "@/config/config";
|
||||
import { ref, onMounted, watch } from "vue";
|
||||
import { getPersonTypeAndEduStatisticsApi } from "@/api/modules/labor";
|
||||
import { selectProjectWorkerTypeTotalListApi } from "@/api/modules/labor";
|
||||
import { getPersonTypeAndEduStatisticsApi, getCountEntryAndExitNum } from "@/api/modules/labor";
|
||||
const store = GlobalStore();
|
||||
// ts
|
||||
type Props = {
|
||||
@ -84,6 +90,8 @@ const statisticsCount = ref({
|
||||
presencecount: {}
|
||||
} as any);
|
||||
|
||||
const personData = ref({} as any);
|
||||
|
||||
watch(
|
||||
() => props.statisticsCount,
|
||||
newVal => {
|
||||
@ -94,20 +102,36 @@ watch(
|
||||
}
|
||||
}
|
||||
);
|
||||
const presencePerson = ref(0)
|
||||
const presencePerson = ref([])
|
||||
const attendancePerson = ref(0)
|
||||
const toaltPerson = ref(0)
|
||||
//获取人员数据
|
||||
const getPersonList = async () => {
|
||||
const res = await getPersonTypeAndEduStatisticsApi({
|
||||
const personRes = await getPersonTypeAndEduStatisticsApi({
|
||||
projectSn: store.sn
|
||||
});
|
||||
if (personRes.result) {
|
||||
console.log("+++++++++++++++++++++++++++++++++")
|
||||
console.log(personRes)
|
||||
// presencePerson.value = personRes.result.personType.presencePerson;
|
||||
attendancePerson.value = personRes.result.personType.attendancePerson;
|
||||
// toaltPerson.value = personRes.result.personType.toaltPerson;
|
||||
}
|
||||
|
||||
|
||||
const res = await selectProjectWorkerTypeTotalListApi({
|
||||
projectSn: store.sn
|
||||
});
|
||||
if (res.result) {
|
||||
console.log("+++++++++++++++++++++++++++++++++")
|
||||
console.log(res)
|
||||
presencePerson.value = res.result.personType.presencePerson;
|
||||
attendancePerson.value = res.result.personType.attendancePerson;
|
||||
toaltPerson.value = res.result.personType.toaltPerson;
|
||||
presencePerson.value = res.result.splice(0, 3);
|
||||
console.log("获取工种分析数据", res, presencePerson.value);
|
||||
}
|
||||
const res2 = await getCountEntryAndExitNum({
|
||||
projectSn: store.sn
|
||||
});
|
||||
if (res2.result) {
|
||||
console.info(res2.result)
|
||||
personData.value = res2.result;
|
||||
}
|
||||
};
|
||||
onMounted( async () => {
|
||||
@ -123,18 +147,18 @@ onMounted( async () => {
|
||||
height: 40%;
|
||||
display: flex;
|
||||
.dataTlo {
|
||||
width: 35%;
|
||||
width: 30%;
|
||||
height: 100%;
|
||||
background: url("@/assets/images/comprehensiveManage/project9.png") no-repeat;
|
||||
background-size: 100% 100%;
|
||||
margin-left: 10%;
|
||||
margin-left: 5%;
|
||||
}
|
||||
.dataTlt {
|
||||
width: 35%;
|
||||
width: 30%;
|
||||
height: 100%;
|
||||
background: url("@/assets/images/comprehensiveManage/project12.png") no-repeat;
|
||||
background-size: 100% 100%;
|
||||
margin-left: 10%;
|
||||
margin-left: 5%;
|
||||
}
|
||||
.text {
|
||||
color: #fff;
|
||||
@ -162,6 +186,7 @@ onMounted( async () => {
|
||||
.peopleData {
|
||||
height: 80%;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
.peoImg {
|
||||
width: 30%;
|
||||
height: 100%;
|
||||
@ -173,7 +198,7 @@ onMounted( async () => {
|
||||
}
|
||||
.peoNum {
|
||||
height: 100%;
|
||||
width: 70%;
|
||||
width: 100%;
|
||||
position: relative;
|
||||
.penName {
|
||||
background: rgba(39, 88, 192, 0.6);
|
||||
|
||||
@ -4,8 +4,11 @@
|
||||
<div class="projectInfo">
|
||||
<div><span>项目名称:</span> {{ projectData.projectName || "" }}</div>
|
||||
<div :title="projectLocal"><span>项目地址:</span> {{ projectLocal }}</div>
|
||||
<div><span>项目经理:</span> {{ projectData.projectManage || "" }}</div>
|
||||
<div><span>联系电话:</span> {{ projectData.projectTel || "" }}</div>
|
||||
<!-- <div><span>项目经理:</span> {{ projectData.projectManage || "" }}</div>
|
||||
<div><span>联系电话:</span> {{ projectData.projectTel || "" }}</div> -->
|
||||
<div><span>业主单位:</span> {{ projectData.ownerUnit || "" }}</div>
|
||||
<div><span>承建单位:</span> {{ projectData.bidWinner || "" }}</div>
|
||||
<!-- <div><span>监理单位:</span> {{ projectData.supervisorUnit || "" }}</div> -->
|
||||
<div><span>建筑面积:</span> {{ projectData.projectAcreage || "" }} ㎡</div>
|
||||
<div><span>开工日期:</span> {{ projectData.startWorkDate || "" }}</div>
|
||||
<div><span>项目编号:</span> {{ projectData.projectNumber || "" }}</div>
|
||||
@ -45,8 +48,8 @@ const projectLocal = ref("" as any);
|
||||
const store = GlobalStore();
|
||||
const projectTypeEnumList:any = ref([]); //工程类别
|
||||
// 工程类别字典数据
|
||||
const projectTypeEnum = async () => {
|
||||
const res: any = await getStageOption({ dictionaryEncoding: "project_type", projectSn: store.sn });
|
||||
const projectTypeEnum = async (noLoading = false) => {
|
||||
const res: any = await getStageOption({ dictionaryEncoding: "project_type", projectSn: store.sn }, noLoading);
|
||||
if (res.result.length > 0) {
|
||||
let newArray = res.result.map((item: any) => {
|
||||
return {
|
||||
|
||||
@ -332,8 +332,8 @@ function drawEchart() {
|
||||
|
||||
//获取安全管理
|
||||
// const safeData = ref(null as any);
|
||||
const getSafeInfo = async () => {
|
||||
const res: any = await getProjectInspectRecordCountApi({ projectSn: store.sn });
|
||||
const getSafeInfo = async (noLoading = false) => {
|
||||
const res: any = await getProjectInspectRecordCountApi({ projectSn: store.sn }, noLoading);
|
||||
// console.log("获取安全管理", res);
|
||||
// safeData.value = res.result;
|
||||
dataList.value[0].value = res.result.rectificationNum;
|
||||
|
||||
@ -3,15 +3,15 @@
|
||||
<Card title="晴雨表">
|
||||
<div class="weatherBox">
|
||||
<div class="weatherItem" v-for="(item, index) in weatherList" :key="index">
|
||||
<p>{{ item.day }}</p>
|
||||
<p>{{ item.date }}</p>
|
||||
<p class="imgBox">
|
||||
<img :src="item.url" />
|
||||
<!-- <img v-else src="@/assets/images/dustNoise/weatherIcon/yu.png" /> -->
|
||||
</p>
|
||||
<div class="weather">{{ item.wea }}</div>
|
||||
<div class="temp">{{ item.tem2 }} ~ {{ item.tem1 }}</div>
|
||||
<div class="temp">{{ item.temNight }} ~ {{ item.temDay }}</div>
|
||||
<p>
|
||||
{{ item.win_speed }}
|
||||
{{ item.winSpeed }}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
@ -22,7 +22,7 @@
|
||||
<script lang="ts" setup>
|
||||
import Card from "@/components/card.vue";
|
||||
import { reactive, onMounted, ref } from "vue";
|
||||
import { getWeatherDataApi } from "@/api/modules/headNoise";
|
||||
import { getWeatherDataApi, getWeatherList } from "@/api/modules/headNoise";
|
||||
import { getTaskTimeDetail } from "@/api/modules/schedulePlan";
|
||||
import { GlobalStore } from "@/stores";
|
||||
const store = GlobalStore();
|
||||
@ -38,12 +38,10 @@ const getProjectInfo = async () => {
|
||||
};
|
||||
//获取天气
|
||||
const loadWeather = async () => {
|
||||
const res = await getWeatherDataApi({ cityid: "", areaId: projectTimeInfo.value.areaCode});
|
||||
let json = JSON.parse(res.result);
|
||||
let list = json;
|
||||
console.log("获取天气", res.result);
|
||||
const res = await getWeatherList({ projectSn: store.sn, pageSize: 7 });
|
||||
const list = res.result.records;
|
||||
list.forEach(element => {
|
||||
const weatherImg = weatherIcon.value.find(icon => icon.Image.includes(element.wea_img));
|
||||
const weatherImg = weatherIcon.value.find(icon => icon.Image.includes(element.weaImg));
|
||||
if (weatherImg) {
|
||||
const imageUrl = weatherImg.Image;
|
||||
// 将拼接好的URL赋值给element.url字段
|
||||
@ -51,6 +49,20 @@ const loadWeather = async () => {
|
||||
}
|
||||
weatherList.value.push(element);
|
||||
});
|
||||
console.info(weatherList.value, 'weatherList')
|
||||
// const res = await getWeatherDataApi({ cityid: "", areaId: projectTimeInfo.value.areaCode});
|
||||
// let json = JSON.parse(res.result);
|
||||
// let list = json;
|
||||
// console.log("获取天气", res.result);
|
||||
// list.forEach(element => {
|
||||
// const weatherImg = weatherIcon.value.find(icon => icon.Image.includes(element.wea_img));
|
||||
// if (weatherImg) {
|
||||
// const imageUrl = weatherImg.Image;
|
||||
// // 将拼接好的URL赋值给element.url字段
|
||||
// element.url = imageUrl;
|
||||
// }
|
||||
// weatherList.value.push(element);
|
||||
// });
|
||||
};
|
||||
onMounted(() => {
|
||||
getProjectInfo();
|
||||
@ -132,7 +144,7 @@ const weatherIcon = ref([
|
||||
}
|
||||
}
|
||||
}
|
||||
::v-deep .h-card .content{
|
||||
margin-top: 1%;
|
||||
::v-deep .h-card .content {
|
||||
margin-top: 1%;
|
||||
}
|
||||
</style>
|
||||
|
||||
@ -677,8 +677,11 @@ function jumpBgd() {
|
||||
window.location.replace("http://192.168.110.220:9809/#/login?token=" + store.token);
|
||||
} else if (COMPANY === "as") {
|
||||
window.location.replace("http://182.90.224.237:15551/#/login?token=" + store.token);
|
||||
} else if (COMPANY === "scwc") {
|
||||
window.location.replace("http://192.168.9.249:9809/#/login?token=" + store.token);
|
||||
} else if (envList.includes(COMPANY)) {
|
||||
window.location.replace(BASEURL + "/#/login?token=" + store.token);
|
||||
// window.location.replace("http://192.168.34.216:8082" + "/#/login?token=" + store.token);
|
||||
} else {
|
||||
// 新项目通用(百色服务器)
|
||||
window.location.replace("http://101.43.164.214:11111/#/login?token=" + store.token);
|
||||
|
||||
@ -242,9 +242,9 @@ const getPersonList = async () => {
|
||||
projectSn: store.sn
|
||||
});
|
||||
if (res.result) {
|
||||
presencePerson.value = res.result.personType.presencePerson.totalPerson;
|
||||
attendancePerson.value = res.result.personType.attendancePerson.totalPerson;
|
||||
toaltPerson.value = res.result.personType.toaltPerson.totalPerson;
|
||||
presencePerson.value = res.result.personType.presencePerson.lwPersonTotal;
|
||||
attendancePerson.value = res.result.personType.attendancePerson.lwPersonTotal;
|
||||
toaltPerson.value = res.result.personType.toaltPerson.lwPersonTotal;
|
||||
}
|
||||
};
|
||||
//获取人员数据
|
||||
@ -253,9 +253,9 @@ const getPersonList2 = async () => {
|
||||
projectSn: store.sn
|
||||
});
|
||||
if (res.result) {
|
||||
presencePerson.value = res.result.personType.presencePerson.totalPerson;
|
||||
attendancePerson.value = res.result.personType.attendancePerson.totalPerson;
|
||||
toaltPerson.value = res.result.personType.toaltPerson.totalPerson;
|
||||
presencePerson.value = res.result.personType.presencePerson.lwPersonTotal;
|
||||
attendancePerson.value = res.result.personType.attendancePerson.lwPersonTotal;
|
||||
toaltPerson.value = res.result.personType.toaltPerson.lwPersonTotal;
|
||||
}
|
||||
};
|
||||
//获取今日作业人员趋势
|
||||
|
||||
@ -42,7 +42,7 @@ const getProjectInfo = async () => {
|
||||
const res: any = await getTaskTimeDetail({ projectSn: store.sn });
|
||||
console.log("获取项目信息", res);
|
||||
projectTimeInfo.value = res.result;
|
||||
countdown.value = projectTimeInfo.value.projectOverallCountdown.toString().padStart(6, "0");
|
||||
countdown.value = projectTimeInfo.value.surplusDay.toString().padStart(6, "0");
|
||||
};
|
||||
|
||||
onMounted(async () => {
|
||||
|
||||
@ -146,7 +146,7 @@ let objData = ref({
|
||||
secret: "", //海康提供的secret
|
||||
port: 443,
|
||||
playMode: 0, // 0 预览 1回放
|
||||
layout: "1x1" //页面展示的模块数【16】
|
||||
layout: "2x" //页面展示的模块数【16】
|
||||
});
|
||||
|
||||
//设备列表的点击操作
|
||||
@ -156,6 +156,7 @@ const checkVideo = async (item: any) => {
|
||||
ysyParams.value = item;
|
||||
cameraIndexCode.value = item.serialNumber;
|
||||
if (videoType.value !== 1) {
|
||||
console.info(cameraIndexCode.value, 'cameraIndexCode.value')
|
||||
previewVideo(cameraIndexCode.value);
|
||||
}
|
||||
}
|
||||
@ -468,7 +469,10 @@ const init = (callback: (() => void) | undefined) => {
|
||||
})
|
||||
.then(function (oData: any) {
|
||||
oWebControl.JS_Resize(playWndWidth.value * store.globalScale, playWndHeight.value * store.globalScale); // 初始化后resize一次,规避firefox下首次显示窗口后插件窗口未与DIV窗口重合问题
|
||||
|
||||
previewVideo('4d291fca475146cb86ae9fe9e9dde1fc');
|
||||
previewVideo('246d890866d24a3da0eabd89e80b286f');
|
||||
previewVideo('16d41e9b069a4c9da685132dd71b600f');
|
||||
previewVideo('426cc9a5a2cd4ebf876667f130a5bd00');
|
||||
if (callback) {
|
||||
callback();
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user