import { Component, OnInit, ViewChild } from '@angular/core'; import { STColumn, STComponent } from '@delon/abc/st'; import { SFComponent, SFDateWidgetSchema, SFSchema, SFSelectWidgetSchema, SFUISchema } from '@delon/form'; import { ModalHelper, _HttpClient } from '@delon/theme'; import { NzModalService } from 'ng-zorro-antd/modal'; import { map } from 'rxjs/operators'; import { SupplyManagementService } from '../../services/supply-management.service'; import { SupplyManagementQrcodePageComponent } from '../qrcode-page/qrcode-page.component'; import { SupplyManagementUpdatePriceComponent } from '../update-price/update-price.component'; @Component({ selector: 'app-supply-management-bulk', templateUrl: './bulk.component.html', }) export class SupplyManagementBulkComponent implements OnInit { resourceStatus: any; ui: SFUISchema = {}; ui2: SFUISchema = {}; schema: SFSchema = {}; auditMany = false; isVisible = false; _$expand = false; columns: STColumn[] = []; freightSchema: SFSchema = {}; @ViewChild('st') private readonly st!: STComponent; @ViewChild('sf', { static: false }) sf!: SFComponent; @ViewChild('sfFre', { static: false }) sfFre!: SFComponent; tabs = [ { name: '全部', type: 0, count: 0, }, { name: '进行中', type: 1, count: 0, }, { name: '已完结', type: 2, count: 0, }, { name: '已取消', type: 3, count: 0, }, ]; constructor(public service: SupplyManagementService, private modal: NzModalService) { } ngOnInit(): void { this.initSF(); this.initST(); this.initSFFre(); } /** * 查询参数 */ get reqParams() { const a:any = {}; if(this.resourceStatus) { a.resourceStatus = this.resourceStatus } return { ...a, ...this.sf?.value, }; } /** * 初始化查询表单 */ initSF() { this.schema = { properties: { _$expand: { type: 'boolean', ui: { hidden: true } }, resourceCode: { type: 'string', title: '货源编号' }, loadingAddressArr: { type: 'string', title: '装货地' }, unloadingAddressArr: { type: 'string', title: '卸货地' }, serviceType: { title: '服务类型', type: 'string', default: 0, enum: [ { label: '抢单', value: 1 }, { label: '指派', value: 2 }, ], ui: { widget: 'select', visibleIf: { _$expand: (value: boolean) => value, }, } as SFSelectWidgetSchema, }, settlementBasis: { title: '结算依据', type: 'string', default: 0, enum: [ { label: '未知', value: 0 }, { label: '男', value: 1 }, { label: '女', value: 2 }, { label: '保密', value: 3 }, ], ui: { widget: 'select', visibleIf: { _$expand: (value: boolean) => value, }, } as SFSelectWidgetSchema, }, releaseTime: { title: '发布时间', type: 'string', ui: { widget: 'date', mode: 'range', format: 'yyyy-MM-dd', visibleIf: { _$expand: (value: boolean) => value, }, } as SFDateWidgetSchema, }, deadlineTime: { title: '截止时间', type: 'string', ui: { widget: 'date', mode: 'range', format: 'yyyy-MM-dd', visibleIf: { _$expand: (value: boolean) => value, }, } as SFDateWidgetSchema, }, enterpriseInfoName: { type: 'string', title: '网络货运人', ui: { widget: 'select', placeholder: '请选择', visibleIf: { _$expand: (value: boolean) => value, }, allowClear: true, asyncData: () => this.getCatalogueMember(), }, }, no4: { type: 'string', title: '货主', ui: { visibleIf: { _$expand: (value: boolean) => value, }, } }, }, type: 'object', }; this.ui = { '*': { spanLabelFixed: 110, grid: { span: 8, gutter: 4 } } }; } initSFFre() { this.freightSchema = { properties: { remarks: { title: '备注', type: 'string', maxLength: 50, ui: { placeholder: '请输入备注', widget: 'textarea', }, }, } }; this.ui2 = { '*': { spanLabelFixed: 120, grid: { span: 24 } } }; } /** * 初始化数据列表 */ initST() { this.columns = [ { title: '', type: 'checkbox', width: '50px', className: 'text-center' }, { title: '货源编号', width: '100px', className: 'text-center', render: 'resourceCode' }, { title: '服务类型', render: 'serviceType', width: '120px', className: 'text-center' }, { title: '货主', index: 'shipperAppUserNmae', width: '120px', className: 'text-center' }, { title: '项目名称', index: 'enterpriseProjectName', width: '120px', className: 'text-center' }, { title: '关联订单', render: 'orderSn', width: '120px', className: 'text-center' }, { title: '货物信息', render: 'goodsInfos', width: '180px', className: 'text-center' }, { title: '装货地', className: 'text-center', index: 'loadingAddressArr', width: '120px', }, { title: '卸货地', className: 'text-center', index: 'unloadingAddressArr', width: '120px', }, { title: '用车需求', className: 'text-center', width: '150px', index: 'vehicleDemand' }, { title: '运费单价', className: 'text-center', width: '150px', index: 'freightPrice', }, { title: '结算依据', className: 'text-center', width: '120px', index: 'settlementBasis', }, { title: '货源状态', className: 'text-center', index: 'resourceStatus', type: 'badge', width: '120px', badge: { 1: { text: '待接单', color: 'success' }, 2: { text: '已接单', color: 'warning' }, }, }, { title: '截止时间', width: '170px', className: 'text-center', index: 'deadlineTime', }, { title: '发布时间', width: '170px', className: 'text-center', index: 'releaseTime', }, { title: '审核状态', className: 'text-center', index: 'auditStatus', type: 'badge', width: '170px', badge: { 1: { text: '待审核', color: 'warning' }, 2: { text: '审核通过', color: 'success' }, 3: { text: '不通过', color: 'default' }, 4: { text: '已取消', color: 'default' }, }, }, { title: '操作', fixed: 'right', width: '200px', className: 'text-left', buttons: [ { text: '货源审核', click: (_record) => this.audit(_record, 1), }, { text: '二维码', click: (_record) => this.assignedQrcode(_record), }, { text: '修改单价', click: (_record) => this.updatePrice(_record), }, { text: '取消货源', // click: (_record) => this.delOne(_record), }, { text: '再下一单', // click: (_record) => this.editOne(_record), }, { text: '重新指派', // click: (_record) => this.delOne(_record), }, ], }, ]; } add(): void { // this.modal // .createStatic(FormEditComponent, { i: { id: 0 } }) // .subscribe(() => this.st.reload()); } /** * 查询字段个数 */ get queryFieldCount(): number { return Object.keys(this.schema?.properties || {}).length; } /** * 伸缩查询条件 */ expandToggle(): void { this._$expand = !this._$expand; this.sf?.setValue('/_$expand', this._$expand); } /** * 重置表单 */ resetSF(): void { this.sf.reset(); this._$expand = false; } get selectedRows() { return this.st?.list.filter((item) => item.checked) || []; } // 获取录单员 getCatalogueMember() { const params = { }; // return this.service.request(this.service.$api_get_catalogue_member, params, 'GET').pipe( // map((res) => { // if (res) { // console.log(res) // } // }), // ); } selectChange(e: number) { console.log(e); this.resourceStatus = e; this.initST(); setTimeout(() => { this.st.load(); }, 500); } /** * 更新运费 */ updatePrice(item: any) { const modalRef = this.modal.create({ nzTitle: '修改单价', nzWidth: '600px', nzContent: SupplyManagementUpdatePriceComponent, nzComponentParams: { i: item, }, nzFooter: null, }); modalRef.afterClose.subscribe(res => { if (res) { this.st.reload(); } }) } /** * 二维码 */ assignedQrcode(item: any) { const modalRef = this.modal.create({ nzTitle: '二维码', nzWidth: '600px', nzContent: SupplyManagementQrcodePageComponent, nzComponentParams: { i: item, }, nzFooter: null, }); } tabChange(item: any) { console.log(item) } /** * 审核 */ audit(value: any, status?: any) { console.log(value) console.log(status) if(status === 2) { this.auditMany = true; } else { this.auditMany = false; } this.isVisible = true; } /** * 审核关闭弹窗 */ handleCancel(type: any) { this.isVisible = false } /** * 审核通过按钮 */ handleOK() { } }