Merge commit 'eb2fca7621985ef0a02ceff0e057b8ef9254dfce' into iipbs/wr/dev
iipbs_wr / build (push) Has been cancelled
iipbs_wr / build (push) Has been cancelled
This commit is contained in:
@@ -69,6 +69,13 @@ export default function Home() {
|
||||
</Link>
|
||||
</Button>
|
||||
</div>
|
||||
<div className="col-span-2">
|
||||
<Button className="w-full">
|
||||
<Link href="ruseFcltMng/fcltSttn/rswtSttn">
|
||||
중수도이용시설현황
|
||||
</Link>
|
||||
</Button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -24,9 +24,10 @@ import type { customHtdflBdst } from "@/app/store/ruseFcltMng/fcltReg/htdflReg";
|
||||
import { headMakeColSpan } from "../rainReg/TableHead";
|
||||
|
||||
export default function Home() {
|
||||
const { code, htdfl, initHtdfl } = useWrStore((state) => state);
|
||||
const nodeList = headMakeColSpan(htdfl.upHeadList);
|
||||
const { code, htdfl, initHtdfl,getHtdflBdstData } = useWrStore((state) => state);
|
||||
const [searchTxt, setSearchTxt] = useState("");
|
||||
const [pageNation, setPageNation] = useState(1);
|
||||
|
||||
const [htdflForm, setHtdflForm] = useState<customHtdflBdst>();
|
||||
const [bdstTable, setbdstTable] = useState<customHtdflBdst[]>();
|
||||
const [issNewReg,setIsNewReg] = useState<boolean>( false);
|
||||
@@ -40,13 +41,23 @@ export default function Home() {
|
||||
|
||||
useEffect(() => {
|
||||
if (!htdfl.isInit) {
|
||||
initHtdfl(undefined);
|
||||
initHtdfl('41');
|
||||
}
|
||||
}, [htdfl.isInit, initHtdfl]);
|
||||
|
||||
useEffect(() => {
|
||||
if (code.sggCd.length > 0) {
|
||||
setbdstTable(tableData(htdflRes, { code }));
|
||||
|
||||
const htdflData = tableData(htdflRes, { code }).map(
|
||||
(item: customHtdflBdst) => {
|
||||
return {
|
||||
...item,
|
||||
bdstChgYn: item.chgBuilding.length > 0 ? "Y" : "N",
|
||||
bdstUsgCd: item.reuseBuilding[0]?.bdstUsgCd
|
||||
};
|
||||
}
|
||||
);
|
||||
setbdstTable(htdflData);
|
||||
}
|
||||
}, [code, htdflRes]);
|
||||
|
||||
@@ -64,13 +75,17 @@ export default function Home() {
|
||||
htdflRes[val]?.bdstInfoPk != null &&
|
||||
htdflRes[val]?.chgBuilding?.length > 0
|
||||
) {
|
||||
bdstChgModal(htdflRes[val]?.chgBuilding);
|
||||
bdstChgModal(htdflRes[val]?.chgBuilding as chgBuilding[]);
|
||||
}
|
||||
}
|
||||
};
|
||||
const bdstChgModal = (chgBuilding: chgBuilding[]) => {
|
||||
setBdstChgProps({ isOpen: true, chgBuilding: chgBuilding });
|
||||
};
|
||||
useEffect(() => {
|
||||
getHtdflBdstData(pageNation, "41");
|
||||
}, [pageNation]);
|
||||
|
||||
return (
|
||||
<>
|
||||
<ContentsDiv>
|
||||
@@ -112,9 +127,9 @@ export default function Home() {
|
||||
pageSize={100}
|
||||
total={10}
|
||||
headName={"○건축물 목록"}
|
||||
cellClick={(val,headId)=>{cellClick(val||undefined , headId)}}
|
||||
>
|
||||
{nodeList}
|
||||
cellClick={(val, headId) => { cellClick(val || undefined, headId); } }
|
||||
onPageChange={setPageNation}
|
||||
>
|
||||
</UiTable>
|
||||
</ListDiv>
|
||||
</div>
|
||||
|
||||
@@ -2,7 +2,11 @@
|
||||
"use client";
|
||||
import { useWrStore } from "@/app/store";
|
||||
import { btnClass } from "@/app/store/common/code";
|
||||
import { excelDownload, tableData } from "@/components/lib/func/commom";
|
||||
import {
|
||||
excelDownload,
|
||||
getCityOrSgg,
|
||||
tableData,
|
||||
} from "@/components/lib/func/commom";
|
||||
import HeadChModal from "@/components/ui/modal/headChModal/headChModal";
|
||||
import {
|
||||
ContentsDiv,
|
||||
@@ -10,7 +14,7 @@ import {
|
||||
Title,
|
||||
UiModal,
|
||||
UiTable,
|
||||
type ReturnType
|
||||
type ReturnType,
|
||||
} from "@common/business_components/ui";
|
||||
import ListDiv from "@common/business_components/ui/list_div";
|
||||
import { Button } from "@common/components/ui";
|
||||
@@ -19,50 +23,32 @@ import type { customRainBdst } from "@/app/store/ruseFcltMng/fcltReg/rainReg";
|
||||
import { HeadMakeColSpan } from "@common/business_components/ui/table/HeadMakeColSpan";
|
||||
|
||||
export default function RainSttn() {
|
||||
const { code, rainSttn, rainSttnSearch } =
|
||||
useWrStore((state) => state);
|
||||
const { code, rainSttn, rainSttnSearch, rainSttnInit } = useWrStore(
|
||||
(state) => state
|
||||
);
|
||||
|
||||
const [pageNation, setPageNation] = useState(1);
|
||||
const { rainSttnRes } = rainSttn;
|
||||
const [isChHead, setIsChHead] = useState(false);
|
||||
const ref = useRef<ReturnType>({} as ReturnType);
|
||||
const [bdstTable, setBdstTable] = useState<customRainBdst[]>();
|
||||
|
||||
const codeData = getCityOrSgg(ref);
|
||||
|
||||
useEffect(() => {
|
||||
if (!rainSttn.isInit) {
|
||||
let con
|
||||
if (ref.current.sigunValue != '0') {
|
||||
con = ref.current.sigunValue
|
||||
}else{
|
||||
con = ref.current.sidoValue
|
||||
}
|
||||
rainSttnSearch('1', '20' ,con);
|
||||
rainSttnInit(codeData ?? "0");
|
||||
}
|
||||
}, [rainSttn.isInit, rainSttnSearch]);
|
||||
|
||||
}, [rainSttn.isInit, rainSttnInit]);
|
||||
|
||||
useEffect(() => {
|
||||
|
||||
if (rainSttnRes.length > 0 && code.cityCd.length>0) {
|
||||
if (rainSttnRes.length > 0 && code.cityCd.length > 0) {
|
||||
const data = tableData(rainSttnRes, { code });
|
||||
const chData = data
|
||||
.map((item: any) => ({
|
||||
|
||||
...item,
|
||||
...item.reuseBuilding[0],
|
||||
...item.reuseBuilding[0].rainyObj,
|
||||
// cityText:item.cityText,
|
||||
// sggText:item.sggText,
|
||||
// bdstNm: item.bdstNm,
|
||||
// daddr:item.daddr,
|
||||
// bdstUsgCd:item.bdstUsgCd,
|
||||
// frstArchPrmsnDt:item.frstArchPrmsnDt,
|
||||
// archArea:item.archArea,
|
||||
// lawTrgtYn:item.lawTrgtYn,
|
||||
// instlCmptnDt:item.instlCmptnDt,
|
||||
// instlCst:item.instlCst,
|
||||
|
||||
|
||||
|
||||
|
||||
}))
|
||||
.filter((item: any) => item.rainyObj !== undefined);
|
||||
|
||||
@@ -70,29 +56,25 @@ export default function RainSttn() {
|
||||
}
|
||||
}, [code, rainSttnRes, rainSttn.rainSttHeadList]);
|
||||
|
||||
|
||||
useEffect(() =>{
|
||||
console.log(rainSttn.rainSttNodeList)
|
||||
},[rainSttn.rainSttNodeList])
|
||||
useEffect(() => {
|
||||
if (codeData != null) rainSttnSearch(pageNation, "20", codeData);
|
||||
}, [pageNation]);
|
||||
|
||||
useEffect(() => {
|
||||
if(rainSttn.excelList.length>0){
|
||||
|
||||
if (rainSttn.excelList.length > 0) {
|
||||
if (rainSttn.excelList.length === 0) return;
|
||||
excelDownload(rainSttn.excelList , '빗물재이용시설 현황','sample_rainSttn.xlsx')
|
||||
excelDownload(
|
||||
rainSttn.excelList,
|
||||
"빗물재이용시설 현황",
|
||||
"sample_rainSttn.xlsx"
|
||||
);
|
||||
}
|
||||
}, [rainSttn.excelList]);
|
||||
|
||||
const excelClick = useCallback((returnType:ReturnType) => {
|
||||
|
||||
let con
|
||||
if (returnType.sigunValue != '0') {
|
||||
con = returnType.sigunValue
|
||||
}else{
|
||||
con = returnType.sidoValue
|
||||
}
|
||||
rainSttnSearch('1', '10000' ,con);
|
||||
},[rainSttnSearch]);
|
||||
const excelClick = useCallback(() => {
|
||||
if (codeData) rainSttnSearch(1, "10000", codeData);
|
||||
}, [rainSttnSearch]);
|
||||
|
||||
return (
|
||||
<>
|
||||
<ContentsDiv>
|
||||
@@ -119,13 +101,13 @@ console.log(rainSttn.rainSttNodeList)
|
||||
leftChildren={undefined}
|
||||
queryClick={function (returnType: ReturnType): void {
|
||||
// '{partValue: 'A', sidoValue: '0', sigunValue: '0', regionValue: '0', unitWaterShedValue: '0', …}'
|
||||
let con
|
||||
if (returnType.sigunValue != '0') {
|
||||
con = returnType.sigunValue
|
||||
}else{
|
||||
con = returnType.sidoValue
|
||||
let con;
|
||||
if (returnType.sigunValue != "0") {
|
||||
con = returnType.sigunValue;
|
||||
} else {
|
||||
con = returnType.sidoValue;
|
||||
}
|
||||
rainSttnSearch('1', '20' ,con);
|
||||
rainSttnSearch(1, "20", con);
|
||||
}}
|
||||
excelClick={excelClick}
|
||||
initClick={function (): void {}}
|
||||
@@ -140,16 +122,15 @@ console.log(rainSttn.rainSttNodeList)
|
||||
<UiTable
|
||||
headName={[]}
|
||||
tableData={bdstTable || []}
|
||||
children={<HeadMakeColSpan upHeadList={rainSttn.rainSttNodeList}/>}
|
||||
children={
|
||||
<HeadMakeColSpan upHeadList={rainSttn.rainSttNodeList} />
|
||||
}
|
||||
headlist={rainSttn.rainSttHeadList}
|
||||
pageSize={0}
|
||||
total={0}
|
||||
pageSize={20}
|
||||
total={100000}
|
||||
cellClick={undefined}
|
||||
onPageChange={function (page: number): void {
|
||||
throw new Error("Function not implemented.");
|
||||
}}
|
||||
>
|
||||
</UiTable>
|
||||
onPageChange={setPageNation}
|
||||
></UiTable>
|
||||
</ListDiv>
|
||||
</div>
|
||||
</div>
|
||||
@@ -159,7 +140,15 @@ console.log(rainSttn.rainSttNodeList)
|
||||
setIsChHead(!isChHead);
|
||||
}}
|
||||
bodyClass={""}
|
||||
body={<HeadChModal type={"rain"} />}
|
||||
body={
|
||||
<HeadChModal
|
||||
type={"RNB"}
|
||||
headList={rainSttn.rainSttHeadList.map((item) => ({
|
||||
...item,
|
||||
visible: item.visible ?? false,
|
||||
}))}
|
||||
/>
|
||||
}
|
||||
/>
|
||||
</ContentsDiv>
|
||||
</>
|
||||
|
||||
@@ -0,0 +1,157 @@
|
||||
"use client";
|
||||
import { useWrStore } from "@/app/store";
|
||||
import { btnClass } from "@/app/store/common/code";
|
||||
import type { customRswtBdst } from "@/app/store/ruseFcltMng/fcltReg/rswtReg";
|
||||
import { excelDownload, getCityOrSgg, tableData } from "@/components/lib/func/commom";
|
||||
import HeadChModal from "@/components/ui/modal/headChModal/headChModal";
|
||||
import {
|
||||
ContentsDiv,
|
||||
SearchBaseForm,
|
||||
Title,
|
||||
UiModal,
|
||||
UiTable,
|
||||
type ReturnType,
|
||||
} from "@common/business_components/ui";
|
||||
import ListDiv from "@common/business_components/ui/list_div";
|
||||
import { HeadMakeColSpan } from "@common/business_components/ui/table/HeadMakeColSpan";
|
||||
import { Button } from "@common/components/ui";
|
||||
import { useCallback, useEffect, useRef, useState } from "react";
|
||||
|
||||
export default function RswtSttn() {
|
||||
const { code, rswtSttn, rswtSttnSearch ,rswtSttnInit} = useWrStore((state) => state);
|
||||
const [pageNation, setPageNation] = useState(1);
|
||||
|
||||
const { rswtSttnRes } = rswtSttn;
|
||||
const [isChHead, setIsChHead] = useState(false);
|
||||
const ref = useRef<ReturnType>({} as ReturnType);
|
||||
const [bdstTable, setBdstTable] = useState<customRswtBdst[]>();
|
||||
|
||||
const codeData = getCityOrSgg(ref);
|
||||
|
||||
|
||||
useEffect(() => {
|
||||
if (!rswtSttn.isInit) {
|
||||
|
||||
rswtSttnInit('0')
|
||||
}
|
||||
}, [rswtSttn.isInit, rswtSttnInit]);
|
||||
|
||||
useEffect(() => {
|
||||
if (rswtSttnRes.length > 0 && code.cityCd.length > 0) {
|
||||
const data = tableData(rswtSttnRes, { code });
|
||||
const chData = data
|
||||
.map((item: customRswtBdst) => ({
|
||||
...item,
|
||||
...item.reuseBuilding[0],
|
||||
...item.reuseBuilding[0]?.rswtrObj,
|
||||
chBuildingYn:item.chgBuilding.length>0?'Y':'N'
|
||||
}))
|
||||
.filter((item: customRswtBdst) => item.reuseBuilding[0]?.rswtrObj !== undefined);
|
||||
|
||||
console.log("chData ", chData)
|
||||
setBdstTable(chData);
|
||||
}
|
||||
}, [code, rswtSttnRes]);
|
||||
|
||||
|
||||
useEffect(() => {
|
||||
if (rswtSttn.excelList.length > 0) {
|
||||
if (rswtSttn.excelList.length === 0) return;
|
||||
excelDownload(
|
||||
rswtSttn.excelList,
|
||||
"중수도시설 현황",
|
||||
"sample_rswtSttn.xlsx"
|
||||
);
|
||||
}
|
||||
}, [rswtSttn.excelList]);
|
||||
|
||||
const excelClick = useCallback(
|
||||
(returnType: ReturnType) => {
|
||||
let con;
|
||||
if (returnType.sigunValue != "0") {
|
||||
con = returnType.sigunValue;
|
||||
} else {
|
||||
con = returnType.sidoValue;
|
||||
}
|
||||
rswtSttnSearch(1, "10000", con);
|
||||
},
|
||||
[rswtSttnSearch]
|
||||
);
|
||||
|
||||
useEffect(() => {
|
||||
if (codeData != null) rswtSttnSearch(pageNation, "20", codeData);
|
||||
}, [pageNation]);
|
||||
|
||||
|
||||
return (
|
||||
<>
|
||||
<ContentsDiv>
|
||||
<div className="grid grid-cols-4 gap-4 ">
|
||||
<div className="col-span-4">
|
||||
<Title title={"중수도시설 현황"} />
|
||||
<SearchBaseForm
|
||||
selectSidoData={code.cityCd}
|
||||
selectSigunData={code.sggCd}
|
||||
selectRegionData={code.rvbsnCd}
|
||||
selectUnitWaterShedData={code.lgbsnCd}
|
||||
selectMiddleRegionData={code.mdmbsnCd}
|
||||
selectEnvPartData={code.lclgvrnmntCd}
|
||||
rightChildren={
|
||||
<Button
|
||||
className={btnClass}
|
||||
onClick={() => {
|
||||
setIsChHead(true);
|
||||
}}
|
||||
>
|
||||
조회항목설정
|
||||
</Button>
|
||||
}
|
||||
leftChildren={undefined}
|
||||
queryClick={function (returnType: ReturnType): void {
|
||||
// '{partValue: 'A', sidoValue: '0', sigunValue: '0', regionValue: '0', unitWaterShedValue: '0', …}'
|
||||
let con;
|
||||
if (returnType.sigunValue != "0") {
|
||||
con = returnType.sigunValue;
|
||||
} else {
|
||||
con = returnType.sidoValue;
|
||||
}
|
||||
rswtSttnSearch(1, "20", con);
|
||||
}}
|
||||
excelClick={excelClick}
|
||||
initClick={function (): void {}}
|
||||
btnClass={btnClass}
|
||||
ref={ref}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<div className="grid grid-cols-6 gap-4 ">
|
||||
<div className="col-span-6">
|
||||
<ListDiv>
|
||||
<UiTable
|
||||
headName={[]}
|
||||
tableData={bdstTable || []}
|
||||
children={
|
||||
<HeadMakeColSpan upHeadList={rswtSttn.rswtSttNodeList} />
|
||||
}
|
||||
headlist={rswtSttn.rswtSttHeadList}
|
||||
pageSize={20}
|
||||
total={10000}
|
||||
cellClick={undefined}
|
||||
onPageChange={setPageNation}
|
||||
|
||||
></UiTable>
|
||||
</ListDiv>
|
||||
</div>
|
||||
</div>
|
||||
<UiModal
|
||||
open={isChHead}
|
||||
onOpenChange={() => {
|
||||
setIsChHead(!isChHead);
|
||||
}}
|
||||
bodyClass={""}
|
||||
body={<HeadChModal headList={(rswtSttn.rswtSttHeadList||[]).map(item => ({ ...item, visible: item.visible ?? false }))} type={"RST"} />}
|
||||
/>
|
||||
</ContentsDiv>
|
||||
</>
|
||||
);
|
||||
}
|
||||
@@ -9,7 +9,6 @@ import { excelDownload } from "@/components/lib/func/commom";
|
||||
import ChkgdExcel from "@/components/ui/modal/chkgdExcel/chkgdExcel";
|
||||
import ChkgdModal from "@/components/ui/modal/chkgdModal/chkgdModal";
|
||||
import RainChkgdTable from "@/components/ui/table/chkgdTable/rainChkgd/rainChkgdTable";
|
||||
import RainChkgdTableModal from "@/components/ui/table/chkgdTable/rainChkgd/rainChkgdTableModal";
|
||||
import RswtChkgdTable from "@/components/ui/table/chkgdTable/rswtChkgd/rswtChkgdTable";
|
||||
import {
|
||||
ContentsDiv,
|
||||
@@ -61,6 +60,7 @@ export default function Page() {
|
||||
}, [rainChkgdn.excelList]);
|
||||
|
||||
const excelClick= useCallback(()=>{
|
||||
|
||||
rainChkExcelDownload(code.cityCd, code.sggCd);
|
||||
}, [rainChkExcelDownload, code.cityCd, code.sggCd]);
|
||||
|
||||
@@ -72,9 +72,7 @@ export default function Page() {
|
||||
|
||||
const clickDelete=(data:number[])=>{
|
||||
if(data.length>0){
|
||||
data.forEach((data) =>{
|
||||
rainChkDelete( String(data) )
|
||||
})
|
||||
rainChkDelete( data )
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -313,7 +313,7 @@ type rainChkgdnActions = {
|
||||
rainChkGuidUpdate(rainChk: rainChkZodType): Promise<void>;
|
||||
rainChkExcelDownload(sidoCode: SelectDataType[],sggCode: SelectDataType[]): Promise<void>
|
||||
rainChkExcelDataUPload(excelData:rainChkZodType[]) : Promise<void>
|
||||
rainChkDelete(chkgdnPk:string) :Promise<void>
|
||||
rainChkDelete( chkgdnPks:number[] ) :Promise<void>
|
||||
};
|
||||
|
||||
export type rainChkgdnType = rainChkgdnState & rainChkgdnActions;
|
||||
@@ -367,7 +367,9 @@ export const rainChkgdnActionsExport: (set: any) => rainChkgdnActions = (
|
||||
) => {
|
||||
return {
|
||||
rainChkExcelDownload:async(sidoCode:SelectDataType[], sggCode:SelectDataType[])=>{
|
||||
const data = await getFetch(fetchType.WR, "/reuseFc/building/RNB/0")
|
||||
|
||||
// 로그인한 아이디의 시도 or 시군구로 들어가야하는데 현재는 그냥 0으로 하드코딩
|
||||
const data = await getFetch(fetchType.WR, `/reuseFc/buildingFlg/RNB/41`)
|
||||
// const excelList = buildingToExcelType(data, sidoCode, sggCode);
|
||||
|
||||
const excelList = buildingToExcelType(data, sidoCode, sggCode);
|
||||
@@ -454,9 +456,9 @@ export const rainChkgdnActionsExport: (set: any) => rainChkgdnActions = (
|
||||
|
||||
|
||||
},
|
||||
rainChkDelete: async (chkgdnPk:string) =>{
|
||||
rainChkDelete: async (chkgdnPks:number[] ) =>{
|
||||
try{
|
||||
const res = await deleteFectch(`/reuseChk/rainy/${chkgdnPk}`,'');
|
||||
const res = await deleteFectch(`/reuseChk/rainy`,chkgdnPks);
|
||||
|
||||
if(res.ok){
|
||||
ToastFormUi({body:"삭제가 완료되었습니다. " ,title:'지도점검 삭제'})
|
||||
|
||||
@@ -25,21 +25,21 @@ export const hdtflZod = z.object({
|
||||
instlCst: z.number().nullish().default(0),
|
||||
operMngCd: z.string().nullish().default(""),
|
||||
anlOperCst: z.number().default(0),
|
||||
instlCstSprtYn: z.enum(["Y", "N"]),
|
||||
instlCstSprtYn: z.enum(["Y", "N"]).nullish(),
|
||||
instlCstSprtAmt: z.number().nullish().default(0),
|
||||
grntchBdstCertYn: z.enum(["Y", "N"]),
|
||||
grntchBdstCertYr: z .string().default("")
|
||||
.refine((year) =>year.length ===0 || /^\d{4}$/.test(year),{
|
||||
message:'4자리 연도만 입력하세요'
|
||||
}),
|
||||
// grntchBdstCertYn: z.enum(["Y", "N"]),
|
||||
// grntchBdstCertYr: z .string().default("")
|
||||
// .refine((year) =>year.length ===0 || /^\d{4}$/.test(year),{
|
||||
// message:'4자리 연도만 입력하세요'
|
||||
// }),
|
||||
grntchBdstCertNo: z.string().nullish().default(""),
|
||||
grntchBdstCertGrd: z.string().nullish().default(""),
|
||||
crgRdctYn: z.enum(["Y", "N"]),
|
||||
crgRdctBss: z.string().nullish().default(""),
|
||||
crgRdctAmt: z.number().nullish().default(0),
|
||||
ruseFcltFlg: z.string().nullish().default(""),
|
||||
// crgRdctYn: z.enum(["Y", "N"]),
|
||||
// crgRdctBss: z.string().nullish().default(""),
|
||||
// crgRdctAmt: z.number().nullish().default(0),
|
||||
ruseFcltFlg: z.string().nullish().default(""),
|
||||
bdstUsgCd: z.number().default(0),
|
||||
lawTrgtYn: z.enum(["Y", "N"]),
|
||||
lawTrgtYn: z.enum(["Y", "N"]).nullish(),
|
||||
rgtr:z.string().nullish().default(null),
|
||||
mdfr:z.string().nullish().default(null),
|
||||
// htdflObj 매핑
|
||||
@@ -49,13 +49,13 @@ export const hdtflZod = z.object({
|
||||
bdstRuseFcltFk: z.number().nullish(),
|
||||
etgtType: z.string().default(""),
|
||||
fclCpct: z.number().default(0),
|
||||
plwtYn: z.string().default(""),
|
||||
plwtYn: z.enum(["Y", "N"]),
|
||||
orgwtWtritSpt: z.number().default(0),
|
||||
orgwtOcrnProcs: z.string().default(""),
|
||||
wtritEntrcTp: z.number().max(4, "온도는 100이상이 될 수 없습니다.")
|
||||
.default(0),
|
||||
amtgnr: z.number().default(0),
|
||||
prcsProcsYn: z.string().default(""),
|
||||
prcsProcsYn: z.enum(["Y", "N"]),
|
||||
prcsFcltCpct: z.number().default(0),
|
||||
fmYn: z.string().default(""),
|
||||
utztnCpct: z.number().default(0),
|
||||
@@ -75,7 +75,10 @@ export const hdtflZod = z.object({
|
||||
rgtr:z.string().nullish().default(null),
|
||||
mdfr:z.string().nullish().default(null),
|
||||
})
|
||||
.default({}),
|
||||
.default({
|
||||
plwtYn: "N",
|
||||
prcsProcsYn: "N",
|
||||
}),
|
||||
})
|
||||
)
|
||||
.default([]),
|
||||
@@ -84,7 +87,7 @@ export const hdtflZod = z.object({
|
||||
z.object({
|
||||
bdstInfoFk: z.number().nullish(),
|
||||
archChgPrmsnDt: z.coerce.date() ,
|
||||
archChgArea: z.string().default("-"),
|
||||
archChgArea: z.string().default("-").nullish(),
|
||||
bdstChgNm: z.string().default(""),
|
||||
rgtr:z.string().nullish().default(null),
|
||||
mdfr:z.string().nullish().default(null),
|
||||
@@ -94,7 +97,6 @@ export const hdtflZod = z.object({
|
||||
});
|
||||
|
||||
export type customHtdflBdst = z.infer<typeof hdtflZod>
|
||||
//export type customHtdflBdst = z.infer<typeof hdtflZod>;
|
||||
|
||||
|
||||
export type htdflFacState = {
|
||||
@@ -105,9 +107,11 @@ export type htdflFacState = {
|
||||
};
|
||||
};
|
||||
type htdflFacSActions = {
|
||||
initHtdfl: (txt: string | undefined) => void;
|
||||
htdflUpdate:(data: customHtdflBdst) => void;
|
||||
htdflReg:(data: customHtdflBdst) => void;
|
||||
initHtdfl: (code: string | number) => void;
|
||||
htdflBdstUpdate:(data: customHtdflBdst, code:string|number) => void;
|
||||
htdflBdstReg:(data: customHtdflBdst, code:string|number) => void;
|
||||
getHtdflBdstData:(pageNation:number, code:string|number) =>void;
|
||||
|
||||
};
|
||||
|
||||
const htdflRes: customHtdflBdst[] = [];
|
||||
@@ -122,26 +126,43 @@ export const htdflFacStateExport: htdflFacState = {
|
||||
},
|
||||
};
|
||||
|
||||
const initFetch = async (txt: string | undefined) => {
|
||||
const htdflRes = await getFetch(
|
||||
|
||||
const initFetch = async (code:string|number) => {
|
||||
const rswtRes = await getFetch(
|
||||
"wr",
|
||||
`/drain/facilityList/1/20/0` + (txt ? `/${txt}` : "")
|
||||
);
|
||||
const chHtdflRes = htdflRes.map((item: customHtdflBdst) => {
|
||||
return {
|
||||
...item,
|
||||
bdstChgYn: item.chgBuilding.length > 0 ? "Y" : "N",
|
||||
};
|
||||
});
|
||||
return chHtdflRes;
|
||||
`/facilityList/1/20/${code}`)
|
||||
|
||||
return rswtRes;
|
||||
};
|
||||
export const htdflFacActionsExport: (set: any) => htdflFacSActions = (
|
||||
set: any
|
||||
) => {
|
||||
return {
|
||||
initHtdfl: async (txt: string | undefined) => {
|
||||
getHtdflBdstData: async (pageNation: number, code: string | number) => {
|
||||
try {
|
||||
const htdflRes = await initFetch(txt);
|
||||
const rswtRes = await getFetch(
|
||||
"wr",
|
||||
`/drain/facilityList/${pageNation}/20/${code}`
|
||||
);
|
||||
console.log(pageNation)
|
||||
// 여기서 상태 업데이트
|
||||
return set((state: htdflFacState) => ({
|
||||
...state,
|
||||
htdfl: {
|
||||
...state.htdfl,
|
||||
htdflRes: rswtRes,
|
||||
isInit: false,
|
||||
},
|
||||
}));
|
||||
} catch (e) {
|
||||
console.log(e);
|
||||
}
|
||||
},
|
||||
|
||||
|
||||
initHtdfl: async (code: string | number) => {
|
||||
try {
|
||||
const htdflRes = await initFetch(code);
|
||||
set((state: htdflFacState) => {
|
||||
return {
|
||||
...state,
|
||||
@@ -156,7 +177,7 @@ export const htdflFacActionsExport: (set: any) => htdflFacSActions = (
|
||||
console.log(error);
|
||||
}
|
||||
},
|
||||
htdflUpdate: async (data: customHtdflBdst) => {
|
||||
htdflBdstUpdate: async (data: customHtdflBdst, code:string|number) => {
|
||||
try {
|
||||
const chData=await makeMdfr(data)
|
||||
const res = await putFectch("/drain/facility", data);
|
||||
@@ -164,7 +185,7 @@ export const htdflFacActionsExport: (set: any) => htdflFacSActions = (
|
||||
alert(" 수정이 완료되었습니다.");
|
||||
}
|
||||
|
||||
const htdflRes = await initFetch(undefined);
|
||||
const htdflRes = await initFetch(code);
|
||||
set((state: htdflFacState) => ({
|
||||
...state,
|
||||
htdfl: {
|
||||
@@ -180,7 +201,7 @@ export const htdflFacActionsExport: (set: any) => htdflFacSActions = (
|
||||
);
|
||||
}
|
||||
},
|
||||
htdflReg: async (data: customHtdflBdst) => {
|
||||
htdflBdstReg: async (data: customHtdflBdst , code:string|number) => {
|
||||
try {
|
||||
const chData=await makeRstr(data)
|
||||
const res = await postFectch("/drain/facility", data);
|
||||
@@ -211,7 +232,7 @@ export const htdflFacActionsExport: (set: any) => htdflFacSActions = (
|
||||
|
||||
}
|
||||
}
|
||||
const htdflRes = await initFetch(undefined);
|
||||
const htdflRes = await initFetch(code);
|
||||
set((state: htdflFacState) => ({
|
||||
...state,
|
||||
htdfl: {
|
||||
|
||||
@@ -17,6 +17,9 @@ export const rswtZod = z.object({
|
||||
archChgArea: z.number().default(0),
|
||||
rgtr: z.string().nullish().default(null),
|
||||
mdfr: z.string().nullish().default(null),
|
||||
bdstUsgText: z.string().default(''),
|
||||
cityText: z.string().default(''),
|
||||
sggText: z.string().default(''),
|
||||
|
||||
reuseBuilding: z
|
||||
.array(
|
||||
@@ -56,6 +59,7 @@ export const rswtZod = z.object({
|
||||
wtrUsqty: z.number().default(0),
|
||||
oblgTrgtWtrUsqty: z.number().nullish().default(0),
|
||||
orgwtKndCd: z.string().default(""),
|
||||
filtrTrtmfctCpct: z.string().default(""),
|
||||
filtrTrtmfctProcs: z.string().default(""),
|
||||
filtrTrtmfctUsgCd: z.string().default(""),
|
||||
rswtrUsqty: z.number().default(0),
|
||||
@@ -128,7 +132,7 @@ export const rswtFacActionsExport: (set: any) => rswtFacSActions = (
|
||||
rswtBdstSearch: async(txt:string,pageNation:number,code:string|number) =>{
|
||||
try{
|
||||
|
||||
const rswtRes = await getFetch('wr' , `/reuseFc/rainyInfoList/${pageNation}/20/${code}` +(txt? `/${txt}`:''))
|
||||
const rswtRes = await getFetch('wr' , `/reuseFc/waterreuseFc/${pageNation}/20/${code}` +(txt? `/${txt}`:''))
|
||||
set((state: rswtFacState) => {
|
||||
return {
|
||||
...state,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import type { customRainBdst } from "../../fcltReg/rainReg";
|
||||
|
||||
export const excelSttnParsing = (data: customRainBdst[]): string[][] => {
|
||||
export const excelRainSttnParsing = (data: customRainBdst[]): string[][] => {
|
||||
const excelExportData: string[][] = [];
|
||||
|
||||
data.forEach((item) => {
|
||||
@@ -31,3 +31,4 @@ export const excelSttnParsing = (data: customRainBdst[]): string[][] => {
|
||||
});
|
||||
return excelExportData;
|
||||
};
|
||||
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
import type { CommonTableProps } from "@/app/store/common/type/headder";
|
||||
import { z } from "zod";
|
||||
|
||||
|
||||
export const rainSttnHeadListType = z.array(
|
||||
export const sttnHeadListType = z.array(
|
||||
z.object({
|
||||
id: z.string(),
|
||||
title: z.string(),
|
||||
@@ -10,7 +11,7 @@ export const rainSttnHeadListType = z.array(
|
||||
);
|
||||
|
||||
|
||||
export const rainSttHeadListExport: z.infer<typeof rainSttnHeadListType> = [
|
||||
export const rainSttHeadListExport: z.infer<typeof sttnHeadListType> = [
|
||||
|
||||
{
|
||||
id: "cityText",
|
||||
|
||||
@@ -3,10 +3,10 @@ import { fetchType, getFetch } from "@/components/lib/api";
|
||||
import {
|
||||
type customRainBdst,
|
||||
} from "../../fcltReg/rainReg";
|
||||
import { excelSttnParsing } from "./excel";
|
||||
import { excelRainSttnParsing } from "./excel";
|
||||
import {
|
||||
rainSttHeadListExport,
|
||||
rainSttnHeadListType,
|
||||
sttnHeadListType,
|
||||
rainSttNodeListExport,
|
||||
} from "./headList";
|
||||
import type { z } from "zod";
|
||||
@@ -92,9 +92,10 @@ export type rainSttnState = {
|
||||
};
|
||||
};
|
||||
type rainSttnActions = {
|
||||
rainSttnSearch: (page: string, total: string, con: string) => void;
|
||||
rainSttnInit:(con:string) => void
|
||||
rainSttnSearch: (page: number, total: string, con: string) => void;
|
||||
rainChSttnHead: (
|
||||
headList: z.infer<typeof rainSttnHeadListType>,
|
||||
headList: z.infer<typeof sttnHeadListType>,
|
||||
) => void;
|
||||
};
|
||||
|
||||
@@ -114,14 +115,35 @@ export const rainSttnActionsExport: (set: any) => rainSttnActions = (
|
||||
set: any
|
||||
) => {
|
||||
return {
|
||||
rainSttnSearch: async (page: string, total: string, con: string) => {
|
||||
rainSttnInit: async( con:string)=>{
|
||||
try{
|
||||
|
||||
const rainSttnRes = await getFetch(
|
||||
fetchType.WR,
|
||||
`/reuseFc/rainyInfoList/1/20/${con}`
|
||||
);
|
||||
set((state: rainSttnState) => {
|
||||
return {
|
||||
...state,
|
||||
rainSttn: {
|
||||
...state.rainSttn,
|
||||
rainSttnRes: rainSttnRes,
|
||||
isInit: false,
|
||||
},
|
||||
};
|
||||
});
|
||||
}catch(e){
|
||||
console.log(e)
|
||||
}
|
||||
},
|
||||
rainSttnSearch: async (page: number, total: string, con: string) => {
|
||||
try {
|
||||
const rainSttnRes = await getFetch(
|
||||
fetchType.WR,
|
||||
`/reuseFc/rainyInfoList/${page}/${total}/${con}`
|
||||
);
|
||||
if (Number(total) > 9000) {
|
||||
const rainExcel = excelSttnParsing(rainSttnRes);
|
||||
const rainExcel = excelRainSttnParsing(rainSttnRes);
|
||||
set((state: rainSttnState) => {
|
||||
return {
|
||||
...state,
|
||||
@@ -147,7 +169,7 @@ export const rainSttnActionsExport: (set: any) => rainSttnActions = (
|
||||
}
|
||||
},
|
||||
rainChSttnHead: async (
|
||||
headList: z.infer<typeof rainSttnHeadListType>
|
||||
headList: z.infer<typeof sttnHeadListType>
|
||||
) => {
|
||||
const changeNodeList= controlHeadView(headList,rainSttNodeList)
|
||||
|
||||
|
||||
@@ -0,0 +1,33 @@
|
||||
import type { customRswtBdst } from "../../fcltReg/rswtReg";
|
||||
|
||||
export const excelRSwtSttnParsing = (data: customRswtBdst[]): string[][] => {
|
||||
const excelExportData: string[][] = [];
|
||||
|
||||
data.forEach((item) => {
|
||||
excelExportData.push([
|
||||
String(item.cityText),
|
||||
String(item.sggText),
|
||||
item.bdstNm ?? "",
|
||||
item.daddr ?? "",
|
||||
String(item.bdstUsgText ?? ""),
|
||||
String(item.frstArchPrmsnDt ?? ""),
|
||||
String(item.archArea ?? ""),
|
||||
String(item.chgBuilding.length>0 ? "Y" :"N"),
|
||||
String(item.reuseBuilding?.[0]?.lawTrgtYn ?? ""),
|
||||
String(item.reuseBuilding?.[0]?.instlCmptnDt ?? ""),
|
||||
String(item.reuseBuilding?.[0]?.rswtrObj.oblgTrgtWtrUsqty ?? ""),
|
||||
String(item.reuseBuilding?.[0]?.instlCst ?? ""),
|
||||
item.reuseBuilding?.[0]?.rswtrObj?.orgwtKndCd ?? "",
|
||||
String(item.reuseBuilding?.[0]?.rswtrObj.filtrTrtmfctCpct ?? ""),
|
||||
String(item.reuseBuilding?.[0]?.rswtrObj?.filtrTrtmfctProcs ?? ""),
|
||||
String(item.reuseBuilding?.[0]?.rswtrObj?.filtrTrtmfctUsgCd ?? ""),
|
||||
String(item.reuseBuilding?.[0]?.instlCstSprtYn ?? ""),
|
||||
String(item.reuseBuilding?.[0]?.instlCstSprtAmt ?? ""),
|
||||
String(item.reuseBuilding?.[0]?.grntchBdstCertYn ?? ""),
|
||||
String(item.reuseBuilding?.[0]?.grntchBdstCertYr ?? ""),
|
||||
String(item.reuseBuilding?.[0]?.grntchBdstCertNo ?? ""),
|
||||
String(item.reuseBuilding?.[0]?.grntchBdstCertGrd ?? "")
|
||||
]);
|
||||
});
|
||||
return excelExportData;
|
||||
};
|
||||
@@ -0,0 +1,400 @@
|
||||
import type { z } from "zod";
|
||||
import type { sttnHeadListType } from "../rainSttn/headList";
|
||||
import type { CommonTableProps } from "@/app/store/common/type/headder";
|
||||
|
||||
export const rswtSttHeadListExport: z.infer<typeof sttnHeadListType> = [
|
||||
{
|
||||
id: "cityText",
|
||||
title: "시도",
|
||||
visible: true,
|
||||
},
|
||||
{
|
||||
id: "sggText",
|
||||
title: "시군구",
|
||||
visible: true,
|
||||
},
|
||||
{
|
||||
id: "bdstNm",
|
||||
title: "건축물명",
|
||||
visible: true,
|
||||
},
|
||||
{
|
||||
id: "daddr",
|
||||
title: "주소",
|
||||
visible: true,
|
||||
},
|
||||
{
|
||||
id: "bdsgUsgText",
|
||||
title: "건축물용도",
|
||||
visible: true,
|
||||
},
|
||||
{
|
||||
id: "frstArchPrmsnDt",
|
||||
title: "최초건축허가일시",
|
||||
visible: true,
|
||||
},
|
||||
{
|
||||
id: "archArea",
|
||||
title: "건축면적",
|
||||
visible: true,
|
||||
},
|
||||
{
|
||||
id: "wtrUsqty",
|
||||
title: "물사용량",
|
||||
visible: true,
|
||||
},
|
||||
{
|
||||
id: "chBuildingYn",
|
||||
title: "중축・개축・재축여부",
|
||||
visible: true,
|
||||
},
|
||||
|
||||
{
|
||||
id: "lawTrgtYn",
|
||||
title: "법적의무대상여부",
|
||||
visible: true,
|
||||
},
|
||||
|
||||
{
|
||||
id: "oblgTrgtWtrUsqty",
|
||||
title: "의무대상물사용량 ",
|
||||
visible: true,
|
||||
},
|
||||
{
|
||||
id: "instlCmptnDt",
|
||||
title: "설치완료일시",
|
||||
visible: true,
|
||||
},
|
||||
{
|
||||
id: "instlCst",
|
||||
title: "설치비용",
|
||||
visible: true,
|
||||
},
|
||||
|
||||
{
|
||||
id: "orgwtKndCd",
|
||||
title: "원수종류",
|
||||
visible: true,
|
||||
},
|
||||
|
||||
{
|
||||
id: "filtrTrtmfctCpct",
|
||||
title: "처리시설용량",
|
||||
visible: true,
|
||||
},
|
||||
{
|
||||
id: "filtrTrtmfctProcs",
|
||||
title: "주요처리공정",
|
||||
visible: true,
|
||||
},
|
||||
{
|
||||
id: "filtrTrtmfctUsgCd",
|
||||
title: "이용용도",
|
||||
visible: true,
|
||||
},
|
||||
|
||||
{
|
||||
id: "instlCstSprtYn",
|
||||
title: "설치지원비용여부",
|
||||
visible: true,
|
||||
},
|
||||
{
|
||||
id: "instlCstSprtAmt",
|
||||
title: "설치지원비용",
|
||||
visible: true,
|
||||
},
|
||||
|
||||
{
|
||||
id: "grntchBdstCertYn",
|
||||
title: "녹색건축물인증여부",
|
||||
visible: true,
|
||||
},
|
||||
{
|
||||
id: "grntchBdstCertYr",
|
||||
title: "녹색건축물인증년도",
|
||||
visible: true,
|
||||
},
|
||||
{
|
||||
id: "grntchBdstCertNo",
|
||||
title: "녹색건축물인증번호",
|
||||
visible: true,
|
||||
},
|
||||
{
|
||||
id: "grntchBdstCertGrd",
|
||||
title: "녹색건축물인증등급",
|
||||
visible: true,
|
||||
},
|
||||
];
|
||||
|
||||
// id는 다확인해야함
|
||||
export const rswtSttNodeListExport: CommonTableProps[] = [
|
||||
{
|
||||
id: "bdnstInfo",
|
||||
title: "1.건축물정보",
|
||||
visible: true,
|
||||
row: 1,
|
||||
rowSpan: 1,
|
||||
colSpan: 12,
|
||||
},
|
||||
{
|
||||
id: "rswtFcltInfo",
|
||||
title: "2.중수도시설정보",
|
||||
visible: true,
|
||||
row: 1,
|
||||
rowSpan: 1,
|
||||
colSpan: 5,
|
||||
},
|
||||
{
|
||||
id: "insenInfo",
|
||||
title: "3.인센티브 정보",
|
||||
visible: true,
|
||||
row: 1,
|
||||
rowSpan: 1,
|
||||
colSpan: 6,
|
||||
},
|
||||
{
|
||||
id: "adminDiv",
|
||||
title: "행정구역",
|
||||
visible: true,
|
||||
row: 2,
|
||||
upName: "bdnstInfo",
|
||||
rowSpan: 1,
|
||||
colSpan: 2,
|
||||
},
|
||||
|
||||
// 3번째줄 시작
|
||||
{
|
||||
id: "cityText",
|
||||
title: "시도",
|
||||
visible: true,
|
||||
upName: "adminDiv",
|
||||
row: 3,
|
||||
rowSpan: 1,
|
||||
colSpan: 1,
|
||||
},
|
||||
{
|
||||
id: "sggText",
|
||||
title: "시군구",
|
||||
visible: true,
|
||||
upName: "adminDiv",
|
||||
row: 3,
|
||||
rowSpan: 1,
|
||||
colSpan: 1,
|
||||
},
|
||||
|
||||
// 2번째 줄
|
||||
// 1번째 줄 건축물정보 아래의 행으로 만들 헤더
|
||||
{
|
||||
id: "bdstNm",
|
||||
title: "건축물명",
|
||||
visible: true,
|
||||
upName: "bdnstInfo",
|
||||
row: 2,
|
||||
rowSpan: 2,
|
||||
colSpan: 1,
|
||||
},
|
||||
{
|
||||
id: "daddr",
|
||||
title: "주소",
|
||||
visible: true,
|
||||
upName: "bdnstInfo",
|
||||
row: 2,
|
||||
rowSpan: 2,
|
||||
colSpan: 1,
|
||||
},
|
||||
{
|
||||
id: "bdsgUsgText",
|
||||
title: "건축물용도",
|
||||
upName: "bdnstInfo",
|
||||
visible: true,
|
||||
row: 2,
|
||||
rowSpan: 2,
|
||||
colSpan: 1,
|
||||
},
|
||||
{
|
||||
id: "frstArchPrmsnDt",
|
||||
title: "최초건축허가일시",
|
||||
upName: "bdnstInfo",
|
||||
visible: true,
|
||||
row: 2,
|
||||
rowSpan: 2,
|
||||
colSpan: 1,
|
||||
},
|
||||
{
|
||||
id: "archArea",
|
||||
title: "건축면적",
|
||||
upName: "bdnstInfo",
|
||||
visible: true,
|
||||
row: 2,
|
||||
rowSpan: 2,
|
||||
colSpan: 1,
|
||||
},
|
||||
{
|
||||
id: "wtrUsqty",
|
||||
title: "물사용량",
|
||||
upName: "bdnstInfo",
|
||||
visible: true,
|
||||
row: 2,
|
||||
rowSpan: 2,
|
||||
colSpan: 1,
|
||||
},
|
||||
{
|
||||
id: "chBuildingYn",
|
||||
title: "중축・개축・재축여부",
|
||||
upName: "bdnstInfo",
|
||||
visible: true,
|
||||
row: 2,
|
||||
rowSpan: 2,
|
||||
colSpan: 1,
|
||||
},
|
||||
|
||||
{
|
||||
id: "lawTrgtYn",
|
||||
title: "법적의무대상여부",
|
||||
upName: "bdnstInfo",
|
||||
visible: true,
|
||||
row: 2,
|
||||
rowSpan: 2,
|
||||
colSpan: 1,
|
||||
},
|
||||
{
|
||||
id: "oblgTrgtWtrUsqty",
|
||||
title: "의무대상물사용량",
|
||||
upName: "bdnstInfo",
|
||||
visible: true,
|
||||
row: 2,
|
||||
rowSpan: 2,
|
||||
colSpan: 1,
|
||||
},
|
||||
{
|
||||
id: "instlCmptnDt",
|
||||
title: "설치완료일시",
|
||||
upName: "bdnstInfo",
|
||||
visible: true,
|
||||
row: 2,
|
||||
rowSpan: 2,
|
||||
colSpan: 1,
|
||||
},
|
||||
{
|
||||
id: "instlCst",
|
||||
title: "설치비용",
|
||||
upName: "rswtFcltInfo",
|
||||
visible: true,
|
||||
row: 2,
|
||||
rowSpan: 2,
|
||||
colSpan: 1,
|
||||
},
|
||||
|
||||
{
|
||||
id: "orgwtKndCd",
|
||||
title: "원수종류",
|
||||
upName: "rswtFcltInfo",
|
||||
visible: true,
|
||||
row: 2,
|
||||
rowSpan: 2,
|
||||
colSpan: 1,
|
||||
},
|
||||
|
||||
{
|
||||
id: "filtrTrtmfctCpct",
|
||||
title: "처리시설용량",
|
||||
upName: "rswtFcltInfo",
|
||||
visible: true,
|
||||
row: 2,
|
||||
rowSpan: 2,
|
||||
colSpan: 1,
|
||||
},
|
||||
{
|
||||
id: "filtrTrtmfctProcs",
|
||||
title: "주요처리공정",
|
||||
upName: "rswtFcltInfo",
|
||||
visible: true,
|
||||
row: 2,
|
||||
rowSpan: 2,
|
||||
colSpan: 1,
|
||||
},
|
||||
|
||||
{
|
||||
id: "filtrTrtmfctUsgCd",
|
||||
title: "이용용도",
|
||||
visible: true,
|
||||
upName: "rswtFcltInfo",
|
||||
row: 2,
|
||||
rowSpan: 2,
|
||||
colSpan: 1,
|
||||
},
|
||||
{
|
||||
id: "instlCstSprtYn",
|
||||
title: "설치지원비용여부",
|
||||
upName: "instlCstSprt",
|
||||
visible: true,
|
||||
row: 3,
|
||||
rowSpan: 1,
|
||||
colSpan: 1,
|
||||
},
|
||||
{
|
||||
id: "instlCstSprtAmt",
|
||||
title: "설치지원비용",
|
||||
upName: "instlCstSprt",
|
||||
visible: true,
|
||||
row: 3,
|
||||
rowSpan: 1,
|
||||
colSpan: 1,
|
||||
},
|
||||
|
||||
{
|
||||
id: "instlCstSprt",
|
||||
title: "설치비지원",
|
||||
upName: "insenInfo",
|
||||
visible: true,
|
||||
row: 2,
|
||||
rowSpan: 1,
|
||||
colSpan: 2,
|
||||
},
|
||||
|
||||
{
|
||||
id: "grntchBdstCertYn",
|
||||
title: "녹색건축물인증여부",
|
||||
upName: "grntchBdstCert",
|
||||
visible: true,
|
||||
row: 3,
|
||||
rowSpan: 1,
|
||||
colSpan: 1,
|
||||
},
|
||||
{
|
||||
id: "grntchBdstCertYr",
|
||||
title: "녹색건축물인증년도",
|
||||
upName: "grntchBdstCert",
|
||||
visible: true,
|
||||
row: 3,
|
||||
rowSpan: 1,
|
||||
colSpan: 1,
|
||||
},
|
||||
{
|
||||
id: "grntchBdstCertNo",
|
||||
title: "녹색건축물인증번호",
|
||||
upName: "grntchBdstCert",
|
||||
visible: true,
|
||||
row: 3,
|
||||
rowSpan: 1,
|
||||
colSpan: 1,
|
||||
},
|
||||
{
|
||||
id: "grntchBdstCertGrd",
|
||||
title: "녹색건축물인증등급",
|
||||
upName: "grntchBdstCert",
|
||||
visible: true,
|
||||
row: 3,
|
||||
rowSpan: 1,
|
||||
colSpan: 1,
|
||||
},
|
||||
{
|
||||
id: "grntchBdstCert",
|
||||
title: "녹색건축물인증",
|
||||
upName: "insenInfo",
|
||||
visible: true,
|
||||
row: 2,
|
||||
rowSpan: 1,
|
||||
colSpan: 4,
|
||||
},
|
||||
];
|
||||
@@ -0,0 +1,129 @@
|
||||
import type { CommonTableProps } from "@/app/store/common/type/headder";
|
||||
import type { customRswtBdst } from "../../fcltReg/rswtReg";
|
||||
import type { sttnHeadListType } from "../rainSttn/headList";
|
||||
import type { z } from "zod";
|
||||
import { rswtSttHeadListExport, rswtSttNodeListExport } from "./headList";
|
||||
import { controlHeadView } from "../rainSttn";
|
||||
import { fetchType, getFetch } from "@/components/lib/api";
|
||||
import { excelRainSttnParsing } from "../rainSttn/excel";
|
||||
|
||||
|
||||
|
||||
// 테이블 헤드 리스트
|
||||
const rswtSttNodeList = rswtSttNodeListExport;
|
||||
const rswtSttHeadList = rswtSttHeadListExport;
|
||||
const rswtSttnRes: customRswtBdst[] = [];
|
||||
|
||||
|
||||
|
||||
export type rswtSttnState = {
|
||||
rswtSttn: {
|
||||
rswtSttnRes: customRswtBdst[];
|
||||
rswtSttHeadList: CommonTableProps[];
|
||||
rswtSttNodeList: CommonTableProps[];
|
||||
excelList: [];
|
||||
isInit: boolean;
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
|
||||
type rswtSttnActions = {
|
||||
rswtSttnInit:(con:string) => void;
|
||||
rswtSttnSearch: (page: number, total: string, con: string) => void;
|
||||
rswtChSttnHead: (
|
||||
headList: z.infer<typeof sttnHeadListType>,
|
||||
) => void;
|
||||
};
|
||||
|
||||
export type rswtSttnType = rswtSttnState & rswtSttnActions;
|
||||
|
||||
|
||||
|
||||
export const rswtSttnStateExport: rswtSttnState = {
|
||||
rswtSttn: {
|
||||
rswtSttHeadList: rswtSttHeadList,
|
||||
rswtSttNodeList: rswtSttNodeList,
|
||||
rswtSttnRes: rswtSttnRes,
|
||||
excelList: [],
|
||||
isInit: false,
|
||||
},
|
||||
};
|
||||
|
||||
|
||||
|
||||
export const rswtSttnActionsExport: (set: any) => rswtSttnActions = (
|
||||
set: any
|
||||
) => {
|
||||
return {
|
||||
rswtSttnInit: async( con:string)=>{
|
||||
try{
|
||||
|
||||
const rswtSttnRes = await getFetch(
|
||||
fetchType.WR,
|
||||
`/reuseFc/waterreuseFc/1/20/${con}`
|
||||
);
|
||||
set((state: rswtSttnState) => {
|
||||
return {
|
||||
...state,
|
||||
rswtSttn: {
|
||||
...state.rswtSttn,
|
||||
rswtSttnRes: rswtSttnRes,
|
||||
isInit: false,
|
||||
},
|
||||
};
|
||||
});
|
||||
}catch(e){
|
||||
console.log(e)
|
||||
}
|
||||
},
|
||||
rswtSttnSearch: async (page: number, total: string, con: string) => {
|
||||
try {
|
||||
const rswtSttnRes = await getFetch(
|
||||
fetchType.WR,
|
||||
`/reuseFc/waterreuseFc/${page}/${total}/${con}`
|
||||
);
|
||||
if (Number(total) > 9000) {
|
||||
const rainExcel = excelRainSttnParsing(rswtSttnRes);
|
||||
set((state: rswtSttnState) => {
|
||||
return {
|
||||
...state,
|
||||
rswtSttn: {
|
||||
...state.rswtSttn,
|
||||
excelList: rainExcel,
|
||||
},
|
||||
};
|
||||
});
|
||||
} else
|
||||
set((state: rswtSttnState) => {
|
||||
|
||||
return {
|
||||
...state,
|
||||
rswtSttn: {
|
||||
...state.rswtSttn,
|
||||
rswtSttnRes: rswtSttnRes,
|
||||
isInit: false,
|
||||
},
|
||||
};
|
||||
});
|
||||
} catch (erTxt) {
|
||||
console.log("error", erTxt);
|
||||
}
|
||||
},
|
||||
rswtChSttnHead: async (
|
||||
headList: z.infer<typeof sttnHeadListType>
|
||||
): Promise<void> => {
|
||||
|
||||
console.log('head ', headList)
|
||||
const changeNodeList= controlHeadView(headList,rswtSttNodeList)
|
||||
|
||||
return set((state: rswtSttnState) => ({
|
||||
rswtSttn: {
|
||||
...state.rswtSttn,
|
||||
rswtSttHeadList: headList,
|
||||
rswtSttNodeList: changeNodeList,
|
||||
},
|
||||
}));
|
||||
},
|
||||
};
|
||||
};
|
||||
@@ -34,6 +34,7 @@ import {
|
||||
type rswtFacType,
|
||||
} from "./ruseFcltMng/fcltReg/rswtReg";
|
||||
import { rainSttnActionsExport, rainSttnStateExport, type rainSttnState, type rainSttnType } from "./ruseFcltMng/fcltSttn/rainSttn";
|
||||
import { rswtSttnActionsExport, rswtSttnStateExport, type rswtSttnState, type rswtSttnType } from "./ruseFcltMng/fcltSttn/rswtSttn";
|
||||
|
||||
export type WrStore = comCodeType&
|
||||
pubFacType &
|
||||
@@ -44,7 +45,8 @@ export type WrStore = comCodeType&
|
||||
bdstFulType&
|
||||
rainChkgdnType&
|
||||
rswtChkgdnType&
|
||||
rainSttnType
|
||||
rainSttnType&
|
||||
rswtSttnType
|
||||
;
|
||||
|
||||
export const StoreZus = (
|
||||
@@ -57,7 +59,9 @@ export const StoreZus = (
|
||||
bdstState &
|
||||
rainChkgdnState&
|
||||
rswtChkgdnState&
|
||||
rainSttnState
|
||||
rainSttnState&
|
||||
rswtSttnState
|
||||
|
||||
= {
|
||||
...comCodeStateExport,
|
||||
...pubFacStateExport,
|
||||
@@ -68,7 +72,8 @@ export const StoreZus = (
|
||||
...bdstStateExport,
|
||||
...rainChkgdnStateExport,
|
||||
...rswtChkgdnStateExport,
|
||||
...rainSttnStateExport
|
||||
...rainSttnStateExport,
|
||||
...rswtSttnStateExport
|
||||
}
|
||||
) => {
|
||||
return createStore<WrStore>()((set) => {
|
||||
@@ -89,7 +94,8 @@ export const StoreZus = (
|
||||
...bdstActionsExport(set),
|
||||
...rainChkgdnActionsExport(set),
|
||||
...rswtChkgdnActionsExport(set),
|
||||
...rainSttnActionsExport(set)
|
||||
...rainSttnActionsExport(set),
|
||||
...rswtSttnActionsExport(set)
|
||||
};
|
||||
});
|
||||
};
|
||||
|
||||
@@ -1,70 +1,80 @@
|
||||
import type { comCodeState, } from "@/app/store/common/code";
|
||||
import { filePickedBlob, type SelectDataType } from "@common/business_components/ui";
|
||||
|
||||
|
||||
|
||||
|
||||
import type { comCodeState } from "@/app/store/common/code";
|
||||
import {
|
||||
filePickedBlob,
|
||||
type SelectDataType,
|
||||
type ReturnType,
|
||||
} from "@common/business_components/ui";
|
||||
import type { RefObject } from "react";
|
||||
|
||||
export const getCity = (val: string, sggCd: SelectDataType[]) => {
|
||||
const data = sggCd
|
||||
.filter((item) => String(item.val).substring(0, 2) === val)
|
||||
.map((item) => ({
|
||||
val: item.val,
|
||||
text: item.text // 한국어 텍스트
|
||||
}));
|
||||
return data
|
||||
|
||||
};
|
||||
|
||||
const data = sggCd
|
||||
.filter((item) => String(item.val).substring(0, 2) === val)
|
||||
.map((item) => ({
|
||||
val: item.val,
|
||||
text: item.text, // 한국어 텍스트
|
||||
}));
|
||||
return data;
|
||||
};
|
||||
|
||||
// cd text 넣기
|
||||
export const tableData = ( data: any,code:comCodeState)=>{
|
||||
const chCode = code.code;
|
||||
return data?.map((item: { sggCd: string; ctpvCd: string; reuseBuilding: { lawTrgtYn: any , bdstUsgCd:any}[]; }) => {
|
||||
export const tableData = (data: any, code: comCodeState) => {
|
||||
const chCode = code.code;
|
||||
return data?.map(
|
||||
(item: {
|
||||
sggCd: string;
|
||||
ctpvCd: string;
|
||||
reuseBuilding: { lawTrgtYn: any; bdstUsgCd: any }[];
|
||||
}) => {
|
||||
let returnData = {};
|
||||
const sggText = chCode.sggCd.find(
|
||||
(cd) => cd.val === String(item.sggCd)
|
||||
(cd) => cd.val === String(item.sggCd)
|
||||
)?.text;
|
||||
const cityText = chCode.cityCd.find(
|
||||
(cd) => cd.val === String(item.ctpvCd)
|
||||
)?.text;
|
||||
console
|
||||
.log(item?.reuseBuilding)
|
||||
if (item?.reuseBuilding?.length >0) {
|
||||
|
||||
if (item?.reuseBuilding?.length > 0) {
|
||||
const bdsgUsgText = chCode.bdstUsgCd.find(
|
||||
(cd) =>Number(cd.val) === item?.reuseBuilding[0]?.bdstUsgCd
|
||||
)?.text
|
||||
const lawTrgtYn = item?.reuseBuilding[0]?.lawTrgtYn
|
||||
console
|
||||
.log(bdsgUsgText)
|
||||
(cd) => Number(cd.val) === item?.reuseBuilding[0]?.bdstUsgCd
|
||||
)?.text;
|
||||
const lawTrgtYn = item?.reuseBuilding[0]?.lawTrgtYn;
|
||||
|
||||
returnData= { ...item, sggText: sggText??'없음', cityText: cityText??'없음' ,bdsgUsgText:bdsgUsgText ,lawTrgtYn:lawTrgtYn};
|
||||
}else{
|
||||
returnData= { ...item, sggText: sggText??'없음', cityText: cityText??'없음'};
|
||||
returnData = {
|
||||
...item,
|
||||
sggText: sggText ?? "없음",
|
||||
cityText: cityText ?? "없음",
|
||||
bdsgUsgText: bdsgUsgText,
|
||||
lawTrgtYn: lawTrgtYn,
|
||||
};
|
||||
} else {
|
||||
returnData = {
|
||||
...item,
|
||||
sggText: sggText ?? "없음",
|
||||
cityText: cityText ?? "없음",
|
||||
};
|
||||
}
|
||||
|
||||
return returnData;
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
|
||||
export const excelDownload =(excelList: [][], fileNm:string ,sampleFile:string, headerRange='A1:V3') =>{
|
||||
if (excelList.length === 0) return;
|
||||
fetch(`/${sampleFile}`, {})
|
||||
.then(async (response) => {
|
||||
if (!response.ok) {
|
||||
throw Error(response.statusText)
|
||||
}
|
||||
// 받은 파일 바인너리 처리
|
||||
const blobRet = await response.arrayBuffer()
|
||||
// 버퍼에 있는 엑셀데이터 전달 후 json으로 변환
|
||||
await filePickedBlob(blobRet, excelList,fileNm, 4,headerRange)
|
||||
})
|
||||
}
|
||||
}
|
||||
);
|
||||
};
|
||||
|
||||
export const excelDownload = (
|
||||
excelList: [][],
|
||||
fileNm: string,
|
||||
sampleFile: string,
|
||||
headerRange = "A1:V3"
|
||||
) => {
|
||||
if (excelList.length === 0) return;
|
||||
fetch(`/${sampleFile}`, {}).then(async (response) => {
|
||||
if (!response.ok) {
|
||||
throw Error(response.statusText);
|
||||
}
|
||||
// 받은 파일 바인너리 처리
|
||||
const blobRet = await response.arrayBuffer();
|
||||
// 버퍼에 있는 엑셀데이터 전달 후 json으로 변환
|
||||
await filePickedBlob(blobRet, excelList, fileNm, 4, headerRange);
|
||||
});
|
||||
};
|
||||
|
||||
// onchange 텍스트를 숫자로 and ,제거
|
||||
export const handleCommaNumberChange = (
|
||||
@@ -82,4 +92,15 @@ export const formatCommaNumber = (
|
||||
): string => {
|
||||
if (value === undefined || value === null || value === "") return "";
|
||||
return Number(value).toLocaleString();
|
||||
};
|
||||
};
|
||||
|
||||
export const getCityOrSgg = (ref: RefObject<ReturnType>) => {
|
||||
let con;
|
||||
if (ref.current != null)
|
||||
if (ref.current.sigunValue != "0") {
|
||||
con = ref.current.sigunValue;
|
||||
} else {
|
||||
con = ref.current.sidoValue;
|
||||
}
|
||||
return con;
|
||||
};
|
||||
|
||||
@@ -30,7 +30,7 @@ export default function HtdflRegForm({
|
||||
htdflForm: customHtdflBdst;
|
||||
isModal: boolean;
|
||||
}) {
|
||||
const { code, htdflUpdate, htdflReg } = useWrStore((state) => state);
|
||||
const { code, htdflBdstUpdate, htdflBdstReg } = useWrStore((state) => state);
|
||||
|
||||
const defaultValues: z.infer<typeof hdtflZod> = hdtflZod.parse({});
|
||||
|
||||
@@ -41,15 +41,12 @@ export default function HtdflRegForm({
|
||||
|
||||
const onSubmit = (values: z.infer<typeof hdtflZod>) => {
|
||||
if (isModal) {
|
||||
htdflReg(values);
|
||||
htdflBdstReg(values,'41');
|
||||
} else {
|
||||
htdflUpdate(values);
|
||||
htdflBdstUpdate(values ,'41');
|
||||
}
|
||||
};
|
||||
|
||||
const onSelectValue = (val: string | number) => {
|
||||
console.log(val);
|
||||
};
|
||||
|
||||
const cleanHtdflData = (raw: any): z.infer<typeof hdtflZod> => {
|
||||
return {
|
||||
@@ -159,7 +156,7 @@ export default function HtdflRegForm({
|
||||
label={""}
|
||||
selectClass={selectClass}
|
||||
selectArray={code.yn}
|
||||
onSelectValue={onSelectValue}
|
||||
onSelectValue={field.onChange}
|
||||
value={field.value ?? code.yn[0]?.val}
|
||||
/>
|
||||
</FormUi>
|
||||
@@ -259,7 +256,7 @@ export default function HtdflRegForm({
|
||||
label={""}
|
||||
selectClass={selectClass}
|
||||
selectArray={code.yn}
|
||||
onSelectValue={onSelectValue}
|
||||
onSelectValue={field.onChange}
|
||||
value={field.value ?? code.yn[0]?.val}
|
||||
/>
|
||||
</FormUi>
|
||||
@@ -296,7 +293,7 @@ export default function HtdflRegForm({
|
||||
selectClass={selectClass}
|
||||
label={""}
|
||||
selectArray={code.yn}
|
||||
onSelectValue={onSelectValue}
|
||||
onSelectValue={field.onChange}
|
||||
value={field.value ?? code.yn[0]?.val}
|
||||
/>
|
||||
</FormUi>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { useWrStore } from "@/app/store";
|
||||
import { rainSttnHeadListType } from "@/app/store/ruseFcltMng/fcltSttn/rainSttn/headList";
|
||||
import { sttnHeadListType } from "@/app/store/ruseFcltMng/fcltSttn/rainSttn/headList";
|
||||
import { Form, FormControl, FormDescription, FormField, FormItem, FormLabel, FormMessage } from "@common/business_components/ui";
|
||||
import { Button, Checkbox } from "@common/components/ui";
|
||||
import { zodResolver } from "@hookform/resolvers/zod";
|
||||
@@ -7,38 +7,32 @@ import { useEffect, useState } from "react";
|
||||
import { useForm } from "react-hook-form";
|
||||
import { z } from "zod";
|
||||
|
||||
export default function HeadChModal({type }:{type: string }) {
|
||||
const { rainSttn ,rainChSttnHead} = useWrStore((state) => state);
|
||||
export default function HeadChModal({headList, type }:{headList : z.infer<typeof sttnHeadListType> ,type:string }) {
|
||||
const { rainChSttnHead , rswtChSttnHead} = useWrStore((state) => state);
|
||||
|
||||
|
||||
const { rainSttHeadList, rainSttNodeList } =rainSttn;
|
||||
let items = rainSttHeadList.map(item => ({id:item.id, title:item.title, val:item.visible }));
|
||||
let items = headList.map(item => ({id:item.id, title:item.title, val:item.visible }));
|
||||
|
||||
|
||||
|
||||
// const FormSchema =
|
||||
// z.object({
|
||||
// id: z.string().refine((value) => value.some((item) => item), {
|
||||
// message: "최소한 하나를 선택해주시길 바랍니다.",
|
||||
// }),
|
||||
// visible: z.boolean()
|
||||
// })
|
||||
|
||||
|
||||
const form = useForm<z.infer<typeof rainSttnHeadListType>>({
|
||||
resolver: zodResolver(rainSttnHeadListType),
|
||||
const form = useForm<z.infer<typeof sttnHeadListType>>({
|
||||
resolver: zodResolver(sttnHeadListType),
|
||||
defaultValues: [],
|
||||
})
|
||||
|
||||
|
||||
useEffect(() =>{
|
||||
form.reset(rainSttHeadList)
|
||||
form.reset(headList)
|
||||
|
||||
|
||||
},[rainSttHeadList])
|
||||
},[headList])
|
||||
|
||||
const onSubmit = (headList : z.infer<typeof rainSttnHeadListType> ) =>{
|
||||
rainChSttnHead(headList)
|
||||
const onSubmit = (valueList : z.infer<typeof sttnHeadListType> ) =>{
|
||||
if(type==='RNB'){
|
||||
|
||||
rainChSttnHead(valueList)
|
||||
}else if(type=== 'RST'){
|
||||
rswtChSttnHead(valueList)
|
||||
}
|
||||
}
|
||||
|
||||
return (
|
||||
|
||||
Binary file not shown.
Reference in New Issue
Block a user