diff --git a/apps/st/src/components/module/DataGrid.tsx b/apps/st/src/components/module/DataGrid.tsx
index 8c8e0d75c..93e5fccc5 100644
--- a/apps/st/src/components/module/DataGrid.tsx
+++ b/apps/st/src/components/module/DataGrid.tsx
@@ -1178,7 +1178,7 @@ const DataGrid = ({
gridView.onCellEdited = undefined;
}
};
- }, [columns, setRowData]);
+ }, [columns]);
return (
@@ -1254,6 +1254,7 @@ const DataGrid = ({
ref={gridRef}
autoGenerateField={true}
layout={columnLayout}
+ rows={rowData}
onInitialized={(grid) => {
if (!grid) return;
(
diff --git a/apps/st/src/components/statistics/verification/ApprovalInputDialog.tsx b/apps/st/src/components/statistics/verification/ApprovalInputDialog.tsx
new file mode 100644
index 000000000..49170e7ae
--- /dev/null
+++ b/apps/st/src/components/statistics/verification/ApprovalInputDialog.tsx
@@ -0,0 +1,177 @@
+"use client";
+
+import { useEffect, useState } from "react";
+
+import {
+ Button,
+ Dialog,
+ DialogClose,
+ DialogContent,
+ DialogFooter,
+ DialogHeader,
+ DialogTitle,
+ Input,
+ Label,
+ Textarea,
+} from "@common/components";
+
+export interface ApprovalFormData {
+ rjctOpnnCn: string;
+ lastCfmtnPicNm: string;
+ lastCfmtnPicTelNo: string;
+ lastCfmtnPicDeptNm: string;
+ lastCfmtnPicJbgdNm: string;
+}
+
+export interface ApprovalInputDialogProps {
+ open: boolean;
+ onOpenChange: (open: boolean) => void;
+ onConfirm?: (data: ApprovalFormData) => void | Promise
;
+}
+
+export function ApprovalInputDialog({
+ open,
+ onOpenChange,
+ onConfirm,
+}: ApprovalInputDialogProps) {
+ const [rjctOpnnCn, setRjctOpnnCn] = useState("");
+ const [lastCfmtnPicNm, setLastCfmtnPicNm] = useState("");
+ const [lastCfmtnPicTelNo, setLastCfmtnPicTelNo] = useState("");
+ const [lastCfmtnPicDeptNm, setLastCfmtnPicDeptNm] = useState("");
+ const [lastCfmtnPicJbgdNm, setLastCfmtnPicJbgdNm] = useState("");
+
+ const [isSubmitting, setIsSubmitting] = useState(false);
+
+ const resetForm = () => {
+ setRjctOpnnCn("");
+ setLastCfmtnPicNm("");
+ setLastCfmtnPicTelNo("");
+ setLastCfmtnPicDeptNm("");
+ setLastCfmtnPicJbgdNm("");
+ };
+
+ const handleDialogOpenChange = (nextOpen: boolean) => {
+ if (!nextOpen) resetForm();
+ onOpenChange(nextOpen);
+ };
+
+ useEffect(() => {
+ if (!open) {
+ resetForm();
+ }
+ }, [open]);
+
+ const handleConfirm = async () => {
+ try {
+ setIsSubmitting(true);
+ const formData: ApprovalFormData = {
+ rjctOpnnCn: rjctOpnnCn.trim(),
+ lastCfmtnPicNm: lastCfmtnPicNm.trim(),
+ lastCfmtnPicTelNo: lastCfmtnPicTelNo.trim(),
+ lastCfmtnPicDeptNm: lastCfmtnPicDeptNm.trim(),
+ lastCfmtnPicJbgdNm: lastCfmtnPicJbgdNm.trim(),
+ };
+ await onConfirm?.(formData);
+ } finally {
+ setIsSubmitting(false);
+ }
+ };
+
+ return (
+
+ );
+}
diff --git a/apps/st/src/components/statistics/verification/StatisticsVerificationReport.tsx b/apps/st/src/components/statistics/verification/StatisticsVerificationReport.tsx
index 837433b8d..896ee061c 100644
--- a/apps/st/src/components/statistics/verification/StatisticsVerificationReport.tsx
+++ b/apps/st/src/components/statistics/verification/StatisticsVerificationReport.tsx
@@ -46,6 +46,10 @@ import {
} from "@common/components";
import DataGrid from "@/components/module/DataGrid";
+import {
+ type ApprovalFormData,
+ ApprovalInputDialog,
+} from "@/components/statistics/verification/ApprovalInputDialog";
import type { CellEditedCallbackParams } from "@/components/type/DataGrid.type";
import { toGridRows } from "@/components/util/grid/gridFunction";
@@ -167,6 +171,7 @@ function StatisticsVerificationReport() {
const [selectedResultRows, setSelectedResultRows] = useState<
VerifyResultItem[]
>([]);
+ const [approvalDialogOpen, setApprovalDialogOpen] = useState(false);
const editedResultRowMapRef = useRef