Merge branch 'develop' of gitlab.eascs.com:tms-ui/tms-obc-web into develop
This commit is contained in:
		| @ -8,7 +8,7 @@ | ||||
|                 [ui]="{ '*': { spanLabelFixed: 110,grid: { lg: 8, md: 12, sm: 12, xs: 24 } }}" [compact]="true" | ||||
|                 [button]="'none'"></sf> | ||||
|         </div> | ||||
|         <div nz-col [nzXl]="_$expand ? 24 : 7" [nzLg]="24" [nzSm]="24" [nzXs]="24" class="text-right"> | ||||
|         <div nz-col [nzXl]="_$expand ? 24 : 7" [nzLg]="24" [nzSm]="24" [nzXs]="24" class="text-right" [class.expend-options]="_$expand"> | ||||
|             <button nz-button nzType="primary" [nzLoading]="false" (click)="st?.load(1)">查询</button> | ||||
|             <button nz-button (click)="resetSF()">重置</button> | ||||
|             <!-- <button nz-button nzType="primary" > 导出</button> | ||||
|  | ||||
| @ -196,15 +196,15 @@ export class PaymentOrderComponent implements OnInit { | ||||
|             } | ||||
|           } | ||||
|         }, | ||||
|         feeCode: { | ||||
|           type: 'string', | ||||
|           title: '费用号', | ||||
|           ui: { | ||||
|             visibleIf: { | ||||
|               expand: (value: boolean) => value | ||||
|             } | ||||
|           } | ||||
|         }, | ||||
|         // feeCode: { | ||||
|         //   type: 'string', | ||||
|         //   title: '费用号', | ||||
|         //   ui: { | ||||
|         //     visibleIf: { | ||||
|         //       expand: (value: boolean) => value | ||||
|         //     } | ||||
|         //   } | ||||
|         // }, | ||||
|         createTime: { | ||||
|           title: '创建时间', | ||||
|           type: 'string', | ||||
| @ -235,6 +235,8 @@ export class PaymentOrderComponent implements OnInit { | ||||
|       { title: '', index: 'key', type: 'checkbox', fixed: 'left', className: 'text-center' }, | ||||
|       { title: '付款单号', index: 'payCode', type: 'link', width: 180 }, | ||||
|       { title: '网络货运人', index: 'ltdName', width: 180 }, | ||||
|       { title: '运单号', index: 'waybillCode', width: 180 }, | ||||
|       // { title: '费用号', index: 'feeCode', width: 180 }, | ||||
|       { title: '要求付款日期', index: 'payDate', type: 'date', className: 'text-center', width: 150 }, | ||||
|       { | ||||
|         title: '付款金额', | ||||
|  | ||||
| @ -16,7 +16,7 @@ | ||||
|       <sf #sf [schema]="searchSchema" [ui]="{ '*': { spanLabelFixed: 110, grid: { lg: 8, md: 12, sm: 12, xs: 24 } } }" | ||||
|         [compact]="true" [button]="'none'"></sf> | ||||
|     </div> | ||||
|     <div nz-col [nzXl]="_$expand ? 24 : 7" [nzLg]="24" [nzSm]="24" [nzXs]="24" class="text-right"> | ||||
|     <div nz-col [nzXl]="_$expand ? 24 : 7" [nzLg]="24" [nzSm]="24" [nzXs]="24" class="text-right" [class.expend-options]="_$expand"> | ||||
|       <button nz-button nzType="primary" [nzLoading]="false" (click)="st?.load(1)">查询</button> | ||||
|       <button nz-button (click)="resetSF()">重置</button> | ||||
|       <!-- <button nz-button nzType="primary"> 导出</button> | ||||
|  | ||||
| @ -9,7 +9,7 @@ import { FreightAccountService } from '../../services/freight-account.service'; | ||||
| @Component({ | ||||
|   selector: 'app-receipt-order', | ||||
|   templateUrl: './receipt-order.component.html', | ||||
|   styleUrls: ['../../../commom/less/box.less'] | ||||
|   styleUrls: ['../../../commom/less/box.less', '../../../commom/less/expend-but.less'] | ||||
| }) | ||||
| export class ReceiptOrderComponent implements OnInit { | ||||
|   @ViewChild('st', { static: true }) | ||||
| @ -193,26 +193,26 @@ export class ReceiptOrderComponent implements OnInit { | ||||
|             } | ||||
|           } as SFDateWidgetSchema | ||||
|         }, | ||||
|         billHCode: { | ||||
|           type: 'string', | ||||
|           title: '订单号', | ||||
|           ui: { | ||||
|             placeholder: '请输入', | ||||
|             visibleIf: { | ||||
|               expand: (value: boolean) => value | ||||
|             } | ||||
|           } | ||||
|         }, | ||||
|         feeHCodes: { | ||||
|           type: 'string', | ||||
|           title: '费用号', | ||||
|           ui: { | ||||
|             placeholder: '请输入', | ||||
|             visibleIf: { | ||||
|               expand: (value: boolean) => value | ||||
|             } | ||||
|           } | ||||
|         }, | ||||
|         // billHCode: { | ||||
|         //   type: 'string', | ||||
|         //   title: '订单号', | ||||
|         //   ui: { | ||||
|         //     placeholder: '请输入', | ||||
|         //     visibleIf: { | ||||
|         //       expand: (value: boolean) => value | ||||
|         //     } | ||||
|         //   } | ||||
|         // }, | ||||
|         // feeHCodes: { | ||||
|         //   type: 'string', | ||||
|         //   title: '费用号', | ||||
|         //   ui: { | ||||
|         //     placeholder: '请输入', | ||||
|         //     visibleIf: { | ||||
|         //       expand: (value: boolean) => value | ||||
|         //     } | ||||
|         //   } | ||||
|         // }, | ||||
|         remarks: { | ||||
|           type: 'string', | ||||
|           title: '付款备注', | ||||
| @ -231,6 +231,8 @@ export class ReceiptOrderComponent implements OnInit { | ||||
|     return [ | ||||
|       { title: '', index: 'key', type: 'checkbox', width: 60, fixed: 'left', className: 'text-center' }, | ||||
|       { title: '收款单号', index: 'brmcode', type: 'link', width: 180, className: 'text-left' }, | ||||
|       // { title: '订单号', index: 'billHCode',  width: 180, className: 'text-left' }, | ||||
|       // { title: '费用号', index: 'feeCode',  width: 180, className: 'text-left' }, | ||||
|       { title: '网络货运人', index: 'ltdName', width: 200, className: 'text-left' }, | ||||
|       { title: '到账日期', index: 'brmdate', type: 'date', width: 200, className: 'text-left' }, | ||||
|       { title: '收款账户', index: 'ltdaccountId', width: 200, className: 'text-left' }, | ||||
|  | ||||
| @ -242,6 +242,7 @@ export class ReceivableOrderComponent implements OnInit { | ||||
|     return [ | ||||
|       { title: '', index: 'key', type: 'checkbox' }, | ||||
|       { title: '核销单号', index: 'ahxcode', type: 'link', width: 140 }, | ||||
|       { title: '订单号', index: 'billHCode', type: 'link', width: 140 }, | ||||
|       { title: '网络货运人', index: 'ltdName', width: 160 }, | ||||
|       { title: '核销日期', index: 'ahxdate', type: 'date', width: 160 }, | ||||
|       { title: '付款账户', index: 'shipperaccount', width: 170 }, | ||||
|  | ||||
| @ -35,7 +35,7 @@ export class TransactionFlowComponent { | ||||
|       Object.assign(requestOptions.body, { | ||||
|         ...this.sf.value, | ||||
|         createTime: { | ||||
|           start: this.sf.value.tcreateTimeime?.[0] || '', | ||||
|           start: this.sf.value.createTime?.[0] || '', | ||||
|           end: this.sf.value.createTime?.[1] || '' | ||||
|         } | ||||
|       }); | ||||
| @ -120,9 +120,9 @@ export class TransactionFlowComponent { | ||||
|           type: 'string', | ||||
|           title: '收支类型', | ||||
|           enum: [ | ||||
|             { label: '全部', value: '部' }, | ||||
|             { label: '收入', value: 1 }, | ||||
|             { label: '支出', value: 2 } | ||||
|             { label: '全部', value: '' }, | ||||
|             { label: '收入', value: 2 }, | ||||
|             { label: '支出', value: 1 } | ||||
|           ], | ||||
|           ui: { | ||||
|             widget: 'select', | ||||
|  | ||||
| @ -54,10 +54,39 @@ | ||||
|         </se> | ||||
|     </div> | ||||
|  | ||||
|     <nz-alert nzType="info" nzMessage="提现进度" class="mb-md mt-md"></nz-alert> | ||||
|     <nz-tabset class="mt-md"> | ||||
|         <nz-tab nzTitle="提现明细" *ngIf="accountType === '2'"> | ||||
|             <div nz-row nzGutter="8"> | ||||
|                 <div nz-col [nzXl]="_$expand ? 24 : 18" [nzLg]="24" [nzSm]="24" [nzXs]="24"> | ||||
|                     <sf #sf [schema]="inputSearchSchema" | ||||
|                         [ui]="{ '*': { spanLabelFixed: 110,grid: { lg: 8, md: 12, sm: 12, xs: 24 } }}" [compact]="true" | ||||
|                         [button]="'none'"></sf> | ||||
|                 </div> | ||||
|                 <div nz-col [nzXl]="_$expand ? 24 : 6" [nzLg]="24" [nzSm]="24" [nzXs]="24" | ||||
|                     class="text-right"> | ||||
|                     <button nz-button nzType="primary" [nzLoading]="false" (click)="inputST?.load(1)">查询</button> | ||||
|                     <button nz-button (click)="resetInputSF()">重置</button> | ||||
|                     <button nz-button> 导出</button> | ||||
|                     <button nz-button nzType="link" (click)="expandToggle()"> | ||||
|                         {{ !_$expand ? '展开' : '收起' }} | ||||
|                         <i nz-icon [nzType]="!_$expand ? 'down' : 'up'"></i> | ||||
|                     </button> | ||||
|                 </div> | ||||
|             </div> | ||||
|             <st #inputST [data]="service.$api_get_advance_collection_detail" [columns]="columns" | ||||
|                 [page]="{ show: false }" [req]="{  process: beforeReq }" [res]="{ reName: { list: 'data' } }" | ||||
|                 [loading]="false" [scroll]="{ x: '1200px', y: '370px' }" class="mt-md"> | ||||
|                 <ng-template st-row="no" let-item let-index="index" let-column="column"> | ||||
|                     {{index+1}} | ||||
|                 </ng-template> | ||||
|             </st> | ||||
|         </nz-tab> | ||||
|         <nz-tab nzTitle="提现进度"> | ||||
|             <div nz-row class="mt-xl"> | ||||
|                 <div nz-col nzSpan="12" nzOffset="1"> | ||||
|                     <app-logistics-time-line [data]="timeLineData"></app-logistics-time-line> | ||||
|                 </div> | ||||
|             </div> | ||||
|         </nz-tab> | ||||
|     </nz-tabset> | ||||
| </nz-card> | ||||
| @ -5,13 +5,19 @@ | ||||
|         border          : 1px solid #dbdbdb; | ||||
|  | ||||
|         .ant-alert-message { | ||||
|             color: rgba(0, 0, 0, 0.85); | ||||
|             color      : rgba(0, 0, 0, 0.85); | ||||
|             font-weight: 600; | ||||
|             font-size: 16px; | ||||
|             font-size  : 16px; | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     .ant-form-item { | ||||
|         margin-bottom: 15px; | ||||
|     } | ||||
|  | ||||
|     nz-tabs-nav { | ||||
|         background-color: #f3f3f3; | ||||
|         border          : 1px solid #dbdbdb; | ||||
|         padding-left    : 18px; | ||||
|     } | ||||
| } | ||||
| @ -1,5 +1,7 @@ | ||||
| import { Component, OnInit } from '@angular/core'; | ||||
| import { Component, OnInit, ViewChild } from '@angular/core'; | ||||
| import { ActivatedRoute } from '@angular/router'; | ||||
| import { STColumn, STRequestOptions } from '@delon/abc/st'; | ||||
| import { SFComponent, SFSchema } from '@delon/form'; | ||||
| import { FreightAccountService } from '../../../services/freight-account.service'; | ||||
|  | ||||
| @Component({ | ||||
| @ -8,17 +10,37 @@ import { FreightAccountService } from '../../../services/freight-account.service | ||||
|   styleUrls: ['./withdrawals-detail.component.less'] | ||||
| }) | ||||
| export class WithdrawalsDetailComponent implements OnInit { | ||||
|   @ViewChild('st', { static: true }) | ||||
|   st!: Component; | ||||
|   @ViewChild('sf', { static: false }) | ||||
|   inputSF!: SFComponent; | ||||
|   columns: STColumn[] = this.initST(); | ||||
|   inputSearchSchema: SFSchema = this.initInputSF(); | ||||
|   _$expand = false; | ||||
|  | ||||
|   formData: any = {}; | ||||
|  | ||||
|   timeLineData: any = []; | ||||
|  | ||||
|   accountType = '1'; | ||||
|  | ||||
|   constructor(public service: FreightAccountService, private route: ActivatedRoute) { | ||||
|     const id = route.snapshot.params.id; | ||||
|     this.accountType = route.snapshot.queryParams.type; | ||||
|     this.loadRefundDetail(id); | ||||
|   } | ||||
|  | ||||
|   ngOnInit(): void {} | ||||
|  | ||||
|   beforeReq = (requestOptions: STRequestOptions) => { | ||||
|     if (this.inputSF.value) { | ||||
|       Object.assign(requestOptions.body, { | ||||
|         ...this.inputSF.value | ||||
|       }); | ||||
|     } | ||||
|     return requestOptions; | ||||
|   }; | ||||
|  | ||||
|   loadRefundDetail(id: string) { | ||||
|     this.service.request(this.service.$api_get_refund_detail, { id }).subscribe(res => { | ||||
|       if (res) { | ||||
| @ -80,7 +102,131 @@ export class WithdrawalsDetailComponent implements OnInit { | ||||
|     }); | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * 重置表单 | ||||
|    */ | ||||
|   resetInputSF() { | ||||
|     this.inputSF.reset(); | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * 伸缩查询条件 | ||||
|    */ | ||||
|   expandToggle() { | ||||
|     this._$expand = !this._$expand; | ||||
|     this.inputSF?.setValue('/expand', this._$expand); | ||||
|   } | ||||
|  | ||||
|   goBack() { | ||||
|     history.go(-1); | ||||
|   } | ||||
|  | ||||
|   private initInputSF(): SFSchema { | ||||
|     return { | ||||
|       properties: { | ||||
|         expand: { | ||||
|           type: 'boolean', | ||||
|           ui: { | ||||
|             hidden: true | ||||
|           } | ||||
|         }, | ||||
|         billHCode: { | ||||
|           type: 'string', | ||||
|           title: '支付编号', | ||||
|           ui: { | ||||
|             placeholder: '请输入' | ||||
|           } | ||||
|         }, | ||||
|         billHCod1e: { | ||||
|           type: 'string', | ||||
|           title: '订单号', | ||||
|           ui: { | ||||
|             placeholder: '请输入' | ||||
|           } | ||||
|         }, | ||||
|         billHCo1de: { | ||||
|           type: 'string', | ||||
|           title: '货源编号', | ||||
|           ui: { | ||||
|             placeholder: '请输入' | ||||
|           } | ||||
|         }, | ||||
|         billHC1ode: { | ||||
|           type: 'string', | ||||
|           title: '服务类型', | ||||
|           ui: { | ||||
|             widget: 'select', | ||||
|             placeholder: '请选择', | ||||
|             visibleIf: { | ||||
|               expand: (value: boolean) => value | ||||
|             } | ||||
|           } | ||||
|         }, | ||||
|         billHCo11de: { | ||||
|           type: 'string', | ||||
|           title: '承运司机', | ||||
|           ui: { | ||||
|             placeholder: '请输入司机姓名/手机号', | ||||
|             visibleIf: { | ||||
|               expand: (value: boolean) => value | ||||
|             } | ||||
|           } | ||||
|         }, | ||||
|         billHCo111de: { | ||||
|           type: 'string', | ||||
|           title: '车牌号', | ||||
|           ui: { | ||||
|             placeholder: '请输入', | ||||
|             visibleIf: { | ||||
|               expand: (value: boolean) => value | ||||
|             } | ||||
|           } | ||||
|         }, | ||||
|         billHC1o11de: { | ||||
|           type: 'string', | ||||
|           title: '收款人', | ||||
|           ui: { | ||||
|             placeholder: '请输入收款人姓名/手机号', | ||||
|             visibleIf: { | ||||
|               expand: (value: boolean) => value | ||||
|             } | ||||
|           } | ||||
|         }, | ||||
|         billHC1o111de: { | ||||
|           type: 'string', | ||||
|           title: '车队长收款', | ||||
|           ui: { | ||||
|             widget: 'select', | ||||
|             placeholder: '请选择', | ||||
|             visibleIf: { | ||||
|               expand: (value: boolean) => value | ||||
|             } | ||||
|           } | ||||
|         } | ||||
|       } | ||||
|     }; | ||||
|   } | ||||
|  | ||||
|   private initST(): STColumn[] { | ||||
|     return [ | ||||
|       { title: '支付编号', index: 'brmHCode', className: 'text-left', width: 200 }, | ||||
|       { | ||||
|         title: '支付金额', | ||||
|         index: 'yskmoney', | ||||
|         type: 'widget', | ||||
|         className: 'text-right', | ||||
|         widget: { type: 'currency-chy', params: ({ record }) => ({ value: record.yskmoney }) }, | ||||
|         width: 140 | ||||
|       }, | ||||
|       { title: '运费明细', index: 'billHId', className: 'text-center', width: 150 }, | ||||
|       { title: '货主', index: 'billHId', className: 'text-center', width: 150 }, | ||||
|       { title: '订单号', index: 'billHId', className: 'text-center', width: 150 }, | ||||
|       { title: '运单号', index: 'billHId', className: 'text-center', width: 150 }, | ||||
|       { title: '货源编号', index: 'billHId', className: 'text-center', width: 150 }, | ||||
|       { title: '服务类型', index: 'billHId', className: 'text-center', width: 150 }, | ||||
|       { title: '承运司机', index: 'billHId', className: 'text-center', width: 150 }, | ||||
|       { title: '收款人', index: 'billHId', className: 'text-center', width: 150 }, | ||||
|       { title: '银行类型', index: 'billHId', className: 'text-center', width: 150 } | ||||
|     ]; | ||||
|   } | ||||
| } | ||||
|  | ||||
| @ -28,9 +28,9 @@ export class WithdrawalsRecordComponent { | ||||
|   refundStatus: any = ''; | ||||
|  | ||||
|   msg = ''; | ||||
|   constructor(public service: FreightAccountService, private nzModalService: NzModalService, private router: Router) { } | ||||
|   constructor(public service: FreightAccountService, private nzModalService: NzModalService, private router: Router) {} | ||||
|  | ||||
|   ngOnInit(): void { } | ||||
|   ngOnInit(): void {} | ||||
|  | ||||
|   beforeReq = (requestOptions: STRequestOptions) => { | ||||
|     if (this.sf) { | ||||
| @ -254,7 +254,7 @@ export class WithdrawalsRecordComponent { | ||||
|       { title: '提现单号', index: 'refundApplyCode', width: 120 }, | ||||
|       { title: '网络货运人', index: 'ltdName', width: 140 }, | ||||
|       { title: '银行类型', index: 'bankTypeLabel', width: 100 }, | ||||
|       { title: '账户类型', index: 'bankTypeLabel', width: 100 }, | ||||
|       { title: '账户类型', index: 'accountType', width: 100 }, | ||||
|       { title: '账户名称', index: 'bankAccountName', width: 140 }, | ||||
|       { title: '虚拟账户', index: 'virtualAccount', width: 100 }, | ||||
|       { | ||||
| @ -276,6 +276,18 @@ export class WithdrawalsRecordComponent { | ||||
|         width: '110px', | ||||
|         className: 'text-center', | ||||
|         buttons: [ | ||||
|           { | ||||
|             text: '审核', | ||||
|             iif: item => item.refundStatus === '1', | ||||
|             click: item => this.auditAction(item) | ||||
|           }, | ||||
|           { | ||||
|             text: '详情<br>', | ||||
|             click: item => | ||||
|               this.router.navigate([`/financial-management/withdrawals-record/detail/${item.id}`], { | ||||
|                 queryParams: { type: item.accountType } | ||||
|               }) | ||||
|           }, | ||||
|           { | ||||
|             text: '查看回单', | ||||
|             iif: item => item.refundStatus === '3', | ||||
| @ -287,15 +299,6 @@ export class WithdrawalsRecordComponent { | ||||
|                 bussType: '06', | ||||
|                 ltdId: item.ltdId | ||||
|               }) | ||||
|           }, | ||||
|           { | ||||
|             text: '审核', | ||||
|             iif: item => item.refundStatus === '1', | ||||
|             click: item => this.auditAction(item) | ||||
|           }, | ||||
|           { | ||||
|             text: '详情', | ||||
|             click: item => this.router.navigate([`/financial-management/withdrawals-record/detail/${item.id}`]) | ||||
|           } | ||||
|         ] | ||||
|       } | ||||
|  | ||||
| @ -4,7 +4,7 @@ | ||||
|  * @Author       : Shiming | ||||
|  * @Date         : 2021-12-06 20:20:26 | ||||
|  * @LastEditors  : Shiming | ||||
|  * @LastEditTime : 2022-03-23 14:43:34 | ||||
|  * @LastEditTime : 2022-03-24 14:08:55 | ||||
|  * @FilePath     : \\tms-obc-web\\src\\app\\routes\\order-management\\components\\bulk-detail\\bulk-detail.component.html | ||||
|  * Copyright (C) 2022 huzhenhong. All rights reserved. | ||||
| --> | ||||
|  | ||||
| @ -172,6 +172,10 @@ export class OrderManagementComplaintDetailComponent implements OnInit { | ||||
|   查看评价: 3 | ||||
|   */ | ||||
|   handleCancel(type: string) { | ||||
|     if(!this.sfView.valid) { | ||||
|       this.service.msgSrv.error('请填写处理结果!') | ||||
|       return | ||||
|     } | ||||
|     const paramsa = { | ||||
|       ...this.sfView.value, | ||||
|       handleStatus: 0, | ||||
| @ -193,6 +197,10 @@ export class OrderManagementComplaintDetailComponent implements OnInit { | ||||
|     this.isVisibleRE = false | ||||
|   } | ||||
|   handleCancel2() { | ||||
|     if(!this.sfView.valid) { | ||||
|       this.service.msgSrv.error('请填写处理结果!') | ||||
|       return | ||||
|     } | ||||
|     const paramsa = { | ||||
|       id: this.channelId | ||||
|     } | ||||
| @ -212,6 +220,10 @@ export class OrderManagementComplaintDetailComponent implements OnInit { | ||||
|   * 审核通过按钮 | ||||
|   */ | ||||
|   handleOK() { | ||||
|     if(!this.sfView.valid) { | ||||
|       this.service.msgSrv.error('请填写处理结果!') | ||||
|       return | ||||
|     } | ||||
|     const paramsa = { | ||||
|       ...this.sfView.value, | ||||
|       handleStatus: 1, | ||||
|  | ||||
| @ -71,15 +71,13 @@ export class OrderManagementComplaintComponent implements OnInit { | ||||
|     if(this.selectedMainTabStatus) { | ||||
|       a.complaintType = this.selectedMainTabStatus | ||||
|     } | ||||
|     console.log( this.sf?.value); | ||||
|      | ||||
|     const params: any = Object.assign({}, this.sf?.value || {}); | ||||
|     delete params._$expand; | ||||
|     return { | ||||
|       ...a, | ||||
|       ...params, | ||||
|       complainantTime: { | ||||
|         start: this.sf?.value?.complainantTime?.[0] || '', | ||||
|         end: this.sf?.value?.complainantTime?.[1] || '' | ||||
|       } | ||||
|     }; | ||||
|   } | ||||
|   get selectedRows() { | ||||
| @ -110,19 +108,12 @@ export class OrderManagementComplaintComponent implements OnInit { | ||||
|             widget: 'dict-select', | ||||
|             params: { dictKey: 'complaint:cause' }, | ||||
|             containsAllLabel: true, | ||||
|             visibleIf: { | ||||
|               _$expand: (value: boolean) => value | ||||
|             } | ||||
|           } as SFSelectWidgetSchema | ||||
|         }, | ||||
|         complainantTime: { | ||||
|           title: '投诉时间', | ||||
|           type: 'string', | ||||
|           ui: { | ||||
|             widget: 'date', | ||||
|             mode: 'range', | ||||
|             format: 'yyyy-MM-dd', | ||||
|           } as SFDateWidgetSchema, | ||||
|           title: '投诉时间', | ||||
|           ui: { widget: 'sl-from-to', type: 'date', format: 'yyyy-MM-dd' } as SFDateWidgetSchema, | ||||
|         }, | ||||
|       }, | ||||
|     }; | ||||
| @ -255,7 +246,6 @@ export class OrderManagementComplaintComponent implements OnInit { | ||||
|    */ | ||||
|   resetSF(): void { | ||||
|     this.sf.reset(); | ||||
|     this._$expand = false; | ||||
|   } | ||||
|   selectChange(e: number) { | ||||
|     this.resourceStatus = e; | ||||
|  | ||||
| @ -4,7 +4,7 @@ | ||||
|  * @Author       : Shiming | ||||
|  * @Date         : 2022-01-12 10:52:50 | ||||
|  * @LastEditors  : Shiming | ||||
|  * @LastEditTime : 2022-03-23 13:34:31 | ||||
|  * @LastEditTime : 2022-03-24 09:48:40 | ||||
|  * @FilePath     : \\tms-obc-web\\src\\app\\routes\\order-management\\components\\compliance-audit\\compliance-audit.component.html | ||||
|  * Copyright (C) 2022 huzhenhong. All rights reserved. | ||||
| --> | ||||
| @ -87,13 +87,14 @@ | ||||
|         <div> {{ item?.payeeName }}/{{ item?.payeePhone }} </div> | ||||
|       </ng-template> | ||||
|       <ng-template st-row="billCode" let-item let-index="index"> | ||||
|         <div>{{ item.billCode }}</div> | ||||
|         <div> | ||||
|           <span>{{ item?.resourceTypeLabel }}{{ item?.serviceTypeLabel }}</span> | ||||
|         </div> | ||||
|         <a *ngIf="item.billType == '1'" [routerLink]="'/order-management/vehicle/vehicle-detail/' + item.id">{{ item.billCode }}</a> | ||||
|         <a *ngIf="item.billType == '2'"  [routerLink]="'/order-management/bulk/bulk-detail/' + item.id">{{ item.billCode }}</a> | ||||
|         <div> | ||||
|           <span>{{ item?.billStatusLabel }}</span> | ||||
|         </div> | ||||
|         <div> | ||||
|           <span >{{item?.billTypeLabel}}{{item?.serviceTypeLabel}}</span> | ||||
|         </div> | ||||
|       </ng-template> | ||||
|       <ng-template st-row="goodsName" let-item let-index="index"> | ||||
|         <div>{{ item?.goodsName }}</div> | ||||
|  | ||||
| @ -331,6 +331,7 @@ export class OrderManagementComplianceAuditComponent implements OnInit { | ||||
|       { title: '所属项目', index: 'enterpriseProjectName', width: '220px', className: 'text-left' }, | ||||
|       { title: '关联运单号', index: 'wayBillCode', width: '220px', className: 'text-left' }, | ||||
|       { title: '货源编号', index: 'resourceCode', width: '180px', className: 'text-left' }, | ||||
|       { title: '服务类型', index: 'serviceTypeLabel', width: '180px', className: 'text-left' }, | ||||
|       { title: '装货地', index: 'loadingAddressArr', width: '180px', className: 'text-left' }, | ||||
|       { | ||||
|         title: '卸货地', | ||||
| @ -374,13 +375,13 @@ export class OrderManagementComplianceAuditComponent implements OnInit { | ||||
|         title: '审核人', | ||||
|         width: '180px', | ||||
|         className: 'text-left', | ||||
|         index: 'loadingLadingBillFilePath' | ||||
|         index: 'complianceName' | ||||
|       }, | ||||
|       { | ||||
|         title: '审核时间', | ||||
|         width: '180px', | ||||
|         className: 'text-left', | ||||
|         index: 'loadingLadingBillFilePath' | ||||
|         index: 'complianceTime' | ||||
|       }, | ||||
|       { | ||||
|         title: '状态', | ||||
|  | ||||
| @ -4,7 +4,7 @@ | ||||
|  * @Author       : Shiming | ||||
|  * @Date         : 2022-01-12 10:52:50 | ||||
|  * @LastEditors  : Shiming | ||||
|  * @LastEditTime : 2022-03-23 20:36:40 | ||||
|  * @LastEditTime : 2022-03-24 09:30:32 | ||||
|  * @FilePath     : \\tms-obc-web\\src\\app\\routes\\order-management\\components\\receipts-audit\\receipts-audit.component.html | ||||
|  * Copyright (C) 2022 huzhenhong. All rights reserved. | ||||
| --> | ||||
| @ -98,7 +98,9 @@ | ||||
|         <div> {{ item?.payeeName }}/{{ item?.payeePhone }} </div> | ||||
|       </ng-template> | ||||
|       <ng-template st-row="billCode" let-item let-index="index"> | ||||
|         <div>{{ item.billCode }}</div> | ||||
|         <!-- <div>{{ item.billCode }}</div> --> | ||||
|         <a *ngIf="item.resourceType == '1'" [routerLink]="'/order-management/vehicle/vehicle-detail/' + item.id">{{ item.billCode }}</a> | ||||
|         <a *ngIf="item.resourceType == '2'"  [routerLink]="'/order-management/bulk/bulk-detail/' + item.id">{{ item.billCode }}</a> | ||||
|         <div> | ||||
|           <span>{{item?.billStatusLabel}}</span> | ||||
|         </div> | ||||
|  | ||||
| @ -149,6 +149,13 @@ export class OrderManagementReceiptsAuditComponent implements OnInit { | ||||
|             placeholder: '最多100个单号,空号隔开' | ||||
|           } | ||||
|         }, | ||||
|         wayBillCode: { | ||||
|           type: 'string', | ||||
|           title: '运单号', | ||||
|           ui: { | ||||
|             placeholder: '最多100个运单,空号隔开' | ||||
|           } | ||||
|         }, | ||||
|         resourceCode: { | ||||
|           type: 'string', | ||||
|           title: '货源编号' | ||||
| @ -162,6 +169,9 @@ export class OrderManagementReceiptsAuditComponent implements OnInit { | ||||
|             searchDebounceTime: 300, | ||||
|             searchLoadingText: '搜索中...', | ||||
|             allowClear: true, | ||||
|             visibleIf: { | ||||
|               _$expand: (value: boolean) => value | ||||
|             }, | ||||
|             onSearch: (q: any) => { | ||||
|               let str =q.replace(/^\s+|\s+$/g,""); | ||||
|               if (str) { | ||||
| @ -272,20 +282,39 @@ export class OrderManagementReceiptsAuditComponent implements OnInit { | ||||
|             } | ||||
|           } as SFSelectWidgetSchema | ||||
|         }, | ||||
|         settlementBasis: { | ||||
|           title: '装卸凭证', | ||||
|         billStatus: { | ||||
|           title: '运输状态', | ||||
|           type: 'string', | ||||
|           default: '', | ||||
|           ui: { | ||||
|             widget: 'dict-select', | ||||
|             params: { dictKey: 'bill:status' }, | ||||
|             containsAllLabel: true, | ||||
|             params: { dictKey: 'goodresource:settlement:type' }, | ||||
|             containAllLable: true, | ||||
|             visibleIf: { | ||||
|               _$expand: (value: boolean) => value | ||||
|             } | ||||
|           } as SFSelectWidgetSchema | ||||
|         }, | ||||
|         loadingDocuments: { | ||||
|           type: 'string', | ||||
|           title: '装卸货凭证', | ||||
|           enum:[  | ||||
|             {label: '全部',value: ''}, | ||||
|             {label: '无装卸货凭证',value: '1'}, | ||||
|             {label: '装卸货凭证齐全',value: '2'}, | ||||
|             {label: '只有装货凭证',value: '3'}, | ||||
|             {label: '只有卸货凭证',value: '4'}, | ||||
|           ], | ||||
|           ui: { | ||||
|             widget: 'select', | ||||
|             placeholder: '请选择', | ||||
|             allowClear: true, | ||||
|             visibleIf: { | ||||
|               _$expand: (value: boolean) => value | ||||
|             }, | ||||
|           } | ||||
|         }, | ||||
|       }, | ||||
|       type: 'object' | ||||
|     }; | ||||
|     this.ui = { '*': { spanLabelFixed: 110, grid: { span: 8, gutter: 4 } } }; | ||||
|  | ||||
| @ -4,7 +4,7 @@ | ||||
|  * @Author       : Shiming | ||||
|  * @Date         : 2021-12-16 10:19:08 | ||||
|  * @LastEditors  : Shiming | ||||
|  * @LastEditTime : 2022-03-23 19:12:19 | ||||
|  * @LastEditTime : 2022-03-24 14:12:14 | ||||
|  * @FilePath     : \\tms-obc-web\\src\\app\\routes\\order-management\\components\\risk-detail\\risk-detail.component.html | ||||
|  * Copyright (C) 2022 huzhenhong. All rights reserved. | ||||
| --> | ||||
| @ -21,7 +21,7 @@ | ||||
|     <sv label="申诉状态"> | ||||
|       <span >{{i?.representationsStatusLabel}}</span> | ||||
|     </sv> | ||||
|     <sv label="承运司机">{{i?.driverName ? i?.driverName + '/': ''}} {{i?.driverPhone ?i?.driverPhone + '/': '' }}  {{i?.carId}}</sv> | ||||
|     <sv label="承运司机">{{i?.driverName ? i?.driverName + '/': ''}} {{i?.driverPhone ?i?.driverPhone + '/': '' }}  {{i?.carNo}}</sv> | ||||
|     <sv label="车队长"> {{i?.carCaptainName ? i?.carCaptainName+ '/' : ''}}{{i?.carCaptainPhone}} </sv> | ||||
|     <sv label="装货时间">{{i?.loadTime}}</sv> | ||||
|     <sv label="卸货时间">{{i?.unloadTime}}</sv> | ||||
|  | ||||
| @ -4,7 +4,7 @@ | ||||
|  * @Author       : Shiming | ||||
|  * @Date         : 2022-01-12 10:52:50 | ||||
|  * @LastEditors  : Shiming | ||||
|  * @LastEditTime : 2022-03-23 19:45:45 | ||||
|  * @LastEditTime : 2022-03-24 19:53:19 | ||||
|  * @FilePath     : \\tms-obc-web\\src\\app\\routes\\order-management\\components\\risk\\risk.component.html | ||||
|  * Copyright (C) 2022 huzhenhong. All rights reserved. | ||||
| --> | ||||
| @ -65,7 +65,13 @@ | ||||
|       [loading]="false" | ||||
|     > | ||||
|       <ng-template st-row="billCode" let-item let-index="index"> | ||||
|         <a [routerLink]="'/order-management/risk-detail/' + item.id">{{ item?.billCode }}</a> | ||||
|         <a  [routerLink]="'/order-management/risk-detail/' + item.id">{{ item.billCode }}</a> | ||||
|         <div> | ||||
|           <span>{{ item?.representationsStatusLabel }}</span> | ||||
|         </div> | ||||
|         <div> | ||||
|           <span >{{item?.billTypeLabel}}{{item?.billTypeLabel === item?.serviceTypeLabel ? '' : item?.serviceTypeLabel}}</span> | ||||
|         </div> | ||||
|       </ng-template> | ||||
|       <ng-template st-row="timeer" let-item let-index="index"> | ||||
|         <p>创建时间:{{ item?.createTime }}</p> | ||||
|  | ||||
| @ -4,7 +4,7 @@ | ||||
|  * @Author       : Shiming | ||||
|  * @Date         : 2021-12-30 14:45:39 | ||||
|  * @LastEditors  : Shiming | ||||
|  * @LastEditTime : 2022-01-18 17:23:11 | ||||
|  * @LastEditTime : 2022-03-24 10:28:48 | ||||
|  * @FilePath     : \\tms-obc-web\\src\\app\\routes\\order-management\\modal\\vehicle\\modify-captain\\modify-captain.component.ts | ||||
|  * Copyright (C) 2022 huzhenhong. All rights reserved. | ||||
|  */ | ||||
| @ -96,7 +96,7 @@ export class VehicleModifyCaptainComponent implements OnInit { | ||||
|     console.log(this.bankData); | ||||
|     const params = { | ||||
|       billIds: this.data?.ids, | ||||
|       carCaptainId: value.id, | ||||
|       carCaptainId: value.appUserId, | ||||
|       bankData: this.bankData | ||||
|     }; | ||||
|     this.service.request(this.service.$api_get_updateCarCaptainBatch, params).subscribe((res: any) => { | ||||
|  | ||||
| @ -4,7 +4,7 @@ | ||||
|  * @Author       : Shiming | ||||
|  * @Date         : 2021-12-15 13:17:42 | ||||
|  * @LastEditors  : Shiming | ||||
|  * @LastEditTime : 2022-02-24 10:47:39 | ||||
|  * @LastEditTime : 2022-03-24 19:17:58 | ||||
|  * @FilePath     : \\tms-obc-web\\src\\app\\routes\\order-management\\modal\\vehicle\\update-freight\\update-freight.component.html | ||||
|  * Copyright (C) 2022 huzhenhong. All rights reserved. | ||||
| --> | ||||
| @ -20,7 +20,7 @@ | ||||
|   </p> | ||||
|   <p> | ||||
|     <label nz-checkbox [(ngModel)]="aggreechecked"></label> | ||||
|     <span> 确认已阅读并知晓 <a target="_blank" [routerLink]="['/agreement']" [queryParams]="{ type: 11 }">《变更协议》</a></span> | ||||
|     <span> 确认已阅读并知晓 <a target="_blank" [routerLink]="['/agreement']" [queryParams]="{ type: 3, data:  dataJSON }">《变更协议》</a></span> | ||||
|   </p> | ||||
| </div> | ||||
|  | ||||
|  | ||||
| @ -4,7 +4,7 @@ | ||||
|  * @Author       : Shiming | ||||
|  * @Date         : 2021-12-15 13:17:42 | ||||
|  * @LastEditors  : Shiming | ||||
|  * @LastEditTime : 2022-02-23 14:25:45 | ||||
|  * @LastEditTime : 2022-03-24 19:17:10 | ||||
|  * @FilePath     : \\tms-obc-web\\src\\app\\routes\\order-management\\modal\\vehicle\\update-freight\\update-freight.component.ts | ||||
|  * Copyright (C) 2022 huzhenhong. All rights reserved. | ||||
|  */ | ||||
| @ -30,12 +30,16 @@ export class VehicleUpdateFreightComponent implements OnInit { | ||||
|   @Input() | ||||
|   data: any; | ||||
|  | ||||
|   dataJSON: any; | ||||
|  | ||||
|   calculateSub!: Subscription; | ||||
|  | ||||
|   constructor(private modal: NzModalRef, private msgSrv: NzMessageService, public service: OrderManagementService) {} | ||||
|  | ||||
|   ngOnInit(): void { | ||||
|     console.log(this.data) | ||||
|     this.dataJSON = JSON.stringify(this.data) | ||||
|     console.log(this.dataJSON) | ||||
|     this.initSF(this.data); | ||||
|   } | ||||
|   initSF(data: any) { | ||||
|  | ||||
| @ -11,13 +11,13 @@ | ||||
|       <b class="text-md ">{{headerTotalInfo?.ltdName}}</b> | ||||
|     </sv> | ||||
|     <sv label="可用余额"> | ||||
|       {{headerTotalInfo?.allAmount |currency}} | ||||
|       <span class="text-error-dark font-weight-bold">{{headerTotalInfo?.allAmount |currency}}</span> | ||||
|     </sv> | ||||
|     <sv label="收入金额"> | ||||
|       {{headerTotalInfo?.incomeAmount |currency}} | ||||
|       <span class="text-error-dark font-weight-bold"> {{headerTotalInfo?.incomeAmount |currency}}</span> | ||||
|     </sv> | ||||
|     <sv label="支出金额"> | ||||
|       {{headerTotalInfo?.payAmount |currency}} | ||||
|       <span class="text-error-dark font-weight-bold">{{headerTotalInfo?.payAmount |currency}}</span> | ||||
|     </sv> | ||||
|   </sv-container> | ||||
|   <ng-template #labelTpl> | ||||
|  | ||||
| @ -59,7 +59,7 @@ export class PartnerAccountManagementListComponent implements OnInit { | ||||
|  */ | ||||
|   initST() { | ||||
|     this.columns = [ | ||||
|       { title: '合伙人名称', index: 'userName', className: 'text-center', width: 250 }, | ||||
|       { title: '合伙人名称', index: 'name', className: 'text-center', width: 250 }, | ||||
|       { title: '手机号', index: 'phone', className: 'text-center', width: 200 }, | ||||
|       { | ||||
|         title: '账户总额(元)', index: 'allBalance', className: 'text-right', sort: true, width: 150, type: 'currency', | ||||
|  | ||||
| @ -8,23 +8,27 @@ | ||||
| <nz-card> | ||||
|   <sv-container layout="vertical" [noColon]="true" col="5"> | ||||
|     <sv [label]="labelTpl"> | ||||
|       <b class="text-md ">{{summaryObj?.company}}</b> | ||||
|       <b class="text-md ">{{summaryObj?.taxno}}</b> | ||||
|     </sv> | ||||
|     <sv label="返佣总额"> | ||||
|       {{summaryObj?.totalRebate |currency}} | ||||
|       <span class="text-error-dark font-weight-bold">{{(summaryObj?.totalRebate?summaryObj?.totalRebate: 0 )|currency :' | ||||
|         '}}</span> | ||||
|     </sv> | ||||
|     <sv label="已入账金额"> | ||||
|       {{summaryObj?.totalRebate |currency}} | ||||
|       <span class="text-error-dark font-weight-bold">{{(summaryObj?.recordedAmount?summaryObj?.recordedAmount:0 | ||||
|         )|currency:' '}}</span> | ||||
|     </sv> | ||||
|     <sv label="代缴个税"> | ||||
|       {{summaryObj?.taxPersonalSum |currency}} | ||||
|       <span class="text-error-dark font-weight-bold">{{(summaryObj?.taxPersonalSum?summaryObj?.taxPersonalSum:0 | ||||
|         )|currency:' '}}</span> | ||||
|     </sv> | ||||
|     <sv label="待入账金额"> | ||||
|       {{summaryObj?.waitRecordedAmount |currency}} | ||||
|       <span class="text-error-dark font-weight-bold">{{(summaryObj?.waitRecordedAmount?summaryObj?.waitRecordedAmount:0) | ||||
|         |currency:' '}}</span> | ||||
|     </sv> | ||||
|   </sv-container> | ||||
|   <ng-template #labelTpl> | ||||
|     <b class="text-md" style="color: black;">{{summaryObj?.name}}</b> | ||||
|     <b class="text-md" style="color: black;">{{summaryObj?.ltdName}}</b> | ||||
|   </ng-template> | ||||
| </nz-card> | ||||
| <nz-card> | ||||
| @ -43,11 +47,11 @@ | ||||
|       </ng-template> | ||||
|     </st> | ||||
|     <div class="total-footer text-md" *ngIf="st?.list?.length !== 0 "> | ||||
|       合计 <label class="text-red-dark">{{ summaryObj?.total }}</label> 项,收入 <label | ||||
|       合计 <label class="text-red-dark">{{ footerSummary?.total }}</label> 项,收入 <label | ||||
|         class="text-red-dark font-weight-bold">{{ | ||||
|         summaryObj?.income | currency | ||||
|         footerSummary?.income | currency | ||||
|         }}</label>,支出 <label class="text-red-dark font-weight-bold">{{ | ||||
|         summaryObj?.spending | currency }}</label> | ||||
|         footerSummary?.spending | currency }}</label> | ||||
|     </div> | ||||
|   </div> | ||||
| </nz-card> | ||||
| @ -55,8 +59,8 @@ | ||||
| <nz-modal [(nzVisible)]="showBillDetail" nzTitle="账户明细" [nzFooter]="null" (nzOnCancel)="handleCancel()" nzWidth="700px"> | ||||
|   <div *nzModalContent> | ||||
|     <div class="mb-sm"> | ||||
|       <span class="mr-xxl text-md font-weight-bold"><label>网络货运人:</label>{{detailRecord?.ltdName}}</span> | ||||
|       <span class="text-md font-weight-bold"><label>返佣总额(元):</label>{{detailRecord?.totalRebate |currency: ' '}}</span> | ||||
|       <span class="mr-xxl text-sm font-weight-bold"><label>网络货运人:</label>{{detailRecord?.ltdName}}</span> | ||||
|       <span class="text-sm font-weight-bold"><label>返佣总额(元):</label>{{detailRecord?.totalRebate |currency: ' '}}</span> | ||||
|     </div> | ||||
|     <st #st [data]="billDetailList " [columns]="billDetailColumns" [res]="{ reName: { list: 'data' } }" | ||||
|       [req]="{ method: 'POST', allInBody: true, params:billDetailReqParams}" [page]="{show:false}"> | ||||
|  | ||||
| @ -19,6 +19,12 @@ export class PartnerAccountManagementRecordedDetailComponent implements OnInit { | ||||
|     taxno: '' | ||||
|   }; | ||||
|  | ||||
|   footerSummary = { | ||||
|     total: 0, | ||||
|     income: 0, | ||||
|     spending: 0 | ||||
|   } | ||||
|  | ||||
|   detailRecord: any = {}; | ||||
|  | ||||
|   url = `/user`; | ||||
| @ -56,8 +62,7 @@ export class PartnerAccountManagementRecordedDetailComponent implements OnInit { | ||||
|   initSF() { | ||||
|     this.schema = { | ||||
|       properties: { | ||||
|  | ||||
|         abnormalCause: { | ||||
|         ltdName: { | ||||
|           title: '网络货运人', | ||||
|           type: 'string', | ||||
|           ui: { | ||||
| @ -78,7 +83,7 @@ export class PartnerAccountManagementRecordedDetailComponent implements OnInit { | ||||
|       { title: '网络货运人', index: 'ltdName', className: 'text-center', width: 200 }, | ||||
|       { title: '银行类型', render: 'bankTypeLabel', className: 'text-center', width: 150 }, | ||||
|       { title: '虚拟账户', render: 'fictitiousAccount', className: 'text-center', width: 200 }, | ||||
|       { title: '返佣总额(元)', index: 'totalRebate', className: 'text-center', width: 120, type: 'currency' }, | ||||
|       { title: '返佣总额(元)', index: 'totalRebate', className: 'text-center', width: 180, type: 'currency' }, | ||||
|       { title: '已入账金额(元)', index: 'recordedAmount', className: 'text-center', width: 180, type: 'currency' }, | ||||
|       { title: '代缴个税(元)', index: 'taxPersonalSum', className: 'text-center', width: 180, type: 'currency' }, | ||||
|       { title: '待入账金额(元)', index: 'waitRecordedAmount', className: 'text-right', width: 180, type: 'currency' }, | ||||
| @ -146,7 +151,7 @@ export class PartnerAccountManagementRecordedDetailComponent implements OnInit { | ||||
|  * @param record 当前行 | ||||
|  */ | ||||
|   viewBookedRecord(record: any) { | ||||
|     window.open(location.origin + `#/partner/recorded/record?ltdId=${record?.ltdId}&userId=${record?.userId}&userIdLabel=${record?.banktypeLabel}`); | ||||
|     window.open(location.origin + `#/partner/recorded/record?ltdId=${record?.ltdId}`); | ||||
|   } | ||||
|  | ||||
|   /** | ||||
| @ -157,6 +162,7 @@ export class PartnerAccountManagementRecordedDetailComponent implements OnInit { | ||||
|     this.billDetailColumns = []; | ||||
|     this.showBillDetail = true; | ||||
|     this.initBillDetailST(); | ||||
|     this.detailRecord = record; | ||||
|     this.getBillDetail(record?.ltdId); | ||||
|   } | ||||
|  | ||||
| @ -170,6 +176,7 @@ export class PartnerAccountManagementRecordedDetailComponent implements OnInit { | ||||
|  | ||||
|   handleCancel() { | ||||
|     this.showBillDetail = false; | ||||
|     this.detailRecord = {}; | ||||
|  | ||||
|   } | ||||
|   goBack() { | ||||
|  | ||||
| @ -43,8 +43,6 @@ export class PartnerRecordedRecordComponent implements OnInit { | ||||
|  | ||||
|   constructor(public service: RecordedService, private nzModalService: NzModalService, | ||||
|     private router: Router, public ar: ActivatedRoute, public shipperSrv: ShipperBaseService) { | ||||
|  | ||||
|     this.accountName = this.ar.snapshot.queryParams?.userIdLabel || ''; | ||||
|     this.ltdId = this.ar.snapshot.queryParams?.ltdId || ''; | ||||
|  | ||||
|   } | ||||
|  | ||||
| @ -1,3 +1,13 @@ | ||||
| /* | ||||
|  * @Description  :  | ||||
|  * @Version      : 1.0 | ||||
|  * @Author       : Shiming | ||||
|  * @Date         : 2022-03-14 14:17:38 | ||||
|  * @LastEditors  : Shiming | ||||
|  * @LastEditTime : 2022-03-24 19:19:17 | ||||
|  * @FilePath     : \\tms-obc-web\\src\\app\\routes\\passport\\components\\order-agreement\\order-agreement.component.ts | ||||
|  * Copyright (C) 2022 huzhenhong. All rights reserved. | ||||
|  */ | ||||
| import { Component, OnInit } from '@angular/core'; | ||||
| import { ActivatedRoute, Params } from '@angular/router'; | ||||
| import { PassportService } from '../../services/passport.service'; | ||||
| @ -10,16 +20,31 @@ import { PassportService } from '../../services/passport.service'; | ||||
| export class OrderAgreementComponent implements OnInit { | ||||
|   agreementContent: any; | ||||
|   type = 2; | ||||
|   data : any; | ||||
|   constructor(private ar: ActivatedRoute, private service: PassportService) { | ||||
|     ar.queryParams.subscribe((params: Params) => { | ||||
|       this.type = params.type || 2; | ||||
|       console.log(params); | ||||
|        | ||||
|       this.type = params?.type || 2; | ||||
|       this.data = JSON.parse(params?.data) || {}; | ||||
|     }); | ||||
|   } | ||||
|   ngOnInit() { | ||||
|     console.log(this.type); | ||||
|     if(this.type == 3) { | ||||
|       console.log(this.data); | ||||
|        | ||||
|       this.service.request(this.service.$api_get_getSupplementaryAgreement, { billId: this.data?.billId, billCode: this.data?.billCode }).subscribe(res => { | ||||
|         if (res) { | ||||
|           this.agreementContent = res; | ||||
|         } | ||||
|       }); | ||||
|     } else { | ||||
|       this.service.request(this.service.$api_get_agreement, { type: this.type }).subscribe(res => { | ||||
|         if (res) { | ||||
|           this.agreementContent = res; | ||||
|         } | ||||
|       }); | ||||
|     } | ||||
|   } | ||||
| } | ||||
|  | ||||
| @ -4,7 +4,7 @@ | ||||
|  * @Author       : Shiming | ||||
|  * @Date         : 2021-12-27 21:08:36 | ||||
|  * @LastEditors  : Shiming | ||||
|  * @LastEditTime : 2022-01-18 17:24:52 | ||||
|  * @LastEditTime : 2022-03-24 09:59:50 | ||||
|  * @FilePath     : \\tms-obc-web\\src\\app\\routes\\passport\\services\\passport.service.ts | ||||
|  * Copyright (C) 2022 huzhenhong. All rights reserved. | ||||
|  */ | ||||
| @ -17,6 +17,8 @@ import { BaseService } from 'src/app/shared/services/core/base.service'; | ||||
| export class PassportService extends BaseService { | ||||
|   // 登录协议,服务订购协议 | ||||
|   public $api_get_agreement = `/api/mdc/pbc/agreementInfo/getAgreementInfoByType?_allow_anonymous=true`; | ||||
|   // 查看补充协议 | ||||
|   public $api_get_getSupplementaryAgreement = `/api/sdc/billOperate/getSupplementaryAgreement?_allow_anonymous=true`; | ||||
|   // 未登录账号发送验证码 | ||||
|   public $getAccountSMVerificationCode = `/api/mdc/cuc/userBasicInfo/forgetPassword/getAccountSMVerificationCode?_allow_anonymous=true`; | ||||
|   constructor(public injector: Injector) { | ||||
|  | ||||
| @ -2,16 +2,16 @@ | ||||
|  * @Description  :  | ||||
|  * @Version      : 1.0 | ||||
|  * @Author       : Shiming | ||||
|  * @Date         : 2021-12-21 10:58:48 | ||||
|  * @Date         : 2022-03-14 14:17:38 | ||||
|  * @LastEditors  : Shiming | ||||
|  * @LastEditTime : 2022-01-18 17:26:52 | ||||
|  * @LastEditTime : 2022-03-24 19:31:03 | ||||
|  * @FilePath     : \\tms-obc-web\\src\\app\\routes\\supply-management\\components\\add-driver\\add-driver.component.html | ||||
|  * Copyright (C) 2022 huzhenhong. All rights reserved. | ||||
| --> | ||||
|  | ||||
| <div class="modal-header"> | ||||
|   <div class="modal-title">添加司机</div> | ||||
| </div> | ||||
| <!-- <nz-spin *ngIf="!i" class="modal-spin"></nz-spin> --> | ||||
| <div class="sfBox"> | ||||
|   <sf #sf [compact]="true" [ui]="ui" [schema]="schema" [button]="'none'" *ngIf="schema"> | ||||
|       <ng-template sf-template="tipsA" let-me let-ui="ui" let-schema="schema"> | ||||
| @ -33,24 +33,30 @@ | ||||
|           </div> | ||||
|       </ng-template> | ||||
|   </sf> | ||||
|   <sf #sf1 [compact]="true" [ui]="ui" [schema]="schema1" [button]="'none'" *ngIf="schema1"> </sf> | ||||
|   <sf #sf2 [compact]="true" [ui]="ui" [schema]="schema2" [button]="'none'" *ngIf="schema2"> </sf> | ||||
|   <img class="drivercard" height="104" src="/assets/images/drivercard.png" /> | ||||
|   <img class="jopcard" height="104" src="/assets/images/jopcard.png" /> | ||||
|   <sf #sf1 [compact]="true" [ui]="ui2" [schema]="schema1" [button]="'none'" *ngIf="schema1"> | ||||
|       <ng-template sf-template="roadImg" let-me let-ui="ui" let-schema="schema"> | ||||
|           <img height="104" src="/assets/images/drivercard.png" class="borderImg" /> | ||||
|       </ng-template> | ||||
|   </sf> | ||||
|   <sf #sf2 [compact]="true" [ui]="ui3" [schema]="schema2" [button]="'none'" *ngIf="schema2"> | ||||
|       <ng-template sf-template="agreeImg" let-me let-ui="ui" let-schema="schema"> | ||||
|           <img height="104" src="/assets/images/jopcard.png" class="borderImg" /> | ||||
|       </ng-template> | ||||
|   </sf> | ||||
|   <!-- <div class="example" (click)="showExample()"> | ||||
|     查看示例 | ||||
|     <div class="popBox" *ngIf="showCardFlag"> | ||||
|         <img src="https://ng.ant.design/assets/img/logo.svg" alt=""> | ||||
|     </div> | ||||
|   </div> | ||||
|   <div class="example positionSet" (click)="showJopExample()"> | ||||
| </div> | ||||
| <div class="example positionSet" (click)="showJopExample()"> | ||||
|     查看示例 | ||||
|     <div class="popBox" *ngIf="showJopFlag"> | ||||
|         <img src="https://ng.ant.design/assets/img/logo.svg" alt=""> | ||||
|     </div> | ||||
|   </div> --> | ||||
| </div> --> | ||||
| </div> | ||||
| <div class="modal-footer"> | ||||
|   <button nz-button type="button" (click)="close()">关闭</button> | ||||
|   <button nz-button type="button" nzType="primary" (click)="submitForm()">确定</button> | ||||
|   <button nz-button type="button" nzType="primary" (click)="submitForm()" [disabled]="!(sf?.valid && sf1?.valid && sf2?.valid)" [nzLoading]="service.http.loading">确定</button> | ||||
| </div> | ||||
| @ -1,14 +1,18 @@ | ||||
| .sfBox{ | ||||
|   position: relative; | ||||
| } | ||||
| .pr { | ||||
|   position: relative; | ||||
|   } | ||||
| } | ||||
|  | ||||
|   .pa { | ||||
| .pa { | ||||
|   position: absolute; | ||||
|   top: 35px; | ||||
|   left: 150px; | ||||
|   } | ||||
|   img{border: solid 1px #ebf0fb;} | ||||
| } | ||||
|  | ||||
|   .tips { | ||||
| .tips { | ||||
|   display: flex; | ||||
|   margin-bottom: 0; | ||||
|   color: #333; | ||||
| @ -22,4 +26,32 @@ | ||||
|     margin-bottom: 0; | ||||
|     text-align: center; | ||||
|   } | ||||
| } | ||||
| .drivercard{ | ||||
|   position: absolute; | ||||
|   top: 620px; | ||||
|   left: 330px; | ||||
|   border: solid 1px #ebf0fb; | ||||
| } | ||||
| .jopcard{ | ||||
|   position: absolute; | ||||
|   top: 1034px; | ||||
|   left: 330px; | ||||
|   border: solid 1px #ebf0fb; | ||||
| } | ||||
| :host{ | ||||
|   ::ng-deep { | ||||
|     .ant-input-borderless{ | ||||
|       padding: 0; | ||||
|       padding-top: 4px; | ||||
|       color: black; | ||||
|       resize:none; | ||||
|     } | ||||
|     .setCustom .ant-form-item-control{ | ||||
|       margin-left: -100px !important | ||||
|     } | ||||
|     .borderImg{ | ||||
|       border: solid 1px #ebf0fb; | ||||
|     } | ||||
|   } | ||||
| } | ||||
| @ -4,11 +4,12 @@ import { cacheConf } from '@conf/cache.conf'; | ||||
| import { SFComponent, SFUISchema, SFSchema, SFUploadWidgetSchema, SFDateWidgetSchema } from '@delon/form'; | ||||
| import { _HttpClient } from '@delon/theme'; | ||||
| import { EACacheService, EAEnvironmentService } from '@shared'; | ||||
| import { AnyRecord } from 'dns'; | ||||
| import { NzModalRef } from 'ng-zorro-antd/modal'; | ||||
| import { Observable, Observer } from 'rxjs'; | ||||
| import { NzUploadFile } from 'ng-zorro-antd/upload'; | ||||
| import { Observable, Observer, of } from 'rxjs'; | ||||
| import { map } from 'rxjs/operators'; | ||||
| import { SupplyManagementService } from '../../services/supply-management.service'; | ||||
|  | ||||
| @Component({ | ||||
|   selector: 'app-car-add-driver', | ||||
|   templateUrl: './add-driver.component.html', | ||||
| @ -21,6 +22,8 @@ export class CarAddDriverComponent implements OnInit { | ||||
|   record: any = {}; | ||||
|   i: any; | ||||
|   ui: SFUISchema = {}; | ||||
|   ui2: SFUISchema = {}; | ||||
|   ui3: SFUISchema = {}; | ||||
|   schema: SFSchema = {}; | ||||
|   schema1: SFSchema = {}; | ||||
|   schema2: SFSchema = {}; | ||||
| @ -32,17 +35,18 @@ export class CarAddDriverComponent implements OnInit { | ||||
|     userPracticeSeniorityDTO: {} | ||||
|   }; | ||||
|   companyData: any = {}; | ||||
|   mobile = ''; | ||||
|   mobile = '' | ||||
|   checked = false | ||||
|   constructor( | ||||
|     private modal: NzModalRef, | ||||
|     public service: SupplyManagementService, | ||||
|     private envSrv: EAEnvironmentService, | ||||
|     private eaCacheSrv: EACacheService | ||||
|   ) {} | ||||
|     private eaCacheSrv: EACacheService, | ||||
|   ) { } | ||||
|  | ||||
|   ngOnInit(): void { | ||||
|     this.companyData = this.eaCacheSrv.get(cacheConf.env); | ||||
|     this.initSF(); | ||||
|     this.companyData = this.eaCacheSrv.get(cacheConf.env) | ||||
|     this.initSF() | ||||
|   } | ||||
|   initSF() { | ||||
|     this.schema = { | ||||
| @ -51,36 +55,37 @@ export class CarAddDriverComponent implements OnInit { | ||||
|           title: '司机信息(必填)', | ||||
|           type: 'string', | ||||
|           ui: { | ||||
|             widget: 'text' | ||||
|             widget: 'text', | ||||
|           }, | ||||
|           default: '照片上传后会自动识别文字并填充下列内容栏' | ||||
|         }, | ||||
|         mobile: { | ||||
|           title: '手机号', | ||||
|           type: 'string', | ||||
|           format: 'email', | ||||
|           maxLength: 11, | ||||
|           ui: { | ||||
|             widget: 'text' | ||||
|             widget: '',  | ||||
|           }, | ||||
|           default: this.mobile | ||||
|         }, | ||||
|         showName: { | ||||
|           title: '身份证照片', | ||||
|           type: 'string', | ||||
|           readOnly: true, | ||||
|           ui: { | ||||
|             widget: 'text', | ||||
|             showRequired: true | ||||
|             widget: 'textarea', | ||||
|             borderless:true, | ||||
|             showRequired: true, | ||||
|           }, | ||||
|           default: '请上传身份证原件的高清照片,若上传复印件,则需加盖公司印章及法人签字;上传后系统会自动识别并填写' | ||||
|           default: '请上传身份证原件的高清照片,若上传复印件,则需加盖公司印章及法人签字;上传后系统会自动识别并填写', | ||||
|         }, | ||||
|         tipsA: { | ||||
|           title: '', | ||||
|           type: 'string', | ||||
|           ui: { | ||||
|             widget: 'custom', | ||||
|             offsetControl: 6 | ||||
|           } | ||||
|             offsetControl: 6, | ||||
|           }, | ||||
|         }, | ||||
|         certificatePhotoFrontWatermark: { | ||||
|           type: 'string', | ||||
| @ -88,7 +93,7 @@ export class CarAddDriverComponent implements OnInit { | ||||
|           ui: { | ||||
|             offsetControl: 6, | ||||
|             action: apiConf.fileUpload, | ||||
|             fileType: 'image/png,image/jpeg,image/jpg,image/gif', | ||||
|             accept: 'image/png,image/jpeg,image/jpg,image/gif', | ||||
|             limit: 1, | ||||
|             limitFileCount: 1, | ||||
|             resReName: 'data.fullFileWatermarkPath', | ||||
| @ -96,18 +101,20 @@ export class CarAddDriverComponent implements OnInit { | ||||
|             widget: 'upload', | ||||
|             descriptionI18n: '图片支持jpg、jpeg、png、gif格式,大小不超过2M', | ||||
|             data: { | ||||
|               appId: this.envSrv.env.appId | ||||
|               appId: this.envSrv.env.appId, | ||||
|             }, | ||||
|             name: 'multipartFile', | ||||
|             multiple: false, | ||||
|             listType: 'picture-card', | ||||
|             change: args => { | ||||
|             change: (args: any) => { | ||||
|               if (args.type === 'success') { | ||||
|                 this.detailData.certificatePhotoFront = args.file.response.data.fullFilePath; | ||||
|                 this.detailData.certificatePhotoFront = args.file.response.data.fullFilePath | ||||
|                 this.checkIdCard(args.file.response.data.fullFilePath, 'front', 0); | ||||
|               } else { | ||||
|                 this.detailData.certificatePhotoFront = '' | ||||
|               } | ||||
|             }, | ||||
|             beforeUpload: (file: any, _fileList) => { | ||||
|             beforeUpload: (file: any, _fileList: any) => { | ||||
|               return new Observable((observer: Observer<boolean>) => { | ||||
|                 const isLt2M = file.size / 1024 / 1024 < 2; | ||||
|                 if (!isLt2M) { | ||||
| @ -118,16 +125,17 @@ export class CarAddDriverComponent implements OnInit { | ||||
|                 observer.next(isLt2M); | ||||
|                 observer.complete(); | ||||
|               }); | ||||
|             } | ||||
|           } as SFUploadWidgetSchema | ||||
|             }, | ||||
|             previewFile: (file: NzUploadFile) => of(file.url), | ||||
|           }, | ||||
|         }, | ||||
|         tipsB: { | ||||
|           title: '', | ||||
|           type: 'string', | ||||
|           ui: { | ||||
|             widget: 'custom', | ||||
|             offsetControl: 6 | ||||
|           } | ||||
|             offsetControl: 6, | ||||
|           }, | ||||
|         }, | ||||
|         certificatePhotoBackWatermark: { | ||||
|           type: 'string', | ||||
| @ -135,7 +143,7 @@ export class CarAddDriverComponent implements OnInit { | ||||
|           ui: { | ||||
|             offsetControl: 6, | ||||
|             action: apiConf.fileUpload, | ||||
|             fileType: 'image/png,image/jpeg,image/jpg,image/gif', | ||||
|             accept: 'image/png,image/jpeg,image/jpg,image/gif', | ||||
|             limit: 1, | ||||
|             limitFileCount: 1, | ||||
|             resReName: 'data.fullFileWatermarkPath', | ||||
| @ -143,18 +151,20 @@ export class CarAddDriverComponent implements OnInit { | ||||
|             widget: 'upload', | ||||
|             descriptionI18n: '图片支持jpg、jpeg、png、gif格式,大小不超过2M', | ||||
|             data: { | ||||
|               appId: this.envSrv.env.appId | ||||
|               appId: this.envSrv.env.appId, | ||||
|             }, | ||||
|             name: 'multipartFile', | ||||
|             multiple: false, | ||||
|             listType: 'picture-card', | ||||
|             change: args => { | ||||
|             change: (args: any) => { | ||||
|               if (args.type === 'success') { | ||||
|                 this.detailData.certificatePhotoBack = args.file.response.data.fullFilePath; | ||||
|                 this.detailData.certificatePhotoBack = args.file.response.data.fullFilePath | ||||
|                 this.checkIdCard(args.file.response.data.fullFilePath, 'back', 0); | ||||
|               } else { | ||||
|                 this.detailData.certificatePhotoBack = '' | ||||
|               } | ||||
|             }, | ||||
|             beforeUpload: (file: any, _fileList) => { | ||||
|             beforeUpload: (file: any, _fileList: any) => { | ||||
|               return new Observable((observer: Observer<boolean>) => { | ||||
|                 const isLt2M = file.size / 1024 / 1024 < 2; | ||||
|                 if (!isLt2M) { | ||||
| @ -165,8 +175,8 @@ export class CarAddDriverComponent implements OnInit { | ||||
|                 observer.next(isLt2M); | ||||
|                 observer.complete(); | ||||
|               }); | ||||
|             } | ||||
|           } as SFUploadWidgetSchema | ||||
|             }, | ||||
|            previewFile: (file: NzUploadFile) => of(file.url),} | ||||
|         }, | ||||
|         name: { | ||||
|           title: '姓名', | ||||
| @ -174,8 +184,8 @@ export class CarAddDriverComponent implements OnInit { | ||||
|           maxLength: 32, | ||||
|           ui: { | ||||
|             widget: '', | ||||
|             placeholder: '请输入姓名' | ||||
|           } | ||||
|             placeholder: '请输入姓名', | ||||
|           }, | ||||
|         }, | ||||
|         certificateNumber: { | ||||
|           title: '身份证号', | ||||
| @ -187,12 +197,17 @@ export class CarAddDriverComponent implements OnInit { | ||||
|             widget: '', | ||||
|             placeholder: '请输入法定代表人证件号', | ||||
|             errors: { | ||||
|               required: '请输入18位身份证号码' | ||||
|             } | ||||
|           } | ||||
|         } | ||||
|               required: '请输入18位身份证号码', | ||||
|             }, | ||||
|       required: ['certificatePhotoFrontWatermark', 'certificatePhotoBackWatermark', 'name', 'certificateNumber'] | ||||
|           }, | ||||
|         }, | ||||
|       }, | ||||
|       required: [ | ||||
|         'certificatePhotoFrontWatermark', | ||||
|         'certificatePhotoBackWatermark', | ||||
|         'name', | ||||
|         'certificateNumber' | ||||
|       ], | ||||
|     }; | ||||
|     this.schema1 = { | ||||
|       properties: { | ||||
| @ -200,7 +215,7 @@ export class CarAddDriverComponent implements OnInit { | ||||
|           title: '驾驶证信息(必填)', | ||||
|           type: 'string', | ||||
|           ui: { | ||||
|             widget: 'text' | ||||
|             widget: 'text', | ||||
|           }, | ||||
|           default: '照片上传后会自动识别文字并填充下列内容栏' | ||||
|         }, | ||||
| @ -209,7 +224,7 @@ export class CarAddDriverComponent implements OnInit { | ||||
|           title: '驾驶证照片', | ||||
|           ui: { | ||||
|             action: apiConf.fileUpload, | ||||
|             fileType: 'image/png,image/jpeg,image/jpg,image/gif', | ||||
|             accept: 'image/png,image/jpeg,image/jpg,image/gif', | ||||
|             limit: 1, | ||||
|             limitFileCount: 1, | ||||
|             resReName: 'data.fullFileWatermarkPath', | ||||
| @ -217,169 +232,80 @@ export class CarAddDriverComponent implements OnInit { | ||||
|             widget: 'upload', | ||||
|             descriptionI18n: '请上传驾驶证照片,支持JPG、PNG格式,文件小于5M。照片信息缺失、拼凑、过度PS、模糊不清,都不会通过审核。', | ||||
|             data: { | ||||
|               appId: this.envSrv.env.appId | ||||
|               appId: this.envSrv.env.appId, | ||||
|             }, | ||||
|             name: 'multipartFile', | ||||
|             multiple: false, | ||||
|             listType: 'picture-card', | ||||
|             change: args => { | ||||
|             change: (args: any) => { | ||||
|               if (args.type === 'success') { | ||||
|                 this.detailData.userDriverLicenseDTO.certificatePhoto = args.file.response.data.fullFilePath; | ||||
|                 this.detailData.userDriverLicenseDTO.certificatePhoto = args.file.response.data.fullFilePath | ||||
|                 this.checkDriverCard(args.file.response.data.fullFilePath, 'front', 0); | ||||
|               } else { | ||||
|                 this.detailData.userDriverLicenseDTO.certificatePhoto = '' | ||||
|               } | ||||
|             }, | ||||
|             beforeUpload: (file: any, _fileList) => { | ||||
|             beforeUpload: (file: any, _fileList: any) => { | ||||
|               return new Observable((observer: Observer<boolean>) => { | ||||
|                 const isLt4M = file.size / 1024 / 1024 < 4; | ||||
|                 const isLt4M = file.size / 1024 / 1024 < 5; | ||||
|                 if (!isLt4M) { | ||||
|                   this.service.msgSrv.warning('图片大小超过4M!'); | ||||
|                   this.service.msgSrv.warning('图片大小超过5M!'); | ||||
|                   observer.complete(); | ||||
|                   return; | ||||
|                 } | ||||
|                 observer.next(isLt4M); | ||||
|                 observer.complete(); | ||||
|               }); | ||||
|             }, | ||||
|            previewFile: (file: NzUploadFile) => of(file.url),} | ||||
|         }, | ||||
|         roadImg: { | ||||
|           title: '', | ||||
|           type: 'boolean', | ||||
|           // enum: [{ label: '长期', value: true }], | ||||
|           ui: { | ||||
|             widget: 'custom', | ||||
|           } | ||||
|           } as SFUploadWidgetSchema | ||||
|         }, | ||||
|         licenseNo: { | ||||
|           title: '驾驶证号', | ||||
|           type: 'string', | ||||
|           ui: { | ||||
|            // widget: 'text', | ||||
|             placeholder: '请输入' | ||||
|           } | ||||
|            placeholder: '请输入', | ||||
|           }, | ||||
|           // default: this.ar.snapshot.queryParams.licenseNo | ||||
|         }, | ||||
|         driverModel: { | ||||
|           title: '准驾车型', | ||||
|           type: 'string', | ||||
|           enum: [ | ||||
|             { label: 'A1', value: 0 }, | ||||
|             { label: 'B1', value: 1 } | ||||
|           ], | ||||
|           ui: { | ||||
|             // widget: this.detailData.commitFlag !== 0 ? 'text' : '', | ||||
|             placeholder: '请输入' | ||||
|           } | ||||
|         }, | ||||
|         validStartTime: { | ||||
|           title: '法人证件有效开始日期', | ||||
|           type: 'string', | ||||
|           ui: { | ||||
|             widget: 'date', | ||||
|             format: 'yyyy-MM-dd', | ||||
|             placeholder: '请选择', | ||||
|             errors: { | ||||
|               required: '请选择起始日期' | ||||
|             }, | ||||
|             change: i => {} | ||||
|           } as SFDateWidgetSchema | ||||
|         }, | ||||
|         validEndTime: { | ||||
|           title: '法人证件有效开始日期', | ||||
|           type: 'string', | ||||
|           ui: { | ||||
|             widget: 'date', | ||||
|             format: 'yyyy-MM-dd', | ||||
|             placeholder: '请选择', | ||||
|             errors: { | ||||
|               required: '请选择起始日期' | ||||
|             }, | ||||
|             change: i => {} | ||||
|           } as SFDateWidgetSchema | ||||
|         }, | ||||
|         signingOrganization: { | ||||
|           title: '签发机关', | ||||
|           type: 'string', | ||||
|           maxLength: 30, | ||||
|           ui: { | ||||
|             // widget: this.detailData.commitFlag !== 0 ? 'text' : '', | ||||
|             placeholder: '请输入' | ||||
|           } | ||||
|         } | ||||
|       }, | ||||
|       required: ['certificatePhotoWatermark', 'licenseNo', 'driverModel', 'validStartTime', 'validEndTime'] | ||||
|     }; | ||||
|     this.schema2 = { | ||||
|       properties: { | ||||
|         titleC: { | ||||
|           title: '从业资格证(选填)', | ||||
|           type: 'string', | ||||
|           ui: { | ||||
|             widget: 'text' | ||||
|           }, | ||||
|           default: '照片上传后会自动识别文字并填充下列内容栏' | ||||
|         }, | ||||
|         certificatePhotoWatermark: { | ||||
|           type: 'string', | ||||
|           title: '', | ||||
|           ui: { | ||||
|             offsetControl: 6, | ||||
|             action: apiConf.fileUpload, | ||||
|             fileType: 'image/png,image/jpeg,image/jpg,image/gif', | ||||
|             limit: 1, | ||||
|             limitFileCount: 1, | ||||
|             resReName: 'data.fullFileWatermarkPath', | ||||
|             urlReName: 'data.fullFileWatermarkPath', | ||||
|             widget: 'upload', | ||||
|             descriptionI18n: '图片支持jpg、jpeg、png、gif格式,大小不超过5M', | ||||
|             data: { | ||||
|               appId: this.envSrv.env.appId | ||||
|             }, | ||||
|             name: 'multipartFile', | ||||
|             multiple: false, | ||||
|             listType: 'picture-card', | ||||
|             change: args => { | ||||
|               if (args.type === 'success') { | ||||
|                 this.detailData.userPracticeSeniorityDTO.certificatePhoto = args.file.response.data.fullFilePath; | ||||
|                 //this.checkIdCard(args.file.response.data.fullFile, 0, 0); | ||||
|               } | ||||
|             }, | ||||
|             beforeUpload: (file: any, _fileList) => { | ||||
|               return new Observable((observer: Observer<boolean>) => { | ||||
|                 const isLt2M = file.size / 1024 / 1024 < 2; | ||||
|                 if (!isLt2M) { | ||||
|                   this.service.msgSrv.warning('图片大小超过2M!'); | ||||
|                   observer.complete(); | ||||
|                   return; | ||||
|                 } | ||||
|                 observer.next(isLt2M); | ||||
|                 observer.complete(); | ||||
|               }); | ||||
|             } | ||||
|           } as SFUploadWidgetSchema | ||||
|         }, | ||||
|         licenseNo: { | ||||
|           title: '从业资格证号', | ||||
|           type: 'string', | ||||
|           maxLength: 30, | ||||
|           ui: { | ||||
|             // widget: this.detailData.commitFlag !== 0 ? 'text' : '', | ||||
|             placeholder: '请输入' | ||||
|           } | ||||
|         }, | ||||
|         regionCode: { | ||||
|           title: '签发省份', | ||||
|           type: 'string', | ||||
|           ui: { | ||||
|             widget: 'select', | ||||
|             placeholder: '请选择', | ||||
|             asyncData: () => this.getProvinceData() | ||||
|           } as SFDateWidgetSchema | ||||
|             mode: 'multiple', | ||||
|             containsAllLabel: false, | ||||
|             placeholder: '请选择准驾车型',   | ||||
|             asyncData: () =>  | ||||
|               this.service.request(this.service.$api_getDictValue, { dictKey: 'driverModel' }).pipe( | ||||
|                 map((data: any) => { | ||||
|                   return data.map((m: any) => { | ||||
|                     return { label: m.label, value: m.label }; | ||||
|                   }); | ||||
|                 }), | ||||
|               ),         | ||||
|           }, | ||||
|         }, | ||||
|         validStartTime: { | ||||
|           title: '发证日期', | ||||
|           title: '有效期起', | ||||
|           type: 'string', | ||||
|           ui: { | ||||
|             widget: 'date', | ||||
|             format: 'yyyy-MM-dd', | ||||
|             placeholder: '请选择', | ||||
|             errors: { | ||||
|               required: '请选择起始日期' | ||||
|               required: '请选择起始日期', | ||||
|             }, | ||||
|             change: i => {} | ||||
|           } as SFDateWidgetSchema | ||||
|             change: (i) => { }, | ||||
|           } as SFDateWidgetSchema, | ||||
|         }, | ||||
|         validEndTime: { | ||||
|           title: '有效期止', | ||||
| @ -389,67 +315,210 @@ export class CarAddDriverComponent implements OnInit { | ||||
|             format: 'yyyy-MM-dd', | ||||
|             placeholder: '请选择', | ||||
|             errors: { | ||||
|               required: '请选择起始日期' | ||||
|               required: '请选择终止日期', | ||||
|             }, | ||||
|             change: i => {} | ||||
|           } as SFDateWidgetSchema | ||||
|             change: (i) => { }, | ||||
|           } as SFDateWidgetSchema, | ||||
|         }, | ||||
|         signingOrganization: { | ||||
|           title: '签发机关', | ||||
|           type: 'string', | ||||
|           maxLength: 30, | ||||
|           ui: { | ||||
|             // widget: this.detailData.commitFlag !== 0 ? 'text' : '', | ||||
|             placeholder: '请输入', | ||||
|           }, | ||||
|         }, | ||||
|       }, | ||||
|       required: [ | ||||
|         'certificatePhotoWatermark', | ||||
|         'licenseNo', | ||||
|         'driverModel', | ||||
|         'validStartTime', | ||||
|         'validEndTime', | ||||
|       ], | ||||
|     }; | ||||
|     this.schema2 = { | ||||
|       properties: { | ||||
|         titleC: { | ||||
|           title: '从业资格证(选填)', | ||||
|           type: 'string', | ||||
|           ui: { | ||||
|             widget: 'text', | ||||
|           }, | ||||
|           default: '照片上传后会自动识别文字并填充下列内容栏', | ||||
|         }, | ||||
|         certificatePhotoWatermark: { | ||||
|           type: 'string', | ||||
|           title: '', | ||||
|           ui: { | ||||
|             offsetControl: 6, | ||||
|             action: apiConf.fileUpload, | ||||
|             accept: 'image/png,image/jpeg,image/jpg,image/gif', | ||||
|             limit: 1, | ||||
|             limitFileCount: 1, | ||||
|             resReName: 'data.fullFileWatermarkPath', | ||||
|             urlReName: 'data.fullFileWatermarkPath', | ||||
|             widget: 'upload', | ||||
|             descriptionI18n: '图片支持jpg、jpeg、png、gif格式,大小不超过5M', | ||||
|             data: { | ||||
|               appId: this.envSrv.env.appId, | ||||
|             }, | ||||
|             name: 'multipartFile', | ||||
|             multiple: false, | ||||
|             listType: 'picture-card', | ||||
|             change: (args: any) => { | ||||
|               if (args.type === 'success') { | ||||
|                 this.detailData.userPracticeSeniorityDTO.certificatePhoto = args.file.response.data.fullFilePath | ||||
|                 this.checkQualificationCertificate(args.file.response.data.fullFilePath); | ||||
|               } else{ | ||||
|                 this.detailData.userPracticeSeniorityDTO.certificatePhoto = '' | ||||
|               } | ||||
|             }, | ||||
|       required: [] | ||||
|             beforeUpload: (file: any, _fileList: any) => { | ||||
|               return new Observable((observer: Observer<boolean>) => { | ||||
|                 const isLt2M = file.size / 1024 / 1024 < 5; | ||||
|                 if (!isLt2M) { | ||||
|                   this.service.msgSrv.warning('图片大小超过5M!'); | ||||
|                   observer.complete(); | ||||
|                   return; | ||||
|                 } | ||||
|                 observer.next(isLt2M); | ||||
|                 observer.complete(); | ||||
|               }); | ||||
|             }, | ||||
|            previewFile: (file: NzUploadFile) => of(file.url),} | ||||
|         }, | ||||
|         agreeImg: { | ||||
|           title: '', | ||||
|           type: 'boolean', | ||||
|           // enum: [{ label: '长期', value: true }], | ||||
|           ui: { | ||||
|             widget: 'custom', | ||||
|           } | ||||
|         }, | ||||
|         licenseNo: { | ||||
|           title: '从业资格证号', | ||||
|           type: 'string', | ||||
|           maxLength: 30, | ||||
|           ui: { | ||||
|             // widget: this.detailData.commitFlag !== 0 ? 'text' : '', | ||||
|             placeholder: '请输入', | ||||
|           }, | ||||
|         }, | ||||
|         regionCode: { | ||||
|           title: '签发省份', | ||||
|           type: 'string', | ||||
|           ui: { | ||||
|             widget: 'select', | ||||
|             placeholder: '请选择', | ||||
|             asyncData: () => this.getProvinceData(), | ||||
|           } as SFDateWidgetSchema, | ||||
|         }, | ||||
|         validStartTime: { | ||||
|           title: '发证日期', | ||||
|           type: 'string', | ||||
|           ui: { | ||||
|             widget: 'date', | ||||
|             format: 'yyyy-MM-dd', | ||||
|             placeholder: '请选择', | ||||
|             errors: { | ||||
|               required: '请选择起始日期', | ||||
|             }, | ||||
|             change: (i) => { }, | ||||
|           } as SFDateWidgetSchema, | ||||
|         }, | ||||
|         validEndTime: { | ||||
|           title: '有效期止', | ||||
|           type: 'string', | ||||
|           ui: { | ||||
|             widget: 'date', | ||||
|             format: 'yyyy-MM-dd', | ||||
|             placeholder: '请选择', | ||||
|             errors: { | ||||
|               required: '请选择终止日期', | ||||
|             }, | ||||
|             change: (i) => { }, | ||||
|           } as SFDateWidgetSchema, | ||||
|         }, | ||||
|       }, | ||||
|       required: [ | ||||
|          | ||||
|       ], | ||||
|     }; | ||||
|     this.ui = { | ||||
|       '*': { | ||||
|         spanLabelFixed: 180, | ||||
|         grid: { span: 24 }, | ||||
|         width: 700 | ||||
|         width: 700, | ||||
|       }, | ||||
|       $title1: { | ||||
|         spanLabelFixed: 0 | ||||
|       }, | ||||
|       $title2: { | ||||
|         spanLabelFixed: 0 | ||||
|       }, | ||||
|       $title3: { | ||||
|         spanLabelFixed: 0 | ||||
|       }, | ||||
|       $title4: { | ||||
|         spanLabelFixed: 0 | ||||
|       }, | ||||
|       $enterpriseRegistrationTime: { | ||||
|         width: 680 | ||||
|       }, | ||||
|       $operatingEndTime: { | ||||
|         grid: { span: 9 } | ||||
|       }, | ||||
|       $dateType: { | ||||
|         grid: { span: 4 } | ||||
|       }, | ||||
|       $validEndTime: { | ||||
|         grid: { span: 9 } | ||||
|       }, | ||||
|       $dateType01: { | ||||
|         grid: { span: 4 } | ||||
|       }, | ||||
|       $registrationCapital: { | ||||
|         grid: { span: 12 } | ||||
|       }, | ||||
|       $unit: { | ||||
|         spanLabelFixed: 20, | ||||
|         grid: { span: 3 } | ||||
|       } | ||||
|     }; | ||||
|     this.ui2 = { | ||||
|       '*': { | ||||
|         spanLabelFixed: 180, | ||||
|         grid: { span: 18 }, | ||||
|         width: 600, | ||||
|       }, | ||||
|       $titleB:{ | ||||
|         grid: { span: 24 }, | ||||
|       }, | ||||
|       $certificatePhotoWatermark: { | ||||
|         grid: { span: 12 }, | ||||
|       }, | ||||
|       $roadImg: { | ||||
|         grid: { span: 4 }, | ||||
|         class: 'setCustom' | ||||
|       }, | ||||
|     }; | ||||
|     this.ui3 = { | ||||
|       '*': { | ||||
|         spanLabelFixed: 180, | ||||
|         grid: { span: 18 }, | ||||
|         width: 600, | ||||
|       }, | ||||
|       $titleC:{ | ||||
|         grid: { span: 24 }, | ||||
|       }, | ||||
|       $certificatePhotoWatermark: { | ||||
|         grid: { span: 12 }, | ||||
|       }, | ||||
|       $agreeImg: { | ||||
|         grid: { span: 4 }, | ||||
|         class: 'setCustom' | ||||
|       }, | ||||
|     }; | ||||
|   } | ||||
|   checkQualificationCertificate(imgurl: any) { | ||||
|     // 识别从业资格证 参数side:0-正面、1-背面;type:0-申请人身份证,1-法定代表人身份证 | ||||
|     const params = { | ||||
|       qualificationCertificateUrl: imgurl, | ||||
|     }; | ||||
|     this.service.request(this.service.$api_recognizeQualificationCertificate, params).subscribe((res: any) => { | ||||
|       if (res) { | ||||
|         this.sf2.setValue('/licenseNo', res.certificateNumber); | ||||
|         this.sf2.setValue('/regionCode', res.addressRegionCodes[0]); | ||||
|         res.qualificationCategoryList.forEach((item: any) => { | ||||
|           console.log(item.category.indexOf('道路货物运输驾驶员') !== -1) | ||||
|           if (item.category.indexOf('道路货物运输驾驶员') !== -1) { | ||||
|             this.sf2.setValue('/validStartTime', item.initialIssueDate.split(' ')[0]); | ||||
|             this.sf2.setValue('/validEndTime', item.expiryDate.split(' ')[0]); | ||||
|           } | ||||
|         }) | ||||
|          | ||||
|       } | ||||
|     }); | ||||
|   } | ||||
|   getProvinceData() { | ||||
|     return this.service.request(this.service.$api_getRegionByCode, { regionCode: '' }).pipe( | ||||
|       map((res: any) => { | ||||
|         const result: any = []; | ||||
|         const result: any = [] | ||||
|         if (res) { | ||||
|           res.map((m: any) => { | ||||
|             const item = { label: m.name, value: m.regionCode }; | ||||
|             result.push(item); | ||||
|             const item = { label: m.name, value: m.regionCode } | ||||
|             result.push(item) | ||||
|           }); | ||||
|         } | ||||
|         return result; | ||||
|         return result | ||||
|       }) | ||||
|     ); | ||||
|   } | ||||
| @ -457,9 +526,9 @@ export class CarAddDriverComponent implements OnInit { | ||||
|     // 识别身份证 参数side:0-正面、1-背面;type:0-申请人身份证,1-法定代表人身份证 | ||||
|     const params = { | ||||
|       idCardUrl: imgurl, | ||||
|       side | ||||
|       side, | ||||
|     }; | ||||
|     this.service.request(this.service.$api_checkIdCard, params).subscribe((res: any) => { | ||||
|     this.service.request(this.service.$api_checkIdCard, params).subscribe((res: any)=> { | ||||
|       if (res) { | ||||
|         if (type === 0) { | ||||
|           // 法定代表人身份证 | ||||
| @ -476,7 +545,7 @@ export class CarAddDriverComponent implements OnInit { | ||||
|     // 识别身份证 参数side:0-正面、1-背面;type:0-申请人身份证,1-法定代表人身份证 | ||||
|     const params = { | ||||
|       driverLicenseUrl: imgurl, | ||||
|       side | ||||
|       side, | ||||
|     }; | ||||
|     this.service.request(this.service.$api_recognizeDriverLicense, params).subscribe((res: any) => { | ||||
|       if (res) { | ||||
| @ -485,7 +554,7 @@ export class CarAddDriverComponent implements OnInit { | ||||
|           if (side === 'front') { | ||||
|             // 正面 | ||||
|             this.sf1.setValue('/licenseNo', res.number); | ||||
|             this.sf1.setValue('/driverModel', res.number); | ||||
|             this.sf1.setValue('/driverModel', [(res.classType).toUpperCase()]); | ||||
|             this.sf1.setValue('/validStartTime', res.validFrom); | ||||
|             this.sf1.setValue('/validEndTime', res.validTo); | ||||
|             this.sf1.setValue('/signingOrganization', res.issuingAuthority); | ||||
| @ -497,59 +566,51 @@ export class CarAddDriverComponent implements OnInit { | ||||
|   close(): void { | ||||
|     this.modal.destroy(); | ||||
|   } | ||||
|   showExample() { | ||||
|     this.showCardFlag = !this.showCardFlag; | ||||
|   showExample(){ | ||||
|     this.showCardFlag = !this.showCardFlag | ||||
|   } | ||||
|   showJopExample() { | ||||
|     this.showJopFlag = !this.showJopFlag; | ||||
|   showJopExample(){ | ||||
|     this.showJopFlag = !this.showJopFlag | ||||
|   } | ||||
|   submitForm() { | ||||
|     const params: any = { | ||||
|       enterpriseId: this.companyData.enterpriseId, | ||||
|       enterpriseProjectId: this.companyData.projectId, | ||||
|   submitForm(){ | ||||
|     const params:any = { | ||||
|       source: 1, | ||||
|       mobile: this.mobile, | ||||
|       identityInfoDTO: { | ||||
|       mobile: this.sf.value.mobile, | ||||
|       identityInfoDTO:{ | ||||
|         ...this.sf.value, | ||||
|         certificatePhotoFront: this.detailData.certificatePhotoFront, | ||||
|         certificatePhotoBack: this.detailData.certificatePhotoBack | ||||
|         certificatePhotoBack: this.detailData.certificatePhotoBack, | ||||
|       }, | ||||
|       userDriverLicenseDTO: { | ||||
|         ...this.sf1.value, | ||||
|         certificatePhoto: this.detailData.userDriverLicenseDTO.certificatePhoto | ||||
|         certificatePhoto: this.detailData.userDriverLicenseDTO.certificatePhoto, | ||||
|       }, | ||||
|       userPracticeSeniorityDTO: { | ||||
|         ...this.sf2.value, | ||||
|         certificatePhoto: this.detailData.userPracticeSeniorityDTO.certificatePhoto | ||||
|       } | ||||
|         certificatePhoto: this.detailData.userPracticeSeniorityDTO.certificatePhoto, | ||||
|       }, | ||||
|     }; | ||||
|     Object.assign(params, { | ||||
|       identityInfoDTO: { | ||||
|         certificatePhotoFrontWatermark: this.sf?.value.certificatePhotoFrontWatermark, | ||||
|         certificatePhotoBackWatermark: this.sf?.value.certificatePhotoBackWatermark | ||||
|       }, | ||||
|       userDriverLicenseDTO: { | ||||
|         certificatePhotoWatermark: this.sf?.value.certificatePhotoWatermark | ||||
|       }, | ||||
|       userPracticeSeniorityDTO: { | ||||
|         certificatePhotoWatermark: this.sf?.value.certificatePhotoWatermark | ||||
|     if(params.userPracticeSeniorityDTO.certificatePhoto === '' || params.userPracticeSeniorityDTO.certificatePhotoWatermark === '') { | ||||
|       delete params.userPracticeSeniorityDTO.certificatePhotoWatermark | ||||
|       delete params.userPracticeSeniorityDTO.certificatePhoto | ||||
|     } | ||||
|     }); | ||||
|     // params.identityInfoDTO.certificatePhotoFrontWatermark = this.sf?.value.certificatePhotoFrontWatermark; | ||||
|     // params.identityInfoDTO.certificatePhotoBackWatermark = this.sf?.value.certificatePhotoBackWatermark; | ||||
|     // params.userDriverLicenseDTO.certificatePhotoWatermark = this.sf1?.value.certificatePhotoWatermark; | ||||
|     // params.userPracticeSeniorityDTO.certificatePhotoWatermark = this.sf2?.value.certificatePhotoWatermark; | ||||
|     params.userDriverLicenseDTO.driverModel = params.userDriverLicenseDTO.driverModel.join(',') | ||||
|     delete params.identityInfoDTO.showName; | ||||
|     delete params.identityInfoDTO.titleA; | ||||
|     delete params.identityInfoDTO.titleB; | ||||
|     delete params.identityInfoDTO.titleC; | ||||
|     delete params.userDriverLicenseDTO.titleB; | ||||
|     delete params.userPracticeSeniorityDTO.titleC; | ||||
|     delete params.userDriverLicenseDTO.tipsA; | ||||
|     delete params.userPracticeSeniorityDTO.tipsC; | ||||
|     delete params.showName; | ||||
|     this.service.request(this.service.$api_enterpriseVehicleSave, params).subscribe((res: any) => { | ||||
|       if (res) { | ||||
|         this.service.msgSrv.success('添加成功'); | ||||
|         this.modal.close(true); | ||||
|     if(JSON.stringify(params.userPracticeSeniorityDTO) === '{}') { | ||||
|       params.userPracticeSeniorityDTO = null | ||||
|     } | ||||
|     }); | ||||
|     this.checked = true | ||||
|     this.service.request(this.service.$api_enterpriseVehicleSave, params).subscribe((res: any) => { | ||||
|       this.checked = false | ||||
|       if(res){ | ||||
|         this.service.msgSrv.success('添加成功') | ||||
|         this.modal.close(true) | ||||
|       } | ||||
|     }) | ||||
|   } | ||||
| } | ||||
|  | ||||
| @ -147,11 +147,54 @@ export class SupplyManagementVehicleComponent implements OnInit { | ||||
|       this.st.load(1); | ||||
|     }, 500); | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * 导入货源 | ||||
|    */ | ||||
|   importGoodsSource() { } | ||||
|    importGoodsSource() { | ||||
|     const modalRef = this.modal.create({ | ||||
|       nzTitle: '货源导入', | ||||
|       nzWidth: 600, | ||||
|       nzContent: SupplyManagementImportSupplyComponent, | ||||
|       nzComponentParams: { | ||||
|         // i: item | ||||
|       }, | ||||
|       nzFooter: null | ||||
|     }); | ||||
|     modalRef.afterClose.subscribe(result => { | ||||
|       if (result) { | ||||
|         const tipsModal = this.modal.create({ | ||||
|           nzTitle: '上传提示', | ||||
|           nzWidth: 600, | ||||
|           nzContent: `<div>文件上传完成!成功<span class="text-blue-dark">${result?.successNumber}</span>条,失败<span class="text-red-dark">${result?.failNumber}</span>条!</div>`, | ||||
|           nzFooter: [ | ||||
|             { | ||||
|               label: '取 消', | ||||
|               type: 'default', | ||||
|               onClick: () => { | ||||
|                 tipsModal.destroy(); | ||||
|               } | ||||
|             }, | ||||
|             { | ||||
|               label: '下载失败数据', | ||||
|               type: 'primary', | ||||
|               onClick: () => { | ||||
|                 if(!result?.failNumber) { | ||||
|                   this.service.msgSrv.error('没有失败数据!'); | ||||
|                   return; | ||||
|                 } | ||||
|                 this.service.request(this.service.$api_getFailUploadGoodsOperateResource, result.ids).subscribe((res: any) => { | ||||
|                   if(res) { | ||||
|                     console.log(res); | ||||
|                   } | ||||
|                 }) | ||||
|                 console.log(111); | ||||
|               } | ||||
|             }, | ||||
|           ] | ||||
|         }) | ||||
|       } | ||||
|     }); | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * 修改运费 | ||||
|  | ||||
| @ -4,7 +4,7 @@ | ||||
|  * @Author       : Shiming | ||||
|  * @Date         : 2021-12-03 11:10:14 | ||||
|  * @LastEditors  : Shiming | ||||
|  * @LastEditTime : 2022-03-07 13:54:46 | ||||
|  * @LastEditTime : 2022-03-24 19:35:52 | ||||
|  * @FilePath     : \\tms-obc-web\\src\\app\\routes\\supply-management\\services\\supply-management.service.ts | ||||
|  * Copyright (C) 2022 huzhenhong. All rights reserved. | ||||
|  */ | ||||
| @ -119,6 +119,8 @@ export class SupplyManagementService extends BaseService { | ||||
|   public $api_getContractContent = '/api/sdc/contractTemplate/getContractContent'; | ||||
|   // 获取运价 | ||||
|   public $api_getFreight = '/api/mdc/cuc/freightConfig/getFreight'; | ||||
|     // 从业资格证 | ||||
|     $api_recognizeQualificationCertificate = '/api/mdc/pbc/hwc/ocr/recognizeQualificationCertificate'; | ||||
|   /** | ||||
|    * 获取车型、车长字典数据 | ||||
|    * @returns | ||||
|  | ||||
| @ -4,7 +4,7 @@ | ||||
|  * @Author       : Shiming | ||||
|  * @Date         : 2021-12-24 15:54:08 | ||||
|  * @LastEditors  : Shiming | ||||
|  * @LastEditTime : 2022-02-17 19:58:06 | ||||
|  * @LastEditTime : 2022-03-24 11:10:44 | ||||
|  * @FilePath     : \\tms-obc-web\\src\\app\\routes\\sys-setting\\components\\network-freight\\network-freight.component.html | ||||
|  * Copyright (C) 2022 huzhenhong. All rights reserved. | ||||
| --> | ||||
| @ -96,7 +96,7 @@ | ||||
|   </st> | ||||
| </nz-card> | ||||
|  | ||||
| <nz-modal [(nzVisible)]="isVisible" [nzFooter]="nzModalFooter" nzTitle="财务设置" (nzOnOk)="handleOK()" (nzOnCancel)="handleCancel()"> | ||||
| <!-- <nz-modal [(nzVisible)]="isVisible" [nzFooter]="nzModalFooter" nzTitle="财务设置" (nzOnOk)="handleOK()" (nzOnCancel)="handleCancel()"> | ||||
|   <ng-container *nzModalContent> | ||||
|     <sf #sfFre [schema]="addSchema" [ui]="ui2" [formData]="formData" [compact]="false" [button]="'none'"> </sf> | ||||
|   </ng-container> | ||||
| @ -104,7 +104,7 @@ | ||||
|     <button nz-button nzType="primary" (click)="handleCancel()" [disabled]="">取消</button> | ||||
|     <button nz-button nzType="default" (click)="handleOK()">确 定</button> | ||||
|   </ng-template> | ||||
| </nz-modal> | ||||
| </nz-modal> --> | ||||
|  | ||||
| <nz-modal [(nzVisible)]="isVisibleTicket" [nzFooter]="nzModalFooterTiket" nzTitle="财务设置" (nzOnCancel)="handleCancelTicket()"> | ||||
|   <ng-container *nzModalContent> | ||||
| @ -117,9 +117,11 @@ | ||||
|         </ul> | ||||
|       </div> | ||||
|       <div nz-col [nzSpan]="18" style="overflow: scroll"> | ||||
|         <sf #sfTicket [schema]="ticketSchema" [ui]="ui3" *ngIf="!taxStatus" [formData]="formDataTicket" [compact]="false" [button]="'none'"> | ||||
|         <sf #sfTicket [schema]="ticketSchema" [ui]="ui3" *ngIf="TicketStatus" [formData]="formDataTicket" [compact]="false" [button]="'none'"> | ||||
|         </sf> | ||||
|         <sf #sfTax [schema]="TaxSchema" [ui]="ui4" *ngIf="taxStatus" [formData]="formDataTax" [compact]="false" [button]="'none'"> </sf> | ||||
|          | ||||
|         <sf #sfNC [schema]="NCSchema" [ui]="ui5" *ngIf="NCStatus" [formData]="formDataNC" [compact]="false" [button]="'none'"> </sf> | ||||
|       </div> | ||||
|     </div> | ||||
|   </ng-container> | ||||
|  | ||||
| @ -1,10 +1,11 @@ | ||||
| import { Component, OnInit, ViewChild } from '@angular/core'; | ||||
| import { ActivatedRoute, Router } from '@angular/router'; | ||||
| import { STComponent, STColumn, STChange } from '@delon/abc/st'; | ||||
| import { SFCascaderWidgetSchema, SFComponent, SFRadioWidgetSchema, SFSchema, SFUISchema } from '@delon/form'; | ||||
| import { SFCascaderWidgetSchema, SFComponent, SFRadioWidgetSchema, SFSchema, SFSchemaEnum, SFSelectWidgetSchema, SFUISchema } from '@delon/form'; | ||||
| import { DynamicSettingModalComponent, SinglepageSettingModalComponent } from '@shared'; | ||||
| import { NzModalService } from 'ng-zorro-antd/modal'; | ||||
| import { takeLast } from 'rxjs/operators'; | ||||
| import { of } from 'rxjs'; | ||||
| import { map, takeLast } from 'rxjs/operators'; | ||||
| import { AccountDetailComponent } from 'src/app/shared/components/account-detail/account-detail.component'; | ||||
| import { SystemService } from '../../services/system.service'; | ||||
|  | ||||
| @ -20,26 +21,33 @@ export class NetworkFreightComponent implements OnInit { | ||||
|   @ViewChild('sfFre', { static: false }) sfFre!: SFComponent; | ||||
|   @ViewChild('sfTicket', { static: false }) sfTicket!: SFComponent; | ||||
|   @ViewChild('sfTax', { static: false }) sfTax!: SFComponent; | ||||
|   @ViewChild('sfNC', { static: false }) sfNC!: SFComponent; | ||||
|   ui: SFUISchema = {}; | ||||
|   ui2: SFUISchema = {}; | ||||
|   ui3: SFUISchema = {}; | ||||
|   ui4: SFUISchema = {}; | ||||
|   ui5: SFUISchema = {}; | ||||
|   schema: SFSchema = {}; | ||||
|   addSchema: SFSchema = {}; | ||||
|   ticketSchema: SFSchema = {}; | ||||
|   TaxSchema: SFSchema = {}; | ||||
|   _$expand = false; | ||||
|   taxStatus = false; | ||||
|   NCSchema: SFSchema = {}; | ||||
|   _$expand :boolean= false; | ||||
|   taxStatus :boolean= false; | ||||
|   TicketStatus :boolean= true; | ||||
|   NCStatus :boolean = false; | ||||
|   formData: any; | ||||
|   ticketId: any; | ||||
|   ticketItem: any; | ||||
|   formDataTicket: any; | ||||
|   formDataNC: any; | ||||
|   formDataTax: any; | ||||
|   NCID: string = ''; | ||||
|   isVisible = false; | ||||
|   isVisibleTicket = false; | ||||
|   edit = false; | ||||
|   editId = false; | ||||
|   tabs: any[] = [{ name: '开票设置' }, { name: '税务设置' }]; | ||||
|   tabs: any[] = [{ name: '开票设置' }, { name: '税务设置' }, { name: 'NC设置' }]; | ||||
|  | ||||
|   columns: STColumn[] = [ | ||||
|     { | ||||
| @ -350,6 +358,42 @@ export class NetworkFreightComponent implements OnInit { | ||||
|     }; | ||||
|     this.ui4 = { '*': { spanLabelFixed: 120, grid: { span: 24 } } }; | ||||
|   } | ||||
|   initSFNC() { | ||||
|     this.NCSchema = { | ||||
|       properties: { | ||||
|         crmCustomerId: { | ||||
|           type: 'string', | ||||
|           title: 'CRM客户编码', | ||||
|           ui: { | ||||
|             widget: 'select', | ||||
|             serverSearch: true, | ||||
|             searchDebounceTime: 300, | ||||
|             searchLoadingText: '搜索中...', | ||||
|             visibleIf: { | ||||
|               _$expand: (value: boolean) => value | ||||
|             }, | ||||
|             allowClear: true, | ||||
|             onSearch: (q: any) => { | ||||
|               let str = q.replace(/^\s+|\s+$/g, ''); | ||||
|               if (str) { | ||||
|                 console.log(str); | ||||
|                  | ||||
|                 return this.service | ||||
|                   .request(this.service.$api_get_crmCustomer_page, { customerName: str }) | ||||
|                   .pipe(map((res: any) => (res.records as any[]).map(i => ({ label: i.customerName, value: i.id } as SFSchemaEnum)))) | ||||
|                   .toPromise(); | ||||
|               } else { | ||||
|                 return of([]); | ||||
|               } | ||||
|             } | ||||
|           } as SFSelectWidgetSchema | ||||
|         }, | ||||
|       }, | ||||
|       required: ['crmCustomerId'] | ||||
|     }; | ||||
|     this.ui5 = { '*': { spanLabelFixed: 120, grid: { span: 24 } } }; | ||||
|  | ||||
|   } | ||||
|   initSFFre() { | ||||
|     this.addSchema = { | ||||
|       properties: { | ||||
| @ -397,10 +441,19 @@ export class NetworkFreightComponent implements OnInit { | ||||
|   // 财务设置 | ||||
|   ticket(value: any) { | ||||
|     this.formDataTicket = []; | ||||
|     this.formDataNC = []; | ||||
|     this.formDataTax = []; | ||||
|     this.ticketItem = value; | ||||
|     this.taxStatus = false | ||||
|     this.TicketStatus = true | ||||
|     this.NCStatus = false | ||||
|     this.initSFTax(); | ||||
|     this.initSFNC(); | ||||
|     this.initSFTicket(); | ||||
|     this.NCID = value.id; | ||||
|     if(this.TicketStatus) { | ||||
|       console.log('9999999'); | ||||
|        | ||||
|       this.service.request(this.service.$api_getTicketByNetworkTransporterId, { id: value.id }).subscribe((res: any) => { | ||||
|         console.log(res); | ||||
|         if (res) { | ||||
| @ -412,21 +465,38 @@ export class NetworkFreightComponent implements OnInit { | ||||
|           this.ticketId = res.id; | ||||
|         } | ||||
|       }); | ||||
|     } | ||||
|     if(this.NCStatus) { | ||||
|       this.getNcSetData() | ||||
|     } | ||||
|     this.isVisibleTicket = true; | ||||
|   } | ||||
|   getNcSetData() { | ||||
|     const List: any = []; | ||||
|     console.log(99999); | ||||
|     this.service.request(this.service.$api_get_crmCustomer, { id: this.ticketItem.crmCustomerId }).subscribe((res: any) => { | ||||
|       console.log(res); | ||||
|       if (res) { | ||||
|           List.push({ label: res.customerName, value: res.id }); | ||||
|           console.log(List); | ||||
|            | ||||
|           this.sfNC.getProperty('/crmCustomerId')!.schema.enum = List; | ||||
|           this.sfNC.getProperty('/crmCustomerId')!.widget.reset(List); | ||||
|           this.sfNC.setValue('/crmCustomerId', res?.id); | ||||
|       } | ||||
|     }); | ||||
|   } | ||||
|   getProvinceData(value: any) { | ||||
|     this.service.http.post(this.service.$api_getRegionDetailByCode, { regionCode: value }).subscribe(res => { | ||||
|       console.log(res.data); | ||||
|       console.log(this.formDataTicket); | ||||
|       let enterpriseAddressCode: any = []; | ||||
|       let regioin = res?.data?.regionFullCodes.split(','); | ||||
|       console.log(regioin); | ||||
|       regioin?.forEach((element: any) => { | ||||
|         enterpriseAddressCode.push(Number(element)); | ||||
|       }); | ||||
|       console.log(enterpriseAddressCode); | ||||
|       if(this.TicketStatus) { | ||||
|         this.sfTicket.setValue('/senderRegionCode', enterpriseAddressCode); | ||||
|         return enterpriseAddressCode; | ||||
|       } | ||||
|     }); | ||||
|   } | ||||
|   deleteAction(item?: any) { | ||||
| @ -517,8 +587,11 @@ export class NetworkFreightComponent implements OnInit { | ||||
|     this.isVisibleTicket = false; | ||||
|   } | ||||
|   handleOKTicket() { | ||||
|     console.log(this.sfTicket.valid); | ||||
|     console.log( this.taxStatus, this.TicketStatus,this.NCStatus); | ||||
|     if(this.TicketStatus) { | ||||
|       console.log(this.sfTicket); | ||||
|       console.log(this.sfTicket.value); | ||||
|        | ||||
|       if (!this.sfTicket.valid) { | ||||
|         this.service.msgSrv.warning('请正确填写完整!'); | ||||
|         return; | ||||
| @ -538,6 +611,32 @@ export class NetworkFreightComponent implements OnInit { | ||||
|           this.st.reload(1); | ||||
|         } | ||||
|       }); | ||||
|     } else if(this.NCStatus){ | ||||
|       console.log(this.sfNC); | ||||
|       console.log(this.formDataNC); | ||||
|       console.log(this.sfNC?.value); | ||||
|        | ||||
|       if (!this.sfNC.valid) { | ||||
|         this.service.msgSrv.warning('请正确填写完整!'); | ||||
|         return; | ||||
|       } | ||||
|       const params = { | ||||
|         ...this.sfNC.value | ||||
|       }; | ||||
|       if (this.NCID) { | ||||
|         params.id = this.NCID; | ||||
|       } | ||||
|       console.log(params); | ||||
|       this.service.request(this.service.$api_setCrmCustomer, params).subscribe((res: any) => { | ||||
|         if (res) { | ||||
|           this.service.msgSrv.success('保存成功!'); | ||||
|           this.isVisibleTicket = false; | ||||
|           this.st.reload(1); | ||||
|         } | ||||
|       }); | ||||
|       // api_setCrmCustomer | ||||
|     } | ||||
|    | ||||
|   } | ||||
|  | ||||
|   handleOK() { | ||||
| @ -571,10 +670,18 @@ export class NetworkFreightComponent implements OnInit { | ||||
|     return this.service.request(this.service.$api_get_region_by_code, { regionCode }); | ||||
|   } | ||||
|   changeType(value: any) { | ||||
|     console.log(value); | ||||
|     if (value.name === '税务设置') { | ||||
|       this.taxStatus = true; | ||||
|     } else { | ||||
|       this.TicketStatus = false; | ||||
|       this.NCStatus = false; | ||||
|     } else if (value.name === '开票设置'){ | ||||
|       this.TicketStatus = true; | ||||
|       this.NCStatus = false; | ||||
|       this.taxStatus = false; | ||||
|     } else if (value.name === 'NC设置'){ | ||||
|       this.getNcSetData() | ||||
|       this.NCStatus = true; | ||||
|       this.TicketStatus = false; | ||||
|       this.taxStatus = false; | ||||
|     } | ||||
|   } | ||||
|  | ||||
| @ -173,6 +173,8 @@ export class SystemService extends BaseService { | ||||
|  $api_ocr_recognize_id_card = '/api/mdc/pbc/hwc/ocr/recognizeIdCard'; | ||||
|  // 获取字典 | ||||
|  $api_getDictValue = '/api/mdc/pbc/dictItems/getDictValue'; | ||||
|  // 设置crm客户 | ||||
|  $api_setCrmCustomer = '/api/mdc/cuc/networkTransporter/setCrmCustomer'; | ||||
|   // 获取一、二、三级地区详情 | ||||
|   $api_getRegionToThree = '/api/mdc/pbc/region/getRegionToThree'; | ||||
|   $api_getRoleTemplateInfo: string = ''; | ||||
|  | ||||
| @ -46,11 +46,10 @@ | ||||
|  | ||||
|  | ||||
|     <st #st [scroll]="{ x: '2000px' }" [data]="service.$api_ficoVatinvHList" [columns]="columns" [page]="{}" | ||||
|         [req]="{process: beforeReq }" [res]="{process:afterRes }" [loading]="false" | ||||
|         (change)="stChange($event)"> | ||||
|         [req]="{process: beforeReq }" [res]="{process:afterRes }" [loading]="false" (change)="stChange($event)"> | ||||
|         <ng-template st-row="vatinvcode" let-item let-index="index" let-column="column"> | ||||
|             {{ item.vatinvcode }} <br> | ||||
|             <label class="text-primary" >{{item.stsLabel}}</label> | ||||
|             <label class="text-primary">{{item.stsLabel}}</label> | ||||
|         </ng-template> | ||||
|     </st> | ||||
| </nz-card> | ||||
| @ -58,6 +57,28 @@ | ||||
| <ng-template #requestedModal> | ||||
|     <div nz-row nzGutter="8"> | ||||
|         <div nz-col nzSpan="24" se-container [labelWidth]="100"> | ||||
|             <se [col]="1" label="开票信息" class="mb-sm"> | ||||
|                 <p style="margin: 0;">公司名: {{openInfo?.artoname}}</p> | ||||
|                 <p style="margin: 0;">税号: {{openInfo?.artotaxno}}</p> | ||||
|                 <p style="margin: 0;">注册地址: {{openInfo?.artoadd}}</p> | ||||
|                 <p style="margin: 0;">注册电话: {{openInfo?.artotel}}</p> | ||||
|                 <p style="margin: 0;">开户行: {{openInfo?.artobank}}</p> | ||||
|             </se> | ||||
|             <se [col]="1" label="服务名称" class="mb-sm"> | ||||
|                 {{openInfo?.vatname}} | ||||
|             </se> | ||||
|             <se [col]="1" label="发票备注栏" class="mb-sm"> | ||||
|                 {{openInfo?.vatremarks}} | ||||
|             </se> | ||||
|             <se [col]="1" label="其它要求" class="mb-sm"> | ||||
|                 {{openInfo?.otherremarks}} | ||||
|             </se> | ||||
|             <se [col]="1" label="销货清单" class="mb-sm"> | ||||
|                 {{openInfo?.isdetail?'需要':'不需要'}} | ||||
|             </se> | ||||
|             <se [col]="1" label="开票金额" class="mb-sm"> | ||||
|                 {{openInfo?.vatnotax | currency}} | ||||
|             </se> | ||||
|             <se [col]="1" label="开票日期" required> | ||||
|                 <nz-date-picker [(ngModel)]="openInfo.invoicedate" nzPlaceHolder="请选择" style=" width: 100%;"> | ||||
|                 </nz-date-picker> | ||||
| @ -65,6 +86,9 @@ | ||||
|             <se [col]="1" label="发票号码" required> | ||||
|                 <input nz-input [(ngModel)]="openInfo.invoiceno" placeholder="请输入" /> | ||||
|             </se> | ||||
|             <se [col]="1" label="发票代码" required> | ||||
|                 <input nz-input [(ngModel)]="openInfo.invoiceno2" placeholder="请输入" /> | ||||
|             </se> | ||||
|         </div> | ||||
|     </div> | ||||
| </ng-template> | ||||
| @ -29,10 +29,10 @@ export class CancellationInvoiceComponent implements OnInit { | ||||
|   selectedRows: any[] = []; | ||||
|   totalCallNo = 0; | ||||
|  | ||||
|   openInfo: any = { invoicedate: null, invoiceno: null }; | ||||
|   constructor(public service: TicketService, private nzModalService: NzModalService, private router: Router) { } | ||||
|   openInfo: any = { invoicedate: null, invoiceno: null, invoiceno2: null }; | ||||
|   constructor(public service: TicketService, private nzModalService: NzModalService, private router: Router) {} | ||||
|  | ||||
|   ngOnInit(): void { } | ||||
|   ngOnInit(): void {} | ||||
|  | ||||
|   beforeReq = (requestOptions: STRequestOptions) => { | ||||
|     if (this.sf) { | ||||
| @ -78,7 +78,11 @@ export class CancellationInvoiceComponent implements OnInit { | ||||
|    * @param item | ||||
|    */ | ||||
|   requestedAction(item: any) { | ||||
|     this.openInfo = { invoicedate: null, invoiceno: null }; | ||||
|     this.openInfo = { invoicedate: null, invoiceno: null, invoiceno2: null }; | ||||
|     this.service.request(this.service.$api_get_apply_fico_info, { id: item.vatappHId }).subscribe(info => { | ||||
|       if (info) { | ||||
|         console.log(info); | ||||
|         Object.assign(this.openInfo, { ...info }); | ||||
|         const modal = this.nzModalService.create({ | ||||
|           nzTitle: '发票确认', | ||||
|           nzContent: this.requestedModal, | ||||
| @ -89,7 +93,8 @@ export class CancellationInvoiceComponent implements OnInit { | ||||
|             } | ||||
|             const params = { | ||||
|               invoiceno: this.openInfo.invoiceno, | ||||
|           invoicedate: dateTimePickerUtil.format(this.openInfo.invoicedate) | ||||
|               invoicedate: dateTimePickerUtil.format(this.openInfo.invoicedate), | ||||
|               invoiceno2: this.openInfo.invoiceno2 | ||||
|             }; | ||||
|             this.service | ||||
|               .request(this.service.$api_apply_fico_invoic, { | ||||
| @ -109,6 +114,8 @@ export class CancellationInvoiceComponent implements OnInit { | ||||
|           } | ||||
|         }); | ||||
|       } | ||||
|     }); | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * 批量推送发票 | ||||
| @ -154,7 +161,7 @@ export class CancellationInvoiceComponent implements OnInit { | ||||
|     this.nzModalService.warning({ | ||||
|       nzTitle: '确定将所选待确认开票申请撤回?', | ||||
|       nzContent: '提交税控后发票信息不可修改,待税控开票完成后返回开票结果', | ||||
|       nzOnOk: () => { } | ||||
|       nzOnOk: () => {} | ||||
|     }); | ||||
|   } | ||||
|  | ||||
| @ -170,7 +177,7 @@ export class CancellationInvoiceComponent implements OnInit { | ||||
|     this.nzModalService.warning({ | ||||
|       nzTitle: '确定将所选待确认开票申请撤回?', | ||||
|       nzContent: '提交税控后发票信息不可修改,待税控开票完成后返回开票结果', | ||||
|       nzOnOk: () => { } | ||||
|       nzOnOk: () => {} | ||||
|     }); | ||||
|   } | ||||
|  | ||||
| @ -369,22 +376,22 @@ export class CancellationInvoiceComponent implements OnInit { | ||||
|         buttons: [ | ||||
|           { type: 'divider' }, | ||||
|           { | ||||
|             text: '查看明细', | ||||
|             text: '查看明细<br>', | ||||
|             click: item => | ||||
|               this.router.navigate(['ticket/cancellation-invoice/detail/' + item.id], { | ||||
|                 queryParams: { type: 1, expressno: item.expressno, ltdId: item.shipperId } | ||||
|               }) | ||||
|           }, | ||||
|           { | ||||
|             text: '手工开票', | ||||
|             text: '手工开票<br>', | ||||
|             iif: item => item.sts != '3', | ||||
|             click: item => this.requestedAction(item) | ||||
|           }, | ||||
|           { | ||||
|             text: '推送开票', | ||||
|             text: '推送开票<br>', | ||||
|             iif: item => item.sts === '1', | ||||
|             click: item => this.pushInvoiceAction(item) | ||||
|           }, | ||||
|           } | ||||
|           // { | ||||
|           //   text: '作废发票', | ||||
|           //   iif: item => item.sts === '3', | ||||
|  | ||||
| @ -45,7 +45,7 @@ | ||||
|         <strong class="text-red">{{ totalCallNo }}</strong> | ||||
|         <a *ngIf="totalCallNo > 0" (click)="st.clearCheck()" class="ml-lg">清空</a> | ||||
|       </div> | ||||
|       <button nz-button *ngIf="resourceStatus==='1' || !resourceStatus" (click)="this.batchRequested()">开票</button> | ||||
|       <button nz-button *ngIf="resourceStatus==='1' || !resourceStatus" (click)="this.batchRequested()">开票审核</button> | ||||
|       <!-- <button nz-button (click)="this.rejectAction(selectedRows)">驳回</button> | ||||
|             <button nz-button (click)="changePice(selectedRows)">修改地址</button>--> | ||||
|       <button nz-button *ngIf="resourceStatus==='3' || !resourceStatus" (click)="printOrder(selectedRows)">打印面单</button> | ||||
|  | ||||
| @ -32,5 +32,5 @@ | ||||
| <div class="modal-footer text-center"> | ||||
|   <button nz-button type="button">移除</button> | ||||
|   <button nz-button type="button" (click)="saveManage()">手工处理</button> | ||||
|   <button nz-button type="submit" nzType="primary" [nzLoading]="false" (click)="saveManage()">自动开票</button> | ||||
|   <!-- <button nz-button type="submit" nzType="primary" [nzLoading]="false" (click)="saveManage()">自动开票</button> --> | ||||
| </div> | ||||
|  | ||||
| @ -7,6 +7,7 @@ | ||||
|  * @FilePath     : \\tms-obc-web\\src\\app\\routes\\ticket-management\\components\\invoice-requested\\requested-invoice-modal\\requested-invoice-modal.component.ts | ||||
|  */ | ||||
| import { Component, ViewChild } from '@angular/core'; | ||||
| import { Router } from '@angular/router'; | ||||
| import { STChange, STColumn, STComponent, STRequestOptions } from '@delon/abc/st'; | ||||
| import { NzModalRef, NzModalService } from 'ng-zorro-antd/modal'; | ||||
|  | ||||
| @ -23,7 +24,7 @@ export class RequestedInvoiceModalComponent { | ||||
|   columns: STColumn[] = this.initST(); | ||||
|   id: any; | ||||
|   selectedRows: any[] = []; | ||||
|   constructor(public service: TicketService, private nzModalService: NzModalService, private modal: NzModalRef) {} | ||||
|   constructor(public service: TicketService, private nzModalService: NzModalService, private modal: NzModalRef, private router: Router) {} | ||||
|  | ||||
|   beforeReq = (requestOptions: STRequestOptions) => { | ||||
|     Object.assign(requestOptions.body, { vatappHId: this.id }); | ||||
| @ -127,8 +128,17 @@ export class RequestedInvoiceModalComponent { | ||||
|     }; | ||||
|     this.service.request(this.service.$api_get_applyFicoVatinv, params).subscribe((res: any) => { | ||||
|       if (res) { | ||||
|         this.nzModalService.confirm({ | ||||
|           nzTitle: '是否进入销票处理页面完成开票', | ||||
|           nzOnOk: () => { | ||||
|             this.service.msgSrv.success('开票成功'); | ||||
|             this.modal.destroy(true); | ||||
|             this.router.navigate(['/ticket/cancellation-invoice']); | ||||
|           }, | ||||
|           nzOnCancel: () => { | ||||
|             this.modal.destroy(true); | ||||
|           } | ||||
|         }); | ||||
|       } | ||||
|     }); | ||||
|   } | ||||
|  | ||||
| @ -60,3 +60,16 @@ | ||||
|   </p> | ||||
|   <app-logistics-time-line [data]="routesInfo?.routes"></app-logistics-time-line> | ||||
| </ng-template> | ||||
|  | ||||
| <ng-template #requestedModal> | ||||
|   <div nz-row nzGutter="8"> | ||||
|       <div nz-col nzSpan="24" se-container [labelWidth]="100"> | ||||
|           <se [col]="1" label="快递公司" required> | ||||
|               <input nz-input [(ngModel)]="openInfo.expresscompany" placeholder="请输入" /> | ||||
|           </se> | ||||
|           <se [col]="1" label="快递单号" required> | ||||
|               <input nz-input [(ngModel)]="openInfo.expressno" placeholder="请输入" /> | ||||
|           </se> | ||||
|       </div> | ||||
|   </div> | ||||
| </ng-template> | ||||
| @ -30,6 +30,10 @@ export class InvoicedListComponent implements OnInit { | ||||
|     mailNo: '', | ||||
|     routes: [] | ||||
|   }; | ||||
|  | ||||
|   @ViewChild('requestedModal', { static: false }) | ||||
|   requestedModal!: any; | ||||
|   openInfo: any = { expresscompany: null, expressno: null }; | ||||
|   constructor(public service: TicketService, private nzModalService: NzModalService, private router: Router) {} | ||||
|  | ||||
|   ngOnInit(): void {} | ||||
| @ -77,6 +81,42 @@ export class InvoicedListComponent implements OnInit { | ||||
|     }); | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * 填写物流/修改物流 | ||||
|    * @param item | ||||
|    */ | ||||
|   requestedAction(item: any) { | ||||
|     this.openInfo = { expresscompany: item.expresscompany || null, expressno: item.expressno || null }; | ||||
|     const modal = this.nzModalService.create({ | ||||
|       nzTitle: item.expresscompany ? '修改物流' : '填写物流', | ||||
|       nzContent: this.requestedModal, | ||||
|       nzOnOk: () => { | ||||
|         if (!this.openInfo?.expresscompany || !this.openInfo?.expressno) { | ||||
|           this.service.msgSrv.warning('请填快递信息'); | ||||
|           return false; | ||||
|         } | ||||
|         const params = { | ||||
|           expresscompany: this.openInfo.expresscompany, | ||||
|           expressno: this.openInfo.expressno | ||||
|         }; | ||||
|         this.service | ||||
|           .request(this.service.$api_update_Express, { | ||||
|             id: item.id, | ||||
|             ...params | ||||
|           }) | ||||
|           .subscribe(res => { | ||||
|             if (res) { | ||||
|               this.service.msgSrv.success(item.expresscompany ? '修改成功' : '填写成功'); | ||||
|               this.st.load(1); | ||||
|               modal.destroy(); | ||||
|             } | ||||
|           }); | ||||
|  | ||||
|         return false; | ||||
|       } | ||||
|     }); | ||||
|   } | ||||
|  | ||||
|   invoiceHongChong() { | ||||
|     if (this.selectedRows?.length <= 0) { | ||||
|       this.service.msgSrv.warning('请选择发票'); | ||||
| @ -137,6 +177,13 @@ export class InvoicedListComponent implements OnInit { | ||||
|             autocomplete: 'off' | ||||
|           } | ||||
|         }, | ||||
|         invoiceno2: { | ||||
|           type: 'string', | ||||
|           title: '发票代码', | ||||
|           ui: { | ||||
|             autocomplete: 'off' | ||||
|           } | ||||
|         }, | ||||
|         vatappHCode: { | ||||
|           type: 'string', | ||||
|           title: '申请编号', | ||||
| @ -151,7 +198,10 @@ export class InvoicedListComponent implements OnInit { | ||||
|             widget: 'sl-from-to-search', | ||||
|             format: 'yyyy-MM-dd', | ||||
|             placeholder: '请选择', | ||||
|             nzShowTime: true | ||||
|             nzShowTime: true, | ||||
|             visibleIf: { | ||||
|               expand: (value: boolean) => value | ||||
|             } | ||||
|           } as SFDateWidgetSchema | ||||
|         }, | ||||
|         artoname: { | ||||
| @ -196,6 +246,7 @@ export class InvoicedListComponent implements OnInit { | ||||
|     return [ | ||||
|       { title: '', index: 'key', type: 'checkbox' }, | ||||
|       { title: '发票号码', index: 'invoiceno', width: 150 }, | ||||
|       { title: '发票代码', index: 'invoiceno2', width: 150 }, | ||||
|       { | ||||
|         title: '申请编号', | ||||
|         index: 'vatappHCode', | ||||
| @ -255,7 +306,7 @@ export class InvoicedListComponent implements OnInit { | ||||
|         className: 'text-center', | ||||
|         width: 120, | ||||
|         buttons: [ | ||||
|           {type:'divider'}, | ||||
|           { type: 'divider' }, | ||||
|           { | ||||
|             text: '查看明细<br>', | ||||
|             click: item => | ||||
| @ -272,6 +323,16 @@ export class InvoicedListComponent implements OnInit { | ||||
|             text: '查看物流<br>', | ||||
|             click: item => this.showlogosticsLogs(item), | ||||
|             iif: item => item.expresscompany | ||||
|           }, | ||||
|           { | ||||
|             text: '填写物流<br>', | ||||
|             click: item => this.requestedAction(item), | ||||
|             iif: item => !item.expresscompany | ||||
|           }, | ||||
|           { | ||||
|             text: '修改物流<br>', | ||||
|             click: item => this.requestedAction(item), | ||||
|             iif: item => item.expresscompany | ||||
|           } | ||||
|         ] | ||||
|       } | ||||
|  | ||||
| @ -32,6 +32,8 @@ export class TicketService extends ShipperBaseService { | ||||
|   $api_ficoVatinv_Detail = '/api/fcc/ficoVatinvL/getDetailByVatinvHId'; | ||||
|   // 运营端订单明细开票处理 | ||||
|   $api_apply_fico = '/api/fcc/ficoVatinvH/crmPushInvo'; | ||||
|   // 手工开票获取开票申请信息展示 | ||||
|   $api_get_apply_fico_info = '/api/fcc/ficoVatappH/get'; | ||||
|   // 运营端手工开票/确认/E税云开票成功后的回调 | ||||
|   $api_apply_fico_invoic = '/api/fcc/ficoVatinvH/operateAffirmVatinv'; | ||||
|   // 运营端推送开票-E税云开票 | ||||
| @ -53,6 +55,9 @@ export class TicketService extends ShipperBaseService { | ||||
|   // 已开发票查询 | ||||
|   $api_get_invoice_page = '/api/fcc/ficoVatinvH/list/page'; | ||||
|  | ||||
|   // 更新快递信息 | ||||
|   $api_update_Express= '/api/fcc/ficoVatinvH/updateExpress'; | ||||
|  | ||||
|   // 发票作废 | ||||
|   $api_cancel_invoice = '/api/fcc/ficoVatinvH/inpinvHCancel'; | ||||
|   // 获取销项发票抬头 | ||||
|  | ||||
| @ -1,7 +1,17 @@ | ||||
| <!-- | ||||
|  * @Description  :  | ||||
|  * @Version      : 1.0 | ||||
|  * @Author       : Shiming | ||||
|  * @Date         : 2022-03-14 14:17:38 | ||||
|  * @LastEditors  : Shiming | ||||
|  * @LastEditTime : 2022-03-24 14:17:55 | ||||
|  * @FilePath     : \\tms-obc-web\\src\\app\\routes\\usercenter\\components\\driver\\captain\\add\\add.component.html | ||||
|  * Copyright (C) 2022 huzhenhong. All rights reserved. | ||||
| --> | ||||
| <div class="modal-header"> | ||||
|   <div class="modal-title">添加车队长</div> | ||||
| </div> | ||||
| <div> | ||||
| <div [ngClass]="i.id || readFlag ? 'hideBtn' : ''"> | ||||
|   <sf #sf [compact]="true" [ui]="ui" [schema]="schema" [button]="'none'"> | ||||
|     <ng-template sf-template="tipsA" let-me let-ui="ui" let-schema="schema"> | ||||
|       <div class="pr"> | ||||
| @ -24,7 +34,6 @@ | ||||
|   </sf> | ||||
| </div> | ||||
| <div class="modal-footer"> | ||||
|   <button nz-button type="button" (click)="close()" *ngIf="i.id === ''">取消</button> | ||||
|   <button nz-button type="button" (click)="close()" *ngIf="i.id">关闭</button> | ||||
|   <button nz-button type="button" nzType="primary" (click)="sure()" [disabled]="!sf?.valid" *ngIf="i.id === ''">确定</button> | ||||
|   <button nz-button type="button" (click)="close()">取消</button> | ||||
|   <button nz-button type="button" nzType="primary" (click)="sure()" [disabled]="!sf?.valid" [nzLoading]="service.http.loading">确定</button> | ||||
| </div> | ||||
|  | ||||
| @ -1,15 +1,15 @@ | ||||
| .pr { | ||||
|   position: relative; | ||||
|   } | ||||
| } | ||||
|  | ||||
|   .pa { | ||||
| .pa { | ||||
|   position: absolute; | ||||
|   top: 35px; | ||||
|   left: 150px; | ||||
|   img{border: solid 1px #ebf0fb;} | ||||
|   } | ||||
| } | ||||
|  | ||||
|   .tips { | ||||
| .tips { | ||||
|   display: flex; | ||||
|   margin-bottom: 0; | ||||
|   color: #333; | ||||
| @ -23,8 +23,8 @@ | ||||
|     margin-bottom: 0; | ||||
|     text-align: center; | ||||
|   } | ||||
|   } | ||||
|   :host{ | ||||
| } | ||||
| :host{ | ||||
|   ::ng-deep { | ||||
|   .ant-input-borderless{ | ||||
|       padding: 0; | ||||
| @ -32,5 +32,10 @@ | ||||
|       color: black; | ||||
|       resize:none; | ||||
|     } | ||||
|     .hideBtn .ant-upload-list-item-actions button{ | ||||
|       &:last-child{ | ||||
|         display: none; | ||||
|       } | ||||
|     } | ||||
|   } | ||||
| } | ||||
| @ -90,12 +90,13 @@ export class CtcCaptatinAddComponent implements OnInit { | ||||
|             widget: this.i.id ? 'text' : '', | ||||
|             placeholder: '请输入手机号', | ||||
|             blur: () => { | ||||
|              if(this.sf?.value?.mobile) { | ||||
|               if(!this.sf.value.mobile) { | ||||
|                 return | ||||
|               } | ||||
|               this.service.request(this.service.$api_getByMobile, { mobile: this.sf.value.mobile }).subscribe(res => { | ||||
|                 if (res.certificateNumber) { | ||||
|                   this.readFlag = true | ||||
|                   this.detailData = { | ||||
|                     ...res, | ||||
|                     mobile: this.sf.value.mobile, | ||||
|                     bankName: this.sf.value.bankName, | ||||
|                     bankCardNo: this.sf.value.bankCardNo, | ||||
| @ -126,11 +127,24 @@ export class CtcCaptatinAddComponent implements OnInit { | ||||
|                   this.initSF() | ||||
|                 } else { | ||||
|                   this.readFlag = false | ||||
|                   this.detailData = {} | ||||
|                   this.detailData = { | ||||
|                     mobile: this.sf.value.mobile, | ||||
|                     bankName: this.sf.value.bankName, | ||||
|                     bankCardNo: this.sf.value.bankCardNo, | ||||
|                     remark: this.sf.value.remark, | ||||
|                     identityInfoDTO: { | ||||
|                       certificatePhotoFrontWatermark: '', | ||||
|                       certificatePhotoBackWatermark: '', | ||||
|                       name: '', | ||||
|                       certificateNumber: '', | ||||
|                       certificatePhotoFront: '', | ||||
|                       certificatePhotoBack: '', | ||||
|                     } | ||||
|                   } | ||||
|                   this.initSF() | ||||
|                 } | ||||
|               }) | ||||
|             } | ||||
|              } | ||||
|           }, | ||||
|           default: this.detailData.mobile | ||||
|         }, | ||||
| @ -138,7 +152,7 @@ export class CtcCaptatinAddComponent implements OnInit { | ||||
|           title: '姓名', | ||||
|           type: 'string', | ||||
|           ui: { | ||||
|             widget: this.i.id ? 'text' : '', | ||||
|             widget: this.i.id && (this.i.driverLicenseStatus === 10 || this.i.driverLicenseStatus === 20) ? 'text' : '', | ||||
|             placeholder: '请输入姓名', | ||||
|           }, | ||||
|           readOnly: this.readFlag, | ||||
| @ -147,12 +161,11 @@ export class CtcCaptatinAddComponent implements OnInit { | ||||
|         bankCardNo: { | ||||
|           title: '银行卡号', | ||||
|           type: 'string', | ||||
|           maxLength: 20, | ||||
|           ui: { | ||||
|             widget: this.i.id ? 'text' : '', | ||||
|             widget: '', | ||||
|             placeholder: '请输入银行卡号', | ||||
|             change: (val: any) =>{ | ||||
|               const value =  val.replace(/\D/g,'') | ||||
|             change: (val: any) => { | ||||
|               const value = val.replace(/\D/g, '') | ||||
|               this.sf.setValue('/bankCardNo', value) | ||||
|             }, | ||||
|             errors: { | ||||
| @ -164,9 +177,8 @@ export class CtcCaptatinAddComponent implements OnInit { | ||||
|         bankName: { | ||||
|           title: '开户行', | ||||
|           type: 'string', | ||||
|           maxLength: 35, | ||||
|           ui: { | ||||
|             widget: this.i.id ? 'text' : '', | ||||
|             widget: '', | ||||
|             placeholder: '请输入开户行', | ||||
|           }, | ||||
|           default: this.detailData.bankName | ||||
| @ -178,7 +190,7 @@ export class CtcCaptatinAddComponent implements OnInit { | ||||
|           ui: { | ||||
|             widget: 'textarea', | ||||
|             showRequired: true, | ||||
|             borderless:true, | ||||
|             borderless: true, | ||||
|           }, | ||||
|           default: '请上传身份证原件的高清照片,若上传复印件,则需加盖公司印章及法人签字;上传后系统会自动识别并填写', | ||||
|         }, | ||||
| @ -193,11 +205,11 @@ export class CtcCaptatinAddComponent implements OnInit { | ||||
|         certificatePhotoFrontWatermark: { | ||||
|           type: 'string', | ||||
|           title: '', | ||||
|           readOnly: this.i.id || this.readFlag, | ||||
|           readOnly: (this.i.id && (this.i.driverLicenseStatus === 10 || this.i.driverLicenseStatus === 20)) || this.readFlag, | ||||
|           ui: { | ||||
|             offsetControl: 6, | ||||
|             action: apiConf.fileUpload, | ||||
|             fileType: 'image/png,image/jpeg,image/jpg,image/gif', | ||||
|             accept: 'image/png,image/jpeg,image/jpg,image/gif', | ||||
|             limit: 1, | ||||
|             limitFileCount: 1, | ||||
|             resReName: 'data.fullFileWatermarkPath', | ||||
| @ -212,10 +224,10 @@ export class CtcCaptatinAddComponent implements OnInit { | ||||
|             listType: 'picture-card', | ||||
|             change: (args: any) => { | ||||
|               if (args.type === 'success') { | ||||
|                 this.detailData.certificatePhotoFront = args.file.response.data.fullFilePath | ||||
|                 this.detailData.identityInfoDTO.certificatePhotoFront = args.file.response.data.fullFilePath | ||||
|                 this.checkIdCard(args.file.response.data.fullFilePath, 'front'); | ||||
|               } else { | ||||
|                 this.detailData.certificatePhotoFront = '' | ||||
|                 this.detailData.identityInfoDTO.certificatePhotoFront = '' | ||||
|               } | ||||
|             }, | ||||
|             beforeUpload: (file: any, _fileList: any) => { | ||||
| @ -230,6 +242,7 @@ export class CtcCaptatinAddComponent implements OnInit { | ||||
|                 observer.complete(); | ||||
|               }); | ||||
|             }, | ||||
|             previewFile: (file: any) => { } | ||||
|           }, | ||||
|           default: this.detailData.identityInfoDTO.certificatePhotoFrontWatermark | ||||
|         }, | ||||
| @ -244,11 +257,11 @@ export class CtcCaptatinAddComponent implements OnInit { | ||||
|         certificatePhotoBackWatermark: { | ||||
|           type: 'string', | ||||
|           title: '', | ||||
|           readOnly: this.i.id || this.readFlag, | ||||
|           readOnly: (this.i.id && (this.i.driverLicenseStatus === 10 || this.i.driverLicenseStatus === 20)) || this.readFlag, | ||||
|           ui: { | ||||
|             offsetControl: 6, | ||||
|             action: apiConf.fileUpload, | ||||
|             fileType: 'image/png,image/jpeg,image/jpg,image/gif', | ||||
|             accept: 'image/png,image/jpeg,image/jpg,image/gif', | ||||
|             limit: 1, | ||||
|             limitFileCount: 1, | ||||
|             resReName: 'data.fullFileWatermarkPath', | ||||
| @ -263,9 +276,9 @@ export class CtcCaptatinAddComponent implements OnInit { | ||||
|             listType: 'picture-card', | ||||
|             change: (args: any) => { | ||||
|               if (args.type === 'success') { | ||||
|                 this.detailData.certificatePhotoBack = args.file.response.data.fullFilePath | ||||
|                 this.detailData.identityInfoDTO.certificatePhotoBack = args.file.response.data.fullFilePath | ||||
|               } else { | ||||
|                 this.detailData.certificatePhotoBack = '' | ||||
|                 this.detailData.identityInfoDTO.certificatePhotoBack = '' | ||||
|               } | ||||
|             }, | ||||
|             beforeUpload: (file: any, _fileList: any) => { | ||||
| @ -280,15 +293,16 @@ export class CtcCaptatinAddComponent implements OnInit { | ||||
|                 observer.complete(); | ||||
|               }); | ||||
|             }, | ||||
|             previewFile: (file: any) => { } | ||||
|           }, | ||||
|           default: this.detailData.identityInfoDTO.certificatePhotoBackWatermark | ||||
|         }, | ||||
|         certificateNumber: { | ||||
|           title: '身份证号', | ||||
|           type: 'string', | ||||
|           readOnly: this.readFlag, | ||||
|           readOnly: (this.i.id && (this.i.driverLicenseStatus === 10 || this.i.driverLicenseStatus === 20)) || this.readFlag, | ||||
|           ui: { | ||||
|             widget: this.i.id ? 'text' : '', | ||||
|             widget: this.i.id && (this.i.driverLicenseStatus !== 10 && this.i.driverLicenseStatus !== 20) ? 'text' : '', | ||||
|             placeholder: '请输入身份证号', | ||||
|           }, | ||||
|           default: this.detailData.identityInfoDTO.certificateNumber | ||||
| @ -298,7 +312,7 @@ export class CtcCaptatinAddComponent implements OnInit { | ||||
|           type: 'string', | ||||
|           maxLength: 100, | ||||
|           ui: { | ||||
|             widget: this.i.id ? 'text' : 'textarea', | ||||
|             widget: 'textarea', | ||||
|             placeholder: '请输入备注', | ||||
|             autosize: { minRows: 2, maxRows: 6 }, | ||||
|           }, | ||||
|  | ||||
| @ -1,7 +1,7 @@ | ||||
| <!-- | ||||
|  * @Author: your name | ||||
|  * @Date: 2021-12-24 15:38:08 | ||||
|  * @LastEditTime : 2022-02-23 15:43:24 | ||||
|  * @LastEditTime : 2022-03-24 19:40:36 | ||||
|  * @LastEditors  : Shiming | ||||
|  * @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE | ||||
|  * @FilePath     : \\tms-obc-web\\src\\app\\routes\\waybill-management\\components\\abnormal-appear\\abnormal-appear.component.html | ||||
| @ -43,7 +43,7 @@ | ||||
|  | ||||
| <nz-card class="content-box"> | ||||
|   <nz-tabset [(nzSelectedIndex)]="selectedIndex"> | ||||
|     <nz-tab nzTitle="待回复"> | ||||
|     <nz-tab [nzTitle]="'待回复(' + tabs?.stayQuantity + ')'"> | ||||
|       <st | ||||
|         #st | ||||
|         [data]="service.$api_get_listOperatePage" | ||||
| @ -69,10 +69,10 @@ | ||||
|         </ng-template> | ||||
|       </st> | ||||
|     </nz-tab> | ||||
|     <nz-tab nzTitle="已回复"> | ||||
|     <nz-tab  nzTitle='已回复'> | ||||
|       <st | ||||
|         #st2 | ||||
|         [data]="service.$api_get_listOperateReplyPage" | ||||
|         [data]="service.$api_get_listOperatePage" | ||||
|         [columns]="columns2" | ||||
|         [req]="{ method: 'POST', allInBody: true, reName: { pi: 'pageIndex', ps: 'pageSize' }, params: reqParams }" | ||||
|         [res]="{ reName: { list: 'data.records', total: 'data.total' } }" | ||||
|  | ||||
| @ -37,6 +37,10 @@ export class WaybillManagementAbnormalAppearComponent implements OnInit { | ||||
|   edit = false; | ||||
|   editId = false; | ||||
|   selectedIndex = 0; | ||||
|   tabs = { | ||||
|     stayQuantity: 0, | ||||
|     receivedQuantity: 0 | ||||
|   }; | ||||
|  | ||||
|   columns: STColumn[] = [ | ||||
|     { title: '异常编号', index: 'exceptionCode', width: '180px', className: 'text-left' }, | ||||
| @ -68,12 +72,14 @@ export class WaybillManagementAbnormalAppearComponent implements OnInit { | ||||
|  | ||||
|   get reqParams() { | ||||
|     return { | ||||
|       ...this.sf?.value | ||||
|       ...this.sf?.value, | ||||
|       replyStatus: 0 | ||||
|     }; | ||||
|   } | ||||
|   get reqParams2() { | ||||
|     return { | ||||
|       ...this.sf?.value | ||||
|       ...this.sf?.value, | ||||
|       replyStatus: 1 | ||||
|     }; | ||||
|   } | ||||
|  | ||||
| @ -81,6 +87,7 @@ export class WaybillManagementAbnormalAppearComponent implements OnInit { | ||||
|  | ||||
|   ngOnInit(): void { | ||||
|     this.initSF(); | ||||
|     this.getGoodsSourceStatistical(); | ||||
|   } | ||||
|  | ||||
|   /** | ||||
| @ -205,14 +212,32 @@ export class WaybillManagementAbnormalAppearComponent implements OnInit { | ||||
|     }; | ||||
|     this.ui = { '*': { spanLabelFixed: 110, grid: { span: 8, gutter: 4 } } }; | ||||
|   } | ||||
|  | ||||
|   getGoodsSourceStatistical() { | ||||
|     this.tabs = { | ||||
|       stayQuantity: 0, | ||||
|       receivedQuantity: 0 | ||||
|     }; | ||||
|     const params: any = Object.assign({}, this.reqParams || {}); | ||||
|     delete params.replyStatus; | ||||
|     this.service.request(this.service.$api_get_listOperateStatus, params).subscribe(res => { | ||||
|       if (res) { | ||||
|         res.forEach((element: any) => { | ||||
|           if (element.replyStatus === '1') { | ||||
|             this.tabs.receivedQuantity = element.quantity; | ||||
|           } else if (element.replyStatus === '0') { | ||||
|             this.tabs.stayQuantity = element.quantity; | ||||
|           } | ||||
|         }); | ||||
|       } | ||||
|     }); | ||||
|   } | ||||
|   search() { | ||||
|     console.log(this.selectedIndex); | ||||
|     if (this.selectedIndex === 0) { | ||||
|       this.st?.load(1); | ||||
|     } else { | ||||
|       this.st2?.load(1); | ||||
|     } | ||||
|     this.getGoodsSourceStatistical(); | ||||
|   } | ||||
|   /** | ||||
|    * 重置表单 | ||||
|  | ||||
| @ -1,7 +1,7 @@ | ||||
| <!-- | ||||
|  * @Author: your name | ||||
|  * @Date: 2021-12-03 15:31:52 | ||||
|  * @LastEditTime : 2022-03-11 17:27:42 | ||||
|  * @LastEditTime : 2022-03-24 13:51:41 | ||||
|  * @LastEditors  : Shiming | ||||
|  * @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE | ||||
|  * @FilePath     : \\tms-obc-web\\src\\app\\routes\\waybill-management\\components\\bulk-detail\\bulk-detail.component.html | ||||
| @ -27,12 +27,11 @@ | ||||
|       <div sv-container> | ||||
|         <sv label="网络货运人">{{ i?.enterpriseInfoName }} </sv> | ||||
|         <sv label="货主">{{ i?.shippername }} </sv> | ||||
|         <sv label="所属项目">{{i?.enterpriseProject}}</sv> | ||||
|         <sv label="所属项目">{{i?.enterpriseProjectName}}</sv> | ||||
|         <sv label="服务类型">{{i?.serviceTypeLabel}}</sv> | ||||
|         <sv label="调度员">{{i?.dispatchName}} /{{i?.dispatchPhone}}</sv> | ||||
|         <sv label="外部订单号">{{ i?.externalBillCode }}</sv> | ||||
|         <sv label="货源编号">{{ i?.resourceCode }} </sv> | ||||
|         <sv label="运单号">{{ i?.wayBill?.wayBillCode }}</sv> | ||||
|         <sv label="承诺付款天数">{{ i?.paymentDays }}</sv> | ||||
|      </div> | ||||
|      <nz-tabset style="margin-top: 15px;"> | ||||
|  | ||||
| @ -1,7 +1,7 @@ | ||||
| <!-- | ||||
|  * @Author: your name | ||||
|  * @Date: 2021-12-03 15:31:52 | ||||
|  * @LastEditTime : 2022-03-11 16:39:50 | ||||
|  * @LastEditTime : 2022-03-24 13:49:56 | ||||
|  * @LastEditors  : Shiming | ||||
|  * @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE | ||||
|  * @FilePath     : \\tms-obc-web\\src\\app\\routes\\waybill-management\\components\\vehicle-detail\\vehicle-detail.component.html | ||||
| @ -27,12 +27,11 @@ | ||||
|       <div sv-container> | ||||
|         <sv label="网络货运人">{{ i?.enterpriseInfoName }} </sv> | ||||
|         <sv label="货主">{{ i?.shippername }} </sv> | ||||
|         <sv label="所属项目">{{i?.enterpriseProject}}</sv> | ||||
|         <sv label="所属项目">{{i?.enterpriseProjectName}}</sv> | ||||
|         <sv label="服务类型">{{i?.serviceTypeLabel}}</sv> | ||||
|         <sv label="调度员">{{i?.dispatchName}} /{{i?.dispatchPhone}}</sv> | ||||
|         <sv label="外部订单号">{{ i?.externalBillCode }}</sv> | ||||
|         <sv label="货源编号">{{ i?.resourceCode }} </sv> | ||||
|         <sv label="运单号">{{ i?.wayBill?.wayBillCode }}</sv> | ||||
|         <sv label="承诺付款天数">{{ i?.paymentDays }}</sv> | ||||
|      </div> | ||||
|      <nz-tabset style="margin-top: 15px;"> | ||||
|  | ||||
| @ -1,7 +1,7 @@ | ||||
| <!-- | ||||
|  * @Author: your name | ||||
|  * @Date: 2021-12-03 11:10:14 | ||||
|  * @LastEditTime : 2022-03-21 14:53:06 | ||||
|  * @LastEditTime : 2022-03-24 17:32:49 | ||||
|  * @LastEditors  : Shiming | ||||
|  * @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE | ||||
|  * @FilePath     : \\tms-obc-web\\src\\app\\routes\\waybill-management\\components\\vehicle\\vehicle.component.html | ||||
| @ -77,8 +77,8 @@ | ||||
|         <div> {{ item?.payeeName }}/{{ item?.payeePhone }} </div> | ||||
|       </ng-template> | ||||
|       <ng-template st-row="billExpenseDetailVOList2" let-item let-index="index"> | ||||
|         <div *ngIf="item?.billExpenseDetailVOList?.length > 0"> | ||||
|           <p *ngFor="let data of item?.billExpenseDetailVOList"> {{ data?.costName }}:{{ data?.price | currency }} </p> | ||||
|         <div *ngIf="item?.mybidInfo?.length > 0"> | ||||
|           <p *ngFor="let data of item?.mybidInfo"> {{ data?.expenseName }}:{{ data?.price | currency }} </p> | ||||
|         </div> | ||||
|       </ng-template> | ||||
|       <ng-template st-row="billExpenseDetailVOList" let-item let-index="index"> | ||||
|  | ||||
| @ -2,7 +2,7 @@ import { WaybillManagementBulkComponent } from './../components/bulk/bulk.compon | ||||
| /* | ||||
|  * @Author: your name | ||||
|  * @Date: 2021-12-07 14:52:29 | ||||
|  * @LastEditTime : 2022-03-11 17:26:20 | ||||
|  * @LastEditTime : 2022-03-24 15:17:57 | ||||
|  * @LastEditors  : Shiming | ||||
|  * @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE | ||||
|  * @FilePath     : \\tms-obc-web\\src\\app\\routes\\waybill-management\\services\\waybill-management.service.ts | ||||
| @ -49,10 +49,12 @@ export class WaybillManagementServe extends BaseService { | ||||
|   // 查询CRM客户信息表 | ||||
|   $api_get_crmCustomer_page = '/api/mdc/cuc/crmCustomer/list/page'; | ||||
|  | ||||
|   // 查询运营端未回复异常上报 | ||||
|   $api_get_listOperatePage = '/api/sdc/exceptionReport/listOperateUnReplyPage'; | ||||
|   // 查询运营端已回复异常上报 | ||||
|   $api_get_listOperateReplyPage = '/api/sdc/exceptionReport/listOperateReplyPage'; | ||||
|   // 查询运营端异常上报 | ||||
|   $api_get_listOperatePage = '/api/sdc/exceptionReport/listOperatePage'; | ||||
|   // 查询运营端异常上报数据统计 | ||||
|   $api_get_listOperateStatus = '/api/sdc/exceptionReport/listOperateStatus'; | ||||
|   // // 查询运营端已回复异常上报 | ||||
|   // $api_get_listOperateReplyPage = '/api/sdc/exceptionReport/listOperateReplyPage'; | ||||
|  // 获取轨迹 | ||||
|  $api_get_getTrajectory = `/api/sdc/billShipper/getTrajectoryByBillId`; | ||||
|  //  获取订单司机轨迹 | ||||
|  | ||||
| @ -152,16 +152,16 @@ export class EAUserService extends BaseService { | ||||
|    * 加载用户菜单 | ||||
|    */ | ||||
|   async loadUserMenus() { | ||||
|     // return this.asyncRequest(this.$api_get_user_menus, { | ||||
|     //   appId: this.envSrv.getEnvironment().appId | ||||
|     // }).then(res => { | ||||
|     //   this.cacheSrv.set(cacheConf.menu, res); | ||||
|     //   this.menuService.add(res); | ||||
|     // }); | ||||
|     this.request('assets/mocks/menu-data.json', {}, 'GET').subscribe((res: any) => { | ||||
|       this.cacheSrv.set(cacheConf.menu, res.menu); | ||||
|       this.menuService.add(res.menu); | ||||
|     return this.asyncRequest(this.$api_get_user_menus, { | ||||
|       appId: this.envSrv.getEnvironment().appId | ||||
|     }).then(res => { | ||||
|       this.cacheSrv.set(cacheConf.menu, res); | ||||
|       this.menuService.add(res); | ||||
|     }); | ||||
|     // this.request('assets/mocks/menu-data.json', {}, 'GET').subscribe((res: any) => { | ||||
|     //   this.cacheSrv.set(cacheConf.menu, res.menu); | ||||
|     //   this.menuService.add(res.menu); | ||||
|     // }); | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|  | ||||
| @ -61,13 +61,12 @@ export class EAFromToWidget extends ControlWidget implements OnInit { | ||||
|   } | ||||
|  | ||||
|   onChange(result: Array<any>): void { | ||||
|     console.log('onChange: ', result); | ||||
|  | ||||
|     // console.log('onChange: ', result); | ||||
|     if (this.type === 'date') { | ||||
|       if (JSON.stringify(result) !== '[]') { | ||||
|         this.setValue({ start: format(result[0], this.format), end: format(result[1], this.format) }); | ||||
|       } else { | ||||
|         this.setValue(null); | ||||
|         this.setValue({ start: '', end: '' }); | ||||
|       } | ||||
|     } else if (this.type === 'number') { | ||||
|     } else { | ||||
| @ -82,4 +81,8 @@ export class EAFromToWidget extends ControlWidget implements OnInit { | ||||
|   _change(value: string): void { | ||||
|     this.setValue(value); | ||||
|   } | ||||
|  | ||||
|   reset(value: string) { | ||||
|     this.date = []; | ||||
|   } | ||||
| } | ||||
|  | ||||
| @ -1,3 +1,13 @@ | ||||
| /* | ||||
|  * @Description  :  | ||||
|  * @Version      : 1.0 | ||||
|  * @Author       : Shiming | ||||
|  * @Date         : 2021-11-29 10:04:12 | ||||
|  * @LastEditors  : Shiming | ||||
|  * @LastEditTime : 2022-03-24 18:18:00 | ||||
|  * @FilePath     : \\tms-obc-web\\src\\app\\shared\\widget\\tinymce\\tinymce.widget.ts | ||||
|  * Copyright (C) 2022 huzhenhong. All rights reserved. | ||||
|  */ | ||||
| import { Component, OnInit } from '@angular/core'; | ||||
| import { ControlWidget } from '@delon/form'; | ||||
|  | ||||
|  | ||||
| @ -1,20 +1,16 @@ | ||||
| { | ||||
|   "success": true, | ||||
|   "data": { | ||||
|     "menu": [ | ||||
|       { | ||||
|     "menu": [{ | ||||
|       "text": "主导航", | ||||
|       "hideInBreadcrumb": true, | ||||
|         "children": [ | ||||
|           { | ||||
|       "children": [{ | ||||
|           "text": "用户中心", | ||||
|           "icon": "iconfont icon-yonghu-copy", | ||||
|           "group": true, | ||||
|             "children": [ | ||||
|               { | ||||
|           "children": [{ | ||||
|               "text": "货主管理", | ||||
|                 "children": [ | ||||
|                   { | ||||
|               "children": [{ | ||||
|                   "text": "企业列表", | ||||
|                   "link": "/usercenter/freight/list" | ||||
|                 }, | ||||
| @ -56,8 +52,7 @@ | ||||
|             { | ||||
|               "text": "司机管理", | ||||
|               "link": "/demo/zorro", | ||||
|                 "children": [ | ||||
|                   { | ||||
|               "children": [{ | ||||
|                   "text": "司机列表", | ||||
|                   "link": "/usercenter/driver" | ||||
|                 }, | ||||
| @ -82,8 +77,7 @@ | ||||
|           "text": "运力管理", | ||||
|           "icon": "iconfont icon-yunli-copy", | ||||
|           "group": true, | ||||
|             "children": [ | ||||
|               { | ||||
|           "children": [{ | ||||
|               "text": "车辆列表", | ||||
|               "link": "/vehicle/list" | ||||
|             }, | ||||
| @ -107,8 +101,7 @@ | ||||
|           "text": "货源管理", | ||||
|           "icon": "iconfont icon-huoyuan-copy", | ||||
|           "group": true, | ||||
|             "children": [ | ||||
|               { | ||||
|           "children": [{ | ||||
|               "text": "货源管理", | ||||
|               "link": "/supply-management/index", | ||||
|               "reuse": true | ||||
| @ -144,8 +137,7 @@ | ||||
|           "text": "订单管理", | ||||
|           "icon": "iconfont icon-dingdan-copy", | ||||
|           "group": true, | ||||
|             "children": [ | ||||
|               { | ||||
|           "children": [{ | ||||
|               "text": "整车订单", | ||||
|               "link": "/order-management/vehicle" | ||||
|             }, | ||||
| @ -185,8 +177,7 @@ | ||||
|           "text": "运单管理", | ||||
|           "icon": "iconfont icon-yundan-copy", | ||||
|           "group": true, | ||||
|             "children": [ | ||||
|               { | ||||
|           "children": [{ | ||||
|               "text": "整车运单", | ||||
|               "link": "/waybill-management/vehicle" | ||||
|             }, | ||||
| @ -214,19 +205,16 @@ | ||||
|           "text": "保险管理", | ||||
|           "icon": "iconfont icon-yundan-copy", | ||||
|           "group": true, | ||||
|             "children": [ | ||||
|               { | ||||
|           "children": [{ | ||||
|             "text": "保险列表", | ||||
|             "link": "/insurance-management/list" | ||||
|               } | ||||
|             ] | ||||
|           }] | ||||
|         }, | ||||
|         { | ||||
|           "text": "财务管理", | ||||
|           "icon": "iconfont icon-caiwu-copy", | ||||
|           "group": true, | ||||
|             "children": [ | ||||
|               { | ||||
|           "children": [{ | ||||
|               "text": "费用管理", | ||||
|               "link": "/financial-management/cost-management" | ||||
|             }, | ||||
| @ -332,11 +320,9 @@ | ||||
|           "text": "票务管理", | ||||
|           "icon": "iconfont icon-piaowu-copy", | ||||
|           "group": true, | ||||
|             "children": [ | ||||
|               { | ||||
|           "children": [{ | ||||
|               "text": "销项发票", | ||||
|                 "children": [ | ||||
|                   { | ||||
|               "children": [{ | ||||
|                   "text": "开票申请", | ||||
|                   "link": "/ticket/invoice-requested" | ||||
|                 }, | ||||
| @ -371,8 +357,7 @@ | ||||
|             }, | ||||
|             { | ||||
|               "text": "ETC发票", | ||||
|                 "children": [ | ||||
|                   { | ||||
|               "children": [{ | ||||
|                   "text": "申请发票", | ||||
|                   "link": "/ticket/etc-invoice-requested" | ||||
|                 }, | ||||
| @ -410,8 +395,7 @@ | ||||
|           "text": "合同管理", | ||||
|           "icon": "iconfont icon-hetong-copy", | ||||
|           "group": true, | ||||
|             "children": [ | ||||
|               { | ||||
|           "children": [{ | ||||
|               "text": "保单管理", | ||||
|               "link": "/contract-management/policy" | ||||
|             }, | ||||
| @ -429,12 +413,10 @@ | ||||
|           "text": "系统设置", | ||||
|           "icon": "iconfont icon-shezhi-copy", | ||||
|           "group": true, | ||||
|             "children": [ | ||||
|               { | ||||
|           "children": [{ | ||||
|               "text": "员工管理", | ||||
|               "group": true, | ||||
|                 "children": [ | ||||
|                   { | ||||
|               "children": [{ | ||||
|                   "text": "员工管理", | ||||
|                   "link": "/system/staff-management" | ||||
|                 }, | ||||
| @ -447,8 +429,7 @@ | ||||
|             { | ||||
|               "text": "操作日志", | ||||
|               "group": true, | ||||
|                 "children": [ | ||||
|                   { | ||||
|               "children": [{ | ||||
|                   "text": "系统操作日志", | ||||
|                   "link": "/logs/system-logs" | ||||
|                 }, | ||||
| @ -527,8 +508,7 @@ | ||||
|         { | ||||
|           "text": "合伙人管理", | ||||
|           "icon": "anticon anticon-dashboard", | ||||
|             "children": [ | ||||
|               { | ||||
|           "children": [{ | ||||
|               "text": "合伙人列表", | ||||
|               "link": "/partner/partner-list" | ||||
|             }, | ||||
| @ -539,8 +519,7 @@ | ||||
|             { | ||||
|               "text": "返佣管理", | ||||
|               "group": true, | ||||
|                 "children": [ | ||||
|                   { | ||||
|               "children": [{ | ||||
|                   "text": "返佣配置", | ||||
|                   "link": "/partner/rebate/setting" | ||||
|                 }, | ||||
| @ -565,8 +544,7 @@ | ||||
|             { | ||||
|               "text": "账户管理", | ||||
|               "group": true, | ||||
|                 "children": [ | ||||
|                   { | ||||
|               "children": [{ | ||||
|                   "text": "账户管理", | ||||
|                   "link": "/partner/account-management/am/list" | ||||
|                 }, | ||||
| @ -631,16 +609,13 @@ | ||||
|               "text": "知识库管理", | ||||
|               "icon": "iconfont icon-yundan-copy", | ||||
|               "group": true, | ||||
|                 "children": [ | ||||
|                   { | ||||
|               "children": [{ | ||||
|                   "text": "banner管理", | ||||
|                   "link": "/partner/knowledge/banner", | ||||
|                     "children": [ | ||||
|                       { | ||||
|                   "children": [{ | ||||
|                     "text": "新增banner", | ||||
|                     "link": "/partner/knowledge/banner/detail" | ||||
|                       } | ||||
|                     ] | ||||
|                   }] | ||||
|                 }, | ||||
|                 { | ||||
|                   "text": "文章管理", | ||||
| @ -657,353 +632,6 @@ | ||||
|                   "hide": true | ||||
|                 } | ||||
|               ] | ||||
|               }, | ||||
|               { | ||||
|                 "text": "运单管理", | ||||
|                 "icon": "iconfont icon-yundan-copy", | ||||
|                 "group": true, | ||||
|                 "children": [ | ||||
|                   { | ||||
|                     "text": "整车运单", | ||||
|                     "link": "/waybill-management/vehicle" | ||||
|                   }, | ||||
|                   { | ||||
|                     "hide": true, | ||||
|                     "text": "整车运单详情", | ||||
|                     "link": "/waybill-management/vehicle-detail/:id" | ||||
|                   }, | ||||
|                   { | ||||
|                     "text": "大宗运单", | ||||
|                     "link": "/waybill-management/bulk" | ||||
|                   }, | ||||
|                   { | ||||
|                     "hide": true, | ||||
|                     "text": "大宗运单详情", | ||||
|                     "link": "/waybill-management/bulk-detail/:id" | ||||
|                   }, | ||||
|                   { | ||||
|                     "text": "异常上报", | ||||
|                     "link": "/waybill-management/abnormal-appear" | ||||
|                   } | ||||
|                 ] | ||||
|               }, | ||||
|               { | ||||
|                 "text": "保险管理", | ||||
|                 "icon": "iconfont icon-yundan-copy", | ||||
|                 "group": true, | ||||
|                 "children": [ | ||||
|                   { | ||||
|                     "text": "保险列表", | ||||
|                     "link": "/insurance-management/list" | ||||
|                   } | ||||
|                 ] | ||||
|               }, | ||||
|               { | ||||
|                 "text": "财务管理", | ||||
|                 "icon": "iconfont icon-caiwu-copy", | ||||
|                 "group": true, | ||||
|                 "children": [ | ||||
|                   { | ||||
|                     "text": "费用管理", | ||||
|                     "link": "/financial-management/cost-management" | ||||
|                   }, | ||||
|                   { | ||||
|                     "text": "费用浏览", | ||||
|                     "hide": true, | ||||
|                     "link": "/financial-management/cost-management/detail/:id" | ||||
|                   }, | ||||
|                   { | ||||
|                     "text": "凭证管理", | ||||
|                     "link": "/financial-management/voucher-management" | ||||
|                   }, | ||||
|                   { | ||||
|                     "text": "凭证汇总", | ||||
|                     "link": "/financial-management/voucher-summary" | ||||
|                   }, | ||||
|                   { | ||||
|                     "text": "应收费用单", | ||||
|                     "hide": true, | ||||
|                     "link": "/financial-management/cost-management/expenses-receivable/:id" | ||||
|                   }, | ||||
|                   { | ||||
|                     "text": "应付费用单", | ||||
|                     "hide": true, | ||||
|                     "link": "/financial-management/cost-management/expenses-payable/:id" | ||||
|                   }, | ||||
|                   { | ||||
|                     "text": "付款单", | ||||
|                     "link": "/financial-management/payment-order" | ||||
|                   }, | ||||
|                   { | ||||
|                     "text": "收款单", | ||||
|                     "link": "/financial-management/receipt-order" | ||||
|                   }, | ||||
|                   { | ||||
|                     "text": "应收核销", | ||||
|                     "link": "/financial-management/receivable-order" | ||||
|                   }, | ||||
|                   { | ||||
|                     "text": "应收核销详情", | ||||
|                     "hide": true, | ||||
|                     "link": "/financial-management/receivable-order/detail/:id" | ||||
|                   }, | ||||
|                   { | ||||
|                     "text": "应付核销", | ||||
|                     "link": "/financial-management/payable-order" | ||||
|                   }, | ||||
|                   { | ||||
|                     "text": "应收核销详情", | ||||
|                     "hide": true, | ||||
|                     "link": "/financial-management/payable-order/detail/:id" | ||||
|                   }, | ||||
|                   { | ||||
|                     "text": "货主账户", | ||||
|                     "link": "/financial-management/freight-account" | ||||
|                   }, | ||||
|                   { | ||||
|                     "text": "货主账户详情", | ||||
|                     "hide": true, | ||||
|                     "link": "/financial-management/freight-account/detail/:id" | ||||
|                   }, | ||||
|                   { | ||||
|                     "text": "平台账户", | ||||
|                     "link": "/financial-management/platform-account" | ||||
|                   }, | ||||
|                   { | ||||
|                     "text": "司机账户", | ||||
|                     "link": "/financial-management/driver-account" | ||||
|                   }, | ||||
|                   { | ||||
|                     "text": "司机账户详情", | ||||
|                     "hide": true, | ||||
|                     "link": "/financial-management/driver-account/detail/:id" | ||||
|                   }, | ||||
|                   { | ||||
|                     "text": "充值记录", | ||||
|                     "link": "/financial-management/recharge-record" | ||||
|                   }, | ||||
|                   { | ||||
|                     "text": "提现记录", | ||||
|                     "link": "/financial-management/withdrawals-record" | ||||
|                   }, | ||||
|                   { | ||||
|                     "text": "提现详情", | ||||
|                     "hide": true, | ||||
|                     "link": "/financial-management/withdrawals-record/detail/:id" | ||||
|                   }, | ||||
|                   { | ||||
|                     "text": "异常入金", | ||||
|                     "link": "/financial-management/abnormal-gold" | ||||
|                   }, | ||||
|                   { | ||||
|                     "text": "支付记录", | ||||
|                     "link": "/financial-management/payment-record" | ||||
|                   }, | ||||
|                   { | ||||
|                     "text": "交易流水", | ||||
|                     "link": "/financial-management/transaction-flow" | ||||
|                   } | ||||
|                 ] | ||||
|               }, | ||||
|               { | ||||
|                 "text": "票务管理", | ||||
|                 "icon": "iconfont icon-piaowu-copy", | ||||
|                 "group": true, | ||||
|                 "children": [ | ||||
|                   { | ||||
|                     "text": "销项发票", | ||||
|                     "children": [ | ||||
|                       { | ||||
|                         "text": "开票申请", | ||||
|                         "link": "/ticket/invoice-requested" | ||||
|                       }, | ||||
|                       { | ||||
|                         "text": "开票订单明细", | ||||
|                         "link": "/ticket/invoice-requested/detail/:id", | ||||
|                         "hide": true | ||||
|                       }, | ||||
|                       { | ||||
|                         "text": "销票处理", | ||||
|                         "link": "/ticket/cancellation-invoice" | ||||
|                       }, | ||||
|                       { | ||||
|                         "text": "销票订单明细", | ||||
|                         "link": "/ticket/cancellation-invoice/detail/:id", | ||||
|                         "hide": true | ||||
|                       }, | ||||
|                       { | ||||
|                         "text": "已开发票", | ||||
|                         "link": "/ticket/invoice-list" | ||||
|                       }, | ||||
|                       { | ||||
|                         "text": "已开订单明细", | ||||
|                         "link": "/ticket/invoice-list/detail/:id", | ||||
|                         "hide": true | ||||
|                       }, | ||||
|                       { | ||||
|                         "text": "快递信息", | ||||
|                         "link": "/ticket/express-info" | ||||
|                       } | ||||
|                     ] | ||||
|                   }, | ||||
|                   { | ||||
|                     "text": "ETC发票", | ||||
|                     "children": [ | ||||
|                       { | ||||
|                         "text": "申请发票", | ||||
|                         "link": "/ticket/etc-invoice-requested" | ||||
|                       }, | ||||
|                       { | ||||
|                         "text": "开票记录", | ||||
|                         "link": "/ticket/etc-invoice-list" | ||||
|                       }, | ||||
|                       { | ||||
|                         "text": "已开发票", | ||||
|                         "link": "/ticket/etc-invoiced-logs" | ||||
|                       }, | ||||
|                       { | ||||
|                         "text": "ETC白名单", | ||||
|                         "link": "/ticket/etc-blacklist" | ||||
|                       } | ||||
|                     ] | ||||
|                   }, | ||||
|                   { | ||||
|                     "text": "进项发票", | ||||
|                     "link": "/ticket/input-invoice" | ||||
|                   }, | ||||
|                   { | ||||
|                     "text": "修改收票信息", | ||||
|                     "link": "/ticket/input-invoice/detail/:id", | ||||
|                     "hide": true | ||||
|                   }, | ||||
|                   { | ||||
|                     "text": "进项发票", | ||||
|                     "link": "/ticket/input-invoice/edit/:id", | ||||
|                     "hide": true | ||||
|                   } | ||||
|                 ] | ||||
|               }, | ||||
|               { | ||||
|                 "text": "合同管理", | ||||
|                 "icon": "iconfont icon-hetong-copy", | ||||
|                 "group": true, | ||||
|                 "children": [ | ||||
|                   { | ||||
|                     "text": "保单管理", | ||||
|                     "link": "/contract-management/policy" | ||||
|                   }, | ||||
|                   { | ||||
|                     "text": "合同管理", | ||||
|                     "link": "/contract-management/index" | ||||
|                   }, | ||||
|                   { | ||||
|                     "text": "合同模板", | ||||
|                     "link": "/contract-management/template" | ||||
|                   } | ||||
|                 ] | ||||
|               }, | ||||
|               { | ||||
|                 "text": "系统设置", | ||||
|                 "icon": "iconfont icon-shezhi-copy", | ||||
|                 "group": true, | ||||
|                 "children": [ | ||||
|                   { | ||||
|                     "text": "员工管理", | ||||
|                     "group": true, | ||||
|                     "children": [ | ||||
|                       { | ||||
|                         "text": "员工管理", | ||||
|                         "link": "/system/staff-management" | ||||
|                       }, | ||||
|                       { | ||||
|                         "text": "角色管理", | ||||
|                         "link": "/system/role-management" | ||||
|                       } | ||||
|                     ] | ||||
|                   }, | ||||
|                   { | ||||
|                     "text": "操作日志", | ||||
|                     "group": true, | ||||
|                     "children": [ | ||||
|                       { | ||||
|                         "text": "系统操作日志", | ||||
|                         "link": "/logs/system-logs" | ||||
|                       }, | ||||
|                       { | ||||
|                         "text": "货源操作日志", | ||||
|                         "link": "/logs/system-supply-logs" | ||||
|                       }, | ||||
|                       { | ||||
|                         "text": "订单操作日志", | ||||
|                         "link": "/logs/system-waybill-logs" | ||||
|                       }, | ||||
|                       { | ||||
|                         "text": "用户登录日志", | ||||
|                         "link": "/logs/user-logs" | ||||
|                       }, | ||||
|                       { | ||||
|                         "text": "版本发布记录", | ||||
|                         "link": "/logs/version-logs" | ||||
|                       } | ||||
|                     ] | ||||
|                   }, | ||||
|                   { | ||||
|                     "text": "CRM客户管理", | ||||
|                     "link": "/system/crm-management" | ||||
|                   }, | ||||
|                   { | ||||
|                     "text": "短信管理", | ||||
|                     "link": "/system/note-management" | ||||
|                   }, | ||||
|                   { | ||||
|                     "text": "结算客户管理", | ||||
|                     "link": "/system/close-account" | ||||
|                   }, | ||||
|                   { | ||||
|                     "text": "网络货运人", | ||||
|                     "link": "/system/network-freight" | ||||
|                   }, | ||||
|                   { | ||||
|                     "text": "基础设置", | ||||
|                     "link": "/system/basic-setting" | ||||
|                   }, | ||||
|                   { | ||||
|                     "text": "保险配置", | ||||
|                     "link": "/system/insurance-set" | ||||
|                   }, | ||||
|                   { | ||||
|                     "text": "公告信息管理", | ||||
|                     "link": "/system/announcement-message" | ||||
|                   }, | ||||
|                   { | ||||
|                     "text": "车型车长配置", | ||||
|                     "link": "/system/cart-config" | ||||
|                   }, | ||||
|                   { | ||||
|                     "text": "基础配置", | ||||
|                     "link": "/system/basic-config" | ||||
|                   }, | ||||
|                   { | ||||
|                     "text": "协议配置", | ||||
|                     "link": "/system/agreement-config" | ||||
|                   }, | ||||
|                   { | ||||
|                     "text": "菜单管理", | ||||
|                     "link": "/menu-management/index" | ||||
|                   }, | ||||
|                   { | ||||
|                     "text": "接口权限", | ||||
|                     "link": "/menu-management/auth" | ||||
|                   }, | ||||
|                   { | ||||
|                     "text": "系统配置", | ||||
|                     "link": "/system/system-config" | ||||
|                   }, | ||||
|                   { | ||||
|                     "text": "分类管理", | ||||
|                     "link": "/partner/knowledge/classification" | ||||
|                   } | ||||
|                 ] | ||||
|             } | ||||
|           ] | ||||
|         }, | ||||
| @ -1011,15 +639,12 @@ | ||||
|           "text": "数据监管", | ||||
|           "icon": "iconfont icon-hetong-copy", | ||||
|           "group": true, | ||||
|             "children": [ | ||||
|               { | ||||
|           "children": [{ | ||||
|             "text": "数据报表", | ||||
|             "link": "/regulatory-data/dashboard" | ||||
|           }] | ||||
|         } | ||||
|       ] | ||||
|           } | ||||
|         ] | ||||
|       } | ||||
|     ] | ||||
|     }] | ||||
|   } | ||||
| } | ||||
| @ -16,6 +16,6 @@ | ||||
| @primary-color : #F5222D; | ||||
| @font-size-base: 15px; | ||||
|  | ||||
| .page-header__title { | ||||
|     display: none; | ||||
| } | ||||
| // .page-header__title { | ||||
| //     display: none; | ||||
| // } | ||||
|  | ||||
		Reference in New Issue
	
	Block a user