import { useMemo, useRef, useState } from "react" import { Button, Radio, Toast } from "react-vant" import { MarketNFTData } from "~/types/store" import '~/styles/detail.scss' import Modal from "~/components/Modal" import { toThousands } from "~/utils" import { shelves_nft } from "~/api" import store from "~/store" import { useRouter } from "~/hooks/useRouter" interface OnShelvesNFTProps { data: MarketNFTData } const OnShelvesNFT = (props: OnShelvesNFTProps) => { const { data } = props const { push } = useRouter() const [defaultValue, setDefaultValue] = useState("") //1.拍賣 2.售賣 const symbols = useMemo(() => ['FIL', 'USDT'], []) const markups = useMemo(() => [1, 5, 10], []) // 拍賣加價 const auctionTimes = useMemo(() => [24, 48, 72], []) // 拍賣時間 const [currentMarkeup, setCurrentMarkeup] = useState(5) //當前拍賣加價 const [currentSymbol, setCurrentSymbol] = useState('') //當前代筆 const [currentAuctionTime, setCurrentAuctionTime] = useState(24) //當前拍賣時間 const [visible, setVisible] = useState(false)//拍賣 const [sellVisible, setSellVisible] = useState(false)//售賣 const amountRef = useRef(null) const openModal = () => { if (!store.state.token) return store.setVisibleUnLogin(true) if (!defaultValue) return Toast.fail('請選擇拍賣或售賣') if (!currentSymbol) return Toast.fail('請選擇代筆') if (!amountRef.current!.value) return Toast.fail('請輸入上架金額'); if (defaultValue === "1") return setVisible(true) setSellVisible(true) } // 確認拍賣 const confirmAuction = async () => { setVisible(false) const params = { id: data.id, amount: amountRef.current?.value, symbol: currentSymbol, mark: currentMarkeup, time: currentAuctionTime, type: Number(defaultValue) } const res: any = await shelves_nft(params) if (res && res.code === 0) { Toast.success('上架成功') store.getMarketNft("auctionNft") store.getMyNft("myNft"); store.getUserInfo() push(-1) } } // 確認售賣 const confirmSell = async () => { setSellVisible(false) const params = { id: data.id, amount: amountRef.current?.value, symbol: currentSymbol, type: Number(defaultValue) } const res: any = await shelves_nft(params) if (res && res.code === 0) { Toast.success('上架成功') store.getMarketNft("sellNft") store.getMyNft("myNft"); store.getUserInfo() push(-1) } } return (
拍賣 售賣
{ symbols.map(item => (
{ setCurrentSymbol(item) }}>
{item}
)) }
{/* 拍賣 */}
起拍價 "{toThousands(amountRef.current?.value || '0')}" {currentSymbol}
每次加價 {currentMarkeup}%
{ markups.map((item, index) => (
setCurrentMarkeup(item)}>+{item}%
)) }
拍賣時間 "{currentAuctionTime}" 小時
{ auctionTimes.map((item, index) => (
setCurrentAuctionTime(item)}>{item}
)) }
{/* 售賣 */}
售價 "{toThousands(amountRef.current?.value || '0')}" {currentSymbol}
) } export default OnShelvesNFT