Browse Source

fix:电量ui逻辑优化

master
guoapeng 2 months ago
parent
commit
c118f859ac
  1. 1
      src/assets/power.svg
  2. 40
      src/components/CustomNavBar.scss
  3. 9
      src/components/CustomNavBar.tsx
  4. 2
      src/pages/Measure.tsx
  5. 1
      src/services/mobileWsType.ts
  6. 1
      src/store/features/contextSlice.ts

1
src/assets/power.svg

@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1749353079688" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="7537" width="48" height="48" xmlns:xlink="http://www.w3.org/1999/xlink"><path d="M467.301105 179.2821l-190.958547 373.403017h229.636774l-103.020311 291.911153 407.824207-452.827176h-255.422259l124.427129-212.486994H467.301105z" fill="#fff" p-id="7538"></path></svg>

40
src/components/CustomNavBar.scss

@ -2,19 +2,37 @@
position: relative; position: relative;
font-size: 12px; font-size: 12px;
height: 16px; height: 16px;
padding-left: 2px;
padding-right: 2px;
color: var(--primaryColor);
border: solid 1px var(--primaryColor);
border-radius: 2px;
&::after {
content: " ";
padding: 0 5px;
background: rgba(0,0,0,0.3);
color: #ffffff;
border-radius: 4px;
width: 35px;
display: flex;
align-items: center;
justify-content: center;
.bg-color {
position: absolute; position: absolute;
width: 4px;
height: 100%;
width: 50%;
left: 0;
border-radius: 4px;
z-index: 1;
background: var(--successColor);
}
.power-num{
z-index: 10;
}
img {
width: 50%;
z-index: 10;
}
.power-head {
position: absolute;
width: 2px;
height: 8px; height: 8px;
background-color: var(--primaryColor);
right: -4px;
top: 3px;
background-color: rgba(0,0,0,0.3);
right: -2px;
top: 3.5px;
border-top-right-radius: 2px; border-top-right-radius: 2px;
border-bottom-right-radius: 2px; border-bottom-right-radius: 2px;
} }

9
src/components/CustomNavBar.tsx

@ -1,5 +1,6 @@
import icon_bluetooth from '../assets/icon_bluetooth.svg'; import icon_bluetooth from '../assets/icon_bluetooth.svg';
import icon_arr_d from '../assets/icon_arr_down.svg'; import icon_arr_d from '../assets/icon_arr_down.svg';
import power_icon from '../assets/power.svg';
import './CustomNavBar.scss'; import './CustomNavBar.scss';
import { useState } from 'react'; import { useState } from 'react';
import { useAppSelector } from '../utils/hooks'; import { useAppSelector } from '../utils/hooks';
@ -30,7 +31,6 @@ export default function CustomNavBar({ title }: { title: string }) {
className="ml-auto flex items-center cursor-pointer" className="ml-auto flex items-center cursor-pointer"
onClick={() => setShowDetail(!showDetail)} onClick={() => setShowDetail(!showDetail)}
> >
<div className="bluetooth-battery flex justify-center items-center">{device.power}%</div>
<img src={icon_bluetooth} alt="icon" className="mx-2" /> <img src={icon_bluetooth} alt="icon" className="mx-2" />
<span></span> <span></span>
<img <img
@ -41,6 +41,13 @@ export default function CustomNavBar({ title }: { title: string }) {
transition: 'transform 300ms', transition: 'transform 300ms',
}} }}
/> />
<div className="bluetooth-battery">
<div className="bg-color" style={{ width: `${device.power}%`, backgroundColor: device.flag ? '#1dbb1d' : device.power > 20 ? '#3e63cb' : 'red' }}></div>
<div className={'power-head'} style={{ backgroundColor: device.flag ? '#1dbb1d' : device.power > 20 ? '#3e63cb' : 'red' }}></div>
<span className="power-num">{device.power}</span>
{device.flag === 1 && <img src={power_icon} alt=""/>}
</div>
</div> </div>
) : ( ) : (
<div <div

2
src/pages/Measure.tsx

@ -282,7 +282,7 @@ export default function Measure() {
right_end: 'none', right_end: 'none',
}); });
} }
});
}, [measureState.taskState, status]);
function railName() { function railName() {
return baseState.railTypes.find((r) => r.id === railId[0])?.name || ''; return baseState.railTypes.find((r) => r.id === railId[0])?.name || '';

1
src/services/mobileWsType.ts

@ -1,6 +1,7 @@
export type PeripheralStatus = { export type PeripheralStatus = {
type: 'peripheral-status'; type: 'peripheral-status';
data: { data: {
flag:0 | 1;
connected: boolean; connected: boolean;
power: number; power: number;
inclinatorX: number; inclinatorX: number;

1
src/store/features/contextSlice.ts

@ -33,6 +33,7 @@ if (orgGwdXmStr) {
const initialState: ContextState = { const initialState: ContextState = {
device: { device: {
flag: 0,
connected: true, //是否已连接蓝牙 connected: true, //是否已连接蓝牙
power: 60, //电量 power: 60, //电量
inclinatorX: 0.276, //x轴倾斜 inclinatorX: 0.276, //x轴倾斜

Loading…
Cancel
Save