|
@@ -14,7 +14,7 @@
|
|
|
</div>
|
|
|
<div class="flex-container">
|
|
|
<div class="text-item">机动无人机</div>
|
|
|
- <div class="button-item common-btn-primary2 edit-icon" style="margin-top: -20px" @click="showMoreVideos">全部播放</div>
|
|
|
+ <div class="button-item common-btn-primary2 edit-icon" @click="showMoreVideos">全部播放</div>
|
|
|
</div>
|
|
|
<div class="custom-table">
|
|
|
<div class="th">
|
|
@@ -22,15 +22,26 @@
|
|
|
<div class="td" style="width: 220px; flex: unset">操作</div>
|
|
|
</div>
|
|
|
<div class="table-content">
|
|
|
- <div v-for="(item, index) in dataList" :key="item.id" class="tr">
|
|
|
+ <div v-for="item in dataList" :key="item.id" class="tr">
|
|
|
<div class="td">{{ item.drone_name }}</div>
|
|
|
<div class="td" style="width: 220px; flex: unset">
|
|
|
- <div class="text" @click="handleConnect(index, item)">视频</div>
|
|
|
+ <div class="text" @click="handleConnect">视频</div>
|
|
|
<!-- <div class="text" @click="handleCollaborate(index, item)">协同</div>-->
|
|
|
<div class="text" @click="handleTrack(item)">轨迹</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
+ <div class="footer">
|
|
|
+ <el-pagination
|
|
|
+ background
|
|
|
+ :hide-on-single-page="true"
|
|
|
+ layout="total, prev, pager, next"
|
|
|
+ :total="total"
|
|
|
+ :page-size="queryParams.size"
|
|
|
+ :current-current="queryParams.current"
|
|
|
+ @current-change="handleChangePage"
|
|
|
+ />
|
|
|
+ </div>
|
|
|
</div>
|
|
|
</div>
|
|
|
</template>
|
|
@@ -38,44 +49,44 @@
|
|
|
<script setup lang="ts">
|
|
|
import { Search } from '@element-plus/icons-vue';
|
|
|
import { onMounted, reactive } from 'vue';
|
|
|
-import {
|
|
|
- getDroneResourcesList,
|
|
|
- getDroneResourcesTrajectory,
|
|
|
- getDroneResourcesVideo
|
|
|
-} from "@/api/globalMap/MobileUnmannedVehicle";
|
|
|
+import { getDroneResourcesList, getDroneResourcesTrajectory, getDroneResourcesVideo } from '@/api/globalMap/MobileUnmannedVehicle';
|
|
|
const getDataMethod = ref(null);
|
|
|
const showMoreVideos = () => {
|
|
|
getDataMethod.value = () => getDroneResourcesVideo(id);
|
|
|
};
|
|
|
-
|
|
|
-
|
|
|
const trackPlayback = inject('trackPlayback');
|
|
|
// 数据列表,直接定义为数组
|
|
|
-const dataList = reactive([]);
|
|
|
+const dataList = ref([]);
|
|
|
//入参
|
|
|
const queryParams = reactive({
|
|
|
+ current: 1,
|
|
|
+ size: 10,
|
|
|
keywords: ''
|
|
|
});
|
|
|
+const total = ref(0);
|
|
|
//调接口
|
|
|
const initData = () => {
|
|
|
getDroneResourcesList({
|
|
|
+ current: queryParams.current,
|
|
|
+ size: queryParams.size,
|
|
|
query: {
|
|
|
keywords: queryParams.keywords
|
|
|
}
|
|
|
}).then((res) => {
|
|
|
- if (res.code === 0 && Array.isArray(res.rows)) {
|
|
|
- dataList.splice(0, dataList.length, ...res.rows); // 使用 splice 替换数组内容,保持响应性
|
|
|
- } else {
|
|
|
- console.error('Invalid response from server:', res);
|
|
|
- // 可以选择清空数据列表或显示错误消息
|
|
|
- dataList.splice(0, dataList.length); // 清空数据列表
|
|
|
- }
|
|
|
+ dataList.value = res.rows;
|
|
|
+ total.value = res.total;
|
|
|
});
|
|
|
};
|
|
|
|
|
|
+const handleChangePage = (newNum) => {
|
|
|
+ queryParams.current = newNum;
|
|
|
+ initData();
|
|
|
+};
|
|
|
+
|
|
|
// 取消按钮的逻辑,搜索框清空并重新加载数据
|
|
|
const handleCancel = () => {
|
|
|
queryParams.keywords = '';
|
|
|
+ queryParams.current = 1;
|
|
|
initData();
|
|
|
};
|
|
|
const handleConnect = () => {};
|
|
@@ -139,13 +150,12 @@ onMounted(() => {
|
|
|
|
|
|
.custom-table {
|
|
|
width: 100%;
|
|
|
- height: 1030px;
|
|
|
- overflow-y: auto;
|
|
|
- overflow-x: hidden;
|
|
|
+ height: 1015px;
|
|
|
+ display: flex;
|
|
|
+ flex-direction: column;
|
|
|
.table-content {
|
|
|
- height: 880px;
|
|
|
+ flex: 1;
|
|
|
overflow-y: auto;
|
|
|
- overflow-x: hidden;
|
|
|
}
|
|
|
.th {
|
|
|
width: 100%;
|
|
@@ -207,6 +217,7 @@ onMounted(() => {
|
|
|
display: flex;
|
|
|
justify-content: space-between; /* 左右两端对齐 */
|
|
|
align-items: center; /* 垂直居中对齐 */
|
|
|
+ margin: 15px 0;
|
|
|
}
|
|
|
.text-item {
|
|
|
font-size: 32px; /* 根据需要设置字体大小 */
|
|
@@ -217,4 +228,57 @@ onMounted(() => {
|
|
|
font-size: 32px; /* 根据需要设置字体大小 */
|
|
|
line-height: 1; /* 确保行高一致 */
|
|
|
}
|
|
|
+.footer {
|
|
|
+ height: 64px;
|
|
|
+ display: flex;
|
|
|
+ justify-content: flex-end;
|
|
|
+ margin-top: 25px;
|
|
|
+ .pagination-container {
|
|
|
+ height: 64px;
|
|
|
+ margin: 0;
|
|
|
+ }
|
|
|
+ :deep(.el-pagination__total) {
|
|
|
+ color: #a7ccdf;
|
|
|
+ font-size: 32px;
|
|
|
+ }
|
|
|
+ :deep(.el-pagination) {
|
|
|
+ .btn-next,
|
|
|
+ .btn-prev {
|
|
|
+ background-color: transparent;
|
|
|
+ border: none;
|
|
|
+ .el-icon {
|
|
|
+ font-size: 22px;
|
|
|
+ color: #a7ccdf;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .btn-prev:disabled,
|
|
|
+ .btn-next:disabled {
|
|
|
+ background-color: transparent;
|
|
|
+ border: none;
|
|
|
+ }
|
|
|
+ .el-pager li {
|
|
|
+ width: 64px;
|
|
|
+ height: 64px;
|
|
|
+ line-height: 64px;
|
|
|
+ text-align: center;
|
|
|
+ font-size: 38px;
|
|
|
+ color: #a7ccdf;
|
|
|
+ background-color: #0e3064;
|
|
|
+ border: 1px solid #0c57a7;
|
|
|
+ margin: 0 6px;
|
|
|
+ &:hover {
|
|
|
+ background-color: #038dff;
|
|
|
+ border: 1px solid #038dff;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .el-pager li.is-active {
|
|
|
+ background-color: #038dff;
|
|
|
+ border: 1px solid #038dff;
|
|
|
+ }
|
|
|
+ .el-pagination__goto {
|
|
|
+ font-size: 38px;
|
|
|
+ color: #a7ccdf;
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
</style>
|