车辆对接
This commit is contained in:
		| @ -0,0 +1,394 @@ | ||||
| <!-- | ||||
|  * @Author: your name | ||||
|  * @Date: 2021-12-03 15:31:52 | ||||
|  * @LastEditTime: 2021-12-23 14:33: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\components\vehicle-detail\vehicle-detail.component.html | ||||
| --> | ||||
| <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> | ||||
|   <ng-template #headerContent> | ||||
|     <div class="mb-xs" nz-row> | ||||
|       <h4 class="ml-md" style="font-size: 18px;">订单号: {{ i?.billCode }}</h4> | ||||
|     </div> | ||||
|     <div nz-row style="display: flex; justify-content: end;"> | ||||
|       <div nz-col nzSpan="10"> | ||||
|         <button nz-button (click)="cancelChange()">取消修改</button> | ||||
|         <button nz-button nzType="primary" (click)="save()" nzGhost>保存修改</button> | ||||
|       </div> | ||||
|     </div> | ||||
|    <div> | ||||
|      <div style="display: flex; justify-content: space-between;"> | ||||
|       <div sv-container> | ||||
|         <sv label="货主">{{ i?.goodsResource?.[0]?.shipperAppUserName }} </sv> | ||||
|         <sv label="所属项目">{{i?.goodsResource?.[0]?.enterpriseProjectName}}</sv> | ||||
|         <sv label="服务类型">{{i?.goodsResource?.[0]?.serviceTypeLabel}}</sv> | ||||
|         <sv label="录单员">{{i?.goodsResource?.[0]?.dispatchName}} 18100000000 </sv> | ||||
|         <sv label="调度员">{{i?.goodsResource?.[0]?.dispatchName}} </sv> | ||||
|       </div> | ||||
|       <div> | ||||
|         <div>状态</div> | ||||
|         <div style="font-size: 22px;font-weight: 700;">{{i?.billStatusLabel}}</div> | ||||
|       </div> | ||||
|      </div> | ||||
|      <nz-tabset nzType="card" style="margin-top: 15px;"> | ||||
|       <nz-tab [nzTitle]="tempt" > | ||||
|         <ng-template #tempt> | ||||
|           <nz-anchor> | ||||
|             <nz-link nzHref="#distannce1" nzTitle="装卸货信息"></nz-link> | ||||
|           </nz-anchor> | ||||
|         </ng-template> | ||||
|       </nz-tab> | ||||
|       <nz-tab [nzTitle]="tempt2" > | ||||
|         <ng-template #tempt2> | ||||
|           <nz-anchor> | ||||
|             <nz-link nzHref="#distannce2" nzTitle="基本信息"></nz-link> | ||||
|           </nz-anchor> | ||||
|         </ng-template> | ||||
|       </nz-tab> | ||||
|       <nz-tab [nzTitle]="tempt3" > | ||||
|         <ng-template #tempt3> | ||||
|           <nz-anchor> | ||||
|             <nz-link nzHref="#distannce3" nzTitle="运费信息"></nz-link> | ||||
|           </nz-anchor> | ||||
|         </ng-template> | ||||
|       </nz-tab> | ||||
|       <nz-tab [nzTitle]="tempt4" > | ||||
|         <ng-template #tempt4> | ||||
|           <nz-anchor> | ||||
|             <nz-link nzHref="#distannce4" nzTitle="附件信息"></nz-link> | ||||
|           </nz-anchor> | ||||
|         </ng-template> | ||||
|       </nz-tab> | ||||
|       <nz-tab [nzTitle]="tempt5" > | ||||
|         <ng-template #tempt5> | ||||
|           <nz-anchor> | ||||
|             <nz-link nzHref="#distannce5" nzTitle="轨迹信息"></nz-link> | ||||
|           </nz-anchor> | ||||
|         </ng-template> | ||||
|       </nz-tab> | ||||
|     </nz-tabset> | ||||
|    </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-card> | ||||
|  | ||||
|  | ||||
| <nz-card> | ||||
|   <div class="card-title" id="distannce1" | ||||
|     >装卸货信息<span class="tip-font">预计公里数:{{ totalDistance }}km,预计行程耗时:{{ totalTime }}小时</span></div | ||||
|   > | ||||
|   <form nz-form [formGroup]="validateForm1" role="form"> | ||||
|     <div nz-row [nzGutter]="24"> | ||||
|       <div nz-col [nzSpan]="8"> | ||||
|         <div *ngFor="let data of startInfo; let idx = index"> | ||||
|           <nz-form-item> | ||||
|             <nz-form-label [nzSpan]="4" nzRequired>装货地</nz-form-label> | ||||
|             <nz-form-control [nzErrorTip]="'请输入装货地'"> | ||||
|               <div class="align-center"> | ||||
|                 <nz-input-group [nzSuffix]="endInconTemp1"> | ||||
|                   <input | ||||
|                     nz-input | ||||
|                     [(ngModel)]="data.detailedAddress" | ||||
|                     (click)="openMap('start', idx)" | ||||
|                     formControlName="loadAddress{{ idx }}" | ||||
|                     placeholder="请输入装货地" | ||||
|                   /> | ||||
|                 </nz-input-group> | ||||
|                 <span  style="padding: 0 10px" | ||||
|                   ><i nz-icon nzType="menu" nzTheme="outline" style="color: #1890ff" (click)="openMap('start', idx)"></i | ||||
|                 ></span> | ||||
|                 <span  | ||||
|                   ><i nz-icon nzType="minus-circle-o" nzTheme="fill" style="color: #d9001b" (click)="subStartInfo($event, idx, data.id)"></i | ||||
|                 ></span> | ||||
|               </div> | ||||
|             </nz-form-control> | ||||
|           </nz-form-item> | ||||
|           <nz-form-item> | ||||
|             <nz-form-label [nzSpan]="4" nzRequired>联系人</nz-form-label> | ||||
|             <nz-form-control [nzErrorTip]="'请输入联系人信息'"> | ||||
|               <div class="align-center"> | ||||
|                 <input nz-input [(ngModel)]="data.appUserName" [ngModelOptions]="{ standalone: true }" maxlength="30" /> | ||||
|                 <input style="margin-left: 12px" nz-input [(ngModel)]="data.contractTelephone" [ngModelOptions]="{ standalone: true }" maxlength="11" /> | ||||
|               </div> | ||||
|             </nz-form-control> | ||||
|           </nz-form-item> | ||||
|         </div> | ||||
|         <button  nz-button nzType="primary" (click)="addStartInfo($event)"> | ||||
|           <i nz-icon nzType="plus"></i> | ||||
|           添加装货地 | ||||
|         </button> | ||||
|       </div> | ||||
|       <div nz-col [nzSpan]="8"> | ||||
|         <div style="display: flex; justify-content: center"> | ||||
|           <span style="padding: 24 px; font-size: 30px; color: #7d7d7d"><i nz-icon nzType="swap" nzTheme="outline"></i></span> | ||||
|         </div> | ||||
|       </div> | ||||
|       <div nz-col [nzSpan]="8"> | ||||
|         <div *ngFor="let data of endInfo; let idx = index"> | ||||
|           <nz-form-item> | ||||
|             <nz-form-label [nzSpan]="4" nzRequired>卸货地</nz-form-label> | ||||
|             <nz-form-control [nzErrorTip]="'请输入卸货地'"> | ||||
|               <div class="align-center"> | ||||
|                 <nz-input-group [nzSuffix]="endInconTemp1"> | ||||
|                   <input | ||||
|                     nz-input | ||||
|                     [(ngModel)]="data.detailedAddress" | ||||
|                     (click)="openMap('end', idx)" | ||||
|                     formControlName="unloadAddress{{ idx }}" | ||||
|                     placeholder="请输入卸货地" | ||||
|                   /> | ||||
|                 </nz-input-group> | ||||
|                 <span  style="padding: 0 10px"><i nz-icon nzType="menu" nzTheme="outline" style="color: #1890ff"></i></span> | ||||
|                 <span  | ||||
|                   ><i nz-icon nzType="minus-circle-o" nzTheme="fill" style="color: #d9001b" (click)="subEndInfo($event, idx)"></i | ||||
|                 ></span> | ||||
|               </div> | ||||
|             </nz-form-control> | ||||
|           </nz-form-item> | ||||
|           <nz-form-item> | ||||
|             <nz-form-label [nzSpan]="4" nzRequired>联系人</nz-form-label> | ||||
|             <nz-form-control [nzErrorTip]="'请输入联系人信息'"> | ||||
|               <div class="align-center"> | ||||
|                 <input nz-input [(ngModel)]="data.appUserName" [ngModelOptions]="{ standalone: true }" maxlength="30" /> | ||||
|                 <input style="margin-left: 12px" nz-input [(ngModel)]="data.contractTelephone" [ngModelOptions]="{ standalone: true }" maxlength="11" /> | ||||
|               </div> | ||||
|             </nz-form-control> | ||||
|           </nz-form-item> | ||||
|         </div> | ||||
|         <button  nz-button nzType="primary" (click)="addEndInfo($event)"> | ||||
|           <i nz-icon nzType="plus"></i> | ||||
|           添加卸货地 | ||||
|         </button> | ||||
|       </div> | ||||
|     </div> | ||||
|     <div  nz-row [nzGutter]="24" style="margin-top: 24px"> | ||||
|       <div nz-col [nzSpan]="9"> | ||||
|         <!-- <nz-form-item> | ||||
|           <nz-form-label [nzSpan]="4" nzRequired>装货时间</nz-form-label> | ||||
|           <nz-form-control [nzErrorTip]="'请输入装货时间'"> | ||||
|             <nz-date-picker nzShowTime nzFormat="yyyy-MM-dd HH:mm:ss" formControlName="loadingTime"  [(ngModel)]="loadingTime"></nz-date-picker> | ||||
|           </nz-form-control> | ||||
|         </nz-form-item> --> | ||||
|         <p class="time-info">计划装货时间:{{i?.goodsResource?.[0]?.loadingTime}}</p> | ||||
|       </div> | ||||
|       <div nz-col [nzSpan]="8"> | ||||
|         <!-- <nz-form-item> | ||||
|           <nz-form-label [nzSpan]="9" nzRequired>卸货时间</nz-form-label> | ||||
|           <nz-form-control [nzErrorTip]="'请输入卸货时间'"> | ||||
|             <nz-date-picker nzShowTime nzFormat="yyyy-MM-dd HH:mm:ss" formControlName="unloadingTime"  [(ngModel)]="unloadingTime"></nz-date-picker> | ||||
|           </nz-form-control> | ||||
|         </nz-form-item> --> | ||||
|         <p class="time-info">计划卸货时间:{{i?.goodsResource?.[0]?.unloadingTime}}</p> | ||||
|       </div> | ||||
|     </div> | ||||
|     <ng-template #endInconTemp1><i nz-icon nzType="global"></i></ng-template> | ||||
|   </form> | ||||
| </nz-card> | ||||
| <!-- <nz-card nzTitle="装卸货信息(一装一卸)" id="distannce1" > | ||||
|   <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;let idx = index"> | ||||
|             <div *ngIf="item?.type === '1'" class="loading-row"> | ||||
|               <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?.goodsResource?.[0]?.loadingTime}}</p> | ||||
|         </div> | ||||
|       </div> | ||||
|       <div nz-col [nzSpan]="12"> | ||||
|         <div class="handling-info p-md"> | ||||
|           <div class="flex" *ngFor="let item of i?.unLoadingPlaceList;let idx = index"> | ||||
|             <div *ngIf="item?.type === '2'" class="loading-row"> | ||||
|               <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?.goodsResource?.[0]?.unloadingTime}}</p> | ||||
|         </div> | ||||
|       </div> | ||||
|     </div> | ||||
|   </div> | ||||
| </nz-card> --> | ||||
| <nz-card nzTitle="基本信息" id="distannce2"> | ||||
|   <!-- <sv-container col="1"> | ||||
|       <sv label="网络货运人"> | ||||
|         {{i?.goodsResource?.[0]?.enterpriseInfoName}} | ||||
|       </sv> | ||||
|       <sv label="货物名称"> | ||||
|         {{i?.goodsInfoList?.[0]?.goodsName}} | ||||
|       </sv> | ||||
|   </sv-container> | ||||
|   <sv-container col="2"> | ||||
|       <sv label="货物数量"> | ||||
|         {{i?.goodsInfoList?.[0]?.weight}}顿,{{i?.goodsInfoList?.[0]?.volume}}方,{{i?.goodsInfoList?.[0]?.number}}件 | ||||
|       </sv> | ||||
|       <sv label="用车需求"> | ||||
|         {{i?.goodsInfoList?.[0]?.maxWeightLabel}}/{{i?.goodsInfoList?.[0]?.maxCube}} | ||||
|       </sv> | ||||
|       <sv label="承运司机"> | ||||
|         {{i?.driverId}} | ||||
|       </sv> | ||||
|       <sv label="车型车长载重"> | ||||
|         {{i?.goodsInfoList?.[0]?.weight}}顿,{{i?.goodsInfoList?.[0]?.volume}}方,{{i?.goodsInfoList?.[0]?.number}}件 | ||||
|       </sv> | ||||
|   </sv-container> --> | ||||
|   <div nz-row> | ||||
|     <div nz-col nzSpan="12"> | ||||
|       <sf #sf3 [schema]="schema3" [formData]="sf3data" [button]="'none'" [ui]="ui3"></sf> | ||||
|       <sf #sf4 [schema]="schema4" [formData]="sf4data" [button]="'none'" [ui]="ui4"> | ||||
|         <ng-template sf-template="weight" let-i let-ui="ui"> | ||||
|           <nz-input-group [nzAddOnAfter]="'吨'"> | ||||
|             <input | ||||
|               nz-input | ||||
|               type="number" | ||||
|               [ngModel]="i.value" | ||||
|               min="0" | ||||
|               step="0.01" | ||||
|               (ngModelChange)="i.setValue($event)" | ||||
|               placeholder="总重量,必填" | ||||
|             /> | ||||
|           </nz-input-group> | ||||
|         </ng-template> | ||||
|         <ng-template sf-template="volume" let-i let-ui="ui"> | ||||
|           <nz-input-group [nzAddOnAfter]="'方'"> | ||||
|             <input | ||||
|               nz-input | ||||
|               type="number" | ||||
|               [ngModel]="i.value" | ||||
|               min="0" | ||||
|               step="0.01" | ||||
|               (ngModelChange)="i.setValue($event)" | ||||
|               placeholder="总体积" | ||||
|             /> | ||||
|           </nz-input-group> | ||||
|         </ng-template> | ||||
|   | ||||
|         <ng-template sf-template="number" let-i let-ui="ui"> | ||||
|           <nz-input-group [nzAddOnAfter]="'车'"> | ||||
|             <input | ||||
|               nz-input | ||||
|               type="number" | ||||
|               [ngModel]="i.value" | ||||
|               min="0" | ||||
|               step="0.01" | ||||
|               (ngModelChange)="i.setValue($event)" | ||||
|               placeholder="总车次" | ||||
|             /> | ||||
|           </nz-input-group> | ||||
|         </ng-template> | ||||
|  | ||||
|         <ng-template sf-template="carmand" let-i let-ui="ui"> | ||||
|             {{i?.goodsInfoList?.[0]?.maxWeightLabel}}/{{i?.goodsInfoList?.[0]?.maxCube}} | ||||
|         </ng-template> | ||||
|  | ||||
|         <ng-template sf-template="drivers" let-i let-ui="ui"> | ||||
|           {{i?.driverId}} | ||||
|       </ng-template> | ||||
|  | ||||
|       <ng-template sf-template="weightModel" let-i let-ui="ui"> | ||||
|           {{i?.goodsInfoList?.[0]?.weight}}顿,{{i?.goodsInfoList?.[0]?.volume}}方,{{i?.goodsInfoList?.[0]?.number}}件 | ||||
|         </ng-template> | ||||
|  | ||||
|       </sf> | ||||
|     </div> | ||||
|   </div> | ||||
|  | ||||
| </nz-card> | ||||
|  | ||||
|  | ||||
| <nz-card nzTitle="保险待定"> | ||||
| </nz-card> | ||||
|  | ||||
| <nz-card nzTitle="运费信息" id="distannce3"> | ||||
|   <st #st [data]="i?.billExpenseDetails" [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="附件信息" id="distannce4"> | ||||
|   <sv-container> | ||||
|     <sv label="协议附件"> | ||||
|       {{i?.supplementaryInformationVO?.stateReceipt?'是':'否'}} | ||||
|     </sv> | ||||
|   </sv-container> | ||||
|   <sv-container col="2" class="mt-md"> | ||||
|     <sv label="装货凭证"> | ||||
|       <app-imagelist [imgList]="[i?.goodsResource]"> | ||||
|       </app-imagelist> | ||||
|     </sv> | ||||
|     <sv label="卸货凭证"> | ||||
|       <app-imagelist [imgList]="[i?.goodsResource]"> | ||||
|       </app-imagelist> | ||||
|     </sv> | ||||
|   </sv-container> | ||||
| </nz-card> | ||||
| <nz-card nzTitle="补充信息"> | ||||
|   <sv-container> | ||||
|     <sv label="是否回单"> | ||||
|       {{i?.goodsResource?.stateReceipt ?'是':'否'}} | ||||
|     </sv> | ||||
|     <sv label="回单类型"> | ||||
|       {{i?.goodsResource?.receiptTypeLabel}} | ||||
|     </sv> | ||||
|     <sv label="联系人"> | ||||
|       {{i?.goodsResource?.receiptUserId}} / {{i?.supplementaryInformationVO?.phon}} | ||||
|     </sv> | ||||
|     <sv label="所在地区"> | ||||
|       {{i?.goodsResource?.receiptAddress}} | ||||
|     </sv> | ||||
|     <sv label="详细地址"> | ||||
|       {{i?.goodsResource?.receiptAddress}} | ||||
|     </sv> | ||||
|     <sv label="回单凭证"> | ||||
|       {{i?.goodsResource?.receiptAddress}} | ||||
|     </sv> | ||||
|   </sv-container> | ||||
|   <sv-container col="1" class="mt-md"> | ||||
|     <sv label="备注"> | ||||
|       {{i?.goodsResource?.remarks}} | ||||
|     </sv> | ||||
|   </sv-container> | ||||
| </nz-card> | ||||
|  | ||||
| <nz-card> | ||||
|   <div nz-row> | ||||
|     <nz-card nzTitle="轨迹信息" style="width: 100%;" id="distannce5"> | ||||
|       <div nz-row >  | ||||
|         <div nz-col [nzSpan]='12'> | ||||
|     <!-- <st #st [data]="i?.auditRecordList" [columns]="logColumns" [ps]="0" [page]="{ show: false, showSize: false }"> | ||||
|     </st> --> | ||||
|   </div> | ||||
|   <div nz-col [nzSpan]='12'> | ||||
|      <amap-path-simplifier></amap-path-simplifier> | ||||
|    </div> | ||||
|    </div> | ||||
|     </nz-card> | ||||
|   </div> | ||||
| </nz-card> | ||||
| @ -0,0 +1,68 @@ | ||||
| :host{ | ||||
|     .btn-size{ | ||||
|         font-size: 14px; | ||||
|     } | ||||
|     .bdr{ | ||||
|         border-right: 1px solid #ccc; | ||||
|     } | ||||
|     .bdl{ | ||||
|         border-left: 1px solid #ccc; | ||||
|     } | ||||
|     .source-info{ | ||||
|         p{ | ||||
|             margin-bottom: .5em; | ||||
|         } | ||||
|     } | ||||
|     .freight-info-box{ | ||||
|         width: 95%; | ||||
|     } | ||||
|     .freigth-label{ | ||||
|         display: inline-block; | ||||
|         width: 50px; | ||||
|         text-align: right; | ||||
|     } | ||||
|  | ||||
|     ::ng-deep{ | ||||
|       .approval-status{ | ||||
|          .ant-steps{ | ||||
|              width: 70%; | ||||
|              margin: 0 auto; | ||||
|          }  | ||||
|       }   | ||||
|     } | ||||
|     .leftPadding { | ||||
|         padding-right: 100px; | ||||
|     } | ||||
|     /deep/ .ant-tabs-top > .ant-tabs-nav, .ant-tabs-bottom > .ant-tabs-nav, .ant-tabs-top > div > .ant-tabs-nav, .ant-tabs-bottom > div > .ant-tabs-nav { | ||||
|         margin: 0; | ||||
|     } | ||||
|     /deep/ .ant-anchor-ink::before { | ||||
|         width: 0; | ||||
|     } | ||||
|     .ant-tabs-card.ant-tabs-top > .ant-tabs-nav .ant-tabs-tab + .ant-tabs-tab, .ant-tabs-card.ant-tabs-bottom > .ant-tabs-nav .ant-tabs-tab + .ant-tabs-tab, .ant-tabs-card.ant-tabs-top > div > .ant-tabs-nav .ant-tabs-tab + .ant-tabs-tab, .ant-tabs-card.ant-tabs-bottom > div > .ant-tabs-nav .ant-tabs-tab + .ant-tabs-tab { | ||||
|         margin-left: 40px | ||||
|     } | ||||
|     .tip-font { | ||||
|         margin-left: 16px; | ||||
|         font-weight: 500; | ||||
|         font-size: 12px; | ||||
|       } | ||||
|        | ||||
|       .card-title { | ||||
|         margin-bottom: 24px; | ||||
|         font-weight: bold; | ||||
|         font-size: 16px; | ||||
|       } | ||||
|        | ||||
|       .align-center { | ||||
|         display: flex; | ||||
|         align-items: center; | ||||
|         justify-content: center; | ||||
|       } | ||||
|        | ||||
|       #container { | ||||
|         width: 300px; | ||||
|         height: 180px; | ||||
|       } | ||||
|        | ||||
| } | ||||
| @ -0,0 +1,24 @@ | ||||
| import { waitForAsync, ComponentFixture, TestBed } from '@angular/core/testing'; | ||||
| import { OrderManagementVehicleDetailChangeComponent } from './vehicle-detail-change.component'; | ||||
|  | ||||
| describe('OrderManagementVehicleDetailChangeComponent', () => { | ||||
|   let component: OrderManagementVehicleDetailChangeComponent; | ||||
|   let fixture: ComponentFixture<OrderManagementVehicleDetailChangeComponent>; | ||||
|  | ||||
|   beforeEach(waitForAsync(() => { | ||||
|     TestBed.configureTestingModule({ | ||||
|       declarations: [ OrderManagementVehicleDetailChangeComponent ] | ||||
|     }) | ||||
|     .compileComponents(); | ||||
|   })); | ||||
|  | ||||
|   beforeEach(() => { | ||||
|     fixture = TestBed.createComponent(OrderManagementVehicleDetailChangeComponent); | ||||
|     component = fixture.componentInstance; | ||||
|     fixture.detectChanges(); | ||||
|   }); | ||||
|  | ||||
|   it('should create', () => { | ||||
|     expect(component).toBeTruthy(); | ||||
|   }); | ||||
| }); | ||||
| @ -0,0 +1,405 @@ | ||||
| import { ViewChild } from '@angular/core'; | ||||
| /* | ||||
|  * @Author: your name | ||||
|  * @Date: 2021-12-03 15:31:52 | ||||
|  * @LastEditTime: 2021-12-23 14:33:36 | ||||
|  * @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 | ||||
|  */ | ||||
| import { Component, OnInit } from '@angular/core'; | ||||
| import { FormBuilder, FormControl, FormGroup, Validators } from '@angular/forms'; | ||||
| import { ActivatedRoute } from '@angular/router'; | ||||
| import { STColumn } from '@delon/abc/st'; | ||||
| import { SFComponent, SFSchema, SFSelectWidgetSchema, SFUISchema } from '@delon/form'; | ||||
| import { _HttpClient } from '@delon/theme'; | ||||
| import { AmapPoiPickerComponent, AmapService, ShipperBaseService } from '@shared'; | ||||
| import { NzMessageService } from 'ng-zorro-antd/message'; | ||||
| import { NzModalService } from 'ng-zorro-antd/modal'; | ||||
| import { OrderManagementService } from '../../services/order-management.service'; | ||||
| @Component({ | ||||
|   selector: 'app-supply-management-vehicle-detail-change', | ||||
|   templateUrl: './vehicle-detail-change.component.html', | ||||
|   styleUrls: ['./vehicle-detail-change.component.less'] | ||||
| }) | ||||
| export class OrderManagementVehicleDetailChangeComponent implements OnInit { | ||||
|   validateForm1: FormGroup; | ||||
|   id = this.route.snapshot.params.id; | ||||
|   @ViewChild('distannce3', { static: false }) | ||||
|   i: any= {unLoadingPlaceList:[]}; | ||||
|   logColumns: STColumn[] = [ | ||||
|     { title: '款项', index: 'costName' }, | ||||
|     { title: '总费用(元)', index: 'price' }, | ||||
|     { title: '协议金额(元)', index: 'price' }, | ||||
|     { title: '附加费(元)', index: 'surcharge' }, | ||||
|     { title: '附加费率(%)', index: 'paymentMethodRate' }, | ||||
|     { title: '支付时间', index: ' paymentTime' }, | ||||
|     { | ||||
|       title: '支付状态', | ||||
|       className: 'text-center', | ||||
|       index: 'paymentStatus', | ||||
|       type: 'badge', | ||||
|       width: '120px', | ||||
|       badge: { | ||||
|         '1': { text: '待申请', color: 'warning' }, | ||||
|         '2': { text: '已支付', color: 'success' }, | ||||
|         '3': { text: '已拒绝', color: 'warning' }, | ||||
|         '4': { text: '申请中', color: 'warning' }, | ||||
|       }, | ||||
|     }, | ||||
|   ]; | ||||
|   totalDistance = 0.0; //总里程 | ||||
|   totalTime = 0.0; //路程总时间 | ||||
|   startInfo: any = [];  // 装货信息 | ||||
|   endInfo: any = [];   // 卸货信息 | ||||
|   unloadingTime: any; // 货源单设置回显 | ||||
|   loadingTime: any; // 货源单设置回显 | ||||
|   sf3data: any; // 货源单设置回显 | ||||
|   sf4data: any; // 货源单设置回显 | ||||
|   @ViewChild('sf3', { static: false }) sf3!: SFComponent; | ||||
|   schema3: SFSchema = {}; | ||||
|   ui3!: SFUISchema; | ||||
|  | ||||
|   @ViewChild('sf4', { static: false }) sf4!: SFComponent; | ||||
|   schema4: SFSchema = {}; | ||||
|   ui4!: SFUISchema; | ||||
|   constructor( | ||||
|     private route: ActivatedRoute, | ||||
|     private msgSrv: NzMessageService, | ||||
|     private service: OrderManagementService, | ||||
|     private modalService: NzModalService, | ||||
|     private amapService: AmapService, | ||||
|     public service2: ShipperBaseService, | ||||
|     fb: FormBuilder,  | ||||
|   ) { | ||||
|     this.validateForm1 = fb.group({ | ||||
|       loadingTime: [null, []], | ||||
|       unloadingTime: [null, []], | ||||
|     }); | ||||
|   } | ||||
|  | ||||
|   ngOnInit(): void { | ||||
|     console.log(this.id) | ||||
|     this.initSF3(); | ||||
|     this.initSF4(); | ||||
|     this.initData() | ||||
|   } | ||||
|  | ||||
|   initData() { | ||||
|     this.service.request(this.service.$api_get_getWholeBillDetail, {id: this.id}).subscribe(res => { | ||||
|       console.log(res) | ||||
|       if (res) { | ||||
|         this.i = res; | ||||
|         res?.unLoadingPlaceList.forEach((element: any) => { | ||||
|           if(element.type === 1 || element.type === '1') { | ||||
|             const controlId = this.startInfo.length; | ||||
|               this.startInfo.push({ | ||||
|                 detailedAddress: element.detailedAddress, | ||||
|                 appUserName: element.appUserName, | ||||
|                 contractTelephone: element.contractTelephone, | ||||
|                 latitude: element.latitude, | ||||
|                 longitude: element.longitude, | ||||
|                 province: element.province, | ||||
|                 city: element.city, | ||||
|                 area: element.area, | ||||
|                 type: element.type, | ||||
|                 id: element.id | ||||
|               }) | ||||
|             this.validateForm1.addControl(`loadAddress${controlId}`, new FormControl(null, Validators.required)); | ||||
|             this.validateForm1.addControl(`loadName${controlId}`, new FormControl(null, Validators.required)); | ||||
|             this.validateForm1.addControl(`loadPhone${controlId}`, new FormControl(null, Validators.required)); | ||||
|           } else if(element.type === 2 || element.type === '2') { | ||||
|             const controlId = this.endInfo.length; | ||||
|               this.endInfo.push({ | ||||
|                 detailedAddress: element?.detailedAddress, | ||||
|                 appUserName: element?.appUserName, | ||||
|                 contractTelephone: element?.contractTelephone, | ||||
|                 latitude: element.latitude, | ||||
|                 longitude: element.longitude, | ||||
|                 province: element.province, | ||||
|                 city: element.city, | ||||
|                 area: element.area, | ||||
|                 type: element.type, | ||||
|                 id: element.id | ||||
|               }) | ||||
|             this.validateForm1.addControl(`unloadAddress${controlId}`, new FormControl(null, Validators.required)); | ||||
|             this.validateForm1.addControl(`unloadName${controlId}`, new FormControl(null, Validators.required)); | ||||
|             this.validateForm1.addControl(`unloadPhone${controlId}`, new FormControl(null, Validators.required)); | ||||
|           } | ||||
|         }); | ||||
|       } | ||||
|     }) | ||||
|   } | ||||
|  | ||||
|   hand() { | ||||
|     this.modalService.create({ | ||||
|       nzTitle: '', | ||||
|       // nzContent: OrderManagementGaodeMapComponent, | ||||
|       nzWidth: 1200 | ||||
|     }); | ||||
|   } | ||||
|  | ||||
|   goBack() { | ||||
|     window.history.go(-1); | ||||
|   } | ||||
|   // 取消修改 | ||||
|   cancelChange() { | ||||
|     window.history.go(-1); | ||||
|   } | ||||
|   // 保存修改 | ||||
|   save() { | ||||
|     if(typeof(this.validateForm1.value.unloadingTime) !== 'string' ) { | ||||
|       var c = new Date(this.validateForm1.value.unloadingTime);   | ||||
|       this.validateForm1.value.unloadingTime = c.getFullYear() + '-' + this.addPreZero(c.getMonth() + 1) + '-' + this.addPreZero(c.getDate()) + ' ' + this.addPreZero(c.getHours()) + ':' + this.addPreZero(c.getMinutes()) + ':' + this.addPreZero(c.getSeconds()) | ||||
|     } | ||||
|     if(typeof(this.validateForm1.value.loadingTime) !== 'string' ) { | ||||
|       var c = new Date(this.validateForm1.value.loadingTime);   | ||||
|       this.validateForm1.value.loadingTime = c.getFullYear() + '-' + this.addPreZero(c.getMonth() + 1) + '-' + this.addPreZero(c.getDate()) + ' ' + this.addPreZero(c.getHours()) + ':' + this.addPreZero(c.getMinutes()) + ':' + this.addPreZero(c.getSeconds()) | ||||
|     } | ||||
|   } | ||||
|   addPreZero(num: any){ | ||||
|     if(num<10){ | ||||
|      return '0'+num; | ||||
|     } else { | ||||
|      return num; | ||||
|     } | ||||
|    } | ||||
|   // -------------------装卸货信息处理 | ||||
|   addStartInfo(event: any) { | ||||
|     if (this.startInfo.length < 5) { | ||||
|       const controlId = this.startInfo.length; | ||||
|       this.startInfo.push({ | ||||
|         detailedAddress: '', | ||||
|         appUserName: '', | ||||
|         contractTelephone: '', | ||||
|         latitude: '', | ||||
|         longitude: '', | ||||
|         province: '', | ||||
|         city: '', | ||||
|         area: '', | ||||
|         type: 1 | ||||
|       }); | ||||
|       this.validateForm1.addControl(`loadAddress${controlId}`, new FormControl(null, Validators.required)); | ||||
|       this.validateForm1.addControl(`loadName${controlId}`, new FormControl(null, Validators.required)); | ||||
|       this.validateForm1.addControl(`loadPhone${controlId}`, new FormControl(null, Validators.required)); | ||||
|     } | ||||
|   } | ||||
|   subStartInfo(event: any, index: number, id?:any) { | ||||
|     console.log(event, index, id) | ||||
|     if(id) { | ||||
|       this.service.request(this.service.$api_delete_Wholedeletebatch,  [id]).subscribe((res) => { | ||||
|         console.log(res) | ||||
|       }) | ||||
|     } | ||||
|     this.startInfo.splice(index, 1); | ||||
|     this.validateForm1.removeControl(`loadAddress${index}`); | ||||
|     this.validateForm1.removeControl(`loadName${index}`); | ||||
|     this.validateForm1.removeControl(`loadPhone${index}`); | ||||
|   } | ||||
|   subEndInfo(event: any, index: number, id?:any) { | ||||
|     if(id) { | ||||
|       this.service.request(this.service.$api_delete_Wholedeletebatch,  [id]).subscribe((res) => { | ||||
|         console.log(res) | ||||
|       }) | ||||
|     } | ||||
|     console.log(event, index, id) | ||||
|     this.endInfo.splice(index, 1); | ||||
|         this.validateForm1.removeControl(`unloadAddress${index}`); | ||||
|     this.validateForm1.removeControl(`unloadName${index}`); | ||||
|     this.validateForm1.removeControl(`unloadPhone${index}`); | ||||
|   } | ||||
|   addEndInfo(event: any) { | ||||
|     if (this.addEndInfo.length < 5) { | ||||
|       const controlId = this.endInfo.length; | ||||
|       this.endInfo.push({ | ||||
|         detailedAddress: '', | ||||
|         appUserName: '', | ||||
|         contractTelephone: '', | ||||
|         latitude: '', | ||||
|         longitude: '', | ||||
|         province: '', | ||||
|         city: '', | ||||
|         area: '', | ||||
|         type: 2 | ||||
|       }); | ||||
|       this.validateForm1.addControl(`unloadAddress${controlId}`, new FormControl(null, Validators.required)); | ||||
|       this.validateForm1.addControl(`unloadName${controlId}`, new FormControl(null, Validators.required)); | ||||
|       this.validateForm1.addControl(`unloadPhone${controlId}`, new FormControl(null, Validators.required)); | ||||
|     } | ||||
|   } | ||||
|    // 打开地图 | ||||
|  openMap(type: string, index: number) { | ||||
|   const modalRef = this.modalService.create({ | ||||
|     nzTitle: '', | ||||
|     nzContent: AmapPoiPickerComponent, | ||||
|     nzWidth: 900, | ||||
|     nzOnOk: item => { | ||||
|       const poi = item.poi; | ||||
|       const locList = poi.pois; | ||||
|       switch (type) { | ||||
|         case 'start': | ||||
|           this.startInfo[index].detailedAddress = poi.formattedAddress; | ||||
|           this.startInfo[index].longitude = locList[0]; | ||||
|           this.startInfo[index].latitude = locList[1]; | ||||
|           this.startInfo[index].province = poi.addressComponent.province; | ||||
|           this.startInfo[index].city = poi.addressComponent.city; | ||||
|           this.startInfo[index].area = poi.addressComponent.district; | ||||
|           this.startInfo[index].address = poi.formattedAddress; | ||||
|           break; | ||||
|         case 'end': | ||||
|           this.endInfo[index].detailedAddress = poi.formattedAddress; | ||||
|           this.endInfo[index].longitude = locList[0]; | ||||
|           this.endInfo[index].latitude = locList[1]; | ||||
|           this.endInfo[index].province = poi.addressComponent.province; | ||||
|           this.endInfo[index].city = poi.addressComponent.city; | ||||
|           this.endInfo[index].area = poi.addressComponent.district; | ||||
|           this.endInfo[index].address = poi.formattedAddress; | ||||
|           break; | ||||
|         default: | ||||
|           break; | ||||
|       } | ||||
|  | ||||
|       if (this.startInfo[0]?.area && this.endInfo[0]?.area) { | ||||
|         this.amapService.drivingCompute([...this.startInfo], [...this.endInfo]).subscribe((res: any) => { | ||||
|           this.totalDistance = res.distance; | ||||
|           this.totalTime = res.time; | ||||
|         }); | ||||
|       } | ||||
|     } | ||||
|   }); | ||||
| } | ||||
|  | ||||
| initSF3() { | ||||
|   this.schema3 = { | ||||
|     properties: { | ||||
|       enterpriseInfoId: { | ||||
|         title: '网络货运人', | ||||
|         type: 'string', | ||||
|         ui: { | ||||
|           placeholder: '请选择', | ||||
|           widget: 'select', | ||||
|           asyncData: () => this.service2.getNetworkFreightForwarder(), | ||||
|           visibleIf: { | ||||
|             _$expand: (value: boolean) => value, | ||||
|           }, | ||||
|         } | ||||
|       }, | ||||
|       goodsName: { | ||||
|         type: 'string', | ||||
|         title: '货物名称', | ||||
|         ui: { | ||||
|           widget: 'dict-select', | ||||
|           params: { dictKey: 'GoodsName' }, | ||||
|           placeholder: '请选择' | ||||
|         } | ||||
|       }, | ||||
|       qita: { | ||||
|         type: 'string', | ||||
|         title: '', | ||||
|         ui: { | ||||
|           visibleIf: { | ||||
|             goodsName: value => value === '3' | ||||
|           } | ||||
|         } | ||||
|       } | ||||
|     }, | ||||
|     required: ['goodsName', ] | ||||
|   }; | ||||
|   this.ui3 = { | ||||
|     '*': { | ||||
|       spanLabelFixed: 90, | ||||
|       grid: { span: 12 } | ||||
|     }, | ||||
|     $enterpriseInfoId: { | ||||
|       grid: { span: 16, } | ||||
|     }, | ||||
|     $goodsName: { | ||||
|       grid: { span: 12 } | ||||
|     }, | ||||
|     $qita: { | ||||
|       grid: { span: 12 } | ||||
|     } | ||||
|   }; | ||||
| } | ||||
| initSF4() { | ||||
|   this.schema4 = { | ||||
|     properties: { | ||||
|       weight: { | ||||
|         type: 'string', | ||||
|         title: '货物数量', | ||||
|         ui: { | ||||
|           widget: 'custom', | ||||
|           placeholder: '请输入', | ||||
|           errors: { required: '必填项' } | ||||
|         } | ||||
|       }, | ||||
|       volume: { | ||||
|         type: 'string', | ||||
|         title: '', | ||||
|         ui: { | ||||
|           widget: 'custom', | ||||
|           placeholder: '请输入' | ||||
|         } | ||||
|       }, | ||||
|       number: { | ||||
|         type: 'string', | ||||
|         title: '', | ||||
|         ui: { | ||||
|           widget: 'custom', | ||||
|           placeholder: '请输入' | ||||
|         } | ||||
|       }, | ||||
|       carmand: { | ||||
|         type: 'string', | ||||
|         title: '用车需求', | ||||
|         ui: { | ||||
|           widget: 'custom', | ||||
|           placeholder: '请输入' | ||||
|         } | ||||
|       }, | ||||
|       drivers: { | ||||
|         type: 'string', | ||||
|         title: '承运司机', | ||||
|         ui: { | ||||
|           widget: 'custom', | ||||
|           placeholder: '请输入' | ||||
|         } | ||||
|       }, | ||||
|       weightModel: { | ||||
|         type: 'string', | ||||
|         title: '车型车长承重', | ||||
|         ui: { | ||||
|           widget: 'custom', | ||||
|           placeholder: '请输入' | ||||
|         } | ||||
|       }, | ||||
|     | ||||
|     }, | ||||
|     required: ['weight',] | ||||
|   }; | ||||
|   this.ui4 = { | ||||
|     '*': { | ||||
|       spanLabelFixed: 90, | ||||
|       grid: { span: 24 } | ||||
|     }, | ||||
|     $weight: { | ||||
|       grid: { span: 8 } | ||||
|     }, | ||||
|     $volume: { | ||||
|       grid: { span: 8 } | ||||
|     }, | ||||
|     $number: { | ||||
|       grid: { span: 8 } | ||||
|     }, | ||||
|     $carmand: { | ||||
|       grid: { span: 24 } | ||||
|     }, | ||||
|     $weightModel: { | ||||
|       grid: { span: 12 } | ||||
|     }, | ||||
|     $drivers: { | ||||
|       grid: { span: 12 } | ||||
|     }, | ||||
|   }; | ||||
| } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user