虚拟仿真完成

dev
陈博文 3 years ago
parent d2cb27988f
commit 41213e1077

@ -14,8 +14,17 @@
height: 300px; height: 300px;
position: relative; position: relative;
width: 100%; width: 100%;
overflow-y: auto;
overflow-x: hidden; .list {
height: 100%;
overflow-x: hidden;
overflow-y: auto;
}
.btn {
margin: 20px;
float: right;
}
.bar { .bar {
height: 2px; height: 2px;

@ -26,7 +26,7 @@ const testData = {
cProgress: 0, cProgress: 0,
}; };
const Progress = ({ item, onFinish }: any) => { const Progress = ({ item, onFinish, start }: any) => {
const [data, setData] = useState<any>({}); const [data, setData] = useState<any>({});
const timer = useRef<any>(null); const timer = useRef<any>(null);
const dataSave = useRef<any>({}); const dataSave = useRef<any>({});
@ -35,12 +35,17 @@ const Progress = ({ item, onFinish }: any) => {
if (item.id) { if (item.id) {
dataSave.current = item; dataSave.current = item;
setData(item); setData(item);
}
}, [item.id]);
useEffect(() => {
if (start) {
recursionFun(); recursionFun();
} }
return () => { return () => {
clearTimeout(timer.current); clearTimeout(timer.current);
}; };
}, [item.id]); }, [start]);
const rand = (m: number, n: number) => { const rand = (m: number, n: number) => {
return Math.ceil(Math.random() * (n - m + 1) + m - 1); return Math.ceil(Math.random() * (n - m + 1) + m - 1);
@ -54,7 +59,7 @@ const Progress = ({ item, onFinish }: any) => {
['bText', 'bProgress'], ['bText', 'bProgress'],
['cText', 'cProgress'], ['cText', 'cProgress'],
]; ];
const arrayIndex = rand(0, 2); const arrayIndex = newItem.type > 2 ? 0 : newItem.type;
const arrayItem = array[arrayIndex]; const arrayItem = array[arrayIndex];
const dataNum = rand(5, 10); const dataNum = rand(5, 10);
let total = newItem[arrayItem[1]] + dataNum; let total = newItem[arrayItem[1]] + dataNum;
@ -65,12 +70,13 @@ const Progress = ({ item, onFinish }: any) => {
newItem[arrayItem[1]] = total; newItem[arrayItem[1]] = total;
newItem[arrayItem[0]] = '正在写入'; newItem[arrayItem[0]] = '正在写入';
} }
if (newItem.aProgress + newItem.bProgress + newItem.cProgress !== 300) { if (newItem.aProgress + newItem.bProgress + newItem.cProgress !== 100) {
timer.current = setTimeout(() => { timer.current = setTimeout(() => {
recursionFun(); recursionFun();
}, (10 - dataNum) * 1000); }, (10 - dataNum) * 1000);
} else { } else {
newItem.state = 'done'; newItem.state = 'done';
console.log(newItem, 'newItem');
onFinish(newItem); onFinish(newItem);
} }
setData(newItem); setData(newItem);
@ -125,7 +131,9 @@ const Progress = ({ item, onFinish }: any) => {
const Page = () => { const Page = () => {
const [data, setData] = useState<any>([]); const [data, setData] = useState<any>([]);
// const [disabled, setDisabled] = useState<any>([]); const [disabled, setDisabled] = useState<boolean>(false);
const [start, setStart] = useState<boolean>(false);
const [loading, setLoading] = useState<boolean>(false);
const resizeBar = useRef<any>(null); const resizeBar = useRef<any>(null);
const resizeBox = useRef<any>(null); const resizeBox = useRef<any>(null);
const iframeBox = useRef<any>(null); const iframeBox = useRef<any>(null);
@ -142,6 +150,7 @@ const Page = () => {
const getData = (e: any) => { const getData = (e: any) => {
if (e.origin === 'https://edu-xnfz.educoder.net') { if (e.origin === 'https://edu-xnfz.educoder.net') {
// alert(e.data)
let newData: any = []; let newData: any = [];
try { try {
if (e.data) { if (e.data) {
@ -164,7 +173,7 @@ const Page = () => {
}); });
} }
console.log(dataSave.current, newData, 2222); // console.log(dataSave.current, newData, 2222);
if (dataSave.current.length < newData.length) { if (dataSave.current.length < newData.length) {
const param = newData.find((e: any) => { const param = newData.find((e: any) => {
@ -238,7 +247,37 @@ const Page = () => {
} }
}, [resizeBar]); }, [resizeBar]);
const handleFinish = (v: any) => {}; const handleFinish = (v: any) => {
const newData = dataSave.current.map((e: any) => {
if (e.id === v.id) {
return { ...v };
}
return e;
});
if (newData.every((e: any) => e.state === 'done')) {
setDisabled(true);
setLoading(false);
}
setData(newData);
dataSave.current = newData;
};
const handleClick = async () => {
const deviceList = dataSave.current.map((e: any) => {
return { id: e.id, status: '1' };
});
const res = await Fetch(`/openi/device/configureDevice`, {
method: 'post',
data: {
deviceList,
},
});
if (res.result === 'success') {
setStart(true);
setLoading(true);
setDisabled(false);
}
};
return ( return (
<div className={styles.page}> <div className={styles.page}>
@ -312,11 +351,26 @@ const Page = () => {
</div> */} </div> */}
{!!data.length ? ( {!!data.length ? (
data.map((e: any) => ( data.map((e: any) => (
<Progress key={e.id} item={e} onFinish={handleFinish} /> <Progress
key={e.id}
item={e}
start={start}
onFinish={handleFinish}
/>
)) ))
) : ( ) : (
<Empty className="mt10" /> <Empty className="mt10" />
)} )}
<Button
onClick={handleClick}
loading={loading}
type="primary"
ghost
disabled={disabled || data.length === 0}
className={styles.btn}
>
</Button>
</div> </div>
</div> </div>
</div> </div>

Loading…
Cancel
Save