홈페이지 게시판 순서변경
This commit is contained in:
@@ -38,6 +38,7 @@
|
||||
,HC.CATEGORY_NO
|
||||
,HCB.THUMBNAIL_BOTTOM_TXT
|
||||
,HCB.HASHTAG
|
||||
,HCB.ORD_NO
|
||||
,DATE_FORMAT(HCB.REG_DATE, '%Y-%m-%d') as REG_DT
|
||||
,MM.NAME as REG_NM
|
||||
,DATE_FORMAT(HCB.EVENT_START_DT, '%Y-%m-%d') as START_DT
|
||||
@@ -65,7 +66,7 @@
|
||||
ORDER BY ${webTreatmentPetitSort}
|
||||
</when>
|
||||
<otherwise>
|
||||
ORDER BY CATEGORY_NO, POST_NO ASC
|
||||
ORDER BY HCB.ORD_NO DESC
|
||||
</otherwise>
|
||||
</choose>
|
||||
LIMIT 18446744073709551615
|
||||
@@ -315,4 +316,16 @@
|
||||
AND HC.CATEGORY_DIV_CD = #{categoryDivCd}
|
||||
ORDER BY HC.CATEGORY_NO ASC
|
||||
</select>
|
||||
|
||||
<update id="updateContentsBbsOrdNo" parameterType="hashmap">
|
||||
/** ContentsBbsSql.updateContentsBbsOrdNo **/
|
||||
UPDATE HP_CONTENTS_BBS
|
||||
SET ORD_NO = #{ordNo}
|
||||
,MOD_ID = #{modId}
|
||||
,MOD_DATE = NOW()
|
||||
WHERE USE_YN = 'Y'
|
||||
AND CATEGORY_DIV_CD = #{categoryDivCd}
|
||||
AND CATEGORY_NO = #{categoryNo}
|
||||
AND POST_NO = #{postNo}
|
||||
</update>
|
||||
</mapper>
|
||||
@@ -391,6 +391,58 @@ function fn_deleteWebTreatmentPetit() {
|
||||
});
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* 출력순서 저장
|
||||
****************************************************************************/
|
||||
function fn_saveOrdNo() {
|
||||
if ("Y" != updateUseYn) {
|
||||
modalEvent.warning("", "수정 권한이 없습니다.");
|
||||
return false;
|
||||
}
|
||||
|
||||
let orderList = [];
|
||||
let totalRows = webTreatmentPetitGridOptions.api.getDisplayedRowCount();
|
||||
|
||||
for (let i = 0; i < totalRows; i++) {
|
||||
let rowNode = webTreatmentPetitGridOptions.api.getDisplayedRowAtIndex(i);
|
||||
orderList.push({
|
||||
categoryNo: rowNode.data.categoryNo,
|
||||
postNo: rowNode.data.postNo,
|
||||
ordNo: totalRows - i // 상단이 큰 값 (DESC 정렬)
|
||||
});
|
||||
}
|
||||
|
||||
modalEvent.info("순서저장", "변경된 출력순서를 저장하시겠습니까?", function () {
|
||||
let data = {
|
||||
menuClass: menuClass,
|
||||
categoryDivCd: categoryDivCd,
|
||||
orderList: orderList
|
||||
};
|
||||
|
||||
$.ajax({
|
||||
url: encodeURI('/contentsBbs/updateOrdNo.do'),
|
||||
data: JSON.stringify(data),
|
||||
dataType: "json",
|
||||
contentType: 'application/json; charset=utf-8',
|
||||
type: 'POST',
|
||||
async: true,
|
||||
success: function (data) {
|
||||
if ('0' == data.msgCode) {
|
||||
modalEvent.success("순서저장 성공", data.msgDesc, function () {
|
||||
$("#btnSaveOrdNo").prop("disabled", true).css("opacity", "0.5");
|
||||
fn_selectListWebTreatmentPetitJson();
|
||||
});
|
||||
} else {
|
||||
modalEvent.danger("순서저장 오류", data.msgDesc);
|
||||
}
|
||||
},
|
||||
error: function (xhr, status, error) {
|
||||
modalEvent.danger("순서저장 오류", "순서 저장 중 오류가 발생하였습니다. 잠시후 다시시도하십시오.");
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* 검색 엔터 이벤트
|
||||
****************************************************************************/
|
||||
@@ -504,7 +556,7 @@ function fn_updateWebTreatmentPetitIntro(postNo, categoryNo) {
|
||||
|
||||
|
||||
let webTreatmentPetitColumnDefs = [
|
||||
{ field: "checkbox", headerName: "", minWidth: 55, maxWidth: 55, headerCheckboxSelection: true, checkboxSelection: true },
|
||||
{ field: "checkbox", headerName: "", minWidth: 55, maxWidth: 55, rowDrag: true, headerCheckboxSelection: true, checkboxSelection: true },
|
||||
{ field: "rowNum", headerName: "번호", minWidth: 60, maxWidth: 60, sortable: false, cellStyle: { textAlign: 'center' } },
|
||||
{ field: "categoryNm", headerName: "카테고리", minWidth: 120, maxWidth: 130, cellStyle: { textAlign: 'center' } },
|
||||
{ field: "title", headerName: "제목", minWidth: 150, cellStyle: { cursor: 'pointer', color: '#3985EA' } },
|
||||
@@ -517,7 +569,7 @@ let webTreatmentPetitColumnDefs = [
|
||||
console.log('Current categoryDivCd:', categoryDivCd);
|
||||
if (categoryDivCd === '02' || categoryDivCd === '04') {
|
||||
webTreatmentPetitColumnDefs = [
|
||||
{ field: "checkbox", headerName: "", minWidth: 55, maxWidth: 55, headerCheckboxSelection: true, checkboxSelection: true },
|
||||
{ field: "checkbox", headerName: "", minWidth: 55, maxWidth: 55, rowDrag: true, headerCheckboxSelection: true, checkboxSelection: true },
|
||||
{ field: "rowNum", headerName: "번호", minWidth: 60, maxWidth: 60, sortable: false, cellStyle: { textAlign: 'center' } },
|
||||
{ field: "categoryNm", headerName: "카테고리", minWidth: 120, maxWidth: 130, cellStyle: { textAlign: 'center' } },
|
||||
{ field: "title", headerName: "제목", minWidth: 150, cellStyle: { cursor: 'pointer', color: '#3985EA' } },
|
||||
@@ -533,6 +585,8 @@ if (categoryDivCd === '02' || categoryDivCd === '04') {
|
||||
// let the grid know which columns and what data to use
|
||||
let webTreatmentPetitGridOptions = {
|
||||
suppressRowTransform: true,
|
||||
rowDragManaged: true,
|
||||
animateRows: true,
|
||||
columnDefs: webTreatmentPetitColumnDefs,
|
||||
defaultColDef: { // 리스트 기본 설정
|
||||
flex: 1,
|
||||
@@ -562,6 +616,10 @@ let webTreatmentPetitGridOptions = {
|
||||
fn_updateWebTreatmentPetitIntro(cell.data.postNo, cell.data.categoryNo);
|
||||
}
|
||||
},
|
||||
onRowDragEnd: function (event) {
|
||||
// 드래그 완료 시 순서저장 버튼 활성화
|
||||
$("#btnSaveOrdNo").prop("disabled", false).css("opacity", "1");
|
||||
},
|
||||
onSelectionChanged: function (treatmentpetit) { //체크박스 선택
|
||||
delList = treatmentpetit.api.getSelectedRows();
|
||||
console.log(delList);
|
||||
@@ -679,6 +737,11 @@ function fn_pageTreatmentPetit() {
|
||||
fn_deleteWebTreatmentPetit();
|
||||
});
|
||||
|
||||
// 순서저장 버튼
|
||||
$("#btnSaveOrdNo").click(function () {
|
||||
fn_saveOrdNo();
|
||||
});
|
||||
|
||||
// 기간 선택 콤보 이벤트
|
||||
const target = $("#webTreatmentPetitSearchDateType").siblings("ul.select_option_list");
|
||||
target.find("li.option_list_item").click(function () {
|
||||
|
||||
@@ -73,6 +73,10 @@
|
||||
</div>
|
||||
|
||||
<div class="right_btn_box">
|
||||
<button id="btnSaveOrdNo" class="treatmentpetit_btn" disabled
|
||||
style="opacity: 0.5; margin-right: 5px;">
|
||||
<img src="/image/web/notice_btn_icon.svg" alt="순서저장">순서저장
|
||||
</button>
|
||||
<button id="btnInsertWebTreatmentPetit" class="treatmentpetit_btn">
|
||||
<img src="/image/web/notice_btn_icon.svg" alt="등록">등록
|
||||
</button>
|
||||
@@ -98,7 +102,7 @@
|
||||
</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/contentsBbs/ContentsBbsSelectList.js?v=3"></script>
|
||||
<script src="/js/web/contentsBbs/ContentsBbsSelectList.js?v=4"></script>
|
||||
</th:block>
|
||||
|
||||
</html>
|
||||
Reference in New Issue
Block a user