diff --git a/src/App.jsx b/src/App.jsx
index 71dc335..c84f5fc 100644
--- a/src/App.jsx
+++ b/src/App.jsx
@@ -82,6 +82,8 @@ function App() {
} />
} />
+ } />
+
{/* Center */}
} />
} />
} />
- } />
} />
diff --git a/src/components/Auth/SignUp/helper/EmailAuth.jsx b/src/components/Auth/SignUp/helper/EmailAuth.jsx
index 00276d6..3ad8eca 100644
--- a/src/components/Auth/SignUp/helper/EmailAuth.jsx
+++ b/src/components/Auth/SignUp/helper/EmailAuth.jsx
@@ -8,7 +8,7 @@ import SignUpButton from '@/components/Auth/SignUp/helper/SignUpButton';
export default function EmailAuth() {
const emailCodeRef = useRef(null);
- const { signUpForm, setEmailAuthField } = useSignUpStore();
+ const { signUpForm, setEmailAuthField, isEmailFirstCheck } = useSignUpStore();
const { sendEmail, verifyEmail, sendEmailStatus, verifyEmailStatus } = useEmailAuthMutation();
const { email, emailCode, isVerified, mailSeq, password, passwordConfirm } = signUpForm.emailAuth;
@@ -28,7 +28,7 @@ export default function EmailAuth() {
return (
-
+
+
+ {!isEmailFirstCheck && !email && (
+
+ 이메일을 입력해주세요
+
+ )}
-
+
setEmailAuthField('password', e.target.value)}
className='rounded-lg h-[4.0625rem] text-base font-normal text-[var(--button-black)] border border-[var(--outline)] placeholder:text-[var(--placeholder-gray)] w-[100%]'
/>
+ {!isEmailFirstCheck && !password && (
+
+ 비밀번호를 입력해주세요
+
+ )}
-
+
setEmailAuthField('passwordCheck', true)}
className='rounded-lg h-[4.0625rem] text-base font-normal text-[var(--button-black)] border border-[var(--outline)] placeholder:text-[var(--placeholder-gray)] w-[100%]'
/>
+
+ {!isEmailFirstCheck && !passwordConfirm && (
+
+ 비밀번호를 확인해주세요
+
+ )}
diff --git a/src/components/Auth/SignUp/helper/HelperInfo.jsx b/src/components/Auth/SignUp/helper/HelperInfo.jsx
index 2ddd706..abc07c6 100644
--- a/src/components/Auth/SignUp/helper/HelperInfo.jsx
+++ b/src/components/Auth/SignUp/helper/HelperInfo.jsx
@@ -16,6 +16,12 @@ export default function HelperInfo() {
setHelperInfoField('profilePic', value);
};
+ const handleBirthday = (e) => {
+ let str = e.target.value.replace(/\D/g, '');
+ if (str.length > 8) str = str.slice(0, 8);
+ setHelperInfoField('birthday', str);
+ };
+
return (
@@ -25,13 +31,12 @@ export default function HelperInfo() {
- {console.log(isFirstCheck)}
setHelperInfoField('name', e.target.value)}
- className={`rounded-lg h-[4.0625rem] text-base font-normal text-[var(--button-black)] border placeholder:text-[var(--placeholder-gray)] w-[100%] ${
+ className={`rounded-lg h-[4.0625rem] text-base font-normal text-[var(--button-black)] border placeholder:text-[var(--placeholder-gray)] w-[100%] ${
!isFirstCheck && !name ? 'border-[var(--required-red)]' : 'border-[var(--outline)]'
}`}
/>
@@ -72,7 +77,7 @@ export default function HelperInfo() {
여성
- {!isFirstCheck && !gender && (
+ {!isFirstCheck && gender === null && (
성별을 입력해주세요
@@ -85,7 +90,8 @@ export default function HelperInfo() {
inputMode='numeric'
maxLength={8}
value={birthday}
- onChange={(e) => setHelperInfoField('birthday', e.target.value)}
+ // onChange={(e) => setHelperInfoField('birthday', e.target.value)}
+ onChange={handleBirthday}
className={`rounded-lg h-[4.0625rem] text-base font-normal text-[var(--button-black)] border placeholder:text-[var(--placeholder-gray)] w-[100%] ${
!isFirstCheck && !birthday ? 'border-[var(--required-red)]' : 'border-[var(--outline)]'
}`}
@@ -128,7 +134,7 @@ export default function HelperInfo() {
아니오
- {!isFirstCheck && !carOwnYn && (
+ {!isFirstCheck && carOwnYn === null && (
차량소유여부를 입력해주세요
@@ -144,7 +150,7 @@ export default function HelperInfo() {
아니오
- {!isFirstCheck && !eduYn && (
+ {!isFirstCheck && eduYn === null && (
치매교육 이수 여부를 입력해주세요
diff --git a/src/components/Auth/SignUp/helper/SignUpButton.jsx b/src/components/Auth/SignUp/helper/SignUpButton.jsx
index c381671..8a00631 100644
--- a/src/components/Auth/SignUp/helper/SignUpButton.jsx
+++ b/src/components/Auth/SignUp/helper/SignUpButton.jsx
@@ -20,10 +20,15 @@ export default function SignUpButton() {
const signUpForm = useSignUpStore((state) => state.signUpForm);
const submitSignUp = useSignUpStore((state) => state.submitHelper);
- const { setIsFirstCheck } = useSignUpStore();
+ const setIsFirstCheck = useSignUpStore((state) => state.setIsFirstCheck);
+ const setIsEmailFirstCheck = useSignUpStore((state) => state.setIsEmailFirstCheck);
+ // const { setIsFirstCheck, setIsEmailFirstCheck } = useSignUpStore();
const handleNext = async () => {
- setIsFirstCheck(false);
+ if (currentStep === 0) {
+ setIsEmailFirstCheck(false);
+ } else if (currentStep === 1) setIsFirstCheck(false);
+
if (currentStep === 2) {
// 만약 선택된 자격증이 있다면, 그 항목 하위의 모든 필드가 입력되었는지 체크
const incomplete = Object.entries(signUpForm.licenseInfo).find(([key, certData]) => {
diff --git a/src/components/Auth/SignUp/helper/SignUpComplete.jsx b/src/components/Auth/SignUp/helper/SignUpComplete.jsx
index 4ba1da8..bd3ba24 100644
--- a/src/components/Auth/SignUp/helper/SignUpComplete.jsx
+++ b/src/components/Auth/SignUp/helper/SignUpComplete.jsx
@@ -9,8 +9,8 @@ export default function SignUpComplete() {
navigate('/signin');
};
- const handleInfo = () => {
- navigate('/helper/account');
+ const handleHome = () => {
+ navigate('/');
};
return (
@@ -33,8 +33,8 @@ export default function SignUpComplete() {
-
diff --git a/src/components/helper/Matching/CompleteDetail.jsx b/src/components/helper/Matching/CompleteDetail.jsx
index d901dbd..1776080 100644
--- a/src/components/helper/Matching/CompleteDetail.jsx
+++ b/src/components/helper/Matching/CompleteDetail.jsx
@@ -33,6 +33,8 @@ export default function CompleteDetail({ patientLogSeq, returnPath }) {
);
useEffect(() => {
+ window.scrollTo(0, 0);
+
setHeaderProps({
type: 'back',
title: '어르신 상세정보',
@@ -111,7 +113,10 @@ export default function CompleteDetail({ patientLogSeq, returnPath }) {
-
+
state.getHelperSeq);
useEffect(() => {
+ window.scrollTo(0, 0);
setHeaderProps({
type: 'back',
title: '어르신 상세정보',
@@ -163,7 +164,10 @@ export default function RequestDetail({ patientLogSeq, returnPath }) {
-
+
diff --git a/src/pages/helper/AccountEdit/AccountEdit.jsx b/src/pages/helper/AccountEdit/AccountEdit.jsx
index 1033023..9d0f14d 100644
--- a/src/pages/helper/AccountEdit/AccountEdit.jsx
+++ b/src/pages/helper/AccountEdit/AccountEdit.jsx
@@ -36,7 +36,7 @@ export default function AccountEdit() {
const { helper } = useHelperAccountStore();
useEffect(() => {
- setHeaderProps({ type: 'back', title: '나의 계정' });
+ setHeaderProps({ type: 'back', title: '나의 계정', onBack: () => navigate('/helper/account') });
return () => {
clearHeaderProps();
};
@@ -48,18 +48,6 @@ export default function AccountEdit() {
const handleSave = async () => {
try {
- // 모든 Store의 현재 상태로 새 프로필 생성
- const newProfile = {
- // ...editedProfile,
- // pay: {
- // amount: selectedPay,
- // type: payType,
- // },
- // careTypes: selectedTypes,
- // locations: selectedDistricts,
- // schedules: schedules,
- };
-
await request('put', '/helper/complete-profile', {
introduce: helper.introduce,
careExperience: helper.careExperience,
diff --git a/src/pages/helper/AccountEdit/CareerSection.jsx b/src/pages/helper/AccountEdit/CareerSection.jsx
index aff0e11..22c5947 100644
--- a/src/pages/helper/AccountEdit/CareerSection.jsx
+++ b/src/pages/helper/AccountEdit/CareerSection.jsx
@@ -17,10 +17,18 @@ const CareExperienceSelector = () => {
className='flex items-center gap-8'
value={helper.careExperience} // Zustand에서 직접 가져옴
>
-
+
신입
-
+
경력
diff --git a/src/pages/helper/HelperAddress.jsx b/src/pages/helper/HelperAddress.jsx
index ddd8a03..6e97f21 100644
--- a/src/pages/helper/HelperAddress.jsx
+++ b/src/pages/helper/HelperAddress.jsx
@@ -6,7 +6,7 @@ export default function HelperAddress() {
return (
{
diff --git a/src/store/auth/helper/useSignUpStore.js b/src/store/auth/helper/useSignUpStore.js
index b222133..8e8ac91 100644
--- a/src/store/auth/helper/useSignUpStore.js
+++ b/src/store/auth/helper/useSignUpStore.js
@@ -1,6 +1,7 @@
import { create } from 'zustand';
import { omit } from '@/utils/omit';
import { signUpHelper, uploadHelperImg } from '@/services/signUpService';
+import { devtools } from 'zustand/middleware';
// 선택 해제 시 key 삭제
function removeLicenseField(licenseInfo, key) {
@@ -61,6 +62,7 @@ const createHelperDataSlice = (set) => ({
kakaoUser: null,
},
isFirstCheck: true,
+ isEmailFirstCheck: true,
setEmailAuth: (data) =>
set((state) => ({
@@ -138,6 +140,8 @@ const createHelperDataSlice = (set) => ({
})),
setIsFirstCheck: (newBool) => set({ isFirstCheck: newBool }),
+ setIsEmailFirstCheck: (newBool) => set({ isEmailFirstCheck: newBool }),
+
reset: () =>
set({
signUpForm: {
@@ -258,9 +262,11 @@ const createHelperSubmissionSlice = (set, get) => ({
},
});
-export const useSignUpStore = create((set, get) => ({
- ...createHelperDataSlice(set),
- ...createHelperSubmissionSlice(set, get),
-}));
+export const useSignUpStore = create(
+ devtools((set, get) => ({
+ ...createHelperDataSlice(set),
+ ...createHelperSubmissionSlice(set, get),
+ })),
+);
export default useSignUpStore;
diff --git a/src/store/helper/useHelperAccoutStore.js b/src/store/helper/useHelperAccoutStore.js
index 1480415..80a085d 100644
--- a/src/store/helper/useHelperAccoutStore.js
+++ b/src/store/helper/useHelperAccoutStore.js
@@ -1,64 +1,67 @@
import { create } from 'zustand';
import { persist } from 'zustand/middleware';
+import { devtools } from 'zustand/middleware';
-const useHelperAccountStore = create((set) => ({
- helper: {
- id: 1,
- userEmail: 'emailAddress@gmail.com',
- name: 'tempName',
- phone: '010-0000-0000',
- addressDetail: '서울특별시 강남구',
- img: null,
- helperWorkLocation: [],
- helperWorkTime: [],
- careLevel: 0,
- inmateState: 0,
- workType: 0,
- careGender: 0,
- serviceMeal: 0,
- serviceMobility: 0,
- serviceDaily: 0,
- certificates: [
- {
- certName: '',
- certNum: '',
- certDateIssue: null,
- certSerialNum: null,
- },
- ],
- carOwnYn: true,
- eduYn: false,
- wage: null,
- wageState: null,
- introduce: '',
- careExperience: false,
- wageNegotiation: null,
- },
+const useHelperAccountStore = create(
+ devtools((set) => ({
+ helper: {
+ id: 1,
+ userEmail: 'emailAddress@gmail.com',
+ name: 'tempName',
+ phone: '010-0000-0000',
+ addressDetail: '서울특별시 강남구',
+ img: null,
+ helperWorkLocation: [],
+ helperWorkTime: [],
+ careLevel: 0,
+ inmateState: 0,
+ workType: 0,
+ careGender: 0,
+ serviceMeal: 0,
+ serviceMobility: 0,
+ serviceDaily: 0,
+ certificates: [
+ {
+ certName: '',
+ certNum: '',
+ certDateIssue: null,
+ certSerialNum: null,
+ },
+ ],
+ carOwnYn: true,
+ eduYn: false,
+ wage: null,
+ wageState: null,
+ introduce: '',
+ careExperience: false,
+ wageNegotiation: null,
+ },
- workTypeNames: [],
+ workTypeNames: [],
- setPart: (newPart) => set((state) => ({ helper: { ...state.helper, ...newPart } })),
- setHelper: (newInfo) => set(() => ({ helper: newInfo })),
+ setPart: (newPart) => set((state) => ({ helper: { ...state.helper, ...newPart } })),
+ setHelper: (newInfo) => set(() => ({ helper: newInfo })),
- addWorkTypeNames: (newNames) =>
- set((state) => ({ workTypeNames: [...state.workTypeNames, newNames] })),
- deleteWorkTypeName: (removingItem) =>
- set((state) => ({
- workTypeNames: state.workTypeNames.filter((item) => item !== removingItem),
- })),
- setWorkTypeNames: (newArr) => set({ workTypeNames: newArr }),
+ addWorkTypeNames: (newNames) =>
+ set((state) => ({ workTypeNames: [...state.workTypeNames, newNames] })),
+ deleteWorkTypeName: (removingItem) =>
+ set((state) => ({
+ workTypeNames: state.workTypeNames.filter((item) => item !== removingItem),
+ })),
+ setWorkTypeNames: (newArr) => set({ workTypeNames: newArr }),
- addCertificate: (newItem) =>
- set((state) => ({
- helper: { ...state.helper, certificates: [...state.helper.certificates, newItem] },
- })),
- deleteCertificate: (deleted) =>
- set((state) => ({
- helper: {
- ...state.helper,
- certificates: state.helper.certificates.filter((x) => x.certName !== deleted),
- },
- })),
-}));
+ addCertificate: (newItem) =>
+ set((state) => ({
+ helper: { ...state.helper, certificates: [...state.helper.certificates, newItem] },
+ })),
+ deleteCertificate: (deleted) =>
+ set((state) => ({
+ helper: {
+ ...state.helper,
+ certificates: state.helper.certificates.filter((x) => x.certName !== deleted),
+ },
+ })),
+ })),
+);
export default useHelperAccountStore;