|
@@ -0,0 +1,277 @@
|
|
|
+import { ChangeDetectorRef, Component, Inject, OnChanges, OnInit, SimpleChanges, ViewChild } from '@angular/core';
|
|
|
+import { ConstantService, FormSchemaService, GeneralHttpService, GeneralUtilsService, I18NService } from '@core';
|
|
|
+import { CacheService } from '@delon/cache';
|
|
|
+import { SFComponent, SFSchema } from '@delon/form';
|
|
|
+import { ALAIN_I18N_TOKEN, ModalHelper } from '@delon/theme';
|
|
|
+import { NzSafeAny } from 'ng-zorro-antd/core/types';
|
|
|
+import { NzNotificationService } from 'ng-zorro-antd/notification';
|
|
|
+import { NzFormatEmitEvent, NzTreeComponent, NzTreeNode } from 'ng-zorro-antd/tree';
|
|
|
+
|
|
|
+import { PopupSelectPanelComponent } from '../../../../shared/component/popup-select/popup-select-panel';
|
|
|
+import {icDeepCopy} from "@shared";
|
|
|
+@Component({
|
|
|
+ selector: 'app-sys-rw-org-list',
|
|
|
+ styleUrls: ['./list.component.less'],
|
|
|
+ templateUrl: './list.component.html'
|
|
|
+})
|
|
|
+export class SysRwOrgListComponent implements OnInit {
|
|
|
+ /* #region 变量定义 */
|
|
|
+ @ViewChild('baseTree', { static: true }) baseTree!: NzTreeComponent;
|
|
|
+ @ViewChild('baseFormSf', { static: true }) baseFormSf!: SFComponent;
|
|
|
+ baseFormSchema: SFSchema = this.formSchema.organizationBaseFormSchema;
|
|
|
+ baseFormData: NzSafeAny = {};
|
|
|
+ configs: any;
|
|
|
+ nodeCheck: NzSafeAny[] = [];
|
|
|
+ nodes: NzSafeAny[] = [];
|
|
|
+ originalNodes: NzSafeAny[] = [];
|
|
|
+ formId = '-1';
|
|
|
+ selectedKeys: NzSafeAny[] = [];
|
|
|
+ selectedNode: any;
|
|
|
+ checkedKeys: NzSafeAny[] = [];
|
|
|
+ expandedKeys: NzSafeAny[] = [];
|
|
|
+ uuids: NzSafeAny[] = [];
|
|
|
+ editOrAddNodes: any[] = [];
|
|
|
+ searchValue = '';
|
|
|
+ userTableData: NzSafeAny[] = [];
|
|
|
+ formConfig: any = { config: { listConfig: { base: { moduleTitle: '组织机构', moduleDescription: '' } } } };
|
|
|
+ /* #endregion */
|
|
|
+
|
|
|
+ /** 查询条件 */
|
|
|
+ @ViewChild('searchSf', { static: false }) searchSf!: SFComponent;
|
|
|
+ searchSchema: SFSchema = {
|
|
|
+ properties: {
|
|
|
+ username: {
|
|
|
+ type: 'string',
|
|
|
+ title: '姓名'
|
|
|
+ },
|
|
|
+ rolename: {
|
|
|
+ type: 'string',
|
|
|
+ title: '角色'
|
|
|
+ }
|
|
|
+ },
|
|
|
+ ui: {
|
|
|
+ spanLabelFixed: 100,
|
|
|
+ grid: {
|
|
|
+ xs: 24,
|
|
|
+ sm: 12,
|
|
|
+ md: 12,
|
|
|
+ lg: 12,
|
|
|
+ xl: 6,
|
|
|
+ xxl: 6
|
|
|
+ }
|
|
|
+ }
|
|
|
+ };
|
|
|
+
|
|
|
+ /* #region 构造函数 */
|
|
|
+ constructor(
|
|
|
+ private http: GeneralHttpService,
|
|
|
+ private constant: ConstantService,
|
|
|
+ private cd: ChangeDetectorRef,
|
|
|
+ private utils: GeneralUtilsService,
|
|
|
+ private modal: ModalHelper,
|
|
|
+ private notification: NzNotificationService,
|
|
|
+ @Inject(ALAIN_I18N_TOKEN) public i18n: I18NService,
|
|
|
+ private formSchema: FormSchemaService,
|
|
|
+ public srv: CacheService
|
|
|
+ ) {}
|
|
|
+ /* #endregion */
|
|
|
+
|
|
|
+ ngOnInit() {
|
|
|
+ this.getUUIDS();
|
|
|
+ this.searchTreeData();
|
|
|
+ }
|
|
|
+
|
|
|
+ searchTreeData() {
|
|
|
+ this.http.getOrganizationList({}).subscribe(res => {
|
|
|
+ this.nodes = this.utils.composeTree(res.data, 'fullname');
|
|
|
+ this.originalNodes = this.utils.composeTree(res.data, 'fullname');
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ // 展开或收起全部节点
|
|
|
+ expandAll(status: boolean) {
|
|
|
+ const nodes = this.baseTree.getTreeNodes();
|
|
|
+ this.utils.expandOrCollapseAllTreeNode(status, nodes);
|
|
|
+ }
|
|
|
+
|
|
|
+ /** 手动勾选和选中树节点 */
|
|
|
+ treeChange(event: NzFormatEmitEvent): void {
|
|
|
+ this.selectedNode = event.keys!.length > 0 ? event.node : null;
|
|
|
+ /** 勾选 */
|
|
|
+ if (event.eventName === 'check') {
|
|
|
+ this.nodeCheck = [...event.checkedKeys!];
|
|
|
+ }
|
|
|
+ if (event.eventName === 'click') {
|
|
|
+ /** 点击label */
|
|
|
+ if (this.selectedNode && this.selectedNode.key !== '-1') {
|
|
|
+ this.selectedNode.origin.createdate = new Date(this.selectedNode.origin.createdate) || new Date();
|
|
|
+ this.selectedNode.origin.modifydate = new Date(this.selectedNode.origin.modifydate) || new Date();
|
|
|
+ this.baseFormData = { ...this.selectedNode.origin };
|
|
|
+ this.formId = this.selectedNode.key;
|
|
|
+ this.getOrganizationUserByOrgId();
|
|
|
+ } else {
|
|
|
+ this.baseFormData = {};
|
|
|
+ this.formId = '-1';
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /** 清除所有树节点选中状态 */
|
|
|
+ resetTreeStatus() {
|
|
|
+ this.formId = '-1';
|
|
|
+ this.selectedKeys = [];
|
|
|
+ this.checkedKeys = [];
|
|
|
+ this.baseFormData = {
|
|
|
+ pid: this.formId
|
|
|
+ };
|
|
|
+ }
|
|
|
+
|
|
|
+ getUUIDS() {
|
|
|
+ this.http.getUUIDS(30).subscribe(res => {
|
|
|
+ this.uuids = res.data;
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ add() {
|
|
|
+ const childId = this.uuids[0];
|
|
|
+ this.uuids.splice(0, 1);
|
|
|
+ if (this.uuids.length < 10) {
|
|
|
+ this.getUUIDS();
|
|
|
+ }
|
|
|
+ this.baseFormData = this.utils.initTreeChild(this.selectedNode, childId, this.baseTree);
|
|
|
+ this.baseFormData['enabled'] = 'y';
|
|
|
+ this.baseFormData['orgtype'] = 'dept';
|
|
|
+ const sysSerial = { modulecode: 'sys_organization_code', ruleTemplateStr: 'department@{serialNumber:#000}' };
|
|
|
+ this.http.getSerialNumberCode(sysSerial).subscribe(res => {
|
|
|
+ if (res.code !== this.constant.errorCode.saveError) {
|
|
|
+ const codeSf = this.baseFormSf.getProperty('/code')!;
|
|
|
+ codeSf.resetValue(res.data.code, false);
|
|
|
+ this.cd.markForCheck();
|
|
|
+ }
|
|
|
+ });
|
|
|
+ if (this.selectedNode) {
|
|
|
+ this.cd.markForCheck();
|
|
|
+ // 设置选中当前节点
|
|
|
+ this.selectedKeys = [childId];
|
|
|
+ this.formId = childId;
|
|
|
+ this.selectedNode = this.baseTree.getTreeNodeByKey(childId);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 监听表单验证
|
|
|
+ baseFormError(event: any) {}
|
|
|
+
|
|
|
+ // 监听表单值改变
|
|
|
+ baseFormChange(event: any) {}
|
|
|
+
|
|
|
+ saveNode(saveOperation: string) {
|
|
|
+ this.selectedNode = this.baseTree.getSelectedNodeList()[0];
|
|
|
+ debugger
|
|
|
+ this.baseFormSf.setValue('/modifydate', new Date());
|
|
|
+ this.selectedNode.origin = { ...this.baseFormSf.value };
|
|
|
+ this.cd.markForCheck();
|
|
|
+ this.selectedNode.title = this.selectedNode.origin.fullname;
|
|
|
+ this.utils.initSaveTreeNode(this.selectedNode);
|
|
|
+ this.http.saveOrganizationList([this.selectedNode.origin]).subscribe(res => {
|
|
|
+ if (res.code !== this.constant.errorCode.saveError) {
|
|
|
+ this.selectedNode.origin.editstatus = 'edited';
|
|
|
+ // 保存并新增同级节点
|
|
|
+ if (saveOperation === 'addSameLevel') {
|
|
|
+ const parentNode = this.selectedNode.parentNode;
|
|
|
+ this.selectedKeys = [parentNode.key];
|
|
|
+ this.formId = parentNode.key;
|
|
|
+ this.selectedNode = this.baseTree.getTreeNodeByKey(parentNode.key);
|
|
|
+ this.add();
|
|
|
+ }
|
|
|
+ // 保存并新增子节点
|
|
|
+ if (saveOperation === 'addChildLevel') {
|
|
|
+ this.add();
|
|
|
+ }
|
|
|
+ const data = this.selectedNode.origin;
|
|
|
+ const pData = this.selectedNode.parentNode.origin;
|
|
|
+ if (data.orgtype == '10') {
|
|
|
+ const updateSql = `update ZHCX_SUBCONTRACTOR_MANAGE_UNIT
|
|
|
+ set WORKSHOP_NAME = '${pData.fullname}/${data.fullname}',
|
|
|
+ WORKSHOP_SHORT_NAME = '${data.shortname}'
|
|
|
+ WHERE WORKSHOP_ID = '${data.id}'`;
|
|
|
+ this.http.getPostData(`inControlServer/sys/generalCRUD/getDataBySql`, { querySql: updateSql }).subscribe(res => {
|
|
|
+ console.log('同步分包商成功...');
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ deleteRows() {
|
|
|
+ const ids = this.nodeCheck.map((value: NzSafeAny) => {
|
|
|
+ return value.key;
|
|
|
+ });
|
|
|
+ this.checkedKeys = [];
|
|
|
+ this.http.deleteOrg(ids).subscribe(res => {
|
|
|
+ this.resetTreeStatus();
|
|
|
+ this.searchTreeData();
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ // 新增用户
|
|
|
+ addUsers() {
|
|
|
+ const configItem = {
|
|
|
+ configName: 'user_select',
|
|
|
+ displayField: 'NAME',
|
|
|
+ multipleSelect: true
|
|
|
+ };
|
|
|
+ this.modal.create(PopupSelectPanelComponent, { configItem }, { size: 800 }).subscribe(res => {
|
|
|
+ if (res) {
|
|
|
+ const orgUsers: NzSafeAny[] = [];
|
|
|
+ res.forEach((v: NzSafeAny) => {
|
|
|
+ const orgUser = {
|
|
|
+ orgid: this.formId,
|
|
|
+ userid: v.ID,
|
|
|
+ username: v.NAME
|
|
|
+ };
|
|
|
+ orgUsers.push(orgUser);
|
|
|
+ });
|
|
|
+ this.http.addOrganizationUsers(orgUsers).subscribe(retRes => {
|
|
|
+ this.getOrganizationUserByOrgId();
|
|
|
+ this.notification.info(retRes.msg, '');
|
|
|
+ });
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ deleteUsers(row: any) {
|
|
|
+ const userOrgObj = {
|
|
|
+ id: row.userOrgId,
|
|
|
+ userid: row.userId,
|
|
|
+ orgid: this.formId
|
|
|
+ };
|
|
|
+ this.http.deleteOrganizationUsers([userOrgObj]).subscribe(res => {
|
|
|
+ this.getOrganizationUserByOrgId();
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ getOrganizationUserByOrgId() {
|
|
|
+ // 查询条件
|
|
|
+ const searchvl = this.searchSf.value;
|
|
|
+ searchvl['orgid'] = this.selectedNode.key;
|
|
|
+ this.http.getOrganizationUserByOrgId(searchvl).subscribe(res => {
|
|
|
+ this.userTableData = [];
|
|
|
+ this.userTableData = res.data;
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ /** 树形搜索 */
|
|
|
+ startFilter() {
|
|
|
+ const resultNodes: NzTreeNode[] = this.utils.searchTree(this.searchValue, this.originalNodes);
|
|
|
+ this.nodes = resultNodes;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 树表结构,搜索框enter时触发
|
|
|
+ */
|
|
|
+ searchValueChange(value: any) {
|
|
|
+ if (value === '') {
|
|
|
+ this.nodes = this.originalNodes;
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|