Browse Source

测量步骤放到上面,点击开始测量按钮,按钮应当变为重新测量,点击重新测量测量步骤应当还原初始状态

feature/rail
白凤吉 5 months ago
parent
commit
7069538342
  1. 184
      src/pages/measure/components/MeasureAction.tsx

184
src/pages/measure/components/MeasureAction.tsx

@ -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>
);

Loading…
Cancel
Save