import { Component, OnInit, ViewChild } from '@angular/core'; import { FormBuilder, FormGroup,Validators,FormControl } from '@angular/forms'; import { ActivatedRoute, Router } from '@angular/router'; import { SFComponent, SFNumberWidgetSchema, SFSchema, SFSelectWidgetSchema, SFTextareaWidgetSchema, SFUISchema } from '@delon/form'; import { _HttpClient } from '@delon/theme'; import { AmapPoiPickerComponent } from '@shared'; import { NzModalService } from 'ng-zorro-antd/modal'; import { PublishGoodsChooseFamifiarComponent } from '../choose-famifiar/choose-famifiar.component'; import { SupplyManagementService } from '../../services/supply-management.service'; import { debug } from 'console'; @Component({ selector: 'app-publish-goods-bulk-publish', templateUrl: './bulk-publish.component.html', styleUrls: ['./bulk-publish.component.less'] }) export class SupplyManagementBulkPublishComponent implements OnInit { validateForm1: FormGroup; newTempchecked = false; //是否存入新模板 sf1data: any; // 货源单设置回显 sf3data: any; // 货源单设置回显 sf4data: any; // 货源单设置回显 sf5data: any; // 货源单设置回显 sf7data: any; // 货源单设置回显 creatTime: any; // 货源单设置回显 modifyTime: any; // 货源单设置回显 totalFees: any; // 总数信息 id = this.route.snapshot.params.id; // // 单位 unit1 = '吨'; unit2 = '方'; unit3 = '保价费金额'; startInfo: any = []; endInfo: any = []; PageStatus = ''; dataList: any; constructor(private http: _HttpClient, fb: FormBuilder, private router: Router, private route: ActivatedRoute, private modalService: NzModalService, public service: SupplyManagementService) { this.validateForm1 = fb.group({ createTime: [null, []], modifyTime: [null, []], loadAddress0: [null, [Validators.required]], loadName0: [null, [Validators.required]], loadPhone0: [null, [Validators.required]], unloadAddress0: [null, [Validators.required]], unloadName0: [null, [Validators.required]], unloadPhone0: [null, [Validators.required]] }); } @ViewChild('sf1', { static: false }) sf1!: SFComponent; schema1: SFSchema = {}; ui1!: SFUISchema; @ViewChild('sf2', { static: false }) sf2!: SFComponent; schema2: SFSchema = {}; ui2!: SFUISchema; @ViewChild('sf3', { static: false }) sf3!: SFComponent; schema3: SFSchema = {}; ui3!: SFUISchema; @ViewChild('sf4', { static: false }) sf4!: SFComponent; schema4: SFSchema = {}; ui4!: SFUISchema; @ViewChild('sf7', { static: false }) sf7!: SFComponent; schema7: SFSchema = {}; ui7!: SFUISchema; ngOnInit(): void { if(this.route.snapshot?.queryParams?.sta === '1') { console.log('修改') this.PageStatus = '整车修改'; } else if(this.route.snapshot?.queryParams?.sta === '2') { this.PageStatus = '整车下一单'; } else if(this.route.snapshot?.queryParams?.sta === '3') { this.PageStatus = '大宗修改'; } else if(this.route.snapshot?.queryParams?.sta === '4') { this.PageStatus = '大宗下一单'; } this.initSF1(); // this.initSF2(); this.initSF3(); this.initSF4(); this.initSF6(); this.initdata(); } initSF1() { this.schema1 = { properties: { shipperAppUserName: { type: 'string', title: '货主', maxLength: 30, ui: { placeholder: '请输入' } }, enterpriseProjectId: { type: 'string', title: '项目', enum: [ { label: '项目1', value: '1' }, { label: '项目2', value: '2' } ], ui: { widget: 'select', placeholder: '请选择', allowClear: true // asyncData: () => // this.service.loadChildData2('0', '2').pipe( // map((data: any) => { // return data.map((m: any) => { // return { label: m.name, value: m.id }; // }); // }), // ), // change: (i) => this.updateCategory(i, '/categoryId2'), } as SFSelectWidgetSchema }, enterpriseInfoName: { type: 'string', title: '网络货运人', ui: { widget: 'text' }, }, deadlineTime: { title: '截至日期', type: 'string', format: 'date-time', ui: { placeholder: '请输入', format: 'yyyy-MM-dd HH:mm:ss' } }, dispatchId: { type: 'string', title: '调度员', enum: [ { label: '调度员1', value: '1' }, { label: '调度员2', value: '2' } ], ui: { widget: 'select', placeholder: '请选择', allowClear: true // asyncData: () => // this.service.loadChildData2('0', '2').pipe( // map((data: any) => { // return data.map((m: any) => { // return { label: m.name, value: m.id }; // }); // }), // ), // change: (i) => this.updateCategory(i, '/categoryId2'), } as SFSelectWidgetSchema } }, require: ['deadlineTime'] }; this.ui1 = { '*': { spanLabelFixed: 120, grid: { span: 8 } } }; } // initSF2() { // this.schema2 = { // properties: { // name1: { // type: 'string', // title: '发货模板', // ui: { // widget: 'custom', // placeholder: '请输入' // } // } // } // }; // this.ui2 = { // '*': { // spanLabelFixed: 90, // grid: { span: 12 } // } // }; // } initSF3() { this.schema3 = { properties: { goodsName: { type: 'string', title: '货物名称', ui: { widget: 'dict-select', params: { dictKey: 'GoodsName' }, placeholder: '请选择' } }, qita: { type: 'string', title: '', ui: { visibleIf: { goodsName: value => value === '3' } } } }, required: ['goodsName', ] }; this.ui3 = { '*': { spanLabelFixed: 90, grid: { span: 12 } }, $goodsName: { grid: { span: 12 } }, $qita: { grid: { span: 12 } } }; } initSF4() { this.schema4 = { properties: { freightPrice: { type: 'string', title: '运费单价', ui: { errors: { required: '请选择运费单价' }, widget: 'custom', placeholder: '请输入' } }, freightType: { type: 'string', title: '', ui: { hidden: true }, default: '1' }, rule: { type: 'string', title: '', ui: { widget: 'custom', errors: { required: '请选择运费取整规则' } } }, settlementBasis: { type: 'string', title: '', enum: [ { label: '以收货为准', value: '1' }, { label: '以发货为准', value: '2' } ], ui: { widget: 'select', placeholder: '结算依据', errors: { required: '请选择结算依据' } } as SFSelectWidgetSchema }, weight: { type: 'string', title: '货物数量', ui: { widget: 'custom', placeholder: '请输入', errors: { required: '请填写总重量' } } }, volume: { type: 'string', title: '', ui: { widget: 'custom', placeholder: '请输入' } }, number: { type: 'string', title: '', ui: { widget: 'custom', placeholder: '请输入' } }, maxWeight: { type: 'string', title: '车型/车长', enum: [ { label: '1', value: '1' }, { label: '2', value: '2' } ], ui: { widget: 'select', placeholder: '请选择车型', mode: 'multiple', errors: { required: '请选择车型' } // asyncData: () => // this.categoryService.loadChildData2('0', '2').pipe( // map((data: any) => { // return data.map((m: any) => { // return { label: m.name, value: m.id }; // }); // }), // ), // change: (i) => this.updateCategory(i, '/categoryId2'), } as SFSelectWidgetSchema }, maxCube: { type: 'string', title: '', enum: [ { label: '1', value: '1' }, { label: '2', value: '2' } ], ui: { widget: 'select', placeholder: '请选择车长', mode: 'multiple', errors: { required: '请选择车长' } // asyncData: () => // this.categoryService.loadChildData2('0', '2').pipe( // map((data: any) => { // return data.map((m: any) => { // return { label: m.name, value: m.id }; // }); // }), // ), // change: (i) => this.updateCategory(i, '/categoryId2'), } as SFSelectWidgetSchema } }, required: ['weight', 'maxWeight', 'maxCube', 'freightPrice', 'rule', 'settlementBasis'] }; this.ui4 = { '*': { spanLabelFixed: 90, grid: { span: 24 } }, $freightPrice: { grid: { span: 8 } }, $rule: { grid: { span: 8 } }, $settlementBasis: { grid: { span: 8 } }, $weight: { grid: { span: 8 } }, $volume: { grid: { span: 8 } }, $number: { grid: { span: 8 } }, $maxWeight: { grid: { span: 12 } }, $maxCube: { grid: { span: 12 } } }; } changeValue() { this.totalFees = Number(this.sf7?.value?.appendFee) + Number(this.sf7?.value?.oilCardPay) + Number(this.sf7?.value?.prePay) + Number(this.sf7?.value?.receiptPay) + Number(this.sf7?.value?.toPay) console.log(this.totalFees) } initSF6() { this.schema7 = { properties: { paymentDays: { type: 'string', title: '到货后', ui: { widget: 'custom', placeholder: '请输入', errors: { required: '请输入付款承诺天数' } } }, remarks: { type: 'string', title: '备注', maxLength: 200, ui: { widget: 'textarea', placeholder: '请输入', autosize: { minRows: 3, maxRows: 3 } } as SFTextareaWidgetSchema } }, required: ['paymentDays'] }; this.ui7 = { '*': { spanLabelFixed: 90, grid: { span: 24 } } }; } addStartInfo(event: any) { if (this.startInfo.length < 5) { const controlId = this.startInfo.length; this.startInfo.push({ detailedAddress: '', appUserName: '', contractTelephone: '', latitude: '', longitude: '', province: '', city: '', area: '', type: 1 }); this.validateForm1.addControl(`loadAddress${controlId}`, new FormControl(null, Validators.required)); this.validateForm1.addControl(`loadName${controlId}`, new FormControl(null, Validators.required)); this.validateForm1.addControl(`loadPhone${controlId}`, new FormControl(null, Validators.required)); } } subStartInfo(event: any, index: number, id?:any) { console.log(event, index, id) if(id) { this.service.request(this.service.$api_delete_Wholedeletebatch, [id]).subscribe((res) => { console.log(res) }) } this.startInfo.splice(index, 1); this.validateForm1.removeControl(`loadAddress${index}`); this.validateForm1.removeControl(`loadName${index}`); this.validateForm1.removeControl(`loadPhone${index}`); } addEndInfo(event: any) { if (this.addEndInfo.length < 5) { const controlId = this.endInfo.length; this.endInfo.push({ detailedAddress: '', appUserName: '', contractTelephone: '', latitude: '', longitude: '', province: '', city: '', area: '', type: 2 }); this.validateForm1.addControl(`unloadAddress${controlId}`, new FormControl(null, Validators.required)); this.validateForm1.addControl(`unloadName${controlId}`, new FormControl(null, Validators.required)); this.validateForm1.addControl(`unloadPhone${controlId}`, new FormControl(null, Validators.required)); } } subEndInfo(event: any, index: number, id?:any) { if(id) { this.service.request(this.service.$api_delete_Wholedeletebatch, [id]).subscribe((res) => { console.log(res) }) } console.log(event, index, id) this.endInfo.splice(index, 1); this.validateForm1.removeControl(`unloadAddress${index}`); this.validateForm1.removeControl(`unloadName${index}`); this.validateForm1.removeControl(`unloadPhone${index}`); } //指派熟车 chooseFamifiar() { this.modalService.create({ nzTitle: '指派熟车', nzContent: PublishGoodsChooseFamifiarComponent, nzWidth: 1300 }); } submit(): void { console.log(this.startInfo) if(typeof(this.validateForm1.value.modifyTime) !== 'string' ) { var c = new Date(this.validateForm1.value.modifyTime); this.validateForm1.value.modifyTime = c.getFullYear() + '-' + (c.getMonth() + 1) + '-' + c.getDate() + ' ' + c.getHours() + ':' + c.getMinutes() + ':' + c.getSeconds() } if(typeof(this.validateForm1.value.createTime) !== 'string' ) { var c = new Date(this.validateForm1.value.createTime); this.validateForm1.value.createTime = c.getFullYear() + '-' + (c.getMonth() + 1) + '-' + c.getDate() + ' ' + c.getHours() + ':' + c.getMinutes() + ':' + c.getSeconds() } // if (this.validateForm1.invalid) { // return; // } const params: any = { ...this.sf1.value, ...this.sf7.value, unLoadingPlaceDTOList: [...this.startInfo, ...this.endInfo,], goodsInfoDTOList: [ { ...this.sf4.value, ...this.sf3.value, maxWeight: this.sf4.value.maxWeight.join(','), maxCube: this.sf4.value.maxCube.join(',') } ] } params.freightPrice = this.totalFees console.log(this.sf7.value) console.log(params) if(this.PageStatus === '大宗修改') { this.requests(this.service.$api_set_bulkModify, params); } else if(this.PageStatus === '大宗下一单') { this.requests(this.service.$api_set_saveAnotherBulkOrder, params); } } requests(url: any, params: any) { this.service.request(url, params).subscribe((res: any) => { console.log(res) }) } // 打开地图 openMap(type: string, index: number) { const modalRef = this.modalService.create({ nzTitle: '', nzContent: AmapPoiPickerComponent, nzWidth: 900, nzOnOk: item => { const poi = item.poi; console.log(item.poi); const locList = poi.location.toString().split(','); switch (type) { case 'start': this.startInfo[index].detailedAddress = poi.district + poi.name; this.startInfo[index].longitude = locList[0]; this.startInfo[index].latitude = locList[1]; this.startInfo[index].province = poi.cityInfo.province; this.startInfo[index].city = poi.cityInfo.city; this.startInfo[index].area = poi.cityInfo.district; break; case 'end': this.endInfo[index].detailedAddress = poi.district + poi.name; this.endInfo[index].longitude = locList[0]; this.endInfo[index].latitude = locList[1]; this.endInfo[index].province = poi.cityInfo.province; this.endInfo[index].city = poi.cityInfo.city; this.endInfo[index].area = poi.cityInfo.district; break; default: break; } } }); } goBack() { window.history.go(-1); } // 初始化信息 initdata() { this.service.request(`${this.service.$api_get_getBulkDetail}`, {id:this.id}).subscribe((res) => { this.dataR(res); }) } asds(i: any) { console.log(i) } // 初始化信息 dataR (res: any) { // this.dataList = res; this.sf1data = { // shipperAppUserName: res?.shipperAppUserName || '', enterpriseProjectId: res?.enterpriseProjectId || '', enterpriseInfoName: res?.enterpriseInfoName || '', externalResourceCode: res?.externalResourceCode || '', dispatchId: res?.dispatchId || '', deadlineTime: res?.deadlineTime || '', } if(this.PageStatus === '大宗修改') { this.sf1data.id = res?.id; } res?.unLoadingPlaceVOList.forEach((element: any) => { if(element.type === 1) { const controlId = this.startInfo.length; if(this.PageStatus === '大宗修改') { this.startInfo.push({ detailedAddress: element.detailedAddress, appUserName: element.appUserName, contractTelephone: element.contractTelephone, latitude: element.latitude, longitude: element.longitude, province: element.province, city: element.city, area: element.area, type: element.type, id: element.id }) } else { this.startInfo.push({ detailedAddress: element.detailedAddress, appUserName: element.appUserName, contractTelephone: element.contractTelephone, latitude: element.latitude, longitude: element.longitude, province: element.province, city: element.city, area: element.area, type: element.type, }) } if(element.createTime) { this.creatTime = element?.createTime this.modifyTime = element?.modifyTime } this.validateForm1.addControl(`loadAddress${controlId}`, new FormControl(null, Validators.required)); this.validateForm1.addControl(`loadName${controlId}`, new FormControl(null, Validators.required)); this.validateForm1.addControl(`loadPhone${controlId}`, new FormControl(null, Validators.required)); } else if(element.type === 2) { const controlId = this.endInfo.length; if( this.PageStatus === '大宗修改') { this.endInfo.push({ detailedAddress: element?.detailedAddress, appUserName: element?.appUserName, contractTelephone: element?.contractTelephone, latitude: element.latitude, longitude: element.longitude, province: element.province, city: element.city, area: element.area, type: element.type, id: element.id }) } else { this.endInfo.push({ detailedAddress: element?.detailedAddress, appUserName: element?.appUserName, contractTelephone: element?.contractTelephone, latitude: element.latitude, longitude: element.longitude, province: element.province, city: element.city, area: element.area, type: element.type }) } this.validateForm1.addControl(`unloadAddress${controlId}`, new FormControl(null, Validators.required)); this.validateForm1.addControl(`unloadName${controlId}`, new FormControl(null, Validators.required)); this.validateForm1.addControl(`unloadPhone${controlId}`, new FormControl(null, Validators.required)); } }); this.sf3data = { goodsName: res?.goodsInfoVOList[0]?.goodsName || '', } this.sf4data = { // weight: res?.goodsInfoVOList[0]?.weight || '', // volume: res?.goodsInfoVOList[0]?.volume || '', // vehicleDemand: res?.goodsInfoVOList[0]?.vehicleDemand || '', // maxCube: res?.goodsInfoVOList[0]?.maxCube?.split(',') || '', // maxWeight: res?.goodsInfoVOList[0]?.maxWeight?.split(',') || '', // number: res?.goodsInfoVOList[0]?.number || '', // goodsType: res?.goodsInfoVOList[0]?.goodsType || '', // modifyTime: res?.goodsInfoVOList[0]?.modifyTime || '', // modifyUserId: res?.goodsInfoVOList[0]?.modifyUserId || '', // resourceId: res?.goodsInfoVOList[0]?.resourceId || '', // rule: res?.goodsInfoVOList[0]?.rule || '', // settlementBasis: res?.goodsInfoVOList[0]?.settlementBasis || '', freightPrice: res?.goodsInfoVOList[0]?.freightPrice || '', freightType: res?.goodsInfoVOList[0]?.freightType || '', rule: res?.goodsInfoVOList[0]?.rule || '', settlementBasis: res?.goodsInfoVOList[0]?.settlementBasis || '', weight: res?.goodsInfoVOList[0]?.weight || '', volume: res?.goodsInfoVOList[0]?.volume || '', number: res?.goodsInfoVOList[0]?.number || '', maxWeight: res?.goodsInfoVOList[0]?.maxWeight?.split(',') || '', maxCube: res?.goodsInfoVOList[0]?.maxCube?.split(',') || '' } if(this.PageStatus === '大宗修改') { this.sf4data.id = res?.goodsInfoVOList[0]?.id; } this.totalFees = res?.freightPrice || '0'; this.sf7data = { paymentDays: res?.paymentDays || '', remarks: res?.remarks || '' }; } }