매칭완료 오류사항 수정
This commit is contained in:
@@ -1,12 +1,9 @@
|
||||
"use client";
|
||||
|
||||
import { useWrStore } from "@/app/store";
|
||||
import { type RvwHistTableType } from "@/app/store/matDmd/coMatRvw/type";
|
||||
import {
|
||||
DmdCoReqSchema,
|
||||
type DmdCoReqType,
|
||||
type RvwHistTableType,
|
||||
} from "@/app/store/matDmd/coMatRvw/type";
|
||||
import {
|
||||
confirmToast,
|
||||
formatPhoneNumber,
|
||||
getCity,
|
||||
getdmdMatFlag,
|
||||
@@ -27,11 +24,10 @@ import {
|
||||
} from "@common/business_components/ui";
|
||||
import ListDiv from "@common/business_components/ui/list_div";
|
||||
import { Button, Label } from "@common/components/ui";
|
||||
import { zodResolver } from "@hookform/resolvers/zod";
|
||||
import moment from "moment";
|
||||
import { useCallback, useEffect, useState } from "react";
|
||||
import { useForm } from "react-hook-form";
|
||||
import toast, { Toaster } from "react-hot-toast";
|
||||
import { useTranslation } from "react-i18next";
|
||||
export default function RuseRvwHstry() {
|
||||
const {
|
||||
code,
|
||||
@@ -51,6 +47,7 @@ export default function RuseRvwHstry() {
|
||||
sgg: "",
|
||||
city: "",
|
||||
});
|
||||
const { t } = useTranslation('base');
|
||||
|
||||
const [fromDate, setFromDate] = useState<string>(
|
||||
String(new Date().getFullYear())
|
||||
@@ -116,53 +113,65 @@ export default function RuseRvwHstry() {
|
||||
}
|
||||
};
|
||||
|
||||
const form = useForm<DmdCoReqType>({
|
||||
resolver: zodResolver(DmdCoReqSchema),
|
||||
mode: "onChange",
|
||||
});
|
||||
|
||||
const TableCellClick = useCallback(
|
||||
(index: number | undefined) => {
|
||||
if (
|
||||
index !== undefined &&
|
||||
index >= 0 &&
|
||||
rvwHistRes &&
|
||||
rvwHistRes[index]
|
||||
) {
|
||||
form.reset(rvwHistRes[index]);
|
||||
(index: number | undefined, headId: string) => {
|
||||
if (index !== undefined && index >= 0) {
|
||||
const selectedData = rvwHistData;
|
||||
if (selectedData && selectedData.length > 0) {
|
||||
if (
|
||||
selectedData[index]?.splyFcltFlg === "검토완료" &&
|
||||
headId === "completeYn"
|
||||
) {
|
||||
setRvwHistData([...selectedData]);
|
||||
} else if (
|
||||
selectedData[index]?.splyFcltFlg === "매칭완료" &&
|
||||
headId === "completeYn"
|
||||
) {
|
||||
toast.error(t("canNotChangeMatStateMsg"));
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
[rvwHistRes, form]
|
||||
[rvwHistData]
|
||||
);
|
||||
const confrirmToast = () => {
|
||||
const completeData = rvwHistData
|
||||
?.map((item) => {
|
||||
form.clearErrors();
|
||||
if (item?.completeYn) {
|
||||
if (item?.completeYn.chk && item.splyFcltFlg === "검토완료") {
|
||||
return Number(item.dmdInfoSn);
|
||||
}
|
||||
})
|
||||
.filter((item) => item !== undefined);
|
||||
if (form.formState.isDirty) {
|
||||
toast((t) => (
|
||||
<span className="flex flex-col items-center">
|
||||
표준공사비 정보가 변경되었습니다. 검토 완료 진행시 입력한 정보는
|
||||
초기화 됩니다.
|
||||
<br />
|
||||
진행하시겠습니까?
|
||||
<button
|
||||
onClick={() => {
|
||||
toast.dismiss(t.id);
|
||||
ruseRvwComplete(completeData as number[]);
|
||||
}}
|
||||
>
|
||||
확인
|
||||
</button>
|
||||
<button onClick={() => toast.dismiss(t.id)}>취소</button>
|
||||
</span>
|
||||
));
|
||||
|
||||
if (completeData && completeData?.length > 0) {
|
||||
confirmToast(t('isMatchFinishMsg'), () => ruseRvwComplete(completeData as number[]));
|
||||
|
||||
// const handleConfirm = async () => {
|
||||
// ruseRvwComplete(completeData as number[]);
|
||||
// };
|
||||
// toast((t) => (
|
||||
// <span className="flex flex-col items-center">
|
||||
// 매칭완료를 진행하시겠습니까?
|
||||
// <br />
|
||||
// <div className="mt-2 flex flex-row space-x-2">
|
||||
// <Button
|
||||
// size={"sm"}
|
||||
// onClick={() => {
|
||||
// toast.dismiss(t.id);
|
||||
// ruseRvwComplete(completeData as number[]);
|
||||
// }}
|
||||
// >
|
||||
// 확인
|
||||
// </Button>
|
||||
// <Button size={"sm"} onClick={() => toast.dismiss(t.id)}>
|
||||
// 취소
|
||||
// </Button>
|
||||
// </div>
|
||||
// </span>
|
||||
// ));
|
||||
} else {
|
||||
ruseRvwComplete(completeData as number[]);
|
||||
toast.error( t('isNotMatchFinishMsg'));
|
||||
}
|
||||
};
|
||||
useEffect(() => {
|
||||
@@ -203,11 +212,10 @@ export default function RuseRvwHstry() {
|
||||
|
||||
rvwCmptnYmd: formatDate(item.demandMatching?.rvwCmptnYmd),
|
||||
mtchnCmptnYmd: formatDate(item.demandMatching?.mtchnCmptnYmd),
|
||||
|
||||
ruseUtztnFcltNm: item.ruseUtztnFcltNm,
|
||||
dmndQty: item.dmndQty,
|
||||
splyFcltFlg: flag,
|
||||
completeYn: false,
|
||||
completeYn: {chk:flag=="매칭완료", readonly:flag=="매칭완료"},
|
||||
} as unknown as RvwHistTableType;
|
||||
});
|
||||
|
||||
@@ -215,9 +223,6 @@ export default function RuseRvwHstry() {
|
||||
}
|
||||
}, [rvwHistRes]);
|
||||
|
||||
useEffect(() => {
|
||||
console.log("변경여부 ", form.formState.isDirty);
|
||||
}, [form.formState]);
|
||||
|
||||
return (
|
||||
<ContentsDiv>
|
||||
@@ -301,7 +306,7 @@ export default function RuseRvwHstry() {
|
||||
조회
|
||||
</Button>
|
||||
<Button size={"sm"} onClick={confrirmToast}>
|
||||
검토완료
|
||||
저장
|
||||
</Button>
|
||||
</div>
|
||||
</div>
|
||||
@@ -319,18 +324,14 @@ export default function RuseRvwHstry() {
|
||||
headlist={ruseHistHeadList}
|
||||
pageSize={20}
|
||||
total={rvwHistCount}
|
||||
cellClick={(index: number | undefined) => {
|
||||
TableCellClick(index);
|
||||
cellClick={(index: number | undefined, headId: string) => {
|
||||
console.log("테이블 클릭", index);
|
||||
TableCellClick(index, headId);
|
||||
}}
|
||||
onPageChange={(page) => {
|
||||
setPageNatiion(page);
|
||||
}}
|
||||
></UiTable>
|
||||
{/* <hr />
|
||||
<h3 className="mt-4 ml-2 text-2xl font-medium text-label">
|
||||
수요신청 상세현황
|
||||
</h3>
|
||||
<ConCostForm form={form} type={"hist"} selectionVersion={0} /> */}
|
||||
</ListDiv>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
import type { ChkClass } from "@common/business_components/ui";
|
||||
import { z } from "zod";
|
||||
|
||||
const DemandInfoSchema = z.object({
|
||||
@@ -130,7 +131,7 @@ export type RvwHistTableType = {
|
||||
dmndQty: string;
|
||||
useUsgCd: string;
|
||||
splyFcltFlg: string;
|
||||
completeYn: boolean;
|
||||
completeYn: ChkClass;
|
||||
dmdInfoSn: string;
|
||||
};
|
||||
|
||||
|
||||
@@ -6,6 +6,7 @@ export const ruseHstryHeadListExport:TableUpperProps[]= [
|
||||
id: "cityText",
|
||||
title: "시도",
|
||||
visible: true,
|
||||
|
||||
},
|
||||
{
|
||||
id: "sggText",
|
||||
|
||||
@@ -130,7 +130,7 @@ export const ruseHstryActionsExport: (set: any) => ruseHstryActions = (
|
||||
toast.success("매칭 계산 저장이 완료입니다.");
|
||||
const rvwHistRes = await irvwHistInit(
|
||||
1,
|
||||
10,
|
||||
13,
|
||||
new Date().getFullYear().toString(),
|
||||
new Date().getFullYear().toString(),
|
||||
);
|
||||
@@ -217,10 +217,10 @@ export const ruseHstryActionsExport: (set: any) => ruseHstryActions = (
|
||||
fetchType.WR
|
||||
);
|
||||
if (complet.status === 200) {
|
||||
toast.success("완료 처리가 완료되었습니다.");
|
||||
toast.success("매칭완료가 완료되었습니다.");
|
||||
const rvwHistRes = await irvwHistInit(
|
||||
1,
|
||||
10,
|
||||
13,
|
||||
new Date().getFullYear().toString(),
|
||||
new Date().getFullYear().toString(),
|
||||
);
|
||||
@@ -236,7 +236,7 @@ export const ruseHstryActionsExport: (set: any) => ruseHstryActions = (
|
||||
}
|
||||
} catch (e) {
|
||||
console.log(" error ", e);
|
||||
toast.error("완료 처리 중 오류가 발생했습니다.");
|
||||
toast.error("매칭 완료 처리 중 오류가 발생했습니다.");
|
||||
}
|
||||
},
|
||||
};
|
||||
|
||||
@@ -12,8 +12,13 @@
|
||||
"isUpdateMsg": "수정한 정보를 저장하시겠습니까?",
|
||||
"isInsertMsg": "등록하시겠습니까?",
|
||||
"isUpdatetMsg": "수정하시겠습니까?",
|
||||
|
||||
"matchFinishMsg" : "{{name}}이(가) 완료되었습니다.",
|
||||
"excelDownErrMsg": "다운로드할 데이터가 없습니다.",
|
||||
"isMatchFinishMsg":" 매칭완료를 진행하시겠습니까?",
|
||||
"isNotMatchFinishMsg":"검토완료중 매칭완료 여부를 체크한 항목이 없습니다.",
|
||||
"canNotChangeMatStateMsg":"매칭완료된 항목은 상태를 변경할 수 없습니다.",
|
||||
|
||||
|
||||
|
||||
"alreadyInsertedErrMsg": "사업자번호 {{num}}(은)는 이미 등록되었습니다. 다시 등록해주세요.",
|
||||
"saveRowErrMsg": "수정을 원하는 행을 선택하고 저장버튼을 눌러주세요.",
|
||||
|
||||
Reference in New Issue
Block a user