Переглянути джерело

update

reset-do-picking-order
CANCERYS\kw093 2 тижднів тому
джерело
коміт
fb271f9209
1 змінених файлів з 41 додано та 31 видалено
  1. +41
    -31
      src/components/StockTakeManagement/PickerCardList.tsx

+ 41
- 31
src/components/StockTakeManagement/PickerCardList.tsx Переглянути файл

@@ -26,6 +26,7 @@ import {
getStockTakeRecords,
AllPickedStockTakeListReponse,
createStockTakeForSections,
getStockTakeRecordsPaged,
} from "@/app/api/stockTake/actions";
import dayjs from "dayjs";
import { OUTPUT_DATE_FORMAT } from "@/app/utils/formatUtil";
@@ -45,28 +46,35 @@ const PickerCardList: React.FC<PickerCardListProps> = ({ onCardClick, onReStockT
const [loading, setLoading] = useState(false);
const [stockTakeSessions, setStockTakeSessions] = useState<AllPickedStockTakeListReponse[]>([]);
const [page, setPage] = useState(0);
const [pageSize, setPageSize] = useState(6); // 每页 6 条
const [total, setTotal] = useState(0);
const [creating, setCreating] = useState(false);
const [openConfirmDialog, setOpenConfirmDialog] = useState(false);
const fetchStockTakeSessions = useCallback(async () => {
setLoading(true);
try {
const data = await getStockTakeRecords();
setStockTakeSessions(Array.isArray(data) ? data : []);
setPage(0);
} catch (e) {
console.error(e);
setStockTakeSessions([]);
} finally {
setLoading(false);
}
}, []);
const fetchStockTakeSessions = useCallback(
async (pageNum: number, size: number) => {
setLoading(true);
try {
const res = await getStockTakeRecordsPaged(pageNum, size);
setStockTakeSessions(Array.isArray(res.records) ? res.records : []);
setTotal(res.total || 0);
setPage(pageNum);
} catch (e) {
console.error(e);
setStockTakeSessions([]);
setTotal(0);
} finally {
setLoading(false);
}
},
[]
);

useEffect(() => {
fetchStockTakeSessions();
}, [fetchStockTakeSessions]);
fetchStockTakeSessions(0, pageSize);
}, [fetchStockTakeSessions, pageSize]);

const startIdx = page * PER_PAGE;
const paged = stockTakeSessions.slice(startIdx, startIdx + PER_PAGE);
//const startIdx = page * PER_PAGE;
//const paged = stockTakeSessions.slice(startIdx, startIdx + PER_PAGE);
const handleCreateStockTake = useCallback(async () => {
setOpenConfirmDialog(false);
@@ -84,7 +92,7 @@ const PickerCardList: React.FC<PickerCardListProps> = ({ onCardClick, onReStockT
console.log(message);
await fetchStockTakeSessions();
await fetchStockTakeSessions(0, pageSize);
} catch (e) {
console.error(e);
} finally {
@@ -201,12 +209,12 @@ const PickerCardList: React.FC<PickerCardListProps> = ({ onCardClick, onReStockT
</Box>

<Grid container spacing={2}>
{paged.map((session) => {
const statusColor = getStatusColor(session.status || "");
const lastStockTakeDate = session.lastStockTakeDate
? dayjs(session.lastStockTakeDate).format(OUTPUT_DATE_FORMAT)
: "-";
const completionRate = getCompletionRate(session);
{stockTakeSessions.map((session: AllPickedStockTakeListReponse) => {
const statusColor = getStatusColor(session.status || "");
const lastStockTakeDate = session.lastStockTakeDate
? dayjs(session.lastStockTakeDate).format(OUTPUT_DATE_FORMAT)
: "-";
const completionRate = getCompletionRate(session);

return (
<Grid key={session.id} item xs={12} sm={6} md={4}>
@@ -271,13 +279,15 @@ const PickerCardList: React.FC<PickerCardListProps> = ({ onCardClick, onReStockT

{stockTakeSessions.length > 0 && (
<TablePagination
component="div"
count={stockTakeSessions.length}
page={page}
rowsPerPage={PER_PAGE}
onPageChange={(e, p) => setPage(p)}
rowsPerPageOptions={[PER_PAGE]}
/>
component="div"
count={total}
page={page}
rowsPerPage={pageSize}
onPageChange={(e, newPage) => {
fetchStockTakeSessions(newPage, pageSize);
}}
rowsPerPageOptions={[pageSize]} // 如果暂时不让用户改 pageSize,就写死
/>
)}
{/* Create Stock Take 確認 Dialog */}
<Dialog


Завантаження…
Відмінити
Зберегти