Selaa lähdekoodia

쿠폰관련 수정

bin2107 4 vuotta sitten
vanhempi
commit
f2d8ff1372

+ 91 - 114
src/main/webapp/WEB-INF/views/marketing/CouponPopupForm.html

@@ -197,7 +197,7 @@
 											</td>
 											<th class="availDaysArea">유효기간일수<em class="required" title="필수"></em></th>
 											<td class="availDaysArea">
-												<input type="text" name="availDays" id="availDays" class="w200" data-valid-name="유효기간일수">
+												<input type="text" name="availDays" id="availDays" class="w200" data-valid-type="numeric" data-valid-name="유효기간일수">
 											</td>
 										</tr>
 <!--										<tr class="availDayTr" style="display: none;">-->
@@ -542,7 +542,7 @@
 				</div>
 				<div class="mdPopBtnB aR">
 					<button type="button" class="btn btn-info btn-lg" onclick="fnPubCustListPopUp();" th:if="${mode == 'U'}">발급받은회원</button>
-					<button type="button" class="btn btn-info btn-lg" onclick="fnCustomerIssuePopUp();" th:if="${mode == 'U' && cpnDetail.dcCdGb == 'G233_00'}">쿠폰발행</button>  <!-- 난수유형과 시리얼 유형에서는 쿠폰발행기능 X -->
+					<button type="button" class="btn btn-info btn-lg" onclick="fnCustomerIssuePopUp();" th:if="${mode == 'U' and cpnDetail.dcCdGb == 'G233_00' and cpnDetail.cpnStat=='G232_11'}">쿠폰발행</button>  <!-- 난수유형과 시리얼 유형에서는 쿠폰발행기능 X -->
 					<button type="button" class="btn btnRight btn-success btn-lg couponButton" id="btnCouponSave" onclick="fnCouponCreate();" th:text="${mode == 'N' ? '등록' : '수정'}"></button>
 					<button type="button" class="btn btnRight btn-success btn-lg couponButton" id="btnChangeStatIng" style="display: none;">진행</button>
 					<button type="button" class="btn btnRight btn-success btn-lg couponButton" id="btnCouponDelete" style="display: none;">삭제</button>
@@ -995,29 +995,42 @@
 		var chkDcPval = $('#CouponForm input[name=dcPval]').val();
 		var chkDcMval = $('#CouponForm input[name=dcMval]').val();
 		var chkDcAval = $('#CouponForm input[name=dcAval]').val();
-		if(gagajf.isNull(chkDcPval)){
+		if(gagajf.isNull(chkDcPval) || chkDcPval < 1){
 			mcxDialog.alert("할인값(PC)을 입력해주세요.");
 			$('#CouponForm input[name=dcPval]').focus();
 			return false;
 		}
-		if(gagajf.isNull(chkDcMval)){
+		if(gagajf.isNull(chkDcMval) || chkDcMval < 1){
 			mcxDialog.alert("할인값(모바일웹)을 입력해주세요.");
 			$('#CouponForm input[name=dcMval]').focus();
 			return false;
 		}
-		if(gagajf.isNull(chkDcAval)){
+		if(gagajf.isNull(chkDcAval) || chkDcAval < 1){
 			mcxDialog.alert("할인값(모바일앱)을 입력해주세요.");
 			$('#CouponForm input[name=dcAval]').focus();
 			return false;
 		}
 
+		// 적용대상 체크
+		let targetCnt = 0;
+		let target1 = gagaAgGrid.getAllRowData(supplyGridOptions);
+		let target2 = gagaAgGrid.getAllRowData(brandGridOptions);
+		let target3 = gagaAgGrid.getAllRowData(cateGridOptions);
+		let target4 = gagaAgGrid.getAllRowData(goodsGridOptions);
+
+		targetCnt = target1.length + target2.length + target3.length + target4.length;
+		if(targetCnt < 1){
+			mcxDialog.alert("적용대상을 설정해주세요.");
+			return false;
+		}
+
 		return true;
 	}
 
 	// 즉시할인쿠폰일때 데이터 validation 체크
 	var checkValidation10 = function (){
-		var stdt = $('#CouponForm #availStdt').val();
-		var eddt = $('#CouponForm #availEddt').val();
+		var stdt = $('#CouponForm #availStDay').val();
+		var eddt = $('#CouponForm #availEdDay').val();
 		if(gagajf.isNull(stdt)){
 			mcxDialog.alert("유효기간 시작일시를 입력해주세요.");
 			return false;
@@ -1060,16 +1073,48 @@
 			}
 		}
 
+		if($('#CouponForm select[name="pdGb"] option:selected').val() == 'D'){
+			if(gagajf.isNull($("#availDays").val()) || $("#availDays").val() < 1){
+				mcxDialog.alert("유효기간 일수를 입력해주세요.");
+				$('#CouponForm input[name=availDays]').focus();
+				return false;
+			}
+		}
+
+		//다운로드일시 validation 체크
+		var downFromDate = $('#CouponForm input[name=downStDay]').val();
+		var downToDate = $('#CouponForm input[name=downEdDay]').val();
+
+		if (gagajf.isNull(downFromDate) || gagajf.isNull(downToDate)) {
+			mcxDialog.alertC("다운로드 시작일자와 종료일자를 입력하세요.", {
+				sureBtnText: "확인",
+				sureBtnClick: function() {
+					$('#CouponForm input[name=downStDay]').focus();
+				}
+			});
+			return false;
+		}
+
+		if (downFromDate > downToDate) {
+			mcxDialog.alertC("다운로드 시작일자는 종료일자 보다 클 수 없습니다.", {
+				sureBtnText: "확인",
+				sureBtnClick: function() {
+					$('#CouponForm input[name=downEdDay]').focus();
+				}
+			});
+			return false;
+		}
+
 		//신규가입 지급한다면 validation 체크
 		if( $('#newCustYn option:selected').val() == "Y" ){
-			var fromDate = $('#CouponForm input[name=custJoinStdt]').val();
-			var toDate = $('#CouponForm input[name=custJoinEddt]').val();
+			var fromDate = $('#CouponForm input[name=custJoinStDay]').val();
+			var toDate = $('#CouponForm input[name=custJoinEdDay]').val();
 
 			if (gagajf.isNull(fromDate) || gagajf.isNull(toDate)) {
 				mcxDialog.alertC("신규가입기간 시작일자와 종료일자를 입력하세요.", {
 					sureBtnText: "확인",
 					sureBtnClick: function() {
-						$('#CouponForm input[name=custJoinStdt]').focus();
+						$('#CouponForm input[name=custJoinStDay]').focus();
 					}
 				});
 				return false;
@@ -1079,7 +1124,7 @@
 				mcxDialog.alertC("등록 시작일자는 종료일자 보다 클 수 없습니다.", {
 					sureBtnText: "확인",
 					sureBtnClick: function() {
-						$('#CouponForm input[name=custJoinEddt]').focus();
+						$('#CouponForm input[name=custJoinEdDay]').focus();
 					}
 				});
 				return false;
@@ -1088,14 +1133,14 @@
 
 		// 첫구매 지급하면 validation 체크
 		if( $('#firstOrdYn option:selected').val() == "Y" ){
-			var fromDate = $('#CouponForm input[name=buyStdt]').val();
-			var toDate = $('#CouponForm input[name=buyEddt]').val();
+			var fromDate = $('#CouponForm input[name=buyStDay]').val();
+			var toDate = $('#CouponForm input[name=buyEdDay]').val();
 
 			if (gagajf.isNull(fromDate) || gagajf.isNull(toDate)) {
 				mcxDialog.alertC("신규가입기간 시작일자와 종료일자를 입력하세요.", {
 					sureBtnText: "확인",
 					sureBtnClick: function() {
-						$('#CouponForm input[name=buyStdt]').focus();
+						$('#CouponForm input[name=buyStDay]').focus();
 					}
 				});
 				return false;
@@ -1105,7 +1150,7 @@
 				mcxDialog.alertC("등록 시작일자는 종료일자 보다 클 수 없습니다.", {
 					sureBtnText: "확인",
 					sureBtnClick: function() {
-						$('#CouponForm input[name=buyEddt]').focus();
+						$('#CouponForm input[name=buyEdDay]').focus();
 					}
 				});
 				return false;
@@ -1281,16 +1326,17 @@
 		}
 
 		var chkCpnType = $("#CouponForm input[name=rdoCpnType]:checked").val();
-		if(chkCpnType == 'G230_10'){	// 즉시할인쿠폰일때
-			if(!checkValidation10()){
-				return false;
-			}
-		}else{
+		if(chkCpnType != 'G230_10'){	// 즉시할인쿠폰제외
 			if(!checkValidation20(chkCpnType)){
 				return false;
 			}
 		}
 
+		// 유효기간 체크
+		if(!checkValidation10()){
+			return false;
+		}
+
 		// 업체분담율 토탈 100% 넘는지 체크
 		if(!fnBurdenValueCheck()) {
 			return false;
@@ -1334,7 +1380,7 @@
 					,pdGb : $('#CouponForm select[name=pdGb]').val()
 					,availStdt : $('#CouponForm input[name=availStdt]').val()
 					,availEddt : $('#CouponForm input[name=availEddt]').val()
-					,availDays : $('#CouponForm input[name=availDays]').val()
+					,availDays : $('#CouponForm input[name=availDays]').val().replaceAll(',','')
 					,custPubLimitQty : $('#CouponForm input[name=custPubLimitQty]').val().replaceAll(',','')
 					,totPubLimitQty : $('#CouponForm input[name=totPubLimitQty]').val().replaceAll(',','')
 					,onePubQty : $('#CouponForm input[name=onePubQty]').val().replaceAll(',','')
@@ -1373,97 +1419,6 @@
 		});
 	}
 
-	// 쿠폰 등록 버튼 클릭시
-	function fnCouponCreate2(){
-		mcxDialog.confirm('저장하시겠습니까?' , {
-			cancelBtnText:"취소",
-			sureBtnText:"확인",
-			sureBtnClick: function () {
-				gagajf.removeCommaAtNumberFormattedInput('#CouponForm');
-				// 필수값들 셋팅
-				setReqValue();
-				// 필수값 validation 체크
-				if (!gagajf.validation('#CouponForm')) {
-					return false;
-				}
-				// 데이터 validation 체크
-				if(!checkValidation()) {
-					return false;
-				}
-
-				var usableCustGbArr = [];
-				var chkCustGb  = $('#CouponForm input:checkbox[name=usableCustGbArr]:checked');
-				for(let i=0; i< chkCustGb.length; i++){
-					usableCustGbArr.push(chkCustGb.eq(i).val());
-				}
-
-				var usableCustGradeArr = [];
-				var chkCustGrade = $('#CouponForm input:checkbox[name=usableCustGradeArr]:checked');
-				for(let i=0; i< chkCustGrade.length; i++){
-					usableCustGradeArr.push(chkCustGrade.eq(i).val());
-				}
-
-				var payTypeArr = [];
-				var chkPayType = $('#CouponForm input:checkbox[name=payTypeArr]:checked');
-				for(let i=0; i< chkPayType.length; i++){
-					payTypeArr.push(chkPayType.eq(i).val());
-				}
-
-				var data = {
-						cpnId : $('#CouponForm input[name=cpnId]').val()
-						,cpnNm : $('#CouponForm input[name=cpnNm]').val()
-						,cpnDesc : $('#CouponForm input[name=cpnDesc]').val()
-						,siteCd : $('#CouponForm select[name=siteCd]').val()
-						// ,afLinkCd : $('#CouponForm select[name=afLinkCd]').val()
-						,cpnType : $('input:radio[name="rdoCpnType"]:checked').val()
-						,applyScope : $('input:radio[name="rdoApplyScope"]:checked').val()
-						,dcWay : $('input:radio[name="rdoDcWay"]:checked').val()
-						,dcPval : $('#CouponForm input[name=dcPval]').val()
-						,dcMval : $('#CouponForm input[name=dcMval]').val()
-						,dcAval : $('#CouponForm input[name=dcAval]').val()
-						,maxDcAmt : $('#CouponForm input[name=maxDcAmt]').val()
-						,pdGb : $('#CouponForm select[name=pdGb]').val()
-						,availStdt : $('#CouponForm input[name=availStdt]').val()
-						,availEddt : $('#CouponForm input[name=availEddt]').val()
-						,availDays : $('#CouponForm input[name=availDays]').val()
-						,custPubLimitQty : $('#CouponForm input[name=custPubLimitQty]').val()
-						,totPubLimitQty : $('#CouponForm input[name=totPubLimitQty]').val()
-						,onePubQty : $('#CouponForm input[name=onePubQty]').val()
-						,downStdt : $('#CouponForm input[name=downStdt]').val()
-						,downEddt : $('#CouponForm input[name=downEddt]').val()
-						,buyLimitAmt : $('#CouponForm input[name=buyLimitAmt]').val()
-						,cpnStat : $('input:radio[name="disCpnStat"]:checked').val()
-						,endAlimYn : $('#CouponForm select[name=endAlimYn]').val()
-						,firstOrdYn : $('#CouponForm select[name=firstOrdYn]').val()
-						,downAblYn : $('#CouponForm select[name=downAblYn]').val()
-						,custJoinStdt : $('#CouponForm input[name=custJoinStdt]').val()
-						,custJoinEddt : $('#CouponForm input[name=custJoinEddt]').val()
-						,buyStdt : $('#CouponForm input[name=buyStdt]').val()
-						,buyEddt : $('#CouponForm input[name=buyEddt]').val()
-						,newCustYn : $('#CouponForm select[name=newCustYn]').val()
-						// ,afChannel : $('#CouponForm select[name=afChannel]').val()
-						,dcCdGb : $('input:radio[name="dcCdGb"]:checked').val()
-						,rdCpnNm : $('input[name="serialCpnNm"]').val()
-						,supplyCompList : gagaAgGrid.getAllRowData(supplyGridOptions)
-						,brandList : gagaAgGrid.getAllRowData(brandGridOptions)
-						,applyGoodsList : gagaAgGrid.getAllRowData(goodsGridOptions)
-						,exceptGoodsList : gagaAgGrid.getAllRowData(excepGoodsGridOptions)
-						,cateList : gagaAgGrid.getAllRowData(cateGridOptions)
-						,burdenList : gagaAgGrid.getAllRowData(inComGridOptions)
-						,usableCustGbArr : usableCustGbArr
-						,usableCustGradeArr : usableCustGradeArr
-						,payTypeArr : payTypeArr
-						,limitedTimeCpnList : gagaAgGrid.getAllRowData(limitedTimeCpnGridOptions)
-						,afChannelList : gagaAgGrid.getAllRowData(afLinkOptions)
-				};
-
-				var jsonData = JSON.stringify(data);
-				gagajf.ajaxJsonSubmit($('#CouponForm').prop('action'), jsonData, fnCouponSaveCollback);
-
-			}
-		});
-	}
-
 	var fnCouponSaveCollback = function (result){
 		uifnPopupClose('CouponRegForm');
 		$('#btnSearch').trigger('click');
@@ -1756,7 +1711,7 @@
 			$("#CouponForm").find("input:radio[name='rdoApplyScope']").attr('disabled', true);
 			$("#CouponForm").find("input:radio[name='rdoApplyScope']").attr('readonly', true);
 		}else{
-			$("#CouponForm input:radio[name='rdoApplyScope']:radio[value=A]").prop('checked', true);
+			$("#CouponForm input:radio[name='rdoApplyScope']:radio[value=I]").prop('checked', true);
 			$("#CouponForm").find("input:radio[name='rdoApplyScope']").attr('disabled', false);
 			$("#CouponForm").find("input:radio[name='rdoApplyScope']").attr('readonly', false);
 
@@ -1815,7 +1770,7 @@
 		if(radioValue == 'G230_10') {
 			$("input:radio[name='rdoApplyScope']:radio[value='I']").prop('checked', true);
 		} else {
-			$("input:radio[name='rdoApplyScope']:radio[value='A']").prop('checked', true);
+			$("input:radio[name='rdoApplyScope']:radio[value='I']").prop('checked', true);
 		}
 
 		// 주문서 쿠폰 선택시 결제수단 노출
@@ -3045,6 +3000,28 @@
 		}
 	}
 
+	// 적용범위 클릭 시
+	$("#CouponForm input[name=rdoApplyScope]").bind('click', function () {
+		if($('#CouponForm input:radio[name="rdoApplyScope"]:checked').val() == 'A'){ //전체적용일때
+			supplyGridOptions.api.updateRowData({remove:gagaAgGrid.getAllRowData(supplyGridOptions)});
+			brandGridOptions.api.updateRowData({remove:gagaAgGrid.getAllRowData(brandGridOptions)});
+			cateGridOptions.api.updateRowData({remove:gagaAgGrid.getAllRowData(cateGridOptions)});
+			goodsGridOptions.api.updateRowData({remove:gagaAgGrid.getAllRowData(goodsGridOptions)});
+			excepGoodsGridOptions.api.updateRowData({remove:gagaAgGrid.getAllRowData(excepGoodsGridOptions)});
+			$("#CouponForm .supplyTrArea").hide();
+			$("#CouponForm .brandTrArea").hide();
+			$("#CouponForm .categoryTrArea").hide();
+			$("#CouponForm .goodsTrArea").hide();
+			$("#CouponForm .exceptArea").hide();
+		}else{ //개별적용일때
+			$("#CouponForm .supplyTrArea").show();
+			$("#CouponForm .brandTrArea").show();
+			$("#CouponForm .categoryTrArea").show();
+			$("#CouponForm .goodsTrArea").show();
+			$("#CouponForm .exceptArea").show();
+		}
+	});
+
 	/*]]>*/
 </script>
 </html>

+ 1 - 0
src/main/webapp/WEB-INF/views/marketing/CouponPubCustListPopupForm.html

@@ -53,6 +53,7 @@
 		{ headerName: "발급사유" , field:"pubReasonNm" , width:200, cellClass:"text-center"} ,
 		{ headerName: "발급상세사유" , field:"pubReasonDtl" , width:200, cellClass:"text-center"} ,
 		{ headerName: "발급인ID" , field:"regNo" , width:100, cellClass:"text-center"} ,
+		{ headerName: "발급인" , field:"regNm" , width:100, cellClass:"text-center"} ,
 		{ headerName: "발급시간" , field:"regDt" , width:150, cellClass:"text-center"
 			,valueGetter	: function (params) {
 				return gagaAgGrid.toDateTimeFormat(params.data.regDt);