Compare commits
6 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 8bee570cb2 | |||
| ed06d269c6 | |||
| 0214253b48 | |||
| afced01ba6 | |||
| 8812e5f5e3 | |||
| 01055ded02 |
@@ -32,7 +32,8 @@ export default function ProductList({
|
||||
const [q, setQ] = useState("");
|
||||
const [input, setInput] = useState("");
|
||||
const [page, setPage] = useState(1);
|
||||
const [size] = useState(20);
|
||||
const [size, setSize] = useState(20);
|
||||
const [jump, setJump] = useState("");
|
||||
const [rows, setRows] = useState<ProductRow[]>([]);
|
||||
const [total, setTotal] = useState(0);
|
||||
const [loading, setLoading] = useState(false);
|
||||
@@ -319,7 +320,25 @@ export default function ProductList({
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div className="mt-4 flex items-center justify-end gap-2 text-sm text-gray-600">
|
||||
<div className="mt-4 flex flex-wrap items-center justify-end gap-2 text-sm text-gray-600">
|
||||
<div className="mr-auto flex items-center gap-1">
|
||||
<span>每页</span>
|
||||
<select
|
||||
value={size}
|
||||
onChange={(e) => {
|
||||
setSize(Number(e.target.value));
|
||||
setPage(1);
|
||||
}}
|
||||
className="rounded border border-gray-300 px-2 py-1"
|
||||
>
|
||||
{[20, 50, 100].map((n) => (
|
||||
<option key={n} value={n}>
|
||||
{n}
|
||||
</option>
|
||||
))}
|
||||
</select>
|
||||
<span>条 · 共 {total} 条</span>
|
||||
</div>
|
||||
<button
|
||||
disabled={page <= 1}
|
||||
onClick={() => setPage((p) => p - 1)}
|
||||
@@ -337,6 +356,32 @@ export default function ProductList({
|
||||
>
|
||||
下一页
|
||||
</button>
|
||||
<form
|
||||
onSubmit={(e) => {
|
||||
e.preventDefault();
|
||||
const n = Number(jump);
|
||||
if (Number.isFinite(n) && n >= 1) {
|
||||
setPage(Math.min(Math.max(1, Math.trunc(n)), pages));
|
||||
setJump("");
|
||||
}
|
||||
}}
|
||||
className="flex items-center gap-1"
|
||||
>
|
||||
<span>跳至</span>
|
||||
<input
|
||||
value={jump}
|
||||
onChange={(e) => setJump(e.target.value.replace(/[^0-9]/g, ""))}
|
||||
placeholder={String(page)}
|
||||
className="w-14 rounded border border-gray-300 px-2 py-1 text-center"
|
||||
aria-label="跳转页码"
|
||||
/>
|
||||
<button
|
||||
type="submit"
|
||||
className="rounded border border-gray-300 px-3 py-1 hover:bg-gray-50"
|
||||
>
|
||||
前往
|
||||
</button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
|
||||
@@ -81,7 +81,7 @@ export default function App() {
|
||||
</main>
|
||||
|
||||
<footer className="border-t bg-white">
|
||||
<div className="max-w-5xl mx-auto px-4 py-4 text-xs text-gray-400 leading-relaxed">
|
||||
<div className="max-w-5xl mx-auto px-4 py-4 text-xs text-gray-400 leading-relaxed text-center">
|
||||
{qualified != null && (
|
||||
<div className="mb-2 text-gray-500">
|
||||
目前已收录
|
||||
@@ -91,8 +91,7 @@ export default function App() {
|
||||
条合格商品档案
|
||||
</div>
|
||||
)}
|
||||
天工商品档案公共仓 是公益性「商品事实库」,仅收录客观商品信息(条码、品牌、品类、营养、官方建议零售价快照等),不含任何购买/交易功能。
|
||||
公众投稿须经人工审核后方可收纳。
|
||||
天工是一个公益性商品档案库。主要收录商品名称,条码,品类,配料等官方快照。不涉及任何交易行为。
|
||||
<button onClick={() => setView({ name: "api" })} className="ml-1 text-emerald-600 hover:underline">
|
||||
API 调用说明
|
||||
</button>
|
||||
|
||||
Reference in New Issue
Block a user