프로젝트 패키징 처리 수정(war -> jar)
parent
7539b5a6ab
commit
7c571dac87
@ -1,32 +0,0 @@
|
|||||||
package cokr.xit.fims;
|
|
||||||
|
|
||||||
import java.io.BufferedReader;
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.io.InputStreamReader;
|
|
||||||
|
|
||||||
import org.springframework.boot.SpringApplication;
|
|
||||||
import org.springframework.boot.autoconfigure.ImportAutoConfiguration;
|
|
||||||
import org.springframework.context.annotation.ComponentScan;
|
|
||||||
import org.springframework.core.io.ClassPathResource;
|
|
||||||
|
|
||||||
import cokr.xit.base.ServletCustomizer;
|
|
||||||
import cokr.xit.fims.task.TaskMvcConfig;
|
|
||||||
|
|
||||||
@ImportAutoConfiguration({ServletCustomizer.class,TaskMvcConfig.class})
|
|
||||||
@ComponentScan(basePackageClasses = cokr.xit.applib.HttpStatusCodeExceptionControllerAdvice.class)
|
|
||||||
public class MainApplication extends SpringBootApplicationBridge {
|
|
||||||
|
|
||||||
public static void main(String[] args) {
|
|
||||||
|
|
||||||
try {
|
|
||||||
BufferedReader in = new BufferedReader(new InputStreamReader(new ClassPathResource("sgg.txt").getInputStream()));
|
|
||||||
String sgg = in.readLine();
|
|
||||||
System.setProperty("sgg", sgg);
|
|
||||||
in.close();
|
|
||||||
} catch (IOException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
|
|
||||||
SpringApplication.run(MainApplication.class, args);
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,838 +0,0 @@
|
|||||||
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" isELIgnored="false" session="false"%>
|
|
||||||
<%@ include file="/WEB-INF/jsp/include/taglib.jsp"%>
|
|
||||||
|
|
||||||
<div class="wrapper-dashboard">
|
|
||||||
<div id="card1" class="card dashboard-total">
|
|
||||||
<div class="card-body row">
|
|
||||||
<div class="col px-4 card-separator d-flex flex-column align-items-center">
|
|
||||||
<p class="mb-1" id="card1-1">
|
|
||||||
<span class="skeleton">?/?</span>
|
|
||||||
</p>
|
|
||||||
<i class="svg-cctv-fixed w-px-30 d-block" title="고정형CCTV"></i>
|
|
||||||
</div>
|
|
||||||
<div class="col px-4 card-separator d-flex flex-column align-items-center">
|
|
||||||
<p class="mb-1" id="card1-2">
|
|
||||||
<span class="skeleton">?/?</span>
|
|
||||||
</p>
|
|
||||||
<i class="svg-crackdown-road w-px-30 d-block" title="도보"></i>
|
|
||||||
</div>
|
|
||||||
<div class="col px-4 card-separator d-flex flex-column align-items-center">
|
|
||||||
<p class="mb-1" id="card1-3">
|
|
||||||
<span class="skeleton">?/?</span>
|
|
||||||
</p>
|
|
||||||
<i class="svg-cctv-drive w-px-30 d-block" title="주행형CCTV"></i>
|
|
||||||
</div>
|
|
||||||
<div class="col px-4 d-flex flex-column align-items-center">
|
|
||||||
<p class="mb-1" id="card1-4">
|
|
||||||
<span class="skeleton">?/?</span>
|
|
||||||
</p>
|
|
||||||
<i class="svg-crackdown-minwon w-px-30 d-block" title="민원"></i>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="card-footer ms-auto">
|
|
||||||
<a href="#" id="btnGoToCrdn">단속관리 바로가기 ></a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div id="card2" class="card dashboard-total">
|
|
||||||
<div class="card-body row">
|
|
||||||
<div class="col px-4 card-separator d-flex flex-column align-items-center">
|
|
||||||
<p class="mb-1" id="card2-1">
|
|
||||||
<span class="skeleton">?/?</span>
|
|
||||||
</p>
|
|
||||||
<i class="svg-target-lvy w-px-30 d-block" title="등록대상"></i>
|
|
||||||
</div>
|
|
||||||
<div class="col px-4 d-flex flex-column align-items-center">
|
|
||||||
<p class="mb-1" id="card2-2">
|
|
||||||
<span class="skeleton">?/?</span>
|
|
||||||
</p>
|
|
||||||
<i class="svg-target-transfer w-px-30 d-block" title="이첩대상"></i>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="card-footer ms-auto">
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div id="card3" class="card dashboard-total">
|
|
||||||
<div class="card-body row">
|
|
||||||
<div class="col px-4 card-separator d-flex flex-column align-items-center">
|
|
||||||
<p class="mb-1" id="card3-1">
|
|
||||||
<span class="skeleton">?/?</span>
|
|
||||||
</p>
|
|
||||||
<i class="svg-sendstat-guide w-px-30 d-block" title="계도장 발송현황"></i>
|
|
||||||
</div>
|
|
||||||
<div class="col px-4 card-separator d-flex flex-column align-items-center">
|
|
||||||
<p class="mb-1" id="card3-2">
|
|
||||||
<span class="skeleton">?/?</span>
|
|
||||||
</p>
|
|
||||||
<i class="svg-sendstat-before w-px-30 d-block" title="사전통보 발송현황"></i>
|
|
||||||
</div>
|
|
||||||
<div class="col px-4 d-flex flex-column align-items-center">
|
|
||||||
<p class="mb-1" id="card3-3">
|
|
||||||
<span class="skeleton">?/?</span>
|
|
||||||
</p>
|
|
||||||
<i class="svg-sendstat-nop w-px-30 d-block" title="고지서 발송현황"></i>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="card-footer ms-auto">
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div id="card4" class="card dashboard-total">
|
|
||||||
<div class="card-body row">
|
|
||||||
<div class="col px-4 card-separator d-flex flex-column align-items-center">
|
|
||||||
<p class="mb-1" id="card4-1">
|
|
||||||
<span class="skeleton">?/?</span>
|
|
||||||
</p>
|
|
||||||
<i class="svg-opn-rcp w-px-30 d-block" title="접수"></i>
|
|
||||||
</div>
|
|
||||||
<div class="col px-4 card-separator d-flex flex-column align-items-center">
|
|
||||||
<p class="mb-1" id="card4-2">
|
|
||||||
<span class="skeleton">?/?</span>
|
|
||||||
</p>
|
|
||||||
<i class="svg-opn-decision w-px-30 d-block" title="수용/미수용"></i>
|
|
||||||
</div>
|
|
||||||
<div class="col px-4 d-flex flex-column align-items-center">
|
|
||||||
<p class="mb-1" id="card4-3">
|
|
||||||
<span class="skeleton">?/?</span>
|
|
||||||
</p>
|
|
||||||
<i class="svg-opn-selfdrop w-px-30 d-block" title="자진취하"></i>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="card-footer ms-auto">
|
|
||||||
<a href="#" id="btnGoToOpnn">의견진술관리 바로가기 ></a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="wrapper-dashboard">
|
|
||||||
<div class="card dashboard-chart">
|
|
||||||
<div class="card-header d-flex align-items-center justify-content-between">
|
|
||||||
<h5 class="card-title m-0 me-2">단속 자료 통계(유형별)</h5>
|
|
||||||
<div>건수(최근 15일)</div>
|
|
||||||
</div>
|
|
||||||
<div class="card-body d-flex justify-content-center" id="lineChartCardBody">
|
|
||||||
<canvas id="lineChart" class="chartjs mh-px-300" data-height="500"></canvas>
|
|
||||||
</div>
|
|
||||||
<div class="card-footer ms-auto">
|
|
||||||
통계현황 바로가기 >
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="card dashboard-chart">
|
|
||||||
<div class="card-header d-flex align-items-center justify-content-between">
|
|
||||||
<h5 class="card-title m-0 me-2">단속통계</h5>
|
|
||||||
<div>처리유형별(일별)</div>
|
|
||||||
</div>
|
|
||||||
<div class="card-body d-flex justify-content-center" id="doughnutChart1CardBody">
|
|
||||||
<canvas id="doughnutChart1" class="chartjs mh-px-300" data-height="350"></canvas>
|
|
||||||
</div>
|
|
||||||
<div class="card-footer ms-auto">
|
|
||||||
통계현황 바로가기 >
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="card dashboard-chart">
|
|
||||||
<div class="card-header d-flex align-items-center justify-content-between">
|
|
||||||
<h5 class="card-title m-0 me-2">발송통계</h5>
|
|
||||||
<div>발송유형별(일별)</div>
|
|
||||||
</div>
|
|
||||||
<div class="card-body d-flex justify-content-center" id="doughnutChart2CardBody">
|
|
||||||
<canvas id="doughnutChart2" class="chartjs mh-px-300" data-height="350"></canvas>
|
|
||||||
</div>
|
|
||||||
<div class="card-footer ms-auto">
|
|
||||||
통계현황 바로가기 >
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="card dashboard-chart">
|
|
||||||
<div class="card-header d-flex align-items-center justify-content-between">
|
|
||||||
<h5 class="card-title m-0 me-2">의견진술통계</h5>
|
|
||||||
<div>처리유형별(일별)</div>
|
|
||||||
</div>
|
|
||||||
<div class="card-body d-flex justify-content-center" id="doughnutChart3CardBody">
|
|
||||||
<canvas id="doughnutChart3" class="chartjs mh-px-300" data-height="350"></canvas>
|
|
||||||
</div>
|
|
||||||
<div class="card-footer ms-auto">
|
|
||||||
통계현황 바로가기 >
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<c:set var="dashboardScript" scope="request">
|
|
||||||
|
|
||||||
LoadScript("chartScript","/webjars/3rd-party/sneat/libs/chartjs/chartjs.js");
|
|
||||||
|
|
||||||
|
|
||||||
var falseLineChart = `<svg xmlns="http://www.w3.org/2000/svg" class="skeleton"
|
|
||||||
height="250" viewBox="0 0 24 24">
|
|
||||||
<path class="skeleton" d="M3 3v17a1 1 0 0 0 1 1h17v-2H5V3H3z"></path>
|
|
||||||
<path class="skeleton" d="M15.293 14.707a.999.999 0 0 0 1.414 0l5-5-1.414-1.414L16 12.586l-2.293-2.293a.999.999 0 0 0-1.414 0l-5 5 1.414 1.414L13 12.414l2.293 2.293z"></path>
|
|
||||||
</svg>`;
|
|
||||||
|
|
||||||
var falseDoughnutChart = `<svg xmlns="http://www.w3.org/2000/svg" class="skeleton"
|
|
||||||
height="250" viewBox="0 0 24 24">
|
|
||||||
<path class="skeleton" d="M13 6c2.507.423 4.577 2.493 5 5h4c-.471-4.717-4.283-8.529-9-9v4z"></path>
|
|
||||||
<path class="skeleton" d="M18 13c-.478 2.833-2.982 4.949-5.949 4.949-3.309 0-6-2.691-6-6C6.051 8.982 8.167 6.478 11 6V2c-5.046.504-8.949 4.773-8.949 9.949 0 5.514 4.486 10 10 10 5.176 0 9.445-3.903 9.949-8.949h-4z"></path>
|
|
||||||
</svg>`;
|
|
||||||
|
|
||||||
var statReqArr = [];
|
|
||||||
|
|
||||||
fnMakeSkeleton();
|
|
||||||
AppSupport.sleep(3000).then(() => fnMakeStatReq($("#layout-navbar input[name='taskSeCd']:checked").val()));
|
|
||||||
|
|
||||||
|
|
||||||
//데이터 로딩 전 이미지 표시
|
|
||||||
function fnMakeSkeleton(){
|
|
||||||
|
|
||||||
$("#lineChart").hide();
|
|
||||||
$("#doughnutChart1").hide();
|
|
||||||
$("#doughnutChart2").hide();
|
|
||||||
$("#doughnutChart3").hide();
|
|
||||||
|
|
||||||
$("#lineChartCardBody").append(falseLineChart);
|
|
||||||
$("#doughnutChart1CardBody").append(falseDoughnutChart);
|
|
||||||
$("#doughnutChart2CardBody").append(falseDoughnutChart);
|
|
||||||
$("#doughnutChart3CardBody").append(falseDoughnutChart);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//통계 요청 데이터 생성(여러 건)
|
|
||||||
function fnMakeStatReq(taskSeCd){
|
|
||||||
var lastDay = TODAY().replaceAll("-","");
|
|
||||||
var firstDay = DateSupport.getAddDay(-14).replaceAll("-","");
|
|
||||||
|
|
||||||
var defaultQuery = {};
|
|
||||||
|
|
||||||
|
|
||||||
//단속구분별 전체/완료 건수
|
|
||||||
defaultQuery = {
|
|
||||||
structureType : "dummy",
|
|
||||||
statDomain : "crdn",
|
|
||||||
groupInfoList : [
|
|
||||||
{
|
|
||||||
refCol : "CRDN_SE_CD",
|
|
||||||
ctgrType : "code",
|
|
||||||
dtlCtgr : "FIM002"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
codeSubsetInfoList : [
|
|
||||||
{
|
|
||||||
sourceGroup : "FIM002",
|
|
||||||
sourceCodes : ["08","09","10","11"],
|
|
||||||
targetCode : "minwon",
|
|
||||||
targetCodeVal : "민원"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
sourceGroup : "FIM002",
|
|
||||||
sourceCodes : ["06","13"],
|
|
||||||
targetCode : "dobo",
|
|
||||||
targetCodeVal : "도보"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
fixedItemId : ["01","02","minwon","dobo"],
|
|
||||||
namedNumberValueSeperator : "completeAndTotal",
|
|
||||||
globalAggregate : "count",
|
|
||||||
taskSeCd : taskSeCd,
|
|
||||||
dayColumn : "REG_DT",
|
|
||||||
firstDay : firstDay,
|
|
||||||
lastDay : lastDay
|
|
||||||
};
|
|
||||||
|
|
||||||
defaultQuery = FimsSupport.fnJsonToFormData(defaultQuery, "groupInfoList");
|
|
||||||
defaultQuery = FimsSupport.fnJsonToFormData(defaultQuery, "numberValueInfoList");
|
|
||||||
defaultQuery = FimsSupport.fnJsonToFormData(defaultQuery, "codeSubsetInfoList");
|
|
||||||
|
|
||||||
statReqArr.push({
|
|
||||||
query : defaultQuery,
|
|
||||||
cursor : "card1",
|
|
||||||
statType : "progressAndTotal"
|
|
||||||
});
|
|
||||||
|
|
||||||
//초기자료처리별 전체/완료건수
|
|
||||||
defaultQuery = {
|
|
||||||
structureType : "dummy",
|
|
||||||
statDomain : "crdn",
|
|
||||||
groupInfoList : [
|
|
||||||
{
|
|
||||||
refCol : "등록대상이첩대상구분",
|
|
||||||
ctgrType : "code",
|
|
||||||
dtlCtgr : "FIM999"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
fixedItemId : ["등록대상","이첩대상"],
|
|
||||||
namedNumberValueSeperator : "completeAndTotal",
|
|
||||||
globalAggregate : "count",
|
|
||||||
taskSeCd : taskSeCd,
|
|
||||||
dayColumn : "REG_DT",
|
|
||||||
firstDay : firstDay,
|
|
||||||
lastDay : lastDay
|
|
||||||
};
|
|
||||||
|
|
||||||
defaultQuery = FimsSupport.fnJsonToFormData(defaultQuery, "groupInfoList");
|
|
||||||
defaultQuery = FimsSupport.fnJsonToFormData(defaultQuery, "numberValueInfoList");
|
|
||||||
defaultQuery = FimsSupport.fnJsonToFormData(defaultQuery, "codeSubsetInfoList");
|
|
||||||
|
|
||||||
statReqArr.push({
|
|
||||||
query : defaultQuery,
|
|
||||||
cursor : "card2",
|
|
||||||
statType : "progressAndTotal"
|
|
||||||
});
|
|
||||||
|
|
||||||
//발송문서별 전체/완료 건수
|
|
||||||
defaultQuery = {
|
|
||||||
structureType : "dummy",
|
|
||||||
statDomain : "sndb",
|
|
||||||
groupInfoList : [
|
|
||||||
{
|
|
||||||
refCol : "SNDNG_SE_CD",
|
|
||||||
ctgrType : "code",
|
|
||||||
dtlCtgr : "FIM047"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
codeSubsetInfoList : [
|
|
||||||
{
|
|
||||||
sourceGroup : "FIM047",
|
|
||||||
sourceCodes : ["01","02"],
|
|
||||||
targetCode : "satong",
|
|
||||||
targetCodeVal : "사전통지서"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
fixedItemId : ["satong", "03", "11"],
|
|
||||||
namedNumberValueSeperator : "completeAndTotal",
|
|
||||||
globalAggregate : "count",
|
|
||||||
taskSeCd : taskSeCd,
|
|
||||||
dayColumn : "REG_DT",
|
|
||||||
firstDay : firstDay,
|
|
||||||
lastDay : lastDay
|
|
||||||
};
|
|
||||||
|
|
||||||
defaultQuery = FimsSupport.fnJsonToFormData(defaultQuery, "groupInfoList");
|
|
||||||
defaultQuery = FimsSupport.fnJsonToFormData(defaultQuery, "numberValueInfoList");
|
|
||||||
defaultQuery = FimsSupport.fnJsonToFormData(defaultQuery, "codeSubsetInfoList");
|
|
||||||
|
|
||||||
statReqArr.push({
|
|
||||||
query : defaultQuery,
|
|
||||||
cursor : "card3",
|
|
||||||
statType : "progressAndTotal"
|
|
||||||
});
|
|
||||||
|
|
||||||
//의견진술자료상태
|
|
||||||
defaultQuery = {
|
|
||||||
structureType : "dummy",
|
|
||||||
statDomain : "excl",
|
|
||||||
groupInfoList : [
|
|
||||||
{
|
|
||||||
refCol : "OPNN_SBMSN_STTS_CD",
|
|
||||||
ctgrType : "code",
|
|
||||||
dtlCtgr : "FIM031"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
codeSubsetInfoList : [
|
|
||||||
{
|
|
||||||
sourceGroup : "FIM031",
|
|
||||||
sourceCodes : ["01","02"],
|
|
||||||
targetCode : "acceptOrNonAccept",
|
|
||||||
targetCodeVal : "수용/미수용"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
fixedItemId : ["00", "acceptOrNonAccept", "03"],
|
|
||||||
namedNumberValueSeperator : "completeAndTotal",
|
|
||||||
globalAggregate : "count",
|
|
||||||
taskSeCd : taskSeCd,
|
|
||||||
dayColumn : "REG_DT",
|
|
||||||
firstDay : firstDay,
|
|
||||||
lastDay : lastDay
|
|
||||||
};
|
|
||||||
|
|
||||||
defaultQuery = FimsSupport.fnJsonToFormData(defaultQuery, "groupInfoList");
|
|
||||||
defaultQuery = FimsSupport.fnJsonToFormData(defaultQuery, "numberValueInfoList");
|
|
||||||
defaultQuery = FimsSupport.fnJsonToFormData(defaultQuery, "codeSubsetInfoList");
|
|
||||||
|
|
||||||
statReqArr.push({
|
|
||||||
query : defaultQuery,
|
|
||||||
cursor : "card4",
|
|
||||||
statType : "progressAndTotal"
|
|
||||||
});
|
|
||||||
|
|
||||||
//단속구분별 최근n일 건수
|
|
||||||
defaultQuery = {
|
|
||||||
structureType : "aggregate",
|
|
||||||
statDomain : "crdn",
|
|
||||||
groupInfoList : [
|
|
||||||
{
|
|
||||||
refCol : "CRDN_SE_CD",
|
|
||||||
ctgrType : "code",
|
|
||||||
dtlCtgr : "FIM002"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
codeSubsetInfoList : [
|
|
||||||
{
|
|
||||||
sourceGroup : "FIM002",
|
|
||||||
sourceCodes : ["08","09","10","11"],
|
|
||||||
targetCode : "minwon",
|
|
||||||
targetCodeVal : "민원"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
sourceGroup : "FIM002",
|
|
||||||
sourceCodes : ["06","13"],
|
|
||||||
targetCode : "dobo",
|
|
||||||
targetCodeVal : "도보"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
fixedItemId : ["01","02","dobo","minwon"],
|
|
||||||
namedNumberValueSeperator : "lastFewDays",
|
|
||||||
globalAggregate : "count",
|
|
||||||
taskSeCd : taskSeCd,
|
|
||||||
dayColumn : "CRDN_YMD",
|
|
||||||
dayRange : 15
|
|
||||||
};
|
|
||||||
|
|
||||||
defaultQuery = FimsSupport.fnJsonToFormData(defaultQuery, "groupInfoList");
|
|
||||||
defaultQuery = FimsSupport.fnJsonToFormData(defaultQuery, "numberValueInfoList");
|
|
||||||
defaultQuery = FimsSupport.fnJsonToFormData(defaultQuery, "codeSubsetInfoList");
|
|
||||||
|
|
||||||
statReqArr.push({
|
|
||||||
query : defaultQuery,
|
|
||||||
cursor : "lineChart",
|
|
||||||
statType : "line"
|
|
||||||
});
|
|
||||||
|
|
||||||
//초기자료처리별 건수 차트
|
|
||||||
defaultQuery = {
|
|
||||||
structureType : "aggregate",
|
|
||||||
statDomain : "crdnSttsHstry",
|
|
||||||
groupInfoList : [
|
|
||||||
{
|
|
||||||
refCol : "CRDN_STTS_CD",
|
|
||||||
ctgrType : "code",
|
|
||||||
dtlCtgr : "FIM010"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
numberValueInfoList : [
|
|
||||||
{
|
|
||||||
aggregateType : "count"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
codeSubsetInfoList : [
|
|
||||||
{
|
|
||||||
sourceGroup : "FIM010",
|
|
||||||
sourceCodes : ["21"],
|
|
||||||
targetCode : "dansokProcess",
|
|
||||||
targetCodeVal : "단속"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
fixedItemId : ["dansokProcess","81","83"],
|
|
||||||
taskSeCd : taskSeCd,
|
|
||||||
dayColumn : "REG_DT",
|
|
||||||
firstDay : firstDay,
|
|
||||||
lastDay : firstDay
|
|
||||||
};
|
|
||||||
|
|
||||||
defaultQuery = FimsSupport.fnJsonToFormData(defaultQuery, "groupInfoList");
|
|
||||||
defaultQuery = FimsSupport.fnJsonToFormData(defaultQuery, "numberValueInfoList");
|
|
||||||
defaultQuery = FimsSupport.fnJsonToFormData(defaultQuery, "codeSubsetInfoList");
|
|
||||||
|
|
||||||
statReqArr.push({
|
|
||||||
query : defaultQuery,
|
|
||||||
cursor : "doughnutChart1",
|
|
||||||
statType : "doughnut"
|
|
||||||
});
|
|
||||||
|
|
||||||
//발송문서종류별 건수 차트
|
|
||||||
defaultQuery = {
|
|
||||||
structureType : "aggregate",
|
|
||||||
statDomain : "sndb",
|
|
||||||
groupInfoList : [
|
|
||||||
{
|
|
||||||
refCol : "SNDNG_SE_CD",
|
|
||||||
ctgrType : "code",
|
|
||||||
dtlCtgr : "FIM047"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
numberValueInfoList : [
|
|
||||||
{
|
|
||||||
aggregateType : "count"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
codeSubsetInfoList : [
|
|
||||||
{
|
|
||||||
sourceGroup : "FIM047",
|
|
||||||
sourceCodes : ["01","02"],
|
|
||||||
targetCode : "satong",
|
|
||||||
targetCodeVal : "사전통지서"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
fixedItemId : ["satong", "03", "11"],
|
|
||||||
taskSeCd : taskSeCd,
|
|
||||||
dayColumn : "SNDNG_YMD",
|
|
||||||
firstDay : firstDay,
|
|
||||||
lastDay : firstDay
|
|
||||||
};
|
|
||||||
|
|
||||||
defaultQuery = FimsSupport.fnJsonToFormData(defaultQuery, "groupInfoList");
|
|
||||||
defaultQuery = FimsSupport.fnJsonToFormData(defaultQuery, "numberValueInfoList");
|
|
||||||
defaultQuery = FimsSupport.fnJsonToFormData(defaultQuery, "codeSubsetInfoList");
|
|
||||||
|
|
||||||
statReqArr.push({
|
|
||||||
query : defaultQuery,
|
|
||||||
cursor : "doughnutChart2",
|
|
||||||
statType : "doughnut"
|
|
||||||
});
|
|
||||||
|
|
||||||
//의견진술결과별 건수 차트
|
|
||||||
defaultQuery = {
|
|
||||||
structureType : "aggregate",
|
|
||||||
statDomain : "excl",
|
|
||||||
groupInfoList : [
|
|
||||||
{
|
|
||||||
refCol : "OPNN_SBMSN_STTS_CD",
|
|
||||||
ctgrType : "code",
|
|
||||||
dtlCtgr : "FIM031"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
numberValueInfoList : [
|
|
||||||
{
|
|
||||||
aggregateType : "count"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
fixedItemId : ["01", "02", "03"],
|
|
||||||
taskSeCd : taskSeCd,
|
|
||||||
dayColumn : "REG_DT",
|
|
||||||
firstDay : firstDay,
|
|
||||||
lastDay : firstDay
|
|
||||||
};
|
|
||||||
|
|
||||||
defaultQuery = FimsSupport.fnJsonToFormData(defaultQuery, "groupInfoList");
|
|
||||||
defaultQuery = FimsSupport.fnJsonToFormData(defaultQuery, "numberValueInfoList");
|
|
||||||
defaultQuery = FimsSupport.fnJsonToFormData(defaultQuery, "codeSubsetInfoList");
|
|
||||||
|
|
||||||
statReqArr.push({
|
|
||||||
query : defaultQuery,
|
|
||||||
cursor : "doughnutChart3",
|
|
||||||
statType : "doughnut"
|
|
||||||
});
|
|
||||||
|
|
||||||
fnLoadStatisticsData();
|
|
||||||
}
|
|
||||||
|
|
||||||
//통계 데이터 조회
|
|
||||||
function fnLoadStatisticsData(){
|
|
||||||
var statArr = statReqArr.pop();
|
|
||||||
|
|
||||||
ajax.get({
|
|
||||||
url : wctx.url("/stat/stat01/010/info.do"),
|
|
||||||
data : statArr.query,
|
|
||||||
success : (resp) => {
|
|
||||||
var statData = resp.stat;
|
|
||||||
|
|
||||||
if(statData != null && statData.statItems != null){
|
|
||||||
fnRenderDashboardContents(statData, statArr.cursor , statArr.statType);
|
|
||||||
}
|
|
||||||
|
|
||||||
if(statReqArr.length != 0){
|
|
||||||
fnLoadStatisticsData();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
//대시보드 콘텐츠 표시
|
|
||||||
function fnRenderDashboardContents(returnData, cursor, statType){
|
|
||||||
|
|
||||||
if(statType == "progressAndTotal"){
|
|
||||||
fnRenderProgressAndTotal(returnData, cursor);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if(statType == "line"){
|
|
||||||
fnRenderLine(returnData, cursor);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if(statType == "doughnut"){
|
|
||||||
fnRenderDoughnut(returnData, cursor);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
//진행건수,전체건수 표시
|
|
||||||
function fnRenderProgressAndTotal(returnData, cursor){
|
|
||||||
|
|
||||||
for(var i=0; i < returnData.statItems.length; i++){
|
|
||||||
var icon = $("#"+cursor).find("i[title='" + returnData.statItems[i].itemName[0] + "']");
|
|
||||||
var p = icon.prev("p");
|
|
||||||
p.html(returnData.statItems[i].numberValue[0] + "/" + returnData.statItems[i].numberValue[1]);
|
|
||||||
}
|
|
||||||
|
|
||||||
if(cursor == "card1"){
|
|
||||||
FimsSupport.mappingButtonAndMenu("btnGoToCrdn","단속 관리");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if(cursor == "card2"){
|
|
||||||
FimsSupport.mappingButtonAndMenu("btnGoToOpnn","의견제출 관리");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//라인차트 표시
|
|
||||||
function fnRenderLine(returnData, cursor){
|
|
||||||
var yellowColor = '#ffe800';
|
|
||||||
var cyanColor = '#28dac6';
|
|
||||||
var orangeLightColor = '#FDAC34';
|
|
||||||
var redColor = '#FF3E1D';
|
|
||||||
var indigoColor = '#696CFF';
|
|
||||||
|
|
||||||
var ctgrColorSet = [yellowColor,cyanColor,orangeLightColor,redColor,indigoColor];
|
|
||||||
|
|
||||||
var borderColor = '#f0f0f0';
|
|
||||||
var gridColor = '#f0f0f0';
|
|
||||||
var tickColor = 'rgba(0, 0, 0, 0.75)'; // x & y axis tick color
|
|
||||||
|
|
||||||
$("#"+cursor).siblings("svg").remove();
|
|
||||||
|
|
||||||
$("#"+cursor).show();
|
|
||||||
|
|
||||||
var maxOfStat = 0;
|
|
||||||
var minOfStat = 0;
|
|
||||||
|
|
||||||
var datasets = [];
|
|
||||||
for(var i=0; i < returnData.statItems.length; i++){
|
|
||||||
var defaultObject = {
|
|
||||||
tension: 0.5,
|
|
||||||
pointStyle: 'circle',
|
|
||||||
fill: false,
|
|
||||||
pointRadius: 1,
|
|
||||||
pointHoverRadius: 5,
|
|
||||||
pointHoverBorderWidth: 5,
|
|
||||||
pointBorderColor: 'transparent',
|
|
||||||
pointHoverBorderColor: config.colors.cardColor
|
|
||||||
};
|
|
||||||
|
|
||||||
defaultObject.label = returnData.statItems[i].itemName[0];
|
|
||||||
|
|
||||||
defaultObject.data = returnData.statItems[i].numberValue;
|
|
||||||
|
|
||||||
var maxOfStatItem = Math.max(defaultObject.data);
|
|
||||||
var minOfStatItem = Math.min(defaultObject.data);
|
|
||||||
|
|
||||||
if(maxOfStatItem > maxOfStat){
|
|
||||||
maxOfStat = maxOfStatItem;
|
|
||||||
}
|
|
||||||
if(minOfStatItem < minOfStat){
|
|
||||||
minOfStat = minOfStatItem;
|
|
||||||
}
|
|
||||||
|
|
||||||
defaultObject.backgroundColor = ctgrColorSet[i % ctgrColorSet.length];
|
|
||||||
defaultObject.pointHoverBackgroundColor = ctgrColorSet[i % ctgrColorSet.length];
|
|
||||||
defaultObject.borderColor = ctgrColorSet[i % ctgrColorSet.length];
|
|
||||||
|
|
||||||
datasets.push(defaultObject);
|
|
||||||
}
|
|
||||||
|
|
||||||
var xAxisLabels = returnData.numberValueLabel;
|
|
||||||
|
|
||||||
var yAxisConf = initYAxis(maxOfStat, minOfStat);
|
|
||||||
|
|
||||||
var lineChart = document.getElementById(cursor);
|
|
||||||
if (lineChart) {
|
|
||||||
var lineChartVar = new Chart(lineChart, {
|
|
||||||
type: 'line',
|
|
||||||
data: {
|
|
||||||
labels: xAxisLabels,
|
|
||||||
datasets: datasets
|
|
||||||
},
|
|
||||||
options: {
|
|
||||||
lineTension : 0,
|
|
||||||
responsive: true,
|
|
||||||
maintainAspectRatio: false,
|
|
||||||
scales: {
|
|
||||||
x: {
|
|
||||||
grid: {
|
|
||||||
color: borderColor,
|
|
||||||
drawBorder: false,
|
|
||||||
borderColor: borderColor
|
|
||||||
},
|
|
||||||
ticks: {
|
|
||||||
color: "black"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
y: {
|
|
||||||
scaleLabel: {
|
|
||||||
display: true
|
|
||||||
},
|
|
||||||
min: yAxisConf.yAxisMin,
|
|
||||||
max: yAxisConf.yAxisMax,
|
|
||||||
ticks: {
|
|
||||||
color: "black",
|
|
||||||
stepSize: yAxisConf.yAxisStep
|
|
||||||
},
|
|
||||||
grid: {
|
|
||||||
color: borderColor,
|
|
||||||
drawBorder: false,
|
|
||||||
borderColor: borderColor
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
plugins: {
|
|
||||||
tooltip: {
|
|
||||||
rtl: true,
|
|
||||||
backgroundColor: config.colors.cardColor,
|
|
||||||
titleColor: config.colors.headingColor,
|
|
||||||
bodyColor: config.colors.bodyColor,
|
|
||||||
borderWidth: 1,
|
|
||||||
borderColor: borderColor
|
|
||||||
},
|
|
||||||
legend: {
|
|
||||||
position: 'left',
|
|
||||||
align: 'stretch',
|
|
||||||
rtl: true,
|
|
||||||
labels: {
|
|
||||||
usePointStyle: true,
|
|
||||||
padding: 6,
|
|
||||||
boxWidth: 12,
|
|
||||||
boxHeight: 30,
|
|
||||||
color: "black"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
return;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
//도넛차트 표시
|
|
||||||
function fnRenderDoughnut(returnData, cursor){
|
|
||||||
var yellowColor = '#ffe800';
|
|
||||||
var cyanColor = '#28dac6';
|
|
||||||
var orangeLightColor = '#FDAC34';
|
|
||||||
var redColor = '#FF3E1D';
|
|
||||||
var indigoColor = '#696CFF';
|
|
||||||
|
|
||||||
var ctgrColorSet = [yellowColor,cyanColor,orangeLightColor,redColor,indigoColor];
|
|
||||||
|
|
||||||
var borderColor = '#f0f0f0';
|
|
||||||
var gridColor = '#f0f0f0';
|
|
||||||
var tickColor = 'rgba(0, 0, 0, 0.75)'; // x & y axis tick color
|
|
||||||
|
|
||||||
var cardColor = config.colors.cardColor;
|
|
||||||
var headingColor = config.colors.headingColor;
|
|
||||||
var labelColor = config.colors.textMuted;
|
|
||||||
var legendColor = config.colors.bodyColor;
|
|
||||||
|
|
||||||
$("#"+cursor).siblings("svg").remove();
|
|
||||||
$("#"+cursor).show();
|
|
||||||
|
|
||||||
|
|
||||||
var lebels = [];
|
|
||||||
var datas = [];
|
|
||||||
var colors = [];
|
|
||||||
for(var i=0; i < returnData.statItems.length; i++){
|
|
||||||
lebels.push(returnData.statItems[i].itemName[0]);
|
|
||||||
datas.push(returnData.statItems[i].numberValue[0]);
|
|
||||||
|
|
||||||
colors.push(ctgrColorSet[i % ctgrColorSet.length]);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
var doughnutChart = document.getElementById(cursor);
|
|
||||||
if (doughnutChart) {
|
|
||||||
var doughnutChartVar = new Chart(doughnutChart, {
|
|
||||||
type: 'doughnut',
|
|
||||||
data: {
|
|
||||||
labels: lebels,
|
|
||||||
datasets: [
|
|
||||||
{
|
|
||||||
data: datas,
|
|
||||||
backgroundColor: colors,
|
|
||||||
borderWidth: 1,
|
|
||||||
pointStyle: 'rectRounded'
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
options: {
|
|
||||||
responsive: true,
|
|
||||||
animation: {
|
|
||||||
duration: 500
|
|
||||||
},
|
|
||||||
cutout: '68%',
|
|
||||||
plugins: {
|
|
||||||
legend: {
|
|
||||||
display: true,
|
|
||||||
position : 'left'
|
|
||||||
},
|
|
||||||
tooltip: {
|
|
||||||
callbacks: {
|
|
||||||
label: function (context) {
|
|
||||||
const label = context.label || '';
|
|
||||||
const value = context.parsed;
|
|
||||||
const output = ' ' + label + ' : ' + value + ' 건';
|
|
||||||
return output;
|
|
||||||
}
|
|
||||||
},
|
|
||||||
// Updated default tooltip UI
|
|
||||||
rtl: true,
|
|
||||||
backgroundColor: cardColor,
|
|
||||||
titleColor: headingColor,
|
|
||||||
bodyColor: legendColor,
|
|
||||||
borderWidth: 1,
|
|
||||||
borderColor: borderColor
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
return;
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
//차트y축 표시최대값,표시최소값,간격 설정
|
|
||||||
function initYAxis(max, min){
|
|
||||||
|
|
||||||
if(max <= 10){
|
|
||||||
var yAxisConf = {
|
|
||||||
yAxisMax : 10,
|
|
||||||
yAxisMin : 0,
|
|
||||||
yAxisStep : 2
|
|
||||||
};
|
|
||||||
|
|
||||||
return yAxisConf;
|
|
||||||
}
|
|
||||||
|
|
||||||
if(max <= 100){
|
|
||||||
var yAxisConf = {
|
|
||||||
yAxisMax : 100,
|
|
||||||
yAxisMin : 0,
|
|
||||||
yAxisStep : 20
|
|
||||||
};
|
|
||||||
|
|
||||||
return yAxisConf;
|
|
||||||
}
|
|
||||||
|
|
||||||
var yAxisMax = Math.ceil(max / 100) * 100
|
|
||||||
var yAxisMin = Math.floor(min / 100) * 100;
|
|
||||||
|
|
||||||
if(yAxisMax - yAxisMin <= 100){
|
|
||||||
yAxisMin = yAxisMax - 100;
|
|
||||||
}
|
|
||||||
|
|
||||||
var yAxisStep = (yAxisMax - yAxisMin)/5;
|
|
||||||
|
|
||||||
var yAxisConf = {
|
|
||||||
yAxisMax : yAxisMax,
|
|
||||||
yAxisMin : yAxisMin,
|
|
||||||
yAxisStep : yAxisStep
|
|
||||||
};
|
|
||||||
return yAxisConf;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
</c:set>
|
|
@ -1,22 +0,0 @@
|
|||||||
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" isELIgnored="false" session="false"%>
|
|
||||||
<%@ include file="/WEB-INF/jsp/include/taglib.jsp"%>
|
|
||||||
<!-- Footer -->
|
|
||||||
<footer class="content-footer footer bg-footer-theme align-self-stretch" style="height:1.5rem">
|
|
||||||
<div class="container-xxl d-flex flex-wrap justify-content-between py-0 flex-md-row flex-column">
|
|
||||||
<div class="mb-2 mb-md-0 w-100">
|
|
||||||
© <span id="footerYear"></span>, made with XIT Base by
|
|
||||||
<script>
|
|
||||||
document.getElementById("footerYear").innerText = new Date().getFullYear();
|
|
||||||
</script>
|
|
||||||
<a target="_blank" class="footer-link fw-bold"
|
|
||||||
href="https://xit.co.kr">(주)엑스아이티
|
|
||||||
</a>
|
|
||||||
<span class="float-end">
|
|
||||||
<a target="_blank" class="mx-2 footer-link fw-bold"
|
|
||||||
href="https://www.enis.go.kr">세외수입시스템
|
|
||||||
</a>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</footer>
|
|
||||||
<!-- / Footer -->
|
|
@ -1,42 +0,0 @@
|
|||||||
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" isELIgnored="false" session="false"%>
|
|
||||||
<%@ include file="/WEB-INF/jsp/include/taglib.jsp"%>
|
|
||||||
<!DOCTYPE html><c:set var="appName" scope="request">과태료통합관리시스템</c:set>
|
|
||||||
<html
|
|
||||||
lang="kr"
|
|
||||||
class="light-style layout-menu-fixed "
|
|
||||||
dir="ltr"
|
|
||||||
data-theme="theme-default"
|
|
||||||
data-assets-path="<c:url value="/resources/"/>"
|
|
||||||
data-template="vertical-menu-template-starter">
|
|
||||||
<head>
|
|
||||||
<meta charset="UTF-8">
|
|
||||||
<title>${appName}</title>
|
|
||||||
|
|
||||||
<!-- Favicon -->
|
|
||||||
<link rel="icon" type="image/x-icon" href="<c:url value="/webjars/image/favicon.ico"/>" />
|
|
||||||
<!-- Fonts -->
|
|
||||||
<link rel="stylesheet" href="<c:url value="/resources/fonts/notoSansKr/fontface.css"/>" />
|
|
||||||
<!-- Icons. Uncomment required icon fonts -->
|
|
||||||
<link rel="stylesheet" href="<c:url value="/webjars/3rd-party/sneat/fonts/boxicons.css"/>" />
|
|
||||||
<link rel="stylesheet" href="<c:url value="/webjars/3rd-party/sneat/fonts/fontawesome.css"/>" />
|
|
||||||
<link rel="stylesheet" href="<c:url value="/resources/fonts/bootstrap-icons.css"/>" />
|
|
||||||
<link rel="stylesheet" href="<c:url value="/resources/fonts/material-icons.css"/>" />
|
|
||||||
<link rel="stylesheet" href="<c:url value="/resources/fonts/xit-icon.css"/>" />
|
|
||||||
|
|
||||||
<!-- Core CSS -->
|
|
||||||
<link rel="stylesheet" href="<c:url value="/webjars/3rd-party/sneat/css/rtl/core.css"/>" class="template-customizer-core-css" />
|
|
||||||
<link rel="stylesheet" href="<c:url value="/webjars/3rd-party/sneat/css/rtl/theme-default.css"/>" class="template-customizer-theme-css" />
|
|
||||||
<link rel="stylesheet" href="<c:url value="/webjars/css/styles.css"/>" />
|
|
||||||
|
|
||||||
<link rel="stylesheet" href="<c:url value="/webjars/applib/css/overwrite.css?${ver}"/>" />
|
|
||||||
<link rel="stylesheet" href="<c:url value="/webjars/applib/css/applib.css?${ver}"/>" />
|
|
||||||
<link rel="stylesheet" href="<c:url value="/resources/css/fims.css?${ver}"/>" />
|
|
||||||
|
|
||||||
<!-- Vendors CSS -->
|
|
||||||
<link rel="stylesheet" href="<c:url value="/webjars/3rd-party/sneat/libs/perfect-scrollbar/perfect-scrollbar.css"/>" />
|
|
||||||
<link rel="stylesheet" href="<c:url value="/webjars/3rd-party/sneat/libs/jstree/jstree.css"/>" />
|
|
||||||
<link rel="stylesheet" href="<c:url value="/webjars/3rd-party/sneat/libs/bootstrap-datepicker/bootstrap-datepicker.css"/>" />
|
|
||||||
<link rel="stylesheet" href="<c:url value="/webjars/3rd-party/sneat/libs/fullcalendar/fullcalendar.css"/>" />
|
|
||||||
<link rel="stylesheet" href="<c:url value="/webjars/3rd-party/sneat/libs/bs-stepper/bs-stepper.css"/>" />
|
|
||||||
</head>
|
|
||||||
|
|
@ -1,4 +0,0 @@
|
|||||||
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" isELIgnored="false" session="false"
|
|
||||||
%><%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"
|
|
||||||
%><%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"
|
|
||||||
%><%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
|
|
@ -1,102 +0,0 @@
|
|||||||
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" isELIgnored="false" session="false"%>
|
|
||||||
<%@ include file="/WEB-INF/jsp/include/taglib.jsp"%>
|
|
||||||
<div class="spinner-border spinner-border-lg text-primary wait" style="display:none;" role="status">
|
|
||||||
<span class="visually-hidden">Loading...</span>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- Core JS -->
|
|
||||||
<script src="<c:url value="/webjars/3rd-party/sneat/libs/popper/popper.js"/>"></script>
|
|
||||||
<script src="<c:url value="/webjars/3rd-party/sneat/js/bootstrap.js"/>"></script>
|
|
||||||
<script src="<c:url value="/webjars/3rd-party/sneat/libs/jquery/jquery.js"/>"></script>
|
|
||||||
<script src="<c:url value="/webjars/3rd-party/jquery-ui/1.13.2/jquery-ui.js"/>"></script>
|
|
||||||
|
|
||||||
<script src="<c:url value="/webjars/3rd-party/sneat/js/config.js"/>"></script>
|
|
||||||
<script src="<c:url value="/webjars/3rd-party/sneat/libs/perfect-scrollbar/perfect-scrollbar.js"/>"></script>
|
|
||||||
<script src="<c:url value="/webjars/3rd-party/sneat/js/helpers.js"/>"></script>
|
|
||||||
<script src="<c:url value="/webjars/3rd-party/sneat/js/menu.js"/>"></script>
|
|
||||||
<script src="<c:url value="/webjars/3rd-party/sneat/libs/jstree/jstree.js"/>"></script>
|
|
||||||
<script src="<c:url value="/webjars/3rd-party/jstree/jstree-support.js"/>"></script>
|
|
||||||
<script src="<c:url value="/webjars/3rd-party/sneat/libs/jquery-sticky/jquery-sticky.js" />"></script>
|
|
||||||
<script src="<c:url value="/webjars/3rd-party/sneat/libs/bootstrap-datepicker/bootstrap-datepicker.js"/>"></script>
|
|
||||||
<!-- 전체화면 비활성화 -->
|
|
||||||
<script src="<c:url value="/webjars/3rd-party/sneat/libs/block-ui/block-ui.js"/>"></script>
|
|
||||||
|
|
||||||
<!-- base -->
|
|
||||||
<script src="<c:url value="/webjars/js/base/base.js"/>"></script>
|
|
||||||
<script src="<c:url value="/webjars/js/base/dataset.js"/>"></script>
|
|
||||||
<script src="<c:url value="/webjars/js/base/dataset-support.js"/>"></script>
|
|
||||||
<script src="<c:url value="/webjars/js/base/upload-support.js?${ver}"/>"></script>
|
|
||||||
<script src="<c:url value="/webjars/js/base/code.js"/>"></script>
|
|
||||||
<script src="<c:url value="/webjars/js/base/code-support.js"/>"></script>
|
|
||||||
<script src="<c:url value="/webjars/js/base/menu.js"/>"></script>
|
|
||||||
<script src="<c:url value="/webjars/js/base/menu-support.js"/>"></script>
|
|
||||||
<script src="<c:url value="/webjars/js/base/actionGroup.js"/>"></script>
|
|
||||||
<script src="<c:url value="/webjars/js/base/user.js"/>"></script>
|
|
||||||
<script src="<c:url value="/webjars/js/base/sgg-dept.js"/>"></script>
|
|
||||||
<script src="<c:url value="/webjars/js/base/authority.js"/>"></script>
|
|
||||||
<!-- base:사전정의요소 클립보드 저장 -->
|
|
||||||
<script src="<c:url value="/webjars/js/support/toolPalette.js?${ver}"/>"></script>
|
|
||||||
|
|
||||||
<!-- 공통 유틸(applib) -->
|
|
||||||
<script src="<c:url value="/webjars/applib/js/app-base.js?${ver}"/>"></script>
|
|
||||||
<script src="<c:url value="/webjars/applib/js/string-support.js?${ver}"/>"></script>
|
|
||||||
<script src="<c:url value="/webjars/applib/js/date-support.js?${ver}"/>"></script>
|
|
||||||
<script src="<c:url value="/webjars/applib/js/app-support.js?${ver}"/>"></script>
|
|
||||||
<script src="<c:url value="/webjars/applib/js/componentization.js?${ver}"/>"></script>
|
|
||||||
|
|
||||||
<script src="<c:url value="/resources/js/fims/cmmn/fims-base.js?${ver}"/>"></script>
|
|
||||||
<script src="<c:url value="/resources/js/fims/cmmn/customElements.js?${ver}"/>"></script>
|
|
||||||
<script src="<c:url value="/resources/js/fims/cmmn/fims-support.js?${ver}"/>"></script>
|
|
||||||
<script src="<c:url value="/resources/js/fims/cmmn/fims-componentization.js?${ver}"/>"></script>
|
|
||||||
|
|
||||||
<!-- 개발 편의성 유틸 -->
|
|
||||||
<script src="<c:url value="/resources/js/fims/cmmn/detect.js?${ver}"/>"></script>
|
|
||||||
<script src="<c:url value="/resources/js/fims/cmmn/objectInspector.js?${ver}"/>"></script>
|
|
||||||
<script src="<c:url value="/resources/js/fims/cmmn/registByXml.js?${ver}"/>"></script>
|
|
||||||
|
|
||||||
<!-- endbuild -->
|
|
||||||
<c:set var="functions" scope="request">
|
|
||||||
wctx.path = "${pageContext.request.contextPath}";
|
|
||||||
wctx.version = "${ver}";
|
|
||||||
wctx.trace = ${!production};
|
|
||||||
wctx.csrf = {
|
|
||||||
header:"${_csrf.headerName}",
|
|
||||||
token:"${_csrf.token}"
|
|
||||||
};
|
|
||||||
dialog.title = "과태료통합관리시스템";
|
|
||||||
dialog.timeout = 0;
|
|
||||||
|
|
||||||
<c:if test="${currentUser.authenticated}">
|
|
||||||
function logout() {
|
|
||||||
dialog.alert({
|
|
||||||
content:"로그아웃 하시겠습니까?",
|
|
||||||
onOK:function(){
|
|
||||||
var form = $("<form action=\"<c:url value='/logout.do'/>\", method=\"POST\">");
|
|
||||||
$("<input name=\"${_csrf.parameterName}\" value=\"${_csrf.token}\" type=\"hidden\">").appendTo(form);
|
|
||||||
form.appendTo("body").submit();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}</c:if>
|
|
||||||
|
|
||||||
<c:if test="${currentUser.hasAuthorities('ROLE_ADMIN')}">
|
|
||||||
async function selectURL(multiple) {
|
|
||||||
return new Promise(function(resolve, reject) {
|
|
||||||
ajax.get({
|
|
||||||
url:wctx.url("/urls.do"),
|
|
||||||
data:{multiple:multiple},
|
|
||||||
success: resp => {
|
|
||||||
dialog.open({
|
|
||||||
title:"URL 선택",
|
|
||||||
content:resp,
|
|
||||||
getData:() => getSelectedURL(),
|
|
||||||
onOK:selected => {
|
|
||||||
resolve(selected);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
</c:if>
|
|
||||||
|
|
||||||
</c:set>
|
|
@ -1,576 +0,0 @@
|
|||||||
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" isELIgnored="false" session="false"%>
|
|
||||||
<%@ include file="/WEB-INF/jsp/include/taglib.jsp"%>
|
|
||||||
<!-- Navbar -->
|
|
||||||
<nav id="layout-navbar" data-doctx="top"
|
|
||||||
class="layout-navbar navbar container-xxl navbar-expand-xl navbar-detached align-items-center mt-1 mx-0 flex-nowrap">
|
|
||||||
<div class="layout-menu-toggle navbar-nav align-items-xl-center me-3 me-xl-0 d-xl-none">
|
|
||||||
<a class="nav-item nav-link px-0 me-xl-4" href="javascript:void(0)">
|
|
||||||
<i class="bx bx-menu bx-lg"></i>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="navbar-nav-right d-flex align-items-center" id="navbar-collapse">
|
|
||||||
|
|
||||||
<!-- /Search -->
|
|
||||||
<div class="ms-1 me-1 min-w-max-c">
|
|
||||||
<select id="fastBy--top" class="form-select" title="검색구분">
|
|
||||||
<option value="vhrno">차량번호</option>
|
|
||||||
<option value="rtpyrNm">납부자명</option>
|
|
||||||
<option value="rtpyrNo">납부자번호</option>
|
|
||||||
<option value="cvlcptAplcntNm">신고인명</option>
|
|
||||||
</select>
|
|
||||||
<input type="text" id="fastTerm--top" class="form-control" title="검색어" />
|
|
||||||
<button type="button" id="btnFastSearch--top" class="btn btn-outline-dark bg-orange" title="통합조회">
|
|
||||||
<i class="bx bx-search"></i>통합조회
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
<div class="me-1 min-w-max-c">
|
|
||||||
<div class="form-check-inline custom-option custom-option-basic me-1 border-default bg-top-checkbox">
|
|
||||||
<label for="securityMode--top" class="form-check-label custom-option-content d-flex justify-content-center pt-1 pb-1">
|
|
||||||
<input type="checkbox" id="securityMode--top" name="securityMode"
|
|
||||||
class="form-check-input me-1 align-self-center" value="Y" />
|
|
||||||
<span class="text-center">
|
|
||||||
보안모드<br/><kbd>F9</kbd>
|
|
||||||
</span>
|
|
||||||
</label>
|
|
||||||
</div>
|
|
||||||
<div class="form-check-inline custom-option custom-option-basic me-1 border-default bg-top-checkbox">
|
|
||||||
<label for="photoMask--top" class="form-check-label custom-option-content d-flex justify-content-center pt-1 pb-1">
|
|
||||||
<input type="checkbox" id="photoMask--top" name="photoMask"
|
|
||||||
class="form-check-input me-1 align-self-center" value="Y" checked />
|
|
||||||
<span class="text-center">
|
|
||||||
단속사진 모자이크<br/><kbd>F10</kbd>
|
|
||||||
</span>
|
|
||||||
</label>
|
|
||||||
</div>
|
|
||||||
<button type="button" id="btnOpenTempFileUploadWindow" class="btn btn-outline-dark">
|
|
||||||
외부자료 파일 처리
|
|
||||||
</button>
|
|
||||||
<button type="button" id="btnOpenSelectStngDialog" class="btn btn-outline-dark">
|
|
||||||
특화설정
|
|
||||||
</button>
|
|
||||||
<button type="button" id="btnGoToCvlcptDscsn" class="btn btn-outline-dark">
|
|
||||||
종합민원관리
|
|
||||||
</button>
|
|
||||||
<button type="button" id="btnGoToSchdl" class="btn btn-outline-dark">
|
|
||||||
일정관리
|
|
||||||
</button>
|
|
||||||
<button type="button" id="btnGoToNtc" class="btn btn-outline-dark">
|
|
||||||
공지사항
|
|
||||||
</button>
|
|
||||||
<button type="button" id="btnDownloadMenual--top" class="btn btn-primary"
|
|
||||||
>사용자 메뉴얼
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<ul class="navbar-nav flex-row align-items-center">
|
|
||||||
|
|
||||||
<!-- Style Switcher -->
|
|
||||||
<li class="nav-item me-2 me-xl-0">
|
|
||||||
<a class="nav-link style-switcher-toggle hide-arrow" href="javascript:void(0);">
|
|
||||||
<i class="bx bx-lg"></i>
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
<!--/ Style Switcher -->
|
|
||||||
|
|
||||||
|
|
||||||
<!-- User -->
|
|
||||||
<li id="userNav--top" class="nav-item navbar-dropdown dropdown-user dropdown">
|
|
||||||
<a href="javascript:void(0);" data-bs-toggle="dropdown"
|
|
||||||
class="d-flex align-items-center nav-link dropdown-toggle hide-arrow">
|
|
||||||
<div class="avatar d-flex">
|
|
||||||
<img src="<c:url value="/resources/img/user-circle-solid-24.svg"/>" alt
|
|
||||||
class="w-px-40 h-auto rounded-circle" />
|
|
||||||
<div class="d-flex flex-column">
|
|
||||||
<span class="fw-semibold text-black">${currentUser.name}</span>
|
|
||||||
<small class="text-black">${currentUser.account}</small>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</a>
|
|
||||||
<ul class="dropdown-menu dropdown-menu-end">
|
|
||||||
<li>
|
|
||||||
<a class="dropdown-item" href="#">
|
|
||||||
<div class="d-flex">
|
|
||||||
<div class="flex-shrink-0 me-3">
|
|
||||||
<div class="avatar avatar-online">
|
|
||||||
<img src="<c:url value="/resources/img/user-circle-solid-24.svg"/>" alt
|
|
||||||
class="w-px-40 h-auto rounded-circle" />
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="flex-grow-1">
|
|
||||||
<span class="fw-semibold d-block">${currentUser.name}</span>
|
|
||||||
<small class="text-muted">${currentUser.account}</small>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<div class="dropdown-divider"></div>
|
|
||||||
</li>
|
|
||||||
<li onclick="fnOpenMyInfo();">
|
|
||||||
<a class="dropdown-item" href="javascript:void(0);">
|
|
||||||
<i class="bx bx-user me-2"></i>
|
|
||||||
<span class="align-middle">계정 정보 수정</span>
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
<li onclick="fnOpenChangePassword();">
|
|
||||||
<a class="dropdown-item" href="javascript:void(0);">
|
|
||||||
<i class="bx bx-user me-2"></i>
|
|
||||||
<span class="align-middle">비밀번호 변경</span>
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<div id="taskSeCd--Top" class="d-flex flex-column align-items-center">
|
|
||||||
</div>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<div class="dropdown-divider"></div>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a class="dropdown-item" href="#" onclick="showHelp();">
|
|
||||||
<i class="bx bx-support me-2"></i>
|
|
||||||
<span class="align-middle">Help</span>
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<div class="dropdown-divider"></div>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a id="btnCancelAccount--Top" class="dropdown-item" href="#" onclick="fnCancelAccount();">
|
|
||||||
<i class="bx bx-exit me-2"></i>
|
|
||||||
<span class="align-middle">
|
|
||||||
회원탈퇴
|
|
||||||
</span>
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
<li onclick="logout();">
|
|
||||||
<a class="dropdown-item">
|
|
||||||
<i class="bx bx-power-off me-2"></i>
|
|
||||||
<span class="align-middle">로그아웃</span>
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
<!--/ User -->
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
<template id="selectStngButtonsTemplate">
|
|
||||||
<span class="row g-3 d-flex flex-column">
|
|
||||||
<button type="button" class="btn btn-xl btn-primary" onclick="fnOpenEqmCrdnLayoutStngDialog();">수신단속파일(장비) 서식 설정</button>
|
|
||||||
<button type="button" class="btn btn-xl btn-primary" onclick="fnOpenOtptStngDialog();">출력물 서식 설정</button>
|
|
||||||
<button type="button" class="btn btn-xl btn-primary" onclick="fnOpenOutsourcingStngDialog();">고지서 외주요청파일 서식 설정</button>
|
|
||||||
<button type="button" class="btn btn-xl btn-primary" onclick="fnOpenExtrStngDialog();">pdf 고지서 정보 추출 설정</button>
|
|
||||||
</span>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<c:set var="topScript" scope="request">
|
|
||||||
async function fnOpenTempFileUploadWindow(){
|
|
||||||
|
|
||||||
var resp = await fetch(wctx.url("/resources/html/fileUpload.html"));
|
|
||||||
var template = await resp.text();
|
|
||||||
|
|
||||||
dialog.open({
|
|
||||||
id : "fileUploadDialog",
|
|
||||||
title: "파일 업로드",
|
|
||||||
size : "lg",
|
|
||||||
content: template,
|
|
||||||
init : () => {
|
|
||||||
AppSupport.setDialogZindex();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/*--------------------- 설정 선택 다이얼로그 표시 ---------------------*/
|
|
||||||
function fnOpenSelectStngDialog(){
|
|
||||||
dialog.open({
|
|
||||||
id : "selectStngDialog",
|
|
||||||
title : "설정 선택",
|
|
||||||
content : document.getElementById("selectStngButtonsTemplate").innerHTML,
|
|
||||||
size : "md",
|
|
||||||
init : () => {},
|
|
||||||
onClose : () => {}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/*--------------------- 장비단속레이아웃 설정 메인 화면 표시 ---------------------*/
|
|
||||||
function fnOpenEqmCrdnLayoutStngDialog(){
|
|
||||||
dialog.close("selectStngDialog");
|
|
||||||
|
|
||||||
var url = wctx.url("/crdn/crdn01/010/main.do");
|
|
||||||
|
|
||||||
ajax.post({
|
|
||||||
url : url,
|
|
||||||
data : {},
|
|
||||||
success : (resp) => {
|
|
||||||
let dialogName = "eqmCrdnLayoutStngDialog";
|
|
||||||
let dialogId = dialogName+"-"+uuid();
|
|
||||||
|
|
||||||
dialog.open({
|
|
||||||
id : dialogId,
|
|
||||||
title : "장비단속 레이아웃 설정",
|
|
||||||
size : "xxl",
|
|
||||||
content : resp,
|
|
||||||
init : () => {
|
|
||||||
$("#"+dialogId).attr("name", dialogName);
|
|
||||||
$("#"+dialogId).attr("data-ref-doctx","top");
|
|
||||||
let refDlgId = pageObject["top"].refDlgId(dialogName);
|
|
||||||
|
|
||||||
$("#"+refDlgId).find("form[name='frmSearch']").find("[name='sggCd']").val(MY_INFO.info.sggCd);
|
|
||||||
|
|
||||||
},
|
|
||||||
onClose : () => { }
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/*--------------------- 출력물 설정 메인 화면 표시 ---------------------*/
|
|
||||||
function fnOpenOtptStngDialog(){
|
|
||||||
|
|
||||||
dialog.close("selectStngDialog");
|
|
||||||
|
|
||||||
var url = wctx.url("/stng/stng01/010/main.do");
|
|
||||||
|
|
||||||
ajax.post({
|
|
||||||
url : url,
|
|
||||||
data : {},
|
|
||||||
success : (resp) => {
|
|
||||||
|
|
||||||
let dialogName = "otptStngDialog";
|
|
||||||
let dialogId = dialogName+"-"+uuid();
|
|
||||||
|
|
||||||
dialog.open({
|
|
||||||
id : dialogId,
|
|
||||||
title : "출력설정",
|
|
||||||
size : "xxl",
|
|
||||||
content : resp,
|
|
||||||
init : () => {
|
|
||||||
$("#"+dialogId).attr("name", dialogName);
|
|
||||||
$("#"+dialogId).attr("data-ref-doctx","top");
|
|
||||||
let refDlgId = pageObject["top"].refDlgId(dialogName);
|
|
||||||
|
|
||||||
$("#"+refDlgId).find("form[name='frmSearch']").find("[name='sggCd']").val(MY_INFO.info.sggCd);
|
|
||||||
|
|
||||||
},
|
|
||||||
onClose : () => { }
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/*--------------------- 고지서 외주요청파일 서식 설정 ---------------------*/
|
|
||||||
function fnOpenOutsourcingStngDialog(){
|
|
||||||
|
|
||||||
dialog.close("selectStngDialog");
|
|
||||||
|
|
||||||
var url = wctx.url("/stng/stng01/030/main.do");
|
|
||||||
|
|
||||||
|
|
||||||
ajax.post({
|
|
||||||
url : url,
|
|
||||||
data : {},
|
|
||||||
success : (resp) => {
|
|
||||||
|
|
||||||
let dialogName = "outsourcingStngDialog";
|
|
||||||
let dialogId = dialogName+"-"+uuid();
|
|
||||||
|
|
||||||
dialog.open({
|
|
||||||
id : dialogId,
|
|
||||||
title : "외주요청파일 서식 설정",
|
|
||||||
size : "xxl",
|
|
||||||
content : resp,
|
|
||||||
init : () => {
|
|
||||||
|
|
||||||
$("#"+dialogId).attr("name", dialogName);
|
|
||||||
$("#"+dialogId).attr("data-ref-doctx","top");
|
|
||||||
let refDlgId = pageObject["top"].refDlgId(dialogName);
|
|
||||||
|
|
||||||
$("#"+refDlgId).find("form[name='frmSearch']").find("[name='sggCd']").val(MY_INFO.info.sggCd);
|
|
||||||
|
|
||||||
},
|
|
||||||
onClose : () => { }
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*--------------------- PDF자료 추출 설정 메인 화면 표시 ---------------------*/
|
|
||||||
function fnOpenExtrStngDialog(){
|
|
||||||
dialog.close("selectStngDialog");
|
|
||||||
|
|
||||||
var url = wctx.url("/stng/stng01/020/main.do");
|
|
||||||
|
|
||||||
ajax.post({
|
|
||||||
url : url,
|
|
||||||
data : {},
|
|
||||||
success : (resp) => {
|
|
||||||
|
|
||||||
let dialogName = "extrStngDialog";
|
|
||||||
let dialogId = dialogName+"-"+uuid();
|
|
||||||
|
|
||||||
dialog.open({
|
|
||||||
id : dialogId,
|
|
||||||
title : "PDF자료 추출 설정",
|
|
||||||
size : "xxl",
|
|
||||||
content : resp,
|
|
||||||
init : () => {
|
|
||||||
$("#"+dialogId).attr("name", dialogName);
|
|
||||||
$("#"+dialogId).attr("data-ref-doctx","top");
|
|
||||||
let refDlgId = pageObject["top"].refDlgId(dialogName);
|
|
||||||
|
|
||||||
$("#"+refDlgId).find("form[name='frmSearch']").find("[name='sggCd']").val(MY_INFO.info.sggCd);
|
|
||||||
|
|
||||||
},
|
|
||||||
onClose : () => { }
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
function fnOpenMyInfo(){
|
|
||||||
var popupWidth = 950;
|
|
||||||
var popupHeight = 500;
|
|
||||||
var popupX = (window.screen.width / 2) - (popupWidth / 2);
|
|
||||||
var popupY= (window.screen.height / 2) - (popupHeight / 2);
|
|
||||||
|
|
||||||
var popup = window.open(
|
|
||||||
wctx.url("/user/openMyInfo.do")
|
|
||||||
,"changeMyInfo"
|
|
||||||
,"width="+popupWidth+", height="+popupHeight+", left="+popupX+", top="+popupY
|
|
||||||
);
|
|
||||||
|
|
||||||
popup.onload = () => {
|
|
||||||
popup.addEventListener('beforeunload', function() {
|
|
||||||
$.unblockUI();
|
|
||||||
});
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
function fnOpenChangePassword(){
|
|
||||||
ajax.get({
|
|
||||||
url : wctx.url("/user/changePassword.do"),
|
|
||||||
data : { },
|
|
||||||
success : (resp) => {
|
|
||||||
dialog.open({
|
|
||||||
id : "changePasswordDialog",
|
|
||||||
title : "비밀번호 변경",
|
|
||||||
content : resp,
|
|
||||||
size : "md",
|
|
||||||
init : () => {},
|
|
||||||
onClose : () => {}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
async function fnCancelAccount(){
|
|
||||||
let ok = await confirm2("탈퇴하시겠습니까?");
|
|
||||||
if(ok){
|
|
||||||
ajax.get({
|
|
||||||
url : wctx.url("/user/cancelAccount.do"),
|
|
||||||
data : { },
|
|
||||||
success : (resp) => {
|
|
||||||
if(resp.saved){
|
|
||||||
alert('탈퇴되었습니다.');
|
|
||||||
var form = $("<form action=\"/logout.do\", method=\"POST\">");
|
|
||||||
$("<input name=\"${_csrf.parameterName}\" value=\"${_csrf.token}\" type=\"hidden\">").appendTo(form);
|
|
||||||
form.appendTo("body").submit();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function showHelp(){
|
|
||||||
dialog.alert({
|
|
||||||
content : "문의전화 : 070-4490-74XX"
|
|
||||||
+"<br/>"
|
|
||||||
+"<button type='button' class='btn btn-primary' onclick='remoteRequest();'>원격지원</button>",
|
|
||||||
timeout : 0,
|
|
||||||
init : function() {
|
|
||||||
AppSupport.setDialogZindex();
|
|
||||||
AppSupport.focusClose();
|
|
||||||
},
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
function remoteRequest(){
|
|
||||||
window.open("https://www.xit.co.kr/xit-1.exe", '_blank');
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* 보안모드 토글 처리
|
|
||||||
*/
|
|
||||||
function fn_securityModeToggle(flag, elementId){
|
|
||||||
|
|
||||||
var executionArea;
|
|
||||||
if(elementId){
|
|
||||||
executionArea = $("#"+elementId);
|
|
||||||
} else {
|
|
||||||
executionArea = $(document);
|
|
||||||
}
|
|
||||||
|
|
||||||
var targets = executionArea.find("input.privacy");
|
|
||||||
for(let i=0; i< targets.length; i++){
|
|
||||||
let originId = targets[i].id;
|
|
||||||
let originValue= targets[i].value;
|
|
||||||
let maskingValue = originValue.replaceAll(/./g, "*");
|
|
||||||
document.getElementById("mask-"+originId).value = maskingValue;
|
|
||||||
}
|
|
||||||
|
|
||||||
if(flag){ //개인정보 숨김
|
|
||||||
|
|
||||||
//입력상자
|
|
||||||
$("input.privacy").attr("hidden","hidden");
|
|
||||||
$("input.privacy-mask").removeAttr("hidden");
|
|
||||||
|
|
||||||
//그리드
|
|
||||||
$("body").addClass("root-privacy-on");
|
|
||||||
|
|
||||||
} else { //개인정보 표시
|
|
||||||
|
|
||||||
//입력상자
|
|
||||||
$("input.privacy").removeAttr("hidden");
|
|
||||||
$("input.privacy-mask").attr("hidden","hidden");
|
|
||||||
|
|
||||||
//그리드
|
|
||||||
$("body").removeClass("root-privacy-on");
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* 단속사진 마스킹
|
|
||||||
*/
|
|
||||||
function fn_photoMask(flag, element){
|
|
||||||
|
|
||||||
var executionArea;
|
|
||||||
var isImg = false;
|
|
||||||
if(element){
|
|
||||||
if(element.tagName == "IMG"){
|
|
||||||
isImg = true;
|
|
||||||
}
|
|
||||||
executionArea = $(element);
|
|
||||||
} else {
|
|
||||||
executionArea = $(document);
|
|
||||||
}
|
|
||||||
|
|
||||||
var targets;
|
|
||||||
if(isImg){
|
|
||||||
targets = executionArea.filter("[data-crdn-photo-id]");
|
|
||||||
} else {
|
|
||||||
targets = executionArea.find("[data-crdn-photo-id]");
|
|
||||||
}
|
|
||||||
|
|
||||||
for(var i=0; i < targets.length; i++){
|
|
||||||
var target = targets[i];
|
|
||||||
var dataset = target.dataset;
|
|
||||||
var targetId = dataset.crdnPhotoId;
|
|
||||||
|
|
||||||
$("div[data-ref='"+dataset.crdnPhotoId+"']").remove();
|
|
||||||
|
|
||||||
if(dataset.crdnPhotoId != null && dataset.crdnPhotoId != ""
|
|
||||||
&& dataset.mosaic != null && dataset.mosaic != ""
|
|
||||||
&& flag){
|
|
||||||
|
|
||||||
var mosaicInfoArr = dataset.mosaic.split("|");
|
|
||||||
|
|
||||||
var zoomX = target.width / target.naturalWidth;
|
|
||||||
var zoomY = target.height / target.naturalHeight;
|
|
||||||
|
|
||||||
for(var j=0; j < mosaicInfoArr.length; j++){
|
|
||||||
var mosaicInfo = mosaicInfoArr[j].split(",");
|
|
||||||
var x2 = mosaicInfo[0] * zoomX
|
|
||||||
var y2 = mosaicInfo[1] * zoomY
|
|
||||||
var w2 = mosaicInfo[2] * zoomX
|
|
||||||
var h2 = mosaicInfo[3] * zoomY
|
|
||||||
|
|
||||||
var mosaic = document.createElement("div");
|
|
||||||
mosaic.style["position"] = "absolute";
|
|
||||||
mosaic.style["top"] = y2 + "px";
|
|
||||||
mosaic.style["left"] = x2 + "px";
|
|
||||||
mosaic.style["width"] = w2 + "px";
|
|
||||||
mosaic.style["height"] = h2 + "px";
|
|
||||||
mosaic.style["background-color"] = "black";
|
|
||||||
mosaic.setAttribute("data-ref", targetId);
|
|
||||||
$(target).after(mosaic);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/*--------------------- 통합조회 버튼 클릭 이벤트 ---------------------*/
|
|
||||||
$("#btnFastSearch--top").on( "click", function() {
|
|
||||||
fnGlobalFastSearch();
|
|
||||||
});
|
|
||||||
|
|
||||||
$("#fastTerm--top").onEnterPress(fnGlobalFastSearch);
|
|
||||||
|
|
||||||
function fnGlobalFastSearch(){
|
|
||||||
|
|
||||||
var integrationSearchUrl = wctx.url("/sprt/sprt01/010/main.do");
|
|
||||||
if(mainTabs.getDataset().find(i => i.url == integrationSearchUrl) != null){
|
|
||||||
mainTabs.close(integrationSearchUrl);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
if($("#fastTerm--top").val() != ""){
|
|
||||||
fastSearch = true;
|
|
||||||
}
|
|
||||||
openMenu(integrationSearchUrl);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/*--------------------- 종합민원관리 클릭 이벤트 ---------------------*/
|
|
||||||
FimsSupport.mappingButtonAndMenu("btnGoToCvlcptDscsn","민원상담");
|
|
||||||
/*--------------------- 일정관리 클릭 이벤트 ---------------------*/
|
|
||||||
FimsSupport.mappingButtonAndMenu("btnGoToNtc","공지사항");
|
|
||||||
/*--------------------- 공지사항 클릭 이벤트 ---------------------*/
|
|
||||||
FimsSupport.mappingButtonAndMenu("btnGoToSchdl","일정관리");
|
|
||||||
|
|
||||||
/*--------------------- 사용자 메뉴얼 클릭 이벤트 ---------------------*/
|
|
||||||
$("#btnDownloadMenual--top").on( "click", function() {
|
|
||||||
FimsSupport.fnMenualDownload();
|
|
||||||
});
|
|
||||||
|
|
||||||
/*--------------------- 보안모드 체크박스 클릭 이벤트 ---------------------*/
|
|
||||||
$("#securityMode--top").on( "click", function() {
|
|
||||||
if($("#securityMode--top").is(":checked")){
|
|
||||||
fn_securityModeToggle(true);
|
|
||||||
} else {
|
|
||||||
fn_securityModeToggle(false);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
/*--------------------- 단속사진 모자이크 체크박스 클릭 이벤트 ---------------------*/
|
|
||||||
$("#photoMask--top").on( "click", function() {
|
|
||||||
if($("#photoMask--top").is(":checked")){
|
|
||||||
fn_photoMask(true);
|
|
||||||
} else {
|
|
||||||
fn_photoMask(false);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
/*--------------------- 외부자료 파일 처리 ---------------------*/
|
|
||||||
$("#btnOpenTempFileUploadWindow").on( "click", function() {
|
|
||||||
fnOpenTempFileUploadWindow();
|
|
||||||
});
|
|
||||||
/*--------------------- 특화 설정 ---------------------*/
|
|
||||||
$("#btnOpenSelectStngDialog").on( "click", function() {
|
|
||||||
fnOpenSelectStngDialog();
|
|
||||||
});
|
|
||||||
|
|
||||||
</c:set>
|
|
||||||
|
|
@ -1,41 +0,0 @@
|
|||||||
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" isELIgnored="false" session="false"%>
|
|
||||||
<%@ include file="/WEB-INF/jsp/include/taglib.jsp"%>
|
|
||||||
<!-- Menu -->
|
|
||||||
<aside id="layout-menu" class="layout-menu menu-vertical menu bg-menu-theme">
|
|
||||||
<div class="app-brand demo">
|
|
||||||
<a href="javascript:fnHome();" class="app-brand-link">
|
|
||||||
<span class="app-brand-logo demo">
|
|
||||||
<img id="symbol--left"
|
|
||||||
src="<c:url value='/'/>resources/img/login/mainLogo_01.png"
|
|
||||||
width="36px" height="36px" alt="symbol" />
|
|
||||||
</span>
|
|
||||||
<span id="home" class="app-brand-text demo menu-text fw-bold ms-2 text-center">
|
|
||||||
과태료통합관리시스템
|
|
||||||
</span>
|
|
||||||
</a>
|
|
||||||
<a href="javascript:void(0);" class="layout-menu-toggle menu-link text-large ms-auto">
|
|
||||||
<i class="bx bx-chevron-left bx-lg align-middle"></i>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
<div class="menu-inner-shadow"></div>
|
|
||||||
<ul id="menus" class="menu-inner py-1">
|
|
||||||
|
|
||||||
</ul>
|
|
||||||
</aside>
|
|
||||||
<!-- / Menu -->
|
|
||||||
<c:set var="userMenus" scope="request">
|
|
||||||
function fnHome(){
|
|
||||||
top.location.href = wctx.url("/")+"?taskSeCd="+$("#layout-navbar input[name='taskSeCd']:checked").val();
|
|
||||||
}
|
|
||||||
|
|
||||||
let userMenus = ${userMenus};
|
|
||||||
let menuSupport = new MenuSupport("#layout-menu");
|
|
||||||
function setUserMenus(menus) {
|
|
||||||
menuSupport.setMenuInfo(menus).setActive(wctx.current());
|
|
||||||
let currentMenu = menuSupport.getMenu(wctx.current());
|
|
||||||
if (currentMenu)
|
|
||||||
setPageTitle(currentMenu.name);
|
|
||||||
}
|
|
||||||
|
|
||||||
setUserMenus(userMenus);
|
|
||||||
</c:set>
|
|
@ -1,459 +0,0 @@
|
|||||||
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" isELIgnored="false" session="false"%>
|
|
||||||
<%@ include file="/WEB-INF/jsp/include/taglib.jsp"%>
|
|
||||||
<jsp:include page="/WEB-INF/jsp/include/head.jsp" />
|
|
||||||
<body>
|
|
||||||
<div class="layout-wrapper layout-content-navbar layout-without-menu">
|
|
||||||
<div class="layout-container">
|
|
||||||
|
|
||||||
<div class="layout-page">
|
|
||||||
|
|
||||||
<div class="content-wrapper mt-0">
|
|
||||||
<jsp:include page="/WEB-INF/jsp/include/userMenus.jsp" />
|
|
||||||
<div class="content-body menu-aware">
|
|
||||||
<div class="sticky-wrapper">
|
|
||||||
<div class="sticky-element">
|
|
||||||
<jsp:include page="/WEB-INF/jsp/include/top.jsp" />
|
|
||||||
<ul id="menu-tabs" class="nav nav-tabs mt-1" role="tablist"
|
|
||||||
style="--bs-nav-link-padding-y: .125rem; background-image: linear-gradient(#8AB9DB, whitesmoke);">
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<template id="main-tab">
|
|
||||||
<li class="nav-item" role="presentation">
|
|
||||||
<div class="nav-link border-bottom-0" data-bs-toggle="tab" data-bs-target="{tab-target}"
|
|
||||||
role="tab" aria-controls="{index}" tabindex="-1">
|
|
||||||
<span onclick="openMenu('{url}');" class="w-px-150 text-truncate">{name}</span>
|
|
||||||
<span onclick="mainTabs.close('{url}')" class="ms-2">×</span>
|
|
||||||
</div>
|
|
||||||
</li>
|
|
||||||
</template>
|
|
||||||
<div id="main-tab-content" class="tab-content shadowed">
|
|
||||||
<div id="dashboard" class="tab-pane fade" role="tabpanel">
|
|
||||||
<jsp:include page="/WEB-INF/jsp/dashboard.jsp" />
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<template id="tab-pane">
|
|
||||||
<div id="{index}" class="tab-pane fade" role="tabpanel">{inner-content}</div>
|
|
||||||
</template>
|
|
||||||
<jsp:include page="/WEB-INF/jsp/include/bottom.jsp" />
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div id="selectTaskModal" class="modal fade h-auto" tabindex="-1" aria-hidden="true"
|
|
||||||
data-bs-backdrop="static" data-bs-focus="false" data-bs-keyboard="false">
|
|
||||||
<div class="modal-dialog modal-sm" role="document">
|
|
||||||
<div class="modal-content">
|
|
||||||
<div class="modal-body modal-body-min">
|
|
||||||
<div class="h3 fw-bold text-center">업무를 선택하세요.</div>
|
|
||||||
<span id="selectTaskButtons" class="row g-3 d-flex flex-column">
|
|
||||||
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<jsp:include page="/WEB-INF/jsp/include/tail.jsp" />
|
|
||||||
<!-- 자동 로그아웃 -->
|
|
||||||
<script src="<c:url value="/webjars/3rd-party/sneat/libs/idletimer/idletimer.js"/>"></script>
|
|
||||||
|
|
||||||
<c:set var="onload">
|
|
||||||
|
|
||||||
</c:set>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
//단축키 등록
|
|
||||||
FimsSupport.registShortcutKey();
|
|
||||||
|
|
||||||
let sticky = {id: -1, index: "dashboard", name: "대시보드", url: "/dashboard.do", parentID: null, description: "대시보드"};
|
|
||||||
let mainTabs = new TabControl({
|
|
||||||
sticky: sticky,
|
|
||||||
getMenu: (url) => menuSupport.getMenu(url),
|
|
||||||
onDatasetChange: tabs => {
|
|
||||||
let template = document.getElementById("main-tab").innerHTML,
|
|
||||||
toTab = (tmpl, item) => tmpl.replace(/{tab-target}/gi, "#" + "{index}"),
|
|
||||||
tags = mainTabs.inStrings(template, toTab);
|
|
||||||
document.getElementById("menu-tabs").innerHTML = tags.join("");
|
|
||||||
|
|
||||||
$("#menu-tabs .nav-item").eq(0).find("span.ms-2").remove();
|
|
||||||
|
|
||||||
},
|
|
||||||
onCurrentChange: tab => {
|
|
||||||
if (!tab || !tab.data) return;
|
|
||||||
|
|
||||||
let url = tab.data.url;
|
|
||||||
menuSupport.setActive(url);
|
|
||||||
document.querySelector("#menu-tabs li span[onclick=\"openMenu('" + url + "');\"]").click();
|
|
||||||
|
|
||||||
let currentPane = document.querySelector("#" + tab.data.index);
|
|
||||||
if (!currentPane) {
|
|
||||||
let template = document.getElementById("tab-pane").innerHTML,
|
|
||||||
html = tab.inString(template);
|
|
||||||
|
|
||||||
if (tab.data.content) {
|
|
||||||
html = html.replace(/{inner-content}/, tab.data.content);
|
|
||||||
delete tab.data.content;
|
|
||||||
$("#main-tab-content").append(html);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
document.querySelectorAll("#main-tab-content > div.tab-pane")
|
|
||||||
.forEach(tabPane => {
|
|
||||||
let current = tab.data.index == tabPane.getAttribute("id");
|
|
||||||
if (current)
|
|
||||||
tabPane.classList.add("show", "active");
|
|
||||||
else
|
|
||||||
tabPane.classList.remove("show", "active");
|
|
||||||
});
|
|
||||||
},
|
|
||||||
onRemove: tabs => {
|
|
||||||
let mainTab = document.querySelector("#main-tab-content");
|
|
||||||
tabs.forEach(tab => {
|
|
||||||
let tabPane = document.querySelector("#" + tab.data.index);
|
|
||||||
if (!tabPane) return;
|
|
||||||
|
|
||||||
mainTab.removeChild(tabPane);
|
|
||||||
delete tabPane;
|
|
||||||
});
|
|
||||||
mainTabs.onDatasetChange();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
function openMenu(url) {
|
|
||||||
mainTabs.open(url)
|
|
||||||
}
|
|
||||||
|
|
||||||
$(".sticky-element").sticky({
|
|
||||||
topSpacing: $(".nav-bar").height() + 1,
|
|
||||||
width: "100%",
|
|
||||||
zIndex: 9
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
const FETCH_XXS = 10;
|
|
||||||
const FETCH_XS = 30;
|
|
||||||
const FETCH_SM = 50;
|
|
||||||
const FETCH_MD = 100;
|
|
||||||
const FETCH_LG = 300;
|
|
||||||
const FETCH_XL = 500;
|
|
||||||
const FETCH_XXL = 1000;
|
|
||||||
|
|
||||||
const DEFAULT_FETCH_SIZE = 30;
|
|
||||||
|
|
||||||
//자동 로그아웃
|
|
||||||
const ONE_MINUTE = 60 * 1000;
|
|
||||||
let sessionConfig = 30 * ONE_MINUTE;
|
|
||||||
$.idleTimer(sessionConfig);
|
|
||||||
$(document).bind("idle.idleTimer", function(){
|
|
||||||
$.idleTimer('destroy');
|
|
||||||
|
|
||||||
ajax.post({
|
|
||||||
url : wctx.url("/logout.do"),
|
|
||||||
data : { "${_csrf.parameterName}" : "${_csrf.token}" },
|
|
||||||
success : async function(){
|
|
||||||
var ok = await alert2("세션이 종료되어 로그아웃되었습니다.");
|
|
||||||
if(ok){
|
|
||||||
location.href = wctx.url("/login.do");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
let fastSearch = false;
|
|
||||||
|
|
||||||
var pageObject = {};
|
|
||||||
pageObject.help = function(){
|
|
||||||
console.log("pageObject : 로드된 페이지이름(서버에서 반환하는 pageName변수 또는 jsp파일명)을 하위 키로 갖는 전역객체");
|
|
||||||
};
|
|
||||||
pageObject.childReq = [];
|
|
||||||
pageObject.parentRes = [];
|
|
||||||
pageObject.top = newDoctxFinder("top");
|
|
||||||
|
|
||||||
function LoadScript(scriptId, scriptPath){
|
|
||||||
if(document.getElementById(scriptId) == null){
|
|
||||||
$("body").append("<script id='"+scriptId+"' src='"+"<c:url value='' />"+scriptPath+"' />");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
async function LoadJson(path){
|
|
||||||
let resp = await fetch("<c:url value='' />"+path);
|
|
||||||
return await resp.json();
|
|
||||||
}
|
|
||||||
|
|
||||||
function FindObject(objectName, pageName){
|
|
||||||
if(pageName == undefined || pageName == null || pageName == ""){
|
|
||||||
return window[objectName];
|
|
||||||
} else {
|
|
||||||
return pageObject[pageName][objectName];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function RegistObject(objectName, def, pageName){
|
|
||||||
if(pageName == undefined || pageName == null || pageName == ""){
|
|
||||||
window[objectName] = def;
|
|
||||||
return window[objectName];
|
|
||||||
} else {
|
|
||||||
pageObject[pageName][objectName] = def;
|
|
||||||
return pageObject[pageName][objectName];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
var ALL_TASK = {};
|
|
||||||
var MY_INFO = {};
|
|
||||||
var SYS_LINK_INFO = {};
|
|
||||||
var PARAM_TASK = "${param.taskSeCd}";
|
|
||||||
|
|
||||||
async function fnGetAllTask(){
|
|
||||||
return new Promise((resolve, reject) => {
|
|
||||||
$.ajax({
|
|
||||||
type: "get",
|
|
||||||
url: wctx.url("/code/getAllTaskSeCd.do"),
|
|
||||||
data: {},
|
|
||||||
dataType: 'json',
|
|
||||||
success: function(resp, textStatus, jqXHR) {
|
|
||||||
ALL_TASK = resp.allTask;
|
|
||||||
resolve({resp, textStatus, jqXHR});
|
|
||||||
},
|
|
||||||
error: function(jqXHR, textStatus, error) {
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
async function fnCheckSggTask(){
|
|
||||||
return new Promise((resolve, reject) => {
|
|
||||||
$.ajax({
|
|
||||||
type: "get",
|
|
||||||
url: wctx.url("/code/sggHasTask.do"),
|
|
||||||
data: {},
|
|
||||||
dataType: 'json',
|
|
||||||
success: function(resp, textStatus, jqXHR) {
|
|
||||||
if(resp.sggHasTask == "Y" || "${currentUser.user.getCntnSeCd()}" == "02"){
|
|
||||||
resolve({resp, textStatus, jqXHR});
|
|
||||||
} else {
|
|
||||||
reject("시군구 업무 설정이 없습니다.");
|
|
||||||
}
|
|
||||||
},
|
|
||||||
error: function(jqXHR, textStatus, error) {
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
async function fnGetSysLinkInfo(){
|
|
||||||
return new Promise((resolve, reject) => {
|
|
||||||
$.ajax({
|
|
||||||
type: "get",
|
|
||||||
url: wctx.url("/user/sysLinkInfo.do"),
|
|
||||||
data: {},
|
|
||||||
dataType: 'json',
|
|
||||||
success: function(resp, textStatus, jqXHR) {
|
|
||||||
SYS_LINK_INFO = resp.sysLinkInfo;
|
|
||||||
resolve({resp, textStatus, jqXHR});
|
|
||||||
},
|
|
||||||
error: function(jqXHR, textStatus, error) {
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
async function fnGetMyInfo(){
|
|
||||||
return new Promise((resolve, reject) => {
|
|
||||||
$.ajax({
|
|
||||||
type: "get",
|
|
||||||
url: wctx.url("/user/myInfo.do"),
|
|
||||||
data: {},
|
|
||||||
dataType: 'json',
|
|
||||||
success: function(resp, textStatus, jqXHR) {
|
|
||||||
MY_INFO = resp.myInfo;
|
|
||||||
resolve({resp, textStatus, jqXHR});
|
|
||||||
},
|
|
||||||
error: function(jqXHR, textStatus, error) {
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
function fnSelectDefaultTask(taskSeCd){
|
|
||||||
ajax.get({
|
|
||||||
url : wctx.url("/user/saveDefaultTask.do"),
|
|
||||||
data : {
|
|
||||||
"taskSeCd" : taskSeCd
|
|
||||||
},
|
|
||||||
success : (resp) => {
|
|
||||||
if(resp.saved){
|
|
||||||
$("#selectTaskModal").modal("hide");
|
|
||||||
initIndexPage(true, PARAM_TASK, taskSeCd);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
function initIndexPage(isPublicOfficer, paramTask, userDefaultTask){
|
|
||||||
if(!isPublicOfficer){
|
|
||||||
|
|
||||||
$("#home").html("과태료통합관리시스템<br/>("+"임대기업사용자"+")");
|
|
||||||
|
|
||||||
$("#btnOpenTempFileUploadWindow").remove();
|
|
||||||
$("#btnOpenSelectStngDialog").remove();
|
|
||||||
$("#btnGoToCvlcptDscsn").remove();
|
|
||||||
$("#btnGoToSchdl").remove();
|
|
||||||
$("#btnDownloadMenual--top").remove();
|
|
||||||
$("#btnGoToNtc").remove();
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
$("#btnCancelAccount--Top").remove();
|
|
||||||
|
|
||||||
if(paramTask != "" || $("#layout-navbar").find("input[name='taskSeCd'][value='"+paramTask+"']").length > 0){
|
|
||||||
$("#layout-navbar input[name='taskSeCd'][value='"+paramTask+"']").prop("checked", true);
|
|
||||||
} else if(userDefaultTask != "" || $("#layout-navbar").find("input[name='taskSeCd'][value='"+userDefaultTask+"']").length > 0){
|
|
||||||
$("#layout-navbar input[name='taskSeCd'][value='"+userDefaultTask+"']").prop("checked", true);
|
|
||||||
} else {
|
|
||||||
$("#layout-navbar input[name='taskSeCd']").eq(0).prop("checked", true);
|
|
||||||
}
|
|
||||||
|
|
||||||
//좌측상단제목, 최상단 배경색
|
|
||||||
var checkedId = $("#layout-navbar input[name='taskSeCd']:checked")[0].id;
|
|
||||||
var checkedText = $("label[for='"+checkedId+"']").text();
|
|
||||||
$("#home").html("과태료통합관리시스템<br/>("+checkedText+")");
|
|
||||||
|
|
||||||
var taskTheme = "task-theme-" + $("#layout-navbar input[name='taskSeCd']:checked").val().toLowerCase();
|
|
||||||
$("#layout-navbar").addClass(taskTheme);
|
|
||||||
|
|
||||||
//대시보드 로드
|
|
||||||
${dashboardScript}
|
|
||||||
}
|
|
||||||
|
|
||||||
${functions}
|
|
||||||
|
|
||||||
${topScript}
|
|
||||||
|
|
||||||
${userMenus}
|
|
||||||
|
|
||||||
$(function(){
|
|
||||||
${onload}
|
|
||||||
|
|
||||||
mainTabs.getTab(sticky.url);
|
|
||||||
|
|
||||||
fnGetAllTask()
|
|
||||||
.then(() => { return fnCheckSggTask(); })
|
|
||||||
.then(() => { return fnGetSysLinkInfo(); })
|
|
||||||
.then(() => { return fnGetMyInfo(); })
|
|
||||||
.then(() => {
|
|
||||||
|
|
||||||
var msg = "";
|
|
||||||
var available = true;
|
|
||||||
|
|
||||||
if(MY_INFO.user.status == "A" || MY_INFO.user.status == "D" || MY_INFO.user.locked == "Y"){
|
|
||||||
|
|
||||||
if(MY_INFO.user.status == "A"){
|
|
||||||
msg = "계정이 미승인 상태입니다.";
|
|
||||||
} else if(MY_INFO.user.status == "D"){
|
|
||||||
msg = "삭제된 계정입니다.";
|
|
||||||
} else if(MY_INFO.user.locked == "Y"){
|
|
||||||
msg = "잠금처리된 계정입니다.";
|
|
||||||
}
|
|
||||||
available = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if(!(MY_INFO.info.isAdmin)){
|
|
||||||
if(MY_INFO.info.isPublicOfficer){
|
|
||||||
if(!(MY_INFO.info.hasTaskAuth)){
|
|
||||||
msg = "계정에 부여된 업무권한이 없습니다.";
|
|
||||||
available = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if(msg != ""){
|
|
||||||
alert(msg);
|
|
||||||
}
|
|
||||||
|
|
||||||
//로그아웃
|
|
||||||
if(!available){
|
|
||||||
var form = $("<form action=\"/logout.do\", method=\"POST\">");
|
|
||||||
$("<input name=\"${_csrf.parameterName}\" value=\"${_csrf.token}\" type=\"hidden\">").appendTo(form);
|
|
||||||
form.appendTo("body").submit();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
//지자체 심볼
|
|
||||||
if(MY_INFO.info.sggSymbolPath != ""){
|
|
||||||
$("#symbol--left").attr("src", MY_INFO.info.sggSymbolPath);
|
|
||||||
}
|
|
||||||
|
|
||||||
//사용하지 않는 연계와 관련된 메뉴 제거
|
|
||||||
//새올민원 관련 메뉴 제거
|
|
||||||
if(SYS_LINK_INFO == null || SYS_LINK_INFO.CVLCPT_LINK_SE_CD != '01'){
|
|
||||||
var seallMenuUrl = wctx.url("/cvlc/cvlc04/010/main.do");
|
|
||||||
$("ul[id='menus']").find("li[class='menu-item']").each(function(){
|
|
||||||
if($(this).children("a[onclick]").length > 0){
|
|
||||||
let oc = $(this).children("a[onclick]").attr("onclick").split("'");
|
|
||||||
if(oc.length == 3 && oc[1] == seallMenuUrl){
|
|
||||||
$(this).remove();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
if(MY_INFO.info.isPublicOfficer){
|
|
||||||
//사용자별 선택가능한 업무 렌더링
|
|
||||||
$("#selectTaskButtons").html("");
|
|
||||||
for(var i=0; i < MY_INFO.info.taskForUser.length; i++){
|
|
||||||
var taskCd = MY_INFO.info.taskForUser[i];
|
|
||||||
var taskNm = ALL_TASK[taskCd];
|
|
||||||
|
|
||||||
var radio = "";
|
|
||||||
radio += "<span>";
|
|
||||||
radio += "<input type='radio' id='taskSeCd"+(i+1)+"--top' name='taskSeCd' value='"+taskCd+"' title='"+taskNm+"' />";
|
|
||||||
radio += "<label for='taskSeCd"+(i+1)+"--top'>"+taskNm+"</label>";
|
|
||||||
radio += "</span>";
|
|
||||||
$("#taskSeCd--Top").append(radio);
|
|
||||||
|
|
||||||
var button = `<button type="button" class="btn btn-xl btn-primary" onclick="fnSelectDefaultTask('`
|
|
||||||
+taskCd
|
|
||||||
+`');">`
|
|
||||||
+taskNm
|
|
||||||
+`</button>`;
|
|
||||||
$("#selectTaskButtons").append(button);
|
|
||||||
}
|
|
||||||
|
|
||||||
$("#layout-navbar input[name='taskSeCd']").on("click", function(){
|
|
||||||
$("#userNav--top").click();
|
|
||||||
window.open(wctx.url("/")+"?taskSeCd="+this.value, "_blank", "");
|
|
||||||
return false;
|
|
||||||
});
|
|
||||||
|
|
||||||
//업무선택 모달 다이얼로그
|
|
||||||
if(MY_INFO.info.defaultTask == null || MY_INFO.info.defaultTask == ""){
|
|
||||||
$("#selectTaskModal").modal("show");
|
|
||||||
return;
|
|
||||||
} else {
|
|
||||||
initIndexPage(true, PARAM_TASK, MY_INFO.info.defaultTask);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
initIndexPage(false, "", "");
|
|
||||||
}
|
|
||||||
|
|
||||||
}).catch((msg) => {
|
|
||||||
alert(msg);
|
|
||||||
|
|
||||||
var form = $("<form action=\"/logout.do\", method=\"POST\">");
|
|
||||||
$("<input name=\"${_csrf.parameterName}\" value=\"${_csrf.token}\" type=\"hidden\">").appendTo(form);
|
|
||||||
form.appendTo("body").submit();
|
|
||||||
return;
|
|
||||||
});
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
@ -1,332 +0,0 @@
|
|||||||
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" isELIgnored="false" session="false"%>
|
|
||||||
<%@ include file="/WEB-INF/jsp/include/taglib.jsp"%>
|
|
||||||
<!DOCTYPE html>
|
|
||||||
<html
|
|
||||||
lang="kr"
|
|
||||||
class="light-style layout-navbar-fixed layout-menu-fixed "
|
|
||||||
dir="ltr"
|
|
||||||
data-theme="theme-default"
|
|
||||||
data-assets-path="<c:url value="/resources/"/>"
|
|
||||||
data-template="vertical-menu-template-starter">
|
|
||||||
<head>
|
|
||||||
<meta charset="UTF-8">
|
|
||||||
<title>과태료통합관리시스템</title>
|
|
||||||
|
|
||||||
<!-- Favicon -->
|
|
||||||
<link rel="icon" type="image/x-icon" href="<c:url value="/webjars/image/favicon.ico"/>" />
|
|
||||||
|
|
||||||
<!-- Fonts -->
|
|
||||||
<link rel="stylesheet" href="<c:url value="/resources/fonts/notoSansKr/fontface.css"/>" />
|
|
||||||
|
|
||||||
<!-- Icons. Uncomment required icon fonts -->
|
|
||||||
<link rel="stylesheet" href="<c:url value="/webjars/3rd-party/sneat/fonts/boxicons.css"/>" />
|
|
||||||
<link rel="stylesheet" href="<c:url value="/webjars/3rd-party/sneat/fonts/fontawesome.css"/>" />
|
|
||||||
<link rel="stylesheet" href="<c:url value="/resources/fonts/xit-icon.css"/>" />
|
|
||||||
<!-- Core CSS -->
|
|
||||||
<link rel="stylesheet" href="<c:url value="/webjars/3rd-party/sneat/css/rtl/core.css"/>" class="template-customizer-core-css" />
|
|
||||||
<link rel="stylesheet" href="<c:url value="/webjars/3rd-party/sneat/css/rtl/theme-default.css"/>" class="template-customizer-theme-css" />
|
|
||||||
<link rel="stylesheet" href="<c:url value="/webjars/css/styles.css"/>" />
|
|
||||||
|
|
||||||
<link rel="stylesheet" href="<c:url value="/webjars/applib/css/overwrite.css?${ver}"/>" />
|
|
||||||
<link rel="stylesheet" href="<c:url value="/webjars/applib/css/applib.css?${ver}"/>" />
|
|
||||||
|
|
||||||
<link rel="stylesheet" href="<c:url value="/resources/css/fims.css?${ver}"/>" />
|
|
||||||
|
|
||||||
<link rel="stylesheet" href="<c:url value="/resources/css/fims-login.css?${ver}"/>" />
|
|
||||||
<!-- Vendors CSS -->
|
|
||||||
<link rel="stylesheet" href="<c:url value="/webjars/3rd-party/sneat/libs/perfect-scrollbar/perfect-scrollbar.css"/>" />
|
|
||||||
<link rel="stylesheet" href="<c:url value="/webjars/3rd-party/sneat/libs/bootstrap-datepicker/bootstrap-datepicker.css"/>" />
|
|
||||||
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<div class="login_bg" hidden>
|
|
||||||
<div class="header_wrap">
|
|
||||||
<h1 class="logo">
|
|
||||||
<img src="<c:url value='/'/>resources/img/login/mainLogo_02.png" alt="Logo Image" />
|
|
||||||
<span id="userFor" hidden>(임대기업사용자)</span>
|
|
||||||
<span class="float-end mt-4 me-5">
|
|
||||||
<button id="btnDownMenual" type="button" onclick="FimsSupport.fnMenualDownload();" class="btn btn-primary" hidden>사용자 메뉴얼</button>
|
|
||||||
</span>
|
|
||||||
</h1>
|
|
||||||
</div>
|
|
||||||
<div class="login_text">
|
|
||||||
<p class="main_img"><img src="<c:url value='/'/>resources/img/login/loginDeco_02.png" alt=""></img></p>
|
|
||||||
<form id="formAuthentication" method="post">
|
|
||||||
<input type="hidden" id="cntnSeCd" name="cntnSeCd" />
|
|
||||||
<div class="input_wrap">
|
|
||||||
<div class="input-group" id="orgDiv">
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<div class="input-group">
|
|
||||||
<input type="text" id="userId" value="${cookie['userAccount'].getValue()}"
|
|
||||||
required title="계정 입력" class="typeText required form-control inp-long" placeholder="계정" autofocus/>
|
|
||||||
</div>
|
|
||||||
<div class="input-group input-group-merge mt-2">
|
|
||||||
<input type="password" id="password"
|
|
||||||
required title="비밀번호 입력" class="typePassword required form-control inp-long" placeholder="비밀번호" autocomplete="false" />
|
|
||||||
<span class="input-group-text cursor-pointer"><i class="bx bxs-lock"></i></span>
|
|
||||||
</div>
|
|
||||||
<div class="mt-3 form-chcek">
|
|
||||||
<input id="remember" type="checkbox" class="form-check-input">
|
|
||||||
<label class="form-check-label">로그인 정보 유지</label>
|
|
||||||
</div>
|
|
||||||
<div class="input_wrap2">
|
|
||||||
<!--
|
|
||||||
<a href="#" onclick="javascript:fn_FindId(); return false;">아이디 찾기</a>
|
|
||||||
<a href="#" onclick="javascript:fn_FindPw(); return false;" class="line">비밀번호 찾기</a>
|
|
||||||
-->
|
|
||||||
<a href="#" onclick="javascript:fnOpenSignup_step1(); return false;" class="line">회원가입</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<input type="hidden" name="message" value="${message}" />
|
|
||||||
<input type="hidden" name="userSe" value="USR"/>
|
|
||||||
<input name="j_username" type="hidden"/>
|
|
||||||
</form>
|
|
||||||
<div class="btn_wrap">
|
|
||||||
<input type="button" onclick="login()" class="typeButton" title="로그인" value="로그인" />
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<template id="pbofcLoginTemplate">
|
|
||||||
<select id="orgID" name="orgID" required title="시군구명" class="form-select mb-2 h-px-40 no-max-w">
|
|
||||||
<option value="">[기관 선택]</option>
|
|
||||||
<option value="ADMIN">시스템관리</option>
|
|
||||||
<c:forEach items="${sggList}" var="item">
|
|
||||||
<option value="${item.SGG_CD}"
|
|
||||||
<c:if test="${item.USER_USE_YN == 'N'}"> disabled </c:if>
|
|
||||||
>${item.SGG_NM}</option>
|
|
||||||
</c:forEach>
|
|
||||||
</select>
|
|
||||||
</template>
|
|
||||||
<template id="bzentLoginTemplate">
|
|
||||||
<input type="hidden" id="orgID" name="orgID" required title="시군구명" value="${sysSggCd}" />
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<template id="selectOrgDialogTemplate">
|
|
||||||
<select class="form-select form-control-sm" id="selectOrg">
|
|
||||||
<option value="">선택</option>
|
|
||||||
<c:forEach items="${sggList}" var="item">
|
|
||||||
<option value="${item.SGG_CD}">${item.SGG_NM}</option>
|
|
||||||
</c:forEach>
|
|
||||||
</select>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<jsp:include page="/WEB-INF/jsp/include/tail.jsp" />
|
|
||||||
|
|
||||||
<script type="text/javascript">
|
|
||||||
|
|
||||||
${functions}
|
|
||||||
|
|
||||||
let sysSgg = "${sysSggCd}";
|
|
||||||
let cookieOrg = "${cookie['userOrg'].getValue()}";
|
|
||||||
let cookieUserId = "${cookie['userAccount'].getValue()}";
|
|
||||||
|
|
||||||
|
|
||||||
function login() {
|
|
||||||
if (!$("#formAuthentication input,select").validInputs()) return;
|
|
||||||
|
|
||||||
var params = {
|
|
||||||
account: $("#userId").val().toUpperCase(),
|
|
||||||
password:$("#password").val(),
|
|
||||||
orgID: $("#orgID").val(),
|
|
||||||
cntnSeCd: $("#cntnSeCd").val(),
|
|
||||||
rememberCredentials: $("#remember").prop("checked")
|
|
||||||
};
|
|
||||||
|
|
||||||
json.post({
|
|
||||||
url:wctx.url("/login.do"),
|
|
||||||
data:params,
|
|
||||||
success:function(resp) {
|
|
||||||
if (!(resp.authenticated)) {
|
|
||||||
dialog.alert({
|
|
||||||
content:resp.reason,
|
|
||||||
init : function() {
|
|
||||||
AppSupport.setDialogZindex();
|
|
||||||
focusClose();
|
|
||||||
},
|
|
||||||
onClose:() => $("#userId").focus()
|
|
||||||
});
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if(resp.message){
|
|
||||||
dialog.alert({
|
|
||||||
content : resp.message,
|
|
||||||
init : function() {
|
|
||||||
AppSupport.setDialogZindex();
|
|
||||||
focusClose();
|
|
||||||
},
|
|
||||||
onOK : function() {
|
|
||||||
wctx.home();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
wctx.home();
|
|
||||||
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 회원가입 팝업
|
|
||||||
*/
|
|
||||||
function fnOpenSignup_step1(){
|
|
||||||
if($("#cntnSeCd").val() == "01"){
|
|
||||||
dialog.open({
|
|
||||||
id : "selectOrgDialog",
|
|
||||||
title : "기관 선택",
|
|
||||||
content : document.getElementById("selectOrgDialogTemplate").innerHTML,
|
|
||||||
size : "sm",
|
|
||||||
init : () => {
|
|
||||||
},
|
|
||||||
onOK : () => {
|
|
||||||
if($("#selectOrg").val() == ""){
|
|
||||||
alert("기관을 선택하세요.");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
dialog.close("selectOrgDialog");
|
|
||||||
|
|
||||||
fnOpenSignup_step2($("#selectOrg").val(),"01");
|
|
||||||
},
|
|
||||||
onClose : () => {}
|
|
||||||
});
|
|
||||||
} else if($("#cntnSeCd").val() == "02"){
|
|
||||||
fnOpenSignup_step2("${sysSggCd}","02");
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
function fnOpenSignup_step2(sggCd,cntnSeCd){
|
|
||||||
var popupWidth = 950;
|
|
||||||
var popupHeight = 500;
|
|
||||||
var popupX = (window.screen.width / 2) - (popupWidth / 2);
|
|
||||||
var popupY= (window.screen.height / 2) - (popupHeight / 2);
|
|
||||||
|
|
||||||
var popup = window.open(wctx.url("/signupPage.do")+"?sggCd="+sggCd+"&cntnSeCd="+cntnSeCd,
|
|
||||||
"regAccount",
|
|
||||||
"width="+popupWidth+", height="+popupHeight+", left="+popupX+", top="+popupY);
|
|
||||||
|
|
||||||
$.blockUI({message : ""});
|
|
||||||
popup.onload = () => {
|
|
||||||
popup.addEventListener('beforeunload', function() {
|
|
||||||
$.unblockUI();
|
|
||||||
});
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 아이디 찾기 팝업
|
|
||||||
*/
|
|
||||||
function fn_FindId(){
|
|
||||||
window.open(".do", "findId", {width: 500, height:300});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 비밀번호 찾기 팝업
|
|
||||||
*/
|
|
||||||
function fn_FindPw(){
|
|
||||||
window.open(".do", "findPw", {width: 500, height:330});
|
|
||||||
}
|
|
||||||
|
|
||||||
function fnIpInfo(flag){
|
|
||||||
$("#cntnSeCd").val("");
|
|
||||||
$("#orgDiv").html("");
|
|
||||||
$("#userId").val("");
|
|
||||||
$("#password").val("");
|
|
||||||
$("#btnDownMenual").attr("hidden","hidden");
|
|
||||||
$("#userFor").attr("hidden","hidden");
|
|
||||||
$("#remember").prop("checked", false);
|
|
||||||
|
|
||||||
let data = {};
|
|
||||||
if(flag != null){
|
|
||||||
data.flag = flag;
|
|
||||||
}
|
|
||||||
ajax.get({
|
|
||||||
url:wctx.url("/ipInfo.do"),
|
|
||||||
data:data,
|
|
||||||
success:function(resp) {
|
|
||||||
if(resp.net == "intra"){
|
|
||||||
PBOFC_login();
|
|
||||||
} else if(resp.net == "inter"){
|
|
||||||
BZENT_login();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
//공무원 로그인
|
|
||||||
function PBOFC_login(){
|
|
||||||
|
|
||||||
$(".login_bg").removeAttr("hidden");
|
|
||||||
$("#btnDownMenual").removeAttr("hidden");
|
|
||||||
|
|
||||||
$("#cntnSeCd").val("01");
|
|
||||||
$("#orgDiv").html(document.getElementById("pbofcLoginTemplate").innerHTML);
|
|
||||||
|
|
||||||
let hasCookie = (cookieOrg != "" && cookieUserId != "");
|
|
||||||
|
|
||||||
let selectValue = "";
|
|
||||||
let isSelectable = false;
|
|
||||||
|
|
||||||
if(hasCookie){
|
|
||||||
selectValue = cookieOrg;
|
|
||||||
isSelectable = $("#orgID option[value='"+selectValue+"']").not("[disabled]").length;
|
|
||||||
if(isSelectable){
|
|
||||||
$("#orgID").val(cookieOrg);
|
|
||||||
$("#userId").val(cookieUserId);
|
|
||||||
$("#remember").prop("checked", true);
|
|
||||||
$("#password").focus();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
selectValue = sysSgg;
|
|
||||||
isSelectable = $("#orgID option[value='"+selectValue+"']").not("[disabled]").length;
|
|
||||||
if(isSelectable){
|
|
||||||
$("#orgID").val(selectValue);
|
|
||||||
$("#userId").focus();
|
|
||||||
} else {
|
|
||||||
$("#orgID").focus();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//업체 로그인
|
|
||||||
function BZENT_login(){
|
|
||||||
|
|
||||||
$(".login_bg").removeAttr("hidden");
|
|
||||||
$("#userFor").removeAttr("hidden");
|
|
||||||
|
|
||||||
$("#cntnSeCd").val("02");
|
|
||||||
$("#orgDiv").html(document.getElementById("bzentLoginTemplate").innerHTML);
|
|
||||||
|
|
||||||
let hasCookie = (cookieUserId != "");
|
|
||||||
if(hasCookie){
|
|
||||||
$("#userId").val(cookieUserId);
|
|
||||||
$("#remember").prop("checked", true);
|
|
||||||
$("#password").focus();
|
|
||||||
} else {
|
|
||||||
$("#userId").focus();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
$("#formAuthentication input").onEnterPress(login);
|
|
||||||
|
|
||||||
document.addEventListener('keydown', (event) => {
|
|
||||||
if(event.key == "F5"){
|
|
||||||
event.preventDefault();
|
|
||||||
fnIpInfo('inter');
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
$(function(){
|
|
||||||
fnIpInfo();
|
|
||||||
});
|
|
||||||
|
|
||||||
</script>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
@ -1,53 +0,0 @@
|
|||||||
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" isELIgnored="false" session="false"%>
|
|
||||||
<%@ include file="/WEB-INF/jsp/include/taglib.jsp"%>
|
|
||||||
<div id="_url-tree" class="main-left d-flex flex-column flex-grow-1">
|
|
||||||
<div class="d-flex justify-content-between py-2 border-separator-y">
|
|
||||||
<span>
|
|
||||||
<button id="_urlToggler" onclick="_toggleURLs();" class="btn btn-primary"></button>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
<div id="_urlTree" class="pt-3 ox-auto oy-auto h-px-500">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<script type="text/javascript">
|
|
||||||
var _multiple = ${multiple},
|
|
||||||
_urlSupport = treeSupport({
|
|
||||||
selector:"#_urlTree",
|
|
||||||
trace:wctx.trace,
|
|
||||||
plugins: _multiple ? ["checkbox"] : [],
|
|
||||||
core:{check_callback:true,
|
|
||||||
multiple:_multiple
|
|
||||||
// themes:{name:"proton"}
|
|
||||||
},
|
|
||||||
checkbox:{
|
|
||||||
whole_node:false,
|
|
||||||
tie_selection:false
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
function getSelectedURL() {
|
|
||||||
var selected = _multiple ? _urlSupport.checkedNodes() : _urlSupport.selectedNodes();
|
|
||||||
if (selected.length < 1)
|
|
||||||
return dialog.alert("URL을 선택하십시오.");
|
|
||||||
|
|
||||||
if (_multiple)
|
|
||||||
return selected;
|
|
||||||
else
|
|
||||||
return selected[0];
|
|
||||||
}
|
|
||||||
|
|
||||||
function _toggleURLs() {
|
|
||||||
$("#_urlToggler").text(_urlSupport.toggleFolding() == "collapsed" ? "+ 펼치기" : "- 닫기");
|
|
||||||
}
|
|
||||||
|
|
||||||
var urls = ${urls};
|
|
||||||
|
|
||||||
_urlSupport.setData(treeHtml(urls, {
|
|
||||||
id:function(e){return e.url;},
|
|
||||||
text:function(e){
|
|
||||||
return e.name == e.url ? e.name : e.name + " (" + e.url + ")";
|
|
||||||
}
|
|
||||||
}));
|
|
||||||
|
|
||||||
$("#_urlToggler").text(_urlSupport._folding == "collapsed" ? "+ 펼치기" : "- 닫기");
|
|
||||||
</script>
|
|
Loading…
Reference in New Issue