import { STOCKTAKING_JOB_STATUS_MAP } from './../../../../constants/index' import { ChangeDetectorRef, Component, EventEmitter, Input, OnInit, Output, TemplateRef, ViewChild, forwardRef, } from '@angular/core' import { ControlValueAccessor, FormControl, FormGroup, NG_VALUE_ACCESSOR } from '@angular/forms' import { NzSafeAny } from 'ng-zorro-antd/core/types' import { NzModalService } from 'ng-zorro-antd/modal' import { ApiService } from 'app/services' import { NzMessageService } from 'ng-zorro-antd/message' import { SharedModule } from 'app/shared/shared.module' import { Utils } from 'app/utils' import { NzFormatEmitEvent, NzTreeNode } from 'ng-zorro-antd/tree' import { NzTreeSelectComponent } from 'ng-zorro-antd/tree-select' import { ASSET_SOURCE_MAP, ASSET_STATUS_MAP, MAX_PAGE_SIZE } from 'app/constants' import { AnyObject, TableOption } from 'app/shared/components/server-paginated-table' import { AssetSelectComponent, StocktakingDetailFormComponent } from 'app/components' import { lastValueFrom } from 'rxjs' import { ActivatedRoute } from '@angular/router' @Component({ selector: 'app-stocktaking-detail', standalone: true, imports: [SharedModule], templateUrl: './stocktaking-detail.component.html', styleUrl: './stocktaking-detail.component.less', }) export class StocktakingDetailComponent { constructor( private api: ApiService, private modal: NzModalService, private msg: NzMessageService, private route: ActivatedRoute, ) {} originData: NzSafeAny[] = [] loading = false ASSET_SOURCE_MAP = ASSET_SOURCE_MAP ASSET_STATUS_MAP = ASSET_STATUS_MAP() STOCKTAKING_JOB_STATUS_MAP = STOCKTAKING_JOB_STATUS_MAP table = new TableOption(this.fetchData.bind(this)) queryForm = new FormGroup({ name: new FormControl(), model: new FormControl(), status: new FormControl(), assetCode: new FormControl(), serialNumber: new FormControl(), sourceId: new FormControl(), positionId: new FormControl(), manufacturersVendorId: new FormControl(), }) ngOnInit(): void { this.api.getBasicSupplierVendorPage({ pageSize: MAX_PAGE_SIZE, pageNum: 1 }).subscribe((res) => { this.originData = res.body.rows }) this.table .setConfig({ selectable: true, }) .setColumn([ { key: 'id', title: '主键', visible: true }, { key: 'code', title: '资产编号', visible: true }, { key: 'name', title: '资产名称', visible: true }, { key: 'category', title: '资产分类', visible: true }, { key: 'status', title: '盘点状态', visible: true }, { key: 'createTime', title: '操作时间', visible: true }, // { key: '_ownCompany', title: '所属公司', visible: true }, // { key: '_useOrganization', title: '使用组织', visible: true }, // { key: '_position', title: '存放位置', visible: true }, ]) } fetchData(p: {}, q: AnyObject) { return this.api.getStocktakingJobDetailPage({ ...p, ...q }).pipe() } add(data?: NzSafeAny) { let nzTitle = data ? '编辑资产盘点' : '添加资产盘点' this.modal.create({ nzTitle, nzContent: StocktakingDetailFormComponent, nzWidth: '80vw', nzWrapClassName: 'modal-lg', nzData: { value: data, }, nzOnOk: async (e) => { const vals = e.getValues() if (vals) { const res = await lastValueFrom( this.api.saveStocktakingJobDetail({ ...vals, stocktakingJobId: Number(this.route.snapshot.paramMap.get('id')), }), ) this.msg.success(res.desc) this.table.ref.reload() return true } return false }, }) } deleteItem() { this.modal.confirm({ nzTitle: '警告', nzContent: '是否要删除该盘点?', nzOnOk: async () => { const res = await lastValueFrom( this.api.deleteStocktakingDetail(Array.from(this.table.ref.selected).map((i) => Number(i))), ) this.msg.success(res.desc) this.table.ref.reload() }, }) } }