中化加油站项目
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

388 lines
12 KiB

import { HttpClient } from "@angular/common/http";
import {
Component,
OnInit,
AfterViewInit,
ViewChild,
ViewContainerRef,
} from "@angular/core";
import { TreeService } from "src/app/service/tree.service";
import {
NzFormatEmitEvent,
NzTreeComponent,
NzTreeNodeOptions,
} from "ng-zorro-antd/tree";
import { FormBuilder, FormGroup, Validators } from "@angular/forms";
import { ModalButtonOptions, NzModalService } from "ng-zorro-antd/modal";
import { NzMessageService } from "ng-zorro-antd/message";
import { AddorComponent } from "./addor/addor.component";
import { EditorComponent } from "./editor/editor.component";
import { NzFormatBeforeDropEvent } from "ng-zorro-antd/tree";
import { Observable, of } from "rxjs";
import { delay } from "rxjs/operators";
import { WarningEventsComponent } from "./warning-events/warning-events.component";
@Component({
selector: "app-organization",
templateUrl: "./organization.component.html",
styleUrls: ["./organization.component.scss"],
})
export class OrganizationComponent implements OnInit {
validateForm!: FormGroup;
constructor(
private fb: FormBuilder,
private http: HttpClient,
private toTree: TreeService,
private modal: NzModalService,
private message: NzMessageService,
private viewContainerRef: ViewContainerRef
) {}
// level: number; //当前登录账号的组织机构等级
ngOnInit(): void {
// this.level = JSON.parse(
// sessionStorage.getItem("userdata")
// ).organization.level;
this.validateForm = this.fb.group({
search: [null],
});
this.getAllOrganization();
}
//搜索框提交
submitForm(): void {
for (const i in this.validateForm.controls) {
this.validateForm.controls[i].markAsDirty();
this.validateForm.controls[i].updateValueAndValidity();
}
}
//获取所有组织机构
searchValue = "";
nzExpandAll = false;
totalCount: string;
allOrList: any;
isLoading = false;
getAllOrganization() {
this.isLoading = true;
let OrganizationUnitId =
sessionStorage.getItem("isGasStation") == "true"
? JSON.parse(sessionStorage.getItem("userdataOfgasstation"))
.organization.id
: JSON.parse(sessionStorage.getItem("userdata")).organization.id;
let params = {
OrganizationUnitId: OrganizationUnitId,
IsContainsChildren: "true",
};
this.http
.get("/api/services/app/Organization/GetAll", {
params: params,
})
.subscribe((data: any) => {
this.totalCount = data.result.totalCount;
console.log(data.result.items);
data.result.items.forEach((element) => {
element.title = element.displayName;
element.key = element.id;
});
this.nodes = [...this.toTree.toTree(data.result.items)];
this.defaultExpandedKeys.length == 0
? (this.defaultExpandedKeys = [this.nodes[0].id])
: (this.defaultExpandedKeys = [...this.defaultExpandedKeys]);
this.isLoading = false;
});
}
@ViewChild("nzTreeComponent", { static: false })
nzTreeComponent!: NzTreeComponent;
defaultExpandedKeys = [];
nodes: any[] = [];
addOr(node?: any) {
// console.log(node)
const modal = this.modal.create({
nzTitle: node ? "新增组织机构" : "新增一级组织机构",
nzContent: AddorComponent,
nzViewContainerRef: this.viewContainerRef,
nzWidth: 288,
nzComponentParams: {},
nzOnOk: async () => {
// console.log('hhhhhhh', instance.validateForm)
if (instance.validateForm.valid) {
await new Promise((resolve) => {
let isGasStation;
instance.validateForm.value.OrgnizationLevel == 4
? (isGasStation = true)
: (isGasStation = false);
let body = {
parentId: node ? Number(node.key) : null,
displayName: instance.validateForm.value.name,
isGasStation: isGasStation,
isSkipAudit: !instance.validateForm.value.isParticipationAudit,
level: instance.validateForm.value.OrgnizationLevel,
};
this.http
.post("/api/services/app/Organization/Create", body)
.subscribe(
(data) => {
resolve(data);
this.message.create("success", "创建成功!");
this.nzTreeComponent.getExpandedNodeList().forEach((item) => {
this.defaultExpandedKeys.push(item.key);
});
this.getAllOrganization();
return true;
},
(err) => {
resolve(err);
this.message.create("warning", "创建失败");
return false;
}
);
});
} else {
this.message.create("warning", "请填写完整!");
return false;
}
},
});
const instance = modal.getContentComponent();
}
editOr(node) {
const modal = this.modal.create({
nzTitle: "编辑组织机构",
nzContent: EditorComponent,
nzViewContainerRef: this.viewContainerRef,
nzWidth: 288,
nzComponentParams: {
data: node.origin,
},
nzOnOk: async () => {
// console.log('hhhhhhh', instance.validateForm)
if (instance.validateForm.valid) {
await new Promise((resolve) => {
let isGasStation;
instance.validateForm.value.OrgnizationLevel == 4
? (isGasStation = true)
: (isGasStation = false);
let body = {
id: node.origin.id,
parentId: node.origin.parentId,
displayName: instance.validateForm.value.name,
isGasStation: isGasStation,
isSkipAudit: !instance.validateForm.value.isParticipationAudit,
level: instance.validateForm.value.OrgnizationLevel,
};
this.http
.put("/api/services/app/Organization/Update", body)
.subscribe(
(data) => {
resolve(data);
this.message.create("success", "编辑成功!");
this.nzTreeComponent.getExpandedNodeList().forEach((item) => {
this.defaultExpandedKeys.push(item.key);
});
this.getAllOrganization();
return true;
},
(err) => {
resolve(err);
this.message.create("warning", "编辑失败");
return false;
}
);
});
} else {
this.message.create("warning", "请填写完整!");
return false;
}
},
});
const instance = modal.getContentComponent();
}
waring(node) {
const modal = this.modal.create({
nzTitle: "油站预警事件接收情况",
nzContent: WarningEventsComponent,
nzViewContainerRef: this.viewContainerRef,
nzWidth: 388,
nzClassName: "WarningEvents",
nzFooter: null,
nzMaskClosable: false,
nzComponentParams: {
data: node.origin,
},
nzOnOk: () => {},
});
const instance = modal.getContentComponent();
}
deleteOr(item) {
console.log(item);
if (item.origin.children && item.origin.children.length != 0) {
this.message.create("warning", "请先删除所有子节点");
} else {
this.modal.confirm({
nzTitle: `确定要删除${item.title}这个机构吗?`,
nzOkText: "确定",
nzOkType: "primary",
nzOnOk: () => {
this.http
.delete("/api/services/app/Organization/Delete", {
params: {
Id: item.origin.id,
},
})
.subscribe((data) => {
this.nzTreeComponent.getExpandedNodeList().forEach((item) => {
this.defaultExpandedKeys.push(item.key);
});
this.getAllOrganization();
this.message.create("success", "删除成功!");
});
},
nzCancelText: "取消",
nzOnCancel: () => {},
});
}
}
nzEvent(event: NzFormatEmitEvent): void {
console.log("event", event);
if (this.isDrag) {
let parentId;
if (this.pos == 0) {
//目标节点内部
parentId = event.node.key;
} else {
if (event.node.level == 0) {
parentId = null;
} else {
parentId = event.node.origin.parentId;
}
}
let body = {
id: event.dragNode.key,
parentId: parentId,
// code: instance.validateForm.value.code,
// displayName: event.dragNode.origin.displayName,
// isGasStation: event.dragNode.origin.isGasStation
};
this.http
.post("/api/services/app/Organization/Move", null, {
params: {
id: event.dragNode.key,
parentId: parentId,
},
})
.subscribe(
(data) => {
this.message.create("success", "拖拽成功!");
this.nzTreeComponent.getExpandedNodeList().forEach((item) => {
this.defaultExpandedKeys.push(item.key);
});
this.getAllOrganization();
return true;
},
(err) => {
this.message.create("warning", "拖拽失败");
return false;
}
);
// console.log('this.allOrList', this.allOrList)
// let orders = {}
// let originalData = JSON.parse(JSON.stringify(this.allOrList || [])) //tree原始数据
// let targetNodeData = []//拖动移入节点的数据,用于遍历求出放在该数组的第几位
//找到需要重新排序的数组
// if (this.pos == 0) {
// originalData.forEach(item => {
// if (item.parentId == event.node.key) {
// targetNodeData.push(item)
// }
// })
// } else {
// if (event.node.origin.parentId) {//如果拖动目标为非一级节点
// originalData.forEach(item => {
// if (item.parentId == event.node.origin.parentId) {
// targetNodeData.push(item)
// }
// })
// } else {//如果拖动目标为一级节点
// originalData.forEach(item => {
// if (!item.parentId) {
// targetNodeData.push(item)
// }
// })
// }
// }
// let idArr = []
// targetNodeData.forEach(i => {
// idArr.push(i.id)
// })
// if (this.pos == 0 && event.node.origin.children.length == 1) {
// // console.log("移入,没有兄弟")
// let key = event.dragNode.key
// orders[key] = 0
// parentId = event.node.key
// } else {
// let array = []
// targetNodeData.forEach(item => {
// if (item.id != event.dragNode.key) { //将拖动项先移除掉
// array.push(item)
// }
// })
// if (event.dragNode.isEnd[event.dragNode.isEnd.length - 1]) { //如果移入到最后一个
// // console.log("最后")
// array.push(event.dragNode.origin)
// } else if (event.dragNode.isStart[event.dragNode.isStart.length - 1]) {//如果移入到第一个
// // console.log("第一")
// array.unshift(event.dragNode.origin)
// } else {//如果移入中间位置
// // console.log("中间")
// array.splice(event.node.origin.order, 0, event.dragNode.origin)
// }
// array.forEach((item, key) => {
// orders[item.id] = key
// })
// console.log("移入,多个兄弟",orders)
// }
// let obj = {
// id: event.dragNode.origin.id,
// parentId: parentId,
// orders: orders
// }
// this.http.put("/api/DisposalNodes/Sort", obj).subscribe(data => {
// const config = new MatSnackBarConfig();
// config.verticalPosition = 'top';
// config.duration = 3000
// this.snackBar.open('排序成功', '确定', config)
// this.refurbishTreeData()
// })
}
}
isDrag; //是否可以拖动
pos; //放置位置
beforeDrop = (arg: NzFormatBeforeDropEvent) => {
console.log("arg", arg);
if (arg.node.level === 0) {
//如果为数据节点则不允许拖到一级节点
this.message.create("warning", "不允许拖拽到一级节点");
this.isDrag = false;
return of(false);
} else {
this.isDrag = true;
this.pos = arg.pos;
return of(true);
}
};
}