From 7fb9454c74415550cace91d1b65b3b627a3a5d21 Mon Sep 17 00:00:00 2001 From: jsyang Date: Fri, 5 Sep 2025 14:17:23 +0900 Subject: [PATCH 01/10] =?UTF-8?q?=EC=A3=BC=EC=9A=94=EA=B7=B8=EB=9E=98?= =?UTF-8?q?=ED=94=84=20=EC=8B=9C=EC=84=A4=EC=9A=A9=EB=9F=89=20>=20?= =?UTF-8?q?=EC=A7=80=ED=95=98=EC=88=98=EC=9C=A0=EC=9E=85=EB=9F=89=20?= =?UTF-8?q?=EC=9C=BC=EB=A1=9C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../(with-layout)/dashboard/maingraph/page.tsx | 2 +- .../app/pages/(with-layout)/dashboard/page.tsx | 2 +- apps/fo/app/store/dashboard/index.tsx | 16 +++++++++++++++- apps/fo/app/store/underWaterInput/index.tsx | 1 + 4 files changed, 18 insertions(+), 3 deletions(-) diff --git a/apps/fo/app/pages/(with-layout)/dashboard/maingraph/page.tsx b/apps/fo/app/pages/(with-layout)/dashboard/maingraph/page.tsx index 3f193e035..b0759e336 100644 --- a/apps/fo/app/pages/(with-layout)/dashboard/maingraph/page.tsx +++ b/apps/fo/app/pages/(with-layout)/dashboard/maingraph/page.tsx @@ -63,7 +63,7 @@ export default function DashBoardChart({searchYear = '', fcltyList = []}: facili color: colors[2], }, lineVal0: { - label: '시설용량', + label: '지하수유입량', color: colors[1], }, lineVal1: { diff --git a/apps/fo/app/pages/(with-layout)/dashboard/page.tsx b/apps/fo/app/pages/(with-layout)/dashboard/page.tsx index 2003addee..7a2c3d8a0 100644 --- a/apps/fo/app/pages/(with-layout)/dashboard/page.tsx +++ b/apps/fo/app/pages/(with-layout)/dashboard/page.tsx @@ -240,7 +240,7 @@ export default function DashBoard() { const sheetParameter = [ { - data: [['날짜', '강수량', '유입하수량', '시설용량', '유입BOD', '유입T-P','총인유입T-P', '방류T-P', '유입T-N', '방류T-N'],...yearValueData], + data: [['날짜', '강수량', '유입하수량', '지하수유입량', '유입BOD', '유입T-P','총인유입T-P', '방류T-P', '유입T-N', '방류T-N'],...yearValueData], headerNum: 1, headerRange: 'A1:J1', sheetName: '주요그래프' diff --git a/apps/fo/app/store/dashboard/index.tsx b/apps/fo/app/store/dashboard/index.tsx index b263c2288..f07e8a933 100644 --- a/apps/fo/app/store/dashboard/index.tsx +++ b/apps/fo/app/store/dashboard/index.tsx @@ -1868,6 +1868,20 @@ export const dashBoardReducer:(set:(fn: (state: DashBoardType) => DashBoardType) const res = await fetchMainGraph(searchYear, fcltyCd); const res2 = await fetchFacilityWaterQltyInfo(fcltyCd); + let chungcunSumFlow = 0; + const calData = CalcRainEffect(res.data.wqltObjs, 'SUNNY') + calData.forEach((flowItem: any) => { + chungcunSumFlow += flowItem.inflAmnt && flowItem.inflAmnt !== 'x' ? Number(flowItem.inflAmnt.toString().trim()) : 0; + }); + const usage = chungcunSumFlow&&chungcunSumFlow>0?chungcunSumFlow / calData.length:0; + + //bscFctCd === '11200PB001R') 중랑 - 테스트할 때 코드넣고 해야 보기편해요~ + /* if(bscFctCd === '11200PB001R') { + console.log('calData.length : ', calData.length); + console.log('usage : ', usage, 'summerUsage : ', summerUsage, 'winterUsage : ', winterUsage); + } */ + const underWaterInputYear = Math.round((usage-(usage*0.65*OSU_PERCENT)) * 1) / 1; + // 법적방류수질 데이터 const sortedWaterQltyInfo = [...res2].sort((a, b) => { // 숫자로 변환하여 비교 @@ -1908,7 +1922,7 @@ export const dashBoardReducer:(set:(fn: (state: DashBoardType) => DashBoardType) const chart_inflowRain = res.data.wqltObjs.map((item: FacilityWaterQltyProps) => ({ label: item.msrDt.substring(0, 4)+"-"+item.msrDt.substring(4, 6)+"-"+item.msrDt.substring(6, 8), barVal0: item.infoRnDay ?? 0, - lineVal0: item.fctCpc ?? 0, + lineVal0: underWaterInputYear, lineVal1: item.inflAmnt ?? 0, })); diff --git a/apps/fo/app/store/underWaterInput/index.tsx b/apps/fo/app/store/underWaterInput/index.tsx index 816860469..dc29412ad 100644 --- a/apps/fo/app/store/underWaterInput/index.tsx +++ b/apps/fo/app/store/underWaterInput/index.tsx @@ -288,6 +288,7 @@ export const underWaterReducer:(set:(fn: (state: UnderWaterType) => UnderWaterTy const bscFctCd = item.bscFctCd; const res2 = await getFetch('fo', '/fclt/flow/' + bscFctCd + '/' + searchYear) as ApiResponse; const calData = CalcRainEffect(res2.data, 'SUNNY'); + let chungcunSumFlow = 0; let sumSummerChungcunDay = 0; From 79faffdfee9b857acbbd1314c2e870f30e1db84c Mon Sep 17 00:00:00 2001 From: jsyang Date: Fri, 5 Sep 2025 17:55:05 +0900 Subject: [PATCH 02/10] =?UTF-8?q?=EC=88=98=EC=A7=88=EC=A0=95=EB=B3=B4=20?= =?UTF-8?q?=EB=AA=A8=EB=8B=AC=202021=EB=85=84=EC=9D=B4=EC=A0=84=20toc=20?= =?UTF-8?q?=EB=8C=80=EC=8B=A0=20cod=20=EB=8D=B0=EC=9D=B4=ED=84=B0=20?= =?UTF-8?q?=EB=B3=B4=EC=97=AC=EC=A7=80=EB=8F=84=EB=A1=9D=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../facilityWaterQlty/modal/page.tsx | 59 +++++++++++++------ apps/fo/app/store/common/index.tsx | 4 ++ apps/fo/app/store/facilityWaterQlty/index.tsx | 37 ++++++++++-- 3 files changed, 77 insertions(+), 23 deletions(-) diff --git a/apps/fo/app/pages/(with-layout)/facilityWaterQlty/modal/page.tsx b/apps/fo/app/pages/(with-layout)/facilityWaterQlty/modal/page.tsx index d7cad3367..64c748eeb 100644 --- a/apps/fo/app/pages/(with-layout)/facilityWaterQlty/modal/page.tsx +++ b/apps/fo/app/pages/(with-layout)/facilityWaterQlty/modal/page.tsx @@ -40,9 +40,10 @@ export default function WaterQualityModal({fcltyName='', facilityCd='', searchYe searchFacilityWaterQltyListHist, Common } = useFoStore((state) => state); - const {btnClass} = Common; + const {btnClass, COD_YEAR} = Common; const { upHeadListModalYear, + upHeadListModalYearCod, facilityWaterQltyYearList, upHeadListModalTms, tmsList, @@ -65,12 +66,14 @@ export default function WaterQualityModal({fcltyName='', facilityCd='', searchYe let maxEfflWqltTn = 0; let maxEfflWqltTp = 0; let maxefflWqltToc = 0; + let maxefflWqltCod = 0; let maxEfflWqltSs = 0; let maxinflAssctBfrWqltBod = 0; let maxinflAssctBfrWqltTn = 0; let maxInflAssctBfrWqltTp = 0; let maxinflAssctBfrWqltToc = 0; + let maxinflAssctBfrWqltCod = 0; let maxinflAssctBfrWqltSs = 0; let maxTpInflWqltBod = 0; @@ -84,12 +87,14 @@ export default function WaterQualityModal({fcltyName='', facilityCd='', searchYe let minEfflWqltTn = filteredData.length > 0 ? parseNumber(filteredData[0]?.efflWqltTn) : 0; let minEfflWqltTp = filteredData.length > 0 ? parseNumber(filteredData[0]?.efflWqltTp) : 0; let minefflWqltToc = filteredData.length > 0 ? parseNumber(filteredData[0]?.efflWqltToc) : 0; + let minefflWqltCod = filteredData.length > 0 ? parseNumber(filteredData[0]?.efflWqltCod) : 0; let minEfflWqltSs = filteredData.length > 0 ? parseNumber(filteredData[0]?.efflWqltSs) : 0; let mininflAssctBfrWqltBod = filteredData.length > 0 ? parseNumber(filteredData[0]?.inflAssctBfrWqltBod) : 0; let mininflAssctBfrWqltTn = filteredData.length > 0 ? parseNumber(filteredData[0]?.inflAssctBfrWqltTn) : 0; let minInflAssctBfrWqltTp = filteredData.length > 0 ? parseNumber(filteredData[0]?.inflAssctBfrWqltTp) : 0; let mininflAssctBfrWqltToc = filteredData.length > 0 ? parseNumber(filteredData[0]?.inflAssctBfrWqltToc) : 0; + let mininflAssctBfrWqltCod = filteredData.length > 0 ? parseNumber(filteredData[0]?.inflAssctBfrWqltCod) : 0; let mininflAssctBfrWqltSs = filteredData.length > 0 ? parseNumber(filteredData[0]?.inflAssctBfrWqltSs) : 0; let minTpInflWqltBod = 99999999; @@ -101,12 +106,14 @@ export default function WaterQualityModal({fcltyName='', facilityCd='', searchYe let avgEfflWqltTn = 0; let avgEfflWqltTp = 0; let avgefflWqltToc = 0; + let avgefflWqltCod = 0; let avgEfflWqltSs = 0; let avginflAssctBfrWqltBod = 0; let avginflAssctBfrWqltTn = 0; let avgInflAssctBfrWqltTp = 0; let avginflAssctBfrWqltToc = 0; + let avginflAssctBfrWqltCod = 0; let avginflAssctBfrWqltSs = 0; let avgTpInflWqltBod = 0; @@ -123,11 +130,13 @@ export default function WaterQualityModal({fcltyName='', facilityCd='', searchYe const efflWqltTn = parseNumber(item.efflWqltTn); const efflWqltTp = parseNumber(item.efflWqltTp); const efflWqltToc = parseNumber(item.efflWqltToc); + const efflWqltCod = parseNumber(item.efflWqltCod?item.efflWqltCod.replaceAll("(","").replaceAll(")",""):0); const efflWqltSs = parseNumber(item.efflWqltSs); const inflAssctBfrWqltBod = parseNumber(item.inflAssctBfrWqltBod); const inflAssctBfrWqltTn = parseNumber(item.inflAssctBfrWqltTn); const inflAssctBfrWqltTp = parseNumber(item.inflAssctBfrWqltTp); const inflAssctBfrWqltToc = parseNumber(item.inflAssctBfrWqltToc); + const inflAssctBfrWqltCod = parseNumber(item.inflAssctBfrWqltCod?item.inflAssctBfrWqltCod.replaceAll("(","").replaceAll(")",""):0); const inflAssctBfrWqltSs = parseNumber(item.inflAssctBfrWqltSs); const tpInflWqltBod = parseNumber(item.tpInflWqltBod); @@ -145,12 +154,14 @@ export default function WaterQualityModal({fcltyName='', facilityCd='', searchYe maxEfflWqltTn = Math.max(maxEfflWqltTn, efflWqltTn); maxEfflWqltTp = Math.max(maxEfflWqltTp, efflWqltTp); maxefflWqltToc = Math.max(maxefflWqltToc, efflWqltToc); + maxefflWqltCod = Math.max(maxefflWqltCod, efflWqltCod); maxEfflWqltSs = Math.max(maxEfflWqltSs, efflWqltSs); maxinflAssctBfrWqltBod = Math.max(maxinflAssctBfrWqltBod, inflAssctBfrWqltBod); maxinflAssctBfrWqltTn = Math.max(maxinflAssctBfrWqltTn, inflAssctBfrWqltTn); maxInflAssctBfrWqltTp = Math.max(maxInflAssctBfrWqltTp, inflAssctBfrWqltTp); maxinflAssctBfrWqltToc = Math.max(maxinflAssctBfrWqltToc, inflAssctBfrWqltToc); + maxinflAssctBfrWqltCod = Math.max(maxinflAssctBfrWqltCod, inflAssctBfrWqltCod); maxinflAssctBfrWqltSs = Math.max(maxinflAssctBfrWqltSs, inflAssctBfrWqltSs); maxTpInflWqltBod = Math.max(maxTpInflWqltBod, tpInflWqltBod); @@ -162,12 +173,14 @@ export default function WaterQualityModal({fcltyName='', facilityCd='', searchYe minEfflWqltTn = Math.min(minEfflWqltTn, efflWqltTn); minEfflWqltTp = Math.min(minEfflWqltTp, efflWqltTp); minefflWqltToc = Math.min(minefflWqltToc, efflWqltToc); + minefflWqltCod = Math.min(minefflWqltCod, efflWqltCod); minEfflWqltSs = Math.min(minEfflWqltSs, efflWqltSs); mininflAssctBfrWqltBod = Math.min(mininflAssctBfrWqltBod, inflAssctBfrWqltBod); mininflAssctBfrWqltTn = Math.min(mininflAssctBfrWqltTn, inflAssctBfrWqltTn); minInflAssctBfrWqltTp = Math.min(minInflAssctBfrWqltTp, inflAssctBfrWqltTp); mininflAssctBfrWqltToc = Math.min(mininflAssctBfrWqltToc, inflAssctBfrWqltToc); + mininflAssctBfrWqltCod = Math.min(mininflAssctBfrWqltToc, inflAssctBfrWqltCod); mininflAssctBfrWqltSs = Math.min(mininflAssctBfrWqltSs, inflAssctBfrWqltSs); if(item.tpInflWqltBod != null && item.tpInflWqltBod.trim() != '' && item.tpInflWqltBod != undefined ){ @@ -185,12 +198,14 @@ export default function WaterQualityModal({fcltyName='', facilityCd='', searchYe avgEfflWqltTn += efflWqltTn; avgEfflWqltTp += efflWqltTp; avgefflWqltToc += efflWqltToc; + avgefflWqltCod += efflWqltCod; avgEfflWqltSs += efflWqltSs; avginflAssctBfrWqltBod += inflAssctBfrWqltBod; avginflAssctBfrWqltTn += inflAssctBfrWqltTn; avgInflAssctBfrWqltTp += inflAssctBfrWqltTp; avginflAssctBfrWqltToc += inflAssctBfrWqltToc; + avginflAssctBfrWqltCod += inflAssctBfrWqltCod; avginflAssctBfrWqltSs += inflAssctBfrWqltSs; if(item.noProcessInflAmnt && item.noProcessInflAmnt.toString().trim() != '' && item.noProcessInflAmnt != undefined){ @@ -207,16 +222,18 @@ export default function WaterQualityModal({fcltyName='', facilityCd='', searchYe const newFilteredData = [ { msrDt: '평균', - efflWqltBod: filteredData.length==0?'0.0':(Math.round(avgEfflWqltBod / filteredData.length * 10) / 10).toFixed(1), - efflWqltToc: filteredData.length==0?'0.0':(Math.round(avgefflWqltToc / filteredData.length * 10) / 10).toFixed(1), - efflWqltSs: filteredData.length==0?'0.0':(Math.round(avgEfflWqltSs / filteredData.length * 10) / 10).toFixed(1), - efflWqltTn: filteredData.length==0?'0.000':(Math.round(avgEfflWqltTn / filteredData.length * 1000) / 1000).toFixed(3), - efflWqltTp: filteredData.length==0?'0.000':(Math.round(avgEfflWqltTp / filteredData.length * 1000) / 1000).toFixed(3), - inflAssctBfrWqltBod: filteredData.length==0?'0.0':(Math.round(avginflAssctBfrWqltBod / filteredData.length * 10) / 10).toFixed(1), - inflAssctBfrWqltTn: filteredData.length==0?'0.000':(Math.round(avginflAssctBfrWqltTn / filteredData.length * 1000) / 1000).toFixed(3), - inflAssctBfrWqltTp: filteredData.length==0?'0.000':(Math.round(avgInflAssctBfrWqltTp / filteredData.length * 1000) / 1000).toFixed(3), - inflAssctBfrWqltToc: filteredData.length==0?'0.0':(Math.round(avginflAssctBfrWqltToc / filteredData.length * 10) / 10).toFixed(1), - inflAssctBfrWqltSs: filteredData.length==0?'0.0':(Math.round(avginflAssctBfrWqltSs / filteredData.length * 10) / 10).toFixed(1), + efflWqltBod: filteredData.length==0 || avgEfflWqltBod===0?'0.0':(Math.round(avgEfflWqltBod / filteredData.length * 10) / 10).toFixed(1), + efflWqltToc: filteredData.length==0 || avgefflWqltToc===0?'0.0':(Math.round(avgefflWqltToc / filteredData.length * 10) / 10).toFixed(1), + efflWqltCod: filteredData.length==0 || avgefflWqltCod===0?"(0.0)":"("+(Math.round(avgefflWqltCod / filteredData.length * 10) / 10).toFixed(1)+")", + efflWqltSs: filteredData.length==0 || avgEfflWqltSs===0?'0.0':(Math.round(avgEfflWqltSs / filteredData.length * 10) / 10).toFixed(1), + efflWqltTn: filteredData.length==0 || avgEfflWqltTn ===0?'0.000':(Math.round(avgEfflWqltTn / filteredData.length * 1000) / 1000).toFixed(3), + efflWqltTp: filteredData.length==0 || avgEfflWqltTp ===0?'0.000':(Math.round(avgEfflWqltTp / filteredData.length * 1000) / 1000).toFixed(3), + inflAssctBfrWqltBod: filteredData.length==0 || avginflAssctBfrWqltBod===0?'0.0':(Math.round(avginflAssctBfrWqltBod / filteredData.length * 10) / 10).toFixed(1), + inflAssctBfrWqltTn: filteredData.length==0 || avginflAssctBfrWqltTn===0?'0.000':(Math.round(avginflAssctBfrWqltTn / filteredData.length * 1000) / 1000).toFixed(3), + inflAssctBfrWqltTp: filteredData.length==0 || avgInflAssctBfrWqltTp===0?'0.000':(Math.round(avgInflAssctBfrWqltTp / filteredData.length * 1000) / 1000).toFixed(3), + inflAssctBfrWqltToc: filteredData.length==0 || avginflAssctBfrWqltToc===0?'0.0':(Math.round(avginflAssctBfrWqltToc / filteredData.length * 10) / 10).toFixed(1), + inflAssctBfrWqltCod: filteredData.length==0 || avginflAssctBfrWqltCod===0?'(0.0)':"("+(Math.round(avginflAssctBfrWqltCod / filteredData.length * 10) / 10).toFixed(1)+")", + inflAssctBfrWqltSs: filteredData.length==0 || avginflAssctBfrWqltSs===0?'0.0':(Math.round(avginflAssctBfrWqltSs / filteredData.length * 10) / 10).toFixed(1), bscFctCd: "", bscFctNm: "", lclgvrnmntNm: "", @@ -225,14 +242,15 @@ export default function WaterQualityModal({fcltyName='', facilityCd='', searchYe addr: "", fctCpc: 0, noProcessInflAmnt : roundNumber(avgNoProcessInflAmnt / noProcessInflAmntCnt, 0), - infoRnDay: filteredData.length==0?'0.0':(Math.round(avgInfoRnDay / filteredData.length * 10) / 10).toFixed(1), - tpInflWqltBod: filteredData.length==0?'0.0':(Math.round(avgTpInflWqltBod / tpInflWqltBodCnt * 10) / 10).toFixed(1), - tpInflWqltTp: filteredData.length==0?'0.000':(Math.round(avgTpInflWqltTp / tpInflWqltTpCnt * 1000) / 1000).toFixed(3) + infoRnDay: filteredData.length==0 || avgInfoRnDay===0?'0.0':(Math.round(avgInfoRnDay / filteredData.length * 10) / 10).toFixed(1), + tpInflWqltBod: filteredData.length==0 || avgTpInflWqltBod ===0 ?'0.0':(Math.round(avgTpInflWqltBod / tpInflWqltBodCnt * 10) / 10).toFixed(1), + tpInflWqltTp: filteredData.length==0 || avgTpInflWqltTp === 0?'0.000':(Math.round(avgTpInflWqltTp / tpInflWqltTpCnt * 1000) / 1000).toFixed(3) }, { msrDt : '최대', efflWqltBod : Math.round(maxEfflWqltBod * 10) / 10?(Math.round(maxEfflWqltBod * 10) / 10).toFixed(1):'0.0', efflWqltToc : Math.round(maxefflWqltToc * 10) / 10?(Math.round(maxefflWqltToc * 10) / 10).toFixed(1):'0.0', + efflWqltCod : Math.round(maxefflWqltCod * 10) / 10?"("+(Math.round(maxefflWqltCod * 10) / 10).toFixed(1)+")":'(0.0)', efflWqltSs : Math.round(maxEfflWqltSs * 10) / 10?(Math.round(maxEfflWqltSs * 10) / 10).toFixed(1):'0.0', efflWqltTn : Math.round(maxEfflWqltTn * 1000) / 1000?(Math.round(maxEfflWqltTn * 1000) / 1000).toFixed(3):'0.000', efflWqltTp : Math.round(maxEfflWqltTp * 1000) / 1000?(Math.round(maxEfflWqltTp * 1000) / 1000).toFixed(3):'0.000', @@ -240,6 +258,7 @@ export default function WaterQualityModal({fcltyName='', facilityCd='', searchYe inflAssctBfrWqltTn : Math.round(maxinflAssctBfrWqltTn * 1000) / 1000?(Math.round(maxinflAssctBfrWqltTn * 1000) / 1000).toFixed(3):'0.000', inflAssctBfrWqltTp : Math.round(maxInflAssctBfrWqltTp * 1000) / 1000?(Math.round(maxInflAssctBfrWqltTp * 1000) / 1000).toFixed(3):'0.000', inflAssctBfrWqltToc : Math.round(maxinflAssctBfrWqltToc * 10) / 10?(Math.round(maxinflAssctBfrWqltToc * 10) / 10).toFixed(1):'0.0', + inflAssctBfrWqltCod : Math.round(maxinflAssctBfrWqltCod * 10) / 10?"("+(Math.round(maxinflAssctBfrWqltCod * 10) / 10).toFixed(1)+")":'(0.0)', inflAssctBfrWqltSs : Math.round(maxinflAssctBfrWqltSs * 10) / 10?(Math.round(maxinflAssctBfrWqltSs * 10) / 10).toFixed(1):'0.0', bscFctCd: "", bscFctNm: "", @@ -257,6 +276,7 @@ export default function WaterQualityModal({fcltyName='', facilityCd='', searchYe msrDt : '최소', efflWqltBod : Math.round(minEfflWqltBod * 10) / 10?(Math.round(minEfflWqltBod * 10) / 10).toFixed(1) : '0.0', efflWqltToc : Math.round(minefflWqltToc * 10) / 10?(Math.round(minefflWqltToc * 10) / 10).toFixed(1) : '0.0', + efflWqltCod : Math.round(minefflWqltCod * 10) / 10?"("+(Math.round(minefflWqltCod * 10) / 10).toFixed(1)+")" : '(0.0)', efflWqltSs : Math.round(minEfflWqltSs * 10) / 10?(Math.round(minEfflWqltSs * 10) / 10).toFixed(1) : '0.0', efflWqltTn : Math.round(minEfflWqltTn * 1000) / 1000?(Math.round(minEfflWqltTn * 1000) / 1000).toFixed(3) : '0.000', efflWqltTp : Math.round(minEfflWqltTp * 1000) / 1000?(Math.round(minEfflWqltTp * 1000) / 1000).toFixed(3) : '0.000', @@ -264,6 +284,7 @@ export default function WaterQualityModal({fcltyName='', facilityCd='', searchYe inflAssctBfrWqltTn : Math.round(mininflAssctBfrWqltTn * 1000) / 1000?(Math.round(mininflAssctBfrWqltTn * 1000) / 1000).toFixed(3) : '0.000', inflAssctBfrWqltTp : Math.round(minInflAssctBfrWqltTp * 1000) / 1000?(Math.round(minInflAssctBfrWqltTp * 1000) / 1000).toFixed(3) : '0.000', inflAssctBfrWqltToc : Math.round(mininflAssctBfrWqltToc * 10) / 10?(Math.round(mininflAssctBfrWqltToc * 10) / 10).toFixed(1) : '0.0', + inflAssctBfrWqltCod : Math.round(mininflAssctBfrWqltCod * 10) / 10?"("+(Math.round(mininflAssctBfrWqltCod * 10) / 10).toFixed(1)+")" : '(0.0)', inflAssctBfrWqltSs : Math.round(mininflAssctBfrWqltSs * 10) / 10?(Math.round(mininflAssctBfrWqltSs * 10) / 10).toFixed(1) : '0.0', bscFctCd: "", bscFctNm: "", @@ -364,7 +385,7 @@ export default function WaterQualityModal({fcltyName='', facilityCd='', searchYe { return value > 0 ? roundUp((value/day), digit).toFixed(digit) : toZero; }; +export const COD_YEAR = 2021; + /** * STORE - API */ @@ -392,6 +394,7 @@ export type CommonType = { selectFlowPanel: SelectDataType[]; selectEnvPartData: envPartSelectDataType[]; btnClass: string; + COD_YEAR : number; }; auth: { @@ -421,6 +424,7 @@ export const commonState: CommonType = { selectFlowPanel: selectFlowPanel, selectEnvPartData: selectEnvPartData, btnClass: "p-4 m-2 !mr-10 text-white rounded-sm text-lg font-medium", + COD_YEAR : COD_YEAR, }, auth: { diff --git a/apps/fo/app/store/facilityWaterQlty/index.tsx b/apps/fo/app/store/facilityWaterQlty/index.tsx index f8b874c85..bcfb6326c 100644 --- a/apps/fo/app/store/facilityWaterQlty/index.tsx +++ b/apps/fo/app/store/facilityWaterQlty/index.tsx @@ -2,6 +2,7 @@ import DataForm, { roundNumber } from "@/app/components/common/DataForm"; import type { TableUpperProps } from "../dashboard"; import CalcRainEffect from "@/app/components/common/CalcRainEffect"; +import { COD_YEAR } from "../common"; export type { TableUpperProps }; /**==================================== @@ -26,6 +27,8 @@ export interface FacilityWaterQltyProps { inflAssctAftWqltBod: string | '', inflAssctBfrWqltToc: string | '', inflAssctAftWqltToc: string | '', + inflAssctBfrWqltCod : string | '', + inflAssctAftWqltCod : string | '', inflAssctBfrWqltSs: string | '', inflAssctAftWqltSs: string | '', inflAssctBfrWqltTn: string | '', @@ -34,6 +37,7 @@ export interface FacilityWaterQltyProps { inflAssctAftWqltTp: string | '', efflWqltBod: string | '', efflWqltToc: string | '', + efflWqltCod : string | '', efflWqltSs: string | '', efflWqltTn: string | '', efflWqltTp: string | '', @@ -214,6 +218,23 @@ const upHeadListModalYear: TableUpperProps[] = [ { id: "infoRnDay", title: "강우량\n(mm/일)", align: "right" } ]; +// 처리시설 수질현황 헤더(모달-연간) +const upHeadListModalYearCod: TableUpperProps[] = [ + { id: "msrDt", title: "날짜" }, + { id: "inflAssctBfrWqltBod", title: "BOD\n(mg/L)", upName: "upChangeRe1", upSequnce: 1, align: "right" }, + { id: "inflAssctBfrWqltCod", title: "TOC(COD)\n(mg/L)", upName: "upChangeRe1", upSequnce: 2, align: "right" }, + { id: "inflAssctBfrWqltSs", title: "SS\n(mg/L)", upName: "upChangeRe1", upSequnce: 3, align: "right" }, + { id: "inflAssctBfrWqltTn", title: "T-N\n(mg/L)", upName: "upChangeRe1", upSequnce: 2, align: "right" }, + { id: "inflAssctBfrWqltTp", title: "T-P\n(mg/L)", upName: "upChangeRe1", upSequnce: 3, align: "right" }, + { id: "efflWqltBod", title: "BOD\n(mg/L)", upName: "upChangeRe2", upSequnce: 1, align: "right" }, + { id: "efflWqltCod", title: "TOC(COD)\n(mg/L)", upName: "upChangeRe2", upSequnce: 2, align: "right" }, + { id: "efflWqltSs", title: "SS\n(mg/L)", upName: "upChangeRe2", upSequnce: 3, align: "right" }, + { id: "efflWqltTn", title: "T-N\n(mg/L)", upName: "upChangeRe2", upSequnce: 2, align: "right" }, + { id: "efflWqltTp", title: "T-P\n(mg/L)", upName: "upChangeRe2", upSequnce: 3, align: "right" }, + { id: "noProcessInflAmnt", title: "미처리하수량\n(m³/일)", align:"right"}, + { id: "infoRnDay", title: "강우량\n(mm/일)", align: "right" } +]; + // 처리시설 수질현황 헤더(모달-수질TMS) const upHeadListModalTms: TableUpperProps[] = [ { id: "part", title: "구분" }, @@ -298,6 +319,7 @@ export type FacilityWaterQltyType = { FacilityWaterQltyModal: { // 처리시설 수질현황 upHeadListModalYear: TableUpperProps[]; + upHeadListModalYearCod : TableUpperProps[]; facilityWaterQltyYearList: FacilityWaterQltyProps[]; upHeadListModalTms: TableUpperProps[]; facilityWaterQltyTmsList: FacilityWaterQltyTmsProps[]; @@ -327,6 +349,7 @@ export const facilityWaterQltyInitState: FacilityWaterQltyType = { FacilityWaterQltyModal: { // 처리시설 수질현황 upHeadListModalYear: upHeadListModalYear, + upHeadListModalYearCod: upHeadListModalYearCod, facilityWaterQltyYearList: facilityWaterQltyYearList, upHeadListModalTms: upHeadListModalTms, facilityWaterQltyTmsList: facilityWaterQltyTmsList, @@ -453,8 +476,8 @@ export const facilityWaterQltyReducer = (set: (fn: (state: FacilityWaterQltyType item.fctCpc = parseFloat(item.fctCpc.toString().replace(/,/g, '')); item.sidoNm = item.lclgvrnmntNm.split(' ')[0]?.toString() || ''; item.sggNm = item.lclgvrnmntNm.split(' ')[1]?.toString() || ''; - item.inflAssctBfrWqltToc = Number(searchYear)<2021? "("+item.inflAssctBfrWqltToc+")" : item.inflAssctBfrWqltToc; - item.efflWqltToc = Number(searchYear)<2021? "("+item.efflWqltToc+")" : item.efflWqltToc; + item.inflAssctBfrWqltToc = Number(searchYear) ({ @@ -625,6 +648,12 @@ export const facilityWaterQltyReducer = (set: (fn: (state: FacilityWaterQltyType if(item.efflWqltToc){ item.efflWqltToc = Number(Math.round(Number(item.efflWqltToc) * 10)/10).toFixed(1); } + if(item.inflAssctBfrWqltCod){ + item.inflAssctBfrWqltCod = "("+Number(Math.round(Number(item.inflAssctBfrWqltCod) * 10)/10).toFixed(1)+")"; + } + if(item.efflWqltCod){ + item.efflWqltCod = "("+Number(Math.round(Number(item.efflWqltCod) * 10)/10).toFixed(1)+")"; + } if(item.inflAssctBfrWqltBod){ item.inflAssctBfrWqltBod = Number(Math.round(Number(item.inflAssctBfrWqltBod) * 10)/10).toFixed(1); } From 6df0f45fa39a2f02d48e24575bab82daf64a9d56 Mon Sep 17 00:00:00 2001 From: jsyang Date: Mon, 8 Sep 2025 18:03:47 +0900 Subject: [PATCH 03/10] =?UTF-8?q?=ED=95=98=EB=8B=A8=EC=A3=BC=EC=84=9D=20?= =?UTF-8?q?=EC=BB=B4=ED=8F=AC=EB=84=8C=ED=8A=B8=ED=99=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fo/app/components/common/UnderComment.tsx | 32 +++++ .../facilityPrecipitation/page.tsx | 3 +- .../facilityWaterQlty/modal/page.tsx | 132 +++++++++--------- .../(with-layout)/flowRate/modal/page.tsx | 33 ++--- .../pages/(with-layout)/planSewage/page.tsx | 15 +- .../(with-layout)/processFacility/page.tsx | 3 +- apps/fo/app/pages/(with-layout)/rdi/page.tsx | 9 +- 7 files changed, 131 insertions(+), 96 deletions(-) create mode 100644 apps/fo/app/components/common/UnderComment.tsx diff --git a/apps/fo/app/components/common/UnderComment.tsx b/apps/fo/app/components/common/UnderComment.tsx new file mode 100644 index 000000000..f8a03769b --- /dev/null +++ b/apps/fo/app/components/common/UnderComment.tsx @@ -0,0 +1,32 @@ +import React from 'react' + +/** + * 하단 주석 영역 + */ + +type CommentType={ + commentStartPoint? : string, + commentArray? : string[], + divHeight? : string, +} + +function UnderComment({commentStartPoint="☞", commentArray=[], divHeight="14"} :CommentType) { + const height = "mt-"+divHeight; + + if(commentArray && commentArray.length > 0){ + return ( +
+ {commentArray.map((item, index) => ( + + + {commentStartPoint} {item} + +
+
+ ))} +
+ ) + } +} + +export default UnderComment; \ No newline at end of file diff --git a/apps/fo/app/pages/(with-layout)/facilityPrecipitation/page.tsx b/apps/fo/app/pages/(with-layout)/facilityPrecipitation/page.tsx index 0d66de569..e2d7ef5cc 100644 --- a/apps/fo/app/pages/(with-layout)/facilityPrecipitation/page.tsx +++ b/apps/fo/app/pages/(with-layout)/facilityPrecipitation/page.tsx @@ -6,6 +6,7 @@ import ListDiv from "@common/business_components/ui/list_div"; import { useCallback, useEffect, useRef, useState } from "react"; import PrecipitationModal from "./modal/page"; import LoadingOverlay from "@common/business_components/ui/loadingBar"; +import UnderComment from "@/app/components/common/UnderComment"; export default function FacilityPrecipitation() { const {Common @@ -225,7 +226,7 @@ export default function FacilityPrecipitation() {
index !== undefined && cellClick(index)} headName={"시설별 강수현황"} tableData={mainList} headlist={upheadList} pageSize={10} total={total} resetPageNo={resetPage} onPageChange={handlePageChange} />
- ☞ 강우일은 3mm 이상만 해당 / 강우영향일은 강우일 및 강우일 후 연속 2일간으로 정의 + diff --git a/apps/fo/app/pages/(with-layout)/facilityWaterQlty/modal/page.tsx b/apps/fo/app/pages/(with-layout)/facilityWaterQlty/modal/page.tsx index 64c748eeb..33530a6fd 100644 --- a/apps/fo/app/pages/(with-layout)/facilityWaterQlty/modal/page.tsx +++ b/apps/fo/app/pages/(with-layout)/facilityWaterQlty/modal/page.tsx @@ -8,6 +8,22 @@ import type { ReturnType } from "../../../../components/common/FacilityTermModal import FacilityTermModalHeader from "../../../../components/common/FacilityTermModalHeader"; import { HeadMakeColSpan } from "../HeadMakeColSpan"; import { roundNumber } from "@/app/components/common/DataForm"; +import UnderComment from "@/app/components/common/UnderComment"; + +const commentArrayDefault = [ + "미처리하수량 =[(강우시 일별유입유량*강우시 일별유입BOD)-(청천시 연평균유입유량*청천시 연평균유입BOD)]​ / (강우시 일별유입BOD)​", + "음수값 발생시 제외(null, 평균값 산정시 제외)" +]; + +const commentArrayChungchun = [ + ...commentArrayDefault, + "청천시 : 강우량이 3mm미만의 날" +]; + +const commentArrayRain = [ + ...commentArrayDefault, + "강우량 3mm 이상만 날과 강우영향일(강우일+2일)의 날" +]; type ModalProps ={ fcltyName: string; @@ -222,18 +238,18 @@ export default function WaterQualityModal({fcltyName='', facilityCd='', searchYe const newFilteredData = [ { msrDt: '평균', - efflWqltBod: filteredData.length==0 || avgEfflWqltBod===0?'0.0':(Math.round(avgEfflWqltBod / filteredData.length * 10) / 10).toFixed(1), - efflWqltToc: filteredData.length==0 || avgefflWqltToc===0?'0.0':(Math.round(avgefflWqltToc / filteredData.length * 10) / 10).toFixed(1), - efflWqltCod: filteredData.length==0 || avgefflWqltCod===0?"(0.0)":"("+(Math.round(avgefflWqltCod / filteredData.length * 10) / 10).toFixed(1)+")", - efflWqltSs: filteredData.length==0 || avgEfflWqltSs===0?'0.0':(Math.round(avgEfflWqltSs / filteredData.length * 10) / 10).toFixed(1), - efflWqltTn: filteredData.length==0 || avgEfflWqltTn ===0?'0.000':(Math.round(avgEfflWqltTn / filteredData.length * 1000) / 1000).toFixed(3), - efflWqltTp: filteredData.length==0 || avgEfflWqltTp ===0?'0.000':(Math.round(avgEfflWqltTp / filteredData.length * 1000) / 1000).toFixed(3), - inflAssctBfrWqltBod: filteredData.length==0 || avginflAssctBfrWqltBod===0?'0.0':(Math.round(avginflAssctBfrWqltBod / filteredData.length * 10) / 10).toFixed(1), - inflAssctBfrWqltTn: filteredData.length==0 || avginflAssctBfrWqltTn===0?'0.000':(Math.round(avginflAssctBfrWqltTn / filteredData.length * 1000) / 1000).toFixed(3), - inflAssctBfrWqltTp: filteredData.length==0 || avgInflAssctBfrWqltTp===0?'0.000':(Math.round(avgInflAssctBfrWqltTp / filteredData.length * 1000) / 1000).toFixed(3), - inflAssctBfrWqltToc: filteredData.length==0 || avginflAssctBfrWqltToc===0?'0.0':(Math.round(avginflAssctBfrWqltToc / filteredData.length * 10) / 10).toFixed(1), - inflAssctBfrWqltCod: filteredData.length==0 || avginflAssctBfrWqltCod===0?'(0.0)':"("+(Math.round(avginflAssctBfrWqltCod / filteredData.length * 10) / 10).toFixed(1)+")", - inflAssctBfrWqltSs: filteredData.length==0 || avginflAssctBfrWqltSs===0?'0.0':(Math.round(avginflAssctBfrWqltSs / filteredData.length * 10) / 10).toFixed(1), + efflWqltBod: filteredData.length==0 || avgEfflWqltBod===0?'0.0':roundNumber((avgEfflWqltBod / filteredData.length), 1), + efflWqltToc: filteredData.length==0 || avgefflWqltToc===0?'0.0':roundNumber((avgefflWqltToc / filteredData.length), 1), + efflWqltCod: filteredData.length==0 || avgefflWqltCod===0?"(0.0)":"("+roundNumber((avgefflWqltCod / filteredData.length), 1)+")", + efflWqltSs: filteredData.length==0 || avgEfflWqltSs===0?'0.0':roundNumber((avgEfflWqltSs / filteredData.length), 1), + efflWqltTn: filteredData.length==0 || avgEfflWqltTn ===0?'0.000':roundNumber((avgEfflWqltTn / filteredData.length), 3), + efflWqltTp: filteredData.length==0 || avgEfflWqltTp ===0?'0.000':roundNumber((avgEfflWqltTp / filteredData.length), 3), + inflAssctBfrWqltBod: filteredData.length==0 || avginflAssctBfrWqltBod===0?'0.0':roundNumber((avginflAssctBfrWqltBod / filteredData.length), 1), + inflAssctBfrWqltTn: filteredData.length==0 || avginflAssctBfrWqltTn===0?'0.000':roundNumber((avginflAssctBfrWqltTn / filteredData.length), 3), + inflAssctBfrWqltTp: filteredData.length==0 || avgInflAssctBfrWqltTp===0?'0.000':roundNumber((avgInflAssctBfrWqltTp / filteredData.length), 3), + inflAssctBfrWqltToc: filteredData.length==0 || avginflAssctBfrWqltToc===0?'0.0':roundNumber((avginflAssctBfrWqltToc / filteredData.length), 1), + inflAssctBfrWqltCod: filteredData.length==0 || avginflAssctBfrWqltCod===0?'(0.0)':"("+roundNumber((avginflAssctBfrWqltCod / filteredData.length), 1)+")", + inflAssctBfrWqltSs: filteredData.length==0 || avginflAssctBfrWqltSs===0?'0.0':roundNumber((avginflAssctBfrWqltSs / filteredData.length), 1), bscFctCd: "", bscFctNm: "", lclgvrnmntNm: "", @@ -242,24 +258,24 @@ export default function WaterQualityModal({fcltyName='', facilityCd='', searchYe addr: "", fctCpc: 0, noProcessInflAmnt : roundNumber(avgNoProcessInflAmnt / noProcessInflAmntCnt, 0), - infoRnDay: filteredData.length==0 || avgInfoRnDay===0?'0.0':(Math.round(avgInfoRnDay / filteredData.length * 10) / 10).toFixed(1), - tpInflWqltBod: filteredData.length==0 || avgTpInflWqltBod ===0 ?'0.0':(Math.round(avgTpInflWqltBod / tpInflWqltBodCnt * 10) / 10).toFixed(1), - tpInflWqltTp: filteredData.length==0 || avgTpInflWqltTp === 0?'0.000':(Math.round(avgTpInflWqltTp / tpInflWqltTpCnt * 1000) / 1000).toFixed(3) + infoRnDay: filteredData.length==0 || avgInfoRnDay===0?'0.0':roundNumber(avgInfoRnDay / filteredData.length, 1), + tpInflWqltBod: filteredData.length==0 || avgTpInflWqltBod ===0 ?'0.0':roundNumber(avgTpInflWqltBod / tpInflWqltBodCnt, 1), + tpInflWqltTp: filteredData.length==0 || avgTpInflWqltTp === 0?'0.000':roundNumber(avgTpInflWqltTp / tpInflWqltTpCnt, 3) }, { msrDt : '최대', - efflWqltBod : Math.round(maxEfflWqltBod * 10) / 10?(Math.round(maxEfflWqltBod * 10) / 10).toFixed(1):'0.0', - efflWqltToc : Math.round(maxefflWqltToc * 10) / 10?(Math.round(maxefflWqltToc * 10) / 10).toFixed(1):'0.0', - efflWqltCod : Math.round(maxefflWqltCod * 10) / 10?"("+(Math.round(maxefflWqltCod * 10) / 10).toFixed(1)+")":'(0.0)', - efflWqltSs : Math.round(maxEfflWqltSs * 10) / 10?(Math.round(maxEfflWqltSs * 10) / 10).toFixed(1):'0.0', - efflWqltTn : Math.round(maxEfflWqltTn * 1000) / 1000?(Math.round(maxEfflWqltTn * 1000) / 1000).toFixed(3):'0.000', - efflWqltTp : Math.round(maxEfflWqltTp * 1000) / 1000?(Math.round(maxEfflWqltTp * 1000) / 1000).toFixed(3):'0.000', - inflAssctBfrWqltBod : Math.round(maxinflAssctBfrWqltBod * 10) / 10?(Math.round(maxinflAssctBfrWqltBod * 10) / 10).toFixed(1):'0.0', - inflAssctBfrWqltTn : Math.round(maxinflAssctBfrWqltTn * 1000) / 1000?(Math.round(maxinflAssctBfrWqltTn * 1000) / 1000).toFixed(3):'0.000', - inflAssctBfrWqltTp : Math.round(maxInflAssctBfrWqltTp * 1000) / 1000?(Math.round(maxInflAssctBfrWqltTp * 1000) / 1000).toFixed(3):'0.000', - inflAssctBfrWqltToc : Math.round(maxinflAssctBfrWqltToc * 10) / 10?(Math.round(maxinflAssctBfrWqltToc * 10) / 10).toFixed(1):'0.0', - inflAssctBfrWqltCod : Math.round(maxinflAssctBfrWqltCod * 10) / 10?"("+(Math.round(maxinflAssctBfrWqltCod * 10) / 10).toFixed(1)+")":'(0.0)', - inflAssctBfrWqltSs : Math.round(maxinflAssctBfrWqltSs * 10) / 10?(Math.round(maxinflAssctBfrWqltSs * 10) / 10).toFixed(1):'0.0', + efflWqltBod : Math.round(maxEfflWqltBod * 10) / 10?roundNumber(maxEfflWqltBod, 1):'0.0', + efflWqltToc : Math.round(maxefflWqltToc * 10) / 10?roundNumber(maxefflWqltToc, 1):'0.0', + efflWqltCod : Math.round(maxefflWqltCod * 10) / 10?"("+roundNumber(maxefflWqltCod, 1)+")":'(0.0)', + efflWqltSs : Math.round(maxEfflWqltSs * 10) / 10?roundNumber(maxEfflWqltSs, 1):'0.0', + efflWqltTn : Math.round(maxEfflWqltTn * 1000) / 1000?roundNumber(maxEfflWqltTn, 3):'0.000', + efflWqltTp : Math.round(maxEfflWqltTp * 1000) / 1000?roundNumber(maxEfflWqltTp, 3):'0.000', + inflAssctBfrWqltBod : Math.round(maxinflAssctBfrWqltBod * 10) / 10?roundNumber(maxinflAssctBfrWqltBod, 1):'0.0', + inflAssctBfrWqltTn : Math.round(maxinflAssctBfrWqltTn * 1000) / 1000?roundNumber(maxinflAssctBfrWqltTn, 3):'0.000', + inflAssctBfrWqltTp : Math.round(maxInflAssctBfrWqltTp * 1000) / 1000?roundNumber(maxInflAssctBfrWqltTp, 3):'0.000', + inflAssctBfrWqltToc : Math.round(maxinflAssctBfrWqltToc * 10) / 10?roundNumber(maxinflAssctBfrWqltToc, 1):'0.0', + inflAssctBfrWqltCod : Math.round(maxinflAssctBfrWqltCod * 10) / 10?"("+roundNumber(maxinflAssctBfrWqltCod, 1)+")":'(0.0)', + inflAssctBfrWqltSs : Math.round(maxinflAssctBfrWqltSs * 10) / 10?roundNumber(maxinflAssctBfrWqltSs, 1):'0.0', bscFctCd: "", bscFctNm: "", lclgvrnmntNm: "", @@ -268,24 +284,24 @@ export default function WaterQualityModal({fcltyName='', facilityCd='', searchYe addr: "", fctCpc: 0, noProcessInflAmnt : roundNumber(maxNoProcessInflAmnt, 0), - infoRnDay: Math.round(maxInfoRnDay * 10) / 10?(Math.round(maxInfoRnDay * 10) / 10).toFixed(1):'0.0', - tpInflWqltBod: Math.round(maxTpInflWqltBod * 10) / 10?(Math.round(maxTpInflWqltBod * 10) / 10).toFixed(1):'0.0', - tpInflWqltTp: Math.round(maxTpInflWqltTp * 1000) / 1000?(Math.round(maxTpInflWqltTp * 1000) / 1000).toFixed(3):'0.000' + infoRnDay: Math.round(maxInfoRnDay * 10) / 10?roundNumber(maxInfoRnDay, 1):'0.0', + tpInflWqltBod: Math.round(maxTpInflWqltBod * 10) / 10?roundNumber(maxTpInflWqltBod, 1):'0.0', + tpInflWqltTp: Math.round(maxTpInflWqltTp * 1000) / 1000?roundNumber(maxTpInflWqltTp, 3):'0.000' }, { msrDt : '최소', - efflWqltBod : Math.round(minEfflWqltBod * 10) / 10?(Math.round(minEfflWqltBod * 10) / 10).toFixed(1) : '0.0', - efflWqltToc : Math.round(minefflWqltToc * 10) / 10?(Math.round(minefflWqltToc * 10) / 10).toFixed(1) : '0.0', - efflWqltCod : Math.round(minefflWqltCod * 10) / 10?"("+(Math.round(minefflWqltCod * 10) / 10).toFixed(1)+")" : '(0.0)', - efflWqltSs : Math.round(minEfflWqltSs * 10) / 10?(Math.round(minEfflWqltSs * 10) / 10).toFixed(1) : '0.0', - efflWqltTn : Math.round(minEfflWqltTn * 1000) / 1000?(Math.round(minEfflWqltTn * 1000) / 1000).toFixed(3) : '0.000', - efflWqltTp : Math.round(minEfflWqltTp * 1000) / 1000?(Math.round(minEfflWqltTp * 1000) / 1000).toFixed(3) : '0.000', - inflAssctBfrWqltBod : Math.round(mininflAssctBfrWqltBod * 10) / 10?(Math.round(mininflAssctBfrWqltBod * 10) / 10).toFixed(1) : '0.0', - inflAssctBfrWqltTn : Math.round(mininflAssctBfrWqltTn * 1000) / 1000?(Math.round(mininflAssctBfrWqltTn * 1000) / 1000).toFixed(3) : '0.000', - inflAssctBfrWqltTp : Math.round(minInflAssctBfrWqltTp * 1000) / 1000?(Math.round(minInflAssctBfrWqltTp * 1000) / 1000).toFixed(3) : '0.000', - inflAssctBfrWqltToc : Math.round(mininflAssctBfrWqltToc * 10) / 10?(Math.round(mininflAssctBfrWqltToc * 10) / 10).toFixed(1) : '0.0', - inflAssctBfrWqltCod : Math.round(mininflAssctBfrWqltCod * 10) / 10?"("+(Math.round(mininflAssctBfrWqltCod * 10) / 10).toFixed(1)+")" : '(0.0)', - inflAssctBfrWqltSs : Math.round(mininflAssctBfrWqltSs * 10) / 10?(Math.round(mininflAssctBfrWqltSs * 10) / 10).toFixed(1) : '0.0', + efflWqltBod : Math.round(minEfflWqltBod * 10) / 10?roundNumber(minEfflWqltBod, 1) : '0.0', + efflWqltToc : Math.round(minefflWqltToc * 10) / 10?roundNumber(minefflWqltToc, 1) : '0.0', + efflWqltCod : Math.round(minefflWqltCod * 10) / 10?"("+roundNumber(minefflWqltCod, 1)+")" : '(0.0)', + efflWqltSs : Math.round(minEfflWqltSs * 10) / 10?roundNumber(minEfflWqltSs, 1) : '0.0', + efflWqltTn : Math.round(minEfflWqltTn * 1000) / 1000?roundNumber(minEfflWqltTn, 3) : '0.000', + efflWqltTp : Math.round(minEfflWqltTp * 1000) / 1000?roundNumber(minEfflWqltTp, 3) : '0.000', + inflAssctBfrWqltBod : Math.round(mininflAssctBfrWqltBod * 10) / 10?roundNumber(mininflAssctBfrWqltBod, 1) : '0.0', + inflAssctBfrWqltTn : Math.round(mininflAssctBfrWqltTn * 1000) / 1000?roundNumber(mininflAssctBfrWqltTn, 3) : '0.000', + inflAssctBfrWqltTp : Math.round(minInflAssctBfrWqltTp * 1000) / 1000?roundNumber(minInflAssctBfrWqltTp, 3) : '0.000', + inflAssctBfrWqltToc : Math.round(mininflAssctBfrWqltToc * 10) / 10?roundNumber(mininflAssctBfrWqltToc, 1) : '0.0', + inflAssctBfrWqltCod : Math.round(mininflAssctBfrWqltCod * 10) / 10?"("+roundNumber(mininflAssctBfrWqltCod, 1)+")" : '(0.0)', + inflAssctBfrWqltSs : Math.round(mininflAssctBfrWqltSs * 10) / 10?roundNumber(mininflAssctBfrWqltSs, 1) : '0.0', bscFctCd: "", bscFctNm: "", lclgvrnmntNm: "", @@ -294,9 +310,9 @@ export default function WaterQualityModal({fcltyName='', facilityCd='', searchYe addr: "", fctCpc: 0, noProcessInflAmnt : roundNumber(minNoProcessInflAmnt, 0), - infoRnDay: Math.round(minInfoRnDay * 10) / 10?'0.0':(Math.round(minInfoRnDay * 10) / 10).toFixed(1), - tpInflWqltBod: Math.round(minTpInflWqltBod * 10) / 10 && minTpInflWqltBod != 99999999?(Math.round(minTpInflWqltBod * 10) / 10).toFixed(1):'0.0', - tpInflWqltTp: Math.round(minTpInflWqltTp * 1000) / 1000 && minTpInflWqltTp != 99999999?(Math.round(minTpInflWqltTp * 1000) / 1000).toFixed(3):'0.000' + infoRnDay: Math.round(minInfoRnDay * 10) / 10?'0.0':roundNumber(minInfoRnDay, 1), + tpInflWqltBod: Math.round(minTpInflWqltBod * 10) / 10 && minTpInflWqltBod != 99999999?roundNumber(minTpInflWqltBod, 1):'0.0', + tpInflWqltTp: Math.round(minTpInflWqltTp * 1000) / 1000 && minTpInflWqltTp != 99999999?roundNumber(minTpInflWqltTp, 3):'0.000' }, ...filteredData ]; @@ -413,7 +429,9 @@ export default function WaterQualityModal({fcltyName='', facilityCd='', searchYe >
- {msrmtDate != yesterDayStr?.replaceAll('-','')?

※전날 데이터 결측으로 인해 가장 최근 데이터 표출함

: ''} + {msrmtDate != yesterDayStr?.replaceAll('-','') ? ( + + ) : null} @@ -442,10 +460,7 @@ export default function WaterQualityModal({fcltyName='', facilityCd='', searchYe -
- ☞ 미처리하수량 =[(강우시 일별유입유량*강우시 일별유입BOD)-(청천시 연평균유입유량*청천시 연평균유입BOD)]​/강우시 일별유입BOD)​

- ☞ 음수값 발생시 제외(null, 평균값 산정시 제외)

-
+ @@ -473,10 +488,7 @@ export default function WaterQualityModal({fcltyName='', facilityCd='', searchYe -
- ☞ 미처리하수량 =[(강우시 일별유입유량*강우시 일별유입BOD)-(청천시 연평균유입유량*청천시 연평균유입BOD)]​/강우시 일별유입BOD)​

- ☞ 음수값 발생시 제외(null, 평균값 산정시 제외)

-
+
@@ -504,11 +516,7 @@ export default function WaterQualityModal({fcltyName='', facilityCd='', searchYe -
- ☞ 미처리하수량 =[(강우시 일별유입유량*강우시 일별유입BOD)-(청천시 연평균유입유량*청천시 연평균유입BOD)]​/강우시 일별유입BOD)​

- ☞ 음수값 발생시 제외(null, 평균값 산정시 제외)

- ☞ 청천시 : 강우량이 3mm미만의 날 -
+
@@ -536,11 +544,7 @@ export default function WaterQualityModal({fcltyName='', facilityCd='', searchYe -
- ☞ 미처리하수량 =[(강우시 일별유입유량*강우시 일별유입BOD)-(청천시 연평균유입유량*청천시 연평균유입BOD)]​/강우시 일별유입BOD)​

- ☞ 음수값 발생시 제외(null, 평균값 산정시 제외)

- ☞ 강우량 3mm 이상만 날과 강우영향일(강우일+2일)의 날 -
+
diff --git a/apps/fo/app/pages/(with-layout)/flowRate/modal/page.tsx b/apps/fo/app/pages/(with-layout)/flowRate/modal/page.tsx index 5a38ad8f0..f82f92835 100644 --- a/apps/fo/app/pages/(with-layout)/flowRate/modal/page.tsx +++ b/apps/fo/app/pages/(with-layout)/flowRate/modal/page.tsx @@ -8,6 +8,12 @@ import { useCallback, useEffect, useRef, useState } from "react"; import type { ReturnType } from "../../../../components/common/FacilityTermModalHeader"; import { roundUp } from "@/app/store/common"; import { roundNumber } from "@/app/components/common/DataForm"; +import UnderComment from "@/app/components/common/UnderComment"; + +const commentDefault = [ + "미처리하수량 =[(강우시 일별유입유량*강우시 일별유입BOD)-(청천시 연평균유입유량*청천시 연평균유입BOD)]​ / (강우시 일별유입BOD)​" , + "음수값 발생시 제외(null, 평균값 산정시 제외)" +]; const tabList = [ { value: 'tab_term_year', label: '연간' }, @@ -225,10 +231,7 @@ export default function FlowRateModal(props: { fcltyName: string; facilityCd: st boldArray={[0,1,2]} /> -
- ☞ 미처리하수량 =[(강우시 일별유입유량*강우시 일별유입BOD)-(청천시 연평균유입유량*청천시 연평균유입BOD)]​/강우시 일별유입BOD)​

- ☞ 음수값 발생시 제외(null, 평균값 산정시 제외)

-
+ @@ -253,10 +256,7 @@ export default function FlowRateModal(props: { fcltyName: string; facilityCd: st boldArray={[0,1,2]} /> -
- ☞ 미처리하수량 =[(강우시 일별유입유량*강우시 일별유입BOD)-(청천시 연평균유입유량*청천시 연평균유입BOD)]​/강우시 일별유입BOD)​

- ☞ 음수값 발생시 제외(null, 평균값 산정시 제외)

-
+
@@ -281,10 +281,7 @@ export default function FlowRateModal(props: { fcltyName: string; facilityCd: st boldArray={[0,1,2]} /> -
- ☞ 미처리하수량 =[(강우시 일별유입유량*강우시 일별유입BOD)-(청천시 연평균유입유량*청천시 연평균유입BOD)]​/강우시 일별유입BOD)​

- ☞ 음수값 발생시 제외(null, 평균값 산정시 제외)

-
+
@@ -309,11 +306,7 @@ export default function FlowRateModal(props: { fcltyName: string; facilityCd: st boldArray={[0,1,2]} /> -
- ☞ 미처리하수량 =[(강우시 일별유입유량*강우시 일별유입BOD)-(청천시 연평균유입유량*청천시 연평균유입BOD)]​/강우시 일별유입BOD)​

- ☞ 음수값 발생시 제외(null, 평균값 산정시 제외)

- ☞ 청천시 : 강우량이 3mm미만의 날 -
+
@@ -328,11 +321,7 @@ export default function FlowRateModal(props: { fcltyName: string; facilityCd: st
{}} className="h-[370px]" boldArray={[0,1,2]}/>
-
- ☞ 미처리하수량 =[(강우시 일별유입유량*강우시 일별유입BOD)-(청천시 연평균유입유량*청천시 연평균유입BOD)]​/강우시 일별유입BOD)​

- ☞ 음수값 발생시 제외(null, 평균값 산정시 제외)

- ☞ 강우량 3mm 이상만 날과 강우영향일(강우일+2일)의 날 -
+
diff --git a/apps/fo/app/pages/(with-layout)/planSewage/page.tsx b/apps/fo/app/pages/(with-layout)/planSewage/page.tsx index 00539da13..dd7b263a2 100644 --- a/apps/fo/app/pages/(with-layout)/planSewage/page.tsx +++ b/apps/fo/app/pages/(with-layout)/planSewage/page.tsx @@ -5,7 +5,14 @@ import { downloadExcel, MainDiv, SearchBaseForm, SearchInput, SelectBox, Title, import ListDiv from "@common/business_components/ui/list_div"; import { useCallback, useEffect, useRef, useState } from "react"; import LoadingOverlay from "@common/business_components/ui/loadingBar"; - +import UnderComment from "@/app/components/common/UnderComment"; + +const commentArray = [ + "여유용량 = 하수처리시설 시설용량 – 건기시 유입유량(평균)​", + "변동부하율 = 건기시 일최대 유량/일평균​유량(기준 최근 3개년)​", + "분류식화율 = 분류식지역 면적(㎢) / 처리​구역 면적합계(㎢) ×100" +] + export default function PlanSewage() { const {Common ,PlanSewage @@ -193,11 +200,7 @@ export default function PlanSewage() {
-
- ☞ 여유용량 = 하수처리시설 시설용량 – 건기시 유입유량(평균)​
- ☞ 변동부하율 = 건기시 일최대 유량/일평균​유량(기준 최근 3개년)​
- ☞ 분류식화율 = 분류식지역 면적(㎢) / 처리​구역 면적합계(㎢) ×100
-
+ diff --git a/apps/fo/app/pages/(with-layout)/processFacility/page.tsx b/apps/fo/app/pages/(with-layout)/processFacility/page.tsx index 381c64ea5..189238bdf 100644 --- a/apps/fo/app/pages/(with-layout)/processFacility/page.tsx +++ b/apps/fo/app/pages/(with-layout)/processFacility/page.tsx @@ -6,6 +6,7 @@ import ListDiv from "@common/business_components/ui/list_div"; import { useCallback, useEffect, useRef, useState } from "react"; import ProcessFacilityInfoModal from "./modal/page"; import LoadingOverlay from "@common/business_components/ui/loadingBar"; +import UnderComment from "@/app/components/common/UnderComment"; export default function ProcessFacilitySearch() { const {Common @@ -278,9 +279,9 @@ export default function ProcessFacilitySearch() { + - ※계획유입수질 및 설계유입수질은 해당 BOD를 나타냄 {selectedRow !== null && ( - ※ 강우시 총 추정유입량 = 청천시 유입하수량 + RDII 추정값

- ※ 주) 처리장 유입부에서 측정된 유량 및 수질조사 자료를 기준으로 산정된 결과임 + From 8b2efad803ed7d1a24cb5d99bdb8a359280c15b8 Mon Sep 17 00:00:00 2001 From: jsyang Date: Tue, 9 Sep 2025 14:46:11 +0900 Subject: [PATCH 04/10] =?UTF-8?q?-=EC=A3=BC=EC=84=9D=20style=EC=A0=81?= =?UTF-8?q?=EC=9A=A9=20=EB=B0=A9=EC=8B=9D=20=EC=88=98=EC=A0=95=20-?= =?UTF-8?q?=EB=8C=80=EC=8B=9C=EB=B3=B4=EB=93=9C,=20rdii=EC=A1=B0=ED=9A=8C?= =?UTF-8?q?=20rdi=EA=B3=84=EC=82=B0=20=EC=9B=90=EB=B3=B8=EA=B0=92=EC=97=90?= =?UTF-8?q?=EC=84=9C=20=EB=B0=98=EC=98=AC=EB=A6=BC=ED=95=9C=20=ED=9B=84=20?= =?UTF-8?q?=EA=B3=84=EC=82=B0=EB=90=98=EB=8F=84=EB=A1=9D=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fo/app/components/common/UnderComment.tsx | 3 +-- apps/fo/app/store/dashboard/index.tsx | 26 ++++++++++++------- apps/fo/app/store/rdi/index.tsx | 17 +++++++++--- 3 files changed, 31 insertions(+), 15 deletions(-) diff --git a/apps/fo/app/components/common/UnderComment.tsx b/apps/fo/app/components/common/UnderComment.tsx index f8a03769b..898eb861e 100644 --- a/apps/fo/app/components/common/UnderComment.tsx +++ b/apps/fo/app/components/common/UnderComment.tsx @@ -11,11 +11,10 @@ type CommentType={ } function UnderComment({commentStartPoint="☞", commentArray=[], divHeight="14"} :CommentType) { - const height = "mt-"+divHeight; if(commentArray && commentArray.length > 0){ return ( -
+
{commentArray.map((item, index) => ( diff --git a/apps/fo/app/store/dashboard/index.tsx b/apps/fo/app/store/dashboard/index.tsx index f07e8a933..460365ff3 100644 --- a/apps/fo/app/store/dashboard/index.tsx +++ b/apps/fo/app/store/dashboard/index.tsx @@ -404,7 +404,7 @@ const upHeadListDrainageEquipment : TableUpperProps[] = [ { id: "etc", title: "비고", row:0, upName:"upChangeRe7", upSequnce:1 }, ] -let operationalStatusList : OperationalStatusListProps[] = [ +const operationalStatusListOrg : OperationalStatusListProps[] = [ { flowRate : '유량\n(㎥/일)', waterQlty : '유입', @@ -1084,7 +1084,7 @@ export const dashBoardInitState:DashBoardType = { OperationStatus : { isInit : false, upHeadListOperationStatus : upHeadListOperationStatus, - operationalStatusList : operationalStatusList, + operationalStatusList : operationalStatusListOrg, isLoadingOperationStatus : false, }, @@ -1395,8 +1395,10 @@ export const dashBoardReducer:(set:(fn: (state: DashBoardType) => DashBoardType) let winterChungchunEfflMax = 1 ; let winterChungchunEfflMin = 1 ; - let rdiPercent = 0; + const clone = (arr: any[]) => arr?.map(v => ({ ...v })) ?? []; + let rdiPercent = 0; + let operationalStatusList = clone(operationalStatusListOrg); if(data && operationalStatusList){ // 유량 - 유입 if (operationalStatusList?.[0]) { @@ -1512,7 +1514,6 @@ export const dashBoardReducer:(set:(fn: (state: DashBoardType) => DashBoardType) } }); - const clone = (arr: any[]) => arr?.map(v => ({ ...v })) ?? []; const calData = CalcRainEffect(clone(res2.data), 'SUNNY'); const calRainData = CalcRainEffect(clone(res2.data), 'RAIN'); @@ -1712,10 +1713,15 @@ export const dashBoardReducer:(set:(fn: (state: DashBoardType) => DashBoardType) winterCnt += 1; }); - const winterBodAvg = winterBodSunny / winterCnt; + const roundMinSummerBodInfl = Number(roundNumber(minSummerBodInfl, 0).toString().replaceAll(',','')); + const roundMinSummerBod = Number(roundNumber(minSummerBod, 1).toString().replaceAll(',','')); + const roundWinterBodSunny = Number(roundNumber(winterBodSunny, 1).toString().replaceAll(',','')); + + const winterBodAvg = Number(roundNumber((roundWinterBodSunny / winterCnt), 1).toString().replaceAll(',','')); // 하절기(6~8월) 중 최저 유입 BOD일때 유입유량 x ((동절기 청천시 유입BOD - 하절기(6~8월) 중 최저 유입BOD) / (동절기 청천시 유입BOD)) - const winMinusSum = winterBodAvg - minSummerBod; - const rdiValue = winMinusSum===0 ? 0 : minSummerBodInfl * ((winMinusSum / winterBodAvg )); + const winMinusSum = winterBodAvg - roundMinSummerBod; + + const rdiValue = winMinusSum===0 ? 0 : roundMinSummerBodInfl * (winMinusSum / winterBodAvg ); rdiPercent = (rdiValue / minSummerBodInfl) * 100; @@ -1838,13 +1844,15 @@ export const dashBoardReducer:(set:(fn: (state: DashBoardType) => DashBoardType) } const rtnData = await calcWaterQltyData(operationalStatusList, searchYear, fcltyCd); - operationalStatusList = rtnData; // 총인설비가 없을 경우 제외 console.log('총인시설 여부 : ', data.yearData.TP_FCT_YN); + console.log('rtnData : ', rtnData); if(data.yearData.TP_FCT_YN !== 'Y') { - operationalStatusList = operationalStatusList.slice(0, 11); + operationalStatusList = rtnData.slice(0, 11); + }else{ + operationalStatusList = rtnData; } set((state: DashBoardType) => ({ ...state, diff --git a/apps/fo/app/store/rdi/index.tsx b/apps/fo/app/store/rdi/index.tsx index 601a925a0..4b344df12 100644 --- a/apps/fo/app/store/rdi/index.tsx +++ b/apps/fo/app/store/rdi/index.tsx @@ -336,11 +336,20 @@ export const rdiReducer:(set:SetStateFunction)=>RdiActions=(set: SetStateFunctio minSummerBod = minSummerBod === 99999999 ? 0 : minSummerBod; minSummerBodInfl = minSummerBodInfl === 99999999 ? 0 : minSummerBodInfl; - const winterBodAvg = winterBodSunny / winterCnt; + const roundMinSummerBodInfl = Number(roundNumber(minSummerBodInfl, 0).toString().replaceAll(',','')); + const roundMinSummerBod = Number(roundNumber(minSummerBod, 1).toString().replaceAll(',','')); + const roundWinterBodSunny = Number(roundNumber(winterBodSunny, 1).toString().replaceAll(',','')); + + console.log('bsccd : ', item.bscFctCd); + console.log('roundMinSummerBodInfl : ',roundMinSummerBodInfl); + console.log('roundMinSummerBod : ',roundMinSummerBod); + console.log('roundWinterBodSunny : ',roundWinterBodSunny); + + const winterBodAvg = Number(roundNumber((roundWinterBodSunny / winterCnt), 1).toString().replaceAll(',','')); // 하절기(6~8월) 중 최저 유입 BOD일때 유입유량 x ((동절기 청천시 유입BOD - 하절기(6~8월) 중 최저 유입BOD) / (동절기 청천시 유입BOD)) - const winMinusSum = winterBodAvg - minSummerBod; - console.log(item.bscFctCd+' '+minSummerBodInfl+' '+winMinusSum+' ('+winterBodSunny+' '+winterCnt+') '+' '+winterBodSunny) - const rdiValue = winMinusSum===0 ? 0 : minSummerBodInfl * ((winMinusSum / winterBodAvg )); + const winMinusSum = winterBodAvg - roundMinSummerBod; + + const rdiValue = winMinusSum===0 ? 0 : roundMinSummerBodInfl * (winMinusSum / winterBodAvg ); rtnWinterInflBod = winterBodAvg; rtnSummerBodInfl = minSummerBodInfl; From 32939d8b1a986f0e5203aa1ae3ab859a61de2a8c Mon Sep 17 00:00:00 2001 From: jsyang Date: Thu, 11 Sep 2025 11:15:58 +0900 Subject: [PATCH 05/10] =?UTF-8?q?=EB=8C=80=EC=8B=9C=EB=B3=B4=EB=93=9C=20?= =?UTF-8?q?=EC=B4=9D=EC=9D=B8=EC=84=A4=EB=B9=84=20=EA=B3=84=EC=82=B0=20?= =?UTF-8?q?=EB=A1=9C=EC=A7=81=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/fo/app/store/dashboard/index.tsx | 66 ++++++++++++++++++++++++++- 1 file changed, 65 insertions(+), 1 deletion(-) diff --git a/apps/fo/app/store/dashboard/index.tsx b/apps/fo/app/store/dashboard/index.tsx index 460365ff3..0e0065067 100644 --- a/apps/fo/app/store/dashboard/index.tsx +++ b/apps/fo/app/store/dashboard/index.tsx @@ -753,31 +753,40 @@ const calcWaterQltyData = async (data: any[], searchYear : string|undefined, fcl // (0) 전체변수 let summerDay = 0; + let noNullSummerDay = 0; let totalInflBodAvgSummer = 0; let totalInflTnAvgSummer = 0; let totalInflTpAvgSummer = 0; let totalEfflBodAvgSummer = 0; let totalEfflTnAvgSummer = 0; let totalEfflTpAvgSummer = 0; + let totalTpInflAvgSummer = 0; let winterDay = 0; + let noNullWinterDay = 0; let totalInflBodAvgWinter = 0; let totalInflTnAvgWinter = 0; let totalInflTpAvgWinter = 0; let totalEfflBodAvgWinter = 0; let totalEfflTnAvgWinter = 0; let totalEfflTpAvgWinter = 0; + let totalTpInflAvgWinter = 0; // 전체 대상 qltyData.forEach((item: any) => { const month = item.msrDt.substring(4, 6); // 월 추출 if(month === '01' || month === '02'){ + winterDay += 1; + if(item.tpInflWqltTp != null && item.tpInflWqltTp != 0){ + noNullWinterDay+=1; + } const inflbod = nullToZero(item.inflAssctBfrWqltBod); const infltn = nullToZero(item.inflAssctBfrWqltTn); const infltp = nullToZero(item.inflAssctBfrWqltTp); const effbod = nullToZero(item.efflWqltBod); const efftn = nullToZero(item.efflWqltTn); const efftp = nullToZero(item.efflWqltTp); + const tpInfl = nullToZero(item.tpInflWqltTp); totalInflBodAvgWinter += inflbod; totalInflTnAvgWinter += infltn; @@ -785,15 +794,19 @@ const calcWaterQltyData = async (data: any[], searchYear : string|undefined, fcl totalEfflBodAvgWinter += effbod; totalEfflTnAvgWinter += efftn; totalEfflTpAvgWinter += efftp; - winterDay += 1; + totalTpInflAvgWinter += tpInfl; }else if(month === '06' || month === '07' || month === '08'){ summerDay += 1; + if(item.tpInflWqltTp != null && item.tpInflWqltTp != 0){ + noNullSummerDay+=1; + } const inflbod = nullToZero(item.inflAssctBfrWqltBod); const infltn = nullToZero(item.inflAssctBfrWqltTn); const infltp = nullToZero(item.inflAssctBfrWqltTp); const effbod = nullToZero(item.efflWqltBod); const efftn = nullToZero(item.efflWqltTn); const efftp = nullToZero(item.efflWqltTp); + const tpInfl = nullToZero(item.tpInflWqltTp); totalInflBodAvgSummer += inflbod; totalInflTnAvgSummer += infltn; @@ -801,6 +814,7 @@ const calcWaterQltyData = async (data: any[], searchYear : string|undefined, fcl totalEfflBodAvgSummer += effbod; totalEfflTnAvgSummer += efftn; totalEfflTpAvgSummer += efftp; + totalTpInflAvgSummer += tpInfl; } }); @@ -811,6 +825,10 @@ const calcWaterQltyData = async (data: any[], searchYear : string|undefined, fcl orgData[9].winterAll = qltyDataSetting(totalInflTpAvgWinter, winterDay, 3); orgData[10].winterAll = qltyDataSetting(totalEfflTpAvgWinter, winterDay, 3); + //총인설비 + orgData[11].winterAll = qltyDataSetting(totalTpInflAvgWinter, noNullWinterDay, 3); + orgData[12].winterAll = qltyDataSetting(totalEfflTpAvgWinter, winterDay, 3); + orgData[5].summerAll = qltyDataSetting(totalInflBodAvgSummer, summerDay, 1); orgData[6].summerAll = qltyDataSetting(totalEfflBodAvgSummer, summerDay, 1); orgData[7].summerAll = qltyDataSetting(totalInflTnAvgSummer, summerDay, 3); @@ -818,10 +836,16 @@ const calcWaterQltyData = async (data: any[], searchYear : string|undefined, fcl orgData[9].summerAll = qltyDataSetting(totalInflTpAvgSummer, summerDay, 3); orgData[10].summerAll = qltyDataSetting(totalEfflTpAvgSummer, summerDay, 3); + //총인설비 + orgData[11].summerAll = qltyDataSetting(totalTpInflAvgSummer, noNullSummerDay, 3); + orgData[12].summerAll = qltyDataSetting(totalEfflTpAvgSummer, summerDay, 3); + // (1) 청천시 변수 // (1-1) 날짜 count let chungchunSummerDay = 0; let chungchunWinterDay = 0; + let noNullChungchunSummerDay = 0; + let noNullChungchunWinterDay = 0; // (1-2) 하절기 let chungchunInflBodAvgSummer = 0; @@ -830,17 +854,21 @@ const calcWaterQltyData = async (data: any[], searchYear : string|undefined, fcl let chungchunEfflBodAvgSummer = 0; let chungchunEfflTnAvgSummer = 0; let chungchunEfflTpAvgSummer = 0; + let chungchunTpInflAvgSummer = 0; // (1-3) 동절기 (최대, 최소, 평균 다 필요) let chungchunInflBodAvg = 0; let chungchunInflTnAvg = 0; let chungchunInflTpAvg = 0; + let chungchunTpInflAvg = 0; let chungchunInflBodMax = 0; let chungchunInflTnMax= 0; let chungchunInflTpMax = 0; + let chungchunTpInflMax = 0; let chungchunInflBodMin = 99999999; let chungchunInflTnMin = 99999999; let chungchunInflTpMin = 99999999; + let chungchunTpInflMin = 99999999; let chungchunEfflBodAvg = 0; let chungchunEfflTnAvg = 0; @@ -857,6 +885,9 @@ const calcWaterQltyData = async (data: any[], searchYear : string|undefined, fcl const month = item.msrDt.substring(4, 6); // 월 추출 if(month === '01' || month === '02'){ chungchunWinterDay += 1; + if(item.tpInflWqltTp != null && item.tpInflWqltTp != 0){ + noNullChungchunWinterDay+=1; + } const inflbod = nullToZero(item.inflAssctBfrWqltBod); const infltn = nullToZero(item.inflAssctBfrWqltTn); @@ -864,10 +895,12 @@ const calcWaterQltyData = async (data: any[], searchYear : string|undefined, fcl const effbod = nullToZero(item.efflWqltBod); const efftn = nullToZero(item.efflWqltTn); const efftp = nullToZero(item.efflWqltTp); + const tpInfl = nullToZero(item.tpInflWqltTp); chungchunInflBodAvg += inflbod; chungchunInflTnAvg += infltn; chungchunInflTpAvg += infltp; + chungchunTpInflAvg += tpInfl; chungchunEfflBodAvg += effbod; chungchunEfflTnAvg += efftn; chungchunEfflTpAvg += efftp; @@ -875,6 +908,7 @@ const calcWaterQltyData = async (data: any[], searchYear : string|undefined, fcl if(chungchunInflBodMax < inflbod) chungchunInflBodMax = inflbod; if(chungchunInflTnMax < infltn) chungchunInflTnMax = infltn; if(chungchunInflTpMax < infltp) chungchunInflTpMax = infltp; + if(chungchunTpInflMax < tpInfl) chungchunTpInflMax = tpInfl; if(chungchunEfflBodMax < effbod) chungchunEfflBodMax = effbod; if(chungchunEfflTnMax < efftn) chungchunEfflTnMax = efftn; if(chungchunEfflTpMax < efftp) chungchunEfflTpMax = efftp; @@ -882,11 +916,15 @@ const calcWaterQltyData = async (data: any[], searchYear : string|undefined, fcl if(chungchunInflBodMin > inflbod) chungchunInflBodMin = inflbod; if(chungchunInflTnMin > infltn) chungchunInflTnMin = infltn; if(chungchunInflTpMin > infltp) chungchunInflTpMin = infltp; + if(chungchunTpInflMin > tpInfl) chungchunTpInflMin = tpInfl; if(chungchunEfflBodMin > effbod) chungchunEfflBodMin = effbod; if(chungchunEfflTnMin > efftn) chungchunEfflTnMin = efftn; if(chungchunEfflTpMin > efftp) chungchunEfflTpMin = efftp; }else if(month === '06' || month === '07' || month === '08'){ chungchunSummerDay += 1; + if(item.tpInflWqltTp != null && item.tpInflWqltTp != 0){ + noNullChungchunSummerDay+=1; + } const inflbod = nullToZero(item.inflAssctBfrWqltBod); const infltn = nullToZero(item.inflAssctBfrWqltTn); @@ -894,6 +932,7 @@ const calcWaterQltyData = async (data: any[], searchYear : string|undefined, fcl const effbod = nullToZero(item.efflWqltBod); const efftn = nullToZero(item.efflWqltTn); const efftp = nullToZero(item.efflWqltTp); + const tpInfl = nullToZero(item.tpInflWqltTp); chungchunInflBodAvgSummer += inflbod; chungchunInflTnAvgSummer += infltn; @@ -901,6 +940,7 @@ const calcWaterQltyData = async (data: any[], searchYear : string|undefined, fcl chungchunEfflBodAvgSummer += effbod; chungchunEfflTnAvgSummer += efftn; chungchunEfflTpAvgSummer += efftp; + chungchunTpInflAvgSummer += tpInfl; } }); @@ -913,6 +953,10 @@ const calcWaterQltyData = async (data: any[], searchYear : string|undefined, fcl orgData[9].summerRain = qltyDataSetting(chungchunInflTpAvgSummer, chungchunSummerDay, 3); orgData[10].summerRain = qltyDataSetting(chungchunEfflTpAvgSummer, chungchunSummerDay, 3); + // 총인설비 + orgData[11].summerRain = qltyDataSetting(chungchunTpInflAvgSummer, noNullChungchunSummerDay, 3); + orgData[12].summerRain = qltyDataSetting(chungchunEfflTpAvgSummer, chungchunSummerDay, 3); + // 동절기 orgData[5].winterSunnyAvg = qltyDataSetting(chungchunInflBodAvg, chungchunWinterDay, 1); orgData[6].winterSunnyAvg = qltyDataSetting(chungchunEfflBodAvg, chungchunWinterDay, 1); @@ -921,12 +965,18 @@ const calcWaterQltyData = async (data: any[], searchYear : string|undefined, fcl orgData[9].winterSunnyAvg = qltyDataSetting(chungchunInflTpAvg, chungchunWinterDay, 3); orgData[10].winterSunnyAvg = qltyDataSetting(chungchunEfflTpAvg, chungchunWinterDay, 3); + // 총인설비 + orgData[11].winterSunnyAvg = qltyDataSetting(chungchunTpInflAvg, noNullChungchunWinterDay, 3); + orgData[12].winterSunnyAvg = qltyDataSetting(chungchunInflTpAvg, chungchunWinterDay, 3); + orgData[5].winterSunnyMax = roundUp(chungchunInflBodMax, 1).toFixed(1); orgData[6].winterSunnyMax = roundUp(chungchunEfflBodMax, 1).toFixed(1); orgData[7].winterSunnyMax = roundUp(chungchunInflTnMax, 3).toFixed(3); orgData[8].winterSunnyMax = roundUp(chungchunEfflTnMax, 3).toFixed(3); orgData[9].winterSunnyMax = roundUp(chungchunInflTpMax, 3).toFixed(3); orgData[10].winterSunnyMax = roundUp(chungchunEfflTpMax, 3).toFixed(3); + orgData[11].winterSunnyMax = roundUp(chungchunTpInflMax, 3).toFixed(3); + orgData[12].winterSunnyMax = roundUp(chungchunInflTpMax, 3).toFixed(3); orgData[5].winterSunnyMin = chungchunInflBodMin === 99999999 ? '0.0' : roundUp(chungchunInflBodMin, 1).toFixed(1); orgData[6].winterSunnyMin = chungchunEfflBodMin === 99999999 ? '0.0' : roundUp(chungchunEfflBodMin, 1).toFixed(1); @@ -934,9 +984,12 @@ const calcWaterQltyData = async (data: any[], searchYear : string|undefined, fcl orgData[8].winterSunnyMin = chungchunEfflTnMin === 99999999 ? '0.000' : roundUp(chungchunEfflTnMin, 3).toFixed(3); orgData[9].winterSunnyMin = chungchunInflTpMin === 99999999 ? '0.000' : roundUp(chungchunInflTpMin, 3).toFixed(3); orgData[10].winterSunnyMin = chungchunEfflTpMin === 99999999 ? '0.000' : roundUp(chungchunEfflTpMin, 3).toFixed(3); + orgData[11].winterSunnyMin = chungchunTpInflMin === 99999999 ? '0.000' : roundUp(chungchunTpInflMin, 3).toFixed(3); + orgData[12].winterSunnyMin = chungchunInflTpMin === 99999999 ? '0.000' : roundUp(chungchunInflTpMin, 3).toFixed(3); // 강우시 변수 let rainSummerDay = 0; + let noNullRainSummerDay = 0; let rainInflBodAvg = 0; let rainInflTnAvg = 0; @@ -944,12 +997,16 @@ const calcWaterQltyData = async (data: any[], searchYear : string|undefined, fcl let rainEfflBodAvg = 0; let rainEfflTnAvg = 0; let rainEfflTpAvg = 0; + let rainTpInflAvg = 0; // 강우시 qltyRainData.forEach((item: any) => { const month = item.msrDt.substring(4, 6); // 월 추출 if(month === '06' || month === '07' || month === '08'){ rainSummerDay += 1; + if(item.tpInflWqltTp != null && item.tpInflWqltTp != 0){ + noNullRainSummerDay+=1; + } const inflbod = nullToZero(item.inflAssctBfrWqltBod); const infltn = nullToZero(item.inflAssctBfrWqltTn); @@ -957,6 +1014,7 @@ const calcWaterQltyData = async (data: any[], searchYear : string|undefined, fcl const effbod = nullToZero(item.efflWqltBod); const efftn = nullToZero(item.efflWqltTn); const efftp = nullToZero(item.efflWqltTp); + const tpInfl = nullToZero(item.tpInflWqltTp); rainInflBodAvg += inflbod; rainInflTnAvg += infltn; @@ -964,6 +1022,7 @@ const calcWaterQltyData = async (data: any[], searchYear : string|undefined, fcl rainEfflBodAvg += effbod; rainEfflTnAvg += efftn; rainEfflTpAvg += efftp; + rainTpInflAvg += tpInfl; } }); @@ -974,6 +1033,11 @@ const calcWaterQltyData = async (data: any[], searchYear : string|undefined, fcl orgData[8].summerThree = qltyDataSetting(rainEfflTnAvg, rainSummerDay, 3); orgData[9].summerThree = qltyDataSetting(rainInflTpAvg, rainSummerDay, 3); orgData[10].summerThree = qltyDataSetting(rainEfflTpAvg, rainSummerDay, 3); + + // 총인설비 + orgData[11].summerThree = qltyDataSetting(rainTpInflAvg, noNullRainSummerDay, 3); + orgData[12].summerThree = qltyDataSetting(rainInflTpAvg, rainSummerDay, 3); + return orgData; } else { return orgData; From b93efa5503b3d5de8418eabc7b7605f5f398d994 Mon Sep 17 00:00:00 2001 From: jsyang Date: Thu, 11 Sep 2025 11:17:37 +0900 Subject: [PATCH 06/10] =?UTF-8?q?=EB=9D=BC=EC=9D=B8=EB=B0=94,=20=EB=9D=BC?= =?UTF-8?q?=EC=9D=B8=EC=B0=A8=ED=8A=B8=20x=EC=B6=95=20=EB=9D=BC=EB=B2=A8?= =?UTF-8?q?=20=ED=81=AC=EA=B8=B0=20=ED=99=95=EB=8C=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../business_components/src/ui/chart/LineBarChart.tsx | 4 ++-- .../common/business_components/src/ui/chart/LineChart.tsx | 6 ++---- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/packages/common/business_components/src/ui/chart/LineBarChart.tsx b/packages/common/business_components/src/ui/chart/LineBarChart.tsx index f26cb976c..271629e6a 100644 --- a/packages/common/business_components/src/ui/chart/LineBarChart.tsx +++ b/packages/common/business_components/src/ui/chart/LineBarChart.tsx @@ -210,8 +210,8 @@ export default function LineBarchart({ > {setXAxisYearTick? - value.slice(0,7)} fontSize="8px" fontWeight="bold"/> : - + value.slice(0,7)} className="text-[12px] font-bold" /> : + } {/* 왼쪽 Y축: lineVal */} {yFieldText && value.slice(0,7)} /> : } From c17da8266146ef1bbd77d969f4e44309531cde0f Mon Sep 17 00:00:00 2001 From: jsyang Date: Fri, 12 Sep 2025 13:54:20 +0900 Subject: [PATCH 07/10] =?UTF-8?q?=EB=AF=B8=EC=B2=98=EB=A6=AC=ED=95=98?= =?UTF-8?q?=EC=88=98=EB=9F=89=20=EC=A0=9C=EA=B1=B0(=EC=A3=BC=EC=84=9D?= =?UTF-8?q?=ED=8F=AC=ED=95=A8),=20=EA=B0=95=EC=9A=B0=EB=9F=89=20=EB=A9=94?= =?UTF-8?q?=EC=9D=B8,=EB=AA=A8=EB=8B=AC=20=EC=88=98=EC=B9=98=20=EB=8B=A4?= =?UTF-8?q?=EB=A5=B8=EA=B1=B0=20=ED=95=B4=EA=B2=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../facilityPrecipitation/modal/page.tsx | 2 ++ .../facilityWaterQlty/modal/page.tsx | 13 ++----- .../(with-layout)/flowRate/modal/page.tsx | 11 +----- apps/fo/app/store/dashboard/index.tsx | 1 + .../app/store/facilityPrecipitation/index.tsx | 36 ++++++++----------- apps/fo/app/store/facilityWaterQlty/index.tsx | 30 ++++++++-------- apps/fo/app/store/flowRate/index.tsx | 1 - 7 files changed, 35 insertions(+), 59 deletions(-) diff --git a/apps/fo/app/pages/(with-layout)/facilityPrecipitation/modal/page.tsx b/apps/fo/app/pages/(with-layout)/facilityPrecipitation/modal/page.tsx index bb430d0ba..1f50a9ffe 100644 --- a/apps/fo/app/pages/(with-layout)/facilityPrecipitation/modal/page.tsx +++ b/apps/fo/app/pages/(with-layout)/facilityPrecipitation/modal/page.tsx @@ -105,6 +105,8 @@ export default function PrecipitationModal(props: PrecipitationModalProps) { const getTableData = () => { const totals = calculateTotals(); + totals.infoRnDay = roundNumber(totals.infoRnDay, 1); + return [ { bscFctCd: "", diff --git a/apps/fo/app/pages/(with-layout)/facilityWaterQlty/modal/page.tsx b/apps/fo/app/pages/(with-layout)/facilityWaterQlty/modal/page.tsx index 33530a6fd..eedd52b37 100644 --- a/apps/fo/app/pages/(with-layout)/facilityWaterQlty/modal/page.tsx +++ b/apps/fo/app/pages/(with-layout)/facilityWaterQlty/modal/page.tsx @@ -10,18 +10,11 @@ import { HeadMakeColSpan } from "../HeadMakeColSpan"; import { roundNumber } from "@/app/components/common/DataForm"; import UnderComment from "@/app/components/common/UnderComment"; -const commentArrayDefault = [ - "미처리하수량 =[(강우시 일별유입유량*강우시 일별유입BOD)-(청천시 연평균유입유량*청천시 연평균유입BOD)]​ / (강우시 일별유입BOD)​", - "음수값 발생시 제외(null, 평균값 산정시 제외)" -]; - const commentArrayChungchun = [ - ...commentArrayDefault, "청천시 : 강우량이 3mm미만의 날" ]; const commentArrayRain = [ - ...commentArrayDefault, "강우량 3mm 이상만 날과 강우영향일(강우일+2일)의 날" ]; @@ -460,7 +453,6 @@ export default function WaterQualityModal({fcltyName='', facilityCd='', searchYe
- @@ -488,7 +480,6 @@ export default function WaterQualityModal({fcltyName='', facilityCd='', searchYe
- @@ -516,7 +507,7 @@ export default function WaterQualityModal({fcltyName='', facilityCd='', searchYe
- + @@ -544,7 +535,7 @@ export default function WaterQualityModal({fcltyName='', facilityCd='', searchYe - + diff --git a/apps/fo/app/pages/(with-layout)/flowRate/modal/page.tsx b/apps/fo/app/pages/(with-layout)/flowRate/modal/page.tsx index f82f92835..d6166133f 100644 --- a/apps/fo/app/pages/(with-layout)/flowRate/modal/page.tsx +++ b/apps/fo/app/pages/(with-layout)/flowRate/modal/page.tsx @@ -10,11 +10,6 @@ import { roundUp } from "@/app/store/common"; import { roundNumber } from "@/app/components/common/DataForm"; import UnderComment from "@/app/components/common/UnderComment"; -const commentDefault = [ - "미처리하수량 =[(강우시 일별유입유량*강우시 일별유입BOD)-(청천시 연평균유입유량*청천시 연평균유입BOD)]​ / (강우시 일별유입BOD)​" , - "음수값 발생시 제외(null, 평균값 산정시 제외)" -]; - const tabList = [ { value: 'tab_term_year', label: '연간' }, { value: 'tab_term_summer', label: '하절기' }, @@ -231,7 +226,6 @@ export default function FlowRateModal(props: { fcltyName: string; facilityCd: st boldArray={[0,1,2]} /> - @@ -256,7 +250,6 @@ export default function FlowRateModal(props: { fcltyName: string; facilityCd: st boldArray={[0,1,2]} /> - @@ -281,7 +274,6 @@ export default function FlowRateModal(props: { fcltyName: string; facilityCd: st boldArray={[0,1,2]} /> - @@ -306,7 +298,6 @@ export default function FlowRateModal(props: { fcltyName: string; facilityCd: st boldArray={[0,1,2]} /> - @@ -321,7 +312,7 @@ export default function FlowRateModal(props: { fcltyName: string; facilityCd: st
{}} className="h-[370px]" boldArray={[0,1,2]}/>
- +
diff --git a/apps/fo/app/store/dashboard/index.tsx b/apps/fo/app/store/dashboard/index.tsx index 0e0065067..75a8fe3ae 100644 --- a/apps/fo/app/store/dashboard/index.tsx +++ b/apps/fo/app/store/dashboard/index.tsx @@ -26,6 +26,7 @@ export type TableUpperProps = { row? : number; rowSpan?: number; colSpan?: number; + widthPercent? : number; } // ===TAB1 diff --git a/apps/fo/app/store/facilityPrecipitation/index.tsx b/apps/fo/app/store/facilityPrecipitation/index.tsx index 77a053fc5..cbd824ff8 100644 --- a/apps/fo/app/store/facilityPrecipitation/index.tsx +++ b/apps/fo/app/store/facilityPrecipitation/index.tsx @@ -1,6 +1,7 @@ -import DataForm from "@/app/components/common/DataForm"; -import type { TableUpperProps } from "../dashboard"; import { getFetch } from "@/app/components/api"; +import CalcRainEffect from "@/app/components/common/CalcRainEffect"; +import { roundNumber } from "@/app/components/common/DataForm"; +import type { TableUpperProps } from "../dashboard"; export type { TableUpperProps }; /**==================================== * Store - 타입 @@ -155,14 +156,15 @@ const fetchFacilityPrecipitationList = async (pageNo: number, pageSize: number, }) } } - + res.data.map((item: FacilityPrecipitationProps) => { const filteredList = tmpData.filter((gridItem) => { - return gridItem.bscFctCd === item.bscFctCd; + return gridItem.bscFctCd === item.bscFctCd; }); - item.rainEffectDay = filteredList.reduce((acc, curr) => acc + curr.rainEffectDay, 0); - item.totalYearRain = filteredList.reduce((acc, curr) => acc + curr.infoRnDay, 0); + const rtnData = CalcRainEffect(filteredList); + item.rainEffectDay = rtnData.reduce((acc, curr) => acc + curr.rainEffectDay, 0); + item.totalYearRain = rtnData.reduce((acc, curr) => acc + Number(curr.infoRnDay), 0); item.infoRnDay = filteredList.reduce((acc, curr) => acc + curr.rainDay, 0); }); @@ -178,11 +180,6 @@ export type FacilityPrecipitationActions = { searchFacilityPrecipitationList: (pageNo: number, pageSize: number, searchYear: string, part?: string, nameCd?: string, fcltCpct?: string, operationValue?: string, fcltyNm?: string) => void; } -const dataFormSetting=(item : FacilityPrecipitationProps)=> { - DataForm({ type: 'number', column: 'fctCpc', item: item as unknown as Record }); - DataForm({ type: 'float1', column: 'totalYearRain', item: item as unknown as Record}); -}; - export type FacilityPrecipitationType = { FacilityPrecipitationSearch: { isInit: boolean; @@ -246,13 +243,16 @@ export const facilityPrecipitationReducer:(set:(fn: (state: FacilityPrecipitatio const res = await fetchFacilityPrecipitationList(pageNo, pageSize, searchYear, part, nameCd, fcltCpct, operationValue, fcltyNm); const data = res.data; + + data.forEach(item => { + item.fctCpc = roundNumber(item.fctCpc, 0); + item.totalYearRain = roundNumber(item.totalYearRain, 1); + }); + const excelDownList: ExcelType[] = []; if(pageSize>5000){ data.forEach((item: FacilityPrecipitationProps) => { - dataFormSetting(item) - item.fctCpc = item.fctCpc ? parseFloat(item.fctCpc.toString().replace(/,/g, '')) : 0; - item.totalYearRain = item.totalYearRain ? parseFloat(item.totalYearRain.toString().replace(/,/g, '')) : 0; excelDownList.push({ 시설코드: item.bscFctCd, 권역: item.rvbsn, @@ -270,18 +270,12 @@ export const facilityPrecipitationReducer:(set:(fn: (state: FacilityPrecipitatio "연간총강수량(mm)": item.totalYearRain, }) }) - }else{ - data.forEach((item: FacilityPrecipitationProps) => { - dataFormSetting(item) - item.fctCpc = item.fctCpc ? parseFloat(item.fctCpc.toString().replace(/,/g, '')) : 0; - item.totalYearRain = item.totalYearRain ? parseFloat(item.totalYearRain.toString().replace(/,/g, '')) : 0; - }) } set((state:FacilityPrecipitationType) => ({ ...state, FacilityPrecipitation: pageSize<5000?{ ...state.FacilityPrecipitation, - facilityPrecipitation: res.data, + facilityPrecipitation: data, facilityPrecipitationCount: res.count, isLoading : false, }:{ diff --git a/apps/fo/app/store/facilityWaterQlty/index.tsx b/apps/fo/app/store/facilityWaterQlty/index.tsx index bcfb6326c..9c9ed29c6 100644 --- a/apps/fo/app/store/facilityWaterQlty/index.tsx +++ b/apps/fo/app/store/facilityWaterQlty/index.tsx @@ -129,23 +129,23 @@ const mainLabelArray: string[] = ['구분', '시도', '시군구', '용량별', // 시설수질리스트 헤더(행정별) const upHeadList1: TableUpperProps[] = [ { id: "C", title: "행정명", colSpan: 2, row: 0 }, - { id: "sidoNm", title: "시도", row: 1 }, - { id: "sggNm", title: "시군구", row: 1 }, - { id: "bscFctNm", title: "시설명", rowSpan: 2, row: 0 }, + { id: "sidoNm", title: "시도", row: 1, widthPercent:8 }, + { id: "sggNm", title: "시군구", row: 1, widthPercent:8 }, + { id: "bscFctNm", title: "시설명", rowSpan: 2, row: 0, widthPercent: 10 }, { id: "addr", title: "주소", rowSpan: 2, row: 0 }, - { id: "fctCpc", title: "시설용량(m³/일)", align: "right", rowSpan: 2, row: 0 }, + { id: "fctCpc", title: "시설용량(m³/일)", align: "right", rowSpan: 2, row: 0, widthPercent:10 }, { id: "A", title: "유입", colSpan: 5, row: 0 }, { id: "B", title: "방류", colSpan: 5, row: 0 }, - { id: "inflAssctBfrWqltBod", title: "BOD\n(mg/L)", upName: "upChangeRe3", upSequnce: 1, align: "right", row: 1 }, - { id: "inflAssctBfrWqltToc", title: "TOC\n(COD)\n(mg/L)", upName: "upChangeRe3", upSequnce: 2, align: "right", row: 1 }, - { id: "inflAssctBfrWqltSs", title: "SS\n(mg/L)", upName: "upChangeRe3", upSequnce: 3, align: "right", row: 1 }, - { id: "inflAssctBfrWqltTn", title: "T-N\n(mg/L)", upName: "upChangeRe3", upSequnce: 4, align: "right", row: 1 }, - { id: "inflAssctBfrWqltTp", title: "T-P\n(mg/L)", upName: "upChangeRe3", upSequnce: 3, align: "right", row: 1 }, - { id: "efflWqltBod", title: "BOD\n(mg/L)", upName: "upChangeRe4", upSequnce: 1, align: "right", row: 1 }, - { id: "efflWqltToc", title: "TOC\n(COD)\n(mg/L)", upName: "upChangeRe4", upSequnce: 2, align: "right", row: 1 }, - { id: "efflWqltSs", title: "SS\n(mg/L)", upName: "upChangeRe4", upSequnce: 3, align: "right", row: 1 }, - { id: "efflWqltTn", title: "T-N\n(mg/L)", upName: "upChangeRe4", upSequnce: 4, align: "right", row: 1 }, - { id: "efflWqltTp", title: "T-P\n(mg/L)", upName: "upChangeRe4", upSequnce: 3, align: "right", row: 1 }, + { id: "inflAssctBfrWqltBod", title: "BOD\n(mg/L)", upName: "upChangeRe3", upSequnce: 1, align: "right", row: 1, widthPercent:5 }, + { id: "inflAssctBfrWqltToc", title: "TOC\n(COD)\n(mg/L)", upName: "upChangeRe3", upSequnce: 2, align: "right", row: 1, widthPercent:5 }, + { id: "inflAssctBfrWqltSs", title: "SS\n(mg/L)", upName: "upChangeRe3", upSequnce: 3, align: "right", row: 1, widthPercent:5 }, + { id: "inflAssctBfrWqltTn", title: "T-N\n(mg/L)", upName: "upChangeRe3", upSequnce: 4, align: "right", row: 1, widthPercent:5 }, + { id: "inflAssctBfrWqltTp", title: "T-P\n(mg/L)", upName: "upChangeRe3", upSequnce: 3, align: "right", row: 1, widthPercent:5 }, + { id: "efflWqltBod", title: "BOD\n(mg/L)", upName: "upChangeRe4", upSequnce: 1, align: "right", row: 1, widthPercent:5 }, + { id: "efflWqltToc", title: "TOC\n(COD)\n(mg/L)", upName: "upChangeRe4", upSequnce: 2, align: "right", row: 1, widthPercent:5 }, + { id: "efflWqltSs", title: "SS\n(mg/L)", upName: "upChangeRe4", upSequnce: 3, align: "right", row: 1, widthPercent:5 }, + { id: "efflWqltTn", title: "T-N\n(mg/L)", upName: "upChangeRe4", upSequnce: 4, align: "right", row: 1, widthPercent:5 }, + { id: "efflWqltTp", title: "T-P\n(mg/L)", upName: "upChangeRe4", upSequnce: 3, align: "right", row: 1, widthPercent:5 }, ]; // 시설수질리스트 헤더(권역별) @@ -214,7 +214,6 @@ const upHeadListModalYear: TableUpperProps[] = [ { id: "efflWqltSs", title: "SS\n(mg/L)", upName: "upChangeRe2", upSequnce: 3, align: "right" }, { id: "efflWqltTn", title: "T-N\n(mg/L)", upName: "upChangeRe2", upSequnce: 2, align: "right" }, { id: "efflWqltTp", title: "T-P\n(mg/L)", upName: "upChangeRe2", upSequnce: 3, align: "right" }, - { id: "noProcessInflAmnt", title: "미처리하수량\n(m³/일)", align:"right"}, { id: "infoRnDay", title: "강우량\n(mm/일)", align: "right" } ]; @@ -231,7 +230,6 @@ const upHeadListModalYearCod: TableUpperProps[] = [ { id: "efflWqltSs", title: "SS\n(mg/L)", upName: "upChangeRe2", upSequnce: 3, align: "right" }, { id: "efflWqltTn", title: "T-N\n(mg/L)", upName: "upChangeRe2", upSequnce: 2, align: "right" }, { id: "efflWqltTp", title: "T-P\n(mg/L)", upName: "upChangeRe2", upSequnce: 3, align: "right" }, - { id: "noProcessInflAmnt", title: "미처리하수량\n(m³/일)", align:"right"}, { id: "infoRnDay", title: "강우량\n(mm/일)", align: "right" } ]; diff --git a/apps/fo/app/store/flowRate/index.tsx b/apps/fo/app/store/flowRate/index.tsx index f8125e59c..c61eb2d76 100644 --- a/apps/fo/app/store/flowRate/index.tsx +++ b/apps/fo/app/store/flowRate/index.tsx @@ -158,7 +158,6 @@ const upHeadListFlowRateModal:TableUpperProps[] = [ { id: "sumFlow", title: "연계처리량(m³/일)", align:"right"}, { id: "returnAmnt", title: "총인 반류수량(m³/일)", align:"right"}, { id: "efflAmnt", title: "방류량(m³/일)", align:"right"}, - { id: "noProcessInflAmnt", title: "미처리하수량(m³/일)", align:"right"}, { id: "infoRnDay", title: "강우량(mm/일)", align:"right"} ] From 68ee60e252eda80aa6e2ce4391c19c6ebc52a272 Mon Sep 17 00:00:00 2001 From: jsyang Date: Wed, 17 Sep 2025 16:12:47 +0900 Subject: [PATCH 08/10] =?UTF-8?q?=ED=85=8C=EC=9D=B4=EB=B8=94=20=EA=B0=84?= =?UTF-8?q?=EA=B2=A9=20=ED=8D=BC=EC=84=BC=ED=8A=B8=EB=A1=9C=20=EC=A1=B0?= =?UTF-8?q?=EC=A0=95,=20=EC=9D=B8=EC=88=98=EC=9D=B8=EA=B3=84=20md=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/fo/app/intro.md | 137 ++++++++++++++++++ .../dashboard/rainManage/page.tsx | 21 +-- .../facilityPrecipitation/modal/page.tsx | 1 + .../facilityPrecipitation/page.tsx | 2 +- .../(with-layout)/facilityWaterQlty/page.tsx | 2 +- .../app/pages/(with-layout)/flowRate/page.tsx | 2 +- .../pages/(with-layout)/planSewage/page.tsx | 8 +- .../pages/(with-layout)/processArea/page.tsx | 2 +- .../(with-layout)/processFacility/page.tsx | 2 +- apps/fo/app/pages/(with-layout)/rdi/page.tsx | 6 +- .../(with-layout)/sewageOccur/modal/page.tsx | 2 +- .../pages/(with-layout)/sewageOccur/page.tsx | 2 +- .../underWaterInput/modal/page.tsx | 3 + .../(with-layout)/underWaterInput/page.tsx | 2 +- apps/fo/app/store/dashboard/index.tsx | 12 +- .../app/store/facilityPrecipitation/index.tsx | 66 ++++----- apps/fo/app/store/facilityWaterQlty/index.tsx | 90 ++++++------ apps/fo/app/store/flowRate/index.tsx | 78 +++++----- apps/fo/app/store/planSewage/index.tsx | 53 +++---- apps/fo/app/store/processArea/index.tsx | 58 ++++---- apps/fo/app/store/processFacility/index.tsx | 80 +++++----- apps/fo/app/store/rdi/index.tsx | 82 +++++------ apps/fo/app/store/sewageOccur/index.tsx | 64 ++++---- apps/fo/app/store/underWaterInput/index.tsx | 64 ++++---- 24 files changed, 495 insertions(+), 344 deletions(-) create mode 100644 apps/fo/app/intro.md diff --git a/apps/fo/app/intro.md b/apps/fo/app/intro.md new file mode 100644 index 000000000..99be4afd7 --- /dev/null +++ b/apps/fo/app/intro.md @@ -0,0 +1,137 @@ +# 운영실태 인수인계 +## 이력 + written by yjs + 2025- +## 0. 알아두면 좋아요 + - 화면 초기 화면 : 메인 대시보드(표로 보는 대시보드) +
 - API swagger 주소 : http://con.mind-one.co.kr:11082/swagger-ui/index.html# +
 - 단위 : 유량은 정수까지 강우량은 소수점 1자리 반올림한다, 수질은 TN, TP만 소수점 3자리, 나머지는 1자리까지 반올림한다. +
  ▶︎ roundNumber(value:any, decimal:number) 컴포넌트를 활용해보세요!! +
 - 강우영향일 : 강우량이 3mm이상인 날은 강우영향일에 포함되고 하루전, 이틀전에 강우량이 3mm인 날의 경우도 강우량에 포함된다. 팝업의 강우시, 청천시 탭에서 보여주는 리스트를 만들 때 필요한 정보이니 참고한다. +
  ▶︎ 예시 : 1월 13일 강우량이 5일 경우 - 강우영향일 포함됨, 1월 14일, 1월 15일 강우량에 상관없이 ___강우영향일 포함됨___, 1월 16일의 경우 14일, 15일이 3mm미만이면 ___강우영향일 미포함됨___ +
  ▶︎ CalcRainEffect(data:any, weather) 컴포넌트에서 측정일, 강우량이 포함된 데이터를 파라미터로 넘기면 강우영향일(rainEffectDay) 컬럼 및 0,1로 여부 value로 데이터에 추가되어 리턴한다. +
 - 운영실태는 대부분 시설의 정보를 추출해주는 화면이 대다수이며 검색은 행정별, 유역별, 환경청별로 시설을 분류하여 조회하고 엑셀, 초기화, 조회 버튼이 우측에 존재한다. +
 - 메인 대시보드의 경우에는 수질, 유량 등 조회하는 화면의 정보들을 압축해서 보여주는 화면이라고 생각하면 좋다. 그렇기 때문에 대시보드에서의 각각의 데이터와 메인 화면의 데이터가 일치하는지 검증하는 작업이 많이 필요하다. +
 - 하루 단위의 데이터를 보여주는 모달에서 연간, 하절기, 동절기, 청천시, 강우시 등의 1년치 데이터를 필터링 하여 보여주는데 탭을 누를 시 api가 재호출 되는 형식이 아니고 1년치 데이터를 필터링 하여 출력해주고 청천시탭의 경우 강우영향일은 미포함, 강우시탭의 경우 강우영향일 포함된 데이터를 보여줘야 한다. +## 1. 표로 보기(메인 대시보드) +### 1-1) 시설정보 및 운영현황 + - 년도, 시설에 해당하는 시설정보 및 유량, 수질, 물사용량 등의 정보를 표로 표출해주는 화면 +
 - 시설계획 : 알에스원 DC-SERVICE API에서 받은 데이터를 화면에 출력 +
  ▶︎ 주소 : 'https://apigateway.apps.rsonesoft.com/dc-service/api/v1/nowDmgMtncGnsvy'; +
  ▶︎ 파라미터 : swtrmtFcltCd - 시설코드 / ctpvNm - 시도명 / sggNm - 시군구명 / targetYear - 대상년도 +
  ▶︎ 리턴값(사용되는것 위주) +
   /** +
    * 증설계획 +
    */ +
   기승인(당초4단계), 현재, 변경1~4 +
   planSwageQntSumDt4 : number | '', +
   planSwageQntSum : number | '', +
   planSwageQntSumDc1 : number | '', +
   planSwageQntSumDc2 : number | '', +
   planSwageQntSumDc3 : number | '', +
   planSwageQntSumDc4 : number | '', +
   /** +
    * 처리인구 +
    */ +
   // 기승인(당초4단계), 현재, 변경1~4 +
   swtrmtPpltnCntDt4 : number | '', +
   swtrmtPpltnCnt : number | '', +
   swtrmtPpltnCntDc1 : number | '', +
   swtrmtPpltnCntDc2 : number | '', +
   swtrmtPpltnCntDc3 : number | '', +
   swtrmtPpltnCntDc4 : number | '', +
   /** +
    * 처리구역면적 +
    */ +
   // 기승인(당초4단계), 현재, 변경1~4 +
   swtrmtZoneAreaDt4 : number | '', +
   swtrmtZoneArea : number | '', +
   swtrmtZoneAreaDc1 : number | '', +
   swtrmtZoneAreaDc2 : number | '', +
   swtrmtZoneAreaDc3 : number | '', +
   swtrmtZoneAreaDc4 : number | '', +
   // 처리구역 +
   trtDstr : string | '', +
    +
 - 물사용량 : 현재 DB가 없기 때문에 해당 년도의 평균 하수유입량 * 0.65 (65%) +
 - 운영실태 표(우측 표)의 년도는 검색한 년도에 따라 값 설정 +
 - 유입유량 : 순수하수유입량 + 연계처리수 + 총인설비반류수 + +### 1-2) 메인 그래프 + - 1년치 수질항목들의 데이터들을 표출해주는 화면 +
 - lineBarChart, lineChart 컴포넌트를 사용하여 차트를 생성함 + +### 1-3) 강우일 운영현황 + - 1년치 시설의 강우량 데이터를 구간별로 일수와 강우량 정보를 표출해주는 화면 +
 - 순수 하루단위의 강우량에 따라서 데이터를 표출하는 것이 아닌 __강우영향일__ 계산된 후 통계를 구한다. +
  ▶︎ 예시 : 1월 13일 강우량이 5일 경우 - 3~10mm구간 통계포함, 1월 14일 강우량이 0일 경우 - ___3~10mm구간 통계 포함___ +
 - 설계유입수질은 처음 설계 당시의 수질 데이터이기 때문에 한개의 데이터만 추출 +
 - 시설용량 대비는 유입유량/시설용량 * 100 (비율) +
 - 계의 경우 일수는 합계 그 외에는 평균값을 나타낸다. +## 2. 처리시설 현황 +### 2-1) 처리시설 시설정보 + - 처리시설 정보들과 이력들을 조회할 수 있는 화면이다. +
 - 모달 '기본정보' 탭의 시설계획정보는 '이력관리' 탭의 이력 리스트 중 마지막 이력의 수질정보를 표출해준다. +
 - 모달 '이력관리' 탭에서는 이력정보와 해당 차수의 수질정보를 보여준다. (1대1) +### 2-2) 처리구역정보 + - 처리시설의 계획정보를 조회할 수 있는 화면이다. +
 - 1-1)의 시설계획을 참고하도록 한다. 해당 api로 계획정보를 가져온다. +
 - 요구사항 중 원래는 단계별로 년도를 괄호로 표시해달라는 요청사항이 있었으나 시설들마다 다르기 때문에 메인화면에 단계하단에 년도를 넣는게 불가능하다. +
  ▶︎ 대시보드의 계획정보 영역의 경우에는 시설코드를 파라미터로 던져 계획정보를 가져오기 때문에 가능하여 대시보드의 계획정보는 괄호로 년도를 추출하도록 한다. +## 3. 처리시설 연간 운영 현황 +### 3-1) 강수현황 + - 시설별 강수현황을 조회할 수 있는 화면이다. +
 - 메인화면에서의 시설별 1년치 강우일, 강우일수, 강우량 데이터는 백엔드에서 계산되어 출력되는 형식이 아니라 하루치 데이터의 object(rainyDayObjList)를 store에서 계산하여 출력한다. swagger를 참고한다. +
   +
  data": [ +
   { +
    "bscFctCd": "11000SW001R", +
    "bscFctNm": "난지", +
    "sido": "서울특별시", +
    "gugun": " ", +
    "addr": "경기도 고양시 덕양구 현천동 692-2", +
    "fctCpc": 860000, +
    "stnKo": "강서", +
    "rvbsn": "한강", +
    "lgbsn": "한강본류", +
    "mdmbsn": "한강서울", +
    "rgnNm": "한강유역환경청", +
    "totalCount": 0, +
    "rainyDayObjList": [ +
     { +
      "bscFctCd": "11000SW001R", +
      "rainDt": "2024-01-01", +
      "infoRnDay": 0 +
     }, +
     { +
      "bscFctCd": "11000SW001R", +
      "rainDt": "2024-01-02", +
      "infoRnDay": 0 +
     }, +
     ..... +

 - 일별 데이터 object(rainyDayObjList)를 강우영향일 구하는 컴포넌트에 던져 강우영향일을 구한 후 메인화면에 출력해야한다. +
 - 모달 화면에서는 일별 데이터를 추출해 보여준다. +### 3-2) 유량현황 + - 시설별 년도별 유량현황을 조회할 수 있는 화면이다. +
 - 화면의 구성은 강수현황과 같이 메인화면에는 1년치 유량정보, 모달로는 하루 단위의 유량정보를 보여주지만 메인화면에서 데이터는 집계되어 추출된다. +### 3-3) 수질현황 + - 시설별 년도별 수질현황을 조회할 수 있는 화면이다. +
 - 2021년 이전은 COD, 21년부터는 TOC값을 표출한다. 그것을 구분하기 위해 2021년 이전의 TOC값들은 소괄호로 감싸준다. +
 - 모달에서 '수질 TMS'의 경우에는 운영실태 API가 아닌 물재이용 API에서 데이터를 얻으며 getFetch에서 'wr' 파라미터로 물재이용 데이터를 얻는다. +
  ▶︎ api 주소 : http://con.mind-one.co.kr:11080/api/v1/il/getTms/{시설번호} +## 4. 운영실태 +### 4-1) 오수발생량 추정 + - 물사용량 : 원래는 연간 월별 물사용량을 연계받아서 사용해야하지만 현재 연계를 받지 못하여 하수유입량의 65%를 물사용량으로 잡았다. +
 - 오수전환율 : 90%로 고정 +
 - 오수발생량 추정 : 물사용량 * (100/오수전환율) +
 - 연간 하수유입량과 청천시 하수유입량을 구하기 위해서 1년치 하루단위의 데이터를 가져와 계산이 필요(강우영향일 계산필요) +
 - 물 사용량은 월별로 연계를 받기 때문에 모달에서 하수유입량을 월별로 통계를 구해야 한다. +
 - 계산을 해보면 모달에서 월별 사용량의 평균과 1년치 데이터의 평균은 다르다. 직접 계산해보면 다를 수 밖에 없다. 하지만 값을 맞추기 위해서 모달에서의 평균값을 모달의 데이터가 아닌 1년치 데이터의 평균을 넣고 최대, 최소만 월별 데이터를 기반으로 구한다. +### 4-2) 지하수유입량 추정 + -적정여부 = 연간 지하수유입량/연평균 유입하수량*100 +
 -지하수 유입량 = 하수처리장 청천시 실제유입량 - (물사용량 × 오수전환율) +
 -모달에서의 오수발생량 전체 평균을 구할 때 평균 하수유입량을 기반으로 한 물사용량이 아닌 현재 월 데이터에서의 평균을 구한것을 넣는다. +### 4-3) RDII분석 + -RDII 추정값 : 하절기(6~8월) 중 최저 유입 BOD일때 유입유량 x ((동절기 청천시 유입BOD - 하절기(6~8월) 중 최저 유입BOD) / (동절기 청천시 유입BOD)) +
 - RDII 추정시 일강수량 : 하절기 최저 유입 BOD 날짜의 강우량 +
 - 적정여부 : 하절기일 때 최저유입 BOD유입유량 > 시설용량 일 경우 초과유입 아니면 적정 \ No newline at end of file diff --git a/apps/fo/app/pages/(with-layout)/dashboard/rainManage/page.tsx b/apps/fo/app/pages/(with-layout)/dashboard/rainManage/page.tsx index 9bceed75e..a24230de7 100644 --- a/apps/fo/app/pages/(with-layout)/dashboard/rainManage/page.tsx +++ b/apps/fo/app/pages/(with-layout)/dashboard/rainManage/page.tsx @@ -46,16 +46,17 @@ export default function RainManageTab({searchYear = '', fcltyList = []}: facilit return (
- {}} - > - + {}} + widthFixed={true} + > + ☞ 일수에 강우영향일 포함됨
) diff --git a/apps/fo/app/pages/(with-layout)/facilityPrecipitation/modal/page.tsx b/apps/fo/app/pages/(with-layout)/facilityPrecipitation/modal/page.tsx index 1f50a9ffe..524cdc99c 100644 --- a/apps/fo/app/pages/(with-layout)/facilityPrecipitation/modal/page.tsx +++ b/apps/fo/app/pages/(with-layout)/facilityPrecipitation/modal/page.tsx @@ -222,6 +222,7 @@ export default function PrecipitationModal(props: PrecipitationModalProps) { cellClick={undefined} onPageChange={() => {}} boldArray={[0]} + widthFixed={true} /> diff --git a/apps/fo/app/pages/(with-layout)/facilityPrecipitation/page.tsx b/apps/fo/app/pages/(with-layout)/facilityPrecipitation/page.tsx index e2d7ef5cc..aaba872d7 100644 --- a/apps/fo/app/pages/(with-layout)/facilityPrecipitation/page.tsx +++ b/apps/fo/app/pages/(with-layout)/facilityPrecipitation/page.tsx @@ -224,7 +224,7 @@ export default function FacilityPrecipitation() {
- index !== undefined && cellClick(index)} headName={"시설별 강수현황"} tableData={mainList} headlist={upheadList} pageSize={10} total={total} resetPageNo={resetPage} onPageChange={handlePageChange} /> + index !== undefined && cellClick(index)} headName={"시설별 강수현황"} tableData={mainList} headlist={upheadList} pageSize={10} total={total} resetPageNo={resetPage} onPageChange={handlePageChange} widthFixed={true} />
diff --git a/apps/fo/app/pages/(with-layout)/facilityWaterQlty/page.tsx b/apps/fo/app/pages/(with-layout)/facilityWaterQlty/page.tsx index 98f5ba57a..5367a1c22 100644 --- a/apps/fo/app/pages/(with-layout)/facilityWaterQlty/page.tsx +++ b/apps/fo/app/pages/(with-layout)/facilityWaterQlty/page.tsx @@ -190,7 +190,7 @@ export default function ProcessFacilitySearch() {
- index !== undefined && cellClick(index)} headName={"시설별 수질현황"} tableData={mainList} headlist={upheadList} pageSize={10} total={total<10?facilityWaterQltyList.length:total} resetPageNo={resetPage} onPageChange={handlePageChange} /> + index !== undefined && cellClick(index)} headName={"시설별 수질현황"} tableData={mainList} headlist={upheadList} pageSize={10} total={total<10?facilityWaterQltyList.length:total} resetPageNo={resetPage} onPageChange={handlePageChange} widthFixed={true} />
diff --git a/apps/fo/app/pages/(with-layout)/flowRate/page.tsx b/apps/fo/app/pages/(with-layout)/flowRate/page.tsx index bec068858..85fcaef88 100644 --- a/apps/fo/app/pages/(with-layout)/flowRate/page.tsx +++ b/apps/fo/app/pages/(with-layout)/flowRate/page.tsx @@ -192,7 +192,7 @@ export default function ProcessFacilitySearch() {
- index !== undefined && cellClick(index)} headName={"시설별 유량현황"} tableData={flowRateList} headlist={upheadList} pageSize={10} total={total} resetPageNo={resetPage} onPageChange={handlePageChange} /> + index !== undefined && cellClick(index)} headName={"시설별 유량현황"} tableData={flowRateList} headlist={upheadList} pageSize={10} total={total} resetPageNo={resetPage} onPageChange={handlePageChange} widthFixed={true} />
diff --git a/apps/fo/app/pages/(with-layout)/planSewage/page.tsx b/apps/fo/app/pages/(with-layout)/planSewage/page.tsx index dd7b263a2..37fcb5b01 100644 --- a/apps/fo/app/pages/(with-layout)/planSewage/page.tsx +++ b/apps/fo/app/pages/(with-layout)/planSewage/page.tsx @@ -142,12 +142,14 @@ export default function PlanSewage() { default: if(sidoValue !== '0') nameCd = sidoValue; if(sigunValue !== '0') nameCd = sigunValue; - partStr = envPartValue !== '0' ? envPartValue:partValue; - break; + partStr = envPartValue !== '0' ? envPartValue:partValue; + break; } if (partStr.length > 1 || fcltCpct !== '0' || operationValue!== '0' ||nameCd ||(fcltyName.trim() !== "" && fcltyName.trim() !== null)) { searchPlanSewageList(pageNo, pageCnt, searchYear, partStr, nameCd || '0', fcltCpct, operationValue, fcltyName.trim() !== "" || fcltyName.trim() !== null ? fcltyName : undefined); } else { + // G로 넘기면 데이터가 안떠서 환경청 전체로 넘기면 전체를 추출하기위해서... + partValue = partValue==='G'?'A':partValue; searchPlanSewageList(pageNo, pageCnt, searchYear, partValue); } }, [operationValue, fcltyName, searchPlanSewageList, searchYear, fcltCpct]); @@ -198,7 +200,7 @@ export default function PlanSewage() {
- +
diff --git a/apps/fo/app/pages/(with-layout)/processArea/page.tsx b/apps/fo/app/pages/(with-layout)/processArea/page.tsx index 24a30d910..746f9a111 100644 --- a/apps/fo/app/pages/(with-layout)/processArea/page.tsx +++ b/apps/fo/app/pages/(with-layout)/processArea/page.tsx @@ -157,7 +157,7 @@ export default function ProcessArea() {
- index !== undefined && cellClick(index)} headName={"처리구역정보"} tableData={mainList} headlist={upHeadList1} pageSize={10} total={total} resetPageNo={resetPage} onPageChange={handlePageChange} /> + index !== undefined && cellClick(index)} headName={"처리구역정보"} tableData={mainList} headlist={upHeadList1} pageSize={10} total={total} resetPageNo={resetPage} onPageChange={handlePageChange} widthFixed={true} />
diff --git a/apps/fo/app/pages/(with-layout)/processFacility/page.tsx b/apps/fo/app/pages/(with-layout)/processFacility/page.tsx index 189238bdf..2537a4cbd 100644 --- a/apps/fo/app/pages/(with-layout)/processFacility/page.tsx +++ b/apps/fo/app/pages/(with-layout)/processFacility/page.tsx @@ -275,8 +275,8 @@ export default function ProcessFacilitySearch() { total={total} resetPageNo={resetPage} onPageChange={changePage} + widthFixed={true} > - diff --git a/apps/fo/app/pages/(with-layout)/rdi/page.tsx b/apps/fo/app/pages/(with-layout)/rdi/page.tsx index cf7c8250f..11b1f849a 100644 --- a/apps/fo/app/pages/(with-layout)/rdi/page.tsx +++ b/apps/fo/app/pages/(with-layout)/rdi/page.tsx @@ -66,7 +66,7 @@ export default function Rdi() { // 초기화 변수 const [resetPage, setResetPage] = useState(false); // 표 너비 - const [widthSize, setWidthSize] = useState("w-[120%]"); + const [widthSize, setWidthSize] = useState("w-[130%]"); // 구분별 그리드 헤더 const [upheadList, setUpheadList] = useState(upHeadList1); // 용량별 @@ -155,7 +155,7 @@ export default function Rdi() { }, [operationValue, fcltyName, searchRdiList, searchYear, fcltCpct]); const chkVal = useCallback((returntype:ReturnType) => { - setWidthSize(returntype.partValue=='A' ?"w-[120%]":"w-[130%]") + setWidthSize(returntype.partValue=='A' ?"w-[130%]":"w-[150%]") setUpheadList(returntype.partValue == 'R' ? upHeadList2 : returntype.partValue == 'G'?upHeadList3:upHeadList1); setResetPage(true); }, [upHeadList1, upHeadList2, upHeadList3]); @@ -201,7 +201,7 @@ export default function Rdi() {
- +
diff --git a/apps/fo/app/pages/(with-layout)/sewageOccur/modal/page.tsx b/apps/fo/app/pages/(with-layout)/sewageOccur/modal/page.tsx index 37cadc7c6..f09d2f149 100644 --- a/apps/fo/app/pages/(with-layout)/sewageOccur/modal/page.tsx +++ b/apps/fo/app/pages/(with-layout)/sewageOccur/modal/page.tsx @@ -142,7 +142,7 @@ export default function SewageOccurModal(props: { fcltyName: string; facilityCd - {}} boldArray={[0, 1, 2]}> + {}} boldArray={[0, 1, 2]} widthFixed={true} > diff --git a/apps/fo/app/pages/(with-layout)/sewageOccur/page.tsx b/apps/fo/app/pages/(with-layout)/sewageOccur/page.tsx index 885af7567..23f764269 100644 --- a/apps/fo/app/pages/(with-layout)/sewageOccur/page.tsx +++ b/apps/fo/app/pages/(with-layout)/sewageOccur/page.tsx @@ -222,7 +222,7 @@ export default function PlanSewage() {
- index !== undefined && cellClick(index)} headName={"오수발생량 추정"} tableData={mainList} headlist={upheadList} pageSize={10} total={total} resetPageNo={resetPage} onPageChange={handlePageChange} /> + index !== undefined && cellClick(index)} headName={"오수발생량 추정"} tableData={mainList} headlist={upheadList} pageSize={10} total={total} resetPageNo={resetPage} onPageChange={handlePageChange} widthFixed={true} />
diff --git a/apps/fo/app/pages/(with-layout)/underWaterInput/modal/page.tsx b/apps/fo/app/pages/(with-layout)/underWaterInput/modal/page.tsx index 1d4ea2310..5da9622d0 100644 --- a/apps/fo/app/pages/(with-layout)/underWaterInput/modal/page.tsx +++ b/apps/fo/app/pages/(with-layout)/underWaterInput/modal/page.tsx @@ -166,6 +166,7 @@ export default function UnderWaterInputModal({fcltyCd='', fcltyName='',searchYea onPageChange={() => {}} className="h-[200px]" boldArray={[0,1,2]} + widthFixed={true} /> @@ -233,6 +234,7 @@ export default function UnderWaterInputModal({fcltyCd='', fcltyName='',searchYea onPageChange={() => { } } className="h-[500px]" boldArray={[0,1,2]} + widthFixed={true} /> @@ -291,6 +293,7 @@ export default function UnderWaterInputModal({fcltyCd='', fcltyName='',searchYea onPageChange={() => {}} className="h-[500px]" boldArray={[0,1,2]} + widthFixed={true} /> diff --git a/apps/fo/app/pages/(with-layout)/underWaterInput/page.tsx b/apps/fo/app/pages/(with-layout)/underWaterInput/page.tsx index 2126a31a0..6d8172bce 100644 --- a/apps/fo/app/pages/(with-layout)/underWaterInput/page.tsx +++ b/apps/fo/app/pages/(with-layout)/underWaterInput/page.tsx @@ -220,7 +220,7 @@ export default function UnderWaterInput() {
- index !== undefined && cellClick(index)} headName={"지하수유입량 추정"} tableData={mainList} headlist={upheadList} pageSize={10} total={total} resetPageNo={resetPage} onPageChange={handlePageChange} /> + index !== undefined && cellClick(index)} headName={"지하수유입량 추정"} tableData={mainList} headlist={upheadList} pageSize={10} total={total} resetPageNo={resetPage} onPageChange={handlePageChange} widthFixed={true}/>
※적정여부 = 연간 지하수유입량/연평균 유입하수량*100

diff --git a/apps/fo/app/store/dashboard/index.tsx b/apps/fo/app/store/dashboard/index.tsx index 75a8fe3ae..61f805ed5 100644 --- a/apps/fo/app/store/dashboard/index.tsx +++ b/apps/fo/app/store/dashboard/index.tsx @@ -358,12 +358,12 @@ const upHeadListOperationStatus : TableUpperProps[] = [ ] const upHeadListRainManage : TableUpperProps[] = [ - { id: "rainItem", title: "강우량", row:0, rowSpan:2 }, - { id: "rainRate", title: "강우조건\n비율(%)", row:0, rowSpan:2, align: "right" }, - { id: "rainDay", title: "일수", row:0, rowSpan:2, align: "right" }, + { id: "rainItem", title: "강우량", row:0, rowSpan:2, widthPercent: 8 }, + { id: "rainRate", title: "강우조건\n비율(%)", row:0, rowSpan:2, align: "right", widthPercent: 5 }, + { id: "rainDay", title: "일수", row:0, rowSpan:2, align: "right", widthPercent: 5 }, { id: "A", title: "유입(㎥/일)", row:0, colSpan:2 }, - { id: "inflAmnt", title: "유입유량", row:1, align: "right" }, - { id: "fctCpc", title: "시설용량대비", row:1, align: "right" }, + { id: "inflAmnt", title: "유입유량", row:1, align: "right", widthPercent: 6 }, + { id: "fctCpc", title: "시설용량대비", row:1, align: "right", widthPercent: 6 }, { id: "B", title: "설계유입수질(㎎/L)", row:0, colSpan:5 }, { id: "dsInflWqltBod", title: "BOD", row:1, align: "right" }, { id: "dsInflWqltCod", title: "TOC\n(COD)", row:1, align: "right" }, @@ -2081,7 +2081,7 @@ export const dashBoardReducer:(set:(fn: (state: DashBoardType) => DashBoardType) } const fcltyCpcValue = res.data.wqltObjs[0].fctCpc; - const itemList = ['계', '3~10mm 미만', '10~20mm 미만', '20~30mm 미만', '30~40mm 미만', '40~50mm 미만', '50mm~60mm 미만', '60mm 이상']; + const itemList = ['계', '3~10mm 미만', '10~20mm 미만', '20~30mm 미만', '30~40mm 미만', '40~50mm 미만', '50~60mm 미만', '60mm 이상']; const rainRate = ['0', '0', '0', '0', '0', '0', '0', '0']; const rainDate = [0, 0, 0, 0, 0, 0, 0, 0]; const inflAmtCnt = [0, 0, 0, 0, 0, 0, 0, 0]; diff --git a/apps/fo/app/store/facilityPrecipitation/index.tsx b/apps/fo/app/store/facilityPrecipitation/index.tsx index cbd824ff8..984a40814 100644 --- a/apps/fo/app/store/facilityPrecipitation/index.tsx +++ b/apps/fo/app/store/facilityPrecipitation/index.tsx @@ -69,48 +69,48 @@ const LabelArray:string[] = ['구분', '시도', '시군구','용량별', '시 // 리스트 헤더 const upHeadList1:TableUpperProps[] = [ - { id: "A", title: "행정구역", row: 0, colSpan: 2 }, - { id: "sido", title: "시도", upName:"upChangeRe", upSequnce:1, row: 1 }, - { id: "gugun", title: "시군구", upName:"upChangeRe",upSequnce:2, row: 1 }, - { id: "bscFctNm", title: "시설명", row: 0, rowSpan: 2}, + { id: "A", title: "행정구역", row: 0, colSpan: 2, widthPercent: 20 }, + { id: "sido", title: "시도", upName:"upChangeRe", upSequnce:1, row: 1, widthPercent: 10 }, + { id: "gugun", title: "시군구", upName:"upChangeRe",upSequnce:2, row: 1, widthPercent: 10 }, + { id: "bscFctNm", title: "시설명", row: 0, rowSpan: 2, widthPercent: 10}, { id: "addr", title: "주소", row: 0, rowSpan: 2}, - { id: "fctCpc", title: "시설용량(m³/일)", row: 0, rowSpan: 2, align:"right"}, - { id: "stnKo", title: "관측소 정보", row: 0, rowSpan: 2}, - { id: "infoRnDay", title: "강우일\n(일)", row: 0, rowSpan: 2, align:"right"}, - { id: "rainEffectDay", title: "강우영향일\n(일)", row: 0, rowSpan: 2, align:"right"}, - { id: "totalYearRain", title: "연간 총 총강수량\n(mm)", row: 0, rowSpan: 2, align:"right"} + { id: "fctCpc", title: "시설용량(m³/일)", row: 0, rowSpan: 2, align:"right", widthPercent: 10 }, + { id: "stnKo", title: "관측소 정보", row: 0, rowSpan: 2, widthPercent: 10 }, + { id: "infoRnDay", title: "강우일\n(일)", row: 0, rowSpan: 2, align:"right", widthPercent: 7 }, + { id: "rainEffectDay", title: "강우영향일\n(일)", row: 0, rowSpan: 2, align:"right", widthPercent: 7 }, + { id: "totalYearRain", title: "연간 총 총강수량\n(mm)", row: 0, rowSpan: 2, align:"right", widthPercent: 7 } ]; const upHeadList2:TableUpperProps[] = [ - { id: "A", title: "유역", row: 0, colSpan: 3} , - { id: "rvbsn", title: "권역", upName:"upChangeRe", upSequnce:1, row: 1} , - { id: "lgbsn", title: "단위유역", upName:"upChangeRe", upSequnce:2, row: 1}, - { id: "mdmbsn", title: "중권역", upName:"upChangeRe", upSequnce:3, row: 1}, - { id: "bscFctNm", title: "시설명", row: 0, rowSpan: 2}, + { id: "A", title: "유역", row: 0, colSpan: 3, widthPercent: 21 } , + { id: "rvbsn", title: "권역", upName:"upChangeRe", upSequnce:1, row: 1, widthPercent: 7 } , + { id: "lgbsn", title: "단위유역", upName:"upChangeRe", upSequnce:2, row: 1, widthPercent: 7 }, + { id: "mdmbsn", title: "중권역", upName:"upChangeRe", upSequnce:3, row: 1, widthPercent: 7 }, + { id: "bscFctNm", title: "시설명", row: 0, rowSpan: 2, widthPercent: 10 }, { id: "addr", title: "주소", row: 0, rowSpan: 2}, - { id: "fctCpc", title: "시설용량(m³/일)", row: 0, rowSpan: 2, align:"right"}, - { id: "stnKo", title: "관측소 정보", row: 0, rowSpan: 2}, - { id: "infoRnDay", title: "강우일\n(일)", row: 0, rowSpan: 2, align:"right"}, - { id: "rainEffectDay", title: "강우영향일\n(일)", row: 0, rowSpan: 2, align:"right"}, - { id: "totalYearRain", title: "연간 총 총강수량\n(mm)", row: 0, rowSpan: 2, align:"right"} + { id: "fctCpc", title: "시설용량(m³/일)", row: 0, rowSpan: 2, align:"right", widthPercent: 10 }, + { id: "stnKo", title: "관측소 정보", row: 0, rowSpan: 2, widthPercent: 10 }, + { id: "infoRnDay", title: "강우일\n(일)", row: 0, rowSpan: 2, align:"right", widthPercent: 7 }, + { id: "rainEffectDay", title: "강우영향일\n(일)", row: 0, rowSpan: 2, align:"right", widthPercent: 7 }, + { id: "totalYearRain", title: "연간 총 총강수량\n(mm)", row: 0, rowSpan: 2, align:"right", widthPercent: 7 } ]; const upHeadList3:TableUpperProps[] = [ - { id: "A", title: "유역", row: 0, colSpan: 3} , - { id: "rvbsn", title: "권역", upName:"upChangeRe1", upSequnce:1, row: 1}, - { id: "lgbsn", title: "단위유역", upName:"upChangeRe1", upSequnce:2, row: 1}, - { id: "mdmbsn", title: "중권역", upName:"upChangeRe1", upSequnce:3, row: 1}, - { id: "rgnNm", title: "환경청", row: 0, rowSpan: 2}, - { id: "B", title: "행정구역", upName:"upChangeRe2", row: 0, colSpan: 2}, - { id: "sido", title: "시도", upName:"upChangeRe2", upSequnce:1, row: 1}, - { id: "gugun", title: "시군구", upName:"upChangeRe2",upSequnce:2, row: 1}, - { id: "bscFctNm", title: "시설명", row: 0, rowSpan: 2}, + { id: "A", title: "유역", row: 0, colSpan: 3, widthPercent: 15 } , + { id: "rvbsn", title: "권역", upName:"upChangeRe1", upSequnce:1, row: 1, widthPercent: 5 }, + { id: "lgbsn", title: "단위유역", upName:"upChangeRe1", upSequnce:2, row: 1, widthPercent: 5 }, + { id: "mdmbsn", title: "중권역", upName:"upChangeRe1", upSequnce:3, row: 1, widthPercent: 5 }, + { id: "rgnNm", title: "환경청", row: 0, rowSpan: 2, widthPercent: 7 }, + { id: "B", title: "행정구역", upName:"upChangeRe2", row: 0, colSpan: 2, widthPercent: 10 }, + { id: "sido", title: "시도", upName:"upChangeRe2", upSequnce:1, row: 1, widthPercent: 5 }, + { id: "gugun", title: "시군구", upName:"upChangeRe2",upSequnce:2, row: 1, widthPercent: 5 }, + { id: "bscFctNm", title: "시설명", row: 0, rowSpan: 2, widthPercent: 10 }, { id: "addr", title: "주소", row: 0, rowSpan: 2}, - { id: "fctCpc", title: "시설용량(m³/일)", row: 0, rowSpan: 2, align:"right"}, - { id: "stnKo", title: "관측소 정보", row: 0, rowSpan: 2}, - { id: "infoRnDay", title: "강우일\n(일)", row: 0, rowSpan: 2, align:"right"}, - { id: "rainEffectDay", title: "강우영향일\n(일)", row: 0, rowSpan: 2, align:"right"}, - { id: "totalYearRain", title: "연간 총 총강수량\n(mm)", row: 0, rowSpan: 2, align:"right"} + { id: "fctCpc", title: "시설용량(m³/일)", row: 0, rowSpan: 2, align:"right", widthPercent: 10 }, + { id: "stnKo", title: "관측소 정보", row: 0, rowSpan: 2, widthPercent: 10 }, + { id: "infoRnDay", title: "강우일\n(일)", row: 0, rowSpan: 2, align:"right", widthPercent: 7 }, + { id: "rainEffectDay", title: "강우영향일\n(일)", row: 0, rowSpan: 2, align:"right", widthPercent: 7 }, + { id: "totalYearRain", title: "연간 총 총강수량\n(mm)", row: 0, rowSpan: 2, align:"right", widthPercent: 7 } ]; const facilityPrecipitation:FacilityPrecipitationProps[] = [ diff --git a/apps/fo/app/store/facilityWaterQlty/index.tsx b/apps/fo/app/store/facilityWaterQlty/index.tsx index 9c9ed29c6..c60f72cd2 100644 --- a/apps/fo/app/store/facilityWaterQlty/index.tsx +++ b/apps/fo/app/store/facilityWaterQlty/index.tsx @@ -128,14 +128,14 @@ const mainLabelArray: string[] = ['구분', '시도', '시군구', '용량별', // 시설수질리스트 헤더(행정별) const upHeadList1: TableUpperProps[] = [ - { id: "C", title: "행정명", colSpan: 2, row: 0 }, - { id: "sidoNm", title: "시도", row: 1, widthPercent:8 }, - { id: "sggNm", title: "시군구", row: 1, widthPercent:8 }, + { id: "C", title: "행정명", colSpan: 2, row:0, widthPercent:10 }, + { id: "sidoNm", title: "시도", row: 1, widthPercent:5}, + { id: "sggNm", title: "시군구", row: 1, widthPercent:5 }, { id: "bscFctNm", title: "시설명", rowSpan: 2, row: 0, widthPercent: 10 }, { id: "addr", title: "주소", rowSpan: 2, row: 0 }, { id: "fctCpc", title: "시설용량(m³/일)", align: "right", rowSpan: 2, row: 0, widthPercent:10 }, - { id: "A", title: "유입", colSpan: 5, row: 0 }, - { id: "B", title: "방류", colSpan: 5, row: 0 }, + { id: "A", title: "유입", colSpan: 5, row: 0, widthPercent:25 }, + { id: "B", title: "방류", colSpan: 5, row: 0, widthPercent:25 }, { id: "inflAssctBfrWqltBod", title: "BOD\n(mg/L)", upName: "upChangeRe3", upSequnce: 1, align: "right", row: 1, widthPercent:5 }, { id: "inflAssctBfrWqltToc", title: "TOC\n(COD)\n(mg/L)", upName: "upChangeRe3", upSequnce: 2, align: "right", row: 1, widthPercent:5 }, { id: "inflAssctBfrWqltSs", title: "SS\n(mg/L)", upName: "upChangeRe3", upSequnce: 3, align: "right", row: 1, widthPercent:5 }, @@ -150,52 +150,52 @@ const upHeadList1: TableUpperProps[] = [ // 시설수질리스트 헤더(권역별) const upHeadList2: TableUpperProps[] = [ - { id: "C", title: "유역", colSpan: 3, row: 0 }, - { id: "rvbsn", title: "권역", upName: "upChangeRe1", upSequnce: 1, row:1 }, - { id: "lgbsn", title: "단위유역", upName: "upChangeRe1", upSequnce: 2, row:1 }, - { id: "mdmbsn", title: "중권역", upName: "upChangeRe1", upSequnce: 3, row:1 }, - { id: "bscFctNm", title: "시설명", row:0, rowSpan:2 }, + { id: "C", title: "유역", colSpan: 3, row: 0, widthPercent:15 }, + { id: "rvbsn", title: "권역", upName: "upChangeRe1", upSequnce: 1, row:1, widthPercent:5 }, + { id: "lgbsn", title: "단위유역", upName: "upChangeRe1", upSequnce: 2, row:1, widthPercent:5 }, + { id: "mdmbsn", title: "중권역", upName: "upChangeRe1", upSequnce: 3, row:1, widthPercent:5 }, + { id: "bscFctNm", title: "시설명", row:0, rowSpan:2, widthPercent:10 }, { id: "addr", title: "주소", row:0, rowSpan:2 }, - { id: "fctCpc", title: "시설용량(m³/L)", align: "right", row:0, rowSpan:2 }, - { id: "A", title: "유입", colSpan: 5, row: 0 }, - { id: "B", title: "방류", colSpan: 5, row: 0 }, - { id: "inflAssctBfrWqltBod", title: "BOD\n(mg/L)", upName: "upChangeRe3", upSequnce: 1, align: "right", row:1 }, - { id: "inflAssctBfrWqltToc", title: "TOC\n(COD)\n(mg/L)", upName: "upChangeRe3", upSequnce: 2, align: "right", row:1 }, - { id: "inflAssctBfrWqltSs", title: "SS\n(mg/L)", upName: "upChangeRe3", upSequnce: 3, align: "right", row:1 }, - { id: "inflAssctBfrWqltTn", title: "T-N\n(mg/L)", upName: "upChangeRe3", upSequnce: 2, align: "right", row:1 }, - { id: "inflAssctBfrWqltTp", title: "T-P\n(mg/L)", upName: "upChangeRe3", upSequnce: 3, align: "right", row:1 }, - { id: "efflWqltBod", title: "BOD\n(mg/L)", upName: "upChangeRe4", upSequnce: 1, align: "right", row:1 }, - { id: "efflWqltToc", title: "TOC\n(COD)\n(mg/L)", upName: "upChangeRe4", upSequnce: 2, align: "right", row:1 }, - { id: "efflWqltSs", title: "SS\n(mg/L)", upName: "upChangeRe4", upSequnce: 3, align: "right", row:1 }, - { id: "efflWqltTn", title: "T-N\n(mg/L)", upName: "upChangeRe4", upSequnce: 2, align: "right", row:1 }, - { id: "efflWqltTp", title: "T-P\n(mg/L)", upName: "upChangeRe4", upSequnce: 3, align: "right", row:1 }, + { id: "fctCpc", title: "시설용량(m³/L)", align: "right", row:0, rowSpan:2, widthPercent:8 }, + { id: "A", title: "유입", colSpan: 5, row: 0, widthPercent:25 }, + { id: "B", title: "방류", colSpan: 5, row: 0, widthPercent:25 }, + { id: "inflAssctBfrWqltBod", title: "BOD\n(mg/L)", upName: "upChangeRe3", upSequnce: 1, align: "right", row:1, widthPercent:5 }, + { id: "inflAssctBfrWqltToc", title: "TOC\n(COD)\n(mg/L)", upName: "upChangeRe3", upSequnce: 2, align: "right", row:1, widthPercent:5 }, + { id: "inflAssctBfrWqltSs", title: "SS\n(mg/L)", upName: "upChangeRe3", upSequnce: 3, align: "right", row:1, widthPercent:5 }, + { id: "inflAssctBfrWqltTn", title: "T-N\n(mg/L)", upName: "upChangeRe3", upSequnce: 2, align: "right", row:1, widthPercent:5 }, + { id: "inflAssctBfrWqltTp", title: "T-P\n(mg/L)", upName: "upChangeRe3", upSequnce: 3, align: "right", row:1, widthPercent:5 }, + { id: "efflWqltBod", title: "BOD\n(mg/L)", upName: "upChangeRe4", upSequnce: 1, align: "right", row:1, widthPercent:5 }, + { id: "efflWqltToc", title: "TOC\n(COD)\n(mg/L)", upName: "upChangeRe4", upSequnce: 2, align: "right", row:1, widthPercent:5 }, + { id: "efflWqltSs", title: "SS\n(mg/L)", upName: "upChangeRe4", upSequnce: 3, align: "right", row:1, widthPercent:5 }, + { id: "efflWqltTn", title: "T-N\n(mg/L)", upName: "upChangeRe4", upSequnce: 2, align: "right", row:1, widthPercent:5 }, + { id: "efflWqltTp", title: "T-P\n(mg/L)", upName: "upChangeRe4", upSequnce: 3, align: "right", row:1, widthPercent:5 }, ]; // 시설수질리스트 헤더(환경청별) const upHeadList3: TableUpperProps[] = [ - { id: "C", title: "유역", colSpan: 3, row: 0 }, - { id: "rvbsn", title: "권역", row:1 }, - { id: "lgbsn", title: "단위유역", row:1 }, - { id: "mdmbsn", title: "중권역", row:1 }, - { id: "rgnNm", title: "환경청", row:0, rowSpan:2 }, - { id: "D", title: "행정명", colSpan: 2, row: 0 }, - { id: "sidoNm", title: "시도", upName: "upChangeRe2", row:1 }, - { id: "sggNm", title: "시군구", upName: "upChangeRe2", row:1 }, - { id: "bscFctNm", title: "시설명", row:0, rowSpan:2 }, + { id: "C", title: "유역", colSpan: 3, row: 0, widthPercent: 15 }, + { id: "rvbsn", title: "권역", row:1, widthPercent: 5 }, + { id: "lgbsn", title: "단위유역", row:1, widthPercent: 5 }, + { id: "mdmbsn", title: "중권역", row:1, widthPercent: 5 }, + { id: "rgnNm", title: "환경청", row:0, rowSpan:2, widthPercent: 7 }, + { id: "D", title: "행정명", colSpan: 2, row: 0, widthPercent: 10 }, + { id: "sidoNm", title: "시도", upName: "upChangeRe2", row:1, widthPercent: 5 }, + { id: "sggNm", title: "시군구", upName: "upChangeRe2", row:1, widthPercent: 5 }, + { id: "bscFctNm", title: "시설명", row:0, rowSpan:2, widthPercent: 8 }, { id: "addr", title: "주소", row:0, rowSpan:2 }, - { id: "fctCpc", title: "시설용량(m³/L)", align: "right", row:0, rowSpan:2 }, - { id: "A", title: "유입", colSpan: 5, row: 0 }, - { id: "B", title: "방류", colSpan: 5, row: 0 }, - { id: "inflAssctBfrWqltBod", title: "BOD\n(mg/L)", upName: "upChangeRe3", upSequnce: 1, align: "right", row:1 }, - { id: "inflAssctBfrWqltToc", title: "TOC\n(COD)\n(mg/L)", upName: "upChangeRe3", upSequnce: 2, align: "right", row:1 }, - { id: "inflAssctBfrWqltSs", title: "SS\n(mg/L)", upName: "upChangeRe3", upSequnce: 3, align: "right", row:1 }, - { id: "inflAssctBfrWqltTn", title: "T-N\n(mg/L)", upName: "upChangeRe3", upSequnce: 2, align: "right", row:1 }, - { id: "inflAssctBfrWqltTp", title: "T-P\n(mg/L)", upName: "upChangeRe3", upSequnce: 3, align: "right", row:1 }, - { id: "efflWqltBod", title: "BOD\n(mg/L)", upName: "upChangeRe4", upSequnce: 1, align: "right", row:1 }, - { id: "efflWqltToc", title: "TOC\n(COD)\n(mg/L)", upName: "upChangeRe4", upSequnce: 2, align: "right", row:1 }, - { id: "efflWqltSs", title: "SS\n(mg/L)", upName: "upChangeRe4", upSequnce: 3, align: "right", row:1 }, - { id: "efflWqltTn", title: "T-N\n(mg/L)", upName: "upChangeRe4", upSequnce: 2, align: "right", row:1 }, - { id: "efflWqltTp", title: "T-P\n(mg/L)", upName: "upChangeRe4", upSequnce: 3, align: "right", row:1 }, + { id: "fctCpc", title: "시설용량(m³/L)", align: "right", row:0, rowSpan:2, widthPercent: 5 }, + { id: "A", title: "유입", colSpan: 5, row: 0, widthPercent: 20 }, + { id: "B", title: "방류", colSpan: 5, row: 0, widthPercent: 20 }, + { id: "inflAssctBfrWqltBod", title: "BOD\n(mg/L)", upName: "upChangeRe3", upSequnce: 1, align: "right", row:1, widthPercent: 4 }, + { id: "inflAssctBfrWqltToc", title: "TOC\n(COD)\n(mg/L)", upName: "upChangeRe3", upSequnce: 2, align: "right", row:1, widthPercent: 4 }, + { id: "inflAssctBfrWqltSs", title: "SS\n(mg/L)", upName: "upChangeRe3", upSequnce: 3, align: "right", row:1, widthPercent: 4 }, + { id: "inflAssctBfrWqltTn", title: "T-N\n(mg/L)", upName: "upChangeRe3", upSequnce: 2, align: "right", row:1, widthPercent: 4 }, + { id: "inflAssctBfrWqltTp", title: "T-P\n(mg/L)", upName: "upChangeRe3", upSequnce: 3, align: "right", row:1, widthPercent: 4 }, + { id: "efflWqltBod", title: "BOD\n(mg/L)", upName: "upChangeRe4", upSequnce: 1, align: "right", row:1, widthPercent: 4 }, + { id: "efflWqltToc", title: "TOC\n(COD)\n(mg/L)", upName: "upChangeRe4", upSequnce: 2, align: "right", row:1, widthPercent: 4 }, + { id: "efflWqltSs", title: "SS\n(mg/L)", upName: "upChangeRe4", upSequnce: 3, align: "right", row:1, widthPercent: 4 }, + { id: "efflWqltTn", title: "T-N\n(mg/L)", upName: "upChangeRe4", upSequnce: 2, align: "right", row:1, widthPercent: 4 }, + { id: "efflWqltTp", title: "T-P\n(mg/L)", upName: "upChangeRe4", upSequnce: 3, align: "right", row:1, widthPercent: 4 }, ]; /** diff --git a/apps/fo/app/store/flowRate/index.tsx b/apps/fo/app/store/flowRate/index.tsx index c61eb2d76..ab9100d09 100644 --- a/apps/fo/app/store/flowRate/index.tsx +++ b/apps/fo/app/store/flowRate/index.tsx @@ -95,53 +95,53 @@ export type FlowRateModalProps = { */ // 리스트 (행정별) const upHeadList1:TableUpperProps[] = [ - { id: "A", title: "행정명", row: 0 ,colSpan: 2 }, - { id: "sido", title: "시도", upName:"upChangeRe", row:1 }, - { id: "gugun", title: "시군구", upName:"upChangeRe", row:1 }, - { id: "bscFctNm", title: "시설명", row: 0, rowSpan: 2}, - { id: "daddr", title: "주소", row: 0, rowSpan: 2}, - { id: "fctCpc", title: "시설용량\n(m³/일)", align:"right", row: 0, rowSpan: 2}, - { id: "totInflAmnt", title: "총 유입량\n(m³/일)", align:"right", row: 0, rowSpan: 2}, - { id: "inflAmnt", title: "하수유입량\n(m³/일)", align:"right", row: 0, rowSpan: 2}, - { id: "sumFlow", title: '연계처리량\n(m³/일)', align:"right", row: 0, rowSpan: 2}, - { id: "returnAmnt", title: '총인 반류수량\n(m³/일)', align:"right", row: 0, rowSpan: 2}, - { id: "efflAmnt", title: '방류량\n(m³/일)', align:"right", row: 0, rowSpan: 2} + { id: "A", title: "행정명", row: 0, colSpan: 2, widthPercent: 16 }, + { id: "sido", title: "시도", upName:"upChangeRe", row:1, widthPercent: 8 }, + { id: "gugun", title: "시군구", upName:"upChangeRe", row:1, widthPercent: 8 }, + { id: "bscFctNm", title: "시설명", row: 0, rowSpan: 2, widthPercent: 10}, + { id: "daddr", title: "주소", row: 0, rowSpan: 2 }, + { id: "fctCpc", title: "시설용량\n(m³/일)", align:"right", row: 0, rowSpan: 2, widthPercent: 7 }, + { id: "totInflAmnt", title: "총 유입량\n(m³/일)", align:"right", row: 0, rowSpan: 2, widthPercent: 7 }, + { id: "inflAmnt", title: "하수유입량\n(m³/일)", align:"right", row: 0, rowSpan: 2, widthPercent: 7 }, + { id: "sumFlow", title: '연계처리량\n(m³/일)', align:"right", row: 0, rowSpan: 2, widthPercent: 7 }, + { id: "returnAmnt", title: '총인 반류수량\n(m³/일)', align:"right", row: 0, rowSpan: 2, widthPercent: 7 }, + { id: "efflAmnt", title: '방류량\n(m³/일)', align:"right", row: 0, rowSpan: 2, widthPercent: 7 } ]; // 리스트 (권역별) const upHeadList2:TableUpperProps[] = [ - { id: "A", title: "유역", row: 0, colSpan: 3}, - { id: "rvbsn", title: "권역", upName:"upChangeRe", row:1 }, - { id: "lgbsn", title: "단위유역", upName:"upChangeRe", row:1 }, - { id: "mdmbsn", title: "중권역", upName:"upChangeRe", row:1 }, - { id: "bscFctNm", title: "시설명", row: 0, rowSpan: 2}, - { id: "daddr", title: "주소", row: 0, rowSpan: 2}, - { id: "fctCpc", title: "시설용량\n(m³/일)", align:"right", row: 0, rowSpan: 2}, - { id: "totInflAmnt", title: "총 유입량\n(m³/일)", align:"right", row: 0, rowSpan: 2}, - { id: "inflAmnt", title: "하수유입량\n(m³/일)", align:"right", row: 0, rowSpan: 2}, - { id: "sumFlow", title: '연계처리량\n(m³/일)', align:"right", row: 0, rowSpan: 2}, - { id: "returnAmnt", title: '총인 반류수량\n(m³/일)', align:"right", row: 0, rowSpan: 2}, - { id: "efflAmnt", title: '방류량\n(m³/일)', align:"right", row: 0, rowSpan: 2} + { id: "A", title: "유역", row: 0, colSpan: 3, widthPercent: 24 }, + { id: "rvbsn", title: "권역", upName:"upChangeRe", row:1, widthPercent: 8 }, + { id: "lgbsn", title: "단위유역", upName:"upChangeRe", row:1, widthPercent: 8 }, + { id: "mdmbsn", title: "중권역", upName:"upChangeRe", row:1, widthPercent: 8 }, + { id: "bscFctNm", title: "시설명", row: 0, rowSpan: 2, widthPercent: 10 }, + { id: "daddr", title: "주소", row: 0, rowSpan: 2 }, + { id: "fctCpc", title: "시설용량\n(m³/일)", align:"right", row: 0, rowSpan: 2, widthPercent: 10 }, + { id: "totInflAmnt", title: "총 유입량\n(m³/일)", align:"right", row: 0, rowSpan: 2, widthPercent: 7 }, + { id: "inflAmnt", title: "하수유입량\n(m³/일)", align:"right", row: 0, rowSpan: 2, widthPercent: 7 }, + { id: "sumFlow", title: '연계처리량\n(m³/일)', align:"right", row: 0, rowSpan: 2, widthPercent: 7 }, + { id: "returnAmnt", title: '총인 반류수량\n(m³/일)', align:"right", row: 0, rowSpan: 2, widthPercent: 7 }, + { id: "efflAmnt", title: '방류량\n(m³/일)', align:"right", row: 0, rowSpan: 2, widthPercent: 7 } ]; // 리스트 (환경청별별) const upHeadList3:TableUpperProps[] = [ - { id: "A", title: "유역", row: 0, colSpan: 3 }, - { id: "rvbsn", title: "권역", upName:"upChangeRe1", row:1 }, - { id: "lgbsn", title: "단위유역", upName:"upChangeRe1", row:1 }, - { id: "mdmbsn", title: "중권역", upName:"upChangeRe1", row:1 }, - { id: "rgnNm", title: "환경청", row:0, rowSpan:2 }, - { id: "B", title: "행정명", row: 0 ,colSpan: 2 }, - { id: "sido", title: "시도", upName:"upChangeRe2", row:1 }, - { id: "gugun", title: "시군구", upName:"upChangeRe2", row:1 }, - { id: "bscFctNm", title: "시설명", row: 0, rowSpan: 2 }, + { id: "A", title: "유역", row: 0, colSpan: 3, widthPercent: 15 }, + { id: "rvbsn", title: "권역", upName:"upChangeRe1", row:1, widthPercent: 5 }, + { id: "lgbsn", title: "단위유역", upName:"upChangeRe1", row:1, widthPercent: 5 }, + { id: "mdmbsn", title: "중권역", upName:"upChangeRe1", row:1, widthPercent: 5 }, + { id: "rgnNm", title: "환경청", row:0, rowSpan:2, widthPercent: 7 }, + { id: "B", title: "행정명", row: 0 ,colSpan: 2, widthPercent: 10 }, + { id: "sido", title: "시도", upName:"upChangeRe2", row:1, widthPercent: 5 }, + { id: "gugun", title: "시군구", upName:"upChangeRe2", row:1, widthPercent: 5 }, + { id: "bscFctNm", title: "시설명", row: 0, rowSpan: 2, widthPercent: 7 }, { id: "daddr", title: "주소", row: 0, rowSpan: 2 }, - { id: "fctCpc", title: "시설용량\n(m³/일)", align:"right", row: 0, rowSpan: 2 }, - { id: "totInflAmnt", title: "총 유입량\n(m³/일)", align:"right", row: 0, rowSpan: 2 }, - { id: "inflAmnt", title: "하수유입량\n(m³/일)", align:"right", row: 0, rowSpan: 2 }, - { id: "sumFlow", title: '연계처리량\n(m³/일)', align:"right", row: 0, rowSpan: 2 }, - { id: "returnAmnt", title: '총인 반류수량\n(m³/일)', align:"right", row: 0, rowSpan: 2 }, - { id: "efflAmnt", title: '방류량\n(m³/일)', align:"right", row: 0, rowSpan: 2 } + { id: "fctCpc", title: "시설용량\n(m³/일)", align:"right", row: 0, rowSpan: 2, widthPercent: 7 }, + { id: "totInflAmnt", title: "총 유입량\n(m³/일)", align:"right", row: 0, rowSpan: 2, widthPercent: 7 }, + { id: "inflAmnt", title: "하수유입량\n(m³/일)", align:"right", row: 0, rowSpan: 2, widthPercent: 7 }, + { id: "sumFlow", title: '연계처리량\n(m³/일)', align:"right", row: 0, rowSpan: 2, widthPercent: 7 }, + { id: "returnAmnt", title: '총인 반류수량\n(m³/일)', align:"right", row: 0, rowSpan: 2, widthPercent: 7 }, + { id: "efflAmnt", title: '방류량\n(m³/일)', align:"right", row: 0, rowSpan: 2, widthPercent: 7 } ]; const flowRateList:flowRateListProps[] = [ @@ -158,6 +158,7 @@ const upHeadListFlowRateModal:TableUpperProps[] = [ { id: "sumFlow", title: "연계처리량(m³/일)", align:"right"}, { id: "returnAmnt", title: "총인 반류수량(m³/일)", align:"right"}, { id: "efflAmnt", title: "방류량(m³/일)", align:"right"}, + { id: "noProcessInflAmnt", title: "미처리하수량(m³/일)", align:"right"}, { id: "infoRnDay", title: "강우량(mm/일)", align:"right"} ] @@ -171,6 +172,7 @@ const fetchFlowRateList = async (pageNo: number, pageSize: number, searchYear: s try { const tailStr = partCd ? '/'+ partCd + '/' + nameCd + '/' + fcltCpct + '/' + operationValue + (fcltyNm && fcltyNm !== '' ? '/' + fcltyNm : '') : ''; const url = '/fclt/flow/' + pageNo + '/' + pageSize + '/' + searchYear + tailStr; + console.log(url); const res = await getFetch('fo', url); return { data: res.data, count: res.count } } catch (error) { diff --git a/apps/fo/app/store/planSewage/index.tsx b/apps/fo/app/store/planSewage/index.tsx index 21a711e8b..80a4d66e7 100644 --- a/apps/fo/app/store/planSewage/index.tsx +++ b/apps/fo/app/store/planSewage/index.tsx @@ -47,44 +47,44 @@ const LabelArray:string[] = ['구분', '시도', '시군구','용량별', '시 // 리스트 헤더 const upHeadList1:TableUpperProps[] = [ { id: "A", title: "행정구역", upSequnce:1, row:0, colSpan:2 }, - { id: "sido", title: "시도", upName:"upChangeRe", upSequnce:1, row:1 }, - { id: "gugun", title: "시군구", upName:"upChangeRe",upSequnce:2, row:1 }, - { id: "bscFctNm", title: "시설명", row:0, rowSpan:2 }, + { id: "sido", title: "시도", upName:"upChangeRe", upSequnce:1, row:1, widthPercent: 10 }, + { id: "gugun", title: "시군구", upName:"upChangeRe",upSequnce:2, row:1, widthPercent: 10 }, + { id: "bscFctNm", title: "시설명", row:0, rowSpan:2, widthPercent: 10 }, { id: "daddr", title: "주소", row:0, rowSpan:2 }, - { id: "fctCpc", title: "시설용량(m³/일)", row:0, rowSpan:2, align:'right' }, - { id: "spareCapacity", title: "여유용량(m³/일)", row:0, rowSpan:2, align:'right' }, - { id: "variableLoadPercent", title: "변동부하율(%)", row:0, rowSpan:2, align:'right' }, - { id: "classifiedSewerPercent", title: "분류식화율(%)", row:0, rowSpan:2, align:'right' }, + { id: "fctCpc", title: "시설용량(m³/일)", row:0, rowSpan:2, align:'right', widthPercent: 8 }, + { id: "spareCapacity", title: "여유용량(m³/일)", row:0, rowSpan:2, align:'right', widthPercent: 8 }, + { id: "variableLoadPercent", title: "변동부하율(%)", row:0, rowSpan:2, align:'right', widthPercent: 8 }, + { id: "classifiedSewerPercent", title: "분류식화율(%)", row:0, rowSpan:2, align:'right', widthPercent: 8 }, ]; const upHeadList2:TableUpperProps[] = [ { id: "A", title: "유역", upName:"upChangeRe", upSequnce:1, row:0, colSpan:3 }, - { id: "rvbsn", title: "권역", upName:"upChangeRe", upSequnce:1, row:1}, - { id: "lgbsn", title: "단위유역", upName:"upChangeRe", upSequnce:2, row:1}, - { id: "mdmbsn", title: "중권역", upName:"upChangeRe", upSequnce:3, row:1}, - { id: "bscFctNm", title: "시설명", row:0, rowSpan:2 }, + { id: "rvbsn", title: "권역", upName:"upChangeRe", upSequnce:1, row:1, widthPercent: 8 }, + { id: "lgbsn", title: "단위유역", upName:"upChangeRe", upSequnce:2, row:1, widthPercent: 8}, + { id: "mdmbsn", title: "중권역", upName:"upChangeRe", upSequnce:3, row:1, widthPercent: 8}, + { id: "bscFctNm", title: "시설명", row:0, rowSpan:2, widthPercent: 10 }, { id: "daddr", title: "주소", row:0, rowSpan:2 }, - { id: "fctCpc", title: "시설용량(m³/일)", row:0, rowSpan:2, align:'right' }, - { id: "spareCapacity", title: "여유용량(m³/일)", row:0, rowSpan:2, align:'right' }, - { id: "variableLoadPercent", title: "변동부하율(%)", row:0, rowSpan:2, align:'right' }, - { id: "classifiedSewerPercent", title: "분류식화율(%)", row:0, rowSpan:2, align:'right' }, + { id: "fctCpc", title: "시설용량(m³/일)", row:0, rowSpan:2, align:'right', widthPercent: 8 }, + { id: "spareCapacity", title: "여유용량(m³/일)", row:0, rowSpan:2, align:'right', widthPercent: 8 }, + { id: "variableLoadPercent", title: "변동부하율(%)", row:0, rowSpan:2, align:'right', widthPercent: 8 }, + { id: "classifiedSewerPercent", title: "분류식화율(%)", row:0, rowSpan:2, align:'right', widthPercent: 8 }, ]; const upHeadList3:TableUpperProps[] = [ { id: "A", title: "유역", upName:"upChangeRe", upSequnce:1, row:0, colSpan:3 }, - { id: "rvbsn", title: "권역", upName:"upChangeRe1", upSequnce:1, row:1}, - { id: "lgbsn", title: "단위유역", upName:"upChangeRe1", upSequnce:2, row:1}, - { id: "mdmbsn", title: "중권역", upName:"upChangeRe1", upSequnce:3, row:1}, - { id: "rgnNm", title: "환경청", row:0, rowSpan:2 }, + { id: "rvbsn", title: "권역", upName:"upChangeRe1", upSequnce:1, row:1, widthPercent: 5 }, + { id: "lgbsn", title: "단위유역", upName:"upChangeRe1", upSequnce:2, row:1, widthPercent: 5 }, + { id: "mdmbsn", title: "중권역", upName:"upChangeRe1", upSequnce:3, row:1, widthPercent: 5}, + { id: "rgnNm", title: "환경청", row:0, rowSpan:2, widthPercent: 8 }, { id: "B", title: "행정구역", upName:"upChangeRe", upSequnce:1, row:0, colSpan:2 }, - { id: "sido", title: "시도", upName:"upChangeRe2", upSequnce:1, row:1 }, - { id: "gugun", title: "시군구", upName:"upChangeRe2",upSequnce:2, row:1 }, - { id: "bscFctNm", title: "시설명", row:0, rowSpan:2 }, + { id: "sido", title: "시도", upName:"upChangeRe2", upSequnce:1, row:1, widthPercent: 5 }, + { id: "gugun", title: "시군구", upName:"upChangeRe2",upSequnce:2, row:1, widthPercent: 5 }, + { id: "bscFctNm", title: "시설명", row:0, rowSpan:2, widthPercent: 10 }, { id: "daddr", title: "주소", row:0, rowSpan:2 }, - { id: "fctCpc", title: "시설용량(m³/일)", row:0, rowSpan:2, align:'right' }, - { id: "spareCapacity", title: "여유용량(m³/일)", row:0, rowSpan:2, align:'right' }, - { id: "variableLoadPercent", title: "변동부하율(%)", row:0, rowSpan:2, align:'right' }, - { id: "classifiedSewerPercent", title: "분류식화율(%)", row:0, rowSpan:2, align:'right' }, + { id: "fctCpc", title: "시설용량(m³/일)", row:0, rowSpan:2, align:'right', widthPercent: 8 }, + { id: "spareCapacity", title: "여유용량(m³/일)", row:0, rowSpan:2, align:'right', widthPercent: 8 }, + { id: "variableLoadPercent", title: "변동부하율(%)", row:0, rowSpan:2, align:'right', widthPercent: 8 }, + { id: "classifiedSewerPercent", title: "분류식화율(%)", row:0, rowSpan:2, align:'right', widthPercent: 8 }, ]; const planSewageList:PlanSewageProps[] = [ @@ -96,6 +96,7 @@ const planSewageList:PlanSewageProps[] = [ const fetchPlanSewageList = async (pageNo: number, pageSize: number, searchYear: string, partCd?: string, nameCd?: string, fcltCpct?: string, operationValue?: string, fcltyNm?: string) => { const tailStr = partCd ? '/'+ partCd + '/' + (nameCd || '0') + '/' + (fcltCpct || '0') + '/' + (operationValue || '0') +'/0'+ (fcltyNm && fcltyNm !== '' ? '/' + fcltyNm : '') : ''; const url = '/prcsFclt/info/plan/' + pageNo + '/' + pageSize + '/' + searchYear + tailStr; + console.log(url); const res = await getFetch('fo', url); return { data: res.data, count: res.count } } diff --git a/apps/fo/app/store/processArea/index.tsx b/apps/fo/app/store/processArea/index.tsx index ccad3436e..37b4d52f0 100644 --- a/apps/fo/app/store/processArea/index.tsx +++ b/apps/fo/app/store/processArea/index.tsx @@ -128,35 +128,35 @@ const ProcessFacilityLabelArray:string[] = ['구분', '시도', '시군구','용 // 리스트 헤더(행정별) const upHeadList1:TableUpperProps[] = [ - { id: "A", title: "행정구역", colSpan:2, rowSpan:2, row:0}, - { id: "sido", title: "시도", upName:"upChangeRe", row:2 }, - { id: "sigungo", title: "시군구", upName:"upChangeRe", row:2 }, - { id: "swtrmtFcltNm", title: "시설명", rowSpan:3, row:0}, - { id: "location", title: "주소", rowSpan:3, row:0, }, - { id: "fctCpc", title: "시설용량(m³/일)", align:"right", rowSpan:3, row:0}, - { id: "B", title: "시설계획", colSpan:19, row:0}, - { id: "C", title: "증설계획(m³/일)", colSpan:6, row:1}, - { id: "planSwageQntSumDt4", title: "기승인\n4단계", row:2, align:"right"}, - { id: "planSwageQntSum", title: "현재", row:2, align:"right"}, - { id: "planSwageQntSumDc1", title: "1단계", row:2, align:"right"}, - { id: "planSwageQntSumDc2", title: "2단계", row:2, align:"right"}, - { id: "planSwageQntSumDc3", title: "3단계", row:2, align:"right"}, - { id: "planSwageQntSumDc4", title: "4단계", row:2, align:"right"}, - { id: "D", title: "처리인구(인)", colSpan:6, row:1}, - { id: "swtrmtPpltnCntDt4", title: "기승인\n4단계", row:2, align:"right"}, - { id: "swtrmtPpltnCnt", title: "현재", row:2, align:"right"}, - { id: "swtrmtPpltnCntDc1", title: "1단계", row:2, align:"right"}, - { id: "swtrmtPpltnCntDc2", title: "2단계", row:2, align:"right"}, - { id: "swtrmtPpltnCntDc3", title: "3단계", row:2, align:"right"}, - { id: "swtrmtPpltnCntDc4", title: "4단계", row:2, align:"right"}, - { id: "E", title: "처리구역(km²)", colSpan:7, row:1}, - { id: "swtrmtZoneAreaDt4", title: "기승인\n4단계", row:2, align:"right"}, - { id: "swtrmtZoneArea", title: "현재", row:2, align:"right"}, - { id: "swtrmtZoneAreaDc1", title: "1단계", row:2, align:"right"}, - { id: "swtrmtZoneAreaDc2", title: "2단계", row:2, align:"right"}, - { id: "swtrmtZoneAreaDc3", title: "3단계", row:2, align:"right"}, - { id: "swtrmtZoneAreaDc4", title: "4단계", row:2, align:"right"}, - { id: "trtDstr", title: "처리구역", row:2} + { id: "A", title: "행정구역", colSpan:2, rowSpan:2, row:0 }, + { id: "sido", title: "시도", upName:"upChangeRe", row:2, widthPercent:4 }, + { id: "sigungo", title: "시군구", upName:"upChangeRe", row:2, widthPercent:4 }, + { id: "swtrmtFcltNm", title: "시설명", rowSpan:3, row:0, widthPercent: 8 }, + { id: "location", title: "주소", rowSpan:3, row:0 }, + { id: "fctCpc", title: "시설용량(m³/일)", align:"right", rowSpan:3, row:0, widthPercent: 5 }, + { id: "B", title: "시설계획", colSpan:19, row: 0 }, + { id: "C", title: "증설계획(m³/일)", colSpan:6, row: 1 }, + { id: "planSwageQntSumDt4", title: "기승인\n4단계", row:2, align:"right", widthPercent: 2.5 }, + { id: "planSwageQntSum", title: "현재", row:2, align:"right", widthPercent: 2.5 }, + { id: "planSwageQntSumDc1", title: "1단계", row:2, align:"right", widthPercent: 2.5 }, + { id: "planSwageQntSumDc2", title: "2단계", row:2, align:"right", widthPercent: 2.5 }, + { id: "planSwageQntSumDc3", title: "3단계", row:2, align:"right", widthPercent: 2.5 }, + { id: "planSwageQntSumDc4", title: "4단계", row:2, align:"right", widthPercent: 2.5 }, + { id: "D", title: "처리인구(인)", colSpan:6, row:1 }, + { id: "swtrmtPpltnCntDt4", title: "기승인\n4단계", row:2, align:"right", widthPercent: 2.5 }, + { id: "swtrmtPpltnCnt", title: "현재", row:2, align:"right", widthPercent: 2.5 }, + { id: "swtrmtPpltnCntDc1", title: "1단계", row:2, align:"right", widthPercent: 2.5 }, + { id: "swtrmtPpltnCntDc2", title: "2단계", row:2, align:"right", widthPercent: 2.5 }, + { id: "swtrmtPpltnCntDc3", title: "3단계", row:2, align:"right", widthPercent: 2.5 }, + { id: "swtrmtPpltnCntDc4", title: "4단계", row:2, align:"right", widthPercent: 2.5 }, + { id: "E", title: "처리구역(km²)", colSpan:7, row:1 }, + { id: "swtrmtZoneAreaDt4", title: "기승인\n4단계", row:2, align:"right", widthPercent: 2.5 }, + { id: "swtrmtZoneArea", title: "현재", row:2, align:"right", widthPercent: 2.5 }, + { id: "swtrmtZoneAreaDc1", title: "1단계", row:2, align:"right", widthPercent: 2.5 }, + { id: "swtrmtZoneAreaDc2", title: "2단계", row:2, align:"right", widthPercent: 2.5 }, + { id: "swtrmtZoneAreaDc3", title: "3단계", row:2, align:"right", widthPercent: 2.5 }, + { id: "swtrmtZoneAreaDc4", title: "4단계", row:2, align:"right", widthPercent: 2.5 }, + { id: "trtDstr", title: "처리구역", row:2 } ]; const processAreaList:ProcessAreaProps[] = [ diff --git a/apps/fo/app/store/processFacility/index.tsx b/apps/fo/app/store/processFacility/index.tsx index ecb668063..43e7eab53 100644 --- a/apps/fo/app/store/processFacility/index.tsx +++ b/apps/fo/app/store/processFacility/index.tsx @@ -162,52 +162,56 @@ const ProcessFacilityLabelArray:string[] = ['구분', '시도', '시군구','용 // 리스트 헤더 const upHeadList1:TableUpperProps[] = [ - { id: "sido", title: "시도", upName:"upChangeRe", upSequnce:1 }, - { id: "gugun", title: "시군구", upName:"upChangeRe",upSequnce:2 }, - { id: "bscFctNm", title: "시설명"}, - { id: "daddr", title: "주소"}, - { id: "fctCpc", title: "시설용량\n(m³/일)", align: 'right'}, - { id: "plInflWqltBod", title: "계획유입수질\n(mg/L)", align:"right"}, - { id: "dsInflWqltBod", title: "설계유입수질\n(mg/L)", align:"right"}, - { id: "trtFrfNm", title: '공법'}, - { id: "rnDt", title: '가동개시일'}, - { id: "cmplDt", title: '준공일' }, - { id: "trstOprEtpNm", title: '관리대행업자'} + { id: "A", title: "행정명", colSpan: 2, row: 0, widthPercent: 10 }, + { id: "sido", title: "시도", upName:"upChangeRe", row: 1, upSequnce:1, widthPercent: 5 }, + { id: "gugun", title: "시군구", upName:"upChangeRe", row: 1, upSequnce:2, widthPercent: 5 }, + { id: "bscFctNm", title: "시설명", row: 0, rowSpan: 2, widthPercent: 8 }, + { id: "daddr", title: "주소", row: 0, rowSpan: 2 }, + { id: "fctCpc", title: "시설용량\n(m³/일)", row: 0, align: 'right', rowSpan: 2, widthPercent: 5 }, + { id: "plInflWqltBod", title: "계획유입수질\n(mg/L)", row: 0, align:"right", rowSpan: 2, widthPercent: 5 }, + { id: "dsInflWqltBod", title: "설계유입수질\n(mg/L)", row: 0, align:"right", rowSpan: 2, widthPercent: 5 }, + { id: "trtFrfNm", title: '공법', row: 0, rowSpan: 2 }, + { id: "rnDt", title: '가동개시일', row: 0, rowSpan: 2, widthPercent: 5 }, + { id: "cmplDt", title: '준공일', row: 0, rowSpan: 2, widthPercent: 5 }, + { id: "trstOprEtpNm", title: '관리대행업자', row: 0, rowSpan: 2 , widthPercent: 14} ]; // 처리시설 리스트 (유역) const upHeadList2:TableUpperProps[] = [ - { id: "rvbsn", title: "권역", upName:"upChangeRe", upSequnce:1}, - { id: "lgbsn", title: "단위유역", upName:"upChangeRe", upSequnce:2}, - { id: "mdmbsn", title: "중권역", upName:"upChangeRe", upSequnce:3}, - { id: "bscFctNm", title: "시설명"}, - { id: "daddr", title: "주소"}, - { id: "fctCpc", title: "시설용량\n(m³/일)", align: 'right'}, - { id: "plInflWqltBod", title: "계획유입수질\n(mg/L)", align:'right'}, - { id: "dsInflWqltBod", title: "설계유입수질\n(mg/L)", align:'right'}, - { id: "trtFrfNm", title: '공법'}, - { id: "rnDt", title: '가동개시일'}, - { id: "cmplDt", title: '준공일' }, - { id: "trstOprEtpNm", title: '관리대행업자'} + { id: "A", title: "유역", colSpan: 3, row: 0, widthPercent: 15 }, + { id: "rvbsn", title: "권역", row: 1, widthPercent: 5 }, + { id: "lgbsn", title: "단위유역", row: 1, widthPercent: 5 }, + { id: "mdmbsn", title: "중권역", row: 1, widthPercent: 5 }, + { id: "bscFctNm", title: "시설명", rowSpan: 2,row: 0, widthPercent: 8 }, + { id: "daddr", title: "주소", rowSpan: 2,row: 0 }, + { id: "fctCpc", title: "시설용량\n(m³/일)", rowSpan: 2,row: 0, widthPercent: 5, align: 'right'}, + { id: "plInflWqltBod", title: "계획유입수질\n(mg/L)", rowSpan: 2,row: 0, widthPercent: 6, align:'right'}, + { id: "dsInflWqltBod", title: "설계유입수질\n(mg/L)", rowSpan: 2,row: 0, widthPercent: 6, align:'right'}, + { id: "trtFrfNm", title: '공법', rowSpan: 2,row: 0 }, + { id: "rnDt", title: '가동개시일', rowSpan: 2,row: 0, widthPercent: 5 }, + { id: "cmplDt", title: '준공일', rowSpan: 2,row: 0, widthPercent: 5 }, + { id: "trstOprEtpNm", title: '관리대행업자', rowSpan: 2,row: 0, widthPercent: 14 } ]; // 처리시설 리스트 (환경청청) const upHeadList3:TableUpperProps[] = [ - { id: "rvbsn", title: "권역", upName:"upChangeRe1", upSequnce:1}, - { id: "lgbsn", title: "단위유역", upName:"upChangeRe1", upSequnce:2}, - { id: "mdmbsn", title: "중권역", upName:"upChangeRe1", upSequnce:3}, - { id: "rgnNm", title: "환경청"}, - { id: "sido", title: "시도", upName:"upChangeRe2", upSequnce:1 }, - { id: "gugun", title: "시군구", upName:"upChangeRe2",upSequnce:2 }, - { id: "bscFctNm", title: "시설명"}, - { id: "daddr", title: "주소"}, - { id: "fctCpc", title: "시설용량\n(m³/일)", align: 'right'}, - { id: "plInflWqltBod", title: "계획유입수질\n(mg/L)", align:'right'}, - { id: "dsInflWqltBod", title: "설계유입수질\n(mg/L)", align:'right'}, - { id: "trtFrfNm", title: '공법'}, - { id: "rnDt", title: '가동개시일'}, - { id: "cmplDt", title: '준공일' }, - { id: "trstOprEtpNm", title: '관리대행업자'} + { id: "A", title: "유역", colSpan: 3, row: 0, widthPercent: 12 }, + { id: "rvbsn", title: "권역", row: 1, widthPercent: 4 }, + { id: "lgbsn", title: "단위유역", row: 1, widthPercent: 4}, + { id: "mdmbsn", title: "중권역", row: 1, widthPercent: 4 }, + { id: "rgnNm", title: "환경청", row: 0, rowSpan: 2, widthPercent: 6 }, + { id: "B", title: "행정명", colSpan: 2, row: 0, widthPercent: 8 }, + { id: "sido", title: "시도", row: 1, widthPercent: 4 }, + { id: "gugun", title: "시군구", row: 1, widthPercent: 4 }, + { id: "bscFctNm", title: "시설명", row: 0, rowSpan: 2, widthPercent: 8 }, + { id: "daddr", title: "주소", row: 0, rowSpan: 2 }, + { id: "fctCpc", title: "시설용량\n(m³/일)", row: 0, rowSpan: 2, align: 'right', widthPercent: 5 }, + { id: "plInflWqltBod", title: "계획유입수질\n(mg/L)", row: 0, rowSpan: 2, align:'right', widthPercent: 5 }, + { id: "dsInflWqltBod", title: "설계유입수질\n(mg/L)", row: 0, rowSpan: 2, align:'right', widthPercent: 5 }, + { id: "trtFrfNm", title: '공법', row: 0, rowSpan: 2 }, + { id: "rnDt", title: '가동개시일', row: 0, rowSpan: 2, widthPercent: 5 }, + { id: "cmplDt", title: '준공일', row: 0, rowSpan: 2, widthPercent: 5 }, + { id: "trstOprEtpNm", title: '관리대행업자', row: 0, rowSpan: 2, widthPercent: 14 } ]; const processFacilityList:facilityListProps[] = [ diff --git a/apps/fo/app/store/rdi/index.tsx b/apps/fo/app/store/rdi/index.tsx index 4b344df12..c22859043 100644 --- a/apps/fo/app/store/rdi/index.tsx +++ b/apps/fo/app/store/rdi/index.tsx @@ -101,65 +101,65 @@ export interface ExcelType { // 리스트 헤더 const upHeadList1:TableUpperProps[] = [ { id: "A", title: "행정구역", row:0, colSpan:2 }, - { id: "sido", title: "시도", upName:"upChangeRe", upSequnce:1, row:1 }, - { id: "sigungo", title: "시군구", upName:"upChangeRe",upSequnce:2, row:1 }, - { id: "bscFctNm", title: "시설명", row:0, rowSpan:2 }, + { id: "sido", title: "시도", row:1, widthPercent: 6 }, + { id: "sigungo", title: "시군구", row:1, widthPercent: 6 }, + { id: "bscFctNm", title: "시설명", row:0, rowSpan:2, widthPercent: 7 }, { id: "daddr", title: "주소", row:0, rowSpan:2 }, - { id: "fctCpc", title: "시설용량\n(m³/일)", align:"right", row:0, rowSpan:2 }, - { id: "chungchunFlow", title: "청천시 유입하수량\n(m³/일)", align:"right", row:0, rowSpan:2 }, + { id: "fctCpc", title: "시설용량\n(m³/일)", align:"right", row:0, rowSpan:2, widthPercent: 7 }, + { id: "chungchunFlow", title: "청천시 유입하수량\n(m³/일)", align:"right", row:0, rowSpan:2, widthPercent: 7 }, { id: "B", title: "하절기 운영현황(6~8월)", row:0, colSpan:2 }, - { id: "summerMinBodValue", title: "3mm 이상 강우일 중 최저 유입BOD\n(mg/L)", align:"right", row:1 }, - { id: "inflAmnt", title: "하절기최저유입BOD유입유량\n(m³/일)", row:1, align:"right" }, + { id: "summerMinBodValue", title: "3mm 이상 강우일 중\n최저 유입BOD\n(mg/L)", align:"right", row:1, widthPercent: 7 }, + { id: "inflAmnt", title: "하절기최저유입\nBOD유입유량\n(m³/일)", row:1, align:"right", widthPercent: 7 }, { id: "C", title: "동절기 운영현황(1~2월)", row:0 }, - { id: "winterAvgBodLowRainfall", title: "청천시 유입BOD\n(mg/L)", row:1, align:"right" }, - { id: "rdiiValue", title: "RDII추정", row:0, rowSpan:2, align:"right" }, - { id: "infoRnDay", title: "RDII추정시일강수량\n(mm)", row:0, rowSpan:2, align:"right" }, - { id: "rainCalInflAmnt", title: "강우시 총 추정유입량\n(m³/일)", row:0, rowSpan:2, align:"right" }, - { id: "properYn", title: "적정여부", row:0, rowSpan:2 }, + { id: "winterAvgBodLowRainfall", title: "청천시 유입BOD\n(mg/L)", row:1, align:"right", widthPercent: 8 }, + { id: "rdiiValue", title: "RDII추정", row:0, rowSpan:2, align:"right", widthPercent: 8 }, + { id: "infoRnDay", title: "RDII추정시\n일강수량\n(mm)", row:0, rowSpan:2, align:"right", widthPercent: 7 }, + { id: "rainCalInflAmnt", title: "강우시\n총 추정유입량\n(m³/일)", row:0, rowSpan:2, align:"right", widthPercent: 6 }, + { id: "properYn", title: "적정여부", row:0, rowSpan:2, widthPercent: 6 }, ]; const upHeadList2:TableUpperProps[] = [ { id: "A", title: "유역", row:0, colSpan:3 }, - { id: "rvbsn", title: "권역", upName:"upChangeRe", upSequnce:1, row:1 }, - { id: "lgbsn", title: "단위유역", upName:"upChangeRe", upSequnce:2, row:1 }, - { id: "mdmbsn", title: "중권역", upName:"upChangeRe", upSequnce:3, row:1 }, - { id: "bscFctNm", title: "시설명", row:0, rowSpan:2 }, + { id: "rvbsn", title: "권역", row:1, widthPercent: 5 }, + { id: "lgbsn", title: "단위유역", row:1, widthPercent: 5 }, + { id: "mdmbsn", title: "중권역", row:1, widthPercent: 5 }, + { id: "bscFctNm", title: "시설명", row:0, rowSpan:2, widthPercent: 7 }, { id: "daddr", title: "주소", row:0, rowSpan:2 }, - { id: "fctCpc", title: "시설용량(m³/일)", align:"right", row:0, rowSpan:2 }, - { id: "chungchunFlow", title: "청천시 유입하수량\n(m³/일)", align:"right", row:0, rowSpan:2 }, + { id: "fctCpc", title: "시설용량\n(m³/일)", align:"right", row:0, rowSpan:2, widthPercent: 7 }, + { id: "chungchunFlow", title: "청천시 유입하수량\n(m³/일)", align:"right", row:0, rowSpan:2, widthPercent: 7 }, { id: "B", title: "하절기 운영현황(6~8월)", row:0, colSpan:2 }, - { id: "summerMinBodValue", title: "3mm 이상 강우일 중 최저 유입BOD\n(mg/L)", align:"right", row:1 }, - { id: "inflAmnt", title: "하절기최저유입BOD유입유량", row:1, align:"right" }, + { id: "summerMinBodValue", title: "3mm 이상 강우일 중\n최저 유입BOD\n(mg/L)", align:"right", row:1, widthPercent: 7 }, + { id: "inflAmnt", title: "하절기최저유입\nBOD유입유량\n(m³/일)", row:1, align:"right", widthPercent: 7 }, { id: "D", title: "동절기 운영현황(1~2월)", row:0 }, - { id: "winterAvgBodLowRainfall", title: "동절기청천시유입BOD", row:1, align:"right" }, - { id: "rdiiValue", title: "RDII추정", row:0, rowSpan:2, align:"right" }, - { id: "infoRnDay", title: "RDII추정시일강수량", row:0, rowSpan:2, align:"right" }, - { id: "rainCalInflAmnt", title: "강우시 총 추정유입량\n(m³/일)", row:0, rowSpan:2, align:"right" }, - { id: "properYn", title: "적정여부", row:0, rowSpan:2 }, + { id: "winterAvgBodLowRainfall", title: "청천시 유입BOD\n(mg/L)", row:1, align:"right", widthPercent: 8 }, + { id: "rdiiValue", title: "RDII추정", row:0, rowSpan:2, align:"right", widthPercent: 7 }, + { id: "infoRnDay", title: "RDII추정시\n일강수량\n(mm)", row:0, rowSpan:2, align:"right", widthPercent: 7 }, + { id: "rainCalInflAmnt", title: "강우시\n총 추정유입량\n(m³/일)", row:0, rowSpan:2, align:"right", widthPercent: 6 }, + { id: "properYn", title: "적정여부", row:0, rowSpan:2, widthPercent: 6 }, ]; const upHeadList3:TableUpperProps[] = [ { id: "A", title: "유역", row:0, colSpan:3 }, - { id: "rvbsn", title: "권역", upName:"upChangeRe1", upSequnce:1, row:1 }, - { id: "lgbsn", title: "단위유역", upName:"upChangeRe1", upSequnce:2, row:1 }, - { id: "mdmbsn", title: "중권역", upName:"upChangeRe1", upSequnce:3, row:1 }, - { id: "rgnNm", title: "환경청", row:0, rowSpan:2 }, + { id: "rvbsn", title: "권역", row:1, widthPercent: 4 }, + { id: "lgbsn", title: "단위유역", row:1, widthPercent: 4 }, + { id: "mdmbsn", title: "중권역", row:1, widthPercent: 4 }, + { id: "rgnNm", title: "환경청", row:0, rowSpan:2, widthPercent: 6 }, { id: "B", title: "행정구역", row:0, colSpan:2 }, - { id: "sido", title: "시도", upName:"upChangeRe2", upSequnce:1, row:1 }, - { id: "sigungo", title: "시군구", upName:"upChangeRe2",upSequnce:2, row:1 }, - { id: "bscFctNm", title: "시설명", row:0, rowSpan:2 }, + { id: "sido", title: "시도", upName:"upChangeRe2", upSequnce:1, row:1, widthPercent: 4 }, + { id: "sigungo", title: "시군구", upName:"upChangeRe2",upSequnce:2, row:1, widthPercent: 4 }, + { id: "bscFctNm", title: "시설명", row:0, rowSpan:2, widthPercent: 6 }, { id: "daddr", title: "주소", row:0, rowSpan:2 }, - { id: "fctCpc", title: "시설용량(m³/일)", align:"right", row:0, rowSpan:2 }, - { id: "chungchunFlow", title: "청천시 유입하수량\n(m³/일)", align:"right", row:0, rowSpan:2 }, + { id: "fctCpc", title: "시설용량\n(m³/일)", align:"right", row:0, rowSpan:2, widthPercent: 5 }, + { id: "chungchunFlow", title: "청천시 유입하수량\n(m³/일)", align:"right", row:0, rowSpan:2, widthPercent: 6 }, { id: "C", title: "하절기 운영현황(6~8월)", row:0, colSpan:2 }, - { id: "summerMinBodValue", title: "3mm 이상 강우일 중 최저 유입BOD\n(mg/L)", align:"right", row:1 }, - { id: "inflAmnt", title: "하절기최저유입BOD유입유량", row:1, align:"right" }, + { id: "summerMinBodValue", title: "3mm 이상 강우일 중\n최저 유입BOD\n(mg/L)", align:"right", row:1, widthPercent: 6 }, + { id: "inflAmnt", title: "하절기최저유입\nBOD유입유량\n(m³/일)", row:1, align:"right", widthPercent: 6 }, { id: "D", title: "동절기 운영현황(1~2월)", row:0 }, - { id: "winterAvgBodLowRainfall", title: "동절기청천시유입BOD", row:1, align:"right" }, - { id: "rdiiValue", title: "RDII추정", row:0, rowSpan:2, align:"right" }, - { id: "infoRnDay", title: "RDII추정시일강수량", row:0, rowSpan:2, align:"right" }, - { id: "rainCalInflAmnt", title: "강우시 총 추정유입량\n(m³/일)", row:0, rowSpan:2, align:"right" }, - { id: "properYn", title: "적정여부", row:0, rowSpan:2 }, + { id: "winterAvgBodLowRainfall", title: "청천시 유입BOD\n(mg/L)", row:1, align:"right", widthPercent: 8 }, + { id: "rdiiValue", title: "RDII추정", row:0, rowSpan:2, align:"right", widthPercent: 6 }, + { id: "infoRnDay", title: "RDII추정시\n일강수량\n(mm)", row:0, rowSpan:2, align:"right", widthPercent: 6 }, + { id: "rainCalInflAmnt", title: "강우시\n총 추정유입량\n(m³/일)", row:0, rowSpan:2, align:"right", widthPercent: 6 }, + { id: "properYn", title: "적정여부", row:0, rowSpan:2, widthPercent: 6 }, ]; const rdiList:RdiProps[] = [ diff --git a/apps/fo/app/store/sewageOccur/index.tsx b/apps/fo/app/store/sewageOccur/index.tsx index efc51a5af..e9ae8985b 100644 --- a/apps/fo/app/store/sewageOccur/index.tsx +++ b/apps/fo/app/store/sewageOccur/index.tsx @@ -63,50 +63,50 @@ export interface ExcelType { // 리스트 헤더 const upHeadList1:TableUpperProps[] = [ { id: "A", title: "행정구역", row:0, colSpan:2 }, - { id: "sidoNm", title: "시도", upName:"upChangeRe", upSequnce:1, row:1 }, - { id: "sggNm", title: "시군구", upName:"upChangeRe",upSequnce:2, row:1 }, - { id: "bscFctNm", title: "시설명", row:0, rowSpan:2 }, + { id: "sidoNm", title: "시도", row:1, widthPercent: 8 }, + { id: "sggNm", title: "시군구", row:1, widthPercent: 8 }, + { id: "bscFctNm", title: "시설명", row:0, rowSpan:2, widthPercent: 8 }, { id: "daddr", title: "주소", row:0, rowSpan:2 }, - { id: "fctCpc", title: "시설용량(m³/일)", align:"right", row:0, rowSpan:2 }, - { id: "waterUsage", title: "물사용량(m³/일)", align:"right", row:0, rowSpan:2 }, - { id: "swageChangePercent", title: "오수전환율\n(%)", align:"right", row:0, rowSpan:2 }, - { id: "estimationSewage", title: "오수발생량 추정\n(m³/일)", align:"right", row:0, rowSpan:2 }, - { id: "sewageInputYear", title: "연간 하수유입량\n(m³/일)", align:"right", row:0, rowSpan:2 }, - { id: "sewageInputChungchun", title: "청천시 하수유입량\n(m³/일)", align:"right", row:0, rowSpan:2 }, + { id: "fctCpc", title: "시설용량(m³/일)", align:"right", row:0, rowSpan:2, widthPercent: 8 }, + { id: "waterUsage", title: "물사용량(m³/일)", align:"right", row:0, rowSpan:2, widthPercent: 8 }, + { id: "swageChangePercent", title: "오수전환율\n(%)", align:"right", row:0, rowSpan:2, widthPercent: 8 }, + { id: "estimationSewage", title: "오수발생량 추정\n(m³/일)", align:"right", row:0, rowSpan:2, widthPercent: 8 }, + { id: "sewageInputYear", title: "연간 하수유입량\n(m³/일)", align:"right", row:0, rowSpan:2, widthPercent: 8 }, + { id: "sewageInputChungchun", title: "청천시 하수유입량\n(m³/일)", align:"right", row:0, rowSpan:2, widthPercent: 8 }, ]; const upHeadList2:TableUpperProps[] = [ { id: "A", title: "유역", row:0, colSpan:3 }, - { id: "rvbsn", title: "권역", upName:"upChangeRe", upSequnce:1, row:1 }, - { id: "lgbsn", title: "단위유역", upName:"upChangeRe", upSequnce:2, row:1 }, - { id: "mdmbsn", title: "중권역", upName:"upChangeRe", upSequnce:3, row:1 }, - { id: "bscFctNm", title: "시설명", row:0, rowSpan:2 }, + { id: "rvbsn", title: "권역", row:1, widthPercent: 6 }, + { id: "lgbsn", title: "단위유역", row:1, widthPercent: 6 }, + { id: "mdmbsn", title: "중권역", row:1, widthPercent: 6 }, + { id: "bscFctNm", title: "시설명", row:0, rowSpan:2, widthPercent: 8 }, { id: "daddr", title: "주소", row:0, rowSpan:2 }, - { id: "fctCpc", title: "시설용량(m³/일)", align:"right", row:0, rowSpan:2 }, - { id: "waterUsage", title: "물사용량(m³/일)", align:"right", row:0, rowSpan:2 }, - { id: "swageChangePercent", title: "오수전환율", align:"right", row:0, rowSpan:2 }, - { id: "estimationSewage", title: "오수발생량 추정\n(m³/일)", align:"right", row:0, rowSpan:2 }, - { id: "sewageInputYear", title: "연간 하수유입량\n(m³/일)", align:"right", row:0, rowSpan:2 }, - { id: "sewageInputChungchun", title: "청천시 하수유입량\n(m³/일)", align:"right", row:0, rowSpan:2 }, + { id: "fctCpc", title: "시설용량(m³/일)", align:"right", row:0, rowSpan:2, widthPercent: 8 }, + { id: "waterUsage", title: "물사용량(m³/일)", align:"right", row:0, rowSpan:2, widthPercent: 8 }, + { id: "swageChangePercent", title: "오수전환율", align:"right", row:0, rowSpan:2, widthPercent: 8 }, + { id: "estimationSewage", title: "오수발생량 추정\n(m³/일)", align:"right", row:0, rowSpan:2, widthPercent: 8 }, + { id: "sewageInputYear", title: "연간 하수유입량\n(m³/일)", align:"right", row:0, rowSpan:2, widthPercent: 8 }, + { id: "sewageInputChungchun", title: "청천시 하수유입량\n(m³/일)", align:"right", row:0, rowSpan:2, widthPercent: 8 }, ]; const upHeadList3:TableUpperProps[] = [ { id: "A", title: "유역", row:0, colSpan:3 }, - { id: "rvbsn", title: "권역", upName:"upChangeRe1", upSequnce:1, row:1 }, - { id: "lgbsn", title: "단위유역", upName:"upChangeRe1", upSequnce:2, row:1 }, - { id: "mdmbsn", title: "중권역", upName:"upChangeRe1", upSequnce:3, row:1 }, - { id: "rgnNm", title: "환경청", row:0, rowSpan:2 }, + { id: "rvbsn", title: "권역", row:1, widthPercent: 5 }, + { id: "lgbsn", title: "단위유역", row:1, widthPercent: 5 }, + { id: "mdmbsn", title: "중권역", row:1, widthPercent: 5 }, + { id: "rgnNm", title: "환경청", row:0, rowSpan:2, widthPercent: 8 }, { id: "B", title: "행정구역", row:0, colSpan:2 }, - { id: "sidoNm", title: "시도", upName:"upChangeRe2", upSequnce:1, row:1 }, - { id: "sggNm", title: "시군구", upName:"upChangeRe2",upSequnce:2, row:1 }, - { id: "bscFctNm", title: "시설명", row:0, rowSpan:2 }, + { id: "sidoNm", title: "시도", row:1, widthPercent: 6 }, + { id: "sggNm", title: "시군구", row:1, widthPercent: 6 }, + { id: "bscFctNm", title: "시설명", row:0, rowSpan:2, widthPercent: 8 }, { id: "daddr", title: "주소", row:0, rowSpan:2 }, - { id: "fctCpc", title: "시설용량(m³/일)", align:"right", row:0, rowSpan:2 }, - { id: "waterUsage", title: "물사용량(m³/일)", align:"right", row:0, rowSpan:2 }, - { id: "swageChangePercent", title: "오수전환율", align:"right", row:0, rowSpan:2 }, - { id: "estimationSewage", title: "오수발생량 추정\n(m³/일)", align:"right", row:0, rowSpan:2 }, - { id: "sewageInputYear", title: "연간 하수유입량\n(m³/일)", align:"right", row:0, rowSpan:2 }, - { id: "sewageInputChungchun", title: "청천시 하수유입량\n(m³/일)", align:"right", row:0, rowSpan:2 }, + { id: "fctCpc", title: "시설용량(m³/일)", align:"right", row:0, rowSpan:2, widthPercent: 6 }, + { id: "waterUsage", title: "물사용량(m³/일)", align:"right", row:0, rowSpan:2, widthPercent: 6 }, + { id: "swageChangePercent", title: "오수전환율", align:"right", row:0, rowSpan:2, widthPercent: 6 }, + { id: "estimationSewage", title: "오수발생량 추정\n(m³/일)", align:"right", row:0, rowSpan:2, widthPercent: 6 }, + { id: "sewageInputYear", title: "연간 하수유입량\n(m³/일)", align:"right", row:0, rowSpan:2, widthPercent: 6 }, + { id: "sewageInputChungchun", title: "청천시 하수유입량\n(m³/일)", align:"right", row:0, rowSpan:2, widthPercent: 6 }, ]; const upHeadListSewageOccurDetail:TableUpperProps[] = [ diff --git a/apps/fo/app/store/underWaterInput/index.tsx b/apps/fo/app/store/underWaterInput/index.tsx index dc29412ad..f6b466492 100644 --- a/apps/fo/app/store/underWaterInput/index.tsx +++ b/apps/fo/app/store/underWaterInput/index.tsx @@ -35,53 +35,53 @@ const LabelArray:string[] = ['구분', '시도', '시군구','용량별', '시 // 리스트 헤더 const upHeadList1:TableUpperProps[] = [ { id: "A", title: "행정구역", row:0, colSpan:2 }, - { id: "sidoNm", title: "시도", upName:"upChangeRe", upSequnce:1, row:1 }, - { id: "sggNm", title: "시군구", upName:"upChangeRe",upSequnce:2, row:1 }, - { id: "bscFctNm", title: "시설명", row:0, rowSpan:2 }, + { id: "sidoNm", title: "시도", row:1, widthPercent: 8 }, + { id: "sggNm", title: "시군구", row:1, widthPercent: 8 }, + { id: "bscFctNm", title: "시설명", row:0, rowSpan:2, widthPercent: 8 }, { id: "daddr", title: "주소", row:0, rowSpan:2 }, - { id: "fctCpc", title: "시설용량(m³/일)", align:"right", row:0, rowSpan:2 }, - { id: "inflAmnt", title: "연평균유입하수량(m³/일)", align:"right", row:0, rowSpan:2 }, + { id: "fctCpc", title: "시설용량(m³/일)", align:"right", row:0, rowSpan:2, widthPercent: 8 }, + { id: "inflAmnt", title: "연평균유입하수량(m³/일)", align:"right", row:0, rowSpan:2, widthPercent: 10 }, { id: "C", title: "지하수 유입량 추정", align:"right", row:0, colSpan:3 }, - { id: "underWaterInputYear", title: "연간\n(m³/일)", align:"right", row:1 }, - { id: "underWaterInputSummer", title: "하절기\n(m³/일)", align:"right", row:1 }, - { id: "underWaterInputWinter", title: "동절기\n(m³/일)", align:"right", row:1 }, - { id: "properYn", title: "적정여부", row:0, rowSpan:2 }, + { id: "underWaterInputYear", title: "연간\n(m³/일)", align:"right", row:1, widthPercent: 8 }, + { id: "underWaterInputSummer", title: "하절기\n(m³/일)", align:"right", row:1, widthPercent: 8 }, + { id: "underWaterInputWinter", title: "동절기\n(m³/일)", align:"right", row:1, widthPercent: 8 }, + { id: "properYn", title: "적정여부", row:0, rowSpan:2, widthPercent: 8 }, ]; const upHeadList2:TableUpperProps[] = [ { id: "A", title: "유역", row:0, colSpan:3 }, - { id: "rvbsn", title: "권역", upName:"upChangeRe", upSequnce:1, row:1 }, - { id: "lgbsn", title: "단위유역", upName:"upChangeRe", upSequnce:2, row:1 }, - { id: "mdmbsn", title: "중권역", upName:"upChangeRe", upSequnce:3, row:1 }, - { id: "bscFctNm", title: "시설명", row:0, rowSpan:2 }, + { id: "rvbsn", title: "권역", row:1, widthPercent: 5 }, + { id: "lgbsn", title: "단위유역", row:1, widthPercent: 5 }, + { id: "mdmbsn", title: "중권역", row:1, widthPercent: 5 }, + { id: "bscFctNm", title: "시설명", row:0, rowSpan:2, widthPercent: 8 }, { id: "daddr", title: "주소", row:0, rowSpan:2 }, - { id: "fctCpc", title: "시설용량(m³/일)", align:"right", row:0, rowSpan:2 }, - { id: "inflAmnt", title: "연평균유입하수량(m³/일)", align:"right", row:0, rowSpan:2 }, + { id: "fctCpc", title: "시설용량(m³/일)", align:"right", row:0, rowSpan:2, widthPercent: 8 }, + { id: "inflAmnt", title: "연평균유입하수량(m³/일)", align:"right", row:0, rowSpan:2, widthPercent: 10 }, { id: "C", title: "지하수 유입량 추정", align:"right", row:0, colSpan:3 }, - { id: "underWaterInputYear", title: "연간\n(m³/일)", align:"right", row:1 }, - { id: "underWaterInputSummer", title: "하절기\n(m³/일)", align:"right", row:1 }, - { id: "underWaterInputWinter", title: "동절기\n(m³/일)", align:"right", row:1 }, - { id: "properYn", title: "적정여부", row:0, rowSpan:2 }, + { id: "underWaterInputYear", title: "연간\n(m³/일)", align:"right", row:1, widthPercent: 8 }, + { id: "underWaterInputSummer", title: "하절기\n(m³/일)", align:"right", row:1, widthPercent: 8 }, + { id: "underWaterInputWinter", title: "동절기\n(m³/일)", align:"right", row:1, widthPercent: 8 }, + { id: "properYn", title: "적정여부", row:0, rowSpan:2, widthPercent: 8 }, ]; const upHeadList3:TableUpperProps[] = [ { id: "A", title: "유역", row:0, colSpan:3 }, - { id: "rvbsn", title: "권역", upName:"upChangeRe1", upSequnce:1, row:1 }, - { id: "lgbsn", title: "단위유역", upName:"upChangeRe1", upSequnce:2, row:1 }, - { id: "mdmbsn", title: "중권역", upName:"upChangeRe1", upSequnce:3, row:1 }, - { id: "rgnNm", title: "환경청", row:0, rowSpan:2 }, + { id: "rvbsn", title: "권역", upName:"upChangeRe1", upSequnce:1, row:1, widthPercent: 5 }, + { id: "lgbsn", title: "단위유역", upName:"upChangeRe1", upSequnce:2, row:1, widthPercent: 5 }, + { id: "mdmbsn", title: "중권역", upName:"upChangeRe1", upSequnce:3, row:1, widthPercent: 5 }, + { id: "rgnNm", title: "환경청", row:0, rowSpan:2, widthPercent: 8 }, { id: "B", title: "행정구역", row:0, colSpan:2 }, - { id: "sidoNm", title: "시도", upName:"upChangeRe2", upSequnce:1, row:1 }, - { id: "sggNm", title: "시군구", upName:"upChangeRe2",upSequnce:2, row:1 }, - { id: "bscFctNm", title: "시설명", row:0, rowSpan:2 }, + { id: "sidoNm", title: "시도", row:1, widthPercent: 6 }, + { id: "sggNm", title: "시군구", row:1, widthPercent: 6 }, + { id: "bscFctNm", title: "시설명", row:0, rowSpan:2, widthPercent: 8 }, { id: "daddr", title: "주소", row:0, rowSpan:2 }, - { id: "fctCpc", title: "시설용량(m³/일)", align:"right", row:0, rowSpan:2 }, - { id: "inflAmnt", title: "연평균유입하수량(m³/일)", align:"right", row:0, rowSpan:2 }, + { id: "fctCpc", title: "시설용량(m³/일)", align:"right", row:0, rowSpan:2, widthPercent: 6 }, + { id: "inflAmnt", title: "연평균유입하수량(m³/일)", align:"right", row:0, rowSpan:2, widthPercent: 10 }, { id: "C", title: "지하수 유입량 추정", align:"right", row:0, colSpan:3 }, - { id: "underWaterInputYear", title: "연간\n(m³/일)", align:"right", row:1 }, - { id: "underWaterInputSummer", title: "하절기\n(m³/일)", align:"right", row:1 }, - { id: "underWaterInputWinter", title: "동절기\n(m³/일)", align:"right", row:1 }, - { id: "properYn", title: "적정여부", row:0, rowSpan:2 }, + { id: "underWaterInputYear", title: "연간\n(m³/일)", align:"right", row:1, widthPercent: 6}, + { id: "underWaterInputSummer", title: "하절기\n(m³/일)", align:"right", row:1, widthPercent: 6 }, + { id: "underWaterInputWinter", title: "동절기\n(m³/일)", align:"right", row:1, widthPercent: 6 }, + { id: "properYn", title: "적정여부", row:0, rowSpan:2, widthPercent: 6 }, ]; // 모달 From d92d4d394986f5215d901e5394dc7ae562a7aebb Mon Sep 17 00:00:00 2001 From: jsyang Date: Wed, 17 Sep 2025 16:15:11 +0900 Subject: [PATCH 09/10] =?UTF-8?q?-=20=ED=85=8C=EC=9D=B4=EB=B8=94=20?= =?UTF-8?q?=EB=B9=84=EC=9C=A8=20=EA=B3=A0=EC=A0=95=20=EB=B3=80=EC=88=98=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80(wideFixed)=20-=20store=20headerlist=20?= =?UTF-8?q?=EC=97=90=EC=84=9C=20=EB=B9=84=EC=9C=A8=20=EB=B3=80=EC=88=98=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80(widePercent)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/ui/table/HeadMakeColSpan.tsx | 5 +++-- .../src/ui/table/index.tsx | 22 ++++++++++++++++++- 2 files changed, 24 insertions(+), 3 deletions(-) diff --git a/packages/common/business_components/src/ui/table/HeadMakeColSpan.tsx b/packages/common/business_components/src/ui/table/HeadMakeColSpan.tsx index c0ec33233..b3d3fdc40 100644 --- a/packages/common/business_components/src/ui/table/HeadMakeColSpan.tsx +++ b/packages/common/business_components/src/ui/table/HeadMakeColSpan.tsx @@ -8,7 +8,8 @@ interface TableUpperProps { row? : number; rowSpan?: number; colSpan?: number; - visible?:boolean; + visible?:boolean; + widthPercent?: number; } const HeadMakeColSpan = ({ upHeadList }: { upHeadList: TableUpperProps[] }) => { @@ -52,7 +53,7 @@ const HeadMakeColSpan = ({ upHeadList }: { upHeadList: TableUpperProps[] }) => { colSpan={head.colSpan || 1} rowSpan={head.rowSpan || 1} style={{ whiteSpace: 'pre-line' }} - className="bg-gray-50" + className="bg-gray-50" > {head.title} diff --git a/packages/common/business_components/src/ui/table/index.tsx b/packages/common/business_components/src/ui/table/index.tsx index 6d5b24c70..dc763d00b 100644 --- a/packages/common/business_components/src/ui/table/index.tsx +++ b/packages/common/business_components/src/ui/table/index.tsx @@ -32,6 +32,7 @@ type UiTableProps = { index?: number; curPage?: number; headButton?: React.ReactNode | undefined; + widthFixed?: boolean; }; type UiHeadProps = { @@ -39,6 +40,9 @@ type UiHeadProps = { title: string; align?: string; visible?: boolean; + row?: number; + widthPercent?: number; + rowSpan?: number; }; export function UiTable({ @@ -57,6 +61,7 @@ export function UiTable({ index = -1, curPage = 1, headButton = undefined, + widthFixed = false }: UiTableProps) { const [cur, setCur] = useState(curPage); const [idx, setIdx] = useState(index); @@ -104,6 +109,15 @@ export function UiTable({ } }; + const getLeafCols = (list: UiHeadProps[]) => { + const maxRow = list?.reduce((max, head) => Math.max(max, head.row || 0), 0); + return list + .filter(h => h.visible !== false) + .filter(h => ((h.row ?? 0) + (h.rowSpan ?? 1) - 1) >= maxRow) + ; + }; + + const leafCols = getLeafCols(headlist); return ( <> @@ -122,7 +136,13 @@ export function UiTable({ <> )}
- +
+ {widthFixed? + + {leafCols.map(col => ( + + ))} + :""} {children ? children : } From adacc5fe330ab227ca16f2ee8ea1438282774505 Mon Sep 17 00:00:00 2001 From: jsyang Date: Wed, 17 Sep 2025 16:18:48 +0900 Subject: [PATCH 10/10] =?UTF-8?q?=EB=B9=8C=EB=93=9C=EC=97=90=EB=9F=AC=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/fo/app/pages/(with-layout)/processFacility/page.tsx | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/apps/fo/app/pages/(with-layout)/processFacility/page.tsx b/apps/fo/app/pages/(with-layout)/processFacility/page.tsx index 2537a4cbd..7ed2802a2 100644 --- a/apps/fo/app/pages/(with-layout)/processFacility/page.tsx +++ b/apps/fo/app/pages/(with-layout)/processFacility/page.tsx @@ -1,12 +1,11 @@ "use client" -import { HeadMakeColSpan } from "@/app/components/common/HeadMakeColSpan"; +import UnderComment from "@/app/components/common/UnderComment"; import { useFoStore } from "@/app/store"; import { ContentsDiv, downloadExcel, MainDiv, SearchBaseForm, SearchInput, SelectBox, Title, UiModal, UiTable, type ReturnType } from "@common/business_components"; import ListDiv from "@common/business_components/ui/list_div"; +import LoadingOverlay from "@common/business_components/ui/loadingBar"; import { useCallback, useEffect, useRef, useState } from "react"; import ProcessFacilityInfoModal from "./modal/page"; -import LoadingOverlay from "@common/business_components/ui/loadingBar"; -import UnderComment from "@/app/components/common/UnderComment"; export default function ProcessFacilitySearch() { const {Common