You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
maotu-webtopo/src/components/vue-xq-test/vue-essential-information.vue

312 lines
7.3 KiB
Vue

1 month ago
<template>
<el-card class="card">
<h2 class="cardHead">基本信息</h2>
<div class="cardBody">
<el-row :gutter="0" style="display: flex; align-items: center">
<el-col :span="8" :offset="4"> 名称 </el-col>
<el-col :span="4">
<el-tag type="primary">火灾报警系统主机</el-tag>
</el-col>
</el-row>
<el-row :gutter="0" style="display: flex; align-items: center">
<el-col :span="8" :offset="4"> 产品型号 </el-col>
<el-col :span="4">
<el-tag type="primary">JB-QB-GST200</el-tag>
</el-col>
</el-row>
<el-row :gutter="0" style="display: flex; align-items: center">
<el-col :span="8" :offset="4"> 厂家 </el-col>
<el-col :span="4">
<el-tag type="primary">海湾公司</el-tag>
</el-col>
</el-row>
<el-row :gutter="0" style="display: flex; align-items: center">
<el-col :span="8" :offset="4"> 投运日期 </el-col>
<el-col :span="4">
<el-tag type="primary">2015-10-10</el-tag>
</el-col>
</el-row>
<el-row :gutter="0" style="display: flex; align-items: center">
<el-col :span="8" :offset="4"> 电源电压 </el-col>
<el-col :span="4">
<el-tag type="primary">220V AC</el-tag>
</el-col>
</el-row>
<el-row :gutter="0" style="display: flex; align-items: center">
<el-col :span="8" :offset="4"> 频率 </el-col>
<el-col :span="4">
<el-tag type="primary">50Hz</el-tag>
</el-col>
</el-row>
<el-row :gutter="0" style="display: flex; align-items: center">
<el-col :span="8" :offset="4"> 输出电压 </el-col>
<el-col :span="4">
<el-tag type="primary">24V DC</el-tag>
</el-col>
</el-row>
<el-row :gutter="0" style="display: flex; align-items: center">
<el-col :span="8" :offset="4"> 输出电流 </el-col>
<el-col :span="4">
<el-tag type="primary">5A</el-tag>
</el-col>
</el-row>
<el-row :gutter="0" style="display: flex; align-items: center">
<el-col :span="8" :offset="4"> 环境温度 </el-col>
<el-col :span="4">
<el-tag type="primary">-5 ~ 45</el-tag>
</el-col>
</el-row>
<el-row :gutter="0" style="display: flex; align-items: center">
<el-col :span="8" :offset="4"> 相对湿度 </el-col>
<el-col :span="4">
<el-tag type="primary">5% ~ 95%</el-tag>
</el-col>
</el-row>
<el-row :gutter="0" style="display: flex; align-items: center">
<el-col :span="8" :offset="4"> 维保单位 </el-col>
<el-col :span="4">
<el-tag type="primary">陕西消防科技有限公司</el-tag>
</el-col>
</el-row>
<el-row :gutter="0" style="display: flex; align-items: center">
<el-col :span="8" :offset="4"> 联系电话 </el-col>
<el-col :span="4">
<el-tag type="primary">188*****00 </el-tag>
</el-col>
</el-row>
</div>
</el-card>
<!-- :append-to-body="true" -->
<el-dialog
v-model="dialogTableVisible"
title="灭火动作流程"
style="height: 60vh"
width="45%"
:append-to-body="true"
>
<el-scrollbar height="42vh">
<el-timeline mode="alternate-reverse">
<el-timeline-item
v-for="(activity, index) in activities"
:key="index"
center
:timestamp="activity.timestamp"
>
{{ activity.content }}
</el-timeline-item>
</el-timeline>
</el-scrollbar>
<!-- 按钮 -->
<template #footer>
<div class="dialog-footer">
<el-button @click="dialogTableVisible = false">退出</el-button>
</div>
</template>
</el-dialog>
</template>
<script lang="ts" setup>
import { computed, ref, watch, onMounted } from 'vue';
let dialogTableVisible = ref(false);
const props = defineProps({
fontFamily: {
type: String,
default: 'Segoe UI'
},
fontSize: {
type: Number,
default: 14
},
testColor: {
type: String,
default: '#000000'
},
testBool: {
type: Boolean,
default: true
},
dataSource: {
type: String,
default: '--'
}
});
const activities = [
{
content: '灭火允许',
timestamp: '2018-04-15'
},
{
content: '手动启动',
timestamp: '2018-04-16'
},
{
content: '紧急停止',
timestamp: '2018-04-17'
},
{
content: '手动启动',
timestamp: '2018-04-18'
},
{
content: '灭火允许',
timestamp: '2018-04-15'
},
{
content: '手动启动',
timestamp: '2018-04-16'
},
{
content: '紧急停止',
timestamp: '2018-04-17'
},
{
content: '手动启动',
timestamp: '2018-04-18'
}
];
onMounted(() => {
loadDataSource(props.dataSource);
});
watch(
() => props.dataSource,
(newVal, oldVal) => {
loadDataSource(newVal);
}
);
//全站总揽
let globalOverviewBool = ref(false);
//消防系统
let fireExtinguishingBool = ref(false);
//火灾报警主机
let firePoliceBool = ref(false);
function loadDataSource(val: string) {
if (val === 'globalOverview') {
globalOverviewBool.value = true;
fireExtinguishingBool.value = false;
firePoliceBool.value = false;
} else if (val === 'fireExtinguishing') {
globalOverviewBool.value = false;
fireExtinguishingBool.value = true;
firePoliceBool.value = false;
} else if (val === 'firePolice') {
globalOverviewBool.value = false;
fireExtinguishingBool.value = false;
firePoliceBool.value = true;
}
}
let computedSize = computed({
// 读取
get() {
return props.fontSize + 'px';
}, // 修改
set(val) {
console.log('有人修改了fullName', val);
}
});
</script>
<style scoped>
.blue-circle {
width: 12px;
height: 12px;
border-radius: 50%;
background-color: #409eff;
display: inline-block;
margin-left: 5px;
vertical-align: middle;
}
.blueBordered {
background-color: rgb(217, 236, 255);
border: 2px solid rgb(160, 207, 255);
}
.redBordered {
background-color: rgb(253, 226, 226);
border: 2px solid rgb(250, 182, 182);
}
.greenBordered {
background-color: rgb(225, 243, 216);
border: 2px solid rgb(179, 225, 157);
}
:deep(.el-card__body) {
padding: 0;
padding-top: 10px;
padding-left: 10px;
}
:deep(.adTextDetailDialogClass .el-dialog__body) {
max-height: calc(100vh - 150px);
overflow: auto;
border-top: 1px solid #dfdfdf;
border-bottom: 1px solid #dfdfdf;
}
:deep(.adTextDetailDialogClass .el-dialog) {
position: fixed;
height: 20vh !important;
background: #000;
left: 0 !important;
right: 0 !important;
top: 0 !important;
bottom: 0 !important;
margin: auto !important;
}
.el-row .el-col {
margin-bottom: 6px; /* 设置上下间距 */
}
P:hover {
background-color: #f0f0f0; /* 悬停时的底色,您可以根据需要调整颜色 */
}
.card {
margin: 0;
padding: 0;
width: 100%;
height: 100%;
/* max-width: 480px; */
color: v-bind('props.testColor');
font-family: v-bind('props.fontFamily');
/* font-family: 'Segoe UI'; */
font-size: v-bind('computedSize');
}
.cardHead {
margin: 0;
padding: 0px;
padding-bottom: 5px;
text-align: center;
}
.cardBody {
width: 100%;
margin: 0 0%;
padding: 0px 0%;
/* padding-bottom: 15px; */
}
</style>