@ecip/permission
Version:
201 lines • 19.4 kB
JavaScript
/**
* @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=