잠재수요처 엑셀 다운로드 완료

This commit is contained in:
jyha00
2025-06-20 14:23:33 +09:00
parent 4fe2698881
commit 41979c945a
2 changed files with 94 additions and 29 deletions
+70 -16
View File
@@ -15,6 +15,7 @@ import type { objSearchType } from "@/components/ui/modal/fcltReg/bdstRegModal/b
import CoDetailModal from "@/components/ui/modal/sttn/sttnDetailModal/coDatailModal";
import {
ContentsDiv,
downloadExcel,
SearchDiv,
SearchFormLeft,
SearchFormRight,
@@ -34,7 +35,7 @@ export default function LdrmntCoSttn() {
const { code, ldrmnt, ldrmntInit, ldrmntSearch, } = useWrStore(
(state) => state
);
const { ldrmntRes } = ldrmnt;
const { ldrmntRes, excelList } = ldrmnt;
const [detailModal, setDetailModal] = useState<{ isOpen: boolean, data: customLdrmnt | undefined }>({ data: undefined, isOpen: false })
const [pageNation, setPageNation] = useState(1);
const [selectSgg, setSelectSgg] = useState<SelectDataType[] | []>()
@@ -42,7 +43,8 @@ export default function LdrmntCoSttn() {
const [bdstTable, setBdstTable] = useState<customLdrmnt[]>();
const [searchTxt, setSearchTxt] = useState<string>();
const ref = useRef<ReturnType>({} as ReturnType);
const codeData = getCityOrSgg(ref);
const [excelData, setExcelData] = useState<any[]>();
const excelClick = useCallback(() => {
excelDownload(
@@ -54,6 +56,15 @@ export default function LdrmntCoSttn() {
);
}, []);
const excelDownloadClick = () => {
downloadExcel({
data: excelData ?? [],
fileName: "잠재수요처 관리",
sheetNameArray: ["Sheet1"],
headerRange: "A1:F1"
})
}
const [isExcelOpen, setIsExcelOpen] = useState<{
isModal: boolean;
}>({ isModal: false });
@@ -78,7 +89,7 @@ export default function LdrmntCoSttn() {
useEffect(() => {
if (!ldrmnt.isInit) {
ldrmntInit(codeData ?? "0");
ldrmntInit("0");
}
}, [ldrmnt.isInit, ldrmntInit]);
@@ -88,15 +99,61 @@ export default function LdrmntCoSttn() {
const tbData = Array.isArray(data)
? data.map((item: customLdrmnt) => ({
...item,
ctpvCd: item.fctryAddr.split(" ")[0] || "",
ctpvCd: item.fctryAddr.split(" ")[0] || "",
sggCd: item.fctryAddr.split(" ")[1] || ""
}))
: [];
setBdstTable(tbData);
}, [ldrmntRes, code]);
useEffect(() => {
const transData = Array.isArray(excelList) ? excelList : [excelList];
const exData = tableData(transData, { code });
const data = Array.isArray(exData)
? exData.map((item: customLdrmnt) => {
return {
"시도": item.fctryAddr.split(" ")[0] || "",
"시군구": item.fctryAddr.split(" ")[1] || "",
"회사명": item.dmdCoNm,
"공장주소": item.fctryAddr,
"공장관리번호": item.fctryMngNo,
"전화번호": item.telno
}
}) : [];
setExcelData(data)
}, [excelList])
useEffect(() => {
let cityTxt = '';
let sggTxt = '';
if (objSearch?.city.toString().length > 0) {
cityTxt = code.cityCd.find((item) => item.val === objSearch?.city)?.text ?? '';
}
if (objSearch?.sgg.toString().length > 1) {
sggTxt = code.sggCd.find((item) => item.val === objSearch?.sgg)?.text ?? '';
}
let cityNm = "";
if (sggTxt !== "0") {
cityNm = cityTxt + " " + sggTxt;
} else {
cityNm = cityTxt;
}
if (cityNm) {
if (cityTxt === '') cityNm = "0";
ldrmntSearch(pageNation, cityNm, searchTxt || "");
} else {
ldrmntSearch(pageNation, "", searchTxt || "");
}
}, [pageNation, objSearch, code, searchTxt, ldrmntSearch])
return (
<>
<ContentsDiv>
@@ -148,18 +205,17 @@ export default function LdrmntCoSttn() {
sggTxt = code.sggCd.find((item) => item.val === objSearch?.sgg)?.text ?? '';
}
let url = ""
let cityNm = ""
if (sggTxt !== "0") {
url = cityTxt + " " + sggTxt
cityNm = cityTxt + " " + sggTxt
} else {
url = cityTxt
cityNm = cityTxt
}
if (url) {
if(cityTxt === '') url = "0";
ldrmntSearch(url, searchTxt || "");
if (cityNm) {
if (cityTxt === '') cityNm = "0";
ldrmntSearch(pageNation, cityNm, searchTxt || "");
}
}}
>
@@ -177,9 +233,7 @@ export default function LdrmntCoSttn() {
<Button
size={"sm"}
className={btnClass}
onClick={() => {
/* 저장 로직 */
}}
onClick={() => excelDownloadClick()}
>
다운로드
</Button>
+24 -13
View File
@@ -19,16 +19,22 @@ export type ldrmntState = {
ldrmnt: {
ldrmntHeadList: CommonTableProps[];
ldrmntNodeList: CommonTableProps[];
excelList: [];
excelList: ExcelType[];
isInit: boolean;
ldrmntRes: customLdrmnt[];
};
};
type ExcelType = {
[key: string]: string | number | undefined;
};
const excelDownList: ExcelType[] = [];
type ldrmntActions = {
ldrmntRegData: (data: any[]) => void,
ldrmntInit: (con: string) => void
ldrmntSearch: (sggCd: string, coNm: string) => void;
ldrmntSearch: (page: number, sggCd: string, coNm: string) => void;
ldrmntUpdate: (ldrmntRes: customLdrmnt) => void;
ldrmntDelete: () => void;
};
@@ -51,12 +57,10 @@ export const ldrmntActionsExport: (set: any) => ldrmntActions = (
return {
ldrmntInit: async (con: string) => {
try {
console.log("con", con)
const ldrmntRes = await getFetch(
fetchType.WR,
`/reuseFc/request/temp/1/20/${con}`
);
console.log("initres", ldrmntRes)
set((state: ldrmntState) => {
return {
...state,
@@ -73,7 +77,6 @@ export const ldrmntActionsExport: (set: any) => ldrmntActions = (
},
ldrmntRegData: async (data) => {
try {
const response = await postFectch(
"/reuseFc/request/temp",
data,
@@ -98,32 +101,41 @@ export const ldrmntActionsExport: (set: any) => ldrmntActions = (
}
},
ldrmntSearch: async (sggCd: string, coNm: string) => {
ldrmntSearch: async (page: number, sggCd: string, coNm: string) => {
let searchUrl = "";
console.log("인덱스", sggCd)
if (sggCd !== "") {
if (coNm !== "") {
searchUrl = `/reuseFc/request/temp/1/20/${sggCd}/${coNm}`;
searchUrl = `/reuseFc/request/temp/${page}/20/${sggCd}/${coNm}`;
} else {
searchUrl = `/reuseFc/request/temp/1/20/${sggCd}`;
searchUrl = `/reuseFc/request/temp/${page}/20/${sggCd}`;
}
}
console.log("searchUrl", searchUrl)
try {
const ldrmntRes = await getFetch(
fetchType.WR,
searchUrl
);
console.log("search", ldrmntRes)
ldrmntRes.forEach((item: customLdrmnt) => {
excelDownList.push({
ctpvCd: item.ctpvCd,
sggCd: item.sggCd,
dmdCoNm: item.dmdCoNm,
fctryAddr: item.fctryAddr,
fctryMngNo: item.fctryMngNo,
telno: item.telno,
})
})
set((state: ldrmntState) => {
return {
...state,
ldrmnt: {
...state.ldrmnt,
ldrmntRes: ldrmntRes,
excelList: excelDownList,
},
}
})
@@ -134,7 +146,6 @@ export const ldrmntActionsExport: (set: any) => ldrmntActions = (
ldrmntUpdate: async (ldrmntRes: customLdrmnt) => {
try {
ldrmntRes.rgtr = TEST_UUID;
console.log("ldrmntRes", ldrmntRes);
const response = await putFectch(
`/reuseFc/request/temp`,
ldrmntRes