Merge branch 'shenzhen-dev' of http://139.9.66.234:18023/yjlHub/zhgdlarge into shenzhen-dev
This commit is contained in:
commit
2b5bdaf3be
@ -19,7 +19,7 @@ NODE_ENV = 'development'
|
||||
# 演示平台
|
||||
# VITE_API_URL = 'http://jxj.zhgdyun.com:9809'
|
||||
# 百色七参数线上地址
|
||||
# VITE_API_URL = 'http://101.43.164.214:11111'
|
||||
VITE_API_URL = 'http://101.43.164.214:11111'
|
||||
# 七参数标准版(测试平台)
|
||||
# VITE_API_URL = 'http://jxj.zhgdyun.com:15551'
|
||||
# 七参数标准版(测试平台)
|
||||
|
||||
@ -13,7 +13,7 @@ NODE_ENV = "production"
|
||||
# VITE_API_URL = "http://183.249.224.118:9003"
|
||||
|
||||
# 百色 新项目通用地址
|
||||
# VITE_API_URL = 'http://101.43.164.214:11111'
|
||||
VITE_API_URL = 'http://101.43.164.214:11111'
|
||||
|
||||
# 七参数标准版(演示平台)
|
||||
# VITE_API_URL = 'http://jxj.zhgdyun.com:9809'
|
||||
|
||||
BIN
src/assets/images/bigImg.png
Normal file
BIN
src/assets/images/bigImg.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 3.6 MiB |
|
Before Width: | Height: | Size: 5.7 MiB After Width: | Height: | Size: 5.7 MiB |
@ -23,7 +23,7 @@ export const BAIDU_MAP_KEY: string = "";
|
||||
export const BASE_IMAGE_URL = import.meta.env.VITE_BASE_IMAGE_URL;
|
||||
|
||||
// 项目环境标识配置 部署时需更改对应的项目
|
||||
// export const COMPANY: string = ""; //标准版
|
||||
export const COMPANY: string = ""; //标准版
|
||||
// export const COMPANY: string = "zhzrf"; //中海·臻如府
|
||||
// export const COMPANY: string = "zsbf"; //中水北方
|
||||
// export const COMPANY: string = "as"; //鞍山项目
|
||||
|
||||
@ -182,7 +182,7 @@ function loginOut() {
|
||||
.largeScreen {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background: url("@/assets/images/bigImg.gif") no-repeat;
|
||||
background: url("@/assets/images/bigImg.png") no-repeat;
|
||||
background-size: 100% 100%;
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
|
||||
@ -209,7 +209,7 @@ function jumpBgd() {
|
||||
.largeScreen {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background: url("@/assets/images/bigImg.gif") no-repeat;
|
||||
background: url("@/assets/images/bigImg.png") no-repeat;
|
||||
background-size: 100% 100%;
|
||||
|
||||
.header {
|
||||
|
||||
@ -228,7 +228,7 @@ function jumpBgd() {
|
||||
.largeScreen {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background: url("@/assets/images/bigImg.gif") no-repeat;
|
||||
background: url("@/assets/images/bigImg.png") no-repeat;
|
||||
background-size: 100% 100%;
|
||||
|
||||
.header {
|
||||
|
||||
@ -228,7 +228,7 @@ function jumpBgd() {
|
||||
.largeScreen {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background: url("@/assets/images/bigImg.gif") no-repeat;
|
||||
background: url("@/assets/images/bigImg.png") no-repeat;
|
||||
background-size: 100% 100%;
|
||||
|
||||
.header {
|
||||
|
||||
@ -219,7 +219,7 @@ function jumpBgd() {
|
||||
.largeScreen {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background: url("@/assets/images/bigImg.gif") no-repeat;
|
||||
background: url("@/assets/images/bigImg.png") no-repeat;
|
||||
background-size: 100% 100%;
|
||||
|
||||
.header {
|
||||
|
||||
@ -2,6 +2,33 @@
|
||||
<Card title="今日告警">
|
||||
<div class="ai-bottom-right">
|
||||
<div class="list-content">
|
||||
<div class="selBox">
|
||||
<div class="search-item">
|
||||
<el-date-picker
|
||||
v-model="rangeTime"
|
||||
type="daterange"
|
||||
size="small"
|
||||
range-separator="至"
|
||||
start-placeholder="开始日期"
|
||||
end-placeholder="结束日期"
|
||||
value-format="YYYY-MM-DD"
|
||||
@change="timeChange"
|
||||
>
|
||||
</el-date-picker>
|
||||
</div>
|
||||
<!-- 部门 -->
|
||||
<div class="search-item">
|
||||
<el-select v-model="searchForm.alarmType" placeholder="请选择告警类型" size="small" clearable>
|
||||
<el-option v-for="item in aiAlarmTypeEnum" :key="item.id" :label="item.value" :value="item.id"></el-option>
|
||||
</el-select>
|
||||
</div>
|
||||
<div class="search-item">
|
||||
<el-button type="primary" size="small" @click="search">查询</el-button>
|
||||
</div>
|
||||
<div class="search-item">
|
||||
<el-button type="primary" size="small" @click="reset">重置</el-button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="tab-list">
|
||||
<div style="width: 10%">序号</div>
|
||||
<div style="width: 20%">抓拍照片</div>
|
||||
@ -12,41 +39,41 @@
|
||||
<div style="width: 10%">操作</div>
|
||||
</div>
|
||||
<el-scrollbar class="list-box">
|
||||
<div class="warn_main" v-infinite-scroll="load">
|
||||
<div class="warn_main" v-infinite-scroll="load" :infinite-scroll-immediate="false">
|
||||
<div v-for="(item, index) in warnAlarmList" class="list-style" :key="item.id">
|
||||
<div style="width: 10%">{{ index + 1 }}</div>
|
||||
<div class="list-img" style="width: 20%">
|
||||
<div class="img-style">
|
||||
<!-- <img src="@/assets/images/noData.png" /> -->
|
||||
<!-- <img :src="BASEURL + '/image/' + item.imageUrl" /> -->
|
||||
<el-image
|
||||
fit="contain"
|
||||
class="el-img"
|
||||
:src="BASEURL + '/image/' + item.imageUrl"
|
||||
:preview-src-list="[BASEURL + '/image/' + item.imageUrl]"
|
||||
>
|
||||
<template #error>
|
||||
<el-image :src="noDataImage" :preview-src-list="[noDataImage]" fit="contain" class="el-no-img" alt="" />
|
||||
</template>
|
||||
</el-image>
|
||||
<div style="width: 10%">{{ index + 1 }}</div>
|
||||
<div class="list-img" style="width: 20%">
|
||||
<div class="img-style">
|
||||
<!-- <img src="@/assets/images/noData.png" /> -->
|
||||
<!-- <img :src="BASEURL + '/image/' + item.imageUrl" /> -->
|
||||
<el-image
|
||||
fit="contain"
|
||||
class="el-img"
|
||||
:src="BASEURL + '/image/' + item.imageUrl"
|
||||
:preview-src-list="[BASEURL + '/image/' + item.imageUrl]"
|
||||
>
|
||||
<template #error>
|
||||
<el-image :src="noDataImage" :preview-src-list="[noDataImage]" fit="contain" class="el-no-img" alt="" />
|
||||
</template>
|
||||
</el-image>
|
||||
</div>
|
||||
</div>
|
||||
<!-- <div>{{ item.dev }}</div> -->
|
||||
<div style="width: 20%">{{ item.hardwareName }}</div>
|
||||
<div style="width: 20%" v-if="COMPANY === 'agjt'">
|
||||
<span v-if="item.alarmType === 1">未穿安全工作服</span>
|
||||
<span v-if="item.alarmType === 2">未戴安全帽</span>
|
||||
<span v-if="item.alarmType === 3">烟火报警</span>
|
||||
<span v-if="item.alarmType === 4">未穿戴安全带</span>
|
||||
</div>
|
||||
<div style="width: 20%" v-else>{{ item.alarmType ? getWarnName(item.alarmType) : "" }}</div>
|
||||
<div style="width: 20%">{{ item.createTime }}</div>
|
||||
<div style="color: #65d7f9; cursor: pointer; width: 10%" @click="openDetailDialog(item)">查看详情</div>
|
||||
</div>
|
||||
<!-- <div>{{ item.dev }}</div> -->
|
||||
<div style="width: 20%">{{ item.hardwareName }}</div>
|
||||
<div style="width: 20%" v-if="COMPANY === 'agjt'">
|
||||
<span v-if="item.alarmType === 1">未穿安全工作服</span>
|
||||
<span v-if="item.alarmType === 2">未戴安全帽</span>
|
||||
<span v-if="item.alarmType === 3">烟火报警</span>
|
||||
<span v-if="item.alarmType === 4">未穿戴安全带</span>
|
||||
<div class="not-data" v-if="warnAlarmList.length == 0">
|
||||
<img src="@/assets/images/noData.png" />
|
||||
<p>暂无数据</p>
|
||||
</div>
|
||||
<div style="width: 20%" v-else>{{ item.alarmType ? getWarnName(item.alarmType) : "" }}</div>
|
||||
<div style="width: 20%">{{ item.createTime }}</div>
|
||||
<div style="color: #65d7f9; cursor: pointer; width: 10%" @click="openDetailDialog(item)">查看详情</div>
|
||||
</div>
|
||||
<div class="not-data" v-if="warnAlarmList.length == 0">
|
||||
<img src="@/assets/images/noData.png" />
|
||||
<p>暂无数据</p>
|
||||
</div>
|
||||
</div>
|
||||
</el-scrollbar>
|
||||
</div>
|
||||
@ -109,86 +136,19 @@ let aiAlarmTypeEnum = ref([] as any);
|
||||
// 当前环境
|
||||
const BASEURL = import.meta.env.VITE_API_URL;
|
||||
const store = GlobalStore();
|
||||
// const list = reactive([
|
||||
// {
|
||||
// id: 1,
|
||||
// devName: "青金山隧道钢筋加场枪机",
|
||||
// warnType: "未穿反光衣",
|
||||
// warnTime: "2023-01-01 12:00:00"
|
||||
// },
|
||||
// {
|
||||
// id: 2,
|
||||
// devName: "青金山隧道钢筋加场枪机",
|
||||
// warnType: "未穿反光衣",
|
||||
// warnTime: "2023-01-01 12:00:00"
|
||||
// },
|
||||
// {
|
||||
// id: 3,
|
||||
// devName: "青金山隧道钢筋加场枪机",
|
||||
// warnType: "未穿反光衣",
|
||||
// warnTime: "2023-01-01 12:00:00"
|
||||
// },
|
||||
// {
|
||||
// id: 4,
|
||||
// devName: "青金山隧道钢筋加场枪机",
|
||||
// warnType: "未穿反光衣",
|
||||
// warnTime: "2023-01-01 12:00:00"
|
||||
// },
|
||||
// {
|
||||
// id: 5,
|
||||
// devName: "青金山隧道钢筋加场枪机",
|
||||
// warnType: "未穿反光衣",
|
||||
// warnTime: "2023-01-01 12:00:00"
|
||||
// },
|
||||
// {
|
||||
// id: 6,
|
||||
// devName: "青金山隧道钢筋加场枪机",
|
||||
// warnType: "未穿反光衣",
|
||||
// warnTime: "2023-01-01 12:00:00"
|
||||
// },
|
||||
// {
|
||||
// id: 7,
|
||||
// devName: "青金山隧道钢筋加场枪机",
|
||||
// warnType: "未穿反光衣",
|
||||
// warnTime: "2023-01-01 12:00:00"
|
||||
// },
|
||||
|
||||
// {
|
||||
// id: 8,
|
||||
// devName: "青金山隧道钢筋加场枪机",
|
||||
// dev: "未知",
|
||||
// warnType: "未穿反光衣",
|
||||
// warnTime: "2023-01-01 12:00:00"
|
||||
// },
|
||||
// {
|
||||
// id: 9,
|
||||
// devName: "青金山隧道钢筋加场枪机",
|
||||
// dev: "未知",
|
||||
// warnType: "未穿反光衣",
|
||||
// warnTime: "2023-01-01 12:00:00"
|
||||
// },
|
||||
// {
|
||||
// id: 10,
|
||||
// devName: "青金山隧道钢筋加场枪机",
|
||||
// dev: "未知",
|
||||
// warnType: "未穿反光衣",
|
||||
// warnTime: "2023-01-01 12:00:00"
|
||||
// },
|
||||
// {
|
||||
// id: 11,
|
||||
// devName: "青金山隧道钢筋加场枪机",
|
||||
// dev: "未知",
|
||||
// warnType: "未穿反光衣",
|
||||
// warnTime: "2023-01-01 12:00:00"
|
||||
// },
|
||||
// {
|
||||
// id: 12,
|
||||
// devName: "青金山隧道钢筋加场枪机",
|
||||
// dev: "未知",
|
||||
// warnType: "未穿反光衣",
|
||||
// warnTime: "2023-01-01 12:00:00"
|
||||
// }
|
||||
// ]);
|
||||
const searchForm = reactive({
|
||||
alarmType: "",
|
||||
startTime: dayjs().format("YYYY-MM-DD") + " 00:00:00",
|
||||
endTime: dayjs().format("YYYY-MM-DD") + " 23:59:59"
|
||||
});
|
||||
const rangeTime = ref([dayjs().format("YYYY-MM-DD") + " 00:00:00", dayjs().format("YYYY-MM-DD") + " 23:59:59"] as any);
|
||||
|
||||
const timeChange = (e: any) => {
|
||||
searchForm.startTime = e[0];
|
||||
searchForm.endTime = e[1];
|
||||
};
|
||||
|
||||
let showDialog = ref(false as any);
|
||||
function handleClick(event: any) {
|
||||
// console.log("点击", event.target.className);
|
||||
@ -202,29 +162,30 @@ let warnAlarmList = ref([] as any);
|
||||
const pageInfo = reactive({
|
||||
pageNo: 0,
|
||||
pageSize: 10,
|
||||
total: 0,
|
||||
total: 0
|
||||
} as any);
|
||||
const load = async () => {
|
||||
console.log("加载", pageInfo.pageNo * pageInfo.pageSize, pageInfo.total);
|
||||
if(pageInfo.pageNo > 0 && pageInfo.total == 0) return
|
||||
if(pageInfo.pageNo * pageInfo.pageSize > pageInfo.total) return ElMessage.warning("到底部了!");
|
||||
if (pageInfo.pageNo > 0 && pageInfo.total == 0) return;
|
||||
if (pageInfo.pageNo * pageInfo.pageSize > pageInfo.total) return; // ElMessage.warning("到底部了!");
|
||||
pageInfo.pageNo += 1;
|
||||
await getWarnAlarmList();
|
||||
}
|
||||
};
|
||||
//获取告警列表
|
||||
const getWarnAlarmList = async () => {
|
||||
const res: any = await getAlarmPageList({
|
||||
projectSn: store.sn,
|
||||
selectType: 3,
|
||||
pageNo: pageInfo.pageNo,
|
||||
const res: any = await getAlarmPageList({
|
||||
projectSn: store.sn,
|
||||
selectType: 3,
|
||||
pageNo: pageInfo.pageNo,
|
||||
pageSize: pageInfo.pageSize,
|
||||
startTime: dayjs().format("YYYY-MM-DD") + " 00:00:00",
|
||||
endTime: dayjs().format("YYYY-MM-DD") + " 23:59:59",
|
||||
...searchForm
|
||||
// startTime: dayjs().format("YYYY-MM-DD") + " 00:00:00",
|
||||
// endTime: dayjs().format("YYYY-MM-DD") + " 23:59:59"
|
||||
});
|
||||
console.log("获取告警列表", res);
|
||||
if (res.result.records.length > 0) {
|
||||
warnAlarmList.value = warnAlarmList.value.concat(res.result.records);
|
||||
if(pageInfo.pageNo == 1){
|
||||
if (pageInfo.pageNo == 1) {
|
||||
mitts.emit("warnAlarmList", res.result.records[0]);
|
||||
detailData.value = res.result.records[0];
|
||||
pageInfo.total = Number(res.result.total);
|
||||
@ -255,6 +216,23 @@ function getWarnName(warnType: any) {
|
||||
return enumObj ? enumObj.value : "";
|
||||
}
|
||||
|
||||
const search = () => {
|
||||
pageInfo.pageNo = 0;
|
||||
pageInfo.total = 0;
|
||||
warnAlarmList.value = [];
|
||||
load();
|
||||
};
|
||||
|
||||
const reset = () => {
|
||||
searchForm.alarmType = "";
|
||||
searchForm.startTime = dayjs().format("YYYY-MM-DD") + " 00:00:00";
|
||||
searchForm.endTime = dayjs().format("YYYY-MM-DD") + " 23:59:59";
|
||||
pageInfo.pageNo = 0;
|
||||
pageInfo.total = 0;
|
||||
warnAlarmList.value = [];
|
||||
load();
|
||||
};
|
||||
|
||||
// 打开详情弹窗
|
||||
function openDetailDialog(item: any) {
|
||||
// console.log(item, "当前行数据");
|
||||
@ -269,10 +247,11 @@ function closeDialog() {
|
||||
//将方法暴露给父组件
|
||||
defineExpose({
|
||||
getWarnTypeOption,
|
||||
getWarnAlarmList
|
||||
search
|
||||
});
|
||||
onMounted(async () => {
|
||||
getWarnTypeOption();
|
||||
// search();
|
||||
// getWarnAlarmList();
|
||||
});
|
||||
onBeforeUnmount(async () => {
|
||||
@ -283,6 +262,7 @@ onBeforeUnmount(async () => {
|
||||
<style lang="scss" scoped>
|
||||
.warn_main {
|
||||
min-height: 300px;
|
||||
// height: 101%;
|
||||
}
|
||||
.list-detail {
|
||||
position: absolute;
|
||||
@ -421,7 +401,7 @@ onBeforeUnmount(async () => {
|
||||
}
|
||||
}
|
||||
.list-box {
|
||||
height: 98%;
|
||||
height: 88%;
|
||||
.list-style:nth-child(even) {
|
||||
background: rgba(39, 88, 192, 0.06);
|
||||
}
|
||||
@ -482,4 +462,52 @@ onBeforeUnmount(async () => {
|
||||
margin: -6% 37%;
|
||||
}
|
||||
}
|
||||
|
||||
// element 组件样式
|
||||
:deep() {
|
||||
.el-date-editor .el-range-input,
|
||||
.el-range-separator {
|
||||
color: #fff;
|
||||
}
|
||||
.el-input__wrapper {
|
||||
background: #112d59;
|
||||
}
|
||||
.el-input__inner {
|
||||
color: #fff;
|
||||
}
|
||||
.el-button {
|
||||
background-color: #2758c0;
|
||||
color: white;
|
||||
border-color: transparent;
|
||||
}
|
||||
}
|
||||
::v-deep .el-range-separator {
|
||||
color: #ccc;
|
||||
font-size: 10px;
|
||||
}
|
||||
::v-deep .el-range-input {
|
||||
color: #ccc;
|
||||
font-size: 10px;
|
||||
}
|
||||
@mixin flex {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
.selBox {
|
||||
width: 100%;
|
||||
height: 10%;
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
// padding: 0 24px;
|
||||
gap: 4px;
|
||||
.search-item {
|
||||
@include flex;
|
||||
// max-width: 20%;
|
||||
// margin-right: 20px;
|
||||
span {
|
||||
color: white;
|
||||
margin-right: 10px;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
@ -44,7 +44,7 @@ const callChildFn = async () => {
|
||||
topRightRef.value.getWarnAlarmTotal()
|
||||
bottomLeftRef.value.getMemberCareList()
|
||||
bottomRightRef.value.getWarnTypeOption()
|
||||
// bottomRightRef.value.getWarnAlarmList()
|
||||
bottomRightRef.value.search()
|
||||
})
|
||||
// await topLeftRef.value.getMemberCareList()
|
||||
// await topCenterRef.value.getMemberCareList()
|
||||
|
||||
@ -595,7 +595,7 @@ function jumpBgd() {
|
||||
justify-content: center;
|
||||
}
|
||||
.largeScreen {
|
||||
background: url("@/assets/images/bigImg.gif") no-repeat;
|
||||
background: url("@/assets/images/bigImg.png") no-repeat;
|
||||
background-size: 100% 100%;
|
||||
position: relative;
|
||||
.header {
|
||||
|
||||
@ -814,7 +814,7 @@ function jumpBgd() {
|
||||
}
|
||||
|
||||
.largeScreen {
|
||||
background: url("@/assets/images/bigImg.gif") no-repeat;
|
||||
background: url("@/assets/images/bigImg.png") no-repeat;
|
||||
background-size: 100% 100%;
|
||||
position: relative;
|
||||
|
||||
|
||||
@ -690,7 +690,7 @@ function jumpBgd() {
|
||||
.largeScreen {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background: url("@/assets/images/bigImg.gif") no-repeat;
|
||||
background: url("@/assets/images/bigImg.png") no-repeat;
|
||||
background-size: 100% 100%;
|
||||
|
||||
.header {
|
||||
|
||||
@ -82,16 +82,53 @@
|
||||
<el-button type="primary" size="small" @click="reset">重置</el-button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="tabList">
|
||||
<!-- <div class="tabList">
|
||||
<div>序号</div>
|
||||
<div>类型</div>
|
||||
<div>姓名</div>
|
||||
<div>班组</div>
|
||||
<div>通行时间</div>
|
||||
<div>进出场图片</div>
|
||||
</div>
|
||||
</div> -->
|
||||
<el-scrollbar class="listBox" ref="refScrollbar">
|
||||
<template v-if="crewRealTimeList.length > 0">
|
||||
<div class="card-list">
|
||||
<div class="card-item" v-for="(item, index) in crewRealTimeList" :key="item.id">
|
||||
<div class="card-item-title">
|
||||
<span class="name">{{ item.workerName }}</span>
|
||||
<span class="date">{{ item.createTime }}</span>
|
||||
<span class="passType" :class="item.passType == 1 ? 'in' : 'out'">{{ item.passType == 1 ? "进" : "出" }}</span>
|
||||
</div>
|
||||
<div class="card-item-content">
|
||||
<div class="img-box">
|
||||
<el-image
|
||||
v-if="item.imageUrl"
|
||||
fit="contain"
|
||||
class="el-img"
|
||||
:src="BASEURL + '/image/' + item.imageUrl"
|
||||
:preview-src-list="[BASEURL + '/image/' + item.imageUrl]"
|
||||
>
|
||||
<template #error>
|
||||
<div class="image-slot">
|
||||
<el-image :src="noDataImage" :preview-src-list="[noDataImage]" fit="contain" class="el-img" alt />
|
||||
</div>
|
||||
</template>
|
||||
</el-image>
|
||||
<el-image v-else :src="noDataImage" :preview-src-list="[noDataImage]" fit="contain" class="el-img" alt />
|
||||
</div>
|
||||
<div class="info-box">
|
||||
<div class="info-item">
|
||||
<span class="label">班组/部门:</span>
|
||||
<span class="value">{{ item.teamName || '-' }}</span>
|
||||
</div>
|
||||
<div class="info-item">
|
||||
<span class="label">闸机名称:</span>
|
||||
<span class="value">{{ item.passagewayName || '-' }}</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- <template v-if="crewRealTimeList.length > 0">
|
||||
<div v-for="(item, index) in crewRealTimeList" class="listStyle" :key="item.id">
|
||||
<div>
|
||||
<span>{{ index + 1 }}</span>
|
||||
@ -126,7 +163,7 @@
|
||||
<el-image v-else :src="noDataImage" :preview-src-list="[noDataImage]" fit="contain" class="el-img" alt />
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
</template> -->
|
||||
<div class="notoDta" v-if="crewRealTimeList.length == 0">
|
||||
<img src="@/assets/images/noData.png" />
|
||||
<p>暂无数据</p>
|
||||
@ -134,7 +171,7 @@
|
||||
</el-scrollbar>
|
||||
<el-pagination
|
||||
background
|
||||
:page-size="10"
|
||||
:page-size="12"
|
||||
style="justify-content: center"
|
||||
@current-change="onCurrentChange"
|
||||
layout="prev, pager, next"
|
||||
@ -454,7 +491,7 @@ const getCrewRealTimeData = () => {
|
||||
let data = {
|
||||
projectSn: store.sn,
|
||||
pageNo: pageNo.value,
|
||||
pageSize: 10,
|
||||
pageSize: 12,
|
||||
userEnterpriseId: store.userInfo?.userEnterpriseId || "",
|
||||
...searchForm
|
||||
// userEnterpriseId:'1506921464948166657,1506897864874627073,88',
|
||||
@ -629,7 +666,7 @@ onMounted(async () => {
|
||||
height: 10%;
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
padding: 0 8px;
|
||||
padding: 0 24px;
|
||||
gap: 4px;
|
||||
.search-item {
|
||||
@include flex;
|
||||
@ -642,7 +679,8 @@ onMounted(async () => {
|
||||
}
|
||||
}
|
||||
.listBox {
|
||||
height: 75%;
|
||||
height: 78%;
|
||||
margin-bottom: 16px;
|
||||
.listStyle {
|
||||
display: flex;
|
||||
justify-content: space-around;
|
||||
@ -721,4 +759,101 @@ onMounted(async () => {
|
||||
margin: -6% 37%;
|
||||
}
|
||||
}
|
||||
.card-list {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(4, 1fr);
|
||||
gap: 16px;
|
||||
margin: 0 24px;
|
||||
.card-item {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
border: 1px solid #5cc4f2;
|
||||
height: 124px;
|
||||
.card-item-title {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
border-bottom: 1px solid #5cc4f2;
|
||||
position: relative;
|
||||
height: 24px;
|
||||
.name {
|
||||
font-family: Source Han Sans CN, Source Han Sans CN;
|
||||
font-weight: 400;
|
||||
font-size: 16px;
|
||||
color: #ffffff;
|
||||
line-height: 24px;
|
||||
margin: 0 16px;
|
||||
}
|
||||
.date {
|
||||
font-size: 12px;
|
||||
font-family: Source Han Sans CN, Source Han Sans CN;
|
||||
font-weight: 400;
|
||||
color: #a8abb2;
|
||||
line-height: 14px;
|
||||
}
|
||||
.passType {
|
||||
position: absolute;
|
||||
right: 0;
|
||||
top: 0;
|
||||
width: 48px;
|
||||
height: 24px;
|
||||
font-size: 14px;
|
||||
color: #000000;
|
||||
line-height: 18px;
|
||||
font-family: Source Han Sans CN, Source Han Sans CN;
|
||||
font-weight: 400;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
border-radius: 0 0 0 24px;
|
||||
&.out {
|
||||
background-color: #81f279;
|
||||
}
|
||||
&.in {
|
||||
background-color: #6375c7;
|
||||
}
|
||||
}
|
||||
}
|
||||
.card-item-content {
|
||||
flex: 1;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
padding: 10px 8px;
|
||||
.img-box {
|
||||
width: 64px;
|
||||
height: 80px;
|
||||
margin-right: 24px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
overflow: hidden;
|
||||
}
|
||||
.info-box {
|
||||
flex: 1;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
.info-item {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
margin-bottom: 6px;
|
||||
&:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
.label {
|
||||
font-size: 12px;
|
||||
color: #a8abb2;
|
||||
line-height: 14px;
|
||||
margin-bottom: 2px;
|
||||
}
|
||||
.value {
|
||||
font-size: 12px;
|
||||
color: #ffffff;
|
||||
line-height: 14px;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
@ -22,10 +22,14 @@
|
||||
<div>{{ item.actualQuantity }}</div>
|
||||
<div>{{ item.waterBinderRatio }}</div>
|
||||
<div>{{ item.dischargeTime }}</div>
|
||||
<div style="margin-left: 35px;text-align: center" v-if="item.useStatus">
|
||||
<span v-if="item.useStatus === 1">{{ stateOptions[item.useStatus - 1].label }}</span>
|
||||
<span v-if="item.useStatus === 2 || item.useStatus === 3" style="color: #edc55a;">{{ stateOptions[item.useStatus - 1].label }}</span>
|
||||
<span v-if="item.useStatus === 4 || item.useStatus === 5" style="color: #ec6266;">{{ stateOptions[item.useStatus - 1].label }}</span>
|
||||
<div style="margin-left: 35px; text-align: center" v-if="item.useStatus">
|
||||
<span v-if="item.useStatus === 1">{{ stateOptions[item.useStatus - 1].label }}</span>
|
||||
<span v-if="item.useStatus === 2 || item.useStatus === 3" style="color: #edc55a">{{
|
||||
stateOptions[item.useStatus - 1].label
|
||||
}}</span>
|
||||
<span v-if="item.useStatus === 4 || item.useStatus === 5" style="color: #ec6266">{{
|
||||
stateOptions[item.useStatus - 1].label
|
||||
}}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="not-data" v-if="list.length == 0">
|
||||
@ -39,28 +43,60 @@
|
||||
<div class="political-outlook" v-show="dialogShowTime">
|
||||
<div class="dialog-icon"><img src="@/assets/images/titleIcon.png" alt="" /></div>
|
||||
<div class="dialog-title"><i>生产数据详情</i></div>
|
||||
<el-icon @click="dialogShowTime=false" class="closeBtn"><Close /></el-icon>
|
||||
<el-icon @click="dialogShowTime = false" class="closeBtn"><Close /></el-icon>
|
||||
<div class="dataInfo">
|
||||
<div class="left">
|
||||
<div>任务单号<span>{{ detailData.taskNumber || " " }}</span></div>
|
||||
<div>施工地点<span>{{ detailData.constructionSite || " " }}</span></div>
|
||||
<div>设备名称<span>{{ detailData.devName || " " }}</span></div>
|
||||
<div>试验员<span style="margin-left: 24%">{{ detailData.operator || " " }}</span></div>
|
||||
<div>强度等级<span>{{ detailData.powerLevel || " " }}</span></div>
|
||||
<div>实际方量(m³)<span style="margin-left: 8%">{{ detailData.actualQuantity || 0 }}</span></div>
|
||||
<div>
|
||||
任务单号<span>{{ detailData.taskNumber || " " }}</span>
|
||||
</div>
|
||||
<div>
|
||||
施工地点<span>{{ detailData.constructionSite || " " }}</span>
|
||||
</div>
|
||||
<div>
|
||||
设备名称<span>{{ detailData.devName || " " }}</span>
|
||||
</div>
|
||||
<div>
|
||||
试验员<span style="margin-left: 24%">{{ detailData.operator || " " }}</span>
|
||||
</div>
|
||||
<div>
|
||||
强度等级<span>{{ detailData.powerLevel || " " }}</span>
|
||||
</div>
|
||||
<div>
|
||||
实际方量(m³)<span style="margin-left: 8%">{{ detailData.actualQuantity || 0 }}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="right">
|
||||
<!-- <div>工程名称<span>{{ detailData. || " " }}</span></div> -->
|
||||
<div>浇筑部位<span>{{ detailData.pouringPart || " " }}</span></div>
|
||||
<div>设备编号<span>{{ detailData.devSn || " " }}</span></div>
|
||||
<div>出料时间<span style="margin-left: 20%">{{ detailData.createDate || " " }}</span></div>
|
||||
<div>施工配合比<span style="margin-left: 17%">{{ detailData.constructionMixRatio || " " }}</span></div>
|
||||
<div>搅拌时长<span style="margin-left: 20%">{{ detailData.stirringTime || " " }}</span></div>
|
||||
<div v-if="detailData.useStatus && detailData.useStatus === 2">状态<span style="margin-left: 28%; color: yellow">{{ stateOptions[detailData.useStatus - 1].label }}</span></div>
|
||||
<div v-if="detailData.useStatus && detailData.useStatus === 3">状态<span style="margin-left: 28%; color: yellow">{{ stateOptions[detailData.useStatus - 1].label }}</span></div>
|
||||
<div v-if="detailData.useStatus && detailData.useStatus === 1">状态<span style="margin-left: 28%;">{{ stateOptions[detailData.useStatus - 1].label }}</span></div>
|
||||
<div v-if="detailData.useStatus && detailData.useStatus === 4">状态<span style="margin-left: 28%; color: #ec6266">{{ stateOptions[detailData.useStatus - 1].label }}</span></div>
|
||||
<div v-if="detailData.useStatus && detailData.useStatus === 5">状态<span style="margin-left: 28%; color: #ec6266">{{ stateOptions[detailData.useStatus - 1].label }}</span></div>
|
||||
<div>
|
||||
浇筑部位<span>{{ detailData.pouringPart || " " }}</span>
|
||||
</div>
|
||||
<div>
|
||||
设备编号<span>{{ detailData.devSn || " " }}</span>
|
||||
</div>
|
||||
<div>
|
||||
出料时间<span style="margin-left: 20%">{{ detailData.createDate || " " }}</span>
|
||||
</div>
|
||||
<div>
|
||||
施工配合比<span style="margin-left: 17%">{{ detailData.constructionMixRatio || " " }}</span>
|
||||
</div>
|
||||
<div>
|
||||
搅拌时长<span style="margin-left: 20%">{{ detailData.stirringTime || " " }}</span>
|
||||
</div>
|
||||
<div v-if="detailData.useStatus && detailData.useStatus === 2">
|
||||
状态<span style="margin-left: 28%; color: yellow">{{ stateOptions[detailData.useStatus - 1].label }}</span>
|
||||
</div>
|
||||
<div v-if="detailData.useStatus && detailData.useStatus === 3">
|
||||
状态<span style="margin-left: 28%; color: yellow">{{ stateOptions[detailData.useStatus - 1].label }}</span>
|
||||
</div>
|
||||
<div v-if="detailData.useStatus && detailData.useStatus === 1">
|
||||
状态<span style="margin-left: 28%">{{ stateOptions[detailData.useStatus - 1].label }}</span>
|
||||
</div>
|
||||
<div v-if="detailData.useStatus && detailData.useStatus === 4">
|
||||
状态<span style="margin-left: 28%; color: #ec6266">{{ stateOptions[detailData.useStatus - 1].label }}</span>
|
||||
</div>
|
||||
<div v-if="detailData.useStatus && detailData.useStatus === 5">
|
||||
状态<span style="margin-left: 28%; color: #ec6266">{{ stateOptions[detailData.useStatus - 1].label }}</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="dataList">
|
||||
@ -74,7 +110,7 @@
|
||||
|
||||
<div class="listBox">
|
||||
<el-scrollbar style="height: 95%">
|
||||
<div v-for="(item, index) in listDialog" class="listStyle" :key="item.id" >
|
||||
<div v-for="(item, index) in listDialog" class="listStyle" :key="item.id">
|
||||
<div>{{ index + 1 }}</div>
|
||||
<div>{{ item.materialName }}</div>
|
||||
<div>{{ item.theoreticalDosage }}</div>
|
||||
@ -121,7 +157,7 @@ let stateOptions = ref([
|
||||
value: 5,
|
||||
label: "异常"
|
||||
}
|
||||
])
|
||||
]);
|
||||
|
||||
const list = ref([
|
||||
{
|
||||
@ -364,10 +400,10 @@ const getMaterialDataList = async (detailId: any) => {
|
||||
listDialog.value = [];
|
||||
}
|
||||
dialogShowTime.value = true;
|
||||
|
||||
|
||||
// console.log("当前页数", pageNo.value);
|
||||
};
|
||||
|
||||
let deviceSn = ref("");
|
||||
const refScrollbar = ref(null as any); // 绑定到滚动的盒子上
|
||||
const ScrollbarTop = ref(0);
|
||||
|
||||
@ -378,7 +414,12 @@ let pageSize = ref(13 as any);
|
||||
|
||||
// 获取烟感监测告警监测记录列表
|
||||
const getSmokeAlarmRecordList = async () => {
|
||||
const res: any = await concreteMixStationPage({ projectSn: store.sn, pageNo: 1, pageSize: pageSize.value });
|
||||
const res: any = await concreteMixStationPage({
|
||||
projectSn: store.sn,
|
||||
pageNo: 1,
|
||||
pageSize: pageSize.value,
|
||||
devSn: deviceSn.value
|
||||
});
|
||||
// console.log("获取烟感监测告警监测记录列表", res);
|
||||
list.value = res.result.records;
|
||||
if (res.result.pages == pageNo.value) {
|
||||
@ -391,7 +432,12 @@ const getSmokeAlarmRecordList = async () => {
|
||||
|
||||
// 下拉加载
|
||||
const getMoreSmokeRecordList = async () => {
|
||||
const res: any = await concreteMixStationPage({ projectSn: store.sn, pageNo: pageNo.value, pageSize: pageSize.value });
|
||||
const res: any = await concreteMixStationPage({
|
||||
projectSn: store.sn,
|
||||
pageNo: pageNo.value,
|
||||
pageSize: pageSize.value,
|
||||
devSn: deviceSn.value
|
||||
});
|
||||
// console.log("下拉加载烟感监测告警监测记录列表", res);
|
||||
list.value = list.value.concat(res.result.records);
|
||||
if (res.result.pages == pageNo.value) {
|
||||
@ -402,6 +448,18 @@ const getMoreSmokeRecordList = async () => {
|
||||
// console.log("当前列表", list.value);
|
||||
// console.log("当前页数", pageNo.value);
|
||||
};
|
||||
|
||||
const loadData = async (devSn: string = "") => {
|
||||
pageNo.value = 1;
|
||||
pageSize.value = 13;
|
||||
deviceSn.value = devSn;
|
||||
getSmokeAlarmRecordList();
|
||||
};
|
||||
|
||||
defineExpose({
|
||||
loadData
|
||||
});
|
||||
|
||||
onMounted(() => {
|
||||
// console.log("滚动容器", refScrollbar.value);
|
||||
refScrollbar.value.wrapRef.addEventListener("scroll", (e: any) => {
|
||||
|
||||
@ -191,15 +191,15 @@ onMounted(async () => {});
|
||||
// 获取 各配比产量
|
||||
// const realTimeTotal = ref({}) as any;
|
||||
const getMemberCareList = async () => {
|
||||
const res: any = await countPowerLevel({ projectSn: store.sn, type: checked.value });
|
||||
const res: any = await countPowerLevel({ projectSn: store.sn, type: checked.value, devSn: deviceSn.value });
|
||||
console.log("各配比产量", res);
|
||||
if (res.result.data.length > 0) {
|
||||
xData.value = res.result.data.map((item: any) => item.name);
|
||||
yData.value = res.result.data.map((item: any) => Number(item.count));
|
||||
drawChart();
|
||||
} else {
|
||||
xData.value = []
|
||||
yData.value = []
|
||||
xData.value = [];
|
||||
yData.value = [];
|
||||
let chartDom = document.getElementById("concreteEchartsBottomLeft");
|
||||
if (chartDom) {
|
||||
chartDom.removeAttribute("_echarts_instance_");
|
||||
@ -208,7 +208,14 @@ const getMemberCareList = async () => {
|
||||
concreteEchartsBottomLeft.clear();
|
||||
}
|
||||
};
|
||||
|
||||
let deviceSn = ref("");
|
||||
const loadData = async (devSn: string = "") => {
|
||||
deviceSn.value = devSn;
|
||||
getMemberCareList();
|
||||
};
|
||||
defineExpose({
|
||||
loadData
|
||||
});
|
||||
onMounted(async () => {
|
||||
getMemberCareList();
|
||||
});
|
||||
|
||||
@ -108,7 +108,7 @@ function drawEchart() {
|
||||
color: "#ccc",
|
||||
fontSize: 14,
|
||||
lineHeight: 40,
|
||||
fontWeight: "normal",
|
||||
fontWeight: "normal"
|
||||
}
|
||||
},
|
||||
legend: {
|
||||
@ -302,7 +302,7 @@ function drawEchart() {
|
||||
}
|
||||
// let noData = ref(false as any);
|
||||
const getMemberCareList = async () => {
|
||||
const res: any = await countUseStatus({ projectSn: store.sn, type: checked.value });
|
||||
const res: any = await countUseStatus({ projectSn: store.sn, type: checked.value, devSn: deviceSn.value });
|
||||
console.log("原材料用量统计", res);
|
||||
if (res.result.data.length > 0) {
|
||||
let dataArr = res.result.data;
|
||||
@ -334,6 +334,14 @@ const getMemberCareList = async () => {
|
||||
}
|
||||
};
|
||||
|
||||
let deviceSn = ref("");
|
||||
const loadData = async (devSn: string = "") => {
|
||||
deviceSn.value = devSn;
|
||||
getMemberCareList();
|
||||
};
|
||||
defineExpose({
|
||||
loadData
|
||||
});
|
||||
onMounted(async () => {
|
||||
getMemberCareList();
|
||||
});
|
||||
|
||||
@ -5,27 +5,28 @@
|
||||
<TopLeft></TopLeft>
|
||||
</div>
|
||||
<div class="topCenter">
|
||||
<TopCenter></TopCenter>
|
||||
<TopCenter @equipChange="refresh" ref="topCenterRef"></TopCenter>
|
||||
</div>
|
||||
<div class="topRight">
|
||||
<TopRight></TopRight>
|
||||
<TopRight ref="topRightRef"></TopRight>
|
||||
</div>
|
||||
</div>
|
||||
<div class="bottom">
|
||||
<div class="bottomLeft">
|
||||
<BottomLeft></BottomLeft>
|
||||
<BottomLeft ref="bottomLeftRef"></BottomLeft>
|
||||
</div>
|
||||
<div class="bottomCenter">
|
||||
<BottomCenter></BottomCenter>
|
||||
<BottomCenter ref="bottomCenterRef"></BottomCenter>
|
||||
</div>
|
||||
<div class="bottomRight">
|
||||
<BottomRight></BottomRight>
|
||||
<BottomRight ref="bottomRightRef"></BottomRight>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup>
|
||||
import { ref } from "vue";
|
||||
import TopLeft from "@/views/sevenLargeScreen/largeMachinery/concreteMixingPlant/topLeft.vue";
|
||||
import TopCenter from "@/views/sevenLargeScreen/largeMachinery/concreteMixingPlant/topCenter.vue";
|
||||
import TopRight from "@/views/sevenLargeScreen/largeMachinery/concreteMixingPlant/topRight.vue";
|
||||
@ -33,6 +34,20 @@ import BottomLeft from "@/views/sevenLargeScreen/largeMachinery/concreteMixingPl
|
||||
import BottomCenter from "@/views/sevenLargeScreen/largeMachinery/concreteMixingPlant/bottomCenter.vue";
|
||||
import BottomRight from "@/views/sevenLargeScreen/largeMachinery/concreteMixingPlant/bottomRight.vue";
|
||||
|
||||
const topCenterRef = ref(null);
|
||||
const topRightRef = ref(null);
|
||||
const bottomLeftRef = ref(null);
|
||||
const bottomCenterRef = ref(null);
|
||||
const bottomRightRef = ref(null);
|
||||
|
||||
const refresh = (devSn: string) => {
|
||||
console.log("refresh");
|
||||
topCenterRef.value.loadData(devSn);
|
||||
topRightRef.value.loadData(devSn);
|
||||
bottomLeftRef.value.loadData(devSn);
|
||||
bottomCenterRef.value.loadData(devSn);
|
||||
bottomRightRef.value.loadData(devSn);
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
@ -76,7 +91,6 @@ import BottomRight from "@/views/sevenLargeScreen/largeMachinery/concreteMixingP
|
||||
margin-top: 2% !important;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
.bottomRight {
|
||||
width: 26%;
|
||||
|
||||
@ -1,6 +1,11 @@
|
||||
<template>
|
||||
<Card title="实时监测">
|
||||
<div class="water-top-center">
|
||||
<div class="select-box">
|
||||
<el-select v-model="selectEquipSn" style="width: 100%" size="small" @change="equipChange">
|
||||
<el-option v-for="(item, index) in equipList" :key="index" :label="item.devName" :value="item.devSn" />
|
||||
</el-select>
|
||||
</div>
|
||||
<div class="left-box">
|
||||
<div class="water-icon">
|
||||
<img src="@/assets/images/largeMachinery/concreteImg.png" alt="" />
|
||||
@ -33,19 +38,49 @@ import Card from "@/components/card.vue";
|
||||
import { reactive, ref, onMounted } from "vue";
|
||||
import { GlobalStore } from "@/stores";
|
||||
const store = GlobalStore();
|
||||
import { countConcreteMixStationData } from "@/api/modules/largeMachinery";
|
||||
import { countConcreteMixStationData, concreteMaterialEquipList } from "@/api/modules/largeMachinery";
|
||||
|
||||
const emit = defineEmits(["equipChange"]);
|
||||
|
||||
const equipList = ref([]);
|
||||
const selectEquipSn = ref();
|
||||
|
||||
// 查设备列表
|
||||
const getEquipList = async () => {
|
||||
const res: any = await concreteMaterialEquipList({});
|
||||
console.log("查设备列表", res);
|
||||
equipList.value = res.result;
|
||||
if (equipList.value.length > 0) {
|
||||
selectEquipSn.value = equipList.value[0].devSn;
|
||||
emit("equipChange", selectEquipSn.value);
|
||||
}
|
||||
};
|
||||
// 获取 实时监测
|
||||
const realTimeTotal = ref({}) as any;
|
||||
const getMemberCareList = async () => {
|
||||
const res: any = await countConcreteMixStationData({ projectSn: store.sn });
|
||||
const res: any = await countConcreteMixStationData({ projectSn: store.sn, devSn: deviceSn.value });
|
||||
console.log("实时监测", res);
|
||||
if (res.success) {
|
||||
realTimeTotal.value = res.result;
|
||||
}
|
||||
};
|
||||
|
||||
// 设备选择改变
|
||||
const equipChange = () => {
|
||||
emit("equipChange", selectEquipSn.value);
|
||||
};
|
||||
|
||||
let deviceSn = ref("");
|
||||
const loadData = async (devSn: string = "") => {
|
||||
deviceSn.value = devSn;
|
||||
getMemberCareList();
|
||||
};
|
||||
defineExpose({
|
||||
loadData
|
||||
});
|
||||
|
||||
onMounted(async () => {
|
||||
getEquipList();
|
||||
getMemberCareList();
|
||||
});
|
||||
</script>
|
||||
@ -54,11 +89,11 @@ onMounted(async () => {
|
||||
.water-top-center {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
margin-left: 3%;
|
||||
position: relative;
|
||||
display: flex;
|
||||
.left-box {
|
||||
width: 50%;
|
||||
margin-left: 3%;
|
||||
|
||||
.water-icon {
|
||||
width: 100%;
|
||||
@ -172,4 +207,28 @@ onMounted(async () => {
|
||||
}
|
||||
}
|
||||
}
|
||||
.select-box {
|
||||
position: absolute;
|
||||
top: -50px;
|
||||
right: 20px;
|
||||
}
|
||||
:deep(.el-input__inner) {
|
||||
color: #fff;
|
||||
}
|
||||
:deep(.el-select .el-input .el-select__caret) {
|
||||
color: #fff;
|
||||
}
|
||||
::v-deep .el-input__wrapper {
|
||||
width: 85%;
|
||||
height: 0%;
|
||||
background: #0d2956;
|
||||
}
|
||||
::v-deep .el-range-separator {
|
||||
color: #ccc;
|
||||
font-size: 10px;
|
||||
}
|
||||
::v-deep .el-range-input {
|
||||
color: #ccc;
|
||||
font-size: 10px;
|
||||
}
|
||||
</style>
|
||||
|
||||
@ -2,11 +2,11 @@
|
||||
<Card title="原材料用量统计">
|
||||
<div class="load-top-right">
|
||||
<div>
|
||||
<div class="select-left">
|
||||
<!-- <div class="select-left">
|
||||
<el-select v-model="selectEquipSn" style="width: 100%" size="small" clearable @change="equipChange">
|
||||
<el-option v-for="(item, index) in equipList" :key="index" :label="item.devName" :value="item.devSn" />
|
||||
</el-select>
|
||||
</div>
|
||||
</div> -->
|
||||
<div class="select-right">
|
||||
<div class="day selected" @click="getNowData(1)" :class="checked == 1 ? 'active' : ''">今日</div>
|
||||
<div class="week selected" @click="getWeekData(2)" :class="checked == 2 ? 'active' : ''">近7天</div>
|
||||
@ -320,12 +320,12 @@ const getEquipList = async () => {
|
||||
};
|
||||
// let noData = ref(false as any);
|
||||
const getMemberCareList = async () => {
|
||||
let requestData:any = {
|
||||
let requestData: any = {
|
||||
projectSn: store.sn,
|
||||
type: checked.value
|
||||
};
|
||||
if (selectEquipSn.value) {
|
||||
requestData.devSn = selectEquipSn.value;
|
||||
if (deviceSn.value) {
|
||||
requestData.devSn = deviceSn.value;
|
||||
}
|
||||
const res: any = await countMaterialName(requestData);
|
||||
console.log("原材料用量统计", res);
|
||||
@ -359,8 +359,16 @@ const getMemberCareList = async () => {
|
||||
}
|
||||
};
|
||||
|
||||
let deviceSn = ref("");
|
||||
const loadData = async (devSn: string = "") => {
|
||||
deviceSn.value = devSn;
|
||||
getMemberCareList();
|
||||
};
|
||||
defineExpose({
|
||||
loadData
|
||||
});
|
||||
onMounted(async () => {
|
||||
getEquipList();
|
||||
// getEquipList();
|
||||
getMemberCareList();
|
||||
});
|
||||
</script>
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
<template>
|
||||
<Card title="锚杆内力监测">
|
||||
<Card title="水平位移沉降监测">
|
||||
<div class="pit-right-first">
|
||||
<div class="pit-content">
|
||||
<div class="select-right">
|
||||
@ -16,7 +16,7 @@
|
||||
@change="selectRangeTime"
|
||||
/>
|
||||
</div>
|
||||
<el-select v-model="measurePointNumber" style="width: 15%" size="small" @change="measurePointChange">
|
||||
<el-select v-model="measurePointNumber" style="width: 15%; margin-right: 5%" size="small" @change="measurePointChange">
|
||||
<el-option
|
||||
v-for="(item, index) in pointList"
|
||||
:key="index"
|
||||
@ -24,9 +24,9 @@
|
||||
:value="item.measurePointNumber"
|
||||
/>
|
||||
</el-select>
|
||||
<!-- <el-select v-model="sensorSn" style="width: 15%" size="small">
|
||||
<el-select v-model="sensorSn" style="width: 15%" size="small" @change="getEdgeAlarmTrend">
|
||||
<el-option v-for="(item, index) in timeList" :key="index" :label="item.sensorName" :value="item.sensorSn" />
|
||||
</el-select> -->
|
||||
</el-select>
|
||||
</div>
|
||||
<div id="pitRightFirst" ref="pitRightFirst" style="width: 100%; height: 100%"></div>
|
||||
<div class="notoDta" v-if="yData1.length == 0">
|
||||
@ -39,6 +39,7 @@
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup>
|
||||
import dayjs from "dayjs";
|
||||
import Card from "@/components/card.vue";
|
||||
import symbolIcon2 from "@/assets/images/toxicGasMonitor/lineIcon2.png";
|
||||
|
||||
@ -58,7 +59,7 @@ const store = GlobalStore();
|
||||
// x轴
|
||||
let twenty_four_time = ref([] as any);
|
||||
// Y轴单位
|
||||
let unit = ref("内力(kN)" as any);
|
||||
let unit = ref("位移(mm)" as any);
|
||||
// Y轴数据
|
||||
let yData1 = ref([] as any);
|
||||
|
||||
@ -109,10 +110,11 @@ let timeList = ref([
|
||||
]);
|
||||
|
||||
// 时间轴起止时间
|
||||
let startValue = ref("2023-9-19 05:15:00" as any);
|
||||
let endValue = ref("2023-9-21 05:15:00" as any);
|
||||
let startValue = ref(dayjs().subtract(7, "day").format("YYYY-MM-DD HH:mm:ss") as any);
|
||||
let endValue = ref(dayjs().format("YYYY-MM-DD HH:mm:ss") as any);
|
||||
const measurePointChange = () => {
|
||||
drawChart();
|
||||
getDevList();
|
||||
// drawChart();
|
||||
};
|
||||
function selectRangeTime(e: any) {
|
||||
// console.log("选择时间", e);
|
||||
@ -120,7 +122,8 @@ function selectRangeTime(e: any) {
|
||||
// option.value.series[0].markLine = null;
|
||||
startValue.value = e[0];
|
||||
endValue.value = e[1];
|
||||
drawChart();
|
||||
getEdgeAlarmTrend();
|
||||
// drawChart();
|
||||
}
|
||||
|
||||
function initOption() {
|
||||
@ -402,9 +405,9 @@ function drawChart() {
|
||||
// getSensorListByMeasurePointNumber
|
||||
// 查测点列表
|
||||
const getTestPointList = async () => {
|
||||
const res: any = await selectDeepExcavationAllMeasurePointList({ projectSn: store.sn, monitorTypeId: 13 });
|
||||
pointList.value = res.result;
|
||||
measurePointNumber.value = res.result[0].measurePointNumber;
|
||||
const res: any = await selectDeepExcavationAllMeasurePointList({ projectSn: store.sn, monitorTypeId: 28 });
|
||||
pointList.value = res.result || [];
|
||||
measurePointNumber.value = pointList.value[0]?.measurePointNumber;
|
||||
getDevList();
|
||||
console.log("查测点列表", res);
|
||||
};
|
||||
@ -412,7 +415,7 @@ const getTestPointList = async () => {
|
||||
const getDevList = async () => {
|
||||
const res: any = await getSensorListByMeasurePointNumber({ projectSn: store.sn, measurePointNumber: measurePointNumber.value });
|
||||
timeList.value = res.result;
|
||||
sensorSn.value = res.result[0].sensorSn;
|
||||
sensorSn.value = res.result[0]?.sensorSn;
|
||||
console.log("查传感器列表", res);
|
||||
getEdgeAlarmTrend();
|
||||
};
|
||||
@ -420,7 +423,7 @@ const getDevList = async () => {
|
||||
let negativeAlarmValue = ref(0) as any; //负报警值
|
||||
let positiveAlarmValue = ref(0) as any; //正报警值
|
||||
|
||||
// 锚杆内力监测
|
||||
// 水平位移沉降监测
|
||||
const getEdgeAlarmTrend = async () => {
|
||||
const res: any = await selectDeepExcavationCurrentDataList({
|
||||
projectSn: store.sn,
|
||||
@ -441,7 +444,7 @@ const getEdgeAlarmTrend = async () => {
|
||||
}
|
||||
// twenty_four_time.value = res.result.map((item: any) => item.x);
|
||||
// yData.value = res.result.map((item: any) => Number(item.y));
|
||||
console.log("锚杆内力监测", res);
|
||||
console.log("水平位移沉降监测", res);
|
||||
if(yData1.value.length > 0){
|
||||
let chartDom:any = document.getElementById("pitRightFirst");
|
||||
chartDom.style.display = "block";
|
||||
@ -485,7 +488,7 @@ onMounted(async () => {
|
||||
.select-right {
|
||||
position: absolute;
|
||||
display: flex;
|
||||
right: -45%;
|
||||
right: -25%;
|
||||
width: 100%;
|
||||
top: 5%;
|
||||
z-index: 9;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user