Merge branch 'develop' of https://gitlab.eascs.com/tms-ui/tms-obc-web into develop
This commit is contained in:
		| @ -1,6 +1,6 @@ | ||||
| { | ||||
|   "name": "tms-obc-web", | ||||
|   "version": "1.0.0", | ||||
|   "version": "1.0.1", | ||||
|   "description": "运营后台-WEB", | ||||
|   "author": "cipchk <cipchk@qq.com>", | ||||
|   "repository": { | ||||
|  | ||||
| @ -4,7 +4,7 @@ | ||||
|  * @Author       : Shiming | ||||
|  * @Date         : 2022-01-18 09:51:21 | ||||
|  * @LastEditors  : Shiming | ||||
|  * @LastEditTime : 2022-04-27 11:21:30 | ||||
|  * @LastEditTime : 2022-04-27 17:26:44 | ||||
|  * @FilePath     : \\tms-obc-web\\proxy.conf.js | ||||
|  * Copyright (C) 2022 huzhenhong. All rights reserved. | ||||
|  */ | ||||
| @ -30,7 +30,7 @@ module.exports = { | ||||
|   // }, | ||||
|   '//api': { | ||||
|     target: { | ||||
|       host: 'tms-api-test.eascs.com', | ||||
|       host: 'tms-api-dev.eascs.com', | ||||
|       protocol: 'https:', | ||||
|       port: 443 | ||||
|     }, | ||||
|  | ||||
| @ -5,7 +5,7 @@ import { OnChanges } from '@angular/core'; | ||||
|  * @Author       : Shiming | ||||
|  * @Date         : 2022-01-05 11:01:55 | ||||
|  * @LastEditors  : Shiming | ||||
|  * @LastEditTime : 2022-04-27 11:13:07 | ||||
|  * @LastEditTime : 2022-04-27 20:19:39 | ||||
|  * @FilePath     : \\tms-obc-web\\src\\app\\routes\\contract-management\\components\\contract-template-detail\\contract-template-detail.component.ts | ||||
|  * Copyright (C) 2022 huzhenhong. All rights reserved. | ||||
|  */ | ||||
| @ -87,7 +87,6 @@ export class ContractManagementTemplateTextComponent implements OnInit { | ||||
|             widget: 'select', | ||||
|             placeholder: '请选择', | ||||
|             change: (tag: any, org: any) => { | ||||
|               console.log(tag); | ||||
|               switch (tag) { | ||||
|                 case 'MX': | ||||
|                   this.Types = [ | ||||
| @ -95,7 +94,7 @@ export class ContractManagementTemplateTextComponent implements OnInit { | ||||
|                     { label: '订单补充协议', value: '2' }, | ||||
|                     { label: '运单合同', value: '3' }, | ||||
|                     { label: '运单补充协议', value: '4' }, | ||||
|                     { label: '委托代收合同', value: '5' }, | ||||
|                     { label: '委托代收合同', value: '5' } | ||||
|                   ]; | ||||
|                   this.sf.getProperty('/contractType')!.schema.enum = this.Types; | ||||
|                   this.sf.getProperty('/contractType')!.widget.reset(this.Types); | ||||
| @ -176,7 +175,7 @@ export class ContractManagementTemplateTextComponent implements OnInit { | ||||
|           } | ||||
|         } | ||||
|       }, | ||||
|       required: ['templateName', 'templateType','contractType'] | ||||
|       required: ['templateName', 'templateType', 'contractType'] | ||||
|     }; | ||||
|     this.ui = { | ||||
|       '*': { | ||||
| @ -204,14 +203,69 @@ export class ContractManagementTemplateTextComponent implements OnInit { | ||||
|     }; | ||||
|   } | ||||
|   initData(url: string) { | ||||
|     console.log('编辑'); | ||||
|  | ||||
|     this.service.request(url, { id: this.route.snapshot.params.id }).subscribe(res => { | ||||
|       if (res) { | ||||
|         this.detailList = res; | ||||
|         this.title = this.detailList?.templateName; | ||||
|         this.sfdata = res; | ||||
|         this.sfdata2 = res; | ||||
|      | ||||
|         switch (res.templateType) { | ||||
|           case 'MX': | ||||
|             let Types1 = [ | ||||
|               { label: '订单合同', value: '1' }, | ||||
|               { label: '订单补充协议', value: '2' }, | ||||
|               { label: '运单合同', value: '3' }, | ||||
|               { label: '运单补充协议', value: '4' }, | ||||
|               { label: '委托代收合同', value: '5' } | ||||
|             ]; | ||||
|             setTimeout(() => { | ||||
|               if (this.sf) { | ||||
|                 this.sf.getProperty('/contractType')!.schema.enum = Types1; | ||||
|                 this.sf.getProperty('/contractType')!.widget.reset(Types1); | ||||
|                 if (res.contractType) { | ||||
|                   this.sf.setValue('/contractType', res.contractType); | ||||
|                 } | ||||
|               } | ||||
|             }); | ||||
|  | ||||
|             return; | ||||
|             break; | ||||
|           case 'KJ': | ||||
|             const Types2 = [ | ||||
|               { label: '网络货物运输服务合同', value: '6' }, | ||||
|               { label: '运输服务承揽合同', value: '7' } | ||||
|             ]; | ||||
|             setTimeout(() => { | ||||
|               if (this.sf) { | ||||
|                 this.sf.getProperty('/contractType')!.schema.enum = Types2; | ||||
|                 this.sf.getProperty('/contractType')!.widget.reset(Types2); | ||||
|                 if (res.contractType) { | ||||
|                   this.sf.setValue('/contractType', res.contractType); | ||||
|                 } | ||||
|               } | ||||
|             }); | ||||
|             return; | ||||
|             break; | ||||
|           case 'HHR': | ||||
|             const Types3 = [ | ||||
|               { label: '企业合伙人入驻合同', value: '8' }, | ||||
|               { label: '个人合伙人入驻合同', value: '9' } | ||||
|             ]; | ||||
|             setTimeout(() => { | ||||
|               if (this.sf) { | ||||
|                 this.sf.getProperty('/contractType')!.schema.enum = Types3; | ||||
|                 this.sf.getProperty('/contractType')!.widget.reset(Types3); | ||||
|                 if (res.contractType) { | ||||
|                   this.sf.setValue('/contractType', res.contractType); | ||||
|                 } | ||||
|               } | ||||
|             }); | ||||
|             return; | ||||
|             break; | ||||
|           default: | ||||
|             break; | ||||
|         } | ||||
|       } | ||||
|     }); | ||||
|   } | ||||
| @ -220,13 +274,12 @@ export class ContractManagementTemplateTextComponent implements OnInit { | ||||
|   } | ||||
|  | ||||
|   save() { | ||||
|     console.log(this.sf.value.templateName); | ||||
|     console.log(this.sf.value.templateType); | ||||
|     console.log(this.sf2.value.templateContent); | ||||
|     console.log(this.title); | ||||
|     console.log(this.title || this.detailList.templateName); | ||||
|      | ||||
|     if (!this.sf.value.templateName || !this.sf.value.templateType || !this.sf2.value.templateContent || !(this.title || this.detailList.templateName)) { | ||||
|     if ( | ||||
|       !this.sf.value.templateName || | ||||
|       !this.sf.value.templateType || | ||||
|       !this.sf2.value.templateContent || | ||||
|       !(this.title || this.detailList.templateName) | ||||
|     ) { | ||||
|       this.service.msgSrv.error('必填参数为空,请检查再重新保存!'); | ||||
|       return; | ||||
|     } | ||||
| @ -239,9 +292,8 @@ export class ContractManagementTemplateTextComponent implements OnInit { | ||||
|     const params = { | ||||
|       ...this.sf.value, | ||||
|       ...this.sf2.value, | ||||
|       templateTitle: this.title || this.detailList.templateName | ||||
|       templateTitle: this.detailList.templateName || this.title | ||||
|     }; | ||||
|     console.log(params); | ||||
|     this.service.request(this.service.$api_save_contractTemplate, params).subscribe((res: any) => { | ||||
|       if (res) { | ||||
|         this.service.msgSrv.success('保存成功!'); | ||||
| @ -249,4 +301,5 @@ export class ContractManagementTemplateTextComponent implements OnInit { | ||||
|       } | ||||
|     }); | ||||
|   } | ||||
|   EditType() {} | ||||
| } | ||||
|  | ||||
| @ -125,6 +125,7 @@ export class ContractManagementTemplateFrameComponent implements OnInit { | ||||
|       { | ||||
|         title: '合同模板名称', | ||||
|         className: 'text-center', | ||||
|         width: '300px', | ||||
|         render: 'templateName' | ||||
|       }, | ||||
|       { | ||||
| @ -135,7 +136,7 @@ export class ContractManagementTemplateFrameComponent implements OnInit { | ||||
|       }, | ||||
|       { | ||||
|         title: '合同类型', | ||||
|         width: '100px', | ||||
|         width: '200px', | ||||
|         className: 'text-center', | ||||
|         index: 'contractTypeLabel' | ||||
|       }, | ||||
|  | ||||
| @ -125,6 +125,7 @@ export class ContractManagementTemplatePartnerComponent implements OnInit { | ||||
|       { | ||||
|         title: '合同模板名称', | ||||
|         className: 'text-center', | ||||
|         width: '300px', | ||||
|         render: 'templateName' | ||||
|       }, | ||||
|       { | ||||
| @ -135,7 +136,7 @@ export class ContractManagementTemplatePartnerComponent implements OnInit { | ||||
|       }, | ||||
|       { | ||||
|         title: '合同类型', | ||||
|         width: '100px', | ||||
|         width: '200px', | ||||
|         className: 'text-center', | ||||
|         index: 'contractTypeLabel' | ||||
|       }, | ||||
|  | ||||
| @ -125,6 +125,7 @@ export class ContractManagementTemplateDetailComponent implements OnInit { | ||||
|       { | ||||
|         title: '合同模板名称', | ||||
|         className: 'text-center', | ||||
|         width: '300px', | ||||
|         render: 'templateName' | ||||
|       }, | ||||
|       { | ||||
| @ -135,7 +136,7 @@ export class ContractManagementTemplateDetailComponent implements OnInit { | ||||
|       }, | ||||
|       { | ||||
|         title: '合同类型', | ||||
|         width: '100px', | ||||
|         width: '200px', | ||||
|         className: 'text-center', | ||||
|         index: 'contractTypeLabel' | ||||
|       }, | ||||
|  | ||||
| @ -552,6 +552,11 @@ export class OrderManagementBulkComponent extends BasicTableComponent implements | ||||
|             click: _record => this.changeOrder(_record), | ||||
|             iif: item => item.billStatus == '4' || item.billStatus == '5' || item.billStatus == '2' || item.billStatus == '3', | ||||
|             acl: { ability: ['ORDER-BULK-BulkBillDetail'] } | ||||
|           },{ | ||||
|             text: '订单上报推送', | ||||
|             click: _record => this.orderReportPush(_record), | ||||
|             iif: item => item.overallPaymentStatus === '2' && (item.billStatus === '4' || item.billStatus === '5') | ||||
|             // acl: { ability: ['VEHICLE-LIST-view'] }, | ||||
|           } | ||||
|         ] | ||||
|       } | ||||
| @ -659,6 +664,15 @@ export class OrderManagementBulkComponent extends BasicTableComponent implements | ||||
|     this.changeId = item.id; | ||||
|     this.isVisible = true; | ||||
|   } | ||||
|  | ||||
|   orderReportPush(item: any) { | ||||
|     this.service.request(this.service.$api_manualOrderSubmission,{id: item.id}).subscribe( res=> { | ||||
|       if(res) { | ||||
|         this.st.reload(this.st.pi) | ||||
|         this.service.msgSrv.success('推送成功'); | ||||
|       } | ||||
|     }) | ||||
|   } | ||||
|   /** | ||||
|    * 浮动费用查看 | ||||
|    */ | ||||
|  | ||||
| @ -50,7 +50,7 @@ | ||||
|     <st #st [bordered]="true" multiSort [scroll]="{  x:'1200px',y:scrollY }" [data]="service.$api_get_listWholePage" | ||||
|       [columns]="columns" [req]="{  process: beforeReq }" | ||||
|       [res]="{ reName: { list: 'data.records', total: 'data.total' } , process: afterRes}" | ||||
|       [page]="{ show: true, showSize: true, pageSizes: [10, 20, 30, 50, 100, 200, 300, 500, 1000] }"> | ||||
|       [page]="{ show: true, showSize: true, pageSizes: [10, 20, 30, 50, 100, 200, 300, 500, 1000] }" [loading]="service.http.loading"> | ||||
|       <ng-template st-row="billCode" let-item let-index="index"> | ||||
|         <a [routerLink]="'vehicle-detail/' + item.id">{{ item.billCode }}</a> | ||||
|         <div> | ||||
|  | ||||
| @ -469,6 +469,12 @@ export class OrderManagementVehicleComponent extends BasicTableComponent impleme | ||||
|             click: _record => this.viewTrack(_record), | ||||
|             iif: item => item.billStatus !== '1' && item.billStatus !== '6' | ||||
|             // acl: { ability: ['VEHICLE-LIST-view'] }, | ||||
|           }, | ||||
|           { | ||||
|             text: '订单上报推送', | ||||
|             click: _record => this.orderReportPush(_record), | ||||
|             iif: item => item.overallPaymentStatus === '2' && (item.billStatus === '4' || item.billStatus === '5') | ||||
|             // acl: { ability: ['VEHICLE-LIST-view'] }, | ||||
|           } | ||||
|         ] | ||||
|       } | ||||
| @ -738,6 +744,16 @@ export class OrderManagementVehicleComponent extends BasicTableComponent impleme | ||||
|     }); | ||||
|   } | ||||
|  | ||||
|   // 订单上报推送 | ||||
|   orderReportPush(item: any) { | ||||
|     this.service.request(this.service.$api_manualOrderSubmission,{id: item.id}).subscribe( res=> { | ||||
|       if(res) { | ||||
|         this.st.reload(this.st.pi) | ||||
|         this.service.msgSrv.success('推送成功'); | ||||
|       } | ||||
|     }) | ||||
|   } | ||||
|  | ||||
|   //  *确认签收 | ||||
|  | ||||
|   confirmReceipt(item: any) { | ||||
|  | ||||
| @ -219,6 +219,8 @@ export class OrderManagementService extends ShipperBaseService { | ||||
|   public $api_getBillTakeGoods = `/api/sdc/billOperate/getBillTakeGoods`; | ||||
|   // 生成提/卸货单 | ||||
|   public $api_createBillEsignGoods = `/api/sdc/billOperate/createBillEsignGoods`; | ||||
|   // 订单上报推送 | ||||
|   $api_manualOrderSubmission = '/api/sdc/billOperate/manualOrderSubmission'; | ||||
|  | ||||
|   // // 生成卸货单 | ||||
|   // public $api_createBillDischargeGoods = `/api/sdc/billOperate/createBillDischargeGoods`; | ||||
|  | ||||
| @ -1,5 +1,5 @@ | ||||
| <div *ngIf="i"> | ||||
|   <page-header-wrapper [title]="'大宗货源详情'" [logo]="logo" [content]="headerContent"> | ||||
|   <page-header-wrapper [title]="'大宗货源详情'" [logo]="logo"> | ||||
|     <ng-template #logo> | ||||
|       <button nz-button nz-tooltip nzTooltipTitle="返回上一页" (click)="goBack()"> | ||||
|         <i nz-icon nzType="left" nzTheme="outline"></i> | ||||
| @ -13,12 +13,12 @@ | ||||
|       <div nz-row> | ||||
|         <div nz-col nzSpan="14" class="text-grey-darker">网络货运人:{{ i?.shipperAppUserName }}</div> | ||||
|         <div nz-col nzSpan="10"> | ||||
|             <button nz-button (click)="cancleGoodsSource()" *ngIf="i?.resourceStatus === '1'" acl | ||||
|               [acl-ability]="['SUPPLY-BULK-DETAIL-cancelSupply']">取消货源</button> | ||||
|             <button nz-button (click)="updatePrice(i)" *ngIf="i?.resourceStatus === '1'" acl | ||||
|               [acl-ability]="['SUPPLY-BULK-DETAIL-updatePrice']">修改单价</button> | ||||
|             <button nz-button nzType="primary" nzGhost (click)="placeOrder(i)" acl | ||||
|               [acl-ability]="['SUPPLY-BULK-DETAIL-bulkAnotherOrder']">再下一单</button> | ||||
|           <button nz-button (click)="cancleGoodsSource()" *ngIf="i?.resourceStatus === '1'" acl | ||||
|             [acl-ability]="['SUPPLY-BULK-DETAIL-cancelSupply']">取消货源</button> | ||||
|           <button nz-button (click)="updatePrice(i)" *ngIf="i?.resourceStatus === '1'" acl | ||||
|             [acl-ability]="['SUPPLY-BULK-DETAIL-updatePrice']">修改单价</button> | ||||
|           <button nz-button nzType="primary" nzGhost (click)="placeOrder(i)" acl | ||||
|             [acl-ability]="['SUPPLY-BULK-DETAIL-bulkAnotherOrder']">再下一单</button> | ||||
|         </div> | ||||
|       </div> | ||||
|       <div class="mt-sm mb-sm" nz-row> | ||||
| @ -27,7 +27,7 @@ | ||||
|         </div> | ||||
|       </div> | ||||
|       <nz-divider></nz-divider> | ||||
|       <div sv-container *ngIf="i"> | ||||
|       <div sv-container> | ||||
|         <sv label="项目">{{ i?.enterpriseProjectName }}</sv> | ||||
|         <sv label="截止时间">{{ i?.deadlineTime }}</sv> | ||||
|         <sv label="录单员">{{ i?.createUserName }}/{{ i?.createUserPhone }}</sv> | ||||
| @ -36,7 +36,35 @@ | ||||
|       </div> | ||||
|     </ng-template> | ||||
|   </page-header-wrapper> | ||||
|   <nz-card nzTitle="货源进度"> | ||||
|   <nz-card [nzBorderless]="true" class="mb0"> | ||||
|     <div class="mb-xs" nz-row> | ||||
|       <button nz-button nzType="primary" nzSize="small" nzDanger>{{ i?.resourceStatusLabel }}</button> | ||||
|       <h4 class="ml-md">货源编码 : {{ i?.resourceCode }}</h4> | ||||
|     </div> | ||||
|     <div nz-row> | ||||
|       <div nz-col nzSpan="14" class="text-grey-darker">网络货运人:{{ i?.shipperAppUserName }}</div> | ||||
|       <div nz-col nzSpan="10"> | ||||
|         <button nz-button (click)="cancleGoodsSource()" *ngIf="i?.resourceStatus === '1'" acl | ||||
|           [acl-ability]="['SUPPLY-BULK-DETAIL-cancelSupply']">取消货源</button> | ||||
|         <button nz-button (click)="updatePrice(i)" *ngIf="i?.resourceStatus === '1'" acl | ||||
|           [acl-ability]="['SUPPLY-BULK-DETAIL-updatePrice']">修改单价</button> | ||||
|         <button nz-button nzType="primary" nzGhost (click)="placeOrder(i)" acl | ||||
|           [acl-ability]="['SUPPLY-BULK-DETAIL-bulkAnotherOrder']">再下一单</button> | ||||
|       </div> | ||||
|     </div> | ||||
|     <div class="mt-sm mb-sm" nz-row> | ||||
|       <div> | ||||
|         <b>总费用:<span class="text-red-light text-md">{{ i?.totalAmount | currency: '¥' }}</span></b> | ||||
|       </div> | ||||
|     </div> | ||||
|     <nz-divider></nz-divider> | ||||
|     <div sv-container> | ||||
|       <sv label="项目">{{ i?.enterpriseProjectName }}</sv> | ||||
|       <sv label="截止时间">{{ i?.deadlineTime }}</sv> | ||||
|       <sv label="录单员">{{ i?.createUserName }}/{{ i?.createUserPhone }}</sv> | ||||
|       <sv label="调度员">{{ i?.dispatchName }}/{{ i?.dispatchPhone }} </sv> | ||||
|       <sv label="服务类型">{{ i?.serviceTypeLabel }} </sv> | ||||
|     </div> | ||||
|     <div class="approval-status"> | ||||
|       <div style="width: 60%; margin: 0 auto"> | ||||
|         <nz-steps style="width: 70%; margin: 0 auto" [nzLabelPlacement]="'vertical'"> | ||||
| @ -51,33 +79,6 @@ | ||||
|         </nz-steps> | ||||
|       </div> | ||||
|     </div> | ||||
|   </nz-card> | ||||
|  | ||||
|   <nz-card nzTitle="基本信息"> | ||||
|     <sv-container col="3"> | ||||
|       <sv-title>货物信息</sv-title> | ||||
|       <ng-container *ngFor="let item of i?.goodsInfoVOList"> | ||||
|         <sv label="货物名称"> | ||||
|           {{item.goodsTypeName}} > {{item.goodsName}} | ||||
|         </sv> | ||||
|         <sv label="货物数量"> | ||||
|           {{item.weight}}吨 / {{item.volume>=0?item.volume:'-'}}方 | ||||
|         </sv> | ||||
|         <sv label="剩余"> | ||||
|           {{i?.surplusWeight!==null?i?.surplusWeight:'--'}}吨 / {{i?.surplusVolume!==null?i?.surplusVolume:'-'}}方 | ||||
|         </sv> | ||||
|         <sv label="用车需求"> | ||||
|           {{item.carModelLabel || '--'}} / {{item.carLengthLabel || '--'}}<span *ngIf="item.carLength !=='999'">米</span> | ||||
|         </sv> | ||||
|         <!-- <sv label="承运信息"> | ||||
|           {{i?.carrierInformationVO?.driverName}} / {{i?.carrierInformationVO?.driverTelephone}} / | ||||
|           {{i?.carrierInformationVO?.driverLicensePlate}} | ||||
|         </sv> --> | ||||
|         <!-- <sv label="当前指派"> | ||||
|           <a (click)="viewCurrentAssign(i)">查看</a> | ||||
|         </sv> --> | ||||
|       </ng-container> | ||||
|     </sv-container> | ||||
|     <div class="mt-md"> | ||||
|       <h4 class="text-md">装货卸货信息 | ||||
|         <span class="ml-sm text-sm">( | ||||
| @ -119,7 +120,39 @@ | ||||
|     </div> | ||||
|   </nz-card> | ||||
|  | ||||
|   <nz-card nzTitle="运费信息"> | ||||
|   <nz-card [nzBorderless]="true" class="mb0"> | ||||
|     <div class="font-weight-blod text-md detail-title"> | ||||
|       <a class="sign mr-xs"></a> | ||||
|       <span>基本信息</span> | ||||
|     </div> | ||||
|     <sv-container col="3"> | ||||
|       <!-- <sv-title>货物信息</sv-title> --> | ||||
|       <ng-container *ngFor="let item of i?.goodsInfoVOList"> | ||||
|         <sv label="货物名称"> | ||||
|           {{item.goodsTypeName}} > {{item.goodsName}} | ||||
|         </sv> | ||||
|         <sv label="货物数量"> | ||||
|           {{item.weight}}吨 / {{item.volume>=0?item.volume:'-'}}方 | ||||
|         </sv> | ||||
|         <sv label="剩余"> | ||||
|           {{i?.surplusWeight!==null?i?.surplusWeight:'--'}}吨 / {{i?.surplusVolume!==null?i?.surplusVolume:'-'}}方 | ||||
|         </sv> | ||||
|         <sv label="用车需求"> | ||||
|           {{item.carModelLabel || '--'}} / {{item.carLengthLabel || '--'}}<span *ngIf="item.carLength !=='999'">米</span> | ||||
|         </sv> | ||||
|         <!-- <sv label="承运信息"> | ||||
|           {{i?.carrierInformationVO?.driverName}} / {{i?.carrierInformationVO?.driverTelephone}} / | ||||
|           {{i?.carrierInformationVO?.driverLicensePlate}} | ||||
|         </sv> --> | ||||
|         <!-- <sv label="当前指派"> | ||||
|           <a (click)="viewCurrentAssign(i)">查看</a> | ||||
|         </sv> --> | ||||
|       </ng-container> | ||||
|     </sv-container> | ||||
|  | ||||
|   </nz-card> | ||||
|  | ||||
|   <nz-card [nzBorderless]="true" class="mb0" nzTitle="运费信息"> | ||||
|     <div> | ||||
|       <div nz-row> | ||||
|         <div *ngFor="let item of i?.goodsInfoVOList" nz-col nzSpan="24"> | ||||
| @ -132,13 +165,13 @@ | ||||
|             <label>运费单价:</label> | ||||
|             <span class="text-error-dark text-xxl">{{ item?.freightPrice | currency: '¥' }} {{ | ||||
|               freightType[item?.freightType] }}</span> | ||||
|               <span>(附加费率{{i?.rate * 100 | number: '0.2-2'}}%)</span> | ||||
|             <span>(附加费率{{i?.rate * 100 | number: '0.2-2'}}%)</span> | ||||
|           </div> | ||||
|         </div> | ||||
|       </div> | ||||
|     </div> | ||||
|   </nz-card> | ||||
|   <nz-card nzTitle="关联订单"> | ||||
|   <nz-card [nzBorderless]="true" class="mb0" nzTitle="关联订单"> | ||||
|     <sv-container col="5"> | ||||
|       <sv [label]="item?.wayBillStatusLabel" *ngFor="let item of i?.wayBillClassifiedStatisticsVOList"> | ||||
|         (<span [ngClass]="{ 'text-primary': item?.count > 0 }">{{ item?.count }}</span>) | ||||
| @ -157,7 +190,7 @@ | ||||
|       </sv> --> | ||||
|     </sv-container> | ||||
|   </nz-card> | ||||
|   <nz-card nzTitle="补充信息"> | ||||
|   <nz-card [nzBorderless]="true" class="mb0" nzTitle="补充信息"> | ||||
|     <sv-container> | ||||
|       <sv label="是否回单"> | ||||
|         {{ i?.supplementaryInformationVO?.stateReceipt ? '是' : '否' }} | ||||
| @ -166,7 +199,8 @@ | ||||
|         {{ i?.supplementaryInformationVO?.receiptTypeLabel }} | ||||
|       </sv> | ||||
|       <sv label="联系人" *ngIf="i?.supplementaryInformationVO?.stateReceipt"> | ||||
|         {{ i?.supplementaryInformationVO?.receiptUserName ? i?.supplementaryInformationVO?.receiptUserName + '/' : '' }}  {{ i?.supplementaryInformationVO?.phon }} | ||||
|         {{ i?.supplementaryInformationVO?.receiptUserName ? i?.supplementaryInformationVO?.receiptUserName + '/' : '' }} | ||||
|         {{ i?.supplementaryInformationVO?.phon }} | ||||
|       </sv> | ||||
|       <sv label="所在地区" *ngIf="i?.supplementaryInformationVO?.stateReceipt"> | ||||
|         {{ i?.supplementaryInformationVO?.area }} | ||||
| @ -174,14 +208,13 @@ | ||||
|       <sv label="详细地址" *ngIf="i?.supplementaryInformationVO?.stateReceipt"> | ||||
|         {{ i?.supplementaryInformationVO?.address }} | ||||
|       </sv> | ||||
|       <sv label="备注" > | ||||
|       <sv label="备注"> | ||||
|         {{ i?.supplementaryInformationVO?.remarks }} | ||||
|       </sv> | ||||
|     </sv-container> | ||||
|   </nz-card> | ||||
|   <nz-card nzTitle="操作日志"> | ||||
|     <st #st [data]="service.$api_getOperationLogRecordsList" [columns]="logColumns" | ||||
|     [page]="{}" | ||||
|   <nz-card [nzBorderless]="true" class="mb0" nzTitle="操作日志"> | ||||
|     <st #st [data]="service.$api_getOperationLogRecordsList" [columns]="logColumns" [page]="{}" | ||||
|       [req]="{ method: 'POST', allInBody: true, reName: { pi: 'pageIndex', ps: 'pageSize' }, params: reqParams }" | ||||
|       [res]="{ reName: { list: 'data.records', total: 'data.total' } }"> | ||||
|     </st> | ||||
|  | ||||
| @ -3,7 +3,7 @@ | ||||
|     min-height: 210px; | ||||
|  | ||||
|     p { | ||||
|       margin-bottom: .5em; | ||||
|       margin-bottom: 0; | ||||
|     } | ||||
|   } | ||||
|  | ||||
|  | ||||
| @ -175,7 +175,7 @@ export class SupplyManagementOnecarPublishComponent implements OnInit { | ||||
|               if (str) { | ||||
|                 this.getRegionCode(str); | ||||
|                 this.shipperName = qs?.label; | ||||
|                 this.payChange(); | ||||
|                 this.payChange(1); | ||||
|               } | ||||
|             } | ||||
|           } as SFSelectWidgetSchema | ||||
| @ -728,7 +728,7 @@ export class SupplyManagementOnecarPublishComponent implements OnInit { | ||||
|         } | ||||
|       }); | ||||
|   } | ||||
|   payChange() { | ||||
|   payChange(value?:number) { | ||||
|     const prePay = this.sf7.value.prePay || 0; | ||||
|     const toPay = this.sf7.value.toPay || 0; | ||||
|     const receiptPay = this.sf7.value.receiptPay || 0; | ||||
| @ -741,6 +741,13 @@ export class SupplyManagementOnecarPublishComponent implements OnInit { | ||||
|       fuelCardAmount: oilCardPay, | ||||
|       resourcetype: '1' | ||||
|     }; | ||||
|     if((!this?.sf1.value?.shipperAppUserId || !this?.sf1.value?.enterpriseInfoName) && value) { | ||||
|       this.service.msgSrv.warning('请先选择货主和网络货运人!'); | ||||
|       this.sf7.setValue('/prePay', 0); | ||||
|       this.sf7.setValue('/toPay', 0); | ||||
|       this.sf7.setValue('/receiptPay', 0); | ||||
|       return | ||||
|     } | ||||
|     this.service.request(this.service.$api_getCalculatedSurcharge, params).subscribe(res => { | ||||
|       if (res) { | ||||
|         this.sf7.setValue('/appendFee', res.surcharge); | ||||
| @ -1039,11 +1046,12 @@ export class SupplyManagementOnecarPublishComponent implements OnInit { | ||||
|       paymentDays: this.sf7.value.paymentDays, | ||||
|       estimatedKilometers: this.totalDistance, | ||||
|       estimatedTravelTime: this.totalTime, | ||||
|       subtotal: this.sf7.value.subtotal, | ||||
|       total: this.sf7.value.total, | ||||
|       subtotal: this.sf7.value.subtotal.toFixed(2), | ||||
|       total: this.sf7.value.total.toFixed(2), | ||||
|       insurancePackagedGoods: this.sf4.value.insurancePackagedGoods, | ||||
|       goodsValue: this.sf4.value.goodsValue | ||||
|     }; | ||||
|     console.log(params) | ||||
|     const modalRef = this.modalService.create({ | ||||
|       nzTitle: '运输协议', | ||||
|       nzContent: TranAgreementComponent, | ||||
|  | ||||
| @ -162,7 +162,7 @@ export class SupplyManagementReleasePublishComponent implements OnInit { | ||||
|               if (str) { | ||||
|                 this.getRegionCode(str); | ||||
|                 this.shipperName = qs?.label; | ||||
|                 this.payChange(); | ||||
|                 this.payChange(1); | ||||
|               } | ||||
|             } | ||||
|           } as SFSelectWidgetSchema | ||||
| @ -192,7 +192,7 @@ export class SupplyManagementReleasePublishComponent implements OnInit { | ||||
|             change: (q: any, qs: any) => { | ||||
|               console.log(qs.label); | ||||
|               this.sf1.setValue('/enterpriseInfoNamer', qs.label); | ||||
|               this.payChange() | ||||
|               this.payChange(1) | ||||
|             } | ||||
|           } | ||||
|         }, | ||||
| @ -748,7 +748,7 @@ export class SupplyManagementReleasePublishComponent implements OnInit { | ||||
|         this.sf1.getProperty('/enterpriseProjectId')!.widget.reset(res); | ||||
|       }); | ||||
|   } | ||||
|   payChange() { | ||||
|   payChange(value?:number) { | ||||
|     const prePay = this.sf7.value.prePay || 0; | ||||
|     const toPay = this.sf7.value.toPay || 0; | ||||
|     const receiptPay = this.sf7.value.receiptPay || 0; | ||||
| @ -761,6 +761,13 @@ export class SupplyManagementReleasePublishComponent implements OnInit { | ||||
|       fuelCardAmount: oilCardPay, | ||||
|       resourcetype: '1' | ||||
|     }; | ||||
|     if((!this?.sf1.value?.shipperAppUserId || !this?.sf1.value?.enterpriseInfoName) && value) { | ||||
|       this.service.msgSrv.warning('请先选择货主和网络货运人!'); | ||||
|       this.sf7.setValue('/prePay', 0); | ||||
|       this.sf7.setValue('/toPay', 0); | ||||
|       this.sf7.setValue('/receiptPay', 0); | ||||
|       return | ||||
|     } | ||||
|     this.service.request(this.service.$api_getCalculatedSurcharge, params).subscribe(res => { | ||||
|       if (res) { | ||||
|         this.sf7.setValue('/appendFee', res.surcharge); | ||||
| @ -986,26 +993,26 @@ export class SupplyManagementReleasePublishComponent implements OnInit { | ||||
|       ...this.sf6.value, | ||||
|       expenseDTOList: expenseList, | ||||
|       paymentDays: this.sf7.value.paymentDays, | ||||
|       subtotal: this.sf7.value.subtotal, | ||||
|       total: this.sf7.value.total, | ||||
|       subtotal: this.sf7.value.subtotal.toFixed(2), | ||||
|       total: this.sf7.value.total.toFixed(2), | ||||
|       estimatedKilometers: this.totalDistance, | ||||
|       estimatedTravelTime: this.totalTime, | ||||
|       insurancePackagedGoods: this.sf4.value.insurancePackagedGoods, | ||||
|       goodsValue: this.sf4.value.goodsValue | ||||
|     }; | ||||
|     console.log(params); | ||||
|     const modalRef = this.modalService.create({ | ||||
|       nzTitle: '运输协议', | ||||
|       nzContent: TranAgreementComponent, | ||||
|       nzWidth: 900, | ||||
|       nzFooter: null, | ||||
|       nzComponentParams: { object: params, shipperName: this.shipperName, type: 'onecar' } | ||||
|     }); | ||||
|     modalRef.afterClose.subscribe(result => { | ||||
|       if (result) { | ||||
|         this.submit(submitType, params); | ||||
|       } | ||||
|     }); | ||||
|     // const modalRef = this.modalService.create({ | ||||
|     //   nzTitle: '运输协议', | ||||
|     //   nzContent: TranAgreementComponent, | ||||
|     //   nzWidth: 900, | ||||
|     //   nzFooter: null, | ||||
|     //   nzComponentParams: { object: params, shipperName: this.shipperName, type: 'onecar' } | ||||
|     // }); | ||||
|     // modalRef.afterClose.subscribe(result => { | ||||
|     //   if (result) { | ||||
|     //     this.submit(submitType, params); | ||||
|     //   } | ||||
|     // }); | ||||
|   } | ||||
|   // 提交 | ||||
|   submit(submitType?: string, params?: any): void { | ||||
|  | ||||
| @ -4,7 +4,7 @@ | ||||
|  * @Author       : Shiming | ||||
|  * @Date         : 2022-02-24 20:19:51 | ||||
|  * @LastEditors  : Shiming | ||||
|  * @LastEditTime : 2022-04-15 15:18:29 | ||||
|  * @LastEditTime : 2022-04-27 19:52:22 | ||||
|  * @FilePath     : \\tms-obc-web\\src\\app\\routes\\supply-management\\components\\tran-agreement\\tran-agreement.component.ts | ||||
|  * Copyright (C) 2022 huzhenhong. All rights reserved. | ||||
|  */ | ||||
|  | ||||
| @ -1,11 +1,46 @@ | ||||
| <div *ngIf="i"> | ||||
|   <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> | ||||
| <nz-spin [nzSpinning]="service.http.loading"> | ||||
|   <div *ngIf="i"> | ||||
|     <page-header-wrapper [title]="'整车货源详情'" [logo]="logo"> | ||||
|       <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> | ||||
|           <button nz-button nzType="primary" nzSize="small" nzDanger>{{ i?.resourceStatusLabel }}</button> | ||||
|           <h4 class="ml-md">货源编码 : {{ i?.resourceCode }}</h4> | ||||
|         </div> | ||||
|         <div nz-row> | ||||
|           <div nz-col nzSpan="14" class="text-grey-darker">网络货运人:{{ i?.enterpriseInfoName }}</div> | ||||
|           <div nz-col nzSpan="10"> | ||||
|             <button nz-button (click)="cancleGoodsSource()" *ngIf="i?.resourceStatus === '1'" acl | ||||
|               [acl-ability]="['SUPPLY-VEHICLE-DETAIL-cancelSupply']">取消货源</button> | ||||
|             <button nz-button (click)="assignedCar(i)" *ngIf="i?.resourceStatus === '1' && i?.serviceType === '2'" acl | ||||
|               [acl-ability]="['SUPPLY-VEHICLE-DETAIL-vehicleAnew']">重新指派</button> | ||||
|             <button nz-button (click)="updateGoodsSource(i)" | ||||
|               *ngIf="i?.resourceStatus === '1' && i.insurancePayment !== 'Y'" acl | ||||
|               [acl-ability]="['SUPPLY-VEHICLE-DETAIL-changeSupply']">修改货源</button> | ||||
|             <button nz-button nzType="primary" nzGhost (click)="nextOrder(i)" acl | ||||
|               [acl-ability]="['SUPPLY-VEHICLE-DETAIL-vehiclePlaceOrder']">再下一单</button> | ||||
|           </div> | ||||
|         </div> | ||||
|         <div class="mt-sm mb-sm" nz-row> | ||||
|           <div> | ||||
|             <b>总费用:<span class="text-red-light text-md">{{ i?.totalAmount | currency }}</span></b> | ||||
|           </div> | ||||
|         </div> | ||||
|         <nz-divider></nz-divider> | ||||
|         <div sv-container *ngIf="i"> | ||||
|           <sv label="外部货源号">{{ i?.externalResourceCode }} </sv> | ||||
|           <sv label="项目">{{ i?.enterpriseProjectName }}</sv> | ||||
|           <sv label="录单员">{{ i?.createUserName }}/{{ i?.createUserPhone }}</sv> | ||||
|           <sv label="调度员">{{ i?.dispatchName }}/{{ i?.dispatchPhone }} </sv> | ||||
|           <sv label="服务类型">{{ i?.serviceTypeLabel }} </sv> | ||||
|         </div> | ||||
|       </ng-template> | ||||
|     </page-header-wrapper> | ||||
|     <nz-card [nzBorderless]="true" class="mb0"> | ||||
|       <div class="mb-xs" nz-row> | ||||
|         <button nz-button nzType="primary" nzSize="small" nzDanger>{{ i?.resourceStatusLabel }}</button> | ||||
|         <h4 class="ml-md">货源编码 : {{ i?.resourceCode }}</h4> | ||||
| @ -13,218 +48,214 @@ | ||||
|       <div nz-row> | ||||
|         <div nz-col nzSpan="14" class="text-grey-darker">网络货运人:{{ i?.enterpriseInfoName }}</div> | ||||
|         <div nz-col nzSpan="10"> | ||||
|           <button | ||||
|             nz-button | ||||
|             (click)="cancleGoodsSource()" | ||||
|             *ngIf="i?.resourceStatus === '1'" | ||||
|             acl | ||||
|             [acl-ability]="['SUPPLY-VEHICLE-DETAIL-cancelSupply']" | ||||
|             >取消货源</button | ||||
|           > | ||||
|           <button | ||||
|             nz-button | ||||
|             (click)="assignedCar(i)" | ||||
|             *ngIf="i?.resourceStatus === '1' && i?.serviceType === '2'" | ||||
|             acl | ||||
|             [acl-ability]="['SUPPLY-VEHICLE-DETAIL-vehicleAnew']" | ||||
|             >重新指派</button | ||||
|           > | ||||
|           <button | ||||
|             nz-button | ||||
|             (click)="updateGoodsSource(i)" | ||||
|             *ngIf="i?.resourceStatus === '1' && i.insurancePayment !== 'Y'" | ||||
|             acl | ||||
|             [acl-ability]="['SUPPLY-VEHICLE-DETAIL-changeSupply']" | ||||
|             >修改货源</button | ||||
|           > | ||||
|           <button nz-button nzType="primary" nzGhost (click)="nextOrder(i)" acl [acl-ability]="['SUPPLY-VEHICLE-DETAIL-vehiclePlaceOrder']" | ||||
|             >再下一单</button | ||||
|           > | ||||
|           <button nz-button (click)="cancleGoodsSource()" *ngIf="i?.resourceStatus === '1'" acl | ||||
|             [acl-ability]="['SUPPLY-VEHICLE-DETAIL-cancelSupply']">取消货源</button> | ||||
|           <button nz-button (click)="assignedCar(i)" *ngIf="i?.resourceStatus === '1' && i?.serviceType === '2'" acl | ||||
|             [acl-ability]="['SUPPLY-VEHICLE-DETAIL-vehicleAnew']">重新指派</button> | ||||
|           <button nz-button (click)="updateGoodsSource(i)" | ||||
|             *ngIf="i?.resourceStatus === '1' && i.insurancePayment !== 'Y'" acl | ||||
|             [acl-ability]="['SUPPLY-VEHICLE-DETAIL-changeSupply']">修改货源</button> | ||||
|           <button nz-button nzType="primary" nzGhost (click)="nextOrder(i)" acl | ||||
|             [acl-ability]="['SUPPLY-VEHICLE-DETAIL-vehiclePlaceOrder']">再下一单</button> | ||||
|         </div> | ||||
|       </div> | ||||
|       <div class="mt-sm mb-sm" nz-row> | ||||
|       <!-- <div class="mt0 mb0" nz-row> | ||||
|         <div> | ||||
|           <b | ||||
|             >总费用:<span class="text-red-light text-md">{{ i?.totalAmount | currency: '¥' }}</span></b | ||||
|           > | ||||
|           <b>总费用:<span class="text-red-light text-md">{{ i?.totalAmount | currency }}</span></b> | ||||
|         </div> | ||||
|       </div> | ||||
|       <nz-divider></nz-divider> | ||||
|       <div sv-container *ngIf="i"> | ||||
|       </div> --> | ||||
|       <nz-divider class="divider-margin"></nz-divider> | ||||
|       <div class="mb-lg" sv-container *ngIf="i"> | ||||
|         <sv label="外部货源号">{{ i?.externalResourceCode }} </sv> | ||||
|         <sv label="项目">{{ i?.enterpriseProjectName }}</sv> | ||||
|         <sv label="录单员">{{ i?.createUserName }}/{{ i?.createUserPhone }}</sv> | ||||
|         <sv label="调度员">{{ i?.dispatchName }}/{{ i?.dispatchPhone }} </sv> | ||||
|         <sv label="服务类型">{{ i?.serviceTypeLabel }} </sv> | ||||
|       </div> | ||||
|     </ng-template> | ||||
|   </page-header-wrapper> | ||||
|   <nz-card title="货源进度"> | ||||
|     <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="下单" | ||||
|             [nzSubtitle]="i?.createTime" | ||||
|           ></nz-step> | ||||
|           <nz-step | ||||
|             *ngIf="i?.resourceStatus === '1' || i?.resourceStatus === '2'" | ||||
|             [nzStatus]="i?.resourceStatus === '1' ? 'wait' : 'finish'" | ||||
|             nzIcon="file-done" | ||||
|             [nzTitle]="'接单'" | ||||
|             [nzSubtitle]="i?.orderReceivingTime" | ||||
|           ></nz-step> | ||||
|           <nz-step | ||||
|             nzStatus="finish" | ||||
|             nzIcon="close-circle" | ||||
|             nzTitle="取消货源" | ||||
|             *ngIf="i?.resourceStatus === '3'" | ||||
|             [nzSubtitle]="i?.endTime" | ||||
|           ></nz-step> | ||||
|         </nz-steps> | ||||
|       <div class="approval-status"> | ||||
|         <div lass="step-row"> | ||||
|           <nz-steps [nzLabelPlacement]="'vertical'"> | ||||
|             <nz-step [nzStatus]="i?.resourceStatus !== '1' ? 'finish' : 'process'" nzIcon="solution" | ||||
|               [nzDescription]="i?.createAt" nzTitle="下单" [nzSubtitle]="i?.createTime"></nz-step> | ||||
|             <nz-step *ngIf="i?.resourceStatus === '1' || i?.resourceStatus === '2'" | ||||
|               [nzStatus]="i?.resourceStatus === '1' ? 'wait' : 'finish'" nzIcon="file-done" [nzTitle]="'接单'" | ||||
|               [nzSubtitle]="i?.orderReceivingTime"></nz-step> | ||||
|             <nz-step nzStatus="finish" nzIcon="close-circle" nzTitle="取消货源" *ngIf="i?.resourceStatus === '3'" | ||||
|               [nzSubtitle]="i?.endTime"></nz-step> | ||||
|           </nz-steps> | ||||
|         </div> | ||||
|       </div> | ||||
|     </div> | ||||
|   </nz-card> | ||||
|     </nz-card> | ||||
|  | ||||
|   <nz-card nzTitle="基本信息"> | ||||
|     <sv-container col="2"> | ||||
|       <sv-title>货物信息</sv-title> | ||||
|       <ng-container *ngFor="let item of i?.goodsInfoVOList"> | ||||
|         <sv label="货物名称"> | ||||
|           {{ item.goodsTypeName }} - {{ item.goodsName }} | ||||
|     <nz-card [nzBorderless]="true" class="mb0"> | ||||
|       <div class="font-weight-blod text-md detail-title"> | ||||
|         <a class="sign mr-xs"></a> | ||||
|         <span>基本信息</span> | ||||
|       </div> | ||||
|       <sv-container col="2"> | ||||
|         <!-- <sv-title>货物信息</sv-title> --> | ||||
|         <ng-container *ngFor="let item of i?.goodsInfoVOList"> | ||||
|           <sv label="货物名称"> | ||||
|             {{ item.goodsTypeName }} - {{ item.goodsName }} | ||||
|           </sv> | ||||
|           <sv label="货物数量"> {{ item.weight }}吨,{{ item.volume }}方,{{ item.number }}件 </sv> | ||||
|         </ng-container> | ||||
|       </sv-container> | ||||
|       <sv-container class="mt-md"> | ||||
|         <!-- <sv-title>承运信息</sv-title> --> | ||||
|         <sv label="司机姓名"> | ||||
|           {{ i?.carrierInformationVO?.driverName }} | ||||
|         </sv> | ||||
|         <sv label="货物数量"> {{ item.weight }}吨,{{ item.volume }}方,{{ item.number }}件 </sv> | ||||
|       </ng-container> | ||||
|     </sv-container> | ||||
|     <sv-container class="mt-md"> | ||||
|       <sv-title>承运信息</sv-title> | ||||
|       <sv label="司机姓名"> | ||||
|         {{ i?.carrierInformationVO?.driverName }} | ||||
|         <sv label="手机号"> | ||||
|           {{ i?.carrierInformationVO?.driverTelephone }} | ||||
|         </sv> | ||||
|         <sv label="车牌号"> | ||||
|           {{ i?.carrierInformationVO?.driverLicensePlate }} | ||||
|         </sv> | ||||
|       </sv-container> | ||||
|       <sv label="承运司机" *ngIf="i?.carrierInformationVO.driverTelephone !== i?.payeePhone"> | ||||
|         {{i?.carrierInformationVO.driverName || '--'}} / {{i?.carrierInformationVO.driverTelephone || '--'}} / | ||||
|         {{i?.carrierInformationVO.driverLicensePlate || '--'}} | ||||
|       </sv> | ||||
|       <sv label="手机号"> | ||||
|         {{ i?.carrierInformationVO?.driverTelephone }} | ||||
|       <sv label="车型车长载重"> | ||||
|         {{i?.driverCarModelLabel || '--'}} / {{(i?.driverCarLength || '--') +'米'}} / {{(i?.driverCarWeight || | ||||
|         '--')+'吨'}} | ||||
|       </sv> | ||||
|       <sv label="车牌号"> | ||||
|         {{ i?.carrierInformationVO?.driverLicensePlate }} | ||||
|       </sv> | ||||
|     </sv-container> | ||||
|     <div class="mt-md"> | ||||
|       <h4 class="text-md" | ||||
|         >装货卸货信息 | ||||
|         <span class="ml-sm text-sm" | ||||
|           >( | ||||
|           <label>{{ i?.loadingCount }}装</label> | ||||
|           <label>{{ i?.unloadingCount }}卸</label> | ||||
|           ) | ||||
|         </span> | ||||
|       </h4> | ||||
|       <div nz-row [nzGutter]="24"> | ||||
|         <div nz-col [nzSpan]="12"> | ||||
|           <div class="handling-info p-md"> | ||||
|             <div class="flex" *ngFor="let item of i?.unLoadingPlaceVOList"> | ||||
|               <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 nz-col [nzSpan]="12"> | ||||
|           <div class="handling-info p-md"> | ||||
|             <div class="flex" *ngFor="let item of i?.unLoadingPlaceVOList"> | ||||
|               <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-card> | ||||
|  | ||||
|   <nz-card nzTitle="服务信息"> | ||||
|     <sv-container> | ||||
|       <sv label="服务包"> | ||||
|         {{ i?.insuranceTypeLabel}} | ||||
|       </sv> | ||||
|       <sv label="货物价值" *ngIf="i?.insuranceType !== '3'"> | ||||
|         {{i?.goodsValue !==null?(i?.goodsValue|currency)+'元':'-'}} | ||||
|       </sv> | ||||
|       <sv label="服务包费用" *ngIf="i?.insuranceType !== '3'"> | ||||
|         {{i?.insurancePremium!==null?(i?.insurancePremium |currency)+'元':'-'}} | ||||
|       </sv> | ||||
|     </sv-container> | ||||
|   </nz-card> | ||||
|   <nz-card [nzTitle]="'运费信息(到货后' + i?.paymentDays + '天内支付运费)'"> | ||||
|     <st [data]="i?.expenseVOList" [columns]="expenseColumns" [page]="{ show: false }"> | ||||
|       <ng-template st-row="total" let-item> | ||||
|         <div> | ||||
|           {{ item?.totalAmount | currency }} | ||||
|           <span>(含附加费)</span> | ||||
|         </div> | ||||
|       </ng-template> | ||||
|       <ng-template st-row="price" let-item> | ||||
|         <div> | ||||
|           {{ item?.price | currency }} | ||||
|         </div> | ||||
|       </ng-template> | ||||
|     </st> | ||||
|     <div class="freight-info-box mt-md" nz-row> | ||||
|       <div nz-col nzSpan="24"> | ||||
|         <h3> | ||||
|           <label>总计 :</label> | ||||
|           <span class="text-error-dark text-xl"> | ||||
|             {{ i?.totalAmount | currency }} | ||||
|       <div class="mt-md"> | ||||
|         <h4 class="text-md">装货卸货信息 | ||||
|           <span class="ml-sm text-sm">( | ||||
|             <label>{{ i?.loadingCount }}装</label> | ||||
|             <label>{{ i?.unloadingCount }}卸</label> | ||||
|             ) | ||||
|           </span> | ||||
|           <span>(运费{{ i?.totalFreight | currency }}含附加运费 {{ i?.totalSurcharge | currency }})</span> | ||||
|         </h3> | ||||
|         <div *ngIf='i?.resourceStatus !== "1" && i?.carrierInformationVO?.driverName !== i?.payeeName' >车队长:{{ i?.payeeName }}/{{ i?.payeePhone }}/{{ i?.payeeCardNo }}</div> | ||||
|         </h4> | ||||
|         <div nz-row [nzGutter]="24"> | ||||
|           <div nz-col [nzSpan]="12"> | ||||
|             <div class="handling-info p-md"> | ||||
|               <ng-container *ngFor="let item of i?.unLoadingPlaceVOList"> | ||||
|                 <div class="flex" *ngIf="item?.type === '1'"> | ||||
|                   <div 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> | ||||
|               </ng-container> | ||||
|               <p class="time-info">装货时间:{{ i?.loadingTime }}</p> | ||||
|             </div> | ||||
|           </div> | ||||
|           <div nz-col [nzSpan]="12"> | ||||
|             <div class="handling-info p-md"> | ||||
|               <ng-container *ngFor="let item of i?.unLoadingPlaceVOList"> | ||||
|                 <div class="flex" *ngIf="item?.type === '2'"> | ||||
|                   <div 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> | ||||
|               </ng-container> | ||||
|               <p class="time-info">卸货时间:{{ i?.unloadingTime }}</p> | ||||
|             </div> | ||||
|           </div> | ||||
|         </div> | ||||
|       </div> | ||||
|     </div> | ||||
|   </nz-card> | ||||
|   <nz-card nzTitle="补充信息"> | ||||
|     <sv-container> | ||||
|       <sv label="是否回单"> | ||||
|         {{ i?.supplementaryInformationVO?.stateReceipt ? '是' : '否' }} | ||||
|       </sv> | ||||
|       <sv label="回单类型" *ngIf="i?.supplementaryInformationVO?.stateReceipt"> | ||||
|         {{ i?.supplementaryInformationVO?.receiptType === '1' ? '电子回单' : '纸质回单' }} | ||||
|       </sv> | ||||
|       <sv label="联系人" *ngIf="i?.supplementaryInformationVO?.stateReceipt"> {{ i?.supplementaryInformationVO?.receiptUserName || '-' }} / {{ i?.supplementaryInformationVO?.phon || '-' }}  | ||||
|       </sv> | ||||
|       <sv label="所在地区" *ngIf="i?.supplementaryInformationVO?.stateReceipt"> | ||||
|         {{ i?.supplementaryInformationVO?.area }} | ||||
|       </sv> | ||||
|       <sv label="详细地址" *ngIf="i?.supplementaryInformationVO?.stateReceipt"> | ||||
|         {{ i?.supplementaryInformationVO?.address }} | ||||
|       </sv> | ||||
|       <sv label="备注"> | ||||
|         {{ i?.supplementaryInformationVO?.remarks }} | ||||
|       </sv> | ||||
|     </sv-container> | ||||
|   </nz-card> | ||||
|   <nz-card nzTitle="操作日志"> | ||||
|     <st #st [data]="service.$api_getOperationLogRecordsList" [columns]="logColumns" | ||||
|     [page]="{}" | ||||
|     [req]="{ method: 'POST', allInBody: true, reName: { pi: 'pageIndex', ps: 'pageSize' }, params: reqParams }" | ||||
|     [res]="{ reName: { list: 'data.records', total: 'data.total' } }"> | ||||
|     <ng-template st-row="operator" let-item> | ||||
|       <div> | ||||
|         {{ item?.operator }}   {{ item?.telephone ? '/' + item?.telephone : '' }} | ||||
|     </nz-card> | ||||
|  | ||||
|     <nz-card [nzBorderless]="true" class="mb0"> | ||||
|       <div class="font-weight-blod text-md detail-title"> | ||||
|         <a class="sign"></a> | ||||
|         <span>服务信息</span> | ||||
|       </div> | ||||
|     </ng-template> | ||||
|   </st> | ||||
|   </nz-card> | ||||
| </div> | ||||
|       <sv-container> | ||||
|         <sv label="服务包"> | ||||
|           {{ i?.insuranceTypeLabel}} | ||||
|         </sv> | ||||
|         <sv label="货物价值" *ngIf="i?.insuranceType !== '3'"> | ||||
|           {{i?.goodsValue !==null?(i?.goodsValue|currency)+'元':'-'}} | ||||
|         </sv> | ||||
|         <sv label="服务包费用" *ngIf="i?.insuranceType !== '3'"> | ||||
|           {{i?.insurancePremium!==null?(i?.insurancePremium |currency)+'元':'-'}} | ||||
|         </sv> | ||||
|       </sv-container> | ||||
|     </nz-card> | ||||
|     <nz-card [nzBorderless]="true" class="mb0"> | ||||
|       <div class="font-weight-blod text-md detail-title"> | ||||
|         <a class="sign"></a> | ||||
|         <span>运费信息</span> | ||||
|         <span class="pl-sm text-warning">(到货后{{i?.paymentDays}}天内支付运费)</span> | ||||
|       </div> | ||||
|       <st [data]="i?.expenseVOList" [columns]="expenseColumns" [page]="{ show: false }"> | ||||
|         <ng-template st-row="total" let-item> | ||||
|           <div> | ||||
|             {{ item?.totalAmount | currency }} | ||||
|             <span>(含附加费)</span> | ||||
|           </div> | ||||
|         </ng-template> | ||||
|         <ng-template st-row="price" let-item> | ||||
|           <div> | ||||
|             {{ item?.price | currency }} | ||||
|           </div> | ||||
|         </ng-template> | ||||
|       </st> | ||||
|       <div class="freight-info-box mt-md" nz-row> | ||||
|         <div nz-col nzSpan="24"> | ||||
|           <h3> | ||||
|             <label>总计 :</label> | ||||
|             <span class="text-error-dark text-xl"> | ||||
|               {{ i?.totalAmount | currency }} | ||||
|             </span> | ||||
|             <span>(运费{{ i?.totalFreight | currency }}含附加运费 {{ i?.totalSurcharge | currency }})</span> | ||||
|           </h3> | ||||
|           <div *ngIf='i?.resourceStatus !== "1" && i?.carrierInformationVO?.driverName !== i?.payeeName'>车队长:{{ | ||||
|             i?.payeeName }}/{{ i?.payeePhone }}/{{ i?.payeeCardNo }}</div> | ||||
|         </div> | ||||
|       </div> | ||||
|     </nz-card> | ||||
|     <nz-card [nzBorderless]="true" class="mb0"> | ||||
|       <div class="font-weight-blod text-md detail-title"> | ||||
|         <a class="sign"></a> | ||||
|         <span>补充信息</span> | ||||
|       </div> | ||||
|       <sv-container> | ||||
|         <sv label="是否回单"> | ||||
|           {{ i?.supplementaryInformationVO?.stateReceipt ? '是' : '否' }} | ||||
|         </sv> | ||||
|         <sv label="回单类型" *ngIf="i?.supplementaryInformationVO?.stateReceipt"> | ||||
|           {{ i?.supplementaryInformationVO?.receiptType === '1' ? '电子回单' : '纸质回单' }} | ||||
|         </sv> | ||||
|         <sv label="联系人" *ngIf="i?.supplementaryInformationVO?.stateReceipt"> {{ | ||||
|           i?.supplementaryInformationVO?.receiptUserName || '-' }} / {{ i?.supplementaryInformationVO?.phon || '-' }} | ||||
|         </sv> | ||||
|         <sv label="所在地区" *ngIf="i?.supplementaryInformationVO?.stateReceipt"> | ||||
|           {{ i?.supplementaryInformationVO?.area }} | ||||
|         </sv> | ||||
|         <sv label="详细地址" *ngIf="i?.supplementaryInformationVO?.stateReceipt"> | ||||
|           {{ i?.supplementaryInformationVO?.address }} | ||||
|         </sv> | ||||
|         <sv label="备注"> | ||||
|           {{ i?.supplementaryInformationVO?.remarks }} | ||||
|         </sv> | ||||
|       </sv-container> | ||||
|     </nz-card> | ||||
|     <nz-card [nzBorderless]="true" class="mb0"> | ||||
|       <div class="font-weight-blod text-md detail-title"> | ||||
|         <a class="sign"></a> | ||||
|         <span>操作日志</span> | ||||
|       </div> | ||||
|       <st #st [data]="service.$api_getOperationLogRecordsList" [columns]="logColumns" [page]="{}" | ||||
|         [req]="{ method: 'POST', allInBody: true, reName: { pi: 'pageIndex', ps: 'pageSize' }, params: reqParams }" | ||||
|         [res]="{ reName: { list: 'data.records', total: 'data.total' } }"> | ||||
|         <ng-template st-row="operator" let-item> | ||||
|           <div> | ||||
|             {{ item?.operator }} {{ item?.telephone ? '/' + item?.telephone : '' }} | ||||
|           </div> | ||||
|         </ng-template> | ||||
|       </st> | ||||
|     </nz-card> | ||||
|   </div> | ||||
| </nz-spin> | ||||
|  | ||||
| @ -3,7 +3,7 @@ | ||||
|     min-height: 210px; | ||||
|  | ||||
|     p { | ||||
|       margin-bottom: .5em; | ||||
|       margin-bottom: 5px; | ||||
|     } | ||||
|   } | ||||
|  | ||||
|  | ||||
| @ -7,7 +7,7 @@ | ||||
|             <se label="个人提现手续费" style="margin:15px 0 0 0"> | ||||
|               <div> | ||||
|                 按照提现金额收取 | ||||
|                 <nz-input-number [(ngModel)]="personValue" [nzMin]="0" [nzMax]="100" [nzPrecision]="2" [nzStep]="0.01"></nz-input-number> | ||||
|                 <nz-input-number [(ngModel)]="personServe" [nzMin]="0" [nzMax]="100" [nzPrecision]="2" [nzStep]="0.01"></nz-input-number> | ||||
|                 <span> %手续费 </span> | ||||
|               </div> | ||||
|             </se> | ||||
| @ -15,7 +15,7 @@ | ||||
|               <div> | ||||
|                 按照提现金额收取 | ||||
|                 <nz-input-number | ||||
|                   [(ngModel)]="enterpriseValue" | ||||
|                   [(ngModel)]="enterpriseServe" | ||||
|                   [nzMin]="0" | ||||
|                   [nzMax]="100" | ||||
|                   [nzPrecision]="2" | ||||
| @ -52,12 +52,12 @@ | ||||
|         <div nz-row nzGutter="8"> | ||||
|             <div nz-col nzSpan="24"> | ||||
|                 <span>客户</span> | ||||
|                 <nz-input-number style="margin: 0 10px; "  [(ngModel)]="personValue" [nzMin]="0" [nzMax]="3000" [nzPrecision]="2" [nzStep]="0.1"></nz-input-number> | ||||
|                 <nz-input-number style="margin: 0 10px; "  [(ngModel)]="silenceClient" [nzMin]="0" [nzMax]="3000" [nzPrecision]="2" [nzStep]="0.1"></nz-input-number> | ||||
|                 <span>天内没有交易订单的视为“沉默客户”</span> | ||||
|             </div> | ||||
|             <div nz-col nzSpan="24" style="margin-top: 10px;"> | ||||
|                 <span>客户</span> | ||||
|                 <nz-input-number  style="margin: 0 10px; "   [(ngModel)]="personValue" [nzMin]="0" [nzMax]="3000" [nzPrecision]="2" [nzStep]="0.1"></nz-input-number> | ||||
|                 <nz-input-number  style="margin: 0 10px; "   [(ngModel)]="loseClient" [nzMin]="0" [nzMax]="3000" [nzPrecision]="2" [nzStep]="0.1"></nz-input-number> | ||||
|                 <span>天内没有交易订单的视为“流失客户”</span> | ||||
|             </div> | ||||
|             <div nz-col nzSpan="24"> | ||||
| @ -66,15 +66,13 @@ | ||||
|         </div> | ||||
|       </nz-card> | ||||
|       <div class="mb-md save-btn"> | ||||
|         <button class="ml-lg" nz-button nzSize="large" nzType="primary">保存</button> | ||||
|         <button class="ml-lg" nz-button nzSize="large">取消</button> | ||||
|         <button class="ml-lg" nz-button nzSize="large" nzType="primary" (click)="save()">保存</button> | ||||
|       </div> | ||||
|     </div> | ||||
|   </div> | ||||
|  | ||||
| <ng-template #auditTimes let-data="data" let-title="title"> | ||||
|   <div *ngIf="auditTimeStatus" > | ||||
|     <div style="display: flex"> | ||||
|       <nz-radio-group [(ngModel)]="everyDay" (ngModelChange)="everyDayChange(everyDay)" style="display: block"> | ||||
|         <label nz-radio [nzValue]="1" class="mt-sm" | ||||
|           >每天<span *ngIf="TimeStatus" style="margin-left: 30px; color: #0200ff; cursor: pointer" (click)="addEvery()">添加时间段</span></label | ||||
| @ -92,7 +90,6 @@ | ||||
|         </div> | ||||
|         </div> | ||||
|       </div> | ||||
|     </div> | ||||
|     <div > | ||||
|       <nz-radio-group [(ngModel)]="MonthDay" (ngModelChange)="MonthDayChange(MonthDay)"  style="display: block"> | ||||
|         <label nz-radio [nzValue]="2" class="mt-sm" | ||||
|  | ||||
| @ -4,6 +4,8 @@ import { NzUploadFile } from 'ng-zorro-antd/upload'; | ||||
| import { Observable, Observer, of } from 'rxjs'; | ||||
| import { apiConf } from '@conf/api.conf'; | ||||
| import { SystemService } from '../../services/system.service'; | ||||
| const NOJSONTYPE = new Set([8, 12, 13]); | ||||
|  | ||||
| const IMAGECONFIG = { | ||||
|   previewFile: (file: NzUploadFile) => of(file.url), | ||||
|   action: apiConf.waterFileUpload, | ||||
| @ -35,12 +37,16 @@ export class PartnerSystemConfigComponent implements OnInit, OnChanges { | ||||
|     isEveryDay: false, | ||||
|     isEveryWeek: false | ||||
|   }; | ||||
|   personValue!: number; | ||||
|   enterpriseValue!: number; | ||||
|   auditValue!: number; | ||||
|   auditTime!: any; | ||||
|   auditTimeStatus: boolean = false; | ||||
|   labelWidth = 250; | ||||
|  | ||||
|   personServe!: number; // 个人提现手续费 | ||||
|   enterpriseServe!: number; // 企业提现手续费 | ||||
|   auditValue!: boolean; // 提现审核 | ||||
|   auditTime!: any; // 审核时间 | ||||
|   silenceClient!: number; // 沉默客户 | ||||
|   loseClient!: number; // 流失客户 | ||||
|   everyDay: boolean = false; | ||||
|   auditTimeStatus: boolean = false; | ||||
|   MonthDay: boolean = false; | ||||
|   time: Date | null = null; | ||||
|   defaultOpenValue = new Date(0, 0, 0, 0, 0, 0); | ||||
| @ -107,7 +113,9 @@ export class PartnerSystemConfigComponent implements OnInit, OnChanges { | ||||
|   constructor(private service: SystemService) {} | ||||
|   ngOnChanges(changes: SimpleChanges): void { | ||||
|     if (changes.configList) { | ||||
|       console.log(changes.configList); | ||||
|       console.log(changes.configList.currentValue); | ||||
|        | ||||
|     } | ||||
|   } | ||||
|  | ||||
| @ -322,6 +330,61 @@ export class PartnerSystemConfigComponent implements OnInit, OnChanges { | ||||
|       this.auditTimeStatus = false; | ||||
|     } | ||||
|   } | ||||
|   save() { | ||||
|     console.log(); | ||||
|     let params : any = { | ||||
|       personServe: this.personServe, // 个人提现手续费 | ||||
|       enterpriseServe: this.enterpriseServe, // 企业提现手续费 | ||||
|       auditValue: this.auditValue, // 提现审核 | ||||
|       auditTime: this.auditTime, // 审核时间 | ||||
|       silenceClient: this.silenceClient, // 沉默客户 | ||||
|       loseClient: this.loseClient // 流失客户 | ||||
|     }; | ||||
|     if(this.auditTime == '2') { | ||||
|       // 每天 | ||||
|       if(this.everyDay){ | ||||
|         console.log(this.everyDayData); | ||||
|         params.everyDayData = this.everyDayData | ||||
|       } else if(this.MonthDay) { | ||||
|       // 每周 | ||||
|       params.MonthDayData = this.MonthDayData | ||||
|       console.log(this.MonthDayData); | ||||
|       } | ||||
|     } | ||||
|     console.log( JSON.stringify(params)); | ||||
|     console.log( this.configList); | ||||
|     const pra = Object.assign({}, ...this.configList) | ||||
|     pra.remark =  JSON.stringify(params) | ||||
|     console.log(pra); | ||||
|      | ||||
|     this.service.request(this.service.$api_update_config_batch, pra).subscribe(res => { | ||||
|       if (res) { | ||||
|         this.service.msgSrv.success('修改配置成功'); | ||||
|         setTimeout(() => { | ||||
|           this.getConfigList(this.selectedTab); | ||||
|         }, 100); | ||||
|       } | ||||
|     }); | ||||
|      | ||||
|   } | ||||
|   getConfigList(selectedTab: any) { | ||||
|     this.selectedTab = selectedTab; | ||||
|     this.service.request(this.service.$api_get_config_by_parent_id, { id: selectedTab?.id }).subscribe((res: Array<any>) => { | ||||
|       if (res?.length > 0) { | ||||
|         res = res.map(item => ({ | ||||
|           ...item, | ||||
|           remark: item.remark ? JSON.parse(item.remark) : null, | ||||
|           itemValue: item?.itemValue ? (NOJSONTYPE.has(item?.itemType) ? item?.itemValue : JSON.parse(item?.itemValue)) : item?.itemValue, | ||||
|           itemData: item.itemData ? JSON.parse(item.itemData) : item.itemData | ||||
|         })); | ||||
|         const hiddenType = res.find(item => item.itemType === 7 || item.itemType === 999); | ||||
|         this.labelWidth = hiddenType ? 0 : 250; | ||||
|         this.configList = res; | ||||
|       } else { | ||||
|         this.configList = []; | ||||
|       } | ||||
|     }); | ||||
|   } | ||||
|   private getImageModel(args: any, key: any) { | ||||
|     return [ | ||||
|       { | ||||
|  | ||||
| @ -1,7 +1,7 @@ | ||||
| /* | ||||
|  * @Author: your name | ||||
|  * @Date: 2021-12-03 15:23:05 | ||||
|  * @LastEditTime : 2022-04-27 15:52:30 | ||||
|  * @LastEditTime : 2022-04-27 20:54:10 | ||||
|  * @LastEditors  : Shiming | ||||
|  * @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE | ||||
|  * @FilePath     : \\tms-obc-web\\src\\app\\routes\\sys-setting\\sys-setting.module.ts | ||||
| @ -38,6 +38,7 @@ import { OrganizationManagementComponent } from './components/organization-manag | ||||
| import { OrganizationModalComponent } from './components/organization-management/organization-modal/organization-modal.component'; | ||||
| import { ApiAuthModalComponent } from './components/organization-management/api-auth-modal/api-auth-modal.component'; | ||||
| import { MenuTreeComponent } from './components/organization-management/menu-tree/menu-tree.component'; | ||||
| import { PartnerSystemConfigComponent } from './components/config/config.component'; | ||||
|  | ||||
| const COMPONENTS = [ | ||||
|   StaffManagementComponent, | ||||
| @ -58,6 +59,7 @@ const COMPONENTS = [ | ||||
|   NoTeManagementComponent, | ||||
|   SmsTemplateComponent, | ||||
|   OrganizationManagementComponent, | ||||
|   PartnerSystemConfigComponent | ||||
| ]; | ||||
| const NOTROUTECOMPONENTS = [ | ||||
|   BuyerTranspowerComponent, | ||||
|  | ||||
| @ -440,12 +440,15 @@ export class TaxManagementOrderReportingComponent implements OnInit { | ||||
|       if (item?.putStatus != '0') { | ||||
|         status = true | ||||
|       } | ||||
|  | ||||
|     }); | ||||
|     if(status) { | ||||
|       this.service.msgSrv.warning('选择了已上传,请重新勾选!'); | ||||
|       return; | ||||
|     } | ||||
|     if(this.selectedRows.find(item => item.checkStatus !== '1')) { | ||||
|       this.service.msgSrv.warning('选择了未通过校验的订单,请重新勾选!'); | ||||
|       return; | ||||
|     } | ||||
|     let params: any[] = []; | ||||
|     this.selectedRows.forEach(item => { | ||||
|       params.push(item.id); | ||||
|  | ||||
| @ -4,7 +4,7 @@ | ||||
|  * @Author       : Shiming | ||||
|  * @Date         : 2022-03-14 14:17:38 | ||||
|  * @LastEditors  : Shiming | ||||
|  * @LastEditTime : 2022-03-25 16:22:32 | ||||
|  * @LastEditTime : 2022-04-27 19:39:30 | ||||
|  * @FilePath     : \\tms-obc-web\\src\\app\\routes\\vehicle\\components\\list\\carauth\\carauth.component.html | ||||
|  * Copyright (C) 2022 huzhenhong. All rights reserved. | ||||
| --> | ||||
| @ -38,9 +38,12 @@ | ||||
|         <ng-template sf-template="agreeImg" let-me let-ui="ui" let-schema="schema"> | ||||
|             <img height="104" src="/assets/images/vehicle/agreement.png" class="borderImg" /> | ||||
|         </ng-template> | ||||
|         <div #aaa style="position: absolute; top: 87.5%; left: 21%; opacity: 0; "> | ||||
|             <div style="color: #0c77e7;" (click)='view()'>点击查看行政区域代码</div> | ||||
|          </div> | ||||
|     </sf> | ||||
|     <img class="drivercard borderImg" height="104" src="/assets/images/vehicle/car.png" /> | ||||
|      | ||||
|    | ||||
| <div class="modal-footer"> | ||||
|     <button nz-button type="button" (click)="close()">关闭</button> | ||||
|     <button nz-button type="button" nzType="primary" (click)="submitForm()" [disabled]="!(sf?.valid && i.flag !== 'view')" [nzLoading]="service.http.loading">确定</button> | ||||
|  | ||||
| @ -2,7 +2,7 @@ import { Placeholder } from '@angular/compiler/src/i18n/i18n_ast'; | ||||
| import { Component, OnInit, ViewChild } from '@angular/core'; | ||||
| import { apiConf } from '@conf/api.conf'; | ||||
| import { cacheConf } from '@conf/cache.conf'; | ||||
| import { SFUISchema, SFSchema, SFUploadWidgetSchema, SFComponent, SFSelectWidgetSchema } from '@delon/form'; | ||||
| import { SFUISchema, SFSchema, SFUploadWidgetSchema, SFComponent, SFSelectWidgetSchema, SFTextWidgetSchema } from '@delon/form'; | ||||
| import { _HttpClient } from '@delon/theme'; | ||||
| import { EACacheService, EAEnvironmentService } from '@shared'; | ||||
| import { NzModalRef } from 'ng-zorro-antd/modal'; | ||||
| @ -17,6 +17,7 @@ import { VehicleService } from '../../../services/vehicle.service'; | ||||
| }) | ||||
| export class CarSettleCarauthComponent implements OnInit { | ||||
|   @ViewChild('sf', { static: false }) sf!: SFComponent; | ||||
|   @ViewChild('aaa', { static: false }) aaa!:any; | ||||
|   record: any = {}; | ||||
|   i: any; | ||||
|   ui: SFUISchema = {}; | ||||
| @ -25,37 +26,39 @@ export class CarSettleCarauthComponent implements OnInit { | ||||
|   showJopFlag = false; | ||||
|   companyData: any = {}; | ||||
|   detailData: any = {}; | ||||
|   carNo = '' | ||||
|    | ||||
|   carNo = ''; | ||||
|   private titles = ` | ||||
|   根据监管要求:总质量 4.5 吨及以下普通货 运车辆的,可填车籍地 6 位行政区域代码+000000。 | ||||
|   `; | ||||
|   constructor( | ||||
|     private modal: NzModalRef, | ||||
|     public service: VehicleService, | ||||
|     private envSrv: EAEnvironmentService, | ||||
|     private eaCacheSrv: EACacheService, | ||||
|   ) { } | ||||
|     private eaCacheSrv: EACacheService | ||||
|   ) {} | ||||
|  | ||||
|   ngOnInit(): void { | ||||
|     this.initData() | ||||
|     this.initSF() | ||||
|     this.initData(); | ||||
|     this.initSF(); | ||||
|   } | ||||
|   initData() { | ||||
|     if (this.i.id) { | ||||
|       this.companyData = this.eaCacheSrv.get(cacheConf.env) | ||||
|       this.companyData = this.eaCacheSrv.get(cacheConf.env); | ||||
|       const params = { | ||||
|         id: this.i.id, | ||||
|       } | ||||
|         id: this.i.id | ||||
|       }; | ||||
|       this.service.request(this.service.$api_shipperCarGet, params).subscribe(res => { | ||||
|         this.detailData = res | ||||
|         this.detailData.isSelf = res.isSelf ? 1 : 0 | ||||
|         this.detailData.isTrailer = res.isTrailer ? 1 : 0 | ||||
|         this.detailData = res; | ||||
|         this.detailData.isSelf = res.isSelf ? 1 : 0; | ||||
|         this.detailData.isTrailer = res.isTrailer ? 1 : 0; | ||||
|         this.detailData.carFrontPhotoWatermark = [ | ||||
|           { | ||||
|             uid: -1, | ||||
|             name: 'LOGO', | ||||
|             status: 'done', | ||||
|             url: this.detailData.carFrontPhotoWatermark, | ||||
|             response: this.detailData.carFrontPhotoWatermark, | ||||
|           }, | ||||
|             response: this.detailData.carFrontPhotoWatermark | ||||
|           } | ||||
|         ]; | ||||
|         this.detailData.carProtocalWatermark = [ | ||||
|           { | ||||
| @ -63,8 +66,8 @@ export class CarSettleCarauthComponent implements OnInit { | ||||
|             name: 'LOGO', | ||||
|             status: 'done', | ||||
|             url: this.detailData.carProtocalWatermark, | ||||
|             response: this.detailData.carProtocalWatermark, | ||||
|           }, | ||||
|             response: this.detailData.carProtocalWatermark | ||||
|           } | ||||
|         ]; | ||||
|         this.detailData.certificatePhotoFrontWatermark = [ | ||||
|           { | ||||
| @ -72,8 +75,8 @@ export class CarSettleCarauthComponent implements OnInit { | ||||
|             name: 'LOGO', | ||||
|             status: 'done', | ||||
|             url: this.detailData.certificatePhotoFrontWatermark, | ||||
|             response: this.detailData.certificatePhotoFrontWatermark, | ||||
|           }, | ||||
|             response: this.detailData.certificatePhotoFrontWatermark | ||||
|           } | ||||
|         ]; | ||||
|         this.detailData.certificatePhotoBackWatermark = [ | ||||
|           { | ||||
| @ -81,8 +84,8 @@ export class CarSettleCarauthComponent implements OnInit { | ||||
|             name: 'LOGO', | ||||
|             status: 'done', | ||||
|             url: this.detailData.certificatePhotoBackWatermark, | ||||
|             response: this.detailData.certificatePhotoBackWatermark, | ||||
|           }, | ||||
|             response: this.detailData.certificatePhotoBackWatermark | ||||
|           } | ||||
|         ]; | ||||
|         this.detailData.roadTransportPhotoWatermark = [ | ||||
|           { | ||||
| @ -90,10 +93,10 @@ export class CarSettleCarauthComponent implements OnInit { | ||||
|             name: 'LOGO', | ||||
|             status: 'done', | ||||
|             url: this.detailData.roadTransportPhotoWatermark, | ||||
|             response: this.detailData.roadTransportPhotoWatermark, | ||||
|           }, | ||||
|             response: this.detailData.roadTransportPhotoWatermark | ||||
|           } | ||||
|         ]; | ||||
|       }) | ||||
|       }); | ||||
|     } | ||||
|   } | ||||
|   initSF() { | ||||
| @ -112,7 +115,7 @@ export class CarSettleCarauthComponent implements OnInit { | ||||
|             widget: 'upload', | ||||
|             descriptionI18n: '请上传车头照照片,支持JPG、PNG格式,文件小于5M。', | ||||
|             data: { | ||||
|               appId: this.envSrv.env.appId, | ||||
|               appId: this.envSrv.env.appId | ||||
|             }, | ||||
|             name: 'multipartFile', | ||||
|             multiple: false, | ||||
| @ -127,9 +130,9 @@ export class CarSettleCarauthComponent implements OnInit { | ||||
|                     status: 'done', | ||||
|                     url: args.file.response.data.fullFileWatermarkPath, | ||||
|                     response: { | ||||
|                       url: args.file.response.data.fullFileWatermarkPath, | ||||
|                     }, | ||||
|                   }, | ||||
|                       url: args.file.response.data.fullFileWatermarkPath | ||||
|                     } | ||||
|                   } | ||||
|                 ]; | ||||
|                 this.sf?.setValue('/carFrontPhotoWatermark', avatar); | ||||
|                 this.detailData.carFrontPhoto = args.file.response.data.fullFilePath; | ||||
| @ -144,13 +147,13 @@ export class CarSettleCarauthComponent implements OnInit { | ||||
|                   observer.complete(); | ||||
|                   return; | ||||
|                 } | ||||
|                 console.log(_fileList) | ||||
|                  | ||||
|                 console.log(_fileList); | ||||
|  | ||||
|                 observer.next(isLt2M); | ||||
|                 observer.complete(); | ||||
|               }); | ||||
|             }, | ||||
|             // previewFile: (file: NzUploadFile) => of(  | ||||
|             } | ||||
|             // previewFile: (file: NzUploadFile) => of( | ||||
|             //   file?.response?.data?.fullFilePath | ||||
|             //   ), | ||||
|           } | ||||
| @ -160,8 +163,8 @@ export class CarSettleCarauthComponent implements OnInit { | ||||
|           maxLength: 9, | ||||
|           type: 'string', | ||||
|           ui: { | ||||
|             placeholder: '请输入', | ||||
|           }, | ||||
|             placeholder: '请输入' | ||||
|           } | ||||
|         }, | ||||
|         carNoColor: { | ||||
|           title: '车牌颜色', | ||||
| @ -170,24 +173,26 @@ export class CarSettleCarauthComponent implements OnInit { | ||||
|             widget: 'dict-select', | ||||
|             params: { dictKey: 'car:color' }, | ||||
|             placeholder: '请选择车牌颜色', | ||||
|             containsAllLabel:false, | ||||
|           } as SFSelectWidgetSchema, | ||||
|             containsAllLabel: false | ||||
|           } as SFSelectWidgetSchema | ||||
|         }, | ||||
|         carModel: { | ||||
|           title: '车型', | ||||
|           type: 'string', | ||||
|           readOnly: true, | ||||
|           ui: { | ||||
|           placeholder:'请上传行驶证自动带出' | ||||
|           }, | ||||
|             placeholder: '请上传行驶证自动带出' | ||||
|           } | ||||
|         }, | ||||
|         carEnergyType: { | ||||
|           title: '车辆能源类型', | ||||
|           type: 'string', | ||||
|           readOnly: true, | ||||
|           ui: { | ||||
|           placeholder:'请输入车辆能源类型' | ||||
|           }, | ||||
|             widget: 'dict-select', | ||||
|             params: { dictKey: 'car:energy:type' }, | ||||
|             placeholder: '请选择车辆能源类型', | ||||
|             containsAllLabel: false | ||||
|           } | ||||
|         }, | ||||
|         carLength: { | ||||
|           title: '车长', | ||||
| @ -196,20 +201,20 @@ export class CarSettleCarauthComponent implements OnInit { | ||||
|             widget: 'dict-select', | ||||
|             params: { dictKey: 'car:length' }, | ||||
|             placeholder: '请选择车长', | ||||
|             containsAllLabel:false, | ||||
|           } as SFSelectWidgetSchema, | ||||
|             containsAllLabel: false | ||||
|           } as SFSelectWidgetSchema | ||||
|         }, | ||||
|         carLoad: { | ||||
|           title: '载重', | ||||
|           title: '核定载质量', | ||||
|           type: 'string', | ||||
|           maxLength: 6, | ||||
|           ui: { | ||||
|             placeholder: '请输入', | ||||
|             addOnAfter: '吨', | ||||
|             change: (val: any) =>{ | ||||
|               const value =  val.replace(/\D/g,'') | ||||
|               this.sf.setValue('/carLoad', value) | ||||
|             }, | ||||
|             change: (val: any) => { | ||||
|               const value = val.replace(/\D/g, ''); | ||||
|               this.sf.setValue('/carLoad', value); | ||||
|             } | ||||
|           } | ||||
|         }, | ||||
|         isSelf: { | ||||
| @ -217,11 +222,11 @@ export class CarSettleCarauthComponent implements OnInit { | ||||
|           type: 'string', | ||||
|           enum: [ | ||||
|             { label: '否', value: 0 }, | ||||
|             { label: '是', value: 1 }, | ||||
|             { label: '是', value: 1 } | ||||
|           ], | ||||
|           ui: { | ||||
|             widget: 'select', | ||||
|             placeholder: '请选择', | ||||
|             placeholder: '请选择' | ||||
|           } | ||||
|         }, | ||||
|         isTrailer: { | ||||
| @ -229,11 +234,11 @@ export class CarSettleCarauthComponent implements OnInit { | ||||
|           type: 'string', | ||||
|           enum: [ | ||||
|             { label: '否', value: 0 }, | ||||
|             { label: '是', value: 1 }, | ||||
|             { label: '是', value: 1 } | ||||
|           ], | ||||
|           ui: { | ||||
|             widget: 'select', | ||||
|             placeholder: '请选择', | ||||
|             placeholder: '请选择' | ||||
|           } | ||||
|         }, | ||||
|         carProtocalWatermark: { | ||||
| @ -249,7 +254,7 @@ export class CarSettleCarauthComponent implements OnInit { | ||||
|             widget: 'upload', | ||||
|             descriptionI18n: '请上传挂靠协议,支持JPG、PNG格式,文件小于5M。', | ||||
|             data: { | ||||
|               appId: this.envSrv.env.appId, | ||||
|               appId: this.envSrv.env.appId | ||||
|             }, | ||||
|             name: 'multipartFile', | ||||
|             multiple: false, | ||||
| @ -263,12 +268,12 @@ export class CarSettleCarauthComponent implements OnInit { | ||||
|                     status: 'done', | ||||
|                     url: args.file.response.data.fullFileWatermarkPath, | ||||
|                     response: { | ||||
|                       url: args.file.response.data.fullFileWatermarkPath, | ||||
|                     }, | ||||
|                   }, | ||||
|                       url: args.file.response.data.fullFileWatermarkPath | ||||
|                     } | ||||
|                   } | ||||
|                 ]; | ||||
|                 this.sf?.setValue('/carProtocalWatermark', avatar); | ||||
|                 this.detailData.certificatePhotoFront = args.file.response.data.fullFilePath | ||||
|                 this.detailData.certificatePhotoFront = args.file.response.data.fullFilePath; | ||||
|               } | ||||
|             }, | ||||
|             beforeUpload: (file: any, _fileList: any) => { | ||||
| @ -283,7 +288,7 @@ export class CarSettleCarauthComponent implements OnInit { | ||||
|                 observer.complete(); | ||||
|               }); | ||||
|             }, | ||||
|             previewFile: (file: NzUploadFile) => of(file.url), | ||||
|             previewFile: (file: NzUploadFile) => of(file.url) | ||||
|           } | ||||
|         }, | ||||
|         agreeImg: { | ||||
| @ -291,24 +296,24 @@ export class CarSettleCarauthComponent implements OnInit { | ||||
|           type: 'boolean', | ||||
|           // enum: [{ label: '长期', value: true }], | ||||
|           ui: { | ||||
|             widget: 'custom', | ||||
|             widget: 'custom' | ||||
|           } | ||||
|         }, | ||||
|         titleA: { | ||||
|           title: '行驶证信息(必填)', | ||||
|           type: 'string', | ||||
|           ui: { | ||||
|             widget: 'text', | ||||
|             widget: 'text' | ||||
|           }, | ||||
|           default: '照片上传后会自动识别文字并填充下列内容栏', | ||||
|           default: '照片上传后会自动识别文字并填充下列内容栏' | ||||
|         }, | ||||
|         tipsA: { | ||||
|           title: '', | ||||
|           type: 'string', | ||||
|           ui: { | ||||
|             widget: 'custom', | ||||
|             offsetControl: 6, | ||||
|           }, | ||||
|             offsetControl: 6 | ||||
|           } | ||||
|         }, | ||||
|         certificatePhotoFrontWatermark: { | ||||
|           type: 'string', | ||||
| @ -323,7 +328,7 @@ export class CarSettleCarauthComponent implements OnInit { | ||||
|             widget: 'upload', | ||||
|             descriptionI18n: '请上传行驶证首页照片,支持JPG、PNG格式,文件小于5M。照片信息缺失、拼凑、过度PS、模糊不清,都不会通过审核。', | ||||
|             data: { | ||||
|               appId: this.envSrv.env.appId, | ||||
|               appId: this.envSrv.env.appId | ||||
|             }, | ||||
|             name: 'multipartFile', | ||||
|             multiple: false, | ||||
| @ -337,15 +342,15 @@ export class CarSettleCarauthComponent implements OnInit { | ||||
|                     status: 'done', | ||||
|                     url: args.file.response.data.fullFileWatermarkPath, | ||||
|                     response: { | ||||
|                       url: args.file.response.data.fullFileWatermarkPath, | ||||
|                     }, | ||||
|                   }, | ||||
|                       url: args.file.response.data.fullFileWatermarkPath | ||||
|                     } | ||||
|                   } | ||||
|                 ]; | ||||
|                 this.sf?.setValue('/certificatePhotoFrontWatermark', avatar); | ||||
|                 this.detailData.certificatePhotoFront = args.file.response.data.fullFilePath | ||||
|                 this.detailData.certificatePhotoFront = args.file.response.data.fullFilePath; | ||||
|                 this.checkCarCard(args.file.response.data.fullFilePath, 'front'); | ||||
|               } else { | ||||
|                 this.detailData.certificatePhotoFront = '' | ||||
|                 this.detailData.certificatePhotoFront = ''; | ||||
|               } | ||||
|             }, | ||||
|             beforeUpload: (file: any, _fileList: any) => { | ||||
| @ -359,7 +364,7 @@ export class CarSettleCarauthComponent implements OnInit { | ||||
|                 observer.next(isLt2M); | ||||
|                 observer.complete(); | ||||
|               }); | ||||
|             }, | ||||
|             } | ||||
|             // previewFile: (file: NzUploadFile) => of(file.url), | ||||
|           } | ||||
|         }, | ||||
| @ -368,8 +373,8 @@ export class CarSettleCarauthComponent implements OnInit { | ||||
|           type: 'string', | ||||
|           ui: { | ||||
|             widget: 'custom', | ||||
|             offsetControl: 6, | ||||
|           }, | ||||
|             offsetControl: 6 | ||||
|           } | ||||
|         }, | ||||
|         certificatePhotoBackWatermark: { | ||||
|           type: 'string', | ||||
| @ -384,7 +389,7 @@ export class CarSettleCarauthComponent implements OnInit { | ||||
|             widget: 'upload', | ||||
|             descriptionI18n: '请上传行驶证副业照片,支持JPG、PNG格式,文件小于5M。', | ||||
|             data: { | ||||
|               appId: this.envSrv.env.appId, | ||||
|               appId: this.envSrv.env.appId | ||||
|             }, | ||||
|             name: 'multipartFile', | ||||
|             multiple: false, | ||||
| @ -398,15 +403,15 @@ export class CarSettleCarauthComponent implements OnInit { | ||||
|                     status: 'done', | ||||
|                     url: args.file.response.data.fullFileWatermarkPath, | ||||
|                     response: { | ||||
|                       url: args.file.response.data.fullFileWatermarkPath, | ||||
|                     }, | ||||
|                   }, | ||||
|                       url: args.file.response.data.fullFileWatermarkPath | ||||
|                     } | ||||
|                   } | ||||
|                 ]; | ||||
|                 this.sf?.setValue('/certificatePhotoBackWatermark', avatar); | ||||
|                 this.detailData.certificatePhotoBack = args.file.response.data.fullFilePath | ||||
|                 this.detailData.certificatePhotoBack = args.file.response.data.fullFilePath; | ||||
|                 this.checkCarCard(args.file.response.data.fullFilePath, 'back'); | ||||
|               } else { | ||||
|                 this.detailData.certificatePhotoBack = '' | ||||
|                 this.detailData.certificatePhotoBack = ''; | ||||
|               } | ||||
|             }, | ||||
|             beforeUpload: (file: any, _fileList: any) => { | ||||
| @ -420,7 +425,7 @@ export class CarSettleCarauthComponent implements OnInit { | ||||
|                 observer.next(isLt2M); | ||||
|                 observer.complete(); | ||||
|               }); | ||||
|             }, | ||||
|             } | ||||
|             // previewFile: (file: NzUploadFile) => of(file.url), | ||||
|           } | ||||
|         }, | ||||
| @ -429,16 +434,16 @@ export class CarSettleCarauthComponent implements OnInit { | ||||
|           type: 'string', | ||||
|           format: 'date', | ||||
|           ui: { | ||||
|             placeholder: '请输入', | ||||
|           }, | ||||
|             placeholder: '请输入' | ||||
|           } | ||||
|         }, | ||||
|         driverLicenseGetTime: { | ||||
|           title: '行驶证发证日期', | ||||
|           type: 'string', | ||||
|           format: 'date', | ||||
|           ui: { | ||||
|             placeholder: '请输入', | ||||
|           }, | ||||
|             placeholder: '请输入' | ||||
|           } | ||||
|         }, | ||||
|         driverLicenseEndTime: { | ||||
|           title: '行驶证到期日期', | ||||
| @ -446,55 +451,64 @@ export class CarSettleCarauthComponent implements OnInit { | ||||
|           format: 'date', | ||||
|           maxLength: 30, | ||||
|           ui: { | ||||
|             placeholder: '请输入', | ||||
|           }, | ||||
|             placeholder: '请输入' | ||||
|           } | ||||
|         }, | ||||
|         driverLicenseSigningOrg: { | ||||
|           title: '行驶证签发机关', | ||||
|           type: 'string', | ||||
|           maxLength: 30, | ||||
|           ui: { | ||||
|             placeholder: '请输入', | ||||
|           }, | ||||
|             placeholder: '请输入' | ||||
|           } | ||||
|         }, | ||||
|         carDistinguishCode: { | ||||
|           title: '车辆识别代码', | ||||
|           type: 'string', | ||||
|           maxLength: 30, | ||||
|           ui: { | ||||
|             placeholder: '请输入', | ||||
|           }, | ||||
|             placeholder: '请输入' | ||||
|           } | ||||
|         }, | ||||
|         useNature: { | ||||
|           title: '使用性质', | ||||
|           type: 'string', | ||||
|           maxLength: 30, | ||||
|           ui: { | ||||
|             placeholder: '请输入', | ||||
|           }, | ||||
|             placeholder: '请输入' | ||||
|           } | ||||
|         }, | ||||
|         curbWeight: { | ||||
|           title: '整备质量', | ||||
|           type: 'string', | ||||
|           ui: { | ||||
|             placeholder: '请输入', | ||||
|           }, | ||||
|             addOnAfter: '吨' | ||||
|           } | ||||
|         }, | ||||
|         carTotalLoad: { | ||||
|           title: '总质量', | ||||
|           type: 'string', | ||||
|           ui: { | ||||
|             addOnAfter: '吨', | ||||
|             placeholder: '请输入' | ||||
|           } | ||||
|         }, | ||||
|         carOwner: { | ||||
|           title: '所有人', | ||||
|           type: 'string', | ||||
|           maxLength: 30, | ||||
|           ui: { | ||||
|             placeholder: '请输入', | ||||
|           }, | ||||
|             placeholder: '请输入' | ||||
|           } | ||||
|         }, | ||||
|         titleB: { | ||||
|           title: '道运证(选填)', | ||||
|           type: 'string', | ||||
|           ui: { | ||||
|             widget: 'text', | ||||
|             widget: 'text' | ||||
|           }, | ||||
|           default: '照片上传后会自动识别文字并填充下列内容栏', | ||||
|           default: '照片上传后会自动识别文字并填充下列内容栏' | ||||
|         }, | ||||
|         roadTransportPhotoWatermark: { | ||||
|           type: 'string', | ||||
| @ -509,7 +523,7 @@ export class CarSettleCarauthComponent implements OnInit { | ||||
|             widget: 'upload', | ||||
|             descriptionI18n: '请上传道运证照片,支持JPG、PNG格式,文件小于5M。蓝牌绿牌车辆,可不用传道运证', | ||||
|             data: { | ||||
|               appId: this.envSrv.env.appId, | ||||
|               appId: this.envSrv.env.appId | ||||
|             }, | ||||
|             name: 'multipartFile', | ||||
|             multiple: false, | ||||
| @ -523,15 +537,15 @@ export class CarSettleCarauthComponent implements OnInit { | ||||
|                     status: 'done', | ||||
|                     url: args.file.response.data.fullFileWatermarkPath, | ||||
|                     response: { | ||||
|                       url: args.file.response.data.fullFileWatermarkPath, | ||||
|                     }, | ||||
|                   }, | ||||
|                       url: args.file.response.data.fullFileWatermarkPath | ||||
|                     } | ||||
|                   } | ||||
|                 ]; | ||||
|                 this.sf?.setValue('/roadTransportPhotoWatermark', avatar); | ||||
|                 this.detailData.roadTransportPhoto = args.file.response.data.fullFilePath | ||||
|                 this.detailData.roadTransportPhoto = args.file.response.data.fullFilePath; | ||||
|                 this.checkTransCard(args.file.response.data.fullFilePath); | ||||
|               } else { | ||||
|                 this.detailData.roadTransportPhoto = '' | ||||
|                 this.detailData.roadTransportPhoto = ''; | ||||
|               } | ||||
|             }, | ||||
|             beforeUpload: (file: any, _fileList: any) => { | ||||
| @ -545,7 +559,7 @@ export class CarSettleCarauthComponent implements OnInit { | ||||
|                 observer.next(isLt2M); | ||||
|                 observer.complete(); | ||||
|               }); | ||||
|             }, | ||||
|             } | ||||
|             // previewFile: (file: NzUploadFile) => of(file.url), | ||||
|           } | ||||
|         }, | ||||
| @ -554,7 +568,7 @@ export class CarSettleCarauthComponent implements OnInit { | ||||
|           type: 'boolean', | ||||
|           // enum: [{ label: '长期', value: true }], | ||||
|           ui: { | ||||
|             widget: 'custom', | ||||
|             widget: 'custom' | ||||
|           } | ||||
|         }, | ||||
|         roadTransportNo: { | ||||
| @ -564,33 +578,39 @@ export class CarSettleCarauthComponent implements OnInit { | ||||
|           ui: { | ||||
|             // widget: this.detailData.commitFlag !== 0 ? 'text' : '', | ||||
|             placeholder: '请输入', | ||||
|           }, | ||||
|             optionalHelp: { | ||||
|               i18n: this.titles | ||||
|             } | ||||
|           } | ||||
|         }, | ||||
|         '': { type: 'number', ui: { widget: 'text', | ||||
|         html: this.aaa, | ||||
|         defaultText: '点击查看行政区域代码' } as SFTextWidgetSchema }, | ||||
|         roadTransportLicenceNo: { | ||||
|           title: '经营许可证号', | ||||
|           type: 'string', | ||||
|           maxLength: 30, | ||||
|           ui: { | ||||
|             // widget: this.detailData.commitFlag !== 0 ? 'text' : '', | ||||
|             placeholder: '请输入', | ||||
|           }, | ||||
|             placeholder: '请输入' | ||||
|           } | ||||
|         }, | ||||
|         roadTransportStartTime: { | ||||
|           title: '发证日期', | ||||
|           type: 'string', | ||||
|           format: 'date', | ||||
|           ui: { | ||||
|             placeholder: '请输入', | ||||
|           }, | ||||
|             placeholder: '请输入' | ||||
|           } | ||||
|         }, | ||||
|         roadTransportEndTime: { | ||||
|           title: '有效期至', | ||||
|           type: 'string', | ||||
|           format: 'date', | ||||
|           ui: { | ||||
|             placeholder: '请输入', | ||||
|           }, | ||||
|         }, | ||||
|             placeholder: '请输入' | ||||
|           } | ||||
|         } | ||||
|       }, | ||||
|       required: [ | ||||
|         'carFrontPhotoWatermark', | ||||
| @ -610,62 +630,63 @@ export class CarSettleCarauthComponent implements OnInit { | ||||
|         'driverLicenseSigningOrg', | ||||
|         'carDistinguishCode', | ||||
|         'useNature', | ||||
|         'curbWeight', | ||||
|         'carTotalLoad', | ||||
|         'carOwner' | ||||
|       ], | ||||
|       ] | ||||
|     }; | ||||
|  | ||||
|     this.ui = { | ||||
|       '*': { | ||||
|         spanLabelFixed: 180, | ||||
|         grid: { span: 18 }, | ||||
|         width: 600, | ||||
|         width: 600 | ||||
|       }, | ||||
|       $title1: { | ||||
|         spanLabelFixed: 0, | ||||
|         spanLabelFixed: 0 | ||||
|       }, | ||||
|       $title2: { | ||||
|         spanLabelFixed: 0, | ||||
|         spanLabelFixed: 0 | ||||
|       }, | ||||
|       $title3: { | ||||
|         spanLabelFixed: 0, | ||||
|         spanLabelFixed: 0 | ||||
|       }, | ||||
|       $isTrailer:{ | ||||
|         grid: { span: 24 }, | ||||
|       $isTrailer: { | ||||
|         grid: { span: 24 } | ||||
|       }, | ||||
|       $carProtocalWatermark: { | ||||
|         grid: { span:12 }, | ||||
|         grid: { span: 12 } | ||||
|       }, | ||||
|       $agreeImg: { | ||||
|         grid: { span: 4 }, | ||||
|         class: 'setCustom' | ||||
|       }, | ||||
|       $titleB:{ | ||||
|         grid: { span: 24 }, | ||||
|       $titleB: { | ||||
|         grid: { span: 24 } | ||||
|       }, | ||||
|       $roadTransportPhotoWatermark: { | ||||
|         grid: { span: 12 }, | ||||
|         grid: { span: 12 } | ||||
|       }, | ||||
|       $roadImg: { | ||||
|         grid: { span: 4 }, | ||||
|         class: 'setCustom' | ||||
|       }, | ||||
|       | ||||
|       } | ||||
|     }; | ||||
|   } | ||||
|   // 道路运输证识别 | ||||
|   checkTransCard(imgurl: any) { | ||||
|     const params = { | ||||
|       transportationLicenseUrl: imgurl, | ||||
|       transportationLicenseUrl: imgurl | ||||
|     }; | ||||
|     this.service.request(this.service.$api_recognizeTransportationLicense, params).subscribe((res: any) => { | ||||
|       if (res) { | ||||
|         this.sf.setValue('/roadTransportNo', res.number); | ||||
|         this.sf.setValue('/roadTransportLicenceNo', res.businessCertificate); | ||||
|         this.sf.setValue('/roadTransportStartTime', res.issueDate); | ||||
|         if(this.carNo === '') { | ||||
|           this.carNo = res.number | ||||
|         } else if(this.carNo && res.vehicleNumber.indexOf(this.carNo) === -1) { | ||||
|           this.service.msgSrv.warning('请上传同一认证车辆的相关证件') | ||||
|         if (this.carNo === '') { | ||||
|           this.carNo = res.number; | ||||
|         } else if (this.carNo && res.vehicleNumber.indexOf(this.carNo) === -1) { | ||||
|           this.service.msgSrv.warning('请上传同一认证车辆的相关证件'); | ||||
|         } | ||||
|       } | ||||
|     }); | ||||
| @ -674,11 +695,12 @@ export class CarSettleCarauthComponent implements OnInit { | ||||
|   checkCarCard(imgurl: any, side: any) { | ||||
|     const params = { | ||||
|       vehicleLicenseUrl: imgurl, | ||||
|       side, | ||||
|       side | ||||
|     }; | ||||
|     this.service.request(this.service.$api_recognizeVehicleLicense, params).subscribe((res: any) => { | ||||
|       if (res) { | ||||
|         if (side === 'front') { // 正面 | ||||
|         if (side === 'front') { | ||||
|           // 正面 | ||||
|           this.sf.setValue('/driverLicenseRegisterTime', res.registerDate); | ||||
|           this.sf.setValue('/carNo', res.number); | ||||
|           this.sf.setValue('/driverLicenseGetTime', res.issueDate); | ||||
| @ -687,14 +709,15 @@ export class CarSettleCarauthComponent implements OnInit { | ||||
|           this.sf.setValue('/carOwner', res.name); | ||||
|           this.sf.setValue('/useNature', res.useCharacter); | ||||
|           this.sf.setValue('/carModel', res?.vehicleType); | ||||
|            | ||||
|           this.sf.setValue('/carTotalLoad', res?.grossMass.slice(0, -2) % 1000); | ||||
|         } else { | ||||
|           this.sf.setValue('/curbWeight', res.unladenMass); | ||||
|           this.sf.setValue('/curbWeight', res.unladenMass.slice(0, -2) % 1000); | ||||
|           this.sf.setValue('/carLoad', res.approvedLoad.slice(0, -2) % 1000); | ||||
|         } | ||||
|         if(this.carNo === '') { | ||||
|           this.carNo = res.number | ||||
|         } else if(this.carNo && this.carNo !== res.number) { | ||||
|           this.service.msgSrv.warning('请上传同一认证车辆的相关证件') | ||||
|         if (this.carNo === '') { | ||||
|           this.carNo = res.number; | ||||
|         } else if (this.carNo && this.carNo !== res.number) { | ||||
|           this.service.msgSrv.warning('请上传同一认证车辆的相关证件'); | ||||
|         } | ||||
|       } | ||||
|     }); | ||||
| @ -704,10 +727,10 @@ export class CarSettleCarauthComponent implements OnInit { | ||||
|     this.modal.close(true); | ||||
|   } | ||||
|   showExample() { | ||||
|     this.showCardFlag = !this.showCardFlag | ||||
|     this.showCardFlag = !this.showCardFlag; | ||||
|   } | ||||
|   showJopExample() { | ||||
|     this.showJopFlag = !this.showJopFlag | ||||
|     this.showJopFlag = !this.showJopFlag; | ||||
|   } | ||||
|   submitForm() { | ||||
|     const params: any = { | ||||
| @ -715,20 +738,23 @@ export class CarSettleCarauthComponent implements OnInit { | ||||
|       ...this.sf.value, | ||||
|       bindType: this.i.bindType | ||||
|     }; | ||||
|     params.carFrontPhoto = this.detailData.carFrontPhoto | ||||
|     params.carProtocal = this.detailData.carProtocal | ||||
|     params.certificatePhotoFront = this.detailData.certificatePhotoFront | ||||
|     params.certificatePhotoBack = this.detailData.certificatePhotoBack | ||||
|     params.roadTransportPhoto = this.detailData.roadTransportPhoto | ||||
|     delete params.titleA | ||||
|     delete params.titleB | ||||
|     params.carFrontPhoto = this.detailData.carFrontPhoto; | ||||
|     params.carProtocal = this.detailData.carProtocal; | ||||
|     params.certificatePhotoFront = this.detailData.certificatePhotoFront; | ||||
|     params.certificatePhotoBack = this.detailData.certificatePhotoBack; | ||||
|     params.roadTransportPhoto = this.detailData.roadTransportPhoto; | ||||
|     delete params.titleA; | ||||
|     delete params.titleB; | ||||
|     console.log(params); | ||||
|      | ||||
|  | ||||
|     this.service.request(this.service.$api_saveUpdateShipperCar, params).subscribe((res: any) => { | ||||
|       if (res) { | ||||
|         this.service.msgSrv.success('添加成功') | ||||
|         this.modal.close(true) | ||||
|         this.service.msgSrv.success('添加成功'); | ||||
|         this.modal.close(true); | ||||
|       } | ||||
|     }) | ||||
|     }); | ||||
|   } | ||||
|   view() { | ||||
|     window.open('http://www.mca.gov.cn/article/sj/xzqh/1980/') | ||||
|   } | ||||
| } | ||||
|  | ||||
| @ -2,16 +2,17 @@ | ||||
| @import '~@delon/abc/index'; | ||||
| @import '~@delon/chart/index'; | ||||
| @import 'app/layout/pro/styles/index.less'; | ||||
| @import './styles/common/global.less'; | ||||
|  | ||||
| @import './styles/index'; | ||||
| @import './styles/theme'; | ||||
|  | ||||
| .icon { | ||||
|   width       : 18px; | ||||
|   fill        : currentColor; | ||||
|   overflow    : hidden; | ||||
|   font-size   : 18px !important; | ||||
|   color       : #ffffff; | ||||
|   width: 18px; | ||||
|   fill: currentColor; | ||||
|   overflow: hidden; | ||||
|   font-size: 18px !important; | ||||
|   color: #ffffff; | ||||
|   margin-right: 10px; | ||||
| } | ||||
|  | ||||
| @ -19,13 +20,13 @@ | ||||
|  | ||||
| /* 全局滚动条美化 */ | ||||
| *::-webkit-scrollbar { | ||||
|   width : (@layout-gutter); | ||||
|   width: (@layout-gutter); | ||||
|   height: (@layout-gutter); | ||||
| } | ||||
|  | ||||
| *::-webkit-scrollbar-thumb { | ||||
|   background   : #d9d9d9; | ||||
|   cursor       : pointer; | ||||
|   background: #d9d9d9; | ||||
|   cursor: pointer; | ||||
|   border-radius: (@layout-gutter) / 2; | ||||
| } | ||||
|  | ||||
| @ -46,14 +47,14 @@ input[type="number"] { | ||||
|  | ||||
| .break-word-all { | ||||
|   word-break: break-all; | ||||
|   word-wrap : break-word; | ||||
|   word-wrap: break-word; | ||||
| } | ||||
|  | ||||
| st { | ||||
|   .block-td { | ||||
|     .ant-divider-vertical { | ||||
|       display    : none; | ||||
|       margin     : 0; | ||||
|       display: none; | ||||
|       margin: 0; | ||||
|       border-left: none; | ||||
|     } | ||||
|  | ||||
| @ -66,9 +67,9 @@ st { | ||||
| } | ||||
|  | ||||
| nz-range-picker { | ||||
|   width     : 100%; | ||||
|   width: 100%; | ||||
|   word-break: break-all; | ||||
|   word-wrap : break-word; | ||||
|   word-wrap: break-word; | ||||
| } | ||||
|  | ||||
| .ant-select-tree .ant-select-tree-treenode-disabled { | ||||
| @ -76,13 +77,13 @@ nz-range-picker { | ||||
|     margin: 0; | ||||
|  | ||||
|     .ant-select-tree-checkbox-inner { | ||||
|       width       : 0px; | ||||
|       width: 0px; | ||||
|       border-color: #ffffff !important; | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   .ant-select-tree-node-content-wrapper { | ||||
|     color : unset; | ||||
|     color: unset; | ||||
|     cursor: not-allowed; | ||||
|   } | ||||
| } | ||||
| @ -93,13 +94,13 @@ nz-range-picker { | ||||
|       margin: 0; | ||||
|  | ||||
|       .ant-select-tree-checkbox-inner { | ||||
|         width       : 0px; | ||||
|         width: 0px; | ||||
|         border-color: #ffffff !important; | ||||
|       } | ||||
|     } | ||||
|  | ||||
|     .ant-select-tree-node-content-wrapper { | ||||
|       color : unset; | ||||
|       color: unset; | ||||
|       cursor: not-allowed; | ||||
|     } | ||||
|   } | ||||
| @ -109,4 +110,4 @@ nz-range-picker { | ||||
|   cdk-virtual-scroll-viewport { | ||||
|     min-height: 54px; | ||||
|   } | ||||
| } | ||||
| } | ||||
|  | ||||
							
								
								
									
										60
									
								
								src/styles/common/global.less
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										60
									
								
								src/styles/common/global.less
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,60 @@ | ||||
| .detail-title { | ||||
|   display: flex; | ||||
|   align-items: center; | ||||
|   margin-bottom: 12px; | ||||
|  | ||||
|  | ||||
|   .sign { | ||||
|     width: 2px; | ||||
|     height: 16px; | ||||
|     background: #E60012; | ||||
|     display: inline-block; | ||||
|     margin-right: 10px; | ||||
|   } | ||||
| } | ||||
|  | ||||
| .divider-margin { | ||||
|   margin-top: 12px; | ||||
|   margin-bottom: 12px; | ||||
| } | ||||
|  | ||||
| .step-row { | ||||
|   width: 80%; | ||||
|   margin: 0 auto; | ||||
|  | ||||
|   .ant-steps-item-description { | ||||
|     font-size: 12px; | ||||
|   } | ||||
| } | ||||
|  | ||||
| .new-sv-container { | ||||
|   &.sv__horizontal { | ||||
|     .sv__label-width { | ||||
|       justify-content: left; | ||||
|     } | ||||
|   } | ||||
| } | ||||
|  | ||||
| .new-sf-container { | ||||
|   &.sf__horizontal .ant-form-item-label>label { | ||||
|     justify-content: left; | ||||
|   } | ||||
| } | ||||
|  | ||||
| .common-order-header { | ||||
|   display: flex; | ||||
|   justify-content: space-between; | ||||
| } | ||||
|  | ||||
| .common-grey { | ||||
|   color: #8A8E99; | ||||
| } | ||||
|  | ||||
| .nameBox { | ||||
|   display: flex; | ||||
|   align-items: baseline; | ||||
|  | ||||
|   .name { | ||||
|     margin: 0 10px 10px 0; | ||||
|   } | ||||
| } | ||||
| @ -1,9 +1,11 @@ | ||||
| /* You can add global styles to this file, and also import other style files */ | ||||
|  | ||||
| @import './fix/index'; | ||||
|  | ||||
|  | ||||
| .error-color { | ||||
|     color: #ff4d4f; | ||||
|   color: #ff4d4f; | ||||
| } | ||||
|  | ||||
| @primary-color: #F5222D; | ||||
| @font-size-base: 15px; | ||||
| @font-size-base: 15px; | ||||
|  | ||||
| @ -5,6 +5,7 @@ | ||||
| @import '../app/layout/pro/styles/theme-default.less'; | ||||
| @import './fix/theme-default.less'; | ||||
|  | ||||
|  | ||||
| // ==========Custom brand visual color========== | ||||
|  | ||||
| // ==========Custom brand visual color========== | ||||
| @ -22,4 +23,4 @@ | ||||
|  | ||||
| .ant-btn { | ||||
|   border-radius: 4px; | ||||
| } | ||||
| } | ||||
|  | ||||
		Reference in New Issue
	
	Block a user