--- src/main/java/itn/let/mjo/msgdata/service/MjonMsgDataVO.java
+++ src/main/java/itn/let/mjo/msgdata/service/MjonMsgDataVO.java
... | ... | @@ -4,7 +4,11 @@ |
| 4 | 4 |
import java.util.List; |
| 5 | 5 |
|
| 6 | 6 |
import itn.let.uss.umt.service.UserDefaultVO; |
| 7 |
+import lombok.Getter; |
|
| 8 |
+import lombok.Setter; |
|
| 7 | 9 |
|
| 10 |
+@Getter |
|
| 11 |
+@Setter |
|
| 8 | 12 |
public class MjonMsgDataVO extends UserDefaultVO{
|
| 9 | 13 |
|
| 10 | 14 |
/** |
... | ... | @@ -73,325 +77,7 @@ |
| 73 | 77 |
private String msgResendAllReplaceYn; |
| 74 | 78 |
private String atchFiles; |
| 75 | 79 |
|
| 76 |
- public String getMsgResendAllReplaceYn() {
|
|
| 77 |
- return msgResendAllReplaceYn; |
|
| 78 |
- } |
|
| 79 |
- public void setMsgResendAllReplaceYn(String msgResendAllReplaceYn) {
|
|
| 80 |
- this.msgResendAllReplaceYn = msgResendAllReplaceYn; |
|
| 81 |
- } |
|
| 82 |
- public String getAtchFiles() {
|
|
| 83 |
- return atchFiles; |
|
| 84 |
- } |
|
| 85 |
- public void setAtchFiles(String atchFiles) {
|
|
| 86 |
- this.atchFiles = atchFiles; |
|
| 87 |
- } |
|
| 88 |
- public String getMsgGroupId() {
|
|
| 89 |
- return msgGroupId; |
|
| 90 |
- } |
|
| 91 |
- public void setMsgGroupId(String msgGroupId) {
|
|
| 92 |
- this.msgGroupId = msgGroupId; |
|
| 93 |
- } |
|
| 94 |
- public String getFilePath1() {
|
|
| 95 |
- return filePath1; |
|
| 96 |
- } |
|
| 97 |
- public void setFilePath1(String filePath1) {
|
|
| 98 |
- this.filePath1 = filePath1; |
|
| 99 |
- } |
|
| 100 |
- public String getFilePath2() {
|
|
| 101 |
- return filePath2; |
|
| 102 |
- } |
|
| 103 |
- public void setFilePath2(String filePath2) {
|
|
| 104 |
- this.filePath2 = filePath2; |
|
| 105 |
- } |
|
| 106 |
- public String getFilePath3() {
|
|
| 107 |
- return filePath3; |
|
| 108 |
- } |
|
| 109 |
- public void setFilePath3(String filePath3) {
|
|
| 110 |
- this.filePath3 = filePath3; |
|
| 111 |
- } |
|
| 112 |
- public String getCallFrom() {
|
|
| 113 |
- return callFrom; |
|
| 114 |
- } |
|
| 115 |
- public void setCallFrom(String callFrom) {
|
|
| 116 |
- this.callFrom = callFrom; |
|
| 117 |
- } |
|
| 118 |
- public String getCallTo() {
|
|
| 119 |
- return callTo; |
|
| 120 |
- } |
|
| 121 |
- public void setCallTo(String callTo) {
|
|
| 122 |
- this.callTo = callTo; |
|
| 123 |
- } |
|
| 124 |
- public String getMsgResendAllFlag() {
|
|
| 125 |
- return msgResendAllFlag; |
|
| 126 |
- } |
|
| 127 |
- public void setMsgResendAllFlag(String msgResendAllFlag) {
|
|
| 128 |
- this.msgResendAllFlag = msgResendAllFlag; |
|
| 129 |
- } |
|
| 130 |
- public String getMsgResendAllGroupId() {
|
|
| 131 |
- return msgResendAllGroupId; |
|
| 132 |
- } |
|
| 133 |
- public void setMsgResendAllGroupId(String msgResendAllGroupId) {
|
|
| 134 |
- this.msgResendAllGroupId = msgResendAllGroupId; |
|
| 135 |
- } |
|
| 136 |
- public String getMsgResendAllAdvertiseYn() {
|
|
| 137 |
- return msgResendAllAdvertiseYn; |
|
| 138 |
- } |
|
| 139 |
- public void setMsgResendAllAdvertiseYn(String msgResendAllAdvertiseYn) {
|
|
| 140 |
- this.msgResendAllAdvertiseYn = msgResendAllAdvertiseYn; |
|
| 141 |
- } |
|
| 80 |
+ private String tabDision; |
|
| 142 | 81 |
|
| 143 |
- public String getCodeId() {
|
|
| 144 |
- return codeId; |
|
| 145 |
- } |
|
| 146 |
- public void setCodeId(String codeId) {
|
|
| 147 |
- this.codeId = codeId; |
|
| 148 |
- } |
|
| 149 |
- public String getCode() {
|
|
| 150 |
- return code; |
|
| 151 |
- } |
|
| 152 |
- public void setCode(String code) {
|
|
| 153 |
- this.code = code; |
|
| 154 |
- } |
|
| 155 |
- public String getCodeNm() {
|
|
| 156 |
- return codeNm; |
|
| 157 |
- } |
|
| 158 |
- public void setCodeNm(String codeNm) {
|
|
| 159 |
- this.codeNm = codeNm; |
|
| 160 |
- } |
|
| 161 |
- public String getSort() {
|
|
| 162 |
- return sort; |
|
| 163 |
- } |
|
| 164 |
- public void setSort(String sort) {
|
|
| 165 |
- this.sort = sort; |
|
| 166 |
- } |
|
| 167 |
- public String getUserId() {
|
|
| 168 |
- return userId; |
|
| 169 |
- } |
|
| 170 |
- public void setUserId(String userId) {
|
|
| 171 |
- this.userId = userId; |
|
| 172 |
- } |
|
| 173 |
- public String getEsntl_id() {
|
|
| 174 |
- return esntl_id; |
|
| 175 |
- } |
|
| 176 |
- public void setEsntl_id(String esntl_id) {
|
|
| 177 |
- this.esntl_id = esntl_id; |
|
| 178 |
- } |
|
| 179 |
- public String getMsgId() {
|
|
| 180 |
- return msgId; |
|
| 181 |
- } |
|
| 182 |
- public void setMsgId(String msgId) {
|
|
| 183 |
- this.msgId = msgId; |
|
| 184 |
- } |
|
| 185 |
- public String getLetterId() {
|
|
| 186 |
- return letterId; |
|
| 187 |
- } |
|
| 188 |
- public void setLetterId(String letterId) {
|
|
| 189 |
- this.letterId = letterId; |
|
| 190 |
- } |
|
| 191 |
- public List getMsgIdList() {
|
|
| 192 |
- return msgIdList; |
|
| 193 |
- } |
|
| 194 |
- public void setMsgIdList(List msgIdList) {
|
|
| 195 |
- this.msgIdList = msgIdList; |
|
| 196 |
- } |
|
| 197 |
- public List getMsgSeqList() {
|
|
| 198 |
- return msgSeqList; |
|
| 199 |
- } |
|
| 200 |
- public void setMsgSeqList(List msgSeqList) {
|
|
| 201 |
- this.msgSeqList = msgSeqList; |
|
| 202 |
- } |
|
| 203 |
- public String getSubject() {
|
|
| 204 |
- return subject; |
|
| 205 |
- } |
|
| 206 |
- public void setSubject(String subject) {
|
|
| 207 |
- this.subject = subject; |
|
| 208 |
- } |
|
| 209 |
- public String getMmsSubject() {
|
|
| 210 |
- return mmsSubject; |
|
| 211 |
- } |
|
| 212 |
- public void setMmsSubject(String mmsSubject) {
|
|
| 213 |
- this.mmsSubject = mmsSubject; |
|
| 214 |
- } |
|
| 215 |
- public String getSmsTxt() {
|
|
| 216 |
- return smsTxt; |
|
| 217 |
- } |
|
| 218 |
- public void setSmsTxt(String smsTxt) {
|
|
| 219 |
- this.smsTxt = smsTxt; |
|
| 220 |
- } |
|
| 221 |
- public String getSmsLen() {
|
|
| 222 |
- return smsLen; |
|
| 223 |
- } |
|
| 224 |
- public void setSmsLen(String smsLen) {
|
|
| 225 |
- this.smsLen = smsLen; |
|
| 226 |
- } |
|
| 227 |
- public String[] getImgFileId() {
|
|
| 228 |
- return imgFileId; |
|
| 229 |
- } |
|
| 230 |
- public void setImgFileId(String[] imgFileId) {
|
|
| 231 |
- this.imgFileId = imgFileId; |
|
| 232 |
- } |
|
| 233 |
- public String getAtchFileId1() {
|
|
| 234 |
- return atchFileId1; |
|
| 235 |
- } |
|
| 236 |
- public void setAtchFileId1(String atchFileId1) {
|
|
| 237 |
- this.atchFileId1 = atchFileId1; |
|
| 238 |
- } |
|
| 239 |
- public String getAtchFileId2() {
|
|
| 240 |
- return atchFileId2; |
|
| 241 |
- } |
|
| 242 |
- public void setAtchFileId2(String atchFileId2) {
|
|
| 243 |
- this.atchFileId2 = atchFileId2; |
|
| 244 |
- } |
|
| 245 |
- public String getAtchFileId3() {
|
|
| 246 |
- return atchFileId3; |
|
| 247 |
- } |
|
| 248 |
- public void setAtchFileId3(String atchFileId3) {
|
|
| 249 |
- this.atchFileId3 = atchFileId3; |
|
| 250 |
- } |
|
| 251 |
- public List getAtchFileList() {
|
|
| 252 |
- return atchFileList; |
|
| 253 |
- } |
|
| 254 |
- public void setAtchFileList(List atchFileList) {
|
|
| 255 |
- this.atchFileList = atchFileList; |
|
| 256 |
- } |
|
| 257 |
- public Date getRegdate() {
|
|
| 258 |
- return regdate; |
|
| 259 |
- } |
|
| 260 |
- public void setRegdate(Date regdate) {
|
|
| 261 |
- this.regdate = regdate; |
|
| 262 |
- } |
|
| 263 |
- public String getMyMsgStDt() {
|
|
| 264 |
- return myMsgStDt; |
|
| 265 |
- } |
|
| 266 |
- public void setMyMsgStDt(String myMsgStDt) {
|
|
| 267 |
- this.myMsgStDt = myMsgStDt; |
|
| 268 |
- } |
|
| 269 |
- public String getMyMsgEndDt() {
|
|
| 270 |
- return myMsgEndDt; |
|
| 271 |
- } |
|
| 272 |
- public void setMyMsgEndDt(String myMsgEndDt) {
|
|
| 273 |
- this.myMsgEndDt = myMsgEndDt; |
|
| 274 |
- } |
|
| 275 |
- public String getPageType() {
|
|
| 276 |
- return pageType; |
|
| 277 |
- } |
|
| 278 |
- public void setPageType(String pageType) {
|
|
| 279 |
- this.pageType = pageType; |
|
| 280 |
- } |
|
| 281 |
- public String getMsgType() {
|
|
| 282 |
- return msgType; |
|
| 283 |
- } |
|
| 284 |
- public void setMsgType(String msgType) {
|
|
| 285 |
- this.msgType = msgType; |
|
| 286 |
- } |
|
| 287 |
- public String getMsgKind() {
|
|
| 288 |
- return msgKind; |
|
| 289 |
- } |
|
| 290 |
- public void setMsgKind(String msgKind) {
|
|
| 291 |
- this.msgKind = msgKind; |
|
| 292 |
- } |
|
| 293 |
- public String getMsgResendFlag() {
|
|
| 294 |
- return msgResendFlag; |
|
| 295 |
- } |
|
| 296 |
- public void setMsgResendFlag(String msgResendFlag) {
|
|
| 297 |
- this.msgResendFlag = msgResendFlag; |
|
| 298 |
- } |
|
| 299 |
- public String getCustomImgFlag() {
|
|
| 300 |
- return customImgFlag; |
|
| 301 |
- } |
|
| 302 |
- public void setCustomImgFlag(String customImgFlag) {
|
|
| 303 |
- this.customImgFlag = customImgFlag; |
|
| 304 |
- } |
|
| 305 |
- public String getMainImgFlag() {
|
|
| 306 |
- return mainImgFlag; |
|
| 307 |
- } |
|
| 308 |
- public void setMainImgFlag(String mainImgFlag) {
|
|
| 309 |
- this.mainImgFlag = mainImgFlag; |
|
| 310 |
- } |
|
| 311 |
- public String getMainLetterFlag() {
|
|
| 312 |
- return mainLetterFlag; |
|
| 313 |
- } |
|
| 314 |
- public void setMainLetterFlag(String mainLetterFlag) {
|
|
| 315 |
- this.mainLetterFlag = mainLetterFlag; |
|
| 316 |
- } |
|
| 317 |
- public String getMainMoreSamFlag() {
|
|
| 318 |
- return mainMoreSamFlag; |
|
| 319 |
- } |
|
| 320 |
- public void setMainMoreSamFlag(String mainMoreSamFlag) {
|
|
| 321 |
- this.mainMoreSamFlag = mainMoreSamFlag; |
|
| 322 |
- } |
|
| 323 |
- |
|
| 324 |
- public String getMainLetterTypeFlag() {
|
|
| 325 |
- return mainLetterTypeFlag; |
|
| 326 |
- } |
|
| 327 |
- public void setMainLetterTypeFlag(String mainLetterTypeFlag) {
|
|
| 328 |
- this.mainLetterTypeFlag = mainLetterTypeFlag; |
|
| 329 |
- } |
|
| 330 |
- public String getHeaderMsgSearchFlag() {
|
|
| 331 |
- return headerMsgSearchFlag; |
|
| 332 |
- } |
|
| 333 |
- public void setHeaderMsgSearchFlag(String headerMsgSearchFlag) {
|
|
| 334 |
- this.headerMsgSearchFlag = headerMsgSearchFlag; |
|
| 335 |
- } |
|
| 336 |
- public String getMoveAddrFlag() {
|
|
| 337 |
- return moveAddrFlag; |
|
| 338 |
- } |
|
| 339 |
- public void setMoveAddrFlag(String moveAddrFlag) {
|
|
| 340 |
- this.moveAddrFlag = moveAddrFlag; |
|
| 341 |
- } |
|
| 342 |
- public String getMoveAddrAllFlag() {
|
|
| 343 |
- return moveAddrAllFlag; |
|
| 344 |
- } |
|
| 345 |
- public void setMoveAddrAllFlag(String moveAddrAllFlag) {
|
|
| 346 |
- this.moveAddrAllFlag = moveAddrAllFlag; |
|
| 347 |
- } |
|
| 348 |
- public List getAddrIdList() {
|
|
| 349 |
- return addrIdList; |
|
| 350 |
- } |
|
| 351 |
- public void setAddrIdList(List addrIdList) {
|
|
| 352 |
- this.addrIdList = addrIdList; |
|
| 353 |
- } |
|
| 354 |
- public String getFileSn() {
|
|
| 355 |
- return fileSn; |
|
| 356 |
- } |
|
| 357 |
- public void setFileSn(String fileSn) {
|
|
| 358 |
- this.fileSn = fileSn; |
|
| 359 |
- } |
|
| 360 |
- public String getFileStreCours() {
|
|
| 361 |
- return fileStreCours; |
|
| 362 |
- } |
|
| 363 |
- public void setFileStreCours(String fileStreCours) {
|
|
| 364 |
- this.fileStreCours = fileStreCours; |
|
| 365 |
- } |
|
| 366 |
- public String getStreFileNm() {
|
|
| 367 |
- return streFileNm; |
|
| 368 |
- } |
|
| 369 |
- public void setStreFileNm(String streFileNm) {
|
|
| 370 |
- this.streFileNm = streFileNm; |
|
| 371 |
- } |
|
| 372 |
- public String getFileExtsn() {
|
|
| 373 |
- return fileExtsn; |
|
| 374 |
- } |
|
| 375 |
- public void setFileExtsn(String fileExtsn) {
|
|
| 376 |
- this.fileExtsn = fileExtsn; |
|
| 377 |
- } |
|
| 378 |
- public String getStrImgPath() {
|
|
| 379 |
- return strImgPath; |
|
| 380 |
- } |
|
| 381 |
- public void setStrImgPath(String strImgPath) {
|
|
| 382 |
- this.strImgPath = strImgPath; |
|
| 383 |
- } |
|
| 384 |
- public String getUserIp() {
|
|
| 385 |
- return userIp; |
|
| 386 |
- } |
|
| 387 |
- public void setUserIp(String userIp) {
|
|
| 388 |
- this.userIp = userIp; |
|
| 389 |
- } |
|
| 390 |
- public String getRefundYn() {
|
|
| 391 |
- return refundYn; |
|
| 392 |
- } |
|
| 393 |
- public void setRefundYn(String refundYn) {
|
|
| 394 |
- this.refundYn = refundYn; |
|
| 395 |
- } |
|
| 396 | 82 |
|
| 397 | 83 |
} |
--- src/main/java/itn/let/mjo/msgdata/web/MjonMsgDataController.java
+++ src/main/java/itn/let/mjo/msgdata/web/MjonMsgDataController.java
... | ... | @@ -424,7 +424,8 @@ |
| 424 | 424 |
model.addAttribute("msgResendAllGroupId", searchVO.getMsgResendAllGroupId());
|
| 425 | 425 |
model.addAttribute("msgResendAllAdvertiseYn", searchVO.getMsgResendAllAdvertiseYn());
|
| 426 | 426 |
model.addAttribute("msgResendAllReplaceYn", searchVO.getMsgResendAllReplaceYn());
|
| 427 |
- |
|
| 427 |
+ |
|
| 428 |
+ model.addAttribute("tabDision", "tab01");
|
|
| 428 | 429 |
}catch(Exception ex) {
|
| 429 | 430 |
ex.printStackTrace(); |
| 430 | 431 |
|
... | ... | @@ -696,7 +697,8 @@ |
| 696 | 697 |
model.addAttribute("resultPhoList", resultPhoList);
|
| 697 | 698 |
paginationInfo.setTotalRecordCount( resultPhoList.size()> 0 ? ((Long)((EgovMap)resultPhoList.get(0)).get("totCnt")).intValue() : 0);
|
| 698 | 699 |
model.addAttribute("paginationInfo", paginationInfo);
|
| 699 |
- |
|
| 700 |
+ |
|
| 701 |
+ model.addAttribute("tabDision", searchVO.getTabDision());
|
|
| 700 | 702 |
return "web/msgdata/MsgDataSMLView"; |
| 701 | 703 |
} |
| 702 | 704 |
|
... | ... | @@ -794,7 +796,236 @@ |
| 794 | 796 |
* @throws Exception |
| 795 | 797 |
*/ |
| 796 | 798 |
@RequestMapping(value= {"/web/mjon/msgdata/excel/selectMsgExcelDataView.do"})
|
| 797 |
- public String selectMsgExcelDataView(@ModelAttribute("searchVO") MjonMsgDataVO searchVO, CateCode cateCode, ModelMap model) throws Exception{
|
|
| 799 |
+ public String selectMsgExcelDataView(@ModelAttribute("searchVO") MjonMsgDataVO searchVO,
|
|
| 800 |
+ @ModelAttribute("cateCodeVO") CateCode cateCode,
|
|
| 801 |
+ HttpServletRequest request, |
|
| 802 |
+ ModelMap model, |
|
| 803 |
+ RedirectAttributes redirectAttributes) throws Exception{
|
|
| 804 |
+ |
|
| 805 |
+ try {
|
|
| 806 |
+ |
|
| 807 |
+ /* |
|
| 808 |
+ * 문자 샘플 검색어에 한글,영문,숫자, 공백을 제외한 문자가 포함된 경우 |
|
| 809 |
+ * 검색이 안되도록 조치함. |
|
| 810 |
+ * 2023.05.02 우영두 |
|
| 811 |
+ * |
|
| 812 |
+ * */ |
|
| 813 |
+ String keyword = searchVO.getSearchKeyword(); |
|
| 814 |
+ if(keyword != null) {
|
|
| 815 |
+ |
|
| 816 |
+ keyword = URLDecoder.decode(keyword, "UTF-8"); |
|
| 817 |
+ keyword = keyword.replaceAll("[ㄱ-ㅎㅏ-ㅣ가-힣a-zA-Z0-9 ]", "");
|
|
| 818 |
+ |
|
| 819 |
+ if(!keyword.equals("")) {
|
|
| 820 |
+ |
|
| 821 |
+ System.out.println("==========================잘못된 접근 경로 정보 시작==========================================");
|
|
| 822 |
+ System.out.println("1. 접근 IP 정보 ::: " + request.getRemoteAddr());
|
|
| 823 |
+ |
|
| 824 |
+ System.out.println("전달 파라미터 값 ");
|
|
| 825 |
+ Set<String> keySet = request.getParameterMap().keySet(); |
|
| 826 |
+ int paramCnt = 2; |
|
| 827 |
+ for(String key: keySet) {
|
|
| 828 |
+ System.out.println(paramCnt + ". " +key + " : " + request.getParameter(key)); |
|
| 829 |
+ paramCnt++; |
|
| 830 |
+ } |
|
| 831 |
+ |
|
| 832 |
+ System.out.println("==========================잘못된 접근 경로 정보 종료==========================================");
|
|
| 833 |
+ |
|
| 834 |
+ redirectAttributes.addFlashAttribute("message", "잘못된 검색어입니다.");
|
|
| 835 |
+ RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/web/main/mainPage.do");
|
|
| 836 |
+ return redirectUrlMaker.getRedirectUrl(); |
|
| 837 |
+ |
|
| 838 |
+ } |
|
| 839 |
+ |
|
| 840 |
+ } |
|
| 841 |
+ |
|
| 842 |
+ //로그인 권한정보 불러오기 |
|
| 843 |
+ LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; |
|
| 844 |
+ model.addAttribute("loginVO", loginVO);
|
|
| 845 |
+ |
|
| 846 |
+ String categoryType = cateCode.getCateType(); |
|
| 847 |
+ |
|
| 848 |
+ if(categoryType == null) {
|
|
| 849 |
+ |
|
| 850 |
+ categoryType = "N"; |
|
| 851 |
+ |
|
| 852 |
+ } |
|
| 853 |
+ |
|
| 854 |
+ // 문자 카테고리 리스트 불러오기 |
|
| 855 |
+ //List<CateCode> cateConfList = letterService.selectCateConfWithList(categoryType); |
|
| 856 |
+ //2뎁스 카테고리만 조회하게 수정 |
|
| 857 |
+ List<CateCode> cateConfList = letterService.selectCateConfTwoDepthWithList(categoryType); |
|
| 858 |
+ model.addAttribute("cateCodeList", cateConfList);
|
|
| 859 |
+ |
|
| 860 |
+ // 문자 해쉬태그 리스트 불러오기 |
|
| 861 |
+ String msgType = "M"; //문자발송, 선거문자에서만 보여질 해시 태그리스트를 불러온다. |
|
| 862 |
+ List<HashConfVO> hashTagList = letterService.selectHashTagWithList(msgType); |
|
| 863 |
+ model.addAttribute("hashTagList", hashTagList);
|
|
| 864 |
+ |
|
| 865 |
+ // 문자 리스트 불러오기 |
|
| 866 |
+ LetterVO letterVO = new LetterVO(); |
|
| 867 |
+ if(letterVO.getPageUnit() != 10) {
|
|
| 868 |
+ letterVO.setPageUnit(letterVO.getPageUnit()); |
|
| 869 |
+ } |
|
| 870 |
+ |
|
| 871 |
+ letterVO.setLetterType(searchVO.getMsgType()); |
|
| 872 |
+ |
|
| 873 |
+ /** pageing */ |
|
| 874 |
+ PaginationInfo paginationInfo = new PaginationInfo(); |
|
| 875 |
+ paginationInfo.setCurrentPageNo(letterVO.getPageIndex()); |
|
| 876 |
+ paginationInfo.setRecordCountPerPage(letterVO.getPageUnit()); |
|
| 877 |
+ paginationInfo.setPageSize(letterVO.getPageSize()); |
|
| 878 |
+ |
|
| 879 |
+ letterVO.setFirstIndex(paginationInfo.getFirstRecordIndex()); |
|
| 880 |
+ letterVO.setLastIndex(paginationInfo.getLastRecordIndex()); |
|
| 881 |
+ letterVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage()); |
|
| 882 |
+ |
|
| 883 |
+ |
|
| 884 |
+ List<?> resultPhoList = mjonMsgDataService.selectPhotoLetterList(letterVO); |
|
| 885 |
+ |
|
| 886 |
+ model.addAttribute("resultPhoList", resultPhoList);
|
|
| 887 |
+ paginationInfo.setTotalRecordCount( resultPhoList.size()> 0 ? ((Long)((EgovMap)resultPhoList.get(0)).get("totCnt")).intValue() : 0);
|
|
| 888 |
+ model.addAttribute("paginationInfo", paginationInfo);
|
|
| 889 |
+ model.addAttribute("letterVO", letterVO);
|
|
| 890 |
+ |
|
| 891 |
+ //System.out.println(letterVO.getLetterType()); |
|
| 892 |
+ |
|
| 893 |
+ //발송결과 문자 재전송에서 넘어오는 경우 파마리터 전달 |
|
| 894 |
+ List<String> temp = searchVO.getMsgSeqList(); |
|
| 895 |
+ |
|
| 896 |
+ if(temp != null) {
|
|
| 897 |
+ |
|
| 898 |
+ model.addAttribute("reSendMsgVO", searchVO);
|
|
| 899 |
+ |
|
| 900 |
+ } |
|
| 901 |
+ |
|
| 902 |
+ //주소록에서 선택시 넘어오는 파라미터 |
|
| 903 |
+ if("Y".equals(searchVO.getMoveAddrFlag())) {
|
|
| 904 |
+ model.addAttribute("addrVO", searchVO);
|
|
| 905 |
+ } |
|
| 906 |
+ |
|
| 907 |
+ //주소록에서 선택시 넘어오는 파라미터 |
|
| 908 |
+ if("Y".equals(searchVO.getMoveAddrAllFlag())) {
|
|
| 909 |
+ AddrVO addrVO = new AddrVO(); |
|
| 910 |
+ |
|
| 911 |
+ String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); |
|
| 912 |
+ if(userId != "") {
|
|
| 913 |
+ addrVO.setMberId(userId); |
|
| 914 |
+ } |
|
| 915 |
+ addrVO.setRecordCountPerPage(100000); |
|
| 916 |
+ addrVO.setFirstIndex(0); |
|
| 917 |
+ addrVO.setSearchAddrGrpId(request.getParameter("searchAddrGrpId"));
|
|
| 918 |
+ addrVO.setSearchCondition(request.getParameter("searchCondition"));
|
|
| 919 |
+ addrVO.setSearchKeyword(request.getParameter("searchKeyword"));
|
|
| 920 |
+ addrVO.setStartKeyword(request.getParameter("startKeyword"));
|
|
| 921 |
+ List<AddrVO> addrList = addrService.selectAddrList(addrVO); |
|
| 922 |
+ |
|
| 923 |
+ List<String> addrIdList = new ArrayList<String>(); |
|
| 924 |
+ for(AddrVO item : addrList) {
|
|
| 925 |
+ addrIdList.add(item.getAddrId()); |
|
| 926 |
+ } |
|
| 927 |
+ |
|
| 928 |
+ searchVO.setAddrIdList(addrIdList); |
|
| 929 |
+ searchVO.setMoveAddrFlag("Y");
|
|
| 930 |
+ |
|
| 931 |
+ model.addAttribute("addrVO", searchVO);
|
|
| 932 |
+ } |
|
| 933 |
+ |
|
| 934 |
+ |
|
| 935 |
+ |
|
| 936 |
+ //맞춤문자에서 이미지 선택시 넘어오는 파라미터 |
|
| 937 |
+ if("Y".equals(searchVO.getCustomImgFlag())) {
|
|
| 938 |
+ |
|
| 939 |
+ model.addAttribute("customImgVO", searchVO);
|
|
| 940 |
+ |
|
| 941 |
+ } |
|
| 942 |
+ |
|
| 943 |
+ //메인화면에서 이미지 선택시 넘어오는 파라미터 |
|
| 944 |
+ if("Y".equals(searchVO.getMainImgFlag())) {
|
|
| 945 |
+ |
|
| 946 |
+ model.addAttribute("mainImgVO", searchVO);
|
|
| 947 |
+ |
|
| 948 |
+ } |
|
| 949 |
+ |
|
| 950 |
+ //메인화면 인기문자(단/장문) 선택시 넘어오는 파라미터 |
|
| 951 |
+ if("Y".equals(searchVO.getMainLetterFlag())) {
|
|
| 952 |
+ |
|
| 953 |
+ MjonMsgDataVO mainLetterVO = mjonMsgDataService.selectLetterCnById(searchVO); |
|
| 954 |
+ mainLetterVO.setMainLetterFlag(searchVO.getMainLetterFlag()); |
|
| 955 |
+ //기존 문자내용에서 줄바꿈 문자를 태그로 변환해줌 - 사용자 화면단의 스크립트에서 오류 발생 방지 |
|
| 956 |
+ mainLetterVO.setSmsTxt(mainLetterVO.getSmsTxt().replace("\r\n", "<br/>")
|
|
| 957 |
+ .replace("\r", "<br/>")
|
|
| 958 |
+ .replace("\n", "<br/>")
|
|
| 959 |
+ .replace("\n\r", "<br/>")
|
|
| 960 |
+ .replace("\"", "\\\"")
|
|
| 961 |
+ .replace("\'", "\\'"));
|
|
| 962 |
+ model.addAttribute("mainLetterVO", mainLetterVO);
|
|
| 963 |
+ |
|
| 964 |
+ } |
|
| 965 |
+ |
|
| 966 |
+ //메인화면 더많은 샘플 보기 선택시 넘어오는 파라미터 |
|
| 967 |
+ if("Y".equals(searchVO.getMainMoreSamFlag())) {
|
|
| 968 |
+ |
|
| 969 |
+ model.addAttribute("moreSampleYn", searchVO.getMainMoreSamFlag());
|
|
| 970 |
+ |
|
| 971 |
+ } |
|
| 972 |
+ |
|
| 973 |
+ //헤더 문자검색에서 넘어오는 파라미터 |
|
| 974 |
+ if("Y".equals(searchVO.getHeaderMsgSearchFlag())){
|
|
| 975 |
+ |
|
| 976 |
+ //공인 IP 구하기 |
|
| 977 |
+ String userIp = EgovClntInfo.getClntIP(request); |
|
| 978 |
+ //java.util.Scanner s = new java.util.Scanner(new java.net.URL("https://api.ipify.org").openStream(), "UTF-8").useDelimiter("\\A");
|
|
| 979 |
+ //userIp = s.next(); |
|
| 980 |
+ |
|
| 981 |
+ System.out.println(userIp); |
|
| 982 |
+ System.out.println(searchVO.getSearchKeyword()); |
|
| 983 |
+ |
|
| 984 |
+ |
|
| 985 |
+ |
|
| 986 |
+ //기존 검색된 단어가 있는지 체크 |
|
| 987 |
+ int searchWordCnt = mjonMsgDataService.selectMsgSearchWordCnt(searchVO); |
|
| 988 |
+ |
|
| 989 |
+ if(searchWordCnt > 0) {
|
|
| 990 |
+ |
|
| 991 |
+ searchVO.setUserIp(userIp); |
|
| 992 |
+ //기존 검색어가 있는 경우 검색 카운트만 증가시켜 준다. |
|
| 993 |
+ mjonMsgDataService.updateMsgSearchWordCnt(searchVO); |
|
| 994 |
+ |
|
| 995 |
+ }else {
|
|
| 996 |
+ |
|
| 997 |
+ searchVO.setUserIp(userIp); |
|
| 998 |
+ //문자검색어 디비 저장처리 |
|
| 999 |
+ int resultCnt = mjonMsgDataService.insertMsgSearchWordInfo(searchVO); |
|
| 1000 |
+ |
|
| 1001 |
+ } |
|
| 1002 |
+ |
|
| 1003 |
+ //문자검색 인기검색어 4개 불러오기 |
|
| 1004 |
+ List<?> resultSearchWordList = mjonMsgDataService.selectMsgSearchWordList(searchVO); |
|
| 1005 |
+ |
|
| 1006 |
+ model.addAttribute("resultSearchWordList", resultSearchWordList);
|
|
| 1007 |
+ model.addAttribute("headerMsgSearchVO", searchVO);
|
|
| 1008 |
+ |
|
| 1009 |
+ } |
|
| 1010 |
+ |
|
| 1011 |
+ // 문자 재전송 New |
|
| 1012 |
+ model.addAttribute("msgResendAllFlag", searchVO.getMsgResendAllFlag());
|
|
| 1013 |
+ model.addAttribute("msgResendAllGroupId", searchVO.getMsgResendAllGroupId());
|
|
| 1014 |
+ model.addAttribute("msgResendAllAdvertiseYn", searchVO.getMsgResendAllAdvertiseYn());
|
|
| 1015 |
+ model.addAttribute("msgResendAllReplaceYn", searchVO.getMsgResendAllReplaceYn());
|
|
| 1016 |
+ |
|
| 1017 |
+ model.addAttribute("tabDision", "tab02");
|
|
| 1018 |
+ |
|
| 1019 |
+ }catch(Exception ex) {
|
|
| 1020 |
+ ex.printStackTrace(); |
|
| 1021 |
+ |
|
| 1022 |
+ } |
|
| 1023 |
+ |
|
| 1024 |
+ return "web/msgdata/MsgDataView"; |
|
| 1025 |
+ } |
|
| 1026 |
+ |
|
| 1027 |
+ @RequestMapping(value= {"/web/mjon/msgdata/excel/selectMsgExcelDataView_backup.do"})
|
|
| 1028 |
+ public String selectMsgExcelDataView_backup(@ModelAttribute("searchVO") MjonMsgDataVO searchVO, CateCode cateCode, ModelMap model) throws Exception{
|
|
| 798 | 1029 |
|
| 799 | 1030 |
//로그인 권한정보 불러오기 |
| 800 | 1031 |
LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; |
... | ... | @@ -822,13 +1053,13 @@ |
| 822 | 1053 |
if(letterVO.getPageUnit() != 10) {
|
| 823 | 1054 |
letterVO.setPageUnit(letterVO.getPageUnit()); |
| 824 | 1055 |
} |
| 825 |
- |
|
| 1056 |
+ |
|
| 826 | 1057 |
/** pageing */ |
| 827 | 1058 |
PaginationInfo paginationInfo = new PaginationInfo(); |
| 828 | 1059 |
paginationInfo.setCurrentPageNo(letterVO.getPageIndex()); |
| 829 | 1060 |
paginationInfo.setRecordCountPerPage(letterVO.getPageUnit()); |
| 830 | 1061 |
paginationInfo.setPageSize(letterVO.getPageSize()); |
| 831 |
- |
|
| 1062 |
+ |
|
| 832 | 1063 |
letterVO.setFirstIndex(paginationInfo.getFirstRecordIndex()); |
| 833 | 1064 |
letterVO.setLastIndex(paginationInfo.getLastRecordIndex()); |
| 834 | 1065 |
letterVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage()); |
--- src/main/webapp/WEB-INF/jsp/web/msgdata/MsgDataSMLView.jsp
+++ src/main/webapp/WEB-INF/jsp/web/msgdata/MsgDataSMLView.jsp
... | ... | @@ -19,6 +19,11 @@ |
| 19 | 19 |
$(document).ready(function(){
|
| 20 | 20 |
|
| 21 | 21 |
|
| 22 |
+ console.log(' + $(#tabDision).val() : ',$('#tabDision').val())
|
|
| 23 |
+ if($('#tabDision').val() == 'tab02'){
|
|
| 24 |
+ $('#send_adYnY').prop('checked', true); // 상태 변경 및 이벤트 발생
|
|
| 25 |
+ advMsgInsert(); |
|
| 26 |
+ } |
|
| 22 | 27 |
|
| 23 | 28 |
//받는사람 연락처 내용 처리 |
| 24 | 29 |
//Tabulator AJAX Data Loading |
... | ... | @@ -3881,9 +3886,13 @@ |
| 3881 | 3886 |
|
| 3882 | 3887 |
<input type="hidden" id="blineCode" name="blineCode" value="<c:out value="${blineCode}"/>"/>
|
| 3883 | 3888 |
|
| 3889 |
+ <input type="hidden" id="tabDision" value="<c:out value="${tabDision}"/>"/>
|
|
| 3890 |
+ |
|
| 3884 | 3891 |
<!-- <div class="top_content current" id="tab1_1"> --> |
| 3885 | 3892 |
<div class="heading"> |
| 3886 |
- <h2>문자전송</h2> |
|
| 3893 |
+ <h2> |
|
| 3894 |
+ ${tabDision eq 'tab01' ? '문자전송' : (tabDision eq 'tab02' ? '대량문자/단체문자 발송' : '')}
|
|
| 3895 |
+ </h2> |
|
| 3887 | 3896 |
<button type="button" class="button info" onclick="infoPop('adrvertisement1');" style="right: 128px;">광고규정</button>
|
| 3888 | 3897 |
<button type="button" class="button info" onclick="infoPop('selectMsgDataView1');">사용안내</button>
|
| 3889 | 3898 |
</div> |
--- src/main/webapp/WEB-INF/jsp/web/msgdata/MsgDataView.jsp
+++ src/main/webapp/WEB-INF/jsp/web/msgdata/MsgDataView.jsp
... | ... | @@ -6,1783 +6,10 @@ |
| 6 | 6 |
|
| 7 | 7 |
<!-- <script src="/publish/js/content.js"></script> --> |
| 8 | 8 |
|
| 9 |
+<script type="text/javascript" src="<c:url value='/js/web/msgdata/init.js?date=20241218'/>"></script> |
|
| 10 |
+<script type="text/javascript" src="<c:url value='/js/web/msgdata/msgDataView.js?date=20241218'/>"></script> |
|
| 9 | 11 |
<script type="text/javascript"> |
| 10 | 12 |
|
| 11 |
-var _regExp1 = /(^02.{0}|^01.{1}|^[0-9]{3})-?([0-9]{3,4})-?([0-9]{4})$/;
|
|
| 12 |
- |
|
| 13 |
-var imgFilePath = []; // 최종 선택한 이미지 경로 저장 변수 |
|
| 14 |
-var imgFileId = []; // 최종 선택한 파일 아이디 저장 변수 |
|
| 15 |
-var templateYn = []; // 템플릿 사용 여부 저장 변수 |
|
| 16 |
-var tableL = null; //좌측 받는 사람 주소록 Tabulator 변수 |
|
| 17 |
-var tableR = null; //우측 주소록 불러오기 Tabulator 변수 |
|
| 18 |
-var tableAddr = null; //주소록 불러오기 팝업 Tabulator 변수 |
|
| 19 |
- |
|
| 20 |
-var loginVO = '${loginVO}';
|
|
| 21 |
- |
|
| 22 |
-var popCustomScrT=0; // 맞춤제작 요청 JSPark => 2023.02.21 추가 |
|
| 23 |
-var msgResendAllFlag = "${msgResendAllFlag}";
|
|
| 24 |
-var msgResendAllGroupId = "${msgResendAllGroupId}";
|
|
| 25 |
-var msgResendAllAdvertiseYn = "${msgResendAllAdvertiseYn}";
|
|
| 26 |
-var msgResendAllReplaceYn = "${msgResendAllReplaceYn}";
|
|
| 27 |
- |
|
| 28 |
-$(document).ready(function(){
|
|
| 29 |
- var tsMoreSampleYn = "${moreSampleYn}";
|
|
| 30 |
- var tsMainImgFlag = "${mainImgVO.mainImgFlag}";
|
|
| 31 |
- var tsMainLetterFlag = "${mainLetterVO.mainLetterFlag}";
|
|
| 32 |
- |
|
| 33 |
- //메인화면에서 샘플 더보기로 왔을 시 문자타입, 카테고리 세팅 |
|
| 34 |
- if(tsMoreSampleYn == 'Y'){
|
|
| 35 |
- document.letterForm.letterType.value = '${searchVO.mainLetterTypeFlag}';
|
|
| 36 |
- document.letterForm.categoryCode.value = "${cateCodeVO.cateNo}";
|
|
| 37 |
- } |
|
| 38 |
- //메인화면에서 그림문자샘플 클릭으로 왔을 시 문자타입, 카테고리 세팅 |
|
| 39 |
- if(tsMainImgFlag == 'Y'){
|
|
| 40 |
- document.letterForm.letterType.value = '${searchVO.mainLetterTypeFlag}';
|
|
| 41 |
- document.letterForm.categoryCode.value = "${cateCodeVO.cateNo}";
|
|
| 42 |
- } |
|
| 43 |
- //메인화면에서 단문장문 문자샘플 클릭으로 왔을 시 문자타입, 카테고리 세팅 |
|
| 44 |
- if(tsMainLetterFlag == 'Y'){
|
|
| 45 |
- document.letterForm.letterType.value = '${searchVO.mainLetterTypeFlag}';
|
|
| 46 |
- document.letterForm.categoryCode.value = "${cateCodeVO.cateNo}";
|
|
| 47 |
- } |
|
| 48 |
- |
|
| 49 |
- |
|
| 50 |
- //문자 발송 화면 폼 불러오기 |
|
| 51 |
- listMsgDataView(); |
|
| 52 |
- |
|
| 53 |
- //최 하단 문자 샘플 탭 리스트 내용 불러오기 |
|
| 54 |
- fnLetterListAjax(1); |
|
| 55 |
- |
|
| 56 |
- //최 하단 그림문자 탭 리스트 내용 불러오기 |
|
| 57 |
- fnPhotoListAjax(1); |
|
| 58 |
- |
|
| 59 |
- // 내보관함 리스트 로그인이 완료된 경우에만 로드되도록 |
|
| 60 |
- if(loginVO != "" && loginVO != null){
|
|
| 61 |
- //최 하단 내문자함 탭 리스트 내용 불러오기 |
|
| 62 |
- fnMyMsgListAjax(1); |
|
| 63 |
- } |
|
| 64 |
- |
|
| 65 |
- //그림문자 샘플 탭 활성화 시키기 |
|
| 66 |
- TabType2($('.tabType2 li').eq(1), '2');
|
|
| 67 |
- |
|
| 68 |
- //document.ready 마지막에 그림문자를 조회하기 때문에 letterForm.letterType이 P로 고정되는데, 메인에서 왔을 경우 letterType을 다시 원복하기 위한 작업 |
|
| 69 |
- if(tsMoreSampleYn == 'Y'){
|
|
| 70 |
- document.letterForm.letterType.value = '${searchVO.mainLetterTypeFlag}';
|
|
| 71 |
- document.letterForm.categoryCode.value = "${cateCodeVO.cateNo}";
|
|
| 72 |
- } |
|
| 73 |
- if(tsMainImgFlag == 'Y'){
|
|
| 74 |
- document.letterForm.letterType.value = '${searchVO.mainLetterTypeFlag}';
|
|
| 75 |
- document.letterForm.categoryCode.value = "${cateCodeVO.cateNo}";
|
|
| 76 |
- } |
|
| 77 |
- if(tsMainLetterFlag == 'Y'){
|
|
| 78 |
- document.letterForm.letterType.value = '${searchVO.mainLetterTypeFlag}';
|
|
| 79 |
- document.letterForm.categoryCode.value = "${cateCodeVO.cateNo}";
|
|
| 80 |
- } |
|
| 81 |
- |
|
| 82 |
- // 맞춤제작 요청 JSPark => 2023.02.21 추가 |
|
| 83 |
- //맞춤제작 등록 Popup |
|
| 84 |
- //customPopup(); |
|
| 85 |
-}); |
|
| 86 |
- |
|
| 87 |
-// 문자 그룹정보 => 재전송용 |
|
| 88 |
-function getMjMsgGroupInfoByResend() {
|
|
| 89 |
- $.ajax({
|
|
| 90 |
- type: "POST", |
|
| 91 |
- url: "/web/mjon/msgdata/selectMjMsgGroupInfoByResendAjax.do", |
|
| 92 |
- data: {"msgResendAllGroupId" : msgResendAllGroupId},
|
|
| 93 |
- dataType:'json', |
|
| 94 |
- async: false, |
|
| 95 |
- success: function (data) {
|
|
| 96 |
- //alert(JSON.stringify(data)); |
|
| 97 |
- if(data.isSuccess == true){
|
|
| 98 |
- var msgData = data.resultMsgInfo; |
|
| 99 |
- var fileData = data.resultMsgAddPhotoInfo; |
|
| 100 |
- |
|
| 101 |
- // 발신번호 |
|
| 102 |
- var reCallFrom = $.trim(removeDash($("#callFromList option:selected").val()));
|
|
| 103 |
- if ($.trim(removeDash(msgData.callFrom)) != reCallFrom) {
|
|
| 104 |
- alert("발신번호가 이전에 발송한 번호가 아닙니다.\n발신번호를 확인해주세요.")
|
|
| 105 |
- } |
|
| 106 |
- |
|
| 107 |
- var smsTxt = msgData.smsTxt; |
|
| 108 |
- var subject = msgData.subject; |
|
| 109 |
- var fileId = ""; |
|
| 110 |
- var filePath = ""; |
|
| 111 |
- var len = fileData.length; |
|
| 112 |
- |
|
| 113 |
- // 기존 내용 지워주기 |
|
| 114 |
- //$(".btnReset").trigger("click");
|
|
| 115 |
- $('.delLi').each(function(){
|
|
| 116 |
- $(this).remove(); |
|
| 117 |
- }); |
|
| 118 |
- |
|
| 119 |
- $('.preBoxF').each(function(){
|
|
| 120 |
- $(this).remove(); |
|
| 121 |
- }); |
|
| 122 |
- |
|
| 123 |
- $('#imgCnt').val(0);
|
|
| 124 |
- |
|
| 125 |
- // 기존 imgFileId, imgFilePath 배열에 있는 내용 초기화 해주기 |
|
| 126 |
- imgFilePath = []; |
|
| 127 |
- imgFileId = []; |
|
| 128 |
- |
|
| 129 |
- // 문자제목 |
|
| 130 |
- if (msgData.subject != null && msgData.subject != "") {
|
|
| 131 |
- $('.msg_title').addClass('active');
|
|
| 132 |
- $("input:radio[name='title_status']:radio[value='Y']").prop('checked', true); // 선택하기
|
|
| 133 |
- $('.textbox').show();
|
|
| 134 |
- $("#mmsSubject").val(subject);
|
|
| 135 |
- } |
|
| 136 |
- |
|
| 137 |
- // 문자내용 |
|
| 138 |
- if (smsTxt.indexOf("(광고)") == 0) {
|
|
| 139 |
- $('#send_adYnY').prop('checked', true);
|
|
| 140 |
- |
|
| 141 |
- //광고 상하단 내용 넣어주기 |
|
| 142 |
- advMsgInsert(); |
|
| 143 |
- |
|
| 144 |
- // 광고 기본정보 제거 |
|
| 145 |
- smsTxt = $.trim(smsTxt.replace("(광고)", ""));
|
|
| 146 |
- var smsTxtLastIdxCnt = smsTxt.lastIndexOf("무료거부");
|
|
| 147 |
- if (smsTxtLastIdxCnt != -1) {
|
|
| 148 |
- smsTxt = $.trim(smsTxt.substring(0, smsTxtLastIdxCnt)); |
|
| 149 |
- } |
|
| 150 |
- } |
|
| 151 |
- $('#smsTxtArea').val(smsTxt);
|
|
| 152 |
- |
|
| 153 |
- // 첨부 이미지가 있는경우 이미지 처리해주기 |
|
| 154 |
- if(len > 0) {
|
|
| 155 |
- for(var i=0; i < len; i++) {
|
|
| 156 |
- var num = i + 1; |
|
| 157 |
- var imgId = fileData[i].atchFileId; |
|
| 158 |
- var imgSn = fileData[i].fileSn; |
|
| 159 |
- var fileStreCours = fileData[i].fileStreCours; |
|
| 160 |
- var streFileNm = fileData[i].streFileNm; |
|
| 161 |
- var fileExtsn = fileData[i].fileExtsn; |
|
| 162 |
- |
|
| 163 |
- /* var imgSrc = fileStreCours + "/" + streFileNm + "." + fileExtsn; */ |
|
| 164 |
- var imgSrc = '/cmm/fms/getImage2.do?atchFileId=' + imgId + '&fileSn=' + imgSn; |
|
| 165 |
- myMsgImageControl(imgSrc, "edit_n", "Template", imgId); |
|
| 166 |
- } |
|
| 167 |
- |
|
| 168 |
- fnByteString($('#smsTxtArea').val());
|
|
| 169 |
- } |
|
| 170 |
- else {
|
|
| 171 |
- fnByteString($('#smsTxtArea').val());
|
|
| 172 |
- } |
|
| 173 |
- |
|
| 174 |
- // 문자전송 상단으로 이동 |
|
| 175 |
- var sendOfT=$('.send_top').offset().top;
|
|
| 176 |
- $('html,body').stop().animate({'scrollTop':sendOfT-60},250);
|
|
| 177 |
- |
|
| 178 |
- } else {
|
|
| 179 |
- //alert("Message : " + msg);
|
|
| 180 |
- } |
|
| 181 |
- }, |
|
| 182 |
- error: function (e) {
|
|
| 183 |
- //alert("저장에 실패하였습니다.");
|
|
| 184 |
- //console.log("ERROR : ", e);
|
|
| 185 |
- } |
|
| 186 |
- }); |
|
| 187 |
-} |
|
| 188 |
- |
|
| 189 |
-// 문자 상세정보 => 재전송용 |
|
| 190 |
-function getMjMsgListByResend() {
|
|
| 191 |
- $.ajax({
|
|
| 192 |
- type: "POST", |
|
| 193 |
- url: "/web/mjon/msgdata/selectMjMsgListByResendAjax.do", |
|
| 194 |
- data: {"msgResendAllGroupId" : msgResendAllGroupId},
|
|
| 195 |
- dataType:'json', |
|
| 196 |
- async: false, |
|
| 197 |
- success: function (data) {
|
|
| 198 |
- console.log('data : ', data);
|
|
| 199 |
- if(data.isSuccess == true){
|
|
| 200 |
- var listCnt = data.resultList.length; |
|
| 201 |
- |
|
| 202 |
- //수신자 처리 변수 |
|
| 203 |
- var callToList = []; //수신자 처리 리스트 |
|
| 204 |
- var tableData = []; //수신자 tabulator 처리 변수 |
|
| 205 |
- |
|
| 206 |
- for(var i = 0; i < listCnt; i++){ // 수신자 리스트 Tabulator에 입력해 주기
|
|
| 207 |
- callToList[i] = data.resultList[i].callTo; |
|
| 208 |
- tableData.push({phone: removeDash(callToList[i])});
|
|
| 209 |
- } |
|
| 210 |
- |
|
| 211 |
- console.log('tableData : ', tableData);
|
|
| 212 |
- if(tableData.length > 0){
|
|
| 213 |
- |
|
| 214 |
- // 데이터 추가 |
|
| 215 |
- setTimeout(() => {
|
|
| 216 |
- tableL.addData(dupliPhoneData(tableData)); |
|
| 217 |
- totRows = tableL.getRows().length; |
|
| 218 |
- console.log('totRows : ', totRows);
|
|
| 219 |
- updateTotCnt(totRows); //전체 데이터 갯수 구하기 |
|
| 220 |
- |
|
| 221 |
- //결제 금액 구하기 |
|
| 222 |
- totalPriceSum(totRows); |
|
| 223 |
- }, 0); // 초기화 직후에 실행 |
|
| 224 |
- } |
|
| 225 |
- |
|
| 226 |
- } else {
|
|
| 227 |
- //alert("Message : " + msg);
|
|
| 228 |
- } |
|
| 229 |
- }, |
|
| 230 |
- error: function (e) {
|
|
| 231 |
- //alert("저장에 실패하였습니다.");
|
|
| 232 |
- //console.log("ERROR : ", e);
|
|
| 233 |
- } |
|
| 234 |
- }); |
|
| 235 |
-} |
|
| 236 |
- |
|
| 237 |
-// 문자발송 URL Move |
|
| 238 |
-function goMsgUrlMove() {
|
|
| 239 |
- document.location.href = "/web/mjon/msgdata/selectMsgDataView.do"; |
|
| 240 |
-} |
|
| 241 |
- |
|
| 242 |
-function listMsgDataView(){
|
|
| 243 |
- |
|
| 244 |
- var sendData = $(document.searchForm).serializeArray() ; |
|
| 245 |
- $(".contentArea").load("/web/mjon/msgdata/selectMsgDataSMLViewAjax.do", sendData ,function(response, status, xhr){
|
|
| 246 |
- |
|
| 247 |
- //문자 재전송 및 주소록 전달 처리를 위해 사용 |
|
| 248 |
- $("#msgForm").ready(function(){ //문자 내용 폼이 로드된 후 실행
|
|
| 249 |
- |
|
| 250 |
- //헤더 문자검색 결과 처리 |
|
| 251 |
- var headerMsgSearchFlag = '${headerMsgSearchVO.headerMsgSearchFlag}';
|
|
| 252 |
- |
|
| 253 |
- if(headerMsgSearchFlag == 'Y'){
|
|
| 254 |
- |
|
| 255 |
- var letterType = '${headerMsgSearchVO.msgType}';
|
|
| 256 |
- var form = document.letterForm; |
|
| 257 |
- var searchKeyword = '${headerMsgSearchVO.searchKeyword}';
|
|
| 258 |
- form.letterType.value = letterType; |
|
| 259 |
- form.searchKeyword.value = searchKeyword; |
|
| 260 |
- |
|
| 261 |
- if(letterType == 'P'){
|
|
| 262 |
- |
|
| 263 |
- //최 하단 그림문자 탭 리스트 내용 불러오기 |
|
| 264 |
- fnPhotoListAjax(1); |
|
| 265 |
- |
|
| 266 |
- //문자 샘플 탭 활성화 시키기 |
|
| 267 |
- TabType2($('.tabType2 li').eq(1), '2');
|
|
| 268 |
- //하단 리스트 탭으로 이동 시키기 |
|
| 269 |
- var offset = $('.tabType2').offset();
|
|
| 270 |
- $('html').animate({scrollTop : offset.top}, 400);
|
|
| 271 |
- |
|
| 272 |
- }else if(letterType == 'L' || letterType == 'S' ){
|
|
| 273 |
- |
|
| 274 |
- //문자 샘플 탭 활성화 시키기 |
|
| 275 |
- TabType2($('.tabType2 li').eq(0), '1');
|
|
| 276 |
- |
|
| 277 |
- //최 하단 문자 샘플 탭 리스트 내용 불러오기 |
|
| 278 |
- fnLetterListAjax(1); |
|
| 279 |
- if(letterType == 'S'){
|
|
| 280 |
- |
|
| 281 |
- $('.tDep1_letType a').eq(0).addClass('on');
|
|
| 282 |
- $('.tDep1_letType a:last-child').removeClass('on');
|
|
| 283 |
- |
|
| 284 |
- }else{
|
|
| 285 |
- |
|
| 286 |
- $('.tDep1_letType a').eq(0).removeClass('on');
|
|
| 287 |
- $('.tDep1_letType a:last-child').addClass('on');
|
|
| 288 |
- |
|
| 289 |
- } |
|
| 290 |
- |
|
| 291 |
- //하단 리스트 탭으로 이동 시키기 |
|
| 292 |
- var offset = $('.tabType2').offset();
|
|
| 293 |
- $('html').animate({scrollTop : offset.top}, 400);
|
|
| 294 |
- |
|
| 295 |
- } |
|
| 296 |
- |
|
| 297 |
- |
|
| 298 |
- } |
|
| 299 |
- |
|
| 300 |
- |
|
| 301 |
- //메인화면 더많은 샘플보기 버튼 선택시 처리 |
|
| 302 |
- var moreSamFlag = '${moreSampleYn}';
|
|
| 303 |
- |
|
| 304 |
- if(moreSamFlag == 'Y'){
|
|
| 305 |
- |
|
| 306 |
- //문자 샘플 탭 활성화 시키기 |
|
| 307 |
- var mainLetterTypeFlag = '${searchVO.mainLetterTypeFlag}';
|
|
| 308 |
- var letterTab = '0'; |
|
| 309 |
- var cateNo = "${cateCodeVO.cateNo}";
|
|
| 310 |
- if(mainLetterTypeFlag == 'P'){
|
|
| 311 |
- TabType2($('.tabType2 li').eq(1), '2');
|
|
| 312 |
- }else{
|
|
| 313 |
- TabType2($('.tabType2 li').eq(letterTab), '1');
|
|
| 314 |
- } |
|
| 315 |
- //장문 일 시 tDep1_letType 탭 세팅 |
|
| 316 |
- if(mainLetterTypeFlag == 'L'){
|
|
| 317 |
- $('.tDep1_letType a').removeClass('on');
|
|
| 318 |
- $('.tDep1_letType a').eq(1).addClass('on');
|
|
| 319 |
- } |
|
| 320 |
- |
|
| 321 |
- //카테고리 탭 활성화 처리 |
|
| 322 |
- if(mainLetterTypeFlag == 'P'){ //그림문자 샘플로 이동 왔을 시
|
|
| 323 |
- $('.tDep2_cateCode').find('.on').removeClass('on');
|
|
| 324 |
- $('.tDep2_cateCode a').each(function(index){
|
|
| 325 |
- if($(this).attr('value') == cateNo){
|
|
| 326 |
- $(this).addClass('on');
|
|
| 327 |
- } |
|
| 328 |
- }) |
|
| 329 |
- } |
|
| 330 |
- if(mainLetterTypeFlag != 'P'){ //단문,장문 샘플로 왔을 시
|
|
| 331 |
- $('.tDep1_cateCode').find('.on').removeClass('on');
|
|
| 332 |
- $('.tDep1_cateCode a').each(function(index){
|
|
| 333 |
- if($(this).attr('value') == cateNo){
|
|
| 334 |
- $(this).addClass('on');
|
|
| 335 |
- } |
|
| 336 |
- }) |
|
| 337 |
- } |
|
| 338 |
- |
|
| 339 |
- |
|
| 340 |
- //하단 리스트 탭으로 이동 시키기 |
|
| 341 |
- var offset = $('.tabType2').offset();
|
|
| 342 |
- $('html').animate({scrollTop : offset.top}, 400);
|
|
| 343 |
- |
|
| 344 |
- |
|
| 345 |
- } |
|
| 346 |
- |
|
| 347 |
- |
|
| 348 |
- //메인화면 그림문자 이미지 선택시 처리 |
|
| 349 |
- var mainImgFlag = '${mainImgVO.mainImgFlag}';
|
|
| 350 |
- if(mainImgFlag == 'Y'){
|
|
| 351 |
- //카테고리 처리 |
|
| 352 |
- var cateNo = "${cateCodeVO.cateNo}";
|
|
| 353 |
- $('.tDep2_cateCode').find('.on').removeClass('on');
|
|
| 354 |
- $('.tDep2_cateCode a').each(function(index){
|
|
| 355 |
- if($(this).attr('value') == cateNo){
|
|
| 356 |
- $(this).addClass('on');
|
|
| 357 |
- } |
|
| 358 |
- }) |
|
| 359 |
- |
|
| 360 |
- |
|
| 361 |
- var atchFileId = '${mainImgVO.atchFileId1}';
|
|
| 362 |
- var fileSn = '${mainImgVO.fileSn}';
|
|
| 363 |
- var strImgPath = '${mainImgVO.strImgPath}';
|
|
| 364 |
- |
|
| 365 |
- fnCustomImgSendMsg(atchFileId, fileSn, strImgPath); |
|
| 366 |
- |
|
| 367 |
- } |
|
| 368 |
- |
|
| 369 |
- //메인화면 인기문자 메세지 선택시 처리 |
|
| 370 |
- var mainLetterFlag = '${mainLetterVO.mainLetterFlag}';
|
|
| 371 |
- if(mainLetterFlag == 'Y'){
|
|
| 372 |
- var letterTab = '0'; |
|
| 373 |
- //문자샘플 활성화 처리 |
|
| 374 |
- TabType2($('.tabType2 li').eq(0), '1');
|
|
| 375 |
- //단문,장문 탭 활성화 처리 |
|
| 376 |
- var mainLetterTypeFlag = '${searchVO.mainLetterTypeFlag}';
|
|
| 377 |
- if(mainLetterTypeFlag == 'L'){
|
|
| 378 |
- $('.tDep1_letType a').removeClass('on');
|
|
| 379 |
- $('.tDep1_letType a').eq(1).addClass('on');
|
|
| 380 |
- } |
|
| 381 |
- //카테고리 활성화 처리 |
|
| 382 |
- var cateNo = "${cateCodeVO.cateNo}";
|
|
| 383 |
- $('.tDep1_cateCode').find('.on').removeClass('on');
|
|
| 384 |
- $('.tDep1_cateCode a').each(function(index){
|
|
| 385 |
- if($(this).attr('value') == cateNo){
|
|
| 386 |
- $(this).addClass('on');
|
|
| 387 |
- } |
|
| 388 |
- }) |
|
| 389 |
- var smsTxt = '${mainLetterVO.smsTxt}';
|
|
| 390 |
- if(smsTxt != null){
|
|
| 391 |
- |
|
| 392 |
- smsTxt = smsTxt.replaceAll("<br/>", "\n"); //줄발꿈문자 변환하기
|
|
| 393 |
- $("#smsTxtArea").val(smsTxt);
|
|
| 394 |
- fnByteString(smsTxt); |
|
| 395 |
- |
|
| 396 |
- } |
|
| 397 |
- |
|
| 398 |
- } |
|
| 399 |
- |
|
| 400 |
- //맞춤제작 내보관함 이미지 선택시 처리 |
|
| 401 |
- var customImgFlag = '${customImgVO.customImgFlag}';
|
|
| 402 |
- if(customImgFlag == 'Y'){
|
|
| 403 |
- |
|
| 404 |
- var atchFileId = '${customImgVO.atchFileId1}';
|
|
| 405 |
- var fileSn = '${customImgVO.fileSn}';
|
|
| 406 |
- var strImgPath = '${customImgVO.strImgPath}';
|
|
| 407 |
- |
|
| 408 |
- fnCustomImgSendMsg(atchFileId, fileSn, strImgPath); |
|
| 409 |
- |
|
| 410 |
- } |
|
| 411 |
- |
|
| 412 |
- //문자 재전송 처리 |
|
| 413 |
- var msgResendFlag = '${reSendMsgVO.msgResendFlag}';
|
|
| 414 |
- var msgSeqList = []; |
|
| 415 |
- msgSeqList = '${reSendMsgVO.msgSeqList}';
|
|
| 416 |
- if(msgSeqList.length > 0){
|
|
| 417 |
- |
|
| 418 |
- fnMsgResend(msgResendFlag, msgSeqList); |
|
| 419 |
- |
|
| 420 |
- } |
|
| 421 |
- |
|
| 422 |
- //주소록에서 주소를 전송한 경우 처리 |
|
| 423 |
- var moveAddrFlag = '${addrVO.moveAddrFlag}';
|
|
| 424 |
- var addrIdList = []; |
|
| 425 |
- addrIdList = '${addrVO.addrIdList}';
|
|
| 426 |
- if(addrIdList.length > 0) {
|
|
| 427 |
- fnAddrSet(moveAddrFlag, addrIdList); |
|
| 428 |
- } |
|
| 429 |
- |
|
| 430 |
- // 문자 재전송 New |
|
| 431 |
- if (msgResendAllFlag == "Y") {
|
|
| 432 |
- if (msgResendAllReplaceYn != "Y") {
|
|
| 433 |
- // 문자 그룹정보 => 재전송용 |
|
| 434 |
- getMjMsgGroupInfoByResend(); |
|
| 435 |
- } |
|
| 436 |
- |
|
| 437 |
- // 문자 상세정보 => 재전송용 |
|
| 438 |
- getMjMsgListByResend(); |
|
| 439 |
- } |
|
| 440 |
- |
|
| 441 |
- }); |
|
| 442 |
- |
|
| 443 |
- }).slideDown(); |
|
| 444 |
-} |
|
| 445 |
- |
|
| 446 |
-function fnCustomImgSendMsg(atchFileId, fileSn, filePath){
|
|
| 447 |
- |
|
| 448 |
- |
|
| 449 |
- var imgId = ""; |
|
| 450 |
- var imgSrc = ""; |
|
| 451 |
- |
|
| 452 |
- /* imgSrc = filePath.replace("/usr/local/tomcat_mjon/webapps/mjon",""); */
|
|
| 453 |
- /* imgSrc = filePath; */ |
|
| 454 |
- imgId = atchFileId; |
|
| 455 |
- |
|
| 456 |
- imgSrc = '/cmm/fms/getImage2.do?atchFileId=' + atchFileId + '&fileSn=' + fileSn; |
|
| 457 |
- |
|
| 458 |
- myMsgImageControl(imgSrc, "edit_n", "Template", imgId); |
|
| 459 |
- |
|
| 460 |
-} |
|
| 461 |
- |
|
| 462 |
-function fnMsgResend(msgResendFlag, msgSeqList){
|
|
| 463 |
- |
|
| 464 |
- if(msgResendFlag == 'Y'){ // 문자재전송에서 넘어오는 경우
|
|
| 465 |
- |
|
| 466 |
- var form = document.msgResendForm; |
|
| 467 |
- form.msgSeqList.value = msgSeqList; |
|
| 468 |
- |
|
| 469 |
- var data = new FormData(form); |
|
| 470 |
- url = "/web/mjon/msgdata/selectReSendMsgDataListAjax.do"; |
|
| 471 |
- |
|
| 472 |
- $.ajax({
|
|
| 473 |
- type: "POST", |
|
| 474 |
- url: url, |
|
| 475 |
- data: data, |
|
| 476 |
- dataType:'json', |
|
| 477 |
- async: false, |
|
| 478 |
- processData: false, |
|
| 479 |
- contentType: false, |
|
| 480 |
- cache: false, |
|
| 481 |
- success: function (returnData, status) {
|
|
| 482 |
- if(status == 'success'){ // status 확인 필요한가. 석세스 안뜨면 에러 가지 않나
|
|
| 483 |
- if("fail"==returnData.result){
|
|
| 484 |
- |
|
| 485 |
- alert(returnData.message); |
|
| 486 |
- return false; |
|
| 487 |
- |
|
| 488 |
- }else if("loginFail"==returnData.result){
|
|
| 489 |
- |
|
| 490 |
- alert(returnData.message); |
|
| 491 |
- return false; |
|
| 492 |
- |
|
| 493 |
- }else if(returnData.resultListCnt == '0'){
|
|
| 494 |
- |
|
| 495 |
- alert("재전송 문자내용이 없습니다.");
|
|
| 496 |
- return false; |
|
| 497 |
- |
|
| 498 |
- }else{
|
|
| 499 |
- |
|
| 500 |
- var data = returnData; |
|
| 501 |
- var listCnt = returnData.resultListCnt; |
|
| 502 |
- var photoInfo = returnData.resultMsgPhotoInfo; |
|
| 503 |
- //수신자 처리 변수 |
|
| 504 |
- var callToList = []; //수신자 처리 리스트 |
|
| 505 |
- var tableData = []; //수신자 tabulator 처리 변수 |
|
| 506 |
- |
|
| 507 |
- //var subject = data.resultList[0].subject; //제목 |
|
| 508 |
- //var smsTxt = data.resultList[0].smsTxt; //문자내용 |
|
| 509 |
- //var fileCnt = data.resultList[0].fileCnt; //그림문자 이미지 갯수 |
|
| 510 |
- //var filePath1 = data.resultList[0].fileType1; //이미지1 파일 경로 |
|
| 511 |
- //var filePath2 = data.resultList[0].fileType2; //이미지2 파일 경로 |
|
| 512 |
- //var filePath3 = data.resultList[0].fileType3; //이미지3 파일 경로 |
|
| 513 |
- //var atchFileId1 = photoInfo.atchFileId1; //이미지1 파일 번호 |
|
| 514 |
- //var atchFileId2 = photoInfo.atchFileId2; //이미지2 파일 번호 |
|
| 515 |
- //var atchFileId3 = photoInfo.atchFileId3; //이미지3 파일 번호 |
|
| 516 |
- |
|
| 517 |
- |
|
| 518 |
- for(var i = 0; i < listCnt; i++){ // 수신자 리스트 Tabulator에 입력해 주기
|
|
| 519 |
- |
|
| 520 |
- callToList[i] = data.resultList[i].callTo; |
|
| 521 |
- tableData.push({phone: removeDash(callToList[i])});
|
|
| 522 |
- |
|
| 523 |
- } |
|
| 524 |
- |
|
| 525 |
- if(tableData.length > 0){
|
|
| 526 |
- |
|
| 527 |
- tableL.addData(dupliPhoneData(tableData)); // 받는사람 목록에 주소 정보 입력하기 |
|
| 528 |
- |
|
| 529 |
- //totRows = tableL.getRows().length; |
|
| 530 |
- //updateTotCnt(totRows); //전체 데이터 갯수 구하기 |
|
| 531 |
- |
|
| 532 |
- //결제 금액 구하기 |
|
| 533 |
- //totalPriceSum(totRows); |
|
| 534 |
- |
|
| 535 |
- } |
|
| 536 |
- |
|
| 537 |
- return false; |
|
| 538 |
- |
|
| 539 |
- } |
|
| 540 |
- |
|
| 541 |
- } else if(status== 'fail'){
|
|
| 542 |
- alert(returnData.message); |
|
| 543 |
- } |
|
| 544 |
- }, |
|
| 545 |
- error: function (e) { alert("문자 재전송 번호 등록에 실패하였습니다."); console.log("ERROR : ", e); }
|
|
| 546 |
- }); |
|
| 547 |
- |
|
| 548 |
- } |
|
| 549 |
- |
|
| 550 |
-} |
|
| 551 |
- |
|
| 552 |
- |
|
| 553 |
-function fnAddrSet(moveAddrFlag, addrIdList){
|
|
| 554 |
- |
|
| 555 |
- if(moveAddrFlag == 'Y'){ // 주소록에서 넘어오는 경우
|
|
| 556 |
- |
|
| 557 |
- var form = document.moveAddrForm; |
|
| 558 |
- form.addrIdList.value = addrIdList; |
|
| 559 |
- |
|
| 560 |
- var data = new FormData(form); |
|
| 561 |
- url = "/web/mjon/addr/selectAddrDataListAjax.do"; |
|
| 562 |
- |
|
| 563 |
- $.ajax({
|
|
| 564 |
- type: "POST", |
|
| 565 |
- url: url, |
|
| 566 |
- data: data, |
|
| 567 |
- dataType:'json', |
|
| 568 |
- async: true, |
|
| 569 |
- processData: false, |
|
| 570 |
- contentType: false, |
|
| 571 |
- cache: false, |
|
| 572 |
- success: function (returnData, status) {
|
|
| 573 |
- if(status == 'success'){ // status 확인 필요한가. 석세스 안뜨면 에러 가지 않나
|
|
| 574 |
- if("fail"==returnData.result){
|
|
| 575 |
- |
|
| 576 |
- alert(returnData.message); |
|
| 577 |
- return false; |
|
| 578 |
- |
|
| 579 |
- }else if("loginFail"==returnData.result){
|
|
| 580 |
- |
|
| 581 |
- alert(returnData.message); |
|
| 582 |
- return false; |
|
| 583 |
- |
|
| 584 |
- }else if(returnData.resultListCnt == '0'){
|
|
| 585 |
- |
|
| 586 |
- alert("전달된 주소록이 없습니다.");
|
|
| 587 |
- return false; |
|
| 588 |
- |
|
| 589 |
- }else{
|
|
| 590 |
- |
|
| 591 |
- var listCnt = returnData.resultListCnt; |
|
| 592 |
- |
|
| 593 |
- //수신자 처리 변수 |
|
| 594 |
- var tableData = []; //수신자 tabulator 처리 변수 |
|
| 595 |
- |
|
| 596 |
- for(var i = 0; i < listCnt; i++){ // 수신자 리스트 Tabulator에 입력해 주기
|
|
| 597 |
- |
|
| 598 |
- tableData.push({
|
|
| 599 |
- name: returnData.resultList[i].addrNm |
|
| 600 |
- ,phone: removeDash(returnData.resultList[i].addrPhoneNo) |
|
| 601 |
- ,rep1: returnData.resultList[i].addrInfo1 |
|
| 602 |
- ,rep2: returnData.resultList[i].addrInfo2 |
|
| 603 |
- ,rep3: returnData.resultList[i].addrInfo3 |
|
| 604 |
- ,rep4: returnData.resultList[i].addrInfo4 |
|
| 605 |
- }); |
|
| 606 |
- |
|
| 607 |
- } |
|
| 608 |
- |
|
| 609 |
- tableL.addData(dupliPhoneData(tableData)); // 받는사람 목록에 주소 정보 입력하기 |
|
| 610 |
- |
|
| 611 |
- totRows = tableL.getRows().length; |
|
| 612 |
- updateTotCnt(totRows); //전체 데이터 갯수 구하기 |
|
| 613 |
- |
|
| 614 |
- //결제 금액 구하기 |
|
| 615 |
- totalPriceSum(totRows); |
|
| 616 |
- |
|
| 617 |
- return false; |
|
| 618 |
- |
|
| 619 |
- } |
|
| 620 |
- |
|
| 621 |
- } else if(status== 'fail'){
|
|
| 622 |
- alert(returnData.message); |
|
| 623 |
- } |
|
| 624 |
- }, |
|
| 625 |
- error: function (e) {
|
|
| 626 |
- alert("주소록 가져오기에 실패하였습니다.");
|
|
| 627 |
- console.log("ERROR : ", e);
|
|
| 628 |
- }, |
|
| 629 |
- beforeSend : function(xmlHttpRequest) {
|
|
| 630 |
- //로딩창 show |
|
| 631 |
- $('.loading_layer').addClass('active');
|
|
| 632 |
- }, |
|
| 633 |
- complete : function(xhr, textStatus) {
|
|
| 634 |
- //로딩창 hide |
|
| 635 |
- $('.loading_layer').removeClass('active');
|
|
| 636 |
- } |
|
| 637 |
- }); |
|
| 638 |
- |
|
| 639 |
- } |
|
| 640 |
- |
|
| 641 |
-} |
|
| 642 |
- |
|
| 643 |
-function fnLetterListAjax(index){
|
|
| 644 |
- var form = document.letterForm; |
|
| 645 |
- var letterType = form.letterType.value; |
|
| 646 |
- |
|
| 647 |
- if($('.tDep1_letType a').eq(0).hasClass('on')) {
|
|
| 648 |
- form.letterType.value='S'; |
|
| 649 |
- } else if ($('.tDep1_letType a').eq(1).hasClass('on')) {
|
|
| 650 |
- form.letterType.value='L'; |
|
| 651 |
- } |
|
| 652 |
- |
|
| 653 |
- //검색자 입력 검색 시 카테고리, 해쉬태그 전체 초기화 |
|
| 654 |
- if(form.searchKeyword.value != '') {
|
|
| 655 |
- form.categoryCode.value = ""; |
|
| 656 |
- form.hashTag.value = ""; |
|
| 657 |
- |
|
| 658 |
- $('.tDep1_cateCode').find('.on').removeClass('on');
|
|
| 659 |
- $('.tDep1_cateCode').find('.cateAll').addClass('on');
|
|
| 660 |
- $('.tDep1_hashTag').find('.on').removeClass('on');
|
|
| 661 |
- $('.tDep1_hashTag').find('.hashAll').addClass('on');
|
|
| 662 |
- }else{
|
|
| 663 |
- //해시태그가 선택되어 있을 경우 해당 태그 검색어를 전달해줌 |
|
| 664 |
- var strTagTxt = $('.tDep1_hashTag').find('.on').text().replace("#","");
|
|
| 665 |
- if(strTagTxt == "전체"){
|
|
| 666 |
- form.hashTag.value = ""; |
|
| 667 |
- }else{
|
|
| 668 |
- form.hashTag.value = strTagTxt; |
|
| 669 |
- } |
|
| 670 |
- } |
|
| 671 |
- |
|
| 672 |
- form.pageIndex.value = index; |
|
| 673 |
- form.letterType.value = letterType; |
|
| 674 |
- var sendData = $(document.letterForm).serializeArray(); |
|
| 675 |
- //하위 카테고리 |
|
| 676 |
- $("#tDep1_depThrCateCode").load("/web/mjon/msgdata/selectCateConfThrDptListAjax.do", sendData ,function(response, status, xhr){
|
|
| 677 |
- if(document.letterForm.searchKeyword.value == ''){
|
|
| 678 |
- $('.bottom_content .area_total_count').hide();
|
|
| 679 |
- } |
|
| 680 |
- if(form.hashTag.value != ''){
|
|
| 681 |
- if($('#letterLoad .nodata_box').length > 0){
|
|
| 682 |
- $('#letterLoad .nodata_box').hide().next('.nodata_box.hashTag').show();
|
|
| 683 |
- } |
|
| 684 |
- } |
|
| 685 |
- |
|
| 686 |
- }); |
|
| 687 |
- //문자샘플 |
|
| 688 |
- $("#letterLoad").load("/web/mjon/msgdata/selectLetterDataListAjax.do", sendData ,function(response, status, xhr){
|
|
| 689 |
- if(document.letterForm.searchKeyword.value == ''){
|
|
| 690 |
- $('.bottom_content .area_total_count').hide();
|
|
| 691 |
- } |
|
| 692 |
- if(form.hashTag.value != ''){
|
|
| 693 |
- if($('#letterLoad .nodata_box').length > 0){
|
|
| 694 |
- $('#letterLoad .nodata_box').hide().next('.nodata_box.hashTag').show();
|
|
| 695 |
- } |
|
| 696 |
- } |
|
| 697 |
- |
|
| 698 |
- }); |
|
| 699 |
- |
|
| 700 |
-} |
|
| 701 |
- |
|
| 702 |
-function fnPhotoListAjax(index){
|
|
| 703 |
- var form = document.letterForm; |
|
| 704 |
- //검색자 입력 검색 시 카테고리, 해쉬태그 전체 초기화 |
|
| 705 |
- if(form.searchKeyword.value != '') {
|
|
| 706 |
- form.categoryCode.value = ""; |
|
| 707 |
- form.hashTag.value = ""; |
|
| 708 |
- |
|
| 709 |
- $('.tDep2_cateCode').find('.on').removeClass('on');
|
|
| 710 |
- $('.tDep2_cateCode').find('.cateAll').addClass('on');
|
|
| 711 |
- $('.tDep2_hashTag').find('.on').removeClass('on');
|
|
| 712 |
- $('.tDep2_hashTag').find('.hashAll').addClass('on');
|
|
| 713 |
- }else{
|
|
| 714 |
- //해시태그가 선택되어 있을 경우 해당 태그 검색어를 전달해줌 |
|
| 715 |
- var strTagTxt = $('.tDep2_hashTag').find('.on').text().replace("#","");
|
|
| 716 |
- if(strTagTxt == "전체"){
|
|
| 717 |
- form.hashTag.value = ""; |
|
| 718 |
- }else{
|
|
| 719 |
- form.hashTag.value = strTagTxt; |
|
| 720 |
- } |
|
| 721 |
- } |
|
| 722 |
- form.letterType.value = 'P'; |
|
| 723 |
- form.pageIndex.value = index; |
|
| 724 |
- var sendData = $(document.letterForm).serializeArray(); |
|
| 725 |
- //하위 카테고리 |
|
| 726 |
- $("#tDep2_depThrCateCode").load("/web/mjon/msgdata/selectCateConfThrDptListAjax.do", sendData ,function(response, status, xhr){
|
|
| 727 |
- if(document.letterForm.searchKeyword.value == ''){
|
|
| 728 |
- $('.bottom_content .area_total_count').hide();
|
|
| 729 |
- } |
|
| 730 |
- if(form.hashTag.value != ''){
|
|
| 731 |
- if($('#letterLoad .nodata_box').length > 0){
|
|
| 732 |
- $('#letterLoad .nodata_box').hide().next('.nodata_box.hashTag').show();
|
|
| 733 |
- } |
|
| 734 |
- } |
|
| 735 |
- |
|
| 736 |
- }); |
|
| 737 |
- |
|
| 738 |
- $("#photoLoad").load("/web/mjon/msgdata/selectPhotoDataListAjax.do", sendData ,function(response, status, xhr){
|
|
| 739 |
- photoLayerView(); |
|
| 740 |
- if(document.letterForm.searchKeyword.value == ''){
|
|
| 741 |
- $('.bottom_content .area_total_count').hide();
|
|
| 742 |
- } |
|
| 743 |
- if(form.hashTag.value != ''){
|
|
| 744 |
- if($('#photoLoad .nodata_box').length > 0){
|
|
| 745 |
- $('#photoLoad .nodata_box').hide().next('.nodata_box.hashTag').show();
|
|
| 746 |
- } |
|
| 747 |
- } |
|
| 748 |
- }); |
|
| 749 |
- |
|
| 750 |
-} |
|
| 751 |
- |
|
| 752 |
-function fnMyMsgListAjax(index){
|
|
| 753 |
- |
|
| 754 |
- if(loginVO == "" || loginVO == null){
|
|
| 755 |
- //alert("로그인 후 사용이 가능합니다.");
|
|
| 756 |
- location.href="/web/user/login/login.do"; |
|
| 757 |
- return false; |
|
| 758 |
- }else{
|
|
| 759 |
- document.myMsgForm.pageIndex.value = index; |
|
| 760 |
- var sendData = $(document.myMsgForm).serializeArray(); |
|
| 761 |
- $("#myMsgLoad").load("/web/mjon/msgdata/selectMyMsgDataListAjax.do", sendData ,function(response, status, xhr){
|
|
| 762 |
- /* $(".msg_cont").mCustomScrollbar({
|
|
| 763 |
- axis: 'y', |
|
| 764 |
- scrollbarPosition: "inside", |
|
| 765 |
- theme: "dark", |
|
| 766 |
- autoHideScrollbar: false |
|
| 767 |
- }); */ |
|
| 768 |
- |
|
| 769 |
- }); |
|
| 770 |
- } |
|
| 771 |
-} |
|
| 772 |
- |
|
| 773 |
-function fnMyMsgSearchListAjax(index){
|
|
| 774 |
- |
|
| 775 |
- document.myMsgForm.pageIndex.value = index; |
|
| 776 |
- var sendData = $(document.myMsgForm).serializeArray(); |
|
| 777 |
- $("#myMsgLoad").load("/web/mjon/msgdata/selectMyMsgDataListAjax.do", sendData ,function(response, status, xhr){
|
|
| 778 |
- |
|
| 779 |
- /* $(".msg_cont").mCustomScrollbar({
|
|
| 780 |
- axis: 'y', |
|
| 781 |
- scrollbarPosition: "inside", |
|
| 782 |
- theme: "dark", |
|
| 783 |
- autoHideScrollbar: false |
|
| 784 |
- }); */ |
|
| 785 |
- |
|
| 786 |
- }); |
|
| 787 |
- |
|
| 788 |
-} |
|
| 789 |
- |
|
| 790 |
-function fnMsgExcelDataView(){
|
|
| 791 |
- |
|
| 792 |
- /* var sendData = $(document.searchForm).serializeArray() ; |
|
| 793 |
- |
|
| 794 |
- //엑셀 문자 탭 활성화 시키기 |
|
| 795 |
- TabType1($('.tabType1 li').eq(1), '2');
|
|
| 796 |
- |
|
| 797 |
- $(".contentExcelArea").load("/web/mjon/msgdata/selectMsgExcelDataViewAjax.do", sendData ,function(response, status, xhr){
|
|
| 798 |
- }); */ |
|
| 799 |
- |
|
| 800 |
- location.href="/web/mjon/msgdata/excel/selectMsgExcelDataView.do"; |
|
| 801 |
- |
|
| 802 |
-} |
|
| 803 |
- |
|
| 804 |
-function fn_saveMyMsg(){ // 내 문자 보관함 저장
|
|
| 805 |
- |
|
| 806 |
- var form = document.msgForm; |
|
| 807 |
- var myImgFileId = []; //신규 이미지 추가 파일 Id 저장 변수 |
|
| 808 |
- var adverYn = $("input[name='send_adYn']:checked").val(); //광고 체크여부
|
|
| 809 |
- |
|
| 810 |
- /* |
|
| 811 |
- 이미지 에디터를 사용하여 추가한 경우 이미지 업로드 처리 - 단 에디터에서 템플릿을 선택한 경우는 업로드안함 |
|
| 812 |
- 신규 이미지 추가를 한 경우만 이미지 파일 업로드 처리함 |
|
| 813 |
- */ |
|
| 814 |
- $('.thumb_wrap').find('.thumb_img').each(function(idx, el) {
|
|
| 815 |
- |
|
| 816 |
- if($("#delLi"+idx).hasClass("Template")){ //이미지 에디터 템플릿 이미지 선택 여부 확인
|
|
| 817 |
- templateYn.push("Y");
|
|
| 818 |
- } else {
|
|
| 819 |
- templateYn.push("N");
|
|
| 820 |
- } |
|
| 821 |
- |
|
| 822 |
- if($(el).hasClass("edit_y")) { //에디터를 사용했고
|
|
| 823 |
- //이미지 변환 |
|
| 824 |
- const imgBase64 = $(el).attr("src");
|
|
| 825 |
- const decodImg = atob(imgBase64.split(',')[1]); // base64~ 부분을 제외하고 데이터 디코딩
|
|
| 826 |
- |
|
| 827 |
- |
|
| 828 |
- let array = []; |
|
| 829 |
- for (let i = 0; i < decodImg.length; i++) {
|
|
| 830 |
- array.push(decodImg.charCodeAt(i)); |
|
| 831 |
- } |
|
| 832 |
- |
|
| 833 |
- const file = new Blob([new Uint8Array(array)], {type: 'image/jpeg'});
|
|
| 834 |
- const fileName = 'canvas_img_' + new Date().getMilliseconds() + '.jpg'; |
|
| 835 |
- let formData = new FormData(); |
|
| 836 |
- formData.append('file', file, fileName);
|
|
| 837 |
- |
|
| 838 |
- $.ajax({
|
|
| 839 |
- type: 'post', |
|
| 840 |
- url: '/web/mjon/msgdata/insertEditImageAjax.do', |
|
| 841 |
- cache: false, |
|
| 842 |
- data: formData, |
|
| 843 |
- dataType:'json', |
|
| 844 |
- processData: false, |
|
| 845 |
- contentType: false, |
|
| 846 |
- async: false, |
|
| 847 |
- success: function (returnData, status) {
|
|
| 848 |
- if(status == 'success'){
|
|
| 849 |
- // imgFilePath 에 배열로 담아주기(이미지 순서대로) |
|
| 850 |
- //console.log(imgFilePath); |
|
| 851 |
- //imgFilePath.push(returnData.filefullPath); |
|
| 852 |
- myImgFileId.push(returnData.atchFileId); |
|
| 853 |
- |
|
| 854 |
- } else if(status== 'fail'){
|
|
| 855 |
- alert(returnData.message); |
|
| 856 |
- } |
|
| 857 |
- }, |
|
| 858 |
- error: function (e) { alert("이미지 업로드에 실패하였습니다."); console.log("ERROR : ", e); }
|
|
| 859 |
- }); |
|
| 860 |
- |
|
| 861 |
- } else {
|
|
| 862 |
- //에디터 안거친 템플릿 이미지면 바로 src 때림 |
|
| 863 |
- imgFilePath.push($(el).attr("src"));
|
|
| 864 |
- } |
|
| 865 |
- }); |
|
| 866 |
- |
|
| 867 |
- if(myImgFileId.length > 0 && imgFileId.length > 0){ //기존 샘플 이미지와 이미지 에디터 둘다 사용한 경우
|
|
| 868 |
- |
|
| 869 |
- var tempImgId = []; |
|
| 870 |
- |
|
| 871 |
- tempImgId.push(myImgFileId); |
|
| 872 |
- tempImgId.push(imgFileId); |
|
| 873 |
- form.imgFileId.value = tempImgId; |
|
| 874 |
- |
|
| 875 |
- }else if(myImgFileId.length > 0){ //이미지 에디터에서 신규 등록한 이미지
|
|
| 876 |
- |
|
| 877 |
- form.imgFileId.value = myImgFileId; |
|
| 878 |
- |
|
| 879 |
- }else{ //샘플 이미지 선택만 했을경우(이미지 에디터 사용 안했을때)
|
|
| 880 |
- |
|
| 881 |
- form.imgFileId.value = imgFileId; |
|
| 882 |
- } |
|
| 883 |
- |
|
| 884 |
- //광고 문자 내용 합쳐주기 |
|
| 885 |
- if(adverYn == 'Y'){
|
|
| 886 |
- |
|
| 887 |
- var adTxt = $('.ad_txt').text();
|
|
| 888 |
- var denyTxt = $('.deny_txt').text();
|
|
| 889 |
- var smsTxt = form.smsTxtArea.value; |
|
| 890 |
- |
|
| 891 |
- //var adverTxt = adTxt + '\n\n' + smsTxt + '\n\n' + denyTxt; |
|
| 892 |
- var adverTxt = smsTxt; |
|
| 893 |
- form.smsTxt.value = adverTxt; |
|
| 894 |
- |
|
| 895 |
- }else{
|
|
| 896 |
- |
|
| 897 |
- var smsTxt = form.smsTxtArea.value; |
|
| 898 |
- form.smsTxt.value = smsTxt; |
|
| 899 |
- |
|
| 900 |
- } |
|
| 901 |
- |
|
| 902 |
- //문자 종류 설정(S:단문 , L:장문 , P:그림) |
|
| 903 |
- var photoSts = $('.delLi').length;
|
|
| 904 |
- var conLeng = conByteLeng(form.smsTxt.value); // 내용 문자 입력 바이트 수 계산하기 |
|
| 905 |
- |
|
| 906 |
- if(photoSts > 0){
|
|
| 907 |
- |
|
| 908 |
- form.msgType.value = 'P'; |
|
| 909 |
- |
|
| 910 |
- }else if(conLeng > 90){
|
|
| 911 |
- |
|
| 912 |
- form.msgType.value = 'L'; |
|
| 913 |
- |
|
| 914 |
- }else{
|
|
| 915 |
- |
|
| 916 |
- form.msgType.value = 'S'; |
|
| 917 |
- |
|
| 918 |
- } |
|
| 919 |
- |
|
| 920 |
- if(photoSts == '0' && conLeng == '0'){
|
|
| 921 |
- |
|
| 922 |
- alert("문자내용을 입력해 주세요.");
|
|
| 923 |
- return false; |
|
| 924 |
- |
|
| 925 |
- } |
|
| 926 |
- |
|
| 927 |
- var data = new FormData(form); |
|
| 928 |
- url = "/web/mjon/msgdata/insertMyMsgDataAjax.do"; |
|
| 929 |
- |
|
| 930 |
- $.ajax({
|
|
| 931 |
- type: "POST", |
|
| 932 |
- url: url, |
|
| 933 |
- data: data, |
|
| 934 |
- dataType:'json', |
|
| 935 |
- async: false, |
|
| 936 |
- processData: false, |
|
| 937 |
- contentType: false, |
|
| 938 |
- cache: false, |
|
| 939 |
- success: function (returnData, status) {
|
|
| 940 |
- if(status == 'success'){ // status 확인 필요한가. 석세스 안뜨면 에러 가지 않나
|
|
| 941 |
- if("fail"==returnData.result){
|
|
| 942 |
- |
|
| 943 |
- alert(returnData.message); |
|
| 944 |
- return false; |
|
| 945 |
- |
|
| 946 |
- }else{
|
|
| 947 |
- |
|
| 948 |
- alert("내 문자함에 저장되었습니다.");
|
|
| 949 |
- |
|
| 950 |
- //내 문자함 탭 활성화 시키기 |
|
| 951 |
- TabType2($('.tabType2 li').eq(3), '4');
|
|
| 952 |
- var offset = $('.tabType2').offset();
|
|
| 953 |
- $('html, body').animate({scrollTop : offset.top-140}, 400);
|
|
| 954 |
- |
|
| 955 |
- //최 하단 내문자함 탭 리스트 내용 불러오기 |
|
| 956 |
- var sendData = $(document.myMsgForm).serializeArray(); |
|
| 957 |
- $("#myMsgLoad").load("/web/mjon/msgdata/selectMyMsgDataListAjax.do", sendData ,function(response, status, xhr){
|
|
| 958 |
- }); |
|
| 959 |
- |
|
| 960 |
- } |
|
| 961 |
- |
|
| 962 |
- } else if(status== 'fail'){
|
|
| 963 |
- alert(returnData.message); |
|
| 964 |
- } |
|
| 965 |
- }, |
|
| 966 |
- error: function (e) { alert("문자 저장에 실패하였습니다."); console.log("ERROR : ", e); }
|
|
| 967 |
- }); |
|
| 968 |
- |
|
| 969 |
-} |
|
| 970 |
- |
|
| 971 |
-//내 문자함으로 탭이동 |
|
| 972 |
-function fnGoMyMsg(){
|
|
| 973 |
- |
|
| 974 |
- //내 문자함 탭 활성화 시키기 |
|
| 975 |
- TabType2($('.tabType2 li').eq(3), '4');
|
|
| 976 |
- |
|
| 977 |
- var offset = $('.tabType2').offset();
|
|
| 978 |
- $('html, body').animate({scrollTop : offset.top-140}, 400);
|
|
| 979 |
- |
|
| 980 |
-} |
|
| 981 |
- |
|
| 982 |
- |
|
| 983 |
-// MJ_MSG_GROUP_DATA 누락데이터 체크 |
|
| 984 |
-function getMsgGroupDataErrorCheck() {
|
|
| 985 |
- var isError = false; |
|
| 986 |
- |
|
| 987 |
- $.ajax({
|
|
| 988 |
- type: "POST", |
|
| 989 |
- url: "/web/mjon/msgdata/selectMsgGroupNotExistInfoAjax.do", |
|
| 990 |
- data: {},
|
|
| 991 |
- dataType:'json', |
|
| 992 |
- async: false, |
|
| 993 |
- success: function (data) {
|
|
| 994 |
- if (data.isSuccess) {
|
|
| 995 |
- if (data.isError == true) {
|
|
| 996 |
- isError = true; |
|
| 997 |
- } |
|
| 998 |
- } |
|
| 999 |
- }, |
|
| 1000 |
- error: function (e) {
|
|
| 1001 |
- |
|
| 1002 |
- } |
|
| 1003 |
- }); |
|
| 1004 |
- |
|
| 1005 |
- return isError; |
|
| 1006 |
-} |
|
| 1007 |
- |
|
| 1008 |
-function checkConf() {
|
|
| 1009 |
- var confCheck = false; |
|
| 1010 |
- |
|
| 1011 |
- $.ajax({
|
|
| 1012 |
- type: "POST", |
|
| 1013 |
- url: "/web/mjon/conf/selectMjonMsgUseConfAjax.do", |
|
| 1014 |
- data: {},
|
|
| 1015 |
- dataType:'json', |
|
| 1016 |
- async: false, |
|
| 1017 |
- success: function (returnData, status) {
|
|
| 1018 |
- if(returnData.result == "fail") {
|
|
| 1019 |
- console.log(returnData.message); |
|
| 1020 |
- }else if(returnData.result == "success"){
|
|
| 1021 |
- confCheck = true; |
|
| 1022 |
- } |
|
| 1023 |
- } |
|
| 1024 |
- ,error: function (e) {console.log("ERROR : ", e); }
|
|
| 1025 |
- }); |
|
| 1026 |
- |
|
| 1027 |
- return confCheck; |
|
| 1028 |
-} |
|
| 1029 |
-function blineSendCheck(blineCode) {
|
|
| 1030 |
- |
|
| 1031 |
- var confCheck = false; |
|
| 1032 |
- |
|
| 1033 |
- $.ajax({
|
|
| 1034 |
- type: "POST", |
|
| 1035 |
- url: "/web/mjon/conf/selectBlineSendCheckAjax.do", |
|
| 1036 |
- data: {"agentCode":blineCode},
|
|
| 1037 |
- dataType:'json', |
|
| 1038 |
- async: false, |
|
| 1039 |
- success: function (returnData, status) {
|
|
| 1040 |
- if(returnData.result == "fail") {
|
|
| 1041 |
- console.log(returnData.message); |
|
| 1042 |
- }else if(returnData.result == "success"){
|
|
| 1043 |
- confCheck = true; |
|
| 1044 |
- } |
|
| 1045 |
- } |
|
| 1046 |
- ,error: function (e) {console.log("ERROR : ", e); }
|
|
| 1047 |
- }); |
|
| 1048 |
- |
|
| 1049 |
- return confCheck; |
|
| 1050 |
-} |
|
| 1051 |
- |
|
| 1052 |
- |
|
| 1053 |
- |
|
| 1054 |
- |
|
| 1055 |
-//문자발송 처리 함수 |
|
| 1056 |
-function fn_sendMsgData(){
|
|
| 1057 |
- |
|
| 1058 |
- // 타블레이터 호출 |
|
| 1059 |
- var $selectedData = tableL.getData(); // 데이터 가져오기 |
|
| 1060 |
- |
|
| 1061 |
- if(!checkConf()){ //문자온 conf-check
|
|
| 1062 |
- alert("현재 문자 발송하기 기능 점검 중입니다.\n\n1분 후 다시 시도해주세요.");
|
|
| 1063 |
- return false; |
|
| 1064 |
- } |
|
| 1065 |
- |
|
| 1066 |
- var form = document.msgForm; |
|
| 1067 |
- var totPriceOnly = stringReplaceAll(form.totPrice.value, ",", ""); |
|
| 1068 |
- var userMoneyOnly = stringReplaceAll(form.myPrice.value, ",", ""); |
|
| 1069 |
- |
|
| 1070 |
- // test 주석 |
|
| 1071 |
- if(parseFloat(userMoneyOnly) < parseFloat(totPriceOnly)){
|
|
| 1072 |
- alert("문자 발송에 필요한 회원님의 보유 잔액이 부족 합니다.");
|
|
| 1073 |
- return false; |
|
| 1074 |
- } |
|
| 1075 |
- |
|
| 1076 |
- // 폼 유효성 검사 |
|
| 1077 |
- if (!validateForm(form)) return false; |
|
| 1078 |
- |
|
| 1079 |
- var spamStatus = false; |
|
| 1080 |
- var exceptSpamYn = $("#exceptSpamYn").val(); //금지어 필터링 예외 여부 - N 일 경우만 스팸 검사를 진행
|
|
| 1081 |
- |
|
| 1082 |
- |
|
| 1083 |
- var blineCodeYn = $("#blineCode").val();
|
|
| 1084 |
- if(blineCodeYn != 'N'){
|
|
| 1085 |
- if(!blineSendCheck(blineCodeYn)){ //문자온 conf-check
|
|
| 1086 |
- alert("현재 문자 발송하기 기능 점검 중입니다.\n\n잠시 후 다시 시도해주세요.");
|
|
| 1087 |
- return false; |
|
| 1088 |
- } |
|
| 1089 |
- } |
|
| 1090 |
- |
|
| 1091 |
- if($selectedData.length > 300000){
|
|
| 1092 |
- alert("30만건까지 발송이 가능합니다.\n받는사람 목록을 확인해주세요.");
|
|
| 1093 |
- return false; |
|
| 1094 |
- } |
|
| 1095 |
- |
|
| 1096 |
- |
|
| 1097 |
- |
|
| 1098 |
- if(!confirm("문자를 전송하시겠습니까?")){
|
|
| 1099 |
- return false; |
|
| 1100 |
- } |
|
| 1101 |
- |
|
| 1102 |
- //총 결제금액 천단위 콤마 삭제 후 전송 |
|
| 1103 |
- var totPrice = form.totPrice.value; |
|
| 1104 |
- form.totPrice.value = totPrice.replace(",","");
|
|
| 1105 |
- |
|
| 1106 |
- |
|
| 1107 |
- //이벤트 진행중 회원의 경우 이벤트 잔여금액 비교 처리 필요. |
|
| 1108 |
- //이벤트 캐시가 부족한 경우 이벤트 캐시로 발송 가능한 만큼만 이벤트 금액으로 발송 처리해줌. |
|
| 1109 |
- //이 후 나머지 발송 건수는 이벤트 캐시가 아닌 일반 단가로 발송 처리를 진행 함. |
|
| 1110 |
- var eventStatus = form.eventStatus.value; |
|
| 1111 |
- |
|
| 1112 |
- if(eventStatus == 'Y'){ //이벤트 진행 대상자이면 문자종류에 이벤트로 구분
|
|
| 1113 |
- |
|
| 1114 |
- form.eventYn.value = "Y"; //이벤트문자 종류 설정 |
|
| 1115 |
- |
|
| 1116 |
- } |
|
| 1117 |
- |
|
| 1118 |
- var eventRemainCash = parseFloat(form.eventRemainCash.value); |
|
| 1119 |
- console.log('eventStatus : ', eventStatus);
|
|
| 1120 |
- |
|
| 1121 |
- if(eventStatus == 'Y' |
|
| 1122 |
- && parseFloat(eventRemainCash) < parseFloat(totPriceOnly)) |
|
| 1123 |
- {
|
|
| 1124 |
- console.log('eventRemainCash : ', eventRemainCash);
|
|
| 1125 |
- if(!confirm("고객님의 이벤트 캐시 잔액(" + eventRemainCash + "원) 부족으로 요청하신 문자("+numberWithCommas($selectedData.length)+"건)를 모두 발송할 수 없습니다. 이벤트 캐시 초과 건에 대해서는 일반 단가를 적용하여 발송하시겠습니까?")){
|
|
| 1126 |
- return false; |
|
| 1127 |
- } |
|
| 1128 |
- } |
|
| 1129 |
- |
|
| 1130 |
- console.log(' !!! imgFilePath : ', imgFilePath);
|
|
| 1131 |
- |
|
| 1132 |
- // img 처리 영역 |
|
| 1133 |
- imgFilePath = []; |
|
| 1134 |
- $('.thumb_wrap').find('.thumb_img').each(function(idx, el) {
|
|
| 1135 |
- if($("#delLi"+idx).hasClass("Template")){
|
|
| 1136 |
- templateYn.push("Y");
|
|
| 1137 |
- } else {
|
|
| 1138 |
- templateYn.push("N");
|
|
| 1139 |
- } |
|
| 1140 |
- |
|
| 1141 |
- if($(el).hasClass("edit_y")) {
|
|
| 1142 |
- //이미지 변환 |
|
| 1143 |
- const imgBase64 = $(el).attr("src");
|
|
| 1144 |
- const decodImg = atob(imgBase64.split(',')[1]); // base64~ 부분을 제외하고 데이터 디코딩
|
|
| 1145 |
- |
|
| 1146 |
- |
|
| 1147 |
- let array = []; |
|
| 1148 |
- for (let i = 0; i < decodImg.length; i++) {
|
|
| 1149 |
- array.push(decodImg.charCodeAt(i)); |
|
| 1150 |
- } |
|
| 1151 |
- |
|
| 1152 |
- const file = new Blob([new Uint8Array(array)], {type: 'image/jpeg'});
|
|
| 1153 |
- const fileName = 'canvas_img_' + new Date().getMilliseconds() + '.jpg'; |
|
| 1154 |
- let formData = new FormData(); |
|
| 1155 |
- formData.append('file', file, fileName);
|
|
| 1156 |
- |
|
| 1157 |
- $.ajax({
|
|
| 1158 |
- type: 'post', |
|
| 1159 |
- url: '/web/mjon/msgdata/insertEditImageAjax.do', |
|
| 1160 |
- cache: false, |
|
| 1161 |
- data: formData, |
|
| 1162 |
- dataType:'json', |
|
| 1163 |
- processData: false, |
|
| 1164 |
- contentType: false, |
|
| 1165 |
- async: false, |
|
| 1166 |
- success: function (returnData, status) {
|
|
| 1167 |
- if(status == 'success'){
|
|
| 1168 |
- console.log('returnData : ',returnData)
|
|
| 1169 |
- // imgFilePath 에 배열로 담아주기(이미지 순서대로) |
|
| 1170 |
- //console.log(imgFilePath); |
|
| 1171 |
- imgFilePath.push(returnData.filefullPath); |
|
| 1172 |
- imgFileId.push(returnData.atchFileId); |
|
| 1173 |
- |
|
| 1174 |
- } else if(status== 'fail'){
|
|
| 1175 |
- alert(returnData.message); |
|
| 1176 |
- } |
|
| 1177 |
- }, |
|
| 1178 |
- error: function (e) { alert("이미지 업로드에 실패하였습니다."); console.log("ERROR : ", e); }
|
|
| 1179 |
- }); |
|
| 1180 |
- |
|
| 1181 |
- } else {
|
|
| 1182 |
- if(imgFilePath.length != imgFileId.length){
|
|
| 1183 |
- //에디터 안거친 템플릿 이미지면 바로 src 때림 |
|
| 1184 |
- imgFilePath.push($(el).attr("src"));
|
|
| 1185 |
- } |
|
| 1186 |
- } |
|
| 1187 |
- }); |
|
| 1188 |
- |
|
| 1189 |
- |
|
| 1190 |
- //form.reserveYn.value = reserYn; // 즉시 / 예약 문자 선택 여부 |
|
| 1191 |
- form.templateYnAdvc.value = templateYn; |
|
| 1192 |
- console.log('imgFilePath : ', imgFilePath);
|
|
| 1193 |
- console.log('imgFilePath : ', JSON.stringify(imgFilePath));
|
|
| 1194 |
- console.log('imgFileId : ', imgFileId);
|
|
| 1195 |
- console.log('imgFileId : ', JSON.stringify(imgFileId));
|
|
| 1196 |
- form.imgFilePathAdvc.value = imgFilePath; |
|
| 1197 |
- form.imgFileIdAdvc.value = imgFileId; |
|
| 1198 |
-// form.imgFilePath.value = JSON.stringify(imgFilePath).replace(/\\/g, ''); |
|
| 1199 |
-// form.imgFileId.value = JSON.stringify(imgFileId).replace(/\\/g, ''); |
|
| 1200 |
- form.callFrom.value = removeDash($('#callFromList').val()); // 발신번호 대쉬(-) 문자 없애주기
|
|
| 1201 |
- |
|
| 1202 |
- //광고 종류 설정 |
|
| 1203 |
- var adverYn = $("input[name='send_adYn']:checked").val();
|
|
| 1204 |
- if(adverYn == 'Y'){
|
|
| 1205 |
- form.msgKind.value = "A"; //광고문자 종류 설정 |
|
| 1206 |
- }else{
|
|
| 1207 |
- form.msgKind.value = "N"; //일반문자 종류 설정 |
|
| 1208 |
- } |
|
| 1209 |
- |
|
| 1210 |
- // 예약 확인 |
|
| 1211 |
- var reserYn = $("input[name=reserYn]:checked").val(); // 예약 발송 여부 확인
|
|
| 1212 |
- form.reserveYn.value = reserYn; // 즉시 / 예약 문자 선택 여부 |
|
| 1213 |
- |
|
| 1214 |
- if(reserYn == 'Y'){
|
|
| 1215 |
- |
|
| 1216 |
- var date = $(".resDate").val();//form.msgResDate.value;
|
|
| 1217 |
- var hour = form.msgResHour.value; |
|
| 1218 |
- var min = form.msgResMin.value; |
|
| 1219 |
- |
|
| 1220 |
- if(date == ""){
|
|
| 1221 |
- |
|
| 1222 |
- alert("예약전송 날짜를 선택해 주세요.");
|
|
| 1223 |
- return false; |
|
| 1224 |
- |
|
| 1225 |
- }else{
|
|
| 1226 |
- |
|
| 1227 |
- var now = new Date(); |
|
| 1228 |
- var reqDate = date + " " + hour + ":" + min + ":00"; |
|
| 1229 |
- var gapDate = getGapDayTime(date, hour, min); |
|
| 1230 |
- |
|
| 1231 |
- if(gapDate < 0){ // 음수이면 이전날짜, 크면 이후 날짜.
|
|
| 1232 |
- alert("예약 날짜는 현재 시간 이후의 날짜 및 시간을 선택해 주세요.");
|
|
| 1233 |
- return false; |
|
| 1234 |
- }else{
|
|
| 1235 |
- form.reqDate.value = reqDate; //예약일자 파라미터 저장 |
|
| 1236 |
- } |
|
| 1237 |
- } |
|
| 1238 |
- |
|
| 1239 |
- }else{
|
|
| 1240 |
- |
|
| 1241 |
- form.reqDate.value = ""; |
|
| 1242 |
- |
|
| 1243 |
- } |
|
| 1244 |
- |
|
| 1245 |
- |
|
| 1246 |
- |
|
| 1247 |
- //발송 Ajax 호출해주기 |
|
| 1248 |
- sendMsgAjax_advc(); |
|
| 1249 |
-} |
|
| 1250 |
- |
|
| 1251 |
- |
|
| 1252 |
-// 선택된 데이터의 길이에 따라 예상 시간 계산 함수 |
|
| 1253 |
-function calculateEstimatedTime(selectedCount) {
|
|
| 1254 |
- //기준값 |
|
| 1255 |
- // const processTimePerBatch = 130; // 130초 |
|
| 1256 |
- |
|
| 1257 |
- |
|
| 1258 |
- // 30만건 기준 10분으로 기준을 잡아서 |
|
| 1259 |
- // 시간계산함 |
|
| 1260 |
- const processTimePerBatch = 600; |
|
| 1261 |
- const batchSize = 300000; |
|
| 1262 |
- |
|
| 1263 |
- // 1건당 처리 시간 |
|
| 1264 |
- const timePerRecord = processTimePerBatch / batchSize; |
|
| 1265 |
- |
|
| 1266 |
- // 예상 시간 계산 |
|
| 1267 |
- const estimatedTimeInSeconds = selectedCount * timePerRecord; |
|
| 1268 |
- |
|
| 1269 |
- return estimatedTimeInSeconds.toFixed(2); |
|
| 1270 |
-} |
|
| 1271 |
- |
|
| 1272 |
- |
|
| 1273 |
- |
|
| 1274 |
- |
|
| 1275 |
-function sendMsgAjax_advc(){
|
|
| 1276 |
- // 타블레이터 호출 |
|
| 1277 |
- var $selectedData = tableL.getData(); // 데이터 가져오기 |
|
| 1278 |
- |
|
| 1279 |
- // 폼 데이터를 배열로 직렬화 |
|
| 1280 |
- var form = $('#msgForm');
|
|
| 1281 |
- var formDataArray = form.serializeArray(); |
|
| 1282 |
- |
|
| 1283 |
- // 배열을 객체로 변환 |
|
| 1284 |
- var formData = {};
|
|
| 1285 |
- $.each(formDataArray, function(index, field) {
|
|
| 1286 |
- formData[field.name] = field.value; |
|
| 1287 |
- }); |
|
| 1288 |
- |
|
| 1289 |
- // 빈 값 제거 |
|
| 1290 |
- removeEmptyValues(formData); |
|
| 1291 |
- |
|
| 1292 |
- // 선택된 데이터 추가 |
|
| 1293 |
- formData["mjonMsgSendVOList"] = $selectedData; |
|
| 1294 |
- |
|
| 1295 |
- // JSON 데이터 확인 |
|
| 1296 |
-// console.log("최종 formData:", JSON.stringify(formData));
|
|
| 1297 |
- |
|
| 1298 |
- |
|
| 1299 |
- var url = "/web/mjon/msgdata/sendMsgDataAjax_advc.do"; |
|
| 1300 |
- // 시작 시간 |
|
| 1301 |
- const startTime = new Date(); |
|
| 1302 |
- |
|
| 1303 |
- |
|
| 1304 |
- // 프로그래스파 시간을 위한 계산 |
|
| 1305 |
- var estimtedTime = calculateEstimatedTime($selectedData.length); |
|
| 1306 |
- console.log('estimtedTime : ', estimtedTime);
|
|
| 1307 |
- |
|
| 1308 |
- |
|
| 1309 |
- $.ajax({
|
|
| 1310 |
- type: "POST", |
|
| 1311 |
- url: url, |
|
| 1312 |
- data: JSON.stringify(formData), |
|
| 1313 |
- contentType: 'application/json', |
|
| 1314 |
- dataType: 'json', |
|
| 1315 |
- success: function (data) {
|
|
| 1316 |
- |
|
| 1317 |
- // 요청 종료 시간 및 경과 시간 계산 |
|
| 1318 |
- const endTime = new Date(); |
|
| 1319 |
- const elapsed = (endTime - startTime) / 1000; // 밀리초 -> 초로 변환 |
|
| 1320 |
- console.log('AJAX 요청 성공, 경과 시간 : ', elapsed);
|
|
| 1321 |
- if (elapsed >= 60) {
|
|
| 1322 |
- const minutes = Math.floor(elapsed / 60); // 분 계산 |
|
| 1323 |
- const seconds = Math.floor(elapsed % 60); // 초 계산 |
|
| 1324 |
- console.log('AJAX 요청 성공, 경과 시간 : ' + minutes + '분 ' + seconds + '초');
|
|
| 1325 |
- } else {
|
|
| 1326 |
- console.log('AJAX 요청 성공, 경과 시간 : ' + elapsed + '초');
|
|
| 1327 |
- } |
|
| 1328 |
- |
|
| 1329 |
- |
|
| 1330 |
- |
|
| 1331 |
- console.log('data : ', data);
|
|
| 1332 |
- /* message:"특정문구 일괄변환 치환문자 데이터가 없습니다." |
|
| 1333 |
- status:"BAD_REQUEST" */ |
|
| 1334 |
- |
|
| 1335 |
- var status = data.status; |
|
| 1336 |
- if("OK" == status){
|
|
| 1337 |
- |
|
| 1338 |
- var smsCnt = Number(data.object.resultSts); |
|
| 1339 |
- var blockCnt = Number(data.object.resultBlockSts); |
|
| 1340 |
- |
|
| 1341 |
- if((smsCnt + blockCnt) == 0){
|
|
| 1342 |
- |
|
| 1343 |
- $('.pop_msg_spam').css({'display':'block','opacity':'1','left':'50%','top':'50%','transform':'translate(-50%,-50%)'});
|
|
| 1344 |
- $('.pop_msg_spam .msg_text').html("문자 발송(예약)에 실패하였습니다.<br/> 다시 시도해주세요. <br/>* 정상적으로 발송 시도하였으나 실패하신 경우 혹시 문자내용에 사용불가 이모지 <br/>또는 복사-붙여넣기로 인한 보이지 않는 특수문자가 포함되었는지 확인 후 다시 시도해주세요.");
|
|
| 1345 |
- $('.mask').addClass('on');
|
|
| 1346 |
- |
|
| 1347 |
- }else{
|
|
| 1348 |
- |
|
| 1349 |
- $('.pop_msg_success').css({'display':'block','opacity':'1','left':'50%','top':'50%','transform':'translate(-50%,-50%)'});
|
|
| 1350 |
- //예약발송 건의 경우 결과 팝업 문구 변경 |
|
| 1351 |
- |
|
| 1352 |
- var reserYn = $("input[name=reserYn]:checked").val();
|
|
| 1353 |
- var resText = (reserYn === 'Y') ? '예약' : '발송'; |
|
| 1354 |
- /* |
|
| 1355 |
- if(reserYn == 'Y') |
|
| 1356 |
- {
|
|
| 1357 |
- resText = "예약"; |
|
| 1358 |
- } |
|
| 1359 |
- else |
|
| 1360 |
- {
|
|
| 1361 |
- resText = "발송"; |
|
| 1362 |
- } |
|
| 1363 |
- */ |
|
| 1364 |
- $('.pop_msg_success .msg_text').html(resText+" 성공 : <strong>"+ smsCnt + "</strong>건,수신거부 : <span>" + blockCnt + "</span>건의<br>문자가 "+resText+" 되었습니다.");
|
|
| 1365 |
- |
|
| 1366 |
- $('.mask').addClass('on');
|
|
| 1367 |
- |
|
| 1368 |
- } |
|
| 1369 |
- |
|
| 1370 |
- |
|
| 1371 |
- }else if("BAD_REQUEST" == status){
|
|
| 1372 |
- |
|
| 1373 |
- alert(data.message); |
|
| 1374 |
- return false; |
|
| 1375 |
- |
|
| 1376 |
- }else if("UNAUTHORIZED" == status){
|
|
| 1377 |
- |
|
| 1378 |
- alert(data.message); |
|
| 1379 |
- //문자발송 URL Move |
|
| 1380 |
- goMsgUrlMove(); |
|
| 1381 |
- return false; |
|
| 1382 |
- |
|
| 1383 |
- }else if("NO_CONTENT" == status){
|
|
| 1384 |
- |
|
| 1385 |
- $('.pop_msg_fails').css({'display':'block','opacity':'1','left':'50%','top':'50%','transform':'translate(-50%,-50%)'});
|
|
| 1386 |
- $('.pop_msg_fails .msg_text').html(returnData.message);
|
|
| 1387 |
- $('.mask').addClass('on');
|
|
| 1388 |
- |
|
| 1389 |
- } |
|
| 1390 |
- |
|
| 1391 |
- }, |
|
| 1392 |
- beforeSend : function(xmlHttpRequest) {
|
|
| 1393 |
- // 프로그래스 바 실행 |
|
| 1394 |
- // 프로그래스 바 실행 |
|
| 1395 |
- progressStart(estimtedTime); |
|
| 1396 |
- //로딩창 show |
|
| 1397 |
-// $('.loading_layer').addClass('active');
|
|
| 1398 |
- }, |
|
| 1399 |
- complete : function(xhr, textStatus) {
|
|
| 1400 |
- |
|
| 1401 |
- // 프로그래스 바 종료 |
|
| 1402 |
- // 프로그래스 바 종료 |
|
| 1403 |
- progressComplete();; |
|
| 1404 |
-// 로딩창 hide |
|
| 1405 |
-// $('.loading_layer').removeClass('active');
|
|
| 1406 |
- }, |
|
| 1407 |
- error: function (e) { alert("문자 발송에 실패하였습니다."); console.log("ERROR : ", e); }
|
|
| 1408 |
- }); |
|
| 1409 |
- |
|
| 1410 |
-} |
|
| 1411 |
- |
|
| 1412 |
-//폼 유효성 검사 함수 |
|
| 1413 |
-function validateForm(form) {
|
|
| 1414 |
- |
|
| 1415 |
- // 타블레이터 호출 |
|
| 1416 |
- var $selectedData = tableL.getData(); // 데이터 가져오기 |
|
| 1417 |
- |
|
| 1418 |
- if($selectedData.length < 1){
|
|
| 1419 |
- alert("받는사람 내역을 입력해주세요.");
|
|
| 1420 |
- return false; |
|
| 1421 |
- } |
|
| 1422 |
- |
|
| 1423 |
- |
|
| 1424 |
- if(form.callFromList.value == ""){
|
|
| 1425 |
- |
|
| 1426 |
- alert("발신번호를 입력해 주세요.");
|
|
| 1427 |
- return false; |
|
| 1428 |
- |
|
| 1429 |
- } |
|
| 1430 |
- |
|
| 1431 |
- if (form.title_status.value === 'N') {
|
|
| 1432 |
- form.mmsSubject.value = ""; |
|
| 1433 |
- } else if (getSpacialStringChk(form.mmsSubject.value)) {
|
|
| 1434 |
- alert("문자 제목에는 치환문자(엑셀 내 *이름*, *1*, *2*, *3*, *4* 등)를 사용하실 수 없습니다.");
|
|
| 1435 |
- return false; |
|
| 1436 |
- } |
|
| 1437 |
- |
|
| 1438 |
- //문자제목에 이모지가 있는지 체크 |
|
| 1439 |
- var titleStatusYn = $("input[name='title_status']:checked").val();
|
|
| 1440 |
- if(titleStatusYn == 'Y') {
|
|
| 1441 |
- if(!emojiCheck(form.mmsSubject.value)) return false; |
|
| 1442 |
- } |
|
| 1443 |
- |
|
| 1444 |
- // 문자내용에 이모지가 있는지 체크 |
|
| 1445 |
- var strCont = form.smsTxtArea.value; |
|
| 1446 |
- if (!emojiCheck(strCont)) return false; |
|
| 1447 |
- |
|
| 1448 |
- var rtnStr = strChinJpnCheck(strCont); |
|
| 1449 |
- if(rtnStr.length > 0){
|
|
| 1450 |
- alert("입력하신 문구 중 \" " + rtnStr + " \" 는 일부 휴대폰에서 표기되지 않을 수 있습니다.");
|
|
| 1451 |
- } |
|
| 1452 |
- |
|
| 1453 |
- if (imgFilePath.length === 0 && !form.smsTxtArea.value) {
|
|
| 1454 |
- alert("문자내용을 입력해 주세요.");
|
|
| 1455 |
- return false; |
|
| 1456 |
- } |
|
| 1457 |
- return true; |
|
| 1458 |
-} |
|
| 1459 |
- |
|
| 1460 |
-//이벤트가 아닌 일반 개별 단가 셋팅해주기 |
|
| 1461 |
-function getNorEachPrice(evnMsgType){
|
|
| 1462 |
- |
|
| 1463 |
- var norEachPrice = 0; |
|
| 1464 |
- var evnImgCnt = $("#imgCnt").val();
|
|
| 1465 |
- |
|
| 1466 |
- //일반 단가로 변경해주기 |
|
| 1467 |
- if(evnMsgType == '4'){
|
|
| 1468 |
- |
|
| 1469 |
- norEachPrice = $("#norsPrice").val();
|
|
| 1470 |
- console.log("norEachPrice Short::: "+norEachPrice);
|
|
| 1471 |
- |
|
| 1472 |
- }else if(evnMsgType == '6'){
|
|
| 1473 |
- |
|
| 1474 |
- if(evnImgCnt == 0){//장문 가격
|
|
| 1475 |
- |
|
| 1476 |
- norEachPrice = $("#normPrice").val();
|
|
| 1477 |
- console.log("norEachPrice Long ::: "+norEachPrice);
|
|
| 1478 |
- |
|
| 1479 |
- }else if(evnImgCnt == 1){
|
|
| 1480 |
- |
|
| 1481 |
- norEachPrice = $("#norpPrice").val();
|
|
| 1482 |
- console.log("norEachPrice p1 ::: "+norEachPrice);
|
|
| 1483 |
- |
|
| 1484 |
- }else if(evnImgCnt == 2){
|
|
| 1485 |
- |
|
| 1486 |
- norEachPrice = $("#norp2Price").val();
|
|
| 1487 |
- console.log("norEachPrice p2 ::: "+norEachPrice);
|
|
| 1488 |
- |
|
| 1489 |
- }else if(evnImgCnt == 3){
|
|
| 1490 |
- |
|
| 1491 |
- norEachPrice = $("#norp3Price").val();
|
|
| 1492 |
- console.log("norEachPrice p3 ::: "+norEachPrice);
|
|
| 1493 |
- |
|
| 1494 |
- } |
|
| 1495 |
- |
|
| 1496 |
- } |
|
| 1497 |
- |
|
| 1498 |
- return norEachPrice; |
|
| 1499 |
-} |
|
| 1500 |
- |
|
| 1501 |
-//빈 값이나 null 값을 제거하는 함수 |
|
| 1502 |
-function removeEmptyValues(obj) {
|
|
| 1503 |
- Object.keys(obj).forEach(function(key) {
|
|
| 1504 |
- if (obj[key] === null || obj[key] === '') {
|
|
| 1505 |
- delete obj[key]; |
|
| 1506 |
- } |
|
| 1507 |
- }); |
|
| 1508 |
-} |
|
| 1509 |
- |
|
| 1510 |
- |
|
| 1511 |
-function sendMsgAjax(paramSmsCnt, paramBlockCnt){
|
|
| 1512 |
- var form = document.msgForm; |
|
| 1513 |
- var reserYn = $("#reserveYn").val();
|
|
| 1514 |
- |
|
| 1515 |
- var data = new FormData(form); |
|
| 1516 |
- url = "/web/mjon/msgdata/sendMsgDataAjax.do"; |
|
| 1517 |
- |
|
| 1518 |
- $.ajax({
|
|
| 1519 |
- type: "POST", |
|
| 1520 |
- url: url, |
|
| 1521 |
- data: data, |
|
| 1522 |
- dataType:'json', |
|
| 1523 |
- async: true, |
|
| 1524 |
- processData: false, |
|
| 1525 |
- contentType: false, |
|
| 1526 |
- cache: false, |
|
| 1527 |
- success: function (returnData, status) {
|
|
| 1528 |
- if(status == 'success'){ // status 확인 필요한가. 석세스 안뜨면 에러 가지 않나
|
|
| 1529 |
- if("fail" == returnData.result){
|
|
| 1530 |
- |
|
| 1531 |
- alert(returnData.message); |
|
| 1532 |
- return false; |
|
| 1533 |
- |
|
| 1534 |
- }else if("loginFail" == returnData.result){
|
|
| 1535 |
- |
|
| 1536 |
- alert(returnData.message); |
|
| 1537 |
- return false; |
|
| 1538 |
- |
|
| 1539 |
- }else if("smsLengFail" == returnData.result){
|
|
| 1540 |
- |
|
| 1541 |
- alert(returnData.message); |
|
| 1542 |
- return false; |
|
| 1543 |
- |
|
| 1544 |
- }else if("imgSourceFail" == returnData.result){
|
|
| 1545 |
- |
|
| 1546 |
- $('.pop_msg_fails').css({'display':'block','opacity':'1','left':'50%','top':'50%','transform':'translate(-50%,-50%)'});
|
|
| 1547 |
- $('.pop_msg_fails .msg_text').html(returnData.message);
|
|
| 1548 |
- $('.mask').addClass('on');
|
|
| 1549 |
- |
|
| 1550 |
- }else if("spamKeyWordFail" == returnData.result){//스팸 및 스미싱 단어가 들어간 문자 발송시 회원 이용정지 처리
|
|
| 1551 |
- |
|
| 1552 |
- $('.pop_msg_spam').css({'display':'block','opacity':'1','left':'50%','top':'50%','transform':'translate(-50%,-50%)'});
|
|
| 1553 |
- $('.pop_msg_spam .msg_text').html(returnData.message);
|
|
| 1554 |
- $('.mask').addClass('on');
|
|
| 1555 |
- |
|
| 1556 |
- }else if("statusFail" == returnData.result){
|
|
| 1557 |
- |
|
| 1558 |
- alert(returnData.message); |
|
| 1559 |
- //문자발송 URL Move |
|
| 1560 |
- goMsgUrlMove(); |
|
| 1561 |
- return false; |
|
| 1562 |
- |
|
| 1563 |
- }else{
|
|
| 1564 |
- |
|
| 1565 |
- var smsCnt = Number(returnData.resultSts); |
|
| 1566 |
- var blockCnt = Number(returnData.resultBlockSts); |
|
| 1567 |
- |
|
| 1568 |
- smsCnt = Number(smsCnt) + Number(paramSmsCnt); |
|
| 1569 |
- blockCnt = Number(blockCnt) + Number(paramBlockCnt); |
|
| 1570 |
- |
|
| 1571 |
- if((smsCnt + blockCnt) == 0){
|
|
| 1572 |
- |
|
| 1573 |
- $('.pop_msg_spam').css({'display':'block','opacity':'1','left':'50%','top':'50%','transform':'translate(-50%,-50%)'});
|
|
| 1574 |
- $('.pop_msg_spam .msg_text').html("문자 발송(예약)에 실패하였습니다.<br/> 다시 시도해주세요. <br/>* 정상적으로 발송 시도하였으나 실패하신 경우 혹시 문자내용에 사용불가 이모지 <br/>또는 복사-붙여넣기로 인한 보이지 않는 특수문자가 포함되었는지 확인 후 다시 시도해주세요.");
|
|
| 1575 |
- $('.mask').addClass('on');
|
|
| 1576 |
- |
|
| 1577 |
- }else{
|
|
| 1578 |
- |
|
| 1579 |
- $('.pop_msg_success').css({'display':'block','opacity':'1','left':'50%','top':'50%','transform':'translate(-50%,-50%)'});
|
|
| 1580 |
- //예약발송 건의 경우 결과 팝업 문구 변경 |
|
| 1581 |
- if(reserYn == 'Y'){
|
|
| 1582 |
- $('.pop_msg_success .msg_text').html("예약 성공 : <strong>"+ smsCnt + "</strong>건,수신거부 : <span>" + blockCnt + "</span>건의<br>문자가 예약 되었습니다.");
|
|
| 1583 |
- }else{
|
|
| 1584 |
- $('.pop_msg_success .msg_text').html("발송 성공 : <strong>"+ smsCnt + "</strong>건,수신거부 : <span>" + blockCnt + "</span>건의<br>문자가 발송 되었습니다.");
|
|
| 1585 |
- } |
|
| 1586 |
- |
|
| 1587 |
- $('.mask').addClass('on');
|
|
| 1588 |
- |
|
| 1589 |
- } |
|
| 1590 |
- |
|
| 1591 |
- } |
|
| 1592 |
- |
|
| 1593 |
- } else if(status== 'fail'){
|
|
| 1594 |
- alert(returnData.message); |
|
| 1595 |
- } |
|
| 1596 |
- }, |
|
| 1597 |
- beforeSend : function(xmlHttpRequest) {
|
|
| 1598 |
- //로딩창 show |
|
| 1599 |
- $('.loading_layer').addClass('active');
|
|
| 1600 |
- }, |
|
| 1601 |
- complete : function(xhr, textStatus) {
|
|
| 1602 |
- //로딩창 hide |
|
| 1603 |
- $('.loading_layer').removeClass('active');
|
|
| 1604 |
- }, |
|
| 1605 |
- error: function (e) { alert("문자 발송에 실패하였습니다."); console.log("ERROR : ", e); }
|
|
| 1606 |
- }); |
|
| 1607 |
- |
|
| 1608 |
-} |
|
| 1609 |
- |
|
| 1610 |
-function linkPage(pageNo){
|
|
| 1611 |
- fnLetterListAjax(pageNo); |
|
| 1612 |
-} |
|
| 1613 |
- |
|
| 1614 |
- |
|
| 1615 |
-function linkPhoPage(pageNo){
|
|
| 1616 |
- fnPhotoListAjax(pageNo); |
|
| 1617 |
-} |
|
| 1618 |
- |
|
| 1619 |
-function myMsgPage(pageNo){
|
|
| 1620 |
- fnMyMsgListAjax(pageNo); |
|
| 1621 |
-} |
|
| 1622 |
- |
|
| 1623 |
-function fnMyMsgCheckDelete(){
|
|
| 1624 |
- |
|
| 1625 |
- var msgId = []; |
|
| 1626 |
- if($("input:checkbox[name='myMsgDel']").is(":checked")==false){
|
|
| 1627 |
- alert("선택된 항목이 없습니다.");
|
|
| 1628 |
- return; |
|
| 1629 |
- } |
|
| 1630 |
- |
|
| 1631 |
- $("input:checkbox[name='myMsgDel']:checked").each(function(index){
|
|
| 1632 |
- |
|
| 1633 |
- msgId[index] = $(this).val(); |
|
| 1634 |
- |
|
| 1635 |
- }); |
|
| 1636 |
- |
|
| 1637 |
- if(msgId.length > 0){
|
|
| 1638 |
- |
|
| 1639 |
- document.myMsgForm.msgIdList.value = msgId; |
|
| 1640 |
- var sendData = $(document.myMsgForm).serializeArray(); |
|
| 1641 |
- |
|
| 1642 |
- $("#myMsgLoad").load("/web/mjon/msgdata/deleteMyMsgDataListAjax.do", sendData ,function(response, status, xhr){
|
|
| 1643 |
- |
|
| 1644 |
- //문자 내용 스크롤 적용 |
|
| 1645 |
- /* $(".msg_cont").mCustomScrollbar({
|
|
| 1646 |
- axis: 'y', |
|
| 1647 |
- scrollbarPosition: "inside", |
|
| 1648 |
- theme: "dark", |
|
| 1649 |
- autoHideScrollbar: false |
|
| 1650 |
- }); */ |
|
| 1651 |
- |
|
| 1652 |
- }); |
|
| 1653 |
- |
|
| 1654 |
- }else{
|
|
| 1655 |
- |
|
| 1656 |
- alert("삭제할 문자를 선택해 주세요.");
|
|
| 1657 |
- return false; |
|
| 1658 |
- |
|
| 1659 |
- } |
|
| 1660 |
- |
|
| 1661 |
-} |
|
| 1662 |
- |
|
| 1663 |
-//문자 샘플 2줄, 4줄 보기 기능 |
|
| 1664 |
-function fnLPageUnit(){
|
|
| 1665 |
- |
|
| 1666 |
- var form = document.letterForm; |
|
| 1667 |
- var pageUnit = form.LPageUnit.value; |
|
| 1668 |
- |
|
| 1669 |
- form.pageUnit.value = pageUnit; |
|
| 1670 |
- fnLetterListAjax(1); |
|
| 1671 |
- |
|
| 1672 |
-} |
|
| 1673 |
- |
|
| 1674 |
-//그림문자 샘플 2줄, 4줄 보기 기능 |
|
| 1675 |
-function fnPhPageUnit(){
|
|
| 1676 |
- |
|
| 1677 |
- var form = document.letterForm; |
|
| 1678 |
- var pageUnit = form.PhPageUnit.value; |
|
| 1679 |
- |
|
| 1680 |
- form.pageUnit.value = pageUnit; |
|
| 1681 |
- fnPhotoListAjax(1); |
|
| 1682 |
- |
|
| 1683 |
-} |
|
| 1684 |
- |
|
| 1685 |
-//내문자함 2줄 4줄보기 기능 |
|
| 1686 |
-function fnMsgPageUnit(){
|
|
| 1687 |
- |
|
| 1688 |
- var form = document.myMsgForm; |
|
| 1689 |
- var pageUnit = form.msgPageUnit.value; |
|
| 1690 |
- |
|
| 1691 |
- form.pageUnit.value = pageUnit; |
|
| 1692 |
- fnMyMsgListAjax(1); |
|
| 1693 |
- |
|
| 1694 |
-} |
|
| 1695 |
- |
|
| 1696 |
-function fnMyMsgSearchListOrd(){
|
|
| 1697 |
- |
|
| 1698 |
- var form = document.myMsgForm; |
|
| 1699 |
- var sortOrd = form.searchSortOrd.value; |
|
| 1700 |
- |
|
| 1701 |
- if(sortOrd == 'desc'){
|
|
| 1702 |
- |
|
| 1703 |
- form.searchSortOrd.value = 'asc'; |
|
| 1704 |
- $('#sortCnd').text('등록순');
|
|
| 1705 |
- |
|
| 1706 |
- }else{
|
|
| 1707 |
- |
|
| 1708 |
- form.searchSortOrd.value = 'desc'; |
|
| 1709 |
- $('#sortCnd').text('최근순');
|
|
| 1710 |
- |
|
| 1711 |
- } |
|
| 1712 |
- |
|
| 1713 |
- //내문자함 내용 검색하기 |
|
| 1714 |
- fnMyMsgSearchListAjax(1); |
|
| 1715 |
- |
|
| 1716 |
-} |
|
| 1717 |
- |
|
| 1718 |
-function msgSuccessClose(obj){
|
|
| 1719 |
- $(obj).closest('.pop_msg_success').attr('style','');
|
|
| 1720 |
- //문자발송 URL Move |
|
| 1721 |
- goMsgUrlMove(); |
|
| 1722 |
- $('html').scrollTop(0);
|
|
| 1723 |
-} |
|
| 1724 |
- |
|
| 1725 |
-function msgFailsClose(obj){
|
|
| 1726 |
- $(obj).closest('.pop_msg_fails').attr('style','');
|
|
| 1727 |
-} |
|
| 1728 |
- |
|
| 1729 |
-function msgSpamClose(obj){
|
|
| 1730 |
- $(obj).closest('.pop_msg_spam').attr('style','');
|
|
| 1731 |
- //location.href="/web/uat/uia/actionLogout.do"; |
|
| 1732 |
-} |
|
| 1733 |
- |
|
| 1734 |
-function msgResultLink(){
|
|
| 1735 |
- var reserYn = $("input[name=reserYn]:checked").val(); // 예약 발송 여부 확인
|
|
| 1736 |
- if(reserYn == 'Y'){
|
|
| 1737 |
- |
|
| 1738 |
- location.href="/web/mjon/reservmsg/selectReservMsgView.do"; |
|
| 1739 |
- |
|
| 1740 |
- }else{
|
|
| 1741 |
- |
|
| 1742 |
- location.href="/web/mjon/msgsent/selectMsgSentView.do"; |
|
| 1743 |
- |
|
| 1744 |
- } |
|
| 1745 |
- |
|
| 1746 |
-} |
|
| 1747 |
- |
|
| 1748 |
-//START |
|
| 1749 |
-//맞춤제작 요청 JSPark => 2023.02.21 추가 |
|
| 1750 |
-//맞춤제작 등록 Popup |
|
| 1751 |
-function customPopup(){
|
|
| 1752 |
- $("#customPopup").load("/web/mjon/custom/selectMsgCustomPopupAjax.do", "" ,function(response, status, xhr){
|
|
| 1753 |
- popupImgList(1); |
|
| 1754 |
- }); |
|
| 1755 |
-} |
|
| 1756 |
- |
|
| 1757 |
-function openMsgCustomPopup() {
|
|
| 1758 |
- if(loginVO == "" || loginVO == null){
|
|
| 1759 |
- alert("로그인 후 이용이 가능합니다.");
|
|
| 1760 |
- return false; |
|
| 1761 |
- } else {
|
|
| 1762 |
- $("#customPopupOpen").trigger("click");
|
|
| 1763 |
- } |
|
| 1764 |
- $("#customType04").hide();
|
|
| 1765 |
- popCustomScrT=$(window).scrollTop(); |
|
| 1766 |
- popScrTarget(); |
|
| 1767 |
-} |
|
| 1768 |
- |
|
| 1769 |
-$(window).on('load',function(){
|
|
| 1770 |
- setTimeout(function(){
|
|
| 1771 |
- popScrTarget(); |
|
| 1772 |
- },500); |
|
| 1773 |
-}); |
|
| 1774 |
- |
|
| 1775 |
-function popScrTarget(){
|
|
| 1776 |
- var closeTarget=$('.custom_layer .tooltip-close');
|
|
| 1777 |
- closeTarget.attr('onclick','popScrCloseSetting();');
|
|
| 1778 |
-} |
|
| 1779 |
- |
|
| 1780 |
-function popScrCloseSetting(){
|
|
| 1781 |
- setTimeout(function(){
|
|
| 1782 |
- $(window).scrollTop(popCustomScrT); |
|
| 1783 |
- },1); |
|
| 1784 |
-} |
|
| 1785 |
-//END |
|
| 1786 | 13 |
</script> |
| 1787 | 14 |
|
| 1788 | 15 |
|
... | ... | @@ -1852,10 +79,11 @@ |
| 1852 | 79 |
<div class="send_top"> |
| 1853 | 80 |
<!-- tab button --> |
| 1854 | 81 |
<ul class="tabType1"> |
| 1855 |
- <li class="tab active"><button type="button" onclick="TabType1(this,'1');">단문 · 장문 · 그림 문자</button></li> |
|
| 1856 |
- <li class="tab"> |
|
| 1857 |
- <!-- <button type="button" onclick="TabType1(this,'2');">대량 문자(엑셀·TXT)</button> --> |
|
| 1858 |
- <button type="button" onclick="javascript:fnMsgExcelDataView(); return false;">대량 문자(엑셀·TXT)</button> |
|
| 82 |
+ <li class="tab ${tabDision eq 'tab01' ? 'active' : ''}">
|
|
| 83 |
+ <button type="button" onclick="javascript:fnMsgDataView(); return false;">단문 · 장문 · 그림 문자</button> |
|
| 84 |
+ </li> |
|
| 85 |
+ <li class="tab ${tabDision eq 'tab02' ? 'active' : ''}">
|
|
| 86 |
+ <button type="button" onclick="javascript:fnMsgExcelDataView(); return false;">대량 문자</button> |
|
| 1859 | 87 |
</li> |
| 1860 | 88 |
</ul><!--// tab button --> |
| 1861 | 89 |
<!-- tab content1 --> |
... | ... | @@ -2173,3 +401,6 @@ |
| 2173 | 401 |
<input name="moveAddrFlag" type="hidden" value="N"/> |
| 2174 | 402 |
<input name="addrIdList" type="hidden" value=""/> |
| 2175 | 403 |
</form> |
| 404 |
+<form id="goPageAjax" name="goPageAjax" method="post"> |
|
| 405 |
+ <input name="tabDision" type="hidden" value="<c:out value='${tabDision }'/>"/>
|
|
| 406 |
+</form> |
--- src/main/webapp/WEB-INF/jsp/web/msgdata/excel/MsgExcelDataView.jsp
+++ src/main/webapp/WEB-INF/jsp/web/msgdata/excel/MsgExcelDataView.jsp
... | ... | @@ -33,7 +33,7 @@ |
| 33 | 33 |
} |
| 34 | 34 |
|
| 35 | 35 |
//그림문자 샘플 탭 활성화 시키기 |
| 36 |
- TabType2($('.tabType2 li').eq(1), '2');
|
|
| 36 |
+// TabType2($('.tabType2 li').eq(1), '2');
|
|
| 37 | 37 |
|
| 38 | 38 |
// 맞춤제작 요청 JSPark => 2023.02.21 추가 |
| 39 | 39 |
//맞춤제작 등록 Popup |
... | ... | @@ -1682,21 +1682,16 @@ |
| 1682 | 1682 |
<!-- tab button --> |
| 1683 | 1683 |
<ul class="tabType1"> |
| 1684 | 1684 |
<li class="tab active"> |
| 1685 |
- <!-- <button type="button" onclick="TabType1(this,'1');">단문 · 장문 · 그림 문자</button> --> |
|
| 1686 | 1685 |
<button type="button" onclick="javascript:fnMsgDataView(); return false;">단문 · 장문 · 그림 문자</button> |
| 1687 | 1686 |
</li> |
| 1688 | 1687 |
<li class="tab"> |
| 1689 | 1688 |
<button type="button" onclick="TabType1(this,'2');">대량 문자(엑셀·TXT)</button> |
| 1690 |
- <!-- <button type="button" onclick="javascript:fnMsgExcelDataView(); return false;">대량 문자(엑셀·TXT)</button> --> |
|
| 1691 | 1689 |
</li> |
| 1692 | 1690 |
</ul><!--// tab button --> |
| 1693 |
- <!-- tab content1 --> |
|
| 1694 |
- <!-- <span id="contentArea"></span> --> |
|
| 1695 |
- <!-- <div class="top_content current contentArea" id="tab1_1"></div> --> |
|
| 1691 |
+ |
|
| 1692 |
+ <div class="top_content current get_excel contentExcelArea" id="tab1_2" style="min-height: 555px;"> |
|
| 1696 | 1693 |
|
| 1697 |
- <!-- tab content2 --> |
|
| 1698 |
- <!-- <span id="contentExcelArea"></span> --> |
|
| 1699 |
- <div class="top_content current get_excel contentExcelArea" id="tab1_2" style="min-height: 555px;"></div> |
|
| 1694 |
+ </div> |
|
| 1700 | 1695 |
</div><!--// send top --> |
| 1701 | 1696 |
<!-- send bottom --> |
| 1702 | 1697 |
<div class="send_bottom"> |
... | ... | @@ -1758,7 +1753,7 @@ |
| 1758 | 1753 |
<a href="#none" value="<c:out value='${cateList.cateCode}'/>"><c:out value="${cateList.cateNm}"/></a>
|
| 1759 | 1754 |
</c:forEach> |
| 1760 | 1755 |
</div> |
| 1761 |
- <div class="tab_depth4 tDep1_threeCateCode" id="tDep1_depThrCateCode" <!-- 해쉬태그 삭제 및 하위 카테고리 추가로 인해 class="tDep1_hashTag" 삭제 --> |
|
| 1756 |
+ <div class="tab_depth4 tDep1_threeCateCode" id="tDep1_depThrCateCode"> <!-- 해쉬태그 삭제 및 하위 카테고리 추가로 인해 class="tDep1_hashTag" 삭제 --> |
|
| 1762 | 1757 |
<!-- 하위 카테고리(3뎁스)로 대체 --> |
| 1763 | 1758 |
<%-- <a href="#none" class="on hashAll" value="">전체</a> |
| 1764 | 1759 |
<c:forEach var="hashList" items="${hashTagList}" varStatus="status">
|
+++ src/main/webapp/js/web/msgdata/init.js
... | ... | @@ -0,0 +1,81 @@ |
| 1 | + | |
| 2 | +var _regExp1 = /(^02.{0}|^01.{1}|^[0-9]{3})-?([0-9]{3,4})-?([0-9]{4})$/; | |
| 3 | + | |
| 4 | +var imgFilePath = []; // 최종 선택한 이미지 경로 저장 변수 | |
| 5 | +var imgFileId = []; // 최종 선택한 파일 아이디 저장 변수 | |
| 6 | +var templateYn = []; // 템플릿 사용 여부 저장 변수 | |
| 7 | +var tableL = null; //좌측 받는 사람 주소록 Tabulator 변수 | |
| 8 | +var tableR = null; //우측 주소록 불러오기 Tabulator 변수 | |
| 9 | +var tableAddr = null; //주소록 불러오기 팝업 Tabulator 변수 | |
| 10 | + | |
| 11 | +var loginVO = '${loginVO}'; | |
| 12 | + | |
| 13 | +var popCustomScrT=0; // 맞춤제작 요청 JSPark => 2023.02.21 추가 | |
| 14 | +var msgResendAllFlag = "${msgResendAllFlag}"; | |
| 15 | +var msgResendAllGroupId = "${msgResendAllGroupId}"; | |
| 16 | +var msgResendAllAdvertiseYn = "${msgResendAllAdvertiseYn}"; | |
| 17 | +var msgResendAllReplaceYn = "${msgResendAllReplaceYn}"; | |
| 18 | + | |
| 19 | +$(document).ready(function(){ | |
| 20 | + var tsMoreSampleYn = "${moreSampleYn}"; | |
| 21 | + var tsMainImgFlag = "${mainImgVO.mainImgFlag}"; | |
| 22 | + var tsMainLetterFlag = "${mainLetterVO.mainLetterFlag}"; | |
| 23 | + | |
| 24 | + //메인화면에서 샘플 더보기로 왔을 시 문자타입, 카테고리 세팅 | |
| 25 | + if(tsMoreSampleYn == 'Y'){ | |
| 26 | + document.letterForm.letterType.value = '${searchVO.mainLetterTypeFlag}'; | |
| 27 | + document.letterForm.categoryCode.value = "${cateCodeVO.cateNo}"; | |
| 28 | + } | |
| 29 | + //메인화면에서 그림문자샘플 클릭으로 왔을 시 문자타입, 카테고리 세팅 | |
| 30 | + if(tsMainImgFlag == 'Y'){ | |
| 31 | + document.letterForm.letterType.value = '${searchVO.mainLetterTypeFlag}'; | |
| 32 | + document.letterForm.categoryCode.value = "${cateCodeVO.cateNo}"; | |
| 33 | + } | |
| 34 | + //메인화면에서 단문장문 문자샘플 클릭으로 왔을 시 문자타입, 카테고리 세팅 | |
| 35 | + if(tsMainLetterFlag == 'Y'){ | |
| 36 | + document.letterForm.letterType.value = '${searchVO.mainLetterTypeFlag}'; | |
| 37 | + document.letterForm.categoryCode.value = "${cateCodeVO.cateNo}"; | |
| 38 | + } | |
| 39 | + | |
| 40 | + | |
| 41 | + //문자 발송 화면 폼 불러오기 | |
| 42 | + listMsgDataView(); | |
| 43 | + | |
| 44 | + //최 하단 문자 샘플 탭 리스트 내용 불러오기 | |
| 45 | + fnLetterListAjax(1); | |
| 46 | + | |
| 47 | + //최 하단 그림문자 탭 리스트 내용 불러오기 | |
| 48 | + fnPhotoListAjax(1); | |
| 49 | + | |
| 50 | + // 내보관함 리스트 로그인이 완료된 경우에만 로드되도록 | |
| 51 | + if(loginVO != "" && loginVO != null){ | |
| 52 | + //최 하단 내문자함 탭 리스트 내용 불러오기 | |
| 53 | + fnMyMsgListAjax(1); | |
| 54 | + } | |
| 55 | + | |
| 56 | + //그림문자 샘플 탭 활성화 시키기 | |
| 57 | + | |
| 58 | + // var tabDision = '${tabDision}'; | |
| 59 | + // console.log('tabDision : ', tabDision); | |
| 60 | + // TabType1_advc($('.tabType1 li').eq(1)); | |
| 61 | + // TabType2($('.tabType2 li').eq(1), '2'); | |
| 62 | + | |
| 63 | + //document.ready 마지막에 그림문자를 조회하기 때문에 letterForm.letterType이 P로 고정되는데, 메인에서 왔을 경우 letterType을 다시 원복하기 위한 작업 | |
| 64 | + if(tsMoreSampleYn == 'Y'){ | |
| 65 | + document.letterForm.letterType.value = '${searchVO.mainLetterTypeFlag}'; | |
| 66 | + document.letterForm.categoryCode.value = "${cateCodeVO.cateNo}"; | |
| 67 | + } | |
| 68 | + if(tsMainImgFlag == 'Y'){ | |
| 69 | + document.letterForm.letterType.value = '${searchVO.mainLetterTypeFlag}'; | |
| 70 | + document.letterForm.categoryCode.value = "${cateCodeVO.cateNo}"; | |
| 71 | + } | |
| 72 | + if(tsMainLetterFlag == 'Y'){ | |
| 73 | + document.letterForm.letterType.value = '${searchVO.mainLetterTypeFlag}'; | |
| 74 | + document.letterForm.categoryCode.value = "${cateCodeVO.cateNo}"; | |
| 75 | + } | |
| 76 | + | |
| 77 | + // 맞춤제작 요청 JSPark => 2023.02.21 추가 | |
| 78 | + //맞춤제작 등록 Popup | |
| 79 | + //customPopup(); | |
| 80 | +}); | |
| 81 | + |
+++ src/main/webapp/js/web/msgdata/msgDataView.js
... | ... | @@ -0,0 +1,1717 @@ |
| 1 | + | |
| 2 | + | |
| 3 | +/** | |
| 4 | + * 20241218 advc 이호영 | |
| 5 | + * @기존 MsgDataView.jsp에 있는 js를 가져와서 분기 처리중 | |
| 6 | + * - document.ready는 init.js로 이동함 | |
| 7 | + * | |
| 8 | + * | |
| 9 | + */ | |
| 10 | + | |
| 11 | +// 문자 그룹정보 => 재전송용 | |
| 12 | +function getMjMsgGroupInfoByResend() { | |
| 13 | + $.ajax({ | |
| 14 | + type: "POST", | |
| 15 | + url: "/web/mjon/msgdata/selectMjMsgGroupInfoByResendAjax.do", | |
| 16 | + data: {"msgResendAllGroupId" : msgResendAllGroupId}, | |
| 17 | + dataType:'json', | |
| 18 | + async: false, | |
| 19 | + success: function (data) { | |
| 20 | + //alert(JSON.stringify(data)); | |
| 21 | + if(data.isSuccess == true){ | |
| 22 | + var msgData = data.resultMsgInfo; | |
| 23 | + var fileData = data.resultMsgAddPhotoInfo; | |
| 24 | + | |
| 25 | + // 발신번호 | |
| 26 | + var reCallFrom = $.trim(removeDash($("#callFromList option:selected").val())); | |
| 27 | + if ($.trim(removeDash(msgData.callFrom)) != reCallFrom) { | |
| 28 | + alert("발신번호가 이전에 발송한 번호가 아닙니다.\n발신번호를 확인해주세요.") | |
| 29 | + } | |
| 30 | + | |
| 31 | + var smsTxt = msgData.smsTxt; | |
| 32 | + var subject = msgData.subject; | |
| 33 | + var fileId = ""; | |
| 34 | + var filePath = ""; | |
| 35 | + var len = fileData.length; | |
| 36 | + | |
| 37 | + // 기존 내용 지워주기 | |
| 38 | + //$(".btnReset").trigger("click"); | |
| 39 | + $('.delLi').each(function(){ | |
| 40 | + $(this).remove(); | |
| 41 | + }); | |
| 42 | + | |
| 43 | + $('.preBoxF').each(function(){ | |
| 44 | + $(this).remove(); | |
| 45 | + }); | |
| 46 | + | |
| 47 | + $('#imgCnt').val(0); | |
| 48 | + | |
| 49 | + // 기존 imgFileId, imgFilePath 배열에 있는 내용 초기화 해주기 | |
| 50 | + imgFilePath = []; | |
| 51 | + imgFileId = []; | |
| 52 | + | |
| 53 | + // 문자제목 | |
| 54 | + if (msgData.subject != null && msgData.subject != "") { | |
| 55 | + $('.msg_title').addClass('active'); | |
| 56 | + $("input:radio[name='title_status']:radio[value='Y']").prop('checked', true); // 선택하기 | |
| 57 | + $('.textbox').show(); | |
| 58 | + $("#mmsSubject").val(subject); | |
| 59 | + } | |
| 60 | + | |
| 61 | + // 문자내용 | |
| 62 | + if (smsTxt.indexOf("(광고)") == 0) { | |
| 63 | + $('#send_adYnY').prop('checked', true); | |
| 64 | + | |
| 65 | + //광고 상하단 내용 넣어주기 | |
| 66 | + advMsgInsert(); | |
| 67 | + | |
| 68 | + // 광고 기본정보 제거 | |
| 69 | + smsTxt = $.trim(smsTxt.replace("(광고)", "")); | |
| 70 | + var smsTxtLastIdxCnt = smsTxt.lastIndexOf("무료거부"); | |
| 71 | + if (smsTxtLastIdxCnt != -1) { | |
| 72 | + smsTxt = $.trim(smsTxt.substring(0, smsTxtLastIdxCnt)); | |
| 73 | + } | |
| 74 | + } | |
| 75 | + $('#smsTxtArea').val(smsTxt); | |
| 76 | + | |
| 77 | + // 첨부 이미지가 있는경우 이미지 처리해주기 | |
| 78 | + if(len > 0) { | |
| 79 | + for(var i=0; i < len; i++) { | |
| 80 | + var num = i + 1; | |
| 81 | + var imgId = fileData[i].atchFileId; | |
| 82 | + var imgSn = fileData[i].fileSn; | |
| 83 | + var fileStreCours = fileData[i].fileStreCours; | |
| 84 | + var streFileNm = fileData[i].streFileNm; | |
| 85 | + var fileExtsn = fileData[i].fileExtsn; | |
| 86 | + | |
| 87 | + /* var imgSrc = fileStreCours + "/" + streFileNm + "." + fileExtsn; */ | |
| 88 | + var imgSrc = '/cmm/fms/getImage2.do?atchFileId=' + imgId + '&fileSn=' + imgSn; | |
| 89 | + myMsgImageControl(imgSrc, "edit_n", "Template", imgId); | |
| 90 | + } | |
| 91 | + | |
| 92 | + fnByteString($('#smsTxtArea').val()); | |
| 93 | + } | |
| 94 | + else { | |
| 95 | + fnByteString($('#smsTxtArea').val()); | |
| 96 | + } | |
| 97 | + | |
| 98 | + // 문자전송 상단으로 이동 | |
| 99 | + var sendOfT=$('.send_top').offset().top; | |
| 100 | + $('html,body').stop().animate({'scrollTop':sendOfT-60},250); | |
| 101 | + | |
| 102 | + } else { | |
| 103 | + //alert("Message : " + msg); | |
| 104 | + } | |
| 105 | + }, | |
| 106 | + error: function (e) { | |
| 107 | + //alert("저장에 실패하였습니다."); | |
| 108 | + //console.log("ERROR : ", e); | |
| 109 | + } | |
| 110 | + }); | |
| 111 | +} | |
| 112 | + | |
| 113 | +// 문자 상세정보 => 재전송용 | |
| 114 | +function getMjMsgListByResend() { | |
| 115 | + $.ajax({ | |
| 116 | + type: "POST", | |
| 117 | + url: "/web/mjon/msgdata/selectMjMsgListByResendAjax.do", | |
| 118 | + data: {"msgResendAllGroupId" : msgResendAllGroupId}, | |
| 119 | + dataType:'json', | |
| 120 | + async: false, | |
| 121 | + success: function (data) { | |
| 122 | + console.log('data : ', data); | |
| 123 | + if(data.isSuccess == true){ | |
| 124 | + var listCnt = data.resultList.length; | |
| 125 | + | |
| 126 | + //수신자 처리 변수 | |
| 127 | + var callToList = []; //수신자 처리 리스트 | |
| 128 | + var tableData = []; //수신자 tabulator 처리 변수 | |
| 129 | + | |
| 130 | + for(var i = 0; i < listCnt; i++){ // 수신자 리스트 Tabulator에 입력해 주기 | |
| 131 | + callToList[i] = data.resultList[i].callTo; | |
| 132 | + tableData.push({phone: removeDash(callToList[i])}); | |
| 133 | + } | |
| 134 | + | |
| 135 | + console.log('tableData : ', tableData); | |
| 136 | + if(tableData.length > 0){ | |
| 137 | + | |
| 138 | + // 데이터 추가 | |
| 139 | + setTimeout(() => { | |
| 140 | + tableL.addData(dupliPhoneData(tableData)); | |
| 141 | + totRows = tableL.getRows().length; | |
| 142 | + console.log('totRows : ', totRows); | |
| 143 | + updateTotCnt(totRows); //전체 데이터 갯수 구하기 | |
| 144 | + | |
| 145 | + //결제 금액 구하기 | |
| 146 | + totalPriceSum(totRows); | |
| 147 | + }, 0); // 초기화 직후에 실행 | |
| 148 | + } | |
| 149 | + | |
| 150 | + } else { | |
| 151 | + //alert("Message : " + msg); | |
| 152 | + } | |
| 153 | + }, | |
| 154 | + error: function (e) { | |
| 155 | + //alert("저장에 실패하였습니다."); | |
| 156 | + //console.log("ERROR : ", e); | |
| 157 | + } | |
| 158 | + }); | |
| 159 | +} | |
| 160 | + | |
| 161 | +// 문자발송 URL Move | |
| 162 | +function goMsgUrlMove() { | |
| 163 | + document.location.href = "/web/mjon/msgdata/selectMsgDataView.do"; | |
| 164 | +} | |
| 165 | + | |
| 166 | +function listMsgDataView(){ | |
| 167 | + | |
| 168 | + var sendData = $(document.goPageAjax).serializeArray() ; | |
| 169 | + console.log('sendData : ', sendData) | |
| 170 | + $(".contentArea").load("/web/mjon/msgdata/selectMsgDataSMLViewAjax.do", sendData ,function(response, status, xhr){ | |
| 171 | + | |
| 172 | + //문자 재전송 및 주소록 전달 처리를 위해 사용 | |
| 173 | + $("#msgForm").ready(function(){ //문자 내용 폼이 로드된 후 실행 | |
| 174 | + | |
| 175 | + //헤더 문자검색 결과 처리 | |
| 176 | + var headerMsgSearchFlag = '${headerMsgSearchVO.headerMsgSearchFlag}'; | |
| 177 | + | |
| 178 | + if(headerMsgSearchFlag == 'Y'){ | |
| 179 | + | |
| 180 | + var letterType = '${headerMsgSearchVO.msgType}'; | |
| 181 | + var form = document.letterForm; | |
| 182 | + var searchKeyword = '${headerMsgSearchVO.searchKeyword}'; | |
| 183 | + form.letterType.value = letterType; | |
| 184 | + form.searchKeyword.value = searchKeyword; | |
| 185 | + | |
| 186 | + if(letterType == 'P'){ | |
| 187 | + | |
| 188 | + //최 하단 그림문자 탭 리스트 내용 불러오기 | |
| 189 | + fnPhotoListAjax(1); | |
| 190 | + | |
| 191 | + //문자 샘플 탭 활성화 시키기 | |
| 192 | + TabType2($('.tabType2 li').eq(1), '2'); | |
| 193 | + //하단 리스트 탭으로 이동 시키기 | |
| 194 | + var offset = $('.tabType2').offset(); | |
| 195 | + $('html').animate({scrollTop : offset.top}, 400); | |
| 196 | + | |
| 197 | + }else if(letterType == 'L' || letterType == 'S' ){ | |
| 198 | + | |
| 199 | + //문자 샘플 탭 활성화 시키기 | |
| 200 | + TabType2($('.tabType2 li').eq(0), '1'); | |
| 201 | + | |
| 202 | + //최 하단 문자 샘플 탭 리스트 내용 불러오기 | |
| 203 | + fnLetterListAjax(1); | |
| 204 | + if(letterType == 'S'){ | |
| 205 | + | |
| 206 | + $('.tDep1_letType a').eq(0).addClass('on'); | |
| 207 | + $('.tDep1_letType a:last-child').removeClass('on'); | |
| 208 | + | |
| 209 | + }else{ | |
| 210 | + | |
| 211 | + $('.tDep1_letType a').eq(0).removeClass('on'); | |
| 212 | + $('.tDep1_letType a:last-child').addClass('on'); | |
| 213 | + | |
| 214 | + } | |
| 215 | + | |
| 216 | + //하단 리스트 탭으로 이동 시키기 | |
| 217 | + var offset = $('.tabType2').offset(); | |
| 218 | + $('html').animate({scrollTop : offset.top}, 400); | |
| 219 | + | |
| 220 | + } | |
| 221 | + | |
| 222 | + | |
| 223 | + } | |
| 224 | + | |
| 225 | + | |
| 226 | + //메인화면 더많은 샘플보기 버튼 선택시 처리 | |
| 227 | + var moreSamFlag = '${moreSampleYn}'; | |
| 228 | + | |
| 229 | + if(moreSamFlag == 'Y'){ | |
| 230 | + | |
| 231 | + //문자 샘플 탭 활성화 시키기 | |
| 232 | + var mainLetterTypeFlag = '${searchVO.mainLetterTypeFlag}'; | |
| 233 | + var letterTab = '0'; | |
| 234 | + var cateNo = "${cateCodeVO.cateNo}"; | |
| 235 | + if(mainLetterTypeFlag == 'P'){ | |
| 236 | + TabType2($('.tabType2 li').eq(1), '2'); | |
| 237 | + }else{ | |
| 238 | + TabType2($('.tabType2 li').eq(letterTab), '1'); | |
| 239 | + } | |
| 240 | + //장문 일 시 tDep1_letType 탭 세팅 | |
| 241 | + if(mainLetterTypeFlag == 'L'){ | |
| 242 | + $('.tDep1_letType a').removeClass('on'); | |
| 243 | + $('.tDep1_letType a').eq(1).addClass('on'); | |
| 244 | + } | |
| 245 | + | |
| 246 | + //카테고리 탭 활성화 처리 | |
| 247 | + if(mainLetterTypeFlag == 'P'){ //그림문자 샘플로 이동 왔을 시 | |
| 248 | + $('.tDep2_cateCode').find('.on').removeClass('on'); | |
| 249 | + $('.tDep2_cateCode a').each(function(index){ | |
| 250 | + if($(this).attr('value') == cateNo){ | |
| 251 | + $(this).addClass('on'); | |
| 252 | + } | |
| 253 | + }) | |
| 254 | + } | |
| 255 | + if(mainLetterTypeFlag != 'P'){ //단문,장문 샘플로 왔을 시 | |
| 256 | + $('.tDep1_cateCode').find('.on').removeClass('on'); | |
| 257 | + $('.tDep1_cateCode a').each(function(index){ | |
| 258 | + if($(this).attr('value') == cateNo){ | |
| 259 | + $(this).addClass('on'); | |
| 260 | + } | |
| 261 | + }) | |
| 262 | + } | |
| 263 | + | |
| 264 | + | |
| 265 | + //하단 리스트 탭으로 이동 시키기 | |
| 266 | + var offset = $('.tabType2').offset(); | |
| 267 | + $('html').animate({scrollTop : offset.top}, 400); | |
| 268 | + | |
| 269 | + | |
| 270 | + } | |
| 271 | + | |
| 272 | + | |
| 273 | + //메인화면 그림문자 이미지 선택시 처리 | |
| 274 | + var mainImgFlag = '${mainImgVO.mainImgFlag}'; | |
| 275 | + if(mainImgFlag == 'Y'){ | |
| 276 | + //카테고리 처리 | |
| 277 | + var cateNo = "${cateCodeVO.cateNo}"; | |
| 278 | + $('.tDep2_cateCode').find('.on').removeClass('on'); | |
| 279 | + $('.tDep2_cateCode a').each(function(index){ | |
| 280 | + if($(this).attr('value') == cateNo){ | |
| 281 | + $(this).addClass('on'); | |
| 282 | + } | |
| 283 | + }) | |
| 284 | + | |
| 285 | + | |
| 286 | + var atchFileId = '${mainImgVO.atchFileId1}'; | |
| 287 | + var fileSn = '${mainImgVO.fileSn}'; | |
| 288 | + var strImgPath = '${mainImgVO.strImgPath}'; | |
| 289 | + | |
| 290 | + fnCustomImgSendMsg(atchFileId, fileSn, strImgPath); | |
| 291 | + | |
| 292 | + } | |
| 293 | + | |
| 294 | + //메인화면 인기문자 메세지 선택시 처리 | |
| 295 | + var mainLetterFlag = '${mainLetterVO.mainLetterFlag}'; | |
| 296 | + if(mainLetterFlag == 'Y'){ | |
| 297 | + var letterTab = '0'; | |
| 298 | + //문자샘플 활성화 처리 | |
| 299 | + TabType2($('.tabType2 li').eq(0), '1'); | |
| 300 | + //단문,장문 탭 활성화 처리 | |
| 301 | + var mainLetterTypeFlag = '${searchVO.mainLetterTypeFlag}'; | |
| 302 | + if(mainLetterTypeFlag == 'L'){ | |
| 303 | + $('.tDep1_letType a').removeClass('on'); | |
| 304 | + $('.tDep1_letType a').eq(1).addClass('on'); | |
| 305 | + } | |
| 306 | + //카테고리 활성화 처리 | |
| 307 | + var cateNo = "${cateCodeVO.cateNo}"; | |
| 308 | + $('.tDep1_cateCode').find('.on').removeClass('on'); | |
| 309 | + $('.tDep1_cateCode a').each(function(index){ | |
| 310 | + if($(this).attr('value') == cateNo){ | |
| 311 | + $(this).addClass('on'); | |
| 312 | + } | |
| 313 | + }) | |
| 314 | + var smsTxt = '${mainLetterVO.smsTxt}'; | |
| 315 | + if(smsTxt != null){ | |
| 316 | + | |
| 317 | + smsTxt = smsTxt.replaceAll("<br/>", "\n"); //줄발꿈문자 변환하기 | |
| 318 | + $("#smsTxtArea").val(smsTxt); | |
| 319 | + fnByteString(smsTxt); | |
| 320 | + | |
| 321 | + } | |
| 322 | + | |
| 323 | + } | |
| 324 | + | |
| 325 | + //맞춤제작 내보관함 이미지 선택시 처리 | |
| 326 | + var customImgFlag = '${customImgVO.customImgFlag}'; | |
| 327 | + if(customImgFlag == 'Y'){ | |
| 328 | + | |
| 329 | + var atchFileId = '${customImgVO.atchFileId1}'; | |
| 330 | + var fileSn = '${customImgVO.fileSn}'; | |
| 331 | + var strImgPath = '${customImgVO.strImgPath}'; | |
| 332 | + | |
| 333 | + fnCustomImgSendMsg(atchFileId, fileSn, strImgPath); | |
| 334 | + | |
| 335 | + } | |
| 336 | + | |
| 337 | + //문자 재전송 처리 | |
| 338 | + var msgResendFlag = '${reSendMsgVO.msgResendFlag}'; | |
| 339 | + var msgSeqList = []; | |
| 340 | + msgSeqList = '${reSendMsgVO.msgSeqList}'; | |
| 341 | + if(msgSeqList.length > 0){ | |
| 342 | + | |
| 343 | + fnMsgResend(msgResendFlag, msgSeqList); | |
| 344 | + | |
| 345 | + } | |
| 346 | + | |
| 347 | + //주소록에서 주소를 전송한 경우 처리 | |
| 348 | + var moveAddrFlag = '${addrVO.moveAddrFlag}'; | |
| 349 | + var addrIdList = []; | |
| 350 | + addrIdList = '${addrVO.addrIdList}'; | |
| 351 | + if(addrIdList.length > 0) { | |
| 352 | + fnAddrSet(moveAddrFlag, addrIdList); | |
| 353 | + } | |
| 354 | + | |
| 355 | + // 문자 재전송 New | |
| 356 | + if (msgResendAllFlag == "Y") { | |
| 357 | + if (msgResendAllReplaceYn != "Y") { | |
| 358 | + // 문자 그룹정보 => 재전송용 | |
| 359 | + getMjMsgGroupInfoByResend(); | |
| 360 | + } | |
| 361 | + | |
| 362 | + // 문자 상세정보 => 재전송용 | |
| 363 | + getMjMsgListByResend(); | |
| 364 | + } | |
| 365 | + | |
| 366 | + }); | |
| 367 | + | |
| 368 | + }).slideDown(); | |
| 369 | +} | |
| 370 | + | |
| 371 | +function fnCustomImgSendMsg(atchFileId, fileSn, filePath){ | |
| 372 | + | |
| 373 | + | |
| 374 | + var imgId = ""; | |
| 375 | + var imgSrc = ""; | |
| 376 | + | |
| 377 | + /* imgSrc = filePath.replace("/usr/local/tomcat_mjon/webapps/mjon",""); */ | |
| 378 | + /* imgSrc = filePath; */ | |
| 379 | + imgId = atchFileId; | |
| 380 | + | |
| 381 | + imgSrc = '/cmm/fms/getImage2.do?atchFileId=' + atchFileId + '&fileSn=' + fileSn; | |
| 382 | + | |
| 383 | + myMsgImageControl(imgSrc, "edit_n", "Template", imgId); | |
| 384 | + | |
| 385 | +} | |
| 386 | + | |
| 387 | +function fnMsgResend(msgResendFlag, msgSeqList){ | |
| 388 | + | |
| 389 | + if(msgResendFlag == 'Y'){ // 문자재전송에서 넘어오는 경우 | |
| 390 | + | |
| 391 | + var form = document.msgResendForm; | |
| 392 | + form.msgSeqList.value = msgSeqList; | |
| 393 | + | |
| 394 | + var data = new FormData(form); | |
| 395 | + url = "/web/mjon/msgdata/selectReSendMsgDataListAjax.do"; | |
| 396 | + | |
| 397 | + $.ajax({ | |
| 398 | + type: "POST", | |
| 399 | + url: url, | |
| 400 | + data: data, | |
| 401 | + dataType:'json', | |
| 402 | + async: false, | |
| 403 | + processData: false, | |
| 404 | + contentType: false, | |
| 405 | + cache: false, | |
| 406 | + success: function (returnData, status) { | |
| 407 | + if(status == 'success'){ // status 확인 필요한가. 석세스 안뜨면 에러 가지 않나 | |
| 408 | + if("fail"==returnData.result){ | |
| 409 | + | |
| 410 | + alert(returnData.message); | |
| 411 | + return false; | |
| 412 | + | |
| 413 | + }else if("loginFail"==returnData.result){ | |
| 414 | + | |
| 415 | + alert(returnData.message); | |
| 416 | + return false; | |
| 417 | + | |
| 418 | + }else if(returnData.resultListCnt == '0'){ | |
| 419 | + | |
| 420 | + alert("재전송 문자내용이 없습니다."); | |
| 421 | + return false; | |
| 422 | + | |
| 423 | + }else{ | |
| 424 | + | |
| 425 | + var data = returnData; | |
| 426 | + var listCnt = returnData.resultListCnt; | |
| 427 | + var photoInfo = returnData.resultMsgPhotoInfo; | |
| 428 | + //수신자 처리 변수 | |
| 429 | + var callToList = []; //수신자 처리 리스트 | |
| 430 | + var tableData = []; //수신자 tabulator 처리 변수 | |
| 431 | + | |
| 432 | + //var subject = data.resultList[0].subject; //제목 | |
| 433 | + //var smsTxt = data.resultList[0].smsTxt; //문자내용 | |
| 434 | + //var fileCnt = data.resultList[0].fileCnt; //그림문자 이미지 갯수 | |
| 435 | + //var filePath1 = data.resultList[0].fileType1; //이미지1 파일 경로 | |
| 436 | + //var filePath2 = data.resultList[0].fileType2; //이미지2 파일 경로 | |
| 437 | + //var filePath3 = data.resultList[0].fileType3; //이미지3 파일 경로 | |
| 438 | + //var atchFileId1 = photoInfo.atchFileId1; //이미지1 파일 번호 | |
| 439 | + //var atchFileId2 = photoInfo.atchFileId2; //이미지2 파일 번호 | |
| 440 | + //var atchFileId3 = photoInfo.atchFileId3; //이미지3 파일 번호 | |
| 441 | + | |
| 442 | + | |
| 443 | + for(var i = 0; i < listCnt; i++){ // 수신자 리스트 Tabulator에 입력해 주기 | |
| 444 | + | |
| 445 | + callToList[i] = data.resultList[i].callTo; | |
| 446 | + tableData.push({phone: removeDash(callToList[i])}); | |
| 447 | + | |
| 448 | + } | |
| 449 | + | |
| 450 | + if(tableData.length > 0){ | |
| 451 | + | |
| 452 | + tableL.addData(dupliPhoneData(tableData)); // 받는사람 목록에 주소 정보 입력하기 | |
| 453 | + | |
| 454 | + //totRows = tableL.getRows().length; | |
| 455 | + //updateTotCnt(totRows); //전체 데이터 갯수 구하기 | |
| 456 | + | |
| 457 | + //결제 금액 구하기 | |
| 458 | + //totalPriceSum(totRows); | |
| 459 | + | |
| 460 | + } | |
| 461 | + | |
| 462 | + return false; | |
| 463 | + | |
| 464 | + } | |
| 465 | + | |
| 466 | + } else if(status== 'fail'){ | |
| 467 | + alert(returnData.message); | |
| 468 | + } | |
| 469 | + }, | |
| 470 | + error: function (e) { alert("문자 재전송 번호 등록에 실패하였습니다."); console.log("ERROR : ", e); } | |
| 471 | + }); | |
| 472 | + | |
| 473 | + } | |
| 474 | + | |
| 475 | +} | |
| 476 | + | |
| 477 | + | |
| 478 | +function fnAddrSet(moveAddrFlag, addrIdList){ | |
| 479 | + | |
| 480 | + if(moveAddrFlag == 'Y'){ // 주소록에서 넘어오는 경우 | |
| 481 | + | |
| 482 | + var form = document.moveAddrForm; | |
| 483 | + form.addrIdList.value = addrIdList; | |
| 484 | + | |
| 485 | + var data = new FormData(form); | |
| 486 | + url = "/web/mjon/addr/selectAddrDataListAjax.do"; | |
| 487 | + | |
| 488 | + $.ajax({ | |
| 489 | + type: "POST", | |
| 490 | + url: url, | |
| 491 | + data: data, | |
| 492 | + dataType:'json', | |
| 493 | + async: true, | |
| 494 | + processData: false, | |
| 495 | + contentType: false, | |
| 496 | + cache: false, | |
| 497 | + success: function (returnData, status) { | |
| 498 | + if(status == 'success'){ // status 확인 필요한가. 석세스 안뜨면 에러 가지 않나 | |
| 499 | + if("fail"==returnData.result){ | |
| 500 | + | |
| 501 | + alert(returnData.message); | |
| 502 | + return false; | |
| 503 | + | |
| 504 | + }else if("loginFail"==returnData.result){ | |
| 505 | + | |
| 506 | + alert(returnData.message); | |
| 507 | + return false; | |
| 508 | + | |
| 509 | + }else if(returnData.resultListCnt == '0'){ | |
| 510 | + | |
| 511 | + alert("전달된 주소록이 없습니다."); | |
| 512 | + return false; | |
| 513 | + | |
| 514 | + }else{ | |
| 515 | + | |
| 516 | + var listCnt = returnData.resultListCnt; | |
| 517 | + | |
| 518 | + //수신자 처리 변수 | |
| 519 | + var tableData = []; //수신자 tabulator 처리 변수 | |
| 520 | + | |
| 521 | + for(var i = 0; i < listCnt; i++){ // 수신자 리스트 Tabulator에 입력해 주기 | |
| 522 | + | |
| 523 | + tableData.push({ | |
| 524 | + name: returnData.resultList[i].addrNm | |
| 525 | + ,phone: removeDash(returnData.resultList[i].addrPhoneNo) | |
| 526 | + ,rep1: returnData.resultList[i].addrInfo1 | |
| 527 | + ,rep2: returnData.resultList[i].addrInfo2 | |
| 528 | + ,rep3: returnData.resultList[i].addrInfo3 | |
| 529 | + ,rep4: returnData.resultList[i].addrInfo4 | |
| 530 | + }); | |
| 531 | + | |
| 532 | + } | |
| 533 | + | |
| 534 | + tableL.addData(dupliPhoneData(tableData)); // 받는사람 목록에 주소 정보 입력하기 | |
| 535 | + | |
| 536 | + totRows = tableL.getRows().length; | |
| 537 | + updateTotCnt(totRows); //전체 데이터 갯수 구하기 | |
| 538 | + | |
| 539 | + //결제 금액 구하기 | |
| 540 | + totalPriceSum(totRows); | |
| 541 | + | |
| 542 | + return false; | |
| 543 | + | |
| 544 | + } | |
| 545 | + | |
| 546 | + } else if(status== 'fail'){ | |
| 547 | + alert(returnData.message); | |
| 548 | + } | |
| 549 | + }, | |
| 550 | + error: function (e) { | |
| 551 | + alert("주소록 가져오기에 실패하였습니다."); | |
| 552 | + console.log("ERROR : ", e); | |
| 553 | + }, | |
| 554 | + beforeSend : function(xmlHttpRequest) { | |
| 555 | + //로딩창 show | |
| 556 | + $('.loading_layer').addClass('active'); | |
| 557 | + }, | |
| 558 | + complete : function(xhr, textStatus) { | |
| 559 | + //로딩창 hide | |
| 560 | + $('.loading_layer').removeClass('active'); | |
| 561 | + } | |
| 562 | + }); | |
| 563 | + | |
| 564 | + } | |
| 565 | + | |
| 566 | +} | |
| 567 | + | |
| 568 | +function fnLetterListAjax(index){ | |
| 569 | + var form = document.letterForm; | |
| 570 | + var letterType = form.letterType.value; | |
| 571 | + | |
| 572 | + if($('.tDep1_letType a').eq(0).hasClass('on')) { | |
| 573 | + form.letterType.value='S'; | |
| 574 | + } else if ($('.tDep1_letType a').eq(1).hasClass('on')) { | |
| 575 | + form.letterType.value='L'; | |
| 576 | + } | |
| 577 | + | |
| 578 | + //검색자 입력 검색 시 카테고리, 해쉬태그 전체 초기화 | |
| 579 | + if(form.searchKeyword.value != '') { | |
| 580 | + form.categoryCode.value = ""; | |
| 581 | + form.hashTag.value = ""; | |
| 582 | + | |
| 583 | + $('.tDep1_cateCode').find('.on').removeClass('on'); | |
| 584 | + $('.tDep1_cateCode').find('.cateAll').addClass('on'); | |
| 585 | + $('.tDep1_hashTag').find('.on').removeClass('on'); | |
| 586 | + $('.tDep1_hashTag').find('.hashAll').addClass('on'); | |
| 587 | + }else{ | |
| 588 | + //해시태그가 선택되어 있을 경우 해당 태그 검색어를 전달해줌 | |
| 589 | + var strTagTxt = $('.tDep1_hashTag').find('.on').text().replace("#",""); | |
| 590 | + if(strTagTxt == "전체"){ | |
| 591 | + form.hashTag.value = ""; | |
| 592 | + }else{ | |
| 593 | + form.hashTag.value = strTagTxt; | |
| 594 | + } | |
| 595 | + } | |
| 596 | + | |
| 597 | + form.pageIndex.value = index; | |
| 598 | + form.letterType.value = letterType; | |
| 599 | + var sendData = $(document.letterForm).serializeArray(); | |
| 600 | + //하위 카테고리 | |
| 601 | + $("#tDep1_depThrCateCode").load("/web/mjon/msgdata/selectCateConfThrDptListAjax.do", sendData ,function(response, status, xhr){ | |
| 602 | + if(document.letterForm.searchKeyword.value == ''){ | |
| 603 | + $('.bottom_content .area_total_count').hide(); | |
| 604 | + } | |
| 605 | + if(form.hashTag.value != ''){ | |
| 606 | + if($('#letterLoad .nodata_box').length > 0){ | |
| 607 | + $('#letterLoad .nodata_box').hide().next('.nodata_box.hashTag').show(); | |
| 608 | + } | |
| 609 | + } | |
| 610 | + | |
| 611 | + }); | |
| 612 | + //문자샘플 | |
| 613 | + $("#letterLoad").load("/web/mjon/msgdata/selectLetterDataListAjax.do", sendData ,function(response, status, xhr){ | |
| 614 | + if(document.letterForm.searchKeyword.value == ''){ | |
| 615 | + $('.bottom_content .area_total_count').hide(); | |
| 616 | + } | |
| 617 | + if(form.hashTag.value != ''){ | |
| 618 | + if($('#letterLoad .nodata_box').length > 0){ | |
| 619 | + $('#letterLoad .nodata_box').hide().next('.nodata_box.hashTag').show(); | |
| 620 | + } | |
| 621 | + } | |
| 622 | + | |
| 623 | + }); | |
| 624 | + | |
| 625 | +} | |
| 626 | + | |
| 627 | +function fnPhotoListAjax(index){ | |
| 628 | + var form = document.letterForm; | |
| 629 | + //검색자 입력 검색 시 카테고리, 해쉬태그 전체 초기화 | |
| 630 | + if(form.searchKeyword.value != '') { | |
| 631 | + form.categoryCode.value = ""; | |
| 632 | + form.hashTag.value = ""; | |
| 633 | + | |
| 634 | + $('.tDep2_cateCode').find('.on').removeClass('on'); | |
| 635 | + $('.tDep2_cateCode').find('.cateAll').addClass('on'); | |
| 636 | + $('.tDep2_hashTag').find('.on').removeClass('on'); | |
| 637 | + $('.tDep2_hashTag').find('.hashAll').addClass('on'); | |
| 638 | + }else{ | |
| 639 | + //해시태그가 선택되어 있을 경우 해당 태그 검색어를 전달해줌 | |
| 640 | + var strTagTxt = $('.tDep2_hashTag').find('.on').text().replace("#",""); | |
| 641 | + if(strTagTxt == "전체"){ | |
| 642 | + form.hashTag.value = ""; | |
| 643 | + }else{ | |
| 644 | + form.hashTag.value = strTagTxt; | |
| 645 | + } | |
| 646 | + } | |
| 647 | + form.letterType.value = 'P'; | |
| 648 | + form.pageIndex.value = index; | |
| 649 | + var sendData = $(document.letterForm).serializeArray(); | |
| 650 | + //하위 카테고리 | |
| 651 | + $("#tDep2_depThrCateCode").load("/web/mjon/msgdata/selectCateConfThrDptListAjax.do", sendData ,function(response, status, xhr){ | |
| 652 | + if(document.letterForm.searchKeyword.value == ''){ | |
| 653 | + $('.bottom_content .area_total_count').hide(); | |
| 654 | + } | |
| 655 | + if(form.hashTag.value != ''){ | |
| 656 | + if($('#letterLoad .nodata_box').length > 0){ | |
| 657 | + $('#letterLoad .nodata_box').hide().next('.nodata_box.hashTag').show(); | |
| 658 | + } | |
| 659 | + } | |
| 660 | + | |
| 661 | + }); | |
| 662 | + | |
| 663 | + $("#photoLoad").load("/web/mjon/msgdata/selectPhotoDataListAjax.do", sendData ,function(response, status, xhr){ | |
| 664 | + photoLayerView(); | |
| 665 | + if(document.letterForm.searchKeyword.value == ''){ | |
| 666 | + $('.bottom_content .area_total_count').hide(); | |
| 667 | + } | |
| 668 | + if(form.hashTag.value != ''){ | |
| 669 | + if($('#photoLoad .nodata_box').length > 0){ | |
| 670 | + $('#photoLoad .nodata_box').hide().next('.nodata_box.hashTag').show(); | |
| 671 | + } | |
| 672 | + } | |
| 673 | + }); | |
| 674 | + | |
| 675 | +} | |
| 676 | + | |
| 677 | +function fnMyMsgListAjax(index){ | |
| 678 | + | |
| 679 | + if(loginVO == "" || loginVO == null){ | |
| 680 | + //alert("로그인 후 사용이 가능합니다."); | |
| 681 | + location.href="/web/user/login/login.do"; | |
| 682 | + return false; | |
| 683 | + }else{ | |
| 684 | + document.myMsgForm.pageIndex.value = index; | |
| 685 | + var sendData = $(document.myMsgForm).serializeArray(); | |
| 686 | + $("#myMsgLoad").load("/web/mjon/msgdata/selectMyMsgDataListAjax.do", sendData ,function(response, status, xhr){ | |
| 687 | + /* $(".msg_cont").mCustomScrollbar({ | |
| 688 | + axis: 'y', | |
| 689 | + scrollbarPosition: "inside", | |
| 690 | + theme: "dark", | |
| 691 | + autoHideScrollbar: false | |
| 692 | + }); */ | |
| 693 | + | |
| 694 | + }); | |
| 695 | + } | |
| 696 | +} | |
| 697 | + | |
| 698 | +function fnMyMsgSearchListAjax(index){ | |
| 699 | + | |
| 700 | + document.myMsgForm.pageIndex.value = index; | |
| 701 | + var sendData = $(document.myMsgForm).serializeArray(); | |
| 702 | + $("#myMsgLoad").load("/web/mjon/msgdata/selectMyMsgDataListAjax.do", sendData ,function(response, status, xhr){ | |
| 703 | + | |
| 704 | + /* $(".msg_cont").mCustomScrollbar({ | |
| 705 | + axis: 'y', | |
| 706 | + scrollbarPosition: "inside", | |
| 707 | + theme: "dark", | |
| 708 | + autoHideScrollbar: false | |
| 709 | + }); */ | |
| 710 | + | |
| 711 | + }); | |
| 712 | + | |
| 713 | +} | |
| 714 | + | |
| 715 | +function fnMsgExcelDataView(){ | |
| 716 | + | |
| 717 | + /* var sendData = $(document.searchForm).serializeArray() ; | |
| 718 | + | |
| 719 | + //엑셀 문자 탭 활성화 시키기 | |
| 720 | + TabType1($('.tabType1 li').eq(1), '2'); | |
| 721 | + | |
| 722 | + $(".contentExcelArea").load("/web/mjon/msgdata/selectMsgExcelDataViewAjax.do", sendData ,function(response, status, xhr){ | |
| 723 | + }); */ | |
| 724 | + | |
| 725 | + location.href="/web/mjon/msgdata/excel/selectMsgExcelDataView.do"; | |
| 726 | + | |
| 727 | +} | |
| 728 | + | |
| 729 | +function fnMsgDataView(){ | |
| 730 | + | |
| 731 | + location.href="/web/mjon/msgdata/selectMsgDataView.do"; | |
| 732 | + | |
| 733 | +} | |
| 734 | + | |
| 735 | + | |
| 736 | +function fn_saveMyMsg(){ // 내 문자 보관함 저장 | |
| 737 | + | |
| 738 | + var form = document.msgForm; | |
| 739 | + var myImgFileId = []; //신규 이미지 추가 파일 Id 저장 변수 | |
| 740 | + var adverYn = $("input[name='send_adYn']:checked").val(); //광고 체크여부 | |
| 741 | + | |
| 742 | + /* | |
| 743 | + 이미지 에디터를 사용하여 추가한 경우 이미지 업로드 처리 - 단 에디터에서 템플릿을 선택한 경우는 업로드안함 | |
| 744 | + 신규 이미지 추가를 한 경우만 이미지 파일 업로드 처리함 | |
| 745 | + */ | |
| 746 | + $('.thumb_wrap').find('.thumb_img').each(function(idx, el) { | |
| 747 | + | |
| 748 | + if($("#delLi"+idx).hasClass("Template")){ //이미지 에디터 템플릿 이미지 선택 여부 확인 | |
| 749 | + templateYn.push("Y"); | |
| 750 | + } else { | |
| 751 | + templateYn.push("N"); | |
| 752 | + } | |
| 753 | + | |
| 754 | + if($(el).hasClass("edit_y")) { //에디터를 사용했고 | |
| 755 | + //이미지 변환 | |
| 756 | + const imgBase64 = $(el).attr("src"); | |
| 757 | + const decodImg = atob(imgBase64.split(',')[1]); // base64~ 부분을 제외하고 데이터 디코딩 | |
| 758 | + | |
| 759 | + | |
| 760 | + let array = []; | |
| 761 | + for (let i = 0; i < decodImg.length; i++) { | |
| 762 | + array.push(decodImg.charCodeAt(i)); | |
| 763 | + } | |
| 764 | + | |
| 765 | + const file = new Blob([new Uint8Array(array)], {type: 'image/jpeg'}); | |
| 766 | + const fileName = 'canvas_img_' + new Date().getMilliseconds() + '.jpg'; | |
| 767 | + let formData = new FormData(); | |
| 768 | + formData.append('file', file, fileName); | |
| 769 | + | |
| 770 | + $.ajax({ | |
| 771 | + type: 'post', | |
| 772 | + url: '/web/mjon/msgdata/insertEditImageAjax.do', | |
| 773 | + cache: false, | |
| 774 | + data: formData, | |
| 775 | + dataType:'json', | |
| 776 | + processData: false, | |
| 777 | + contentType: false, | |
| 778 | + async: false, | |
| 779 | + success: function (returnData, status) { | |
| 780 | + if(status == 'success'){ | |
| 781 | + // imgFilePath 에 배열로 담아주기(이미지 순서대로) | |
| 782 | + //console.log(imgFilePath); | |
| 783 | + //imgFilePath.push(returnData.filefullPath); | |
| 784 | + myImgFileId.push(returnData.atchFileId); | |
| 785 | + | |
| 786 | + } else if(status== 'fail'){ | |
| 787 | + alert(returnData.message); | |
| 788 | + } | |
| 789 | + }, | |
| 790 | + error: function (e) { alert("이미지 업로드에 실패하였습니다."); console.log("ERROR : ", e); } | |
| 791 | + }); | |
| 792 | + | |
| 793 | + } else { | |
| 794 | + //에디터 안거친 템플릿 이미지면 바로 src 때림 | |
| 795 | + imgFilePath.push($(el).attr("src")); | |
| 796 | + } | |
| 797 | + }); | |
| 798 | + | |
| 799 | + if(myImgFileId.length > 0 && imgFileId.length > 0){ //기존 샘플 이미지와 이미지 에디터 둘다 사용한 경우 | |
| 800 | + | |
| 801 | + var tempImgId = []; | |
| 802 | + | |
| 803 | + tempImgId.push(myImgFileId); | |
| 804 | + tempImgId.push(imgFileId); | |
| 805 | + form.imgFileId.value = tempImgId; | |
| 806 | + | |
| 807 | + }else if(myImgFileId.length > 0){ //이미지 에디터에서 신규 등록한 이미지 | |
| 808 | + | |
| 809 | + form.imgFileId.value = myImgFileId; | |
| 810 | + | |
| 811 | + }else{ //샘플 이미지 선택만 했을경우(이미지 에디터 사용 안했을때) | |
| 812 | + | |
| 813 | + form.imgFileId.value = imgFileId; | |
| 814 | + } | |
| 815 | + | |
| 816 | + //광고 문자 내용 합쳐주기 | |
| 817 | + if(adverYn == 'Y'){ | |
| 818 | + | |
| 819 | + var adTxt = $('.ad_txt').text(); | |
| 820 | + var denyTxt = $('.deny_txt').text(); | |
| 821 | + var smsTxt = form.smsTxtArea.value; | |
| 822 | + | |
| 823 | + //var adverTxt = adTxt + '\n\n' + smsTxt + '\n\n' + denyTxt; | |
| 824 | + var adverTxt = smsTxt; | |
| 825 | + form.smsTxt.value = adverTxt; | |
| 826 | + | |
| 827 | + }else{ | |
| 828 | + | |
| 829 | + var smsTxt = form.smsTxtArea.value; | |
| 830 | + form.smsTxt.value = smsTxt; | |
| 831 | + | |
| 832 | + } | |
| 833 | + | |
| 834 | + //문자 종류 설정(S:단문 , L:장문 , P:그림) | |
| 835 | + var photoSts = $('.delLi').length; | |
| 836 | + var conLeng = conByteLeng(form.smsTxt.value); // 내용 문자 입력 바이트 수 계산하기 | |
| 837 | + | |
| 838 | + if(photoSts > 0){ | |
| 839 | + | |
| 840 | + form.msgType.value = 'P'; | |
| 841 | + | |
| 842 | + }else if(conLeng > 90){ | |
| 843 | + | |
| 844 | + form.msgType.value = 'L'; | |
| 845 | + | |
| 846 | + }else{ | |
| 847 | + | |
| 848 | + form.msgType.value = 'S'; | |
| 849 | + | |
| 850 | + } | |
| 851 | + | |
| 852 | + if(photoSts == '0' && conLeng == '0'){ | |
| 853 | + | |
| 854 | + alert("문자내용을 입력해 주세요."); | |
| 855 | + return false; | |
| 856 | + | |
| 857 | + } | |
| 858 | + | |
| 859 | + var data = new FormData(form); | |
| 860 | + url = "/web/mjon/msgdata/insertMyMsgDataAjax.do"; | |
| 861 | + | |
| 862 | + $.ajax({ | |
| 863 | + type: "POST", | |
| 864 | + url: url, | |
| 865 | + data: data, | |
| 866 | + dataType:'json', | |
| 867 | + async: false, | |
| 868 | + processData: false, | |
| 869 | + contentType: false, | |
| 870 | + cache: false, | |
| 871 | + success: function (returnData, status) { | |
| 872 | + if(status == 'success'){ // status 확인 필요한가. 석세스 안뜨면 에러 가지 않나 | |
| 873 | + if("fail"==returnData.result){ | |
| 874 | + | |
| 875 | + alert(returnData.message); | |
| 876 | + return false; | |
| 877 | + | |
| 878 | + }else{ | |
| 879 | + | |
| 880 | + alert("내 문자함에 저장되었습니다."); | |
| 881 | + | |
| 882 | + //내 문자함 탭 활성화 시키기 | |
| 883 | + TabType2($('.tabType2 li').eq(3), '4'); | |
| 884 | + var offset = $('.tabType2').offset(); | |
| 885 | + $('html, body').animate({scrollTop : offset.top-140}, 400); | |
| 886 | + | |
| 887 | + //최 하단 내문자함 탭 리스트 내용 불러오기 | |
| 888 | + var sendData = $(document.myMsgForm).serializeArray(); | |
| 889 | + $("#myMsgLoad").load("/web/mjon/msgdata/selectMyMsgDataListAjax.do", sendData ,function(response, status, xhr){ | |
| 890 | + }); | |
| 891 | + | |
| 892 | + } | |
| 893 | + | |
| 894 | + } else if(status== 'fail'){ | |
| 895 | + alert(returnData.message); | |
| 896 | + } | |
| 897 | + }, | |
| 898 | + error: function (e) { alert("문자 저장에 실패하였습니다."); console.log("ERROR : ", e); } | |
| 899 | + }); | |
| 900 | + | |
| 901 | +} | |
| 902 | + | |
| 903 | +//내 문자함으로 탭이동 | |
| 904 | +function fnGoMyMsg(){ | |
| 905 | + | |
| 906 | + //내 문자함 탭 활성화 시키기 | |
| 907 | + TabType2($('.tabType2 li').eq(3), '4'); | |
| 908 | + | |
| 909 | + var offset = $('.tabType2').offset(); | |
| 910 | + $('html, body').animate({scrollTop : offset.top-140}, 400); | |
| 911 | + | |
| 912 | +} | |
| 913 | + | |
| 914 | + | |
| 915 | +// MJ_MSG_GROUP_DATA 누락데이터 체크 | |
| 916 | +function getMsgGroupDataErrorCheck() { | |
| 917 | + var isError = false; | |
| 918 | + | |
| 919 | + $.ajax({ | |
| 920 | + type: "POST", | |
| 921 | + url: "/web/mjon/msgdata/selectMsgGroupNotExistInfoAjax.do", | |
| 922 | + data: {}, | |
| 923 | + dataType:'json', | |
| 924 | + async: false, | |
| 925 | + success: function (data) { | |
| 926 | + if (data.isSuccess) { | |
| 927 | + if (data.isError == true) { | |
| 928 | + isError = true; | |
| 929 | + } | |
| 930 | + } | |
| 931 | + }, | |
| 932 | + error: function (e) { | |
| 933 | + | |
| 934 | + } | |
| 935 | + }); | |
| 936 | + | |
| 937 | + return isError; | |
| 938 | +} | |
| 939 | + | |
| 940 | +function checkConf() { | |
| 941 | + var confCheck = false; | |
| 942 | + | |
| 943 | + $.ajax({ | |
| 944 | + type: "POST", | |
| 945 | + url: "/web/mjon/conf/selectMjonMsgUseConfAjax.do", | |
| 946 | + data: {}, | |
| 947 | + dataType:'json', | |
| 948 | + async: false, | |
| 949 | + success: function (returnData, status) { | |
| 950 | + if(returnData.result == "fail") { | |
| 951 | + console.log(returnData.message); | |
| 952 | + }else if(returnData.result == "success"){ | |
| 953 | + confCheck = true; | |
| 954 | + } | |
| 955 | + } | |
| 956 | + ,error: function (e) {console.log("ERROR : ", e); } | |
| 957 | + }); | |
| 958 | + | |
| 959 | + return confCheck; | |
| 960 | +} | |
| 961 | +function blineSendCheck(blineCode) { | |
| 962 | + | |
| 963 | + var confCheck = false; | |
| 964 | + | |
| 965 | + $.ajax({ | |
| 966 | + type: "POST", | |
| 967 | + url: "/web/mjon/conf/selectBlineSendCheckAjax.do", | |
| 968 | + data: {"agentCode":blineCode}, | |
| 969 | + dataType:'json', | |
| 970 | + async: false, | |
| 971 | + success: function (returnData, status) { | |
| 972 | + if(returnData.result == "fail") { | |
| 973 | + console.log(returnData.message); | |
| 974 | + }else if(returnData.result == "success"){ | |
| 975 | + confCheck = true; | |
| 976 | + } | |
| 977 | + } | |
| 978 | + ,error: function (e) {console.log("ERROR : ", e); } | |
| 979 | + }); | |
| 980 | + | |
| 981 | + return confCheck; | |
| 982 | +} | |
| 983 | + | |
| 984 | + | |
| 985 | + | |
| 986 | + | |
| 987 | +//문자발송 처리 함수 | |
| 988 | +function fn_sendMsgData(){ | |
| 989 | + | |
| 990 | + // 타블레이터 호출 | |
| 991 | + var $selectedData = tableL.getData(); // 데이터 가져오기 | |
| 992 | + | |
| 993 | + if(!checkConf()){ //문자온 conf-check | |
| 994 | + alert("현재 문자 발송하기 기능 점검 중입니다.\n\n1분 후 다시 시도해주세요."); | |
| 995 | + return false; | |
| 996 | + } | |
| 997 | + | |
| 998 | + var form = document.msgForm; | |
| 999 | + var totPriceOnly = stringReplaceAll(form.totPrice.value, ",", ""); | |
| 1000 | + var userMoneyOnly = stringReplaceAll(form.myPrice.value, ",", ""); | |
| 1001 | + | |
| 1002 | + // test 주석 | |
| 1003 | + if(parseFloat(userMoneyOnly) < parseFloat(totPriceOnly)){ | |
| 1004 | + alert("문자 발송에 필요한 회원님의 보유 잔액이 부족 합니다."); | |
| 1005 | + return false; | |
| 1006 | + } | |
| 1007 | + | |
| 1008 | + // 폼 유효성 검사 | |
| 1009 | + if (!validateForm(form)) return false; | |
| 1010 | + | |
| 1011 | + var spamStatus = false; | |
| 1012 | + var exceptSpamYn = $("#exceptSpamYn").val(); //금지어 필터링 예외 여부 - N 일 경우만 스팸 검사를 진행 | |
| 1013 | + | |
| 1014 | + | |
| 1015 | + var blineCodeYn = $("#blineCode").val(); | |
| 1016 | + if(blineCodeYn != 'N'){ | |
| 1017 | + if(!blineSendCheck(blineCodeYn)){ //문자온 conf-check | |
| 1018 | + alert("현재 문자 발송하기 기능 점검 중입니다.\n\n잠시 후 다시 시도해주세요."); | |
| 1019 | + return false; | |
| 1020 | + } | |
| 1021 | + } | |
| 1022 | + | |
| 1023 | + if($selectedData.length > 300000){ | |
| 1024 | + alert("30만건까지 발송이 가능합니다.\n받는사람 목록을 확인해주세요."); | |
| 1025 | + return false; | |
| 1026 | + } | |
| 1027 | + | |
| 1028 | + | |
| 1029 | + | |
| 1030 | + if(!confirm("문자를 전송하시겠습니까?")){ | |
| 1031 | + return false; | |
| 1032 | + } | |
| 1033 | + | |
| 1034 | + //총 결제금액 천단위 콤마 삭제 후 전송 | |
| 1035 | + var totPrice = form.totPrice.value; | |
| 1036 | + form.totPrice.value = totPrice.replace(",",""); | |
| 1037 | + | |
| 1038 | + | |
| 1039 | + //이벤트 진행중 회원의 경우 이벤트 잔여금액 비교 처리 필요. | |
| 1040 | + //이벤트 캐시가 부족한 경우 이벤트 캐시로 발송 가능한 만큼만 이벤트 금액으로 발송 처리해줌. | |
| 1041 | + //이 후 나머지 발송 건수는 이벤트 캐시가 아닌 일반 단가로 발송 처리를 진행 함. | |
| 1042 | + var eventStatus = form.eventStatus.value; | |
| 1043 | + | |
| 1044 | + if(eventStatus == 'Y'){ //이벤트 진행 대상자이면 문자종류에 이벤트로 구분 | |
| 1045 | + | |
| 1046 | + form.eventYn.value = "Y"; //이벤트문자 종류 설정 | |
| 1047 | + | |
| 1048 | + } | |
| 1049 | + | |
| 1050 | + var eventRemainCash = parseFloat(form.eventRemainCash.value); | |
| 1051 | + console.log('eventStatus : ', eventStatus); | |
| 1052 | + | |
| 1053 | + if(eventStatus == 'Y' | |
| 1054 | + && parseFloat(eventRemainCash) < parseFloat(totPriceOnly)) | |
| 1055 | + { | |
| 1056 | + console.log('eventRemainCash : ', eventRemainCash); | |
| 1057 | + if(!confirm("고객님의 이벤트 캐시 잔액(" + eventRemainCash + "원) 부족으로 요청하신 문자("+numberWithCommas($selectedData.length)+"건)를 모두 발송할 수 없습니다. 이벤트 캐시 초과 건에 대해서는 일반 단가를 적용하여 발송하시겠습니까?")){ | |
| 1058 | + return false; | |
| 1059 | + } | |
| 1060 | + } | |
| 1061 | + | |
| 1062 | + console.log(' !!! imgFilePath : ', imgFilePath); | |
| 1063 | + | |
| 1064 | + // img 처리 영역 | |
| 1065 | + imgFilePath = []; | |
| 1066 | + $('.thumb_wrap').find('.thumb_img').each(function(idx, el) { | |
| 1067 | + if($("#delLi"+idx).hasClass("Template")){ | |
| 1068 | + templateYn.push("Y"); | |
| 1069 | + } else { | |
| 1070 | + templateYn.push("N"); | |
| 1071 | + } | |
| 1072 | + | |
| 1073 | + if($(el).hasClass("edit_y")) { | |
| 1074 | + //이미지 변환 | |
| 1075 | + const imgBase64 = $(el).attr("src"); | |
| 1076 | + const decodImg = atob(imgBase64.split(',')[1]); // base64~ 부분을 제외하고 데이터 디코딩 | |
| 1077 | + | |
| 1078 | + | |
| 1079 | + let array = []; | |
| 1080 | + for (let i = 0; i < decodImg.length; i++) { | |
| 1081 | + array.push(decodImg.charCodeAt(i)); | |
| 1082 | + } | |
| 1083 | + | |
| 1084 | + const file = new Blob([new Uint8Array(array)], {type: 'image/jpeg'}); | |
| 1085 | + const fileName = 'canvas_img_' + new Date().getMilliseconds() + '.jpg'; | |
| 1086 | + let formData = new FormData(); | |
| 1087 | + formData.append('file', file, fileName); | |
| 1088 | + | |
| 1089 | + $.ajax({ | |
| 1090 | + type: 'post', | |
| 1091 | + url: '/web/mjon/msgdata/insertEditImageAjax.do', | |
| 1092 | + cache: false, | |
| 1093 | + data: formData, | |
| 1094 | + dataType:'json', | |
| 1095 | + processData: false, | |
| 1096 | + contentType: false, | |
| 1097 | + async: false, | |
| 1098 | + success: function (returnData, status) { | |
| 1099 | + if(status == 'success'){ | |
| 1100 | + console.log('returnData : ',returnData) | |
| 1101 | + // imgFilePath 에 배열로 담아주기(이미지 순서대로) | |
| 1102 | + //console.log(imgFilePath); | |
| 1103 | + imgFilePath.push(returnData.filefullPath); | |
| 1104 | + imgFileId.push(returnData.atchFileId); | |
| 1105 | + | |
| 1106 | + } else if(status== 'fail'){ | |
| 1107 | + alert(returnData.message); | |
| 1108 | + } | |
| 1109 | + }, | |
| 1110 | + error: function (e) { alert("이미지 업로드에 실패하였습니다."); console.log("ERROR : ", e); } | |
| 1111 | + }); | |
| 1112 | + | |
| 1113 | + } else { | |
| 1114 | + if(imgFilePath.length != imgFileId.length){ | |
| 1115 | + //에디터 안거친 템플릿 이미지면 바로 src 때림 | |
| 1116 | + imgFilePath.push($(el).attr("src")); | |
| 1117 | + } | |
| 1118 | + } | |
| 1119 | + }); | |
| 1120 | + | |
| 1121 | + | |
| 1122 | + //form.reserveYn.value = reserYn; // 즉시 / 예약 문자 선택 여부 | |
| 1123 | + form.templateYnAdvc.value = templateYn; | |
| 1124 | + console.log('imgFilePath : ', imgFilePath); | |
| 1125 | + console.log('imgFilePath : ', JSON.stringify(imgFilePath)); | |
| 1126 | + console.log('imgFileId : ', imgFileId); | |
| 1127 | + console.log('imgFileId : ', JSON.stringify(imgFileId)); | |
| 1128 | + form.imgFilePathAdvc.value = imgFilePath; | |
| 1129 | + form.imgFileIdAdvc.value = imgFileId; | |
| 1130 | +// form.imgFilePath.value = JSON.stringify(imgFilePath).replace(/\\/g, ''); | |
| 1131 | +// form.imgFileId.value = JSON.stringify(imgFileId).replace(/\\/g, ''); | |
| 1132 | + form.callFrom.value = removeDash($('#callFromList').val()); // 발신번호 대쉬(-) 문자 없애주기 | |
| 1133 | + | |
| 1134 | + //광고 종류 설정 | |
| 1135 | + var adverYn = $("input[name='send_adYn']:checked").val(); | |
| 1136 | + if(adverYn == 'Y'){ | |
| 1137 | + form.msgKind.value = "A"; //광고문자 종류 설정 | |
| 1138 | + }else{ | |
| 1139 | + form.msgKind.value = "N"; //일반문자 종류 설정 | |
| 1140 | + } | |
| 1141 | + | |
| 1142 | + // 예약 확인 | |
| 1143 | + var reserYn = $("input[name=reserYn]:checked").val(); // 예약 발송 여부 확인 | |
| 1144 | + form.reserveYn.value = reserYn; // 즉시 / 예약 문자 선택 여부 | |
| 1145 | + | |
| 1146 | + if(reserYn == 'Y'){ | |
| 1147 | + | |
| 1148 | + var date = $(".resDate").val();//form.msgResDate.value; | |
| 1149 | + var hour = form.msgResHour.value; | |
| 1150 | + var min = form.msgResMin.value; | |
| 1151 | + | |
| 1152 | + if(date == ""){ | |
| 1153 | + | |
| 1154 | + alert("예약전송 날짜를 선택해 주세요."); | |
| 1155 | + return false; | |
| 1156 | + | |
| 1157 | + }else{ | |
| 1158 | + | |
| 1159 | + var now = new Date(); | |
| 1160 | + var reqDate = date + " " + hour + ":" + min + ":00"; | |
| 1161 | + var gapDate = getGapDayTime(date, hour, min); | |
| 1162 | + | |
| 1163 | + if(gapDate < 0){ // 음수이면 이전날짜, 크면 이후 날짜. | |
| 1164 | + alert("예약 날짜는 현재 시간 이후의 날짜 및 시간을 선택해 주세요."); | |
| 1165 | + return false; | |
| 1166 | + }else{ | |
| 1167 | + form.reqDate.value = reqDate; //예약일자 파라미터 저장 | |
| 1168 | + } | |
| 1169 | + } | |
| 1170 | + | |
| 1171 | + }else{ | |
| 1172 | + | |
| 1173 | + form.reqDate.value = ""; | |
| 1174 | + | |
| 1175 | + } | |
| 1176 | + | |
| 1177 | + | |
| 1178 | + | |
| 1179 | + //발송 Ajax 호출해주기 | |
| 1180 | + sendMsgAjax_advc(); | |
| 1181 | +} | |
| 1182 | + | |
| 1183 | + | |
| 1184 | +// 선택된 데이터의 길이에 따라 예상 시간 계산 함수 | |
| 1185 | +function calculateEstimatedTime(selectedCount) { | |
| 1186 | + //기준값 | |
| 1187 | + // const processTimePerBatch = 130; // 130초 | |
| 1188 | + | |
| 1189 | + | |
| 1190 | + // 30만건 기준 10분으로 기준을 잡아서 | |
| 1191 | + // 시간계산함 | |
| 1192 | + const processTimePerBatch = 600; | |
| 1193 | + const batchSize = 300000; | |
| 1194 | + | |
| 1195 | + // 1건당 처리 시간 | |
| 1196 | + const timePerRecord = processTimePerBatch / batchSize; | |
| 1197 | + | |
| 1198 | + // 예상 시간 계산 | |
| 1199 | + const estimatedTimeInSeconds = selectedCount * timePerRecord; | |
| 1200 | + | |
| 1201 | + return estimatedTimeInSeconds.toFixed(2); | |
| 1202 | +} | |
| 1203 | + | |
| 1204 | + | |
| 1205 | + | |
| 1206 | + | |
| 1207 | +function sendMsgAjax_advc(){ | |
| 1208 | + // 타블레이터 호출 | |
| 1209 | + var $selectedData = tableL.getData(); // 데이터 가져오기 | |
| 1210 | + | |
| 1211 | + // 폼 데이터를 배열로 직렬화 | |
| 1212 | + var form = $('#msgForm'); | |
| 1213 | + var formDataArray = form.serializeArray(); | |
| 1214 | + | |
| 1215 | + // 배열을 객체로 변환 | |
| 1216 | + var formData = {}; | |
| 1217 | + $.each(formDataArray, function(index, field) { | |
| 1218 | + formData[field.name] = field.value; | |
| 1219 | + }); | |
| 1220 | + | |
| 1221 | + // 빈 값 제거 | |
| 1222 | + removeEmptyValues(formData); | |
| 1223 | + | |
| 1224 | + // 선택된 데이터 추가 | |
| 1225 | + formData["mjonMsgSendVOList"] = $selectedData; | |
| 1226 | + | |
| 1227 | + // JSON 데이터 확인 | |
| 1228 | +// console.log("최종 formData:", JSON.stringify(formData)); | |
| 1229 | + | |
| 1230 | + | |
| 1231 | + var url = "/web/mjon/msgdata/sendMsgDataAjax_advc.do"; | |
| 1232 | + // 시작 시간 | |
| 1233 | + const startTime = new Date(); | |
| 1234 | + | |
| 1235 | + | |
| 1236 | + // 프로그래스파 시간을 위한 계산 | |
| 1237 | + var estimtedTime = calculateEstimatedTime($selectedData.length); | |
| 1238 | + console.log('estimtedTime : ', estimtedTime); | |
| 1239 | + | |
| 1240 | + | |
| 1241 | + $.ajax({ | |
| 1242 | + type: "POST", | |
| 1243 | + url: url, | |
| 1244 | + data: JSON.stringify(formData), | |
| 1245 | + contentType: 'application/json', | |
| 1246 | + dataType: 'json', | |
| 1247 | + success: function (data) { | |
| 1248 | + | |
| 1249 | + // 요청 종료 시간 및 경과 시간 계산 | |
| 1250 | + const endTime = new Date(); | |
| 1251 | + const elapsed = (endTime - startTime) / 1000; // 밀리초 -> 초로 변환 | |
| 1252 | + console.log('AJAX 요청 성공, 경과 시간 : ', elapsed); | |
| 1253 | + if (elapsed >= 60) { | |
| 1254 | + const minutes = Math.floor(elapsed / 60); // 분 계산 | |
| 1255 | + const seconds = Math.floor(elapsed % 60); // 초 계산 | |
| 1256 | + console.log('AJAX 요청 성공, 경과 시간 : ' + minutes + '분 ' + seconds + '초'); | |
| 1257 | + } else { | |
| 1258 | + console.log('AJAX 요청 성공, 경과 시간 : ' + elapsed + '초'); | |
| 1259 | + } | |
| 1260 | + | |
| 1261 | + | |
| 1262 | + | |
| 1263 | + console.log('data : ', data); | |
| 1264 | + /* message:"특정문구 일괄변환 치환문자 데이터가 없습니다." | |
| 1265 | + status:"BAD_REQUEST" */ | |
| 1266 | + | |
| 1267 | + var status = data.status; | |
| 1268 | + if("OK" == status){ | |
| 1269 | + | |
| 1270 | + var smsCnt = Number(data.object.resultSts); | |
| 1271 | + var blockCnt = Number(data.object.resultBlockSts); | |
| 1272 | + | |
| 1273 | + if((smsCnt + blockCnt) == 0){ | |
| 1274 | + | |
| 1275 | + $('.pop_msg_spam').css({'display':'block','opacity':'1','left':'50%','top':'50%','transform':'translate(-50%,-50%)'}); | |
| 1276 | + $('.pop_msg_spam .msg_text').html("문자 발송(예약)에 실패하였습니다.<br/> 다시 시도해주세요. <br/>* 정상적으로 발송 시도하였으나 실패하신 경우 혹시 문자내용에 사용불가 이모지 <br/>또는 복사-붙여넣기로 인한 보이지 않는 특수문자가 포함되었는지 확인 후 다시 시도해주세요."); | |
| 1277 | + $('.mask').addClass('on'); | |
| 1278 | + | |
| 1279 | + }else{ | |
| 1280 | + | |
| 1281 | + $('.pop_msg_success').css({'display':'block','opacity':'1','left':'50%','top':'50%','transform':'translate(-50%,-50%)'}); | |
| 1282 | + //예약발송 건의 경우 결과 팝업 문구 변경 | |
| 1283 | + | |
| 1284 | + var reserYn = $("input[name=reserYn]:checked").val(); | |
| 1285 | + var resText = (reserYn === 'Y') ? '예약' : '발송'; | |
| 1286 | + /* | |
| 1287 | + if(reserYn == 'Y') | |
| 1288 | + { | |
| 1289 | + resText = "예약"; | |
| 1290 | + } | |
| 1291 | + else | |
| 1292 | + { | |
| 1293 | + resText = "발송"; | |
| 1294 | + } | |
| 1295 | + */ | |
| 1296 | + $('.pop_msg_success .msg_text').html(resText+" 성공 : <strong>"+ smsCnt + "</strong>건,수신거부 : <span>" + blockCnt + "</span>건의<br>문자가 "+resText+" 되었습니다."); | |
| 1297 | + | |
| 1298 | + $('.mask').addClass('on'); | |
| 1299 | + | |
| 1300 | + } | |
| 1301 | + | |
| 1302 | + | |
| 1303 | + }else if("BAD_REQUEST" == status){ | |
| 1304 | + | |
| 1305 | + alert(data.message); | |
| 1306 | + return false; | |
| 1307 | + | |
| 1308 | + }else if("UNAUTHORIZED" == status){ | |
| 1309 | + | |
| 1310 | + alert(data.message); | |
| 1311 | + //문자발송 URL Move | |
| 1312 | + goMsgUrlMove(); | |
| 1313 | + return false; | |
| 1314 | + | |
| 1315 | + }else if("NO_CONTENT" == status){ | |
| 1316 | + | |
| 1317 | + $('.pop_msg_fails').css({'display':'block','opacity':'1','left':'50%','top':'50%','transform':'translate(-50%,-50%)'}); | |
| 1318 | + $('.pop_msg_fails .msg_text').html(returnData.message); | |
| 1319 | + $('.mask').addClass('on'); | |
| 1320 | + | |
| 1321 | + } | |
| 1322 | + | |
| 1323 | + }, | |
| 1324 | + beforeSend : function(xmlHttpRequest) { | |
| 1325 | + // 프로그래스 바 실행 | |
| 1326 | + // 프로그래스 바 실행 | |
| 1327 | + progressStart(estimtedTime); | |
| 1328 | + //로딩창 show | |
| 1329 | +// $('.loading_layer').addClass('active'); | |
| 1330 | + }, | |
| 1331 | + complete : function(xhr, textStatus) { | |
| 1332 | + | |
| 1333 | + // 프로그래스 바 종료 | |
| 1334 | + // 프로그래스 바 종료 | |
| 1335 | + progressComplete();; | |
| 1336 | +// 로딩창 hide | |
| 1337 | +// $('.loading_layer').removeClass('active'); | |
| 1338 | + }, | |
| 1339 | + error: function (e) { alert("문자 발송에 실패하였습니다."); console.log("ERROR : ", e); } | |
| 1340 | + }); | |
| 1341 | + | |
| 1342 | +} | |
| 1343 | + | |
| 1344 | +//폼 유효성 검사 함수 | |
| 1345 | +function validateForm(form) { | |
| 1346 | + | |
| 1347 | + // 타블레이터 호출 | |
| 1348 | + var $selectedData = tableL.getData(); // 데이터 가져오기 | |
| 1349 | + | |
| 1350 | + if($selectedData.length < 1){ | |
| 1351 | + alert("받는사람 내역을 입력해주세요."); | |
| 1352 | + return false; | |
| 1353 | + } | |
| 1354 | + | |
| 1355 | + | |
| 1356 | + if(form.callFromList.value == ""){ | |
| 1357 | + | |
| 1358 | + alert("발신번호를 입력해 주세요."); | |
| 1359 | + return false; | |
| 1360 | + | |
| 1361 | + } | |
| 1362 | + | |
| 1363 | + if (form.title_status.value === 'N') { | |
| 1364 | + form.mmsSubject.value = ""; | |
| 1365 | + } else if (getSpacialStringChk(form.mmsSubject.value)) { | |
| 1366 | + alert("문자 제목에는 치환문자(엑셀 내 *이름*, *1*, *2*, *3*, *4* 등)를 사용하실 수 없습니다."); | |
| 1367 | + return false; | |
| 1368 | + } | |
| 1369 | + | |
| 1370 | + //문자제목에 이모지가 있는지 체크 | |
| 1371 | + var titleStatusYn = $("input[name='title_status']:checked").val(); | |
| 1372 | + if(titleStatusYn == 'Y') { | |
| 1373 | + if(!emojiCheck(form.mmsSubject.value)) return false; | |
| 1374 | + } | |
| 1375 | + | |
| 1376 | + // 문자내용에 이모지가 있는지 체크 | |
| 1377 | + var strCont = form.smsTxtArea.value; | |
| 1378 | + if (!emojiCheck(strCont)) return false; | |
| 1379 | + | |
| 1380 | + var rtnStr = strChinJpnCheck(strCont); | |
| 1381 | + if(rtnStr.length > 0){ | |
| 1382 | + alert("입력하신 문구 중 \" " + rtnStr + " \" 는 일부 휴대폰에서 표기되지 않을 수 있습니다."); | |
| 1383 | + } | |
| 1384 | + | |
| 1385 | + if (imgFilePath.length === 0 && !form.smsTxtArea.value) { | |
| 1386 | + alert("문자내용을 입력해 주세요."); | |
| 1387 | + return false; | |
| 1388 | + } | |
| 1389 | + return true; | |
| 1390 | +} | |
| 1391 | + | |
| 1392 | +//이벤트가 아닌 일반 개별 단가 셋팅해주기 | |
| 1393 | +function getNorEachPrice(evnMsgType){ | |
| 1394 | + | |
| 1395 | + var norEachPrice = 0; | |
| 1396 | + var evnImgCnt = $("#imgCnt").val(); | |
| 1397 | + | |
| 1398 | + //일반 단가로 변경해주기 | |
| 1399 | + if(evnMsgType == '4'){ | |
| 1400 | + | |
| 1401 | + norEachPrice = $("#norsPrice").val(); | |
| 1402 | + console.log("norEachPrice Short::: "+norEachPrice); | |
| 1403 | + | |
| 1404 | + }else if(evnMsgType == '6'){ | |
| 1405 | + | |
| 1406 | + if(evnImgCnt == 0){//장문 가격 | |
| 1407 | + | |
| 1408 | + norEachPrice = $("#normPrice").val(); | |
| 1409 | + console.log("norEachPrice Long ::: "+norEachPrice); | |
| 1410 | + | |
| 1411 | + }else if(evnImgCnt == 1){ | |
| 1412 | + | |
| 1413 | + norEachPrice = $("#norpPrice").val(); | |
| 1414 | + console.log("norEachPrice p1 ::: "+norEachPrice); | |
| 1415 | + | |
| 1416 | + }else if(evnImgCnt == 2){ | |
| 1417 | + | |
| 1418 | + norEachPrice = $("#norp2Price").val(); | |
| 1419 | + console.log("norEachPrice p2 ::: "+norEachPrice); | |
| 1420 | + | |
| 1421 | + }else if(evnImgCnt == 3){ | |
| 1422 | + | |
| 1423 | + norEachPrice = $("#norp3Price").val(); | |
| 1424 | + console.log("norEachPrice p3 ::: "+norEachPrice); | |
| 1425 | + | |
| 1426 | + } | |
| 1427 | + | |
| 1428 | + } | |
| 1429 | + | |
| 1430 | + return norEachPrice; | |
| 1431 | +} | |
| 1432 | + | |
| 1433 | +//빈 값이나 null 값을 제거하는 함수 | |
| 1434 | +function removeEmptyValues(obj) { | |
| 1435 | + Object.keys(obj).forEach(function(key) { | |
| 1436 | + if (obj[key] === null || obj[key] === '') { | |
| 1437 | + delete obj[key]; | |
| 1438 | + } | |
| 1439 | + }); | |
| 1440 | +} | |
| 1441 | + | |
| 1442 | + | |
| 1443 | +function sendMsgAjax(paramSmsCnt, paramBlockCnt){ | |
| 1444 | + var form = document.msgForm; | |
| 1445 | + var reserYn = $("#reserveYn").val(); | |
| 1446 | + | |
| 1447 | + var data = new FormData(form); | |
| 1448 | + url = "/web/mjon/msgdata/sendMsgDataAjax.do"; | |
| 1449 | + | |
| 1450 | + $.ajax({ | |
| 1451 | + type: "POST", | |
| 1452 | + url: url, | |
| 1453 | + data: data, | |
| 1454 | + dataType:'json', | |
| 1455 | + async: true, | |
| 1456 | + processData: false, | |
| 1457 | + contentType: false, | |
| 1458 | + cache: false, | |
| 1459 | + success: function (returnData, status) { | |
| 1460 | + if(status == 'success'){ // status 확인 필요한가. 석세스 안뜨면 에러 가지 않나 | |
| 1461 | + if("fail" == returnData.result){ | |
| 1462 | + | |
| 1463 | + alert(returnData.message); | |
| 1464 | + return false; | |
| 1465 | + | |
| 1466 | + }else if("loginFail" == returnData.result){ | |
| 1467 | + | |
| 1468 | + alert(returnData.message); | |
| 1469 | + return false; | |
| 1470 | + | |
| 1471 | + }else if("smsLengFail" == returnData.result){ | |
| 1472 | + | |
| 1473 | + alert(returnData.message); | |
| 1474 | + return false; | |
| 1475 | + | |
| 1476 | + }else if("imgSourceFail" == returnData.result){ | |
| 1477 | + | |
| 1478 | + $('.pop_msg_fails').css({'display':'block','opacity':'1','left':'50%','top':'50%','transform':'translate(-50%,-50%)'}); | |
| 1479 | + $('.pop_msg_fails .msg_text').html(returnData.message); | |
| 1480 | + $('.mask').addClass('on'); | |
| 1481 | + | |
| 1482 | + }else if("spamKeyWordFail" == returnData.result){//스팸 및 스미싱 단어가 들어간 문자 발송시 회원 이용정지 처리 | |
| 1483 | + | |
| 1484 | + $('.pop_msg_spam').css({'display':'block','opacity':'1','left':'50%','top':'50%','transform':'translate(-50%,-50%)'}); | |
| 1485 | + $('.pop_msg_spam .msg_text').html(returnData.message); | |
| 1486 | + $('.mask').addClass('on'); | |
| 1487 | + | |
| 1488 | + }else if("statusFail" == returnData.result){ | |
| 1489 | + | |
| 1490 | + alert(returnData.message); | |
| 1491 | + //문자발송 URL Move | |
| 1492 | + goMsgUrlMove(); | |
| 1493 | + return false; | |
| 1494 | + | |
| 1495 | + }else{ | |
| 1496 | + | |
| 1497 | + var smsCnt = Number(returnData.resultSts); | |
| 1498 | + var blockCnt = Number(returnData.resultBlockSts); | |
| 1499 | + | |
| 1500 | + smsCnt = Number(smsCnt) + Number(paramSmsCnt); | |
| 1501 | + blockCnt = Number(blockCnt) + Number(paramBlockCnt); | |
| 1502 | + | |
| 1503 | + if((smsCnt + blockCnt) == 0){ | |
| 1504 | + | |
| 1505 | + $('.pop_msg_spam').css({'display':'block','opacity':'1','left':'50%','top':'50%','transform':'translate(-50%,-50%)'}); | |
| 1506 | + $('.pop_msg_spam .msg_text').html("문자 발송(예약)에 실패하였습니다.<br/> 다시 시도해주세요. <br/>* 정상적으로 발송 시도하였으나 실패하신 경우 혹시 문자내용에 사용불가 이모지 <br/>또는 복사-붙여넣기로 인한 보이지 않는 특수문자가 포함되었는지 확인 후 다시 시도해주세요."); | |
| 1507 | + $('.mask').addClass('on'); | |
| 1508 | + | |
| 1509 | + }else{ | |
| 1510 | + | |
| 1511 | + $('.pop_msg_success').css({'display':'block','opacity':'1','left':'50%','top':'50%','transform':'translate(-50%,-50%)'}); | |
| 1512 | + //예약발송 건의 경우 결과 팝업 문구 변경 | |
| 1513 | + if(reserYn == 'Y'){ | |
| 1514 | + $('.pop_msg_success .msg_text').html("예약 성공 : <strong>"+ smsCnt + "</strong>건,수신거부 : <span>" + blockCnt + "</span>건의<br>문자가 예약 되었습니다."); | |
| 1515 | + }else{ | |
| 1516 | + $('.pop_msg_success .msg_text').html("발송 성공 : <strong>"+ smsCnt + "</strong>건,수신거부 : <span>" + blockCnt + "</span>건의<br>문자가 발송 되었습니다."); | |
| 1517 | + } | |
| 1518 | + | |
| 1519 | + $('.mask').addClass('on'); | |
| 1520 | + | |
| 1521 | + } | |
| 1522 | + | |
| 1523 | + } | |
| 1524 | + | |
| 1525 | + } else if(status== 'fail'){ | |
| 1526 | + alert(returnData.message); | |
| 1527 | + } | |
| 1528 | + }, | |
| 1529 | + beforeSend : function(xmlHttpRequest) { | |
| 1530 | + //로딩창 show | |
| 1531 | + $('.loading_layer').addClass('active'); | |
| 1532 | + }, | |
| 1533 | + complete : function(xhr, textStatus) { | |
| 1534 | + //로딩창 hide | |
| 1535 | + $('.loading_layer').removeClass('active'); | |
| 1536 | + }, | |
| 1537 | + error: function (e) { alert("문자 발송에 실패하였습니다."); console.log("ERROR : ", e); } | |
| 1538 | + }); | |
| 1539 | + | |
| 1540 | +} | |
| 1541 | + | |
| 1542 | +function linkPage(pageNo){ | |
| 1543 | + fnLetterListAjax(pageNo); | |
| 1544 | +} | |
| 1545 | + | |
| 1546 | + | |
| 1547 | +function linkPhoPage(pageNo){ | |
| 1548 | + fnPhotoListAjax(pageNo); | |
| 1549 | +} | |
| 1550 | + | |
| 1551 | +function myMsgPage(pageNo){ | |
| 1552 | + fnMyMsgListAjax(pageNo); | |
| 1553 | +} | |
| 1554 | + | |
| 1555 | +function fnMyMsgCheckDelete(){ | |
| 1556 | + | |
| 1557 | + var msgId = []; | |
| 1558 | + if($("input:checkbox[name='myMsgDel']").is(":checked")==false){ | |
| 1559 | + alert("선택된 항목이 없습니다."); | |
| 1560 | + return; | |
| 1561 | + } | |
| 1562 | + | |
| 1563 | + $("input:checkbox[name='myMsgDel']:checked").each(function(index){ | |
| 1564 | + | |
| 1565 | + msgId[index] = $(this).val(); | |
| 1566 | + | |
| 1567 | + }); | |
| 1568 | + | |
| 1569 | + if(msgId.length > 0){ | |
| 1570 | + | |
| 1571 | + document.myMsgForm.msgIdList.value = msgId; | |
| 1572 | + var sendData = $(document.myMsgForm).serializeArray(); | |
| 1573 | + | |
| 1574 | + $("#myMsgLoad").load("/web/mjon/msgdata/deleteMyMsgDataListAjax.do", sendData ,function(response, status, xhr){ | |
| 1575 | + | |
| 1576 | + //문자 내용 스크롤 적용 | |
| 1577 | + /* $(".msg_cont").mCustomScrollbar({ | |
| 1578 | + axis: 'y', | |
| 1579 | + scrollbarPosition: "inside", | |
| 1580 | + theme: "dark", | |
| 1581 | + autoHideScrollbar: false | |
| 1582 | + }); */ | |
| 1583 | + | |
| 1584 | + }); | |
| 1585 | + | |
| 1586 | + }else{ | |
| 1587 | + | |
| 1588 | + alert("삭제할 문자를 선택해 주세요."); | |
| 1589 | + return false; | |
| 1590 | + | |
| 1591 | + } | |
| 1592 | + | |
| 1593 | +} | |
| 1594 | + | |
| 1595 | +//문자 샘플 2줄, 4줄 보기 기능 | |
| 1596 | +function fnLPageUnit(){ | |
| 1597 | + | |
| 1598 | + var form = document.letterForm; | |
| 1599 | + var pageUnit = form.LPageUnit.value; | |
| 1600 | + | |
| 1601 | + form.pageUnit.value = pageUnit; | |
| 1602 | + fnLetterListAjax(1); | |
| 1603 | + | |
| 1604 | +} | |
| 1605 | + | |
| 1606 | +//그림문자 샘플 2줄, 4줄 보기 기능 | |
| 1607 | +function fnPhPageUnit(){ | |
| 1608 | + | |
| 1609 | + var form = document.letterForm; | |
| 1610 | + var pageUnit = form.PhPageUnit.value; | |
| 1611 | + | |
| 1612 | + form.pageUnit.value = pageUnit; | |
| 1613 | + fnPhotoListAjax(1); | |
| 1614 | + | |
| 1615 | +} | |
| 1616 | + | |
| 1617 | +//내문자함 2줄 4줄보기 기능 | |
| 1618 | +function fnMsgPageUnit(){ | |
| 1619 | + | |
| 1620 | + var form = document.myMsgForm; | |
| 1621 | + var pageUnit = form.msgPageUnit.value; | |
| 1622 | + | |
| 1623 | + form.pageUnit.value = pageUnit; | |
| 1624 | + fnMyMsgListAjax(1); | |
| 1625 | + | |
| 1626 | +} | |
| 1627 | + | |
| 1628 | +function fnMyMsgSearchListOrd(){ | |
| 1629 | + | |
| 1630 | + var form = document.myMsgForm; | |
| 1631 | + var sortOrd = form.searchSortOrd.value; | |
| 1632 | + | |
| 1633 | + if(sortOrd == 'desc'){ | |
| 1634 | + | |
| 1635 | + form.searchSortOrd.value = 'asc'; | |
| 1636 | + $('#sortCnd').text('등록순'); | |
| 1637 | + | |
| 1638 | + }else{ | |
| 1639 | + | |
| 1640 | + form.searchSortOrd.value = 'desc'; | |
| 1641 | + $('#sortCnd').text('최근순'); | |
| 1642 | + | |
| 1643 | + } | |
| 1644 | + | |
| 1645 | + //내문자함 내용 검색하기 | |
| 1646 | + fnMyMsgSearchListAjax(1); | |
| 1647 | + | |
| 1648 | +} | |
| 1649 | + | |
| 1650 | +function msgSuccessClose(obj){ | |
| 1651 | + $(obj).closest('.pop_msg_success').attr('style',''); | |
| 1652 | + //문자발송 URL Move | |
| 1653 | + goMsgUrlMove(); | |
| 1654 | + $('html').scrollTop(0); | |
| 1655 | +} | |
| 1656 | + | |
| 1657 | +function msgFailsClose(obj){ | |
| 1658 | + $(obj).closest('.pop_msg_fails').attr('style',''); | |
| 1659 | +} | |
| 1660 | + | |
| 1661 | +function msgSpamClose(obj){ | |
| 1662 | + $(obj).closest('.pop_msg_spam').attr('style',''); | |
| 1663 | + //location.href="/web/uat/uia/actionLogout.do"; | |
| 1664 | +} | |
| 1665 | + | |
| 1666 | +function msgResultLink(){ | |
| 1667 | + var reserYn = $("input[name=reserYn]:checked").val(); // 예약 발송 여부 확인 | |
| 1668 | + if(reserYn == 'Y'){ | |
| 1669 | + | |
| 1670 | + location.href="/web/mjon/reservmsg/selectReservMsgView.do"; | |
| 1671 | + | |
| 1672 | + }else{ | |
| 1673 | + | |
| 1674 | + location.href="/web/mjon/msgsent/selectMsgSentView.do"; | |
| 1675 | + | |
| 1676 | + } | |
| 1677 | + | |
| 1678 | +} | |
| 1679 | + | |
| 1680 | +//START | |
| 1681 | +//맞춤제작 요청 JSPark => 2023.02.21 추가 | |
| 1682 | +//맞춤제작 등록 Popup | |
| 1683 | +function customPopup(){ | |
| 1684 | + $("#customPopup").load("/web/mjon/custom/selectMsgCustomPopupAjax.do", "" ,function(response, status, xhr){ | |
| 1685 | + popupImgList(1); | |
| 1686 | + }); | |
| 1687 | +} | |
| 1688 | + | |
| 1689 | +function openMsgCustomPopup() { | |
| 1690 | + if(loginVO == "" || loginVO == null){ | |
| 1691 | + alert("로그인 후 이용이 가능합니다."); | |
| 1692 | + return false; | |
| 1693 | + } else { | |
| 1694 | + $("#customPopupOpen").trigger("click"); | |
| 1695 | + } | |
| 1696 | + $("#customType04").hide(); | |
| 1697 | + popCustomScrT=$(window).scrollTop(); | |
| 1698 | + popScrTarget(); | |
| 1699 | +} | |
| 1700 | + | |
| 1701 | +$(window).on('load',function(){ | |
| 1702 | + setTimeout(function(){ | |
| 1703 | + popScrTarget(); | |
| 1704 | + },500); | |
| 1705 | +}); | |
| 1706 | + | |
| 1707 | +function popScrTarget(){ | |
| 1708 | + var closeTarget=$('.custom_layer .tooltip-close'); | |
| 1709 | + closeTarget.attr('onclick','popScrCloseSetting();'); | |
| 1710 | +} | |
| 1711 | + | |
| 1712 | +function popScrCloseSetting(){ | |
| 1713 | + setTimeout(function(){ | |
| 1714 | + $(window).scrollTop(popCustomScrT); | |
| 1715 | + },1); | |
| 1716 | +} | |
| 1717 | +//END(No newline at end of file) |
--- src/main/webapp/publish/js/content.js
+++ src/main/webapp/publish/js/content.js
... | ... | @@ -610,6 +610,16 @@ |
| 610 | 610 |
},250); |
| 611 | 611 |
} |
| 612 | 612 |
|
| 613 |
+// 문자보내기 tab 버튼 - send_top |
|
| 614 |
+function TabType1_advc(obj) {
|
|
| 615 |
+ var $tab = $(obj).closest("li");
|
|
| 616 |
+ $tab.addClass("active");
|
|
| 617 |
+ $tab.find("button").attr("title", "선택됨");
|
|
| 618 |
+ $tab.siblings("li.tab").removeClass("active");
|
|
| 619 |
+ $tab.siblings("li.tab").find("button").removeAttr("title");
|
|
| 620 |
+ |
|
| 621 |
+ |
|
| 622 |
+} |
|
| 613 | 623 |
|
| 614 | 624 |
// 문자보내기 tab 버튼 - send_top |
| 615 | 625 |
function TabType1(obj, tabId) {
|
Add a comment
Delete comment
Once you delete this comment, you won't be able to recover it. Are you sure you want to delete this comment?