854 lines
50 KiB
HTML
854 lines
50 KiB
HTML
<!DOCTYPE html>
|
|
<!-- 관련 Namespace 선언 및 layout:decorate 추가 -->
|
|
<html lang="en"
|
|
xmlns:th="http://www.thymeleaf.org"
|
|
xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
|
|
layout:decorate="layout">
|
|
<head>
|
|
<!-- layout.html 에 들어간 head 부분을 제외하고 개별 파일에만 적용되는 head 부분 추가 -->
|
|
<title>agent 발송 테스트</title>
|
|
|
|
<!-- 필요하다면 개별 파일에 사용될 css/js 선언 -->
|
|
|
|
<link rel="stylesheet" th:href="@{/plugins/datatables-bs4/css/dataTables.bootstrap4.min.css}">
|
|
<link rel="stylesheet" th:href="@{/plugins/datatables-responsive/css/responsive.bootstrap4.min.css}">
|
|
<link rel="stylesheet" th:href="@{/plugins/datatables-buttons/css/buttons.bootstrap4.min.css}">
|
|
<link rel="stylesheet" href="https://code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
|
|
<style>
|
|
.byte-count {
|
|
margin-top: 5px;
|
|
font-size: 14px;
|
|
color: #555;
|
|
}
|
|
.custom-height {
|
|
height: 100px;
|
|
}
|
|
.example-button {
|
|
border-radius: 20px;
|
|
margin-right: 10px;
|
|
}
|
|
|
|
.input-group .example-button {
|
|
margin-right: 10px;
|
|
}
|
|
.slider {
|
|
width: 100%;
|
|
margin-top: 10px;
|
|
}
|
|
|
|
#hidden-info {
|
|
background-color: #f9f9f9;
|
|
border-top: 1px solid #ddd;
|
|
padding: 10px;
|
|
border-radius: 0 0 5px 5px;
|
|
}
|
|
|
|
.info-section {
|
|
margin-bottom: 15px;
|
|
}
|
|
|
|
.section-title {
|
|
font-weight: bold;
|
|
color: #333;
|
|
margin-bottom: 5px;
|
|
}
|
|
|
|
.info-item {
|
|
margin: 0;
|
|
padding-left: 10px;
|
|
color: #555;
|
|
}
|
|
|
|
.toggle-info-btn i {
|
|
transition: transform 0.2s ease-in-out;
|
|
}
|
|
|
|
.toggle-info-btn.rotate i {
|
|
transform: rotate(180deg);
|
|
}
|
|
|
|
.nowCardCTwo{
|
|
background-color: beige;
|
|
}
|
|
|
|
</style>
|
|
|
|
</head>
|
|
|
|
<body layout:fragment="body">
|
|
|
|
<div class="wrapper">
|
|
<div th:replace="~{fragments/top_nav :: topFragment}"/>
|
|
|
|
<!-- Main Sidebar Container -->
|
|
<aside class="main-sidebar sidebar-dark-primary elevation-4"
|
|
th:insert="~{fragments/mainsidebar :: sidebarFragment}">
|
|
</aside>
|
|
|
|
<!-- Content Wrapper. Contains page content -->
|
|
<div class="content-wrapper">
|
|
<!-- Content Header (Page header) -->
|
|
<div class="content-header">
|
|
<div class="container-fluid">
|
|
<div class="row mb-2">
|
|
<div class="col-sm-6">
|
|
<h1 class="m-0">AGENT 발송 테스트</h1>
|
|
</div><!-- /.col -->
|
|
<div class="col-sm-6">
|
|
<ol class="breadcrumb float-sm-right">
|
|
<li class="breadcrumb-item"><a href="#">Home</a></li>
|
|
<li class="breadcrumb-item active">AGENT 발송 테스트</li>
|
|
</ol>
|
|
</div><!-- /.col -->
|
|
</div><!-- /.row -->
|
|
</div><!-- /.container-fluid -->
|
|
</div>
|
|
<!-- /.content-header -->
|
|
<!-- Main content -->
|
|
<section class="content">
|
|
<div class="container-fluid">
|
|
<div class="row">
|
|
<input type="hidden" id="oneUserId" th:value="${oneUserId}">
|
|
<input type="hidden" id="twoUserId" th:value="${twoUserId}">
|
|
<!-- <div class="col-12">-->
|
|
<!-- /.card -->
|
|
|
|
<div class="col-md-6" id="divOneSms">
|
|
<div class="card">
|
|
<div class="card-header">
|
|
<h3 class="card-title" th:text="'Client 3 :: '+ ${oneUserId}"/>
|
|
<div class="card-tools">
|
|
<button type="button" class="btn btn-tool" data-card-widget="collapse">
|
|
<i class="fas fa-minus"></i>
|
|
</button>
|
|
<button type="button" class="btn btn-tool toggle-info-btn">
|
|
<i class="fas fa-info-circle"></i>
|
|
</button>
|
|
</div>
|
|
</div>
|
|
<div class="p-3 hidden-info" style="display: none;">
|
|
<!-- Client 1의 정보 -->
|
|
<div class="p-3 hidden-info" style="display: none;">
|
|
<div class="info-section">
|
|
<p class="section-title">사용자ID</p>
|
|
<p class="info-item" th:text="${oneUserId}"></p>
|
|
</div>
|
|
<div class="info-section">
|
|
<p class="section-title">DB정보</p>
|
|
<p class="info-item">- 192.168.0.31:3307</p>
|
|
</div>
|
|
<div class="info-section">
|
|
<p class="section-title">msg 발송 TB</p>
|
|
<p class="info-item">- MUNJAON_MSG</p>
|
|
</div>
|
|
<div class="info-section">
|
|
<p class="section-title">msg 리포팅 TB</p>
|
|
<p class="info-item">- MUNJAON_MSG_LOG</p>
|
|
</div>
|
|
<div class="info-section">
|
|
<p class="section-title">서버위치</p>
|
|
<p class="info-item">- 192.168.0.78</p>
|
|
<p class="info-item">- /home/mjon_client_agent_3</p>
|
|
</div>
|
|
</div>
|
|
<!-- 기타 정보들 추가 -->
|
|
</div>
|
|
<div class="card-body">
|
|
<form class="sendForm">
|
|
<!-- Client 1의 입력 폼 -->
|
|
<input type="hidden" name="sendStatus" value="0">
|
|
<div class="form-group">
|
|
<label for="msgType1">문자타입 - MSG_TYPE</label>
|
|
<div class="input-group">
|
|
<select type="text" class="form-control msgType" id="msgType1" name="msgType">
|
|
<option value="S">SMS</option>
|
|
<option value="L">LMS</option>
|
|
<option value="M">MMS</option>
|
|
<option value="A">알림톡</option>
|
|
<option value="F">친구톡</option>
|
|
</select>
|
|
</div>
|
|
</div>
|
|
<div class="form-group">
|
|
<label for="recvPhone1">수신번호 - RECV_PHONE</label>
|
|
<div class="input-group">
|
|
<input type="text" class="form-control recvPhone" id="recvPhone1" name="recvPhone" placeholder="수신번호 - RECV_PHONE">
|
|
</div>
|
|
</div>
|
|
<div class="form-group">
|
|
<label for="sendPhone1">회신번호 - SEND_PHONE</label>
|
|
<div class="input-group">
|
|
<input type="text" class="form-control sendPhone" id="sendPhone1" name="sendPhone" placeholder="회신번호 - SEND_PHONE">
|
|
</div>
|
|
</div>
|
|
<div class="form-group" style="display: none">
|
|
<label for="subject1">제목 - SUBJECT</label>
|
|
<div class="input-group">
|
|
<input type="text" class="form-control subject" id="subject1" name="subject" placeholder="제목 - SUBJECT">
|
|
</div>
|
|
</div>
|
|
<div class="form-group fileUploadGroup" style="display: none;">
|
|
<label for="file2">파일첨부</label>
|
|
<div class="input-group">
|
|
<input type="file" class="form-control file1" id="file2" name="fileName01">
|
|
</div>
|
|
<div class="input-group mt-2">
|
|
<input type="file" class="form-control file2" name="fileName02">
|
|
</div>
|
|
<div class="input-group mt-2">
|
|
<input type="file" class="form-control file3" name="fileName03">
|
|
</div>
|
|
</div>
|
|
<div class="form-group">
|
|
<label for="sendPhone1">메세지 - MESSAGE</label>
|
|
<div class="input-group">
|
|
<textarea class="form-control message" id="message1" name="message" placeholder="메세지 - MESSAGE" rows="5" oninput="updateByteCount(this)"></textarea>
|
|
</div>
|
|
<div class="byte-count">0 bytes</div>
|
|
</div>
|
|
<div class="form-group">
|
|
<label for="slider1">건수 (max 1,000,000 | 백만)</label>
|
|
<div class="input-group">
|
|
<input type="text" class="form-control sliderValue" id="sendCnt1" name="sendCnt" placeholder="건수" autocomplete="off">
|
|
<div class="slider mt-2" id="slider1"></div>
|
|
</div>
|
|
</div>
|
|
|
|
<button type="button" class="btn btn-primary w-20 sendBtn">발송</button>
|
|
<button type="button" class="btn btn-info w-40 examBtn">예시입력</button>
|
|
<button type="reset" class="btn btn-secondary w-30">Reset</button>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-md-6" id="divTwoSms">
|
|
<div class="card">
|
|
<div class="card-header">
|
|
<!-- <h3 class="card-title">Client 2 (006star)</h3>-->
|
|
<h3 class="card-title" th:text="'Client 4 :: '+ ${twoUserId}"/>
|
|
<div class="card-tools">
|
|
<button type="button" class="btn btn-tool" data-card-widget="collapse">
|
|
<i class="fas fa-minus"></i>
|
|
</button>
|
|
<button type="button" class="btn btn-tool toggle-info-btn">
|
|
<i class="fas fa-info-circle"></i>
|
|
</button>
|
|
</div>
|
|
</div>
|
|
<!-- /.card-header -->
|
|
<div class="p-3 hidden-info" style="display: none;">
|
|
<div class="info-section">
|
|
<p class="section-title">사용자ID</p>
|
|
<p class="info-item" th:text="${twoUserId}"></p>
|
|
</div>
|
|
<div class="info-section">
|
|
<p class="section-title">DB정보</p>
|
|
<p class="info-item">- 192.168.0.31:3308</p>
|
|
</div>
|
|
<div class="info-section">
|
|
<p class="section-title">msg 발송 TB</p>
|
|
<p class="info-item">- MUNJAON_MSG</p>
|
|
</div>
|
|
<div class="info-section">
|
|
<p class="section-title">msg 리포팅 TB</p>
|
|
<p class="info-item">- MUNJAON_MSG_LOG</p>
|
|
</div>
|
|
<div class="info-section">
|
|
<p class="section-title">서버위치</p>
|
|
<p class="info-item">- 192.168.0.31 (윈도우)</p>
|
|
<p class="info-item">- /dev/mjon_agent/agent_client_04</p>
|
|
</div>
|
|
</div>
|
|
<!-- /.card-header -->
|
|
<div class="card-body">
|
|
<form class="sendForm">
|
|
<input type="hidden" name="msgType" value="S">
|
|
<input type="hidden" name="sendStatus" value="0">
|
|
<div class="form-group">
|
|
<label for="msgType">문자타입 - MSG_TYPE</label>
|
|
<div class="input-group">
|
|
<select type="text" class="form-control msgType" id="msgType" name="msgType">
|
|
<option value="S">SMS</option>
|
|
<option value="L">LMS</option>
|
|
<option value="M">MMS</option>
|
|
<option value="A">알림톡</option>
|
|
<option value="F">친구톡</option>
|
|
</select>
|
|
</div>
|
|
</div>
|
|
<div class="form-group">
|
|
<label for="recvPhone">수신번호 - RECV_PHONE</label>
|
|
<div class="input-group">
|
|
<input type="text" class="form-control recvPhone" id="recvPhone" name="recvPhone" placeholder="수신번호 - RECV_PHONE">
|
|
</div>
|
|
</div>
|
|
<div class="form-group">
|
|
<label for="sendPhone">회신번호 - SEND_PHONE</label>
|
|
<div class="input-group">
|
|
<input type="text" class="form-control sendPhone" id="sendPhone" name="sendPhone" placeholder="회신번호 - SEND_PHONE">
|
|
</div>
|
|
</div>
|
|
<div class="form-group" style="display: none">
|
|
<label for="subject">제목 - SUBJECT</label>
|
|
<div class="input-group">
|
|
<input type="text" class="form-control subject" id="subject" name="subject" placeholder="제목 - SUBJECT">
|
|
</div>
|
|
</div>
|
|
<div class="form-group fileUploadGroup" style="display: none;">
|
|
<label for="file1">파일첨부</label>
|
|
<div class="input-group">
|
|
<input type="file" class="form-control file1" id="file1" name="fileName01">
|
|
</div>
|
|
<div class="input-group mt-2">
|
|
<input type="file" class="form-control file2" name="fileName02">
|
|
</div>
|
|
<div class="input-group mt-2">
|
|
<input type="file" class="form-control file3" name="fileName03">
|
|
</div>
|
|
</div>
|
|
<div class="form-group">
|
|
<label for="message">메세지 - MESSAGE</label>
|
|
<div class="input-group">
|
|
<textarea class="form-control message" id="message" name="message" placeholder="메세지 - MESSAGE" rows="5" oninput="updateByteCount(this)"></textarea>
|
|
</div>
|
|
<div class="byte-count">0 bytes</div>
|
|
</div>
|
|
<div class="form-group">
|
|
<label for="slider">건수 (max 1,000,000 | 백만)</label>
|
|
<div class="input-group">
|
|
<input type="text" class="form-control sliderValue" id="sendCnt" name="sendCnt" placeholder="건수" autocomplete="off">
|
|
<div class="slider mt-2" id="slider"></div>
|
|
</div>
|
|
</div>
|
|
|
|
<button type="button" class="btn btn-primary w-20 sendBtn">발송</button>
|
|
<button type="button" class="btn btn-info w-40 examBtn">예시입력</button>
|
|
<button type="reset" class="btn btn-secondary w-30">Reset</button>
|
|
|
|
</form>
|
|
|
|
</div>
|
|
<!-- /.card-body -->
|
|
</div>
|
|
<!-- /.card -->
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<!-- 새로운 현황 섹션 -->
|
|
<!-- <div class="col-md-6">-->
|
|
<!-- <div class="card" style="background-color: beige;">-->
|
|
<!-- <div class="card-header">-->
|
|
<!-- <h3 class="card-title">Client 1 현재현황</h3>-->
|
|
<!-- <button type="button" class="btn btn-tool" onclick="refreshClient2Status()">-->
|
|
<!-- <i class="fas fa-sync-alt"></i>-->
|
|
<!-- </button>-->
|
|
<!-- </div>-->
|
|
<!-- <div class="card-body">-->
|
|
<!-- <div class="row">-->
|
|
<!-- <!– MSG 건 –>-->
|
|
<!-- <div class="col-md-4 col-sm-6 col-12">-->
|
|
<!-- <div class="info-box bg-light">-->
|
|
<!-- <span class="info-box-icon bg-gray"><i class="fas fa-envelope"></i></span>-->
|
|
<!-- <div class="info-box-content">-->
|
|
<!-- <span class="info-box-text">MSG 건</span>-->
|
|
<!-- <span class="info-box-number" id="client1MsgCnt">0</span>-->
|
|
<!-- </div>-->
|
|
<!-- </div>-->
|
|
<!-- </div>-->
|
|
<!-- <!– MSG_LOG 건 –>-->
|
|
<!-- <div class="col-md-4 col-sm-6 col-12">-->
|
|
<!-- <div class="info-box bg-light">-->
|
|
<!-- <span class="info-box-icon bg-gray"><i class="fas fa-file-alt"></i></span>-->
|
|
<!-- <div class="info-box-content">-->
|
|
<!-- <span class="info-box-text">MSG_LOG 건</span>-->
|
|
<!-- <span class="info-box-number" id="client1MsgLogCnt">0</span>-->
|
|
<!-- </div>-->
|
|
<!-- </div>-->
|
|
<!-- </div>-->
|
|
<!-- <!– report(X) 건 –>-->
|
|
<!-- <div class="col-md-4 col-sm-6 col-12">-->
|
|
<!-- <div class="info-box bg-light">-->
|
|
<!-- <span class="info-box-icon bg-gray"><i class="fas fa-chart-bar"></i></span>-->
|
|
<!-- <div class="info-box-content">-->
|
|
<!-- <span class="info-box-text">report(X) 건</span>-->
|
|
<!-- <span class="info-box-number" id="client1ReportCnt">0</span>-->
|
|
<!-- </div>-->
|
|
<!-- </div>-->
|
|
<!-- </div>-->
|
|
<!-- </div>-->
|
|
<!-- </div>-->
|
|
<!-- </div>-->
|
|
<!-- </div>-->
|
|
|
|
<!-- <div class="col-md-6">-->
|
|
<!-- <div class="card" style="background-color: beige;">-->
|
|
<!-- <div class="card-header">-->
|
|
<!-- <h3 class="card-title">Client 2 현재현황</h3>-->
|
|
<!-- <button type="button" class="btn btn-tool" onclick="refreshClient2Status()">-->
|
|
<!-- <i class="fas fa-sync-alt"></i>-->
|
|
<!-- </button>-->
|
|
<!-- </div>-->
|
|
<!-- <div class="card-body">-->
|
|
<!-- <div class="row">-->
|
|
<!-- <!– MSG 건 –>-->
|
|
<!-- <div class="col-md-4 col-sm-6 col-12">-->
|
|
<!-- <div class="info-box bg-light">-->
|
|
<!-- <span class="info-box-icon bg-gray"><i class="fas fa-envelope"></i></span>-->
|
|
<!-- <div class="info-box-content">-->
|
|
<!-- <span class="info-box-text">MSG 건</span>-->
|
|
<!-- <span class="info-box-number" id="client2MsgCnt">0</span>-->
|
|
<!-- </div>-->
|
|
<!-- </div>-->
|
|
<!-- </div>-->
|
|
<!-- <!– MSG_LOG 건 –>-->
|
|
<!-- <div class="col-md-4 col-sm-6 col-12">-->
|
|
<!-- <div class="info-box bg-light">-->
|
|
<!-- <span class="info-box-icon bg-gray"><i class="fas fa-file-alt"></i></span>-->
|
|
<!-- <div class="info-box-content">-->
|
|
<!-- <span class="info-box-text">MSG_LOG 건</span>-->
|
|
<!-- <span class="info-box-number" id="client2MsgLogCnt">0</span>-->
|
|
<!-- </div>-->
|
|
<!-- </div>-->
|
|
<!-- </div>-->
|
|
<!-- <!– report(X) 건 –>-->
|
|
<!-- <div class="col-md-4 col-sm-6 col-12">-->
|
|
<!-- <div class="info-box bg-light">-->
|
|
<!-- <span class="info-box-icon bg-gray"><i class="fas fa-chart-bar"></i></span>-->
|
|
<!-- <div class="info-box-content">-->
|
|
<!-- <span class="info-box-text">report(X) 건</span>-->
|
|
<!-- <span class="info-box-number" id="client2ReportCnt">0</span>-->
|
|
<!-- </div>-->
|
|
<!-- </div>-->
|
|
<!-- </div>-->
|
|
<!-- </div>-->
|
|
<!-- </div>-->
|
|
<!-- </div>-->
|
|
<!-- </div>-->
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="col-md-6">
|
|
<div class="card" id="divOneSmsCard">
|
|
<div class="card-header">
|
|
<div class="d-flex justify-content-start align-items-center">
|
|
<h3 class="card-title mb-0">클라이언트1 현황확인</h3>
|
|
<span class="text-primary font-weight-bold h4 ml-2 sendCntTxt"></span>
|
|
|
|
</div>
|
|
</div>
|
|
<div class="card-body">
|
|
<div class="row"><!-- 클라이언트 insert -->
|
|
<div class="col-md-4 col-sm-6 col-12">
|
|
<div class="info-box bg-light">
|
|
<span class="info-box-icon bg-gray" style="width: 35px;"><i class="fas fa-upload"></i></span>
|
|
<div class="info-box-content">
|
|
<span class="info-box-text">클라이언트 insert</span>
|
|
<div class="d-flex justify-content-between">
|
|
<span class="info-box-number insertCnt">0</span>
|
|
<span class="info-box-unit font-weight-bold">건수</span>
|
|
</div>
|
|
<div class="progress">
|
|
<div class="progress-bar" style="width: 100%"></div>
|
|
</div>
|
|
<span class="progress-description insertSeconds">
|
|
0초
|
|
</span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<!-- 데이터 이관 시간 -->
|
|
<div class="col-md-4 col-sm-6 col-12">
|
|
<div class="info-box bg-light">
|
|
<span class="info-box-icon bg-gray" style="width: 35px;"><i class="fas fa-clock"></i></span>
|
|
<div class="info-box-content">
|
|
<span class="info-box-text">데이터 이관 시간 (C -> S)</span>
|
|
<div class="d-flex justify-content-between">
|
|
<span class="info-box-number transferCnt">0</span>
|
|
<span class="info-box-unit font-weight-bold">건수</span>
|
|
</div>
|
|
<div class="progress">
|
|
<div class="progress-bar" style="width: 100%"></div>
|
|
</div>
|
|
<span class="progress-description transferSeconds">
|
|
0초
|
|
</span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<!-- 클라이언트 report -->
|
|
<div class="col-md-4 col-sm-6 col-12">
|
|
<div class="info-box bg-light">
|
|
<span class="info-box-icon bg-gray" style="width: 35px;"><i class="fas fa-chart-line"></i></span>
|
|
<div class="info-box-content">
|
|
<span class="info-box-text">클라이언트 report (S -> C)</span>
|
|
<div class="d-flex justify-content-between align-items-center">
|
|
<span class="info-box-number reportStartCnt">0</span><!--<span class="reportStartSubCnt"></span>-->
|
|
<!-- <span class="info-box-number mx-2">→</span>-->
|
|
<!-- <span class="info-box-number reportSndCnt">0</span>-->
|
|
<span class="info-box-unit font-weight-bold ml-2">건수</span>
|
|
</div>
|
|
<div class="progress">
|
|
<div class="progress-bar" style="width: 100%"></div>
|
|
</div>
|
|
<span class="progress-description reportSeconds">
|
|
0초
|
|
</span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
</div>
|
|
<!-- Reporting start 버튼 -->
|
|
<!-- <div class="row">-->
|
|
|
|
<!-- <div class="col-12 text-left">-->
|
|
<!-- <button class="btn btn-success rprtCrrntStrtBtn" data-tagid="oneUserId">-->
|
|
<!-- <i class="fas fa-chart-line"></i> Report Current Data-->
|
|
<!-- </button>-->
|
|
<!-- <button class="btn btn-danger rprtAllStrtBtn" data-tagid="oneUserId">-->
|
|
<!-- <i class="fas fa-chart-line"></i> Report All Data-->
|
|
<!-- </button>-->
|
|
<!-- </div>-->
|
|
|
|
<!-- </div>-->
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="col-md-6">
|
|
<div class="card" id="divTwoSmsCard">
|
|
<div class="card-header">
|
|
<div class="d-flex justify-content-start align-items-center">
|
|
<h3 class="card-title mb-0">클라이언트2 현황확인</h3>
|
|
<span class="text-primary font-weight-bold h4 ml-2 sendCntTxt"></span>
|
|
|
|
</div>
|
|
</div>
|
|
<div class="card-body">
|
|
<div class="row"><!-- 클라이언트 insert -->
|
|
<div class="col-md-4 col-sm-6 col-12">
|
|
<div class="info-box bg-light">
|
|
<span class="info-box-icon bg-gray" style="width: 35px;"><i class="fas fa-upload"></i></span>
|
|
<div class="info-box-content">
|
|
<span class="info-box-text">클라이언트 insert</span>
|
|
<div class="d-flex justify-content-between">
|
|
<span class="info-box-number insertCnt">0</span>
|
|
<span class="info-box-unit font-weight-bold">건수</span>
|
|
</div>
|
|
<div class="progress">
|
|
<div class="progress-bar" style="width: 100%"></div>
|
|
</div>
|
|
<span class="progress-description insertSeconds">
|
|
0초
|
|
</span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<!-- 데이터 이관 시간 -->
|
|
<div class="col-md-4 col-sm-6 col-12">
|
|
<div class="info-box bg-light">
|
|
<span class="info-box-icon bg-gray" style="width: 35px;"><i class="fas fa-clock"></i></span>
|
|
<div class="info-box-content">
|
|
<span class="info-box-text">데이터 이관 시간 (C -> S)</span>
|
|
<div class="d-flex justify-content-between">
|
|
<span class="info-box-number transferCnt">0</span>
|
|
<span class="info-box-unit font-weight-bold">건수</span>
|
|
</div>
|
|
<div class="progress">
|
|
<div class="progress-bar" style="width: 100%"></div>
|
|
</div>
|
|
<span class="progress-description transferSeconds">
|
|
0초
|
|
</span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<!-- 클라이언트 report -->
|
|
<div class="col-md-4 col-sm-6 col-12">
|
|
<div class="info-box bg-light">
|
|
<span class="info-box-icon bg-gray" style="width: 35px;"><i class="fas fa-chart-line"></i></span>
|
|
<div class="info-box-content">
|
|
<span class="info-box-text">클라이언트 report (S -> C)</span>
|
|
<div class="d-flex justify-content-between align-items-center">
|
|
<span class="info-box-number reportStartCnt">0</span><!--<span class="reportStartSubCnt"></span>-->
|
|
<!-- <span class="info-box-number mx-2">→</span>-->
|
|
<!-- <span class="info-box-number reportSndCnt">0</span>-->
|
|
<span class="info-box-unit font-weight-bold ml-2">건수</span>
|
|
</div>
|
|
<div class="progress">
|
|
<div class="progress-bar" style="width: 100%"></div>
|
|
</div>
|
|
<span class="progress-description reportSeconds">
|
|
0초
|
|
</span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
</div>
|
|
<!-- Reporting start 버튼 -->
|
|
<!-- <div class="row">-->
|
|
<!-- <div class="col-12 text-left">-->
|
|
<!--<!– <button class="btn btn-success newButtonClass">Now data report start</button> <!– 새로운 버튼 추가 –>–>-->
|
|
<!--<!– <button class="btn btn-danger rprtAllStrtBtn" data-tagid="twoUserId">ALL data Reporting start</button>–>-->
|
|
<!-- <button class="btn btn-success rprtCrrntStrtBtn" data-tagid="twoUserId">-->
|
|
<!-- <i class="fas fa-chart-line"></i> Report Current Data-->
|
|
<!-- </button>-->
|
|
<!-- <button class="btn btn-danger rprtAllStrtBtn" data-tagid="twoUserId">-->
|
|
<!-- <i class="fas fa-chart-line"></i> Report All Data-->
|
|
<!-- </button>-->
|
|
<!-- </div>-->
|
|
<!-- </div>-->
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<!-- /.col -->
|
|
</div>
|
|
<!-- /.row -->
|
|
</div>
|
|
<!-- /.container-fluid -->
|
|
</section>
|
|
<!-- /Main content -->
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<!-- /.content-wrapper -->
|
|
<footer class="main-footer"
|
|
th:insert="~{fragments/footer :: footerFragment}">
|
|
</footer>
|
|
|
|
<!-- Control Sidebar -->
|
|
<aside class="control-sidebar control-sidebar-dark">
|
|
<!-- Control sidebar content goes here -->
|
|
</aside>
|
|
<!-- /.control-sidebar -->
|
|
</div>
|
|
<!-- ./wrapper -->
|
|
<script th:src="@{/cmn/js/agent/init.js}"></script>
|
|
<script th:src="@{/cmn/js/agent/timerForOneC.js}"></script>
|
|
<script th:src="@{/cmn/js/agent/timerForTwoC.js}"></script>
|
|
<script>
|
|
$(function () {
|
|
|
|
// client_1 영역
|
|
// client_1 영역
|
|
// client_1 영역
|
|
// client_1 영역
|
|
// client_1 영역
|
|
/*
|
|
* client_1 msg insert
|
|
* */
|
|
$("#divOneSms .sendBtn").on("click", function () {
|
|
// 폼 데이터를 수집
|
|
var formData = new FormData($("#divOneSms .sendForm")[0]);
|
|
|
|
// 먼저 파일을 업로드하고 파일명만 받음
|
|
var fileUploadForm = new FormData();
|
|
fileUploadForm.append("fileName01", formData.get("fileName01"));
|
|
fileUploadForm.append("fileName02", formData.get("fileName02"));
|
|
fileUploadForm.append("fileName03", formData.get("fileName03"));
|
|
|
|
|
|
$.ajax({
|
|
type: "POST",
|
|
url: "/agent/one/uploadFiles",
|
|
data: fileUploadForm,
|
|
processData: false,
|
|
contentType: false,
|
|
success: function(response) {
|
|
console.log('response : ', response);
|
|
if (response.status === 'OK') {
|
|
|
|
|
|
// 파일명만 formData에 추가
|
|
// 파일명 formData에 추가
|
|
if (response.data.fileName01) {
|
|
formData.append("fileName01", response.data.fileName01);
|
|
}
|
|
if (response.data.fileName02) {
|
|
formData.append("fileName02", response.data.fileName02);
|
|
}
|
|
if (response.data.fileName03) {
|
|
formData.append("fileName03", response.data.fileName03);
|
|
}
|
|
|
|
var jsonObject = {};
|
|
formData.forEach((value, key) => {
|
|
if (!(value instanceof File)) {
|
|
jsonObject[key] = value;
|
|
}
|
|
});
|
|
if(jsonObject['recvPhone'] === ""){
|
|
alert('정보를 입력하거나 예시입력을 클릭해주세요.')
|
|
return false;
|
|
}
|
|
|
|
console.log('one jsonObject send : ', jsonObject);
|
|
|
|
$.ajax({
|
|
type: "POST",
|
|
url: "/agent/one/send",
|
|
data: JSON.stringify(jsonObject), // JSON 문자열로 변환된 데이터를 전송
|
|
dataType: 'json',
|
|
contentType: 'application/json',
|
|
// async: true,
|
|
success: function (data) {
|
|
// console.log('data : ', data);
|
|
|
|
if (data.status === 'OK') {
|
|
fn_successAlert('경과시간 : '+data.data, data.msg);
|
|
// fn_successAlert(data, message)
|
|
}
|
|
else {
|
|
alert("오류 알림 : :: "+data.msg);
|
|
}
|
|
},
|
|
error: function (e) {
|
|
alert("저장에 실패하였습니다.");
|
|
console.log("ERROR : " + JSON.stringify(e));
|
|
},
|
|
beforeSend : function(xmlHttpRequest) {
|
|
fn_oneInsertScriptStart();
|
|
|
|
},
|
|
complete : function(xhr, textStatus) {
|
|
// oneStopInsertTimer();
|
|
}
|
|
});
|
|
} else {
|
|
alert("파일 업로드 실패: " + response.msg);
|
|
}
|
|
},
|
|
error: function(e) {
|
|
alert("파일 업로드에 실패하였습니다.");
|
|
console.log("ERROR : " + JSON.stringify(e));
|
|
}
|
|
});
|
|
});
|
|
|
|
|
|
|
|
|
|
// client_2 영역
|
|
// client_2 영역
|
|
// client_2 영역
|
|
// client_2 영역
|
|
// client_2 영역
|
|
/*
|
|
* client_2 msg insert
|
|
* */
|
|
$("#divTwoSms .sendBtn").on("click", function () {
|
|
|
|
// 폼 데이터를 수집
|
|
var formData = new FormData($("#divTwoSms .sendForm")[0]);
|
|
|
|
// 먼저 파일을 업로드하고 파일명만 받음
|
|
var fileUploadForm = new FormData();
|
|
fileUploadForm.append("fileName01", formData.get("fileName01"));
|
|
fileUploadForm.append("fileName02", formData.get("fileName02"));
|
|
fileUploadForm.append("fileName03", formData.get("fileName03"));
|
|
|
|
|
|
$.ajax({
|
|
type: "POST",
|
|
url: "/agent/two/uploadFiles",
|
|
data: fileUploadForm,
|
|
processData: false,
|
|
contentType: false,
|
|
success: function(response) {
|
|
console.log('response : ', response);
|
|
if (response.status === 'OK') {
|
|
|
|
|
|
// 파일명만 formData에 추가
|
|
// 파일명 formData에 추가
|
|
if (response.data.fileName01) {
|
|
formData.append("fileName01", response.data.fileName01);
|
|
}
|
|
if (response.data.fileName02) {
|
|
formData.append("fileName02", response.data.fileName02);
|
|
}
|
|
if (response.data.fileName03) {
|
|
formData.append("fileName03", response.data.fileName03);
|
|
}
|
|
|
|
|
|
var jsonObject = {};
|
|
formData.forEach((value, key) => {
|
|
if (!(value instanceof File)) {
|
|
jsonObject[key] = value;
|
|
}
|
|
});
|
|
if(jsonObject['recvPhone'] === ""){
|
|
alert('정보를 입력하거나 예시입력을 클릭해주세요.')
|
|
return false;
|
|
}
|
|
|
|
|
|
|
|
$.ajax({
|
|
type: "POST",
|
|
url: "/agent/two/send",
|
|
data: JSON.stringify(jsonObject), // JSON 문자열로 변환된 데이터를 전송
|
|
dataType: 'json',
|
|
contentType: 'application/json',
|
|
// async: true,
|
|
success: function (data) {
|
|
// console.log('data : ', data);
|
|
|
|
if (data.status === 'OK') {
|
|
fn_successAlert('경과시간 : '+data.data, data.msg);
|
|
// fn_successAlert(data, message)
|
|
}
|
|
else {
|
|
alert("오류 알림 : :: "+data.msg);
|
|
}
|
|
},
|
|
error: function (e) {
|
|
alert("데이터 저장에 실패하였습니다.");
|
|
console.log("ERROR : " + JSON.stringify(e));
|
|
},
|
|
beforeSend : function(xmlHttpRequest) {
|
|
fn_twoInsertScriptStart();
|
|
|
|
},
|
|
complete : function(xhr, textStatus) {
|
|
oneStopInsertTimer();
|
|
}
|
|
});
|
|
} else {
|
|
alert("파일 업로드 실패: " + response.msg);
|
|
}
|
|
},
|
|
error: function(e) {
|
|
alert("파일 업로드에 실패하였습니다.");
|
|
console.log("ERROR : " + JSON.stringify(e));
|
|
}
|
|
});
|
|
});
|
|
|
|
|
|
});
|
|
|
|
|
|
</script>
|
|
|
|
</body>
|
|
|
|
|
|
|
|
</html>
|