|
@@ -1,81 +1,79 @@
|
|
|
<template>
|
|
<template>
|
|
|
<div class="cameraConfigGroup">
|
|
<div class="cameraConfigGroup">
|
|
|
- <el-card>
|
|
|
|
|
- <template #header>
|
|
|
|
|
- <el-button
|
|
|
|
|
- type="primary"
|
|
|
|
|
- @click="createGroupDialog = true"
|
|
|
|
|
- style="margin-top: 24px; margin-bottom: 16px; width: 138px"
|
|
|
|
|
- v-permission="{ action: [PERM_ALGO.CONFIG_ADD_GROUP] }"
|
|
|
|
|
- >
|
|
|
|
|
- <img src="@/assets/images/create.png" style="margin-top: -1px; margin-right: 5px" />新建相机分组
|
|
|
|
|
- </el-button>
|
|
|
|
|
- </template>
|
|
|
|
|
- <el-table
|
|
|
|
|
- :data="cameraGroupList"
|
|
|
|
|
- :span-method="objectSpanMethod"
|
|
|
|
|
- height="calc(100vh - 380px)"
|
|
|
|
|
- style="width: 100%; margin-top: 16px; --el-table-border-color: none"
|
|
|
|
|
- v-loading="loading"
|
|
|
|
|
- >
|
|
|
|
|
- <el-table-column prop="id" label="组序号" width="70"/>
|
|
|
|
|
- <el-table-column prop="cameraName" label="相机名称" align="center">
|
|
|
|
|
- <template #default="scope">
|
|
|
|
|
- <div class="cameraName-text" v-if="scope.row.isMainCamera === IsMainCamera.YES">
|
|
|
|
|
- <el-icon><Star color="Gold" /></el-icon>
|
|
|
|
|
- {{ scope.row.cameraName }}
|
|
|
|
|
- </div>
|
|
|
|
|
- </template>
|
|
|
|
|
- </el-table-column>
|
|
|
|
|
- <el-table-column prop="cameraCode" label="设备ID"/>
|
|
|
|
|
- <el-table-column prop="location" label="地点"/>
|
|
|
|
|
- <el-table-column prop="algoName" label="算法">
|
|
|
|
|
- <template #default="scope">
|
|
|
|
|
- <div class="algoId-text" @click="handleView(scope.row)">
|
|
|
|
|
- {{ scope.row.algoName }}
|
|
|
|
|
- </div>
|
|
|
|
|
- </template>
|
|
|
|
|
- </el-table-column>
|
|
|
|
|
- <el-table-column label="操作" fixed="right" width="120px">
|
|
|
|
|
- <template #default="scope">
|
|
|
|
|
- <div class="operation">
|
|
|
|
|
- <el-tooltip effect="light" content="关闭/开启" placement="bottom">
|
|
|
|
|
- <el-switch
|
|
|
|
|
- :model-value="scope.row.status"
|
|
|
|
|
- :inactive-value="CameraGroupStatus.CLOSE"
|
|
|
|
|
- :active-value="CameraGroupStatus.OPEN"
|
|
|
|
|
- @update:model-value="(val) => handleSwitch(val, scope.row)"/>
|
|
|
|
|
- </el-tooltip>
|
|
|
|
|
-
|
|
|
|
|
- <el-tooltip effect="light" content="删除" placement="bottom">
|
|
|
|
|
- <img src="@/views/message/alarmMessages/img/delete.png"
|
|
|
|
|
- @click="handleDelete(scope.row)"
|
|
|
|
|
- v-permission="{ action: [PERM_ALGO.CONFIG_DELETE_GROUP] }"
|
|
|
|
|
- />
|
|
|
|
|
- </el-tooltip>
|
|
|
|
|
- </div>
|
|
|
|
|
- </template>
|
|
|
|
|
- </el-table-column>
|
|
|
|
|
-
|
|
|
|
|
- <template #empty>
|
|
|
|
|
- <div class="emptyDiv">
|
|
|
|
|
- <img src="@/assets/images/empty.png" class="emptyImg" />
|
|
|
|
|
- <span class="emptySpan">暂无数据</span>
|
|
|
|
|
|
|
+ <el-button
|
|
|
|
|
+ type="primary"
|
|
|
|
|
+ @click="createGroupDialog = true"
|
|
|
|
|
+ style="margin: 10px 0;"
|
|
|
|
|
+ v-permission="{ action: [PERM_ALGO.CONFIG_ADD_GROUP] }"
|
|
|
|
|
+ >
|
|
|
|
|
+ <img src="@/assets/images/create.png" style="margin-top: -1px; margin-right: 5px" />新建相机分组
|
|
|
|
|
+ </el-button>
|
|
|
|
|
+ <el-table
|
|
|
|
|
+ :data="cameraGroupList"
|
|
|
|
|
+ :span-method="objectSpanMethod"
|
|
|
|
|
+ height="calc(100vh - 380px)"
|
|
|
|
|
+ style="width: 100%; margin-top: 16px; --el-table-border-color: none"
|
|
|
|
|
+ v-loading="loading"
|
|
|
|
|
+ :row-class-name="tableRowClassName"
|
|
|
|
|
+ >
|
|
|
|
|
+ <el-table-column prop="id" label="组序号" width="70"/>
|
|
|
|
|
+ <el-table-column prop="cameraName" label="相机名称" align="center">
|
|
|
|
|
+ <template #default="scope">
|
|
|
|
|
+ <div class="cameraName-text" v-if="scope.row.isMainCamera === IsMainCamera.YES">
|
|
|
|
|
+ <el-icon><Star color="Gold" /></el-icon>
|
|
|
|
|
+ {{ scope.row.cameraName }}
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </template>
|
|
|
|
|
+ </el-table-column>
|
|
|
|
|
+ <el-table-column prop="cameraCode" label="设备ID"/>
|
|
|
|
|
+ <el-table-column prop="location" label="地点"/>
|
|
|
|
|
+ <el-table-column prop="algoName" label="算法">
|
|
|
|
|
+ <template #default="scope">
|
|
|
|
|
+ <div class="algoId-text" @click="handleView(scope.row)">
|
|
|
|
|
+ {{ scope.row.algoName }}
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </template>
|
|
|
|
|
+ </el-table-column>
|
|
|
|
|
+ <el-table-column label="操作" fixed="right" width="120px">
|
|
|
|
|
+ <template #default="scope">
|
|
|
|
|
+ <div class="operation">
|
|
|
|
|
+ <el-tooltip effect="light" content="关闭/开启" placement="bottom">
|
|
|
|
|
+ <el-switch
|
|
|
|
|
+ :model-value="scope.row.status"
|
|
|
|
|
+ :inactive-value="CameraGroupStatus.CLOSE"
|
|
|
|
|
+ :active-value="CameraGroupStatus.OPEN"
|
|
|
|
|
+ @update:model-value="(val) => handleSwitch(val, scope.row)"/>
|
|
|
|
|
+ </el-tooltip>
|
|
|
|
|
+
|
|
|
|
|
+ <el-tooltip effect="light" content="删除" placement="bottom">
|
|
|
|
|
+ <img src="@/views/message/alarmMessages/img/delete.png"
|
|
|
|
|
+ @click="handleDelete(scope.row)"
|
|
|
|
|
+ v-permission="{ action: [PERM_ALGO.CONFIG_DELETE_GROUP] }"
|
|
|
|
|
+ />
|
|
|
|
|
+ </el-tooltip>
|
|
|
</div>
|
|
</div>
|
|
|
</template>
|
|
</template>
|
|
|
- </el-table>
|
|
|
|
|
- <section class="mt-4 flex justify-end">
|
|
|
|
|
- <el-pagination
|
|
|
|
|
- background
|
|
|
|
|
- layout="total, sizes, prev, pager, next"
|
|
|
|
|
- :page-sizes="[10, 30, 50]"
|
|
|
|
|
- :total="total"
|
|
|
|
|
- v-model:page-size="requestParams.pageSize"
|
|
|
|
|
- v-model:current-page="requestParams.pageNumber"
|
|
|
|
|
- @change="queryCameraGroupPage"
|
|
|
|
|
- />
|
|
|
|
|
- </section>
|
|
|
|
|
- </el-card>
|
|
|
|
|
|
|
+ </el-table-column>
|
|
|
|
|
+
|
|
|
|
|
+ <template #empty>
|
|
|
|
|
+ <div class="emptyDiv">
|
|
|
|
|
+ <img src="@/assets/images/empty.png" class="emptyImg" />
|
|
|
|
|
+ <span class="emptySpan">暂无数据</span>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </template>
|
|
|
|
|
+ </el-table>
|
|
|
|
|
+ <section class="mt-4 flex justify-end">
|
|
|
|
|
+ <el-pagination
|
|
|
|
|
+ background
|
|
|
|
|
+ layout="total, sizes, prev, pager, next"
|
|
|
|
|
+ :page-sizes="[10, 30, 50]"
|
|
|
|
|
+ :total="total"
|
|
|
|
|
+ v-model:page-size="requestParams.pageSize"
|
|
|
|
|
+ v-model:current-page="requestParams.pageNumber"
|
|
|
|
|
+ @change="queryCameraGroupPage"
|
|
|
|
|
+ />
|
|
|
|
|
+ </section>
|
|
|
|
|
+ <!-- </el-card> -->
|
|
|
|
|
|
|
|
<!--删除弹窗 -->
|
|
<!--删除弹窗 -->
|
|
|
<el-dialog v-model="deleteDialog" width="424px" top="20%" class="deleteDialog">
|
|
<el-dialog v-model="deleteDialog" width="424px" top="20%" class="deleteDialog">
|
|
@@ -120,6 +118,16 @@ const createGroupDialog = ref(false);
|
|
|
const deleteDialog = ref(false);
|
|
const deleteDialog = ref(false);
|
|
|
const cameraDetectionGroupId = ref();
|
|
const cameraDetectionGroupId = ref();
|
|
|
|
|
|
|
|
|
|
+const tableRowClassName = ({
|
|
|
|
|
+ row,
|
|
|
|
|
+}: {
|
|
|
|
|
+ row: CameraGroupTableItem
|
|
|
|
|
+}) => {
|
|
|
|
|
+ // 根据分组ID计算颜色索引(使用模运算实现颜色循环)
|
|
|
|
|
+ const groupColors = ['normal', 'active'];
|
|
|
|
|
+ const groupId = row.cameraDetectionGroupId;
|
|
|
|
|
+ return groupColors[groupId % 3];
|
|
|
|
|
+}
|
|
|
|
|
|
|
|
const objectSpanMethod = ({
|
|
const objectSpanMethod = ({
|
|
|
row,
|
|
row,
|
|
@@ -223,6 +231,7 @@ const handleView = (row: CameraGroupTableItem) => {
|
|
|
path: '/algorithm/camera-group',
|
|
path: '/algorithm/camera-group',
|
|
|
query: {
|
|
query: {
|
|
|
groupId: row.cameraDetectionGroupId,
|
|
groupId: row.cameraDetectionGroupId,
|
|
|
|
|
+ cameraId: row.cameraId
|
|
|
}
|
|
}
|
|
|
})
|
|
})
|
|
|
}
|
|
}
|
|
@@ -289,5 +298,19 @@ onMounted(() => {
|
|
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ .el-table {
|
|
|
|
|
+ :deep(.normal) {
|
|
|
|
|
+ --el-table-tr-bg-color: #fff;
|
|
|
|
|
+ &:hover {
|
|
|
|
|
+ --el-table-tr-bg-color: #fff;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ :deep(.active) {
|
|
|
|
|
+ --el-table-tr-bg-color: #fafafa;
|
|
|
|
|
+ &:hover {
|
|
|
|
|
+ --el-table-tr-bg-color: #fafafa;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
</style>
|
|
</style>
|