refactor: 摄像头管理页面移除状态栏、拉流和导出按钮
- 删除"状态"列(拉流中/未拉流) - 删除操作栏中"拉流"和"导出"按钮,保留ROI配置、编辑、删除 - 删除搜索栏中"拉流状态"筛选 - 清理无用import和方法(toggleStream/handleExport/startCamera/stopCamera/exportConfig) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -29,14 +29,11 @@ import {
|
|||||||
|
|
||||||
import {
|
import {
|
||||||
deleteCamera,
|
deleteCamera,
|
||||||
exportConfig,
|
|
||||||
getCameraList,
|
getCameraList,
|
||||||
getMediaServerList,
|
getMediaServerList,
|
||||||
getRoiByCameraId,
|
getRoiByCameraId,
|
||||||
pushAllConfig,
|
pushAllConfig,
|
||||||
saveCamera,
|
saveCamera,
|
||||||
startCamera,
|
|
||||||
stopCamera,
|
|
||||||
} from '#/api/aiot/device';
|
} from '#/api/aiot/device';
|
||||||
|
|
||||||
defineOptions({ name: 'AiotDeviceCamera' });
|
defineOptions({ name: 'AiotDeviceCamera' });
|
||||||
@@ -52,15 +49,13 @@ const page = ref(1);
|
|||||||
const pageSize = ref(15);
|
const pageSize = ref(15);
|
||||||
const total = ref(0);
|
const total = ref(0);
|
||||||
const searchQuery = ref('');
|
const searchQuery = ref('');
|
||||||
const searchPulling = ref<string | undefined>(undefined);
|
|
||||||
|
|
||||||
const columns = [
|
const columns = [
|
||||||
{ title: '应用名', dataIndex: 'app', width: 120 },
|
{ title: '应用名', dataIndex: 'app', width: 120 },
|
||||||
{ title: '流ID', dataIndex: 'stream', width: 150 },
|
{ title: '流ID', dataIndex: 'stream', width: 150 },
|
||||||
{ title: '拉流地址', dataIndex: 'srcUrl', ellipsis: true },
|
{ title: '拉流地址', dataIndex: 'srcUrl', ellipsis: true },
|
||||||
{ title: '状态', key: 'pulling', width: 100 },
|
|
||||||
{ title: 'ROI', key: 'roiCount', width: 80, align: 'center' as const },
|
{ title: 'ROI', key: 'roiCount', width: 80, align: 'center' as const },
|
||||||
{ title: '操作', key: 'actions', width: 340, fixed: 'right' as const },
|
{ title: '操作', key: 'actions', width: 240, fixed: 'right' as const },
|
||||||
];
|
];
|
||||||
|
|
||||||
// ==================== 编辑弹窗状态 ====================
|
// ==================== 编辑弹窗状态 ====================
|
||||||
@@ -114,10 +109,6 @@ async function loadData() {
|
|||||||
page: page.value,
|
page: page.value,
|
||||||
count: pageSize.value,
|
count: pageSize.value,
|
||||||
query: searchQuery.value || undefined,
|
query: searchQuery.value || undefined,
|
||||||
pulling:
|
|
||||||
searchPulling.value === undefined
|
|
||||||
? undefined
|
|
||||||
: searchPulling.value === 'true',
|
|
||||||
});
|
});
|
||||||
cameraList.value = res.list || [];
|
cameraList.value = res.list || [];
|
||||||
total.value = res.total || 0;
|
total.value = res.total || 0;
|
||||||
@@ -288,23 +279,6 @@ function handleDelete(row: AiotDeviceApi.Camera) {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
// ==================== 拉流控制 ====================
|
|
||||||
|
|
||||||
async function toggleStream(row: AiotDeviceApi.Camera) {
|
|
||||||
try {
|
|
||||||
if (row.pulling) {
|
|
||||||
await stopCamera(row.id!);
|
|
||||||
message.success('已停止拉流');
|
|
||||||
} else {
|
|
||||||
await startCamera(row.id!);
|
|
||||||
message.success('开始拉流');
|
|
||||||
}
|
|
||||||
loadData();
|
|
||||||
} catch {
|
|
||||||
message.error('操作失败');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// ==================== ROI 配置跳转 ====================
|
// ==================== ROI 配置跳转 ====================
|
||||||
|
|
||||||
function handleRoiConfig(row: AiotDeviceApi.Camera) {
|
function handleRoiConfig(row: AiotDeviceApi.Camera) {
|
||||||
@@ -317,29 +291,6 @@ function handleRoiConfig(row: AiotDeviceApi.Camera) {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
// ==================== 配置导出 ====================
|
|
||||||
|
|
||||||
async function handleExport(row: AiotDeviceApi.Camera) {
|
|
||||||
const cameraCode = row.cameraCode;
|
|
||||||
if (!cameraCode) {
|
|
||||||
message.warning('摄像头编码为空,无法导出');
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
try {
|
|
||||||
const data = await exportConfig(cameraCode);
|
|
||||||
const json = JSON.stringify(data, null, 2);
|
|
||||||
const blob = new Blob([json], { type: 'application/json' });
|
|
||||||
const url = URL.createObjectURL(blob);
|
|
||||||
const a = document.createElement('a');
|
|
||||||
a.href = url;
|
|
||||||
a.download = `config_${cameraCode}.json`;
|
|
||||||
a.click();
|
|
||||||
URL.revokeObjectURL(url);
|
|
||||||
} catch {
|
|
||||||
message.error('导出失败');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// ==================== 同步全局配置 ====================
|
// ==================== 同步全局配置 ====================
|
||||||
|
|
||||||
const syncing = ref(false);
|
const syncing = ref(false);
|
||||||
@@ -401,17 +352,6 @@ onMounted(() => {
|
|||||||
allow-clear
|
allow-clear
|
||||||
@press-enter="loadData"
|
@press-enter="loadData"
|
||||||
/>
|
/>
|
||||||
<Select
|
|
||||||
v-model:value="searchPulling"
|
|
||||||
placeholder="拉流状态"
|
|
||||||
style="width: 130px"
|
|
||||||
allow-clear
|
|
||||||
:options="[
|
|
||||||
{ value: 'true', label: '拉流中' },
|
|
||||||
{ value: 'false', label: '未拉流' },
|
|
||||||
]"
|
|
||||||
@change="loadData"
|
|
||||||
/>
|
|
||||||
<Button type="primary" @click="loadData">查询</Button>
|
<Button type="primary" @click="loadData">查询</Button>
|
||||||
</div>
|
</div>
|
||||||
<Space>
|
<Space>
|
||||||
@@ -442,12 +382,7 @@ onMounted(() => {
|
|||||||
size="middle"
|
size="middle"
|
||||||
>
|
>
|
||||||
<template #bodyCell="{ column, record }">
|
<template #bodyCell="{ column, record }">
|
||||||
<template v-if="column.key === 'pulling'">
|
<template v-if="column.key === 'roiCount'">
|
||||||
<Tag :color="record.pulling ? 'success' : 'default'">
|
|
||||||
{{ record.pulling ? '拉流中' : '未拉流' }}
|
|
||||||
</Tag>
|
|
||||||
</template>
|
|
||||||
<template v-else-if="column.key === 'roiCount'">
|
|
||||||
<Badge
|
<Badge
|
||||||
:count="roiCounts[record.cameraCode] ?? 0"
|
:count="roiCounts[record.cameraCode] ?? 0"
|
||||||
:number-style="{ backgroundColor: '#1677ff' }"
|
:number-style="{ backgroundColor: '#1677ff' }"
|
||||||
@@ -464,15 +399,6 @@ onMounted(() => {
|
|||||||
ROI配置
|
ROI配置
|
||||||
</Button>
|
</Button>
|
||||||
<Button size="small" @click="handleEdit(record)">编辑</Button>
|
<Button size="small" @click="handleEdit(record)">编辑</Button>
|
||||||
<Button
|
|
||||||
:type="record.pulling ? 'default' : 'primary'"
|
|
||||||
:danger="record.pulling"
|
|
||||||
size="small"
|
|
||||||
@click="toggleStream(record)"
|
|
||||||
>
|
|
||||||
{{ record.pulling ? '停止' : '拉流' }}
|
|
||||||
</Button>
|
|
||||||
<Button size="small" @click="handleExport(record)">导出</Button>
|
|
||||||
<Button size="small" danger @click="handleDelete(record)">
|
<Button size="small" danger @click="handleDelete(record)">
|
||||||
删除
|
删除
|
||||||
</Button>
|
</Button>
|
||||||
|
|||||||
Reference in New Issue
Block a user