| | |
| | | import { DataType, AreaNames } from './../../../core/entity/grid'; |
| | | import { Version, ValueTransformer } from '@angular/compiler/src/util'; |
| | | import { Subject } from 'rxjs/Subject'; |
| | | import { ToolsService } from '@core/services/tools.service'; |
| | | import { OrganizationService } from '@business/services/http/organization.service'; |
| | | import { Component, OnInit } from '@angular/core'; |
| | | import { NzMessageService, NzModalService } from 'ng-zorro-antd'; |
| | | import { ModalHelper } from '@delon/theme'; |
| | | import { HttpClient } from '@angular/common/http'; |
| | | import { environment } from '../../../../environments/environment'; |
| | | import { DateService } from '@core/services/date.service'; |
| | | import { VersionService } from 'app/routes/devices/version/version.service'; |
| | | import { Types } from '@core/enum/types.enum'; |
| | | import { Column, Grid, PageBean } from '@core/entity/grid'; |
| | | import { filter } from 'rxjs/operators/filter'; |
| | | import { OrganizationEditComponent } from './organization-edit/organization-edit.component'; |
| | | import { OrganizationService } from 'app/routes/systems/organization/organization.service'; |
| | | |
| | | export interface Organization { |
| | | address?: Column|any; |
| | | areaCode?: Column|any; |
| | | cityCode?: Column|any; |
| | | createTime?: Column|any; |
| | | description?: Column|any; |
| | | email?: Column|any; |
| | | expireTime?: Column|any; |
| | | id?: Column|any; |
| | | isDelete?: Column|any; |
| | | name?: Column|any; |
| | | provinceCode?: Column|any; |
| | | rank?: Column|any; |
| | | telephone?: Column|any; |
| | | areaNames?: AreaNames|any ; |
| | | } |
| | | |
| | | |
| | | @Component({ |
| | | selector: 'app-organization', |
| | |
| | | styles: [] |
| | | }) |
| | | export class OrganizationComponent implements OnInit { |
| | | ngOnInit(): void { |
| | | |
| | | private organization: Organization; |
| | | grid: Grid<Organization> = new Grid(null); |
| | | queryMap = { text: '请输入名称', value: ''}; |
| | | queryTextStream: Subject<string> = new Subject<string>(); |
| | | private initPage() { |
| | | this.organization = { |
| | | name: { |
| | | text: '名称', |
| | | width: '120px' |
| | | }, |
| | | rank: { |
| | | text: '级别', |
| | | width: '80px', |
| | | format: (value: any, col: Column, row: any) => { |
| | | const item = [ |
| | | { value: 0, label: '企业' }, |
| | | { value: 1, label: '乡镇科级' }, |
| | | { value: 2, label: '县处级' }, |
| | | { value: 3, label: '司厅局级' }, |
| | | { value: 4, label: '省部级' }, |
| | | { value: 5, label: '国家级' } |
| | | ].filter( (rankItem: {value: number, label: string }) => { |
| | | return rankItem.value === value; |
| | | }); |
| | | return item != null && item.length === 1 ? item[0].label : ''; |
| | | } |
| | | }, |
| | | telephone: { |
| | | text: '电话', |
| | | width: '180px' |
| | | }, |
| | | address: { |
| | | text: '地址', |
| | | width: '300px', |
| | | format: (value: any, col: Column, row: any) => { |
| | | value = value == null ? '' : value ; |
| | | if (row['areaNames'] != null) { |
| | | return row['areaNames']['provinceName'] + row['areaNames']['cityName'] + row['areaNames']['areaName'] + value; |
| | | } else { |
| | | return value; |
| | | } |
| | | |
| | | } |
| | | }, |
| | | createTime: { |
| | | text: '创建时间', |
| | | width: '100px', |
| | | type: { |
| | | name: Types.Date, |
| | | format: 'YYYY-MM-DD HH:mm:ss' |
| | | }, |
| | | isSort: true |
| | | }, |
| | | expireTime: { |
| | | text: '到期时间', |
| | | width: '100px', |
| | | type: { |
| | | name: Types.Date, |
| | | format: 'YYYY-MM-DD HH:mm:ss' |
| | | }, |
| | | isSort: true |
| | | } |
| | | }; |
| | | this.grid.title = '设备型号'; |
| | | this.grid.setColumns(this.organization); |
| | | this.grid.pageSize = 10; |
| | | } |
| | | constructor( |
| | | private organizationService: OrganizationService, |
| | | |
| | | private confirmServ: NzModalService, |
| | | public msgSrv: NzMessageService, |
| | | private modalHelper: ModalHelper, |
| | | private organizationService: OrganizationService |
| | | ) {} |
| | | |
| | | ngOnInit() { |
| | | this.initPage(); |
| | | this.queryTextStream |
| | | .debounceTime(500) |
| | | .distinctUntilChanged() |
| | | .subscribe(queryText => { |
| | | this.load(); |
| | | }); |
| | | } |
| | | queryTextChanged($event) { |
| | | this.queryTextStream.next(this.queryMap.value); |
| | | } |
| | | load(reload: boolean = false) { |
| | | if (reload) { |
| | | this.grid.pageIndex = 1 ; |
| | | } |
| | | // 延时加载避免ExpressionChangedAfterItHasBeenCheckedError |
| | | setTimeout(() => { |
| | | this.grid.loading = true; |
| | | }, 1); |
| | | this.organizationService.getPagingList(this.grid, this.queryMap.value).subscribe( |
| | | (res: PageBean) => { |
| | | this.grid.loading = true; |
| | | if (res != null && res.data != null) { |
| | | this.grid.initData(res); |
| | | this.grid.refreshStatus(); |
| | | setTimeout(() => { |
| | | this.grid.loading = false; |
| | | }, 1); |
| | | } |
| | | } |
| | | ); |
| | | } |
| | | |
| | | // rowData为null时,为新增 |
| | | addOrModify(d) { |
| | | const data = {}; |
| | | if ( d != null) { |
| | | Object.assign(data, d); |
| | | } |
| | | const cols = this.organization; |
| | | this.modalHelper.static(OrganizationEditComponent, { cols , data }).subscribe( |
| | | ( ret: { data: any, close: Function} ) => { |
| | | // 修改状态 |
| | | if (ret.data['index'] != null ) { |
| | | const index: number = ret.data['index'] ; |
| | | const origData = this.grid.getData()[index]; |
| | | const isModified = Object.keys(origData).some( |
| | | (key: string) => { |
| | | return ret.data[key] !== origData[key]; |
| | | } |
| | | ); |
| | | // 未作修改 |
| | | if (!isModified) { |
| | | ret.close(); |
| | | this.msgSrv.success('组织未作任何修改!'); |
| | | return; |
| | | } |
| | | } |
| | | this.organizationService.save(ret.data).subscribe( |
| | | ( res: any) => { |
| | | if (res.code === 1) { |
| | | this.load(); |
| | | ret.close(); |
| | | this.msgSrv.success('组织保存成功!'); |
| | | } |
| | | } |
| | | ); |
| | | }); |
| | | } |
| | | |
| | | delete(...id: number[]) { |
| | | this.organizationService.delete( ...id ).subscribe( |
| | | ( res: any) => { |
| | | if (res.code === 1) { |
| | | this.load(); |
| | | this.msgSrv.success('设备型号删除成功!'); |
| | | } |
| | | } |
| | | ); |
| | | } |
| | | |
| | | deleteSelected() { |
| | | this.confirmServ.confirm({ |
| | | title: '批量删除', |
| | | content: '注意:数据一旦删除,将不可恢复!', |
| | | okText: '确定', |
| | | cancelText: '取消' |
| | | }).on('onOk', () => { |
| | | if (this.grid.selectedIndexs != null && this.grid.selectedIndexs.length > 0) { |
| | | const ids = this.grid.selectedIndexs.map( |
| | | (index: number) => { |
| | | const id = this.grid.data[index].id; |
| | | return Number.parseInt(id); |
| | | } |
| | | ); |
| | | this.delete( ...ids ); |
| | | } |
| | | }); |
| | | } |
| | | sort(field: string, value: string) { |
| | | // 删除当前field |
| | | this.grid.sorts = this.grid.sorts.filter( |
| | | (fn: string) => { |
| | | return fn !== field; |
| | | } |
| | | ); |
| | | // 如果value不为null,在排序数组最后加上filed |
| | | if ( value != null ) { |
| | | this.grid.sorts.push(field); |
| | | } |
| | | this.load(); |
| | | } |
| | | |
| | | reset(ls: any[]) { |
| | | for (const item of ls) item.value = false; |
| | | this.load(true); |
| | | } |
| | | } |