견문보고 목록 첨부파일 부분 클릭시 다운로드 기능 추가.
견문보고 결재대기 목록에서 이전 결재 평가 조회도록 수정. 방첩공작 실적(통계) 쿼리 수정. 예산편성 등록모달 테이블 고정부분 추가.master
parent
a37361bdd8
commit
402bd7fa9a
|
|
@ -129,9 +129,11 @@ public class FileController extends BaseService{
|
||||||
@GetMapping("/downloadAffairFiles")
|
@GetMapping("/downloadAffairFiles")
|
||||||
public void downloadAffairFiles(HttpServletRequest request,
|
public void downloadAffairFiles(HttpServletRequest request,
|
||||||
HttpServletResponse response,
|
HttpServletResponse response,
|
||||||
|
@RequestParam(value="fileNm", defaultValue = "견문보고서 첨부파일_") String fileNm,
|
||||||
@RequestParam(value="affairKeyList") List<Integer> affairKeyList){
|
@RequestParam(value="affairKeyList") List<Integer> affairKeyList){
|
||||||
List<FileInfo> fileList = affairService.selectAffairFileList(affairKeyList);
|
List<FileInfo> fileList = affairService.selectAffairFileList(affairKeyList);
|
||||||
makeZipAndOut(request, response, "견문보고서 첨부파일_", fileList);
|
|
||||||
|
makeZipAndOut(request, response, fileNm, fileList);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -146,6 +146,7 @@ public class SecurityConfig{
|
||||||
"/counterIntelligence/**",
|
"/counterIntelligence/**",
|
||||||
"/monitoring/**",
|
"/monitoring/**",
|
||||||
"/intelligenceNetwork/**",
|
"/intelligenceNetwork/**",
|
||||||
|
"/budget/**",
|
||||||
"/deadline/**"
|
"/deadline/**"
|
||||||
).hasRole(Role.USER.name()) // USER 접근 허용
|
).hasRole(Role.USER.name()) // USER 접근 허용
|
||||||
.antMatchers(
|
.antMatchers(
|
||||||
|
|
|
||||||
|
|
@ -72,6 +72,8 @@ public class AffairBoard extends BaseModel {
|
||||||
private String ratingOrgan;
|
private String ratingOrgan;
|
||||||
@Transient
|
@Transient
|
||||||
private String affairRate;
|
private String affairRate;
|
||||||
|
@Transient
|
||||||
|
private String beforeRating;
|
||||||
|
|
||||||
@Transient
|
@Transient
|
||||||
private String reception;
|
private String reception;
|
||||||
|
|
|
||||||
|
|
@ -109,12 +109,13 @@
|
||||||
a.wrt_user_seq,
|
a.wrt_user_seq,
|
||||||
a.wrt_dt,
|
a.wrt_dt,
|
||||||
a.report_dt,
|
a.report_dt,
|
||||||
|
a.doc_no,
|
||||||
b.fileCnt,
|
b.fileCnt,
|
||||||
c.rating_organ,
|
c.rating_organ,
|
||||||
c.affair_status,
|
c.affair_status,
|
||||||
c.affair_rate,
|
c.affair_rate,
|
||||||
c.organ_up,
|
c.organ_up,
|
||||||
a.doc_no
|
d.beforeRating
|
||||||
from affair_board a
|
from affair_board a
|
||||||
left outer join (select affair_key,
|
left outer join (select affair_key,
|
||||||
count(file_seq) as fileCnt
|
count(file_seq) as fileCnt
|
||||||
|
|
@ -123,6 +124,13 @@
|
||||||
on a.affair_key = b.affair_key
|
on a.affair_key = b.affair_key
|
||||||
inner join affair_rating c
|
inner join affair_rating c
|
||||||
on a.affair_key = c.affair_key
|
on a.affair_key = c.affair_key
|
||||||
|
inner join (
|
||||||
|
select affair_key, STRING_AGG(CAST(og.item_value||' : '||ar.item_value AS VARCHAR), ', ') as beforeRating
|
||||||
|
from affair_rating aa
|
||||||
|
inner join code_mgt og on aa.rating_organ = og.item_cd
|
||||||
|
inner join code_mgt ar on aa.affair_rate = ar.item_cd
|
||||||
|
group by affair_key
|
||||||
|
) d on a.affair_key = d.affair_key
|
||||||
<include refid="selectAffairBoardWhere"></include>
|
<include refid="selectAffairBoardWhere"></include>
|
||||||
order by a.affair_key desc
|
order by a.affair_key desc
|
||||||
limit #{rowCnt} offset #{firstIndex}
|
limit #{rowCnt} offset #{firstIndex}
|
||||||
|
|
|
||||||
|
|
@ -117,10 +117,18 @@
|
||||||
|
|
||||||
<select id="selectCiWorkStatisticsList" resultType="ciWorkStatistics" parameterType="ciWorkStatistics">
|
<select id="selectCiWorkStatisticsList" resultType="ciWorkStatistics" parameterType="ciWorkStatistics">
|
||||||
select work_rating,
|
select work_rating,
|
||||||
count(case when work_start_date >= (#{year}||'-01-01')::date and work_start_date <= (#{year}+1||'-01-01')::date then 1 end) as newWorkCnt,
|
sum(case when work_start_date >= (#{year}||'-01-01')::date and work_start_date < (#{year}+1||'-01-01')::date then 1 else 0 end) as newWorkCnt,
|
||||||
count(case when work_end_date is null or (work_end_date >= (#{year}+1||'-01-01')::date and work_end_date < (#{year}+2||'-01-01')::date) then 1 end) as doingWorkCnt,
|
sum(case
|
||||||
count(case when work_start_date > (#{year}-1||'-01-01')::date and work_start_date <= (#{year}||'-01-01')::date and work_end_date >= (#{year}||'-01-01')::date and work_end_date < (#{year}+1||'-01-01')::date then 1 end) as prevYearWorkEndCnt,
|
when work_start_date >= (#{year}||'-01-01')::date and work_start_date < (#{year}+1||'-01-01')::date and work_end_date is null then 1
|
||||||
count(case when work_start_date >= (#{year}||'-01-01')::date and work_start_date <= (#{year}+1||'-01-01')::date and work_end_date >= (#{year}||'-01-01')::date and work_end_date < (#{year}+1||'-01-01')::date then 1 end) as thisYearWorkEndCnt
|
when work_start_date >= (#{year}-1||'-01-01')::date and work_start_date < (#{year}||'-01-01')::date and work_end_date is null then 1
|
||||||
|
when work_start_date >= (#{year}||'-01-01')::date and work_start_date < (#{year}+1||'-01-01')::date and work_end_date > (#{year}||'-01-01')::date and work_end_date < (#{year}+1||'-01-01')::date and work_end_date > now() then 1
|
||||||
|
when work_start_date >= (#{year}-1||'-01-01')::date and work_start_date < (#{year}||'-01-01')::date and work_end_date > (#{year}||'-01-01')::date and work_end_date < (#{year}+1||'-01-01')::date and work_end_date > now() then 1
|
||||||
|
when work_start_date >= (#{year}||'-01-01')::date and work_start_date < (#{year}+1||'-01-01')::date and work_end_date > (#{year}+1||'-01-01')::date and work_end_date < (#{year}+2||'-01-01')::date then 1
|
||||||
|
when work_start_date >= (#{year}-1||'-01-01')::date and work_start_date < (#{year}||'-01-01')::date and work_end_date > (#{year}+1||'-01-01')::date and work_end_date < (#{year}+2||'-01-01')::date then 1
|
||||||
|
else 0
|
||||||
|
end) as doingWorkCnt,
|
||||||
|
sum(case when work_start_date >= (#{year}||'-01-01')::date and work_start_date < (#{year}+1||'-01-01')::date and work_end_date >= (#{year}||'-01-01')::date and work_end_date < (#{year}+1||'-01-01')::date then 1 else 0 end) as thisYearWorkEndCnt,
|
||||||
|
sum(case when work_start_date >= (#{year}-1||'-01-01')::date and work_start_date < (#{year}||'-01-01')::date and work_end_date >= (#{year}||'-01-01')::date and work_end_date < (#{year}+1||'-01-01')::date then 1 else 0 end) as prevYearWorkEndCnt
|
||||||
from counter_intelligence_work a
|
from counter_intelligence_work a
|
||||||
WHERE a.status = 'DST007'
|
WHERE a.status = 'DST007'
|
||||||
<if test='ogCd != null and ogCd != ""'>
|
<if test='ogCd != null and ogCd != ""'>
|
||||||
|
|
@ -137,7 +145,7 @@
|
||||||
</select>
|
</select>
|
||||||
<select id="selectCiWorkYearList" resultType="int">
|
<select id="selectCiWorkYearList" resultType="int">
|
||||||
select year
|
select year
|
||||||
from ( select EXTRACT(YEAR FROM work_start_date) AS year
|
from ( select EXTRACT(YEAR FROM work_end_date) AS year
|
||||||
from counter_intelligence_work
|
from counter_intelligence_work
|
||||||
where status <> 'DST008'
|
where status <> 'DST008'
|
||||||
union
|
union
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,31 @@
|
||||||
|
|
||||||
|
#tableDiv{
|
||||||
|
height: 600px;
|
||||||
|
overflow-y: auto;
|
||||||
|
}
|
||||||
|
.budgetNameTh{
|
||||||
|
z-index:3!important;
|
||||||
|
}
|
||||||
|
#data-table-default thead{
|
||||||
|
position: sticky;
|
||||||
|
top: 0;
|
||||||
|
z-index: 2;
|
||||||
|
}
|
||||||
|
#data-table-default th:nth-child(1),
|
||||||
|
#data-table-default td:nth-child(1){
|
||||||
|
position: sticky;
|
||||||
|
left: -7px;
|
||||||
|
z-index:1;
|
||||||
|
}
|
||||||
|
#data-table-default th:nth-child(2),
|
||||||
|
#data-table-default td:nth-child(2){
|
||||||
|
position: sticky;
|
||||||
|
left: 98px;
|
||||||
|
z-index:1;
|
||||||
|
}
|
||||||
|
#data-table-default th:nth-child(3),
|
||||||
|
#data-table-default td:nth-child(3){
|
||||||
|
position: sticky;
|
||||||
|
left: 216px;
|
||||||
|
z-index:1;
|
||||||
|
}
|
||||||
|
|
@ -29,8 +29,14 @@ $(document).on('click', '.affairTr', function (event){
|
||||||
$(".trChkBox").prop("checked", false);
|
$(".trChkBox").prop("checked", false);
|
||||||
chkBox[0].checked = true;
|
chkBox[0].checked = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(target.className === "fileTd"
|
||||||
|
|| $(target).parents(".fileTd").length>0){
|
||||||
|
$("#fileDownBtn").click();
|
||||||
|
}else{
|
||||||
getAffairViewModal(Number($(this).find(".affairKey").val()));
|
getAffairViewModal(Number($(this).find(".affairKey").val()));
|
||||||
}
|
}
|
||||||
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
$(document).on('click', '#addAffairBtn', function (){
|
$(document).on('click', '#addAffairBtn', function (){
|
||||||
|
|
@ -219,14 +225,24 @@ $(document).on('click', '#fileDownBtn', function (){
|
||||||
alert("대상이 없습니다.");
|
alert("대상이 없습니다.");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
if(selectedList.length===1){
|
||||||
|
downloadAffairFiles("/file/downloadAffairFiles?fileNm=" +
|
||||||
|
$(selectedList).parents("tr").find(".reportDt")[0].innerText + "_" +
|
||||||
|
$(selectedList).parents("tr").find(".reportTitle")[0].innerText +
|
||||||
|
"_&affairKeyList=", selectedList)
|
||||||
|
}else{
|
||||||
if(confirm("선택된 견문의 파일을 다운로드 하시겠습니까?")){
|
if(confirm("선택된 견문의 파일을 다운로드 하시겠습니까?")){
|
||||||
let url = "/file/downloadAffairFiles?affairKeyList="
|
downloadAffairFiles("/file/downloadAffairFiles?affairKeyList=", selectedList)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
function downloadAffairFiles(url, selectedList){
|
||||||
$.each(selectedList, function(idx, chkBox){
|
$.each(selectedList, function(idx, chkBox){
|
||||||
url += $(chkBox).parents("tr").find(".affairKey").val()+",";
|
url += $(chkBox).parents("tr").find(".affairKey").val()+",";
|
||||||
})
|
})
|
||||||
window.open(encodeURI(url));
|
window.open(encodeURI(url));
|
||||||
}
|
}
|
||||||
})
|
|
||||||
|
|
||||||
$(document).on('click', '#deleteBtn', function (){
|
$(document).on('click', '#deleteBtn', function (){
|
||||||
if(confirm("삭제하시겠습니까?\n되돌릴 수 없습니다.")){
|
if(confirm("삭제하시겠습니까?\n되돌릴 수 없습니다.")){
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,9 @@
|
||||||
<th:block layout:fragment="script">
|
<th:block layout:fragment="script">
|
||||||
<script type="text/javascript" th:src="@{/js/budget/assign.js}"></script>
|
<script type="text/javascript" th:src="@{/js/budget/assign.js}"></script>
|
||||||
</th:block>
|
</th:block>
|
||||||
|
<th:block layout:fragment="css">
|
||||||
|
<link rel="stylesheet" th:href="@{/css/budget/assign.css}">
|
||||||
|
</th:block>
|
||||||
<div layout:fragment="content">
|
<div layout:fragment="content">
|
||||||
<main>
|
<main>
|
||||||
<input type="hidden" id="menuKey" value="55">
|
<input type="hidden" id="menuKey" value="55">
|
||||||
|
|
|
||||||
|
|
@ -1,13 +1,5 @@
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="ko" xmlns:th="http://www.thymeleaf.org"
|
<html lang="ko" xmlns:th="http://www.thymeleaf.org">
|
||||||
xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity5">
|
|
||||||
<style>
|
|
||||||
.scroll {
|
|
||||||
overflow-x: hidden;
|
|
||||||
overflow-y: auto;
|
|
||||||
height: 170px;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
<div class="modal-header">
|
<div class="modal-header">
|
||||||
<h4 class="modal-title" th:text="${info eq null?'예산항목 추가':'예산항목 수정'}"></h4>
|
<h4 class="modal-title" th:text="${info eq null?'예산항목 추가':'예산항목 수정'}"></h4>
|
||||||
<button type="button" class="btn btn-danger" data-bs-dismiss="modal" aria-hidden="true">x</button>
|
<button type="button" class="btn btn-danger" data-bs-dismiss="modal" aria-hidden="true">x</button>
|
||||||
|
|
@ -23,8 +15,6 @@
|
||||||
<input type="hidden" id="assignCount" name="assignCount" th:value="${#lists.size(list)}"/>
|
<input type="hidden" id="assignCount" name="assignCount" th:value="${#lists.size(list)}"/>
|
||||||
<input type="hidden" id="orgCount" name="orgCount" th:value="${#lists.size(downOrgList)}"/>
|
<input type="hidden" id="orgCount" name="orgCount" th:value="${#lists.size(downOrgList)}"/>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="row col-10 ">
|
|
||||||
|
|
||||||
<div class="col-auto">
|
<div class="col-auto">
|
||||||
<div class="input-group input-daterange" id="dateSelectorDiv">
|
<div class="input-group input-daterange" id="dateSelectorDiv">
|
||||||
<input type="text" class="form-control form-control-sm w-35 dateSelector" id="dt" name="dt"
|
<input type="text" class="form-control form-control-sm w-35 dateSelector" id="dt" name="dt"
|
||||||
|
|
@ -32,13 +22,14 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="row">
|
||||||
<table id="data-table-default" class="table table-striped table-bordered align-middle" style="width:2500px">
|
<div class="col-12 overflow-auto" id="tableDiv">
|
||||||
|
<table id="data-table-default" class="table table-striped table-bordered text-nowrap align-middle">
|
||||||
<thead>
|
<thead>
|
||||||
<tr class="table-secondary text-center">
|
<tr class="table-secondary text-center">
|
||||||
<th rowspan="2">사업명</th>
|
<th class="budgetNameTh" rowspan="2">사업명</th>
|
||||||
<th rowspan="2">구분</th>
|
<th class="budgetNameTh" rowspan="2">구분</th>
|
||||||
<th rowspan="2">세부내역</th>
|
<th class="budgetNameTh" rowspan="2">세부내역</th>
|
||||||
<th rowspan="2">예산총액</th>
|
<th rowspan="2">예산총액</th>
|
||||||
<th rowspan="2">예산총배정액<br/>(누적)</th>
|
<th rowspan="2">예산총배정액<br/>(누적)</th>
|
||||||
<th:block th:each="orglist, i : ${downOrgList}">
|
<th:block th:each="orglist, i : ${downOrgList}">
|
||||||
|
|
@ -47,17 +38,17 @@
|
||||||
</tr>
|
</tr>
|
||||||
<tr class="table-secondary text-center">
|
<tr class="table-secondary text-center">
|
||||||
<th:block th:each="orglist : ${downOrgList}">
|
<th:block th:each="orglist : ${downOrgList}">
|
||||||
<th>기간배정액</th>
|
<th> 기간배정액 </th>
|
||||||
<th>금회배정액</th>
|
<th> 금회배정액 </th>
|
||||||
<th>누적액</th>
|
<th> 누적액 </th>
|
||||||
</th:block>
|
</th:block>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
<tr class="odd gradeX reporterTr grid" th:each="info, i : ${list}">
|
<tr class="odd gradeX reporterTr grid" th:each="info, i : ${list}">
|
||||||
<td th:text="${info.getbudget_name_l1}"></td>
|
<td class="table-secondary" th:text="${info.getbudget_name_l1}"></td>
|
||||||
<td th:text="${info.getbudget_name_l2}"></td>
|
<td class="table-secondary" th:text="${info.getbudget_name_l2}"></td>
|
||||||
<td th:text="${info.getbudget_name_l3}"></td>
|
<td class="table-secondary" th:text="${info.getbudget_name_l3}"></td>
|
||||||
<td th:text="${#numbers.formatInteger(info.getplan_amount,1,'COMMA')}" class="text-end"></td>
|
<td th:text="${#numbers.formatInteger(info.getplan_amount,1,'COMMA')}" class="text-end"></td>
|
||||||
<td th:text="${#numbers.formatInteger(info.gettotal_assign_amount,1,'COMMA')}" class="text-end"></td>
|
<td th:text="${#numbers.formatInteger(info.gettotal_assign_amount,1,'COMMA')}" class="text-end"></td>
|
||||||
<th:block th:each="orglist, j : ${downOrgList}">
|
<th:block th:each="orglist, j : ${downOrgList}">
|
||||||
|
|
@ -135,25 +126,20 @@
|
||||||
<td>
|
<td>
|
||||||
<input type="text" th:id="'org7_amount'+${i.index}" name="year" value="" class="w-100 text-end"
|
<input type="text" th:id="'org7_amount'+${i.index}" name="year" value="" class="w-100 text-end"
|
||||||
th:data-code="${info?.getbudget_code_l3}"
|
th:data-code="${info?.getbudget_code_l3}"
|
||||||
oninput="this.value = this.value.replace(/[^0-9.]/g, '').replace(/(\..*)\./g, '$1');"
|
oninput="this.value = this.value.replace(/[^0-9.]/g, '').replace(/(\..*)\./g, '$1');"/>
|
||||||
/></td>
|
|
||||||
</td>
|
</td>
|
||||||
<td th:text="${#numbers.formatInteger(info.getsum_assign_amount8,1,'COMMA')}" class="text-end"></td>
|
<td th:text="${#numbers.formatInteger(info.getsum_assign_amount8,1,'COMMA')}" class="text-end"></td>
|
||||||
</th:block>
|
</th:block>
|
||||||
</th:block>
|
</th:block>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
<!-- </table>-->
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-footer">
|
<div class="modal-footer">
|
||||||
<!-- <a href="javascript:;" class="btn btn-yellow" id="tempBtn">임시저장</a> -->
|
<a href="javascript:;" class="btn btn-primary" id="assignSaveBtn">저장</a>
|
||||||
<a href="javascript:;" class="btn btn-blue" id="assignSaveBtn">저장</a>
|
<a href="javascript:;" class="btn btn-primary" id="modifyBtn" th:if="${cmd eq 'update'}">수정</a>
|
||||||
<a href="javascript:;" class="btn btn-blue" id="modifyBtn" th:if="${cmd eq 'update'}">수정</a>
|
|
||||||
</div>
|
</div>
|
||||||
<!--<div class="modal-footer">
|
|
||||||
<a class="btn btn-yellow">임시저장</a>
|
|
||||||
<a class="btn btn-success">결재</a>
|
|
||||||
<a class="btn btn-blue">작성</a>
|
|
||||||
</div>-->
|
|
||||||
</html>
|
</html>
|
||||||
|
|
@ -108,17 +108,14 @@
|
||||||
<th>착수일<br>/종결일</th>
|
<th>착수일<br>/종결일</th>
|
||||||
<th>재평가일</th>
|
<th>재평가일</th>
|
||||||
<th>첨부파일</th>
|
<th>첨부파일</th>
|
||||||
|
|
||||||
<th>작성자</th>
|
<th>작성자</th>
|
||||||
<th>작성일시</th>
|
<th>작성일시</th>
|
||||||
|
|
||||||
|
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody class="table-group-divider">
|
<tbody class="table-group-divider">
|
||||||
<tr class="ciWorkTr" th:each="ciWork,cnt:${ciWorkList}">
|
<tr class="ciWorkTr" th:each="ciWork,cnt:${ciWorkList}">
|
||||||
<input type="hidden" class="ciwKey" th:value="${ciWork.ciwKey}">
|
<input type="hidden" class="ciwKey" th:value="${ciWork.ciwKey}">
|
||||||
<td th:text="${cnt.count}"></td>
|
<td th:text="${searchParams.contentCnt-(searchParams.rowCnt*(searchParams.pageIndex-1))-cnt.count+1}"></td>
|
||||||
<th:block th:each="commonCode:${session.commonCode.get('OG')}">
|
<th:block th:each="commonCode:${session.commonCode.get('OG')}">
|
||||||
<td th:if="${ciWork.wrtOrgan eq commonCode.itemCd}" th:text="${commonCode.itemValue}"></td>
|
<td th:if="${ciWork.wrtOrgan eq commonCode.itemCd}" th:text="${commonCode.itemValue}"></td>
|
||||||
</th:block>
|
</th:block>
|
||||||
|
|
|
||||||
|
|
@ -54,12 +54,8 @@
|
||||||
</th>
|
</th>
|
||||||
</tr>
|
</tr>
|
||||||
<tr class="table-secondary">
|
<tr class="table-secondary">
|
||||||
<th>
|
<th th:text="|${searchParams.year}년 개척 건 中|"></th>
|
||||||
<th:block th:text="|${searchParams.year-1}년 개척 건 中|"></th:block>
|
<th th:text="|${searchParams.year-1}년 개척 건 中|"></th>
|
||||||
</th>
|
|
||||||
<th>
|
|
||||||
<th:block th:text="|${searchParams.year}년 개척 건 中|"></th:block>
|
|
||||||
</th>
|
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody class="table-group-divider">
|
<tbody class="table-group-divider">
|
||||||
|
|
@ -74,8 +70,8 @@
|
||||||
</td>
|
</td>
|
||||||
<td th:text="${statistics.newWorkCnt}"></td>
|
<td th:text="${statistics.newWorkCnt}"></td>
|
||||||
<td th:text="${statistics.doingWorkCnt}"></td>
|
<td th:text="${statistics.doingWorkCnt}"></td>
|
||||||
<td th:text="${statistics.prevYearWorkEndCnt}"></td>
|
|
||||||
<td th:text="${statistics.thisYearWorkEndCnt}"></td>
|
<td th:text="${statistics.thisYearWorkEndCnt}"></td>
|
||||||
|
<td th:text="${statistics.prevYearWorkEndCnt}"></td>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
|
|
|
||||||
|
|
@ -142,10 +142,7 @@
|
||||||
<tr class="table-secondary">
|
<tr class="table-secondary">
|
||||||
<th><input type="checkbox" class="allChk"></th>
|
<th><input type="checkbox" class="allChk"></th>
|
||||||
<th>문서번호</th>
|
<th>문서번호</th>
|
||||||
<th>분야1</th>
|
<th>분야</th>
|
||||||
<th>분야2</th>
|
|
||||||
<th>분야3</th>
|
|
||||||
<th>분야4</th>
|
|
||||||
<th>제목</th>
|
<th>제목</th>
|
||||||
<th>관서</th>
|
<th>관서</th>
|
||||||
<th>부서</th>
|
<th>부서</th>
|
||||||
|
|
@ -153,8 +150,14 @@
|
||||||
<th>보고일자</th>
|
<th>보고일자</th>
|
||||||
<th>첨부파일</th>
|
<th>첨부파일</th>
|
||||||
<th>상태</th>
|
<th>상태</th>
|
||||||
|
<th:block th:if="page eq 'stayReport'">
|
||||||
|
<th>이전평가</th>
|
||||||
|
<th>평가</th>
|
||||||
|
</th:block>
|
||||||
|
<th:block th:unless="page eq 'stayReport'">
|
||||||
<th>평가</th>
|
<th>평가</th>
|
||||||
<th>상보</th>
|
<th>상보</th>
|
||||||
|
</th:block>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody class="table-group-divider">
|
<tbody class="table-group-divider">
|
||||||
|
|
@ -164,25 +167,19 @@
|
||||||
<td th:text="${affair.docNo}"></td>
|
<td th:text="${affair.docNo}"></td>
|
||||||
<td>
|
<td>
|
||||||
<th:block th:each="code:${session.commonCode.get('DC01')}">
|
<th:block th:each="code:${session.commonCode.get('DC01')}">
|
||||||
<th:block th:if="${affair.affairType1 eq code.itemCd}" th:text="${code.itemValue}"></th:block>
|
<th:block th:if="${affair.affairType1 eq code.itemCd}" th:text="${#strings.concat(code.itemValue, ' > ')}"></th:block>
|
||||||
</th:block>
|
</th:block>
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
<th:block th:each="code:${session.commonCode.get('DC02')}">
|
<th:block th:each="code:${session.commonCode.get('DC02')}">
|
||||||
<th:block th:if="${affair.affairType2 eq code.itemCd}" th:text="${code.itemValue}"></th:block>
|
<th:block th:if="${affair.affairType2 eq code.itemCd}" th:text="${#strings.concat(code.itemValue, ' > ')}"></th:block>
|
||||||
</th:block>
|
</th:block>
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
<th:block th:each="code:${session.commonCode.get('DC03')}">
|
<th:block th:each="code:${session.commonCode.get('DC03')}">
|
||||||
<th:block th:if="${affair.affairType3 eq code.itemCd}" th:text="${code.itemValue}"></th:block>
|
<th:block th:if="${affair.affairType3 eq code.itemCd}" th:text="${#strings.concat(code.itemValue, ' > ')}"></th:block>
|
||||||
</th:block>
|
</th:block>
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
<th:block th:each="code:${session.commonCode.get('DC04')}">
|
<th:block th:each="code:${session.commonCode.get('DC04')}">
|
||||||
<th:block th:if="${affair.affairType4 eq code.itemCd}" th:text="${code.itemValue}"></th:block>
|
<th:block th:if="${affair.affairType4 eq code.itemCd}" th:text="${code.itemValue}"></th:block>
|
||||||
</th:block>
|
</th:block>
|
||||||
</td>
|
</td>
|
||||||
<td th:text="${affair.title}"></td>
|
<td class="reportTitle" th:text="${affair.title}"></td>
|
||||||
<td>
|
<td>
|
||||||
<th:block th:each="code:${session.commonCode.get('OG')}">
|
<th:block th:each="code:${session.commonCode.get('OG')}">
|
||||||
<th:block th:if="${affair.wrtOrgan eq code.itemCd}" th:text="${code.itemValue}"></th:block>
|
<th:block th:if="${affair.wrtOrgan eq code.itemCd}" th:text="${code.itemValue}"></th:block>
|
||||||
|
|
@ -194,8 +191,10 @@
|
||||||
</th:block>
|
</th:block>
|
||||||
</td>
|
</td>
|
||||||
<td th:text="${affair.wrtUserNm}"></td>
|
<td th:text="${affair.wrtUserNm}"></td>
|
||||||
<td th:text="${#temporals.format(affair.reportDt, 'yyyy-MM-dd')}"></td>
|
<td class="reportDt" th:text="${#temporals.format(affair.reportDt, 'yyyy-MM-dd')}"></td>
|
||||||
<td th:text="${affair.fileCnt eq null?'파일 없음':#strings.concat(affair.fileCnt,' 건')}"></td>
|
<th:block th:with="fileYn=${affair.fileCnt eq null}">
|
||||||
|
<td th:class="${fileYn?'':'fileTd'}" th:text="${fileYn?'파일 없음':#strings.concat(affair.fileCnt,' 건')}"></td>
|
||||||
|
</th:block>
|
||||||
<td>
|
<td>
|
||||||
<th:block th:each="code:${session.commonCode.get('DST')}">
|
<th:block th:each="code:${session.commonCode.get('DST')}">
|
||||||
<th:block th:if="${affair.affairStatus eq code.itemCd}" th:text="${code.itemValue}"></th:block>
|
<th:block th:if="${affair.affairStatus eq code.itemCd}" th:text="${code.itemValue}"></th:block>
|
||||||
|
|
@ -210,12 +209,13 @@
|
||||||
<td th:text="${affair.organUp eq 'T'?'O':(affair.wrtOrgan ne affair.ratingOrgan?'O':'X')}"></td>
|
<td th:text="${affair.organUp eq 'T'?'O':(affair.wrtOrgan ne affair.ratingOrgan?'O':'X')}"></td>
|
||||||
</th:block>
|
</th:block>
|
||||||
<th:block th:if="${page eq 'stayReport'}">
|
<th:block th:if="${page eq 'stayReport'}">
|
||||||
|
<td th:text="${affair.beforeRating}"></td>
|
||||||
<th:block th:if="${apprvAuth ne null and affair.affairStatus eq 'DST002'
|
<th:block th:if="${apprvAuth ne null and affair.affairStatus eq 'DST002'
|
||||||
and (#strings.contains(apprvAuth, 'APC004') or #strings.contains(apprvAuth, 'APC003'))}">
|
and (#strings.contains(apprvAuth, 'APC004') or #strings.contains(apprvAuth, 'APC003'))}">
|
||||||
<!--결재권한 있고 결재대기상태이면서 결재권한이 계장, 계장대행을 가지고있는 경우-->
|
<!--결재대기상태이면서 결재권한이 계장, 계장대행을 가지고있는 경우-->
|
||||||
<th:block th:if="${#strings.contains(apprvAuth, 'APC002') or #strings.contains(apprvAuth, 'APC001')}">
|
<th:block th:if="${#strings.contains(apprvAuth, 'APC002') or #strings.contains(apprvAuth, 'APC001')}">
|
||||||
<!--과장, 과장대행 결재권한을 가지고 있는 경우-->
|
<!--과장, 과장대행 결재권한을 가지고 있는 경우-->
|
||||||
<td colspan="2" class="apprvTd">
|
<td class="apprvTd">
|
||||||
<input type="hidden" class="affairKey" th:value="${affair.affairKey}">
|
<input type="hidden" class="affairKey" th:value="${affair.affairKey}">
|
||||||
<div class="row justify-content-center">
|
<div class="row justify-content-center">
|
||||||
<div class="col-auto">
|
<div class="col-auto">
|
||||||
|
|
@ -243,7 +243,7 @@
|
||||||
</th:block>
|
</th:block>
|
||||||
<th:block th:unless="${#strings.contains(apprvAuth, 'APC002') or #strings.contains(apprvAuth, 'APC001')}">
|
<th:block th:unless="${#strings.contains(apprvAuth, 'APC002') or #strings.contains(apprvAuth, 'APC001')}">
|
||||||
<!--과장, 과장대행 결재권한을 가지고 있지 않은 경우-->
|
<!--과장, 과장대행 결재권한을 가지고 있지 않은 경우-->
|
||||||
<td colspan="2" class="apprvTd">
|
<td class="apprvTd">
|
||||||
<input type="hidden" class="affairKey" th:value="${affair.affairKey}">
|
<input type="hidden" class="affairKey" th:value="${affair.affairKey}">
|
||||||
<input type="radio" class="apprvChkbox" th:id="|apprvChkbox${affair.affairKey}DST004|" th:name="|apprvChkbox${affair.affairKey}|" value="DST004">
|
<input type="radio" class="apprvChkbox" th:id="|apprvChkbox${affair.affairKey}DST004|" th:name="|apprvChkbox${affair.affairKey}|" value="DST004">
|
||||||
<label th:for="|apprvChkbox${affair.affairKey}DST004|">결재</label>
|
<label th:for="|apprvChkbox${affair.affairKey}DST004|">결재</label>
|
||||||
|
|
@ -257,7 +257,7 @@
|
||||||
<th:block th:if="${apprvAuth ne null and affair.affairStatus eq 'DST004'
|
<th:block th:if="${apprvAuth ne null and affair.affairStatus eq 'DST004'
|
||||||
and (#strings.contains(apprvAuth, 'APC002') or #strings.contains(apprvAuth, 'APC001'))}">
|
and (#strings.contains(apprvAuth, 'APC002') or #strings.contains(apprvAuth, 'APC001'))}">
|
||||||
<!--결재권한 있고 계장결재완료 상태이면서 결재권한이 과장, 과장대행을 가지고있는 경우-->
|
<!--결재권한 있고 계장결재완료 상태이면서 결재권한이 과장, 과장대행을 가지고있는 경우-->
|
||||||
<td colspan="2" class="apprvTd">
|
<td class="apprvTd">
|
||||||
<input type="hidden" class="affairKey" th:value="${affair.affairKey}">
|
<input type="hidden" class="affairKey" th:value="${affair.affairKey}">
|
||||||
<div class="row justify-content-center">
|
<div class="row justify-content-center">
|
||||||
<div class="col-auto">
|
<div class="col-auto">
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue