토큰 일부 적용 url변경중

dev_tymeleaf
jangwonseokicom 2 years ago
parent dfea91edc8
commit 8e85e2d32d

@ -4,12 +4,15 @@ import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer; import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
import com.google.gson.Gson;
import com.google.gson.JsonObject;
import com.icomsys.main_vm.db.jpa.entity.system.TbBotUser; import com.icomsys.main_vm.db.jpa.entity.system.TbBotUser;
import com.icomsys.main_vm.db.jpa.repo.system.TbUserAuthGroupRepo; import com.icomsys.main_vm.db.jpa.repo.system.TbUserAuthGroupRepo;
import io.jsonwebtoken.*; import io.jsonwebtoken.*;
import io.jsonwebtoken.io.Decoders; import io.jsonwebtoken.io.Decoders;
import io.jsonwebtoken.security.Keys; import io.jsonwebtoken.security.Keys;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.json.JSONObject;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
@ -21,6 +24,7 @@ import org.springframework.stereotype.Component;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.security.Key; import java.security.Key;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import java.util.Arrays; import java.util.Arrays;
import java.util.Collection; import java.util.Collection;
@ -35,7 +39,6 @@ public class TokenProvider {
private static final long ACCESS_TOKEN_EXPIRE_TIME = 20 * 60 * 1000L; private static final long ACCESS_TOKEN_EXPIRE_TIME = 20 * 60 * 1000L;
private static final long REFRESH_TOKEN_EXPIRE_TIME = 24 * 60 * 60 * 1000L; private static final long REFRESH_TOKEN_EXPIRE_TIME = 24 * 60 * 60 * 1000L;
private final Key key; private final Key key;
public TokenProvider(@Value("${spring.jwt.secret}") String secretKey, TbUserAuthGroupRepo tbUserAuthGroupRepo) { public TokenProvider(@Value("${spring.jwt.secret}") String secretKey, TbUserAuthGroupRepo tbUserAuthGroupRepo) {
@ -44,11 +47,11 @@ public class TokenProvider {
this.key = Keys.hmacShaKeyFor(keyBytes); this.key = Keys.hmacShaKeyFor(keyBytes);
} }
public String generateToken(Authentication authentication, TbBotUser user) throws JsonProcessingException { public String generateToken(TbBotUser user) throws JsonProcessingException {
// 권한 가져오기 // 권한 가져오기
String authorities = authentication.getAuthorities().stream() // String authorities = authentication.getAuthorities().stream()
.map(GrantedAuthority::getAuthority) // .map(GrantedAuthority::getAuthority)
.collect(Collectors.joining(",")); // .collect(Collectors.joining(","));
long now = (new Date()).getTime(); long now = (new Date()).getTime();
// Access Token 생성 // Access Token 생성
@ -56,51 +59,52 @@ public class TokenProvider {
Date accessTokenExpiresIn = new Date(now + ACCESS_TOKEN_EXPIRE_TIME); // Todo: Access Token 만료 기간 설정 파일 추가 Date accessTokenExpiresIn = new Date(now + ACCESS_TOKEN_EXPIRE_TIME); // Todo: Access Token 만료 기간 설정 파일 추가
Claims claims = Jwts.claims() Claims claims = Jwts.claims()
.setSubject(authentication.getName()) .setSubject(user.getUserName())
.setExpiration(accessTokenExpiresIn); .setExpiration(accessTokenExpiresIn);
// claims.put("auth", authorities);
claims.put("auth", authorities); // ObjectMapper mapper = new ObjectMapper();
ObjectMapper mapper = new ObjectMapper();
// claims.put("UserVO", mapper.registerModule(new JavaTimeModule()).writeValueAsString(user.toUserVO())); // claims.put("UserVO", mapper.registerModule(new JavaTimeModule()).writeValueAsString(user.toUserVO()));
try { // try {
JavaTimeModule javaTimeModule = new JavaTimeModule(); // JavaTimeModule javaTimeModule = new JavaTimeModule();
// LocalDateTimeSerializer localDateTimeSerializer = new LocalDateTimeSerializer(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
LocalDateTimeSerializer localDateTimeSerializer = new LocalDateTimeSerializer(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); // javaTimeModule.addSerializer(LocalDateTime.class, localDateTimeSerializer);
// // claims.put("UserVO", mapper.registerModule(javaTimeModule).readValue(user.toUserVO(), UserVo.class));
javaTimeModule.addSerializer(LocalDateTime.class, localDateTimeSerializer); // claims.put("UserVO", mapper.registerModule(javaTimeModule).writeValueAsString(user.toUserVO()));
// // claims.put("PolicyList", tbUserAuthGroupRepo.userPolicyListSelect(user.getUserSeq(), user.getLastUseServiceGroup()));
// claims.put("UserVO", mapper.registerModule(javaTimeModule).readValue(user.toUserVO(), UserVo.class)); // }
claims.put("UserVO", mapper.registerModule(javaTimeModule).writeValueAsString(user.toUserVO())); //
// claims.put("PolicyList", tbUserAuthGroupRepo.userPolicyListSelect(user.getUserSeq(), user.getLastUseServiceGroup())); // catch (Exception e) {
} // e.printStackTrace();
catch (Exception e) { // }
e.printStackTrace(); // claims.put("UserVO", user.toUserVO());
}
String accessToken = createAccessToken(user, accessTokenExpiresIn);
String accessToken = Jwts.builder()
.setSubject(authentication.getName())
.setClaims(claims)
.setExpiration(accessTokenExpiresIn)
.signWith(key, SignatureAlgorithm.HS256)
.compact();
// Refresh Token 생성 // Refresh Token 생성
String refreshToken = Jwts.builder() String refreshToken = createRefreshToken(accessTokenExpiresIn);
.setExpiration(new Date(now + REFRESH_TOKEN_EXPIRE_TIME)) // Todo: Refresh Token 만료 기간 설정 파일에 추가
.signWith(key, SignatureAlgorithm.HS256)
.compact();
CinnamonToken token = CinnamonToken.builder()
.grantType("Bearer")
.accessToken(accessToken)
.refreshToken(refreshToken)
.build();
return accessToken; return accessToken;
} }
private String createAccessToken(TbBotUser user, Date accessTokenExpiresIn) {
return Jwts.builder()
.setSubject(user.getUserName())
.setClaims(Jwts.claims()
.setSubject(user.getUserName())
.setExpiration(accessTokenExpiresIn)
).claim("UserVO", new Gson().toJson(user.toUserVO()))
.setExpiration(accessTokenExpiresIn)
.signWith(key, SignatureAlgorithm.HS256)
.compact();
}
private String createRefreshToken(Date accessTokenExpiresIn) {
return Jwts.builder()
.setExpiration(accessTokenExpiresIn) // Todo: Refresh Token 만료 기간 설정 파일에 추가
.signWith(key, SignatureAlgorithm.HS256)
.compact();
}
// JWT 토큰을 복호화하여 토큰에 들어있는 정보를 꺼내는 메서드 // JWT 토큰을 복호화하여 토큰에 들어있는 정보를 꺼내는 메서드
public Authentication getAuthentication(String accessToken) { public Authentication getAuthentication(String accessToken) {
// 토큰 복호화 // 토큰 복호화
@ -116,8 +120,8 @@ public class TokenProvider {
// 클레임에서 권한 정보 가져오기 // 클레임에서 권한 정보 가져오기
Collection<? extends GrantedAuthority> authorities = Collection<? extends GrantedAuthority> authorities =
Arrays.stream(claims.get("auth").toString().split(",")) Arrays.stream(claims.get("auth").toString().split(","))
.map(SimpleGrantedAuthority::new) .map(SimpleGrantedAuthority::new)
.collect(Collectors.toList()); .collect(Collectors.toList());
// UserDetails 객체를 만들어서 Authentication 리턴 // UserDetails 객체를 만들어서 Authentication 리턴
// UserDetails principal = new User(claims.getSubject(), "", authorities); // UserDetails principal = new User(claims.getSubject(), "", authorities);

@ -54,12 +54,14 @@ public class LoginController {
} }
@RequestMapping(value = "/adm/main/actionSecurityLogin.do") @RequestMapping(value = "/adm/main/actionSecurityLogin.do")
public ModelAndView actionSecurityLogin(@Valid LoginReq loginReq, ModelMap model) { public ModelAndView actionSecurityLogin(
// @Valid LoginReq loginReq,
ModelMap model) {
log.info("actionlogin"); log.info("actionlogin");
// return loginService.LoginValidService(loginReq, model); // return loginService.LoginValidService(loginReq, model);
String url = loginService.LoginValidService(loginReq, model); // String url = loginService.LoginValidService(loginReq, model);
log.info("redi url? - -{}", url); // log.info("redi url? - -{}", url);
return new ModelAndView(url); return new ModelAndView("layout/main");
} }
@RequestMapping(value = "/adm/main/actionMain.do") @RequestMapping(value = "/adm/main/actionMain.do")
@ -100,70 +102,6 @@ public class LoginController {
loginService.LastUserServiceGroupUpdate(userSeq, updateService); loginService.LastUserServiceGroupUpdate(userSeq, updateService);
} }
/**
* oprMngCode
*
*
* @param serviceType
* @return
* @throws CustomNoSuchFieldException
*/
@GetMapping("/adm/menu/oprmng")
@ResponseBody
public List<OprmngCodeRes> getOprmngCode(@RequestParam(name = "serviceType", required = false) String serviceType,
@RequestParam(name = "menuval", required = false) String menuval) throws CustomNoSuchFieldException {
if (loginService.getUserVo() == null) {
throw new CustomNoSuchFieldException();
}
log.info("getOPR INIT");
return loginService.getOprmngCode(serviceType, menuval);
}
/**
* oprMngCode
*
*
*
* @param serviceType
* @return
* @throws CustomNoSuchFieldException
*/
@GetMapping("/adm/menu/oprmng/admin")
@ResponseBody
public List<OprmngCodeRes> getOprmngCodeAdmin(@RequestParam(name = "serviceType", required = false) String serviceType) throws CustomNoSuchFieldException {
if (loginService.getUserVo() == null) {
throw new CustomNoSuchFieldException();
}
log.info("getOPR INIT");
return loginService.getOprmngCodeAdmin(serviceType);
}
@GetMapping("/adm/menu/main/oprmng")
@ResponseBody
public ResponseEntity getMainOprmngCode() throws CustomNoSuchFieldException, NoSuchFieldException {
//List<OprmngCodeRes>
if (httpServletRequest.getSession() == null) {
log.info("SESSION NULL");
return ResponseEntity.badRequest().build();
}
if (loginService.getUserVo() == null) {
log.info("getMainOprmngCode NULL");
return ResponseEntity.badRequest().build();
}
log.info("getOPR INIT");
return ResponseEntity.ok(loginService.getMainOprmngCode());
}
@PostMapping("/adm/menu/main/oprmng/update")
@ResponseBody
public void getMainOprmngCodeUpdate(@RequestBody MainOprReq dto) throws CustomNoSuchFieldException, CustomNotFoundException {
if (loginService.getUserVo() == null) {
throw new CustomNoSuchFieldException();
}
log.info("getOPR INIT - {}", new Gson().toJson(dto));
loginService.getMainOprmngCodeUpdate(dto);
}
@GetMapping("/adm/menu/jstree/policy/parent") @GetMapping("/adm/menu/jstree/policy/parent")
@ -185,16 +123,8 @@ public class LoginController {
return fileService.PdfDownload(name); return fileService.PdfDownload(name);
} }
@GetMapping("/adm/main/uv")
@ResponseBody
public UserVo getUserVo() throws CustomNoSuchFieldException {
if (loginService.getUserVo() == null) {
throw new CustomNoSuchFieldException();
} else {
return loginService.getUserVo();
}
}
}
}

@ -0,0 +1,114 @@
package com.icomsys.main_vm.biz.common.login.controller;
import com.google.gson.Gson;
import com.icomsys.main_vm.biz.advice.excep.CustomNoSuchFieldException;
import com.icomsys.main_vm.biz.advice.excep.CustomNotFoundException;
import com.icomsys.main_vm.biz.common.login.TokenProvider;
import com.icomsys.main_vm.biz.common.login.req.MainOprReq;
import com.icomsys.main_vm.biz.common.login.res.OprmngCodeRes;
import com.icomsys.main_vm.biz.common.login.res.UserVo;
import com.icomsys.main_vm.biz.common.login.service.LoginService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import java.util.List;
@RestController
@RequiredArgsConstructor
@Slf4j
@RequestMapping("/api/v1")
public class TokenController {
private final TokenProvider tokenProvider;
private final LoginService loginService;
private final HttpServletRequest httpServletRequest;
@GetMapping("/token/check")
public String checkToken(){
// return tokenProvider.parseClaims(
// httpServletRequest.getHeader("Authorization").split(" ")[1]);
return "";
}
@GetMapping("/token/main/oprmng")
@ResponseBody
public ResponseEntity getMainOprmngCode() throws CustomNoSuchFieldException, NoSuchFieldException {
//List<OprmngCodeRes>
if (httpServletRequest.getSession() == null) {
log.info("SESSION NULL");
return ResponseEntity.badRequest().build();
}
if (loginService.getUserVo() == null) {
log.info("getMainOprmngCode NULL");
return ResponseEntity.badRequest().build();
}
log.info("getOPR INIT");
return ResponseEntity.ok(loginService.getMainOprmngCode());
}
@GetMapping("/token/main/uv")
@ResponseBody
public UserVo getUserVo() throws CustomNoSuchFieldException {
if (loginService.getUserVo() == null) {
throw new CustomNoSuchFieldException();
} else {
return loginService.getUserVo();
}
}
/**
* oprMngCode
*
*
* @param serviceType
* @return
* @throws CustomNoSuchFieldException
*/
@GetMapping("/token/menu/oprmng")
@ResponseBody
public List<OprmngCodeRes> getOprmngCode(@RequestParam(name = "serviceType", required = false) String serviceType,
@RequestParam(name = "menuval", required = false) String menuval) throws CustomNoSuchFieldException {
if (loginService.getUserVo() == null) {
throw new CustomNoSuchFieldException();
}
log.info("getOPR INIT");
return loginService.getOprmngCode(serviceType, menuval);
}
/**
* oprMngCode
*
*
*
* @param serviceType
* @return
* @throws CustomNoSuchFieldException
*/
@GetMapping("/token/menu/oprmng/admin")
@ResponseBody
public List<OprmngCodeRes> getOprmngCodeAdmin(@RequestParam(name = "serviceType", required = false) String serviceType) throws CustomNoSuchFieldException {
if (loginService.getUserVo() == null) {
throw new CustomNoSuchFieldException();
}
log.info("getOPR INIT");
return loginService.getOprmngCodeAdmin(serviceType);
}
@PostMapping("/token/menu/main/oprmng/update")
@ResponseBody
public void getMainOprmngCodeUpdate(@RequestBody MainOprReq dto) throws CustomNoSuchFieldException, CustomNotFoundException {
if (loginService.getUserVo() == null) {
throw new CustomNoSuchFieldException();
}
log.info("getOPR INIT - {}", new Gson().toJson(dto));
loginService.getMainOprmngCodeUpdate(dto);
}
}

@ -4,6 +4,8 @@ import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
import com.google.gson.Gson; import com.google.gson.Gson;
import com.google.gson.JsonDeserializer;
import com.google.gson.JsonObject;
import com.icomsys.main_vm.biz.advice.excep.CustomBadRequestException; import com.icomsys.main_vm.biz.advice.excep.CustomBadRequestException;
import com.icomsys.main_vm.biz.advice.excep.CustomNotFoundException; import com.icomsys.main_vm.biz.advice.excep.CustomNotFoundException;
import com.icomsys.main_vm.biz.common.common.service.LogService; import com.icomsys.main_vm.biz.common.common.service.LogService;
@ -28,6 +30,8 @@ import com.icomsys.main_vm.db.mybatis.alias.LoginVO;
import io.jsonwebtoken.Claims; import io.jsonwebtoken.Claims;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.catalina.User;
import org.json.JSONObject;
import org.springframework.context.MessageSource; import org.springframework.context.MessageSource;
import org.springframework.data.jpa.repository.config.EnableJpaAuditing; import org.springframework.data.jpa.repository.config.EnableJpaAuditing;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
@ -47,7 +51,10 @@ import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession; import javax.servlet.http.HttpSession;
import java.time.LocalDate;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
import java.util.*; import java.util.*;
import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicInteger;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@ -107,6 +114,7 @@ public class LoginService {
LoginVO userResult = user.toLoginVO(); LoginVO userResult = user.toLoginVO();
// return "forward:/adm/main/actionMain.do"; // return "forward:/adm/main/actionMain.do";
// return "layout/adm/common/dashboard"; // return "layout/adm/common/dashboard";
return "layout/main"; return "layout/main";
} else { } else {
@ -172,51 +180,10 @@ public class LoginService {
} }
public UserVo getUserVo() { public UserVo getUserVo() {
String payloadJWT = ""; UserVo user = (UserVo) httpServletRequest.getAttribute("UserVO");
String accessToken = ""; log.info("get User Vo!!!! - {}", new Gson().toJson((user) ));
log.info("get User Vo!!!! - {}", user.getRegistDate());
// String bearerToken = httpServletRequest.getHeader("Authorization"); log.info("get User Vo!!!! - {}", user.getUpdateDate());
//
// if (StringUtils.hasText(bearerToken) && bearerToken.startsWith("Bearer")) {
// payload = bearerToken.substring(7);
// }
// todo request header에서 token 값 가져오기
Cookie[] cookies = httpServletRequest.getCookies();
if(cookies!=null){
for (Cookie c : cookies) {
String name = c.getName(); // 쿠키 이름 가져오기
String value = c.getValue(); // 쿠키 값 가져오기
if (name.equals("accessToken")) {
payloadJWT = value.split("[.]")[1];
accessToken = value;
}
}
}
Claims claims = tokenProvider.parseClaims(accessToken);
// Base64.Decoder decoder = Base64.getUrlDecoder();
// final String payload = new String(decoder.decode(payloadJWT));
// JsonParser jsonParser = new BasicJsonParser();
// Map<String, Object> jsonArray = jsonParser.parseMap(payload);
Gson gson =new Gson();
Map map =new HashMap();
// map = gson.fromJson((String) jsonArray.get("UserVO"), map.getClass());
map = gson.fromJson((String) claims.get("UserVO"), map.getClass());
map.put("registDate", map.get("registDate").toString().replace(" ", "T"));
map.put("updateDate", map.get("updateDate").toString().replace(" ", "T"));
ObjectMapper objectMapper = new ObjectMapper();
UserVo user = objectMapper.registerModule(new JavaTimeModule()).convertValue(map, UserVo.class);
// UserVo user = (UserVo) httpServletRequest.getSession().getAttribute(SessionResource.UserVO.getName());
// if (user == null || user.equals("")) {
// httpServletResponse.setStatus(401);
// }
return user; return user;
} }
@ -450,11 +417,9 @@ public class LoginService {
// 2. 실제 검증 (사용자 비밀번호 체크)이 이루어지는 부분 // 2. 실제 검증 (사용자 비밀번호 체크)이 이루어지는 부분
// authenticate 매서드가 실행될 때 CustomUserDetailsService 에서 만든 loadUserByUsername 메서드가 실행 // authenticate 매서드가 실행될 때 CustomUserDetailsService 에서 만든 loadUserByUsername 메서드가 실행
try { try {
Authentication authentication = authenticationManagerBuilder.getObject().authenticate(authenticationToken); // Authentication authentication = authenticationManagerBuilder.getObject().authenticate(authenticationToken);
// 3. 인증 정보를 기반으로 JWT 토큰 생성 // 3. 인증 정보를 기반으로 JWT 토큰 생성
String accessToken = tokenProvider.generateToken(authentication, user); String accessToken = tokenProvider.generateToken(user);
return accessToken; return accessToken;
} catch (JsonProcessingException e) { } catch (JsonProcessingException e) {
throw new RuntimeException(e); throw new RuntimeException(e);

@ -1,4 +1,29 @@
package com.icomsys.main_vm.biz.common.view; package com.icomsys.main_vm.biz.common.view;
import com.icomsys.main_vm.biz.rcp.statistics.dashboard.service.StatisticsDashboardService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
@Controller
@RequiredArgsConstructor
@RequestMapping("/view")
@Slf4j
public class RcpViewController { public class RcpViewController {
private final StatisticsDashboardService statisticsDashboardService;
@GetMapping("/admin/common/dashboard/manage.do")
public ModelAndView DashboardView() {
// return "/adm/common/dashboard";
return new ModelAndView("/layout/adm/common/dashboard");
}
} }

@ -12,71 +12,71 @@ public enum MenuResource {
root("common", 1L, 0L, 1, "대쉬보드", "대쉬보드", "/layout/adm/common/dashboard"), root("common", 1L, 0L, 1, "대쉬보드", "대쉬보드", "/layout/adm/common/dashboard"),
// root("common", 1L, 0L, 1, "대쉬보드", "대쉬보드", "0"), // root("common", 1L, 0L, 1, "대쉬보드", "대쉬보드", "0"),
rcpconversation("rcp", 1800000L, 1L, 2, "대화관리", "대화관리", "0"), rcpconversation("rcp", 1800000L, 1L, 2, "대화관리", "대화관리", "0"),
rcpconversationintentmanage("rcp", 1800001L, 1800000L, 3, "인텐트관리", "인텐트관리", "/admin/rcp/conversation/intent/manage.do"), rcpconversationintentmanage("rcp", 1800001L, 1800000L, 3, "인텐트관리", "인텐트관리", "/view/admin/rcp/conversation/intent/manage.do"),
rcpconversationscenariomanage("rcp", 1800002L, 1800000L, 3, "시나리오관리", "시나리오관리", "/admin/rcp/conversation/scenario/manage.do"), rcpconversationscenariomanage("rcp", 1800002L, 1800000L, 3, "시나리오관리", "시나리오관리", "/view/admin/rcp/conversation/scenario/manage.do"),
rcpconversationsynonymmanage("rcp", 1800003L, 1800000L, 3, "동의어관리", "동의어관리", "/admin/rcp/conversation/synonym/manage.do"), rcpconversationsynonymmanage("rcp", 1800003L, 1800000L, 3, "동의어관리", "동의어관리", "/view/admin/rcp/conversation/synonym/manage.do"),
rcpconversationsystemEntitymanage("rcp", 1800004L, 1800000L, 3, "시스템엔티티", "시스템엔티티", "/admin/rcp/conversation/systemEntity/manage.do"), rcpconversationsystemEntitymanage("rcp", 1800004L, 1800000L, 3, "시스템엔티티", "시스템엔티티", "/view/admin/rcp/conversation/systemEntity/manage.do"),
rcpconversationapiNodemanage("rcp", 1800005L, 1800000L, 3, "API노드관리", "API노드관리", "/admin/rcp/conversation/apiNode/manage.do"), rcpconversationapiNodemanage("rcp", 1800005L, 1800000L, 3, "API노드관리", "API노드관리", "/view/admin/rcp/conversation/apiNode/manage.do"),
rcpconversationcmmNodemanage("rcp", 1800006L, 1800000L, 3, "COMMON노드관리", "COMMON노드관리", "/admin/rcp/conversation/cmmNode/manage.do"), rcpconversationcmmNodemanage("rcp", 1800006L, 1800000L, 3, "COMMON노드관리", "COMMON노드관리", "/view/admin/rcp/conversation/cmmNode/manage.do"),
rcplearningTest("rcp", 1900000L, 1L, 2, "학습및테스트", "학습및테스트", "0"), rcplearningTest("rcp", 1900000L, 1L, 2, "학습및테스트", "학습및테스트", "0"),
rcplearningTestsimulatormanage("rcp", 1900001L, 1900000L, 3, "시뮬레이터", "시뮬레이터", "/admin/rcp/learningTest/simulator/manage.do"), rcplearningTestsimulatormanage("rcp", 1900001L, 1900000L, 3, "시뮬레이터", "시뮬레이터", "/view/admin/rcp/learningTest/simulator/manage.do"),
rcplearningTestinferencemanage("rcp", 1900002L, 1900000L, 3, "의도추론 테스트", "의도추론 테스트", "/admin/rcp/learningTest/inference/manage.do"), rcplearningTestinferencemanage("rcp", 1900002L, 1900000L, 3, "의도추론 테스트", "의도추론 테스트", "/view/admin/rcp/learningTest/inference/manage.do"),
rcplearningTeststttestmanage("rcp", 1900003L, 1900000L, 3, "STT 테스트", "STT 테스트", "/admin/rcp/learningTest/stttest/manage.do"), rcplearningTeststttestmanage("rcp", 1900003L, 1900000L, 3, "STT 테스트", "STT 테스트", "/view/admin/rcp/learningTest/stttest/manage.do"),
rcplearningTestttstestmanage("rcp", 1900004L, 1900000L, 3, "TTS 테스트", "TTS 테스트", "/admin/rcp/learningTest/ttstest/manage.do"), rcplearningTestttstestmanage("rcp", 1900004L, 1900000L, 3, "TTS 테스트", "TTS 테스트", "/view/admin/rcp/learningTest/ttstest/manage.do"),
rcpmonitoring("rcp", 2000000L, 1L, 2, "모니터링", "모니터링", "0"), rcpmonitoring("rcp", 2000000L, 1L, 2, "모니터링", "모니터링", "0"),
rcpmonitoringconsultingmanage("rcp", 2000001L, 2000000L, 3, "응대이력", "응대이력", "/admin/rcp/statistics/monitoring/consulting/manage.do"), rcpmonitoringconsultingmanage("rcp", 2000001L, 2000000L, 3, "응대이력", "응대이력", "/view/admin/rcp/statistics/monitoring/consulting/manage.do"),
rcpmonitoringconversationMarkmanage("rcp", 2000002L, 2000000L, 3, "대화책갈피", "대화책갈피", "/admin/rcp/statistics/monitoring/conversationMark/manage.do"), rcpmonitoringconversationMarkmanage("rcp", 2000002L, 2000000L, 3, "대화책갈피", "대화책갈피", "/view/admin/rcp/statistics/monitoring/conversationMark/manage.do"),
rcpmonitoringintentAnalysismanage("rcp", 2000003L, 2000000L, 3, "인텐트분석관리", "인텐트분석관리", "/admin/rcp/statistics/monitoring/intentAnalysis/manage.do"), rcpmonitoringintentAnalysismanage("rcp", 2000003L, 2000000L, 3, "인텐트분석관리", "인텐트분석관리", "/view/admin/rcp/statistics/monitoring/intentAnalysis/manage.do"),
rcpmonitoringoutscenariomanage("rcp", 2000004L, 2000000L, 3, "시나리오이탈노드관리", "시나리오이탈노드관리", "/admin/rcp/statistics/monitoring/outscenario/manage.do"), rcpmonitoringoutscenariomanage("rcp", 2000004L, 2000000L, 3, "시나리오이탈노드관리", "시나리오이탈노드관리", "/view/admin/rcp/statistics/monitoring/outscenario/manage.do"),
rcpmonitoringworkhistorymanage("rcp", 2000005L, 2000000L, 3, "작업이력조회", "작업이력조회", "/admin/rcp/statistics/monitoring/workhistory/manage.do"), rcpmonitoringworkhistorymanage("rcp", 2000005L, 2000000L, 3, "작업이력조회", "작업이력조회", "/view/admin/rcp/statistics/monitoring/workhistory/manage.do"),
rcpmonitoringaienginemanage("rcp", 2000006L, 2000000L, 3, "AI엔진 트래픽모니터링", "AI엔진 트래픽모니터링", "/admin/rcp/statistics/monitoring/aiengine/manage.do"), rcpmonitoringaienginemanage("rcp", 2000006L, 2000000L, 3, "AI엔진 트래픽모니터링", "AI엔진 트래픽모니터링", "/view/admin/rcp/statistics/monitoring/aiengine/manage.do"),
rcpstatistics("rcp", 2100000L, 1L, 2, "통계", "통계", "0"), rcpstatistics("rcp", 2100000L, 1L, 2, "통계", "통계", "0"),
rcpstatisticsintent("rcp", 2100100L, 2100000L, 3, "인텐트통계", "인텐트통계", "0"), rcpstatisticsintent("rcp", 2100100L, 2100000L, 3, "인텐트통계", "인텐트통계", "0"),
rcpstatisticsintentdaymanage("rcp", 2100101L, 2100100L, 4, "날짜별통계", "인텐트날짜별통계", "/admin/rcp/statistics/intent/day/manage.do"), rcpstatisticsintentdaymanage("rcp", 2100101L, 2100100L, 4, "날짜별통계", "인텐트날짜별통계", "/view/admin/rcp/statistics/intent/day/manage.do"),
rcpstatisticsintentitemmanage("rcp", 2100102L, 2100100L, 4, "항목별통계", "인텐트항목별통계", "/admin/rcp/statistics/intent/item/manage.do"), rcpstatisticsintentitemmanage("rcp", 2100102L, 2100100L, 4, "항목별통계", "인텐트항목별통계", "/view/admin/rcp/statistics/intent/item/manage.do"),
rcpstatisticsscenario("rcp", 2100200L, 2100000L, 3, "시나리오통계", "시나리오통계", "0"), rcpstatisticsscenario("rcp", 2100200L, 2100000L, 3, "시나리오통계", "시나리오통계", "0"),
rcpstatisticsscenariodaymanage("rcp", 2100201L, 2100200L, 4, "날짜별통계", "시나리오날짜별통계", "/admin/rcp/statistics/scenario/day/manage.do"), rcpstatisticsscenariodaymanage("rcp", 2100201L, 2100200L, 4, "날짜별통계", "시나리오날짜별통계", "/view/admin/rcp/statistics/scenario/day/manage.do"),
rcpstatisticsscenarioitemmanage("rcp", 2100202L, 2100200L, 4, "항목별통계", "시나리오항목별통계", "/admin/rcp/statistics/scenario/item/manage.do"), rcpstatisticsscenarioitemmanage("rcp", 2100202L, 2100200L, 4, "항목별통계", "시나리오항목별통계", "/view/admin/rcp/statistics/scenario/item/manage.do"),
rcpstatisticscall("rcp", 2100300L, 2100000L, 3, "콜통계", "콜통계", "0"), rcpstatisticscall("rcp", 2100300L, 2100000L, 3, "콜통계", "콜통계", "0"),
rcpstatisticscallinfomanage("rcp", 2100301L, 2100300L, 4, "콜통계", "콜통계", "/admin/rcp/statistics/call/info/manage.do"), rcpstatisticscallinfomanage("rcp", 2100301L, 2100300L, 4, "콜통계", "콜통계", "/view/admin/rcp/statistics/call/info/manage.do"),
rcpstatisticsaienginemanage("rcp", 2100302L, 2100300L, 4, "AI엔진통계", "AI엔진통계", "/admin/rcp/statistics/call/aiengine/manage.do"), rcpstatisticsaienginemanage("rcp", 2100302L, 2100300L, 4, "AI엔진통계", "AI엔진통계", "/view/admin/rcp/statistics/call/aiengine/manage.do"),
rcpstatisticsdashboardmanage("rcp", 2100400L, 2100000L, 3, "대쉬보드", "대쉬보드", "/admin/common/dashboard/manage.do"), rcpstatisticsdashboardmanage("rcp", 2100400L, 2100000L, 3, "대쉬보드", "대쉬보드", "/view/admin/common/dashboard/manage.do"),
rcpoprmanage("rcp", 2200000L, 1L, 2, "운영관리", "운영관리", "0"), rcpoprmanage("rcp", 2200000L, 1L, 2, "운영관리", "운영관리", "0"),
rcpoprmanagenlpSettingmanage("rcp", 2200001L, 2200000L, 3, "NLP설정", "NLP설정", "/admin/rcp/oprmanage/nlpSetting/manage.do"), rcpoprmanagenlpSettingmanage("rcp", 2200001L, 2200000L, 3, "NLP설정", "NLP설정", "/view/admin/rcp/oprmanage/nlpSetting/manage.do"),
rcpoprmanagebgmmanage("rcp", 2200002L, 2200000L, 3, "배경음관리", "배경음관리", "/admin/rcp/oprmanage/bgm/manage.do"), rcpoprmanagebgmmanage("rcp", 2200002L, 2200000L, 3, "배경음관리", "배경음관리", "/view/admin/rcp/oprmanage/bgm/manage.do"),
rcpoprmanagettstagmanage("rcp", 2200003L, 2200000L, 3, "TTS태그관리", "TTS태그관리", "/admin/rcp/oprmanage/ttstag/manage.do"), rcpoprmanagettstagmanage("rcp", 2200003L, 2200000L, 3, "TTS태그관리", "TTS태그관리", "/view/admin/rcp/oprmanage/ttstag/manage.do"),
gudguide("gud", 2300000L, 1L, 2, "상담가이드", "상담가이드", "0"), gudguide("gud", 2300000L, 1L, 2, "상담가이드", "상담가이드", "0"),
gudguideconsultationRealtimemanage("gud", 2300100L, 2300000L, 3, "실시간상담", "실시간상담", "/admin/gud/guide/consultationRealtime/manage.do"), gudguideconsultationRealtimemanage("gud", 2300100L, 2300000L, 3, "실시간상담", "실시간상담", "/view/admin/gud/guide/consultationRealtime/manage.do"),
gudguideadminMonitoringmanage("gud", 2300200L, 2300000L, 3, "관리자모니터링", "관리자모니터링", "/admin/gud/guide/adminMonitoring/manage.do"), gudguideadminMonitoringmanage("gud", 2300200L, 2300000L, 3, "관리자모니터링", "관리자모니터링", "/view/admin/gud/guide/adminMonitoring/manage.do"),
gudguidehistory("gud", 2300300L, 2300000L, 3, "상담이력관리", "상담이력관리", "0"), gudguidehistory("gud", 2300300L, 2300000L, 3, "상담이력관리", "상담이력관리", "0"),
gudguidehistoryscrchmanage("gud", 2300301L, 2300300L, 4, "상담이력조회", "상담이력조회", "/admin/gud/guide/history/scrch/manage.do"), gudguidehistoryscrchmanage("gud", 2300301L, 2300300L, 4, "상담이력조회", "상담이력조회", "/view/admin/gud/guide/history/scrch/manage.do"),
gudguidehistoryoutboxmanage("gud", 2300302L, 2300300L, 4, "상담이력전송함", "상담이력전송함", "/admin/gud/guide/history/outbox/manage.do"), gudguidehistoryoutboxmanage("gud", 2300302L, 2300300L, 4, "상담이력전송함", "상담이력전송함", "/view/admin/gud/guide/history/outbox/manage.do"),
gudguidehistoryinboxmanage("gud", 2300303L, 2300300L, 4, "상담이력수신함", "상담이력수신함", "/admin/gud/guide/history/inbox/manage.do"), gudguidehistoryinboxmanage("gud", 2300303L, 2300300L, 4, "상담이력수신함", "상담이력수신함", "/view/admin/gud/guide/history/inbox/manage.do"),
gudguidecontents("gud", 2300400L, 2300000L, 3, "상담컨텐츠", "상담컨텐츠", "0"), gudguidecontents("gud", 2300400L, 2300000L, 3, "상담컨텐츠", "상담컨텐츠", "0"),
gudguidecontentslistmanage("gud", 2300401L, 2300400L, 4, "상담가이드조회", "상담가이드조회", "/admin/gud/guide/contents/list/manage.do"), gudguidecontentslistmanage("gud", 2300401L, 2300400L, 4, "상담가이드조회", "상담가이드조회", "/view/admin/gud/guide/contents/list/manage.do"),
gudguidecontentsmanagermanage("gud", 2300402L, 2300400L, 4, "상담가이드관리", "상담가이드관리", "/admin/gud/guide/contents/manager/manage.do"), gudguidecontentsmanagermanage("gud", 2300402L, 2300400L, 4, "상담가이드관리", "상담가이드관리", "/view/admin/gud/guide/contents/manager/manage.do"),
gudguidecontentscontentsAssessmentmanage("gud", 2300403L, 2300400L, 4, "상담가이드평가", "상담가이드평가", "/admin/gud/guide/contents/contentsAssessment/manage.do"), gudguidecontentscontentsAssessmentmanage("gud", 2300403L, 2300400L, 4, "상담가이드평가", "상담가이드평가", "/view/admin/gud/guide/contents/contentsAssessment/manage.do"),
gudguidecontentscontentsAssessmentHistorymanage("gud", 2300404L, 2300400L, 4, "상담가이드평가이력", "상담가이드평가이력", "/admin/gud/guide/contents/contentsAssessmentHistory/manage.do"), gudguidecontentscontentsAssessmentHistorymanage("gud", 2300404L, 2300400L, 4, "상담가이드평가이력", "상담가이드평가이력", "/view/admin/gud/guide/contents/contentsAssessmentHistory/manage.do"),
gudguideai("gud", 2300500L, 2300000L, 3, "NLP연동", "NLP연동", "0"), gudguideai("gud", 2300500L, 2300000L, 3, "NLP연동", "NLP연동", "0"),
gudguideainluIntentListmanage("gud", 2300501L, 2300500L, 4, "대화의도", "대화의도", "/admin/gud/guide/ai/nluIntentList/manage.do"), gudguideainluIntentListmanage("gud", 2300501L, 2300500L, 4, "대화의도", "대화의도", "/view/admin/gud/guide/ai/nluIntentList/manage.do"),
gudguideainluEntityListmanage("gud", 2300502L, 2300500L, 4, "엔티티", "엔티티", "/admin/gud/guide/ai/nluEntityList/manage.do"), gudguideainluEntityListmanage("gud", 2300502L, 2300500L, 4, "엔티티", "엔티티", "/view/admin/gud/guide/ai/nluEntityList/manage.do"),
gudguideainluLogmanage("gud", 2300503L, 2300500L, 4, "대화의도이력", "대화의도이력", "/admin/gud/guide/ai/nluLog/manage.do"), gudguideainluLogmanage("gud", 2300503L, 2300500L, 4, "대화의도이력", "대화의도이력", "/view/admin/gud/guide/ai/nluLog/manage.do"),
gudguideainluTrainingmanage("gud", 2300504L, 2300500L, 4, "기계학습", "기계학습", "/admin/gud/guide/ai/nluTraining/manage.do"), gudguideainluTrainingmanage("gud", 2300504L, 2300500L, 4, "기계학습", "기계학습", "/view/admin/gud/guide/ai/nluTraining/manage.do"),
gudguideainluIntenttestmanage("gud", 2300505L, 2300500L, 4, "대화의도테스트", "대화의도테스트", "/admin/gud/guide/ai/nluIntenttest/manage.do"), gudguideainluIntenttestmanage("gud", 2300505L, 2300500L, 4, "대화의도테스트", "대화의도테스트", "/view/admin/gud/guide/ai/nluIntenttest/manage.do"),
gudguideaisynonymListmanage("gud", 2300506L, 2300500L, 4, "고유용어사전", "고유용어사전", "/admin/gud/guide/ai/synonymList/manage.do"), gudguideaisynonymListmanage("gud", 2300506L, 2300500L, 4, "고유용어사전", "고유용어사전", "/view/admin/gud/guide/ai/synonymList/manage.do"),
gudguideainluRecommendedLearningmanage("gud", 2300507L, 2300500L, 4, "학습추천", "학습추천", "/admin/gud/guide/ai/nluRecommendedLearning/manage.do"), gudguideainluRecommendedLearningmanage("gud", 2300507L, 2300500L, 4, "학습추천", "학습추천", "/view/admin/gud/guide/ai/nluRecommendedLearning/manage.do"),
addraddrbot("addr", 2400000L, 1L, 2, "주소봇", "주소봇", "0"), addraddrbot("addr", 2400000L, 1L, 2, "주소봇", "주소봇", "0"),
addraddrbotmanageAddrSectionmanage("addr", 2400100L, 2400000L, 3, "지명유사어관리", "지명유사어관리", "/admin/addr/addrbot/manageAddrSection/manage.do"), addraddrbotmanageAddrSectionmanage("addr", 2400100L, 2400000L, 3, "지명유사어관리", "지명유사어관리", "/view/admin/addr/addrbot/manageAddrSection/manage.do"),
addraddrbotmanageBuildNamemanage("addr", 2400200L, 2400000L, 3, "빌딩유사어관리", "빌딩유사어관리", "/admin/addr/addrbot/manageBuildName/manage.do"), addraddrbotmanageBuildNamemanage("addr", 2400200L, 2400000L, 3, "빌딩유사어관리", "빌딩유사어관리", "/view/admin/addr/addrbot/manageBuildName/manage.do"),
addraddrbotmanageSynonymmanage("addr", 2400300L, 2400000L, 3, "유의어전처리관리", "유의어전처리관리", "/admin/addr/addrbot/manageSynonym/manage.do"), addraddrbotmanageSynonymmanage("addr", 2400300L, 2400000L, 3, "유의어전처리관리", "유의어전처리관리", "/view/admin/addr/addrbot/manageSynonym/manage.do"),
addraddrbotmanageBuildTypemanage("addr", 2400400L, 2400000L, 3, "발화건물유형관리", "발화건물유형관리", "/admin/addr/addrbot/manageBuildType/manage.do"), addraddrbotmanageBuildTypemanage("addr", 2400400L, 2400000L, 3, "발화건물유형관리", "발화건물유형관리", "/view/admin/addr/addrbot/manageBuildType/manage.do"),
addraddrbotmanageJusoUploadmanage("addr", 2400500L, 2400000L, 3, "주소월별업데이트", "주소월별업데이트", "/admin/addr/addrbot/manageJusoUpload/manage.do"), addraddrbotmanageJusoUploadmanage("addr", 2400500L, 2400000L, 3, "주소월별업데이트", "주소월별업데이트", "/view/admin/addr/addrbot/manageJusoUpload/manage.do"),
addraddrbotmanageAddrProcessmanage("addr", 2400600L, 2400000L, 3, "주소봇처리내역", "주소봇처리내역", "/admin/addr/addrbot/manageAddrProcess/manage.do"), addraddrbotmanageAddrProcessmanage("addr", 2400600L, 2400000L, 3, "주소봇처리내역", "주소봇처리내역", "/admin/addr/addrbot/manageAddrProcess/manage.do"),
addraddrbotaddrRealtimeListmanage("addr", 2400700L, 2400000L, 3, "실시간처리리스트", "실시간처리리스트", "/admin/addr/addrbot/addrRealtimeList/manage.do"), addraddrbotaddrRealtimeListmanage("addr", 2400700L, 2400000L, 3, "실시간처리리스트", "실시간처리리스트", "/admin/addr/addrbot/addrRealtimeList/manage.do"),

@ -4,8 +4,11 @@ import com.fasterxml.jackson.databind.ObjectMapper;
//import com.icomsys.main_vm.db.jpa.repo.bot.TbBotAuthMenuRepo; //import com.icomsys.main_vm.db.jpa.repo.bot.TbBotAuthMenuRepo;
//import com.icomsys.main_vm.db.jpa.repo.bot.TbBotMenuRepo; //import com.icomsys.main_vm.db.jpa.repo.bot.TbBotMenuRepo;
import com.google.gson.Gson; import com.google.gson.Gson;
import com.icomsys.main_vm.biz.common.login.TokenProvider;
import com.icomsys.main_vm.biz.common.login.res.UserVo;
import com.icomsys.main_vm.common.code.enumresource.SessionResource; import com.icomsys.main_vm.common.code.enumresource.SessionResource;
import com.icomsys.main_vm.db.mybatis.alias.LoginVO; import com.icomsys.main_vm.db.mybatis.alias.LoginVO;
import io.jsonwebtoken.Claims;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
@ -26,6 +29,8 @@ import java.time.LocalDateTime;
@RequiredArgsConstructor @RequiredArgsConstructor
public class LoginFilter extends OncePerRequestFilter { public class LoginFilter extends OncePerRequestFilter {
private final TokenProvider tokenProvider;
private final ObjectMapper objectMapper; private final ObjectMapper objectMapper;
// private final TbBotAuthMenuRepo tbBotAuthMenuRepo; // private final TbBotAuthMenuRepo tbBotAuthMenuRepo;
// private final TbBotMenuRepo tbBotMenuRepo; // private final TbBotMenuRepo tbBotMenuRepo;
@ -57,11 +62,13 @@ public class LoginFilter extends OncePerRequestFilter {
|| reqUrl.startsWith("/view") || reqUrl.startsWith("/view")
|| reqUrl.equals("/") || reqUrl.equals("/")
) { ) {
log.info("static file check");
filterChain.doFilter(request, response); filterChain.doFilter(request, response);
} else { } else {
UserVo user = new Gson().fromJson((String) tokenProvider
.parseClaims(request.getHeader("Authorization")
.split(" ")[1]).get("UserVO"), UserVo.class);
request.setAttribute("UserVO", user);
filterChain.doFilter(request, response); filterChain.doFilter(request, response);
} }
} }
} }

@ -23,7 +23,7 @@ var StatisticsDashboard = {
async: false, async: false,
datatype: "JSON", datatype: "JSON",
contentType : "application/json; charset=utf-8", contentType : "application/json; charset=utf-8",
url: "/adm/menu/oprmng", url: "/api/v1/token/menu/oprmng",
headers: {'Authorization': getToken()}, headers: {'Authorization': getToken()},
data: {menuval: 'root'}, data: {menuval: 'root'},
// data: {serviceType: 'S'}, // data: {serviceType: 'S'},
@ -242,22 +242,6 @@ var StatisticsDashboard = {
} }
$(document).ready(function () {
StatisticsDashboard.setOprMngCode();
StatisticsDashboard.setDashboardChart();
dashboardChartCall(); // 빌보드 차트 디자인 및 호출
// LNG 메뉴 접었다 필 경우 레이아웃을 다시 새로고침하기 위해 dashboardChartCall 재 호출 함.
$('.lnb_menu_menu').on('click', function () {
setTimeout(() => {
dashboardChartCall();
}, 500);
})
});
$(window).resize(function () {
dashboardChartCall();
})
function dashboardChartCall() { function dashboardChartCall() {
// 차트 디자인 커스텀 변수 (색상 및 외형) // 차트 디자인 커스텀 변수 (색상 및 외형)

@ -1,119 +1,134 @@
<!DOCTYPE html>
<head> <head>
<meta charset="UTF-8"> <meta charset="UTF-8">
<title>대시보드</title>
<title>대시보드</title>
</head> </head>
<body> <body>
<script type="text/javascript" src="/aajs/statisticsDashboard.js"></script> <style>
<style> .dashboard .component-billboard .billboard-grid {
.dashboard .component-billboard .billboard-grid { padding: 5px;
padding: 5px; }
} </style>
</style> <section id="Content" class="bot_common">
<section id="Content" class="bot_common"> <div class="location">
<div class="location"> <ul>
<ul> <li class="home"><a href="#">HOME</a></li>
<li class="home"><a href="#">HOME</a></li> <li><a href="#">대시보드</a></li>
<li><a href="#">대시보드</a></li> </ul>
</ul> </div>
</div>
<!-- TODO: 래부터 신규 컨텐츠 마크업 입니다. --> <!-- TODO: 래부터 신규 컨텐츠 마크업 입니다. -->
<div class="sub_cont"> <div class="sub_cont">
<div class="cont_box"> <div class="cont_box">
<div class="box_title"> <div class="box_title">
<div class="fl"> <div class="fl">
<!-- <h2 class="mt12">대시보드</h2>--> <!-- <h2 class="mt12">대시보드</h2>-->
</div> </div>
<div class="fr"> <div class="fr">
<div class="btn_wrap fl"> <div class="btn_wrap fl">
<a href="javascript:StatisticsDashboard.setDashboardChart();" class="btn">조회</a> <a href="javascript:StatisticsDashboard.setDashboardChart();" class="btn">조회</a>
</div> </div>
</div> </div>
</div> </div>
<div class="tbl"> <div class="tbl">
<table class="search block"> <table class="search block">
<colgroup> <colgroup>
<col width="140px"> <col width="140px">
<col width="auto"> <col width="auto">
</colgroup> </colgroup>
<tbody> <tbody>
<tr> <tr>
<th class="tl">시나리오 그룹</th> <th class="tl">시나리오 그룹</th>
<td> <td>
<div class="sel_box"> <div class="sel_box">
<select class="wide" id="oprMngCode"> <select class="wide" id="oprMngCode">
</select> </select>
</div> </div>
</td> </td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</div> </div>
</div> </div>
<div class="cont_box dashboard"> <div class="cont_box dashboard">
<div class="component-billboard"> <div class="component-billboard">
<div class="billboard-grid"> <div class="billboard-grid">
<div class="box_title"> <div class="box_title">
<div class="tit fl">전체 콜 그래프 (단위 : 건)</div> <div class="tit fl">전체 콜 그래프 (단위 : 건)</div>
</div> </div>
<div class="grid-inner"> <div class="grid-inner">
<div class="chart-item-box"> <div class="chart-item-box">
<div class="chart-item"> <div class="chart-item">
<div class="chart" id="lineChart"></div> <div class="chart" id="lineChart"></div>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
<div class="billboard-grid"> <div class="billboard-grid">
<div class="box_title"> <div class="box_title">
<div class="tit fl">인텐트 그래프 (단위 : 건)</div> <div class="tit fl">인텐트 그래프 (단위 : 건)</div>
</div> </div>
<div class="grid-inner"> <div class="grid-inner">
<div class="chart-item-box"> <div class="chart-item-box">
<div class="chart-item"> <div class="chart-item">
<div class="chart" id="lineChart2"></div> <div class="chart" id="lineChart2"></div>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
<div class="billboard-grid"> <div class="billboard-grid">
<div class="box_title"> <div class="box_title">
<div class="tit fl">시나리오 그래프 (단위 : 건)</div> <div class="tit fl">시나리오 그래프 (단위 : 건)</div>
</div> </div>
<div class="grid-inner"> <div class="grid-inner">
<div class="chart-item-box"> <div class="chart-item-box">
<div class="chart-item"> <div class="chart-item">
<div class="chart" id="lineChart3"></div> <div class="chart" id="lineChart3"></div>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
<div class="billboard-grid full"> <div class="billboard-grid full">
<div class="box_title"> <div class="box_title">
<div class="tit fl">오늘 시간대별 통화량 (단위 : 건)</div> <div class="tit fl">오늘 시간대별 통화량 (단위 : 건)</div>
<div class="tit fr" id="curCallCnt">현재 통화량 : 0건</div> <div class="tit fr" id="curCallCnt">현재 통화량 : 0건</div>
</div> </div>
<div class="grid-inner"> <div class="grid-inner">
<div class="chart-item-box"> <div class="chart-item-box">
<div class="chart-item"> <div class="chart-item">
<div class="chart" id="barChart"></div> <div class="chart" id="barChart"></div>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
</section> </section>
</body> </body>
</html>
<script type="text/javascript" src="/aajs/statisticsDashboard.js"></script>
<script> // $(document).ready(function () {
StatisticsDashboard.setOprMngCode();
StatisticsDashboard.setDashboardChart();
dashboardChartCall(); // 빌보드 차트 디자인 및 호출
// LNG 메뉴 접었다 필 경우 레이아웃을 다시 새로고침하기 위해 dashboardChartCall 재 호출 함.
$('.lnb_menu_menu').on('click', function () {
setTimeout(() => {
// dashboardChartCall();
}, 500);
})
// });
$(window).resize(function () {
dashboardChartCall();
})
</script>

@ -3,31 +3,107 @@
<title>고객사관리</title> <title>고객사관리</title>
</head> </head>
<body>
<script> <h1>ICOMSYS ADMIN</h1>
$(document).ready(function () { <h1>대시보드</h1>
PagingDataTable(); <div class="skip_navigation">
$('#listTable tbody').on('dblclick', 'tr', function () { <ul>
var data = $('#listTable').DataTable().row(this).data(); <li>
viewPage(data) <a href="#Content" class="go_content">본문 바로가기</a>
}); </li>
$('#btnSearchOpr').on('click', function () { <li>
fnCustSearchBtn(); <a href="#Gnb">메뉴 바로가기</a>
}); </li>
</ul>
</div>
<section id="Content" class="system_management">
<div class="location">
<ul>
<li class="home"><a href="#">HOME</a></li>
<li><a href="#">시스템관리</a></li>
<li><a href="#">고객사 관리</a></li>
</ul>
</div>
$("#Content").on("keyup", function (key) { <div class="sub_cont menu06_01_03">
if (key.keyCode == 13) { <div class="cont_box">
fnCustSearchBtn(); <div class="box_title">
} <div class="fl">
}); <h2 class="mt12">고객사 조회</h2>
</div>
<div class="fr">
<div class="btn_wrap fl">
<a href="#" id="btnSearchOpr" class="btn">조회</a>
</div>
</div>
</div>
<div class="tbl">
<table class="search block">
<colgroup>
<col width="140px">
<col width="85%">
</colgroup>
<tbody>
<tr>
<th class="tl">고객사명</th>
<td>
<div class="ipt_box listen">
<input type="text" placeholder="검색어를 입력하세요" id="codeText" name="typeText">
</div>
</td>
</tr>
$('#btnRegModal').on('click', function () { </tbody>
fnInsertBtn(); </table>
}); </div>
</div>
<div class="cont_box">
<div class="box_title">
<div class="fl">
<h2 class="mt12">고객사 리스트</h2>
</div>
<div class="btn_wrap fr">
<a href="#" class="btn line modalLoad" id="btnRegModal">등록</a>
</div>
</div>
} <div class="tbl">
); <form id="custListForm">
<table id="listTable" class="">
<colgroup>
<col width="auto">
<!-- <col width="auto">-->
<!-- <col width="auto">-->
<col width="auto">
<col width="auto">
<col width="auto">
</colgroup>
<thead>
<tr>
<!-- <th>고객사코드</th>-->
<th>고객사명</th>
<th>고객사안내멘트</th>
<!-- <th>대표번호</th>-->
<th>사용유무</th>
<th>생성일</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
</form>
</div>
</div>
</div>
</section>
</body>
<script>
function viewPage(rowData) { function viewPage(rowData) {
// console.log(rowData.custCode); // console.log(rowData.custCode);
@ -157,102 +233,23 @@
$('#listTable').DataTable().ajax.reload(); $('#listTable').DataTable().ajax.reload();
}; };
</script> PagingDataTable();
$('#listTable tbody').on('dblclick', 'tr', function () {
<body> var data = $('#listTable').DataTable().row(this).data();
viewPage(data)
<h1>ICOMSYS ADMIN</h1> });
<h1>대시보드</h1> $('#btnSearchOpr').on('click', function () {
<div class="skip_navigation"> fnCustSearchBtn();
<ul> });
<li>
<a href="#Content" class="go_content">본문 바로가기</a> $("#Content").on("keyup", function (key) {
</li> if (key.keyCode == 13) {
<li> fnCustSearchBtn();
<a href="#Gnb">메뉴 바로가기</a> }
</li> });
</ul>
</div>
<section id="Content" class="system_management">
<div class="location">
<ul>
<li class="home"><a href="#">HOME</a></li>
<li><a href="#">시스템관리</a></li>
<li><a href="#">고객사 관리</a></li>
</ul>
</div>
<div class="sub_cont menu06_01_03">
<div class="cont_box">
<div class="box_title">
<div class="fl">
<h2 class="mt12">고객사 조회</h2>
</div>
<div class="fr">
<div class="btn_wrap fl">
<a href="#" id="btnSearchOpr" class="btn">조회</a>
</div>
</div>
</div>
<div class="tbl">
<table class="search block">
<colgroup>
<col width="140px">
<col width="85%">
</colgroup>
<tbody>
<tr>
<th class="tl">고객사명</th>
<td>
<div class="ipt_box listen">
<input type="text" placeholder="검색어를 입력하세요" id="codeText" name="typeText">
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="cont_box">
<div class="box_title">
<div class="fl">
<h2 class="mt12">고객사 리스트</h2>
</div>
<div class="btn_wrap fr">
<a href="#" class="btn line modalLoad" id="btnRegModal">등록</a>
</div>
</div>
$('#btnRegModal').on('click', function () {
fnInsertBtn();
});
<div class="tbl"> </script>
<form id="custListForm">
<table id="listTable" class="">
<colgroup>
<col width="auto">
<!-- <col width="auto">-->
<!-- <col width="auto">-->
<col width="auto">
<col width="auto">
<col width="auto">
</colgroup>
<thead>
<tr>
<!-- <th>고객사코드</th>-->
<th>고객사명</th>
<th>고객사안내멘트</th>
<!-- <th>대표번호</th>-->
<th>사용유무</th>
<th>생성일</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
</form>
</div>
</div>
</div>
</section>
</body>

@ -15,65 +15,196 @@
</ul> </ul>
</div> </div>
<header id="header">
</header>
<script>
$(document).ready(function () {
// 권한 조회 <section id="Content" class="system_management">
$('#btnSearchCust').on('click', function () { <div class="location">
fncSearchCust(); <ul>
}); <li class="home"><a href="#">HOME</a></li>
<li><a href="#">시스템관리</a></li>
<li><a href="#">고객사관리</a></li>
</ul>
</div>
//커스트코드 중복확인 <!-- TODO: 래부터 신규 컨텐츠 마크업 입니다. -->
$('#btnCustCodeDoubleCheck').on('click', function () { <div class="sub_cont">
// console.log("커스트 중복 클릭") <div class="cont_box">
fncCustDoubleCheck(); <div class="box_title">
}); <div class="fl">
//서비스코드 중복확인 <h2 class="mt12">고객사 등록</h2>
$('#btnServiceGroupDoubleCheck').on('click', function () { </div>
// console.log("서비스 중복 클릭") </div>
fncServiceDoubleCheck(); <div class="tbl">
}); <table class="edit hght">
<colgroup>
<col width="150px">
<col width="auto">
</colgroup>
<tbody>
<tr>
<th class="tl">고객사명 <em class="red">*</em></th>
<td>
<div class="ipt_box">
<input id="newCustName" type="text" value="" name="" class="">
</div>
</td>
</tr>
<tr>
<th class="tl">고객사코드 <em class="red">*</em></th>
<td>
<div class="ipt_box type-flex">
<input id="newCustCode" type="text" value="" name="" class="">
<input id="newCustCodeDoubleCheck" type="hidden" value="N" name="" class="">
<a href="#" id="btnCustCodeDoubleCheck" class="btn basic">중복확인</a>
</div>
</td>
</tr>
$('#btnCancel').on('click', function () { <tr>
// console.log("취소클릭") <th class="tl">사용여부 <em class="red">*</em></th>
listgo() <td>
}); <div class="sel_box">
$('#btnSave').on('click', function () { <select class="wide" id="newCustUseYn">
// console.log("저장클릭") <option value="Y">Y</option>
fncCustSave(); <option value="N">N</option>
</select>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
}); <div class="cont_box">
<div class="box_title">
<div class="fl">
<h2 class="mt12">서비스 그룹 <em class="red">*</em></h2>
</div>
<div class="btn_wrap fr">
<a href="#" id="btnRegModal" rel="reg_modal" class="btn line modalLoad">추가</a>
</div>
</div>
$('#newServiceGroup').keyup(function (e) {
// newOprCreate(e.keyCode)
});
$('#btnSaveCust').on('click', function () { <div class="tbl-card-wrap">
addServiceGroup(); <ul class="tbl-card">
// $('.tbl-card-li').each(function () { </ul>
// // console.log("???"); </div>
// $(this).find('.tbl-card-title').on('click', function () { </div>
// $(this).parents('.tbl-card-li').toggleClass('on');
// })
// });
// console.log($('.tbl-card').find('.tbl-card-li').last()); <div class="cont_box">
// $('.tbl-card').find('.tbl-card-li').last() <div class="btn_wrap center">
$('.tbl-card').find('.tbl-card-title').last() <a href="#" class="btn basic grey" id="btnCancel">취소</a>
.on('click', function () { <a href="#" class="btn basic" id="btnSave">저장</a>
$(this).parents('.tbl-card-li').toggleClass('on') </div>
} </div>
); </div>
}); </section>
// $('#newServiceGroup').change(function () {
// ($(this).val())
// });
}); <div class="modal" id="reg_modal">
<div class="modal_header">
<h3>서비스그룹 신규등록</h3>
</div>
<div class="modal_body">
<div class="modal_cont">
<form id="serviceInfo">
<div class="tbl">
<table class="edit hght">
<colgroup>
<col width="150px">
<col width="auto">
<tbody>
<tr>
<th class="tl">서비스그룹명</th>
<td>
<div class="ipt_box">
<input type="text" id="newServiceGroupName" value="" name=""
class="title-connect">
</div>
</td>
</tr>
<tr>
<th class="tl">서비스코드</th>
<td>
<div class="ipt_box type-flex">
<input type="text" id="newServiceGroup" value="" name="" class="">
<input type="hidden" id="newServiceGroupDoubleCheck" value="N" name="" class="">
<a href="#" class="btn grey" id="btnServiceGroupDoubleCheck">중복확인</a>
</div>
</td>
</tr>
<%--
<tr>--%>
<%--
<th class="tl">운영관리코드</th>
--%>
<%--
<td>--%>
<%--
<div class="ipt_box" id="newOprDiv">--%>
<%-- <input type="text" id="newOprMngCode" value="" name="" --%>
<%-- class=" title-connect" readonly>--%>
<%--
</div>
--%>
<%--
</td>
--%>
<%--
</tr>
--%>
<tr>
<th class="tl">서비스그룹 설명</th>
<td>
<div class="ipt_box">
<input type="text" id="newServiceGroupDesc" value="" name="" class="">
</div>
</td>
</tr>
<tr>
<th class="tl">사용여부 <em class="red">*</em></th>
<td>
<div class="sel_box">
<select class="wide" id="newServiceUseYn">
<option value="Y" selected>Y</option>
<option value="N">N</option>
</select>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</form>
</div>
</div>
<div class="modal_footer">
<div class="btn_wrap fr">
<a href="#" class="btn" id="btnSaveCust">저장</a>
</div>
</div>
<div class="modal_controller">
<a href="#" class="close">close</a>
</div>
</div>
</body>
<script>
// $('#newServiceGroup').change(function () {
// ($(this).val())
// });
function fncCustSave() { function fncCustSave() {
@ -481,185 +612,53 @@
} }
</script>
<section id="Content" class="system_management">
<div class="location">
<ul>
<li class="home"><a href="#">HOME</a></li>
<li><a href="#">시스템관리</a></li>
<li><a href="#">고객사관리</a></li>
</ul>
</div>
<!-- TODO: 래부터 신규 컨텐츠 마크업 입니다. -->
<div class="sub_cont">
<div class="cont_box">
<div class="box_title">
<div class="fl">
<h2 class="mt12">고객사 등록</h2>
</div>
</div>
<div class="tbl">
<table class="edit hght">
<colgroup>
<col width="150px">
<col width="auto">
</colgroup>
<tbody>
<tr>
<th class="tl">고객사명 <em class="red">*</em></th>
<td>
<div class="ipt_box">
<input id="newCustName" type="text" value="" name="" class="">
</div>
</td>
</tr>
<tr>
<th class="tl">고객사코드 <em class="red">*</em></th>
<td>
<div class="ipt_box type-flex">
<input id="newCustCode" type="text" value="" name="" class="">
<input id="newCustCodeDoubleCheck" type="hidden" value="N" name="" class="">
<a href="#" id="btnCustCodeDoubleCheck" class="btn basic">중복확인</a>
</div>
</td>
</tr>
<tr>
<th class="tl">사용여부 <em class="red">*</em></th>
<td>
<div class="sel_box">
<select class="wide" id="newCustUseYn">
<option value="Y">Y</option>
<option value="N">N</option>
</select>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="cont_box">
<div class="box_title">
<div class="fl">
<h2 class="mt12">서비스 그룹 <em class="red">*</em></h2>
</div>
<div class="btn_wrap fr">
<a href="#" id="btnRegModal" rel="reg_modal" class="btn line modalLoad">추가</a>
</div>
</div>
<div class="tbl-card-wrap">
<ul class="tbl-card">
</ul>
</div>
</div>
<div class="cont_box">
<div class="btn_wrap center">
<a href="#" class="btn basic grey" id="btnCancel">취소</a>
<a href="#" class="btn basic" id="btnSave">저장</a>
</div>
</div>
</div>
</section>
<div class="modal" id="reg_modal">
<div class="modal_header">
<h3>서비스그룹 신규등록</h3>
</div>
<div class="modal_body">
<div class="modal_cont">
<form id="serviceInfo">
<div class="tbl">
<table class="edit hght">
<colgroup>
<col width="150px">
<col width="auto">
<tbody>
<tr>
<th class="tl">서비스그룹명</th>
<td>
<div class="ipt_box">
<input type="text" id="newServiceGroupName" value="" name=""
class="title-connect">
</div>
</td>
</tr>
<tr> // 권한 조회
<th class="tl">서비스코드</th> $('#btnSearchCust').on('click', function () {
<td> fncSearchCust();
<div class="ipt_box type-flex"> });
<input type="text" id="newServiceGroup" value="" name="" class="">
<input type="hidden" id="newServiceGroupDoubleCheck" value="N" name="" class="">
<a href="#" class="btn grey" id="btnServiceGroupDoubleCheck">중복확인</a>
</div>
</td>
</tr>
<%-- //커스트코드 중복확인
<tr>--%> $('#btnCustCodeDoubleCheck').on('click', function () {
<%-- // console.log("커스트 중복 클릭")
<th class="tl">운영관리코드</th> fncCustDoubleCheck();
--%> });
<%-- //서비스코드 중복확인
<td>--%> $('#btnServiceGroupDoubleCheck').on('click', function () {
<%-- // console.log("서비스 중복 클릭")
<div class="ipt_box" id="newOprDiv">--%> fncServiceDoubleCheck();
<%-- <input type="text" id="newOprMngCode" value="" name="" --%> });
<%-- class=" title-connect" readonly>--%>
<%--
</div>
--%>
<%--
</td>
--%>
<%--
</tr>
--%>
<tr> $('#btnCancel').on('click', function () {
<th class="tl">서비스그룹 설명</th> // console.log("취소클릭")
<td> listgo()
<div class="ipt_box"> });
<input type="text" id="newServiceGroupDesc" value="" name="" class=""> $('#btnSave').on('click', function () {
</div> // console.log("저장클릭")
</td> fncCustSave();
</tr>
<tr> });
<th class="tl">사용여부 <em class="red">*</em></th>
<td>
<div class="sel_box">
<select class="wide" id="newServiceUseYn">
<option value="Y" selected>Y</option>
<option value="N">N</option>
</select>
</div>
</td>
</tr>
</tbody> $('#newServiceGroup').keyup(function (e) {
</table> // newOprCreate(e.keyCode)
</div> });
</form>
</div>
</div>
<div class="modal_footer">
<div class="btn_wrap fr">
<a href="#" class="btn" id="btnSaveCust">저장</a>
</div>
</div>
<div class="modal_controller">
<a href="#" class="close">close</a>
</div>
</div>
$('#btnSaveCust').on('click', function () {
addServiceGroup();
// $('.tbl-card-li').each(function () {
// // console.log("???");
// $(this).find('.tbl-card-title').on('click', function () {
// $(this).parents('.tbl-card-li').toggleClass('on');
// })
// });
</body> // console.log($('.tbl-card').find('.tbl-card-li').last());
// $('.tbl-card').find('.tbl-card-li').last()
$('.tbl-card').find('.tbl-card-title').last()
.on('click', function () {
$(this).parents('.tbl-card-li').toggleClass('on')
}
);
});
</script>

@ -15,9 +15,6 @@
</ul> </ul>
</div> </div>
<header id="header">
</header>
<script> <script>
$(document).ready(function () { $(document).ready(function () {

@ -3,40 +3,186 @@
<title>그룹별권한</title> <title>그룹별권한</title>
</head> </head>
<script> <body>
$(document).ready(function () { <h1>ICOMSYS ADMIN</h1>
getOpr(); <h1>대시보드</h1>
PagingDataTable(); <div class="skip_navigation">
// newTreeWrap(); <ul>
$('#listTable tbody').on('dblclick', 'tr', function () { <li>
var data = $('#listTable').DataTable().row(this).data() <a href="#Content" class="go_content">본문 바로가기</a>
// console.log(JSON.stringify(data)) </li>
viewPage(data); <li>
}); <a href="#Gnb">메뉴 바로가기</a>
</li>
</ul>
</div>
$('#btnSearchOpr').on('click', function () { <section id="Content" class="system_management">
fnCustSearchBtn(); <div class="location">
}); <ul>
<li class="home"><a href="#">HOME</a></li>
<li><a href="#">시스템관리</a></li>
<li><a href="#">그룹별권한 관리</a></li>
</ul>
</div>
$("#Content").on("keyup", function (key) { <div class="sub_cont menu06_01_03">
if (key.keyCode == 13) { <div class="cont_box">
fnCustSearchBtn(); <div class="box_title">
} <div class="fl">
}); <h2 class="mt12">그룹별권한 조회</h2>
</div>
<div class="fr">
<div class="btn_wrap fl">
<a href="#" id="btnSearchOpr" class="btn">조회</a>
</div>
</div>
</div>
//모달창 저장버튼 <div class="tbl">
$('#btnRegModal').on('click', function () { <table class="search block">
fnInsertBtn(); <colgroup>
}); <col width="160px">
<col width="5%">
<col width="140px">
<col width="15%">
</colgroup>
<tbody>
<tr>
<th class="tl">시나리오그룹</th>
<td colspan="5">
<div class="sel_box">
<select id="serviceGroup" class="wide">
<option value="ALL">전체</option>
</select>
</div>
</td>
<th class="tl">권한명</th>
<td colspan="5">
<div class="ipt_box listen">
<input type="text" placeholder="검색어를 입력하세요" id="codeText" name="typeText">
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="cont_box">
<div class="box_title">
<div class="fl">
<h2 class="mt12">그룹별권한 리스트</h2>
</div>
<div class="btn_wrap fr">
<a href="#" rel="createGroupModal" class="btn line modalLoad">등록</a>
</div>
</div>
<div class="tbl">
<form id="custListForm">
<table id="listTable" class="">
<colgroup>
<col width="auto">
<col width="auto">
<col width="auto">
<col width="auto">
<col width="auto">
<col width="auto">
</colgroup>
<thead>
<tr>
<th>서비스코드</th>
<th>시나리오그룹명</th>
<th>권한번호</th>
<th>권한명</th>
<th>권한설명</th>
<th>고객사코드</th>
<th>생성일</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
</form>
</div>
</div>
</div>
</section>
<!-- modal :: 권한그룹생성 -->
<div class="modal" id="createGroupModal">
<div class="modal_header">
<h3>권한그룹 생성</h3>
</div>
<div class="modal_body">
<div class="modal_cont">
<input type="hidden" id="custCode">
<dl>
<dt>
<h4><em class="">시나리오그룹</em></h4>
</dt>
<dd>
<div class="sel_box">
<select id="insertServiceGroup" class="wide">
<option value="ALL">전체</option>
</select>
</div>
</dd>
</dl>
<dl>
<dt>
<h4><em class="">그룹명</em></h4>
</dt>
<dd>
<div class="ipt_box">
<input type="text" id="insertGroupName" placeholder="그룹명을 입력해주세요.">
</div>
</dd>
</dl>
<dl>
<dt>
<h4><em class="">그룹설명</em></h4>
</dt>
<dd>
<div class="ipt_box">
<input type="text" id="insertGroupDesc" placeholder="그룹 설명을 입력해주세요.">
</div>
</dd>
</dl>
<dl>
<dt>
<h4><em class="">권한선택</em></h4>
</dt>
<dd>
<div class="content tree tree-maxHeight type-chk">
<div class="newTreeWrap" id="newTreeWrap">
</div>
</div>
</dd>
</dl>
</div>
</div>
<div class="modal_footer">
<div class="btn_wrap fr">
<a href="#" id="btnRegModal" class="btn">저장</a>
</div>
</div>
<div class="modal_controller">
<a href="#" class="close">close</a>
</div>
</div>
</body>
<script>
//선택 이벤트
$('#insertServiceGroup').change(function () {
getRoleAndOpr($(this).val());
});
}
);
function getRoleAndOpr() { function getRoleAndOpr() {
@ -338,184 +484,35 @@
$('#listTable').DataTable().ajax.reload(); $('#listTable').DataTable().ajax.reload();
}; };
</script>
<body>
<h1>ICOMSYS ADMIN</h1>
<h1>대시보드</h1>
<div class="skip_navigation">
<ul>
<li>
<a href="#Content" class="go_content">본문 바로가기</a>
</li>
<li>
<a href="#Gnb">메뉴 바로가기</a>
</li>
</ul>
</div>
<header id="header">
</header>
<section id="Content" class="system_management">
<div class="location">
<ul>
<li class="home"><a href="#">HOME</a></li>
<li><a href="#">시스템관리</a></li>
<li><a href="#">그룹별권한 관리</a></li>
</ul>
</div>
<div class="sub_cont menu06_01_03">
<div class="cont_box">
<div class="box_title">
<div class="fl">
<h2 class="mt12">그룹별권한 조회</h2>
</div>
<div class="fr">
<div class="btn_wrap fl">
<a href="#" id="btnSearchOpr" class="btn">조회</a>
</div>
</div>
</div>
<div class="tbl">
<table class="search block">
<colgroup>
<col width="160px">
<col width="5%">
<col width="140px">
<col width="15%">
</colgroup>
<tbody>
<tr>
<th class="tl">시나리오그룹</th>
<td colspan="5">
<div class="sel_box">
<select id="serviceGroup" class="wide">
<option value="ALL">전체</option>
</select>
</div>
</td>
<th class="tl">권한명</th>
<td colspan="5">
<div class="ipt_box listen">
<input type="text" placeholder="검색어를 입력하세요" id="codeText" name="typeText">
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="cont_box">
<div class="box_title">
<div class="fl">
<h2 class="mt12">그룹별권한 리스트</h2>
</div>
<div class="btn_wrap fr">
<a href="#" rel="createGroupModal" class="btn line modalLoad">등록</a>
</div>
</div>
<div class="tbl">
<form id="custListForm">
<table id="listTable" class="">
<colgroup>
<col width="auto">
<col width="auto">
<col width="auto">
<col width="auto">
<col width="auto">
<col width="auto">
</colgroup>
<thead>
<tr>
<th>서비스코드</th>
<th>시나리오그룹명</th>
<th>권한번호</th>
<th>권한명</th>
<th>권한설명</th>
<th>고객사코드</th>
<th>생성일</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
</form>
</div>
</div>
</div>
</section>
<!-- modal :: 권한그룹생성 -->
<div class="modal" id="createGroupModal">
<div class="modal_header">
<h3>권한그룹 생성</h3>
</div>
<div class="modal_body">
<div class="modal_cont">
<input type="hidden" id="custCode">
<dl>
<dt>
<h4><em class="">시나리오그룹</em></h4>
</dt>
<dd>
<div class="sel_box">
<select id="insertServiceGroup" class="wide">
<option value="ALL">전체</option>
</select>
</div>
</dd>
</dl>
<dl> getOpr();
<dt> PagingDataTable();
<h4><em class="">그룹명</em></h4> // newTreeWrap();
</dt> $('#listTable tbody').on('dblclick', 'tr', function () {
<dd> var data = $('#listTable').DataTable().row(this).data()
<div class="ipt_box"> // console.log(JSON.stringify(data))
<input type="text" id="insertGroupName" placeholder="그룹명을 입력해주세요."> viewPage(data);
</div> });
</dd> $('#btnSearchOpr').on('click', function () {
</dl> fnCustSearchBtn();
<dl> });
<dt> $("#Content").on("keyup", function (key) {
<h4><em class="">그룹설명</em></h4> if (key.keyCode == 13) {
</dt> fnCustSearchBtn();
<dd> }
<div class="ipt_box"> });
<input type="text" id="insertGroupDesc" placeholder="그룹 설명을 입력해주세요."> //모달창 저장버튼
</div> $('#btnRegModal').on('click', function () {
</dd> fnInsertBtn();
</dl> });
<dl>
<dt>
<h4><em class="">권한선택</em></h4>
</dt>
<dd>
<div class="content tree tree-maxHeight type-chk">
<div class="newTreeWrap" id="newTreeWrap">
</div>
</div>
</dd>
</dl>
</div>
</div>
<div class="modal_footer">
<div class="btn_wrap fr">
<a href="#" id="btnRegModal" class="btn">저장</a>
</div>
</div>
<div class="modal_controller">
<a href="#" class="close">close</a>
</div>
</div>
//선택 이벤트
$('#insertServiceGroup').change(function () {
getRoleAndOpr($(this).val());
});
</script>
</body>

@ -4,41 +4,128 @@
</head> </head>
<script> <body>
$(document).ready(function () { <h1>ICOMSYS ADMIN</h1>
getOpr(); <h1>대시보드</h1>
getQueryString(); <div class="skip_navigation">
getGroupAuthUpdateData(); <ul>
$("#Content").on("keyup", function (key) { <li>
if (key.keyCode == 13) { <a href="#Content" class="go_content">본문 바로가기</a>
getUserSearch() </li>
} <li>
}); <a href="#Gnb">메뉴 바로가기</a>
</li>
</ul>
</div>
//유저조회 <header id="header">
$('#btnSearchUser').on('click', function () { </header>
getUserSearch() <section id="Content" class="system_management">
// $('#serviceInfo').reset(); <div class="location">
}); <ul>
<li class="home"><a href="#">HOME</a></li>
<li><a href="#">시스템관리</a></li>
<li><a href="#">그룹별권한 관리</a></li>
</ul>
</div>
//유저 선택 이벤트 <!-- TODO: 래부터 신규 컨텐츠 마크업 입니다. -->
$('#selectorUser').change(function () { <div class="sub_cont">
userAdd($(this).val(), $('#selectorUser option:selected').text()) <div class="cont_box">
}); <div class="box_title">
<div class="fl">
<h2 class="mt12">권한그룹편집</h2>
</div>
</div>
<div class="tbl">
<table class="edit hght">
<colgroup>
<col width="150px">
<col width="auto">
</colgroup>
<tbody>
<input type="hidden" id="custCode">
<input type="hidden" id="authGroupSeq">
<tr>
<th class="tl">그룹명</th>
<td>
<div class="ipt_box">
<input type="text" id="updateGroupName" value="인텐트 조회권한" name="" class="">
</div>
</td>
</tr>
<tr>
<th class="tl">그룹설명</th>
<td>
<div class="ipt_box">
<input type="text" id="updateGroupDesc" value="인텐트를 조회만 할 수 있는 권한" name="" class="">
</div>
</td>
</tr>
$('#btnSave').on('click', function () { <tr>
// console.log("저장클릭") <th class="tl">소속사용자 <em class="red">*</em></th>
ServiceGroupAuthModifyUpdate(); <td>
}); <div class="ipt_box listen type-flex">
<input type="text" placeholder="유저명을 입력하세요" id="userSelBox" name="typeText">
<a href="#" id="btnSearchUser" class="btn">조회</a>
</div>
$('#btnDel').on('click', function () { <select id="selectorUser" class="wide">
// console.log("취소버튼"); </select>
delBtn();
});
} <div class="list-user-group-box">
); <div class="list-user-group-item">
<div class="group-item-title">소속사용자</div>
<ul class="list-user-group-box-ul" id="list-user-group-box-ul-list">
</ul>
</div>
<!-- 2단레이아웃 필요시 list-user-group-item부터 추가-->
<div class="list-user-group-item">
<div class="group-item-title">소속제외</div>
<ul class="list-user-group-box-ul" id="list-user-group-box-ul-delete">
</ul>
</div>
</div>
</td>
</tr>
<tr>
<th class="tl">권한</th>
<td class="tl">
<div class="content tree tree-maxHeight type-chk">
<div class="tree_wrap" id="tree_wrap">
</div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="cont_box">
<div class="btn_wrap center">
<a href="#" class="btn basic grey" id="btnDel">취소</a>
<a href="#" class="btn basic" id="btnSave">저장</a>
</div>
</div>
</div>
</section>
</body>
<script>
function delBtn() { function delBtn() {
@ -293,126 +380,37 @@
}, "1"); }, "1");
} }
getOpr();
getQueryString();
getGroupAuthUpdateData();
$("#Content").on("keyup", function (key) {
if (key.keyCode == 13) {
getUserSearch()
}
});
</script> //유저조회
$('#btnSearchUser').on('click', function () {
getUserSearch()
<body> // $('#serviceInfo').reset();
});
<h1>ICOMSYS ADMIN</h1>
<h1>대시보드</h1>
<div class="skip_navigation">
<ul>
<li>
<a href="#Content" class="go_content">본문 바로가기</a>
</li>
<li>
<a href="#Gnb">메뉴 바로가기</a>
</li>
</ul>
</div>
<header id="header">
</header>
<section id="Content" class="system_management">
<div class="location">
<ul>
<li class="home"><a href="#">HOME</a></li>
<li><a href="#">시스템관리</a></li>
<li><a href="#">그룹별권한 관리</a></li>
</ul>
</div>
<!-- TODO: 래부터 신규 컨텐츠 마크업 입니다. -->
<div class="sub_cont">
<div class="cont_box">
<div class="box_title">
<div class="fl">
<h2 class="mt12">권한그룹편집</h2>
</div>
</div>
<div class="tbl">
<table class="edit hght">
<colgroup>
<col width="150px">
<col width="auto">
</colgroup>
<tbody>
<input type="hidden" id="custCode">
<input type="hidden" id="authGroupSeq">
<tr>
<th class="tl">그룹명</th>
<td>
<div class="ipt_box">
<input type="text" id="updateGroupName" value="인텐트 조회권한" name="" class="">
</div>
</td>
</tr>
<tr>
<th class="tl">그룹설명</th>
<td>
<div class="ipt_box">
<input type="text" id="updateGroupDesc" value="인텐트를 조회만 할 수 있는 권한" name="" class="">
</div>
</td>
</tr>
<tr>
<th class="tl">소속사용자 <em class="red">*</em></th>
<td>
<div class="ipt_box listen type-flex">
<input type="text" placeholder="유저명을 입력하세요" id="userSelBox" name="typeText">
<a href="#" id="btnSearchUser" class="btn">조회</a>
</div>
<select id="selectorUser" class="wide">
</select>
<div class="list-user-group-box">
<div class="list-user-group-item">
<div class="group-item-title">소속사용자</div>
<ul class="list-user-group-box-ul" id="list-user-group-box-ul-list">
</ul>
</div>
<!-- 2단레이아웃 필요시 list-user-group-item부터 추가-->
<div class="list-user-group-item">
<div class="group-item-title">소속제외</div>
<ul class="list-user-group-box-ul" id="list-user-group-box-ul-delete">
</ul> //유저 선택 이벤트
</div> $('#selectorUser').change(function () {
</div> userAdd($(this).val(), $('#selectorUser option:selected').text())
</td> });
</tr>
<tr>
<th class="tl">권한</th>
<td class="tl">
<div class="content tree tree-maxHeight type-chk">
<div class="tree_wrap" id="tree_wrap">
</div>
</div>
</td>
</tr>
</tbody> $('#btnSave').on('click', function () {
</table> // console.log("저장클릭")
</div> ServiceGroupAuthModifyUpdate();
</div> });
<div class="cont_box"> $('#btnDel').on('click', function () {
<div class="btn_wrap center"> // console.log("취소버튼");
<a href="#" class="btn basic grey" id="btnDel">취소</a> delBtn();
<a href="#" class="btn basic" id="btnSave">저장</a> });
</div>
</div>
</div>
</section> </script>
</body>

@ -3,45 +3,6 @@
<title>그룹별권한</title> <title>그룹별권한</title>
</head> </head>
<script>
z
$(document).ready(function () {
getOpr();
getServiceGroupQueryString();
$("#Content").on("keyup", function (key) {
if (key.keyCode == 13) {
fnCustSearchBtn();
}
});
}
);
function getServiceGroupQueryString() {
var param = new URLSearchParams(location.search).get("serviceGroup");
return param;
}
function getOpr() {
$.ajax({
type: "GET",
contentType: "application/json; charset=utf-8",
datatype: "JSON",
url: '/adm/menu/oprmng',
success: function (data) {
// console.log(JSON.stringify(data));
data.forEach(function (e, f) {
$('#serviceGroup').append("<option value=" + e.serviceGroup + ">" + e.serviceGroupName + "</option>");
$('#serviceGroup').niceSelect('update');
});
}
})
};
</script>
<body> <body>
@ -317,3 +278,43 @@
</section> </section>
</body> </body>
<script>
function getServiceGroupQueryString() {
var param = new URLSearchParams(location.search).get("serviceGroup");
return param;
}
function getOpr() {
$.ajax({
type: "GET",
contentType: "application/json; charset=utf-8",
datatype: "JSON",
url: '/adm/menu/oprmng',
success: function (data) {
// console.log(JSON.stringify(data));
data.forEach(function (e, f) {
$('#serviceGroup').append("<option value=" + e.serviceGroup + ">" + e.serviceGroupName + "</option>");
$('#serviceGroup').niceSelect('update');
});
}
})
};
getOpr();
getServiceGroupQueryString();
$("#Content").on("keyup", function (key) {
if (key.keyCode == 13) {
fnCustSearchBtn();
}
});
</script>

@ -3,27 +3,141 @@
<title>정책별메뉴</title> <title>정책별메뉴</title>
</head> </head>
<body>
<script> <div class="skip_navigation">
$(document).ready(function () { <ul>
getOpr(); <li>
<a href="#Content" class="go_content">본문 바로가기</a>
</li>
<li>
<a href="#Gnb">메뉴 바로가기</a>
</li>
</ul>
</div>
PagingDataTable(); <header id="header">
$('#listTable tbody').on('dblclick', 'tr', function () { </header>
var data = $('#listTable').DataTable().row(this).data();
viewPage(data)
});
$('#btnSearchOpr').on('click', function () {
fnCustSearchBtn();
});
$("#Content").on("keyup", function (key) { <section id="Content" class="system_management">
if (key.keyCode == 13) { <div class="location">
fnCustSearchBtn(); <ul>
} <li class="home"><a href="#">HOME</a></li>
}); <li><a href="#">시스템 관리</a></li>
}); <li><a href="#">정책별 메뉴</a></li>
</ul>
</div>
<div class="sub_cont menu06_01_03">
<div class="cont_box">
<div class="box_title">
<div class="fl">
<h2 class="mt12">정책별 메뉴 조회</h2>
</div>
<div class="fr">
<div class="btn_wrap fl">
<a href="#" id="btnSearchOpr" class="btn">조회</a>
</div>
</div>
</div>
<div class="tbl">
<table class="search block">
<colgroup>
<col width="140px">
<col width="40%">
<col width="140px">
<col width="40%">
</colgroup>
<tbody>
<tr>
<th class="tl">시나리오그룹</th>
<td>
<div class="sel_box">
<select id="serviceGroup" class="wide">
<option value="ALL">전체</option>
</select>
</div>
</td>
<th class="tl">정책코드</th>
<td>
<div class="ipt_box listen">
<input type="text" placeholder="검색어를 입력하세요" id="codeText1" name="typeText1">
</div>
</td>
</tr>
<tr>
<th class="tl">정책명</th>
<td>
<div class="ipt_box listen">
<input type="text" placeholder="검색어를 입력하세요" id="codeText2" name="typeText2">
</div>
</td>
<th class="tl">메뉴명</th>
<td>
<div class="ipt_box listen">
<input type="text" placeholder="검색어를 입력하세요" id="codeText3" name="typeText3">
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="cont_box">
<div class="box_title">
<div class="fl">
<h2 class="mt12">정책별 메뉴 리스트</h2>
</div>
</div>
<div class="tbl">
<form id="custListForm">
<table id="listTable" class="">
<colgroup>
<col width="auto">
<col width="auto">
<col width="auto">
<col width="auto">
<col width="auto">
<col width="auto">
<col width="auto">
<col width="auto">
</colgroup>
<thead>
<tr>
<th>고객코드</th>
<th>고객사</th>
<th>서비스그룹</th>
<th>서비스그룹명</th>
<th>정책코드</th>
<th>정책명</th>
<th>메뉴명</th>
<th>메뉴번호</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
</form>
</div>
</div>
</div>
</section>
</body>
<script>
function getOpr() { function getOpr() {
$.ajax({ $.ajax({
@ -163,136 +277,23 @@
$('#listTable').DataTable().ajax.reload(); $('#listTable').DataTable().ajax.reload();
}; };
</script> getOpr();
<body>
<div class="skip_navigation">
<ul>
<li>
<a href="#Content" class="go_content">본문 바로가기</a>
</li>
<li>
<a href="#Gnb">메뉴 바로가기</a>
</li>
</ul>
</div>
<header id="header">
</header>
<section id="Content" class="system_management">
<div class="location">
<ul>
<li class="home"><a href="#">HOME</a></li>
<li><a href="#">시스템 관리</a></li>
<li><a href="#">정책별 메뉴</a></li>
</ul>
</div>
<div class="sub_cont menu06_01_03">
<div class="cont_box">
<div class="box_title">
<div class="fl">
<h2 class="mt12">정책별 메뉴 조회</h2>
</div>
<div class="fr">
<div class="btn_wrap fl">
<a href="#" id="btnSearchOpr" class="btn">조회</a>
</div>
</div>
</div>
<div class="tbl">
<table class="search block">
<colgroup>
<col width="140px">
<col width="40%">
<col width="140px">
<col width="40%">
</colgroup>
<tbody>
<tr>
<th class="tl">시나리오그룹</th>
<td>
<div class="sel_box">
<select id="serviceGroup" class="wide">
<option value="ALL">전체</option>
</select>
</div>
</td>
<th class="tl">정책코드</th>
<td>
<div class="ipt_box listen">
<input type="text" placeholder="검색어를 입력하세요" id="codeText1" name="typeText1">
</div>
</td>
</tr>
<tr>
<th class="tl">정책명</th>
<td>
<div class="ipt_box listen">
<input type="text" placeholder="검색어를 입력하세요" id="codeText2" name="typeText2">
</div>
</td>
<th class="tl">메뉴명</th>
<td>
<div class="ipt_box listen">
<input type="text" placeholder="검색어를 입력하세요" id="codeText3" name="typeText3">
</div>
</td>
</tr>
</tbody> PagingDataTable();
</table> $('#listTable tbody').on('dblclick', 'tr', function () {
</div> var data = $('#listTable').DataTable().row(this).data();
</div> viewPage(data)
<div class="cont_box"> });
<div class="box_title">
<div class="fl">
<h2 class="mt12">정책별 메뉴 리스트</h2>
</div>
</div>
$('#btnSearchOpr').on('click', function () {
fnCustSearchBtn();
});
<div class="tbl"> $("#Content").on("keyup", function (key) {
<form id="custListForm"> if (key.keyCode == 13) {
<table id="listTable" class=""> fnCustSearchBtn();
<colgroup> }
<col width="auto"> });
<col width="auto">
<col width="auto">
<col width="auto">
<col width="auto">
<col width="auto">
<col width="auto">
<col width="auto">
</colgroup>
<thead>
<tr>
<th>고객코드</th>
<th>고객사</th>
<th>서비스그룹</th>
<th>서비스그룹명</th>
<th>정책코드</th>
<th>정책명</th>
<th>메뉴명</th>
<th>메뉴번호</th>
</tr>
</thead>
<tbody>
</tbody> </script>
</table>
</form>
</div>
</div>
</div>
</section>
</body>

@ -3,207 +3,6 @@
<title>서비스그룹 관리</title> <title>서비스그룹 관리</title>
</head> </head>
<script>
$(document).ready(function () {
$('.tbl-card-li').each(function () {
$(this).find('.tbl-card-title').on('click', function () {
$(this).parents('.tbl-card-li').toggleClass('on');
})
});
$('.tbl-card').find('.tbl-card-li .title-connect').each(function () {
const submitVal = $(this).val();
if (submitVal.length > 0) {
$(this).parents('.tbl-card-li').find('.title-connected').text(submitVal);
}
$(this).on('keyup', function () {
const thisVal = $(this).val();
if (thisVal.length === 0) {
$(this).parents('.tbl-card-li').find('.title-connected').text('새로운 시나리오 그룹');
} else {
$(this).parents('.tbl-card-li').find('.title-connected').text(thisVal);
}
})
});
getServiceGroupQueryString();
getServiceGroupViewData();
});
function getServiceGroupQueryString() {
var param = new URLSearchParams(location.search).get("serviceGroup");
// console.log(param);
return param;
}
function getServiceGroupViewData() {
if (getServiceGroupQueryString() == null) {
//유저어드민
setUrl = '/admin/common/system/serviceGroup/view';
} else {
//시스템어드민
setUrl = '/admin/common/system/serviceGroup/view' + "?serviceGroup=" + getServiceGroupQueryString();
}
$.ajax({
type: "GET",
contentType: "application/json; charset=utf-8",
datatype: "JSON",
url: setUrl,
success: function (data) {
// console.log(JSON.stringify(data));
var html = '';
// for (var i=0; i < data.subServiceGroupRes.length; i++) {
//
// }
$('#mainServiceGroupName').val(data.mainServiceGroup);
$('#mainServiceGroup').val(data.mainServiceGroupName);
$('#mainUseYn').val(data.mainUseYn);
$('#mainOprMngCode').val(data.mainOprMngCode);
data.subServiceGroupRes.forEach(function (e, i) {
html += '<li class="tbl-card-li" id="tbl-card-li' + i + '">'
+ '<div class="tbl-card-li-inner">'
+ '<div class="tbl-card-title" id="tbl-card-title' + i + '">'
+ ' <div class="fl title-connected">' + e.subServiceGroup + '</div>'
+ ' </div>'
+ ' <div class="tbl-card-data">'
+ ' <div class="box-title">'
+ ' <div class="btn_wrap fr">'
+ ' <a href="#" class="btn grey">-삭제</a>'
+ ' </div>'
+ ' </div>'
+ ' <div class="tbl">'
+ ' <table class="edit hght">'
+ ' <colgroup>'
+ ' <col width = "150px" >'
+ ' <col width = "auto" >'
+ ' </colgroup>'
+ ' <tbody>'
+ ' <tr>'
+ ' <th class="tl">시나리오 그룹명</th>'
+ ' <td>'
+ ' <div class="ipt_box">'
+ ' <input type="text" id="subServiceGroup' + i + '" value="' + e.subServiceGroup + '" name=""'
+ ' class="title-connect" readonly>'
+ ' </div>'
+ ' </td>'
+ ' </tr>'
+ ' <tr>'
+ ' <th class="tl">시나리오 그룹코드</th>'
+ ' <td>'
+ ' <div class="ipt_box type-flex">'
+ ' <input type="text" id="subServiceGroupName' + i + '" value="' + e.subOprMngCode + '" name="" class="" readonly>'
+ ' </div>'
+ ' <div class="ipt_box ">'
+ ' <div class="create-code-list">'
+ ' </div>'
+ ' </div>'
+ ' </td>'
+ ' </tr>'
+ ' <tr>'
+ ' <th class="tl">시나리오그룹 설명</th>'
+ ' <td>'
+ ' <div class="ipt_box">'
+ ' <input type="text" value="' + e.subServiceGroupDesc + '" name="" class="" readonly>'
+ ' </div>'
+ ' </td>'
+ ' </tr>'
+ ' <tr>'
+ ' <th class="tl">사용여부 <em class="red">*</em></th>'
+ ' <td>'
+ ' <div class="sel_box">'
+ ' <select class="wide">'
+ ' <option value="" selected>' + e.subUseYn + '</option>'
+ ' </select>'
+ ' </div>'
+ ' </td>'
+ ' </tr>'
+ ' <tr>'
+ ' <th class="tl">권한부여</th>'
+ ' <td class="tl">'
+ ' <div class="content tree tree-maxHeight type-chk">'
+ ' <div class="tree_wrap">'
+ ' <ul>'
+ ' <li data-jstree="{ "opened" : true }">root'
+ ' <ul>'
+ ' <li data-jstree="{ "opened" : true }">주소BOT'
+ ' <ul>'
+ ' <li>지명 유사어 관리</li>'
+ ' <li>빌딩 유사어 관리</li>'
+ ' <li>유의어 전처리 관리</li>'
+ ' <li>주소봇 멘트 관리</li>'
+ ' <li>발화 건물유형 관리</li>'
+ ' <li>주소 월별 업데이트</li>'
+ ' <li>주소처리내역(녹취)</li>'
+ ' </ul>'
+ ' </li>'
+ ' <li data-jstree="{ "opened" : true }">BOT 공통 관리'
+ ' <ul>'
+ ' <li data-jstree="{ "opened" : true }">서비스별관리'
+ ' <ul>'
+ ' <li>요일/시간대별 멘트 관리</li>'
+ ' <li>휴무일 관리</li>'
+ ' <li>자연어 전처리 관리</li>'
+ ' </ul>'
+ ' </li>'
+ ' <li>공통 코드 관리</li>'
+ ' </ul>'
+ ' </li>'
+ ' <li data-jstree="{ "opened" : true }">무인접수BOT'
+ ' <ul>'
+ ' <li>무인 접수 리스트</li>'
+ ' <li>제품군 유의어 관리</li>'
+ ' </ul>'
+ ' </li>'
+ ' <li data-jstree="{ "opened" : true }">영상상담'
+ ' <ul>'
+ ' <li>컨텐츠등록 관리</li>'
+ ' <li>영상상담</li>'
+ ' <li>상담이력 조회</li>'
+ ' </ul>'
+ ' </li>'
+ ' </ul>'
+ ' </li>'
+ ' </ul>'
+ ' </div>'
+ ' </div>'
+ ' </td>'
+ ' </tr>'
+ ' </tbody>'
+ ' </table>'
+ ' </div>'
+ ' </div>'
+ ' </div>'
+ ' </li>'
$('#tbl-card').html(html);
$('.tbl-card-li').each(function () {
$(this).find('.tbl-card-title').on('click', function () {
$(this).parents('.tbl-card-li').toggleClass('on');
})
});
});
// $('#mainServiceGroupName').set(data.mainServiceGroup).val();
// $('#mainServiceGroup').set(data.mainServiceGroupName).val();
// $('#useYn').set(data.useYn).val();
}
})
}
</script>
<header id="header"> <header id="header">
</header> </header>
@ -453,3 +252,205 @@
</section> </section>
</body> </body>
<script>
function getServiceGroupQueryString() {
var param = new URLSearchParams(location.search).get("serviceGroup");
// console.log(param);
return param;
}
function getServiceGroupViewData() {
if (getServiceGroupQueryString() == null) {
//유저어드민
setUrl = '/admin/common/system/serviceGroup/view';
} else {
//시스템어드민
setUrl = '/admin/common/system/serviceGroup/view' + "?serviceGroup=" + getServiceGroupQueryString();
}
$.ajax({
type: "GET",
contentType: "application/json; charset=utf-8",
datatype: "JSON",
url: setUrl,
success: function (data) {
// console.log(JSON.stringify(data));
var html = '';
// for (var i=0; i < data.subServiceGroupRes.length; i++) {
//
// }
$('#mainServiceGroupName').val(data.mainServiceGroup);
$('#mainServiceGroup').val(data.mainServiceGroupName);
$('#mainUseYn').val(data.mainUseYn);
$('#mainOprMngCode').val(data.mainOprMngCode);
data.subServiceGroupRes.forEach(function (e, i) {
html += '<li class="tbl-card-li" id="tbl-card-li' + i + '">'
+ '<div class="tbl-card-li-inner">'
+ '<div class="tbl-card-title" id="tbl-card-title' + i + '">'
+ ' <div class="fl title-connected">' + e.subServiceGroup + '</div>'
+ ' </div>'
+ ' <div class="tbl-card-data">'
+ ' <div class="box-title">'
+ ' <div class="btn_wrap fr">'
+ ' <a href="#" class="btn grey">-삭제</a>'
+ ' </div>'
+ ' </div>'
+ ' <div class="tbl">'
+ ' <table class="edit hght">'
+ ' <colgroup>'
+ ' <col width = "150px" >'
+ ' <col width = "auto" >'
+ ' </colgroup>'
+ ' <tbody>'
+ ' <tr>'
+ ' <th class="tl">시나리오 그룹명</th>'
+ ' <td>'
+ ' <div class="ipt_box">'
+ ' <input type="text" id="subServiceGroup' + i + '" value="' + e.subServiceGroup + '" name=""'
+ ' class="title-connect" readonly>'
+ ' </div>'
+ ' </td>'
+ ' </tr>'
+ ' <tr>'
+ ' <th class="tl">시나리오 그룹코드</th>'
+ ' <td>'
+ ' <div class="ipt_box type-flex">'
+ ' <input type="text" id="subServiceGroupName' + i + '" value="' + e.subOprMngCode + '" name="" class="" readonly>'
+ ' </div>'
+ ' <div class="ipt_box ">'
+ ' <div class="create-code-list">'
+ ' </div>'
+ ' </div>'
+ ' </td>'
+ ' </tr>'
+ ' <tr>'
+ ' <th class="tl">시나리오그룹 설명</th>'
+ ' <td>'
+ ' <div class="ipt_box">'
+ ' <input type="text" value="' + e.subServiceGroupDesc + '" name="" class="" readonly>'
+ ' </div>'
+ ' </td>'
+ ' </tr>'
+ ' <tr>'
+ ' <th class="tl">사용여부 <em class="red">*</em></th>'
+ ' <td>'
+ ' <div class="sel_box">'
+ ' <select class="wide">'
+ ' <option value="" selected>' + e.subUseYn + '</option>'
+ ' </select>'
+ ' </div>'
+ ' </td>'
+ ' </tr>'
+ ' <tr>'
+ ' <th class="tl">권한부여</th>'
+ ' <td class="tl">'
+ ' <div class="content tree tree-maxHeight type-chk">'
+ ' <div class="tree_wrap">'
+ ' <ul>'
+ ' <li data-jstree="{ "opened" : true }">root'
+ ' <ul>'
+ ' <li data-jstree="{ "opened" : true }">주소BOT'
+ ' <ul>'
+ ' <li>지명 유사어 관리</li>'
+ ' <li>빌딩 유사어 관리</li>'
+ ' <li>유의어 전처리 관리</li>'
+ ' <li>주소봇 멘트 관리</li>'
+ ' <li>발화 건물유형 관리</li>'
+ ' <li>주소 월별 업데이트</li>'
+ ' <li>주소처리내역(녹취)</li>'
+ ' </ul>'
+ ' </li>'
+ ' <li data-jstree="{ "opened" : true }">BOT 공통 관리'
+ ' <ul>'
+ ' <li data-jstree="{ "opened" : true }">서비스별관리'
+ ' <ul>'
+ ' <li>요일/시간대별 멘트 관리</li>'
+ ' <li>휴무일 관리</li>'
+ ' <li>자연어 전처리 관리</li>'
+ ' </ul>'
+ ' </li>'
+ ' <li>공통 코드 관리</li>'
+ ' </ul>'
+ ' </li>'
+ ' <li data-jstree="{ "opened" : true }">무인접수BOT'
+ ' <ul>'
+ ' <li>무인 접수 리스트</li>'
+ ' <li>제품군 유의어 관리</li>'
+ ' </ul>'
+ ' </li>'
+ ' <li data-jstree="{ "opened" : true }">영상상담'
+ ' <ul>'
+ ' <li>컨텐츠등록 관리</li>'
+ ' <li>영상상담</li>'
+ ' <li>상담이력 조회</li>'
+ ' </ul>'
+ ' </li>'
+ ' </ul>'
+ ' </li>'
+ ' </ul>'
+ ' </div>'
+ ' </div>'
+ ' </td>'
+ ' </tr>'
+ ' </tbody>'
+ ' </table>'
+ ' </div>'
+ ' </div>'
+ ' </div>'
+ ' </li>'
$('#tbl-card').html(html);
$('.tbl-card-li').each(function () {
$(this).find('.tbl-card-title').on('click', function () {
$(this).parents('.tbl-card-li').toggleClass('on');
})
});
});
// $('#mainServiceGroupName').set(data.mainServiceGroup).val();
// $('#mainServiceGroup').set(data.mainServiceGroupName).val();
// $('#useYn').set(data.useYn).val();
}
})
}
$('.tbl-card-li').each(function () {
$(this).find('.tbl-card-title').on('click', function () {
$(this).parents('.tbl-card-li').toggleClass('on');
})
});
$('.tbl-card').find('.tbl-card-li .title-connect').each(function () {
const submitVal = $(this).val();
if (submitVal.length > 0) {
$(this).parents('.tbl-card-li').find('.title-connected').text(submitVal);
}
$(this).on('keyup', function () {
const thisVal = $(this).val();
if (thisVal.length === 0) {
$(this).parents('.tbl-card-li').find('.title-connected').text('새로운 시나리오 그룹');
} else {
$(this).parents('.tbl-card-li').find('.title-connected').text(thisVal);
}
})
});
getServiceGroupQueryString();
getServiceGroupViewData();
</script>

@ -4,34 +4,118 @@
</head> </head>
<script> <body>
$(document).ready(function () {
getMainOprSelectBox(); <h1>ICOMSYS ADMIN</h1>
<h1>대시보드</h1>
<div class="skip_navigation">
<ul>
<li>
<a href="#Content" class="go_content">본문 바로가기</a>
</li>
<li>
<a href="#Gnb">메뉴 바로가기</a>
</li>
</ul>
</div>
PagingDataTable();
$('#listTable tbody').on('dblclick', 'tr', function () {
var data = $('#listTable').DataTable().row(this).data();
viewPage(data)
});
$('#btnSearchOpr').on('click', function () { <section id="Content" class="system_management">
fnCustSearchBtn(); <div class="location">
}); <ul>
<li class="home"><a href="#">HOME</a></li>
<li><a href="#">시스템 관리</a></li>
<li><a href="#">서비스그룹 관리</a></li>
</ul>
</div>
$("#Content").on("keyup", function (key) { <div class="sub_cont menu06_01_03">
if (key.keyCode == 13) { <div class="cont_box">
fnCustSearchBtn(); <div class="box_title">
} <div class="fl">
}); <h2 class="mt12">서비스그룹 조회</h2>
</div>
<div class="fr">
<div class="btn_wrap fl">
<a href="#" id="btnSearchOpr" class="btn">조회</a>
</div>
</div>
</div>
<div class="tbl">
<table class="search block">
<colgroup>
<col width="140px">
<col width="25%">
<col width="140px">
<col width="40%">
</colgroup>
<tbody>
<tr>
<th class="tl">서비스그룹</th>
<td>
<div class="sel_box">
<select id="serviceGroup" class="wide">
<option value="ALL">전체</option>
</select>
</div>
</td>
<th class="tl">검색어</th>
<td>
<div class="ipt_box listen">
<input type="text" placeholder="검색어를 입력하세요" id="codeText" name="typeText">
</div>
</td>
</tr>
$('#btnRegModal').on('click', function () { </tbody>
fnServiceGroupInsertBtn(); </table>
}); </div>
</div>
<div class="cont_box">
<div class="box_title">
<div class="fl">
<h2 class="mt12">서비스그룹 리스트</h2>
</div>
<div class="btn_wrap fr">
</div>
</div>
}
);
<div class="tbl">
<form id="custListForm">
<table id="listTable" class="">
<colgroup>
<col width="15%">
<col width="15%">
<col width="15%">
<col width="15%">
<col width="15%">
<col width="auto">
</colgroup>
<thead>
<tr>
<th>custCode</th>
<th>고객사</th>
<th>서비스그룹</th>
<th>서비스그룹이름</th>
<th>서비스그룹타입</th>
<th>사용여부</th>
<th>생성일</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
</form>
</div>
</div>
</div>
</section>
</body>
<script>
function fnServiceGroupInsertBtn() { function fnServiceGroupInsertBtn() {
// document.location.href = "/BotMain_VM/admin/common/system/serviceGroup/insert"; // document.location.href = "/BotMain_VM/admin/common/system/serviceGroup/insert";
document.location.href = '/view/admin/common/system/serviceGroup/insert'; document.location.href = '/view/admin/common/system/serviceGroup/insert';
@ -202,115 +286,28 @@
}; };
</script> getMainOprSelectBox();
PagingDataTable();
$('#listTable tbody').on('dblclick', 'tr', function () {
var data = $('#listTable').DataTable().row(this).data();
viewPage(data)
});
<body> $('#btnSearchOpr').on('click', function () {
fnCustSearchBtn();
});
<h1>ICOMSYS ADMIN</h1> $("#Content").on("keyup", function (key) {
<h1>대시보드</h1> if (key.keyCode == 13) {
<div class="skip_navigation"> fnCustSearchBtn();
<ul> }
<li> });
<a href="#Content" class="go_content">본문 바로가기</a>
</li>
<li>
<a href="#Gnb">메뉴 바로가기</a>
</li>
</ul>
</div>
<section id="Content" class="system_management">
<div class="location">
<ul>
<li class="home"><a href="#">HOME</a></li>
<li><a href="#">시스템 관리</a></li>
<li><a href="#">서비스그룹 관리</a></li>
</ul>
</div>
<div class="sub_cont menu06_01_03">
<div class="cont_box">
<div class="box_title">
<div class="fl">
<h2 class="mt12">서비스그룹 조회</h2>
</div>
<div class="fr">
<div class="btn_wrap fl">
<a href="#" id="btnSearchOpr" class="btn">조회</a>
</div>
</div>
</div>
<div class="tbl">
<table class="search block">
<colgroup>
<col width="140px">
<col width="25%">
<col width="140px">
<col width="40%">
</colgroup>
<tbody>
<tr>
<th class="tl">서비스그룹</th>
<td>
<div class="sel_box">
<select id="serviceGroup" class="wide">
<option value="ALL">전체</option>
</select>
</div>
</td>
<th class="tl">검색어</th>
<td>
<div class="ipt_box listen">
<input type="text" placeholder="검색어를 입력하세요" id="codeText" name="typeText">
</div>
</td>
</tr>
</tbody> $('#btnRegModal').on('click', function () {
</table> fnServiceGroupInsertBtn();
</div> });
</div>
<div class="cont_box">
<div class="box_title">
<div class="fl">
<h2 class="mt12">서비스그룹 리스트</h2>
</div>
<div class="btn_wrap fr">
</div>
</div>
<div class="tbl"> </script>
<form id="custListForm">
<table id="listTable" class="">
<colgroup>
<col width="15%">
<col width="15%">
<col width="15%">
<col width="15%">
<col width="15%">
<col width="auto">
</colgroup>
<thead>
<tr>
<th>custCode</th>
<th>고객사</th>
<th>서비스그룹</th>
<th>서비스그룹이름</th>
<th>서비스그룹타입</th>
<th>사용여부</th>
<th>생성일</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
</form>
</div>
</div>
</div>
</section>
</body>

@ -3,59 +3,201 @@
<title>서비스그룹 관리</title> <title>서비스그룹 관리</title>
</head> </head>
<script> <body>
$(document).ready(function () { <h1>ICOMSYS ADMIN</h1>
$('.tbl-card-li').each(function () { <div class="skip_navigation">
$(this).find('.tbl-card-title').on('click', function () { <ul>
$(this).parents('.tbl-card-li').toggleClass('on'); <li>
}) <a href="#Content" class="go_content">본문 바로가기</a>
}); </li>
<li>
<a href="#Gnb">메뉴 바로가기</a>
</li>
</ul>
</div>
<h1>ICOMSYS ADMIN</h1>
$('.tbl-card').find('.tbl-card-li .title-connect').each(function () { <section id="Content" class="system_management">
const submitVal = $(this).val(); <div class="location">
if (submitVal.length > 0) { <ul>
$(this).parents('.tbl-card-li').find('.title-connected').text(submitVal); <li class="home"><a href="#">HOME</a></li>
} <li><a href="#">시스템관리</a></li>
$(this).on('keyup', function () { <li><a href="#">서비스그룹 관리</a></li>
const thisVal = $(this).val(); </ul>
</div>
if (thisVal.length === 0) {
$(this).parents('.tbl-card-li').find('.title-connected').text('새로운 시나리오 그룹');
} else {
$(this).parents('.tbl-card-li').find('.title-connected').text(thisVal);
}
})
});
getServiceGroupQueryString(); <!-- TODO: 래부터 신규 컨텐츠 마크업 입니다. -->
getServiceGroupViewData(); <div class="sub_cont">
<div class="cont_box">
<div class="box_title">
<div class="fl">
<h2 class="mt12">서비스 그룹관리</h2>
</div>
</div>
<div class="tbl">
<table class="edit hght">
<colgroup>
<col width="150px">
<col width="auto">
</colgroup>
<tbody>
<input type="hidden" id="custCode">
<tr>
<th class="tl">서비스그룹명</th>
<td>
<div class="ipt_box">
<input type="text" id="mainServiceGroupName" name="" class="" readonly>
</div>
</td>
</tr>
$('#btnRegModal').on('click', function () { <tr>
// console.log("생성클릭") <th class="tl">서비스코드</th>
newTreeWrap(); <td>
// $('#serviceInfo').reset(); <div class="ipt_box type-flex">
}); <input type="text" id="mainServiceGroup" value="codecode" name="" class="" readonly>
</div>
</td>
</tr>
// 신규 시나리오그룹 저장 <tr>
$('#btnSaveCust').on('click', function () { <th class="tl">시나리오코드</th>
// console.log("저장클릭") <td>
fncCreateServiceInfo(); <div class="ipt_box type-flex">
}); <input type="text" id="mainOprMngCode" value="codecode" name="" class="" readonly>
</div>
</td>
</tr>
//중복확인 <tr>
$('#btnDoubleCheck').on('click', function () { <th class="tl">사용여부</th>
// console.log("저장클릭") <td>
fncNewDoubleCheck(); <input type="text" id="mainUseYn" value="Y" name="" class="" readonly>
}); </td>
</tr>
// $('#newServiceGroup').keydown(function (e) { </tbody>
$('#newServiceGroup').keyup(function (e) { </table>
// newOprCreate(e.keyCode) </div>
}); </div>
}); <div class="cont_box">
<div class="box_title">
<div class="fl">
<h2 class="mt12">시나리오 그룹 <em class="red">*</em></h2>
</div>
<div class="btn_wrap fr">
<a href="#" id="btnRegModal" rel="reg_modal" class="btn line modalLoad">추가</a>
</div>
</div>
<div class="tbl-card-wrap">
<ul class="tbl-card">
</ul>
</div>
</div>
</div>
</section>
<div class="modal" id="reg_modal">
<div class="modal_header">
<h3>시나리오그룹 신규등록</h3>
</div>
<div class="modal_body">
<div class="modal_cont">
<form id="serviceInfo">
<div class="tbl">
<table class="edit hght">
<colgroup>
<col width="150px">
<col width="auto">
<tbody>
<tr>
<th class="tl">시나리오 그룹명<em class="red">*</em></th>
<td>
<div class="ipt_box">
<input type="text" id="newServiceGroupName" value="" name=""
class="title-connect">
</div>
</td>
</tr>
<tr>
<th class="tl">서비스코드<em class="red">*</em></th>
<td>
<div class="ipt_box type-flex">
<input type="text" id="newServiceGroup" value="" name="" class="">
<a href="#" class="btn grey" id="btnDoubleCheck">중복확인</a>
</div>
<div class="ipt_box ">
<div class="create-code-list">
<input type="hidden" id="newDoubleCheck" value="N" name="" class="">
</div>
</div>
</td>
</tr>
<tr>
<th class="tl">시나리오그룹 설명<em class="red">*</em></th>
<td>
<div class="ipt_box">
<input type="text" id="newServiceGroupDesc" value="" name="" class="">
</div>
</td>
</tr>
<tr>
<th class="tl">사용여부 <em class="red">*</em></th>
<td>
<div class="sel_box">
<select class="wide" id="newUseYn">
<option value="Y" selected>Y</option>
<option value="N">N</option>
</select>
</div>
</td>
</tr>
<tr>
<th class="tl">권한부여<em class="red">*</em></th>
<td class="tl">
<div class="content tree tree-maxHeight type-chk">
<div id="newTreeWrap" class="tree_wrap">
</div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</form>
</div>
</div>
<div class="modal_footer">
<div class="btn_wrap fr">
<a href="#" class="btn" id="btnSaveCust">저장</a>
</div>
</div>
<div class="modal_controller">
<a href="#" class="close">close</a>
</div>
</div>
</body>
<script>
function fncNewDoubleCheck() { function fncNewDoubleCheck() {
var custCode = $("#custCode").val(); var custCode = $("#custCode").val();
@ -527,203 +669,58 @@
}, "1") }, "1")
} }
}); });
};
} $('.tbl-card-li').each(function () {
; $(this).find('.tbl-card-title').on('click', function () {
$(this).parents('.tbl-card-li').toggleClass('on');
})
</script> });
<body>
<h1>ICOMSYS ADMIN</h1>
<div class="skip_navigation">
<ul>
<li>
<a href="#Content" class="go_content">본문 바로가기</a>
</li>
<li>
<a href="#Gnb">메뉴 바로가기</a>
</li>
</ul>
</div>
<h1>ICOMSYS ADMIN</h1>
<section id="Content" class="system_management">
<div class="location">
<ul>
<li class="home"><a href="#">HOME</a></li>
<li><a href="#">시스템관리</a></li>
<li><a href="#">서비스그룹 관리</a></li>
</ul>
</div>
<!-- TODO: 래부터 신규 컨텐츠 마크업 입니다. -->
<div class="sub_cont">
<div class="cont_box">
<div class="box_title">
<div class="fl">
<h2 class="mt12">서비스 그룹관리</h2>
</div>
</div>
<div class="tbl">
<table class="edit hght">
<colgroup>
<col width="150px">
<col width="auto">
</colgroup>
<tbody>
<input type="hidden" id="custCode">
<tr>
<th class="tl">서비스그룹명</th>
<td>
<div class="ipt_box">
<input type="text" id="mainServiceGroupName" name="" class="" readonly>
</div>
</td>
</tr>
<tr>
<th class="tl">서비스코드</th>
<td>
<div class="ipt_box type-flex">
<input type="text" id="mainServiceGroup" value="codecode" name="" class="" readonly>
</div>
</td>
</tr>
<tr>
<th class="tl">시나리오코드</th>
<td>
<div class="ipt_box type-flex">
<input type="text" id="mainOprMngCode" value="codecode" name="" class="" readonly>
</div>
</td>
</tr>
<tr>
<th class="tl">사용여부</th>
<td>
<input type="text" id="mainUseYn" value="Y" name="" class="" readonly>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="cont_box">
<div class="box_title">
<div class="fl">
<h2 class="mt12">시나리오 그룹 <em class="red">*</em></h2>
</div>
<div class="btn_wrap fr">
<a href="#" id="btnRegModal" rel="reg_modal" class="btn line modalLoad">추가</a>
</div>
</div>
<div class="tbl-card-wrap">
<ul class="tbl-card">
</ul>
</div>
</div>
</div>
</section>
$('.tbl-card').find('.tbl-card-li .title-connect').each(function () {
const submitVal = $(this).val();
if (submitVal.length > 0) {
$(this).parents('.tbl-card-li').find('.title-connected').text(submitVal);
}
$(this).on('keyup', function () {
const thisVal = $(this).val();
<div class="modal" id="reg_modal"> if (thisVal.length === 0) {
<div class="modal_header"> $(this).parents('.tbl-card-li').find('.title-connected').text('새로운 시나리오 그룹');
<h3>시나리오그룹 신규등록</h3> } else {
</div> $(this).parents('.tbl-card-li').find('.title-connected').text(thisVal);
<div class="modal_body"> }
<div class="modal_cont"> })
<form id="serviceInfo"> });
<div class="tbl">
<table class="edit hght">
<colgroup>
<col width="150px">
<col width="auto">
<tbody>
<tr>
<th class="tl">시나리오 그룹명<em class="red">*</em></th>
<td>
<div class="ipt_box">
<input type="text" id="newServiceGroupName" value="" name=""
class="title-connect">
</div>
</td>
</tr>
getServiceGroupQueryString();
getServiceGroupViewData();
<tr> $('#btnRegModal').on('click', function () {
<th class="tl">서비스코드<em class="red">*</em></th> // console.log("생성클릭")
<td> newTreeWrap();
<div class="ipt_box type-flex"> // $('#serviceInfo').reset();
<input type="text" id="newServiceGroup" value="" name="" class=""> });
<a href="#" class="btn grey" id="btnDoubleCheck">중복확인</a>
</div>
<div class="ipt_box ">
<div class="create-code-list">
<input type="hidden" id="newDoubleCheck" value="N" name="" class="">
</div>
</div>
</td>
</tr>
<tr> // 신규 시나리오그룹 저장
<th class="tl">시나리오그룹 설명<em class="red">*</em></th> $('#btnSaveCust').on('click', function () {
<td> // console.log("저장클릭")
<div class="ipt_box"> fncCreateServiceInfo();
<input type="text" id="newServiceGroupDesc" value="" name="" class=""> });
</div>
</td>
</tr>
<tr> //중복확인
<th class="tl">사용여부 <em class="red">*</em></th> $('#btnDoubleCheck').on('click', function () {
<td> // console.log("저장클릭")
<div class="sel_box"> fncNewDoubleCheck();
<select class="wide" id="newUseYn"> });
<option value="Y" selected>Y</option>
<option value="N">N</option>
</select>
</div>
</td>
</tr>
<tr> // $('#newServiceGroup').keydown(function (e) {
<th class="tl">권한부여<em class="red">*</em></th> $('#newServiceGroup').keyup(function (e) {
<td class="tl"> // newOprCreate(e.keyCode)
<div class="content tree tree-maxHeight type-chk"> });
<div id="newTreeWrap" class="tree_wrap">
</div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</form>
</div>
</div>
<div class="modal_footer">
<div class="btn_wrap fr">
<a href="#" class="btn" id="btnSaveCust">저장</a>
</div>
</div>
<div class="modal_controller">
<a href="#" class="close">close</a>
</div>
</div>
</script>
</body>

@ -4,34 +4,138 @@
</head> </head>
<script> <body>
$(document).ready(function () {
// getOprSelect(); <h1>ICOMSYS ADMIN</h1>
getCust(); <div class="skip_navigation">
PagingDataTable(); <ul>
$('#listTable tbody').on('dblclick', 'tr', function () { <li>
var data = $('#listTable').DataTable().row(this).data(); <a href="#Content" class="go_content">본문 바로가기</a>
viewPage(data) </li>
}); <li>
<a href="#Gnb">메뉴 바로가기</a>
</li>
</ul>
</div>
$('#btnSearchOpr').on('click', function () { <section id="Content" class="system_management">
fnCustSearchBtn(); <div class="location">
}); <ul>
<li class="home"><a href="#">HOME</a></li>
<li><a href="#">시스템관리</a></li>
<li><a href="#">사용자관리</a></li>
</ul>
</div>
$('#btnRegModal').on('click', function () { <div class="sub_cont menu06_01_03">
fnInsertBtn(); <div class="cont_box">
}); <div class="box_title">
<div class="fl">
<h2 class="mt12">사용자 조회</h2>
</div>
<div class="fr">
<div class="btn_wrap fl">
<a href="#" id="btnSearchOpr" class="btn">조회</a>
</div>
</div>
</div>
<div class="tbl">
<table class="search block">
<colgroup>
<col width="140px">
<col width="25%">
<col width="140px">
<col width="25%">
<col width="140px">
<col width="25%">
</colgroup>
<tbody>
<tr>
<th class="tl">고객사</th>
<td>
<div class="sel_box">
<select id="selectCust" class="wide">
<option value="ALL">전체</option>
</select>
</div>
</td>
<th class="tl">분류</th>
<td>
<div class="sel_box">
<select id="codeType" class="wide">
<option value="ALL">분류 선택</option>
<option value="userId">사용자아이디</option>
<option value="userName">사용자이름</option>
</select>
</div>
</td>
<th class="tl">검색어</th>
<td>
<div class="ipt_box listen">
<input type="text" placeholder="검색어를 입력하세요" id="codeText" name="typeText">
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="cont_box">
<div class="box_title">
<div class="fl">
<h2 class="mt12"> 사용자 리스트</h2>
</div>
<div class="btn_wrap fr">
<a href="#" class="btn line modalLoad" id="btnRegModal">등록</a>
</div>
</div>
$("#Content").on("keyup", function (key) {
if (key.keyCode == 13) {
fnCustSearchBtn();
}
});
}
);
<div class="tbl">
<form id="custListForm">
<table id="listTable" class="">
<colgroup>
<col width="auto">
<col width="auto">
<col width="auto">
<col width="auto">
<col width="auto">
<col width="auto">
<col width="auto">
<col width="auto">
<col width="auto">
<col width="auto">
<col width="auto">
</colgroup>
<thead>
<tr>
<th>고객사코드</th>
<th>고객사</th>
<th>사용자시퀀스</th>
<th>사용자아이디</th>
<th>사용자이름</th>
<th>eMail</th>
<th>전화번호</th>
<th>사용여부</th>
<th>생성일</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
</form>
</div>
</div>
</div>
</section>
</body>
<script>
function getOprSelect() { function getOprSelect() {
var html = '<option value="' + "ALL" + '">' + "전체" + '</option>'; var html = '<option value="' + "ALL" + '">' + "전체" + '</option>';
@ -77,7 +181,7 @@
document.location.href = '/view/admin/common/system/user/view' + "?userSeq=" + rowData.userSeq; document.location.href = '/view/admin/common/system/user/view' + "?userSeq=" + rowData.userSeq;
} }
var PagingDataTable = function () { var userPagingDataTable = function () {
// console.log("log - " + JSON.stringify({"page": "0", "size": "10"})); // console.log("log - " + JSON.stringify({"page": "0", "size": "10"}));
var paging = JSON.stringify({'page': 0, 'size': 10}) var paging = JSON.stringify({'page': 0, 'size': 10})
$('#listTable').DataTable( $('#listTable').DataTable(
@ -239,141 +343,22 @@
document.location.href = '/view/admin/common/system/user/insert'; document.location.href = '/view/admin/common/system/user/insert';
} }
getCust();
userPagingDataTable();
$('#listTable tbody').on('dblclick', 'tr', function () {
var data = $('#listTable').DataTable().row(this).data();
viewPage(data)
});
$('#btnSearchOpr').on('click', function () {
fnCustSearchBtn();
});
$('#btnRegModal').on('click', function () {
fnInsertBtn();
});
$("#Content").on("keyup", function (key) {
if (key.keyCode == 13) {
fnCustSearchBtn();
}
});
</script> </script>
<body>
<h1>ICOMSYS ADMIN</h1>
<div class="skip_navigation">
<ul>
<li>
<a href="#Content" class="go_content">본문 바로가기</a>
</li>
<li>
<a href="#Gnb">메뉴 바로가기</a>
</li>
</ul>
</div>
<header id="header">
</header>
<section id="Content" class="system_management">
<div class="location">
<ul>
<li class="home"><a href="#">HOME</a></li>
<li><a href="#">시스템관리</a></li>
<li><a href="#">사용자관리</a></li>
</ul>
</div>
<div class="sub_cont menu06_01_03">
<div class="cont_box">
<div class="box_title">
<div class="fl">
<h2 class="mt12">사용자 조회</h2>
</div>
<div class="fr">
<div class="btn_wrap fl">
<a href="#" id="btnSearchOpr" class="btn">조회</a>
</div>
</div>
</div>
<div class="tbl">
<table class="search block">
<colgroup>
<col width="140px">
<col width="25%">
<col width="140px">
<col width="25%">
<col width="140px">
<col width="25%">
</colgroup>
<tbody>
<tr>
<th class="tl">고객사</th>
<td>
<div class="sel_box">
<select id="selectCust" class="wide">
<option value="ALL">전체</option>
</select>
</div>
</td>
<th class="tl">분류</th>
<td>
<div class="sel_box">
<select id="codeType" class="wide">
<option value="ALL">분류 선택</option>
<option value="userId">사용자아이디</option>
<option value="userName">사용자이름</option>
</select>
</div>
</td>
<th class="tl">검색어</th>
<td>
<div class="ipt_box listen">
<input type="text" placeholder="검색어를 입력하세요" id="codeText" name="typeText">
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="cont_box">
<div class="box_title">
<div class="fl">
<h2 class="mt12"> 사용자 리스트</h2>
</div>
<div class="btn_wrap fr">
<%-- <a href="#" class="btn grey" id="btnDelCust">삭제</a>--%>
<%-- <a href="#" rel="reg_modal" class="btn modalLoad" id="btnRegModal">추가</a>--%>
<a href="#" class="btn line modalLoad" id="btnRegModal">등록</a>
</div>
</div>
<div class="tbl">
<form id="custListForm">
<table id="listTable" class="">
<colgroup>
<col width="auto">
<col width="auto">
<col width="auto">
<col width="auto">
<col width="auto">
<col width="auto">
<col width="auto">
<col width="auto">
<col width="auto">
<col width="auto">
<col width="auto">
</colgroup>
<thead>
<tr>
<th>고객사코드</th>
<th>고객사</th>
<th>사용자시퀀스</th>
<th>사용자아이디</th>
<th>사용자이름</th>
<th>eMail</th>
<th>전화번호</th>
<th>사용여부</th>
<th>생성일</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
</form>
</div>
</div>
</div>
</section>
</body>

@ -4,32 +4,139 @@
</head> </head>
<script>
$(document).ready(function () {
getCust(); <body>
PagingDataTable();
$('#listTable tbody').on('dblclick', 'tr', function () {
var data = $('#listTable').DataTable().row(this).data();
viewPage(data)
});
$('#btnSearchOpr').on('click', function () { <h1>ICOMSYS ADMIN</h1>
fnCustSearchBtn(); <div class="skip_navigation">
}); <ul>
<li>
<a href="#Content" class="go_content">본문 바로가기</a>
</li>
<li>
<a href="#Gnb">메뉴 바로가기</a>
</li>
</ul>
</div>
<section id="Content" class="system_management">
<div class="location">
<ul>
<li class="home"><a href="#">HOME</a></li>
<li><a href="#">시스템관리</a></li>
<li><a href="#">운영자관리</a></li>
</ul>
</div>
$('#btnRegModal').on('click', function () { <div class="sub_cont menu06_01_03">
fnInsertBtn(); <div class="cont_box">
}); <div class="box_title">
<div class="fl">
<h2 class="mt12">운영자 조회</h2>
</div>
<div class="fr">
<div class="btn_wrap fl">
<a href="#" id="btnSearchOpr" class="btn">조회</a>
</div>
</div>
</div>
<div class="tbl">
<table class="search block">
<colgroup>
<col width="140px">
<col width="25%">
<col width="140px">
<col width="25%">
<col width="140px">
<col width="25%">
</colgroup>
<tbody>
<tr>
<th class="tl">고객사</th>
<td>
<div class="sel_box">
<select id="selectCust" class="wide">
<option value="ALL">전체</option>
</select>
</div>
</td>
<th class="tl">분류</th>
<td>
<div class="sel_box">
<select id="codeType" class="wide">
<option value="ALL">분류 선택</option>
<option value="userId">운영자아이디</option>
<option value="userName">움영자이름</option>
</select>
</div>
</td>
<th class="tl">검색어</th>
<td>
<div class="ipt_box listen">
<input type="text" placeholder="검색어를 입력하세요" id="codeText" name="typeText">
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="cont_box">
<div class="box_title">
<div class="fl">
<h2 class="mt12"> 운영자 리스트</h2>
</div>
<div class="btn_wrap fr">
<a href="#" class="btn line modalLoad" id="btnRegModal">등록</a>
</div>
</div>
$("#Content").on("keyup", function (key) { <div class="tbl">
if (key.keyCode == 13) { <form id="custListForm">
fnCustSearchBtn(); <table id="listTable" class="">
} <colgroup>
}); <col width="auto">
} <col width="auto">
); <col width="auto">
<col width="auto">
<col width="auto">
<col width="auto">
<col width="auto">
<col width="auto">
<col width="auto">
<col width="auto">
<col width="auto">
</colgroup>
<thead>
<tr>
<th>고객사코드</th>
<th>고객사</th>
<th>운영자시퀀스</th>
<th>운영자아이디</th>
<th>운영자이름</th>
<th>eMail</th>
<th>전화번호</th>
<th>사용여부</th>
<th>생성일</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
</form>
</div>
</div>
</div>
</section>
</body>
<script>
function getOpr() { function getOpr() {
var html = '<option value="' + "ALL" + '">' + "전체" + '</option>'; var html = '<option value="' + "ALL" + '">' + "전체" + '</option>';
@ -236,136 +343,26 @@
} }
</script> getCust();
PagingDataTable();
$('#listTable tbody').on('dblclick', 'tr', function () {
var data = $('#listTable').DataTable().row(this).data();
viewPage(data)
});
$('#btnSearchOpr').on('click', function () {
fnCustSearchBtn();
});
<body> $('#btnRegModal').on('click', function () {
fnInsertBtn();
});
<h1>ICOMSYS ADMIN</h1>
<div class="skip_navigation">
<ul>
<li>
<a href="#Content" class="go_content">본문 바로가기</a>
</li>
<li>
<a href="#Gnb">메뉴 바로가기</a>
</li>
</ul>
</div>
<header id="header">
</header>
<section id="Content" class="system_management">
<div class="location">
<ul>
<li class="home"><a href="#">HOME</a></li>
<li><a href="#">시스템관리</a></li>
<li><a href="#">운영자관리</a></li>
</ul>
</div>
<div class="sub_cont menu06_01_03">
<div class="cont_box">
<div class="box_title">
<div class="fl">
<h2 class="mt12">운영자 조회</h2>
</div>
<div class="fr">
<div class="btn_wrap fl">
<a href="#" id="btnSearchOpr" class="btn">조회</a>
</div>
</div>
</div>
<div class="tbl">
<table class="search block">
<colgroup>
<col width="140px">
<col width="25%">
<col width="140px">
<col width="25%">
<col width="140px">
<col width="25%">
</colgroup>
<tbody>
<tr>
<th class="tl">고객사</th>
<td>
<div class="sel_box">
<select id="selectCust" class="wide">
<option value="ALL">전체</option>
</select>
</div>
</td>
<th class="tl">분류</th>
<td>
<div class="sel_box">
<select id="codeType" class="wide">
<option value="ALL">분류 선택</option>
<option value="userId">운영자아이디</option>
<option value="userName">움영자이름</option>
</select>
</div>
</td>
<th class="tl">검색어</th>
<td>
<div class="ipt_box listen">
<input type="text" placeholder="검색어를 입력하세요" id="codeText" name="typeText">
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="cont_box">
<div class="box_title">
<div class="fl">
<h2 class="mt12"> 운영자 리스트</h2>
</div>
<div class="btn_wrap fr">
<a href="#" class="btn line modalLoad" id="btnRegModal">등록</a>
</div>
</div>
<div class="tbl">
<form id="custListForm">
<table id="listTable" class="">
<colgroup>
<col width="auto">
<col width="auto">
<col width="auto">
<col width="auto">
<col width="auto">
<col width="auto">
<col width="auto">
<col width="auto">
<col width="auto">
<col width="auto">
<col width="auto">
</colgroup>
<thead>
<tr>
<th>고객사코드</th>
<th>고객사</th>
<th>운영자시퀀스</th>
<th>운영자아이디</th>
<th>운영자이름</th>
<th>eMail</th>
<th>전화번호</th>
<th>사용여부</th>
<th>생성일</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
</form>
</div>
</div>
</div>
</section>
$("#Content").on("keyup", function (key) {
if (key.keyCode == 13) {
fnCustSearchBtn();
}
});
</body> </script>

@ -4,91 +4,217 @@
</head> </head>
<script> <body>
$(document).ready(function () {
getCust();
getOpr();
authChoice($('#newServiceGroup option:selected').val());
$("#Content").on("keyup", function (key) {
if (key.keyCode == 13) {
fnCustSearchBtn();
}
});
//선택 이벤트 <h1>ICOMSYS ADMIN</h1>
$('#newServiceGroup').change(function () { <div class="skip_navigation">
authChoice($(this).val()) <ul>
}); <li>
<a href="#Content" class="go_content">본문 바로가기</a>
</li>
<li>
<a href="#Gnb">메뉴 바로가기</a>
</li>
</ul>
</div>
// $('.tbl-card-li').each(function () { <header id="header">
// $(this).find('.tbl-card-title').on('click', function () { </header>
// $(this).parents('.tbl-card-li').toggleClass('on');
// })
// });
//선택 이벤트 <section id="Content" class="bot_common">
$('#newCustUser').change(function () { <div class="location">
SelectServiceGroupUpdate($(this).val()) <ul>
}); <li class="home"><a href="#">HOME</a></li>
<li><a href="#">시스템관리</a></li>
<li><a href="#">운영자관리</a></li>
<li><a href="#">운영자생성</a></li>
</ul>
</div>
<div class="sub_cont">
<div class="cont_box">
<div class="box_title">
<div class="fl">
<h2 class="mt12">운영자 생성</h2>
</div>
</div>
<div class="tbl">
<table class="edit hght">
<colgroup>
<col width="150px">
<col width="auto">
</colgroup>
<tbody>
//서비스그룹 추가 -> 적용버튼 <tr>
$('#btnSaveCust').on('click', function () { <th class="tl">고객사 <em class="red">*</em></th>
addServiceGroup(); <td>
// $('.tbl-card-li').each(function () { <div class="sel_box">
// // console.log("???"); <select class="wide" id="newCustUser">
// $(this).find('.tbl-card-title').on('click', function () { <option value="ALL">전체</option>
// $(this).parents('.tbl-card-li').toggleClass('on'); </select>
// }) </div>
// }); </td>
</tr>
// console.log($('.tbl-card').find('.tbl-card-li').last()); <tr>
<th class="tl">운영자 ID <em class="red">*</em></th>
<td>
<div class="ipt_box type-flex">
<input type="text" id="newUserId" name="" class="">
<input type="hidden" id="newUserIdYn" value="N" name="" class="">
<a href="#" id="doubleCheckBtn" class="btn basic">중복확인</a>
</div>
</td>
</tr>
<tr>
<th class="tl">비밀번호<em class="red">*</em></th>
<td>
<div class="ipt_box">
<input type="password" id="newUserPass" value="" name="" class="">
</div>
<span id="passCheckUi"></span>
</td>
</tr>
// $('.tbl-card').find('.tbl-card-li').last() <tr>
$('.tbl-card').find('.tbl-card-title').last() <th class="tl">비밀번호 확인<em class="red">*</em></th>
.on('click', function () { <td>
$(this).parents('.tbl-card-li').toggleClass('on') <div class="ipt_box">
} <input type="password" id="newUserPassChk" value="" name="" class="">
); </div>
}); <span id="passDoubleCheckUi"></span>
</td>
</tr>
$('#btnSave').on('click', function () { <tr>
// console.log("저장버튼"); <th class="tl">이름 <em class="red">*</em></th>
saveBtn(); <td>
}); <div class="ipt_box">
$('#btnDel').on('click', function () { <input type="text" id="newUserName" value="" name="" class="">
// console.log("삭제버튼"); </div>
delBtn(); </td>
}); </tr>
$('#doubleCheckBtn').on('click', function () {
// console.log("중복확인버튼");
userDoubleCheck();
});
$('#newUserPass').keyup(function (e) { <tr>
newUserPassCheck(e.keyCode) <th class="tl">사용여부 <em class="red">*</em></th>
}); <td>
<div class="sel_box">
<select class="wide" id="newUseYn">
<option value="Y">Y</option>
<option value="N">N</option>
</select>
</div>
</td>
</tr>
$('#newUserPassChk').keyup(function (e) { <tr>
newUserDoublePassCheck(e.keyCode) <th class="tl">이메일 주소</th>
}); <td>
$('.tbl-card').find('.tbl-card-li .title-connect').each(function () { <div class="ipt_box">
const submitVal = $(this).val(); <input type="text" id="newUserMail" value="" name="" class="">
if (submitVal.length > 0) { </div>
$(this).parents('.tbl-card-li').find('.title-connected').text(submitVal); </td>
} </tr>
$(this).on('keyup', function () {
const thisVal = $(this).val(); <tr>
if (thisVal.length === 0) { <th class="tl">핸드폰 번호</th>
$(this).parents('.tbl-card-li').find('.title-connected').text('새로운 시나리오 그룹'); <td>
} else { <div class="ipt_box">
$(this).parents('.tbl-card-li').find('.title-connected').text(thisVal); <input type="text" id="newUserMobile" value="" name="" class="">
} </div>
}) </td>
}); </tr>
}
); <tr>
<th class="tl">등급선택</th>
<td>
<div class="sel_box">
<select class="wide" id="newUserRoleVal">
<option value="USERADMIN">운영자</option>
</select>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="cont_box">
<div class="box_title">
<div class="btn_wrap fr">
<a href="#" id="btnRegModal" rel="reg_modal" class="btn line modalLoad">추가</a>
</div>
</div>
<div class="tbl-card-wrap">
<ul class="tbl-card">
</ul>
</div>
</div>
<div class="cont_box">
<div class="btn_wrap center">
<a href="#" class="btn basic grey" id="btnDel">취소</a>
<a href="#" class="btn basic" id="btnSave">저장</a>
</div>
</div>
</div>
</section>
<div class="modal" id="reg_modal">
<div class="modal_header">
<h3>시나리오그룹 권한</h3>
</div>
<div class="modal_body">
<div class="modal_cont">
<form id="serviceInfo">
<div class="tbl">
<table class="edit hght">
<colgroup>
<col width="150px">
<col width="auto">
<tbody>
<span id="copySpan">
<tr>
<th class="tl">시나리오그룹</th>
<td>
<div class="sel_box">
<select id="newServiceGroup" class="wide">
<option value="ALL">전체</option>
</select>
</div>
</td>
</tr>
</span>
</tbody>
</table>
</div>
</form>
</div>
</div>
<div class="modal_footer">
<div class="btn_wrap fr">
<a href="#" class="btn" id="btnSaveCust">저장</a>
</div>
</div>
<div class="modal_controller">
<a href="#" class="close">close</a>
</div>
</div>
</body>
<script>
function listgo() { function listgo() {
// document.location.href = "/BotMain_VM/admin/common/system/user/manage.do"; // document.location.href = "/BotMain_VM/admin/common/system/user/manage.do";
@ -501,217 +627,86 @@
return; return;
} }
getCust();
getOpr();
authChoice($('#newServiceGroup option:selected').val());
$("#Content").on("keyup", function (key) {
if (key.keyCode == 13) {
fnCustSearchBtn();
}
});
//선택 이벤트
$('#newServiceGroup').change(function () {
authChoice($(this).val())
});
// $('.tbl-card-li').each(function () {
// $(this).find('.tbl-card-title').on('click', function () {
// $(this).parents('.tbl-card-li').toggleClass('on');
// })
// });
//선택 이벤트
$('#newCustUser').change(function () {
SelectServiceGroupUpdate($(this).val())
});
//서비스그룹 추가 -> 적용버튼
$('#btnSaveCust').on('click', function () {
addServiceGroup();
// $('.tbl-card-li').each(function () {
// // console.log("???");
// $(this).find('.tbl-card-title').on('click', function () {
// $(this).parents('.tbl-card-li').toggleClass('on');
// })
// });
// console.log($('.tbl-card').find('.tbl-card-li').last());
// $('.tbl-card').find('.tbl-card-li').last()
$('.tbl-card').find('.tbl-card-title').last()
.on('click', function () {
$(this).parents('.tbl-card-li').toggleClass('on')
}
);
});
$('#btnSave').on('click', function () {
// console.log("저장버튼");
saveBtn();
});
$('#btnDel').on('click', function () {
// console.log("삭제버튼");
delBtn();
});
$('#doubleCheckBtn').on('click', function () {
// console.log("중복확인버튼");
userDoubleCheck();
});
$('#newUserPass').keyup(function (e) {
newUserPassCheck(e.keyCode)
});
$('#newUserPassChk').keyup(function (e) {
newUserDoublePassCheck(e.keyCode)
});
$('.tbl-card').find('.tbl-card-li .title-connect').each(function () {
const submitVal = $(this).val();
if (submitVal.length > 0) {
$(this).parents('.tbl-card-li').find('.title-connected').text(submitVal);
}
$(this).on('keyup', function () {
const thisVal = $(this).val();
if (thisVal.length === 0) {
$(this).parents('.tbl-card-li').find('.title-connected').text('새로운 시나리오 그룹');
} else {
$(this).parents('.tbl-card-li').find('.title-connected').text(thisVal);
}
})
});
</script> </script>
<body>
<h1>ICOMSYS ADMIN</h1>
<div class="skip_navigation">
<ul>
<li>
<a href="#Content" class="go_content">본문 바로가기</a>
</li>
<li>
<a href="#Gnb">메뉴 바로가기</a>
</li>
</ul>
</div>
<header id="header">
</header>
<section id="Content" class="bot_common">
<div class="location">
<ul>
<li class="home"><a href="#">HOME</a></li>
<li><a href="#">시스템관리</a></li>
<li><a href="#">운영자관리</a></li>
<li><a href="#">운영자생성</a></li>
</ul>
</div>
<div class="sub_cont">
<div class="cont_box">
<div class="box_title">
<div class="fl">
<h2 class="mt12">운영자 생성</h2>
</div>
</div>
<div class="tbl">
<table class="edit hght">
<colgroup>
<col width="150px">
<col width="auto">
</colgroup>
<tbody>
<tr>
<th class="tl">고객사 <em class="red">*</em></th>
<td>
<div class="sel_box">
<select class="wide" id="newCustUser">
<option value="ALL">전체</option>
</select>
</div>
</td>
</tr>
<tr>
<th class="tl">운영자 ID <em class="red">*</em></th>
<td>
<div class="ipt_box type-flex">
<input type="text" id="newUserId" name="" class="">
<input type="hidden" id="newUserIdYn" value="N" name="" class="">
<a href="#" id="doubleCheckBtn" class="btn basic">중복확인</a>
</div>
</td>
</tr>
<tr>
<th class="tl">비밀번호<em class="red">*</em></th>
<td>
<div class="ipt_box">
<input type="password" id="newUserPass" value="" name="" class="">
</div>
<span id="passCheckUi"></span>
</td>
</tr>
<tr>
<th class="tl">비밀번호 확인<em class="red">*</em></th>
<td>
<div class="ipt_box">
<input type="password" id="newUserPassChk" value="" name="" class="">
</div>
<span id="passDoubleCheckUi"></span>
</td>
</tr>
<tr>
<th class="tl">이름 <em class="red">*</em></th>
<td>
<div class="ipt_box">
<input type="text" id="newUserName" value="" name="" class="">
</div>
</td>
</tr>
<tr>
<th class="tl">사용여부 <em class="red">*</em></th>
<td>
<div class="sel_box">
<select class="wide" id="newUseYn">
<option value="Y">Y</option>
<option value="N">N</option>
</select>
</div>
</td>
</tr>
<tr>
<th class="tl">이메일 주소</th>
<td>
<div class="ipt_box">
<input type="text" id="newUserMail" value="" name="" class="">
</div>
</td>
</tr>
<tr>
<th class="tl">핸드폰 번호</th>
<td>
<div class="ipt_box">
<input type="text" id="newUserMobile" value="" name="" class="">
</div>
</td>
</tr>
<tr>
<th class="tl">등급선택</th>
<td>
<div class="sel_box">
<select class="wide" id="newUserRoleVal">
<option value="USERADMIN">운영자</option>
</select>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="cont_box">
<div class="box_title">
<div class="btn_wrap fr">
<a href="#" id="btnRegModal" rel="reg_modal" class="btn line modalLoad">추가</a>
</div>
</div>
<div class="tbl-card-wrap">
<ul class="tbl-card">
</ul>
</div>
</div>
<div class="cont_box">
<div class="btn_wrap center">
<a href="#" class="btn basic grey" id="btnDel">취소</a>
<a href="#" class="btn basic" id="btnSave">저장</a>
</div>
</div>
</div>
</section>
<div class="modal" id="reg_modal">
<div class="modal_header">
<h3>시나리오그룹 권한</h3>
</div>
<div class="modal_body">
<div class="modal_cont">
<form id="serviceInfo">
<div class="tbl">
<table class="edit hght">
<colgroup>
<col width="150px">
<col width="auto">
<tbody>
<span id="copySpan">
<tr>
<th class="tl">시나리오그룹</th>
<td>
<div class="sel_box">
<select id="newServiceGroup" class="wide">
<option value="ALL">전체</option>
</select>
</div>
</td>
</tr>
</span>
</tbody>
</table>
</div>
</form>
</div>
</div>
<div class="modal_footer">
<div class="btn_wrap fr">
<a href="#" class="btn" id="btnSaveCust">저장</a>
</div>
</div>
<div class="modal_controller">
<a href="#" class="close">close</a>
</div>
</div>
</body>

@ -4,59 +4,204 @@
</head> </head>
<script> <body>
$(document).ready(function () {
getOpr(); <h1>ICOMSYS ADMIN</h1>
getQueryString(); <div class="skip_navigation">
getViewPageData(); <ul>
authChoice($('#newServiceGroup option:selected').val()); <li>
<a href="#Content" class="go_content">본문 바로가기</a>
</li>
<li>
<a href="#Gnb">메뉴 바로가기</a>
</li>
</ul>
</div>
$("#Content").on("keyup", function (key) {
if (key.keyCode == 13) {
fnCustSearchBtn();
}
});
//선택 이벤트 <section id="Content" class="bot_common">
$('#newServiceGroup').change(function () { <div class="location">
authChoice($(this).val()) <ul>
}); <li class="home"><a href="#">HOME</a></li>
<li><a href="#">시스템관리</a></li>
<li><a href="#">운영자관리</a></li>
</ul>
</div>
$("#Content").on("keyup", function (key) { <div class="sub_cont">
if (key.keyCode == 13) { <div class="cont_box">
fnCustSearchBtn(); <div class="box_title">
} <div class="fl">
}) <h2 class="mt12">운영자 수정</h2>
</div>
</div>
<div class="tbl">
<table class="edit hght">
<colgroup>
<col width="150px">
<col width="auto">
</colgroup>
<tbody>
$('#btnSave').on('click', function () { <tr>
// console.log("저장버튼"); <th class="tl">운영자 ID <em class="red">*</em></th>
saveBtn(); <td>
}); <div class="ipt_box type-flex">
<input type="hidden" id="updateUserSeq" name="" class="" readonly>
<input type="text" id="updateUserId" value="아이디아이이" name="" class="" readonly>
</div>
</td>
</tr>
$('#failCheckBtn').on('click', function () { <tr>
failCheckBtn(); <th class="tl">비밀번호 변경<em class="red">*</em></th>
}); <td>
<div class="ipt_box">
<input type="password" id="updateUserPass" value="" name="" class="">
<input type="hidden" id="updateUserPassChk" value="N" name="" class="">
</div>
</td>
</tr>
//서비스그룹 추가 -> 적용버튼 <tr>
$('#btnSaveCust').on('click', function () { <th class="tl">오류회수 초기화<em class="red">*</em></th>
addServiceGroup(); <td>
// $('.tbl-card-li').each(function () { <div class="ipt_box type-flex">
// // console.log("???"); <input type="text" id="updateLoginCheck" value="" name="" class="" readonly>
// $(this).find('.tbl-card-title').on('click', function () { <a href="#" id="failCheckBtn" class="btn basic">오류회수 초기화</a>
// $(this).parents('.tbl-card-li').toggleClass('on'); </div>
// }) </td>
// }); </tr>
// console.log($('.tbl-card').find('.tbl-card-li').last()); <tr>
// $('.tbl-card').find('.tbl-card-li').last() <th class="tl">이름 <em class="red">*</em></th>
$('.tbl-card').find('.tbl-card-title').last() <td>
.on('click', function () { <div class="ipt_box">
$(this).parents('.tbl-card-li').toggleClass('on') <input type="text" id="updateUserName" value="홍길동" name="" class="">
} </div>
); </td>
}); </tr>
});
<tr>
<th class="tl">사용여부 <em class="red">*</em></th>
<td>
<div class="sel_box">
<select class="wide" id="updateUseYn">
<option value="">Y</option>
<option value="">N</option>
</select>
</div>
</td>
</tr>
<tr>
<th class="tl">이메일 주소</th>
<td>
<div class="ipt_box">
<input type="text" value="" id="updateEmail" name="" class="">
</div>
</td>
</tr>
<tr>
<th class="tl">핸드폰 번호</th>
<td>
<div class="ipt_box">
<input type="text" value="" id="updateMobile" name="" class="">
</div>
</td>
</tr>
<tr>
<th class="tl">등급선택</th>
<td>
<div class="sel_box">
<select class="wide" id="updateRoleVal">
<%--
<option value="USER">일반사용자</option>
--%>
<option value="USERADMIN">운영자</option>
</select>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="cont_box">
<div class="box_title">
<div class="btn_wrap fr">
<a href="#" id="btnRegModal" rel="reg_modal" class="btn line modalLoad">추가</a>
</div>
</div>
<div class="tbl-card-wrap">
<ul class="tbl-card">
</ul>
</div>
</div>
<div class="cont_box">
<div class="btn_wrap center">
<a href="#" class="btn basic grey" id="btnDel">취소</a>
<a href="#" class="btn basic" id="btnSave">저장</a>
</div>
</div>
</div>
</section>
<div class="modal" id="reg_modal">
<div class="modal_header">
<h3>서비스그룹 권한</h3>
</div>
<div class="modal_body">
<div class="modal_cont">
<form id="serviceInfo">
<div class="tbl">
<table class="edit hght">
<colgroup>
<col width="150px">
<col width="auto">
<tbody>
<span id="copySpan">
<tr>
<th class="tl">서비스그룹</th>
<td>
<div class="sel_box">
<select id="newServiceGroup" class="wide">
<option value="ALL">전체</option>
</select>
</div>
</td>
</tr>
</span>
</tbody>
</table>
</div>
</form>
</div>
</div>
<div class="modal_footer">
<div class="btn_wrap fr">
<a href="#" class="btn" id="btnSaveCust">저장</a>
</div>
</div>
<div class="modal_controller">
<a href="#" class="close">close</a>
</div>
</div>
</body>
<script>
function failCheckBtn() { function failCheckBtn() {
var data = {}; var data = {};
@ -476,212 +621,59 @@
setTimeout(function () { setTimeout(function () {
$('#newAuthChk').html(html1); $('#newAuthChk').html(html1);
}, 100) }, 100)
} }
; ;
} }
</script> getOpr();
getQueryString();
getViewPageData();
<body> authChoice($('#newServiceGroup option:selected').val());
$("#Content").on("keyup", function (key) {
<h1>ICOMSYS ADMIN</h1> if (key.keyCode == 13) {
<div class="skip_navigation"> fnCustSearchBtn();
<ul> }
<li> });
<a href="#Content" class="go_content">본문 바로가기</a>
</li>
<li>
<a href="#Gnb">메뉴 바로가기</a>
</li>
</ul>
</div>
<header id="header">
</header>
<section id="Content" class="bot_common">
<div class="location">
<ul>
<li class="home"><a href="#">HOME</a></li>
<li><a href="#">시스템관리</a></li>
<li><a href="#">운영자관리</a></li>
</ul>
</div>
<div class="sub_cont">
<div class="cont_box">
<div class="box_title">
<div class="fl">
<h2 class="mt12">운영자 수정</h2>
</div>
</div>
<div class="tbl">
<table class="edit hght">
<colgroup>
<col width="150px">
<col width="auto">
</colgroup>
<tbody>
<tr>
<th class="tl">운영자 ID <em class="red">*</em></th>
<td>
<div class="ipt_box type-flex">
<input type="hidden" id="updateUserSeq" name="" class="" readonly>
<input type="text" id="updateUserId" value="아이디아이이" name="" class="" readonly>
</div>
</td>
</tr>
<tr>
<th class="tl">비밀번호 변경<em class="red">*</em></th>
<td>
<div class="ipt_box">
<input type="password" id="updateUserPass" value="" name="" class="">
<input type="hidden" id="updateUserPassChk" value="N" name="" class="">
</div>
</td>
</tr>
<tr>
<th class="tl">오류회수 초기화<em class="red">*</em></th>
<td>
<div class="ipt_box type-flex">
<input type="text" id="updateLoginCheck" value="" name="" class="" readonly>
<a href="#" id="failCheckBtn" class="btn basic">오류회수 초기화</a>
</div>
</td>
</tr>
<tr>
<th class="tl">이름 <em class="red">*</em></th>
<td>
<div class="ipt_box">
<input type="text" id="updateUserName" value="홍길동" name="" class="">
</div>
</td>
</tr>
<tr>
<th class="tl">사용여부 <em class="red">*</em></th>
<td>
<div class="sel_box">
<select class="wide" id="updateUseYn">
<option value="">Y</option>
<option value="">N</option>
</select>
</div>
</td>
</tr>
<tr>
<th class="tl">이메일 주소</th>
<td>
<div class="ipt_box">
<input type="text" value="" id="updateEmail" name="" class="">
</div>
</td>
</tr>
<tr>
<th class="tl">핸드폰 번호</th>
<td>
<div class="ipt_box">
<input type="text" value="" id="updateMobile" name="" class="">
</div>
</td>
</tr>
<tr>
<th class="tl">등급선택</th>
<td>
<div class="sel_box">
<select class="wide" id="updateRoleVal">
<%--
<option value="USER">일반사용자</option>
--%>
<option value="USERADMIN">운영자</option>
</select>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="cont_box">
<div class="box_title">
<div class="btn_wrap fr">
<a href="#" id="btnRegModal" rel="reg_modal" class="btn line modalLoad">추가</a>
</div>
</div>
<div class="tbl-card-wrap">
<ul class="tbl-card">
</ul>
</div>
</div>
<div class="cont_box">
<div class="btn_wrap center">
<a href="#" class="btn basic grey" id="btnDel">취소</a>
<a href="#" class="btn basic" id="btnSave">저장</a>
</div>
</div>
</div>
</section>
<div class="modal" id="reg_modal">
<div class="modal_header">
<h3>서비스그룹 권한</h3>
</div>
<div class="modal_body">
<div class="modal_cont">
<form id="serviceInfo">
<div class="tbl">
<table class="edit hght">
<colgroup>
<col width="150px">
<col width="auto">
<tbody>
<span id="copySpan">
<tr>
<th class="tl">서비스그룹</th>
<td>
<div class="sel_box">
<select id="newServiceGroup" class="wide">
<option value="ALL">전체</option>
</select>
</div>
</td>
</tr>
</span> //선택 이벤트
</tbody> $('#newServiceGroup').change(function () {
</table> authChoice($(this).val())
</div> });
</form>
</div>
</div>
<div class="modal_footer"> $("#Content").on("keyup", function (key) {
<div class="btn_wrap fr"> if (key.keyCode == 13) {
<a href="#" class="btn" id="btnSaveCust">저장</a> fnCustSearchBtn();
</div> }
</div> })
<div class="modal_controller"> $('#btnSave').on('click', function () {
<a href="#" class="close">close</a> // console.log("저장버튼");
</div> saveBtn();
</div> });
$('#failCheckBtn').on('click', function () {
failCheckBtn();
});
</body> //서비스그룹 추가 -> 적용버튼
$('#btnSaveCust').on('click', function () {
addServiceGroup();
// $('.tbl-card-li').each(function () {
// // console.log("???");
// $(this).find('.tbl-card-title').on('click', function () {
// $(this).parents('.tbl-card-li').toggleClass('on');
// })
// });
// console.log($('.tbl-card').find('.tbl-card-li').last());
// $('.tbl-card').find('.tbl-card-li').last()
$('.tbl-card').find('.tbl-card-title').last()
.on('click', function () {
$(this).parents('.tbl-card-li').toggleClass('on')
}
);
});
</script>

@ -3,86 +3,217 @@
<title>사용자관리</title> <title>사용자관리</title>
</head> </head>
<body>
<script> <h1>ICOMSYS ADMIN</h1>
$(document).ready(function () { <div class="skip_navigation">
getCust(); <ul>
getOpr(); <li>
authChoice($('#newServiceGroup option:selected').val()); <a href="#Content" class="go_content">본문 바로가기</a>
$("#Content").on("keyup", function (key) { </li>
if (key.keyCode == 13) { <li>
fnCustSearchBtn(); <a href="#Gnb">메뉴 바로가기</a>
} </li>
}); </ul>
</div>
//선택 이벤트
$('#newServiceGroup').change(function () {
authChoice($(this).val())
});
// $('.tbl-card-li').each(function () { <section id="Content" class="bot_common">
// $(this).find('.tbl-card-title').on('click', function () { <div class="location">
// $(this).parents('.tbl-card-li').toggleClass('on'); <ul>
// }) <li class="home"><a href="#">HOME</a></li>
// }); <li><a href="#">시스템관리</a></li>
<li><a href="#">사용자관리</a></li>
<li><a href="#">사용자생성</a></li>
</ul>
</div>
//선택 이벤트 <div class="sub_cont">
$('#newCustUser').change(function () { <div class="cont_box">
SelectServiceGroupUpdate($(this).val()) <div class="box_title">
}); <div class="fl">
<h2 class="mt12">사용자 생성</h2>
</div>
</div>
<div class="tbl">
<table class="edit hght">
<colgroup>
<col width="150px">
<col width="auto">
</colgroup>
<tbody>
<tr>
<th class="tl">고객사 <em class="red">*</em></th>
<td>
<div class="sel_box">
<select class="wide" id="newCustUser">
<option value="ALL">전체</option>
</select>
</div>
</td>
</tr>
//서비스그룹 추가 -> 적용버튼 <tr>
$('#btnSaveCust').on('click', function () { <th class="tl">사용자 ID <em class="red">*</em></th>
addServiceGroup(); <td>
// $('.tbl-card-li').each(function () { <div class="ipt_box type-flex">
// // console.log("???"); <input type="text" id="newUserId" name="" class="">
// $(this).find('.tbl-card-title').on('click', function () { <input type="hidden" id="newUserIdYn" value="N" name="" class="">
// $(this).parents('.tbl-card-li').toggleClass('on'); <a href="#" id="doubleCheckBtn" class="btn basic">중복확인</a>
// }) </div>
// }); </td>
</tr>
// console.log($('.tbl-card').find('.tbl-card-li').last()); <tr>
<th class="tl">비밀번호<em class="red">*</em></th>
<td>
<div class="ipt_box">
<input type="password" id="newUserPass" value="" name="" class="">
</div>
<span id="passCheckUi"></span>
</td>
</tr>
<tr>
<th class="tl">비밀번호 확인<em class="red">*</em></th>
<td>
<div class="ipt_box">
<input type="password" id="newUserPassChk" value="" name="" class="">
</div>
<span id="passDoubleCheckUi"></span>
</td>
</tr>
}); <tr>
<th class="tl">이름 <em class="red">*</em></th>
<td>
<div class="ipt_box">
<input type="text" id="newUserName" value="" name="" class="">
</div>
</td>
</tr>
$('#btnSave').on('click', function () { <tr>
// console.log("저장버튼"); <th class="tl">사용여부 <em class="red">*</em></th>
saveBtn(); <td>
}); <div class="sel_box">
$('#btnDel').on('click', function () { <select class="wide" id="newUseYn">
// console.log("삭제버튼"); <option value="Y">Y</option>
delBtn(); <option value="N">N</option>
}); </select>
$('#doubleCheckBtn').on('click', function () { </div>
// console.log("중복확인버튼"); </td>
userDoubleCheck(); </tr>
});
$('#newUserPass').keyup(function (e) { <tr>
newUserPassCheck(e.keyCode) <th class="tl">이메일 주소</th>
}); <td>
<div class="ipt_box">
<input type="text" id="newUserMail" value="" name="" class="">
</div>
</td>
</tr>
<tr>
<th class="tl">핸드폰 번호</th>
<td>
<div class="ipt_box">
<input type="text" id="newUserMobile" value="" name="" class="">
</div>
</td>
</tr>
<tr>
<th class="tl">등급선택</th>
<td>
<div class="sel_box">
<select class="wide" id="newUserRoleVal">
<option value="USER">일반사용자</option>
<option value="USERADMIN">운영자</option>
</select>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="cont_box">
<div class="box_title">
<div class="btn_wrap fr">
<a href="#" id="btnRegModal" rel="reg_modal" class="btn line modalLoad">추가</a>
</div>
</div>
<div class="tbl-card-wrap">
<ul class="tbl-card">
</ul>
</div>
</div>
<div class="cont_box">
<div class="btn_wrap center">
<a href="#" class="btn basic grey" id="btnDel">취소</a>
<a href="#" class="btn basic" id="btnSave">저장</a>
</div>
</div>
</div>
</section>
<div class="modal" id="reg_modal">
<div class="modal_header">
<h3>시나리오그룹 권한</h3>
</div>
<div class="modal_body">
<div class="modal_cont">
<form id="serviceInfo">
<div class="tbl">
<table class="edit hght">
<colgroup>
<col width="150px">
<col width="auto">
<tbody>
<span id="copySpan">
<tr>
<th class="tl">시나리오그룹</th>
<td>
<div class="sel_box">
<select id="newServiceGroup" class="wide">
<option value="ALL">전체</option>
</select>
</div>
</td>
</tr>
</span>
</tbody>
</table>
</div>
</form>
</div>
</div>
<div class="modal_footer">
<div class="btn_wrap fr">
<a href="#" class="btn" id="btnSaveCust">저장</a>
</div>
</div>
<div class="modal_controller">
<a href="#" class="close">close</a>
</div>
</div>
</body>
<script>
$('#newUserPassChk').keyup(function (e) {
newUserDoublePassCheck(e.keyCode)
});
$('.tbl-card').find('.tbl-card-li .title-connect').each(function () {
const submitVal = $(this).val();
if (submitVal.length > 0) {
$(this).parents('.tbl-card-li').find('.title-connected').text(submitVal);
}
$(this).on('keyup', function () {
const thisVal = $(this).val();
if (thisVal.length === 0) {
$(this).parents('.tbl-card-li').find('.title-connected').text('새로운 시나리오 그룹');
} else {
$(this).parents('.tbl-card-li').find('.title-connected').text(thisVal);
}
})
});
}
);
function listgo() { function listgo() {
// document.location.href = "/BotMain_VM/admin/common/system/user/manage.do"; // document.location.href = "/BotMain_VM/admin/common/system/user/manage.do";
@ -546,217 +677,83 @@
return; return;
} }
</script> getCust();
getOpr();
authChoice($('#newServiceGroup option:selected').val());
<body> $("#Content").on("keyup", function (key) {
if (key.keyCode == 13) {
<h1>ICOMSYS ADMIN</h1> fnCustSearchBtn();
<div class="skip_navigation"> }
<ul> });
<li>
<a href="#Content" class="go_content">본문 바로가기</a> //선택 이벤트
</li> $('#newServiceGroup').change(function () {
<li> authChoice($(this).val())
<a href="#Gnb">메뉴 바로가기</a> });
</li>
</ul> // $('.tbl-card-li').each(function () {
</div> // $(this).find('.tbl-card-title').on('click', function () {
// $(this).parents('.tbl-card-li').toggleClass('on');
<header id="header"> // })
</header> // });
<section id="Content" class="bot_common"> //선택 이벤트
<div class="location"> $('#newCustUser').change(function () {
<ul> SelectServiceGroupUpdate($(this).val())
<li class="home"><a href="#">HOME</a></li> });
<li><a href="#">시스템관리</a></li>
<li><a href="#">사용자관리</a></li>
<li><a href="#">사용자생성</a></li> //서비스그룹 추가 -> 적용버튼
</ul> $('#btnSaveCust').on('click', function () {
</div> addServiceGroup();
// $('.tbl-card-li').each(function () {
<div class="sub_cont"> // // console.log("???");
<div class="cont_box"> // $(this).find('.tbl-card-title').on('click', function () {
<div class="box_title"> // $(this).parents('.tbl-card-li').toggleClass('on');
<div class="fl"> // })
<h2 class="mt12">사용자 생성</h2> // });
</div>
</div> // console.log($('.tbl-card').find('.tbl-card-li').last());
<div class="tbl">
<table class="edit hght">
<colgroup> });
<col width="150px">
<col width="auto"> $('#btnSave').on('click', function () {
</colgroup> // console.log("저장버튼");
<tbody> saveBtn();
});
<tr> $('#btnDel').on('click', function () {
<th class="tl">고객사 <em class="red">*</em></th> // console.log("삭제버튼");
<td> delBtn();
<div class="sel_box"> });
<select class="wide" id="newCustUser"> $('#doubleCheckBtn').on('click', function () {
<option value="ALL">전체</option> // console.log("중복확인버튼");
</select> userDoubleCheck();
</div> });
</td>
</tr> $('#newUserPass').keyup(function (e) {
newUserPassCheck(e.keyCode)
<tr> });
<th class="tl">사용자 ID <em class="red">*</em></th>
<td> $('#newUserPassChk').keyup(function (e) {
<div class="ipt_box type-flex"> newUserDoublePassCheck(e.keyCode)
<input type="text" id="newUserId" name="" class=""> });
<input type="hidden" id="newUserIdYn" value="N" name="" class=""> $('.tbl-card').find('.tbl-card-li .title-connect').each(function () {
<a href="#" id="doubleCheckBtn" class="btn basic">중복확인</a> const submitVal = $(this).val();
</div> if (submitVal.length > 0) {
</td> $(this).parents('.tbl-card-li').find('.title-connected').text(submitVal);
</tr> }
$(this).on('keyup', function () {
<tr> const thisVal = $(this).val();
<th class="tl">비밀번호<em class="red">*</em></th> if (thisVal.length === 0) {
<td> $(this).parents('.tbl-card-li').find('.title-connected').text('새로운 시나리오 그룹');
<div class="ipt_box"> } else {
<input type="password" id="newUserPass" value="" name="" class=""> $(this).parents('.tbl-card-li').find('.title-connected').text(thisVal);
</div> }
<span id="passCheckUi"></span> })
</td> });
</tr>
<tr>
<th class="tl">비밀번호 확인<em class="red">*</em></th>
<td>
<div class="ipt_box">
<input type="password" id="newUserPassChk" value="" name="" class="">
</div>
<span id="passDoubleCheckUi"></span>
</td>
</tr>
<tr>
<th class="tl">이름 <em class="red">*</em></th>
<td>
<div class="ipt_box">
<input type="text" id="newUserName" value="" name="" class="">
</div>
</td>
</tr>
<tr>
<th class="tl">사용여부 <em class="red">*</em></th>
<td>
<div class="sel_box">
<select class="wide" id="newUseYn">
<option value="Y">Y</option>
<option value="N">N</option>
</select>
</div>
</td>
</tr>
<tr>
<th class="tl">이메일 주소</th>
<td>
<div class="ipt_box">
<input type="text" id="newUserMail" value="" name="" class="">
</div>
</td>
</tr>
<tr>
<th class="tl">핸드폰 번호</th>
<td>
<div class="ipt_box">
<input type="text" id="newUserMobile" value="" name="" class="">
</div>
</td>
</tr>
<tr>
<th class="tl">등급선택</th>
<td>
<div class="sel_box">
<select class="wide" id="newUserRoleVal">
<option value="USER">일반사용자</option>
<option value="USERADMIN">운영자</option>
</select>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="cont_box">
<div class="box_title">
<div class="btn_wrap fr">
<a href="#" id="btnRegModal" rel="reg_modal" class="btn line modalLoad">추가</a>
</div>
</div>
<div class="tbl-card-wrap">
<ul class="tbl-card">
</ul>
</div>
</div>
<div class="cont_box">
<div class="btn_wrap center">
<a href="#" class="btn basic grey" id="btnDel">취소</a>
<a href="#" class="btn basic" id="btnSave">저장</a>
</div>
</div>
</div>
</section>
<div class="modal" id="reg_modal">
<div class="modal_header">
<h3>시나리오그룹 권한</h3>
</div>
<div class="modal_body">
<div class="modal_cont">
<form id="serviceInfo">
<div class="tbl">
<table class="edit hght">
<colgroup>
<col width="150px">
<col width="auto">
<tbody>
<span id="copySpan">
<tr>
<th class="tl">시나리오그룹</th>
<td>
<div class="sel_box">
<select id="newServiceGroup" class="wide">
<option value="ALL">전체</option>
</select>
</div>
</td>
</tr>
</span>
</tbody>
</table>
</div>
</form>
</div>
</div>
<div class="modal_footer">
<div class="btn_wrap fr">
<a href="#" class="btn" id="btnSaveCust">저장</a>
</div>
</div>
<div class="modal_controller">
<a href="#" class="close">close</a>
</div>
</div>
</body> </script>

@ -3,76 +3,201 @@
<title>사용자관리</title> <title>사용자관리</title>
</head> </head>
<body>
<script> <h1>ICOMSYS ADMIN</h1>
$(document).ready(function () { <div class="skip_navigation">
<ul>
<li>
<a href="#Content" class="go_content">본문 바로가기</a>
</li>
<li>
<a href="#Gnb">메뉴 바로가기</a>
</li>
</ul>
</div>
getOpr(); <section id="Content" class="bot_common">
<div class="location">
<ul>
<li class="home"><a href="#">HOME</a></li>
<li><a href="#">시스템관리</a></li>
<li><a href="#">사용자관리</a></li>
</ul>
</div>
getQueryString(); <div class="sub_cont">
getViewPageData(); <div class="cont_box">
authChoice($('#newServiceGroup option:selected').val()); <div class="box_title">
<div class="fl">
<h2 class="mt12">사용자 수정</h2>
</div>
</div>
<div class="tbl">
<table class="edit hght">
<colgroup>
<col width="150px">
<col width="auto">
</colgroup>
<tbody>
$("#Content").on("keyup", function (key) { <tr>
if (key.keyCode == 13) { <th class="tl">사용자 ID <em class="red">*</em></th>
fnCustSearchBtn(); <td>
} <div class="ipt_box type-flex">
}); <input type="hidden" id="updateUserSeq" name="" class="" readonly>
<input type="text" id="updateUserId" value="아이디아이이" name="" class="" readonly>
</div>
</td>
</tr>
//선택 이벤트 <tr>
$('#newServiceGroup').change(function () { <th class="tl">비밀번호 변경<em class="red">*</em></th>
authChoice($(this).val()) <td>
}); <div class="ipt_box">
<input type="password" id="updateUserPass" value="" name="" class="">
</div>
</td>
</tr>
$("#Content").on("keyup", function (key) { <tr>
if (key.keyCode == 13) { <th class="tl">비밀번호 오류회수<em class="red">*</em></th>
fnCustSearchBtn(); <td>
} <div class="ipt_box type-flex">
}) <input type="text" id="updateLoginCheck" value="" name="" class="" readonly>
<a href="#" id="failCheckBtn" class="btn basic">오류회수 초기화</a>
</div>
</td>
</tr>
$('#btnSave').on('click', function () { <tr>
// console.log("저장버튼"); <th class="tl">이름 <em class="red">*</em></th>
saveBtn(); <td>
}); <div class="ipt_box">
$('#btnDel').on('click', function () { <input type="text" id="updateUserName" value="홍길동" name="" class="">
// console.log("취소버튼"); </div>
delBtn(); </td>
}); </tr>
function delBtn() { <tr>
listgo(); <th class="tl">사용여부 <em class="red">*</em></th>
} <td>
<div class="sel_box">
<select class="wide" id="updateUseYn">
<option value="Y">Y</option>
<option value="N">N</option>
</select>
</div>
</td>
</tr>
function listgo() { <tr>
// document.location.href = "/BotMain_VM/admin/common/system/user/manage.do"; <th class="tl">이메일 주소</th>
document.location.href = '/admin/common/system/user/manage.do'; <td>
} <div class="ipt_box">
<input type="text" value="" id="updateEmail" name="" class="">
</div>
</td>
</tr>
//서비스그룹 추가 -> 적용버튼 <tr>
$('#btnSaveCust').on('click', function () { <th class="tl">핸드폰 번호</th>
addServiceGroup(); <td>
// $('.tbl-card-li').each(function () { <div class="ipt_box">
// // console.log("???"); <input type="text" value="" id="updateMobile" name="" class="">
// $(this).find('.tbl-card-title').on('click', function () { </div>
// $(this).parents('.tbl-card-li').toggleClass('on'); </td>
// }) </tr>
// });
// console.log($('.tbl-card').find('.tbl-card-li').last()); <tr>
// $('.tbl-card').find('.tbl-card-li').last() <th class="tl">등급선택</th>
$('.tbl-card').find('.tbl-card-title').last() <td>
.on('click', function () { <div class="sel_box">
$(this).parents('.tbl-card-li').toggleClass('on') <select class="wide" id="updateRoleVal">
} <option value="USER">일반사용자</option>
); <option value="USERADMIN">운영자</option>
}); </select>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="cont_box">
$('#failCheckBtn').on('click', function () { <div class="box_title">
failCheckBtn(); <div class="btn_wrap fr">
}); <a href="#" id="btnRegModal" rel="reg_modal" class="btn line modalLoad">추가</a>
</div>
</div>
<div class="tbl-card-wrap">
<ul class="tbl-card">
</ul>
</div>
</div>
<div class="cont_box">
<div class="btn_wrap center">
<a href="#" class="btn basic grey" id="btnDel">취소</a>
<a href="#" class="btn basic" id="btnSave">저장</a>
</div>
</div>
</div>
</section>
<div class="modal" id="reg_modal">
<div class="modal_header">
<h3>시나리오그룹 권한</h3>
</div>
<div class="modal_body">
<div class="modal_cont">
<form id="serviceInfo">
<div class="tbl">
<table class="edit hght">
<colgroup>
<col width="150px">
<col width="auto">
<tbody>
<span id="copySpan">
<tr>
<th class="tl">시나리오그룹</th>
<td>
<div class="sel_box">
<select id="newServiceGroup" class="wide">
<option value="ALL">전체</option>
</select>
</div>
</td>
</tr>
</span>
</tbody>
</table>
</div>
</form>
</div>
</div>
<div class="modal_footer">
<div class="btn_wrap fr">
<a href="#" class="btn" id="btnSaveCust">저장</a>
</div>
</div>
<div class="modal_controller">
<a href="#" class="close">close</a>
</div>
</div>
</body>
<script>
});
function getUv() { function getUv() {
$.ajax({ $.ajax({
@ -509,202 +634,68 @@
} }
</script> getOpr();
getQueryString();
getViewPageData();
<body> authChoice($('#newServiceGroup option:selected').val());
$("#Content").on("keyup", function (key) {
<h1>ICOMSYS ADMIN</h1> if (key.keyCode == 13) {
<div class="skip_navigation"> fnCustSearchBtn();
<ul> }
<li> });
<a href="#Content" class="go_content">본문 바로가기</a> //선택 이벤트
</li> $('#newServiceGroup').change(function () {
<li> authChoice($(this).val())
<a href="#Gnb">메뉴 바로가기</a> });
</li> $("#Content").on("keyup", function (key) {
</ul> if (key.keyCode == 13) {
</div> fnCustSearchBtn();
}
<header id="header"> })
</header>
<section id="Content" class="bot_common">
<div class="location">
<ul>
<li class="home"><a href="#">HOME</a></li>
<li><a href="#">시스템관리</a></li>
<li><a href="#">사용자관리</a></li>
</ul>
</div>
<div class="sub_cont">
<div class="cont_box">
<div class="box_title">
<div class="fl">
<h2 class="mt12">사용자 수정</h2>
</div>
</div>
<div class="tbl">
<table class="edit hght">
<colgroup>
<col width="150px">
<col width="auto">
</colgroup>
<tbody>
<tr>
<th class="tl">사용자 ID <em class="red">*</em></th>
<td>
<div class="ipt_box type-flex">
<input type="hidden" id="updateUserSeq" name="" class="" readonly>
<input type="text" id="updateUserId" value="아이디아이이" name="" class="" readonly>
</div>
</td>
</tr>
<tr>
<th class="tl">비밀번호 변경<em class="red">*</em></th>
<td>
<div class="ipt_box">
<input type="password" id="updateUserPass" value="" name="" class="">
</div>
</td>
</tr>
<tr>
<th class="tl">비밀번호 오류회수<em class="red">*</em></th>
<td>
<div class="ipt_box type-flex">
<input type="text" id="updateLoginCheck" value="" name="" class="" readonly>
<a href="#" id="failCheckBtn" class="btn basic">오류회수 초기화</a>
</div>
</td>
</tr>
<tr>
<th class="tl">이름 <em class="red">*</em></th>
<td>
<div class="ipt_box">
<input type="text" id="updateUserName" value="홍길동" name="" class="">
</div>
</td>
</tr>
<tr>
<th class="tl">사용여부 <em class="red">*</em></th>
<td>
<div class="sel_box">
<select class="wide" id="updateUseYn">
<option value="Y">Y</option>
<option value="N">N</option>
</select>
</div>
</td>
</tr>
<tr>
<th class="tl">이메일 주소</th>
<td>
<div class="ipt_box">
<input type="text" value="" id="updateEmail" name="" class="">
</div>
</td>
</tr>
<tr>
<th class="tl">핸드폰 번호</th>
<td>
<div class="ipt_box">
<input type="text" value="" id="updateMobile" name="" class="">
</div>
</td>
</tr>
<tr>
<th class="tl">등급선택</th>
<td>
<div class="sel_box">
<select class="wide" id="updateRoleVal">
<option value="USER">일반사용자</option>
<option value="USERADMIN">운영자</option>
</select>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="cont_box">
<div class="box_title"> $('#btnSave').on('click', function () {
<div class="btn_wrap fr"> // console.log("저장버튼");
<a href="#" id="btnRegModal" rel="reg_modal" class="btn line modalLoad">추가</a> saveBtn();
</div> });
</div> $('#btnDel').on('click', function () {
// console.log("취소버튼");
delBtn();
});
<div class="tbl-card-wrap"> function delBtn() {
<ul class="tbl-card"> listgo();
</ul> }
</div>
</div> function listgo() {
<div class="cont_box"> // document.location.href = "/BotMain_VM/admin/common/system/user/manage.do";
<div class="btn_wrap center"> document.location.href = '/admin/common/system/user/manage.do';
<a href="#" class="btn basic grey" id="btnDel">취소</a> }
<a href="#" class="btn basic" id="btnSave">저장</a>
</div>
</div>
</div>
</section>
<div class="modal" id="reg_modal"> //서비스그룹 추가 -> 적용버튼
<div class="modal_header"> $('#btnSaveCust').on('click', function () {
<h3>시나리오그룹 권한</h3> addServiceGroup();
</div> // $('.tbl-card-li').each(function () {
<div class="modal_body"> // // console.log("???");
<div class="modal_cont"> // $(this).find('.tbl-card-title').on('click', function () {
<form id="serviceInfo"> // $(this).parents('.tbl-card-li').toggleClass('on');
<div class="tbl"> // })
<table class="edit hght"> // });
<colgroup>
<col width="150px">
<col width="auto">
<tbody>
<span id="copySpan">
<tr>
<th class="tl">시나리오그룹</th>
<td>
<div class="sel_box">
<select id="newServiceGroup" class="wide">
<option value="ALL">전체</option>
</select>
</div>
</td>
</tr>
</span> // console.log($('.tbl-card').find('.tbl-card-li').last());
</tbody> // $('.tbl-card').find('.tbl-card-li').last()
</table> $('.tbl-card').find('.tbl-card-title').last()
</div> .on('click', function () {
</form> $(this).parents('.tbl-card-li').toggleClass('on')
</div> }
</div> );
});
<div class="modal_footer">
<div class="btn_wrap fr">
<a href="#" class="btn" id="btnSaveCust">저장</a>
</div>
</div>
<div class="modal_controller"> $('#failCheckBtn').on('click', function () {
<a href="#" class="close">close</a> failCheckBtn();
</div> });
</div>
</body> </script>

@ -1,11 +1,7 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html>
<html> <html>
<head> <head>
<meta charset="UTF-8"> <meta charset="UTF-8">
<title>인텐트날짜별통계</title> <title>인텐트날짜별통계</title>
<%@ include file="/WEB-INF/jsp/adm/include/topLinkTag.jsp"%>
</head> </head>
<script type="text/javascript"> <script type="text/javascript">
@ -52,12 +48,8 @@
</ul> </ul>
</div> </div>
<header id="header">
<%@ include file="/WEB-INF/jsp/adm/include/header.jsp"%>
</header>
<c:import url="/adm/menu/getLnbMenu.do" />
<script type="text/javascript" src="<c:url value='/aajs/statisticsIntentDay.js' />"></script> <script type="text/javascript" src='/aajs/statisticsIntentDay.js'></script>
<h1>DASH BOARD</h1> <h1>DASH BOARD</h1>

@ -8,6 +8,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=3.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=3.0">
<meta name="mobile-web-app-capable" content="yes"> <meta name="mobile-web-app-capable" content="yes">
<meta name="format-detection" content="telephone=no"/> <meta name="format-detection" content="telephone=no"/>
<link rel="stylesheet" type="text/css" th:href="@{/lib/assets/css/lib/jquery-ui.css}"> <link rel="stylesheet" type="text/css" th:href="@{/lib/assets/css/lib/jquery-ui.css}">
<link rel="stylesheet" type="text/css" th:href="@{/lib/assets/css/lib/bootstrap.min.css}"> <link rel="stylesheet" type="text/css" th:href="@{/lib/assets/css/lib/bootstrap.min.css}">
<link rel="stylesheet" type="text/css" th:href="@{/lib/assets/css/lib/bootstrap-datetimepicker.min.css}"> <link rel="stylesheet" type="text/css" th:href="@{/lib/assets/css/lib/bootstrap-datetimepicker.min.css}">
@ -41,129 +42,241 @@
<script th:src="@{/lib/assets/js/lib/d3.js}"></script> <script th:src="@{/lib/assets/js/lib/d3.js}"></script>
<script th:src="@{/lib/new/assets/js/lib/billboard.pkgd.min.js}"></script> <script th:src="@{/lib/new/assets/js/lib/billboard.pkgd.min.js}"></script>
<script th:src="@{/js/utils.js}"></script> <script th:src="@{/js/utils.js}"></script>
<script type="text/javascript"> </head>
function getToken() {
var cookies = document.cookie.split(';'); <style th:inline="text">
var token = ''; /*#pdfdown{*/
/* background-image: url("/lib/assets/images/ico-menual-download.png");*/
/* background-repeat: no-repeat;*/
/*}*/
header .login_info .user_info ul li a.user_info_btn.menual:after {
top: 12px;
left: 7px;
width: 22px;
height: 20px;
/*background: url("/lib/assets/images/ico-menual-download.png") center center / contain no-repeat;*/
/*background: url("@{}") center center / contain no-repeat;*/
background-position: center center;
}
</style>
<header id="header">
<div class="header_wrap">
<div class="logo">
<!-- <a href="<c:url value='/admin/common/dashboard/manage.do'/>">-->
<img th:src='@{/lib/assets/images/logo.png}'>
</a>
</div>
<div class="global-select-ai sel_box">
<div class="global-store-logo"><img class="ai-store-logo"
th:src="@{/lib/assets/images/img-bot.png}"
alt=""></div>
<div class="global-store-slt">
<select class="wide" id="mainOpr">
</select>
</div>
</div>
<div class="login_info">
<div class="user_name">
<input type="hidden" id="naviseq">
<a class="user_name_btn" href="#">
<!-- <em class="user_name_btn">${LoginVO.userName}</em> 님 반갑습니다.-->
<em class="user_name_btn">이름!!</em> 님 반갑습니다.
</a>
</div>
<div class="user_info">
<ul class="logininfotitle">
<li>
<a href="#" class="user_info_btn" id="pwdChange">비밀번호변경</a>
</li>
<li>
<a th:href="@{/adm/main/pdfdownload?name=Ourstore_Ai_Manager_User_Manual_v1.pdf}"
target="_blank"
class="user_info_btn menual" id="pdfdown">메뉴얼다운로드</a>
</li>
<li>
<a href="#" class="user_info_btn" id="logout">로그아웃</a>
</li>
</ul>
</div>
</div>
</div>
</header>
cookies.forEach(function(cookie) { <script type="text/javascript">
if(cookie.split('=')[0] == 'accessToken') { function getToken() {
var cookies = document.cookie.split(';');
var token = '';
cookies.forEach(function (cookie) {
if (cookie.split('=')[0] == 'accessToken') {
token = cookie.split('=')[1];
}
});
//시간체크
var tmpVal = parseJwt(token);
var now = Date.now();
if (tmpVal.exp < parseInt(now.toString().substring(0, 10))) {
//시간 지났으면 checkToken -> 서버사이드 토큰 갱신
checkToken();
cookies = document.cookie.split(';');
cookies.forEach(function (cookie) {
if (cookie.split('=')[0] == 'accessToken') {
token = cookie.split('=')[1]; token = cookie.split('=')[1];
} }
}); });
}
return 'Bearer ' + token;
}
function checkToken() {
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
datatype: "JSON",
url: "<c:url value='토큰 갱신 url'/>",
data: JSON.stringify(data)
}).complete(function (data) {
if (data.status == 200) {
//refreshToken 유효 시
document.cookie = 'accessToken=' + data.responseText + '; path=/;';
}
if (data.status == 400) {
// 로그인 페이지로 이동
window.location.href = '/adm/signin/signin';
}
});
}
//function accessToken 갱신요청
//시간체크 function parseJwt(token) {
var tmpVal = parseJwt(token); var base64Url = token.split('.')[1];
var now = Date.now(); var base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/');
var jsonPayload = decodeURIComponent(window.atob(base64).split('').map(function (c) {
return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);
}).join(''));
return JSON.parse(jsonPayload);
}
if (tmpVal.exp < parseInt(now.toString().substring(0, 10))) {
//시간 지났으면 checkToken -> 서버사이드 토큰 갱신
checkToken();
cookies = document.cookie.split(';'); // function getUv() {
// var uv = $.ajax({
// type: "GET",
// contentType: "application/json; charset=utf-8",
// datatype: "JSON",
// url: '/adm/main/uv',
// success: function (data) {
// $('#naviseq').val(data.userSeq);
// return data;
// },
// error: function (){
// alert("NO SESSION");
// document.location.href = '/adm/main/egovLoginUsr.do';
// }
// })
// return uv;
//
// }
cookies.forEach(function(cookie) { function getMainOpr() {
if(cookie.split('=')[0] == 'accessToken') { $.ajax({
token = cookie.split('=')[1]; type: "GET"
,contentType: "application/json; charset=utf-8"
,datatype: "JSON"
,async: false
,url: '/api/v1/token/main/oprmng'
, headers: {'Authorization': getToken()}
,success: function (data) {
// console.log(JSON.stringify("main ? "+data))
data.forEach(function (e, f) {
if (e.serviceGroup == '${UserVO.lastUseServiceGroup}') {
$('#mainOpr').append("<option value=" + e.serviceGroup + " selected>" + e.serviceGroupName + "</option>");
} else {
$('#mainOpr').append("<option value=" + e.serviceGroup + ">" + e.serviceGroupName + "</option>");
} }
}); });
$('#mainOpr').niceSelect('update');
},
error: function () {
window.location.href = '/adm/signin/signin';
} }
})
};
return token; function getMainOprUpdate(data) {
} $.ajax({
type: "POST"
, contentType: "application/json; charset=utf-8"
, datatype: "JSON"
, url: '/api/v1/token/menu/main/oprmng/update'
, data: JSON.stringify(data)
, headers: {'Authorization': getToken()}
}).complete(function (data) {
// console.log(data.status);
if (data.status == 200) {
$('#mainOpr').niceSelect('update');
window.location.href = '/adm/main/actionMain.do';
}
if (data.status == 400) {
// swalAlert('info', "이미 존재하는 코드입니다");
}
});
};
function checkToken() {
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
datatype: "JSON",
url: "<c:url value='토큰 갱신 url'/>",
data: JSON.stringify(data)
}).complete(function (data) {
if (data.status == 200) {
//refreshToken 유효 시
document.cookie = 'accessToken=' + data.responseText + '; path=/;';
}
if (data.status == 400) {
// 로그인 페이지로 이동
window.location.href = "<c:url value='/adm/signin/signin'/>";
}
});
}
//function accessToken 갱신요청 function getContextPath() {
return sessionStorage.contextPath;
}
function parseJwt(token) { // function checkPermissionPolicy(policyName) {
var base64Url = token.split('.')[1]; // let pTemp = '<c:out value="${sessionScope.PolicyList}" />';
var base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/'); // let sPolicyList = pTemp.substr(1, pTemp.length - 2).split(", ");
var jsonPayload = decodeURIComponent(window.atob(base64).split('').map(function(c) { //
return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2); // return sPolicyList.indexOf(policyName) === -1 ? false : true;
}).join('')); // }
return JSON.parse(jsonPayload); function getUv() {
} var uv = $.ajax({
</script> type: "GET"
</head> ,contentType: "application/json; charset=utf-8"
,datatype: "JSON"
,url: '/api/v1/token/main/uv'
, headers: {'Authorization': getToken()}
,success: function (data) {
$('#naviseq').val(data.userSeq);
return data;
},
error: function () {
document.location.href = '/adm/main/egovLoginUsr.do';
}
})
return uv;
}
<style th:inline="text">
/*#pdfdown{*/
/* background-image: url("/lib/assets/images/ico-menual-download.png");*/
/* background-repeat: no-repeat;*/
/*}*/
header .login_info .user_info ul li a.user_info_btn.menual:after {
top: 12px;
left: 7px;
width: 22px;
height: 20px;
/*background: url("/lib/assets/images/ico-menual-download.png") center center / contain no-repeat;*/
/*background: url("@{}") center center / contain no-repeat;*/
background-position: center center;
}
</style>
<header id="header">
<div class="header_wrap">
<div class="logo">
<!-- <a href="<c:url value='/admin/common/dashboard/manage.do'/>">-->
<img th:src='@{/lib/assets/images/logo.png}'>
</a>
</div>
<div class="global-select-ai sel_box"> getMainOpr();
<div class="global-store-logo"><img class="ai-store-logo" getUv();
th:src="@{/lib/assets/images/img-bot.png}" $('#mainOpr').change(function () {
alt=""></div> var json = {};
<div class="global-store-slt"> json.serviceGroup = this.value;
<select class="wide" id="mainOpr"> json.userSeq = $('#naviseq').val();
</select> getMainOprUpdate(json);
</div> });
</div> $('.user_name_btn').on('click', function () {
$('.user_info').toggleClass('on');
});
$('#pwdChange').on('click', function () {
// console.log("비밀번호변경");
document.location.href = '/adm/main/changePwd';
});
$('#logout').on('click', function () {
// console.log("로그아웃");
document.location.href = '/adm/main/egovLoginUsr.do';
});
</script>
<div class="login_info">
<div class="user_name">
<input type="hidden" id="naviseq">
<a class="user_name_btn" href="#">
<!-- <em class="user_name_btn">${LoginVO.userName}</em> 님 반갑습니다.-->
<em class="user_name_btn">이름!!</em> 님 반갑습니다.
</a>
</div>
<div class="user_info">
<ul class="logininfotitle">
<li>
<a href="#" class="user_info_btn" id="pwdChange">비밀번호변경</a>
</li>
<li>
<a th:href="@{/adm/main/pdfdownload?name=Ourstore_Ai_Manager_User_Manual_v1.pdf}"
target="_blank"
class="user_info_btn menual" id="pdfdown">메뉴얼다운로드</a>
</li>
<li>
<a href="#" class="user_info_btn" id="logout">로그아웃</a>
</li>
</ul>
</div>
</div>
</div>
</header>
</th:block> </th:block>
</html> </html>

@ -23,7 +23,7 @@
$(document).ready(function () { $(document).ready(function () {
GetAuth(); GetAuth();
PageControll('/admin/common/dashboard/manage.do'); PageControll('/view/admin/common/dashboard/manage.do');
}).off(lnbEvt()) }).off(lnbEvt())
function GetAuth() { function GetAuth() {
@ -34,31 +34,35 @@
async: false, async: false,
url: '/rest/test5', url: '/rest/test5',
success: function (data) { success: function (data) {
data.forEach(function (e, i) { menuBar(data);
var addMenu = ''; }
if (!(e.level == '0' || e.level == '1') && !$("#menuSeq" + e.seq).length > 0) { })
var menuUrl = "#"; };
if (e.url != '0') {
menuUrl = e.url;
}
addMenu += '<li>'
//+ '<a href=' + menuUrl + '>'
+ '<a value=' + menuUrl + '>'
// + '<a href="'+'javascript:PageControll('+ menuUrl +')">'
+ '<span>'
+ e.menuName + '</span></a>'
+ '<ul class="depth' + e.level + '" id="menuSeq' + e.seq + '">'
+ '</ul>'
+ '</li>'
$('#menuSeq' + e.seqUpper).append(addMenu);
}
})
$(".lnb").on("click", "a", function() {
PageControll($(this).attr("value"));
});
function menuBar(data){
data.forEach(function (e, i) {
var addMenu = '';
if (!(e.level == '0' || e.level == '1') && !$("#menuSeq" + e.seq).length > 0) {
var menuUrl = "#";
if (e.url != '0') {
menuUrl = e.url;
}
addMenu += '<li>'
+ '<a value=' + menuUrl + '>'
+ '<span>'
+ e.menuName + '</span></a>'
+ '<ul class="depth' + e.level + '" id="menuSeq' + e.seq + '">'
+ '</ul>'
+ '</li>'
$('#menuSeq' + e.seqUpper).append(addMenu);
} }
}) })
$(".lnb").on("click", "a", function () {
// $('#pageControll').load(location.href+'#pageControll');
$(window).off("resize");
PageControll($(this).attr("value"));
// $('#pageControll').load(location.href+'#pageControll');
});
}; };
function PageControll(e) { function PageControll(e) {
@ -67,15 +71,14 @@
} }
var redi = ''; var redi = '';
if (e == "" || e == null) { if (e == "" || e == null) {
redi = '/admin/common/dashboard/manage.do' redi = '/view/admin/common/dashboard/manage.do'
} else { } else {
redi = e; redi = e;
} }
$.ajax({ $.ajax({
type: "GET", type: "GET",
contentType: "application/json; charset=utf-8", contentType: "application/json; charset=utf-8",
datatype: "HTML", datatype: "html",
async: false, async: false,
url: redi, url: redi,
success: function (data) { success: function (data) {

@ -3,6 +3,8 @@
xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
layout:decorate="~{layout/layout}"> layout:decorate="~{layout/layout}">
<th:block layout:fragment="content"> <th:block layout:fragment="content">
<script>
</script>
<div id="pageControll"> <div id="pageControll">
</div> </div>
</th:block> </th:block>

@ -74,6 +74,7 @@
fncCheck(); fncCheck();
}); });
}); });
function fncKeyPresshandler(e) { function fncKeyPresshandler(e) {
if (event.keyCode == 13) { if (event.keyCode == 13) {
// fncSend(); // fncSend();
@ -142,9 +143,11 @@
if (data.status == 200) { if (data.status == 200) {
console.log(data); console.log(data);
document.cookie = 'accessToken=' + data.responseText + '; path=/;'; document.cookie = 'accessToken=' + data.responseText + '; path=/;';
console.log("cookie ="+document.cookie) console.log("cookie =" + document.cookie)
document.signinInfoForm.action = '/adm/main/actionSecurityLogin.do'; alert("cookie = " + document.cookie)
document.signinInfoForm.submit(); // document.signinInfoForm.action = '/adm/main/actionSecurityLogin.do';
document.location.href = '/adm/main/actionSecurityLogin.do';
// document.signinInfoForm.submit();
} else if (data.status == 400) { } else if (data.status == 400) {
// alert("비밀번호 5회 실패로 계정이 잠겼습니다. 관리자에게 잠금해제 요청하세요."); // alert("비밀번호 5회 실패로 계정이 잠겼습니다. 관리자에게 잠금해제 요청하세요.");
$.utils.warning("계정이 잠겼습니다. 관리자에게 잠금해제 요청하세요."); $.utils.warning("계정이 잠겼습니다. 관리자에게 잠금해제 요청하세요.");

Loading…
Cancel
Save