iot-ui-vue/src/views/device/Instance/Detail/Diagnose/Status/ManualInspection.tsx

217 lines
12 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import AIcon from "@/components/AIcon";
import { Button, Descriptions, Modal } from "ant-design-vue"
import styles from './index.module.less'
const ManualInspection = defineComponent({
props: {
data: {
type: Object,
default: () => { }
}
},
emits: ['close', 'save'],
setup(props, { emit }) {
const { data } = props
const dataRender = () => {
if (data.type === 'device' || data.type === 'product') {
return (
<>
<div style={{ flex: 1 }}>
<div class={styles.alert}>
<span style={{ marginRight: 10 }}><AIcon type="InfoCircleOutlined" /></span>
<Button type="link" style="padding: 0"
onClick={() => {
emit('save', data)
}}
>
</Button>
</div>
<div style={{ marginTop: 10 }}>
<Descriptions title={data?.data?.name} layout="vertical" bordered>
{(data?.data?.properties || []).map((item: any) => (
<Descriptions.Item
key={item.property}
label={`${item.name}${item?.description ? `(${item.description})` : ''}`}
>
{data?.configuration[item.property] || ''}
</Descriptions.Item>
))}
</Descriptions>
</div>
</div>
{data?.data?.description ? (
<div
style={{ width: '50%', border: '1px solid #f0f0f0', padding: 10, borderLeft: 'none' }}
>
<h4></h4>
<p>{data?.data?.description}</p>
</div>
) : (
''
)}
</>
);
} else if (data.type === 'cloud') {
return (
<>
<div style={{ flex: 1 }}>
<div class={styles.alert}>
<span style={{ marginRight: 10 }}><AIcon type="InfoCircleOutlined" /></span>
<Button type="link" style="padding: 0"
onClick={() => {
emit('save', data)
}}
>
</Button>
</div>
<div style={{ marginTop: 10 }}>
<Descriptions title={data?.data?.name} layout="vertical" bordered>
{data.configuration?.provider === 'OneNet' ? (
<>
<Descriptions.Item label={'接口地址'}>
{data?.configuration?.configuration?.apiAddress || ''}
</Descriptions.Item>
<Descriptions.Item label={'apiKey'}>
{data?.configuration?.configuration?.apiKey || ''}
</Descriptions.Item>
<Descriptions.Item label={'通知Token'}>
{data?.configuration?.configuration?.validateToken || ''}
</Descriptions.Item>
<Descriptions.Item label={'aesKey'}>
{data?.configuration?.configuration?.aesKey || ''}
</Descriptions.Item>
</>
) : (
<>
<Descriptions.Item label={'接口地址'}>
{data?.configuration?.configuration?.apiAddress || ''}
</Descriptions.Item>
<Descriptions.Item label={'appKey'}>
{data?.configuration?.configuration?.appKey || ''}
</Descriptions.Item>
<Descriptions.Item label={'appSecret'}>
{data?.configuration?.configuration?.appSecret || ''}
</Descriptions.Item>
</>
)}
</Descriptions>
</div>
</div>
{data?.configuration?.configuration?.description ? (
<div
style={{ width: '50%', border: '1px solid #f0f0f0', padding: 10, borderLeft: 'none' }}
>
<h4></h4>
<p>{data?.configuration?.configuration?.description}</p>
</div>
) : (
''
)}
</>
);
} else if (data.type === 'media') {
return (
<>
<div style={{ flex: 1 }}>
<div class={styles.alert}>
<span style={{ marginRight: 10 }}><AIcon type="InfoCircleOutlined" /></span>
<Button type="link" style="padding: 0"
onClick={() => {
emit('save', data)
}}
>
</Button>
</div>
<div style={{ marginTop: 10 }}>
<Descriptions title={data?.data?.name} layout="vertical" bordered>
{data?.configuration?.configuration?.shareCluster ? (
<>
<Descriptions.Item label={'SIP 域'}>
{data?.configuration?.configuration?.domain || ''}
</Descriptions.Item>
<Descriptions.Item label={'SIP ID'}>
{data?.configuration?.configuration?.sipId || ''}
</Descriptions.Item>
<Descriptions.Item label={'集群'}>
{data?.configuration?.configuration?.shareCluster ? '共享配置' : '独立配置'}
</Descriptions.Item>
<Descriptions.Item label={'SIP 地址'}>
{`${data?.configuration?.configuration?.hostPort?.host}:${data?.configuration?.configuration?.hostPort?.port}`}
</Descriptions.Item>
<Descriptions.Item label={'公网 Host'}>
{`${data?.configuration?.configuration?.hostPort?.publicHost}:${data?.configuration?.configuration?.hostPort?.publicPort}`}
</Descriptions.Item>
</>
) : (
<>
<Descriptions.Item label={'SIP 域'}>
{data?.configuration?.configuration?.domain || ''}
</Descriptions.Item>
<Descriptions.Item label={'SIP ID'}>
{data?.configuration?.configuration?.sipId || ''}
</Descriptions.Item>
<Descriptions.Item label={'集群'}>
{data?.configuration?.configuration?.shareCluster ? '共享配置' : '独立配置'}
</Descriptions.Item>
{data?.configuration?.configuration?.cluster.map((i: any, it: number) => (
<div key={it}>
<div>{it + 1}</div>
<Descriptions.Item label={'节点名称'}>
{i?.clusterNodeId || ''}
</Descriptions.Item>
<Descriptions.Item label={'SIP 地址'}>
{`${i.host}:${i?.port}`}
</Descriptions.Item>
<Descriptions.Item label={'公网 Host'}>
{`${i?.publicHost}:${i?.publicPort}`}
</Descriptions.Item>
</div>
))}
</>
)}
</Descriptions>
</div>
</div>
{data?.configuration?.configuration.description ? (
<div
style={{ width: '50%', border: '1px solid #f0f0f0', padding: 10, borderLeft: 'none' }}
>
<h4></h4>
<p>{data?.configuration?.description}</p>
</div>
) : (
''
)}
</>
);
} else {
return null;
}
};
return () => <Modal
title="人工检查"
visible
width={1000}
cancelText="去修改"
okText="确认无误"
onOk={() => {
emit('save', data)
}}
onCancel={() => {
// TODO 跳转设备和产品
}}>
<div style={{ display: 'flex' }}>{dataRender()}</div>
</Modal>
}
})
export default ManualInspection