Merge branch 'main' of https://www.onasys.co.kr:3000/ONAANDALL/frontend
This commit is contained in:
@@ -157,9 +157,9 @@ function LoginPage() {
|
||||
<h1>
|
||||
유역하수도통합플랫폼
|
||||
<br />
|
||||
<span>하수도 포탈</span>
|
||||
<span>유역하수도 포탈</span>
|
||||
</h1>
|
||||
<p>유역하수도통합플랫폼 하수도 포탈에 오신 것을 환영합니다.</p>
|
||||
<p>유역하수도통합플랫폼 유역하수도포탈에 오신 것을 환영합니다.</p>
|
||||
</div>
|
||||
<div className="img">
|
||||
<Image src={images.logo} width={229} height={46} alt="logo" />
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
import "@/app/styles/base.css";
|
||||
|
||||
export const metadata = {
|
||||
title: "유역하수도 통합 정보플랫폼",
|
||||
};
|
||||
|
||||
export default function AuthLayout({
|
||||
children,
|
||||
}: {
|
||||
children: React.ReactNode;
|
||||
}) {
|
||||
return (
|
||||
<html lang="ko">
|
||||
<body>{children}</body>
|
||||
</html>
|
||||
);
|
||||
}
|
||||
@@ -1,4 +1,5 @@
|
||||
import type { Metadata } from "next";
|
||||
|
||||
import { App } from "@/app";
|
||||
|
||||
export const metadata: Metadata = {
|
||||
@@ -1,7 +1,9 @@
|
||||
import { client } from "@/shared/api";
|
||||
import { ENDPOINT } from "@/shared/config";
|
||||
|
||||
import {
|
||||
type NtftalkTemp,
|
||||
type NtftalkTempDeleteMultiPayload,
|
||||
type NtftalkTempPageList,
|
||||
type NtftalkTempSavePayload,
|
||||
type NtftalkTempSearchParams,
|
||||
@@ -51,6 +53,12 @@ class NtftalkTempApiService implements NtftalkTempService {
|
||||
`${ENDPOINT.NTFTALK_SERVICE.NTFTALK_TEMP}/${encodeURIComponent(templateCode)}`,
|
||||
);
|
||||
}
|
||||
|
||||
async deleteMultiNtftalkTemp(
|
||||
payload: NtftalkTempDeleteMultiPayload,
|
||||
): Promise<void> {
|
||||
await client.post(`${ENDPOINT.NTFTALK_SERVICE.NTFTALK_TEMP}/delmulti`, payload);
|
||||
}
|
||||
}
|
||||
|
||||
export const NtftalkTempApi = new NtftalkTempApiService();
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import { client } from "@/shared/api";
|
||||
import { ENDPOINT } from "@/shared/config";
|
||||
|
||||
import {
|
||||
type NtftalkVar,
|
||||
type NtftalkVarPageList,
|
||||
@@ -27,8 +28,10 @@ class NtftalkVarApiService implements NtftalkVarService {
|
||||
return response.data;
|
||||
}
|
||||
|
||||
async saveNtftalkVar(payload: NtftalkVarSavePayload): Promise<NtftalkVar> {
|
||||
const response = await client.post<NtftalkVar>(
|
||||
async saveNtftalkVar(
|
||||
payload: NtftalkVarSavePayload[],
|
||||
): Promise<NtftalkVar[]> {
|
||||
const response = await client.post<NtftalkVar[]>(
|
||||
`${ENDPOINT.NTFTALK_SERVICE.NTFTALK_VAR}`,
|
||||
payload,
|
||||
);
|
||||
|
||||
@@ -40,10 +40,14 @@ export interface NtftalkTemp {
|
||||
templateName: string;
|
||||
templateContent: string;
|
||||
templateMessageType: string;
|
||||
templateMessageTypeNm: string;
|
||||
templateEmphasizeType: string;
|
||||
templateEmphasizeTypeNm: string;
|
||||
templateImageUrl: string;
|
||||
inspectionStatus: string;
|
||||
inspectionStatusNm: string;
|
||||
status: string;
|
||||
statusNm: string;
|
||||
createdAt: string;
|
||||
modifiedAt: string;
|
||||
buttons?: NtftalkBtnTemp[];
|
||||
@@ -94,6 +98,10 @@ export interface NtftalkTempUpdatePayload {
|
||||
quickReplies?: NtftalkQuickTempSavePayload[];
|
||||
}
|
||||
|
||||
export interface NtftalkTempDeleteMultiPayload {
|
||||
templateCodes: string[];
|
||||
}
|
||||
|
||||
export type NtftalkTempPageList = PageableList<NtftalkTemp>;
|
||||
|
||||
export interface NtftalkTempService {
|
||||
@@ -107,4 +115,5 @@ export interface NtftalkTempService {
|
||||
payload: NtftalkTempUpdatePayload,
|
||||
): Promise<NtftalkTemp>;
|
||||
deleteNtftalkTemp(templateCode: string): Promise<void>;
|
||||
deleteMultiNtftalkTemp(payload: NtftalkTempDeleteMultiPayload): Promise<void>;
|
||||
}
|
||||
|
||||
@@ -11,17 +11,29 @@ export interface NtftalkVar {
|
||||
sender: string;
|
||||
varNm: string;
|
||||
varDesc: string;
|
||||
regDt: string;
|
||||
regDt?: string;
|
||||
regr: string;
|
||||
}
|
||||
|
||||
export interface NtftalkVarSavePayload {
|
||||
varCd: string;
|
||||
sender?: string;
|
||||
varNm: string;
|
||||
varDesc?: string;
|
||||
regr?: string;
|
||||
}
|
||||
export type NtftalkVarSavePayload =
|
||||
| {
|
||||
mode: "C";
|
||||
varCd: string;
|
||||
varNm: string;
|
||||
sender?: string;
|
||||
varDesc?: string;
|
||||
regr?: string;
|
||||
}
|
||||
| {
|
||||
mode: "U";
|
||||
varCd: string;
|
||||
varNm: string;
|
||||
varDesc?: string;
|
||||
}
|
||||
| {
|
||||
mode: "D";
|
||||
varCd: string;
|
||||
};
|
||||
|
||||
export interface NtftalkVarUpdatePayload {
|
||||
varNm: string;
|
||||
@@ -31,9 +43,11 @@ export interface NtftalkVarUpdatePayload {
|
||||
export type NtftalkVarPageList = PageableList<NtftalkVar>;
|
||||
|
||||
export interface NtftalkVarService {
|
||||
getNtftalkVarPage(params: NtftalkVarSearchParams): Promise<NtftalkVarPageList>;
|
||||
getNtftalkVarPage(
|
||||
params: NtftalkVarSearchParams,
|
||||
): Promise<NtftalkVarPageList>;
|
||||
getNtftalkVar(varCd: string): Promise<NtftalkVar>;
|
||||
saveNtftalkVar(payload: NtftalkVarSavePayload): Promise<NtftalkVar>;
|
||||
saveNtftalkVar(payload: NtftalkVarSavePayload[]): Promise<NtftalkVar[]>;
|
||||
updateNtftalkVar(
|
||||
varCd: string,
|
||||
payload: NtftalkVarUpdatePayload,
|
||||
|
||||
@@ -31,12 +31,12 @@ function LoginPage() {
|
||||
<div className="login fx">
|
||||
<div className="left_box fx">
|
||||
<div className="text">
|
||||
<h1>
|
||||
하수도정보시스템
|
||||
<h1>
|
||||
유역하수도통합플랫폼
|
||||
<br />
|
||||
<span>CMS 통합관리시스템</span>
|
||||
<span>하수도플랫폼 통합관리(CMS)시스템</span>
|
||||
</h1>
|
||||
<p>하수도정보시스템 CMS 통합관리시스템에 오신 것을 환영합니다.</p>
|
||||
<p>유역하수도통합플랫폼 통합관리(CMS)시스템에 오신 것을 환영합니다.</p>
|
||||
</div>
|
||||
<div className="img">
|
||||
<Image src={images.logo} width={229} height={46} alt="logo" />
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
import { z } from "zod";
|
||||
|
||||
export const ntftalkVarAdditionalSchema = z.object({
|
||||
draftVars: z.array(
|
||||
z.object({
|
||||
varCd: z.string().min(1, "변수코드를 입력하세요."),
|
||||
varNm: z.string().min(1, "변수명을 입력하세요."),
|
||||
varDesc: z.string().default(""),
|
||||
sender: z.string().default(""),
|
||||
regr: z.string().default(""),
|
||||
}),
|
||||
),
|
||||
});
|
||||
|
||||
export type NtftalkVarAdditionalFormData = z.infer<
|
||||
typeof ntftalkVarAdditionalSchema
|
||||
>;
|
||||
@@ -0,0 +1,52 @@
|
||||
import { z } from "zod";
|
||||
|
||||
import type { NtftalkVarSavePayload } from "@/entities/ntftalk";
|
||||
|
||||
import type { NtftalkVarGridRow } from "./ntftalk-var-grid";
|
||||
|
||||
export const varDraftRowSchema = z.object({
|
||||
varCd: z.string().min(1),
|
||||
varNm: z.string().min(1),
|
||||
varDesc: z.string().optional(),
|
||||
sender: z.string().optional(),
|
||||
});
|
||||
|
||||
export function buildNtftalkVarBatchPayload(input: {
|
||||
pendingDeleteVarCds: ReadonlySet<string>;
|
||||
draftVars?: NtftalkVarGridRow[];
|
||||
regr?: string;
|
||||
}): NtftalkVarSavePayload[] {
|
||||
const { draftVars, pendingDeleteVarCds, regr } = input;
|
||||
const payloads: NtftalkVarSavePayload[] = [];
|
||||
|
||||
if (!draftVars) {
|
||||
for (const varCd of pendingDeleteVarCds) {
|
||||
payloads.push({ mode: "D", varCd });
|
||||
}
|
||||
return payloads;
|
||||
}
|
||||
|
||||
for (const d of draftVars) {
|
||||
const parsed = varDraftRowSchema.safeParse({
|
||||
varCd: d.varCd,
|
||||
varNm: d.varNm,
|
||||
varDesc: d.varDesc || undefined,
|
||||
sender: d.sender || undefined,
|
||||
});
|
||||
if (!parsed.success) {
|
||||
throw new Error(
|
||||
parsed.error.issues[0]?.message ?? "유효하지 않은 입력입니다.",
|
||||
);
|
||||
}
|
||||
payloads.push({
|
||||
mode: "C",
|
||||
varCd: parsed.data.varCd,
|
||||
varNm: parsed.data.varNm,
|
||||
varDesc: parsed.data.varDesc,
|
||||
sender: parsed.data.sender,
|
||||
regr,
|
||||
});
|
||||
}
|
||||
|
||||
return payloads;
|
||||
}
|
||||
@@ -2,13 +2,11 @@ import type { NtftalkVar } from "@/entities/ntftalk";
|
||||
|
||||
export interface NtftalkVarGridRow extends NtftalkVar {
|
||||
clientId?: string;
|
||||
isDraft?: boolean;
|
||||
}
|
||||
|
||||
export function createEmptyVarDraft(clientId: string): NtftalkVarGridRow {
|
||||
return {
|
||||
clientId,
|
||||
isDraft: true,
|
||||
varCd: "",
|
||||
varNm: "",
|
||||
varDesc: "",
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user