车辆对接
This commit is contained in:
@ -3,7 +3,6 @@ import { STComponent, STColumn, STChange } from '@delon/abc/st';
|
|||||||
import { SFComponent, SFSchema } from '@delon/form';
|
import { SFComponent, SFSchema } from '@delon/form';
|
||||||
import { NzModalService } from 'ng-zorro-antd/modal';
|
import { NzModalService } from 'ng-zorro-antd/modal';
|
||||||
import { SystemService } from '../../services/system.service';
|
import { SystemService } from '../../services/system.service';
|
||||||
import { SettingRoleEditComponent } from './edit/edit.component';
|
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'app-crm-management',
|
selector: 'app-crm-management',
|
||||||
@ -73,7 +72,7 @@ export class CrmManagementComponent implements OnInit {
|
|||||||
|
|
||||||
roleAction(item?: any) {
|
roleAction(item?: any) {
|
||||||
const modal = this.nzModalService.create({
|
const modal = this.nzModalService.create({
|
||||||
nzContent: SettingRoleEditComponent,
|
// nzContent: SettingRoleEditComponent,
|
||||||
nzWidth: 900,
|
nzWidth: 900,
|
||||||
nzComponentParams: item ? { i: { ...item } } : { i: { id: 0 } },
|
nzComponentParams: item ? { i: { ...item } } : { i: { id: 0 } },
|
||||||
nzFooter: null
|
nzFooter: null
|
||||||
|
|||||||
@ -1,23 +0,0 @@
|
|||||||
<div class="modal-header">
|
|
||||||
<div class="modal-title">{{ i.id === 0 ? '新增角色' : '编辑角色' }}</div>
|
|
||||||
</div>
|
|
||||||
<nz-spin *ngIf="!i" class="modal-spin"></nz-spin>
|
|
||||||
<div *ngIf="i">
|
|
||||||
<sf #sf [compact]="true" [ui]="ui" [schema]="schema" [button]="'none'"> </sf>
|
|
||||||
</div>
|
|
||||||
<div class="box">
|
|
||||||
<se-container se-container="1">
|
|
||||||
<se label="角色权限" required [labelWidth]="120">
|
|
||||||
<app-cuc-menu #menu (changeData)="getData($event)" [type]="i.id === 0 ? 'add' : 'edit'" [source]="source"
|
|
||||||
[roleId]="i.id" [isAuthorityIdDTOList]="roleInfoData.authority"
|
|
||||||
[authorityAssistId]="roleInfoData.authorityAssistId">
|
|
||||||
</app-cuc-menu>
|
|
||||||
</se>
|
|
||||||
</se-container>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="modal-footer">
|
|
||||||
<button nz-button type="button" (click)="close()">{{ source === 'onlyAuth' ? '关闭' : '取消' }}</button>
|
|
||||||
<button nz-button type="button" nzType="primary" (click)="sure()" *ngIf="source !== 'onlyAuth'"
|
|
||||||
[disabled]="!sf?.valid">确定</button>
|
|
||||||
</div>
|
|
||||||
@ -1,23 +0,0 @@
|
|||||||
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
|
|
||||||
import { CucRoleEditComponent } from './edit.component';
|
|
||||||
|
|
||||||
describe('CucRoleEditComponent', () => {
|
|
||||||
let component: CucRoleEditComponent;
|
|
||||||
let fixture: ComponentFixture<CucRoleEditComponent>;
|
|
||||||
|
|
||||||
beforeEach(async(() => {
|
|
||||||
TestBed.configureTestingModule({
|
|
||||||
declarations: [CucRoleEditComponent],
|
|
||||||
}).compileComponents();
|
|
||||||
}));
|
|
||||||
|
|
||||||
beforeEach(() => {
|
|
||||||
fixture = TestBed.createComponent(CucRoleEditComponent);
|
|
||||||
component = fixture.componentInstance;
|
|
||||||
fixture.detectChanges();
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should create', () => {
|
|
||||||
expect(component).toBeTruthy();
|
|
||||||
});
|
|
||||||
});
|
|
||||||
@ -1,151 +0,0 @@
|
|||||||
import { AfterViewInit, ChangeDetectorRef, Component, OnChanges, OnInit, ViewChild } from '@angular/core';
|
|
||||||
import { SFComponent, SFSchema, SFSchemaEnumType, SFUISchema } from '@delon/form';
|
|
||||||
import { _HttpClient } from '@delon/theme';
|
|
||||||
import { NzModalRef } from 'ng-zorro-antd/modal';
|
|
||||||
import { of } from 'rxjs';
|
|
||||||
import { delay, map } from 'rxjs/operators';
|
|
||||||
import { SystemService } from '../../../services/system.service';
|
|
||||||
import { SettingMenuComponent } from '../menu/menu.component';
|
|
||||||
|
|
||||||
@Component({
|
|
||||||
selector: 'app-cuc-edit',
|
|
||||||
templateUrl: './edit.component.html',
|
|
||||||
styleUrls: ['./edit.less']
|
|
||||||
})
|
|
||||||
export class SettingRoleEditComponent implements OnInit {
|
|
||||||
@ViewChild('sf', { static: false })
|
|
||||||
sf!: SFComponent;
|
|
||||||
@ViewChild('menu', { static: false })
|
|
||||||
menu!: SettingMenuComponent;
|
|
||||||
record: any = {};
|
|
||||||
roleInfoData: any = {};
|
|
||||||
authorityAssistId: any[] = [];
|
|
||||||
appList: any[] = [];
|
|
||||||
source = '';
|
|
||||||
i: any;
|
|
||||||
schema!: SFSchema;
|
|
||||||
authority: any[] = [];
|
|
||||||
roleTplData: any[] = [];
|
|
||||||
appId = '';
|
|
||||||
ui!: SFUISchema;
|
|
||||||
constructor(private modal: NzModalRef, public service: SystemService, public http: _HttpClient, private cdr: ChangeDetectorRef) {}
|
|
||||||
|
|
||||||
ngOnInit(): void {
|
|
||||||
console.log('i', this.i, this.source);
|
|
||||||
if (this.i.id) {
|
|
||||||
this.getRoleInfo();
|
|
||||||
} else {
|
|
||||||
this.getTplList();
|
|
||||||
}
|
|
||||||
if (this.source === '') {
|
|
||||||
this.initSF();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
initSF() {
|
|
||||||
this.schema = {
|
|
||||||
properties: {
|
|
||||||
roleName: {
|
|
||||||
title: '角色名称',
|
|
||||||
type: 'string',
|
|
||||||
default: this.roleInfoData.roleName,
|
|
||||||
maxLength: 20,
|
|
||||||
ui: {
|
|
||||||
placeholder: '请输入角色名称'
|
|
||||||
}
|
|
||||||
},
|
|
||||||
roleDescription: {
|
|
||||||
title: '角色描述',
|
|
||||||
type: 'string',
|
|
||||||
maxLength: 100,
|
|
||||||
default: this.roleInfoData.roleDescription,
|
|
||||||
ui: {
|
|
||||||
autosize: { minRows: 3 },
|
|
||||||
hidden: this.i.lookType === 'detail',
|
|
||||||
placeholder: '请输入角色描述',
|
|
||||||
widget: 'textarea'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
required: ['roleName']
|
|
||||||
};
|
|
||||||
this.ui = {
|
|
||||||
'*': {
|
|
||||||
spanLabelFixed: 120,
|
|
||||||
grid: { span: 24 }
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
getAppList() {
|
|
||||||
const params = {
|
|
||||||
pageSize: 10000,
|
|
||||||
pageIndex: 1
|
|
||||||
};
|
|
||||||
return this.service.request(this.service.$api_getAppList, params).pipe(
|
|
||||||
map(res => {
|
|
||||||
this.appList = res;
|
|
||||||
const versionArr: any[] = [];
|
|
||||||
const resArr = res;
|
|
||||||
if (resArr && resArr.length) {
|
|
||||||
resArr.forEach((item: any) => {
|
|
||||||
versionArr.push({
|
|
||||||
label: item.appName,
|
|
||||||
value: item.appId
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
return versionArr;
|
|
||||||
})
|
|
||||||
);
|
|
||||||
}
|
|
||||||
getTplList() {
|
|
||||||
// this.menu.getAllFunction();
|
|
||||||
}
|
|
||||||
getRoleInfo() {
|
|
||||||
const params = {
|
|
||||||
id: this.i.id
|
|
||||||
};
|
|
||||||
this.service.request(this.service.$api_getRoleInfo, params).subscribe(res => {
|
|
||||||
this.roleInfoData = res;
|
|
||||||
this.roleInfoData.authority = res.authority || [];
|
|
||||||
this.roleInfoData.authorityAssistId = res.authorityAssistId || [];
|
|
||||||
if (this.source === '') {
|
|
||||||
this.initSF();
|
|
||||||
}
|
|
||||||
this.getTplList();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
getData(res: { authority: any[]; authorityAssistId: any[] }) {
|
|
||||||
this.authority = res.authority;
|
|
||||||
this.authorityAssistId = res.authorityAssistId;
|
|
||||||
}
|
|
||||||
close() {
|
|
||||||
this.modal.destroy();
|
|
||||||
}
|
|
||||||
sure() {
|
|
||||||
this.menu.washTree();
|
|
||||||
if (this.authorityAssistId.length === 0) {
|
|
||||||
this.service.msgSrv.warning('请选择权限!');
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
const params: any = {
|
|
||||||
id: this.i.id,
|
|
||||||
...this.sf.value,
|
|
||||||
authority: this.authority,
|
|
||||||
authorityAssistId: this.authorityAssistId
|
|
||||||
};
|
|
||||||
if (this.sf) {
|
|
||||||
this.appList.forEach(item => {
|
|
||||||
if (item.appId === this.sf.value.appId) {
|
|
||||||
params.tenantId = item.tenantId;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
delete params.tplId;
|
|
||||||
if (this.i.id === 0) {
|
|
||||||
delete params.id;
|
|
||||||
}
|
|
||||||
this.service.request(this.service.$api_updateRoleInfo, params).subscribe(res => {
|
|
||||||
this.modal.close(true);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,17 +0,0 @@
|
|||||||
:host {
|
|
||||||
::ng-deep {
|
|
||||||
.box {
|
|
||||||
width: 100%;
|
|
||||||
margin: 0 auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
.sv__label {
|
|
||||||
display: inline-block;
|
|
||||||
float: left;
|
|
||||||
width: 120px;
|
|
||||||
color: #000;
|
|
||||||
font-size: 13px;
|
|
||||||
text-align: right;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
File diff suppressed because it is too large
Load Diff
@ -1,39 +0,0 @@
|
|||||||
<div class="treeWrap">
|
|
||||||
<div class="leftBox">
|
|
||||||
<nz-tree #nzTreeComponent [nzData]="functionList" (nzClick)="nzEvent($event)" nzCheckable
|
|
||||||
[nzCheckedKeys]="defaultCheckedKeys" [nzExpandedKeys]="defaultExpandedKeys">
|
|
||||||
</nz-tree>
|
|
||||||
</div>
|
|
||||||
<div class="rightBox">
|
|
||||||
<nz-tabset [nzSize]="'small'">
|
|
||||||
<nz-tab nzTitle="操作权限">
|
|
||||||
<div *ngFor="let item of origin?.buttonInfoList">
|
|
||||||
<label nz-checkbox [(ngModel)]="item.checked" (ngModelChange)="addAuthority(origin, node, item)">{{ item.title
|
|
||||||
}}</label>
|
|
||||||
</div>
|
|
||||||
<nz-empty nzNotFoundImage="simple" *ngIf="origin?.buttonInfoList?.length === 0">
|
|
||||||
</nz-empty>
|
|
||||||
</nz-tab>
|
|
||||||
<nz-tab nzTitle="数据权限">
|
|
||||||
<div *ngIf="origin.dictList?.length>0" se-container [labelWidth]="100">
|
|
||||||
<se [col]="1" label="用户范围" style="margin-bottom: 8px;" required>
|
|
||||||
<nz-select>
|
|
||||||
<nz-option nzValue="仅可见自己创建的数据" nzLabel="仅可见自己创建的数据"></nz-option>
|
|
||||||
<nz-option nzValue="可见全部人创建的数据" nzLabel="可见全部人创建的数据"></nz-option>
|
|
||||||
</nz-select>
|
|
||||||
</se>
|
|
||||||
<se [col]="1" label="运营主体" style="margin-bottom: 8px;" required>
|
|
||||||
<nz-select nzMode="multiple" nzShowSearch>
|
|
||||||
<nz-option nzValue="全部" nzLabel="全部"></nz-option>
|
|
||||||
<nz-option nzValue="天津" nzLabel="天津"></nz-option>
|
|
||||||
<nz-option nzValue="山西" nzLabel="山西"></nz-option>
|
|
||||||
<nz-option nzValue="北京" nzLabel="北京"></nz-option>
|
|
||||||
</nz-select>
|
|
||||||
</se>
|
|
||||||
</div>
|
|
||||||
<p *ngIf="origin?.dictList?.length === 0">此应用功能模块无数据权限限制,如需添加,请联系系统管理员。</p>
|
|
||||||
</nz-tab>
|
|
||||||
</nz-tabset>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<nz-empty nzNotFoundImage="simple" *ngIf="functionList.length === 0"></nz-empty>
|
|
||||||
@ -1,361 +0,0 @@
|
|||||||
import { ChangeDetectorRef, Component, EventEmitter, Input, OnChanges, OnInit, Output, ViewChild } from '@angular/core';
|
|
||||||
import { ModalHelper, _HttpClient } from '@delon/theme';
|
|
||||||
import { NzFormatEmitEvent, NzTreeNodeOptions } from 'ng-zorro-antd/core/tree';
|
|
||||||
import { NzTreeComponent } from 'ng-zorro-antd/tree';
|
|
||||||
import { SystemService } from '../../../services/system.service';
|
|
||||||
import { Funcs } from './funcs';
|
|
||||||
|
|
||||||
@Component({
|
|
||||||
selector: 'app-cuc-menu',
|
|
||||||
templateUrl: './menu.component.html',
|
|
||||||
styleUrls: ['menu.less']
|
|
||||||
})
|
|
||||||
export class SettingMenuComponent implements OnInit {
|
|
||||||
@ViewChild('nzTreeComponent', { static: false }) nzTreeComponent!: NzTreeComponent;
|
|
||||||
origin: any = { buttonInfoList: Funcs[0].children, dictList: Funcs[0].children };
|
|
||||||
node: any = {};
|
|
||||||
authority: any[] = [];
|
|
||||||
defaultSelectedKeys: any[] = [];
|
|
||||||
defaultExpandedKeys: any[] = [];
|
|
||||||
defaultCheckedKeys: any[] = [];
|
|
||||||
functionList: any[] = Funcs;
|
|
||||||
selectProject: any = {};
|
|
||||||
selectApp: any = {};
|
|
||||||
@Input() type = 'edit';
|
|
||||||
@Input() source = '';
|
|
||||||
@Input() isAuthorityIdDTOList: any[] = [];
|
|
||||||
@Input() authorityAssistId: any[] = [];
|
|
||||||
@Input() roleId: any;
|
|
||||||
@Output() changeData = new EventEmitter();
|
|
||||||
constructor(public service: SystemService, private cdr: ChangeDetectorRef) {}
|
|
||||||
|
|
||||||
ngOnInit() {
|
|
||||||
if (this.type === 'edit') {
|
|
||||||
this.authority = this.isAuthorityIdDTOList;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
getAllFunction() {
|
|
||||||
this.service.request(this.service.$api_getAllFunctionInfoByAppId, { appId: '' }, 'POST', true, 'FORM').subscribe(res => {
|
|
||||||
if (this.source === 'onlyRelationAuth') {
|
|
||||||
this.addDisabledTree(res);
|
|
||||||
} else {
|
|
||||||
// this.addDisabledLeafTree(res);
|
|
||||||
}
|
|
||||||
this.functionList = res;
|
|
||||||
this.defaultCheckedKeys = this.authorityAssistId;
|
|
||||||
this.cdr.detectChanges();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
addAuthority(origin: { id: any; all: any }, node: { buttonInfoList: any[] }, item?: { checked: any; id: any }) {
|
|
||||||
if (this.authority.length && this.authority.filter(authItem => authItem.authorityId === origin.id).length) {
|
|
||||||
// 判断此菜单权限是否已经存在权限列表中
|
|
||||||
// 当前操作菜单id存在权限列表里
|
|
||||||
this.authority.forEach((menuItem, menuIndex) => {
|
|
||||||
if (menuItem.authorityId === origin.id) {
|
|
||||||
menuItem.buttonAuthorityIds = menuItem.buttonAuthorityIds || []; // 防止属性不存在,给属性指定数据类型
|
|
||||||
if (item) {
|
|
||||||
// 单选
|
|
||||||
if (item.checked) {
|
|
||||||
if (menuItem.buttonAuthorityIds.indexOf(item.id) === -1) {
|
|
||||||
// 如果该按钮在数据权限数组中不存在
|
|
||||||
menuItem.buttonAuthorityIds.push(item.id);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (menuItem.buttonAuthorityIds && menuItem.buttonAuthorityIds.length) {
|
|
||||||
menuItem.buttonAuthorityIds.forEach((btnItem: any, index: any) => {
|
|
||||||
if (btnItem === item.id) {
|
|
||||||
menuItem.buttonAuthorityIds.splice(index, 1);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
// 全选
|
|
||||||
if (origin.all) {
|
|
||||||
node.buttonInfoList.forEach((nodeItem: { id: any; checked: boolean }) => {
|
|
||||||
if (menuItem.buttonAuthorityIds.indexOf(nodeItem.id) === -1) {
|
|
||||||
menuItem.buttonAuthorityIds.push(nodeItem.id);
|
|
||||||
nodeItem.checked = true;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
if (menuItem.buttonAuthorityIds && menuItem.buttonAuthorityIds.length) {
|
|
||||||
menuItem.buttonAuthorityIds = [];
|
|
||||||
node.buttonInfoList.forEach((nodeItem: { checked: boolean }) => {
|
|
||||||
nodeItem.checked = false;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
// 数组为空的时候
|
|
||||||
const buttonAuthorityIds = [];
|
|
||||||
if (item) {
|
|
||||||
// 全选
|
|
||||||
buttonAuthorityIds.push(item.id);
|
|
||||||
} else {
|
|
||||||
node.buttonInfoList.forEach((nodeItem: { id: any; checked: boolean }) => {
|
|
||||||
if (origin.all) {
|
|
||||||
buttonAuthorityIds.push(nodeItem.id);
|
|
||||||
nodeItem.checked = true;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
const obj: any = {
|
|
||||||
authorityId: origin.id,
|
|
||||||
buttonAuthorityIds
|
|
||||||
};
|
|
||||||
this.authority.push(obj);
|
|
||||||
}
|
|
||||||
this.checkTreeNode(node, origin);
|
|
||||||
}
|
|
||||||
addDict(item: { checked: any; itemId: any; itemKey: any }, dictItem: { dictId: any }, origin: { id: any }, node: any) {
|
|
||||||
if (this.authority.length) {
|
|
||||||
// 判断此菜单权限是否已经存在权限列表中
|
|
||||||
if (this.authority.filter(authItem => authItem.authorityId === origin.id).length) {
|
|
||||||
// 当前操作菜单id存在权限列表里
|
|
||||||
this.authority.forEach((menuItem, menuIndex) => {
|
|
||||||
if (menuItem.authorityId === origin.id) {
|
|
||||||
menuItem.dataAuthority = menuItem.dataAuthority || []; // 防止属性不存在,给属性指定数据类型
|
|
||||||
if (item.checked) {
|
|
||||||
if (menuItem.dataAuthority.filter((ele: { dictItemId: any }) => ele.dictItemId === item.itemId).length === 0) {
|
|
||||||
// 如果该按钮在数据权限数组中不存在
|
|
||||||
menuItem.dataAuthority.push({ dictItemId: item.itemId, itemKey: item.itemKey, dictId: dictItem.dictId });
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (menuItem.dataAuthority && menuItem.dataAuthority.length) {
|
|
||||||
menuItem.dataAuthority.forEach((btnItem: { dictItemId: any }, index: any) => {
|
|
||||||
if (btnItem.dictItemId === item.itemId) {
|
|
||||||
menuItem.dataAuthority.splice(index, 1);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
// 当前操作菜单id不存在权限列表里
|
|
||||||
const dataAuthority = [];
|
|
||||||
dataAuthority.push({ dictItemId: item.itemId, itemKey: item.itemKey, dictId: dictItem.dictId });
|
|
||||||
const obj: any = {
|
|
||||||
authorityId: origin.id,
|
|
||||||
dataAuthority
|
|
||||||
};
|
|
||||||
this.authority.push(obj);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
// 数组为空的时候
|
|
||||||
const dataAuthority = [];
|
|
||||||
dataAuthority.push({ dictItemId: item.itemId, itemKey: item.itemKey, dictId: dictItem.dictId });
|
|
||||||
const obj: any = {
|
|
||||||
authorityId: origin.id,
|
|
||||||
dataAuthority
|
|
||||||
};
|
|
||||||
this.authority.push(obj);
|
|
||||||
}
|
|
||||||
this.checkTreeNode(node, origin);
|
|
||||||
}
|
|
||||||
checkTreeNode(node: any, origin: { id: any }) {
|
|
||||||
const checkedNode: any = this.nzTreeComponent.getCheckedNodeList();
|
|
||||||
const allCheckedArr: any[] = [];
|
|
||||||
this.overTree(checkedNode, allCheckedArr);
|
|
||||||
this.authority.forEach(authItem => {
|
|
||||||
if (authItem.authorityId === origin.id) {
|
|
||||||
if (
|
|
||||||
(authItem.buttonAuthorityIds && authItem.buttonAuthorityIds.length) ||
|
|
||||||
(authItem.dataAuthority && authItem.dataAuthority.length)
|
|
||||||
) {
|
|
||||||
if (allCheckedArr.indexOf(node.key) === -1) {
|
|
||||||
allCheckedArr.push(node.key);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (allCheckedArr.indexOf(node.key) !== -1) {
|
|
||||||
allCheckedArr.forEach((ele, index) => {
|
|
||||||
if (ele === origin.id) {
|
|
||||||
allCheckedArr.splice(index, 1);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
this.defaultCheckedKeys = allCheckedArr;
|
|
||||||
}
|
|
||||||
addAuthorityAll(origin: any, node: { checked: any; buttonInfoList: any[] }) {
|
|
||||||
if (node.checked) {
|
|
||||||
node.buttonInfoList.forEach((item: any) => {});
|
|
||||||
} else {
|
|
||||||
}
|
|
||||||
}
|
|
||||||
overTree(children: any[], a: any[]) {
|
|
||||||
children.forEach(item => {
|
|
||||||
a.push(item.key);
|
|
||||||
if (item.isLeaf) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (item.children && item.children.length) {
|
|
||||||
this.overTree(item.children, a);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
// 获取角色模板权限
|
|
||||||
getRoleTpl(id: any) {
|
|
||||||
const params = {
|
|
||||||
id
|
|
||||||
};
|
|
||||||
this.service.request(this.service.$api_getRoleTemplateInfo, params).subscribe(res => {
|
|
||||||
this.authority = res.authority;
|
|
||||||
this.defaultCheckedKeys = res.authorityAssistId;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
addDisabledTree(arr: any[]) {
|
|
||||||
arr.forEach((item: any) => {
|
|
||||||
item.disableCheckbox = true;
|
|
||||||
if (item.isLeaf) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (item.children && item.children.length) {
|
|
||||||
this.addDisabledTree(item.children);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
addDisabledLeafTree(arr: any[]) {
|
|
||||||
arr.forEach((item: any) => {
|
|
||||||
if (item.isLeaf) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
item.disableCheckbox = true;
|
|
||||||
if (item.children && item.children.length) {
|
|
||||||
this.addDisabledLeafTree(item.children);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
nzEvent(event: any): void {
|
|
||||||
const ele = event.event.target as HTMLElement;
|
|
||||||
this.origin = event.node.origin;
|
|
||||||
this.node = event.node.origin;
|
|
||||||
if (!event.node.origin.isLeaf) {
|
|
||||||
event.node.isExpanded = !event.node.isExpanded;
|
|
||||||
} else {
|
|
||||||
// this.initButtonList(event.node.key, event.node.origin);
|
|
||||||
// this.initDictList(event.node.key, event.node.origin);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
washTree() {
|
|
||||||
const authorityMenu: any[] = []; // this.authority
|
|
||||||
const tempAuthorityIdDTOListMenu: any[] = [];
|
|
||||||
const checkedNode: any = this.nzTreeComponent.getCheckedNodeList();
|
|
||||||
const halfCheckedNode: any = this.nzTreeComponent.getHalfCheckedNodeList();
|
|
||||||
this.authorityAssistId = [];
|
|
||||||
halfCheckedNode.forEach((item: { key: any }) => {
|
|
||||||
authorityMenu.push({ authorityId: item.key });
|
|
||||||
tempAuthorityIdDTOListMenu.push(item.key);
|
|
||||||
});
|
|
||||||
this.overWashTree(checkedNode, tempAuthorityIdDTOListMenu, authorityMenu);
|
|
||||||
if (this.authority && this.authority.length) {
|
|
||||||
this.authority.forEach(item => {
|
|
||||||
if (tempAuthorityIdDTOListMenu.indexOf(item.authorityId) !== -1) {
|
|
||||||
tempAuthorityIdDTOListMenu.forEach((oldItem, oldIndex) => {
|
|
||||||
if (oldItem === item.authorityId) {
|
|
||||||
authorityMenu[oldIndex] = item;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
const result = {
|
|
||||||
authority: authorityMenu,
|
|
||||||
authorityAssistId: this.authorityAssistId
|
|
||||||
};
|
|
||||||
this.changeData.emit(result);
|
|
||||||
}
|
|
||||||
overWashTree(children: any[], tempAuthorityIdDTOListMenu: any[], authorityMenu: any[]) {
|
|
||||||
children.forEach((item: any) => {
|
|
||||||
this.authorityAssistId.push(item.key);
|
|
||||||
tempAuthorityIdDTOListMenu.push(item.key);
|
|
||||||
authorityMenu.push({ authorityId: item.key });
|
|
||||||
if (item.isLeaf) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (item.children) {
|
|
||||||
this.overWashTree(item.children, tempAuthorityIdDTOListMenu, authorityMenu);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
initButtonList(id: any, origin: any) {
|
|
||||||
const params = {
|
|
||||||
id
|
|
||||||
};
|
|
||||||
this.service.request(this.service.$api_getFunctionButtonInfo, params).subscribe(res => {
|
|
||||||
if (res) {
|
|
||||||
origin.buttonInfoList = res;
|
|
||||||
origin.all = false;
|
|
||||||
// 判断此菜单下是否已有此按钮权限
|
|
||||||
this.againGetBtn(id, origin);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
// 再次请求,需要判断暂存权限数组是否已有此权限
|
|
||||||
againGetBtn(id: any, origin: any) {
|
|
||||||
if (this.authority.length === 0) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
this.authority.forEach(item => {
|
|
||||||
if (item.authorityId === id) {
|
|
||||||
// 如果当前菜单Id等于暂存权限数组的Id
|
|
||||||
if (item.buttonAuthorityIds && item.buttonAuthorityIds.length) {
|
|
||||||
// 如果当前菜单Id权限数组不为空
|
|
||||||
origin.buttonInfoList.forEach((btnItem: { id: any; checked: boolean }) => {
|
|
||||||
// 判断已有权限id是否存在
|
|
||||||
if (item.buttonAuthorityIds.indexOf(btnItem.id) !== -1) {
|
|
||||||
btnItem.checked = true;
|
|
||||||
} else {
|
|
||||||
btnItem.checked = false;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
initDictList(id: any, origin: any) {
|
|
||||||
const params = {
|
|
||||||
id
|
|
||||||
};
|
|
||||||
this.service.request(this.service.$api_getFunctionDataInfo, params).subscribe(res => {
|
|
||||||
if (res) {
|
|
||||||
origin.dictList = res;
|
|
||||||
// 判断此菜单下是否已有此按钮权限
|
|
||||||
this.againGetDict(id, origin);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
// 再次请求,需要判断暂存权限数组是否已有此权限
|
|
||||||
againGetDict(id: any, origin: any) {
|
|
||||||
if (this.authority.length === 0) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
this.authority.forEach(item => {
|
|
||||||
if (item.authorityId === id) {
|
|
||||||
// 如果当前菜单Id等于暂存权限数组的Id
|
|
||||||
if (item.dataAuthority && item.dataAuthority.length) {
|
|
||||||
// 如果当前菜单Id权限数组不为空
|
|
||||||
origin.dictList.forEach((ele: { dictItem: any[] }) => {
|
|
||||||
// 判断已有权限id是否存在
|
|
||||||
ele.dictItem.forEach((dictItem: { itemId: any; checked: boolean; cheked: boolean }) => {
|
|
||||||
item.dataAuthority.forEach((dataItem: { dictItemId: any }) => {
|
|
||||||
if (dataItem.dictItemId === dictItem.itemId) {
|
|
||||||
dictItem.checked = true;
|
|
||||||
} else {
|
|
||||||
dictItem.cheked = false;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,202 +0,0 @@
|
|||||||
:host {
|
|
||||||
.toolbar-btn {
|
|
||||||
padding-left: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
::ng-deep {
|
|
||||||
.ant-checkbox-wrapper+.ant-checkbox-wrapper {
|
|
||||||
margin: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.listDiv {
|
|
||||||
cdk-virtual-scroll-viewport {
|
|
||||||
border: 1px solid rgba(242, 242, 240, 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
.selectedItem {
|
|
||||||
background: #e6f7ff;
|
|
||||||
|
|
||||||
span {
|
|
||||||
a {
|
|
||||||
color: rgba(212, 72, 86, 1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
ul>li>a>i {
|
|
||||||
color: rgba(212, 72, 86, 1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.listBottom {
|
|
||||||
height : 2.5rem;
|
|
||||||
overflow : hidden;
|
|
||||||
text-align : center;
|
|
||||||
background-color: rgba(245, 245, 245, 0.7);
|
|
||||||
|
|
||||||
&:hover {
|
|
||||||
background-color: rgba(245, 245, 245, 1);
|
|
||||||
transition : all 1s;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.ant-tabs-nav {
|
|
||||||
width : 100%;
|
|
||||||
margin: 0 !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.buttons {
|
|
||||||
padding: 0;
|
|
||||||
|
|
||||||
button {
|
|
||||||
display : block;
|
|
||||||
max-width: 10rem;
|
|
||||||
margin : 0.3rem 0.5rem 0 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.ant-btn+.ant-btn:not(.ant-btn-link),
|
|
||||||
.ant-btn+nz-popconfirm,
|
|
||||||
nz-popconfirm+.ant-btn,
|
|
||||||
nz-popconfirm+nz-popconfirm,
|
|
||||||
.ant-btn+nz-button-group,
|
|
||||||
nz-button-group+.ant-btn,
|
|
||||||
.ant-btn+nz-dropdown,
|
|
||||||
nz-dropdown+.ant-btn,
|
|
||||||
nz-popconfirm+nz-button-group,
|
|
||||||
nz-button-group+nz-popconfirm {
|
|
||||||
margin-left: 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.ant-tabs-bar {
|
|
||||||
margin: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
// .ant-tree-node-selected {
|
|
||||||
// background: none !important;
|
|
||||||
// }
|
|
||||||
// .ant-tree-node-content-wrapper:hover {
|
|
||||||
// background: none;
|
|
||||||
// }
|
|
||||||
.ant-tree-node-content-wrapper {
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.ant-tabs .ant-tabs-tabpane {
|
|
||||||
padding : 10px 10px 2px 10px;
|
|
||||||
background : #fdfdfd;
|
|
||||||
border-right : solid 1px #eee;
|
|
||||||
border-bottom: solid 1px #eee;
|
|
||||||
border-left : solid 1px #eee;
|
|
||||||
}
|
|
||||||
|
|
||||||
// .ant-tabs-tab {
|
|
||||||
// width: 50%;
|
|
||||||
// text-align: center;
|
|
||||||
// }
|
|
||||||
// .ant-tabs-tab-arrow-show {
|
|
||||||
// display: none;
|
|
||||||
// }
|
|
||||||
ul {
|
|
||||||
margin : 0;
|
|
||||||
padding: 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.firstStepBox {
|
|
||||||
width : 100%;
|
|
||||||
line-height: 50px;
|
|
||||||
text-align : center;
|
|
||||||
background : #f7f7f7;
|
|
||||||
}
|
|
||||||
|
|
||||||
.itemBox {
|
|
||||||
width : 100%;
|
|
||||||
height : 50px;
|
|
||||||
padding : 0 0 0 60px;
|
|
||||||
color : #5f5f5f;
|
|
||||||
line-height: 50px;
|
|
||||||
cursor : pointer;
|
|
||||||
|
|
||||||
&:hover {
|
|
||||||
background: #e6f7ff;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.twoStepBox {
|
|
||||||
width : 100%;
|
|
||||||
line-height: 50px;
|
|
||||||
text-align : center;
|
|
||||||
background : #f7f7f7;
|
|
||||||
|
|
||||||
span {
|
|
||||||
display: inline-block;
|
|
||||||
margin : 0 auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
>i {
|
|
||||||
float : right;
|
|
||||||
margin: 20px 20px 0 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
button {
|
|
||||||
float : right;
|
|
||||||
margin: 8px 20px 0 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.blueFont {
|
|
||||||
color: #1890ff;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.folder-desc i {
|
|
||||||
margin: 0 5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.flexBox {
|
|
||||||
.titleBox {
|
|
||||||
display : flex;
|
|
||||||
justify-content: space-between;
|
|
||||||
|
|
||||||
i {
|
|
||||||
margin: 0 8px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
ul {
|
|
||||||
display: block;
|
|
||||||
}
|
|
||||||
|
|
||||||
li {
|
|
||||||
line-height: 30px;
|
|
||||||
list-style : none;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
label {
|
|
||||||
color : #666;
|
|
||||||
font-size: 13px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.treeWrap {
|
|
||||||
display: flex;
|
|
||||||
width : 700px;
|
|
||||||
|
|
||||||
.leftBox {
|
|
||||||
width : 250px;
|
|
||||||
border : 1px solid #d1d1d1;
|
|
||||||
max-height: 500px;
|
|
||||||
overflow : auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
.rightBox {
|
|
||||||
flex : 1;
|
|
||||||
margin : 0 0 0 20px;
|
|
||||||
padding-left: 12px;
|
|
||||||
border : 1px solid #d1d1d1;
|
|
||||||
max-height : 500px;
|
|
||||||
overflow : auto;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user