登录页面
This commit is contained in:
@@ -0,0 +1,71 @@
|
||||
import { useEffect, useState } from 'react';
|
||||
import { View, Text, Input } from '@tarojs/components';
|
||||
import Taro, { useRouter } from '@tarojs/taro';
|
||||
import PageShell from '../../components/PageShell';
|
||||
import SubPageHeader from '../../components/SubPageHeader';
|
||||
import { goLogin } from '../../lib/auth-nav';
|
||||
import { isLoggedIn, request, toast } from '../../lib/api';
|
||||
|
||||
type BenefitSummary = {
|
||||
totalBalance: number;
|
||||
maxRedeemAmount: number;
|
||||
};
|
||||
|
||||
export default function RedeemPage() {
|
||||
const router = useRouter();
|
||||
const initialAmount = router.params.amount ?? '';
|
||||
const [balance, setBalance] = useState(0);
|
||||
const [amount, setAmount] = useState(initialAmount);
|
||||
|
||||
useEffect(() => {
|
||||
if (!isLoggedIn()) {
|
||||
goLogin('/pages/redeem/index');
|
||||
return;
|
||||
}
|
||||
request<BenefitSummary>('/benefit/summary')
|
||||
.then((s) => setBalance(Number(s.maxRedeemAmount ?? s.totalBalance ?? 0)))
|
||||
.catch(() => {});
|
||||
}, []);
|
||||
|
||||
function submit() {
|
||||
const value = Number(amount);
|
||||
if (!(value > 0)) {
|
||||
toast('请输入核销金额');
|
||||
return;
|
||||
}
|
||||
if (value > balance && balance > 0) {
|
||||
toast('超出可用余额');
|
||||
return;
|
||||
}
|
||||
Taro.navigateTo({
|
||||
url: `/pages/redeem-code/index?amount=${value}`,
|
||||
});
|
||||
}
|
||||
|
||||
return (
|
||||
<PageShell variant="sub" className="redeem-page">
|
||||
<SubPageHeader title="权益核销" />
|
||||
<View className="sub-page-body">
|
||||
<View className="redeem-hero">
|
||||
<Text className="redeem-hero-label">可用余额</Text>
|
||||
<Text className="redeem-hero-amount">¥{balance.toFixed(2)}</Text>
|
||||
</View>
|
||||
<View className="redeem-input-wrap">
|
||||
<Input
|
||||
className="redeem-input"
|
||||
type="digit"
|
||||
placeholder="输入核销金额"
|
||||
value={amount}
|
||||
onInput={(e) => setAmount(e.detail.value)}
|
||||
/>
|
||||
</View>
|
||||
<Text className="redeem-tips">
|
||||
直接核销:金额须大于 0 且不超过全部可用权益余额。核销码有效期 3 分钟,请到店出示。
|
||||
</Text>
|
||||
<View className="redeem-submit" onClick={submit}>
|
||||
<Text>生成核销码</Text>
|
||||
</View>
|
||||
</View>
|
||||
</PageShell>
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user