|
|
@@ -80,6 +80,11 @@ const Status = observer((props: Props) => {
|
|
|
const [diagnoseData, setDiagnoseData] = useState<any>({});
|
|
|
const [artificiaData, setArtificiaData] = useState<any>({});
|
|
|
|
|
|
+ const [productTemp, setProductTemp] = useState<any[]>([]);
|
|
|
+ const [deviceTemp, setDeviceTemp] = useState<any[]>([]);
|
|
|
+ const [gatewayTemp, setGatewayTemp] = useState<any>({});
|
|
|
+ const [productItem, setProductItem] = useState<any>({});
|
|
|
+
|
|
|
const getDetail = (id: string) => {
|
|
|
service.detail(id).then((response) => {
|
|
|
InstanceModel.detail = response?.result;
|
|
|
@@ -91,6 +96,7 @@ const Status = observer((props: Props) => {
|
|
|
let data: any = {};
|
|
|
if (InstanceModel.detail.state?.value === 'online' || !!InstanceModel.detail?.protocol) {
|
|
|
data = { status: 'success', text: '正常', info: null };
|
|
|
+ DiagnoseStatusModel.status = { ...DiagnoseStatusModel.status };
|
|
|
} else {
|
|
|
data = {
|
|
|
status: 'warning',
|
|
|
@@ -142,6 +148,7 @@ const Status = observer((props: Props) => {
|
|
|
if (InstanceModel.detail.state?.value === 'online') {
|
|
|
data = { status: 'success', text: '正常', info: null };
|
|
|
DiagnoseStatusModel.status.network = data;
|
|
|
+ DiagnoseStatusModel.status = { ...DiagnoseStatusModel.status };
|
|
|
setTimeout(
|
|
|
() =>
|
|
|
resolve({
|
|
|
@@ -154,6 +161,7 @@ const Status = observer((props: Props) => {
|
|
|
} else {
|
|
|
service.queryProductState(InstanceModel.detail?.productId || '').then((resp) => {
|
|
|
if (resp.status === 200) {
|
|
|
+ setProductItem(resp.result);
|
|
|
if (resp.result.accessId) {
|
|
|
service.queryGatewayState(resp.result.accessId).then((response: any) => {
|
|
|
if (response.status === 200) {
|
|
|
@@ -242,6 +250,7 @@ const Status = observer((props: Props) => {
|
|
|
};
|
|
|
}
|
|
|
DiagnoseStatusModel.status.network = data;
|
|
|
+ DiagnoseStatusModel.status = { ...DiagnoseStatusModel.status };
|
|
|
setTimeout(
|
|
|
() =>
|
|
|
resolve({
|
|
|
@@ -330,6 +339,7 @@ const Status = observer((props: Props) => {
|
|
|
text: '正常',
|
|
|
info: null,
|
|
|
};
|
|
|
+ DiagnoseStatusModel.status = { ...DiagnoseStatusModel.status };
|
|
|
}
|
|
|
}}
|
|
|
>
|
|
|
@@ -384,6 +394,7 @@ const Status = observer((props: Props) => {
|
|
|
info: null,
|
|
|
};
|
|
|
getDetail(InstanceModel.detail?.id || '');
|
|
|
+ DiagnoseStatusModel.status = { ...DiagnoseStatusModel.status };
|
|
|
}
|
|
|
}}
|
|
|
>
|
|
|
@@ -414,6 +425,7 @@ const Status = observer((props: Props) => {
|
|
|
} else {
|
|
|
service.queryProductConfig(proItem.id).then((resp) => {
|
|
|
if (resp.status === 200) {
|
|
|
+ setProductTemp(resp?.result);
|
|
|
if (resp.result.length > 0) {
|
|
|
resp.result.map((item: any, index: number) => {
|
|
|
let data: any = {};
|
|
|
@@ -475,6 +487,7 @@ const Status = observer((props: Props) => {
|
|
|
} else {
|
|
|
service.queryDeviceConfig(InstanceModel.detail?.id || '').then((resp) => {
|
|
|
if (resp.status === 200) {
|
|
|
+ setDeviceTemp(resp.result);
|
|
|
if (resp.result.length > 0) {
|
|
|
resp.result.map((item: any, index: number) => {
|
|
|
let data: any = {};
|
|
|
@@ -557,6 +570,7 @@ const Status = observer((props: Props) => {
|
|
|
text: '正常',
|
|
|
info: null,
|
|
|
};
|
|
|
+ DiagnoseStatusModel.status = { ...DiagnoseStatusModel.status };
|
|
|
}
|
|
|
}}
|
|
|
>
|
|
|
@@ -607,68 +621,26 @@ const Status = observer((props: Props) => {
|
|
|
|
|
|
let product: any = null;
|
|
|
let gateway: any = null;
|
|
|
- let productauth: any = null;
|
|
|
- let deviceauth: any = null;
|
|
|
diagnoseConfig()
|
|
|
.then(() => diagnoseNetwork())
|
|
|
.then((resp: any) => {
|
|
|
product = resp?.product;
|
|
|
gateway = resp?.gatewayDetail;
|
|
|
+ setGatewayTemp(resp?.gatewayDetail);
|
|
|
diagnoseProduct(product)
|
|
|
.then(() => diagnoseDevice())
|
|
|
.then(() => diagnoseProductAuthConfig(product))
|
|
|
- .then((res) => {
|
|
|
- productauth = res;
|
|
|
- diagnoseDeviceAuthConfig().then((dt) => {
|
|
|
- deviceauth = dt;
|
|
|
+ .then(() => {
|
|
|
+ diagnoseDeviceAuthConfig().then(() => {
|
|
|
diagnoseDeviceAccess(gateway).then(() => {
|
|
|
- if (InstanceModel.detail.state?.value === 'online') {
|
|
|
- const a = Object.keys(DiagnoseStatusModel.status).find((item: any) => {
|
|
|
- return item.status !== 'success';
|
|
|
- });
|
|
|
- if (!!a) {
|
|
|
- Store.set('diagnose-status', {
|
|
|
- list: DiagnoseStatusModel.list,
|
|
|
- status: DiagnoseStatusModel.status,
|
|
|
- });
|
|
|
- props.onChange('success');
|
|
|
- } else {
|
|
|
- props.onChange('error');
|
|
|
- }
|
|
|
+ if (InstanceModel.detail.state?.value !== 'online') {
|
|
|
+ props.onChange('error');
|
|
|
} else {
|
|
|
- const data = { ...DiagnoseStatusModel.status };
|
|
|
- const flag = Object.keys(data).find((item: any) => {
|
|
|
- return item.status !== 'success';
|
|
|
+ Store.set('diagnose-status', {
|
|
|
+ list: DiagnoseStatusModel.list,
|
|
|
+ status: DiagnoseStatusModel.status,
|
|
|
});
|
|
|
- if (!flag) {
|
|
|
- // 展示诊断建议
|
|
|
- if (
|
|
|
- gateway.provider !== 'mqtt-server-gateway' &&
|
|
|
- gatewayList.includes(gateway.provider)
|
|
|
- ) {
|
|
|
- service
|
|
|
- .queryProcotolDetail(gateway.provider, gateway.transport)
|
|
|
- .then((resp1) => {
|
|
|
- setDiagnoseData({
|
|
|
- product: productauth,
|
|
|
- device: deviceauth,
|
|
|
- id: product.id,
|
|
|
- provider: gateway.provider,
|
|
|
- routes: resp1.result?.routes || [],
|
|
|
- });
|
|
|
- setDiagnoseVisible(true);
|
|
|
- });
|
|
|
- } else {
|
|
|
- setDiagnoseData({
|
|
|
- product: productauth,
|
|
|
- device: deviceauth,
|
|
|
- id: product.id,
|
|
|
- provider: '',
|
|
|
- routes: [],
|
|
|
- });
|
|
|
- setDiagnoseVisible(true);
|
|
|
- }
|
|
|
- }
|
|
|
+ props.onChange('success');
|
|
|
}
|
|
|
});
|
|
|
});
|
|
|
@@ -689,6 +661,40 @@ const Status = observer((props: Props) => {
|
|
|
}
|
|
|
}, [devicePermission]);
|
|
|
|
|
|
+ useEffect(() => {
|
|
|
+ const data = { ...DiagnoseStatusModel.status };
|
|
|
+ const flag = Object.keys(data).every((item: any) => {
|
|
|
+ return data[item]?.status === 'success';
|
|
|
+ });
|
|
|
+ if (flag && InstanceModel.detail.state?.value !== 'online') {
|
|
|
+ // 展示诊断建议
|
|
|
+ if (
|
|
|
+ gatewayTemp.provider !== 'mqtt-server-gateway' &&
|
|
|
+ gatewayList.includes(gatewayTemp.provider)
|
|
|
+ ) {
|
|
|
+ service.queryProcotolDetail(gatewayTemp.provider, gatewayTemp.transport).then((resp1) => {
|
|
|
+ setDiagnoseData({
|
|
|
+ product: productTemp,
|
|
|
+ device: deviceTemp,
|
|
|
+ id: productItem.id,
|
|
|
+ provider: gatewayTemp.provider,
|
|
|
+ routes: resp1.result?.routes || [],
|
|
|
+ });
|
|
|
+ setDiagnoseVisible(true);
|
|
|
+ });
|
|
|
+ } else {
|
|
|
+ setDiagnoseData({
|
|
|
+ product: productTemp,
|
|
|
+ device: deviceTemp,
|
|
|
+ id: productItem.i,
|
|
|
+ provider: gatewayTemp?.provider,
|
|
|
+ routes: [],
|
|
|
+ });
|
|
|
+ setDiagnoseVisible(true);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }, [DiagnoseStatusModel.status]);
|
|
|
+
|
|
|
return (
|
|
|
<Row gutter={24}>
|
|
|
<Col span={16}>
|
|
|
@@ -762,6 +768,7 @@ const Status = observer((props: Props) => {
|
|
|
text: '正常',
|
|
|
info: null,
|
|
|
};
|
|
|
+ DiagnoseStatusModel.status = { ...DiagnoseStatusModel.status };
|
|
|
} else {
|
|
|
DiagnoseStatusModel.status[params.data.key] = {
|
|
|
status: 'error',
|
|
|
@@ -783,7 +790,8 @@ const Status = observer((props: Props) => {
|
|
|
const tab: any = window.open(`${origin}/#${url}?key=access`);
|
|
|
tab!.onTabSaveSuccess = (value: any) => {
|
|
|
if (value) {
|
|
|
- diagnoseConfig();
|
|
|
+ getDetail(InstanceModel.detail?.id || '');
|
|
|
+ handleSearch();
|
|
|
}
|
|
|
};
|
|
|
}}
|