wr: 사용용도-WR018

This commit is contained in:
2026-04-02 16:14:54 +09:00
parent 64d33bec6d
commit 70b941c081
5 changed files with 59 additions and 6 deletions
@@ -44,6 +44,7 @@ export default function RuseCaseMng() {
const [selectUtz, setSelectUtz] = useState<string>("");
const [name, setName] = useState<string>("");
const [resetPage, isResetPage] = useState(false);
const [displayRuseCaseMngList, setDisplayRuseCaseMngList] = useState(ruseCaseMngList);
const { t } = useTranslation("base");
const alert = useAlertStore((state) => state.setMessage);
@@ -56,6 +57,19 @@ export default function RuseCaseMng() {
ruseCaseMngInit();
}, []);
useEffect(() => {
const sewageOutUseCodeList = code.sewageOutFclttUse ?? [];
setDisplayRuseCaseMngList(
ruseCaseMngList.map((item) => ({
...item,
grnteWqUsg:
sewageOutUseCodeList.find((codeItem) => codeItem.val === item.grnteWqUsg)?.text ??
item.grnteWqUsg,
}))
);
}, [code.sewageOutFclttUse, ruseCaseMngList]);
// 시도 선택
const getSelCity = (val: string | number) => {
const cityValue = String(val);
@@ -133,7 +147,8 @@ export default function RuseCaseMng() {
item.ruseFcltUsg,
item.ruseFcltSplyCpct,
item.ruseFcltPrcsMsrc,
item.grnteWqUsg,
code.sewageOutFclttUse.find((codeItem) => codeItem.val === item.grnteWqUsg)?.text ??
item.grnteWqUsg,
item.grnteWqGrssClfg,
item.grnteWqCombResdch,
item.grnteWqTrbt,
@@ -313,7 +328,7 @@ export default function RuseCaseMng() {
<div className="w-[350%]">
<UiTable
headName={"물재이용사례 현황"}
tableData={ruseCaseMngList}
tableData={displayRuseCaseMngList}
headlist={ruseCaseMng.ruseHeadList}
widthFixed={true}
pageSize={20}
@@ -217,6 +217,9 @@ export default function RuseRvwHstry() {
dmdCoNm: item.demandCo?.dmdCoNm,
daddr: item.demandCo?.daddr,
telno: formatPhoneNumber(item.demandCo?.telno || ""),
useUsgCd:
code.sewageOutFclttUse.find((codeItem) => codeItem.val === item.useUsgCd)?.text ??
item.useUsgCd,
dmndTmng: item?.dmndTmng
? moment(item?.dmndTmng).format("YYYY-MM-DD")
: "없음",
@@ -232,7 +235,7 @@ export default function RuseRvwHstry() {
setRvwHistData(tableData(data, { code }));
}
}, [rvwHistRes]);
}, [code.sewageOutFclttUse, rvwHistRes]);
return (
+17 -1
View File
@@ -94,6 +94,22 @@ export const excelDownload = (
if (!response.ok) {
throw Error(response.statusText);
}
const isTemplateOnlyDownload =
excelList.length === 1 &&
Array.isArray(excelList[0]) &&
excelList[0].length === 0;
if (isTemplateOnlyDownload) {
const blob = await response.blob();
const link = document.createElement("a");
link.href = URL.createObjectURL(blob);
link.download = fileNm.endsWith(".xlsx") ? fileNm : `${fileNm}.xlsx`;
link.click();
URL.revokeObjectURL(link.href);
return;
}
// 받은 파일 바인너리 처리
const blobRet = await response.arrayBuffer();
// 버퍼에 있는 엑셀데이터 전달 후 json으로 변환
@@ -406,4 +422,4 @@ export function handleLaeSeCdChange(
isCityCd,
isSggCd: [{ text: "전체", val: "0" }, ...sggOrdered],
};
}
}
@@ -12,13 +12,14 @@ import { useForm } from "react-hook-form";
import type { z } from "zod";
export default function RuseCaseMngExcel({setIsExcelOpen}:{setIsExcelOpen: (isOpen:boolean)=>void}) {
const { insertRuseCaseMng } = useWrStore((state) => state);
const { insertRuseCaseMng, code } = useWrStore((state) => state);
const alert = useAlertStore((state) => state.setMessage);
const form = useForm<z.infer<typeof coRegExcel>>({
resolver: zodResolver(coRegExcel),
});
const [file, setFiles] = useState<File | undefined>();
const sewageOutUseCodeList = code.sewageOutFclttUse ?? [];
const onSubmit = () => {
if (file) {
@@ -125,7 +126,25 @@ export default function RuseCaseMngExcel({setIsExcelOpen}:{setIsExcelOpen: (isOp
if(parsingExcel.ok&&parsingExcel.value){
newArray.push(parsingExcel.value);
const parsedValue = { ...parsingExcel.value };
const usageText = parsedValue.grnteWqUsg?.toString().trim();
if (usageText) {
const usageCode = sewageOutUseCodeList.find(
(codeItem) => codeItem.text.trim() === usageText
)?.val;
if (!usageCode) {
isError.push([
`${parsedValue.ruseBizNm || "행"} => [보증수질_용도별] '${usageText}' 에 해당하는 WR018 코드가 없습니다.`,
]);
return;
}
parsedValue.grnteWqUsg = usageCode;
}
newArray.push(parsedValue);
}else if(parsingExcel.errors){
isError.push(parsingExcel.errors);
}
Binary file not shown.