토큰 일부 적용 url변경중

dev_tymeleaf
jangwonseokicom 1 year 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.datatype.jsr310.JavaTimeModule;
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.repo.system.TbUserAuthGroupRepo;
import io.jsonwebtoken.*;
import io.jsonwebtoken.io.Decoders;
import io.jsonwebtoken.security.Keys;
import lombok.extern.slf4j.Slf4j;
import org.json.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
@ -21,6 +24,7 @@ import org.springframework.stereotype.Component;
import javax.servlet.http.HttpServletResponse;
import java.security.Key;
import java.time.LocalDateTime;
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Arrays;
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 REFRESH_TOKEN_EXPIRE_TIME = 24 * 60 * 60 * 1000L;
private final Key key;
public TokenProvider(@Value("${spring.jwt.secret}") String secretKey, TbUserAuthGroupRepo tbUserAuthGroupRepo) {
@ -44,11 +47,11 @@ public class TokenProvider {
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()
.map(GrantedAuthority::getAuthority)
.collect(Collectors.joining(","));
// String authorities = authentication.getAuthorities().stream()
// .map(GrantedAuthority::getAuthority)
// .collect(Collectors.joining(","));
long now = (new Date()).getTime();
// Access Token 생성
@ -56,51 +59,52 @@ public class TokenProvider {
Date accessTokenExpiresIn = new Date(now + ACCESS_TOKEN_EXPIRE_TIME); // Todo: Access Token 만료 기간 설정 파일 추가
Claims claims = Jwts.claims()
.setSubject(authentication.getName())
.setExpiration(accessTokenExpiresIn);
claims.put("auth", authorities);
ObjectMapper mapper = new ObjectMapper();
.setSubject(user.getUserName())
.setExpiration(accessTokenExpiresIn);
// claims.put("auth", authorities);
// ObjectMapper mapper = new ObjectMapper();
// claims.put("UserVO", mapper.registerModule(new JavaTimeModule()).writeValueAsString(user.toUserVO()));
try {
JavaTimeModule javaTimeModule = new JavaTimeModule();
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));
claims.put("UserVO", mapper.registerModule(javaTimeModule).writeValueAsString(user.toUserVO()));
// claims.put("PolicyList", tbUserAuthGroupRepo.userPolicyListSelect(user.getUserSeq(), user.getLastUseServiceGroup()));
}
catch (Exception e) {
e.printStackTrace();
}
String accessToken = Jwts.builder()
.setSubject(authentication.getName())
.setClaims(claims)
.setExpiration(accessTokenExpiresIn)
.signWith(key, SignatureAlgorithm.HS256)
.compact();
// try {
// JavaTimeModule javaTimeModule = new JavaTimeModule();
// 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));
// claims.put("UserVO", mapper.registerModule(javaTimeModule).writeValueAsString(user.toUserVO()));
// // claims.put("PolicyList", tbUserAuthGroupRepo.userPolicyListSelect(user.getUserSeq(), user.getLastUseServiceGroup()));
// }
//
// catch (Exception e) {
// e.printStackTrace();
// }
// claims.put("UserVO", user.toUserVO());
String accessToken = createAccessToken(user, accessTokenExpiresIn);
// Refresh Token 생성
String refreshToken = Jwts.builder()
.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();
String refreshToken = createRefreshToken(accessTokenExpiresIn);
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 토큰을 복호화하여 토큰에 들어있는 정보를 꺼내는 메서드
public Authentication getAuthentication(String accessToken) {
// 토큰 복호화
@ -116,8 +120,8 @@ public class TokenProvider {
// 클레임에서 권한 정보 가져오기
Collection<? extends GrantedAuthority> authorities =
Arrays.stream(claims.get("auth").toString().split(","))
.map(SimpleGrantedAuthority::new)
.collect(Collectors.toList());
.map(SimpleGrantedAuthority::new)
.collect(Collectors.toList());
// UserDetails 객체를 만들어서 Authentication 리턴
// UserDetails principal = new User(claims.getSubject(), "", authorities);

@ -54,12 +54,14 @@ public class LoginController {
}
@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");
// return loginService.LoginValidService(loginReq, model);
String url = loginService.LoginValidService(loginReq, model);
log.info("redi url? - -{}", url);
return new ModelAndView(url);
// String url = loginService.LoginValidService(loginReq, model);
// log.info("redi url? - -{}", url);
return new ModelAndView("layout/main");
}
@RequestMapping(value = "/adm/main/actionMain.do")
@ -100,70 +102,6 @@ public class LoginController {
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")
@ -185,16 +123,8 @@ public class LoginController {
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.datatype.jsr310.JavaTimeModule;
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.CustomNotFoundException;
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 lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.catalina.User;
import org.json.JSONObject;
import org.springframework.context.MessageSource;
import org.springframework.data.jpa.repository.config.EnableJpaAuditing;
import org.springframework.http.ResponseEntity;
@ -47,7 +51,10 @@ import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.stream.Collectors;
@ -107,6 +114,7 @@ public class LoginService {
LoginVO userResult = user.toLoginVO();
// return "forward:/adm/main/actionMain.do";
// return "layout/adm/common/dashboard";
return "layout/main";
} else {
@ -172,51 +180,10 @@ public class LoginService {
}
public UserVo getUserVo() {
String payloadJWT = "";
String accessToken = "";
// String bearerToken = httpServletRequest.getHeader("Authorization");
//
// 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);
// }
UserVo user = (UserVo) httpServletRequest.getAttribute("UserVO");
log.info("get User Vo!!!! - {}", new Gson().toJson((user) ));
log.info("get User Vo!!!! - {}", user.getRegistDate());
log.info("get User Vo!!!! - {}", user.getUpdateDate());
return user;
}
@ -450,11 +417,9 @@ public class LoginService {
// 2. 실제 검증 (사용자 비밀번호 체크)이 이루어지는 부분
// authenticate 매서드가 실행될 때 CustomUserDetailsService 에서 만든 loadUserByUsername 메서드가 실행
try {
Authentication authentication = authenticationManagerBuilder.getObject().authenticate(authenticationToken);
// Authentication authentication = authenticationManagerBuilder.getObject().authenticate(authenticationToken);
// 3. 인증 정보를 기반으로 JWT 토큰 생성
String accessToken = tokenProvider.generateToken(authentication, user);
String accessToken = tokenProvider.generateToken(user);
return accessToken;
} catch (JsonProcessingException e) {
throw new RuntimeException(e);

@ -1,4 +1,29 @@
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 {
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, "대쉬보드", "대쉬보드", "0"),
rcpconversation("rcp", 1800000L, 1L, 2, "대화관리", "대화관리", "0"),
rcpconversationintentmanage("rcp", 1800001L, 1800000L, 3, "인텐트관리", "인텐트관리", "/admin/rcp/conversation/intent/manage.do"),
rcpconversationscenariomanage("rcp", 1800002L, 1800000L, 3, "시나리오관리", "시나리오관리", "/admin/rcp/conversation/scenario/manage.do"),
rcpconversationsynonymmanage("rcp", 1800003L, 1800000L, 3, "동의어관리", "동의어관리", "/admin/rcp/conversation/synonym/manage.do"),
rcpconversationsystemEntitymanage("rcp", 1800004L, 1800000L, 3, "시스템엔티티", "시스템엔티티", "/admin/rcp/conversation/systemEntity/manage.do"),
rcpconversationapiNodemanage("rcp", 1800005L, 1800000L, 3, "API노드관리", "API노드관리", "/admin/rcp/conversation/apiNode/manage.do"),
rcpconversationcmmNodemanage("rcp", 1800006L, 1800000L, 3, "COMMON노드관리", "COMMON노드관리", "/admin/rcp/conversation/cmmNode/manage.do"),
rcpconversationintentmanage("rcp", 1800001L, 1800000L, 3, "인텐트관리", "인텐트관리", "/view/admin/rcp/conversation/intent/manage.do"),
rcpconversationscenariomanage("rcp", 1800002L, 1800000L, 3, "시나리오관리", "시나리오관리", "/view/admin/rcp/conversation/scenario/manage.do"),
rcpconversationsynonymmanage("rcp", 1800003L, 1800000L, 3, "동의어관리", "동의어관리", "/view/admin/rcp/conversation/synonym/manage.do"),
rcpconversationsystemEntitymanage("rcp", 1800004L, 1800000L, 3, "시스템엔티티", "시스템엔티티", "/view/admin/rcp/conversation/systemEntity/manage.do"),
rcpconversationapiNodemanage("rcp", 1800005L, 1800000L, 3, "API노드관리", "API노드관리", "/view/admin/rcp/conversation/apiNode/manage.do"),
rcpconversationcmmNodemanage("rcp", 1800006L, 1800000L, 3, "COMMON노드관리", "COMMON노드관리", "/view/admin/rcp/conversation/cmmNode/manage.do"),
rcplearningTest("rcp", 1900000L, 1L, 2, "학습및테스트", "학습및테스트", "0"),
rcplearningTestsimulatormanage("rcp", 1900001L, 1900000L, 3, "시뮬레이터", "시뮬레이터", "/admin/rcp/learningTest/simulator/manage.do"),
rcplearningTestinferencemanage("rcp", 1900002L, 1900000L, 3, "의도추론 테스트", "의도추론 테스트", "/admin/rcp/learningTest/inference/manage.do"),
rcplearningTeststttestmanage("rcp", 1900003L, 1900000L, 3, "STT 테스트", "STT 테스트", "/admin/rcp/learningTest/stttest/manage.do"),
rcplearningTestttstestmanage("rcp", 1900004L, 1900000L, 3, "TTS 테스트", "TTS 테스트", "/admin/rcp/learningTest/ttstest/manage.do"),
rcplearningTestsimulatormanage("rcp", 1900001L, 1900000L, 3, "시뮬레이터", "시뮬레이터", "/view/admin/rcp/learningTest/simulator/manage.do"),
rcplearningTestinferencemanage("rcp", 1900002L, 1900000L, 3, "의도추론 테스트", "의도추론 테스트", "/view/admin/rcp/learningTest/inference/manage.do"),
rcplearningTeststttestmanage("rcp", 1900003L, 1900000L, 3, "STT 테스트", "STT 테스트", "/view/admin/rcp/learningTest/stttest/manage.do"),
rcplearningTestttstestmanage("rcp", 1900004L, 1900000L, 3, "TTS 테스트", "TTS 테스트", "/view/admin/rcp/learningTest/ttstest/manage.do"),
rcpmonitoring("rcp", 2000000L, 1L, 2, "모니터링", "모니터링", "0"),
rcpmonitoringconsultingmanage("rcp", 2000001L, 2000000L, 3, "응대이력", "응대이력", "/admin/rcp/statistics/monitoring/consulting/manage.do"),
rcpmonitoringconversationMarkmanage("rcp", 2000002L, 2000000L, 3, "대화책갈피", "대화책갈피", "/admin/rcp/statistics/monitoring/conversationMark/manage.do"),
rcpmonitoringintentAnalysismanage("rcp", 2000003L, 2000000L, 3, "인텐트분석관리", "인텐트분석관리", "/admin/rcp/statistics/monitoring/intentAnalysis/manage.do"),
rcpmonitoringoutscenariomanage("rcp", 2000004L, 2000000L, 3, "시나리오이탈노드관리", "시나리오이탈노드관리", "/admin/rcp/statistics/monitoring/outscenario/manage.do"),
rcpmonitoringworkhistorymanage("rcp", 2000005L, 2000000L, 3, "작업이력조회", "작업이력조회", "/admin/rcp/statistics/monitoring/workhistory/manage.do"),
rcpmonitoringaienginemanage("rcp", 2000006L, 2000000L, 3, "AI엔진 트래픽모니터링", "AI엔진 트래픽모니터링", "/admin/rcp/statistics/monitoring/aiengine/manage.do"),
rcpmonitoringconsultingmanage("rcp", 2000001L, 2000000L, 3, "응대이력", "응대이력", "/view/admin/rcp/statistics/monitoring/consulting/manage.do"),
rcpmonitoringconversationMarkmanage("rcp", 2000002L, 2000000L, 3, "대화책갈피", "대화책갈피", "/view/admin/rcp/statistics/monitoring/conversationMark/manage.do"),
rcpmonitoringintentAnalysismanage("rcp", 2000003L, 2000000L, 3, "인텐트분석관리", "인텐트분석관리", "/view/admin/rcp/statistics/monitoring/intentAnalysis/manage.do"),
rcpmonitoringoutscenariomanage("rcp", 2000004L, 2000000L, 3, "시나리오이탈노드관리", "시나리오이탈노드관리", "/view/admin/rcp/statistics/monitoring/outscenario/manage.do"),
rcpmonitoringworkhistorymanage("rcp", 2000005L, 2000000L, 3, "작업이력조회", "작업이력조회", "/view/admin/rcp/statistics/monitoring/workhistory/manage.do"),
rcpmonitoringaienginemanage("rcp", 2000006L, 2000000L, 3, "AI엔진 트래픽모니터링", "AI엔진 트래픽모니터링", "/view/admin/rcp/statistics/monitoring/aiengine/manage.do"),
rcpstatistics("rcp", 2100000L, 1L, 2, "통계", "통계", "0"),
rcpstatisticsintent("rcp", 2100100L, 2100000L, 3, "인텐트통계", "인텐트통계", "0"),
rcpstatisticsintentdaymanage("rcp", 2100101L, 2100100L, 4, "날짜별통계", "인텐트날짜별통계", "/admin/rcp/statistics/intent/day/manage.do"),
rcpstatisticsintentitemmanage("rcp", 2100102L, 2100100L, 4, "항목별통계", "인텐트항목별통계", "/admin/rcp/statistics/intent/item/manage.do"),
rcpstatisticsintentdaymanage("rcp", 2100101L, 2100100L, 4, "날짜별통계", "인텐트날짜별통계", "/view/admin/rcp/statistics/intent/day/manage.do"),
rcpstatisticsintentitemmanage("rcp", 2100102L, 2100100L, 4, "항목별통계", "인텐트항목별통계", "/view/admin/rcp/statistics/intent/item/manage.do"),
rcpstatisticsscenario("rcp", 2100200L, 2100000L, 3, "시나리오통계", "시나리오통계", "0"),
rcpstatisticsscenariodaymanage("rcp", 2100201L, 2100200L, 4, "날짜별통계", "시나리오날짜별통계", "/admin/rcp/statistics/scenario/day/manage.do"),
rcpstatisticsscenarioitemmanage("rcp", 2100202L, 2100200L, 4, "항목별통계", "시나리오항목별통계", "/admin/rcp/statistics/scenario/item/manage.do"),
rcpstatisticsscenariodaymanage("rcp", 2100201L, 2100200L, 4, "날짜별통계", "시나리오날짜별통계", "/view/admin/rcp/statistics/scenario/day/manage.do"),
rcpstatisticsscenarioitemmanage("rcp", 2100202L, 2100200L, 4, "항목별통계", "시나리오항목별통계", "/view/admin/rcp/statistics/scenario/item/manage.do"),
rcpstatisticscall("rcp", 2100300L, 2100000L, 3, "콜통계", "콜통계", "0"),
rcpstatisticscallinfomanage("rcp", 2100301L, 2100300L, 4, "콜통계", "콜통계", "/admin/rcp/statistics/call/info/manage.do"),
rcpstatisticsaienginemanage("rcp", 2100302L, 2100300L, 4, "AI엔진통계", "AI엔진통계", "/admin/rcp/statistics/call/aiengine/manage.do"),
rcpstatisticsdashboardmanage("rcp", 2100400L, 2100000L, 3, "대쉬보드", "대쉬보드", "/admin/common/dashboard/manage.do"),
rcpstatisticscallinfomanage("rcp", 2100301L, 2100300L, 4, "콜통계", "콜통계", "/view/admin/rcp/statistics/call/info/manage.do"),
rcpstatisticsaienginemanage("rcp", 2100302L, 2100300L, 4, "AI엔진통계", "AI엔진통계", "/view/admin/rcp/statistics/call/aiengine/manage.do"),
rcpstatisticsdashboardmanage("rcp", 2100400L, 2100000L, 3, "대쉬보드", "대쉬보드", "/view/admin/common/dashboard/manage.do"),
rcpoprmanage("rcp", 2200000L, 1L, 2, "운영관리", "운영관리", "0"),
rcpoprmanagenlpSettingmanage("rcp", 2200001L, 2200000L, 3, "NLP설정", "NLP설정", "/admin/rcp/oprmanage/nlpSetting/manage.do"),
rcpoprmanagebgmmanage("rcp", 2200002L, 2200000L, 3, "배경음관리", "배경음관리", "/admin/rcp/oprmanage/bgm/manage.do"),
rcpoprmanagettstagmanage("rcp", 2200003L, 2200000L, 3, "TTS태그관리", "TTS태그관리", "/admin/rcp/oprmanage/ttstag/manage.do"),
rcpoprmanagenlpSettingmanage("rcp", 2200001L, 2200000L, 3, "NLP설정", "NLP설정", "/view/admin/rcp/oprmanage/nlpSetting/manage.do"),
rcpoprmanagebgmmanage("rcp", 2200002L, 2200000L, 3, "배경음관리", "배경음관리", "/view/admin/rcp/oprmanage/bgm/manage.do"),
rcpoprmanagettstagmanage("rcp", 2200003L, 2200000L, 3, "TTS태그관리", "TTS태그관리", "/view/admin/rcp/oprmanage/ttstag/manage.do"),
gudguide("gud", 2300000L, 1L, 2, "상담가이드", "상담가이드", "0"),
gudguideconsultationRealtimemanage("gud", 2300100L, 2300000L, 3, "실시간상담", "실시간상담", "/admin/gud/guide/consultationRealtime/manage.do"),
gudguideadminMonitoringmanage("gud", 2300200L, 2300000L, 3, "관리자모니터링", "관리자모니터링", "/admin/gud/guide/adminMonitoring/manage.do"),
gudguideconsultationRealtimemanage("gud", 2300100L, 2300000L, 3, "실시간상담", "실시간상담", "/view/admin/gud/guide/consultationRealtime/manage.do"),
gudguideadminMonitoringmanage("gud", 2300200L, 2300000L, 3, "관리자모니터링", "관리자모니터링", "/view/admin/gud/guide/adminMonitoring/manage.do"),
gudguidehistory("gud", 2300300L, 2300000L, 3, "상담이력관리", "상담이력관리", "0"),
gudguidehistoryscrchmanage("gud", 2300301L, 2300300L, 4, "상담이력조회", "상담이력조회", "/admin/gud/guide/history/scrch/manage.do"),
gudguidehistoryoutboxmanage("gud", 2300302L, 2300300L, 4, "상담이력전송함", "상담이력전송함", "/admin/gud/guide/history/outbox/manage.do"),
gudguidehistoryinboxmanage("gud", 2300303L, 2300300L, 4, "상담이력수신함", "상담이력수신함", "/admin/gud/guide/history/inbox/manage.do"),
gudguidehistoryscrchmanage("gud", 2300301L, 2300300L, 4, "상담이력조회", "상담이력조회", "/view/admin/gud/guide/history/scrch/manage.do"),
gudguidehistoryoutboxmanage("gud", 2300302L, 2300300L, 4, "상담이력전송함", "상담이력전송함", "/view/admin/gud/guide/history/outbox/manage.do"),
gudguidehistoryinboxmanage("gud", 2300303L, 2300300L, 4, "상담이력수신함", "상담이력수신함", "/view/admin/gud/guide/history/inbox/manage.do"),
gudguidecontents("gud", 2300400L, 2300000L, 3, "상담컨텐츠", "상담컨텐츠", "0"),
gudguidecontentslistmanage("gud", 2300401L, 2300400L, 4, "상담가이드조회", "상담가이드조회", "/admin/gud/guide/contents/list/manage.do"),
gudguidecontentsmanagermanage("gud", 2300402L, 2300400L, 4, "상담가이드관리", "상담가이드관리", "/admin/gud/guide/contents/manager/manage.do"),
gudguidecontentscontentsAssessmentmanage("gud", 2300403L, 2300400L, 4, "상담가이드평가", "상담가이드평가", "/admin/gud/guide/contents/contentsAssessment/manage.do"),
gudguidecontentscontentsAssessmentHistorymanage("gud", 2300404L, 2300400L, 4, "상담가이드평가이력", "상담가이드평가이력", "/admin/gud/guide/contents/contentsAssessmentHistory/manage.do"),
gudguidecontentslistmanage("gud", 2300401L, 2300400L, 4, "상담가이드조회", "상담가이드조회", "/view/admin/gud/guide/contents/list/manage.do"),
gudguidecontentsmanagermanage("gud", 2300402L, 2300400L, 4, "상담가이드관리", "상담가이드관리", "/view/admin/gud/guide/contents/manager/manage.do"),
gudguidecontentscontentsAssessmentmanage("gud", 2300403L, 2300400L, 4, "상담가이드평가", "상담가이드평가", "/view/admin/gud/guide/contents/contentsAssessment/manage.do"),
gudguidecontentscontentsAssessmentHistorymanage("gud", 2300404L, 2300400L, 4, "상담가이드평가이력", "상담가이드평가이력", "/view/admin/gud/guide/contents/contentsAssessmentHistory/manage.do"),
gudguideai("gud", 2300500L, 2300000L, 3, "NLP연동", "NLP연동", "0"),
gudguideainluIntentListmanage("gud", 2300501L, 2300500L, 4, "대화의도", "대화의도", "/admin/gud/guide/ai/nluIntentList/manage.do"),
gudguideainluEntityListmanage("gud", 2300502L, 2300500L, 4, "엔티티", "엔티티", "/admin/gud/guide/ai/nluEntityList/manage.do"),
gudguideainluLogmanage("gud", 2300503L, 2300500L, 4, "대화의도이력", "대화의도이력", "/admin/gud/guide/ai/nluLog/manage.do"),
gudguideainluTrainingmanage("gud", 2300504L, 2300500L, 4, "기계학습", "기계학습", "/admin/gud/guide/ai/nluTraining/manage.do"),
gudguideainluIntenttestmanage("gud", 2300505L, 2300500L, 4, "대화의도테스트", "대화의도테스트", "/admin/gud/guide/ai/nluIntenttest/manage.do"),
gudguideaisynonymListmanage("gud", 2300506L, 2300500L, 4, "고유용어사전", "고유용어사전", "/admin/gud/guide/ai/synonymList/manage.do"),
gudguideainluRecommendedLearningmanage("gud", 2300507L, 2300500L, 4, "학습추천", "학습추천", "/admin/gud/guide/ai/nluRecommendedLearning/manage.do"),
gudguideainluIntentListmanage("gud", 2300501L, 2300500L, 4, "대화의도", "대화의도", "/view/admin/gud/guide/ai/nluIntentList/manage.do"),
gudguideainluEntityListmanage("gud", 2300502L, 2300500L, 4, "엔티티", "엔티티", "/view/admin/gud/guide/ai/nluEntityList/manage.do"),
gudguideainluLogmanage("gud", 2300503L, 2300500L, 4, "대화의도이력", "대화의도이력", "/view/admin/gud/guide/ai/nluLog/manage.do"),
gudguideainluTrainingmanage("gud", 2300504L, 2300500L, 4, "기계학습", "기계학습", "/view/admin/gud/guide/ai/nluTraining/manage.do"),
gudguideainluIntenttestmanage("gud", 2300505L, 2300500L, 4, "대화의도테스트", "대화의도테스트", "/view/admin/gud/guide/ai/nluIntenttest/manage.do"),
gudguideaisynonymListmanage("gud", 2300506L, 2300500L, 4, "고유용어사전", "고유용어사전", "/view/admin/gud/guide/ai/synonymList/manage.do"),
gudguideainluRecommendedLearningmanage("gud", 2300507L, 2300500L, 4, "학습추천", "학습추천", "/view/admin/gud/guide/ai/nluRecommendedLearning/manage.do"),
addraddrbot("addr", 2400000L, 1L, 2, "주소봇", "주소봇", "0"),
addraddrbotmanageAddrSectionmanage("addr", 2400100L, 2400000L, 3, "지명유사어관리", "지명유사어관리", "/admin/addr/addrbot/manageAddrSection/manage.do"),
addraddrbotmanageBuildNamemanage("addr", 2400200L, 2400000L, 3, "빌딩유사어관리", "빌딩유사어관리", "/admin/addr/addrbot/manageBuildName/manage.do"),
addraddrbotmanageSynonymmanage("addr", 2400300L, 2400000L, 3, "유의어전처리관리", "유의어전처리관리", "/admin/addr/addrbot/manageSynonym/manage.do"),
addraddrbotmanageBuildTypemanage("addr", 2400400L, 2400000L, 3, "발화건물유형관리", "발화건물유형관리", "/admin/addr/addrbot/manageBuildType/manage.do"),
addraddrbotmanageJusoUploadmanage("addr", 2400500L, 2400000L, 3, "주소월별업데이트", "주소월별업데이트", "/admin/addr/addrbot/manageJusoUpload/manage.do"),
addraddrbotmanageAddrSectionmanage("addr", 2400100L, 2400000L, 3, "지명유사어관리", "지명유사어관리", "/view/admin/addr/addrbot/manageAddrSection/manage.do"),
addraddrbotmanageBuildNamemanage("addr", 2400200L, 2400000L, 3, "빌딩유사어관리", "빌딩유사어관리", "/view/admin/addr/addrbot/manageBuildName/manage.do"),
addraddrbotmanageSynonymmanage("addr", 2400300L, 2400000L, 3, "유의어전처리관리", "유의어전처리관리", "/view/admin/addr/addrbot/manageSynonym/manage.do"),
addraddrbotmanageBuildTypemanage("addr", 2400400L, 2400000L, 3, "발화건물유형관리", "발화건물유형관리", "/view/admin/addr/addrbot/manageBuildType/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"),
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.TbBotMenuRepo;
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.db.mybatis.alias.LoginVO;
import io.jsonwebtoken.Claims;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
@ -26,6 +29,8 @@ import java.time.LocalDateTime;
@RequiredArgsConstructor
public class LoginFilter extends OncePerRequestFilter {
private final TokenProvider tokenProvider;
private final ObjectMapper objectMapper;
// private final TbBotAuthMenuRepo tbBotAuthMenuRepo;
// private final TbBotMenuRepo tbBotMenuRepo;
@ -57,11 +62,13 @@ public class LoginFilter extends OncePerRequestFilter {
|| reqUrl.startsWith("/view")
|| reqUrl.equals("/")
) {
log.info("static file check");
filterChain.doFilter(request, response);
} 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);
}
}
}

@ -23,7 +23,7 @@ var StatisticsDashboard = {
async: false,
datatype: "JSON",
contentType : "application/json; charset=utf-8",
url: "/adm/menu/oprmng",
url: "/api/v1/token/menu/oprmng",
headers: {'Authorization': getToken()},
data: {menuval: 'root'},
// 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() {
// 차트 디자인 커스텀 변수 (색상 및 외형)

@ -1,119 +1,134 @@
<!DOCTYPE html>
<head>
<meta charset="UTF-8">
<title>대시보드</title>
<meta charset="UTF-8">
<title>대시보드</title>
</head>
<body>
<script type="text/javascript" src="/aajs/statisticsDashboard.js"></script>
<style>
.dashboard .component-billboard .billboard-grid {
padding: 5px;
}
</style>
<section id="Content" class="bot_common">
<div class="location">
<ul>
<li class="home"><a href="#">HOME</a></li>
<li><a href="#">대시보드</a></li>
</ul>
</div>
<style>
.dashboard .component-billboard .billboard-grid {
padding: 5px;
}
</style>
<section id="Content" class="bot_common">
<div class="location">
<ul>
<li class="home"><a href="#">HOME</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 class="fr">
<div class="btn_wrap fl">
<a href="javascript:StatisticsDashboard.setDashboardChart();" class="btn">조회</a>
</div>
</div>
</div>
<div class="tbl">
<table class="search block">
<colgroup>
<col width="140px">
<col width="auto">
</colgroup>
<tbody>
<tr>
<th class="tl">시나리오 그룹</th>
<td>
<div class="sel_box">
<select class="wide" id="oprMngCode">
<!-- TODO: 래부터 신규 컨텐츠 마크업 입니다. -->
<div class="sub_cont">
<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="javascript:StatisticsDashboard.setDashboardChart();" class="btn">조회</a>
</div>
</div>
</div>
<div class="tbl">
<table class="search block">
<colgroup>
<col width="140px">
<col width="auto">
</colgroup>
<tbody>
<tr>
<th class="tl">시나리오 그룹</th>
<td>
<div class="sel_box">
<select class="wide" id="oprMngCode">
</select>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</select>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="cont_box dashboard">
<div class="component-billboard">
<div class="billboard-grid">
<div class="box_title">
<div class="tit fl">전체 콜 그래프 (단위 : 건)</div>
</div>
<div class="grid-inner">
<div class="chart-item-box">
<div class="chart-item">
<div class="chart" id="lineChart"></div>
</div>
</div>
</div>
</div>
<div class="cont_box dashboard">
<div class="component-billboard">
<div class="billboard-grid">
<div class="box_title">
<div class="tit fl">전체 콜 그래프 (단위 : 건)</div>
</div>
<div class="grid-inner">
<div class="chart-item-box">
<div class="chart-item">
<div class="chart" id="lineChart"></div>
</div>
</div>
</div>
</div>
<div class="billboard-grid">
<div class="box_title">
<div class="tit fl">인텐트 그래프 (단위 : 건)</div>
</div>
<div class="grid-inner">
<div class="chart-item-box">
<div class="chart-item">
<div class="chart" id="lineChart2"></div>
</div>
</div>
</div>
</div>
<div class="billboard-grid">
<div class="box_title">
<div class="tit fl">인텐트 그래프 (단위 : 건)</div>
</div>
<div class="grid-inner">
<div class="chart-item-box">
<div class="chart-item">
<div class="chart" id="lineChart2"></div>
</div>
</div>
</div>
</div>
<div class="billboard-grid">
<div class="box_title">
<div class="tit fl">시나리오 그래프 (단위 : 건)</div>
</div>
<div class="grid-inner">
<div class="chart-item-box">
<div class="chart-item">
<div class="chart" id="lineChart3"></div>
</div>
</div>
</div>
</div>
<div class="billboard-grid">
<div class="box_title">
<div class="tit fl">시나리오 그래프 (단위 : 건)</div>
</div>
<div class="grid-inner">
<div class="chart-item-box">
<div class="chart-item">
<div class="chart" id="lineChart3"></div>
</div>
</div>
</div>
</div>
<div class="billboard-grid full">
<div class="box_title">
<div class="tit fl">오늘 시간대별 통화량 (단위 : 건)</div>
<div class="tit fr" id="curCallCnt">현재 통화량 : 0건</div>
</div>
<div class="grid-inner">
<div class="chart-item-box">
<div class="chart-item">
<div class="chart" id="barChart"></div>
</div>
</div>
</div>
</div>
<div class="billboard-grid full">
<div class="box_title">
<div class="tit fl">오늘 시간대별 통화량 (단위 : 건)</div>
<div class="tit fr" id="curCallCnt">현재 통화량 : 0건</div>
</div>
<div class="grid-inner">
<div class="chart-item-box">
<div class="chart-item">
<div class="chart" id="barChart"></div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</section>
</section>
</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>
</head>
<body>
<script>
$(document).ready(function () {
PagingDataTable();
$('#listTable tbody').on('dblclick', 'tr', function () {
var data = $('#listTable').DataTable().row(this).data();
viewPage(data)
});
$('#btnSearchOpr').on('click', function () {
fnCustSearchBtn();
});
<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>
<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) {
if (key.keyCode == 13) {
fnCustSearchBtn();
}
});
<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>
$('#btnRegModal').on('click', function () {
fnInsertBtn();
});
</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">
</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) {
// console.log(rowData.custCode);
@ -157,102 +233,23 @@
$('#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>
<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>
PagingDataTable();
$('#listTable tbody').on('dblclick', 'tr', function () {
var data = $('#listTable').DataTable().row(this).data();
viewPage(data)
});
$('#btnSearchOpr').on('click', function () {
fnCustSearchBtn();
});
$("#Content").on("keyup", function (key) {
if (key.keyCode == 13) {
fnCustSearchBtn();
}
});
$('#btnRegModal').on('click', function () {
fnInsertBtn();
});
<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>

@ -15,65 +15,196 @@
</ul>
</div>
<header id="header">
</header>
<script>
$(document).ready(function () {
// 권한 조회
$('#btnSearchCust').on('click', function () {
fncSearchCust();
});
<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>
//커스트코드 중복확인
$('#btnCustCodeDoubleCheck').on('click', function () {
// console.log("커스트 중복 클릭")
fncCustDoubleCheck();
});
//서비스코드 중복확인
$('#btnServiceGroupDoubleCheck').on('click', function () {
// console.log("서비스 중복 클릭")
fncServiceDoubleCheck();
});
<!-- 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>
$('#btnCancel').on('click', function () {
// console.log("취소클릭")
listgo()
});
$('#btnSave').on('click', function () {
// console.log("저장클릭")
fncCustSave();
<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>
$('#newServiceGroup').keyup(function (e) {
// newOprCreate(e.keyCode)
});
$('#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');
// })
// });
<div class="tbl-card-wrap">
<ul class="tbl-card">
</ul>
</div>
</div>
// 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')
}
);
});
<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>
// $('#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() {
@ -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>
<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>
// 권한 조회
$('#btnSearchCust').on('click', function () {
fncSearchCust();
});
<%--
<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>
--%>
//커스트코드 중복확인
$('#btnCustCodeDoubleCheck').on('click', function () {
// console.log("커스트 중복 클릭")
fncCustDoubleCheck();
});
//서비스코드 중복확인
$('#btnServiceGroupDoubleCheck').on('click', function () {
// console.log("서비스 중복 클릭")
fncServiceDoubleCheck();
});
<tr>
<th class="tl">서비스그룹 설명</th>
<td>
<div class="ipt_box">
<input type="text" id="newServiceGroupDesc" value="" name="" class="">
</div>
</td>
</tr>
$('#btnCancel').on('click', function () {
// console.log("취소클릭")
listgo()
});
$('#btnSave').on('click', function () {
// console.log("저장클릭")
fncCustSave();
<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>
$('#newServiceGroup').keyup(function (e) {
// newOprCreate(e.keyCode)
});
$('#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>
</div>
<header id="header">
</header>
<script>
$(document).ready(function () {

@ -3,40 +3,186 @@
<title>그룹별권한</title>
</head>
<script>
<body>
$(document).ready(function () {
getOpr();
PagingDataTable();
// newTreeWrap();
$('#listTable tbody').on('dblclick', 'tr', function () {
var data = $('#listTable').DataTable().row(this).data()
// console.log(JSON.stringify(data))
viewPage(data);
});
<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>
$('#btnSearchOpr').on('click', function () {
fnCustSearchBtn();
});
<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) {
if (key.keyCode == 13) {
fnCustSearchBtn();
}
});
<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>
//모달창 저장버튼
$('#btnRegModal').on('click', function () {
fnInsertBtn();
});
<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>
<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() {
@ -338,184 +484,35 @@
$('#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>
<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>
getOpr();
PagingDataTable();
// newTreeWrap();
$('#listTable tbody').on('dblclick', 'tr', function () {
var data = $('#listTable').DataTable().row(this).data()
// console.log(JSON.stringify(data))
viewPage(data);
});
$('#btnSearchOpr').on('click', function () {
fnCustSearchBtn();
});
$("#Content").on("keyup", function (key) {
if (key.keyCode == 13) {
fnCustSearchBtn();
}
});
//모달창 저장버튼
$('#btnRegModal').on('click', function () {
fnInsertBtn();
});
</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>
<script>
<body>
$(document).ready(function () {
getOpr();
getQueryString();
getGroupAuthUpdateData();
$("#Content").on("keyup", function (key) {
if (key.keyCode == 13) {
getUserSearch()
}
});
<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>
//유저조회
$('#btnSearchUser').on('click', function () {
getUserSearch()
// $('#serviceInfo').reset();
});
<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>
//유저 선택 이벤트
$('#selectorUser').change(function () {
userAdd($(this).val(), $('#selectorUser option:selected').text())
});
<!-- 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>
$('#btnSave').on('click', function () {
// console.log("저장클릭")
ServiceGroupAuthModifyUpdate();
});
<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>
$('#btnDel').on('click', function () {
// console.log("취소버튼");
delBtn();
});
}
);
<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>
</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() {
@ -293,126 +380,37 @@
}, "1");
}
getOpr();
getQueryString();
getGroupAuthUpdateData();
$("#Content").on("keyup", function (key) {
if (key.keyCode == 13) {
getUserSearch()
}
});
</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>
<!-- 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>
//유저조회
$('#btnSearchUser').on('click', function () {
getUserSearch()
// $('#serviceInfo').reset();
});
//유저 선택 이벤트
$('#selectorUser').change(function () {
userAdd($(this).val(), $('#selectorUser option:selected').text())
});
<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>
$('#btnSave').on('click', function () {
// console.log("저장클릭")
ServiceGroupAuthModifyUpdate();
});
<!-- 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">
$('#btnDel').on('click', function () {
// console.log("취소버튼");
delBtn();
});
</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>
</script>
</body>

@ -3,45 +3,6 @@
<title>그룹별권한</title>
</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>
@ -317,3 +278,43 @@
</section>
</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>
</head>
<body>
<script>
$(document).ready(function () {
getOpr();
<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)
});
<header id="header">
</header>
$('#btnSearchOpr').on('click', function () {
fnCustSearchBtn();
});
$("#Content").on("keyup", function (key) {
if (key.keyCode == 13) {
fnCustSearchBtn();
}
});
});
<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>
</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() {
$.ajax({
@ -163,136 +277,23 @@
$('#listTable').DataTable().ajax.reload();
};
</script>
<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>
getOpr();
</tbody>
</table>
</div>
</div>
<div class="cont_box">
<div class="box_title">
<div class="fl">
<h2 class="mt12">정책별 메뉴 리스트</h2>
</div>
</div>
PagingDataTable();
$('#listTable tbody').on('dblclick', 'tr', function () {
var data = $('#listTable').DataTable().row(this).data();
viewPage(data)
});
$('#btnSearchOpr').on('click', function () {
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">
</colgroup>
<thead>
<tr>
<th>고객코드</th>
<th>고객사</th>
<th>서비스그룹</th>
<th>서비스그룹명</th>
<th>정책코드</th>
<th>정책명</th>
<th>메뉴명</th>
<th>메뉴번호</th>
</tr>
</thead>
<tbody>
$("#Content").on("keyup", function (key) {
if (key.keyCode == 13) {
fnCustSearchBtn();
}
});
</tbody>
</table>
</form>
</div>
</div>
</div>
</section>
</script>
</body>

@ -3,207 +3,6 @@
<title>서비스그룹 관리</title>
</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>
@ -452,4 +251,206 @@
</div>
</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>
<script>
$(document).ready(function () {
<body>
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 () {
fnCustSearchBtn();
});
<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) {
if (key.keyCode == 13) {
fnCustSearchBtn();
}
});
<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>
$('#btnRegModal').on('click', function () {
fnServiceGroupInsertBtn();
});
</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">
</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() {
// document.location.href = "/BotMain_VM/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>
<h1>대시보드</h1>
<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>
<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>
$("#Content").on("keyup", function (key) {
if (key.keyCode == 13) {
fnCustSearchBtn();
}
});
</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">
</div>
</div>
$('#btnRegModal').on('click', function () {
fnServiceGroupInsertBtn();
});
<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>
</script>
</body>

@ -3,59 +3,201 @@
<title>서비스그룹 관리</title>
</head>
<script>
$(document).ready(function () {
<body>
<h1>ICOMSYS ADMIN</h1>
$('.tbl-card-li').each(function () {
$(this).find('.tbl-card-title').on('click', function () {
$(this).parents('.tbl-card-li').toggleClass('on');
})
});
<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>
$('.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();
<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>
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();
<!-- 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>
$('#btnRegModal').on('click', function () {
// console.log("생성클릭")
newTreeWrap();
// $('#serviceInfo').reset();
});
<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>
// 신규 시나리오그룹 저장
$('#btnSaveCust').on('click', function () {
// console.log("저장클릭")
fncCreateServiceInfo();
});
<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>
//중복확인
$('#btnDoubleCheck').on('click', function () {
// console.log("저장클릭")
fncNewDoubleCheck();
});
<tr>
<th class="tl">사용여부</th>
<td>
<input type="text" id="mainUseYn" value="Y" name="" class="" readonly>
</td>
</tr>
// $('#newServiceGroup').keydown(function (e) {
$('#newServiceGroup').keyup(function (e) {
// newOprCreate(e.keyCode)
});
</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>
<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() {
var custCode = $("#custCode").val();
@ -527,203 +669,58 @@
}, "1")
}
});
};
}
;
</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-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();
<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>
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();
<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>
$('#btnRegModal').on('click', function () {
// console.log("생성클릭")
newTreeWrap();
// $('#serviceInfo').reset();
});
<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>
// 신규 시나리오그룹 저장
$('#btnSaveCust').on('click', function () {
// console.log("저장클릭")
fncCreateServiceInfo();
});
<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>
//중복확인
$('#btnDoubleCheck').on('click', function () {
// console.log("저장클릭")
fncNewDoubleCheck();
});
<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>
// $('#newServiceGroup').keydown(function (e) {
$('#newServiceGroup').keyup(function (e) {
// newOprCreate(e.keyCode)
});
</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>
<script>
$(document).ready(function () {
<body>
// getOprSelect();
getCust();
PagingDataTable();
$('#listTable tbody').on('dblclick', 'tr', function () {
var data = $('#listTable').DataTable().row(this).data();
viewPage(data)
});
<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>
$('#btnSearchOpr').on('click', function () {
fnCustSearchBtn();
});
<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 () {
fnInsertBtn();
});
<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>
$("#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() {
var html = '<option value="' + "ALL" + '">' + "전체" + '</option>';
@ -77,7 +181,7 @@
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"}));
var paging = JSON.stringify({'page': 0, 'size': 10})
$('#listTable').DataTable(
@ -239,141 +343,22 @@
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>
<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>
<script>
$(document).ready(function () {
getCust();
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>
<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 () {
fnInsertBtn();
});
<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>
$("#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 getOpr() {
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>
<script>
$(document).ready(function () {
getCust();
getOpr();
authChoice($('#newServiceGroup option:selected').val());
$("#Content").on("keyup", function (key) {
if (key.keyCode == 13) {
fnCustSearchBtn();
}
});
<body>
//선택 이벤트
$('#newServiceGroup').change(function () {
authChoice($(this).val())
});
<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>
// $('.tbl-card-li').each(function () {
// $(this).find('.tbl-card-title').on('click', function () {
// $(this).parents('.tbl-card-li').toggleClass('on');
// })
// });
<header id="header">
</header>
//선택 이벤트
$('#newCustUser').change(function () {
SelectServiceGroupUpdate($(this).val())
});
<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>
//서비스그룹 추가 -> 적용버튼
$('#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');
// })
// });
<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>
// 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()
$('.tbl-card').find('.tbl-card-title').last()
.on('click', function () {
$(this).parents('.tbl-card-li').toggleClass('on')
}
);
});
<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>
$('#btnSave').on('click', function () {
// console.log("저장버튼");
saveBtn();
});
$('#btnDel').on('click', function () {
// console.log("삭제버튼");
delBtn();
});
$('#doubleCheckBtn').on('click', function () {
// console.log("중복확인버튼");
userDoubleCheck();
});
<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>
$('#newUserPass').keyup(function (e) {
newUserPassCheck(e.keyCode)
});
<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>
$('#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);
}
})
});
}
);
<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>
<script>
function listgo() {
// document.location.href = "/BotMain_VM/admin/common/system/user/manage.do";
@ -501,217 +627,86 @@
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>
<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>
<script>
$(document).ready(function () {
<body>
getOpr();
getQueryString();
getViewPageData();
authChoice($('#newServiceGroup option:selected').val());
<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>
$("#Content").on("keyup", function (key) {
if (key.keyCode == 13) {
fnCustSearchBtn();
}
});
//선택 이벤트
$('#newServiceGroup').change(function () {
authChoice($(this).val())
});
<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>
$("#Content").on("keyup", function (key) {
if (key.keyCode == 13) {
fnCustSearchBtn();
}
})
<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>
$('#btnSave').on('click', function () {
// console.log("저장버튼");
saveBtn();
});
<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>
$('#failCheckBtn').on('click', function () {
failCheckBtn();
});
<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>
//서비스그룹 추가 -> 적용버튼
$('#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')
}
);
});
});
<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>
</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() {
var data = {};
@ -476,212 +621,59 @@
setTimeout(function () {
$('#newAuthChk').html(html1);
}, 100)
}
;
}
</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>
</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>
getOpr();
getQueryString();
getViewPageData();
authChoice($('#newServiceGroup option:selected').val());
$("#Content").on("keyup", function (key) {
if (key.keyCode == 13) {
fnCustSearchBtn();
}
});
</span>
</tbody>
</table>
</div>
</form>
</div>
</div>
//선택 이벤트
$('#newServiceGroup').change(function () {
authChoice($(this).val())
});
<div class="modal_footer">
<div class="btn_wrap fr">
<a href="#" class="btn" id="btnSaveCust">저장</a>
</div>
</div>
$("#Content").on("keyup", function (key) {
if (key.keyCode == 13) {
fnCustSearchBtn();
}
})
<div class="modal_controller">
<a href="#" class="close">close</a>
</div>
</div>
$('#btnSave').on('click', function () {
// console.log("저장버튼");
saveBtn();
});
$('#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>
</head>
<body>
<script>
$(document).ready(function () {
getCust();
getOpr();
authChoice($('#newServiceGroup option:selected').val());
$("#Content").on("keyup", function (key) {
if (key.keyCode == 13) {
fnCustSearchBtn();
}
});
<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>
//선택 이벤트
$('#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');
// })
// });
<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>
//선택 이벤트
$('#newCustUser').change(function () {
SelectServiceGroupUpdate($(this).val())
});
<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>
//서비스그룹 추가 -> 적용버튼
$('#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');
// })
// });
<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>
// 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 () {
// console.log("저장버튼");
saveBtn();
});
$('#btnDel').on('click', function () {
// console.log("삭제버튼");
delBtn();
});
$('#doubleCheckBtn').on('click', function () {
// console.log("중복확인버튼");
userDoubleCheck();
});
<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>
$('#newUserPass').keyup(function (e) {
newUserPassCheck(e.keyCode)
});
<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>
$('#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() {
// document.location.href = "/BotMain_VM/admin/common/system/user/manage.do";
@ -546,217 +677,83 @@
return;
}
</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="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>
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());
});
$('#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);
}
})
});
</body>
</script>

@ -3,76 +3,201 @@
<title>사용자관리</title>
</head>
<body>
<script>
$(document).ready(function () {
<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>
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();
getViewPageData();
authChoice($('#newServiceGroup option:selected').val());
<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>
$("#Content").on("keyup", function (key) {
if (key.keyCode == 13) {
fnCustSearchBtn();
}
});
<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>
//선택 이벤트
$('#newServiceGroup').change(function () {
authChoice($(this).val())
});
<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>
$("#Content").on("keyup", function (key) {
if (key.keyCode == 13) {
fnCustSearchBtn();
}
})
<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>
$('#btnSave').on('click', function () {
// console.log("저장버튼");
saveBtn();
});
$('#btnDel').on('click', function () {
// console.log("취소버튼");
delBtn();
});
<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>
function delBtn() {
listgo();
}
<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>
function listgo() {
// document.location.href = "/BotMain_VM/admin/common/system/user/manage.do";
document.location.href = '/admin/common/system/user/manage.do';
}
<tr>
<th class="tl">이메일 주소</th>
<td>
<div class="ipt_box">
<input type="text" value="" id="updateEmail" name="" class="">
</div>
</td>
</tr>
//서비스그룹 추가 -> 적용버튼
$('#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');
// })
// });
<tr>
<th class="tl">핸드폰 번호</th>
<td>
<div class="ipt_box">
<input type="text" value="" id="updateMobile" name="" class="">
</div>
</td>
</tr>
// 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')
}
);
});
<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">
$('#failCheckBtn').on('click', function () {
failCheckBtn();
});
<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 getUv() {
$.ajax({
@ -509,202 +634,68 @@
}
</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>
</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">
getOpr();
getQueryString();
getViewPageData();
authChoice($('#newServiceGroup option:selected').val());
$("#Content").on("keyup", function (key) {
if (key.keyCode == 13) {
fnCustSearchBtn();
}
});
//선택 이벤트
$('#newServiceGroup').change(function () {
authChoice($(this).val())
});
$("#Content").on("keyup", function (key) {
if (key.keyCode == 13) {
fnCustSearchBtn();
}
})
<div class="box_title">
<div class="btn_wrap fr">
<a href="#" id="btnRegModal" rel="reg_modal" class="btn line modalLoad">추가</a>
</div>
</div>
$('#btnSave').on('click', function () {
// console.log("저장버튼");
saveBtn();
});
$('#btnDel').on('click', function () {
// console.log("취소버튼");
delBtn();
});
<div class="tbl-card-wrap">
<ul class="tbl-card">
</ul>
</div>
function delBtn() {
listgo();
}
</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>
function listgo() {
// document.location.href = "/BotMain_VM/admin/common/system/user/manage.do";
document.location.href = '/admin/common/system/user/manage.do';
}
<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>
//서비스그룹 추가 -> 적용버튼
$('#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');
// })
// });
</span>
</tbody>
</table>
</div>
</form>
</div>
</div>
// 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')
}
);
});
<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>
$('#failCheckBtn').on('click', function () {
failCheckBtn();
});
</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>
<head>
<meta charset="UTF-8">
<title>인텐트날짜별통계</title>
<%@ include file="/WEB-INF/jsp/adm/include/topLinkTag.jsp"%>
</head>
<script type="text/javascript">
@ -52,12 +48,8 @@
</ul>
</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>

@ -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="mobile-web-app-capable" content="yes">
<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/bootstrap.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/new/assets/js/lib/billboard.pkgd.min.js}"></script>
<script th:src="@{/js/utils.js}"></script>
<script type="text/javascript">
function getToken() {
var cookies = document.cookie.split(';');
var token = '';
</head>
<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">
<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) {
if(cookie.split('=')[0] == 'accessToken') {
<script type="text/javascript">
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];
}
});
}
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 갱신요청
//시간체크
var tmpVal = parseJwt(token);
var now = Date.now();
function parseJwt(token) {
var base64Url = token.split('.')[1];
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) {
if(cookie.split('=')[0] == 'accessToken') {
token = cookie.split('=')[1];
function getMainOpr() {
$.ajax({
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) {
var base64Url = token.split('.')[1];
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(''));
// function checkPermissionPolicy(policyName) {
// let pTemp = '<c:out value="${sessionScope.PolicyList}" />';
// let sPolicyList = pTemp.substr(1, pTemp.length - 2).split(", ");
//
// return sPolicyList.indexOf(policyName) === -1 ? false : true;
// }
return JSON.parse(jsonPayload);
}
</script>
</head>
function getUv() {
var uv = $.ajax({
type: "GET"
,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">
<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>
getMainOpr();
getUv();
$('#mainOpr').change(function () {
var json = {};
json.serviceGroup = this.value;
json.userSeq = $('#naviseq').val();
getMainOprUpdate(json);
});
$('.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>
</html>

@ -23,7 +23,7 @@
$(document).ready(function () {
GetAuth();
PageControll('/admin/common/dashboard/manage.do');
PageControll('/view/admin/common/dashboard/manage.do');
}).off(lnbEvt())
function GetAuth() {
@ -34,31 +34,35 @@
async: false,
url: '/rest/test5',
success: function (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 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"));
});
menuBar(data);
}
})
};
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) {
@ -67,15 +71,14 @@
}
var redi = '';
if (e == "" || e == null) {
redi = '/admin/common/dashboard/manage.do'
redi = '/view/admin/common/dashboard/manage.do'
} else {
redi = e;
}
$.ajax({
type: "GET",
contentType: "application/json; charset=utf-8",
datatype: "HTML",
datatype: "html",
async: false,
url: redi,
success: function (data) {

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

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

Loading…
Cancel
Save