Merge branch 'develop' of https://gitlab.eascs.com/tms-ui/tms-obc-web into develop
This commit is contained in:
		| @ -1,7 +1,7 @@ | ||||
| <!-- | ||||
|  * @Author: your name | ||||
|  * @Date: 2021-12-03 11:10:14 | ||||
|  * @LastEditTime: 2021-12-20 17:11:27 | ||||
|  * @LastEditTime: 2021-12-21 11:19:15 | ||||
|  * @LastEditors: Please set LastEditors | ||||
|  * @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE | ||||
|  * @FilePath: \tms-obc-web\src\app\routes\supply-management\components\vehicle\vehicle.component.html | ||||
| @ -38,10 +38,15 @@ | ||||
| </nz-card> | ||||
|  | ||||
| <nz-card> | ||||
|   <nz-tabset (nzSelectedIndexChange)="selectChange($event)" [nzTabBarExtraContent]="extraTemplate"> | ||||
|     <nz-tab *ngFor="let tab of tabs; let i = index"  [nzTitle]="tab.name + ' (' + tab.count + ') '" (nzClick)="tabChange(i)"> | ||||
|     </nz-tab> | ||||
|   </nz-tabset> | ||||
|   <nz-tabset (nzSelectedIndexChange)="selectChange($event)"  | ||||
|   [nzTabBarExtraContent]="extraTemplate"> | ||||
|   <nz-tab [nzTitle]="'全部'"></nz-tab> | ||||
|   <nz-tab [nzTitle]="'待发车('+tabs?.stayQuantity+')'"></nz-tab> | ||||
|   <nz-tab [nzTitle]="'运输中('+tabs?.receivedQuantity+')'"></nz-tab> | ||||
|   <nz-tab [nzTitle]="'待签收('+tabs?.cancelQuantity+')'"></nz-tab> | ||||
|   <nz-tab [nzTitle]="'已完成'"></nz-tab> | ||||
|   <nz-tab [nzTitle]="'已取消'"></nz-tab> | ||||
| </nz-tabset> | ||||
|   <div style="margin-top: 15px;"> | ||||
|     <st | ||||
|     #st | ||||
|  | ||||
| @ -38,6 +38,7 @@ export class OrderManagementBulkComponent implements OnInit { | ||||
|   columnsFloat: STColumn[] = []; | ||||
|   columnsFloatView: STColumn[] = []; | ||||
|   demoValue: any; | ||||
|   resourceStatus: any; | ||||
|   datass: any = [ | ||||
|     { | ||||
|     one: '1', | ||||
| @ -52,51 +53,54 @@ export class OrderManagementBulkComponent implements OnInit { | ||||
|     id: 2 | ||||
|    }, | ||||
| ]; | ||||
|   tabs = [  { | ||||
|     name: '全部', | ||||
|     type: 5, | ||||
|     count: 0, | ||||
|   }, | ||||
|   { | ||||
|     name: '待发车', | ||||
|     type: 5, | ||||
|     count: 0, | ||||
|   }, | ||||
|   { | ||||
|     name: '运输中', | ||||
|     type: 5, | ||||
|     count: 0, | ||||
|   }, | ||||
|   { | ||||
|     name: '代签收', | ||||
|     type: 5, | ||||
|     count: 0, | ||||
|   }, | ||||
|   { | ||||
|     name: '已完成', | ||||
|     type: 5, | ||||
|     count: 0, | ||||
|   }, | ||||
|   { | ||||
|     name: '已取消', | ||||
|     type: 5, | ||||
|     count: 0, | ||||
|   }, | ||||
|   ]; | ||||
| tabs = { | ||||
|   cancelQuantity: 0, | ||||
|   receivedQuantity: 0, | ||||
|   stayQuantity: 0 | ||||
| }; | ||||
|   constructor(public service: OrderManagementService, private modal: NzModalService,public service2: ShipperBaseService) { } | ||||
|  | ||||
|   /** | ||||
|  * 查询参数 | ||||
|  */ | ||||
|   get reqParams() { | ||||
|    get reqParams() { | ||||
|     const a:any = {}; | ||||
|     if(this.resourceStatus) { | ||||
|       a.billStatus = this.resourceStatus + 1; | ||||
|     } | ||||
|     return { | ||||
|       ...a, | ||||
|       ...this.sf?.value, | ||||
|     }; | ||||
|   } | ||||
|   get selectedRows() { | ||||
|     return this.st?.list.filter((item) => item.checked) || []; | ||||
|   } | ||||
|   getGoodsSourceStatistical() { | ||||
|     this.service.request(this.service.$api_getBulkStatistical).subscribe(res => { | ||||
|       if (res) { | ||||
|        res.forEach((element: any) => { | ||||
|         if(element.statusLabel === '待发车') { | ||||
|           this.tabs.stayQuantity = element.quantity | ||||
|         } else if (element.statusLabel === '待接单') { | ||||
|           this.tabs.receivedQuantity = element.quantity | ||||
|         } else if (element.statusLabel === '待签收') { | ||||
|           this.tabs.cancelQuantity = element.quantity | ||||
|         }  | ||||
|        }); | ||||
|       } | ||||
|     }) | ||||
|   } | ||||
|   selectChange(e: number) { | ||||
|     console.log(e); | ||||
|     this.resourceStatus = e; | ||||
|     this.initST(); | ||||
|     setTimeout(() => { | ||||
|       this.st.load(); | ||||
|     }, 500); | ||||
|   } | ||||
|   ngOnInit(): void { | ||||
|     this.getGoodsSourceStatistical() | ||||
|     this.initSF(); | ||||
|     this.initST(); | ||||
|     this.initSTFloat(); | ||||
| @ -443,15 +447,7 @@ export class OrderManagementBulkComponent implements OnInit { | ||||
|           }, | ||||
|           { | ||||
|             text: '取消订单', | ||||
|             click: (_record) => this.confirmReceipt(_record), | ||||
|           }, | ||||
|           { | ||||
|             text: '确认发车', | ||||
|             click: (_record) => this.sureDepart(_record), | ||||
|           }, | ||||
|           { | ||||
|             text: '确认到车', | ||||
|             click: (_record) => this.sureArrive(_record), | ||||
|             click: (_record) => this.cancellation(_record), | ||||
|           }, | ||||
|         ], | ||||
|       }, | ||||
| @ -548,9 +544,6 @@ export class OrderManagementBulkComponent implements OnInit { | ||||
|     ); | ||||
|   } | ||||
|  | ||||
|   selectChange(e: number) { | ||||
|     console.log(e); | ||||
|   } | ||||
|   /** | ||||
|    * 导入货源 | ||||
|    */ | ||||
| @ -606,14 +599,25 @@ export class OrderManagementBulkComponent implements OnInit { | ||||
|    *变更运费 | ||||
|    */ | ||||
|    updateFreight(item: any) { | ||||
|     const modalRef = this.modal.create({ | ||||
|       nzTitle: '变更运费', | ||||
|       nzWidth: '50%', | ||||
|       nzContent: UpdateFreightComponent, | ||||
|       nzComponentParams: { | ||||
|         i: item | ||||
|       }, | ||||
|       nzFooter: null | ||||
|     this.service.request(this.service.$api_getFreightChangeBulkDetail, { id: item.id }).subscribe(data => { | ||||
|       if (data) { | ||||
|         const modal = this.modal.create({ | ||||
|           nzTitle: '变更运费', | ||||
|           nzWidth: 580, | ||||
|           nzContent: UpdateFreightComponent, | ||||
|           nzComponentParams: { data }, | ||||
|           nzOnOk: sin => { | ||||
|             this.service.request(this.service.$api_insertFreightChangeBulk, { billId: item.id, ...sin.sf.value }).subscribe(res => { | ||||
|               if (res) { | ||||
|                 this.service.msgSrv.success('变更运费成功'); | ||||
|                 modal.destroy(); | ||||
|                 this.st.reload(); | ||||
|               } | ||||
|             }); | ||||
|             return false; | ||||
|           } | ||||
|         }); | ||||
|       } | ||||
|     }); | ||||
|   } | ||||
|   | ||||
| @ -624,19 +628,6 @@ export class OrderManagementBulkComponent implements OnInit { | ||||
|       nzTitle: '确认签收', | ||||
|       nzWidth: '50%', | ||||
|       nzContent: ConfirReceiptComponent, | ||||
|       nzComponentParams: { | ||||
|         i: item | ||||
|       }, | ||||
|       nzFooter: null | ||||
|     }); | ||||
|   } | ||||
|   //  *确认发车 | ||||
|     | ||||
|    sureDepart(item: any) { | ||||
|     const modalRef = this.modal.create({ | ||||
|       nzTitle: '确认发车', | ||||
|       nzWidth: '50%', | ||||
|       nzContent: SureDepartComponent, | ||||
|       nzComponentParams: { | ||||
|         i: item, | ||||
|         Status: 1 | ||||
| @ -644,20 +635,35 @@ export class OrderManagementBulkComponent implements OnInit { | ||||
|       nzFooter: null | ||||
|     }); | ||||
|   } | ||||
|   //  *确认到车 | ||||
|     | ||||
|    sureArrive(item: any) { | ||||
|     const modalRef = this.modal.create({ | ||||
|       nzTitle: '确认到车', | ||||
|       nzWidth: '50%', | ||||
|       nzContent: SureArriveComponent, | ||||
|       nzComponentParams: { | ||||
|         i: item | ||||
|       }, | ||||
|       nzFooter: null | ||||
|   userAction() { | ||||
|     let params: any[] = []; | ||||
|     this.selectedRows.forEach(item => { | ||||
|       params.push(item.id); | ||||
|     }); | ||||
|     console.log(this.selectedRows) | ||||
|     console.log(params) | ||||
|     this.service.request(this.service.$api_get_batchSignBulkOrder, params).subscribe(res => { | ||||
|       if (res) { | ||||
|         console.log(res); | ||||
|       } else { | ||||
|         this.service.msgSrv.error(res.msg); | ||||
|       } | ||||
|     }); | ||||
|   } | ||||
|   userAction() { | ||||
|        | ||||
|   } | ||||
|       // 取消订单 | ||||
|       cancellation(item: any) { | ||||
|         // api_get_cancelAnOrder | ||||
|         this.modal.confirm({ | ||||
|           nzTitle: '<b>确定取消该订单吗?</b>', | ||||
|           nzContent: `<b>取消后无法恢复,请确认</b>`, | ||||
|           nzOnOk: () => | ||||
|             this.service.request(this.service.$api_get_cancelAnOrder, {id: item.id}).subscribe((res) => { | ||||
|               if (res === true) { | ||||
|                 this.service.msgSrv.success('操作成功!'); | ||||
|                 this.st?.reload(); | ||||
|                 this.initST(); | ||||
|               } | ||||
|             }), | ||||
|         }) | ||||
|       } | ||||
| } | ||||
|  | ||||
| @ -1,138 +1,165 @@ | ||||
| <!-- | ||||
|  * @Author: your name | ||||
|  * @Date: 2021-12-03 15:31:52 | ||||
|  * @LastEditTime: 2021-12-07 15:09:44 | ||||
|  * @LastEditTime: 2021-12-21 14:20:15 | ||||
|  * @LastEditors: Please set LastEditors | ||||
|  * @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE | ||||
|  * @FilePath: \tms-obc-web\src\app\routes\order-management\components\vehicle-detail\vehicle-detail.component.html | ||||
| --> | ||||
| <page-header-wrapper [title]="''" [logo]="logo"> | ||||
| <page-header-wrapper [title]="''" [logo]="logo" [content]="headerContent"> | ||||
|   <ng-template #logo> | ||||
|     <button nz-button nz-tooltip nzTooltipTitle="返回上一页" (click)="goBack()"> | ||||
|       <i nz-icon nzType="left" nzTheme="outline"></i> | ||||
|     </button> | ||||
|   </ng-template> | ||||
| </page-header-wrapper> | ||||
| <nz-card> | ||||
|   <nz-spin *ngIf="!i" class="modal-spin"></nz-spin> | ||||
|   <div nz-row> | ||||
|     <div nz-col nzSpan="4"> | ||||
|       <sv-container class="bdr"> | ||||
|         <sv label="订单号" col="1">{{ i?.no }}</sv> | ||||
|         <sv-title class="text-center text-lg">待接单</sv-title> | ||||
|         <sv-title> | ||||
|           <div class=""> | ||||
|             <a class="btn-size" (click)="hand()">指派车队长</a> | ||||
|             <!-- <a class="btn-size m-lg mr-lg">取消货源</a> | ||||
|             <a class="btn-size">再下一单</a> --> | ||||
|           </div> | ||||
|         </sv-title> | ||||
|       </sv-container> | ||||
|   <ng-template #headerContent> | ||||
|     <div class="mb-xs" nz-row> | ||||
|       <h4 class="ml-md">订单号: {{ i?.billCode }}</h4> | ||||
|     </div> | ||||
|     <div nz-col nzSpan="16" class="approval-status"> | ||||
|       <nz-steps style="width: 80%; margin: 0 auto" [nzLabelPlacement]="'vertical'"> | ||||
|         <nz-step nzStatus="finish" nzIcon="user" [nzDescription]="i?.createAt" nzTitle="下单"></nz-step> | ||||
|         <nz-step nzStatus="finish" nzIcon="solution" nzTitle="完结"></nz-step> | ||||
|     <div nz-row style="display: flex; justify-content: end;"> | ||||
|       <div nz-col nzSpan="10"> | ||||
|         <button nz-button  >取消货源</button> | ||||
|         <button nz-button  | ||||
|          >重新指派</button> | ||||
|         <button nz-button  >修改货源</button> | ||||
|         <button nz-button nzType="primary" nzGhost >再下一单</button> | ||||
|       </div> | ||||
|     </div> | ||||
|     <div sv-container> | ||||
|       <sv label="货主">{{ i?.goodsInfoList[0].shipperAppUserName }} </sv> | ||||
|       <sv label="所属项目">{{i?.enterpriseProjectId}}</sv> | ||||
|       <sv label="服务类型">{{i?.createUserId}}</sv> | ||||
|       <sv label="录单员">{{i?.dispatchName}} 18100000000 </sv> | ||||
|       <sv label="调度员">{{i?.serviceTypeLabel}} </sv> | ||||
|     </div> | ||||
|   </ng-template> | ||||
| </page-header-wrapper> | ||||
| <nz-card nzTitle="货源进度"> | ||||
|   <div class="approval-status"> | ||||
|     <div style="width: 60%; margin: 0 auto"> | ||||
|       <nz-steps [nzLabelPlacement]="'vertical'"> | ||||
|         <nz-step [nzStatus]="i?.resourceStatus !== '1'?'finish':'process'" nzIcon="solution" | ||||
|           [nzDescription]="i?.createAt" nzTitle="下单"></nz-step> | ||||
|         <nz-step *ngIf="i?.resourceStatus === '1' || i?.resourceStatus === '2' " | ||||
|           [nzStatus]="i?.resourceStatus=== '1'? 'wait':'finish'" nzIcon="file-done" [nzTitle]="'接单'"></nz-step> | ||||
|         <nz-step nzStatus="finish" nzIcon="close-circle" nzTitle="取消货源" *ngIf="i?.resourceStatus === '3'"></nz-step> | ||||
|       </nz-steps> | ||||
|     </div> | ||||
|   </div> | ||||
|   <nz-divider></nz-divider> | ||||
|   <div sv-container *ngIf="i"> | ||||
|     <sv label="项目名称">{{ i?.owner }}</sv> | ||||
|     <sv label="调度员">32943898021309809423</sv> | ||||
|     <sv label="承诺付款时间">3321944288191034921</sv> | ||||
|     <sv label="服务类型">18112345678</sv> | ||||
|   </div> | ||||
|   <nz-divider></nz-divider> | ||||
|   <div nz-row> | ||||
|     <div nz-col nzSpan="6"> | ||||
|       <div class="source-info"> | ||||
|         <h3>装卸货信息</h3> | ||||
|         <p>装货地:广东省深圳市龙岗区怡亚通大厦</p> | ||||
|         <p>联系人:奥利给/13680058545</p> | ||||
|         <p>卸货地:广东省深圳市福田区岗厦村9巷8号405(新村)</p> | ||||
|         <p>联系人:花花世界/13680058545</p> | ||||
|         <p>发货日期:广东省深圳市福田区岗厦村9巷8号405(新村)</p> | ||||
|         <p>卸货日期:花花世界/13680058545</p> | ||||
|       </div> | ||||
|     </div> | ||||
|     <div nz-col nzSpan="5"> | ||||
|       <div class="source-info bdr bdl pl-md"> | ||||
|         <h3>货物信息</h3> | ||||
|         <p>货物名称:广东省深圳市龙岗区怡亚通大厦</p> | ||||
|         <p>重量/体积:广东省深圳市福田区岗厦村9巷8号405(新村)</p> | ||||
|         <p>车型/车长:花花世界/13680058545</p> | ||||
|       </div> | ||||
|     </div> | ||||
|     <div nz-col nzSpan="5"> | ||||
|       <div class="source-info bdr bdl pl-md"> | ||||
|         <h3>托运信息</h3> | ||||
|         <p>公司名称:广东省深圳市龙岗区怡亚通大厦</p> | ||||
|         <p>联系人:广东省深圳市福田区岗厦村9巷8号405(新村)</p> | ||||
|       </div> | ||||
|     </div> | ||||
|     <div nz-col nzSpan="5"> | ||||
|       <div class="source-info bdr pl-md"> | ||||
|         <h3>承运信息</h3> | ||||
|         <p>司机:广东省深圳市龙岗区怡亚通大厦</p> | ||||
|         <p>车牌号:广东省深圳市福田区岗厦村9巷8号405(新村)</p> | ||||
|         <p>车型/车长/承重:{{'拖车'}} | {{'4.5米'}} | {{'15吨'}}</p> | ||||
|       </div> | ||||
|     </div> | ||||
|     <div class="source-info pl-md"> | ||||
|       <h3>补充信息</h3> | ||||
|       <p style="color: #1890ff;">协议附件</p> | ||||
|       <p style="color: #1890ff;"> 装车附件</p> | ||||
|       <p style="color: #1890ff;">卸货附件</p> | ||||
|       <p style="color: #1890ff;">回单附件</p> | ||||
|     </div> | ||||
|   </div> | ||||
|   <nz-divider></nz-divider> | ||||
|   <div nz-row> | ||||
|     <div class="freight-info-box"> | ||||
|       <h3>运费信息</h3> | ||||
|       <div class="text-right"> | ||||
|         <p><label class="freigth-label">收款人:</label><span>{{400 | currency }}</span></p> | ||||
|         <p><label class="freigth-label">预付:</label><span>{{400 | currency }}</span></p> | ||||
|         <p><label class="freigth-label">油卡:</label><span>{{400 | currency }}</span></p> | ||||
|         <p><label class="freigth-label">到付:</label><span>{{400 | currency }}</span></p> | ||||
|         <p><label class="freigth-label">回单付:</label><span>{{400 | currency}}</span></p> | ||||
|         <p><label class="freigth-label">附加费:</label><span>{{400 | currency }}</span></p> | ||||
|       </div> | ||||
|     </div> | ||||
|     <nz-divider></nz-divider> | ||||
|     <div class="freight-info-box" nz-row> | ||||
|       <div nz-col nzSpan="24"> | ||||
|         <h3 class="text-right"><label>总计 :</label> <span class="text-error-dark text-xl">{{400 | currency }}</span></h3> | ||||
|         <h3 class="text-right">未支付</h3> | ||||
|       </div> | ||||
| </nz-card> | ||||
|  | ||||
|     </div> | ||||
|   </div> | ||||
|   <nz-divider></nz-divider> | ||||
|   <div style="display: flex; justify-content: space-evenly;"> | ||||
|     <div> | ||||
|       <div> | ||||
|         <span class="leftPadding">司机运输费</span> | ||||
|         <span class="leftPadding">1000.00</span> | ||||
|         <span class="leftPadding">未支付</span> | ||||
| <nz-card nzTitle="装卸货信息(一装一卸)"> | ||||
|   <div class="mt-md"> | ||||
|     <div nz-row [nzGutter]="24"> | ||||
|       <div nz-col [nzSpan]="12"> | ||||
|         <div class="handling-info p-md"> | ||||
|           <div class="flex" *ngFor="let item of i?.unLoadingPlaceList"> | ||||
|             <div *ngIf="item.type === '1'" class="loading-row"> | ||||
|               <div class="handling-info-icon loading-bg">装</div> | ||||
|               <div class="info"> | ||||
|                 <h4>装货地:{{item?.province}}{{item.city}}{{item.area}}{{item.detailedAddress}}</h4> | ||||
|                 <p>联系人:{{item.appUserName}}/{{item.contractTelephone}}</p> | ||||
|               </div> | ||||
|             </div> | ||||
|           </div> | ||||
|           <p class="time-info">装货时间:{{i?.loadingTime}}</p> | ||||
|         </div> | ||||
|       </div> | ||||
|     </div> | ||||
|     <div> | ||||
|       <div> | ||||
|         <span class="leftPadding">司机运输费</span> | ||||
|         <span class="leftPadding">1000.00</span> | ||||
|         <span class="leftPadding">未支付</span> | ||||
|       </div> | ||||
|       <div> | ||||
|         <span class="leftPadding">附加费</span> | ||||
|         <span class="leftPadding">1000.00</span> | ||||
|         <span class="leftPadding">未支付</span> | ||||
|       <div nz-col [nzSpan]="12"> | ||||
|         <div class="handling-info p-md"> | ||||
|           <div class="flex" *ngFor="let item of i?.unLoadingPlaceList"> | ||||
|             <div *ngIf="item.type === '2'" class="loading-row"> | ||||
|               <div class="handling-info-icon unloaing-bg">卸</div> | ||||
|               <div class="info"> | ||||
|                 <h4>卸货地:{{item?.province}}{{item.city}}{{item.area}}{{item.detailedAddress}}</h4> | ||||
|                 <p>联系人:{{item.appUserName}}/{{item.contractTelephone}}</p> | ||||
|               </div> | ||||
|             </div> | ||||
|           </div> | ||||
|           <p class="time-info">卸货时间:{{i?.unloadingTime}}</p> | ||||
|         </div> | ||||
|       </div> | ||||
|     </div> | ||||
|   </div> | ||||
|   <nz-divider></nz-divider> | ||||
| </nz-card> | ||||
| <nz-card nzTitle="基本信息"> | ||||
|   <sv-container col="1"> | ||||
|       <sv label="网络货运人"> | ||||
|         {{i?.goodsName}} | ||||
|       </sv> | ||||
|       <sv label="货物名称"> | ||||
|         {{i?.weight}}顿,{{i?.volume}}方,{{i?.number}}件 | ||||
|       </sv> | ||||
|   </sv-container> | ||||
|   <sv-container col="2"> | ||||
|       <sv label="货物数量"> | ||||
|         {{i?.goodsName}} | ||||
|       </sv> | ||||
|       <sv label="用车需求"> | ||||
|         {{i?.weight}}顿,{{i?.volume}}方,{{i?.number}}件 | ||||
|       </sv> | ||||
|       <sv label="承运司机"> | ||||
|         {{i?.weight}}顿,{{i?.volume}}方,{{i?.number}}件 | ||||
|       </sv> | ||||
|       <sv label="车型车长载重"> | ||||
|         {{i?.weight}}顿,{{i?.volume}}方,{{i?.number}}件 | ||||
|       </sv> | ||||
|   </sv-container> | ||||
|  | ||||
|  | ||||
| </nz-card> | ||||
| <nz-card nzTitle="保险待定"> | ||||
| </nz-card> | ||||
|  | ||||
| <nz-card nzTitle="运费信息"> | ||||
|   <st #st [data]="i?.auditRecordList" [columns]="logColumns" [ps]="0" [page]="{ show: false, showSize: false }"> | ||||
|  | ||||
|   </st> | ||||
|   <div>总计:{{i?.total | currency: '¥'}}(运费¥3500.00,附加运费¥191.98,附加费率3.5%)</div> | ||||
|   <div>收款人:</div> | ||||
| </nz-card> | ||||
|  | ||||
| <nz-card nzTitle="附件信息"> | ||||
|   <sv-container> | ||||
|     <sv label="协议附件"> | ||||
|       {{i?.supplementaryInformationVO?.stateReceipt?'是':'否'}} | ||||
|     </sv> | ||||
|   </sv-container> | ||||
|   <sv-container col="2" class="mt-md"> | ||||
|     <sv label="装货凭证"> | ||||
|       {{i?.supplementaryInformationVO?.remarks}} | ||||
|     </sv> | ||||
|     <sv label="卸货凭证"> | ||||
|       {{i?.supplementaryInformationVO?.remarks}} | ||||
|     </sv> | ||||
|   </sv-container> | ||||
| </nz-card> | ||||
| <nz-card nzTitle="补充信息"> | ||||
|   <sv-container> | ||||
|     <sv label="是否回单"> | ||||
|       {{i?.supplementaryInformationVO?.stateReceipt?'是':'否'}} | ||||
|     </sv> | ||||
|     <sv label="回单类型"> | ||||
|       {{i?.supplementaryInformationVO?.receiptTypeLabel}} | ||||
|     </sv> | ||||
|     <sv label="联系人"> | ||||
|       {{i?.supplementaryInformationVO?.receiptUserName}} / {{i?.supplementaryInformationVO?.phon}} | ||||
|     </sv> | ||||
|     <sv label="所在地区"> | ||||
|       {{i?.supplementaryInformationVO?.area}} | ||||
|     </sv> | ||||
|     <sv label="详细地址"> | ||||
|       {{i?.supplementaryInformationVO?.address}} | ||||
|     </sv> | ||||
|   </sv-container> | ||||
|   <sv-container col="1" class="mt-md"> | ||||
|     <sv label="备注"> | ||||
|       {{i?.supplementaryInformationVO?.remarks}} | ||||
|     </sv> | ||||
|   </sv-container> | ||||
| </nz-card> | ||||
|  | ||||
| <nz-card> | ||||
|   <div nz-row> | ||||
|     <nz-card nzTitle="轨迹信息" style="width: 100%;" > | ||||
|       <div nz-row >  | ||||
|  | ||||
| @ -1,7 +1,7 @@ | ||||
| /* | ||||
|  * @Author: your name | ||||
|  * @Date: 2021-12-03 15:31:52 | ||||
|  * @LastEditTime: 2021-12-20 09:35:33 | ||||
|  * @LastEditTime: 2021-12-21 11:22:23 | ||||
|  * @LastEditors: Please set LastEditors | ||||
|  * @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE | ||||
|  * @FilePath: \tms-obc-web\src\app\routes\order-management\components\vehicle-detail\vehicle-detail.component.ts | ||||
| @ -37,13 +37,18 @@ export class OrderManagementVehicleDetailComponent implements OnInit { | ||||
|   } | ||||
|  | ||||
|   ngOnInit(): void { | ||||
|     this.service.http.get(`/user/${this.id}?_allow_anonymous=true&_allow_badcode=true`).subscribe(res => { | ||||
|       console.log(res); | ||||
|       this.i = res | ||||
|     }); | ||||
|     console.log(this.id) | ||||
|     this.initData() | ||||
|   } | ||||
|  | ||||
|  | ||||
|   initData() { | ||||
|     this.service.request(this.service.$api_get_getWholeBillDetail, {id: this.id}).subscribe(res => { | ||||
|       console.log(res) | ||||
|       if (res) { | ||||
|         this.i =res; | ||||
|       } | ||||
|     }) | ||||
|   } | ||||
|  | ||||
|   hand() { | ||||
|     this.modalService.create({ | ||||
|  | ||||
| @ -1,7 +1,7 @@ | ||||
| <!-- | ||||
|  * @Author: your name | ||||
|  * @Date: 2021-12-03 11:10:14 | ||||
|  * @LastEditTime: 2021-12-20 17:07:17 | ||||
|  * @LastEditTime: 2021-12-21 13:48:55 | ||||
|  * @LastEditors: Please set LastEditors | ||||
|  * @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE | ||||
|  * @FilePath: \tms-obc-web\src\app\routes\supply-management\components\vehicle\vehicle.component.html | ||||
| @ -38,10 +38,15 @@ | ||||
| </nz-card> | ||||
|  | ||||
| <nz-card> | ||||
|   <nz-tabset (nzSelectedIndexChange)="selectChange($event)" > | ||||
|     <nz-tab *ngFor="let tab of tabs; let i = index"  [nzTitle]="tab.name + ' (' + tab.count + ') '" (nzClick)="tabChange(i)"> | ||||
|     </nz-tab> | ||||
|   </nz-tabset> | ||||
|   <nz-tabset (nzSelectedIndexChange)="selectChange($event)"  | ||||
|   [nzTabBarExtraContent]="extraTemplate"> | ||||
|   <nz-tab [nzTitle]="'全部'"></nz-tab> | ||||
|   <nz-tab [nzTitle]="'待发车('+tabs?.stayQuantity+')'"></nz-tab> | ||||
|   <nz-tab [nzTitle]="'运输中('+tabs?.receivedQuantity+')'"></nz-tab> | ||||
|   <nz-tab [nzTitle]="'待签收('+tabs?.cancelQuantity+')'"></nz-tab> | ||||
|   <nz-tab [nzTitle]="'已完成'"></nz-tab> | ||||
|   <nz-tab [nzTitle]="'已取消'"></nz-tab> | ||||
| </nz-tabset> | ||||
|   <div style="margin-top: 15px;"> | ||||
|     <st | ||||
|     #st | ||||
| @ -55,7 +60,7 @@ | ||||
|   | ||||
|     > | ||||
|     <ng-template st-row="billCode" let-item let-index="index"> | ||||
|       <a [routerLink]="'/waybill-management/vehicle-detail/'+item.id">{{item.wayBillCode}}</a> | ||||
|       <a [routerLink]="'/order-management/vehicle-detail/'+item.id">{{item.wayBillCode}}</a> | ||||
|       <div> | ||||
|         <span>{{item?.billStatusLabel}}</span> | ||||
|       </div> | ||||
| @ -205,3 +210,21 @@ | ||||
|     <button nz-button nzType="primary" (click)="handleOK()">确定</button> | ||||
|   </ng-template> | ||||
| </nz-modal> | ||||
| <ng-template #extraTemplate> | ||||
|   <div> | ||||
|     <button  nz-button nzType="primary" nzGhost nz-popconfirm | ||||
| [nzPopconfirmTitle]="enable" (nzOnConfirm)="userAction()" nzPopconfirmPlacement="bottomRight"> | ||||
| 批量签收 | ||||
| </button>  | ||||
|   </div> | ||||
| </ng-template> | ||||
| <ng-template #enable> | ||||
|   <div class="ant-popover-message"> | ||||
|     <i nz-icon nzType="info-circle" nzTheme="fill"></i> | ||||
|     <div class="ant-popover-message-title ng-star-inserted self-ant-popover-title" style="font-size: 16px">已选择{{selectedRows?.length || 0}}条订单,确认批量签收吗? | ||||
|     </div> | ||||
|     <div class="ant-popover-message-title ng-star-inserted"> | ||||
|       签收后不可再修改运费,请确保运费等信息准确无误后,再进行签收。 | ||||
|     </div> | ||||
|   </div> | ||||
| </ng-template> | ||||
| @ -6,6 +6,8 @@ import { ShipperBaseService } from '@shared'; | ||||
| import { NzModalService } from 'ng-zorro-antd/modal'; | ||||
| import { of } from 'rxjs'; | ||||
| import { map } from 'rxjs/operators'; | ||||
| import { UpdateFreightComponent } from '../../modal/bulk/update-freight/update-freight.component'; | ||||
| import { OneCarOrderCancelComponent } from '../../modal/vehicle/cancel/cancel.component'; | ||||
| import { VehicleConfirReceiptComponent } from '../../modal/vehicle/confir-receipt/confir-receipt.component'; | ||||
| import { VehicleSureArriveComponent } from '../../modal/vehicle/sure-arrive/sure-arrive.component'; | ||||
| import { VehicleSureDepartComponent } from '../../modal/vehicle/sure-depart/sure-depart.component'; | ||||
| @ -51,47 +53,17 @@ export class OrderManagementVehicleComponent implements OnInit { | ||||
|     id: 2 | ||||
|    }, | ||||
| ]; | ||||
|   tabs = [  { | ||||
|     name: '全部', | ||||
|     type: 5, | ||||
|     count: 0, | ||||
|   }, | ||||
|   { | ||||
|     name: '待发车', | ||||
|     type: 5, | ||||
|     count: 0, | ||||
|   }, | ||||
|   { | ||||
|     name: '运输中', | ||||
|     type: 5, | ||||
|     count: 0, | ||||
|   }, | ||||
|   { | ||||
|     name: '代签收', | ||||
|     type: 5, | ||||
|     count: 0, | ||||
|   }, | ||||
|   { | ||||
|     name: '已完成', | ||||
|     type: 5, | ||||
|     count: 0, | ||||
|   }, | ||||
|   { | ||||
|     name: '已取消', | ||||
|     type: 5, | ||||
|     count: 0, | ||||
|   }, | ||||
|   ]; | ||||
| tabs = { | ||||
|   cancelQuantity: 0, | ||||
|   receivedQuantity: 0, | ||||
|   stayQuantity: 0 | ||||
| }; | ||||
| resourceStatus: any; | ||||
|   constructor(public service: OrderManagementService, private modal: NzModalService,public service2: ShipperBaseService,) { } | ||||
|  | ||||
|   /** | ||||
|  * 查询参数 | ||||
|  */ | ||||
|   get reqParams() { | ||||
|     return { | ||||
|       ...this.sf?.value, | ||||
|     }; | ||||
|   } | ||||
|   get changeParams() { | ||||
|     return { | ||||
|       id: this.changeId | ||||
| @ -102,17 +74,42 @@ export class OrderManagementVehicleComponent implements OnInit { | ||||
|       id: this.changeViewId | ||||
|     }; | ||||
|   } | ||||
|   get reqParams() { | ||||
|     const a:any = {}; | ||||
|     if(this.resourceStatus) { | ||||
|       a.billStatus = this.resourceStatus + 1; | ||||
|     } | ||||
|     return { | ||||
|       ...a, | ||||
|       ...this.sf?.value, | ||||
|     }; | ||||
|   } | ||||
|   get selectedRows() { | ||||
|     return this.st?.list.filter((item) => item.checked) || []; | ||||
|   } | ||||
|   ngOnInit(): void { | ||||
|     this.getGoodsSourceStatistical() | ||||
|     this.initSF(); | ||||
|     this.initST(); | ||||
|     this.initSTFloat(); | ||||
|     this.initSTFloatView(); | ||||
|   } | ||||
|  | ||||
|  | ||||
|   getGoodsSourceStatistical() { | ||||
|     this.service.request(this.service.$api_statisticalStatus).subscribe(res => { | ||||
|       if (res) { | ||||
|        res.forEach((element: any) => { | ||||
|         if(element.statusLabel === '待发车') { | ||||
|           this.tabs.stayQuantity = element.quantity | ||||
|         } else if (element.statusLabel === '待接单') { | ||||
|           this.tabs.receivedQuantity = element.quantity | ||||
|         } else if (element.statusLabel === '待签收') { | ||||
|           this.tabs.cancelQuantity = element.quantity | ||||
|         }  | ||||
|        }); | ||||
|       } | ||||
|     }) | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|  * 初始化查询表单 | ||||
| @ -391,16 +388,10 @@ export class OrderManagementVehicleComponent implements OnInit { | ||||
|           }, | ||||
|           { | ||||
|             text: '取消订单', | ||||
|             click: (_record) => this.confirmReceipt(_record), | ||||
|           }, | ||||
|           { | ||||
|             text: '确认发车', | ||||
|             click: (_record) => this.sureDepart(_record), | ||||
|           }, | ||||
|           { | ||||
|             text: '确认到车', | ||||
|             click: (_record) => this.sureArrive(_record), | ||||
|             click: (_record) => this.cancellation(_record), | ||||
|             iif: item => item.externalSn === '1' || item.externalSn === 1, | ||||
|           }, | ||||
|            | ||||
|         ], | ||||
|       }, | ||||
|     ]; | ||||
| @ -439,6 +430,7 @@ export class OrderManagementVehicleComponent implements OnInit { | ||||
|           { | ||||
|             text: '撤销', | ||||
|             click: (_record) => this.revoke(_record), | ||||
|            iif: item => item.handleStatus === '1' || item.handleStatus === 1, | ||||
|           }, | ||||
|         ], | ||||
|       }, | ||||
| @ -502,6 +494,11 @@ export class OrderManagementVehicleComponent implements OnInit { | ||||
|  | ||||
|   selectChange(e: number) { | ||||
|     console.log(e); | ||||
|     this.resourceStatus = e; | ||||
|     this.initST(); | ||||
|     setTimeout(() => { | ||||
|       this.st.load(); | ||||
|     }, 500); | ||||
|   } | ||||
|   /** | ||||
|    * 导入货源 | ||||
| @ -562,14 +559,17 @@ export class OrderManagementVehicleComponent implements OnInit { | ||||
|    *变更运费 | ||||
|    */ | ||||
|    updateFreight(item: any) { | ||||
|     const modalRef = this.modal.create({ | ||||
|       nzTitle: '变更运费', | ||||
|       nzWidth: '50%', | ||||
|       nzContent: VehicleUpdateFreightComponent, | ||||
|       nzComponentParams: { | ||||
|         i: item | ||||
|       }, | ||||
|       nzFooter: null | ||||
|     this.service.request(this.service.$api_get_getFreightChangeWholeDetail, { id: item.id }).subscribe(data => { | ||||
|       if (data) { | ||||
|         const modal = this.modal.create({ | ||||
|           nzTitle: '变更运费', | ||||
|           nzWidth: 580, | ||||
|           nzContent: VehicleUpdateFreightComponent, | ||||
|           nzComponentParams: { data: { ...data, id: item.id } }, | ||||
|           nzFooter: null | ||||
|         }); | ||||
|         modal.afterClose.subscribe(_ => this.st.reload()); | ||||
|       } | ||||
|     }); | ||||
|   } | ||||
|    | ||||
| @ -581,37 +581,12 @@ export class OrderManagementVehicleComponent implements OnInit { | ||||
|       nzWidth: '50%', | ||||
|       nzContent: VehicleConfirReceiptComponent, | ||||
|       nzComponentParams: { | ||||
|         i: item | ||||
|         i: item, | ||||
|         Status: 2 | ||||
|       }, | ||||
|       nzFooter: null | ||||
|     }); | ||||
|   } | ||||
|     //  *确认发车 | ||||
|     | ||||
|     sureDepart(item: any) { | ||||
|       const modalRef = this.modal.create({ | ||||
|         nzTitle: '确认发车', | ||||
|         nzWidth: '50%', | ||||
|         nzContent: VehicleSureDepartComponent, | ||||
|         nzComponentParams: { | ||||
|           i: item, | ||||
|          Status: 2 | ||||
|         }, | ||||
|         nzFooter: null | ||||
|       }); | ||||
|     } | ||||
| // 确认到车 | ||||
|     sureArrive(item: any) { | ||||
|       const modalRef = this.modal.create({ | ||||
|         nzTitle: '确认到车', | ||||
|         nzWidth: '50%', | ||||
|         nzContent: VehicleSureArriveComponent, | ||||
|         nzComponentParams: { | ||||
|           i: item | ||||
|         }, | ||||
|         nzFooter: null | ||||
|       }); | ||||
|     } | ||||
|     revoke(item: any) { | ||||
|       this.modal.confirm({ | ||||
|         nzTitle: '是否确定立即撤销费用变更!</i>', | ||||
| @ -627,4 +602,35 @@ export class OrderManagementVehicleComponent implements OnInit { | ||||
|         }) | ||||
|       }); | ||||
|     } | ||||
|     // 取消订单 | ||||
|     cancellation(item: any) { | ||||
|       // api_get_cancelAnOrder | ||||
|       this.modal.confirm({ | ||||
|         nzTitle: '<b>确定取消该订单吗?</b>', | ||||
|         nzContent: `<b>取消后无法恢复,请确认</b>`, | ||||
|         nzOnOk: () => | ||||
|           this.service.request(this.service.$api_get_cancelAnOrder, {id: item.id}).subscribe((res) => { | ||||
|             if (res === true) { | ||||
|               this.service.msgSrv.success('操作成功!'); | ||||
|               this.st?.reload(); | ||||
|               this.initST(); | ||||
|             } | ||||
|           }), | ||||
|       }) | ||||
|     } | ||||
|     userAction() { | ||||
|       let params: any[] = []; | ||||
|       this.selectedRows.forEach(item => { | ||||
|         params.push(item.id); | ||||
|       }); | ||||
|       console.log(this.selectedRows) | ||||
|       console.log(params) | ||||
|       this.service.request(this.service.$api_get_batchSignWholeOrder, params).subscribe(res => { | ||||
|         if (res) { | ||||
|           console.log(res); | ||||
|         } else { | ||||
|           this.service.msgSrv.error(res.msg); | ||||
|         } | ||||
|       }); | ||||
|     } | ||||
| } | ||||
|  | ||||
| @ -1,7 +1,7 @@ | ||||
| <!-- | ||||
|  * @Author: your name | ||||
|  * @Date: 2021-12-14 14:03:07 | ||||
|  * @LastEditTime: 2021-12-14 15:43:01 | ||||
|  * @LastEditTime: 2021-12-21 14:47:26 | ||||
|  * @LastEditors: Please set LastEditors | ||||
|  * @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE | ||||
|  * @FilePath: \tms-obc-web\src\app\routes\order-management\modal\bulk\update-freight\update-freight.component.html | ||||
| @ -15,29 +15,31 @@ nzMessage="签收后不可再修改运费,请确保运费等信息准确无误 | ||||
| <sv-container col="1"> | ||||
|   <sv label="货物单价"> | ||||
|     <span> | ||||
|       100元/吨        | ||||
|       100元/方        | ||||
|       100元/车</span> | ||||
|       {{detailList?.goodsInfoVO?.freightPrice}} {{detailList?.goodsInfoVO?.freightType}} | ||||
|      </span> | ||||
|   </sv> | ||||
|   <sv label="结算依据"> | ||||
|     <div style="display: flex; justify-content: space-between;"> | ||||
|       <div>以发货为准 / 以收货为准</div> | ||||
|       <div>保留小数/抹除小数/抹除个数</div> | ||||
|     <div> | ||||
|       <div *ngIf="detailList?.goodsInfoVO?.settlementBasis === '1'">以收货为准</div> | ||||
|       <div *ngIf="detailList?.goodsInfoVO?.settlementBasis === '2'">以发货为准 </div> | ||||
|       <div *ngIf="detailList?.goodsInfoVO?.rule === '1'">保留小数 </div> | ||||
|       <div *ngIf="detailList?.goodsInfoVO?.rule === '2'">抹除小数 </div> | ||||
|       <div *ngIf="detailList?.goodsInfoVO?.rule === '3'">抹除个数 </div> | ||||
|     </div> | ||||
|   </sv> | ||||
|  | ||||
|   </sv-container> | ||||
|   <sv-container col="2"> | ||||
|     <sv label="装货重量"> | ||||
|         <div>xx吨</div> | ||||
|         <div>{{detailList?.goodsInfoVO?.weight}}吨</div> | ||||
|     </sv> | ||||
|     <sv label="装货体积"> | ||||
|         <div>xx吨</div> | ||||
|         <div>{{detailList?.goodsInfoVO?.volume}}吨</div> | ||||
|     </sv> | ||||
|   </sv-container> | ||||
|   <sv-container col="2"> | ||||
|     <sv label="卸货重量"> | ||||
|         <div>xx吨</div> | ||||
|         <div>{{detailList?.goodsInfoVO?.volume}}吨</div> | ||||
|     </sv> | ||||
|     <sv label="卸货体积"> | ||||
|         <div>xx吨</div> | ||||
| @ -45,13 +47,13 @@ nzMessage="签收后不可再修改运费,请确保运费等信息准确无误 | ||||
|   </sv-container> | ||||
|   <sv-container col="1"> | ||||
|     <sv label="总运费"> | ||||
|       <div>1000元  </div> | ||||
|       <div>{{detailList?.goodsInfoVO?.freightPrice ? detailList?.goodsInfoVO?.freightPrice + '元' : ''}}  </div> | ||||
|   </sv> | ||||
|   <sv label="司机车辆"> | ||||
|     <div>张三 / 18888888888 / 粤GJ401</div> | ||||
|     <div>{{driverList?.nickName}} / {{driverList?.telephone}}/ {{carList?.carNo}}</div> | ||||
| </sv> | ||||
| <sv label="收款人"> | ||||
|   <div>李四 / 1888888888</div> | ||||
|   <div>{{payeeList?.nickName}} / {{payeeList?.telephone}}</div> | ||||
| </sv> | ||||
|   <sv label="回单凭证"> | ||||
|     <!-- <app-imagelist | ||||
|  | ||||
| @ -2,7 +2,7 @@ import { preloaderFinished } from '@delon/theme'; | ||||
| /* | ||||
|  * @Author: your name | ||||
|  * @Date: 2021-12-14 14:03:07 | ||||
|  * @LastEditTime: 2021-12-14 15:43:12 | ||||
|  * @LastEditTime: 2021-12-21 13:43:08 | ||||
|  * @LastEditors: Please set LastEditors | ||||
|  * @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE | ||||
|  * @FilePath: \tms-obc-web\src\app\routes\order-management\modal\bulk\update-freight\update-freight.component.ts | ||||
| @ -21,6 +21,7 @@ import { | ||||
| import { _HttpClient } from '@delon/theme'; | ||||
| import { NzMessageService } from 'ng-zorro-antd/message'; | ||||
| import { NzModalRef } from 'ng-zorro-antd/modal'; | ||||
| import { OrderManagementService } from '../../../services/order-management.service'; | ||||
|  | ||||
| @Component({ | ||||
|   selector: 'app-order-management-confir-receipt', | ||||
| @ -28,21 +29,52 @@ import { NzModalRef } from 'ng-zorro-antd/modal'; | ||||
|   styleUrls: ['./confir-receipt.component.less'] | ||||
| }) | ||||
| export class ConfirReceiptComponent implements OnInit { | ||||
|   record: any = {}; | ||||
|   i:any; | ||||
|   Status:any; | ||||
|   detailList:any; | ||||
|   data: any = {}; | ||||
|   constructor(private modal: NzModalRef, private msgSrv: NzMessageService, public http: _HttpClient) {} | ||||
|   driverList: any; | ||||
|   payeeList: any; | ||||
|   carList: any; | ||||
|   constructor(private modal: NzModalRef, private msgSrv: NzMessageService, public http: _HttpClient, public service: OrderManagementService) {} | ||||
|  | ||||
|   ngOnInit(): void { | ||||
|     this.initData() | ||||
|   } | ||||
|  | ||||
|   save(): void { | ||||
|     // this.http.post(`/user/${this.record.id}`, value).subscribe(res => { | ||||
|     //   this.msgSrv.success('保存成功'); | ||||
|     //   this.modal.close(true); | ||||
|     // }); | ||||
|     // 大宗 | ||||
|     this.service.request(this.service.$api_get_signBulkOrder, {id: this.i?.id}).subscribe((res: any) => { | ||||
|       console.log(res.success) | ||||
|       if(res) { | ||||
|         this.service.msgSrv.success('确认签收成功!') | ||||
|       } else { | ||||
|         this.service.msgSrv.error(res.msg) | ||||
|       } | ||||
|     }) | ||||
|   } | ||||
|   initData() { | ||||
|     // 大宗 | ||||
|       this.service.request(this.service.$api_get_getBulkSignForDetail, {id: this.i?.id}).subscribe((res: any) => { | ||||
|         console.log(res) | ||||
|         this.detailList = res; | ||||
|         this.service.request(this.service.$api_getUserDetailByAppUserId, {id: this.detailList?.payeeId}).subscribe((res: any) => { | ||||
|           console.log(res) | ||||
|           this.payeeList = res; | ||||
|         }) | ||||
|         this.service.request(this.service.$api_getUserDetailByAppUserId, {id: this.detailList?.driverId}).subscribe((res: any) => { | ||||
|           console.log(res) | ||||
|           this.driverList = res; | ||||
|         }) | ||||
|         this.service.request(this.service.$api_getCarLicenseByIds, {id: this.detailList?.carId}).subscribe((res: any) => { | ||||
|           console.log(res) | ||||
|           this.carList = res; | ||||
|         }) | ||||
|       }) | ||||
|    | ||||
|      | ||||
|     | ||||
|   } | ||||
|   close(): void { | ||||
|     this.modal.destroy(); | ||||
|   } | ||||
|  | ||||
| @ -1,53 +1,17 @@ | ||||
| <!-- | ||||
|  * @Author: your name | ||||
|  * @Date: 2021-12-14 14:03:07 | ||||
|  * @LastEditTime: 2021-12-14 15:16:40 | ||||
|  * @LastEditors: Please set LastEditors | ||||
|  * @LastEditTime: 2021-12-21 15:03:17 | ||||
|  * @LastEditors: your name | ||||
|  * @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE | ||||
|  * @FilePath: \tms-obc-web\src\app\routes\order-management\modal\bulk\update-freight\update-freight.component.html | ||||
| --> | ||||
| <nz-spin *ngIf="!i" class="modal-spin"></nz-spin> | ||||
| <sf #sf [schema]="schema" [ui]="ui" [compact]="true" [button]="'none'"> | ||||
|   <ng-template sf-template="no" let-me let-ui="ui" let-schema="schema"> | ||||
|    <div style="display: flex;"> | ||||
|     <nz-input-number [(ngModel)]="data.place" [nzMin]="1" [nzMax]="10" [nzStep]="1"></nz-input-number> | ||||
|     <div class="left_btn">元/吨</div> | ||||
|    </div> | ||||
|   </ng-template> | ||||
|   <ng-template sf-template="no2" let-me let-ui="ui" let-schema="schema"> | ||||
|    <div style="display: flex;"> | ||||
|     <nz-input-number [(ngModel)]="data.place1" [nzMin]="1" [nzMax]="10" [nzStep]="1"></nz-input-number> | ||||
|     <div class="left_btn">吨</div> | ||||
|    </div> | ||||
|   </ng-template> | ||||
|   <ng-template sf-template="no3" let-me let-ui="ui" let-schema="schema"> | ||||
|    <div style="display: flex;"> | ||||
|     <nz-input-number [(ngModel)]="data.place2" [nzMin]="1" [nzMax]="10" [nzStep]="1"></nz-input-number> | ||||
|     <div class="left_btn">吨</div> | ||||
|    </div> | ||||
|   </ng-template> | ||||
|   <ng-template sf-template="no4" let-me let-ui="ui" let-schema="schema"> | ||||
|    <div style="display: flex;"> | ||||
|     <nz-input-number [(ngModel)]="data.place3" [nzMin]="1" [nzMax]="10" [nzStep]="1"></nz-input-number> | ||||
|     <div class="left_btn">吨</div> | ||||
|    </div> | ||||
|   </ng-template> | ||||
|   <ng-template sf-template="no5" let-me let-ui="ui" let-schema="schema"> | ||||
|    <div style="display: flex;"> | ||||
|     <nz-input-number [(ngModel)]="data.place4" [nzMin]="1" [nzMax]="10" [nzStep]="1"></nz-input-number> | ||||
|     <div class="left_btn">吨</div> | ||||
|    </div> | ||||
|   </ng-template> | ||||
| <sf #sf [schema]="schema" [ui]="{ '*': { spanLabelFixed: 90, grid: { span:24 } } }" [button]="'none'"> | ||||
| </sf> | ||||
| <nz-divider></nz-divider> | ||||
| <nz-divider style="margin-top: 0;"></nz-divider> | ||||
| <div> | ||||
|   <p style="font-weight: bolder;">总运费:<span style="color: red;">¥900.00</span></p> | ||||
|   <p>运输费:¥800.00,附加费:¥100.00</p> | ||||
| </div> | ||||
|  | ||||
| <div class="modal-footer"> | ||||
|   <button nz-button type="button" (click)="close()">关闭</button> | ||||
|   <button nz-button type="submit" nzType="primary" (click)="save(sf.value)" [disabled]="!sf.valid" [nzLoading]="http.loading" | ||||
|     >确认</button | ||||
|   > | ||||
|     <p style="font-size: 16px;"> | ||||
|         <span style="font-weight: bolder">总运费:<span style="color: #dc112a">¥{{ data.totalFreight }}</span></span> | ||||
|     </p> | ||||
|     <p style="margin-bottom: 0;"> 运输费:¥{{ data.freight }},附加费:¥{{ data.surcharge }}</p> | ||||
| </div> | ||||
| @ -1,4 +1,3 @@ | ||||
| import { preloaderFinished } from '@delon/theme'; | ||||
| /* | ||||
|  * @Author: your name | ||||
|  * @Date: 2021-12-14 14:03:07 | ||||
| @ -7,20 +6,12 @@ import { preloaderFinished } from '@delon/theme'; | ||||
|  * @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE | ||||
|  * @FilePath: \tms-obc-web\src\app\routes\order-management\modal\bulk\update-freight\update-freight.component.ts | ||||
|  */ | ||||
| import { Component, OnInit, ViewChild } from '@angular/core'; | ||||
| import { Component, Input, OnInit, ViewChild } from '@angular/core'; | ||||
| import { | ||||
|   SFComponent, | ||||
|   SFCustomWidgetSchema, | ||||
|   SFNumberWidgetSchema, | ||||
|   SFRadioWidgetSchema, | ||||
|   SFSchema, | ||||
|   SFComponent, SFNumberWidgetSchema, SFSchema, | ||||
|   SFSelectWidgetSchema, | ||||
|   SFTextareaWidgetSchema, | ||||
|   SFUISchema | ||||
|   SFStringWidgetSchema, SFTextWidgetSchema | ||||
| } from '@delon/form'; | ||||
| import { _HttpClient } from '@delon/theme'; | ||||
| import { NzMessageService } from 'ng-zorro-antd/message'; | ||||
| import { NzModalRef } from 'ng-zorro-antd/modal'; | ||||
|  | ||||
| @Component({ | ||||
|   selector: 'app-order-management-update-freight', | ||||
| @ -28,116 +19,154 @@ import { NzModalRef } from 'ng-zorro-antd/modal'; | ||||
|   styleUrls: ['./update-freight.component.less'] | ||||
| }) | ||||
| export class UpdateFreightComponent implements OnInit { | ||||
|   record: any = {}; | ||||
|   i: any; | ||||
|   @ViewChild('sf', { static: false }) sf!: SFComponent; | ||||
|   schema: SFSchema = {}; | ||||
|   ui: SFUISchema = {}; | ||||
|   data: any = {}; | ||||
|   constructor(private modal: NzModalRef, private msgSrv: NzMessageService, public http: _HttpClient) {} | ||||
|   schema!: SFSchema; | ||||
|  | ||||
|   @Input() | ||||
|   data: any; | ||||
|  | ||||
|   constructor() {} | ||||
|  | ||||
|   ngOnInit(): void { | ||||
|     this.initSF(); | ||||
|  | ||||
|     if (this.record.id > 0) this.http.get(`/user/${this.record.id}`).subscribe(res => (this.i = res)); | ||||
|   } | ||||
|   initSF() { | ||||
|     this.schema= { | ||||
|       properties: { | ||||
|         no: { | ||||
|           type: 'string', | ||||
|           title: '运费单价', | ||||
|          ui: { | ||||
|           widget: 'custom', | ||||
|          } | ||||
|         }, | ||||
|         sex: { | ||||
|           title: '', | ||||
|           type: 'string', | ||||
|           enum: [ | ||||
|             { label: '保留小数', value: 0 }, | ||||
|             { label: '男', value: 1 }, | ||||
|             { label: '女', value: 2 }, | ||||
|             { label: '保密', value: 3 }, | ||||
|           ], | ||||
|           ui: { | ||||
|             widget: 'select', | ||||
|           } as SFSelectWidgetSchema, | ||||
|         }, | ||||
|         appId: { | ||||
|           type: 'string', | ||||
|           title: '结算依据', | ||||
|           ui: { | ||||
|             width: 300, | ||||
|             grid: { span: 24 }, | ||||
|             widget: 'select', | ||||
|             placeholder: '请选择', | ||||
|             allowClear: true, | ||||
|             // asyncData: () => this.getCatalogueMember(), | ||||
|           }, | ||||
|         }, | ||||
|         no2: { | ||||
|           type: 'string', | ||||
|           title: '装货重量', | ||||
|          ui: { | ||||
|           widget: 'custom', | ||||
|          } | ||||
|         }, | ||||
|         no3: { | ||||
|           type: 'string', | ||||
|           title: '装货体积', | ||||
|          ui: { | ||||
|           widget: 'custom', | ||||
|          } | ||||
|         }, | ||||
|         no4: { | ||||
|           type: 'string', | ||||
|           title: '卸货重量', | ||||
|          ui: { | ||||
|           widget: 'custom', | ||||
|          } | ||||
|         }, | ||||
|         no5: { | ||||
|           type: 'string', | ||||
|           title: '卸货体积', | ||||
|          ui: { | ||||
|           widget: 'custom', | ||||
|          } | ||||
|         }, | ||||
|         name3: { | ||||
|           type: 'string', | ||||
|           title: '变更原因', | ||||
|           maxLength: 100, | ||||
|           ui: { | ||||
|             width: 300, | ||||
|             placeholder:"选填,最多不超过100字", | ||||
|             widget: 'textarea', | ||||
|             autosize: { minRows: 3, maxRows: 6 } | ||||
|           } as SFTextareaWidgetSchema | ||||
|         }, | ||||
|       }, | ||||
|       required: ['no', 'appId'], | ||||
|       type: 'object', | ||||
|     }; | ||||
|     this.ui = { '*': { spanLabelFixed: 100, grid: { span: 12, gutter: 4 } } | ||||
|     }; | ||||
|   } | ||||
|   save(value: any): void { | ||||
|     console.log(value) | ||||
|     console.log(this.data) | ||||
|     this.http.post(`/user/${this.record.id}`, value).subscribe(res => { | ||||
|       this.msgSrv.success('保存成功'); | ||||
|       this.modal.close(true); | ||||
|     }); | ||||
|     this.schema = this.initSF(this.data); | ||||
|   } | ||||
|  | ||||
|   close(): void { | ||||
|     this.modal.destroy(); | ||||
|   } | ||||
|   /** | ||||
|    * 更新数字框 | ||||
|    * @param value | ||||
|    * @param type | ||||
|    * 初始化表单 | ||||
|    */ | ||||
|   changeNumVal(value: any, type: number) {} | ||||
|   private initSF(data: any): SFSchema { | ||||
|     return { | ||||
|       properties: { | ||||
|         dto: { | ||||
|           type: 'object', | ||||
|           properties: { | ||||
|             freightPrice: { | ||||
|               type: 'string', | ||||
|               title: '运费单价', | ||||
|               ui: { | ||||
|                 addOnAfter: data.freightTypeLabel, | ||||
|                 placeholder: '请输入', | ||||
|                 grid: { | ||||
|                   span: 12 | ||||
|                 } | ||||
|               } as SFStringWidgetSchema, | ||||
|               default: data.freightPrice | ||||
|             }, | ||||
|             rule: { | ||||
|               title: '', | ||||
|               type: 'string', | ||||
|               default: data.rule, | ||||
|               enum: [ | ||||
|                 { label: '保留小数', value: '1' }, | ||||
|                 { label: '抹除小数', value: '2' }, | ||||
|                 { label: '抹除个数', value: '3' } | ||||
|               ], | ||||
|               ui: { | ||||
|                 widget: 'select', | ||||
|                 spanLabelFixed: 10, | ||||
|                 grid: { | ||||
|                   span: 10 | ||||
|                 } | ||||
|               } as SFSelectWidgetSchema | ||||
|             }, | ||||
|             settlementBasis: { | ||||
|               title: '结算依据', | ||||
|               type: 'string', | ||||
|               default: data.settlementBasis, | ||||
|               enum: [ | ||||
|                 { label: '以收货为准', value: '1' }, | ||||
|                 { label: '以发货为准', value: '2' } | ||||
|               ], | ||||
|               ui: { | ||||
|                 widget: 'select', | ||||
|                 grid: { | ||||
|                   span: 12 | ||||
|                 } | ||||
|               } as SFSelectWidgetSchema | ||||
|             }, | ||||
|             blank1: { | ||||
|               title: '', | ||||
|               type: 'string', | ||||
|               ui: { widget: 'text', grid: { span: 12 }, class: 'input-back' }, | ||||
|               default: ' ' | ||||
|             }, | ||||
|             freightType: { | ||||
|               title: '', | ||||
|               type: 'string', | ||||
|               ui: { hidden: true }, | ||||
|               default: data.freightType | ||||
|             }, | ||||
|             acceptWeight: { | ||||
|               type: 'number', | ||||
|               title: '装货重量', | ||||
|               default: data.acceptWeight, | ||||
|               ui: { | ||||
|                 unit: '吨', | ||||
|                 placeholder: '请输入', | ||||
|                 grid: { | ||||
|                   span: 12 | ||||
|                 }, | ||||
|                 hideStep: true | ||||
|               } as SFNumberWidgetSchema | ||||
|             }, | ||||
|             acceptVolume: { | ||||
|               type: 'number', | ||||
|               title: '装货体积', | ||||
|               default: data.acceptVolume, | ||||
|               ui: { | ||||
|                 unit: '吨', | ||||
|                 placeholder: '请输入', | ||||
|                 grid: { | ||||
|                   span: 12 | ||||
|                 }, | ||||
|                 hideStep: true | ||||
|               } as SFNumberWidgetSchema | ||||
|             }, | ||||
|             settlementWeight: { | ||||
|               type: 'number', | ||||
|               title: '卸货重量', | ||||
|               default: data.settlementWeight, | ||||
|               ui: { | ||||
|                 unit: '吨', | ||||
|                 placeholder: '请输入', | ||||
|                 grid: { | ||||
|                   span: 12 | ||||
|                 }, | ||||
|                 hideStep: true | ||||
|               } as SFNumberWidgetSchema | ||||
|             }, | ||||
|             settlementVolume: { | ||||
|               type: 'number', | ||||
|               title: '卸货体积', | ||||
|               default: data.settlementVolume, | ||||
|               ui: { | ||||
|                 unit: '吨', | ||||
|                 placeholder: '请输入', | ||||
|                 grid: { | ||||
|                   span: 12 | ||||
|                 }, | ||||
|                 hideStep: true | ||||
|               } as SFNumberWidgetSchema | ||||
|             } | ||||
|           }, | ||||
|           required: ['freightPrice', 'settlementBasis'] | ||||
|         }, | ||||
|         changeCause: { | ||||
|           title: '审核备注', | ||||
|           type: 'string', | ||||
|           maxLength: 100, | ||||
|           default: data.changeCause, | ||||
|           ui: { | ||||
|             widget: 'textarea', | ||||
|             span: 24, | ||||
|             placeholder: '选填,最多不超过100字', | ||||
|             autosize: { | ||||
|               minRows: 3, | ||||
|               maxRows: 5 | ||||
|             } | ||||
|           } as SFTextWidgetSchema | ||||
|         } | ||||
|       } | ||||
|     }; | ||||
|   } | ||||
| } | ||||
|  | ||||
| @ -0,0 +1,7 @@ | ||||
| <nz-spin *ngIf="!i" class="modal-spin"></nz-spin> | ||||
| <sf #sf mode="edit" [schema]="schema" [ui]="ui" button="none"></sf> | ||||
|  | ||||
| <div class="modal-footer"> | ||||
|   <button nz-button type="button" (click)="close()">关闭</button> | ||||
|   <button nz-button type="submit" nzType="primary" (click)="save(sf.value)" [disabled]="!sf.valid">确定</button> | ||||
| </div> | ||||
| @ -0,0 +1,93 @@ | ||||
| /* | ||||
|  * @Author: your name | ||||
|  * @Date: 2021-12-21 10:14:52 | ||||
|  * @LastEditTime: 2021-12-21 10:17:02 | ||||
|  * @LastEditors: Please set LastEditors | ||||
|  * @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE | ||||
|  * @FilePath: \tms-obc-web\src\app\routes\order-management\modal\vehicle\cancel\cancel.component.ts | ||||
|  */ | ||||
| import { Component, OnInit, ViewChild } from '@angular/core'; | ||||
| import { | ||||
|   SFComponent, | ||||
|   SFCustomWidgetSchema, | ||||
|   SFNumberWidgetSchema, | ||||
|   SFRadioWidgetSchema, | ||||
|   SFSchema, | ||||
|   SFTextareaWidgetSchema, | ||||
|   SFUISchema | ||||
| } from '@delon/form'; | ||||
| import { _HttpClient } from '@delon/theme'; | ||||
| import { NzMessageService } from 'ng-zorro-antd/message'; | ||||
| import { NzModalRef, NzModalService } from 'ng-zorro-antd/modal'; | ||||
| import { OrderManagementService } from '../../../services/order-management.service'; | ||||
|  | ||||
|  | ||||
| @Component({ | ||||
|   selector: 'app-order-management-cancel', | ||||
|   templateUrl: './cancel.component.html' | ||||
| }) | ||||
| export class OneCarOrderCancelComponent implements OnInit { | ||||
|   record: any = {}; | ||||
|   i: any; | ||||
|   @ViewChild('sf', { static: false }) sf!: SFComponent; | ||||
|   schema: SFSchema = {}; | ||||
|   ui: SFUISchema = {}; | ||||
|   constructor(private modalRef: NzModalRef, private modal: NzModalService, public service: OrderManagementService) {} | ||||
|  | ||||
|   ngOnInit(): void { | ||||
|     this.initSF(); | ||||
|     console.log(this.i.billStatusLabel) | ||||
|   } | ||||
|   initSF() { | ||||
|     this.schema = { | ||||
|       properties: { | ||||
|         cancelReason: { | ||||
|           type: 'string', | ||||
|           title: '取消原因', | ||||
|           ui: { | ||||
|             widget: 'textarea', | ||||
|             autosize: { minRows: 3, maxRows: 6 } | ||||
|           } as SFTextareaWidgetSchema | ||||
|         } | ||||
|       }, | ||||
|       required: ['reason'] | ||||
|     }; | ||||
|     this.ui = { | ||||
|       '*': { | ||||
|         spanLabelFixed: 100, | ||||
|         grid: { span: 20 } | ||||
|       } | ||||
|     }; | ||||
|   } | ||||
|   save(value: any): void { | ||||
|     if (this.i?.billStatus === '1') { | ||||
|       // 待接单状态 | ||||
|       this.modal.confirm({ | ||||
|         nzTitle: '<i>是否确定立即取消运单!</i>', | ||||
|         nzOnOk: () => | ||||
|           this.service.request(this.service.$api_get_cancelAnOrder, { id: this.i?.id, ...this.sf.value }).subscribe(res => { | ||||
|             if (res) { | ||||
|               this.modalRef.close(true); | ||||
|             } else { | ||||
|               this.service.msgSrv.error(res.msg); | ||||
|             } | ||||
|           }), | ||||
|         nzOnCancel: () => this.modalRef.destroy() | ||||
|       }); | ||||
|     } else { | ||||
|       this.service.request(this.service.$api_get_cancelAnOrder, { id: this.i?.id, ...this.sf.value }).subscribe(res => { | ||||
|         if (res) { | ||||
|           this.modalRef.close(true); | ||||
|         } else { | ||||
|           this.service.msgSrv.error(res.msg); | ||||
|         } | ||||
|       }); | ||||
|     } | ||||
|  | ||||
|     this.modalRef.close(true); | ||||
|   } | ||||
|  | ||||
|   close(): void { | ||||
|     this.modalRef.destroy(); | ||||
|   } | ||||
| } | ||||
| @ -1,67 +1,53 @@ | ||||
| <!-- | ||||
|  * @Author: your name | ||||
|  * @Date: 2021-12-14 14:03:07 | ||||
|  * @LastEditTime: 2021-12-14 15:43:01 | ||||
|  * @Date: 2021-12-15 13:17:42 | ||||
|  * @LastEditTime: 2021-12-21 14:34:16 | ||||
|  * @LastEditors: Please set LastEditors | ||||
|  * @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE | ||||
|  * @FilePath: \tms-obc-web\src\app\routes\order-management\modal\bulk\update-freight\update-freight.component.html | ||||
|  * @FilePath: \tms-obc-web\src\app\routes\order-management\modal\vehicle\confir-receipt\confir-receipt.component.html | ||||
| --> | ||||
| <nz-alert | ||||
| style="padding-bottom: 15px;" | ||||
| nzType="warning" | ||||
| nzCloseable | ||||
| nzMessage="签收后不可再修改运费,请确保运费等信息准确无误后,再进行签收。" | ||||
|   style="padding-bottom: 15px" | ||||
|   nzType="warning" | ||||
|   nzCloseable | ||||
|   nzMessage="签收后不可再修改运费,请确保运费等信息准确无误后,再进行签收。" | ||||
| ></nz-alert> | ||||
| <sv-container col="1"> | ||||
|   <sv label="货物单价"> | ||||
|     <span> | ||||
|       100元/吨        | ||||
|       100元/方        | ||||
|       100元/车</span> | ||||
|   </sv> | ||||
|   <sv label="结算依据"> | ||||
|     <div style="display: flex; justify-content: space-between;"> | ||||
|       <div>以发货为准 / 以收货为准</div> | ||||
|       <div>保留小数/抹除小数/抹除个数</div> | ||||
|     </div> | ||||
|   </sv> | ||||
|  | ||||
|   </sv-container> | ||||
|   <sv-container col="2"> | ||||
|     <sv label="装货重量"> | ||||
|         <div>xx吨</div> | ||||
|     </sv> | ||||
|     <sv label="装货体积"> | ||||
|         <div>xx吨</div> | ||||
|     </sv> | ||||
|   </sv-container> | ||||
|   <sv-container col="2"> | ||||
|     <sv label="卸货重量"> | ||||
|         <div>xx吨</div> | ||||
|     </sv> | ||||
|     <sv label="卸货体积"> | ||||
|         <div>xx吨</div> | ||||
|     </sv> | ||||
|   </sv-container> | ||||
|   <sv-container col="1"> | ||||
|     <sv label="总运费"> | ||||
|       <div>1000元  </div> | ||||
| <sv-container col="1"> | ||||
|   <sv label="费用明细"> | ||||
|     <st #st [widthMode]="{ type: 'strict' }" [data]="costDetail" [columns]="columns" bordered="true" [page]="{ show: false }"></st> | ||||
|   </sv> | ||||
|   <sv label="司机车辆"> | ||||
|     <div>张三 / 18888888888 / 粤GJ401</div> | ||||
| </sv> | ||||
| <sv label="收款人"> | ||||
|   <div>李四 / 1888888888</div> | ||||
| </sv> | ||||
|     <div>{{driverList?.nickName}} / {{driverList?.telephone}}/ {{carList?.carNo}}</div> | ||||
|   </sv> | ||||
|   <sv label="收款人"> | ||||
|     <div>{{payeeList?.nickName}} / {{payeeList?.telephone}}</div> | ||||
|   </sv> | ||||
|   <sv label="回单凭证"> | ||||
|     <!-- <app-imagelist | ||||
|       [imgList]="[userIdentityDetail?.certificatePhotoFrontWatermark,userIdentityDetail?.certificatePhotoBackWatermark]"> | ||||
|     </app-imagelist> --> | ||||
|     <nz-upload | ||||
|       class="avatar-uploader" | ||||
|       [nzAction]="service.$api_upload_url" | ||||
|       [nzName]="'multipartFile'" | ||||
|       nzListType="picture-card" | ||||
|       [(nzFileList)]="listImagUrls" | ||||
|       [nzShowButton]="listImagUrls.length < 5" | ||||
|       [nzPreview]="handlePreview1" | ||||
|       [nzBeforeUpload]="beforeUpload" | ||||
|       (nzChange)="handleChange1($event)" | ||||
|     > | ||||
|       <div> | ||||
|         <i nz-icon nzType="plus"></i> | ||||
|         <div style="margin-top: 8px">请上传图片</div> | ||||
|       </div> | ||||
|     </nz-upload> | ||||
|     <nz-modal [nzVisible]="previewVisible1" [nzContent]="modalContent" [nzFooter]="null" (nzOnCancel)="previewVisible1 = false"> | ||||
|       <ng-template #modalContent> | ||||
|         <img [src]="previewImage1" [ngStyle]="{ width: '100%' }" /> | ||||
|       </ng-template> | ||||
|     </nz-modal> | ||||
|   </sv> | ||||
| </sv-container> | ||||
| <div class="modal-footer"> | ||||
|   <button nz-button type="button" (click)="close()">关闭</button> | ||||
|   <button nz-button type="submit" nzType="primary" (click)="save()" [nzLoading]="http.loading" | ||||
|     >确认签收</button | ||||
|   > | ||||
|   <button nz-button type="submit" nzType="primary" (click)="save()" [nzLoading]="http.loading">确认签收</button> | ||||
| </div> | ||||
|  | ||||
| @ -1,12 +1,12 @@ | ||||
| import { preloaderFinished } from '@delon/theme'; | ||||
| /* | ||||
|  * @Author: your name | ||||
|  * @Date: 2021-12-14 14:03:07 | ||||
|  * @LastEditTime: 2021-12-15 14:08:34 | ||||
|  * @Date: 2021-12-15 13:17:42 | ||||
|  * @LastEditTime: 2021-12-21 14:50:54 | ||||
|  * @LastEditors: Please set LastEditors | ||||
|  * @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE | ||||
|  * @FilePath: \tms-obc-web\src\app\routes\order-management\modal\bulk\update-freight\update-freight.component.ts | ||||
|  * @FilePath: \tms-obc-web\src\app\routes\order-management\modal\vehicle\confir-receipt\confir-receipt.component.ts | ||||
|  */ | ||||
|  | ||||
| import { Component, OnInit, ViewChild } from '@angular/core'; | ||||
| import { | ||||
|   SFComponent, | ||||
| @ -18,10 +18,21 @@ import { | ||||
|   SFTextareaWidgetSchema, | ||||
|   SFUISchema | ||||
| } from '@delon/form'; | ||||
| import { NzUploadChangeParam, NzUploadFile } from 'ng-zorro-antd/upload'; | ||||
| import { _HttpClient } from '@delon/theme'; | ||||
| import { NzMessageService } from 'ng-zorro-antd/message'; | ||||
| import { NzModalRef } from 'ng-zorro-antd/modal'; | ||||
|  | ||||
| import { OrderManagementService } from '../../../services/order-management.service'; | ||||
| import { Observable, Observer } from 'rxjs'; | ||||
| import { STColumn } from '@delon/abc/st'; | ||||
| function getBase64(file: File): Promise<string | ArrayBuffer | null> { | ||||
|   return new Promise((resolve, reject) => { | ||||
|     const reader = new FileReader(); | ||||
|     reader.readAsDataURL(file); | ||||
|     reader.onload = () => resolve(reader.result); | ||||
|     reader.onerror = error => reject(error); | ||||
|   }); | ||||
| } | ||||
| @Component({ | ||||
|   selector: 'app-order-management-vehicle-confir-receipt', | ||||
|   templateUrl: './confir-receipt.component.html', | ||||
| @ -30,24 +41,155 @@ import { NzModalRef } from 'ng-zorro-antd/modal'; | ||||
| export class VehicleConfirReceiptComponent implements OnInit { | ||||
|   record: any = {}; | ||||
|   i:any; | ||||
|   Status: any | ||||
|   costDetail: any // 费用明细 | ||||
|   columns!: STColumn[]; | ||||
|   previewVisible1 = false; | ||||
|   dataInfo: any; | ||||
|   detailList: any | ||||
|   data: any = {}; | ||||
|   constructor(private modal: NzModalRef, private msgSrv: NzMessageService, public http: _HttpClient) {} | ||||
|   previewImage1 = ''; | ||||
|   listImagUrls: any[] = []; | ||||
|   payeeList: any; | ||||
|   driverList: any; | ||||
|   carList: any; | ||||
|   constructor(private modal: NzModalRef, private msgSrv: NzMessageService, public http: _HttpClient,public service: OrderManagementService) {} | ||||
|  | ||||
|   ngOnInit(): void { | ||||
|     this.initST() | ||||
|     this.initData() | ||||
|   } | ||||
|  | ||||
|   save(): void { | ||||
|     // this.http.post(`/user/${this.record.id}`, value).subscribe(res => { | ||||
|     //   this.msgSrv.success('保存成功'); | ||||
|     //   this.modal.close(true); | ||||
|     // }); | ||||
|     this.service.request(this.service.$api_get_signWholeOrder, {id: this.i?.id}).subscribe((res: any) => { | ||||
|       console.log(res) | ||||
|       if(res) { | ||||
|         this.service.msgSrv.success('确认签收成功!') | ||||
|       } else { | ||||
|         this.service.msgSrv.error(res.msg) | ||||
|       } | ||||
|     }) | ||||
|   } | ||||
|  | ||||
|   handlePreview1 = async (file: NzUploadFile) => { | ||||
|     if (!file.url && !file.preview) { | ||||
|       file.preview = await getBase64(file.originFileObj!); | ||||
|     } | ||||
|     this.previewImage1 = file.url || file.preview; | ||||
|     this.previewVisible1 = true; | ||||
|   }; | ||||
|   close(): void { | ||||
|     this.modal.destroy(); | ||||
|   } | ||||
|   userAction() { | ||||
|   | ||||
|   beforeUpload = (file: NzUploadFile, _fileList: NzUploadFile[]) => { | ||||
|     return new Observable((observer: Observer<boolean>) => { | ||||
|       const isJpgOrPng = file.type === 'image/jpeg' || file.type === 'image/png' || file.type === 'image/gif' || file.type === 'image/bmp'; | ||||
|       if (!isJpgOrPng) { | ||||
|         this.service.msgSrv.warning('只能上传图片!'); | ||||
|         observer.complete(); | ||||
|         return; | ||||
|       } | ||||
|       // tslint:disable-next-line: no-non-null-assertion | ||||
|       const isLt2M = file.size! / 1024 / 1024 < 3; | ||||
|       if (!isLt2M) { | ||||
|         this.service.msgSrv.warning('图片大小超过3兆!'); | ||||
|         observer.complete(); | ||||
|         return; | ||||
|       } | ||||
|       observer.next(isJpgOrPng && isLt2M); | ||||
|       observer.complete(); | ||||
|     }); | ||||
|   }; | ||||
|   initData() { | ||||
|     // if (this.i?.receiptCertificate?.length > 0) { | ||||
|     //   this.i?.receiptCertificate.forEach((element: any) => { | ||||
|     //     const image = { | ||||
|     //       url: element, | ||||
|     //       status: 'done', | ||||
|     //       uid: '-1' | ||||
|     //     }; | ||||
|     //     this.listImagUrls.push(image); | ||||
|     //   }); | ||||
|     // } | ||||
|     // 大宗 | ||||
|       this.service.request(this.service.$api_get_getWholeSignForDetail, {id: this.i?.id}).subscribe((res: any) => { | ||||
|         console.log(res) | ||||
|         this.dataInfo = res; | ||||
|         const cost: any =  {} | ||||
|         res.mybidDetailInfo.forEach((element: any) => { | ||||
|             if(element.expenseName === "预付" || element.expenseCode === 'PRE') { | ||||
|               cost.PRE = element.price | ||||
|             } else if(element.expenseName === "到付" || element.expenseCode === 'RECE') { | ||||
|               cost.RECE = element.price | ||||
|             } else if(element.expenseName === "回单付" || element.expenseCode === 'BACK') { | ||||
|               cost.BACK = element.price | ||||
|             } else if(element.expenseName === "油卡" || element.expenseCode === 'OIL') { | ||||
|               cost.OIL = element.price | ||||
|             } else if(element.expenseName === "总费用") { | ||||
|               cost.traiPrice = element.price | ||||
|             } | ||||
|         }); | ||||
|         this.service.request(this.service.$api_getUserDetailByAppUserId, {id: this.dataInfo?.payeeId}).subscribe((res: any) => { | ||||
|           console.log(res) | ||||
|           this.payeeList = res; | ||||
|         }) | ||||
|         this.service.request(this.service.$api_getUserDetailByAppUserId, {id: this.dataInfo?.driverId}).subscribe((res: any) => { | ||||
|           console.log(res) | ||||
|           this.driverList = res; | ||||
|         }) | ||||
|         this.service.request(this.service.$api_getCarLicenseByIds, {id: this.dataInfo?.carId}).subscribe((res: any) => { | ||||
|           console.log(res) | ||||
|           this.carList = res; | ||||
|         }) | ||||
|         console.log(cost) | ||||
|         this.costDetail = [cost]; | ||||
|       }) | ||||
|   } | ||||
|  | ||||
|   initST() { | ||||
|     this.columns = [ | ||||
|       { | ||||
|         title: '预付', | ||||
|         index: 'PRE' | ||||
|       }, | ||||
|       { | ||||
|         title: '到付', | ||||
|         index: 'RECE' | ||||
|       }, | ||||
|       { | ||||
|         title: '油卡', | ||||
|         index: 'OIL' | ||||
|       }, | ||||
|       { | ||||
|         title: '回单付', | ||||
|         index: 'BACK' | ||||
|       }, | ||||
|       { | ||||
|         title: '总运费', | ||||
|         index: 'traiPrice' | ||||
|       } | ||||
|     ]; | ||||
|   } | ||||
|    | ||||
|   handleChange1(info: NzUploadChangeParam): void { | ||||
|     switch (info.file.status) { | ||||
|       case 'uploading': | ||||
|         break; | ||||
|       case 'done': | ||||
|         const resData = info.file.response.data; | ||||
|         const arr = [ | ||||
|           { | ||||
|             url: resData.fullFilePath, | ||||
|             status: 'done', | ||||
|             uid: '-1' | ||||
|           } | ||||
|         ]; | ||||
|         this.listImagUrls = arr; | ||||
|         break; | ||||
|       case 'error': | ||||
|         this.service.msgSrv.error('网络错误'); | ||||
|         break; | ||||
|     } | ||||
|   } | ||||
|  | ||||
| } | ||||
|  | ||||
| @ -1,21 +1,21 @@ | ||||
| <!-- | ||||
|  * @Author: your name | ||||
|  * @Date: 2021-12-14 15:53:03 | ||||
|  * @LastEditTime: 2021-12-14 17:39:33 | ||||
|  * @LastEditTime: 2021-12-20 19:53:23 | ||||
|  * @LastEditors: Please set LastEditors | ||||
|  * @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE | ||||
|  * @FilePath: \tms-obc-web\src\app\routes\order-management\modal\bulk\sure-depart\sure-depart.component.html | ||||
| --> | ||||
| <sf #sf mode="edit" [schema]="schema" [ui]="ui" [formData]="i" button="none"> | ||||
|   <ng-template sf-template="no2" let-me let-ui="ui" let-schema="schema"> | ||||
| <sf #sf mode="edit" [schema]="schema" [ui]="ui" [formData]="formData" button="none"> | ||||
|   <ng-template sf-template="weight" let-me let-ui="ui" let-schema="schema"> | ||||
|     <div style="display: flex;"> | ||||
|      <nz-input-number [(ngModel)]="data.place1" [nzMin]="1" [nzMax]="10" [nzStep]="1"></nz-input-number> | ||||
|      <nz-input-number [(ngModel)]="data.weight" [nzMin]="1" [nzMax]="10" [nzStep]="1"></nz-input-number> | ||||
|      <div class="left_btn">吨</div> | ||||
|     </div> | ||||
|    </ng-template> | ||||
|   <ng-template sf-template="no3" let-me let-ui="ui" let-schema="schema"> | ||||
|   <ng-template sf-template="volume" let-me let-ui="ui" let-schema="schema"> | ||||
|     <div style="display: flex;"> | ||||
|      <nz-input-number [(ngModel)]="data.place2" [nzMin]="1" [nzMax]="10" [nzStep]="1"></nz-input-number> | ||||
|      <nz-input-number [(ngModel)]="data.volume" [nzMin]="1" [nzMax]="10" [nzStep]="1"></nz-input-number> | ||||
|      <div class="left_btn">方</div> | ||||
|     </div> | ||||
|    </ng-template> | ||||
|  | ||||
| @ -1,13 +1,6 @@ | ||||
| import { preloaderFinished } from '@delon/theme'; | ||||
| /* | ||||
|  * @Author: your name | ||||
|  * @Date: 2021-12-14 14:03:07 | ||||
|  * @LastEditTime: 2021-12-20 16:21:19 | ||||
|  * @LastEditors: Please set LastEditors | ||||
|  * @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE | ||||
|  * @FilePath: \tms-obc-web\src\app\routes\order-management\modal\bulk\update-freight\update-freight.component.ts | ||||
|  */ | ||||
|  | ||||
| import { Component, OnInit, ViewChild } from '@angular/core'; | ||||
| import { DatePipe } from '@angular/common'; | ||||
| import { | ||||
|   SFComponent, | ||||
|   SFCustomWidgetSchema, | ||||
| @ -20,151 +13,127 @@ import { | ||||
|   SFUISchema, | ||||
|   SFUploadWidgetSchema | ||||
| } from '@delon/form'; | ||||
| import { apiConf } from '@conf/api.conf'; | ||||
| import { _HttpClient } from '@delon/theme'; | ||||
| import { NzMessageService } from 'ng-zorro-antd/message'; | ||||
| import { NzModalRef } from 'ng-zorro-antd/modal'; | ||||
| import { SupplyManagementService } from 'src/app/routes/supply-management/services/supply-management.service'; | ||||
| import { WaybillManagementServe } from 'src/app/routes/waybill-management/services/waybill-management.service'; | ||||
| import { Observable, Observer } from 'rxjs'; | ||||
| import { EAEnvironmentService } from '@shared'; | ||||
|  | ||||
| @Component({ | ||||
|   selector: 'app-order-management-vehicle-sure-arrive', | ||||
|   templateUrl: './sure-arrive.component.html', | ||||
|   styleUrls: ['./sure-arrive.component.less'] | ||||
|   styleUrls: ['./sure-arrive.component.less'], | ||||
|   providers: [DatePipe] | ||||
| }) | ||||
| export class VehicleSureArriveComponent implements OnInit { | ||||
|   record: any = {}; | ||||
|   i: any; | ||||
|   formData: any; | ||||
|   Status: any; | ||||
|   data: any ={ | ||||
|     place1: '', | ||||
|     place2: '' | ||||
|     weight: 0, | ||||
|     volume: 0 | ||||
|   }; | ||||
|   @ViewChild('sf', { static: false }) sf!: SFComponent; | ||||
|   schema: SFSchema = {}; | ||||
|   ui: SFUISchema = {}; | ||||
|   constructor(private modal: NzModalRef, private msgSrv: NzMessageService, public http: _HttpClient, public service: SupplyManagementService ) {} | ||||
|   constructor(private modal: NzModalRef, private msgSrv: NzMessageService, public http: _HttpClient, public service: WaybillManagementServe,private datePipe: DatePipe,private envSrv: EAEnvironmentService, ) {} | ||||
|  | ||||
|   ngOnInit(): void { | ||||
|     console.log(this.i) | ||||
|     this.initData() | ||||
|     this.i.time = this.i.loadingTime; | ||||
|     this.initSF(); | ||||
|   } | ||||
|   initSF() { | ||||
|     if(this.Status === 1) { | ||||
|  | ||||
|     this.schema = { | ||||
|       properties: { | ||||
|         datetime: { | ||||
|         time: { | ||||
|           type: 'string', | ||||
|           title: '卸货时间', | ||||
|           format: 'date-time', | ||||
|         }, | ||||
|         no2: { | ||||
|           type: 'string', | ||||
|           title: '卸货重量', | ||||
|           ui: { | ||||
|             widget: 'custom', | ||||
|            } | ||||
|         }, | ||||
|         no3: { | ||||
|           type: 'string', | ||||
|           title: '卸货体积', | ||||
|           ui: { | ||||
|             widget: 'custom', | ||||
|            } | ||||
|         }, | ||||
|       | ||||
|         avatar: { | ||||
|         imgUrl3: { | ||||
|           type: 'string', | ||||
|           title: '装货凭证', | ||||
|           readOnly: true, | ||||
|           ui: { | ||||
|             action: `/scm/cms/cms/upload/multipartFile/fileModel`, | ||||
|             fileType: 'image/png,image/jpeg,image/jpg', | ||||
|             widget: 'upload', | ||||
|             action: apiConf.fileUpload, | ||||
|             fileType: 'image/png,image/jpeg,image/jpg,image/gif', | ||||
|             limit: 1, | ||||
|             limitFileCount: 1, | ||||
|             resReName: 'url', | ||||
|             urlReName: 'url', | ||||
|             widget: 'upload', | ||||
|             descriptionI18n: ' 提单号', | ||||
|             resReName: 'data.fullFileWatermarkPath', | ||||
|             urlReName: 'data.fullFileWatermarkPath', | ||||
|             descriptionI18n: '提货单', | ||||
|             data: { | ||||
|               // appId: environment.appId, | ||||
|               appId: this.envSrv.env.appId, | ||||
|             }, | ||||
|             name: 'multipartFile', | ||||
|             multiple: true, | ||||
|             listType: 'picture-card', | ||||
|             change: (args: any) => { | ||||
|               if (args.type === 'success') { | ||||
|                 const avatar = [ | ||||
|                   { | ||||
|                     uid: -1, | ||||
|                     name: 'LOGO', | ||||
|                     status: 'done', | ||||
|                     url: args.fileList[0].response.url, | ||||
|                     response: { | ||||
|                       url: args.fileList[0].response.url | ||||
|                     } | ||||
|                   } | ||||
|                 ]; | ||||
|                 this.sf?.setValue('/avatar', avatar); | ||||
|               } | ||||
|             }, | ||||
|             beforeUpload: (file: any, _fileList: any) => { | ||||
|             beforeUpload: (file: any, fileList: any) => { | ||||
|               return new Observable((observer: Observer<boolean>) => { | ||||
|                 const isLt2M = file.size / 1024 / 1024 < 5; | ||||
|                 if (!isLt2M) { | ||||
|                 const isLt1M = file.size / 1024 / 1024 < 5; | ||||
|                 const fileType = 'image/png,image/jpeg'; | ||||
|                 if (fileType.indexOf(file.type) === -1) { | ||||
|                   this.service.msgSrv.warning('图片格式不正确!'); | ||||
|                   observer.complete(); | ||||
|                   return; | ||||
|                 } | ||||
|                 if (!isLt1M) { | ||||
|                   this.service.msgSrv.warning('图片大小超过5M!'); | ||||
|                   observer.complete(); | ||||
|                   return; | ||||
|                 } | ||||
|                 observer.next(isLt2M); | ||||
|                 observer.next(isLt1M); | ||||
|                 observer.complete(); | ||||
|               }); | ||||
|             } | ||||
|           } as SFUploadWidgetSchema | ||||
|             }, | ||||
|             multiple: false, | ||||
|             listType: 'picture-card', | ||||
|           } as SFUploadWidgetSchema, | ||||
|         }, | ||||
|         avatar2: { | ||||
|         imgUrl4: { | ||||
|           type: 'string', | ||||
|           title: '', | ||||
|           readOnly: true, | ||||
|           ui: { | ||||
|             action: `/scm/cms/cms/upload/multipartFile/fileModel`, | ||||
|             fileType: 'image/png,image/jpeg,image/jpg', | ||||
|             widget: 'upload', | ||||
|             action: apiConf.fileUpload, | ||||
|             fileType: 'image/png,image/jpeg,image/jpg,image/gif', | ||||
|             limit: 1, | ||||
|             limitFileCount: 1, | ||||
|             resReName: 'url', | ||||
|             urlReName: 'url', | ||||
|             widget: 'upload', | ||||
|             resReName: 'data.fullFileWatermarkPath', | ||||
|             urlReName: 'data.fullFileWatermarkPath', | ||||
|             descriptionI18n: '人车货照片', | ||||
|             data: { | ||||
|               // appId: environment.appId, | ||||
|               appId: this.envSrv.env.appId, | ||||
|             }, | ||||
|             name: 'multipartFile', | ||||
|             multiple: true, | ||||
|             listType: 'picture-card', | ||||
|             change: (args: any) => { | ||||
|               if (args.type === 'success') { | ||||
|                 const avatar = [ | ||||
|                   { | ||||
|                     uid: -1, | ||||
|                     name: 'LOGO', | ||||
|                     status: 'done', | ||||
|                     url: args.fileList[0].response.url, | ||||
|                     response: { | ||||
|                       url: args.fileList[0].response.url | ||||
|                     } | ||||
|                   } | ||||
|                 ]; | ||||
|                 this.sf?.setValue('/avatar', avatar); | ||||
|               } | ||||
|             }, | ||||
|             beforeUpload: (file: any, _fileList: any) => { | ||||
|             beforeUpload: (file: any, fileList: any) => { | ||||
|               return new Observable((observer: Observer<boolean>) => { | ||||
|                 const isLt2M = file.size / 1024 / 1024 < 5; | ||||
|                 if (!isLt2M) { | ||||
|                 const isLt1M = file.size / 1024 / 1024 < 5; | ||||
|                 const fileType = 'image/png,image/jpeg'; | ||||
|                 if (fileType.indexOf(file.type) === -1) { | ||||
|                   this.service.msgSrv.warning('图片格式不正确!'); | ||||
|                   observer.complete(); | ||||
|                   return; | ||||
|                 } | ||||
|                 if (!isLt1M) { | ||||
|                   this.service.msgSrv.warning('图片大小超过5M!'); | ||||
|                   observer.complete(); | ||||
|                   return; | ||||
|                 } | ||||
|                 observer.next(isLt2M); | ||||
|                 observer.next(isLt1M); | ||||
|                 observer.complete(); | ||||
|               }); | ||||
|             } | ||||
|           } as SFUploadWidgetSchema | ||||
|             }, | ||||
|             multiple: false, | ||||
|             listType: 'picture-card', | ||||
|           } as SFUploadWidgetSchema, | ||||
|         }, | ||||
|         no4: { | ||||
|           type: 'string', | ||||
| @ -174,124 +143,365 @@ export class VehicleSureArriveComponent implements OnInit { | ||||
|            }, | ||||
|            default: '单张大小不超过5M,支持.jpg、.jpeg和 .png格式', | ||||
|         }, | ||||
|         avatar3: { | ||||
|         imgUrl1: { | ||||
|           type: 'string', | ||||
|           title: '卸货凭证', | ||||
|           ui: { | ||||
|             action: `/scm/cms/cms/upload/multipartFile/fileModel`, | ||||
|             fileType: 'image/png,image/jpeg,image/jpg', | ||||
|             widget: 'upload', | ||||
|             action: apiConf.fileUpload, | ||||
|             fileType: 'image/png,image/jpeg,image/jpg,image/gif', | ||||
|             limit: 1, | ||||
|             limitFileCount: 1, | ||||
|             resReName: 'url', | ||||
|             urlReName: 'url', | ||||
|             widget: 'upload', | ||||
|             descriptionI18n: ' 提单号', | ||||
|             resReName: 'data.fullFileWatermarkPath', | ||||
|             urlReName: 'data.fullFileWatermarkPath', | ||||
|             descriptionI18n: '提货单', | ||||
|             data: { | ||||
|               // appId: environment.appId, | ||||
|               appId: this.envSrv.env.appId, | ||||
|             }, | ||||
|             name: 'multipartFile', | ||||
|             multiple: true, | ||||
|             listType: 'picture-card', | ||||
|             change: (args: any) => { | ||||
|               if (args.type === 'success') { | ||||
|                 const avatar = [ | ||||
|                   { | ||||
|                     uid: -1, | ||||
|                     name: 'LOGO', | ||||
|                     status: 'done', | ||||
|                     url: args.fileList[0].response.url, | ||||
|                     response: { | ||||
|                       url: args.fileList[0].response.url | ||||
|                     } | ||||
|                   } | ||||
|                 ]; | ||||
|                 this.sf?.setValue('/avatar', avatar); | ||||
|               } | ||||
|             }, | ||||
|             beforeUpload: (file: any, _fileList: any) => { | ||||
|             beforeUpload: (file: any, fileList: any) => { | ||||
|               return new Observable((observer: Observer<boolean>) => { | ||||
|                 const isLt2M = file.size / 1024 / 1024 < 5; | ||||
|                 if (!isLt2M) { | ||||
|                 const isLt1M = file.size / 1024 / 1024 < 5; | ||||
|                 const fileType = 'image/png,image/jpeg'; | ||||
|                 if (fileType.indexOf(file.type) === -1) { | ||||
|                   this.service.msgSrv.warning('图片格式不正确!'); | ||||
|                   observer.complete(); | ||||
|                   return; | ||||
|                 } | ||||
|                 if (!isLt1M) { | ||||
|                   this.service.msgSrv.warning('图片大小超过5M!'); | ||||
|                   observer.complete(); | ||||
|                   return; | ||||
|                 } | ||||
|                 observer.next(isLt2M); | ||||
|                 observer.next(isLt1M); | ||||
|                 observer.complete(); | ||||
|               }); | ||||
|             } | ||||
|           } as SFUploadWidgetSchema | ||||
|             }, | ||||
|             multiple: false, | ||||
|             listType: 'picture-card', | ||||
|           } as SFUploadWidgetSchema, | ||||
|         }, | ||||
|         avatar4: { | ||||
|         imgUrl2: { | ||||
|           type: 'string', | ||||
|           title: '', | ||||
|           ui: { | ||||
|             action: `/scm/cms/cms/upload/multipartFile/fileModel`, | ||||
|             fileType: 'image/png,image/jpeg,image/jpg', | ||||
|             widget: 'upload', | ||||
|             action: apiConf.fileUpload, | ||||
|             fileType: 'image/png,image/jpeg,image/jpg,image/gif', | ||||
|             limit: 1, | ||||
|             limitFileCount: 1, | ||||
|             resReName: 'url', | ||||
|             urlReName: 'url', | ||||
|             widget: 'upload', | ||||
|             resReName: 'data.fullFileWatermarkPath', | ||||
|             urlReName: 'data.fullFileWatermarkPath', | ||||
|             descriptionI18n: '人车货照片', | ||||
|             data: { | ||||
|               // appId: environment.appId, | ||||
|               appId: this.envSrv.env.appId, | ||||
|             }, | ||||
|             name: 'multipartFile', | ||||
|             multiple: true, | ||||
|             listType: 'picture-card', | ||||
|             change: (args: any) => { | ||||
|               if (args.type === 'success') { | ||||
|                 const avatar = [ | ||||
|                   { | ||||
|                     uid: -1, | ||||
|                     name: 'LOGO', | ||||
|                     status: 'done', | ||||
|                     url: args.fileList[0].response.url, | ||||
|                     response: { | ||||
|                       url: args.fileList[0].response.url | ||||
|                     } | ||||
|                   } | ||||
|                 ]; | ||||
|                 this.sf?.setValue('/avatar', avatar); | ||||
|               } | ||||
|             }, | ||||
|             beforeUpload: (file: any, _fileList: any) => { | ||||
|             beforeUpload: (file: any, fileList: any) => { | ||||
|               return new Observable((observer: Observer<boolean>) => { | ||||
|                 const isLt2M = file.size / 1024 / 1024 < 5; | ||||
|                 if (!isLt2M) { | ||||
|                 const isLt1M = file.size / 1024 / 1024 < 5; | ||||
|                 const fileType = 'image/png,image/jpeg'; | ||||
|                 if (fileType.indexOf(file.type) === -1) { | ||||
|                   this.service.msgSrv.warning('图片格式不正确!'); | ||||
|                   observer.complete(); | ||||
|                   return; | ||||
|                 } | ||||
|                 if (!isLt1M) { | ||||
|                   this.service.msgSrv.warning('图片大小超过5M!'); | ||||
|                   observer.complete(); | ||||
|                   return; | ||||
|                 } | ||||
|                 observer.next(isLt2M); | ||||
|                 observer.next(isLt1M); | ||||
|                 observer.complete(); | ||||
|               }); | ||||
|             } | ||||
|           } as SFUploadWidgetSchema | ||||
|             }, | ||||
|             multiple: false, | ||||
|             listType: 'picture-card', | ||||
|           } as SFUploadWidgetSchema, | ||||
|         } | ||||
|       }, | ||||
|       required: ['reason'] | ||||
|       required: ['time'] | ||||
|     }; | ||||
|   }else { | ||||
|     this.schema = { | ||||
|       properties: { | ||||
|         time: { | ||||
|           type: 'string', | ||||
|           title: '卸货时间', | ||||
|           format: 'date-time', | ||||
|         }, | ||||
|         weight: { | ||||
|           type: 'string', | ||||
|           title: '卸货重量', | ||||
|           ui: { | ||||
|             widget: 'custom', | ||||
|            } | ||||
|         }, | ||||
|         volume: { | ||||
|           type: 'string', | ||||
|           title: '卸货体积', | ||||
|           ui: { | ||||
|             widget: 'custom', | ||||
|            } | ||||
|         }, | ||||
|         imgUrl3: { | ||||
|           type: 'string', | ||||
|           title: '装货凭证', | ||||
|           readOnly: true, | ||||
|           ui: { | ||||
|             widget: 'upload', | ||||
|             action: apiConf.fileUpload, | ||||
|             fileType: 'image/png,image/jpeg,image/jpg,image/gif', | ||||
|             limit: 1, | ||||
|             limitFileCount: 1, | ||||
|             resReName: 'data.fullFileWatermarkPath', | ||||
|             urlReName: 'data.fullFileWatermarkPath', | ||||
|             descriptionI18n: '提货单', | ||||
|             data: { | ||||
|               appId: this.envSrv.env.appId, | ||||
|             }, | ||||
|             name: 'multipartFile', | ||||
|             beforeUpload: (file: any, fileList: any) => { | ||||
|               return new Observable((observer: Observer<boolean>) => { | ||||
|                 const isLt1M = file.size / 1024 / 1024 < 5; | ||||
|                 const fileType = 'image/png,image/jpeg'; | ||||
|                 if (fileType.indexOf(file.type) === -1) { | ||||
|                   this.service.msgSrv.warning('图片格式不正确!'); | ||||
|                   observer.complete(); | ||||
|                   return; | ||||
|                 } | ||||
|                 if (!isLt1M) { | ||||
|                   this.service.msgSrv.warning('图片大小超过5M!'); | ||||
|                   observer.complete(); | ||||
|                   return; | ||||
|                 } | ||||
|                 observer.next(isLt1M); | ||||
|                 observer.complete(); | ||||
|               }); | ||||
|             }, | ||||
|             multiple: false, | ||||
|             listType: 'picture-card', | ||||
|           } as SFUploadWidgetSchema, | ||||
|         }, | ||||
|         imgUrl4: { | ||||
|           type: 'string', | ||||
|           title: '', | ||||
|           readOnly: true, | ||||
|           ui: { | ||||
|             widget: 'upload', | ||||
|             action: apiConf.fileUpload, | ||||
|             fileType: 'image/png,image/jpeg,image/jpg,image/gif', | ||||
|             limit: 1, | ||||
|             limitFileCount: 1, | ||||
|             resReName: 'data.fullFileWatermarkPath', | ||||
|             urlReName: 'data.fullFileWatermarkPath', | ||||
|             descriptionI18n: '人车货照片', | ||||
|             data: { | ||||
|               appId: this.envSrv.env.appId, | ||||
|             }, | ||||
|             name: 'multipartFile', | ||||
|             beforeUpload: (file: any, fileList: any) => { | ||||
|               return new Observable((observer: Observer<boolean>) => { | ||||
|                 const isLt1M = file.size / 1024 / 1024 < 5; | ||||
|                 const fileType = 'image/png,image/jpeg'; | ||||
|                 if (fileType.indexOf(file.type) === -1) { | ||||
|                   this.service.msgSrv.warning('图片格式不正确!'); | ||||
|                   observer.complete(); | ||||
|                   return; | ||||
|                 } | ||||
|                 if (!isLt1M) { | ||||
|                   this.service.msgSrv.warning('图片大小超过5M!'); | ||||
|                   observer.complete(); | ||||
|                   return; | ||||
|                 } | ||||
|                 observer.next(isLt1M); | ||||
|                 observer.complete(); | ||||
|               }); | ||||
|             }, | ||||
|             multiple: false, | ||||
|             listType: 'picture-card', | ||||
|           } as SFUploadWidgetSchema, | ||||
|         }, | ||||
|         no4: { | ||||
|           type: 'string', | ||||
|           title: '', | ||||
|           ui: { | ||||
|             widget: 'text', | ||||
|            }, | ||||
|            default: '单张大小不超过5M,支持.jpg、.jpeg和 .png格式', | ||||
|         }, | ||||
|         imgUrl1: { | ||||
|           type: 'string', | ||||
|           title: '卸货凭证', | ||||
|           ui: { | ||||
|             widget: 'upload', | ||||
|             action: apiConf.fileUpload, | ||||
|             fileType: 'image/png,image/jpeg,image/jpg,image/gif', | ||||
|             limit: 1, | ||||
|             limitFileCount: 1, | ||||
|             resReName: 'data.fullFileWatermarkPath', | ||||
|             urlReName: 'data.fullFileWatermarkPath', | ||||
|             descriptionI18n: '提货单', | ||||
|             data: { | ||||
|               appId: this.envSrv.env.appId, | ||||
|             }, | ||||
|             name: 'multipartFile', | ||||
|             beforeUpload: (file: any, fileList: any) => { | ||||
|               return new Observable((observer: Observer<boolean>) => { | ||||
|                 const isLt1M = file.size / 1024 / 1024 < 5; | ||||
|                 const fileType = 'image/png,image/jpeg'; | ||||
|                 if (fileType.indexOf(file.type) === -1) { | ||||
|                   this.service.msgSrv.warning('图片格式不正确!'); | ||||
|                   observer.complete(); | ||||
|                   return; | ||||
|                 } | ||||
|                 if (!isLt1M) { | ||||
|                   this.service.msgSrv.warning('图片大小超过5M!'); | ||||
|                   observer.complete(); | ||||
|                   return; | ||||
|                 } | ||||
|                 observer.next(isLt1M); | ||||
|                 observer.complete(); | ||||
|               }); | ||||
|             }, | ||||
|             multiple: false, | ||||
|             listType: 'picture-card', | ||||
|           } as SFUploadWidgetSchema, | ||||
|         }, | ||||
|         imgUrl2: { | ||||
|           type: 'string', | ||||
|           title: '', | ||||
|           ui: { | ||||
|             widget: 'upload', | ||||
|             action: apiConf.fileUpload, | ||||
|             fileType: 'image/png,image/jpeg,image/jpg,image/gif', | ||||
|             limit: 1, | ||||
|             limitFileCount: 1, | ||||
|             resReName: 'data.fullFileWatermarkPath', | ||||
|             urlReName: 'data.fullFileWatermarkPath', | ||||
|             descriptionI18n: '人车货照片', | ||||
|             data: { | ||||
|               appId: this.envSrv.env.appId, | ||||
|             }, | ||||
|             name: 'multipartFile', | ||||
|             beforeUpload: (file: any, fileList: any) => { | ||||
|               return new Observable((observer: Observer<boolean>) => { | ||||
|                 const isLt1M = file.size / 1024 / 1024 < 5; | ||||
|                 const fileType = 'image/png,image/jpeg'; | ||||
|                 if (fileType.indexOf(file.type) === -1) { | ||||
|                   this.service.msgSrv.warning('图片格式不正确!'); | ||||
|                   observer.complete(); | ||||
|                   return; | ||||
|                 } | ||||
|                 if (!isLt1M) { | ||||
|                   this.service.msgSrv.warning('图片大小超过5M!'); | ||||
|                   observer.complete(); | ||||
|                   return; | ||||
|                 } | ||||
|                 observer.next(isLt1M); | ||||
|                 observer.complete(); | ||||
|               }); | ||||
|             }, | ||||
|             multiple: false, | ||||
|             listType: 'picture-card', | ||||
|           } as SFUploadWidgetSchema, | ||||
|         } | ||||
|       }, | ||||
|       required: ['time', 'weight' ] | ||||
|     }; | ||||
|   } | ||||
|     this.ui = { | ||||
|       '*': { | ||||
|         spanLabelFixed: 100, | ||||
|         grid: { span: 20 } | ||||
|       }, | ||||
|       $avatar: { grid: { span: 12} }, | ||||
|       $avatar2: { grid: { span: 12} }, | ||||
|       $avatar3: { grid: { span: 12} }, | ||||
|       $avatar4: { grid: { span: 12} }, | ||||
|       $imgUrl1: { grid: { span: 12} }, | ||||
|       $imgUrl2: { grid: { span: 12} }, | ||||
|       $imgUrl3: { grid: { span: 12} }, | ||||
|       $imgUrl4: { grid: { span: 12} }, | ||||
|     }; | ||||
|   } | ||||
|   save(value: any): void { | ||||
|     console.log(value) | ||||
|     // this.http.post(`/user/${this.record.id}`, value).subscribe(res => { | ||||
|     //   this.msgSrv.success('保存成功'); | ||||
|     //   this.modal.close(true); | ||||
|     // }); | ||||
|   } | ||||
|     if(this.Status === 1) { | ||||
|       if(!value.time) { | ||||
|         this.service.msgSrv.warning('必填项为空!') | ||||
|         return; | ||||
|        } | ||||
|        const params = { | ||||
|         id: this.i.id, | ||||
|         imgUrl1: value.imgUrl1.data.fullFilePath, | ||||
|         imgUrl2: value.imgUrl2.data.fullFilePath, | ||||
|         time: value.time, | ||||
|       } | ||||
|       params.time = this.datePipe.transform(value.time, 'yyyy-MM-dd HH:mm:ss ') | ||||
|       this.service.request(this.service.$api_get_insertWholeUnloadCarInfo, params).subscribe((res) => { | ||||
|         if(res) { | ||||
|           this.service.msgSrv.success('确认到车成功!') | ||||
|            this.modal.destroy(); | ||||
|         } else{ | ||||
|           this.service.msgSrv.error(res.msg) | ||||
|         } | ||||
|       }) | ||||
|     } else { | ||||
|       if(!value.time || !this.data.weight) { | ||||
|         this.service.msgSrv.warning('必填项为空!') | ||||
|         return; | ||||
|        } | ||||
|         console.log(value) | ||||
|         console.log(this.i) | ||||
|         const params = { | ||||
|           id: this.i?.id, | ||||
|           imgUrl1: value.imgUrl1.data.fullFilePath, | ||||
|           imgUrl2: value.imgUrl2.data.fullFilePath, | ||||
|           time: value.time, | ||||
|           volume: this.data.volume, | ||||
|           weight: this.data.weight | ||||
|         } | ||||
|         params.time = this.datePipe.transform(value.time, 'yyyy-MM-dd HH:mm:ss ') | ||||
|         console.log(params) | ||||
|         this.service.request(this.service.$api_get_insertBulkUnloadCarInfo, params).subscribe((res) => { | ||||
|           if(res) { | ||||
|             this.service.msgSrv.success('确认到车成功!') | ||||
|              this.modal.destroy(); | ||||
|           } else{ | ||||
|             this.service.msgSrv.error(res.msg) | ||||
|           } | ||||
|         }) | ||||
|     } | ||||
|  | ||||
|   } | ||||
|     //  确认到车界面信息(两个只能看的图片) | ||||
|   initData() { | ||||
|     this.service.request(this.service.$api_get_getUnloadCarInfo, { id : this.i?.id}).subscribe((res) => { | ||||
|       console.log(res) | ||||
|       if (res.imgUrl1) { | ||||
|         this.formData = { | ||||
|           imgUrl3: [ | ||||
|             { | ||||
|               uid: 'logo', | ||||
|               name: 'LOGO', | ||||
|               status: 'done', | ||||
|               url: res.imgUrl1, | ||||
|               response: { | ||||
|                 url: res.imgUrl1, | ||||
|               }, | ||||
|             }, | ||||
|       ], | ||||
|           imgUrl4: [ | ||||
|             { | ||||
|               uid: 'logo', | ||||
|               name: 'LOGO', | ||||
|               status: 'done', | ||||
|               url: res.imgUrl2, | ||||
|               response: { | ||||
|                 url: res.imgUrl2, | ||||
|               }, | ||||
|             }, | ||||
|       ], | ||||
|         }; | ||||
|       } | ||||
|     }) | ||||
|   } | ||||
|   close(): void { | ||||
|     this.modal.destroy(); | ||||
|   } | ||||
|  | ||||
| @ -1,7 +1,7 @@ | ||||
| <!-- | ||||
|  * @Author: your name | ||||
|  * @Date: 2021-12-14 15:53:03 | ||||
|  * @LastEditTime: 2021-12-20 16:28:39 | ||||
|  * @LastEditTime: 2021-12-20 19:03:53 | ||||
|  * @LastEditors: Please set LastEditors | ||||
|  * @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE | ||||
|  * @FilePath: \tms-obc-web\src\app\routes\order-management\modal\bulk\sure-depart\sure-depart.component.html | ||||
|  | ||||
| @ -1,12 +1,4 @@ | ||||
| import { preloaderFinished } from '@delon/theme'; | ||||
| /* | ||||
|  * @Author: your name | ||||
|  * @Date: 2021-12-14 14:03:07 | ||||
|  * @LastEditTime: 2021-12-20 16:54:21 | ||||
|  * @LastEditors: Please set LastEditors | ||||
|  * @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE | ||||
|  * @FilePath: \tms-obc-web\src\app\routes\order-management\modal\bulk\update-freight\update-freight.component.ts | ||||
|  */ | ||||
|  | ||||
| import { Component, OnInit, ViewChild } from '@angular/core'; | ||||
| import { | ||||
|   SFComponent, | ||||
| @ -27,11 +19,13 @@ import { NzModalRef } from 'ng-zorro-antd/modal'; | ||||
| import { Observable, Observer } from 'rxjs'; | ||||
| import { WaybillManagementServe } from 'src/app/routes/waybill-management/services/waybill-management.service'; | ||||
| import { EAEnvironmentService, EADateUtil } from '@shared'; | ||||
| import { DatePipe } from '@angular/common'; | ||||
|  | ||||
| @Component({ | ||||
|   selector: 'app-order-management-vehicle-sure-depart', | ||||
|   templateUrl: './sure-depart.component.html', | ||||
|   styleUrls: ['./sure-depart.component.less'] | ||||
|   styleUrls: ['./sure-depart.component.less'], | ||||
|   providers: [DatePipe] | ||||
| }) | ||||
| export class VehicleSureDepartComponent implements OnInit { | ||||
|   record: any = {}; | ||||
| @ -44,24 +38,31 @@ export class VehicleSureDepartComponent implements OnInit { | ||||
|   @ViewChild('sf', { static: false }) sf!: SFComponent; | ||||
|   schema: SFSchema = {}; | ||||
|   ui: SFUISchema = {}; | ||||
|   constructor(private modal: NzModalRef, private msgSrv: NzMessageService, public http: _HttpClient, public service: WaybillManagementServe, private envSrv: EAEnvironmentService,) {} | ||||
|   constructor(private modal: NzModalRef, private msgSrv: NzMessageService, public http: _HttpClient, public service: WaybillManagementServe, private envSrv: EAEnvironmentService,private datePipe: DatePipe) {} | ||||
|  | ||||
|   ngOnInit(): void { | ||||
|     this.initSF(); | ||||
|     console.log(this.i) | ||||
|     this.data.weight = this.i?.weight | ||||
|     this.i.time = this.i.loadingTime; | ||||
|     console.log(this.Status) | ||||
|   } | ||||
|   initSF() { | ||||
|     if(this.Status === 1) { | ||||
|       this.schema = { | ||||
|         properties: { | ||||
|           datetime: { | ||||
|           time: { | ||||
|             type: 'string', | ||||
|             title: '装货时间', | ||||
|             format: 'date-time', | ||||
|           }, | ||||
|           no4: { | ||||
|             type: 'string', | ||||
|             title: '', | ||||
|             ui: { | ||||
|               widget: 'text', | ||||
|              }, | ||||
|              default: '单张大小不超过5M,支持.jpg、.jpeg和 .png格式', | ||||
|           }, | ||||
|           imgUrl1: { | ||||
|             type: 'string', | ||||
|             title: '装货凭证', | ||||
| @ -252,7 +253,7 @@ export class VehicleSureDepartComponent implements OnInit { | ||||
|             } as SFUploadWidgetSchema, | ||||
|           } | ||||
|         }, | ||||
|         required: ['reason'] | ||||
|         required: ['time', 'weight'] | ||||
|       }; | ||||
|     } | ||||
|    | ||||
| @ -266,27 +267,51 @@ export class VehicleSureDepartComponent implements OnInit { | ||||
|     }; | ||||
|   } | ||||
|   save(value: any): void { | ||||
|     | ||||
|     console.log(value) | ||||
|     const params = { | ||||
|       id: this.i.id, | ||||
|       imgUrl1: value.imgUrl1.data.fullFilePath, | ||||
|       imgUrl2: value.imgUrl2.data.fullFilePath, | ||||
|       time: value.time, | ||||
|       volume: this.data.volume, | ||||
|       weight: this.data.weight | ||||
|     if(this.Status === 1) { | ||||
|       if(!value.time) { | ||||
|         this.service.msgSrv.warning('必填项为空!') | ||||
|         return; | ||||
|        } | ||||
|        const params = { | ||||
|         id: this.i.id, | ||||
|         imgUrl1: value.imgUrl1.data.fullFilePath, | ||||
|         imgUrl2: value.imgUrl2.data.fullFilePath, | ||||
|         time: value.time, | ||||
|       } | ||||
|       params.time = this.datePipe.transform(value.time, 'yyyy-MM-dd HH:mm:ss ') | ||||
|       this.service.request(this.service.$api_get_insertWholeStartCarInfo, params).subscribe((res) => { | ||||
|         if(res) { | ||||
|           this.service.msgSrv.success('确认发车成功!') | ||||
|            this.modal.destroy(); | ||||
|         } else{ | ||||
|           this.service.msgSrv.error(res.msg) | ||||
|         } | ||||
|       }) | ||||
|     } else { | ||||
|       if(!value.time || !this.data.weight) { | ||||
|         this.service.msgSrv.warning('必填项为空!') | ||||
|         return; | ||||
|        } | ||||
|         console.log(value) | ||||
|         const params = { | ||||
|           id: this.i.id, | ||||
|           imgUrl1: value.imgUrl1.data.fullFilePath, | ||||
|           imgUrl2: value.imgUrl2.data.fullFilePath, | ||||
|           time: value.time, | ||||
|           volume: this.data.volume, | ||||
|           weight: this.data.weight | ||||
|         } | ||||
|         params.time = this.datePipe.transform(value.time, 'yyyy-MM-dd HH:mm:ss ') | ||||
|         this.service.request(this.service.$api_get_insertBulkStartCarInfo, params).subscribe((res) => { | ||||
|           if(res) { | ||||
|             this.service.msgSrv.success('确认发车成功!') | ||||
|              this.modal.destroy(); | ||||
|           } else{ | ||||
|             this.service.msgSrv.error(res.msg) | ||||
|           } | ||||
|         }) | ||||
|     } | ||||
|     console.log(EADateUtil.yearToDateTime(value.time)) | ||||
|     params.time = EADateUtil.yearToDateTime(value.time) | ||||
|     console.log(params) | ||||
|  | ||||
|     // this.service.request(this.service.$api_get_insertBulkStartCarInfo, params).subscribe((res) => { | ||||
|     //   if(res) { | ||||
|     //     this.service.msgSrv.success('确认发车成功!') | ||||
|     //   } else{ | ||||
|     //     this.service.msgSrv.error(res.msg) | ||||
|     //   } | ||||
|     // }) | ||||
|   } | ||||
|  | ||||
|   close(): void { | ||||
|  | ||||
| @ -1,20 +1,11 @@ | ||||
| <!-- | ||||
|  * @Author: your name | ||||
|  * @Date: 2021-12-15 13:17:42 | ||||
|  * @LastEditTime: 2021-12-20 15:55:51 | ||||
|  * @LastEditors: your name | ||||
|  * @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE | ||||
|  * @FilePath: \tms-obc-web\src\app\routes\order-management\modal\vehicle\update-freight\update-freight.component.html | ||||
| --> | ||||
| <nz-spin *ngIf="!i" class="modal-spin"></nz-spin> | ||||
| <sf #sf mode="edit" [schema]="schema" [ui]="ui" [formData]="i" button="none"></sf> | ||||
| <sf #sf mode="edit" [schema]="schema" [ui]="ui" button="none"></sf> | ||||
| <nz-divider></nz-divider> | ||||
| <div> | ||||
|   <p> | ||||
|     <span style="font-weight: bolder" | ||||
|       >总运费:<span style="color: #dc112a">¥{{ totalPrice }}</span></span | ||||
|       >总运费:<span style="color: #dc112a">¥{{ data.totalFreight }}</span></span | ||||
|     > | ||||
|     (运输费:¥{{ tranPrice }},附加费:¥{{ otherPrice }}) | ||||
|     (运输费:¥{{ data.freight }},附加费:¥{{ data.surcharge }}) | ||||
|   </p> | ||||
|   <p> | ||||
|     <label nz-checkbox [(ngModel)]="aggreechecked">确认已阅读并知晓<a>《变更协议》</a></label> | ||||
|  | ||||
| @ -2,12 +2,12 @@ import { preloaderFinished } from '@delon/theme'; | ||||
| /* | ||||
|  * @Author: your name | ||||
|  * @Date: 2021-12-14 14:03:07 | ||||
|  * @LastEditTime: 2021-12-20 15:57:37 | ||||
|  * @LastEditTime: 2021-12-21 14:56:26 | ||||
|  * @LastEditors: Please set LastEditors | ||||
|  * @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE | ||||
|  * @FilePath: \tms-obc-web\src\app\routes\order-management\modal\bulk\update-freight\update-freight.component.ts | ||||
|  */ | ||||
| import { Component, OnInit, ViewChild } from '@angular/core'; | ||||
| import { Component, Input, OnInit, ViewChild } from '@angular/core'; | ||||
| import { | ||||
|   SFComponent, | ||||
|   SFCustomWidgetSchema, | ||||
| @ -29,47 +29,33 @@ import { OrderManagementService } from '../../../services/order-management.servi | ||||
|   styleUrls: ['./update-freight.component.less'] | ||||
| }) | ||||
| export class VehicleUpdateFreightComponent implements OnInit { | ||||
|   record: any; | ||||
|   i: any; | ||||
|   @ViewChild('sf', { static: false }) sf!: SFComponent; | ||||
|   schema: SFSchema = {}; | ||||
|   ui: SFUISchema = {}; | ||||
|  | ||||
|   totalPrice = 0; | ||||
|   tranPrice = 0; | ||||
|   otherPrice = 0; | ||||
|  | ||||
|   aggreechecked = false; | ||||
|  | ||||
|   @Input() | ||||
|   data: any; | ||||
|  | ||||
|   constructor(private modal: NzModalRef, private msgSrv: NzMessageService, public service: OrderManagementService) {} | ||||
|  | ||||
|   ngOnInit(): void { | ||||
|     this.i = { | ||||
|       prePay: this.record?.mybidDetailInfo?.filter((data: any) => data.expenseCode === 'PRE')[0]?.price || 0, | ||||
|       toPay: this.record?.mybidDetailInfo?.filter((data: any) => data.expenseCode === 'RECE')[0]?.price || 0, | ||||
|       oilCardPay: this.record?.mybidDetailInfo?.filter((data: any) => data.expenseCode === 'OIL')[0]?.price || 0, | ||||
|       receiptPay: this.record?.mybidDetailInfo?.filter((data: any) => data.expenseCode === 'BACK')[0]?.price || 0, | ||||
|       prePayStatus: this.record?.mybidDetailInfo?.filter((data: any) => data.expenseCode === 'PRE')[0]?.paymentStatus, | ||||
|       toPayStatus: this.record?.mybidDetailInfo?.filter((data: any) => data.expenseCode === 'RECE')[0]?.paymentStatus, | ||||
|       oilCardPayStatus: this.record?.mybidDetailInfo?.filter((data: any) => data.expenseCode === 'OIL')[0]?.paymentStatus, | ||||
|       receiptPayStatus: this.record?.mybidDetailInfo?.filter((data: any) => data.expenseCode === 'BACK')[0]?.paymentStatus | ||||
|     }; | ||||
|     this.tranPrice = this.i.prePay + this.i.toPay + this.i.oilCardPay + this.i.receiptPay; | ||||
|     this.totalPrice = this.i.prePay + this.i.toPay + this.i.oilCardPay + this.i.receiptPay + this.otherPrice; | ||||
|     this.initSF(); | ||||
|     this.service.request(this.service.$api_get_getFreightChangeWholeDetail, { id: this.record.id}).subscribe((res) => { | ||||
|       console.log(res) | ||||
|       console.log(this.i) | ||||
|       console.log(this.tranPrice) | ||||
|     }) | ||||
|     this.initSF(this.data); | ||||
|   } | ||||
|   initSF() { | ||||
|   initSF(data: any) { | ||||
|     const info = { | ||||
|       prePay: data.list?.filter((item: any) => item.costCode === 'PRE')[0], | ||||
|       toPay: data.list?.filter((item: any) => item.costCode === 'RECE')[0], | ||||
|       receiptPay: data.list?.filter((item: any) => item.costCode === 'BACK')[0] | ||||
|     }; | ||||
|     this.schema = { | ||||
|       properties: { | ||||
|         prePay: { | ||||
|           type: 'number', | ||||
|           title: '预付', | ||||
|           default: 0.0, | ||||
|           readOnly: this.i.prePayStatus !== '3', | ||||
|           default: info.prePay?.price || 0, | ||||
|           readOnly: info.prePay?.paymentStatus === '2' || info.prePay?.paymentStatus === '4', | ||||
|           ui: { | ||||
|             prefix: '¥', | ||||
|             widgetWidth: 200, | ||||
| @ -80,8 +66,8 @@ export class VehicleUpdateFreightComponent implements OnInit { | ||||
|         toPay: { | ||||
|           type: 'number', | ||||
|           title: '到付', | ||||
|           default: 0.0, | ||||
|           readOnly: this.i.toPayStatus !== '3', | ||||
|           default: info.toPay?.price || 0, | ||||
|           readOnly: info.toPay?.paymentStatus === '2' || info.toPay?.paymentStatus === '4', | ||||
|           ui: { | ||||
|             prefix: '¥', | ||||
|             widgetWidth: 200, | ||||
| @ -104,8 +90,8 @@ export class VehicleUpdateFreightComponent implements OnInit { | ||||
|         receiptPay: { | ||||
|           type: 'number', | ||||
|           title: '回单付', | ||||
|           default: 0.0, | ||||
|           readOnly: this.i.receiptPayStatus !== '3', | ||||
|           default: info.receiptPay?.price || 0, | ||||
|           readOnly: info.receiptPay?.paymentStatus === '2' || info.receiptPay?.paymentStatus === '4', | ||||
|           ui: { | ||||
|             prefix: '¥', | ||||
|             widgetWidth: 200, | ||||
| @ -132,10 +118,11 @@ export class VehicleUpdateFreightComponent implements OnInit { | ||||
|       } | ||||
|     }; | ||||
|   } | ||||
|  | ||||
|   save(value: any): void { | ||||
|     const editItems = this.record?.mybidDetailInfo.filter((data: any) => data.receiptPayStatus === '3'); | ||||
|     const editItems = this.data.list?.filter((info: any) => info.toPay?.paymentStatus !== '2' && info.toPay?.paymentStatus !== '4'); | ||||
|     editItems.forEach((item: any) => { | ||||
|       switch (item.expenseName) { | ||||
|       switch (item.costName) { | ||||
|         case '预付': | ||||
|           item.price = this.sf.value.prePay; | ||||
|           break; | ||||
| @ -151,18 +138,17 @@ export class VehicleUpdateFreightComponent implements OnInit { | ||||
|     }); | ||||
|  | ||||
|     const params = { | ||||
|       id: this.record?.id, | ||||
|       billId: this.data.id, | ||||
|       dtos: editItems, | ||||
|       changeCause: this.sf.value.changeCause | ||||
|     }; | ||||
|  | ||||
|     // this.service.request(this.service.$api_insertFreightChangeWhole, params).subscribe((res: any) => { | ||||
|     //   if (res) { | ||||
|     //     this.modal.destroy(); | ||||
|     //   } else { | ||||
|     //     this.service.msgSrv.error(res.msg); | ||||
|     //   } | ||||
|     // }); | ||||
|     this.service.request(this.service.$api_get_insertFreightChangeWhole, params).subscribe((res: any) => { | ||||
|       if (res) { | ||||
|         this.modal.destroy(); | ||||
|         this.service.msgSrv.success('变更运费成功'); | ||||
|       } | ||||
|     }); | ||||
|   } | ||||
|  | ||||
|   close(): void { | ||||
| @ -173,7 +159,7 @@ export class VehicleUpdateFreightComponent implements OnInit { | ||||
|    * | ||||
|    */ | ||||
|   changeNumVal() { | ||||
|     this.tranPrice = this.sf.value.prePay + this.sf.value.toPay + this.sf.value.oilCardPay + this.sf.value.receiptPay; | ||||
|     this.totalPrice = this.sf.value.prePay + this.sf.value.toPay + this.sf.value.oilCardPay + this.sf.value.receiptPay + this.otherPrice; | ||||
|     // this.tranPrice = this.sf.value.prePay + this.sf.value.toPay + this.sf.value.oilCardPay + this.sf.value.receiptPay; | ||||
|     // this.totalPrice = this.sf.value.prePay + this.sf.value.toPay + this.sf.value.oilCardPay + this.sf.value.receiptPay + this.otherPrice; | ||||
|   } | ||||
| } | ||||
|  | ||||
| @ -1,7 +1,7 @@ | ||||
| /* | ||||
|  * @Author: your name | ||||
|  * @Date: 2021-12-03 15:31:52 | ||||
|  * @LastEditTime: 2021-12-15 14:09:53 | ||||
|  * @LastEditTime: 2021-12-21 10:16:11 | ||||
|  * @LastEditors: Please set LastEditors | ||||
|  * @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE | ||||
|  * @FilePath: \tms-obc-web\src\app\routes\order-management\order-management.module.ts | ||||
| @ -24,6 +24,7 @@ import { ConfirReceiptComponent } from './modal/bulk/confir-receipt/confir-recei | ||||
| import { SureArriveComponent } from './modal/bulk/sure-arrive/sure-arrive.component'; | ||||
| import { SureDepartComponent } from './modal/bulk/sure-depart/sure-depart.component'; | ||||
| import { UpdateFreightComponent } from './modal/bulk/update-freight/update-freight.component'; | ||||
| import { OneCarOrderCancelComponent } from './modal/vehicle/cancel/cancel.component'; | ||||
| import { VehicleConfirReceiptComponent } from './modal/vehicle/confir-receipt/confir-receipt.component'; | ||||
| import { VehicleSureArriveComponent } from './modal/vehicle/sure-arrive/sure-arrive.component'; | ||||
| import { VehicleSureDepartComponent } from './modal/vehicle/sure-depart/sure-depart.component'; | ||||
| @ -49,7 +50,8 @@ const COMPONENTS: Type<void>[] = [ | ||||
|   VehicleConfirReceiptComponent, | ||||
|   VehicleSureDepartComponent, | ||||
|   VehicleSureArriveComponent, | ||||
|   OrderManagementRiskDetailComponent | ||||
|   OrderManagementRiskDetailComponent, | ||||
|   OneCarOrderCancelComponent | ||||
| ]; | ||||
|  | ||||
| @NgModule({ | ||||
|  | ||||
| @ -1,7 +1,7 @@ | ||||
| /* | ||||
|  * @Author: your name | ||||
|  * @Date: 2021-12-03 15:31:52 | ||||
|  * @LastEditTime: 2021-12-20 15:30:26 | ||||
|  * @LastEditTime: 2021-12-21 13:17:37 | ||||
|  * @LastEditors: Please set LastEditors | ||||
|  * @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE | ||||
|  * @FilePath: \tms-obc-web\src\app\routes\order-management\services\order-management.service.ts | ||||
| @ -45,6 +45,36 @@ export class OrderManagementService extends BaseService { | ||||
|     $api_get_getFreightChangeWholeDetail = `/api/sdc/billFreightChangeApplication/getFreightChangeWholeDetail`; | ||||
|     //  订单申请撤销 | ||||
|     $api_get_revokeChangeRecord = `/api/sdc/billFreightChangeApplication/revokeChangeRecord`; | ||||
|     //  运费变更申请-整车 | ||||
|     $api_get_insertFreightChangeWhole = `/api/sdc/billFreightChangeApplication/insertFreightChangeWhole`; | ||||
|     //  取消订单 | ||||
|     $api_get_cancelAnOrder = `/api/sdc/billOperate/cancelAnOrder`; | ||||
|     //  批量签收整车订单 | ||||
|     $api_get_batchSignWholeOrder = `/api/sdc/billOperate/batchSignWholeOrder`; | ||||
|     //  批量签收大宗订单 | ||||
|     $api_get_batchSignBulkOrder = `/api/sdc/billOperate/batchSignBulkOrder`; | ||||
|     //  大宗签收详情 | ||||
|     $api_get_getBulkSignForDetail = `/api/sdc/billOperate/getBulkSignForDetail`; | ||||
|     //  整车签收详情 | ||||
|     $api_get_getWholeSignForDetail = `/api/sdc/billOperate/getWholeSignForDetail`; | ||||
|     //  确认签收大宗订单 | ||||
|     $api_get_signBulkOrder = `/api/sdc/billOperate/signBulkOrder`; | ||||
|     //  确认签收整车订单 | ||||
|     $api_get_signWholeOrder = `/api/sdc/billOperate/signWholeOrder`; | ||||
|   // 上传图片 | ||||
|   public $api_upload_url = `/api/mdc/pbc/upload/multipartFile/file`; | ||||
|   // 根据用户id查用户信息(注意:nickName才是用户名称) | ||||
|   public $api_getUserDetailByAppUserId = `/api/mdc/cuc/userBasicInfo/get`; | ||||
|   // 根据车辆id查车辆信息 | ||||
|   public $api_getCarLicenseByIds = `/api/mdc/cuc/carLicense/getCarLicenseByIds`; | ||||
|   // 统计【整车】订单状态数量 | ||||
|   public $api_statisticalStatus = `/api/sdc/billOperate/getWholeStatistical`; | ||||
|   // 统计【大宗】订单状态数量 | ||||
|   public $api_getBulkStatistical = `/api/sdc/billOperate/getBulkStatistical`; | ||||
|   // 变更运费页面-大宗 | ||||
|   public $api_getFreightChangeBulkDetail = `/api/sdc/billFreightChangeApplication/getFreightChangeBulkDetail`; | ||||
|   // 变更运费页面-大宗 | ||||
|   public $api_insertFreightChangeBulk = `/api/sdc/billFreightChangeApplication/insertFreightChangeBulk`; | ||||
|   constructor(public injector: Injector) { | ||||
|     super(injector) | ||||
|   } | ||||
|  | ||||
| @ -0,0 +1,44 @@ | ||||
| <div class="modal-header"> | ||||
|   <div class="modal-title">添加司机</div> | ||||
| </div> | ||||
| <!-- <nz-spin *ngIf="!i" class="modal-spin"></nz-spin> --> | ||||
| <div class="sfBox"> | ||||
|   <sf #sf [compact]="true" [ui]="ui" [schema]="schema" [button]="'none'" *ngIf="schema"> | ||||
|     <ng-template sf-template="tipsA" let-me let-ui="ui" let-schema="schema"> | ||||
|       <div class="pr"> | ||||
|           <dl class="tips"> | ||||
|               <dt>正面照</dt> | ||||
|               <dd>示例</dd> | ||||
|           </dl> | ||||
|           <div class="pa"><img width="190" src="/assets/images/eg01.png" /></div> | ||||
|       </div> | ||||
|   </ng-template> | ||||
|   <ng-template sf-template="tipsB" let-me let-ui="ui" let-schema="schema"> | ||||
|       <div class="pr"> | ||||
|           <dl class="tips"> | ||||
|               <dt>背面照</dt> | ||||
|               <dd>示例</dd> | ||||
|           </dl> | ||||
|           <div class="pa"><img width="190" src="/assets/images/eg02.png" /></div> | ||||
|       </div> | ||||
|   </ng-template> | ||||
|   </sf> | ||||
|   <sf #sf1 [compact]="true" [ui]="ui" [schema]="schema1" [button]="'none'" *ngIf="schema1"></sf> | ||||
|   <sf #sf2 [compact]="true" [ui]="ui" [schema]="schema2" [button]="'none'" *ngIf="schema2"></sf> | ||||
|   <!-- <div class="example" (click)="showExample()"> | ||||
|       查看示例 | ||||
|       <div class="popBox" *ngIf="showCardFlag"> | ||||
|           <img src="https://ng.ant.design/assets/img/logo.svg" alt=""> | ||||
|       </div> | ||||
|   </div> | ||||
|   <div class="example positionSet" (click)="showJopExample()"> | ||||
|       查看示例 | ||||
|       <div class="popBox" *ngIf="showJopFlag"> | ||||
|           <img src="https://ng.ant.design/assets/img/logo.svg" alt=""> | ||||
|       </div> | ||||
|   </div> --> | ||||
| </div> | ||||
| <div class="modal-footer"> | ||||
|   <button nz-button type="button" (click)="close()">关闭</button> | ||||
|   <button nz-button type="button" nzType="primary" (click)="submitForm()">确定</button> | ||||
| </div> | ||||
| @ -0,0 +1,25 @@ | ||||
| .pr { | ||||
|     position: relative; | ||||
|   } | ||||
|  | ||||
|   .pa { | ||||
|     position: absolute; | ||||
|     top: 35px; | ||||
|     left: 150px; | ||||
|   } | ||||
|  | ||||
|   .tips { | ||||
|     display: flex; | ||||
|     margin-bottom: 0; | ||||
|     color: #333; | ||||
|  | ||||
|     dt { | ||||
|       width: 150px; | ||||
|     } | ||||
|  | ||||
|     dd { | ||||
|       width: 190px; | ||||
|       margin-bottom: 0; | ||||
|       text-align: center; | ||||
|     } | ||||
|   } | ||||
| @ -0,0 +1,24 @@ | ||||
| import { waitForAsync, ComponentFixture, TestBed } from '@angular/core/testing'; | ||||
| import { CarAddDriverComponent } from './add-driver.component'; | ||||
|  | ||||
| describe('CarAddDriverComponent', () => { | ||||
|   let component: CarAddDriverComponent; | ||||
|   let fixture: ComponentFixture<CarAddDriverComponent>; | ||||
|  | ||||
|   beforeEach(waitForAsync(() => { | ||||
|     TestBed.configureTestingModule({ | ||||
|       declarations: [ CarAddDriverComponent ] | ||||
|     }) | ||||
|     .compileComponents(); | ||||
|   })); | ||||
|  | ||||
|   beforeEach(() => { | ||||
|     fixture = TestBed.createComponent(CarAddDriverComponent); | ||||
|     component = fixture.componentInstance; | ||||
|     fixture.detectChanges(); | ||||
|   }); | ||||
|  | ||||
|   it('should create', () => { | ||||
|     expect(component).toBeTruthy(); | ||||
|   }); | ||||
| }); | ||||
| @ -0,0 +1,556 @@ | ||||
| import { Component, OnInit, ViewChild } from '@angular/core'; | ||||
| import { apiConf } from '@conf/api.conf'; | ||||
| import { cacheConf } from '@conf/cache.conf'; | ||||
| import { SFComponent, SFUISchema, SFSchema, SFUploadWidgetSchema, SFDateWidgetSchema } from '@delon/form'; | ||||
| import { _HttpClient } from '@delon/theme'; | ||||
| import { EACacheService, EAEnvironmentService } from '@shared'; | ||||
| import { NzModalRef } from 'ng-zorro-antd/modal'; | ||||
| import { Observable, Observer } from 'rxjs'; | ||||
| import { map } from 'rxjs/operators'; | ||||
| import { SupplyManagementService } from '../../services/supply-management.service'; | ||||
|  | ||||
| @Component({ | ||||
|   selector: 'app-car-add-driver', | ||||
|   templateUrl: './add-driver.component.html', | ||||
|   styleUrls: ['./add-driver.component.less'] | ||||
| }) | ||||
| export class CarAddDriverComponent implements OnInit { | ||||
|   @ViewChild('sf', { static: false }) sf!: SFComponent; | ||||
|   @ViewChild('sf1', { static: false }) sf1!: SFComponent; | ||||
|   @ViewChild('sf2', { static: false }) sf2!: SFComponent; | ||||
|   record: any = {}; | ||||
|   i: any; | ||||
|   ui: SFUISchema = {}; | ||||
|   schema: SFSchema = {}; | ||||
|   schema1: SFSchema = {}; | ||||
|   schema2: SFSchema = {}; | ||||
|   showCardFlag = false; | ||||
|   showJopFlag = false; | ||||
|   detailData: any = { | ||||
|     identityInfoDTO: {}, | ||||
|     userDriverLicenseDTO: {}, | ||||
|     userPracticeSeniorityDTO: {} | ||||
|   }; | ||||
|   companyData: any = {}; | ||||
|   mobile = '' | ||||
|   constructor( | ||||
|     private modal: NzModalRef, | ||||
|     public service: SupplyManagementService, | ||||
|     private envSrv: EAEnvironmentService, | ||||
|     private eaCacheSrv: EACacheService, | ||||
|   ) { } | ||||
|  | ||||
|   ngOnInit(): void { | ||||
|     this.companyData = this.eaCacheSrv.get(cacheConf.env) | ||||
|     this.initSF() | ||||
|   } | ||||
|   initSF() { | ||||
|     this.schema = { | ||||
|       properties: { | ||||
|         titleA: { | ||||
|           title: '司机信息(必填)', | ||||
|           type: 'string', | ||||
|           ui: { | ||||
|             widget: 'text', | ||||
|           }, | ||||
|           default: '照片上传后会自动识别文字并填充下列内容栏' | ||||
|         }, | ||||
|         mobile: { | ||||
|           title: '手机号', | ||||
|           type: 'string', | ||||
|           format: 'email', | ||||
|           maxLength: 11, | ||||
|           ui: { | ||||
|             widget: 'text',  | ||||
|           }, | ||||
|           default: this.mobile | ||||
|         }, | ||||
|         showName: { | ||||
|           title: '身份证照片', | ||||
|           type: 'string', | ||||
|           ui: { | ||||
|             widget: 'text', | ||||
|             showRequired: true, | ||||
|           }, | ||||
|           default: '请上传身份证原件的高清照片,若上传复印件,则需加盖公司印章及法人签字;上传后系统会自动识别并填写', | ||||
|         }, | ||||
|         tipsA: { | ||||
|           title: '', | ||||
|           type: 'string', | ||||
|           ui: { | ||||
|             widget: 'custom', | ||||
|             offsetControl: 6, | ||||
|           }, | ||||
|         }, | ||||
|         certificatePhotoFrontWatermark: { | ||||
|           type: 'string', | ||||
|           title: '', | ||||
|           ui: { | ||||
|             offsetControl: 6, | ||||
|             action: apiConf.fileUpload, | ||||
|             fileType: 'image/png,image/jpeg,image/jpg,image/gif', | ||||
|             limit: 1, | ||||
|             limitFileCount: 1, | ||||
|             resReName: 'data.fullFileWatermarkPath', | ||||
|             urlReName: 'data.fullFileWatermarkPath', | ||||
|             widget: 'upload', | ||||
|             descriptionI18n: '图片支持jpg、jpeg、png、gif格式,大小不超过2M', | ||||
|             data: { | ||||
|               appId: this.envSrv.env.appId, | ||||
|             }, | ||||
|             name: 'multipartFile', | ||||
|             multiple: false, | ||||
|             listType: 'picture-card', | ||||
|             change: (args) => { | ||||
|               if (args.type === 'success') { | ||||
|                 this.detailData.certificatePhotoFront = args.file.response.data.fullFilePath | ||||
|                 this.checkIdCard(args.file.response.data.fullFilePath, 'front', 0); | ||||
|               } | ||||
|             }, | ||||
|             beforeUpload: (file: any, _fileList) => { | ||||
|               return new Observable((observer: Observer<boolean>) => { | ||||
|                 const isLt2M = file.size / 1024 / 1024 < 2; | ||||
|                 if (!isLt2M) { | ||||
|                   this.service.msgSrv.warning('图片大小超过2M!'); | ||||
|                   observer.complete(); | ||||
|                   return; | ||||
|                 } | ||||
|                 observer.next(isLt2M); | ||||
|                 observer.complete(); | ||||
|               }); | ||||
|             }, | ||||
|           } as SFUploadWidgetSchema, | ||||
|         }, | ||||
|         tipsB: { | ||||
|           title: '', | ||||
|           type: 'string', | ||||
|           ui: { | ||||
|             widget: 'custom', | ||||
|             offsetControl: 6, | ||||
|           }, | ||||
|         }, | ||||
|         certificatePhotoBackWatermark: { | ||||
|           type: 'string', | ||||
|           title: '', | ||||
|           ui: { | ||||
|             offsetControl: 6, | ||||
|             action: apiConf.fileUpload, | ||||
|             fileType: 'image/png,image/jpeg,image/jpg,image/gif', | ||||
|             limit: 1, | ||||
|             limitFileCount: 1, | ||||
|             resReName: 'data.fullFileWatermarkPath', | ||||
|             urlReName: 'data.fullFileWatermarkPath', | ||||
|             widget: 'upload', | ||||
|             descriptionI18n: '图片支持jpg、jpeg、png、gif格式,大小不超过2M', | ||||
|             data: { | ||||
|               appId: this.envSrv.env.appId, | ||||
|             }, | ||||
|             name: 'multipartFile', | ||||
|             multiple: false, | ||||
|             listType: 'picture-card', | ||||
|             change: (args) => { | ||||
|               if (args.type === 'success') { | ||||
|                 this.detailData.certificatePhotoBack = args.file.response.data.fullFilePath | ||||
|                 this.checkIdCard(args.file.response.data.fullFilePath, 'back', 0); | ||||
|               } | ||||
|             }, | ||||
|             beforeUpload: (file: any, _fileList) => { | ||||
|               return new Observable((observer: Observer<boolean>) => { | ||||
|                 const isLt2M = file.size / 1024 / 1024 < 2; | ||||
|                 if (!isLt2M) { | ||||
|                   this.service.msgSrv.warning('图片大小超过2M!'); | ||||
|                   observer.complete(); | ||||
|                   return; | ||||
|                 } | ||||
|                 observer.next(isLt2M); | ||||
|                 observer.complete(); | ||||
|               }); | ||||
|             }, | ||||
|           } as SFUploadWidgetSchema, | ||||
|         }, | ||||
|         name: { | ||||
|           title: '姓名', | ||||
|           type: 'string', | ||||
|           maxLength: 32, | ||||
|           ui: { | ||||
|             widget: '', | ||||
|             placeholder: '请输入姓名', | ||||
|           }, | ||||
|         }, | ||||
|         certificateNumber: { | ||||
|           title: '身份证号', | ||||
|           type: 'string', | ||||
|           format: 'id-card', | ||||
|           minLength: 1, | ||||
|           maxLength: 18, | ||||
|           ui: { | ||||
|             widget: '', | ||||
|             placeholder: '请输入法定代表人证件号', | ||||
|             errors: { | ||||
|               required: '请输入18位身份证号码', | ||||
|             }, | ||||
|           }, | ||||
|         }, | ||||
|       }, | ||||
|       required: [ | ||||
|         'certificatePhotoFrontWatermark', | ||||
|         'certificatePhotoBackWatermark', | ||||
|         'name', | ||||
|         'certificateNumber' | ||||
|       ], | ||||
|     }; | ||||
|     this.schema1 = { | ||||
|       properties: { | ||||
|         titleB: { | ||||
|           title: '驾驶证信息(必填)', | ||||
|           type: 'string', | ||||
|           ui: { | ||||
|             widget: 'text', | ||||
|           }, | ||||
|           default: '照片上传后会自动识别文字并填充下列内容栏' | ||||
|         }, | ||||
|         certificatePhotoWatermark: { | ||||
|           type: 'string', | ||||
|           title: '驾驶证照片', | ||||
|           ui: { | ||||
|             action: apiConf.fileUpload, | ||||
|             fileType: 'image/png,image/jpeg,image/jpg,image/gif', | ||||
|             limit: 1, | ||||
|             limitFileCount: 1, | ||||
|             resReName: 'data.fullFileWatermarkPath', | ||||
|             urlReName: 'data.fullFileWatermarkPath', | ||||
|             widget: 'upload', | ||||
|             descriptionI18n: '请上传驾驶证照片,支持JPG、PNG格式,文件小于5M。照片信息缺失、拼凑、过度PS、模糊不清,都不会通过审核。', | ||||
|             data: { | ||||
|               appId: this.envSrv.env.appId, | ||||
|             }, | ||||
|             name: 'multipartFile', | ||||
|             multiple: false, | ||||
|             listType: 'picture-card', | ||||
|             change: (args) => { | ||||
|               if (args.type === 'success') { | ||||
|                 this.detailData.userDriverLicenseDTO.certificatePhoto = args.file.response.data.fullFilePath | ||||
|                 this.checkDriverCard(args.file.response.data.fullFilePath, 'front', 0); | ||||
|               } | ||||
|             }, | ||||
|             beforeUpload: (file: any, _fileList) => { | ||||
|               return new Observable((observer: Observer<boolean>) => { | ||||
|                 const isLt4M = file.size / 1024 / 1024 < 4; | ||||
|                 if (!isLt4M) { | ||||
|                   this.service.msgSrv.warning('图片大小超过4M!'); | ||||
|                   observer.complete(); | ||||
|                   return; | ||||
|                 } | ||||
|                 observer.next(isLt4M); | ||||
|                 observer.complete(); | ||||
|               }); | ||||
|             }, | ||||
|           } as SFUploadWidgetSchema, | ||||
|         }, | ||||
|         licenseNo: { | ||||
|           title: '驾驶证号', | ||||
|           type: 'string', | ||||
|           ui: { | ||||
|            // widget: 'text', | ||||
|            placeholder: '请输入', | ||||
|           }, | ||||
|           // default: this.ar.snapshot.queryParams.licenseNo | ||||
|         }, | ||||
|         driverModel: { | ||||
|           title: '准驾车型', | ||||
|           type: 'string', | ||||
|           enum: [ | ||||
|             {label: 'A1', value: 0}, | ||||
|             {label: 'B1', value: 1}, | ||||
|           ], | ||||
|           ui: { | ||||
|             // widget: this.detailData.commitFlag !== 0 ? 'text' : '', | ||||
|             placeholder: '请输入', | ||||
|           }, | ||||
|         }, | ||||
|         validStartTime: { | ||||
|           title: '法人证件有效开始日期', | ||||
|           type: 'string', | ||||
|           ui: { | ||||
|             widget: 'date', | ||||
|             format: 'yyyy-MM-dd', | ||||
|             placeholder: '请选择', | ||||
|             errors: { | ||||
|               required: '请选择起始日期', | ||||
|             }, | ||||
|             change: (i) => { }, | ||||
|           } as SFDateWidgetSchema, | ||||
|         }, | ||||
|         validEndTime: { | ||||
|           title: '法人证件有效开始日期', | ||||
|           type: 'string', | ||||
|           ui: { | ||||
|             widget: 'date', | ||||
|             format: 'yyyy-MM-dd', | ||||
|             placeholder: '请选择', | ||||
|             errors: { | ||||
|               required: '请选择起始日期', | ||||
|             }, | ||||
|             change: (i) => { }, | ||||
|           } as SFDateWidgetSchema, | ||||
|         }, | ||||
|         signingOrganization: { | ||||
|           title: '签发机关', | ||||
|           type: 'string', | ||||
|           maxLength: 30, | ||||
|           ui: { | ||||
|             // widget: this.detailData.commitFlag !== 0 ? 'text' : '', | ||||
|             placeholder: '请输入', | ||||
|           }, | ||||
|         }, | ||||
|       }, | ||||
|       required: [ | ||||
|         'certificatePhotoWatermark', | ||||
|         'licenseNo', | ||||
|         'driverModel', | ||||
|         'validStartTime', | ||||
|         'validEndTime', | ||||
|       ], | ||||
|     }; | ||||
|     this.schema2 = { | ||||
|       properties: { | ||||
|         titleC: { | ||||
|           title: '从业资格证(选填)', | ||||
|           type: 'string', | ||||
|           ui: { | ||||
|             widget: 'text', | ||||
|           }, | ||||
|           default: '照片上传后会自动识别文字并填充下列内容栏', | ||||
|         }, | ||||
|         certificatePhotoWatermark: { | ||||
|           type: 'string', | ||||
|           title: '', | ||||
|           ui: { | ||||
|             offsetControl: 6, | ||||
|             action: apiConf.fileUpload, | ||||
|             fileType: 'image/png,image/jpeg,image/jpg,image/gif', | ||||
|             limit: 1, | ||||
|             limitFileCount: 1, | ||||
|             resReName: 'data.fullFileWatermarkPath', | ||||
|             urlReName: 'data.fullFileWatermarkPath', | ||||
|             widget: 'upload', | ||||
|             descriptionI18n: '图片支持jpg、jpeg、png、gif格式,大小不超过5M', | ||||
|             data: { | ||||
|               appId: this.envSrv.env.appId, | ||||
|             }, | ||||
|             name: 'multipartFile', | ||||
|             multiple: false, | ||||
|             listType: 'picture-card', | ||||
|             change: (args) => { | ||||
|               if (args.type === 'success') { | ||||
|                 this.detailData.userPracticeSeniorityDTO.certificatePhoto = args.file.response.data.fullFilePath | ||||
|                 //this.checkIdCard(args.file.response.data.fullFile, 0, 0); | ||||
|               } | ||||
|             }, | ||||
|             beforeUpload: (file: any, _fileList) => { | ||||
|               return new Observable((observer: Observer<boolean>) => { | ||||
|                 const isLt2M = file.size / 1024 / 1024 < 2; | ||||
|                 if (!isLt2M) { | ||||
|                   this.service.msgSrv.warning('图片大小超过2M!'); | ||||
|                   observer.complete(); | ||||
|                   return; | ||||
|                 } | ||||
|                 observer.next(isLt2M); | ||||
|                 observer.complete(); | ||||
|               }); | ||||
|             }, | ||||
|           } as SFUploadWidgetSchema, | ||||
|         }, | ||||
|         licenseNo: { | ||||
|           title: '从业资格证号', | ||||
|           type: 'string', | ||||
|           maxLength: 30, | ||||
|           ui: { | ||||
|             // widget: this.detailData.commitFlag !== 0 ? 'text' : '', | ||||
|             placeholder: '请输入', | ||||
|           }, | ||||
|         }, | ||||
|         regionCode: { | ||||
|           title: '签发省份', | ||||
|           type: 'string', | ||||
|           ui: { | ||||
|             widget: 'select', | ||||
|             placeholder: '请选择', | ||||
|             asyncData: () => this.getProvinceData(), | ||||
|           } as SFDateWidgetSchema, | ||||
|         }, | ||||
|         validStartTime: { | ||||
|           title: '发证日期', | ||||
|           type: 'string', | ||||
|           ui: { | ||||
|             widget: 'date', | ||||
|             format: 'yyyy-MM-dd', | ||||
|             placeholder: '请选择', | ||||
|             errors: { | ||||
|               required: '请选择起始日期', | ||||
|             }, | ||||
|             change: (i) => { }, | ||||
|           } as SFDateWidgetSchema, | ||||
|         }, | ||||
|         validEndTime: { | ||||
|           title: '有效期止', | ||||
|           type: 'string', | ||||
|           ui: { | ||||
|             widget: 'date', | ||||
|             format: 'yyyy-MM-dd', | ||||
|             placeholder: '请选择', | ||||
|             errors: { | ||||
|               required: '请选择起始日期', | ||||
|             }, | ||||
|             change: (i) => { }, | ||||
|           } as SFDateWidgetSchema, | ||||
|         }, | ||||
|       }, | ||||
|       required: [ | ||||
|          | ||||
|       ], | ||||
|     }; | ||||
|     this.ui = { | ||||
|       '*': { | ||||
|         spanLabelFixed: 180, | ||||
|         grid: { span: 24 }, | ||||
|         width: 700, | ||||
|       }, | ||||
|       $title1: { | ||||
|         spanLabelFixed: 0, | ||||
|       }, | ||||
|       $title2: { | ||||
|         spanLabelFixed: 0, | ||||
|       }, | ||||
|       $title3: { | ||||
|         spanLabelFixed: 0, | ||||
|       }, | ||||
|       $title4: { | ||||
|         spanLabelFixed: 0, | ||||
|       }, | ||||
|       $enterpriseRegistrationTime: { | ||||
|         width: 680, | ||||
|       }, | ||||
|       $operatingEndTime: { | ||||
|         grid: { span: 9 }, | ||||
|       }, | ||||
|       $dateType: { | ||||
|         grid: { span: 4 }, | ||||
|       }, | ||||
|       $validEndTime: { | ||||
|         grid: { span: 9 }, | ||||
|       }, | ||||
|       $dateType01: { | ||||
|         grid: { span: 4 }, | ||||
|       }, | ||||
|       $registrationCapital: { | ||||
|         grid: { span: 12 }, | ||||
|       }, | ||||
|       $unit: { | ||||
|         spanLabelFixed: 20, | ||||
|         grid: { span: 3 }, | ||||
|       }, | ||||
|     }; | ||||
|   } | ||||
|   getProvinceData() { | ||||
|     // return this.service.request(this.service.$api_getRegionByCode, { regionCode: '' }).pipe( | ||||
|     //   map(res => { | ||||
|     //     const result: any = [] | ||||
|     //     if (res) { | ||||
|     //       res.map((m: any) => { | ||||
|     //         const item = { label: m.name, value: m.regionCode } | ||||
|     //         result.push(item) | ||||
|     //       }); | ||||
|     //     } | ||||
|     //     return result | ||||
|     //   }) | ||||
|     // ); | ||||
|   } | ||||
|   checkIdCard(imgurl: any, side: any, type: any) { | ||||
|     // 识别身份证 参数side:0-正面、1-背面;type:0-申请人身份证,1-法定代表人身份证 | ||||
|     const params = { | ||||
|       idCardUrl: imgurl, | ||||
|       side, | ||||
|     }; | ||||
|     // this.service.request(this.service.$api_checkIdCard, params).subscribe((res) => { | ||||
|     //   if (res) { | ||||
|     //     if (type === 0) { | ||||
|     //       // 法定代表人身份证 | ||||
|     //       if (side === 'front') { | ||||
|     //         // 正面 | ||||
|     //         this.sf.setValue('/name', res.name); | ||||
|     //         this.sf.setValue('/certificateNumber', res.number); | ||||
|     //       } | ||||
|     //     } | ||||
|     //   } | ||||
|     // }); | ||||
|   } | ||||
|   checkDriverCard(imgurl: any, side: any, type: any) { | ||||
|     // 识别身份证 参数side:0-正面、1-背面;type:0-申请人身份证,1-法定代表人身份证 | ||||
|     const params = { | ||||
|       driverLicenseUrl: imgurl, | ||||
|       side, | ||||
|     }; | ||||
|     // this.service.request(this.service.$api_recognizeDriverLicense, params).subscribe((res) => { | ||||
|     //   if (res) { | ||||
|     //     if (type === 0) { | ||||
|     //       // 法定代表人身份证 | ||||
|     //       if (side === 'front') { | ||||
|     //         // 正面 | ||||
|     //         this.sf1.setValue('/licenseNo', res.number); | ||||
|     //         this.sf1.setValue('/driverModel', res.number); | ||||
|     //         this.sf1.setValue('/validStartTime', res.validFrom); | ||||
|     //         this.sf1.setValue('/validEndTime', res.validTo); | ||||
|     //         this.sf1.setValue('/signingOrganization', res.issuingAuthority); | ||||
|     //       } | ||||
|     //     } | ||||
|     //   } | ||||
|     // }); | ||||
|   } | ||||
|   close(): void { | ||||
|     this.modal.destroy(); | ||||
|   } | ||||
|   showExample(){ | ||||
|     this.showCardFlag = !this.showCardFlag | ||||
|   } | ||||
|   showJopExample(){ | ||||
|     this.showJopFlag = !this.showJopFlag | ||||
|   } | ||||
|   submitForm(){ | ||||
|     const params:any = { | ||||
|       enterpriseId: this.companyData.enterpriseId, | ||||
|       enterpriseProjectId: this.companyData.projectId, | ||||
|       source: 1, | ||||
|       mobile: this.mobile, | ||||
|       identityInfoDTO:{ | ||||
|         ...this.sf.value, | ||||
|         certificatePhotoFront: this.detailData.certificatePhotoFront, | ||||
|         certificatePhotoBack: this.detailData.certificatePhotoBack, | ||||
|       }, | ||||
|       userDriverLicenseDTO: { | ||||
|         ...this.sf1.value, | ||||
|         certificatePhoto: this.detailData.userDriverLicenseDTO.certificatePhoto, | ||||
|       }, | ||||
|       userPracticeSeniorityDTO: { | ||||
|         ...this.sf2.value, | ||||
|         certificatePhoto: this.detailData.userPracticeSeniorityDTO.certificatePhoto, | ||||
|       }, | ||||
|     }; | ||||
|     params.identityInfoDTO.certificatePhotoFrontWatermark = this.sf?.value.certificatePhotoFrontWatermark | ||||
|     params.identityInfoDTO.certificatePhotoBackWatermark = this.sf?.value.certificatePhotoBackWatermark | ||||
|     params.userDriverLicenseDTO.certificatePhotoWatermark = this.sf1?.value.certificatePhotoWatermark | ||||
|     params.userPracticeSeniorityDTO.certificatePhotoWatermark = this.sf2?.value.certificatePhotoWatermark | ||||
|     delete params.identityInfoDTO.titleA; | ||||
|     delete params.identityInfoDTO.titleB; | ||||
|     delete params.identityInfoDTO.titleC; | ||||
|     delete params.userDriverLicenseDTO.tipsA; | ||||
|     delete params.userPracticeSeniorityDTO.tipsC; | ||||
|     delete params.showName | ||||
|     // this.service.request(this.service.$api_enterpriseVehicleSave, params).subscribe(res => { | ||||
|     //   if(res){ | ||||
|     //     this.service.msgSrv.success('添加成功') | ||||
|     //     this.close() | ||||
|     //   } | ||||
|     // }) | ||||
|   } | ||||
| } | ||||
| @ -0,0 +1,48 @@ | ||||
| <div class="modal-header"> | ||||
|     <div class="modal-title">新增</div> | ||||
| </div> | ||||
| <!-- <nz-spin *ngIf="!i" class="modal-spin"></nz-spin> --> | ||||
| <div> | ||||
|     <!-- 搜索表单 --> | ||||
|     <div nz-row nzGutter="8"> | ||||
|         <!-- 查询字段小于或等于3个时,不显示伸缩按钮 --> | ||||
|         <div nz-col nzSpan="24" *ngIf="queryFieldCount <= 4"> | ||||
|             <sf #sf [schema]="schema" [ui]="ui" [mode]="'search'" [disabled]="!sf?.valid" [loading]="service.http.loading" (formSubmit)="initData(true)" (formReset)="resetSF()"></sf> | ||||
|         </div> | ||||
|  | ||||
|         <!-- 查询字段大于3个时,根据展开状态调整布局 --> | ||||
|         <ng-container *ngIf="queryFieldCount > 4"> | ||||
|             <div nz-col [nzSpan]="_$expand ? 24 : 18"> | ||||
|                 <sf #sf [schema]="schema" [ui]="ui" [compact]="true" [button]="'none'"></sf> | ||||
|             </div> | ||||
|             <div nz-col [nzSpan]="_$expand ? 24 : 6" [class.text-right]="_$expand"> | ||||
|                 <button nz-button nzType="primary" [disabled]="!sf.valid" [nzLoading]="service.http.loading" (click)="initData(true)">查询</button> | ||||
|                 <button nz-button (click)="resetSF()">重置</button> | ||||
|                 <button nz-button nzType="link" (click)="expandToggle()"> | ||||
|               {{ !_$expand ? '展开' : '收起' }} | ||||
|               <i nz-icon [nzType]="!_$expand ? 'down' : 'up'"></i> | ||||
|           </button> | ||||
|             </div> | ||||
|         </ng-container> | ||||
|     </div> | ||||
|     <!-- 数据列表 --> | ||||
|     <!-- [data]="service.$api_getCarCaptainByMobile" --> | ||||
|     <div *ngIf="sf?.value?.mobile && tableData?.length > 0"> | ||||
|         <st #st multiSort bordered [columns]="columns" [ps]="20" [req]="{ method: 'POST', allInBody: true, reName: { pi: '', ps: '' }, params: reqParams }" [res]="{ reName: { list: 'data', total: 'data.total' } }" [page]="{ show: true, showSize: true, pageSizes: [20, 50, 100] }" | ||||
|         [loading]="service.http.loading" [data]="tableData"> | ||||
|  | ||||
|     <ng-template st-row="carModel" let-item let-index="index"> | ||||
|         <span>{{item.carModel}};{{item.carLength}};{{item.carLoad}};</span> | ||||
|     </ng-template> | ||||
| </st> | ||||
|     </div> | ||||
|     | ||||
|  | ||||
|     <div class="noContent" *ngIf="sf?.value?.mobile && tableData?.length === 0 && flag"> | ||||
|         抱歉,该手机号还未注册,仍然需要添加请点击 <span (click)="addModal()">继续添加 | ||||
|         </span> | ||||
|     </div> | ||||
| </div> | ||||
| <div class="modal-footer"> | ||||
|     <button nz-button type="button" (click)="close()">关闭</button> | ||||
| </div> | ||||
| @ -0,0 +1,38 @@ | ||||
|  | ||||
| :host{ | ||||
|     ::ng-deep{ | ||||
|         .ant-card-meta-title{ | ||||
|             display: flex; | ||||
|             align-items: center; | ||||
|             justify-content: space-between; | ||||
|         } | ||||
|         .nameBox { | ||||
|             display: flex; | ||||
|             align-items: baseline; | ||||
|             .name{ | ||||
|              margin: 0 10px 0 0; | ||||
|             } | ||||
|         } | ||||
|         .ant-badge-status{ | ||||
|             color: #666 | ||||
|         } | ||||
|          | ||||
|     } | ||||
|     .title{ | ||||
|         clear: both; | ||||
|         margin: 10px 0; | ||||
|         font-weight: bold; | ||||
|         font-size: 14px; | ||||
|     } | ||||
|     .noContent{ | ||||
|         width: 100%; | ||||
|         min-height: 300px; | ||||
|         font-size: 16px; | ||||
|         line-height: 300px; | ||||
|         text-align: center; | ||||
|         span { | ||||
|             color: #1890ff; | ||||
|             cursor: pointer; | ||||
|         } | ||||
|     } | ||||
| } | ||||
| @ -0,0 +1,24 @@ | ||||
| import { waitForAsync, ComponentFixture, TestBed } from '@angular/core/testing'; | ||||
| import { CarAddmodalComponent } from './addmodal.component'; | ||||
|  | ||||
| describe('CarAddmodalComponent', () => { | ||||
|   let component: CarAddmodalComponent; | ||||
|   let fixture: ComponentFixture<CarAddmodalComponent>; | ||||
|  | ||||
|   beforeEach(waitForAsync(() => { | ||||
|     TestBed.configureTestingModule({ | ||||
|       declarations: [ CarAddmodalComponent ] | ||||
|     }) | ||||
|     .compileComponents(); | ||||
|   })); | ||||
|  | ||||
|   beforeEach(() => { | ||||
|     fixture = TestBed.createComponent(CarAddmodalComponent); | ||||
|     component = fixture.componentInstance; | ||||
|     fixture.detectChanges(); | ||||
|   }); | ||||
|  | ||||
|   it('should create', () => { | ||||
|     expect(component).toBeTruthy(); | ||||
|   }); | ||||
| }); | ||||
| @ -0,0 +1,179 @@ | ||||
| import { Component, OnInit, ViewChild } from '@angular/core'; | ||||
| import { Router, ActivatedRoute } from '@angular/router'; | ||||
| import { cacheConf } from '@conf/cache.conf'; | ||||
| import { STColumn, STComponent, STChange, STData } from '@delon/abc/st'; | ||||
| import { SFUISchema, SFSchema, SFComponent } from '@delon/form'; | ||||
| import { ModalHelper, _HttpClient } from '@delon/theme'; | ||||
| import { EACacheService } from '@shared'; | ||||
| import { NzModalRef } from 'ng-zorro-antd/modal'; | ||||
| import { SupplyManagementService } from '../../services/supply-management.service'; | ||||
| import { CarAddDriverComponent } from '../add-driver/add-driver.component'; | ||||
|  | ||||
| @Component({ | ||||
|   selector: 'app-car-addmodal', | ||||
|   templateUrl: './addmodal.component.html', | ||||
|   styleUrls: ['./addmodal.component.less'] | ||||
| }) | ||||
| export class CarAddmodalComponent implements OnInit { | ||||
|   @ViewChild('st', { static: false }) st!: STComponent; | ||||
|   @ViewChild('sf', { static: false }) sf!: SFComponent; | ||||
|   _$expand = false; | ||||
|   ui!: SFUISchema; | ||||
|   schema!: SFSchema; | ||||
|   columns!: STColumn[]; | ||||
|   tableData: any = []; | ||||
|   companyData: any = {}; | ||||
|   flag = false | ||||
|   constructor( | ||||
|     private modal: NzModalRef, | ||||
|     private eaCacheSrv: EACacheService, | ||||
|     public service: SupplyManagementService, private router: Router, private ar: ActivatedRoute, | ||||
|     private modalHelper: ModalHelper | ||||
|   ) { } | ||||
|  | ||||
|   /** | ||||
|     * 查询字段个数 | ||||
|     */ | ||||
|   get queryFieldCount(): number { | ||||
|     return Object.keys(this.schema?.properties || {}).length; | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * 查询参数 | ||||
|    */ | ||||
|   get reqParams() { | ||||
|     const params = Object.assign({}, this.sf?.value || {}); | ||||
|     delete params._$expand; | ||||
|     return { ...params }; | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * 选中行 | ||||
|    */ | ||||
|   get selectedRows() { | ||||
|     return this.st?.list.filter((item: any) => item.checked) || []; | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * 伸缩查询条件 | ||||
|    */ | ||||
|   expandToggle() { | ||||
|     this._$expand = !this._$expand; | ||||
|     this.sf?.setValue('/_$expand', this._$expand); | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * 重置表单 | ||||
|    */ | ||||
|   resetSF() { | ||||
|     this.sf.reset(); | ||||
|     this._$expand = false; | ||||
|   } | ||||
|   /** | ||||
|    * 程序初始化入口 | ||||
|    */ | ||||
|   ngOnInit() { | ||||
|     this.companyData = this.eaCacheSrv.get(cacheConf.env) | ||||
|     this.initSF(); | ||||
|     this.initST() | ||||
|     this.initData() | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * 初始化查询表单 | ||||
|    */ | ||||
|   initSF() { | ||||
|     this.schema = { | ||||
|       properties: { | ||||
|         _$expand: { type: 'boolean', ui: { hidden: true } }, | ||||
|         mobile: { title: '司机手机号', type: 'string', maxLength: 11, ui: { showRequired: false, placeholder: '请输入司机手机号', } }, | ||||
|       }, | ||||
|     }; | ||||
|     this.ui = { | ||||
|       '*': { spanLabelFixed: 120, grid: { span: 8, gutter: 4 }, enter: () => this.st?.load(1) }, | ||||
|       $time: { grid: { span: 24 } }, | ||||
|     }; | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * 初始化数据列表 | ||||
|    */ | ||||
|   initST() { | ||||
|     this.columns = [ | ||||
|       { title: '司机头像', type: 'img', index: 'avatar', className: 'text-center' }, | ||||
|       { title: '司机姓名', index: 'name', className: 'text-center' }, | ||||
|       { title: '当前车辆', index: 'carNo', className: 'text-center' }, | ||||
|       { title: '车辆信息', render: 'carModel', className: 'text-center' }, | ||||
|       { | ||||
|         title: '个人认证状态', | ||||
|         index: 'identityStatus', | ||||
|         className: 'text-center', | ||||
|         type: 'enum', | ||||
|         enum: { | ||||
|           10: '待审核', | ||||
|           20: '已成功', | ||||
|           30: '已驳回', | ||||
|           40: '证件过期', | ||||
|         } | ||||
|       }, | ||||
|       { title: '驾驶证类型', index: 'createTime', className: 'text-center' }, | ||||
|       { | ||||
|         title: '操作', | ||||
|         width: '180px', | ||||
|         className: 'text-center', | ||||
|         buttons: [ | ||||
|           { text: '添加', click: (_record: any) => this.add(_record) }, | ||||
|         ], | ||||
|       }, | ||||
|     ]; | ||||
|   } | ||||
|   initData(flag?: any) { | ||||
|     if (this.sf?.value.mobile) { | ||||
|       this.flag = flag | ||||
|       // this.service.request(this.service.$api_getCarCaptainByMobile, { mobile: this.sf?.value.mobile }).subscribe(res => { | ||||
|       //   if (res.userId) { | ||||
|       //     this.tableData = [res]; | ||||
|       //   } else { | ||||
|       //     this.tableData = [] | ||||
|       //   } | ||||
|       //   this.st.reload() | ||||
|       // }) | ||||
|     } | ||||
|   } | ||||
|   /** | ||||
|    * 数据列表状态变化事件 | ||||
|    */ | ||||
|   change(change: STChange) { | ||||
|     // console.log(change); | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * 新增 | ||||
|    */ | ||||
|   add(item: any) { | ||||
|     const params: any = { | ||||
|       enterpriseId: this.companyData.enterpriseId, | ||||
|       enterpriseProjectId: this.companyData.projectId, | ||||
|       source: 1, | ||||
|       appUserId: item.appUserId ? item.appUserId : '', | ||||
|       mobile: item.mobile | ||||
|     } | ||||
|     // this.service.request(this.service.$api_enterpriseVehicleSave, params).subscribe(res => { | ||||
|     //   if (res.data) { | ||||
|     //     this.service.msgSrv.success('添加成功') | ||||
|     //   } | ||||
|     // }) | ||||
|   } | ||||
|   addModal() { | ||||
|     this.modalHelper.create(CarAddDriverComponent, {mobile: this.sf?.value.mobile}, { size: 900 }).subscribe((res) => { | ||||
|       this.initData() | ||||
|     }); | ||||
|     //this.router.navigate(['/car/add']) | ||||
|   } | ||||
|   goBack() { | ||||
|     window.history.go(-1); | ||||
|   } | ||||
|   close(): void { | ||||
|     this.modal.destroy(); | ||||
|   } | ||||
| } | ||||
| @ -1,15 +1,59 @@ | ||||
| <!-- | ||||
|  * @Author: your name | ||||
|  * @Date: 2021-12-03 11:10:14 | ||||
|  * @LastEditTime: 2021-12-07 19:51:34 | ||||
|  * @LastEditTime: 2021-12-21 10:56:30 | ||||
|  * @LastEditors: your name | ||||
|  * @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE | ||||
|  * @FilePath: \tms-obc-web\src\app\routes\supply-management\components\assigned-car\assigned-car.component.html | ||||
| --> | ||||
| <div> | ||||
|   <sf #sf [schema]="schema" [ui]="ui" [compact]="true" [button]="'none'"></sf> | ||||
|   <div nz-row> | ||||
|     <div nz-col nzSpan="18"> | ||||
|       <sf #sf [schema]="schema" mode="search" [ui]="ui" [compact]="true" (formSubmit)="st.load(1)" | ||||
|         (formReset)="reset()"></sf> | ||||
|     </div> | ||||
|     <div nz-col nzSpan="6"> | ||||
|       <button nz-button nzType="primary" style="margin-bottom: 24px" (click)="addDriver()"><i nz-icon | ||||
|           nzType="plus"></i>添加司机</button> | ||||
|     </div> | ||||
|   </div> | ||||
|  | ||||
|   <div> | ||||
|     <!-- <st #st [data]="service.$api_get_catalogue_member" [columns]="columns"> --> | ||||
|     <!-- </st> --> | ||||
|     <st #st [data]="service.$api_get_catalogue_member" | ||||
|       [req]="{ method: 'POST', allInBody: true, reName: { pi: 'pageIndex', ps: 'pageSize' }, params: reqParams }" | ||||
|       [columns]="columns" [res]="{ reName: { list: 'data.records', total: 'data.total' },process:dataProcess }" | ||||
|       [page]="{ show: true, showSize: true, pageSizes: [10, 20, 30, 50, 100, 200, 300, 500, 1000] }" | ||||
|       (change)="changeSt($event)"> | ||||
|       <ng-template st-row="carId" let-item let-index="index"> | ||||
|         <nz-select [(ngModel)]="item.carId" style="width: 280px;"> | ||||
|           <nz-option [nzValue]="''" nzLabel="不限"></nz-option> | ||||
|           <nz-option [nzValue]="car.carId" [nzLabel]="car.carNo" | ||||
|             *ngFor="let car of item.userCarLicenseDesensitizationVOList" [nzCustomContent]="true"> | ||||
|             <span>{{car.carNo}} -</span> | ||||
|             <span>{{car.carLength}}米,{{car.carLoad}}顿 -</span> | ||||
|             <span *ngIf="car?.approvalStatus === '20' && car.carStatus === '0'" class="text-success-dark">空闲</span> | ||||
|             <span *ngIf="car?.approvalStatus === '20' && car.carStatus === '1'" class="text-warning-dark">已被指派</span> | ||||
|             <span *ngIf="car?.approvalStatus !== '20'" class="text-red-dark">未认证</span> | ||||
|             <!-- <span [ngClass]="cardBADGE[car.carStatus]?.color">{{cardBADGE[car.carStatus]?.text}}</span> --> | ||||
|           </nz-option> | ||||
|         </nz-select> | ||||
|       </ng-template> | ||||
|       <ng-template st-row="carCaptain" let-item let-index> | ||||
|         <span>{{item.name}} {{item.phone}}</span> | ||||
|         <a (click)="setCarCaptain(item)">设置</a> | ||||
|       </ng-template> | ||||
|       <ng-template st-row="driverStatus" let-item let-index> | ||||
|         <span *ngIf="item?.certificationStatus === '20' && item.driverStatus === '0'" | ||||
|           class="text-success-dark">空闲</span> | ||||
|         <span *ngIf="item?.certificationStatus === '20' && item.driverStatus === '1'" | ||||
|           class="text-warning-dark">已被指派</span> | ||||
|         <span *ngIf="item?.certificationStatus !== '20'" class="text-red-dark">未认证</span> | ||||
|       </ng-template> | ||||
|     </st> | ||||
|   </div> | ||||
|   <div class="modal-footer"> | ||||
|     <button nz-button type="button" (click)="close()">关闭</button> | ||||
|     <button nz-button type="submit" nzType="primary" (click)="save()" [disabled]="!selectedRows" | ||||
|       [nzLoading]="service.http.loading">发布并指派给司机</button> | ||||
|   </div> | ||||
| </div> | ||||
| @ -1,10 +1,19 @@ | ||||
| import { Component, OnInit } from '@angular/core'; | ||||
| import { STColumn } from '@delon/abc/st'; | ||||
| import { SFSchema, SFUISchema } from '@delon/form'; | ||||
| import { _HttpClient } from '@delon/theme'; | ||||
| import { Component, OnInit, ViewChild } from '@angular/core'; | ||||
| import { STChange, STColumn, STColumnBadge, STComponent, STData } from '@delon/abc/st'; | ||||
| import { SFComponent, SFSchema, SFUISchema } from '@delon/form'; | ||||
| import { ModalHelper, _HttpClient } from '@delon/theme'; | ||||
| import { NzMessageService } from 'ng-zorro-antd/message'; | ||||
| import { NzModalRef } from 'ng-zorro-antd/modal'; | ||||
| import { SupplyManagementService } from '../../services/supply-management.service'; | ||||
| import { SupplyManagementAddDriversComponent } from '../add-drivers/add-drivers.component'; | ||||
|  | ||||
| import { CarAddmodalComponent } from '../addmodal/addmodal.component'; | ||||
|  | ||||
| const BADGE: STColumnBadge = { | ||||
|   1: { text: '空闲', color: 'success' }, | ||||
|   2: { text: '未实名', color: 'error' }, | ||||
|   3: { text: '在途', color: 'warning' }, | ||||
| }; | ||||
|  | ||||
| @Component({ | ||||
|   selector: 'app-supply-management-assigned-car', | ||||
| @ -16,15 +25,38 @@ export class SupplyManagementAssignedCarComponent implements OnInit { | ||||
|   schema: SFSchema = {}; | ||||
|   ui: SFUISchema = {}; | ||||
|   columns: STColumn[] = []; | ||||
|  | ||||
|   @ViewChild('st') st!: STComponent; | ||||
|   @ViewChild('sf', { static: false }) sf!: SFComponent; | ||||
|   status: string = 'anew'; | ||||
|   url = ''; // 请求的api地址 | ||||
|   params: any = {}; // 传进来的参数 | ||||
|   cardBADGE: STColumnBadge | any = { | ||||
|     0: { text: '空闲', color: 'success' }, | ||||
|     1: { text: '在途', color: 'warning' }, | ||||
|     2: { text: '未认证', color: 'error' }, | ||||
|   }; | ||||
|   selectedRows: any = null; // 已选行 | ||||
|   constructor( | ||||
|     private modal: NzModalRef, | ||||
|     private msgSrv: NzMessageService, | ||||
|     public service: SupplyManagementService | ||||
|     public service: SupplyManagementService, | ||||
|     private modalHelper: ModalHelper, | ||||
|   ) { | ||||
|     this.initSF(); | ||||
|     this.initSt(); | ||||
|   } | ||||
|  | ||||
|   /** | ||||
| * 查询参数 | ||||
| */ | ||||
|   get reqParams() { | ||||
|     return { | ||||
|       ...this.sf?.value, | ||||
|     }; | ||||
|   } | ||||
|  | ||||
|  | ||||
|   /** | ||||
| * 初始化查询表单 | ||||
| */ | ||||
| @ -32,24 +64,24 @@ export class SupplyManagementAssignedCarComponent implements OnInit { | ||||
|     this.schema = { | ||||
|       properties: { | ||||
|         _$expand: { type: 'boolean', ui: { hidden: true } }, | ||||
|         no: { | ||||
|         nameOrPhone: { | ||||
|           type: 'string', | ||||
|           title: '', | ||||
|           ui: { | ||||
|             placholder: '请输入司机姓名/手机号' | ||||
|             placeholder: '请输入司机姓名/手机号' | ||||
|           } | ||||
|         }, | ||||
|         no2: { | ||||
|         carNo: { | ||||
|           type: 'string', | ||||
|           title: '', | ||||
|           ui: { | ||||
|             placholder: '请输入车牌号' | ||||
|             placeholder: '请输入车牌号' | ||||
|           } | ||||
|         }, | ||||
|       }, | ||||
|       type: 'object', | ||||
|     }; | ||||
|     this.ui = { '*': { spanLabelFixed: 80, grid: { span: 12, gutter: 4 } } }; | ||||
|     this.ui = { '*': { spanLabelFixed: 10, grid: { span: 8, gutter: 1 } } }; | ||||
|   } | ||||
|  | ||||
|   /** | ||||
| @ -57,25 +89,79 @@ export class SupplyManagementAssignedCarComponent implements OnInit { | ||||
|    */ | ||||
|   initSt() { | ||||
|     this.columns = [ | ||||
|       { width: 50, type: 'checkbox', className: 'text-center' }, | ||||
|       { title: '司机姓名', width: 80, index: 'owner', className: 'text-center' }, | ||||
|       { title: '手机号', index: 'goodsQuantity', width: 100, className: 'text-center' }, | ||||
|       { title: '车牌号', width: 100, index: 'carNo', className: 'text-center' }, | ||||
|       { title: '状态', index: 'status', width: 100, className: 'text-center' }, | ||||
|       { width: 50, type: 'radio', className: 'text-center' }, | ||||
|       { title: '司机姓名', width: 120, index: 'name', className: 'text-center' }, | ||||
|       { title: '手机号', index: 'telephone', width: 200, className: 'text-center' }, | ||||
|       { title: '车队长', render: 'carCaptain', className: 'text-center' }, | ||||
|       { title: '指定车辆', width: 300, render: 'carId', className: 'text-center' }, | ||||
|       { title: '状态', render: 'driverStatus', className: 'text-center', type: 'badge', badge: BADGE }, | ||||
|     ]; | ||||
|   } | ||||
|  | ||||
|   ngOnInit(): void { | ||||
|   } | ||||
|  | ||||
|   save(value: any): void { | ||||
|     this.service.request(`/user/${this.record.id}`, value).subscribe(res => { | ||||
|       this.msgSrv.success('保存成功'); | ||||
|       this.modal.close(true); | ||||
|   dataProcess(data: STData[]): STData[] { | ||||
|     return data.map((i, index) => { | ||||
|       i.carId = ''; | ||||
|       i.disabled = i.carStatus === '1'; | ||||
|       const defaultCar = i?.userCarLicenseDesensitizationVOList?.filter((item: any) => item.isDefault); | ||||
|       if (defaultCar.length > 0) { | ||||
|         i.carId = defaultCar[0].carId; | ||||
|       } | ||||
|       return i; | ||||
|     }); | ||||
|   } | ||||
|  | ||||
|   save(): void { | ||||
|     console.log(this.selectedRows); | ||||
|     if (this.selectedRows) { | ||||
|       const { carId, userId: driverId } = this.selectedRows; | ||||
|       const params: any = { carId, driverId }; | ||||
|       this.service.request(this.url, { ...params, ...this.params }).subscribe((res: any) => { | ||||
|         if (res) { | ||||
|           this.modal.close(res); | ||||
|         } | ||||
|       }) | ||||
|  | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   changeSt(e: STChange): void { | ||||
|     if (e?.type === 'loaded') this.selectedRows = null; | ||||
|     if (e?.type === 'radio') this.selectedRows = e?.radio; | ||||
|     console.log(this.selectedRows); | ||||
|  | ||||
|   } | ||||
|   /** | ||||
|    * 添加司机 | ||||
|    * @param item | ||||
|    */ | ||||
|   addDriver() { | ||||
|     this.modalHelper.create(CarAddmodalComponent, {}, { size: 900, modalOptions: { nzMaskClosable: false } }).subscribe((res) => { | ||||
|       if (res) this.st.reload(); | ||||
|     }); | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * 设置车队长 | ||||
|    */ | ||||
|   setCarCaptain(item: any) { | ||||
|     this.modalHelper.create(SupplyManagementAddDriversComponent, { dirvierInfo: item }, { | ||||
|       size: 900, | ||||
|       modalOptions: { nzMaskClosable: false, nzTitle: '设置' } | ||||
|     } | ||||
|     ).subscribe((res) => { | ||||
|       if (res) this.st.reload(); | ||||
|     }); | ||||
|   } | ||||
|  | ||||
|   close(): void { | ||||
|     this.modal.destroy(); | ||||
|   } | ||||
|  | ||||
|   reset() { | ||||
|     this.sf.reset(); | ||||
|     this.st.load(1); | ||||
|   } | ||||
| } | ||||
|  | ||||
| @ -821,7 +821,7 @@ export class  SupplyManagementOnecarPublishComponent implements OnInit { | ||||
|       maxCube: res?.goodsInfoVOList[0]?.maxCube?.split(',') , | ||||
|       maxWeight: res?.goodsInfoVOList[0]?.maxWeight?.split(',') , | ||||
|       number:  res?.goodsInfoVOList[0]?.number   , | ||||
|       goodsType:  res?.goodsInfoVOList[0]?.goodsType   , | ||||
|       goodsTypeName:  res?.goodsInfoVOList[0]?.goodsTypeName   , | ||||
|       modifyUserId:  res?.goodsInfoVOList[0]?.modifyUserId   , | ||||
|       resourceId:  res?.goodsInfoVOList[0]?.resourceId   , | ||||
|       rule:  res?.goodsInfoVOList[0]?.rule   , | ||||
|  | ||||
| @ -288,7 +288,7 @@ export class SupplyManagementVehicleComponent implements OnInit { | ||||
|           }, | ||||
|           { | ||||
|             text: '重新指派', | ||||
|             // click: (_record) => this.assignedCar(_record), | ||||
|             click: (_record) => this.assignedCar(_record), | ||||
|             // iif: item =>  item.auditStatus === 2, | ||||
|           }, | ||||
|         ], | ||||
| @ -377,17 +377,28 @@ export class SupplyManagementVehicleComponent implements OnInit { | ||||
|   /** | ||||
|   * 重新指派 | ||||
|   */ | ||||
|   assignedCar(item: any) { | ||||
|    assignedCar(item: any) { | ||||
|     const { resourceId } = item; | ||||
|     const modalRef = this.modal.create({ | ||||
|       nzTitle: '指派熟车', | ||||
|       nzWidth: '800px', | ||||
|       nzWidth: '1200px', | ||||
|       nzContent: SupplyManagementAssignedCarComponent, | ||||
|       nzComponentParams: { | ||||
|         i: item, | ||||
|         status: 'anew', | ||||
|         // url: this.service.$api_save_assign_vehicle, | ||||
|         params: { resourceId } | ||||
|       }, | ||||
|       nzFooter: null, | ||||
|  | ||||
|     }); | ||||
|     modalRef.afterClose.subscribe((result) => { | ||||
|       if (result) { | ||||
|         this.st.reload(); | ||||
|       } | ||||
|     }); | ||||
|   } | ||||
|  | ||||
|    /** | ||||
|   * 审核 | ||||
|   */ | ||||
|  | ||||
| @ -1,7 +1,7 @@ | ||||
| /* | ||||
|  * @Author: your name | ||||
|  * @Date: 2021-12-03 11:10:14 | ||||
|  * @LastEditTime: 2021-12-20 13:38:26 | ||||
|  * @LastEditTime: 2021-12-21 11:04:45 | ||||
|  * @LastEditors: Please set LastEditors | ||||
|  * @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE | ||||
|  * @FilePath: \tms-obc-web\src\app\routes\supply-management\supply-management.module.ts | ||||
| @ -26,6 +26,8 @@ import { PublishchooseFamifiarAddComponent } from './components/choose-famifiar/ | ||||
| import { SupplyManagementBulkPublishComponent } from './components/bulk-publish/bulk-publish.component'; | ||||
| import { PublishAddressListComponent } from './components/onecar-publish/address-list/address-list.component'; | ||||
| import { PublishSuccessComponent } from './components/onecar-publish/publish-success/publish-success.component'; | ||||
| import { CarAddDriverComponent } from './components/add-driver/add-driver.component'; | ||||
| import { CarAddmodalComponent } from './components/addmodal/addmodal.component'; | ||||
|  | ||||
|  | ||||
| const COMPONENTS: Type<void>[] = [ | ||||
| @ -45,8 +47,9 @@ const COMPONENTS: Type<void>[] = [ | ||||
|   PublishchooseFamifiarAddComponent, | ||||
|   SupplyManagementBulkPublishComponent, | ||||
|   PublishAddressListComponent, | ||||
|   PublishSuccessComponent | ||||
|    | ||||
|   PublishSuccessComponent, | ||||
|   CarAddDriverComponent, | ||||
|   CarAddmodalComponent | ||||
| ]; | ||||
|  | ||||
| @NgModule({ | ||||
|  | ||||
| @ -6,6 +6,8 @@ import { ShipperBaseService } from '@shared'; | ||||
| import { NzModalService } from 'ng-zorro-antd/modal'; | ||||
| import { of } from 'rxjs'; | ||||
| import { map } from 'rxjs/operators'; | ||||
| import { VehicleSureArriveComponent } from 'src/app/routes/order-management/modal/vehicle/sure-arrive/sure-arrive.component'; | ||||
| import { VehicleSureDepartComponent } from 'src/app/routes/order-management/modal/vehicle/sure-depart/sure-depart.component'; | ||||
| import { WaybillManagementServe } from '../../services/waybill-management.service'; | ||||
|  | ||||
|  | ||||
| @ -333,6 +335,14 @@ tabs = { | ||||
|             text: '查看评价', | ||||
|             click: (_record) => this.viewEvaluate(_record), | ||||
|           }, | ||||
|           { | ||||
|             text: '确认发车', | ||||
|             click: (_record) => this.sureDepart(_record), | ||||
|           }, | ||||
|           { | ||||
|             text: '确认到车', | ||||
|             click: (_record) => this.sureArrive(_record), | ||||
|           }, | ||||
|         ], | ||||
|       }, | ||||
|     ]; | ||||
| @ -511,4 +521,31 @@ tabs = { | ||||
|       } | ||||
|     }) | ||||
|   } | ||||
|       //  *确认发车 | ||||
|     | ||||
|       sureDepart(item: any) { | ||||
|         const modalRef = this.modal.create({ | ||||
|           nzTitle: '确认发车', | ||||
|           nzWidth: '50%', | ||||
|           nzContent: VehicleSureDepartComponent, | ||||
|           nzComponentParams: { | ||||
|             i: item, | ||||
|            Status: 1 | ||||
|           }, | ||||
|           nzFooter: null | ||||
|         }); | ||||
|       } | ||||
|       // 确认到车 | ||||
|       sureArrive(item: any) { | ||||
|         const modalRef = this.modal.create({ | ||||
|           nzTitle: '确认到车', | ||||
|           nzWidth: '50%', | ||||
|           nzContent: VehicleSureArriveComponent, | ||||
|           nzComponentParams: { | ||||
|             i: item, | ||||
|            Status: 1 | ||||
|           }, | ||||
|           nzFooter: null | ||||
|         }); | ||||
|       } | ||||
| } | ||||
|  | ||||
| @ -2,7 +2,7 @@ import { WaybillManagementBulkComponent } from './../components/bulk/bulk.compon | ||||
| /* | ||||
|  * @Author: your name | ||||
|  * @Date: 2021-12-07 14:52:29 | ||||
|  * @LastEditTime: 2021-12-18 16:06:43 | ||||
|  * @LastEditTime: 2021-12-20 19:17:22 | ||||
|  * @LastEditors: Please set LastEditors | ||||
|  * @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE | ||||
|  * @FilePath: \tms-obc-web\src\app\routes\waybill-management\services\waybill-management.service.ts | ||||
| @ -39,7 +39,14 @@ export class WaybillManagementServe extends BaseService { | ||||
|    | ||||
|       // 大宗确认发车 | ||||
|   $api_get_insertBulkStartCarInfo= `/api/sdc/wayBillOperate/insertBulkStartCarInfo`; | ||||
|    | ||||
|       // 整车确认发车 | ||||
|   $api_get_insertWholeStartCarInfo= `/api/sdc/wayBillOperate/insertWholeStartCarInfo`; | ||||
|       // 整车确认到车 | ||||
|   $api_get_insertWholeUnloadCarInfo = `/api/sdc/wayBillOperate/insertWholeUnloadCarInfo`; | ||||
|       // 大宗确认到车 | ||||
|   $api_get_insertBulkUnloadCarInfo = `/api/sdc/wayBillOperate/insertBulkUnloadCarInfo`; | ||||
|   //  确认到车界面信息(两个只能看的图片) | ||||
|    $api_get_getUnloadCarInfo = `/api/sdc/wayBillOperate/getUnloadCarInfo`; | ||||
|   constructor(public injector: Injector) { | ||||
|     super(injector) | ||||
|   } | ||||
|  | ||||
		Reference in New Issue
	
	Block a user