Compare commits

...

2 Commits

Author SHA1 Message Date
bb2d3e9224 팩스수신조회 추가
Reviewed-on: http://192.168.10.243:3000/owrainfo/confirms/pulls/22
2026-01-14 10:53:55 +09:00
yangsh
69671e2066 팩스수신조회 추가
Some checks failed
Close Pull Request / main (pull_request_target) Has been cancelled
2026-01-14 10:53:15 +09:00
5 changed files with 187 additions and 6 deletions

View File

@@ -85,6 +85,7 @@ class Filters extends BaseFilters
'index.php/login/*', // /index.php/login/*
'register', // 회원가입 등
'register/*',
'/listfax/listfax/getLists',
'kiso/*', // 필요하면 API는 예외
],
],

View File

@@ -18,6 +18,7 @@ $routes->get('/home', 'Home\Home::dashboard');
$routes->get('/home/viewStatData', 'Home\Home::viewStatData'); // 실적조회
$routes->get('/home/getHomeFaxCount', 'Home\Home::getHomeFaxCount'); // 팩스조회
$routes->get('/listfax/listfax/getLists', 'Listfax\ListFax::getLists'); // 팩스수신확인
/**
* 공통 API

View File

@@ -9,6 +9,8 @@ use App\Models\listfax\ListFaxModel;
class ListFax extends BaseController
{
private $listfaxModel;
private $todo = ''; // 검색, 엑셀다운 구분
private $menuid = ''; // 레프트메뉴아이디
@@ -38,6 +40,10 @@ class ListFax extends BaseController
private $pars = [];
public function __construct()
{
$this->listfaxModel = new ListFaxModel();
}
public function index()
{
@@ -134,7 +140,6 @@ class ListFax extends BaseController
$base_uri = '/listfax/listfax/lists';
// CI3: $this->load->model('v2/listfax_model', 'listfax_model');
$listfaxModel = new ListFaxModel();
// CI3: $this->load->helper('array_helper');
helper(filenames: 'array'); // array_helper => array 로 이름 바꿨다면 이렇게
@@ -149,7 +154,7 @@ class ListFax extends BaseController
'total' => 0,
];
} else {
$resultData = $listfaxModel->getLists(
$resultData = $this->listfaxModel->getLists(
$this->todo,
$this->page,
$this->pagesize,
@@ -185,4 +190,26 @@ class ListFax extends BaseController
return view('listfax/listfax/lists', $data);
}
public function getLists()
{
$start = (int) $this->request->getGet('start') ?: 0;
$end = (int) $this->request->getGet('length') ?: 10;
$data = [
'caller_no' => $this->request->getGet('caller_no'),
];
$totalCount = $this->listfaxModel->getTotalCount($data);
$datas = $this->listfaxModel->getResultList($start, $end, $data);
return $this->response->setJSON(body: [
'recordsTotal' => $totalCount,
'recordsFiltered' => $totalCount,
'data' => $datas,
]);
}
}

View File

@@ -6,5 +6,48 @@ use CodeIgniter\Model;
class ListFaxModel extends Model
{
public function getTotalCount($data)
{
$sql = "SELECT
COUNT(*) AS cnt
FROM
fax_imgs a
WHERE
a.RECV_TIME >= CONCAT(DATE_FORMAT(DATE_ADD(NOW(), INTERVAL - 7 DAY), 'Y-m-d'), ' 00:00:00')
AND a.RECV_TIME <= CONCAT(DATE_FORMAT(NOW(), 'Y-m-d'), ' 23:59:59')
AND a.caller_no LIKE CONCAT('%', REPLACE('{$data['caller_no']}', '-', ''), '%')
GROUP BY a.`MID`
";
$query = $this->db->query($sql);
$row = $query->getRow();
return $row ? $row->cnt : 0;
}
public function getResultList($start, $end, $data)
{
$sql = "
SELECT
a.fax_sq, a.mid, GROUP_CONCAT(a.file_name) AS file_name, a.file_path, a.CALLER_NO, a.CALLEE_NO, a.RECV_TIME, a.SAVE_TIME, COUNT(a.file_name) AS cnt
FROM
fax_imgs a
WHERE
a.RECV_TIME >= CONCAT(DATE_FORMAT(DATE_ADD(NOW(), INTERVAL - 7 DAY), 'Y-m-d'), ' 00:00:00')
AND a.RECV_TIME <= CONCAT(DATE_FORMAT(NOW(), 'Y-m-d'), ' 23:59:59')
AND a.caller_no LIKE CONCAT('%', REPLACE('{$data['caller_no']}', '-', ''), '%')
GROUP BY a.`MID`
ORDER BY a.fax_sq DESC, a.RECV_TIME DESC
LIMIT {$start}, {$end}
";
$query = $this->db->query($sql);
return $query->getResultArray();
}
}

View File

@@ -41,6 +41,7 @@
<script defer src="/architectui/assets/scripts/chart_js.98288b227c064e6a107f.js"></script>
<script defer src="/architectui/assets/scripts/apex_charts.98288b227c064e6a107f.js"></script>
<script defer src="/architectui/assets/scripts/sparklines.98288b227c064e6a107f.js"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"></script>
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/sweetalert2@11"></script>
<link href="/architectui/assets/styles/vendors.98288b227c064e6a107f.css" rel="stylesheet">
@@ -105,8 +106,7 @@
<label for="exampleCheck"
class="form-check-label text-muted fw-medium">아이디저장</label>
</div>
<a href="javascript:void(0);"
class="text-primary text-decoration-none fw-semibold">
<a onclick="faxOpen();" class="text-primary text-decoration-none fw-semibold">
팩스 수신 확인
</a>
</div>
@@ -132,12 +132,80 @@
</div>
</div>
</div>
<!-- 모달영역-->
<div class="modal fade" id="faxModal" tabindex="-1">
<div class="modal-dialog modal-lg modal-dialog-centered modal-dialog-scrollable">
<div class="modal-content">
<!-- Header -->
<div class="modal-header">
<h5 class="modal-title">팩스 수신 확인</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal"></button>
</div>
<!-- Body -->
<div class="modal-body">
<form id="frm_srch_info" onsubmit="return false;">
<!-- 검색 영역 -->
<div class="row g-2 align-items-end mb-3">
<div class="col-md-2">
<label class="form-label mb-1">발신 팩스 번호</label>
<input type="text" class="form-control form-control-sm" name="caller_no"
placeholder="번호 입력" />
</div>
<div class="col-md-4 text-start">
<button type="button" class="btn btn-sm btn-primary" id="btnSearch">
검색
</button>
</div>
</div>
<hr class="my-2">
<!-- 테이블 영역 -->
<div class="table-responsive">
<table id="tblFax" class="table table-sm table-bordered table-hover align-middle mb-0">
<caption class="caption-top small text-muted">FAX 수신 현황</caption>
<thead class="table-light">
<tr>
<th class="text-center">수신기간</th>
</tr>
</thead>
<tbody>
<!-- 데이터 -->
</tbody>
</table>
</div>
</form>
</div>
<!-- Footer -->
<div class="modal-footer py-2">
<button type="button" class="btn btn-sm btn-secondary" data-bs-dismiss="modal">
닫기
</button>
</div>
</div>
</div>
</div>
<!-- 모달영역-->
<link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/1.13.6/css/jquery.dataTables.min.css" />
<script src="https://cdn.datatables.net/1.13.6/js/jquery.dataTables.min.js"></script>
<script defer src="/architectui/assets/js/datatable.kor.js"></script>
<script type="text/javascript">
const tpl = document.querySelector('.my-loader-template');
var table;
$(function () {
$("#btnSearch").on("click", function () {
table.ajax.reload();
});
$("#frm_login_info").on("submit", function (e) {
e.preventDefault(); // 기본 submit 막기
@@ -191,10 +259,51 @@
}
})
})
});
});
function faxOpen() {
table = $('#tblFax').DataTable({
language: lang_kor,
serverSide: true,
processing: true,
ajax: {
url: '/listfax/listfax/getLists',
type: 'GET',
beforeSend: function () {
blockUI.blockPage({
message: tpl
})
},
complete: function () {
blockUI.unblockPage()
},
data: function (d) {
d.caller_no = $("#frm_srch_info [name=caller_no]").val();
d.start = d.start || 0
d.length = d.length || 10
},
},
"columnDefs": [
{ className: 'text-center', targets: '_all' },
{ 'targets': '_all', "defaultContent": "" },
],
columns: [
{ data: 'atcl_no' },
],
// 옵션들 예시
paging: true,
searching: false,
ordering: false,
});
$("#faxModal").modal("show");
}
</script>
</body>