|
|
@ -29,24 +29,66 @@ export default function MeasureAction() { |
|
|
|
|
|
|
|
const [angles, setAngles] = useState<AnalyzeAngle[]>([]); |
|
|
|
const [taskStatus, setTaskStatus] = useState<MeasureState["data"]["taskStatus"]>("IDLE"); |
|
|
|
const [startBtnText, setStartBtnText] = useState("开始测量"); |
|
|
|
|
|
|
|
const initialStatusList = [ |
|
|
|
{ |
|
|
|
statusCode: 'START_RECORD_LEFT', |
|
|
|
name: '请移动到顶部,停顿2秒', |
|
|
|
background: '#ececec', |
|
|
|
isReady: false, |
|
|
|
color: 'h' |
|
|
|
}, |
|
|
|
{ |
|
|
|
statusCode: 'START_RECORD_LEFT', |
|
|
|
name: '开始测量左侧', |
|
|
|
background: '#ececec', |
|
|
|
isReady: false, |
|
|
|
color: 'h' |
|
|
|
}, |
|
|
|
{ |
|
|
|
statusCode: 'START_RECORD_LEFT', |
|
|
|
name: '左测测量完成', |
|
|
|
background: '#ececec', |
|
|
|
isReady: false, |
|
|
|
color: 'h' |
|
|
|
}, |
|
|
|
{ |
|
|
|
statusCode: 'START_RECORD_LEFT', |
|
|
|
name: '请移动到顶部,停顿2秒', |
|
|
|
background: '#ececec', |
|
|
|
isReady: false, |
|
|
|
color: 'h' |
|
|
|
}, |
|
|
|
{ |
|
|
|
statusCode: 'START_RECORD_LEFT', |
|
|
|
name: '开始测量右侧', |
|
|
|
background: '#ececec', |
|
|
|
isReady: false, |
|
|
|
color: 'h' |
|
|
|
}, |
|
|
|
{ |
|
|
|
statusCode: 'START_RECORD_LEFT', |
|
|
|
name: '右侧测量完成', |
|
|
|
background: '#ececec', |
|
|
|
isReady: false, |
|
|
|
color: 'h' |
|
|
|
} |
|
|
|
]; |
|
|
|
let [statusList, setStatusList] = useState(initialStatusList); |
|
|
|
|
|
|
|
const onAfterSaveChange: CheckboxProps["onChange"] = e => { |
|
|
|
dispatch(switchMeasureAfterSave(e.target.checked)); |
|
|
|
}; |
|
|
|
const onAnalysisBtnClick = () => { |
|
|
|
// navigate("../detail");
|
|
|
|
// if(taskStatus !== 'FINISHED'){
|
|
|
|
// message.error('测量还未结束')
|
|
|
|
// return;
|
|
|
|
// }
|
|
|
|
const params = {//静态数据 TODO
|
|
|
|
const params = { |
|
|
|
code: 6001 |
|
|
|
} |
|
|
|
analysisReport(params).then(res => { |
|
|
|
console.log('res===', res) |
|
|
|
if (res.success) { |
|
|
|
const angleAnalysisList = res.data.angleAnalysisList; |
|
|
|
let angles:any = [] |
|
|
|
let angles: any = [] |
|
|
|
angleAnalysisList && angleAnalysisList.map(item => { |
|
|
|
const pointA = item.pointA; |
|
|
|
angles.push({ |
|
|
@ -57,31 +99,28 @@ export default function MeasureAction() { |
|
|
|
}) |
|
|
|
}) |
|
|
|
setAngles(angles); |
|
|
|
}else{ |
|
|
|
|
|
|
|
} else { |
|
|
|
} |
|
|
|
}) |
|
|
|
// analyzeMeasurement().then(res => {
|
|
|
|
// if (res.success) {
|
|
|
|
// setAngles(res.data.angles);
|
|
|
|
// } else {
|
|
|
|
// message.error(res.data.info);
|
|
|
|
// }
|
|
|
|
// });
|
|
|
|
}; |
|
|
|
|
|
|
|
const onStart = () => { |
|
|
|
if (startBtnText === "重新测量") { |
|
|
|
setStatusList(initialStatusList); |
|
|
|
} |
|
|
|
startMeasurement().then(res => { |
|
|
|
if (res.status !== 0) { |
|
|
|
message.error(res.data.info); |
|
|
|
let name = taskStatusDescMap['IDLE'] |
|
|
|
setTaskStatusName(name) |
|
|
|
} else { |
|
|
|
statusList[0].color = 'b'; |
|
|
|
setStatusList(statusList) |
|
|
|
const newStatusList = [...initialStatusList]; |
|
|
|
newStatusList[0].color = 'b'; |
|
|
|
setStatusList(newStatusList); |
|
|
|
message.success("已通知设备开始测量"); |
|
|
|
let name = taskStatusDescMap['IDLE'] |
|
|
|
setTaskStatusName(name) |
|
|
|
setStartBtnText("重新测量") |
|
|
|
} |
|
|
|
}); |
|
|
|
}; |
|
|
@ -103,36 +142,36 @@ export default function MeasureAction() { |
|
|
|
useEffect(() => { |
|
|
|
const subscription = wsClient.dataOb.subscribe(data => { |
|
|
|
if (data.messageType === "STATE" && data.path === "/measurement-task/get-task-state") { |
|
|
|
if(!data.data)return; |
|
|
|
if(data.data.isMeasuringLeftEnd && !data.data.isMeasuringRightEnd){ |
|
|
|
console.log('这是右侧的状态===', data.data.isMeasuringRightEnd) |
|
|
|
if (!data.data) return; |
|
|
|
if (data.data.isMeasuringLeftEnd && !data.data.isMeasuringRightEnd) { |
|
|
|
console.log('这是右侧的状态===', data.data.isMeasuringRightEnd) |
|
|
|
} |
|
|
|
if(data.data.taskStatus === 'IDLE'){ |
|
|
|
if (data.data.taskStatus === 'IDLE') { |
|
|
|
setTaskStatusName('空闲') |
|
|
|
}else if(!data.data.isMeasuringLeftEnd){//正在测量左边
|
|
|
|
} else if (!data.data.isMeasuringLeftEnd) { |
|
|
|
setTaskStatusName('左侧正在测量') |
|
|
|
statusList[0].isReady = true; |
|
|
|
setStatusList(statusList) |
|
|
|
}else if(data.data.isMeasuringLeftEnd && !data.data.isMeasuringRightEnd){//左边为true, 右边是false时表示左边已完成,右边准备
|
|
|
|
} else if (data.data.isMeasuringLeftEnd && !data.data.isMeasuringRightEnd) { |
|
|
|
setTaskStatusName('右侧正在测量') |
|
|
|
}else{ |
|
|
|
} else { |
|
|
|
let name = taskStatusDescMap[data.data.taskStatus] |
|
|
|
setTaskStatusName(name) |
|
|
|
} |
|
|
|
setTaskStatus(data.data.taskStatus) |
|
|
|
} |
|
|
|
if (data.messageType === "EVENT" && data.path === "/measurement-task/event") { |
|
|
|
if(data.data === "START_RECORD_LEFT"){ |
|
|
|
if (data.data === "START_RECORD_LEFT") { |
|
|
|
statusList[0].color = 'g'; |
|
|
|
statusList[1].color = 'b'; |
|
|
|
}else if(data.data === "FINISH_RECORD_LEFT"){ |
|
|
|
} else if (data.data === "FINISH_RECORD_LEFT") { |
|
|
|
statusList[1].color = 'g'; |
|
|
|
statusList[2].color = 'g'; |
|
|
|
statusList[3].color = 'b'; |
|
|
|
}else if(data.data === "START_RECORD_RIGHT"){ |
|
|
|
} else if (data.data === "START_RECORD_RIGHT") { |
|
|
|
statusList[3].color = 'g'; |
|
|
|
statusList[4].color = 'b'; |
|
|
|
}else if(data.data === "FINISH_RECORD_RIGHT"){ |
|
|
|
} else if (data.data === "FINISH_RECORD_RIGHT") { |
|
|
|
statusList[4].color = 'g'; |
|
|
|
statusList[5].color = 'g'; |
|
|
|
} |
|
|
@ -147,65 +186,27 @@ export default function MeasureAction() { |
|
|
|
statusCode: string; |
|
|
|
name: string; |
|
|
|
background: string; |
|
|
|
isReady:boolean; |
|
|
|
isReady: boolean; |
|
|
|
color: string; |
|
|
|
} |
|
|
|
const onHandleChangeStatus = (item:StatusCodeData) => { |
|
|
|
const onHandleChangeStatus = (item: StatusCodeData) => { |
|
|
|
let backgroundColor = '' |
|
|
|
if(item.statusCode === 'START_RECORD_LEFT'){ |
|
|
|
if (item.statusCode === 'START_RECORD_LEFT') { |
|
|
|
backgroundColor = item.background |
|
|
|
} |
|
|
|
return backgroundColor; |
|
|
|
} |
|
|
|
|
|
|
|
const onHandleIcon =(item:StatusCodeData, index:number)=>{ |
|
|
|
if(item.color === 'g'){ |
|
|
|
return <img src={Gr_round} alt=''/> |
|
|
|
}else if(item.color === 'b'){//index > 0 && statusList[index-1].isReady
|
|
|
|
return <img src={Bl_round} alt=''/> |
|
|
|
}else if(item.color === 'h'){ |
|
|
|
return <div style={{width:'22px',height:'22px',background:'#c0c0c0',borderRadius:"50%",marginTop:'10px'}}></div> |
|
|
|
const onHandleIcon = (item: StatusCodeData, index: number) => { |
|
|
|
if (item.color === 'g') { |
|
|
|
return <img src={Gr_round} alt='' /> |
|
|
|
} else if (item.color === 'b') { |
|
|
|
return <img src={Bl_round} alt='' /> |
|
|
|
} else if (item.color === 'h') { |
|
|
|
return <div style={{ width: '22px', height: '22px', background: '#c0c0c0', borderRadius: "50%", marginTop: '10px' }}></div> |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
let [statusList,setStatusList] = useState([{ |
|
|
|
statusCode: 'START_RECORD_LEFT', |
|
|
|
name:'请移动到顶部,停顿2秒', |
|
|
|
background:'#ececec', |
|
|
|
isReady:false, |
|
|
|
color:'h' |
|
|
|
},{ |
|
|
|
statusCode: 'START_RECORD_LEFT', |
|
|
|
name:'开始测量左侧', |
|
|
|
background:'#ececec', |
|
|
|
isReady:false, |
|
|
|
color:'h' |
|
|
|
},{ |
|
|
|
statusCode: 'START_RECORD_LEFT', |
|
|
|
name:'左测测量完成', |
|
|
|
background:'#ececec', |
|
|
|
isReady:false, |
|
|
|
color:'h' |
|
|
|
},{ |
|
|
|
statusCode: 'START_RECORD_LEFT', |
|
|
|
name:'请移动到顶部,停顿2秒', |
|
|
|
background:'#ececec', |
|
|
|
isReady:false, |
|
|
|
color:'h' |
|
|
|
},{ |
|
|
|
statusCode: 'START_RECORD_LEFT', |
|
|
|
name:'开始测量右侧', |
|
|
|
background:'#ececec', |
|
|
|
isReady:false, |
|
|
|
color:'h' |
|
|
|
},{ |
|
|
|
statusCode: 'START_RECORD_LEFT', |
|
|
|
name:'右侧测量完成', |
|
|
|
background:'#ececec', |
|
|
|
isReady:false, |
|
|
|
color:'h' |
|
|
|
}]) |
|
|
|
|
|
|
|
return ( |
|
|
|
<div className="flex h-full "> |
|
|
|
<div className="flex-none"> |
|
|
@ -218,10 +219,6 @@ export default function MeasureAction() { |
|
|
|
<Switch defaultChecked onChange={checked => setShowStandard(checked)} /> |
|
|
|
<span>标准线</span> |
|
|
|
</div> |
|
|
|
{/*<div className="flex gap-2 items-center">*/} |
|
|
|
{/* <Switch defaultChecked onChange={checked => setShowResult(checked)} />*/} |
|
|
|
{/* <span>对比线</span>*/} |
|
|
|
{/*</div>*/} |
|
|
|
{angles.length > 0 && ( |
|
|
|
<div className="flex gap-2 items-center"> |
|
|
|
<Switch defaultChecked onChange={checked => setShowMark(checked)} /> |
|
|
@ -290,9 +287,9 @@ export default function MeasureAction() { |
|
|
|
<div className="w-[300px] flex-none py-6"> |
|
|
|
<h1 className="font-medium text-xl text-center">测量步骤</h1> |
|
|
|
<div className="ml-[45px] w-[13rem] mt-5"> |
|
|
|
{statusList && statusList.map((item,index) => { |
|
|
|
return <div style={{background:onHandleChangeStatus(item),borderRadius:"20px"}} className="mt-[10px] h-[40px]"> |
|
|
|
<div style={{display:'flex',lineHeight:'40px'}} className="pl-[1rem]"> |
|
|
|
{statusList && statusList.map((item, index) => { |
|
|
|
return <div style={{ background: onHandleChangeStatus(item), borderRadius: "20px" }} className="mt-[10px] h-[40px]"> |
|
|
|
<div style={{ display: 'flex', lineHeight: '40px' }} className="pl-[1rem]"> |
|
|
|
{onHandleIcon(item, index)} |
|
|
|
<div className="pl-[5px]">{item.name}</div> |
|
|
|
</div> |
|
|
@ -300,24 +297,8 @@ export default function MeasureAction() { |
|
|
|
})} |
|
|
|
</div> |
|
|
|
<section className="flex flex-col items-center gap-4 mt-6 border-t border-[#D8D8D8] py-4"> |
|
|
|
{/* <div>测量状态: {taskStatusDescMap[taskStatus]}</div> */} |
|
|
|
{/* <div className="w-[200px]"> |
|
|
|
{taskStatus !== 'FINISHED' && |
|
|
|
<div className="flex"> |
|
|
|
<img src={Gr_round} alt=''/> |
|
|
|
<div className="ml-[2rem]">{taskStatusName}</div> |
|
|
|
</div> |
|
|
|
} |
|
|
|
{ |
|
|
|
taskStatus === 'FINISHED' && |
|
|
|
<div className="flex mt-[10px]"> |
|
|
|
<img src={Bl_round} alt=''/> |
|
|
|
<div className="ml-[2rem]">{taskStatusName}</div> |
|
|
|
</div> |
|
|
|
} |
|
|
|
</div> */} |
|
|
|
<Button style={{ width: 200 }} size="large" type="primary" onClick={onStart}> |
|
|
|
开始测量 |
|
|
|
{startBtnText} |
|
|
|
</Button> |
|
|
|
<Button style={{ width: 200 }} size="large" type="primary" onClick={onAnalysisBtnClick}> |
|
|
|
分析 |
|
|
@ -329,7 +310,6 @@ export default function MeasureAction() { |
|
|
|
保存后自动开始新测量 |
|
|
|
</Checkbox> |
|
|
|
</section> |
|
|
|
|
|
|
|
</div> |
|
|
|
</div> |
|
|
|
); |
|
|
|