diff --git a/src/api/ops/datacenter.ts b/src/api/ops/datacenter.ts
index 2646f21..0bd7d78 100644
--- a/src/api/ops/datacenter.ts
+++ b/src/api/ops/datacenter.ts
@@ -61,8 +61,3 @@ export const fetchDatacenterByCity = (cityId: number) => {
export const fetchDatacenterTree = () => {
return request.get('/Assets/v1/datacenter/tree')
}
-
-/** 获取3D机房后端导出契约数据 */
-export const fetchDatacenterThreeDExport = (params?: { datacenter_ids?: string; room_ids?: string }) => {
- return request.get('/Assets/v1/three-d/export', { params })
-}
diff --git a/src/api/ops/room.ts b/src/api/ops/room.ts
index 39ce7f7..c7cbf31 100644
--- a/src/api/ops/room.ts
+++ b/src/api/ops/room.ts
@@ -12,6 +12,7 @@ export interface RoomItem {
floor_id: number
datacenter_id: number
status?: string
+ has3D: boolean
floor?: { id: number; name: string }
datacenter?: { id: number; name: string }
}
@@ -61,6 +62,7 @@ export interface RoomCreateData {
floor_id: number
datacenter_id: number
status?: string
+ has3D: boolean
}
/** 机房更新数据 */
@@ -72,6 +74,7 @@ export interface RoomUpdateData {
floor_id?: number
datacenter_id?: number
status?: string
+ has3D?: boolean
}
/** 获取机房列表(分页) */
diff --git a/src/views/ops/pages/datacenter/house/index.vue b/src/views/ops/pages/datacenter/house/index.vue
index 3537daf..2830475 100644
--- a/src/views/ops/pages/datacenter/house/index.vue
+++ b/src/views/ops/pages/datacenter/house/index.vue
@@ -61,12 +61,6 @@
新建数据中心
-
-
-
-
- 3D契约
-
@@ -120,16 +114,6 @@
-
-
- 数据中心 {{ threeDSummary.datacenter_count || 0 }}
- 机房 {{ threeDSummary.room_count || 0 }}
- 机柜 {{ threeDSummary.rack_count || 0 }}
- U位 {{ threeDSummary.unit_count || 0 }}
- 设备 {{ threeDSummary.device_count || 0 }}
-
-
-
import { ref, reactive, computed, onMounted } from 'vue'
import { Message, Modal } from '@arco-design/web-vue'
-import { IconApps, IconPlus } from '@arco-design/web-vue/es/icon'
+import { IconPlus } from '@arco-design/web-vue/es/icon'
import type { FormItem } from '@/components/search-form/types'
import SearchTable from '@/components/search-table/index.vue'
import { searchFormConfig } from './config/search-form'
import { columns as columnsConfig } from './config/columns'
-import { fetchDatacenterList, deleteDatacenter, fetchProvinceList, fetchCityList, fetchDatacenterThreeDExport } from '@/api/ops/datacenter'
+import { fetchDatacenterList, deleteDatacenter, fetchProvinceList, fetchCityList } from '@/api/ops/datacenter'
import DatacenterDetailDialog from './components/DatacenterDetailDialog.vue'
import DatacenterFormDialog from './components/DatacenterFormDialog.vue'
@@ -166,8 +150,6 @@ const statusMap: Record = {
// 状态管理
const loading = ref(false)
-const threeDLoading = ref(false)
-const threeDSummary = ref(null)
const tableData = ref([])
const formModel = ref({
keyword: '',
@@ -331,24 +313,6 @@ const handleRefresh = () => {
Message.success('数据已刷新')
}
-const handleLoadThreeDExport = async () => {
- threeDLoading.value = true
- try {
- const res: any = await fetchDatacenterThreeDExport()
- if (res.code === 0) {
- threeDSummary.value = res.details?.summary || res.data?.summary || null
- Message.success('3D契约摘要已更新')
- } else {
- Message.error(res.message || '获取3D契约失败')
- }
- } catch (error) {
- console.error('获取3D契约失败:', error)
- Message.error('获取3D契约失败')
- } finally {
- threeDLoading.value = false
- }
-}
-
// 新建数据中心
const handleCreate = () => {
editingDatacenter.value = null
@@ -414,9 +378,4 @@ export default {
.container {
margin-top: 20px;
}
-
-.three-d-summary {
- margin-top: 12px;
- padding: 12px 0;
-}
diff --git a/src/views/ops/pages/datacenter/room/components/RoomFormDialog.vue b/src/views/ops/pages/datacenter/room/components/RoomFormDialog.vue
index 3aef76f..bf29b0e 100644
--- a/src/views/ops/pages/datacenter/room/components/RoomFormDialog.vue
+++ b/src/views/ops/pages/datacenter/room/components/RoomFormDialog.vue
@@ -56,6 +56,10 @@
+
+
+
+
@@ -77,6 +81,7 @@ interface Room {
datacenter_id?: number
floor_id?: number
status?: string
+ has3D: boolean
description?: string
}
@@ -107,6 +112,7 @@ const form = ref({
datacenter_id: undefined as number | undefined,
floor_id: undefined as number | undefined,
status: 'planning',
+ has3D: false,
description: '',
})
@@ -173,6 +179,7 @@ watch(
datacenter_id: props.room.datacenter_id,
floor_id: props.room.floor_id,
status: props.room.status || 'planning',
+ has3D: props.room.has3D,
description: props.room.description || '',
}
if (props.room.datacenter_id) {
@@ -185,6 +192,7 @@ watch(
datacenter_id: undefined,
floor_id: undefined,
status: 'planning',
+ has3D: false,
description: '',
}
floorList.value = []
@@ -204,6 +212,7 @@ const handleOk = async () => {
datacenter_id: form.value.datacenter_id,
floor_id: form.value.floor_id,
status: form.value.status,
+ has3D: form.value.has3D,
description: form.value.description,
}
diff --git a/src/views/ops/pages/datacenter/room/config/columns.ts b/src/views/ops/pages/datacenter/room/config/columns.ts
index c879434..208faaa 100644
--- a/src/views/ops/pages/datacenter/room/config/columns.ts
+++ b/src/views/ops/pages/datacenter/room/config/columns.ts
@@ -46,7 +46,7 @@ export const columns: TableColumnData[] = [
title: '操作',
dataIndex: 'actions',
slotName: 'actions',
- width: 240,
+ width: 320,
fixed: 'right' as const,
},
]
diff --git a/src/views/ops/pages/datacenter/room/index.vue b/src/views/ops/pages/datacenter/room/index.vue
index c3bfbd1..67a216b 100644
--- a/src/views/ops/pages/datacenter/room/index.vue
+++ b/src/views/ops/pages/datacenter/room/index.vue
@@ -46,6 +46,15 @@
详情
编辑
+
+ 3d机房
+
删除
@@ -60,6 +69,7 @@
import { computed, onMounted, reactive, ref, watch } from 'vue'
import { Message, Modal } from '@arco-design/web-vue'
import { IconPlus } from '@arco-design/web-vue/es/icon'
+import { useRouter } from 'vue-router'
import type { FormItem } from '@/components/search-form/types'
import SearchTable from '@/components/search-table/index.vue'
import { searchFormConfig } from './config/search-form'
@@ -69,6 +79,8 @@ import { fetchDatacenterList, fetchFloorListByDatacenter } from '@/api/ops/floor
import RoomFormDialog from './components/RoomFormDialog.vue'
import RoomDetailDialog from './components/RoomDetailDialog.vue'
+const router = useRouter()
+
const statusMap: Record = {
planning: { text: '规划中', color: 'blue' },
construction: { text: '建设中', color: 'orange' },
@@ -269,6 +281,10 @@ const handleDetail = (record: any) => {
detailVisible.value = true
}
+const handleThreeDRoom = () => {
+ router.push('/datacenter/room')
+}
+
const handleDelete = async (record: any) => {
try {
Modal.confirm({