| 
						 | 
						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<HTMLInputElement>(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 (    <div className="mt-2 on-shelves-nft">      <Radio.Group defaultValue={defaultValue} onChange={setDefaultValue} direction="horizontal" checkedColor="#0FC6D4">        <Radio name="1">拍賣</Radio>        <Radio name="2" className="ml-2">售賣</Radio>      </Radio.Group>      <div className="mt-2 row-items">        {          symbols.map(item => (            <div key={item} className={`row-center tag ${item}-bg mr-2 ${currentSymbol === item && 'tag-active'}`} onClick={() => {              setCurrentSymbol(item)            }}>              <img src={require(`~/assets/${item}.png`)} alt="" />              <div>{item}</div>            </div>          ))        }      </div>      <div className="mt-2">        <input placeholder="請輸入上架金額" className="input" ref={amountRef} />      </div>      <div className="mtb-2">        <Button className="on-button" onClick={openModal}>上架</Button>      </div>      {/* 拍賣 */}      <Modal        width="90%"        title={data.name}        visible={visible}        setVisible={setVisible}        showConfirmButton      >        <div className="mt-2">          <div className="tac fz-wb-550">起拍價 "<span className={`${currentSymbol}-text`}>{toThousands(amountRef.current?.value || '0')}</span>" {currentSymbol}</div>          <div className="tac mt-5px fz-wb-550">每次加價 <span className={`${currentSymbol}-text`}>{currentMarkeup}%</span></div>          <div className="row-center mt-1">            {              markups.map((item, index) => (                <div key={item} className={`row-center ${index === 1 && 'mlr-3'} fz-14 auction-tag ${currentSymbol}-bg`} onClick={() => setCurrentMarkeup(item)}>+{item}%</div>              ))            }          </div>          <div className="tac mt-3 fz-wb-550">拍賣時間 "<span className={`${currentSymbol}-text`}>{currentAuctionTime}</span>" 小時</div>          <div className="row-center mt-2">            {              auctionTimes.map((item, index) => (                <div key={item} className={`row-center ${index === 1 && 'mlr-3'} fz-14 auction-tag ${currentSymbol}-bg`} onClick={() => setCurrentAuctionTime(item)}>{item}</div>              ))            }          </div>          <div className="row-center mt-3">            <Button onClick={confirmAuction} className={`markeup-button ${currentSymbol}-bg`}>確定拍賣</Button>          </div>        </div>      </Modal>      {/* 售賣 */}      <Modal        width="90%"        title={data.name}        visible={sellVisible}        setVisible={setSellVisible}        showConfirmButton      >        <div className="mt-2">          <div className="tac fz-wb-550">售價 "<span className={`${currentSymbol}-text`}>{toThousands(amountRef.current?.value || '0')}</span>" {currentSymbol}</div>
          <div className="row-center mt-3">            <Button onClick={confirmSell} className={`markeup-button ${currentSymbol}-bg`}>確定售賣</Button>          </div>        </div>      </Modal>    </div>  )}
export default OnShelvesNFT
  |