tnx-shared 5.1.78 → 5.1.82
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/tnx-shared.umd.js +994 -321
- package/bundles/tnx-shared.umd.js.map +1 -1
- package/bundles/tnx-shared.umd.min.js +1 -1
- package/bundles/tnx-shared.umd.min.js.map +1 -1
- package/classes/base/data-form-base.d.ts +1 -0
- package/classes/base/data-form-base.d.ts.map +1 -1
- package/classes/base/data-list-base.d.ts +2 -1
- package/classes/base/data-list-base.d.ts.map +1 -1
- package/classes/form-schema.d.ts +3 -0
- package/classes/form-schema.d.ts.map +1 -1
- package/components/crud/crud-form/crud-form.component.d.ts.map +1 -1
- package/components/crud/crud-list/crud-list.component.d.ts +1 -0
- package/components/crud/crud-list/crud-list.component.d.ts.map +1 -1
- package/components/entity-permission/services.cs/entity-permission.service.d.ts +1 -0
- package/components/entity-permission/services.cs/entity-permission.service.d.ts.map +1 -1
- package/components/file-explorer/file-manager/file-manager.component.d.ts +1 -0
- package/components/file-explorer/file-manager/file-manager.component.d.ts.map +1 -1
- package/components/file-explorer/services/file-data.service.d.ts +1 -0
- package/components/file-explorer/services/file-data.service.d.ts.map +1 -1
- package/components/query-builders/query-builder/query-builder.component.d.ts.map +1 -1
- package/components/query-builders/query-builder-group/query-builder-group.component.d.ts +1 -0
- package/components/query-builders/query-builder-group/query-builder-group.component.d.ts.map +1 -1
- package/components/query-builders/query-builder-rule/query-builder-rule.component.d.ts +3 -0
- package/components/query-builders/query-builder-rule/query-builder-rule.component.d.ts.map +1 -1
- package/components/statemachines/models/constants.d.ts +5 -1
- package/components/statemachines/models/constants.d.ts.map +1 -1
- package/components/statemachines/models/enums.d.ts +4 -0
- package/components/statemachines/models/enums.d.ts.map +1 -1
- package/components/statemachines/statemachines-connection-metadata/statemachines-connection-metadata.component.d.ts.map +1 -1
- package/components/statemachines/statemachines-connection-receiver/statemachines-connection-receiver.component.d.ts +3 -0
- package/components/statemachines/statemachines-connection-receiver/statemachines-connection-receiver.component.d.ts.map +1 -1
- package/components/statemachines/statemachines-connection-receiver-condition/statemachines-connection-receiver-condition.component.d.ts +28 -0
- package/components/statemachines/statemachines-connection-receiver-condition/statemachines-connection-receiver-condition.component.d.ts.map +1 -0
- package/components/statemachines/statemachines-connection-receiver-condition/statemachines-connection-receiver-condition.component.ngfactory.d.ts.map +1 -0
- package/components/statemachines/statemachines-connection-receiver-condition/statemachines-connection-receiver-condition.component.scss.shim.ngstyle.d.ts.map +1 -0
- package/components/statemachines/statemachines-connection-receiver-department/statemachines-connection-receiver-department.component.d.ts +3 -1
- package/components/statemachines/statemachines-connection-receiver-department/statemachines-connection-receiver-department.component.d.ts.map +1 -1
- package/components/statemachines/statemachines-connection-receiver-group/statemachines-connection-receiver-group.component.d.ts +3 -1
- package/components/statemachines/statemachines-connection-receiver-group/statemachines-connection-receiver-group.component.d.ts.map +1 -1
- package/components/statemachines/statemachines-connection-receiver-role/statemachines-connection-receiver-role.component.d.ts +6 -4
- package/components/statemachines/statemachines-connection-receiver-role/statemachines-connection-receiver-role.component.d.ts.map +1 -1
- package/components/statemachines/statemachines-connection-sender/statemachines-connection-sender.component.d.ts +3 -3
- package/components/statemachines/statemachines-connection-sender/statemachines-connection-sender.component.d.ts.map +1 -1
- package/components/user-picker/user-picker.component.d.ts +8 -2
- package/components/user-picker/user-picker.component.d.ts.map +1 -1
- package/components/workflow/models/models.d.ts +8 -8
- package/components/workflow/models/models.d.ts.map +1 -1
- package/components/workflow/process-workflow-form/process-workflow-form.component.d.ts +1 -1
- package/components/workflow/process-workflow-form/process-workflow-form.component.d.ts.map +1 -1
- package/components/workflow/process-workflow-target/process-workflow-target.component.d.ts +3 -6
- package/components/workflow/process-workflow-target/process-workflow-target.component.d.ts.map +1 -1
- package/components/workflow/workflow-history-new/workflow-history-new.component.d.ts +3 -3
- package/components/workflow/workflow-history-new/workflow-history-new.component.d.ts.map +1 -1
- package/components/workflow/workflow-setting-new/workflow-setting-new.component.d.ts +1 -0
- package/components/workflow/workflow-setting-new/workflow-setting-new.component.d.ts.map +1 -1
- package/configs/component-context.constant.d.ts +1 -0
- package/configs/component-context.constant.d.ts.map +1 -1
- package/congviec/congviec/congviec-dinhkem/congviec-dinhkem.component.d.ts +8 -3
- package/congviec/congviec/congviec-dinhkem/congviec-dinhkem.component.d.ts.map +1 -1
- package/congviec/congviec/congviec-form/congviec-form.component.d.ts +2 -0
- package/congviec/congviec/congviec-form/congviec-form.component.d.ts.map +1 -1
- package/congviec/congviec/congviec.component.d.ts.map +1 -1
- package/congviec/congviec/services/congviec-dinhkem.service.d.ts +8 -0
- package/congviec/congviec/services/congviec-dinhkem.service.d.ts.map +1 -1
- package/congviec/congviec/services/congviec.service.d.ts.map +1 -1
- package/esm2015/classes/base/data-form-base.js +6 -3
- package/esm2015/classes/base/data-list-base.js +13 -3
- package/esm2015/classes/form-schema.js +1 -1
- package/esm2015/components/crud/crud-form/crud-form.component.js +2 -1
- package/esm2015/components/crud/crud-list/crud-list.component.js +6 -2
- package/esm2015/components/entity-permission/services.cs/entity-permission.service.js +8 -5
- package/esm2015/components/file-explorer/file-manager/file-manager.component.js +17 -10
- package/esm2015/components/file-explorer/services/file-data.service.js +15 -15
- package/esm2015/components/query-builders/query-builder/query-builder.component.js +24 -7
- package/esm2015/components/query-builders/query-builder-group/query-builder-group.component.js +6 -2
- package/esm2015/components/query-builders/query-builder-rule/query-builder-rule.component.js +39 -3
- package/esm2015/components/share-link-by-permission/share-link-by-permission.component.js +2 -2
- package/esm2015/components/statemachines/models/constants.js +9 -4
- package/esm2015/components/statemachines/models/enums.js +6 -1
- package/esm2015/components/statemachines/statemachines-connection-metadata/statemachines-connection-metadata.component.js +9 -5
- package/esm2015/components/statemachines/statemachines-connection-receiver/statemachines-connection-receiver.component.js +19 -6
- package/esm2015/components/statemachines/statemachines-connection-receiver-condition/statemachines-connection-receiver-condition.component.js +179 -0
- package/esm2015/components/statemachines/statemachines-connection-receiver-department/statemachines-connection-receiver-department.component.js +32 -1
- package/esm2015/components/statemachines/statemachines-connection-receiver-group/statemachines-connection-receiver-group.component.js +32 -1
- package/esm2015/components/statemachines/statemachines-connection-receiver-role/statemachines-connection-receiver-role.component.js +39 -8
- package/esm2015/components/statemachines/statemachines-connection-sender/statemachines-connection-sender.component.js +19 -7
- package/esm2015/components/statemachines/statemachines-designer/statemachines-designer.component.js +1 -1
- package/esm2015/components/statemachines/utils/utils.js +6 -6
- package/esm2015/components/tn-app-help/tn-app-help.component.js +1 -1
- package/esm2015/components/tn-app-notification/tn-app-notification.component.js +2 -2
- package/esm2015/components/user-picker/user-picker.component.js +47 -6
- package/esm2015/components/workflow/models/models.js +1 -7
- package/esm2015/components/workflow/process-workflow-form/process-workflow-form.component.js +39 -42
- package/esm2015/components/workflow/process-workflow-target/process-workflow-target.component.js +7 -40
- package/esm2015/components/workflow/workflow-history-new/workflow-history-new.component.js +10 -12
- package/esm2015/components/workflow/workflow-setting-new/workflow-setting-new.component.js +67 -10
- package/esm2015/configs/component-context.constant.js +3 -2
- package/esm2015/congviec/congviec/congviec-dinhkem/congviec-dinhkem.component.js +50 -14
- package/esm2015/congviec/congviec/congviec-form/congviec-form.component.js +24 -12
- package/esm2015/congviec/congviec/congviec.component.js +7 -6
- package/esm2015/congviec/congviec/services/congviec-dinhkem.service.js +57 -1
- package/esm2015/congviec/congviec/services/congviec.service.js +3 -3
- package/esm2015/services/base.service.js +4 -1
- package/esm2015/services/dm-chucvu.service.js +28 -0
- package/esm2015/services/role.service.js +1 -1
- package/esm2015/tnx-shared.js +69 -67
- package/esm2015/tnx-shared.module.js +3 -1
- package/fesm2015/tnx-shared.js +776 -220
- package/fesm2015/tnx-shared.js.map +1 -1
- package/package.json +2 -2
- package/services/base.service.d.ts +1 -0
- package/services/base.service.d.ts.map +1 -1
- package/services/dm-chucvu.service.d.ts +12 -0
- package/services/dm-chucvu.service.d.ts.map +1 -0
- package/services/dm-chucvu.service.ngfactory.d.ts.map +1 -0
- package/tnx-shared.d.ts +68 -66
- package/tnx-shared.d.ts.map +1 -1
- package/tnx-shared.metadata.json +1 -1
- package/tnx-shared.module.d.ts +2 -1
- package/tnx-shared.module.d.ts.map +1 -1
- package/tnx-shared.module.ngfactory.d.ts.map +1 -1
package/fesm2015/tnx-shared.js
CHANGED
|
@@ -138,7 +138,8 @@ ComCtxConstants.ROOT = {
|
|
|
138
138
|
MENU_CHANGED: 'MENU_CHANGED',
|
|
139
139
|
ADVANCE_SEARCH_INIT_WITHOUT_UPDATE_ROUTER: 'ADVANCE_SEARCH_INIT_WITHOUT_UPDATE_ROUTER',
|
|
140
140
|
SHOW_WAIT_BOX: 'SHOW_WAIT_BOX',
|
|
141
|
-
SHOW_REJECT_CONFIRM: 'SHOW_REJECT_CONFIRM'
|
|
141
|
+
SHOW_REJECT_CONFIRM: 'SHOW_REJECT_CONFIRM',
|
|
142
|
+
GAN_ENTITY_SANG_CONG_VIEC: 'GAN_ENTITY_SANG_CONG_VIEC'
|
|
142
143
|
};
|
|
143
144
|
ComCtxConstants.ROOT_USMART = {
|
|
144
145
|
SHOW_CONFIG_DATA_DEFAULT: 'SHOW_CONFIG_DATA_DEFAULT',
|
|
@@ -5968,6 +5969,9 @@ class BaseService {
|
|
|
5968
5969
|
processWorkflow(id, actionCode, data) {
|
|
5969
5970
|
return this.defaultPost(`${this.serviceUri}/ProcessWorkflow/${id}/${actionCode}`, data);
|
|
5970
5971
|
}
|
|
5972
|
+
getUserInProcessForm(workflowCode, stateCode, actionCode, itemId) {
|
|
5973
|
+
return this.defaultPost(`${this.serviceUri}/GetUserInProcessFormBase/${workflowCode}/${stateCode}/${actionCode}/${itemId}`, {});
|
|
5974
|
+
}
|
|
5971
5975
|
handleError(error, injector) {
|
|
5972
5976
|
const commonService = injector.get(CommonService);
|
|
5973
5977
|
return commonService.handleError(error, injector);
|
|
@@ -8792,10 +8796,10 @@ class WorkflowSettingNew {
|
|
|
8792
8796
|
|
|
8793
8797
|
class CongViecService extends BaseService {
|
|
8794
8798
|
constructor(http, injector, _moduleConfigService) {
|
|
8795
|
-
super(http, injector, `${_moduleConfigService.getConfig().environment.apiDomain.congviecEndpoint}/${_moduleConfigService.getConfig().environment.apiVersion}/
|
|
8799
|
+
super(http, injector, `${_moduleConfigService.getConfig().environment.apiDomain.congviecEndpoint}/${_moduleConfigService.getConfig().environment.apiVersion}/CongViec_Chinh`);
|
|
8796
8800
|
this._moduleConfigService = _moduleConfigService;
|
|
8797
8801
|
this.serviceCode = 'congviec';
|
|
8798
|
-
this.entityName = '
|
|
8802
|
+
this.entityName = 'CongViec_Chinh';
|
|
8799
8803
|
this.objectName = 'công việc';
|
|
8800
8804
|
this.endPoint = _moduleConfigService.getConfig().environment.apiDomain.congviecEndpoint;
|
|
8801
8805
|
}
|
|
@@ -12324,6 +12328,7 @@ class CrudFormComponent extends ComponentBase {
|
|
|
12324
12328
|
}
|
|
12325
12329
|
if (schema instanceof TitleSchema
|
|
12326
12330
|
|| schema instanceof LabelSchema) {
|
|
12331
|
+
schema.showLabel = false;
|
|
12327
12332
|
if (!schema.field) {
|
|
12328
12333
|
schema.field = this._commonService.guid();
|
|
12329
12334
|
}
|
|
@@ -14474,7 +14479,8 @@ class DataFormBase extends ComponentBase {
|
|
|
14474
14479
|
defaultValue,
|
|
14475
14480
|
valueField: 'code',
|
|
14476
14481
|
displayField: 'title',
|
|
14477
|
-
mdWidth: 12,
|
|
14482
|
+
mdWidth: this.mdWidthWorkflow || 12,
|
|
14483
|
+
enableCaching: false,
|
|
14478
14484
|
hiddenCheck: (rootModel) => !rootModel || rootModel.createTaskInstead
|
|
14479
14485
|
}));
|
|
14480
14486
|
if (this.parentSetting.workflowSettingNew
|
|
@@ -14805,7 +14811,9 @@ class DataFormBase extends ComponentBase {
|
|
|
14805
14811
|
if (resultValidateFormTask) {
|
|
14806
14812
|
this.model.data.itemCongViec = taskForm.model.data;
|
|
14807
14813
|
}
|
|
14808
|
-
|
|
14814
|
+
}
|
|
14815
|
+
if (this.model.data.createTaskInstead) {
|
|
14816
|
+
// reset field _WorkflowCode để backend không chạy quy trình bản ghi
|
|
14809
14817
|
this.model.data._WorkflowCode = null;
|
|
14810
14818
|
}
|
|
14811
14819
|
const confirmed = yield this.createConfirmIfRequire();
|
|
@@ -16194,6 +16202,7 @@ class CrudListComponent extends ComponentBase {
|
|
|
16194
16202
|
this.onProcessedWorkflow = new EventEmitter();
|
|
16195
16203
|
this.onRollbackedWorkflow = new EventEmitter();
|
|
16196
16204
|
this.onChangedStatusWorkflow = new EventEmitter();
|
|
16205
|
+
this.onShowFormStartWorkflow = new EventEmitter();
|
|
16197
16206
|
this.tableReady = new Subject();
|
|
16198
16207
|
this.tableReadySource$ = this.tableReady.asObservable();
|
|
16199
16208
|
this.checkedAll = null;
|
|
@@ -17077,6 +17086,7 @@ class CrudListComponent extends ComponentBase {
|
|
|
17077
17086
|
formState: FormState.ADD,
|
|
17078
17087
|
data: {
|
|
17079
17088
|
checkUniqueTaskForEntity: true,
|
|
17089
|
+
autoNextStep: workflowSetting.autoNextStep,
|
|
17080
17090
|
idLoaiCongViec: workflowSetting.idLoaiCongViecDefault,
|
|
17081
17091
|
serviceCode: this.setting.baseService.serviceCode,
|
|
17082
17092
|
entity: this.setting.baseService.entityName,
|
|
@@ -17085,6 +17095,7 @@ class CrudListComponent extends ComponentBase {
|
|
|
17085
17095
|
}
|
|
17086
17096
|
};
|
|
17087
17097
|
this.congViecModel.showEditForm = true;
|
|
17098
|
+
this.onShowFormStartWorkflow.emit(rowData);
|
|
17088
17099
|
}
|
|
17089
17100
|
else {
|
|
17090
17101
|
if (workflowSetting.workflows.length == 1) {
|
|
@@ -18865,16 +18876,20 @@ CrudListComponent.propDecorators = {
|
|
|
18865
18876
|
onStartedWorkflow: [{ type: Output }],
|
|
18866
18877
|
onProcessedWorkflow: [{ type: Output }],
|
|
18867
18878
|
onRollbackedWorkflow: [{ type: Output }],
|
|
18868
|
-
onChangedStatusWorkflow: [{ type: Output }]
|
|
18879
|
+
onChangedStatusWorkflow: [{ type: Output }],
|
|
18880
|
+
onShowFormStartWorkflow: [{ type: Output }]
|
|
18869
18881
|
};
|
|
18870
18882
|
|
|
18871
18883
|
class EntityPermissionService extends BaseService {
|
|
18872
18884
|
constructor(http, injector, _moduleConfigService) {
|
|
18873
|
-
super(http, injector, `${_moduleConfigService.getConfig().environment.apiDomain.userOrgEndpoint}/EntityPermission`);
|
|
18885
|
+
super(http, injector, `${_moduleConfigService.getConfig().environment.apiDomain.userOrgEndpoint}/${_moduleConfigService.getConfig().environment.apiVersion}/EntityPermission`);
|
|
18874
18886
|
this.serviceManagers = {};
|
|
18875
18887
|
this.endPoint = _moduleConfigService.getConfig().environment.apiDomain.userOrgEndpoint;
|
|
18876
18888
|
this._moduleConfig = _moduleConfigService.getConfig();
|
|
18877
18889
|
}
|
|
18890
|
+
getEndpointByService(service) {
|
|
18891
|
+
return `${service.endPoint}/${this._moduleConfig.environment.apiVersion}`;
|
|
18892
|
+
}
|
|
18878
18893
|
registerService(entityName, service) {
|
|
18879
18894
|
this.serviceManagers[entityName] = service;
|
|
18880
18895
|
}
|
|
@@ -18883,15 +18898,15 @@ class EntityPermissionService extends BaseService {
|
|
|
18883
18898
|
if (service == undefined) {
|
|
18884
18899
|
(this._injector.get(NotifierService)).showWarning('Bạn chưa đăng ký base service cho entity permission service');
|
|
18885
18900
|
}
|
|
18886
|
-
return this.defaultPost(`${service
|
|
18901
|
+
return this.defaultPost(`${this.getEndpointByService(service)}/EntityPermission/GetPermission/${service.entityName}`, {});
|
|
18887
18902
|
}
|
|
18888
18903
|
savePermission(tableName, data) {
|
|
18889
18904
|
const service = this.serviceManagers[tableName];
|
|
18890
|
-
return this.defaultPost(`${service
|
|
18905
|
+
return this.defaultPost(`${this.getEndpointByService(service)}/EntityPermission/SavePermission/${service.entityName}`, data);
|
|
18891
18906
|
}
|
|
18892
18907
|
removePermission(tableName) {
|
|
18893
18908
|
const service = this.serviceManagers[tableName];
|
|
18894
|
-
return this.defaultPost(`${service
|
|
18909
|
+
return this.defaultPost(`${this.getEndpointByService(service)}/EntityPermission/RemovePermission/${service.entityName}`, {});
|
|
18895
18910
|
}
|
|
18896
18911
|
}
|
|
18897
18912
|
EntityPermissionService.decorators = [
|
|
@@ -19425,11 +19440,21 @@ class DataListBase extends ComponentBase {
|
|
|
19425
19440
|
this._notifierService.showSuccess('Đã sao chép các liên kết đã chọn');
|
|
19426
19441
|
});
|
|
19427
19442
|
}
|
|
19428
|
-
_copyLink(rowData) {
|
|
19443
|
+
_copyLink(rowData, showNoti = true) {
|
|
19429
19444
|
return __awaiter(this, void 0, void 0, function* () {
|
|
19430
19445
|
const path = yield this.getCopyPath(rowData);
|
|
19431
19446
|
this._commonService.copyByStorage(path);
|
|
19432
|
-
|
|
19447
|
+
if (showNoti) {
|
|
19448
|
+
this._notifierService.showSuccess('Đã sao chép liên kết');
|
|
19449
|
+
}
|
|
19450
|
+
});
|
|
19451
|
+
}
|
|
19452
|
+
_onShowFormStartWorkflow(rowData) {
|
|
19453
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
19454
|
+
// Fire event gắn link công việc
|
|
19455
|
+
this._copyLink(rowData, false).then(x => {
|
|
19456
|
+
this.rootContext.fireReplayEvent(ComCtxConstants.ROOT.GAN_ENTITY_SANG_CONG_VIEC);
|
|
19457
|
+
});
|
|
19433
19458
|
});
|
|
19434
19459
|
}
|
|
19435
19460
|
getCopyPath(rowData) {
|
|
@@ -29200,10 +29225,14 @@ class QueryRule {
|
|
|
29200
29225
|
&& (this.value == null || this.value == '')) {
|
|
29201
29226
|
return null;
|
|
29202
29227
|
}
|
|
29228
|
+
let value = this.value;
|
|
29229
|
+
if (this.funcGetValue) {
|
|
29230
|
+
value = this.funcGetValue(this);
|
|
29231
|
+
}
|
|
29203
29232
|
return new Filter({
|
|
29204
29233
|
field: this.field,
|
|
29205
29234
|
operator: this.compareType,
|
|
29206
|
-
value: JSON.stringify(
|
|
29235
|
+
value: JSON.stringify(value)
|
|
29207
29236
|
});
|
|
29208
29237
|
}
|
|
29209
29238
|
isGroup() {
|
|
@@ -29451,14 +29480,26 @@ class QueryBuilderComponent {
|
|
|
29451
29480
|
itemSourceField.controlType = 'datetime';
|
|
29452
29481
|
}
|
|
29453
29482
|
else if (schema instanceof NumberRangeControlSchema) {
|
|
29454
|
-
|
|
29483
|
+
const operators = itemSourceField.control['operators'];
|
|
29484
|
+
if (!operators || !operators.length) {
|
|
29485
|
+
itemSourceField.operators = operatorDateAndNumber;
|
|
29486
|
+
}
|
|
29487
|
+
else {
|
|
29488
|
+
itemSourceField.operators = operators;
|
|
29489
|
+
}
|
|
29455
29490
|
itemSourceField.controlType = 'number';
|
|
29456
29491
|
}
|
|
29457
29492
|
else if (schema instanceof DropdownControlSchema || schema instanceof CheckBoxListControlSchema) {
|
|
29458
|
-
|
|
29459
|
-
|
|
29460
|
-
|
|
29461
|
-
|
|
29493
|
+
const operators = itemSourceField.control['operators'];
|
|
29494
|
+
if (!operators || !operators.length) {
|
|
29495
|
+
itemSourceField.operators = [
|
|
29496
|
+
{ id: Operator.in, ten: 'Nằm trong' },
|
|
29497
|
+
{ id: Operator.notIn, ten: 'Không nằm trong' }
|
|
29498
|
+
];
|
|
29499
|
+
}
|
|
29500
|
+
else {
|
|
29501
|
+
itemSourceField.operators = [...operators];
|
|
29502
|
+
}
|
|
29462
29503
|
if (schema.hasOperatorCanBo) {
|
|
29463
29504
|
itemSourceField.operators.push({
|
|
29464
29505
|
id: Operator.isCurrentCanBo, ten: 'Là cán bộ hiện tại', _disabled: true
|
|
@@ -29488,6 +29529,11 @@ class QueryBuilderComponent {
|
|
|
29488
29529
|
];
|
|
29489
29530
|
itemSourceField.controlType = 'autocomplete-picker';
|
|
29490
29531
|
}
|
|
29532
|
+
else if (schema instanceof CustomControlSchema) {
|
|
29533
|
+
const operators = itemSourceField.control['operators'];
|
|
29534
|
+
itemSourceField.operators = operators ? operators : [];
|
|
29535
|
+
itemSourceField.controlType = 'custom';
|
|
29536
|
+
}
|
|
29491
29537
|
else { // Là textbox
|
|
29492
29538
|
itemSourceField.operators = [
|
|
29493
29539
|
{ id: Operator.equal, ten: 'Bằng' },
|
|
@@ -30624,28 +30670,28 @@ class FileDataService {
|
|
|
30624
30670
|
this._fileControls.forEach(control => {
|
|
30625
30671
|
key = `${control.serviceCode}/${control.entity}/${control._entityKey}`;
|
|
30626
30672
|
if (dataFile[key]) {
|
|
30627
|
-
control.
|
|
30673
|
+
control.setRootFolderId(dataFile[key].folderId);
|
|
30674
|
+
control.setDatasource(dataFile[key].lstFile);
|
|
30628
30675
|
}
|
|
30629
30676
|
});
|
|
30630
30677
|
}));
|
|
30631
30678
|
}
|
|
30632
30679
|
processDatasourceFile(fileData = []) {
|
|
30633
|
-
const
|
|
30634
|
-
|
|
30635
|
-
|
|
30636
|
-
key = `${file.serviceCode}/${file.entity}/${file.entityKey}`;
|
|
30637
|
-
// Nếu hết file của 1 control
|
|
30638
|
-
if (!dic[key]) {
|
|
30639
|
-
dic[key] = [];
|
|
30640
|
-
}
|
|
30641
|
-
dic[key].push(file);
|
|
30642
|
-
});
|
|
30643
|
-
Object.keys(dic).forEach(key => {
|
|
30644
|
-
dic[key].sort(multipleSort({ name: 'fileExplorerItemType', reverse: true }, // Sắp xếp folder lên trên file
|
|
30680
|
+
const result = {};
|
|
30681
|
+
Object.keys(fileData).forEach(key => {
|
|
30682
|
+
fileData[key].lstFile.sort(multipleSort({ name: 'fileExplorerItemType', reverse: true }, // Sắp xếp folder lên trên file
|
|
30645
30683
|
{ name: 'name', primer: a => a.toLowerCase() } // Order theo tên (nhưng phải toLower vì T < b < t)
|
|
30646
30684
|
));
|
|
30685
|
+
const data = fileData[key];
|
|
30686
|
+
result[this.generateKey(data.serviceCode, data.entity, data.entityKey)] = {
|
|
30687
|
+
folderId: key,
|
|
30688
|
+
lstFile: fileData[key].lstFile
|
|
30689
|
+
};
|
|
30647
30690
|
});
|
|
30648
|
-
return
|
|
30691
|
+
return result;
|
|
30692
|
+
}
|
|
30693
|
+
generateKey(serviceCode, entity, entityKey) {
|
|
30694
|
+
return `${serviceCode}/${entity}/${entityKey}`;
|
|
30649
30695
|
}
|
|
30650
30696
|
}
|
|
30651
30697
|
FileDataService.ɵprov = ɵɵdefineInjectable({ factory: function FileDataService_Factory() { return new FileDataService(ɵɵinject(INJECTOR)); }, token: FileDataService, providedIn: "root" });
|
|
@@ -31194,6 +31240,10 @@ class FileManagerComponent extends DataListBase {
|
|
|
31194
31240
|
this.data.breadcrumbs = [];
|
|
31195
31241
|
this._dataSource = [];
|
|
31196
31242
|
}
|
|
31243
|
+
setRootFolderId(rootFolderId) {
|
|
31244
|
+
this.rootFolderId = rootFolderId;
|
|
31245
|
+
this.data.currentFolderId = this.rootFolderId;
|
|
31246
|
+
}
|
|
31197
31247
|
setDatasource(dataSource = []) {
|
|
31198
31248
|
this._dataSource = dataSource;
|
|
31199
31249
|
this._oldValue = this._value;
|
|
@@ -31367,7 +31417,7 @@ class FileManagerComponent extends DataListBase {
|
|
|
31367
31417
|
label: 'Xem trực tuyến', icon: 'fas fa-eye', command: (event) => {
|
|
31368
31418
|
this.openObject(item);
|
|
31369
31419
|
},
|
|
31370
|
-
visible: this._deviceDetectorService.isDesktop()
|
|
31420
|
+
visible: (this._deviceDetectorService.isDesktop() && !(this.layout === EnumFileLayout.SIMPLE && this.readonly))
|
|
31371
31421
|
},
|
|
31372
31422
|
{
|
|
31373
31423
|
label: 'Ký số cá nhân (SIM)',
|
|
@@ -31375,31 +31425,33 @@ class FileManagerComponent extends DataListBase {
|
|
|
31375
31425
|
command: () => {
|
|
31376
31426
|
this.signKySimFile(item);
|
|
31377
31427
|
},
|
|
31378
|
-
visible:
|
|
31428
|
+
visible: this._fileObjectService.isTypeFileKySo(item.name)
|
|
31379
31429
|
},
|
|
31380
31430
|
{
|
|
31381
31431
|
label: 'Ký số cá nhân (USB)', icon: 'fas fa-signature',
|
|
31382
31432
|
command: () => {
|
|
31383
31433
|
this.signFile(item);
|
|
31384
31434
|
},
|
|
31385
|
-
visible:
|
|
31435
|
+
visible: this._fileObjectService.isTypeFileKySo(item.name)
|
|
31386
31436
|
},
|
|
31387
31437
|
{
|
|
31388
31438
|
label: 'Ký số đơn vị (USB)', icon: 'fas fa-signature',
|
|
31389
31439
|
command: () => {
|
|
31390
31440
|
this.signFileDonVi(item);
|
|
31391
31441
|
},
|
|
31392
|
-
visible:
|
|
31442
|
+
visible: this._fileObjectService.isTypeFileKySo(item.name)
|
|
31393
31443
|
},
|
|
31394
31444
|
{
|
|
31395
31445
|
label: 'Tải về', icon: 'fas fa-download', command: () => {
|
|
31396
31446
|
this.download(item);
|
|
31397
|
-
}
|
|
31447
|
+
},
|
|
31448
|
+
visible: !(this.layout === EnumFileLayout.SIMPLE && this.readonly)
|
|
31398
31449
|
},
|
|
31399
31450
|
{
|
|
31400
31451
|
label: 'Sao chép đường dẫn', icon: 'fas fa-link', command: () => {
|
|
31401
31452
|
this.copyDownloadLink(item);
|
|
31402
|
-
}
|
|
31453
|
+
},
|
|
31454
|
+
visible: !(this.layout === EnumFileLayout.SIMPLE && this.readonly)
|
|
31403
31455
|
},
|
|
31404
31456
|
{
|
|
31405
31457
|
label: 'Đổi tên', icon: 'fas fa-eraser', command: () => {
|
|
@@ -31410,7 +31462,8 @@ class FileManagerComponent extends DataListBase {
|
|
|
31410
31462
|
{
|
|
31411
31463
|
label: 'Xem các phiên bản khác', icon: 'fas fa-history', command: () => {
|
|
31412
31464
|
this.openFileVersions(item);
|
|
31413
|
-
}
|
|
31465
|
+
},
|
|
31466
|
+
visible: !(this.layout === EnumFileLayout.SIMPLE && this.readonly)
|
|
31414
31467
|
},
|
|
31415
31468
|
{
|
|
31416
31469
|
label: 'Xóa tệp tin', icon: 'far fa-trash-alt', command: () => {
|
|
@@ -32071,7 +32124,7 @@ FileManagerComponent.decorators = [
|
|
|
32071
32124
|
{ type: Component, args: [{
|
|
32072
32125
|
// tslint:disable-next-line: component-selector
|
|
32073
32126
|
selector: 'file-manager',
|
|
32074
|
-
template: "<div *ngIf=\"layout == _layout.LIST\" class=\"full-layout\">\r\n <div class=\"fm-toolbar\">\r\n <div class=\"fm-toolbar-buttons\">\r\n <ng-container *ngIf=\"!readonly\">\r\n <button *ngIf=\"!hiddenCreateFolder\" pButton pRipple type=\"button\" pTooltip=\"T\u1EA1o th\u01B0 m\u1EE5c m\u1EDBi\"\r\n tooltipPosition=\"top\" icon=\"pi pi-folder\" class=\"p-button-text\" label=\"T\u1EA1o th\u01B0 m\u1EE5c\" iconPos=\"left\"\r\n (click)=\"createFolder()\">\r\n </button>\r\n\r\n <button pButton icon=\"pi pi-cloud-upload\" pTooltip=\"T\u1EA3i t\u1EC7p tin t\u1EEB m\u00E1y t\u00EDnh c\u1EE7a b\u1EA1n\"\r\n tooltipPosition=\"top\" type=\"button\" class=\"p-button-text p-button-primary\" label=\"T\u1EA3i l\u00EAn\"\r\n (click)=\"selectFile()\"></button>\r\n\r\n <button pButton icon=\"pi pi-link\" pTooltip=\"T\u1EA3i t\u1EEB li\u00EAn k\u1EBFt trong h\u1EC7 th\u1ED1ng\" tooltipPosition=\"top\"\r\n type=\"button\" class=\"p-button-text p-button-primary\" label=\"T\u1EA3i li\u00EAn k\u1EBFt\"\r\n (click)=\"showAttachLinkBox = true\"></button>\r\n\r\n <button *ngIf=\"canSelect()\" class=\"p-button-text p-button-success\" pButton type=\"button\"\r\n pTooltip=\"Di chuy\u1EC3n th\u01B0 m\u1EE5c/t\u1EC7p tin \u0111\u00E3 ch\u1ECDn\" tooltipPosition=\"top\" icon=\"fas fa-arrows-alt\"\r\n iconPos=\"left\" label=\"Di chuy\u1EC3n\" (click)=\"moveExplorerItems()\">\r\n </button>\r\n\r\n <button *ngIf=\"canSetMove()\" class=\"p-button-text p-button-success\" pButton type=\"button\"\r\n pTooltip=\"Di chuy\u1EC3n th\u01B0 m\u1EE5c/t\u1EC7p tin \u0111\u00E3 ch\u1ECDn t\u1EDBi \u0111\u00E2y\" tooltipPosition=\"top\" icon=\"far fa-hand-paper\"\r\n iconPos=\"left\" label=\"\u0110\u1EB7t t\u1EA1i \u0111\u00E2y\" (click)=\"setMoveExplorerItems()\">\r\n </button>\r\n\r\n <button *ngIf=\"canSetMove()\" icon=\"pi pi-undo\" pButton class=\"p-button-text p-button-secondary\"\r\n type=\"button\" pTooltip=\"B\u1ECF di chuy\u1EC3n th\u01B0 m\u1EE5c/t\u1EC7p tin \u0111\u00E3 ch\u1ECDn\" tooltipPosition=\"top\" label=\"B\u1ECF qua\"\r\n (click)=\"cancelMove()\">\r\n </button>\r\n\r\n <button *ngIf=\"hasSelect()\" pButton type=\"button\"\r\n pTooltip=\"{{ 'X\u00F3a th\u01B0 m\u1EE5c/t\u1EC7p tin \u0111\u00E3 ch\u1ECDn' | translate }}\" tooltipPosition=\"top\" icon=\"pi pi-trash\"\r\n iconPos=\"left\" class=\"p-button-text p-button-danger\" label=\"X\u00F3a\"\r\n (click)=\"deleteMutiple(model.selectedItems)\"></button>\r\n </ng-container>\r\n <button *ngIf=\"readonly && hasSelect()\" class=\"p-button-text p-button-secondary\" pButton type=\"button\"\r\n pTooltip=\"N\u00E9n & t\u1EA3i v\u1EC1\" tooltipPosition=\"top\" icon=\"fas fa-file-archive\" iconPos=\"left\" label=\"T\u1EA3i v\u1EC1\"\r\n (click)=\"downloadMultiple()\">\r\n </button>\r\n </div>\r\n <ng-container *ngTemplateOutlet=\"breadCrumb\"></ng-container>\r\n </div>\r\n\r\n <div class=\"fm-grid\">\r\n <crud-list #crudList [model]=\"model\" [setting]=\"setting\" [dataSource]=\"_dataSource\"\r\n [disableKeypressControl]=\"true\" [showScrollBar]=\"false\" class=\"--auto-height-content --no-wrapper-padding\"\r\n [widthFunctionColumn]=\"'8.2rem'\" (onReload)=\"_triggerProcessData($event)\"\r\n (onRowSelect)=\"onRowSelect($event)\">\r\n\r\n <ng-template #explorerItem let-rowData='rowData' let-col='col'>\r\n <span (click)=\"openObject(rowData)\" class=\"pull-left file-ex-icon\"\r\n [innerHTML]=\"rowData.name | fileIcon : !rowData.isFile\">\r\n </span>\r\n\r\n <span (click)=\"openObject(rowData)\" class=\"{{rowData.class}} file-ex-name\">\r\n {{rowData.name}}\r\n </span>\r\n <span *ngIf=\"rowData.signatures\" class=\"pull-right signature\" pTooltip=\"Xem chi ti\u1EBFt k\u00FD s\u1ED1\"\r\n tooltipPosition=\"top\" (click)=\"viewListSign($event, rowData.signatures)\">\r\n <i class=\"fas fa-signature\"></i>\r\n </span>\r\n </ng-template>\r\n\r\n <ng-template #fileSize let-rowData='rowData'>\r\n <div *ngIf=\"rowData.isFile\">{{rowData.fileSize | fileSize}}</div>\r\n </ng-template>\r\n\r\n <ng-template #function let-rowData=\"rowData\" let-crudList=\"crudList\">\r\n <div class=\"function-list\">\r\n <ng-container *ngIf=\"!readonly\">\r\n <button class=\"p-button-rounded p-button-text link-or-action\" pButton type=\"button\"\r\n tooltipPosition=\"top\" pTooltip=\"{{getButtonTooltip(rowData)}}\"\r\n icon=\"{{getButtonIcon(rowData)}}\" (click)=\"onButtonClick(rowData)\"></button>\r\n\r\n <button class=\"p-button-danger p-button-rounded p-button-text link-or-action\" pButton\r\n type=\"button\" pTooltip=\"X\u00F3a\" tooltipPosition=\"top\" icon=\"pi pi-trash\"\r\n (click)=\"deleteFile(rowData)\"></button>\r\n\r\n\r\n <button type=\"button\" pButton icon=\"pi pi-ellipsis-v\"\r\n class=\"link-or-action p-button-text p-button-rounded\" pTooltip=\"Th\u00EAm\" tooltipPosition=\"top\"\r\n (click)=\"showContextMenu($event, rowData)\"></button>\r\n </ng-container>\r\n <button *ngIf=\"readonly\" class=\"p-button-secondary p-button-rounded p-button-text link-or-action\"\r\n pButton type=\"button\" pTooltip=\"T\u1EA3i v\u1EC1\" tooltipPosition=\"top\" icon=\"pi pi-cloud-download\"\r\n (click)=\"download(rowData)\"></button>\r\n <button *ngIf=\"readonly\" class=\"p-button-secondary p-button-rounded p-button-text link-or-action\"\r\n pButton type=\"button\" pTooltip=\"Sao ch\u00E9p \u0111\u01B0\u1EDDng d\u1EABn\" tooltipPosition=\"top\" icon=\"pi pi-link\"\r\n (click)=\"copyDownloadLink(rowData)\"></button>\r\n </div>\r\n </ng-template>\r\n </crud-list>\r\n </div>\r\n</div>\r\n\r\n<div *ngIf=\"layout == _layout.SIMPLE\" class=\"not-full-layout\" [class.readonly]=\"readonly\">\r\n <div *ngIf=\"!readonly || data.breadcrumbs.length > 0\" class=\"fm-toolbar\">\r\n <div class=\"fm-toolbar-buttons\">\r\n <ng-container *ngIf=\"!readonly\">\r\n <button *ngIf=\"!hiddenCreateFolder\" (click)=\"createFolder()\" pButton pRipple type=\"button\"\r\n pTooltip=\"T\u1EA1o th\u01B0 m\u1EE5c m\u1EDBi\" tooltipPosition=\"top\" icon=\"pi pi-folder\" class=\"p-button-text\"\r\n label=\"T\u1EA1o th\u01B0 m\u1EE5c\" iconPos=\"left\">\r\n </button>\r\n <button type=\"button\" pButton class=\"p-button-text p-button-info link-or-action\"\r\n icon=\"pi pi-cloud-upload\" (click)=\"selectFile()\" label=\"T\u1EA3i l\u00EAn\"></button>\r\n <button pButton icon=\"pi pi-link\" pTooltip=\"T\u1EA3i t\u1EEB li\u00EAn k\u1EBFt trong h\u1EC7 th\u1ED1ng\" tooltipPosition=\"top\"\r\n type=\"button\" class=\"p-button-text p-button-primary\" label=\"T\u1EA3i li\u00EAn k\u1EBFt\"\r\n (click)=\"showAttachLinkBox = true\"></button>\r\n </ng-container>\r\n </div>\r\n <ng-container *ngTemplateOutlet=\"breadCrumb\"></ng-container>\r\n </div>\r\n\r\n <div class=\"nfl-grid\">\r\n <div *ngFor=\"let rowData of _dataSource; index as i\" class=\"nfl-item\">\r\n <div class=\"nfl-no\">\r\n {{i + 1}}.\r\n </div>\r\n\r\n <div class=\"nfl-name\">\r\n <span class=\"pull-left file-ex-icon\" [innerHTML]=\"rowData.name | fileIcon : !rowData.isFile\">\r\n </span>\r\n <!-- <a (click)=\"openObject(rowData)\" class=\"{{rowData.class}} file-ex-name\">\r\n <span>{{rowData.nameWithoutExtension}}</span>\r\n <div *ngIf=\"rowData.signatures\" class=\"signature\" pTooltip=\"Xem chi ti\u1EBFt k\u00FD s\u1ED1\"\r\n tooltipPosition=\"top\" (click)=\"viewListSign($event, rowData.signatures)\">\r\n <i class=\"fas fa-signature\"></i>\r\n </div>\r\n </a>\r\n <a (click)=\"openObject(rowData)\" class=\"file-ex-extension\">{{rowData.extension}}</a> -->\r\n\r\n <a (click)=\"openObject(rowData)\" class=\"{{rowData.class}} file-ex-name\">\r\n <span>\r\n <span>{{rowData.nameWithoutExtension}}</span>\r\n <div *ngIf=\"rowData.signatures\" class=\"signature\" pTooltip=\"Xem chi ti\u1EBFt k\u00FD s\u1ED1\"\r\n tooltipPosition=\"top\" (click)=\"viewListSign($event, rowData.signatures)\">\r\n <i class=\"fas fa-signature\"></i>\r\n </div>\r\n </span>\r\n <span class=\"file-ex-extension\">{{rowData.extension}}</span>\r\n </a>\r\n </div>\r\n\r\n <div *ngIf=\"rowData.isFile\" class=\"nfl-version\">\r\n v{{rowData.currentFileVersion}}\r\n </div>\r\n\r\n <div class=\"nfl-function\">\r\n <ng-container *ngIf=\"!readonly\">\r\n <button class=\"p-button-rounded p-button-text link-or-action\" (click)=\"onButtonClick(rowData)\"\r\n pButton type=\"button\" tooltipPosition=\"top\" pTooltip=\"{{getButtonTooltip(rowData)}}\"\r\n icon=\"{{getButtonIcon(rowData)}}\"></button>\r\n\r\n <button class=\"p-button-danger p-button-rounded p-button-text link-or-action\"\r\n (click)=\"deleteFile(rowData)\" pButton type=\"button\" pTooltip=\"X\u00F3a\" tooltipPosition=\"top\"\r\n icon=\"pi pi-trash\"></button>\r\n\r\n <button type=\"button\" pButton icon=\"pi pi-ellipsis-v\"\r\n class=\"link-or-action p-button-text p-button-rounded\" pTooltip=\"Th\u00EAm\" tooltipPosition=\"top\"\r\n (click)=\"showContextMenu($event, rowData)\"></button>\r\n </ng-container>\r\n\r\n <button *ngIf=\"readonly\" class=\"p-button-secondary p-button-rounded p-button-text link-or-action\"\r\n (click)=\"download(rowData)\" pButton type=\"button\" pTooltip=\"T\u1EA3i v\u1EC1\" tooltipPosition=\"top\"\r\n icon=\"pi pi-cloud-download\"></button>\r\n <button *ngIf=\"readonly\" class=\"p-button-secondary p-button-rounded p-button-text link-or-action\"\r\n pButton type=\"button\" pTooltip=\"Sao ch\u00E9p \u0111\u01B0\u1EDDng d\u1EABn\" tooltipPosition=\"top\" icon=\"pi pi-link\"\r\n (click)=\"copyDownloadLink(rowData)\"></button>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!_dataSource || !_dataSource.length\" class=\"nfl-no-item\">\r\n Ch\u01B0a c\u00F3 t\u00E0i li\u1EC7u \u0111\u01B0\u1EE3c t\u1EA3i l\u00EAn\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<ng-template #breadCrumb>\r\n <div *ngIf=\"data.breadcrumbs.length > 0\" class=\"fm-toolbar-path\">\r\n <p-breadcrumb class=\"customBreadCrumb\" [model]=\"data.breadcrumbs\"></p-breadcrumb>\r\n </div>\r\n</ng-template>\r\n\r\n<p-fileUpload #fileControl [ngStyle]=\"{'display': 'none'}\" mode=\"basic\" [chooseLabel]=\"chooseLabel\" name=\"file\"\r\n [url]=\"apiUploadUrl\" [maxFileSize]=\"maxFileSize\" auto=\"true\"\r\n [invalidFileSizeMessageSummary]=\"invalidFileSizeMessageSummary\"\r\n [invalidFileSizeMessageDetail]=\"invalidFileSizeMessageDetail\"\r\n [invalidFileTypeMessageSummary]=\"invalidFileTypeMessageSummary\"\r\n [invalidFileTypeMessageDetail]=\"invalidFileTypeMessageDetail\"\r\n [invalidFileLimitMessageSummary]=\"invalidFileLimitMessageSummary\"\r\n [invalidFileLimitMessageDetail]=\"invalidFileLimitMessageDetail\" (onProgress)=\"onUploadProgress($event)\"\r\n (onBeforeUpload)=\"onBeforeUpload($event)\" (onSelect)=\"handleSelectFile($event)\" (onUpload)=\"onUploaded($event)\">\r\n</p-fileUpload>\r\n<p-contextMenu #contextMenu [appendTo]=\"'body'\" [model]=\"data.itemsMenuFile\" styleClass=\"fm-contextMenu-panel\">\r\n</p-contextMenu>\r\n\r\n<!-- T\u1EA1o m\u1EDBi/ \u0111\u1ED5i t\u00EAn th\u01B0 m\u1EE5c -->\r\n<tn-dialog *ngIf=\"forms.createFolder.show\" #dialog [styleClass]=\"'address-form'\"\r\n [header]=\"forms.createFolder.header | translate\" [popupSize]=\"forms[formIds.createFolder].popupSize\"\r\n (onHide)=\"onCancelForm(formIds.createFolder)\">\r\n <folder-form #formBase [parentModel]=\"model\" [parentContext]=\"context\"\r\n [model]=\"forms[formIds.createFolder].formData\" (onSaved)=\"onSavedForm(formIds.createFolder)\"\r\n (onCancel)=\"onCancelForm(formIds.createFolder)\">\r\n </folder-form>\r\n</tn-dialog>\r\n\r\n<!-- \u0110\u1ED5i t\u00EAn file -->\r\n<tn-dialog *ngIf=\"forms.renameFile.show\" #dialog [styleClass]=\"'address-form'\"\r\n [header]=\"forms.renameFile.header | translate\" [popupSize]=\"forms[formIds.renameFile].popupSize\"\r\n (onHide)=\"onCancelForm(formIds.renameFile)\">\r\n <file-form #formBase [parentModel]=\"model\" [parentContext]=\"context\" [model]=\"forms[formIds.renameFile].formData\"\r\n (onSaved)=\"onSavedForm(formIds.renameFile)\" (onCancel)=\"onCancelForm(formIds.renameFile)\">\r\n </file-form>\r\n</tn-dialog>\r\n\r\n<!-- Xem file tr\u1EF1c tuy\u1EBFn -->\r\n<file-viewer *ngIf=\"forms.fileViewer.show\" [parentModel]=\"model\" [parentContext]=\"context\" [readonly]=\"readonly\"\r\n [model]=\"forms.fileViewer.formData\" (onClose)=\"closeFileViewer()\">\r\n</file-viewer>\r\n\r\n<!-- Xem phi\u00EAn b\u1EA3n -->\r\n<tn-dialog *ngIf=\"forms.fileVersionList.show\" #dialog [styleClass]=\"'address-form'\"\r\n [header]=\"forms.fileVersionList.header | translate\" [popupSize]=\"forms[formIds.fileVersionList].popupSize\"\r\n (onHide)=\"onCancelForm(formIds.fileVersionList)\">\r\n <file-version-list *ngIf=\"forms.fileVersionList.show\" [parentModel]=\"model\" [parentContext]=\"context\"\r\n [fileId]=\"forms[formIds.fileVersionList].fileId\" [readonly]=\"readonly\">\r\n </file-version-list>\r\n</tn-dialog>\r\n\r\n<tn-dialog *ngIf=\"showAttachLinkBox\" #dialog2 [maximizable]=\"false\" [header]=\"'Nh\u1EADp li\u00EAn k\u1EBFt' | translate\"\r\n [popupSize]=\"{ width: 600, height: 50}\" (onHide)=\"showAttachLinkBox = false; typedLink=''\">\r\n <div class=\"p-col-12\">\r\n <div class=\"p-grid\">\r\n <div class=\"p-md-10\">\r\n <input #input type=\"text\" placeholder=\"Nh\u1EADp li\u00EAn k\u1EBFt sao ch\u00E9p t\u1EEB t\u1EC7p tin kh\u00E1c...\"\r\n (keyup.enter)=\"addAttachLink()\" pInputText [(ngModel)]=\"typedLink\" class=\"p-col-12\" />\r\n </div>\r\n <div class=\"p-md-2\">\r\n <button type=\"button\" (click)=\"addAttachLink()\" [disabled]=\"typedLink != ''? null : true\" pButton\r\n class=\"p-button-primary p-col-12\" label=\"Ok\"></button>\r\n </div>\r\n </div>\r\n </div>\r\n <after-view-checked (loaded)=\"focusInput(input)\"></after-view-checked>\r\n</tn-dialog>\r\n<!--\r\n\r\n<share-file *ngIf=\"forms.shareFile.show\" [parentDataModel]=\"model\" [parentDataContext]=\"context\"\r\n [model]=\"forms.shareFile.formData\">\r\n</share-file>\r\n\r\n<share-folder *ngIf=\"forms.shareFolder.show\" [parentDataModel]=\"model\" [parentDataContext]=\"context\"\r\n [model]=\"forms.shareFolder.formData\">\r\n</share-folder>\r\n -->\r\n\r\n<!-- Xem ch\u1EEF k\u00FD s\u1ED1 -->\r\n<tn-dialog *ngIf=\"forms.signatureDetail.show\" #dialog [styleClass]=\"'address-form'\"\r\n [header]=\"forms.signatureDetail.header | translate\" [popupSize]=\"forms[formIds.signatureDetail].popupSize\"\r\n (onHide)=\"onCancelForm(formIds.signatureDetail)\">\r\n <signature-detail [parentModel]=\"model\" [parentContext]=\"context\">\r\n </signature-detail>\r\n</tn-dialog>\r\n<!--K\u00FD s\u1ED1 sim-->\r\n<tn-dialog *ngIf=\"forms.kySoSim.show\" #dialog [styleClass]=\"'address-form'\" [header]=\"forms.kySoSim.header | translate\"\r\n [popupSize]=\"forms.kySoSim.popupSize\" [showFooter]=\"true\" (onHide)=\"onCancelForm(formIds.kySoSim)\">\r\n <app-file-ky-so-sim #fileKySoSim [parentModel]=\"model\" [parentContext]=\"context\">\r\n </app-file-ky-so-sim>\r\n <ng-template #footer>\r\n <button type=\"button\" pButton icon=\"fas fa-images\" [disabled]=\"model.submitting\" class=\"p-button-text\"\r\n [label]=\"'Ch\u1ECDn ch\u1EEF k\u00FD' | translate\" (click)=\"chonChuKy()\"></button>\r\n <button type=\"button\" pButton icon=\"fas fa-signature\" class=\"p-button-text ui-button-success\"\r\n [disabled]=\"model.submitting\" [label]=\"'Th\u1EF1c hi\u1EC7n k\u00FD' | translate\" (click)=\"kySo()\"></button>\r\n <button type=\"button\" pButton icon=\"pi pi-replay\" class=\"p-button-text p-button-secondary\"\r\n [label]=\"'FORM.CANCEL' | translate\" preventTab (click)=\"forms.kySoSim.show=false\"></button>\r\n </ng-template>\r\n</tn-dialog>",
|
|
32127
|
+
template: "<div *ngIf=\"layout == _layout.LIST\" class=\"full-layout\">\r\n <div class=\"fm-toolbar\">\r\n <div class=\"fm-toolbar-buttons\">\r\n <ng-container *ngIf=\"!readonly\">\r\n <button *ngIf=\"!hiddenCreateFolder\" pButton pRipple type=\"button\" pTooltip=\"T\u1EA1o th\u01B0 m\u1EE5c m\u1EDBi\"\r\n tooltipPosition=\"top\" icon=\"pi pi-folder\" class=\"p-button-text\" label=\"T\u1EA1o th\u01B0 m\u1EE5c\" iconPos=\"left\"\r\n (click)=\"createFolder()\">\r\n </button>\r\n\r\n <button pButton icon=\"pi pi-cloud-upload\" pTooltip=\"T\u1EA3i t\u1EC7p tin t\u1EEB m\u00E1y t\u00EDnh c\u1EE7a b\u1EA1n\"\r\n tooltipPosition=\"top\" type=\"button\" class=\"p-button-text p-button-primary\" label=\"T\u1EA3i l\u00EAn\"\r\n (click)=\"selectFile()\"></button>\r\n\r\n <button pButton icon=\"pi pi-link\" pTooltip=\"T\u1EA3i t\u1EEB li\u00EAn k\u1EBFt trong h\u1EC7 th\u1ED1ng\" tooltipPosition=\"top\"\r\n type=\"button\" class=\"p-button-text p-button-primary\" label=\"T\u1EA3i li\u00EAn k\u1EBFt\"\r\n (click)=\"showAttachLinkBox = true\"></button>\r\n\r\n <button *ngIf=\"canSelect()\" class=\"p-button-text p-button-success\" pButton type=\"button\"\r\n pTooltip=\"Di chuy\u1EC3n th\u01B0 m\u1EE5c/t\u1EC7p tin \u0111\u00E3 ch\u1ECDn\" tooltipPosition=\"top\" icon=\"fas fa-arrows-alt\"\r\n iconPos=\"left\" label=\"Di chuy\u1EC3n\" (click)=\"moveExplorerItems()\">\r\n </button>\r\n\r\n <button *ngIf=\"canSetMove()\" class=\"p-button-text p-button-success\" pButton type=\"button\"\r\n pTooltip=\"Di chuy\u1EC3n th\u01B0 m\u1EE5c/t\u1EC7p tin \u0111\u00E3 ch\u1ECDn t\u1EDBi \u0111\u00E2y\" tooltipPosition=\"top\" icon=\"far fa-hand-paper\"\r\n iconPos=\"left\" label=\"\u0110\u1EB7t t\u1EA1i \u0111\u00E2y\" (click)=\"setMoveExplorerItems()\">\r\n </button>\r\n\r\n <button *ngIf=\"canSetMove()\" icon=\"pi pi-undo\" pButton class=\"p-button-text p-button-secondary\"\r\n type=\"button\" pTooltip=\"B\u1ECF di chuy\u1EC3n th\u01B0 m\u1EE5c/t\u1EC7p tin \u0111\u00E3 ch\u1ECDn\" tooltipPosition=\"top\" label=\"B\u1ECF qua\"\r\n (click)=\"cancelMove()\">\r\n </button>\r\n\r\n <button *ngIf=\"hasSelect()\" pButton type=\"button\"\r\n pTooltip=\"{{ 'X\u00F3a th\u01B0 m\u1EE5c/t\u1EC7p tin \u0111\u00E3 ch\u1ECDn' | translate }}\" tooltipPosition=\"top\" icon=\"pi pi-trash\"\r\n iconPos=\"left\" class=\"p-button-text p-button-danger\" label=\"X\u00F3a\"\r\n (click)=\"deleteMutiple(model.selectedItems)\"></button>\r\n </ng-container>\r\n <button *ngIf=\"readonly && hasSelect()\" class=\"p-button-text p-button-secondary\" pButton type=\"button\"\r\n pTooltip=\"N\u00E9n & t\u1EA3i v\u1EC1\" tooltipPosition=\"top\" icon=\"fas fa-file-archive\" iconPos=\"left\" label=\"T\u1EA3i v\u1EC1\"\r\n (click)=\"downloadMultiple()\">\r\n </button>\r\n </div>\r\n <ng-container *ngTemplateOutlet=\"breadCrumb\"></ng-container>\r\n </div>\r\n\r\n <div class=\"fm-grid\">\r\n <crud-list #crudList [model]=\"model\" [setting]=\"setting\" [dataSource]=\"_dataSource\"\r\n [disableKeypressControl]=\"true\" [showScrollBar]=\"false\" class=\"--auto-height-content --no-wrapper-padding\"\r\n [widthFunctionColumn]=\"'8.2rem'\" (onReload)=\"_triggerProcessData($event)\"\r\n (onRowSelect)=\"onRowSelect($event)\">\r\n\r\n <ng-template #explorerItem let-rowData='rowData' let-col='col'>\r\n <span (click)=\"openObject(rowData)\" class=\"pull-left file-ex-icon\"\r\n [innerHTML]=\"rowData.name | fileIcon : !rowData.isFile\">\r\n </span>\r\n\r\n <span (click)=\"openObject(rowData)\" class=\"{{rowData.class}} file-ex-name\">\r\n {{rowData.name}}\r\n </span>\r\n <span *ngIf=\"rowData.signatures\" class=\"pull-right signature\" pTooltip=\"Xem chi ti\u1EBFt k\u00FD s\u1ED1\"\r\n tooltipPosition=\"top\" (click)=\"viewListSign($event, rowData.signatures)\">\r\n <i class=\"fas fa-signature\"></i>\r\n </span>\r\n </ng-template>\r\n\r\n <ng-template #fileSize let-rowData='rowData'>\r\n <div *ngIf=\"rowData.isFile\">{{rowData.fileSize | fileSize}}</div>\r\n </ng-template>\r\n\r\n <ng-template #function let-rowData=\"rowData\" let-crudList=\"crudList\">\r\n <div class=\"function-list\">\r\n <ng-container *ngIf=\"!readonly\">\r\n <button class=\"p-button-rounded p-button-text link-or-action\" pButton type=\"button\"\r\n tooltipPosition=\"top\" pTooltip=\"{{getButtonTooltip(rowData)}}\"\r\n icon=\"{{getButtonIcon(rowData)}}\" (click)=\"onButtonClick(rowData)\"></button>\r\n\r\n <button class=\"p-button-danger p-button-rounded p-button-text link-or-action\" pButton\r\n type=\"button\" pTooltip=\"X\u00F3a\" tooltipPosition=\"top\" icon=\"pi pi-trash\"\r\n (click)=\"deleteFile(rowData)\"></button>\r\n\r\n\r\n <button type=\"button\" pButton icon=\"pi pi-ellipsis-v\"\r\n class=\"link-or-action p-button-text p-button-rounded\" pTooltip=\"Th\u00EAm\" tooltipPosition=\"top\"\r\n (click)=\"showContextMenu($event, rowData)\"></button>\r\n </ng-container>\r\n <button *ngIf=\"readonly\" class=\"p-button-secondary p-button-rounded p-button-text link-or-action\"\r\n pButton type=\"button\" pTooltip=\"T\u1EA3i v\u1EC1\" tooltipPosition=\"top\" icon=\"pi pi-cloud-download\"\r\n (click)=\"download(rowData)\"></button>\r\n <button *ngIf=\"readonly\" class=\"p-button-secondary p-button-rounded p-button-text link-or-action\"\r\n pButton type=\"button\" pTooltip=\"Sao ch\u00E9p \u0111\u01B0\u1EDDng d\u1EABn\" tooltipPosition=\"top\" icon=\"pi pi-link\"\r\n (click)=\"copyDownloadLink(rowData)\"></button>\r\n </div>\r\n </ng-template>\r\n </crud-list>\r\n </div>\r\n</div>\r\n\r\n<div *ngIf=\"layout == _layout.SIMPLE\" class=\"not-full-layout\" [class.readonly]=\"readonly\">\r\n <div *ngIf=\"!readonly || data.breadcrumbs.length > 0\" class=\"fm-toolbar\">\r\n <div class=\"fm-toolbar-buttons\">\r\n <ng-container *ngIf=\"!readonly\">\r\n <button *ngIf=\"!hiddenCreateFolder\" (click)=\"createFolder()\" pButton pRipple type=\"button\"\r\n pTooltip=\"T\u1EA1o th\u01B0 m\u1EE5c m\u1EDBi\" tooltipPosition=\"top\" icon=\"pi pi-folder\" class=\"p-button-text\"\r\n label=\"T\u1EA1o th\u01B0 m\u1EE5c\" iconPos=\"left\">\r\n </button>\r\n <button type=\"button\" pButton class=\"p-button-text p-button-info link-or-action\"\r\n icon=\"pi pi-cloud-upload\" (click)=\"selectFile()\" label=\"T\u1EA3i l\u00EAn\"></button>\r\n <button pButton icon=\"pi pi-link\" pTooltip=\"T\u1EA3i t\u1EEB li\u00EAn k\u1EBFt trong h\u1EC7 th\u1ED1ng\" tooltipPosition=\"top\"\r\n type=\"button\" class=\"p-button-text p-button-primary\" label=\"T\u1EA3i li\u00EAn k\u1EBFt\"\r\n (click)=\"showAttachLinkBox = true\"></button>\r\n </ng-container>\r\n </div>\r\n <ng-container *ngTemplateOutlet=\"breadCrumb\"></ng-container>\r\n </div>\r\n\r\n <div class=\"nfl-grid\">\r\n <div *ngFor=\"let rowData of _dataSource; index as i\" class=\"nfl-item\">\r\n <div class=\"nfl-no\">\r\n {{i + 1}}.\r\n </div>\r\n\r\n <div class=\"nfl-name\">\r\n <span class=\"pull-left file-ex-icon\" [innerHTML]=\"rowData.name | fileIcon : !rowData.isFile\">\r\n </span>\r\n <!-- <a (click)=\"openObject(rowData)\" class=\"{{rowData.class}} file-ex-name\">\r\n <span>{{rowData.nameWithoutExtension}}</span>\r\n <div *ngIf=\"rowData.signatures\" class=\"signature\" pTooltip=\"Xem chi ti\u1EBFt k\u00FD s\u1ED1\"\r\n tooltipPosition=\"top\" (click)=\"viewListSign($event, rowData.signatures)\">\r\n <i class=\"fas fa-signature\"></i>\r\n </div>\r\n </a>\r\n <a (click)=\"openObject(rowData)\" class=\"file-ex-extension\">{{rowData.extension}}</a> -->\r\n\r\n <a (click)=\"openObject(rowData)\" class=\"{{rowData.class}} file-ex-name\">\r\n <span>\r\n <span>{{rowData.name}}</span>\r\n <div *ngIf=\"rowData.signatures\" class=\"signature\" pTooltip=\"Xem chi ti\u1EBFt k\u00FD s\u1ED1\"\r\n tooltipPosition=\"top\" (click)=\"viewListSign($event, rowData.signatures)\">\r\n <i class=\"fas fa-signature\"></i>\r\n </div>\r\n </span>\r\n <!-- <span class=\"file-ex-extension\">{{rowData.extension}}</span> -->\r\n </a>\r\n </div>\r\n\r\n <div *ngIf=\"rowData.isFile\" class=\"nfl-version\">\r\n v{{rowData.currentFileVersion}}\r\n </div>\r\n\r\n <div class=\"nfl-function\">\r\n <ng-container *ngIf=\"!readonly\">\r\n <button class=\"p-button-rounded p-button-text link-or-action\" (click)=\"onButtonClick(rowData)\"\r\n pButton type=\"button\" tooltipPosition=\"top\" pTooltip=\"{{getButtonTooltip(rowData)}}\"\r\n icon=\"{{getButtonIcon(rowData)}}\"></button>\r\n\r\n <button class=\"p-button-danger p-button-rounded p-button-text link-or-action\"\r\n (click)=\"deleteFile(rowData)\" pButton type=\"button\" pTooltip=\"X\u00F3a\" tooltipPosition=\"top\"\r\n icon=\"pi pi-trash\"></button>\r\n </ng-container>\r\n\r\n <button *ngIf=\"readonly\" class=\"p-button-secondary p-button-rounded p-button-text link-or-action\"\r\n (click)=\"download(rowData)\" pButton type=\"button\" pTooltip=\"T\u1EA3i v\u1EC1\" tooltipPosition=\"top\"\r\n icon=\"pi pi-cloud-download\"></button>\r\n <button *ngIf=\"readonly\" class=\"p-button-secondary p-button-rounded p-button-text link-or-action\"\r\n pButton type=\"button\" pTooltip=\"Sao ch\u00E9p \u0111\u01B0\u1EDDng d\u1EABn\" tooltipPosition=\"top\" icon=\"pi pi-link\"\r\n (click)=\"copyDownloadLink(rowData)\"></button>\r\n <button type=\"button\" pButton icon=\"pi pi-ellipsis-v\"\r\n class=\"link-or-action p-button-text p-button-rounded\" pTooltip=\"Th\u00EAm\" tooltipPosition=\"top\"\r\n (click)=\"showContextMenu($event, rowData)\"></button>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!_dataSource || !_dataSource.length\" class=\"nfl-no-item\">\r\n Ch\u01B0a c\u00F3 t\u00E0i li\u1EC7u \u0111\u01B0\u1EE3c t\u1EA3i l\u00EAn\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<ng-template #breadCrumb>\r\n <div *ngIf=\"data.breadcrumbs.length > 0\" class=\"fm-toolbar-path\">\r\n <p-breadcrumb class=\"customBreadCrumb\" [model]=\"data.breadcrumbs\"></p-breadcrumb>\r\n </div>\r\n</ng-template>\r\n\r\n<p-fileUpload #fileControl [ngStyle]=\"{'display': 'none'}\" mode=\"basic\" [chooseLabel]=\"chooseLabel\" name=\"file\"\r\n [url]=\"apiUploadUrl\" [maxFileSize]=\"maxFileSize\" auto=\"true\"\r\n [invalidFileSizeMessageSummary]=\"invalidFileSizeMessageSummary\"\r\n [invalidFileSizeMessageDetail]=\"invalidFileSizeMessageDetail\"\r\n [invalidFileTypeMessageSummary]=\"invalidFileTypeMessageSummary\"\r\n [invalidFileTypeMessageDetail]=\"invalidFileTypeMessageDetail\"\r\n [invalidFileLimitMessageSummary]=\"invalidFileLimitMessageSummary\"\r\n [invalidFileLimitMessageDetail]=\"invalidFileLimitMessageDetail\" (onProgress)=\"onUploadProgress($event)\"\r\n (onBeforeUpload)=\"onBeforeUpload($event)\" (onSelect)=\"handleSelectFile($event)\" (onUpload)=\"onUploaded($event)\">\r\n</p-fileUpload>\r\n<p-contextMenu #contextMenu [appendTo]=\"'body'\" [model]=\"data.itemsMenuFile\" styleClass=\"fm-contextMenu-panel\">\r\n</p-contextMenu>\r\n\r\n<!-- T\u1EA1o m\u1EDBi/ \u0111\u1ED5i t\u00EAn th\u01B0 m\u1EE5c -->\r\n<tn-dialog *ngIf=\"forms.createFolder.show\" #dialog [styleClass]=\"'address-form'\"\r\n [header]=\"forms.createFolder.header | translate\" [popupSize]=\"forms[formIds.createFolder].popupSize\"\r\n (onHide)=\"onCancelForm(formIds.createFolder)\">\r\n <folder-form #formBase [parentModel]=\"model\" [parentContext]=\"context\"\r\n [model]=\"forms[formIds.createFolder].formData\" (onSaved)=\"onSavedForm(formIds.createFolder)\"\r\n (onCancel)=\"onCancelForm(formIds.createFolder)\">\r\n </folder-form>\r\n</tn-dialog>\r\n\r\n<!-- \u0110\u1ED5i t\u00EAn file -->\r\n<tn-dialog *ngIf=\"forms.renameFile.show\" #dialog [styleClass]=\"'address-form'\"\r\n [header]=\"forms.renameFile.header | translate\" [popupSize]=\"forms[formIds.renameFile].popupSize\"\r\n (onHide)=\"onCancelForm(formIds.renameFile)\">\r\n <file-form #formBase [parentModel]=\"model\" [parentContext]=\"context\" [model]=\"forms[formIds.renameFile].formData\"\r\n (onSaved)=\"onSavedForm(formIds.renameFile)\" (onCancel)=\"onCancelForm(formIds.renameFile)\">\r\n </file-form>\r\n</tn-dialog>\r\n\r\n<!-- Xem file tr\u1EF1c tuy\u1EBFn -->\r\n<file-viewer *ngIf=\"forms.fileViewer.show\" [parentModel]=\"model\" [parentContext]=\"context\" [readonly]=\"readonly\"\r\n [model]=\"forms.fileViewer.formData\" (onClose)=\"closeFileViewer()\">\r\n</file-viewer>\r\n\r\n<!-- Xem phi\u00EAn b\u1EA3n -->\r\n<tn-dialog *ngIf=\"forms.fileVersionList.show\" #dialog [styleClass]=\"'address-form'\"\r\n [header]=\"forms.fileVersionList.header | translate\" [popupSize]=\"forms[formIds.fileVersionList].popupSize\"\r\n (onHide)=\"onCancelForm(formIds.fileVersionList)\">\r\n <file-version-list *ngIf=\"forms.fileVersionList.show\" [parentModel]=\"model\" [parentContext]=\"context\"\r\n [fileId]=\"forms[formIds.fileVersionList].fileId\" [readonly]=\"readonly\">\r\n </file-version-list>\r\n</tn-dialog>\r\n\r\n<tn-dialog *ngIf=\"showAttachLinkBox\" #dialog2 [maximizable]=\"false\" [header]=\"'Nh\u1EADp li\u00EAn k\u1EBFt' | translate\"\r\n [popupSize]=\"{ width: 600, height: 50}\" (onHide)=\"showAttachLinkBox = false; typedLink=''\">\r\n <div class=\"p-col-12\">\r\n <div class=\"p-grid\">\r\n <div class=\"p-md-10\">\r\n <input #input type=\"text\" placeholder=\"Nh\u1EADp li\u00EAn k\u1EBFt sao ch\u00E9p t\u1EEB t\u1EC7p tin kh\u00E1c...\"\r\n (keyup.enter)=\"addAttachLink()\" pInputText [(ngModel)]=\"typedLink\" class=\"p-col-12\" />\r\n </div>\r\n <div class=\"p-md-2\">\r\n <button type=\"button\" (click)=\"addAttachLink()\" [disabled]=\"typedLink != ''? null : true\" pButton\r\n class=\"p-button-primary p-col-12\" label=\"Ok\"></button>\r\n </div>\r\n </div>\r\n </div>\r\n <after-view-checked (loaded)=\"focusInput(input)\"></after-view-checked>\r\n</tn-dialog>\r\n<!--\r\n\r\n<share-file *ngIf=\"forms.shareFile.show\" [parentDataModel]=\"model\" [parentDataContext]=\"context\"\r\n [model]=\"forms.shareFile.formData\">\r\n</share-file>\r\n\r\n<share-folder *ngIf=\"forms.shareFolder.show\" [parentDataModel]=\"model\" [parentDataContext]=\"context\"\r\n [model]=\"forms.shareFolder.formData\">\r\n</share-folder>\r\n -->\r\n\r\n<!-- Xem ch\u1EEF k\u00FD s\u1ED1 -->\r\n<tn-dialog *ngIf=\"forms.signatureDetail.show\" #dialog [styleClass]=\"'address-form'\"\r\n [header]=\"forms.signatureDetail.header | translate\" [popupSize]=\"forms[formIds.signatureDetail].popupSize\"\r\n (onHide)=\"onCancelForm(formIds.signatureDetail)\">\r\n <signature-detail [parentModel]=\"model\" [parentContext]=\"context\">\r\n </signature-detail>\r\n</tn-dialog>\r\n<!--K\u00FD s\u1ED1 sim-->\r\n<tn-dialog *ngIf=\"forms.kySoSim.show\" #dialog [styleClass]=\"'address-form'\" [header]=\"forms.kySoSim.header | translate\"\r\n [popupSize]=\"forms.kySoSim.popupSize\" [showFooter]=\"true\" (onHide)=\"onCancelForm(formIds.kySoSim)\">\r\n <app-file-ky-so-sim #fileKySoSim [parentModel]=\"model\" [parentContext]=\"context\">\r\n </app-file-ky-so-sim>\r\n <ng-template #footer>\r\n <button type=\"button\" pButton icon=\"fas fa-images\" [disabled]=\"model.submitting\" class=\"p-button-text\"\r\n [label]=\"'Ch\u1ECDn ch\u1EEF k\u00FD' | translate\" (click)=\"chonChuKy()\"></button>\r\n <button type=\"button\" pButton icon=\"fas fa-signature\" class=\"p-button-text ui-button-success\"\r\n [disabled]=\"model.submitting\" [label]=\"'Th\u1EF1c hi\u1EC7n k\u00FD' | translate\" (click)=\"kySo()\"></button>\r\n <button type=\"button\" pButton icon=\"pi pi-replay\" class=\"p-button-text p-button-secondary\"\r\n [label]=\"'FORM.CANCEL' | translate\" preventTab (click)=\"forms.kySoSim.show=false\"></button>\r\n </ng-template>\r\n</tn-dialog>",
|
|
32075
32128
|
providers: [
|
|
32076
32129
|
{
|
|
32077
32130
|
provide: NG_VALUE_ACCESSOR,
|
|
@@ -32080,7 +32133,7 @@ FileManagerComponent.decorators = [
|
|
|
32080
32133
|
},
|
|
32081
32134
|
ComponentContextService
|
|
32082
32135
|
],
|
|
32083
|
-
styles: [".file-header-tab a{color:#000!important}.file-ex-name:hover{cursor:pointer}.file-ex-name .signature{margin-left:3px}.file-ex-row:hover{background:#e8e8e8}.function-list{text-align:center}.function-list a{margin:5px}.function-list a:hover{color:#6aa3d4}.file-btn{color:#337ab7;cursor:pointer;display:inline-block;font-size:1.1em;line-height:45px;margin-left:10px;padding:5px;vertical-align:middle}.file-btn:hover{color:#3ea8ff}.file-btn i{font-size:1.2em;margin-right:10px}.file-action{text-align:right}.file-row-action i{margin-right:5px}.file-row-action{line-height:34px}.function-list .topbar-items{margin-top:0}.function-list .topbar-items>li .topbar-icon{color:#909090}.function-list .topbar-items>li .topbar-icon:hover{color:#444}.function-list .topbar-items>li>ul{border-top:0;right:15px;top:30px}.function-list .topbar-items>li>ul:before{display:none}.function-list .topbar-items>li.active-top-menu>ul{z-index:1}.function-list .layout-menu li a{border:none;margin:0;text-align:left}.function-list .layout-menu li a i:first-child{color:#666f77;font-size:1.2em}.group-link-share{height:34px}.txt-link-share{max-width:335px!important}.btn-copy-link-share{font-size:small!important}.tbl-checkbox-header{width:3em}.tbl-checkbox{text-align:center;width:3em}.my-drive-checkbox{background-color:#fff;border:1px solid #ccc;box-shadow:inset 0 1px 1px rgba(0,0,0,.075);height:20px;text-align:center;transition:border-color .3s,background-color .3s,box-shadow .3s;width:20px}.get-link-share{cursor:pointer;float:right}.file-toolbar{text-align:right}.function-topbar button:last-child{margin-right:0!important}::ng-deep body>.fm-contextMenu-panel{min-width:210px}.folderUnClickable{pointer-events:none}::ng-deep file-manager .file-menu.ui-menu ul li a{text-align:left!important}::ng-deep file-manager .item-inline-name .ui-tooltip-text{white-space:normal;word-break:break-word}::ng-deep file-manager .full-layout .fm-grid a{display:flex;padding-top:5px}::ng-deep file-manager .full-layout .fm-grid a .file-ex-icon{margin-right:5px}::ng-deep file-manager .full-layout .fm-grid a .file-ex-icon:hover{cursor:pointer}::ng-deep file-manager .fm-toolbar{align-items:center;display:flex;padding-bottom:.5em;padding-left:0;padding-top:.5em}::ng-deep file-manager .fm-toolbar .fm-toolbar-buttons{align-items:center;display:flex;padding-left:3px}::ng-deep file-manager .fm-toolbar .fm-toolbar-path{flex:1 1;margin-left:2em;position:relative}::ng-deep file-manager .fm-toolbar .fm-toolbar-path>p-breadcrumb .p-breadcrumb{background:transparent}::ng-deep file-manager .fm-toolbar .fm-toolbar-path>p-breadcrumb>div{border:none;padding:0}::ng-deep file-manager .fm-toolbar .fm-toolbar-path>p-breadcrumb ul li:not(:last-child)>a{cursor:pointer}::ng-deep file-manager .fm-toolbar .fm-toolbar-path>p-breadcrumb ul li:not(:last-child)>a .p-menuitem-text{color:#2196f3}::ng-deep file-manager .fm-toolbar .fm-toolbar-path>p-breadcrumb ul li:last-child .p-menuitem-text{color:rgba(255,102,0,.685)}::ng-deep file-manager .fm-toolbar .fm-toolbar-path:after{background:#b8b8b8;content:\"\";height:100%;left:-1.4em;position:absolute;top:0;width:2px}::ng-deep file-manager .not-full-layout{border-radius:5px}::ng-deep file-manager .not-full-layout .nfl-grid .nfl-item{display:flex}::ng-deep file-manager .not-full-layout .nfl-grid .nfl-item .nfl-function,::ng-deep file-manager .not-full-layout .nfl-grid .nfl-item .nfl-name,::ng-deep file-manager .not-full-layout .nfl-grid .nfl-item .nfl-no,::ng-deep file-manager .not-full-layout .nfl-grid .nfl-item .nfl-version{align-items:center;display:flex;justify-content:center}::ng-deep file-manager .not-full-layout .nfl-grid .nfl-item .nfl-no{flex:0 0 30px}::ng-deep file-manager .not-full-layout .nfl-grid .nfl-item .nfl-name{flex:1 1;justify-content:left;margin-right:1em}::ng-deep file-manager .not-full-layout .nfl-grid .nfl-item .nfl-name
|
|
32136
|
+
styles: [".file-header-tab a{color:#000!important}.file-ex-name:hover{cursor:pointer}.file-ex-name .signature{margin-left:3px}.file-ex-row:hover{background:#e8e8e8}.function-list{text-align:center}.function-list a{margin:5px}.function-list a:hover{color:#6aa3d4}.file-btn{color:#337ab7;cursor:pointer;display:inline-block;font-size:1.1em;line-height:45px;margin-left:10px;padding:5px;vertical-align:middle}.file-btn:hover{color:#3ea8ff}.file-btn i{font-size:1.2em;margin-right:10px}.file-action{text-align:right}.file-row-action i{margin-right:5px}.file-row-action{line-height:34px}.function-list .topbar-items{margin-top:0}.function-list .topbar-items>li .topbar-icon{color:#909090}.function-list .topbar-items>li .topbar-icon:hover{color:#444}.function-list .topbar-items>li>ul{border-top:0;right:15px;top:30px}.function-list .topbar-items>li>ul:before{display:none}.function-list .topbar-items>li.active-top-menu>ul{z-index:1}.function-list .layout-menu li a{border:none;margin:0;text-align:left}.function-list .layout-menu li a i:first-child{color:#666f77;font-size:1.2em}.group-link-share{height:34px}.txt-link-share{max-width:335px!important}.btn-copy-link-share{font-size:small!important}.tbl-checkbox-header{width:3em}.tbl-checkbox{text-align:center;width:3em}.my-drive-checkbox{background-color:#fff;border:1px solid #ccc;box-shadow:inset 0 1px 1px rgba(0,0,0,.075);height:20px;text-align:center;transition:border-color .3s,background-color .3s,box-shadow .3s;width:20px}.get-link-share{cursor:pointer;float:right}.file-toolbar{text-align:right}.function-topbar button:last-child{margin-right:0!important}::ng-deep body>.fm-contextMenu-panel{min-width:210px}.folderUnClickable{pointer-events:none}::ng-deep file-manager .file-menu.ui-menu ul li a{text-align:left!important}::ng-deep file-manager .item-inline-name .ui-tooltip-text{white-space:normal;word-break:break-word}::ng-deep file-manager .full-layout .fm-grid a{display:flex;padding-top:5px}::ng-deep file-manager .full-layout .fm-grid a .file-ex-icon{margin-right:5px}::ng-deep file-manager .full-layout .fm-grid a .file-ex-icon:hover{cursor:pointer}::ng-deep file-manager .fm-toolbar{align-items:center;display:flex;padding-bottom:.5em;padding-left:0;padding-top:.5em}::ng-deep file-manager .fm-toolbar .fm-toolbar-buttons{align-items:center;display:flex;padding-left:3px}::ng-deep file-manager .fm-toolbar .fm-toolbar-path{flex:1 1;margin-left:2em;position:relative}::ng-deep file-manager .fm-toolbar .fm-toolbar-path>p-breadcrumb .p-breadcrumb{background:transparent}::ng-deep file-manager .fm-toolbar .fm-toolbar-path>p-breadcrumb>div{border:none;padding:0}::ng-deep file-manager .fm-toolbar .fm-toolbar-path>p-breadcrumb ul li:not(:last-child)>a{cursor:pointer}::ng-deep file-manager .fm-toolbar .fm-toolbar-path>p-breadcrumb ul li:not(:last-child)>a .p-menuitem-text{color:#2196f3}::ng-deep file-manager .fm-toolbar .fm-toolbar-path>p-breadcrumb ul li:last-child .p-menuitem-text{color:rgba(255,102,0,.685)}::ng-deep file-manager .fm-toolbar .fm-toolbar-path:after{background:#b8b8b8;content:\"\";height:100%;left:-1.4em;position:absolute;top:0;width:2px}::ng-deep file-manager .not-full-layout{border-radius:5px}::ng-deep file-manager .not-full-layout .nfl-grid .nfl-item{display:flex}::ng-deep file-manager .not-full-layout .nfl-grid .nfl-item .nfl-function,::ng-deep file-manager .not-full-layout .nfl-grid .nfl-item .nfl-name,::ng-deep file-manager .not-full-layout .nfl-grid .nfl-item .nfl-no,::ng-deep file-manager .not-full-layout .nfl-grid .nfl-item .nfl-version{align-items:center;display:flex;justify-content:center}::ng-deep file-manager .not-full-layout .nfl-grid .nfl-item .nfl-no{flex:0 0 30px}::ng-deep file-manager .not-full-layout .nfl-grid .nfl-item .nfl-name{display:flex;flex:1 1;justify-content:left;margin-right:1em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}::ng-deep file-manager .not-full-layout .nfl-grid .nfl-item .nfl-name .file-ex-name{display:flex;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:100%}::ng-deep file-manager .not-full-layout .nfl-grid .nfl-item .nfl-name .file-ex-name>span:not(.file-ex-extension){display:flex;justify-content:space-between;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:100%}::ng-deep file-manager .not-full-layout .nfl-grid .nfl-item .nfl-version{flex:0 0 auto;font-size:.85rem;font-weight:700;margin-right:5px}::ng-deep file-manager .not-full-layout .nfl-grid .nfl-no-item{align-items:center;display:flex;justify-content:left;padding:1em}::ng-deep td file-manager .not-full-layout .nfl-grid .nfl-no-item{align-items:center;display:flex;justify-content:center;padding:8px}"]
|
|
32084
32137
|
},] }
|
|
32085
32138
|
];
|
|
32086
32139
|
FileManagerComponent.ctorParameters = () => [
|
|
@@ -33585,6 +33638,8 @@ class QueryBuilderRuleComponent {
|
|
|
33585
33638
|
this.onRemove = new EventEmitter();
|
|
33586
33639
|
this.disabled = null;
|
|
33587
33640
|
this.custom = false;
|
|
33641
|
+
this.customTypeFieldName = 'fieldValue';
|
|
33642
|
+
this.customTypeSeparator = '____';
|
|
33588
33643
|
}
|
|
33589
33644
|
// control value cố định, dùng trong trường hợp custom form
|
|
33590
33645
|
set controlValue(value) {
|
|
@@ -33605,6 +33660,22 @@ class QueryBuilderRuleComponent {
|
|
|
33605
33660
|
}
|
|
33606
33661
|
this.handleChangeOperator();
|
|
33607
33662
|
}
|
|
33663
|
+
if (this.controlType == 'custom') {
|
|
33664
|
+
this.setFuncGetValue();
|
|
33665
|
+
if (this.query.value) {
|
|
33666
|
+
try {
|
|
33667
|
+
this.query[this.customTypeFieldName] = this.query.value['field'];
|
|
33668
|
+
this.query.value = this.query.value['value'];
|
|
33669
|
+
}
|
|
33670
|
+
catch (ex) {
|
|
33671
|
+
}
|
|
33672
|
+
// const arrInfo = this.query.value.split(this.customTypeSeparator);
|
|
33673
|
+
// if (arrInfo.length > 1) {
|
|
33674
|
+
// this.query[this.customTypeFieldName] = arrInfo[0];
|
|
33675
|
+
// this.query.value = arrInfo[1];
|
|
33676
|
+
// }
|
|
33677
|
+
}
|
|
33678
|
+
}
|
|
33608
33679
|
if (this.itemField != null && this.itemField.controlType == 'datetime' && this.query.value) {
|
|
33609
33680
|
if (!isValidDate(new Date(this.query.value))) {
|
|
33610
33681
|
this.custom = true;
|
|
@@ -33614,6 +33685,17 @@ class QueryBuilderRuleComponent {
|
|
|
33614
33685
|
}
|
|
33615
33686
|
}
|
|
33616
33687
|
}
|
|
33688
|
+
setFuncGetValue() {
|
|
33689
|
+
if (this.controlType == 'custom') {
|
|
33690
|
+
this.query.funcGetValue = (item) => ({
|
|
33691
|
+
field: item[this.customTypeFieldName],
|
|
33692
|
+
value: item.value
|
|
33693
|
+
});
|
|
33694
|
+
}
|
|
33695
|
+
else {
|
|
33696
|
+
this.query.funcGetValue = null;
|
|
33697
|
+
}
|
|
33698
|
+
}
|
|
33617
33699
|
removeGroup() {
|
|
33618
33700
|
this.onRemove.emit(this.query);
|
|
33619
33701
|
}
|
|
@@ -33628,7 +33710,13 @@ class QueryBuilderRuleComponent {
|
|
|
33628
33710
|
this.resetControl(this.itemField);
|
|
33629
33711
|
const itemOperator = this.operators.find(q => q.id == this.query.compareType);
|
|
33630
33712
|
if (!itemOperator) {
|
|
33631
|
-
this.
|
|
33713
|
+
if (this.operators.length == 1) {
|
|
33714
|
+
this.query.compareType = this.operators[0].id;
|
|
33715
|
+
this.handleChangeOperator();
|
|
33716
|
+
}
|
|
33717
|
+
else {
|
|
33718
|
+
this.query.compareType = null;
|
|
33719
|
+
}
|
|
33632
33720
|
}
|
|
33633
33721
|
else if (itemOperator.controlType) {
|
|
33634
33722
|
this.resetControl(itemOperator);
|
|
@@ -33650,6 +33738,7 @@ class QueryBuilderRuleComponent {
|
|
|
33650
33738
|
if (this.control) {
|
|
33651
33739
|
this.control.disabled = this.disabled;
|
|
33652
33740
|
}
|
|
33741
|
+
this.setFuncGetValue();
|
|
33653
33742
|
}
|
|
33654
33743
|
}
|
|
33655
33744
|
handleChangeOperator() {
|
|
@@ -33687,7 +33776,7 @@ class QueryBuilderRuleComponent {
|
|
|
33687
33776
|
QueryBuilderRuleComponent.decorators = [
|
|
33688
33777
|
{ type: Component, args: [{
|
|
33689
33778
|
selector: 'query-builder-rule',
|
|
33690
|
-
template: "<div class=\"tn__group-or-rule-container rule-container\">\r\n <div class=\"tn__group-or-rule rule\">\r\n <div class=\"tn__rule-body\">\r\n <ng-container *ngIf=\"templateFieldPicker\">\r\n <div class=\"tn__rule-field\">\r\n <ng-container\r\n *ngTemplateOutlet=\"templateFieldPicker; context: {$implicit: query, handleChangedField: setDatasourceOperators}\">\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"!templateFieldPicker\">\r\n <ng-container *ngTemplateOutlet=\"fieldPicker; context: {$implicit: query}\"></ng-container>\r\n </ng-container>\r\n <div class=\"tn__rule-operator\">\r\n <p-dropdown appendTo=\"body\" [options]=\"operators\" optionLabel=\"ten\" optionValue=\"id\"\r\n placeholder=\"Ch\u1ECDn to\u00E1n t\u1EED\" [(ngModel)]=\"query.compareType\" (onChange)=\"handleChangeOperator()\">\r\n </p-dropdown>\r\n </div>\r\n <div class=\"tn__rule-value\">\r\n <ng-container *ngIf=\"control\">\r\n <ng-container [ngSwitch]=\"controlType\">\r\n <
|
|
33779
|
+
template: "<div class=\"tn__group-or-rule-container rule-container\">\r\n <div class=\"tn__group-or-rule rule\">\r\n <div class=\"tn__rule-body\">\r\n <ng-container *ngIf=\"templateFieldPicker\">\r\n <div class=\"tn__rule-field\">\r\n <ng-container\r\n *ngTemplateOutlet=\"templateFieldPicker; context: {$implicit: query, handleChangedField: setDatasourceOperators}\">\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"!templateFieldPicker\">\r\n <ng-container *ngTemplateOutlet=\"fieldPicker; context: {$implicit: query}\"></ng-container>\r\n </ng-container>\r\n <div class=\"tn__rule-operator\">\r\n <p-dropdown appendTo=\"body\" [options]=\"operators\" optionLabel=\"ten\" optionValue=\"id\"\r\n placeholder=\"Ch\u1ECDn to\u00E1n t\u1EED\" [(ngModel)]=\"query.compareType\" (onChange)=\"handleChangeOperator()\">\r\n </p-dropdown>\r\n </div>\r\n <div class=\"tn__rule-value\">\r\n <ng-container *ngIf=\"control\">\r\n <ng-container [ngSwitch]=\"controlType\">\r\n <ng-container *ngSwitchCase=\"'textbox'\">\r\n <ng-template *ngTemplateOutlet=\"textBoxValue; context: {$implicit: query}\"></ng-template>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'custom'\">\r\n <ng-template *ngTemplateOutlet=\"textBoxValue; context: {$implicit: query}\"></ng-template>\r\n </ng-container>\r\n <!-- <p-multiSelect *ngSwitchCase=\"'dropdown'\" [placeholder]=\"control.placeholder\"\r\n [appendTo]=\"'body'\" [options]=\"control.dataSource\" [disabled]=\"disabled\" optionLabel=\"ten\"\r\n optionValue=\"id\" [(ngModel)]=\"query.value\">\r\n </p-multiSelect> -->\r\n <dropdown *ngSwitchCase=\"'dropdown'\" [control]=\"control\" [dataSource]=\"control.dataSource\"\r\n [itemSelectedStyleClass]=\"'min'\" [(value)]=\"query.value\">\r\n </dropdown>\r\n <div *ngSwitchCase=\"'datetime'\" class=\"datetime-value-container\">\r\n <p-checkbox [binary]=\"true\" [label]=\"'T\u00F9y bi\u1EBFn'\" [(ngModel)]=\"custom\"></p-checkbox>\r\n <datetime-picker *ngIf=\"!custom\" [disabled]=\"disabled\" [(ngModel)]=\"query.value\">\r\n </datetime-picker>\r\n <input *ngIf=\"custom\" pInputText placeholder=\"VD: [now] + 1d - 2h + 3m - 4s\"\r\n [(ngModel)]=\"query.value\" />\r\n </div>\r\n\r\n <tn-mask *ngSwitchCase=\"'number'\" [disabled]=\"disabled\" [maskType]=\"control.maskType\"\r\n [placeholder]=\"control.placeholder\" [(ngModel)]=\"query.value\">\r\n </tn-mask>\r\n <user-picker *ngSwitchCase=\"'user'\" [control]=\"control\" [disabled]=\"disabled\"\r\n [(ngModel)]=\"query.value\" [multiple]=\"control.multiple\">\r\n </user-picker>\r\n <cocautochuc-picker-list *ngSwitchCase=\"'cocautochuc'\" [control]=\"control\" [disabled]=\"disabled\"\r\n [(ngModel)]=\"query.value\">\r\n </cocautochuc-picker-list>\r\n <autocomplete-picker *ngSwitchCase=\"'role'\" [control]=\"control\" [disabled]=\"disabled\"\r\n [(ngModel)]=\"query.value\">\r\n </autocomplete-picker>\r\n <autocomplete-picker *ngSwitchCase=\"'groupuser'\" [control]=\"control\" [disabled]=\"disabled\"\r\n [(ngModel)]=\"query.value\">\r\n </autocomplete-picker>\r\n <autocomplete-picker *ngSwitchCase=\"'chucVu'\" [control]=\"control\" [disabled]=\"disabled\"\r\n [(ngModel)]=\"query.value\">\r\n </autocomplete-picker>\r\n <autocomplete-picker *ngSwitchCase=\"'autocomplete-picker'\" [control]=\"control\"\r\n [disabled]=\"disabled\" [(ngModel)]=\"query.value\">\r\n </autocomplete-picker>\r\n <app-autocomplete-datasource *ngSwitchCase=\"'autocomplete'\" [control]=\"control\"\r\n [disabled]=\"disabled\" [(ngModel)]=\"query.value\" [suggestions]=\"control.dataSource\">\r\n </app-autocomplete-datasource>\r\n <ng-container *ngSwitchDefault>\r\n <input type=\"text\" pInputText placeholder=\"Gi\u00E1 tr\u1ECB\" [disabled]=\"true\" />\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"!control\">\r\n <input type=\"text\" pInputText placeholder=\"Gi\u00E1 tr\u1ECB\" [disabled]=\"true\" />\r\n </ng-container>\r\n </div>\r\n </div>\r\n <div class=\"tn__rule-action\">\r\n <button type=\"button\" pButton icon=\"pi pi-trash\" class=\"p-button-text p-button-rounded p-button-danger\"\r\n pTooltip=\"X\u00F3a\" tooltipPosition=\"top\" (click)=\"removeGroup()\"></button>\r\n </div>\r\n </div>\r\n</div>\r\n<ng-template #fieldPicker let-query>\r\n <ng-container *ngIf=\"controlType == 'custom'\">\r\n <input [disabled]=\"disabled\" type=\"text\" [class]=\"'tn__rule-field'\" pInputText placeholder=\"Tr\u01B0\u1EDDng d\u1EEF li\u1EC7u\"\r\n [(ngModel)]=\"query.fieldValue\" />\r\n </ng-container>\r\n <ng-container *ngIf=\"controlType != 'custom'\">\r\n <p-dropdown [appendTo]=\"'body'\" [options]=\"dataSourceFields\" [class]=\"'tn__rule-field'\" optionLabel=\"ten\"\r\n optionValue=\"id\" placeholder=\"Ch\u1ECDn tr\u01B0\u1EDDng d\u1EEF li\u1EC7u\" [(ngModel)]=\"query.field\"\r\n (onChange)=\"handleChangeField($event)\">\r\n </p-dropdown>\r\n </ng-container>\r\n</ng-template>\r\n<ng-template #textBoxValue let-query>\r\n <input [disabled]=\"disabled\" type=\"text\" pInputText placeholder=\"Gi\u00E1 tr\u1ECB\" [(ngModel)]=\"query.value\" />\r\n</ng-template>",
|
|
33691
33780
|
styles: ["::ng-deep query-builder-rule .tn__rule-body{display:flex;width:calc(100% - 34px)}::ng-deep query-builder-rule .tn__rule-body>*{margin-right:5px}::ng-deep query-builder-rule .tn__rule-body>:last-child{margin-right:0}::ng-deep query-builder-rule .tn__rule-field{height:26px}::ng-deep query-builder-rule .tn__rule-value{min-height:26px}::ng-deep query-builder-rule .tn__rule-field,::ng-deep query-builder-rule .tn__rule-value{flex:0 0 calc(50% - 80px);width:calc(50% - 80px)}::ng-deep query-builder-rule .tn__rule-field .p-autocomplete,::ng-deep query-builder-rule .tn__rule-field .p-calendar,::ng-deep query-builder-rule .tn__rule-field.p-dropdown,::ng-deep query-builder-rule .tn__rule-field .p-dropdown,::ng-deep query-builder-rule .tn__rule-field .p-inputtext,::ng-deep query-builder-rule .tn__rule-field .p-multiselect,::ng-deep query-builder-rule .tn__rule-field tn-mask .p-inputgroup,::ng-deep query-builder-rule .tn__rule-value .p-autocomplete,::ng-deep query-builder-rule .tn__rule-value .p-calendar,::ng-deep query-builder-rule .tn__rule-value.p-dropdown,::ng-deep query-builder-rule .tn__rule-value .p-dropdown,::ng-deep query-builder-rule .tn__rule-value .p-inputtext,::ng-deep query-builder-rule .tn__rule-value .p-multiselect,::ng-deep query-builder-rule .tn__rule-value tn-mask .p-inputgroup{height:100%;width:100%}::ng-deep query-builder-rule .tn__rule-field .custom-autocomplete-button,::ng-deep query-builder-rule .tn__rule-field .p-inputtext,::ng-deep query-builder-rule .tn__rule-value .custom-autocomplete-button,::ng-deep query-builder-rule .tn__rule-value .p-inputtext{min-height:26px;padding:2px 12px}::ng-deep query-builder-rule .tn__rule-field .tn-dropdown,::ng-deep query-builder-rule .tn__rule-field .tn-dropdown.p-multiselect.p-component,::ng-deep query-builder-rule .tn__rule-value .tn-dropdown,::ng-deep query-builder-rule .tn__rule-value .tn-dropdown.p-multiselect.p-component{min-height:26px}::ng-deep query-builder-rule .tn__rule-field .tn-autocomplete .p-autocomplete-dropdown,::ng-deep query-builder-rule .tn__rule-value .tn-autocomplete .p-autocomplete-dropdown{height:26px;width:26px}::ng-deep query-builder-rule .tn__rule-field .p-calendar .p-button.p-button-icon-only,::ng-deep query-builder-rule .tn__rule-value .p-calendar .p-button.p-button-icon-only{padding:2px 12px}::ng-deep query-builder-rule .tn__rule-field .p-autocomplete.p-autocomplete-multiple .p-autocomplete-multiple-container .p-autocomplete-input-token,::ng-deep query-builder-rule .tn__rule-field .p-autocomplete.p-autocomplete-multiple .p-autocomplete-multiple-container .p-autocomplete-token,::ng-deep query-builder-rule .tn__rule-value .p-autocomplete.p-autocomplete-multiple .p-autocomplete-multiple-container .p-autocomplete-input-token,::ng-deep query-builder-rule .tn__rule-value .p-autocomplete.p-autocomplete-multiple .p-autocomplete-multiple-container .p-autocomplete-token{font-size:.9rem;margin:1px 2px;padding:0 .5rem}::ng-deep query-builder-rule .tn__rule-operator{flex:0 0 145px;height:26px;width:145px}::ng-deep query-builder-rule .tn__rule-operator .p-dropdown{height:100%;width:100%}::ng-deep query-builder-rule .tn__rule-operator .p-dropdown .p-inputtext{padding:2px 12px}::ng-deep query-builder-rule .tn__rule-action{flex:0 0 auto;white-space:nowrap}::ng-deep query-builder-rule .tn__rule-action button{height:26px!important;margin-left:2px!important;margin-right:6px!important;width:26px!important}::ng-deep query-builder-rule .datetime-value-container{align-items:center;display:flex}::ng-deep query-builder-rule .datetime-value-container p-checkbox{flex:0 0 auto;margin-right:5px}@media (max-width:640px){::ng-deep query-builder-rule .tn__rule-body{flex-direction:column;padding-right:5px}::ng-deep query-builder-rule .tn__rule-body>*{margin-bottom:5px;margin-right:0}::ng-deep query-builder-rule .tn__rule-field,::ng-deep query-builder-rule .tn__rule-operator,::ng-deep query-builder-rule .tn__rule-value{flex:1 1 auto;width:100%}}"]
|
|
33692
33781
|
},] }
|
|
33693
33782
|
];
|
|
@@ -35119,7 +35208,12 @@ var EnumPermissionType;
|
|
|
35119
35208
|
(function (EnumPermissionType) {
|
|
35120
35209
|
EnumPermissionType[EnumPermissionType["MAIN"] = 0] = "MAIN";
|
|
35121
35210
|
EnumPermissionType[EnumPermissionType["SHARE"] = 1] = "SHARE"; // Bản ghi tạo ra để chia sẻ
|
|
35122
|
-
})(EnumPermissionType || (EnumPermissionType = {}));
|
|
35211
|
+
})(EnumPermissionType || (EnumPermissionType = {}));
|
|
35212
|
+
var EnumWorkflowCheckboxOption;
|
|
35213
|
+
(function (EnumWorkflowCheckboxOption) {
|
|
35214
|
+
EnumWorkflowCheckboxOption[EnumWorkflowCheckboxOption["TAO_CONG_VIEC"] = 1] = "TAO_CONG_VIEC";
|
|
35215
|
+
EnumWorkflowCheckboxOption[EnumWorkflowCheckboxOption["AUTO_NEXT_STEP"] = 2] = "AUTO_NEXT_STEP";
|
|
35216
|
+
})(EnumWorkflowCheckboxOption || (EnumWorkflowCheckboxOption = {}));
|
|
35123
35217
|
|
|
35124
35218
|
const StateMachineTopic = {
|
|
35125
35219
|
CONNECTION_CHANGE: 'CONNECTION_CHANGE'
|
|
@@ -35135,7 +35229,7 @@ const DataSourceTargetType = [
|
|
|
35135
35229
|
{ id: ɵ3, ten: 'Người dùng' },
|
|
35136
35230
|
{ id: ɵ4, ten: 'Đơn vị' },
|
|
35137
35231
|
{ id: ɵ5, ten: 'Nhóm người dùng' },
|
|
35138
|
-
{ id: ɵ6, ten: '
|
|
35232
|
+
{ id: ɵ6, ten: 'Chức vụ' }
|
|
35139
35233
|
];
|
|
35140
35234
|
const ɵ7 = EnumUserRule.CAP_TREN, ɵ8 = EnumUserRule.NGUOI_THAM_GIA_QUY_TRINH, ɵ9 = EnumUserRule.NGUOI_NHAN, ɵ10 = EnumUserRule.NGUOI_THEO_DOI;
|
|
35141
35235
|
const DataSourceUserRule = [
|
|
@@ -35156,6 +35250,11 @@ const DataSourceUserSender = [
|
|
|
35156
35250
|
// { id: EnumUserRule.CAP_TREN_DA_GUI, ten: 'Cấp trên đã trình' },
|
|
35157
35251
|
// { id: EnumUserRule.NGUOI_CUOI_CUNG, ten: 'Người cuối cùng' },
|
|
35158
35252
|
{ id: ɵ12, ten: 'Người tham gia quy trình' }
|
|
35253
|
+
];
|
|
35254
|
+
const ɵ13 = EnumWorkflowCheckboxOption.TAO_CONG_VIEC, ɵ14 = EnumWorkflowCheckboxOption.AUTO_NEXT_STEP;
|
|
35255
|
+
const DataSourceWorkflowCheckboxOption = [
|
|
35256
|
+
{ id: ɵ13, ten: 'Tạo công việc' },
|
|
35257
|
+
{ id: ɵ14, ten: 'Tự động chuyển bước đầu tiên' }
|
|
35159
35258
|
];
|
|
35160
35259
|
|
|
35161
35260
|
class StateMetadataComponent extends DataFormBase {
|
|
@@ -35335,6 +35434,41 @@ StateComponent.propDecorators = {
|
|
|
35335
35434
|
onReady: [{ type: Output }]
|
|
35336
35435
|
};
|
|
35337
35436
|
|
|
35437
|
+
class DmChucVuService extends BaseService {
|
|
35438
|
+
constructor(http, injector, _moduleConfigService) {
|
|
35439
|
+
super(http, injector, `${_moduleConfigService.getConfig().environment.apiDomain.canboEndpoint}/${_moduleConfigService.getConfig().environment.apiVersion}/DM_ChucVu`);
|
|
35440
|
+
this.serviceCode = 'canbo';
|
|
35441
|
+
this.entityName = 'DM_ChucVu';
|
|
35442
|
+
this.endPoint = _moduleConfigService.getConfig().environment.apiDomain.canboEndpoint;
|
|
35443
|
+
this._moduleConfig = _moduleConfigService.getConfig();
|
|
35444
|
+
}
|
|
35445
|
+
}
|
|
35446
|
+
DmChucVuService.ɵprov = ɵɵdefineInjectable({ factory: function DmChucVuService_Factory() { return new DmChucVuService(ɵɵinject(HttpClient), ɵɵinject(INJECTOR), ɵɵinject(ModuleConfigService)); }, token: DmChucVuService, providedIn: "root" });
|
|
35447
|
+
DmChucVuService.decorators = [
|
|
35448
|
+
{ type: Injectable, args: [{
|
|
35449
|
+
providedIn: 'root'
|
|
35450
|
+
},] }
|
|
35451
|
+
];
|
|
35452
|
+
DmChucVuService.ctorParameters = () => [
|
|
35453
|
+
{ type: HttpClient },
|
|
35454
|
+
{ type: Injector },
|
|
35455
|
+
{ type: ModuleConfigService }
|
|
35456
|
+
];
|
|
35457
|
+
|
|
35458
|
+
class WfItem {
|
|
35459
|
+
}
|
|
35460
|
+
class WfSchema {
|
|
35461
|
+
}
|
|
35462
|
+
class WfMachine {
|
|
35463
|
+
}
|
|
35464
|
+
class WfAction {
|
|
35465
|
+
constructor() {
|
|
35466
|
+
this.editing = false;
|
|
35467
|
+
}
|
|
35468
|
+
}
|
|
35469
|
+
class WorkflowTargetDefaultValue {
|
|
35470
|
+
}
|
|
35471
|
+
|
|
35338
35472
|
function createJsPlumnInstance(containerId, viewOnly) {
|
|
35339
35473
|
const jsPlumbOptions = {
|
|
35340
35474
|
Container: containerId,
|
|
@@ -35457,11 +35591,11 @@ function createRolePickerControl(_roleService, field, label) {
|
|
|
35457
35591
|
return new AutoCompletePickerControlSchema({
|
|
35458
35592
|
field,
|
|
35459
35593
|
label,
|
|
35460
|
-
title: 'Chọn
|
|
35461
|
-
placeholder: 'Chọn
|
|
35594
|
+
title: 'Chọn chức vụ',
|
|
35595
|
+
placeholder: 'Chọn chức vụ',
|
|
35462
35596
|
mdWidth: 12,
|
|
35463
35597
|
baseService: _roleService,
|
|
35464
|
-
displayField: '
|
|
35598
|
+
displayField: 'ten',
|
|
35465
35599
|
fieldPlus: 'code',
|
|
35466
35600
|
fieldSearchText: ['code'],
|
|
35467
35601
|
multiple: true,
|
|
@@ -35474,8 +35608,8 @@ function createRolePickerControl(_roleService, field, label) {
|
|
|
35474
35608
|
fullTextSearch: true
|
|
35475
35609
|
}),
|
|
35476
35610
|
new EntityPickerColumn({
|
|
35477
|
-
label: 'Tên
|
|
35478
|
-
code: '
|
|
35611
|
+
label: 'Tên chức vụ',
|
|
35612
|
+
code: 'ten',
|
|
35479
35613
|
dataType: 'string',
|
|
35480
35614
|
operator: Operator.contain,
|
|
35481
35615
|
notInFields: true
|
|
@@ -35491,6 +35625,172 @@ function setMetadataConnection(dest, source) {
|
|
|
35491
35625
|
dest.data = source.data;
|
|
35492
35626
|
}
|
|
35493
35627
|
|
|
35628
|
+
class StateMachinesConnectionReceiverConditionComponent extends DataFormBase {
|
|
35629
|
+
constructor(injector, _dmChucVuService, _userGroupService) {
|
|
35630
|
+
super(injector);
|
|
35631
|
+
this._dmChucVuService = _dmChucVuService;
|
|
35632
|
+
this._userGroupService = _userGroupService;
|
|
35633
|
+
this.receiverDynamicRules = [];
|
|
35634
|
+
this.receiverDynamicViewRules = [];
|
|
35635
|
+
this.dataSourceAction = [];
|
|
35636
|
+
this.autoGetDetail = false;
|
|
35637
|
+
this.autoSave = false;
|
|
35638
|
+
}
|
|
35639
|
+
ngOnInit() {
|
|
35640
|
+
super.ngOnInit();
|
|
35641
|
+
this.doNotCheckBaseService = true;
|
|
35642
|
+
this.renderDataSourceAction();
|
|
35643
|
+
this.setting.schema = [
|
|
35644
|
+
new CustomControlSchema({
|
|
35645
|
+
field: 'receiverRules',
|
|
35646
|
+
label: 'Người nhận xử lý',
|
|
35647
|
+
mdWidth: 12
|
|
35648
|
+
}),
|
|
35649
|
+
new CustomControlSchema({
|
|
35650
|
+
field: 'receiverViewRules',
|
|
35651
|
+
label: 'Người nhận chỉ xem',
|
|
35652
|
+
mdWidth: 12
|
|
35653
|
+
})
|
|
35654
|
+
];
|
|
35655
|
+
this.dynamicSchema = [
|
|
35656
|
+
new DropdownControlSchema({
|
|
35657
|
+
field: 'ruleType',
|
|
35658
|
+
label: 'Người dùng',
|
|
35659
|
+
dataSource: DataSourceUserRule,
|
|
35660
|
+
operators: [
|
|
35661
|
+
{ id: Operator.in, ten: 'Là' }
|
|
35662
|
+
]
|
|
35663
|
+
}),
|
|
35664
|
+
new DropdownControlSchema({
|
|
35665
|
+
field: 'userMade',
|
|
35666
|
+
label: 'Người dùng thao tác',
|
|
35667
|
+
valueField: 'code',
|
|
35668
|
+
dataSource: this.dataSourceAction,
|
|
35669
|
+
operators: [
|
|
35670
|
+
{ id: Operator.in, ten: 'Thao tác' }
|
|
35671
|
+
]
|
|
35672
|
+
}),
|
|
35673
|
+
new UserPickerControlSchema({
|
|
35674
|
+
field: 'userIds',
|
|
35675
|
+
label: 'Người dùng đích danh',
|
|
35676
|
+
placeholder: 'Chọn người dùng',
|
|
35677
|
+
mdWidth: 12
|
|
35678
|
+
}),
|
|
35679
|
+
createOrgPickerControl('donViId', 'Đơn vị'),
|
|
35680
|
+
new DropdownControlSchema({
|
|
35681
|
+
field: 'donViCap',
|
|
35682
|
+
label: 'Đơn vị cấp',
|
|
35683
|
+
multiple: true,
|
|
35684
|
+
dataSource: [
|
|
35685
|
+
{ id: 1, ten: '1' },
|
|
35686
|
+
{ id: 2, ten: '2' },
|
|
35687
|
+
{ id: 3, ten: '3' }
|
|
35688
|
+
]
|
|
35689
|
+
}),
|
|
35690
|
+
createRolePickerControl(this._dmChucVuService, 'roleId', 'Chức vụ'),
|
|
35691
|
+
createUserGroupPickerControl(this._userGroupService, 'groupId', 'Nhóm người dùng'),
|
|
35692
|
+
new NumberRangeControlSchema({
|
|
35693
|
+
field: 'lanThu',
|
|
35694
|
+
label: 'Lần thứ'
|
|
35695
|
+
}),
|
|
35696
|
+
new CustomControlSchema({
|
|
35697
|
+
field: 'customField',
|
|
35698
|
+
label: 'Trường dữ liệu',
|
|
35699
|
+
operators: [
|
|
35700
|
+
{ id: Operator.equal, ten: 'Bằng' },
|
|
35701
|
+
{ id: Operator.notEqual, ten: 'Không bằng' },
|
|
35702
|
+
{ id: Operator.greater, ten: 'Lớn hơn' },
|
|
35703
|
+
{ id: Operator.greaterThanEqual, ten: 'Lớn hơn hoặc bằng' },
|
|
35704
|
+
{ id: Operator.lower, ten: 'Nhỏ hơn' },
|
|
35705
|
+
{ id: Operator.lowerThanEqual, ten: 'Nhỏ hơn hoặc bằng' }
|
|
35706
|
+
]
|
|
35707
|
+
})
|
|
35708
|
+
];
|
|
35709
|
+
if (this.data && this.data.data) {
|
|
35710
|
+
this.receiverDynamicRules = this.data.data.receiverRules;
|
|
35711
|
+
this.receiverDynamicViewRules = this.data.data.receiverViewRules;
|
|
35712
|
+
}
|
|
35713
|
+
if (this.isFormAdd) {
|
|
35714
|
+
this.receiverDynamicViewRules = [
|
|
35715
|
+
this.newFilter('ruleType', Operator.in, [
|
|
35716
|
+
EnumUserRule.NGUOI_THAM_GIA_QUY_TRINH,
|
|
35717
|
+
EnumUserRule.NGUOI_NHAN,
|
|
35718
|
+
EnumUserRule.NGUOI_THEO_DOI
|
|
35719
|
+
])
|
|
35720
|
+
];
|
|
35721
|
+
}
|
|
35722
|
+
}
|
|
35723
|
+
renderDataSourceAction() {
|
|
35724
|
+
const dataSourceAction = [];
|
|
35725
|
+
if (this.workflowData) {
|
|
35726
|
+
this.workflowData.connections.sort(multipleSort('soThuTu')).forEach(action => {
|
|
35727
|
+
const source = this.workflowData.machines.find(q => q.id == action.source);
|
|
35728
|
+
if (source) {
|
|
35729
|
+
const itemAdd = {
|
|
35730
|
+
code: `${source.code}___${action.code}`,
|
|
35731
|
+
name: action.name,
|
|
35732
|
+
nameLower: action.name.toLowerCase(),
|
|
35733
|
+
ten: action.name,
|
|
35734
|
+
sourceName: source.name
|
|
35735
|
+
};
|
|
35736
|
+
const itemExist = dataSourceAction.find(q => q.nameLower == itemAdd.nameLower);
|
|
35737
|
+
if (itemExist) {
|
|
35738
|
+
itemExist.ten = `${itemExist.name} (${itemExist.sourceName})`;
|
|
35739
|
+
itemAdd.ten = `${itemAdd.name} (${itemAdd.sourceName})`;
|
|
35740
|
+
}
|
|
35741
|
+
dataSourceAction.push(itemAdd);
|
|
35742
|
+
}
|
|
35743
|
+
});
|
|
35744
|
+
}
|
|
35745
|
+
this.dataSourceAction = dataSourceAction;
|
|
35746
|
+
}
|
|
35747
|
+
onFormInitialized(evt) {
|
|
35748
|
+
var _a;
|
|
35749
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
35750
|
+
if (this.data) {
|
|
35751
|
+
this.assignFieldPlus(evt.model, (_a = this.data.data) !== null && _a !== void 0 ? _a : {});
|
|
35752
|
+
}
|
|
35753
|
+
else {
|
|
35754
|
+
evt.model.data = {};
|
|
35755
|
+
}
|
|
35756
|
+
});
|
|
35757
|
+
}
|
|
35758
|
+
assignFieldPlus(dest, source) {
|
|
35759
|
+
dest.receiverRules = source.receiverRules;
|
|
35760
|
+
dest.receiverViewRules = source.receiverViewRules;
|
|
35761
|
+
}
|
|
35762
|
+
getModelData() {
|
|
35763
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
35764
|
+
const dataPlus = {};
|
|
35765
|
+
this.model.data.receiverRules = this.queryBuilder.getQuery();
|
|
35766
|
+
this.model.data.receiverViewRules = this.queryBuilderView.getQuery();
|
|
35767
|
+
this.assignFieldPlus(dataPlus, this.model.data);
|
|
35768
|
+
return dataPlus;
|
|
35769
|
+
});
|
|
35770
|
+
}
|
|
35771
|
+
}
|
|
35772
|
+
StateMachinesConnectionReceiverConditionComponent.decorators = [
|
|
35773
|
+
{ type: Component, args: [{
|
|
35774
|
+
selector: 'statemachines-connection-receiver-condition',
|
|
35775
|
+
template: "<crud-form #crudForm [(data)]=\"model.data\" [setting]=\"setting\" [context]=\"context\" [disableCaching]=\"true\"\r\n (onFormReady)=\"_handleFormReady($event)\">\r\n <ng-template #receiverRules>\r\n <query-builder #queryBuilder [searchSchema]=\"dynamicSchema\" [filters]=\"receiverDynamicRules\"\r\n [hiddenButtons]=\"true\" [useScrollBar]=\"false\"></query-builder>\r\n </ng-template>\r\n <ng-template #receiverViewRules>\r\n <query-builder #queryBuilderView [searchSchema]=\"dynamicSchema\" [filters]=\"receiverDynamicViewRules\"\r\n [hiddenButtons]=\"true\" [useScrollBar]=\"false\"></query-builder>\r\n </ng-template>\r\n</crud-form>",
|
|
35776
|
+
providers: [ComponentContextService],
|
|
35777
|
+
styles: ["::ng-deep statemachines-connection-receiver-condition query-builder-rule .tn__rule-field{flex:0 0 180px;width:180px}::ng-deep statemachines-connection-receiver-condition query-builder-rule .tn__rule-value{flex:0 0 calc(100% - 340px);width:calc(100% - 340px)}"]
|
|
35778
|
+
},] }
|
|
35779
|
+
];
|
|
35780
|
+
StateMachinesConnectionReceiverConditionComponent.ctorParameters = () => [
|
|
35781
|
+
{ type: Injector },
|
|
35782
|
+
{ type: DmChucVuService },
|
|
35783
|
+
{ type: UserGroupRealService }
|
|
35784
|
+
];
|
|
35785
|
+
StateMachinesConnectionReceiverConditionComponent.propDecorators = {
|
|
35786
|
+
queryBuilder: [{ type: ViewChild, args: ['queryBuilder', { static: false },] }],
|
|
35787
|
+
queryBuilderView: [{ type: ViewChild, args: ['queryBuilderView', { static: false },] }],
|
|
35788
|
+
workflowData: [{ type: Input }],
|
|
35789
|
+
data: [{ type: Input }],
|
|
35790
|
+
isFormAdd: [{ type: Input }],
|
|
35791
|
+
viewOnly: [{ type: Input }]
|
|
35792
|
+
};
|
|
35793
|
+
|
|
35494
35794
|
class StateMachinesConnectionReceiverDepartmentComponent extends DataFormBase {
|
|
35495
35795
|
constructor(injector) {
|
|
35496
35796
|
super(injector);
|
|
@@ -35502,9 +35802,35 @@ class StateMachinesConnectionReceiverDepartmentComponent extends DataFormBase {
|
|
|
35502
35802
|
super.ngOnInit();
|
|
35503
35803
|
this.doNotCheckBaseService = true;
|
|
35504
35804
|
this.setting.schema = [
|
|
35805
|
+
this.createCheckboxRule('departmentRules'),
|
|
35505
35806
|
this.createOrgPickerControlReceiver('departmentIds', 'Đơn vị nhận'),
|
|
35807
|
+
this.createCheckboxRule('departmentViewRules'),
|
|
35506
35808
|
this.createOrgPickerControlReceiver('departmentViewIds', 'Đơn vị theo dõi'),
|
|
35507
35809
|
];
|
|
35810
|
+
if (this.isFormAdd) {
|
|
35811
|
+
if (!this.data.data) {
|
|
35812
|
+
this.data.data = {};
|
|
35813
|
+
}
|
|
35814
|
+
if (this.data.data.departmentRules == null) {
|
|
35815
|
+
this.data.data.departmentRules = [EnumUserRule.NGUOI_NHAN];
|
|
35816
|
+
}
|
|
35817
|
+
if (this.data.data.departmentViewRules == null) {
|
|
35818
|
+
this.data.data.departmentViewRules = [EnumUserRule.NGUOI_THEO_DOI];
|
|
35819
|
+
}
|
|
35820
|
+
}
|
|
35821
|
+
}
|
|
35822
|
+
createCheckboxRule(field) {
|
|
35823
|
+
return new CheckBoxListControlSchema({
|
|
35824
|
+
field,
|
|
35825
|
+
label: 'Cán bộ đặc biệt',
|
|
35826
|
+
class: 'rules',
|
|
35827
|
+
dataSource: [
|
|
35828
|
+
{ id: EnumUserRule.NGUOI_NHAN, ten: 'Đơn vị nhận bước trước' },
|
|
35829
|
+
{ id: EnumUserRule.NGUOI_THEO_DOI, ten: 'Đơn vị theo dõi bước trước' }
|
|
35830
|
+
],
|
|
35831
|
+
showLabel: false,
|
|
35832
|
+
mdWidth: 12
|
|
35833
|
+
});
|
|
35508
35834
|
}
|
|
35509
35835
|
createOrgPickerControlReceiver(field, label) {
|
|
35510
35836
|
const control = createOrgPickerControl(field, label);
|
|
@@ -35530,7 +35856,9 @@ class StateMachinesConnectionReceiverDepartmentComponent extends DataFormBase {
|
|
|
35530
35856
|
});
|
|
35531
35857
|
}
|
|
35532
35858
|
assignFieldPlus(dest, source) {
|
|
35859
|
+
dest.departmentRules = source.departmentRules;
|
|
35533
35860
|
dest.departmentIds = source.departmentIds;
|
|
35861
|
+
dest.departmentViewRules = source.departmentViewRules;
|
|
35534
35862
|
dest.departmentViewIds = source.departmentViewIds;
|
|
35535
35863
|
}
|
|
35536
35864
|
}
|
|
@@ -35547,6 +35875,7 @@ StateMachinesConnectionReceiverDepartmentComponent.ctorParameters = () => [
|
|
|
35547
35875
|
];
|
|
35548
35876
|
StateMachinesConnectionReceiverDepartmentComponent.propDecorators = {
|
|
35549
35877
|
data: [{ type: Input }],
|
|
35878
|
+
isFormAdd: [{ type: Input }],
|
|
35550
35879
|
viewOnly: [{ type: Input }]
|
|
35551
35880
|
};
|
|
35552
35881
|
|
|
@@ -35562,9 +35891,35 @@ class StateMachinesConnectionReceiverGroupComponent extends DataFormBase {
|
|
|
35562
35891
|
super.ngOnInit();
|
|
35563
35892
|
this.doNotCheckBaseService = true;
|
|
35564
35893
|
this.setting.schema = [
|
|
35894
|
+
this.createCheckboxRule('groupRules'),
|
|
35565
35895
|
this.createUserGroupPickerControlReceiver('groupIds', 'Nhóm người dùng nhận'),
|
|
35896
|
+
this.createCheckboxRule('groupViewRules'),
|
|
35566
35897
|
this.createUserGroupPickerControlReceiver('groupViewIds', 'Nhóm người dùng theo dõi'),
|
|
35567
35898
|
];
|
|
35899
|
+
if (this.isFormAdd) {
|
|
35900
|
+
if (!this.data.data) {
|
|
35901
|
+
this.data.data = {};
|
|
35902
|
+
}
|
|
35903
|
+
if (this.data.data.groupRules == null) {
|
|
35904
|
+
this.data.data.groupRules = [EnumUserRule.NGUOI_NHAN];
|
|
35905
|
+
}
|
|
35906
|
+
if (this.data.data.groupViewRules == null) {
|
|
35907
|
+
this.data.data.groupViewRules = [EnumUserRule.NGUOI_THEO_DOI];
|
|
35908
|
+
}
|
|
35909
|
+
}
|
|
35910
|
+
}
|
|
35911
|
+
createCheckboxRule(field) {
|
|
35912
|
+
return new CheckBoxListControlSchema({
|
|
35913
|
+
field,
|
|
35914
|
+
label: 'Cán bộ đặc biệt',
|
|
35915
|
+
class: 'rules',
|
|
35916
|
+
dataSource: [
|
|
35917
|
+
{ id: EnumUserRule.NGUOI_NHAN, ten: 'Nhóm người dùng nhận bước trước' },
|
|
35918
|
+
{ id: EnumUserRule.NGUOI_THEO_DOI, ten: 'Nhóm người dùng theo dõi bước trước' }
|
|
35919
|
+
],
|
|
35920
|
+
showLabel: false,
|
|
35921
|
+
mdWidth: 12
|
|
35922
|
+
});
|
|
35568
35923
|
}
|
|
35569
35924
|
createUserGroupPickerControlReceiver(field, label) {
|
|
35570
35925
|
const control = createUserGroupPickerControl(this._userGroupService, field, label);
|
|
@@ -35590,7 +35945,9 @@ class StateMachinesConnectionReceiverGroupComponent extends DataFormBase {
|
|
|
35590
35945
|
});
|
|
35591
35946
|
}
|
|
35592
35947
|
assignFieldPlus(dest, source) {
|
|
35948
|
+
dest.groupRules = source.groupRules;
|
|
35593
35949
|
dest.groupIds = source.groupIds;
|
|
35950
|
+
dest.groupViewRules = source.groupViewRules;
|
|
35594
35951
|
dest.groupViewIds = source.groupViewIds;
|
|
35595
35952
|
}
|
|
35596
35953
|
}
|
|
@@ -35608,13 +35965,14 @@ StateMachinesConnectionReceiverGroupComponent.ctorParameters = () => [
|
|
|
35608
35965
|
];
|
|
35609
35966
|
StateMachinesConnectionReceiverGroupComponent.propDecorators = {
|
|
35610
35967
|
data: [{ type: Input }],
|
|
35968
|
+
isFormAdd: [{ type: Input }],
|
|
35611
35969
|
viewOnly: [{ type: Input }]
|
|
35612
35970
|
};
|
|
35613
35971
|
|
|
35614
35972
|
class StateMachinesConnectionReceiverRoleComponent extends DataFormBase {
|
|
35615
|
-
constructor(injector,
|
|
35973
|
+
constructor(injector, _dmChucVuService) {
|
|
35616
35974
|
super(injector);
|
|
35617
|
-
this.
|
|
35975
|
+
this._dmChucVuService = _dmChucVuService;
|
|
35618
35976
|
this.dataSourceAction = [];
|
|
35619
35977
|
this.autoGetDetail = false;
|
|
35620
35978
|
this.autoSave = false;
|
|
@@ -35623,12 +35981,38 @@ class StateMachinesConnectionReceiverRoleComponent extends DataFormBase {
|
|
|
35623
35981
|
super.ngOnInit();
|
|
35624
35982
|
this.doNotCheckBaseService = true;
|
|
35625
35983
|
this.setting.schema = [
|
|
35626
|
-
this.
|
|
35627
|
-
this.createRolePickerControlReceiver('
|
|
35984
|
+
this.createCheckboxRule('roleRules'),
|
|
35985
|
+
this.createRolePickerControlReceiver('roleIds', 'Chức vụ nhận'),
|
|
35986
|
+
this.createCheckboxRule('roleViewRules'),
|
|
35987
|
+
this.createRolePickerControlReceiver('roleViewIds', 'Chức vụ theo dõi'),
|
|
35628
35988
|
];
|
|
35989
|
+
if (this.isFormAdd) {
|
|
35990
|
+
if (!this.data.data) {
|
|
35991
|
+
this.data.data = {};
|
|
35992
|
+
}
|
|
35993
|
+
if (this.data.data.roleRules == null) {
|
|
35994
|
+
this.data.data.roleRules = [EnumUserRule.NGUOI_NHAN];
|
|
35995
|
+
}
|
|
35996
|
+
if (this.data.data.roleViewRules == null) {
|
|
35997
|
+
this.data.data.roleViewRules = [EnumUserRule.NGUOI_THEO_DOI];
|
|
35998
|
+
}
|
|
35999
|
+
}
|
|
36000
|
+
}
|
|
36001
|
+
createCheckboxRule(field) {
|
|
36002
|
+
return new CheckBoxListControlSchema({
|
|
36003
|
+
field,
|
|
36004
|
+
label: 'Cán bộ đặc biệt',
|
|
36005
|
+
class: 'rules',
|
|
36006
|
+
dataSource: [
|
|
36007
|
+
{ id: EnumUserRule.NGUOI_NHAN, ten: 'Chức vụ nhận bước trước' },
|
|
36008
|
+
{ id: EnumUserRule.NGUOI_THEO_DOI, ten: 'Chức vụ theo dõi bước trước' }
|
|
36009
|
+
],
|
|
36010
|
+
showLabel: false,
|
|
36011
|
+
mdWidth: 12
|
|
36012
|
+
});
|
|
35629
36013
|
}
|
|
35630
36014
|
createRolePickerControlReceiver(field, label) {
|
|
35631
|
-
const control = createRolePickerControl(this.
|
|
36015
|
+
const control = createRolePickerControl(this._dmChucVuService, field, label);
|
|
35632
36016
|
return control;
|
|
35633
36017
|
}
|
|
35634
36018
|
onFormInitialized(evt) {
|
|
@@ -35651,7 +36035,9 @@ class StateMachinesConnectionReceiverRoleComponent extends DataFormBase {
|
|
|
35651
36035
|
});
|
|
35652
36036
|
}
|
|
35653
36037
|
assignFieldPlus(dest, source) {
|
|
36038
|
+
dest.roleRules = source.roleRules;
|
|
35654
36039
|
dest.roleIds = source.roleIds;
|
|
36040
|
+
dest.roleViewRules = source.roleViewRules;
|
|
35655
36041
|
dest.roleViewIds = source.roleViewIds;
|
|
35656
36042
|
}
|
|
35657
36043
|
}
|
|
@@ -35665,33 +36051,14 @@ StateMachinesConnectionReceiverRoleComponent.decorators = [
|
|
|
35665
36051
|
];
|
|
35666
36052
|
StateMachinesConnectionReceiverRoleComponent.ctorParameters = () => [
|
|
35667
36053
|
{ type: Injector },
|
|
35668
|
-
{ type:
|
|
36054
|
+
{ type: DmChucVuService }
|
|
35669
36055
|
];
|
|
35670
36056
|
StateMachinesConnectionReceiverRoleComponent.propDecorators = {
|
|
35671
36057
|
data: [{ type: Input }],
|
|
36058
|
+
isFormAdd: [{ type: Input }],
|
|
35672
36059
|
viewOnly: [{ type: Input }]
|
|
35673
36060
|
};
|
|
35674
36061
|
|
|
35675
|
-
class WfItem {
|
|
35676
|
-
}
|
|
35677
|
-
class WfSchema {
|
|
35678
|
-
}
|
|
35679
|
-
class WfMachine {
|
|
35680
|
-
}
|
|
35681
|
-
class WfAction {
|
|
35682
|
-
constructor() {
|
|
35683
|
-
this.editing = false;
|
|
35684
|
-
}
|
|
35685
|
-
}
|
|
35686
|
-
class WorkflowTargetDefaultValue {
|
|
35687
|
-
constructor() {
|
|
35688
|
-
this.dicDefaultValue = {};
|
|
35689
|
-
this.dicDefaultValueByWorkflow = {};
|
|
35690
|
-
this.dicByTargetCanEdit = {};
|
|
35691
|
-
this.dicByTargetOnlyView = {};
|
|
35692
|
-
}
|
|
35693
|
-
}
|
|
35694
|
-
|
|
35695
36062
|
class StateMachinesConnectionReceiverUserComponent extends DataFormBase {
|
|
35696
36063
|
constructor(injector) {
|
|
35697
36064
|
super(injector);
|
|
@@ -35874,8 +36241,13 @@ class StateMachinesConnectionReceiverComponent extends ComponentBase {
|
|
|
35874
36241
|
constructor(injector) {
|
|
35875
36242
|
super(injector);
|
|
35876
36243
|
this.tabDataReceiver = [
|
|
36244
|
+
// {
|
|
36245
|
+
// code: 'user',
|
|
36246
|
+
// icon: 'fa fa-user',
|
|
36247
|
+
// label: ''
|
|
36248
|
+
// },
|
|
35877
36249
|
{
|
|
35878
|
-
code: '
|
|
36250
|
+
code: 'condition',
|
|
35879
36251
|
icon: 'fa fa-user',
|
|
35880
36252
|
label: ''
|
|
35881
36253
|
},
|
|
@@ -35901,11 +36273,16 @@ class StateMachinesConnectionReceiverComponent extends ComponentBase {
|
|
|
35901
36273
|
getModelData() {
|
|
35902
36274
|
return __awaiter(this, void 0, void 0, function* () {
|
|
35903
36275
|
const dataPlus = {};
|
|
35904
|
-
const
|
|
35905
|
-
if (
|
|
36276
|
+
const modelCondition = yield this.conditionForm.getModelData();
|
|
36277
|
+
if (modelCondition == null) {
|
|
35906
36278
|
return null;
|
|
35907
36279
|
}
|
|
35908
|
-
this.
|
|
36280
|
+
this.conditionForm.assignFieldPlus(dataPlus, modelCondition);
|
|
36281
|
+
// const modelUser = await this.userForm.getModelData();
|
|
36282
|
+
// if (modelUser == null) {
|
|
36283
|
+
// return null;
|
|
36284
|
+
// }
|
|
36285
|
+
// this.userForm.assignFieldPlus(dataPlus, modelUser);
|
|
35909
36286
|
const modelDepartment = yield this.departmentForm.getModelData();
|
|
35910
36287
|
if (modelDepartment == null) {
|
|
35911
36288
|
return null;
|
|
@@ -35928,7 +36305,7 @@ class StateMachinesConnectionReceiverComponent extends ComponentBase {
|
|
|
35928
36305
|
StateMachinesConnectionReceiverComponent.decorators = [
|
|
35929
36306
|
{ type: Component, args: [{
|
|
35930
36307
|
selector: 'statemachines-connection-receiver',
|
|
35931
|
-
template: "<div style=\"height: 100%\">\r\n <tn-tabview [data]=\"tabDataReceiver\" [allowViewAll]=\"true\" [vertical]=\"true\">\r\n <ng-template #user>\r\n <tn-custom-scrollbar>\r\n <statemachines-connection-receiver-user #user [designerContext]=\"designerContext\" [data]=\"data\"\r\n [workflowData]=\"workflowData\" [viewOnly]=\"viewOnly\">\r\n </statemachines-connection-receiver-user>\r\n </tn-custom-scrollbar>\r\n </ng-template>\r\n <ng-template #department>\r\n <tn-custom-scrollbar>\r\n <statemachines-connection-receiver-department #user [data]=\"data\" [viewOnly]=\"viewOnly\">\r\n </statemachines-connection-receiver-department>\r\n </tn-custom-scrollbar>\r\n </ng-template>\r\n <ng-template #group>\r\n <tn-custom-scrollbar>\r\n <statemachines-connection-receiver-group #user [data]=\"data\" [viewOnly]=\"viewOnly\">\r\n </statemachines-connection-receiver-group>\r\n </tn-custom-scrollbar>\r\n </ng-template>\r\n <ng-template #role>\r\n <tn-custom-scrollbar>\r\n <statemachines-connection-receiver-role #user [data]=\"data\" [viewOnly]=\"viewOnly\">\r\n </statemachines-connection-receiver-role>\r\n </tn-custom-scrollbar>\r\n </ng-template>\r\n </tn-tabview>\r\n</div>",
|
|
36308
|
+
template: "<div style=\"height: 100%\">\r\n <tn-tabview [data]=\"tabDataReceiver\" [allowViewAll]=\"true\" [vertical]=\"true\">\r\n <!-- <ng-template #user>\r\n <tn-custom-scrollbar>\r\n <statemachines-connection-receiver-user #user [designerContext]=\"designerContext\" [data]=\"data\"\r\n [workflowData]=\"workflowData\" [viewOnly]=\"viewOnly\">\r\n </statemachines-connection-receiver-user>\r\n </tn-custom-scrollbar>\r\n </ng-template> -->\r\n <ng-template #condition>\r\n <tn-custom-scrollbar>\r\n <statemachines-connection-receiver-condition #condition [workflowData]=\"workflowData\" [data]=\"data\"\r\n [isFormAdd]=\"isFormAdd\" [viewOnly]=\"viewOnly\">\r\n </statemachines-connection-receiver-condition>\r\n </tn-custom-scrollbar>\r\n </ng-template>\r\n <ng-template #department>\r\n <tn-custom-scrollbar>\r\n <statemachines-connection-receiver-department #user [data]=\"data\" [isFormAdd]=\"isFormAdd\"\r\n [viewOnly]=\"viewOnly\">\r\n </statemachines-connection-receiver-department>\r\n </tn-custom-scrollbar>\r\n </ng-template>\r\n <ng-template #group>\r\n <tn-custom-scrollbar>\r\n <statemachines-connection-receiver-group #user [data]=\"data\" [isFormAdd]=\"isFormAdd\"\r\n [viewOnly]=\"viewOnly\">\r\n </statemachines-connection-receiver-group>\r\n </tn-custom-scrollbar>\r\n </ng-template>\r\n <ng-template #role>\r\n <tn-custom-scrollbar>\r\n <statemachines-connection-receiver-role #user [data]=\"data\" [isFormAdd]=\"isFormAdd\"\r\n [viewOnly]=\"viewOnly\">\r\n </statemachines-connection-receiver-role>\r\n </tn-custom-scrollbar>\r\n </ng-template>\r\n </tn-tabview>\r\n</div>",
|
|
35932
36309
|
providers: [ComponentContextService],
|
|
35933
36310
|
styles: ["::ng-deep statemachines-connection-metadata .userRules .tn-check-box-list,::ng-deep statemachines-connection-metadata .userViewRules .tn-check-box-list{margin-bottom:.5em!important;margin-top:-.5em}::ng-deep statemachines-connection-metadata .userIds .label,::ng-deep statemachines-connection-metadata .userViewIds .label{font-weight:700}"]
|
|
35934
36311
|
},] }
|
|
@@ -35938,21 +36315,23 @@ StateMachinesConnectionReceiverComponent.ctorParameters = () => [
|
|
|
35938
36315
|
];
|
|
35939
36316
|
StateMachinesConnectionReceiverComponent.propDecorators = {
|
|
35940
36317
|
userForm: [{ type: ViewChild, args: [StateMachinesConnectionReceiverUserComponent, { static: false },] }],
|
|
36318
|
+
conditionForm: [{ type: ViewChild, args: [StateMachinesConnectionReceiverConditionComponent, { static: false },] }],
|
|
35941
36319
|
departmentForm: [{ type: ViewChild, args: [StateMachinesConnectionReceiverDepartmentComponent, { static: false },] }],
|
|
35942
36320
|
groupForm: [{ type: ViewChild, args: [StateMachinesConnectionReceiverGroupComponent, { static: false },] }],
|
|
35943
36321
|
roleForm: [{ type: ViewChild, args: [StateMachinesConnectionReceiverRoleComponent, { static: false },] }],
|
|
35944
36322
|
designerContext: [{ type: Input }],
|
|
35945
36323
|
data: [{ type: Input }],
|
|
36324
|
+
isFormAdd: [{ type: Input }],
|
|
35946
36325
|
workflowData: [{ type: Input }],
|
|
35947
36326
|
viewOnly: [{ type: Input }]
|
|
35948
36327
|
};
|
|
35949
36328
|
|
|
35950
36329
|
class StateMachinesConnectionSenderComponent extends DataFormBase {
|
|
35951
|
-
constructor(injector, notifierService, _userGroupService,
|
|
36330
|
+
constructor(injector, notifierService, _userGroupService, _dmChucVuService) {
|
|
35952
36331
|
super(injector);
|
|
35953
36332
|
this.notifierService = notifierService;
|
|
35954
36333
|
this._userGroupService = _userGroupService;
|
|
35955
|
-
this.
|
|
36334
|
+
this._dmChucVuService = _dmChucVuService;
|
|
35956
36335
|
this.dynamicRules = [];
|
|
35957
36336
|
this.autoGetDetail = false;
|
|
35958
36337
|
this.autoSave = false;
|
|
@@ -35981,7 +36360,7 @@ class StateMachinesConnectionSenderComponent extends DataFormBase {
|
|
|
35981
36360
|
{ id: 3, ten: '3' }
|
|
35982
36361
|
]
|
|
35983
36362
|
}),
|
|
35984
|
-
createRolePickerControl(this.
|
|
36363
|
+
createRolePickerControl(this._dmChucVuService, 'roleId', 'Chức vụ'),
|
|
35985
36364
|
userGroupPickerControl,
|
|
35986
36365
|
new DropdownControlSchema({
|
|
35987
36366
|
field: 'lastStateCode',
|
|
@@ -35991,6 +36370,18 @@ class StateMachinesConnectionSenderComponent extends DataFormBase {
|
|
|
35991
36370
|
displayField: 'name',
|
|
35992
36371
|
showLabel: false,
|
|
35993
36372
|
mdWidth: 12
|
|
36373
|
+
}),
|
|
36374
|
+
new CustomControlSchema({
|
|
36375
|
+
field: 'customField',
|
|
36376
|
+
label: 'Trường dữ liệu',
|
|
36377
|
+
operators: [
|
|
36378
|
+
{ id: Operator.equal, ten: 'Bằng' },
|
|
36379
|
+
{ id: Operator.notEqual, ten: 'Không bằng' },
|
|
36380
|
+
{ id: Operator.greater, ten: 'Lớn hơn' },
|
|
36381
|
+
{ id: Operator.greaterThanEqual, ten: 'Lớn hơn hoặc bằng' },
|
|
36382
|
+
{ id: Operator.lower, ten: 'Nhỏ hơn' },
|
|
36383
|
+
{ id: Operator.lowerThanEqual, ten: 'Nhỏ hơn hoặc bằng' }
|
|
36384
|
+
]
|
|
35994
36385
|
})
|
|
35995
36386
|
];
|
|
35996
36387
|
if (this.data && this.data.data) {
|
|
@@ -36041,7 +36432,7 @@ StateMachinesConnectionSenderComponent.ctorParameters = () => [
|
|
|
36041
36432
|
{ type: Injector },
|
|
36042
36433
|
{ type: NotifierService },
|
|
36043
36434
|
{ type: UserGroupRealService },
|
|
36044
|
-
{ type:
|
|
36435
|
+
{ type: DmChucVuService }
|
|
36045
36436
|
];
|
|
36046
36437
|
StateMachinesConnectionSenderComponent.propDecorators = {
|
|
36047
36438
|
queryBuilder: [{ type: ViewChild, args: ['queryBuilder', { static: false },] }],
|
|
@@ -36127,16 +36518,20 @@ class StateMachinesConnectionMetadataComponent extends DataFormBase {
|
|
|
36127
36518
|
required: true,
|
|
36128
36519
|
})
|
|
36129
36520
|
];
|
|
36521
|
+
if (this.data && this.data.editing) {
|
|
36522
|
+
this.isFormAdd = false;
|
|
36523
|
+
}
|
|
36524
|
+
else {
|
|
36525
|
+
this.isFormAdd = true;
|
|
36526
|
+
}
|
|
36130
36527
|
}
|
|
36131
36528
|
onFormInitialized(evt) {
|
|
36132
36529
|
return __awaiter(this, void 0, void 0, function* () {
|
|
36133
|
-
if (this.
|
|
36134
|
-
this.isFormAdd = false;
|
|
36530
|
+
if (!this.isFormAdd) {
|
|
36135
36531
|
setMetadataConnection(evt.model, this.data);
|
|
36136
36532
|
this.source = this.data.source;
|
|
36137
36533
|
}
|
|
36138
36534
|
else {
|
|
36139
|
-
this.isFormAdd = true;
|
|
36140
36535
|
evt.model.id = this._commonService.guid();
|
|
36141
36536
|
evt.model.data = {};
|
|
36142
36537
|
}
|
|
@@ -36190,7 +36585,7 @@ class StateMachinesConnectionMetadataComponent extends DataFormBase {
|
|
|
36190
36585
|
StateMachinesConnectionMetadataComponent.decorators = [
|
|
36191
36586
|
{ type: Component, args: [{
|
|
36192
36587
|
selector: 'statemachines-connection-metadata',
|
|
36193
|
-
template: "<div class=\"flex flex-column\" style=\"height: 100%\">\r\n <crud-form #crudForm [(data)]=\"model.data\" [setting]=\"setting\" [context]=\"context\" [disableCaching]=\"true\"\r\n (onFormReady)=\"_handleFormReady($event)\">\r\n </crud-form>\r\n <div class=\"fit\" style=\"overflow: hidden;\">\r\n <tn-tabview [data]=\"mainTabData\" [allowViewAll]=\"true\">\r\n <ng-template #sender>\r\n <statemachines-connection-sender #senderForm [data]=\"data\" [machines]=\"machinesData.machines\"\r\n [viewOnly]=\"viewOnly\">\r\n </statemachines-connection-sender>\r\n </ng-template>\r\n <ng-template #receiver>\r\n <statemachines-connection-receiver #receiverForm [designerContext]=\"designerContext\" [data]=\"data\"\r\n [workflowData]=\"machinesData\" [viewOnly]=\"viewOnly\">\r\n </statemachines-connection-receiver>\r\n </ng-template>\r\n </tn-tabview>\r\n </div>\r\n</div>\r\n<ng-template #buttonTemplate>\r\n <ng-container *ngIf=\"!viewOnly\">\r\n <button *ngIf=\"!model.data.__disableEdit && !__isFormView\" type=\"button\" pButton icon=\"pi pi-save\"\r\n class=\"p-button-text\" [label]=\"'FORM.SAVE' | translate\" (click)=\"_handleSave($event)\"></button>\r\n <button type=\"button\" pButton icon=\"pi pi-trash\" class=\"p-button-text p-button-danger\"\r\n [label]=\"'X\u00F3a' | translate\" (click)=\"remove($event)\"></button>\r\n </ng-container>\r\n <button type=\"button\" pButton icon=\"pi pi-replay\" class=\"p-button-text p-button-secondary\"\r\n [label]=\"'FORM.CANCEL' | translate\" preventTab (click)=\"_handleCancel($event)\"></button>\r\n</ng-template>\r\n\r\n<ng-template #templateDropdownIconSelected let-item let-selectedValue=\"selectedValue\">\r\n <span [class]=\"item.label\"></span>\r\n</ng-template>\r\n<ng-template #templateDropdownIcon let-item>\r\n <div class=\"__workflow-setting-icon-item\">\r\n <span [class]=\"item.label\"></span>\r\n </div>\r\n</ng-template>",
|
|
36588
|
+
template: "<div class=\"flex flex-column\" style=\"height: 100%\">\r\n <crud-form #crudForm [(data)]=\"model.data\" [setting]=\"setting\" [context]=\"context\" [disableCaching]=\"true\"\r\n (onFormReady)=\"_handleFormReady($event)\">\r\n </crud-form>\r\n <div class=\"fit\" style=\"overflow: hidden;\">\r\n <tn-tabview [data]=\"mainTabData\" [allowViewAll]=\"true\">\r\n <ng-template #sender>\r\n <statemachines-connection-sender #senderForm [data]=\"data\" [machines]=\"machinesData.machines\"\r\n [viewOnly]=\"viewOnly\">\r\n </statemachines-connection-sender>\r\n </ng-template>\r\n <ng-template #receiver>\r\n <statemachines-connection-receiver #receiverForm [designerContext]=\"designerContext\" [data]=\"data\"\r\n [isFormAdd]=\"isFormAdd\" [workflowData]=\"machinesData\" [viewOnly]=\"viewOnly\">\r\n </statemachines-connection-receiver>\r\n </ng-template>\r\n </tn-tabview>\r\n </div>\r\n</div>\r\n<ng-template #buttonTemplate>\r\n <ng-container *ngIf=\"!viewOnly\">\r\n <button *ngIf=\"!model.data.__disableEdit && !__isFormView\" type=\"button\" pButton icon=\"pi pi-save\"\r\n class=\"p-button-text\" [label]=\"'FORM.SAVE' | translate\" (click)=\"_handleSave($event)\"></button>\r\n <button type=\"button\" pButton icon=\"pi pi-trash\" class=\"p-button-text p-button-danger\"\r\n [label]=\"'X\u00F3a' | translate\" (click)=\"remove($event)\"></button>\r\n </ng-container>\r\n <button type=\"button\" pButton icon=\"pi pi-replay\" class=\"p-button-text p-button-secondary\"\r\n [label]=\"'FORM.CANCEL' | translate\" preventTab (click)=\"_handleCancel($event)\"></button>\r\n</ng-template>\r\n\r\n<ng-template #templateDropdownIconSelected let-item let-selectedValue=\"selectedValue\">\r\n <span [class]=\"item.label\"></span>\r\n</ng-template>\r\n<ng-template #templateDropdownIcon let-item>\r\n <div class=\"__workflow-setting-icon-item\">\r\n <span [class]=\"item.label\"></span>\r\n </div>\r\n</ng-template>",
|
|
36194
36589
|
providers: [ComponentContextService],
|
|
36195
36590
|
styles: [""]
|
|
36196
36591
|
},] }
|
|
@@ -36567,7 +36962,7 @@ StateMachinesDesignerComponent.decorators = [
|
|
|
36567
36962
|
selector: 'statemachines-designer',
|
|
36568
36963
|
template: "<div class=\"state-control\" [ngStyle]=\"holderStyle\" [class.highlight]=\"highlighting\">\r\n <tn-custom-scrollbar *ngIf=\"useScrollBar\" #scrollbar [ngStyle]=\"{ height: '100%', display: 'block'}\"\r\n [config]=\"{suppressScrollX : true}\">\r\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\r\n </tn-custom-scrollbar>\r\n <ng-container *ngIf=\"!useScrollBar\">\r\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\r\n </ng-container>\r\n <div class=\"container-note\">\r\n <span *ngIf=\"!viewOnly\"><i class=\"fas fa-info-circle\"></i> Click \u0111\u00FAp v\u00E0o v\u00F9ng tr\u1ED1ng \u0111\u1EC3 th\u00EAm m\u1EDBi tr\u1EA1ng th\u00E1i\r\n </span>\r\n\r\n <button (click)=\"copyWfToClipboard()\" pButton type=\"button\" pTooltip=\"Sao ch\u00E9p\" tooltipPosition=\"top\"\r\n class=\"p-button-rounded p-button-info p-button-outlined p-ripple p-button p-component p-button-icon-only\">\r\n <i class=\"fas fa-copy\"></i>\r\n </button>\r\n\r\n <button *ngIf=\"!viewOnly\" (click)=\"pasteWfToClipboard()\" pButton type=\"button\" label=\"Success\" pTooltip=\"D\u00E1n\"\r\n tooltipPosition=\"top\"\r\n class=\"p-button-rounded p-button-success p-button-outlined p-ripple p-button p-component p-button-icon-only\">\r\n <i class=\"fas fa-paste\"></i>\r\n </button>\r\n\r\n <button (click)=\"fullScreen(!fullScreenMode)\" pButton type=\"button\" label=\"Success\" pTooltip=\"M\u1EDF r\u1ED9ng\"\r\n tooltipPosition=\"top\"\r\n class=\"p-button-rounded p-button-secondary p-button-outlined p-ripple p-button p-component p-button-icon-only\">\r\n <i *ngIf=\"!fullScreenMode\" class=\"fas fa-expand-arrows-alt\"></i>\r\n <i *ngIf=\"fullScreenMode\" class=\"fas fa-compress-arrows-alt\"></i>\r\n </button>\r\n </div>\r\n</div>\r\n\r\n<ng-template #content>\r\n <div *ngIf=\"jsPlumbReady\" #container [id]=\"containerId\" class=\"container\" [ngClass]=\"viewOnly?'':'editable'\"\r\n [ngStyle]=\"{ height: viewHeight + 'px' }\" (dblclick)=\"createNewNode($event, container)\">\r\n <ng-container *ngIf=\"data.machines.length > 0\">\r\n <state *ngFor=\"let machine of data.machines\" [id]=\"containerId + '_' + machine.id\" [machine]=\"machine\"\r\n [viewOnly]=\"viewOnly\" class=\"state-node\"\r\n [ngStyle]=\"{'left': machine.location[0] + 'px', 'top': machine.location[1] + 'px'}\"\r\n [jsPlumbInstance]=\"jsPlumbInstance\" [containerId]=\"containerId\" (onEdit)=\"editNode($event)\"\r\n (onDelete)=\"deleteNode($event)\" (onReady)=\"checkStatesReadyThenRenderConnections($event)\">\r\n </state>\r\n </ng-container>\r\n </div>\r\n</ng-template>\r\n\r\n<p-contextMenu #contextMenu [appendTo]=\"'body'\" [model]=\"buttonContexts\"></p-contextMenu>\r\n\r\n<tn-dialog *ngIf=\"stateMetadataModel.showEditForm\" #dialog [styleClass]=\"'address-form'\"\r\n [header]=\"'Th\u00F4ng tin tr\u1EA1ng th\u00E1i' | translate\" [popupSize]=\"stateMetadataModel.popupSize\"\r\n (onHide)=\"hideStateMetadataForm()\">\r\n <state-metadata #formBase [data]=\"currentState\" [location]=\"locationWhenAdd\" [machinesData]=\"data\"\r\n (onSaved)=\"handleSavedStateMetadata($event)\" (onCancel)=\"hideStateMetadataForm()\"\r\n (onRemove)=\"handleRemoveFromDialog()\">\r\n </state-metadata>\r\n</tn-dialog>\r\n\r\n<tn-dialog *ngIf=\"stateMachineConnectionModel.showEditForm\" #dialog [styleClass]=\"'address-form'\"\r\n [useDefaultScrollBar]=\"true\" [header]=\"'Th\u00F4ng tin \u0111\u01B0\u1EDDng n\u1ED1i' | translate\"\r\n [popupSize]=\"stateMachineConnectionModel.popupSize\" (onHide)=\"hideConnectionForm()\">\r\n <statemachines-connection-metadata #formBase [data]=\"currentConnectionObject.connectionMetadata\"\r\n [designerContext]=\"context\" [machinesData]=\"data\" [viewOnly]=\"viewOnly\"\r\n (onSaved)=\"handleSavedConnection($event)\" (onCancel)=\"hideConnectionForm()\"\r\n (onRemove)=\"handleRemoveConnectionFromDialog()\">\r\n </statemachines-connection-metadata>\r\n</tn-dialog>",
|
|
36569
36964
|
providers: [ComponentContextService],
|
|
36570
|
-
styles: [".state-control{border:1px solid #ced4da;border-radius:3px;overflow:hidden;position:relative}.state-control .container{height:1500px;position:relative}.state-control .container .state-node{display:block;height:100px;max-height:100px;position:absolute;width:150px}.state-control .container-note{display:inline-block;font-weight:100;margin:0;padding:10px 14px;position:absolute;text-align:right;top:0;width:100%}.state-control .container-note span{background:#ffeb3b;line-height:30px;margin-right:10px;padding:5px}.state-control .container-note button{margin-right:5px}:host ::ng-deep .jtk-hover{z-index:1}:host ::ng-deep .conn-label{background:rgba(97,183,207,.30196078431372547);border:1px dashed #c5c5c5;padding:5px;z-index:2}:host ::ng-deep .conn-label:hover{background:#fff}:host ::ng-deep .conn-label.jtk-hover{background:#44a7c3;border:none;color:#fff;z-index:3}:host ::ng-deep .editable .conn-label,:host ::ng-deep .editable .jtk-connector,:host ::ng-deep .editable .jtk-endpoint,:host ::ng-deep .editable path{cursor:pointer}::ng-deep .state-control.highlight .conn-label,::ng-deep .state-control.highlight .jtk-connector,::ng-deep .state-control.highlight state{opacity:.3}::ng-deep .state-control.highlight .conn-label.--current,::ng-deep .state-control.highlight .jtk-connector.--current,::ng-deep .state-control.highlight state.--current{opacity:unset}"]
|
|
36965
|
+
styles: [".state-control{border:1px solid #ced4da;border-radius:3px;overflow:hidden;position:relative}.state-control .container{height:1500px;position:relative}.state-control .container .state-node{display:block;height:100px;max-height:100px;position:absolute;width:150px}.state-control .container-note{display:inline-block;font-weight:100;margin:0;padding:10px 14px;position:absolute;text-align:right;top:0;width:100%}.state-control .container-note span{background:#ffeb3b;line-height:30px;margin-right:10px;padding:5px}.state-control .container-note button{margin-right:5px}:host ::ng-deep .jtk-hover{z-index:1}:host ::ng-deep .conn-label{background:rgba(97,183,207,.30196078431372547);border:1px dashed #c5c5c5;padding:5px;z-index:2}:host ::ng-deep .conn-label:hover{background:#fff}:host ::ng-deep .conn-label.jtk-hover{background:#44a7c3;border:none;color:#fff;z-index:3}:host ::ng-deep .editable .conn-label,:host ::ng-deep .editable .jtk-connector,:host ::ng-deep .editable .jtk-endpoint,:host ::ng-deep .editable path{cursor:pointer}::ng-deep .state-control.highlight .conn-label,::ng-deep .state-control.highlight .jtk-connector,::ng-deep .state-control.highlight state{opacity:.3}::ng-deep .state-control.highlight .conn-label.--current,::ng-deep .state-control.highlight .jtk-connector.--current,::ng-deep .state-control.highlight state.--current{opacity:unset}::ng-deep .state-control.highlight .conn-label.--current{background:#44a7c3;border:none;color:#fff}"]
|
|
36571
36966
|
},] }
|
|
36572
36967
|
];
|
|
36573
36968
|
StateMachinesDesignerComponent.ctorParameters = () => [
|
|
@@ -36979,7 +37374,7 @@ class TnAppHelpComponent extends ComponentBase {
|
|
|
36979
37374
|
TnAppHelpComponent.decorators = [
|
|
36980
37375
|
{ type: Component, args: [{
|
|
36981
37376
|
selector: 'li[tn-app-help]',
|
|
36982
|
-
template: "<a href=\"javascript:;\" tabindex=\"9\" (click)=\"showHelper()\" style=\"height: 30px;\" pTooltip=\"Tr\u1EE3 gi\u00FAp\"\r\n tooltipPosition=\"bottom\">\r\n <span class=\"topbar-icon-left\">\r\n <!-- <svg focusable=\"false\" role=\"img\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\r\n class=\"topbar-icon animated swing svgmodule\">\r\n <path fill=\"currentColor\"\r\n d=\"M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 448c-110.532 0-200-89.431-200-200 0-110.495 89.472-200 200-200 110.491 0 200 89.471 200 200 0 110.53-89.431 200-200 200zm107.244-255.2c0 67.052-72.421 68.084-72.421 92.863V300c0 6.627-5.373 12-12 12h-45.647c-6.627 0-12-5.373-12-12v-8.659c0-35.745 27.1-50.034 47.579-61.516 17.561-9.845 28.324-16.541 28.324-29.579 0-17.246-21.999-28.693-39.784-28.693-23.189 0-33.894 10.977-48.942 29.969-4.057 5.12-11.46 6.071-16.666 2.124l-27.824-21.098c-5.107-3.872-6.251-11.066-2.644-16.363C184.846 131.491 214.94 112 261.794 112c49.071 0 101.45 38.304 101.45 88.8zM298 368c0 23.159-18.841 42-42 42s-42-18.841-42-42 18.841-42 42-42 42 18.841 42 42z\"\r\n class=\"\"></path>\r\n </svg> -->\r\n <i class=\"topbar-icon animated swing pi pi-question-circle\"></i>\r\n </span>\r\n <span class=\"topbar-item-name\">{{ \"Tr\u1EE3 gi\u00FAp\" | translate }}</span>\r\n</a>\r\n\r\n<p-sidebar [styleClass]=\"'HelperSlideBar tn-l-sidebar-wrapper'\" [(visible)]=\"display\" position=\"right\"\r\n [appendTo]=\"'body'\" [style]=\"{ width: '30em', border: 0, 'max-width': '100vw' }\">\r\n <div style=\"background-color: #fff; box-shadow: 0 1px 5px 0 rgba(0, 0, 0, 0.35);\">\r\n <h1 style=\"font-size: 16px; color: #212529;\">Trung t\u00E2m tr\u1EE3 gi\u00FAp</h1>\r\n </div>\r\n\r\n <div class=\"tn-l-help-wrapper\">\r\n <tn-custom-scrollbar #scrollbar [style]=\"{'max-height':'calc(100vh - 50px)'}\">\r\n <div class=\"HelpCenter\">\r\n <div class=\"p-grid\" style=\"margin-top:10px; margin-bottom:
|
|
37377
|
+
template: "<a href=\"javascript:;\" tabindex=\"9\" (click)=\"showHelper()\" style=\"height: 30px;\" pTooltip=\"Tr\u1EE3 gi\u00FAp\"\r\n tooltipPosition=\"bottom\">\r\n <span class=\"topbar-icon-left\">\r\n <!-- <svg focusable=\"false\" role=\"img\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\r\n class=\"topbar-icon animated swing svgmodule\">\r\n <path fill=\"currentColor\"\r\n d=\"M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 448c-110.532 0-200-89.431-200-200 0-110.495 89.472-200 200-200 110.491 0 200 89.471 200 200 0 110.53-89.431 200-200 200zm107.244-255.2c0 67.052-72.421 68.084-72.421 92.863V300c0 6.627-5.373 12-12 12h-45.647c-6.627 0-12-5.373-12-12v-8.659c0-35.745 27.1-50.034 47.579-61.516 17.561-9.845 28.324-16.541 28.324-29.579 0-17.246-21.999-28.693-39.784-28.693-23.189 0-33.894 10.977-48.942 29.969-4.057 5.12-11.46 6.071-16.666 2.124l-27.824-21.098c-5.107-3.872-6.251-11.066-2.644-16.363C184.846 131.491 214.94 112 261.794 112c49.071 0 101.45 38.304 101.45 88.8zM298 368c0 23.159-18.841 42-42 42s-42-18.841-42-42 18.841-42 42-42 42 18.841 42 42z\"\r\n class=\"\"></path>\r\n </svg> -->\r\n <i class=\"topbar-icon animated swing pi pi-question-circle\"></i>\r\n </span>\r\n <span class=\"topbar-item-name\">{{ \"Tr\u1EE3 gi\u00FAp\" | translate }}</span>\r\n</a>\r\n\r\n<p-sidebar [styleClass]=\"'HelperSlideBar tn-l-sidebar-wrapper'\" [(visible)]=\"display\" position=\"right\"\r\n [appendTo]=\"'body'\" [style]=\"{ width: '30em', border: 0, 'max-width': '100vw' }\">\r\n <div style=\"background-color: #fff; box-shadow: 0 1px 5px 0 rgba(0, 0, 0, 0.35);\">\r\n <h1 style=\"font-size: 16px; color: #212529;\">Trung t\u00E2m tr\u1EE3 gi\u00FAp</h1>\r\n </div>\r\n\r\n <div class=\"tn-l-help-wrapper\">\r\n <tn-custom-scrollbar #scrollbar [style]=\"{'max-height':'calc(100vh - 50px)'}\">\r\n <div class=\"HelpCenter\">\r\n <div class=\"p-grid\" style=\"margin-top:10px; margin-bottom: 25px;\">\r\n <div class=\"p-col-8\">\r\n <p style=\"font-weight:bold;font-size: 16px;margin-bottom: 8px; margin-top:20px\">\r\n {{environment.helpConfig?.expertName}}\r\n </p>\r\n <p style=\"margin: 0px;\">\r\n <a [href]=\"hrefTelephone\"><i class=\"fas fa-phone\"\r\n style=\"margin-right: 8px; width: 15px\"></i>{{phoneNumber}}</a>\r\n </p>\r\n <p style=\"margin-top: 8px;\">\r\n <a [href]=\"hrefMail\"><i class=\"fas fa-envelope\"\r\n style=\"margin-right: 8px; width: 15px\"></i>{{mail}}</a>\r\n </p>\r\n </div>\r\n <div class=\"p-col-4\">\r\n <img src=\"/assets/images/tri-nam-group-logo.png\"\r\n style=\"width: 100%; float: right; margin-top: 15px; opacity: 0.7;\" />\r\n </div>\r\n </div>\r\n\r\n <div class=\"p-grid p-m-0 HelpCenter-video\" style=\"margin-top: 0px\">\r\n <div class=\"p-col-12 help-title\">\r\n <span class=\"tit-name\">Xem h\u01B0\u1EDBng d\u1EABn</span>\r\n </div>\r\n <div class=\"p-col-12 help-content\">\r\n <h2 *ngIf=\"showHelperCurrentPageState\" style=\"margin-top: 0px\">\r\n <a href=\"javascript:;\" (click)=\"showHelperCurrentPage(null)\"\r\n style=\"display:inline-block; position: relative; border-top: 1px solid #52abf5;\">\r\n <img src=\"/assets/images/bgvideo.png\" alt=\"screen shot\"\r\n style=\"width:100%; filter: brightness(0.88);\" />\r\n <i class=\"fab fa-youtube fa-2x\"></i>\r\n </a>\r\n </h2>\r\n </div>\r\n </div>\r\n\r\n <div class=\"p-grid p-m-0 HelpCenter-download\" style=\"margin-top: 0px; margin-bottom: 40px;\">\r\n <div class=\"p-col-12 help-title\">\r\n <span class=\"tit-name\">Ph\u1EA7n m\u1EC1m ti\u1EC7n \u00EDch</span>\r\n </div>\r\n <div class=\"tn-l-pmti\" style=\"border: 1px solid #ccc; width: 100%\">\r\n <div class=\"p-col-4 help-content\">\r\n <p style=\"margin-top: 18px; text-align: center;\">\r\n <a target=\"_blank\" href=\"{{environment.signalr.linkDownloadClientApp}}\"\r\n style=\"display: inline-block; text-align: center;\">\r\n <img src=\"/assets/images/icon-appTN64x64.png\" />\r\n <br />TN Client\r\n </a>\r\n </p>\r\n </div>\r\n <div class=\"p-col-4 help-content\">\r\n <p style=\"margin-top: 18px; text-align: center;\">\r\n <a target=\"_blank\" href=\"https://ultraviewer.net/vi/UltraViewer_setup_6.2_vi.exe\"\r\n style=\"display: inline-block; text-align: center;\">\r\n <img src=\"/assets/images/ultraviewer.ico\" />\r\n <br />Ultraviewer\r\n </a>\r\n </p>\r\n </div>\r\n <div class=\"p-col-4 help-content\">\r\n <p style=\"margin-top: 18px; text-align: center;\">\r\n <a target=\"_blank\" href=\"https://www.teamviewer.com/vi/tai-xuong-tu-dong-teamviewer/\"\r\n style=\"display: inline-block; text-align: center;\">\r\n <img src=\"/assets/images/icon-teamviewer.png\" />\r\n <br />Teamviewer\r\n </a>\r\n </p>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </tn-custom-scrollbar>\r\n </div>\r\n</p-sidebar>",
|
|
36983
37378
|
providers: [ComponentContextService],
|
|
36984
37379
|
styles: [".HelpCenter{color:#555;padding:0 20px}::ng-deep .tn-l-sidebar-wrapper{padding:0}.tn-l-pmti{display:flex}.HelpCenter p:first-child img{margin-bottom:10px}::ng-deep .HelperSlideBar .p-sidebar-content>button{color:#212529;cursor:pointer;font-size:20px;margin-right:14px;margin-top:10px}::ng-deep .ui-sidebar{padding:0}::ng-deep .HelperSlideBar h1{height:50px;line-height:50px;margin:0;padding-left:20px;text-transform:uppercase}.HelpCenter-video{position:relative}.HelpCenter-video i{color:#454545;cursor:pointer;left:50%;opacity:.5;position:absolute;top:calc(50% - 10px);transform:translateX(-50%) translateY(-50%);transition:.5s}.HelpCenter-video video{opacity:1}.HelpCenter-video:hover video{cursor:pointer;opacity:.5}.HelpCenter-video:hover i{opacity:1}.HelpCenter-download img{height:45px;width:45px}.HelpCenter .help-title{background-color:rgba(49,146,225,.8784313725490196);color:#fff}.HelpCenter .help-title .tit-name{font-size:14px;font-weight:700}.HelpCenter .help-content{padding:0}.HelpCenter .HelpCenter-comment .help-content{padding:0;text-align:center}.HelpCenter-comment,.HelpCenter-download,.HelpCenter-video{margin-bottom:15px}.tn-l-help-wrapper{display:flex;max-height:calc(100vh - 60px);overflow:auto}"]
|
|
36985
37380
|
},] }
|
|
@@ -37744,7 +38139,7 @@ class TnAppNotificationComponent extends ComponentBase {
|
|
|
37744
38139
|
}
|
|
37745
38140
|
handleClicked() {
|
|
37746
38141
|
const domain = this.environment.clientDomain.thongbaoDomain;
|
|
37747
|
-
|
|
38142
|
+
window.open(`${domain}/thongbao-chuadoc`);
|
|
37748
38143
|
}
|
|
37749
38144
|
}
|
|
37750
38145
|
TnAppNotificationComponent.decorators = [
|
|
@@ -38694,10 +39089,11 @@ UserPickerDialogComponent.propDecorators = {
|
|
|
38694
39089
|
};
|
|
38695
39090
|
|
|
38696
39091
|
class UserPickerComponent extends ComponentBase {
|
|
38697
|
-
constructor(_injector, _userV5Service, _translateService) {
|
|
39092
|
+
constructor(_injector, _userV5Service, _translateService, _dm_ChucVuService) {
|
|
38698
39093
|
super(_injector);
|
|
38699
39094
|
this._userV5Service = _userV5Service;
|
|
38700
39095
|
this._translateService = _translateService;
|
|
39096
|
+
this._dm_ChucVuService = _dm_ChucVuService;
|
|
38701
39097
|
this.popupSize = new PopupSize({
|
|
38702
39098
|
width: 1100,
|
|
38703
39099
|
height: 900,
|
|
@@ -38721,6 +39117,8 @@ class UserPickerComponent extends ComponentBase {
|
|
|
38721
39117
|
this.dirty = false;
|
|
38722
39118
|
this.tooltip = '';
|
|
38723
39119
|
this.hasValue = false;
|
|
39120
|
+
this.searchSchema = {};
|
|
39121
|
+
this.searchData = {};
|
|
38724
39122
|
}
|
|
38725
39123
|
ngOnInit() {
|
|
38726
39124
|
this.control._component = this;
|
|
@@ -38750,6 +39148,21 @@ class UserPickerComponent extends ComponentBase {
|
|
|
38750
39148
|
code: 'email',
|
|
38751
39149
|
dataType: 'string',
|
|
38752
39150
|
fullTextSearch: true
|
|
39151
|
+
}),
|
|
39152
|
+
new EntityPickerColumn({
|
|
39153
|
+
label: 'Chức vụ',
|
|
39154
|
+
code: 'lstTenChucVu',
|
|
39155
|
+
templateFilter: this.filterChucVuRef,
|
|
39156
|
+
}),
|
|
39157
|
+
new EntityPickerColumn({
|
|
39158
|
+
label: 'Giảng viên',
|
|
39159
|
+
code: 'isGiangVien',
|
|
39160
|
+
dataType: 'boolean'
|
|
39161
|
+
}),
|
|
39162
|
+
new EntityPickerColumn({
|
|
39163
|
+
label: 'Chuyên viên',
|
|
39164
|
+
code: 'isChuyenVien',
|
|
39165
|
+
dataType: 'boolean'
|
|
38753
39166
|
})
|
|
38754
39167
|
], mdWidth: 12 }));
|
|
38755
39168
|
this.fieldSearchText = [...this.controlPicker.fieldSearchText];
|
|
@@ -38770,8 +39183,21 @@ class UserPickerComponent extends ComponentBase {
|
|
|
38770
39183
|
this.funcReturnValue = value => value;
|
|
38771
39184
|
this.buildFilterKeyword();
|
|
38772
39185
|
this.buildSettingEntityPicker();
|
|
39186
|
+
this.createSchemaSearch();
|
|
38773
39187
|
this.onReady.emit();
|
|
38774
39188
|
}
|
|
39189
|
+
createSchemaSearch() {
|
|
39190
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
39191
|
+
this.searchSchema.idChucVus = new DropdownControlSchema({
|
|
39192
|
+
field: 'idChucVus',
|
|
39193
|
+
multiple: true,
|
|
39194
|
+
placeholder: 'Chọn chức vụ',
|
|
39195
|
+
baseService: this._dm_ChucVuService,
|
|
39196
|
+
sortField: 'soThuTu',
|
|
39197
|
+
loadOnInit: true
|
|
39198
|
+
});
|
|
39199
|
+
});
|
|
39200
|
+
}
|
|
38775
39201
|
buildFilterKeyword() {
|
|
38776
39202
|
if (this.fieldSearchText.length == 1) {
|
|
38777
39203
|
this.getFilterOnSearch = value => this.newFilter(this.controlPicker.displayField, Operator.contain, value);
|
|
@@ -38867,6 +39293,13 @@ class UserPickerComponent extends ComponentBase {
|
|
|
38867
39293
|
filters.push(this.newFilter(this.controlPicker.valueField, Operator.notEqual, this.value));
|
|
38868
39294
|
}
|
|
38869
39295
|
}
|
|
39296
|
+
if (this.searchData.idChucVus && this.searchData.idChucVus.length > 0) {
|
|
39297
|
+
const filterOrs = [];
|
|
39298
|
+
this.searchData.idChucVus.forEach(idChucVu => {
|
|
39299
|
+
filterOrs.push(this.newFilter('IdsChucVu', Operator.contain, idChucVu));
|
|
39300
|
+
});
|
|
39301
|
+
filters.push(this.newFilterContainer('or', ...filterOrs));
|
|
39302
|
+
}
|
|
38870
39303
|
yield appendDefaultFilter(filters, this.control.defaultFilters);
|
|
38871
39304
|
if (keyWord && keyWord.length > 0) {
|
|
38872
39305
|
filters.push(this.getFilterOnSearch(keyWord));
|
|
@@ -39134,7 +39567,7 @@ class UserPickerComponent extends ComponentBase {
|
|
|
39134
39567
|
UserPickerComponent.decorators = [
|
|
39135
39568
|
{ type: Component, args: [{
|
|
39136
39569
|
selector: 'user-picker',
|
|
39137
|
-
template: "<div class=\"p-inputgroup user-picker\" [class.multiple]=\"multiple\" [class.hasValue]=\"hasValue\">\r\n <div style=\"width: calc(100% - 28px)\" [pTooltip]=\"tooltip\" tooltipPosition=\"top\">\r\n <p-autoComplete emptyMessage=\"Kh\u00F4ng c\u00F3 k\u1EBFt qu\u1EA3 n\u00E0o\" [ngClass]=\"'custom-autocomplete'\" [disabled]=\"disabled\"\r\n [placeholder]=\"control.placeholder\" [appendTo]=\"control.appendTo\" [suggestions]=\"results\" field=\"label\"\r\n [styleClass]=\"control.validators && control.required ? 'rq' : ''\" [multiple]=\"control.multiple\"\r\n [minLength]=\"2\" [(ngModel)]=\"selectedValueObject\" (onFocus)=\"handleFocus($event)\"\r\n (onBlur)=\"handleBlur($event)\" (completeMethod)=\"search($event)\" (onKeyUp)=\"handleKeyUp($event)\"\r\n (onSelect)=\"handleSelect($event)\" (onUnselect)=\"handleUnSelect($event)\">\r\n </p-autoComplete>\r\n </div>\r\n <span *ngIf=\"!control.multiple && !disabled && hasValue\" class=\"icon-clear\" (click)=\"clearValue()\"><i\r\n class=\"fas fa-times\"></i></span>\r\n <button class=\"custom-autocomplete-button\" [disabled]=\"disabled\" tabindex=\"-1\" (click)=\"showPickForm()\" pButton\r\n [pTooltip]=\"control.title\" icon=\"fas fa-external-link-alt\" type=\"button\"></button>\r\n</div>\r\n<tn-dialog #dialog *ngIf=\"showFormPicker\" styleClass=\"user-picker-box-dialog no-padding\" [useDefaultScrollBar]=\"true\"\r\n [header]=\"control.title | translate\" [popupSize]=\"popupSize\" (onHide)=\"handleHide($event)\">\r\n <user-picker-box #userPickerBox [controlSetting]=\"control\" [control]=\"controlPicker\" [parentSetting]=\"settingPicker\"\r\n [advanceData]=\"advanceDataPicker\" [selectedValue]=\"selectedValue\" (onChanged)=\"handleChangeEntity($event)\"\r\n (onSelect)=\"handleSelectEntity($event)\" (onUnSelect)=\"handleUnSelectEntity($event)\"\r\n (onDone)=\"handleHide($event)\" (onRowSelect)=\"handleRowSelect($event)\">\r\n </user-picker-box>\r\n <ng-template #footer>\r\n <button type=\" button\" pButton class=\"p-button-text\" (click)=\"onClickSubmitButton($event, userPickerBox)\"\r\n [label]=\"'Ho\u00E0n th\u00E0nh'\" icon=\"pi pi-check\"></button>\r\n </ng-template>\r\n</tn-dialog>",
|
|
39570
|
+
template: "<div class=\"p-inputgroup user-picker\" [class.multiple]=\"multiple\" [class.hasValue]=\"hasValue\">\r\n <div style=\"width: calc(100% - 28px)\" [pTooltip]=\"tooltip\" tooltipPosition=\"top\">\r\n <p-autoComplete emptyMessage=\"Kh\u00F4ng c\u00F3 k\u1EBFt qu\u1EA3 n\u00E0o\" [ngClass]=\"'custom-autocomplete'\" [disabled]=\"disabled\"\r\n [placeholder]=\"control.placeholder\" [appendTo]=\"control.appendTo\" [suggestions]=\"results\" field=\"label\"\r\n [styleClass]=\"control.validators && control.required ? 'rq' : ''\" [multiple]=\"control.multiple\"\r\n [minLength]=\"2\" [(ngModel)]=\"selectedValueObject\" (onFocus)=\"handleFocus($event)\"\r\n (onBlur)=\"handleBlur($event)\" (completeMethod)=\"search($event)\" (onKeyUp)=\"handleKeyUp($event)\"\r\n (onSelect)=\"handleSelect($event)\" (onUnselect)=\"handleUnSelect($event)\">\r\n </p-autoComplete>\r\n </div>\r\n <span *ngIf=\"!control.multiple && !disabled && hasValue\" class=\"icon-clear\" (click)=\"clearValue()\"><i\r\n class=\"fas fa-times\"></i></span>\r\n <button class=\"custom-autocomplete-button\" [disabled]=\"disabled\" tabindex=\"-1\" (click)=\"showPickForm()\" pButton\r\n [pTooltip]=\"control.title\" icon=\"fas fa-external-link-alt\" type=\"button\"></button>\r\n</div>\r\n<tn-dialog #dialog *ngIf=\"showFormPicker\" styleClass=\"user-picker-box-dialog no-padding\" [useDefaultScrollBar]=\"true\"\r\n [header]=\"control.title | translate\" [popupSize]=\"popupSize\" (onHide)=\"handleHide($event)\">\r\n <user-picker-box #userPickerBox [controlSetting]=\"control\" [control]=\"controlPicker\" [parentSetting]=\"settingPicker\"\r\n [advanceData]=\"advanceDataPicker\" [selectedValue]=\"selectedValue\" (onChanged)=\"handleChangeEntity($event)\"\r\n (onSelect)=\"handleSelectEntity($event)\" (onUnSelect)=\"handleUnSelectEntity($event)\"\r\n (onDone)=\"handleHide($event)\" (onRowSelect)=\"handleRowSelect($event)\">\r\n </user-picker-box>\r\n <ng-template #footer>\r\n <button type=\" button\" pButton class=\"p-button-text\" (click)=\"onClickSubmitButton($event, userPickerBox)\"\r\n [label]=\"'Ho\u00E0n th\u00E0nh'\" icon=\"pi pi-check\"></button>\r\n </ng-template>\r\n</tn-dialog>\r\n\r\n<ng-template #filterChucVuRef let-col=\"col\" let-filterData=\"filterData\" let-onSearch=\"onSearch\"\r\n let-onShowFilterDropdownPanel=\"onShowFilterDropdownPanel\" let-onHideFilterDropdownPanel=\"onHideFilterDropdownPanel\">\r\n <dropdown [control]=\"searchSchema.idChucVus\" [(value)]=\"searchData.idChucVus\" (onHideSmartEvent)=\"onSearch()\"\r\n (onShow)=\"onShowFilterDropdownPanel($event)\" (onHideSmartEvent)=\"onHideFilterDropdownPanel($event)\">\r\n </dropdown>\r\n</ng-template>",
|
|
39138
39571
|
providers: [
|
|
39139
39572
|
{
|
|
39140
39573
|
provide: NG_VALUE_ACCESSOR,
|
|
@@ -39149,9 +39582,11 @@ UserPickerComponent.decorators = [
|
|
|
39149
39582
|
UserPickerComponent.ctorParameters = () => [
|
|
39150
39583
|
{ type: Injector },
|
|
39151
39584
|
{ type: UserV5Service },
|
|
39152
|
-
{ type: TranslateService }
|
|
39585
|
+
{ type: TranslateService },
|
|
39586
|
+
{ type: DmChucVuService }
|
|
39153
39587
|
];
|
|
39154
39588
|
UserPickerComponent.propDecorators = {
|
|
39589
|
+
filterChucVuRef: [{ type: ViewChild, args: ['filterChucVuRef', { static: true },] }],
|
|
39155
39590
|
control: [{ type: Input }],
|
|
39156
39591
|
popupSize: [{ type: Input }],
|
|
39157
39592
|
multiple: [{ type: Input }],
|
|
@@ -40088,13 +40523,13 @@ PermissionSharingComponent.propDecorators = {
|
|
|
40088
40523
|
};
|
|
40089
40524
|
|
|
40090
40525
|
class ProcessWorkflowTargetComponent extends DataFormBase {
|
|
40091
|
-
constructor(_injector, _stateMachinesService, _coCauToChucService, _userGroupService,
|
|
40526
|
+
constructor(_injector, _stateMachinesService, _coCauToChucService, _userGroupService, _dmChucVuService) {
|
|
40092
40527
|
super(_injector);
|
|
40093
40528
|
this._injector = _injector;
|
|
40094
40529
|
this._stateMachinesService = _stateMachinesService;
|
|
40095
40530
|
this._coCauToChucService = _coCauToChucService;
|
|
40096
40531
|
this._userGroupService = _userGroupService;
|
|
40097
|
-
this.
|
|
40532
|
+
this._dmChucVuService = _dmChucVuService;
|
|
40098
40533
|
}
|
|
40099
40534
|
ngOnInit() {
|
|
40100
40535
|
super.ngOnInit();
|
|
@@ -40119,40 +40554,8 @@ class ProcessWorkflowTargetComponent extends DataFormBase {
|
|
|
40119
40554
|
// this.createUserPickerControl('idCapTrenGanNhats', 'Cán bộ cấp trên gần nhất'),
|
|
40120
40555
|
this._createCoCauToChucControl('departmentIds', 'Đơn vị'),
|
|
40121
40556
|
this._createUserGroupPickerControl('groupIds', 'Nhóm người dùng'),
|
|
40122
|
-
this._createRolePickerControl('roleIds', '
|
|
40557
|
+
this._createRolePickerControl('roleIds', 'Chức vụ')
|
|
40123
40558
|
];
|
|
40124
|
-
// Ghép thêm các user theo rule vào userIds
|
|
40125
|
-
this.addUserIdFromDicByRule(this.initValue.dicDefaultValue, this.data.rules);
|
|
40126
|
-
// Ghép thêm các user theo rule in workflow vào userIds
|
|
40127
|
-
this.addUserIdFromDicByRule(this.initValue.dicDefaultValueByWorkflow, this.data.ruleInWorkflows);
|
|
40128
|
-
// Ghép thêm các value từ dicByTargetType vào các control
|
|
40129
|
-
if (this.data.rules.some(q => q == EnumUserRule.NGUOI_NHAN)) {
|
|
40130
|
-
this.addValueFromDicByTarget(this.initValue.dicByTargetCanEdit);
|
|
40131
|
-
}
|
|
40132
|
-
// Ghép thêm các value từ dicByTargetType vào các control
|
|
40133
|
-
if (this.data.rules.some(q => q == EnumUserRule.NGUOI_THEO_DOI)) {
|
|
40134
|
-
this.addValueFromDicByTarget(this.initValue.dicByTargetOnlyView);
|
|
40135
|
-
}
|
|
40136
|
-
}
|
|
40137
|
-
addUserIdFromDicByRule(dicSource, rules) {
|
|
40138
|
-
Object.keys(dicSource)
|
|
40139
|
-
.filter(x => rules.some(q => q == x))
|
|
40140
|
-
.forEach(rule => {
|
|
40141
|
-
this.addDistinctToList(this.data.userIds, dicSource[rule]);
|
|
40142
|
-
});
|
|
40143
|
-
}
|
|
40144
|
-
addValueFromDicByTarget(dicByTargetType) {
|
|
40145
|
-
this.addDistinctToList(this.data.userIds, dicByTargetType[EnumTargetType.USER]);
|
|
40146
|
-
this.addDistinctToList(this.data.departmentIds, dicByTargetType[EnumTargetType.DEPARTMENT]);
|
|
40147
|
-
this.addDistinctToList(this.data.groupIds, dicByTargetType[EnumTargetType.GROUP]);
|
|
40148
|
-
this.addDistinctToList(this.data.roleIds, dicByTargetType[EnumTargetType.ROLE]);
|
|
40149
|
-
}
|
|
40150
|
-
addDistinctToList(lstDest, lstSource) {
|
|
40151
|
-
lstSource.forEach(item => {
|
|
40152
|
-
if (!lstDest.some(q => q == item)) {
|
|
40153
|
-
lstDest.push(item);
|
|
40154
|
-
}
|
|
40155
|
-
});
|
|
40156
40559
|
}
|
|
40157
40560
|
_createUserPickerControl(field, label, multiple = true) {
|
|
40158
40561
|
const control = createUserPickerControl(field, label);
|
|
@@ -40167,7 +40570,7 @@ class ProcessWorkflowTargetComponent extends DataFormBase {
|
|
|
40167
40570
|
return createUserGroupPickerControl(this._userGroupService, field, label);
|
|
40168
40571
|
}
|
|
40169
40572
|
_createRolePickerControl(field, label) {
|
|
40170
|
-
return createRolePickerControl(this.
|
|
40573
|
+
return createRolePickerControl(this._dmChucVuService, field, label);
|
|
40171
40574
|
}
|
|
40172
40575
|
onFormInitialized(evt) {
|
|
40173
40576
|
return __awaiter(this, void 0, void 0, function* () {
|
|
@@ -40190,7 +40593,7 @@ ProcessWorkflowTargetComponent.ctorParameters = () => [
|
|
|
40190
40593
|
{ type: StateMachinesService },
|
|
40191
40594
|
{ type: CoCauToChucService },
|
|
40192
40595
|
{ type: UserGroupRealService },
|
|
40193
|
-
{ type:
|
|
40596
|
+
{ type: DmChucVuService }
|
|
40194
40597
|
];
|
|
40195
40598
|
ProcessWorkflowTargetComponent.propDecorators = {
|
|
40196
40599
|
data: [{ type: Input }],
|
|
@@ -40256,11 +40659,11 @@ class ProcessWorkflowFormComponent extends DataFormBase {
|
|
|
40256
40659
|
if (this.isActionKetThuc) {
|
|
40257
40660
|
this.mainTabData[1].active = true;
|
|
40258
40661
|
}
|
|
40259
|
-
if (this.checkNeedGetUser()) {
|
|
40260
|
-
|
|
40261
|
-
|
|
40262
|
-
}
|
|
40662
|
+
// if (this.checkNeedGetUser()) {
|
|
40663
|
+
if (!(yield this.getUserForProcessWorkflow())) {
|
|
40664
|
+
return;
|
|
40263
40665
|
}
|
|
40666
|
+
// }
|
|
40264
40667
|
this.setDataAndTriggerReady();
|
|
40265
40668
|
});
|
|
40266
40669
|
}
|
|
@@ -40284,29 +40687,20 @@ class ProcessWorkflowFormComponent extends DataFormBase {
|
|
|
40284
40687
|
getUserForProcessWorkflow() {
|
|
40285
40688
|
return __awaiter(this, void 0, void 0, function* () {
|
|
40286
40689
|
const sourceMachine = this.workflow.data.machines.find(q => q.id == this.action.source);
|
|
40287
|
-
const resultGetUserInProcessForm = yield this.
|
|
40690
|
+
const resultGetUserInProcessForm = yield this.businessSetting.baseService.getUserInProcessForm(this.workflow.code, sourceMachine.code, this.action.code, this.item.id);
|
|
40288
40691
|
if (!resultGetUserInProcessForm.success) {
|
|
40289
40692
|
this.handleResponse(resultGetUserInProcessForm);
|
|
40290
40693
|
return false;
|
|
40291
40694
|
}
|
|
40292
40695
|
const dataUserInProcessForm = resultGetUserInProcessForm.data;
|
|
40293
|
-
|
|
40294
|
-
|
|
40295
|
-
|
|
40296
|
-
|
|
40297
|
-
|
|
40298
|
-
|
|
40299
|
-
|
|
40300
|
-
|
|
40301
|
-
});
|
|
40302
|
-
}
|
|
40303
|
-
if (dataUserInProcessForm.dicByTargetCanEdit) {
|
|
40304
|
-
this.initValueForTargetForm.dicByTargetCanEdit = dataUserInProcessForm.dicByTargetCanEdit;
|
|
40305
|
-
}
|
|
40306
|
-
if (dataUserInProcessForm.dicByTargetOnlyView) {
|
|
40307
|
-
this.initValueForTargetForm.dicByTargetOnlyView = dataUserInProcessForm.dicByTargetOnlyView;
|
|
40308
|
-
}
|
|
40309
|
-
this.infoReceiver = dataUserInProcessForm.infoReceiver;
|
|
40696
|
+
this.initValueForTargetForm.lstUserId = dataUserInProcessForm.lstUserId;
|
|
40697
|
+
this.initValueForTargetForm.lstUserViewId = dataUserInProcessForm.lstUserViewId;
|
|
40698
|
+
this.initValueForTargetForm.lstDonViId = dataUserInProcessForm.lstDonViId;
|
|
40699
|
+
this.initValueForTargetForm.lstDonViViewId = dataUserInProcessForm.lstDonViViewId;
|
|
40700
|
+
this.initValueForTargetForm.lstGroupId = dataUserInProcessForm.lstGroupId;
|
|
40701
|
+
this.initValueForTargetForm.lstGroupViewId = dataUserInProcessForm.lstGroupViewId;
|
|
40702
|
+
this.initValueForTargetForm.lstRoleId = dataUserInProcessForm.lstRoleId;
|
|
40703
|
+
this.initValueForTargetForm.lstRoleViewId = dataUserInProcessForm.lstRoleViewId;
|
|
40310
40704
|
return true;
|
|
40311
40705
|
});
|
|
40312
40706
|
}
|
|
@@ -40319,36 +40713,42 @@ class ProcessWorkflowFormComponent extends DataFormBase {
|
|
|
40319
40713
|
return false;
|
|
40320
40714
|
}
|
|
40321
40715
|
setDataAndTriggerReady() {
|
|
40716
|
+
var _a, _b, _c, _d, _e, _f;
|
|
40322
40717
|
this.dataAllowEdit = {
|
|
40323
40718
|
rules: [],
|
|
40324
40719
|
userIds: [],
|
|
40325
40720
|
ruleInWorkflows: [],
|
|
40326
|
-
departmentIds: this.action.data.departmentIds,
|
|
40327
|
-
groupIds: this.action.data.groupIds,
|
|
40328
|
-
roleIds: this.action.data.roleIds
|
|
40721
|
+
departmentIds: (_a = this.action.data.departmentIds) !== null && _a !== void 0 ? _a : [],
|
|
40722
|
+
groupIds: (_b = this.action.data.groupIds) !== null && _b !== void 0 ? _b : [],
|
|
40723
|
+
roleIds: (_c = this.action.data.roleIds) !== null && _c !== void 0 ? _c : []
|
|
40329
40724
|
};
|
|
40330
40725
|
this.dataOnlyView = {
|
|
40331
40726
|
rules: [],
|
|
40332
40727
|
userIds: [],
|
|
40333
40728
|
ruleInWorkflows: [],
|
|
40334
|
-
departmentIds: this.action.data.departmentViewIds,
|
|
40335
|
-
groupIds: this.action.data.groupViewIds,
|
|
40336
|
-
roleIds: this.action.data.roleViewIds
|
|
40729
|
+
departmentIds: (_d = this.action.data.departmentViewIds) !== null && _d !== void 0 ? _d : [],
|
|
40730
|
+
groupIds: (_e = this.action.data.groupViewIds) !== null && _e !== void 0 ? _e : [],
|
|
40731
|
+
roleIds: (_f = this.action.data.roleViewIds) !== null && _f !== void 0 ? _f : []
|
|
40337
40732
|
};
|
|
40338
|
-
|
|
40339
|
-
|
|
40340
|
-
|
|
40341
|
-
|
|
40342
|
-
|
|
40343
|
-
|
|
40344
|
-
|
|
40345
|
-
|
|
40346
|
-
this.dataOnlyView.rules = this.infoReceiver.userView.rules;
|
|
40347
|
-
this.dataOnlyView.ruleInWorkflows = this.infoReceiver.userView.ruleInWorkflows;
|
|
40348
|
-
}
|
|
40349
|
-
}
|
|
40733
|
+
this.addDistinct(this.dataAllowEdit.userIds, this.initValueForTargetForm.lstUserId);
|
|
40734
|
+
this.addDistinct(this.dataAllowEdit.departmentIds, this.initValueForTargetForm.lstDonViId);
|
|
40735
|
+
this.addDistinct(this.dataAllowEdit.groupIds, this.initValueForTargetForm.lstGroupId);
|
|
40736
|
+
this.addDistinct(this.dataAllowEdit.roleIds, this.initValueForTargetForm.lstRoleId);
|
|
40737
|
+
this.addDistinct(this.dataOnlyView.userIds, this.initValueForTargetForm.lstUserViewId);
|
|
40738
|
+
this.addDistinct(this.dataOnlyView.departmentIds, this.initValueForTargetForm.lstDonViViewId);
|
|
40739
|
+
this.addDistinct(this.dataOnlyView.groupIds, this.initValueForTargetForm.lstGroupViewId);
|
|
40740
|
+
this.addDistinct(this.dataOnlyView.roleIds, this.initValueForTargetForm.lstRoleViewId);
|
|
40350
40741
|
this.formReady = true;
|
|
40351
40742
|
}
|
|
40743
|
+
addDistinct(dest, source) {
|
|
40744
|
+
if (!source || !source.length)
|
|
40745
|
+
return;
|
|
40746
|
+
source.forEach(item => {
|
|
40747
|
+
if (dest.indexOf(item) == -1) {
|
|
40748
|
+
dest.push(item);
|
|
40749
|
+
}
|
|
40750
|
+
});
|
|
40751
|
+
}
|
|
40352
40752
|
onFormInitialized(evt) {
|
|
40353
40753
|
return __awaiter(this, void 0, void 0, function* () {
|
|
40354
40754
|
evt.model.id = this._commonService.guid();
|
|
@@ -40369,7 +40769,7 @@ class ProcessWorkflowFormComponent extends DataFormBase {
|
|
|
40369
40769
|
&& this.isEmptyArray(this.model.data.departmentIds)
|
|
40370
40770
|
&& this.isEmptyArray(this.model.data.groupIds)
|
|
40371
40771
|
&& this.isEmptyArray(this.model.data.roleIds)) {
|
|
40372
|
-
this._notifierService.showWarning('Phải chọn ít nhất 1 nhóm đối tượng nhận (Cán bộ | Đơn vị | Nhóm người dùng |
|
|
40772
|
+
this._notifierService.showWarning('Phải chọn ít nhất 1 nhóm đối tượng nhận (Cán bộ | Đơn vị | Nhóm người dùng | Chức vụ)');
|
|
40373
40773
|
return false;
|
|
40374
40774
|
}
|
|
40375
40775
|
}
|
|
@@ -40720,13 +41120,13 @@ WorkflowHistoryDialogComponent.propDecorators = {
|
|
|
40720
41120
|
};
|
|
40721
41121
|
|
|
40722
41122
|
class WorkflowHistoryNewComponent extends DataListBase {
|
|
40723
|
-
constructor(_injector, _workflowHistoryService, _coCauToChucService, _userGroupService,
|
|
41123
|
+
constructor(_injector, _workflowHistoryService, _coCauToChucService, _userGroupService, _dmChucVuService, _fileDataService) {
|
|
40724
41124
|
super(_injector);
|
|
40725
41125
|
this._injector = _injector;
|
|
40726
41126
|
this._workflowHistoryService = _workflowHistoryService;
|
|
40727
41127
|
this._coCauToChucService = _coCauToChucService;
|
|
40728
41128
|
this._userGroupService = _userGroupService;
|
|
40729
|
-
this.
|
|
41129
|
+
this._dmChucVuService = _dmChucVuService;
|
|
40730
41130
|
// Là form lịch sử của task nhưng mở từ giao diện của đối tượng mà task gắn vào
|
|
40731
41131
|
// Ở form này thì chỉ xem lịch sử chứ k dc làm gì hết
|
|
40732
41132
|
this.isRelativeForm = false;
|
|
@@ -40787,8 +41187,8 @@ class WorkflowHistoryNewComponent extends DataListBase {
|
|
|
40787
41187
|
new ModelSchema({ field: 'donViViewIds', name: 'Đơn vị theo dõi', fullName: 'Đơn vị theo dõi', description: '' }),
|
|
40788
41188
|
new ModelSchema({ field: 'groupIds', name: 'Nhóm người dùng nhận', fullName: 'Nhóm người dùng nhận', description: '' }),
|
|
40789
41189
|
new ModelSchema({ field: 'groupViewIds', name: 'Nhóm người dùng theo dõi', fullName: 'Nhóm người dùng theo dõi', description: '' }),
|
|
40790
|
-
new ModelSchema({ field: 'roleIds', name: '
|
|
40791
|
-
new ModelSchema({ field: 'roleViewIds', name: '
|
|
41190
|
+
new ModelSchema({ field: 'roleIds', name: 'Chức vụ nhận', fullName: 'Chức vụ nhận', description: '' }),
|
|
41191
|
+
new ModelSchema({ field: 'roleViewIds', name: 'Chức vụ theo dõi', fullName: 'Chức vụ theo dõi', description: '' }),
|
|
40792
41192
|
new ModelSchema({ field: 'note', name: 'Ý kiến', fullName: 'Ý kiến', description: '' })
|
|
40793
41193
|
];
|
|
40794
41194
|
this.setting.cols = [
|
|
@@ -40860,8 +41260,7 @@ class WorkflowHistoryNewComponent extends DataListBase {
|
|
|
40860
41260
|
new ColumnSchemaBase({
|
|
40861
41261
|
field: 'roleIds',
|
|
40862
41262
|
width: '15%',
|
|
40863
|
-
baseService: this.
|
|
40864
|
-
displayField: 'name',
|
|
41263
|
+
baseService: this._dmChucVuService,
|
|
40865
41264
|
multiple: true,
|
|
40866
41265
|
visible: false,
|
|
40867
41266
|
forceGetData: true
|
|
@@ -40869,8 +41268,7 @@ class WorkflowHistoryNewComponent extends DataListBase {
|
|
|
40869
41268
|
new ColumnSchemaBase({
|
|
40870
41269
|
field: 'roleViewIds',
|
|
40871
41270
|
width: '15%',
|
|
40872
|
-
baseService: this.
|
|
40873
|
-
displayField: 'name',
|
|
41271
|
+
baseService: this._dmChucVuService,
|
|
40874
41272
|
multiple: true,
|
|
40875
41273
|
visible: false,
|
|
40876
41274
|
forceGetData: true
|
|
@@ -41066,7 +41464,7 @@ class WorkflowHistoryNewComponent extends DataListBase {
|
|
|
41066
41464
|
WorkflowHistoryNewComponent.decorators = [
|
|
41067
41465
|
{ type: Component, args: [{
|
|
41068
41466
|
selector: 'workflow-history-new',
|
|
41069
|
-
template: "<div style=\"height: 100%\">\r\n <as-split direction=\"vertical\">\r\n <as-split-area [size]=\"40\">\r\n <div class=\"state-designer-container\">\r\n <div>\r\n S\u01A1 \u0111\u1ED3 quy tr\u00ECnh\r\n </div>\r\n <div>\r\n <tn-custom-scrollbar>\r\n <statemachines-designer [data]=\"machinesData\" [currentConnection]=\"currentConnection\"\r\n [viewOnly]=\"true\" [useScrollBar]=\"false\">\r\n </statemachines-designer>\r\n <after-view-checked (loaded)=\"setMachinesAndConnection()\"></after-view-checked>\r\n </tn-custom-scrollbar>\r\n </div>\r\n </div>\r\n </as-split-area>\r\n <as-split-area [size]=\"60\">\r\n <div style=\"height: 100%\">\r\n <crud-list *ngIf=\"model.ready\" #crudList [model]=\"model\" [setting]=\"setting\"\r\n [dataSource]=\"model.dataSource\" (onReload)=\"_triggerProcessData($event)\" (onAdd)=\"_add($event)\"\r\n (onEdit)=\"_edit($event)\" (onView)=\"_view($event)\" (onDelete)=\"_delete($event)\"\r\n (onDeleteMultiple)=\"_deleteMultiple($event)\" (onReloaded)=\"_handleReloaded($event)\"\r\n (onRowSelect)=\"handleRowSelect($event)\">\r\n <ng-template #note let-rowData=\"rowData\">\r\n <div *ngIf=\"rowData.note==null?'':rowData.note\" [innerHTML]=\"rowData.note | safeHtml\"></div>\r\n </ng-template>\r\n <ng-template #receiver let-rowData=\"rowData\">\r\n <div *ngIf=\"!rowData.notInMainThread\" class=\"container-receiver\">\r\n <div *ngIf=\"rowData.struserIds\"><b>C\u00E1n b\u1ED9: </b>{{rowData.struserIds}}</div>\r\n <div *ngIf=\"rowData.strdonViIds\"><b>\u0110\u01A1n v\u1ECB: </b>{{rowData.strdonViIds}}</div>\r\n <div *ngIf=\"rowData.strgroupIds\"><b>Nh\u00F3m: </b>{{rowData.strgroupIds}}</div>\r\n <div *ngIf=\"rowData.strroleIds\"><b>
|
|
41467
|
+
template: "<div style=\"height: 100%\">\r\n <as-split direction=\"vertical\">\r\n <as-split-area [size]=\"40\">\r\n <div class=\"state-designer-container\">\r\n <div>\r\n S\u01A1 \u0111\u1ED3 quy tr\u00ECnh\r\n </div>\r\n <div>\r\n <tn-custom-scrollbar>\r\n <statemachines-designer [data]=\"machinesData\" [currentConnection]=\"currentConnection\"\r\n [viewOnly]=\"true\" [useScrollBar]=\"false\">\r\n </statemachines-designer>\r\n <after-view-checked (loaded)=\"setMachinesAndConnection()\"></after-view-checked>\r\n </tn-custom-scrollbar>\r\n </div>\r\n </div>\r\n </as-split-area>\r\n <as-split-area [size]=\"60\">\r\n <div style=\"height: 100%\">\r\n <crud-list *ngIf=\"model.ready\" #crudList [model]=\"model\" [setting]=\"setting\"\r\n [dataSource]=\"model.dataSource\" (onReload)=\"_triggerProcessData($event)\" (onAdd)=\"_add($event)\"\r\n (onEdit)=\"_edit($event)\" (onView)=\"_view($event)\" (onDelete)=\"_delete($event)\"\r\n (onDeleteMultiple)=\"_deleteMultiple($event)\" (onReloaded)=\"_handleReloaded($event)\"\r\n (onRowSelect)=\"handleRowSelect($event)\">\r\n <ng-template #note let-rowData=\"rowData\">\r\n <div *ngIf=\"rowData.note==null?'':rowData.note\" [innerHTML]=\"rowData.note | safeHtml\"></div>\r\n </ng-template>\r\n <ng-template #receiver let-rowData=\"rowData\">\r\n <div *ngIf=\"!rowData.notInMainThread\" class=\"container-receiver\">\r\n <div *ngIf=\"rowData.struserIds\"><b>C\u00E1n b\u1ED9: </b>{{rowData.struserIds}}</div>\r\n <div *ngIf=\"rowData.strdonViIds\"><b>\u0110\u01A1n v\u1ECB: </b>{{rowData.strdonViIds}}</div>\r\n <div *ngIf=\"rowData.strgroupIds\"><b>Nh\u00F3m: </b>{{rowData.strgroupIds}}</div>\r\n <div *ngIf=\"rowData.strroleIds\"><b>Ch\u1EE9c v\u1EE5: </b>{{rowData.strroleIds}}</div>\r\n </div>\r\n <div *ngIf=\"rowData.notInMainThread\">\r\n <div *ngFor=\"let changedField of rowData.jsonModelChange\">\r\n {{changedField.field}},\r\n {{changedField.valueOld}} => {{changedField.valueNew}}\r\n </div>\r\n </div>\r\n </ng-template>\r\n <ng-template #receiverView let-rowData=\"rowData\">\r\n <div class=\"container-receiver\">\r\n <div *ngIf=\"rowData.struserViewIds\"><b>C\u00E1n b\u1ED9: </b>{{rowData.struserViewIds}}</div>\r\n <div *ngIf=\"rowData.strdonViViewIds\"><b>\u0110\u01A1n v\u1ECB: </b>{{rowData.strdonViViewIds}}</div>\r\n <div *ngIf=\"rowData.strgroupViewIds\"><b>Nh\u00F3m: </b>{{rowData.strgroupViewIds}}</div>\r\n <div *ngIf=\"rowData.strroleViewIds\"><b>Ch\u1EE9c v\u1EE5: </b>{{rowData.strroleViewIds}}</div>\r\n </div>\r\n </ng-template>\r\n <ng-template #fileDinhKem let-rowData=\"rowData\">\r\n <file-manager [serviceCode]=\"_workflowHistoryService.serviceCode\"\r\n [entity]=\"_workflowHistoryService.entityName\" [entityKey]=\"rowData.id\"\r\n [fileDataService]=\"fileDataService\" [layout]=\"layoutFile.SIMPLE\" [readonly]=\"true\">\r\n </file-manager>\r\n </ng-template>\r\n <ng-template #function let-rowData=\"rowData\">\r\n <button *ngIf=\"rowData.status == enumWorkflowHistoryStatus.IN_MAIN_THREAD\" pButton\r\n icon=\"pi pi-replay\" class=\"p-button-text p-button-rounded link-or-action\"\r\n pTooltip=\"Thu h\u1ED3i v\u1EC1 b\u01B0\u1EDBc n\u00E0y\" tooltipPosition=\"top\"\r\n (click)=\"rollbackByHistory(rowData)\"></button>\r\n </ng-template>\r\n </crud-list>\r\n </div>\r\n </as-split-area>\r\n </as-split>\r\n</div>",
|
|
41070
41468
|
providers: [ComponentContextService],
|
|
41071
41469
|
styles: [".state-designer-container{display:flex;flex-direction:column;height:100%}.state-designer-container>div:first-child{font-size:.9em;font-weight:700;padding:.5em 0}.state-designer-container>div:last-child{flex:1 1;overflow:auto}.container-receiver div{margin-bottom:10px}.container-receiver div:last-child{margin-bottom:0}::ng-deep workflow-history-new tr.recalled{opacity:.5}"]
|
|
41072
41470
|
},] }
|
|
@@ -41076,7 +41474,7 @@ WorkflowHistoryNewComponent.ctorParameters = () => [
|
|
|
41076
41474
|
{ type: WorkflowHistoryService },
|
|
41077
41475
|
{ type: CoCauToChucService },
|
|
41078
41476
|
{ type: UserGroupRealService },
|
|
41079
|
-
{ type:
|
|
41477
|
+
{ type: DmChucVuService },
|
|
41080
41478
|
{ type: FileDataService }
|
|
41081
41479
|
];
|
|
41082
41480
|
WorkflowHistoryNewComponent.propDecorators = {
|
|
@@ -41439,14 +41837,40 @@ class WorkflowSettingNewComponent extends DataFormBase {
|
|
|
41439
41837
|
ngOnInit() {
|
|
41440
41838
|
this.setting.baseService = this._workflowSettingsService;
|
|
41441
41839
|
this.setting.schema = [
|
|
41442
|
-
new
|
|
41443
|
-
field: '
|
|
41444
|
-
label: 'Tạo công việc',
|
|
41840
|
+
new CheckBoxListControlSchema({
|
|
41841
|
+
field: 'options',
|
|
41445
41842
|
showLabel: false,
|
|
41446
|
-
|
|
41843
|
+
dataSource: DataSourceWorkflowCheckboxOption,
|
|
41844
|
+
mdWidth: 4,
|
|
41845
|
+
onChanged: (evt) => {
|
|
41846
|
+
if (evt.rootModel.options.indexOf(EnumWorkflowCheckboxOption.TAO_CONG_VIEC) > -1) {
|
|
41847
|
+
evt.rootModel.createTaskInstead = true;
|
|
41848
|
+
}
|
|
41849
|
+
else {
|
|
41850
|
+
evt.rootModel.createTaskInstead = false;
|
|
41851
|
+
}
|
|
41852
|
+
if (evt.rootModel.options.indexOf(EnumWorkflowCheckboxOption.AUTO_NEXT_STEP) > -1) {
|
|
41853
|
+
evt.rootModel.autoNextStep = true;
|
|
41854
|
+
}
|
|
41855
|
+
else {
|
|
41856
|
+
evt.rootModel.autoNextStep = false;
|
|
41857
|
+
}
|
|
41858
|
+
}
|
|
41447
41859
|
}),
|
|
41860
|
+
// new CheckboxControlSchema({
|
|
41861
|
+
// field: 'createTaskInstead',
|
|
41862
|
+
// label: 'Tạo công việc',
|
|
41863
|
+
// showLabel: false,
|
|
41864
|
+
// mdWidth: 2
|
|
41865
|
+
// }),
|
|
41866
|
+
// new CheckboxControlSchema({
|
|
41867
|
+
// field: 'autoNextStep',
|
|
41868
|
+
// label: 'Tự động chuyển bước đầu tiên',
|
|
41869
|
+
// showLabel: false,
|
|
41870
|
+
// mdWidth: 2
|
|
41871
|
+
// }),
|
|
41448
41872
|
new LabelSchema({
|
|
41449
|
-
mdWidth:
|
|
41873
|
+
mdWidth: 8,
|
|
41450
41874
|
hiddenCheck: (rootModel) => this.checkIfCreateTaskInstead(rootModel, true)
|
|
41451
41875
|
}),
|
|
41452
41876
|
new CustomControlSchema({
|
|
@@ -41458,8 +41882,9 @@ class WorkflowSettingNewComponent extends DataFormBase {
|
|
|
41458
41882
|
new CheckboxControlSchema({
|
|
41459
41883
|
field: 'taskInsideBusinessForm',
|
|
41460
41884
|
label: 'Hiển thị giao diện tạo công việc trên giao diện thêm mới',
|
|
41885
|
+
class: 'taskInsideBusinessForm',
|
|
41461
41886
|
showLabel: false,
|
|
41462
|
-
mdWidth:
|
|
41887
|
+
mdWidth: 8,
|
|
41463
41888
|
hiddenCheck: (rootModel) => this.checkIfCreateTaskInstead(rootModel, false)
|
|
41464
41889
|
}),
|
|
41465
41890
|
new TextControlSchema({
|
|
@@ -41485,9 +41910,20 @@ class WorkflowSettingNewComponent extends DataFormBase {
|
|
|
41485
41910
|
}
|
|
41486
41911
|
getSetting() {
|
|
41487
41912
|
return __awaiter(this, void 0, void 0, function* () {
|
|
41488
|
-
|
|
41913
|
+
const data = (yield this._workflowSettingsService.getDetailByFilter([
|
|
41489
41914
|
this.newFilter('tableName', Operator.equal, this.parentSetting.baseService.entityName)
|
|
41490
41915
|
])).data;
|
|
41916
|
+
if (data) {
|
|
41917
|
+
if (!data.options)
|
|
41918
|
+
data.options = [];
|
|
41919
|
+
if (data.createTaskInstead) {
|
|
41920
|
+
data.options.push(EnumWorkflowCheckboxOption.TAO_CONG_VIEC);
|
|
41921
|
+
}
|
|
41922
|
+
if (data.autoNextStep) {
|
|
41923
|
+
data.options.push(EnumWorkflowCheckboxOption.AUTO_NEXT_STEP);
|
|
41924
|
+
}
|
|
41925
|
+
}
|
|
41926
|
+
this.model.data = data;
|
|
41491
41927
|
this.afterGetSetting();
|
|
41492
41928
|
});
|
|
41493
41929
|
}
|
|
@@ -41537,6 +41973,20 @@ class WorkflowSettingNewComponent extends DataFormBase {
|
|
|
41537
41973
|
return true;
|
|
41538
41974
|
});
|
|
41539
41975
|
}
|
|
41976
|
+
setValueOption(data) {
|
|
41977
|
+
if (data.options.indexOf(EnumWorkflowCheckboxOption.TAO_CONG_VIEC) > -1) {
|
|
41978
|
+
data.createTaskInstead = true;
|
|
41979
|
+
}
|
|
41980
|
+
else {
|
|
41981
|
+
data.createTaskInstead = false;
|
|
41982
|
+
}
|
|
41983
|
+
if (data.options.indexOf(EnumWorkflowCheckboxOption.AUTO_NEXT_STEP) > -1) {
|
|
41984
|
+
data.autoNextStep = true;
|
|
41985
|
+
}
|
|
41986
|
+
else {
|
|
41987
|
+
data.autoNextStep = false;
|
|
41988
|
+
}
|
|
41989
|
+
}
|
|
41540
41990
|
onBeforeSave() {
|
|
41541
41991
|
if (this.workflowPickerComp) {
|
|
41542
41992
|
Object.assign(this.model.data, this.workflowPickerComp.model.data);
|
|
@@ -41547,6 +41997,9 @@ class WorkflowSettingNewComponent extends DataFormBase {
|
|
|
41547
41997
|
else {
|
|
41548
41998
|
this.model.data.workflowCodes = null;
|
|
41549
41999
|
}
|
|
42000
|
+
if (this.model.data.options) {
|
|
42001
|
+
this.setValueOption(this.model.data);
|
|
42002
|
+
}
|
|
41550
42003
|
this.model.data.tableName = this.parentSetting.baseService.entityName;
|
|
41551
42004
|
}
|
|
41552
42005
|
handleManualSave() {
|
|
@@ -41559,7 +42012,7 @@ WorkflowSettingNewComponent.decorators = [
|
|
|
41559
42012
|
selector: 'workflow-setting-new',
|
|
41560
42013
|
template: "<crud-form *ngIf=\"readyCrudForm\" #crudForm [(data)]=\"model.data\" [setting]=\"setting\" [context]=\"context\"\r\n [styleClass]=\"'workflow-setting'\" [disableCaching]=\"true\" (onFormReady)=\"_handleFormReady($event)\">\r\n <ng-template #workflowPicker>\r\n <workflow-picker [data]=\"model.data\"></workflow-picker>\r\n </ng-template>\r\n</crud-form>\r\n<ng-template #buttonTemplate>\r\n <div class=\"footer-workflow-setting\">\r\n <button type=\"button\" pButton icon=\"pi pi-save\" class=\"p-button-text\" [label]=\"'FORM.SAVE' | translate\"\r\n (click)=\"_handleSave($event)\"></button>\r\n <button *ngIf=\"model.data.id\" type=\"button\" pButton icon=\"pi pi-trash\" class=\"p-button-danger p-button-text\"\r\n [label]=\"'H\u1EE7y quy tr\u00ECnh' | translate\" (click)=\"handleCancelWorkflow($event)\"></button>\r\n <button type=\"button\" pButton icon=\"pi pi-replay\" class=\"p-button-text p-button-secondary\"\r\n [label]=\"'FORM.CANCEL' | translate\" preventTab (click)=\"_handleCancel($event)\"></button>\r\n </div>\r\n</ng-template>",
|
|
41561
42014
|
providers: [ComponentContextService],
|
|
41562
|
-
styles: [".title-workflow{font-size:.9em;font-weight:700;padding:1em 0 .5em}.title-workflow .pi-star{color:orange}.container-button-workflow{background:#fff;border-top:1px solid #ddd;bottom:0;padding:.5em;position:-webkit-sticky;position:sticky;text-align:right;z-index:10}"]
|
|
42015
|
+
styles: [".title-workflow{font-size:.9em;font-weight:700;padding:1em 0 .5em}.title-workflow .pi-star{color:orange}.container-button-workflow{background:#fff;border-top:1px solid #ddd;bottom:0;padding:.5em;position:-webkit-sticky;position:sticky;text-align:right;z-index:10}::ng-deep workflow-setting-new .crud-form-control div[role=checkbox-alone].taskInsideBusinessForm{margin-top:12px!important}"]
|
|
41563
42016
|
},] }
|
|
41564
42017
|
];
|
|
41565
42018
|
WorkflowSettingNewComponent.ctorParameters = () => [
|
|
@@ -41778,6 +42231,11 @@ class CongviecDinhkemService extends BaseService {
|
|
|
41778
42231
|
}
|
|
41779
42232
|
getDetailItem(serviceCode, entity, entityKey, fieldDisplay) {
|
|
41780
42233
|
const serviceCodeEndpoint = this.env.apiDomain[`${serviceCode}Endpoint`];
|
|
42234
|
+
if (!serviceCodeEndpoint) {
|
|
42235
|
+
const notifierService = this._injector.get(NotifierService);
|
|
42236
|
+
notifierService.showWarning(`Không lấy được thông tin endpoint của dịch vụ ${serviceCode}`);
|
|
42237
|
+
return new Promise((res, rej) => res({ success: true, data: [] }));
|
|
42238
|
+
}
|
|
41781
42239
|
const uri = `${serviceCodeEndpoint}/${this._moduleConfigService.getConfig().environment.apiVersion}/${entity}/GetData`;
|
|
41782
42240
|
const gridInfo = new GridInfo({
|
|
41783
42241
|
fields: fieldDisplay,
|
|
@@ -41787,6 +42245,55 @@ class CongviecDinhkemService extends BaseService {
|
|
|
41787
42245
|
});
|
|
41788
42246
|
return this._http.post(uri, gridInfo).toPromise();
|
|
41789
42247
|
}
|
|
42248
|
+
getDetailItems(dicGrouped) {
|
|
42249
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
42250
|
+
const result = {};
|
|
42251
|
+
const serviceCodes = Object.keys(dicGrouped);
|
|
42252
|
+
for (const serviceCode of serviceCodes) {
|
|
42253
|
+
result[serviceCode] = {};
|
|
42254
|
+
const entitys = Object.keys(dicGrouped[serviceCode]);
|
|
42255
|
+
for (const entity of entitys) {
|
|
42256
|
+
result[serviceCode][entity] = {};
|
|
42257
|
+
dicGrouped[serviceCode][entity].lstId.forEach(entityKey => {
|
|
42258
|
+
result[serviceCode][entity][entityKey] = 'Không tìm thấy bản ghi';
|
|
42259
|
+
});
|
|
42260
|
+
}
|
|
42261
|
+
const serviceCodeEndpoint = this.env.apiDomain[`${serviceCode}Endpoint`];
|
|
42262
|
+
if (!serviceCodeEndpoint) {
|
|
42263
|
+
return;
|
|
42264
|
+
}
|
|
42265
|
+
for (const entity of entitys) {
|
|
42266
|
+
const dataByEntity = dicGrouped[serviceCode][entity];
|
|
42267
|
+
const uri = `${serviceCodeEndpoint}/${this._moduleConfigService.getConfig().environment.apiVersion}/${entity}/GetAllByFilter`;
|
|
42268
|
+
const filters = [];
|
|
42269
|
+
if (dataByEntity.lstId.length == 1) {
|
|
42270
|
+
filters.push(this.newFilter('id', Operator.equal, dataByEntity.lstId[0]));
|
|
42271
|
+
}
|
|
42272
|
+
else {
|
|
42273
|
+
filters.push(this.newFilter('id', Operator.in, dataByEntity.lstId));
|
|
42274
|
+
}
|
|
42275
|
+
const gridInfo = new GridInfo({
|
|
42276
|
+
fields: `id,${dataByEntity.fieldHienThi}`,
|
|
42277
|
+
pageInfo: { page: 1, pageSize: dataByEntity.lstId.length },
|
|
42278
|
+
filters,
|
|
42279
|
+
sorts: []
|
|
42280
|
+
});
|
|
42281
|
+
try {
|
|
42282
|
+
const data = yield (this._http.post(uri, gridInfo).toPromise());
|
|
42283
|
+
if (data.success && data.data && data.data.length) {
|
|
42284
|
+
data.data.forEach(itemDetail => {
|
|
42285
|
+
result[serviceCode][entity][itemDetail.id] = itemDetail[dataByEntity.fieldHienThi];
|
|
42286
|
+
});
|
|
42287
|
+
}
|
|
42288
|
+
}
|
|
42289
|
+
catch (err) {
|
|
42290
|
+
console.log(err);
|
|
42291
|
+
}
|
|
42292
|
+
}
|
|
42293
|
+
}
|
|
42294
|
+
return result;
|
|
42295
|
+
});
|
|
42296
|
+
}
|
|
41790
42297
|
}
|
|
41791
42298
|
CongviecDinhkemService.ɵprov = ɵɵdefineInjectable({ factory: function CongviecDinhkemService_Factory() { return new CongviecDinhkemService(ɵɵinject(HttpClient), ɵɵinject(INJECTOR), ɵɵinject(ModuleConfigService)); }, token: CongviecDinhkemService, providedIn: "root" });
|
|
41792
42299
|
CongviecDinhkemService.decorators = [
|
|
@@ -41806,13 +42313,23 @@ class BaseCongviecDinhkemComponent extends DataListBase {
|
|
|
41806
42313
|
this._virtualBaseService = _virtualBaseService;
|
|
41807
42314
|
this._congViecDinhKemService = _congViecDinhKemService;
|
|
41808
42315
|
this.fileDataService = fileDataService;
|
|
41809
|
-
this.
|
|
42316
|
+
this._formState = FormState.VIEW;
|
|
41810
42317
|
this.layoutFile = EnumFileLayout;
|
|
41811
42318
|
this.enumFormState = FormState;
|
|
41812
42319
|
this.formModel = {};
|
|
41813
42320
|
this.showAttachLinkBox = false;
|
|
41814
42321
|
this.typedLink = '';
|
|
41815
42322
|
}
|
|
42323
|
+
set formState(value) {
|
|
42324
|
+
this._formState = value;
|
|
42325
|
+
if (this.setting) {
|
|
42326
|
+
this.settingIfIsFormView();
|
|
42327
|
+
}
|
|
42328
|
+
}
|
|
42329
|
+
;
|
|
42330
|
+
get formState() {
|
|
42331
|
+
return this._formState;
|
|
42332
|
+
}
|
|
41816
42333
|
ngOnInit() {
|
|
41817
42334
|
this.setting.objectName = 'mục đính kèm';
|
|
41818
42335
|
this.setting.baseService = this._congViecDinhKemService;
|
|
@@ -41823,11 +42340,10 @@ class BaseCongviecDinhkemComponent extends DataListBase {
|
|
|
41823
42340
|
this.setting.hiddenPageSetting = true;
|
|
41824
42341
|
this.setting.hiddenAdvanceSearch = true;
|
|
41825
42342
|
this.setting.hiddenFilterRow = true;
|
|
41826
|
-
// this.setting.hiddenCheckbox = this.formState == FormState.VIEW;
|
|
41827
|
-
// this.setting.hiddenFunctionColumn = this.formState == FormState.VIEW;
|
|
41828
42343
|
this.setting.fixHeightTypeInDialog = false;
|
|
41829
42344
|
this.setting.heightType = HeightType.dynamic;
|
|
41830
42345
|
this.setting.showExportSelectedItems = false;
|
|
42346
|
+
this.settingIfIsFormView();
|
|
41831
42347
|
this.setting.modelSchemas = [
|
|
41832
42348
|
new ModelSchema({ field: 'tenHienThiDoiTuong', name: 'Đối tượng', fullName: 'Đối tượng', description: 'Đối tượng' }),
|
|
41833
42349
|
new ModelSchema({ field: 'tieuDe', name: 'Tiêu đề', fullName: 'Tiêu đề', description: 'Tiêu đề' }),
|
|
@@ -41845,6 +42361,17 @@ class BaseCongviecDinhkemComponent extends DataListBase {
|
|
|
41845
42361
|
dataType: 'fileDinhKem'
|
|
41846
42362
|
})
|
|
41847
42363
|
];
|
|
42364
|
+
this.rootContext.replaySubscribe(ComCtxConstants.ROOT.GAN_ENTITY_SANG_CONG_VIEC, rowData => {
|
|
42365
|
+
this.themDinhKem(false);
|
|
42366
|
+
});
|
|
42367
|
+
}
|
|
42368
|
+
ngOnDestroy() {
|
|
42369
|
+
this.rootContext.unSubscribleReplay(ComCtxConstants.ROOT.GAN_ENTITY_SANG_CONG_VIEC);
|
|
42370
|
+
super.ngOnDestroy();
|
|
42371
|
+
}
|
|
42372
|
+
settingIfIsFormView() {
|
|
42373
|
+
this.setting.hiddenCheckbox = this.formState == FormState.VIEW;
|
|
42374
|
+
this.setting.hiddenFunctionColumn = this.setting.hiddenCheckbox;
|
|
41848
42375
|
}
|
|
41849
42376
|
modifyGridInfo(gridInfo) {
|
|
41850
42377
|
return __awaiter(this, void 0, void 0, function* () {
|
|
@@ -41853,14 +42380,22 @@ class BaseCongviecDinhkemComponent extends DataListBase {
|
|
|
41853
42380
|
}
|
|
41854
42381
|
afterGetData() {
|
|
41855
42382
|
return __awaiter(this, void 0, void 0, function* () {
|
|
41856
|
-
|
|
41857
|
-
|
|
41858
|
-
if (
|
|
41859
|
-
item.
|
|
42383
|
+
const dicGrouped = {};
|
|
42384
|
+
this.model.dataSource.forEach(item => {
|
|
42385
|
+
if (!dicGrouped[item.serviceCode]) {
|
|
42386
|
+
dicGrouped[item.serviceCode] = {};
|
|
41860
42387
|
}
|
|
41861
|
-
|
|
41862
|
-
item.
|
|
42388
|
+
if (!dicGrouped[item.serviceCode][item.entity]) {
|
|
42389
|
+
dicGrouped[item.serviceCode][item.entity] = {
|
|
42390
|
+
fieldHienThi: item.fieldHienThi,
|
|
42391
|
+
lstId: []
|
|
42392
|
+
};
|
|
41863
42393
|
}
|
|
42394
|
+
dicGrouped[item.serviceCode][item.entity].lstId.push(item.entityKey);
|
|
42395
|
+
});
|
|
42396
|
+
const dataDisplayName = yield this._congViecDinhKemService.getDetailItems(dicGrouped);
|
|
42397
|
+
for (const item of this.model.dataSource) {
|
|
42398
|
+
item.tieuDe = dataDisplayName[item.serviceCode][item.entity][item.entityKey];
|
|
41864
42399
|
if (item.tenHienThiDoiTuong != null) {
|
|
41865
42400
|
item.tenHienThiDoiTuong = item.tenHienThiDoiTuong.trim();
|
|
41866
42401
|
item.tenHienThiDoiTuong = item.tenHienThiDoiTuong.substring(0, 1).toUpperCase() + item.tenHienThiDoiTuong.substring(1);
|
|
@@ -41868,6 +42403,11 @@ class BaseCongviecDinhkemComponent extends DataListBase {
|
|
|
41868
42403
|
}
|
|
41869
42404
|
});
|
|
41870
42405
|
}
|
|
42406
|
+
afterReloaded() {
|
|
42407
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
42408
|
+
this.fileDataService.getData();
|
|
42409
|
+
});
|
|
42410
|
+
}
|
|
41871
42411
|
viewLinkItem(evt) {
|
|
41872
42412
|
this.viewRawLink(evt);
|
|
41873
42413
|
}
|
|
@@ -41887,7 +42427,7 @@ class BaseCongviecDinhkemComponent extends DataListBase {
|
|
|
41887
42427
|
}
|
|
41888
42428
|
}));
|
|
41889
42429
|
}
|
|
41890
|
-
themDinhKem() {
|
|
42430
|
+
themDinhKem(showNoti = true) {
|
|
41891
42431
|
return __awaiter(this, void 0, void 0, function* () {
|
|
41892
42432
|
const content = this._commonService.pasteByStorage();
|
|
41893
42433
|
if (content) {
|
|
@@ -41895,7 +42435,9 @@ class BaseCongviecDinhkemComponent extends DataListBase {
|
|
|
41895
42435
|
if (obj.length > 0) {
|
|
41896
42436
|
this._congViecDinhKemService.themDinhKemNghiepVu(this.taskId, obj).then(rs => {
|
|
41897
42437
|
if (rs.success) {
|
|
41898
|
-
|
|
42438
|
+
if (showNoti) {
|
|
42439
|
+
this._notifierService.showSuccess('Thêm mục đính kèm thành công!');
|
|
42440
|
+
}
|
|
41899
42441
|
this.reload();
|
|
41900
42442
|
this._commonService.clearClipboardStorage();
|
|
41901
42443
|
}
|
|
@@ -41990,7 +42532,7 @@ class BaseCongviecDinhkemComponent extends DataListBase {
|
|
|
41990
42532
|
BaseCongviecDinhkemComponent.decorators = [
|
|
41991
42533
|
{ type: Component, args: [{
|
|
41992
42534
|
selector: 'base-congviec-dinhkem',
|
|
41993
|
-
template: "<crud-list #crudList [model]=\"model\" [setting]=\"setting\" [dataSource]=\"model.dataSource\" [hiddenAdd]=\"true\"\r\n [hiddenEdit]=\"true\" [hiddenDelete]=\"true\" [hiddenCopyLink]=\"true\" (onReload)=\"_triggerProcessData($event)\"\r\n (onView)=\"viewLinkItem($event)\" (onDelete)=\"deleteLinkItem($event)\"\r\n (onDeleteMultiple)=\"deleteLinkItemMultiple($event)\" (onReloaded)=\"
|
|
42535
|
+
template: "<crud-list #crudList [model]=\"model\" [setting]=\"setting\" [dataSource]=\"model.dataSource\" [hiddenAdd]=\"true\"\r\n [hiddenEdit]=\"true\" [hiddenDelete]=\"true\" [hiddenCopyLink]=\"true\" (onReload)=\"_triggerProcessData($event)\"\r\n (onView)=\"viewLinkItem($event)\" (onDelete)=\"deleteLinkItem($event)\"\r\n (onDeleteMultiple)=\"deleteLinkItemMultiple($event)\" (onReloaded)=\"_handleReloaded($event)\">\r\n <ng-template #tieuDe let-rowData=\"rowData\">\r\n [{{rowData.tenHienThiDoiTuong}}] {{rowData.tieuDe}}\r\n </ng-template>\r\n <ng-template #buttonAfterToolbar>\r\n <button *ngIf=\"formState == enumFormState.EDIT || formState == enumFormState.ADD\" type=\"button\" pButton pRipple\r\n label=\"Th\u00EAm m\u1EDBi\" icon=\"pi pi-plus\" class=\"p-button-text p-button-primary\" (click)=\"themDinhKem()\"></button>\r\n <button type=\"button\"\r\n *ngIf=\"(formState == enumFormState.EDIT || formState == enumFormState.ADD) && model.selectedItems.length > 0\"\r\n pButton pRipple label=\"X\u00F3a\" icon=\"pi pi-trash\" class=\"p-button-rounded p-button-text p-button-danger\"\r\n (click)=\"deleteLinkItemMultiple($event)\"></button>\r\n </ng-template>\r\n <ng-template #function let-rowData=\"rowData\">\r\n <button *ngIf=\"formState == enumFormState.EDIT || formState == enumFormState.ADD\" type=\"button\" pButton pRipple\r\n icon=\"pi pi-trash\" class=\"p-button-rounded p-button-text p-button-danger\" pTooltip=\"H\u1EE7y \u0111\u00EDnh k\u00E8m\"\r\n tooltipPosition=\"top\" (click)=\"deleteLinkItem(rowData)\"></button>\r\n </ng-template>\r\n <ng-template #fileDinhKem let-rowData=\"rowData\">\r\n <file-manager [readonly]=\"true\" [serviceCode]=\"rowData.serviceCode\" [entity]=\"rowData.entity\"\r\n [entityKey]=\"rowData.entityKey\" [layout]=\"layoutFile.SIMPLE\">\r\n </file-manager>\r\n </ng-template>\r\n</crud-list>\r\n\r\n<tn-dialog *ngIf=\"showDetailForm\" #dialog [styleClass]=\"'congviec-form tn-form-dialog'\"\r\n [header]=\"setting.popupHeader | translate\" [popupSize]=\"setting.popupSize\" (onHide)=\"showDetailForm = false\">\r\n <base-congviec-dinhkem-form #formBase [taskId]=\"taskId\" [parentModel]=\"model\" [parentContext]=\"context\"\r\n [model]=\"formModel\" (onSaved)=\"showDetailForm = false;crudList.reload()\" (onCancel)=\"_handleCancel($event)\"\r\n (onAfterSaved)=\"onAfterSaved($event)\">\r\n </base-congviec-dinhkem-form>\r\n</tn-dialog>\r\n\r\n<tn-dialog *ngIf=\"showAttachLinkBox\" #dialog2 [maximizable]=\"false\" [header]=\"'Nh\u1EADp li\u00EAn k\u1EBFt' | translate\"\r\n [popupSize]=\"{ width: 600, height: 50}\" (onHide)=\"showAttachLinkBox = false; typedLink=''\">\r\n <div class=\"p-col-12\">\r\n <div class=\"p-grid\">\r\n <div class=\"p-md-10\">\r\n <input #input type=\"text\" placeholder=\"Nh\u1EADp li\u00EAn k\u1EBFt sao ch\u00E9p t\u1EEB ph\u00E2n h\u1EC7 kh\u00E1c...\" pInputText\r\n class=\"p-col-12\" [(ngModel)]=\"typedLink\" (keyup.enter)=\"addAttachLink()\" />\r\n </div>\r\n <div class=\"p-md-2\">\r\n <button type=\"button\" pButton class=\"p-button-primary p-col-12\" label=\"Ok\"\r\n [disabled]=\"typedLink != ''? null : true\" (click)=\"addAttachLink()\"></button>\r\n </div>\r\n </div>\r\n </div>\r\n <after-view-checked (loaded)=\"focusInput(input)\"></after-view-checked>\r\n</tn-dialog>",
|
|
41994
42536
|
providers: [ComponentContextService],
|
|
41995
42537
|
styles: [""]
|
|
41996
42538
|
},] }
|
|
@@ -42099,6 +42641,7 @@ class BaseCongViecFormComponent extends DataFormBase {
|
|
|
42099
42641
|
},
|
|
42100
42642
|
];
|
|
42101
42643
|
this.buttons = [];
|
|
42644
|
+
this.mdWidthWorkflow = 6;
|
|
42102
42645
|
this.handleChangeLoaiCongViecWhenAdd = (evt) => __awaiter(this, void 0, void 0, function* () {
|
|
42103
42646
|
if (evt.eventType == 'change') {
|
|
42104
42647
|
yield this.loadWorkflowByLoaiCongViec(evt, evt.model.id);
|
|
@@ -42138,15 +42681,6 @@ class BaseCongViecFormComponent extends DataFormBase {
|
|
|
42138
42681
|
label: 'Mô tả nội dung',
|
|
42139
42682
|
mdWidth: 12
|
|
42140
42683
|
}),
|
|
42141
|
-
new DropdownControlSchema({
|
|
42142
|
-
field: 'idLoaiCongViec',
|
|
42143
|
-
label: 'Phân loại',
|
|
42144
|
-
baseService: this._dmLoaiCongViecService,
|
|
42145
|
-
isTree: true,
|
|
42146
|
-
fieldTree: 'idParent',
|
|
42147
|
-
valueParentRoot: null,
|
|
42148
|
-
onChanged: onChangeLoaiCongViec
|
|
42149
|
-
}),
|
|
42150
42684
|
new DropdownControlSchema({
|
|
42151
42685
|
field: 'idPriority',
|
|
42152
42686
|
label: 'Độ ưu tiên',
|
|
@@ -42172,11 +42706,31 @@ class BaseCongViecFormComponent extends DataFormBase {
|
|
|
42172
42706
|
}),
|
|
42173
42707
|
new PercentControlSchema({
|
|
42174
42708
|
field: 'phanTram',
|
|
42175
|
-
mdWidth:
|
|
42709
|
+
mdWidth: 6,
|
|
42176
42710
|
label: 'Tiến độ'
|
|
42177
42711
|
}),
|
|
42712
|
+
new DropdownControlSchema({
|
|
42713
|
+
field: 'idLoaiCongViec',
|
|
42714
|
+
label: 'Phân loại công việc',
|
|
42715
|
+
baseService: this._dmLoaiCongViecService,
|
|
42716
|
+
isTree: true,
|
|
42717
|
+
fieldTree: 'idParent',
|
|
42718
|
+
valueParentRoot: null,
|
|
42719
|
+
sorts: [{ field: 'maPhanCap', dir: 1 }],
|
|
42720
|
+
onChanged: onChangeLoaiCongViec
|
|
42721
|
+
})
|
|
42178
42722
|
];
|
|
42179
42723
|
this.addSchemaBase();
|
|
42724
|
+
if (this._isFormAddNew()) {
|
|
42725
|
+
this.setting.schema.push(new CheckboxControlSchema({
|
|
42726
|
+
field: 'autoNextStep',
|
|
42727
|
+
label: 'Tự động chuyển bước đầu tiên',
|
|
42728
|
+
class: 'mg-top-0',
|
|
42729
|
+
showLabel: false,
|
|
42730
|
+
mdWidth: 6,
|
|
42731
|
+
hiddenCheck: (rootModel) => !rootModel._WorkflowCode
|
|
42732
|
+
}));
|
|
42733
|
+
}
|
|
42180
42734
|
}
|
|
42181
42735
|
onFormInitialized(evt) {
|
|
42182
42736
|
return __awaiter(this, void 0, void 0, function* () {
|
|
@@ -42390,7 +42944,8 @@ class BaseCongViecComponent extends DataListBase {
|
|
|
42390
42944
|
this.setting.cols = [
|
|
42391
42945
|
new ColumnSchemaBase({
|
|
42392
42946
|
field: 'ten',
|
|
42393
|
-
dataType: 'congViecInfo'
|
|
42947
|
+
dataType: 'congViecInfo',
|
|
42948
|
+
width: '18rem'
|
|
42394
42949
|
}),
|
|
42395
42950
|
new ColumnSchemaBase({
|
|
42396
42951
|
field: 'ngayBatDau',
|
|
@@ -42402,7 +42957,7 @@ class BaseCongViecComponent extends DataListBase {
|
|
|
42402
42957
|
}),
|
|
42403
42958
|
new ColumnSchemaBase({
|
|
42404
42959
|
field: 'idLoaiCongViec',
|
|
42405
|
-
width: '
|
|
42960
|
+
width: '100px',
|
|
42406
42961
|
baseService: this._dmLoaiCongViecService,
|
|
42407
42962
|
isTree: true,
|
|
42408
42963
|
fieldTree: 'idParent',
|
|
@@ -42410,14 +42965,14 @@ class BaseCongViecComponent extends DataListBase {
|
|
|
42410
42965
|
}),
|
|
42411
42966
|
new ColumnSchemaBase({
|
|
42412
42967
|
field: 'idLinhVuc',
|
|
42413
|
-
width: '
|
|
42968
|
+
width: '100px',
|
|
42414
42969
|
baseService: this._dmLinhVucCongViecService
|
|
42415
42970
|
}),
|
|
42416
42971
|
new ColumnSchemaBase({
|
|
42417
42972
|
field: 'idPriority',
|
|
42418
42973
|
dataType: 'idPriority',
|
|
42419
42974
|
dataTypeRefField: 'idPriority',
|
|
42420
|
-
width: '
|
|
42975
|
+
width: '80px',
|
|
42421
42976
|
baseService: this._dmPriorityService,
|
|
42422
42977
|
fieldPlus: 'background,color',
|
|
42423
42978
|
funcSetValueRow: (rowItem, data) => {
|
|
@@ -42654,7 +43209,7 @@ class BaseCongViecComponent extends DataListBase {
|
|
|
42654
43209
|
BaseCongViecComponent.decorators = [
|
|
42655
43210
|
{ type: Component, args: [{
|
|
42656
43211
|
selector: 'base-congviec',
|
|
42657
|
-
template: "<crud-list #crudList [model]=\"model\" [setting]=\"setting\" [dataSource]=\"model.dataSource\" [hiddenAdd]=\"hiddenAdd\"\r\n [hiddenEdit]=\"hiddenEdit\" [hiddenDelete]=\"hiddenDelete\" [hiddenCopyLink]=\"true\" [hiddenAdd]=\"isFromDashboard\"\r\n (onCopyLink)=\"_copyLink($event)\" (onCopyLinkMultiple)=\"_copyLinkMultiple()\"
|
|
43212
|
+
template: "<crud-list #crudList [model]=\"model\" [setting]=\"setting\" [dataSource]=\"model.dataSource\" [hiddenAdd]=\"hiddenAdd\"\r\n [hiddenEdit]=\"hiddenEdit\" [hiddenDelete]=\"hiddenDelete\" [hiddenCopyLink]=\"true\" [hiddenAdd]=\"isFromDashboard\"\r\n [showScrollHorizontal]=\"true\" (onCopyLink)=\"_copyLink($event)\" (onCopyLinkMultiple)=\"_copyLinkMultiple()\"\r\n (onReload)=\"_triggerProcessData($event)\" (onAdd)=\"_add($event)\" (onEdit)=\"_edit($event)\" (onView)=\"_edit($event)\"\r\n (onDelete)=\"_delete($event)\" (onDeleteMultiple)=\"_deleteMultiple($event)\" (onReloaded)=\"_unmarkLoading()\"\r\n (onChangedStatusWorkflow)=\"handleChangedStatusWorkflow($event)\">\r\n <ng-template #buttonAfterToolbar>\r\n <button *ngIf=\"loaiDanhSach > 0 && !isPicker\" type=\"button\" pButton pRipple label=\"Ch\u1ECDn c\u00F4ng vi\u1EC7c\"\r\n icon=\"pi pi-plus\" class=\"p-button-text p-button-success\" (click)=\"onChonCongViec()\"></button>\r\n </ng-template>\r\n <ng-template #congViecInfo let-rowData=\"rowData\">\r\n <div class=\"container-task-info\">\r\n <div class=\"cell-task-info\">\r\n {{rowData.ten}}\r\n </div>\r\n <div class=\"percent-done\">\r\n <div class=\"detail transition-width\" [ngStyle]=\"{\r\n width: rowData.percentWidth\r\n }\">\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n <ng-template #idPriority let-rowData=\"rowData\">\r\n <div class=\"priority\">\r\n <span [ngStyle]=\"{\r\n color: rowData.priorityColor,\r\n background: rowData.priorityBackground\r\n }\">{{rowData.stridPriority}}</span>\r\n </div>\r\n </ng-template>\r\n</crud-list>\r\n<tn-dialog *ngIf=\"showDetailForm\" #dialog [styleClass]=\"'congviec-form tn-form-dialog'\"\r\n [header]=\"setting.popupHeader | translate\" [popupSize]=\"setting.popupSize\" (onHide)=\"showDetailForm = false\">\r\n <base-congviec-form #formBase [parentModel]=\"model\" [parentSetting]=\"setting\" [parentContext]=\"context\"\r\n [model]=\"formModel\" [crudList]=\"crudList\" (onSaved)=\"showDetailForm = false;crudList.reload()\"\r\n (onCancel)=\"_handleCancel($event)\" (onAfterSaved)=\"onAfterSaved($event)\">\r\n </base-congviec-form>\r\n</tn-dialog>\r\n\r\n<tn-dialog *ngIf=\"showPickerForm\" #dialog [styleClass]=\"'congviec-form tn-form-dialog'\"\r\n [header]=\"'Ch\u1ECDn c\u00F4ng vi\u1EC7c' | translate\" [popupSize]=\"setting.popupSize\" [showFooter]=\"true\"\r\n [useDefaultScrollBar]=\"true\" (onHide)=\"showPickerForm = false\">\r\n <base-congviec #congViecPicker [isPicker]=\"true\" [loaiDanhSach]=\"loaiDanhSach\" [idCongViec]=\"idCongViec\">\r\n </base-congviec>\r\n <ng-template #footer>\r\n <button type=\"button\" pButton icon=\"pi pi-save\" class=\"p-button-text\" [label]=\"'Ch\u1ECDn' | translate\"\r\n (click)=\"onSelectCongViec()\"></button>\r\n <button type=\"button\" pButton icon=\"pi pi-replay\" class=\"p-button-text p-button-secondary\"\r\n [label]=\"'FORM.CANCEL' | translate\" preventTab (click)=\"showPickerForm=false\"></button>\r\n </ng-template>\r\n</tn-dialog>",
|
|
42658
43213
|
providers: [ComponentContextService],
|
|
42659
43214
|
styles: [".container-task-info .percent-done{background-color:#f0f0f0;border-radius:2px;height:5px;margin-top:5px;overflow:hidden;position:relative}.container-task-info .percent-done .detail{background:#3eb839;border-radius:2px;font-size:13px;height:5px;left:0;position:absolute;text-align:center;top:0}.priority{text-align:center}.priority>span{border-radius:3px;font-size:.8em;padding:3px 7px}"]
|
|
42660
43215
|
},] }
|
|
@@ -44710,7 +45265,7 @@ class ShareLinkByPermissionComponent extends ComponentBase {
|
|
|
44710
45265
|
copyLinkToClipboard() {
|
|
44711
45266
|
if (this.links) {
|
|
44712
45267
|
this.copyToClipboard(this.links);
|
|
44713
|
-
this._notifierService.
|
|
45268
|
+
this._notifierService.showSuccess('Copy link vào clipboard thành công');
|
|
44714
45269
|
}
|
|
44715
45270
|
}
|
|
44716
45271
|
}
|
|
@@ -44803,6 +45358,7 @@ function coreDeclaration() {
|
|
|
44803
45358
|
StateMachinesConnectionReceiverDepartmentComponent,
|
|
44804
45359
|
StateMachinesConnectionReceiverGroupComponent,
|
|
44805
45360
|
StateMachinesConnectionReceiverRoleComponent,
|
|
45361
|
+
StateMachinesConnectionReceiverConditionComponent,
|
|
44806
45362
|
StateMachinesConnectionSenderComponent,
|
|
44807
45363
|
StateMachinesDesignerComponent,
|
|
44808
45364
|
StartWorkflowComponent,
|
|
@@ -46620,5 +47176,5 @@ DynamicComponentService.ctorParameters = () => [
|
|
|
46620
47176
|
* Generated bundle index. Do not edit.
|
|
46621
47177
|
*/
|
|
46622
47178
|
|
|
46623
|
-
export { AccessDeniedComponent, Action, AddressControlSchema, AddressService, AdvanceSearchData, AdvanceSearchSetting, AppComponentBase, AppListService, ApplicationContextService, ApprovalPipe, ArrayPair, AtLeastOneRowTableValidator, AuthenService, AuthorizeDirective, AutoCompleteControlSchema, AutoCompletePickerControlSchema, AutocompleteDatasourceComponent, AvatarUploaderComponent, BaseCauHinhWorkflowComponent, BaseCongViecComponent, BaseCongViecFormComponent, BaseDmLinhVucCongViecComponent, BaseDmLoaiCongViecComponent, BaseDmPriorityComponent, BaseMenuService, BaseModule, BaseService, BooleanFormatPipe, ButtonControlSchema, CONFIG_CALENDAR_VIETNAMESE, CalculationEngineService, CanBoHoSoService, CauHinhWorkflowService, CellExcel, ChatBoxComponent, ChatSendMessageBoxComponent, CheckBoxListControlSchema, CheckControlVisibleService, CheckDuplicateFieldsValidator, CheckDuplicateValidator, CheckboxControlSchema, ClientV5Service, CoCauToChucControlSchema, CoCauToChucPickerComponent, CoCauToChucPickerControlSchema, CoCauToChucService, ColorBlack, ColorControlSchema, ColorPickerControlSchema, ColorWhite, Column, ColumnSchemaBase, ColumnSetting, ColumnSettingDetail, ComCtxConstants, CommandType, CommonAppComponentComponent, CommonDashboardComponent, CommonErrorCode, CommonService, CompareValidator, ComponentBase, ComponentConstants, ComponentContextService, ConditionalBuilderService, CongViecLienQuanService, CongViecPickerControlSchema, CongViecService, ContainerSchema, ControlTreeNode, ControlType, ConvertMoneyToWordPipe, CoreConfigService, CrudBase, CrudFormComponent, CrudFormCustomFunction, CrudFormData, CrudFormSetting, CrudListComponent, CrudListConfig, CrudListCustomFunction, CrudListData, CrudListHelper, CrudListSetting, CrudService, CustomControlSchema, CustomRouterService, DanhmucApiService, DataExcel, DataFormBase, DataListBase, DataSourceControlSchema, DataSourceStateType, DataSourceTargetType, DataSourceUserRule, DataSourceUserSender, DataSourceWorkflowCoreStatus, DataType, DateCompareValidator, DateTimeControlSchema, DateTimeRangeControlSchema, DbOrganizationOrganizationService, DbOrganizationPositionService, Deadline, DeadlineType, DhvinhGuardService, DialogModel, DmLinhVucCongViecService, DmLoaiCongViecService, DmPriorityService, DomService, DownloadLinkService, DropdownComponent, DropdownControlSchema, DropdownOptions, DynamicComponentService, ENUM_DON_VI_HANH_CHINH, EXPLORER_TYPES, EXPORT_VERSION_V4, EXPORT_VERSION_V5, EditFileCommand, EditorControlSchema, EformService, EmailValidator, EntityMedataDataSetting, EntityMetadataService, EntityPickerColumn, EntityPickerControlSchema, EntityWorkflowType, EnumActionType, EnumControlPickerType, EnumFileLayout, EnumGetRefType, EnumLoaiDanhSachCongViec, EnumPermissionType, EnumStateByMenuCongViec, EnumStateType, EnumTargetType, EnumTypeSplash, EnumUserRule, EnumWFNhomTrangThai, EnumWorkflowCoreCodeSettingKey, EnumWorkflowHistoryStatus, ErrorType, EventData, ExactOneValueInTableValidator, ExportAllMode, ExportItem, ExportItemType, ExportItemsMode, ExportManyModel, ExportManyResultModel, ExportModel, ExportService, ExportWithoutTemplateModel, Extension, FILE_TYPES, FieldDefineIsTaskFormControl, FieldDefineIsWorkflowControl, FileDataService, FileExplorerService, FileManagerComponent, FileManagerControlSchema, FileManagerMode, FileObjectService, FilePickerDialogComponent, FileUploadComponent, FileUploadControlSchema, FileUploadMode, FileV4Service, Filter, FolderService, FormControlBase, FormControlBaseWithService, FormSchemaBase, FormSchemaBaseWithService, FormState, Gender, GenerateLinkDownloadDTO, GenericGuardService, GetRefDataSchema, GlobalService, GmailCorrector, GridInfo, GuardService, GuardSvService, HeightType, HighPerformanceService, HighlightPipe, HtmlFormatPipe, ImageService, KeyFieldGetRefType, KeyFilterStateByMenuCongViec, KeyFlashShow, KeyValueComponent, KeyValueControlSchema, LabelSchema, LabelWFNhomTrangThai, LabelWorkflowCoreStatus, LengthValidator, ListHelperService, LoaiPhieuDeXuat, LocalCacheService, LowerCorrector, MA_THONG_BAO_PHAN_HE, ManagerType, MaskControlSchema, MasterDataItem, MasterDataPipe, MasterDataService, MenuService, MethodResult, ModelSchema, ModuleConfigService, MultiTranslateHttpLoader, MultipleReferenceDataFormatPipe, NodeService, NotificationObjectType, NotificationService, NotifierService, NumberCompareValidator, NumberOnlyValidator, NumberRangeControlSchema, Operator, OrganizationFormatPipe, OrganizationNameFormatPipe, OrganizationPickerControlSchema, OrganizationService, OrganizationsFormatPipe, PageInfo, PageSetting, Pair, Pattern, PercentControlSchema, PermissionBase, PermissionConstant, PermissionService, PermissionStorage, PermissionTypes, PermissionUtilsComponent, PersonalSetting, PhoneNumberValidator, PhoneValidator, PopupSize, PositionService, PrintService, PublicFunction, QueryBuilderComponent, QueryBuilderGroupComponent, QueryBuilderRuleComponent, QueryGroup, QueryRule, RadioButtonListControlSchema, RandomDataService, RefField, ReferenceDataFormatPipe, RegexSplitFieldByItem, RequiredFieldsValidator, RequiredValidator, RowColorOption, RowExcel, SHARE_COMPONENT_ID, SHARE_EVENT, SafeHtmlPipe, SafeStylePipe, SafeUrlPipe, SameValueValidator, SchemaBase, SecurePipe, ServiceFileUploadComponent, SessionTypes, SharedFolderType, SignalRService, SimpleDicItem, SimpleDictionary, Sort, SortDirs, SpanControlSchema, SplashComponentComponent, StartupBusinessComponentBase, StateComponent, StateMachineTopic, StateMachinesConnectionMetadataComponent, StateMachinesDesignerComponent, StateMachinesService, StateMetadataComponent, Status, StatusAction, StatusGroup, StatusOption, StatusOrg, StatusUser, StorageService, StorageUpdatedService, StringFormatPipe, SummaryPipe, SwitchControlSchema, TBL_DM_COSODAOTAO_CONSTS, TBL_DM_PHONGHOC_CONSTS, TBL_KTX_NGUOITHUE_HOSO, TBL_TS_PHIEUDEXUAT, TBL_TS_TAISANCODINH_CONSTS, TableSchema, TagSeparator, TemplateConstant, TemplateControlSchema, TemplateInstanceService, TemplateService, TemplateTextItem, TemplateTextMany, TemplateTextV4Service, TemplateType, TemplateV4Service, TenContainer, TextAlign, TextAreaControlSchema, TextControlSchema, TextControlSchemaWithService, TitleSchema, TnClientCommand, TnClientService, TnComponentConfig, TnCustomScrollbarComponent, TnDatePipe, TnReorderableColumnDirective, TnReorderableRowDirective, TnSortIcon, TnSortableColumnDirective, TnUser, TnxSharedModule, TopicReloadCongViecV5, TopicReloadCountCongViecV5, TopicReloadNotification, TrangThaiMasterData, TrangThais, TreeDataOption, TrimCorrector, TrimEndCorrector, TrimStartCorrector, TypeDanhMucAPI, UniqueFieldInTableValidator, UniqueNumberService, UpperCorrector, UserFormatPipe, UserGroupRealService, UserGroupService, UserPickerControlSchema, UserPickerDialogComponent, UserService, UserV5Service, UsersFormatPipe, Validation, VanBanPickerControlSchema, VirtualBaseService, WorkflowConfigAdvance, WorkflowCoreStatusEnum, WorkflowFieldStateCode, WorkflowHistoryService, WorkflowPermissionDetailService, WorkflowPickerComponent, WorkflowService, WorkflowSetting, WorkflowSettingNew, WrapPickerControlSchema, addDay, addZero, appendDefaultFilter, clearAll, clone, cloneOld, coreDeclaration, coreModuleImport, coreProvider, createJsPlumnInstance, createOrgPickerControl, createRolePickerControl, createUserGroupPickerControl, createUserPickerControl, dataSourceIcon$1 as dataSourceIcon, dateDiff, genQueryFromFilters, getDateFromStringDateVN, getDayOfWeek, getEnvironmentByName, getEnvironmentData, getListMenuByName, getMenuData, getMonday, getStringDate, getStringDateTime, getStringDateVN, getStringDateVNLocal, getTimeSpan, isArray, isBoolean, isDate, isFunction, isLiteralObject, isNumber, isObjectOld, isRegular, isSimpleType, isString, isValidDate, keyUserSurveyLocal, maximumPageSize, mergeJSON, mergeJSONOld, moduleConfigFunc, multipleSort, romanize, setMetadataConnection, translateStateMachine, ɵ0, ɵ1, ɵ10, ɵ11, ɵ12, ɵ2, ɵ3, ɵ4, ɵ5, ɵ6, ɵ7, ɵ8, ɵ9, AddressComponent as ɵa, DropdownService as ɵb, DatetimePickerRangeComponent as ɵba, DynamicNodeComponent as ɵbb, EntityPickerBoxComponent as ɵbc, EntityPickerDataComponent as ɵbd, EntityPickerSelectedComponent as ɵbe, EntityPickerComponent as ɵbf, EntityPickerDialogComponent as ɵbg, EntityPermissionComponent as ɵbh, DM_ChucVuService as ɵbi, RoleService as ɵbj, EntityPermissionService as ɵbk, EquationEditorComponent as ɵbl, MaskComponent as ɵbm, NumberPickerRangeComponent as ɵbn, PagingNextBackOnlyComponent as ɵbo, RadioButtonListComponent as ɵbp, VanBanPickerComponent as ɵbq, VanBanDenService as ɵbr, VanBanDiService as ɵbs, VanBanPickerDialogComponent as ɵbt, VanbanDiPickerComponent as ɵbu, VanbanDenPickerComponent as ɵbv, CongViecPickerComponent as ɵbw, CongViecService$1 as ɵbx, TaskWorkflowHistoriesService as ɵby, SettingsComponent as ɵbz, EntityPickerService as ɵc, SettingsRowComponent as ɵca, SettingsWorkflowComponent as ɵcb, SettingsWorkflowNo1Component as ɵcc, SimpleWorkflowFormComponent as ɵcd, ProcessWorkflowFormComponent as ɵce, ProcessWorkflowTargetComponent as ɵcf, ChoYKienFormComponent as ɵcg, SplashComponentV1Component as ɵch, StateMachinesConnectionReceiverComponent as ɵci, StateMachinesConnectionReceiverUserComponent as ɵcj, StateMachinesConnectionReceiverDepartmentComponent as ɵck, StateMachinesConnectionReceiverGroupComponent as ɵcl, StateMachinesConnectionReceiverRoleComponent as ɵcm, StateMachinesConnectionSenderComponent as ɵcn, StartWorkflowComponent as ɵco, WorkflowSettingsService as ɵcp, ShareLinkByPermissionComponent as ɵcq, WorkflowSettingNewComponent as ɵcr, PermissionSharingComponent as ɵcs, WorkflowPermissionService as ɵct, TnDialogComponent as ɵcu, TnColorPickerComponent as ɵcv, TnTinymceComponent as ɵcw, TnTabViewComponent as ɵcx, TableDetailFormComponent as ɵcy, FileIconPipe as ɵcz, ExceptionHandlerService as ɵd, FileSizePipe as ɵda, QuickAddFormComponent as ɵdb, PreventShiftTabDirective as ɵdc, TnTemplateDirective as ɵdd, UserPickerComponent as ɵde, UserPickerBoxComponent as ɵdf, CoCauToChucTestService as ɵdg, TnAppHelpComponent as ɵdh, PathNameService as ɵdi, HelperCurrentPageComponent as ɵdj, TnAppNotificationListComponent as ɵdk, TnAppNotificationComponent as ɵdl, MyDriveService as ɵdm, FileVersionService as ɵdn, FileExplorerNewService as ɵdo, FolderFormComponent as ɵdp, FileFormComponent as ɵdq, FileViewerComponent as ɵdr, FileVersionListComponent as ɵds, WorkflowHistoryComponent as ɵdt, EntityWorkflowHistoryService as ɵdu, WorkflowHistoryDialogComponent as ɵdv, WorkflowHistoryNewComponent as ɵdw, WorkflowSettingComponent as ɵdx, EntityWorkflowSettingService as ɵdy, WorkflowSettingDialogComponent as ɵdz, CanBo_HoSoService as ɵe, QrCodeGeneratorComponent as ɵea, AccessDeniedV1Component as ɵeb, AddNewsComponent as ɵec, ArticleService as ɵed, NewsCategoryService as ɵee, NotFoundComponent as ɵef, UniversalLinkProcessorComponent as ɵeg, SignatureDetailComponent as ɵeh, ChatService as ɵei, ContentsService as ɵej, StatusExtendsService as ɵek, MessageBoardService as ɵel, KySoSimDanhSachChuKyComponent as ɵem, KySoSimChuKyUserService as ɵen, FileKySoSimComponent as ɵeo, KySoSimSignPDFService as ɵep, CheckReadyComponent as ɵeq, SendAccessTokenInterceptor as ɵer, LogInterceptor as ɵes, PermissionUtilsInterceptor as ɵet, AfterViewCheckedComponent as ɵf, AdvanceSearchComponent as ɵg, AppRootMenuComponent as ɵh, AppTopBarComponent as ɵi, AppTopBarV1Component as ɵj, AppProfileComponent as ɵk, AppSubMenuComponent as ɵl, AppMenuComponent as ɵm, AutoCompletePickerComponent as ɵn, CheckBoxListComponent as ɵo, ReportQueueComponent as ɵp, CoCauToChucPickerListComponent as ɵq, BaseCongViecTestComponent as ɵr, BaseCauHinhWorkflowDetailComponent as ɵs, BaseDmLoaiCongViecFormComponent as ɵt, BaseDmLinhVucCongViecFormComponent as ɵu, BaseDmPriorityFormComponent as ɵv, BaseCongviecDinhkemComponent as ɵw, CongviecDinhkemService as ɵx, BaseCongviecDinhkemFormComponent as ɵy, DatetimePickerComponent as ɵz };
|
|
47179
|
+
export { AccessDeniedComponent, Action, AddressControlSchema, AddressService, AdvanceSearchData, AdvanceSearchSetting, AppComponentBase, AppListService, ApplicationContextService, ApprovalPipe, ArrayPair, AtLeastOneRowTableValidator, AuthenService, AuthorizeDirective, AutoCompleteControlSchema, AutoCompletePickerControlSchema, AutocompleteDatasourceComponent, AvatarUploaderComponent, BaseCauHinhWorkflowComponent, BaseCongViecComponent, BaseCongViecFormComponent, BaseDmLinhVucCongViecComponent, BaseDmLoaiCongViecComponent, BaseDmPriorityComponent, BaseMenuService, BaseModule, BaseService, BooleanFormatPipe, ButtonControlSchema, CONFIG_CALENDAR_VIETNAMESE, CalculationEngineService, CanBoHoSoService, CauHinhWorkflowService, CellExcel, ChatBoxComponent, ChatSendMessageBoxComponent, CheckBoxListControlSchema, CheckControlVisibleService, CheckDuplicateFieldsValidator, CheckDuplicateValidator, CheckboxControlSchema, ClientV5Service, CoCauToChucControlSchema, CoCauToChucPickerComponent, CoCauToChucPickerControlSchema, CoCauToChucService, ColorBlack, ColorControlSchema, ColorPickerControlSchema, ColorWhite, Column, ColumnSchemaBase, ColumnSetting, ColumnSettingDetail, ComCtxConstants, CommandType, CommonAppComponentComponent, CommonDashboardComponent, CommonErrorCode, CommonService, CompareValidator, ComponentBase, ComponentConstants, ComponentContextService, ConditionalBuilderService, CongViecLienQuanService, CongViecPickerControlSchema, CongViecService, ContainerSchema, ControlTreeNode, ControlType, ConvertMoneyToWordPipe, CoreConfigService, CrudBase, CrudFormComponent, CrudFormCustomFunction, CrudFormData, CrudFormSetting, CrudListComponent, CrudListConfig, CrudListCustomFunction, CrudListData, CrudListHelper, CrudListSetting, CrudService, CustomControlSchema, CustomRouterService, DanhmucApiService, DataExcel, DataFormBase, DataListBase, DataSourceControlSchema, DataSourceStateType, DataSourceTargetType, DataSourceUserRule, DataSourceUserSender, DataSourceWorkflowCheckboxOption, DataSourceWorkflowCoreStatus, DataType, DateCompareValidator, DateTimeControlSchema, DateTimeRangeControlSchema, DbOrganizationOrganizationService, DbOrganizationPositionService, Deadline, DeadlineType, DhvinhGuardService, DialogModel, DmLinhVucCongViecService, DmLoaiCongViecService, DmPriorityService, DomService, DownloadLinkService, DropdownComponent, DropdownControlSchema, DropdownOptions, DynamicComponentService, ENUM_DON_VI_HANH_CHINH, EXPLORER_TYPES, EXPORT_VERSION_V4, EXPORT_VERSION_V5, EditFileCommand, EditorControlSchema, EformService, EmailValidator, EntityMedataDataSetting, EntityMetadataService, EntityPickerColumn, EntityPickerControlSchema, EntityWorkflowType, EnumActionType, EnumControlPickerType, EnumFileLayout, EnumGetRefType, EnumLoaiDanhSachCongViec, EnumPermissionType, EnumStateByMenuCongViec, EnumStateType, EnumTargetType, EnumTypeSplash, EnumUserRule, EnumWFNhomTrangThai, EnumWorkflowCheckboxOption, EnumWorkflowCoreCodeSettingKey, EnumWorkflowHistoryStatus, ErrorType, EventData, ExactOneValueInTableValidator, ExportAllMode, ExportItem, ExportItemType, ExportItemsMode, ExportManyModel, ExportManyResultModel, ExportModel, ExportService, ExportWithoutTemplateModel, Extension, FILE_TYPES, FieldDefineIsTaskFormControl, FieldDefineIsWorkflowControl, FileDataService, FileExplorerService, FileManagerComponent, FileManagerControlSchema, FileManagerMode, FileObjectService, FilePickerDialogComponent, FileUploadComponent, FileUploadControlSchema, FileUploadMode, FileV4Service, Filter, FolderService, FormControlBase, FormControlBaseWithService, FormSchemaBase, FormSchemaBaseWithService, FormState, Gender, GenerateLinkDownloadDTO, GenericGuardService, GetRefDataSchema, GlobalService, GmailCorrector, GridInfo, GuardService, GuardSvService, HeightType, HighPerformanceService, HighlightPipe, HtmlFormatPipe, ImageService, KeyFieldGetRefType, KeyFilterStateByMenuCongViec, KeyFlashShow, KeyValueComponent, KeyValueControlSchema, LabelSchema, LabelWFNhomTrangThai, LabelWorkflowCoreStatus, LengthValidator, ListHelperService, LoaiPhieuDeXuat, LocalCacheService, LowerCorrector, MA_THONG_BAO_PHAN_HE, ManagerType, MaskControlSchema, MasterDataItem, MasterDataPipe, MasterDataService, MenuService, MethodResult, ModelSchema, ModuleConfigService, MultiTranslateHttpLoader, MultipleReferenceDataFormatPipe, NodeService, NotificationObjectType, NotificationService, NotifierService, NumberCompareValidator, NumberOnlyValidator, NumberRangeControlSchema, Operator, OrganizationFormatPipe, OrganizationNameFormatPipe, OrganizationPickerControlSchema, OrganizationService, OrganizationsFormatPipe, PageInfo, PageSetting, Pair, Pattern, PercentControlSchema, PermissionBase, PermissionConstant, PermissionService, PermissionStorage, PermissionTypes, PermissionUtilsComponent, PersonalSetting, PhoneNumberValidator, PhoneValidator, PopupSize, PositionService, PrintService, PublicFunction, QueryBuilderComponent, QueryBuilderGroupComponent, QueryBuilderRuleComponent, QueryGroup, QueryRule, RadioButtonListControlSchema, RandomDataService, RefField, ReferenceDataFormatPipe, RegexSplitFieldByItem, RequiredFieldsValidator, RequiredValidator, RowColorOption, RowExcel, SHARE_COMPONENT_ID, SHARE_EVENT, SafeHtmlPipe, SafeStylePipe, SafeUrlPipe, SameValueValidator, SchemaBase, SecurePipe, ServiceFileUploadComponent, SessionTypes, SharedFolderType, SignalRService, SimpleDicItem, SimpleDictionary, Sort, SortDirs, SpanControlSchema, SplashComponentComponent, StartupBusinessComponentBase, StateComponent, StateMachineTopic, StateMachinesConnectionMetadataComponent, StateMachinesDesignerComponent, StateMachinesService, StateMetadataComponent, Status, StatusAction, StatusGroup, StatusOption, StatusOrg, StatusUser, StorageService, StorageUpdatedService, StringFormatPipe, SummaryPipe, SwitchControlSchema, TBL_DM_COSODAOTAO_CONSTS, TBL_DM_PHONGHOC_CONSTS, TBL_KTX_NGUOITHUE_HOSO, TBL_TS_PHIEUDEXUAT, TBL_TS_TAISANCODINH_CONSTS, TableSchema, TagSeparator, TemplateConstant, TemplateControlSchema, TemplateInstanceService, TemplateService, TemplateTextItem, TemplateTextMany, TemplateTextV4Service, TemplateType, TemplateV4Service, TenContainer, TextAlign, TextAreaControlSchema, TextControlSchema, TextControlSchemaWithService, TitleSchema, TnClientCommand, TnClientService, TnComponentConfig, TnCustomScrollbarComponent, TnDatePipe, TnReorderableColumnDirective, TnReorderableRowDirective, TnSortIcon, TnSortableColumnDirective, TnUser, TnxSharedModule, TopicReloadCongViecV5, TopicReloadCountCongViecV5, TopicReloadNotification, TrangThaiMasterData, TrangThais, TreeDataOption, TrimCorrector, TrimEndCorrector, TrimStartCorrector, TypeDanhMucAPI, UniqueFieldInTableValidator, UniqueNumberService, UpperCorrector, UserFormatPipe, UserGroupRealService, UserGroupService, UserPickerControlSchema, UserPickerDialogComponent, UserService, UserV5Service, UsersFormatPipe, Validation, VanBanPickerControlSchema, VirtualBaseService, WorkflowConfigAdvance, WorkflowCoreStatusEnum, WorkflowFieldStateCode, WorkflowHistoryService, WorkflowPermissionDetailService, WorkflowPickerComponent, WorkflowService, WorkflowSetting, WorkflowSettingNew, WrapPickerControlSchema, addDay, addZero, appendDefaultFilter, clearAll, clone, cloneOld, coreDeclaration, coreModuleImport, coreProvider, createJsPlumnInstance, createOrgPickerControl, createRolePickerControl, createUserGroupPickerControl, createUserPickerControl, dataSourceIcon$1 as dataSourceIcon, dateDiff, genQueryFromFilters, getDateFromStringDateVN, getDayOfWeek, getEnvironmentByName, getEnvironmentData, getListMenuByName, getMenuData, getMonday, getStringDate, getStringDateTime, getStringDateVN, getStringDateVNLocal, getTimeSpan, isArray, isBoolean, isDate, isFunction, isLiteralObject, isNumber, isObjectOld, isRegular, isSimpleType, isString, isValidDate, keyUserSurveyLocal, maximumPageSize, mergeJSON, mergeJSONOld, moduleConfigFunc, multipleSort, romanize, setMetadataConnection, translateStateMachine, ɵ0, ɵ1, ɵ10, ɵ11, ɵ12, ɵ13, ɵ14, ɵ2, ɵ3, ɵ4, ɵ5, ɵ6, ɵ7, ɵ8, ɵ9, AddressComponent as ɵa, DropdownService as ɵb, DatetimePickerRangeComponent as ɵba, DynamicNodeComponent as ɵbb, EntityPickerBoxComponent as ɵbc, EntityPickerDataComponent as ɵbd, EntityPickerSelectedComponent as ɵbe, EntityPickerComponent as ɵbf, EntityPickerDialogComponent as ɵbg, EntityPermissionComponent as ɵbh, DM_ChucVuService as ɵbi, RoleService as ɵbj, EntityPermissionService as ɵbk, EquationEditorComponent as ɵbl, MaskComponent as ɵbm, NumberPickerRangeComponent as ɵbn, PagingNextBackOnlyComponent as ɵbo, RadioButtonListComponent as ɵbp, VanBanPickerComponent as ɵbq, VanBanDenService as ɵbr, VanBanDiService as ɵbs, VanBanPickerDialogComponent as ɵbt, VanbanDiPickerComponent as ɵbu, VanbanDenPickerComponent as ɵbv, CongViecPickerComponent as ɵbw, CongViecService$1 as ɵbx, TaskWorkflowHistoriesService as ɵby, SettingsComponent as ɵbz, EntityPickerService as ɵc, SettingsRowComponent as ɵca, SettingsWorkflowComponent as ɵcb, SettingsWorkflowNo1Component as ɵcc, SimpleWorkflowFormComponent as ɵcd, ProcessWorkflowFormComponent as ɵce, ProcessWorkflowTargetComponent as ɵcf, DmChucVuService as ɵcg, ChoYKienFormComponent as ɵch, SplashComponentV1Component as ɵci, StateMachinesConnectionReceiverComponent as ɵcj, StateMachinesConnectionReceiverUserComponent as ɵck, StateMachinesConnectionReceiverConditionComponent as ɵcl, StateMachinesConnectionReceiverDepartmentComponent as ɵcm, StateMachinesConnectionReceiverGroupComponent as ɵcn, StateMachinesConnectionReceiverRoleComponent as ɵco, StateMachinesConnectionSenderComponent as ɵcp, StartWorkflowComponent as ɵcq, WorkflowSettingsService as ɵcr, ShareLinkByPermissionComponent as ɵcs, WorkflowSettingNewComponent as ɵct, PermissionSharingComponent as ɵcu, WorkflowPermissionService as ɵcv, TnDialogComponent as ɵcw, TnColorPickerComponent as ɵcx, TnTinymceComponent as ɵcy, TnTabViewComponent as ɵcz, ExceptionHandlerService as ɵd, TableDetailFormComponent as ɵda, FileIconPipe as ɵdb, FileSizePipe as ɵdc, QuickAddFormComponent as ɵdd, PreventShiftTabDirective as ɵde, TnTemplateDirective as ɵdf, UserPickerComponent as ɵdg, UserPickerBoxComponent as ɵdh, CoCauToChucTestService as ɵdi, TnAppHelpComponent as ɵdj, PathNameService as ɵdk, HelperCurrentPageComponent as ɵdl, TnAppNotificationListComponent as ɵdm, TnAppNotificationComponent as ɵdn, MyDriveService as ɵdo, FileVersionService as ɵdp, FileExplorerNewService as ɵdq, FolderFormComponent as ɵdr, FileFormComponent as ɵds, FileViewerComponent as ɵdt, FileVersionListComponent as ɵdu, WorkflowHistoryComponent as ɵdv, EntityWorkflowHistoryService as ɵdw, WorkflowHistoryDialogComponent as ɵdx, WorkflowHistoryNewComponent as ɵdy, WorkflowSettingComponent as ɵdz, CanBo_HoSoService as ɵe, EntityWorkflowSettingService as ɵea, WorkflowSettingDialogComponent as ɵeb, QrCodeGeneratorComponent as ɵec, AccessDeniedV1Component as ɵed, AddNewsComponent as ɵee, ArticleService as ɵef, NewsCategoryService as ɵeg, NotFoundComponent as ɵeh, UniversalLinkProcessorComponent as ɵei, SignatureDetailComponent as ɵej, ChatService as ɵek, ContentsService as ɵel, StatusExtendsService as ɵem, MessageBoardService as ɵen, KySoSimDanhSachChuKyComponent as ɵeo, KySoSimChuKyUserService as ɵep, FileKySoSimComponent as ɵeq, KySoSimSignPDFService as ɵer, CheckReadyComponent as ɵes, SendAccessTokenInterceptor as ɵet, LogInterceptor as ɵeu, PermissionUtilsInterceptor as ɵev, AfterViewCheckedComponent as ɵf, AdvanceSearchComponent as ɵg, AppRootMenuComponent as ɵh, AppTopBarComponent as ɵi, AppTopBarV1Component as ɵj, AppProfileComponent as ɵk, AppSubMenuComponent as ɵl, AppMenuComponent as ɵm, AutoCompletePickerComponent as ɵn, CheckBoxListComponent as ɵo, ReportQueueComponent as ɵp, CoCauToChucPickerListComponent as ɵq, BaseCongViecTestComponent as ɵr, BaseCauHinhWorkflowDetailComponent as ɵs, BaseDmLoaiCongViecFormComponent as ɵt, BaseDmLinhVucCongViecFormComponent as ɵu, BaseDmPriorityFormComponent as ɵv, BaseCongviecDinhkemComponent as ɵw, CongviecDinhkemService as ɵx, BaseCongviecDinhkemFormComponent as ɵy, DatetimePickerComponent as ɵz };
|
|
46624
47180
|
//# sourceMappingURL=tnx-shared.js.map
|