하수재이용시설 등록 보증수질 input 변경, 신규등록 저장 버튼 위치 수정, 상단 고정 추가

This commit is contained in:
jyha00
2025-07-16 14:55:44 +09:00
parent 8b2dd27a79
commit 01cb48e5b6
4 changed files with 234 additions and 158 deletions
@@ -350,7 +350,7 @@ export default function PublicReuseFaciltyInsert() {
<Button
size={"sm"}
onClick={form.handleSubmit(onSubmit, onInvalid)}
className="mr-5 mt-2" // 저장 버튼 위치 조정
className="mr-5 mt-2"
>
저장
</Button>
@@ -119,6 +119,9 @@ export default function PbnstSttn() {
selectUnitWaterShedData={code.lgbsnCd}
selectMiddleRegionData={code.mdmbsnCd}
selectEnvPartData={code.lclgvrnmntCd}
rightClassName="ml-auto mr-6 flex items-center space-x-1"
leftClassName="flex gap-5 w-9/12 m-4"
leftSelectClassName="w-1/4"
rightChildren={
<Button
className={btnClass}
@@ -141,11 +144,11 @@ export default function PbnstSttn() {
setSearchYear(String(val))
}
/>
<Label className="w-64 mt-2 mx-4 text-xl text-gray-600">
{"하수처리시설명 "}
<Label className="w-full mt-2 ml-4 text-xl text-gray-600">
{"하수처리시설명"}
</Label>
<SearchInput
className={"text-2xl w-full ㅍ"}
className={"text-2xl w-full"}
label=""
textValue={pbnRuseNm || ""}
setText={(e) => {
@@ -116,22 +116,29 @@ export function BuseWaterQulity({
key={`items.${indexMng}.fcBizs.${indexBiz}.bod-key`}
render={({ field }) => (
<FormUi label="BOD(mg/L)">
<Input
className="!text-2xl"
placeholder=""
type="text"
onChange={(e) => {
const inputValue = e.target.value.replace(/[^0-9.]/g, ""); // 숫자만 저장
field.onChange(inputValue);
}}
value={
field.value !== undefined && field.value !== ""
? `${field.value} 이하`
: ""
}
readOnly={formType === "sttn" ? true : false}
maxLength={6}
/>
<div className="flex items-center gap-2">
<div className="relative flex-1 min-w-0">
<Input
type="text"
className="w-full pr-16 border py-2 text-right rounded-md"
placeholder=""
onChange={(e) => {
const inputValue = e.target.value.replace(/[^0-9.]/g, ""); // 숫자만 저장
field.onChange(inputValue);
}}
value={
field.value !== undefined && field.value !== ""
? `${field.value}`
: ""
}
readOnly={formType === "sttn" ? true : false}
maxLength={6}
/>
<span className="text-xl absolute inset-y-0 right-3 flex items-center text-gray-500 pointer-events-none">
이하
</span>
</div>
</div>
</FormUi>
)}
/>
@@ -146,17 +153,30 @@ export function BuseWaterQulity({
key={`items.${indexMng}.fcBizs.${indexBiz}.grssClfg-key`}
render={({ field }) => (
<FormUi label="총대장균군수(개/mg)">
<Input
className="!text-2xl"
placeholder=""
type="text"
onChange={(e) => {
field.onChange(String(e.target.value));
}}
value={field.value ?? ""}
readOnly={formType === "sttn" ? true : false}
maxLength={6}
/>
<div className="flex items-center gap-2">
<div className="relative flex-1 min-w-0">
<Input
type="text"
className="w-full pr-16 border py-2 text-right rounded-md"
placeholder=""
onChange={(e) => {
const inputValue = e.target.value.replace(/[^0-9.]/g, ""); // 숫자만 저장
field.onChange(inputValue);
}}
value={
field.value !== undefined && field.value !== ""
? `${field.value}`
: ""
}
readOnly={formType === "sttn" ? true : false}
maxLength={6}
/>
{/* TODO: 총대장균군수 확인 필요*/}
<span className="text-xl absolute inset-y-0 right-3 flex items-center text-gray-500 pointer-events-none">
이하
</span>
</div>
</div>
</FormUi>
)}
/>
@@ -168,22 +188,29 @@ export function BuseWaterQulity({
key={`items.${indexMng}.fcBizs.${indexBiz}.combResdch-key`}
render={({ field }) => (
<FormUi label="결합잔류염소(mh/L)">
<Input
className="!text-2xl"
placeholder=""
type="text"
onChange={(e) => {
const inputValue = e.target.value.replace(/[^0-9.]/g, ""); // 숫자만 저장
field.onChange(inputValue);
}}
value={
field.value !== undefined && field.value !== ""
? `${field.value} 이상`
: ""
}
readOnly={formType === "sttn" ? true : false}
maxLength={6}
/>
<div className="flex items-center gap-2">
<div className="relative flex-1 min-w-0">
<Input
type="text"
className="w-full pr-16 border py-2 text-right rounded-md"
placeholder=""
onChange={(e) => {
const inputValue = e.target.value.replace(/[^0-9.]/g, ""); // 숫자만 저장
field.onChange(inputValue);
}}
value={
field.value !== undefined && field.value !== ""
? `${field.value}`
: ""
}
readOnly={formType === "sttn" ? true : false}
maxLength={6}
/>
<span className="text-xl absolute inset-y-0 right-3 flex items-center text-gray-500 pointer-events-none">
이상
</span>
</div>
</div>
</FormUi>
)}
/>
@@ -195,22 +222,29 @@ export function BuseWaterQulity({
key={`items.${indexMng}.fcBizs.${indexBiz}.trbt-key`}
render={({ field }) => (
<FormUi label="탁도(NTU)">
<Input
className="!text-2xl"
placeholder=""
type="text"
onChange={(e) => {
const inputValue = e.target.value.replace(/[^0-9.]/g, ""); // 숫자만 저장
field.onChange(inputValue);
}}
value={
field.value !== undefined && field.value !== ""
? `${field.value} 이상`
: ""
}
readOnly={formType === "sttn" ? true : false}
maxLength={6}
/>
<div className="flex items-center gap-2">
<div className="relative flex-1 min-w-0">
<Input
type="text"
className="w-full pr-16 border py-2 text-right rounded-md"
placeholder=""
onChange={(e) => {
const inputValue = e.target.value.replace(/[^0-9.]/g, ""); // 숫자만 저장
field.onChange(inputValue);
}}
value={
field.value !== undefined && field.value !== ""
? `${field.value}`
: ""
}
readOnly={formType === "sttn" ? true : false}
maxLength={6}
/>
<span className="text-xl absolute inset-y-0 right-3 flex items-center text-gray-500 pointer-events-none">
이상
</span>
</div>
</div>
</FormUi>
)}
/>
@@ -248,7 +282,7 @@ export function BuseWaterQulity({
onSelectValue={(val) => {
field.onChange(val);
}}
value={field.value||undefined}
value={field.value || undefined}
></SelectBox>
</FormUi>
)}
@@ -261,22 +295,29 @@ export function BuseWaterQulity({
key={`items.${indexMng}.fcBizs.${indexBiz}.crmty-key`}
render={({ field }) => (
<FormUi label="색도(도)">
<Input
className="!text-2xl"
placeholder=""
type="text"
onChange={(e) => {
const inputValue = e.target.value.replace(/[^0-9.]/g, ""); // 숫자만 저장
field.onChange(inputValue);
}}
value={
field.value !== undefined && field.value !== ""
? `${field.value} 이하`
: ""
}
readOnly={formType === "sttn" ? true : false}
maxLength={6}
/>
<div className="flex items-center gap-2">
<div className="relative flex-1 min-w-0">
<Input
type="text"
className="w-full pr-16 border py-2 text-right rounded-md"
placeholder=""
onChange={(e) => {
const inputValue = e.target.value.replace(/[^0-9.]/g, ""); // 숫자만 저장
field.onChange(inputValue);
}}
value={
field.value !== undefined && field.value !== ""
? `${field.value}`
: ""
}
readOnly={formType === "sttn" ? true : false}
maxLength={6}
/>
<span className="text-xl absolute inset-y-0 right-3 flex items-center text-gray-500 pointer-events-none">
이하
</span>
</div>
</div>
</FormUi>
)}
/>
@@ -288,22 +329,29 @@ export function BuseWaterQulity({
key={`items.${indexMng}.fcBizs.${indexBiz}.tn-key`}
render={({ field }) => (
<FormUi label="총질소(T-N)(mg/L)">
<Input
className="!text-2xl"
placeholder=""
type="text"
onChange={(e) => {
const inputValue = e.target.value.replace(/[^0-9.]/g, ""); // 숫자만 저장
field.onChange(inputValue);
}}
value={
field.value !== undefined && field.value !== ""
? `${field.value} 이하`
: ""
}
readOnly={formType === "sttn" ? true : false}
maxLength={6}
/>
<div className="flex items-center gap-2">
<div className="relative flex-1 min-w-0">
<Input
type="text"
className="w-full pr-16 border py-2 text-right rounded-md"
placeholder=""
onChange={(e) => {
const inputValue = e.target.value.replace(/[^0-9.]/g, ""); // 숫자만 저장
field.onChange(inputValue);
}}
value={
field.value !== undefined && field.value !== ""
? `${field.value}`
: ""
}
readOnly={formType === "sttn" ? true : false}
maxLength={6}
/>
<span className="text-xl absolute inset-y-0 right-3 flex items-center text-gray-500 pointer-events-none">
이하
</span>
</div>
</div>
</FormUi>
)}
/>
@@ -316,22 +364,29 @@ export function BuseWaterQulity({
key={`items.${indexMng}.fcBizs.${indexBiz}.tph-key`}
render={({ field }) => (
<FormUi label="총인(T-P)(mg/L)">
<Input
className="!text-2xl"
placeholder=""
type="text"
onChange={(e) => {
const inputValue = e.target.value.replace(/[^0-9.]/g, ""); // 숫자만 저장
field.onChange(inputValue);
}}
value={
field.value !== undefined && field.value !== ""
? `${field.value} 이하`
: ""
}
readOnly={formType === "sttn" ? true : false}
maxLength={6}
/>
<div className="flex items-center gap-2">
<div className="relative flex-1 min-w-0">
<Input
type="text"
className="w-full pr-16 border py-2 text-right rounded-md"
placeholder=""
onChange={(e) => {
const inputValue = e.target.value.replace(/[^0-9.]/g, ""); // 숫자만 저장
field.onChange(inputValue);
}}
value={
field.value !== undefined && field.value !== ""
? `${field.value}`
: ""
}
readOnly={formType === "sttn" ? true : false}
maxLength={6}
/>
<span className="text-xl absolute inset-y-0 right-3 flex items-center text-gray-500 pointer-events-none">
이하
</span>
</div>
</div>
</FormUi>
)}
/>
@@ -343,22 +398,29 @@ export function BuseWaterQulity({
key={`items.${indexMng}.fcBizs.${indexBiz}.cdtnv-key`}
render={({ field }) => (
<FormUi label="전기전도도(μs/cm)">
<Input
className="!text-2xl"
placeholder=""
type="text"
onChange={(e) => {
const inputValue = e.target.value.replace(/[^0-9.]/g, ""); // 숫자만 저장
field.onChange(inputValue);
}}
value={
field.value !== undefined && field.value !== ""
? `${field.value} 이하`
: ""
}
readOnly={formType === "sttn" ? true : false}
maxLength={7}
/>
<div className="flex items-center gap-2">
<div className="relative flex-1 min-w-0">
<Input
type="text"
className="w-full pr-16 border py-2 text-right rounded-md"
placeholder=""
onChange={(e) => {
const inputValue = e.target.value.replace(/[^0-9.]/g, ""); // 숫자만 저장
field.onChange(inputValue);
}}
value={
field.value !== undefined && field.value !== ""
? `${field.value}`
: ""
}
readOnly={formType === "sttn" ? true : false}
maxLength={7}
/>
<span className="text-xl absolute inset-y-0 right-3 flex items-center text-gray-500 pointer-events-none">
이하
</span>
</div>
</div>
</FormUi>
)}
/>
@@ -371,22 +433,29 @@ export function BuseWaterQulity({
key={`items.${indexMng}.fcBizs.${indexBiz}.clIonQnt-key`}
render={({ field }) => (
<FormUi label="염화물(mg/L)">
<Input
className="!text-2xl"
placeholder=""
type="text"
onChange={(e) => {
const inputValue = e.target.value.replace(/[^0-9.]/g, ""); // 숫자만 저장
field.onChange(inputValue);
}}
value={
field.value !== undefined && field.value !== ""
? `${field.value} 이하`
: ""
}
readOnly={formType === "sttn" ? true : false}
maxLength={7}
/>
<div className="flex items-center gap-2">
<div className="relative flex-1 min-w-0">
<Input
type="text"
className="w-full pr-16 border py-2 text-right rounded-md"
placeholder=""
onChange={(e) => {
const inputValue = e.target.value.replace(/[^0-9.]/g, ""); // 숫자만 저장
field.onChange(inputValue);
}}
value={
field.value !== undefined && field.value !== ""
? `${field.value}`
: ""
}
readOnly={formType === "sttn" ? true : false}
maxLength={7}
/>
<span className="text-xl absolute inset-y-0 right-3 flex items-center text-gray-500 pointer-events-none">
이하
</span>
</div>
</div>
</FormUi>
)}
/>
@@ -395,7 +464,7 @@ export function BuseWaterQulity({
<Label className="text-xl">수소이온농도(PH)</Label>
<div className="flex flex-row items-center gap-2">
<Input
className="!text-2xl w-28"
className="!text-xl w-28"
placeholder=""
type="text"
onChange={(e) =>
@@ -408,7 +477,7 @@ export function BuseWaterQulity({
/>
<span className="text-xl">~</span>
<Input
className="!text-2xl w-28"
className="!text-xl w-28"
placeholder=""
type="text"
onChange={(e) => {
@@ -42,7 +42,7 @@ export function PbnstRegModal({
const onSubmit = async (valuse: { items: PbnstRegArrrayType }) => {
const item = valuse.items[indexMng];
const data = item ? writeRgtrAndMdfr([item]) : [];
//
//
const handleConfirm = () => {
if (data && data[0]) {
setPbnstInsert(data[0]);
@@ -72,8 +72,9 @@ export function PbnstRegModal({
</h1>
<div className="border-t border-gray-300 my-4"></div>
<ScrollArea className="h-[75vh]">
<Tabs defaultValue="mng" onValueChange={handleTabChange}>
<Tabs defaultValue="mng" onValueChange={handleTabChange}>
<div className="flex justify-between items-center">
<TabsList className="">
<TabsTrigger className="!text-xl" value="mng">
시설정보
@@ -81,14 +82,17 @@ export function PbnstRegModal({
<TabsTrigger className="!text-xl" value="buse">
차수별정보
</TabsTrigger>
<Button
onClick={form.handleSubmit(onSubmit, onInvalid)}
size={"sm"}
className="!justify-end"
>
저장
</Button>
</TabsList>
<Button
onClick={form.handleSubmit(onSubmit, onInvalid)}
size={"sm"}
className="mr-5 mt-2"
>
저장
</Button>
</div>
<ScrollArea className="h-[75vh]">
<TabsContent className="max-h-full" value="mng">
<PbnstMngForm
form={form}
@@ -106,8 +110,8 @@ export function PbnstRegModal({
formType={"reg"}
/>
</TabsContent>
</Tabs>
</ScrollArea>
</ScrollArea>
</Tabs>
</>
);
}