import { PageContainer } from '@ant-design/pro-layout'; import SearchComponent from '@/components/SearchComponent'; import { useRef, useState } from 'react'; import type { ActionType, ProColumns } from '@jetlinks/pro-table'; import { PermissionButton, ProTableCard } from '@/components'; import { CloseCircleOutlined, DeleteOutlined, EditOutlined, InfoCircleOutlined, PlayCircleOutlined, PlusOutlined, } from '@ant-design/icons'; import { useIntl } from '@@/plugin-locale/localeExports'; import { Badge, Space } from 'antd'; import { DuerOSItem } from '@/pages/Northbound/DuerOS/types'; import DuerOSCard from '@/components/ProTableCard/CardItems/duerOs'; import { history } from '@@/core/history'; import { getMenuPathByCode, getMenuPathByParams, MENUS_CODE } from '@/utils/menu'; import Service from './service'; import { onlyMessage } from '@/utils/util'; export const service = new Service('dueros/product'); export default () => { const actionRef = useRef(); const intl = useIntl(); const [searchParams, setSearchParams] = useState({}); const { permission } = PermissionButton.usePermission('Northbound/DuerOS'); const Tools = (record: any, type: 'card' | 'table') => { return [ { history.push(getMenuPathByParams(MENUS_CODE['Northbound/DuerOS/Detail'], record.id)); }} > {type !== 'table' && intl.formatMessage({ id: 'pages.data.option.edit', defaultMessage: '编辑', })} , { const map = { disabled: 'enable', enabled: 'disable', }; const resp = await service.changeState(record.id, map[record.state?.value]); if (resp.status === 200) { onlyMessage( intl.formatMessage({ id: 'pages.data.option.success', defaultMessage: '操作成功!', }), ); } else { onlyMessage('操作失败!', 'error'); } actionRef.current?.reload(); }, }} tooltip={{ title: intl.formatMessage({ id: `pages.data.option.${record.state?.value === 'enabled' ? 'disabled' : 'enabled'}`, defaultMessage: record.state?.value === 'enabled' ? '禁用' : '启用', }), }} > {record.state?.value === 'enabled' ? ( <> {' '} {type === 'card' && '禁用'} ) : ( <> {type === 'card' && '启用'} )} , { await service.remove(record.id); onlyMessage('删除成功!'); actionRef.current?.reload(); }, }} > , ]; }; const columns: ProColumns[] = [ { title: intl.formatMessage({ id: 'pages.table.name', defaultMessage: '名称', }), dataIndex: 'name', fixed: 'left', ellipsis: true, }, { title: intl.formatMessage({ id: 'page.cloud.duerOS.productName', defaultMessage: '产品', }), dataIndex: 'productName', hideInSearch: true, ellipsis: true, valueType: 'select', request: async () => { const res = await service.getProduct(); if (res.status === 200) { return res.result.map((pItem: any) => ({ label: pItem.name, value: pItem.id })); } return []; }, }, { title: intl.formatMessage({ id: 'pages.cloud.duerOS.applianceType', defaultMessage: '设备类型', }), dataIndex: 'applianceType', renderText: (data) => data.text, valueType: 'select', request: async () => { const res = await service.getTypes(); if (res.status === 200) { return res.result.map((pItem: any) => ({ label: pItem.name, value: pItem.id })); } return []; }, }, { title: '说明', dataIndex: 'description', hideInSearch: true, }, { title: '状态', dataIndex: 'state', width: 90, renderText: (data) => { const map = { disabled: , enabled: , }; return map[data.value]; }, valueType: 'select', valueEnum: { disabled: { text: '禁用', status: 'disabled', }, enabled: { text: '正常', status: 'enabled', }, }, }, { title: intl.formatMessage({ id: 'pages.data.option', defaultMessage: '操作', }), valueType: 'option', align: 'center', width: 200, fixed: 'right', render: (text, record) => Tools(record, 'table'), }, ]; return ( field={columns} target="northbound-dueros" onSearch={(data) => { actionRef.current?.reset?.(); setSearchParams(data); }} />
将平台产品通过API的方式同步DuerOS平台
rowKey="id" search={false} columns={columns} actionRef={actionRef} params={searchParams} scroll={{ x: 1366 }} options={{ fullScreen: true }} request={(params) => service.query({ ...params, sorts: [{ name: 'createTime', order: 'desc' }] }) } cardRender={(record) => } headerTitle={ { history.push(getMenuPathByCode(MENUS_CODE['Northbound/DuerOS/Detail'])); }} key="button" icon={} type="primary" > {intl.formatMessage({ id: 'pages.data.option.add', defaultMessage: '新增', })} } /> {/**/}
); };