-
-
-
- - 1. 회원 탈퇴 시 영남건설기술교육원의 모든 서비스를 이용하실 수 없습니다.
- - 2. 탈퇴신청된 아이디는 영구적으로 재가입이 불가능합니다.
- - 3. 탈퇴시 현재 수강중인 동영상 강의를 수강하실 수 없습니다.
- - 4. 위 내용 확인 후 교육원으로 전화주시면 회원탈퇴를 도와 드리겠습니다.
- - 문의 : 1544-7660
-
- @*
탈퇴사유
-
-
*@
+
+@**@
+
+
+
+
+
회원탈퇴 안내
+
+
+
+ 회원탈퇴 시 주의사항
+
+
+ - 1. 회원탈퇴 후 교육신청 내역 및 수강 정보, 입금관련 정보 등 모든 내역의 확인이 불가능합니다.
+ - 2. 회원탈퇴 후 교육을 수료한 경우 수료관련 정보(수료증 발급, 수료확인 등)가 더 이상 홈페이지 상에서 확인이 불가능 합니다.
+ - 3. 회원탈퇴 후 동영상 시청이 불가능 합니다.
+ - 4. 회원탈퇴 후 그 외 저희 교육원 홈페이지에서 제공하는 모든 서비스를 이용하실 수 없습니다.
+ - 5. 회원탈퇴 후 회원탈퇴를 다시 취소할 수 없습니다.
+
+
+
+ 개인정보 삭제 불가 항목 안내
+
+
+ - 회원탈퇴 완료 후에도 교육수료정보는 관련법에 근거하여 삭제가 불가능하오니 꼭 참고하시기 바랍니다.
+ - - 개인정보보호법 제36조 1항
+ - - 건설기술진흥법 시행령 제117조의2 1항
+
-
+
+
+
+
+
+
+@**@
+
@Html.Partial("./Partial/BoxAssign", null, new ViewDataDictionary { { "bindmethod", "bindassign" } })
@section scriptsHeader{
@Html.Partial("./Partial/ScriptPost")
@@ -249,7 +357,7 @@
var referrer = document.referrer;
if (referrer.toLowerCase().indexOf('myinfocheck') > 0 || referrer.toLowerCase().indexOf('snslinkcallback') > 0) {
selectTab("sns");
-
+
}
$("input:radio[name='isCompany']").on("click", function () {
@@ -266,10 +374,10 @@
}
});
- $("#userpno2").on("keyup", function () {
+ $("#userpno2").on("keyup", function () {
setbirthday(val("userpno1") + val("userpno2"));
});
- });
+ });
function chkassign() {
var isCompany = $("input:radio[name='isCompany']:checked").val();
if (isCompany == "1") {
@@ -277,9 +385,9 @@
}
}
function setbirthday(userpno) {
- var birthday = "";
+ var birthday = "";
if (userpno.length == 13 && moment(userpno.substr(0, 6), 'YYMMDD', true).isValid() && userpno.substr(6, 1) > 0)
- {
+ {
switch (userpno.substr(6, 1))
{
case "1":
@@ -310,7 +418,7 @@
break;
}
- birthday += userpno.substr(0, 2) + "-" + userpno.substr(2, 2) + "-" + userpno.substr(4, 2);
+ birthday += userpno.substr(0, 2) + "-" + userpno.substr(2, 2) + "-" + userpno.substr(4, 2);
}
if (val("birthday") == "" && birthday != "") {
$("#txtbirthday").text(birthday.replace(/-/gi, "."));
@@ -356,13 +464,65 @@
cap("/fcommon/UserPassCheck", "mform", "save2");
}
} else if (idx == 0) {
- $('html, body').addClass('lock');
- $("#pop1").fadeIn("fast");
+ //$('html, body').addClass('lock');
+ //$("#pop1").fadeIn("fast");
+ leavePopupOpen();
} else if (idx == -1) {
- confirmtoggle(true, "탈퇴를 진행하시겠습니까?", "gogo()");
+
+ if (!$('#agreeLeave').is(':checked')) {
+ mpgPopClose();
+ msg(
+ '주의사항에 동의 하셔야 탈퇴가 가능합니다.',
+ 10,
+ false,
+ '',
+ 'leavePopupOpen()',
+ 0,
+ false);
+ }
+ else {
+ mpgPopClose();
+ confirmtoggle(
+ true,
+ "탈퇴를 진행하시겠습니까?",
+ "gogo()",
+ "",
+ "100px"
+ );
+ }
}
}
+ function leavePopupOpen() {
+ $('html, body').addClass('lock'); // 스크롤 잠금
+ // #pop1 (전체 오버레이) 설정
+ $("#pop1").css({
+ "position": "fixed",
+ "top": "0",
+ "left": "0",
+ "width": "100%",
+ "height": "100%",
+ "background-color": "rgba(0, 0, 0, 0.5)",
+ "z-index": "9999",
+ "display": "block"
+ }).hide();
+
+ $(".mpgPopWrap").css({
+ "position": "absolute",
+ "top": "-200px", // 시작 위치: 화면 상단에서 200px 위
+ "left": "50%", // 가로 중앙으로 정렬
+ "transform": "translateX(-50%)", // 정확한 가로 중앙 정렬
+ "opacity": "0" // 초기 투명도 0으로 설정하여 페이드인 효과 준비
+ });
+
+ $("#pop1").fadeIn("fast", function () {
+ $(".mpgPopWrap").animate({
+ "top": "10%", // 화면 중앙까지 내려옴
+ "opacity": "1" // 완전 불투명하게
+ }, "fast");
+ });
+ }
+
function save2() {
if (capResult.obj == 0) {
cap("/fcommon/usersave", "mform", "cbsave");
@@ -372,16 +532,30 @@
}
}
+ @*/** 탈퇴진행 */*@
function gogo() {
- capp("/fcommon/userexit", { exitreason: val("exitreason") }, "cbexit");
+ capp(
+ "/fcommon/userexit",
+ { exitreason: val("exitreason") },
+ "cbexit");
}
+
+ @*/** 탈퇴진행 > 콜백 */*@
function cbexit() {
if (capResult.code == 1000) {
- msg("탈퇴처리되었습니다.", null, null, null, "location.href='/Account/Logout';");
- } else {
+ msg(
+ "회원탈퇴가 접수되었습니다.
탈퇴 완료까지 평일 기준 1일 정도 소요될 예정입니다.",
+ null,
+ null,
+ null,
+ "window.location.href='/Account/Logout';"
+ );
+ }
+ else {
msgadmin();
}
}
+
function cbsave() {
if (capResult.code == 1000) {
msg("저장되었습니다.");
@@ -481,4 +655,4 @@
}
@*header가 아니라 하단에 위치해야 읽어올수있음*@
-}
+}
\ No newline at end of file
diff --git a/FO/js/site.js b/FO/js/site.js
index 4837916..b63e47b 100644
--- a/FO/js/site.js
+++ b/FO/js/site.js
@@ -1142,6 +1142,21 @@ function clearComma() {
var _focusitem;
var _focusitem2;
var _okm;
+
+/**
+ * 사용자에게 메시지를 표시하고, 특정 동작을 수행하거나 특정 HTML 요소에 초점을 맞추는 범용 메시지 상자 함수입니다.
+ *
+ * @param {string} m - **표시할 메시지 내용**입니다. 사용자에게 보여줄 핵심 텍스트입니다.
+ * @param {number} [t=10] - 메시지 상자가 나타나기 전의 **지연 시간** (밀리초)입니다. 기본값은 `10` 밀리초입니다. 이 시간 후에 배경 레이어와 메시지 레이어가 표시됩니다.
+ * @param {boolean} [bging=false] - 메시지 상자 뒤에 **배경 레이어를 표시할지 여부**입니다. `true`로 설정하면 배경이 함께 나타납니다. 기본값은 `false`입니다.
+ * @param {string} [fi=""] - 메시지 확인 후 **초점을 맞출 HTML 요소의 선택자**입니다.
+ * - `""` (빈 문자열)인 경우: 함수 호출 시 현재 **초점이 맞춰져 있는 입력, 선택 또는 텍스트 영역 요소**에 초점을 다시 맞춥니다.
+ * - `"x"`인 경우: **아무 요소에도 초점을 맞추지 않습니다.**
+ * - 다른 유효한 선택자 (예: `"#myInput"`, `".someClass"`): 해당 선택자와 일치하는 요소에 초점을 맞춥니다.
+ * @param {string} [okm=""] - 메시지 상자의 "확인" 버튼 클릭 시 **실행할 JavaScript 코드** (문자열)입니다. 이 문자열은 `eval()` 함수를 통해 실행됩니다. 비어있는 문자열인 경우 `fi` 매개변수에 따라 초점 요소를 처리합니다.
+ * @param {number} [okmt=0] - `okm`에 코드가 있을 경우, 해당 코드를 **자동으로 실행할 지연 시간** (밀리초)입니다. 이 시간이 지나면 "확인" 버튼을 누르지 않아도 `okm`의 코드가 실행됩니다. 기본값은 `0` (즉시 실행)입니다.
+ * @param {boolean} [hidebtn=false] - "확인" 버튼을 **숨길지 여부**입니다. `true`로 설정하면 "확인" 버튼이 표시되지 않습니다. 기본값은 `false`입니다.
+ */
function msg(m, t, bging, fi, okm, okmt, hidebtn) {
okmt = okmt || 0;
hidebtn = hidebtn || false;
@@ -1181,6 +1196,16 @@ function msg(m, t, bging, fi, okm, okmt, hidebtn) {
msglayer(m, bging);
}, t);
}
+/**
+ * 사용자에게 메시지를 표시하고 확인 후 특정 HTML 요소에 초점을 다시 맞추는 보조 메시지 상자 함수입니다.
+ * 'msg' 함수와는 별개의 메시지 레이어(`layermessage2`)를 사용합니다.
+ *
+ * @param {string} m - **표시할 메시지 내용**입니다. 사용자에게 보여줄 핵심 텍스트입니다.
+ * @param {number} [t=0] - 메시지 상자가 나타나기 전의 **지연 시간** (밀리초)입니다. 기본값은 `0` 밀리초입니다. 이 시간 후에 배경 레이어와 메시지 레이어가 표시됩니다.
+ * @param {string} [fi=""] - 메시지 확인 후 **초점을 맞출 HTML 요소의 선택자**입니다.
+ * - `""` (빈 문자열)인 경우: 함수 호출 시 현재 **초점이 맞춰져 있는 입력, 선택 또는 텍스트 영역 요소**에 초점을 다시 맞춥니다.
+ * - 다른 유효한 선택자 (예: `"#anotherInput"`, `".usernameField"`): 해당 선택자와 일치하는 요소에 초점을 맞춥니다.
+ */
function msg2(m, t, fi) {
_focusitem2 = (fi || "") == "" ? $("input:focus, select:focus, textarea:focus") : $(fi);
$("#layermessage2 a.mainokbutton2").on("click", function () {
@@ -1369,23 +1394,52 @@ function isRepeatedString(str) {
}
-
-
-function confirmtoggle(b, m, cb, cbcancel) {
+/**
+ * 확인(Confirm) 상자를 토글(표시/숨김)하고, 사용자의 응답에 따라 특정 콜백 함수를 실행합니다.
+ * 이 함수는 일반적으로 사용자에게 확인 메시지를 보여주고 "예" 또는 "아니오"와 같은 선택을 요구할 때 사용됩니다.
+ *
+ * @param {boolean} [b=false] - 확인 상자를 **표시할지(`true`) 숨길지(`false`) 여부**입니다. `true`면 상자가 나타나고, `false`면 상자가 사라집니다. 기본값은 `false`입니다.
+ * @param {string} m - 확인 상자에 **표시될 메시지 내용**입니다. 사용자에게 보여줄 질문이나 안내 텍스트입니다. (상자가 표시될 때만 유효)
+ * @param {string} [cb="confirmokpage()"] - 사용자가 확인 상자에서 "확인" 또는 긍정적인 응답을 선택했을 때 **실행할 JavaScript 코드** (문자열)입니다. 이 문자열은 `eval()` 함수를 통해 실행됩니다. 기본값은 `"confirmokpage()"`입니다.
+ * @param {string} [cbcancel=""] - 사용자가 확인 상자에서 "취소" 또는 부정적인 응답을 선택했을 때 **실행할 JavaScript 코드** (문자열)입니다. 이 문자열은 `eval()` 함수를 통해 실행됩니다. 기본값은 `""` (아무것도 실행하지 않음)입니다.
+ * @param {string} [top=""] - 확인 상자의 **수직(`top`) 위치를 지정하는 CSS 값** (예: `"100px"`, `"20%"`).
+ * - `""` (빈 문자열)인 경우: 현재 CSS 또는 기본 위치 설정에 따라 상자가 표시됩니다.
+ * - 유효한 CSS `top` 값인 경우: 해당 값으로 상자의 `top` 위치가 설정됩니다. 이 기능을 사용하려면 `#confirmbox` 요소의 CSS `position` 속성이 `absolute` 또는 `fixed`로 설정되어 있어야 합니다.
+ */
+function confirmtoggle(b, m, cb, cbcancel, top) {
b = b || false;
+ top = top || ''; // top 매개변수 기본값 설정
+
if (b) {
_confirmokcb = "";
_confirmokcbcancel = "";
_confirmokcb = cb || "confirmokpage()";
_confirmokcbcancel = cbcancel || "";
$("#confirmboxmsg").html(m);
+
+
+ if (top !== '') {
+ // top 위치 설정 로직 추가
+ $("#confirmbox").css("top", top);
+ } else {
+ // top 값이 비어있을 경우, 이전에 설정된 top 속성을 제거하여
+ // CSS 파일에 정의된 기본값이나 다른 스크립트에 의해 설정된 값이 적용되도록 할 수 있습니다.
+ $("#confirmbox").css("top", '');
+ }
+
setTimeout(function () {
- bglayer(); $("#confirmbox").show();
+ bglayer();
+ $("#confirmbox").show();
}, 30);
}
else {
_bging = false;
- bglayer(false); $("#confirmbox").hide();
+ bglayer(false);
+ $("#confirmbox").hide();
+
+ // 숨길 때 top 속성 초기화
+ $("#confirmbox").css("top", '');
+
if (_confirmokcbcancel != "") {
if (_confirmokcbcancel.substr(_confirmokcbcancel.length - 1, 1) != ';' &&
_confirmokcbcancel.substr(_confirmokcbcancel.length - 1, 1) != ')' &&
@@ -1393,10 +1447,12 @@ function confirmtoggle(b, m, cb, cbcancel) {
_confirmokcbcancel.indexOf(')') < 0) {
_confirmokcbcancel += "()";
}
+
eval(_confirmokcbcancel);
}
}
}
+
var _confirmokcb;
var _confirmokcbcancel;
function confirmok() {
diff --git a/Model/Users.cs b/Model/Users.cs
index 43d28b7..a9bfe42 100644
--- a/Model/Users.cs
+++ b/Model/Users.cs
@@ -151,16 +151,26 @@ namespace NP.Model
///
public String introhtml { get; set; }
///
- /// 상태 1: 활성, 8: 휴면, 9: 비활성(정지, 삭제), 99: 탈퇴
+ /// 상태 1: 활성, 8: 휴면, 9: 비활성(정지, 삭제), 98:탈퇴신청, 99: 탈퇴
///
public int status { get; set; }
- public String statusname
+ ///
상태에 따른 한글명칭
+ public string statusname
{
get
{
- return status == 1 ? "활성" : status == 8 ? "휴면" : status == 9 ? "비활성" : "탈퇴";
+ switch (status)
+ {
+ case 1: return "활성";
+ case 8: return "휴면";
+ case 9: return "비활성";
+ case 98: return "탈퇴신청";
+ case 99: return "탈퇴";
+ default: return "";
+ }
}
}
+
///
/// 공정거래업무경력
///
@@ -701,4 +711,36 @@ namespace NP.Model
}
+ ///
+ /// 회원 탈퇴 히스토리
+ ///
+ [Serializable]
+ public class UserLeave
+ {
+ ///
탈퇴 히스토리 고유번호
+ public int levno { get; set; }
+ ///
회원 고유번호 (user 테이블 FK)
+ public int userno { get; set; }
+ ///
회원 아이디
+ public string userid { get; set; }
+ ///
회원 이름
+ public string username { get; set; }
+ ///
처리상태: 0=신청, 1=완료, 2=취소
+ public byte status { get; set; }
+
+ ///
회원상태 (1:활성, 8:휴면, 9:비활성 ,98:탈퇴신청, 99:탈퇴)
+ public int userstatus { get; set; }
+
+ ///
탈퇴 처리일시
+ public DateTime levdate { get; set; }
+ ///
탈퇴처리 회원번호
+ public long uno { get; set; }
+ ///
탈퇴 처리 IP
+ public string uip { get; set; }
+
+ ///
페이지 총 카운트
+ public int pagetotalcount { get; set; }
+ }
+
+
}
diff --git a/Model/VMUser.cs b/Model/VMUser.cs
index d06cd40..9f4a1f2 100644
--- a/Model/VMUser.cs
+++ b/Model/VMUser.cs
@@ -30,4 +30,19 @@ namespace NP.Model
///
public int logincnt { get; set; }
}
+
+
+ ///
+ /// 회원 탈퇴 히스토리 VM
+ ///
+ public class VMUsersLeave : VMBase
+ {
+ ///
처리상태 (UserLeave.status와 동일) : ""천제 "0"신청, "1"완료, "2"취소
+ public string LeaveStatus { get; set; }
+
+
+ ///
회원 탈퇴 히스토리 리스트
+ public IList
UserLeaves { get; set; }
+ }
+
}