691 lines
34 KiB
HTML
691 lines
34 KiB
HTML
<!DOCTYPE html>
|
||
<html xmlns:th="http://www.thymeleaf.org" xmlns:layout="http://www.ultraq.net.nz/web/thymeleaf/layout" layout:decorator="layout/basic">
|
||
|
||
<head>
|
||
<title th:text="#{user}"></title>
|
||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||
<!-- Spinners -->
|
||
<link rel="stylesheet" href="/css/spinners.css" th:href="@{/css/spinners.css}" />
|
||
|
||
<script src="/js/common/pagination.js" th:src="@{/js/common/pagination.js}"></script>
|
||
<script src="/js/user/userAjax.js" th:src="@{/js/user/userAjax.js}"></script>
|
||
<script src="/js/user/user.js" th:src="@{/js/user/user.js}"></script>
|
||
|
||
<script th:inline="javascript" type="text/javascript">
|
||
/*<![CDATA[*/
|
||
var getBiztpMap = [[${getBiztpMap}]] ;
|
||
var sessionRole = [[${#authentication.getPrincipal().role}]];
|
||
var sessionUsername = [[${#authentication.getPrincipal().username}]];
|
||
|
||
var i18n_vertical_bar = "'|' - "+ /*[[#{vertical.bar} ]]*/;
|
||
|
||
var i18n_msg_info_required_field ="* "+ /*[[#{msg.info.required.field}]]*/;
|
||
var i18n_msg_info_email_not_valid ="* "+ /*[[#{msg.info.email.not.valid}]]*/;
|
||
var i18n_msg_info_duplication_confirm_nead ="* "+ /*[[#{msg.info.duplication.confirm.nead}]]*/;
|
||
var i18n_msg_info_duplication_id ="* "+ /*[[#{msg.info.duplication.id}]]*/;
|
||
var i18n_msg_info_password_not_equals ="* "+ /*[[#{msg.info.password.not.equals}]]*/;
|
||
var i18n_msg_info_password_not_valid ="* "+ /*[[#{msg.info.password.not.valid}]]*/;
|
||
var i18n_msg_info_id_valid ="* "+ /*[[#{msg.info.id.valid }]]*/;
|
||
var i18n_msg_info_id_not_valid ="* "+ /*[[#{msg.info.id.not.valid}]]*/;
|
||
var i18n_msg_info_input_nodata = /*[[#{msg.info.input.nodata }]]*/;
|
||
var i18n_msg_info_not_allow_special_characters = /*[[#{msg.info.not.allow.special.characters }]]*/;
|
||
var i18n_msg_info_store_not_select = /*[[#{msg.info.store.not.select}]]*/;
|
||
var i18n_msg_info_business_conditions_not_select = /*[[#{msg.info.business.conditions.not.select}]]*/;
|
||
|
||
var i18n_msg_process_result_reg_fail = /*[[#{msg.process.result.reg.fail}]]*/;
|
||
var i18n_msg_process_result_reg_success = /*[[#{msg.process.result.reg.success}]]*/;
|
||
var i18n_msg_process_result_save_fail = /*[[#{msg.process.result.save.fail}]]*/;
|
||
var i18n_msg_process_result_save_success = /*[[#{msg.process.result.save.success}]]*/;
|
||
var i18n_msg_process_result_delete_fail = /*[[#{msg.process.result.delete.fail}]]*/;
|
||
var i18n_msg_process_result_delete_success = /*[[#{msg.process.result.delete.success}]]*/;
|
||
var i18n_msg_process_result_change_success = /*[[#{ msg.process.result.change.success}]]*/;
|
||
var i18n_msg_process_result_change_fail = /*[[#{ msg.process.result.change.fail}]]*/;
|
||
var i18n_msg_process_result_initialization_succes = /*[[#{ msg.process.result.initialization.success}]]*/;
|
||
var i18n_msg_process_result_initialization_fail = /*[[#{ msg.process.result.initialization.fail}]]*/;
|
||
var i18n_msg_process_result_check_invalid_password = /*[[#{ msg.process.result.check.invalid.password}]]*/;
|
||
var i18n_msg_process_result_check_invalid_password_same_last = /*[[#{msg.process.result.check.invalid.password.same.last}]]*/;
|
||
var i18n_msg_process_result_check_invalid_password_includes_id = /*[[#{msg.process.result.check.invalid.password.includes.id}]]*/;
|
||
var i18n_msg_process_result_check_invalid_password_eq_newpassword = /*[[#{msg.process.result.check.invalid.password.eq.newpassword}]]*/;
|
||
var i18n_msg_process_result_check_invalid_password_wrong_comfirm_password = /*[[#{msg.process.result.check.invalid.password.wrong.comfirm.password}]]*/;
|
||
var i18n_msg_process_result_check_invalid_password_min = /*[[#{msg.process.result.check.invalid.password.min}]]*/;
|
||
var i18n_msg_process_result_check_invalid_password_pipe = /*[[#{msg.process.result.check.invalid.password.pipe}]]*/;
|
||
var i18n_msg_process_result_check_invalid_password_same_3chars = /*[[#{msg.process.result.check.invalid.password.same.3chars}]]*/;
|
||
var i18n_msg_process_result_check_invalid_password_continue_3chars = /*[[#{msg.process.result.check.invalid.password.continue.3chars}]]*/;
|
||
var i18n_msg_process_result_check_invalid_password_mix_chars = /*[[#{msg.process.result.check.invalid.password.mix.chars}]]*/;
|
||
|
||
var i18n_msg_confirm_initialization_password = /*[[#{msg.confirm.initialization.password}]]*/;
|
||
var i18n_msg_confirm_delete = /*[[#{msg.confirm.delete}]]*/;
|
||
var i18n_msg_confirm_reg = /*[[#{msg.confirm.reg}]]*/;
|
||
var i18n_msg_confirm_save = /*[[#{msg.confirm.save}]]*/;
|
||
var i18n_all = /*[[#{all}]]*/;
|
||
|
||
var jsonUserAuthType = new Object();
|
||
jsonUserAuthType.ADMIN = /*[[#{user.auth.type.admin}]]*/;
|
||
jsonUserAuthType.MANAGER = /*[[#{user.auth.type.manager}]]*/;
|
||
jsonUserAuthType.USER = /*[[#{user.auth.type.user}]]*/;
|
||
|
||
function i18nUserState( userState ) {
|
||
return {
|
||
'not_conn' : /*[[#{disconnected}]]*/
|
||
, 'normal' : '-'
|
||
, 'reset' : /*[[#{password.initialization}]]*/
|
||
, 'expire' : /*[[#{password.expired}]]*/
|
||
}[ (userState || '').toLowerCase() ];
|
||
}
|
||
|
||
var group1_use_yn = [[${group1_use_yn}]];
|
||
var group2_use_yn = [[${group2_use_yn}]];
|
||
var group3_use_yn = [[${group3_use_yn}]];
|
||
var group1_name = [[${group1_name}]];
|
||
var group2_name = [[${group2_name}]];
|
||
var group3_name = [[${group3_name}]];
|
||
/*]]>*/
|
||
</script>
|
||
</head>
|
||
|
||
<div layout:fragment="content">
|
||
|
||
<br />
|
||
<div class="container-fluid">
|
||
<div class="row">
|
||
<div class="col">
|
||
|
||
<div class="card p-0">
|
||
<div class="card-header bg-custom-dark text-light">
|
||
<!-- <20>궗<EFBFBD>슜<EFBFBD>옄 -->
|
||
<div class="float-left mt-2">
|
||
<i style="font-size:16px;" class="fas fa-address-card text-secondary"></i>
|
||
<span class="h5 text-bold m-0" th:text="#{user}"></span>
|
||
</div>
|
||
<div class="float-left m-1">
|
||
<span class="badge badge-pill badge-light text-bold list-tot">-</span>
|
||
</div>
|
||
<!-- 寃<><E5AF83>깋 -->
|
||
<div class="float-right">
|
||
<div class="input-group">
|
||
<input type="text" class="form-control border border-warning" id="search_keyword" th:placeholder="#{id} + ',' + #{store.code}" />
|
||
<div class="input-group-append">
|
||
<button class="btn btn-warning border border-warning" type="button" id="btn-search"><i class="fas fa-search"></i></button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<!-- <20>럹<EFBFBD>씠吏<EC94A0> 媛<><E5AA9B>닔 -->
|
||
<div class="float-right mr-2">
|
||
<div class="input-group input-group-sm">
|
||
<div class="input-group-prepend">
|
||
<label class="input-group-text border border-warning" for="pageLimit" th:text="#{line}"></label>
|
||
</div>
|
||
<select class="custom-select border border-warning" id="pageLimit">
|
||
<option value="10" selected="selected">10</option>
|
||
<option value="20">20</option>
|
||
<option value="30">30</option>
|
||
<option value="40">40</option>
|
||
<option value="50">50</option>
|
||
</select>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- 沅뚰븳 -->
|
||
<div class="float-right mr-2">
|
||
<div class="input-group input-group-sm">
|
||
<div class="input-group-prepend">
|
||
<label class="input-group-text border border-warning" for="searchAuth" th:text="#{authorities}"></label>
|
||
</div>
|
||
<select id="searchAuth" class="custom-select border border-warning">
|
||
<option value="" th:text='#{all}'></option>
|
||
<option value="ADMIN" th:text='#{user.auth.type.admin}'></option>
|
||
<option value="MANAGER" th:text='#{user.auth.type.manager}'></option>
|
||
<option value="USER" th:text='#{user.auth.type.user}'></option>
|
||
</select>
|
||
</div>
|
||
</div>
|
||
</div><!-- .card-header -->
|
||
<div class="card-body p-0">
|
||
<!-- User List -->
|
||
<table class="table table-sm table-striped table-bordered table-hover text-center mb-0" id="userList">
|
||
<thead>
|
||
<tr >
|
||
<th rowspan='2' class="align-middle" style="cursor: pointer;"><span style="height:30px" th:text="#{no}"></span></th>
|
||
<th rowspan='2' onclick="sortData('username' , doSearch ,'','_updown')" class="align-middle" style="cursor: pointer;"><span th:text="#{id}"></span> <i id="username_updown" class="sort-updown icon-sort-up-down"></i></th>
|
||
<th rowspan='2' onclick="sortData('title' , doSearch ,'','_updown')" class="align-middle" style="cursor: pointer;"><span th:text="#{title_en}"></span> <i id="title_updown" class="sort-updown icon-sort-up-down"></i></th>
|
||
<th rowspan='2' onclick="sortData('department' , doSearch ,'','_updown')" class="align-middle" style="cursor: pointer;"><span th:text="#{department}"></span> <i id="department_updown" class="sort-updown icon-sort-up-down"></i></th>
|
||
<th rowspan='2' onclick="sortData('biztp_code' , doSearch ,'','_updown')" class="align-middle" style="cursor: pointer;width: 100px;"><span th:text="#{business.conditions}"></span> <i id="biztp_code_updown" class="sort-updown icon-sort-up-down"></i></th>
|
||
<th colspan='2' class="border-bottom-0" th:text="#{store}"></th>
|
||
<th rowspan='2' onclick="sortData('authorities' , doSearch ,'','_updown')" class="align-middle" style="cursor: pointer;"><span th:text="#{authorities}"></span> <i id="authorities_updown" class="sort-updown icon-sort-up-down"></i></th>
|
||
<th rowspan='2' onclick="sortData('user_state' , doSearch ,'','_updown')" class="align-middle" style="cursor: pointer;"><span th:text="#{status}"></span> <i id="authorities_updown" class="sort-updown icon-sort-up-down"></i></th>
|
||
<th rowspan='2' onclick="sortData('last_conn_time' , doSearch ,'','_updown')" class="align-middle" style="cursor: pointer;"><span th:text="#{last_conn_time}"></span> <i id="last_conn_time_updown" class="sort-updown icon-sort-up-down"></i></th>
|
||
<th rowspan='2' onclick="sortData('update_dtime' , doSearch ,'','_updown')" class="align-middle" style="cursor: pointer;"><span th:text="#{update.date.time}"></span> <i id="update_dtime_updown" class="sort-updown icon-sort-up-down"></i></th>
|
||
<th rowspan='2' onclick="sortData('reg_date' , doSearch ,'','_updown')" class="align-middle" style="cursor: pointer;"><span th:text="#{reg.date}"></span> <i id="reg_date_updown" class="sort-updown icon-sort-up-down"></i></th>
|
||
<th rowspan='2' class="align-middle"><span style="height:30px" th:text="#{detail}"></span></th>
|
||
</tr>
|
||
<tr>
|
||
<th onclick="sortData('str_code' , doSearch ,'','_updown')" style="cursor: pointer;" ><span th:text="#{code}"></span> <i id="str_code_updown" class="sort-updown icon-sort-up-down"></i></th>
|
||
<th onclick="sortData('str_name' , doSearch ,'','_updown')" style="cursor: pointer;" ><span th:text="#{name}"></span> <i id="str_name_updown" class="sort-updown icon-sort-up-down"></i></th>
|
||
</tr>
|
||
</thead>
|
||
<tbody class="spinner-1">
|
||
<!-- fill temp space -->
|
||
<th:block th:each="i, index: ${#numbers.sequence(1, 10)}">
|
||
<tr class="table-secondary">
|
||
<td class="text-light" th:text="${index.index + 1}"></td>
|
||
<td colspan="11"></td>
|
||
<td><button class="btn btn-sm btn-outline-light" disabled="disabled"><i class="fas fa-edit"></i></button></td>
|
||
</tr>
|
||
</th:block>
|
||
</tbody>
|
||
</table>
|
||
<h4 class="d-none h4 p-3 mt-0 bg-secondary text-center">
|
||
<i class="fas fa-exclamation-circle text-warning"></i>
|
||
<span class="text-light" th:text="#{msg.data.notfound}" ></span>
|
||
</h4>
|
||
</div>
|
||
<div class="card-footer bg-custom-dark text-light p-2">
|
||
<ul class="pagination justify-content-center m-0 d-none" id="userListPagination">
|
||
<li class="page-item active">
|
||
<button class="page-link">1</button>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
</div><!-- .card -->
|
||
<br />
|
||
<div class="float-right" sec:authorize="hasAuthority('ADMIN')">
|
||
<button type="button" class="btn btn-outline-secondary " id="btn-user-add" data-toggle="modal" data-backdrop="static" data-target='#userAddModal'>
|
||
<b><i class="fas fa-user-plus"> </i> <span th:text="#{user.add}"></span></b>
|
||
</button>
|
||
</div>
|
||
</div><!-- .col -->
|
||
</div><!-- .row -->
|
||
|
||
|
||
<!-- <20>닔<EFBFBD>젙 Popup -->
|
||
<div class="modal modal-center fade " id="userDetailEditViewModal" tabindex="-1" role="dialog" aria-labelledby="userDetailEditViewModal" aria-hidden="true">
|
||
<div class="modal-dialog modal-lg r2-modal-lg modal-center" style="width:640px;">
|
||
<div class="modal-content bg-custom-dark text-light">
|
||
<div class="modal-header bg-custom-dark text-light ">
|
||
<h5 id="popup_title" class="modal-title" th:text="#{user.info}"> </h5>
|
||
<button type="button" class="close color-white" data-dismiss="modal" aria-label="Close"><span aria-hidden="true" style="color: white; font-size:20px;"><i class="fas fa-times fa-lg "></i></span></button>
|
||
</div>
|
||
<div class="modal-body user-modal-body ">
|
||
<!-- <20>궡<EFBFBD>슜 -->
|
||
<div class="row">
|
||
<div class="col">
|
||
<form name="frmUpdateUser">
|
||
<table class="table user-table m-0 border" >
|
||
<tr>
|
||
<th class="text-right " th:text="#{id}"> </th>
|
||
<td>
|
||
<input id="username" name="username" type="hidden" class="form-control" />
|
||
<span id="s_username"></span>
|
||
</td>
|
||
<td> </td>
|
||
</tr>
|
||
<tr>
|
||
<th th:text="#{mobile}"></th>
|
||
<td >
|
||
<input type="text" class="form-control float-left text-right w-25" placeholder="010" name="mobile" required="required" />
|
||
<span class="float-left pl-3 pr-3 text-bold h3">-</span>
|
||
<input type="text" class="form-control float-left text-right w-25" th:placeholder="XXXX" name="mobile" required="required" />
|
||
<span class="float-left pl-3 pr-3 text-bold h3">-</span>
|
||
<input type="text" class="form-control float-left text-right w-25" th:placeholder="XXXX" name="mobile" required="required" />
|
||
</td>
|
||
<td> </td>
|
||
</tr>
|
||
<tr>
|
||
<th th:text="#{email}"></th>
|
||
<td >
|
||
<input type="text" class="form-control float-left text-right" style="width:115px" placeholder="gdhong" name="email" required="required" />
|
||
<span class="float-left pl-2 pr-2 text-bold h3">@</span>
|
||
<input type="text" class="form-control float-left" style="width:112px" placeholder="atecap.kr" name="email" required="required" />
|
||
</td>
|
||
<td> </td>
|
||
</tr>
|
||
<tr>
|
||
<th th:text="#{name}"></th>
|
||
<td >
|
||
<input type="text" class="form-control " style="width:260px" th:placeholder="#{name}" name="name" required="required" />
|
||
</td>
|
||
<td> </td>
|
||
</tr>
|
||
<tr>
|
||
<th th:text="#{title_en}"></th>
|
||
<td >
|
||
<input type="text" style="width:260px" th:placeholder="#{title_en}" id="title" name="title" class="form-control " required="required" />
|
||
</td>
|
||
<td> </td>
|
||
</tr>
|
||
<tr>
|
||
<th th:text="#{department}"></th>
|
||
<td >
|
||
<input type="text" style="width:260px" th:placeholder="#{department}" id="department" name="department" class="form-control " required="required" />
|
||
</td>
|
||
<td> </td>
|
||
</tr>
|
||
<tr>
|
||
<th th:text="#{authorities}"></th>
|
||
<td >
|
||
<select id="authorities" name="authorities" class="form-control ">
|
||
<option value="ADMIN" th:text='#{user.auth.type.admin}'></option>
|
||
<option value="MANAGER" th:text='#{user.auth.type.manager}'></option>
|
||
<option value="USER" th:text='#{user.auth.type.user}'></option>
|
||
</select>
|
||
</td>
|
||
<td> </td>
|
||
</tr>
|
||
<tr id="user_store">
|
||
<th th:text="#{store}"></th>
|
||
<td>
|
||
<div class="input-group input-group-sm ">
|
||
<div class="input-group-prepend">
|
||
<input type="text" class="form-control " size="5" id="str_code" th:placeholder="#{store.code}" onfocus="blur();" style="cursor:default;" readonly="readonly" />
|
||
</div>
|
||
<input type="text" class="form-control " size="16" id="str_name" th:placeholder="#{store.name}" onfocus="blur();" style="cursor:default;" readonly="readonly" />
|
||
<div class="input-group-append">
|
||
<button type="button" class="btn btn-outline-secondary border-shadow btn-store-search_open_modal " data-toggle="modal" data-target="#storeSearchModal"><i class="fas fa-search"></i></button>
|
||
</div>
|
||
</div>
|
||
</td>
|
||
<td>
|
||
<span id="str_code_err" class="d-none" th:text="#{msg.info.required.field}"></span>
|
||
</td>
|
||
</tr>
|
||
<tr id="biztp">
|
||
<th th:text="#{business.conditions}"></th>
|
||
<td id="biztp" class=" ">
|
||
<select class="custom-select " id="biztp_code" name="biztp_code">
|
||
<option value="00" th:text="#{all}" selected="selected"></option>
|
||
<th:block th:if="${biztpList} != null">
|
||
<th:block th:each="vo,iterStat : ${#lists.sort(biztpList)}">
|
||
<option th:value="${vo.biztp_code}" th:text="${vo.biztp_name}" ></option>
|
||
</th:block>
|
||
</th:block>
|
||
</select>
|
||
</td>
|
||
<td><span id="biztp_code_err" class="d-none" th:text="#{msg.info.required.field}"></span> </td>
|
||
</tr>
|
||
<tr>
|
||
<th th:text="#{last_conn_time}"></th>
|
||
<td> <span id="last_conn_time"></span></td>
|
||
<td></td>
|
||
</tr>
|
||
<tr>
|
||
<th th:text="#{update.date.time}"></th>
|
||
<td class=""> <span id="update_dtime"></span></td>
|
||
<td></td>
|
||
</tr>
|
||
<tr>
|
||
<th th:text="#{reg.date}"></th>
|
||
<td class=""> <span id="reg_date"></span></td>
|
||
<td></td>
|
||
</tr>
|
||
</table>
|
||
</form>
|
||
</div><!-- .col -->
|
||
</div><!-- .row -->
|
||
</div>
|
||
|
||
<div class="modal-footer user-modal-footer">
|
||
<div sec:authorize="hasAuthority('ADMIN')">
|
||
<button type="button" class="btn btn-outline-secondary" id="btn-user-delete">
|
||
<div th:utext="#{user.delete}"></div>
|
||
</button>
|
||
<button type="button" class="btn btn-outline-secondary" id="btn-user-pwd-reset">
|
||
<div th:text="#{password.initialization}"></div>
|
||
</button>
|
||
<button type="button" class="btn btn-outline-secondary" id="btn-user-pwd_change">
|
||
<div th:text="#{password.change}"></div>
|
||
</button>
|
||
<button type="button" class="btn btn-warning text-white" id="btn-user-edit-save">
|
||
<div th:text="#{save}"></div>
|
||
</button>
|
||
</div>
|
||
<button type="button" class="btn btn-secondary" data-dismiss="modal" th:text="#{close}"></button>
|
||
</div>
|
||
</div><!-- .modal-content -->
|
||
</div><!-- .modal-dialog -->
|
||
</div><!-- .modal -->
|
||
|
||
|
||
|
||
|
||
<!-- .modal#userAddModal -->
|
||
<div class="modal modal-center fade" id="userAddModal" tabindex="-1" role="dialog" aria-labelledby="userAddModal" aria-hidden="true">
|
||
<div class="modal-dialog modal-lg r2-modal-lg modal-center ">
|
||
<div class="modal-content bg-custom-dark text-light">
|
||
<div class="modal-header bg-custom-dark text-light ">
|
||
<h5 id="popup_title" class="modal-title" th:text="#{user.info}"> </h5>
|
||
<button type="button" class="close color-white" data-dismiss="modal" aria-label="Close"><span aria-hidden="true" style="color: white; font-size:20px;"><i class="fas fa-times fa-lg "></i></span></button>
|
||
</div>
|
||
<div class="modal-body user-modal-body ">
|
||
<form name="frmAddUser">
|
||
<table class="table user-table m-0 border">
|
||
<colgroup>
|
||
<col width="20%" />
|
||
<col width="45%" />
|
||
<col width="35%" />
|
||
</colgroup>
|
||
<tbody>
|
||
<tr>
|
||
<th class="text-right" th:text="#{id}"></th>
|
||
<td>
|
||
<input type="hidden" value="" name="username_dupchk" />
|
||
<div class="input-group input-group-sm ">
|
||
<input name="username" class="form-control border border-primary not-kor" th:placeholder="#{user}" type="text" maxlength="20" />
|
||
<div class="input-group-append">
|
||
<button type="button" class="btn btn-primary btn-sm" id="btn-username-dupchk">
|
||
<i class="icon-overlap"></i><span th:text="#{duplication.confirm}"></span>
|
||
</button>
|
||
</div>
|
||
</div>
|
||
</td>
|
||
<td><span id="frmAddUser_username_err" class="d-none" th:text="#{msg.info.required.field}"></span> </td>
|
||
</tr>
|
||
<tr>
|
||
<th th:text="#{password}"></th>
|
||
<td >
|
||
<input type="password" class="form-control " th:placeholder="#{password}" name="password" required="required" />
|
||
</td>
|
||
<td><span id="frmAddUser_password_err" class="d-none" th:text="#{msg.info.required.field}"></span> </td>
|
||
</tr>
|
||
<tr>
|
||
<th th:text="#{password.confirm}"></th>
|
||
<td >
|
||
<input type="password" class="form-control " th:placeholder="#{password.confirm}" name="password_confirm" required="required" />
|
||
</td>
|
||
<td><span id="frmAddUser_password_confirm_err" class="d-none" th:text="#{msg.info.required.field}"></span> </td>
|
||
</tr>
|
||
<tr>
|
||
<th th:text="#{mobile}"></th>
|
||
<td >
|
||
<input type="text" class="form-control float-left text-right w-25" placeholder="010" name="mobile" required="required" />
|
||
<span class="float-left pl-3 pr-3 text-bold h3">-</span>
|
||
<input type="text" class="form-control float-left text-right w-25" th:placeholder="XXXX" name="mobile" required="required" />
|
||
<span class="float-left pl-3 pr-3 text-bold h3">-</span>
|
||
<input type="text" class="form-control float-left text-right w-25" th:placeholder="XXXX" name="mobile" required="required" />
|
||
</td>
|
||
<td> </td>
|
||
</tr>
|
||
<tr>
|
||
<th th:text="#{email}"></th>
|
||
<td >
|
||
<input type="text" class="form-control float-left text-right" style="width:117px" placeholder="gdhong" name="email" required="required" />
|
||
<span class="float-left pl-2 pr-2 text-bold h3">@</span>
|
||
<input type="text" class="form-control float-left" style="width:118px" placeholder="atecap.kr" name="email" required="required" />
|
||
</td>
|
||
<td> </td>
|
||
</tr>
|
||
<tr>
|
||
<th th:text="#{name}"></th>
|
||
<td >
|
||
<input type="text" class="form-control " th:placeholder="#{name}" name="name" required="required" />
|
||
</td>
|
||
<td> </td>
|
||
</tr>
|
||
<tr>
|
||
<th th:text="#{title_en}"></th>
|
||
<td >
|
||
<input type="text" class="form-control " th:placeholder="#{title_en}" name="title" required="required" />
|
||
</td>
|
||
<td></td>
|
||
</tr>
|
||
<tr>
|
||
<th th:text="#{department}"></th>
|
||
<td >
|
||
<input type="text" class="form-control " th:placeholder="#{department}" name="department" required="required" />
|
||
</td>
|
||
<td></td>
|
||
</tr>
|
||
<tr>
|
||
<th th:text="#{authorities}"></th>
|
||
<td >
|
||
<select class="form-control" name="authorities" >
|
||
<option value="ADMIN" th:text='#{user.auth.type.admin}'></option>
|
||
<option value="MANAGER" th:text='#{user.auth.type.manager}'></option>
|
||
<option value="USER" th:text='#{user.auth.type.user}'></option>
|
||
</select>
|
||
</td>
|
||
<td> </td>
|
||
</tr>
|
||
<tr id="frmAddUser_store">
|
||
<th th:text="#{store}"></th>
|
||
<td>
|
||
<div class="input-group input-group-sm ">
|
||
<div class="input-group-prepend">
|
||
<input type="text" class="form-control " size="5" name="str_code" th:placeholder="#{store.code}" onfocus="blur();" style="cursor:default;" readonly="readonly" />
|
||
</div>
|
||
<input type="text" class="form-control " size="16" name="str_name" th:placeholder="#{store.name}" onfocus="blur();" style="cursor:default;" readonly="readonly" />
|
||
<div class="input-group-append">
|
||
<button type="button" class="btn btn-outline-secondary border-shadow btn-store-search_open_modal " data-toggle="modal" data-target="#storeSearchModal"><i class="fas fa-search"></i></button>
|
||
</div>
|
||
</div>
|
||
</td>
|
||
<td>
|
||
<span id="frmAddUser_str_code_err" class="d-none" th:text="#{msg.info.required.field}"></span>
|
||
</td>
|
||
</tr>
|
||
<tr id="frmAddUser_biztp">
|
||
<th th:text="#{business.conditions}"></th>
|
||
<td>
|
||
<select class="custom-select " name="biztp_code">
|
||
<option value="00" th:text="#{all}" selected="selected"></option>
|
||
<th:block th:if="${biztpList} != null">
|
||
<th:block th:each="vo,iterStat : ${#lists.sort(biztpList)}">
|
||
<option th:value="${vo.biztp_code}" th:text="${vo.biztp_name}"></option>
|
||
</th:block>
|
||
</th:block>
|
||
</select>
|
||
</td>
|
||
<td><span id="frmAddUser_biztp_code_err" class="d-none" th:text="#{msg.info.required.field}"></span></td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</form>
|
||
</div>
|
||
<div class="modal-footer user-modal-footer">
|
||
<button type="button" class="btn btn-warning text-white" id="btn-user-add-save" th:text="#{save}"></button>
|
||
<button type="button" class="btn btn-secondary" data-dismiss="modal" th:text="#{close}"></button>
|
||
</div>
|
||
</div><!-- /.modal-content -->
|
||
</div><!-- /.modal-dialog -->
|
||
</div><!-- /.modal -->
|
||
|
||
|
||
|
||
|
||
<!-- password change Popup -->
|
||
<div class="modal modal-center fade" id="userPasswordChangeModal" tabindex="-1" role="dialog" aria-labelledby="userPasswordChangeModal" data-backdrop="false" aria-hidden="true">
|
||
<div class="modal-dialog modal-lg r2-modal-lg modal-center w500 ">
|
||
<div class="modal-content bg-custom-dark text-light">
|
||
<div class="modal-header bg-custom-dark text-light ">
|
||
<h5 id="popup_title" class="modal-title" th:text="#{password}+' '+#{change}"> </h5>
|
||
<button type="button" class="close color-white" data-dismiss="modal" aria-label="Close"><span aria-hidden="true" style="color: white; font-size:20px;"><i class="fas fa-times fa-lg "></i></span></button>
|
||
</div>
|
||
<div class="modal-body user-modal-body ">
|
||
<!-- <20>궡<EFBFBD>슜 -->
|
||
<div class="row">
|
||
<div class="col">
|
||
<div class="table-responsive ">
|
||
<form id="frmChangePWD" name="frmChangePWD">
|
||
<table class="table user-table m-0 border" style="width: 474px;">
|
||
<tr>
|
||
<th class="text-right " th:text="#{user}"> </th>
|
||
<td>
|
||
<input id="pwdchg_username" name="username" type="hidden" class="form-control" />
|
||
<span id="pwdchg_s_username"></span>
|
||
</td>
|
||
<td> </td>
|
||
</tr>
|
||
<tr>
|
||
<th th:utext="#{current}+' '+#{password}"></th>
|
||
<td >
|
||
<input type="password" th:placeholder="#{password}" id="pwdchg_pwd" name="pwdchg_pwd" class="form-control " required="required" />
|
||
</td>
|
||
<td><span id="pwdchg_pwd_err" class="d-none" th:text="#{msg.info.required.field}"></span></td>
|
||
</tr>
|
||
<tr>
|
||
<th th:utext="#{new.password}"></th>
|
||
<td >
|
||
<input type="password" th:placeholder="#{password}" id="pwdchg_new_pwd" name="pwdchg_new_pwd" class="form-control " required="required" />
|
||
</td>
|
||
<td><span id="pwdchg_new_pwd_err" class="d-none" th:text="#{msg.info.required.field}"></span> </td>
|
||
</tr>
|
||
<tr>
|
||
<th th:utext="#{new.password.confirm}"></th>
|
||
<td >
|
||
<input type="password" th:placeholder="#{password.confirm}" id="pwdchg_new_pwd_confirm" name="pwdchg_new_pwd_confirm" class="form-control " required="required" />
|
||
</td>
|
||
<td><span id="pwdchg_new_pwd_confirm_err" class="d-none" th:text="#{msg.info.required.field}"></span> </td>
|
||
</tr>
|
||
</table>
|
||
</form>
|
||
</div>
|
||
</div><!-- .col -->
|
||
</div><!-- .row -->
|
||
<div class="row">
|
||
<div class="col">
|
||
<div class="card">
|
||
<div class="card-body">
|
||
<span class="text-danger text-bold" th:text="#{msg.pwd.not.applied.immediately.login.5m.after.save}"></span>
|
||
</div><!-- .card-body -->
|
||
</div><!-- .card -->
|
||
</div><!-- .col -->
|
||
</div><!-- .row -->
|
||
</div>
|
||
<div class="modal-footer user-modal-footer">
|
||
<button type="button" class="btn btn-warning text-white" id="btn-user-pwdchg-save">
|
||
<div th:text="#{save}"></div>
|
||
</button>
|
||
<button type="button" class="btn btn-secondary" data-dismiss="modal" th:text="#{close}"></button>
|
||
</div>
|
||
</div><!-- .modal-content -->
|
||
</div><!-- .modal-dialog -->
|
||
</div><!-- .modal#serPasswordChangeModal -->
|
||
|
||
|
||
|
||
<!-- password init Popup -->
|
||
<div class="modal modal-center fade" id="userPasswordInitModal" tabindex="-1" role="dialog" aria-labelledby="userPasswordInitModal" data-backdrop="false" aria-hidden="true">
|
||
<div class="modal-dialog modal-lg r2-modal-lg modal-center w500 ">
|
||
<div class="modal-content">
|
||
<div class="modal-header bg-custom-dark text-light ">
|
||
<h5 id="popup_title" class="modal-title" th:text="#{password}+' '+#{initialization}"> </h5>
|
||
</div>
|
||
<div class="modal-body user-modal-body ">
|
||
<!-- <20>궡<EFBFBD>슜 -->
|
||
<table class="table table-bordered text-center m-0">
|
||
<tr class="bg-light">
|
||
<th>
|
||
<span id="dis_user_id_name_pwd_init"></span>
|
||
</th>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<div class="alert alert-warning text-bold align-bottom text-center border border-warning m-0" id="init_password" style="height: 38px;"></div>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
<div class="modal-footer user-modal-footer">
|
||
<button type="button" class="btn btn-warning text-white" id="btn-user-pwd-init">
|
||
<div th:text="#{initialization}"></div>
|
||
</button>
|
||
<button type="button" class="btn btn-secondary" data-dismiss="modal" th:text="#{close}"></button>
|
||
</div>
|
||
</div><!-- .modal-content -->
|
||
</div><!-- .modal-dialog -->
|
||
</div><!-- .modal#userPasswordInitModal -->
|
||
|
||
|
||
|
||
|
||
<!-- store search : storeSearchModal -->
|
||
<div class="modal fade" tabindex="-1" role="dialog" id="storeSearchModal">
|
||
<div class="modal-dialog modal-lg modal-center" th:style="${group1_use_yn}=='Y' ? ( ${group2_use_yn}=='Y' ? ( ${group3_use_yn}=='Y' ? 'width:880px' : 'width:780px'): 'width:680px') : 'width:580px;'" role="document">
|
||
<div class="modal-content">
|
||
<div class="modal-header bg-custom-dark text-light">
|
||
<h5 class="modal-title" th:text="#{store.search}"></h5>
|
||
<button type="button" class="close color-white" data-dismiss="modal" aria-label="Close"><span aria-hidden="true" style="color: white; font-size:20px;"><i class="fas fa-times fa-lg "></i></span></button>
|
||
</div>
|
||
<!-- modal-header -->
|
||
<div class="modal-body">
|
||
<div class="store-group-manage-box2" th:style="${group1_use_yn} =='Y' ? ( ${group2_use_yn}=='Y' ? ( ${group3_use_yn}=='Y' ? 'width:850px' : 'width:750px') : 'width:650px') : 'width:550px'">
|
||
<div class="input-group-prepend width100-per">
|
||
<div class="input-group-text width100-per" th:if="${group1_use_yn} == 'Y'">
|
||
<select class=" form-control " id="storeGroupSearch01">
|
||
<option th:text="${group1_name}"> group1</option>
|
||
</select>
|
||
<select class=" form-control" id="storeGroupSearch02" th:if="${group2_use_yn} == 'Y'">
|
||
<option value='' th:text="${group2_name}">>group2</option>
|
||
</select>
|
||
<select class=" form-control " id="storeGroupSearch03" th:if="${group3_use_yn} == 'Y'">
|
||
<option value='' th:text="${group3_name}">>group3</option>
|
||
</select>
|
||
</div>
|
||
</div>
|
||
<div class="input-group mt-3">
|
||
<input type="text" class="form-control" th:placeholder="#{search.placeholder.code.store.name}" id="store_search_keyword" />
|
||
<div class="input-group-append">
|
||
<button type="button" class="btn btn-outline-secondary" id='btn-store-search' data-toggle="tooltip" title="search">
|
||
<b><i class="fas fa-search"></i></b>
|
||
</button>
|
||
</div>
|
||
</div>
|
||
<br />
|
||
<div class=" ">
|
||
<div class="border" style="height: 210px; width: 100%; ; overflow-x: hidden;overflow-y: hidden;">
|
||
<table class="search-store-list text-center ">
|
||
<colgroup>
|
||
<col width="15%" th:if="${group1_use_yn} == 'Y'" />
|
||
<col width="15%" th:if="${group2_use_yn} == 'Y'" />
|
||
<col width="15%" th:if="${group3_use_yn} == 'Y'" />
|
||
<col width="20%" />
|
||
<col width="15%" />
|
||
<col width="* " />
|
||
</colgroup>
|
||
<thead class="thead-light">
|
||
<tr style="border-bottom:1px solid #d0d0d0">
|
||
<th th:if="${group1_use_yn} == 'Y'" th:text="${group1_name}"></th>
|
||
<th th:if="${group2_use_yn} == 'Y'" th:text="${group2_name}"></th>
|
||
<th th:if="${group3_use_yn} == 'Y'" th:text="${group3_name}"></th>
|
||
<th th:text="#{business.conditions}"> </th>
|
||
<th align="center" th:text="#{code}"> </th>
|
||
<th align="center" th:text="#{store.name}"> </th>
|
||
</tr>
|
||
</thead>
|
||
</table>
|
||
<div id="divSearchStoreList" class="" style=" border :0px solid #000000">
|
||
<table class="table table-sm table-bordered text-center table-fixed search-store-list " id="searchStoreList">
|
||
<colgroup>
|
||
<col width="15%" th:if="${group1_use_yn} == 'Y'"></col>
|
||
<col width="15%" th:if="${group2_use_yn} == 'Y'"></col>
|
||
<col width="15%" th:if="${group3_use_yn} == 'Y'"></col>
|
||
<col width="20%"></col>
|
||
<col width="15%"></col>
|
||
<col width=""></col>
|
||
</colgroup>
|
||
<tbody></tbody>
|
||
</table>
|
||
<h4 class="d-none h4 p-3 mt-0 bg-secondary text-center">
|
||
<i class="fas fa-exclamation-circle text-warning"></i>
|
||
<span class="text-light" th:text="#{msg.data.notfound}" ></span>
|
||
</h4>
|
||
</div>
|
||
</div>
|
||
</div><!-- .group-box3 -->
|
||
</div><!-- .store-group-manage-box2 -->
|
||
</div><!-- modal-body -->
|
||
<div class="modal-footer">
|
||
<button type="button" class="btn btn-outline-secondary" data-dismiss="modal" id='btn-apply-selected-store' th:text="#{select}"></button>
|
||
<button type="button" class="btn btn-secondary" data-dismiss="modal" th:text="#{close}"></button>
|
||
</div>
|
||
</div><!-- modal-content -->
|
||
</div>
|
||
</div><!-- .modal#storeSearchModal group1==Y-->
|
||
|
||
|
||
|
||
|
||
|
||
</div><!-- .container-fluid -->
|
||
</div><!-- layout:fragment="content" -->
|
||
|
||
</html> |