|
@@ -1,6 +1,17 @@
|
|
|
<template>
|
|
|
<div class="right-section">
|
|
|
<div class="card">
|
|
|
+ <div class="header-container">
|
|
|
+ <div class="task-header">
|
|
|
+ <el-button class="custom-button" type="primary" plain>任务下达</el-button>
|
|
|
+ <el-button class="custom-button" type="primary" plain>粤政伊群聊</el-button>
|
|
|
+ <el-button class="custom-button" type="primary" plain>通讯录</el-button>
|
|
|
+ <el-button class="custom-button" type="primary" plain>启动预警</el-button>
|
|
|
+ <el-button class="custom-button" type="primary" plain>知识库</el-button>
|
|
|
+ </div>
|
|
|
+ <div class="duration">{{ formattedDuration }}</div>
|
|
|
+ <el-button class="custom-button" type="danger" plain>结束处理</el-button>
|
|
|
+ </div>
|
|
|
<div class="card-header">
|
|
|
<div>视频监控</div>
|
|
|
<div class="more">查看更多</div>
|
|
@@ -22,6 +33,7 @@
|
|
|
<div>动态消息</div>
|
|
|
</div>
|
|
|
<div class="card-content"></div>
|
|
|
+ <DynamicMessages />
|
|
|
</div>
|
|
|
</div>
|
|
|
<!--视频弹窗-->
|
|
@@ -33,7 +45,22 @@
|
|
|
<script lang="ts" setup>
|
|
|
import Dialog from '@/components/Dialog/index.vue';
|
|
|
import HKVideo from '@/components/HKVideo/index.vue';
|
|
|
+import DynamicMessages from './DynamicMessages.vue';
|
|
|
+
|
|
|
+const duration = ref(0);
|
|
|
+const formattedDuration = ref('');
|
|
|
|
|
|
+const updateDuration = () => {
|
|
|
+ duration.value += 1;
|
|
|
+ const days = Math.floor(duration.value / (24 * 3600));
|
|
|
+ const hours = Math.floor((duration.value % (24 * 3600)) / 3600);
|
|
|
+ const minutes = Math.floor((duration.value % 3600) / 60);
|
|
|
+ const seconds = duration.value % 60;
|
|
|
+ formattedDuration.value = `持续时长:${days}天${hours}小时${minutes}分${seconds}秒`;
|
|
|
+};
|
|
|
+onMounted(() => {
|
|
|
+ setInterval(updateDuration, 1000);
|
|
|
+});
|
|
|
// 视频监控
|
|
|
const videoUrl = reactive([
|
|
|
{ label: '摄像头一', img: '', url: 'https://vjs.zencdn.net/v/oceans.mp4', time: '17:14' },
|
|
@@ -76,6 +103,38 @@ const handleClose = () => {
|
|
|
margin-bottom: 69px;
|
|
|
animation-name: slide;
|
|
|
|
|
|
+ .header-container {
|
|
|
+ width: 100%;
|
|
|
+ display: flex;
|
|
|
+ //justify-content: space-between;
|
|
|
+ align-items: center;
|
|
|
+ padding: 10px;
|
|
|
+ }
|
|
|
+
|
|
|
+ .task-header {
|
|
|
+ display: flex;
|
|
|
+ justify-content: space-around; /* 使按钮在div内均匀分布 */
|
|
|
+ align-items: center; /* 使按钮垂直居中 */
|
|
|
+ }
|
|
|
+
|
|
|
+ .custom-button {
|
|
|
+ width: 100px;
|
|
|
+ height: 80px;
|
|
|
+ font-size: 14px;
|
|
|
+ }
|
|
|
+
|
|
|
+ .duration {
|
|
|
+ height: 80px;
|
|
|
+ width: 300px;
|
|
|
+ font-size: 14px;
|
|
|
+ padding: 10px;
|
|
|
+ border: 2px solid black; /*设置黑色边框*/
|
|
|
+ margin-left: auto;
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ justify-content: center;
|
|
|
+ }
|
|
|
+
|
|
|
.card-header {
|
|
|
width: 100%;
|
|
|
display: flex;
|
|
@@ -88,17 +147,17 @@ const handleClose = () => {
|
|
|
}
|
|
|
|
|
|
&:nth-child(1) {
|
|
|
- animation-duration: 0.5s; // 新增
|
|
|
+ animation-duration: 0.5s;
|
|
|
}
|
|
|
|
|
|
&:nth-child(2) {
|
|
|
height: 667.5px;
|
|
|
- animation-duration: 1s; // 新增
|
|
|
+ animation-duration: 1s;
|
|
|
}
|
|
|
|
|
|
&:nth-child(3) {
|
|
|
height: 667.5px;
|
|
|
- animation-duration: 1.5s; // 新增
|
|
|
+ animation-duration: 1.5s;
|
|
|
}
|
|
|
}
|
|
|
|