import { Component, OnInit, TemplateRef, ViewContainerRef } from '@angular/core'; import { FormBuilder, FormGroup, Validators } from '@angular/forms'; import { NzFormatEmitEvent, NzTreeComponent, NzTreeNodeOptions } from 'ng-zorro-antd/tree'; import { NzModalService } from 'ng-zorro-antd/modal'; import { NzMessageService } from 'ng-zorro-antd/message'; import { HttpClient, HttpHeaders } from '@angular/common/http'; import { TreeService } from 'src/app/service/tree.service'; import { ApplyComponent } from './apply/apply.component'; import { ApplyLookComponent } from './apply-look/apply-look.component'; @Component({ selector: 'app-station-task-apply', templateUrl: './station-task-apply.component.html', styleUrls: ['./station-task-apply.component.scss'] }) export class StationTaskApplyComponent implements OnInit { validateForm!: FormGroup; constructor(private fb: FormBuilder, private modal: NzModalService, private viewContainerRef: ViewContainerRef, private message: NzMessageService, private http: HttpClient, private toTree: TreeService) { } searchForm = { taskname: '', unitname: '', unitlevel: '', or: '' } OrganizationId isSupervisor: boolean //是否为检查员 months = [ { id: 1, name: '1月', isable: true }, { id: 2, name: '2月', isable: true }, { id: 3, name: '3月', isable: true }, { id: 4, name: '4月', isable: true }, { id: 5, name: '5月', isable: true }, { id: 6, name: '6月', isable: true }, { id: 7, name: '7月', isable: true }, { id: 8, name: '8月', isable: true }, { id: 9, name: '9月', isable: true }, { id: 10, name: '10月', isable: true }, { id: 11, name: '11月', isable: true }, { id: 12, name: '12月', isable: true } ] selectedMonth selectedYear = 2022 selectedTime selectMonth(item) { this.selectedMonth = item.id this.getTaskList() } selectYear(e) { this.selectedYear = e console.log('年', e) this.getTaskList() } cancel(item, type) { } delete(item) { } isloading = false totalCount PageNumber = 1 PageSize = 10 taskLIst = [1, 1, 1] getTaskList() { this.isloading = true let selectedTime = this.selectedYear + '-' + this.selectedMonth + '-' + '01' let params = { Month: selectedTime, OrganizationId: this.OrganizationId, TaskName: this.searchForm.taskname, CompanyName: this.searchForm.unitname, AssitantOrganizationId: this.searchForm.or, PageNumber: this.PageNumber, PageSize: this.PageSize } this.http.get('/api/PlanTasks', { params: params }).subscribe((data: any) => { this.isloading = false console.log('任务申请列表', data); this.totalCount = data.totalCount this.taskLIst = [...data.items] }) } pageChange($event) { this.PageNumber = $event this.getTaskList() } search() { this.PageNumber = 1 this.getTaskList() } reset() { this.PageNumber = 1 this.searchForm = { taskname: '', unitname: '', unitlevel: '', or: '' } this.getTaskList() } expandKeys defaultOrId: string //获取所有组织机构 organizationList: any nodes: any = [] async getAllOrganization() { let params = { PageNumber: 1, PageSize: 9999 } var p = new Promise((resolve, reject) => { this.http.get('/api/Organizations', { params: params }).subscribe((data: any) => { data.items.forEach(element => { element.key = element.id element.title = element.name element.disableCheckbox = true element.selectable = false }); this.organizationList = JSON.parse(JSON.stringify(data.items)).filter(item => { return item.level != 'squadron' }) resolve(data) }) }) return p } //获得所有检查员 supervisorList = [] mainsupervisorList = [] assitantsupervisorList = [] async getSupervisor() { var p = new Promise((resolve, reject) => { this.http.get('/api/Users/Inspectors').subscribe((data: any) => { console.log('检查员列表', data) data.forEach(element => { element.key = element.id element.title = element.name element.parentId = element.organizationId }); this.supervisorList = data resolve(data) }) }) return p } ngOnInit(): void { this.OrganizationId = JSON.parse(sessionStorage.getItem('userData')).organizationId let roles = JSON.parse(sessionStorage.getItem('userData')).roles let isSupervisor = roles.find(item => { return item.name.indexOf('检查') != -1 }) isSupervisor ? this.isSupervisor = true : this.isSupervisor = false this.selectedMonth = new Date().getMonth() + 1 this.getTaskList() Promise.all([this.getAllOrganization(), this.getSupervisor()]) .then((results) => { if (this.isSupervisor) { } else { let arr = [...this.supervisorList, ...this.organizationList] this.nodes = this.toTree.toTree(JSON.parse(JSON.stringify(arr))) } }); this.rollStart() } messageList = [1, 1, 1, 1, 1] timer rollStart() { var ROLL_SPEED = 100 var noticeList1 = document.getElementById('notice-list'); var noticeList2 = document.getElementById('notice-list-2'); var listWrapper = document.getElementById('list-wrapper'); noticeList2.innerHTML = noticeList1.innerHTML; this.timer = setInterval(rollStart, ROLL_SPEED); function rollStart() { if (Math.abs(_subStr(listWrapper.style.top)) >= noticeList1.clientHeight) { listWrapper.style.top = '0px' } else { var top = listWrapper.style.top listWrapper.style.top = _subStr(top) - 1 + 'px' } } // 截取px前数值 function _subStr(str) { var index = str.indexOf('px'); if (index > -1) { return parseFloat(str.substr(0, index + 1)) } } } mouseEnter() { // console.log('进入了') window.clearInterval(this.timer); } mouseleave() { this.rollStart() } apply() { if (this.nodes.length == 0) { this.message.create('warning', '组织机构为空,请稍后重试'); return } if (this.supervisorList.length == 0) { this.message.create('warning', '检查员名单为空,请稍后重试'); return } const modal = this.modal.create({ nzTitle: '申请', nzContent: ApplyComponent, nzViewContainerRef: this.viewContainerRef, nzWidth: 660, nzMaskClosable: false, nzComponentParams: { title: this.isSupervisor ? ["联络指导", "双随机"] : ["熟悉演练"], nodes: this.nodes, supervisorList: JSON.parse(JSON.stringify(this.supervisorList)), organizationList: JSON.parse(JSON.stringify(this.organizationList)) }, nzOnOk: async () => { console.log(instance.validateForm.value) if (instance.validateForm.valid) { await new Promise((resolve, reject) => { let body = { taskName: instance.validateForm.value.taskname, organizationId: this.OrganizationId, companyId: instance.validateForm.value.unitname, assitantOrganizationId: instance.validateForm.value.organization, } this.http.post('/api/PlanTasks', body).subscribe({ next: (data) => { this.message.create('success', '创建成功'); resolve(data) this.getTaskList() return true }, error: (err) => { this.message.create('warning', '创建失败'); reject(err) return false } }) }) } else { this.message.create('warning', '请填写完整!'); return false } } }); const instance = modal.getContentComponent(); modal.afterOpen.subscribe(() => console.log('[afterOpen] emitted!')); modal.afterClose.subscribe(result => console.log('[afterClose] The result is:', result)); } look(item) { const modal = this.modal.create({ nzTitle: '详情', nzContent: ApplyLookComponent, nzViewContainerRef: this.viewContainerRef, nzWidth: 660, nzMaskClosable: false, nzComponentParams: { data: item, }, nzFooter: null, nzOnOk: async () => { if (instance.validateForm.valid) { await new Promise(resolve => { let roleNames = [...instance.validateForm.value.role, ...instance.validateForm.value.role2] let body = { userName: instance.validateForm.value.account, name: instance.validateForm.value.name, organizationUnitId: Number(instance.validateForm.value.organization), roleNames: roleNames, phoneNumber: instance.validateForm.value.phonenum, isActive: true } // this.http.post(this.addUrl, body).subscribe(data => { // resolve(data) // this.message.create('success', '创建成功!'); // this.SkipCount = 0 // this.getAllUsers() // return true // }, err => { // resolve(err) // this.message.create('warning', err.error.error.message); // return false // }) }) } else { this.message.create('warning', '请填写完整!'); return false } } }); const instance = modal.getContentComponent(); modal.afterOpen.subscribe(() => console.log('[afterOpen] emitted!')); modal.afterClose.subscribe(result => console.log('[afterClose] The result is:', result)); } }