초기소스
This commit is contained in:
320
src/main/webapp/WEB-INF/views/mngr/goods/prsnt/PrsntC.jsp
Normal file
320
src/main/webapp/WEB-INF/views/mngr/goods/prsnt/PrsntC.jsp
Normal file
@@ -0,0 +1,320 @@
|
||||
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
|
||||
<%@ page import="java.util.Date" %>
|
||||
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
|
||||
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
|
||||
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
|
||||
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
|
||||
<%@ taglib prefix="ui" uri="http://www.winbit.kr/ctl/ui" %>
|
||||
<%--
|
||||
Class Name : PrsntC.jsp
|
||||
Description : 사은품 등록 화면
|
||||
Modification Information
|
||||
|
||||
수정일 수정자 수정내용
|
||||
------- -------- ---------------------------
|
||||
since : 2024.04.15 리브가 최초 생성
|
||||
--%>
|
||||
<!DOCTYPE html>
|
||||
<html lang="ko">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>GC ONE 관리자</title>
|
||||
<%-- 공통 include --%>
|
||||
<%@ include file="/WEB-INF/views/comm/mngr/Include.jsp"%>
|
||||
|
||||
</head>
|
||||
<script>
|
||||
$(document).ready(function () {
|
||||
|
||||
});
|
||||
|
||||
/* ********************************************************
|
||||
* 등록 AJAX
|
||||
******************************************************** */
|
||||
const fn_regist = function () {
|
||||
const url = '<c:url value="/mngr/goods/prsnt/insertPrsnt"/>';
|
||||
|
||||
if(fn_is_empty($('#goodsNm').val())){
|
||||
$('#goodsNm').focus()
|
||||
alert('상품명을 입력해 주세요.')
|
||||
return;
|
||||
}
|
||||
|
||||
if(fn_is_empty($('input[name="goodsCd"]').val())){
|
||||
$('input[name="goodsCd"]').focus()
|
||||
alert('상품코드를 입력해 주세요.')
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
const invntryPolicyCd = $('input[name="invntryPolicyCd"]:checked').val()
|
||||
|
||||
if(invntryPolicyCd ==='01' && fn_is_empty($('#invntryQy').val())){
|
||||
$('#invntryQy').focus()
|
||||
alert('재고수량을 입력해 주세요')
|
||||
return;
|
||||
|
||||
}
|
||||
|
||||
const formData = new FormData();
|
||||
|
||||
$('#listForm').serializeArray().forEach(function (item) {
|
||||
formData.append(item.name, item.value);
|
||||
});
|
||||
|
||||
formData.append('invntryQy',String(fn_comma_del_str_to_number($('#invntryQy').val())))
|
||||
formData.append('cnsmrpric',String(fn_comma_del_str_to_number($('#cnsmrpric').val())))
|
||||
|
||||
//파일데이터
|
||||
var myDropzone = Dropzone.forElement("#my-dropzone");
|
||||
let fileAt = 'N';
|
||||
myDropzone.files.forEach(function (file) {
|
||||
if(!fn_is_empty(file)){
|
||||
fileAt='Y'
|
||||
}
|
||||
formData.append('files', file); // 서버에서 파일을 받을 때 'files'라는 이름으로 전송
|
||||
});
|
||||
|
||||
//등록된 사진이 없거나 이미지삭제가 아닌경우
|
||||
if(fn_is_empty($('#sortable div.file-preview__container')) && fileAt==='N'){
|
||||
alert('사은품 이미지를 등록해주세요');
|
||||
return false;
|
||||
}
|
||||
|
||||
if (confirm('사은품을 <spring:message code="confirm.common.insert"/>')) {
|
||||
$.ajax({
|
||||
type: 'post',
|
||||
enctype: 'multipart/form-data',
|
||||
url: url,
|
||||
data: formData,
|
||||
contentType: false,
|
||||
processData: false,
|
||||
success: function (data) {
|
||||
let str = JSON.parse(data.resBody.result);
|
||||
if (str.result == 'success') {
|
||||
alert('<spring:message code="success.common.insert"/>');
|
||||
//등록 후 수정화면으로 이동
|
||||
fn_move_dtl_uptpage(data.resBody.result.replace(/[^0-9]/g, ""));
|
||||
} else {
|
||||
alert('<spring:message code="fail.common.insert"/>');
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
/* ********************************************************
|
||||
* 수정폼 이동
|
||||
******************************************************** */
|
||||
const fn_move_dtl_uptpage = function (Innb) {
|
||||
const url = '<c:url value="/mngr/goods/prsnt/selectPrsntDtlForm"/>';
|
||||
|
||||
$('#listForm').attr('action', url);
|
||||
$('#listForm').attr('method', 'get');
|
||||
$('#pageIndex').val(1);
|
||||
$('#goodsInnb').val(Innb);
|
||||
$('#listForm').submit();
|
||||
}
|
||||
|
||||
/* ********************************************************
|
||||
* 목록 조회
|
||||
******************************************************** */
|
||||
const fn_select_list = function () {
|
||||
const url = '<c:url value="/mngr/goods/prsnt/selectPrsntListForm"/>';
|
||||
|
||||
$('#listForm').attr('action', url);
|
||||
$('#listForm').attr('method', 'post');
|
||||
$('#listForm').submit();
|
||||
};
|
||||
|
||||
//모든 컴마 삭제 및 문자를 숫자로 변환
|
||||
const fn_comma_del_str_to_number = function (str) {
|
||||
|
||||
// null이나 undefined인 경우 0을 반환
|
||||
if (str === null || str === undefined || str.trim() === '') {
|
||||
return 0;
|
||||
}
|
||||
|
||||
// 쉼표를 제거하고 숫자로 변환
|
||||
const numberWithoutCommas = str.replace(/,/g, '');
|
||||
const number = parseFloat(numberWithoutCommas);
|
||||
|
||||
// 변환된 값이 NaN인 경우 0을 반환
|
||||
if (isNaN(number)) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
return number;
|
||||
|
||||
}
|
||||
</script>
|
||||
<body>
|
||||
<%@ include file="/WEB-INF/views/comm/mngr/Header.jsp"%>
|
||||
<main class="main">
|
||||
<%@ include file="/WEB-INF/views/comm/mngr/Left.jsp"%>
|
||||
<div class="content">
|
||||
<div class="content__inner">
|
||||
<button class="side-nav__fold"><span class="visually-hidden">좌측메뉴 펼치기/닫기</span></button>
|
||||
<div class="page-title">
|
||||
<h2 class="page-title__title">사은품 등록</h2>
|
||||
<div class="page-title__btn-container">
|
||||
<button onclick="fn_select_list()" onkeypress="this.onclick" class="btn outline"><spring:message code="button.list"/></button>
|
||||
<button class="btn primary" onclick="fn_regist();"><spring:message code="button.insert"/></button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<form id="listForm" method="post" action="<c:url value="/mngr/goods/prsnt/insertPrsnt"/>" enctype="multipart/form-data">
|
||||
<section class="content-section content-scroll-detect content-fold">
|
||||
<spring:eval expression="@environment.getProperty('spring.servlet.multipart.max-file-size')" var="maxFileSize"/>
|
||||
<spring:eval expression="@environment.getProperty('mngrfo.common.fileupload.extensions.images')" var="acceptFileExtensions"/>
|
||||
<div class="content-fold__header">
|
||||
<h3 class="content-section__title">기본정보</h3>
|
||||
<button class="content-fold__btn"><span class="visually-hidden">접기</span></button>
|
||||
</div>
|
||||
<div class="content-fold__content">
|
||||
<div class="table-wrapper">
|
||||
<table class="table">
|
||||
<caption>사은품</caption>
|
||||
<colgroup>
|
||||
<col style="width: 12%;">
|
||||
<col style="width: 38%;">
|
||||
<col style="width: 12%;">
|
||||
<col style="width: 38%;">
|
||||
</colgroup>
|
||||
<tbody>
|
||||
<tr>
|
||||
<th>상품 명<span class="red-7">*</span></th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<input class="input-text lg" type="text" id="goodsNm" name="goodsNm" title="상품 명" maxlength="35">
|
||||
</div>
|
||||
</td>
|
||||
<th>판매 상태</th>
|
||||
<td colspan="2">
|
||||
<div class="td-inner">
|
||||
<div class="custom-radio-container">
|
||||
<c:forEach items="${resultMap.goodsDftinfoSttusList}"
|
||||
var="goodsDftinfoSttus"
|
||||
varStatus="status">
|
||||
<div class="custom-radio">
|
||||
<input type="radio" id="${goodsDftinfoSttus.cd}"
|
||||
name="goodsSttusCd"
|
||||
value="${goodsDftinfoSttus.cd}" <c:if test="${status.first}">checked</c:if> >
|
||||
<label for="${goodsDftinfoSttus.cd}">${goodsDftinfoSttus.cdNm}</label>
|
||||
</div>
|
||||
</c:forEach>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>재고에 따른 판매</th>
|
||||
<td colspan="3">
|
||||
<div class="td-inner">
|
||||
<div class="custom-radio-container">
|
||||
<c:forEach items="${resultMap.goodsDftinfoInvntryPolicyList}"
|
||||
var="goodsDftinfoInvntryPolicy" varStatus="status">
|
||||
<div class="custom-radio">
|
||||
<input type="radio"
|
||||
id="goodsDftinfoInvntryPolicy${status.count}"
|
||||
name="invntryPolicyCd"
|
||||
value="${goodsDftinfoInvntryPolicy.cd}" <c:if test="${status.last}">checked</c:if> >
|
||||
<label for="goodsDftinfoInvntryPolicy${status.count}">${goodsDftinfoInvntryPolicy.cdNm}</label>
|
||||
</div>
|
||||
</c:forEach>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class="table-wrapper">
|
||||
<table class="table vertical draggable">
|
||||
<colgroup>
|
||||
<col style="width: auto;">
|
||||
<col style="width: 20%;">
|
||||
<col style="width: 30%;">
|
||||
<col style="width: 30%;">
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>상품코드<span class="red-7">*</span></th>
|
||||
<th>재고</th>
|
||||
<th>정가</th>
|
||||
<th>판매가</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>
|
||||
<input class="input-text full" type="text" name="goodsCd" title="상품코드" maxlength="35">
|
||||
</td>
|
||||
<td>
|
||||
<input class="input-text number full" type="text" id="invntryQy" title="재고" maxlength="20">
|
||||
</td>
|
||||
<td>
|
||||
<input class="input-text number full" type="text" id="cnsmrpric" title="정가" maxlength="20">
|
||||
</td>
|
||||
<td>
|
||||
<input class="input-text number full" type="text" name="" title="판매가" maxlength="20" disabled>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="content-section content-scroll-detect content-fold">
|
||||
<div class="content-fold__header">
|
||||
<h3 class="content-section__title">상품 사진</h3>
|
||||
<button class="content-fold__btn"><span class="visually-hidden">접기</span></button>
|
||||
</div>
|
||||
<div class="content-fold__content">
|
||||
<div class="table-wrapper">
|
||||
<table class="table">
|
||||
<caption>해당 테이블에 대한 설명</caption>
|
||||
<colgroup>
|
||||
<col style="width: 12%;">
|
||||
<col>
|
||||
</colgroup>
|
||||
<tbody>
|
||||
<tr>
|
||||
<th>사진 등록<span class="red-7">*</span></th>
|
||||
<td>
|
||||
<div class="td-inner vertical">
|
||||
<div class="dropzone-wrapper">
|
||||
<spring:eval expression="@environment.getProperty('mngrfo.common.fileupload.extensions.images')" var="acceptFileExtensions"/>
|
||||
<div class="dropzone" id="my-dropzone">
|
||||
</div>
|
||||
<p class="fyi gray-7 mt-15">여러 개의 이미지를 한 번에 등록 가능합니다.</p>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</section>
|
||||
<!--검색 조건 , 페이징 조건 -->
|
||||
<input type="hidden" id="goodsInnb" name="goodsInnb" value=""/>
|
||||
<input type="hidden" id="sopmalCd" name="sopmalCd" value="${resultMap.BOGoodsVO.sopmalCd}"/>
|
||||
<input type="hidden" id="srchType" name="srchType" title="검색타입" value="<c:out value="${ resultMap.BOGoodsVO.srchType }"/>">
|
||||
<input type="hidden" id="srchStr" name="srchStr" title="검색어" value="<c:out value="${ resultMap.BOGoodsVO.srchStr }"/>">
|
||||
<input type="hidden" id="dateDv" name="dateDv" title="검색날짜" value="<c:out value="${ resultMap.BOGoodsVO.dateDv }"/>">
|
||||
<input type="hidden" id="startDate" name="startDate" title="검색날짜" value="<c:out value="${ resultMap.BOGoodsVO.startDate }"/>">
|
||||
<input type="hidden" id="endDate" name="endDate" title="검색날짜" value="<c:out value="${ resultMap.BOGoodsVO.endDate }"/>">
|
||||
<input type="hidden" id="pageIndex" name="pageIndex" value="<c:out value="${ resultMap.BOGoodsVO.pageIndex }"/>"/>
|
||||
<input type="hidden" id="pageUnit" name="pageUnit" value="<c:out value="${ resultMap.BOGoodsVO.pageUnit }"/>"/>
|
||||
</form>
|
||||
<button class="scroll-to-top"><span class="visually-hidden">위로가기</span></button>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
477
src/main/webapp/WEB-INF/views/mngr/goods/prsnt/PrsntDtlU.jsp
Normal file
477
src/main/webapp/WEB-INF/views/mngr/goods/prsnt/PrsntDtlU.jsp
Normal file
@@ -0,0 +1,477 @@
|
||||
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
|
||||
<%@ page import="java.util.Date" %>
|
||||
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
|
||||
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
|
||||
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
|
||||
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
|
||||
<%@ taglib prefix="ui" uri="http://www.winbit.kr/ctl/ui" %>
|
||||
<%--
|
||||
Class Name : PrsntDtlU.jsp
|
||||
Description : 사은품 상세 조회 화면
|
||||
Modification Information
|
||||
|
||||
수정일 수정자 수정내용
|
||||
------- -------- ---------------------------
|
||||
since : 2024.04.15 리브가 최초 생성
|
||||
--%>
|
||||
<!DOCTYPE html>
|
||||
<html lang="ko">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>GC ONE 관리자</title>
|
||||
<%-- 공통 include --%>
|
||||
<%@ include file="/WEB-INF/views/comm/mngr/Include.jsp"%>
|
||||
|
||||
<%--등록한 사진 순서 변경 관련 --%>
|
||||
<script defer src="https://code.jquery.com/ui/1.12.1/jquery-ui.min.js"></script>
|
||||
<style>
|
||||
#sortable {
|
||||
display: flex;
|
||||
list-style-type: none;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
overflow: hidden;
|
||||
}
|
||||
#sortable div.file-preview__container {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
margin-right: 10px;
|
||||
cursor: move;
|
||||
transition: transform 0.2s ease;
|
||||
user-select: none;
|
||||
}
|
||||
</style>
|
||||
|
||||
</head>
|
||||
<script>
|
||||
$(document).ready(function () {
|
||||
|
||||
// // 등록한 사진 순서 변경 관련
|
||||
$("#sortable").sortable({
|
||||
axis: "x"
|
||||
});
|
||||
$("#sortable").disableSelection();
|
||||
|
||||
});
|
||||
|
||||
/* ********************************************************
|
||||
* 수정 AJAX
|
||||
******************************************************** */
|
||||
const fn_regist = function () {
|
||||
const url = '<c:url value="/mngr/goods/prsnt/updatePrsntDtl"/>';
|
||||
|
||||
if(fn_is_empty($('#goodsNm').val())){
|
||||
$('#goodsNm').focus()
|
||||
alert('상품명을 입력해 주세요.')
|
||||
return;
|
||||
}
|
||||
|
||||
if(fn_is_empty($('input[name="goodsCd"]').val())){
|
||||
$('input[name="goodsCd"]').focus()
|
||||
alert('상품코드를 입력해 주세요.')
|
||||
return;
|
||||
}
|
||||
|
||||
const invntryPolicyCd = $('input[name="invntryPolicyCd"]:checked').val()
|
||||
|
||||
if(invntryPolicyCd ==='01' && fn_is_empty($('#invntryQy').val())){
|
||||
$('#invntryQy').focus()
|
||||
alert('재고수량을 입력해 주세요')
|
||||
return;
|
||||
|
||||
}
|
||||
|
||||
const formData = new FormData();
|
||||
const listForm = document.getElementById('listForm')
|
||||
|
||||
// '#invntryQy' 입력란에서 콤마 제거
|
||||
let invntryQyValue = $('#invntryQy').val();
|
||||
$('#invntryQy').val(invntryQyValue.replace(/,/g, ''));
|
||||
|
||||
// '#cnsmrpric' 입력란에서 콤마 제거
|
||||
let cnsmrpricValue = $('#cnsmrpric').val();
|
||||
$('#cnsmrpric').val(cnsmrpricValue.replace(/,/g, ''));
|
||||
|
||||
|
||||
|
||||
//선택한 재고정책
|
||||
const choiceInvntryPolicyCd = $('input[name="invntryPolicyCd"]:checked').val()
|
||||
const prevInvntryPolicyCd = $('#invntryPolicyCdAsIs').val()
|
||||
|
||||
//재고에 따른 판매(재고정책)가 수정되었을 경우
|
||||
if(choiceInvntryPolicyCd !== prevInvntryPolicyCd){
|
||||
alert('재고정책 변경에 따라 판매가능재고수량을 초기화합니다.')
|
||||
fn_create_input('hidden', 'usefulInvntryQyInit','Y', listForm)
|
||||
}
|
||||
|
||||
|
||||
//추가한 이미지 정보
|
||||
// 파일데이터 , 이미지 append
|
||||
var myDropzone = Dropzone.forElement("#my-dropzone");
|
||||
|
||||
let fileAt = 'N';
|
||||
myDropzone.files.forEach(function (file) {
|
||||
if(!fn_is_empty(file)){
|
||||
fileAt='Y'
|
||||
}
|
||||
});
|
||||
|
||||
//등록된 사진이 없거나 이미지삭제가 아닌경우
|
||||
if(fn_is_empty($('#hiddenForm_del_img')) && fn_is_empty($('#sortable div.file-preview__container')) && fileAt==='N'){
|
||||
alert('사은품 이미지를 등록해주세요');
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
|
||||
//삭제 이미지 정보
|
||||
let deleteImgId = $('#hiddenForm_del_img').find('input[name="deleteImgId"]');
|
||||
let cutNb = $('#hiddenForm_del_img').find('input[name="cutNb"]');
|
||||
|
||||
deleteImgId.each(function (idx) {
|
||||
fn_create_input('hidden', 'delGoodsImageVOList['+idx+'].delGoodsImgInnb', deleteImgId.eq(idx).val(), listForm)
|
||||
fn_create_input('hidden', 'delGoodsImageVOList['+idx+'].cutNb', cutNb.eq(idx).val(), listForm)
|
||||
fn_create_input('hidden', 'delGoodsImageVOList['+idx+'].goodsInnb', parseInt($('#goodsInnb').val()) , listForm)
|
||||
fn_create_input('hidden', 'delGoodsImageVOList['+idx+'].sopmalCd', $('#sopmalCd').val(), listForm)
|
||||
})
|
||||
|
||||
//등록된 이미지
|
||||
$('#sortable div.file-preview__container').each(function (idx) {
|
||||
|
||||
fn_create_input('hidden', 'goodsImageVOList['+idx+'].goodsImgInnb', $(this).find('input[name="goodsImgInnb"]').val(), listForm)
|
||||
fn_create_input('hidden', 'goodsImageVOList['+idx+'].cutNb', $(this).find('input[name="cutNb"]').val(), listForm)
|
||||
})
|
||||
|
||||
//파일데이터
|
||||
if(fileAt==='Y'){
|
||||
myDropzone.files.forEach(function (file) {
|
||||
formData.append('files', file); // 서버에서 파일을 받을 때 'files'라는 이름으로 전송
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
$('#listForm').serializeArray().forEach(function (item) {
|
||||
formData.append(item.name, item.value);
|
||||
});
|
||||
|
||||
|
||||
if (confirm('사은품을 <spring:message code="confirm.common.update"/>')) {
|
||||
$.ajax({
|
||||
type: 'post',
|
||||
enctype: 'multipart/form-data',
|
||||
url: url,
|
||||
data: formData,
|
||||
contentType: false,
|
||||
processData: false,
|
||||
success: function (data) {
|
||||
let str = JSON.parse(data.resBody.result);
|
||||
|
||||
if (str.result == 'success') {
|
||||
alert('<spring:message code="success.common.update"/>');
|
||||
window.location.reload();
|
||||
} else {
|
||||
alert('<spring:message code="fail.common.update"/>');
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
/* ********************************************************
|
||||
* 수정폼 이동
|
||||
******************************************************** */
|
||||
const fn_move_dtl_uptpage = function (Innb) {
|
||||
const url = '<c:url value="/mngr/goods/prsnt/selectPrsntDtlForm"/>';
|
||||
|
||||
$('#listForm').attr('action', url);
|
||||
$('#listForm').attr('method', 'get');
|
||||
$('#pageIndex').val(1);
|
||||
$('#goodsInnb').val(Innb);
|
||||
$('#listForm').submit();
|
||||
}
|
||||
|
||||
/* ********************************************************
|
||||
* 목록 조회
|
||||
******************************************************** */
|
||||
const fn_select_list = function () {
|
||||
const url = '<c:url value="/mngr/goods/prsnt/selectPrsntListForm"/>';
|
||||
|
||||
// '#invntryQy' 입력란에서 콤마 제거
|
||||
let invntryQyValue = $('#invntryQy').val();
|
||||
$('#invntryQy').val(invntryQyValue.replace(/,/g, ''));
|
||||
|
||||
// '#cnsmrpric' 입력란에서 콤마 제거
|
||||
let cnsmrpricValue = $('#cnsmrpric').val();
|
||||
$('#cnsmrpric').val(cnsmrpricValue.replace(/,/g, ''));
|
||||
|
||||
$('#listForm').attr('action', url);
|
||||
$('#listForm').attr('method', 'post');
|
||||
$('#listForm').submit();
|
||||
};
|
||||
|
||||
|
||||
//삭제된 이미지 번호 저장 폼
|
||||
let hiddenForm_del_img = document.createElement('form');
|
||||
hiddenForm_del_img.name = 'hiddenForm_del_img';
|
||||
hiddenForm_del_img.id = 'hiddenForm_del_img';
|
||||
hiddenForm_del_img.method = 'post';
|
||||
hiddenForm_del_img.action = '';
|
||||
|
||||
|
||||
//삭제 상품이미지 정보
|
||||
const deleteFileImg = function (obj) {
|
||||
|
||||
|
||||
const rmImg = $(obj).siblings('div.file-preview__image')
|
||||
const rmImgId = rmImg.children('input[name="goodsImgInnb"]').val()
|
||||
const cutNb = rmImg.children('input[name="cutNb"]').val()
|
||||
|
||||
|
||||
|
||||
fn_create_input('hidden', "deleteImgId", rmImgId, hiddenForm_del_img);
|
||||
fn_create_input('hidden', "cutNb", cutNb, hiddenForm_del_img);
|
||||
|
||||
document.body.append(hiddenForm_del_img);
|
||||
$(obj).parent('div.file-preview').parent('div.file-preview__container').remove()
|
||||
}
|
||||
|
||||
const fn_create_input = function (type, name, value, tgtForm) {
|
||||
const input = document.createElement('input');
|
||||
input.setAttribute("type", type);
|
||||
input.setAttribute("name", name);
|
||||
input.setAttribute("value", value);
|
||||
tgtForm.appendChild(input);
|
||||
}
|
||||
|
||||
</script>
|
||||
<body>
|
||||
<%@ include file="/WEB-INF/views/comm/mngr/Header.jsp"%>
|
||||
<main class="main">
|
||||
<%@ include file="/WEB-INF/views/comm/mngr/Left.jsp"%>
|
||||
<div class="content">
|
||||
<div class="content__inner">
|
||||
<button class="side-nav__fold"><span class="visually-hidden">좌측메뉴 펼치기/닫기</span></button>
|
||||
<div class="page-title">
|
||||
<h2 class="page-title__title">사은품 수정</h2>
|
||||
<div class="page-title__btn-container">
|
||||
<button onclick="fn_select_list()" onkeypress="this.onclick" class="btn outline"><spring:message
|
||||
code="button.list"/></button>
|
||||
<button class="btn primary" onclick="fn_regist();"><spring:message code="button.update"/></button>
|
||||
</div>
|
||||
</div>
|
||||
<form id="listForm" method="post" action="" enctype="multipart/form-data">
|
||||
<spring:eval expression="@environment.getProperty('spring.servlet.multipart.max-file-size')" var="maxFileSize"/>
|
||||
<spring:eval expression="@environment.getProperty('mngrfo.common.fileupload.extensions.images')" var="acceptFileExtensions"/>
|
||||
<section class="content-section content-scroll-detect content-fold">
|
||||
<input type="hidden" id="goodsInnb" name="goodsInnb" value="${resultMap.list.goodsInnb}"/>
|
||||
<input type="hidden" id="goodsOptnInnb" name="goodsOptnInnb" value="${resultMap.list.goodsOptnInnb}"/>
|
||||
<input type="hidden" id="sopmalCd" name="sopmalCd" value="${resultMap.list.sopmalCd}"/>
|
||||
<input type="hidden" id="optnVal1" name="optnVal1" value="${resultMap.list.optnVal1}"/>
|
||||
<input type="hidden" id="optnCd1" name="optnCd1" value="${resultMap.list.optnCd1}"/>
|
||||
<spring:eval expression="@environment.getProperty('mngrfo.common.fileupload.cdnurl')" var="cdnurl"/>
|
||||
<div class="content-fold__header">
|
||||
<h3 class="content-section__title">기본정보</h3>
|
||||
<button class="content-fold__btn"><span class="visually-hidden">접기</span></button>
|
||||
</div>
|
||||
<div class="content-fold__content">
|
||||
<div class="table-wrapper">
|
||||
<table class="table">
|
||||
<caption>사은품</caption>
|
||||
<colgroup>
|
||||
<col style="width: 12%;">
|
||||
<col style="width: 38%;">
|
||||
<col style="width: 12%;">
|
||||
<col style="width: 38%;">
|
||||
</colgroup>
|
||||
<tbody>
|
||||
<tr>
|
||||
<th>상품 명<span class="red-7">*</span></th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<input class="input-text lg" type="text" id="goodsNm" name="goodsNm"
|
||||
title="상품 명" maxlength="35" value="${resultMap.list.goodsNm}">
|
||||
</div>
|
||||
</td>
|
||||
<th>판매 상태</th>
|
||||
<td colspan="2">
|
||||
<div class="td-inner">
|
||||
<div class="custom-radio-container">
|
||||
<c:forEach items="${resultMap.goodsDftinfoSttusList}"
|
||||
var="goodsDftinfoSttus" varStatus="status">
|
||||
<div class="custom-radio">
|
||||
<input type="radio" id="${goodsDftinfoSttus.cd}"
|
||||
name="goodsSttusCd" value="${goodsDftinfoSttus.cd}"
|
||||
<c:if test="${goodsDftinfoSttus.cd eq resultMap.list.goodsSttusCd}">checked</c:if>>
|
||||
<label for="${goodsDftinfoSttus.cd}">${goodsDftinfoSttus.cdNm}</label>
|
||||
</div>
|
||||
</c:forEach>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>재고에 따른 판매</th>
|
||||
<td colspan="3">
|
||||
<div class="td-inner">
|
||||
<div class="custom-radio-container">
|
||||
<c:forEach items="${resultMap.goodsDftinfoInvntryPolicyList}"
|
||||
var="goodsDftinfoInvntryPolicy" varStatus="status">
|
||||
<div class="custom-radio">
|
||||
<input type="radio"
|
||||
id="goodsDftinfoInvntryPolicy${status.count}"
|
||||
name="invntryPolicyCd"
|
||||
value="${goodsDftinfoInvntryPolicy.cd}"
|
||||
<c:if test="${goodsDftinfoInvntryPolicy.cd eq resultMap.list.invntryPolicyCd}">checked</c:if>>
|
||||
<label for="goodsDftinfoInvntryPolicy${status.count}">${goodsDftinfoInvntryPolicy.cdNm}</label>
|
||||
<input type="hidden" id="invntryPolicyCdAsIs" value="${resultMap.list.invntryPolicyCd}"/>
|
||||
</div>
|
||||
</c:forEach>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class="table-wrapper">
|
||||
<table class="table vertical draggable">
|
||||
<colgroup>
|
||||
<col style="width: auto;">
|
||||
<col style="width: 20%;">
|
||||
<col style="width: 20%;">
|
||||
<col style="width: 20%;">
|
||||
<col style="width: 20%;">
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>상품코드<span class="red-7">*</span></th>
|
||||
<th>재고</th>
|
||||
<th>가용 재고</th>
|
||||
<th>정가</th>
|
||||
<th>판매가</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>
|
||||
<input class="input-text full" type="text" id="goodsCd" name="goodsCd" value="${resultMap.list.goodsCd}" />
|
||||
</td>
|
||||
<td>
|
||||
<input class="input-text number full" type="text" id="invntryQy" name="invntryQy" title="재고" maxlength="10" value="${resultMap.list.invntryQy}">
|
||||
</td>
|
||||
<td>
|
||||
<input class="input-text full" type="text" title="가용 재고" maxlength="10" value="${resultMap.list.ableQy}" readonly>
|
||||
</td>
|
||||
<td>
|
||||
<input class="input-text number full" type="text" id="cnsmrpric" name="cnsmrpric" title="정가" maxlength="10" value="${resultMap.list.cnsmrpric}">
|
||||
</td>
|
||||
<td>
|
||||
<input class="input-text full" type="text" name="" title="판매가" maxlength="20" disabled>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</section>
|
||||
|
||||
<section class="content-section content-scroll-detect content-fold">
|
||||
<div class="content-fold__header">
|
||||
<h3 class="content-section__title">상품 사진</h3>
|
||||
<button class="content-fold__btn"><span class="visually-hidden">접기</span></button>
|
||||
</div>
|
||||
<div class="content-fold__content">
|
||||
<div class="table-wrapper">
|
||||
<table class="table">
|
||||
<caption>해당 테이블에 대한 설명</caption>
|
||||
<colgroup>
|
||||
<col style="width: 12%;">
|
||||
<col>
|
||||
</colgroup>
|
||||
<tbody>
|
||||
<tr>
|
||||
<th>사진 등록<span class="red-7">*</span></th>
|
||||
<td>
|
||||
<div class="td-inner vertical">
|
||||
<div class="dropzone-wrapper">
|
||||
<spring:eval expression="@environment.getProperty('mngrfo.common.fileupload.extensions.images')" var="acceptFileExtensions"/>
|
||||
<div class="dropzone" id="my-dropzone">
|
||||
</div>
|
||||
<p class="fyi gray-7 mt-15">여러 개의 이미지를 한 번에 등록 가능합니다.</p>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>등록한 사진</th>
|
||||
<td>
|
||||
<div class="td-inner" id="sortable">
|
||||
<c:if test="${not empty resultMap.imglist}">
|
||||
<c:forEach items="${resultMap.imglist}" var="img" varStatus="status">
|
||||
<c:if test="${img.imgKnd eq '02'}">
|
||||
<div class="file-preview__container">
|
||||
<div class="file-preview">
|
||||
<span class="file-preview__number"></span>
|
||||
<button class="file-preview__delete" id="file-preview__delete" onclick="deleteFileImg(this)">
|
||||
<span class="visually-hidden">삭제</span></button>
|
||||
<div class="file-preview__image">
|
||||
<img src="<c:out value="${cdnurl}${img.img}"/>" alt="상품 이미지" onerror="this.src='/mngr/images/image_placeholder.png'" >
|
||||
<input type="hidden" name="goodsImgInnb" value="${img.goodsImgInnb}"/>
|
||||
<input type="hidden" name="imgKnd" value="${img.imgKnd}"/>
|
||||
<input type="hidden" name="cutNb" value="${img.cutNb}"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</c:if>
|
||||
</c:forEach>
|
||||
</c:if>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
|
||||
<section class="content-section content-scroll-detect content-fold">
|
||||
<div class="content-fold__header">
|
||||
<h3 class="content-section__title">변경 내역</h3>
|
||||
<button class="content-fold__btn"><span class="visually-hidden">접기</span></button>
|
||||
</div>
|
||||
<div class="content-fold__content">
|
||||
<div class="change-log">
|
||||
<c:if test="${not empty resultMap.list}">
|
||||
<p class="change-log__list" align="left">
|
||||
<span class="change-log__date"><c:out value="${resultMap.list.updtDt}"/></span>
|
||||
<span class="change-log__description">관리자 <c:out
|
||||
value="${resultMap.list.mngrNm}"/>님 (이)가 </span> 사은품의 정보를 수정하였습니다.
|
||||
</p>
|
||||
</c:if>
|
||||
<c:if test="${ empty resultMap.list}">
|
||||
<p class="change-log__list">변경 내역이 없습니다.</p>
|
||||
</c:if>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<!--검색 조건 , 페이징 조건 -->
|
||||
<input type="hidden" id="srchType" name="srchType" title="검색타입" value="<c:out value="${ resultMap.BOGoodsVO.srchType }"/>">
|
||||
<input type="hidden" id="srchStr" name="srchStr" title="검색어" value="<c:out value="${ resultMap.BOGoodsVO.srchStr }"/>">
|
||||
<input type="hidden" id="dateDv" name="dateDv" title="검색날짜" value="<c:out value="${ resultMap.BOGoodsVO.dateDv }"/>">
|
||||
<input type="hidden" id="startDate" name="startDate" title="검색날짜" value="<c:out value="${ resultMap.BOGoodsVO.startDate }"/>">
|
||||
<input type="hidden" id="endDate" name="endDate" title="검색날짜" value="<c:out value="${ resultMap.BOGoodsVO.endDate }"/>">
|
||||
<input type="hidden" id="pageIndex" name="pageIndex" value="<c:out value="${ resultMap.BOGoodsVO.pageIndex }"/>"/>
|
||||
<input type="hidden" id="pageUnit" name="pageUnit" value="<c:out value="${ resultMap.BOGoodsVO.pageUnit }"/>"/>
|
||||
</form>
|
||||
<button class="scroll-to-top"><span class="visually-hidden">위로가기</span></button>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
145
src/main/webapp/WEB-INF/views/mngr/goods/prsnt/PrsntListR.jsp
Normal file
145
src/main/webapp/WEB-INF/views/mngr/goods/prsnt/PrsntListR.jsp
Normal file
@@ -0,0 +1,145 @@
|
||||
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
|
||||
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
|
||||
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
|
||||
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
|
||||
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
|
||||
<%@ taglib prefix="ui" uri="http://www.winbit.kr/ctl/ui" %>
|
||||
<%@ taglib prefix="f" uri="/WEB-INF/tlds/f.tld" %>
|
||||
|
||||
<%--
|
||||
Class Name : PrsntListR.jsp
|
||||
Description : 사은품 조회 리스트
|
||||
Modification Information
|
||||
|
||||
수정일 수정자 수정내용
|
||||
------- -------- ---------------------------
|
||||
2024-04-11 리브가 최초 생성
|
||||
--%>
|
||||
<section class="content-section">
|
||||
<div class="form-control-container">
|
||||
<div class="left">
|
||||
<div class="search-number">
|
||||
<span class="search-number__text">총 <strong><c:out value="${ resultMap.paginationInfo.totalRecordCount }"/></strong>건</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="center">
|
||||
</div>
|
||||
<div class="right">
|
||||
<div class="select-box">
|
||||
<select title="정렬순" name="sortDv" id="sortDv" onchange="fn_select_list(1);return false;">
|
||||
<option value="goodsNmAsc" <c:if test="${resultMap.BOGoodsVO.sortDv eq 'goodsNmAsc'}">selected="selected"</c:if>>상품명 오름차순</option>
|
||||
<option value="goodsNmDesc" <c:if test="${resultMap.BOGoodsVO.sortDv eq 'goodsNmDesc'}">selected="selected"</c:if>>상품명 내림차순</option>
|
||||
<option value="slepricAsc" <c:if test="${resultMap.BOGoodsVO.sortDv eq 'slepricAsc'}">selected="selected"</c:if>>정가 오름차순</option>
|
||||
<option value="slepricDesc" <c:if test="${resultMap.BOGoodsVO.sortDv eq 'slepricDesc'}">selected="selected"</c:if>>정가 내림차순</option>
|
||||
<option value="invntryQyAsc" <c:if test="${resultMap.BOGoodsVO.sortDv eq 'invntryQyAsc'}">selected="selected"</c:if>>재고 오름차순</option>
|
||||
<option value="invntryQyDesc" <c:if test="${resultMap.BOGoodsVO.sortDv eq 'invntryQyDesc'}">selected="selected"</c:if>>재고 내림차순</option>
|
||||
<option value="registDtAsc" <c:if test="${resultMap.BOGoodsVO.sortDv eq 'registDtAsc'}">selected="selected"</c:if>>등록일순 오름차순</option>
|
||||
<option value="registDtDesc" <c:if test="${resultMap.BOGoodsVO.sortDv eq 'registDtDesc' || resultMap.BOGoodsVO.sortDv eq null}">selected="selected"</c:if>>등록일순 내림차순</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="select-box">
|
||||
<select id="pageUnit" name="pageUnit" title="페이지당 출력될 목록건수" onchange="fn_select_list(1);">
|
||||
<c:forEach items="${ resultMap.paginationInfo.pageUnitArr }" var="pageUnit"
|
||||
varStatus="pageUnitStatus">
|
||||
<option value="<c:out value="${ pageUnit }"/>"
|
||||
<c:if test="${ resultMap.paginationInfo.recordCountPerPage eq pageUnit}">selected="selected"</c:if>>
|
||||
<c:out value="${ pageUnit }"/>개씩
|
||||
</option>
|
||||
</c:forEach>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<hr class="horizontal-line">
|
||||
<div class="form-control-container">
|
||||
<div class="left">
|
||||
<button class="btn outline sm" onclick="fn_delete_check();" >선택 삭제</button>
|
||||
</div>
|
||||
<div class="center">
|
||||
</div>
|
||||
</div>
|
||||
<hr class="spacing">
|
||||
<div class="table-wrapper">
|
||||
<table class="table vertical">
|
||||
<caption>사은품 조회</caption>
|
||||
<!-- 각 열 width 설정 -->
|
||||
<colgroup>
|
||||
<col style="width: 4%;">
|
||||
<col style="width: 4%;">
|
||||
<col style="width: 7%;">
|
||||
<col style="width: auto;">
|
||||
<col style="width: 7%;">
|
||||
<col style="width: 7%;">
|
||||
<col style="width: 7%;">
|
||||
<col style="width: 14%;">
|
||||
<col style="width: 6%;">
|
||||
<col style="width: 7%;">
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>
|
||||
<label class="b-checkbox checkbox is-medium">
|
||||
<input type="checkbox" id="checkAll" value="">
|
||||
<span class="check"></span>
|
||||
</label>
|
||||
</th>
|
||||
<th>번호</th>
|
||||
<th colspan="2">상품명</th>
|
||||
<th>정가</th>
|
||||
<th>판매가</th>
|
||||
<th>재고</th>
|
||||
<th>등록일/수정일</th>
|
||||
<th>판매상태</th>
|
||||
<th>관리</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<c:choose>
|
||||
<c:when test="${ not empty resultMap.list }">
|
||||
<c:forEach items="${ resultMap.list }" var="list" varStatus="status">
|
||||
<tr>
|
||||
<td>
|
||||
<label class="b-checkbox checkbox is-medium">
|
||||
<input type="checkbox" name="goodsInnbChk" class="goodsInnb" value="${list.goodsInnb},${list.sopmalCd}">
|
||||
<span class="check"></span>
|
||||
</label>
|
||||
</td>
|
||||
<td><c:out value="${ resultMap.paginationInfo.totalRecordCount - list.rnum + 1 }" /></td>
|
||||
<td>
|
||||
<spring:eval expression="@environment.getProperty('mngrfo.common.fileupload.cdnurl')" var="cdnurl"/>
|
||||
<img src="<c:out value="${cdnurl}${list.goodsImgCours}"/> " onerror="this.src='<c:url value="/mngr/images/image_placeholder.png"/>'" alt="${list.goodsNm}" width="56" height="56">
|
||||
</td>
|
||||
<td><a class="under-line" onclick="fn_move_goods_dtl_common(<c:out value="${list.goodsInnb}"/>, 'mngr','02','_self')">${list.goodsNm}</a>
|
||||
</td>
|
||||
<td>${list.cnsmrpric}</td>
|
||||
<td>${list.slepric}</td>
|
||||
<td>${list.invntryQy}</td>
|
||||
<td>
|
||||
<span>${list.registDt}</span>
|
||||
<br>
|
||||
<span>${list.updtDt}</span>
|
||||
</td>
|
||||
<td>${list.goodsSttusNm}</td>
|
||||
<td>
|
||||
<div class="manage-btn-container">
|
||||
<button class="btn xsm primary outline" type="button" onclick="fn_move_goods_dtl_common(<c:out value="${list.goodsInnb}"/>, 'mngr','02', '_self')">
|
||||
<spring:message code="button.update"/></button>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</c:forEach>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<tr>
|
||||
<td colspan="100%"><spring:message code="common.nodata"/></td>
|
||||
</tr>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<div class="pagination__container">
|
||||
<ui:pagination paginationInfo="${resultMap.paginationInfo}" type="image" jsFunction="fn_select_list"/>
|
||||
</div>
|
||||
@@ -0,0 +1,796 @@
|
||||
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
|
||||
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
|
||||
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
|
||||
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
|
||||
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
|
||||
<%@ taglib prefix="ui" uri="http://www.winbit.kr/ctl/ui" %>
|
||||
<%@ taglib prefix="f" uri="/WEB-INF/tlds/f.tld" %>
|
||||
|
||||
<%--
|
||||
Class Name : PrsntListRForm.jsp
|
||||
Description : 사은품 조회 폼
|
||||
Modification Information
|
||||
|
||||
수정일 수정자 수정내용
|
||||
------- -------- ---------------------------
|
||||
2024-04-11 리브가 최초 생성
|
||||
--%>
|
||||
<!DOCTYPE html>
|
||||
<html lang="ko">
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>GC ONE 통합 관리자</title>
|
||||
|
||||
<%-- 공통 include --%>
|
||||
<%@ include file="/WEB-INF/views/comm/mngr/Include.jsp"%>
|
||||
|
||||
</head>
|
||||
<script>
|
||||
let goodsDftinfoArr = [];
|
||||
|
||||
$(document).ready(function () {
|
||||
let pageIndex = '<c:out value="${ resultMap.BOGoodsVO.pageIndex }"/>';
|
||||
let pageUnit = '<c:out value="${ resultMap.BOGoodsVO.pageUnit }"/>';
|
||||
fn_select_list(pageIndex, pageUnit);
|
||||
|
||||
$('#listForm').on('keydown', function (event) {
|
||||
if (event.keyCode === 13) {
|
||||
event.preventDefault();
|
||||
fn_select_list(1);
|
||||
}
|
||||
});
|
||||
|
||||
fn_event();
|
||||
|
||||
});
|
||||
|
||||
//판매상태 체크 검색
|
||||
$(document).on('click','input[name="goodsDftinfoArr"]' , function() {
|
||||
|
||||
|
||||
// 체크된 체크박스의 값을 배열에 추가
|
||||
if(!goodsDftinfoArr.some(item => item === $(this).val())){
|
||||
goodsDftinfoArr.push($(this).val());
|
||||
}else{
|
||||
//체크된 값이 있으면 제거
|
||||
for(let i = 0; i < goodsDftinfoArr.length; i++) {
|
||||
if (goodsDftinfoArr[i] === $(this).val()) {
|
||||
goodsDftinfoArr.splice(i, 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// 조건 확인 및 배열 초기화
|
||||
if (goodsDftinfoArr.includes("") ||
|
||||
(goodsDftinfoArr.includes("01") && goodsDftinfoArr.includes("02") && goodsDftinfoArr.includes("03"))) {
|
||||
goodsDftinfoArr = []; // 배열 초기화
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
/* ********************************************************
|
||||
* 목록 조회
|
||||
******************************************************** */
|
||||
const fn_select_list = function (pageIndex, pageUnit) {
|
||||
let dataStr;
|
||||
|
||||
if(goodsDftinfoArr.length !==0){
|
||||
for( let value of goodsDftinfoArr ){
|
||||
$('#listForm').append(
|
||||
$('<input>', {
|
||||
'type': 'hidden',
|
||||
'name': 'goodsDftinfoSttus',
|
||||
'value': value
|
||||
})
|
||||
)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if (!pageIndex) {
|
||||
$('#pageIndex').val(1);
|
||||
} else {
|
||||
$('#pageIndex').val(pageIndex);
|
||||
}
|
||||
|
||||
if (!pageUnit) {
|
||||
dataStr = $('#listForm').serialize();
|
||||
} else {
|
||||
if ($('#pageUnit').length) {
|
||||
$('#pageUnit').val(pageUnit);
|
||||
dataStr = $('#listForm').serialize();
|
||||
} else {
|
||||
dataStr = $('#listForm').serialize() + '&pageUnit=' + pageUnit;
|
||||
}
|
||||
}
|
||||
|
||||
$.ajax({
|
||||
type: "post",
|
||||
url: "<c:url value="/mngr/goods/prsnt/selectPrsntList"/>",
|
||||
data: dataStr,
|
||||
success: function (resultHtml) {
|
||||
$('#pageDiv').html(resultHtml);
|
||||
$('#pageUnit').niceSelect();
|
||||
$('#sortDv').niceSelect();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/* ********************************************************
|
||||
* 등록폼 이동
|
||||
******************************************************** */
|
||||
const fn_move_regpage = function () {
|
||||
const url = '<c:url value="/mngr/goods/prsnt/insertPrsntForm"/>';
|
||||
|
||||
$('#listForm').attr('action', url);
|
||||
$('#listForm').attr('method', 'post');
|
||||
$('#listForm').submit();
|
||||
};
|
||||
|
||||
/* ********************************************************
|
||||
* 수정폼 이동
|
||||
******************************************************** */
|
||||
const fn_move_dtl_uptpage = function (Innb) {
|
||||
const url = '<c:url value="/mngr/goods/prsnt/selectPrsntDtlForm"/>';
|
||||
|
||||
$('#listForm').attr('action', url);
|
||||
$('#listForm').attr('method', 'get');
|
||||
$('#goodsInnb').val(Innb);
|
||||
$('#listForm').submit();
|
||||
}
|
||||
|
||||
|
||||
history.replaceState({}, null, location.pathname);
|
||||
const fn_event = function () {
|
||||
/* ****************************
|
||||
* 공통
|
||||
******************************/
|
||||
/* input 숫자만 입력 */
|
||||
$(document).on('input', '.number-only', function () {
|
||||
$(this).val(($(this).val().replace(/[^0-9]/g, '')).replace(/^0+/, ''));
|
||||
});
|
||||
|
||||
|
||||
/* 목록 > 전체선택 체인지 이벤트 */
|
||||
$(document).on('change', '#checkAll', function() {
|
||||
let checkbox = $(this).closest('table').find('input[name="goodsInnbChk"]');
|
||||
|
||||
$(checkbox).prop('checked', false);
|
||||
$(checkbox).prop('checked', $(this).is(':checked'));
|
||||
});
|
||||
|
||||
/* ****************************
|
||||
* 공통
|
||||
******************************/
|
||||
/* ****************************
|
||||
* STEP1. 구매자 시작
|
||||
******************************/
|
||||
/* 관리자 주문 > 구매자조회 > 선택 버튼 클릭 이벤트 */
|
||||
$('input:radio[name="mbrDvCd"]').on('click', function () {
|
||||
const mbrDvCd = $(this).val();
|
||||
const isNonMbr = '02' == mbrDvCd;
|
||||
|
||||
if (isNonMbr) {
|
||||
localStorage.removeItem('purchsr');
|
||||
|
||||
fn_set_apply_purchsr();
|
||||
|
||||
$('input:radio[name="ordrTy"][value="01"]').trigger('click');
|
||||
}
|
||||
|
||||
$('#ordrrInfo').css('display', isNonMbr ? 'block' : 'none');
|
||||
|
||||
$('#ordrTyCategory').css('display', isNonMbr ? 'none' : 'block');
|
||||
});
|
||||
|
||||
/* 관리자 주문 > 구매자조회 > 선택 버튼 클릭 이벤트 */
|
||||
$('#btnChoiceMbr').on('click', function () {
|
||||
$('input:radio[name="mbrDvCd"][value="01"]').trigger('click');
|
||||
|
||||
fn_go_purchsr_popup();
|
||||
});
|
||||
|
||||
/* 관리자 주문 > 구매자조회 > 검색조건 > 초기화 선택 이벤트 */
|
||||
$(document).on('click', '#initPurchsrCond', function () {
|
||||
fn_reset_form('purchsrCondForm');
|
||||
|
||||
$('#user-select-pop').find('.dateRange-btn').filter('#allDays').trigger('click');
|
||||
});
|
||||
|
||||
/* 관리자 주문 > 상품조회 > 검색조건 > 검색 선택 이벤트 */
|
||||
$(document).on('click', '#searchPurchsr', function () {
|
||||
fn_get_purchsr_list(1);
|
||||
});
|
||||
/* ****************************
|
||||
* STEP1. 구매자 종료
|
||||
******************************/
|
||||
|
||||
/* ****************************
|
||||
* STEP2. 상품 시작
|
||||
******************************/
|
||||
/* 관리자 주문 > 상품선택 버튼 클릭 이벤트 */
|
||||
$('#btnChoiceGoods').on('click', function () {
|
||||
const mbrInnb = fn_get_mbr_innb();
|
||||
const isPurchsr = $('input:radio[name="mbrDvCd"]:checked').val() == '01' ? true : false;
|
||||
|
||||
if (isPurchsr && fn_is_empty(mbrInnb)) {
|
||||
alert('구매자를 선택 하세요.');
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
fn_go_goods_popup(mbrInnb);
|
||||
});
|
||||
|
||||
/* 관리자 주문 > 상품조회 > 검색조건 > 카테고리 선택 이벤트 */
|
||||
$(document).on('change', '.ctgry', function () {
|
||||
const upperCtgryId = $(this).val(); // 상위카테고리
|
||||
const currCtgryDepth = $(this).attr('id').replace('ctgryDepth', '');
|
||||
const targetDepth = (parseInt(currCtgryDepth) + 1);
|
||||
const targetCtgryId = 'ctgryDepth' + targetDepth;
|
||||
|
||||
if (fn_is_empty(upperCtgryId)) {
|
||||
for (let i = targetDepth; i < 5; i++) {
|
||||
$('#search-section').find('#ctgryDepth' + i).empty().append('<option value="">' + i + '차 카테고리</option>').niceSelect('update');
|
||||
}
|
||||
} else {
|
||||
fn_get_goods_ctgry(upperCtgryId, targetCtgryId);
|
||||
}
|
||||
|
||||
$('#search-section').find('#ctgryId').val(upperCtgryId);
|
||||
});
|
||||
|
||||
|
||||
/* 관리자 주문 > 상품조회 > 검색조건 > 날짜 선택 이벤트 */
|
||||
$(document).on('click', '.dateRange-btn', function () {
|
||||
const date = $(this).attr('id');
|
||||
|
||||
$('.dateRange-btn').removeClass('selected');
|
||||
$('#' + date).addClass('selected');
|
||||
|
||||
const datepicker = $(this).closest('.td-inner').find('.datepicker');
|
||||
const start = $(datepicker[0]).attr('id');
|
||||
const end = $(datepicker[1]).attr('id');
|
||||
|
||||
if ('allDays' === date) {
|
||||
$('#' + start + ', #' + end).val('');
|
||||
|
||||
$('#datePeriod').val(date);
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
fn_set_date(start, end, end, date);
|
||||
|
||||
$('#datePeriod').val(date);
|
||||
});
|
||||
|
||||
/* 관리자 주문 > 상품조회 > 검색조건 > 초기화 선택 이벤트 */
|
||||
$(document).on('click', '#resetBtn', function () {
|
||||
fn_reset_form('search-section');
|
||||
|
||||
const popup = $('#search-section');
|
||||
|
||||
$(popup).find('#ctgryDepth1').val('').trigger('change');
|
||||
|
||||
if(!$('#goodsDftinfo-all').prop('checked')){
|
||||
$('#goodsDftinfo-all').click()
|
||||
}
|
||||
|
||||
$(popup).find('.dateRange-btn').filter('#allDays').trigger('click');
|
||||
|
||||
fn_select_list(1);
|
||||
});
|
||||
|
||||
/* 관리자 주문 > 상품조회 > 검색조건 > 검색 선택 이벤트 */
|
||||
$(document).on('click', '#searchGoods', function () {
|
||||
fn_get_goods_list(1);
|
||||
});
|
||||
|
||||
/* 관리자 주문 > 상품조회 > 옵션선택 > 일반 옵션(추가) 선택 이벤트 */
|
||||
$(document).on('change', '[id*="nomalOptn"], [id*="addOptn"]', function () {
|
||||
const goodsOptnInnbs = $(this).val();
|
||||
|
||||
|
||||
if (!fn_is_empty(goodsOptnInnbs)) {
|
||||
const goodsInnb = $(this).closest('form').find('#goodsInnb').val();
|
||||
|
||||
fn_get_goods_nomal_optn(goodsInnb, goodsOptnInnbs);
|
||||
}
|
||||
});
|
||||
|
||||
/* 관리자 주문 > 상품조회 > 옵션선택 > 재고 옵션 선택 이벤트 */
|
||||
$(document).on('change', '[id*="stockOptn"]', function () {
|
||||
const optnId = $(this).attr('id');
|
||||
const optnVal = $(this).val();
|
||||
|
||||
const targetDepth = (parseInt(optnId.replace('stockOptn', '')) + 1);
|
||||
const targetOptnId = 'stockOptn' + targetDepth;
|
||||
|
||||
if (!fn_is_empty(optnVal)) {
|
||||
const goodsInnb = $(this).closest('form').find('#goodsInnb').val();
|
||||
const goodsOptnInnbs = optnVal.split('|');
|
||||
|
||||
fn_get_goods_stock_optn_list(goodsInnb, goodsOptnInnbs, optnId, targetOptnId);
|
||||
} else {
|
||||
for (let i = targetDepth; i < 5; i++) {
|
||||
const name = $('#option-select-pop').find('#optn' + i + ' option:first').text();
|
||||
|
||||
$('#option-select-pop').find('#optn' + i).empty().append('<option value="">' + name + '</option>').niceSelect('update');
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
/* 관리자 주문 > 상품조회 > 옵션선택 > 옵션 삭제 선택 이벤트 */
|
||||
$(document).on('click', '[id*="delete-optn-"]', function () {
|
||||
const optnDiv = $(this).attr('id').replace('delete-', '');
|
||||
|
||||
$('.' + optnDiv).remove();
|
||||
|
||||
fn_set_choice_goods_optn_total_price();
|
||||
})
|
||||
|
||||
/* 관리자 주문 > 상품조회 > 옵션선택 > 옵션 수량 선택 이벤트 */
|
||||
$(document).on('click', '[id*="optn-qy-"]', function () {
|
||||
const div = $(this).closest('.product-count');
|
||||
const calcDv = $(this).attr('id').replace('optn-qy-', '')
|
||||
const slepric = parseInt($(div).find('.slepric').val());
|
||||
|
||||
let qy = parseInt($(div).find('.qy').val());
|
||||
|
||||
if ('plus' === calcDv) {
|
||||
qy = qy + 1;
|
||||
} else {
|
||||
qy = qy - 1;
|
||||
}
|
||||
|
||||
qy = qy < 1 ? 1 : qy;
|
||||
|
||||
const optnPric = slepric * qy;
|
||||
|
||||
$(div).find('.qy').val(qy);
|
||||
$(div).find('.subSlepric').val(optnPric);
|
||||
|
||||
$(div).find('.optn-qy').empty().text(qy);
|
||||
$(div).find('.sub-slepric').empty().text(optnPric.toLocaleString());
|
||||
|
||||
fn_set_choice_goods_optn_total_price();
|
||||
})
|
||||
|
||||
/* 관리자 주문 > 상품조회 > 옵션선택 > 옵션 선택 이벤트 */
|
||||
$(document).on('click', '#btnChoiceOption', function () {
|
||||
const form = $(this).closest('form');
|
||||
const goodsInnb = $(form).find('#goodsInnb').val();
|
||||
const div = $(form).find('.product-count');
|
||||
|
||||
if (div.length === 0) {
|
||||
alert('상품을 선택해 주십시요.')
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
const mbrDvCd = $('input:radio[name="mbrDvCd"]:checked').val();
|
||||
const mbrInnb = fn_get_mbr_innb();
|
||||
|
||||
let options = new Array();
|
||||
|
||||
$(div).each(function () {
|
||||
const goodsOptnInnb = $(this).find('.goodsOptnInnb').val();
|
||||
const qy = $(this).find('.qy').val();
|
||||
const inputOptn = $(this).find('.inputOptn').val();
|
||||
|
||||
let option = {
|
||||
'goodsInnb': goodsInnb,
|
||||
'goodsOptnInnb': goodsOptnInnb,
|
||||
'qy': qy,
|
||||
'mbrDvCd': mbrDvCd,
|
||||
'mbrInnb': mbrInnb,
|
||||
'inputOptn': inputOptn
|
||||
}
|
||||
|
||||
options.push(option);
|
||||
});
|
||||
|
||||
fn_get_choice_order_goods(options)
|
||||
})
|
||||
|
||||
/* 관리자 주문 > 상품조회 > 옵션선택 > 주문상품 할인내역 팝업 */
|
||||
$(document).on({
|
||||
mouseover: function () {
|
||||
const index = $(this).attr('data-hoverbox');
|
||||
|
||||
const selectedHoverContent = $('#' + index).show();
|
||||
|
||||
const left = $(this).offset().left;
|
||||
const top = $(this).offset().top;
|
||||
const width = $(this).width();
|
||||
const height = $(this).height();
|
||||
|
||||
selectedHoverContent.css({
|
||||
left: left + width + 10,
|
||||
top: top + height / 2 - selectedHoverContent.height() / 2,
|
||||
});
|
||||
},
|
||||
mouseleave: function () {
|
||||
$('.hover-box-content').hide();
|
||||
}
|
||||
}, '.hover-box-trigger');
|
||||
|
||||
/* 관리자 주문 > 상품조회 > 옵션선택 > 옵션 선택 이벤트 */
|
||||
$(document).on('click', '#applyGoods', function () {
|
||||
const tbody = $('#product-select-pop').find('#choiceGoods');
|
||||
const mbrDvCd = $('input:radio[name="mbrDvCd"]:checked').val();
|
||||
const mbrInnb = fn_get_mbr_innb();
|
||||
|
||||
let goodsList = new Array();
|
||||
|
||||
$(tbody).find('tr').each(function () {
|
||||
const goodsInnb = $(this).find('.goodsInnb').val();
|
||||
const goodsOptnInnb = $(this).find('.goodsOptnInnb').val();
|
||||
const qy = $(this).find('.qy').val();
|
||||
const inputOptn = $(this).find('.inputOptn').val();
|
||||
|
||||
let goods = {
|
||||
'goodsInnb': goodsInnb,
|
||||
'goodsOptnInnb': goodsOptnInnb,
|
||||
'qy': qy,
|
||||
'mbrDvCd': mbrDvCd,
|
||||
'mbrInnb': mbrInnb,
|
||||
'inputOptn': inputOptn
|
||||
}
|
||||
|
||||
goodsList.push(goods);
|
||||
});
|
||||
|
||||
fn_get_apply_goods_list(goodsList, null);
|
||||
});
|
||||
|
||||
/* 관리자 주문 > 상품조회 > 적용 쿠폰 목록 선택 이벤트 */
|
||||
$(document).on('change', '.useCoupons', function () {
|
||||
const tbody = $('#orderGoodsList');
|
||||
const mbrDvCd = $('input:radio[name="mbrDvCd"]:checked').val();
|
||||
|
||||
const goodsTr = $(this).closest('tr').prev();
|
||||
const useGoodsInnb = $(goodsTr).find('.goodsInnb').val();
|
||||
const useGoodsOptnInnb = $(goodsTr).find('.goodsOptnInnb').val();
|
||||
|
||||
const option = $('option:selected', this);
|
||||
const dplctDscntAt = $(option).attr('dplct-dscnt-at');
|
||||
const otrCouponSmtmUseAt = $(option).attr('otr-coupon-smtm_use-at');
|
||||
const couponInnb = $(option).attr('coupon-innb');
|
||||
const dwldCouponInnb = $(this).val();
|
||||
|
||||
const mbrInnb = fn_get_mbr_innb();
|
||||
|
||||
if ('Y' == otrCouponSmtmUseAt) {
|
||||
if (!confirm('본 쿠폰은 다른 쿠폰과 함께 사용할 수 없는 단독사용쿠폰입니다.\n적용하시겠습니까?')) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
let isNonDwldCoupon = 'N' == dplctDscntAt ? '|' + couponInnb + '-' + dwldCouponInnb : '';
|
||||
let goodsList = new Array();
|
||||
|
||||
$(tbody).find('.ordrGoods').each(function () {
|
||||
const goodsInnb = $(this).find('.goodsInnb').val();
|
||||
const goodsOptnInnb = $(this).find('.goodsOptnInnb').val();
|
||||
const qy = $(this).find('.qy').val();
|
||||
const inputOptn = $(this).find('.inputOptn').val();
|
||||
const usedCoupons = 'Y' != otrCouponSmtmUseAt ? $(this).find('.usedCoupons').val() : '';
|
||||
|
||||
const seleced = useGoodsInnb == goodsInnb && useGoodsOptnInnb == goodsOptnInnb ? true : false;
|
||||
|
||||
let goods = {
|
||||
'goodsInnb': goodsInnb,
|
||||
'goodsOptnInnb': goodsOptnInnb,
|
||||
'qy': qy,
|
||||
'mbrDvCd': mbrDvCd,
|
||||
'mbrInnb': mbrInnb,
|
||||
'inputOptn': inputOptn,
|
||||
'couponInnb': seleced ? couponInnb : '',
|
||||
'dwldCouponInnb': seleced ? dwldCouponInnb : '',
|
||||
'dplctDscntAt': seleced ? dplctDscntAt : '',
|
||||
'otrCouponSmtmUseAt': seleced ? otrCouponSmtmUseAt : '',
|
||||
'usedCoupons': 'N' == dplctDscntAt ? usedCoupons.replaceAll(isNonDwldCoupon, '') : usedCoupons
|
||||
}
|
||||
|
||||
goodsList.push(goods);
|
||||
});
|
||||
|
||||
fn_get_apply_goods_list(goodsList, $(this));
|
||||
});
|
||||
/* ****************************
|
||||
* STEP2. 상품 종료
|
||||
******************************/
|
||||
}
|
||||
/* 관리자 주문 > 상품조회 > 카테고리 목록 조회 */
|
||||
const fn_get_goods_ctgry = function(upperCtgryId, targetCtgryId) {
|
||||
$.ajax({
|
||||
type : 'post',
|
||||
url : '<c:url value="/crm/ordr/selectGoodsCategoryList"/>',
|
||||
data : {
|
||||
'upperCtgryId': upperCtgryId
|
||||
},
|
||||
success : function(data) {
|
||||
if (data.resBody != null) {
|
||||
const result = JSON.parse(data.resBody.result);
|
||||
const goodsCategoryList = result.goodsCategoryList;
|
||||
|
||||
if (goodsCategoryList.length > 0) {
|
||||
for (let i=0; i < goodsCategoryList.length; i++) {
|
||||
const goodsCategory = goodsCategoryList[i];
|
||||
|
||||
$('#search-section').find('#' + targetCtgryId).append('<option value="' + goodsCategory.ctgryId + '">' + goodsCategory.ctgryNm + '</option>');
|
||||
}
|
||||
|
||||
$('#search-section').find('#' + targetCtgryId).niceSelect('update');
|
||||
}
|
||||
}
|
||||
},
|
||||
error: function(data) {
|
||||
fn_proc_error_message(data);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/* 관리자 주문 > 상품조회 > 상품 목록 조회 */
|
||||
const fn_get_goods_list = function(pageIndex) {
|
||||
const popup = $('#product-select-pop');
|
||||
|
||||
$(popup).find('#pageIndex').val(pageIndex);
|
||||
|
||||
$.ajax({
|
||||
type : 'post',
|
||||
url : '<c:url value="/mngr/goods/goodsmngr/selectGoodsList"/>',
|
||||
data : $(popup).find('#goodsCondForm').serialize(),
|
||||
success : function(html) {
|
||||
$('#product-select-pop').find('#pageDiv').html(html);
|
||||
|
||||
const goodsList = JSON.parse(localStorage.getItem('goodsList'));
|
||||
|
||||
if (!fn_is_empty(goodsList)) {
|
||||
fn_set_choice_order_goods(goodsList);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/* 목록 > 전체선택 체인지 이벤트 */
|
||||
$(document).on('change', '#checkAll', function () {
|
||||
let checkbox = $(this).closest('table').find('input[name="goodsInnbChk"]');
|
||||
|
||||
$(checkbox).prop('checked', false);
|
||||
$(checkbox).prop('checked', $(this).is(':checked'));
|
||||
});
|
||||
|
||||
/*********************************************************
|
||||
* 선택 삭제
|
||||
*********************************************************/
|
||||
const fn_delete_check = function() {
|
||||
|
||||
let url = '<c:url value="/mngr/goods/prsnt/deletePrsnt"/>';
|
||||
let delInnbArr = [];
|
||||
// 선택 삭제일 경우
|
||||
|
||||
$("input[name='goodsInnbChk']:checked").each(function() {
|
||||
let values = $(this).val().split(','); // 쉼표로 분리하여 배열로 저장
|
||||
let delGoods = {
|
||||
goodsInnb: values[0],
|
||||
sopmalCd: values[1]
|
||||
};
|
||||
delInnbArr.push(delGoods);
|
||||
});
|
||||
|
||||
if (confirm('사은품을 <spring:message code="confirm.common.delete"/>')) {
|
||||
$.ajax({
|
||||
type: 'post',
|
||||
url: url,
|
||||
data: {
|
||||
"delInnbArr": delInnbArr
|
||||
},
|
||||
dataType: "json",
|
||||
success: function (result) {
|
||||
alert('<spring:message code="success.common.delete"/>');
|
||||
fn_select_list();
|
||||
}
|
||||
})
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
/* ********************************************************
|
||||
* 카테고리 체크버튼 이벤트
|
||||
******************************************************** */
|
||||
const fn_change_event = function (_target, _arg) {
|
||||
if (_arg === 'all') {
|
||||
|
||||
if ($('#' + _target + '-all').is(':checked')) {
|
||||
$('[name=' + _target + 'Arr]').prop('checked', true);
|
||||
} else {
|
||||
$('[name=' + _target + 'Arr]').prop('checked', false);
|
||||
}
|
||||
|
||||
} else {
|
||||
|
||||
let chkCnt = $('[name=' + _target + 'Arr]:checked').length;
|
||||
let allCnt = $('[name=' + _target + 'Arr]').length;
|
||||
|
||||
if (chkCnt !== allCnt && $('#' + _target + '-all').is(':checked')) {
|
||||
$('#' + _target + '-all').prop('checked', false);
|
||||
} else if (chkCnt !== allCnt && !$('#' + _target + '-all').is(':checked') && allCnt - chkCnt === 1) {
|
||||
$('#' + _target + '-all').prop('checked', true);
|
||||
} else if (chkCnt === allCnt) {
|
||||
$('#' + _target + '-all').prop('checked', true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
</script>
|
||||
<body>
|
||||
<%@ include file="/WEB-INF/views/comm/mngr/Header.jsp"%>
|
||||
<main class="main">
|
||||
<%@ include file="/WEB-INF/views/comm/mngr/Left.jsp"%>
|
||||
<div class="content">
|
||||
<div class="content__inner">
|
||||
<button class="side-nav__fold"><span class="visually-hidden">좌측메뉴 펼치기/닫기</span></button>
|
||||
<div class="page-title">
|
||||
<h2 class="page-title__title">사은품 조회</h2>
|
||||
<div class="page-title__btn-container">
|
||||
<button onclick="fn_move_regpage()" class="btn primary">사은품 <spring:message
|
||||
code="button.insert"/></button>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<form id='listForm' name="listForm" method="post"
|
||||
action="<c:url value="/mngr/goods/prsnt/selectPrsntListForm"/>">
|
||||
<input type="hidden" id="pageIndex" name="pageIndex" value="${ resultMap.BOGoodsVO.pageIndex }"/>
|
||||
<input type="hidden" id="goodsInnb" name="goodsInnb"/>
|
||||
<input type="hidden" id="sopmalCd" name="sopmalCd" />
|
||||
<section class="content-section" id="search-section">
|
||||
<div class="table-wrapper">
|
||||
<table class="table">
|
||||
<colgroup>
|
||||
<col style="width: 12%;">
|
||||
<col>
|
||||
<col style="width: 13%;">
|
||||
<col style="width: 25%;">
|
||||
</colgroup>
|
||||
<tr>
|
||||
<th>검색어</th>
|
||||
<td colspan="3">
|
||||
<div class="td-inner">
|
||||
<div class="select-box">
|
||||
<select title="검색타입" id="srchType" name="srchType">
|
||||
<option value="GOODS_NM" <c:if test="${ resultMap.BOGoodsVO.srchType == 'GOODS_NM'}">selected="selected"</c:if>>상품명</option>
|
||||
<option value="GOODS_INNB" <c:if test="${ resultMap.BOGoodsVO.srchType == 'GOODS_INNB'}">selected="selected"</c:if>>상품번호</option>
|
||||
</select>
|
||||
</div>
|
||||
<input class="input-text xl" type="text" title="검색어" id="srchStr" name="srchStr" value="<c:out value="${ resultMap.BOGoodsVO.srchStr }" />">
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>날짜</th>
|
||||
<td colspan="3">
|
||||
<div class="td-inner">
|
||||
<div class="select-box">
|
||||
<select name="dateDv" title="날짜 구분">
|
||||
<option value="regist" <c:if test="${ resultMap.BOGoodsVO.dateDv eq 'regist'}">selected="selected"</c:if>>등록일</option>
|
||||
<option value="updt" <c:if test="${ resultMap.BOGoodsVO.dateDv eq 'updt'}">selected="selected"</c:if>>수정일</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="input-container">
|
||||
<input type="text" name="startDate" id="startDate" class="datepicker" value="<c:out value="${ resultMap.BOGoodsVO.startDate }"/>"
|
||||
title="시작 날짜 선택" autocomplete="off">
|
||||
<span class="tilde">~</span>
|
||||
<input type="text" name="endDate" id="endDate" class="datepicker"
|
||||
title="종료 날짜 선택" autocomplete="off" pattern="yyyy-MM-dd" value="<c:out value="${ resultMap.BOGoodsVO.endDate }"/>">
|
||||
<input type="hidden" id="datePeriod" name="datePeriod" value=""/>
|
||||
</div>
|
||||
<div class="dateRange-btnContainer">
|
||||
<button type="button" class="dateRange-btn" id="1D">어제</button>
|
||||
<button type="button" class="dateRange-btn" id="0">오늘</button>
|
||||
<button type="button" class="dateRange-btn" id="3D">3일간</button>
|
||||
<button type="button" class="dateRange-btn" id="7D">일주일</button>
|
||||
<button type="button" class="dateRange-btn" id="1M">1개월</button>
|
||||
<button type="button" class="dateRange-btn" id="3M">3개월</button>
|
||||
<button type="button" class="dateRange-btn" id="6M">6개월</button>
|
||||
<button type="button" class="dateRange-btn" id="1Y">1년</button>
|
||||
<button type="button" class="dateRange-btn selected" id="allDays">전체
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>판매상태</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<div class="b-checkbox-container">
|
||||
<label class="b-checkbox checkbox check-all">
|
||||
<input type="checkbox" name="goodsDftinfoSttus" value="" id="srchStatusCheckboxAll" onclick="checkAll();" checked>
|
||||
<span class="check"></span>
|
||||
<span class="control-label">전체</span>
|
||||
</label>
|
||||
<c:forEach items="${resultMap.goodsDftinfoSttusList}" var="goodsDftinfoSttus" varStatus="status">
|
||||
<label class="b-checkbox checkbox">
|
||||
<c:choose>
|
||||
<c:when test="${status.first }">
|
||||
<input type="checkbox" class="srchStatusCheckbox" name="goodsDftinfoSttus" value="${goodsDftinfoSttus.cd}" onchange="fn_ctr_pCheckbox('#srchStatusCheckboxAll', '.srchStatusCheckbox');" checked>
|
||||
<span class="check"></span>
|
||||
<span class="control-label">${goodsDftinfoSttus.cdNm}</span>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<input type="checkbox" class="srchStatusCheckbox" name="goodsDftinfoSttus" value="${goodsDftinfoSttus.cd}" onchange="fn_ctr_pCheckbox('#srchStatusCheckboxAll', '.srchStatusCheckbox');" checked>
|
||||
<span class="check"></span>
|
||||
<span class="control-label">${goodsDftinfoSttus.cdNm}</span>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</label>
|
||||
</c:forEach>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>재고에 따른 판매</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<div class="custom-radio-container">
|
||||
<div class="custom-radio">
|
||||
<input type="radio" id="goodsDftinfoInvntryPolicy0"
|
||||
name="goodsDftinfoInvntryPolicy" value="" checked>
|
||||
<label for="goodsDftinfoInvntryPolicy0">전체</label>
|
||||
</div>
|
||||
<c:forEach items="${resultMap.goodsDftinfoInvntryPolicyList}"
|
||||
var="goodsDftinfoInvntryPolicy" varStatus="status">
|
||||
<div class="custom-radio">
|
||||
<input type="radio"
|
||||
id="goodsDftinfoInvntryPolicy${status.count}"
|
||||
name="goodsDftinfoInvntryPolicy"
|
||||
value="${goodsDftinfoInvntryPolicy.cd}">
|
||||
<label for="goodsDftinfoInvntryPolicy${status.count}">${goodsDftinfoInvntryPolicy.cdNm}</label>
|
||||
</div>
|
||||
</c:forEach>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
<th>이벤트 중 인 사은품</th>
|
||||
<td>
|
||||
<div class="select-box">
|
||||
<select class="short" name="evtInnb" id="evtGoodsList"
|
||||
title="이벤트 중 인 사은품"
|
||||
style="display: none;" >
|
||||
<option value=""><c:out value="선택"/> </option>
|
||||
<c:forEach var="goodsEvtNm" items="${resultMap.goodsEvtNmList}">
|
||||
<option value="${goodsEvtNm.evtInnb}"><c:out value="${goodsEvtNm.evtnm}" /> </option>
|
||||
</c:forEach>
|
||||
</select>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="form-control-container">
|
||||
<div class="left"></div>
|
||||
<div class="center">
|
||||
<button class="btn outline" id="resetBtn" type="button">초기화</button>
|
||||
<button class="btn primary" id="searchBtn" type="button" onclick="fn_select_list(1); return false;">검색</button>
|
||||
</div>
|
||||
<div class="right">
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<div id="pageDiv">
|
||||
</div>
|
||||
</form>
|
||||
<button class="scroll-to-top"><span class="visually-hidden">위로가기</span></button>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
Reference in New Issue
Block a user