瀏覽代碼

no message

master
父節點
當前提交
7fd2c62da2
共有 3 個文件被更改,包括 52 次插入91 次删除
  1. +23
    -81
      src/components/DetailedSchedule/DetailedScheduleSearchView.tsx
  2. +1
    -1
      src/components/DetailedScheduleDetail/DetailInfoCard.tsx
  3. +28
    -9
      src/components/DetailedScheduleDetail/DetailedScheduleDetailView.tsx

+ 23
- 81
src/components/DetailedSchedule/DetailedScheduleSearchView.tsx 查看文件

@@ -50,6 +50,7 @@ const DSOverview: React.FC<Props> = ({ type, defaultInputs }) => {
>([]);
const { t } = useTranslation("schedule");
const { setIsUploading } = useUploadContext();
const today = dayjs().format("YYYY-MM-DD");

const router = useRouter();
// const [filterObj, setFilterObj] = useState({});
@@ -58,7 +59,10 @@ const DSOverview: React.FC<Props> = ({ type, defaultInputs }) => {
defaultPagingController,
);
const [totalCount, setTotalCount] = useState(0);
const [inputs, setInputs] = useState(defaultInputs);
const [inputs, setInputs] = useState({
...defaultInputs,
produceAt: dayjs().format("YYYY-MM-DD"),
});
const typeOptions = [
{
value: "detailed",
@@ -78,7 +82,7 @@ const DSOverview: React.FC<Props> = ({ type, defaultInputs }) => {
// paramName: "schedulePeriod",
// type: "dateRange",
// },
{ label: t("Production Date"), paramName: "produceAt", type: "date" },
{ label: t("Production Date"), paramName: "produceAt", type: "date", defaultValue: dayjs().format("YYYY-MM-DD") },
//{
// label: t("Product Count"),
// paramName: "totalEstProdCount",
@@ -182,15 +186,6 @@ const DSOverview: React.FC<Props> = ({ type, defaultInputs }) => {
produceAt: dayjs(query?.produceAt).isValid()
? query?.produceAt
: undefined,
//schedulePeriod: dayjs(query?.schedulePeriod).isValid()
// ? query?.schedulePeriod
// : undefined,
//schedulePeriodTo: dayjs(query?.schedulePeriodTo).isValid()
// ? query?.schedulePeriodTo
// : undefined,
//totalEstProdCount: query?.totalEstProdCount
// ? Number(query?.totalEstProdCount)
// : undefined,
types: convertedTypes,
pageNum: pagingController.pageNum - 1,
pageSize: pagingController.pageSize,
@@ -221,77 +216,24 @@ const DSOverview: React.FC<Props> = ({ type, defaultInputs }) => {
refetchData(inputs, "paging");
}, [pagingController]);

// useEffect(() => {
// refetchData(filterObj);

// }, [filterObj, pagingController.pageNum, pagingController.pageSize]);

// const refetchData = async (filterObj: SearchQuery | null) => {

// const authHeader = axiosInstance.defaults.headers['Authorization'];
// if (!authHeader) {
// return; // Exit the function if the token is not set
// }

// const params = {
// pageNum: pagingController.pageNum,
// pageSize: pagingController.pageSize,
// ...filterObj,
// ...tempSelectedValue,
// }

// try {
// const response = await axiosInstance.get<ItemsResult[]>(`${NEXT_PUBLIC_API_URL}/items/getRecordByPage`, {
// params,
// paramsSerializer: (params) => {
// return Qs.stringify(params, { arrayFormat: 'repeat' });
// },
// });
// //setFilteredItems(response.data.records);
// setFilteredItems([
// {
// id: 1,
// scheduledPeriod: "2025-05-11 to 2025-05-17",
// scheduledAt: "2025-05-07",
// productCount: 13,
// },
// {
// id: 2,
// scheduledPeriod: "2025-05-18 to 2025-05-24",
// scheduledAt: "2025-05-14",
// productCount: 15,
// },
// {
// id: 3,
// scheduledPeriod: "2025-05-25 to 2025-05-31",
// scheduledAt: "2025-05-21",
// productCount: 13,
// },
// ])
// setPagingController({
// ...pagingController,
// totalCount: response.data.total
// })
// return response; // Return the data from the response
// } catch (error) {
// console.error('Error fetching items:', error);
// throw error; // Rethrow the error for further handling
// }
// };

const onReset = useCallback(() => {
//setFilteredItems(items ?? []);
// setFilterObj({});
// setTempSelectedValue({});
refetchData(defaultInputs, "reset");
}, []);

const resetWithToday = {
...defaultInputs,
produceAt: dayjs().format("YYYY-MM-DD"),
};
setInputs(resetWithToday); // Update state
refetchData(resetWithToday, "reset"); // Fetch data
}, [defaultInputs, refetchData]);

const testDetailedScheduleClick = useCallback(async () => {
try {
setIsUploading(true)
const response = await testDetailedSchedule(inputs.scheduleAt)
if (response) {
refetchData(inputs, "paging");
//refetchData(inputs, "paging");
setPagingController(prev => ({ ...prev, pageNum: 1 }));
refetchData(inputs, "search");
}
} catch(e) {
console.log(e)
@@ -394,14 +336,14 @@ const DSOverview: React.FC<Props> = ({ type, defaultInputs }) => {
<SearchBox
criteria={searchCriteria}
onSearch={(query) => {
setInputs(() => ({
scheduleAt: query?.scheduleAt,
schedulePeriod: query?.schedulePeriod,
schedulePeriodTo: query?.schedulePeriodTo,
const updatedInputs = {
...inputs,
produceAt: query?.produceAt, // Ensure this matches paramName in searchCriteria
totalEstProdCount: Number(query?.totalEstProdCount),
types: query.types as unknown as ScheduleType[],
}));
refetchData(query, "search");
};
setInputs(updatedInputs);
refetchData(updatedInputs, "search");
}}
onReset={onReset}
/>


+ 1
- 1
src/components/DetailedScheduleDetail/DetailInfoCard.tsx 查看文件

@@ -70,7 +70,7 @@ const DetailInfoCard: React.FC<Props> = ({
// {...register("scheduleAt", {
// required: "Schedule At required!",
// })}
defaultValue={`${arrayToDateString(getValues("scheduleAt"))}`}
defaultValue={`${arrayToDateString(getValues("produceAt"))}`}
// defaultValue={details?.scheduledPeriod}
disabled={!isEditing}
// error={Boolean(errors.name)}


+ 28
- 9
src/components/DetailedScheduleDetail/DetailedScheduleDetailView.tsx 查看文件

@@ -163,36 +163,55 @@ const DetailedScheduleDetailView: React.FC<Props> = ({
}, [formProps, setIsUploading])

// --- NEW FUNCTION: GLOBAL RELEASE FOR THE ENTIRE SCHEDULE ---
// --- UPDATED FUNCTION: GLOBAL RELEASE WITH produceAt CHECK ---
const onGlobalReleaseClick = useCallback(async () => {
if (!scheduleId) {
setServerError(t("Cannot release. Schedule ID is missing."));
return;
}

// Optional: Add a confirmation dialog here before proceeding
// 1. Get the production date (produceAt) from the form values
const produceAtValue = getValues("produceAt");

if (produceAtValue) {
// Use standard JS Date comparison for YYYY-MM-DD
const today = new Date().toISOString().split('T')[0];
// Handle various potential formats (string or array from API)
let scheduleDate = "";
if (Array.isArray(produceAtValue)) {
// If it's an array format [YYYY, MM, DD] common in Java backends
const [year, month, day] = produceAtValue;
scheduleDate = `${year}-${String(month).padStart(2, '0')}-${String(day).padStart(2, '0')}`;
} else {
scheduleDate = new Date(produceAtValue).toISOString().split('T')[0];
}

// 2. Alert and block if the date is not today
if (scheduleDate !== today) {
alert(t("Only schedules for today can be released."));
return;
}
}

setIsUploading(true);
setServerError(""); // Clear previous errors
setServerError("");

try {
// **IMPORTANT**: Ensure 'releaseProdSchedule' is implemented in your actions file
// to call the '/productionSchedule/detail/detailed/release' endpoint.
const response = await releaseProdSchedule({
id: Number(scheduleId),
})
});

if (response) {
router.refresh();
router.refresh();
}

} catch (e) {
console.error(e);
setServerError(t("An unexpected error occurred during global schedule release."));
} finally {
setIsUploading(false);
}
}, [scheduleId, setIsUploading, t, router]);
}, [scheduleId, setIsUploading, t, router, getValues]);
// --------------------------------------------------------------------
const [tempValue, setTempValue] = useState<string | number | null>(null)


Loading…
取消
儲存