UNPKG

@ecip/permission

Version:
201 lines 19.4 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { Component } from '@angular/core'; import { NzModalRef, NzMessageService } from 'ng-zorro-antd'; import { _HttpClient } from '@delon/theme'; import { FormBuilder, Validators } from "@angular/forms"; import { Observable } from 'rxjs'; import { UserService, AppsService, RoleService } from "@ecip/service"; import { CacheService } from "@delon/cache"; export class PermissionRoleEditComponent { /** * @param {?} modal * @param {?} msgSrv * @param {?} appsService * @param {?} roleService * @param {?} userService * @param {?} http * @param {?} fb * @param {?} cacheService */ constructor(modal, msgSrv, appsService, roleService, userService, http, fb, cacheService) { this.modal = modal; this.msgSrv = msgSrv; this.appsService = appsService; this.roleService = roleService; this.userService = userService; this.http = http; this.fb = fb; this.cacheService = cacheService; this.record = {}; this.optionList = []; this.loading = false; this.stateList = this.cacheService.get(`api/dict/type/enableState`); this.codeAsyncValidator = (/** * @param {?} control * @return {?} */ (control) => Observable.create((/** * @param {?} observer * @return {?} */ (observer) => { if (!control.value) { observer.next(null); observer.complete(); return; } this.roleService.checkCode({ code: control.value, id: this.record.id }).subscribe((/** * @param {?} res * @return {?} */ (res) => { if (res.valid === true) { observer.next(null); } else { observer.next({ error: true, duplicated: true }); } observer.complete(); })); }))); } /** * @return {?} */ ngOnInit() { this.form = this.fb.group({ appId: [this.appId, []], roleName: [null, []], code: [null, [Validators.required], [this.codeAsyncValidator]], status: [1, [Validators.required]], sortNum: [0, [Validators.required]], remark: [null, []], createTime: [null, []] }); this.loading = true; /*this.appsService.getList().subscribe(appList => { this.optionList = appList; });*/ if (!this.record.id) { return; } this.roleService.getById(this.record.id).subscribe((/** * @param {?} res * @return {?} */ res => { this.form.patchValue(res); this.i = res; })); } /** * @param {?} c1 * @param {?} c2 * @return {?} */ compareNumStr(c1, c2) { return c1 == c2; } /** * @return {?} */ submit() { for (const i in this.form.controls) { this.form.controls[i].markAsDirty(); this.form.controls[i].updateValueAndValidity(); } if (this.form.invalid) return; if (!this.record.id) { //新增 this.roleService.post(this.form.value).subscribe((/** * @param {?} res * @return {?} */ res => { this.msgSrv.success('保存成功'); this.modal.close(true); })); return; } //修改 this.roleService.put(this.record.id, this.form.value).subscribe((/** * @param {?} res * @return {?} */ res => { this.msgSrv.success('保存成功'); this.modal.close(true); })); } /** * @return {?} */ close() { this.modal.destroy(); } } PermissionRoleEditComponent.decorators = [ { type: Component, args: [{ selector: 'app-permission-role-edit', template: "<div class=\"modal-header\">\r\n <div *ngIf=\"!record.id\" class=\"modal-title\">\u65B0\u589E\u4FE1\u606F</div>\r\n <div *ngIf=\"record.id\" class=\"modal-title\">\u7F16\u8F91 {{ record.account }} \u4FE1\u606F</div>\r\n</div>\r\n<nz-spin *ngIf=\"!i && record.id\" class=\"modal-spin\"></nz-spin>\r\n<form *ngIf=\"!record.id || record.id && i\" nz-form [formGroup]=\"form\" (ngSubmit)=\"submit()\">\r\n <!--<nz-form-item>\r\n <nz-form-label nzXs=\"24\" nzSm=\"7\" nzRequired nzFor=\"appId\">\u7CFB\u7EDF</nz-form-label>\r\n <nz-form-control nzXs=\"24\" nzSm=\"12\" nzMd=\"10\" nzHasFeedback>\r\n <nz-select [compareWith]=\"compareNumStr\" nzShowSearch nzAllowClear formControlName=\"appId\">\r\n <nz-option *ngFor=\"let option of optionList\" [nzLabel]=\"option.appName\"\r\n [nzValue]=\"option.appId\"></nz-option>\r\n </nz-select>\r\n </nz-form-control>\r\n </nz-form-item>-->\r\n\r\n <nz-form-item>\r\n <nz-form-label nzXs=\"24\" nzSm=\"7\" nzRequired nzFor=\"roleName\">\u89D2\u8272\u540D\u79F0</nz-form-label>\r\n <nz-form-control nzXs=\"24\" nzSm=\"12\" nzMd=\"10\" nzHasFeedback>\r\n <input nz-input formControlName=\"roleName\">\r\n <nz-form-explain *ngIf=\"form.get('roleName').dirty && form.get('roleName').errors\">\u8BF7\u8F93\u5165\u89D2\u8272\u540D\u79F0</nz-form-explain>\r\n </nz-form-control>\r\n </nz-form-item>\r\n\r\n <nz-form-item>\r\n <nz-form-label nzXs=\"24\" nzSm=\"7\" nzRequired nzFor=\"code\">\u7F16\u7801</nz-form-label>\r\n <nz-form-control nzXs=\"24\" nzSm=\"12\" nzMd=\"10\" nzHasFeedback>\r\n <input nz-input formControlName=\"code\">\r\n <nz-form-explain *ngIf=\"form.get('code').dirty && form.get('code').errors || form.get('code').pending \">\r\n <ng-container *ngIf=\"form.get('code').hasError('required')\">\r\n \u8BF7\u8F93\u5165\u7F16\u7801\r\n </ng-container>\r\n <ng-container *ngIf=\"form.get('code').hasError('duplicated')\">\r\n \u7F16\u7801\u5DF2\u5B58\u5728\r\n </ng-container>\r\n <ng-container *ngIf=\"form.get('code').pending\">\r\n \u6821\u9A8C\u4E2D...\r\n </ng-container>\r\n </nz-form-explain>\r\n </nz-form-control>\r\n </nz-form-item>\r\n\r\n <nz-form-item>\r\n <nz-form-label nzXs=\"24\" nzSm=\"7\" nzRequired nzFor=\"status\">\u542F\u7528\u72B6\u6001</nz-form-label>\r\n <nz-form-control nzXs=\"24\" nzSm=\"12\" nzMd=\"10\">\r\n <nz-radio-group formControlName=\"status\">\r\n <!--<label nz-radio [nzValue]=\"1\">\u542F\u7528</label>-->\r\n <!--<label nz-radio [nzValue]=\"0\">\u672A\u542F\u7528</label>-->\r\n <label nz-radio *ngFor=\"let state of stateList | async\" [nzValue]=\"state.value\">{{state.label}}</label>\r\n </nz-radio-group>\r\n <nz-form-explain *ngIf=\"form.get('status').dirty && form.get('status').errors\">\r\n \u8BF7\u9009\u62E9\u542F\u7528\u72B6\u6001\r\n </nz-form-explain>\r\n </nz-form-control>\r\n </nz-form-item>\r\n\r\n <nz-form-item>\r\n <nz-form-label nzXs=\"24\" nzSm=\"7\" nzRequired nzFor=\"sortNum\">\u6392\u5E8F</nz-form-label>\r\n <nz-form-control nzXs=\"24\" nzSm=\"12\" nzMd=\"10\" nzHasFeedback>\r\n <input nz-input formControlName=\"sortNum\">\r\n <nz-form-explain *ngIf=\"form.get('sortNum').dirty && form.get('sortNum').errors\">\r\n \u8BF7\u8F93\u5165\u6392\u5E8F\r\n </nz-form-explain>\r\n </nz-form-control>\r\n </nz-form-item>\r\n\r\n <div class=\"modal-footer\">\r\n <button nz-button type=\"button\" (click)=\"close()\">\u5173\u95ED</button>\r\n <button nz-button type=\"submit\" [disabled]=\"!form.valid\" nzType=\"primary\" [nzLoading]=\"http.loading\">\u4FDD\u5B58</button>\r\n </div>\r\n</form>\r\n" }] } ]; /** @nocollapse */ PermissionRoleEditComponent.ctorParameters = () => [ { type: NzModalRef }, { type: NzMessageService }, { type: AppsService }, { type: RoleService }, { type: UserService }, { type: _HttpClient }, { type: FormBuilder }, { type: CacheService } ]; if (false) { /** @type {?} */ PermissionRoleEditComponent.prototype.record; /** @type {?} */ PermissionRoleEditComponent.prototype.i; /** @type {?} */ PermissionRoleEditComponent.prototype.appId; /** @type {?} */ PermissionRoleEditComponent.prototype.form; /** @type {?} */ PermissionRoleEditComponent.prototype.optionList; /** @type {?} */ PermissionRoleEditComponent.prototype.loading; /** @type {?} */ PermissionRoleEditComponent.prototype.stateList; /** @type {?} */ PermissionRoleEditComponent.prototype.codeAsyncValidator; /** * @type {?} * @private */ PermissionRoleEditComponent.prototype.modal; /** @type {?} */ PermissionRoleEditComponent.prototype.msgSrv; /** @type {?} */ PermissionRoleEditComponent.prototype.appsService; /** @type {?} */ PermissionRoleEditComponent.prototype.roleService; /** @type {?} */ PermissionRoleEditComponent.prototype.userService; /** @type {?} */ PermissionRoleEditComponent.prototype.http; /** * @type {?} * @private */ PermissionRoleEditComponent.prototype.fb; /** * @type {?} * @private */ PermissionRoleEditComponent.prototype.cacheService; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AZWNpcC9wZXJtaXNzaW9uLyIsInNvdXJjZXMiOlsic3JjL3JvbGUvZWRpdC9lZGl0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFDN0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzNDLE9BQU8sRUFBQyxXQUFXLEVBQWEsVUFBVSxFQUFnQyxNQUFNLGdCQUFnQixDQUFDO0FBQ2pHLE9BQU8sRUFBNEIsVUFBVSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBRTNELE9BQU8sRUFBQyxXQUFXLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNwRSxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sY0FBYyxDQUFDO0FBTTFDLE1BQU0sT0FBTywyQkFBMkI7Ozs7Ozs7Ozs7O0lBU3RDLFlBQ1UsS0FBaUIsRUFDbEIsTUFBd0IsRUFDeEIsV0FBd0IsRUFDeEIsV0FBd0IsRUFDeEIsV0FBd0IsRUFDeEIsSUFBaUIsRUFDaEIsRUFBZSxFQUNmLFlBQTBCO1FBUDFCLFVBQUssR0FBTCxLQUFLLENBQVk7UUFDbEIsV0FBTSxHQUFOLE1BQU0sQ0FBa0I7UUFDeEIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsU0FBSSxHQUFKLElBQUksQ0FBYTtRQUNoQixPQUFFLEdBQUYsRUFBRSxDQUFhO1FBQ2YsaUJBQVksR0FBWixZQUFZLENBQWM7UUFoQnBDLFdBQU0sR0FBUSxFQUFFLENBQUM7UUFJakIsZUFBVSxHQUFRLEVBQUUsQ0FBQztRQUNyQixZQUFPLEdBQVksS0FB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O0lBQ3pCLGdEQUErRDs7SUF1Qy9ELHlEQWdCSzs7Ozs7SUFwREgsNENBQXlCOztJQUN6Qiw2Q0FBK0I7O0lBQy9CLGtEQUErQjs7SUFDL0Isa0RBQStCOztJQUMvQixrREFBK0I7O0lBQy9CLDJDQUF3Qjs7Ozs7SUFDeEIseUNBQXVCOzs7OztJQUN2QixtREFBa0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE56TW9kYWxSZWYsIE56TWVzc2FnZVNlcnZpY2UgfSBmcm9tICduZy16b3Jyby1hbnRkJztcclxuaW1wb3J0IHsgX0h0dHBDbGllbnQgfSBmcm9tICdAZGVsb24vdGhlbWUnO1xyXG5pbXBvcnQge0Zvcm1CdWlsZGVyLCBGb3JtR3JvdXAsIFZhbGlkYXRvcnMsIEZvcm1Db250cm9sLCBWYWxpZGF0aW9uRXJyb3JzfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIE9ic2VydmVyLCBPYnNlcnZhYmxlfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBtYXAsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHtVc2VyU2VydmljZSwgQXBwc1NlcnZpY2UsIFJvbGVTZXJ2aWNlfSBmcm9tIFwiQGVjaXAvc2VydmljZVwiO1xyXG5pbXBvcnQge0NhY2hlU2VydmljZX0gZnJvbSBcIkBkZWxvbi9jYWNoZVwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtcGVybWlzc2lvbi1yb2xlLWVkaXQnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9lZGl0LmNvbXBvbmVudC5odG1sJyxcclxufSlcclxuZXhwb3J0IGNsYXNzIFBlcm1pc3Npb25Sb2xlRWRpdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgcmVjb3JkOiBhbnkgPSB7fTtcclxuICBpOiBhbnk7XHJcbiAgYXBwSWQ6IGFueTtcclxuICBmb3JtOiBGb3JtR3JvdXA7XHJcbiAgb3B0aW9uTGlzdDogYW55ID0gW107XHJcbiAgbG9hZGluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHN0YXRlTGlzdCA9IHRoaXMuY2FjaGVTZXJ2aWNlLmdldChgYXBpL2RpY3QvdHlwZS9lbmFibGVTdGF0ZWApO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgbW9kYWw6IE56TW9kYWxSZWYsXHJcbiAgICBwdWJsaWMgbXNnU3J2OiBOek1lc3NhZ2VTZXJ2aWNlLFxyXG4gICAgcHVibGljIGFwcHNTZXJ2aWNlOiBBcHBzU2VydmljZSxcclxuICAgIHB1YmxpYyByb2xlU2VydmljZTogUm9sZVNlcnZpY2UsXHJcbiAgICBwdWJsaWMgdXNlclNlcnZpY2U6IFVzZXJTZXJ2aWNlLFxyXG4gICAgcHVibGljIGh0dHA6IF9IdHRwQ2xpZW50LFxyXG4gICAgcHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXIsXHJcbiAgICBwcml2YXRlIGNhY2hlU2VydmljZTogQ2FjaGVTZXJ2aWNlXHJcbiAgKSB7fVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuZm9ybSA9IHRoaXMuZmIuZ3JvdXAoe1xyXG4gICAgICBhcHBJZDogW3RoaXMuYXBwSWQsIFtdXSxcclxuICAgICAgcm9sZU5hbWU6IFtudWxsLCBbXV0sXHJcbiAgICAgIGNvZGU6IFtudWxsLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sIFt0aGlzLmNvZGVBc3luY1ZhbGlkYXRvcl1dLFxyXG4gICAgICBzdGF0dXM6IFsxLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxyXG4gICAgICBzb3J0TnVtOiBbMCwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcclxuICAgICAgcmVtYXJrOiBbbnVsbCwgW11dLFxyXG4gICAgICBjcmVhdGVUaW1lOiBbbnVsbCwgW11dXHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG4gICAgLyp0aGlzLmFwcHNTZXJ2aWNlLmdldExpc3QoKS5zdWJzY3JpYmUoYXBwTGlzdCA9PiB7XHJcbiAgICAgIHRoaXMub3B0aW9uTGlzdCA9IGFwcExpc3Q7XHJcbiAgICB9KTsqL1xyXG5cclxuICAgIGlmICghdGhpcy5yZWNvcmQuaWQpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMucm9sZVNlcnZpY2UuZ2V0QnlJZCh0aGlzLnJlY29yZC5pZCkuc3Vic2NyaWJlKHJlcyA9PiB7XHJcbiAgICAgIHRoaXMuZm9ybS5wYXRjaFZhbHVlKHJlcyk7XHJcbiAgICAgIHRoaXMuaSA9IHJlcztcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgY29kZUFzeW5jVmFsaWRhdG9yID0gKGNvbnRyb2w6IEZvcm1Db250cm9sKSA9PlxyXG4gICAgT2JzZXJ2YWJsZS5jcmVhdGUoKG9ic2VydmVyOiBPYnNlcnZlcjxWYWxpZGF0aW9uRXJyb3JzPikgPT4ge1xyXG4gICAgICBpZiAoIWNvbnRyb2wudmFsdWUpIHtcclxuICAgICAgICBvYnNlcnZlci5uZXh0KG51bGwpO1xyXG4gICAgICAgIG9ic2VydmVyLmNvbXBsZXRlKCk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMucm9sZVNlcnZpY2UuY2hlY2tDb2RlKFxyXG4gICAgICAgIHtjb2RlOiBjb250cm9sLnZhbHVlLCBpZDogdGhpcy5yZWNvcmQuaWR9KS5zdWJzY3JpYmUoKHJlczphbnkpPT4ge1xyXG4gICAgICAgIGlmIChyZXMudmFsaWQgPT09IHRydWUpIHtcclxuICAgICAgICAgIG9ic2VydmVyLm5leHQobnVsbCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIG9ic2VydmVyLm5leHQoeyBlcnJvcjogdHJ1ZSwgZHVwbGljYXRlZDogdHJ1ZSB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgb2JzZXJ2ZXIuY29tcGxldGUoKTtcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuXHJcbiAgY29tcGFyZU51bVN0cihjMTogYW55LCBjMjogYW55KTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gYzEgPT0gYzI7XHJcbiAgfVxyXG5cclxuICBzdWJtaXQoKSB7XHJcbiAgICBmb3IgKGNvbnN0IGkgaW4gdGhpcy5mb3JtLmNvbnRyb2xzKSB7XHJcbiAgICAgIHRoaXMuZm9ybS5jb250cm9sc1tpXS5tYXJrQXNEaXJ0eSgpO1xyXG4gICAgICB0aGlzLmZvcm0uY29udHJvbHNbaV0udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuZm9ybS5pbnZhbGlkKSByZXR1cm47XHJcbiAgICBpZiAoIXRoaXMucmVjb3JkLmlkKSB7XHJcbiAgICAgIC8v5paw5aKeXHJcbiAgICAgIHRoaXMucm9sZVNlcnZpY2UucG9zdCh0aGlzLmZvcm0udmFsdWUpLnN1YnNjcmliZShyZXMgPT4ge1xyXG4gICAgICAgIHRoaXMubXNnU3J2LnN1Y2Nlc3MoJ+S/neWtmOaIkOWKnycpO1xyXG4gICAgICAgIHRoaXMubW9kYWwuY2xvc2UodHJ1ZSk7XHJcbiAgICAgIH0pO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICAvL+S/ruaUuVxyXG4gICAgdGhpcy5yb2xlU2VydmljZS5wdXQodGhpcy5yZWNvcmQuaWQsIHRoaXMuZm9ybS52YWx1ZSkuc3Vic2NyaWJlKHJlcyA9PiB7XHJcbiAgICAgIHRoaXMubXNnU3J2LnN1Y2Nlc3MoJ+S/neWtmOaIkOWKnycpO1xyXG4gICAgICB0aGlzLm1vZGFsLmNsb3NlKHRydWUpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBjbG9zZSgpIHtcclxuICAgIHRoaXMubW9kYWwuZGVzdHJveSgpO1xyXG4gIH1cclxufVxyXG4iXX0=