Merge commit 'da67f24491a553a1cf019caf9bd89280ce9ad533' into iipbs/wr/dev
iipbs_wr / build (push) Has been cancelled
iipbs_wr / build (push) Has been cancelled
This commit is contained in:
@@ -1,10 +0,0 @@
|
||||
export default function loading (){
|
||||
|
||||
return(
|
||||
<>
|
||||
<div>
|
||||
'test'
|
||||
</div>
|
||||
</>
|
||||
)
|
||||
}
|
||||
@@ -0,0 +1,4 @@
|
||||
export default function Loading() {
|
||||
return <div>페이지 불러오는 중입니다...</div>;
|
||||
}
|
||||
|
||||
@@ -59,12 +59,14 @@ export default function Home() {
|
||||
});
|
||||
const { rainRes } = rain;
|
||||
const [rainForm, setRainForm] = useState<customRainBdst>();
|
||||
const [issNewReg,setIsNewReg] = useState<boolean>( false);
|
||||
const [issNewReg, setIsNewReg] = useState<boolean>(false);
|
||||
|
||||
const [bdstTable, setbdstTable] = useState<customRainBdst[]>();
|
||||
const [searchTxt, setSearchTxt] = useState<string>();
|
||||
const [bdstChgProps, setBdstChgProps] = useState<{isOpen:boolean,chgBuilding:chgBuilding[]}>({isOpen:false,chgBuilding:[] });
|
||||
|
||||
const [bdstChgProps, setBdstChgProps] = useState<{
|
||||
isOpen: boolean;
|
||||
chgBuilding: chgBuilding[];
|
||||
}>({ isOpen: false, chgBuilding: [] });
|
||||
|
||||
const nodeList = headMakeColSpan(rain.upHeadList);
|
||||
useEffect(() => {
|
||||
@@ -82,32 +84,31 @@ export default function Home() {
|
||||
val,
|
||||
headId
|
||||
) => {
|
||||
if ( val !== undefined) {
|
||||
setRainForm(rainRes[val]);
|
||||
if (val !== undefined) {
|
||||
setRainForm(rainRes[val]);
|
||||
}
|
||||
|
||||
if (headId === "bdstChgYn" && val !== undefined) {
|
||||
|
||||
if (rainRes[val]?.bdstInfoPk != null && rainRes[val]?.chgBuilding.length > 0) {
|
||||
if (
|
||||
rainRes[val]?.bdstInfoPk != null &&
|
||||
rainRes[val]?.chgBuilding.length > 0
|
||||
) {
|
||||
bdstChgModal(rainRes[val].chgBuilding);
|
||||
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
const bdstChgModal = (chgBuilding:chgBuilding[] ) => {
|
||||
setBdstChgProps( {isOpen:true, chgBuilding:chgBuilding } );
|
||||
|
||||
const bdstChgModal = (chgBuilding: chgBuilding[]) => {
|
||||
setBdstChgProps({ isOpen: true, chgBuilding: chgBuilding });
|
||||
};
|
||||
|
||||
useEffect(()=>{
|
||||
useEffect(() => {
|
||||
console.log("rainForm", rainForm);
|
||||
},[rainForm])
|
||||
|
||||
}, [rainForm]);
|
||||
|
||||
return (
|
||||
<>
|
||||
<ContentsDiv >
|
||||
<ContentsDiv>
|
||||
<div className="grid grid-cols-4 gap-4 ">
|
||||
<div className="col-span-4">
|
||||
<Title title={"빗물이용시설 등록"} />
|
||||
@@ -137,59 +138,57 @@ export default function Home() {
|
||||
>
|
||||
신규등록
|
||||
</Button>
|
||||
|
||||
</SearchFormRight>
|
||||
</SearchDiv>
|
||||
</div>
|
||||
</div>
|
||||
<div className="grid grid-cols-6 gap-4 ">
|
||||
<div className="col-span-4 max-h-full ovreflow-y-scroll">
|
||||
<ListDiv>
|
||||
<ScrollArea className="h-full">
|
||||
<UiTable
|
||||
tableData={bdstTable || []}
|
||||
headlist={rain.upHeadList}
|
||||
pageSize={100}
|
||||
total={10}
|
||||
headName={"○건축물 목록"}
|
||||
cellClick={(val, headId) => {
|
||||
cellClick(val, headId);
|
||||
}}
|
||||
>
|
||||
{nodeList}
|
||||
</UiTable>
|
||||
<div className="h-screen grid grid-cols-6 gap-4 !overflow-y-scroll">
|
||||
<div className="col-span-4 h-full min-h-0">
|
||||
<ListDiv className="h-full min-h-0">
|
||||
<ScrollArea className="h-[60vh]">
|
||||
<UiTable
|
||||
tableData={bdstTable || []}
|
||||
headlist={rain.upHeadList}
|
||||
pageSize={100}
|
||||
total={10}
|
||||
headName={"○건축물 목록"}
|
||||
cellClick={(val, headId) => {
|
||||
cellClick(val, headId);
|
||||
}}
|
||||
>
|
||||
{nodeList}
|
||||
</UiTable>
|
||||
</ScrollArea>
|
||||
</ListDiv>
|
||||
</div>
|
||||
<div className="col-span-2 max-h-full ovreflow-y-scroll">
|
||||
<ListDiv>
|
||||
<ScrollArea>
|
||||
<RainRegForm
|
||||
rainForm={rainForm ?? {} as customRainBdst}
|
||||
isModal={false}
|
||||
></RainRegForm>
|
||||
</ScrollArea>
|
||||
<div className="col-span-2 max-h-full overflow-y-scroll">
|
||||
<ListDiv className="">
|
||||
<RainRegForm
|
||||
rainForm={rainForm ?? ({} as customRainBdst)}
|
||||
isModal={false}
|
||||
></RainRegForm>
|
||||
</ListDiv>
|
||||
</div>
|
||||
</div>
|
||||
<UiModal
|
||||
body={<BdstReg moType="RNB"></BdstReg>}
|
||||
bodyClass="w-[90vw] max-w-none"
|
||||
open={issNewReg}
|
||||
onOpenChange={(open) => {
|
||||
setIsNewReg(open);
|
||||
}}
|
||||
/>
|
||||
|
||||
body={<BdstReg moType="RNB"></BdstReg>}
|
||||
bodyClass="w-[90vw] max-w-none"
|
||||
open={issNewReg}
|
||||
onOpenChange={(open) => {
|
||||
setIsNewReg(open);
|
||||
}}
|
||||
/>
|
||||
|
||||
<UiModal
|
||||
bodyClass={""}
|
||||
open={bdstChgProps.isOpen}
|
||||
body={<BdstChgModal chgBuilding={bdstChgProps.chgBuilding}></BdstChgModal>}
|
||||
onOpenChange={(open) => {
|
||||
setBdstChgProps({ ...bdstChgProps, isOpen: open });
|
||||
}
|
||||
}
|
||||
/>
|
||||
bodyClass={""}
|
||||
open={bdstChgProps.isOpen}
|
||||
body={
|
||||
<BdstChgModal chgBuilding={bdstChgProps.chgBuilding}></BdstChgModal>
|
||||
}
|
||||
onOpenChange={(open) => {
|
||||
setBdstChgProps({ ...bdstChgProps, isOpen: open });
|
||||
}}
|
||||
/>
|
||||
</ContentsDiv>
|
||||
</>
|
||||
);
|
||||
|
||||
@@ -7,15 +7,20 @@ import {
|
||||
SearchFormRight,
|
||||
SelectBox,
|
||||
Title,
|
||||
UiModal,
|
||||
UiTable,
|
||||
} from "@common/business_components/ui";
|
||||
import ListDiv from "@common/business_components/ui/list_div";
|
||||
import { Button } from "@common/components/ui";
|
||||
import { headMakeprfmnc } from "../../prfmncReg/chkgdnReg/page";
|
||||
import HeadChModal from "@/components/ui/modal/headChModal/headChModal";
|
||||
import { useState } from "react";
|
||||
|
||||
export default function PbnstSttn() {
|
||||
const { code,pbnStt } = useWrStore((state) => state);
|
||||
|
||||
|
||||
const [isChHead, setIsChHead] = useState(false);
|
||||
const nodeList = headMakeprfmnc(pbnStt.pbnSttHeadList, pbnStt.pbnSttHeadNm);
|
||||
|
||||
return (
|
||||
@@ -82,7 +87,9 @@ export default function PbnstSttn() {
|
||||
<Button className="mr-4 rounded-lg" onClick={() => {}}>
|
||||
다운로드
|
||||
</Button>
|
||||
<Button className="mr-4 rounded-lg" onClick={() => {}}>
|
||||
<Button className="mr-4 rounded-lg" onClick={() => {
|
||||
// setIsChHead(true)
|
||||
}}>
|
||||
조회항목설정
|
||||
</Button>
|
||||
</SearchFormRight>
|
||||
@@ -108,6 +115,13 @@ export default function PbnstSttn() {
|
||||
</ListDiv>
|
||||
</div>
|
||||
</div>
|
||||
<UiModal open ={isChHead} onOpenChange ={()=>{setIsChHead(!isChHead)}} bodyClass={""} body={<HeadChModal/>}/>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</ContentsDiv>
|
||||
</>
|
||||
);
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
import { getFectch } from "@/components/lib/api";
|
||||
import type { bdstAll } from "../rainReg";
|
||||
import { TEST_UUID, type bdstAll, type customRainBdst } from "../rainReg";
|
||||
import type { TableProps } from "../pbnstReg";
|
||||
import type { customHtdflBdst } from "../htdflReg";
|
||||
import type { customRswtBdst } from "../rswtReg";
|
||||
|
||||
type TableUpperProps = {
|
||||
id: string;
|
||||
@@ -33,6 +35,117 @@ type TableUpperProps = {
|
||||
const bdstBase: bdstAll[] = [];
|
||||
|
||||
|
||||
const isRainBdst = (data: any): data is customRainBdst=> {
|
||||
return data.reuseBuilding?.[0]?.rainyObj !== undefined;
|
||||
}
|
||||
|
||||
const isHtdflBdst = (data: any): data is customHtdflBdst=> {
|
||||
return data.reuseBuilding?.[0]?.htdflObj !== undefined;
|
||||
}
|
||||
|
||||
const isRswtBdst = (data: any): data is customRswtBdst =>{
|
||||
return data.reuseBuilding?.[0]?.rswtrObj !== undefined;
|
||||
}
|
||||
|
||||
|
||||
|
||||
export const makeRstr =(data:customRainBdst|customHtdflBdst|customRswtBdst) =>{
|
||||
data.rgtr = TEST_UUID;
|
||||
|
||||
let chData
|
||||
if(isRainBdst(data)){
|
||||
chData = data.reuseBuilding.map((item) => ({
|
||||
...item,
|
||||
rgtr : TEST_UUID,
|
||||
rainyObj:{
|
||||
...item.rainyObj,
|
||||
rgtr:TEST_UUID
|
||||
}
|
||||
}));
|
||||
|
||||
data.reuseBuilding=chData;
|
||||
}else if(isHtdflBdst(data)){
|
||||
chData = data.reuseBuilding.map((item) => ({
|
||||
...item,
|
||||
rgtr : TEST_UUID,
|
||||
htdflObj:{
|
||||
...item.htdflObj,
|
||||
rgtr:TEST_UUID
|
||||
}
|
||||
}));
|
||||
|
||||
data.reuseBuilding=chData;
|
||||
}else if (isRswtBdst(data)){
|
||||
chData = data.reuseBuilding.map((item) => ({
|
||||
...item,
|
||||
rgtr : TEST_UUID,
|
||||
rswtrObj:{
|
||||
...item.rswtrObj,
|
||||
rgtr:TEST_UUID
|
||||
}
|
||||
}));
|
||||
data.reuseBuilding=chData;
|
||||
}
|
||||
|
||||
if(data?.chgBuilding.length>0){
|
||||
const chRgtr = data.chgBuilding.map((item) =>({...item, rgtr:TEST_UUID}))
|
||||
data.chgBuilding =chRgtr;
|
||||
}
|
||||
return data;
|
||||
|
||||
}
|
||||
|
||||
export const makeMdfr =(data:customRainBdst|customHtdflBdst|customRswtBdst) =>{
|
||||
data.mdfr = TEST_UUID;
|
||||
let chData
|
||||
if(isRainBdst(data)){
|
||||
chData = data.reuseBuilding.map((item) => ({
|
||||
...item,
|
||||
mdfr : TEST_UUID,
|
||||
rainyObj:{
|
||||
...item.rainyObj,
|
||||
mdfr:TEST_UUID
|
||||
}
|
||||
}));
|
||||
if(data?.chgBuilding.length>0){
|
||||
const chRgtr = data.chgBuilding.map((item) =>({...item, rgtr:TEST_UUID}))
|
||||
}
|
||||
|
||||
data.reuseBuilding=chData
|
||||
}else if(isHtdflBdst(data)){
|
||||
chData = data.reuseBuilding.map((item) => ({
|
||||
...item,
|
||||
mdfr : TEST_UUID,
|
||||
htdflObj:{
|
||||
...item.htdflObj,
|
||||
mdfr:TEST_UUID
|
||||
}
|
||||
}));
|
||||
data.reuseBuilding=chData;
|
||||
}else if (isRswtBdst(data)){
|
||||
chData = data.reuseBuilding.map((item) => ({
|
||||
...item,
|
||||
mdfr : TEST_UUID,
|
||||
rswtrObj:{
|
||||
...item.rswtrObj,
|
||||
mdfr:TEST_UUID
|
||||
}
|
||||
}));
|
||||
data.reuseBuilding=chData;
|
||||
}
|
||||
|
||||
if(data?.chgBuilding.length>0){
|
||||
const chMdfr = data.chgBuilding.map((item) =>({...item, mdfr:TEST_UUID}))
|
||||
data.chgBuilding =chMdfr;
|
||||
}
|
||||
|
||||
return data;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
export type bdstFulType = bdstState & bdstActions;
|
||||
|
||||
|
||||
@@ -2,6 +2,7 @@ import { getFectch, postFectch, putFectch } from "@/components/lib/api";
|
||||
import { upHeadList, type bdstAll, type chgBuilding, type TableUpperProps } from "../rainReg";
|
||||
|
||||
import { z } from "zod";
|
||||
import { makeMdfr, makeRstr } from "../bdstReg";
|
||||
|
||||
export const hdtflZod = z.object({
|
||||
bdstInfoPk: z.number().nullish(),
|
||||
@@ -13,7 +14,8 @@ export const hdtflZod = z.object({
|
||||
archChgPrmsnDt: z.date().default(() => new Date()).nullish() ,
|
||||
archArea: z.number().default(0),
|
||||
archChgArea: z.number().nullish().default(0),
|
||||
|
||||
rgtr:z.string().nullish().default(null),
|
||||
mdfr:z.string().nullish().default(null),
|
||||
reuseBuilding: z
|
||||
.array(
|
||||
z.object({
|
||||
@@ -37,7 +39,8 @@ export const hdtflZod = z.object({
|
||||
ruseFcltFlg: z.string().nullish().default(""),
|
||||
bdstUsgCd: z.number().default(0),
|
||||
lawTrgtYn: z.string().default(""),
|
||||
|
||||
rgtr:z.string().nullish().default(null),
|
||||
mdfr:z.string().nullish().default(null),
|
||||
// htdflObj 매핑
|
||||
htdflObj: z
|
||||
.object({
|
||||
@@ -68,6 +71,8 @@ export const hdtflZod = z.object({
|
||||
clIonQnt: z.number().default(0),
|
||||
cdtnv: z.number().default(0),
|
||||
emsnExitTp: z.number().default(0),
|
||||
rgtr:z.string().nullish().default(null),
|
||||
mdfr:z.string().nullish().default(null),
|
||||
})
|
||||
.default({}),
|
||||
})
|
||||
@@ -80,6 +85,8 @@ export const hdtflZod = z.object({
|
||||
archChgPrmsnDt: z.coerce.date() ,
|
||||
archChgArea: z.string().default("-"),
|
||||
bdstChgNm: z.string().default(""),
|
||||
rgtr:z.string().nullish().default(null),
|
||||
mdfr:z.string().nullish().default(null),
|
||||
})
|
||||
)
|
||||
.default([]),
|
||||
@@ -101,7 +108,7 @@ export type htdflReuseBuilding = {
|
||||
anlOperCst: number | undefined;
|
||||
instlCstSprtYn: string | undefined;
|
||||
instlCstSprtAmt: number | undefined;
|
||||
grntchBdstCertYn: string | undefined;
|
||||
grntchBdstCertYn?: string | undefined;
|
||||
grntchBdstCertYr: string | undefined;
|
||||
grntchBdstCertNo: string | undefined;
|
||||
grntchBdstCertGrd: string | undefined;
|
||||
@@ -112,14 +119,16 @@ export type htdflReuseBuilding = {
|
||||
bdstUsgCd: number | undefined;
|
||||
lawTrgtYn: string;
|
||||
htdflObj: htdflObj;
|
||||
rgtr?:string;
|
||||
mdfr?:string;
|
||||
};
|
||||
|
||||
export type htdflObj = {
|
||||
htdflFcltPk: number;
|
||||
bdstRuseFcltFk: number;
|
||||
etgtType: string;
|
||||
fclCpct: number | undefined;
|
||||
plwtYn: string;
|
||||
htdflFcltPk?: number;
|
||||
bdstRuseFcltFk?: number;
|
||||
etgtType?: string;
|
||||
fclCpct?: number | undefined;
|
||||
plwtYn?: string;
|
||||
orgwtWtritSpt: number | undefined;
|
||||
orgwtOcrnProcs: string;
|
||||
wtritEntrcTp: number | undefined;
|
||||
@@ -141,6 +150,8 @@ export type htdflObj = {
|
||||
clIonQnt: number | undefined;
|
||||
cdtnv: number | undefined;
|
||||
emsnExitTp: number | undefined;
|
||||
rgtr?:string;
|
||||
mdfr?:string;
|
||||
};
|
||||
|
||||
export type htdflFacState = {
|
||||
@@ -204,6 +215,7 @@ export const htdflFacActionsExport: (set: any) => htdflFacSActions = (
|
||||
},
|
||||
htdflUpdate: async (data: customHtdflBdst) => {
|
||||
try {
|
||||
const chData=await makeMdfr(data)
|
||||
const res = await putFectch("/drain/facility", data);
|
||||
if (res.ok) {
|
||||
alert(" 수정이 완료되었습니다.");
|
||||
@@ -227,6 +239,7 @@ export const htdflFacActionsExport: (set: any) => htdflFacSActions = (
|
||||
},
|
||||
htdflReg: async (data: customHtdflBdst) => {
|
||||
try {
|
||||
const chData=await makeRstr(data)
|
||||
const res = await postFectch("/drain/facility", data);
|
||||
if (res.ok) {
|
||||
|
||||
@@ -235,6 +248,7 @@ export const htdflFacActionsExport: (set: any) => htdflFacSActions = (
|
||||
.json()
|
||||
.then((resData: any) => {
|
||||
const chPK = resData?.data?.bdstInfoPk;
|
||||
|
||||
const makeCh = resData.data.chgBuilding.map(
|
||||
(item: chgBuilding) => ({
|
||||
...item,
|
||||
|
||||
@@ -1,12 +1,20 @@
|
||||
import type { selectArray } from "@/app/store/common/code";
|
||||
import { getFectch, postFectch, putFectch } from "@/components/lib/api";
|
||||
import { FormItem } from "@common/business_components/ui";
|
||||
import { zodResolver } from "@hookform/resolvers/zod";
|
||||
import type { UUID } from "crypto";
|
||||
import { useForm } from "react-hook-form";
|
||||
import { z } from "zod";
|
||||
import type { customHtdflBdst } from "../htdflReg";
|
||||
import type { customRswtBdst } from "../rswtReg";
|
||||
import { makeMdfr, makeRstr } from "../bdstReg";
|
||||
|
||||
|
||||
export const TEST_UUID= '2d4b151d-1828-41e0-91d9-4cd28ea1cc7e'
|
||||
|
||||
|
||||
export const rainZod = z.object({
|
||||
bdstInfoPk: z.number().nullish(),
|
||||
bdstInfoPk: z.number().optional(),
|
||||
ctpvCd: z.number().default(0),
|
||||
sggCd: z.number().default(0),
|
||||
daddr: z.string().default(""),
|
||||
@@ -15,6 +23,8 @@ export const rainZod = z.object({
|
||||
archChgPrmsnDt: z.coerce.date().nullish().default(null),
|
||||
archArea: z.number().default(0),
|
||||
archChgArea: z.number().default(0),
|
||||
rgtr:z.string().nullish(),
|
||||
mdfr:z.string().optional(),
|
||||
|
||||
reuseBuilding: z.array(
|
||||
z.object({
|
||||
@@ -22,10 +32,10 @@ export const rainZod = z.object({
|
||||
bdstInfoFk:z.number().nullish(),
|
||||
instlCmptnDt: z.coerce.date().default(() => new Date()),
|
||||
instlCst: z.number().default(0),
|
||||
operMngCd: z.string().nullish().default(""),
|
||||
operMngCd: z.string().optional().default(""),
|
||||
anlOperCst: z.number().default(0),
|
||||
instlCstSprtYn: z.string().default(""),
|
||||
instlCstSprtAmt: z.number().default(0),
|
||||
instlCstSprtAmt: z.number().nullish(),
|
||||
grntchBdstCertYn: z.string().default(""),
|
||||
grntchBdstCertYr: z.string()
|
||||
.max(4, "4자리 연도를 입력하세요")
|
||||
@@ -39,17 +49,23 @@ export const rainZod = z.object({
|
||||
ruseFcltFlg: z.string().default(""),
|
||||
bdstUsgCd: z.number().default(0),
|
||||
lawTrgtYn: z.string().default(""),
|
||||
rgtr:z.string().nullish(),
|
||||
mdfr:z.string().optional(),
|
||||
|
||||
rainyObj: z.object({
|
||||
bdstReuseFcltFk: z.number().nullish(),
|
||||
pntfColKnd: z.string().default(""),
|
||||
pntfColArea: z.number().default(0),
|
||||
dtfcltCpct: z.number().default(0),
|
||||
filtrTrtmfctCpct: z.number().default(0),
|
||||
filtrTrtmfctCpct: z.number().nullish().default(0),
|
||||
filtrTrtmfctYn: z.string().default(""),
|
||||
filtrTrtmfctPrs: z.string().default(""),
|
||||
annRnwtQty: z.number().default(0),
|
||||
oilqMeasMthd: z.string().default("").nullish()
|
||||
oilqMeasMthd: z.string().default("").nullish(),
|
||||
rgtr:z.string().nullish(),
|
||||
mdfr:z.string().optional(),
|
||||
|
||||
|
||||
}).default({})
|
||||
})
|
||||
).default([]),
|
||||
@@ -60,6 +76,9 @@ export const rainZod = z.object({
|
||||
archChgPrmsnDt: z.coerce.date(),
|
||||
archChgArea: z.string().default("-"),
|
||||
bdstChgNm: z.string().default(""),
|
||||
rgtr:z.string().nullish(),
|
||||
mdfr:z.string().nullish(),
|
||||
|
||||
})
|
||||
).default([])
|
||||
});
|
||||
@@ -67,22 +86,26 @@ export const rainZod = z.object({
|
||||
|
||||
|
||||
export type chgBuilding={
|
||||
bdstInfoFk: number|null,
|
||||
archChgPrmsnDt: Date,
|
||||
archChgArea: string,
|
||||
bdstChgNm: string
|
||||
bdstInfoFk?: number|null,
|
||||
archChgPrmsnDt?: Date,
|
||||
archChgArea?: string,
|
||||
bdstChgNm?: string
|
||||
rgtr?:string|null;
|
||||
mdfr?:string|null;
|
||||
}
|
||||
|
||||
|
||||
export type bdstAll = {
|
||||
bdstInfoPk: number|null;
|
||||
bdstInfoPk?: number;
|
||||
ctpvCd: number;
|
||||
sggCd: number;
|
||||
bdstNm: string;
|
||||
daddr: string;
|
||||
frstArchPrmsnDt: Date;
|
||||
archArea: string;
|
||||
archArea: number;
|
||||
archChgArea: number;
|
||||
rgtr?:string|null;
|
||||
mdfr?:string|null;
|
||||
reuseBuilding: rainReuseBuilding[];
|
||||
chgBuilding:chgBuilding[]
|
||||
};
|
||||
@@ -95,31 +118,35 @@ export type customRainBdst = Omit<bdstAll, 'reuseBuilding'> & {
|
||||
export type rainReuseBuilding = {
|
||||
lawTrgtYn: string|undefined;
|
||||
bdstUsgCd: number|undefined;
|
||||
bdstRuseFcltPk: number;
|
||||
bdstInfoFk: number;
|
||||
operMngCd: number;
|
||||
bdstRuseFcltPk?: number|null;
|
||||
bdstInfoFk: number|undefined;
|
||||
operMngCd?: number;
|
||||
anlOperCst: number;
|
||||
instlCmptnDt: Date|undefined;
|
||||
instlCst: number|undefined;
|
||||
instlCst: number;
|
||||
//archChgPrmsnDt: string;
|
||||
instlCstSprtYn: string|undefined;
|
||||
instlCstSprtAmt: number|undefined;
|
||||
instlCstSprtAmt?: number|undefined;
|
||||
grntchBdstCertYn: string|undefined;
|
||||
grntchBdstCertNo: string|undefined;
|
||||
grntchBdstCertGrd: string|undefined;
|
||||
grntchBdstCertYr: string|undefined;
|
||||
rainyObj: rainyObj | null;
|
||||
rgtr?:string|null;
|
||||
mdfr?:string|null;
|
||||
rainyObj: rainyObj | null |undefined;
|
||||
};
|
||||
export type rainyObj = {
|
||||
bdstReuseFcltFk: number;
|
||||
pntfColKnd: string | undefined;
|
||||
pntfColArea: number | undefined;
|
||||
dtfcltCpct: number;
|
||||
filtrTrtmfctCpct: number | undefined;
|
||||
filtrTrtmfctYn: string | undefined;
|
||||
filtrTrtmfctPrs: string | undefined;
|
||||
annRnwtQty: number;
|
||||
oilqMeasMthd: string | undefined;
|
||||
bdstReuseFcltFk?: number|undefined;
|
||||
pntfColKnd?: string | undefined;
|
||||
pntfColArea?: number | undefined;
|
||||
dtfcltCpct?: number;
|
||||
filtrTrtmfctCpct?: number | undefined;
|
||||
filtrTrtmfctYn?: string | undefined;
|
||||
filtrTrtmfctPrs?: string | undefined;
|
||||
annRnwtQty?: number;
|
||||
oilqMeasMthd?: string | undefined;
|
||||
rgtr?:string|null,
|
||||
mdfr?:string|null,
|
||||
};
|
||||
|
||||
export type TableUpperProps = {
|
||||
@@ -156,9 +183,11 @@ const rainRes: customRainBdst[] = [];
|
||||
bdstNm: "",
|
||||
daddr: "",
|
||||
frstArchPrmsnDt:new Date(),
|
||||
archArea: "",
|
||||
archArea: 0,
|
||||
archChgArea: 0,
|
||||
bdstInfoPk: 0,
|
||||
rgtr:"",
|
||||
mdfr:"",
|
||||
reuseBuilding: [{
|
||||
rainyObj: {
|
||||
bdstReuseFcltFk: 0,
|
||||
@@ -169,7 +198,9 @@ const rainRes: customRainBdst[] = [];
|
||||
filtrTrtmfctYn: undefined,
|
||||
filtrTrtmfctPrs: undefined,
|
||||
annRnwtQty: 0,
|
||||
oilqMeasMthd: undefined
|
||||
oilqMeasMthd: undefined,
|
||||
rgtr:"",
|
||||
mdfr:"",
|
||||
},
|
||||
lawTrgtYn: undefined,
|
||||
bdstUsgCd: undefined,
|
||||
@@ -178,27 +209,30 @@ const rainRes: customRainBdst[] = [];
|
||||
operMngCd: 0,
|
||||
anlOperCst: 0,
|
||||
instlCmptnDt: undefined,
|
||||
instlCst: undefined,
|
||||
instlCst: 0,
|
||||
// archChgPrmsnDt: "",
|
||||
instlCstSprtYn: undefined,
|
||||
instlCstSprtAmt: undefined,
|
||||
grntchBdstCertYn: undefined,
|
||||
grntchBdstCertNo: undefined,
|
||||
grntchBdstCertGrd: undefined,
|
||||
grntchBdstCertYr: undefined
|
||||
grntchBdstCertYr: undefined,
|
||||
rgtr:"",
|
||||
mdfr:"",
|
||||
}],
|
||||
//추가됨
|
||||
chgBuilding:[{
|
||||
bdstInfoFk: 0,
|
||||
archChgPrmsnDt: new Date(),
|
||||
archChgArea: "-",
|
||||
bdstChgNm: ""
|
||||
bdstChgNm: "",
|
||||
rgtr:"",
|
||||
mdfr:"",
|
||||
|
||||
}]
|
||||
};
|
||||
|
||||
|
||||
|
||||
export const selectClass = "w-full h-full text-2xl";
|
||||
const selectYN = [
|
||||
{ text: "Y", val: "1" },
|
||||
@@ -236,6 +270,7 @@ export const rainFacStateExport: rainFacState = {
|
||||
|
||||
|
||||
|
||||
|
||||
const initFetch = async (txt:string|undefined) => {
|
||||
|
||||
const rainRes =await getFectch("wr", `/reuseFc/rainyInfoList/1/20/41` +(txt? `/${txt}`:''));
|
||||
@@ -292,7 +327,12 @@ export const rainFacActionsExport: (set: any) => rainFacSActions = (
|
||||
},
|
||||
rainReg: async (data: customRainBdst) => {
|
||||
try {
|
||||
const res = await postFectch("/reuseFc/rainyInfo", data);
|
||||
|
||||
const test =await makeRstr(data);
|
||||
|
||||
|
||||
console.log("test ", test)
|
||||
const res = await postFectch("/reuseFc/rainyInfo", test);
|
||||
if(res.ok){
|
||||
|
||||
if(data.chgBuilding.length > 0){
|
||||
@@ -334,8 +374,10 @@ export const rainFacActionsExport: (set: any) => rainFacSActions = (
|
||||
},
|
||||
rainUpdate: async (data: customRainBdst) => {
|
||||
try {
|
||||
console.log("data ", data)
|
||||
const res = await putFectch("/reuseFc/rainyInfo", data);
|
||||
|
||||
|
||||
const chData =await makeMdfr(data);
|
||||
const res = await putFectch("/reuseFc/rainyInfo", chData);
|
||||
console.log('rainUpdate', res);
|
||||
if(res.ok){
|
||||
alert(" 수정이 완료되었습니다.")
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
import { getFectch, postFectch, putFectch } from "@/components/lib/api";
|
||||
import { upHeadList, type bdstAll, type chgBuilding, type TableUpperProps } from "../rainReg";
|
||||
import { upHeadList, type bdstAll, type chgBuilding, type TableUpperProps } from "../rainReg";
|
||||
import { rswtBdstType } from "@/app/store/common/code";
|
||||
|
||||
import { z } from "zod";
|
||||
import { makeMdfr, makeRstr } from "../bdstReg";
|
||||
|
||||
export const rswtZod = z.object({
|
||||
bdstInfoPk: z.number().nullish(),
|
||||
@@ -15,6 +16,8 @@ export const rswtZod = z.object({
|
||||
|
||||
archArea: z.number().default(0),
|
||||
archChgArea: z.number().default(0),
|
||||
rgtr:z.string().nullish().default(null),
|
||||
mdfr:z.string().nullish().default(null),
|
||||
|
||||
reuseBuilding: z.array(
|
||||
z.object({
|
||||
@@ -28,12 +31,12 @@ export const rswtZod = z.object({
|
||||
instlCstSprtYn: z.string().default(""),
|
||||
instlCstSprtAmt: z.number().default(0),
|
||||
|
||||
grntchBdstCertYn: z.string().default(""),
|
||||
grntchBdstCertYn: z.string().default("N"),
|
||||
grntchBdstCertYr: z.string().max(4, "4자리 연도를 입력하세요")
|
||||
.regex(/^\d{4}$/, "4자리 연도를 입력하세요")
|
||||
.default(""),
|
||||
grntchBdstCertNo: z.string().default(""),
|
||||
grntchBdstCertGrd: z.string().default(""),
|
||||
grntchBdstCertNo: z.string().nullish().default(""),
|
||||
grntchBdstCertGrd: z.string().nullish().default(""),
|
||||
|
||||
crgRdctYn: z.string().default(""),
|
||||
crgRdctBss: z.string().default(""),
|
||||
@@ -41,11 +44,13 @@ export const rswtZod = z.object({
|
||||
ruseFcltFlg: z.string().default(""),
|
||||
bdstUsgCd: z.number().default(0),
|
||||
lawTrgtYn: z.string().default(""),
|
||||
rgtr:z.string().nullish().default(null),
|
||||
mdfr:z.string().nullish().default(null),
|
||||
|
||||
rswtrObj: z.object({
|
||||
bdstRuseFcltFk: z.number().nullish(),
|
||||
wtrUsqty: z.number().default(0),
|
||||
oblgTrgtWtrUsqty: z.number().default(0),
|
||||
oblgTrgtWtrUsqty: z.number().nullish().default(0),
|
||||
orgwtKndCd: z.string().default(""),
|
||||
filtrTrtmfctProcs: z.string().default(""),
|
||||
filtrTrtmfctUsgCd: z.string().default(""),
|
||||
@@ -53,7 +58,9 @@ export const rswtZod = z.object({
|
||||
altUswtrUtztnYn: z.string().default(""),
|
||||
altUswtrKndCd: z.string().default(""),
|
||||
altUswtrUtztnQnt: z.number().default(0),
|
||||
altUswtrIdntyMthdCd: z.string().default("")
|
||||
altUswtrIdntyMthdCd: z.string().default(""),
|
||||
rgtr:z.string().nullish().default(null),
|
||||
mdfr:z.string().nullish().default(null),
|
||||
}).default({})
|
||||
})
|
||||
).default([]),
|
||||
@@ -65,6 +72,8 @@ export const rswtZod = z.object({
|
||||
archChgPrmsnDt: z.coerce.date() ,
|
||||
archChgArea: z.string().default("-"),
|
||||
bdstChgNm: z.string().default(""),
|
||||
rgtr:z.string().nullish().default(null),
|
||||
mdfr:z.string().nullish().default(null),
|
||||
})
|
||||
)
|
||||
.default([]),
|
||||
@@ -90,26 +99,30 @@ export type rswtReuseBuilding = {
|
||||
instlCstSprtYn: string | undefined;
|
||||
instlCstSprtAmt: number | undefined;
|
||||
bdstUsgCd: number | undefined;
|
||||
grntchBdstCertYn: string | undefined;
|
||||
grntchBdstCertNo: string | undefined;
|
||||
grntchBdstCertGrd: string | undefined;
|
||||
grntchBdstCertYr: string | undefined;
|
||||
grntchBdstCertYn: string ;
|
||||
grntchBdstCertNo?: string | undefined;
|
||||
grntchBdstCertGrd?: string | undefined;
|
||||
grntchBdstCertYr?: string | undefined;
|
||||
rgtr?:string;
|
||||
mdfr?:string;
|
||||
rswtrObj: rswtrObj | null;
|
||||
};
|
||||
export type rswtrObj = {
|
||||
bdstRuseFcltFk: number | undefined;
|
||||
wtrUsqty: number | undefined;
|
||||
oblgTrgtWtrUsqty: number | undefined;
|
||||
orgwtKndCd: string | undefined;
|
||||
filtrTrtmfctProcs: string | undefined;
|
||||
filtrTrtmfctUsgCd: string | undefined;
|
||||
rswtrUsqty: number;
|
||||
altUswtrUtztnYn: string;
|
||||
altUswtrKndCd: string;
|
||||
altUswtrUtztnQnt: number;
|
||||
altUswtrIdntyMthdCd: string;
|
||||
};
|
||||
|
||||
bdstRuseFcltFk?: number | undefined;
|
||||
wtrUsqty?: number | undefined;
|
||||
oblgTrgtWtrUsqty?: number ;
|
||||
orgwtKndCd?: string | undefined;
|
||||
filtrTrtmfctProcs?: string | undefined;
|
||||
filtrTrtmfctUsgCd?: string | undefined;
|
||||
rswtrUsqty?: number;
|
||||
altUswtrUtztnYn?: string;
|
||||
altUswtrKndCd?: string;
|
||||
altUswtrUtztnQnt?: number;
|
||||
|
||||
altUswtrIdntyMthdCd?: string;
|
||||
rgtr?:string;
|
||||
mdfr?:string;
|
||||
}
|
||||
|
||||
const rswtRes: customRswtBdst[] = [];
|
||||
|
||||
@@ -169,7 +182,8 @@ export const rswtFacActionsExport: (set: any) => rswtFacSActions = (
|
||||
},
|
||||
rswtUpdate: async (data: customRswtBdst) => {
|
||||
try {
|
||||
const res = await putFectch("/reuseFc/waterreuseFc", data);
|
||||
const chData=await makeMdfr(data)
|
||||
const res = await putFectch("/reuseFc/waterreuseFc", chData);
|
||||
if (res.ok) {
|
||||
alert("등록이 완료되었습니다.");
|
||||
}
|
||||
@@ -189,7 +203,8 @@ export const rswtFacActionsExport: (set: any) => rswtFacSActions = (
|
||||
},
|
||||
rswtReg: async (data: customRswtBdst) => {
|
||||
try {
|
||||
const res = await postFectch("/reuseFc/waterreuseFc", data);
|
||||
const chData=await makeRstr(data)
|
||||
const res = await postFectch("/reuseFc/waterreuseFc", chData);
|
||||
if(res.ok){
|
||||
if(data.chgBuilding.length > 0){
|
||||
await res
|
||||
|
||||
@@ -42,13 +42,7 @@ export const pbnSttHeadList:TableUpperProps[] = [
|
||||
];
|
||||
|
||||
|
||||
export const headVisibleSchema = z.array(
|
||||
z.object(
|
||||
Object.fromEntries(
|
||||
pbnSttHeadList.map(col => [col.id, z.boolean()])
|
||||
))
|
||||
);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
//8880
|
||||
|
||||
import { DEV_URL_COMMON, DEV_URL_WR } from "../config/";
|
||||
import { DEV_URL_FO, DEV_URL_WR } from "../config/";
|
||||
|
||||
|
||||
|
||||
export const getFectch = async( type:string , url: string) => {
|
||||
const div = type === 'common' ? DEV_URL_COMMON : DEV_URL_WR
|
||||
const div = type === 'common' ? DEV_URL_FO : DEV_URL_WR
|
||||
const response = await fetch( div+url , {
|
||||
method: "GET",
|
||||
headers: {
|
||||
|
||||
@@ -1,11 +1,14 @@
|
||||
|
||||
const LOCAL_PORT = "3000";
|
||||
const DEV_PORT = "11080";
|
||||
const DEV_PORT_NEW="8882"
|
||||
|
||||
|
||||
const DEV_URL_FO = "11082"; // common
|
||||
|
||||
export const LOCAL_URL_WR = `http://localhost:${LOCAL_PORT}/api/v1`;
|
||||
export const DEV_URL_WR = `http://con.mind-one.co.kr:${DEV_PORT}/api/v1`;
|
||||
|
||||
export const DEV_URL_COMMON = `http://con.mind-one.co.kr:${DEV_URL_FO}/api/v1`;
|
||||
//export const DEV_URL_FO = `http://con.mind-one.co.kr:${DEV_PORT_FO}/api/v1`;
|
||||
export const DEV_URL_FO = `http://192.168.1.193:${DEV_PORT_NEW}/api/v1`;
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -4,6 +4,7 @@ import { useWrStore } from "@/app/store";
|
||||
import {
|
||||
rainZod,
|
||||
selectClass,
|
||||
TEST_UUID,
|
||||
type customRainBdst,
|
||||
} from "@/app/store/ruseFcltMng/fcltReg/rainReg";
|
||||
import { DatePicker, FormUi } from "@common/business_components";
|
||||
@@ -70,7 +71,7 @@ export function RainRegForm({
|
||||
function onSubmit(values: z.infer<typeof rainZod>) {
|
||||
|
||||
if (isModal) {
|
||||
// regRainForm.bdstInfoPk = null;
|
||||
|
||||
rainReg(values);
|
||||
} else {
|
||||
rainUpdate(values);
|
||||
|
||||
@@ -20,7 +20,7 @@ import {
|
||||
import { useEffect } from "react";
|
||||
import BdstReg from "../bdstReg/bdstReg";
|
||||
|
||||
export function RswtrRegForm({
|
||||
export function RswtrRegForm({
|
||||
rswtForm,
|
||||
isModal,
|
||||
}: {
|
||||
|
||||
@@ -14,7 +14,7 @@ import { getCity, tableData } from "@/components/lib/func/commom";
|
||||
import type { customRswtBdst } from "@/app/store/ruseFcltMng/fcltReg/rswtReg";
|
||||
import { HtdflRegForm } from "../../form/fcltReg/htdflReg/htdflRegForm";
|
||||
import type { customHtdflBdst } from "@/app/store/ruseFcltMng/fcltReg/htdflReg";
|
||||
//import { RswtrRegForm } from "../../form/fcltReg/rswtrReg/RswtrRegForm";
|
||||
import {RswtrRegForm} from "../../form/fcltReg/rswtrReg/rswtrRegForm";
|
||||
|
||||
export type objSearchType = {
|
||||
sgg: string|number;
|
||||
@@ -144,7 +144,7 @@ export function BdstReg<T extends MoType>({ moType }: BdstRegProps<T>) {
|
||||
{ moType === 'RNB'?
|
||||
<RainRegForm rainForm={rainBdstForm as customRainBdst} isModal={true} />
|
||||
:moType==='RST'
|
||||
? <></>
|
||||
? <RswtrRegForm rswtForm={rainBdstForm as customRswtBdst} isModal={true} />
|
||||
:<HtdflRegForm htdflForm={rainBdstForm as unknown as customHtdflBdst} isModal={true}></HtdflRegForm>
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,95 @@
|
||||
import { useWrStore } from "@/app/store";
|
||||
import { pbnSttHeadList } from "@/app/store/ruseFcltMng/fcltSttn/pbnstSttn";
|
||||
import { Form, FormControl, FormDescription, FormField, FormItem, FormLabel, FormMessage } from "@common/business_components/ui";
|
||||
import { Button, Checkbox } from "@common/components/ui";
|
||||
import { zodResolver } from "@hookform/resolvers/zod";
|
||||
import { useForm } from "react-hook-form";
|
||||
import { z } from "zod";
|
||||
|
||||
export default function HeadChModal() {
|
||||
const { pbnStt } = useWrStore((state) => state);
|
||||
|
||||
|
||||
|
||||
const items = pbnSttHeadList.map(item => ({id:item.id, label:item.title}));
|
||||
|
||||
|
||||
|
||||
|
||||
const FormSchema = z.object({
|
||||
items: z.array(z.string()).refine((value) => value.some((item) => item), {
|
||||
message: "You have to select at least one item.",
|
||||
}),
|
||||
})
|
||||
|
||||
const form = useForm<z.infer<typeof FormSchema>>({
|
||||
resolver: zodResolver(FormSchema),
|
||||
})
|
||||
|
||||
|
||||
|
||||
const onSubmit = (val : z.infer<typeof FormSchema>) =>{
|
||||
|
||||
console.log(val)
|
||||
}
|
||||
|
||||
return (
|
||||
<>
|
||||
<div>
|
||||
<Form {...form}>
|
||||
<form onSubmit={form.handleSubmit(onSubmit)} className="space-y-8">
|
||||
<FormField
|
||||
control={form.control}
|
||||
name="items"
|
||||
render={() => (
|
||||
<FormItem>
|
||||
<div className="mb-4">
|
||||
<FormLabel className="text-base">Sidebar</FormLabel>
|
||||
<FormDescription>
|
||||
Select the items you want to display in the sidebar.
|
||||
</FormDescription>
|
||||
</div>
|
||||
{items.map((item) => (
|
||||
<FormField
|
||||
key={item.id}
|
||||
control={form.control}
|
||||
name="items"
|
||||
render={({ field }) => {
|
||||
return (
|
||||
<FormItem
|
||||
key={item.id}
|
||||
className="flex flex-row items-start space-x-3 space-y-0"
|
||||
>
|
||||
<FormControl>
|
||||
<Checkbox
|
||||
checked={field.value?.includes(item.id)}
|
||||
onCheckedChange={(checked) => {
|
||||
return checked
|
||||
? field.onChange([...field.value, item.id])
|
||||
: field.onChange(
|
||||
field.value?.filter(
|
||||
(value) => value !== item.id
|
||||
)
|
||||
);
|
||||
}}
|
||||
/>
|
||||
</FormControl>
|
||||
<FormLabel className="text-sm font-normal">
|
||||
{item.label}
|
||||
</FormLabel>
|
||||
</FormItem>
|
||||
);
|
||||
}}
|
||||
/>
|
||||
))}
|
||||
<FormMessage />
|
||||
</FormItem>
|
||||
)}
|
||||
/>
|
||||
<Button type="submit">Submit</Button>
|
||||
</form>
|
||||
</Form>
|
||||
</div>
|
||||
</>
|
||||
);
|
||||
}
|
||||
@@ -6,22 +6,40 @@ type ModalType = {
|
||||
body: React.ReactNode;
|
||||
open?: boolean;
|
||||
onOpenChange?: (open: boolean) => void;
|
||||
noHeaderYn?: 'N' | 'Y';
|
||||
noFooterYn?: 'N' | 'Y';
|
||||
headerTitle?: string;
|
||||
footerContent?: React.ReactNode;
|
||||
}
|
||||
|
||||
export function UiModal({ bodyClass, body, open, onOpenChange }: ModalType) {
|
||||
export function UiModal({
|
||||
bodyClass,
|
||||
body,
|
||||
open,
|
||||
onOpenChange,
|
||||
noHeaderYn = 'N',
|
||||
noFooterYn = 'N',
|
||||
headerTitle,
|
||||
footerContent
|
||||
}: ModalType) {
|
||||
|
||||
return (
|
||||
<>
|
||||
<Dialog open={open} onOpenChange={onOpenChange}>
|
||||
<DialogContent className={bodyClass}>
|
||||
<DialogHeader>
|
||||
<DialogDescription>
|
||||
</DialogDescription>
|
||||
|
||||
</DialogHeader>
|
||||
{(open && body)}
|
||||
<DialogFooter className="sm:justify-start">
|
||||
</DialogFooter>
|
||||
{noHeaderYn === 'N' && (
|
||||
<DialogHeader>
|
||||
<DialogDescription>
|
||||
{headerTitle}
|
||||
</DialogDescription>
|
||||
</DialogHeader>
|
||||
)}
|
||||
{(open && body)}
|
||||
{noFooterYn === 'N' && (
|
||||
<DialogFooter className="sm:justify-start">
|
||||
{footerContent}
|
||||
</DialogFooter>
|
||||
)}
|
||||
</DialogContent>
|
||||
</Dialog>
|
||||
</>
|
||||
|
||||
@@ -12,29 +12,36 @@ type UiTableProps = {
|
||||
cellClick : ((index:number|undefined, headId:string)=>void )| undefined;
|
||||
onPageChange: (page: number) => void;
|
||||
className?: string;
|
||||
resetPageNo?: boolean;
|
||||
}
|
||||
|
||||
type UiHeadProps = {
|
||||
id: string;
|
||||
title: string;
|
||||
align?: string;
|
||||
}
|
||||
|
||||
export function UiTable({ tableData, headlist, pageSize, total, children, headName, cellClick, onPageChange, className = '' }: UiTableProps) {
|
||||
export function UiTable({ tableData, headlist, pageSize, total, children, headName, cellClick, onPageChange, className = '', resetPageNo = false }: UiTableProps) {
|
||||
const [cur, setCur] = useState<number>(1);
|
||||
const [idx, setIdx] = useState<number>(-1);
|
||||
|
||||
useEffect(() => {
|
||||
if (resetPageNo) {
|
||||
setCur(1);
|
||||
onPageChange(1);
|
||||
}
|
||||
}, [onPageChange, resetPageNo]);
|
||||
|
||||
const handlePageChange = (page: number) => {
|
||||
setCur(page);
|
||||
onPageChange(page);
|
||||
}
|
||||
|
||||
|
||||
const handleCellClick = (index: number,headId:string )=> {
|
||||
if (cellClick) {
|
||||
cellClick(index,headId);
|
||||
setIdx(index);
|
||||
}
|
||||
|
||||
|
||||
};
|
||||
|
||||
return (
|
||||
@@ -43,8 +50,8 @@ export function UiTable({ tableData, headlist, pageSize, total, children, headNa
|
||||
<h3 className="text-2xl font-medium text-label">{headName}</h3>
|
||||
</div> : <></>}
|
||||
<div className={`card !m-[1.2rem] !p-0r ${className}`}>
|
||||
<Table>
|
||||
<TableHeader>
|
||||
<Table variant="secondary">
|
||||
<TableHeader >
|
||||
{children ? <>{children}</> : <TableRow>
|
||||
{headlist?.map((head) => (
|
||||
<TableHead key={head.id}>{head.title}</TableHead>
|
||||
@@ -52,11 +59,19 @@ export function UiTable({ tableData, headlist, pageSize, total, children, headNa
|
||||
</TableRow>}
|
||||
</TableHeader>
|
||||
<TableBody className='text-center'>
|
||||
{tableData?.map((el: { [key: string]: any}, index) => (
|
||||
<TableRow key={index + "row"} >
|
||||
{tableData?.map((el: { [key: string]: string | number | boolean | object}, index) => (
|
||||
<TableRow key={index + "row"}>
|
||||
{headlist?.map((head) => (
|
||||
// <TableCell className={cellClick&&idx==index?"bg-black/10 cursor-pointer":cellClick?"cursor-pointer":""} onClick={()=>handleCellClick(index)} key={head.id + index}>{el[head.id]}</TableCell>
|
||||
<TableCell className={cellClick&&idx==index?"opacity-40 cursor-pointer":cellClick?"cursor-pointer":""} onClick={(e)=>handleCellClick(index,head.id)} key={head.id + index}>{el[head.id]}</TableCell>
|
||||
<TableCell
|
||||
className={`${head.align === 'right' ? 'text-right' : 'text-center'} ${
|
||||
cellClick && idx === index ? '!font-[1000] cursor-pointer' :
|
||||
cellClick ? 'cursor-pointer' : ''
|
||||
}`}
|
||||
onClick={() => handleCellClick(index, head.id)}
|
||||
key={head.id + index}
|
||||
>
|
||||
{String(el[head.id] ?? '')}
|
||||
</TableCell>
|
||||
))}
|
||||
</TableRow>
|
||||
))}
|
||||
|
||||
@@ -29,7 +29,7 @@ const TableHeader = React.forwardRef<
|
||||
HTMLTableSectionElement,
|
||||
React.HTMLAttributes<HTMLTableSectionElement>
|
||||
>(({ className, ...props }, ref) => (
|
||||
<thead ref={ref} className={cn("[&_tr]:border-b", className)} {...props} />
|
||||
<thead ref={ref} className={cn("sticky top-0 bg-secondary [&_tr]:border-b", className)} {...props} />
|
||||
));
|
||||
TableHeader.displayName = "TableHeader";
|
||||
|
||||
|
||||
Reference in New Issue
Block a user