Prechádzať zdrojové kódy

주문 수정사항 커밋

card007 4 rokov pred
rodič
commit
cc4936d1d4

+ 16 - 6
src/main/java/com/style24/admin/biz/web/TsaOrderChangeController.java

@@ -704,13 +704,17 @@ public class TsaOrderChangeController extends TsaBaseController {
 	@GetMapping("/exchange/request/form")
 	public ModelAndView exchangeRequestFrom(Order order) {
 		ModelAndView mav = new ModelAndView();
+		
+		Integer ordChgSq = order.getOrdChgSq();
 
-		// 교환가능 주문상세상탭값 설정
-		String[] ordDtlStatArr = new String[3];
-		ordDtlStatArr[0] = TscConstants.OrderDetailStat.SHIPPING.value();
-		ordDtlStatArr[1] = TscConstants.OrderDetailStat.SHIP_COMPLETE.value();
-		ordDtlStatArr[2] = TscConstants.OrderDetailStat.DELIVERY_COMPLETE.value();
-		order.setOrdDtlStatArr(ordDtlStatArr);
+		if (ordChgSq == null || ordChgSq == 0) {
+			// 교환가능 주문상세상탭값 설정
+			String[] ordDtlStatArr = new String[3];
+			ordDtlStatArr[0] = TscConstants.OrderDetailStat.SHIPPING.value();
+			ordDtlStatArr[1] = TscConstants.OrderDetailStat.SHIP_COMPLETE.value();
+			ordDtlStatArr[2] = TscConstants.OrderDetailStat.DELIVERY_COMPLETE.value();
+			order.setOrdDtlStatArr(ordDtlStatArr);
+		}
 
 		order.setChgGb(TscConstants.OrderChangeGb.EXCHANGE.value());
 		Collection<Order> cancelRequestTargetList = coreOrderChangeService.getCancelRequestTargetList(order);
@@ -718,6 +722,8 @@ public class TsaOrderChangeController extends TsaBaseController {
 		Collection<Order> orderInfoList = coreOrderService.getOrderInfoList(order);
 
 		String chgStat = "";
+		String canRequestCancelYn = "";
+		String wdBfSendYn = "";
 		if (order.getOrdChgSq() > 0) {
 			Collection<Order> exchangeInfoList = coreOrderChangeService.getExchangeInfo(order);
 
@@ -755,6 +761,8 @@ public class TsaOrderChangeController extends TsaBaseController {
 				}
 
 				cancelRequestTargetList = tmpList;
+				canRequestCancelYn = orderChangeDetailList.iterator().next().getCanRequestCancelYn();
+				wdBfSendYn = orderChangeDetailList.iterator().next().getWdBfSendYn();
 			}
 
 			String chgOrdDtlStat = "";
@@ -768,6 +776,8 @@ public class TsaOrderChangeController extends TsaBaseController {
 			mav.addObject("recallExceptionInfo"		, coreOrderChangeService.getRecallExceptionInfo(order));		// 회수 예외 정보
 		}
 
+		mav.addObject("wdBfSendYn"					, wdBfSendYn);													// 선발송여부
+		mav.addObject("canRequestCancelYn"			, canRequestCancelYn);											// 철회가능여부
 		mav.addObject("chgReasonList"				, rendererService.getAvailCommonCodeList("G689"));				// 교환사유
 		mav.addObject("cancelRequestTargetList"		, cancelRequestTargetList);										// 교환요청대상 목록
 		mav.addObject("orderChangeDetailList"		, orderChangeDetailList);										// 변경신청목록 (취소/반품/교환)

+ 3 - 2
src/main/webapp/WEB-INF/views/order/CnclCompleteView.html

@@ -57,9 +57,9 @@
 							<td><span id="imputeReason"></span></td>
 						</tr>
 						<tr>
-							<th>요청메모</th>
+							<th>요청메모<br/><span id="chgMemoCount">0</span>/1,000Byte</th>
 							<td colspan="3">
-								<textarea id="chgMemo" name="chgMemo" style="height:80px;" placeholder="취소사유를 300자내외로 작성해 주세요"></textarea>
+								<textarea id="chgMemo" name="chgMemo" style="height:80px;"></textarea>
 							</td>
 						</tr>
 					</tbody>
@@ -359,6 +359,7 @@ $(document).ready(function() {
 	$("#chgReasonNm").text(chgReasonNm);
 	$("#chgMemo").text(chgMemo);
 	$("#chgMemo").attr("disabled", "true");
+	cfnGetTextLength($('#chgMemo'), 1000, $('#chgMemoCount'));
 	fnChangeChgReason(chgReason);
 	
 	// 5. 환불에정금액 

+ 34 - 6
src/main/webapp/WEB-INF/views/order/ExchangeRequestForm.html

@@ -36,10 +36,16 @@
 				
 				<div style="text-align:right; padding-bottom:5px; padding-top:5px;">
 					<button type="button" class="btn btn-success" th:unless="${ordChgSq > 0}" id="fnExchangeRequestSubmit" onclick="fnExchange()">교환요청</button>
-					<!-- 2021.07.22 택배사 회수 불가 시 회수요청상태에서 교환철회 처리 -->
-					<!-- <button type="button" class="btn btn-success" th:if="${chgStat == 'G685_20' or chgStat == 'G685_21' or (recallExceptionInfo != null and (chgStat == 'G685_30' or chgStat == 'G685_31'))}" id="fnExchangeCancelRequestSubmit" onclick="fnExchangeCancel()">교환철회</button> -->
-					<button type="button" class="btn btn-success" th:if="${chgStat == 'G685_20' or chgStat == 'G685_21' or chgStat == 'G685_30' or (recallExceptionInfo != null and chgStat == 'G685_31')}" id="fnExchangeCancelRequestSubmit" onclick="fnExchangeCancel()">교환철회</button>
-					<button type="button" class="btn btn-success" th:if="${ordChgSq > 0 and (ordChgGb == 'G681_20' or ordChgGb == 'G681_40')}" id="fnReturnToExchangeSubmit" onclick="fnExchange()">교환변경</button>
+					<!-- 2021.07.22 선발송 처리 시 교환철회 불가 처리 -->
+					<th:block th:if="${wdBfSendYn == 'N'}">
+						<!-- 2021.07.22 택배사 회수 불가 시 회수요청상태에서 교환철회 처리 -->
+						<!-- <button type="button" class="btn btn-success" th:if="${chgStat == 'G685_20' or chgStat == 'G685_21' or (recallExceptionInfo != null and (chgStat == 'G685_30' or chgStat == 'G685_31'))}" id="fnExchangeCancelRequestSubmit" onclick="fnExchangeCancel()">교환철회</button> -->
+						<button type="button" class="btn btn-success" th:if="${chgStat == 'G685_20' or chgStat == 'G685_21' or (chgStat == 'G685_30' and (canRequestCancelYn == 'Y' or recallExceptionInfo != null)) or (chgStat == 'G685_31' and recallExceptionInfo != null)}" id="fnExchangeCancelRequestSubmit" onclick="fnExchangeCancel()">교환철회</button>
+					</th:block>
+					<th:block th:i="${ordChgSq > 0 and (ordChgGb == 'G681_20' or ordChgGb == 'G681_40')}">
+						<!-- 선발송 처리 시 교TO교 접수 불가 처리 -->
+						<button type="button" class="btn btn-success" th:unless="${ordChgGb == 'G681_20' and wdBfSendYn == 'Y'}" id="fnReturnToExchangeSubmit" onclick="fnExchange()">교환변경</button>
+					</th:block>
 				</div>
 				
 				<table class="frmStyle">
@@ -337,8 +343,21 @@ var columnExchangeReqList = [
 						var optArr = params.data.optCd2s.split(',');
 						var ordChgOpt = params.data.ordChgOpt;
 						
+						var ordQty = parseInt(params.data.ordQty);
+						var cnclRtnQty = parseInt(params.data.cnclRtnQty);
+						var ordReqChgQty = parseInt(params.data.ordReqChgQty);
+						var ordCanChgQty = ordQty - (cnclRtnQty + ordReqChgQty);
+						
+						if (ordChgGb == 'G681_40') {
+							ordCanChgQty = params.data.chgQty;
+						}
+						
 						var strVal = '';
-						strVal += '<select class="ordChgOpt" name="ordChgOpt" ordDtlNo="' + params.data.ordDtlNo + '" ordDtlItemSq="' + params.data.ordDtlItemSq + '" onchange="fnChangeOption(this)">';
+						if (ordCanChgQty == 0) {
+							strVal += '<select class="ordChgOpt" name="ordChgOpt" ordDtlNo="' + params.data.ordDtlNo + '" ordDtlItemSq="' + params.data.ordDtlItemSq + '" onchange="fnChangeOption(this)" disabled="disabled">';
+						} else {
+							strVal += '<select class="ordChgOpt" name="ordChgOpt" ordDtlNo="' + params.data.ordDtlNo + '" ordDtlItemSq="' + params.data.ordDtlItemSq + '" onchange="fnChangeOption(this)">';
+						}
 						
 						if (gagajf.isNull(ordChgOpt)) {
 							strVal += '<option value="">선택</option>';
@@ -389,7 +408,11 @@ var columnExchangeReqList = [
 						//}
 						
 						var strVal = "";
-						strVal += '<select class="ordCanChgQty ' + params.data.ordDtlNo + '" name="chgQty" ordDtlNo="' + params.data.ordDtlNo + '" onchange="fnChangeQty(this)">';
+						if (ordCanChgQty == 0) {
+							strVal += '<select class="ordCanChgQty ' + params.data.ordDtlNo + '" name="chgQty" ordDtlNo="' + params.data.ordDtlNo + '" onchange="fnChangeQty(this)" disabled="disabled">';
+						} else {
+							strVal += '<select class="ordCanChgQty ' + params.data.ordDtlNo + '" name="chgQty" ordDtlNo="' + params.data.ordDtlNo + '" onchange="fnChangeQty(this)">';
+						}
 						
 						for (i = 0; i <= ordCanChgQty; i++) {
 							if (i == params.data.chgQty) {
@@ -1305,6 +1328,11 @@ $(document).ready(function() {
 			$('#delvMemo').attr('readOnly', true);							// 8-14. 교환지정보 > 배송메모
 		}
 	}
+	
+	// 글자수 제한 byte 표기
+	cfnGetTextLength($('#chgMemo'), 1000, $('#chgMemoCount'));
+	cfnGetTextLength($('#chgerRtnMemo'), 1000, $('#chgerRtnMemoCount'));
+	cfnGetTextLength($('#delvMemo'), 1000, $('#delvMemoCount'));
 });
 </script>
 </html>

+ 20 - 22
src/main/webapp/WEB-INF/views/order/OrderMemoRegistForm.html

@@ -47,22 +47,24 @@
 							<th>파일</th>
 							<td><div class="uFile">
 								<input id="imageFile" name="imageFile" type="file" class="uFileInput"/>
-								<label for="imageFile" class="uFileLabel">파일선택</label>
+								<label for="imageFile" class="uFileLabel" th:text="${#strings.isEmpty(orderMemo.sysFileNm) ? '파일선택' : orderMemo.sysFileNm}">파일선택</label>
 								<input type="hidden" name="orgFileNm"/>
 								<input type="hidden" name="sysFileNm"/>
 							</div>
 							</td>
 						</tr>
+						<tr id="imageTr">
 						<th:block th:if="${mode == 'U' and orderMemo.sysFileNm != null and orderMemo.sysFileNm != ''}" th:with="uploadImageUrl=${@environment.getProperty('upload.image.view')}">
-							<tr>
+<!--							<tr>-->
 								<th>이미지</th>
 								<td>
 									<a href="javascript:void(0);" onclick="fnPreImgView()">
 										<img id="memoImg" th:src="|${uploadImageUrl}/Order/${orderMemo.sysFileNm}|" th:onerror="'this.src=\''+@{${@environment.getProperty('domain.uximage')}+ '/image/no.gif'}+'\';'" width="300px"/>
 									</a>
 								</td>
-							</tr>
+<!--							</tr>-->
 						</th:block>
+						</tr>
 						<!-- <th:block th:text="|${uploadImageUrl}/Order/${orderMemo.sysFileNm}|"></th:block> -->
 					</tbody>
 				</table>
@@ -96,6 +98,18 @@ $('#orderMemoRequestFrm input[name=imageFile]').on('change', function() {
 		, function(result) {
 			$('#orderMemoRequestFrm input[name=orgFileNm]').val(result.oldFileName);
 			$('#orderMemoRequestFrm input[name=sysFileNm]').val(result.newFileName);
+
+			let uploadImageUrl = [[${@environment.getProperty('upload.image.view')}]];
+			let uxImageUrl = [[${@environment.getProperty('domain.uximage')}]];
+
+			let html = '								<th>이미지</th>\n';
+			html += '								<td>\n';
+			html += '									<a href="javascript:void(0);" onclick="fnPreImgView()">\n';
+			html += '										<img id="memoImg" src="' + uploadImageUrl + '/Order/' + result.newFileName + '" onerror="' + uxImageUrl + '/image/no.gif" width="300px"/>\n';
+			html += '									</a>\n';
+			html += '								</td>\n';
+			
+			$('#imageTr').html(html);
 		}
 		, 'image'
 	);
@@ -133,25 +147,6 @@ var fnPreImgView = function(){
 	cfnOpenImagePreViewPopup('preImgView', $('#memoImg').attr('src'));
 }
 
-// 이미지 로드 시 사이즈 변경
-$('#imagePreView').bind('load', function(){
-	var windowWidth = $(window).width() * 0.95;
-	var windowHeight = $(window).height() * 0.95;
-	
-	var width = $('#imagePreView').width();
-	var height = $('#imagePreView').height();
-	
-	if (width > windowWidth) {
-		$('#preImgView >.videoPopup').css('width', windowWidth);
-		$('#imagePreView').css('width', windowWidth);
-		
-	}
-	if (height > windowHeight) {
-		$('#preImgView >.videoPopup').css('height', windowHeight);
-		$('#imagePreView').css('height', windowHeight);
-	}
-});
-	
 $(document).ready(function() {
 	var userText = '';
 	
@@ -176,6 +171,9 @@ $(document).ready(function() {
 		$('#imageFileTr').css('display', 'none');
 		$('#orderMemoRequestFrm textarea[name=memo]').attr('readonly', true);
 	}
+	
+	// 글자수 제한 byte 표기
+	cfnGetTextLength($('#orderMemoRequestFrm textarea[name=memo]'), 4000, $('#dpLocAnsContent'));
 });
 
 /*]]>*/

+ 23 - 3
src/main/webapp/WEB-INF/views/order/RtnReqForm.html

@@ -259,12 +259,14 @@ var chgReason				= "";											// 변경사유코드
 var chgMemo					= "";											// 변경사유메모
 var wdGb					= "";											// 회수방법
 var ordChgGb				= "";											// 주문변경요쳥변경구분
+var canRequestCancelYn		= "";											// 반품철회가능여부
 
 // 변경요청정보
 if (ordChgSq > 0) {
 	chgReason				= orderChangeDetailList[0].chgReason;			// 변경사유코드
 	chgMemo					= orderChangeDetailList[0].chgMemo;				// 변경사유메모
 	wdGb					= orderChangeDetailList[0].wdGb;				// 회수방법
+	canRequestCancelYn		= orderChangeDetailList[0].canRequestCancelYn;	// 반품철회가능여부
 	ordChgGb				= [[${ordChgGb}]];								// 주문변경요쳥변경구분
 }
 
@@ -337,7 +339,11 @@ var columnCancelReqList = [
 			} else {
 				ordCanChgQty = ordQty - (cnclRtnQty + ordReqChgQty);
 
-				rtnStr += "<select class='ordCanChgQty' name='ordCanChgQty' ordDtlNo='"+params.data.ordDtlNo+"' onChange='fnCalculateRefundAmt(this);'>";
+				if (ordCanChgQty == 0) {
+					rtnStr += "<select class='ordCanChgQty' name='ordCanChgQty' ordDtlNo='" + params.data.ordDtlNo + "' onChange='fnCalculateRefundAmt(this);' disabled='disabled'>";
+				} else {
+					rtnStr += "<select class='ordCanChgQty' name='ordCanChgQty' ordDtlNo='" + params.data.ordDtlNo + "' onChange='fnCalculateRefundAmt(this);'>";
+				}
 				
 				for (i=0 ; i<=ordCanChgQty ; i++) {
 					if (i == params.data.ordCanChgQty) {
@@ -869,7 +875,7 @@ var gridOptionsDelvInfoList = gagaAgGrid.getGridOptions(columnDelvInfoList);
 
 // 3. 배송정보(환불정보)
 var columnDelvCdList = [
-	{headerName: "업체"			, field: "supplyCompNm"		, width: 100	, cellClass: 'text-center'},
+	{headerName: "업체"			, field: "supplyCompNm"		, width: 150	, cellClass: 'text-center'},
 	{headerName: "배송비코드"		, field: "delvFeeCd"		, width: 100	, cellClass: 'text-center'},
 	{
 		headerName		: "추가배송비"
@@ -1505,10 +1511,20 @@ $(document).ready(function() {
 		// 2021.07.13 회수예외정보가 있고 회수요청, 상품검수중 상태에서 철회 가능 처리
 		// 2021.07.22 택배사 회수 불가 시 회수요청상태에서 반품철회 처리
 		//if (chgStat != "G685_50" && chgStat != "G685_51" && (recallExceptionInfo == null || (chgStat != "G685_30" && chgStat != 'G685_31'))) {
-		if (chgStat != "G685_50" && chgStat != "G685_51" && chgStat != "G685_30" && (recallExceptionInfo == null || chgStat != 'G685_31')) {
+		if (chgStat != "G685_50" && chgStat != "G685_51") {
 			$("#rtnReqCancelBtn").css("display", "none");
 		}
 		
+		// 회수요청 상태에서 택배사 회수 불가 or 회수예외정보 존재 시 반품철회 가능
+		if (chgStat == 'G685_30' && (recallExceptionInfo != null || canRequestCancelYn == 'Y')) {
+			$("#rtnReqCancelBtn").css("display", "");
+		}
+		
+		// 상품검수중 상태에서 회수예외정보 존재 시 반품철회 가능
+		if (chgStat == 'G685_31' && recallExceptionInfo != null) {
+			$("#rtnReqCancelBtn").css("display", "");
+		}
+		
 		// 반품TO교환 버튼
 		if ((chgStat != "G685_50" && chgStat != "G685_51" && chgStat != "G685_30") || pgGb == 'NAVER_ORDER') {
 			$("#rtnToExcBtn").css("display", "none");
@@ -1559,6 +1575,10 @@ $(document).ready(function() {
 	// 2021.05.13 높이자동조절
 	var cancelRequestTargetHeight = 50 + (40 * cancelRequestTargetCnt);
 	$("#gridOrderCancelRequestList").css("height" , cancelRequestTargetHeight+"px");
+	
+	// 글자수 제한 byte 표기
+	cfnGetTextLength($('#chgMemo'), 1000, $('#chgMemoCount'));
+	cfnGetTextLength($('#chgerRtnMemo'), 1000, $('#chgerRtnMemoCount'));
 });
 </script>
 </html>

+ 19 - 0
src/main/webapp/ux/js/admin.popup.js

@@ -200,6 +200,25 @@ var cfnOpenImagePreViewPopup = function(id,imgUrl) {
 	var popW = parseInt( $thisId.attr("data-width") );
 	var popH = parseInt( $thisId.attr("data-height") );
 	$("#imagePreView").attr("src", imgUrl);
+
+	$('#imagePreView').load(function() {
+		var windowWidth = $(window).width() * 0.95;
+		var windowHeight = $(window).height() * 0.95;
+
+		var width = $('#imagePreView').width();
+		var height = $('#imagePreView').height();
+
+		if (width > windowWidth) {
+			$('#preImgView >.videoPopup').css('width', windowWidth);
+			$('#imagePreView').css('width', windowWidth);
+		}
+
+		if (height > windowHeight) {
+			$('#preImgView >.videoPopup').css('height', windowHeight);
+			$('#imagePreView').css('height', windowHeight);
+		}
+	});
+
 	//$($thisId).css({display:"block"});
 	$("#"+id).css({display:"block"});
 }