Revert "功能:摄像头页面增加区域选择器"

This reverts commit 84ec762d09.
This commit is contained in:
2026-03-23 17:02:30 +08:00
parent 84ec762d09
commit 5182e81429
3 changed files with 1 additions and 70 deletions

View File

@@ -45,7 +45,6 @@ export namespace AiotDeviceApi {
mediaServerId?: string; mediaServerId?: string;
streamKey?: string; streamKey?: string;
createTime?: string; createTime?: string;
areaId?: number; // 所属区域ID
} }
/** ROI 区域 */ /** ROI 区域 */
@@ -300,15 +299,3 @@ export async function getAlertImageUrl(imagePath: string): Promise<string> {
`&access-token=${encodeURIComponent(token)}` `&access-token=${encodeURIComponent(token)}`
); );
} }
// ==================== 区域列表 ====================
/** 获取区域列表(从 IoT 平台代理查询) */
export async function getAreaList(): Promise<
{ id: number; areaName: string; parentId?: number }[]
> {
const resp = await fetch(`${apiURL}/api/area/list`);
const json = await resp.json();
if (json.code === 0) return json.data || [];
return [];
}

View File

@@ -30,7 +30,6 @@ import {
import { import {
deleteCamera, deleteCamera,
getAreaList,
getCameraList, getCameraList,
getMediaServerList, getMediaServerList,
getRoiByCameraId, getRoiByCameraId,
@@ -60,7 +59,6 @@ const columns = [
{ title: '摄像头名称', dataIndex: 'cameraName', width: 150 }, { title: '摄像头名称', dataIndex: 'cameraName', width: 150 },
{ title: '拉流地址', dataIndex: 'srcUrl', ellipsis: true }, { title: '拉流地址', dataIndex: 'srcUrl', ellipsis: true },
{ title: '边缘设备', dataIndex: 'edgeDeviceId', width: 100 }, { title: '边缘设备', dataIndex: 'edgeDeviceId', width: 100 },
{ title: '区域', key: 'areaName', width: 100 },
{ title: '状态', key: 'status', width: 60, align: 'center' as const }, { title: '状态', key: 'status', width: 60, align: 'center' as const },
{ title: 'ROI', key: 'roiCount', width: 80, align: 'center' as const }, { title: 'ROI', key: 'roiCount', width: 80, align: 'center' as const },
{ title: '操作', key: 'actions', width: 240, fixed: 'right' as const }, { title: '操作', key: 'actions', width: 240, fixed: 'right' as const },
@@ -72,7 +70,6 @@ const editModalOpen = ref(false);
const editModalTitle = ref('添加摄像头'); const editModalTitle = ref('添加摄像头');
const saving = ref(false); const saving = ref(false);
const mediaServerOptions = ref<{ label: string; value: string }[]>([]); const mediaServerOptions = ref<{ label: string; value: string }[]>([]);
const areaOptions = ref<{ label: string; value: number }[]>([]);
const editForm = reactive<Partial<AiotDeviceApi.Camera>>({ const editForm = reactive<Partial<AiotDeviceApi.Camera>>({
id: undefined, id: undefined,
type: 'default', type: 'default',
@@ -89,7 +86,6 @@ const editForm = reactive<Partial<AiotDeviceApi.Camera>>({
enableDisableNoneReader: true, enableDisableNoneReader: true,
relatesMediaServerId: '', relatesMediaServerId: '',
ffmpegCmdKey: '', ffmpegCmdKey: '',
areaId: undefined as number | undefined,
}); });
// 从已有摄像头中提取应用名选项 // 从已有摄像头中提取应用名选项
@@ -112,15 +108,6 @@ const appOptions = computed(() => {
.sort((a, b) => b.count - a.count); .sort((a, b) => b.count - a.count);
}); });
// 区域名称映射area_id → area_name
const areaNameMap = computed(() => {
const map: Record<number, string> = {};
areaOptions.value.forEach((a) => {
map[a.value] = a.label;
});
return map;
});
// ==================== 数据加载 ==================== // ==================== 数据加载 ====================
async function loadData() { async function loadData() {
@@ -186,18 +173,6 @@ async function loadMediaServers() {
} }
} }
async function loadAreaOptions() {
try {
const list = await getAreaList();
areaOptions.value = list.map((a: any) => ({
label: a.areaName || a.name || `区域${a.id}`,
value: a.id,
}));
} catch {
areaOptions.value = [];
}
}
// ==================== 新增 / 编辑 ==================== // ==================== 新增 / 编辑 ====================
function resetForm() { function resetForm() {
@@ -217,7 +192,6 @@ function resetForm() {
enableDisableNoneReader: true, enableDisableNoneReader: true,
relatesMediaServerId: '', relatesMediaServerId: '',
ffmpegCmdKey: '', ffmpegCmdKey: '',
areaId: undefined,
}); });
} }
@@ -260,7 +234,6 @@ function handleAdd() {
editModalTitle.value = '添加摄像头'; editModalTitle.value = '添加摄像头';
editModalOpen.value = true; editModalOpen.value = true;
loadMediaServers(); loadMediaServers();
loadAreaOptions();
// 自动填充流ID // 自动填充流ID
autoFillStreamId(); autoFillStreamId();
} }
@@ -283,12 +256,10 @@ function handleEdit(row: AiotDeviceApi.Camera) {
enableDisableNoneReader: row.enableDisableNoneReader ?? true, enableDisableNoneReader: row.enableDisableNoneReader ?? true,
relatesMediaServerId: row.relatesMediaServerId || '', relatesMediaServerId: row.relatesMediaServerId || '',
ffmpegCmdKey: row.ffmpegCmdKey || '', ffmpegCmdKey: row.ffmpegCmdKey || '',
areaId: row.areaId || undefined,
}); });
editModalTitle.value = '编辑摄像头'; editModalTitle.value = '编辑摄像头';
editModalOpen.value = true; editModalOpen.value = true;
loadMediaServers(); loadMediaServers();
loadAreaOptions();
} }
async function handleSave() { async function handleSave() {
@@ -397,7 +368,6 @@ watch(
onMounted(() => { onMounted(() => {
loadData(); loadData();
loadAreaOptions();
}); });
</script> </script>
@@ -451,13 +421,7 @@ onMounted(() => {
size="middle" size="middle"
> >
<template #bodyCell="{ column, record }"> <template #bodyCell="{ column, record }">
<template v-if="column.key === 'areaName'"> <template v-if="column.key === 'status'">
<Tag v-if="record.areaId && areaNameMap[record.areaId]" color="blue">
{{ areaNameMap[record.areaId] }}
</Tag>
<span v-else style="color: #999">未绑定</span>
</template>
<template v-else-if="column.key === 'status'">
<Badge <Badge
:status=" :status="
cameraStatus[record.cameraCode] === null || cameraStatus[record.cameraCode] === null ||
@@ -537,21 +501,6 @@ onMounted(() => {
placeholder="选择绑定的边缘设备" placeholder="选择绑定的边缘设备"
/> />
</Form.Item> </Form.Item>
<Form.Item label="所属区域">
<Select
v-model:value="editForm.areaId"
:options="areaOptions"
placeholder="选择所属区域(用于工单派发)"
allow-clear
show-search
:filter-option="
(input: string, option: any) =>
(option?.label ?? '')
.toLowerCase()
.includes(input.toLowerCase())
"
/>
</Form.Item>
<Form.Item label="拉流地址" required> <Form.Item label="拉流地址" required>
<Input <Input
v-model:value="editForm.srcUrl" v-model:value="editForm.srcUrl"

View File

@@ -33,11 +33,6 @@ export default defineConfig(async () => {
changeOrigin: true, changeOrigin: true,
target: 'http://127.0.0.1:8000', target: 'http://127.0.0.1:8000',
}, },
// 区域列表 API -> 告警服务 :8000
'/api/area': {
changeOrigin: true,
target: 'http://127.0.0.1:8000',
},
// aiot/device/* -> WVP :18080按子路径分别 rewrite // aiot/device/* -> WVP :18080按子路径分别 rewrite
// 注意:更具体的路径必须写在通配路径前面 // 注意:更具体的路径必须写在通配路径前面