팝업 공지 어드민 등록 화면 작업

This commit is contained in:
kubo8
2023-04-13 10:25:43 +09:00
parent 58ab820e43
commit 5b4273add6
9 changed files with 227 additions and 238 deletions

View File

@@ -33,7 +33,7 @@
<th style="width: 10%">긴급여부</th> <th style="width: 10%">긴급여부</th>
<td> <td>
<div class="select_box"> <div class="select_box">
<select name="" id="right" v-model="emgYn" style="min-width: 150px"> <select name="" id="right" v-model="emgYn" style="min-width: 150px" v-bind:disabled="ctgCd=='06'">
<option value="Y">긴급</option> <option value="Y">긴급</option>
<option value="N">일반</option> <option value="N">일반</option>
</select> </select>
@@ -49,6 +49,35 @@
</div> </div>
</td> </td>
</tr> </tr>
<tr v-show="ctgCd=='06'">
<th style="width: 10%">노출기간</th>
<td colspan="5">
<div class="input_box cal">
<div class="term">
<span class="custom_input icon_date">
<vuejs-datepicker
:language="ko"
:format="customFormatter"
:disabled-dates="disabledSDate"
v-model="startDate"
@selected="selectedStartDate(0)"
@closed="closeDate('start')"
></vuejs-datepicker> </span
>~
<span class="custom_input icon_date">
<vuejs-datepicker
:language="ko"
:format="customFormatter"
:disabled-dates="disabledEDate"
v-model="endDate"
@selected="selectedEndDate(0)"
@closed="closeDate('end')"
></vuejs-datepicker>
</span>
</div>
</div>
</td>
</tr>
<tr> <tr>
<th style="width: 10%">제목</th> <th style="width: 10%">제목</th>
<td colspan="5"> <td colspan="5">
@@ -113,25 +142,34 @@
</template> </template>
<script> <script>
import { VueEditor } from 'vue2-editor'; import { VueEditor } from 'vue2-editor';
import api from '@/service/api'; import { utils_mixin, chkPattern2 } from '../service/mixins';
import moment from 'moment';
import homeMgtApi from '../service/homeMgtApi'; import homeMgtApi from '../service/homeMgtApi';
import ValidationConfirmPopup from './ValidationConfirmPopup.vue'; import ValidationConfirmPopup from './ValidationConfirmPopup.vue';
import { utils_mixin, chkPattern2 } from '../service/mixins';
export default { export default {
name: 'NoticePop', name: 'NoticePop',
mixins: [utils_mixin, chkPattern2], mixins: [utils_mixin, chkPattern2],
components: {
VueEditor,
ValidationConfirmPopup,
vuejsDatepicker
},
data() { data() {
return { return {
props: {}, props: {},
row: {}, row: {},
rsnType: [],
tpType: [],
// 공지사항 // 공지사항
title: '', title: '',
ntSbst: '', // ntSbst: '', //
emgYn: 'N', emgYn: 'N',
useYn: 'Y', useYn: 'Y',
ko: vdp_translation_ko.js,
startDate: new Date(),
endDate: new Date(),
disabledSDate : {},
disabledEDate : {},
ctgCd: 'null', ctgCd: 'null',
updateFileList: [], // 업로드한 이미지 파일 updateFileList: [], // 업로드한 이미지 파일
ctgCdOption: [ ctgCdOption: [
@@ -141,29 +179,16 @@ export default {
{ code: '03', codeNm: '정책/약관' }, { code: '03', codeNm: '정책/약관' },
{ code: '04', codeNm: '오류/장애' }, { code: '04', codeNm: '오류/장애' },
{ code: '05', codeNm: '이벤트' }, { code: '05', codeNm: '이벤트' },
{ code: '06', codeNm: '팝업공지' },
], ],
// 공지사항 // 공지사항
LINE_FEED: 10, // '\n', LINE_FEED: 10, // '\n',
maxByte: 2000, maxByte: 2000,
// params: {
// 'blckSndrno' : ''
// ,'ctgCd' : '01'
// ,'blckRsnCd' : '02'
// ,'meno' : ''
// }
}; };
}, },
create() { create() {
//this.setCodeDate();
this.formReset();
}, },
mounted() { mounted() {
//this.ctgCd = '01'
},
components: {
VueEditor,
ValidationConfirmPopup,
}, },
methods: { methods: {
handleImageAdded(file, Editor, cursorLocation, resetUploader) { handleImageAdded(file, Editor, cursorLocation, resetUploader) {
@@ -189,7 +214,8 @@ export default {
for (var i = 0; i < dimmed.length; i++) { for (var i = 0; i < dimmed.length; i++) {
dimmed[i].style.display = 'block'; dimmed[i].style.display = 'block';
} }
this.setCodeDate(); this.formReset();
this.setPeriodDay(0);
}, },
// 모달 끄기 // 모달 끄기
ModalClose() { ModalClose() {
@@ -205,17 +231,6 @@ export default {
this.$parent.$refs.table.reloadData(); this.$parent.$refs.table.reloadData();
this.ModalClose(); this.ModalClose();
}, },
setCodeDate() {
// 발송타입
api.commCode({ grpCd: 'SNDBLCK_TP_CD' }).then((response) => {
this.tpType = response.data.data.list;
});
api.commCode({ grpCd: 'SNDBLCK_RSN_CD' }).then((response) => {
this.rsnType = response.data.data.list;
});
},
doValidate() { doValidate() {
if (this.isNull(this.ctgCd) || this.ctgCd === 'null') { if (this.isNull(this.ctgCd) || this.ctgCd === 'null') {
this.row.title = '공지사항 등록'; this.row.title = '공지사항 등록';
@@ -239,14 +254,7 @@ export default {
this.$refs.ValidationConfirmPopup.alertModalOpen(this.row); this.$refs.ValidationConfirmPopup.alertModalOpen(this.row);
return false; return false;
} }
/* const hp = this.blckSndrno;
if (!this.isNull(hp) && !this.isSendnum(hp)) {
this.row.title = '공지사항';
this.row.msg1 = '발신번호 형식이 잘못되었습니다. 확인 해주세요.';
this.$parent.alertInsert(this.row);
this.$refs._blckSndrno.focus();
return false;
} */
this.row.ctgCd = this.ctgCd; this.row.ctgCd = this.ctgCd;
return true; return true;
}, },
@@ -306,6 +314,8 @@ export default {
emgYn: this.emgYn, emgYn: this.emgYn,
useYn: this.useYn, useYn: this.useYn,
ctgCd: this.ctgCd, ctgCd: this.ctgCd,
ntStrtDt: moment(this.startDate).format('YYYYMMDD'),
ntEndDt: moment(this.endDate).format('YYYYMMDD'),
regr: this.$store.getters['login/userNm'], regr: this.$store.getters['login/userNm'],
regId: this.$store.getters['login/userId'], regId: this.$store.getters['login/userId'],
chgId: this.$store.getters['login/userId'], chgId: this.$store.getters['login/userId'],
@@ -313,16 +323,11 @@ export default {
fd.append('key', new Blob([JSON.stringify(params)], { type: 'application/json' })); fd.append('key', new Blob([JSON.stringify(params)], { type: 'application/json' }));
/* for (var pair of fd.entries()) {
console.log(pair[0] + ' : ' + pair[1]);
} */
homeMgtApi.insertNotice(fd).then((response) => { homeMgtApi.insertNotice(fd).then((response) => {
if (response.data.retCode == '0000') { if (response.data.retCode == '0000') {
this.row.title = '공지사항 등록'; this.row.title = '공지사항 등록';
this.row.msg1 = '등록이 완료되었습니다.'; this.row.msg1 = '등록이 완료되었습니다.';
this.row.type = 'complete'; this.row.type = 'complete';
//this.$refs.ValidationConfirmPopup.alertModalOpen(this.row);
this.toComplete(); this.toComplete();
} else { } else {
this.row.title = '공지사항 등록 실패'; this.row.title = '공지사항 등록 실패';
@@ -347,27 +352,6 @@ export default {
onFileChange(event) { onFileChange(event) {
const files = event.target.files || event.dataTransfer.files; const files = event.target.files || event.dataTransfer.files;
if (!files.length) return; if (!files.length) return;
/* if (files.length > 3) {
confirm.fnAlert(
// "이미지 첨부 기준 안내",
'',
'<li>최대 3장 첨부할 수 있습니다.</li>',
'info'
);
this.imageAddTitle = '이미지는 최대 3장까지 첨부할 수 있습니다.';
//confirm.fnAlert("알림", "첨부파일은 최대 3개까지 가능합니다.", "alert");
return;
} else if (this.updateFileList.length + files.length > 3) {
confirm.fnAlert(
// "이미지 첨부 기준 안내",
'',
'<li>최대 3장 첨부할 수 있습니다.</li>',
'info'
);
this.imageAddTitle = '이미지는 최대 3장까지 첨부할 수 있습니다.';
// confirm.fnAlert("알림", "첨부파일은 최대 3개까지 가능합니다.", "alert");
return;
} */
this.addFiles(files); this.addFiles(files);
}, },
async addFiles(files) { async addFiles(files) {
@@ -377,48 +361,6 @@ export default {
files[i].status = 'update'; files[i].status = 'update';
files[i].index = this.updateFileList.length; files[i].index = this.updateFileList.length;
this.updateFileList.push(files[i]); this.updateFileList.push(files[i]);
/* if (!(files[i].name.indexOf('jpg') > -1 || files[i].name.indexOf('jpeg') > -1)) {
confirm.fnAlert('', '<li>jpg파일 형식만 첨부할 수 있습니다.</li>', 'info');
this.imageAddTitle = 'jpg파일 형식만 첨부할 수 있습니다.';
continue;
} else if (files[i].size > 300000) {
confirm.fnAlert(
// "이미지 첨부 기준 안내",
'',
'<li>전체 크기 합계가 300KB 이하여야 합니다.</li>',
'info'
);
this.imageAddTitle = '전체 크기 합계가 300KB 이하여야 합니다.';
//confirm.fnAlert("이미지 사이즈 초과", "300KB이하 이미지만 등록 가능합니다.", "alert");
continue;
} else if (files[i].size + this.totalFileSize > 300000) {
confirm.fnAlert(
// "이미지 첨부 기준 안내",
'',
'<li>전체 크기 합계가 300KB 이하여야 합니다.</li>',
'info'
);
this.imageAddTitle = '전체 크기 합계가 300KB 이하여야 합니다.';
//confirm.fnAlert("이미지 사이즈 초과", "전체 합계 300KB이하 이미지만 등록 가능합니다.", "alert");
continue;
} else if (this.getImageSize(src) === false) {
confirm.fnAlert(
// "이미지 첨부 기준 안내",
'',
'<li>1,500(가로)x1,440(세로)px 이하 크기만 첨부할 수 있습니다.</li>',
'info'
);
this.imageAddTitle = '1,500(가로)x1,440(세로)px 이하 크기만 첨부할 수 있습니다.';
//confirm.fnAlert("이미지 크기 초과", "1500 * 1440 이하 이미지만 등록 가능합니다.", "alert");
continue;
} else {
files[i].status = 'update';
files[i].index = this.updateFileList.length;
this.updateFileList.push(files[i]);
confirm.fnAlert('', '이미지가 정상적으로 추가 되었습니다.', 'alert');
this.imageAddTitle = '';
} */
} }
this.$refs.imageUploader.value = ''; // 이미지 중복 가능하도록 input 초기화 this.$refs.imageUploader.value = ''; // 이미지 중복 가능하도록 input 초기화
}, },
@@ -451,6 +393,40 @@ export default {
popupHandleRemove(index) { popupHandleRemove(index) {
this.updateFileList.splice(index, 1); this.updateFileList.splice(index, 1);
}, },
setPeriodDay(day) {
this.periodDay = day;
this.startDate = new Date();
this.endDate = moment(new Date()).add(7, 'days').toDate();
this.closeDate('start');
this.closeDate('end');
},
selectedStartDate(day) {
if (day != undefined && day != null) {
this.periodDay = day;
}
if (this.startDate > this.endDate) {
this.startDate = this.endDate;
}
},
selectedEndDate(day) {
if (day != undefined && day != null) {
this.periodDay = day;
}
},
closeDate(type) {
if (type != undefined && type != null) {
if (type == 'start') {
this.disabledSDate = { to: new Date(), from: this.endDate };
this.disabledEDate = { to: this.startDate};
} else if (type == 'end') {
this.disabledSDate = { to: new Date(), from: this.endDate };
this.disabledEDate = { to: this.startDate };
}
}
},
customFormatter: function (date) {
return moment(date).format('YYYY-MM-DD');
},
}, },
}; };
</script> </script>

View File

@@ -33,7 +33,7 @@
<th style="width: 10%">긴급여부</th> <th style="width: 10%">긴급여부</th>
<td> <td>
<div class="select_box"> <div class="select_box">
<select name="" id="right" v-model="emgYn" style="min-width: 150px"> <select name="" id="right" v-model="emgYn" style="min-width: 150px" v-bind:disabled="ctgCd=='06'">
<option value="Y">긴급</option> <option value="Y">긴급</option>
<option value="N">일반</option> <option value="N">일반</option>
</select> </select>
@@ -49,6 +49,35 @@
</div> </div>
</td> </td>
</tr> </tr>
<tr v-show="ctgCd=='06'">
<th style="width: 10%">노출기간</th>
<td colspan="5">
<div class="input_box cal">
<div class="term">
<span class="custom_input icon_date">
<vuejs-datepicker
:language="ko"
:format="customFormatter"
:disabled-dates="disabledSDate"
v-model="startDate"
@selected="selectedStartDate(0)"
@closed="closeDate('start')"
></vuejs-datepicker> </span
>~
<span class="custom_input icon_date">
<vuejs-datepicker
:language="ko"
:format="customFormatter"
:disabled-dates="disabledEDate"
v-model="endDate"
@selected="selectedEndDate(0)"
@closed="closeDate('end')"
></vuejs-datepicker>
</span>
</div>
</div>
</td>
</tr>
<tr> <tr>
<th style="width: 10%">제목</th> <th style="width: 10%">제목</th>
<td colspan="5"> <td colspan="5">
@@ -118,22 +147,31 @@
</div> </div>
</template> </template>
<script> <script>
import api from '@/service/api'; import { utils_mixin, chkPattern2 } from '../service/mixins';
import homeMgtApi from '../service/homeMgtApi'; import homeMgtApi from '../service/homeMgtApi';
import ValidationConfirmPopup from './ValidationConfirmPopup.vue'; import ValidationConfirmPopup from './ValidationConfirmPopup.vue';
import { VueEditor } from 'vue2-editor'; import { VueEditor } from 'vue2-editor';
import { utils_mixin, chkPattern2 } from '../service/mixins'; import moment from 'moment';
export default { export default {
name: 'NoticeUpdatePop', name: 'NoticeUpdatePop',
mixins: [utils_mixin, chkPattern2], mixins: [utils_mixin, chkPattern2],
components: {
VueEditor,
ValidationConfirmPopup,
vuejsDatepicker
},
data() { data() {
return { return {
props: {}, props: {},
row: {}, row: {},
rsnType: [], rsnType: [],
tpType: [], tpType: [],
ko: vdp_translation_ko.js,
startDate: '',
endDate: '',
disabledSDate : {},
disabledEDate : {},
// 공지사항 // 공지사항
ntNo: '', ntNo: '',
title: '', title: '',
@@ -154,29 +192,16 @@ export default {
{ code: '03', codeNm: '정책/약관' }, { code: '03', codeNm: '정책/약관' },
{ code: '04', codeNm: '오류/장애' }, { code: '04', codeNm: '오류/장애' },
{ code: '05', codeNm: '이벤트' }, { code: '05', codeNm: '이벤트' },
{ code: '06', codeNm: '팝업공지' }
], ],
// 공지사항 // 공지사항
LINE_FEED: 10, // '\n', LINE_FEED: 10, // '\n',
maxByte: 2000, maxByte: 2000,
// params: {
// 'blckSndrno' : ''
// ,'ctgCd' : '01'
// ,'blckRsnCd' : '02'
// ,'meno' : ''
// }
}; };
}, },
create() { create() {
//this.setCodeDate();
this.formReset();
}, },
mounted() { mounted() {
//this.ctgCd = '01'
},
components: {
VueEditor,
ValidationConfirmPopup,
}, },
methods: { methods: {
handleImageAdded(file, Editor, cursorLocation, resetUploader) { handleImageAdded(file, Editor, cursorLocation, resetUploader) {
@@ -202,7 +227,7 @@ export default {
for (var i = 0; i < dimmed.length; i++) { for (var i = 0; i < dimmed.length; i++) {
dimmed[i].style.display = 'block'; dimmed[i].style.display = 'block';
} }
this.setCodeDate(); this.formReset();
if (props) { if (props) {
this.ntNo = props.ntNo; this.ntNo = props.ntNo;
this.title = props.title; this.title = props.title;
@@ -215,6 +240,20 @@ export default {
this.fileTitle = props.fileTitle && props.fileTitle.split(','); this.fileTitle = props.fileTitle && props.fileTitle.split(',');
this.fileNo = props.fileNo && props.fileNo.split(','); this.fileNo = props.fileNo && props.fileNo.split(',');
this.fileCount = props.fileCount; this.fileCount = props.fileCount;
//팝업 공지가 아닐경우 현재 날짜 셋팅
console.log(props.ctgCd);
console.log(props.ntStrtDt);
console.log(props.ntEndDt);
if(props.ctgCd != "06"){
this.startDate = new Date();
this.endDate = moment(new Date()).add(7, 'days').toDate();
}else{
this.startDate = moment(props.ntStrtDt).toDate();
this.endDate = moment(props.ntEndDt).toDate();
}
this.closeDate('start');
this.closeDate('end');
} }
for (let i = 0; i < this.fileCount; i++) { for (let i = 0; i < this.fileCount; i++) {
@@ -241,17 +280,6 @@ export default {
this.$parent.$refs.table.reloadData(); this.$parent.$refs.table.reloadData();
this.ModalClose(); this.ModalClose();
}, },
setCodeDate() {
// 발송타입
api.commCode({ grpCd: 'SNDBLCK_TP_CD' }).then((response) => {
this.tpType = response.data.data.list;
});
api.commCode({ grpCd: 'SNDBLCK_RSN_CD' }).then((response) => {
this.rsnType = response.data.data.list;
});
},
doValidate() { doValidate() {
if (this.isNull(this.ctgCd) || this.ctgCd === 'null') { if (this.isNull(this.ctgCd) || this.ctgCd === 'null') {
this.row.title = '공지사항 등록'; this.row.title = '공지사항 등록';
@@ -275,14 +303,6 @@ export default {
this.$refs.ValidationConfirmPopup.alertModalOpen(this.row); this.$refs.ValidationConfirmPopup.alertModalOpen(this.row);
return false; return false;
} }
/* const hp = this.blckSndrno;
if (!this.isNull(hp) && !this.isSendnum(hp)) {
this.row.title = '공지사항';
this.row.msg1 = '발신번호 형식이 잘못되었습니다. 확인 해주세요.';
this.$parent.alertInsert(this.row);
this.$refs._blckSndrno.focus();
return false;
} */
this.row.ctgCd = this.ctgCd; this.row.ctgCd = this.ctgCd;
return true; return true;
}, },
@@ -347,6 +367,8 @@ export default {
ntSbst: this.ntSbst, ntSbst: this.ntSbst,
emgYn: this.emgYn, emgYn: this.emgYn,
useYn: this.useYn, useYn: this.useYn,
ntStrtDt: moment(this.startDate).format('YYYYMMDD'),
ntEndDt: moment(this.endDate).format('YYYYMMDD'),
ctgCd: this.ctgCd, ctgCd: this.ctgCd,
chgId: this.$store.getters['login/userId'], chgId: this.$store.getters['login/userId'],
legacyFiles: legacyFiles.join(), legacyFiles: legacyFiles.join(),
@@ -355,16 +377,11 @@ export default {
fd.append('key', new Blob([JSON.stringify(params)], { type: 'application/json' })); fd.append('key', new Blob([JSON.stringify(params)], { type: 'application/json' }));
/* for (var pair of fd.entries()) {
console.log(pair[0] + ' : ' + pair[1]);
} */
homeMgtApi.updateNotice(fd).then((response) => { homeMgtApi.updateNotice(fd).then((response) => {
if (response.data.retCode == '0000') { if (response.data.retCode == '0000') {
this.row.title = '공지사항 수정'; this.row.title = '공지사항 수정';
this.row.msg1 = '수정이 완료되었습니다.'; this.row.msg1 = '수정이 완료되었습니다.';
this.row.type = 'update'; this.row.type = 'update';
//this.$refs.ValidationConfirmPopup.alertModalOpen(this.row);
this.toComplete(); this.toComplete();
} else { } else {
this.row.title = '공지사항 수정 실패'; this.row.title = '공지사항 수정 실패';
@@ -388,27 +405,6 @@ export default {
onFileChange(event) { onFileChange(event) {
const files = event.target.files || event.dataTransfer.files; const files = event.target.files || event.dataTransfer.files;
if (!files.length) return; if (!files.length) return;
/* if (files.length > 3) {
confirm.fnAlert(
// "이미지 첨부 기준 안내",
'',
'<li>최대 3장 첨부할 수 있습니다.</li>',
'info'
);
this.imageAddTitle = '이미지는 최대 3장까지 첨부할 수 있습니다.';
//confirm.fnAlert("알림", "첨부파일은 최대 3개까지 가능합니다.", "alert");
return;
} else if (this.updateFileList.length + files.length > 3) {
confirm.fnAlert(
// "이미지 첨부 기준 안내",
'',
'<li>최대 3장 첨부할 수 있습니다.</li>',
'info'
);
this.imageAddTitle = '이미지는 최대 3장까지 첨부할 수 있습니다.';
// confirm.fnAlert("알림", "첨부파일은 최대 3개까지 가능합니다.", "alert");
return;
} */
this.addFiles(files); this.addFiles(files);
}, },
async addFiles(files) { async addFiles(files) {
@@ -416,48 +412,6 @@ export default {
const src = await this.readFiles(files[i]); const src = await this.readFiles(files[i]);
files[i].src = src; files[i].src = src;
this.updateFileList.push(files[i]); this.updateFileList.push(files[i]);
/* if (!(files[i].name.indexOf('jpg') > -1 || files[i].name.indexOf('jpeg') > -1)) {
confirm.fnAlert('', '<li>jpg파일 형식만 첨부할 수 있습니다.</li>', 'info');
this.imageAddTitle = 'jpg파일 형식만 첨부할 수 있습니다.';
continue;
} else if (files[i].size > 300000) {
confirm.fnAlert(
// "이미지 첨부 기준 안내",
'',
'<li>전체 크기 합계가 300KB 이하여야 합니다.</li>',
'info'
);
this.imageAddTitle = '전체 크기 합계가 300KB 이하여야 합니다.';
//confirm.fnAlert("이미지 사이즈 초과", "300KB이하 이미지만 등록 가능합니다.", "alert");
continue;
} else if (files[i].size + this.totalFileSize > 300000) {
confirm.fnAlert(
// "이미지 첨부 기준 안내",
'',
'<li>전체 크기 합계가 300KB 이하여야 합니다.</li>',
'info'
);
this.imageAddTitle = '전체 크기 합계가 300KB 이하여야 합니다.';
//confirm.fnAlert("이미지 사이즈 초과", "전체 합계 300KB이하 이미지만 등록 가능합니다.", "alert");
continue;
} else if (this.getImageSize(src) === false) {
confirm.fnAlert(
// "이미지 첨부 기준 안내",
'',
'<li>1,500(가로)x1,440(세로)px 이하 크기만 첨부할 수 있습니다.</li>',
'info'
);
this.imageAddTitle = '1,500(가로)x1,440(세로)px 이하 크기만 첨부할 수 있습니다.';
//confirm.fnAlert("이미지 크기 초과", "1500 * 1440 이하 이미지만 등록 가능합니다.", "alert");
continue;
} else {
files[i].status = 'update';
files[i].index = this.updateFileList.length;
this.updateFileList.push(files[i]);
confirm.fnAlert('', '이미지가 정상적으로 추가 되었습니다.', 'alert');
this.imageAddTitle = '';
} */
} }
console.log(this.updateFileList); console.log(this.updateFileList);
this.$refs.imageUploader.value = ''; // 이미지 중복 가능하도록 input 초기화 this.$refs.imageUploader.value = ''; // 이미지 중복 가능하도록 input 초기화
@@ -499,6 +453,40 @@ export default {
this.row.fileNm = fileName; this.row.fileNm = fileName;
homeMgtApi.fileDownload(this.row); homeMgtApi.fileDownload(this.row);
}, },
setPeriodDay(day) {
this.periodDay = day;
this.startDate = new Date();
this.endDate = moment(new Date()).add(7, 'days').toDate();
this.closeDate('start');
this.closeDate('end');
},
selectedStartDate(day) {
if (day != undefined && day != null) {
this.periodDay = day;
}
if (this.startDate > this.endDate) {
this.startDate = this.endDate;
}
},
selectedEndDate(day) {
if (day != undefined && day != null) {
this.periodDay = day;
}
},
closeDate(type) {
if (type != undefined && type != null) {
if (type == 'start') {
this.disabledSDate = { to: new Date(), from: this.endDate };
this.disabledEDate = { to: this.startDate};
} else if (type == 'end') {
this.disabledSDate = { to: new Date(), from: this.endDate };
this.disabledEDate = { to: this.startDate };
}
}
},
customFormatter: function (date) {
return moment(date).format('YYYY-MM-DD');
},
}, },
}; };
</script> </script>

View File

@@ -15,6 +15,7 @@
<option value="03">정책/약관</option> <option value="03">정책/약관</option>
<option value="04">오류/장애</option> <option value="04">오류/장애</option>
<option value="05">이벤트</option> <option value="05">이벤트</option>
<option value="06">팝업공지</option>
</select> </select>
</div> </div>
<div class="input_box id"> <div class="input_box id">
@@ -173,21 +174,10 @@ export default {
}; };
}, },
mounted() { mounted() {
// this.fnSelectNoticeList();
//let page = 1;
// 페이지 정보 및 검색 조건 // 페이지 정보 및 검색 조건
const getCondition = this.$store.getters['searchcondition/getSearchCondition']; const getCondition = this.$store.getters['searchcondition/getSearchCondition'];
// store에 저장된 페이지 정보 및 검색 조건을 불러오기 // store에 저장된 페이지 정보 및 검색 조건을 불러오기
let isKeep = false; let isKeep = false;
/*
if (getCondition) {
this.grid.pagePerRows = getCondition.perPage;
this.grid.params = getCondition.params;
// page = getCondition.page;
//isKeep = true;
}
*/
this.grid.pagePerRows = 50; this.grid.pagePerRows = 50;
this.search(isKeep); this.search(isKeep);
}, },
@@ -214,7 +204,6 @@ export default {
this.$refs.NoticePop.ModalOpen(); this.$refs.NoticePop.ModalOpen();
}, },
noticeDetail(props) { noticeDetail(props) {
//console.log(props);
this.$refs.NoticeUpdatePop.ModalOpen(props); this.$refs.NoticeUpdatePop.ModalOpen(props);
}, },
search: function (isKeep) { search: function (isKeep) {
@@ -230,8 +219,6 @@ export default {
perPage: this.perPageCnt, perPage: this.perPageCnt,
params: this.grid.params, params: this.grid.params,
}); });
//const getCondition = this.$store.getters['searchcondition/getSearchCondition'];
}, },
changePerPage: function () { changePerPage: function () {
// 페이지당 조회할 개수 // 페이지당 조회할 개수
@@ -246,16 +233,12 @@ export default {
this.$refs.commmonModal.alertModalOpen(this.row); this.$refs.commmonModal.alertModalOpen(this.row);
return false; return false;
} }
//const param = chkList.map((row)=>({regReqNo:row.regReqNo} ));
const param = chkList.map((row) => ({ ntNo: row.ntNo })); const param = chkList.map((row) => ({ ntNo: row.ntNo }));
this.row.list = param; this.row.list = param;
this.row.title = '공지사항 관리'; this.row.title = '공지사항 관리';
this.row.msg1 = '삭제 하시겠습니까?'; this.row.msg1 = '삭제 하시겠습니까?';
this.$refs.commmonModal.confirmModalOpen2(this.row); this.$refs.commmonModal.confirmModalOpen2(this.row);
console.log(typeof this.row.list[0].ntNo);
//this.$refs.commmonModal.confirmModalOpen2(this.row);
}, },
confirmCalbackFnc(props) { confirmCalbackFnc(props) {
if (props.result) { if (props.result) {

View File

@@ -101,6 +101,7 @@ public class HomeMgtService {
homeMgtMapper.insertNotice(insertNoticeReqDto); homeMgtMapper.insertNotice(insertNoticeReqDto);
NT_NO = homeMgtMapper.insertNoticeNtNo(); NT_NO = homeMgtMapper.insertNoticeNtNo();
}catch(Exception e){ }catch(Exception e){
e.printStackTrace();
return new InsertNoticeResDto(ApiResponseCode.CM_DB_QUERY_ERR); return new InsertNoticeResDto(ApiResponseCode.CM_DB_QUERY_ERR);
} }

View File

@@ -27,6 +27,12 @@ public class InsertNoticeReqDto implements Serializable {
@ApiModelProperty(example = "사용 여부", name = "사용 여부", dataType = "String") @ApiModelProperty(example = "사용 여부", name = "사용 여부", dataType = "String")
private String useYn; private String useYn;
@ApiModelProperty(example = "시작일자", name = "시작일자", dataType = "Int")
private String ntStrtDt;
@ApiModelProperty(example = "종료일자", name = "종료일자", dataType = "Int")
private String ntEndDt;
@ApiModelProperty(example = "등록 ID", name = "등록 ID", dataType = "String") @ApiModelProperty(example = "등록 ID", name = "등록 ID", dataType = "String")
private String regId; private String regId;

View File

@@ -41,6 +41,12 @@ public class NoticeDto implements Serializable {
@ApiModelProperty(example = "조회수", name = "조회수", dataType = "Int") @ApiModelProperty(example = "조회수", name = "조회수", dataType = "Int")
private String retvCnt; private String retvCnt;
@ApiModelProperty(example = "시작일자", name = "시작일자", dataType = "Int")
private String ntStrtDt;
@ApiModelProperty(example = "종료일자", name = "종료일자", dataType = "Int")
private String ntEndDt;
@ApiModelProperty(example = "등록 ID", name = "등록 ID", dataType = "String") @ApiModelProperty(example = "등록 ID", name = "등록 ID", dataType = "String")
private String regId; private String regId;

View File

@@ -32,6 +32,12 @@ public class NoticeListReqDto implements Serializable {
@ApiModelProperty(example = "사용 여부", name = "사용 여부", dataType = "String") @ApiModelProperty(example = "사용 여부", name = "사용 여부", dataType = "String")
private String useYn; private String useYn;
@ApiModelProperty(example = "시작일자", name = "시작일자", dataType = "Int")
private String ntStrtDt;
@ApiModelProperty(example = "종료일자", name = "종료일자", dataType = "Int")
private String ntEndDt;
@NotNull @NotNull
@ApiModelProperty(example = "페이지당 조회할 목록 수",notes = "페이지당 조회할 목록 수", name = "페이지당 조회할 목록 수", dataType = "int") @ApiModelProperty(example = "페이지당 조회할 목록 수",notes = "페이지당 조회할 목록 수", name = "페이지당 조회할 목록 수", dataType = "int")
private int pagePerRows; private int pagePerRows;

View File

@@ -33,6 +33,12 @@ public class UpdateNoticeReqDto implements Serializable {
@ApiModelProperty(example = "변경 ID", name = "변경 ID", dataType = "String") @ApiModelProperty(example = "변경 ID", name = "변경 ID", dataType = "String")
private String chgId; private String chgId;
@ApiModelProperty(example = "시작일자", name = "시작일자", dataType = "Int")
private String ntStrtDt;
@ApiModelProperty(example = "종료일자", name = "종료일자", dataType = "Int")
private String ntEndDt;
@ApiModelProperty(example = "업로드된 파일", name = "업로드된 파일", dataType = "String") @ApiModelProperty(example = "업로드된 파일", name = "업로드된 파일", dataType = "String")
private String legacyFiles; private String legacyFiles;

View File

@@ -25,18 +25,23 @@
@ROWNUM := @ROWNUM + 1 AS NO, @ROWNUM := @ROWNUM + 1 AS NO,
NT_NO, NT_NO,
CTG_CD, CTG_CD,
CASE WHEN CTG_CD = '06' THEN '팝업공지'
ELSE
( (
SELECT DTL_CD_NM SELECT DTL_CD_NM
FROM hubez_common.EZ_CD_DTL FROM hubez_common.EZ_CD_DTL
WHERE DTL_CD = N1.CTG_CD WHERE DTL_CD = N1.CTG_CD
AND GRP_CD = 'NTBBS_CTG_CD' AND USE_YN = 'Y' AND GRP_CD = 'NTBBS_CTG_CD' AND USE_YN = 'Y'
) AS CTG_CD_NM, )
END AS CTG_CD_NM,
TITLE, TITLE,
EMG_YN, EMG_YN,
NT_SBST, NT_SBST,
REGR, REGR,
USE_YN, USE_YN,
RETV_CNT, RETV_CNT,
DATE_FORMAT(NT_STRT_DT, '%Y-%m-%d') AS ntStrtDt,
DATE_FORMAT(NT_END_DT, '%Y-%m-%d') AS ntEndDt,
REG_ID, REG_ID,
DATE_FORMAT(REG_DT, '%Y-%m-%d') AS regDt, DATE_FORMAT(REG_DT, '%Y-%m-%d') AS regDt,
CHG_ID, CHG_ID,
@@ -111,6 +116,10 @@
REGR, REGR,
USE_YN, USE_YN,
RETV_CNT, RETV_CNT,
<if test="ctgCd == '06'">
NT_STRT_DT,
NT_END_DT,
</if>
REG_ID, REG_ID,
REG_DT, REG_DT,
CHG_ID, CHG_ID,
@@ -123,6 +132,10 @@
#{regr}, #{regr},
#{useYn}, #{useYn},
0, 0,
<if test="ctgCd == '06'">
#{ntStrtDt},
#{ntEndDt},
</if>
#{regId}, #{regId},
NOW(), NOW(),
#{chgId}, #{chgId},
@@ -181,6 +194,10 @@
,USE_YN = #{useYn} ,USE_YN = #{useYn}
,TITLE = #{title} ,TITLE = #{title}
,NT_SBST = #{ntSbst} ,NT_SBST = #{ntSbst}
<if test="ctgCd == '06'">
,NT_STRT_DT = #{ntStrtDt}
,NT_END_DT = #{ntEndDt}
</if>
,CHG_DT = NOW() ,CHG_DT = NOW()
,CHG_ID = #{chgId} ,CHG_ID = #{chgId}
WHERE WHERE