건설현장 관리 > 발주기관계정 > 발주기관 계정 신규 등록 처리

main
유지인 2026-01-08 15:47:02 +09:00
parent e0ef2e9069
commit 3c39a493bb
7 changed files with 627 additions and 115 deletions

View File

@ -4,6 +4,7 @@ import java.io.IOException;
import java.io.OutputStream; import java.io.OutputStream;
import java.io.UnsupportedEncodingException; import java.io.UnsupportedEncodingException;
import java.net.URLEncoder; import java.net.URLEncoder;
import java.security.SecureRandom;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.Date; import java.util.Date;
import java.util.HashMap; import java.util.HashMap;
@ -37,6 +38,7 @@ import geoinfo.admins.user.service.DrillingInquiryService;
import geoinfo.admins.user.service.GeneralUserMngService; import geoinfo.admins.user.service.GeneralUserMngService;
import geoinfo.admins.user.service.HomeTrainingService; import geoinfo.admins.user.service.HomeTrainingService;
import geoinfo.com.EgovExcel; import geoinfo.com.EgovExcel;
import geoinfo.comm.util.ScriptUtil;
import geoinfo.comm.util.strUtil; import geoinfo.comm.util.strUtil;
import geoinfo.session.UserInfo; import geoinfo.session.UserInfo;
import geoinfo.util.ExcelMergeHeaderUtil; import geoinfo.util.ExcelMergeHeaderUtil;
@ -667,6 +669,86 @@ public class ConstructionProjectManagementController {
return "admins/constructionProjectManagement/construction-user-mgmt-index"; return "admins/constructionProjectManagement/construction-user-mgmt-index";
} }
/**
*
* @param params
* @param model
* @param response
* @param request
* @return
* @throws Exception
*/
@RequestMapping(value = "admins/client/05_addUser.do")
public String showAddClientPopop(@RequestParam HashMap<String, Object> params, ModelMap model, HttpServletResponse response, HttpServletRequest request) throws Exception {
if( !UserInfo.isValidSession(request, response, "admin")) {
return "";
}
// 지역 목록
JSONObject jsonObj = new JSONObject();
List<EgovMap> gDis = masterService.getUserGDisList(params);
jsonObj.put("gDis", gDis);
model.put("result", jsonObj);
return "admins/constructionProjectManagement/05_addUser";
}
/**
* -
* @param request
* @param params
* @param response
* @return
* @throws Exception
*/
@RequestMapping(value = "admins/client/duplChk.do", method = RequestMethod.POST, produces = { "application/json; charset=utf-8" })
@ResponseBody
public Map<String, Object> clientDuplChk(HttpServletRequest request, @RequestParam HashMap<String, Object> params, HttpServletResponse response) throws Exception {
if (!UserInfo.isValidSession(request, response, "admin")) {
return null;
}
Map<String, Object> result = new HashMap<>();
EgovMap resultMap = masterService.selectInfoDuplClient(params);
result.put("duplCnt", resultMap.get("duplCnt"));
return result;
}
/**
*
* @param request
* @param params
* @param response
* @return
* @throws Exception
*/
@RequestMapping(value = "admins/client/insert.do", method = RequestMethod.POST)
@ResponseBody
public Map<String, Object> insertClient(HttpServletRequest request, @RequestParam HashMap<String, Object> params, HttpServletResponse response) throws Exception {
if (!UserInfo.isValidSession(request, response, "admin")) {
return null;
}
strUtil sUtil = new strUtil();
String pass2 = "";
String pass = sUtil.checkNull((String)params.get("passwd"));
pass2 = ScriptUtil.getSha256(pass, "UTF-8").substring(0, 20);
params.put("encPasswd", pass2);
Map<String, Object> result = new HashMap<>();
int resultCnt = masterService.insertWebMemberInClient(params);
result.put("resultCnt", resultCnt);
return result;
}
/** /**
* > * >
* @param params * @param params

View File

@ -16,6 +16,10 @@ public interface GeneralUserMngMapper {
public EgovMap selectInfo(HashMap<String, Object> params) throws Exception; public EgovMap selectInfo(HashMap<String, Object> params) throws Exception;
public EgovMap selectInfoDuplClient(HashMap<String, Object> params) throws Exception;
public int insertWebMemberInClient(HashMap<String, Object> params) throws Exception;
public void selectAccessInfo(HashMap<String, Object> params) throws Exception; public void selectAccessInfo(HashMap<String, Object> params) throws Exception;
public void selectDeleteInfo(HashMap<String, Object> params) throws Exception; public void selectDeleteInfo(HashMap<String, Object> params) throws Exception;
@ -51,4 +55,6 @@ public interface GeneralUserMngMapper {
public List<EgovMap> selectUserLoginHistory(HashMap<String, Object> params) throws Exception; public List<EgovMap> selectUserLoginHistory(HashMap<String, Object> params) throws Exception;
String findProjectMasterCompanyNameByUserid(String userId); String findProjectMasterCompanyNameByUserid(String userId);
List<EgovMap> getUserGDisList(HashMap<String, Object> params) throws Exception;
} }

View File

@ -14,6 +14,10 @@ public interface GeneralUserMngService {
public EgovMap selectInfo(HashMap<String, Object> params) throws Exception; public EgovMap selectInfo(HashMap<String, Object> params) throws Exception;
public EgovMap selectInfoDuplClient(HashMap<String, Object> params) throws Exception;
public int insertWebMemberInClient(HashMap<String, Object> params) throws Exception;
public void selectAccessInfo(HashMap<String, Object> params) throws Exception; public void selectAccessInfo(HashMap<String, Object> params) throws Exception;
public void selectDeleteInfo(HashMap<String, Object> params) throws Exception; public void selectDeleteInfo(HashMap<String, Object> params) throws Exception;
@ -48,4 +52,6 @@ public interface GeneralUserMngService {
public List<EgovMap> selectUserLoginHistory(HashMap<String, Object> params) throws Exception; public List<EgovMap> selectUserLoginHistory(HashMap<String, Object> params) throws Exception;
public List<EgovMap> getUserGDisList(HashMap<String, Object> params) throws Exception;
} }

View File

@ -33,6 +33,16 @@ public class GeneralUserMngServiceImpl implements GeneralUserMngService {
return masterMapper.selectInfo(params); return masterMapper.selectInfo(params);
} }
@Override
public EgovMap selectInfoDuplClient(HashMap<String, Object> params) throws Exception {
return masterMapper.selectInfoDuplClient(params);
}
@Override
public int insertWebMemberInClient(HashMap<String, Object> params) throws Exception {
return masterMapper.insertWebMemberInClient(params);
}
@Override @Override
public void selectAccessInfo(HashMap<String, Object> params) throws Exception { public void selectAccessInfo(HashMap<String, Object> params) throws Exception {
masterMapper.selectAccessInfo(params); masterMapper.selectAccessInfo(params);
@ -118,4 +128,8 @@ public class GeneralUserMngServiceImpl implements GeneralUserMngService {
return masterMapper.selectUserLoginHistory(params); return masterMapper.selectUserLoginHistory(params);
} }
@Override
public List<EgovMap> getUserGDisList(HashMap<String, Object> params) throws Exception {
return masterMapper.getUserGDisList(params);
}
} }

View File

@ -141,6 +141,21 @@
]]> ]]>
</select> </select>
<select id="selectInfoDuplClient" parameterType="map" resultType="egovMap">
SELECT COUNT(*) AS dupl_cnt
FROM WEB_MEMBER_IN M
WHERE M.CLS = '2'
AND M.USERID = #{userId}
</select>
<insert id="insertWebMemberInClient" parameterType="map">
INSERT INTO WEB_MEMBER_IN (
USERID, PASSWD, USER_NAME, COMPANY_NAME, EMAIL, CLS, PROJECT_MASTER_COMPANY_CODE, LAST_LOGIN_DATE, LOGIN_COUNT, AGREEYN, ENCRYPT_CHANGE, LIQ_YN, GOVEMENT_CODE, CERTIFICATION_YN
) VALUES(
#{userid}, #{encPasswd}, #{userName}, #{companyName}, #{email}, '2', #{projectMasterCompanyCode}, SYSDATE, 0, 'Y', 'Y', 'N', 0, 0
)
</insert>
<insert id="selectAccessInfo" parameterType="map"> <insert id="selectAccessInfo" parameterType="map">
<![CDATA[ <![CDATA[
INSERT INTO TBL_ACCESS_LOG (USERID, IPADD, REGDATE, DEPARTMENT, MENU, WORK, ACCESS_ID) INSERT INTO TBL_ACCESS_LOG (USERID, IPADD, REGDATE, DEPARTMENT, MENU, WORK, ACCESS_ID)
@ -482,4 +497,53 @@
#{v_gf, mode=OUT, jdbcType=VARCHAR} #{v_gf, mode=OUT, jdbcType=VARCHAR}
) } ) }
</select> </select>
<select id="getUserGDisList" parameterType="map" resultType="egovMap">
<![CDATA[
SELECT 'GL_DIS' CODE,
GL_CODE AS CODE_VALUE,
DISTRICT AS CODE_TEXT,
'GL_DIS' PARENT_CODE,
GL_CODE AS PARENT_CODE_VALUE
FROM TBL_DISTRICT
WHERE GM_CODE IS NULL
AND USE_YN = 'Y'
UNION
SELECT 'GM_DIS' CODE,
GM_CODE AS CODE_VALUE,
DISTRICT AS CODE_TEXT,
'GL_DIS' PARENT_CODE,
GL_CODE AS PARENT_CODE_VALUE
FROM TBL_DISTRICT
WHERE GS_CODE IS NULL
AND GM_CODE IS NOT NULL
AND GL_CODE<>'00'
AND GM_CODE<>'00'
AND USE_YN = 'Y'
UNION
SELECT 'GS_DIS' CODE,
GS_CODE AS CODE_VALUE,
DISTRICT AS CODE_TEXT,
'GL_DIS'||'GM_DIS' PARENT_CODE,
GL_CODE||GM_CODE AS PARENT_CODE_VALUE
FROM TBL_DISTRICT
WHERE GF_CODE IS NULL
AND GS_CODE IS NOT NULL
AND GL_CODE<>'00'
AND GM_CODE<>'00'
AND GS_CODE<>'000'
AND USE_YN = 'Y'
UNION
SELECT 'GF_DIS' CODE,
GF_CODE AS CODE_VALUE,
DISTRICT AS CODE_TEXT,
'GL_DIS'||'GM_DIS'||'GF_DIS' AS PARENT_CODE,
GL_CODE||GM_CODE||GS_CODE AS PARENT_CODE_VALUE
FROM TBL_DISTRICT
WHERE GF_CODE IS NOT NULL
AND USE_YN = 'Y'
AND GF_CODE <> '0000'
ORDER BY CODE_TEXT
]]>
</select>
</mapper> </mapper>

View File

@ -5,69 +5,377 @@
<html> <html>
<head> <head>
<title>사용자 추가</title> <title>국토지반정보 포털 관리시스템</title>
<meta http-equiv="Context-Type" content="text/html; charset=utf-8"> <meta http-equiv="Context-Type" content="text/html; charset=utf-8">
<script type="text/javaScript" src="/web/js/common.js"></script>
<script src ="${pageContext.request.contextPath}/js/jquery/jquery.min.js"></script> <script src ="${pageContext.request.contextPath}/js/jquery/jquery.min.js"></script>
<!--<script src ="${pageContext.request.contextPath}/js/jquery/jquery-1.10.2.min.js"></script> --> <!--<script src ="${pageContext.request.contextPath}/js/jquery/jquery-1.10.2.min.js"></script> -->
<script src ="${pageContext.request.contextPath}/js/admins/user.js"></script> <script src ="${pageContext.request.contextPath}/js/admins/user.js"></script>
<link rel="stylesheet" HREF="${pageContext.request.contextPath}/css/admins/style.css" type="text/css"> <link rel="stylesheet" HREF="${pageContext.request.contextPath}/css/admins/style.css" type="text/css">
<style type="text/css"> <style type="text/css">
<!--
body body
{ {
margin-left:0; /* margin-left:0; */
margin-top:0; /* margin-top:0; */
margin-right:0; /* margin-right:0; */
margin-bottom:0; /* margin-bottom:0; */
background-color: #f5f6fa;
}
.table-container {
display: flex;
align-items: center;
justify-content: space-between; /* 제목 왼쪽, 스위치 오른쪽 */
margin-top: 25px; background: #fff; border-radius: 12px; padding: 20px;
box-shadow: 0 2px 8px rgba(0,0,0,0.05);
}
.container-header, .btn-container {
display: flex; justify-content: flex-end; align-items: center; margin: 15px 0;
}
table { width: 100%; border-collapse: collapse; }
thead { background: #f0f3f8; }
th, td { position:relative; padding: 10px; /* border-bottom: 1px solid #eee; */ text-align: left; }
th { color: #555; font-weight: 600; vertical-align: top }
.addClientForm td p.error {
position: absolute;
bottom: -18px;
font-size: 11px;
left: 15px;
color:#10398e;
}
.addClientForm input, .addClientForm select {
width: 200px;
border: 1px solid #d1d1d1;
font-size: 14px;
line-height: 14px;
padding: 6px 14px;
resize: none;
}
.td_client_dis select:not(:nth-child(4)) {
margin-bottom: 17px;
}
/* 강제로 focus-visible 느낌 주기 */
.force-focus-visible:focus,
.force-focus-visible.focus-visible {
outline: 2px solid #4d90fe; /* 원하는 강조색 */
outline-offset: 2px;
}
button {
border: none;
transition: .2s;
}
.addClientForm button {
width: 85px;
height: 30px;
background-color: #255aab;
font-size: 13px;
color: #fff;
font-weight: 400;
line-height: 30px;
cursor: pointer;
}
/* 계정등록 버튼 */
.btn-container {
display: flex;
justify-content: flex-end;
}
.btn-container button {
width: 115px;
height: 30px;
background-color: #255aab;
border-radius: 18px;
font-size: 15px;
color: #fff;
font-weight: 400;
line-height: 30px;
cursor: pointer;
}
.btn-container button:hover,
.addClientForm button:hover {
background-color: #70a9ff;
} }
-->
</style> </style>
<script type="text/javaScript" > <script type="text/javaScript" >
let idDuplChkFlag = false;
let master_val = ""; // 계정등록 발주처 코드
let company_nm_val = "" // 계정등록 발주처 회사명
var context = "${pageContext.request.contextPath}"; var context = "${pageContext.request.contextPath}";
function fn_onSelChangeRegion(){ $(document).ready(function() {
// 시도 선택에 따른 시,군,구 리스트 갱신 bindEvent();
var selectedIdx = document.getElementById("SEARCH_REGION").selectedIndex; })
if( selectedIdx > 0 ) { // 이벤트 매핑 정의
fn_onSelChangeRegionSgg(selectedIdx); function bindEvent() {
// 중복체크 버튼 클릭
$('#clientDuplChkBtn').bind('click', function() {
clientDuplChk();
})
// 등록 버튼 클릭
$('#addClient').bind('click', function() {
addClient();
})
}
//발주처
function fn_onSelChangeGDis(code, subcd, selFrm, frm, depth) {
var subCode = "";
if(selFrm.selectedIndex > -1)
subCode = selFrm.options[selFrm.selectedIndex].value;
if (depth == "3") {
subCode = $("#PROJECT_MASTER_COMPANY_O_CODE option:selected").val() + $("#PROJECT_MASTER_COMPANY_TW_CODE option:selected").val();
}
if (depth == "4") {
subCode = $("#PROJECT_MASTER_COMPANY_O_CODE option:selected").val() + $("#PROJECT_MASTER_COMPANY_TW_CODE option:selected").val();
subCode = subCode + $("#PROJECT_MASTER_COMPANY_TH_CODE option:selected").val();
}
var no = 0;
frm.options[no] = new Option('-', '');
frm.disabled = true;
no++;
var gDis = JSON.parse('${result}');
gDis = gDis.gDis;
for (var i = 0; i < gDis.length; i++) {
if (code == gDis[i].parentCode && subcd == gDis[i].code && subCode == gDis[i].parentCodeValue) {
frm.options[no] = new Option(gDis[i].codeText, gDis[i].codeValue);
no++;
} }
} }
function clearSgg(){ frm.length = no;
document.getElementById("SEARCH_REGION_SGG").options.length=1; frm.selectedIndex = 0;
document.getElementById("SEARCH_REGION_SGG").options[0] = new Option('-', '');
if ($("#PROJECT_MASTER_COMPANY_O_CODE option").size() > 1) {
//for( var i = document.getElementById("SEARCH_REGION_SGG").options.lenght-1; i > 0; i--) $("#PROJECT_MASTER_COMPANY_O_CODE").removeAttr("disabled");
//{ }
// document.getElementById("SEARCH_REGION_SGG").options[i]=null; if ($("#PROJECT_MASTER_COMPANY_TW_CODE option").size() > 1) {
//} $("#PROJECT_MASTER_COMPANY_TW_CODE option:eq(0)").text("선택");
$("#PROJECT_MASTER_COMPANY_TW_CODE").removeAttr("disabled");
}
if ($("#PROJECT_MASTER_COMPANY_TH_CODE option").size() > 1) {
$("#PROJECT_MASTER_COMPANY_TH_CODE option:eq(0)").text("선택");
$("#PROJECT_MASTER_COMPANY_TH_CODE").removeAttr("disabled");
}
if ($("#PROJECT_MASTER_COMPANY_F_CODE option").size() > 1) {
$("#PROJECT_MASTER_COMPANY_F_CODE option:eq(0)").text("선택");
$("#PROJECT_MASTER_COMPANY_F_CODE").removeAttr("disabled");
} }
function fn_onSelChangeRegionSgg(selectedIdx){ }
var code = document.getElementById("SEARCH_REGION").options[selectedIdx].value;
//발주처 1depth 선택시
function fn_onSelChangeGDisInit(num) {
if (document.getElementById("PROJECT_MASTER_COMPANY_O_CODE").selectedIndex == 0) { //직접입력
$("select[id='PROJECT_MASTER_COMPANY_TW_CODE'] option").remove();
}
if (num == 1) {
$("select[id='PROJECT_MASTER_COMPANY_TH_CODE'] option").remove();
$("#PROJECT_MASTER_COMPANY_TH_CODE").attr("disabled", "true");
$("select[id='PROJECT_MASTER_COMPANY_F_CODE'] option").remove();
$("#PROJECT_MASTER_COMPANY_F_CODE option:eq(0)").text("-");
$("#PROJECT_MASTER_COMPANY_F_CODE").attr("disabled", "true");
} else if (num == 2) {
$("select[id='PROJECT_MASTER_COMPANY_F_CODE'] option").remove();
$("#PROJECT_MASTER_COMPANY_F_CODE option:eq(0)").text("-");
$("#PROJECT_MASTER_COMPANY_F_CODE").attr("disabled", "true");
}
}
// 아이디 중복체크
function clientDuplChk() {
var userId = $('#client_id').val();
if(userId == "") {
$('.td_client_id .error').remove()
$('.td_client_id').append('<p class="error">아이디 입력 후 중복체크를 진행해주세요.</p>')
return;
} else {
$('.td_client_id .error').remove()
}
$.ajax({ $.ajax({
type : "POST", type : "POST",
url : "05_getLocCodeSgg.json", url : "/admins/client/duplChk.do",
data : { code : code }, data : { userId : userId },
dataType : "json", dataType : "json",
success:function(json){ success:function(json){
resultData = json.RESULT_KEY; if(json.duplCnt != 0) {
if( resultData == "Success" ) { $('.td_client_id .error').remove()
// 리스트 삭제 / 갱신 $('.td_client_id').append('<p class="error">중복되는 아이디가 존재합니다.</p>')
clearSgg(); idDuplChkFlag = false;
// 시, 군, 구 리스트 갱신
for (var i = 0; i < json.locationSgg.length; i++) {
document.getElementById("SEARCH_REGION_SGG").options[i+1] = new Option(json.locationSgg[i].name, json.locationSgg[i].code);
}
} else { } else {
//alert(xhr.status); // 오류 코드 alert("사용 가능한 아이디입니다.");
//alert(error); // 오류 내용 idDuplChkFlag = true;
}
},
error : function( xhr, option, error ) {
alert(xhr.status); // 오류 코드
alert(error); // 오류 내용
}
});
}
function validEle(ele) {
$(ele).parents('td').find('.error').remove();
if ($(ele).hasClass('client_id')) {
idDuplChkFlag = false;
$('.td_client_id .error').remove();
$('.td_client_id').append('<p class="error">아이디 입력 후 중복체크를 진행해주세요.</p>');
}
}
function validForm() {
$('.error').remove()
let valid_id = false; // 아이디 검증결과
let valid_pwd = false; // 비밀번호 검증결과
let valid_nm = false; // 이름 검증결과
let valid_email = false; // 이메일 검증결과
let valid_master = false; // 발주처 검증결과
let id_val = $('#client_id').val();
let pwd_val = $('#client_pwd').val();
let nm_val = $('#client_nm').val();
let email_val = $('#client_email').val();
let master_o_val = $('#PROJECT_MASTER_COMPANY_O_CODE > option:selected').val();
let master_tw_val = $('#PROJECT_MASTER_COMPANY_TW_CODE > option:selected').val();
let master_th_val = $('#PROJECT_MASTER_COMPANY_TH_CODE > option:selected').val();
let master_f_val = $('#PROJECT_MASTER_COMPANY_F_CODE > option:selected').val();
// 발주처 선택 유효성검사
if ((!$('#PROJECT_MASTER_COMPANY_O_CODE').prop('disabled')) && "" == $('#PROJECT_MASTER_COMPANY_O_CODE').val()) { // 선택해야하는데 선택하지 않음
valid_master = false;
$('.td_client_dis').append('<p class="error">발주처를 선택해주세요.</p>')
$('#PROJECT_MASTER_COMPANY_O_CODE').focus().addClass('force-focus-visible');
} else { // 선택할 option이 없음 또는 선택 하였음
valid_master = true;
master_val = master_o_val ? master_o_val : master_val; // option에서 선택 했을경우에만 변수 갱신
}
// 발주처 선택 유효성검사
if ((!$('#PROJECT_MASTER_COMPANY_TW_CODE').prop('disabled')) && "" == $('#PROJECT_MASTER_COMPANY_TW_CODE').val()) { // 선택해야하는데 선택하지 않음
valid_master = false;
$('.td_client_dis').append('<p class="error">발주처를 선택해주세요.</p>')
$('#PROJECT_MASTER_COMPANY_TW_CODE').focus().addClass('force-focus-visible');
} else { // 선택할 option이 없음 또는 선택 하였음
if (master_o_val) { // undefined 이거나 ""
valid_master = true;
master_val = master_tw_val ? master_tw_val : master_val; // option에서 선택 했을경우에만 변수 갱신
}
}
// 발주처 선택 유효성검사
if ((!$('#PROJECT_MASTER_COMPANY_TH_CODE').prop('disabled')) && "" == $('#PROJECT_MASTER_COMPANY_TH_CODE').val()) { // 선택해야하는데 선택하지 않음
valid_master = false;
$('.td_client_dis').append('<p class="error">발주처를 선택해주세요.</p>')
$('#PROJECT_MASTER_COMPANY_TH_CODE').focus().addClass('force-focus-visible');
} else { // 선택할 option이 없음 또는 선택 하였음
if (master_o_val && master_tw_val ) { // undefined 이거나 ""
valid_master = true;
master_val = master_th_val ? master_th_val : master_val; // option에서 선택 했을경우에만 변수 갱신
}
}
// 발주처 선택 유효성검사
if ((!$('#PROJECT_MASTER_COMPANY_F_CODE').prop('disabled')) && "" == $('#PROJECT_MASTER_COMPANY_F_CODE').val()) { // 선택해야하는데 선택하지 않음
valid_master = false;
$('.td_client_dis').append('<p class="error">발주처를 선택해주세요.</p>')
$('#PROJECT_MASTER_COMPANY_F_CODE').focus().addClass('force-focus-visible');
} else { // 선택할 option이 없음 또는 선택 하였음
if (master_o_val && master_tw_val && master_th_val ) { // undefined 이거나 ""
valid_master = true;
master_val = master_f_val ? master_f_val : master_val; // option에서 선택 했을경우에만 변수 갱신
}
}
// 발주처 코드값 취득
if ((!$('#PROJECT_MASTER_COMPANY_O_CODE').prop('disabled'))) company_nm_val = $('#PROJECT_MASTER_COMPANY_O_CODE > option:selected').text()
if ((!$('#PROJECT_MASTER_COMPANY_TW_CODE').prop('disabled'))) company_nm_val = $('#PROJECT_MASTER_COMPANY_TW_CODE > option:selected').text()
if ((!$('#PROJECT_MASTER_COMPANY_TH_CODE').prop('disabled'))) company_nm_val = $('#PROJECT_MASTER_COMPANY_TH_CODE > option:selected').text()
if ((!$('#PROJECT_MASTER_COMPANY_F_CODE').prop('disabled'))) company_nm_val = $('#PROJECT_MASTER_COMPANY_F_CODE > option:selected').text()
// 이메일 유효성검사
if(email_val == "") {
$('.td_client_email').append('<p class="error">이메일을 입력해주세요.</p>')
$('#client_email').focus();
} else {
valid_email = true;
}
// 이름 유효성검사
if(nm_val == "") {
$('.td_client_nm').append('<p class="error">이름을 입력해주세요.</p>')
$('#client_nm').focus();
} else {
valid_nm = true;
}
// 비밀번호 유효성검사
if(pwd_val == "") {
$('.td_client_pwd').append('<p class="error">비밀번호를 입력해주세요.</p>')
$('#client_pwd').focus();
} else {
valid_pwd = true;
}
// 아이디 유효성검사
if(id_val == "") {
$('.td_client_id').append('<p class="error">아이디 입력 후 중복체크를 진행해주세요.</p>')
$('#client_id').focus();
} else {
if(!idDuplChkFlag) {
$('.td_client_id').append('<p class="error">아이디 중복체크를 진행해주세요.</p>')
$('#clientDuplChkBtn').focus();
} else {
valid_id = true;
}
}
if((!idDuplChkFlag || !valid_id || !valid_pwd || !valid_nm || !valid_email || !valid_master)) { // 유효성검사 FAIL
return false;
}
return true;
}
// 발주기관 계정 신규 등록
function addClient() {
if (!(validForm())) {
return false;
};
$.ajax({
type : "POST",
url : "/admins/client/insert.do",
data : {
userid : $('#client_id').val(),
passwd : $('#client_pwd').val(),
userName : $('#client_nm').val(),
companyName: company_nm_val,
email : $('#client_email').val(),
projectMasterCompanyCode: master_val
},
dataType : "json",
success:function(json){
if(json.resultCnt != 0) {
alert("발주기관 신규 계정이 등록되었습니다.");
window.close();
} else {
alert("발주기관 신규 계정이 등록처리를 실패했습니다. 다시 시도해주시기 바랍니다.");
} }
}, },
error : function( xhr, option, error ) { error : function( xhr, option, error ) {
@ -230,79 +538,73 @@ body
<body> <body>
<%-- <table id="Table_Main" width="100%" height=240 border=0 cellpadding=0 cellspacing=0 background="${pageContext.request.contextPath}/images/admins/user/user_detail_back.gif"> --%> <div class="table-container">
<table id="Table_Main" width="100%" height=240 border=0 cellpadding=0 cellspacing=0 background=""> <h3>발주기관 계정 신규 등록</h3>
<tr> </div>
<td width=21 rowspan=4>&nbsp;</td>
<td height=39><img src="${pageContext.request.contextPath}/images/admins/user/user_detail_title.gif"></td>
<td width=12 rowspan=4>&nbsp;</td>
</tr>
<tr>
<td valign=top>
<table id="Table_Info" width=100% border=0 cellpadding=0 cellspacing=0 bgcolor="#CACACA">
<tr height=25 align="right">
<td bgcolor="#FFFFFF" class="list_content" valign=middle> <div class="table-container">
추가 아이디 : <form class="addClientForm" name="addClientForm" method="post">
<input id = "SEARCH_USER" name = "SEARCH_USER" onChange="fn_onSearchChangeEvent()" type="text" style="width: 25%;" maxlength="25%" /> <table class="Table_Main course-list-table">
<a href="#" onClick="fn_onUserInfoEvent()"><img src="/images/join/btn_search.gif" alt="추가" /></a> <colgroup>
<col style="width:100px;">
<col style="width:auto;">
</colgroup>
<tbody id="">
<tr>
<th class="th-head">아이디</th>
<td class="t-left td_client_id">
<input name="client_id" type="text" class="client_id" id="client_id" maxlength="10" value="" placeholder="아이디를 입력해주세요" onChange="javascript:validEle(this);">
<button id="clientDuplChkBtn" type="button">중복체크</button>
</td> </td>
</tr> </tr>
</table> <tr>
<table id="Table_Info" width=100% border=0 cellpadding=0 cellspacing=1 bgcolor="#CACACA"> <th class="th-head">비밀번호</th>
<tr height=25 bgcolor="#F5F5F5" align=center class="list_head2"> <td class="t-left td_client_pwd">
<td width=25%>아이디</td> <input name="client_pwd" type="text" class="client_pwd" id="client_pwd" value="" placeholder="비밀번호를 입력해주세요" onChange="validEle(this)">
<td width=25%>이름</td> </td>
<td width=25%>회사</td>
<td width=25%>연락처</td>
</tr> </tr>
<tr height=25 bgcolor="#FFFFFF" align=center class="list_content"> <tr>
<td border=0><input type="text" id="SEARCH_USERID" name = "SEARCH_USERID" class="readonly" readonly="readonly" style="width: 90%;" ></td> <th class="th-head">이름</th>
<td><input type="text" id="SEARCH_USER_NAME" name = "SEARCH_USER_NAME" class="readonly" readonly="readonly" style="width: 90%;"></td> <td class="t-left td_client_nm">
<td><input type="text" id="SEARCH_COMPANY_NAME" name = "SEARCH_COMPANY_NAME" class="readonly" readonly="readonly" style="width: 90%;"></td> <input name="text" type="text" class="client_nm" id="client_nm" value="" placeholder="이름을 입력해주세요" onChange="validEle(this)">
<td><input type="text" id="SEARCH_PHONE" name = "SEARCH_PHONE" class="readonly" readonly="readonly" style="width: 90%;"></td> </td>
</tr> </tr>
</table> <tr>
<table id="Table_Info" width=100% border=0 cellpadding=0 cellspacing=1 bgcolor="#CACACA"> <th class="th-head">이메일</th>
<tr height=25 bgcolor="#F5F5F5" align=center class="list_head2"> <td class="t-left td_client_email">
<td width=25%>시작일</td> <input name="text" type="text" class="client_email" id="client_email" value="" placeholder="아메일을 입력해주세요" onChange="validEle(this)">
<td width=25%>종료일</td> </td>
<td width=25%>지역선택(시,도)</td>
<td width=25%>지역선택(시,군,구)</td>
</tr> </tr>
<tr height=25 bgcolor="#FFFFFF" align=center class="list_content"> <tr>
<td><input id="startDate" name="startDate" type="text" value="" style="width: 75%;" maxlength="8" onKeyPress="submitEvent()" /> <th class="th-head">발주처</th>
<a href="#" onclick="fn_CalPopupDiv1('startDate','fromCalImg','calenderDiv');return false;"><img src="${pageContext.request.contextPath}/images/web/icon_calendar.png" id="fromCalImg" style="margin-top: -5px;" /></a></td> <td class="t-left td_client_dis">
<td><input id="endDate" name="endDate" type="text" value="" style="width: 75%;" maxlength="8" onKeyPress="submitEvent()" /> <select name="PROJECT_MASTER_COMPANY_O_CODE" id="PROJECT_MASTER_COMPANY_O_CODE" onChange="fn_onSelChangeGDis('GL_DIS','GM_DIS',this, document.addClientForm.PROJECT_MASTER_COMPANY_TW_CODE,'2');fn_onSelChangeGDisInit(1);" >
<a href="#" onclick="fn_CalPopupDiv1('endDate','toCalImg','calenderDiv');return false;"><img src="${pageContext.request.contextPath}/images/web/icon_calendar.png" id="toCalImg" style="margin-top: -5px;" /></a></td> <option value="">발주처 선택</option>
<td > <c:forEach var="item" items="${result.gDis}">
<select name="SEARCH_REGION" id = "SEARCH_REGION" style="width: 90%;" onChange="fn_onSelChangeRegion()" class="selectbox"> <c:if test="${item.code == 'GL_DIS' &&item.codeValue != '06' &&item.codeValue != '00'}">
<option value="0">-</option> <option value="${item.codeValue}">${item.codeText}</option>
<c:forEach var = "item" items="${result.location}"> </c:if>
<option value="${item.code}">${item.name}</option>
</c:forEach> </c:forEach>
</select> </select>
</td> <select name="PROJECT_MASTER_COMPANY_TW_CODE" id="PROJECT_MASTER_COMPANY_TW_CODE" onChange="fn_onSelChangeGDis('GL_DISGM_DIS','GS_DIS',this, document.addClientForm.PROJECT_MASTER_COMPANY_TH_CODE,'3');fn_onSelChangeGDisInit(2);" disabled><option value="">-</option></select>
<td > <select name="PROJECT_MASTER_COMPANY_TH_CODE" id="PROJECT_MASTER_COMPANY_TH_CODE" onChange="fn_onSelChangeGDis('GL_DISGM_DISGF_DIS','GF_DIS',this, document.addClientForm.PROJECT_MASTER_COMPANY_F_CODE,'4')" disabled><option value="">-</option></select>
<select name="SEARCH_REGION_SGG" id = "SEARCH_REGION_SGG" style="width: 90%;" onChange="fn_onSelChangeRegionSgg()" class="selectbox"> <select name="PROJECT_MASTER_COMPANY_F_CODE" id="PROJECT_MASTER_COMPANY_F_CODE" disabled><option value="">-</option></select>
<option value="0">-</option>
</select>
</td> </td>
</tr> </tr>
<%-- <tr>
<th class="th-head">회사명</th>
<td class="t-left td_client_company">
<input name="text" type="text" class="client_company_nm" id="client_company_nm" value="" placeholder="회사명을 입력해주세요" onChange="validEle(this)">
</td>
</tr> --%>
</tbody>
</table> </table>
</form>
</div>
</td> <div class="btn-container">
</tr> <button type="button" id="addClient">등록</button>
<tr> </div>
<td valign=top align="center">
<img src="${pageContext.request.contextPath}/images/admins/cus_bnt_save.gif" style="cursor:hand" onClick="javascript:fn_onInsertUser();">
<img src="${pageContext.request.contextPath}/images/admins/cus_bnt_cancel.gif" style="cursor:hand" onClick="javascript:window.close();">
</td>
</tr>
<tr height=10><td>&nbsp;</td></tr>
</table>
<div id="calenderDiv" class="trViewOff" style="position: absolute;"></div>
</body> </body>
</html> </html>

View File

@ -111,7 +111,42 @@ $(function(){
searchTitle = searchTitle == "" ? "0" : searchTitle; searchTitle = searchTitle == "" ? "0" : searchTitle;
$("#searchTitle").val(searchTitle); $("#searchTitle").val(searchTitle);
}); });
// 발주기관 등록
function addClientPopup() {
var url = context + "/admins/client/05_addUser.do";
addUser = window.open(url, 'addClient','scrollbars=no,titlebar=no,width=500, height=680',true);
addUser.focus();
}
</script> </script>
<style>
/* button reset */
button {
border: none;
transition: .2s;
}
/* 계정등록 버튼 */
.btn-container {
display: flex;
justify-content: flex-end;
}
.btn-container button {
width: 115px;
height: 30px;
background-color: #255aab;
border-radius: 18px;
font-size: 15px;
color: #fff;
font-weight: 400;
line-height: 30px;
cursor: pointer;
}
.btn-container button:hover {
background-color: #70a9ff;
}
/* 계정등록 버튼 END */
</style>
</head> </head>
<body> <body>
<form id="searchForm" name="searchForm" method="post"> <form id="searchForm" name="searchForm" method="post">
@ -197,6 +232,9 @@ $(function(){
<!-- END : 네비게이션 ----------------------------------------------------------------------------> <!-- END : 네비게이션 ---------------------------------------------------------------------------->
</tr> </tr>
</table> </table>
<div class="btn-container">
<button type="button" onClick="javascript:addClientPopup()">계정등록</button>
</div>
</form> </form>
</body> </body>
</html> </html>