전화 관련 commit

This commit is contained in:
pjs
2026-02-19 21:00:48 +09:00
parent a41b072d99
commit ae1ac1ea0f
22 changed files with 3317 additions and 0 deletions

View File

@@ -0,0 +1,126 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org"
xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" layout:decorate="~{/web/layout/homeLayout}">
<th:block layout:fragment="layout_css">
<link rel="stylesheet" href="/css/web/webFeedbackSelectList.css">
<link rel="stylesheet" href="/css/web/grid.css?v1.1">
<link rel="stylesheet" href="/css/web/call_log.css">
</th:block>
<th:block layout:fragment="layout_top_script">
<script>
let menuClass = "[[${param.menuClass}]]" == "" ? "" : "[[${param.menuClass}]]";
let selectUseYn = "[[${selectUseYn}]]" == "" ? "N" : "[[${selectUseYn}]]";
let insertUseYn = "[[${insertUseYn}]]" == "" ? "N" : "[[${insertUseYn}]]";
let updateUseYn = "[[${updateUseYn}]]" == "" ? "N" : "[[${updateUseYn}]]";
let deleteUseYn = "[[${deleteUseYn}]]" == "" ? "N" : "[[${deleteUseYn}]]";
let downloadUseYn = "[[${downloadUseYn}]]" == "" ? "N" : "[[${downloadUseYn}]]";
</script>
</th:block>
<th:block layout:fragment="layout_content">
<!-- 센터쪽 -->
<div class="center_box">
<p class="page_title">통화 로그 관리</p>
<!-- 검색 필터 영역 -->
<div class="cl_filter_wrap">
<!-- 1행: 구분 필터 -->
<div class="cl_filter_row">
<div class="cl_filter_item">
<label>구분1</label>
<select id="callType" class="cl_select">
<option value="">전체</option>
<option value="1">상담</option>
<option value="2">예약</option>
<option value="3">위치안내</option>
<option value="callback">Call Back</option>
</select>
</div>
<div class="cl_filter_item">
<label>구분2</label>
<select id="callType1" class="cl_select">
<option value="">전체</option>
<option value="초진">초진</option>
<option value="재진">재진</option>
</select>
</div>
<div class="cl_filter_item">
<label>구분3</label>
<select id="callType2" class="cl_select">
<option value="">전체</option>
<option value="상담">상담</option>
<option value="상담후예약">상담후예약</option>
<option value="회차예약">회차예약</option>
</select>
</div>
<div class="cl_filter_item">
<label>고객전화번호</label>
<input type="text" id="mCid" placeholder="전화번호 입력" />
</div>
</div>
<!-- 2행: 날짜 필터 -->
<div class="cl_filter_row">
<div class="cl_filter_item cl_date_item">
<label>검색일자</label>
<input type="date" id="sDate" />
<span class="cl_date_sep">~</span>
<input type="date" id="eDate" />
</div>
<div class="cl_quick_btns">
<button type="button" onclick="fn_dayChk('t')">오늘</button>
<button type="button" onclick="fn_dayChk('p')">어제</button>
<button type="button" onclick="fn_dayChk('w')">이번주</button>
<button type="button" onclick="fn_dayChk('pw')">지난주</button>
<button type="button" onclick="fn_dayChk('m')">이번달</button>
<button type="button" onclick="fn_dayChk('pm')">지난달</button>
</div>
<button type="button" id="searchBtn" class="cl_search_btn">조회</button>
</div>
</div>
<!-- 통계 요약 바 -->
<div class="cl_stats_bar">
<span>전체: <strong id="statTotal">0</strong></span>
<span class="cl_stats_sep">|</span>
<span>IN: <strong id="statIn">0</strong></span>
<span class="cl_stats_detail">[초진: <strong id="statType1">0</strong> / 재진: <strong
id="statType2">0</strong>]</span>
<span class="cl_stats_detail">[상담: <strong id="statType11">0</strong> / 상담후예약: <strong
id="statType12">0</strong> / 회차예약: <strong id="statType13">0</strong>]</span>
<span class="cl_stats_sep">|</span>
<span>OUT: <strong id="statOut">0</strong></span>
</div>
<!-- ag-Grid 테이블 -->
<div id="callLogGrid" class="cl_grid_box ag-theme-balham"></div>
<!-- 메모 팝업 -->
<div class="cl_memo_overlay" id="memoOverlay" style="display:none;">
<div class="cl_memo_popup">
<div class="cl_memo_header">
<h3>통화 메모</h3>
<span class="cl_memo_record" id="memoRecordNo"></span>
<button type="button" class="cl_memo_close" onclick="fn_closeMemo()">×</button>
</div>
<div class="cl_memo_body">
<input type="hidden" id="memoRecordNoVal" />
<textarea id="memoContent" placeholder="메모를 입력하세요" rows="6"></textarea>
</div>
<div class="cl_memo_footer">
<button type="button" class="cl_memo_save_btn" onclick="fn_saveMemo()">저장</button>
<button type="button" class="cl_memo_cancel_btn" onclick="fn_closeMemo()">취소</button>
</div>
</div>
</div>
</div>
<form id="callLogForm" onsubmit="return false;"></form>
</th:block>
<th:block layout:fragment="layout_popup">
</th:block>
<th:block layout:fragment="layout_script">
<script src="/js/web/ag-grid-community-29.3.5.min.js"></script>
<script src="/js/web/callLog/callLogSelectList.js"></script>
</th:block>
</html>

View File

@@ -0,0 +1,89 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org"
xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" layout:decorate="~{/web/layout/homeLayout}">
<th:block layout:fragment="layout_css">
<link rel="stylesheet" href="/css/web/webFeedbackSelectList.css">
<link rel="stylesheet" href="/css/web/grid.css?v1.1">
<link rel="stylesheet" href="/css/web/sms_template.css">
</th:block>
<th:block layout:fragment="layout_top_script">
<script>
let menuClass = "[[${param.menuClass}]]" == "" ? "" : "[[${param.menuClass}]]";
let selectUseYn = "[[${selectUseYn}]]" == "" ? "N" : "[[${selectUseYn}]]";
let insertUseYn = "[[${insertUseYn}]]" == "" ? "N" : "[[${insertUseYn}]]";
let updateUseYn = "[[${updateUseYn}]]" == "" ? "N" : "[[${updateUseYn}]]";
let deleteUseYn = "[[${deleteUseYn}]]" == "" ? "N" : "[[${deleteUseYn}]]";
let downloadUseYn = "[[${downloadUseYn}]]" == "" ? "N" : "[[${downloadUseYn}]]";
</script>
</th:block>
<th:block layout:fragment="layout_content">
<!-- 센터쪽 -->
<div class="center_box">
<p class="page_title">문자 상용구 관리</p>
<!-- 2패널 컨테이너 -->
<div class="sms_two_panel">
<!-- 좌측: 목록 -->
<div class="sms_left_panel">
<div class="sms_search_area">
<div class="sms_search_box">
<img src="/image/web/search_G.svg" alt="search" />
<input type="text" id="searchKeyword" placeholder="제목 또는 내용" />
</div>
<button id="searchBtn" class="sms_search_btn">조회</button>
<button type="button" id="newTemplateBtn" class="sms_new_btn">등록</button>
</div>
<div id="smsTemplateGrid" class="sms_grid_box ag-theme-balham"></div>
</div>
<!-- 우측: 상세/편집 -->
<div class="sms_right_panel">
<!-- 빈 상태 -->
<div class="sms_empty_state" id="emptyState">
<p>좌측 목록에서 상용구를 선택하거나<br />"등록" 버튼을 클릭하세요.</p>
</div>
<!-- 상세 폼 -->
<div class="sms_detail_form" id="detailForm" style="display:none;">
<div class="sms_detail_title_bar">
<h3 id="detailTitle">상용구 등록</h3>
</div>
<input type="hidden" id="muSmsTemplateId" />
<div class="sms_form_row">
<label for="templateTitle">제목</label>
<input type="text" id="templateTitle" placeholder="상용구 제목을 입력하세요" maxlength="100" />
</div>
<div class="sms_form_row">
<label for="templateContent">내용</label>
<textarea id="templateContent" placeholder="상용구 내용을 입력하세요" rows="8"></textarea>
<div class="byte_info">
<span><span id="byteCount">0</span> byte</span>
<span class="type_badge sms" id="typeBadge">SMS</span>
</div>
</div>
<div class="sms_form_row sms_info_row" id="infoRow" style="display:none;">
<span>등록자: <strong id="regName">-</strong></span>
<span>등록일: <strong id="regDate">-</strong></span>
<span>수정일: <strong id="modDate">-</strong></span>
</div>
<div class="sms_btn_group">
<button type="button" id="saveBtn" class="sms_save_btn">저장</button>
<button type="button" id="deleteBtn" class="sms_delete_btn" style="display:none;">삭제</button>
<button type="button" id="cancelBtn" class="sms_cancel_btn">취소</button>
</div>
</div>
</div>
</div>
</div>
<form id="smsTemplateForm" onsubmit="return false;"></form>
</th:block>
<th:block layout:fragment="layout_popup">
</th:block>
<th:block layout:fragment="layout_script">
<script src="/js/web/ag-grid-community-29.3.5.min.js"></script>
<script src="/js/web/smsTemplate/smsTemplateSelectList.js"></script>
</th:block>
</html>