Compare commits

..

2 Commits

Author SHA1 Message Date
37efde8686 현장확인V2 추가
Reviewed-on: http://192.168.10.243:3000/owrainfo/confirms/pulls/31
2026-01-19 15:34:42 +09:00
yangsh
9116b27d80 현장확인V2 추가
Some checks failed
Close Pull Request / main (pull_request_target) Has been cancelled
2026-01-19 15:34:06 +09:00
14 changed files with 1295 additions and 62 deletions

View File

@@ -134,6 +134,16 @@ $routes->group('', ['namespace' => 'App\Controllers\Article'], static function (
$routes->get('excel', 'Receipt2::excel'); $routes->get('excel', 'Receipt2::excel');
}); });
/**
* 현장확인V2 조직별 배정 현황
*/
$routes->group('article/dept2', static function ($routes) {
$routes->get('lists', 'Dept2::lists');
$routes->get('getResultList', 'Dept2::getResultList');
$routes->get('excel', 'Dept2::excel');
});
}); });

View File

@@ -0,0 +1,139 @@
<?php
namespace App\Controllers\Article;
use App\Controllers\BaseController;
use App\Models\article\DeptModel;
use App\Models\common\CodeModel;
class Dept2 extends BaseController
{
private $model, $codeModel;
public function __construct()
{
$this->codeModel = new CodeModel();
$this->model = new DeptModel();
}
public function lists(): string
{
$codes = $this->codeModel->getCodeLists(['NHN_PRODUCT_TYPE', 'RECEIPT_STATUS1', 'RESERVED_APM']); // 코드조회
$sido = $this->model->getAreaList(); // 지역조회
$bonbu = $this->model->getBonbuList();
$team = $this->model->getTeamList();
$user = $this->model->getUserList();
$this->data['sido'] = $sido;
$this->data['bonbu'] = $bonbu;
$this->data['team'] = $team;
$this->data['user'] = $user;
$this->data['codes'] = $codes;
return view("pages/article/dept/lists2", $this->data);
}
public function getResultList()
{
$start = (int) $this->request->getGet('start') ?: 0;
$end = (int) $this->request->getGet('length') ?: 10;
$data = [
'rcpt_atclno' => $this->request->getGet('rcpt_atclno'), // 매물ID
'sdate' => $this->request->getGet('sdate'), // 시작일
'edate' => $this->request->getGet('edate'), // 종료일
'rsrv_tm_ap' => $this->request->getGet('rsrv_tm_ap'), // 유형
'rsrv_sdate' => $this->request->getGet('rsrv_sdate'), // 시작일
'rsrv_edate' => $this->request->getGet('rsrv_edate'), // 종료일
'bonbu' => $this->request->getGet('bonbu'), // 본부
'team' => $this->request->getGet('team'), // 팀
'user' => $this->request->getGet('user'), // 담당자
'sido' => $this->request->getGet('sido'), // 시도
'gugun' => $this->request->getGet('gugun'), // 시군구
'dong' => $this->request->getGet('dong'), // 읍면동
'ground_plan_yn' => $this->request->getGet('ground_plan_yn'), // 평면도유무
'ground_plan' => $this->request->getGet('ground_plan'), // 평면도요청
'direct_trad_yn' => $this->request->getGet('direct_trad_yn'), // 직거래
'isSiteVRVerification' => $this->request->getGet('isSiteVRVerification'), // 검증방식
'conf_img_yn' => $this->request->getGet('conf_img_yn'), // 홍보확인서 여부
'stat' => $this->request->getGet('stat'),
'srchType' => $this->request->getGet('srchType'), // 검색유형
'srchTxt' => $this->request->getGet('srchTxt'), // 검색어
];
$totalCount = $this->model->getTotalCount($data);
$datas = $this->model->getResultList($start, $end, $data);
$deptStatistics = $this->model->getDeptStatistics($data); // 조직별통계
$areaStatistics = $this->model->getAreaStatistics($data); // 지역별통계
return $this->response->setJSON(body: [
'recordsTotal' => $totalCount,
'recordsFiltered' => $totalCount,
'data' => $datas,
'widgets' => [
'deptList' => $deptStatistics,
'areaStats' => $areaStatistics,
],
]);
}
// 엑셀 다운로드
public function excel()
{
try {
$data = [
'req_rec_yn' => 'Y',
'rcpt_atclno' => $this->request->getGet('rcpt_atclno'), // 매물ID
'sdate' => $this->request->getGet('sdate'), // 시작일
'edate' => $this->request->getGet('edate'), // 종료일
'rsrv_tm_ap' => $this->request->getGet('rsrv_tm_ap'), // 유형
'rsrv_sdate' => $this->request->getGet('rsrv_sdate'), // 시작일
'rsrv_edate' => $this->request->getGet('rsrv_edate'), // 종료일
'bonbu' => $this->request->getGet('bonbu'), // 본부
'team' => $this->request->getGet('team'), // 팀
'user' => $this->request->getGet('user'), // 담당자
'sido' => $this->request->getGet('sido'), // 시도
'gugun' => $this->request->getGet('gugun'), // 시군구
'dong' => $this->request->getGet('dong'), // 읍면동
'ground_plan_yn' => $this->request->getGet('ground_plan_yn'), // 평면도유무
'ground_plan' => $this->request->getGet('ground_plan'), // 평면도요청
'direct_trad_yn' => $this->request->getGet('direct_trad_yn'), // 직거래
'isSiteVRVerification' => $this->request->getGet('isSiteVRVerification'), // 검증방식
'conf_img_yn' => $this->request->getGet('conf_img_yn'), // 홍보확인서 여부
'stat' => $this->request->getGet('stat'),
'srchType' => $this->request->getGet('srchType'), // 검색유형
'srchTxt' => $this->request->getGet('srchTxt'), // 검색어
];
$datas = $this->model->getExcelList($data);
return $this->response->setJSON(body: [
'data' => $datas,
]);
} catch (\Exception $e) {
$e->getPrevious()->getTraceAsString();
}
}
}

View File

@@ -418,7 +418,7 @@ class DeptModel extends Model
$builder->where('a.rcpt_atclno', $data['rcpt_atclno']); $builder->where('a.rcpt_atclno', $data['rcpt_atclno']);
} else { } else {
$builder->where('a.isSiteVRVerification', 'N'); $builder->where('b.req_rec_yn', 'Y');
// 접수일자 // 접수일자
/* /*
@@ -490,6 +490,20 @@ class DeptModel extends Model
$builder->where('a.direct_trad_yn', 'N'); $builder->where('a.direct_trad_yn', 'N');
} }
// 검증방식
if (!empty($data['isSiteVRVerification'])) {
$builder->where('a.isSiteVRVerification', $data['isSiteVRVerification']);
}
// 홍보확인서 여부
if (!empty($data['conf_img_yn'])) {
if ($data['conf_img_yn'] == "Y") {
$builder->where('exists (select \'x\' from result_imgs imgs where imgs.rsrv_sq = b.rsrv_sq and imgs.img_type = \'I1\' and imgs.use_yn=\'Y\')', NULL, FALSE);
} else if ($data['conf_img_yn'] == "N") {
$builder->where('not exists (select \'x\' from result_imgs imgs where imgs.rsrv_sq = b.rsrv_sq and imgs.img_type = \'I1\' and imgs.use_yn=\'Y\')', NULL, FALSE);
}
}
// 상태 // 상태
if (!empty($data['stat'])) { if (!empty($data['stat'])) {
$builder->whereIn('substring(a.rcpt_stat, 1, 2)', $data['stat']); $builder->whereIn('substring(a.rcpt_stat, 1, 2)', $data['stat']);
@@ -648,7 +662,7 @@ class DeptModel extends Model
$builder->where('a.rcpt_atclno', $data['rcpt_atclno']); $builder->where('a.rcpt_atclno', $data['rcpt_atclno']);
} else { } else {
$builder->where('a.isSiteVRVerification', 'N'); $builder->where('b.req_rec_yn', 'Y');
// 접수일자 // 접수일자
/* /*
@@ -720,6 +734,20 @@ class DeptModel extends Model
$builder->where('a.direct_trad_yn', 'N'); $builder->where('a.direct_trad_yn', 'N');
} }
// 검증방식
if (!empty($data['isSiteVRVerification'])) {
$builder->where('a.isSiteVRVerification', $data['isSiteVRVerification']);
}
// 홍보확인서 여부
if (!empty($data['conf_img_yn'])) {
if ($data['conf_img_yn'] == "Y") {
$builder->where('exists (select \'x\' from result_imgs imgs where imgs.rsrv_sq = b.rsrv_sq and imgs.img_type = \'I1\' and imgs.use_yn=\'Y\')', NULL, FALSE);
} else if ($data['conf_img_yn'] == "N") {
$builder->where('not exists (select \'x\' from result_imgs imgs where imgs.rsrv_sq = b.rsrv_sq and imgs.img_type = \'I1\' and imgs.use_yn=\'Y\')', NULL, FALSE);
}
}
// 상태 // 상태
if (!empty($data['stat'])) { if (!empty($data['stat'])) {
$builder->whereIn('substring(a.rcpt_stat, 1, 2)', $data['stat']); $builder->whereIn('substring(a.rcpt_stat, 1, 2)', $data['stat']);
@@ -930,7 +958,7 @@ class DeptModel extends Model
$builder->where('a.rcpt_atclno', $data['rcpt_atclno']); $builder->where('a.rcpt_atclno', $data['rcpt_atclno']);
} else { } else {
$builder->where('a.isSiteVRVerification', 'N'); $builder->where('b.req_rec_yn', 'Y');
// 접수일자 // 접수일자
/* /*
@@ -1002,6 +1030,20 @@ class DeptModel extends Model
$builder->where('a.direct_trad_yn', 'N'); $builder->where('a.direct_trad_yn', 'N');
} }
// 검증방식
if (!empty($data['isSiteVRVerification'])) {
$builder->where('a.isSiteVRVerification', $data['isSiteVRVerification']);
}
// 홍보확인서 여부
if (!empty($data['conf_img_yn'])) {
if ($data['conf_img_yn'] == "Y") {
$builder->where('exists (select \'x\' from result_imgs imgs where imgs.rsrv_sq = b.rsrv_sq and imgs.img_type = \'I1\' and imgs.use_yn=\'Y\')', NULL, FALSE);
} else if ($data['conf_img_yn'] == "N") {
$builder->where('not exists (select \'x\' from result_imgs imgs where imgs.rsrv_sq = b.rsrv_sq and imgs.img_type = \'I1\' and imgs.use_yn=\'Y\')', NULL, FALSE);
}
}
// 상태 // 상태
if (!empty($data['stat'])) { if (!empty($data['stat'])) {
$builder->whereIn('substring(a.rcpt_stat, 1, 2)', $data['stat']); $builder->whereIn('substring(a.rcpt_stat, 1, 2)', $data['stat']);

File diff suppressed because it is too large Load Diff

View File

@@ -136,7 +136,9 @@
<h3 class="card-title mb-0">사용자 목록</h3> <h3 class="card-title mb-0">사용자 목록</h3>
<div class="ms-auto d-flex align-items-center gap-3"> <div class="ms-auto d-flex align-items-center gap-3">
<button class="mb-2 me-2 border-0 btn-transition btn btn-shadow btn-outline-success" <button class="mb-2 me-2 border-0 btn-transition btn btn-shadow btn-outline-success"
id="excel-download">엑셀다운로드</button> id="excel-download">
<i class="fa fa-fw" aria-hidden="true" title="file-excel-o"></i>엑셀다운로드
</button>
</div> </div>
</div> </div>
<div class="card-body"> <div class="card-body">
@@ -335,30 +337,7 @@
const row = table.row(this).data() const row = table.row(this).data()
if (!row) return if (!row) return
const modalEl = document.getElementById('userModal'); location.href = '/article/receipt/lists';
const myModal = new bootstrap.Modal(modalEl);
$("#frm_user_info")[0].reset()
$("#frm_user_info [name=usr_sq]").val(row.usr_sq)
$("#frm_user_info [name=type]").val("update")
$("#frm_user_info [name=addUserNm]").val(row.usr_nm)
$("#frm_user_info [name=addUserDept]").val(row.dept_sq)
$("#frm_user_info [name=addUserId]").val(row.usr_id)
$("#frm_user_info [name=addUserId]").prop("readonly", true)
$("#frm_user_info [name=addUserLevel]").val(row.usr_level)
$("#frm_user_info [name=addUserPosition]").val(row.usr_position)
$("#frm_user_info [name=addUserTel1]").val(row.usr_tel1)
$("#frm_user_info [name=addUserTel2]").val(row.usr_tel2)
$("#frm_user_info [name=addSmsYn]").val(row.sms_auth_yn)
$("#frm_user_info [name=addUserAddr1]").val(row.usr_addr1)
$("#frm_user_info [name=addUserAddr2]").val(row.usr_addr2)
$("#frm_user_info [name=addUseYn]").val(row.use_yn)
myModal.show();
}); });
// [검색] 버튼 눌렀을 때 다시 조회 // [검색] 버튼 눌렀을 때 다시 조회

View File

@@ -112,7 +112,9 @@
<h3 class="card-title mb-0">요약 실적</h3> <h3 class="card-title mb-0">요약 실적</h3>
<div class="ms-auto d-flex align-items-center gap-3"> <div class="ms-auto d-flex align-items-center gap-3">
<button class="mb-2 me-2 border-0 btn-transition btn btn-shadow btn-outline-success" <button class="mb-2 me-2 border-0 btn-transition btn btn-shadow btn-outline-success"
id="excel-download">엑셀다운로드</button> id="excel-download">
<i class="fa fa-fw" aria-hidden="true" title="file-excel-o"></i>엑셀다운로드
</button>
</div> </div>
</div> </div>
<div class="card-body"> <div class="card-body">
@@ -148,7 +150,7 @@
// $rowPars = array_merge($pars, array('bonbu' => $row['pdept_sq'], 'dept_sq' => $row['dept_sq'])); // $rowPars = array_merge($pars, array('bonbu' => $row['pdept_sq'], 'dept_sq' => $row['dept_sq']));
// } // }
echo '<tr onmouseover="this.className=\'highlight\'" onmouseout="this.className=\'normal\'" style="cursor:pointer">'; echo '<tr onmouseover="this.className=\'highlight\'" onmouseout="this.className=\'normal\'" style="cursor:pointer" onclick="tr_onclick();">';
echo '<td>' . $nRow . '</td>'; echo '<td>' . $nRow . '</td>';
echo '<td style="text-align:left">' . str_replace(' ', '&nbsp;', $row['dept_nm']) . '</td>'; echo '<td style="text-align:left">' . str_replace(' ', '&nbsp;', $row['dept_nm']) . '</td>';
echo '<td>' . $row['region_cnt'] . '</td>'; echo '<td>' . $row['region_cnt'] . '</td>';
@@ -229,8 +231,8 @@
}); });
function tr_onclick(pars) { function tr_onclick() {
location.href = '/article/receipt/lists' + pars + '&m=M201'; location.href = '/article/receipt/lists';
} }
// 엑셀 다운로드 // 엑셀 다운로드

View File

@@ -83,7 +83,9 @@
<h3 class="card-title mb-0">사용자 목록</h3> <h3 class="card-title mb-0">사용자 목록</h3>
<div class="ms-auto d-flex align-items-center gap-3"> <div class="ms-auto d-flex align-items-center gap-3">
<button class="mb-2 me-2 border-0 btn-transition btn btn-shadow btn-outline-success" <button class="mb-2 me-2 border-0 btn-transition btn btn-shadow btn-outline-success"
id="excel-download">엑셀다운로드</button> id="excel-download">
<i class="fa fa-fw" aria-hidden="true" title="file-excel-o"></i>엑셀다운로드
</button>
</div> </div>
</div> </div>
<div class="card-body"> <div class="card-body">

View File

@@ -83,7 +83,9 @@
<h3 class="card-title mb-0">상담원 목록</h3> <h3 class="card-title mb-0">상담원 목록</h3>
<div class="ms-auto d-flex align-items-center gap-3"> <div class="ms-auto d-flex align-items-center gap-3">
<button class="mb-2 me-2 border-0 btn-transition btn btn-shadow btn-outline-success" <button class="mb-2 me-2 border-0 btn-transition btn btn-shadow btn-outline-success"
id="excel-download">엑셀다운로드</button> id="excel-download">
<i class="fa fa-fw" aria-hidden="true" title="file-excel-o"></i>엑셀다운로드
</button>
</div> </div>
</div> </div>
<div class="card-body"> <div class="card-body">

View File

@@ -77,7 +77,9 @@
<h3 class="card-title mb-0">매체사 목록</h3> <h3 class="card-title mb-0">매체사 목록</h3>
<div class="ms-auto d-flex align-items-center gap-3"> <div class="ms-auto d-flex align-items-center gap-3">
<button class="mb-2 me-2 border-0 btn-transition btn btn-shadow btn-outline-success" <button class="mb-2 me-2 border-0 btn-transition btn btn-shadow btn-outline-success"
id="excel-download">엑셀다운로드</button> id="excel-download">
<i class="fa fa-fw" aria-hidden="true" title="file-excel-o"></i>엑셀다운로드
</button>
</div> </div>
</div> </div>
<div class="card-body"> <div class="card-body">

View File

@@ -206,7 +206,9 @@
<h3 class="card-title mb-0">매체사 목록</h3> <h3 class="card-title mb-0">매체사 목록</h3>
<div class="ms-auto d-flex align-items-center gap-3"> <div class="ms-auto d-flex align-items-center gap-3">
<button class="mb-2 me-2 border-0 btn-transition btn btn-shadow btn-outline-success" <button class="mb-2 me-2 border-0 btn-transition btn btn-shadow btn-outline-success"
id="excel-download">엑셀다운로드</button> id="excel-download">
<i class="fa fa-fw" aria-hidden="true" title="file-excel-o"></i>엑셀다운로드
</button>
</div> </div>
</div> </div>
<div class="card-body"> <div class="card-body">

View File

@@ -77,7 +77,9 @@
<h3 class="card-title mb-0">매체사 목록</h3> <h3 class="card-title mb-0">매체사 목록</h3>
<div class="ms-auto d-flex align-items-center gap-3"> <div class="ms-auto d-flex align-items-center gap-3">
<button class="mb-2 me-2 border-0 btn-transition btn btn-shadow btn-outline-success" <button class="mb-2 me-2 border-0 btn-transition btn btn-shadow btn-outline-success"
id="excel-download">엑셀다운로드</button> id="excel-download">
<i class="fa fa-fw" aria-hidden="true" title="file-excel-o"></i>엑셀다운로드
</button>
</div> </div>
</div> </div>
<div class="card-body"> <div class="card-body">

View File

@@ -96,7 +96,9 @@
<h3 class="card-title mb-0">사용자 목록</h3> <h3 class="card-title mb-0">사용자 목록</h3>
<div class="ms-auto d-flex align-items-center gap-3"> <div class="ms-auto d-flex align-items-center gap-3">
<button class="mb-2 me-2 border-0 btn-transition btn btn-shadow btn-outline-success" <button class="mb-2 me-2 border-0 btn-transition btn btn-shadow btn-outline-success"
id="excel-download">엑셀다운로드</button> id="excel-download">
<i class="fa fa-fw" aria-hidden="true" title="file-excel-o"></i>엑셀다운로드
</button>
</div> </div>
</div> </div>
<div class="card-body"> <div class="card-body">

View File

@@ -72,7 +72,9 @@
<h3 class="card-title mb-0">매체사 목록</h3> <h3 class="card-title mb-0">매체사 목록</h3>
<div class="ms-auto d-flex align-items-center gap-3"> <div class="ms-auto d-flex align-items-center gap-3">
<button class="mb-2 me-2 border-0 btn-transition btn btn-shadow btn-outline-success" <button class="mb-2 me-2 border-0 btn-transition btn btn-shadow btn-outline-success"
id="excel-download">엑셀다운로드</button> id="excel-download">
<i class="fa fa-fw" aria-hidden="true" title="file-excel-o"></i>엑셀다운로드
</button>
</div> </div>
</div> </div>
<div class="card-body"> <div class="card-body">

View File

@@ -136,7 +136,9 @@
<h3 class="card-title mb-0">사용자 목록</h3> <h3 class="card-title mb-0">사용자 목록</h3>
<div class="ms-auto d-flex align-items-center gap-3"> <div class="ms-auto d-flex align-items-center gap-3">
<button class="mb-2 me-2 border-0 btn-transition btn btn-shadow btn-outline-success" <button class="mb-2 me-2 border-0 btn-transition btn btn-shadow btn-outline-success"
id="excel-download">엑셀다운로드</button> id="excel-download">
<i class="fa fa-fw" aria-hidden="true" title="file-excel-o"></i>엑셀다운로드
</button>
</div> </div>
</div> </div>
<div class="card-body"> <div class="card-body">
@@ -322,29 +324,9 @@
const row = table.row(this).data() const row = table.row(this).data()
if (!row) return if (!row) return
const modalEl = document.getElementById('userModal'); // myModal.show();
const myModal = new bootstrap.Modal(modalEl);
$("#frm_user_info")[0].reset() location.href = '/article/receipt/lists';
$("#frm_user_info [name=usr_sq]").val(row.usr_sq)
$("#frm_user_info [name=type]").val("update")
$("#frm_user_info [name=addUserNm]").val(row.usr_nm)
$("#frm_user_info [name=addUserDept]").val(row.dept_sq)
$("#frm_user_info [name=addUserId]").val(row.usr_id)
$("#frm_user_info [name=addUserId]").prop("readonly", true)
$("#frm_user_info [name=addUserLevel]").val(row.usr_level)
$("#frm_user_info [name=addUserPosition]").val(row.usr_position)
$("#frm_user_info [name=addUserTel1]").val(row.usr_tel1)
$("#frm_user_info [name=addUserTel2]").val(row.usr_tel2)
$("#frm_user_info [name=addSmsYn]").val(row.sms_auth_yn)
$("#frm_user_info [name=addUserAddr1]").val(row.usr_addr1)
$("#frm_user_info [name=addUserAddr2]").val(row.usr_addr2)
$("#frm_user_info [name=addUseYn]").val(row.use_yn)
myModal.show();
}); });