gagamel 5 лет назад
Родитель
Сommit
2bfde80612
23 измененных файлов с 13 добавлено и 6237 удалено
  1. 0 31
      style24.scm/src/main/java/com/style24/persistence/mybatis/shop/TssSystem.xml
  2. 0 286
      style24.scm/src/main/java/com/style24/scm/biz/dao/TssSystemDao.java
  3. 0 484
      style24.scm/src/main/java/com/style24/scm/biz/service/TssSystemService.java
  4. 13 17
      style24.scm/src/main/java/com/style24/scm/biz/web/TssGoodsController.java
  5. 0 266
      style24.scm/src/main/webapp/WEB-INF/views/system/BasicAnswerForm.html
  6. 0 735
      style24.scm/src/main/webapp/WEB-INF/views/system/BasicEnvsetForm.html
  7. 0 141
      style24.scm/src/main/webapp/WEB-INF/views/system/BizdayForm.html
  8. 0 206
      style24.scm/src/main/webapp/WEB-INF/views/system/ClauseDetailForm.html
  9. 0 147
      style24.scm/src/main/webapp/WEB-INF/views/system/ClauseListForm.html
  10. 0 252
      style24.scm/src/main/webapp/WEB-INF/views/system/CommoncodeForm.html
  11. 0 229
      style24.scm/src/main/webapp/WEB-INF/views/system/EnvsetHistoryForm.html
  12. 0 164
      style24.scm/src/main/webapp/WEB-INF/views/system/HilandDeliveryFeeDetailForm.html
  13. 0 104
      style24.scm/src/main/webapp/WEB-INF/views/system/HilandDeliveryFeeListForm.html
  14. 0 448
      style24.scm/src/main/webapp/WEB-INF/views/system/MenuForm.html
  15. 0 559
      style24.scm/src/main/webapp/WEB-INF/views/system/PointEnvsetForm.html
  16. 0 91
      style24.scm/src/main/webapp/WEB-INF/views/system/PopupPasswordChangeForm.html
  17. 0 198
      style24.scm/src/main/webapp/WEB-INF/views/system/SampleFileForm.html
  18. 0 560
      style24.scm/src/main/webapp/WEB-INF/views/system/SitePolicyForm.html
  19. 0 375
      style24.scm/src/main/webapp/WEB-INF/views/system/SystemAlarmForm.html
  20. 0 425
      style24.scm/src/main/webapp/WEB-INF/views/system/UserDetailForm.html
  21. 0 208
      style24.scm/src/main/webapp/WEB-INF/views/system/UserForm.html
  22. 0 180
      style24.scm/src/main/webapp/WEB-INF/views/system/UserListForm.html
  23. 0 131
      style24.scm/src/main/webapp/WEB-INF/views/system/UserMenuForm.html

+ 0 - 31
style24.scm/src/main/java/com/style24/persistence/mybatis/shop/TssSystem.xml

@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.style24.scm.biz.dao.TssSystemDao">
-
-	<!-- 사용자 조회 -->
-	<select id="getUser" parameterType="Integer" resultType="User">
-		/* TssSystem.getUser */
-		SELECT USER_NO                                                         /*사용자번호*/
-		     , USER_ID                                                         /*사용자ID*/
-		     , USER_NM                                                         /*사용자명*/
-		     , ROLE_CD                                                         /*권한코드*/
-		     , (SELECT CD_NM
-		        FROM   TB_COMMON_CODE
-		        WHERE  CD_GB = 'G001'
-		        AND    CD = A.ROLE_CD
-		       )                                              AS ROLE_NM       /*권한명*/
-		     , ROLE_REF_VAL                                                    /*권한관련값*/
-		     , EMAIL                                                           /*이메일*/
-		     , CELL_PHNNO                                                      /*휴대전화번호*/
-		     , PNT_ASSIGN_AMT                                                  /*포인트부여가능금액*/
-		     , IP_ADDR                                                         /*IP주소*/
-		     , IP_CHK_YN                                                       /*IP체크여부*/
-		     , DATE_FORMAT(LOGIN_LDT,'%Y-%m-%d %H:%i:%S')     AS LOGIN_LDT     /*최종로그인일시*/
-		     , DATE_FORMAT(PASSWD_CHG_DT,'%Y-%m-%d %H:%i:%S') AS PASSWD_CHG_DT /*비밀번호변경일시*/
-		     , USE_YN                                                          /*사용여부*/
-		FROM   TB_USER A
-		WHERE  USER_NO = #{userNo}
-	</select>
-
-
-</mapper>

+ 0 - 286
style24.scm/src/main/java/com/style24/scm/biz/dao/TssSystemDao.java

@@ -1,286 +0,0 @@
-package com.style24.scm.biz.dao;
-
-import com.style24.core.support.annotation.ShopDs;
-import com.style24.persistence.domain.User;
-
-/**
- * 시스템 Dao
- *
- * @author gagamel
- * @since 2020. 10. 7
- */
-@ShopDs
-public interface TssSystemDao {
-
-//	/**
-//	 * 사용자 목록
-//	 * @param user - 사용자 정보
-//	 * @return
-//	 * @author gagamel
-//	 * @since 2020. 10. 7
-//	 */
-//	Collection<User> getUserList(User user);
-//
-	/**
-	 * 사용자 정보 조회
-	 * @param userNo - 사용자번호
-	 * @return
-	 * @author gagamel
-	 * @since 2020. 10. 7
-	 */
-	User getUser(Integer userNo);
-//
-//	/**
-//	 * 사용자 삭제
-//	 * @param user - 사용자 정보
-//	 * @author gagamel
-//	 * @since 2020. 10. 7
-//	 */
-//	void deleteUser(User user);
-//
-//	/**
-//	 * 사용자ID 건수 조회
-//	 * @param userId - 사용자ID
-//	 * @return
-//	 * @author gagamel
-//	 * @since 2020. 10. 7
-//	 */
-//	int getUserIdCount(String userId);
-//
-//	/**
-//	 * 사용자 정보 저장 처리
-//	 * @param user - 사용자 정보
-//	 * @author gagamel
-//	 * @since 2020. 10. 7
-//	 */
-//	void saveUser(User user);
-//
-//	/**
-//	 * 임시비밀번호 조회
-//	 * @param length - 비밀번호 자릿수
-//	 * @return
-//	 * @since 2020. 10. 7
-//	 */
-//	String getTemporaryPassword(int length);
-//
-//	/**
-//	 * 사용자 비밀번호 수정
-//	 * @param user - 사용자 정보
-//	 * @since 2020. 10. 7
-//	 */
-//	void updateUserPassword(User user);
-//
-//	/**
-//	 * 사용자 메뉴 목록
-//	 * @param userNo - 사용자번호
-//	 * @return
-//	 * @author gagamel
-//	 * @since 2020. 10. 7
-//	 */
-//	Collection<UserMenu> getUserMenuList(Integer userNo);
-//
-//	/**
-//	 * 사용자정보변경이력 생성
-//	 * @param userHst - 사용자이력 정보
-//	 * @author gagamel
-//	 * @since 2020. 10. 7
-//	 */
-//	void createUserInfoChangeHistory(UserHst userHst);
-//
-//	/**
-//	 * 메뉴 목록
-//	 * @param menu - 메뉴정보
-//	 * @return
-//	 * @author gagamel
-//	 * @since 2020. 10. 7
-//	 */
-//	Collection<Menu> getMenuList(Menu menu);
-//
-//	/**
-//	 * 메뉴 등록/수정
-//	 * @param menu - 메뉴 정보
-//	 * @author gagamel
-//	 * @since 2020. 10. 7
-//	 */
-//	void saveMenu(Menu menu);
-//
-//	/**
-//	 * 메뉴권한 삭제
-//	 * @param menuId - 메뉴ID
-//	 * @author gagamel
-//	 * @since 2020. 10. 7
-//	 */
-//	void deleteMenuRole(String menuId);
-//
-//	/**
-//	 * 메뉴권한 생성
-//	 * @param menuRole - 메뉴권한 정보
-//	 * @author gagamel
-//	 * @since 2020. 10. 7
-//	 */
-//	void createMenuRole(MenuRole menuRole);
-//
-//	/**
-//	 * 전체 사용자 메뉴 삭제
-//	 * @param menuRole - 메뉴권한 정보
-//	 * @author gagamel
-//	 * @since 2020. 10. 7
-//	 */
-//	void deleteAllUserMenu(MenuRole menuRole);
-//
-//	/**
-//	 * 전체 사용자 메뉴 생성
-//	 * @param menuRole - 메뉴권한 정보
-//	 * @author gagamel
-//	 * @since 2020. 10. 7
-//	 */
-//	void createAllUserMenu(MenuRole menuRole);
-//
-//	/**
-//	 * 사용자 전체 메뉴 삭제
-//	 * @param userNo - 사용자번호
-//	 * @author gagamel
-//	 * @since 2020. 10. 7
-//	 */
-//	void deleteUserAllMenu(Integer userNo);
-//
-//	/**
-//	 * 사용자 전체 메뉴 생성
-//	 * @param user - 사용자 정보
-//	 * @author gagamel
-//	 * @since 2020. 10. 7
-//	 */
-//	void createUserAllMenu(User user);
-//
-//	/**
-//	 * 사용자 메뉴 삭제
-//	 * @param userMenu - 사용자 메뉴 정보
-//	 * @author gagamel
-//	 * @since 2020. 10. 7
-//	 */
-//	void deleteAdminUserMenu(UserMenu userMenu);
-//
-//	/**
-//	 * 사용자 메뉴 생성
-//	 * @param userMenu - 사용자 메뉴 정보
-//	 * @author gagamel
-//	 * @since 2020. 10. 7
-//	 */
-//	void createUserMenu(UserMenu userMenu);
-//
-//	/**
-//	 * 공통코드 목록
-//	 * @param commoncode - 공통코드 정보
-//	 * @return 공통코드 목록
-//	 * @author gagamel
-//	 * @since 2020. 10. 7
-//	 */
-//	Collection<CommonCode> getCommonCodeList(CommonCode commoncode);
-//
-//	/**
-//	 * 메뉴접속이력 생성
-//	 * @param menuAccessHst - 메뉴접속 정보
-//	 * @author gagamel
-//	 * @since 2020. 10. 7
-//	 */
-//	void createMenuAccessHistory(MenuAccessHst menuAccessHst);
-//
-//	/**
-//	 * 공통코드 등록/수정
-//	 * @param commoncode - 공통코드 정보
-//	 * @author gagamel
-//	 * @since 2020. 10. 7
-//	 */
-//	void saveCommonCode(CommonCode commoncode);
-//
-//	/**
-//	 * 공통코드 삭제
-//	 * @param commoncode - 공통코드 정보
-//	 * @author gagamel
-//	 * @since 2020. 10. 7
-//	 */
-//	void deleteCommonCode(CommonCode commoncode);
-//
-//	/**
-//	 * 샘플파일 목록
-//	 * @return
-//	 * @author gagamel
-//	 * @since 2020. 11. 3
-//	 */
-//	Collection<SampleFile> getSampleFileList();
-//
-//	/**
-//	 * 샘플파일 등록
-//	 * @param sampleFile - 샘플파일 정보
-//	 * @author gagamel
-//	 * @since 2020. 11. 3
-//	 */
-//	void createSampleFile(SampleFile sampleFile);
-//
-//	/**
-//	 * 샘플파일 수정
-//	 * @param sampleFile - 샘플파일 정보
-//	 * @author gagamel
-//	 * @since 2020. 11. 3
-//	 */
-//	void updateSampleFile(SampleFile sampleFile);
-//
-//	/**
-//	 * 알람 목록
-//	 * @param alarm - 알람 정보
-//	 * @return
-//	 * @author gagamel
-//	 * @since 2020. 11. 13
-//	 */
-//	Collection<Alarm> getAlarmList(Alarm alarm);
-//
-//	/**
-//	 * 알람 저장
-//	 * @param alarm - 알람 정보
-//	 * @author gagamel
-//	 * @since 2020. 11. 13
-//	 */
-//	void createAlarm(Alarm alarm);
-//
-//	/**
-//	 * 알람 수정
-//	 * @param alarm - 알람 정보
-//	 * @author gagamel
-//	 * @since 2020. 11. 13
-//	 */
-//	void updateAlarm(Alarm alarm);
-//
-//	/**
-//	 * 알람 삭제
-//	 * @param alarm - 알람 정보
-//	 * @author gagamel
-//	 * @since 2020. 11. 13
-//	 */
-//	void deleteAlarm(Alarm alarm);
-//
-//	/**
-//	 * 알람수신자 목록
-//	 * @param alarmId - 알람ID
-//	 * @return
-//	 * @author gagamel
-//	 * @since 2020. 11. 13
-//	 */
-//	Collection<AlarmReceiver> getAlarmReceiverList(String alarmId);
-//
-//	/**
-//	 * 알람수신자 저장
-//	 * @param alarmReceiver - 알람수신자 정보
-//	 * @author gagamel
-//	 * @since 2020. 11. 13
-//	 */
-//	void saveAlarmReceiver(AlarmReceiver alarmReceiver);
-//
-//	/**
-//	 * 알람수신자 삭제
-//	 * @param alarmReceiver - 알람수신자 정보
-//	 * @author gagamel
-//	 * @since 2020. 11. 13
-//	 */
-//	void deleteAlarmReceiver(AlarmReceiver alarmReceiver);
-
-}

+ 0 - 484
style24.scm/src/main/java/com/style24/scm/biz/service/TssSystemService.java

@@ -1,484 +0,0 @@
-package com.style24.scm.biz.service;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import com.style24.core.support.message.TscMessageByLocale;
-import com.style24.persistence.domain.User;
-import com.style24.scm.biz.dao.TssSystemDao;
-
-import lombok.extern.slf4j.Slf4j;
-
-/**
- * 시스템 Service
- *
- * @author gagamel
- * @since 2020. 10. 7
- */
-@Service
-@Slf4j
-public class TssSystemService {
-
-	@Autowired
-	private TscMessageByLocale message;
-
-	@Autowired
-	private TssSystemDao systemDao;
-
-//	/**
-//	 * 사용자 목록
-//	 * @param user - 사용자 정보
-//	 * @return
-//	 * @author gagamel
-//	 * @since 2020. 10. 7
-//	 */
-//	public Collection<User> getUserList(User user) {
-//		return systemDao.getUserList(user);
-//	}
-//
-//	/**
-//	 * 사용자 목록 삭제 처리
-//	 * @param userList - 사용자 목록
-//	 * @author gagamel
-//	 * @since 2020. 10. 7
-//	 */
-//	@Transactional("shopTxnManager")
-//	public void deleteUserList(Collection<User> userList) {
-//		for (User user : userList) {
-//			user.setUpdNo(TsaSession.getInfo().getUserNo());
-//			systemDao.deleteUser(user);
-//			this.deleteUserAccount(user); // 계정말소
-//		}
-//	}
-//
-	/**
-	 * 사용자 정보 조회
-	 * @param userNo - 사용자번호
-	 * @return
-	 * @author gagamel
-	 * @since 2020. 10. 7
-	 */
-	public User getUser(Integer userNo) {
-		return systemDao.getUser(userNo);
-	}
-//
-//	/**
-//	 * 사용자ID 건수 조회
-//	 * @param userId - 사용자ID
-//	 * @return
-//	 * @author gagamel
-//	 * @since 2020. 10. 7
-//	 */
-//	public int getUserIdCount(String userId) {
-//		return systemDao.getUserIdCount(userId);
-//	}
-//
-//	/**
-//	 * 사용자 정보 저장 처리
-//	 * @param user - 사용자 정보
-//	 * @author gagamel
-//	 * @since 2020. 10. 7
-//	 */
-//	@Transactional("shopTxnManager")
-//	public void saveUser(User user) {
-//		user.setRegNo(TsaSession.getInfo().getUserNo());
-//		user.setUpdNo(TsaSession.getInfo().getUserNo());
-//
-//		// 사용자 저장 처리
-//		systemDao.saveUser(user);
-//
-//		// 등록된 사용자번호 값 가져오기
-//		Integer userNo = user.getUserNo();
-//		log.info("userNo: {}", userNo);
-//		user.setUserNo(userNo);
-//
-//		if (user.getMode().equals("N")) {
-//			this.createUserAccount(user); // 계정생성
-//		} else if (user.getMode().equals("U")) {
-//			if (user.getUseYn().equals("N")) {
-//				this.deleteUserAccount(user); // 계정말소
-//			} else {
-//				this.restoreUserAccount(user); // 계정복원
-//			}
-//		}
-//
-//		// 권한이 변경되었으면
-//		if (user.getRoleChangeYn().equals("Y")) {
-//			// 사용자 전체메뉴 삭제
-//			systemDao.deleteUserAllMenu(user.getUserNo());
-//
-//			// 사용자 전체메뉴 생성
-//			systemDao.createUserAllMenu(user);
-//
-//			if (user.getMode().equals("U")) {
-//				this.createUserRoleChange(user); // 권한변경
-//			}
-//		}
-//	}
-//
-//	/**
-//	 * 사용자정보변경이력 생성 - 계정생성
-//	 * @param user - 사용자 정보
-//	 * @author gagamel
-//	 * @since 2020. 10. 8
-//	 */
-//	private void createUserAccount(User user) {
-//		UserHst userHst = new UserHst();
-//		userHst.setUserNo(user.getUserNo());
-//		userHst.setChgGb("G049_10"); // 계정생성
-//		userHst.setRegNo(TsaSession.getInfo().getUserNo());
-//		systemDao.createUserInfoChangeHistory(userHst);
-//	}
-//
-//	/**
-//	 * 사용자정보변경이력 생성 - 계정말소
-//	 * @param user - 사용자 정보
-//	 * @author gagamel
-//	 * @since 2020. 10. 8
-//	 */
-//	private void deleteUserAccount(User user) {
-//		UserHst userHst = new UserHst();
-//		userHst.setUserNo(user.getUserNo());
-//		userHst.setChgGb("G049_11"); // 계정말소
-//		userHst.setRegNo(TsaSession.getInfo().getUserNo());
-//		systemDao.createUserInfoChangeHistory(userHst);
-//	}
-//
-//	/**
-//	 * 사용자정보변경이력 생성 - 계정복원
-//	 * @param user - 사용자 정보
-//	 * @author gagamel
-//	 * @since 2020. 10. 8
-//	 */
-//	private void restoreUserAccount(User user) {
-//		UserHst userHst = new UserHst();
-//		userHst.setUserNo(user.getUserNo());
-//		userHst.setChgGb("G049_12"); // 계정복원
-//		userHst.setRegNo(TsaSession.getInfo().getUserNo());
-//		systemDao.createUserInfoChangeHistory(userHst);
-//	}
-//
-//	/**
-//	 * 사용자정보변경이력 생성 - 권한변경
-//	 * @param user - 사용자 정보
-//	 * @author gagamel
-//	 * @since 2020. 10. 8
-//	 */
-//	private void createUserRoleChange(User user) {
-//		UserHst userHst = new UserHst();
-//		userHst.setUserNo(user.getUserNo());
-//		userHst.setChgGb("G049_20"); // 권한변경
-//		userHst.setOrgRoleCd(TsaSession.getInfo().getRoleCd());
-//		userHst.setRoleCd(user.getRoleCd());
-//		userHst.setRegNo(TsaSession.getInfo().getUserNo());
-//		systemDao.createUserInfoChangeHistory(userHst);
-//	}
-//
-//	/**
-//	 * 임시비밀번호 조회
-//	 * @param length - 비밀번호 자릿수
-//	 * @return 임시비밀번호
-//	 * @author gagamel
-//	 * @since 2020. 10. 7
-//	 */
-//	public String getTemporaryPassword(int length) {
-//		return systemDao.getTemporaryPassword(length);
-//	}
-//
-//	/**
-//	 * 사용자 비밀번호 수정
-//	 * @param user - 사용자 정보
-//	 * @since 2020. 10. 7
-//	 */
-//	public void updateUserPassword(User user) {
-//		systemDao.updateUserPassword(user);
-//
-//		// 사용자정보변경이력 생성 - 비밀번호변경
-//		UserHst userHst = new UserHst();
-//		userHst.setUserNo(user.getUserNo());
-//		userHst.setChgGb("G049_30"); // 비밀번호변경
-//		userHst.setRegNo(TsaSession.getInfo().getUserNo());
-//		systemDao.createUserInfoChangeHistory(userHst);
-//	}
-//
-//	/**
-//	 * 사용자 메뉴 목록
-//	 * @param userNo - 사용자번호
-//	 * @return
-//	 * @author gagamel
-//	 * @since 2020. 10. 7
-//	 */
-//	public Collection<UserMenu> getUserMenuList(Integer userNo) {
-//		return systemDao.getUserMenuList(userNo);
-//	}
-//
-//	/**
-//	 * 사용자 메뉴 목록 저장 처리
-//	 * @param userMenuList - 사용자 메뉴 목록
-//	 * @author gagamel
-//	 * @since 2020. 10. 7
-//	 */
-//	@Transactional("shopTxnManager")
-//	public void saveUserMenuList(Collection<UserMenu> userMenuList) {
-//		if (userMenuList == null || userMenuList.isEmpty())
-//			throw new IllegalStateException(message.getMessage("FAIL_1001"));
-//
-//		int cnt = 0;
-//		log.info("saveUserMenuList userMenuList={}", userMenuList);
-//
-//		for (UserMenu adminMenu : userMenuList) {
-//			if (cnt++ == 0) {
-//				// 사용자 전체메뉴 삭제
-//				systemDao.deleteUserAllMenu(adminMenu.getUserNo());
-//			}
-//
-//			adminMenu.setRegNo(TsaSession.getInfo().getUserNo());
-//			adminMenu.setUpdNo(TsaSession.getInfo().getUserNo());
-//			adminMenu.setUseRole("RCUD");
-//
-//			// 사용자 메뉴 생성
-//			systemDao.createUserMenu(adminMenu);
-//		}
-//	}
-//
-//	/**
-//	 * 메뉴 목록
-//	 * @param pmenuId - 상위메뉴ID
-//	 * @return
-//	 * @author gagamel
-//	 * @since 2020. 10. 7
-//	 */
-//	public Collection<Menu> getMenuList(String pmenuId) {
-//		Menu menu = new Menu();
-//		menu.setPmenuId(pmenuId);
-//		return systemDao.getMenuList(menu);
-//	}
-//
-//	/**
-//	 * 메뉴 목록 저장 처리
-//	 * @param menuList - 메뉴 목록
-//	 * @author gagamel
-//	 * @since 2020. 10. 7
-//	 */
-//	@Transactional("shopTxnManager")
-//	public void saveMenuList(Collection<Menu> menuList) {
-//		if (menuList == null || menuList.isEmpty())
-//			throw new IllegalStateException(message.getMessage("FAIL_1001"));
-//
-//		for (Menu menu : menuList) {
-//			menu.setRegNo(TsaSession.getInfo().getUserNo());
-//			menu.setUpdNo(TsaSession.getInfo().getUserNo());
-//			systemDao.saveMenu(menu);
-//		}
-//	}
-//
-//	/**
-//	 * 메뉴 등록/수정 및 메뉴권한 생성
-//	 * @param menu - 메뉴 정보
-//	 * @author gagamel
-//	 * @since 2020. 10. 7
-//	 */
-//	@Transactional("shopTxnManager")
-////	@CacheEvict(value = "menu", allEntries = true)
-//	public void saveMenu(Menu menu) {
-//		menu.setRegNo(TsaSession.getInfo().getUserNo());
-//		menu.setUpdNo(TsaSession.getInfo().getUserNo());
-//
-//		// 메뉴 등록/수정
-//		systemDao.saveMenu(menu);
-//
-//		if (StringUtils.isNotBlank(menu.getRoleCds())) {
-//			// 메뉴권한 삭제
-//			systemDao.deleteMenuRole(menu.getMenuId());
-//
-//			String[] roleCds = menu.getRoleCds().split(",");
-//
-//			for (String roleCd : roleCds) {
-//				MenuRole menuRole = new MenuRole();
-//				menuRole.setRoleCd(roleCd);
-//				menuRole.setMenuId(menu.getMenuId());
-//				menuRole.setRegNo(TsaSession.getInfo().getUserNo());
-//				menuRole.setUpdNo(TsaSession.getInfo().getUserNo());
-//
-//				// 메뉴권한 생성
-//				systemDao.createMenuRole(menuRole);
-//
-//				// 전체 어드민사용자 메뉴 생성
-//				systemDao.deleteAllUserMenu(menuRole);
-//
-//				// 전체 어드민사용자 메뉴 생성
-//				systemDao.createAllUserMenu(menuRole);
-//			}
-//		}
-//	}
-//
-//	/**
-//	 * 공통코드 목록
-//	 * @return
-//	 * @author gagamel
-//	 * @since 2020. 10. 7
-//	 */
-//	public Collection<CommonCode> getCommonCodeList() {
-//		return this.getCommonCodeList(new CommonCode());
-//	}
-//
-//	/**
-//	 * 공통코드 목록
-//	 * @param commoncode - 공통코드 정보
-//	 * @return
-//	 * @author gagamel
-//	 * @since 2020. 10. 7
-//	 */
-//	public Collection<CommonCode> getCommonCodeList(CommonCode commoncode) {
-//		return systemDao.getCommonCodeList(commoncode);
-//	}
-//
-//	/**
-//	 * 공통코드 목록 저장 처리
-//	 * @param dataList - 공통코드 목록
-//	 * @return
-//	 * @author gagamel
-//	 * @since 2020. 10. 7
-//	 */
-//	@Transactional("shopTxnManager")
-//	public void saveCommonCodeList(Collection<CommonCode> dataList) {
-//		if (dataList == null || dataList.isEmpty())
-//			throw new IllegalStateException(message.getMessage("FAIL_1001"));
-//
-//		for (CommonCode commoncode : dataList) {
-//			commoncode.setRegNo(TsaSession.getInfo().getUserNo());
-//			commoncode.setUpdNo(TsaSession.getInfo().getUserNo());
-//			commoncode.setCdNm(commoncode.getCdNm().replace("&gt;", ">"));
-//			systemDao.saveCommonCode(commoncode);
-//		}
-//	}
-//
-//	/**
-//	 * 공통코드 저장 처리
-//	 * @param commoncode - 공통코드 정보
-//	 * @return
-//	 * @author gagamel
-//	 * @since 2020. 10. 7
-//	 */
-//	@Transactional("shopTxnManager")
-//	public void saveCommonCode(CommonCode commoncode) {
-//		commoncode.setRegNo(TsaSession.getInfo().getUserNo());
-//		commoncode.setUpdNo(TsaSession.getInfo().getUserNo());
-//		commoncode.setCdNm(commoncode.getCdNm().replace("&gt;", ">"));
-//		systemDao.saveCommonCode(commoncode);
-//	}
-//
-//	/**
-//	 * 공통코드 삭제처리
-//	 * @param commoncode - 공통코드 정보
-//	 * @return
-//	 * @author gagamel
-//	 * @since 2020. 10. 7
-//	 */
-//	@Transactional("shopTxnManager")
-//	public void deleteCommonCode(CommonCode commoncode) {
-//		systemDao.deleteCommonCode(commoncode);
-//	}
-//
-//	/**
-//	 * 샘플파일 목록
-//	 * @return
-//	 * @author gagamel
-//	 * @since 2020. 11. 3
-//	 */
-//	public Collection<SampleFile> getSampleFileList() {
-//		return systemDao.getSampleFileList();
-//	}
-//
-//	/**
-//	 * 샘플파일 등록/수정
-//	 * @param sampleFile - 샘플파일 정보
-//	 * @author gagamel
-//	 * @since 2020. 11. 3
-//	 */
-//	@Transactional("shopTxnManager")
-//	public void saveSampleFile(SampleFile sampleFile) {
-//		if (sampleFile.getMode().equals("N")) {
-//			systemDao.createSampleFile(sampleFile);
-//		} else {
-//			systemDao.updateSampleFile(sampleFile);
-//		}
-//	}
-//
-//	/**
-//	 * 알람 목록
-//	 * @param alarm - 알람 정보
-//	 * @return
-//	 * @author gagamel
-//	 * @since 2020. 11. 13
-//	 */
-//	public Collection<Alarm> getAlarmList(Alarm alarm) {
-//		return systemDao.getAlarmList(alarm);
-//	}
-//
-//	/**
-//	 * 알람 저장
-//	 * @param alarm - 알람 정보
-//	 * @author gagamel
-//	 * @since 2020. 11. 13
-//	 */
-//	@Transactional("shopTxnManager")
-//	public void saveAlarm(Alarm alarm) {
-//		if (alarm.getMode().equals("N")) {
-//			systemDao.createAlarm(alarm);
-//		} else {
-//			systemDao.updateAlarm(alarm);
-//		}
-//	}
-//
-//	/**
-//	 * 알람 삭제
-//	 * @param alarm - 알람 정보
-//	 * @author gagamel
-//	 * @since 2020. 11. 13
-//	 */
-//	@Transactional("shopTxnManager")
-//	public void deleteAlarm(Alarm alarm) {
-//		systemDao.deleteAlarm(alarm);
-//	}
-//
-//	/**
-//	 * 알람수신자 목록
-//	 * @param alarmId - 알람ID
-//	 * @return
-//	 * @author gagamel
-//	 * @since 2020. 11. 13
-//	 */
-//	public Collection<AlarmReceiver> getAlarmReceiverList(String alarmId) {
-//		return systemDao.getAlarmReceiverList(alarmId);
-//	}
-//
-//	/**
-//	 * 알람수신자 목록 저장
-//	 * @param alarmReceiverList - 알람수신자 목록
-//	 * @author gagamel
-//	 * @since 2020. 11. 13
-//	 */
-//	@Transactional("shopTxnManager")
-//	public void saveAlarmReceiverList(Collection<AlarmReceiver> alarmReceiverList) {
-//		for (AlarmReceiver alarmReceiver : alarmReceiverList) {
-//			alarmReceiver.setRegNo(TsaSession.getInfo().getUserNo());
-//			alarmReceiver.setUpdNo(TsaSession.getInfo().getUserNo());
-//			systemDao.saveAlarmReceiver(alarmReceiver);
-//		}
-//	}
-//
-//	/**
-//	 * 알람수신자 목록 삭제
-//	 * @param alarmReceiverList - 알람수신자 목록
-//	 * @author gagamel
-//	 * @since 2020. 11. 13
-//	 */
-//	@Transactional("shopTxnManager")
-//	public void deleteAlarmReceiverList(Collection<AlarmReceiver> alarmReceiverList) {
-//		for (AlarmReceiver alarmReceiver : alarmReceiverList) {
-//			systemDao.deleteAlarmReceiver(alarmReceiver);
-//		}
-//	}
-
-}

+ 13 - 17
style24.scm/src/main/java/com/style24/scm/biz/web/TssGoodsController.java

@@ -35,11 +35,9 @@ import com.style24.persistence.domain.NotiInfo;
 import com.style24.persistence.domain.Notice;
 import com.style24.persistence.domain.NoticeGoods;
 import com.style24.persistence.domain.Option;
-import com.style24.persistence.domain.User;
 import com.style24.scm.biz.service.TssCommonService;
 import com.style24.scm.biz.service.TssGoodsService;
 import com.style24.scm.biz.service.TssRendererService;
-import com.style24.scm.biz.service.TssSystemService;
 import com.style24.scm.support.controller.TssBaseController;
 import com.style24.scm.support.security.session.TssSession;
 
@@ -79,9 +77,6 @@ public class TssGoodsController extends TssBaseController {
 	@Autowired
 	private TssCommonService commonService;
 
-	@Autowired
-	private TssSystemService systemService;
-
 	/**
 	 * 상품목록 화면
 	 *
@@ -680,7 +675,7 @@ public class TssGoodsController extends TssBaseController {
 				String brandYmdDir = GagaFileUtil.getConcatenationPath(brandDir, GagaDateUtil.getToday());	//디비 저장용
 
 				File uniqueFile = GagaFileUtil.getUniqueFile(new File(GagaFileUtil.getConcatenationPath(goodsUploadPath, newFilename)));
-				File newFile = new File(GagaFileUtil.getConcatenationPath(goodsUploadPath,  uniqueFile.getName()));
+				File newFile = new File(GagaFileUtil.getConcatenationPath(goodsUploadPath, uniqueFile.getName()));
 				log.info("newFile.getPath(): {}", newFile.getPath());
 
 				// resizing 처리 시 오류가 발생할 경우 삭제하기 위해 설정
@@ -702,11 +697,11 @@ public class TssGoodsController extends TssBaseController {
 				}
 
 				goodsImg.setDispOrd(index++);
-				goodsImg.setOrgImgNm(GagaFileUtil.getConcatenationPath(brandYmdDir,newFile.getName()));
-				goodsImg.setSysImgNm(GagaFileUtil.getConcatenationPath(brandYmdDir,newFile.getName()));
+				goodsImg.setOrgImgNm(GagaFileUtil.getConcatenationPath(brandYmdDir, newFile.getName()));
+				goodsImg.setSysImgNm(GagaFileUtil.getConcatenationPath(brandYmdDir, newFile.getName()));
 			} else {
-				goodsImg.setOrgImgNm(GagaFileUtil.getConcatenationPath(goodsImg.getSysImgUrl() ,goodsImg.getSysImgNm()));
-				goodsImg.setSysImgNm(GagaFileUtil.getConcatenationPath(goodsImg.getSysImgUrl() ,goodsImg.getSysImgNm()));
+				goodsImg.setOrgImgNm(GagaFileUtil.getConcatenationPath(goodsImg.getSysImgUrl(), goodsImg.getSysImgNm()));
+				goodsImg.setSysImgNm(GagaFileUtil.getConcatenationPath(goodsImg.getSysImgUrl(), goodsImg.getSysImgNm()));
 				goodsImg.setDispOrd(index++);
 			}
 		}
@@ -769,12 +764,14 @@ public class TssGoodsController extends TssBaseController {
 		mav.addObject("erpSyncYn", commonService.getErpSyncYn());
 		// 정보고시 목록
 		mav.addObject("niClsfCdList", rendererService.getAvailCommonCodeList("G004"));
+
 		// 사용자 업체
-		User loginInfo = systemService.getUser(TssSession.getInfo().getUserNo());
-		String supplyCompCd = "NONE";
-		if (loginInfo != null) {
-			supplyCompCd = loginInfo.getSupplyCompCd();
-		}
+		String supplyCompCd = StringUtils.hasLength(TssSession.getInfo().getSupplyCompCd()) ? TssSession.getInfo().getSupplyCompCd() : "NONE";
+//		User loginInfo = systemService.getUser(TssSession.getInfo().getUserNo());
+//		String supplyCompCd = "NONE";
+//		if (loginInfo != null) {
+//			supplyCompCd = loginInfo.getSupplyCompCd();
+//		}
 		mav.addObject("supplyCompCd", supplyCompCd);
 		mav.setViewName("goods/GoodsMassRegisterForm");
 
@@ -822,7 +819,6 @@ public class TssGoodsController extends TssBaseController {
 
 		GagaMap result = new GagaMap();
 
-
 		goodsPriceRes.setRegNo(TssSession.getInfo().getUserNo()); // 엑셀조회시 로그인 사용자의 엑셀 상품조회시 사용
 		goodsPriceRes.setPageable(new TssPageRequest(goodsPriceRes.getPageNo() - 1, goodsPriceRes.getPageSize()));
 		goodsPriceRes.getPageable().setTotalCount(goodsService.getGoodsSupplyPriceCount(goodsPriceRes));
@@ -968,7 +964,7 @@ public class TssGoodsController extends TssBaseController {
 		mav.addObject("brandMdList", rendererService.getBrandMdList());
 		// 년도
 		int toYear = Integer.parseInt(GagaDateUtil.getToday("yyyy")) - 4;
-		mav.addObject("styleYearList", rendererService.getYearList(toYear,0,5));
+		mav.addObject("styleYearList", rendererService.getYearList(toYear, 0, 5));
 
 		mav.addObject("params", goodsSearch);
 

+ 0 - 266
style24.scm/src/main/webapp/WEB-INF/views/system/BasicAnswerForm.html

@@ -1,266 +0,0 @@
-<!DOCTYPE html>
-<html lang="ko"
-	xmlns:th="http://www.thymeleaf.org">
-<!--
- *******************************************************************************
- * @source  : BasicAnswerForm.html
- * @desc    : 기본답변문구관리 Page
- *============================================================================
- * Wivismall
- * Copyright(C) 2019 TSIT, All rights reserved.
- *============================================================================
- * VER  DATE         AUTHOR      DESCRIPTION
- * ===  ===========  ==========  =============================================
- * 1.0  2019.12.13   jaewonHo    최초 작성
- *******************************************************************************
- -->
-	<div id="main">
-		<div class="main-title">
-		</div>
-		<!-- 검색조건 영역 -->
-		<div class="panelStyle2">
-			<form id="searchForm" name="searchForm" action="#" th:action="@{'/system/basic/answer/list'}" onsubmit="$('#btnSearch').trigger('click'); return false;">
-				<table class="frmStyle">
-					<colgroup>
-						<col style="width:10%;"/>
-						<col style="width:20%;"/>
-						<col style="width:10%;"/>
-						<col style="width:20%;"/>
-						<col style="width:10%;"/>
-						<col style="width:20%;"/>
-						<col/>
-					</colgroup>
-					<tr>
-						<th>사이트</th>
-						<td>
-							<select name="siteCd">
-								<option value="">[전체]</option>
-								<option th:if="${siteList}" th:each="oneData, status : ${siteList}"th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
-							</select>
-						</td>
-						<th>답변종류</th>
-						<td>
-							<select name="ansClsf">
-								<option value="">[전체]</option>
-								<option th:if="${ansClsfList}" th:each="oneData, status : ${ansClsfList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
-							</select>
-						</td>
-						<th>답변제목</th>
-						<td>
-							<input type="text" name="ansTitle" class="w200"/>
-						</td>
-						<th>사용여부</th>
-						<td>
-							<select name="useYn">
-								<option value="">[전체]</option>
-								<option value="Y">[Y] Yes</option>
-								<option value="N">[N] No</option>
-							</select>
-						</td>
-					</tr>
-				</table>
-				<div class="panelBtnB">
-					<input type="button" value="조회" class="btn btn-base btn-lg" id="btnSearch" onclick="fnSearch();"/>
-				</div>
-			</form>
-		</div>
-		<!-- 검색조건 영역 -->
-		
-		<!-- 리스트 영역 -->
-		<div class="panelStyle2">
-			<ul class="lrStyle">
-				<li>
-					<button type="button" class="btn btn-default btn-lg" id="btnExcelDown" onclick="fnExcelDown();">엑셀다운로드</button>
-				</li>
-			</ul>
-			
-			<div class="panelContent" style="overflow: hidden;">
-				<div id="gridList" style="width: 100%; height: 450px;" class="ag-theme-balham"></div>
-			</div>
-		</div>
-		<!-- //리스트 영역 -->
-
-		<!-- 등록/수정 -->
-		<div class="panelStyle2">
-			<form id="detailForm" name="detailForm" action="#" th:action="@{'/system/basic/answer/save'}">
-				<input type="hidden" name="ansSq" value=""/>
-				
-				<table class="frmStyle">
-					<colgroup>
-						<col style="width:10%;"/>
-						<col style="width:20%;"/>
-						<col style="width:10%;"/>
-						<col style="width:20%;"/>
-						<col style="width:10%;"/>
-						<col style="width:20%;"/>
-						<col/>
-					</colgroup>
-					<tr>
-						<th>사이트<i class="star"></i></th>
-						<td>
-							<select name="siteCd" required="required" data-valid-name="사이트">
-								<option>[전체]</option>
-								<option th:if="${siteList}" th:each="oneData, status : ${siteList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
-							</select>
-						</td>
-						<th>답변종류<i class="star"></i></th>
-						<td>
-							<select name="ansClsf" required="required" data-valid-name="답변종류">
-								<option value="">[선택]</option>
-								<option th:if="${ansClsfList}" th:each="oneData, status : ${ansClsfList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
-							</select>
-						</td>
-						<th>등록자</th>
-						<td>
-							<label th:text="${sessionInfo.userId}" id="regId"></label>
-						</td>
-					</tr>
-					<tr>
-						<th>답변제목<i class="star"></i></th>
-						<td colspan="3">
-							<input type="text" name="ansTitle" required="required" data-valid-name="답변제목"/>
-						</td>
-						<th>사용여부</th>
-						<td>
-							<input type="hidden" name="useYn" value="Y"/>
-							<label><input type="checkbox" name="chkUseYn" checked="checked"/>사용</label>
-						</td>
-					</tr>
-					<tr>
-						<th>답변내용<i class="star"></i></th>
-						<td colspan="5">
-							<textarea name="ansContent" class="textareaR3" required="required"  data-valid-name="답변내용" ></textarea>
-						</td>
-					</tr>
-				</table>
-
-				<div class="panelBtnB">
-					<button type="button" class="btn btn-success btn-lg" id="btnNew">신규</button>
-					<button type="button" class="btn btn-success btn-lg" id="btnSave">저장</button>
-				</div>
-			</form>
-		</div>
-		<!-- 등록/수정 -->
-	</div>
-
-<script th:inline="javascript">
-/*<![CDATA[*/
-	var siteList = gagajf.convertToArray([[${siteList}]]);
-	var ansClsfList = gagajf.convertToArray([[${ansClsfList}]]);
-
-	var columnDefs = [
-		{headerName: "답변번호", field: "ansSq", width: 150, cellClass: 'text-center'},
-		{
-			headerName: "사이트", field: "siteCd", width: 150, cellClass: 'text-center',
-			valueFormatter: function (params) { return gagaAgGrid.lookupValue(siteList, params.value); }
-		},
-		{
-			headerName: "답변종류", field: "ansClsf", width: 150, cellClass: 'text-center',
-			valueFormatter: function (params) { return gagaAgGrid.lookupValue(ansClsfList, params.value); }
-		},
-		{
-			headerName: "답변제목", field: "ansTitle", width: 350,
-			cellRenderer: function(params) { return '<a href="javascript:void(0);">' + params.value + '</a>'; }
-		},
-		{headerName: "사용여부", field: "useYn", width: 80, cellClass: 'text-center'},
-		{headerName: "등록자ID", field: "regId", width: 150, cellClass: 'text-center'},
-		{
-			headerName: "등록일", field: "regDt", width: 100, cellClass: 'text-center',
-			cellRenderer: function(params) { return !gagajf.isNull(params.value) ? params.value.toDate("YYYYMMDD").format("YYYY-MM-DD") : ''; }
-		}
-	];
-
-	var gridOptions = gagaAgGrid.getGridOptions(columnDefs);
-
-	// 셀 클릭 이벤트
-	gridOptions.onCellClicked = function(event) {
-		if (event.colDef.field != 'ansTitle')
-			return;
-		
-		$('#detailForm input[name=ansSq]').val(event.data.ansSq);								// 답변일련번호
-		$('#detailForm select[name=siteCd]').val(event.data.siteCd);							// 사이트
-		$('#detailForm select[name=ansClsf]').val(event.data.ansClsf);							// 답변종류
-		$('#regId').html(event.data.regId);														// 등록자ID
-		$('#detailForm input[name=ansTitle]').val(event.data.ansTitle.replaceAll('&gt;','>'));	// 답변제목
-		
-		if (event.data.useYn == 'Y') {
-			$("#detailForm input:checkbox[name=chkUseYn]").prop('checked', true);
-			$("#detailForm input:checkbox[name=chkUseYn]").parent().addClass('checked');
-		} else {
-			$("#detailForm input:checkbox[name=chkUseYn]").prop('checked', false);
-			$("#detailForm input:checkbox[name=chkUseYn]").parent().removeClass('checked');
-		}
-		
-		$('#detailForm textarea[name=ansContent]').val(event.data.ansContent);	// 답변내용
-	}
-
-	// 신규
-	$('#btnNew').on('click', function() {
-		$('#detailForm')[0].reset();
-		$('#detailForm input[name=ansSq]').val('');
-		$('#detailForm input[name=ansTitle]').focus();
-	});
-	
-	// 검색
-	var fnSearch = function() {
-		gagaAgGrid.fetch($('#searchForm').prop('action'), gridOptions, '#searchForm');
-	}
-
-	// 저장/수정
-	$("#btnSave").on("click", function(formId){
-		var formId = '#detailForm';
-
-		var selectedData = gridOptions.api.getSelectedRows();
-
-		//필수값 체크
-		if (!gagajf.validation(formId))
-			return false;
-
-		var msg = '저장하시겠습니까?';
-		if (selectedData.length == 0) {
-			msg = '등록하시겠습니까?';
-		}
-		var ansSq = $(formId + " input[name=ansSq]").val();
-		var siteCd = $(formId + " select[name=siteCd").val();									// 사이트
-		var ansClsf = $(formId + " select[name=ansClsf]").val();								// 답변종류
-		var ansTitle = $(formId + " input[name=ansTitle]").val();								// 답변제목
-		var ansContent = $(formId + " textarea[name=ansContent]").val();						// 답변내용
-		var useYn = $(formId + ' input:checkbox[name=chkUseYn]').is(":checked") ? 'Y' : 'N';	// 사용여부
-
-		var data = {
-				ansSq : ansSq,
-				siteCd : siteCd,
-				ansClsf : ansClsf,
-				ansTitle : ansTitle,
-				ansContent : ansContent,
-				useYn : useYn
-		};
-
-		mcxDialog.confirm(msg, {
-			cancelBtnText: "취소",
-			sureBtnText: "확인",
-			sureBtnClick: function() {
-				var jsonData = JSON.stringify(data);
-				gagajf.ajaxJsonSubmit($(formId).prop("action"), jsonData, fnSaveCallback);
-			}
-		});
-	});
-
-	//저장후 콜백
-	var fnSaveCallback = function() {
-		fnSearch();
-		$("#btnNew").click();
-	}
-
-	$(document).ready(function() {
-		gagaAgGrid.createGrid('gridList', gridOptions);
-
-		// Grid 높이 조정
-		uifnFitGrid();
-		
-		fnSearch();
-	});
-/*]]>*/
-</script>
-
-</html>

+ 0 - 735
style24.scm/src/main/webapp/WEB-INF/views/system/BasicEnvsetForm.html

@@ -1,735 +0,0 @@
-<!DOCTYPE html>
-<html lang="ko"
-	xmlns:th="http://www.thymeleaf.org">
-<!--
- *******************************************************************************
- * @source  : BasicEnvsetForm.html
- * @desc    : 기본환경설정 Page
- *============================================================================
- * Wivismall
- * Copyright(C) 2019 TSIT, All rights reserved.
- *============================================================================
- * VER  DATE         AUTHOR      DESCRIPTION
- * ===  ===========  ==========  =============================================
- * 1.0  2020.03.13   gagamel     최초 작성
- *******************************************************************************
- -->
-
-	<div id="main">
-		<!-- 메인타이틀 영역 -->
-		<div class="main-title">
-		</div>
-		<!-- //메인타이틀 영역 -->
-
-		<!-- 검색조건 영역 -->
-		<div class="panelStyle2">
-			<table class="frmStyle" aria-describedby="검색조건">
-				<colgroup>
-					<col style="width:10%;"/>
-				</colgroup>
-				<tbody>
-					<tr>
-						<th>사이트</th>
-						<td>
-							<select name="siteCd" class="w150" onchange="fnSearch();">
-								<option th:if="${siteList}" th:each="oneData, status : ${siteList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
-							</select>
-						</td>
-					</tr>
-				</tbody>
-			</table>
-			<div class="panelBtnB"></div>
-		</div>
-		<!-- //검색조건 영역 -->
-		<!-- 테이블 영역 -->
-		<div class="panelStyle2">
-			<h4>쇼핑몰Meta정보</h4>
-			<button type="button" class="btn btn-success btn-ssm" onclick="fnSave('B10');">저장</button>
-			<button type="button" class="btn btn-info btn-ssm" onclick="fnOpenEnvsetPopup('B10', '쇼핑몰Meta정보');">이력보기</button>
-			<table class="frmStyle" aria-describedby="쇼핑몰Meta정보">
-				<colgroup>
-					<col style="width: 15%;"/>
-					<col style="width: 85%;"/>
-				</colgroup>
-				<tbody>
-					<tr>
-						<th>웹브라우저Title</th>
-						<td>
-							<input name="b10StrSetVal1" type="text" class="w500" maxlength="200"/>
-							<span class="infoTxt cBlue marL20"><i class="fa fa-info-circle" aria-hidden="true"></i>웹 브라우저 상단에 노출되는 사이트 소개 문구입니다.</span>
-						</td>
-					</tr>
-					<tr>
-						<th>쇼핑몰Title(og:title)</th>
-						<td>
-							<input name="b10StrSetVal2" type="text" class="w500" maxlength="200"/>
-							<span class="infoTxt cBlue marL20"><i class="fa fa-info-circle" aria-hidden="true"></i>오픈그래프 Title입니다. 영문/한글/숫자만 입력하세요.</span>
-						</td>
-					</tr>
-					<tr>
-						<th>쇼핑몰설명(og:description)</th>
-						<td>
-							<input name="b10StrSetVal3" type="text" class="w500" maxlength="200"/>
-							<span class="infoTxt cBlue marL20"><i class="fa fa-info-circle" aria-hidden="true"></i>오픈그래프 Description입니다. 200자 이내의 영문/한글/숫자만 입력하세요.</span>
-						</td>
-					</tr>
-					<tr>
-						<th>쇼핑몰이미지(og:image)</th>
-						<td>
-							<div class="uFile w500">
-								<input type="file" id="b10StrSetVal4" name="b10StrSetVal4" class="uFileInput"/>
-								<label for="b10StrSetVal4" class="uFileLabel">쇼핑몰이미지 선택</label>
-								<input type="hidden" name="b10StrSetVal4OrgFileNm"/>
-								<input type="hidden" name="b10StrSetVal4SysFileNm"/>
-							</div>
-							<a id="b10StrSetVal4FileDownload" href="#" style="display: none;" onclick="fnDownloadFile('b10StrSetVal4');"></a>
-							<span class="infoTxt cBlue marL20"><i class="fa fa-info-circle" aria-hidden="true"></i>오픈그래프 Image입니다</span>
-						</td>
-					</tr>
-					<tr>
-						<th>키워드(Keywords)</th>
-						<td>
-							<input name="b10StrSetVal5" type="text" class="w500" maxlength="70"/>
-							<span class="infoTxt cBlue marL20"><i class="fa fa-info-circle" aria-hidden="true"></i>70자 이내로 작성하시고 같은 단어는 3회 이상 반복하시면 안 됩니다.</span>
-						</td>
-					</tr>
-					<tr>
-						<th>파비콘이미지</th>
-						<td>
-							<div class="uFile w500">
-								<input type="file" id="b10StrSetVal6" name="b10StrSetVal6" class="uFileInput"/>
-								<label for="b10StrSetVal6" class="uFileLabel">파비콘이미지 선택</label>
-								<input type="hidden" name="b10StrSetVal6OrgFileNm"/>
-								<input type="hidden" name="b10StrSetVal6SysFileNm"/>
-							</div>
-							<a id="b10StrSetVal6FileDownload" href="#" style="display: none;" onclick="fnDownloadFile('b10StrSetVal6');"></a>
-							<span class="infoTxt cBlue marL20"><i class="fa fa-info-circle" aria-hidden="true"></i>16x16 사이즈의 아이콘 이미지(확장자:ico)</span>
-						</td>
-					</tr>
-				</tbody>
-			</table>
-
-			<h4>기본설정</h4>
-			<button type="button" class="btn btn-success btn-ssm" onclick="fnSave('B11');">저장</button>
-			<button type="button" class="btn btn-info btn-ssm" onclick="fnOpenEnvsetPopup('B11', '기본설정');">이력보기</button>
-			<table class="frmStyle" aria-describedby="기본설정">
-				<colgroup>
-					<col style="width: 15%;"/>
-					<col style="width: 85%;"/>
-				</colgroup>
-				<tbody>
-					<tr>
-						<th>탈퇴후재가입불가기간(월)</th>
-						<td><input name="b11NumSetVal1" type="text" class="w50 aR" maxlength="2" data-valid-type="integer" data-valid-name="탈퇴후재가입불가기간"/><span class="cRed">개월</span> 동안 탈퇴 후 재가입 불가합니다.</td>
-					</tr>
-					<tr>
-						<th>휴면회원선정기간(일)</th>
-						<td><input name="b11NumSetVal2" type="text" class="w50 aR" maxlength="3" data-valid-type="integer" data-valid-name="휴면회원선정기간"/><span class="cRed">일</span> 동안 사이트에 로그인 하지 않은 회원을 휴면회원으로 선정합니다.</td>
-					</tr>
-					<tr>
-						<th>휴면회원전환기간(일)</th>
-						<td><input name="b11NumSetVal3" type="text" class="w50 aR" maxlength="3" data-valid-type="integer" data-valid-name="휴면회원전환기간"/><span class="cRed">일</span> 동안 사이트에 로그인 하지 않은 회원을 휴면회원으로 전환합니다.</td>
-					</tr>
-					<tr>
-						<th>회원등급산정기간</th>
-						<td>직전월 이전 <input name="b11NumSetVal4" type="text" class="w50 aR" maxlength="3" data-valid-type="integer" data-valid-name="회원등급산정기간"/><span class="cRed">개월</span> 기간동안의 매출금액을 기준으로 월초에 산정합니다. <span class="infoTxt cBlue marL20"><i class="fa fa-info-circle" aria-hidden="true"></i>0으로 설정하면 회원별등급산정을 하지 않습니다.</span></td>
-					</tr>
-					<tr>
-						<th>무료배송비최소주문금액</th>
-						<td>최소주문금액이 <input name="b11NumSetVal5" type="text" class="w100 aR" maxlength="6" data-valid-type="integer" data-valid-name="무료배송비최소주문금액"/> 이상이면 배송비가 무료입니다. <span class="infoTxt cBlue marL20"><i class="fa fa-info-circle" aria-hidden="true"></i>이 값은 기본값이며 공급업체별로 다르게 설정할 수도 있습니다.</span></td>
-					</tr>
-				</tbody>
-			</table>
-
-			<h4>회원혜택안내(PC)</h4>
-			<button type="button" class="btn btn-success btn-ssm" onclick="fnSave('B12');">저장</button>
-			<button type="button" class="btn btn-info btn-ssm" onclick="fnOpenEnvsetPopup('B12', '회원혜택안내');">이력보기</button>
-			<table class="frmStyle" aria-describedby="회원혜택안내(PC)">
-				<colgroup>
-					<col style="width: 15%;"/>
-					<col style="width: 85%;"/>
-				</colgroup>
-				<tbody>
-					<tr>
-						<th>가입혜택안내배너(A)</th>
-						<td>
-							<div class="uFile w500">
-								<input type="file" id="b12StrSetVal1" name="b12StrSetVal1" class="uFileInput"/>
-								<label for="b12StrSetVal1" class="uFileLabel">가입혜택안내배너 선택</label>
-								<input type="hidden" name="b12StrSetVal1OrgFileNm"/>
-								<input type="hidden" name="b12StrSetVal1SysFileNm"/>
-							</div>
-							<a id="b12StrSetVal1FileDownload" href="#" style="display: none;" onclick="fnDownloadFile('b12StrSetVal1');"></a>
-						</td>
-					</tr>
-					<tr>
-						<th>가입혜택안내배너(B)</th>
-						<td>
-							<div class="uFile w500">
-								<input type="file" id="b12StrSetVal2" name="b12StrSetVal2" class="uFileInput"/>
-								<label for="b12StrSetVal2" class="uFileLabel">가입혜택안내배너 선택</label>
-								<input type="hidden" name="b12StrSetVal2OrgFileNm"/>
-								<input type="hidden" name="b12StrSetVal2SysFileNm"/>
-							</div>
-							<a id="b12StrSetVal2FileDownload" href="#" style="display: none;" onclick="fnDownloadFile('b12StrSetVal2');"></a>
-						</td>
-					</tr>
-					<tr>
-						<th>회원혜택안내배너</th>
-						<td>
-							<div class="uFile w500">
-								<input type="file" id="b12StrSetVal3" name="b12StrSetVal3" class="uFileInput"/>
-								<label for="b12StrSetVal3" class="uFileLabel">회원혜택안내배너 선택</label>
-								<input type="hidden" name="b12StrSetVal3OrgFileNm"/>
-								<input type="hidden" name="b12StrSetVal3SysFileNm"/>
-							</div>
-							<a id="b12StrSetVal3FileDownload" href="#" style="display: none;" onclick="fnDownloadFile('b12StrSetVal3');"></a>
-						</td>
-					</tr>
-					<tr>
-						<th>상품평혜택안내배너(상품상세)</th>
-						<td>
-							<div class="uFile w500">
-								<input type="file" id="b12StrSetVal4" name="b12StrSetVal4" class="uFileInput"/>
-								<label for="b12StrSetVal4" class="uFileLabel">상품평혜택안내배너 선택(상품상세페이지)</label>
-								<input type="hidden" name="b12StrSetVal4OrgFileNm"/>
-								<input type="hidden" name="b12StrSetVal4SysFileNm"/>
-							</div>
-							<a id="b12StrSetVal4FileDownload" href="#" style="display: none;" onclick="fnDownloadFile('b12StrSetVal4');"></a>
-						</td>
-					</tr>
-					<tr>
-						<th>상품평혜택안내배너(마이페이지)</th>
-						<td>
-							<div class="uFile w500">
-								<input type="file" id="b12StrSetVal5" name="b12StrSetVal5" class="uFileInput"/>
-								<label for="b12StrSetVal5" class="uFileLabel">상품평혜택안내배너 선택(마이페이지)</label>
-								<input type="hidden" name="b12StrSetVal5OrgFileNm"/>
-								<input type="hidden" name="b12StrSetVal5SysFileNm"/>
-							</div>
-							<a id="b12StrSetVal5FileDownload" href="#" style="display: none;" onclick="fnDownloadFile('b12StrSetVal5');"></a>
-						</td>
-					</tr>
-				</tbody>
-			</table>
-			<h4>회원혜택안내(MOBILE)</h4>
-			<button type="button" class="btn btn-success btn-ssm" onclick="fnSave('B16');">저장</button>
-			<button type="button" class="btn btn-info btn-ssm" onclick="fnOpenEnvsetPopup('B16', '회원혜택안내');">이력보기</button>
-			<table class="frmStyle" aria-describedby="회원혜택안내(MOBILE)">
-				<colgroup>
-					<col style="width: 15%;"/>
-					<col style="width: 85%;"/>
-				</colgroup>
-				<tbody>
-					<tr>
-						<th>가입혜택안내배너(A)</th>
-						<td>
-							<div class="uFile w500">
-								<input type="file" id="b16StrSetVal1" name="b16StrSetVal1" class="uFileInput"/>
-								<label for="b16StrSetVal1" class="uFileLabel">가입혜택안내배너 선택</label>
-								<input type="hidden" name="b16StrSetVal1OrgFileNm"/>
-								<input type="hidden" name="b16StrSetVal1SysFileNm"/>
-							</div>
-							<a id="b16StrSetVal1FileDownload" href="#" style="display: none;" onclick="fnDownloadFile('b16StrSetVal1');"></a>
-						</td>
-					</tr>
-					<tr>
-						<th>가입혜택안내배너(B)</th>
-						<td>
-							<div class="uFile w500">
-								<input type="file" id="b16StrSetVal2" name="b16StrSetVal2" class="uFileInput"/>
-								<label for="b16StrSetVal2" class="uFileLabel">가입혜택안내배너 선택</label>
-								<input type="hidden" name="b16StrSetVal2OrgFileNm"/>
-								<input type="hidden" name="b16StrSetVal2SysFileNm"/>
-							</div>
-							<a id="b16StrSetVal2FileDownload" href="#" style="display: none;" onclick="fnDownloadFile('b16StrSetVal2');"></a>
-						</td>
-					</tr>
-					<tr>
-						<th>회원혜택안내배너</th>
-						<td>
-							<div class="uFile w500">
-								<input type="file" id="b16StrSetVal3" name="b16StrSetVal3" class="uFileInput"/>
-								<label for="b16StrSetVal3" class="uFileLabel">회원혜택안내배너 선택</label>
-								<input type="hidden" name="b16StrSetVal3OrgFileNm"/>
-								<input type="hidden" name="b16StrSetVal3SysFileNm"/>
-							</div>
-							<a id="b16StrSetVal3FileDownload" href="#" style="display: none;" onclick="fnDownloadFile('b16StrSetVal3');"></a>
-						</td>
-					</tr>
-					<tr>
-						<th>상품평혜택안내배너</th>
-						<td>
-							<div class="uFile w500">
-								<input type="file" id="b16StrSetVal4" name="b16StrSetVal4" class="uFileInput"/>
-								<label for="b16StrSetVal4" class="uFileLabel">상품평혜택안내배너 선택(상품상세, 마이페이지)</label>
-								<input type="hidden" name="b16StrSetVal4OrgFileNm"/>
-								<input type="hidden" name="b16StrSetVal4SysFileNm"/>
-							</div>
-							<a id="b16StrSetVal4FileDownload" href="#" style="display: none;" onclick="fnDownloadFile('b16StrSetVal4');"></a>
-						</td>
-					</tr>
-				</tbody>
-			</table>
-
-			<h4>상품노출</h4>
-			<button type="button" class="btn btn-success btn-ssm" onclick="fnSave('B13');">저장</button>
-			<button type="button" class="btn btn-info btn-ssm" onclick="fnOpenEnvsetPopup('B13', '상품노출');">이력보기</button>
-			<table class="frmStyle" aria-describedby="상품노출">
-				<colgroup>
-					<col style="width: 15%;"/>
-					<col style="width: 85%;"/>
-				</colgroup>
-				<tbody>
-					<tr>
-						<th>상품평노출여부</th>
-						<td>
-							<label class="rdoBox"><input type="radio" name="b13StrSetVal1" value="Y" checked="checked"/>노출</label>
-							<label class="rdoBox"><input type="radio" name="b13StrSetVal1" value="N">미노출</label>
-							<span class="infoTxt cBlue"><i class="fa fa-info-circle" aria-hidden="true"></i>미노출로 설정 시 상품상세의 상품평 영역이 노출되지 않습니다.</span>
-						</td>
-					</tr>
-					<tr>
-						<th>품절상품노출여부</th>
-						<td>
-							<label class="rdoBox"><input type="radio" name="b13StrSetVal2" value="Y"/>노출</label>
-							<label class="rdoBox"><input type="radio" name="b13StrSetVal2" value="N" checked="checked">미노출</label>
-							<span class="infoTxt cBlue"><i class="fa fa-info-circle" aria-hidden="true"></i>품절된 상품을 사이트에 노출할지 말지를 설정합니다.</span>
-						</td>
-					</tr>
-					<tr>
-						<th>특가세일노출기준</th>
-						<td>
-							상품 썸네일 리스트의 가격은 할인율이 <input name="b13NumSetVal1" type="text" class="w20 aR" maxlength="3" data-valid-type="integer" data-valid-name=""/><span class="cRed">%</span> 이상일 경우 TAG가와 할인율 대신 <span class="infoTxt cBlue">'특가세일'</span>로 표기됩니다.
-						</td>
-					</tr>
-				</tbody>
-			</table>
-
-			<h4>상품보관</h4>
-			<button type="button" class="btn btn-success btn-ssm" onclick="fnSave('B17');">저장</button>
-			<button type="button" class="btn btn-info btn-ssm" onclick="fnOpenEnvsetPopup('B17', '상품보관');">이력보기</button>
-			<table class="frmStyle" aria-describedby="상품보관">
-				<colgroup>
-					<col style="width: 15%;"/>
-					<col style="width: 85%;"/>
-				</colgroup>
-				<tbody>
-					<tr>
-						<th>장바구니보관기간(일)</th>
-						<td>
-							장바구니 보관기간은 <input name="b17NumSetVal1" type="text" class="w20 aR" maxlength="3" data-valid-type="integer" data-valid-name="장바구니보관기간"/><span class="cRed">일</span> 입니다. 보관기간 경과 시 자동 삭제됩니다.
-							<span class="infoTxt cBlue"><i class="fa fa-info-circle marL20" aria-hidden="true"></i>0으로 설정하면 자동으로 삭제 처리를 하지 않습니다.</span>
-						</td>
-					</tr>
-					<tr>
-						<th>위시리스트보관기간(일)</th>
-						<td>
-							위시리스트 보관기간은 <input name="b17NumSetVal2" type="text" class="w20 aR" maxlength="3" data-valid-type="integer" data-valid-name="위시리스트보관기간"/><span class="cRed">일</span> 입니다. 보관기간 경과 시 자동 삭제됩니다.
-							<span class="infoTxt cBlue marL20"><i class="fa fa-info-circle" aria-hidden="true"></i>0으로 설정하면 자동으로 삭제 처리를 하지 않습니다.</span>
-						</td>
-					</tr>
-				</tbody>
-			</table>
-
-			<h4>품절안내</h4>
-			<button type="button" class="btn btn-success btn-ssm" onclick="fnSave('B14');">저장</button>
-			<button type="button" class="btn btn-info btn-ssm" onclick="fnOpenEnvsetPopup('B14', '품절안내');">이력보기</button>
-			<table class="frmStyle" aria-describedby="품절안내">
-				<colgroup>
-					<col style="width: 15%;"/>
-					<col style="width: 85%;"/>
-				</colgroup>
-				<tbody>
-					<tr>
-						<th>품절안내방법</th>
-						<td>
-							<label class="rdoBox"><input type="radio" name="b14StrSetVal1" value="A" checked="checked"/>발송</label>
-							<label class="rdoBox"><input type="radio" name="b14StrSetVal1" value="M">미발송</label>
-							<p>결제완료 후 <input name="b14NumSetVal1" type="text" class="w20 aR" maxlength="3" data-valid-type="integer" data-valid-name="품절안내메시지발송기간"/><span class="cRed">일</span> 동안 출고되지 않으면 품절안내 메시지를 발송합니다.</p>
-						</td>
-					</tr>
-				</tbody>
-			</table>
-
-			<h4>배송/구매확정</h4>
-			<button type="button" class="btn btn-success btn-ssm" onclick="fnSave('B15');">저장</button>
-			<button type="button" class="btn btn-info btn-ssm" onclick="fnOpenEnvsetPopup('B15', '배송/구매확정');">이력보기</button>
-			<table class="frmStyle" aria-describedby="배송/구매확정">
-				<colgroup>
-					<col style="width: 15%;"/>
-					<col style="width: 85%;"/>
-				</colgroup>
-				<tbody>
-					<tr>
-						<th>배송완료처리기간(일)</th>
-						<td>
-							주문상세상태가 배송중 이후 <input name="b15NumSetVal1" type="text" class="w20 aR" maxlength="3" data-valid-type="integer" data-valid-name="배송완료처리기간"/><span class="cRed">일</span> 경과한 기간동안 배송완료로 처리하지 않으면 자동으로 배송완료로 처리합니다.
-							<span class="infoTxt cBlue"><i class="fa fa-info-circle marL20" aria-hidden="true"></i>0으로 설정하면 자동으로 배송완료 처리를 하지 않습니다.</span>
-						</td>
-					</tr>
-					<tr>
-						<th>구매확정처리기간(일)</th>
-						<td>
-							주문상세상태가 배송완료 후 <input name="b15NumSetVal2" type="text" class="w20 aR" maxlength="3" data-valid-type="integer" data-valid-name="구매확정처리기간"/><span class="cRed">일</span> 경과한 기간동안 구매확정으로 처리를 하지 않으면 자동으로 구매확정으로 처리합니다.
-							<span class="infoTxt cBlue marL20"><i class="fa fa-info-circle" aria-hidden="true"></i>0으로 설정하면 자동으로 구매확정 처리를 하지 않습니다.</span>
-						</td>
-					</tr>
-					<tr>
-						<th>반품가능기간(일)</th>
-						<td>
-							주문상세상태가 배송완료 후 <input name="b15NumSetVal3" type="text" class="w20 aR" maxlength="3" data-valid-type="integer" data-valid-name="반품가능기간"/> <span class="cRed">일</span> 동안 반품요청할 수 있습니다.
-							<span class="infoTxt cBlue marL20"><i class="fa fa-info-circle" aria-hidden="true"></i>0으로 설정하면 언제든 반품요청을 할 수 있습니다.</span>
-						</td>
-					</tr>
-				</tbody>
-			</table>
-
-			<h4>모바일앱</h4>
-			<button type="button" class="btn btn-success btn-ssm" onclick="fnSave('M10');">저장</button>
-			<button type="button" class="btn btn-info btn-ssm" onclick="fnOpenEnvsetPopup('M10', '모바일앱');">이력보기</button>
-			<table class="frmStyle" aria-describedby="모바일앱">
-				<colgroup>
-					<col style="width: 15%;"/>
-					<col style="width: 85%;"/>
-				</colgroup>
-				<tbody>
-					<tr>
-						<th>AOS앱버전</th>
-						<td>
-							<input name="m10StrSetVal1" type="text" class="w100" maxlength="20" data-valid-name="AOS앱버전"/>
-						</td>
-					</tr>
-					<tr>
-						<th>IOS앱버전</th>
-						<td>
-							<input name="m10StrSetVal2" type="text" class="w100" maxlength="20" data-valid-name="IOS앱버전"/>
-						</td>
-					</tr>
-					<tr>
-						<th>스플래시이미지</th>
-						<td>
-							<div class="uFile w500">
-								<input type="file" id="m10StrSetVal3" name="m10StrSetVal3" class="uFileInput"/>
-								<label for="m10StrSetVal3" class="uFileLabel">스플래시 이미지 선택</label>
-								<input type="hidden" name="m10StrSetVal3OrgFileNm"/>
-								<input type="hidden" name="m10StrSetVal3SysFileNm"/>
-							</div>
-							<a id="m10StrSetVal3FileDownload" href="#" style="display: none;" onclick="fnDownloadFile('m10StrSetVal3');"></a>
-							<span class="infoTxt cBlue marL20"><i class="fa fa-info-circle" aria-hidden="true"></i>스플래시 이미지입니다</span>
-						</td>
-					</tr>
-				</tbody>
-			</table>
-			<div class="panelBtnB"></div>
-		</div>
-	</div>
-
-<script th:inline="javascript">
-/*<![CDATA[*/
-	// 조회
-	var fnSearch = function() {
-		var siteCd = $('select[name=siteCd]').val();
-		var actionUrl = '/system/envset/' + siteCd;
-
-		// 쇼핑몰Meta정보
-		$.getJSON(actionUrl + '/B10'
-				, function(result, status) {
-					if (status === 'success') {
-						if (!gagajf.isNull(result)) {
-							$('input[name=b10StrSetVal1]').val(result.strSetVal1);
-							$('input[name=b10StrSetVal2]').val(result.strSetVal2);
-							$('input[name=b10StrSetVal3]').val(result.strSetVal3);
-							
-							if (!gagajf.isNull(result.strSetVal4)) {
-								$('input[name=b10StrSetVal4SysFileNm]').val(result.strSetVal4);
-								$('#b10StrSetVal4FileDownload').html(result.strSetVal4);
-								$('#b10StrSetVal4FileDownload').show();
-							}
-							
-							$('input[name=b10StrSetVal5]').val(result.strSetVal5);
-							
-							if (!gagajf.isNull(result.strSetVal6)) {
-								$('input[name=b10StrSetVal6SysFileNm]').val(result.strSetVal6);
-								$('#b10StrSetVal6FileDownload').html(result.strSetVal6);
-								$('#b10StrSetVal6FileDownload').show();
-							}
-						}
-					}
-				});
-
-		// 기본설정
-		$.getJSON(actionUrl + '/B11'
-				, function(result, status) {
-					if (status === 'success') {
-						if (!gagajf.isNull(result)) {
-							$('input[name=b11NumSetVal1]').val(result.numSetVal1);
-							$('input[name=b11NumSetVal2]').val(result.numSetVal2);
-							$('input[name=b11NumSetVal3]').val(result.numSetVal3);
-							$('input[name=b11NumSetVal4]').val(result.numSetVal4);
-							$('input[name=b11NumSetVal5]').val(result.numSetVal5.addComma());
-						}
-					}
-				});
-
-		// 회원혜택안내
-		$.getJSON(actionUrl + '/B12'
-				, function(result, status) {
-					if (status === 'success') {
-						if (!gagajf.isNull(result.strSetVal1)) {
-							$('input[name=b12StrSetVal1SysFileNm]').val(result.strSetVal1);
-							$('#b12StrSetVal1FileDownload').html(result.strSetVal1);
-							$('#b12StrSetVal1FileDownload').show();
-						}
-
-						if (!gagajf.isNull(result.strSetVal2)) {
-							$('input[name=b12StrSetVal2SysFileNm]').val(result.strSetVal2);
-							$('#b12StrSetVal2FileDownload').html(result.strSetVal2);
-							$('#b12StrSetVal2FileDownload').show();
-						}
-
-						if (!gagajf.isNull(result.strSetVal3)) {
-							$('input[name=b12StrSetVal3SysFileNm]').val(result.strSetVal3);
-							$('#b12StrSetVal3FileDownload').html(result.strSetVal3);
-							$('#b12StrSetVal3FileDownload').show();
-						}
-
-						if (!gagajf.isNull(result.strSetVal4)) {
-							$('input[name=b12StrSetVal4SysFileNm]').val(result.strSetVal4);
-							$('#b12StrSetVal4FileDownload').html(result.strSetVal4);
-							$('#b12StrSetVal4FileDownload').show();
-						}
-
-						if (!gagajf.isNull(result.strSetVal5)) {
-							$('input[name=b12StrSetVal5SysFileNm]').val(result.strSetVal5);
-							$('#b12StrSetVal5FileDownload').html(result.strSetVal5);
-							$('#b12StrSetVal5FileDownload').show();
-						}
-					}
-				});
-
-		// 상품노출
-		$.getJSON(actionUrl + '/B13'
-				, function(result, status) {
-					if (status === 'success') {
-						if (!gagajf.isNull(result)) {
-							$("input:radio[name=b13StrSetVal1]").parents('td').find('label').removeClass('checked');
-							if (result.strSetVal1 == 'Y') {
-								$("input:radio[name=b13StrSetVal1]").eq(0).prop('checked', true);
-								$("input:radio[name=b13StrSetVal1]").eq(0).parent().addClass('checked');
-							} else {
-								$("input:radio[name=b13StrSetVal1]").eq(1).prop('checked', true);
-								$("input:radio[name=b13StrSetVal1]").eq(1).parent().addClass('checked');
-							}
-
-							$("input:radio[name=b13StrSetVal2]").parents('td').find('label').removeClass('checked');
-							if (result.strSetVal2 == 'Y') {
-								$("input:radio[name=b13StrSetVal2]").eq(0).prop('checked', true);
-								$("input:radio[name=b13StrSetVal2]").eq(0).parent().addClass('checked');
-							} else {
-								$("input:radio[name=b13StrSetVal2]").eq(1).prop('checked', true);
-								$("input:radio[name=b13StrSetVal2]").eq(1).parent().addClass('checked');
-							}
-							
-							$('input[name=b13NumSetVal1]').val(result.numSetVal1);
-						}
-					}
-				});
-
-		// 상품보관
-		$.getJSON(actionUrl + '/B17'
-				, function(result, status) {
-					if (status === 'success') {
-						if (!gagajf.isNull(result)) {
-							$('input[name=b17NumSetVal1]').val(result.numSetVal1);
-							$('input[name=b17NumSetVal2]').val(result.numSetVal2);
-						}
-					}
-				});
-
-		// 품절안내
-		$.getJSON(actionUrl + '/B14'
-				, function(result, status) {
-					if (status === 'success') {
-						if (!gagajf.isNull(result)) {
-							$("input:radio[name=b14StrSetVal1]").parents('td').find('label').removeClass('checked');
-							if (result.strSetVal1 == 'A') {
-								$("input:radio[name=b14StrSetVal1]").eq(0).prop('checked', true);
-								$("input:radio[name=b14StrSetVal1]").eq(0).parent().addClass('checked');
-							} else if (result.strSetVal1 == 'M') {
-								$("input:radio[name=b14StrSetVal1]").eq(1).prop('checked', true);
-								$("input:radio[name=b14StrSetVal1]").eq(1).parent().addClass('checked');
-							}
-
-							$('input[name=b14NumSetVal1]').val(result.numSetVal1);
-						}
-					}
-				});
-
-		// 배송/구매확정
-		$.getJSON(actionUrl + '/B15'
-				, function(result, status) {
-					if (status === 'success') {
-						if (!gagajf.isNull(result)) {
-							$('input[name=b15NumSetVal1]').val(result.numSetVal1);
-							$('input[name=b15NumSetVal2]').val(result.numSetVal2);
-							$('input[name=b15NumSetVal3]').val(result.numSetVal3);
-						}
-					}
-				});
-
-		// 회원혜택안내(MOBILE)
-		$.getJSON(actionUrl + '/B16'
-				, function(result, status) {
-					if (status === 'success') {
-						if (!gagajf.isNull(result.strSetVal1)) {
-							$('input[name=b16StrSetVal1SysFileNm]').val(result.strSetVal1);
-							$('#b16StrSetVal1FileDownload').html(result.strSetVal1);
-							$('#b16StrSetVal1FileDownload').show();
-						}
-
-						if (!gagajf.isNull(result.strSetVal2)) {
-							$('input[name=b16StrSetVal2SysFileNm]').val(result.strSetVal2);
-							$('#b16StrSetVal2FileDownload').html(result.strSetVal2);
-							$('#b16StrSetVal2FileDownload').show();
-						}
-
-						if (!gagajf.isNull(result.strSetVal3)) {
-							$('input[name=b16StrSetVal3SysFileNm]').val(result.strSetVal3);
-							$('#b16StrSetVal3FileDownload').html(result.strSetVal3);
-							$('#b16StrSetVal3FileDownload').show();
-						}
-
-						if (!gagajf.isNull(result.strSetVal4)) {
-							$('input[name=b16StrSetVal4SysFileNm]').val(result.strSetVal4);
-							$('#b16StrSetVal4FileDownload').html(result.strSetVal4);
-							$('#b16StrSetVal4FileDownload').show();
-						}
-					}
-				});
-
-		// 모바일앱
-		$.getJSON(actionUrl + '/M10'
-				, function(result, status) {
-					if (status === 'success') {
-						if (!gagajf.isNull(result)) {
-							$('input[name=m10StrSetVal1]').val(result.strSetVal1);
-							$('input[name=m10StrSetVal2]').val(result.strSetVal2);
-						}
-						
-						if (!gagajf.isNull(result.strSetVal3)) {
-							$('input[name=m10StrSetVal3SysFileNm]').val(result.strSetVal3);
-							$('#m10StrSetVal3FileDownload').html(result.strSetVal3);
-							$('#m10StrSetVal3FileDownload').show();
-						}
-					}
-				});
-	}
-
-	// 파일첨부 선택 시
-	$('#b10StrSetVal4').on('change', function() { fnChooseFile(this); });
-	$('#b10StrSetVal6').on('change', function() { fnChooseFile(this); });
-	$('#b12StrSetVal1').on('change', function() { fnChooseFile(this); });
-	$('#b12StrSetVal2').on('change', function() { fnChooseFile(this); });
-	$('#b12StrSetVal3').on('change', function() { fnChooseFile(this); });
-	$('#b12StrSetVal4').on('change', function() { fnChooseFile(this); });
-	$('#b12StrSetVal5').on('change', function() { fnChooseFile(this); });
-	$('#b16StrSetVal1').on('change', function() { fnChooseFile(this); });
-	$('#b16StrSetVal2').on('change', function() { fnChooseFile(this); });
-	$('#b16StrSetVal3').on('change', function() { fnChooseFile(this); });
-	$('#b16StrSetVal4').on('change', function() { fnChooseFile(this); });
-	$('#m10StrSetVal3').on('change', function() { fnChooseFile(this); });
-
-	var fnChooseFile = function(obj) {
-		// multiple 속성이 있으면 files에는 다수의 객체가 할당됨
-		var file = obj.files[0];
-
-		// 파일 업로드
-		gagajf.ajaxFileUpload('/common/file/upload?subDir=/envset'
-				, file
-				, function(result) {
-					// 업로드한 파일명 설정
-					$('input[name=' + obj.name + 'OrgFileNm]').val(result.oldFileName);
-					$('input[name=' + obj.name + 'SysFileNm]').val(result.newFileName);
-				}
-		);
-	}
-
-	// 파일다운로드
-	var fnDownloadFile = function(id) {
-		$('#' + id + 'FileDownload').attr({
-			href : _uploadDefaultUrl + '/envset/' + $('input[name=' + id + 'SysFileNm]').val(),
-			target: '_blank'
-		}).get(0).click();
-	}
-
-	// 저장 처리
-	var fnSave = function(envsetType) {
-		var params = new Object();
-		params.siteCd = $('select[name=siteCd]').val();
-		params.envsetType = envsetType;
-
-		if (envsetType == 'B10') { // 쇼핑몰Meta정보
-			params.strSetVal1 = $('input[name=b10StrSetVal1]').val();
-			params.strSetVal2 = $('input[name=b10StrSetVal2]').val();
-			params.strSetVal3 = $('input[name=b10StrSetVal3]').val();
-			params.strSetVal4 = $('input[name=b10StrSetVal4SysFileNm]').val();
-			params.strSetVal5 = $('input[name=b10StrSetVal5]').val();
-			params.strSetVal6 = $('input[name=b10StrSetVal6SysFileNm]').val();
-		} else if (envsetType == 'B11') { // 기본설정
-			params.numSetVal1 = $('input[name=b11NumSetVal1]').val();
-			params.numSetVal2 = $('input[name=b11NumSetVal2]').val();
-			params.numSetVal3 = $('input[name=b11NumSetVal3]').val();
-			params.numSetVal4 = $('input[name=b11NumSetVal4]').val();
-			params.numSetVal5 = $('input[name=b11NumSetVal5]').val().removeComma();
-		} else if (envsetType == 'B12') { // 회원혜택안내
-			params.strSetVal1 = $('input[name=b12StrSetVal1SysFileNm]').val();
-			params.strSetVal2 = $('input[name=b12StrSetVal2SysFileNm]').val();
-			params.strSetVal3 = $('input[name=b12StrSetVal3SysFileNm]').val();
-			params.strSetVal4 = $('input[name=b12StrSetVal4SysFileNm]').val();
-			params.strSetVal5 = $('input[name=b12StrSetVal5SysFileNm]').val();
-		} else if (envsetType == 'B13') { // 상품노출
-			params.strSetVal1 = $('input:radio[name=b13StrSetVal1]:checked').val();
-			params.strSetVal2 = $('input:radio[name=b13StrSetVal2]:checked').val();
-			params.numSetVal1 = $('input[name=b13NumSetVal1]').val();
-		} else if (envsetType == 'B17') { // 상품보관
-			params.numSetVal1 = $('input[name=b17NumSetVal1]').val();
-			params.numSetVal2 = $('input[name=b17NumSetVal2]').val();
-		} else if (envsetType == 'B14') { // 품절안내
-			params.strSetVal1 = $('input:radio[name=b14StrSetVal1]:checked').val();
-			params.numSetVal1 = $('input[name=b14NumSetVal1]').val();
-		} else if (envsetType == 'B15') { // 배송/구매확정
-			params.numSetVal1 = $('input[name=b15NumSetVal1]').val();
-			params.numSetVal2 = $('input[name=b15NumSetVal2]').val();
-			params.numSetVal3 = $('input[name=b15NumSetVal3]').val();
-		} else if (envsetType == 'B16') { // 회원혜택안내(MOBILE)
-			params.strSetVal1 = $('input[name=b16StrSetVal1SysFileNm]').val();
-			params.strSetVal2 = $('input[name=b16StrSetVal2SysFileNm]').val();
-			params.strSetVal3 = $('input[name=b16StrSetVal3SysFileNm]').val();
-			params.strSetVal4 = $('input[name=b16StrSetVal4SysFileNm]').val();
-		} else if (envsetType == 'M10') { // 모바일앱
-			params.strSetVal1 = $('input[name=m10StrSetVal1]').val();
-			params.strSetVal2 = $('input[name=m10StrSetVal2]').val();
-			params.strSetVal3 = $('input[name=m10StrSetVal3SysFileNm]').val();
-		}
-
-		var jsonData = JSON.stringify(params);
-		gagajf.ajaxJsonSubmit('/system/envset/create', jsonData);
-	}
-
-	// 환경설정 이력보기 팝업
-	var fnOpenEnvsetPopup = function(envsetType, envsetTypeNm) {
-		var actionUrl = '/system/envset/history/form'
-				+ '?siteCd=' + $('select[name=siteCd]').val()
-				+ '&envsetType=' + envsetType
-				+ '&envsetTypeNm=' + encodeURIComponent(envsetTypeNm);
-		cfnOpenModalPopup(actionUrl, 'popupEnvset');
-	}
-
-	$(document).ready(function() {
-		fnSearch();
-		uifnFitGrid();
-	});
-/*]]>*/
-</script>
-</html>

+ 0 - 141
style24.scm/src/main/webapp/WEB-INF/views/system/BizdayForm.html

@@ -1,141 +0,0 @@
-<!DOCTYPE html>
-<html lang="ko"
-	xmlns:th="http://www.thymeleaf.org">
-<!--
- *******************************************************************************
- * @source  : BizdayForm.html
- * @desc    : 영업일관리 Page
- *============================================================================
- * SISUN
- * Copyright(C) 2019 TSIT, All rights reserved.
- *============================================================================
- * VER  DATE         AUTHOR      DESCRIPTION
- * ===  ===========  ==========  =============================================
- * 1.0  2019.12.13   jaewonHo   최초 작성
- *******************************************************************************
- -->
- <form id="calendarForm" name="calendarForm">
- 	<input type="hidden" name="startDt" id="startDt"/>
-	<input type="hidden" name="endDt" id="endDt"/>
-	<input type="hidden" name="bizday" id="bizDay"/>
-	<div id="main-wrapper">
-		<div id="main">
-			<div class="main-title"></div>
-			<div class="panelStyle2">
-				<ul class="notice">
-					<li><strong class="cBlue">영업일 : </strong>휴일을 Click 하시면 영업일로 변경 가능 합니다.</li>
-					<li><strong class="cRed">휴무일 : </strong>영업일을 Click 하시면 휴무일로 변경 가능 합니다.</li>
-				</ul>
-				<div id="calendar" style="margin: 5px;"></div>
-			</div>
-		</div>
-	</div>
-</form>
-
-<script class="cssdesk" src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.11.0/moment.min.js" type="text/javascript"></script>
-<script src="/ux/js/fullcalendar-4.2.0.js"></script>
-<script th:inline="javascript">
-/*<![CDATA[*/
-
-	$(document).ready(function() {
-		fnstartCalendar();
-		uifnFitGrid();
-	})
-
-	var fnstartCalendar = function() {
-		var calendarEl = document.getElementById('calendar');
-		calendar = new FullCalendar.Calendar(calendarEl, {
-			plugins: [ 'interaction', 'dayGrid' ],
-
-			locale: 'ko', //한글화
-			timeZone: 'local',
-
-			selectable: true,
-			editable: false,
-			eventLimit: true,
-
-			select: function(arg) {
-				if ((new Date(arg.end)).format('YYYYMMDD') - (new Date(arg.start)).format('YYYYMMDD') > 1 ) return;
-				var title ='휴일';
-				
-				mcxDialog.confirm("휴일로 변경하시겠습니까?", {
-					cancelBtnText: "취소",
-					sureBtnText: "확인",
-					sureBtnClick: function() {
-						fnUpdateDay('Holiday' , arg);
-					}
-				});
-				calendar.unselect();
-			},
-
-			//영업일로 변경 -----
-			eventClick: function(arg) {
-				mcxDialog.confirm("영업일로 변경하시겠습니까?", {
-					cancelBtnText: "취소",
-					sureBtnText: "확인",
-					sureBtnClick: function() {
-						fnUpdateDay('Bizday' , arg);
-					}
-				});
-			},
-
-			events: function(info, callback){
-				var dt = setViewDate(info);
-				$('#calendarForm input[name=startDt]').val(dt[0]);
-				$('#calendarForm input[name=endDt]').val(dt[1]);
-				$.get('/system/bizday/list' + '?' + $('#calendarForm').serialize()
-				, function(data) {
-					var events = [];
-					for(var i = 0 ; i < data.length ; i++ ) {
-						events.push( {
-							title : data[i].restdayDesc,
-							start : data[i].bizday } );
-					}
-					callback(events);
-				});
-			}
-		});
-		calendar.render();
-	}
-
-	//해당월 시작일, 마지막일설정
-	var setViewDate = function(date) {
-		var dt = [];
-		dt[0] = (new Date(date.startStr)).format('YYYYMMDD');
-		dt[1] = (new Date(date.endStr)).format('YYYYMMDD');
-		return dt;
-	}
-	
-	// 휴일,영업일 업데이트(저장)
-	var fnUpdateDay = function(day ,arg) {
-		var formId = '#calendarForm';
-		var start="";
-		var end = "";
-		$('#calendarForm input[name=bizDay]').val("");
-		if( day == 'Holiday' ) {
-			bizday = (new Date(arg.start)).format('YYYYMMDD');
-			$('#calendarForm input[name=bizday]').val(bizday);
-			gagajf.ajaxFormSubmit('system/bizday/save', formId, fnSaveCallback);
-				calendar.addEvent({
-					title: '휴일',
-					start: arg.start,
-					end: arg.end,
-					allDay: arg.allDay
-				});
-		}
-		else {
-			bizday = (new Date(arg.event.start)).format('YYYYMMDD');
-			$('#calendarForm input[name=bizday]').val(bizday);
-			gagajf.ajaxFormSubmit('system/bizday/save', formId, fnSaveCallback);
-			arg.event.remove();
-		}
-	}
-
-	// 저장 후 콜백
-	fnSaveCallback = function() {
-	}
-	
-/*]]>*/
-</script>
-
-</html>

+ 0 - 206
style24.scm/src/main/webapp/WEB-INF/views/system/ClauseDetailForm.html

@@ -1,206 +0,0 @@
-<!DOCTYPE html>
-<html lang="ko"
-	xmlns:th="http://www.thymeleaf.org">
-<!--
- *******************************************************************************
- * @source  : ClauseDetailForm.html
- * @desc    :  약관관리상세 Page
- *=============================================================
- * SISUN
- * Copyright(C) 2019 TSIT, All rights reserved.
- *=============================================================
- * VER  DATE         AUTHOR      DESCRIPTION
- * ===  ===========  ==========  ==================================
- * 1.0  2020.03.09   Daehyoung     최초 작성
- *******************************************************************************
- -->
-	<ul class="popup modal" id="popupClauseDetail" data-width="1200" data-height="800">
-		<li class="mdPopTitle">
-			<strong>약관상세</strong>
- 			<button type="button" id="closeBtn" class="close" onclick="uifnPopClose('popupClauseDetail')"><i class="fa fa-times" aria-hidden="true"></i></button>
-		</li>
-		<li class="mdPopContent">
-			<form id="clauseDetailForm" name="clauseDetailForm" action="#" >
-				<div class="cardArea" style="height: 620px;">
-					<table class="frmStyle" aria-describedby="상세">
-					<colgroup>
-						<col style="width:15%;"/>
-						<col style="width:25%;"/>
-						<col style="width:15%;"/>
-						<col style="width:45%;"/>
-					</colgroup>
-					<tbody>
-						<tr>
-							<th>약관일련번호</th>
-							<td>
-								<input type="text" name="clauseSq" id="clauseSq" maxlength="20" readonly="readonly"/>
-							</td>
-							<th>사이트</th>
-							<td>
-								<select name="siteCd" id="siteCd">
-									<option th:if="${siteList}" th:each="oneData, status : ${siteList}" th:value="${oneData.cd}" th:text="|[${oneData.cd}] ${oneData.cdNm}|"></option>
-								</select>
-							</td>
-						</tr>
-						<tr>
-							<th>약관유형</th>
-							<td>
-								<select name="clauseType" id="clauseType">
-									<option th:if="${clauseTypeList}" th:each="oneData, status : ${clauseTypeList}" th:value="${oneData.cd}" th:text="|[${oneData.cd}] ${oneData.cdNm}|"></option>
-								</select>
-							</td>
-							<th>표시여부</th>
-							<td>
-								<label><input type="checkbox" name="chkYn" value="Y"/>표시</label>
-								<span class="cBlue" style="font-size:11px;"><i class="fa fa-info-circle" aria-hidden="true"></i> 표시여부를 체크 할 경우, 현재  약관으로 노출됩니다.</span>
-								<input type="hidden" name="dispYn" id="dispYn"/>
-							</td>
-						</tr>
-						<tr id="dateTableRow">
-							<th>등록일시</th>
-							<td>
-								<input type="text" class="" name="regDt" id="regDt" placeholder="" maxlength="20" readonly="readonly"/>
-							</td>
-							<th>수정일시</th>
-							<td>
-								<input type="text" class="" name="updDt" id="updDt" placeholder="" maxlength="20" readonly="readonly"/>
-							</td>
-						</tr>
-						<tr>
-							<th>약관 제목<i class="star" aria-hidden="true"></i></th>
-							<td colspan="3">
-								<input type="text" name="clauseTitle" id="clauseTitle" placeholder="" maxlength="20"/>
-							</td>
-						</tr>
-						<tr>
-							<th>약관 내용<i class="star" aria-hidden="true"></i></th>
-							<td colspan="3">
-								<textarea class="textareaR4" name="clauseContent" id="clauseContent" style="height:350px;"></textarea>
-							</td>
-						</tr>
-						</tbody>
-					</table>
-				</div>
-			</form>
-		</li>
-		<li class="mdPopBtnB btnRight">
-			<button type="button" class="btn btn-success btn-lg" id="btnSave">저장</button>
-		</li>
-	</ul>
-	
-<script type="text/javascript" src="/smartEditor/js/HuskyEZCreator.js?v=2019122801" charset="utf-8"></script>
-<script type="text/javascript" src="/ux/plugins/gaga/gaga.smarteditor.js?v=2019122801"></script>
-<script th:inline="javascript">
-/*<![CDATA[*/
-	
-	var mode = [[${mode}]];	
-	var clauseInfo;
-	
-	$('#btnSave').on('click', function() {
-		if(mode == "N"){
-			fnRegist();
-		} else {
-			fnUpdate();
-		}
-	});
-	
-	// 약관 등록
-	var fnRegist = function() {
-		gagaSe.getContents('clauseContent');
-		
-		var clauseTitle = $('#clauseTitle').val();
-		var clauseContent = $('#clauseContent').val();
-		
-		if (gagajf.isNull(clauseTitle)) {
-			mcxDialog.alert("약관 제목을 입력해주세요.");
-			return;
-		}
-		if (gagajf.isNull(clauseContent)) {
-			mcxDialog.alert("약관 내용을 입력해주세요.");
-			return;
-		}
-		$('#clauseDetailForm input[name=dispYn]').val($('#clauseDetailForm input:checkbox[name=chkYn]').is(":checked") ? 'Y' : 'N');
-		
-		mcxDialog.confirm("등록하시겠습니까?", {
-			cancelBtnText: "취소",
-			sureBtnText: "확인",
-			sureBtnClick: function() {
-				var jsonData = JSON.stringify($('#clauseDetailForm').serializeObject());
-				gagajf.ajaxJsonSubmit('/system/clause/detail/create', jsonData, saveCallback);
-			}
-		});
-	}
-	
-	// 약관 수정
-	var fnUpdate = function() {
-		gagaSe.getContents('clauseContent');
-		
-		var clauseTitle = $('#clauseTitle').val();
-		var clauseContent = $('#clauseContent').val();
-		
-		if (gagajf.isNull(clauseTitle)) {
-			mcxDialog.alert("약관 제목을 입력해주세요.");
-			return;
-		}
-		if (gagajf.isNull(clauseContent)) {
-			mcxDialog.alert("약관 내용을 입력해주세요.");
-			return;
-		}
-		$('#clauseDetailForm input[name=dispYn]').val($('#clauseDetailForm input:checkbox[name=chkYn]').is(":checked") ? 'Y' : 'N');
-		
-		mcxDialog.confirm("수정하시겠습니까?", {
-			cancelBtnText: "취소",
-			sureBtnText: "확인",
-			sureBtnClick: function() {
-				var jsonData = JSON.stringify($('#clauseDetailForm').serializeObject());
-				gagajf.ajaxJsonSubmit('/system/clause/detail/update', jsonData, saveCallback);
-			}
-		});
-	}
-	
-	// 저장 콜백
-	var saveCallback = function() {
-		$('#closeBtn').trigger('click');
-		fnSearch();
-	}	
-	
-	var seOptions = gagaSe.getEditorOptions();
-	// 초기세팅
-	var fnInit = function(mode){
-		gagaSe.createSmartEditor(seOptions, 'clauseContent');
-		if(mode == "N"){
-			// 등록
-			$('#clauseSq').val('자동생성');
-			$('#dateTableRow').remove();
-			
-		} else {
-			// 수정
-			clauseInfo = [[${admClause}]];
-			
-			$('#clauseSq').val(clauseInfo.clauseSq);
-			$('#siteCd').val(clauseInfo.siteCd);
-			$('#clauseType').val(clauseInfo.clauseType);
-			
-			$('#regDt').val(clauseInfo.regDt.toDate("YYYYMMDDHHmmss").format("YYYY-MM-DD HH:mm:ss"));
-			$('#updDt').val(clauseInfo.updDt.toDate("YYYYMMDDHHmmss").format("YYYY-MM-DD HH:mm:ss"));
-			
-			$('#clauseTitle').val(clauseInfo.clauseTitle);
-			
-			if(clauseInfo.dispYn == 'Y'){
-				$('input[type=checkbox]').attr('checked', true);
-			} else {
-				
-			}
-			gagaSe.setContents('clauseContent', clauseInfo.clauseContent); //공지내용
-			
-		}
-	}
-	
-	$(document).ready(function() {
-		fnInit(mode);
-	});
-	
-/*]]>*/
-</script>
-
-</html>

+ 0 - 147
style24.scm/src/main/webapp/WEB-INF/views/system/ClauseListForm.html

@@ -1,147 +0,0 @@
-<!DOCTYPE html>
-<html lang="ko"
-	xmlns:th="http://www.thymeleaf.org">
-<!--
- *******************************************************************************
- * @source  : ClauseListForm.html
- * @desc    : 약관관리 화면 Page
- *=============================================================
- * Wivismall
- * Copyright(C) 2019 TSIT, All rights reserved.
- *=============================================================
- * VER  DATE         AUTHOR      DESCRIPTION
- * ===  ===========  ==========  ==================================
- * 1.0  2020.03.09  Daehyoung   최초 작성
- *******************************************************************************
- -->
-	<div id="main">
-		<div class="main-title">
-		</div>
-
-		<div class="panelStyle2">
-			<form id="searchForm" name="searchForm" action="#" th:action="@{'/system/clause/list'}" onsubmit="$('#btnSearch').trigger('click'); return false;">
-				<table class="frmStyle" aria-describedby="검색조건">
-					<colgroup>
-						<col style="width:15%;"/>
-						<col style="width:35%;"/>
-						<col style="width:15%;"/>
-						<col style="width:35%;"/>
-					</colgroup>
-					<tbody>
-						<tr>
-							<th class="dashR">사이트</th>
-							<td class="dashR">
-								<select name="siteCd">
-									<option th:if="${siteList}" th:each="oneData, status : ${siteList}" th:value="${oneData.cd}" th:text="|[${oneData.cd}] ${oneData.cdNm}|"></option>
-								</select>
-							</td>
-							<th class="dashR">약관유형</th>
-							<td class="dashR">
-								<select name="clauseType">
-									<option value="">전체</option>
-									<option th:if="${clauseTypeList}" th:each="oneData, status : ${clauseTypeList}" th:value="${oneData.cd}" th:text="|[${oneData.cd}] ${oneData.cdNm}|"></option>
-								</select>
-							</td>
-						</tr>
-					</tbody>
-				</table>
-				<div class="panelBtnB">
-					<input type="button" value="초기화" class="btn btn-gray btn-lg" id="btnReset" onclick="$('#searchForm')[0].reset();"/>
-					<input type="button" value="조회" class="btn btn-base btn-lg" id="btnSearch" onclick="fnSearch();"/>
-				</div>
-			</form>
-		</div>
-		<!-- 리스트 영역 -->
-		<div class="panelStyle2">
-			<ul class="lrStyle">
-				<li>
-					<span class="btnLeft">
-						<p class="infoTxt cBlue"><i class="fa fa-info-circle" aria-hidden="true"></i>표시여부를 체크하시면 약관유형별 가장 최근 약관으로 프론트에 노출됩니다.</p>
-					</span>
-				</li>
-				<li class="aR">
-					<button type="button" id="btnRegistForm" class="btn btn-success btn-lg btnRight" onclick="btnRegistForm();">등록</button>
-				</li>
-			</ul>
-			<div class="panelContent" style="overflow: hidden;">
-				<div id="gridList" style="width:100%;" class="ag-theme-balham"></div>
-			</div>
-		</div>
-		
-	</div>
-
-<script th:inline="javascript">
-/*<![CDATA[*/
-	// 사이트목록
-	var siteList = gagajf.convertToArray([[${siteList}]]);
-	var clauseTypeList = gagajf.convertToArray([[${clauseTypeList}]]);
-	
-	var columnDefs = [
-		{headerName: "약관번호",		field:'clauseSq',		width:80,	cellClass: 'text-center'},
-		{
-			headerName: "사이트",		field:'siteCd',			width:150,	cellClass: 'text-center', 
-			valueFormatter: function (params) { return gagaAgGrid.lookupValue(siteList, params.value); }
-		},
-		{
-			headerName: "약관유형",	field:'clauseType',	width:200,	cellClass: 'text-center',
-			valueFormatter: function (params) { return gagaAgGrid.lookupValue(clauseTypeList, params.value); }
-		},
-		{
-			headerName: "약관제목",		field:'clauseTitle',	width:300,	cellClass: 'text-center',
-			cellRenderer: function(params) { return '<a href="javascript:cfnClauseDetailPopup('+params.data.clauseSq+')">' + params.value + '</a>'; }
-		},
-		{headerName: "표시여부",		field:'dispYn',			width:80,	cellClass: 'text-center'},
-		{headerName: "등록자",		field:'regId',			width:120,	cellClass: 'text-center'},
-		{headerName: "등록일시",		field:'regDt',			width:150,	cellClass: 'text-center',
-			cellRenderer: function(params) {
-				return !gagajf.isNull(params.value) ? params.value.toDate("YYYYMMDDHHmmss").format("YYYY-MM-DD HH:mm:ss") : '';
-			}	
-		},
-		{headerName: "수정자",		field:'updId',			width:120,	cellClass: 'text-center'},
-		{headerName: "수정일시",		field:'updDt',			width:150,	cellClass: 'text-center',
-			cellRenderer: function(params) {
-				return !gagajf.isNull(params.value) ? params.value.toDate("YYYYMMDDHHmmss").format("YYYY-MM-DD HH:mm:ss") : '';
-			}	
-		}
-	];
-
-	var gridOptions = gagaAgGrid.getGridOptions(columnDefs);
-
-	// 셀 클릭 이벤트
-	gridOptions.onCellClicked = function(event) {
-		if (event.colDef.field != 'custNm')
-			return;
-		fnCustDetailPopup(event.data);
-	}
-
-	// 검색
-	var fnSearch = function() {
-		var formId = '#searchForm';
-		gagaAgGrid.fetch($(formId).prop('action'), gridOptions, formId);
-	}
-	// 약관등록팝업
-	var btnRegistForm = function(){
-		var actionUrl = '/system/clause/detail/form/N/null';
-		cfnOpenModalPopup(actionUrl, 'popupClauseDetail');
-	}
-	// 약관상세팝업
-	var cfnClauseDetailPopup = function(clauseSq){
-		var actionUrl = '/system/clause/detail/form/U/' + clauseSq;
-		cfnOpenModalPopup(actionUrl, 'popupClauseDetail');
-	}
-	
-	$(document).ready(function() {
-		cfnCreateCalendar('#terms', 'regStdt', 'regEddt', false);
-		
-		gagaAgGrid.createGrid('gridList', gridOptions);
-		
-		// Grid 높이 자동 조정
-		uifnFitGrid('auto');
-		
-		fnSearch();
-	});
-
-/*]]>*/
-</script>
-
-</html>

+ 0 - 252
style24.scm/src/main/webapp/WEB-INF/views/system/CommoncodeForm.html

@@ -1,252 +0,0 @@
-<!DOCTYPE html>
-<html lang="ko"
-	xmlns:th="http://www.thymeleaf.org">
-<!--
- *******************************************************************************
- * @source  : CommoncodeForm.html
- * @desc    : 공통코드관리 Page
- *============================================================================
- * STYLE24
- * Copyright(C) 2020 TSIT, All rights reserved.
- *============================================================================
- * VER  DATE         AUTHOR      DESCRIPTION
- * ===  ===========  ==========  =============================================
- * 1.0  2020.10.08   gagamel     최초 작성
- *******************************************************************************
- -->
-	<div id="main">
-		<!-- 메인타이틀 영역 -->
-		<div class="main-title">
-		</div>
-		<!-- //메인타이틀 영역 -->
-		
-		<!-- 메뉴 설명 -->
-		<div class="infoBox menu-desc">
-		</div>
-		<!-- //메뉴 설명 -->
-		
-		<!-- 검색조건 영역 -->
-		<div class="panelStyle">
-			<!-- Search -->
-			<form id="searchForm" name="searchForm" action="#" th:action="@{'/system/commoncode/list'}" onsubmit="$('#btnSearch').trigger('click'); return false;">
-				<input type="hidden" name="cdGb" value="ROOT"/>
-				<ul class="panelBar">
-					<li class="center">
-						<button type="button" class="btn btn-base btn-lg" id="btnSearch">조회</button>
-					</li>
-				</ul>
-			</form>
-		</div>
-		<!-- //검색조건 영역 -->
-		
-		<div class="panelStyle">
-			<!-- 다중 TABLE 배치 -->
-			<ul class="division">
-				<li style="width: 20%">
-					<div class="panelBar">
-						<h4>코드구분</h4>
-					</div>
-					<div id="gridList1" style="width: 100%; height: 570px" class="ag-theme-balham"></div>
-				</li>
-				<li style="width: 50%">
-					<div class="panelBar">
-						<h4>상세코드</h4>
-					</div>
-					<div id="gridList2" style="width: 100%; height: 570px" class="ag-theme-balham"></div>
-				</li>
-				<li style="width: 30%">
-					<div class="panelBar">
-						<h4>코드정보</h4>
-					</div>
-					<form id="detailForm" name="detailForm" action="#" th:action="@{'/system/commoncode/save'}">
-						<table class="frmStyle" aria-describedby="등록/상세">
-							<colgroup>
-								<col style="width:30%;"/>
-								<col/>
-							</colgroup>
-							<tr>
-								<th>코드구분<i class="required" title="필수" aria-hidden="true"></i></th>
-								<td>
-									<input type="text" name="cdGb" class="w200" placeholder="" maxlength="4" required="required" data-valid-type="alphaNumeric" data-valid-name="코드구분" onkeyup="$(this).val($(this).val().toUpperCase());"/>
-								</td>
-							</tr>
-							<tr>
-								<th>코드<i class="required" title="필수" aria-hidden="true"></i></th>
-								<td>
-									<input type="text" name="cd" class="w200" placeholder="" maxlength="20" required="required" data-valid-name="코드"/>
-								</td>
-							</tr>
-							<tr>
-								<th>코드명<i class="required" title="필수" aria-hidden="true"></i></th>
-								<td>
-									<input type="text" name="cdNm" class="w200" placeholder="" maxlength="50" required="required" data-valid-name="코드명"/>
-								</td>
-							</tr>
-							<tr>
-								<th>코드설명</th>
-								<td>
-									<textarea class="textareaR4" name="cdDesc"></textarea>
-								</td>
-							</tr>
-							<tr>
-								<th>표시순서<i class="required" title="필수" aria-hidden="true"></i></th>
-								<td>
-									<input type="text" class="w100 text-right" name="dispOrd" placeholder="" maxlength="5" required="required" data-valid-type="numeric" data-valid-name="표시순서" />
-								</td>
-							</tr>
-							<tr>
-								<th>사용여부<i class="required" title="필수" aria-hidden="true"></i></th>
-								<td>
-									<input type="hidden" name="useYn"/>
-									<label class="chkBox"><input type="checkbox" name="chkUseYn" value="Y"/>사용</label>
-								</td>
-							</tr>
-						</table>
-					</form>
-					
-					<!-- 버튼 배치 영역 -->
-					<ul class="panelBar">
-						<li class="right">
-							<button type="button" class="btn btn-info btn-lg" id="btnNew">신규</button>
-							<input type="button" value="저장" class="btn btn-base btn-lg" id="btnSave"/>
-						</li>
-					</ul>
-					<!-- //버튼 배치 영역 -->
-				</li>
-			</ul>
-			<!--//다중 TABLE 배치 -->
-		</div>
-	</div>
-
-<script th:inline="javascript">
-/*<![CDATA[*/
-	// specify the columns
-	let columnDefs1 = [
-// 		{width: 40, minWidth: 40, cellClass: 'text-center', headerCheckboxSelection: true, checkboxSelection: true, filter: false},
-// 		{headerName: "CRUD", field: "crud", width: 75, minWidth: 75, hide: true},
-		{
-			headerName: "코드구분", field: "cd", width: 80, cellClass: 'text-center',
-			cellRenderer: function(params) {
-				return '<a href="javascript:void(0);">' + params.value + '</button>';
-			}
-		},
-		{headerName: "코드구분명", field: "cdNm", width: 150},
-// 		{headerName: "코드설명", field: "cdDesc", width: 300},
-// 		{headerName: "표시순서", field: "dispOrd", width: 80, cellClass: 'text-right'},
-// 		{headerName: "사용여부", field: "useYn", width: 80, cellClass: 'text-center'}
-	];
-	
-	let columnDefs2 = [
-// 		{width: 40, minWidth: 40, cellClass: 'text-center', headerCheckboxSelection: true, checkboxSelection: true, filter: false},
-// 		{headerName: "CRUD", field: "crud", width: 75, minWidth: 75, hide: true},
-		{headerName: "코드구분", field: "cdGb", width: 80, cellClass: 'text-center'},
-		{
-			headerName: "코드", field: "cd", width: 80, cellClass: 'text-center',
-			cellRenderer: function(params) {
-				return '<a href="javascript:void(0);">' + params.value + '</button>';
-			}
-		},
-		{headerName: "코드명", field: "cdNm", width: 150},
-		{headerName: "코드설명", field: "cdDesc", width: 250},
-		{headerName: "표시순서", field: "dispOrd", width: 80, cellClass: 'text-right'},
-		{headerName: "사용여부", field: "useYn", width: 80, cellClass: 'text-center'}
-	];
-	
-	// Get GridOptions
-	let gridOptions1 = gagaAgGrid.getGridOptions(columnDefs1);
-	let gridOptions2 = gagaAgGrid.getGridOptions(columnDefs2);
-	
-	// 중복 선택 가능
-// 	gridOptions1.rowSelection = 'multiple';
-// 	gridOptions2.rowSelection = 'multiple';
-
-	// Cell Click
-	gridOptions1.onCellClicked = function(event) {
-		if (event.colDef.field != 'cd')
-			return;
-
-		fnBindDetail(event.data, 1);
-	}
-	
-	gridOptions2.onCellClicked = function(event) {
-		if (event.colDef.field != 'cd')
-			return;
-
-		fnBindDetail(event.data, 2);
-	}
-	
-	// 목록 > row 클릭 시
-	let lvl = 1;
-	let fnBindDetail = function(rowData, flag) {
-		lvl = flag;
-		
-		$('#detailForm input[name=cdGb]').val(rowData.cdGb);
-		$('#detailForm input[name=cd]').val(rowData.cd);
-		$('#detailForm input[name=cdNm]').val(rowData.cdNm);
-		$('#detailForm input[name=cdDesc]').val(rowData.cdDesc);
-		$('#detailForm input[name=dispOrd]').val(rowData.dispOrd);
-		
-		$("#detailForm input[name=useYn]").val(rowData.useYn);
-		if (rowData.useYn == 'Y') {
-			$("#detailForm input:checkbox[name=chkUseYn]").prop('checked', true);
-			$("#detailForm input:checkbox[name=chkUseYn]").parent().addClass('checked');
-		} else {
-			$("#detailForm input:checkbox[name=chkUseYn]").prop('checked', false);
-			$("#detailForm input:checkbox[name=chkUseYn]").parent().removeClass('checked');
-		}
-		
-		if (flag == 1) {
-			fnGetDetailCode(rowData.cd);
-		}
-	}
-	
-	// 코드구분 조회
-	$('#btnSearch').on('click', function() {
-		let actionUrl = $('#searchForm').prop('action') + '?' + $('#searchForm').serialize();
-		
-		// Fetch data
-		gagaAgGrid.fetch(actionUrl, gridOptions1);
-	});
-	
-	// 상세코드 조회
-	let gCd = '';
-	let fnGetDetailCode = function(cd) {
-		gCd = cd;
-		let actionUrl = $('#searchForm').prop('action') + '?cdGb=' + cd;
-		gagaAgGrid.fetch(actionUrl, gridOptions2);
-	}
-	
-	// 신규
-	$('#btnNew').on('click', function() {
-		$('#detailForm')[0].reset();
-		$('#detailForm input:checkbox[name=chkUseYn]').attr('checked', true);
-		$('#detailForm input:checkbox[name=chkUseYn]').attr('disabled', true);
-		$('#detailForm input[name=cdGb]').focus();
-	});
-	
-	// 저장
-	$('#btnSave').on('click', function() {
-		// 입력 값 체크
-		if (!gagajf.validation('#detailForm'))
-			return false;
-		
-		$('#detailForm input[name=useYn]').val($('#detailForm input:checkbox[name=chkUseYn]').is(":checked") ? 'Y' : 'N');
-		
-		gagajf.ajaxFormSubmit('/system/commoncode/save', '#detailForm', function(result) {
-			if (lvl == 1) {
-				$('#btnSearch').trigger('click');
-			} else {
-				fnGetDetailCode(gCd);
-			}
-		});
-	});
-	
-	$(document).ready(function() {
-		// Create a agGrid
-		gagaAgGrid.createGrid('gridList1', gridOptions1);
-		gagaAgGrid.createGrid('gridList2', gridOptions2);
-	});
-/*]]>*/
-</script>
-
-</html>

+ 0 - 229
style24.scm/src/main/webapp/WEB-INF/views/system/EnvsetHistoryForm.html

@@ -1,229 +0,0 @@
-<!DOCTYPE html>
-<html lang="ko"
-	xmlns:th="http://www.thymeleaf.org">
-<!--
- *******************************************************************************
- * @source  : EnvsetHistoryForm.html
- * @desc    : 환경설정이력 팝업 Page
- *============================================================================
- * Wivismall
- * Copyright(C) 2019 TSIT, All rights reserved.
- *============================================================================
- * VER  DATE         AUTHOR      DESCRIPTION
- * ===  ===========  ==========  =============================================
- * 1.0  2020.03.16   gagamel     최초 작성
- *******************************************************************************
- -->
-<ul class="popup modal" data-width="1200">
-	<li class="mdPopTitle">
-		<strong th:text="${envsetTypeNm + ' 이력'}">쇼핑몰Meat정보 이력</strong>
-		<button type="button" class="close" onclick="uifnPopClose('popupEnvset');"><i class="fa fa-times" aria-hidden="true"></i></button>
-	</li>
-
-	<li class="mdPopContent">
-		<div class="panelContent" style="overflow: hidden;">
-			<div id="gridEnvsetHistoryList" style="width: 100%; height: 330px;" class="ag-theme-balham"></div>
-		</div>
-	</li>
-</ul>
-
-<script th:inline="javascript">
-/*<![CDATA[*/
-	var envsetType = [[${envsetType}]];
-	var pointGiveType = { "A":"승인후지급", "D":"즉시지급" };
-	var pointUseType = { "A":"정액", "R":"정율" };
-
-	// 쇼핑몰Meta정보
-	var columnDefsB10 = [
-		{headerName: 'No', width: 60, cellClass: 'text-center', valueGetter: function(params) { return params.node.rowIndex + 1 }},
-		{headerName: "웹브라우저Title", field: "strSetVal1", width: 200},
-		{headerName: "쇼핑몰Title(og:title)", field: "strSetVal2", width: 200},
-		{headerName: "쇼핑몰설명(og:description)", field: "strSetVal3", width: 200},
-		{headerName: "쇼핑몰이미지(og:image)", field: "strSetVal4", width: 200},
-		{headerName: "키워드(Keywords)", field: "strSetVal5", width: 200},
-		{headerName: "파비콘이미지", field: "strSetVal6", width: 200},
-		{headerName: "등록자ID", field: "regId", width: 150, cellClass: 'text-center'},
-		{headerName: "등록일시", field: "regDt", width: 150, cellClass: 'text-center', cellRenderer: function (params) { return gagaAgGrid.toDateTimeFormat(params.value); }}
-	];
-
-	// 기본설정
-	var columnDefsB11 = [
-		{headerName: 'No', width: 60, cellClass: 'text-center', valueGetter: function(params) { return params.node.rowIndex + 1 }},
-		{headerName: "탈퇴후재가입불가기간(월)", field: "numSetVal1", width: 150, cellClass: 'text-center'},
-		{headerName: "휴면회원선정기간(일)", field: "numSetVal2", width: 150, cellClass: 'text-center'},
-		{headerName: "휴면회원전환기간(일)", field: "numSetVal3", width: 150, cellClass: 'text-center'},
-		{headerName: "회원등급산정기간(월)", field: "numSetVal4", width: 150, cellClass: 'text-center'},
-		{headerName: "무료배송비최소주문금액", field: "numSetVal5", width: 150, cellClass: 'text-center', cellRenderer: function (params) { return gagaAgGrid.toAddComma(params.value);}},
-		{headerName: "등록자ID", field: "regId", width: 100, cellClass: 'text-center'},
-		{headerName: "등록일시", field: "regDt", width: 150, cellClass: 'text-center', cellRenderer: function (params) { return gagaAgGrid.toDateTimeFormat(params.value); }}
-	];
-
-	// 회원혜택안내
-	var columnDefsB12 = [
-		{headerName: 'No', width: 60, cellClass: 'text-center', valueGetter: function(params) { return params.node.rowIndex + 1 }},
-		{headerName: "가입혜택안내배너(A)", field: "strSetVal1", width: 180},
-		{headerName: "가입혜택안내배너(B)", field: "strSetVal2", width: 180},
-		{headerName: "회원혜택안내배너", field: "strSetVal3", width: 180},
-		{headerName: "상품평혜택안내배너(상품상세)", field: "strSetVal4", width: 210},
-		{headerName: "상품평혜택안내배너(마이페이지)", field: "strSetVal5", width: 210},
-		{headerName: "등록자ID", field: "regId", width: 100, cellClass: 'text-center'},
-		{headerName: "등록일시", field: "regDt", width: 150, cellClass: 'text-center', cellRenderer: function (params) { return gagaAgGrid.toDateTimeFormat(params.value); }}
-	];
-
-	// 상품노출
-	var columnDefsB13 = [
-		{headerName: 'No', width: 60, cellClass: 'text-center', valueGetter: function(params) { return params.node.rowIndex + 1 }},
-		{headerName: "상품평노출여부", field: "strSetVal1", width: 150, cellClass: 'text-center', cellRenderer: function (params) { return params.value == 'Y' ? '노출' : '미노출'; }},
-		{headerName: "품절상품노출여부", field: "strSetVal2", width: 150, cellClass: 'text-center', cellRenderer: function (params) { return params.value == 'Y' ? '노출' : '미노출'; }},
-		{headerName: "특가세일노출기준", field: "numSetVal1", width: 150, cellClass: 'text-center'},
-		{headerName: "등록자ID", field: "regId", width: 100, cellClass: 'text-center'},
-		{headerName: "등록일시", field: "regDt", width: 150, cellClass: 'text-center', cellRenderer: function (params) { return gagaAgGrid.toDateTimeFormat(params.value); }}
-	];
-
-	// 상품보관
-	var columnDefsB17 = [
-		{headerName: 'No', width: 60, cellClass: 'text-center', valueGetter: function(params) { return params.node.rowIndex + 1 }},
-		{headerName: "장바구니보관기간", field: "numSetVal1", width: 150, cellClass: 'text-center'},
-		{headerName: "위시리스트보관기간", field: "numSetVal2", width: 150, cellClass: 'text-center'},
-		{headerName: "등록자ID", field: "regId", width: 100, cellClass: 'text-center'},
-		{headerName: "등록일시", field: "regDt", width: 150, cellClass: 'text-center', cellRenderer: function (params) { return gagaAgGrid.toDateTimeFormat(params.value); }}
-	];
-
-	// 품절안내
-	var columnDefsB14 = [
-		{headerName: 'No', width: 60, cellClass: 'text-center', valueGetter: function(params) { return params.node.rowIndex + 1 }},
-		{headerName: "품절안내방법", field: "strSetVal1", width: 150, cellClass: 'text-center', cellRenderer: function (params) { return params.value == 'A' ? '발송' : '미발송'; }},
-		{headerName: "품절안내메시지발송기간", field: "numSetVal1", width: 150, cellClass: 'text-center'},
-		{headerName: "등록자ID", field: "regId", width: 100, cellClass: 'text-center'},
-		{headerName: "등록일시", field: "regDt", width: 150, cellClass: 'text-center', cellRenderer: function (params) { return gagaAgGrid.toDateTimeFormat(params.value); }}
-	];
-
-	// 배송/구매확정
-	var columnDefsB15 = [
-		{headerName: 'No', width: 60, cellClass: 'text-center', valueGetter: function(params) { return params.node.rowIndex + 1 }},
-		{headerName: "배송완료처리기간", field: "numSetVal1", width: 150, cellClass: 'text-center'},
-		{headerName: "구매확정처리기간", field: "numSetVal2", width: 150, cellClass: 'text-center'},
-		{headerName: "등록자ID", field: "regId", width: 100, cellClass: 'text-center'},
-		{headerName: "등록일시", field: "regDt", width: 150, cellClass: 'text-center', cellRenderer: function (params) { return gagaAgGrid.toDateTimeFormat(params.value); }}
-	];
-
-	// 회원쿠폰
-	var columnDefsC10 = [
-		{headerName: 'No', width: 60, cellClass: 'text-center', valueGetter: function(params) { return params.node.rowIndex + 1 }},
-		{headerName: "가입축하쿠폰", field: "strSetVal1", width: 150, cellClass: 'text-center'},
-		{headerName: "앱푸쉬수신동의쿠폰", field: "strSetVal2", width: 150, cellClass: 'text-center'},
-		{headerName: "생일축하쿠폰", field: "strSetVal2", width: 150, cellClass: 'text-center'},
-		{headerName: "생일쿠폰발급도래시점", field: "numSetVal1", width: 150, cellClass: 'text-center'},
-		{headerName: "등록자ID", field: "regId", width: 100, cellClass: 'text-center'},
-		{headerName: "등록일시", field: "regDt", width: 150, cellClass: 'text-center', cellRenderer: function (params) { return gagaAgGrid.toDateTimeFormat(params.value); }}
-	];
-
-	// 회원포인트
-	var columnDefsP10 = [
-		{headerName: 'No', width: 60, cellClass: 'text-center', valueGetter: function(params) { return params.node.rowIndex + 1 }},
-		{headerName: "가입축하기본포인트", field: "numSetVal1", width: 150, cellClass: 'text-center', cellRenderer: function (params) { return gagaAgGrid.toAddComma(params.value); }},
-		{headerName: "가입축하추가포인트", field: "numSetVal6", width: 150, cellClass: 'text-center', cellRenderer: function (params) { return gagaAgGrid.toAddComma(params.value); }},
-		{headerName: "생일축하포인트", field: "numSetVal2", width: 150, cellClass: 'text-center', cellRenderer: function (params) { return gagaAgGrid.toAddComma(params.value); }},
-		{headerName: "앱설치후최초로그인포인트", field: "numSetVal3", width: 200, cellClass: 'text-center', cellRenderer: function (params) { return gagaAgGrid.toAddComma(params.value); }},
-		{headerName: "출석체크1일포인트", field: "numSetVal4", width: 150, cellClass: 'text-center', cellRenderer: function (params) { return gagaAgGrid.toAddComma(params.value); }},
-		{headerName: "등록자ID", field: "regId", width: 100, cellClass: 'text-center'},
-		{headerName: "등록일시", field: "regDt", width: 150, cellClass: 'text-center', cellRenderer: function (params) { return gagaAgGrid.toDateTimeFormat(params.value); }}
-	];
-
-	// 구매포인트
-	var columnDefsP11 = [
-		{headerName: 'No', width: 60, cellClass: 'text-center', valueGetter: function(params) { return params.node.rowIndex + 1 }},
-		{headerName: "자사상품정상포인트(PC)", field: "numSetVal1", width: 150, cellClass: 'text-center'},
-		{headerName: "자사상품정상포인트(모바일)", field: "numSetVal2", width: 150, cellClass: 'text-center'},
-		{headerName: "자사상품이월포인트(PC)", field: "numSetVal3", width: 150, cellClass: 'text-center'},
-		{headerName: "자사상품이월포인트(모바일)", field: "numSetVal4", width: 150, cellClass: 'text-center'},
-		{headerName: "입점상품정상포인트(PC)", field: "numSetVal5", width: 150, cellClass: 'text-center'},
-		{headerName: "입점상품정상포인트(모바일)", field: "numSetVal6", width: 150, cellClass: 'text-center'},
-		{headerName: "입점상품이월포인트(PC)", field: "numSetVal7", width: 150, cellClass: 'text-center'},
-		{headerName: "입점상품이월포인트(모바일)", field: "numSetVal8", width: 150, cellClass: 'text-center'},
-		{headerName: "등록자ID", field: "regId", width: 100, cellClass: 'text-center'},
-		{headerName: "등록일시", field: "regDt", width: 150, cellClass: 'text-center', cellRenderer: function (params) { return gagaAgGrid.toDateTimeFormat(params.value); }}
-	];
-
-	// 상품평포인트
-	var columnDefsP12 = [
-		{headerName: 'No', width: 60, cellClass: 'text-center', valueGetter: function(params) { return params.node.rowIndex + 1 }},
-		{headerName: "포인트지급방법", field: "strSetVal1", width: 150, cellClass: 'text-center',
-			valueFormatter: function (params) { return gagaAgGrid.lookupValue(pointGiveType, params.value); }
-		},
-		{headerName: "텍스트상품평포인트", field: "numSetVal1", width: 150, cellClass: 'text-center'},
-		{headerName: "포토상품평포인트", field: "numSetVal2", width: 150, cellClass: 'text-center'},
-		{headerName: "최초텍스트상품평배율", field: "numSetVal3", width: 150, cellClass: 'text-center'},
-		{headerName: "최초포토상품평포인트배율", field: "numSetVal4", width: 150, cellClass: 'text-center'},
-		{headerName: "등록자ID", field: "regId", width: 100, cellClass: 'text-center'},
-		{headerName: "등록일시", field: "regDt", width: 150, cellClass: 'text-center', cellRenderer: function (params) { return gagaAgGrid.toDateTimeFormat(params.value); }}
-	];
-
-	// 클레임포인트
-	var columnDefsP13 = [
-		{headerName: 'No', width: 60, cellClass: 'text-center', valueGetter: function(params) { return params.node.rowIndex + 1 }},
-		{headerName: "배송지연보상기준일수", field: "numSetVal1", width: 150, cellClass: 'text-center'},
-		{headerName: "배송지연보상포인트", field: "numSetVal2", width: 150, cellClass: 'text-center'},
-		{headerName: "품절보상기준일수", field: "numSetVal3", width: 150, cellClass: 'text-center'},
-		{headerName: "품절보상포인트", field: "numSetVal4", width: 150, cellClass: 'text-center'},
-		{headerName: "등록자ID", field: "regId", width: 100, cellClass: 'text-center'},
-		{headerName: "등록일시", field: "regDt", width: 150, cellClass: 'text-center', cellRenderer: function (params) { return gagaAgGrid.toDateTimeFormat(params.value); }}
-	];
-
-	// 가용포인트전환
-	var columnDefsP20 = [
-		{headerName: 'No', width: 60, cellClass: 'text-center', valueGetter: function(params) { return params.node.rowIndex + 1 }},
-		{headerName: "가용포인트전환대기일수", field: "numSetVal1", width: 150, cellClass: 'text-center'},
-		{headerName: "가용포인트추가적립율", field: "numSetVal2", width: 150, cellClass: 'text-center'},
-		{headerName: "등록자ID", field: "regId", width: 100, cellClass: 'text-center'},
-		{headerName: "등록일시", field: "regDt", width: 150, cellClass: 'text-center', cellRenderer: function (params) { return gagaAgGrid.toDateTimeFormat(params.value); }}
-	];
-
-	// 포인트사용
-	var columnDefsP30 = [
-		{headerName: 'No', width: 60, cellClass: 'text-center', valueGetter: function(params) { return params.node.rowIndex + 1 }},
-		{headerName: "사용방법", field: "strSetVal1", width: 80, cellClass: 'text-center', cellRenderer: function (params) { return gagaAgGrid.lookupValue(pointUseType, params.value); }},
-		{
-			headerName: "사용단위", field: "strSetVal2", width: 100, cellClass: 'text-center',
-			cellRenderer: function (params) {
-				var value = '';
-				if (params.value == '10') { value = '일원'; }
-				else if (params.value == '100') { value = '십원'; }
-				else if (params.value == '1000') { value = '백원'; }
-				return value + '단위절사';
-			}
-		},
-		{headerName: "사용가능보유포인트금액", field: "numSetVal1", width: 150, cellClass: 'text-center', cellRenderer: function (params) { return gagaAgGrid.toAddComma(params.value); }},
-		{headerName: "사용가능최소포인트금액", field: "numSetVal2", width: 150, cellClass: 'text-center', cellRenderer: function (params) { return gagaAgGrid.toAddComma(params.value); }},
-		{headerName: "사용가능최대포인트율", field: "numSetVal3", width: 150, cellClass: 'text-center'},
-		{headerName: "즉시사용최대포인트금액", field: "numSetVal5", width: 150, cellClass: 'text-center', cellRenderer: function (params) { return gagaAgGrid.toAddComma(params.value); }},
-		{headerName: "최소주문제한금액", field: "numSetVal4", width: 120, cellClass: 'text-center', cellRenderer: function (params) { return gagaAgGrid.toAddComma(params.value); }},
-		{headerName: "등록자ID", field: "regId", width: 100, cellClass: 'text-center'},
-		{headerName: "등록일시", field: "regDt", width: 150, cellClass: 'text-center', cellRenderer: function (params) { return gagaAgGrid.toDateTimeFormat(params.value); }}
-	];
-
-	// 모바일앱
-	var columnDefsM10 = [
-		{headerName: 'No', width: 60, cellClass: 'text-center', valueGetter: function(params) { return params.node.rowIndex + 1 }},
-		{headerName: "AOS버전", field: "strSetVal1", width: 100, cellClass: 'text-center'},
-		{headerName: "IOS버전", field: "strSetVal2", width: 100, cellClass: 'text-center'},
-		{headerName: "등록자ID", field: "regId", width: 100, cellClass: 'text-center'},
-		{headerName: "등록일시", field: "regDt", width: 150, cellClass: 'text-center', cellRenderer: function (params) { return gagaAgGrid.toDateTimeFormat(params.value); }}
-	];
-
-	// Get GridOptions
-	var gridOptions = gagaAgGrid.getGridOptions(eval('columnDefs' + envsetType));
-
-	$(document).ready(function() {
-		// Create a agGrid
-		gagaAgGrid.createGrid('gridEnvsetHistoryList', gridOptions);
-
-		var actionUrl = '/system/envset/history/' + [[${siteCd}]] + '/' + envsetType;
-
-		// Fetch data
-		gagaAgGrid.fetch(actionUrl, gridOptions);
-	});
-/*]]>*/
-</script>
-
-</html>

+ 0 - 164
style24.scm/src/main/webapp/WEB-INF/views/system/HilandDeliveryFeeDetailForm.html

@@ -1,164 +0,0 @@
-<!DOCTYPE html>
-<html lang="ko"
-	xmlns:th="http://www.thymeleaf.org">
-<!--
- *****************************************************************************
- * @source  : HilandDeliveryFeeDetailForm.html
- * @desc    : 도서산간배송비 상세
- *============================================================================
- * WIVIS
- * Copyright(C) 2019 TSIT, All rights reserved.
- *============================================================================
- * VER  DATE         AUTHOR      DESCRIPTION
- * ===  ===========  ==========  =============================================
- * 1.0  2020.03.16   Daehyoung   최초 작성
- *****************************************************************************
- -->
-	<ul class="popup modal" id="hilandDeliveryFeeDetail" data-width="600" >
-		<li class="mdPopTitle">
-			<strong>도서산간 배송비 설정</strong>
-			<button type="button" id="closeBtn" class="close" onclick="uifnPopClose('hilandDeliveryFeeDetail')"><i class="fa fa-times" aria-hidden="true"></i></button>
-		</li>
-		<li class="mdPopContent">
-			<form name="hilandDeliveryFeeDetailForm" id="hilandDeliveryFeeDetailForm" action="#">
-				<input type="hidden" id="originPostFno" name="originPostFno"/>
-				<input type="hidden" id="originPostTno" name="originPostTno"/>
-				
-				<table class="frmStyle" aria-describedby="상세">
-					<colgroup>
-						<col style="width:20%;"/>
-					</colgroup>
-					<tbody>
-						<tr>
-							<th class="dashR">공급업체</th>
-							<td class="dashR">
-								<select id="supplyCompCd" name="supplyCompCd" required="required" data-valid-name="공급업체">
-									<option value="">[선택]</option>
-									<option th:if="${supplyCompList}" th:each="oneData, status : ${supplyCompList}" th:value="${oneData.cd}" th:text="${oneData.cdNm}"></option>
-								</select>
-							</td>
-						</tr>
-						<tr>
-							<th class="dashR">지역명(도서, 산간 등)</th>
-							<td class="dashR">
-								<input type="text" class="w300" id="hilandNm" name="hilandNm" required="required" data-valid-name="지역명"/>
-							</td>
-						</tr>
-						<tr>
-							<th class="dashR">우편번호 범위</th>
-							<td class="dashR">
-								<input type="text" id="postFno" name="postFno"  class="w50"  required="required" data-valid-name="우편번호" readonly="readonly">
-								<button type="button" class="btn btn-info btn-sm" onclick="cfnOpenPostFindPopup('postFno');">우편번호찾기</button>부터 
-								<input type="text" id="postTno" name="postTno"  class="w50"  required="required" data-valid-name="우편번호" readonly="readonly"/>
-								<button type="button" class="btn btn-info btn-sm" onclick="cfnOpenPostFindPopup('postTno');">우편번호찾기</button>까지
-							</td>
-						</tr>
-						<tr>
-							<th class="dashR">추가배송비</th>
-							<td class="dashR">
-								<input type="text" id="addDelvFee" name="addDelvFee" class="w70 text-right" data-valid-type="integer" data-valid-name="추가배송비" required="required"/>원
-							</td>
-						</tr>
-					</tbody>
-				</table>
-			</form>
-		</li>
-		<li class="boxContentBtnB">
-			<button type="button" class="btn btn-success btn-lg " id="btnSave">저장</button>
-		</li>
-	</ul>
-<script th:inline="javascript">
-/*<![CDATA[*/
-	
-	var mode = [[${mode}]];	
-	var admHilandDeliveryFee;
-	
-	$('#btnSave').on('click', function() {
-		var formId = '#hilandDeliveryFeeDetailForm';
-		if (!gagajf.validation(formId))
-			return false;
-		
-		// 우편번호 범위 유효성
-		if ($('#postTno').val() < $('#postFno').val()) {
-			mcxDialog.alert("우편번호 뒷범위가 앞범위보다 크거나 같게 해주세요.");
-			return;
-		}
-		
-		gagajf.removeCommaAtNumberFormattedInput('#hilandDeliveryFeeDetailForm');
-		if(mode == "N"){
-			fnRegist();
-		} else {
-			fnUpdate();
-		}
-	});
-	
-	// 도서산간배송비 등록
-	var fnRegist = function() {
-		mcxDialog.confirm("등록하시겠습니까?", {
-			cancelBtnText: "취소",
-			sureBtnText: "확인",
-			sureBtnClick: function() {
-				var jsonData = JSON.stringify($('#hilandDeliveryFeeDetailForm').serializeObject());
-				gagajf.ajaxJsonSubmit('/system/hiland/deliveryfee/detail/create', jsonData, saveCallback);
-			}
-		});
-	}
-	
-	// 도서산간배송비 수정
-	var fnUpdate = function() {
-		mcxDialog.confirm("수정하시겠습니까?", {
-			cancelBtnText: "취소",
-			sureBtnText: "확인",
-			sureBtnClick: function() {
-				var jsonData = JSON.stringify($('#hilandDeliveryFeeDetailForm').serializeObject());
-				gagajf.ajaxJsonSubmit('/system/hiland/deliveryfee/detail/update', jsonData, saveCallback);
-			}
-		});
-	}
-	
-	// 저장 콜백
-	var saveCallback = function() {
-		$('#closeBtn').trigger('click');
-		fnSearch();
-	}
-	
-	// 초기세팅
-	var fnInit = function(mode){
-		
-		if(mode == "N"){
-			// 등록
-			
-		} else {
-			// 수정
-			admHilandDeliveryFee = [[${admHilandDeliveryFee}]];
-			
-			$('#originPostFno').val(admHilandDeliveryFee.postFno);
-			$('#originPostTno').val(admHilandDeliveryFee.postTno);
-			
-			$('#supplyCompCd').val(admHilandDeliveryFee.supplyCompCd);
-			$('#hilandNm').val(admHilandDeliveryFee.hilandNm);
-			$('#addDelvFee').val(admHilandDeliveryFee.addDelvFee);
-			
-			$('input[name=postFno]').val(admHilandDeliveryFee.postFno);
-			$('input[name=postTno]').val(admHilandDeliveryFee.postTno);
-		}
-		gagajf.addCommaAtNumberFormattedInput('#hilandDeliveryFeeDetailForm');
-	}
-	
-	// 우편번호 콜백 함수
-	var fnSetPostValue = function(zipNo, baseRoadAddr1, baseRoadAddr2, etcAddr, id) {
-		if(id == 'postFno') {
-			$('input[name=postFno]').val(zipNo);
-		}
-		if(id == 'postTno') {
-			$('input[name=postTno]').val(zipNo);
-		}
-	}
-	
-	$(document).ready(function() {
-		fnInit(mode);
-	});
-
-/*]]>*/
-</script>
-</html>

+ 0 - 104
style24.scm/src/main/webapp/WEB-INF/views/system/HilandDeliveryFeeListForm.html

@@ -1,104 +0,0 @@
-<!DOCTYPE html>
-<html lang="ko"
-	xmlns:th="http://www.thymeleaf.org"        >
-<!--
- *****************************************************************************
- * @source  : HilandDeliveryFeeListForm.html
- * @desc    : 도서산간배송비
- *============================================================================
- * SISUN
- * Copyright(C) 2019 TSIT, All rights reserved.
- *============================================================================
- * VER  DATE         AUTHOR      DESCRIPTION
- * ===  ===========  ==========  =============================================
- * 1.0  2020.03.16   Daehyoung       최초 작성
- *****************************************************************************
- -->
-	<div id="main">
-		<!-- 메인타이틀 영역 -->
-		<div class="main-title">
-		</div>
-		<!-- //메인타이틀 영역 -->
-		
-		<!-- 검색조건 영역 -->
-		<form id="hilandDeliveryFeeForm" name="hilandDeliveryFeeForm" action="#" th:action="@{'/system/hiland/deliveryfee/list'}" onsubmit="$('#btnSearch').trigger('click'); return false;">
-			<div class="panelStyle2">
-				<ul class="lrStyle">
-					<li>
-						<p class="dot">사이트에서 사용할 도서산간지역을 설정합니다.</p>
-					</li>
-				</ul>
-			</div>
-			<div class="panelStyle2">
-				<ul class="lrStyle">
-					<li class="aR">
-						<button type="button" id="btnRegist" class="btn btn-success btn-lg btnRight">등록</button>
-					</li>
-				</ul>
-				<!-- 검색결과 영역 -->
-				<div class="panelContent">
-					<div id="gridList" style="width: 100%;" class="ag-theme-balham"></div>
-				</div>
-				<!-- 검색결과 영역 -->
-			</div>
-			<!-- //검색조건 영역 -->
-		</form>
-	</div>
-
-<script th:inline="javascript">
-/*<![CDATA[*/
-	var supplyCompList = gagajf.convertToArray([[${supplyCompList}]]);
-	
-	var columnDefs = [
-		//{width: 100, minWidth: 100, cellClass: 'text-center', headerCheckboxSelection: true, checkboxSelection: true, filter: false},
-		{headerName: "공급업체명",			field: "supplyCompCd",	width: 200, cellClass: 'text-center',
-			valueFormatter: function (params) { return gagaAgGrid.lookupValue(supplyCompList, params.value); }
-		},
-		{headerName: "지역명(도서, 산간 등)",	field: "hilandNm",		width: 400, cellClass: 'text-center'},
-		{headerName: "우편번호 범위",		field: "postFno",		width: 350, cellClass: 'text-center',
-			cellRenderer: function(params) {
-				return '[' + params.data.postFno + '] 부터 [' + params.data.postTno + '] 까지';
-			}	
-		},
-		{headerName: "배송비",			field: "addDelvFee",	width: 150, cellClass: 'text-center',
-			valueFormatter: function(params) {return params.value.addComma();}	
-		},
-		{headerName: "관리",				field: "", 				width: 120, cellClass: 'text-center',
-			cellRenderer: function(params) {
-				return '<button type="button" class="btn btn-danger btn-sm" onclick="fnHilandDeliveryDetailPopup(\'' + params.data.postFno + '\', \'' + params.data.postTno + '\');">&nbsp;&nbsp;상세&nbsp;&nbsp;</button>';
-			}
-		}
-	];
-
-	// Get GridOptions
-	var gridOptions = gagaAgGrid.getGridOptions(columnDefs);
-	
-	// 검색
-	var fnSearch = function() {
-		var formId = '#hilandDeliveryFeeForm';
-		gagaAgGrid.fetch($(formId).prop('action'), gridOptions, formId);
-	}
-	
-	// 등록
-	$('#btnRegist').on('click', function() {
-		var actionUrl = '/system/hiland/deliveryfee/detail/N/null/null';
-		cfnOpenModalPopup(actionUrl, 'hilandDeliveryFeeDetail');
-	});
-	
-	// 상세
-	var fnHilandDeliveryDetailPopup = function(postFno, postTno) {
-		var actionUrl = '/system/hiland/deliveryfee/detail/U/' + postFno + '/'+ postTno;
-		cfnOpenModalPopup(actionUrl, 'hilandDeliveryFeeDetail');
-	}
-	
-	$(document).ready(function() {
-		gagaAgGrid.createGrid('gridList', gridOptions);
-		
-		// Grid 높이 자동 조정
-		uifnFitGrid('auto');
-		
-		fnSearch();
-	});
-/*]]>*/
-</script>
-</html>

+ 0 - 448
style24.scm/src/main/webapp/WEB-INF/views/system/MenuForm.html

@@ -1,448 +0,0 @@
-<!DOCTYPE html>
-<html lang="ko"
-	xmlns:th="http://www.thymeleaf.org">
-<!--
- *******************************************************************************
- * @source  : MenuForm.html
- * @desc    : 메뉴관리 Page
- *============================================================================
- * STYLE24
- * Copyright(C) 2020 TSIT, All rights reserved.
- *============================================================================
- * VER  DATE         AUTHOR      DESCRIPTION
- * ===  ===========  ==========  =============================================
- * 1.0  2020.10.08   gagamel     최초 작성
- *******************************************************************************
- -->
-	<div id="main">
-		<!-- 메인타이틀 영역 -->
-		<div class="main-title">
-		</div>
-		<!-- //메인타이틀 영역 -->
-		
-		<!-- 메뉴 설명 -->
-		<div class="infoBox menu-desc">
-		</div>
-		<!-- //메뉴 설명 -->
-		
-		<!-- 검색조건 영역 -->
-		<div class="panelStyle">
-			<!-- Search -->
-			<form id="searchForm" name="searchForm" action="#" th:action="@{'/system/menu/list'}" onsubmit="$('#btnSearch').trigger('click'); return false;">
-				<table class="frmStyle" aria-describedby="검색조건">
-					<colgroup>
-						<col style="width:10%;"/>
-						<col style="width:90%;"/>
-					</colgroup>
-					<tr>
-						<th>상위메뉴</th>
-						<td>
-							<select name="pmenuId" class="w150">
-								<option value="">[전체]</option>
-								<option th:if="${topMenuList}" th:each="oneData, status : ${topMenuList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
-							</select>
-						</td>
-					</tr>
-				</table>
-				
-				<ul class="panelBar">
-					<li class="center">
-						<button type="button" class="btn btn-success btn-lg" id="btnSearch">조회</button>
-					</li>
-				</ul>
-			</form>
-		</div>
-		<!-- //검색조건 영역 -->
-		
-		<!-- TABS AREA -->
-		<div class="tabs">
-			<ul class="tabsNav">
-				<li class="on"><a href="#tab-1">목록</a></li>
-				<li><a href="#tab-2">신규</a></li>
-				<li class="off"><a href="#tab-3">상세</a></li>
-			</ul>
-			
-			<ul class="tabsCont">
-				<li class="tab on" id="tab-1">
-					<div class="panelStyle">
-						<!-- 버튼 배치 영역 -->
-						<ul class="panelBar">
-							<li class="right">
-								<button type="button" class="btn btn-danger btn-lg btnDelete">삭제</button>
-							</li>
-						</ul>
-						<!-- //버튼 배치 영역 -->
-						
-						<div id="gridList" style="width: 100%; height: 570px;" class="ag-theme-balham"></div>
-					</div>
-				</li>
-				
-				<!-- 신규 -->
-				<li class="tab" id="tab-2">
-					<div class="panelStyle">
-						<form id="registerForm" name="registerForm" action="#" th:action="@{'/system/menu/save'}">
-							<table class="frmStyle" aria-describedby="신규">
-								<colgroup>
-									<col style="width:10%"/>
-									<col style="width:40%;"/>
-									<col style="width:10%;"/>
-									<col/>
-								</colgroup>
-								<tr>
-									<th>메뉴ID<i class="required" title="필수" aria-hidden="true"></i></th>
-									<td>
-										<input type="text" name="menuId" placeholder="" maxlength="20" required="required" data-valid-type="alphaNumeric" data-valid-name="메뉴ID" onkeyup="$(this).val($(this).val().toUpperCase());"/>
-									</td>
-									<th>메뉴명<i class="required" title="필수" aria-hidden="true"></i></th>
-									<td>
-										<input type="text" name="menuNm" placeholder="" maxlength="50" required="required" data-valid-name="메뉴명"/>
-									</td>
-								</tr>
-								<tr>
-									<th>메뉴구분<i class="required" title="필수" aria-hidden="true"></i></th>
-									<td>
-										<label class="rdoBtn"><input type="radio" name="menuGb" value="M"/>메뉴</label>
-										<label class="rdoBtn"><input type="radio" name="menuGb" value="P"/>프로그램</label>
-									</td>
-									<th>상위메뉴</th>
-									<td>
-										<select name="pmenuId">
-											<option value="">[선택]</option>
-											<option th:if="${allMenuList}" th:each="oneData, status : ${allMenuList}" th:value="${oneData.cd}" th:text="${oneData.cdNm}"></option>
-										</select>
-									</td>
-								</tr>
-								<tr class="menu-role">
-									<th>메뉴권한</th>
-									<td colspan="3">
-										<!-- <select class="chosen-select" name="roleCd" multiple="multiple" data-placeholder="[선택]" data-valid-name="메뉴권한">
-											<option th:if="${roleList}" th:each="oneData, status : ${roleList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
-										</select> -->
-										<div class="mSelectWrap">
-											<select name="roleCd" multiple="multiple" tabindex="-1" data-valid-name="메뉴권한">
-												<option th:if="${roleList}" th:each="oneData, status : ${roleList}" th:attr="data-index=${status.index + 1}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
-											</select>
-											<div class="mSelectBox">
-												<ul class="mSelected">
-													<li class="off" th:if="${roleList}" th:each="oneData, status : ${roleList}" th:attr="data-index=${status.index + 1}" th:utext="${'[' + oneData.cd + '] ' + oneData.cdNm + '&lt;a&gt;닫기&lt;/a&gt;'}"></li>
-													<li class="srchFld"><input type="text" autocomplete="off"/></li>
-												</ul>
-												<div class="mSelecting">
-													<ul>
-														<li th:if="${roleList}" th:each="oneData, status : ${roleList}" th:attr="data-index=${status.index + 1}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></li>
-													</ul>
-												</div>
-											</div>
-										</div>
-										<input type="hidden" name="roleCds"/>
-									</td>
-								</tr>
-								<tr>
-									<th>메뉴URL</th>
-									<td colspan="3">
-										<input type="text" name="menuUrl" placeholder="" maxlength="100"/>
-									</td>
-								</tr>
-								<tr>
-									<th>메뉴설명</th>
-									<td colspan="3">
-										<textarea class="textareaR4" name="menuDesc"></textarea>
-									</td>
-								</tr>
-								<tr>
-									<th>표시순서<i class="required" title="필수" aria-hidden="true"></i></th>
-									<td>
-										<input type="text" class="w100 text-right" name="dispOrd" placeholder="" maxlength="5" required="required" data-valid-type="numeric" data-valid-name="표시순서" />
-									</td>
-									<th>사용여부</th>
-									<td>
-										<input type="hidden" name="useYn"/>
-										<label class="chkBox"><input type="checkbox" name="chkUseYn" value="Y" checked="checked" disabled="disabled"/>사용</label>
-									</td>
-								</tr>
-							</table>
-						</form>
-						
-						<!-- 버튼 배치 영역 -->
-						<ul class="panelBar">
-							<li class="right">
-								<input type="button" value="초기화" class="btn btn-gray btn-lg" onclick="$('#registerForm')[0].reset();"/>
-								<input type="button" value="저장" class="btn btn-base btn-lg" onclick="fnSave('#registerForm');"/>
-							</li>
-						</ul>
-						<!-- //버튼 배치 영역 -->
-					</div>
-				</li>
-				<!-- //신규 -->
-				
-				<!-- 상세 -->
-				<li class="tab" id="tab-3">
-					<div class="panelStyle">
-						<form id="detailForm" name="detailForm" action="#" th:action="@{'/system/menu/save'}">
-							<table class="frmStyle" aria-describedby="상세">
-								<colgroup>
-									<col style="width:10%"/>
-									<col style="width:40%;"/>
-									<col style="width:10%;"/>
-									<col/>
-								</colgroup>
-								<tr>
-									<th>메뉴ID</th>
-									<td>
-										<input type="text" name="menuId" placeholder="" maxlength="20" readonly="readonly"/>
-									</td>
-									<th>메뉴명<i class="required" title="필수" aria-hidden="true"></i></th>
-									<td>
-										<input type="text" name="menuNm" placeholder="" maxlength="50" required="required" data-valid-name="메뉴명"/>
-									</td>
-								</tr>
-								<tr>
-									<th>메뉴구분<i class="required" title="필수" aria-hidden="true"></i></th>
-									<td>
-										<label class="rdoBtn"><input type="radio" name="menuGb" value="M"/>메뉴</label>
-										<label class="rdoBtn"><input type="radio" name="menuGb" value="P"/>프로그램</label>
-									</td>
-									<th>상위메뉴</th>
-									<td>
-										<select name="pmenuId">
-											<option value="">[선택]</option>
-											<option th:if="${allMenuList}" th:each="oneData, status : ${allMenuList}" th:value="${oneData.cd}" th:text="${oneData.cdNm}"></option>
-										</select>
-									</td>
-								</tr>
-								<tr class="menu-role">
-									<th>메뉴권한</th>
-									<td colspan="3">
-										<!-- <select class="chosen-select" name="roleCd" multiple="multiple" data-placeholder="[선택]" data-valid-name="메뉴권한">
-											<option th:if="${roleList}" th:each="oneData, status : ${roleList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
-										</select> -->
-										<div class="mSelectWrap">
-											<select name="roleCd" multiple="multiple" tabindex="-1" data-valid-name="메뉴권한">
-												<option th:if="${roleList}" th:each="oneData, status : ${roleList}" th:attr="data-index=${status.index + 1}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
-											</select>
-											<div class="mSelectBox">
-												<ul class="mSelected">
-													<li class="off" th:if="${roleList}" th:each="oneData, status : ${roleList}" th:attr="data-index=${status.index + 1}" th:utext="${'[' + oneData.cd + '] ' + oneData.cdNm + '&lt;a&gt;닫기&lt;/a&gt;'}"></li>
-													<li class="srchFld"><input type="text" autocomplete="off"/></li>
-												</ul>
-												<div class="mSelecting">
-													<ul>
-														<li th:if="${roleList}" th:each="oneData, status : ${roleList}" th:attr="data-index=${status.index + 1}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></li>
-													</ul>
-												</div>
-											</div>
-										</div>
-										<input type="hidden" name="roleCds"/>
-									</td>
-								</tr>
-								<tr>
-									<th>메뉴URL</th>
-									<td colspan="3">
-										<input type="text" name="menuUrl" placeholder="" maxlength="100"/>
-									</td>
-								</tr>
-								<tr>
-									<th>메뉴설명</th>
-									<td colspan="3">
-										<textarea class="textareaR4" name="menuDesc"></textarea>
-									</td>
-								</tr>
-								<tr>
-									<th>표시순서<i class="required" title="필수" aria-hidden="true"></i></th>
-									<td>
-										<input type="text" class="w100 text-right" name="dispOrd" placeholder="" maxlength="5" required="required" data-valid-type="numeric" data-valid-name="표시순서" />
-									</td>
-									<th>사용여부<i class="required" title="필수" aria-hidden="true"></i></th>
-									<td>
-										<input type="hidden" name="useYn"/>
-										<label class="chkBox"><input type="checkbox" name="chkUseYn" value="Y"/>사용</label>
-									</td>
-								</tr>
-							</table>
-						</form>
-						
-						<!-- 버튼 배치 영역 -->
-						<ul class="panelBar">
-							<li class="right">
-								<input type="button" value="초기화" class="btn btn-gray btn-lg" onclick="$('#detailForm')[0].reset();"/>
-								<input type="button" value="저장" class="btn btn-base btn-lg" onclick="fnSave('#detailForm');"/>
-							</li>
-						</ul>
-						<!-- //버튼 배치 영역 -->
-					</div>
-				</li>
-				<!-- //상세 -->
-			</ul>
-			<!-- //TAB CONTENT -->
-		</div>
-		<!-- //TABS AREA -->
-	</div>
-	
-<script th:inline="javascript">
-/*<![CDATA[*/
-	var roleList = [[${roleList}]];
-	
-	// specify the columns
-	var columnDefs = [
-		{headerName: "메뉴명", field: "menuNm", width: 200,
-			cellRenderer: function(params) {
-				return '<a href="javascript:void(0);">' + params.value + '</a>';
-			}
-		},
-		{headerName: "메뉴구분", field: "menuGb", width: 100, cellClass: 'text-center',
-			cellRenderer: function(params) { return params.value == 'M' ? '메뉴' : '프로그램'; }
-			/* valueFormatter: function(params) { return params.value == 'M' ? '메뉴' : '프로그램'; } */
-		},
-		{headerName: "메뉴권한코드", field: "roleCds", hide: true},
-		{headerName: "메뉴권한", field: "roleNms", width: 400, cellClass: 'text-center'},
-		{headerName: "메뉴URL", field: "menuUrl", width: 300},
-		{headerName: "메뉴설명", field: "menuDesc", hide: true},
-		{headerName: "표시순서", field: "dispOrd", width: 100, cellClass: 'text-right'},
-		{headerName: "사용여부", field: "useYn", width: 100, cellClass: 'text-center'}
-	];
-	
-	// Get GridOptions
-	var gridOptions = gagaAgGrid.getGridOptions(columnDefs);
-	
-	// Add on options
-	gridOptions.suppressRowClickSelection = true;
-	gridOptions.rowSelection = 'multiple';
-	//gridOptions.groupSelectsChildren = true; // Tree Data mode에서는 작동 안 함
-	gridOptions.treeData = true; // enable Tree Data mode
-	gridOptions.groupDefaultExpanded = -1; // expand all groups by default
-	gridOptions.getDataPath = function(data) { // just return the hierarchy, no conversion required
-		return data.treePath.split("/");
-	};
-	gridOptions.autoGroupColumnDef = {
-		headerName: "메뉴ID", field: "menuId", width: 200,
-		cellRendererParams: {
-			suppressCount: true, // 하위의 항목 건수 표시 안 함
-			checkbox: true
-		}
-	};
-	
-	// Cell Click
-	gridOptions.onCellClicked = function(event) {
-		if (event.colDef.field != 'menuNm')
-			return;
-
-		fnBindDetail(event.data);
-	}
-	
-	// 조회
-	$('#btnSearch').on('click', function() {
-		var actionUrl = $('#searchForm').prop('action') + '?' + $('#searchForm').serialize();
-		
-		// Fetch data
-		gagaAgGrid.fetch(actionUrl, gridOptions);
-	});
-	
-	// 목록 > row 클릭 시
-	var fnBindDetail = function(rowData) {
-		$('#detailForm input[name=menuId]').val(rowData.menuId);
-		$('#detailForm input[name=menuNm]').val(rowData.menuNm);
-		
-		$("#detailForm input:radio[name=menuGb]").parents('td').find('label').removeClass('checked');
-		if (rowData.menuGb == 'M') {
-			$("#detailForm input:radio[name=menuGb]").eq(0).prop('checked', true);
-			$("#detailForm input:radio[name=menuGb]").eq(0).parent().addClass('checked');
-			$('#detailForm').find('.menu-role').hide();
-		} else {
-			$("#detailForm input:radio[name=menuGb]").eq(1).prop('checked', true);
-			$("#detailForm input:radio[name=menuGb]").eq(1).parent().addClass('checked');
-			$('#detailForm').find('.menu-role').show();
-		}
-		
-		$('#detailForm select[name=pmenuId]').val(rowData.pmenuId);
-		
-		// 다중Select에 권한 표시
-		cfnShowMultiSelectedValue($('#detailForm select[name=roleCd]'), rowData.roleCds);
-		
-		$('#detailForm textarea[name=menuDesc]').val(rowData.menuDesc);
-		$('#detailForm input[name=menuUrl]').val(rowData.menuUrl);
-		$('#detailForm input[name=dispOrd]').val(rowData.dispOrd);
-		
-		$("#detailForm input[name=useYn]").val(rowData.useYn);
-		if (rowData.useYn == 'Y') {
-			$("#detailForm input:checkbox[name=chkUseYn]").prop('checked', true);
-			$("#detailForm input:checkbox[name=chkUseYn]").parent().addClass('checked');
-		} else {
-			$("#detailForm input:checkbox[name=chkUseYn]").prop('checked', false);
-			$("#detailForm input:checkbox[name=chkUseYn]").parent().removeClass('checked');
-		}
-		
-		$('.tabsNav li').eq(2).removeClass('off');
-		$('.tabsNav li').eq(2).trigger('click');
-		
-		$('#detailForm input[name=menuNm]').focus();
-	}
-	
-	// 저장 처리
-	var fnSave = function(formId) {
-		// 입력 값 체크
-		if (!gagajf.validation(formId))
-			return false;
-		
-		$(formId + ' input[name=useYn]').val($(formId + ' input:checkbox[name=chkUseYn]').is(":checked") ? 'Y' : 'N');
-		$(formId + ' input[name=roleCds]').val($(formId + ' select[name=roleCd]').val());
-		
-		gagajf.ajaxFormSubmit($(formId).prop('action'), formId, fnSaveCallback);
-	}
-	
-	// 등록/수정 처리 후 콜백함수
-	var fnSaveCallback = function(result) {
-		// 초기화
-		$('#registerForm')[0].reset();
-		
-		// 상세의 다중Select 초기화
-		var mSelected = '';
-		var mSelecting = '';
-		$.each(roleList, function(idx, item) {
-			mSelected += '<li class="off" data-index="' + (idx + 1) + '">[' + item.cd + '] ' + item.cdNm + '<a>닫기</a></li>\n';
-			mSelecting += '<li data-index="' + (idx + 1) + '">[' + item.cd + '] ' + item.cdNm + '</li>\n';
-		});
-		mSelected += '<li class="srchFld"><input type="text" autocomplete="off"/></li>\n';
-		$('#detailForm').find('.mSelected').html(mSelected);
-		$('#detailForm').find('.mSelecting > ul').html(mSelecting);
-		
-		// 목록 재조회
-		$('.tabsNav li').eq(0).trigger('click');
-		
-		$('#btnSearch').trigger('click');
-	}
-	
-	// 삭제 버튼 클릭 시
-	$('.btnDelete').on('click', function() {
-		var removedData = gagaAgGrid.removeRowData(gridOptions);
-		
-		if (removedData.length == 0) {
-			alert('선택된 행이 없습니다.');
-			return;
-		}
-		
-		mcxDialog.confirm("정말 삭제하시겠습니까?", {
-			cancelBtnText: "취소",
-			sureBtnText: "확인",
-			sureBtnClick: function() {
-				// delete 대신 update 처리해야 하므로 다음과 같이 useYn 값을 변환
-				var updatedData = [];
-				
-				$.each(removedData, function(idx, item) {
-					item.useYn = 'N';
-					updatedData.push(item);
-				});
-				
-				var jsonData = JSON.stringify(updatedData);
-				gagajf.ajaxJsonSubmit('/system/menu/list/save', jsonData, fnSaveCallback);
-			}
-		});
-	});
-	
-	$(document).ready(function() {
-		// Create a agGrid
-		gagaAgGrid.createGrid('gridList', gridOptions);
-	});
-/*]]>*/
-</script>
-
-</html>

+ 0 - 559
style24.scm/src/main/webapp/WEB-INF/views/system/PointEnvsetForm.html

@@ -1,559 +0,0 @@
-<!DOCTYPE html>
-<html lang="ko"
-	xmlns:th="http://www.thymeleaf.org">
-<!--
- *****************************************************************************
- * @source  : PointEnvsetForm.html
- * @desc    : 포인트설정관리 Page
- *============================================================================
- * Wivismall
- * Copyright(C) 2019 TSIT, All rights reserved.
- *============================================================================
- * VER  DATE         AUTHOR      DESCRIPTION
- * ===  ===========  ==========  =============================================
- * 1.0  2020.03.17   Daehyoung     최초 작성
- *****************************************************************************
- -->
-
-	<div id="main">
-		<!-- 메인타이틀 영역 -->
-		<div class="main-title">
-		</div>
-		<!-- //메인타이틀 영역 -->
-
-		<!-- 검색조건 영역 -->
-		<div class="panelStyle2">
-			<table class="frmStyle" aria-describedby="검색조건">
-				<colgroup>
-					<col style="width:10%;"/>
-				</colgroup>
-				<tbody>
-					<tr>
-						<th>사이트</th>
-						<td>
-							<select name="siteCd" class="w150" onchange="fnSearch();">
-								<option th:if="${siteList}" th:each="oneData, status : ${siteList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
-							</select>
-						</td>
-					</tr>
-				</tbody>
-			</table>
-			<div class="panelBtnB"></div>
-		</div>
-		<!-- //검색조건 영역 -->
-		<!-- 테이블 영역 -->
-		<div class="panelStyle2">
-			<h4>회원쿠폰</h4>
-			<button type="button" class="btn btn-success btn-ssm" onclick="fnSave('C10');">저장</button>
-			<button type="button" class="btn btn-info btn-ssm" onclick="fnOpenEnvsetPopup('C10', '회원쿠폰');">이력보기</button>
-			<table class="frmStyle" aria-describedby="회원쿠폰">
-				<colgroup>
-					<col style="width: 15%;"/>
-					<col style="width: 85%;"/>
-				</colgroup>
-				<tbody>
-					<tr>
-						<th>가입축하쿠폰</th>
-						<td>
-							<input name="c10StrSetNm1" type="text" class="w300" onkeypress="if (window.event.keyCode == 13) { fnOpenCouponRetrievePopup('input[name=c10StrSetVal1]', 'input[name=c10StrSetNm1]'); }"/>
-							<button type="button" class="btn icn" onclick="fnOpenCouponRetrievePopup('input[name=c10StrSetVal1]', 'input[name=c10StrSetNm1]');"><i class="fa fa-search cpn" aria-hidden="true"></i></button>
-							<input name="c10StrSetVal1" type="text" class="w100" maxlength="20" readonly/>
-							<button type="button" class="btn icn" onclick="$('input[name=c10StrSetVal1], input[name=c10StrSetNm1]').val('');"><i class="fa fa-eraser" aria-hidden="true"></i></button>
-							<span class="infoTxt cBlue marL20"><i class="fa fa-info-circle" aria-hidden="true"></i>회원가입 시 발급해 줄 쿠폰입니다. 값이 없으면 쿠폰을 발급하지 않습니다.</span>
-						</td>
-					</tr>
-					<tr>
-						<th>앱푸쉬수신동의쿠폰</th>
-						<td>
-							<input name="c10StrSetNm2" type="text" class="w300" onkeypress="if (window.event.keyCode == 13) { fnOpenCouponRetrievePopup('input[name=c10StrSetVal2]', 'input[name=c10StrSetNm2]'); }"/>
-							<button type="button" class="btn icn" onclick="fnOpenCouponRetrievePopup('input[name=c10StrSetVal2]', 'input[name=c10StrSetNm2]');"><i class="fa fa-search cpn" aria-hidden="true"></i></button>
-							<input name="c10StrSetVal2" type="text" class="w100" maxlength="20" readonly/>
-							<button type="button" class="btn icn" onclick="$('input[name=c10StrSetVal2], input[name=c10StrSetNm2]').val('');"><i class="fa fa-eraser" aria-hidden="true"></i></button>
-							<span class="infoTxt cBlue marL20"><i class="fa fa-info-circle" aria-hidden="true"></i>회원가입 시 앱푸쉬 수신동의를 한 경우 최초 한 번만 발급해 주는 쿠폰입니다. 값이 없으면 쿠폰을 발급하지 않습니다.</span>
-						</td>
-					</tr>
-					<tr>
-						<th>생일축하쿠폰</th>
-						<td>
-							<input name="c10StrSetNm3" type="text" class="w300" onkeypress="if (window.event.keyCode == 13) { fnOpenCouponRetrievePopup('input[name=c10StrSetVal3]', 'input[name=c10StrSetNm3]'); }"/>
-							<button type="button" class="btn icn" onclick="fnOpenCouponRetrievePopup('input[name=c10StrSetVal3]', 'input[name=c10StrSetNm3]');"><i class="fa fa-search cpn" aria-hidden="true"></i></button>
-							<input name="c10StrSetVal3" type="text" class="w100" maxlength="20" readonly/>
-							<button type="button" class="btn icn" onclick="$('input[name=c10StrSetVal3], input[name=c10StrSetNm3]').val('');"><i class="fa fa-eraser" aria-hidden="true"></i></button>
-							<span class="infoTxt cBlue marL20"><i class="fa fa-info-circle" aria-hidden="true"></i>회원의 생일 도래 </span><input name="c10NumSetVal1" type="text" class="w20 aR" maxlength="2" data-valid-type="integer" data-valid-name="생일도래시점"/><span class="cRed">일</span><span class="cBlue">전 발급해 줄 쿠폰입니다. 값이 없으면 쿠폰을 발급하지 않습니다.</span>
-						</td>
-					</tr>
-				</tbody>
-			</table>
-
-			<h4>회원포인트</h4>
-			<button type="button" class="btn btn-success btn-ssm" onclick="fnSave('P10');">저장</button>
-			<button type="button" class="btn btn-info btn-ssm" onclick="fnOpenEnvsetPopup('P10', '회원포인트');">이력보기</button>
-			<table class="frmStyle" aria-describedby="회원포인트">
-				<colgroup>
-					<col style="width: 15%;"/>
-					<col style="width: 85%;"/>
-				</colgroup>
-				<tbody>
-					<tr>
-						<th>가입축하포인트</th>
-						<td>
-							<input name="p10NumSetVal1" type="text" class="w100 aR" maxlength="6" data-valid-type="integer" data-valid-name="가입축하포인트"/>
-							<span class="infoTxt cBlue marL20"><i class="fa fa-info-circle" aria-hidden="true"></i>회원가입 시 적립해 줄 기본 포인트입니다.</span>
-							<span class="cRed">단, 성별, 생년월일을 입력하고 SMS 및 E-MAIL 수신동의 시 </span><input name="p10NumSetVal6" type="text" class="w100 aR" maxlength="6" data-valid-type="integer" data-valid-name="가입축하추가포인트"/><span class="cRed">포인트를 추가로 적립해 줍니다.</span>
-						</td>
-					</tr>
-					<tr>
-						<th>생일축하포인트</th>
-						<td>
-							<input name="p10NumSetVal2" type="text" class="w100 aR" maxlength="6" data-valid-type="integer" data-valid-name="생일축하포인트"/>
-							<span class="infoTxt cBlue marL20"><i class="fa fa-info-circle" aria-hidden="true"></i>회원의 생일 도래 </span><input name="p10NumSetVal3" type="text" class="w20 aR" maxlength="2" data-valid-type="integer" data-valid-name="생일도래시점"/><span class="cRed">일</span><span class="cBlue">전 적립해 줄 포인트입니다.</span>
-						</td>
-					</tr>
-					<tr>
-						<th>앱설치후최초로그인포인트</th>
-						<td>
-							<input name="p10NumSetVal4" type="text" class="w100 aR" maxlength="6" data-valid-type="integer" data-valid-name="앱설치후최초로그인포인트"/>
-							<span class="infoTxt cBlue marL20"><i class="fa fa-info-circle" aria-hidden="true"></i>앱 설치 후 앱을 통해서 로그인을 했을 때 최초 한 번만 적립해 줄 포인트입니다.</span>
-						</td>
-					</tr>
-					<tr>
-						<th>출석체크1일포인트</th>
-						<td>
-							<input name="p10NumSetVal5" type="text" class="w100 aR" maxlength="6" data-valid-type="integer" data-valid-name="출석체크1일포인트"/>
-							<span class="infoTxt cBlue marL20"><i class="fa fa-info-circle" aria-hidden="true"></i>출석체크 이벤트 하루 체크 시 적립해 줄 포인트입니다.</span>
-						</td>
-					</tr>
-				</tbody>
-			</table>
-
-			<h4>구매포인트</h4>
-			<button type="button" class="btn btn-success btn-ssm" onclick="fnSave('P11');">저장</button>
-			<button type="button" class="btn btn-info btn-ssm" onclick="fnOpenEnvsetPopup('P11', '구매포인트');">이력보기</button>
-			<table class="frmStyle" aria-describedby="구매포인트">
-				<colgroup>
-					<col style="width: 15%;"/>
-					<col style="width: 85%;"/>
-				</colgroup>
-				<tbody>
-					<tr>
-						<th>자사상품정상포인트(PC)</th>
-						<td>
-							<input name="p11NumSetVal1" type="text" class="w100 aR" maxlength="6" data-valid-type="integer" data-valid-name="자사상품정상포인트(PC)"/>
-							<span class="infoTxt cBlue marL20"><i class="fa fa-info-circle" aria-hidden="true"></i>자사 정상상품을 PC웹에서 구매 시 적립해 줄 포인트입니다.</span>
-						</td>
-					</tr>
-					<tr>
-						<th>자사상품정상포인트(모바일)</th>
-						<td>
-							<input name="p11NumSetVal2" type="text" class="w100 aR" maxlength="6" data-valid-type="integer" data-valid-name="자사상품정상포인트(모바일)"/>
-							<span class="infoTxt cBlue marL20"><i class="fa fa-info-circle" aria-hidden="true"></i>자사 정상상품을 모바일에서 구매 시 적립해 줄 포인트입니다.</span>
-						</td>
-					</tr>
-					<tr>
-						<th>자사상품이월포인트(PC)</th>
-						<td>
-							<input name="p11NumSetVal3" type="text" class="w100 aR" maxlength="6" data-valid-type="integer" data-valid-name="자사상품이월포인트(PC)"/>
-							<span class="infoTxt cBlue marL20"><i class="fa fa-info-circle" aria-hidden="true"></i>자사 이월상품을 PC웹에서 구매 시 적립해 줄 포인트입니다.</span>
-						</td>
-					</tr>
-					<tr>
-						<th>자사상품이월포인트(모바일)</th>
-						<td>
-							<input name="p11NumSetVal4" type="text" class="w100 aR" maxlength="6" data-valid-type="integer" data-valid-name="자사상품이월포인트(모바일)"/>
-							<span class="infoTxt cBlue marL20"><i class="fa fa-info-circle" aria-hidden="true"></i>자사 이월상품을 모바일에서 구매 시 적립해 줄 포인트입니다.</span>
-						</td>
-					</tr>
-					<tr>
-						<th>입점상품정상포인트(PC)</th>
-						<td>
-							<input name="p11NumSetVal5" type="text" class="w100 aR" maxlength="6" data-valid-type="integer" data-valid-name="입점상품정상포인트(PC)"/>
-							<span class="infoTxt cBlue marL20"><i class="fa fa-info-circle" aria-hidden="true"></i>입점 정상상품을 PC웹에서 구매 시 적립해 줄 포인트입니다.</span>
-						</td>
-					</tr>
-					<tr>
-						<th>입점상품정상포인트(모바일)</th>
-						<td>
-							<input name="p11NumSetVal6" type="text" class="w100 aR" maxlength="6" data-valid-type="integer" data-valid-name="입점상품정상포인트(모바일)"/>
-							<span class="infoTxt cBlue marL20"><i class="fa fa-info-circle" aria-hidden="true"></i>입점 정상상품을 모바일에서 구매 시 적립해 줄 포인트입니다.</span>
-						</td>
-					</tr>
-					<tr>
-						<th>입점상품이월포인트(PC)</th>
-						<td>
-							<input name="p11NumSetVal7" type="text" class="w100 aR" maxlength="6" data-valid-type="integer" data-valid-name="입점상품이월포인트(PC)"/>
-							<span class="infoTxt cBlue marL20"><i class="fa fa-info-circle" aria-hidden="true"></i>입점 이월상품을 PC웹에서 구매 시 적립해 줄 포인트입니다.</span>
-						</td>
-					</tr>
-					<tr>
-						<th>입점상품이월포인트(모바일)</th>
-						<td>
-							<input name="p11NumSetVal8" type="text" class="w100 aR" maxlength="6" data-valid-type="integer" data-valid-name="입점상품이월포인트(모바일)"/>
-							<span class="infoTxt cBlue marL20"><i class="fa fa-info-circle" aria-hidden="true"></i>입점 이월상품을 모바일에서 구매 시 적립해 줄 포인트입니다.</span>
-						</td>
-					</tr>
-				</tbody>
-			</table>
-
-			<h4>상품평포인트</h4>
-			<button type="button" class="btn btn-success btn-ssm" onclick="fnSave('P12');">저장</button>
-			<button type="button" class="btn btn-info btn-ssm" onclick="fnOpenEnvsetPopup('P12', '상품평포인트');">이력보기</button>
-			<table class="frmStyle" aria-describedby="상품평포인트">
-				<colgroup>
-					<col style="width: 15%;"/>
-					<col style="width: 85%;"/>
-				</colgroup>
-				<tbody>
-					<tr>
-						<th>포인트지급방법</th>
-						<td>
-							<label class="rdoBox"><input type="radio" name="p12StrSetVal1" value="A" checked="checked"/>승인후지급</label>
-							<label class="rdoBox"><input type="radio" name="p12StrSetVal1" value="D">즉시지급</label>
-							<span class="infoTxt cBlue marL20"><i class="fa fa-info-circle" aria-hidden="true"></i>승인후지급 선택 시 <a href="javascript:void(0);" onclick="fnClickLnb('/marketing/review/list/form', '회원/마케팅 > 마케팅 > 상품평관리', this);"><span class="cRed">"회원/마케팅 > 마케팅 > 상품평관리"</span></a> 메뉴에서 승인 시 지급됩니다.</span>
-						</td>
-					</tr>
-					<tr>
-						<th>텍스트상품평포인트</th>
-						<td>
-							<input name="p12NumSetVal1" type="text" class="w100 aR" maxlength="4" data-valid-type="integer" data-valid-name="텍스트상품평포인트"/>
-							<span class="infoTxt cBlue marL20"><i class="fa fa-info-circle" aria-hidden="true"></i>작성한 상품평이 텍스트일 경우 적립해 줄 포인트입니다. 최초등록시 </span>
-							<input name="p12NumSetVal3" type="text" class="w50 aR" maxlength="4" data-valid-type="integer" data-valid-name="일반상품평배율"/><span class="infoTxt cBlue">배를 지급합니다.</span>
-
-						</td>
-					</tr>
-					<tr>
-						<th>포토상품평포인트</th>
-						<td>
-							<input name="p12NumSetVal2" type="text" class="w100 aR" maxlength="4" data-valid-type="integer" data-valid-name="포토상품평포인트"/>
-							<span class="infoTxt cBlue marL20"><i class="fa fa-info-circle" aria-hidden="true"></i>작성한 상품평이 포토일 경우 적립해 줄 포인트입니다.. 최초등록시 </span>
-							<input name="p12NumSetVal4" type="text" class="w50 aR" maxlength="4" data-valid-type="integer" data-valid-name="포토상품평배율"/><span class="infoTxt cBlue">배를 지급합니다.</span>
-						</td>
-					</tr>
-				</tbody>
-			</table>
-
-			<h4>클레임포인트</h4>
-			<button type="button" class="btn btn-success btn-ssm" onclick="fnSave('P13');">저장</button>
-			<button type="button" class="btn btn-info btn-ssm" onclick="fnOpenEnvsetPopup('P13', '클레임포인트');">이력보기</button>
-			<table class="frmStyle" aria-describedby="클레임포인트">
-				<colgroup>
-					<col style="width: 15%;"/>
-					<col style="width: 85%;"/>
-				</colgroup>
-				<tbody>
-					<tr>
-						<th>배송지연보상포인트</th>
-						<td>
-							결제완료 후 <input name="p13NumSetVal1" type="text" class="w100 aR" maxlength="3" data-valid-type="integer" data-valid-name="배송지연보상기준일수"/> <span class="cRed">일</span> 동안 배송완료 처리가 되지 않으면
-							포인트 <input name="p13NumSetVal2" type="text" class="w100 aR" maxlength="8" data-valid-type="integer" data-valid-name="배송지연보상포인트"/>를 적립해 줍니다.
-							<p class="infoTxt cBlue"><i class="fa fa-info-circle" aria-hidden="true"></i>배송이 지연되는 경우 적립해 줄 포인트입니다. 0으로 설정하면 배송지연보상 정책을 사용하지 않습니다.</p>
-						</td>
-					</tr>
-					<tr>
-						<th>품절보상포인트</th>
-						<td>
-							결제완료 후 <input name="p13NumSetVal3" type="text" class="w100 aR" maxlength="8" data-valid-type="integer" data-valid-name="품절보상기준일수"/> <span class="cRed">일</span> 동안 출고 진행이 되지 않으면
-							포인트 <input name="p13NumSetVal4" type="text" class="w100 aR" maxlength="8" data-valid-type="integer" data-valid-name="품절보상포인트"/>를 적립해 줍니다.
-							<p class="infoTxt cBlue"><i class="fa fa-info-circle" aria-hidden="true"></i>출고가 지연되는 경우 적립해 줄 포인트입니다. 0으로 설정하면 품절보상 정책을 사용하지 않습니다.</p>
-						</td>
-					</tr>
-				</tbody>
-			</table>
-
-			<h4>가용포인트전환</h4>
-			<button type="button" class="btn btn-success btn-ssm" onclick="fnSave('P20');">저장</button>
-			<button type="button" class="btn btn-info btn-ssm" onclick="fnOpenEnvsetPopup('P20', '가용포인트전환');">이력보기</button>
-			<table class="frmStyle" aria-describedby="가용포인트전환">
-				<colgroup>
-					<col style="width: 15%;"/>
-					<col style="width: 85%;"/>
-				</colgroup>
-				<tbody>
-					<tr>
-						<th>가용포인트전환대기일수</th>
-						<td>
-							결제 시 적립된 예정포인트가 <input name="p20NumSetVal1" type="text" class="w20 aR" maxlength="2" data-valid-type="integer" data-valid-name="가용포인트전환대기일수"/> <span class="cRed">일</span> 이후 가용포인트로 전환됩니다.
-						</td>
-					</tr>
-					<tr>
-						<th>가용포인트추가적립율</th>
-						<td>
-							<span class="cRed">회원가입 시 성별, 생년월일을 입력하고 SMS 및 E-MAIL 수신동의를 한 경우</span> 결제 시 적립된 예정포인트 외에 결제금액의 <input name="p20NumSetVal2" type="text" class="w20 aR" maxlength="2" data-valid-type="integer" data-valid-name="가용포인트추가적립율"/><span class="cRed">%</span>가 추가로 적립됩니다.
-						</td>
-					</tr>
-				</tbody>
-			</table>
-
-			<h4>포인트/쿠폰사용</h4>
-			<button type="button" class="btn btn-success btn-ssm" onclick="fnSave('P30');">저장</button>
-			<button type="button" class="btn btn-info btn-ssm" onclick="fnOpenEnvsetPopup('P30', '포인트/쿠폰사용');">이력보기</button>
-			<table class="frmStyle" aria-describedby="포인트사용">
-				<colgroup>
-					<col style="width: 15%;"/>
-					<col style="width: 85%;"/>
-				</colgroup>
-				<tbody>
-					<tr>
-						<th>사용방법</th>
-						<td>
-							<label class="rdoBox"><input type="radio" name="p30StrSetVal1" value="A" checked="checked"/>정액</label>
-							<label class="rdoBox"><input type="radio" name="p30StrSetVal1" value="R">정율</label>
-						</td>
-					</tr>
-					<tr>
-						<th>사용단위(사용포인트/쿠폰단위)</th>
-						<td>
-							<select name="p30StrSetVal2">
-								<option value="10">일원단위절사</option>
-								<option value="100">십원단위절사</option>
-								<option value="1000">백원단위절사</option>
-							</select>
-							<span class="infoTxt cBlue marL20"><i class="fa fa-info-circle" aria-hidden="true"></i>쿠폰적용금액도 적용됩니다.</span>
-						</td>
-					</tr>
-					<tr>
-						<th>사용가능보유포인트금액</th>
-						<td>
-							포인트 <input name="p30NumSetVal1" type="text" class="w100 aR" maxlength="7" data-valid-type="integer" data-valid-name="사용가능보유포인트금액"/> 이상 보유 시 사용 가능합니다.
-							<span class="infoTxt cBlue marL20"><i class="fa fa-info-circle" aria-hidden="true"></i>포인트가 얼마 이상이어야 사용 가능한지를 설정합니다.</span>
-						</td>
-					</tr>
-					<tr>
-						<th>사용가능최소포인트금액</th>
-						<td>
-							포인트 <input name="p30NumSetVal2" type="text" class="w100 aR" maxlength="7" data-valid-type="integer" data-valid-name="사용가능최소포인트금액"/> 이상 사용 가능합니다.
-							<span class="infoTxt cBlue marL20"><i class="fa fa-info-circle" aria-hidden="true"></i>한 번의 결제 시 사용할 수 있는 포인트의 최소금액을 설정합니다.</span>
-						</td>
-					</tr>
-					<tr>
-						<th>사용가능최대포인트율</th>
-						<td>
-							포인트 <input name="p30NumSetVal3" type="text" class="w100 aR" maxlength="3" data-valid-type="integer" data-valid-name="사용가능보유포인트율"/> <span class="cRed">%</span> 이하로 사용 가능합니다.
-							<span class="infoTxt cBlue marL20">
-								<i class="fa fa-info-circle" aria-hidden="true"></i>한 번의 결제 시 <span class="cRed">결제금액 기준</span>으로 사용할 수 있는 최대 포인트율을 설정합니다.
-								<i class="fa fa-info-circle" aria-hidden="true"></i><span class="cRed">사이트설정 > 약관관리 > 구매이용약관</span>을 수정을 하셔야 합니다.
-							</span>
-						</td>
-					</tr>
-					<tr>
-						<th>즉시사용최대포인트율</th>
-						<td>
-							포인트 <input name="p30NumSetVal5" type="text" class="w100 aR" maxlength="3" data-valid-type="integer" data-valid-name="즉시사용최대포인트율"/> <span class="cRed">%</span> 이하로 즉시 사용할 수 있습니다.
-							<span class="infoTxt cBlue marL20"><i class="fa fa-info-circle" aria-hidden="true"></i>한 번의 결제 시 <span class="cRed">적립금액 기준</span>으로 즉시 사용할 수 있는 최대 포인트율을 설정합니다.</span>
-						</td>
-					</tr>
-					<tr>
-						<th>최소주문제한금액</th>
-						<td>
-							<input name="p30NumSetVal4" type="text" class="w100 aR" maxlength="7" data-valid-type="integer" data-valid-name="최소주문제한금액"/> <span class="cRed">원</span>
-							<span class="infoTxt cBlue marL20"><i class="fa fa-info-circle" aria-hidden="true"></i>한 번의 결제 시 상품의 판매가 합산금액이 설정 금액 보다 적을 경우 포인트 사용이 불가능 합니다.</span>
-						</td>
-					</tr>
-				</tbody>
-			</table>
-			<div class="panelBtnB"></div>
-		</div>
-	</div>
-
-<script th:inline="javascript">
-/*<![CDATA[*/
-	// 조회
-	var fnSearch = function() {
-		var siteCd = $('select[name=siteCd]').val();
-		var actionUrl = '/system/envset/' + siteCd;
-
-		// 회원쿠폰
-		$.getJSON(actionUrl + '/C10'
-				, function(result, status) {
-					if (status === 'success') {
-						if (!gagajf.isNull(result)) {
-							$('input[name=c10StrSetVal1]').val(result.strSetVal1);
-							$('input[name=c10StrSetNm1]').val(result.strSetNm1);
-							$('input[name=c10StrSetVal2]').val(result.strSetVal2);
-							$('input[name=c10StrSetNm2]').val(result.strSetNm2);
-							$('input[name=c10StrSetVal3]').val(result.strSetVal3);
-							$('input[name=c10StrSetNm3]').val(result.strSetNm3);
-							$('input[name=c10NumSetVal1]').val(result.numSetVal1.addComma());
-						}
-					}
-				});
-
-		// 회원포인트
-		$.getJSON(actionUrl + '/P10'
-				, function(result, status) {
-					if (status === 'success') {
-						if (!gagajf.isNull(result)) {
-							$('input[name=p10NumSetVal1]').val(result.numSetVal1.addComma());
-							$('input[name=p10NumSetVal2]').val(result.numSetVal2.addComma());
-							$('input[name=p10NumSetVal3]').val(result.numSetVal3.addComma());
-							$('input[name=p10NumSetVal4]').val(result.numSetVal4.addComma());
-							$('input[name=p10NumSetVal5]').val(result.numSetVal5.addComma());
-							$('input[name=p10NumSetVal6]').val(result.numSetVal6.addComma());
-						}
-					}
-				});
-
-		// 구매포인트
-		$.getJSON(actionUrl + '/P11'
-				, function(result, status) {
-					if (status === 'success') {
-						if (!gagajf.isNull(result)) {
-							$('input[name=p11NumSetVal1]').val(result.numSetVal1.addComma());
-							$('input[name=p11NumSetVal2]').val(result.numSetVal2.addComma());
-							$('input[name=p11NumSetVal3]').val(result.numSetVal3.addComma());
-							$('input[name=p11NumSetVal4]').val(result.numSetVal4.addComma());
-							$('input[name=p11NumSetVal5]').val(result.numSetVal5.addComma());
-							$('input[name=p11NumSetVal6]').val(result.numSetVal6.addComma());
-							$('input[name=p11NumSetVal7]').val(result.numSetVal7.addComma());
-							$('input[name=p11NumSetVal8]').val(result.numSetVal8.addComma());
-						}
-					}
-				});
-
-		// 상품평포인트
-		$.getJSON(actionUrl + '/P12'
-				, function(result, status) {
-					if (status === 'success') {
-						$("input:radio[name=p12StrSetVal1]").parents('td').find('label').removeClass('checked');
-						if (result.strSetVal1 == 'A') {
-							$("input:radio[name=p12StrSetVal1]").eq(0).prop('checked', true);
-							$("input:radio[name=p12StrSetVal1]").eq(0).parent().addClass('checked');
-						} else {
-							$("input:radio[name=p12StrSetVal1]").eq(1).prop('checked', true);
-							$("input:radio[name=p12StrSetVal1]").eq(1).parent().addClass('checked');
-						}
-
-						$('input[name=p12NumSetVal1]').val(result.numSetVal1.addComma());
-						$('input[name=p12NumSetVal2]').val(result.numSetVal2.addComma());
-						$('input[name=p12NumSetVal3]').val(result.numSetVal3.addComma());
-						$('input[name=p12NumSetVal4]').val(result.numSetVal4.addComma());
-					}
-				});
-
-		// 클레임포인트
-		$.getJSON(actionUrl + '/P13'
-				, function(result, status) {
-					if (status === 'success') {
-						if (!gagajf.isNull(result)) {
-							$('input[name=p13NumSetVal1]').val(result.numSetVal1.addComma());
-							$('input[name=p13NumSetVal2]').val(result.numSetVal2.addComma());
-							$('input[name=p13NumSetVal3]').val(result.numSetVal3.addComma());
-							$('input[name=p13NumSetVal4]').val(result.numSetVal4.addComma());
-						}
-					}
-				});
-
-		// 가용포인트전환
-		$.getJSON(actionUrl + '/P20'
-				, function(result, status) {
-					if (status === 'success') {
-						if (!gagajf.isNull(result)) {
-							$('input[name=p20NumSetVal1]').val(result.numSetVal1.addComma());
-							$('input[name=p20NumSetVal2]').val(result.numSetVal2.addComma());
-						}
-					}
-				});
-
-		// 표인트사용
-		$.getJSON(actionUrl + '/P30'
-				, function(result, status) {
-					if (status === 'success') {
-						if (!gagajf.isNull(result)) {
-							$("input:radio[name=p30StrSetVal1]").parents('td').find('label').removeClass('checked');
-							if (result.strSetVal1 == 'A') {
-								$("input:radio[name=p30StrSetVal1]").eq(0).prop('checked', true);
-								$("input:radio[name=p30StrSetVal1]").eq(0).parent().addClass('checked');
-							} else {
-								$("input:radio[name=p30StrSetVal1]").eq(1).prop('checked', true);
-								$("input:radio[name=p30StrSetVal1]").eq(1).parent().addClass('checked');
-							}
-
-							$('select[name=p30StrSetVal2]').val(result.strSetVal2);
-							$('input[name=p30NumSetVal1]').val(result.numSetVal1.addComma());
-							$('input[name=p30NumSetVal2]').val(result.numSetVal2.addComma());
-							$('input[name=p30NumSetVal3]').val(result.numSetVal3.addComma());
-							$('input[name=p30NumSetVal4]').val(result.numSetVal4.addComma());
-							$('input[name=p30NumSetVal5]').val(result.numSetVal5.addComma());
-						}
-					}
-				});
-	}
-
-	// 저장 처리
-	var fnSave = function(envsetType) {
-		var params = new Object();
-		params.siteCd = $('select[name=siteCd]').val();
-		params.envsetType = envsetType;
-
-		if (envsetType == 'C10') { // 회원쿠폰
-			params.strSetVal1 = $('input[name=c10StrSetVal1]').val();
-			params.strSetVal2 = $('input[name=c10StrSetVal2]').val();
-			params.strSetVal3 = $('input[name=c10StrSetVal3]').val();
-			params.numSetVal1 = $('input[name=c10NumSetVal1]').val().removeComma();
-		} else if (envsetType == 'P10') { // 회원포인트
-			params.numSetVal1 = $('input[name=p10NumSetVal1]').val().removeComma();
-			params.numSetVal2 = $('input[name=p10NumSetVal2]').val().removeComma();
-			params.numSetVal3 = $('input[name=p10NumSetVal3]').val().removeComma();
-			params.numSetVal4 = $('input[name=p10NumSetVal4]').val().removeComma();
-			params.numSetVal5 = $('input[name=p10NumSetVal5]').val().removeComma();
-			params.numSetVal6 = $('input[name=p10NumSetVal6]').val().removeComma();
-		} else if (envsetType == 'P11') { // 구매포인트
-			params.numSetVal1 = $('input[name=p11NumSetVal1]').val();
-			params.numSetVal2 = $('input[name=p11NumSetVal2]').val();
-			params.numSetVal3 = $('input[name=p11NumSetVal3]').val();
-			params.numSetVal4 = $('input[name=p11NumSetVal4]').val();
-			params.numSetVal5 = $('input[name=p11NumSetVal5]').val();
-			params.numSetVal6 = $('input[name=p11NumSetVal6]').val();
-			params.numSetVal7 = $('input[name=p11NumSetVal7]').val();
-			params.numSetVal8 = $('input[name=p11NumSetVal8]').val();
-		} else if (envsetType == 'P12') { // 상품평포인트
-			params.strSetVal1 = $('input:radio[name=p12StrSetVal1]:checked').val();
-			params.numSetVal1 = $('input[name=p12NumSetVal1]').val().removeComma();
-			params.numSetVal2 = $('input[name=p12NumSetVal2]').val().removeComma();
-			params.numSetVal3 = $('input[name=p12NumSetVal3]').val().removeComma();
-			params.numSetVal4 = $('input[name=p12NumSetVal4]').val().removeComma();
-		} else if (envsetType == 'P13') { // 클레임포인트
-			params.numSetVal1 = $('input[name=p13NumSetVal1]').val();
-			params.numSetVal2 = $('input[name=p13NumSetVal2]').val().removeComma();
-			params.numSetVal3 = $('input[name=p13NumSetVal3]').val();
-			params.numSetVal4 = $('input[name=p13NumSetVal4]').val().removeComma();
-		} else if (envsetType == 'P20') { // 가용포인트전환
-			params.numSetVal1 = $('input[name=p20NumSetVal1]').val();
-			params.numSetVal2 = $('input[name=p20NumSetVal2]').val();
-		} else if (envsetType == 'P30') { // 포인트사용
-			params.strSetVal1 = $('input:radio[name=p30StrSetVal1]:checked').val();
-			params.strSetVal2 = $('select[name=p30StrSetVal2]').val();
-			params.numSetVal1 = $('input[name=p30NumSetVal1]').val().removeComma();
-			params.numSetVal2 = $('input[name=p30NumSetVal2]').val().removeComma();
-			params.numSetVal3 = $('input[name=p30NumSetVal3]').val().removeComma();
-			params.numSetVal4 = $('input[name=p30NumSetVal4]').val().removeComma();
-			params.numSetVal5 = $('input[name=p30NumSetVal5]').val().removeComma();
-		}
-
-		var jsonData = JSON.stringify(params);
-		gagajf.ajaxJsonSubmit('/system/envset/create', jsonData);
-	}
-
-	// 환경설정 이력보기 팝업
-	var fnOpenEnvsetPopup = function(envsetType, envsetTypeNm) {
-		var actionUrl = '/system/envset/history/form'
-				+ '?siteCd=' + $('select[name=siteCd]').val()
-				+ '&envsetType=' + envsetType
-				+ '&envsetTypeNm=' + encodeURIComponent(envsetTypeNm);
-		cfnOpenModalPopup(actionUrl, 'popupEnvset');
-	}
-
-	// 쿠폰조회 팝업
-	var fnOpenCouponRetrievePopup = function(strReturnCode, strReturnName) {
-		var oParam = new Object();
-		oParam.returnCode = strReturnCode;
-		oParam.returnName = strReturnName;
-		cfnOpenCouponRetrievePopup($(strReturnName).val(), oParam);
-	}
-
-	$(document).ready(function() {
-		fnSearch();
-		uifnFitGrid();
-	});
-/*]]>*/
-</script>
-</html>

+ 0 - 91
style24.scm/src/main/webapp/WEB-INF/views/system/PopupPasswordChangeForm.html

@@ -1,91 +0,0 @@
-<!DOCTYPE html>
-<html lang="ko"
-	xmlns:th="http://www.thymeleaf.org">
-<!--
- *******************************************************************************
- * @source  : PopupPasswordChangeForm.html
- * @desc    : 비밀번호 변경 팝업
- *============================================================================
- * SISUN
- * Copyright(C) 2019 TSIT, All rights reserved.
- *============================================================================
- * VER  DATE         AUTHOR      DESCRIPTION
- * ===  ===========  ==========  =============================================
- * 1.0  2020.01.16   rladbwnd5   최초 작성
- *******************************************************************************
- -->
-	<ul class="popup modal" data-width="500" >
-		<li class="mdPopTitle">
-			<strong>비밀번호 변경</strong>
-			<button type="button" class="close" onclick="uifnPopClose('popupPassword')"><i class="fa fa-times"></i></button>
-		</li>
-		<li class="mdPopContent">
-			<form name="popupPasswordForm" id="popupPasswordForm" action="#" th:action="@{'/system/user/password/change'}" th:method="post">
-				<input type="hidden" name="userId" th:value="${userId}"/>
-				<table class="frmStyle" aria-describedby="수정">
-					<colgroup>
-						<col style="width:10%;"/>
-					</colgroup>
-					<tbody>
-						<tr>
-							<th class="dashR">관리자ID<i class="star" aria-hidden="true"></i></th>
-							<td class="dashR" th:text="${userId}">
-							</td>
-						</tr>
-						<tr>
-							<th class="dashR">비밀번호<i class="star" aria-hidden="true"></i></th>
-							<td class="dashR">
-								<input type="password" class="w300" name="passwd" data-valid-type="password" required="required" data-valid-name="비밀번호"/>
-							</td>
-						</tr>
-						<tr>
-							<th class="dashR">비밀번호 확인<i class="star" aria-hidden="true"></i></th>
-							<td class="dashR">
-								<input type="password" class="w300" name="passwdConfirm" data-valid-type="password" required="required" data-valid-name="비밀번호 확인"/>
-							</td>
-						</tr>
-					</tbody>
-				</table>
-				<p class="dot cBlue">대문자, 소문자, 특수문자, 숫자로 구성해야 합니다.</p>
-				<p class="dot cBlue">이 중 3개 이상은 8 ~ 20자, 2개 이상은 10 ~ 20자로 설정해야 합니다.</p>
-			</form>
-		</li>
-		<li class="boxContentBtnB">
-			<button type="button" class="btn btn-success btn-lg " id="btnPasswordChange">저장</button>
-		</li>
-	</ul>
-
-<script th:inline="javascript">
-/*<![CDATA[*/
-	$('#btnPasswordChange').on('click', function() {
-		var formId = '#popupPasswordForm';
-		
-		if (!gagajf.validation(formId))
-			return false;
-		
-		var pwd = $('#popupPasswordForm input[name="passwd"]').val();
-		var pwdConfirm = $('#popupPasswordForm input[name="passwdConfirm"]').val();
-		
-		if (pwd != pwdConfirm) {
-			mcxDialog.alert('비밀번호를 확인해주세요.');
-			return;
-		}
-		
-		mcxDialog.confirm("비밀번호를 변경 하시겠습니까?", {
-			cancelBtnText: "취소",
-			sureBtnText: "확인",
-			sureBtnClick: function() {
-				gagajf.ajaxFormSubmit($(formId).prop('action'), formId, function() {
-					uifnPopClose('popupPassword');
-				});
-			}
-		});
-	});
-	
-	$(document).ready(function() {
-
-	});
-/*]]>*/
-</script>
-
-</html>

+ 0 - 198
style24.scm/src/main/webapp/WEB-INF/views/system/SampleFileForm.html

@@ -1,198 +0,0 @@
-<!DOCTYPE html>
-<html lang="ko"
-	xmlns:th="http://www.thymeleaf.org">
-<!--
- *******************************************************************************
- * @source  : SampleFileForm.html
- * @desc    : 샘플양식관리 Page
- *============================================================================
- * SISUN
- * Copyright(C) 2019 TSIT, All rights reserved.
- *============================================================================
- * VER  DATE         AUTHOR      DESCRIPTION
- * ===  ===========  ==========  =============================================
- * 1.0  2019.07.10   gagamel     최초 작성
- *******************************************************************************
- -->
-	<div id="main">
-		<!-- 메인타이틀 영역 -->
-		<div class="main-title">
-		</div>
-		<!-- //메인타이틀 영역 -->
-
-		<div class="panelStyle2">
-			<form id="registerForm" name="registerForm" action="#" th:action="@{'/system/sample/file/save'}">
-				<table class="frmStyle" aria-describedby="신규">
-					<colgroup>
-						<col style="width:10%;"/>
-						<col style="width:40%;"/>
-						<col style="width:10%;"/>
-						<col/>
-					</colgroup>
-					<tr>
-						<th>샘플파일ID<i class="star" aria-hidden="true"></i></th>
-						<td>
-							<input type="text" class="w100" name="sampleFileId" placeholder="" value="자동생성" readonly="readonly"/>
-						</td>
-						<th>샘플파일명<i class="star" aria-hidden="true"></i></th>
-						<td>
-							<input type="text" name="sampleFileNm" placeholder="" required="required" data-valid-name="샘플파일명"/>
-						</td>
-					</tr>
-					<tr>
-						<th>샘플파일<i class="star" aria-hidden="true"></i></th>
-						<td colspan="3">
-							<div class="uFile w600">
-								<input type="file" id="file" name="file" class="uFileInput"/>
-								<label for="file" class="uFileLabel">파일 선택</label>
-								<input type="hidden" name="orgFileNm"/>
-								<input type="hidden" name="sysFileNm"/>
-							</div>
-							<span style="margin-left: 10px; display: none;" id="sampleFileList">
-								<a href="">SMS수신_미동의_Sample.xlsx</a>
-							</span>
-						</td>
-					</tr>
-					<tr>
-						<th>사용여부<i class="star" aria-hidden="true"></i></th>
-						<td colspan="3">
-							<input type="hidden" name="useYn"/>
-							<label><input type="checkbox" name="chkUseYn" value="Y" checked="checked" disabled="disabled"/>사용</label>
-						</td>
-					</tr>
-				</table>
-
-				<div class="panelBtnB">
-					<button type="button" class="btn btn-info btn-lg" id="btnNew">신규</button>
-					<button type="button" class="btn btn-success btn-lg" id="btnSave">저장</button>
-				</div>
-			</form>
-		</div>
-
-		<div class="panelStyle2">
-			<div class="panelContent" style="overflow: hidden;">
-				<div id="gridList" style="width: 100%;" class="ag-theme-balham"></div>
-			</div>
-		</div>
-	</div>
-
-<script th:inline="javascript">
-/*<![CDATA[*/
-	// specify the columns
-	var columnDefs = [
-		{headerName: "샘플파일ID", field: "sampleFileId", width: 120, cellClass: 'text-center'},
-		{
-			headerName: "샘플파일명", field: "sampleFileNm", width: 300,
-			cellRenderer: function(params) {
-				return '<a href="javascript:void(0);">' + params.value + '</a>';
-			}
-		},
-		{headerName: "시스템파일명", field: "sysFileNm", width: 400},
-		{headerName: "사용여부", field: "useYn", width: 100, cellClass: 'text-center'}
-	];
-
-	// Get GridOptions
-	var gridOptions = gagaAgGrid.getGridOptions(columnDefs);
-
-	// Cell Click
-	gridOptions.onCellClicked = function(event) {
-		if (event.colDef.field != 'sampleFileNm')
-			return;
-
-		fnBindDetail(event.data);
-	}
-
-	// 조회
-	var fnSearch = function() {
-		gagaAgGrid.fetch('/system/sample/file/list', gridOptions);
-	}
-
-	// 목록 > row 클릭 시
-	var fnBindDetail = function(rowData) {
-		$('#registerForm input[name=sampleFileId]').val(rowData.sampleFileId);
-		$('#registerForm input[name=sampleFileNm]').val(rowData.sampleFileNm);
-		$('#registerForm input[name=orgFileNm]').val(rowData.orgFileNm);
-		$('#registerForm input[name=sysFileNm]').val(rowData.sysFileNm);
-		$('#sampleFileList').html('<a href="javascript:void(0);" onclick="cfnDownloadSampleFile(\'' + rowData.sampleFileId + '\');">' + rowData.sysFileNm + '</a>');
-		$('#sampleFileList').show();
-
-		$('#registerForm input:checkbox[name=chkUseYn]').attr('disabled', false);
-		$('#registerForm input:checkbox[name=chkUseYn]').removeClass('formControl');
-		$("#registerForm input[name=useYn]").val(rowData.useYn);
-		if (rowData.useYn == 'Y') {
-			$("#registerForm input:checkbox[name=chkUseYn]").prop('checked', true);
-			$("#registerForm input:checkbox[name=chkUseYn]").parent().addClass('checked');
-		} else {
-			$("#registerForm input:checkbox[name=chkUseYn]").prop('checked', false);
-			$("#registerForm input:checkbox[name=chkUseYn]").parent().removeClass('checked');
-		}
-	}
-
-	// 신규
-	$('#btnNew').on('click', function() {
-		$('#registerForm')[0].reset();
-		$('#registerForm input[name=sampleFileId]').val('자동생성');
-		$('#registerForm input[name=file]').val('');
-		$('#registerForm input:checkbox[name=chkUseYn]').attr('disabled', true);
-		$('#registerForm input:checkbox[name=chkUseYn]').addClass('formControl');
-		$('#sampleFileList').html('');
-		$('#sampleFileList').hide();
-	});
-
-	// 저장 처리
-	$('#btnSave').on('click', function() {
-		// 입력 값 체크
-		if (!gagajf.validation('#registerForm'))
-			return;
-
-		if (gagajf.isNull($('#registerForm input[name=sysFileNm]').val())) {
-			mcxDialog.alert('샘플파일을 선택해 주세요.');
-			return;
-		}
-
-		$('#registerForm input[name=useYn]').val($('#registerForm input:checkbox[name=chkUseYn]').is(":checked") ? 'Y' : 'N');
-
-		mcxDialog.confirm("저장하시겠습니까?", {
-			cancelBtnText: "취소",
-			sureBtnText: "확인",
-			sureBtnClick: function() {
-				gagajf.ajaxFormSubmit($('#registerForm').prop('action')
-						, $('#registerForm')
-						, function() {
-							$('#btnNew').trigger('click');
-							fnSearch();
-						}
-				);
-			}
-		});
-	});
-
-	// 파일첨부 선택 시
-	$('#registerForm input[name=file]').on('change', function() {
-		// multiple 속성이 있으면 files에는 다수의 객체가 할당됨
-		var file = this.files[0];
-
-		// 파일 업로드
-		gagajf.ajaxFileUpload('/common/file/upload?subDir=/sample'
-				, file
-				, function(result) {
-					// 업로드한 파일명 설정
-					$('#registerForm input[name=orgFileNm]').val(result.oldFileName);
-					$('#registerForm input[name=sysFileNm]').val(result.newFileName);
-				}
-		);
-	});
-
-	$(document).ready(function() {
-		// Create a agGrid
-		gagaAgGrid.createGrid('gridList', gridOptions);
-
-		// grid 높이 자동 조정
-		uifnFitGrid('auto');
-
-		fnSearch();
-	});
-/*]]>*/
-</script>
-
-</html>

+ 0 - 560
style24.scm/src/main/webapp/WEB-INF/views/system/SitePolicyForm.html

@@ -1,560 +0,0 @@
-<!DOCTYPE html>
-<html lang="ko"
-	xmlns:th="http://www.thymeleaf.org">
-<!--
- *******************************************************************************
- * @source  : SitePolicyForm.html
- * @desc    : 사이트정책관리 Page
- *============================================================================
- * SISUN
- * Copyright(C) 2019 TSIT, All rights reserved.
- *============================================================================
- * VER  DATE         AUTHOR      DESCRIPTION
- * ===  ===========  ==========  =============================================
- * 1.0  2020.01.13   jaewonHo   최초 작성
- *******************************************************************************
- -->
-<head>
-	<style>
-		input[type="text"]{
-			width:70%;
-		}
-		select{
-			width:80.7%;
-		}
-		.frmStyle th {
-		    padding: 2px 15px;
-		    height: 36px;
-		    line-height: 24px;
-		    white-space: nowrap;
-		    text-align: center;
-		    background: #e9ecfb;
-		    line-height: normal;
-		}
-	</style>
-</head>
-	<div id="main">
-		<!-- 메인타이틀 영역 -->
-		<div class="main-title">
-		</div>
-		<!-- //메인타이틀 영역 -->
-		<!-- 검색조건 영역 -->
-		<div class="panelStyle2">
-			<!-- Search -->
-			<form id="searchForm" name="searchForm" action="#" th:action="@{'/system/site/policy/list'}" onsubmit="$('#btnSearch').trigger('click'); return false;">
-				<table class="frmStyle">
-					<colgroup>
-						<col style="width:10%;"/>
-					</colgroup>
-					<tbody>
-						<tr>
-							<th>사이트</th>
-							<td>
-								<select name="siteCd" class="w150">
-									<option th:if="${siteList}" th:each="oneData, status : ${siteList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
-								</select>
-							</td>
-						</tr>
-					</tbody>
-				</table>
-				<div class="panelBtnB">
-					<button type="button" class="btn btn-base btn-lg" id="btnSearch" onclick="fnSearch('#searchForm');">조회</button>
-				</div>
-			</form>
-		</div>
-		<!-- //검색조건 영역 -->
-		<!-- 테이블 영역 -->
-		<div class="panelStyle2">
-			<form id="detailForm" name="detailForm" action="#" th:action="@{'/system/site/policy/save'}"  onsubmit="$('#btnSearch').trigger('click'); return false;">
-				<table class="frmStyle">
-					<colgroup>
-						<col style="width:9.5%;"/>
-						<col style="width:16.5%;"/>
-						<col style="width:9.5%;"/>
-						<col style="width:14.5%;"/>
-						<col style="width:9.5%;"/>
-						<col style="width:15.5%;"/>
-						<col style="width:9.5%;"/>
-						<col style="width:15.5%;"/>
-					</colgroup>
-					<tbody>
-						<tr>
-							<th>정책일련번호</th>
-							<td colspan = "3">
-								<input name="policySq" type="text" class="w100 aR" style="width:28% !important;" readonly/>
-								<em><font color="red"><i class="fa fa-info-circle"></i>현재 적용되고 있는 사이트 정책입니다.</font></em>
-							</td>
-							<th>사이트<i class="star"></i></th>
-							<td colspan = "3">
-								<select name="siteCd" required="required" data-valid-name="사이트" class="w150">
-									<option th:if="${siteList}" th:each="oneData, status : ${siteList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
-								</select>
-							</td>
-						</tr>
-						<tr>
-							<th rowspan="2">혜택구분<i class="star"></i></th>
-							<td rowspan="2">
-								<select name="benefitGb" onchange="fnBenefitGb(this.value)" data-valid-name="혜택구분" required>
-									<option value='C'>[C] 쿠폰</option>
-									<option value='P'>[P] 포인트</option>
-									<option value='B'>[B] 쿠폰/포인트</option>
-								</select>
-							</td>
-
-							<th>가입축하쿠폰</th>
-							<td colspan="3">
-								<input name="joinCpnNm" type="text" class="cpn" onkeyup="fnJoinCpnOnKeyUp(this);" style="width:150px;"/>
-								<button type="button" class="btn icn cpn" id="joinCpnIdBtn" onclick="fnCouponSerch('J')"><i class="fa fa-search cpn" aria-hidden="true"></i></button>
-								<input name="joinCpnId" type="text" style="width:80px;" readonly/>
-								<button type="button" class="btn icn" onclick="$('input[name=joinCpnId],input[name=joinCpnNm]').val('')"><i class="fa fa-eraser"></i></button>
-							</td>
-							<th>가입축하포인트</th>
-							<td>
-								<input name="joinPnt" type="text" class="aR point"  maxlength="5" />
-							</td>
-						</tr>
-						<tr>
-							<th>생일축하쿠폰</th>
-							<td colspan="3">
-								<input name="birthCpnNm" type="text" class="cpn" onkeyup="fnBirthCpnOnKeyUp(this);" style="width:150px;"/>
-								<button type="button" class="btn icn cpn" id="birthCpnIdBtn" onclick="fnCouponSerch('B')"><i class="fa fa-search" aria-hidden="true"></i></button>
-								<input name="birthCpnId" type="text" style="width:80px;" readonly/>
-								<button type="button" class="btn icn" onclick="$('input[name=birthCpnId],input[name=birthCpnNm]').val('')"><i class="fa fa-eraser"></i></button>
-							</td>
-							<th>생일축하포인트</th>
-							<td>
-								<input name="birthPnt" type="text" class="aR point"  maxlength="5" />
-							</td>
-						</tr>
-						<tr>
-							<th>가용포인트전환대기일수<i class="star"></i></th>
-							<td>
-								<input name="usablePntPendingDays" type="text" class="aR"  maxlength="5" required="required" data-valid-name="가용포인트전환대기일수"/>일
-							</td>
-							<th>텍스트상품평포인트<i class="star"></i></th>
-							<td>
-								<input name="textReviewPnt" type="text" class="aR"  maxlength="5" required="required" data-valid-name="텍스트상품평포인트"/>
-							</td>
-							<th>포토상품평포인트<i class="star"></i></th>
-							<td>
-								<input name="photoReviewPnt" type="text" class="aR"  maxlength="5" required="required" data-valid-name="일반상품평포인트"/>
-							</td>
-							<th>앱최초설치포인트<i class="star"></i></th>
-							<td>
-								<input name="appFsetupPnt" type="text" class="aR" required="required" data-valid-name="앱최초설치포인트"/>
-							</td>
-						</tr>
-						<tr>
-							<th>자사상품포인트적립율(PC정상)<i class="star"></i></th>
-							<td>
-								<input name="sgoodsPntPrate10" type="text" class="aR"  maxlength="5" required="required" data-valid-name="자사상품포인트적립율(PC정상)"/>%
-							</td>
-							<th>자사상품포인트적립율(모바일정상)<i class="star"></i></th>
-							<td>
-								<input name=sgoodsPntMrate10 type="text" class="aR"  maxlength="5" required="required" data-valid-name="자사상품포인트적립율(모바일정상)"/>%
-							</td>
-							<th>자사상품포인트적립율(PC이월)<i class="star"></i></th>
-							<td>
-								<input name="sgoodsPntPrate20" type="text" class="aR"  maxlength="5" required="required" data-valid-name="자사상품포인트적립율(PC이월)"/>%
-							</td>
-							<th>자사상품포인트적립율(모바일이월)<i class="star"></i></th>
-							<td>
-								<input name="sgoodsPntMrate20" type="text" class="aR"  maxlength="5" required="required" data-valid-name="자사상품포인트적립율(모바일이월)"/>%
-							</td>
-						</tr>
-						<tr>
-							<th>입점상품포인트적립율(PC정상)<i class="star"></i></th>
-							<td>
-								<input name="egoodsPntPrate10" type="text" class="aR"  maxlength="5" required="required" data-valid-name="입점상품포인트적립율(PC정상)"/>%
-							</td>
-							<th>입점상품포인트적립율(모바일정상)<i class="star"></i></th>
-							<td>
-								<input name="egoodsPntMrate10" type="text" class="aR"  maxlength="5" required="required" data-valid-name="입점상품포인트적립율(모바일정상)"/>%
-							</td>
-							<th>입점상품포인트적립율(PC이월)<i class="star"></i></th>
-							<td>
-								<input name="egoodsPntPrate20" type="text" class="aR"  maxlength="5" required="required" data-valid-name="입점상품포인트적립율(PC이월)"/>%
-							</td>
-							<th>입점상품포인트적립율(모바일이월)<i class="star"></i></th>
-							<td>
-								<input name="egoodsPntMrate20" type="text" class="aR"  maxlength="5" required="required" data-valid-name="입점상품포인트적립율(모바일이월"/>%
-							</td>
-						</tr>
-						<tr>
-							<th>배송지연보상기준일수<i class="star"></i></th>
-							<td>
-								<input name="shipDelayBaseDays" type="text" class="aR"  maxlength="5" required="required" data-valid-name="배송지연보상기준일수"/>일
-							</td>
-							<th>배송지연보상포인트<i class="star"></i></th>
-							<td>
-								<input name="shipDelayPnt" type="text" class="aR"  maxlength="5" required="required" data-valid-name="배송지연보상포인트"/>
-							</td>
-							<th>품절보상기준일수<i class="star"></i></th>
-							<td>
-								<input name="soldoutBaseDays" type="text" class="aR"  maxlength="5" required="required" data-valid-name="품절보상기준일수"/>일
-							</td>
-							<th>품절보상포인트<i class="star"></i></th>
-							<td>
-								<input name="soldoutPnt" type="text" class="aR"  maxlength="5" required="required" data-valid-name="품정보상포인트"/>
-							</td>
-						</tr>
-						<tr>
-							<th>사용가능포인트구분<i class="star"></i></th>
-							<td>
-								<label class="rdoBox"><input type="radio" name="usePossibPntGb" value="A" checked="checked" onclick="fnUsePntGb('A');">정액<span></span></label>
-								<label class="rdoBox"><input type="radio" name="usePossibPntGb" value="R" onclick="fnUsePntGb('R');">정율<span></span></label>
-							</td>
-							<th>사용가능최대포인트<i class="star"></i></th>
-							<td>
-								<input name="usePossibMaxPnt" type="text" class="aR"  maxlength="5" required="required" data-valid-name="사용가능최대포인트"/>
-								<span id="pntR">%</span>
-							</td>
-							<th>사용포인트단위<i class="star"></i></th>
-							<td>
-								<select name="usePntUnit" required="required" data-valid-name="사용포인트단위">
-									<option value=''>선택</option>
-									<option value='10'>원단위절사</option>
-									<option value='100'>십원단위절사</option>
-									<option value='1000'>백원단위절사</option>
-								</select>
-							</td>
-							<th>무료배송비최소주문금액<i class="star"></i></th>
-							<td>
-								<input name="minOrdAmt" type="text" class="aR"  maxlength="5" required="required" data-valid-name="사용가능최대포인트"/>
-							</td>
-						</tr>
-					</tbody>
-				</table>
-				<div class="panelBtnB">
-					<button type="button" class="btn btn-success btn-lg" id="btnSave" onclick="fnSave('#detailForm');">저장</button>
-				</div>
-			</form>
-		</div>
-		<!-- 리스트 영역 -->
-		<div class="panelStyle2">
-			<div class="panelContent" style="overflow: hidden;">
-				<div id="gridList" style="width: 100%; height: 500px;" class="ag-theme-balham"></div>
-			</div>
-		</div>
-		<!-- //리스트 영역 -->
-	</div>
-
-<script th:inline="javascript">
-/*<![CDATA[*/
-
-	var siteList = gagajf.convertToArray([[${siteList}]]);
-	var benefitGbList = {"C":"쿠폰", "P":"포인트", "B":"쿠폰/포인트"};
-	var usePntUnitList = {"10" :"10:원단위절사", "100" :"100:원단위절사", "1000" :"1000:원단위절사"};
-	var usePossibPntGbList = {"A" : "정액", "R" : "정율"};
-
-	// specify the columns
-	var columnDefs = [
-		{headerName: "정책일련번호"					, field: "policySq"			, width: 100 , cellClass: 'text-center', pinned: 'left' },
-		{headerName: "사이트"						, field: "siteCd"			, width: 120 , cellClass: 'text-center', pinned: 'left' ,
-			valueFormatter: function (params) {
-				return gagaAgGrid.lookupValue(siteList, params.value);
-			}
-		},
-		{headerName: "혜택구분"					, field: "benefitGb"			, width: 90 , cellClass: 'text-center', pinned: 'left',
-			valueFormatter: function (params) {
-				return gagaAgGrid.lookupValue(benefitGbList, params.value);
-			}
-		},
-		{headerName: "가입축하쿠폰ID"				, field: "joinCpnId"			, width: 140 , cellClass: 'text-center', pinned: 'left' },
-		{headerName: "가입축하포인트"				, field: "joinPnt"				, width: 120 , cellClass: 'text-center', pinned: 'left' },
-		{headerName: "생일축하쿠폰ID"				, field: "birthCpnId"			, width: 140 , cellClass: 'text-center', pinned: 'left' },
-		{headerName: "생일축하포인트"				, field: "birthPnt"				, width: 120 , cellClass: 'text-center', pinned: 'left' },
-		{headerName: "가용포인트전환대기일수"			, field: "usablePntPendingDays"	, width: 150 , cellClass: 'text-center' },
-		{headerName: "자사상품포인트적립율(PC정상)"	, field: "sgoodsPntMrate10"		, width: 150 , cellClass: 'text-center'
-			,valueFormatter: function(params) { return Number(params.value).addComma();}
-		},
-		{headerName: "자사상품포인트적립율(모바일정상)"	, field: "sgoodsPntMrate10"		, width: 150 , cellClass: 'text-center'
-			,valueFormatter: function(params) { return Number(params.value).addComma();}
-		},
-		{headerName: "자사상품포인트적립율(PC이월)"	, field: "sgoodsPntPrate20"		, width: 150 , cellClass: 'text-center'
-			,valueFormatter: function(params) { return Number(params.value).addComma();}
-		},
-		{headerName: "자사상품포인트적립율(모바일이월)"	, field: "sgoodsPntMrate20"		, width: 150 , cellClass: 'text-center'
-			,valueFormatter: function(params) { return Number(params.value).addComma();}
-		},
-		{headerName: "입점상품포인트적립율(PC정상)"	, field: "egoodsPntPrate10"		, width: 150 , cellClass: 'text-center'
-			,valueFormatter: function(params) { return Number(params.value).addComma();}
-		},
-		{headerName: "입점상품포인트적립율(모바일정상)"	, field: "egoodsPntMrate10"		, width: 150 , cellClass: 'text-center'
-			,valueFormatter: function(params) { return Number(params.value).addComma();}
-		},
-		{headerName: "입점상품포인트적립율(PC이월)"	, field: "egoodsPntPrate20"		, width: 150 , cellClass: 'text-center'
-			,valueFormatter: function(params) { return Number(params.value).addComma();}
-		},
-		{headerName: "입점상품포인트적립율(모바일이월)"	, field: "egoodsPntMrate20"		, width: 150 , cellClass: 'text-center'
-			,valueFormatter: function(params) { return Number(params.value).addComma();}
-		},
-		{headerName: "텍스트상품평포인트"				, field: "textReviewPnt"		, width: 150 , cellClass: 'text-center'
-			,valueFormatter: function(params) { return Number(params.value).addComma();}
-		},
-		{headerName: "포토상품평포인트"				, field: "photoReviewPnt"		, width: 150 , cellClass: 'text-center'
-			,valueFormatter: function(params) { return Number(params.value).addComma();}
-		},
-		{headerName: "최소주문금액"					, field: "minOrdAmt"			, width: 150 , cellClass: 'text-center'
-			,valueFormatter: function(params) { return Number(params.value).addComma();}
-		},
-		{headerName: "배송지연보상기준일수"			, field: "shipDelayBaseDays"	, width: 150 , cellClass: 'text-center' },
-		{headerName: "배송지연보상포인트"				, field: "shipDelayPnt"			, width: 150 , cellClass: 'text-center'
-			,valueFormatter: function(params) { return Number(params.value).addComma();}
-		},
-		{headerName: "품절보상기준일수"				, field: "soldoutBaseDays"		, width: 150 , cellClass: 'text-center' },
-		{headerName: "품절보상포인트"				, field: "soldoutPnt"			, width: 150 , cellClass: 'text-center'
-			,valueFormatter: function(params) { return Number(params.value).addComma();}
-		},
-		{headerName: "사용가능포인트구분"				, field: "usePossibPntGb"		, width: 140 , cellClass: 'text-center',
-			valueFormatter: function (params) {
-				return gagaAgGrid.lookupValue(usePossibPntGbList, params.value);
-			}
-		},
-		{headerName: "사용가능최대포인트"				, field: "usePossibMaxPnt"		, width: 110 , cellClass: 'text-center'
-			,valueFormatter: function(params) { return Number(params.value).addComma();}
-		},
-		{headerName: "사용포인트단위"				, field: "usePntUnit"			, width: 140 , cellClass: 'text-center',
-			valueFormatter: function (params) {
-				return gagaAgGrid.lookupValue(usePntUnitList, params.value);
-			}
-		},
-		{headerName: "등록아이디"					, field: "regId"				, width: 110 , cellClass: 'text-center' },
-		{headerName: "등록일"						, field: "regDt"				, width: 110 , cellClass: 'text-center',
-			cellRenderer: function(params) {
-				return !gagajf.isNull(params.value) ? params.value.toDate("YYYYMMDD").format("YYYY-MM-DD") : '';
-			}
-		}
-	];
-
-	var gridOptionsPolicy = gagaAgGrid.getGridOptions(columnDefs);
-
-	//조회
-	var fnSearch = function() {
-		$('#detailForm')[0].reset();
-
-		var siteCd = $('#searchForm select[name=siteCd]').val();
-		var actionUrl = $('#searchForm').prop('action') +'/'+siteCd;
-		gagaAgGrid.fetch(actionUrl, gridOptionsPolicy, '#searchForm', fnSearchCallBack);
-	}
-	var fnSearchCallBack = function(){
-		fnBindDetail(gridOptionsPolicy.api.getRowNode(0).data);
-
-		//혜택구분 쿠폰/포인트 초기화
-		fnBenefitGb(gridOptionsPolicy.api.getRowNode(0).data.benefitGb);
-	}
-
-	// 셀클릭시 바인딩
-	gridOptionsPolicy.onCellClicked = function(event) {
-		fnBindDetail(event.data);
-		fnBenefitGb(event.data.fnBenefitGb);
-	}
-
-	//로우클릭시 셋팅
-	fnBindDetail = function(rowData){
-		formId = '#detailForm';
-		$(formId + ' input[name=policySq]').val(rowData.policySq);
-		$(formId + ' select[name=siteCd]').val(rowData.siteCd).prop("selected", true);
-		$(formId + ' select[name=benefitGb]').val(rowData.benefitGb).prop("selected", true);
-
-		$(formId + ' input[name=joinCpnId]').val(rowData.joinCpnId);
-		$(formId + ' input[name=joinCpnNm]').val(rowData.joinCpnNm);
-		$(formId + ' input[name=joinPnt]').val(rowData.joinPnt);
-
-		$(formId + ' input[name=birthCpnId]').val(rowData.birthCpnId);
-		$(formId + ' input[name=birthCpnNm]').val(rowData.birthCpnNm);
-		$(formId + ' input[name=birthPnt]').val(rowData.birthPnt);
-
-		$(formId + ' input[name=sgoodsPntPrate10]').val(rowData.sgoodsPntPrate10.addComma());
-		$(formId + ' input[name=sgoodsPntMrate10]').val(rowData.sgoodsPntMrate10.addComma());
-		$(formId + ' input[name=sgoodsPntPrate20]').val(rowData.sgoodsPntPrate20.addComma());
-		$(formId + ' input[name=sgoodsPntMrate20]').val(rowData.sgoodsPntMrate20.addComma());
-		$(formId + ' input[name=egoodsPntPrate10]').val(rowData.egoodsPntPrate10.addComma());
-		$(formId + ' input[name=egoodsPntMrate10]').val(rowData.egoodsPntMrate10.addComma());
-		$(formId + ' input[name=egoodsPntPrate20]').val(rowData.egoodsPntPrate20.addComma());
-		$(formId + ' input[name=egoodsPntMrate20]').val(rowData.egoodsPntMrate20.addComma());
-		$(formId + ' input[name=appFsetupPnt]').val(rowData.appFsetupPnt.addComma());
-		$(formId + ' input[name=usablePntPendingDays]').val(rowData.usablePntPendingDays);
-		$(formId + ' input[name=textReviewPnt]').val(rowData.textReviewPnt.addComma());
-		$(formId + ' input[name=photoReviewPnt]').val(rowData.photoReviewPnt.addComma());
-		$(formId + ' input[name=usePossibMaxPnt]').val(rowData.usePossibMaxPnt.addComma());
-		$(formId + ' input[name=minOrdAmt]').val(rowData.minOrdAmt.addComma());
-		$(formId + ' input[name=shipDelayBaseDays]').val(rowData.shipDelayBaseDays);
-		$(formId + ' input[name=shipDelayPnt]').val(rowData.shipDelayPnt.addComma());
-		$(formId + ' input[name=soldoutBaseDays]').val(rowData.soldoutBaseDays);
-		$(formId + ' input[name=soldoutPnt]').val(rowData.soldoutPnt.addComma());
-		$(formId + ' select[name=usePntUnit]').val(rowData.usePntUnit).prop("selected", true);
-		$(formId + " input:radio[name=usePossibPntGb]:input[value="+rowData.usePossibPntGb+"]").click();
-	}
-
-	// 사용가능포인트 구분시 사용가능최대포인트 %
-	var fnUsePntGb = function(pntGb) {
-		if(pntGb == "A") {
-			$("#pntR").html("원");
-		}else if(pntGb == "R") {
-			$("#pntR").html("%");
-		}
-
-	}
-
-	// 혜택구분(C:쿠폰, P:포인트, B:둘다) 선택시 이벤트
-	var fnBenefitGb = function(pVal) {
-		// 가입축하쿠폰ID(혜택구분이 "C:쿠폰" 또는 "B:둘다"일 때 사용)
-		if(pVal == "C") {
-			$(".cpn").each(function(){
-				$(this).attr("disabled", false);
-			});
-			$(".point").each(function(){
-				$(this).attr("disabled", true);
-			});
-		}else if(pVal == "P"){
-			$(".cpn").each(function(){
-				$(this).attr("disabled", true);
-			});
-			$(".point").each(function(){
-				$(this).attr("disabled", false);
-			});
-		}else if(pVal == "B"){
-			$(".cpn").each(function(){
-				$(this).attr("disabled", false);
-			});
-			$(".point").each(function(){
-				$(this).attr("disabled", false);
-			});
-		}
-	}
-
-	// 쿠폰가지고 오기
-	var fnCouponSerch = function(type) {
-		var actionUrl = "/marketing/policy/coupon/popup/form?callBackFun=fnResult&type="+type;
-		cfnOpenModalPopup(actionUrl,'popupCoupon');
-	}
-
-	// 가지고온 쿠폰값 셋팅
-	var fnResult = function(result) {
-		if(result[0].type == 'J'){
-			$('#detailForm input[name=joinCpnId]').val(result[0].cpnId);
-		}else if(result[0].type == 'B'){
-			$('#detailForm input[name=birthCpnId]').val(result[0].cpnId);
-		}
-	}
-
-	//저장
-	fnSave = function(){
-
-		var formId = '#detailForm';
-		// 입력 값 체크
-		if (!gagajf.validation(formId))
-			return false;
-
-		var siteCd = 					$(formId + " select[name=siteCd]").val();                      //사이트
-		var joinCpnId = 				$(formId + " input[name=joinCpnId]").val();                    //가입쿠폰ID
-		var birthCpnId = 				$(formId + " input[name=birthCpnId]").val();                   //생일쿠폰ID
-		var joinPnt = 					$(formId + " input[name=joinPnt]").val().removeComma();              //가입포인트
-		var birthPnt = 					$(formId + " input[name=birthPnt]").val().removeComma();             //생일포인트
-		var benefitGb = 				$(formId + " select[name=benefitGb]").val();                   //해택구분
-		var appFsetupPnt =				$(formId + " input[name=appFsetupPnt]").val().removeComma();         //앱최초설치포인트
-		var sgoodsPntMrate10 = 			$(formId + " input[name=sgoodsPntMrate10]").val().removeComma();     //자사상품포인트적립율(PC정상)
-		var sgoodsPntMrate20 = 			$(formId + " input[name=sgoodsPntMrate20]").val().removeComma();     //자사상품포인트적립율(모바일정상)
-		var sgoodsPntPrate10 = 			$(formId + " input[name=sgoodsPntPrate10]").val().removeComma();     //자사상품포인트적립율(PC이월)
-		var sgoodsPntPrate20 = 			$(formId + " input[name=sgoodsPntPrate20]").val().removeComma();     //자사상품포인트적립율(모바일이월)
-		var egoodsPntMrate10 = 			$(formId + " input[name=egoodsPntMrate10]").val().removeComma();     //입점상품포인트적립율(PC정상)
-		var egoodsPntMrate20 = 			$(formId + " input[name=egoodsPntMrate20]").val().removeComma();     //입점상품포인트적립율(모바일정상)
-		var egoodsPntPrate10 = 			$(formId + " input[name=egoodsPntPrate10]").val().removeComma();     //입점상품포인트적립율(PC이월)
-		var egoodsPntPrate20 = 			$(formId + " input[name=egoodsPntPrate20]").val().removeComma();     //입점상품포인트적립율(모바일이월)
-		var usablePntPendingDays = 		$(formId + " input[name=usablePntPendingDays]").val().removeComma(); //가용포인트전환대기일수
-		var textReviewPnt = 			$(formId + " input[name=textReviewPnt]").val().removeComma();        //텍스트상품평포인트
-		var photoReviewPnt = 			$(formId + " input[name=photoReviewPnt]").val().removeComma();       //포토상품평포인트
-		var usePossibMaxPnt = 			$(formId + " input[name=usePossibMaxPnt]").val().removeComma();      //사용가능최대포인트
-		var minOrdAmt = 				$(formId + " input[name=minOrdAmt]").val().removeComma();            //무료배송비최소주문금액
-		var shipDelayBaseDays = 		$(formId + " input[name=shipDelayBaseDays]").val();            //배송지연보상기준일수
-		var shipDelayPnt = 				$(formId + " input[name=shipDelayPnt]").val().removeComma();         //배송지연보상포인트
-		var soldoutBaseDays = 			$(formId + " input[name=soldoutBaseDays]").val();              //품절보상기준일수
-		var soldoutPnt = 				$(formId + " input[name=soldoutPnt]").val().removeComma();           //품절보상포인트
-		var usePntUnit =				$(formId + " select[name=usePntUnit]").val();                  //사용포인트단위
-		var usePossibPntGb = 			$(formId + " input:radio[name=usePossibPntGb]:checked").val(); //사용가능포인트구분
-
-		mcxDialog.confirm("저장하시겠습니까?", {
-			cancelBtnText: "취소",
-			sureBtnText: "확인",
-			sureBtnClick: function() {
-				var data = {
-						formId : formId
-						,siteCd  				: siteCd
-						,joinCpnId  			: joinCpnId
-						,birthCpnId  			: birthCpnId
-						,joinPnt  				: joinPnt
-						,birthPnt  				: birthPnt
-						,benefitGb  			: benefitGb
-						,appFsetupPnt 			: appFsetupPnt
-						,sgoodsPntMrate10 		: sgoodsPntMrate10
-						,sgoodsPntMrate20 		: sgoodsPntMrate20
-						,sgoodsPntPrate10 		: sgoodsPntPrate10
-						,sgoodsPntPrate20 		: sgoodsPntPrate20
-						,egoodsPntMrate10 		: egoodsPntMrate10
-						,egoodsPntMrate20 		: egoodsPntMrate20
-						,egoodsPntPrate10 		: egoodsPntPrate10
-						,egoodsPntPrate20 		: egoodsPntPrate20
-						,usablePntPendingDays 	: usablePntPendingDays
-						,textReviewPnt  		: textReviewPnt
-						,photoReviewPnt  		: photoReviewPnt
-						,usePossibMaxPnt  		: usePossibMaxPnt
-						,minOrdAmt  			: minOrdAmt
-						,shipDelayBaseDays		: shipDelayBaseDays
-						,shipDelayPnt  			: shipDelayPnt
-						,soldoutBaseDays  		: soldoutBaseDays
-						,soldoutPnt  			: soldoutPnt
-						,usePntUnit 			: usePntUnit
-						,usePossibPntGb  		: usePossibPntGb
-				};
-				var jsonData = JSON.stringify(data);
-				gagajf.ajaxJsonSubmit($(formId).prop('action'), jsonData, fnSaveCallback);
-			}
-		});
-	}
-
-	var fnSaveCallback = function () {
-		fnSearch();
-		$("#detailForm")[0].reset();
-	}
-
-	$(document).ready(function() {
-		gagaAgGrid.createGrid('gridList', gridOptionsPolicy);
-
-		//혜택구분 쿠폰/포인트 초기화
-		fnBenefitGb('B');
-
-		$(":input[name=benefitGb]").change();
-
-		fnSearch();
-	});
-
-
-	/*가입축하쿠폰 온키업 이벤트*/
-	var fnJoinCpnOnKeyUp = function(pThis){
-		if(window.event.keyCode == 13){
-			var actionUrl = "/marketing/policy/coupon/popup/form?callBackFunc=fnJoinCallBack&cpnNm="+$(pThis).val();
-			cfnOpenModalPopup(actionUrl,'popupCoupon');
-		}
-	}
-	var fnJoinCallBack = function(params){
-		$("input[name=joinCpnId]").val(params[0].cpnId);
-		$("input[name=joinCpnNm]").val(params[0].cpnNm);
-	}
-
-	//생일축하쿠폰 온키업 이벤트
-	var fnBirthCpnOnKeyUp = function(pThis){
-		if(window.event.keyCode == 13){
-			var actionUrl = "/marketing/policy/coupon/popup/form?callBackFunc=fnBirthCallBack&cpnNm="+$(pThis).val();
-			cfnOpenModalPopup(actionUrl,'popupCoupon');
-		}
-	}
-	var fnBirthCallBack = function(params){
-		$("input[name=birthCpnId]").val(params[0].cpnId);
-		$("input[name=birthCpnNm]").val(params[0].cpnNm);
-	}
-
-
-/*]]>*/
-</script>
-</html>

+ 0 - 375
style24.scm/src/main/webapp/WEB-INF/views/system/SystemAlarmForm.html

@@ -1,375 +0,0 @@
-<!DOCTYPE html>
-<html lang="ko"
-	xmlns:th="http://www.thymeleaf.org">
-<!--
- *******************************************************************************
- * @source  : SystemAlarmForm.html
- * @desc    : 시스템알람관리 화면 Page
- *=============================================================
- * Wivismall
- * Copyright(C) 2019 TSIT, All rights reserved.
- *=============================================================
- * VER  DATE         AUTHOR      DESCRIPTION
- * ===  ===========  ==========  ==================================
- * 1.0  2020.05.19   yujung      최초 작성
- *******************************************************************************
- -->
-	<div id="main">
-		<div class="main-title">
-		</div>
-
-		<div class="panelStyle2">
-			<form id="searchForm" name="searchForm" action="#" th:action="@{'/system/alarm/list'}" onsubmit="$('#btnSearch').trigger('click'); return false;">
-				<table class="frmStyle" aria-describedby="검색조건">
-					<colgroup>
-						<col style="width:80px;"/>
-						<col style="width:500px;"/>
-						<col/>
-					</colgroup>
-					<tbody>
-						<tr>
-							<th class="dashR">알람제목</th>
-							<td class="dashR">
-								<input type="text" name="alarmTitle" class="w300"/>
-							</td>
-						</tr>
-					</tbody>
-				</table>
-				<div class="panelBtnB">
-					<input type="button" value="초기화" class="btn btn-gray btn-lg" id="btnReset" onclick="$('#searchForm')[0].reset();"/>
-					<input type="button" value="조회" class="btn btn-base btn-lg" id="btnSearch" onclick="fnSearch();"/>
-				</div>
-			</form>
-		</div>
-		
-		<div class="panelStyle2">
-			<table class="frmStyle">
-				<colgroup>
-					<col style="width:60%;"/>
-					<col/>
-				</colgroup>
-				<tr>
-					<td style="border-top: none;">
-						<ul class="lrStyle">
-							<li class="padB10">
-								<h4 style="margin-top: -10px;">알람목록</h4>
-							</li>
-						</ul>
-						
-						<div class="panelContent" style="overflow: hidden;">
-							<div id="alarmGridList" style="width: 100%; height: 630px;" class="ag-theme-balham"></div>
-						</div>
-					</td>
-					<td style="border-top: none; vertical-align: top;">
-						<ul class="lrStyle">
-							<li class="padB10">
-								<button type="button" class="btn btn-info btn-lg" id="btnNew">신규</button>
-								<button type="button" class="btn btn-success btn-lg" id="btnSave">저장</button>
-							</li>
-						</ul>
-						
-						<form id="detailForm" name="detailForm" action="#" th:action="@{'/system/basic/answer/save'}">
-							<table >
-								<colgroup>
-									<col style="width:10%;"/>
-									<col style="width:20%;"/>
-									<col style="width:10%;"/>
-									<col style="width:20%;"/>
-									<col style="width:10%;"/>
-									<col style="width:20%;"/>
-									<col/>
-								</colgroup>
-								<tr>
-									<th>알람ID<i class="star"></i></th>
-									<td>
-										<input type="text" name="alarmId" readonly="readonly" placeholder="자동생성"/><!-- required="required" data-valid-name="알람ID" -->
-									</td>
-									
-									<th>사용여부</th>
-									<td>
-										<input type="hidden" name="useYn" value="Y"/>
-										<label><input type="checkbox" name="chkUseYn" checked="checked"/>사용</label>
-									</td>
-								</tr>
-								<tr>
-									<th>알람제목<i class="star"></i></th>
-									<td colspan="3">
-										<input type="text" name="alarmTitle" required="required" data-valid-name="알람제목"/>
-									</td>
-								</tr>
-								<tr>
-									<th>알람메세지<i class="star"></i><br/>(<span name="count"> 0 </span> / 80 byte)</th>
-									<td colspan="9">
-										<input type="text" name="alarmMsg" required="required" data-valid-name="알람메시지"/>
-									</td>
-								</tr>
-								<tr>
-									<td colspan="4" style="padding-left: 0px;padding-right: 0px;">
-										<div class="aL">
-											<h4>알람 수신자</h4>
-											<button type="button" class="btn btn-warning btn-sm" id="btnAddRow">행추가</button>
-											<button type="button" class="btn btn-danger btn-sm" id="btnDeleteRow">행삭제</button>
-											<button type="button" class="btn btn-success btn-lg" id="btnReciverSave" style="margin-left:335px;">저장</button>
-										</div>
-										
-										<input type="hidden" id="reciverAlarmId"/>
-										<div id="receiverGridList" style="width: 100%; height: 455px;" class="ag-theme-balham"></div>
-									</td>
-								</tr>
-							</table>
-						</form>
-					</td>
-				</tr>
-			</table>
-		</div>
-		
-	</div>
-
-<script th:inline="javascript">
-/*<![CDATA[*/
-
-	var useYnList = { "Y":"Yes", "N":"No" };
-	
-	var alarmColumnDefs = [
-// 		{headerName: "삭제",		field:'delete',			width:60,	cellClass: 'text-center'
-// 			, cellRenderer: function(params) {
-// 				return "<a href=\"javascript:void(0);\" class=\"btn btn-danger btn-sm\">삭제</a>";
-// 			}
-// 		},
-		{headerName: "알람ID",		field:'alarmId',		width:100,	cellClass: 'text-center'
-// 			, cellRenderer: function(params) { return '<a href=\"javascript:void(0);\">' + params.value + '</a>'; }
-		},
-		{headerName: "알람제목",	field:'alarmTitle',		width:250,	cellClass: 'text-left'
-			, cellRenderer: function(params) { return '<a href=\"javascript:void(0);\">' + params.value + '</a>'; }
-		},
-		{headerName: "알람메세지",	field:'alarmMsg',		width:455,	cellClass: 'text-left'},
-		{headerName: "사용여부",	field:'useYn',			width:80,	cellClass: 'text-center'},
-		
-		{headerName: "등록자",		field:'regId',			width:120,	cellClass: 'text-center', hide: true},
-		{headerName: "등록일시",	field:'regDt',			width:150,	cellClass: 'text-center', hide: true,
-			cellRenderer: function(params) {
-				return !gagajf.isNull(params.value) ? params.value.toDate("YYYY/MM/DD HH:mm:ss").format("YYYY-MM-DD HH:mm:ss") : '';
-			}	
-		},
-		{headerName: "수정자",		field:'updId',			width:120,	cellClass: 'text-center', hide: true},
-		{headerName: "수정일시",	field:'updDt',			width:150,	cellClass: 'text-center', hide: true,
-			cellRenderer: function(params) {
-				return !gagajf.isNull(params.value) ? params.value.toDate("YYYY/MM/DD HH:mm:ss").format("YYYY-MM-DD HH:mm:ss") : '';
-			}	
-		}
-	];
-	
-	var receiverColumnDefs = [
-		{width: 40, minWidth: 40, cellClass: 'text-center', headerCheckboxSelection: true, checkboxSelection: true, filter: false},
-		{headerName: "알람ID",		field:'alarmId',		width:100,	cellClass: 'text-center', editable:false},
-		{headerName: "수신자명",	field:'receiverNm',		width:100,	cellClass: 'text-center', cellEditorParams: { maxlength: 4, required: true }},
-		{headerName: "수신자번호",	field:'cellPhnno',		width:150,	cellClass: 'text-center', cellEditorParams: { maxlength: 11, required: true }},
-		{headerName: "사용여부",	field:'useYn',			width:80,	cellClass: 'text-center',
-			cellEditor: 'agRichSelectCellEditor',
-			cellEditorParams: { values: gagaAgGrid.extractValues(useYnList), maxlength: 20, required: true},
-			valueFormatter: function (params) { return gagaAgGrid.lookupValue(useYnList, params.value); },
-			valueParser: function (params) { return gagaAgGrid.lookupKey(useYnList, params.newValue); }	
-		},
-		{headerName: "등록자",		field:'regId',			width:120,	cellClass: 'text-center', hide: true},
-		{headerName: "등록일시",	field:'regDt',			width:150,	cellClass: 'text-center', hide: true,
-			cellRenderer: function(params) {
-				return !gagajf.isNull(params.value) ? params.value.toDate("YYYY/MM/DD HH:mm:ss").format("YYYY-MM-DD HH:mm:ss") : '';
-			}	
-		},
-		{headerName: "수정자",		field:'updId',			width:120,	cellClass: 'text-center', hide: true},
-		{headerName: "수정일시",	field:'updDt',			width:150,	cellClass: 'text-center', hide: true,
-			cellRenderer: function(params) {
-				return !gagajf.isNull(params.value) ? params.value.toDate("YYYY/MM/DD HH:mm:ss").format("YYYY-MM-DD HH:mm:ss") : '';
-			}	
-		}
-	]
-	
-	
-	var alarmGridOptions = gagaAgGrid.getGridOptions(alarmColumnDefs);
-	var receiverGridOptions = gagaAgGrid.getGridOptions(receiverColumnDefs);
-	receiverGridOptions.rowSelection = 'multiple';
-	receiverGridOptions.defaultColDef.editable = true;
-	receiverGridOptions.stopEditingWhenGridLosesFocus = true;
-	
-	// 셀 클릭 이벤트
-	alarmGridOptions.onCellClicked = function(event) {
-		if (event.colDef.field == 'alarmTitle') {
-			fnReceiverSearch(event.data.alarmId);
-			fnBindData(event.data);
-		}
-		
-		if (event.colDef.field == 'alarmId') {
-// 			fnReceiverSearch(event.data.alarmId);
-		}
-		
-		if (event.colDef.field == 'delete') {
-// 			fnDeleteAlarm(event.data.alarmId);
-		}
-	}
-	
-	// 바인딩
-	var fnBindData = function(data) {
-		$('#detailForm input[name=alarmId]').val(data.alarmId);
-		$('#detailForm input[name=alarmTitle]').val(data.alarmTitle);
-		$('#detailForm input[name=alarmMsg]').val(data.alarmMsg);
-		
-		if (data.useYn == 'Y') {
-			$("#detailForm input:checkbox[name=chkUseYn]").prop('checked', true);
-			$("#detailForm input:checkbox[name=chkUseYn]").parent().addClass('checked');
-		} else {
-			$("#detailForm input:checkbox[name=chkUseYn]").prop('checked', false);
-			$("#detailForm input:checkbox[name=chkUseYn]").parent().removeClass('checked');
-		}
-		
-	}
-	// 검색
-	var fnSearch = function() {
-		var formId = '#searchForm';
-		gagaAgGrid.fetch($(formId).prop('action'), alarmGridOptions, formId);
-	}
-	
-	// 신규
-	$('#btnNew').on('click', function() {
-		$('#detailForm')[0].reset();
-		$('#detailForm input[name=alarmId]').val('');
-		$('#detailForm input[name=alarmTitle]').focus();
-		receiverGridOptions.api.setRowData('');
-	});
-	
-	// 저장/수정
-	$("#btnSave").on("click", function() {
-		var formId = '#detailForm';
-
-		if (!gagajf.validation(formId))
-			return;
-	
-		var msg = '수정하시겠습니까?';
-		if (gagajf.isNull($('#detailForm input[name=alarmId]').val())) msg = '등록하시겠습니까?'; 
-		
-		mcxDialog.confirm(msg, {
-			cancelBtnText: "취소",
-			sureBtnText: "확인",
-			sureBtnClick: function() {
-				$(formId + ' input[name=useYn]').val($(formId + ' input:checkbox[name=chkUseYn]').is(":checked") ? 'Y' : 'N');	// 사용여부
-				gagajf.ajaxFormSubmit('/system/alarm/save', formId, fnSearch);
-			}
-		});
-	});
-	
-	// 삭제
-	var fnDeleteAlarm = function(alarmId) {
-		mcxDialog.confirm('삭제하시곘습니까?', {
-			cancelBtnText: "취소",
-			sureBtnText: "확인",
-			sureBtnClick: function() {
-				var data = {alarmId : alarmId};
-				var jsonData = JSON.stringify(data);
-				gagajf.ajaxJsonSubmit('/system/alarm/delete', jsonData, fnSearch);
-			}
-		});
-	}
-	
-	// 수신자 관련 함수
-	// 수신자 조회
-	var fnReceiverSearch = function(alarmId) {
-		$('#reciverAlarmId').val(alarmId);
-		
-		var data = {alarmId : alarmId};
-		var jsonData = JSON.stringify(data);
-
-		gagajf.ajaxJsonSubmit('/system/alarm/reciver/list', jsonData, function(result) {
-			receiverGridOptions.api.setRowData(result);
-		});
-	}
-	
-	// 행추가
-	$('#btnAddRow').on('click', function() {
-		var alarmId = $('#reciverAlarmId').val();
-		if (gagajf.isNull(alarmId)) {
-			mcxDialog.alert('알람ID를 선택해 주세요.');
-			return;
-		}
-		var data = { alarmId: alarmId, receiverNm: null, cellPhnno: null, useYn: "Y" };
-		gagaAgGrid.addRowData(receiverGridOptions, data, 'alarmId');
-	});
-	
-	// 행삭제
-	$('#btnDeleteRow').on('click', function() {
-		var removedData = gagaAgGrid.removeRowData(receiverGridOptions);
-		
-		if (removedData.length == 0) {
-			mcxDialog.alert('선택된 행이 없습니다.');
-			return;
-		}
-		
-		mcxDialog.confirm("삭제하시겠습니까?", {
-			cancelBtnText: "취소",
-			sureBtnText: "확인",
-			sureBtnClick: function() {
-				var jsonData = JSON.stringify(removedData);
-				gagajf.ajaxJsonSubmit('/system/alarm/reciver/delete', jsonData, function() {
-					fnReceiverSearch($('#reciverAlarmId').val());
-				});
-			}
-		});
-	});
-	
-	// 바이트
-	$("#detailForm input[name=alarmMsg]").bind('focus focusout input keyup keydown paste change', function () {
-		cfnGetTextLength($(this), 80, $('#detailForm span[name=count]'));
-	});
-	
-	// 저장
-	$('#btnReciverSave').on('click', function() {
-		var changedData = gagaAgGrid.getChangedData(receiverGridOptions);
-		
-		// Validation
-		if (!gagaAgGrid.validation(receiverGridOptions, changedData))
-			return;
-		
-		var Msg = '';
-		$(changedData).each(function(idx, item) {
-			item.cellPhnno.replaceAll("-", "");
-			
-			var regexp = /^[0-9]*$/
-			if( !regexp.test(item.cellPhnno) ) {
-				Msg = '휴대전화번호는 숫자를 입력해주세요.';
-				return;
-			}
-			
-			if (item.cellPhnno.length > 11 || item.cellPhnno.length < 11) {
-				Msg = '휴대전화번호 길이는 11자리 입니다.';
-				return;
-			}
-		});
-		
-		if (!gagajf.isNull(Msg)) {
-			mcxDialog.alert(Msg);
-			return;
-		}
-		
-		mcxDialog.confirm("저장하시겠습니까?", {
-			cancelBtnText: "취소",
-			sureBtnText: "확인",
-			sureBtnClick: function() {
-				var jsonData = JSON.stringify(changedData);
-				gagajf.ajaxJsonSubmit('/system/alarm/reciver/save', jsonData, function() {
-					fnReceiverSearch($('#reciverAlarmId').val());
-				});
-			}
-		});
-	});
-	
-	$(document).ready(function() {
-		gagaAgGrid.createGrid('alarmGridList', alarmGridOptions);
-		gagaAgGrid.createGrid('receiverGridList', receiverGridOptions);
-		
-		// Grid 높이 자동 조정
-		uifnFitGrid(50);
-		fnSearch();
-	});
-
-/*]]>*/
-</script>
-
-</html>

+ 0 - 425
style24.scm/src/main/webapp/WEB-INF/views/system/UserDetailForm.html

@@ -1,425 +0,0 @@
-<!DOCTYPE html>
-<html lang="ko"
-	xmlns:th="http://www.thymeleaf.org">
-<!--
- *******************************************************************************
- * @source  : UserDetailForm.html
- * @desc    : 사용자 상세 팝업 Page
- *============================================================================
- * STYLE24
- * Copyright(C) 2020 TSIT, All rights reserved.
- *============================================================================
- * VER  DATE         AUTHOR      DESCRIPTION
- * ===  ===========  ==========  =============================================
- * 1.0  2020.10.07   gagamel     최초 작성
- *******************************************************************************
- -->
-<ul class="popup modal" data-width="900">
-	<li class="mdPopTitle">
-		<strong th:text="${'사용자 ' + (mode == 'N' ? '등록' : '상세')}">사용자 상세</strong>
-		<button type="button" class="close" onclick="uifnPopClose('popupUser');"><em class="fa fa-times"></em></button>
-	</li>
-	
-	<li class="mdPopContent" th:if="${mode == 'N'}">
-		<form id="userRegisterForm" name="userRegisterForm" action="#" th:action="@{'/system/user/save'}" th:method="post">
-			<input type="hidden" name="mode" th:value="${mode}"/>
-			
-			<table class="frmStyle" aria-describedby="등록폼">
-				<colgroup>
-					<col style="width:10%"/>
-					<col style="width:40%;"/>
-					<col style="width:10%;"/>
-					<col/>
-				</colgroup>
-				<tr>
-					<th>사용자ID<em class="required" title="필수"></em></th>
-					<td>
-						<input type="hidden" name="userNo" value="" readonly="readonly"/>
-						<input type="text" class="w150" name="userId" placeholder="" maxlength="20" required="required" data-valid-type="alphaNumeric" data-valid-name="사용자ID"/>
-						<button type="button" class="btn btn-default btn-sm" id="userIdDupCheck">중복체크</button>
-					</td>
-					<th>사용자명<em class="required" title="필수"></em></th>
-					<td>
-						<input type="text" name="userNm" placeholder="" maxlength="50" required="required" data-valid-name="사용자명"/>
-					</td>
-				</tr>
-				<tr>
-					<th>비밀번호<em class="required" title="필수"></em></th>
-					<td colspan="3">
-						<input type="password" name="passwd" placeholder="비밀번호" maxlength="50" required="required" data-valid-type="password" data-valid-name="비밀번호"/> /
-						<input type="password" name="passwdConfirm" placeholder="비밀번호확인" maxlength="50" required="required" data-valid-type="password" data-valid-name="비밀번호확인"/>
-						<p class="dot cBlue">대문자, 소문자, 특수문자, 숫자로 구성해야 합니다.</p>
-						<p class="dot cBlue">이 중 3개 이상은 8 ~ 20자, 2개 이상은 10 ~ 20자로 설정해야 합니다.</p>
-					</td>
-				</tr>
-				<tr>
-					<th>권한<em class="required" title="필수"></em></th>
-					<td>
-						<input type="hidden" name="roleChangeYn" value="Y"/>
-						<select name="roleCd" required="required" data-valid-name="권한">
-							<option th:if="${roleList}" th:each="oneData, status : ${roleList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
-						</select>
-					</td>
-					<th><span id="registerRoleRefVal">업체</span></th>
-					<td>
-						<input type="hidden" name="roleRefVal"/>
-						<select name="supplyCompCd">
-							<option th:if="${sessionInfo.supplyCompCd == null}" value="">[선택]</option>
-							<option th:if="${supplyCompList}" th:each="oneData, status : ${supplyCompList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
-						</select>
-						<select name="vendorId" style="display: none">
-							<option th:if="${sessionInfo.vendorId == null}" value="">[선택]</option>
-							<option th:if="${vendorList}" th:each="oneData, status : ${vendorList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
-						</select>
-					</td>
-				</tr>
-				<tr>
-					<th>이메일</th>
-					<td>
-						<input type="text" name="email" placeholder="" maxlength="100" data-valid-type="email" data-valid-name="이메일"/>
-					</td>
-					<th>휴대전화번호</th>
-					<td>
-						<input type="text" name="cellPhnno" placeholder="" maxlength="50" data-valid-type="cellPhone" data-valid-name="휴대전화번호"/>
-					</td>
-				</tr>
-				<tr>
-					<th>포인트부여가능금액</th>
-					<td>
-						<input type="text" name="pntAssignAmt" placeholder="" maxlength="6" data-valid-type="integer" data-valid-name="포인트부여가능금액"/>
-					</td>
-					<th>IP주소</th>
-					<td>
-						<input type="text" name="ipAddr" placeholder="" maxlength="20" data-valid-type="ipAddress" data-valid-name="IP주소"/>
-					</td>
-				</tr>
-				
-				<tr>
-					<th>IP체크여부</th>
-					<td>
-						<input type="hidden" name="ipChkYn" value="Y"/>
-						<label class="chkBox"><input type="checkbox" name="chkIpChkYn" value="Y"/>IP체크</label>
-					</td>
-					<th>사용여부</th>
-					<td>
-						<input type="hidden" name="useYn" value="Y"/>
-						<label class="chkBox"><input type="checkbox" name="chkUseYn" value="Y" checked="checked"/>사용</label>
-					</td>
-				</tr>
-			</table>
-		</form>
-	</li>
-		
-	<li class="mdPopBtnB aR" th:if="${mode == 'N'}">
-		<button type="button" class="btn btn-info btn-lg" onclick="fnSaveUser('#userRegisterForm');">저장</button>
-		<button type="button" class="btn btn-gray btn-lg" onclick="$('#userRegisterForm')[0].reset();">초기화</button>
-	</li>
-	
-	<li class="mdPopContent" th:if="${mode == 'U'}">
-		<form id="userDetailForm" name="userDetailForm" action="#" th:action="@{'/system/user/save'}" th:method="post" th:object="${userInfo}">
-			<input type="hidden" name="mode" th:value="${mode}"/>
-			
-			<table class="frmStyle" aria-describedby="상세폼">
-				<colgroup>
-					<col style="width:10%"/>
-					<col style="width:40%;"/>
-					<col style="width:10%;"/>
-					<col/>
-				</colgroup>
-				<tr>
-					<th>사용자ID<em class="required" title="필수"></em></th>
-					<td>
-						<input type="hidden" name="userNo" readonly="readonly" th:field="*{userNo}"/>
-						<input type="text" name="userId" placeholder="" readonly="readonly" th:field="*{userId}"/>
-					</td>
-					<th>사용자명<em class="required" title="필수"></em></th>
-					<td>
-						<input type="text" name="userNm" placeholder="" maxlength="50" required="required" data-valid-name="사용자명" th:field="*{userNm}"/>
-					</td>
-				</tr>
-				<tr>
-					<th>비밀번호</th>
-					<td colspan="3">
-						<input type="password" name="passwd" placeholder="비밀번호" maxlength="50" data-valid-type="password" data-valid-name="비밀번호"/> /
-						<input type="password" name="passwdConfirm" placeholder="비밀번호확인" maxlength="50" data-valid-type="password" data-valid-name="비밀번호확인"/>
-						<button type="button" class="btn btn-info btn-sm" id="btnChangePassword">비밀번호변경</button>
-						<p class="dot cBlue">대문자, 소문자, 특수문자, 숫자로 구성해야 합니다.</p>
-						<p class="dot cBlue">이 중 3개 이상은 8 ~ 20자, 2개 이상은 10 ~ 20자로 설정해야 합니다.</p>
-					</td>
-				</tr>
-				<tr>
-					<th>권한<em class="required" title="필수"></em></th>
-					<td>
-						<input type="hidden" name="roleChangeYn" value="N"/>
-						<select name="roleCd" required="required" data-valid-name="권한" th:field="*{roleCd}">
-							<option th:if="${roleList}" th:each="oneData, status : ${roleList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}" th:selected="${roleCd == oneData.cd}"></option>
-						</select>
-					</td>
-					<th><span id="detailRoleRefVal">업체</span></th>
-					<td>
-						<input type="hidden" name="roleRefVal" th:value="${userInfo.roleRefVal}"/>
-						<select name="supplyCompCd">
-							<option th:if="${sessionInfo.supplyCompCd == null}" value="">[선택]</option>
-							<option th:if="${supplyCompList}" th:each="oneData, status : ${supplyCompList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}" th:selected="${userInfo.roleRefVal == oneData.cd}"></option>
-						</select>
-						<select name="vendorId" style="display: none">
-							<option th:if="${sessionInfo.vendorId == null}" value="">[선택]</option>
-							<option th:if="${vendorList}" th:each="oneData, status : ${vendorList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}" th:selected="${userInfo.roleRefVal == oneData.cd}"></option>
-						</select>
-					</td>
-				</tr>
-				<tr>
-					<th>이메일</th>
-					<td colspan="3">
-						<input type="text" name="email" placeholder="" maxlength="100" data-valid-type="email" data-valid-name="이메일" th:field="*{email}"/>
-						<!-- <button type="button" class="btn btn-info btn-sm" id="btnSendTempPassword">임시비밀번호 발송</button> -->
-					</td>
-				</tr>
-				<tr>
-					<th>휴대전화번호</th>
-					<td>
-						<input type="text" name="cellPhnno" placeholder="" maxlength="50" data-valid-type="cellPhone" data-valid-name="휴대전화번호" th:field="*{cellPhnno}"/>
-					</td>
-					<th>포인트부여가능금액</th>
-					<td>
-						<input type="text" class="aR" name="pntAssignAmt" placeholder="" maxlength="6" data-valid-type="integer" data-valid-name="포인트부여가능금액" th:field="*{pntAssignAmt}"/>
-					</td>
-				</tr>
-				<tr>
-					<th>IP주소</th>
-					<td>
-						<input type="text" name="ipAddr" placeholder="" maxlength="20" data-valid-type="ipAddress" data-valid-name="IP주소" th:field="*{ipAddr}"/>
-					</td>
-					<th>IP체크여부</th>
-					<td>
-						<input type="hidden" name="ipChkYn" th:value="${userInfo.ipChkYn}"/>
-						<label class="chkBox" th:checked="${userInfo.ipChkYn == 'Y'}"><input type="checkbox" name="chkIpChkYn" th:value="${userInfo.ipChkYn}" th:checked="${userInfo.ipChkYn == 'Y'}"/>IP체크</label>
-					</td>
-				</tr>
-				<tr>
-					<th>사용여부</th>
-					<td>
-						<input type="hidden" name="useYn" th:value="${userInfo.useYn}"/>
-						<label class="chkBox" th:checked="${userInfo.useYn == 'Y'}"><input type="checkbox" name="chkUseYn" th:value="${userInfo.useYn}" th:checked="${userInfo.useYn == 'Y'}"/>사용</label>
-					</td>
-					<th>최종로그인일시</th>
-					<td th:text="*{loginLdt}">
-					</td>
-				</tr>
-				<tr>
-					<th>비밀번호변경일시</th>
-					<td colspan="3" th:text="*{passwdChgDt}">
-					</td>
-				</tr>
-			</table>
-		</form>
-	</li>
-	
-	<li class="mdPopBtnB aR" th:if="${mode == 'U'}">
-		<button type="button" class="btn btn-info btn-lg" onclick="fnSaveUser('#userDetailForm');">저장</button>
-		<button type="button" class="btn btn-gray btn-lg" onclick="fnInitialize(false);">초기화</button>
-	</li>
-</ul>
-
-<script th:inline="javascript">
-/*<![CDATA[*/
-	var mode = [[${mode}]];
-	var roleCd = [[${userInfo.roleCd}]];
-	
-	// 사용자ID 중복 체크
-	var isUnique = true;
-	$('#userIdDupCheck').on('click', function() {
-		var $e = $('#userRegisterForm input[name=userId]');
-		if (gagajf.isNull($e.val())) {
-			mcxDialog.alert('사용자ID를 입력해 주세요.');
-			$e.focus();
-			return;
-		}
-		
-		$.get('/system/user/id/' + $e.val()
-			, function(data) {
-				if (data > 0) {
-					mcxDialog.alert('이 ID는 이미 사용중입니다. 다른 ID를 입력해 주세요.');
-					isUnique = false;
-					$e.val('');
-					$e.focus();
-				} else {
-					mcxDialog.alert('이 ID는 사용 가능합니다.');
-					isUnique = true;
-				}
-			});
-	});
-	
-	// 등록화면 권한 변경 시
-	$('#userRegisterForm select[name=roleCd]').on('change', function() {
-		var abRoleCd = $(this).val().substring(0,1);
-		if (abRoleCd == 'A' || abRoleCd == 'B') { // 입점업체
-			$('#userRegisterForm select[name=supplyCompCd]').show();
-			$('#userRegisterForm select[name=vendorId]').hide();
-			$('#registerRoleRefVal').text('업체');
-		} else if (abRoleCd == 'C') { // 외부몰벤더
-			$('#userRegisterForm select[name=supplyCompCd]').hide();
-			$('#userRegisterForm select[name=vendorId]').show();
-			$('#registerRoleRefVal').text('외부몰벤더');
-		} else {
-			$('#userRegisterForm select[name=supplyCompCd]').hide();
-			$('#userRegisterForm select[name=vendorId]').hide();
-			$('#registerRoleRefVal').text('');
-		}
-	});
-	
-	// 비밀번호 변경
-	$('#btnChangePassword').on('click', function() {
-		// 기본 이벤트 실행 안 되게
-		//if (event.preventDefault) event.preventDefault(); else event.returnValue = false;
-
-		var passwd = $('#userDetailForm input[name=passwd]').val();
-		var passwdConfirm = $('#userDetailForm input[name=passwdConfirm]').val();
-		
-		if (gagajf.isNull(passwd)) {
-			mcxDialog.alert('비밀번호를 입력해 주세요.');
-			$('#userDetailForm input[name=passwd]').focus();
-			return;
-		}
-		
-		if (gagajf.isNull(passwdConfirm)) {
-			mcxDialog.alert('비밀번호확인을 입력해 주세요.');
-			$('#userDetailForm input[name=passwdConfirm]').focus();
-			return;
-		}
-		
-		if (passwd != passwdConfirm) {
-			mcxDialog.alert('비밀번호를 확인해주세요.');
-			$('#userDetailForm input[name=passwd]').focus();
-			return;
-		}
-		
-		mcxDialog.confirm("비밀번호를 변경하시겠습니까?", {
-			cancelBtnText: "취소",
-			sureBtnText: "확인",
-			sureBtnClick: function() {
-				var jsonData = JSON.stringify($('#userDetailForm').serializeObject());
-				gagajf.ajaxJsonSubmit('/system/user/password/change', jsonData);
-			}
-		});
-	});
-	
-	// 임시비밀번호 발송
-	$('#btnSendTempPassword').on('click', function() {
-		// 기본 이벤트 실행 안 되게
-		//if (event.preventDefault) event.preventDefault(); else event.returnValue = false;
-
-		var email = $('#userDetailForm input[name=email]').val();
-		
-		if (gagajf.isNull(email)) {
-			mcxDialog.alert('이메일을 입력해 주세요.');
-			$('#userDetailForm input[name=email]').focus();
-			return;
-		}
-		
-		mcxDialog.confirm("임시비밀번호를 발송하시겠습니까?", {
-			cancelBtnText: "취소",
-			sureBtnText: "확인",
-			sureBtnClick: function() {
-				var jsonData = JSON.stringify($('#userDetailForm').serializeObject());
-				gagajf.ajaxJsonSubmit('/system/user/tempPassword/send', jsonData);
-			}
-		});
-	});
-	
-	// 수정화면 권한 변경 시
-	$('#userDetailForm select[name=roleCd]').on('change', function() {
-		if (roleCd == $(this).val()) {
-			$('#userDetailForm input[name=roleChangeYn]').val('N');
-		} else {
-			$('#userDetailForm input[name=roleChangeYn]').val('Y');
-		}
-		
-		var abRoleCd = $(this).val().substring(0,1);
-		if (abRoleCd == 'A' || abRoleCd == 'B') { // 입점업체
-			$('#userDetailForm select[name=supplyCompCd]').show();
-			$('#userDetailForm select[name=vendorId]').hide();
-			$('#detailRoleRefVal').text('업체');
-		} else if (abRoleCd == 'C') { // 외부몰벤더
-			$('#userDetailForm select[name=supplyCompCd]').hide();
-			$('#userDetailForm select[name=vendorId]').show();
-			$('#detailRoleRefVal').text('외부몰벤더');
-		} else {
-			$('#userDetailForm select[name=supplyCompCd]').hide();
-			$('#userDetailForm select[name=vendorId]').hide();
-			$('#detailRoleRefVal').text('');
-		}
-	});
-	
-	// 초기화
-	var fnInitialize = function(isFirst) {
-		if (!isFirst) {
-			$('#userDetailForm')[0].reset();
-		}
-		
-		// 상세/수정 화면이면
-		if (mode == 'U') {
-		}
-	}
-	
-	// 저장
-	var fnSaveUser = function(formId) {
-		// 입력 값 체크
-		if (!gagajf.validation(formId))
-			return false;
-		
-		if (mode == 'N') {
-			if (!isUnique) {
-				mcxDialog.alert('사용자ID를 중복체크해 주세요.');
-				return;
-			}
-			
-			if ($(formId + ' input[name=passwd]').val() != $(formId + ' input[name=passwdConfirm]').val()) {
-				mcxDialog.alert('비밀번호와 비밀번호확인 값이 다릅니다.');
-				$(formId + ' input[name=passwdConfirm]').focus();
-				return;
-			}
-		}
-		
-		if ($(formId + ' input:checkbox[name=chkIpChkYn]').is(":checked")) {
-			if (gagajf.isNull($(formId + ' input[name=ipAddr]').val())) {
-				mcxDialog.alert('IP주소를 입력해 주세요.');
-				$(formId + ' input[name=ipAddr]').focus();
-				return;
-			}
-		}
-		
-		mcxDialog.confirm("저장하시겠습니까?", {
-			cancelBtnText: "취소",
-			sureBtnText: "확인",
-			sureBtnClick: function() {
-				$(formId + ' input[name=ipChkYn]').val($(formId + ' input:checkbox[name=chkIpChkYn]').is(":checked") ? 'Y' : 'N');
-				$(formId + ' input[name=useYn]').val($(formId + ' input:checkbox[name=chkUseYn]').is(":checked") ? 'Y' : 'N');
-				
-				var abRoleCd = $(formId + ' select[name=roleCd]').val().substring(0,1);
-				if (abRoleCd == 'A' || abRoleCd == 'B' || abRoleCd == 'E') { // 자사,입점,촬영업체
-					$(formId + ' input[name=roleRefVal]').val($(formId + ' select[name=supplyCompCd]').val());
-				} else if (abRoleCd == 'C') { // 외부몰벤더
-					$(formId + ' input[name=roleRefVal]').val($(formId + ' select[name=vendorId]').val());
-				} else {
-					$(formId + ' input[name=roleRefVal]').val('');
-				}
-				
-				gagajf.ajaxFormSubmit($(formId).prop('action'), formId, function() {
-					uifnPopClose('popupUser');
-					$('#btnSearch').trigger('click');
-				});
-			}
-		});
-	}
-	
-	$(document).ready(function() {
-		// 상세/수정 화면이면
-		if (mode == 'U') {
-			fnInitialize(true);
-		}
-	});
-/*]]>*/
-</script>
-
-</html>

+ 0 - 208
style24.scm/src/main/webapp/WEB-INF/views/system/UserForm.html

@@ -1,208 +0,0 @@
-<!DOCTYPE html>
-<html lang="ko"
-	xmlns:th="http://www.thymeleaf.org">
-<!--
- *******************************************************************************
- * @source  : UserForm.html
- * @desc    : 사용자관리 Page
- *============================================================================
- * STYLE24
- * Copyright(C) 2020 TSIT, All rights reserved.
- *============================================================================
- * VER  DATE         AUTHOR      DESCRIPTION
- * ===  ===========  ==========  =============================================
- * 1.0  2020.10.07   gagamel     최초 작성
- *******************************************************************************
- -->
-	<div id="main">
-		<!-- 메인타이틀 영역 -->
-		<div class="main-title">
-		</div>
-		<!-- //메인타이틀 영역 -->
-		
-		<!-- 메뉴 설명 -->
-		<div class="infoBox menu-desc">
-		</div>
-		<!-- //메뉴 설명 -->
-		
-		<!-- 검색조건 영역 -->
-		<div class="panelStyle">
-			<form id="searchForm" name="searchForm" action="#" th:action="@{'/system/user/list'}" onsubmit="$('#btnSearch').trigger('click'); return false;">
-				<table class="frmStyle" aria-describedby="검색조건">
-					<colgroup>
-						<col style="width:10%;"/>
-						<col style="width:15%;"/>
-						<col style="width:10%;"/>
-						<col style="width:20%;"/>
-						<col style="width:10%;"/>
-						<col style="width:15%;"/>
-						<col style="width:10%;"/>
-						<col style="width:10%;"/>
-					</colgroup>
-					<tr>
-						<th>업체</th>
-						<td>
-							<select name="supplyCompCd">
-								<option th:if="${sessionInfo.supplyCompCd == null}" value="">[전체]</option>
-								<option th:if="${supplyCompList}" th:each="oneData, status : ${supplyCompList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
-							</select>
-						</td>
-						<th>권한</th>
-						<td>
-							<select name="roleCd">
-								<option value="">[전체]</option>
-								<option th:if="${roleList}" th:each="oneData, status : ${roleList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
-							</select>
-						</td>
-						<th>구분</th>
-						<td>
-							<select name="searchGb">
-								<option value="">[선택]</option>
-								<option value="userId">사용자ID</option>
-								<option value="userNm">사용자명</option>
-							</select>
-							<input type="text" class="w100" name="searchTxt" placeholder="" maxlength="20"/>
-						</td>
-						<th>사용여부</th>
-						<td>
-							<select name="useYn">
-								<option value="">[전체]</option>
-								<option value="Y" selected="selected">[Y] Yes</option>
-								<option value="N">[N] No</option>
-							</select>
-						</td>
-					</tr>
-				</table>
-				
-				<ul class="panelBar">
-					<li class="center">
-						<button type="button" class="btn btn-base btn-lg" id="btnSearch">조회</button>
-						<button type="button" class="btn btn-gray btn-lg" onclick="$('#searchForm')[0].reset();">초기화</button>
-					</li>
-				</ul>
-			</form>
-		</div>
-		<!-- //검색조건 영역 -->
-		
-		<!-- 리스트 영역 -->
-		<div class="panelStyle">
-			<!-- 버튼 배치 영역 -->
-			<ul class="panelBar">
-				<li class="right">
-					<button type="button" class="btn btn-info btn-lg" onclick="fnOpenUserDetailPopup('N');">등록</button>
-					<button type="button" class="btn btn-danger btn-lg" id="btnDelete">삭제</button>
-				</li>
-			</ul>
-			<!-- //버튼 배치 영역 -->
-			
-			<div id="gridList" style="width: 100%; height: 570px" class="ag-theme-balham"></div>
-		</div>
-		<!-- //리스트 영역 -->
-	</div>
-
-<script th:inline="javascript">
-/*<![CDATA[*/
-	var roleList = gagajf.convertToArray([[${roleList}]]);
-	
-	// specify the columns
-	var columnDefs = [
-		{width: 40, minWidth: 40, cellClass: 'text-center', headerCheckboxSelection: true, checkboxSelection: true, filter: false},
-		{headerName: 'No', width: 60, cellClass: 'text-center', valueGetter: function(params) { return params.node.rowIndex + 1 }},
-		{headerName: "사용자번호", field: "userNo", width: 100, cellClass: 'text-center', hide: true},
-		{
-			headerName: "메뉴", field: "btnMenu", width: 100, cellClass: 'text-center',
-			cellRenderer: function(params) {
-				return '<button type="button" class="btn btn-success btn-sm" onclick="fnOpenUserMenuPopup(\'' + params.data.userNo + '\');">메뉴관리</button>';
-			}
-		},
-		{
-			headerName: "사용자ID", field: "userId", width: 100, cellClass: 'text-center',
-			cellRenderer: function(params) {
-				return '<a href="javascript:void(0);" onclick="fnOpenUserDetailPopup(\'U\', \'' + params.data.userNo + '\');">' + params.value + '</a>';
-			}
-		},
-		{headerName: "사용자명", field: "userNm", width: 150, cellClass: 'text-center'},
-		{headerName: "권한코드", field: "roleCd", width: 100, hide: true},
-		{
-			headerName: "권한", field: "roleNm", width: 120, cellClass: 'text-center',
-			cellRenderer: function (params) { return gagaAgGrid.lookupValue(roleList, params.data.roleCd); }
-		},
-		{headerName: "권한관련값", field: "roleRefVal", width: 150, cellClass: 'text-center', hide: true},
-		{headerName: "업체", field: "supplyCompNm", width: 150, cellClass: 'text-center'},
-		{headerName: "외부몰벤더", field: "vendorNm", width: 150, cellClass: 'text-center'},
-		{headerName: "이메일", field: "email", width: 200, cellClass: 'text-center'},
-		{headerName: "휴대전화번호", field: "cellPhnno", width: 150, cellClass: 'text-center'},
-		{headerName: "IP주소", field: "ipAddr", width: 100, cellClass: 'text-center'},
-		{headerName: "IP체크여부", field: "ipChkYn", width: 100, cellClass: 'text-center'},
-		{headerName: "사용여부", field: "useYn", width: 100, cellClass: 'text-center'},
-		{
-			headerName: '최근로그인일시', field: 'loginLdt', width: 150, cellClass: 'text-center',
-			cellRenderer: function(params) {
-				return !gagajf.isNull(params.value) ? params.value.toDate("YYYYMMDDHHmmss").format("YYYY-MM-DD HH:mm:ss") : '';
-			}
-		}
-	];
-	
-	// Get GridOptions
-	var gridOptions = gagaAgGrid.getGridOptions(columnDefs);
-	
-	gridOptions.rowSelection = 'multiple';
-	
-	// 조회
-	$('#btnSearch').on('click', function() {
-		// Fetch data
-		gagaAgGrid.fetch($('#searchForm').prop('action'), gridOptions, '#searchForm');
-	});
-	
-	// 삭제
-	$('#btnDelete').on('click', function() {
-		var removedData = gagaAgGrid.removeRowData(gridOptions);
-		
-		if (removedData.length == 0) {
-			mcxDialog.alert('선택된 행이 없습니다.');
-			return;
-		}
-		
-		mcxDialog.confirm("정말 삭제하시겠습니까?", {
-			cancelBtnText: "취소",
-			sureBtnText: "확인",
-			sureBtnClick: function() {
-				// delete 대신 update 처리해야 하므로 다음과 같이 useYn 값을 변환
-				var updatedData = [];
-				
-				$.each(removedData, function(idx, item) {
-					item.useYn = 'N';
-					updatedData.push(item);
-				});
-				
-				var jsonData = JSON.stringify(updatedData);
-				gagajf.ajaxJsonSubmit('/system/user/list/delete'
-						, jsonData
-						, function() {
-							$('#btnSearch').trigger('click');
-						});
-			}
-		});
-	});
-	
-	// 사용자 상세 팝업
-	var fnOpenUserDetailPopup = function(mode, userNo) {
-		var actionUrl = "/system/user/info/form?mode=" + mode;
-		if (typeof(userNo) != 'undefined') actionUrl += "&userNo=" + userNo;
-		cfnOpenModalPopup(actionUrl, "popupUser");
-	}
-	
-	// 사용자 메뉴 팝업
-	var fnOpenUserMenuPopup = function(userNo) {
-		var actionUrl = "/system/user/menu/" + userNo;
-		cfnOpenModalPopup(actionUrl, "popupUserMenu");
-	}
-	
-	$(document).ready(function() {
-		// Create a agGrid
-		gagaAgGrid.createGrid('gridList', gridOptions);
-	});
-/*]]>*/
-</script>
-
-</html>

+ 0 - 180
style24.scm/src/main/webapp/WEB-INF/views/system/UserListForm.html

@@ -1,180 +0,0 @@
-<!DOCTYPE html>
-<html lang="ko"
-	xmlns:th="http://www.thymeleaf.org">
-<!--
- *******************************************************************************
- * @source  : UserListForm.html
- * @desc    : 사용자 조회 팝업 Page
- *============================================================================
- * Wivismall
- * Copyright(C) 2019 TSIT, All rights reserved.
- *============================================================================
- * VER  DATE         AUTHOR      DESCRIPTION
- * ===  ===========  ==========  =============================================
- * 1.0  2019.12.10   sasa004     최초 작성
- *******************************************************************************
- -->
-<ul class="popup modal" data-width="600" data-height="670">
-	<li class="mdPopTitle">
-		<strong>관리자 신청자</strong>
-		<button type="button" class="close" onclick="uifnPopClose('popupUserList');"><em class="fa fa-times"></em></button>
-	</li>
-	
-	<li class="mdPopContent">
-		<form id="userSearchForm" name="userSearchForm">
-			<table class="frmStyle" aria-describedby="검색조건">
-				<colgroup>
-					<col style="width:10%;">
-					<col>
-				</colgroup>
-				<tbody><tr>
-					<th>신청자</th>
-					<td>
-						<input type="text" class="" name="searchTxt" maxlength="20" onkeypress="if( event.keyCode==13 ){fnSearch();}"/>
-						<input type="text" class="off"/>
-					</td>
-				</tr>
-			</tbody></table>
-		</form>
-	</li>
-	
-	<li class="mdPopBtnB aR">
-		<button type="button" class="btn btn-info btn-lg" onclick="fnSearch();">조회</button>
-		<button type="button" class="btn btn-info btn-lg" onclick="fnSaveUser();">확인</button>
-	</li>
-		
-	<li class="mdPopContent">
-		<div class="yScroll" style="height: 500px;">
-			<form id="userListForm" name="userListForm" action="#" th:action="@{'/system/user/list'}" th:method="post">
-				<table class="tableStyle" aria-describedby="사용자 목록">
-					<colgroup>
-						<col style="width: 20%"/>
-						<col style="width: 40%"/>
-						<col style="width: 40%"/>
-					</colgroup>
-					<thead>
-						<tr>
-							<th>선택</th>
-							<th>신청자명</th>
-							<th>신청자ID</th>
-						</tr>
-					</thead>
-					<tbody id="tbodyUserList">
-						<tr th:unless="${userList}">
-							<td colspan="4">조회 결과가 없습니다.</td>
-						</tr>
-						<tr th:each="oneData : ${userList}">
-							<input type="hidden" name="userNm" th:value="${oneData.userNm}"/>
-							<input type="hidden" name="userId" th:value="${oneData.userId}"/>
-							<td><label><input type="checkbox" name="chkUseYn" onclick="fnCheck(this);"/></label></td>
-							<td style="text-align: center" th:text="${oneData.userNm}"></td>
-							<td style="text-align: center" th:text="${oneData.userId}"></td>
-						</tr>
-					</tbody>
-				</table>
-			</form>
-		</div>
-	</li>
-	
-</ul>
-
-<script th:inline="javascript">
-/*<![CDATA[*/
-	
-	// 체크버튼 라디오버튼화
-	var fnCheck = function(obj) {
-		var $el = $('#userListForm input:checkbox[name=chkUseYn]');
-		
-		$.each($el, function(idx, item) {
-			$(this).prop('checked', false);
-			$(this).parent('label').removeClass('checked');
-		});
-		$(obj).parent('label').addClass('checked');
-		$(obj).prop('checked', true);
-	}
-	
-	var fnSearch = function() {
-		var searchData = []; 
-		var searchTxt = $('#userSearchForm input[name=searchTxt]').val();
-		
-		searchData = {searchGb : 'userNm'
-				,searchTxt : searchTxt
-		};
-		
-		var jsonData = JSON.stringify(searchData);
-		gagajf.ajaxJsonSubmit($('#userListForm').prop('action'), jsonData, fnSearchResult);
-	}
-	
-	var fnSearchResult = function(result){
-		
-		var resultLn = result.length;
-		var html = '';
-		if(resultLn==0){
-			html += '<tr th:unless="${userList}">';
-			html += '<td colspan="4">조회 결과가 없습니다.</td>';
-			html += '</tr>';
-		}else{
-			for(var i=0; i<resultLn; i++){
-				html += '<tr th:unless="${userList}">';
-				html += '<input type="hidden" name="userNm" value="'+result[i].userNm+'"/>';
-				html += '<input type="hidden" name="userId" value="'+result[i].userId+'"/>';
-				html += '<td><label><input type="checkbox" name="chkUseYn" onclick="fnCheck(this);"/></label></td>';
-				html += '<td style="text-align: center">'+result[i].userNm+'</td>';
-				html += '<td style="text-align: center">'+result[i].userId+'</td>';
-				html += '</tr>';
-			}
-		}
-		$("#tbodyUserList").html(html);
-		
-		fnRowSizeOne();
-	}
-	
-	// 확인
-	var fnSaveUser = function() {
-		var changedData = [];
-		
-		$('#tbodyUserList tr').each(function(idx) {
-			if ($(this).find('input:checkbox[name=chkUseYn]').is(':checked')) {
-				userId = $(this).find('input[name=userId]').val();
-				userNm = $(this).find('input[name=userNm]').val();
-				changedData = {userId : userId
-						,userNm : userNm
-				};
-			}
-		});
-		var callback = [[${params.callBackFun}]];
-
-		var jsonData = JSON.stringify(changedData);
-
-		if( typeof callback != 'undefined' && callback){
-
-			if (typeof callback == 'function') {
-				callback(jsonData);
-			}else{
-				if( callback ) {
-					if( callback.indexOf("(") == -1 ) eval( callback +"(" + jsonData+")");
-					else eval( callback(jsonData) );
-				}
-			}
-			uifnPopClose('popupUserList');
-		}
-	}
-	
-	var fnRowSizeOne = function(){
-		var rowSize = $('#tbodyUserList tr').length;
-		if(rowSize==1){
-			if(typeof $('#userListForm input[name=userNm]').val()!='undefined'){
-				$('#userListForm input:checkbox[name=chkUseYn]').parent('label').addClass('checked');
-				$('#userListForm input:checkbox[name=chkUseYn]').prop('checked', true);
-				fnSaveUser();
-			}
-		}
-	}
-	
-	$(document).ready(function() {
-		fnRowSizeOne();
-	});
-/*]]>*/
-</script>
-
-</html>

+ 0 - 131
style24.scm/src/main/webapp/WEB-INF/views/system/UserMenuForm.html

@@ -1,131 +0,0 @@
-<!DOCTYPE html>
-<html lang="ko"
-	xmlns:th="http://www.thymeleaf.org">
-<!--
- *******************************************************************************
- * @source  : UserMenuForm.html
- * @desc    : 사용자메뉴 팝업 Page
- *============================================================================
- * Wivismall
- * Copyright(C) 2019 TSIT, All rights reserved.
- *============================================================================
- * VER  DATE         AUTHOR      DESCRIPTION
- * ===  ===========  ==========  =============================================
- * 1.0  2019.12.06   gagamel     최초 작성
- *******************************************************************************
- -->
-<ul class="popup modeless ui-widget-content" data-width="600" data-height="670">
-	<li class="mdPopTitle">
-		<strong>사용자 메뉴</strong>
-		<button type="button" class="close" onclick="uifnPopClose('popupUserMenu');"><em class="fa fa-times"></em></button>
-	</li>
-	
-	<li class="mdPopContent">
-		<div class="yScroll" style="height: 500px;">
-			<form id="userMenuForm" name="userMenuForm" action="#" th:action="@{'/system/user/menu/list/save'}" th:method="post">
-				<table class="frmStyle" aria-describedby="사용자 메뉴 목록">
-					<colgroup>
-						<col style="width: 20%"/>
-						<col style="width: 20%"/>
-						<col/>
-						<col style="width: 20%"/>
-					</colgroup>
-					<thead>
-						<tr>
-							<th><input type="button" class="chkBox" name="allCheck" onclick="fnAllCheck(this);"/></th>
-							<th>메뉴ID</th>
-							<th>메뉴명</th>
-							<th>메뉴구분</th>
-						</tr>
-					</thead>
-					<tbody id="tbodyUserMenu">
-						<tr th:unless="${userMenuList}">
-							<td colspan="4">조회 결과가 없습니다.</td>
-						</tr>
-						<tr th:each="oneData : ${userMenuList}">
-							<input type="hidden" name="userNo" th:value="${oneData.userNo}"/>
-							<input type="hidden" name="menuId" th:value="${oneData.menuId}"/>
-							<td><label class="chkBox"><input type="checkbox" name="chkUseYn" th:checked="${oneData.useYn == 'Y'}" th:readonly="${oneData.menuGb == 'M'}"/></label></td>
-							<td style="text-align: left" th:text="${(oneData.menuLvl == 1 ? '&nbsp;&nbsp;&nbsp;' : oneData.menuLvl == 2 ? '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;' : '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;') + oneData.menuLvl + '. ' + oneData.menuId}">A</td>
-							<td style="text-align: left" th:text="${oneData.menuNm}">상품</td>
-							<td th:text="${oneData.menuGb == 'M' ? '메뉴' : '프로그램'}">메뉴</td>
-						</tr>
-					</tbody>
-				</table>
-			</form>
-		</div>
-	</li>
-	
-	<li class="mdPopBtnB">
-		<ul class="lrStyle">
-			<li class="aL">
-				<button type="button" class="btn btn-info btn-lg" onclick="fnSaveUserMenu();">저장</button>
-				<button type="button" class="btn btn-gray btn-lg" onclick="$('#userMenuForm')[0].reset();">초기화</button>
-			</li>
-		</ul>
-	</li>
-</ul>
-
-<script th:inline="javascript">
-/*<![CDATA[*/
-	// 전체 체크
-	var fnAllCheck = function(obj) {
-		var $el = $("#userMenuForm input:checkbox[name=chkUseYn]");
-		
-		$.each($el, function(idx, item) {
-			if (gagajf.isNull($(this).attr('readonly'))) {
-				if ($(obj).hasClass('checked')) {
-					$(this).prop('checked', false);
-					$(this).parent('label').removeClass('checked');
-				} else {
-					$(this).prop('checked', true);
-					$(this).parent('label').addClass('checked');
-				}
-			}
-		});
-		
-		if ($(obj).hasClass('checked')) {
-			$(obj).removeClass('checked');
-		} else {
-			$(obj).addClass('checked');
-		}
-	}
-	
-	// 저장
-	var fnSaveUserMenu = function() {
-		var changedData = [];
-		
-		$('#tbodyUserMenu tr').each(function(idx) {
-			if ($(this).find('input:checkbox[name=chkUseYn]').is(':checked')) {
-				var params = new Object();
-				params.userNo = $(this).find('input[name=userNo]').val();
-				params.menuId = $(this).find('input[name=menuId]').val();
-				params.useYn = 'Y';
-				changedData.push(params);
-			}
-		});
-		
-		if (changedData.length == 0) {
-			mcxDialog.alert('저장할 데이터가 없습니다.');
-			return;
-		}
-		
-		mcxDialog.confirm("저장하시겠습니까?", {
-			cancelBtnText: "취소",
-			sureBtnText: "확인",
-			sureBtnClick: function() {
-				var jsonData = JSON.stringify(changedData);
-				gagajf.ajaxJsonSubmit($('#userMenuForm').prop('action'), jsonData, function() {
-					uifnPopClose('popupUserMenu');
-				});
-			}
-		});
-	}
-	
-	$(document).ready(function() {
-		
-	});
-/*]]>*/
-</script>
-
-</html>