diff --git a/public/img/cabinet/cabinet_120_6X20.jpg b/public/img/cabinet/cabinet_120.jpg similarity index 100% rename from public/img/cabinet/cabinet_120_6X20.jpg rename to public/img/cabinet/cabinet_120.jpg diff --git a/public/img/cabinet/cabinet_120_4X30.jpg b/public/img/cabinet/cabinet_120_4X30.jpg deleted file mode 100644 index 237c3dd..0000000 Binary files a/public/img/cabinet/cabinet_120_4X30.jpg and /dev/null differ diff --git a/src/api/cabinet/mainboards.ts b/src/api/cabinet/mainboards.ts new file mode 100644 index 0000000..4eee4b4 --- /dev/null +++ b/src/api/cabinet/mainboards.ts @@ -0,0 +1,88 @@ +import { http } from '@/utils/http'; + +/** + * 查询机柜主板信息参数 + */ +export interface SearchCabinetMainboardQuery extends BasePageQuery { + /** 关联柜机ID */ + cabinetId?: number; + /** 锁控板序号 */ + lockControlNo?: number; +} + +/** + * 机柜主板信息 + */ +export interface CabinetMainboardDTO { + /** 主板唯一ID */ + mainboardId?: number; + /** 关联柜机ID */ + cabinetId: number; + /** 锁控板序号 */ + lockControlNo: number; + /** 创建时间 */ + createTime?: string; + /** 更新时间 */ + updateTime?: string; +} + +/** + * 添加机柜主板信息参数 + */ +export interface AddCabinetMainboardCommand { + /** 关联柜机ID */ + cabinetId: number; + /** 锁控板序号 */ + lockControlNo: number; +} + +/** + * 更新机柜主板信息参数 + */ +export interface UpdateCabinetMainboardCommand { + /** 主板唯一ID */ + mainboardId: number; + /** 关联柜机ID */ + cabinetId?: number; + /** 锁控板序号 */ + lockControlNo?: number; +} + +/** + * 获取机柜主板列表 + * @param params 查询参数 + */ +export const getMainboardList = (params?: SearchCabinetMainboardQuery) => { + return http.request>>('get', '/cabinet/mainboards', { + params + }); +}; + +/** + * 添加机柜主板 + * @param data 主板信息 + */ +export const addMainboard = (data: AddCabinetMainboardCommand) => { + return http.request>('post', '/cabinet/mainboards', { + data + }); +}; + +/** + * 更新机柜主板信息 + * @param id 主板ID + * @param data 更新数据 + */ +export const updateMainboard = (id: number, data: UpdateCabinetMainboardCommand) => { + return http.request>('put', `/cabinet/mainboards/${id}`, { + data + }); +}; + +/** + * 删除机柜主板 + * @param ids 主板ID(多个用逗号分隔) + */ +export const deleteMainboard = (ids: string) => { + return http.request>('delete', `/cabinet/mainboards/${ids}`); +}; \ No newline at end of file diff --git a/src/utils/cabinetImgMap.ts b/src/utils/cabinetImgMap.ts index b9dc8ad..15a34a1 100644 --- a/src/utils/cabinetImgMap.ts +++ b/src/utils/cabinetImgMap.ts @@ -28,15 +28,11 @@ export const CabinetImgMap = { name: "60口机柜", }, 8: { - img: "cabinet_120_6X20.jpg", - name: "120口机柜6X20", + img: "cabinet_120.jpg", + name: "120口机柜", }, 9: { img: "cabinet_4.jpg", name: "4口机柜", }, - 10: { - img: "cabinet_120_4X30.jpg", - name: "120口机柜4X30", - }, } \ No newline at end of file diff --git a/src/views/cabinet/smart-cabinet-card/detail.vue b/src/views/cabinet/smart-cabinet-card/detail.vue index 75c8a31..f0f54fc 100644 --- a/src/views/cabinet/smart-cabinet-card/detail.vue +++ b/src/views/cabinet/smart-cabinet-card/detail.vue @@ -17,6 +17,7 @@ import AddFill from "@iconify-icons/ri/add-circle-line"; import Search from "@iconify-icons/ep/search"; import Refresh from "@iconify-icons/ep/refresh"; import { getGoodsInfo } from "@/api/shop/goods"; +import { CabinetMainboardDTO, deleteMainboard, getMainboardList, updateMainboard } from "@/api/cabinet/mainboards"; defineOptions({ name: "SmartCabinetDetail" @@ -33,6 +34,13 @@ const cabinetInfo = ref({ }); const loading = ref(false); const activeTab = ref('cells'); +const mainboardConfigVisible = ref(false); +const mainboardList = ref([]); +const mainboardPagination = ref({ + pageSize: 5, + currentPage: 1, + total: 0 +}); const cabinetId = ref(0); const gatewayConfigVisible = ref(false); const shopConfigVisible = ref(false); @@ -146,10 +154,73 @@ function handleCellPageChange(val: number) { fetchCellList(); } +async function fetchMainboardList() { + try { + loading.value = true; + const { data } = await getMainboardList({ + cabinetId: cabinetId.value, + pageSize: mainboardPagination.value.pageSize, + pageNum: mainboardPagination.value.currentPage + }); + mainboardList.value = data.rows; + mainboardPagination.value.total = data.total; + } finally { + loading.value = false; + } +} + +function handleMainboardSizeChange(val: number) { + mainboardPagination.value.pageSize = val; + fetchMainboardList(); +} + +function handleMainboardPageChange(val: number) { + mainboardPagination.value.currentPage = val; + fetchMainboardList(); +} + +async function handleEditMainboard(row: CabinetMainboardDTO) { + try { + const { value } = await ElMessageBox.prompt( + '请输入锁控板序号', + '编辑主板', + { + inputPattern: /^\d+$/, + inputValue: row.lockControlNo.toString(), + inputErrorMessage: '请输入有效的数字' + } + ); + await updateMainboard(row.mainboardId!, { + mainboardId: row.mainboardId, + lockControlNo: Number(value) + }); + ElMessage.success('主板更新成功'); + fetchMainboardList(); + } catch (error) { + console.error('操作取消或失败', error); + } +} + +async function handleDeleteMainboard(row: CabinetMainboardDTO) { + try { + await ElMessageBox.confirm( + '确认要删除该主板吗?', + '警告', + { confirmButtonText: '确定', cancelButtonText: '取消', type: 'warning' } + ); + await deleteMainboard(row.mainboardId!.toString()); + ElMessage.success('主板删除成功'); + fetchMainboardList(); + } catch (error) { + console.error('操作取消或失败', error); + } +} + onMounted(() => { cabinetId.value = Number(route.query.id); fetchCabinetDetail(); fetchCellList(); + fetchMainboardList(); }); @@ -200,6 +271,7 @@ onMounted(() => { + @@ -208,6 +280,9 @@ onMounted(() => { {{ cabinetInfo.mainCabinetName || '-' }} {{ cabinetInfo.mqttServerId || '-' }} {{ cabinetInfo.operator || '-' }} + + 配置主板 +
@@ -266,6 +341,27 @@ onMounted(() => { :total="cellPagination.total" @size-change="handleCellSizeChange" @current-change="handleCellPageChange" class="pagination" />
+ +
+ + + + + + + + +