const $ = require('jquery');
require("../css/roleManager.less");
require('./../resource/jquery-ui/jquery-ui.min.js');
require('./modal.js');
const {api} = require('./api.js')
const {post, initScroll} = require('./utils.js')
const switchIconOpen = require("./../images/btn_open.png")
const switchIconClose = require("./../images/btn_close.png")
const iconDown= require("./../images/arrow_down.png")
const iconUp = require("./../images/arrow_up.png")
const arrowLeft= require("./../images/arrow_left.png")
const arrowRight = require("./../images/arrow_right.png")
$(function(){
let curId="",curData="",curTreeData=[],permissionIdLis=[],menuIdLis=[];
$(window).resize(function(){
$(".role .leftMenu").css("height",$(window).height()-128+'px')
$(".role .rightMenu").css({"height":$(window).height()-88+'px',"width":$(".filterBox").width()-400+'px'})
$(".role .mainSysWrap").css({"height":$(window).height()-145+'px'})
})
$(".role .mainSysWrap").css({"height":$(window).height()-145+'px'})
$(".role .leftMenu").css("height",$(window).height()-120+'px')
$(".role .rightMenu").css({"height":$(window).height()-88+'px',"width":$(".filterBox").width()-400+'px'})
$(".saveRoleSet").click(function(){//保存角色设置
getParams()
$.alerModal({type:"loading"});
let params = {
"roleId": curId,
"sysMenuSaveVOList": menuIdLis,
"sysPermissionSaveVOList": permissionIdLis
}
saveRoleMenu(params)
})
getRoleList()
getRoleMenu()
// saveRoleMenu()
function getRoleMenu(id){
if(!id)return
post(api.getRoleMenu,{roleId:id}).then(res =>{
let data = res.data;
if(data.code == '0'){
curData = data.data
roleSetLis(data.data)
}else{}
}).catch((e) =>{
})
}
function getRoleList(){
post(api.list).then(res =>{
let data = res.data;
if(data.code == '0'){
roleLeftLis(data.data)
curId=data.data.length>0&&data.data[0].id||''
getRoleMenu(curId)
}else{}
}).catch((e) =>{
})
}
function saveRoleMenu(params){
const doc = parent?parent.document:document;
post(api.saveRoleMenu,params).then(res =>{
let data = res.data;
$(doc).find(".loading").remove()
if(data.code == '0'){
$(doc).find(".divModal").remove()
$.alerModal({type:"tip",message:"保存成功",win:true});
}else{
}
}).catch((e) =>{
$(doc).find(".loading").remove()
})
}
// YH-QXGL-JSGL
$(".menu .page", parent.document).removeClass("active")
$(parent.document).find(".menu .page[code=YH-QXGL-JSGL]").addClass("active")
function roleSetLis(data){
let str = '',sonStr=''
for(let i = 0;i < data.length;i++){
let tmp = data[i]
str += `
${data[i].menuName}
${
(function(tmp){
if(tmp.sonMenuDTOList&&tmp.sonMenuDTOList.length>0){
return getTwoLis(tmp.sonMenuDTOList)
}else if(tmp.sysPermissionDTOList&&tmp.sysPermissionDTOList.length>0){
return getOneLis(tmp.sysPermissionDTOList)
}
})(tmp)
}
`
}
$(".mainSysWrap").html(str)
saveAllSet()
// initScroll("mainSysWrap","Y",1)
}
function saveAllSet(){
$(".selectToggle").click(function(){//点击修改curTreeData,curData
let permissionId = $(this).attr("data-permissionId")
let menuId = $(this).attr("data-menuId")
let parentId = $(this).attr("data-parentId")
let haveMenu = $(this).attr("data-haveMenu")
let grandParentId = $(this).parents(".mainSys").attr("data-menuId")
let grandIndex = $(this).parents(".mainSys").attr("data-index")
let tmpSelectData = null,tmpSelectDataOr=[];
const parentIdArr = ['3','2','17','18','61','69','72','81','100','130','140'];
if(parentIdArr.includes(grandParentId)){//循环
// console.log(curData[grandIndex])
let tmpData = curData[grandIndex];
let tmpDataLis = curData[grandIndex].sonMenuDTOList;
if(parentId == -1&&menuId&&menuId == tmpData.menuId) {//第一层,全选反选,
tmpData.haveMenu = haveMenu==0?'1':'0'
for(let i = 0;i < tmpDataLis.length;i++){
let num = 0
let tmpPer = tmpDataLis[i].sysPermissionDTOList
tmpDataLis[i].haveMenu = haveMenu==0?'1':'0'
for(let m = 0;m < tmpPer.length;m++){//所有相同id联动
tmpPer[m].havePermission = haveMenu==0?'1':'0'
}
}
}else if(permissionId){//第三层
let tmpNum = 0
for(let i = 0;i < tmpDataLis.length;i++){
let num = 0
let tmpPer = tmpDataLis[i].sysPermissionDTOList
for(let m = 0;m < tmpPer.length;m++){//所有相同id联动
if(tmpPer[m].permissionId == permissionId){//当前选中或者取消
tmpPer[m].havePermission = haveMenu==0?'1':'0'
}
if(tmpPer[m].havePermission == 0){
++num
}
}
if(num == tmpPer.length){//内层全部都取消了,父级取消选中
// tmpDataLis[i].haveMenu = '0'
}else{
tmpDataLis[i].haveMenu = '1'
}
//二层否有选中,有则第一层选中,否则第一层不选中
if(tmpDataLis[i].haveMenu == 0){
++tmpNum
}
}
if(tmpNum == tmpDataLis.length){//二层都是取消状态,一层选中取消掉否则选中
tmpData.haveMenu = 0
}else{
tmpData.haveMenu = 1
}
}else{//第二层,内层全选反选
let tmpNum = 0
for(let i = 0;i < tmpDataLis.length;i++){
let tmpPer = tmpDataLis[i].sysPermissionDTOList
if(menuId&&menuId == tmpDataLis[i].menuId){//第二层,里面的全部选中或者全部取消
tmpSelectData = tmpDataLis[i]
tmpDataLis[i].haveMenu = haveMenu==0?'1':'0'
for(let m = 0;m < tmpPer.length;m++){//所有相同id联动
tmpPer[m].havePermission = haveMenu==0?'1':'0'
}
}
//二层否有选中,有则第一层选中,否则第一层不选中
if(tmpDataLis[i].haveMenu == 0){
++tmpNum
}
}
if(tmpNum == tmpDataLis.length){//二层都是取消状态,一层选中取消掉否则选中
tmpData.haveMenu = 0
}else{
tmpData.haveMenu = 1
}
//全选后遍历统计数据中有相同id的也要选中,三级自动选中后二级要判断是取消还是选中
for(let i = 0;i < tmpDataLis.length;i++){//二级循环
let num = 0
if(menuId&&menuId != tmpDataLis[i].menuId){//第二层,没有点击,自动选中第三层相同id的
let tmpPer = tmpDataLis[i].sysPermissionDTOList
for(let m = 0;m < tmpPer.length;m++){//所有相同id联动,三级循环
for(let n = 0;n < tmpSelectData.sysPermissionDTOList.length;n++){
if(tmpSelectData.sysPermissionDTOList[n].permissionId == tmpPer[m].permissionId){
tmpPer[m].havePermission = haveMenu==0?'1':'0'
}
}
}
}
}
for(let i = 0;i < tmpDataLis.length;i++){//二级循环
let num = 0
let tmpPer = tmpDataLis[i].sysPermissionDTOList
for(let m = 0;m < tmpPer.length;m++){//所有相同id联动,三级循环
if(tmpPer[m].havePermission == 0){
++num
}
}
if(num == tmpPer.length&&tmpPer.length>0){//内层全部都取消了,父级取消选中
tmpDataLis[i].haveMenu = '0'
}else{
// if(menuId&&menuId == tmpDataLis[i].menuId){
// tmpDataLis[i].haveMenu = '1'
// }
}
}
}
}else{
let tmpData = curData[grandIndex];
let tmpDataLis = curData[grandIndex].sysPermissionDTOList;
if(permissionId&&parentId==tmpData.menuId){//当前第二层
let num = 0;
for(let i = 0;i < tmpDataLis.length;i++){//判断当前点的是第几层
let tmpPer = tmpDataLis[i]
if(tmpPer.permissionId == permissionId){//当前选中或者取消
tmpPer.havePermission = haveMenu==0?'1':'0'
}
if(tmpPer.havePermission == 0){
++num
}
}
if(num == tmpDataLis.length){//内层全部都取消了,父级取消选中
tmpData.haveMenu = '0'
}else{
tmpData.haveMenu = '1'
}
}else if(menuId&&menuId == tmpData.menuId){//第一层,全选反选
tmpData.haveMenu = haveMenu==0?'1':'0'
for(let i = 0;i < tmpDataLis.length;i++){
let tmpPer = tmpDataLis[i]
tmpPer.havePermission = haveMenu==0?'1':'0'
}
}
}
roleSetLis(curData)
getParams()
})
}
function getParams(){//type=0删除,1添加,共三层
permissionIdLis=[],menuIdLis=[];
for(let i = 0;i < curData.length;i++){//最外层的
let tmpData = curData[i]
if(tmpData.haveMenu == 1){//第一层选中了,继续遍历第二层
menuIdLis.push({menuId:tmpData.menuId})
if(tmpData.sonMenuDTOList&&tmpData.sonMenuDTOList.length > 0){//说明有第三层
let tmpSon = tmpData.sonMenuDTOList
for(let m = 0;m < tmpSon.length;m++){
let tmpSym = tmpSon[m]
if(tmpSym.haveMenu == 1){//有选中,遍历第三层
menuIdLis.push({menuId:tmpSym.menuId})
for(let n =0;n < tmpSym.sysPermissionDTOList.length;n++){
if(tmpSym.sysPermissionDTOList[n].havePermission == 1){
permissionIdLis.push({permissionId:tmpSym.sysPermissionDTOList[n].permissionId})
}
}
}
}
}else{//只有两层
if(tmpData.haveMenu == 1){
for(let j = 0;j < tmpData.sysPermissionDTOList.length;j++){
let tmpS = tmpData.sysPermissionDTOList[j]
if(tmpS.havePermission == 1){
permissionIdLis.push({permissionId:tmpS.permissionId})
}
}
}
}
}
}
// console.log(permissionIdLis,menuIdLis)
}
function getOneLis(data){
let tmpstr = ''
for(let i = 0;i