|
@@ -8,7 +8,7 @@
|
|
|
{{ getMemberTypeName(userInfo.memberType) === "인플루언서" ? '❤️' : '💜' }}
|
|
{{ getMemberTypeName(userInfo.memberType) === "인플루언서" ? '❤️' : '💜' }}
|
|
|
</div>
|
|
</div>
|
|
|
<div class="profile-info">
|
|
<div class="profile-info">
|
|
|
- <h2>{{ userInfo.name }}</h2>
|
|
|
|
|
|
|
+ <h2>{{ userInfo.companyName || userInfo.nickName || userInfo.name }}</h2>
|
|
|
<span class="member-type-badge">{{ getMemberTypeName(userInfo.memberType) }}</span>
|
|
<span class="member-type-badge">{{ getMemberTypeName(userInfo.memberType) }}</span>
|
|
|
</div>
|
|
</div>
|
|
|
<button
|
|
<button
|
|
@@ -43,7 +43,7 @@
|
|
|
<label>전화번호</label>
|
|
<label>전화번호</label>
|
|
|
<span>{{ myInfo.phone || '미등록' }}</span>
|
|
<span>{{ myInfo.phone || '미등록' }}</span>
|
|
|
</div>
|
|
</div>
|
|
|
- <div class="info-row">
|
|
|
|
|
|
|
+ <div class="info-row" v-if="userInfo.memberType === 'INFLUENCER'">
|
|
|
<label>SNS</label>
|
|
<label>SNS</label>
|
|
|
<span>{{ myInfo.sns_type || '미등록' }} {{ myInfo.sns_link || '미등록' }}</span>
|
|
<span>{{ myInfo.sns_type || '미등록' }} {{ myInfo.sns_link || '미등록' }}</span>
|
|
|
</div>
|
|
</div>
|
|
@@ -82,14 +82,23 @@
|
|
|
class="edit-input"
|
|
class="edit-input"
|
|
|
/>
|
|
/>
|
|
|
</div>
|
|
</div>
|
|
|
- <div class="info-row">
|
|
|
|
|
|
|
+ <div class="info-row email-row" v-if="userInfo.memberType !== 'INFLUENCER'">
|
|
|
<label>이메일</label>
|
|
<label>이메일</label>
|
|
|
- <input
|
|
|
|
|
- type="email"
|
|
|
|
|
- v-model="editForm.email"
|
|
|
|
|
- placeholder="이메일을 입력하세요"
|
|
|
|
|
- class="edit-input"
|
|
|
|
|
- />
|
|
|
|
|
|
|
+ <div class="email-container">
|
|
|
|
|
+ <input
|
|
|
|
|
+ type="text"
|
|
|
|
|
+ v-model="editForm.emailLocal"
|
|
|
|
|
+ placeholder="이메일"
|
|
|
|
|
+ class="edit-input email-local"
|
|
|
|
|
+ />
|
|
|
|
|
+ <span>@</span>
|
|
|
|
|
+ <input
|
|
|
|
|
+ type="text"
|
|
|
|
|
+ v-model="editForm.emailDomain"
|
|
|
|
|
+ placeholder="이메일"
|
|
|
|
|
+ class="edit-input email-local"
|
|
|
|
|
+ />
|
|
|
|
|
+ </div>
|
|
|
</div>
|
|
</div>
|
|
|
<div class="info-row" v-if="userInfo.memberType !== 'INFLUENCER'">
|
|
<div class="info-row" v-if="userInfo.memberType !== 'INFLUENCER'">
|
|
|
<label>회사명</label>
|
|
<label>회사명</label>
|
|
@@ -100,16 +109,35 @@
|
|
|
class="edit-input"
|
|
class="edit-input"
|
|
|
/>
|
|
/>
|
|
|
</div>
|
|
</div>
|
|
|
- <div class="info-row">
|
|
|
|
|
|
|
+ <div class="info-row phone-row">
|
|
|
<label>전화번호</label>
|
|
<label>전화번호</label>
|
|
|
- <input
|
|
|
|
|
- type="tel"
|
|
|
|
|
- v-model="editForm.phone"
|
|
|
|
|
- placeholder="전화번호를 입력하세요"
|
|
|
|
|
- class="edit-input"
|
|
|
|
|
- />
|
|
|
|
|
|
|
+ <div class="phone-container">
|
|
|
|
|
+ <input
|
|
|
|
|
+ type="tel"
|
|
|
|
|
+ v-model="editForm.phone1"
|
|
|
|
|
+ placeholder="010"
|
|
|
|
|
+ class="edit-input phone-part"
|
|
|
|
|
+ maxlength="3"
|
|
|
|
|
+ />
|
|
|
|
|
+ <span>-</span>
|
|
|
|
|
+ <input
|
|
|
|
|
+ type="tel"
|
|
|
|
|
+ v-model="editForm.phone2"
|
|
|
|
|
+ placeholder="1234"
|
|
|
|
|
+ class="edit-input phone-part"
|
|
|
|
|
+ maxlength="4"
|
|
|
|
|
+ />
|
|
|
|
|
+ <span>-</span>
|
|
|
|
|
+ <input
|
|
|
|
|
+ type="tel"
|
|
|
|
|
+ v-model="editForm.phone3"
|
|
|
|
|
+ placeholder="5678"
|
|
|
|
|
+ class="edit-input phone-part"
|
|
|
|
|
+ maxlength="4"
|
|
|
|
|
+ />
|
|
|
|
|
+ </div>
|
|
|
</div>
|
|
</div>
|
|
|
- <div class="info-row sns--row">
|
|
|
|
|
|
|
+ <div class="info-row sns--row" v-if="userInfo.memberType === 'INFLUENCER'">
|
|
|
<label>SNS</label>
|
|
<label>SNS</label>
|
|
|
<select v-model="editForm.snsType" class="edit-input">
|
|
<select v-model="editForm.snsType" class="edit-input">
|
|
|
<option value="">선택하세요</option>
|
|
<option value="">선택하세요</option>
|
|
@@ -117,9 +145,7 @@
|
|
|
<option value="instagram">인스타그램</option>
|
|
<option value="instagram">인스타그램</option>
|
|
|
<option value="naver">네이버 블로그</option>
|
|
<option value="naver">네이버 블로그</option>
|
|
|
<option value="tiktok">틱톡</option>
|
|
<option value="tiktok">틱톡</option>
|
|
|
- <option value="facebook">페이스북</option>
|
|
|
|
|
<option value="twitter">트위터</option>
|
|
<option value="twitter">트위터</option>
|
|
|
- <option value="blog">개인 블로그</option>
|
|
|
|
|
</select>
|
|
</select>
|
|
|
<div class="edit-input-container">
|
|
<div class="edit-input-container">
|
|
|
<input
|
|
<input
|
|
@@ -222,9 +248,12 @@ import "@vuepic/vue-datepicker/dist/main.css";
|
|
|
const editForm = ref({
|
|
const editForm = ref({
|
|
|
name: '',
|
|
name: '',
|
|
|
nickName: '',
|
|
nickName: '',
|
|
|
- email: '',
|
|
|
|
|
|
|
+ emailLocal: '',
|
|
|
|
|
+ emailDomain: null,
|
|
|
companyName: '',
|
|
companyName: '',
|
|
|
- phone: '',
|
|
|
|
|
|
|
+ phone1: '',
|
|
|
|
|
+ phone2: '',
|
|
|
|
|
+ phone3: '',
|
|
|
snsType: '',
|
|
snsType: '',
|
|
|
snsLink: '',
|
|
snsLink: '',
|
|
|
newPassword: '',
|
|
newPassword: '',
|
|
@@ -255,12 +284,21 @@ import "@vuepic/vue-datepicker/dist/main.css";
|
|
|
isEditMode.value = false;
|
|
isEditMode.value = false;
|
|
|
} else {
|
|
} else {
|
|
|
// 편집 시작 - 현재 값으로 폼 초기화
|
|
// 편집 시작 - 현재 값으로 폼 초기화
|
|
|
|
|
+ const currentEmail = myInfo.value.email || userInfo.value.email || '';
|
|
|
|
|
+ const [emailLocal, emailDomain] = currentEmail.includes('@') ? currentEmail.split('@') : [currentEmail, ''];
|
|
|
|
|
+
|
|
|
|
|
+ const currentPhone = myInfo.value.phone || userInfo.value.phone || '';
|
|
|
|
|
+ const phoneParts = currentPhone.split('-');
|
|
|
|
|
+
|
|
|
editForm.value = {
|
|
editForm.value = {
|
|
|
name: myInfo.value.name || userInfo.value.name,
|
|
name: myInfo.value.name || userInfo.value.name,
|
|
|
nickName: myInfo.value.nickName || '',
|
|
nickName: myInfo.value.nickName || '',
|
|
|
- email: myInfo.value.email || userInfo.value.email,
|
|
|
|
|
|
|
+ emailLocal: emailLocal,
|
|
|
|
|
+ emailDomain: emailDomain || null,
|
|
|
companyName: userInfo.value.companyName || '',
|
|
companyName: userInfo.value.companyName || '',
|
|
|
- phone: myInfo.value.phone || userInfo.value.phone,
|
|
|
|
|
|
|
+ phone1: phoneParts[0] || '',
|
|
|
|
|
+ phone2: phoneParts[1] || '',
|
|
|
|
|
+ phone3: phoneParts[2] || '',
|
|
|
snsType: myInfo.value.sns_type || '',
|
|
snsType: myInfo.value.sns_type || '',
|
|
|
snsLink: myInfo.value.sns_link || '',
|
|
snsLink: myInfo.value.sns_link || '',
|
|
|
newPassword: '',
|
|
newPassword: '',
|
|
@@ -292,26 +330,35 @@ import "@vuepic/vue-datepicker/dist/main.css";
|
|
|
let req = {
|
|
let req = {
|
|
|
MEMBER_TYPE: useAtStore.auth.memberType,
|
|
MEMBER_TYPE: useAtStore.auth.memberType,
|
|
|
MEMBER_SEQ: useAtStore.auth.seq,
|
|
MEMBER_SEQ: useAtStore.auth.seq,
|
|
|
- EMAIL: editForm.value.email,
|
|
|
|
|
- PHONE: editForm.value.phone,
|
|
|
|
|
|
|
+ EMAIL: `${editForm.value.emailLocal}@${editForm.value.emailDomain || ''}`,
|
|
|
|
|
+ COMPANY_NAME: editForm.value.companyName,
|
|
|
SNS_TYPE: editForm.value.snsType,
|
|
SNS_TYPE: editForm.value.snsType,
|
|
|
SNS_LINK_ID: editForm.value.snsLink
|
|
SNS_LINK_ID: editForm.value.snsLink
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
// 패스워드가 입력된 경우에만 추가
|
|
// 패스워드가 입력된 경우에만 추가
|
|
|
if (editForm.value.newPassword.trim()) {
|
|
if (editForm.value.newPassword.trim()) {
|
|
|
req.PASSWORD = editForm.value.newPassword;
|
|
req.PASSWORD = editForm.value.newPassword;
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
|
|
+ // 전화번호 조합
|
|
|
|
|
+ const combinedPhone = `${editForm.value.phone1}-${editForm.value.phone2}-${editForm.value.phone3}`;
|
|
|
|
|
+
|
|
|
// 인플루언서인 경우 닉네임 추가
|
|
// 인플루언서인 경우 닉네임 추가
|
|
|
if (userInfo.value.memberType === 'INFLUENCER') {
|
|
if (userInfo.value.memberType === 'INFLUENCER') {
|
|
|
|
|
+ req.PHONE = combinedPhone;
|
|
|
req.NICK_NAME = editForm.value.nickName;
|
|
req.NICK_NAME = editForm.value.nickName;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ // 인플루언서/벤더&브랜드사 테이블 내 연락처 컬럼명이 상이해 별도로 처리
|
|
|
|
|
+ if (userInfo.value.memberType !== 'INFLUENCER') {
|
|
|
|
|
+ req.HP = combinedPhone;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
useAxios().post('/mypage/update', req).then(async (res) => {
|
|
useAxios().post('/mypage/update', req).then(async (res) => {
|
|
|
// 로컬 데이터 업데이트
|
|
// 로컬 데이터 업데이트
|
|
|
- myInfo.value.email = editForm.value.email;
|
|
|
|
|
- myInfo.value.phone = editForm.value.phone;
|
|
|
|
|
|
|
+ myInfo.value.email = `${editForm.value.emailLocal}@${editForm.value.emailDomain || ''}`;
|
|
|
|
|
+ myInfo.value.phone = combinedPhone;
|
|
|
myInfo.value.sns_type = editForm.value.snsType;
|
|
myInfo.value.sns_type = editForm.value.snsType;
|
|
|
myInfo.value.sns_link = editForm.value.snsLink;
|
|
myInfo.value.sns_link = editForm.value.snsLink;
|
|
|
|
|
|
|
@@ -320,11 +367,17 @@ import "@vuepic/vue-datepicker/dist/main.css";
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// 스토어도 업데이트
|
|
// 스토어도 업데이트
|
|
|
- useAtStore.auth.email = editForm.value.email;
|
|
|
|
|
- useAtStore.auth.phone = editForm.value.phone;
|
|
|
|
|
|
|
+ useAtStore.auth.email = `${editForm.value.emailLocal}@${editForm.value.emailDomain || ''}`;
|
|
|
|
|
+ useAtStore.auth.phone = combinedPhone;
|
|
|
|
|
+ if (userInfo.value.memberType !== 'INFLUENCER') {
|
|
|
|
|
+ useAtStore.auth.companyName = editForm.value.companyName;
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
$toast.success('프로필이 성공적으로 수정되었습니다.');
|
|
$toast.success('프로필이 성공적으로 수정되었습니다.');
|
|
|
isEditMode.value = false;
|
|
isEditMode.value = false;
|
|
|
|
|
+
|
|
|
|
|
+ // 페이지 새로고침 (F5)
|
|
|
|
|
+ location.reload();
|
|
|
})
|
|
})
|
|
|
};
|
|
};
|
|
|
|
|
|
|
@@ -365,11 +418,11 @@ import "@vuepic/vue-datepicker/dist/main.css";
|
|
|
myInfo.value.id = res.data.ID;
|
|
myInfo.value.id = res.data.ID;
|
|
|
myInfo.value.name = res.data.NAME;
|
|
myInfo.value.name = res.data.NAME;
|
|
|
myInfo.value.nickName = res.data.NICK_NAME;
|
|
myInfo.value.nickName = res.data.NICK_NAME;
|
|
|
- myInfo.value.phone = res.data.PHONE;
|
|
|
|
|
|
|
+ myInfo.value.phone = res.data.PHONE || res.data.HP;
|
|
|
myInfo.value.sns_type = res.data.SNS_TYPE;
|
|
myInfo.value.sns_type = res.data.SNS_TYPE;
|
|
|
myInfo.value.sns_link = res.data.SNS_LINK_ID;
|
|
myInfo.value.sns_link = res.data.SNS_LINK_ID;
|
|
|
myInfo.value.email = res.data.EMAIL;
|
|
myInfo.value.email = res.data.EMAIL;
|
|
|
- myInfo.value.regDate = res.data.REGDATE;
|
|
|
|
|
|
|
+ myInfo.value.regDate = res.data.REGDATE || res.data.REG_DATE;
|
|
|
})
|
|
})
|
|
|
};
|
|
};
|
|
|
|
|
|
|
@@ -646,5 +699,33 @@ import "@vuepic/vue-datepicker/dist/main.css";
|
|
|
font-size: 1rem;
|
|
font-size: 1rem;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+/* 이메일 입력 스타일 */
|
|
|
|
|
+.email-container {
|
|
|
|
|
+ display: flex;
|
|
|
|
|
+ align-items: center;
|
|
|
|
|
+ gap: 8px;
|
|
|
|
|
+ flex: 1;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.email-local {
|
|
|
|
|
+ width: 20%;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.email-domain {
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+/* 전화번호 입력 스타일 */
|
|
|
|
|
+.phone-container {
|
|
|
|
|
+ display: flex;
|
|
|
|
|
+ align-items: center;
|
|
|
|
|
+ gap: 8px;
|
|
|
|
|
+ width: 20%;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.phone-part {
|
|
|
|
|
+ flex: 1;
|
|
|
|
|
+ text-align: center;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
|
|
|
</style>
|
|
</style>
|