|
|
@ -8,6 +8,9 @@ import plateActive from "./plate_active.png"; |
|
|
import lot from "./lot.png"; |
|
|
import lot from "./lot.png"; |
|
|
import lotActive from "./lot_active.png"; |
|
|
import lotActive from "./lot_active.png"; |
|
|
import { post } from "../../js/helpers/data-helper"; |
|
|
import { post } from "../../js/helpers/data-helper"; |
|
|
|
|
|
import clear from "./clear.png"; |
|
|
|
|
|
import Fuse from "fuse.js"; |
|
|
|
|
|
let fuse; |
|
|
const Car = ({ lots, onLot = () => {}, plate, hasReverse }) => { |
|
|
const Car = ({ lots, onLot = () => {}, plate, hasReverse }) => { |
|
|
const [isPlate, setIsPlate] = useState(hasReverse); |
|
|
const [isPlate, setIsPlate] = useState(hasReverse); |
|
|
const [qArr, setQArr] = useState(hasReverse ? ["川", "A"] : []); |
|
|
const [qArr, setQArr] = useState(hasReverse ? ["川", "A"] : []); |
|
|
@ -15,8 +18,17 @@ const Car = ({ lots, onLot = () => {}, plate, hasReverse }) => { |
|
|
const [showKeyBoard, setShowKeyBoard] = useState(true); |
|
|
const [showKeyBoard, setShowKeyBoard] = useState(true); |
|
|
const [focusedIndex, setFocusedIndex] = useState(hasReverse ? 2 : 0); |
|
|
const [focusedIndex, setFocusedIndex] = useState(hasReverse ? 2 : 0); |
|
|
const [isNum, setIsNum] = useState(true); |
|
|
const [isNum, setIsNum] = useState(true); |
|
|
|
|
|
const [lotQ, setLotQ] = useState(""); |
|
|
|
|
|
const [filteredLots, setFilteredLots] = useState([]); |
|
|
const q = qArr.join(""); |
|
|
const q = qArr.join(""); |
|
|
const setQ = (str) => setQArr(str.split("")); |
|
|
const setQ = (str) => setQArr(str.split("")); |
|
|
|
|
|
useEffect(() => { |
|
|
|
|
|
fuse = new Fuse(lots); |
|
|
|
|
|
}, []); |
|
|
|
|
|
useEffect(() => { |
|
|
|
|
|
if (lotQ) setFilteredLots(fuse.search(lotQ).map(({ item }) => item)); |
|
|
|
|
|
else setFilteredLots([]); |
|
|
|
|
|
}, [lotQ]); |
|
|
useEffect(() => { |
|
|
useEffect(() => { |
|
|
if (!opened) { |
|
|
if (!opened) { |
|
|
setOpened(true); |
|
|
setOpened(true); |
|
|
@ -38,10 +50,11 @@ const Car = ({ lots, onLot = () => {}, plate, hasReverse }) => { |
|
|
setShowKeyBoard(true); |
|
|
setShowKeyBoard(true); |
|
|
}; |
|
|
}; |
|
|
const toLot = () => { |
|
|
const toLot = () => { |
|
|
|
|
|
setLotQ(""); |
|
|
setQ(""); |
|
|
setQ(""); |
|
|
setFocusedIndex(0); |
|
|
setFocusedIndex(0); |
|
|
setIsPlate(false); |
|
|
setIsPlate(false); |
|
|
setShowKeyBoard(true); |
|
|
|
|
|
|
|
|
setShowKeyBoard(false); |
|
|
}; |
|
|
}; |
|
|
|
|
|
|
|
|
const handleSubmit = async () => { |
|
|
const handleSubmit = async () => { |
|
|
@ -51,9 +64,9 @@ const Car = ({ lots, onLot = () => {}, plate, hasReverse }) => { |
|
|
className: "toast", |
|
|
className: "toast", |
|
|
}); |
|
|
}); |
|
|
} |
|
|
} |
|
|
const { |
|
|
|
|
|
data: { data, code, msg }, |
|
|
|
|
|
} = await post("/api/ar/v1/applet/GetCarSpace", { CarNum: q }); |
|
|
|
|
|
|
|
|
const { data, code, msg } = await post("/api/ar/v1/applet/GetCarSpace", { |
|
|
|
|
|
CarNum: q, |
|
|
|
|
|
}); |
|
|
if (code !== 200) |
|
|
if (code !== 200) |
|
|
return window.weui.toast(msg, { |
|
|
return window.weui.toast(msg, { |
|
|
className: "toast", |
|
|
className: "toast", |
|
|
@ -79,7 +92,11 @@ const Car = ({ lots, onLot = () => {}, plate, hasReverse }) => { |
|
|
<div className="car"> |
|
|
<div className="car"> |
|
|
<img className="car-img" src={car} /> |
|
|
<img className="car-img" src={car} /> |
|
|
<div className="car-modal"> |
|
|
<div className="car-modal"> |
|
|
<div className={"content" + (showKeyBoard ? " has-keyboard" : "")}> |
|
|
|
|
|
|
|
|
<div |
|
|
|
|
|
className={`content ${showKeyBoard ? "has-keyboard" : ""} ${ |
|
|
|
|
|
isPlate ? "" : "lot" |
|
|
|
|
|
}`}
|
|
|
|
|
|
> |
|
|
<div className="form"> |
|
|
<div className="form"> |
|
|
<div className="tabs"> |
|
|
<div className="tabs"> |
|
|
<div |
|
|
<div |
|
|
@ -125,41 +142,37 @@ const Car = ({ lots, onLot = () => {}, plate, hasReverse }) => { |
|
|
))} |
|
|
))} |
|
|
</div> |
|
|
</div> |
|
|
) : ( |
|
|
) : ( |
|
|
<div className="lots"> |
|
|
|
|
|
{new Array(4).fill(0).map((_, i) => ( |
|
|
|
|
|
<div |
|
|
|
|
|
className={[ |
|
|
|
|
|
"box", |
|
|
|
|
|
"big", |
|
|
|
|
|
focusedIndex === i ? "active" : "", |
|
|
|
|
|
].join(" ")} |
|
|
|
|
|
key={i} |
|
|
|
|
|
onClick={() => { |
|
|
|
|
|
setIsNum(true); |
|
|
|
|
|
setFocusedIndex(i); |
|
|
|
|
|
setShowKeyBoard(true); |
|
|
|
|
|
}} |
|
|
|
|
|
> |
|
|
|
|
|
{qArr[i]} |
|
|
|
|
|
</div> |
|
|
|
|
|
))} |
|
|
|
|
|
|
|
|
<div className="lotByInput"> |
|
|
|
|
|
<input |
|
|
|
|
|
value={lotQ} |
|
|
|
|
|
onChange={(e) => setLotQ(e.target.value)} |
|
|
|
|
|
></input> |
|
|
|
|
|
{lotQ && ( |
|
|
|
|
|
<img |
|
|
|
|
|
className="clear" |
|
|
|
|
|
alt="清除" |
|
|
|
|
|
src={clear} |
|
|
|
|
|
onClick={() => setLotQ("")} |
|
|
|
|
|
></img> |
|
|
|
|
|
)} |
|
|
|
|
|
<div className="lotList"> |
|
|
|
|
|
{filteredLots.map((lot, i) => ( |
|
|
|
|
|
<div |
|
|
|
|
|
key={lot + "__" + i} |
|
|
|
|
|
className="lot" |
|
|
|
|
|
onClick={() => onLot(lot.toUpperCase())} |
|
|
|
|
|
> |
|
|
|
|
|
{lot} |
|
|
|
|
|
</div> |
|
|
|
|
|
))} |
|
|
|
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
)} |
|
|
)} |
|
|
|
|
|
|
|
|
{!isPlate && ( |
|
|
|
|
|
<> |
|
|
|
|
|
{/* <div className="floor1" onClick={() => setFloor(floor1)}> |
|
|
|
|
|
{floor1} |
|
|
|
|
|
</div> |
|
|
|
|
|
<div className="floor2">{floor}</div> |
|
|
|
|
|
<div className="floor3" onClick={() => setFloor(floor3)}> |
|
|
|
|
|
{floor3} |
|
|
|
|
|
</div> */} |
|
|
|
|
|
</> |
|
|
|
|
|
|
|
|
{isPlate && ( |
|
|
|
|
|
<div className="btn" onClick={handleSubmit}> |
|
|
|
|
|
寻车 |
|
|
|
|
|
</div> |
|
|
)} |
|
|
)} |
|
|
<div className="btn" onClick={handleSubmit}> |
|
|
|
|
|
寻车 |
|
|
|
|
|
</div> |
|
|
|
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
|