| | |
| | | <template> |
| | | <div class="detail" ref="detailRef"> |
| | | <div class="detail-top">{{ detailTitle }}</div> |
| | | <div class="detail-top" :title="name">{{ detailTitle }}</div> |
| | | <div class="detail-close" @click="closeMsg"></div> |
| | | <div class="detail-context"> |
| | | <div v-for="(item, key) in detailList" :key="key" class="detail-item"> |
| | |
| | | dialogPositon, |
| | | } from "@/store"; |
| | | |
| | | import { hdByDevice } from "@/api/hpApi"; |
| | | |
| | | const detailList = ref([]); |
| | | const detailTitle = ref("设备详情"); |
| | | const name = ref(""); |
| | | function closeMsg() { |
| | | showDeviceDetail.value = false; |
| | | coloseDialog(); |
| | | } |
| | | |
| | | // 监测设备具体信息 |
| | | function handlDeviceDetail() { |
| | | // const name = deviceDetail.value.deviceForShort; |
| | | detailTitle.value = deviceDetail.value.deviceForShort; |
| | | detailList.value = [ |
| | | { |
| | | name: "设备编号", |
| | | value: |
| | | deviceDetail.value.deviceCode || Math.floor(Math.random() * 100000), |
| | | }, |
| | | { |
| | | name: "设备类型", |
| | | value: deviceDetail.value.type || "", |
| | | }, |
| | | { |
| | | name: "安装时间", |
| | | value: "2024-01-15 12:55:18" || deviceDetail.value.startTime, |
| | | }, |
| | | { |
| | | name: "更新时间", |
| | | value: "2025-02-15 8:15:28", |
| | | }, |
| | | { |
| | | name: "设备位置", |
| | | value: deviceDetail.value.deviceForShort || cityData.listData[0], |
| | | // value: deviceDetail.value.name.split("孙胡沟")[0] || cityData.listData[0], |
| | | }, |
| | | ]; |
| | | async function handlDeviceDetail() { |
| | | const hdInfo = ref(); |
| | | |
| | | try { |
| | | const res = await hdByDevice(deviceDetail.value.hdUnifiedCode); |
| | | hdInfo.value = res.data; |
| | | |
| | | detailList.value = [ |
| | | { |
| | | name: "设备编号", |
| | | value: deviceDetail.value.deviceCode || Math.floor(Math.random() * 100000), |
| | | }, |
| | | { |
| | | name: "设备类型", |
| | | value: deviceDetail.value.type || deviceDetail.value.deviceTypeName, |
| | | }, |
| | | { |
| | | name: "关联隐患点", |
| | | value: deviceDetail.value.hdName, |
| | | }, |
| | | { |
| | | name: "群测群防员", |
| | | value: hdInfo.value?.groupTestGroupDefenseUserName || "暂无信息", |
| | | }, |
| | | { |
| | | name: "群测群防员电话", |
| | | value: hdInfo.value?.groupTestGroupDefenseMobile || "暂无信息", |
| | | }, |
| | | ]; |
| | | |
| | | detailTitle.value = deviceDetail.value.deviceForShort; |
| | | } catch (err) { |
| | | console.error("获取 hdInfo 失败", err); |
| | | } |
| | | } |
| | | |
| | | // 隐患点具体信息 |
| | | function handleDistrictDetail() { |
| | | const name = deviceDetail.value.hdName; |
| | | detailTitle.value = name; |
| | | detailList.value = [ |
| | | // {} |
| | | { |
| | | name: "隐患类型", |
| | | name: "灾害类型", |
| | | value: deviceDetail.value.disasterType || "泥石流", |
| | | }, |
| | | { |
| | | name: "主管科长", |
| | | value: "张浩", |
| | | name: "威胁对象", |
| | | value: deviceDetail.value.threatObj || "居民点", |
| | | }, |
| | | { |
| | | name: "主管镇长", |
| | | value: deviceDetail.value.supervisorAlcaldeUserName, |
| | | name: "规模等级", |
| | | value: deviceDetail.value.disasterGrade || "小型", |
| | | }, |
| | | { |
| | | name: "群测群防", |
| | | name: "险情等级", |
| | | value: deviceDetail.value.riskLevel || "小型", |
| | | }, |
| | | { |
| | | name: "威胁人数", |
| | | value: deviceDetail.value.threatPersonNum || "0", |
| | | }, |
| | | { |
| | | name: "威胁户数", |
| | | value: deviceDetail.value.threatHouseNum || "0", |
| | | }, |
| | | { |
| | | name: "威胁房数", |
| | | value: deviceDetail.value.threatRoomNum || "0", |
| | | }, |
| | | { |
| | | name: "是否治理", |
| | | value: deviceDetail.value.isGovern || "否", |
| | | }, |
| | | { |
| | | name: "群测群防员", |
| | | value: deviceDetail.value.groupTestGroupDefenseUserName, |
| | | }, |
| | | { |
| | | name: "群测群防员电话", |
| | | value: deviceDetail.value.groupTestGroupDefenseMobile, |
| | | }, |
| | | { |
| | | name: "隐患位置", |
| | |
| | | function loadClassNameDetail() { |
| | | if (className.value == "device") { |
| | | handlDeviceDetail(); |
| | | name.value = deviceDetail.value.deviceName; |
| | | } else if (className.value == "district") { |
| | | handleDistrictDetail(); |
| | | name.value = deviceDetail.value.hdName; |
| | | } |
| | | } |
| | | const detailRef = ref(null); |
| | |
| | | left: 1.25rem; |
| | | font-weight: 700; |
| | | font-size: 1.125rem; |
| | | font-weight: 700; |
| | | color: #fff; |
| | | line-height: 2.5rem; |
| | | width: 16.875rem; |
| | | width: 16.875rem; /* 容器宽度固定或限制 */ |
| | | cursor: pointer; |
| | | |
| | | /* 超出隐藏 + 省略号 */ |
| | | white-space: nowrap; |
| | | overflow: hidden; |
| | | text-overflow: ellipsis; |
| | | |
| | | /* 可选:添加过渡动画 */ |
| | | transition: all 0.3s ease; |
| | | } |
| | | |
| | | .detail-close { |
| | |
| | | top: 3.8rem; |
| | | left: 1.25rem; |
| | | width: 21.875rem; |
| | | overflow-y: auto; |
| | | height: 63%; |
| | | } |
| | | |
| | | .detail-item { |
| | |
| | | margin-left: 0.625rem; |
| | | } |
| | | .detail-name { |
| | | width: 100px; |
| | | display: inline-block; /* 关键 */ |
| | | max-width: 100%; /* 防止溢出 */ |
| | | font-weight: 700; |
| | | color: #94e0c4; |
| | | white-space: nowrap; /* 可选:防止文字换行 */ |
| | | &::after { |
| | | content: ":"; |
| | | } |