892 lines
44 KiB
Plaintext
892 lines
44 KiB
Plaintext
<%@ 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>일반 관리자</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> |