운영관리 > 권한관리 하드코딩 제거

This commit is contained in:
Jeon
2023-07-13 08:20:37 +09:00
parent a2ff693320
commit ab73e2dc6b
11 changed files with 290 additions and 340 deletions

View File

@@ -31,7 +31,7 @@
<td colspan="5"><input type="text" v-model.trim="authDesc" maxlength="100"></td>
</tr>
<tr class="tr_checkbox">
<td class="check" rowspan="2">
<td class="check">
<p>메뉴 권한 체크</p>
<input type="checkbox" id="right_check0" ref="checkedAuthMenuAll_" v-model="checkedAuthMenuAll">
<!--<div class="label_group">
@@ -39,173 +39,30 @@
<label for="right_check0">전체 체크</label>
</div>-->
</td>
<td class="check">
<p>고객관리</p>
<input type="checkbox" id="right_check1" value="2001" v-model="checkedAuthMenu">
<div class="label_group">
<label for="right_check1"></label>
<label for="right_check1">청약고객관리</label>
</div>
<input type="checkbox" id="right_check2" value="2024" v-model="checkedAuthMenu">
<div class="label_group">
<label for="right_check2"></label>
<label for="right_check2">회원관리</label>
</div>
<input type="checkbox" id="right_check3" value="2025" v-model="checkedAuthMenu">
<div class="label_group">
<label for="right_check3"></label>
<label for="right_check3">충전관리</label>
<td colspan="6">
<div class="div_authcheck" v-for="(upper, i) in list" v-bind:key="i">
<p>{{ upper.name }}</p>
<div v-for="(auth, x) in upper.list" v-bind:key="x" >
<div v-if="auth.menuNo !== '2002' && auth.menuNo !== '2003'">
<input type="checkbox" :id="'right_check'+auth.menuNo" :value="auth.menuNo" v-model="checkedAuthMenu"/>
<div class="label_group">
<label :for="'right_check'+auth.menuNo"></label>
<label :for="'right_check'+auth.menuNo">{{auth.name}}</label>
</div>
</div>
<div v-if="auth.menuNo == '2002' || auth.menuNo == '2003'">
<input type="checkbox" name="oneCheck" :id="'right_check'+auth.menuNo" :value="auth.menuNo" @change="channelCheck" v-model="checkedAuthMenu"/>
<div class="label_group">
<label :for="'right_check'+auth.menuNo"></label>
<label :for="'right_check'+auth.menuNo">{{auth.name}}</label>
</div>
</div>
</div>
</div>
</td>
<td class="check system">
<p>유치현황관리</p>
<div class="label_group">
<tr>
<td class="td_radio">
<input type="radio" name="userStat" value="2002" id="channel_radio1" v-model="channelAuth">
<label for="channel_radio1">유치채널 현황</label>
</td>
</tr>
</div>
<div class="label_group">
<tr>
<td class="td_radio">
<input type="radio" name="userStat" value="2003" id="channel_radio2" v-model="channelAuth">
<label for="channel_radio2">유치현황 관리(유치채널)</label>
</td>
</tr>
</div>
</td>
<td class="check">
<p>서비스관리</p>
<input type="checkbox" id="right_check4" value="2004" v-model="checkedAuthMenu">
<div class="label_group">
<label for="right_check4"></label>
<label for="right_check4">080수신거부 인증코드 조회</label>
</div>
</td>
<td class="check">
<p>정산</p>
<input type="checkbox" id="right_check5" value="2005" v-model="checkedAuthMenu">
<div class="label_group">
<label for="right_check5"></label>
<label for="right_check5">정산이력</label>
</div>
</td>
<td class="check">
<p>카카오 채널관리</p>
<input type="checkbox" id="right_check6" value="2007" v-model="checkedAuthMenu">
<div class="label_group">
<label for="right_check6"></label>
<label for="right_check6">채널관리</label>
</div>
<input type="checkbox" id="right_check7" value="2006" v-model="checkedAuthMenu">
<div class="label_group">
<label for="right_check7"></label>
<label for="right_check7">알림톡 템플릿 관리</label>
</div>
</td>
</tr>
<tr>
<td class="check">
<p>발신번호관리</p>
<input type="checkbox" id="right_check8" value="2008" v-model="checkedAuthMenu">
<div class="label_group">
<label for="right_check8"></label>
<label for="right_check8">문자 발신번호 관리</label>
</div>
<input type="checkbox" id="right_check9" value="2009" v-model="checkedAuthMenu">
<div class="label_group">
<label for="right_check9"></label>
<label for="right_check9">발신번호 승인</label>
</div>
</td>
<td class="check">
<p>모니터링</p>
<input type="checkbox" id="right_check10" value="2010" v-model="checkedAuthMenu">
<div class="label_group">
<label for="right_check10"></label>
<label for="right_check10">발송내역</label>
</div>
<input type="checkbox" id="right_check11" value="2011" v-model="checkedAuthMenu">
<div class="label_group">
<label for="right_check11"></label>
<label for="right_check11">실시간발송현황</label>
</div>
</td>
<td class="check">
<p>리스크관리</p>
<input type="checkbox" id="right_check12" value="2012" v-model="checkedAuthMenu">
<div class="label_group">
<label for="right_check12"></label>
<label for="right_check12">발신번호 차단</label>
</div>
<input type="checkbox" id="right_check13" value="2013" v-model="checkedAuthMenu">
<div class="label_group">
<label for="right_check13"></label>
<label for="right_check13">080수신번호 차단</label>
</div>
<!-- <input type="checkbox" id="right_check14" value="2014" v-model="checkedAuthMenu">
<div class="label_group">
<label for="right_check14"></label>
<label for="right_check14">메시지 차단</label>
</div> -->
<!-- <input type="checkbox" id="right_check15" value="2015" v-model="checkedAuthMenu">
<div class="label_group">
<label for="right_check15"></label>
<label for="right_check15">차단 내역</label>
</div> -->
</td>
<td class="check">
<p>발송통계</p>
<input type="checkbox" id="right_check16" value="2016" v-model="checkedAuthMenu">
<div class="label_group">
<label for="right_check16"></label>
<label for="right_check16">날짜별 통계</label>
</div>
<input type="checkbox" id="right_check17" value="2017" v-model="checkedAuthMenu">
<div class="label_group">
<label for="right_check17"></label>
<label for="right_check17">사업자별 통계</label>
</div>
</td>
<td class="check">
<p>시스템 관리</p>
<input type="checkbox" id="right_check18" value="2022" v-model="checkedAuthMenu">
<div class="label_group">
<label for="right_check18"></label>
<label for="right_check18">배치 모니터링</label>
</div>
<input type="checkbox" id="right_check19" value="2018" v-model="checkedAuthMenu">
<div class="label_group">
<label for="right_check19"></label>
<label for="right_check19">관리자/유치채널 관리</label>
</div>
<input type="checkbox" id="right_check20" value="2019" v-model="checkedAuthMenu">
<div class="label_group">
<label for="right_check20"></label>
<label for="right_check20">권한 관리</label>
</div>
<input type="checkbox" id="right_check21" value="2023" v-model="checkedAuthMenu">
<div class="label_group">
<label for="right_check21"></label>
<label for="right_check21">알림 이력</label>
</div>
</td>
<td class="check">
<p>홈페이지 관리</p>
<input type="checkbox" id="right_check22" value="2020" v-model="checkedAuthMenu">
<div class="label_group">
<label for="right_check22"></label>
<label for="right_check22">공지사항</label>
</div>
<input type="checkbox" id="right_check23" value="2021" v-model="checkedAuthMenu">
<div class="label_group">
<label for="right_check23"></label>
<label for="right_check23">자주하는 질문</label>
</div>
</td>
</tr>
</tr>
</tbody>
</table>
</div>
@@ -238,6 +95,7 @@ export default {
defaultAuthMenu: ["2001", "2004", "2005", "2006", "2007", "2008", "2009", "2010", "2011", "2012", "2013", "2015", "2016", "2017", "2018", "2019", "2020", "2021", "2022", "2023", "2024", "2025"],
checkedAuthMenu: [],
channelAuth: "",
list: []
};
},
components: {
@@ -250,9 +108,27 @@ export default {
},
mounted() {
this.athMenuList();
},
methods: {
async athMenuList() {
this.params = {}
try {
const response = await sysMgtApi.athMenuList(this.params);
const result = response.data;
if (result != null && result.retCode == '0000') {
this.list = result.data.list;
}
} catch(err){
this.row.title = '권한 목록 조회 실패';
this.row.msg1 = err;
this.$parent.$refs.commmonModal.alertModalOpen(this.row);
return false;
}
},
doValidate() {
// 필수 등록정보 체크
@@ -381,6 +257,21 @@ export default {
if (props.result) {
this.authInsert();
}
},
channelCheck(e, len, isEventCall){
if(e.target.checked){
for(const target of document.getElementsByName(e.target.name)){
if(target != e.target){
target.checked = false;
this.checkedAuthMenu = this.checkedAuthMenu.filter((data) => {
if(data != target.value){
return data;
}
});
}
}
}
}
},
computed: {

View File

@@ -38,174 +38,32 @@
<label for="right_check0"></label>
<label for="right_check0">전체 체크</label>
</div>-->
</td>
<td class="check">
<p>고객관리</p>
<input type="checkbox" id="right_check1" value="2001" v-model="checkedAuthMenu">
<div class="label_group">
<label for="right_check1"></label>
<label for="right_check1">청약고객관리</label>
</td>
<td colspan="6">
<div class="div_authcheck" v-for="(upper, i) in list" v-bind:key="i">
<p>{{ upper.name }}</p>
<div v-for="(auth, x) in upper.list" v-bind:key="x" >
<div v-if="auth.menuNo !== '2002' && auth.menuNo !== '2003'">
<input type="checkbox" :id="'right_check'+auth.menuNo" :value="auth.menuNo" v-model="checkedAuthMenu"/>
<div class="label_group">
<label :for="'right_check'+auth.menuNo"></label>
<label :for="'right_check'+auth.menuNo">{{auth.name}}</label>
</div>
</div>
<div v-if="auth.menuNo == '2002' || auth.menuNo == '2003'">
<input type="checkbox" name="oneCheck" :id="'right_check'+auth.menuNo" :value="auth.menuNo" @change="channelCheck" v-model="checkedAuthMenu"/>
<div class="label_group">
<label :for="'right_check'+auth.menuNo"></label>
<label :for="'right_check'+auth.menuNo">{{auth.name}}</label>
</div>
</div>
</div>
<input type="checkbox" id="right_check2" value="2024" v-model="checkedAuthMenu">
<div class="label_group">
<label for="right_check2"></label>
<label for="right_check2">회원관리</label>
</div>
<input type="checkbox" id="right_check3" value="2025" v-model="checkedAuthMenu">
<div class="label_group">
<label for="right_check3"></label>
<label for="right_check3">충전관리</label>
</div>
</td>
<td class="check">
<p>유치현황관리</p>
<div class="label_group">
<tr>
<td class="td_radio">
<input type="radio" name="userStat" value="2002" id="channel_radio1" v-model="channelAuth">
<label for="channel_radio1">유치채널 현황</label>
</td>
</tr>
</div>
<div class="label_group">
<tr>
<td class="td_radio">
<input type="radio" name="userStat" value="2003" id="channel_radio2" v-model="channelAuth">
<label for="channel_radio2">유치현황 관리(유치채널)</label>
</td>
</tr>
</div>
</td>
<td class="check">
<p>서비스관리</p>
<input type="checkbox" id="right_check4" value="2004" v-model="checkedAuthMenu">
<div class="label_group">
<label for="right_check4"></label>
<label for="right_check4">080수신거부 인증코드 조회</label>
</div>
</td>
<td class="check">
<p>정산</p>
<input type="checkbox" id="right_check5" value="2005" v-model="checkedAuthMenu">
<div class="label_group">
<label for="right_check5"></label>
<label for="right_check5">정산이력</label>
</div>
</td>
<td class="check">
<p>카카오 채널관리</p>
<input type="checkbox" id="right_check6" value="2007" v-model="checkedAuthMenu">
<div class="label_group">
<label for="right_check6"></label>
<label for="right_check6">채널관리</label>
</div>
<input type="checkbox" id="right_check7" value="2006" v-model="checkedAuthMenu">
<div class="label_group">
<label for="right_check7"></label>
<label for="right_check7">알림톡 템플릿 관리</label>
</div>
</td>
</tr>
<tr>
<td class="check">
<p>발신번호관리</p>
<input type="checkbox" id="right_check8" value="2008" v-model="checkedAuthMenu">
<div class="label_group">
<label for="right_check8"></label>
<label for="right_check8">문자 발신번호 관리</label>
</div>
<input type="checkbox" id="right_check9" value="2009" v-model="checkedAuthMenu">
<div class="label_group">
<label for="right_check9"></label>
<label for="right_check9">발신번호 승인</label>
</div>
</td>
<td class="check">
<p>모니터링</p>
<input type="checkbox" id="right_check10" value="2010" v-model="checkedAuthMenu">
<div class="label_group">
<label for="right_check10"></label>
<label for="right_check10">발송내역</label>
</div>
<input type="checkbox" id="right_check11" value="2011" v-model="checkedAuthMenu">
<div class="label_group">
<label for="right_check11"></label>
<label for="right_check11">실시간발송현황</label>
</div>
</td>
<td class="check">
<p>리스크관리</p>
<input type="checkbox" id="right_check12" value="2012" v-model="checkedAuthMenu">
<div class="label_group">
<label for="right_check12"></label>
<label for="right_check12">발신번호 차단</label>
</div>
<input type="checkbox" id="right_check13" value="2013" v-model="checkedAuthMenu">
<div class="label_group">
<label for="right_check13"></label>
<label for="right_check13">080수신번호 차단</label>
</div>
<!-- <input type="checkbox" id="right_check14" value="2014" v-model="checkedAuthMenu">
<div class="label_group">
<label for="right_check14"></label>
<label for="right_check14">메시지 차단</label>
</div> -->
<!-- <input type="checkbox" id="right_check15" value="2015" v-model="checkedAuthMenu">
<div class="label_group">
<label for="right_check15"></label>
<label for="right_check15">차단 내역</label>
</div> -->
</td>
<td class="check">
<p>발송통계</p>
<input type="checkbox" id="right_check16" value="2016" v-model="checkedAuthMenu">
<div class="label_group">
<label for="right_check16"></label>
<label for="right_check16">날짜별 통계</label>
</div>
<input type="checkbox" id="right_check17" value="2017" v-model="checkedAuthMenu">
<div class="label_group">
<label for="right_check17"></label>
<label for="right_check17">사업자별 통계</label>
</div>
</td>
<td class="check">
<p>시스템 관리</p>
<input type="checkbox" id="right_check18" value="2022" v-model="checkedAuthMenu">
<div class="label_group">
<label for="right_check18"></label>
<label for="right_check18">배치 모니터링</label>
</div>
<input type="checkbox" id="right_check19" value="2018" v-model="checkedAuthMenu">
<div class="label_group">
<label for="right_check19"></label>
<label for="right_check19">관리자/유치채널 관리</label>
</div>
<input type="checkbox" id="right_check20" value="2019" v-model="checkedAuthMenu">
<div class="label_group">
<label for="right_check20"></label>
<label for="right_check20">권한 관리</label>
</div>
<input type="checkbox" id="right_check21" value="2023" v-model="checkedAuthMenu">
<div class="label_group">
<label for="right_check21"></label>
<label for="right_check21">알림 이력</label>
</div>
</td>
<td class="check">
<p>홈페이지 관리</p>
<input type="checkbox" id="right_check22" value="2020" v-model="checkedAuthMenu">
<div class="label_group">
<label for="right_check22"></label>
<label for="right_check22">공지사항</label>
</div>
<input type="checkbox" id="right_check23" value="2021" v-model="checkedAuthMenu">
<div class="label_group">
<label for="right_check23"></label>
<label for="right_check23">자주하는 질문</label>
</div>
</td>
</tr>
</div>
</td>
</tr>
</tbody>
</table>
</div>
@@ -238,6 +96,7 @@ export default {
defaultAuthMenu: ["2001", "2004", "2005", "2006", "2007", "2008", "2009", "2010", "2011", "2012", "2013", "2015", "2016", "2017", "2018", "2019", "2020", "2021", "2022", "2023", "2024", "2025"],
checkedAuthMenu: [],
channelAuth: "",
list: []
};
},
props: {
@@ -257,9 +116,27 @@ export default {
},
mounted() {
this.athMenuList();
},
methods: {
async athMenuList() {
this.params = {}
try {
const response = await sysMgtApi.athMenuList(this.params);
const result = response.data;
if (result != null && result.retCode == '0000') {
this.list = result.data.list;
}
} catch(err){
this.row.title = '권한 목록 조회 실패';
this.row.msg1 = err;
this.$parent.$refs.commmonModal.alertModalOpen(this.row);
return false;
}
},
doValidate() {
// 필수 등록정보 체크
@@ -327,11 +204,7 @@ export default {
var rsArr = [];
for (var i = 0; i < dataList.length; i++) {
if (dataList[i].upperMenuNo != null || dataList[i].upperMenuNo != "") {
if (dataList[i].menuNo === '2002' || dataList[i].menuNo === '2003') {
this.channelAuth = dataList[i].menuNo;
} else {
this.checkedAuthMenu.push(dataList[i].menuNo);
}
this.checkedAuthMenu.push(dataList[i].menuNo);
}
}
@@ -419,6 +292,21 @@ export default {
if (props.result) {
this.authUpdate();
}
},
channelCheck(e, len, isEventCall){
if(e.target.checked){
for(const target of document.getElementsByName(e.target.name)){
if(target != e.target){
target.checked = false;
this.checkedAuthMenu = this.checkedAuthMenu.filter((data) => {
if(data != target.value){
return data;
}
});
}
}
}
}
},
computed: {