초기소스
This commit is contained in:
892
src/main/webapp/WEB-INF/views/mngr/goods/banner/BannerC.jsp
Normal file
892
src/main/webapp/WEB-INF/views/mngr/goods/banner/BannerC.jsp
Normal file
@@ -0,0 +1,892 @@
|
||||
<%@ 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 : BannerC.jsp
|
||||
Description : 공통상품배너 등록
|
||||
Modification Information
|
||||
|
||||
수정일 수정자 수정내용
|
||||
------- -------- ---------------------------
|
||||
2024-06-14 전일찬 최초생성
|
||||
--%>
|
||||
<!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 file="/WEB-INF/views/comm/mngr/Include.jsp"%>
|
||||
<script src="<c:url value='/js/fileupload_comm.js'/>"></script>
|
||||
</head>
|
||||
<script>
|
||||
$(document).ready(function () {
|
||||
|
||||
$('input[name="goodsApplcDvCd"]:checked').click();
|
||||
fn_set_date('datepicker_1', 'datepicker_2');
|
||||
|
||||
|
||||
/* 카테고리 조회 이벤트 */
|
||||
$(document).on('click', '.category-select', 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++) {
|
||||
$('#section01').find('#ctgryDepth' + i).empty();
|
||||
}
|
||||
} else {
|
||||
fn_get_goods_ctgry(upperCtgryId, targetCtgryId);
|
||||
}
|
||||
|
||||
|
||||
// 1차 카테고리 선택 하위 비우기
|
||||
if (currCtgryDepth == 1) {
|
||||
for (let i = 2; i < 5; i++) {
|
||||
$('#section01').find('#ctgryDepth' + i).empty();
|
||||
}
|
||||
}
|
||||
|
||||
// 2차 카테고리 선택 하위 비우기
|
||||
if (currCtgryDepth == 2) {
|
||||
for (let i = 3; i < 5; i++) {
|
||||
$('#section01').find('#ctgryDepth' + i).empty();
|
||||
}
|
||||
}
|
||||
|
||||
// 3차 카테고리 선택 하위 비우기
|
||||
if (currCtgryDepth == 3) {
|
||||
for (let i = 4; i < 5; i++) {
|
||||
$('#section01').find('#ctgryDepth' + i).empty();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
$('#section01').find('#ctgryId').val(upperCtgryId);
|
||||
});
|
||||
|
||||
/* 카테고리 선택 이벤트 */
|
||||
$('#selectCategoriesBtn').on('click', function (event) {
|
||||
event.preventDefault();
|
||||
|
||||
const target = event.target;
|
||||
|
||||
let selectedCategories = [];
|
||||
|
||||
const depth1Selected = $('#ctgryDepth1 option:selected');
|
||||
const depth2Selected = $('#ctgryDepth2 option:selected');
|
||||
const depth3Selected = $('#ctgryDepth3 option:selected');
|
||||
const depth4Selected = $('#ctgryDepth4 option:selected');
|
||||
|
||||
if (depth4Selected.length > 0) {
|
||||
depth4Selected.each(function () {
|
||||
let categoryPath = depth1Selected.text() + ' > ' + depth2Selected.text() + ' > ' + depth3Selected.text() + ' > ' + $(this).text();
|
||||
let ctgryId = $(this).val();
|
||||
selectedCategories.push({ path: categoryPath, id: ctgryId });
|
||||
});
|
||||
} else if (depth3Selected.length > 0) {
|
||||
depth3Selected.each(function () {
|
||||
let categoryPath = depth1Selected.text() + ' > ' + depth2Selected.text() + ' > ' + $(this).text();
|
||||
let ctgryId = $(this).val();
|
||||
selectedCategories.push({ path: categoryPath, id: ctgryId });
|
||||
});
|
||||
} else if (depth2Selected.length > 0) {
|
||||
depth2Selected.each(function () {
|
||||
let categoryPath = depth1Selected.text() + ' > ' + $(this).text();
|
||||
let ctgryId = $(this).val();
|
||||
selectedCategories.push({ path: categoryPath, id: ctgryId });
|
||||
});
|
||||
} else if (depth1Selected.length > 0) {
|
||||
depth1Selected.each(function () {
|
||||
let categoryPath = $(this).text();
|
||||
let ctgryId = $(this).val();
|
||||
selectedCategories.push({ path: categoryPath, id: ctgryId });
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
// 선택한 카테고리를 테이블에 추가
|
||||
let $tableBody = $('#selectedCategoriesTable tbody');
|
||||
// $tableBody.empty(); // 기존 내용을 지움
|
||||
|
||||
selectedCategories.forEach((category, index) => {
|
||||
let $row = $('<tr></tr>');
|
||||
|
||||
let $radioTd = $('<td></td>');
|
||||
let $radioDiv = $('<div>적용</div>');
|
||||
let $radioInput = $('<input type="hidden" id="r-' + index + '" name="reprsntCtgryId" value="' + category.id + '">');
|
||||
$radioDiv.append($radioInput) // .append($radioLabel);
|
||||
$radioTd.append($radioDiv);
|
||||
|
||||
let $categoryTd = $('<td class="left"></td>').text(category.path).attr('data-value', category.id);
|
||||
let $deleteTd = $('<td></td>');
|
||||
let $deleteBtn = $('<button class="circle-btn delete"><span class="visually-hidden">삭제</span></button>');
|
||||
|
||||
$deleteTd.append($deleteBtn);
|
||||
$row.append($radioTd).append($categoryTd).append($deleteTd);
|
||||
$tableBody.append($row);
|
||||
|
||||
// 마지막 항목을 기본으로 선택
|
||||
if (index === index) {
|
||||
$radioInput.prop('checked', true);
|
||||
}
|
||||
|
||||
// 삭제 버튼에 클릭 이벤트 추가
|
||||
$deleteBtn.on('click', function () {
|
||||
$(this).closest('tr').remove();
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
|
||||
/* ********************************************************
|
||||
* 카테고리 조회 AJAX
|
||||
******************************************************** */
|
||||
const fn_get_goods_ctgry = function(upperCtgryId, targetCtgryId) {
|
||||
$.ajax({
|
||||
type : 'post',
|
||||
url : '<c:url value="/admin/sys/ctgry/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) {
|
||||
|
||||
$('#section01').find('#' + targetCtgryId).empty();
|
||||
|
||||
for (let i=0; i < goodsCategoryList.length; i++) {
|
||||
const goodsCategory = goodsCategoryList[i];
|
||||
|
||||
$('#section01').find('#' + targetCtgryId).append('<option value="' + goodsCategory.ctgryId + '">' + goodsCategory.ctgryNm + '</option>');
|
||||
}
|
||||
|
||||
$('#section01').find('#' + targetCtgryId).niceSelect('update');
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/* ********************************************************
|
||||
* 숫자만 허용
|
||||
******************************************************** */
|
||||
function fn_num_validateInput(input) {
|
||||
var regex = /[^0-9]/g;
|
||||
input.value = input.value.replace(regex, '');
|
||||
input.value = input.value.toUpperCase();
|
||||
}
|
||||
|
||||
/* ********************************************************
|
||||
* 수정폼 이동
|
||||
******************************************************** */
|
||||
const fn_move_dtl_uptpage = function (Innb) {
|
||||
const url = '<c:url value="/mngr/goods/banner/selectBannerDtlForm"/>';
|
||||
|
||||
$('#listForm').attr('action', url);
|
||||
$('#listForm').attr('method', 'post');
|
||||
$('#bannerInnb').val(Innb);
|
||||
$('#listForm').submit();
|
||||
};
|
||||
|
||||
/* ********************************************************
|
||||
* 목록 조회
|
||||
******************************************************** */
|
||||
const fn_select_list = function () {
|
||||
const url = '<c:url value="/mngr/goods/banner/selectBannerListR"/>';
|
||||
|
||||
$('#listForm').attr('action', url);
|
||||
$('#listForm').attr('method', 'post');
|
||||
$('#listForm').submit();
|
||||
};
|
||||
|
||||
/* ********************************************************
|
||||
* 등록 AJAX
|
||||
******************************************************** */
|
||||
const fn_regist = function () {
|
||||
const url = '<c:url value="/mngr/goods/banner/insertBanner"/>';
|
||||
const formData = new FormData();
|
||||
|
||||
$('#listForm').serializeArray().forEach(function (item) {
|
||||
formData.append(item.name, item.value);
|
||||
});
|
||||
|
||||
//카테고리 저장
|
||||
let ctgryIdList = []
|
||||
$('[name=reprsntCtgryId]').each(function () {
|
||||
ctgryIdList.push( $(this).val())
|
||||
});
|
||||
formData.append('ctgryIdList', ctgryIdList);
|
||||
|
||||
//선정구분
|
||||
formData.append('goodsApplcDvCd', $('input[name="goodsApplcDvCd"]:checked').val())
|
||||
|
||||
if($('#datepicker_1').val() != null){
|
||||
var combinedValue = $('#datepicker_1').val() + 'T' + $('#expsrBgnTime').val();
|
||||
formData.append('expsrBgnDt', combinedValue);
|
||||
}
|
||||
|
||||
if($('#datepicker_2').val() != null) {
|
||||
combinedValue = $('#datepicker_2').val() + 'T' + $('#expsrEndTime').val();
|
||||
formData.append('expsrEndDt', combinedValue);
|
||||
}
|
||||
|
||||
//파일데이터 - multiple로 배열저장된 값을 files로 셋팅
|
||||
let fileAt = 'N';
|
||||
$.each(filesTempArr, function(i, file){
|
||||
if(file.upload != 'disable'){
|
||||
formData.append('files', file);
|
||||
}
|
||||
|
||||
if(!fn_is_empty(file)){
|
||||
fileAt='Y'
|
||||
}
|
||||
});
|
||||
|
||||
if(fileAt==='N'){
|
||||
alert('공통상품배너 이미지를 등록해주세요');
|
||||
return false;
|
||||
}
|
||||
|
||||
let goodsIdArr = [];
|
||||
$('input[name=relatedGoodsId]').each(function (i) {
|
||||
goodsIdArr.push($("input[name='relatedGoodsId']").eq(i).attr("value"));
|
||||
})
|
||||
formData.append('goodsIds', goodsIdArr);
|
||||
|
||||
|
||||
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(str.bannerInnb);
|
||||
} else {
|
||||
alert('<spring:message code="fail.common.insert"/>');
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
/* ********************************************************
|
||||
* 상품 검색 팝업 배열 값 불러오기
|
||||
******************************************************** */
|
||||
var selected = [];
|
||||
|
||||
function fn_select_goods_search() {
|
||||
|
||||
selected = [];
|
||||
|
||||
$('#appendList tr').each(function() {
|
||||
const goodsId = $(this).attr('id').replace('choiseListId', '');
|
||||
const goodsImg = $(this).find('input[name="goodsImgCours"]').val();
|
||||
const goodsNm = $(this).find('input[name="goodsNm"]').val();
|
||||
const goodsPrice = $(this).find('input[name="slepric"]').val();
|
||||
const goodsSttusNm = $(this).find('input[name="goodsSttusNm"]').val();
|
||||
const expsrNm = $(this).find('input[name="expsrNm"]').val();
|
||||
|
||||
selected.push({
|
||||
goodsId: goodsId,
|
||||
goodsImg: goodsImg,
|
||||
goodsNm: goodsNm,
|
||||
goodsPrice: goodsPrice,
|
||||
goodsSttusNm: goodsSttusNm,
|
||||
expsrNm: expsrNm
|
||||
});
|
||||
});
|
||||
|
||||
// 각 화면에 맞춰서 HTML 변경 START
|
||||
var tableBody = $("#parentGoodsContainer");
|
||||
tableBody.empty();
|
||||
|
||||
selected.forEach((good, index) => {
|
||||
|
||||
var productHtml = `
|
||||
<div class="product-group__item">
|
||||
<input type="hidden" id="relatedGoodsId" name="relatedGoodsId" value="` + good.goodsId+ `">
|
||||
<span class="product-group__item-number">` + (index + 1) + `</span>
|
||||
<div class="product-group__image">
|
||||
<img src="` + good.goodsImg+ `" onerror="this.src='/mngr/images/image_placeholder.png'" width="140" alt="` + good.goodsNm+ `">
|
||||
</div>
|
||||
<div class="product-group__description">
|
||||
<p>` + good.goodsNm+ `</p>
|
||||
<p class="product-group__description-price">` + fn_format_comma(good.goodsPrice)+ `원</p>
|
||||
</div>
|
||||
</div>
|
||||
`;
|
||||
|
||||
tableBody.append(productHtml);
|
||||
});
|
||||
// 각 화면에 맞춰서 HTML 변경 END
|
||||
|
||||
fn_close_modal('product-search');
|
||||
}
|
||||
|
||||
/* ********************************************************
|
||||
* 상품 검색 팝업 > 상품 목록 조회
|
||||
******************************************************** */
|
||||
const fn_goods_search_popup_list = function (pageIndex,selected) {
|
||||
let dataStr;
|
||||
if (!pageIndex) {
|
||||
$('#pageIndex').val(1);
|
||||
} else {
|
||||
$('#pageIndex').val(pageIndex);
|
||||
}
|
||||
|
||||
$('#popupListForm').find('input[name=pageIndex]').eq(0).val(pageIndex);
|
||||
const popupListForm = $("#popupListForm").serialize();
|
||||
|
||||
$.ajax({
|
||||
type: "post",
|
||||
url: "<c:url value="/mngr/goods/goodsmngr/selectGoodsSrchPopupList"/>",
|
||||
data: popupListForm,
|
||||
success: function (resultHtml) {
|
||||
$('#goodsList').empty();
|
||||
$('#goodsList').html(resultHtml);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
|
||||
//관련 상품 검색 모달
|
||||
const fn_open_search_modal = function (modalDivSltr, modalSlrt, url, param, callback) {
|
||||
let submitType = 'GET';
|
||||
//파라미터가 있을 경우 POST처리
|
||||
if (!param) {
|
||||
submitType = 'POST';
|
||||
}
|
||||
$.ajax({
|
||||
type: submitType,
|
||||
url: url,
|
||||
data: param,
|
||||
success: function (data) {
|
||||
//callback함수가 없을 경우 default로 지정된 영역에 모달팝업 화면을 교체하고 화면 로딩
|
||||
if (!callback) {
|
||||
$(modalSlrt).remove();
|
||||
$(modalDivSltr).html(data);
|
||||
|
||||
//최초오픈시에 관련상품 정보 있을 경우 실행
|
||||
if(custom_open_modal_cnt === 0){
|
||||
var tableBody = $("#appendList");
|
||||
const cdnurl = $('#cdnurl').val()
|
||||
selectedDtl.forEach((good, index) => {
|
||||
|
||||
var row = `
|
||||
<tr id="choiseListId` +good.goodsId + `" class="draggable" ondblclick="fn_remove_append_goods_list(this)">
|
||||
<td class="text-left">
|
||||
<input type="hidden" id="goodsInnb" name="goodsInnb" value="` + good.goodsId + `"/>
|
||||
<input type="hidden" id="goodsImgCours" name="goodsImgCours" value="`+cdnurl + good.goodsImg + `"/>
|
||||
<input type="hidden" id="goodsNm" name="goodsNm" value="` + good.goodsNm + `"/>
|
||||
<input type="hidden" id="slepric" name="slepric" value="` + good.goodsPrice + `"/>
|
||||
<input type="hidden" id="goodsSttusNm" name="goodsSttusNm" value="` + good.goodsSttusNm + `"/>
|
||||
<input type="hidden" id="expsrNm" name="expsrNm" value="` + good.expsrNm + `"/>
|
||||
<div class="product-search-box__product">
|
||||
<img src="`+cdnurl + good.goodsImg+ `"
|
||||
onerror="this.src='<c:url value="/mngr/images/image_placeholder.png"/>'"
|
||||
alt="` +good.goodsNm+ `" width="64">
|
||||
` +good.goodsNm+ `
|
||||
</div>
|
||||
</td>
|
||||
<td>` +fn_format_comma(good.goodsPrice)+ `</td>
|
||||
<td>` +good.goodsSttusNm+ '(' + good.expsrNm + ')' +`</td>
|
||||
</tr>
|
||||
`;
|
||||
|
||||
tableBody.append(row);
|
||||
});
|
||||
|
||||
custom_open_modal_cnt++;
|
||||
}
|
||||
$(modalSlrt).modal();
|
||||
} else {
|
||||
callback(data);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
let custom_open_modal_cnt = 0;
|
||||
//현재 등록된 관련 상품 정보
|
||||
let selectedDtl = [];
|
||||
const fn_custom_open_modal = (modalDivSltr, modalSlrt, url, param, callback) => {
|
||||
|
||||
selectedDtl = [];
|
||||
|
||||
if(custom_open_modal_cnt === 0){
|
||||
$('.product-group__item').each(function() {
|
||||
const goodsId = $(this).find('input[name="relatedGoodsId"]').val();
|
||||
const goodsImg = $(this).find('input[name="relatedGoodsImg"]').val();
|
||||
const goodsNm = $(this).find('input[name="relatedGoodsNm"]').val();
|
||||
const goodsPrice = $(this).find('input[name="relatedGoodsPrice"]').val();
|
||||
const goodsSttusNm = $(this).find('input[name="goodsSttusNm"]').val();
|
||||
const expsrNm = $(this).find('input[name="expsrNm"]').val();
|
||||
|
||||
selectedDtl.push({
|
||||
goodsId: goodsId,
|
||||
goodsImg: goodsImg,
|
||||
goodsNm: goodsNm,
|
||||
goodsPrice: goodsPrice,
|
||||
goodsSttusNm: goodsSttusNm,
|
||||
expsrNm: expsrNm
|
||||
});
|
||||
});
|
||||
|
||||
}
|
||||
fn_open_search_modal(modalDivSltr, modalSlrt, url, param, callback);
|
||||
}
|
||||
/* ********************************************************
|
||||
* file button show / file infor hide
|
||||
******************************************************** */
|
||||
const fn_delete_imgFile = (obj, shopCd, menuGb, orderParam) => {
|
||||
$('#divInfor-1').hide();
|
||||
$("#imgPreview").empty(); //이미지 삭제
|
||||
$('#divFile-1').show();
|
||||
}
|
||||
|
||||
/* ********************************************************
|
||||
* file button hide / file infor show
|
||||
******************************************************** */
|
||||
const fn_add_imgFile = (event, orderParam) => {
|
||||
customAddFiles(event, orderParam)
|
||||
}
|
||||
|
||||
/* ********************************************************
|
||||
* custom file function
|
||||
******************************************************** */
|
||||
|
||||
function customAddFiles(event, mode){
|
||||
customAddFilesObj(event, mode,"fileList");
|
||||
}
|
||||
|
||||
function customAddFilesObj(event, mode, objId){
|
||||
if(!($(event.target).is('[multiple]'))) filesTempArr.splice(0, filesTempArr.length);
|
||||
|
||||
var files = event.target.files;
|
||||
var filesArr = Array.prototype.slice.call(files); //file객체 array추가
|
||||
var filesArrLen = filesArr.length;
|
||||
var filesTempArrSize = filesTempArr.length*1;
|
||||
|
||||
const sopmalCd = $('#sopmalCd').val()
|
||||
|
||||
let obj = $('#'+objId);
|
||||
|
||||
if (mode === 1 && filesArrLen > 1) {
|
||||
alert("파일은 한개만 첨부할 수 있습니다.");
|
||||
return false;
|
||||
}
|
||||
|
||||
var templist = '';
|
||||
let prviewHtml = '';
|
||||
for(var i=0; i<filesArrLen; i++){
|
||||
filesTempArr.push(filesArr[i]); //임시배열에 저장
|
||||
|
||||
if($(event.target).is('[multiple]')){
|
||||
const size = i+filesTempArrSize;
|
||||
let reader = new FileReader();
|
||||
let file = filesArr[i];
|
||||
templist ="<li id='temp"+size+"'>"
|
||||
+"<a href='#' onclick='downloadFile(this, "+(i+filesTempArrSize)+");'>"
|
||||
+ "<i class='icon icon_file-list mr-2'></i>"
|
||||
+ "<span class='file-list__item-title'>"+ filesArr[i].name + "</span>"
|
||||
+"</a>"
|
||||
+`<button type='button' class='file-list__delete' onclick="deleteFile(this,'\${sopmalCd}','BANR',\${size}); fn_delete_imgFile();"/>`;
|
||||
+"</li>";
|
||||
|
||||
obj.append(templist);
|
||||
//추가 되면 이미지 보이게
|
||||
if ($(".file-list__delete")) {
|
||||
reader.onload = function (e) {
|
||||
prviewHtml = `<img src="\${e.target.result}" onerror="this.src='/mngr/images/image_placeholder.png'"/>`;
|
||||
$("#imgPreview").html(prviewHtml);
|
||||
}
|
||||
|
||||
reader.readAsDataURL(file);
|
||||
}
|
||||
}
|
||||
}
|
||||
$('#divInfor-1').show();
|
||||
$('#divFile-1').hide();
|
||||
return 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_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.save"/></button>
|
||||
</div>
|
||||
</div>
|
||||
<section class="content-section">
|
||||
<form id="listForm" method="post" action="<c:url value="/mngr/goods/banner/insertBanner"/>" enctype="multipart/form-data">
|
||||
<input type="hidden" id="bannerInnb" name="bannerInnb" value=""/>
|
||||
<input type="hidden" id="sopmalCd" name="sopmalCd" value="<c:out value="${ resultMap.BOBannerVO.sopmalCd }"/>"/>
|
||||
<input type="hidden" id="pageIndex" name="pageIndex" value="<c:out value="${ resultMap.BOBannerVO.pageIndex }"/>"/>
|
||||
<input type="hidden" id="pageUnit" name="pageUnit" value="<c:out value="${ resultMap.BOBannerVO.pageUnit }"/>"/>
|
||||
<h3 class="content-section__title">공통상품배너 등록</h3>
|
||||
<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"/>
|
||||
<input type="hidden" id="orginlFilNm" name="orginlFilNm" value=""/>
|
||||
<div class="table-wrapper">
|
||||
<table class="table">
|
||||
<colgroup>
|
||||
<col style="width: 12%;">
|
||||
<col style="width: auto;">
|
||||
</colgroup>
|
||||
<tbody>
|
||||
<tr>
|
||||
<th>공통상품배너명<span class="red-7">*</span></th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<input class="input-text xl" type="text" name="bannerNm" id="bannerNm"
|
||||
title="공통상품배너 제목" maxlength="30">
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>공통상품배너타입<span class="red-7">*</span></th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<div class="custom-radio-container">
|
||||
<c:forEach items="${ resultMap.expsrlcDvList }" var="edList" varStatus="edListStatus">
|
||||
<div class="custom-radio">
|
||||
<input type="radio" id="r-<c:out value="${edListStatus.count}"/>" name="expsrlcDv" value="<c:out value="${edList.cd}"/>" <c:if test="${edListStatus.first}">checked</c:if>>
|
||||
<label for="r-<c:out value="${edListStatus.count}"/>"><c:out value="${edList.cdNm}"/></label>
|
||||
</div>
|
||||
</c:forEach>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>노출 관리<span class="red-7">*</span></th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<div class="custom-radio-container">
|
||||
<c:forEach items="${ resultMap.expsrlcDvCdList }" var="edcList" varStatus="edcListStatus">
|
||||
<div class="custom-radio">
|
||||
<input type="radio" id="r-<c:out value="${(edcListStatus.count)+2}"/>" name="expsrlcDvCd" value="<c:out value="${edcList.cd}"/>" <c:if test="${edcListStatus.first}">checked</c:if>>
|
||||
<label for="r-<c:out value="${(edcListStatus.count)+2}"/>"><c:out value="${edcList.cdNm}"/></label>
|
||||
</div>
|
||||
</c:forEach>
|
||||
<div class="td-inner">
|
||||
<input type="text" id="datepicker_1" name="datepicker_1" class="datepicker" title="시작 날짜 선택"
|
||||
autocomplete="off" required="required">
|
||||
<div class="timepicker-container">
|
||||
<input type="text" class="bs-timepicker" title="시작 시간 설정"
|
||||
id="expsrBgnTime" name="expsrBgnTime" value="00:00">
|
||||
</div>
|
||||
<span class="tilde">~</span>
|
||||
<input type="text" id="datepicker_2" name="datepicker_2" class="datepicker" title="종료 날짜 선택"
|
||||
autocomplete="off" required="required">
|
||||
<div class="timepicker-container">
|
||||
<input type="text" class="bs-timepicker" title="종료 시간 설정"
|
||||
id="expsrEndTime" name="expsrEndTime" value="00:00">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>공통상품배너 파일<span class="red-7">*</span></th>
|
||||
<td>
|
||||
<div class="td-inner vertical">
|
||||
<div class="manage-btn-container fileInfor" id="divInfor-1">
|
||||
<ul class="file-list" id="fileList">
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
<div class="manage-btn-container" id="divFile-1">
|
||||
<div class="input-file">
|
||||
<spring:eval expression="@environment.getProperty('mngrfo.common.fileupload.extensions.images')" var="acceptFileExtensions"/>
|
||||
<input type="file" id="fileUpload" name="files" title="아이콘파일" accept="<c:out value="${ acceptFileExtensions }"/>" multiple="multiple" onchange="fn_add_imgFile(event, 1);">
|
||||
<label for="fileUpload">파일선택</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>이미지 보기</th>
|
||||
<td>
|
||||
<div class="td-inner" id="imgPreview">
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>공통상품배너연결URL<span class="red-7">*</span></th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<input class="input-text full" type="text" name="bannerUrl" id="bannerUrl"
|
||||
title="공통상품배너연결URL" maxlength="3000">
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</form>
|
||||
</section>
|
||||
|
||||
|
||||
<%-- 이벤트 대상 --%>
|
||||
<section class="content-section">
|
||||
<h3 class="content-section__title">공통상품배너 연결 상품</h3>
|
||||
<div class="table-wrapper">
|
||||
<table class="table">
|
||||
<caption>해당 테이블에 대한 설명</caption>
|
||||
<colgroup>
|
||||
<col style="width: 12%;">
|
||||
<col>
|
||||
</colgroup>
|
||||
<tbody>
|
||||
<tr class=".disabledTr">
|
||||
<th>선정 기준</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<div class="custom-radio-container radio-tab-trigger" data-radiotab="radio-tab-01" id="radioGoodsCtgryLmttDv">
|
||||
<c:forEach var="codeList" items="${ resultMap.goodsCtgryLmttDvCdList }" varStatus="">
|
||||
<div class="custom-radio">
|
||||
<input type="radio" id="<c:out value="${ codeList.cdNm }"/><c:out value="${ codeList.cd}" />" name="goodsApplcDvCd" value="<c:out value="${ codeList.cd}" />"
|
||||
<c:if test="${ '01' eq codeList.cd }">checked="checked"</c:if>
|
||||
<c:choose>
|
||||
<c:when test="${ codeList.cd eq '01'}">
|
||||
onclick="fn_ui_showHide('', '.notall', 'Y');"
|
||||
</c:when>
|
||||
<c:when test="${ codeList.cd eq '02' || codeList.cd eq '04'}">
|
||||
onclick="fn_ui_showHide('#catgrySelctDiv', '#goodsSelctDiv', 'Y');"
|
||||
</c:when>
|
||||
<c:when test="${ codeList.cd eq '03' || codeList.cd eq '05'}">
|
||||
onclick="fn_ui_showHide('#goodsSelctDiv', '#catgrySelctDiv', 'Y');"
|
||||
</c:when>
|
||||
</c:choose>
|
||||
/>
|
||||
<label for="<c:out value="${ codeList.cdNm }"/><c:out value="${ codeList.cd}" />"><c:out value="${ codeList.cdNm}" /></label>
|
||||
</div>
|
||||
</c:forEach>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="table-wrapper notall" id="catgrySelctDiv">
|
||||
<div class="table-wrapper" id="section01">
|
||||
<table class="table">
|
||||
<caption>해당 테이블에 대한 설명</caption>
|
||||
<colgroup>
|
||||
<col style="width: 12%;">
|
||||
<col>
|
||||
</colgroup>
|
||||
<tbody>
|
||||
<tr>
|
||||
<th>카테고리 선택</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<div class="table-wrapper">
|
||||
<table class="table vertical">
|
||||
<caption>해당 테이블에 대한 설명</caption>
|
||||
<!-- 각 열 width 설정 -->
|
||||
<colgroup>
|
||||
<col style="width: 25%;">
|
||||
<col style="width: 25%;">
|
||||
<col style="width: 25%;">
|
||||
<col style="width: 25%;">
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>1차 카테고리</th>
|
||||
<th>2차 카테고리</th>
|
||||
<th>3차 카테고리</th>
|
||||
<th>4차 카테고리</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>
|
||||
<select class="category-select" multiple
|
||||
id="ctgryDepth1" title="1차 카테고리">
|
||||
<c:forEach items="${resultMap.goodsCategoryList}"
|
||||
var="goodsCategory"
|
||||
varStatus="status">
|
||||
<option value="${goodsCategory.ctgryId}">${goodsCategory.ctgryNm}</option>
|
||||
</c:forEach>
|
||||
</select>
|
||||
</td>
|
||||
<td>
|
||||
<select class="category-select" multiple id="ctgryDepth2"
|
||||
title="2차 카테고리">
|
||||
</select>
|
||||
</td>
|
||||
<td>
|
||||
<select class="category-select" multiple
|
||||
id="ctgryDepth3" title="3차 카테고리">
|
||||
</select>
|
||||
</td>
|
||||
<td>
|
||||
<select class="category-select" multiple
|
||||
id="ctgryDepth4" title="4차 카테고리">
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="form-control-container mt-10">
|
||||
<div class="left"></div>
|
||||
<div class="center">
|
||||
<button class="btn primary" id="selectCategoriesBtn">선택</button>
|
||||
</div>
|
||||
<div class="right">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>선택한 카테고리</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<div class="table-wrapper">
|
||||
<table class="table vertical" id="selectedCategoriesTable">
|
||||
<caption>해당 테이블에 대한 설명</caption>
|
||||
<colgroup>
|
||||
<col style="width: 100px;">
|
||||
<col style="width: auto;">
|
||||
<col style="width: 200px;">
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>구분</th>
|
||||
<th>카테고리</th>
|
||||
<th>삭제</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<!-- 선택한 카테고리들이 여기에 추가됩니다 -->
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="content-fold__content table-wrapper notall" id="goodsSelctDiv">
|
||||
<div class="table-wrapper">
|
||||
<table class="table">
|
||||
<caption>해당 테이블에 대한 설명</caption>
|
||||
<colgroup>
|
||||
<col style="width: 12%;">
|
||||
<col>
|
||||
</colgroup>
|
||||
<tbody>
|
||||
<tr>
|
||||
<th>
|
||||
<div>
|
||||
<span class="ml-10">상품</span>
|
||||
<br>
|
||||
<a onclick="fn_open_modal('#modalDiv','#product-search','/mngr/goods/goodsmngr/selectGoodsSrchPopupForm',{'goodsKndCd':'01'}); return false;"
|
||||
class="btn xsm primary mt-5">검색</a>
|
||||
</div>
|
||||
</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<div id="parentGoodsContainer" class="product-group">
|
||||
<!-- 여기에 선택한 상품 정보가 추가됩니다 -->
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
|
||||
<!--
|
||||
<section id="section2" class="content-section content-scroll-detect content-fold">
|
||||
<div class="content-fold__header">
|
||||
<h3 class="content-section__title">공통상품배너 연결 상품</h3>
|
||||
</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>
|
||||
<div>
|
||||
<span class="ml-10">상품</span>
|
||||
<br>
|
||||
<a href="#" onclick="fn_open_modal('#modalDiv','#product-search','/mngr/goods/goodsmngr/selectGoodsSrchPopupForm',{'goodsKndCd':'01'}); return false;"
|
||||
class="btn xsm primary mt-5">검색</a>
|
||||
</div>
|
||||
</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<div id="parentGoodsContainer" class="product-group">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</section> -->
|
||||
<button class="scroll-to-top"><span class="visually-hidden">위로가기</span></button>
|
||||
</div>
|
||||
</div>
|
||||
<div id="modalDiv"></div>
|
||||
</main>
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
||||
1020
src/main/webapp/WEB-INF/views/mngr/goods/banner/BannerDtlU.jsp
Normal file
1020
src/main/webapp/WEB-INF/views/mngr/goods/banner/BannerDtlU.jsp
Normal file
File diff suppressed because it is too large
Load Diff
285
src/main/webapp/WEB-INF/views/mngr/goods/banner/BannerListR.jsp
Normal file
285
src/main/webapp/WEB-INF/views/mngr/goods/banner/BannerListR.jsp
Normal file
@@ -0,0 +1,285 @@
|
||||
<%@ 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" %>
|
||||
<%--
|
||||
Class Name : BannerListR.jsp
|
||||
Description : 공통상품배너 목록조회 화면
|
||||
Modification Information
|
||||
|
||||
수정일 수정자 수정내용
|
||||
------- -------- ---------------------------
|
||||
2024-06-14 전일찬 최초생성
|
||||
--%>
|
||||
<!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 file="/WEB-INF/views/comm/mngr/Include.jsp"%>
|
||||
</head>
|
||||
<script>
|
||||
$(document).ready(function () {
|
||||
|
||||
|
||||
});
|
||||
|
||||
/* ********************************************************
|
||||
* 목록 조회
|
||||
******************************************************** */
|
||||
const fn_select_list = function(pageIndex, pageUnit) {
|
||||
let dataStr;
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
let params = '&pageIndex=' + pageIndex + '&pageUnit=' + pageUnit;
|
||||
$.ajax({
|
||||
type: 'post',
|
||||
url : '<c:url value="/mngr/goods/banner/selectBannerListR"/>',
|
||||
data : dataStr,
|
||||
success:function(data) {
|
||||
|
||||
const startIndex = data.lastIndexOf('<div id="pageDiv">') + '<div id="pageDiv">'.length;
|
||||
const endIndex = data.lastIndexOf("</section>");
|
||||
$('#pageDiv').html(data.substring(startIndex, endIndex));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/* ********************************************************
|
||||
* 등록폼 이동
|
||||
******************************************************** */
|
||||
const fn_move_regpage = function() {
|
||||
const url = '<c:url value="/mngr/goods/banner/selectBannerRegistForm"/>';
|
||||
|
||||
$('#listForm').attr('action', url);
|
||||
$('#listForm').attr('method', 'post');
|
||||
$('#listForm').submit();
|
||||
};
|
||||
|
||||
/* ********************************************************
|
||||
* 수정폼 이동
|
||||
******************************************************** */
|
||||
const fn_move_dtl_uptpage = function(bannerInnb) {
|
||||
const url = '<c:url value="/mngr/goods/banner/selectBannerDtlForm"/>';
|
||||
|
||||
$('#listForm').attr('action', url);
|
||||
$('#listForm').attr('method', 'post');
|
||||
$('#bannerInnb').val(bannerInnb);
|
||||
$('#listForm').submit();
|
||||
}
|
||||
|
||||
/* ********************************************************
|
||||
* 삭제 AJAX
|
||||
******************************************************** */
|
||||
const fn_delete = function(bannerInnb, linkGoods, linkCtgry) {
|
||||
console.log(linkGoods);
|
||||
if(parseInt(linkGoods) > 0){
|
||||
alert('해당 공통상품배너와 연결된 상품이 있어 삭제 할 수 없습니다.')
|
||||
return false;
|
||||
}
|
||||
|
||||
if(parseInt(linkCtgry) > 0){
|
||||
alert('해당 공통상품배너와 연결된 카테고리가 있어 삭제 할 수 없습니다.')
|
||||
return false;
|
||||
}
|
||||
|
||||
const url = '<c:url value="/mngr/goods/banner/deleteBanner"/>';
|
||||
|
||||
if(confirm('공통상품배너를 <spring:message code="confirm.common.delete"/>')) {
|
||||
$.ajax({
|
||||
type: 'post',
|
||||
url: url,
|
||||
data: { 'bannerInnb' : bannerInnb },
|
||||
success: function (data) {
|
||||
let str = JSON.parse(data.resBody.result);
|
||||
if(str.result==='success'){
|
||||
alert('<spring:message code="success.common.delete"/>');
|
||||
fn_select_list(1);
|
||||
} else if(str.result==='hasGoods'){
|
||||
alert('연결 중인 상품이 존재합니다. 수정 후 다시 시도해 주세요.')
|
||||
} else {
|
||||
alert('<spring:message code="fail.common.delete"/>');
|
||||
}
|
||||
}
|
||||
});
|
||||
history.replaceState({}, null, location.pathname);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
//배너 순서수정
|
||||
$(document).on('click', '#updateBannerOrdrBtn', function () {
|
||||
|
||||
|
||||
let bannerOrdrList = [];
|
||||
$('#ordrListForm input[name="bannerInnb"]').each(function () {
|
||||
|
||||
const data = {
|
||||
'bannerInnb' : $(this).val(),
|
||||
'bannerOrdr' : $(this).closest('tr').index()+1,
|
||||
'expsrlcDv' : $(this).siblings('input[name="expsrlcDv"]').val(),
|
||||
'sopmalCd' : $(this).siblings('input[name="sopmalCd"]').val()
|
||||
}
|
||||
|
||||
bannerOrdrList.push(data);
|
||||
})
|
||||
|
||||
|
||||
if (confirm(`공통상품배너 순서을(를) <spring:message code="confirm.common.update"/>`)) {
|
||||
$.ajax({
|
||||
type: 'post',
|
||||
url : '<c:url value="/mngr/goods/banner/updateBannerOrdr"/>',
|
||||
contentType: "application/json",
|
||||
data : JSON.stringify(bannerOrdrList),
|
||||
dataType: 'json',
|
||||
success:function(data) {
|
||||
const result = JSON.parse(data.resBody.result).result
|
||||
if(result ==='success'){
|
||||
alert('<spring:message code="success.common.update"/>');
|
||||
fn_close_modal('bannerOrdrPopupR')
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
})
|
||||
</script>
|
||||
<body>
|
||||
|
||||
<%@ include file="/WEB-INF/views/comm/mngr/Header.jsp"%>
|
||||
<%-- <c:import url="/comm/mngr/header"/> --%>
|
||||
<main class="main">
|
||||
<%@ include file="/WEB-INF/views/comm/mngr/Left.jsp"%>
|
||||
<%-- <c:import url="/comm/mngr/left"/> --%>
|
||||
<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 class="btn xsm primary outline" onclick="fn_open_modal('#bannerOrdrDiv','#bannerOrdrPopupR', '/mngr/goods/banner/selectBannerOrdrPopup')" id="#bannerOrdrPopup">공통상품배너 순서<spring:message code="button.update"/></button>
|
||||
<button onclick="fn_move_regpage()" class="btn xsm primary">공통상품배너 <spring:message code="button.insert"/></button>
|
||||
</div>
|
||||
</div>
|
||||
<form id='listForm' name="listForm" method="post" action="<c:url value="/mngr/goods/banner/selectBannerListR"/>">
|
||||
<input type="hidden" id="bannerInnb" name="bannerInnb" value=""/>
|
||||
<input type="hidden" id="pageIndex" name="pageIndex" value="<c:out value="${ resultMap.BOBannerVO.pageIndex }"/>"/>
|
||||
<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 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="spacing">
|
||||
|
||||
<div id="pageDiv">
|
||||
|
||||
<div class="table-wrapper">
|
||||
<table class="table vertical">
|
||||
<colgroup>
|
||||
<col style="width: 7%;">
|
||||
<col style="width: auto;">
|
||||
<col style="width: 16%;">
|
||||
<col style="width: 7%;">
|
||||
<col style="width: 10%;">
|
||||
<col style="width: 10%;">
|
||||
<%-- <col style="width: 7%;">--%>
|
||||
<%-- <col style="width: 12%">--%>
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>번호</th>
|
||||
<th>제목</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><c:out value="${resultMap.paginationInfo.totalRecordCount - list.rnum + 1 }"/></td>
|
||||
<td class="left"><c:out value="${list.bannerNm}"/></td>
|
||||
<td><c:out value="${list.registDe}"/></td>
|
||||
<c:forEach items="${ resultMap.expsrlcDvCdList }" var="edcList" varStatus="edcListStatus">
|
||||
<c:if test="${ list.expsrlcDvCd eq edcList.cd}">
|
||||
<td><c:out value="${edcList.cdNm}"/></td>
|
||||
</c:if>
|
||||
</c:forEach>
|
||||
<c:forEach items="${ resultMap.expsrlcDvList }" var="edList" varStatus="edListStatus">
|
||||
<c:if test="${ list.expsrlcDv eq edList.cd}">
|
||||
<td><c:out value="${edList.cdNm}"/></td>
|
||||
</c:if>
|
||||
</c:forEach>
|
||||
<%-- <td><c:out value="${list.goodsCnt}"/> 개</td>--%>
|
||||
<%-- <td><c:out value="${list.ctgryCnt}"/> 개</td>--%>
|
||||
<td>
|
||||
<div class="manage-btn-container">
|
||||
<button class="btn xsm primary outline" onclick="fn_move_dtl_uptpage('<c:out value="${list.bannerInnb}"/>')"><spring:message code="button.update"/></button>
|
||||
<button class="btn xsm dark" onclick="fn_delete('<c:out value="${list.bannerInnb}"/>', '<c:out value="${list.goodsCnt}"/>', '<c:out value="${list.ctgryCnt}"/>')"><spring:message code="button.delete"/></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>
|
||||
|
||||
<div class="pagination__container">
|
||||
<ui:pagination paginationInfo="${resultMap.paginationInfo}" type="image" jsFunction="fn_select_list"/>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</form>
|
||||
<button class="scroll-to-top"><span class="visually-hidden">위로가기</span></button>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
</body>
|
||||
<%--배너순서지정--%>
|
||||
<div id="bannerOrdrDiv"></div>
|
||||
</html>
|
||||
@@ -0,0 +1,134 @@
|
||||
<%@ 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 : BannerOrdrPopupR.jsp
|
||||
Description : 배너 순서지정 팝업
|
||||
Modification Information
|
||||
|
||||
수정일 수정자 수정내용
|
||||
------- -------- ---------------------------
|
||||
2024-10-18 유재현 최초 생성
|
||||
--%>
|
||||
<script>
|
||||
$(document).ready(function () {
|
||||
if ($(".table.draggable").length > 0) {
|
||||
$(".table.draggable").tableDnD({
|
||||
onDragClass: "dragging",
|
||||
});
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
|
||||
</script>
|
||||
|
||||
<div id="bannerOrdrPopupR" class="modal" style="max-width: 600px;">
|
||||
<div class="modal-header">
|
||||
<h4>공통상품배너 순서수정</h4>
|
||||
</div>
|
||||
<div class="modal-content">
|
||||
<form id="ordrListForm" name="ordrListForm">
|
||||
<h4 class="page-title__title">상단</h4>
|
||||
<div>
|
||||
<div class="table-wrapper">
|
||||
<table class="table vertical draggable">
|
||||
<caption>해당 테이블에 대한 설명</caption>
|
||||
<!-- 각 열 width 설정 -->
|
||||
<colgroup>
|
||||
<col style="width: 20%;">
|
||||
<col style="width: auto;">
|
||||
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>순서</th>
|
||||
<th>배너명</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<c:forEach var="bannerOrdr" items="${resultMap.bannerOrdrList }" varStatus="status">
|
||||
<c:if test="${bannerOrdr.expsrlcDv eq '01'}">
|
||||
<tr>
|
||||
<td>
|
||||
<div class="draggable-icon-container">
|
||||
<i class="icon icon_draggable"></i>
|
||||
<span class="visually-hidden">순서 바꾸기</span>
|
||||
</div>
|
||||
</td>
|
||||
<td><c:out value="${bannerOrdr.bannerNm }"/>
|
||||
<input type="hidden" name="expsrlcDv" value="${bannerOrdr.expsrlcDv }"/>
|
||||
<input type="hidden" name="bannerInnb" value="${bannerOrdr.bannerInnb}" />
|
||||
<input type="hidden" name="sopmalCd" value="${bannerOrdr.sopmalCd}"/>
|
||||
</td>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<div class="custom-radio-container">
|
||||
<input type="hidden" name="bannerOrdr" value="${bannerOrdr.bannerOrdr}" />
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</c:if>
|
||||
</c:forEach>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="page-title__title">하단</h4>
|
||||
<div>
|
||||
<div class="table-wrapper">
|
||||
<table class="table vertical draggable">
|
||||
<caption>해당 테이블에 대한 설명</caption>
|
||||
<!-- 각 열 width 설정 -->
|
||||
<colgroup>
|
||||
<col style="width: 20%;">
|
||||
<col style="width: auto;">
|
||||
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>순서</th>
|
||||
<th>배너명</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<c:forEach var="bannerOrdr" items="${resultMap.bannerOrdrList }" varStatus="status">
|
||||
<c:if test="${bannerOrdr.expsrlcDv eq '02'}">
|
||||
<tr>
|
||||
<td>
|
||||
<div class="draggable-icon-container">
|
||||
<i class="icon icon_draggable"></i>
|
||||
<span class="visually-hidden">순서 바꾸기</span>
|
||||
</div>
|
||||
</td>
|
||||
<td><c:out value="${bannerOrdr.bannerNm }"/>
|
||||
<input type="hidden" name="expsrlcDv" value="${bannerOrdr.expsrlcDv }"/>
|
||||
<input type="hidden" name="bannerInnb" value="${bannerOrdr.bannerInnb}" />
|
||||
<input type="hidden" name="sopmalCd" value="${bannerOrdr.sopmalCd}"/>
|
||||
</td>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<div class="custom-radio-container">
|
||||
<input type="hidden" name="bannerOrdr" value="${bannerOrdr.bannerOrdr}" />
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</c:if>
|
||||
</c:forEach>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
<div class="page-title__btn-container" style=" justify-content : center;">
|
||||
<button type="button" class="btn xsm primary" id="updateBannerOrdrBtn"><spring:message code="button.update"/></button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,150 @@
|
||||
<%@ 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"%>
|
||||
<%@ taglib prefix="f" uri="/WEB-INF/tlds/f.tld"%>
|
||||
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
|
||||
|
||||
<%--
|
||||
Class Name : CmnuseInfoFormR.jsp
|
||||
Description : 반품교환정보 상세 화면
|
||||
Modification Information
|
||||
|
||||
수정일 수정자 수정내용
|
||||
------- -------- ---------------------------
|
||||
2024-02-10 유재현 최초 생성(퍼블리싱 적용)
|
||||
--%>
|
||||
<!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 file="/WEB-INF/views/comm/mngr/Include.jsp"%>
|
||||
|
||||
<script>
|
||||
/* ********************************************************
|
||||
* 시작 화면 조작 함수
|
||||
******************************************************** */
|
||||
$(document).ready(function(){
|
||||
fn_init_display();
|
||||
let urlParams = new URLSearchParams(window.location.search);
|
||||
|
||||
});
|
||||
|
||||
|
||||
const fn_init_display = function() {
|
||||
// Ck에디터 생성
|
||||
const sopmalCd = $("#sopmalCd").val();
|
||||
fn_create_ckeditor('#infoCn', sopmalCd);
|
||||
|
||||
}
|
||||
|
||||
/**********************************************
|
||||
* 수정
|
||||
***********************************************/
|
||||
const fn_update_cmnuseInfor = function() {
|
||||
let url = '<c:url value="/mngr/goods/cmnuse/updateCmnuseInfoDtl"/>';
|
||||
let saveForm = $('#cmnuseInfoUpdForm');
|
||||
let formData = new FormData();
|
||||
formData.append('infoCn', fn_get_editor_data('#infoCn'));
|
||||
let input = $('#fileInputC')[0];
|
||||
if(input !== undefined){
|
||||
formData.append('file', input.files[0]);
|
||||
}
|
||||
|
||||
saveForm.serializeArray().forEach(function(item) {
|
||||
formData.append(item.name, item.value);
|
||||
});
|
||||
|
||||
if(confirm('반품교환정보를 <spring:message code="confirm.common.update"/>')) {
|
||||
$.ajax({
|
||||
type : 'post',
|
||||
url : url,
|
||||
data : formData,
|
||||
processData: false,
|
||||
contentType: false,
|
||||
success : function(result) {
|
||||
if (JSON.parse(result.resBody.result).message === 1) {
|
||||
alert('<spring:message code="success.common.update"/>');
|
||||
location.reload()
|
||||
} else {
|
||||
alert('<spring:message code="fail.common.update"/>');
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
/**********************************************
|
||||
* 등록 화면 이동
|
||||
***********************************************/
|
||||
const fn_move_list = function() {
|
||||
|
||||
location.replace('/mngr/goods/cmnuse/selectCmnuseInfoList');
|
||||
};
|
||||
|
||||
</script>
|
||||
</head>
|
||||
|
||||
<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 class="btn outline" onclick="fn_move_list();"><spring:message code="button.list"/></button>
|
||||
<button class="btn primary" onclick="fn_update_cmnuseInfor(${resultMap.cmnuseInfoInnb});"><spring:message code="button.update"/></button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<form id="cmnuseInfoUpdForm" name="cmnuseInfoUpdForm">
|
||||
<section class="content-section">
|
||||
<h3 class="content-section__inner-title">반품교환정보</h3>
|
||||
<div class="table-wrapper">
|
||||
<table class="table">
|
||||
<caption>반품교환정보명</caption>
|
||||
<colgroup>
|
||||
<col style="width: 12%;">
|
||||
<col>
|
||||
</colgroup>
|
||||
<tbody>
|
||||
|
||||
<tr>
|
||||
<th>반품교환정보명</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<div class="word-limit-input">
|
||||
<input type="hidden" name="cmnuseInfoInnb" id="cmnuseInfoInnb" value="<c:out value="${resultMap.cmnuseInfoInnb}"/>">
|
||||
<input type="hidden" name="sopmalCd" id="sopmalCd" value="<c:out value="${resultMap.sopmalCd}"/>">
|
||||
<input type="text" class="input-text word-limit" name="cmnuseInfoSj" maxlength="30" size="60" title="공용 정보명" placeholder="공용 정보명을 입력해 주세요." value="<c:out value="${resultMap.cmnuseInfoSj}"/>"/>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>설명</th>
|
||||
<td colspan="3">
|
||||
<div class="td-inner">
|
||||
<textarea class="textarea" title="에디터 입력" rows="10" id="infoCn"> <c:out value="${resultMap.infoCn}"/> </textarea>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</section>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
@@ -0,0 +1,147 @@
|
||||
<%@ 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"%>
|
||||
<%@ taglib prefix="f" uri="/WEB-INF/tlds/f.tld"%>
|
||||
|
||||
<%--
|
||||
Class Name : CmnuseInfoFormR.jsp
|
||||
Description : 반품교환정보 등록 화면
|
||||
Modification Information
|
||||
|
||||
수정일 수정자 수정내용
|
||||
------- -------- ---------------------------
|
||||
2024-02-10 유재현 최초 생성(퍼블리싱 적용)
|
||||
--%>
|
||||
<!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 file="/WEB-INF/views/comm/mngr/Include.jsp"%>
|
||||
|
||||
<script>
|
||||
/* ********************************************************
|
||||
* 시작 화면 조작 함수
|
||||
******************************************************** */
|
||||
$(document).ready(function(){
|
||||
fn_init_display();
|
||||
let urlParams = new URLSearchParams(window.location.search);
|
||||
|
||||
});
|
||||
|
||||
|
||||
const fn_init_display = function() {
|
||||
// Ck에디터 생성
|
||||
fn_create_ckeditor('#infoCn');
|
||||
|
||||
}
|
||||
|
||||
/**********************************************
|
||||
* 등록
|
||||
***********************************************/
|
||||
|
||||
const fn_regist_cmnuseInfor = function() {
|
||||
let url = '<c:url value="/mngr/goods/cmnuse/insertCmnuseInfo"/>';
|
||||
let saveForm = $('#cmnuseInfoRegForm');
|
||||
let formData = new FormData();
|
||||
formData.append('infoCn', fn_get_editor_data('#infoCn'));
|
||||
let input = $('#fileInputC')[0];
|
||||
if(input !== undefined){
|
||||
formData.append('file', input.files[0]);
|
||||
}
|
||||
|
||||
saveForm.serializeArray().forEach(function(item) {
|
||||
formData.append(item.name, item.value);
|
||||
});
|
||||
|
||||
if(confirm('반품교환정보를 <spring:message code="confirm.common.insert"/>')) {
|
||||
$.ajax({
|
||||
type : 'post',
|
||||
url : url,
|
||||
data : formData,
|
||||
processData: false,
|
||||
contentType: false,
|
||||
success : function(result) {
|
||||
result = JSON.parse(result.resBody.result);
|
||||
if (result.message === 1) {
|
||||
alert('<spring:message code="success.common.insert"/>');
|
||||
//수정화면으로 이동
|
||||
location.href = "/mngr/goods/cmnuse/selectCmnuseInfoDtlForm?cmnuseInfoInnb="+result.cmnuseInfoInnb;
|
||||
} else {
|
||||
alert('<spring:message code="fail.common.insert"/>');
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
/**********************************************
|
||||
* 등록 화면 이동
|
||||
***********************************************/
|
||||
const fn_move_list = function() {
|
||||
|
||||
location.replace('/mngr/goods/cmnuse/selectCmnuseInfoList');
|
||||
};
|
||||
|
||||
</script>
|
||||
</head>
|
||||
|
||||
<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 class="btn outline" onclick="fn_move_list();"><spring:message code="button.list"/></button>
|
||||
<button class="btn primary" onclick="fn_regist_cmnuseInfor();"><spring:message code="button.insert"/></button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<form id="cmnuseInfoRegForm" name="cmnuseInfoRegForm">
|
||||
<section class="content-section">
|
||||
<h3 class="content-section__inner-title">반품교환정보</h3>
|
||||
<div class="table-wrapper">
|
||||
<table class="table">
|
||||
<caption>반품교환정보명</caption>
|
||||
<colgroup>
|
||||
<col style="width: 12%;">
|
||||
<col>
|
||||
</colgroup>
|
||||
<tbody>
|
||||
<tr>
|
||||
<th>반품교환정보명</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<div class="word-limit-input">
|
||||
<input type="text" class="input-text word-limit" name="cmnuseInfoSj" maxlength="30" size="60" title="공용 정보명" placeholder="공용 정보명을 입력해 주세요.">
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>설명</th>
|
||||
<td colspan="3">
|
||||
<div class="td-inner">
|
||||
<textarea class="textarea" title="에디터 입력" rows="10" id="infoCn"></textarea>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</section>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
@@ -0,0 +1,170 @@
|
||||
<%@ 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 : GoodsInfoFormR.jsp
|
||||
Description : 반품교환정보 목록 화면
|
||||
Modification Information
|
||||
|
||||
수정일 수정자 수정내용
|
||||
------- -------- ---------------------------
|
||||
2024-02-10 유재현 최초 생성
|
||||
--%>
|
||||
<!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 file="/WEB-INF/views/comm/mngr/Include.jsp"%>
|
||||
|
||||
<script>
|
||||
$(document).ready(function(){
|
||||
|
||||
let urlParams = new URLSearchParams(window.location.search);
|
||||
|
||||
});
|
||||
|
||||
/**********************************************
|
||||
* 등록 화면 이동
|
||||
***********************************************/
|
||||
const fn_move_inforRegist = function() {
|
||||
|
||||
location.href = '/mngr/goods/cmnuse/selectCmnuseInfoForm';
|
||||
};
|
||||
/**********************************************
|
||||
* 상세 화면 이동
|
||||
***********************************************/
|
||||
const fn_move_dtl_uptpage = function(cmnuseInfoInnb) {
|
||||
location.href = '/mngr/goods/cmnuse/selectCmnuseInfoDtlForm?cmnuseInfoInnb='+cmnuseInfoInnb
|
||||
}
|
||||
/**********************************************
|
||||
* 삭제
|
||||
***********************************************/
|
||||
const fn_delete_cmnuseInfo = function(cmnuseInfoInnb, linkgoods) {
|
||||
|
||||
if(parseInt(linkgoods) > 0){
|
||||
alert('연결 상품이 있어 삭제가 불가능 합니다.')
|
||||
return false;
|
||||
}
|
||||
|
||||
if (confirm('반품교환정보를 <spring:message code="confirm.common.delete"/>')) {
|
||||
$.ajax({
|
||||
type : 'post',
|
||||
url : '<c:url value="/mngr/goods/cmnuse/deleteCmnuseInfo"/>',
|
||||
data : {'cmnuseInfoInnb': cmnuseInfoInnb},
|
||||
success : function(data) {
|
||||
let result = JSON.parse(data.resBody.result).message;
|
||||
if (result === 'success') {
|
||||
alert('<spring:message code="success.common.delete"/>');
|
||||
location.reload()
|
||||
} else {
|
||||
alert('<spring:message code="fail.common.delete"/>');
|
||||
}
|
||||
},
|
||||
error : function(request, status, error) {
|
||||
console.log(error)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
|
||||
<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 class="btn primary" onclick="fn_move_inforRegist();">등록</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<form id="listForm" name="listForm" >
|
||||
<%-- 리스트 출력 섹션 START --%>
|
||||
<section class="content-section">
|
||||
<hr class="spacing">
|
||||
<div class="table-wrapper">
|
||||
<table class="table vertical">
|
||||
<caption>해당 테이블에 대한 설명</caption>
|
||||
<!-- 각 열 width 설정 -->
|
||||
<colgroup>
|
||||
<col style="width: 4%;">
|
||||
<col style="width: auto;">
|
||||
<col style="width: 20%;">
|
||||
<col style="width: 15%;">
|
||||
<col style="width: 15%;">
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>번호</th>
|
||||
<th>제목</th>
|
||||
<th>생성일</th>
|
||||
<th>연결 상품</th>
|
||||
<th>관리</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<%-- 리스트 BODY START --%>
|
||||
<tbody>
|
||||
<c:choose>
|
||||
<c:when test="${ not empty resultMap.infoList }">
|
||||
<c:forEach var="info" items="${resultMap.infoList }" varStatus="status">
|
||||
<tr>
|
||||
<td>
|
||||
<c:out value="${ info.rnum }"/>
|
||||
</td>
|
||||
<td>
|
||||
<c:out value="${ info.cmnuseInfoSj }"/>
|
||||
</td>
|
||||
<td>
|
||||
<span><c:out value="${info.registDt}"/></span>
|
||||
</td>
|
||||
<td>
|
||||
<span>
|
||||
<c:choose>
|
||||
<c:when test="${not empty info.linkgoods && 0 != info.linkgoods}">
|
||||
<c:out value="${info.linkgoods}"/>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<c:out value="0"/>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</span>
|
||||
</td>
|
||||
<td>
|
||||
<div class="manage-btn-container re">
|
||||
<button class="btn xsm dark" type="button" onclick="fn_delete_cmnuseInfo('<c:out value="${info.cmnuseInfoInnb}"/>', '<c:out value="${info.linkgoods}"/> '); return false;"><spring:message code="button.delete"/></button>
|
||||
<button class="btn xsm primary outline" type="button" onclick="fn_move_dtl_uptpage('<c:out value="${info.cmnuseInfoInnb}"/>')"><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>
|
||||
<%-- 리스트 BODY END --%>
|
||||
</section>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
@@ -0,0 +1,165 @@
|
||||
<%@ 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 : GoodsInfoDtlFormR.jsp
|
||||
Description : 상품표시 상세 조회 화면
|
||||
Modification Information
|
||||
|
||||
수정일 수정자 수정내용
|
||||
------- -------- ---------------------------
|
||||
2023-12-20 김혜지 최초 생성(퍼블리싱 적용)
|
||||
2024-02-14 이운산 상세값 조회 및 수정 기능 추가
|
||||
--%>
|
||||
<!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 file="/WEB-INF/views/comm/mngr/Include.jsp"%>
|
||||
|
||||
<script>
|
||||
$(document).ready(function(){
|
||||
|
||||
let urlParams = new URLSearchParams(window.location.search);
|
||||
|
||||
});
|
||||
|
||||
/**********************************************
|
||||
* 상품표시 수정
|
||||
***********************************************/
|
||||
const fn_regist_goodsInfor = function() {
|
||||
|
||||
const url = '/mngr/goods/goodsinfo/updateGoodsInfoDtl';
|
||||
let params = $('#goodsInfoForm').serialize();
|
||||
if (confirm('상품표시를 <spring:message code="confirm.common.save"/>')) {
|
||||
$.ajax({
|
||||
type : 'post',
|
||||
url : url,
|
||||
data : params,
|
||||
success : function(data) {
|
||||
alert('<spring:message code="success.common.insert"/>');
|
||||
location.replace('/mngr/goods/goodsinfo/selectGoodsInfoDtlForm');
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
/**********************************************
|
||||
* 등록 화면 이동
|
||||
***********************************************/
|
||||
const fn_move_list = function() {
|
||||
const url = '<c:url value="/mngr/goods/goodsinfo/selectGoodsInfoList"/>';
|
||||
|
||||
$("#goodsInfoForm").attr('action', url);
|
||||
$("#goodsInfoForm").attr('method', 'post');
|
||||
$("#goodsInfoForm").submit();
|
||||
}
|
||||
|
||||
|
||||
</script>
|
||||
</head>
|
||||
|
||||
<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 class="btn primary" onclick="fn_regist_goodsInfor();"><spring:message code="button.insert"/></button>
|
||||
</div>
|
||||
</div>
|
||||
<form id="goodsInfoForm">
|
||||
<section class="content-section">
|
||||
<h3 class="content-section__inner-title">상품표시</h3>
|
||||
<div class="table-wrapper">
|
||||
<table class="table">
|
||||
<input type="hidden" name="goodsExpsrInfoInnb" value="<c:out value='${resultMap.goodsExpsrInfoInnb}'/>" />
|
||||
<caption>상품표시</caption>
|
||||
<colgroup>
|
||||
<col style="width: 12%;">
|
||||
<col>
|
||||
</colgroup>
|
||||
<tbody>
|
||||
<tr>
|
||||
<th>상품표시명<span class="red-7">*</span></th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<div class="word-limit-input">
|
||||
<input type="text" class="input-text word-limit" name="goodsInfoSetupSj" maxlength="30" size="60" title="상품표시명" placeholder="상품표시명을 입력해 주세요." value="<c:out value='${resultMap.goodsInfoSetupSj}'/>">
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</section>
|
||||
<section class="content-section">
|
||||
<hr class="spacing">
|
||||
<div class="table-wrapper">
|
||||
<table class="table vertical draggable" >
|
||||
<caption>해당 테이블에 대한 설명</caption>
|
||||
<!-- 각 열 width 설정 -->
|
||||
<colgroup>
|
||||
<col style="width: 20%;">
|
||||
<col style="width: auto;">
|
||||
<col style="width: 30%;">
|
||||
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>순서</th>
|
||||
<th>상품표시</th>
|
||||
<th>노출여부</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<c:forEach var="infoDtl" items="${resultMap.infoDtlList }" varStatus="status">
|
||||
<tr>
|
||||
<td>
|
||||
<div class="draggable-icon-container">
|
||||
<i class="icon icon_draggable"></i>
|
||||
<span class="visually-hidden">순서 바꾸기</span>
|
||||
</div>
|
||||
</td>
|
||||
<td><c:out value="${infoDtl.infoDtlNmKr }"/></td>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<div class="custom-radio-container">
|
||||
<input type="hidden" name="sortOrdr" value="${infoDtl.infoDtlNm}" />
|
||||
<div class="custom-radio">
|
||||
<input type="radio" id="${infoDtl.infoDtlNm}-y" name="${infoDtl.infoDtlNm}" value="${infoDtl.infoDtlNm}-Y" ${f:setChecked(infoDtl.expsrAt, 'Y') }/>
|
||||
<label for="${infoDtl.infoDtlNm}-y">노출</label>
|
||||
</div>
|
||||
<div class="custom-radio">
|
||||
<input type="radio" id="${infoDtl.infoDtlNm}-n" name="${infoDtl.infoDtlNm}" value="${infoDtl.infoDtlNm}-N" ${f:setChecked(infoDtl.expsrAt, 'N') }/>
|
||||
<label for="${infoDtl.infoDtlNm}-n">미노출</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
</c:forEach>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</section>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
@@ -0,0 +1,291 @@
|
||||
<%@ 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 : GoodsInfoDtlFormR.jsp
|
||||
Description : 상품 정보 등록 화면
|
||||
Modification Information
|
||||
|
||||
수정일 수정자 수정내용
|
||||
------- -------- ---------------------------
|
||||
2023-12-20 김혜지 최초 생성(퍼블리싱 적용)
|
||||
2024-02-14 이운산 수정
|
||||
2024-04-19 등록 요청 후 결과 처리
|
||||
--%>
|
||||
<!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 file="/WEB-INF/views/comm/mngr/Include.jsp"%>
|
||||
|
||||
<script>
|
||||
$(document).ready(function(){
|
||||
|
||||
let urlParams = new URLSearchParams(window.location.search);
|
||||
|
||||
});
|
||||
|
||||
/**********************************************
|
||||
* 등록
|
||||
***********************************************/
|
||||
const fn_regist_goodsInfor = function() {
|
||||
|
||||
const url = '/mngr/goods/goodsinfo/insertGoodsInfo';
|
||||
let params = $('#goodsInfoForm').serialize();
|
||||
if (confirm('상품정보를 <spring:message code="confirm.common.save"/>')) {
|
||||
|
||||
$.ajax({
|
||||
type : 'post',
|
||||
url : url,
|
||||
data : params,
|
||||
success : function(data) {
|
||||
if (str.result == 'success') {
|
||||
alert('<spring:message code="success.common.insert"/>');
|
||||
location.replace('/mngr/goods/goodsinfo/selectGoodsInfoList');
|
||||
} else {
|
||||
alert('<spring:message code="fail.common.insert"/>');
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**********************************************
|
||||
* 등록 화면 이동
|
||||
***********************************************/
|
||||
const fn_move_list = function() {
|
||||
const url = '<c:url value="/mngr/goods/goodsinfo/selectGoodsInfoList"/>';
|
||||
|
||||
$("#goodsInfoForm").attr('action', url);
|
||||
$("#goodsInfoForm").attr('method', 'post');
|
||||
$("#goodsInfoForm").submit();
|
||||
};
|
||||
</script>
|
||||
</head>
|
||||
|
||||
<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_list();" onkeypress="this.onclick" class="btn outline"><spring:message code="button.list"/></button>
|
||||
<button class="btn primary" onclick="fn_regist_goodsInfor();"><spring:message code="button.insert"/></button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<form id="goodsInfoForm">
|
||||
<section class="content-section">
|
||||
<input type="hidden" name="goodsExpsrInfoInnb" value="${goodsExpsrInfoInnb }" />
|
||||
<h3 class="content-section__inner-title">상품정보</h3>
|
||||
<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">
|
||||
<div class="word-limit-input">
|
||||
<input type="text" class="input-text word-limit" name="goodsInfoSetupSj"
|
||||
maxlength="30" size="60" title="상품 정보명" placeholder="상품 정보명을 입력해 주세요."
|
||||
oninput="fn_num_validateInput(this)" >
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</section>
|
||||
<section class="content-section">
|
||||
<hr class="spacing">
|
||||
<div class="table-wrapper">
|
||||
<table class="table vertical draggable" >
|
||||
<caption>해당 테이블에 대한 설명</caption>
|
||||
<!-- 각 열 width 설정 -->
|
||||
<colgroup>
|
||||
<col style="width: 20%;">
|
||||
<col style="width: auto;">
|
||||
<col style="width: 30%;">
|
||||
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>순서</th>
|
||||
<th>상품정보</th>
|
||||
<th>노출여부</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>
|
||||
<div class="draggable-icon-container">
|
||||
<i class="icon icon_draggable"></i>
|
||||
<span class="visually-hidden">순서 바꾸기</span>
|
||||
</div>
|
||||
</td>
|
||||
<td>상품명</td>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<div class="custom-radio-container">
|
||||
<input type="hidden" name="sortOrdr" value="goodsNmExpsrAt" />
|
||||
<div class="custom-radio">
|
||||
<input type="radio" id="goodsNmExpsrAt-y" name="goodsNmExpsrAt" value="goodsNmExpsrAt-Y" checked />
|
||||
<label for="goodsNmExpsrAt-y">노출</label>
|
||||
</div>
|
||||
<div class="custom-radio">
|
||||
<input type="radio" id="goodsNmExpsrAt-n" name="goodsNmExpsrAt" value="goodsNmExpsrAt-N">
|
||||
<label for="goodsNmExpsrAt-n">미노출</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<div class="draggable-icon-container">
|
||||
<i class="icon icon_draggable"></i>
|
||||
<span class="visually-hidden">순서 바꾸기</span>
|
||||
</div>
|
||||
</td>
|
||||
<td>대표설명</td>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<input type="hidden" name="sortOrdr" value="reprsntDcExpsrAt" />
|
||||
<div class="custom-radio-container">
|
||||
<div class="custom-radio">
|
||||
<input type="radio" id="reprsntDcExpsrAt-y" name="reprsntDcExpsrAt" value="reprsntDcExpsrAt-Y" checked />
|
||||
<label for="reprsntDcExpsrAt-y">노출</label>
|
||||
</div>
|
||||
<div class="custom-radio">
|
||||
<input type="radio" id="reprsntDcExpsrAt-n" name="reprsntDcExpsrAt" value="reprsntDcExpsrAt-N">
|
||||
<label for="reprsntDcExpsrAt-n">미노출</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<div class="draggable-icon-container">
|
||||
<i class="icon icon_draggable"></i>
|
||||
<span class="visually-hidden">순서 바꾸기</span>
|
||||
</div>
|
||||
</td>
|
||||
<td>가격</td>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<input type="hidden" name="sortOrdr" value="pricExpsrAt" />
|
||||
<div class="custom-radio-container">
|
||||
<div class="custom-radio">
|
||||
<input type="radio" id="pricExpsrAt-y" name="pricExpsrAt" value="pricExpsrAt-Y" checked />
|
||||
<label for="pricExpsrAt-y">노출</label>
|
||||
</div>
|
||||
<div class="custom-radio">
|
||||
<input type="radio" id="pricExpsrAt-n" name="pricExpsrAt" value="pricExpsrAt-N">
|
||||
<label for="pricExpsrAt-n">미노출</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<div class="draggable-icon-container">
|
||||
<i class="icon icon_draggable"></i>
|
||||
<span class="visually-hidden">순서 바꾸기</span>
|
||||
</div>
|
||||
</td>
|
||||
<td>배송</td>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<input type="hidden" name="sortOrdr" value="dlvyExpsrAt" />
|
||||
<div class="custom-radio-container">
|
||||
<div class="custom-radio">
|
||||
<input type="radio" id="dlvyExpsrAt-y" name="dlvyExpsrAt" value="dlvyExpsrAt-Y" checked />
|
||||
<label for="dlvyExpsrAt-y">노출</label>
|
||||
</div>
|
||||
<div class="custom-radio">
|
||||
<input type="radio" id="dlvyExpsrAt-n" name="dlvyExpsrAt" value="dlvyExpsrAt-N">
|
||||
<label for="dlvyExpsrAt-n">미노출</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<div class="draggable-icon-container">
|
||||
<i class="icon icon_draggable"></i>
|
||||
<span class="visually-hidden">순서 바꾸기</span>
|
||||
</div>
|
||||
</td>
|
||||
<td>리뷰 평점</td>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<input type="hidden" name="sortOrdr" value="rvwEvlScreExpsrAt" />
|
||||
<div class="custom-radio-container">
|
||||
<div class="custom-radio">
|
||||
<input type="radio" id="rvwEvlScreExpsrAt-y" name="rvwEvlScreExpsrAt" value="rvwEvlScreExpsrAt-Y" checked />
|
||||
<label for="rvwEvlScreExpsrAt-y">노출</label>
|
||||
</div>
|
||||
<div class="custom-radio">
|
||||
<input type="radio" id="rvwEvlScreExpsrAt-n" name="rvwEvlScreExpsrAt" value="rvwEvlScreExpsrAt-N">
|
||||
<label for="rvwEvlScreExpsrAt-n">미노출</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<div class="draggable-icon-container">
|
||||
<i class="icon icon_draggable"></i>
|
||||
<span class="visually-hidden">순서 바꾸기</span>
|
||||
</div>
|
||||
</td>
|
||||
<td>아이콘</td>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<input type="hidden" name="sortOrdr" value="iconExpsrAt" />
|
||||
<div class="custom-radio-container">
|
||||
<div class="custom-radio">
|
||||
<input type="radio" id="iconExpsrAt-y" name="iconExpsrAt" value="iconExpsrAt-Y" checked />
|
||||
<label for="iconExpsrAt-y">노출</label>
|
||||
</div>
|
||||
<div class="custom-radio">
|
||||
<input type="radio" id="iconExpsrAt-n" name="iconExpsrAt" value="iconExpsrAt-N">
|
||||
<label for="iconExpsrAt-n">미노출</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</section>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
@@ -0,0 +1,227 @@
|
||||
<%@ 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 : GoodsInfoFormR.jsp
|
||||
Description :상품 정보 목록 화면
|
||||
Modification Information
|
||||
|
||||
수정일 수정자 수정내용
|
||||
------- -------- ---------------------------
|
||||
2023-12-20 김혜지 최초 생성(퍼블리싱 적용)
|
||||
2024-03-03 이운산 상품정보 페이징 추가
|
||||
--%>
|
||||
<!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 file="/WEB-INF/views/comm/mngr/Include.jsp"%>
|
||||
|
||||
<script>
|
||||
$(document).ready(function(){
|
||||
|
||||
let urlParams = new URLSearchParams(window.location.search);
|
||||
|
||||
});
|
||||
|
||||
/* ********************************************************
|
||||
* 상품정보 목록 페이지 조회
|
||||
******************************************************** */
|
||||
const fn_select_goods_info_list = function(pageIndex, pageUnit) {
|
||||
let dataStr;
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
let params = '&pageIndex=' + pageIndex + '&pageUnit=' + '10';
|
||||
$.ajax({
|
||||
type : 'post',
|
||||
url : '<c:url value="/mngr/goods/goodsinfo/selectGoodsInfoList"/>',
|
||||
data : dataStr,
|
||||
success : function(data) {
|
||||
//data html내 목록 섹션 시작
|
||||
const startIndex = data.lastIndexOf('<div id="pageDiv">') + '<div id="pageDiv">'.length;
|
||||
//data html내 목록 섹션 끝
|
||||
const endIndex = data.lastIndexOf("</section>");
|
||||
//페이지에 따른 html 요소 교체
|
||||
$('#pageDiv').html(data.substring(startIndex, endIndex));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**********************************************
|
||||
* 등록 화면 이동
|
||||
***********************************************/
|
||||
const fn_move_inforRegist = function() {
|
||||
|
||||
location.href = '/mngr/goods/goodsinfo/selectGoodsInfoForm';
|
||||
};
|
||||
|
||||
|
||||
/**********************************************
|
||||
* 상품 정보 삭제
|
||||
***********************************************/
|
||||
const fn_delete_goodsInfo = function(_arg) {
|
||||
|
||||
if (!confirm('상품정보를 <spring:message code="confirm.common.delete"/>')) return;
|
||||
const url = '<c:url value="/mngr/goods/goodsinfo/deleteGoodsInfo?goodsExpsrInfoInnb="/>' + _arg;
|
||||
$.ajax({
|
||||
type : 'get',
|
||||
url : url,
|
||||
success : function(data) {
|
||||
let result = JSON.parse(data.resBody.result).message;
|
||||
if (result === 'success') {
|
||||
alert('<spring:message code="success.common.delete"/>');
|
||||
// 삭제 후 목록 화면으로 이동
|
||||
fn_select_goods_info_list(1);
|
||||
//location.href = '<c:url value="/mngr/goods/goodsinfo/selectGoodsInfoList" />';
|
||||
} else {
|
||||
alert('<spring:message code="fail.common.delete"/>');
|
||||
}
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
|
||||
/* ********************************************************
|
||||
* 수정폼 이동
|
||||
******************************************************** */
|
||||
const fn_move_dtl_uptpage = function(goodsExpsrInfoInnb) {
|
||||
const url = '<c:url value=" /mngr/goods/goodsinfo/selectGoodsInfoDtlForm"/>';
|
||||
$('#listForm').attr('action', url);
|
||||
$('#listForm').attr('method', 'post');
|
||||
$('#goodsExpsrInfoInnb').val(goodsExpsrInfoInnb);
|
||||
$('#listForm').submit();
|
||||
}
|
||||
|
||||
</script>
|
||||
</head>
|
||||
|
||||
<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 class="btn primary" onclick="fn_move_inforRegist();">등록</button>
|
||||
</div>
|
||||
</div>
|
||||
<form id="listForm" name="listForm" >
|
||||
<input type="hidden" id="pageIndex" name="pageIndex" value="${ resultMap.boGoodsInfo.pageIndex }"/>
|
||||
<input type="hidden" id="goodsExpsrInfoInnb" name="goodsExpsrInfoInnb"/>
|
||||
<%-- 리스트 출력 섹션 START --%>
|
||||
<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 id="pageUnit" name="pageUnit" title="페이지당 출력될 목록건수" onchange="fn_select_goods_info_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="spacing">
|
||||
<div id="pageDiv">
|
||||
<div class="table-wrapper">
|
||||
<table class="table vertical">
|
||||
<caption>해당 테이블에 대한 설명</caption>
|
||||
<!-- 각 열 width 설정 -->
|
||||
<colgroup>
|
||||
<col style="width: 4%;">
|
||||
<col style="width: auto;">
|
||||
<col style="width: 20%;">
|
||||
<col style="width: 15%;">
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>번호</th>
|
||||
<th>제목</th>
|
||||
<th>생성일</th>
|
||||
<th>관리</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<%-- 리스트 BODY START --%>
|
||||
<tbody>
|
||||
<c:choose>
|
||||
<c:when test="${ not empty resultMap.infoList }">
|
||||
<c:forEach var="info" items="${resultMap.infoList }" varStatus="status">
|
||||
<tr>
|
||||
<td>
|
||||
<c:out value="${ info.rnum }"/>
|
||||
</td>
|
||||
<td>
|
||||
<c:out value="${ info.goodsInfoSetupSj }"/>
|
||||
</td>
|
||||
<td>
|
||||
<span>
|
||||
<c:set var="registDt" value="${fn:replace(info.registDt, 'T', ' ')}" />
|
||||
<c:out value="${registDt}"/>
|
||||
</span>
|
||||
</td>
|
||||
<td>
|
||||
<div class="manage-btn-container">
|
||||
<button class="btn xsm primary outline" type="button" onclick="fn_move_dtl_uptpage('<c:out value="${info.goodsExpsrInfoInnb}"/>')"><spring:message code="button.update"/></button>
|
||||
<button class="btn xsm dark" type="button" onclick="fn_delete_goodsInfo('${info.goodsExpsrInfoInnb}')"><spring:message code="button.delete"/></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>
|
||||
<%-- 리스트 BODY END --%>
|
||||
<div class="pagination__container">
|
||||
<div class="pagination__container">
|
||||
<ui:pagination paginationInfo="${resultMap.paginationInfo}" type="image" jsFunction="fn_select_goods_info_list" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
1112
src/main/webapp/WEB-INF/views/mngr/goods/goodsmngr/BndeUpdtU.jsp
Normal file
1112
src/main/webapp/WEB-INF/views/mngr/goods/goodsmngr/BndeUpdtU.jsp
Normal file
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,176 @@
|
||||
<%@ 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 : GoodsListR.jsp
|
||||
Description : 카테고리별 상품 목록 조회 리스트
|
||||
Modification Information
|
||||
|
||||
수정일 수정자 수정내용
|
||||
------- -------- ---------------------------
|
||||
2024-03-20 리브가 최초 생성
|
||||
--%>
|
||||
<script>
|
||||
$(document).ready(function () {
|
||||
if ($(".table.draggable").length > 0) {
|
||||
$(".table.draggable").tableDnD({
|
||||
onDragClass: "dragging",
|
||||
});
|
||||
}
|
||||
})
|
||||
</script>
|
||||
<spring:eval expression="@environment.getProperty('mngrfo.common.fileupload.cdnurl')" var="cdnurl"/>
|
||||
<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="goodsOrdrAsc" <c:if test="${resultMap.BOGoodsVO.sortDv eq 'goodsOrdrAsc' || resultMap.BOGoodsVO.sortDv eq null}">selected="selected"</c:if>>상품순서 오름차순</option>
|
||||
<option value="goodsOrdrDesc" <c:if test="${resultMap.BOGoodsVO.sortDv eq 'goodsOrdrDesc'}">selected="selected"</c:if>>상품순서 내림차순</option>
|
||||
<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="cnsmrpricAsc" <c:if test="${resultMap.BOGoodsVO.sortDv eq 'cnsmrpricAsc'}">selected="selected"</c:if>>정가 오름차순</option>
|
||||
<option value="cnsmrpricDesc" <c:if test="${resultMap.BOGoodsVO.sortDv eq 'cnsmrpricDesc'}">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'}">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>
|
||||
<option value="
|
||||
<c:choose>
|
||||
<c:when test="${ empty resultMap.paginationInfo.totalRecordCount || resultMap.paginationInfo.totalRecordCount <= 0 }">
|
||||
<c:out value="10"/>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<c:out value="${ resultMap.paginationInfo.totalRecordCount }"/>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
">
|
||||
전체상품
|
||||
</option>
|
||||
</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 draggable">
|
||||
<caption>상품정보 목록</caption>
|
||||
<colgroup>
|
||||
<col style="width: 4%;">
|
||||
<col style="width: 4%;">
|
||||
<col style="width: 7%;">
|
||||
<col style="width: 12%;">
|
||||
<col style="width: 7%;">
|
||||
<col style="width: 7%;">
|
||||
<col style="width: 7%;">
|
||||
<col style="width: 7%;">
|
||||
<col style="width: 10%;">
|
||||
<col style="width: 14%;">
|
||||
<col style="width: 4%;">
|
||||
<col style="width: 4%;">
|
||||
<%-- <col style="width: 4%;">--%>
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>순서</th>
|
||||
<th>번호</th>
|
||||
<th colspan="2">상품명</th>
|
||||
<th>정가</th>
|
||||
<th>판매가</th>
|
||||
<th>재고</th>
|
||||
<th>재고판매
|
||||
<%-- <button class="mini-info-btn mb-3" data-info="info01">?</button>--%>
|
||||
</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>
|
||||
<div class="draggable-icon-container">
|
||||
<i class="icon icon_draggable"></i>
|
||||
<input type="hidden" name="goodsInnbOrdr" value="${list.goodsInnb}" />
|
||||
<span class="visually-hidden">순서 바꾸기</span>
|
||||
</div>
|
||||
</td>
|
||||
<td><c:out value="${ list.rnum }" /></td>
|
||||
<td>
|
||||
<%-- <a href="javascript:void(0);" onclick="fn_move_goods_dtl_common(<c:out value="${list.goodsInnb}"/>, 'sopmal')">--%>
|
||||
<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">
|
||||
<%-- </a>--%>
|
||||
</td>
|
||||
<td><a onclick="fn_move_goods_dtl_common(<c:out value="${list.goodsInnb}"/>, 'mngr', '01', '_self')" class="under-line">${list.goodsNm}</a>
|
||||
</td>
|
||||
<td>${list.cnsmrpric}</td>
|
||||
<td>${list.slepric}</td>
|
||||
<td><a onclick="fn_open_modal('#modalDiv','#invntry-check','/mngr/goods/goodsmngr/selectGoodsInvntryPopup',{'goodsInnb':${list.goodsInnb}, 'sopmalCd':'${list.sopmalCd}'}); return false;" class="under-line">재고확인</a></td>
|
||||
<td>${list.invntryPolicyCdDc}</td>
|
||||
<td>${list.dlvyGroupNm}</td>
|
||||
<td>
|
||||
<span>${list.registDt}</span><br><span>${list.updtDt}</span>
|
||||
</td>
|
||||
<td>${list.goodsSttusNm}</td>
|
||||
<td>${list.expsrNm}</td>
|
||||
<%-- <td>${list.goodsOrdr}--%>
|
||||
<%-- <div class="manage-btn-container">--%>
|
||||
<%-- <button class="btn xsm light-gray" type="button" onclick="fn_move_goods_copy(<c:out--%>
|
||||
<%-- value="${list.goodsInnb}"/>)"><spring:message code="button.copy"/> </button>--%>
|
||||
<%-- <button class="btn xsm outline" type="button" onclick="fn_move_goods_dtl_common(<c:out value="${list.goodsInnb}"/>,'mngr','01','_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,756 @@
|
||||
<%@ 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 : GoodsListRForm.jsp
|
||||
Description : 카테고리별 상품 목록 조회 폼
|
||||
Modification Information
|
||||
|
||||
수정일 수정자 수정내용
|
||||
------- -------- ---------------------------
|
||||
2024-03-20 리브가 최초 생성
|
||||
--%>
|
||||
<!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 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);
|
||||
}
|
||||
});
|
||||
|
||||
// event 제어
|
||||
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($('input[name="goodsDftinfoSttus"]') != null){
|
||||
$('input[name="goodsDftinfoSttus"]').remove()
|
||||
}
|
||||
|
||||
$('input[name="goodsDftinfoArr"]:checked').each(function(idx, item) {
|
||||
|
||||
console.log('idx',idx,'item', item.value)
|
||||
|
||||
if(!fn_is_empty(item.value)){
|
||||
$('#listForm').append(
|
||||
$('<input>', {
|
||||
'type': 'hidden',
|
||||
'name': 'goodsDftinfoSttus',
|
||||
'value': item.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;
|
||||
}
|
||||
}
|
||||
|
||||
console.log(dataStr)
|
||||
|
||||
$.ajax({
|
||||
type: "post",
|
||||
url: "<c:url value="/mngr/goods/goodsmngr/selectCtgryGoodsList"/>",
|
||||
data: dataStr,
|
||||
success: function (resultHtml) {
|
||||
$('#pageDiv').html(resultHtml);
|
||||
$('#pageUnit').niceSelect();
|
||||
$('#sortDv').niceSelect();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/* ********************************************************
|
||||
* 카테고리 수정
|
||||
******************************************************** */
|
||||
//카테고리 상품 순서수정
|
||||
$(document).on('click', '#uptGoodsOrdr', function () {
|
||||
let goodsOrdrList = [];
|
||||
|
||||
const ctgryId = $('#ctgryId').val();
|
||||
|
||||
if(fn_is_empty(ctgryId)){
|
||||
alert('카테고리 검색을 해주세요')
|
||||
return false;
|
||||
}
|
||||
|
||||
if($('#listForm .draggable-icon-container').length <= 0){
|
||||
alert('조회된 상품이 없습니다')
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
$('#listForm .draggable-icon-container input[name="goodsInnbOrdr"]').each(function(index, item) {
|
||||
goodsOrdrList.push(item.value)
|
||||
|
||||
})
|
||||
|
||||
const data = {
|
||||
'goodsOrdrList' : goodsOrdrList,
|
||||
'ctgryId' : ctgryId
|
||||
}
|
||||
|
||||
if (confirm(`카테고리별 상품 순서을(를) <spring:message code="confirm.common.update"/>`)) {
|
||||
$.ajax({
|
||||
type: 'post',
|
||||
url : '<c:url value="/mngr/goods/goodsmngr/updateCtgryGoodsList"/>',
|
||||
data : JSON.stringify(data),
|
||||
contentType : 'application/json',
|
||||
dataType : 'json',
|
||||
success:function(data) {
|
||||
const result = JSON.parse(data.resBody.result).result
|
||||
if(result ==='success'){
|
||||
alert('<spring:message code="success.common.update"/>')
|
||||
window.location.reload()
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
})
|
||||
|
||||
|
||||
history.replaceState({}, null, location.pathname);
|
||||
/* ****************************
|
||||
* event 제어
|
||||
******************************/
|
||||
const fn_event = function () {
|
||||
|
||||
/*상세검색 버튼 상태 및 상세조회 대상 안보이게 처리*/
|
||||
$('.search-hide').hide()
|
||||
$('.search-detail').removeClass('opened')
|
||||
|
||||
$(document).ready('click', '.search-detail', function () {
|
||||
let searchHide = $(".search-hide");
|
||||
if (searchHide.is(":visible")) {
|
||||
searchHide.hide();
|
||||
$('.search-detail').removeClass('opened')
|
||||
} else {
|
||||
searchHide.show();
|
||||
$('.search-detail').addClass('opened')
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
/* 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'));
|
||||
});
|
||||
|
||||
/* 검색조건 > 카테고리 선택 이벤트 */
|
||||
$(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', 'input[name="expsrCd"]', function () {
|
||||
const sttus = $(this).val();
|
||||
const popup = $('#search-section');
|
||||
const checkbox = $(popup).find('input[name="expsrCd"]');
|
||||
const all = $(popup).find('input[name="expsrCd"][value=""]')
|
||||
|
||||
if (fn_is_empty(sttus)) {
|
||||
$(checkbox).prop('checked', false);
|
||||
|
||||
$(this).prop('checked', true);
|
||||
} else {
|
||||
$(all).prop('checked', false);
|
||||
|
||||
const length = $(popup).find('input[name="expsrCd"]:checked').length;
|
||||
|
||||
if (2 < length) {
|
||||
$(checkbox).prop('checked', false);
|
||||
|
||||
$(all).prop('checked', true);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
/* ********************************************************
|
||||
* 카테고리 체크버튼 이벤트
|
||||
******************************************************** */
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* ****************************
|
||||
* 카테고리 목록 조회 AJAX
|
||||
******************************/
|
||||
const fn_get_goods_ctgry = function (upperCtgryId, targetCtgryId) {
|
||||
$.ajax({
|
||||
type: 'post',
|
||||
url: '<c:url value="/admin/sys/ctgry/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) {
|
||||
|
||||
$('#' + targetCtgryId + ' option').filter(function() {
|
||||
return $(this).val() !== '';
|
||||
}).remove();
|
||||
|
||||
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);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/* ****************************
|
||||
* 상품 목록 조회 AJAX
|
||||
******************************/
|
||||
const fn_get_goods_list = function (pageIndex) {
|
||||
const popup = $('#product-select-pop');
|
||||
|
||||
$(popup).find('#pageIndex').val(pageIndex);
|
||||
|
||||
$.ajax({
|
||||
type: 'post',
|
||||
url: '<c:url value="/crm/ordr/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);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/*********************************************************
|
||||
* 상품 선택 삭제 AJAX
|
||||
*********************************************************/
|
||||
const fn_delete_check = function () {
|
||||
|
||||
let url = '<c:url value="/mngr/goods/goodsmngr/deleteGoods"/>';
|
||||
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 (delInnbArr.length === 0) {
|
||||
alert("선택된 상품이 없습니다.");
|
||||
return false;
|
||||
}
|
||||
|
||||
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();
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* 관리자 주문 > 상품조회 > 검색조건 > 날짜 선택 이벤트 */
|
||||
$(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);
|
||||
});
|
||||
|
||||
/*********************************************************
|
||||
* 상품 복사 조회
|
||||
*********************************************************/
|
||||
const fn_move_goods_copy = (goodsInnb) => {
|
||||
window.open("/mngr/goods/goodsmngr/selectGoodsCopyForm?goodsInnb=" + goodsInnb, '_self');
|
||||
}
|
||||
|
||||
//카테고리 선택시 카테고리 아이디 저장(검색용)
|
||||
$(document).on('change', 'select[id^=ctgryDepth]', function () {
|
||||
const ctgryOptn = $(this).val()
|
||||
|
||||
if(!fn_is_empty(ctgryOptn)){
|
||||
$('#ctgryId').val(ctgryOptn)
|
||||
}else{
|
||||
//value가 ''인 카테고리 선택할경우
|
||||
let currentCtgryDepth = parseInt($(this).attr('id').replace('ctgryDepth', ''));
|
||||
|
||||
//1차 카테고리가 아닐 경우 이전 카테고리 번호 가져오기
|
||||
if(currentCtgryDepth !== 1){
|
||||
$('#ctgryId').val($('#ctgryDepth' + (currentCtgryDepth - 1)).val())
|
||||
}else{
|
||||
//1차 카테고리 일경우 카테고리 번호 비우기
|
||||
$('#ctgryId').val('')
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
})
|
||||
|
||||
//초기화버튼
|
||||
$(document).on('click', '#resetBtn', function () {
|
||||
|
||||
$('.ctgry').val('').niceSelect('update')
|
||||
$('#srchType').val('GOODS_NM').niceSelect('update')
|
||||
$('input[name="reprsntCtgryAtY"]').prop('checked', false)
|
||||
$('input[name="ctgryNoRegAtY"]').prop('checked', false)
|
||||
$('#brandCd').val('').niceSelect('update')
|
||||
$('select[name="dateDv"]').val('regist').niceSelect('update')
|
||||
$('#allDays').click()
|
||||
if(!$('#goodsDftinfo-all').prop('checked')){
|
||||
$('#goodsDftinfo-all').click()
|
||||
}
|
||||
$('#expsrDvCd').click()
|
||||
$('select[name="pricDv"]').val('cnsmrpric').niceSelect('update')
|
||||
$('#goodsDftinfoInvntryPolicy0').click()
|
||||
$('select[name="dlvyGroupInnb"]').val('').niceSelect('update')
|
||||
|
||||
$('input[name="ctgryId"]').val('')
|
||||
$('input[name="startPric"]').val('')
|
||||
$('input[name="endPric"]').val('')
|
||||
$('#srchStr').val('')
|
||||
|
||||
fn_select_list(1);
|
||||
})
|
||||
</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 id="uptGoodsOrdr" class="btn primary">카테고리별 상품 순서 <spring:message code="button.update"/></button>
|
||||
</div>
|
||||
</div>
|
||||
<form id='listForm' name="listForm">
|
||||
<input type="hidden" id="pageIndex" name="pageIndex" value="${ resultMap.BOGoodsVO.pageIndex }"/>
|
||||
<input type="hidden" id="goodsKndCd" name="goodsKndCd" value="01"/>
|
||||
<input type="hidden" id="ctgryId" name="ctgryId" />
|
||||
<section class="content-section" id="search-section">
|
||||
<div class="table-wrapper">
|
||||
<table class="table">
|
||||
<colgroup>
|
||||
<col style="width: 12%;">
|
||||
<col>
|
||||
<col style="width: 12%;">
|
||||
<col>
|
||||
</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="input-container gap-4">
|
||||
<div class="select-box">
|
||||
<select id="ctgryDepth1" class="ctgry" title="1차 카테고리">
|
||||
<option value="">1차 카테고리</option>
|
||||
<c:forEach items="${resultMap.goodsCategoryList}" var="goodsCategory"
|
||||
varStatus="status">
|
||||
<option value="${goodsCategory.ctgryId}">${goodsCategory.ctgryNm}</option>
|
||||
</c:forEach>
|
||||
</select>
|
||||
</div>
|
||||
<div class="select-box">
|
||||
<select id="ctgryDepth2" class="ctgry" title="2차 카테고리">
|
||||
<option value="">2차 카테고리</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="select-box">
|
||||
<select id="ctgryDepth3" class="ctgry" title="3차 카테고리">
|
||||
<option value="">3차 카테고리</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="select-box">
|
||||
<select id="ctgryDepth4" class="ctgry" title="4차 카테고리">
|
||||
<option value="">4차 카테고리</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<%-- <div class="b-checkbox-container">--%>
|
||||
<%-- <label class="b-checkbox checkbox">--%>
|
||||
<%-- <input type="checkbox" value="Y" name="reprsntCtgryAtY">--%>
|
||||
<%-- <span class="check"></span>--%>
|
||||
<%-- <span class="control-label">대표 카테고리 기준</span>--%>
|
||||
<%-- </label>--%>
|
||||
<%-- <label class="b-checkbox checkbox">--%>
|
||||
<%-- <input type="checkbox" value="Y" name="ctgryNoRegAtY">--%>
|
||||
<%-- <span class="check"></span>--%>
|
||||
<%-- <span class="control-label">카테고리 미등록</span>--%>
|
||||
<%-- </label>--%>
|
||||
<%-- </div>--%>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<%-- <tr class="search-hide">--%>
|
||||
<%-- <th>브랜드</th>--%>
|
||||
<%-- <td colspan="3">--%>
|
||||
<%-- <div class="td-inner">--%>
|
||||
<%-- <div class="select-box">--%>
|
||||
<%-- <select title="브랜드" id="brandCd" name="brandCd">--%>
|
||||
<%-- <option value="">전체</option>--%>
|
||||
<%-- <c:forEach var="brandList" items="${ resultMap.brandList }" varStatus="">--%>
|
||||
<%-- <option value="${ brandList.cd }">${ brandList.cdNm }</option>--%>
|
||||
<%-- </c:forEach>--%>
|
||||
<%-- </select>--%>
|
||||
<%-- </div>--%>
|
||||
<%-- </div>--%>
|
||||
<%-- </td>--%>
|
||||
<%-- </tr>--%>
|
||||
<%-- <tr class="search-hide">--%>
|
||||
<%-- <th>날짜</th>--%>
|
||||
<%-- <td colspan="3">--%>
|
||||
<%-- <div class="td-inner">--%>
|
||||
<%-- <div class="select-box">--%>
|
||||
<%-- <select name="dateDv" title="날짜 구분">--%>
|
||||
<%-- <option value="regist">등록일</option>--%>
|
||||
<%-- <option value="updt">수정일</option>--%>
|
||||
<%-- </select>--%>
|
||||
<%-- </div>--%>
|
||||
<%-- <div class="input-container">--%>
|
||||
<%-- <input type="text" name="startDate" id="startDate" class="datepicker"--%>
|
||||
<%-- title="시작 날짜 선택" autocomplete="off">--%>
|
||||
<%-- <span class="tilde">~</span>--%>
|
||||
<%-- <input type="text" name="endDate" id="endDate" class="datepicker"--%>
|
||||
<%-- title="종료 날짜 선택" autocomplete="off" pattern="yyyy-MM-dd">--%>
|
||||
<%-- <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 id="goodsDftinfo-all" type="checkbox" name="goodsDftinfoArr" value="" checked
|
||||
onclick="fn_change_event('goodsDftinfo', 'all');">
|
||||
<span class="check"></span>
|
||||
<span class="control-label">전체</span>
|
||||
</label>
|
||||
<c:forEach items="${resultMap.goodsDftinfoSttusList}" var="goodsDftinfoSttus"
|
||||
varStatus="status">
|
||||
<label class="b-checkbox checkbox">
|
||||
<input type="checkbox" name="goodsDftinfoArr"
|
||||
value="${goodsDftinfoSttus.cd}"
|
||||
onclick="fn_change_event('goodsDftinfo', 'other');" checked>
|
||||
<span class="check"></span>
|
||||
<span class="control-label">${goodsDftinfoSttus.cdNm}</span>
|
||||
</label>
|
||||
</c:forEach>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
<th>노출여부</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<div class="custom-radio-container">
|
||||
<div class="custom-radio">
|
||||
<input type="radio" id="expsrDvCd"
|
||||
name="expsrDvCd" value="" >
|
||||
<label for="expsrDvCd">전체</label>
|
||||
</div>
|
||||
<c:forEach items="${resultMap.expsrCdList}"
|
||||
var="expsrCdList" varStatus="status">
|
||||
<div class="custom-radio">
|
||||
<input type="radio"
|
||||
id="expsrCdList${status.count}"
|
||||
name="expsrDvCd"
|
||||
value="${expsrCdList.cd}" <c:if test="${status.first}">checked</c:if> >
|
||||
<label for="expsrCdList${status.count}">${expsrCdList.cdNm}</label>
|
||||
</div>
|
||||
</c:forEach>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<%-- <tr class="search-hide">--%>
|
||||
<%-- <th>가격</th>--%>
|
||||
<%-- <td colspan="3">--%>
|
||||
<%-- <div class="td-inner">--%>
|
||||
<%-- <div class="select-box">--%>
|
||||
<%-- <select name="pricDv" title="가격">--%>
|
||||
<%-- <option value="cnsmrpric">정가</option>--%>
|
||||
<%-- <option value="slepric">판매가</option>--%>
|
||||
<%-- </select>--%>
|
||||
<%-- </div>--%>
|
||||
<%-- <div class="input-container">--%>
|
||||
<%-- <input type="text" class="input-text sm right" name="startPric"--%>
|
||||
<%-- title="startPric">--%>
|
||||
<%-- <span class="input-unit-text">원</span>--%>
|
||||
<%-- <span class="tilde">~</span>--%>
|
||||
<%-- <input type="text" class="input-text sm right" name="endPric"--%>
|
||||
<%-- title="endPric">--%>
|
||||
<%-- <span class="input-unit-text">원</span>--%>
|
||||
<%-- </div>--%>
|
||||
<%-- </div>--%>
|
||||
<%-- </td>--%>
|
||||
<%-- </tr>--%>
|
||||
<%-- <tr class="search-hide">--%>
|
||||
<%-- <th>재고에 따른 판매</th>--%>
|
||||
<%-- <td colspan="3">--%>
|
||||
<%-- <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>--%>
|
||||
<%-- </tr>--%>
|
||||
<%-- <tr class="search-hide">--%>
|
||||
<%-- <th>배송그룹</th>--%>
|
||||
<%-- <td colspan="3">--%>
|
||||
<%-- <div class="td-inner">--%>
|
||||
<%-- <div class="select-box">--%>
|
||||
<%-- <select title="해당 셀렉트에 대한 설명" name="dlvyGroupInnb">--%>
|
||||
<%-- <option value="">선택</option>--%>
|
||||
<%-- <c:if test="${not empty resultMap.dlvyGrpList}">--%>
|
||||
<%-- <c:forEach var="dlvyGrpInfo" items="${resultMap.dlvyGrpList}">--%>
|
||||
<%-- <option value="${dlvyGrpInfo.dlvyGroupDvCd}">${dlvyGrpInfo.dlvyGroupNm}</option>--%>
|
||||
<%-- </c:forEach>--%>
|
||||
<%-- </c:if>--%>
|
||||
<%-- </select>--%>
|
||||
<%-- </div>--%>
|
||||
<%-- </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);"><spring:message code="button.search"/> </button>
|
||||
</div>
|
||||
<%-- <div class="right">--%>
|
||||
<%-- <button class="btn outline search-detail">상세검색</button>--%>
|
||||
<%-- </div>--%>
|
||||
</div>
|
||||
</section>
|
||||
<div id="pageDiv">
|
||||
</div>
|
||||
</form>
|
||||
<button class="scroll-to-top"><span class="visually-hidden">위로가기</span></button>
|
||||
</div>
|
||||
</div>
|
||||
<div id="modalDiv">
|
||||
|
||||
</div>
|
||||
</main>
|
||||
|
||||
<!-- 재고 툴팁 클릭 컨텐츠 -->
|
||||
<!-- 버튼의 data-info값과 id를 통일시켜야함 -->
|
||||
<div id="info01" class="mini-info-content" style="width: 280px;">
|
||||
<div class="mini-info-content__header">
|
||||
<h5 class="mini-info-content__title">재고 판매</h5>
|
||||
<button class="mini-info-content__close"><span class="visually-hidden">닫기</span></button>
|
||||
</div>
|
||||
<div class="mini-info-content__content">
|
||||
<p>재고(옵션 기준)에 따른 상품 판매 설정에 따라 아래와 같이 2가지로 표기됩니다.</p>
|
||||
<p>재고가 있으면 판매 : 재고</p>
|
||||
<p>재고와 상관없이 주문 가능 : 무제한</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
||||
4569
src/main/webapp/WEB-INF/views/mngr/goods/goodsmngr/GoodsC.jsp
Normal file
4569
src/main/webapp/WEB-INF/views/mngr/goods/goodsmngr/GoodsC.jsp
Normal file
File diff suppressed because it is too large
Load Diff
5644
src/main/webapp/WEB-INF/views/mngr/goods/goodsmngr/GoodsCopyC.jsp
Normal file
5644
src/main/webapp/WEB-INF/views/mngr/goods/goodsmngr/GoodsCopyC.jsp
Normal file
File diff suppressed because it is too large
Load Diff
6165
src/main/webapp/WEB-INF/views/mngr/goods/goodsmngr/GoodsDtlU.jsp
Normal file
6165
src/main/webapp/WEB-INF/views/mngr/goods/goodsmngr/GoodsDtlU.jsp
Normal file
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,68 @@
|
||||
<%@ 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 : GoodsSrchPopupForm.jsp
|
||||
Description : 상품 검색 팝업 폼
|
||||
Modification Information
|
||||
|
||||
수정일 수정자 수정내용
|
||||
------- -------- ---------------------------
|
||||
since : 2024-06-03
|
||||
--%>
|
||||
|
||||
<script>
|
||||
|
||||
|
||||
$(document).ready(function() {
|
||||
|
||||
});
|
||||
|
||||
|
||||
</script>
|
||||
<!-- 재고확인 모달 -->
|
||||
<div id="invntry-check" class="modal" style="max-width: 600px;">
|
||||
<div class="modal-header">
|
||||
<h4>재고 확인</h4>
|
||||
</div>
|
||||
<div class="modal-content">
|
||||
<div class="table-wrapper">
|
||||
<table class="table vertical tight">
|
||||
<caption>해당 테이블에 대한 설명</caption>
|
||||
<colgroup>
|
||||
<col style="width: 25%;">
|
||||
<col style="width: 50%;">
|
||||
<col>
|
||||
</colgroup>
|
||||
<thead>
|
||||
<th>유형</th>
|
||||
<th>옵션</th>
|
||||
<th>재고</th>
|
||||
</thead>
|
||||
<tbody>
|
||||
<c:choose>
|
||||
<c:when test="${ not empty resultMap.list }">
|
||||
<c:forEach items="${ resultMap.list }" var="list" varStatus="status">
|
||||
<tr>
|
||||
<td>${list.optnTy}</td>
|
||||
<td>${list.optnVal1}</td>
|
||||
<td><fmt:formatNumber value="${list.invntryQy}" pattern="#,###"/></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>
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,157 @@
|
||||
<%@ 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 : GoodsListR.jsp
|
||||
Description : 상품 목록 조회 리스트
|
||||
Modification Information
|
||||
|
||||
수정일 수정자 수정내용
|
||||
------- -------- ---------------------------
|
||||
2024-03-20 리브가 최초 생성
|
||||
--%>
|
||||
<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="cnsmrpricAsc" <c:if test="${resultMap.BOGoodsVO.sortDv eq 'cnsmrpricAsc'}">selected="selected"</c:if>>정가 오름차순</option>
|
||||
<option value="cnsmrpricDesc" <c:if test="${resultMap.BOGoodsVO.sortDv eq 'cnsmrpricDesc'}">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>
|
||||
<colgroup>
|
||||
<col style="width: 4%;">
|
||||
<col style="width: 4%;">
|
||||
<col style="width: 7%;">
|
||||
<col style="width: 12%;">
|
||||
<col style="width: 7%;">
|
||||
<col style="width: 7%;">
|
||||
<col style="width: 7%;">
|
||||
<col style="width: 7%;">
|
||||
<col style="width: 10%;">
|
||||
<col style="width: 14%;">
|
||||
<col style="width: 4%;">
|
||||
<col style="width: 4%;">
|
||||
<col style="width: 10%;">
|
||||
</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>재고판매
|
||||
<%-- <button class="mini-info-btn mb-3" data-info="info01">?</button>--%>
|
||||
</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"/>
|
||||
<a href="javascript:void(0);" onclick="fn_move_goods_dtl_common(<c:out value="${list.goodsInnb}"/>, 'sopmal')">
|
||||
<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">
|
||||
</a>
|
||||
</td>
|
||||
<td><a onclick="fn_move_goods_dtl_common(<c:out value="${list.goodsInnb}"/>, 'mngr', '01', '_self')" class="under-line">${list.goodsNm}</a>
|
||||
</td>
|
||||
<td>${list.cnsmrpric}</td>
|
||||
<td>${list.slepric}</td>
|
||||
<td><a onclick="fn_open_modal('#modalDiv','#invntry-check','/mngr/goods/goodsmngr/selectGoodsInvntryPopup',{'goodsInnb':${list.goodsInnb}, 'sopmalCd':'${list.sopmalCd}'}); return false;" class="under-line">재고확인</a></td>
|
||||
<td>${list.invntryPolicyCdDc}</td>
|
||||
<td>${list.dlvyGroupNm}</td>
|
||||
<td>
|
||||
<span>${list.registDt}</span><br><span>${list.updtDt}</span>
|
||||
</td>
|
||||
<td>${list.goodsSttusNm}</td>
|
||||
<td>${list.expsrNm}</td>
|
||||
<td>
|
||||
<div class="manage-btn-container">
|
||||
<button class="btn xsm light-gray" type="button" onclick="fn_move_goods_copy(<c:out
|
||||
value="${list.goodsInnb}"/>)"><spring:message code="button.copy"/> </button>
|
||||
<button class="btn xsm outline" type="button" onclick="fn_move_goods_dtl_common(<c:out value="${list.goodsInnb}"/>,'mngr','01','_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,722 @@
|
||||
<%@ 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 : GoodsListRForm.jsp
|
||||
Description : 상품 목록 조회 폼
|
||||
Modification Information
|
||||
|
||||
수정일 수정자 수정내용
|
||||
------- -------- ---------------------------
|
||||
2024-03-20 리브가 최초 생성
|
||||
--%>
|
||||
<!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 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);
|
||||
}
|
||||
});
|
||||
|
||||
// event 제어
|
||||
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($('input[name="goodsDftinfoSttus"]') != null){
|
||||
$('input[name="goodsDftinfoSttus"]').remove()
|
||||
}
|
||||
|
||||
$('input[name="goodsDftinfoArr"]:checked').each(function(idx, item) {
|
||||
|
||||
console.log('idx',idx,'item', item.value)
|
||||
|
||||
if(!fn_is_empty(item.value)){
|
||||
$('#listForm').append(
|
||||
$('<input>', {
|
||||
'type': 'hidden',
|
||||
'name': 'goodsDftinfoSttus',
|
||||
'value': item.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;
|
||||
}
|
||||
}
|
||||
|
||||
console.log('dataStr', dataStr)
|
||||
|
||||
$.ajax({
|
||||
type: "post",
|
||||
url: "<c:url value="/mngr/goods/goodsmngr/selectGoodsList"/>",
|
||||
data: dataStr,
|
||||
success: function (resultHtml) {
|
||||
$('#pageDiv').html(resultHtml);
|
||||
$('#pageUnit').niceSelect();
|
||||
$('#sortDv').niceSelect();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/* ********************************************************
|
||||
* 등록폼 이동
|
||||
******************************************************** */
|
||||
const fn_move_regpage = function () {
|
||||
const url = '<c:url value="/mngr/goods/goodsmngr/selectGoodsRegistForm"/>';
|
||||
|
||||
$('#listForm').attr('action', url);
|
||||
$('#listForm').attr('method', 'post');
|
||||
$('#listForm').submit();
|
||||
};
|
||||
|
||||
|
||||
history.replaceState({}, null, location.pathname);
|
||||
/* ****************************
|
||||
* event 제어
|
||||
******************************/
|
||||
const fn_event = function () {
|
||||
|
||||
/*상세검색 버튼 상태 및 상세조회 대상 안보이게 처리*/
|
||||
$('.search-hide').hide()
|
||||
$('.search-detail').removeClass('opened')
|
||||
|
||||
$(document).ready('click', '.search-detail', function () {
|
||||
let searchHide = $(".search-hide");
|
||||
if (searchHide.is(":visible")) {
|
||||
searchHide.hide();
|
||||
$('.search-detail').removeClass('opened')
|
||||
} else {
|
||||
searchHide.show();
|
||||
$('.search-detail').addClass('opened')
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
/* 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'));
|
||||
});
|
||||
|
||||
/* 검색조건 > 카테고리 선택 이벤트 */
|
||||
$(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', 'input[name="expsrCd"]', function () {
|
||||
const sttus = $(this).val();
|
||||
const popup = $('#search-section');
|
||||
const checkbox = $(popup).find('input[name="expsrCd"]');
|
||||
const all = $(popup).find('input[name="expsrCd"][value=""]')
|
||||
|
||||
if (fn_is_empty(sttus)) {
|
||||
$(checkbox).prop('checked', false);
|
||||
|
||||
$(this).prop('checked', true);
|
||||
} else {
|
||||
$(all).prop('checked', false);
|
||||
|
||||
const length = $(popup).find('input[name="expsrCd"]:checked').length;
|
||||
|
||||
if (2 < length) {
|
||||
$(checkbox).prop('checked', false);
|
||||
|
||||
$(all).prop('checked', true);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
/* ********************************************************
|
||||
* 카테고리 체크버튼 이벤트
|
||||
******************************************************** */
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* ****************************
|
||||
* 카테고리 목록 조회 AJAX
|
||||
******************************/
|
||||
const fn_get_goods_ctgry = function (upperCtgryId, targetCtgryId) {
|
||||
$.ajax({
|
||||
type: 'post',
|
||||
url: '<c:url value="/admin/sys/ctgry/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) {
|
||||
|
||||
$('#' + targetCtgryId + ' option').filter(function() {
|
||||
return $(this).val() !== '';
|
||||
}).remove();
|
||||
|
||||
|
||||
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);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/* ****************************
|
||||
* 상품 목록 조회 AJAX
|
||||
******************************/
|
||||
const fn_get_goods_list = function (pageIndex) {
|
||||
const popup = $('#product-select-pop');
|
||||
|
||||
$(popup).find('#pageIndex').val(pageIndex);
|
||||
|
||||
$.ajax({
|
||||
type: 'post',
|
||||
url: '<c:url value="/crm/ordr/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);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/*********************************************************
|
||||
* 상품 선택 삭제 AJAX
|
||||
*********************************************************/
|
||||
const fn_delete_check = function () {
|
||||
|
||||
let url = '<c:url value="/mngr/goods/goodsmngr/deleteGoods"/>';
|
||||
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 (delInnbArr.length === 0) {
|
||||
alert("선택된 상품이 없습니다.");
|
||||
return false;
|
||||
}
|
||||
|
||||
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();
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* 관리자 주문 > 상품조회 > 검색조건 > 날짜 선택 이벤트 */
|
||||
$(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);
|
||||
});
|
||||
|
||||
/*********************************************************
|
||||
* 상품 복사 조회
|
||||
*********************************************************/
|
||||
const fn_move_goods_copy = (goodsInnb) => {
|
||||
window.open("/mngr/goods/goodsmngr/selectGoodsCopyForm?goodsInnb=" + goodsInnb, '_self');
|
||||
}
|
||||
|
||||
//카테고리 선택시 카테고리 아이디 저장(검색용)
|
||||
$(document).on('change', 'select[id^=ctgryDepth]', function () {
|
||||
const ctgryOptn = $(this).val()
|
||||
|
||||
if(!fn_is_empty(ctgryOptn)){
|
||||
$('#ctgryId').val(ctgryOptn)
|
||||
}else{
|
||||
//value가 ''인 카테고리 선택할경우
|
||||
let currentCtgryDepth = parseInt($(this).attr('id').replace('ctgryDepth', ''));
|
||||
|
||||
//1차 카테고리가 아닐 경우 이전 카테고리 번호 가져오기
|
||||
if(currentCtgryDepth !== 1){
|
||||
$('#ctgryId').val($('#ctgryDepth' + (currentCtgryDepth - 1)).val())
|
||||
}else{
|
||||
//1차 카테고리 일경우 카테고리 번호 비우기
|
||||
$('#ctgryId').val('')
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
})
|
||||
|
||||
//초기화버튼
|
||||
$(document).on('click', '#resetBtn', function () {
|
||||
|
||||
$('.ctgry').val('').niceSelect('update')
|
||||
$('#srchType').val('GOODS_NM').niceSelect('update')
|
||||
$('input[name="reprsntCtgryAtY"]').prop('checked', false)
|
||||
$('input[name="ctgryNoRegAtY"]').prop('checked', false)
|
||||
$('#brandCd').val('').niceSelect('update')
|
||||
$('select[name="dateDv"]').val('regist').niceSelect('update')
|
||||
$('#allDays').click()
|
||||
if(!$('#goodsDftinfo-all').prop('checked')){
|
||||
$('#goodsDftinfo-all').click()
|
||||
}
|
||||
$('#expsrDvCd').click()
|
||||
$('select[name="pricDv"]').val('cnsmrpric').niceSelect('update')
|
||||
$('#goodsDftinfoInvntryPolicy0').click()
|
||||
$('select[name="dlvyGroupInnb"]').val('').niceSelect('update')
|
||||
|
||||
$('input[name="ctgryId"]').val('')
|
||||
$('input[name="startPric"]').val('')
|
||||
$('input[name="endPric"]').val('')
|
||||
$('#srchStr').val('')
|
||||
|
||||
fn_select_list(1);
|
||||
})
|
||||
</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>
|
||||
</div>
|
||||
</div>
|
||||
<form id='listForm' name="listForm" method="post"
|
||||
action="<c:url value="/mngr/goods/goodsmngr/selectGoodsListForm"/>">
|
||||
<input type="hidden" id="pageIndex" name="pageIndex" value="${ resultMap.BOGoodsVO.pageIndex }"/>
|
||||
<input type="hidden" id="goodsInnb" name="goodsInnb"/>
|
||||
<input type="hidden" id="goodsKndCd" name="goodsKndCd" value="01"/>
|
||||
<input type="hidden" id="ctgryId" name="ctgryId" />
|
||||
<%--
|
||||
<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: 12%;">
|
||||
<col>
|
||||
</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="input-container gap-4">
|
||||
<div class="select-box">
|
||||
<select id="ctgryDepth1" class="ctgry" title="1차 카테고리">
|
||||
<option value="">1차 카테고리</option>
|
||||
<c:forEach items="${resultMap.goodsCategoryList}" var="goodsCategory"
|
||||
varStatus="status">
|
||||
<option value="${goodsCategory.ctgryId}">${goodsCategory.ctgryNm}</option>
|
||||
</c:forEach>
|
||||
</select>
|
||||
</div>
|
||||
<div class="select-box">
|
||||
<select id="ctgryDepth2" class="ctgry" title="2차 카테고리">
|
||||
<option value="">2차 카테고리</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="select-box">
|
||||
<select id="ctgryDepth3" class="ctgry" title="3차 카테고리">
|
||||
<option value="">3차 카테고리</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="select-box">
|
||||
<select id="ctgryDepth4" class="ctgry" title="4차 카테고리">
|
||||
<option value="">4차 카테고리</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="b-checkbox-container">
|
||||
<label class="b-checkbox checkbox">
|
||||
<input type="checkbox" value="Y" name="reprsntCtgryAtY">
|
||||
<span class="check"></span>
|
||||
<span class="control-label">대표 카테고리 기준</span>
|
||||
</label>
|
||||
<label class="b-checkbox checkbox">
|
||||
<input type="checkbox" value="Y" name="ctgryNoRegAtY">
|
||||
<span class="check"></span>
|
||||
<span class="control-label">카테고리 미등록</span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="search-hide">
|
||||
<th>브랜드</th>
|
||||
<td colspan="3">
|
||||
<div class="td-inner">
|
||||
<div class="select-box">
|
||||
<select title="브랜드" id="brandCd" name="brandCd">
|
||||
<option value="">전체</option>
|
||||
<c:forEach var="brandList" items="${ resultMap.brandList }" varStatus="">
|
||||
<option value="${ brandList.cd }">${ brandList.cdNm }</option>
|
||||
</c:forEach>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="search-hide">
|
||||
<th>날짜</th>
|
||||
<td colspan="3">
|
||||
<div class="td-inner">
|
||||
<div class="select-box">
|
||||
<select name="dateDv" title="날짜 구분">
|
||||
<option value="regist">등록일</option>
|
||||
<option value="updt">수정일</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="input-container">
|
||||
<input type="text" name="startDate" id="startDate" class="datepicker"
|
||||
title="시작 날짜 선택" autocomplete="off">
|
||||
<span class="tilde">~</span>
|
||||
<input type="text" name="endDate" id="endDate" class="datepicker"
|
||||
title="종료 날짜 선택" autocomplete="off" pattern="yyyy-MM-dd">
|
||||
<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 id="goodsDftinfo-all" type="checkbox" name="goodsDftinfoArr" value="" checked
|
||||
onclick="fn_change_event('goodsDftinfo', 'all');">
|
||||
<span class="check"></span>
|
||||
<span class="control-label">전체</span>
|
||||
</label>
|
||||
<c:forEach items="${resultMap.goodsDftinfoSttusList}" var="goodsDftinfoSttus"
|
||||
varStatus="status">
|
||||
<label class="b-checkbox checkbox">
|
||||
<input type="checkbox" name="goodsDftinfoArr"
|
||||
value="${goodsDftinfoSttus.cd}"
|
||||
onclick="fn_change_event('goodsDftinfo', 'other');" checked>
|
||||
<span class="check"></span>
|
||||
<span class="control-label">${goodsDftinfoSttus.cdNm}</span>
|
||||
</label>
|
||||
</c:forEach>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
<th>노출여부</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<div class="custom-radio-container">
|
||||
<div class="custom-radio">
|
||||
<input type="radio" id="expsrDvCd"
|
||||
name="expsrDvCd" value="" checked>
|
||||
<label for="expsrDvCd">전체</label>
|
||||
</div>
|
||||
<c:forEach items="${resultMap.expsrCdList}"
|
||||
var="expsrCdList" varStatus="status">
|
||||
<div class="custom-radio">
|
||||
<input type="radio"
|
||||
id="expsrCdList${status.count}"
|
||||
name="expsrDvCd"
|
||||
value="${expsrCdList.cd}">
|
||||
<label for="expsrCdList${status.count}">${expsrCdList.cdNm}</label>
|
||||
</div>
|
||||
</c:forEach>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="search-hide">
|
||||
<th>가격</th>
|
||||
<td colspan="3">
|
||||
<div class="td-inner">
|
||||
<div class="select-box">
|
||||
<select name="pricDv" title="가격">
|
||||
<option value="cnsmrpric">정가</option>
|
||||
<option value="slepric">판매가</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="input-container">
|
||||
<input type="text" class="input-text sm right" name="startPric"
|
||||
title="startPric">
|
||||
<span class="input-unit-text">원</span>
|
||||
<span class="tilde">~</span>
|
||||
<input type="text" class="input-text sm right" name="endPric"
|
||||
title="endPric">
|
||||
<span class="input-unit-text">원</span>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="search-hide">
|
||||
<th>재고에 따른 판매</th>
|
||||
<td colspan="3">
|
||||
<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>
|
||||
</tr>
|
||||
<tr class="search-hide">
|
||||
<th>배송그룹</th>
|
||||
<td colspan="3">
|
||||
<div class="td-inner">
|
||||
<div class="select-box">
|
||||
<select title="해당 셀렉트에 대한 설명" name="dlvyGroupInnb">
|
||||
<option value="">선택</option>
|
||||
<c:if test="${not empty resultMap.dlvyGrpList}">
|
||||
<c:forEach var="dlvyGrpInfo" items="${resultMap.dlvyGrpList}">
|
||||
<option value="${dlvyGrpInfo.dlvyGroupDvCd}">${dlvyGrpInfo.dlvyGroupNm}</option>
|
||||
</c:forEach>
|
||||
</c:if>
|
||||
</select>
|
||||
</div>
|
||||
</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);"><spring:message code="button.search"/> </button>
|
||||
</div>
|
||||
<div class="right">
|
||||
<button class="btn outline search-detail">상세검색</button>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<div id="pageDiv">
|
||||
</div>
|
||||
</form>
|
||||
<button class="scroll-to-top"><span class="visually-hidden">위로가기</span></button>
|
||||
</div>
|
||||
</div>
|
||||
<div id="modalDiv">
|
||||
|
||||
</div>
|
||||
</main>
|
||||
|
||||
<!-- 재고 툴팁 클릭 컨텐츠 -->
|
||||
<!-- 버튼의 data-info값과 id를 통일시켜야함 -->
|
||||
<div id="info01" class="mini-info-content" style="width: 280px;">
|
||||
<div class="mini-info-content__header">
|
||||
<h5 class="mini-info-content__title">재고 판매</h5>
|
||||
<button class="mini-info-content__close"><span class="visually-hidden">닫기</span></button>
|
||||
</div>
|
||||
<div class="mini-info-content__content">
|
||||
<p>재고(옵션 기준)에 따른 상품 판매 설정에 따라 아래와 같이 2가지로 표기됩니다.</p>
|
||||
<p>재고가 있으면 판매 : 재고</p>
|
||||
<p>재고와 상관없이 주문 가능 : 무제한</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
||||
@@ -0,0 +1,429 @@
|
||||
<%@ 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 : GoodsPurchaseLimttPopupC.jsp
|
||||
Description : 상품 구매대상자 제한 popup
|
||||
Modification Information
|
||||
|
||||
수정일 수정자 수정내용
|
||||
------- -------- ---------------------------
|
||||
since : 2024-06-03
|
||||
--%>
|
||||
|
||||
<script>
|
||||
|
||||
$(document).ready(function() {
|
||||
|
||||
const allGradesRows = document.querySelectorAll("#all-grades-row, #all-grades-purchase-row");
|
||||
const individualGradeRows = document.querySelectorAll(".individual-grade-row");
|
||||
const gradSetAllRadio = document.getElementById("gradSetAll");
|
||||
const gradSetDistinctRadio = document.getElementById("gradSet");
|
||||
|
||||
// Function to toggle visibility
|
||||
function toggleRows() {
|
||||
if (gradSetAllRadio.checked) {
|
||||
allGradesRows.forEach(row => row.style.display = "");
|
||||
individualGradeRows.forEach(row => row.style.display = "none");
|
||||
} else {
|
||||
allGradesRows.forEach(row => row.style.display = "none");
|
||||
individualGradeRows.forEach(row => row.style.display = "");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// Event listeners
|
||||
gradSetAllRadio.addEventListener("change", toggleRows);
|
||||
gradSetDistinctRadio.addEventListener("change", toggleRows);
|
||||
|
||||
// Initial toggle
|
||||
toggleRows();
|
||||
|
||||
|
||||
});
|
||||
|
||||
|
||||
</script>
|
||||
<div id="purchase-limit" class="modal" style="max-width: 760px;">
|
||||
<div class="modal-header">
|
||||
<h4>구매 대상자 제한 설정</h4>
|
||||
</div>
|
||||
<div class="modal-content">
|
||||
<div class="table-wrapper">
|
||||
<table class="table">
|
||||
<caption>해당 테이블에 대한 설명</caption>
|
||||
<colgroup>
|
||||
<col style="width: 10%;">
|
||||
<col style="width: 15%;">
|
||||
<col>
|
||||
</colgroup>
|
||||
<tbody>
|
||||
<form>
|
||||
<tr class="goods-trget-dv-list">
|
||||
<th rowspan="2" colspan="2" value="" name="">비회원</th>
|
||||
<td>
|
||||
<div class="td-inner price-limit-container">
|
||||
<div class="b-checkbox-container my-5">
|
||||
<label class="b-checkbox checkbox">
|
||||
<input type="checkbox" id="pricRplcWordsUseAt_none" name="pricRplcWordsUseAt_none" value="">
|
||||
<span class="check"></span>
|
||||
<span class="control-label">가격제한</span>
|
||||
</label>
|
||||
</div>
|
||||
<div class="table-wrapper">
|
||||
<table class="table">
|
||||
<caption>해당 테이블에 대한 설명</caption>
|
||||
<colgroup>
|
||||
<col style="width: 23%;">
|
||||
<col>
|
||||
</colgroup>
|
||||
<tbody>
|
||||
<tr>
|
||||
<th>가격 대체 문구</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<input class="input-text price-limit-input" type="text" title="해당 인풋에 대한 설명" id="pricRplcWords_none" name="pricRplcWords_none" disabled>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>링크 연결</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<input class="input-text" type="text" title="해당 인풋에 대한 설명" id="pricRplcLink_none" name="pricRplcLink_none" disabled>
|
||||
<div class="select-box">
|
||||
<select class="short" title="해당 셀렉트에 대한 설명" name="pricRplcLinkDvCd_none" id="pricRplcLinkDvCd_none" disabled>
|
||||
<c:forEach items="${resultMap.PrlcLinkDvList}" var="PrlcLinkDvList">
|
||||
<option value="${PrlcLinkDvList.cd}">${PrlcLinkDvList.cdNm}</option>
|
||||
</c:forEach>
|
||||
</select>
|
||||
</div>
|
||||
<div class="select-box">
|
||||
<select class="short" title="해당 셀렉트에 대한 설명" id="pricRplcLinkBrwsrDvCd_none" name="pricRplcLinkBrwsrDvCd_none" disabled>
|
||||
<c:forEach items="${resultMap.PrlcLinkBrwsrDvList}" var="PrlcLinkBrwsrDvList">
|
||||
<option value="${PrlcLinkBrwsrDvList.cd}">${PrlcLinkBrwsrDvList.cdNm}</option>
|
||||
</c:forEach>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<div class="td-inner purchase-limit-container">
|
||||
<div class="b-checkbox-container my-5">
|
||||
<label class="b-checkbox checkbox">
|
||||
<input type="checkbox" id="buttonRplcWordsUseAt_none" name="buttonRplcWordsUseAt_none" value="">
|
||||
<span class="check"></span>
|
||||
<span class="control-label">구매제한</span>
|
||||
</label>
|
||||
</div>
|
||||
<div class="table-wrapper">
|
||||
<table class="table">
|
||||
<caption>해당 테이블에 대한 설명</caption>
|
||||
<colgroup>
|
||||
<col style="width: 23%;">
|
||||
<col>
|
||||
</colgroup>
|
||||
<tbody>
|
||||
<tr>
|
||||
<th>버튼 대체 문구</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<input class="input-text" type="text" id="buttonRplcWords_none" name="buttonRplcWords_none" title="해당 인풋에 대한 설명" disabled>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>링크 연결</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<input class="input-text" type="text" title="해당 인풋에 대한 설명" id="buttonRplcLink_none" name="buttonRplcLink_none" disabled>
|
||||
<div class="select-box">
|
||||
<select class="short" title="해당 셀렉트에 대한 설명" id="buttonRplcLinkDvCd_none" name="buttonRplcLinkDvCd_none" disabled>
|
||||
<c:forEach items="${resultMap.PrlcLinkDvList}" var="PrlcLinkDvList">
|
||||
<option value="${PrlcLinkDvList.cd}">${PrlcLinkDvList.cdNm}</option>
|
||||
</c:forEach>
|
||||
</select>
|
||||
</div>
|
||||
<div class="select-box">
|
||||
<select class="short" title="해당 셀렉트에 대한 설명" id="buttonRplcLinkBrwsrDvCd_none" name="buttonRplcLinkBrwsrDvCd_none" disabled>
|
||||
<c:forEach items="${resultMap.PrlcLinkBrwsrDvList}" var="PrlcLinkBrwsrDvList">
|
||||
<option value="${PrlcLinkBrwsrDvList.cd}">${PrlcLinkBrwsrDvList.cdNm}</option>
|
||||
</c:forEach>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<th class="border-right" rowspan="1" colspan="2">회원 등급 별 제한</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<div class="custom-radio-container">
|
||||
<div class="custom-radio">
|
||||
<input type="radio" id="gradSetAll" name="gradSet" value="all" checked="">
|
||||
<label for="gradSetAll">모든 등급 일괄 설정</label>
|
||||
</div>
|
||||
<div class="custom-radio">
|
||||
<input type="radio" id="gradSet" name="gradSet" value="distinct">
|
||||
<label for="gradSet">등급 별 설정</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="all-grades-row">
|
||||
<th rowspan="2" colspan="2" value="">모든 등급</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<div class="b-checkbox-container my-5">
|
||||
<label class="b-checkbox checkbox">
|
||||
<input type="checkbox" id="pricRplcWordsUseAt_all" name="pricRplcWordsUseAt_all" value="">
|
||||
<span class="check"></span>
|
||||
<span class="control-label">가격제한</span>
|
||||
</label>
|
||||
</div>
|
||||
<div class="table-wrapper">
|
||||
<table class="table">
|
||||
<caption>해당 테이블에 대한 설명</caption>
|
||||
<colgroup>
|
||||
<col style="width: 23%;">
|
||||
<col>
|
||||
</colgroup>
|
||||
<tbody>
|
||||
<tr>
|
||||
<th>가격 대체 문구</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<input class="input-text" type="text" title="해당 인풋에 대한 설명" id="pricRplcWords_all" name="pricRplcWords_all" disabled>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>링크 연결</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<input class="input-text" type="text" title="해당 인풋에 대한 설명" id="pricRplcLink_all" name="pricRplcLink_all" disabled>
|
||||
<div class="select-box">
|
||||
<select class="short" title="해당 셀렉트에 대한 설명" id="pricRplcLinkDvCd_all" name="pricRplcLinkDvCd_all" disabled>
|
||||
<c:forEach items="${resultMap.PrlcLinkDvList}" var="PrlcLinkDvList">
|
||||
<option value="${PrlcLinkDvList.cd}">${PrlcLinkDvList.cdNm}</option>
|
||||
</c:forEach>
|
||||
</select>
|
||||
</div>
|
||||
<div class="select-box">
|
||||
<select class="short" title="해당 셀렉트에 대한 설명" id="pricRplcLinkBrwsrDvCd_all" name="pricRplcLinkBrwsrDvCd_all" disabled>
|
||||
<c:forEach items="${resultMap.PrlcLinkBrwsrDvList}" var="PrlcLinkBrwsrDvList">
|
||||
<option value="${PrlcLinkBrwsrDvList.cd}">${PrlcLinkBrwsrDvList.cdNm}</option>
|
||||
</c:forEach>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="all-grades-purchase-row">
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<div class="b-checkbox-container my-5">
|
||||
<label class="b-checkbox checkbox">
|
||||
<input type="checkbox" id="buttonRplcWordsUseAt_all" name="buttonRplcWordsUseAt_all" value="">
|
||||
<span class="check"></span>
|
||||
<span class="control-label">구매제한</span>
|
||||
</label>
|
||||
</div>
|
||||
<div class="table-wrapper">
|
||||
<table class="table">
|
||||
<caption>해당 테이블에 대한 설명</caption>
|
||||
<colgroup>
|
||||
<col style="width: 23%;">
|
||||
<col>
|
||||
</colgroup>
|
||||
<tbody>
|
||||
<tr>
|
||||
<th>버튼 대체 문구</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<input class="input-text" type="text" id="buttonRplcWords_all" name="buttonRplcWords_all" title="해당 인풋에 대한 설명" disabled>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>링크 연결</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<input class="input-text" type="text" title="해당 인풋에 대한 설명" id="buttonRplcLink_all" name="buttonRplcLink_all" disabled>
|
||||
<div class="select-box">
|
||||
<select class="short" title="해당 셀렉트에 대한 설명" id="buttonRplcLinkDvCd_all" name="buttonRplcLinkDvCd_all" disabled>
|
||||
<c:forEach items="${resultMap.PrlcLinkDvList}" var="PrlcLinkDvList">
|
||||
<option value="${PrlcLinkDvList.cd}">${PrlcLinkDvList.cdNm}</option>
|
||||
</c:forEach>
|
||||
</select>
|
||||
</div>
|
||||
<div class="select-box">
|
||||
<select class="short" title="해당 셀렉트에 대한 설명" id="buttonRplcLinkBrwsrDvCd_all" name="buttonRplcLinkBrwsrDvCd_all" disabled>
|
||||
<c:forEach items="${resultMap.PrlcLinkBrwsrDvList}" var="PrlcLinkBrwsrDvList">
|
||||
<option value="${PrlcLinkBrwsrDvList.cd}">${PrlcLinkBrwsrDvList.cdNm}</option>
|
||||
</c:forEach>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<c:if test="${not empty resultMap.gradList}">
|
||||
<c:forEach items="${resultMap.gradList}" var="member" varStatus="status">
|
||||
<tr class="individual-grade-row">
|
||||
<input type="hidden" id="mbrGradInnb" name="mbrGradInnb" value="${member.mbrGradInnb}">
|
||||
<th rowspan="2" colspan="2" >${member.mbrGradNm}</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<div class="b-checkbox-container my-5">
|
||||
<label class="b-checkbox checkbox">
|
||||
<input class= "gradSetAllChk_pric" type="checkbox" id="pricRplcWordsUseAt_${status.index}" name="pricRplcWordsUseAt_${status.index}" value="">
|
||||
<span class="check"></span>
|
||||
<span class="control-label">가격제한</span>
|
||||
</label>
|
||||
</div>
|
||||
<div class="table-wrapper">
|
||||
<table class="table">
|
||||
<caption>해당 테이블에 대한 설명</caption>
|
||||
<colgroup>
|
||||
<col style="width: 23%;">
|
||||
<col>
|
||||
</colgroup>
|
||||
<tbody>
|
||||
<tr>
|
||||
<th>가격 대체 문구</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<input class="input-text price-limit-input gradSetAllChk_pric" type="text" title="해당 인풋에 대한 설명" id="pricRplcWords_${status.index}" name="pricRplcWords_${status.index}" disabled>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>링크 연결</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<input class="input-text gradSetAllChk_pric" type="text" title="해당 인풋에 대한 설명" id="pricRplcLink_${status.index}" name="pricRplcLink_${status.index}" disabled>
|
||||
<div class="select-box">
|
||||
<select class="short gradSetAllChk_pric" title="해당 셀렉트에 대한 설명" id="pricRplcLinkDvCd_${status.index}" name="pricRplcLinkDvCd_${status.index}" disabled>
|
||||
<c:forEach items="${resultMap.PrlcLinkDvList}" var="PrlcLinkDvList">
|
||||
<option value="${PrlcLinkDvList.cd}">${PrlcLinkDvList.cdNm}</option>
|
||||
</c:forEach>
|
||||
</select>
|
||||
</div>
|
||||
<div class="select-box">
|
||||
<select class="short gradSetAllChk_pric" title="해당 셀렉트에 대한 설명" id="pricRplcLinkBrwsrDvCd_${status.index}" name="pricRplcLinkBrwsrDvCd_${status.index}" disabled>
|
||||
<c:forEach items="${resultMap.PrlcLinkBrwsrDvList}" var="PrlcLinkBrwsrDvList">
|
||||
<option value="${PrlcLinkBrwsrDvList.cd}">${PrlcLinkBrwsrDvList.cdNm}</option>
|
||||
</c:forEach>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="individual-grade-row">
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<div class="b-checkbox-container my-5">
|
||||
<label class="b-checkbox checkbox">
|
||||
<input class = "gradSetAllChk_btn" type="checkbox" id="buttonRplcWordsUseAt_${status.index}" name="buttonRplcWordsUseAt_${status.index}" value="">
|
||||
<span class="check"></span>
|
||||
<span class="control-label">구매제한</span>
|
||||
</label>
|
||||
</div>
|
||||
<div class="table-wrapper">
|
||||
<table class="table">
|
||||
<caption>해당 테이블에 대한 설명</caption>
|
||||
<colgroup>
|
||||
<col style="width: 23%;">
|
||||
<col>
|
||||
</colgroup>
|
||||
<tbody>
|
||||
<tr>
|
||||
<th>버튼 대체 문구</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<input class="input-text gradSetAllChk_btn" type="text" id="buttonRplcWords_${status.index}" name="buttonRplcWords_${status.index}" title="해당 인풋에 대한 설명" disabled>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>링크 연결</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<input class="input-text gradSetAllChk_btn" type="text" title="해당 인풋에 대한 설명" id="buttonRplcLink_${status.index}" name="buttonRplcLink_${status.index}" disabled>
|
||||
<div class="select-box">
|
||||
<select class="short gradSetAllChk_btn" title="해당 셀렉트에 대한 설명" id="buttonRplcLinkDvCd_${status.index}" name="buttonRplcLinkDvCd_${status.index}" disabled>
|
||||
<c:forEach items="${resultMap.PrlcLinkDvList}" var="PrlcLinkDvList">
|
||||
<option value="${PrlcLinkDvList.cd}">${PrlcLinkDvList.cdNm}</option>
|
||||
</c:forEach>
|
||||
</select>
|
||||
</div>
|
||||
<div class="select-box">
|
||||
<select class="short gradSetAllChk_btn" title="해당 셀렉트에 대한 설명" id="buttonRplcLinkBrwsrDvCd_${status.index}" name="buttonRplcLinkBrwsrDvCd_${status.index}" disabled>
|
||||
<c:forEach items="${resultMap.PrlcLinkBrwsrDvList}" var="PrlcLinkBrwsrDvList">
|
||||
<option value="${PrlcLinkBrwsrDvList.cd}">${PrlcLinkBrwsrDvList.cdNm}</option>
|
||||
</c:forEach>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</c:forEach>
|
||||
</c:if>
|
||||
|
||||
</form>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<a href="#" rel="modal:close" class="btn outline">취소</a>
|
||||
<button class="btn primary" onclick="fn_save_purchase_limmit(); return false;">확인</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script src="/admin/js/script.js" defer=""></script>
|
||||
@@ -0,0 +1,809 @@
|
||||
<%@ 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 : GoodsPurchaseLimttPopupR.jsp
|
||||
Description : 상품 구매대상자 제한 popup
|
||||
Modification Information
|
||||
|
||||
수정일 수정자 수정내용
|
||||
------- -------- ---------------------------
|
||||
since : 2024-06-03
|
||||
--%>
|
||||
|
||||
<script>
|
||||
|
||||
$(document).ready(function() {
|
||||
|
||||
const allGradesRows = document.querySelectorAll("#all-grades-row, #all-grades-purchase-row");
|
||||
const individualGradeRows = document.querySelectorAll(".individual-grade-row");
|
||||
const gradSetAllRadio = document.getElementById("gradSetAll");
|
||||
const gradSetDistinctRadio = document.getElementById("gradSet");
|
||||
|
||||
// Function to toggle visibility
|
||||
function toggleRows() {
|
||||
if (gradSetAllRadio.checked) {
|
||||
allGradesRows.forEach(row => row.style.display = "");
|
||||
individualGradeRows.forEach(row => row.style.display = "none");
|
||||
} else {
|
||||
allGradesRows.forEach(row => row.style.display = "none");
|
||||
individualGradeRows.forEach(row => row.style.display = "");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// Event listeners
|
||||
gradSetAllRadio.addEventListener("change", toggleRows);
|
||||
gradSetDistinctRadio.addEventListener("change", toggleRows);
|
||||
|
||||
// Initial toggle
|
||||
toggleRows();
|
||||
|
||||
|
||||
});
|
||||
|
||||
|
||||
</script>
|
||||
<div id="purchase-limit" class="modal" style="max-width: 760px;">
|
||||
<div class="modal-header">
|
||||
<h4>구매 대상자 제한 설정</h4>
|
||||
</div>
|
||||
<div class="modal-content">
|
||||
<div class="table-wrapper">
|
||||
<table class="table">
|
||||
<caption>해당 테이블에 대한 설명</caption>
|
||||
<colgroup>
|
||||
<col style="width: 10%;">
|
||||
<col style="width: 15%;">
|
||||
<col>
|
||||
</colgroup>
|
||||
<tbody>
|
||||
<form>
|
||||
<c:choose>
|
||||
<c:when test="${not empty resultMap.trgterLmttList.none}">
|
||||
<input type="hidden" name="goodsTrgterLmttInnb_none" id="goodsTrgterLmttInnb_none" value="<c:out value="${resultMap.trgterLmttList.none.goodsTrgterLmttInnb}" default="0"/> ">
|
||||
<tr class="goods-trget-dv-list">
|
||||
<th rowspan="2" colspan="2">비회원</th>
|
||||
<td>
|
||||
<div class="td-inner price-limit-container">
|
||||
<div class="b-checkbox-container my-5">
|
||||
<label class="b-checkbox checkbox">
|
||||
<input type="checkbox" id="pricRplcWordsUseAt_none" name="pricRplcWordsUseAt_none" <c:if test="${resultMap.trgterLmttList.none.pricRplcWordsUseAt eq 'Y'}"> checked </c:if> >
|
||||
<span class="check"></span>
|
||||
<span class="control-label">가격제한</span>
|
||||
</label>
|
||||
</div>
|
||||
<div class="table-wrapper">
|
||||
<table class="table">
|
||||
<caption>해당 테이블에 대한 설명</caption>
|
||||
<colgroup>
|
||||
<col style="width: 23%;">
|
||||
<col>
|
||||
</colgroup>
|
||||
<tbody>
|
||||
<tr>
|
||||
<th>가격 대체 문구</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<input class="input-text price-limit-input" type="text" title="해당 인풋에 대한 설명" id="pricRplcWords_none" name="pricRplcWords_none"
|
||||
value="${resultMap.trgterLmttList.none.pricRplcWords}"
|
||||
<c:if test="${resultMap.trgterLmttList.none.pricRplcWordsUseAt ne 'Y'}"> disabled </c:if>
|
||||
>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>링크 연결</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<input class="input-text" type="text" title="해당 인풋에 대한 설명" id="pricRplcLink_none" name="pricRplcLink_none" value="${resultMap.trgterLmttList.none.pricRplcLink}" <c:if test="${resultMap.trgterLmttList.none.pricRplcWordsUseAt ne 'Y'}"> disabled </c:if> >
|
||||
<div class="select-box">
|
||||
<select class="short" title="해당 셀렉트에 대한 설명" name="pricRplcLinkDvCd_none" id="pricRplcLinkDvCd_none" <c:if test="${resultMap.trgterLmttList.none.pricRplcWordsUseAt ne 'Y'}"> disabled </c:if> >
|
||||
<c:forEach items="${resultMap.PrlcLinkDvList}" var="PrlcLinkDvList">
|
||||
<option value="${PrlcLinkDvList.cd}" <c:if test="${resultMap.trgterLmttList.none.pricRplcLinkDvCd eq PrlcLinkDvList.cd }"> selected </c:if> >${PrlcLinkDvList.cdNm}</option>
|
||||
</c:forEach>
|
||||
</select>
|
||||
</div>
|
||||
<div class="select-box">
|
||||
<select class="short" title="해당 셀렉트에 대한 설명" id="pricRplcLinkBrwsrDvCd_none" name="pricRplcLinkBrwsrDvCd_none" <c:if test="${resultMap.trgterLmttList.none.pricRplcWordsUseAt ne 'Y'}"> disabled </c:if> >
|
||||
<c:forEach items="${resultMap.PrlcLinkBrwsrDvList}" var="PrlcLinkBrwsrDvList">
|
||||
<option value="${PrlcLinkBrwsrDvList.cd}" <c:if test="${resultMap.trgterLmttList.none.pricRplcLinkBrwsrDvCd eq PrlcLinkBrwsrDvList.cd }"> selected </c:if> >${PrlcLinkBrwsrDvList.cdNm}</option>
|
||||
</c:forEach>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<div class="td-inner purchase-limit-container">
|
||||
<div class="b-checkbox-container my-5">
|
||||
<label class="b-checkbox checkbox">
|
||||
<input type="checkbox" id="buttonRplcWordsUseAt_none" name="buttonRplcWordsUseAt_none" <c:if test="${resultMap.trgterLmttList.none.buttonRplcWordsUseAt eq 'Y'}"> checked </c:if> >
|
||||
<span class="check"></span>
|
||||
<span class="control-label">구매제한</span>
|
||||
</label>
|
||||
</div>
|
||||
<div class="table-wrapper">
|
||||
<table class="table">
|
||||
<caption>해당 테이블에 대한 설명</caption>
|
||||
<colgroup>
|
||||
<col style="width: 23%;">
|
||||
<col>
|
||||
</colgroup>
|
||||
<tbody>
|
||||
<tr>
|
||||
<th>버튼 대체 문구</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<input class="input-text" type="text" id="buttonRplcWords_none" name="buttonRplcWords_none" title="해당 인풋에 대한 설명"
|
||||
value="${resultMap.trgterLmttList.none.buttonRplcWords}"
|
||||
<c:if test="${resultMap.trgterLmttList.none.buttonRplcWordsUseAt ne 'Y'}"> disabled </c:if>
|
||||
>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>링크 연결</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<input class="input-text" type="text" title="해당 인풋에 대한 설명" id="buttonRplcLink_none" name="buttonRplcLink_none" value="${resultMap.trgterLmttList.none.buttonRplcLink}" <c:if test="${resultMap.trgterLmttList.none.buttonRplcWordsUseAt ne 'Y'}"> disabled </c:if> >
|
||||
<div class="select-box">
|
||||
<select class="short" title="해당 셀렉트에 대한 설명" id="buttonRplcLinkDvCd_none" name="buttonRplcLinkDvCd_none" <c:if test="${resultMap.trgterLmttList.none.buttonRplcWordsUseAt ne 'Y'}"> disabled </c:if> >
|
||||
<c:forEach items="${resultMap.PrlcLinkDvList}" var="PrlcLinkDvList">
|
||||
<option value="${PrlcLinkDvList.cd}" <c:if test="${resultMap.trgterLmttList.none.buttonRplcLinkDvCd eq PrlcLinkDvList.cd }"> selected </c:if> >${PrlcLinkDvList.cdNm}</option>
|
||||
</c:forEach>
|
||||
</select>
|
||||
</div>
|
||||
<div class="select-box">
|
||||
<select class="short" title="해당 셀렉트에 대한 설명" id="buttonRplcLinkBrwsrDvCd_none" name="buttonRplcLinkBrwsrDvCd_none" <c:if test="${resultMap.trgterLmttList.none.buttonRplcWordsUseAt ne 'Y'}"> disabled </c:if> >
|
||||
<c:forEach items="${resultMap.PrlcLinkBrwsrDvList}" var="PrlcLinkBrwsrDvList">
|
||||
<option value="${PrlcLinkBrwsrDvList.cd}" <c:if test="${resultMap.trgterLmttList.none.buttonRplcLinkBrwsrDvCd eq PrlcLinkBrwsrDvList.cd }"> selected </c:if> >${PrlcLinkBrwsrDvList.cdNm}</option>
|
||||
</c:forEach>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<input type="hidden" name="goodsTrgterLmttInnb_none" id="goodsTrgterLmttInnb_none" value="" >
|
||||
<tr class="goods-trget-dv-list">
|
||||
<th rowspan="2" colspan="2">비회원</th>
|
||||
<td>
|
||||
<div class="td-inner price-limit-container">
|
||||
<div class="b-checkbox-container my-5">
|
||||
<label class="b-checkbox checkbox">
|
||||
<input type="checkbox" id="pricRplcWordsUseAt_none" name="pricRplcWordsUseAt_none" >
|
||||
<span class="check"></span>
|
||||
<span class="control-label">가격제한</span>
|
||||
</label>
|
||||
</div>
|
||||
<div class="table-wrapper">
|
||||
<table class="table">
|
||||
<caption>해당 테이블에 대한 설명</caption>
|
||||
<colgroup>
|
||||
<col style="width: 23%;">
|
||||
<col>
|
||||
</colgroup>
|
||||
<tbody>
|
||||
<tr>
|
||||
<th>가격 대체 문구</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<input class="input-text price-limit-input" type="text" title="해당 인풋에 대한 설명" id="pricRplcWords_none" name="pricRplcWords_none"
|
||||
value="" disabled
|
||||
>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>링크 연결</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<input class="input-text" type="text" title="해당 인풋에 대한 설명" id="pricRplcLink_none" name="pricRplcLink_none" value="" disabled >
|
||||
<div class="select-box">
|
||||
<select class="short" title="해당 셀렉트에 대한 설명" name="pricRplcLinkDvCd_none" id="pricRplcLinkDvCd_none" disabled >
|
||||
<c:forEach items="${resultMap.PrlcLinkDvList}" var="PrlcLinkDvList">
|
||||
<option value="${PrlcLinkDvList.cd}" >${PrlcLinkDvList.cdNm}</option>
|
||||
</c:forEach>
|
||||
</select>
|
||||
</div>
|
||||
<div class="select-box">
|
||||
<select class="short" title="해당 셀렉트에 대한 설명" id="pricRplcLinkBrwsrDvCd_none" name="pricRplcLinkBrwsrDvCd_none" disabled >
|
||||
<c:forEach items="${resultMap.PrlcLinkBrwsrDvList}" var="PrlcLinkBrwsrDvList">
|
||||
<option value="${PrlcLinkBrwsrDvList.cd}" >${PrlcLinkBrwsrDvList.cdNm}</option>
|
||||
</c:forEach>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<div class="td-inner purchase-limit-container">
|
||||
<div class="b-checkbox-container my-5">
|
||||
<label class="b-checkbox checkbox">
|
||||
<input type="checkbox" id="buttonRplcWordsUseAt_none" name="buttonRplcWordsUseAt_none" >
|
||||
<span class="check"></span>
|
||||
<span class="control-label">구매제한</span>
|
||||
</label>
|
||||
</div>
|
||||
<div class="table-wrapper">
|
||||
<table class="table">
|
||||
<caption>해당 테이블에 대한 설명</caption>
|
||||
<colgroup>
|
||||
<col style="width: 23%;">
|
||||
<col>
|
||||
</colgroup>
|
||||
<tbody>
|
||||
<tr>
|
||||
<th>버튼 대체 문구</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<input class="input-text" type="text" id="buttonRplcWords_none" name="buttonRplcWords_none" title="해당 인풋에 대한 설명" value="" disabled>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>링크 연결</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<input class="input-text" type="text" title="해당 인풋에 대한 설명" id="buttonRplcLink_none" name="buttonRplcLink_none" value="" disabled >
|
||||
<div class="select-box">
|
||||
<select class="short" title="해당 셀렉트에 대한 설명" id="buttonRplcLinkDvCd_none" name="buttonRplcLinkDvCd_none" disabled >
|
||||
<c:forEach items="${resultMap.PrlcLinkDvList}" var="PrlcLinkDvList">
|
||||
<option value="${PrlcLinkDvList.cd}">${PrlcLinkDvList.cdNm}</option>
|
||||
</c:forEach>
|
||||
</select>
|
||||
</div>
|
||||
<div class="select-box">
|
||||
<select class="short" title="해당 셀렉트에 대한 설명" id="buttonRplcLinkBrwsrDvCd_none" name="buttonRplcLinkBrwsrDvCd_none" disabled >
|
||||
<c:forEach items="${resultMap.PrlcLinkBrwsrDvList}" var="PrlcLinkBrwsrDvList">
|
||||
<option value="${PrlcLinkBrwsrDvList.cd}" >${PrlcLinkBrwsrDvList.cdNm}</option>
|
||||
</c:forEach>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
<tr>
|
||||
<th class="border-right" rowspan="1" colspan="2">회원 등급 별 제한</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<div class="custom-radio-container">
|
||||
<div class="custom-radio">
|
||||
<input type="radio" id="gradSetAll" name="gradSet" value="all" <c:if test="${not empty resultMap.trgterLmttList.all or (empty resultMap.trgterLmttList.all and empty resultMap.trgterLmttList.member) }">checked</c:if> >
|
||||
<label for="gradSetAll">모든 등급 일괄 설정</label>
|
||||
</div>
|
||||
<div class="custom-radio">
|
||||
<input type="radio" id="gradSet" name="gradSet" value="distinct" <c:if test="${not empty resultMap.trgterLmttList.member}">checked</c:if> >
|
||||
<label for="gradSet">등급 별 설정</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<c:choose>
|
||||
<c:when test="${not empty resultMap.trgterLmttList.all}">
|
||||
<tr id="all-grades-row">
|
||||
<th rowspan="2" colspan="2">모든 등급</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<div class="b-checkbox-container my-5">
|
||||
<label class="b-checkbox checkbox">
|
||||
<input type="checkbox" id="pricRplcWordsUseAt_all" name="pricRplcWordsUseAt_all" <c:if test="${resultMap.trgterLmttList.all.pricRplcWordsUseAt eq 'Y' }"> checked </c:if> >
|
||||
<span class="check"></span>
|
||||
<span class="control-label">가격제한</span>
|
||||
</label>
|
||||
</div>
|
||||
<div class="table-wrapper">
|
||||
<table class="table">
|
||||
<caption>해당 테이블에 대한 설명</caption>
|
||||
<colgroup>
|
||||
<col style="width: 23%;">
|
||||
<col>
|
||||
</colgroup>
|
||||
<tbody>
|
||||
<tr>
|
||||
<th>가격 대체 문구</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<input class="input-text" type="text" title="해당 인풋에 대한 설명" id="pricRplcWords_all" name="pricRplcWords_all"
|
||||
value="${resultMap.trgterLmttList.all.pricRplcWords}"
|
||||
<c:if test="${resultMap.trgterLmttList.all.pricRplcWordsUseAt ne 'Y'}"> disabled </c:if>
|
||||
>
|
||||
<input type="hidden" id="goodsTrgterLmttInnb_all" value="<c:out value="${resultMap.trgterLmttList.all.goodsTrgterLmttInnb}" default="0"/> ">
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>링크 연결</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<input class="input-text" type="text" title="해당 인풋에 대한 설명" id="pricRplcLink_all" name="pricRplcLink_all"
|
||||
value="${resultMap.trgterLmttList.all.pricRplcLink}"
|
||||
<c:if test="${resultMap.trgterLmttList.all.pricRplcWordsUseAt ne 'Y'}"> disabled </c:if>
|
||||
>
|
||||
<div class="select-box">
|
||||
<select class="short" title="해당 셀렉트에 대한 설명" id="pricRplcLinkDvCd_all" name="pricRplcLinkDvCd_all"
|
||||
<c:if test="${resultMap.trgterLmttList.all.pricRplcWordsUseAt ne 'Y'}"> disabled </c:if>
|
||||
>
|
||||
<c:forEach items="${resultMap.PrlcLinkDvList}" var="PrlcLinkDvList">
|
||||
<option value="${PrlcLinkDvList.cd}" <c:if test="${resultMap.trgterLmttList.all.pricRplcLinkDvCd eq PrlcLinkDvList.cd }"> selected </c:if> >${PrlcLinkDvList.cdNm}</option>
|
||||
</c:forEach>
|
||||
</select>
|
||||
</div>
|
||||
<div class="select-box">
|
||||
<select class="short" title="해당 셀렉트에 대한 설명" id="pricRplcLinkBrwsrDvCd_all" name="pricRplcLinkBrwsrDvCd_all"
|
||||
<c:if test="${resultMap.trgterLmttList.all.pricRplcWordsUseAt ne 'Y'}"> disabled </c:if> >
|
||||
<c:forEach items="${resultMap.PrlcLinkBrwsrDvList}" var="PrlcLinkBrwsrDvList">
|
||||
<option value="${PrlcLinkBrwsrDvList.cd}" <c:if test="${resultMap.trgterLmttList.all.pricRplcLinkBrwsrDvCd eq PrlcLinkBrwsrDvList.cd }"> selected </c:if> >${PrlcLinkBrwsrDvList.cdNm}</option>
|
||||
</c:forEach>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="all-grades-purchase-row">
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<div class="b-checkbox-container my-5">
|
||||
<label class="b-checkbox checkbox">
|
||||
<input type="checkbox" id="buttonRplcWordsUseAt_all" name="buttonRplcWordsUseAt_all" <c:if test="${resultMap.trgterLmttList.all.buttonRplcWordsUseAt eq 'Y' }"> checked </c:if> >
|
||||
<span class="check"></span>
|
||||
<span class="control-label">구매제한</span>
|
||||
</label>
|
||||
</div>
|
||||
<div class="table-wrapper">
|
||||
<table class="table">
|
||||
<caption>해당 테이블에 대한 설명</caption>
|
||||
<colgroup>
|
||||
<col style="width: 23%;">
|
||||
<col>
|
||||
</colgroup>
|
||||
<tbody>
|
||||
<tr>
|
||||
<th>버튼 대체 문구</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<input class="input-text" type="text" id="buttonRplcWords_all" name="buttonRplcWords_all" title="해당 인풋에 대한 설명"
|
||||
value="${resultMap.trgterLmttList.all.buttonRplcWords}"
|
||||
<c:if test="${resultMap.trgterLmttList.all.buttonRplcWordsUseAt ne 'Y'}"> disabled </c:if>
|
||||
>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>링크 연결</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<input class="input-text" type="text" title="해당 인풋에 대한 설명" id="buttonRplcLink_all" name="buttonRplcLink_all"
|
||||
value="${resultMap.trgterLmttList.all.buttonRplcLink}" <c:if test="${resultMap.trgterLmttList.all.buttonRplcWordsUseAt ne 'Y'}"> disabled </c:if>
|
||||
>
|
||||
<div class="select-box">
|
||||
<select class="short" title="해당 셀렉트에 대한 설명" id="buttonRplcLinkDvCd_all" name="buttonRplcLinkDvCd_all" <c:if test="${resultMap.trgterLmttList.all.buttonRplcWordsUseAt ne 'Y'}"> disabled </c:if> >
|
||||
<c:forEach items="${resultMap.PrlcLinkDvList}" var="PrlcLinkDvList">
|
||||
<option value="${PrlcLinkDvList.cd}" <c:if test="${resultMap.trgterLmttList.all.buttonRplcLinkDvCd eq PrlcLinkDvList.cd }"> selected </c:if> >${PrlcLinkDvList.cdNm}</option>
|
||||
</c:forEach>
|
||||
</select>
|
||||
</div>
|
||||
<div class="select-box">
|
||||
<select class="short" title="해당 셀렉트에 대한 설명" id="buttonRplcLinkBrwsrDvCd_all" name="buttonRplcLinkBrwsrDvCd_all" <c:if test="${resultMap.trgterLmttList.all.buttonRplcWordsUseAt ne 'Y'}"> disabled </c:if>>
|
||||
<c:forEach items="${resultMap.PrlcLinkBrwsrDvList}" var="PrlcLinkBrwsrDvList">
|
||||
<option value="${PrlcLinkBrwsrDvList.cd}" <c:if test="${resultMap.trgterLmttList.all.buttonRplcLinkBrwsrDvCd eq PrlcLinkBrwsrDvList.cd }"> selected </c:if> >${PrlcLinkBrwsrDvList.cdNm}</option>
|
||||
</c:forEach>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<tr id="all-grades-row">
|
||||
<th rowspan="2" colspan="2">모든 등급</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<div class="b-checkbox-container my-5">
|
||||
<label class="b-checkbox checkbox">
|
||||
<input type="checkbox" id="pricRplcWordsUseAt_all" name="pricRplcWordsUseAt_all" >
|
||||
<span class="check"></span>
|
||||
<span class="control-label">가격제한</span>
|
||||
</label>
|
||||
</div>
|
||||
<div class="table-wrapper">
|
||||
<table class="table">
|
||||
<caption>해당 테이블에 대한 설명</caption>
|
||||
<colgroup>
|
||||
<col style="width: 23%;">
|
||||
<col>
|
||||
</colgroup>
|
||||
<tbody>
|
||||
<tr>
|
||||
<th>가격 대체 문구</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<input class="input-text" type="text" title="해당 인풋에 대한 설명" id="pricRplcWords_all" name="pricRplcWords_all" value="" disabled>
|
||||
<input type="hidden" id="goodsTrgterLmttInnb_all" value="" />
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>링크 연결</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<input class="input-text" type="text" title="해당 인풋에 대한 설명" id="pricRplcLink_all" name="pricRplcLink_all" value="" disabled>
|
||||
<div class="select-box">
|
||||
<select class="short" title="해당 셀렉트에 대한 설명" id="pricRplcLinkDvCd_all" name="pricRplcLinkDvCd_all" disabled>
|
||||
<c:forEach items="${resultMap.PrlcLinkDvList}" var="PrlcLinkDvList">
|
||||
<option value="${PrlcLinkDvList.cd}" >${PrlcLinkDvList.cdNm}</option>
|
||||
</c:forEach>
|
||||
</select>
|
||||
</div>
|
||||
<div class="select-box">
|
||||
<select class="short" title="해당 셀렉트에 대한 설명" id="pricRplcLinkBrwsrDvCd_all" name="pricRplcLinkBrwsrDvCd_all" disabled>
|
||||
<c:forEach items="${resultMap.PrlcLinkBrwsrDvList}" var="PrlcLinkBrwsrDvList">
|
||||
<option value="${PrlcLinkBrwsrDvList.cd}" >${PrlcLinkBrwsrDvList.cdNm}</option>
|
||||
</c:forEach>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="all-grades-purchase-row">
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<div class="b-checkbox-container my-5">
|
||||
<label class="b-checkbox checkbox">
|
||||
<input type="checkbox" id="buttonRplcWordsUseAt_all" name="buttonRplcWordsUseAt_all" >
|
||||
<span class="check"></span>
|
||||
<span class="control-label">구매제한</span>
|
||||
</label>
|
||||
</div>
|
||||
<div class="table-wrapper">
|
||||
<table class="table">
|
||||
<caption>해당 테이블에 대한 설명</caption>
|
||||
<colgroup>
|
||||
<col style="width: 23%;">
|
||||
<col>
|
||||
</colgroup>
|
||||
<tbody>
|
||||
<tr>
|
||||
<th>버튼 대체 문구</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<input class="input-text" type="text" id="buttonRplcWords_all" name="buttonRplcWords_all" title="해당 인풋에 대한 설명" value="" disabled>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>링크 연결</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<input class="input-text" type="text" title="해당 인풋에 대한 설명" id="buttonRplcLink_all" name="buttonRplcLink_all" value="" disabled>
|
||||
<div class="select-box">
|
||||
<select class="short" title="해당 셀렉트에 대한 설명" id="buttonRplcLinkDvCd_all" name="buttonRplcLinkDvCd_all" disabled >
|
||||
<c:forEach items="${resultMap.PrlcLinkDvList}" var="PrlcLinkDvList">
|
||||
<option value="${PrlcLinkDvList.cd}" >${PrlcLinkDvList.cdNm}</option>
|
||||
</c:forEach>
|
||||
</select>
|
||||
</div>
|
||||
<div class="select-box">
|
||||
<select class="short" title="해당 셀렉트에 대한 설명" id="buttonRplcLinkBrwsrDvCd_all" name="buttonRplcLinkBrwsrDvCd_all" disabled>
|
||||
<c:forEach items="${resultMap.PrlcLinkBrwsrDvList}" var="PrlcLinkBrwsrDvList">
|
||||
<option value="${PrlcLinkBrwsrDvList.cd}" >${PrlcLinkBrwsrDvList.cdNm}</option>
|
||||
</c:forEach>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
<c:choose>
|
||||
<c:when test="${not empty resultMap.trgterLmttList.member}">
|
||||
<c:forEach items="${resultMap.trgterLmttList.member}" var="memInfo" varStatus="status">
|
||||
<input type="hidden" id="mbrGradInnb" name="mbrGradInnb" value="<c:out value="${memInfo.mbrGradInnb}" default="0"/> ">
|
||||
<input type="hidden" name="goodsTrgterLmttInnb_mem${status.index}" value="<c:out value="${memInfo.goodsTrgterLmttInnb}" default="0"/> ">
|
||||
<tr class="individual-grade-row">
|
||||
<th rowspan="2" colspan="2" ><c:out value="${memInfo.mbrGradNm}"/> </th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<div class="b-checkbox-container my-5">
|
||||
<label class="b-checkbox checkbox">
|
||||
<input class= "gradSetAllChk_pric" type="checkbox" id="pricRplcWordsUseAt_${status.index}" name="pricRplcWordsUseAt_${status.index}" <c:if test="${memInfo.pricRplcWordsUseAt eq 'Y'}"> checked </c:if> >
|
||||
<span class="check"></span>
|
||||
<span class="control-label">가격제한</span>
|
||||
</label>
|
||||
</div>
|
||||
<div class="table-wrapper">
|
||||
<table class="table">
|
||||
<caption>해당 테이블에 대한 설명</caption>
|
||||
<colgroup>
|
||||
<col style="width: 23%;">
|
||||
<col>
|
||||
</colgroup>
|
||||
<tbody>
|
||||
<tr>
|
||||
<th>가격 대체 문구</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<input class="input-text price-limit-input gradSetAllChk_pric" type="text" title="해당 인풋에 대한 설명" id="pricRplcWords_${status.index}" name="pricRplcWords_${status.index}"
|
||||
value="<c:out value="${memInfo.pricRplcWords}"/> "
|
||||
<c:if test="${memInfo.pricRplcWordsUseAt ne 'Y'}"> disabled </c:if>
|
||||
>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>링크 연결</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<input class="input-text gradSetAllChk_pric" type="text" title="해당 인풋에 대한 설명" id="pricRplcLink_${status.index}" name="pricRplcLink_${status.index}" value="${memInfo.pricRplcLink}" <c:if test="${memInfo.pricRplcWordsUseAt ne 'Y'}"> disabled </c:if> >
|
||||
<div class="select-box">
|
||||
<select class="short gradSetAllChk_pric" title="해당 셀렉트에 대한 설명" id="pricRplcLinkDvCd_${status.index}" name="pricRplcLinkDvCd_${status.index}" <c:if test="${memInfo.pricRplcWordsUseAt ne 'Y'}"> disabled </c:if> >
|
||||
<c:forEach items="${resultMap.PrlcLinkDvList}" var="PrlcLinkDvList">
|
||||
<option value="${PrlcLinkDvList.cd}" <c:if test="${memInfo.pricRplcLinkDvCd eq PrlcLinkDvList.cd }"> selected </c:if> > <c:out value="${PrlcLinkDvList.cdNm}"/> </option>
|
||||
</c:forEach>
|
||||
</select>
|
||||
</div>
|
||||
<div class="select-box">
|
||||
<select class="short gradSetAllChk_pric" title="해당 셀렉트에 대한 설명" id="pricRplcLinkBrwsrDvCd_${status.index}" name="pricRplcLinkBrwsrDvCd_${status.index}" <c:if test="${memInfo.pricRplcWordsUseAt ne 'Y'}"> disabled </c:if> >
|
||||
<c:forEach items="${resultMap.PrlcLinkBrwsrDvList}" var="PrlcLinkBrwsrDvList">
|
||||
<option value="${PrlcLinkBrwsrDvList.cd}" <c:if test="${memInfo.pricRplcLinkBrwsrDvCd eq PrlcLinkBrwsrDvList.cd }"> selected </c:if> >${PrlcLinkBrwsrDvList.cdNm}</option>
|
||||
</c:forEach>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="individual-grade-row">
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<div class="b-checkbox-container my-5">
|
||||
<label class="b-checkbox checkbox">
|
||||
<input class = "gradSetAllChk_btn" type="checkbox" id="buttonRplcWordsUseAt_${status.index}" name="buttonRplcWordsUseAt_${status.index}" <c:if test="${memInfo.buttonRplcWordsUseAt eq 'Y'}"> checked </c:if>>
|
||||
<span class="check"></span>
|
||||
<span class="control-label">구매제한</span>
|
||||
</label>
|
||||
</div>
|
||||
<div class="table-wrapper">
|
||||
<table class="table">
|
||||
<caption>해당 테이블에 대한 설명</caption>
|
||||
<colgroup>
|
||||
<col style="width: 23%;">
|
||||
<col>
|
||||
</colgroup>
|
||||
<tbody>
|
||||
<tr>
|
||||
<th>버튼 대체 문구</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<input class="input-text gradSetAllChk_btn" type="text" id="buttonRplcWords_${status.index}" name="buttonRplcWords_${status.index}" title="해당 인풋에 대한 설명"
|
||||
value="${memInfo.buttonRplcWords}"
|
||||
<c:if test="${memInfo.buttonRplcWordsUseAt ne 'Y'}"> disabled </c:if>
|
||||
>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>링크 연결</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<input class="input-text gradSetAllChk_btn" type="text" title="해당 인풋에 대한 설명" id="buttonRplcLink_${status.index}" name="buttonRplcLink_${status.index}" value="${memInfo.buttonRplcLink}" <c:if test="${memInfo.buttonRplcWordsUseAt ne 'Y'}"> disabled </c:if> >
|
||||
<div class="select-box">
|
||||
<select class="short gradSetAllChk_btn" title="해당 셀렉트에 대한 설명" id="buttonRplcLinkDvCd_${status.index}" name="buttonRplcLinkDvCd_${status.index}" <c:if test="${memInfo.buttonRplcWordsUseAt ne 'Y'}"> disabled </c:if>>
|
||||
<c:forEach items="${resultMap.PrlcLinkDvList}" var="PrlcLinkDvList">
|
||||
<option value="${PrlcLinkDvList.cd}" <c:if test="${memInfo.buttonRplcLinkDvCd eq PrlcLinkDvList.cd }"> selected </c:if> >${PrlcLinkDvList.cdNm}</option>
|
||||
</c:forEach>
|
||||
</select>
|
||||
</div>
|
||||
<div class="select-box">
|
||||
<select class="short gradSetAllChk_btn" title="해당 셀렉트에 대한 설명" id="buttonRplcLinkBrwsrDvCd_${status.index}" name="buttonRplcLinkBrwsrDvCd_${status.index}" <c:if test="${memInfo.buttonRplcWordsUseAt ne 'Y'}"> disabled </c:if> >
|
||||
<c:forEach items="${resultMap.PrlcLinkBrwsrDvList}" var="PrlcLinkBrwsrDvList">
|
||||
<option value="${PrlcLinkBrwsrDvList.cd}" <c:if test="${memInfo.buttonRplcLinkBrwsrDvCd eq PrlcLinkBrwsrDvList.cd }"> selected </c:if> >${PrlcLinkBrwsrDvList.cdNm}</option>
|
||||
</c:forEach>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</c:forEach>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<c:forEach items="${resultMap.gradList}" var="member" varStatus="status">
|
||||
<input type="hidden" id="mbrGradInnb" name="mbrGradInnb" value="${member.mbrGradInnb}">
|
||||
<input type="hidden" name="goodsTrgterLmttInnb_mem${status.index}" value="0">
|
||||
<tr class="individual-grade-row">
|
||||
<th rowspan="2" colspan="2" >${member.mbrGradNm}</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<div class="b-checkbox-container my-5">
|
||||
<label class="b-checkbox checkbox">
|
||||
<input class= "gradSetAllChk_pric" type="checkbox" id="pricRplcWordsUseAt_${status.index}" name="pricRplcWordsUseAt_${status.index}">
|
||||
<span class="check"></span>
|
||||
<span class="control-label">가격제한</span>
|
||||
</label>
|
||||
</div>
|
||||
<div class="table-wrapper">
|
||||
<table class="table">
|
||||
<caption>해당 테이블에 대한 설명</caption>
|
||||
<colgroup>
|
||||
<col style="width: 23%;">
|
||||
<col>
|
||||
</colgroup>
|
||||
<tbody>
|
||||
<tr>
|
||||
<th>가격 대체 문구</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<input class="input-text price-limit-input gradSetAllChk_pric" type="text" title="해당 인풋에 대한 설명" id="pricRplcWords_${status.index}" name="pricRplcWords_${status.index}"
|
||||
value="" disabled>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>링크 연결</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<input class="input-text gradSetAllChk_pric" type="text" title="해당 인풋에 대한 설명" id="pricRplcLink_${status.index}" name="pricRplcLink_${status.index}" value="" disabled>
|
||||
<div class="select-box">
|
||||
<select class="short gradSetAllChk_pric" title="해당 셀렉트에 대한 설명" id="pricRplcLinkDvCd_${status.index}" name="pricRplcLinkDvCd_${status.index}" disabled >
|
||||
<c:forEach items="${resultMap.PrlcLinkDvList}" var="PrlcLinkDvList">
|
||||
<option value="${PrlcLinkDvList.cd}" >${PrlcLinkDvList.cdNm}</option>
|
||||
</c:forEach>
|
||||
</select>
|
||||
</div>
|
||||
<div class="select-box">
|
||||
<select class="short gradSetAllChk_pric" title="해당 셀렉트에 대한 설명" id="pricRplcLinkBrwsrDvCd_${status.index}" name="pricRplcLinkBrwsrDvCd_${status.index}" disabled >
|
||||
<c:forEach items="${resultMap.PrlcLinkBrwsrDvList}" var="PrlcLinkBrwsrDvList">
|
||||
<option value="${PrlcLinkBrwsrDvList.cd}" >${PrlcLinkBrwsrDvList.cdNm}</option>
|
||||
</c:forEach>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="individual-grade-row">
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<div class="b-checkbox-container my-5">
|
||||
<label class="b-checkbox checkbox">
|
||||
<input class = "gradSetAllChk_btn" type="checkbox" id="buttonRplcWordsUseAt_${status.index}" name="buttonRplcWordsUseAt_${status.index}" >
|
||||
<span class="check"></span>
|
||||
<span class="control-label">구매제한</span>
|
||||
</label>
|
||||
</div>
|
||||
<div class="table-wrapper">
|
||||
<table class="table">
|
||||
<caption>해당 테이블에 대한 설명</caption>
|
||||
<colgroup>
|
||||
<col style="width: 23%;">
|
||||
<col>
|
||||
</colgroup>
|
||||
<tbody>
|
||||
<tr>
|
||||
<th>버튼 대체 문구</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<input class="input-text gradSetAllChk_btn" type="text" id="buttonRplcWords_${status.index}" name="buttonRplcWords_${status.index}" title="해당 인풋에 대한 설명"
|
||||
value="" disabled>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>링크 연결</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<input class="input-text gradSetAllChk_btn" type="text" title="해당 인풋에 대한 설명" id="buttonRplcLink_${status.index}" name="buttonRplcLink_${status.index}" value="" disabled >
|
||||
<div class="select-box">
|
||||
<select class="short gradSetAllChk_btn" title="해당 셀렉트에 대한 설명" id="buttonRplcLinkDvCd_${status.index}" name="buttonRplcLinkDvCd_${status.index}" disabled>
|
||||
<c:forEach items="${resultMap.PrlcLinkDvList}" var="PrlcLinkDvList">
|
||||
<option value="${PrlcLinkDvList.cd}" >${PrlcLinkDvList.cdNm}</option>
|
||||
</c:forEach>
|
||||
</select>
|
||||
</div>
|
||||
<div class="select-box">
|
||||
<select class="short gradSetAllChk_btn" title="해당 셀렉트에 대한 설명" id="buttonRplcLinkBrwsrDvCd_${status.index}" name="buttonRplcLinkBrwsrDvCd_${status.index}" disabled>
|
||||
<c:forEach items="${resultMap.PrlcLinkBrwsrDvList}" var="PrlcLinkBrwsrDvList">
|
||||
<option value="${PrlcLinkBrwsrDvList.cd}" >${PrlcLinkBrwsrDvList.cdNm}</option>
|
||||
</c:forEach>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</c:forEach>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</form>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<a href="#" rel="modal:close" class="btn outline">취소</a>
|
||||
<button class="btn primary" onclick="fn_save_purchase_limmit(); return false;">확인</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script src="/admin/js/script.js" defer=""></script>
|
||||
@@ -0,0 +1,386 @@
|
||||
<%@ 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 : GoodsSrchPopupForm.jsp
|
||||
Description : 상품 검색 팝업 폼
|
||||
Modification Information
|
||||
|
||||
수정일 수정자 수정내용
|
||||
------- -------- ---------------------------
|
||||
since : 2024-06-03
|
||||
--%>
|
||||
|
||||
<script>
|
||||
$(document).ready(function() {
|
||||
|
||||
fn_set_niceSelect_datePicker('.select-box')
|
||||
|
||||
var goodsKndCd = $('input[name="goodsKndCd"]').val();
|
||||
var selectedArea = $('#selectedArea').val();
|
||||
|
||||
$('#popupListForm').on('keydown', function (event) {
|
||||
if (event.keyCode === 13) {
|
||||
event.preventDefault();
|
||||
fn_goods_search_popup_list(1);
|
||||
}
|
||||
});
|
||||
const cdnurl = $('#cdnurl').val()
|
||||
|
||||
|
||||
|
||||
if (goodsKndCd === "01") {
|
||||
$('#title').text('상품 검색');
|
||||
selected.forEach(function(good) {
|
||||
var row = `
|
||||
<tr id="choiseListId` + good.goodsId + `" class="draggable" ondblclick="fn_remove_append_goods_list(this)">
|
||||
<td class="text-left">
|
||||
<input type="hidden" id="goodsInnb" name="goodsInnb" value="` + good.goodsId + `"/>
|
||||
<input type="hidden" id="goodsImgCours" name="goodsImgCours" value="` + good.goodsImg + `"/>
|
||||
<input type="hidden" id="goodsNm" name="goodsNm" value="` + good.goodsNm + `"/>
|
||||
<input type="hidden" id="slepric" name="slepric" value="` + good.goodsPrice + `"/>
|
||||
<input type="hidden" id="goodsSttusNm" name="goodsSttusNm" value="` + good.goodsSttusNm + `"/>
|
||||
<input type="hidden" id="expsrNm" name="expsrNm" value="` + good.expsrNm + `"/>
|
||||
<div class="product-search-box__product">
|
||||
<img src="` + good.goodsImg + `"
|
||||
onerror="this.src='<c:url value="/mngr/images/image_placeholder.png"/>'"
|
||||
alt="` + good.goodsNm + `" width="64">
|
||||
` + good.goodsNm + `
|
||||
</div>
|
||||
</td>
|
||||
<td>` + fn_format_comma(good.goodsPrice) + `</td>
|
||||
<td>` + good.goodsSttusNm + ' (' + good.expsrNm + ')' + `</td>
|
||||
</tr>
|
||||
`;
|
||||
$('#appendList').append(row);
|
||||
|
||||
});
|
||||
} else if (goodsKndCd === "02") {
|
||||
$('#title').text('사은품 검색');
|
||||
|
||||
if (!fn_is_empty(giftSelectionData[selectedArea])) {
|
||||
giftSelectionData[selectedArea].forEach(function (good) {
|
||||
var row = `
|
||||
<tr id="choiseListId` + good.goodsId + `" class="draggable" ondblclick="fn_remove_append_goods_list(this)">
|
||||
<td class="text-left">
|
||||
<input type="hidden" id="prsntInnb" name="prsntInnb" value="` + good.prsntInnb + `"/>
|
||||
<input type="hidden" id="goodsInnb" name="goodsInnb" value="` + good.goodsId + `"/>
|
||||
<input type="hidden" id="goodsImgCours" name="goodsImgCours" value="` + good.goodsImg + `"/>
|
||||
<input type="hidden" id="goodsNm" name="goodsNm" value="` + good.goodsNm + `"/>
|
||||
<input type="hidden" id="slepric" name="slepric" value="` + good.goodsPrice + `"/>
|
||||
<input type="hidden" id="goodsSttusNm" name="goodsSttusNm" value="` + good.goodsSttusNm + `"/>
|
||||
<div class="product-search-box__product">
|
||||
<img src="` + good.goodsImg + `"
|
||||
onerror="this.src='<c:url value="/mngr/images/image_placeholder.png"/>'"
|
||||
alt="` + good.goodsNm + `" width="64">
|
||||
` + good.goodsNm + `
|
||||
</div>
|
||||
</td>
|
||||
<td>` + good.goodsPrice + `</td>
|
||||
<td>` + good.goodsSttusNm + `</td>
|
||||
</tr>
|
||||
`;
|
||||
$('#appendList').append(row);
|
||||
});
|
||||
} else {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
//드래그 초기화
|
||||
initializeTableDnD();
|
||||
|
||||
/* 검색조건 > 노출여부 선택 이벤트 */
|
||||
$(document).off('click', 'input[name="expsrCd"]').on('click', 'input[name="expsrCd"]', function () {
|
||||
const sttus = $(this).val();
|
||||
const popup = $('product-search');
|
||||
const checkbox = $(popup).find('input[name="expsrCd"]');
|
||||
const all = $(popup).find('input[name="expsrCd"][value=""]')
|
||||
|
||||
if (fn_is_empty(sttus)) {
|
||||
$(checkbox).prop('checked', false);
|
||||
|
||||
$(this).prop('checked', true);
|
||||
} else {
|
||||
$(all).prop('checked', false);
|
||||
|
||||
const length = $(popup).find('input[name="expsrCd"]:checked').length;
|
||||
|
||||
if (2 < length) {
|
||||
$(checkbox).prop('checked', false);
|
||||
|
||||
$(all).prop('checked', true);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
fn_goods_search_popup_list(1);
|
||||
|
||||
|
||||
});
|
||||
|
||||
|
||||
/* 검색조건 > 카테고리 선택 이벤트 */
|
||||
$(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;
|
||||
|
||||
|
||||
/* ****************************
|
||||
* 카테고리 목록 조회 AJAX
|
||||
******************************/
|
||||
const fn_get_goods_ctgry = function (upperCtgryId, targetCtgryId) {
|
||||
$.ajax({
|
||||
type: 'post',
|
||||
url: '<c:url value="/admin/sys/ctgry/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');
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
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('change', 'select[id^=ctgryDepth]', function () {
|
||||
const ctgryOptn = $(this).val()
|
||||
|
||||
if(!fn_is_empty(ctgryOptn)){
|
||||
$('#ctgryId').val(ctgryOptn)
|
||||
}
|
||||
|
||||
})
|
||||
|
||||
|
||||
;
|
||||
|
||||
// 같은 컨테이너 안의 체크박스 전체 선택
|
||||
var containerCheckAll = $(".b-checkbox-container .check-all > input[type=checkbox]");
|
||||
containerCheckAll.click(function () {
|
||||
var checkbox = $(this).closest(".b-checkbox-container").find("input[type=checkbox]");
|
||||
checkAllCheckBoxes($(this), checkbox);
|
||||
});
|
||||
|
||||
function checkAll(){
|
||||
const chkAll = $('#srchStatusCheckboxAll')
|
||||
const checkbox = chkAll.closest(".b-checkbox-container").find('input[type="checkbox"]');
|
||||
|
||||
checkAllCheckBoxes(chkAll, checkbox);
|
||||
}
|
||||
|
||||
</script>
|
||||
<div id="product-search" class="modal" style="max-width: 1200px;">
|
||||
<div class="modal-header">
|
||||
<h4 id="title"></h4>
|
||||
</div>
|
||||
<div class="modal-content">
|
||||
<form id="popupListForm" name="popupListForm">
|
||||
<input type="hidden" name="goodsKndCd" value="${resultMap.BOGoodsVO.goodsKndCd}">
|
||||
<input type="hidden" id="selectedArea" value="${ paramVO.selectedArea}">
|
||||
<input type="hidden" id="ctgryId" name="ctgryId" />
|
||||
<spring:eval expression="@environment.getProperty('mngrfo.common.fileupload.cdnurl')" var="cdnurl"/>
|
||||
<input type="hidden" id="cdnurl" value="${cdnurl}"/>
|
||||
<div class="table-wrapper">
|
||||
<table class="table" id="resetTargetArea">
|
||||
<caption>해당 테이블에 대한 설명</caption>
|
||||
<colgroup>
|
||||
<col style="width: 12%;">
|
||||
<col style="width: 38%;">
|
||||
<col style="width: 12%;">
|
||||
<col style="width: 38%;">
|
||||
</colgroup>
|
||||
<tbody>
|
||||
<tr>
|
||||
<th>검색어</th>
|
||||
<td colspan="3">
|
||||
<div class="td-inner">
|
||||
<input type="text" name="kwrd" class="input-text full" title="검색어" placeholder="상품명, 상품설명, 상품코드, 키워드, 간략설명">
|
||||
</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();">
|
||||
<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');">
|
||||
<span class="check"></span>
|
||||
<span class="control-label">${goodsDftinfoSttus.cdNm}</span>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</label>
|
||||
</c:forEach>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
<th>노출여부</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<div class="custom-radio-container">
|
||||
<div class="custom-radio">
|
||||
<input type="radio" id="expsrDvCd"
|
||||
name="expsrDvCd" value="">
|
||||
<label for="expsrDvCd">전체</label>
|
||||
</div>
|
||||
<c:forEach items="${resultMap.expsrCdList}" var="expsrCdList" varStatus="status">
|
||||
<div class="custom-radio">
|
||||
<c:choose>
|
||||
<c:when test="${status.first}">
|
||||
<input type="radio" id="expsr${status.count}" name="expsrDvCd" value="${expsrCdList.cd}" checked>
|
||||
<label for="expsr${status.count}">${expsrCdList.cdNm}</label>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<input type="radio" id="expsr${status.count}" name="expsrDvCd" value="${expsrCdList.cd}">
|
||||
<label for="expsr${status.count}">${expsrCdList.cdNm}</label>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</div>
|
||||
</c:forEach>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>카테고리</th>
|
||||
<td colspan="3">
|
||||
<div class="td-inner">
|
||||
<div class="input-container gap-4" id="search-section">
|
||||
<div class="select-box">
|
||||
<select id="ctgryDepth1" class="ctgry" title="1차 카테고리">
|
||||
<option value="">1차 카테고리</option>
|
||||
<c:forEach items="${resultMap.goodsCategoryList}" var="goodsCategory" varStatus="status">
|
||||
<option value="${goodsCategory.ctgryId}">${goodsCategory.ctgryNm}</option>
|
||||
</c:forEach>
|
||||
</select>
|
||||
</div>
|
||||
<div class="select-box">
|
||||
<select id="ctgryDepth2" class="ctgry" title="2차 카테고리">
|
||||
<option value="">2차 카테고리</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="select-box">
|
||||
<select id="ctgryDepth3" class="ctgry" title="3차 카테고리">
|
||||
<option value="">3차 카테고리</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="select-box">
|
||||
<select id="ctgryDepth4" class="ctgry" title="4차 카테고리">
|
||||
<option value="">4차 카테고리</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class="form-control-container">
|
||||
<div class="left"></div>
|
||||
<div class="center">
|
||||
<button class="btn outline" id="resetBtn" type="button" onclick="fn_reset_form('resetTargetArea');">초기화</button>
|
||||
<button class="btn primary" id="searchBtn" type="button" onclick="fn_goods_search_popup_list(1); return false;">검색</button>
|
||||
</div>
|
||||
<div class="right"></div>
|
||||
</div>
|
||||
<input type="hidden" id="pageIndex" name="pageIndex" value="1"/>
|
||||
<input type="hidden" id="pageUnit" name="pageUnit" value="10"/>
|
||||
</form>
|
||||
|
||||
<div class="product-search-box">
|
||||
<div id="goodsList" class="table-wrapper left">
|
||||
</div>
|
||||
|
||||
<div class="table-wrapper right">
|
||||
<div class="form-control-container mb-5">
|
||||
<div class="left">
|
||||
<h3 class="content-section__inner-title mb-0">선택된 상품</h3>
|
||||
</div>
|
||||
<div class="center">
|
||||
</div>
|
||||
<div class="right">
|
||||
<p class="info-oneline"><i class="icon icon_info"></i>상품을 "더블클릭"하면 제외됩니다.
|
||||
</div>
|
||||
</div>
|
||||
<table class="table vertical tight draggable">
|
||||
<caption>해당 테이블에 대한 설명</caption>
|
||||
<colgroup>
|
||||
<col>
|
||||
<col style="width: 16%;">
|
||||
<col style="width: 16%;">
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>상품명</th>
|
||||
<th>판매가</th>
|
||||
<th>판매상태</th>
|
||||
</tr>
|
||||
</thead>
|
||||
|
||||
<tbody id="appendList">
|
||||
</tbody>
|
||||
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<a rel="modal:close" class="btn outline">취소</a>
|
||||
<button class="btn primary" rel="modal:close"
|
||||
<c:choose>
|
||||
<c:when test="${resultMap.BOGoodsVO.goodsKndCd eq '01'}">
|
||||
onclick="fn_select_goods_search(); return false;"
|
||||
</c:when>
|
||||
<c:when test="${resultMap.BOGoodsVO.goodsKndCd eq '02'}">
|
||||
onclick="fn_select_goods_search_evt('<c:out value="${ paramVO.selectedArea}"/>'); return false;"
|
||||
</c:when>
|
||||
</c:choose>
|
||||
>확인</button>
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,183 @@
|
||||
<%@ 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 : GoodsSrchPopupListR.jsp
|
||||
Description : 상품 검색 팝업 리스트
|
||||
Modification Information
|
||||
|
||||
수정일 수정자 수정내용
|
||||
------- -------- ---------------------------
|
||||
since : 2024-06-03
|
||||
--%>
|
||||
<script>
|
||||
|
||||
$(document).ready(function() {
|
||||
|
||||
var selectedGoods = []; // 중복체크하기 위한 배열
|
||||
|
||||
$('#appendList tr').each(function() {
|
||||
const goodsId = $(this).attr('id').replace('choiseListId', '');
|
||||
const goodsImg = $(this).find('input[name="goodsImgCours"]').val();
|
||||
const goodsNm = $(this).find('input[name="goodsNm"]').val();
|
||||
const goodsPrice = $(this).find('input[name="slepric"]').val();
|
||||
const goodsSttusNm = $(this).find('input[name="goodsSttusNm"]').val();
|
||||
const expsrNm = $(this).find('input[name="expsrNm"]').val();
|
||||
|
||||
if (goodsId) {
|
||||
selectedGoods.push({
|
||||
goodsId: goodsId,
|
||||
goodsImg: goodsImg,
|
||||
goodsNm: goodsNm,
|
||||
goodsPrice: goodsPrice,
|
||||
goodsSttusNm: goodsSttusNm,
|
||||
expsrNm: expsrNm
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
$(document).off('dblclick', '.searchList').on('dblclick', '.searchList', function() {
|
||||
|
||||
var copyTr = $(this).clone();
|
||||
|
||||
var goodsId = $(this).find('input[name="goodsInnb"]').val();
|
||||
var goodsImg = $(this).find('input[name="goodsImgCours"]').val();
|
||||
var goodsNm = $(this).find('input[name="goodsNm"]').val();
|
||||
var goodsPrice = $(this).find('input[name="slepric"]').val();
|
||||
var goodsSttusNm = $(this).find('input[name="goodsSttusNm"]').val();
|
||||
var expsrNm = $(this).find('input[name="expsrNm"]').val();
|
||||
|
||||
var isDuplicate = $("#appendList").find('#choiseListId' + goodsId).length > 0;
|
||||
|
||||
copyTr.attr('id', 'choiseListId' + goodsId);
|
||||
copyTr.attr('ondblclick', 'fn_remove_append_goods_list(this)');
|
||||
copyTr.attr('class', 'draggable');
|
||||
|
||||
// 배열에 값이 없을 경우 실행
|
||||
if (!isSelected(goodsId) && !isDuplicate) {
|
||||
|
||||
function initializeTableDnD() {
|
||||
if ($(".table.draggable").length > 0) {
|
||||
$(".table.draggable").tableDnD({
|
||||
onDragClass: "dragging",
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
$("#appendList").append(copyTr);
|
||||
|
||||
initializeTableDnD();
|
||||
|
||||
selectedGoods.push({
|
||||
goodsId: goodsId,
|
||||
goodsImg: goodsImg,
|
||||
goodsNm: goodsNm,
|
||||
goodsPrice: goodsPrice,
|
||||
goodsSttusNm: goodsSttusNm,
|
||||
expsrNm: expsrNm
|
||||
});
|
||||
} else if (isSelected(goodsId)){
|
||||
alert("이미 선택된 상품입니다.");
|
||||
return false;
|
||||
}
|
||||
});
|
||||
|
||||
/**
|
||||
* 선택된 상품 제거 함수
|
||||
*/
|
||||
function fn_remove_append_goods_list(element) {
|
||||
var dynamicId = $(element).attr('id');
|
||||
var goodsId = dynamicId.replace('choiseListId', '');
|
||||
|
||||
$("#appendList #" + dynamicId).remove();
|
||||
|
||||
// 선택된 상품 배열에서 제거
|
||||
selectedGoods = selectedGoods.filter(function(good) {
|
||||
return good.goodsId !== goodsId;
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 중복 체크 함수
|
||||
*/
|
||||
function isSelected(goodsId) {
|
||||
return selectedGoods.some(function(good) {
|
||||
return good.goodsId === goodsId;
|
||||
});
|
||||
}
|
||||
|
||||
// fn_remove_list 함수를 전역 스코프로 선언
|
||||
window.fn_remove_append_goods_list = fn_remove_append_goods_list;
|
||||
|
||||
});
|
||||
|
||||
|
||||
</script>
|
||||
|
||||
<div class="form-control-container mb-5">
|
||||
<div class="left">
|
||||
<h3 class="content-section__inner-title mb-0">검색된 상품</h3>
|
||||
</div>
|
||||
<div class="center">
|
||||
</div>
|
||||
<div class="right">
|
||||
<p class="info-oneline"><i class="icon icon_info"></i>상품을 "더블클릭"하면 추가됩니다.
|
||||
</div>
|
||||
</div>
|
||||
<table class="table vertical tight">
|
||||
<caption>해당 테이블에 대한 설명</caption>
|
||||
<colgroup>
|
||||
<col>
|
||||
<col style="width: 16%;">
|
||||
<col style="width: 16%;">
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>상품명</th>
|
||||
<th>판매가</th>
|
||||
<th>판매상태</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<c:choose>
|
||||
<c:when test="${ not empty resultMap.list }">
|
||||
<spring:eval expression="@environment.getProperty('mngrfo.common.fileupload.cdnurl')" var="cdnurl"/>
|
||||
<c:forEach items="${ resultMap.list }" var="list" varStatus="status">
|
||||
<tr class="searchList">
|
||||
<td class="text-left">
|
||||
<input type="hidden" id="goodsInnb" name="goodsInnb" value="<c:out value="${ list.goodsInnb }"/>"/>
|
||||
<input type="hidden" id="goodsImgCours" name="goodsImgCours" value="<c:out value="${cdnurl}${ list.goodsImgCours }"/>"/>
|
||||
<input type="hidden" id="goodsNm" name="goodsNm" value="<c:out value="${ list.goodsNm }"/>"/>
|
||||
<input type="hidden" id="slepric" name="slepric" value="<fmt:parseNumber value="${ list.slepric }"/>"/>
|
||||
<input type="hidden" id="goodsSttusNm" name="goodsSttusNm" value="<c:out value="${ list.goodsSttusNm }"/>"/>
|
||||
<input type="hidden" id="expsrNm" name="expsrNm" value="<c:out value="${ list.expsrNm }"/>"/>
|
||||
<div class="product-search-box__product">
|
||||
<img src="<c:out value="${cdnurl}${list.goodsImgCours}"/> "
|
||||
onerror="this.src='<c:url value="/mngr/images/image_placeholder.png"/>'"
|
||||
alt="${list.goodsNm}" width="64">
|
||||
${list.goodsNm}
|
||||
</div>
|
||||
</td>
|
||||
<td>${list.slepric} </td>
|
||||
<td>${list.goodsSttusNm} (${list.expsrNm})</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 class="pagination__container">
|
||||
<ui:pagination paginationInfo="${resultMap.paginationInfo}" type="image" jsFunction="fn_goods_search_popup_list" />
|
||||
</div>
|
||||
@@ -0,0 +1,674 @@
|
||||
<%@ 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="ui" uri="http://www.winbit.kr/ctl/ui" %>
|
||||
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
|
||||
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
|
||||
<%@ page import="java.util.Date" %>
|
||||
<%--
|
||||
Class Name : MarktMbrSrchPopupR.jsp
|
||||
Description : 이메일 수동 발송
|
||||
Modification Information
|
||||
|
||||
수정일 수정자 수정내용
|
||||
------- -------- ---------------------------
|
||||
2024-01-23 김혜인 최초 생성
|
||||
--%>
|
||||
<!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>
|
||||
// ----- 검색 닫기 ----- //
|
||||
var windowPopSectionContent = $('.windowPop-sectionContent');
|
||||
|
||||
windowPopSectionClose.on('click', function (e) {
|
||||
e.preventDefault();
|
||||
if (windowPopSectionClose.hasClass('closed')) {
|
||||
windowPopSectionContent.show();
|
||||
windowPopSectionClose.removeClass('closed');
|
||||
windowPopSectionClose.text('검색닫기');
|
||||
return;
|
||||
}
|
||||
windowPopSectionContent.hide();
|
||||
windowPopSectionClose.addClass('closed');
|
||||
windowPopSectionClose.text('검색열기');
|
||||
});
|
||||
</script>
|
||||
<body>
|
||||
<div class="windowPop-wrapper">
|
||||
<section class="content-section">
|
||||
<div class="table-wrapper windowPop-sectionContent">
|
||||
<table class="table">
|
||||
<caption>해당 테이블에 대한 설명</caption>
|
||||
<colgroup>
|
||||
<col style="width: 12%;">
|
||||
<col style="width: auto;">
|
||||
<col style="width: 12%;">
|
||||
<col style="width: 12%;">
|
||||
<col style="width: 23%;">
|
||||
</colgroup>
|
||||
<tbody>
|
||||
<tr>
|
||||
<th>검색어</th>
|
||||
<td colspan="4">
|
||||
<div class="td-inner">
|
||||
<input class="input-text xl" type="text" title="해당 인풋에 대한 설명"
|
||||
placeholder="주문번호,주문자명,입금자명,아이디,휴대전화,이메일,수령자명,휴대전화,상품명,상품번호">
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="search-hide">
|
||||
<th>매장</th>
|
||||
<td colspan="4">
|
||||
<div class="td-inner">
|
||||
<div class="select-box">
|
||||
<select title="해당 셀렉트에 대한 설명">
|
||||
<option value="">매장1</option>
|
||||
<option value="">매장2</option>
|
||||
<option value="">매장2</option>
|
||||
<option value="">매장2</option>
|
||||
<option value="">뉴트리코어</option>
|
||||
<option value="">매장2</option>
|
||||
<option value="">매장2</option>
|
||||
<option value="">매장2</option>
|
||||
<option value="">매장2</option>
|
||||
<option value="">매장2</option>
|
||||
<option value="">매장2</option>
|
||||
<option value="">매장2</option>
|
||||
<option value="">매장2</option>
|
||||
<option value="">매장2</option>
|
||||
<option value="">매장2</option>
|
||||
<option value="">매장2</option>
|
||||
<option value="">매장2</option>
|
||||
<option value="">매장2</option>
|
||||
<option value="">매장2</option>
|
||||
<option value="">매장2</option>
|
||||
<option value="">매장2</option>
|
||||
<option value="">매장2</option>
|
||||
<option value="">매장2</option>
|
||||
<option value="">매장2</option>
|
||||
<option value="">매장2</option>
|
||||
<option value="">매장2</option>
|
||||
<option value="">매장2</option>
|
||||
<option value="">매장2</option>
|
||||
<option value="">매장2</option>
|
||||
<option value="">매장2</option>
|
||||
</select>
|
||||
</div>
|
||||
<input disabled class="input-text" type="text" title="해당 인풋에 대한 설명" value="매장1">
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="search-hide">
|
||||
<th>날짜</th>
|
||||
<td colspan="2">
|
||||
<div class="td-inner">
|
||||
<div class="select-box">
|
||||
<select title="해당 셀렉트에 대한 설명">
|
||||
<option value="">시작일</option>
|
||||
<option value="">종료일</option>
|
||||
<option value="">등록일</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="input-container">
|
||||
<input type="text" id="datepicker_1" class="datepicker" title="시작 날짜 선택"
|
||||
autocomplete="off">
|
||||
<span class="tilde">~</span>
|
||||
<input type="text" id="datepicker_2" class="datepicker" title="종료 날짜 선택"
|
||||
autocomplete="off">
|
||||
</div>
|
||||
<div class="dateRange-btnContainer">
|
||||
<button class="dateRange-btn">어제</button>
|
||||
<button class="dateRange-btn">오늘</button>
|
||||
<button class="dateRange-btn">3일간</button>
|
||||
<button class="dateRange-btn">일주일</button>
|
||||
<button class="dateRange-btn">1개월</button>
|
||||
<button class="dateRange-btn">3개월</button>
|
||||
<button class="dateRange-btn">6개월</button>
|
||||
<button class="dateRange-btn selected">전체</button>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
<th>리셀러의심</th>
|
||||
<td>
|
||||
<div class="b-checkbox-container">
|
||||
<label class="b-checkbox checkbox">
|
||||
<input type="checkbox" value="">
|
||||
<span class="check"></span>
|
||||
<span class="control-label">리셀러의심</span>
|
||||
</label>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="search-hide">
|
||||
<th>주문상태 (출고전)</th>
|
||||
<td colspan="4">
|
||||
<div class="td-inner">
|
||||
<div class="b-checkbox-container order-status-badge-container">
|
||||
<label class="b-checkbox checkbox">
|
||||
<input type="checkbox" value="">
|
||||
<span class="check"></span>
|
||||
<span class="control-label">
|
||||
<span class="order-status-badge recept">주문접수</span>
|
||||
</span>
|
||||
</label>
|
||||
<label class="b-checkbox checkbox">
|
||||
<input type="checkbox" value="">
|
||||
<span class="check"></span>
|
||||
<span class="control-label">
|
||||
<span class="order-status-badge confirm">결제확인</span>
|
||||
</span>
|
||||
</label>
|
||||
<label class="b-checkbox checkbox">
|
||||
<input type="checkbox" value="">
|
||||
<span class="check"></span>
|
||||
<span class="control-label">
|
||||
<span class="order-status-badge prep">상품준비</span>
|
||||
</span>
|
||||
</label>
|
||||
<label class="b-checkbox checkbox">
|
||||
<input type="checkbox" value="">
|
||||
<span class="check"></span>
|
||||
<span class="control-label">
|
||||
<span class="order-status-badge gray">결제취소</span>
|
||||
</span>
|
||||
</label>
|
||||
<label class="b-checkbox checkbox">
|
||||
<input type="checkbox" value="">
|
||||
<span class="check"></span>
|
||||
<span class="control-label">
|
||||
<span class="order-status-badge gray">주문무효</span>
|
||||
</span>
|
||||
</label>
|
||||
<label class="b-checkbox checkbox">
|
||||
<input type="checkbox" value="">
|
||||
<span class="check"></span>
|
||||
<span class="control-label">
|
||||
<span class="order-status-badge gray">결제실패</span>
|
||||
</span>
|
||||
</label>
|
||||
<label class="b-checkbox checkbox">
|
||||
<input type="checkbox" value="">
|
||||
<span class="check"></span>
|
||||
<span class="control-label">전체</span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="search-hide">
|
||||
<th>주문상태 (출고후)</th>
|
||||
<td colspan="4">
|
||||
<div class="td-inner">
|
||||
<div class="b-checkbox-container order-status-badge-container">
|
||||
<label class="b-checkbox checkbox">
|
||||
<input type="checkbox" value="">
|
||||
<span class="check"></span>
|
||||
<span class="control-label">
|
||||
<span class="order-status-badge delivery">부분배송중</span>
|
||||
</span>
|
||||
</label>
|
||||
<label class="b-checkbox checkbox">
|
||||
<input type="checkbox" value="">
|
||||
<span class="check"></span>
|
||||
<span class="control-label">
|
||||
<span class="order-status-badge delivery">배송중</span>
|
||||
</span>
|
||||
</label>
|
||||
<label class="b-checkbox checkbox">
|
||||
<input type="checkbox" value="">
|
||||
<span class="check"></span>
|
||||
<span class="control-label">
|
||||
<span class="order-status-badge complete">부분배송완료</span>
|
||||
</span>
|
||||
</label>
|
||||
<label class="b-checkbox checkbox">
|
||||
<input type="checkbox" value="">
|
||||
<span class="check"></span>
|
||||
<span class="control-label">
|
||||
<span class="order-status-badge complete">배송완료</span>
|
||||
</span>
|
||||
</label>
|
||||
<label class="b-checkbox checkbox">
|
||||
<input type="checkbox" value="">
|
||||
<span class="check"></span>
|
||||
<span class="control-label">전체</span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="search-hide">
|
||||
<th>주문환경</th>
|
||||
<td colspan="4">
|
||||
<div class="td-inner">
|
||||
<div class="b-checkbox-container">
|
||||
<label class="b-checkbox checkbox">
|
||||
<input type="checkbox" value="">
|
||||
<span class="check"></span>
|
||||
<span class="control-label">PC</span>
|
||||
</label>
|
||||
<label class="b-checkbox checkbox">
|
||||
<input type="checkbox" value="">
|
||||
<span class="check"></span>
|
||||
<span class="control-label">모바일/태블릿</span>
|
||||
</label>
|
||||
<label class="b-checkbox checkbox">
|
||||
<input type="checkbox" value="">
|
||||
<span class="check"></span>
|
||||
<span class="control-label">전화</span>
|
||||
</label>
|
||||
<label class="b-checkbox checkbox">
|
||||
<input type="checkbox" value="">
|
||||
<span class="check"></span>
|
||||
<span class="control-label">TM주문</span>
|
||||
</label>
|
||||
<label class="b-checkbox checkbox">
|
||||
<input type="checkbox" value="">
|
||||
<span class="check"></span>
|
||||
<span class="control-label">TM출고</span>
|
||||
</label>
|
||||
<label class="b-checkbox checkbox">
|
||||
<input type="checkbox" value="">
|
||||
<span class="check"></span>
|
||||
<span class="control-label">TM결제</span>
|
||||
</label>
|
||||
<label class="b-checkbox checkbox">
|
||||
<input type="checkbox" value="">
|
||||
<span class="check"></span>
|
||||
<span class="control-label">가맹(POS)</span>
|
||||
</label>
|
||||
<label class="b-checkbox checkbox">
|
||||
<input type="checkbox" value="">
|
||||
<span class="check"></span>
|
||||
<span class="control-label">직영(POS)</span>
|
||||
</label>
|
||||
<label class="b-checkbox checkbox">
|
||||
<input type="checkbox" value="">
|
||||
<span class="check"></span>
|
||||
<span class="control-label">유통(POS)</span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="search-hide">
|
||||
<th>배송예정</th>
|
||||
<td colspan="4">
|
||||
<div class="td-inner">
|
||||
<div class="select-box">
|
||||
<select title="해당 셀렉트에 대한 설명">
|
||||
<option value="">희망배송일</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="input-container">
|
||||
<input type="text" id="datepicker_3" class="datepicker" title="시작 날짜 선택"
|
||||
autocomplete="off">
|
||||
<span class="tilde">~</span>
|
||||
<input type="text" id="datepicker_4" class="datepicker" title="종료 날짜 선택"
|
||||
autocomplete="off">
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="search-hide">
|
||||
<th>배송방법</th>
|
||||
<td colspan="1">
|
||||
<div class="td-inner">
|
||||
<div class="b-checkbox-container">
|
||||
<label class="b-checkbox checkbox">
|
||||
<input type="checkbox" value="">
|
||||
<span class="check"></span>
|
||||
<span class="control-label">택배</span>
|
||||
</label>
|
||||
<label class="b-checkbox checkbox">
|
||||
<input type="checkbox" value="">
|
||||
<span class="check"></span>
|
||||
<span class="control-label">직접배송</span>
|
||||
</label>
|
||||
<label class="b-checkbox checkbox">
|
||||
<input type="checkbox" value="">
|
||||
<span class="check"></span>
|
||||
<span class="control-label">프레쉬배송</span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
<th>주문유형</th>
|
||||
<td colspan="2">
|
||||
<div class="td-inner">
|
||||
<div class="b-checkbox-container">
|
||||
<label class="b-checkbox checkbox">
|
||||
<input type="checkbox" value="">
|
||||
<span class="check"></span>
|
||||
<span class="control-label">
|
||||
<i class="icon icon_word-badge01"></i>
|
||||
관리자주문</span>
|
||||
</label>
|
||||
<label class="b-checkbox checkbox">
|
||||
<input type="checkbox" value="">
|
||||
<span class="check"></span>
|
||||
<span class="control-label">
|
||||
<i class="icon icon_word-badge02"></i>
|
||||
개인결제</span>
|
||||
</label>
|
||||
<label class="b-checkbox checkbox">
|
||||
<input type="checkbox" value="">
|
||||
<span class="check"></span>
|
||||
<span class="control-label">
|
||||
<i class="icon icon_gift-badge"></i>
|
||||
선물하기</span>
|
||||
</label>
|
||||
<label class="b-checkbox checkbox">
|
||||
<input type="checkbox" value="">
|
||||
<span class="check"></span>
|
||||
<span class="control-label">여러곳배송</span>
|
||||
</label>
|
||||
<label class="b-checkbox checkbox">
|
||||
<input type="checkbox" value="">
|
||||
<span class="check"></span>
|
||||
<span class="control-label">정기배송</span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="search-hide">
|
||||
<th>주문결제</th>
|
||||
<td colspan="1">
|
||||
<div class="td-inner">
|
||||
<div class="b-checkbox-container vertical mr-15">
|
||||
<label class="b-checkbox checkbox">
|
||||
<input type="checkbox" value="">
|
||||
<span class="check"></span>
|
||||
<span class="control-label">무통장</span>
|
||||
</label>
|
||||
<label class="b-checkbox checkbox">
|
||||
<input type="checkbox" value="">
|
||||
<span class="check"></span>
|
||||
<span class="control-label">매장결제</span>
|
||||
</label>
|
||||
<label class="b-checkbox checkbox">
|
||||
<input type="checkbox" value="">
|
||||
<span class="check"></span>
|
||||
<span class="control-label">수기결제</span>
|
||||
</label>
|
||||
</div>
|
||||
<div class="multi-select mr-2">
|
||||
<div class="multi-select__title">
|
||||
<div class="b-checkbox-container">
|
||||
<label class="b-checkbox checkbox check-all">
|
||||
<input type="checkbox" value="">
|
||||
<span class="check"></span>
|
||||
<span class="control-label">모든 결제사</span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="multi-select__inner">
|
||||
<div class="b-checkbox-container vertical">
|
||||
<label class="b-checkbox checkbox">
|
||||
<input type="checkbox" value="">
|
||||
<span class="check"></span>
|
||||
<span class="control-label">일반PG사</span>
|
||||
</label>
|
||||
<label class="b-checkbox checkbox">
|
||||
<input type="checkbox" value="">
|
||||
<span class="check"></span>
|
||||
<span class="control-label">카카오페이</span>
|
||||
</label>
|
||||
<label class="b-checkbox checkbox">
|
||||
<input type="checkbox" value="">
|
||||
<span class="check"></span>
|
||||
<span class="control-label">톡체크아웃</span>
|
||||
</label>
|
||||
<label class="b-checkbox checkbox">
|
||||
<input type="checkbox" value="">
|
||||
<span class="check"></span>
|
||||
<span class="control-label">페이코</span>
|
||||
</label>
|
||||
<label class="b-checkbox checkbox">
|
||||
<input type="checkbox" value="">
|
||||
<span class="check"></span>
|
||||
<span class="control-label">네이버페이 주문형</span>
|
||||
</label>
|
||||
<label class="b-checkbox checkbox">
|
||||
<input type="checkbox" value="">
|
||||
<span class="check"></span>
|
||||
<span class="control-label">네이버페이 결제형</span>
|
||||
</label>
|
||||
<label class="b-checkbox checkbox">
|
||||
<input type="checkbox" value="">
|
||||
<span class="check"></span>
|
||||
<span class="control-label">페이팔</span>
|
||||
</label>
|
||||
<label class="b-checkbox checkbox">
|
||||
<input type="checkbox" value="">
|
||||
<span class="check"></span>
|
||||
<span class="control-label">엑심베이</span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="multi-select">
|
||||
<div class="multi-select__title">
|
||||
<div class="b-checkbox-container">
|
||||
<label class="b-checkbox checkbox check-all">
|
||||
<input type="checkbox" value="">
|
||||
<span class="check"></span>
|
||||
<span class="control-label">모든 결제수단</span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="multi-select__inner">
|
||||
<div class="b-checkbox-container vertical">
|
||||
<label class="b-checkbox checkbox">
|
||||
<input type="checkbox" value="">
|
||||
<span class="check"></span>
|
||||
<span class="control-label">신용카드</span>
|
||||
</label>
|
||||
<label class="b-checkbox checkbox">
|
||||
<input type="checkbox" value="">
|
||||
<span class="check"></span>
|
||||
<span class="control-label">휴대폰</span>
|
||||
</label>
|
||||
<label class="b-checkbox checkbox">
|
||||
<input type="checkbox" value="">
|
||||
<span class="check"></span>
|
||||
<span class="control-label">계좌이체</span>
|
||||
</label>
|
||||
<label class="b-checkbox checkbox">
|
||||
<input type="checkbox" value="">
|
||||
<span class="check"></span>
|
||||
<span class="control-label">에스크로계좌이체</span>
|
||||
</label>
|
||||
<label class="b-checkbox checkbox">
|
||||
<input type="checkbox" value="">
|
||||
<span class="check"></span>
|
||||
<span class="control-label">포인트</span>
|
||||
</label>
|
||||
<label class="b-checkbox checkbox">
|
||||
<input type="checkbox" value="">
|
||||
<span class="check"></span>
|
||||
<span class="control-label">후불결제</span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
<th>주문유입</th>
|
||||
<td colspan="2">
|
||||
<div class="td-inner">
|
||||
<div class="multi-select">
|
||||
<div class="multi-select__title">
|
||||
<div class="b-checkbox-container">
|
||||
<label class="b-checkbox checkbox check-all">
|
||||
<input type="checkbox" value="">
|
||||
<span class="check"></span>
|
||||
<span class="control-label">모든 유입경로</span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="multi-select__inner">
|
||||
<div class="b-checkbox-container vertical">
|
||||
<label class="b-checkbox checkbox">
|
||||
<input type="checkbox" value="">
|
||||
<span class="check"></span>
|
||||
<span class="control-label">인스타그램</span>
|
||||
</label>
|
||||
<label class="b-checkbox checkbox">
|
||||
<input type="checkbox" value="">
|
||||
<span class="check"></span>
|
||||
<span class="control-label">직접입력</span>
|
||||
</label>
|
||||
<label class="b-checkbox checkbox">
|
||||
<input type="checkbox" value="">
|
||||
<span class="check"></span>
|
||||
<span class="control-label">구글검색</span>
|
||||
</label>
|
||||
<label class="b-checkbox checkbox">
|
||||
<input type="checkbox" value="">
|
||||
<span class="check"></span>
|
||||
<span class="control-label">네이버검색</span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class="form-control-container windowPop-sectionContent">
|
||||
<div class="left"></div>
|
||||
<div class="center">
|
||||
<button class="btn outline">초기화</button>
|
||||
<button class="btn primary">검색</button>
|
||||
</div>
|
||||
<div class="right">
|
||||
<button class="btn outline search-detail opened">상세검색</button>
|
||||
</div>
|
||||
</div>
|
||||
<button class="windowPop-sectionClose">검색닫기</button>
|
||||
</section>
|
||||
<section class="content-section">
|
||||
<div class="table-wrapper">
|
||||
<table class="table vertical">
|
||||
<caption>해당 테이블에 대한 설명</caption>
|
||||
<!-- 각 열 width 설정 -->
|
||||
<colgroup>
|
||||
<col style="width: 6%;">
|
||||
<col style="width: 5%">
|
||||
<col style="width: 6%;">
|
||||
<col style="width: 12%;">
|
||||
<col style="width: auto">
|
||||
<col style="width: 6%;">
|
||||
<col style="width: 6%;">
|
||||
<col style="width: 10%;">
|
||||
<col style="width: 10%;">
|
||||
<col style="width: 6%;">
|
||||
<col style="width: 6%;">
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>선택</th>
|
||||
<th>번호</th>
|
||||
<th>주문일시</th>
|
||||
<th>주문번호</th>
|
||||
<th>주문상품</th>
|
||||
<th>수(종)</th>
|
||||
<th>출고</th>
|
||||
<th>받는분/주문자</th>
|
||||
<th>결제수단/일시</th>
|
||||
<th>결제금액</th>
|
||||
<th>처리상태</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>
|
||||
<div class="manage-btn-container">
|
||||
<a href="#admin-memo-pop" rel="modal:open" class="btn xsm gray">선택</a>
|
||||
</div>
|
||||
</td>
|
||||
<td>3</td>
|
||||
<td>23-09-06<br>11:11</td>
|
||||
<td><a class="under-line blue-7" href="">2022011217594517548</a></td>
|
||||
<td>
|
||||
<div class="order-section__product">
|
||||
<img src="../resources/images/상품이미지01.png" alt="상품이미지" width="56" height="56">
|
||||
<div class="order-section__product-info">
|
||||
<span class="order-section__product-productTitle">초임계
|
||||
식물성 알티지 오메가3</span>
|
||||
<span class="option-text">
|
||||
<span class="option-badge">옵션</span>
|
||||
식물성알티지오메가3 1박스
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
<td>1(1종)</td>
|
||||
<td>출고</td>
|
||||
<td>
|
||||
<a href="" class="order-detail-text">
|
||||
<i class="icon icon_word-badge09"></i>
|
||||
<span class="gray-12">
|
||||
홍길동
|
||||
</span>
|
||||
(
|
||||
<span class="fw-500 blue-7">test12321</span>
|
||||
/
|
||||
<span class="fw-500 green-8">일반</span>
|
||||
)
|
||||
</a>
|
||||
<button class="mini-info-btn" data-info="info01">?</button>
|
||||
</td>
|
||||
<td class="text-right">
|
||||
<span class="blue-7">전액할인</span>
|
||||
<br>
|
||||
<span class="badge-word">
|
||||
<i class="icon icon_word-badge03"></i>
|
||||
<span class="stone-8 fw-500">농협</span>
|
||||
</span>
|
||||
<br>
|
||||
<span>23-09-05 11:11</span>
|
||||
</td>
|
||||
<td><span class="comma fw-500">38900</span></td>
|
||||
<td>결제확인</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</section>
|
||||
<div class="pagination__container mb-40">
|
||||
<div class="pagination">
|
||||
<button disabled class="pagination__item first"><span class="visually-hidden">첫
|
||||
페이지로</span></button>
|
||||
<button disabled class="pagination__item prev"><span class="visually-hidden">이전
|
||||
페이지로</span></button>
|
||||
<ol class="pagination__number-group">
|
||||
<li><button class="pagination__item active"><span>1</span></button></li>
|
||||
<li><button class="pagination__item"><span>2</span></button></li>
|
||||
<li><button class="pagination__item"><span>3</span></button></li>
|
||||
<li><button class="pagination__item"><span>4</span></button></li>
|
||||
<li><button class="pagination__item"><span>5</span></button></li>
|
||||
<li><button class="pagination__item"><span>6</span></button></li>
|
||||
<li><button class="pagination__item"><span>7</span></button></li>
|
||||
<li><button class="pagination__item"><span>8</span></button></li>
|
||||
<li><button class="pagination__item"><span>9</span></button></li>
|
||||
<li><button class="pagination__item"><span>10</span></button></li>
|
||||
</ol>
|
||||
<button class="pagination__item next"><span class="visually-hidden">다음 페이지로</span></button>
|
||||
<button class="pagination__item last"><span class="visually-hidden">마지막 페이지로</span></button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,803 @@
|
||||
<%@ 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="ui" uri="http://www.winbit.kr/ctl/ui" %>
|
||||
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
|
||||
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
|
||||
<%@ page import="java.util.Date" %>
|
||||
<%--
|
||||
Class Name : MarktMbrSrchPopupR.jsp
|
||||
Description : 이메일 수동 발송
|
||||
Modification Information
|
||||
|
||||
수정일 수정자 수정내용
|
||||
------- -------- ---------------------------
|
||||
2024-01-23 김혜인 최초 생성
|
||||
--%>
|
||||
<!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(){
|
||||
//상세 검색 hide
|
||||
fn_init();
|
||||
// ----- 검색 닫기 ----- //
|
||||
var windowPopSectionContent = $('.windowPop-sectionContent');
|
||||
|
||||
/* windowPopSectionClose.on('click', function (e) {
|
||||
e.preventDefault();
|
||||
if (windowPopSectionClose.hasClass('closed')) {
|
||||
windowPopSectionContent.show();
|
||||
windowPopSectionClose.removeClass('closed');
|
||||
windowPopSectionClose.text('검색닫기');
|
||||
return;
|
||||
}
|
||||
windowPopSectionContent.hide();
|
||||
windowPopSectionClose.addClass('closed');
|
||||
windowPopSectionClose.text('검색열기');
|
||||
}); */
|
||||
});
|
||||
/*******************************************
|
||||
검색 조건 이벤트 설정
|
||||
********************************************/
|
||||
/*
|
||||
* 검색조건 > 검색 날짜 유효성 체크
|
||||
* srchStartDate : #검색 시작일 value
|
||||
* srchEndDate : #검색 종료일 value
|
||||
*/
|
||||
const fn_check_date = function (chkTrgt) {
|
||||
|
||||
//text 타입인 검색 시작일, 종료일 Date타입으로 변환
|
||||
const srchStartDate = new Date($("#"+chkTrgt+"StartDate").val());
|
||||
const srchEndDate = new Date($("#"+chkTrgt+"EndDate").val());
|
||||
if(srchStartDate != null && srchEndDate != null){
|
||||
// 현재 날짜, 일년 전 날짜 가져오기
|
||||
let today = new Date();
|
||||
let srchEndDateOneY = new Date(today.getFullYear()-1, today.getMonth(), today.getDate()-1);
|
||||
if(srchEndDate > today){
|
||||
alert("날짜 검색 '종료일'이 오늘 날짜보다 큽니다");
|
||||
$('#srchEndDate').datepicker().datepicker("setDate",'0');
|
||||
return false;
|
||||
}else if(srchStartDate > srchEndDate){
|
||||
alert("날짜 검색 '시작일'이 1년 초과 되었습니다");
|
||||
$('#srchStartDate').datepicker().datepicker("setDate",'-1Y');
|
||||
return false;
|
||||
} else {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
/*
|
||||
* 검색조건 > 날짜 전체 클릭 시 날짜 설정 초기화
|
||||
*/
|
||||
const fn_reset_date = function(strtDate,endDate){
|
||||
$('#'+strtDate).datepicker().datepicker("setDate",'');
|
||||
$('#'+endDate).datepicker().datepicker("setDate",'');
|
||||
}
|
||||
|
||||
/*
|
||||
* 검색조건 > 마케팅 수신 동의 체크시 브랜드 전체 체크
|
||||
*/
|
||||
function fn_change_event(_target) {
|
||||
let readId = $('[name=' + _target + ']:checked').attr('id');
|
||||
if (readId == 'marktRecptnAgreAtY') {
|
||||
|
||||
$('.checkBtn').prop('checked', true);
|
||||
}else if(readId == 'marktRecptnAgreAtA' || readId == 'marktRecptnAgreAtN'){
|
||||
|
||||
$('.checkBtn').prop('checked', false);
|
||||
}
|
||||
};
|
||||
/*
|
||||
* 검색조건 >한 개 브랜드라도 체크 해제시 전체체크 체크 해제
|
||||
*/
|
||||
function fn_change_prop_uncheck(_target) {
|
||||
let readId = $('[name=' + _target + ']:checked').attr('id');
|
||||
if(!readId.checked){
|
||||
$('#checkAll').prop('checked', false);
|
||||
}
|
||||
};
|
||||
|
||||
/*
|
||||
* 검색조건 >한 개 브랜드라도 체크 해제시 전체체크 체크 해제
|
||||
*/
|
||||
function fn_change_prop_unclick(_target){
|
||||
let readId = $('[name=' + _target + ']:checked').attr('id');
|
||||
// 라디오 버튼 전체 혹은 거부에 버튼 클릭 후 브랜드 선택 시 동의로 버튼 변경
|
||||
if(readId != 'marktRecptnAgreAtY'){
|
||||
$('#marktRecptnAgreAtY').prop('checked', true);
|
||||
}
|
||||
}
|
||||
function fn_init () {
|
||||
/*
|
||||
* 검색조건 > 초기화 버튼 클릭 이벤트
|
||||
*/
|
||||
$('#btnResetForm').on('click', function(){
|
||||
fn_reset_form('mbrSrchSection');
|
||||
|
||||
$('#srchKywordDv option:eq(0)').prop('selected', true);
|
||||
$('#srchKywordDv').niceSelect('update');
|
||||
|
||||
$('#srchGradInnb option:eq(0)').prop('selected', true);
|
||||
$('#srchGradInnb').niceSelect('update');
|
||||
|
||||
$('#vstRvwDv option:eq(0)').prop('selected', true);
|
||||
$('#vstRvwDv').niceSelect('update');
|
||||
|
||||
$('input[name="srchStrtOrdrAmt"]').val('0');
|
||||
$('input[name="srchEndOrdrAmt"]').val('0');
|
||||
|
||||
$('input[name="srchStrtOrdrCnt"]').val('0');
|
||||
$('input[name="srchEndOrdrCnt"]').val('0');
|
||||
|
||||
$('input[name="srchStrtMlg"]').val('0');
|
||||
$('input[name="srchEndMlg"]').val('0');
|
||||
|
||||
$('input[name="srchStrtVstRvwCnt"]').val('0');
|
||||
$('input[name="srchEndVstRvwCnt"]').val('0');
|
||||
|
||||
$('input[name="srchStrtBrthDe"]').val('0');
|
||||
$('input[name="srchEndBrthDe"]').val('0');
|
||||
});
|
||||
/* ********************************************************
|
||||
* 목록 조회 function
|
||||
******************************************************** */
|
||||
//회원 목록 조회(ajax)
|
||||
const fn_select_list = function(pageIndex, pageUnit) {
|
||||
let dataStr;
|
||||
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/mbr/selectMbrListInqire'/>",
|
||||
data : dataStr,
|
||||
success:function(resultHtml) {
|
||||
$('#pageDiv').html(resultHtml);
|
||||
$('#pageUnit').niceSelect();
|
||||
}
|
||||
});
|
||||
}
|
||||
//검색 엔터 클릭시 목록 조회
|
||||
document.addEventListener('keydown', function(event) {
|
||||
if (event.keyCode === 13) {
|
||||
event.preventDefault();
|
||||
fn_select_list(1);
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
</script>
|
||||
<body>
|
||||
<div class="windowPop-wrapper">
|
||||
<form id = "listForm">
|
||||
<section class="content-section" id = "mbrSrchSection">
|
||||
<input type="hidden" id="pageIndex" name="pageIndex" value="${ resultSrchMap.boMbrSrchVO.pageIndex}"/>
|
||||
<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: auto%;">
|
||||
</colgroup>
|
||||
<tr>
|
||||
<th>이름</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<input class="input-text xl" type="text" title="검색 이름" name = "srchNm">
|
||||
</div>
|
||||
</td>
|
||||
<th>휴대폰번호</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<input class="input-text xl" type="text" title="검색 휴대폰번호" name = "srchMbtlnb">
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>회원구분</th>
|
||||
<td colspan = "3">
|
||||
<c:forEach var = "mbrTy" items = "${resultSrchMap.code.mbrTy}">
|
||||
<c:if test = "${mbrTy.cd eq 'member'}">
|
||||
<label class="b-checkbox checkbox check">
|
||||
<input type="checkbox" id="<c:out value = "${mbrTy.cd}"/>" name="srchMbrTy" value = "<c:out value = "${mbrTy.cd }"/>" >
|
||||
<span class="check"></span>
|
||||
<span class="control-label"><c:out value = "${mbrTy.cdNm}"/></span>
|
||||
</label>
|
||||
(<c:forEach var = "grad" items = "${resultSrchMap.code.grad}">
|
||||
<label class="b-checkbox checkbox check">
|
||||
<input type="checkbox" id="mbrTy${grad.mbrGradInnb}" name="srchGradInnb" value = "${grad.mbrGradInnb}">
|
||||
<span class="check"></span>
|
||||
<span class="control-label">${grad.gradNm}</span>
|
||||
</label>
|
||||
</c:forEach>)
|
||||
</c:if>
|
||||
<c:if test = "${mbrTy.cd eq 'none'}">
|
||||
<br>
|
||||
<label class="b-checkbox checkbox check">
|
||||
<input type="checkbox" id="<c:out value = "${mbrTy.cd}"/>" name="srchMbrTy" value = "<c:out value = "${mbrTy.cd}"/>">
|
||||
<span class="check"></span>
|
||||
<span class="control-label"><c:out value = "${mbrTy.cdNm}"/></span>
|
||||
</label>
|
||||
( <label class="b-checkbox checkbox check">
|
||||
<input type="checkbox" id="distinctMbr" name="distinctMbr" value = "D">
|
||||
<span class="check"></span>
|
||||
<span class="control-label">회원 중복 휴대폰번호 제외</span>
|
||||
</label> )
|
||||
</c:if>
|
||||
</c:forEach>
|
||||
<c:forEach var = "joinMth" items = "${resultSrchMap.code.joinMth}">
|
||||
<c:if test = "${joinMth.cd eq 'pos'}">
|
||||
<label class="b-checkbox checkbox check">
|
||||
<input type="checkbox" id="pos" name="srchMbrTy" value = "<c:out value ='${joinMth.cd}'/>">
|
||||
<span class="check"></span>
|
||||
<span class="control-label">매장회원</span>
|
||||
</label>
|
||||
</c:if>
|
||||
</c:forEach>
|
||||
(<c:forEach var = "posDv" items = "${resultSrchMap.code.posDv}">
|
||||
<c:if test = "${posDv.cd eq '1'}">
|
||||
<label class="b-checkbox checkbox check">
|
||||
<input type="checkbox" id="pos<c:out value = "${posDv.cd}"/>" name="posDv" value = "<c:out value = "${posDv.cd}"/>">
|
||||
<span class="check"></span>
|
||||
<span class="control-label"><c:out value = "${posDv.cdNm}"/></span>
|
||||
</label>
|
||||
</c:if>
|
||||
<c:if test = "${posDv.cd eq '2'}">
|
||||
<label class="b-checkbox checkbox check checkBtn">
|
||||
<input type="checkbox" id="pos<c:out value = "${posDv.cd}"/>" name="posDv" value = "<c:out value = "${posDv.cd}"/>">
|
||||
<span class="check"></span>
|
||||
<span class="control-label"><c:out value = "${posDv.cdNm}"/></span>
|
||||
</label>
|
||||
</c:if>
|
||||
<c:if test = "${posDv.cd eq '3'}">
|
||||
<label class="b-checkbox checkbox check checkBtn">
|
||||
<input type="checkbox" id="pos<c:out value = "${posDv.cd}"/>" name="posDv" value = "<c:out value = "${posDv.cd}"/>">
|
||||
<span class="check"></span>
|
||||
<span class="control-label"><c:out value = "${posDv.cdNm}"/></span>
|
||||
</label>
|
||||
</c:if>
|
||||
</c:forEach>)
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="search-hide">
|
||||
<th>성별</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<div class="custom-radio-container">
|
||||
<div class="custom-radio">
|
||||
<input type="radio" id="sexDstnA" name="srchSexDstn" value = "" checked>
|
||||
<label for="sexDstnA">전체</label>
|
||||
</div>
|
||||
<c:forEach var = "sexDstn" items = "${resultSrchMap.code.sexDstn}">
|
||||
<div class="custom-radio">
|
||||
<input type="radio" id="${sexDstn.cd}" value = "${sexDstn.cd}" name="srchSexDstn">
|
||||
<label for="sex${sexDstn.cd}"><c:out value = "${sexDstn.cdNm}"/></label>
|
||||
</div>
|
||||
</c:forEach>
|
||||
<div class="custom-radio">
|
||||
<input type="radio" id="sexDstnN" value = "none" name="srchSexDstn">
|
||||
<label for="sexDstnN">성별없음</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
<th>리셀러 제외</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<div class="custom-radio-container">
|
||||
<c:forEach var = "appen" items = "${resultSrchMap.code.appen}">
|
||||
<c:if test ="${appen.cd eq '02'}">
|
||||
<label class="b-checkbox checkbox check">
|
||||
<input type="checkbox" id="<c:out value = "${appen.cd}"/>" name="srchAppen" value = "<c:out value = "${appen.cd}"/>">
|
||||
<span class="check"></span>
|
||||
<span class="control-label">리셀러 제외</span>
|
||||
</label>
|
||||
</c:if>
|
||||
</c:forEach>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>생일</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<div class="select-box">
|
||||
<select title="생일검색" name = "srchBrthDe" id = "srchBrthDe">
|
||||
<option value = "">선택</option>
|
||||
<c:forEach var="brthDe" begin = "1" end = "12" varStatus = "status">
|
||||
<c:choose>
|
||||
<c:when test = "${status.index < 10}">
|
||||
<option value="0${status.index}"><c:out value = "${status.index}"/></option>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<option value="${status.index}"><c:out value = "${status.index}"/></option>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</c:forEach>
|
||||
</select>
|
||||
</div>
|
||||
<span class="input-unit-text">월</span>
|
||||
</div>
|
||||
</td>
|
||||
<th>나이</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<div class="input-container">
|
||||
<span class="input-unit-text left">만</span>
|
||||
<input type="text" class="input-text xsm right number" value="0"
|
||||
title="나이 검색 시작" name = "srchStrtAge">
|
||||
<span class="input-unit-text">세</span>
|
||||
<span class="tilde">~</span>
|
||||
<input type="text" class="input-text xsm right number" value="0"
|
||||
title="나이 검색 종료" name = "srchEndAge">
|
||||
<span class="input-unit-text">세</span>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th rowspan = "2">회원가입 환경</th>
|
||||
<td colspan = "3">
|
||||
<div class="td-inner">
|
||||
<div class="custom-radio-container">
|
||||
<div class="custom-radio">
|
||||
<input type="radio" id="srchPlatformAll" value = "" name="srchPlatform" checked>
|
||||
<label for="srchPlatformAll">전체</label>
|
||||
</div>
|
||||
<c:forEach var = "platform" items = "${resultSrchMap.code.platform}">
|
||||
<div class="custom-radio">
|
||||
<input type="radio" id="${platform.cd}" name="srchPlatform" value = "${platform.cd}">
|
||||
<label for="${platform.cd}">${platform.cdNm}</label>
|
||||
</div>
|
||||
</c:forEach>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan = "3">
|
||||
<div class="td-inner">
|
||||
<div class="custom-radio-container">
|
||||
<c:forEach var = "brand" items = "${resultSrchMap.code.brand}">
|
||||
<div class="custom-radio">
|
||||
<input type="radio" id="platform${brand.cd}" name="srchPlatform" value = "${brand.cd}">
|
||||
<label for="platform${brand.cd}">${brand.cdNm}</label>
|
||||
</div>
|
||||
</c:forEach>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>회원가입 방법</th>
|
||||
<td colspan = "3">
|
||||
<div class="td-inner">
|
||||
<div class="custom-radio-container">
|
||||
<div class="custom-radio">
|
||||
<input type="radio" id="srchruteA" name="srchrute" value = "" checked>
|
||||
<label for="srchruteA">전체</label>
|
||||
</div>
|
||||
<c:forEach var = "rute" items = "${resultSrchMap.code.rute}">
|
||||
<div class="custom-radio">
|
||||
<input type="radio" id="${rute.cd}" name="srchrute" value = "${rute.cd}">
|
||||
<label for="${rute.cd}">${rute.cdNm}</label>
|
||||
</div>
|
||||
</c:forEach>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>마케팅 수신 동의</th>
|
||||
<td colspan = "3">
|
||||
<div class="td-inner">
|
||||
<div class="custom-radio-container">
|
||||
<div class="custom-radio">
|
||||
<input type="radio" id="marktRecptnAgreAtA" name = "srchMarktRecptnAgreAt" value = "" onclick = "fn_change_event('srchMarktRecptnAgreAt')" checked>
|
||||
<label for="marktRecptnAgreAtA">전체</label>
|
||||
</div>
|
||||
<div class="custom-radio">
|
||||
<input type="radio" id="marktRecptnAgreAtY" value = "Y" name="srchMarktRecptnAgreAt" onclick = "fn_change_event('srchMarktRecptnAgreAt')">
|
||||
<label for="marktRecptnAgreAtY">동의</label>
|
||||
</div>
|
||||
<span class="parentheses">(</span>
|
||||
<div class="b-checkbox-container inner">
|
||||
<label class="b-checkbox checkbox check-all checkBtn">
|
||||
<input type="checkbox" value="" id = "checkAll" class = "srchBrndChkBtn checkBtn" >
|
||||
<span class="check"></span>
|
||||
<span class="control-label">전체</span>
|
||||
</label>
|
||||
<c:forEach var = "brand" items = "${resultSrchMap.code.brand}">
|
||||
<label class="b-checkbox checkbox check checkBtn">
|
||||
<input type="checkbox" id="markt${brand.cd}" name="srchBrand" value = "${brand.cd}" class = "checkBtn" onclick = "fn_change_prop_uncheck('srchBrand');fn_change_prop_unclick('srchMarktRecptnAgreAt')">
|
||||
<span class="check"></span>
|
||||
<span class="control-label">${brand.cdNm}</span>
|
||||
</label>
|
||||
</c:forEach>
|
||||
</div>
|
||||
<span class="parentheses">)</span>
|
||||
<div class="custom-radio">
|
||||
<input type="radio" id="marktRecptnAgreAtN" value = "N" name="srchMarktRecptnAgreAt" onclick = "fn_change_event('srchMarktRecptnAgreAt')" >
|
||||
<label for="marktRecptnAgreAtN">거부</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>가입일</th>
|
||||
<td colspan="2">
|
||||
<div class="td-inner">
|
||||
<div class="input-container">
|
||||
<%-- 검색 종료일 현재 날짜 --%>
|
||||
<c:set var="today" value="<%=new java.util.Date()%>" />
|
||||
<!-- 검색 조건 시작일 -->
|
||||
<input type="text" name ="sbscrbStrtDt" id="sbscrbStrtDt" class="datepicker"
|
||||
title="시작 날짜 선택" autocomplete="off" onchange = "fn_check_date(sbscrb)">
|
||||
<span class="tilde">~</span>
|
||||
<!-- 검색 조건 종료일 -->
|
||||
<input type="text" name ="sbscrbEndDt" id="sbscrbEndDt" class="datepicker"
|
||||
title="종료 날짜 선택" autocomplete="off" onchange = "fn_check_date(sbscrb)"/>
|
||||
</div>
|
||||
<div class="dateRange-btnContainer">
|
||||
<button class="dateRange-btn"
|
||||
onclick = "fn_set_date('sbscrbStrtDt','sbscrbEndDt','sbscrbEndDt','1D')">어제</button>
|
||||
<button class="dateRange-btn"
|
||||
onclick = "fn_set_date('sbscrbStrtDt','sbscrbEndDt','sbscrbEndDt','0')">오늘</button>
|
||||
<button class="dateRange-btn"
|
||||
onclick = "fn_set_date('sbscrbStrtDt','sbscrbEndDt','sbscrbEndDt','3D')">3일간</button>
|
||||
<button class="dateRange-btn"
|
||||
onclick = "fn_set_date('sbscrbStrtDt','sbscrbEndDt','sbscrbEndDt','7D')">일주일</button>
|
||||
<button class="dateRange-btn"
|
||||
onclick = "fn_set_date('sbscrbStrtDt','sbscrbEndDt','sbscrbEndDt','1M')">1개월</button>
|
||||
<button class="dateRange-btn"
|
||||
onclick = "fn_set_date('sbscrbStrtDt','sbscrbEndDt','sbscrbEndDt','3M')">3개월</button>
|
||||
<button class="dateRange-btn"
|
||||
onclick = "fn_set_date('sbscrbStrtDt','sbscrbEndDt','sbscrbEndDt','6M')">6개월</button>
|
||||
<button class="dateRange-btn"
|
||||
onclick = "fn_set_date('sbscrbStrtDt','sbscrbEndDt','sbscrbEndDt','1Y')">1년</button>
|
||||
<button class="dateRange-btn selected"
|
||||
onclick = "fn_reset_date('sbscrbStrtDt','sbscrbEndDt')">전체</button>
|
||||
</div>
|
||||
<div class="b-checkbox-container inner">
|
||||
<label class="b-checkbox checkbox check checkBtn">
|
||||
<input type="checkbox" id="noVstAt" name="noVstAt" value = "Y">
|
||||
<span class="check"></span>
|
||||
<span class="control-label">재방문 없음</span>
|
||||
</label>
|
||||
<label class="b-checkbox checkbox check checkBtn">
|
||||
<input type="checkbox" id="noOrdrAt" name="noOrdrAt" value = "Y">
|
||||
<span class="check"></span>
|
||||
<span class="control-label">구매 없음</span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>최종방문일</th>
|
||||
<td colspan="2">
|
||||
<div class="td-inner">
|
||||
<div class="input-container">
|
||||
<!-- 검색 조건 시작일 -->
|
||||
<input type="text" name ="loginStrtDt" id="loginStrtDt" class="datepicker"
|
||||
title="시작 날짜 선택" autocomplete="off">
|
||||
<span class="tilde">~</span>
|
||||
<!-- 검색 조건 종료일 -->
|
||||
<input type="text" name ="loginEndDt" id="loginEndDt" class="datepicker"
|
||||
title="종료 날짜 선택" autocomplete="off" pattern="yyyy-MM-dd"/>
|
||||
</div>
|
||||
<div class="dateRange-btnContainer">
|
||||
<button class="dateRange-btn"
|
||||
onclick = "fn_set_date('loginStrtDt','loginEndDt','loginEndDt','1D')">어제</button>
|
||||
<button class="dateRange-btn"
|
||||
onclick = "fn_set_date('loginStrtDt','loginEndDt','loginEndDt','0')">오늘</button>
|
||||
<button class="dateRange-btn"
|
||||
onclick = "fn_set_date('loginStrtDt','loginEndDt','loginEndDt','3D')">3일간</button>
|
||||
<button class="dateRange-btn"
|
||||
onclick = "fn_set_date('loginStrtDt','loginEndDt','loginEndDt','7D')">일주일</button>
|
||||
<button class="dateRange-btn"
|
||||
onclick = "fn_set_date('loginStrtDt','loginEndDt','loginEndDt','1M')">1개월</button>
|
||||
<button class="dateRange-btn"
|
||||
onclick = "fn_set_date('loginStrtDt','loginEndDt','loginEndDt','3M')">3개월</button>
|
||||
<button class="dateRange-btn"
|
||||
onclick = "fn_set_date('loginStrtDt','loginEndDt','loginEndDt','6M')">6개월</button>
|
||||
<button class="dateRange-btn"
|
||||
onclick = "fn_set_date('loginStrtDt','loginEndDt','loginEndDt','1Y')">1년</button>
|
||||
<button class="dateRange-btn selected"
|
||||
onclick = "fn_reset_date('loginStrtDt','loginEndDt')">전체</button>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>마일리지</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<div class="input-container">
|
||||
<input type="text" class="input-text sm right number" value="0"
|
||||
title="검색 시작 마일리지" name = "srchStrtMlg">
|
||||
<span class="input-unit-text">마일리지</span>
|
||||
<span class="tilde">~</span>
|
||||
<input type="text" class="input-text sm right number" value="0"
|
||||
title="검색 끝 마일리지" name = "srchEndMlg">
|
||||
<span class="input-unit-text">마일리지</span>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
<th>리뷰 수</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<div class="input-container">
|
||||
<input type="text" class="input-text sm right number" value="0"
|
||||
title="검색 시작 리뷰 수" name = "srchStrtRvwCnt">
|
||||
<span class="input-unit-text">건</span>
|
||||
<span class="tilde">~</span>
|
||||
<input type="text" class="input-text sm right number" value="0"
|
||||
title="검색 끝 리뷰 수" name = "srchEndRvwCnt">
|
||||
<span class="input-unit-text">건</span>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>장바구니 포함 제품</th>
|
||||
<td colspan = "3">
|
||||
<div class="td-inner">
|
||||
<button class = "btn primary">상품 선택</button>
|
||||
<input type="text" class="input-text xl" title="장바구니 포함 제품" name = "srchCartGoods" placeholder = "상품 고유번호, 상품 고유번호, ...">
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>구매 이력 제품</th>
|
||||
<td colspan = "4">
|
||||
<div class="td-inner">
|
||||
<div class="select-box">
|
||||
<select title="구매 이력 검색 구분" name = "srchPurchsHistDv" id = "srchPurchsHistDv">
|
||||
<option value = "frst">해당 제품 구매 이력 있음</option>
|
||||
<option value = "secn">해당 제품 기간 내 재구매 이력 없음</option>
|
||||
<option value = "no">기간 내 구매 이력 없음</option>
|
||||
</select>
|
||||
</div>
|
||||
<button class = "btn primary">상품 선택</button>
|
||||
<input type="text" class="input-text xl" title="구매 이력 제품" name = "srchPurchsHistGoods" placeholder = "상품 고유번호, 상품 고유번호, ...">
|
||||
<div class="dateRange-btnContainer">
|
||||
<button class="dateRange-btn"
|
||||
onclick = "fn_set_date('loginStrtDt','loginEndDt','loginEndDt','1D')">어제</button>
|
||||
<button class="dateRange-btn"
|
||||
onclick = "fn_set_date('loginStrtDt','loginEndDt','loginEndDt','0')">오늘</button>
|
||||
<button class="dateRange-btn"
|
||||
onclick = "fn_set_date('loginStrtDt','loginEndDt','loginEndDt','3D')">3일간</button>
|
||||
<button class="dateRange-btn"
|
||||
onclick = "fn_set_date('loginStrtDt','loginEndDt','loginEndDt','7D')">일주일</button>
|
||||
<button class="dateRange-btn"
|
||||
onclick = "fn_set_date('loginStrtDt','loginEndDt','loginEndDt','1M')">1개월</button>
|
||||
<button class="dateRange-btn"
|
||||
onclick = "fn_set_date('loginStrtDt','loginEndDt','loginEndDt','3M')">3개월</button>
|
||||
<button class="dateRange-btn"
|
||||
onclick = "fn_set_date('loginStrtDt','loginEndDt','loginEndDt','6M')">6개월</button>
|
||||
<button class="dateRange-btn"
|
||||
onclick = "fn_set_date('loginStrtDt','loginEndDt','loginEndDt','1Y')">1년</button>
|
||||
<button class="dateRange-btn selected"
|
||||
onclick = "fn_reset_date('loginStrtDt','loginEndDt')">전체</button>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>주문 기간</th>
|
||||
<td colspan = "3">
|
||||
<div class="td-inner">
|
||||
<div class="input-container">
|
||||
<input type="text" class="input-text sm right number" value="0"
|
||||
title="검색 시작 주문 금액" name = "srchStrtOrdrAmt">
|
||||
<span class="input-unit-text">원</span>
|
||||
<span class="tilde">~</span>
|
||||
<input type="text" class="input-text sm right number" value="0"
|
||||
title="검색 끝 주문 금액" name = "srchEndOrdrAmt">
|
||||
<span class="input-unit-text">원</span>
|
||||
</div>
|
||||
<div class="input-container">
|
||||
<input type="text" id="srchStrtOrdrAmtDt" class="datepicker" title="시작 날짜 선택" name = "srchStrtOrdrAmtDt"
|
||||
autocomplete="off" >
|
||||
<span class="tilde">~</span>
|
||||
<input type="text" id="srchEndOrdrAmtDt" class="datepicker" title="종료 날짜 선택" name = "srchEndOrdrAmtDt"
|
||||
autocomplete="off" pattern="yyyy-MM-dd"/>
|
||||
</div>
|
||||
<div class="dateRange-btnContainer" id = "searchDateRange">
|
||||
<button class="dateRange-btn" id = "today"
|
||||
onclick = "fn_set_date('srchStrtOrdrAmtDt','srchEndOrdrAmtDt','srchEndOrdrAmtDt','1D')">어제</button>
|
||||
<button class="dateRange-btn" id = "today"
|
||||
onclick = "fn_set_date('srchStrtOrdrAmtDt','srchEndOrdrAmtDt','srchEndOrdrAmtDt','0')">오늘</button>
|
||||
<button class="dateRange-btn" id = "threeDays"
|
||||
onclick = "fn_set_date('srchStrtOrdrAmtDt','srchEndOrdrAmtDt','srchEndOrdrAmtDt','3D')">3일간</button>
|
||||
<button class="dateRange-btn" id = "sevenDays"
|
||||
onclick = "fn_set_date('srchStrtOrdrAmtDt','srchEndOrdrAmtDt','srchEndOrdrAmtDt','7D')">일주일</button>
|
||||
<button class="dateRange-btn" id = "oneMonth"
|
||||
onclick = "fn_set_date('srchStrtOrdrAmtDt','srchEndOrdrAmtDt','srchEndOrdrAmtDt','1M')">1개월</button>
|
||||
<button class="dateRange-btn" id = "threeMonth"
|
||||
onclick = "fn_set_date('srchStrtOrdrAmtDt','srchEndOrdrAmtDt','srchEndOrdrAmtDt','3M')">3개월</button>
|
||||
<button class="dateRange-btn" id = "threeMonth"
|
||||
onclick = "fn_set_date('srchStrtOrdrAmtDt','srchEndOrdrAmtDt','srchEndOrdrAmtDt','6M')">6개월</button>
|
||||
<button class="dateRange-btn" id = "threeMonth"
|
||||
onclick = "fn_set_date('srchStrtOrdrAmtDt','srchEndOrdrAmtDt','srchEndOrdrAmtDt','1Y')">1년</button>
|
||||
<button class="dateRange-btn selected"
|
||||
onclick = "fn_reset_date('srchStrtOrdrAmtDt','srchEndOrdrAmtDt')()">전체</button>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>주문 금액</th>
|
||||
<td colspan = "3">
|
||||
<div class="td-inner">
|
||||
<div class="input-container">
|
||||
<input type="text" class="input-text sm right number" value="0"
|
||||
title="검색 시작 주문 건수" name = "srchStrtOrdrCnt">
|
||||
<span class="input-unit-text">건</span>
|
||||
<span class="tilde">~</span>
|
||||
<input type="text" class="input-text sm right number" value="0"
|
||||
title="검색 끝 주문 건수" name = "srchEndOrdrCnt">
|
||||
<span class="input-unit-text">건</span>
|
||||
</div>
|
||||
<div class="input-container">
|
||||
<input type="text" id="srchStrtOrdrCntDt" class="datepicker" title="시작 날짜 선택" name = "srchStrtOrdrCntDt"
|
||||
autocomplete="off" >
|
||||
<span class="tilde">~</span>
|
||||
<input type="text" id="srchEndOrdrCntDt" class="datepicker" title="종료 날짜 선택" name = "srchEndOrdrCntDt"
|
||||
autocomplete="off" >
|
||||
</div>
|
||||
<div class="dateRange-btnContainer" id = "searchDateRange">
|
||||
<button class="dateRange-btn" id = "today"
|
||||
onclick = "fn_set_date('srchStrtOrdrCntDt','srchEndOrdrCntDt','srchEndOrdrCntDt','1D')">어제</button>
|
||||
<button class="dateRange-btn" id = "today"
|
||||
onclick = "fn_set_date('srchStrtOrdrCntDt','srchEndOrdrCntDt','srchEndOrdrCntDt','0')">오늘</button>
|
||||
<button class="dateRange-btn" id = "threeDays"
|
||||
onclick = "fn_set_date('srchStrtOrdrCntDt','srchEndOrdrCntDt','srchEndOrdrCntDt','3D')">3일간</button>
|
||||
<button class="dateRange-btn" id = "sevenDays"
|
||||
onclick = "fn_set_date('srchStrtOrdrCntDt','srchEndOrdrCntDt','srchEndOrdrCntDt','7D')">일주일</button>
|
||||
<button class="dateRange-btn" id = "oneMonth"
|
||||
onclick = "fn_set_date('srchStrtOrdrCntDt','srchEndOrdrCntDt','srchEndOrdrCntDt','1M')">1개월</button>
|
||||
<button class="dateRange-btn" id = "threeMonth"
|
||||
onclick = "fn_set_date('srchStrtOrdrCntDt','srchEndOrdrCntDt','srchEndOrdrCntDt','3M')">3개월</button>
|
||||
<button class="dateRange-btn" id = "threeMonth"
|
||||
onclick = "fn_set_date('srchStrtOrdrCntDt','srchEndOrdrCntDt','srchEndOrdrCntDt','6M')">6개월</button>
|
||||
<button class="dateRange-btn" id = "threeMonth"
|
||||
onclick = "fn_set_date('srchStrtOrdrCntDt','srchEndOrdrCntDt','srchEndOrdrCntDt','1Y')">1년</button>
|
||||
<button class="dateRange-btn selected"
|
||||
onclick = "fn_reset_date('srchStrtOrdrCntDt','srchEndOrdrCntDt')()">전체</button>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>주문 건수</th>
|
||||
<td colspan = "3">
|
||||
<div class="td-inner">
|
||||
<div class="input-container">
|
||||
<input type="text" class="input-text sm right number" value="0"
|
||||
title="검색 시작 주문 건수" name = "srchStrtOrdrCnt">
|
||||
<span class="input-unit-text">건</span>
|
||||
<span class="tilde">~</span>
|
||||
<input type="text" class="input-text sm right number" value="0"
|
||||
title="검색 끝 주문 건수" name = "srchEndOrdrCnt">
|
||||
<span class="input-unit-text">건</span>
|
||||
</div>
|
||||
<div class="input-container">
|
||||
<input type="text" id="srchStrtOrdrCntDt" class="datepicker" title="시작 날짜 선택" name = "srchStrtOrdrCntDt"
|
||||
autocomplete="off" >
|
||||
<span class="tilde">~</span>
|
||||
<input type="text" id="srchEndOrdrCntDt" class="datepicker" title="종료 날짜 선택" name = "srchEndOrdrCntDt"
|
||||
autocomplete="off" >
|
||||
</div>
|
||||
<div class="dateRange-btnContainer" id = "searchDateRange">
|
||||
<button class="dateRange-btn" id = "today"
|
||||
onclick = "fn_set_date('srchStrtOrdrCntDt','srchEndOrdrCntDt','srchEndOrdrCntDt','1D')">어제</button>
|
||||
<button class="dateRange-btn" id = "today"
|
||||
onclick = "fn_set_date('srchStrtOrdrCntDt','srchEndOrdrCntDt','srchEndOrdrCntDt','0')">오늘</button>
|
||||
<button class="dateRange-btn" id = "threeDays"
|
||||
onclick = "fn_set_date('srchStrtOrdrCntDt','srchEndOrdrCntDt','srchEndOrdrCntDt','3D')">3일간</button>
|
||||
<button class="dateRange-btn" id = "sevenDays"
|
||||
onclick = "fn_set_date('srchStrtOrdrCntDt','srchEndOrdrCntDt','srchEndOrdrCntDt','7D')">일주일</button>
|
||||
<button class="dateRange-btn" id = "oneMonth"
|
||||
onclick = "fn_set_date('srchStrtOrdrCntDt','srchEndOrdrCntDt','srchEndOrdrCntDt','1M')">1개월</button>
|
||||
<button class="dateRange-btn" id = "threeMonth"
|
||||
onclick = "fn_set_date('srchStrtOrdrCntDt','srchEndOrdrCntDt','srchEndOrdrCntDt','3M')">3개월</button>
|
||||
<button class="dateRange-btn" id = "threeMonth"
|
||||
onclick = "fn_set_date('srchStrtOrdrCntDt','srchEndOrdrCntDt','srchEndOrdrCntDt','6M')">6개월</button>
|
||||
<button class="dateRange-btn" id = "threeMonth"
|
||||
onclick = "fn_set_date('srchStrtOrdrCntDt','srchEndOrdrCntDt','srchEndOrdrCntDt','1Y')">1년</button>
|
||||
<button class="dateRange-btn selected"
|
||||
onclick = "fn_reset_date('srchStrtOrdrCntDt','srchEndOrdrCntDt')()">전체</button>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>발송이력</th>
|
||||
<td colspan = "3">
|
||||
<div class="td-inner">
|
||||
<input type="text" class="input-text xml" title="발송 이력" name = "srchSndngHist">
|
||||
<div class="input-container">
|
||||
<input type="text" id="srchStrtOrdrCntDt" class="datepicker" title="시작 날짜 선택" name = "srchStrtSndngHistDt"
|
||||
autocomplete="off" >
|
||||
<span class="tilde">~</span>
|
||||
<input type="text" id="srchEndOrdrCntDt" class="datepicker" title="종료 날짜 선택" name = "srchEndSndngHistDt"
|
||||
autocomplete="off" >
|
||||
</div>
|
||||
<div class="dateRange-btnContainer" id = "searchDateRange">
|
||||
<button class="dateRange-btn" id = "today"
|
||||
onclick = "fn_set_date('srchStrtOrdrCntDt','srchEndOrdrCntDt','srchEndOrdrCntDt','1D')">어제</button>
|
||||
<button class="dateRange-btn" id = "today"
|
||||
onclick = "fn_set_date('srchStrtOrdrCntDt','srchEndOrdrCntDt','srchEndOrdrCntDt','0')">오늘</button>
|
||||
<button class="dateRange-btn" id = "threeDays"
|
||||
onclick = "fn_set_date('srchStrtOrdrCntDt','srchEndOrdrCntDt','srchEndOrdrCntDt','3D')">3일간</button>
|
||||
<button class="dateRange-btn" id = "sevenDays"
|
||||
onclick = "fn_set_date('srchStrtOrdrCntDt','srchEndOrdrCntDt','srchEndOrdrCntDt','7D')">일주일</button>
|
||||
<button class="dateRange-btn" id = "oneMonth"
|
||||
onclick = "fn_set_date('srchStrtOrdrCntDt','srchEndOrdrCntDt','srchEndOrdrCntDt','1M')">1개월</button>
|
||||
<button class="dateRange-btn" id = "threeMonth"
|
||||
onclick = "fn_set_date('srchStrtOrdrCntDt','srchEndOrdrCntDt','srchEndOrdrCntDt','3M')">3개월</button>
|
||||
<button class="dateRange-btn" id = "threeMonth"
|
||||
onclick = "fn_set_date('srchStrtOrdrCntDt','srchEndOrdrCntDt','srchEndOrdrCntDt','6M')">6개월</button>
|
||||
<button class="dateRange-btn" id = "threeMonth"
|
||||
onclick = "fn_set_date('srchStrtOrdrCntDt','srchEndOrdrCntDt','srchEndOrdrCntDt','1Y')">1년</button>
|
||||
<button class="dateRange-btn selected"
|
||||
onclick = "fn_reset_date('srchStrtOrdrCntDt','srchEndOrdrCntDt')()">전체</button>
|
||||
</div>
|
||||
<div class="b-checkbox-container inner">
|
||||
<label class="b-checkbox checkbox check checkBtn">
|
||||
<input type="checkbox" id="sndngHistA" name="sndngHist" value = "" >
|
||||
<span class="check"></span>
|
||||
<span class="control-label mr-5">전체</span>
|
||||
( <input type="checkbox" id="sndngHist" name="sndngHist" value = "Y" >
|
||||
<span class="check"></span>
|
||||
<span class="control-label mr-5">응답자</span>
|
||||
<input type="checkbox" id="sndngHist" name="sndngHist" value = "N">
|
||||
<span class="check"></span>
|
||||
<span class="control-label mr-5">비응답자</span>)
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="form-control-container">
|
||||
<div class="left"></div>
|
||||
<div class="center">
|
||||
<button type = "button" class="btn outline" id = "btnResetForm">초기화</button>
|
||||
<button type = "button" class="btn primary" onclick = "fn_select_list(1)">검색</button>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<div id = "pageDiv">
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,358 @@
|
||||
<%@ 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="ui" uri="http://www.winbit.kr/ctl/ui" %>
|
||||
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
|
||||
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
|
||||
<%@ page import="java.util.Date" %>
|
||||
<%--
|
||||
Class Name : MbrListInqireR.jsp
|
||||
Description : 회원 조회 목록
|
||||
Modification Information
|
||||
|
||||
수정일 수정자 수정내용
|
||||
------- -------- ---------------------------
|
||||
2024-01-15 김혜인 최초 생성
|
||||
--%>
|
||||
<!DOCTYPE html>
|
||||
<html lang="ko">
|
||||
<script>
|
||||
$(document).ready(function(){
|
||||
/******************************
|
||||
* 버튼 이벤트
|
||||
*******************************/
|
||||
/*
|
||||
* 리셀러 해제 (회원 체크)
|
||||
*/
|
||||
$(".resellDel").on("click",function(e){
|
||||
let noAppenArray = [];
|
||||
const appnDvCd = e.target.id;
|
||||
// 해제할 회원수를 체크한다
|
||||
if($('input[name=mbrInnb]:checked').length > 0){
|
||||
$('input[name=mbrInnb]:checked').each(function() {
|
||||
//해제할 회원 중 리셀러 지정안된 회원이 포함되어 있으면 noAppenArray에 추가한다
|
||||
if($(this).siblings("input[name='appnDvCd']").val() == '02'){
|
||||
noAppenArray.push(this.value);
|
||||
}
|
||||
});
|
||||
//지정안된 회원 수 존재 시 안내 문구를 호출한다.
|
||||
if(noAppenArray.length > 0){
|
||||
alert("리셀러 지정이 안된 회원이 포함되어 있습니다.");
|
||||
}else{
|
||||
//지정 사유 작성 모달
|
||||
$("#resnTextArea").val('');
|
||||
$("#resnModal").modal("show");
|
||||
$("#resnTextArea").prop("name","appnCn");
|
||||
$("#resnDv").val(appnDvCd);
|
||||
}
|
||||
}else{
|
||||
//해제할 회원이 체크되지 않으면 안내 문구를 호출한다
|
||||
alert("해제할 리셀러를 지정해주세요.");
|
||||
}
|
||||
});
|
||||
/*
|
||||
* 리셀러 등록 (회원 체크)
|
||||
*/
|
||||
$(".resellReg").on("click",function(e){
|
||||
let appenArray = [];
|
||||
const appnDvCd = e.target.id;
|
||||
|
||||
// 등록할 회원수를 체크한다
|
||||
if($('input[name=mbrInnb]:checked').length > 0){
|
||||
$('input[name=mbrInnb]:checked').each(function() {
|
||||
//등록할 회원 중 리셀러 회원이 포함되어 있으면 appenArray에 추가한다
|
||||
if($(this).siblings("input[name='appnDvCd']").val() == '01'){
|
||||
appenArray.push(this.value);
|
||||
}
|
||||
});
|
||||
//지정안된 회원 수 존재 시 안내 문구를 호출한다.
|
||||
if(appenArray.length > 0){
|
||||
alert("리셀러 회원이 포함되어 있습니다.");
|
||||
}else{
|
||||
//지정 사유 작성 모달
|
||||
$("#resnTextArea").val('');
|
||||
$("#resnModal").modal('show');
|
||||
$("#resnTextArea").prop("name","appnCn");
|
||||
$("#resnDv").val(appnDvCd);
|
||||
}
|
||||
}else{
|
||||
//등록할 회원이 체크되지 않으면 안내 문구를 호출한다
|
||||
alert("리셀러를 지정해주세요.");
|
||||
}
|
||||
});
|
||||
/*
|
||||
* 회원 탈퇴
|
||||
*/
|
||||
$("#withdrawalBtn").on("click",function(e){
|
||||
const withdrawalId = e.target.id;
|
||||
// 탈퇴할 회원수를 체크한다
|
||||
if($('input[name=mbrInnb]:checked').length > 0){
|
||||
//지정 사유 작성 모달
|
||||
$("#resnTextArea").val('');
|
||||
$("#resnModal").modal('show');
|
||||
$("#resnTextArea").prop("name","secsnResn");
|
||||
$("#resnDv").val(withdrawalId);
|
||||
}else{
|
||||
//해제할 회원이 체크되지 않으면 안내 문구를 호출한다
|
||||
alert("탈퇴할 회원을 지정해주세요.");
|
||||
}
|
||||
});
|
||||
//리셀러 해제, 등록, 탈퇴 회원
|
||||
$("#registBtn").on("click",function(){
|
||||
//체크된 회원
|
||||
let mbrArr = [];
|
||||
//사유구분
|
||||
const resnDv = $("#resnDv").val();
|
||||
//사유 내용
|
||||
const resnCn = $("#resnTextArea").val();
|
||||
$('input[name=mbrInnb]:checked').each(function() {
|
||||
mbrArr.push(this.value);
|
||||
});
|
||||
if(resnDv == '02' || resnDv == '01' ){
|
||||
fn_resel_upt(mbrArr,resnDv,resnCn);
|
||||
}else if(resnDv == 'withdrawalBtn'){
|
||||
fn_withdrawal_reg(mbrArr,resnCn);
|
||||
}
|
||||
});
|
||||
//이메일 발송
|
||||
$("#emailSndngBtn").on("click",function(){
|
||||
//체크 혹은 전체mbrInnb 갖고와야함
|
||||
|
||||
/* $.ajax({
|
||||
type: "post",
|
||||
url : "<c:url value='/mngr/Sndng/selectEmailSndngPopupForm'/>",
|
||||
data : fn_get_mbrInnb() ,
|
||||
success:function(html) {
|
||||
$("#modalDiv").show();
|
||||
}
|
||||
}); */
|
||||
});
|
||||
//sms 발송
|
||||
$("#smsSndngBtn").on("click",function(){
|
||||
//체크 혹은 전체mbrInnb 갖고와야함
|
||||
|
||||
/* $.ajax({
|
||||
type: "post",
|
||||
url : "<c:url value='/mngr/Sndng/selectMssageSndngPopupForm'/>",
|
||||
data : fn_get_mbrInnb() ,
|
||||
success:function(html) {
|
||||
$("#modalDiv").show();
|
||||
}
|
||||
}); */
|
||||
});
|
||||
// 테이블 체크박스 전체 선택
|
||||
var tableCheckAll = $(".table .check-all > input[type=checkbox]");
|
||||
tableCheckAll.click(function () {
|
||||
let colIndex = $(this).closest("th").index();
|
||||
let checkbox = $(this)
|
||||
.closest(".table")
|
||||
.find("tbody tr td:nth-child(" + (colIndex + 1) + ") input[type=checkbox]");
|
||||
checkAllCheckBoxes($(this), checkbox);
|
||||
});
|
||||
// 목록에서 체크 해제시 전체 체크박스 해제 및 목록 항목 전체 체크 시 전체체크 버튼 true
|
||||
let chk = $("#mbrList .is-medium >input[type=checkbox]");
|
||||
chk.click(function(){
|
||||
$('.table .check-all > input[type=checkbox]').prop('checked', false);
|
||||
let length = $("tbody .is-medium").length;
|
||||
let chcedLen = $("tbody .is-medium >input[type=checkbox]:checked").length;
|
||||
if(length == chcedLen){
|
||||
$('#mbrList .check-all > input[type=checkbox]').prop('checked', true);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
</script>
|
||||
<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="${ resultListMap.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="recent" <c:if test="${mbrSrchVO.sortDv eq 'recent'}">selected="selected"</c:if>>최근 가입순</option>
|
||||
<option value="mlgDesc" <c:if test="${mbrSrchVO.sortDv eq 'mlgDesc'}">selected="selected"</c:if>>마일리지 많은순</option>
|
||||
<option value="mlgAsc" <c:if test="${mbrSrchVO.sortDv eq 'mlgAsc'}">selected="selected"</c:if>>마일리지 적은순</option>
|
||||
<option value="perchDesc" <c:if test="${mbrSrchVO.sortDv eq 'perchDesc'}">selected="selected"</c:if>>구매금액 많은순</option>
|
||||
<option value="perchAsc" <c:if test="${mbrSrchVO.sortDv eq 'perchAsc'}">selected="selected"</c:if>>구매금액 적은순</option>
|
||||
<option value="ordrCntDesc" <c:if test="${mbrSrchVO.sortDv eq 'ordrCntDesc'}">selected="selected"</c:if>>주문건수 많은순</option>
|
||||
<option value="ordrCntAsc" <c:if test="${mbrSrchVO.sortDv eq 'ordrCntAsc'}">selected="selected"</c:if>>주문건수 적은순</option>
|
||||
<option value="rvwCntDesc" <c:if test="${mbrSrchVO.sortDv eq 'rvwCntDesc'}">selected="selected"</c:if>>리뷰수 많은순</option>
|
||||
<option value="rvwCntAsc" <c:if test="${mbrSrchVO.sortDv eq 'rvwCntAsc'}">selected="selected"</c:if>>리뷰수 적은순</option>
|
||||
<option value="vsitCntDesc" <c:if test="${mbrSrchVO.sortDv eq 'vsitCntDesc'}">selected="selected"</c:if>>방문수 많은순</option>
|
||||
<option value="vsitCntAsc" <c:if test="${mbrSrchVO.sortDv eq 'vsitCntAsc'}">selected="selected"</c:if>>방문수 적은순</option>
|
||||
</select>
|
||||
</div>
|
||||
<!-- 코드 사용 -->
|
||||
<div class="select-box">
|
||||
<select title="페이지당 출력될 목록건수" name = "pageUnit" id ="pageUnit" onchange = "fn_select_list(1);return false;">
|
||||
<c:forEach items="${ resultListMap.paginationInfo.pageUnitArr }" var="pageUnit" varStatus="pageUnitStatus">
|
||||
<option value="<c:out value="${ pageUnit }"/>" <c:if test="${ resultListMap.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">
|
||||
<c:forEach var = "appnDv" items = "${resultListMap.resultMap.appen}">
|
||||
<button type = "button" <c:if test = "${appnDv.cd eq '01'}">class="btn sm dark resellReg"</c:if>
|
||||
<c:if test = "${appnDv.cd eq '02'}">class="btn outline sm resellDel" </c:if>
|
||||
value = "<c:out value = "${appnDv.cdNm}"/>" id = "<c:out value = "${appnDv.cd}"/>">
|
||||
<c:out value = "${appnDv.cdNm}"/>
|
||||
</button>
|
||||
</c:forEach>
|
||||
</div>
|
||||
<div class="center">
|
||||
</div>
|
||||
<div class="right">
|
||||
<button type = "button" class="btn outline sm" id="emailSndngBtn"onclick = "alert('TODO :: 이메일 발송 팝업 호출')">
|
||||
이메일 발송
|
||||
</button>
|
||||
<button type = "button" class="btn outline sm" id ="smsSndngBtn" onclick = "alert('TODO :: sms 발송 팝업 호출')">
|
||||
SMS 발송
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<hr class="spacing">
|
||||
<div class="table-wrapper">
|
||||
<table class="table vertical" id = "mbrList">
|
||||
<caption>회원 목록</caption>
|
||||
<!-- 각 열 width 설정 -->
|
||||
<colgroup>
|
||||
<col style="width: 4%;">
|
||||
<col style="width: 6%;">
|
||||
<col style="width: 10%;">
|
||||
<col style="width: 8%;">
|
||||
<col style="width: auto">
|
||||
<col style="width: auto%;">
|
||||
<col style="width: 6%;">
|
||||
<col style="width: 6%;">
|
||||
<col style="width: 10%;">
|
||||
<col style="width: 10%">
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>
|
||||
<label class="b-checkbox checkbox is-medium check-all" >
|
||||
<input type="checkbox" value="" id = "chkA">
|
||||
<span class="check"></span>
|
||||
</label>
|
||||
</th>
|
||||
<th>번호</th>
|
||||
<th>아이디</th>
|
||||
<th>이름</th>
|
||||
<th>이메일</th>
|
||||
<th>핸드폰번호</th>
|
||||
<th>등급</th>
|
||||
<th>마일리지</th>
|
||||
<th>가입일</th>
|
||||
<th>최종방문 일시</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<c:choose>
|
||||
<c:when test = "${not empty resultListMap.resultMap.resultList}">
|
||||
<c:forEach var = "resultList" items="${resultListMap.resultMap.resultList}">
|
||||
<tr>
|
||||
<td>
|
||||
<label class="b-checkbox checkbox is-medium">
|
||||
<input type="checkbox" value="<c:out value='${resultList.mbrInnb}' />" name = "mbrInnb">
|
||||
<span class="check"></span>
|
||||
<input type="hidden" value ="<c:out value='${resultList.appnDvCd}' />" name = "appnDvCd">
|
||||
</label>
|
||||
</td>
|
||||
<td><c:out value="${resultListMap.paginationInfo.totalRecordCount - resultList.rnum+1 }" /></td>
|
||||
<td>
|
||||
<c:if test = "${resultList.appnDvCd eq '01'}">
|
||||
<span class="black-list">
|
||||
R<span class="visually-hidden">블랙리스트</span>
|
||||
</span>
|
||||
</c:if>
|
||||
<c:out value="${resultList.mbrid}" />
|
||||
</td>
|
||||
<td>
|
||||
<c:out value="${resultList.mbrNm}" />
|
||||
<button type = "button" class="mini-info-btn" data-info="crm${resultList.mbrInnb}" id="crm${resultList.mbrInnb}"
|
||||
onclick = "fn_select_crm_miniInfo(<c:out value='${resultList.mbrInnb}'/>)" >?</button>
|
||||
<div id = "miniInfo"></div>
|
||||
</td>
|
||||
<!-- 이메일 발송 url -->
|
||||
<td>
|
||||
<a class="under-line" onclick = "alert('TODO :: 이메일 발송 팝업 호출')">
|
||||
<c:out value="${resultList.email}" />
|
||||
</a>
|
||||
</td>
|
||||
<!-- sms 발송 url -->
|
||||
<td>
|
||||
<a class="under-line" onclick = "alert('TODO :: sms 발송 팝업 호출')">
|
||||
<c:out value="${resultList.mbtlnb}" />
|
||||
</a>
|
||||
</td>
|
||||
<td><c:out value="${resultList.gradNm}" /></td>
|
||||
<td>
|
||||
<fmt:formatNumber var="mbrMil" value="${resultList.mbrMil}" type="number"/>
|
||||
<button type = "button" class="under-line" onclick = "fn_move_mlgManagePopup('<c:out value='${resultList.mbrInnb}' />')">
|
||||
<c:choose>
|
||||
<c:when test = "${empty mbrMil || mbrMil == '0' }">
|
||||
0
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<c:out value="${mbrMil}" />
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</button>
|
||||
</td>
|
||||
<td><c:out value="${resultList.subscrbDt}" /></td>
|
||||
<fmt:parseDate var="lastLoginDt" value="${resultList.lastLoginDt}" pattern="yyyy-MM-dd'T'HH:mm:ss" />
|
||||
<fmt:formatDate value="${lastLoginDt}" pattern="yyyy-MM-dd" var="lastLoginDt" />
|
||||
<td><c:out value="${lastLoginDt}" /></td>
|
||||
</tr>
|
||||
</c:forEach>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<tr>
|
||||
<td colspan="100%"><spring:message code="common.nodata"/></td>
|
||||
</tr>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</table>
|
||||
<div id = "modalDv">
|
||||
</div>
|
||||
<hr class="spacing">
|
||||
<hr class="spacing">
|
||||
<div class="form-control-container">
|
||||
<div class="left"></div>
|
||||
<div class="center">
|
||||
</div>
|
||||
<div class="right">
|
||||
<button type = "button" class="btn dark no-min" id = "withdrawalBtn">탈퇴</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<div class="pagination__container mt-30">
|
||||
<ui:pagination paginationInfo="${resultListMap.paginationInfo}" type="image" jsFunction="fn_select_list" />
|
||||
</div>
|
||||
<!-- 리셀러 해제, 등록, 탈퇴 사유 모달 -->
|
||||
<div id="resnModal" class="modal" style="max-width: 500px;">
|
||||
<div class="modal-header">
|
||||
<h4>사유 작성</h4>
|
||||
</div>
|
||||
<div class="modal-content">
|
||||
<div class="table-wrapper">
|
||||
<textarea id = "resnTextArea"class="textarea" title="리셀러 해제, 등록, 탈퇴 사유" rows="10"></textarea>
|
||||
</div>
|
||||
<input type = "hidden" id = "resnDv" disabled>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<a href="#" rel="modal:close" class="btn outline"><spring:message code="button.cancel"/></a>
|
||||
<button class="btn primary outline" id = "registBtn" ><spring:message code="button.insert"/></button>
|
||||
</div>
|
||||
</div>
|
||||
</html>
|
||||
@@ -0,0 +1,714 @@
|
||||
<%@ 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="ui" uri="http://www.winbit.kr/ctl/ui" %>
|
||||
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
|
||||
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
|
||||
<%@ page import="java.util.Date" %>
|
||||
<%--
|
||||
Class Name : MbrListInqireRForm.jsp
|
||||
Description :회원 목록 검색 폼
|
||||
Modification Information
|
||||
|
||||
수정일 수정자 수정내용
|
||||
------- -------- ---------------------------
|
||||
2024-01-15 김혜인 최초 생성
|
||||
--%>
|
||||
<!DOCTYPE html>
|
||||
<html lang="ko">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>회원 목록 조회</title>
|
||||
<%-- 공통 include --%>
|
||||
<%@ include file="/WEB-INF/views/comm/mngr/Include.jsp"%>
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function(){
|
||||
//상세 검색 hide
|
||||
var searchHide = $(".search-hide");
|
||||
searchHide.hide();
|
||||
fn_init();
|
||||
//페이징 정보 있는 회원 목록 조회
|
||||
let pageIndex = '<c:out value="${ resultSrchMap.mbrSrchvo.pageIndex }"/>';
|
||||
let pageUnit = '<c:out value="${ resultSrchMap.mbrSrchvo.pageUnit }"/>';
|
||||
fn_select_list(pageIndex, pageUnit);
|
||||
|
||||
fn_set_date('sbscrbStrtDt','sbscrbEndDt','sbscrbEndDt');
|
||||
fn_set_date('loginStrtDt','loginEndDt','loginEndDt');
|
||||
fn_set_date('srchStrtOrdrAmtDt','srchEndOrdrAmtDt','srchEndOrdrAmtDt');
|
||||
fn_set_date('srchStrtOrdrCntDt','srchEndOrdrCntDt','srchEndOrdrCntDt');
|
||||
|
||||
//검색어 구분 change 이벤트
|
||||
$("#srchKyword").on("input", function () {
|
||||
let dvVal = $("#srchKywordDv").val();
|
||||
let input = $(this).val();
|
||||
if(dvVal == 'hp'){
|
||||
$(this).val(input.replace(/[^0-9]/g, ""));
|
||||
}
|
||||
});
|
||||
//마케팅 수신 동의 동의 버튼 외 버튼에서 브랜드 전체 버튼 클릭 시 동의 버튼으로 바꿈
|
||||
$(".checkBtn").on("click",function(){
|
||||
$("#marktRecptnAgreAtY").prop("checked",true);
|
||||
});
|
||||
});
|
||||
/*******************************************
|
||||
검색 조건 이벤트 설정
|
||||
********************************************/
|
||||
/*
|
||||
* 검색조건 > 날짜 전체 클릭 시 날짜 설정 초기화
|
||||
*/
|
||||
const fn_reset_date = function(strtDate,endDate){
|
||||
$('#'+strtDate).datepicker().datepicker("setDate",'');
|
||||
$('#'+endDate).datepicker().datepicker("setDate",'');
|
||||
}
|
||||
/*
|
||||
* 검색조건 > 상세 검색 버튼 클릭 시 disable 처리 미완
|
||||
*/
|
||||
const fn_disable_srchInput = function(){
|
||||
$(".search-hide > input").prop("disbled",true);
|
||||
|
||||
}
|
||||
|
||||
/*
|
||||
* 검색조건 > 마케팅 수신 동의 체크시 브랜드 전체 체크
|
||||
*/
|
||||
function fn_change_event(_target) {
|
||||
let readId = $('[name=' + _target + ']:checked').attr('id');
|
||||
if (readId == 'marktRecptnAgreAtY') {
|
||||
$('.checkBtn').prop('checked', true);
|
||||
}else if(readId == 'marktRecptnAgreAtA' || readId == 'marktRecptnAgreAtN'){
|
||||
$('.checkBtn').prop('checked', false);
|
||||
}
|
||||
};
|
||||
/*
|
||||
* 검색조건 >한 개 브랜드라도 체크 해제시 전체체크 체크 해제
|
||||
*/
|
||||
function fn_change_prop_uncheck(_target) {
|
||||
let readId = $('[name=' + _target + ']:checked').attr('id');
|
||||
if(!readId.checked){
|
||||
$('#checkAll').prop('checked', false);
|
||||
}
|
||||
};
|
||||
|
||||
/*
|
||||
* 검색조건 >한 개 브랜드라도 체크 해제시 전체체크 체크 해제
|
||||
*/
|
||||
function fn_change_prop_unclick(_target){
|
||||
let readId = $('[name=' + _target + ']:checked').attr('id');
|
||||
// 라디오 버튼 전체 혹은 거부에 버튼 클릭 후 브랜드 선택 시 동의로 버튼 변경
|
||||
if(readId != 'marktRecptnAgreAtY'){
|
||||
$('#marktRecptnAgreAtY').prop('checked', true);
|
||||
}
|
||||
}
|
||||
function fn_init () {
|
||||
/*
|
||||
* 검색조건 > 초기화 버튼 클릭 이벤트
|
||||
*/
|
||||
$('#btnResetForm').on('click', function(){
|
||||
fn_reset_form('mbrSrchSection');
|
||||
|
||||
$('#srchKywordDv option:eq(0)').prop('selected', true);
|
||||
$('#srchKywordDv').niceSelect('update');
|
||||
|
||||
$('#srchGradInnb option:eq(0)').prop('selected', true);
|
||||
$('#srchGradInnb').niceSelect('update');
|
||||
|
||||
$('#vstRvwDv option:eq(0)').prop('selected', true);
|
||||
$('#vstRvwDv').niceSelect('update');
|
||||
|
||||
$('input[name="srchStrtOrdrAmt"]').val('0');
|
||||
$('input[name="srchEndOrdrAmt"]').val('0');
|
||||
|
||||
$('input[name="srchStrtOrdrCnt"]').val('0');
|
||||
$('input[name="srchEndOrdrCnt"]').val('0');
|
||||
|
||||
$('input[name="srchStrtMlg"]').val('0');
|
||||
$('input[name="srchEndMlg"]').val('0');
|
||||
|
||||
$('input[name="srchStrtVstRvwCnt"]').val('0');
|
||||
$('input[name="srchEndVstRvwCnt"]').val('0');
|
||||
|
||||
$('input[name="srchStrtBrthDe"]').val('0');
|
||||
$('input[name="srchEndBrthDe"]').val('0');
|
||||
});
|
||||
}
|
||||
/***********************************************
|
||||
* 리셀러 해제 , 등록 함수
|
||||
***********************************************/
|
||||
const fn_resel_upt = function(mbrArray,appnDvCd,resnCn){
|
||||
let url = "";
|
||||
let confirmMessage = "";
|
||||
//해제, 등록 url 분기
|
||||
if(appnDvCd == 'CGN03802'){
|
||||
url = "<c:url value='/mngr/mbr/updateMbrRslrRelis'/>"
|
||||
confirmMessage = "리셀러 해제를"
|
||||
}else if(appnDvCd == 'CGN03801'){
|
||||
url = "<c:url value='/mngr/mbr/updateMbrRslrMvmn'/>"
|
||||
confirmMessage = "리셀러 지정을"
|
||||
}
|
||||
if(confirm(confirmMessage+' <spring:message code="confirm.common.insert"/>')){
|
||||
$.ajax({
|
||||
type: "post",
|
||||
url : url,
|
||||
data : {
|
||||
mbrArr : mbrArray
|
||||
,appnDvCd : appnDvCd
|
||||
,appnCn : resnCn
|
||||
},
|
||||
success:function(resultHtml) {
|
||||
alert("<spring:message code="success.common.insert"/>");
|
||||
$("#resnModal > a").each(function() {
|
||||
if(this.href.indexOf('#close-modal')){
|
||||
$(this).click();
|
||||
}
|
||||
});
|
||||
$("#resnModal").remove();
|
||||
fn_select_list($("#pageIndex").val(),$("#pageUnit").val());
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
/***********************************************
|
||||
* 회원 탈퇴 함수
|
||||
***********************************************/
|
||||
const fn_withdrawal_reg = function(mbrArr,resnCn){
|
||||
if(confirm('회원 탈퇴를 <spring:message code="confirm.common.insert"/>')){
|
||||
$.ajax({
|
||||
type: "post",
|
||||
url : "<c:url value='/mngr/mbr/updateMbrSecsnUpdt'/>",
|
||||
data : {
|
||||
mbrArr : mbrArr
|
||||
,secsnResn : resnCn
|
||||
},
|
||||
success:function(resultHtml) {
|
||||
alert("<spring:message code="success.common.insert"/>");
|
||||
$("#resnModal > a").each(function() {
|
||||
if(this.href.indexOf('#close-modal')){
|
||||
$(this).click();
|
||||
}
|
||||
});
|
||||
$("#resnModal").remove();
|
||||
fn_select_list(1);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
/* ********************************************************
|
||||
* 목록 조회 function
|
||||
******************************************************** */
|
||||
//회원 목록 조회(ajax)
|
||||
const fn_select_list = function(pageIndex, pageUnit) {
|
||||
let dataStr;
|
||||
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/mbr/selectMbrListInqire'/>",
|
||||
data : dataStr,
|
||||
success:function(resultHtml) {
|
||||
$('#pageDiv').html(resultHtml);
|
||||
$('#pageUnit').niceSelect();
|
||||
$('#sortDv').niceSelect();
|
||||
}
|
||||
});
|
||||
}
|
||||
//검색 엔터 클릭시 목록 조회
|
||||
document.addEventListener('keydown', function(event) {
|
||||
if (event.keyCode === 13) {
|
||||
event.preventDefault();
|
||||
//모달창 visible 여부로 몪록 조회 혹은 사유 내용 등록 이벤트 처리
|
||||
if(!$("#resnModal").is(":visible")){
|
||||
fn_select_list(1);
|
||||
}else{
|
||||
$("#registBtn").click();
|
||||
}
|
||||
}
|
||||
});
|
||||
//마일리지 모달
|
||||
const fn_move_mlgManagePopup = function(mbrInnb){
|
||||
$.ajax({
|
||||
type: "post",
|
||||
url : "<c:url value='/mngr/mbr/selectMlgManagePopupForm'/>",
|
||||
data : {mbrInnb:mbrInnb},
|
||||
success:function(resultHtml) {
|
||||
$('#MlgMabagePopup').remove();
|
||||
$('#modalDiv').html(resultHtml);
|
||||
$("#MlgMabagePopup").modal("show");
|
||||
$("#mlgApplcCnDv").niceSelect();
|
||||
$("#mlgApplcResn").niceSelect();
|
||||
}
|
||||
});
|
||||
}
|
||||
//마일리지 내역 목록 조회(ajax)
|
||||
const fn_select_mlgList = function(pageIndex, pageUnit) {
|
||||
let dataStr;
|
||||
if(!pageIndex) {
|
||||
$('#mlgPageIndex').val(1);
|
||||
} else {
|
||||
$('#mlgPageIndex').val(pageIndex);
|
||||
}
|
||||
|
||||
if(!pageUnit) {
|
||||
dataStr = $('#mlgListForm').serialize();
|
||||
} else {
|
||||
if($('#mlgPageIndex').length){
|
||||
$('#mlgPageUnit').val(pageUnit);
|
||||
dataStr = $('#mlgListForm').serialize();
|
||||
} else {
|
||||
dataStr = $('#mlgListForm').serialize()+'&pageUnit='+pageUnit;
|
||||
}
|
||||
}
|
||||
$.ajax({
|
||||
type: "post",
|
||||
url : "<c:url value='/mngr/mbr/selectMlgManagePopup'/>",
|
||||
data : dataStr,
|
||||
success:function(resultHtml) {
|
||||
$('#mlgDtlDiv').html(resultHtml);
|
||||
$('#mlgPageUnit').niceSelect();
|
||||
fn_set_niceSelect_datePicker("#mlgListForm");
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/* 버튼 타입 button으로 일괄 적용
|
||||
* ready함수에 선언
|
||||
*/
|
||||
const fn_apply_btnTy_button = () => {
|
||||
let button = $(document).find('button');
|
||||
button.attr("type","button");
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<%-- 상단메뉴 공통화 적용 : 2023-11-30 / 박철민 추가 --%>
|
||||
<%@ include file="/WEB-INF/views/comm/mngr/Header.jsp"%>
|
||||
<main class="main">
|
||||
<%-- 좌측메뉴 공통화 적용 : 2023-11-30 / 박철민 추가 --%>
|
||||
<%@ 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>
|
||||
<form id = "listForm">
|
||||
<section class="content-section" id = "mbrSrchSection">
|
||||
<input type="hidden" id="pageIndex" name="pageIndex" value="${ resultSrchMap.boMbrSrchVO.pageIndex}"/>
|
||||
<div class="table-wrapper">
|
||||
<table class="table">
|
||||
<caption>회원 검색</caption>
|
||||
<colgroup>
|
||||
<col style="width: 12%;">
|
||||
<col>
|
||||
</colgroup>
|
||||
<tr>
|
||||
<th>검색어</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<div class="select-box">
|
||||
<select title="검색어 구분" name = "srchKywordDv" id = "srchKywordDv">
|
||||
<option value="mbrNm">이름</option>
|
||||
<option value="mbrId">아이디</option>
|
||||
<option value="email">이메일</option>
|
||||
<option value="hp">휴대폰번호("-"미포함)</option>
|
||||
<option value="adres">주소</option>
|
||||
</select>
|
||||
</div>
|
||||
<input class="input-text xl" type="text" title="검색 키워드" id = "srchKyword" name = "srchKyword" placeholder = "검색어를 입력해 주십시요.">
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>가입일</th>
|
||||
<td colspan="2">
|
||||
<div class="td-inner" id = "g">
|
||||
<div class="input-container">
|
||||
<!-- 검색 조건 시작일 -->
|
||||
<input type="text" name ="sbscrbStrtDt" id="sbscrbStrtDt" class="datepicker" title="시작 날짜 선택" autocomplete="off">
|
||||
<span class="tilde">~</span>
|
||||
<!-- 검색 조건 종료일 -->
|
||||
<input type="text" name ="sbscrbEndDt" id="sbscrbEndDt" class="datepicker" title="종료 날짜 선택" autocomplete="off" pattern="yyyy-MM-dd"/>
|
||||
</div>
|
||||
<div class="dateRange-btnContainer">
|
||||
<button class="dateRange-btn"
|
||||
onclick = "fn_set_date('sbscrbStrtDt','sbscrbEndDt','sbscrbEndDt','1D')">어제</button>
|
||||
<button class="dateRange-btn"
|
||||
onclick = "fn_set_date('sbscrbStrtDt','sbscrbEndDt','sbscrbEndDt','0')">오늘</button>
|
||||
<button class="dateRange-btn"
|
||||
onclick = "fn_set_date('sbscrbStrtDt','sbscrbEndDt','sbscrbEndDt','3D')">3일간</button>
|
||||
<button class="dateRange-btn"
|
||||
onclick = "fn_set_date('sbscrbStrtDt','sbscrbEndDt','sbscrbEndDt','7D')">일주일</button>
|
||||
<button class="dateRange-btn"
|
||||
onclick = "fn_set_date('sbscrbStrtDt','sbscrbEndDt','sbscrbEndDt','1M')">1개월</button>
|
||||
<button class="dateRange-btn"
|
||||
onclick = "fn_set_date('sbscrbStrtDt','sbscrbEndDt','sbscrbEndDt','3M')">3개월</button>
|
||||
<button class="dateRange-btn"
|
||||
onclick = "fn_set_date('sbscrbStrtDt','sbscrbEndDt','sbscrbEndDt','6M')">6개월</button>
|
||||
<button class="dateRange-btn"
|
||||
onclick = "fn_set_date('sbscrbStrtDt','sbscrbEndDt','sbscrbEndDt','1Y')">1년</button>
|
||||
<button class="dateRange-btn"
|
||||
onclick = "fn_reset_date('sbscrbStrtDt','sbscrbEndDt')">전체</button>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>최종방문일</th>
|
||||
<td colspan="2">
|
||||
<div class="td-inner">
|
||||
<div class="input-container">
|
||||
<!-- 검색 조건 시작일 -->
|
||||
<input type="text" name ="loginStrtDt" id="loginStrtDt" class="datepicker"
|
||||
title="시작 날짜 선택" autocomplete="off">
|
||||
<span class="tilde">~</span>
|
||||
<!-- 검색 조건 종료일 -->
|
||||
<input type="text" name ="loginEndDt" id="loginEndDt" class="datepicker"
|
||||
title="종료 날짜 선택" autocomplete="off" pattern="yyyy-MM-dd"/>
|
||||
</div>
|
||||
<div class="dateRange-btnContainer">
|
||||
<button class="dateRange-btn"
|
||||
onclick = "fn_set_date('loginStrtDt','loginEndDt','loginEndDt','1D')">어제</button>
|
||||
<button class="dateRange-btn"
|
||||
onclick = "fn_set_date('loginStrtDt','loginEndDt','loginEndDt','0')">오늘</button>
|
||||
<button class="dateRange-btn"
|
||||
onclick = "fn_set_date('loginStrtDt','loginEndDt','loginEndDt','3D')">3일간</button>
|
||||
<button class="dateRange-btn"
|
||||
onclick = "fn_set_date('loginStrtDt','loginEndDt','loginEndDt','7D')">일주일</button>
|
||||
<button class="dateRange-btn"
|
||||
onclick = "fn_set_date('loginStrtDt','loginEndDt','loginEndDt','1M')">1개월</button>
|
||||
<button class="dateRange-btn"
|
||||
onclick = "fn_set_date('loginStrtDt','loginEndDt','loginEndDt','3M')">3개월</button>
|
||||
<button class="dateRange-btn"
|
||||
onclick = "fn_set_date('loginStrtDt','loginEndDt','loginEndDt','3M')">6개월</button>
|
||||
<button class="dateRange-btn"
|
||||
onclick = "fn_set_date('loginStrtDt','loginEndDt','loginEndDt','1Y')">1년</button>
|
||||
<button class="dateRange-btn"
|
||||
onclick = "fn_reset_date('loginStrtDt','loginEndDt')">전체</button>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>등급</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<div class="select-box">
|
||||
<select title="등급검색" name = "srchGradInnb" id = "srchGradInnb">
|
||||
<option value = "">선택</option>
|
||||
<c:forEach var="gradNm" items = "${resultSrchMap.code.gradNm}" >
|
||||
<option value="${gradNm.mbrGradInnb}"><c:out value = "${gradNm.gradNm}"/></option>
|
||||
</c:forEach>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="search-hide">
|
||||
<th>주문 금액</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<div class="input-container">
|
||||
<input type="text" class="input-text sm right number" value="0"
|
||||
title="검색 시작 주문 금액" name = "srchStrtOrdrAmt" id = 'srchStrtOrdrAmt'>
|
||||
<span class="input-unit-text">원</span>
|
||||
<span class="tilde">~</span>
|
||||
<input type="text" class="input-text sm right number" value="0" onchange = "fn_check_fromTo('#srchStrtOrdrAmt','#srchEndOrdrAmt','number')"
|
||||
title="검색 끝 주문 금액" name = "srchEndOrdrAmt" id = 'srchEndOrdrAmt'>
|
||||
<span class="input-unit-text">원</span>
|
||||
</div>
|
||||
<div class="input-container">
|
||||
<input type="text" id="srchStrtOrdrAmtDt" class="datepicker" title="시작 날짜 선택" name = "srchStrtOrdrAmtDt"
|
||||
autocomplete="off" >
|
||||
<span class="tilde">~</span>
|
||||
<input type="text" id="srchEndOrdrAmtDt" class="datepicker" title="종료 날짜 선택" name = "srchEndOrdrAmtDt"
|
||||
autocomplete="off" pattern="yyyy-MM-dd"/>
|
||||
</div>
|
||||
<div class="dateRange-btnContainer" id = "searchDateRange">
|
||||
<button class="dateRange-btn" id = "today"
|
||||
onclick = "fn_set_date('srchStrtOrdrAmtDt','srchEndOrdrAmtDt','srchEndOrdrAmtDt','1D')">어제</button>
|
||||
<button class="dateRange-btn" id = "today"
|
||||
onclick = "fn_set_date('srchStrtOrdrAmtDt','srchEndOrdrAmtDt','srchEndOrdrAmtDt','0')">오늘</button>
|
||||
<button class="dateRange-btn" id = "threeDays"
|
||||
onclick = "fn_set_date('srchStrtOrdrAmtDt','srchEndOrdrAmtDt','srchEndOrdrAmtDt','3D')">3일간</button>
|
||||
<button class="dateRange-btn" id = "sevenDays"
|
||||
onclick = "fn_set_date('srchStrtOrdrAmtDt','srchEndOrdrAmtDt','srchEndOrdrAmtDt','7D')">일주일</button>
|
||||
<button class="dateRange-btn" id = "oneMonth"
|
||||
onclick = "fn_set_date('srchStrtOrdrAmtDt','srchEndOrdrAmtDt','srchEndOrdrAmtDt','1M')">1개월</button>
|
||||
<button class="dateRange-btn" id = "threeMonth"
|
||||
onclick = "fn_set_date('srchStrtOrdrAmtDt','srchEndOrdrAmtDt','srchEndOrdrAmtDt','3M')">3개월</button>
|
||||
<button class="dateRange-btn" id = "threeMonth"
|
||||
onclick = "fn_set_date('srchStrtOrdrAmtDt','srchEndOrdrAmtDt','srchEndOrdrAmtDt','6M')">6개월</button>
|
||||
<button class="dateRange-btn" id = "threeMonth"
|
||||
onclick = "fn_set_date('srchStrtOrdrAmtDt','srchEndOrdrAmtDt','srchEndOrdrAmtDt','1Y')">1년</button>
|
||||
<button class="dateRange-btn"
|
||||
onclick = "fn_reset_date('srchStrtOrdrAmtDt','srchEndOrdrAmtDt')()">전체</button>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="search-hide">
|
||||
<th>주문 건수</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<div class="input-container">
|
||||
<input type="text" class="input-text sm right number" value="0"
|
||||
title="검색 시작 주문 건수" name = "srchStrtOrdrCnt" id = "srchStrtOrdrCnt">
|
||||
<span class="input-unit-text">건</span>
|
||||
<span class="tilde">~</span>
|
||||
<input type="text" class="input-text sm right number" value="0" onchange = "fn_check_fromTo('#srchStrtOrdrCnt','#srchEndOrdrCnt','number')"
|
||||
title="검색 끝 주문 건수" name = "srchEndOrdrCnt" id = "srchEndOrdrCnt">
|
||||
<span class="input-unit-text">건</span>
|
||||
</div>
|
||||
<div class="input-container">
|
||||
<input type="text" id="srchStrtOrdrCntDt" class="datepicker" title="시작 날짜 선택" name = "srchStrtOrdrCntDt"
|
||||
autocomplete="off" >
|
||||
<span class="tilde">~</span>
|
||||
<input type="text" id="srchEndOrdrCntDt" class="datepicker" title="종료 날짜 선택" name = "srchEndOrdrCntDt"
|
||||
autocomplete="off" >
|
||||
</div>
|
||||
<div class="dateRange-btnContainer" id = "searchDateRange">
|
||||
<button class="dateRange-btn" id = "today"
|
||||
onclick = "fn_set_date('srchStrtOrdrCntDt','srchEndOrdrCntDt','srchEndOrdrCntDt','1D')">어제</button>
|
||||
<button class="dateRange-btn" id = "today"
|
||||
onclick = "fn_set_date('srchStrtOrdrCntDt','srchEndOrdrCntDt','srchEndOrdrCntDt','0')">오늘</button>
|
||||
<button class="dateRange-btn" id = "threeDays"
|
||||
onclick = "fn_set_date('srchStrtOrdrCntDt','srchEndOrdrCntDt','srchEndOrdrCntDt','3D')">3일간</button>
|
||||
<button class="dateRange-btn" id = "sevenDays"
|
||||
onclick = "fn_set_date('srchStrtOrdrCntDt','srchEndOrdrCntDt','srchEndOrdrCntDt','7D')">일주일</button>
|
||||
<button class="dateRange-btn" id = "oneMonth"
|
||||
onclick = "fn_set_date('srchStrtOrdrCntDt','srchEndOrdrCntDt','srchEndOrdrCntDt','1M')">1개월</button>
|
||||
<button class="dateRange-btn" id = "threeMonth"
|
||||
onclick = "fn_set_date('srchStrtOrdrCntDt','srchEndOrdrCntDt','srchEndOrdrCntDt','3M')">3개월</button>
|
||||
<button class="dateRange-btn" id = "threeMonth"
|
||||
onclick = "fn_set_date('srchStrtOrdrCntDt','srchEndOrdrCntDt','srchEndOrdrCntDt','6M')">6개월</button>
|
||||
<button class="dateRange-btn" id = "threeMonth"
|
||||
onclick = "fn_set_date('srchStrtOrdrCntDt','srchEndOrdrCntDt','srchEndOrdrCntDt','1Y')">1년</button>
|
||||
<button class="dateRange-btn"
|
||||
onclick = "fn_reset_date('srchStrtOrdrCntDt','srchEndOrdrCntDt')()">전체</button>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="search-hide">
|
||||
<th>마일리지</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<div class="input-container">
|
||||
<input type="text" class="input-text sm right number" value="0"
|
||||
title="검색 시작 마일리지" name = "srchStrtMlg" id = "srchStrtMlg">
|
||||
<span class="input-unit-text">마일리지</span>
|
||||
<span class="tilde">~</span>
|
||||
<input type="text" class="input-text sm right number" value="0" onchange = "fn_check_fromTo('#srchStrtMlg','#srchEndMlg','number')"
|
||||
title="검색 끝 마일리지" name = "srchEndMlg" id = "srchEndMlg">
|
||||
<span class="input-unit-text">마일리지</span>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="search-hide">
|
||||
<th>방문 / 리뷰 수</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<div class="select-box">
|
||||
<select title="방문수, 리뷰 수 검색 구분" name = "vstRvwDv" id = "vstRvwDv">
|
||||
<option value="vsitCnt">방문수</option>
|
||||
<option value="rvwCnt">리뷰수</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="input-container">
|
||||
<input type="text" class="input-text sm right number" value="0"
|
||||
title="검색 시작 방문수, 리뷰 수" name = "srchStrtVstRvwCnt" id = "srchStrtVstRvwCnt">
|
||||
<span class="input-unit-text">회</span>
|
||||
<span class="tilde">~</span>
|
||||
<input type="text" class="input-text sm right number" value="0" onchange = "fn_check_fromTo('#srchStrtVstRvwCnt','#srchEndVstRvwCnt','number')"
|
||||
title="검색 끝 방문수, 리뷰 수" name = "srchEndVstRvwCnt" id = "srchEndVstRvwCnt">
|
||||
<span class="input-unit-text">회</span>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="search-hide">
|
||||
<th rowspan = "2">회원가입 환경</th>
|
||||
<td rowspan>
|
||||
<div class="td-inner">
|
||||
<div class="custom-radio-container">
|
||||
<div class="custom-radio">
|
||||
<input type="radio" id="srchPlatformAll" value = "" name="srchPlatform" checked>
|
||||
<label for="srchPlatformAll">전체</label>
|
||||
</div>
|
||||
<c:forEach var = "platform" items = "${resultSrchMap.code.platform}">
|
||||
<div class="custom-radio">
|
||||
<input type="radio" id="${platform.cd}" name="srchPlatform" value = "${platform.cd}">
|
||||
<label for="${platform.cd}">${platform.cdNm}</label>
|
||||
</div>
|
||||
</c:forEach>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="search-hide">
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<div class="custom-radio-container">
|
||||
<c:forEach var = "brand" items = "${resultSrchMap.code.brand}">
|
||||
<div class="custom-radio">
|
||||
<input type="radio" id="platform${brand.cd}" name="srchPlatform" value = "${brand.cd}">
|
||||
<label for="platform${brand.cd}">${brand.cdNm}</label>
|
||||
</div>
|
||||
</c:forEach>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="search-hide">
|
||||
<th>회원가입 방법</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<div class="custom-radio-container">
|
||||
<div class="custom-radio">
|
||||
<input type="radio" id="srchruteA" name="srchrute" value = "" checked>
|
||||
<label for="srchruteA">전체</label>
|
||||
</div>
|
||||
<c:forEach var = "rute" items = "${resultSrchMap.code.rute}">
|
||||
<div class="custom-radio">
|
||||
<input type="radio" id="${rute.cd}" name="srchrute" value = "${rute.cd}">
|
||||
<label for="${rute.cd}">${rute.cdNm}</label>
|
||||
</div>
|
||||
</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="marktRecptnAgreAtA" name = "srchMarktRecptnAgreAt" value = "" onclick = "fn_change_event('srchMarktRecptnAgreAt')" checked>
|
||||
<label for="marktRecptnAgreAtA">전체</label>
|
||||
</div>
|
||||
<div class="custom-radio">
|
||||
<input type="radio" id="marktRecptnAgreAtY" value = "Y" name="srchMarktRecptnAgreAt" onclick = "fn_change_event('srchMarktRecptnAgreAt')">
|
||||
<label for="marktRecptnAgreAtY">동의</label>
|
||||
</div>
|
||||
<span class="parentheses">(</span>
|
||||
<div class="b-checkbox-container inner">
|
||||
<label class="b-checkbox checkbox check-all">
|
||||
<input type="checkbox" value="" class = "checkBtn" id = "checkAll">
|
||||
<span class="check"></span>
|
||||
<span class="control-label">전체</span>
|
||||
</label>
|
||||
<c:forEach var = "brand" items = "${resultSrchMap.code.brand}">
|
||||
<label class="b-checkbox checkbox check checkBtn">
|
||||
<input type="checkbox" id="markt${brand.cd}" name="srchBrand" value = "${brand.cd}" class = "checkBtn" onclick = "fn_change_prop_uncheck('srchBrand');fn_change_prop_unclick('srchMarktRecptnAgreAt')">
|
||||
<span class="check"></span>
|
||||
<span class="control-label">${brand.cdNm}</span>
|
||||
</label>
|
||||
</c:forEach>
|
||||
</div>
|
||||
<span class="parentheses">)</span>
|
||||
<div class="custom-radio">
|
||||
<input type="radio" id="marktRecptnAgreAtN" value = "N" name="srchMarktRecptnAgreAt" onclick = "fn_change_event('srchMarktRecptnAgreAt')" >
|
||||
<label for="marktRecptnAgreAtN">거부</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="search-hide">
|
||||
<th>성별</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<div class="custom-radio-container">
|
||||
<div class="custom-radio">
|
||||
<input type="radio" id="sexDstnA" name="srchSexDstn" value = "" checked>
|
||||
<label for="sexDstnA">전체</label>
|
||||
</div>
|
||||
<c:forEach var = "sexDstn" items = "${resultSrchMap.code.sexDstn}">
|
||||
<div class="custom-radio">
|
||||
<input type="radio" id="sex${sexDstn.cd}" value = "${sexDstn.cd}" name="srchSexDstn">
|
||||
<label for="sex${sexDstn.cd}"><c:out value = "${sexDstn.cdNm}"/></label>
|
||||
</div>
|
||||
</c:forEach>
|
||||
<div class="custom-radio">
|
||||
<input type="radio" id="sexDstnN" value = "none" name="srchSexDstn">
|
||||
<label for="sexDstnN">성별없음</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="search-hide">
|
||||
<th>나이</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<div class="input-container">
|
||||
<span class="input-unit-text left">만</span>
|
||||
<input type="text" class="input-text xsm right number" value="0"
|
||||
title="나이 검색 시작" name = "srchStrtBrthDe" id = "srchStrtBrthDe">
|
||||
<span class="input-unit-text">세</span>
|
||||
<span class="tilde">~</span>
|
||||
<input type="text" class="input-text xsm right number" value="0" onchange = "fn_check_fromTo('#srchStrtBrthDe','#srchEndBrthDe','number')"
|
||||
title="나이 검색 종료" name = "srchEndBrthDe" id = "srchEndBrthDe">
|
||||
<span class="input-unit-text">세</span>
|
||||
</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="appenA" name="srchAppen" value = "" checked>
|
||||
<label for="appenA">전체</label>
|
||||
</div>
|
||||
<c:forEach var = "appen" items = "${resultSrchMap.code.appen}">
|
||||
<div class="custom-radio">
|
||||
<input type="radio" id="${appen.cd}" name="srchAppen" value = "${appen.cd}">
|
||||
<label for="${appen.cd}">${appen.cdNm}</label>
|
||||
</div>
|
||||
</c:forEach>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="form-control-container">
|
||||
<div class="left"></div>
|
||||
<div class="center">
|
||||
<button type = "button" class="btn outline" id = "btnResetForm">초기화</button>
|
||||
<button type = "button" class="btn primary" onclick = "fn_select_list(1)">검색</button>
|
||||
</div>
|
||||
<div class="right">
|
||||
<button type = "button" class="btn outline search-detail" onclick = "fn_disable_srchInput()">상세검색</button>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<div id = "pageDiv">
|
||||
</div>
|
||||
</form>
|
||||
<button class="scroll-to-top"><span class="visually-hidden">위로가기</span></button>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
<div id = "modalDiv"></div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,155 @@
|
||||
<%@ 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="ui" uri="http://www.winbit.kr/ctl/ui"%>
|
||||
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
|
||||
<%--
|
||||
Class Name : MlgManagePopupCForm.jsp.jsp
|
||||
Description : 마일리지 관리
|
||||
Modification Information
|
||||
|
||||
수정일 수정자 수정내용
|
||||
------- -------- ---------------------------
|
||||
since : 2024.02.19 김혜인 최초 생성
|
||||
--%>
|
||||
<script>
|
||||
$(document).ready(function(){
|
||||
fn_count_byte(".cn",".byteCnt",90);
|
||||
fn_select_mlgList(1);
|
||||
//적용구분 값따라 showHIde
|
||||
$("#mlgApplcCnDv").on("change",function(){
|
||||
const applcDv = $("#mlgApplcCnDv").val();
|
||||
|
||||
if(applcDv == "minus"){
|
||||
fn_ui_showHide("",".hideEl","Y");
|
||||
}else if (applcDv == 'add' || applcDv == 'plus'){
|
||||
fn_ui_showHide(".hideEl","","N");
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
||||
<!-- 마일리지 관리 모달 -->
|
||||
<div id="MlgMabagePopup" class="modal" style="max-width: 1200px;">
|
||||
<div class="modal-header">
|
||||
<h4>마일리지 관리</h4>
|
||||
</div>
|
||||
<div class="modal-content">
|
||||
<h2 class="content-section__title">마일리지</h2>
|
||||
<hr class="spacing">
|
||||
<form id = "mlgApplyForm">
|
||||
<div class="table-wrapper">
|
||||
<table class="table">
|
||||
<caption>마일리지 적용</caption>
|
||||
<colgroup>
|
||||
<col style="width: 12%;">
|
||||
<col>
|
||||
<col style="width: 12%;">
|
||||
<col>
|
||||
</colgroup>
|
||||
<tbody>
|
||||
<tr>
|
||||
<th>지급자</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<span>TODO::지급자명</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>대상회원</th>
|
||||
<td colspan="3">
|
||||
<div class="td-inner">
|
||||
<span>TODO::대상회원명(대상회원휴대폰호)</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>마일리지</th>
|
||||
<td colspan="3">
|
||||
<div class="td-inner">
|
||||
<div class="select-box">
|
||||
<select name = "mlgApplcCnDv" id = "mlgApplcCnDv" title="마일리지 적용 구분" >
|
||||
<!--TODO:: 코드 가져오기 -->
|
||||
<option value="plus">지급</option>
|
||||
<option value="minus">차감</option>
|
||||
<option value="add">적립</option>
|
||||
</select>
|
||||
</div>
|
||||
<input name = "accmlmnyAmt" id = "accmlmnyAmt" type="text" class="input-text sm right number" value="0" title="마일리지 금액"><span>마일리지</span>
|
||||
<span class = "hideEl">유효기간:</span>
|
||||
<input name = "mlgValidDt" type="text" class="input-text sm right number hideEl" value="0" title="마일리지 유효기간">
|
||||
<span class="control-label hideEl">개월</span>
|
||||
<div class="b-checkbox-container inner hideEl">
|
||||
<label class="b-checkbox checkbox">
|
||||
<input name = "validAt" type="checkbox" value="">
|
||||
<span class="check"></span>
|
||||
<span class="control-label">유효기간 설정안함</span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>사유</th>
|
||||
<td colspan="3">
|
||||
<div class="td-inner">
|
||||
<div class="select-box">
|
||||
<select name = "mlgApplcResn" id = "mlgApplcResn" title="마일리지 적용 사유" >
|
||||
<!--TODO:: 코드 가져오기 -->
|
||||
<option value="">등록일</option>
|
||||
</select>
|
||||
</div>
|
||||
<input name = "accmlmnyAmt" type="text" class="input-text sm right number" value="0" title="마일리지 금액" id = "accmlmnyAmt" placeholder="직접 입력">
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<hr class="spacing">
|
||||
<h2 class="content-section__title">SMS</h2>
|
||||
<hr class="spacing">
|
||||
<div class="table-wrapper" style="max-width: 400px;">
|
||||
<table class="table">
|
||||
<caption>마일리지 적용</caption>
|
||||
<colgroup>
|
||||
<col style="width: 35%;">
|
||||
<col>
|
||||
<col>
|
||||
<col>
|
||||
</colgroup>
|
||||
<tbody>
|
||||
<tr>
|
||||
<th class = "center">sms 입력</th>
|
||||
<td>
|
||||
<div class="template-message__body">
|
||||
<div class="sms-manage">
|
||||
<textarea class="textarea cn" title="sms 입력"></textarea>
|
||||
<div class="sms-manage__byte">
|
||||
<span class="number byteCnt">0</span>
|
||||
<span class="text">byte</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class="form-control-container">
|
||||
<div class="left"></div>
|
||||
<div class="center">
|
||||
<button class="btn primary" id="searchBtn" type="button" onclick="">적용하기</button>
|
||||
</div>
|
||||
|
||||
<div class="right"></div>
|
||||
</div>
|
||||
<hr class="spacing">
|
||||
</form>
|
||||
<hr class="horizontal-line">
|
||||
<div id = "mlgDtlDiv"></div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<a href="#" rel="modal:close" class="btn outline">닫기</a>
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,186 @@
|
||||
<%@ 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="ui" uri="http://www.winbit.kr/ctl/ui"%>
|
||||
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
|
||||
<%--
|
||||
Class Name : MlgManagePopupCForm.jsp.jsp
|
||||
Description : 마일리지 관리
|
||||
Modification Information
|
||||
|
||||
수정일 수정자 수정내용
|
||||
------- -------- ---------------------------
|
||||
since : 2024.02.19 김혜인 최초 생성
|
||||
2024-05-20 이운산 수정
|
||||
--%>
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function(){
|
||||
fn_apply_btnTy_button();
|
||||
});
|
||||
</script>
|
||||
<form id="mlgListForm">
|
||||
<section class="content-section" id="mlg_content_section">
|
||||
<h2 class="content-section__title">수신 내역</h2>
|
||||
<div class="table-wrapper">
|
||||
<table class="table">
|
||||
<caption>마일리지 적용</caption>
|
||||
<colgroup>
|
||||
<col style="width: 12%;">
|
||||
<col>
|
||||
</colgroup>
|
||||
<tbody>
|
||||
<tr>
|
||||
<th>지급/차감일</th>
|
||||
<td>
|
||||
<div class="td-inner">
|
||||
<div class="input-container">
|
||||
<input type="text" id="srchStrtDt" class="datepicker" title="시작 날짜 선택" autocomplete="off">
|
||||
<span class="tilde">~</span>
|
||||
<input type="text" id="srchEndDt" class="datepicker" title="종료 날짜 선택" autocomplete="off">
|
||||
</div>
|
||||
<div class="dateRange-btnContainer" id="srchDateRange">
|
||||
<button class="dateRange-btn">어제</button>
|
||||
<button class="dateRange-btn">오늘</button>
|
||||
<button class="dateRange-btn">3일간</button>
|
||||
<button class="dateRange-btn">일주일</button>
|
||||
<button class="dateRange-btn">1개월</button>
|
||||
<button class="dateRange-btn">3개월</button>
|
||||
<button class="dateRange-btn">6개월</button>
|
||||
<button class="dateRange-btn">1년</button>
|
||||
<button class="dateRange-btn selected">전체</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" value="" id = "applcDvChkAll">
|
||||
<span class="check"></span>
|
||||
<span class="control-label">전체</span>
|
||||
</label>
|
||||
<label class="b-checkbox checkbox">
|
||||
<input type="checkbox" value="complete" class = "applcDvChk" name = "srchPurchsSttus">
|
||||
<span class="check"></span>
|
||||
<span class="control-label">지급</span>
|
||||
</label>
|
||||
<label class="b-checkbox checkbox">
|
||||
<input type="checkbox" value="complete" class = "applcDvChk" name = "srchPurchsSttus">
|
||||
<span class="check"></span>
|
||||
<span class="control-label">차감</span>
|
||||
</label>
|
||||
<label class="b-checkbox checkbox">
|
||||
<input type="checkbox" value="complete" class = "applcDvChk" name = "srchPurchsSttus">
|
||||
<span class="check"></span>
|
||||
<span class="control-label">적립</span>
|
||||
</label>
|
||||
<label class="b-checkbox checkbox">
|
||||
<input type="checkbox" value="stay" class = "applcDvChk" name = "srchPurchsSttus">
|
||||
<span class="check"></span>
|
||||
<span class="control-label">회수</span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class="form-control-container">
|
||||
<div class="left"></div>
|
||||
<div class="center">
|
||||
<button type = "button" class="btn outline" id = "resetBtn">초기화</button>
|
||||
<button type = "button" class="btn primary" onclick="fn_select_list(); return false;">검색</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-control-container">
|
||||
<div class="left">
|
||||
</div>
|
||||
<div class="center">
|
||||
</div>
|
||||
<div class="right">
|
||||
<div class="select-box">
|
||||
<select id="mbrPageUnit" name="pageUnit" title="페이지당 출력될 목록건수" onchange="fn_select_mbrInfo(1);">
|
||||
<%-- <c:forEach items="${ resultListMapMbr.paginationInfo.pageUnitArr }" var="pageUnit" varStatus="pageUnitStatus">
|
||||
<option value="<c:out value="${ pageUnit }"/>" <c:if test="${ resultListMapMbr.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">
|
||||
</div>
|
||||
<div class="center">
|
||||
</div>
|
||||
<div class="right">
|
||||
</div>
|
||||
</div>
|
||||
<hr class="spacing">
|
||||
<div class="table-wrapper">
|
||||
<table class="table vertical">
|
||||
<caption>수신 내역</caption>
|
||||
<!-- 각 열 width 설정 -->
|
||||
<colgroup>
|
||||
<col style="width: 6%;">
|
||||
<col style="width: 15%">
|
||||
<col style="width: 20%">
|
||||
<col style="width: 20%">
|
||||
<col>
|
||||
<col style="width: 10%">
|
||||
<col>
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>번호</th>
|
||||
<th>지급/차감 금액</th>
|
||||
<th>사유</th>
|
||||
<th>내역</th>
|
||||
<th>지급일</th>
|
||||
<th>자동/수동</th>
|
||||
<th>유효기간</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<c:choose>
|
||||
<c:when test="${ not empty resultListMapMbr.boCtrlMap}">
|
||||
<c:forEach items="${ resultListMapMbr.boCtrlMap }" var="list" varStatus="status">
|
||||
<tr>
|
||||
<td><c:out value="${resultListMapMbr.paginationInfo.totalRecordCount - list.rnum + 1 }" /></td>
|
||||
<td>
|
||||
<span class="table-ellipsis">
|
||||
<c:out value = "${list.recpntEmail}"/>
|
||||
</span>
|
||||
</td>
|
||||
<td>
|
||||
<c:out value = "${list.recpntNm}"/>
|
||||
</td>
|
||||
<td>
|
||||
<c:out value = "${list.sttus}"/>
|
||||
</td>
|
||||
<td>
|
||||
<c:out value = "${list.sndngDt}"/>
|
||||
</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>
|
||||
<input type="hidden" id="pageIndex" name="pageIndex" value="1" />
|
||||
<%-- <div class="pagination__container mt-30">
|
||||
<ui:pagination paginationInfo="${resultMap.paginationInfo}" type="image" jsFunction="fn_select_rpuseDlvylcList" />
|
||||
</div> --%>
|
||||
</section>
|
||||
</form>
|
||||
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