Merge branch 'iipbs/st/dev' of https://www.onasys.co.kr:3000/ONAANDALL/frontend into iipbs/st/dev

This commit is contained in:
2026-07-07 17:02:47 +09:00
7 changed files with 45 additions and 12 deletions
@@ -4,7 +4,7 @@ import type { Dispatch, SetStateAction } from "react";
import { useCallback, useEffect, useMemo, useRef, useState } from "react";
import { useConfirm } from "@frontend-opensource/use-react-hooks";
import { useQuery } from "@tanstack/react-query";
import { useQuery, useQueryClient } from "@tanstack/react-query";
import dayjs from "dayjs";
import type { RealGridReact } from "realgrid-react";
@@ -137,6 +137,7 @@ const DEFAULT_FILTERS: StatisticsVerificationFilterState = {
const DEFAULT_SUB_FILTERS: StatisticsVerificationSubFilterState = {
...DEFAULT_FILTERS,
prcsYnList: "1,2",
rejectCode: "0",
pbcpAprvYn: "N",
};
@@ -145,7 +146,14 @@ const APPROVAL_STATUS_OPTIONS = [
{ label: "미승인", value: "N" },
];
const REJECT_STATUS_OPTIONS = [
{ label: "반려아님", value: "0" },
{ label: "지자체반려", value: "1" },
{ label: "공단반려", value: "2" },
];
function StatisticsVerificationReport() {
const queryClient = useQueryClient();
const userInfo = useUserStore((state) => state.userInfo);
const { setMessage: alert } = useAlertStore((state) => state);
const { confirm } = useConfirm();
@@ -185,6 +193,7 @@ function StatisticsVerificationReport() {
? subFilters.statsCd
: filters.statsCd,
prcsYnList: subFilters.prcsYnList,
rejectCode: subFilters.rejectCode,
pbcpAprvYn: subFilters.pbcpAprvYn,
laeSbmsnSttsCd: subFilters.laeSbmsnSttsCd,
}),
@@ -196,7 +205,7 @@ function StatisticsVerificationReport() {
queryFn: () => CodeApi.getCode("STINPTEXCT"),
select: (data) =>
data
.filter(({ lwpoCd }) => !["0", "4"].includes(lwpoCd))
.filter(({ lwpoCd }) => !["0", "3", "4"].includes(lwpoCd))
.map(({ lwpoCdNm: label, lwpoCd: value }) => ({
label,
value,
@@ -339,6 +348,9 @@ function StatisticsVerificationReport() {
statisticsApprovalApi.rejectStats(rejectRequests),
onSuccess: (data) => {
alert(data.message ?? "반려가 완료되었습니다.");
queryClient.invalidateQueries({
queryKey: [ENDPOINT.ST_SERVICE.INPUTVERIFY, "verify-results"],
});
},
});
@@ -610,6 +622,12 @@ function StatisticsVerificationReport() {
onChange={handleSubFilterChange("pbcpAprvYn")}
options={APPROVAL_STATUS_OPTIONS}
/>
<FilterSelect
label="반려상태"
value={subFilters.rejectCode}
onChange={handleSubFilterChange("rejectCode")}
options={REJECT_STATUS_OPTIONS}
/>
</div>
<div className="flex items-end justify-end gap-2">
<Button color="white" onClick={handleSubFilterReset}>
@@ -620,7 +638,10 @@ function StatisticsVerificationReport() {
onClick={handleReject}
disabled={
selectedResultRows.length === 0 ||
selectedResultRows.some((row) => row.prcsYn !== "2")
!selectedResultRows.every(
(row) =>
row.prcsYn === "1" || row.prcsYn === "2",
)
}
>
반려
@@ -699,7 +720,7 @@ function FilterCombobox({
onChange(list.length > 0 ? list.join(",") : undefined);
}}
>
<ComboboxChips ref={anchor} className="max-w-[32rem]">
<ComboboxChips ref={anchor} className="max-w-[24rem]">
<ComboboxValue>
{(values: string[]) => (
<>
@@ -743,7 +764,7 @@ function FilterSelect({ label, onChange, options, value }: FilterSelectProps) {
)
}
>
<SelectTrigger className="w-[16rem]">
<SelectTrigger className="w-[12rem]">
<SelectValue placeholder="선택" />
</SelectTrigger>
<SelectContent>
@@ -112,6 +112,7 @@ export const useStatsVrfcRsltData = (
params?.sewerBzmnCd ?? "",
params?.statsCd ?? "",
params?.prcsYnList ?? "",
params?.rejectCode ?? "",
params?.pbcpAprvYn ?? "",
params?.laeSbmsnSttsCd ?? "",
],
@@ -139,6 +140,7 @@ export const useStatsVrfcRsltData = (
sewerBzmnCd: params.sewerBzmnCd,
statsCd: params.statsCd,
prcsYnList: params.prcsYnList,
rejectCode: params.rejectCode,
pbcpAprvYn: params.pbcpAprvYn,
laeSbmsnSttsCd: params.laeSbmsnSttsCd,
},
@@ -1,4 +1,4 @@
import { stClient } from "@/shared/api/client";
import { client } from "@/shared/api";
import { ENDPOINT } from "@/shared/config";
import type {
@@ -12,7 +12,7 @@ class StatisticsApprovalApiService implements StatisticsApprovalService {
public async approveStats(
params: ApproveRequest[],
): Promise<ApprovalResponse> {
const response = await stClient.post<ApprovalResponse>(
const response = await client.post<ApprovalResponse>(
`${ENDPOINT.ST_SERVICE.APPROVAL}/approve?type=VRFC`,
params,
);
@@ -22,7 +22,7 @@ class StatisticsApprovalApiService implements StatisticsApprovalService {
public async rejectStats(
params: RejectRequest[],
): Promise<ApprovalResponse> {
const response = await stClient.post<ApprovalResponse>(
const response = await client.post<ApprovalResponse>(
`${ENDPOINT.ST_SERVICE.APPROVAL}/reject?type=VRFC`,
params,
);
@@ -204,6 +204,7 @@ export interface VerifyResultSearchRequest {
laeSbmsnSttsCd?: string | null;
vrfcMthdCd?: string;
prcsYnList?: string; // 검증 상태 리스트 (0: 미검증, 1: 수정완료, 2:예외통과, 3: 반려)
rejectCode?: string; // 반려 상태 (0: 반려 아님(default), 1: 지자체 반려, 2: 공단 반려)
pbcpAprvYn?: string; // 공단 승인 여부 (Y/N)
}
@@ -161,7 +161,7 @@ export const statisticsVerificationResultColumnInfo: ColumnInfo = {
width: 100,
styleName: READ_ONLY_STYLE,
editable: false,
},
},
{
name: "rsnExpln",
fieldName: "rsnExpln",
@@ -202,6 +202,14 @@ export const statisticsVerificationResultColumnInfo: ColumnInfo = {
styleName: READ_ONLY_STYLE,
editable: false,
},
{
name: "stVrfRjtComNm",
fieldName: "stVrfRjtComNm",
header: { text: "반려상태" },
width: 90,
styleName: READ_ONLY_STYLE,
editable: false,
},
{
name: "rjctOpnnCn",
fieldName: "rjctOpnnCn",
@@ -237,8 +245,9 @@ export const statisticsVerificationResultColumnInfo: ColumnInfo = {
"compVlCn",
"prcsYnNm",
"prcsOpnnExpln",
"stVrfRjtComNm",
"rjctOpnnCn",
"pbcpAprvYn",
"vrfcSn",
],
};
};
+1 -1
View File
@@ -1,4 +1,4 @@
export const PORT = process.env.NEXT_PUBLIC_PORT || "3000";
export const PORT = process.env.NEXT_PUBLIC_PORT || "3001";
export const PROXY_HOST =
process.env.NEXT_PUBLIC_PROXY_HOST || `http://localhost:${PORT}`;
export const SERVER_API_URL = process.env.SERVER_API_URL;
@@ -20,7 +20,7 @@ export const useMutationWrapper = <
if (error instanceof AxiosError) {
if (error.response?.data?.message)
errorMessage += `${error.response.data.message}\n`;
if (error.response?.data?.errors[0]?.message)
if (error.response?.data?.errors?.[0]?.message)
errorMessage += `${error.response.data.errors[0].message}\n`;
}