diff --git a/src/app/routes/sys-setting/components/goods-name-config/goods-name-config.component.html b/src/app/routes/sys-setting/components/goods-name-config/goods-name-config.component.html
new file mode 100644
index 00000000..cd4caae6
--- /dev/null
+++ b/src/app/routes/sys-setting/components/goods-name-config/goods-name-config.component.html
@@ -0,0 +1,52 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ - 编辑{{i}}
+ - 上移
+ - 下移
+ - 删除
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/app/routes/sys-setting/components/goods-name-config/goods-name-config.component.less b/src/app/routes/sys-setting/components/goods-name-config/goods-name-config.component.less
new file mode 100644
index 00000000..48111074
--- /dev/null
+++ b/src/app/routes/sys-setting/components/goods-name-config/goods-name-config.component.less
@@ -0,0 +1,11 @@
+:host::ng-deep {
+ .ant-list-items {
+ max-height: 600px;
+ overflow : auto;
+ }
+}
+
+.select-type {
+ color : #1890ff;
+ background-color: rgb(230 247 255);
+}
\ No newline at end of file
diff --git a/src/app/routes/sys-setting/components/goods-name-config/goods-name-config.component.ts b/src/app/routes/sys-setting/components/goods-name-config/goods-name-config.component.ts
new file mode 100644
index 00000000..b07c48c5
--- /dev/null
+++ b/src/app/routes/sys-setting/components/goods-name-config/goods-name-config.component.ts
@@ -0,0 +1,74 @@
+import { Component, OnInit, ViewChild } from '@angular/core';
+import { STComponent, STColumn } from '@delon/abc/st';
+import { NzModalService } from 'ng-zorro-antd/modal';
+import { SystemService } from '../../services/system.service';
+
+@Component({
+ selector: 'app-goods-name-config',
+ templateUrl: './goods-name-config.component.html',
+ styleUrls: ['./goods-name-config.component.less']
+})
+export class GoodsNameConfigComponent implements OnInit {
+ typeList = [
+ { title: '零件配件', sort: 1, id: 1 },
+ { title: '衣用物资', sort: 2, id: 2 },
+ { title: '空包装', sort: 3, id: 3 },
+ { title: '废品废料', sort: 4, id: 4 },
+ { title: '家具家居', sort: 8, id: 5 },
+ { title: '衣用物资', sort: 6, id: 6 },
+ { title: '空包装', sort: 7, id: 7 },
+ { title: '衣用物资', sort: 8, id: 8 },
+ { title: '空包装', sort: 9, id: 9 },
+ { title: '废品废料', sort: 10, id: 10 },
+ { title: '废品废料2', sort: 11, id: 11 },
+ { title: '废品废料3', sort: 12, id: 12 },
+ { title: '零件配件', sort: 1, id: 1 },
+ { title: '衣用物资', sort: 2, id: 2 },
+ { title: '空包装', sort: 3, id: 3 },
+ { title: '废品废料', sort: 4, id: 4 },
+ { title: '家具家居', sort: 8, id: 5 },
+ { title: '衣用物资', sort: 6, id: 6 },
+ { title: '空包装', sort: 7, id: 7 },
+ { title: '衣用物资', sort: 8, id: 8 },
+ { title: '空包装', sort: 9, id: 9 },
+ { title: '废品废料', sort: 10, id: 10 },
+ { title: '废品废料2', sort: 11, id: 11 },
+ { title: '废品废料3', sort: 12, id: 12 }
+ ];
+ selectedType = 1;
+
+ @ViewChild('st', { static: true })
+ st!: STComponent;
+ url = `/rule?_allow_anonymous=true`;
+ reqParams = {};
+ columns: STColumn[] = [
+ { title: '货物名称', index: 'no' },
+ { title: '更新时间', index: 'description' },
+ {
+ title: '操作',
+ buttons: [
+ {
+ text: '编辑'
+ // click: item => this.staffAction(item)
+ },
+ {
+ text: '上移',
+ iif: item => item.no !== 0
+ // click: item => this.action(2)
+ },
+ {
+ text: '下移',
+ iif: item => item.status !== 10
+ // click: item => this.action(1)
+ },
+ {
+ text: '删除',
+ // click: item => this.action(3)
+ }
+ ]
+ }
+ ];
+ constructor(public service: SystemService, private nzModalService: NzModalService) {}
+
+ ngOnInit(): void {}
+}
diff --git a/src/app/routes/sys-setting/components/role-management/edit/edit.component.html b/src/app/routes/sys-setting/components/role-management/edit/edit.component.html
new file mode 100644
index 00000000..d10a8c6f
--- /dev/null
+++ b/src/app/routes/sys-setting/components/role-management/edit/edit.component.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/app/routes/sys-setting/components/role-management/edit/edit.component.spec.ts b/src/app/routes/sys-setting/components/role-management/edit/edit.component.spec.ts
new file mode 100644
index 00000000..0690cbe6
--- /dev/null
+++ b/src/app/routes/sys-setting/components/role-management/edit/edit.component.spec.ts
@@ -0,0 +1,23 @@
+import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+import { CucRoleEditComponent } from './edit.component';
+
+describe('CucRoleEditComponent', () => {
+ let component: CucRoleEditComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(async(() => {
+ TestBed.configureTestingModule({
+ declarations: [CucRoleEditComponent],
+ }).compileComponents();
+ }));
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(CucRoleEditComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should create', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/src/app/routes/sys-setting/components/role-management/edit/edit.component.ts b/src/app/routes/sys-setting/components/role-management/edit/edit.component.ts
new file mode 100644
index 00000000..6528cb3e
--- /dev/null
+++ b/src/app/routes/sys-setting/components/role-management/edit/edit.component.ts
@@ -0,0 +1,151 @@
+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);
+ });
+ }
+}
diff --git a/src/app/routes/sys-setting/components/role-management/edit/edit.less b/src/app/routes/sys-setting/components/role-management/edit/edit.less
new file mode 100644
index 00000000..a902f302
--- /dev/null
+++ b/src/app/routes/sys-setting/components/role-management/edit/edit.less
@@ -0,0 +1,17 @@
+: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;
+ }
+ }
+}
diff --git a/src/app/routes/sys-setting/components/role-management/menu/funcs.ts b/src/app/routes/sys-setting/components/role-management/menu/funcs.ts
new file mode 100644
index 00000000..e120aa3f
--- /dev/null
+++ b/src/app/routes/sys-setting/components/role-management/menu/funcs.ts
@@ -0,0 +1,1897 @@
+export const Funcs = [
+ {
+ hideInBreadcrumb: 0,
+ reuse: 0,
+ isLea: false,
+ level: 0,
+ icon: '',
+ link: '',
+ title: '主导航',
+ isLeaf: false,
+ parentId: '0',
+ i18n: 'menu.main',
+ hide: false,
+ sorted: '0',
+ expanded: true,
+ shortcut: 0,
+ children: [
+ {
+ hideInBreadcrumb: 0,
+ reuse: 0,
+ isLea: true,
+ level: 1,
+ icon: 'anticon anticon-dashboard',
+ link: '/dashboard',
+ title: '工作台',
+ isLeaf: true,
+ parentId: '1420203656199319554',
+ i18n: 'menu.dashboard',
+ hide: false,
+ sorted: '0',
+ shortcut: 0,
+ appId: '2537B72DDA534361AE4931903F0BFEB3',
+ menuType: 0,
+ text: '工作台',
+ id: '1420203657109483522',
+ functionType: 0,
+ key: '1420203657109483522'
+ },
+ {
+ hideInBreadcrumb: 0,
+ reuse: 0,
+ isLea: false,
+ level: 1,
+ icon: 'anticon anticon-appstore',
+ link: '',
+ title: '设置中心',
+ isLeaf: false,
+ parentId: '1420203656199319554',
+ i18n: 'menu.systemset',
+ hide: false,
+ sorted: '0',
+ shortcut: 0,
+ children: [
+ {
+ hideInBreadcrumb: 0,
+ reuse: 0,
+ isLea: true,
+ level: 2,
+ icon: 'anticon anticon-dashboard',
+ link: '/system/info',
+ title: '企业信息',
+ isLeaf: true,
+ parentId: '1420203657138843649',
+ i18n: 'menu.systemset.info',
+ hide: false,
+ sorted: '0',
+ shortcut: 0,
+ appId: '2537B72DDA534361AE4931903F0BFEB3',
+ menuType: 0,
+ text: '企业信息',
+ id: '1420203659714146306',
+ functionType: 0,
+ key: '1420203659714146306'
+ },
+ {
+ hideInBreadcrumb: 0,
+ reuse: 0,
+ isLea: true,
+ level: 2,
+ icon: '',
+ link: '/system/base',
+ title: '通用设置',
+ isLeaf: true,
+ parentId: '1420203657138843649',
+ i18n: 'menu.systemset.base',
+ hide: false,
+ sorted: '0',
+ shortcut: 0,
+ appId: '2537B72DDA534361AE4931903F0BFEB3',
+ menuType: 0,
+ text: '通用设置',
+ id: '1420203659827392514',
+ functionType: 0,
+ key: '1420203659827392514'
+ },
+ {
+ hideInBreadcrumb: 0,
+ reuse: 0,
+ isLea: true,
+ level: 2,
+ icon: 'anticon anticon-dashboard',
+ link: '/system/staffmanagement',
+ title: '员工管理',
+ isLeaf: true,
+ parentId: '1420203657138843649',
+ i18n: 'menu.systemset.staffmanagement',
+ hide: false,
+ sorted: '0',
+ shortcut: 0,
+ appId: '2537B72DDA534361AE4931903F0BFEB3',
+ menuType: 0,
+ text: '员工管理',
+ id: '1420203659911278594',
+ functionType: 0,
+ key: '1420203659911278594'
+ },
+ {
+ hideInBreadcrumb: 0,
+ reuse: 0,
+ isLea: true,
+ level: 2,
+ icon: '',
+ link: '/system/roles',
+ title: '角色管理',
+ isLeaf: true,
+ parentId: '1420203657138843649',
+ i18n: 'menu.systemset.roles',
+ hide: false,
+ sorted: '0',
+ shortcut: 0,
+ appId: '2537B72DDA534361AE4931903F0BFEB3',
+ menuType: 0,
+ text: '角色管理',
+ id: '1420203659923861505',
+ functionType: 0,
+ key: '1420203659923861505'
+ },
+ {
+ hideInBreadcrumb: 0,
+ reuse: 0,
+ isLea: true,
+ level: 2,
+ icon: '',
+ link: '/system/violationType',
+ title: '违规类型配置',
+ isLeaf: true,
+ parentId: '1420203657138843649',
+ i18n: 'menu.systemset.violationType',
+ hide: false,
+ sorted: '0',
+ shortcut: 0,
+ appId: '2537B72DDA534361AE4931903F0BFEB3',
+ menuType: 0,
+ text: '违规类型配置',
+ id: '1420203660024524802',
+ functionType: 0,
+ key: '1420203660024524802'
+ },
+ {
+ hideInBreadcrumb: 0,
+ reuse: 0,
+ isLea: true,
+ level: 2,
+ icon: '',
+ link: '/system/log',
+ title: '操作日志',
+ isLeaf: true,
+ parentId: '1420203657138843649',
+ i18n: 'menu.systemset.log',
+ hide: false,
+ sorted: '0',
+ shortcut: 0,
+ appId: '2537B72DDA534361AE4931903F0BFEB3',
+ menuType: 0,
+ text: '操作日志',
+ id: '1420203660209074178',
+ functionType: 0,
+ key: '1420203660209074178'
+ }
+ ],
+ appId: '2537B72DDA534361AE4931903F0BFEB3',
+ menuType: 0,
+ text: '设置中心',
+ id: '1420203657138843649',
+ functionType: 0,
+ key: '1420203657138843649'
+ },
+ {
+ hideInBreadcrumb: 0,
+ reuse: 0,
+ isLea: false,
+ level: 1,
+ icon: 'anticon anticon-dashboard',
+ link: '',
+ title: '商品中心',
+ isLeaf: false,
+ parentId: '1420203656199319554',
+ i18n: 'menu.cmc',
+ hide: false,
+ sorted: '0',
+ shortcut: 0,
+ children: [
+ {
+ hideInBreadcrumb: 0,
+ reuse: 0,
+ isLea: false,
+ level: 2,
+ icon: 'anticon anticon-dashboard',
+ link: '',
+ title: '商品管理',
+ isLeaf: false,
+ parentId: '1420203657289838594',
+ i18n: 'menu.cmc.goods',
+ hide: false,
+ sorted: '0',
+ shortcut: 0,
+ children: [
+ {
+ hideInBreadcrumb: 0,
+ reuse: 0,
+ isLea: true,
+ level: 3,
+ icon: '',
+ link: '/cmc/goods',
+ title: '商品列表',
+ isLeaf: true,
+ parentId: '1420203661043740674',
+ i18n: 'menu.cmc.goods.list',
+ hide: false,
+ sorted: '0',
+ shortcut: 0,
+ appId: '2537B72DDA534361AE4931903F0BFEB3',
+ menuType: 0,
+ text: '商品列表',
+ id: '1420203666928349186',
+ functionType: 0,
+ key: '1420203666928349186'
+ },
+ {
+ hideInBreadcrumb: 0,
+ reuse: 0,
+ isLea: true,
+ level: 3,
+ icon: '',
+ link: '/cmc/goods/view',
+ title: '商品详情',
+ isLeaf: true,
+ parentId: '1420203661043740674',
+ i18n: 'menu.cmc.goods.view',
+ hide: true,
+ sorted: '0',
+ shortcut: 0,
+ appId: '2537B72DDA534361AE4931903F0BFEB3',
+ menuType: 0,
+ text: '商品详情',
+ id: '1420203666974486530',
+ functionType: 0,
+ key: '1420203666974486530'
+ },
+ {
+ hideInBreadcrumb: 0,
+ reuse: 0,
+ isLea: true,
+ level: 3,
+ icon: '',
+ link: '/cmc/goods/check',
+ title: '商品审核',
+ isLeaf: true,
+ parentId: '1420203661043740674',
+ i18n: 'menu.cmc.goods.check',
+ hide: false,
+ sorted: '0',
+ shortcut: 0,
+ appId: '2537B72DDA534361AE4931903F0BFEB3',
+ menuType: 0,
+ text: '商品审核',
+ id: '1420203667297447938',
+ functionType: 0,
+ key: '1420203667297447938'
+ },
+ {
+ hideInBreadcrumb: 0,
+ reuse: 0,
+ isLea: true,
+ level: 3,
+ icon: '',
+ link: '/cmc/goods/record',
+ title: '违规下架记录',
+ isLeaf: true,
+ parentId: '1420203661043740674',
+ i18n: 'menu.cmc.goods.record',
+ hide: false,
+ sorted: '0',
+ shortcut: 0,
+ appId: '2537B72DDA534361AE4931903F0BFEB3',
+ menuType: 0,
+ text: '违规下架记录',
+ id: '1420203667339390978',
+ functionType: 0,
+ key: '1420203667339390978'
+ },
+ {
+ hideInBreadcrumb: 0,
+ reuse: 0,
+ isLea: true,
+ level: 3,
+ icon: '',
+ link: '/cmc/goods/check/checkdetail',
+ title: '商品审核详情',
+ isLeaf: true,
+ parentId: '1420203661043740674',
+ i18n: 'menu.cmc.goods.checkdetail',
+ hide: true,
+ sorted: '0',
+ shortcut: 0,
+ appId: '2537B72DDA534361AE4931903F0BFEB3',
+ menuType: 0,
+ text: '商品审核详情',
+ id: '1420203667813347330',
+ functionType: 0,
+ key: '1420203667813347330'
+ }
+ ],
+ appId: '2537B72DDA534361AE4931903F0BFEB3',
+ menuType: 0,
+ text: '商品管理',
+ id: '1420203661043740674',
+ functionType: 0,
+ key: '1420203661043740674'
+ },
+ {
+ hideInBreadcrumb: 0,
+ reuse: 0,
+ isLea: false,
+ level: 2,
+ icon: 'anticon anticon-dashboard',
+ link: '',
+ title: '服务管理',
+ isLeaf: false,
+ parentId: '1420203657289838594',
+ i18n: 'menu.cmc.service',
+ hide: false,
+ sorted: '0',
+ shortcut: 0,
+ children: [
+ {
+ hideInBreadcrumb: 0,
+ reuse: 0,
+ isLea: true,
+ level: 3,
+ icon: '',
+ link: '/cmc/service/view',
+ title: '服务详情',
+ isLeaf: true,
+ parentId: '1420203661475753985',
+ i18n: 'menu.cmc.service.view',
+ hide: true,
+ sorted: '0',
+ shortcut: 0,
+ appId: '2537B72DDA534361AE4931903F0BFEB3',
+ menuType: 0,
+ text: '服务详情',
+ id: '1420203668606070786',
+ functionType: 0,
+ key: '1420203668606070786'
+ },
+ {
+ hideInBreadcrumb: 0,
+ reuse: 0,
+ isLea: true,
+ level: 3,
+ icon: '',
+ link: '/cmc/service',
+ title: '服务列表',
+ isLeaf: true,
+ parentId: '1420203661475753985',
+ i18n: 'menu.cmc.service.list',
+ hide: false,
+ sorted: '0',
+ shortcut: 0,
+ appId: '2537B72DDA534361AE4931903F0BFEB3',
+ menuType: 0,
+ text: '服务列表',
+ id: '1420203668987752449',
+ functionType: 0,
+ key: '1420203668987752449'
+ },
+ {
+ hideInBreadcrumb: 0,
+ reuse: 0,
+ isLea: true,
+ level: 3,
+ icon: '',
+ link: '/cmc/service/check/checkdetail',
+ title: '服务审核详情',
+ isLeaf: true,
+ parentId: '1420203661475753985',
+ i18n: 'menu.cmc.service.checkdetail',
+ hide: true,
+ sorted: '0',
+ shortcut: 0,
+ appId: '2537B72DDA534361AE4931903F0BFEB3',
+ menuType: 0,
+ text: '服务审核详情',
+ id: '1420203668996141057',
+ functionType: 0,
+ key: '1420203668996141057'
+ },
+ {
+ hideInBreadcrumb: 0,
+ reuse: 0,
+ isLea: true,
+ level: 3,
+ icon: '',
+ link: '/cmc/service/check',
+ title: '服务审核',
+ isLeaf: true,
+ parentId: '1420203661475753985',
+ i18n: 'menu.cmc.service.check',
+ hide: false,
+ sorted: '0',
+ shortcut: 0,
+ appId: '2537B72DDA534361AE4931903F0BFEB3',
+ menuType: 0,
+ text: '服务审核',
+ id: '1420203669059055617',
+ functionType: 0,
+ key: '1420203669059055617'
+ }
+ ],
+ appId: '2537B72DDA534361AE4931903F0BFEB3',
+ menuType: 0,
+ text: '服务管理',
+ id: '1420203661475753985',
+ functionType: 0,
+ key: '1420203661475753985'
+ },
+ {
+ hideInBreadcrumb: 0,
+ reuse: 0,
+ isLea: false,
+ level: 2,
+ icon: 'anticon anticon-dashboard',
+ link: '',
+ title: '标签管理',
+ isLeaf: false,
+ parentId: '1420203657289838594',
+ i18n: 'menu.cmc.tags',
+ hide: false,
+ sorted: '0',
+ shortcut: 0,
+ children: [
+ {
+ hideInBreadcrumb: 0,
+ reuse: 0,
+ isLea: true,
+ level: 3,
+ icon: '',
+ link: '/cmc/tags',
+ title: '服务列表',
+ isLeaf: true,
+ parentId: '1420203661479948291',
+ i18n: 'menu.cmc.tags.list',
+ hide: false,
+ sorted: '0',
+ shortcut: 0,
+ appId: '2537B72DDA534361AE4931903F0BFEB3',
+ menuType: 0,
+ text: '服务列表',
+ id: '1420203669025501186',
+ functionType: 0,
+ key: '1420203669025501186'
+ },
+ {
+ hideInBreadcrumb: 0,
+ reuse: 0,
+ isLea: true,
+ level: 3,
+ icon: '',
+ link: '/cmc/tags/add',
+ title: '新增标签',
+ isLeaf: true,
+ parentId: '1420203661479948291',
+ i18n: 'menu.cmc.tags.add',
+ hide: true,
+ sorted: '0',
+ shortcut: 0,
+ appId: '2537B72DDA534361AE4931903F0BFEB3',
+ menuType: 0,
+ text: '新增标签',
+ id: '1420203669025501187',
+ functionType: 0,
+ key: '1420203669025501187'
+ }
+ ],
+ appId: '2537B72DDA534361AE4931903F0BFEB3',
+ menuType: 0,
+ text: '标签管理',
+ id: '1420203661479948291',
+ functionType: 0,
+ key: '1420203661479948291'
+ }
+ ],
+ appId: '2537B72DDA534361AE4931903F0BFEB3',
+ menuType: 0,
+ text: '商品中心',
+ id: '1420203657289838594',
+ functionType: 0,
+ key: '1420203657289838594'
+ },
+ {
+ hideInBreadcrumb: 0,
+ reuse: 0,
+ isLea: false,
+ level: 1,
+ icon: 'anticon anticon-dashboard',
+ link: '',
+ title: '用户中心',
+ isLeaf: false,
+ parentId: '1420203656199319554',
+ i18n: 'menu.usercenter',
+ hide: false,
+ sorted: '0',
+ shortcut: 0,
+ children: [
+ {
+ hideInBreadcrumb: 0,
+ reuse: 0,
+ isLea: false,
+ level: 2,
+ icon: 'anticon anticon-appstore',
+ link: '',
+ title: '供应商管理',
+ isLeaf: false,
+ parentId: '1420203657306615810',
+ i18n: 'menu.usercenter.supplier',
+ hide: false,
+ sorted: '0',
+ shortcut: 0,
+ children: [
+ {
+ hideInBreadcrumb: 0,
+ reuse: 0,
+ isLea: false,
+ level: 3,
+ icon: 'anticon anticon-dashboard',
+ link: '/usercenter/supplier/list',
+ title: '供应商列表',
+ isLeaf: false,
+ parentId: '1420203660372652033',
+ i18n: 'menu.usercenter.supplier.list',
+ hide: false,
+ sorted: '0',
+ shortcut: 0,
+ children: [
+ {
+ hideInBreadcrumb: 0,
+ reuse: 0,
+ isLea: true,
+ level: 4,
+ icon: 'anticon anticon-dashboard',
+ link: '/usercenter/supplier/list/save',
+ title: '独立店铺',
+ isLeaf: true,
+ parentId: '1420203666026573825',
+ i18n: 'menu.usercenter.supplier.list.save',
+ hide: false,
+ sorted: '0',
+ shortcut: 0,
+ appId: '2537B72DDA534361AE4931903F0BFEB3',
+ menuType: 0,
+ text: '独立店铺',
+ id: '1465976910655643649',
+ functionType: 0,
+ key: '1465976910655643649'
+ }
+ ],
+ appId: '2537B72DDA534361AE4931903F0BFEB3',
+ menuType: 0,
+ text: '供应商列表',
+ id: '1420203666026573825',
+ functionType: 0,
+ key: '1420203666026573825'
+ },
+ {
+ hideInBreadcrumb: 0,
+ reuse: 0,
+ isLea: true,
+ level: 3,
+ icon: 'anticon anticon-dashboard',
+ link: '/usercenter/supplier/list/view',
+ title: '供应商详情',
+ isLeaf: true,
+ parentId: '1420203660372652033',
+ i18n: 'menu.usercenter.supplier.detail',
+ hide: true,
+ sorted: '0',
+ shortcut: 0,
+ appId: '2537B72DDA534361AE4931903F0BFEB3',
+ menuType: 0,
+ text: '供应商详情',
+ id: '1420203666148208641',
+ functionType: 0,
+ key: '1420203666148208641'
+ },
+ {
+ hideInBreadcrumb: 0,
+ reuse: 0,
+ isLea: true,
+ level: 3,
+ icon: 'anticon anticon-dashboard',
+ link: '/usercenter/supplier/authority',
+ title: '供应商权限',
+ isLeaf: true,
+ parentId: '1420203660372652033',
+ i18n: 'menu.usercenter.supplier.authority',
+ hide: true,
+ sorted: '0',
+ shortcut: 0,
+ appId: '2537B72DDA534361AE4931903F0BFEB3',
+ menuType: 0,
+ text: '供应商权限',
+ id: '1420203666160791555',
+ functionType: 0,
+ key: '1420203666160791555'
+ },
+ {
+ hideInBreadcrumb: 0,
+ reuse: 0,
+ isLea: true,
+ level: 3,
+ icon: '',
+ link: '/usercenter/supplier/apply/view',
+ title: '入驻详情',
+ isLeaf: true,
+ parentId: '1420203660372652033',
+ i18n: 'menu.usercenter.supplier.apply.detail',
+ hide: true,
+ sorted: '0',
+ shortcut: 0,
+ appId: '2537B72DDA534361AE4931903F0BFEB3',
+ menuType: 0,
+ text: '入驻详情',
+ id: '1420203666160791556',
+ functionType: 0,
+ key: '1420203666160791556'
+ },
+ {
+ hideInBreadcrumb: 0,
+ reuse: 0,
+ isLea: true,
+ level: 3,
+ icon: 'anticon anticon-dashboard',
+ link: '/usercenter/supplier/apply',
+ title: '供应商入驻',
+ isLeaf: true,
+ parentId: '1420203660372652033',
+ i18n: 'menu.usercenter.supplier.apply',
+ hide: false,
+ sorted: '0',
+ shortcut: 0,
+ appId: '2537B72DDA534361AE4931903F0BFEB3',
+ menuType: 0,
+ text: '供应商入驻',
+ id: '1420203666454392835',
+ functionType: 0,
+ key: '1420203666454392835'
+ }
+ ],
+ appId: '2537B72DDA534361AE4931903F0BFEB3',
+ menuType: 0,
+ text: '供应商管理',
+ id: '1420203660372652033',
+ functionType: 0,
+ key: '1420203660372652033'
+ },
+ {
+ hideInBreadcrumb: 0,
+ reuse: 0,
+ isLea: true,
+ level: 2,
+ icon: 'anticon anticon-dashboard',
+ link: '/usercenter/user',
+ title: '用户查询',
+ isLeaf: true,
+ parentId: '1420203657306615810',
+ i18n: 'menu.usercenter.user',
+ hide: false,
+ sorted: '0',
+ shortcut: 0,
+ appId: '2537B72DDA534361AE4931903F0BFEB3',
+ menuType: 0,
+ text: '用户查询',
+ id: '1420203660372652034',
+ functionType: 0,
+ key: '1420203660372652034'
+ },
+ {
+ hideInBreadcrumb: 0,
+ reuse: 0,
+ isLea: false,
+ level: 2,
+ icon: 'anticon anticon-dashboard',
+ link: '',
+ title: '采购商管理',
+ isLeaf: false,
+ parentId: '1420203657306615810',
+ i18n: 'menu.usercenter.buyer',
+ hide: false,
+ sorted: '0',
+ shortcut: 0,
+ children: [
+ {
+ hideInBreadcrumb: 0,
+ reuse: 0,
+ isLea: true,
+ level: 3,
+ icon: '',
+ link: '/usercenter/buyer/authentication-view',
+ title: '认证详情',
+ isLeaf: true,
+ parentId: '1420203660582367233',
+ i18n: 'menu.usercenter.buyer.authentication.detail',
+ hide: true,
+ sorted: '0',
+ shortcut: 0,
+ appId: '2537B72DDA534361AE4931903F0BFEB3',
+ menuType: 0,
+ text: '认证详情',
+ id: '1420203666043351042',
+ functionType: 0,
+ key: '1420203666043351042'
+ },
+ {
+ hideInBreadcrumb: 0,
+ reuse: 0,
+ isLea: true,
+ level: 3,
+ icon: '',
+ link: '/usercenter/buyer/authentication',
+ title: '采购商认证',
+ isLeaf: true,
+ parentId: '1420203660582367233',
+ i18n: 'menu.usercenter.buyer.authentication',
+ hide: false,
+ sorted: '0',
+ shortcut: 0,
+ appId: '2537B72DDA534361AE4931903F0BFEB3',
+ menuType: 0,
+ text: '采购商认证',
+ id: '1420203666517307393',
+ functionType: 0,
+ key: '1420203666517307393'
+ },
+ {
+ hideInBreadcrumb: 0,
+ reuse: 0,
+ isLea: true,
+ level: 3,
+ icon: '',
+ link: '/usercenter/buyer/search',
+ title: '采购商查询',
+ isLeaf: true,
+ parentId: '1420203660582367233',
+ i18n: 'menu.usercenter.buyer.search',
+ hide: false,
+ sorted: '0',
+ shortcut: 0,
+ appId: '2537B72DDA534361AE4931903F0BFEB3',
+ menuType: 0,
+ text: '采购商查询',
+ id: '1420203666915766273',
+ functionType: 0,
+ key: '1420203666915766273'
+ }
+ ],
+ appId: '2537B72DDA534361AE4931903F0BFEB3',
+ menuType: 0,
+ text: '采购商管理',
+ id: '1420203660582367233',
+ functionType: 0,
+ key: '1420203660582367233'
+ }
+ ],
+ appId: '2537B72DDA534361AE4931903F0BFEB3',
+ menuType: 0,
+ text: '用户中心',
+ id: '1420203657306615810',
+ functionType: 0,
+ key: '1420203657306615810'
+ },
+ {
+ hideInBreadcrumb: 0,
+ reuse: 0,
+ isLea: false,
+ level: 1,
+ icon: 'anticon anticon-dashboard',
+ link: '',
+ title: '订单中心',
+ isLeaf: false,
+ parentId: '1420203656199319554',
+ i18n: 'menu.ctc',
+ hide: false,
+ sorted: '0',
+ shortcut: 0,
+ children: [
+ {
+ hideInBreadcrumb: 0,
+ reuse: 0,
+ isLea: true,
+ level: 2,
+ icon: '',
+ link: '/ctc/order/orderlist',
+ title: '商品订单',
+ isLeaf: true,
+ parentId: '1420203657315004417',
+ i18n: 'menu.ctc.order.orderlist',
+ hide: false,
+ sorted: '0',
+ shortcut: 0,
+ appId: '2537B72DDA534361AE4931903F0BFEB3',
+ menuType: 0,
+ text: '商品订单',
+ id: '1420203660645281793',
+ functionType: 0,
+ key: '1420203660645281793'
+ },
+ {
+ hideInBreadcrumb: 0,
+ reuse: 0,
+ isLea: true,
+ level: 2,
+ icon: '',
+ link: '/ctc/order/purpose-order',
+ title: '采购意向单',
+ isLeaf: true,
+ parentId: '1420203657315004417',
+ i18n: 'menu.ctc.order.purpose-order',
+ hide: false,
+ sorted: '0',
+ shortcut: 0,
+ appId: '2537B72DDA534361AE4931903F0BFEB3',
+ menuType: 0,
+ text: '采购意向单',
+ id: '1420203660649476097',
+ functionType: 0,
+ key: '1420203660649476097'
+ },
+ {
+ hideInBreadcrumb: 0,
+ reuse: 0,
+ isLea: true,
+ level: 2,
+ icon: '',
+ link: '/ctc/order/service-order',
+ title: '服务订单',
+ isLeaf: true,
+ parentId: '1420203657315004417',
+ i18n: 'menu.ctc.order.service-order',
+ hide: false,
+ sorted: '0',
+ shortcut: 0,
+ appId: '2537B72DDA534361AE4931903F0BFEB3',
+ menuType: 0,
+ text: '服务订单',
+ id: '1420203660691419138',
+ functionType: 0,
+ key: '1420203660691419138'
+ },
+ {
+ hideInBreadcrumb: 0,
+ reuse: 0,
+ isLea: true,
+ level: 2,
+ icon: '',
+ link: '/ctc/order/serviceorderdetail',
+ title: '服务订单详情',
+ isLeaf: true,
+ parentId: '1420203657315004417',
+ i18n: 'menu.ctc.order.serviceorderdetail',
+ hide: true,
+ sorted: '0',
+ shortcut: 0,
+ appId: '2537B72DDA534361AE4931903F0BFEB3',
+ menuType: 0,
+ text: '服务订单详情',
+ id: '1420203661047934978',
+ functionType: 0,
+ key: '1420203661047934978'
+ },
+ {
+ hideInBreadcrumb: 0,
+ reuse: 0,
+ isLea: true,
+ level: 2,
+ icon: '',
+ link: '/ctc/order/orderdetail',
+ title: '订单详情',
+ isLeaf: true,
+ parentId: '1420203657315004417',
+ i18n: 'menu.ctc.order.orderdetail',
+ hide: true,
+ sorted: '0',
+ shortcut: 0,
+ appId: '2537B72DDA534361AE4931903F0BFEB3',
+ menuType: 0,
+ text: '订单详情',
+ id: '1420203661047934979',
+ functionType: 0,
+ key: '1420203661047934979'
+ }
+ ],
+ appId: '2537B72DDA534361AE4931903F0BFEB3',
+ menuType: 0,
+ text: '订单中心',
+ id: '1420203657315004417',
+ functionType: 0,
+ key: '1420203657315004417'
+ },
+ {
+ hideInBreadcrumb: 0,
+ reuse: 0,
+ isLea: true,
+ level: 1,
+ icon: 'anticon anticon-appstore',
+ link: '/download/list',
+ title: '下载中心',
+ isLeaf: true,
+ parentId: '1420203656199319554',
+ i18n: 'menu.download',
+ hide: false,
+ sorted: '0',
+ shortcut: 0,
+ appId: '2537B72DDA534361AE4931903F0BFEB3',
+ menuType: 0,
+ text: '下载中心',
+ id: '1420203657327587329',
+ functionType: 0,
+ key: '1420203657327587329'
+ },
+ {
+ hideInBreadcrumb: 0,
+ reuse: 0,
+ isLea: false,
+ level: 1,
+ icon: 'anticon anticon-dashboard',
+ link: '',
+ title: '运营中心',
+ isLeaf: false,
+ parentId: '1420203656199319554',
+ i18n: 'menu.operationcenter',
+ hide: false,
+ sorted: '0',
+ shortcut: 0,
+ children: [
+ {
+ hideInBreadcrumb: 0,
+ reuse: 0,
+ isLea: false,
+ level: 2,
+ icon: 'anticon anticon-dashboard',
+ link: '',
+ title: '前台配置',
+ isLeaf: false,
+ parentId: '1420203657663131650',
+ i18n: 'menu.operationcenter.frontconfig',
+ hide: false,
+ sorted: '0',
+ shortcut: 0,
+ children: [
+ {
+ hideInBreadcrumb: 0,
+ reuse: 0,
+ isLea: true,
+ level: 3,
+ icon: '',
+ link: '/operationcenter/frontconfig/category',
+ title: '前台商品类目',
+ isLeaf: true,
+ parentId: '1420203661471559682',
+ i18n: 'menu.operationcenter.category',
+ hide: false,
+ sorted: '0',
+ shortcut: 0,
+ appId: '2537B72DDA534361AE4931903F0BFEB3',
+ menuType: 0,
+ text: '前台商品类目',
+ id: '1420203667372945409',
+ functionType: 0,
+ key: '1420203667372945409'
+ },
+ {
+ hideInBreadcrumb: 0,
+ reuse: 0,
+ isLea: true,
+ level: 3,
+ icon: '',
+ link: '/operationcenter/frontconfig/ad/list/editad',
+ title: '编辑广告位',
+ isLeaf: true,
+ parentId: '1420203661471559682',
+ i18n: 'menu.operationcenter.ad.editad',
+ hide: true,
+ sorted: '0',
+ shortcut: 0,
+ appId: '2537B72DDA534361AE4931903F0BFEB3',
+ menuType: 0,
+ text: '编辑广告位',
+ id: '1420203667758821377',
+ functionType: 0,
+ key: '1420203667758821377'
+ },
+ {
+ hideInBreadcrumb: 0,
+ reuse: 0,
+ isLea: true,
+ level: 3,
+ icon: '',
+ link: '/operationcenter/frontconfig/service',
+ title: '前台服务类目',
+ isLeaf: true,
+ parentId: '1420203661471559682',
+ i18n: 'menu.operationcenter.service',
+ hide: false,
+ sorted: '0',
+ shortcut: 0,
+ appId: '2537B72DDA534361AE4931903F0BFEB3',
+ menuType: 0,
+ text: '前台服务类目',
+ id: '1420203667767209986',
+ functionType: 0,
+ key: '1420203667767209986'
+ },
+ {
+ hideInBreadcrumb: 0,
+ reuse: 0,
+ isLea: true,
+ level: 3,
+ icon: 'icon-appstore',
+ link: '/operationcenter/frontconfig/ad/list',
+ title: '广告位管理',
+ isLeaf: true,
+ parentId: '1420203661471559682',
+ i18n: 'menu.operationcenter.ad',
+ hide: false,
+ sorted: '0',
+ shortcut: 0,
+ appId: '2537B72DDA534361AE4931903F0BFEB3',
+ menuType: 0,
+ text: '广告位管理',
+ id: '1420203667796570114',
+ functionType: 0,
+ key: '1420203667796570114'
+ },
+ {
+ hideInBreadcrumb: 0,
+ reuse: 0,
+ isLea: true,
+ level: 3,
+ icon: '',
+ link: '/operationcenter/frontconfig/ad/list/addad',
+ title: '新增广告位',
+ isLeaf: true,
+ parentId: '1420203661471559682',
+ i18n: 'menu.operationcenter.ad.addad',
+ hide: true,
+ sorted: '0',
+ shortcut: 0,
+ appId: '2537B72DDA534361AE4931903F0BFEB3',
+ menuType: 0,
+ text: '新增广告位',
+ id: '1420203667934982145',
+ functionType: 0,
+ key: '1420203667934982145'
+ },
+ {
+ hideInBreadcrumb: 0,
+ reuse: 0,
+ isLea: true,
+ level: 3,
+ icon: 'icon-appstore',
+ link: '/operationcenter/frontconfig/addata',
+ title: '宣传数据',
+ isLeaf: true,
+ parentId: '1420203661471559682',
+ i18n: 'menu.operationcenter.addata',
+ hide: false,
+ sorted: '0',
+ shortcut: 0,
+ appId: '2537B72DDA534361AE4931903F0BFEB3',
+ menuType: 0,
+ text: '宣传数据',
+ id: '1420203668182446082',
+ functionType: 0,
+ key: '1420203668182446082'
+ },
+ {
+ hideInBreadcrumb: 0,
+ reuse: 0,
+ isLea: true,
+ level: 3,
+ icon: 'icon-appstore',
+ link: '/operationcenter/frontconfig/supplier',
+ title: '推荐供应商',
+ isLeaf: true,
+ parentId: '1420203661471559682',
+ i18n: 'menu.operationcenter.supplier',
+ hide: false,
+ sorted: '0',
+ shortcut: 0,
+ appId: '2537B72DDA534361AE4931903F0BFEB3',
+ menuType: 0,
+ text: '推荐供应商',
+ id: '1420203668186640385',
+ functionType: 0,
+ key: '1420203668186640385'
+ },
+ {
+ hideInBreadcrumb: 0,
+ reuse: 0,
+ isLea: false,
+ level: 3,
+ icon: 'icon-appstore',
+ link: '/operationcenter/frontconfig/adimg/list',
+ title: '广告图管理',
+ isLeaf: false,
+ parentId: '1420203661471559682',
+ i18n: 'menu.operationcenter.adimg',
+ hide: false,
+ sorted: '0',
+ shortcut: 0,
+ children: [
+ {
+ hideInBreadcrumb: 0,
+ reuse: 0,
+ isLea: true,
+ level: 4,
+ icon: '',
+ link: '/operationcenter/frontconfig/adimg/list/addad',
+ title: '新增广告',
+ isLeaf: true,
+ parentId: '1420203668203417601',
+ i18n: 'menu.operationcenter.adimg.addad',
+ hide: true,
+ sorted: '0',
+ shortcut: 0,
+ appId: '2537B72DDA534361AE4931903F0BFEB3',
+ menuType: 0,
+ text: '新增广告',
+ id: '1420203671172984833',
+ functionType: 0,
+ key: '1420203671172984833'
+ },
+ {
+ hideInBreadcrumb: 0,
+ reuse: 0,
+ isLea: true,
+ level: 4,
+ icon: '',
+ link: '/operationcenter/frontconfig/adimg/list/editad',
+ title: '编辑广告',
+ isLeaf: true,
+ parentId: '1420203668203417601',
+ i18n: 'menu.operationcenter.adimg.editad',
+ hide: true,
+ sorted: '0',
+ shortcut: 0,
+ appId: '2537B72DDA534361AE4931903F0BFEB3',
+ menuType: 0,
+ text: '编辑广告',
+ id: '1420203671294619649',
+ functionType: 0,
+ key: '1420203671294619649'
+ },
+ {
+ hideInBreadcrumb: 0,
+ reuse: 0,
+ isLea: true,
+ level: 4,
+ icon: '',
+ link: '/operationcenter/frontconfig/adimg/list/view',
+ title: '广告图详情',
+ isLeaf: true,
+ parentId: '1420203668203417601',
+ i18n: 'menu.operationcenter.adimg.detail',
+ hide: true,
+ sorted: '0',
+ shortcut: 0,
+ appId: '2537B72DDA534361AE4931903F0BFEB3',
+ menuType: 0,
+ text: '广告图详情',
+ id: '1449064125224194049',
+ functionType: 0,
+ key: '1449064125224194049'
+ }
+ ],
+ appId: '2537B72DDA534361AE4931903F0BFEB3',
+ menuType: 0,
+ text: '广告图管理',
+ id: '1420203668203417601',
+ functionType: 0,
+ key: '1420203668203417601'
+ },
+ {
+ hideInBreadcrumb: 0,
+ reuse: 0,
+ isLea: false,
+ level: 3,
+ icon: 'icon-appstore',
+ link: '/operationcenter/frontconfig/net-config/list',
+ title: '服务网点配置',
+ isLeaf: false,
+ parentId: '1420203661471559682',
+ i18n: 'menu.operationcenter.service.net',
+ hide: false,
+ sorted: '0',
+ shortcut: 0,
+ children: [
+ {
+ hideInBreadcrumb: 0,
+ reuse: 0,
+ isLea: true,
+ level: 4,
+ icon: '',
+ link: '/operationcenter/frontconfig/net-config/list/addad',
+ title: '新增',
+ isLeaf: true,
+ parentId: '1449064113471754242',
+ i18n: 'menu.operationcenter.service.net.add',
+ hide: true,
+ sorted: '0',
+ shortcut: 0,
+ appId: '2537B72DDA534361AE4931903F0BFEB3',
+ menuType: 0,
+ text: '新增',
+ id: '1449064125211611138',
+ functionType: 0,
+ key: '1449064125211611138'
+ },
+ {
+ hideInBreadcrumb: 0,
+ reuse: 0,
+ isLea: true,
+ level: 4,
+ icon: '',
+ link: '/operationcenter/frontconfig/net-config/list/editad',
+ title: '编辑',
+ isLeaf: true,
+ parentId: '1449064113471754242',
+ i18n: 'menu.operationcenter.service.net.edit',
+ hide: true,
+ sorted: '0',
+ shortcut: 0,
+ appId: '2537B72DDA534361AE4931903F0BFEB3',
+ menuType: 0,
+ text: '编辑',
+ id: '1449064125215805441',
+ functionType: 0,
+ key: '1449064125215805441'
+ }
+ ],
+ appId: '2537B72DDA534361AE4931903F0BFEB3',
+ menuType: 0,
+ text: '服务网点配置',
+ id: '1449064113471754242',
+ functionType: 0,
+ key: '1449064113471754242'
+ },
+ {
+ hideInBreadcrumb: 0,
+ reuse: 0,
+ isLea: true,
+ level: 3,
+ icon: 'icon-appstore',
+ link: '/operationcenter/frontconfig/cooperate',
+ title: '合作页面配置',
+ isLeaf: true,
+ parentId: '1420203661471559682',
+ i18n: 'menu.operationcenter.cooperate',
+ hide: false,
+ sorted: '0',
+ shortcut: 0,
+ appId: '2537B72DDA534361AE4931903F0BFEB3',
+ menuType: 0,
+ text: '合作页面配置',
+ id: '1449064114306420737',
+ functionType: 0,
+ key: '1449064114306420737'
+ },
+ {
+ hideInBreadcrumb: 0,
+ reuse: 0,
+ isLea: true,
+ level: 3,
+ icon: '',
+ link: '/operationcenter/frontconfig/homepage',
+ title: '首页配置',
+ isLeaf: true,
+ parentId: '1420203661471559682',
+ i18n: 'menu.operationcenter.HonePage',
+ hide: false,
+ sorted: '0',
+ shortcut: 0,
+ appId: '2537B72DDA534361AE4931903F0BFEB3',
+ menuType: 0,
+ text: '首页配置',
+ id: '1449064114730045442',
+ functionType: 0,
+ key: '1449064114730045442'
+ },
+ {
+ hideInBreadcrumb: 0,
+ reuse: 0,
+ isLea: true,
+ level: 3,
+ icon: '',
+ link: '/operationcenter/frontconfig/cooperation',
+ title: '合作详情页',
+ isLeaf: true,
+ parentId: '1420203661471559682',
+ i18n: 'menu.operationcenter.cooperation.detail',
+ hide: false,
+ sorted: '0',
+ shortcut: 0,
+ appId: '2537B72DDA534361AE4931903F0BFEB3',
+ menuType: 0,
+ text: '合作详情页',
+ id: '1449064115136892929',
+ functionType: 0,
+ key: '1449064115136892929'
+ },
+ {
+ hideInBreadcrumb: 0,
+ reuse: 0,
+ isLea: true,
+ level: 3,
+ icon: '',
+ link: '/operationcenter/frontconfig/platform',
+ title: '平台介绍页面配置',
+ isLeaf: true,
+ parentId: '1420203661471559682',
+ i18n: 'menu.operationcenter.platform',
+ hide: false,
+ sorted: '0',
+ shortcut: 0,
+ appId: '2537B72DDA534361AE4931903F0BFEB3',
+ menuType: 0,
+ text: '平台介绍页面配置',
+ id: '1449064115581489153',
+ functionType: 0,
+ key: '1449064115581489153'
+ }
+ ],
+ appId: '2537B72DDA534361AE4931903F0BFEB3',
+ menuType: 0,
+ text: '前台配置',
+ id: '1420203661471559682',
+ functionType: 0,
+ key: '1420203661471559682'
+ },
+ {
+ hideInBreadcrumb: 0,
+ reuse: 0,
+ isLea: false,
+ level: 2,
+ icon: '',
+ link: '',
+ title: '合伙人管理',
+ isLeaf: false,
+ parentId: '1420203657663131650',
+ i18n: 'menu.oc.partners',
+ hide: false,
+ sorted: '0',
+ shortcut: 0,
+ children: [
+ {
+ hideInBreadcrumb: 0,
+ reuse: 0,
+ isLea: true,
+ level: 3,
+ icon: '',
+ link: '/oc/partners/invite',
+ title: '合伙人邀请统计',
+ isLeaf: true,
+ parentId: '1420203661479948290',
+ i18n: 'menu.oc.partners.invite',
+ hide: false,
+ sorted: '0',
+ shortcut: 0,
+ appId: '2537B72DDA534361AE4931903F0BFEB3',
+ menuType: 0,
+ text: '合伙人邀请统计',
+ id: '1420203668597682177',
+ functionType: 0,
+ key: '1420203668597682177'
+ },
+ {
+ hideInBreadcrumb: 0,
+ reuse: 0,
+ isLea: true,
+ level: 3,
+ icon: '',
+ link: '/oc/partners/list',
+ title: '合伙人申请管理',
+ isLeaf: true,
+ parentId: '1420203661479948290',
+ i18n: 'menu.oc.partners.list',
+ hide: false,
+ sorted: '0',
+ shortcut: 0,
+ appId: '2537B72DDA534361AE4931903F0BFEB3',
+ menuType: 0,
+ text: '合伙人申请管理',
+ id: '1420203668643819522',
+ functionType: 0,
+ key: '1420203668643819522'
+ }
+ ],
+ appId: '2537B72DDA534361AE4931903F0BFEB3',
+ menuType: 0,
+ text: '合伙人管理',
+ id: '1420203661479948290',
+ functionType: 0,
+ key: '1420203661479948290'
+ },
+ {
+ hideInBreadcrumb: 0,
+ reuse: 0,
+ isLea: false,
+ level: 2,
+ icon: '',
+ link: '',
+ title: '资讯管理',
+ isLeaf: false,
+ parentId: '1420203657663131650',
+ i18n: 'menu.oc.info-manage',
+ hide: false,
+ sorted: '0',
+ shortcut: 0,
+ children: [
+ {
+ hideInBreadcrumb: 0,
+ reuse: 0,
+ isLea: true,
+ level: 3,
+ icon: '',
+ link: '/oc/info-manage/add-info',
+ title: '添加资讯',
+ isLeaf: true,
+ parentId: '1420203661903572994',
+ i18n: 'menu.oc.info-manage.add-info',
+ hide: true,
+ sorted: '0',
+ shortcut: 0,
+ appId: '2537B72DDA534361AE4931903F0BFEB3',
+ menuType: 0,
+ text: '添加资讯',
+ id: '1420203669696589826',
+ functionType: 0,
+ key: '1420203669696589826'
+ },
+ {
+ hideInBreadcrumb: 0,
+ reuse: 0,
+ isLea: true,
+ level: 3,
+ icon: '',
+ link: '/oc/info-manage/info-details',
+ title: '查看资讯',
+ isLeaf: true,
+ parentId: '1420203661903572994',
+ i18n: 'menu.oc.info-manage.info-details',
+ hide: true,
+ sorted: '0',
+ shortcut: 0,
+ appId: '2537B72DDA534361AE4931903F0BFEB3',
+ menuType: 0,
+ text: '查看资讯',
+ id: '1420203669872750594',
+ functionType: 0,
+ key: '1420203669872750594'
+ },
+ {
+ hideInBreadcrumb: 0,
+ reuse: 0,
+ isLea: true,
+ level: 3,
+ icon: '',
+ link: '/oc/info-manage/info-list',
+ title: '资讯列表',
+ isLeaf: true,
+ parentId: '1420203661903572994',
+ i18n: 'menu.oc.info-manage.info-list',
+ hide: false,
+ sorted: '0',
+ shortcut: 0,
+ appId: '2537B72DDA534361AE4931903F0BFEB3',
+ menuType: 0,
+ text: '资讯列表',
+ id: '1420203669885333505',
+ functionType: 0,
+ key: '1420203669885333505'
+ },
+ {
+ hideInBreadcrumb: 0,
+ reuse: 0,
+ isLea: true,
+ level: 3,
+ icon: '',
+ link: '/oc/info-manage/edit-info',
+ title: '编辑资讯',
+ isLeaf: true,
+ parentId: '1420203661903572994',
+ i18n: 'menu.oc.info-manage.edit-info',
+ hide: true,
+ sorted: '0',
+ shortcut: 0,
+ appId: '2537B72DDA534361AE4931903F0BFEB3',
+ menuType: 0,
+ text: '编辑资讯',
+ id: '1420203669910499330',
+ functionType: 0,
+ key: '1420203669910499330'
+ }
+ ],
+ appId: '2537B72DDA534361AE4931903F0BFEB3',
+ menuType: 0,
+ text: '资讯管理',
+ id: '1420203661903572994',
+ functionType: 0,
+ key: '1420203661903572994'
+ },
+ {
+ hideInBreadcrumb: 0,
+ reuse: 0,
+ isLea: false,
+ level: 2,
+ icon: 'icon-appstore',
+ link: '',
+ title: '业务资讯管理',
+ isLeaf: false,
+ parentId: '1420203657663131650',
+ i18n: 'menu.operationcenter.business',
+ hide: false,
+ sorted: '0',
+ shortcut: 0,
+ children: [
+ {
+ hideInBreadcrumb: 0,
+ reuse: 0,
+ isLea: false,
+ level: 3,
+ icon: '',
+ link: '/operationcenter/business/audit',
+ title: '业务资讯审核',
+ isLeaf: false,
+ parentId: '1420203661907767298',
+ i18n: 'menu.operationcenter.business.audit',
+ hide: false,
+ sorted: '0',
+ shortcut: 0,
+ children: [
+ {
+ hideInBreadcrumb: 0,
+ reuse: 0,
+ isLea: true,
+ level: 4,
+ icon: '',
+ link: '/operationcenter/business/list/detail',
+ title: '业务资讯详情',
+ isLeaf: true,
+ parentId: '1420203669432348674',
+ i18n: 'menu.operationcenter.business.lsit.detail',
+ hide: true,
+ sorted: '0',
+ shortcut: 0,
+ appId: '2537B72DDA534361AE4931903F0BFEB3',
+ menuType: 0,
+ text: '业务资讯详情',
+ id: '1420203671445614594',
+ functionType: 0,
+ key: '1420203671445614594'
+ },
+ {
+ hideInBreadcrumb: 0,
+ reuse: 0,
+ isLea: true,
+ level: 4,
+ icon: '',
+ link: '/operationcenter/business/list/detail',
+ title: '业务资讯详情',
+ isLeaf: true,
+ parentId: '1420203669432348674',
+ i18n: 'menu.operationcenter.business.lsit.detail1',
+ hide: true,
+ sorted: '0',
+ shortcut: 0,
+ appId: '2537B72DDA534361AE4931903F0BFEB3',
+ menuType: 0,
+ text: '业务资讯详情',
+ id: '1449064125215805442',
+ functionType: 0,
+ key: '1449064125215805442'
+ }
+ ],
+ appId: '2537B72DDA534361AE4931903F0BFEB3',
+ menuType: 0,
+ text: '业务资讯审核',
+ id: '1420203669432348674',
+ functionType: 0,
+ key: '1420203669432348674'
+ },
+ {
+ hideInBreadcrumb: 0,
+ reuse: 0,
+ isLea: false,
+ level: 3,
+ icon: '',
+ link: '/operationcenter/business/list',
+ title: '业务资讯列表',
+ isLeaf: false,
+ parentId: '1420203661907767298',
+ i18n: 'menu.operationcenter.business.list',
+ hide: false,
+ sorted: '0',
+ shortcut: 0,
+ children: [
+ {
+ hideInBreadcrumb: 0,
+ reuse: 0,
+ isLea: true,
+ level: 4,
+ icon: '',
+ link: '/operationcenter/business/list/detail',
+ title: '业务资讯详情',
+ isLeaf: true,
+ parentId: '1420203669621092353',
+ i18n: 'menu.operationcenter.business.lsit.detail',
+ hide: true,
+ sorted: '0',
+ shortcut: 0,
+ appId: '2537B72DDA534361AE4931903F0BFEB3',
+ menuType: 0,
+ text: '业务资讯详情',
+ id: '1420203671495946241',
+ functionType: 0,
+ key: '1420203671495946241'
+ }
+ ],
+ appId: '2537B72DDA534361AE4931903F0BFEB3',
+ menuType: 0,
+ text: '业务资讯列表',
+ id: '1420203669621092353',
+ functionType: 0,
+ key: '1420203669621092353'
+ },
+ {
+ hideInBreadcrumb: 0,
+ reuse: 0,
+ isLea: true,
+ level: 3,
+ icon: '',
+ link: '/operationcenter/business/deal',
+ title: '业务资讯处理',
+ isLeaf: true,
+ parentId: '1420203661907767298',
+ i18n: 'menu.operationcenter.business.deal',
+ hide: false,
+ sorted: '0',
+ shortcut: 0,
+ appId: '2537B72DDA534361AE4931903F0BFEB3',
+ menuType: 0,
+ text: '业务资讯处理',
+ id: '1420203669704978433',
+ functionType: 0,
+ key: '1420203669704978433'
+ }
+ ],
+ appId: '2537B72DDA534361AE4931903F0BFEB3',
+ menuType: 0,
+ text: '业务资讯管理',
+ id: '1420203661907767298',
+ functionType: 0,
+ key: '1420203661907767298'
+ },
+ {
+ hideInBreadcrumb: 0,
+ reuse: 0,
+ isLea: false,
+ level: 2,
+ icon: '',
+ link: '',
+ title: '更多管理',
+ isLeaf: false,
+ parentId: '1420203657663131650',
+ i18n: 'menu.ope.center.more',
+ hide: false,
+ sorted: '0',
+ shortcut: 0,
+ children: [
+ {
+ hideInBreadcrumb: 0,
+ reuse: 0,
+ isLea: true,
+ level: 3,
+ icon: '',
+ link: '/oc/announcements/list',
+ title: '公告管理',
+ isLeaf: true,
+ parentId: '1420203662058762242',
+ i18n: 'menu.ope.center.notice',
+ hide: false,
+ sorted: '0',
+ shortcut: 0,
+ appId: '2537B72DDA534361AE4931903F0BFEB3',
+ menuType: 0,
+ text: '公告管理',
+ id: '1420203670275403777',
+ functionType: 0,
+ key: '1420203670275403777'
+ },
+ {
+ hideInBreadcrumb: 0,
+ reuse: 0,
+ isLea: true,
+ level: 3,
+ icon: '',
+ link: '/oc/hc/content-conf-index',
+ title: '帮助中心',
+ isLeaf: true,
+ parentId: '1420203662058762242',
+ i18n: 'menu.ope.center.help',
+ hide: false,
+ sorted: '0',
+ shortcut: 0,
+ appId: '2537B72DDA534361AE4931903F0BFEB3',
+ menuType: 0,
+ text: '帮助中心',
+ id: '1420203670279598081',
+ functionType: 0,
+ key: '1420203670279598081'
+ },
+ {
+ hideInBreadcrumb: 0,
+ reuse: 0,
+ isLea: true,
+ level: 3,
+ icon: '',
+ link: '/oc/feekback/list',
+ title: '意见反馈',
+ isLeaf: true,
+ parentId: '1420203662058762242',
+ i18n: 'menu.ope.center.opinion',
+ hide: false,
+ sorted: '0',
+ shortcut: 0,
+ appId: '2537B72DDA534361AE4931903F0BFEB3',
+ menuType: 0,
+ text: '意见反馈',
+ id: '1420203670434787330',
+ functionType: 0,
+ key: '1420203670434787330'
+ },
+ {
+ hideInBreadcrumb: 0,
+ reuse: 0,
+ isLea: true,
+ level: 3,
+ icon: '',
+ link: '/oc/feekback-type/list',
+ title: '反馈类型',
+ isLeaf: true,
+ parentId: '1420203662058762242',
+ i18n: 'menu.ope.center.back.type',
+ hide: false,
+ sorted: '0',
+ shortcut: 0,
+ appId: '2537B72DDA534361AE4931903F0BFEB3',
+ menuType: 0,
+ text: '反馈类型',
+ id: '1420203670602559489',
+ functionType: 0,
+ key: '1420203670602559489'
+ }
+ ],
+ appId: '2537B72DDA534361AE4931903F0BFEB3',
+ menuType: 0,
+ text: '更多管理',
+ id: '1420203662058762242',
+ functionType: 0,
+ key: '1420203662058762242'
+ },
+ {
+ hideInBreadcrumb: 0,
+ reuse: 0,
+ isLea: false,
+ level: 2,
+ icon: '',
+ link: '',
+ title: '项目管理',
+ isLeaf: false,
+ parentId: '1420203657663131650',
+ i18n: 'menu.operationcenter.object.manage',
+ hide: false,
+ sorted: '0',
+ shortcut: 0,
+ children: [
+ {
+ hideInBreadcrumb: 0,
+ reuse: 0,
+ isLea: true,
+ level: 3,
+ icon: '',
+ link: '/ctc/order/object',
+ title: '项目列表',
+ isLeaf: true,
+ parentId: '1449064098389037058',
+ i18n: 'menu.operationcenter.object.list',
+ hide: false,
+ sorted: '0',
+ shortcut: 0,
+ appId: '2537B72DDA534361AE4931903F0BFEB3',
+ menuType: 0,
+ text: '项目列表',
+ id: '1449064112561590274',
+ functionType: 0,
+ key: '1449064112561590274'
+ }
+ ],
+ appId: '2537B72DDA534361AE4931903F0BFEB3',
+ menuType: 0,
+ text: '项目管理',
+ id: '1449064098389037058',
+ functionType: 0,
+ key: '1449064098389037058'
+ },
+ {
+ hideInBreadcrumb: 0,
+ reuse: 0,
+ isLea: false,
+ level: 2,
+ icon: '',
+ link: '',
+ title: '项目管理',
+ isLeaf: false,
+ parentId: '1420203657663131650',
+ i18n: 'menu.operationcenter.object.manage1',
+ hide: false,
+ sorted: '0',
+ shortcut: 0,
+ children: [
+ {
+ hideInBreadcrumb: 0,
+ reuse: 0,
+ isLea: true,
+ level: 3,
+ icon: '',
+ link: '/ctc/order/object',
+ title: '项目列表',
+ isLeaf: true,
+ parentId: '1449078391142617090',
+ i18n: 'menu.operationcenter.object.list1',
+ hide: false,
+ sorted: '0',
+ shortcut: 0,
+ appId: '2537B72DDA534361AE4931903F0BFEB3',
+ menuType: 0,
+ text: '项目列表',
+ id: '1449078669807980545',
+ functionType: 0,
+ key: '1449078669807980545'
+ }
+ ],
+ appId: '2537B72DDA534361AE4931903F0BFEB3',
+ menuType: 0,
+ text: '项目管理',
+ id: '1449078391142617090',
+ functionType: 0,
+ key: '1449078391142617090'
+ }
+ ],
+ appId: '2537B72DDA534361AE4931903F0BFEB3',
+ menuType: 0,
+ text: '运营中心',
+ id: '1420203657663131650',
+ functionType: 0,
+ key: '1420203657663131650'
+ }
+ ],
+ appId: '2537B72DDA534361AE4931903F0BFEB3',
+ menuType: 0,
+ text: '主导航',
+ id: '1420203656199319554',
+ functionType: 0,
+ key: '1420203656199319554'
+ }
+];
diff --git a/src/app/routes/sys-setting/components/role-management/menu/menu.component.html b/src/app/routes/sys-setting/components/role-management/menu/menu.component.html
new file mode 100644
index 00000000..5ddab19d
--- /dev/null
+++ b/src/app/routes/sys-setting/components/role-management/menu/menu.component.html
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0" se-container [labelWidth]="100">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 此应用功能模块无数据权限限制,如需添加,请联系系统管理员。
+
+
+
+
+
\ No newline at end of file
diff --git a/src/app/routes/sys-setting/components/role-management/menu/menu.component.ts b/src/app/routes/sys-setting/components/role-management/menu/menu.component.ts
new file mode 100644
index 00000000..4cff236d
--- /dev/null
+++ b/src/app/routes/sys-setting/components/role-management/menu/menu.component.ts
@@ -0,0 +1,361 @@
+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;
+ }
+ });
+ });
+ });
+ }
+ }
+ });
+ }
+}
diff --git a/src/app/routes/sys-setting/components/role-management/menu/menu.less b/src/app/routes/sys-setting/components/role-management/menu/menu.less
new file mode 100644
index 00000000..4e400d45
--- /dev/null
+++ b/src/app/routes/sys-setting/components/role-management/menu/menu.less
@@ -0,0 +1,202 @@
+: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;
+ }
+}
\ No newline at end of file
diff --git a/src/app/routes/sys-setting/components/role-management/role-management.component.ts b/src/app/routes/sys-setting/components/role-management/role-management.component.ts
index c0ba32d1..15468bd2 100644
--- a/src/app/routes/sys-setting/components/role-management/role-management.component.ts
+++ b/src/app/routes/sys-setting/components/role-management/role-management.component.ts
@@ -3,6 +3,7 @@ import { STComponent, STColumn, STChange } from '@delon/abc/st';
import { SFComponent, SFSchema } from '@delon/form';
import { NzModalService } from 'ng-zorro-antd/modal';
import { SystemService } from '../../services/system.service';
+import { SettingRoleEditComponent } from './edit/edit.component';
@Component({
selector: 'app-role-management',
@@ -40,12 +41,12 @@ export class RoleManagementComponent implements OnInit {
title: '操作',
buttons: [
{
- text: '编辑'
- // click: item => this.staffAction(item)
+ text: '编辑',
+ click: item => this.roleAction(item)
},
{
- text: '删除'
- // click: item => this.action(3)
+ text: '删除',
+ click: item => this.deleteAction(item)
}
]
}
@@ -70,7 +71,26 @@ export class RoleManagementComponent implements OnInit {
}
}
- roleAction(item?: any) {}
+ roleAction(item?: any) {
+ const modal = this.nzModalService.create({
+ nzContent: SettingRoleEditComponent,
+ nzWidth: 900,
+ nzComponentParams: item ? { i: { ...item } } : { i: { id: 0 } },
+ nzFooter: null
+ });
+ modal.afterClose.subscribe(res => {
+ this.st.load();
+ });
+ }
+
+ deleteAction(item?: any) {
+ this.nzModalService.error({
+ nzTitle: '确认删除?',
+ nzClosable: false,
+ nzCancelText: '取消',
+ nzOnOk: () => {}
+ });
+ }
/**
* 重置表单
diff --git a/src/app/routes/sys-setting/services/system.service.ts b/src/app/routes/sys-setting/services/system.service.ts
index b6bbf64e..85b356d3 100644
--- a/src/app/routes/sys-setting/services/system.service.ts
+++ b/src/app/routes/sys-setting/services/system.service.ts
@@ -5,6 +5,14 @@ import { BaseService } from 'src/app/shared/services';
providedIn: 'root'
})
export class SystemService extends BaseService {
+ $api_getAllFunctionInfoByAppId: string = '';
+ $api_getRoleTemplateInfo: string = '';
+ $api_getFunctionButtonInfo: string = '';
+ $api_getFunctionDataInfo: string = '';
+ $api_getAppList: string = '';
+ $api_getRoleTemplateListByAppId: string = '';
+ $api_getRoleInfo: string = '';
+ $api_updateRoleInfo: string = '';
constructor(public injector: Injector) {
super(injector);
}
diff --git a/src/app/routes/sys-setting/sys-setting-routing.module.ts b/src/app/routes/sys-setting/sys-setting-routing.module.ts
index 8d7b72f3..4cb9395f 100644
--- a/src/app/routes/sys-setting/sys-setting-routing.module.ts
+++ b/src/app/routes/sys-setting/sys-setting-routing.module.ts
@@ -5,6 +5,7 @@ import { AuditReasonConfigComponent } from './components/audit-reason-config/aud
import { BasicConfigComponent } from './components/basic-config/basic-config.component';
import { BasicSettingComponent } from './components/basic-setting/basic-setting.component';
import { CartConfigComponent } from './components/cart-config/cart-config.component';
+import { GoodsNameConfigComponent } from './components/goods-name-config/goods-name-config.component';
import { RoleManagementComponent } from './components/role-management/role-management.component';
import { StaffManagementComponent } from './components/staff-management/staff-management.component';
import { SystemConfigComponent } from './components/system-config/system-config.component';
@@ -24,6 +25,7 @@ const routes: Routes = [
{ path: 'cart-config', component: CartConfigComponent },
{ path: 'agreement-config', component: AgreementConfigComponentsBaseComponent },
{ path: 'system-config', component: SystemConfigComponent },
+ { path: 'goods-name-config', component: GoodsNameConfigComponent },
];
@NgModule({
diff --git a/src/app/routes/sys-setting/sys-setting.module.ts b/src/app/routes/sys-setting/sys-setting.module.ts
index 91cc11f9..dd2b9727 100644
--- a/src/app/routes/sys-setting/sys-setting.module.ts
+++ b/src/app/routes/sys-setting/sys-setting.module.ts
@@ -18,6 +18,9 @@ import { CartConfigActionModalComponent } from './components/cart-config/cart-co
import { AgreementConfigComponentsBaseComponent } from './components/agreement-config/agreement-config.component';
import { BasicSettingComponent } from './components/basic-setting/basic-setting.component';
import { SystemConfigComponent } from './components/system-config/system-config.component';
+import { SettingRoleEditComponent } from './components/role-management/edit/edit.component';
+import { SettingMenuComponent } from './components/role-management/menu/menu.component';
+import { GoodsNameConfigComponent } from './components/goods-name-config/goods-name-config.component';
const COMPONENTS = [
StaffManagementComponent,
@@ -30,14 +33,17 @@ const COMPONENTS = [
CartConfigComponent,
AgreementConfigComponentsBaseComponent,
BasicSettingComponent,
- SystemConfigComponent
+ SystemConfigComponent,
+ GoodsNameConfigComponent
];
const NOTROUTECOMPONENTS = [
BuyerTranspowerComponent,
SystemStaffStaffModalComponent,
BasicConfigActionModalComponent,
AuditResonConfigActionModalComponent,
- CartConfigActionModalComponent
+ CartConfigActionModalComponent,
+ SettingRoleEditComponent,
+ SettingMenuComponent
];
@NgModule({
declarations: [...COMPONENTS, ...NOTROUTECOMPONENTS],
diff --git a/src/app/shared/shared-zorro.module.ts b/src/app/shared/shared-zorro.module.ts
index c8f9af92..53d7c243 100644
--- a/src/app/shared/shared-zorro.module.ts
+++ b/src/app/shared/shared-zorro.module.ts
@@ -7,7 +7,7 @@ import { NzToolTipModule } from 'ng-zorro-antd/tooltip';
/*
* @Author: your name
* @Date: 2021-11-29 10:20:33
- * @LastEditTime: 2021-12-03 14:09:38
+ * @LastEditTime: 2021-12-03 15:23:42
* @LastEditors: Please set LastEditors
* @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
* @FilePath: \tms-obc-web\src\app\shared\shared-zorro.module.ts
@@ -37,6 +37,7 @@ import { NzRadioModule } from 'ng-zorro-antd/radio';
import { NzTimePickerModule } from 'ng-zorro-antd/time-picker';
import { NzCheckboxModule } from 'ng-zorro-antd/checkbox';
import { QRModule } from '@delon/abc/qr';
+import { NzEmptyModule } from 'ng-zorro-antd/empty';
export const SHARED_ZORRO_MODULES = [
NzButtonModule,
NzGridModule,
@@ -67,5 +68,6 @@ export const SHARED_ZORRO_MODULES = [
NzCheckboxModule,
NzInputNumberModule,
QRModule,
- NzPopoverModule
+ NzPopoverModule,
+ NzEmptyModule
];
diff --git a/src/assets/mocks/menu-data.json b/src/assets/mocks/menu-data.json
index b63c399a..17db0d9f 100644
--- a/src/assets/mocks/menu-data.json
+++ b/src/assets/mocks/menu-data.json
@@ -192,7 +192,7 @@
},
{
"text": "货物名称配置",
- "link": "/demo/alain"
+ "link": "/system/goods-name-config"
}
]
}
diff --git a/src/style-icons-auto.ts b/src/style-icons-auto.ts
index a07c78c9..a88a9cdd 100644
--- a/src/style-icons-auto.ts
+++ b/src/style-icons-auto.ts
@@ -52,7 +52,8 @@ import {
UsbOutline,
UserOutline,
WeiboCircleOutline,
- EyeInvisibleOutline
+ EyeInvisibleOutline,
+ MoreOutline
} from '@ant-design/icons-angular/icons';
export const ICONS_AUTO = [
@@ -105,4 +106,5 @@ export const ICONS_AUTO = [
UserOutline,
WeiboCircleOutline,
EyeInvisibleOutline,
+ MoreOutline
];