diff --git a/packages/screen/src/views/WarningManagement/law/detailDrawer.vue b/packages/screen/src/views/WarningManagement/law/detailDrawer.vue index 8b7c938..54e1d57 100644 --- a/packages/screen/src/views/WarningManagement/law/detailDrawer.vue +++ b/packages/screen/src/views/WarningManagement/law/detailDrawer.vue @@ -1,159 +1,779 @@ - - \ No newline at end of file + +.table { + display: flex; + flex-direction: column; + gap: 10px; +} + +// 统计卡片 +.stats-cards { + display: flex; + gap: 12px; + background-color: #16334e; + padding: 5px; + + .stat-card { + display: flex; + align-items: center; + gap: 8px; + padding: 8px 16px; + transition: all 0.3s; + cursor: pointer; + flex: 1; + + &:hover { + background: rgba(30, 70, 120, 0.9); + border-color: rgba(64, 169, 255, 0.6); + box-shadow: 0 0 15px rgba(64, 169, 255, 0.3); + } + + .stat-icon { + font-size: 18px; + color: #40a9ff; + width: 34px; + height: 34px; + display: flex; + align-items: center; + justify-content: center; + img { + width: 100%; + height: 100%; + } + } + + .stat-content { + display: flex; + align-items: center; + gap: 6px; + + .stat-label { + font-size: 14px; + color: #fff; + font-weight: 500; + } + + .stat-value { + font-size: 14px; + font-weight: bold; + color: #40a9ff; + } + } + } +} + +.search-form { + display: flex; + flex-direction: row; + align-items: center; + flex-wrap: wrap; + gap: 12px; + .search-item { + width: 150px; + } +} + diff --git a/packages/screen/src/views/WarningManagement/law/index.js b/packages/screen/src/views/WarningManagement/law/index.js index 42b688d..ea584e9 100644 --- a/packages/screen/src/views/WarningManagement/law/index.js +++ b/packages/screen/src/views/WarningManagement/law/index.js @@ -5,6 +5,19 @@ import AddDialog from "./addDialog.vue"; import ScheduleDiaog from "../law/dutyManagement/addDialog.vue" import DetailDrawer from "./detailDrawer.vue"; +// 格式化时间函数 +const formatDateTime = (dateStr) => { + if (!dateStr) return '-'; + const date = new Date(dateStr); + const year = date.getFullYear(); + const month = String(date.getMonth() + 1).padStart(2, '0'); + const day = String(date.getDate()).padStart(2, '0'); + const hours = String(date.getHours()).padStart(2, '0'); + const minutes = String(date.getMinutes()).padStart(2, '0'); + const seconds = String(date.getSeconds()).padStart(2, '0'); + return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`; +}; + const tableData = ref([]); // 表格数据 const modelVisible = ref(false); // 弹窗状态 const drawerVisible = ref(false); // 抽屉状态 @@ -64,6 +77,7 @@ const columns = [ { prop: "onset", label: "生效时间", + render: (row) => () => h('span', formatDateTime(row.onset)) }, { prop: "receiveTime", @@ -76,6 +90,7 @@ const columns = [ { prop: "expires", label: "预警结束时间", + render: (row) => () => h('span', formatDateTime(row.expires)) }, { prop: "affectedRoadSectionCount", @@ -255,7 +270,7 @@ const publishWarning = async (data) => { const openDetailDrawer = (row) => { drawer.title = '预警详情'; drawer.props = { - id: row.id, + row: row }; drawer.content = DetailDrawer; drawerVisible.value = true;