You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

160 lines
5.3 KiB
TypeScript

/*
* @Author: donghao donghao@supervision.ltd
* @Date: 2024-04-22 15:23:36
* @LastEditors: donghao donghao@supervision.ltd
* @LastEditTime: 2024-05-15 11:44:01
* @FilePath: \general-ai-platform-web\src\pages\Business\DeviceGroup\index.tsx
* @Description: deviceGroupdg
* @
* 1
* 2
* 3
* 4
* 5
*/
import { DeviceGroupTree } from '@/components/Tree';
import { deviceGroupEnums } from '@/enums/device';
import { getDeviceGroupList } from '@/services/testApi/deviceGroup';
import { ProCard } from '@ant-design/pro-components';
import { Button, Tabs } from 'antd';
import { useEffect, useState } from 'react';
import AlarmSetForm from './components/alarmSetForm';
import BaseInfo from './components/baseInfo';
import CreateForm from './components/createForm';
import DeviceList from './components/deviceList';
import ModelDeploy from './components/modelDeploy';
import './index.less';
const DeviceGroup: React.FC = () => {
/**state */
// 节点信息
const [deviceTreeList, setDeviceTreeList] = useState<Record<string, any>[]>([]);
const [nodeInfo, setNodeInfo] = useState<Record<string, any>>({}); // 当前节点信息
const [createModalOpen, setCreateModalOpen] = useState<boolean>(false); // 创建新增窗口是否打开
// 切换模块
const [tabKey, setTabKey] = useState<string>(deviceGroupEnums[0].key);
const [tabs] = useState<any>([...deviceGroupEnums]);
const changeTabMode = (key: string) => {
setTabKey(key);
console.log(key);
// eslint-disable-next-line @typescript-eslint/no-use-before-define
// initList(key);
};
/**节点列表 */
// 设备节点树
async function loadDeviceTree() {
const resp = await getDeviceGroupList({ page: 1, pageSize: 100 });
console.log(resp.data, 'loadDeviceTree');
setDeviceTreeList(resp?.data.results);
setNodeInfo(resp?.data.results[0]);
}
// 新增
const handleCreateModal = () => {
setCreateModalOpen(!createModalOpen);
};
// 节点信息展示
// 切换
// 初始化加载
useEffect(() => {
loadDeviceTree();
}, []);
return (
<div className="flex deviceGroup_page">
{/* 节点列表 */}
<div className="dg_content gn_head_card w-[300px] node_list">
<ProCard className="gn_card_wrap pb-[16px]" title={<span className="head3"></span>}>
<div className="dg_tree_box">
<DeviceGroupTree
dataSource={deviceTreeList}
changeNode={(record) => {
// eslint-disable-next-line @typescript-eslint/no-unused-expressions
record?.id && setNodeInfo(record);
}}
addTreeNode={(node) => {
//TODO 判断是根节点还是子节点 调用新增接口
console.log('addTreeNode_node', node);
handleCreateModal();
}}
selectTree={(selectedKeys, info) => {
// eslint-disable-next-line @typescript-eslint/no-unused-expressions
info?.node && info?.node?.id && setNodeInfo(info?.node);
// handleSelectNode(selectedKeys, info)
console.log('selectTree_selected', selectedKeys, info);
}}
></DeviceGroupTree>
</div>
</ProCard>
</div>
{/* 节点信息 */}
<div className="flex-1 dg_content gn_head_card node_info">
<ProCard
className="gn_card_wrap pb-[16px]"
title={<span className="head3"></span>}
extra={
<Button
type="primary"
onClick={() => {
//TODO 打开修改节点信息弹窗
// handleUpdateModal();
}}
>
</Button>
}
>
<div className="dg_content_box">
<BaseInfo info={nodeInfo} />
<Tabs
className="gn_tabs"
activeKey={tabKey}
items={tabs}
onChange={(key) => {
changeTabMode(key);
}}
></Tabs>
{tabKey === '1' && <DeviceList info={nodeInfo}></DeviceList>}
{tabKey === '2' && <ModelDeploy info={nodeInfo}></ModelDeploy>}
{tabKey === '3' && (
<AlarmSetForm
currentRow={{
type: '2',
ways: [
{
label: '短信',
value: [],
isChecked: [],
},
{
label: '邮件',
value: [],
isChecked: [],
},
],
}}
></AlarmSetForm>
)}
</div>
</ProCard>
</div>
{/* 弹窗 */}
<CreateForm
createModalOpen={createModalOpen}
handleModal={handleCreateModal}
parentInfo={nodeInfo}
reload={() => {
// TODO 调用获取节点列表的接口
}}
/>
</div>
);
};
export default DeviceGroup;