Merge branch 'develop' of https://gitlab.eascs.com/tms-ui/tms-obc-web into develop

This commit is contained in:
Taric Xin
2021-12-28 17:36:54 +08:00
21 changed files with 576 additions and 387 deletions

View File

@ -172,7 +172,9 @@ export class AccountComponentsCenterComponent implements OnInit {
const modalRef = this.modalService.create({
nzTitle: '设置/修改登录密码',
nzContent: AccountComponentsCenterEditComponent,
nzComponentParams: { },
nzComponentParams: {
record: this.infoData
},
});
modalRef.afterClose.subscribe((result: any) => {
if (result === true) {

View File

@ -1,7 +1,7 @@
<!--
* @Author: your name
* @Date: 2021-11-29 11:06:01
* @LastEditTime: 2021-12-27 20:37:25
* @LastEditTime: 2021-12-28 14:11:58
* @LastEditors: Please set LastEditors
* @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
* @FilePath: \tms-obc-web\src\app\routes\account\components\edit-name\edit-name.component.html
@ -57,3 +57,16 @@
<button nz-button nzType="primary" (click)="handleNew()">确定</button>
</ng-template>
</nz-modal>
<nz-modal [(nzVisible)]="isVisibleOk" [nzWidth]="600" (nzOnCancel)="handleCancel('1')" [nzFooter]='null' >
<ng-container *nzModalContent>
<nz-result
nzStatus="success"
nzTitle="修改成功!"
nzSubTitle="您已绑定新手机号,以后可用新手机号登录!"
>
<div nz-result-extra>
<button nz-button nzType="primary" (click)="handleCancel('3')">确定</button>
</div>
</nz-result>
</ng-container>
</nz-modal>

View File

@ -24,6 +24,7 @@ export class AccountComponentsEditNameComponent implements OnInit, AfterViewInit
ui!: SFUISchema;
uiView: SFUISchema = {};
isVisibleView = false;
isVisibleOk = false;
formData: any = {};
count = 0;
count2 = 0;
@ -236,6 +237,8 @@ export class AccountComponentsEditNameComponent implements OnInit, AfterViewInit
this.isVisibleView = false
} else if(type === '2') {
console.log(type)
} else if(type === '3') {
this.modal.close()
}
}
handleOK() {
@ -250,8 +253,8 @@ export class AccountComponentsEditNameComponent implements OnInit, AfterViewInit
this.service.http.post(this.service.$api_get_verifyPhone, params).subscribe((res) => {
console.log(res);
if (res.success) {
this.modal.close(true);
this.service.msgSrv.success(res.msg);
this.isVisibleOk = true;
} else {
this.service.msgSrv.warning(res.msg);
}

View File

@ -1,7 +1,7 @@
<!--
* @Author: your name
* @Date: 2021-11-29 13:50:46
* @LastEditTime: 2021-11-29 14:44:30
* @LastEditTime: 2021-12-28 14:02:39
* @LastEditors: Please set LastEditors
* @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
* @FilePath: \tms-obc-web\src\app\routes\account\components\edit\edit.component.html
@ -9,13 +9,14 @@
<form nz-form [formGroup]="validateForm">
<nz-form-item>
<nz-form-label nzRequired>新密码</nz-form-label>
<nz-form-control nzErrorTip="请填写反馈类型,20字以内">
<nz-input-group [nzSuffix]="suffixTemplate">
<nz-form-control nzErrorTip="密码格式错误">
<nz-input-group [nzSuffix]="suffixTemplate" name='passWord'>
<input
[type]="passwordVisible ? 'text' : 'password'"
nz-input
placeholder="input password"
placeholder="请输入新密码"
[(ngModel)]="password"
formControlName="passWord"
/>
</nz-input-group>
<ng-template #suffixTemplate>
@ -25,12 +26,13 @@
</nz-form-item>
<nz-form-item>
<nz-form-label nzRequired>确认新密码</nz-form-label>
<nz-form-control nzErrorTip="请填写反馈类型,20字以内">
<nz-input-group [nzSuffix]="suffixTemplate2">
<nz-form-control nzErrorTip="密码不一致">
<nz-input-group [nzSuffix]="suffixTemplate2" name='passWordTo'>
<input
[type]="passwordVisible2 ? 'text' : 'password'"
nz-input
placeholder="input password"
formControlName="passWordTo"
placeholder="请确认输入新密码"
[(ngModel)]="password2"
/>
</nz-input-group>
@ -41,30 +43,25 @@
</nz-form-item>
<nz-form-item>
<nz-form-label nzRequired>手机号</nz-form-label>
158****4444
{{this.record?.phone}}
</nz-form-item>
<nz-form-item>
<nz-form-label
[nzSm]="6"
[nzXs]="24"
nzFor="captcha"
nzFor="smsVerifyCode"
nzRequired
nzTooltipTitle="Please click 'Get captcha'"
[nzTooltipIcon]="captchaTooltipIcon"
>
Captcha
验证码
</nz-form-label>
<nz-form-control
[nzSm]="14"
[nzXs]="24"
nzErrorTip="Please input the captcha you got!"
nzExtra="We must make sure that your are a human."
>
<div nz-row [nzGutter]="8">
<div nz-col [nzSpan]="12">
<input nz-input formControlName="captcha" id="captcha" />
<input nz-input formControlName="smsVerifyCode" id="smsVerifyCode" />
</div>
<div nz-col [nzSpan]="12">
<div nz-col [nzSpan]="12" style="display: flex; align-items: center;">
<button nz-button *ngIf="count < 1;" (click)="getCaptcha($event)">获取验证码</button>
<span *ngIf="count > 1;">{{ count > 0 ? '请等待' + count + 's' : '获取验证码' }}</span>
</div>
@ -74,5 +71,20 @@
</form>
<div *nzModalFooter>
<button nz-button nzType="default" (click)="destroyModal()">取消</button>
<button nz-button nzType="primary" (click)="save()" >保存</button>
<button nz-button nzType="primary" (click)="save()" >确定</button>
</div>
<nz-modal [(nzVisible)]="isVisibleView" [nzWidth]="600" (nzOnCancel)="handleCancel()" [nzFooter]='null' >
<ng-container *nzModalContent>
<nz-result
nzStatus="success"
nzTitle="密码设置成功!"
nzSubTitle="请牢记您的新密码修改密码后需重新登录3秒后自动跳转至登录页..."
>
<div nz-result-extra>
<button nz-button nzType="primary" (click)="handleOK()">重新登录</button>
</div>
</nz-result>
</ng-container>
</nz-modal>

View File

@ -1,15 +1,17 @@
/*
* @Author: your name
* @Date: 2021-11-29 13:50:46
* @LastEditTime: 2021-11-29 14:58:33
* @LastEditTime: 2021-12-28 14:19:32
* @LastEditors: Please set LastEditors
* @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
* @FilePath: \tms-obc-web\src\app\routes\account\components\edit\edit.component.ts
*/
import { Component, OnInit, ViewChild } from '@angular/core';
import { FormBuilder, FormGroup, Validators, ValidatorFn } from '@angular/forms';
import { Component, Inject, OnInit, ViewChild } from '@angular/core';
import { FormBuilder, FormControl, FormGroup, ValidatorFn, Validators } from '@angular/forms';
import { ActivatedRoute, Router } from '@angular/router';
import { STChange, STColumn, STComponent, STData, STRequestOptions } from '@delon/abc/st';
import { DA_SERVICE_TOKEN, ITokenService } from '@delon/auth';
import { SFComponent, SFSchema, SFSelectWidgetSchema, SFUISchema } from '@delon/form';
import { NzDrawerRef, NzDrawerService } from 'ng-zorro-antd/drawer';
import { NzFormTooltipIcon } from 'ng-zorro-antd/form';
@ -21,17 +23,25 @@ import { AccountService } from '../../services/account.service';
templateUrl: './edit-password.component.html'
})
export class AccountComponentsCenterEditComponent implements OnInit {
url = `/rule?_allow_anonymous=true`;
validateForm!: FormGroup;
record: any;
count = 0;
type = 'create';
isVisibleView = false
passwordVisible = false;
passwordVisible2 = false;
password?: string;
password2?: string;
password: any;
password2: any;
interval$: any;
confirmPasswordValidator!: ValidatorFn;
confirmationValidator =
(control: FormControl): { [s: string]: boolean } => {
if (!control.value) {
return { required: true };
} else if (control?.value !== this.validateForm?.value?.passWord) {
return { confirm: true, error: true };
}
return {};
};
captchaTooltipIcon: NzFormTooltipIcon = {
type: 'info-circle',
theme: 'twotone'
@ -41,25 +51,27 @@ export class AccountComponentsCenterEditComponent implements OnInit {
public ar: ActivatedRoute,
private modalRef: NzModalRef,
private fb: FormBuilder,
public service: AccountService
public service: AccountService,
@Inject(DA_SERVICE_TOKEN) private tokenService: ITokenService
) {}
ngOnInit() {
this.initForm();
console.log(this.record.phone)
}
initForm () {
this.validateForm = this.fb.group({
passWord: [
null,
passWord: [null,
[
Validators.required,
Validators.maxLength(16),
Validators.minLength(8),
Validators.pattern('^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z-_]{8,16}$')
]
],
passWordTo: [null, [this.confirmPasswordValidator, Validators.required, Validators.maxLength(16), Validators.minLength(8)]],
voucher: [null, [Validators.required]]
]],
passWordTo: [null, [ Validators.required, Validators.maxLength(16), Validators.minLength(8), this.confirmationValidator,]],
smsVerifyCode: [null, [Validators.required]],
});
}
}
destroyModal(): void {
this.modalRef.destroy();
}
@ -71,23 +83,36 @@ export class AccountComponentsCenterEditComponent implements OnInit {
this.service.msgSrv.success('发送成功');
e.preventDefault();
this.codeCountDown();
} else if (res.code === '503046') {
// this.dun.popUp();
} else {
}else {
this.service.msgSrv.success(res.msg);
}
});
}
save() {
// const params = { id: this.record.id, name: this.validateForm.value.name };
// this.service.request(this.service.$api_feedbackTypeupdate, params).subscribe((res) => {
// if (res) {
// this.modalRef.close(true);
// this.service.msgSrv.success('保存成功!');
// } else {
// this.service.msgSrv.error(res.msg);
// }
// });
if(!this.validateForm.valid) {
this.service.msgSrv.warning('必填项为空或格式错误,请检查!')
return;
}
console.log(this.validateForm)
console.log(this.validateForm.value)
const params = {
...this.validateForm.value
};
console.log(params)
this.service.request(this.service.$api_set_phoneUpdatePassword, params).subscribe((res) => {
if (res) {
this.service.msgSrv.success('修改密码成功!');
this.isVisibleView = true;
setTimeout(() => {
this.tokenService.clear();
this.router.navigate(['/passport/login'])
this.modalRef.close()
}, 3000)
} else {
this.service.msgSrv.error(res.msg);
}
});
}
/* code倒计时 */
codeCountDown() {
@ -99,11 +124,12 @@ export class AccountComponentsCenterEditComponent implements OnInit {
}
}, 1000);
}
submitForm(): void {
// tslint:disable-next-line: forin
for (const i in this.validateForm.controls) {
this.validateForm.controls[i].markAsDirty();
this.validateForm.controls[i].updateValueAndValidity();
handleCancel() {
this.isVisibleView = false
}
handleOK() {
this.modalRef.close()
this.tokenService.clear();
this.router.navigate(['/passport/login'])
}
}

View File

@ -1,7 +1,7 @@
/*
* @Author: your name
* @Date: 2021-11-02 11:12:21
* @LastEditTime: 2021-12-27 17:10:47
* @LastEditTime: 2021-12-28 13:52:35
* @LastEditors: Please set LastEditors
* @Description: In User Settings Edit
* @FilePath: \scm-ows-ui\src\app\routes\account\services\account.service.ts
@ -31,6 +31,8 @@ export class AccountService extends BaseService {
// 凭证修改手机号
$api_set_voucherUpdatePhone = `/api/mdc/cuc/userBasicInfo/forgetPassword/voucherUpdatePhone`;
// 凭证修改密码
$api_set_phoneUpdatePassword = `/api/mdc/cuc/userBasicInfo/phoneUpdatePassword`;
constructor(public injector: Injector) {
super(injector);
}

View File

@ -1,7 +1,7 @@
<!--
* @Author: your name
* @Date: 2021-12-03 15:31:52
* @LastEditTime: 2021-12-28 10:46:37
* @LastEditTime: 2021-12-28 16:31:50
* @LastEditors: Please set LastEditors
* @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
* @FilePath: \tms-obc-web\src\app\routes\order-management\components\vehicle-detail\vehicle-detail.component.html
@ -31,51 +31,26 @@
<sv label="网络货运人">{{ i?.goodsResource?.[0]?.enterpriseInfoName }} </sv>
<sv label="货主">{{ i?.goodsResource?.[0]?.shipperAppUserName }} </sv>
<sv label="所属项目">{{i?.goodsResource?.[0]?.enterpriseProjectName}}</sv>
<sv label="服务类型">{{i?.goodsResource?.[0]?.serviceTypeLabel}}</sv>
<sv label="录单员">{{i?.goodsResource?.[0]?.dispatchName}} 18100000000 </sv>
<sv label="服务类型8">{{i?.goodsResource?.[0]?.serviceTypeLabel}}</sv>
<sv label="录单员">{{i?.createUserNameLabel}} </sv>
<sv label="调度员">{{i?.goodsResource?.[0]?.dispatchName}} </sv>
</div>
<nz-tabset style="margin-top: 15px;">
<nz-tab [nzTitle]="tempt" >
<ng-template #tempt>
<nz-anchor>
<nz-link nzHref="#distannce1" nzTitle="装卸货信息"></nz-link>
</nz-anchor>
</ng-template>
<nz-tab nzTitle="装卸货信息" (nzClick)="goDistance(distannce1)">
</nz-tab>
<nz-tab [nzTitle]="tempt2" >
<ng-template #tempt2>
<nz-anchor>
<nz-link nzHref="#distannce2" nzTitle="基本信息"></nz-link>
</nz-anchor>
</ng-template>
<nz-tab nzTitle="基本信息" (nzClick)="goDistance(distannce2)">
</nz-tab>
<nz-tab [nzTitle]="tempt3" >
<ng-template #tempt3>
<nz-anchor>
<nz-link nzHref="#distannce3" nzTitle="运费信息"></nz-link>
</nz-anchor>
</ng-template>
<nz-tab nzTitle="运费信息" (nzClick)="goDistance(distannce3)">
</nz-tab>
<nz-tab [nzTitle]="tempt4" >
<ng-template #tempt4>
<nz-anchor>
<nz-link nzHref="#distannce4" nzTitle="附件信息"></nz-link>
</nz-anchor>
</ng-template>
<nz-tab nzTitle="附件信息" (nzClick)="goDistance(distannce4)">
</nz-tab>
<nz-tab [nzTitle]="tempt5" >
<ng-template #tempt5>
<nz-anchor>
<nz-link nzHref="#distannce5" nzTitle="轨迹信息"></nz-link>
</nz-anchor>
</ng-template>
<nz-tab nzTitle="轨迹信息" (nzClick)="goDistance(distannce5)">
</nz-tab>
</nz-tabset>
</div>
</ng-template>
</page-header-wrapper>
<nz-card nzTitle="运单进度">
<nz-card nzTitle="运单进度" #distannce1>
<div class="approval-status">
<div style="width: 60%; margin: 0 auto">
  <nz-steps [nzCurrent]="i?.scheduleVOList?.length + 1" nzLabelPlacement="vertical">
@ -91,7 +66,7 @@
</div>
</nz-card>
<nz-card nzTitle="基本信息">
<nz-card nzTitle="基本信息" #distannce2>
<sv-container col="1">
<sv label="货物名称">
{{i?.goodsInfoList?.[0]?.goodsName}}
@ -105,10 +80,10 @@
{{i?.goodsInfoList?.[0]?.maxWeightLabel}}/{{i?.goodsInfoList?.[0]?.maxCube}}
</sv>
<sv label="承运司机">
{{i?.driverId}}
{{i?.driverName}}/{{i?.driverPhone}}{{i?.carNo}}
</sv>
<sv label="车型车长载重">
{{i?.goodsInfoList?.[0]?.weight}},{{i?.goodsInfoList?.[0]?.volume}},{{i?.goodsInfoList?.[0]?.number}}
{{i?.carModel}},{{i?.carLength}},{{i?.carLoad ? i?.carLoad +'吨': ''}}
</sv>
<sv label="计划装货时间">
{{i?.loadPlanTime}}
@ -129,10 +104,10 @@
<div class="mt-md">
<h4 class="text-md">装货卸货信息
<span class="ml-sm text-sm">(
<label>{{i?.loadingCount}}装</label>
<label>{{i?.unloadingCount}}卸</label>
)
<label>{{i?.loadingCount || '一'}}装</label>
<label>{{i?.unloadingCount || '一'}}卸</label>
</span>
)
</h4>
<div nz-row [nzGutter]="24">
<div nz-col [nzSpan]="12">
@ -164,16 +139,20 @@
</div>
</div>
</nz-card>
<nz-card nzTitle="运费信息" id="distannce3">
<nz-card nzTitle="运费信息" #distannce3>
<h2>{{i?.goodsInfoList?.[0]?.freightPrice}}{{i?.goodsInfoList?.[0]?.freightTypeLabel}}(以发货为准,保留小数)</h2>
<st #st [data]="i?.billExpenseDetails" [columns]="logColumns" [ps]="0" [page]="{ show: false, showSize: false }">
</st>
<div>总计:{{i?.total | currency: '¥'}}运费¥3500.00附加运费¥191.98附加费率3.5%</div>
<div>收款人:</div>
<div>
总计:<span style="color: #da001b; font-size: 18px">{{ totalObj?.price | currency: '¥' }}</span> (运费¥{{
totalObj?.price - attObj?.price
}},附加运费¥{{ attObj?.price }},附加费率{{ (attObj?.price / totalObj?.price) * 100 | number: '0.2-2' }}%
</div>
<div>收款人:{{ i?.payeeName }}/{{ i?.payeePhone }}</div>
</nz-card>
<nz-card nzTitle="附件信息" id="distannce4">
<nz-card nzTitle="附件信息" #distannce4>
<sv-container>
<sv label="协议附件">
<!-- {{i?.supplementaryInformationVO?.stateReceipt?'是':'否'}} -->
@ -223,7 +202,7 @@
<nz-card>
<div nz-row>
<nz-card nzTitle="轨迹信息" style="width: 100%;" id="distannce5">
<nz-card nzTitle="轨迹信息" style="width: 100%;" #distannce5>
<div nz-row >
<div nz-col [nzSpan]='12'>
<!-- <st #st [data]="i?.auditRecordList" [columns]="logColumns" [ps]="0" [page]="{ show: false, showSize: false }">

View File

@ -2,7 +2,7 @@ import { Router } from '@angular/router';
/*
* @Author: your name
* @Date: 2021-12-03 15:31:52
* @LastEditTime: 2021-12-24 17:40:51
* @LastEditTime: 2021-12-28 16:23:04
* @LastEditors: Please set LastEditors
* @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
* @FilePath: \tms-obc-web\src\app\routes\order-management\components\vehicle-detail\vehicle-detail.component.ts
@ -14,6 +14,7 @@ import { _HttpClient } from '@delon/theme';
import { NzMessageService } from 'ng-zorro-antd/message';
import { NzModalService } from 'ng-zorro-antd/modal';
import { OrderManagementService } from '../../services/order-management.service';
import { NzCardComponent } from 'ng-zorro-antd/card';
@Component({
selector: 'app-supply-management-bulk-detail',
templateUrl: './bulk-detail.component.html',
@ -25,6 +26,8 @@ export class OrderManagementBulkeDetailComponent implements OnInit {
id = this.route.snapshot.params.id;
i: any;
imges: any;
totalObj: any;
attObj: any;
isVisible = false;
logColumns: STColumn[] = [
{ title: '款项', index: 'expenseName' },
@ -66,6 +69,8 @@ export class OrderManagementBulkeDetailComponent implements OnInit {
console.log(res)
if (res) {
this.i =res;
this.attObj = this.i?.billExpenseDetails?.filter((data: any) => data.expenseCode === 'ATT')[0];
this.totalObj = this.i?.billExpenseDetails?.filter((data: any) => data.expenseCode === 'TOTAL')[0];
}
})
}
@ -93,4 +98,9 @@ export class OrderManagementBulkeDetailComponent implements OnInit {
handleOK() {
this.isVisible = false
}
goDistance(elf: NzCardComponent) {
if (elf) {
elf['elementRef'].nativeElement.scrollIntoView({ behavior: 'smooth', block: 'start', inline: 'start' });
}
}
}

View File

@ -1,11 +1,12 @@
<!--
* @Author: your name
* @Date: 2021-12-03 15:31:52
* @LastEditTime: 2021-12-28 09:56:51
* @LastEditTime: 2021-12-28 16:32:53
* @LastEditors: Please set LastEditors
* @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
* @FilePath: \tms-obc-web\src\app\routes\order-management\components\vehicle-detail\vehicle-detail.component.html
-->
<nz-affix [nzOffsetTop]="10">
<page-header-wrapper [title]="''" [logo]="logo" [content]="headerContent">
<ng-template #logo>
<button nz-button nz-tooltip nzTooltipTitle="返回上一页" (click)="goBack()">
@ -52,6 +53,7 @@
</div>
</ng-template>
</page-header-wrapper>
</nz-affix>
<nz-card nzTitle="运单进度" #distannce1>
<div class="approval-status">
<div style="width: 60%; margin: 0 auto">
@ -64,7 +66,7 @@
</div>
</nz-card>
<nz-card nzTitle="基本信息" #distannce2>
<nz-card nzTitle="基本信息" #distannce2 >
<sv-container col="1">
<sv-title>货物信息</sv-title>
<sv label="网络货运人">
@ -82,14 +84,14 @@
{{i?.goodsInfoList?.[0]?.maxWeightLabel}}/{{i?.goodsInfoList?.[0]?.maxCube}}
</sv>
<sv label="承运司机">
<!-- {{i?.driverId}} -->
{{i?.driverName}}/{{i?.driverPhone}}/{{i?.carNo}}
</sv>
<sv label="车型车长载重">
{{i?.goodsInfoList?.[0]?.weight}},{{i?.goodsInfoList?.[0]?.volume}},{{i?.goodsInfoList?.[0]?.number}}
{{i?.carModel}},{{i?.carLength}},{{i?.carLoad ? i?.carLoad +'吨': ''}}
</sv>
</sv-container>
<div class="mt-md">
<h4 class="text-md">装货卸货信息
<div class="mt-md" >
<h4 class="text-md" >装货卸货信息
<span class="ml-sm text-sm">(
<label>{{i?.loadingCount}}装</label>
<label>{{i?.unloadingCount}}卸</label>
@ -135,8 +137,12 @@
<st #st [data]="i?.billExpenseDetails" [columns]="logColumns" [ps]="0" [page]="{ show: false, showSize: false }">
</st>
<div>总计:{{i?.total | currency: '¥'}}运费¥3500.00附加运费¥191.98附加费率3.5%</div>
<div>收款人:</div>
<div>
总计:<span style="color: #da001b; font-size: 18px">{{ totalObj?.price | currency: '¥' }}</span> (运费¥{{
totalObj?.price - attObj?.price
}},附加运费¥{{ attObj?.price }},附加费率{{ (attObj?.price / totalObj?.price) * 100 | number: '0.2-2' }}%
</div>
<div>收款人:{{ i?.payeeName }}/{{ i?.payeePhone }}</div>
</nz-card>
<nz-card nzTitle="附件信息" id="distannce4" #distannce4>
@ -206,7 +212,7 @@
<nz-modal [(nzVisible)]="isVisible" [nzFooter]="nzModalFooter" nzTitle="附件信息" (nzOnOk)="handleOK()"
(nzOnCancel)="handleCancel()">
<ng-container *nzModalContent>
<app-imagelist [imgList]="[imges]"></app-imagelist>
<app-imagelist [imgList]="imges"></app-imagelist>
</ng-container>
<ng-template #nzModalFooter>
<button nz-button nzType="primary" (click)="handleOK()" [disabled]="">取消</button>

View File

@ -2,7 +2,7 @@ import { ViewChild } from '@angular/core';
/*
* @Author: your name
* @Date: 2021-12-03 15:31:52
* @LastEditTime: 2021-12-27 21:05:48
* @LastEditTime: 2021-12-28 16:22:50
* @LastEditors: Please set LastEditors
* @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
* @FilePath: \tms-obc-web\src\app\routes\order-management\components\vehicle-detail\vehicle-detail.component.ts
@ -29,6 +29,8 @@ export class OrderManagementVehicleDetailComponent implements OnInit {
goodsResource: []
};
imges: any;
attObj: any;
totalObj: any;
approvalLsit: any;
isVisible = false;
logColumns: STColumn[] = [
@ -72,6 +74,8 @@ export class OrderManagementVehicleDetailComponent implements OnInit {
if (res) {
this.i = res;
this.approvalLsit = res.scheduleVOList;
this.attObj = this.i?.billExpenseDetails?.filter((data: any) => data.expenseCode === 'ATT')[0];
this.totalObj = this.i?.billExpenseDetails?.filter((data: any) => data.expenseCode === 'TOTAL')[0];
this.approvalLsit.map((item: any, key: any) => {
console.log(item);
if (item.displayStatus === 'HIDE') {
@ -108,7 +112,7 @@ export class OrderManagementVehicleDetailComponent implements OnInit {
goDistance(elf: NzCardComponent) {
if (elf) {
elf['elementRef'].nativeElement.scrollIntoView({ behavior: 'smooth', block: 'start', inline: 'start' });
elf['elementRef'].nativeElement.scrollIntoView({ behavior: 'smooth', block: 'start', inline: 'start' , yOffset : 400 });
}
}
}

View File

@ -22,7 +22,7 @@
</div>
<div class="mt-sm mb-sm" nz-row>
<div>
<b>总费用:<span class="text-red-light text-md">{{i?.freightPrice | currency}}</span></b>
<b>总费用:<span class="text-red-light text-md">{{i?.freightPrice | currency: '¥'}}</span></b>
</div>
</div>
<nz-divider></nz-divider>
@ -79,8 +79,8 @@
<div class="mt-md">
<h4 class="text-md">装货卸货信息
<span class="ml-sm text-sm">(
<label>{{i?.loadingCount}}装</label>
<label>{{i?.unloadingCount}}卸</label>
<label>{{i?.loadingCount || '一'}}装</label>
<label>{{i?.unloadingCount || '一'}}卸</label>
)
</span>
</h4>
@ -129,7 +129,7 @@
<nz-divider class="mb-xs mt-xs"></nz-divider>
<div class="text-right">
<label>单价:</label>
<span class="text-error-dark text-xxl">{{item?.freightPrice | currency}}
<span class="text-error-dark text-xxl">{{item?.freightPrice | currency: '¥'}}
{{freightType[item?.freightType]}}</span>
</div>
</div>

View File

@ -259,22 +259,22 @@ export class SupplyManagementBulkComponent implements OnInit {
{
text: '货源审核',
click: (_record) => this.audit(_record, 1),
// iif: item => item.auditStatus === 1,
iif: item => item.auditStatus == 1,
},
{
text: '二维码',
click: (_record) => this.assignedQrcode(_record),
// iif: item => item.auditStatus === 1 || item.auditStatus === 2,
iif: item => item.auditStatus == 1 || item.auditStatus == 2,
},
{
text: '修改单价',
click: (_record) => this.modification(_record),
// iif: item => item.auditStatus === 1 || item.auditStatus === 2,
iif: item => item.auditStatus == 1 || item.auditStatus == 2,
},
{
text: '取消货源',
click: (_record) => this.delOne(_record),
// iif: item => item.auditStatus === 1 || item.auditStatus === 2,
iif: item => item.auditStatus == 1 || item.auditStatus == 2,
},
{
text: '再下一单',
@ -282,8 +282,8 @@ export class SupplyManagementBulkComponent implements OnInit {
},
{
text: '重新指派',
// click: (_record) => this.delOne(_record),
// iif: item => item.auditStatus === 2,
click: (_record) => this.delOne(_record),
iif: item => item.auditStatus == 2,
},
],
},
@ -402,14 +402,31 @@ export class SupplyManagementBulkComponent implements OnInit {
handleOK() {
}
// 修改货源
// 修改单价
modification(item: any) {
this.router.navigate(['/supply-management/bulk-amend', item.id], {
queryParams: {
sta: 3
const modalRef = this.modal.create({
nzTitle: '修改单价',
nzWidth: '600px',
nzContent: SupplyManagementUpdatePriceComponent,
nzComponentParams: {
record: item,
},
nzFooter: null,
});
modalRef.afterClose.subscribe(res => {
if (res) {
console.log(res)
// this.getGoodsSourceDetail();
}
})
}
// getGoodsSourceDetail() {
// this.service.request(this.service.$api_get_bulk_detail, { id: this.id }).subscribe(res => {
// this.i = res;
// this.currentStatus = +this.i?.resourceStatus - 1;
// })
// }
// 再下一单
nextOrder(item: any) {
this.router.navigate(['/supply-management/bulk-amend', item.id], {

View File

@ -1,14 +1,23 @@
<!--
* @Author: your name
* @Date: 2021-12-03 11:10:14
* @LastEditTime: 2021-12-28 17:24:48
* @LastEditors: your name
* @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
* @FilePath: \tms-obc-web\src\app\routes\supply-management\components\qrcode-page\qrcode-page.component.html
-->
<nz-spin *ngIf="!i" class="modal-spin"></nz-spin>
<div style="width: 60%;margin: 0 auto;">
<div style="width: 50%;margin: 0 auto;">
<div class="">
<h2>公司名称:{{i.companyName}}</h2>
<h2>公司名称 : {{i?.enterpriseInfoName}}</h2>
<qr [value]="i.id" #qr></qr>
<div>卸货地:{{i.adddress}}</div>
<div>装货地:{{i.adddress}}</div>
<div>截止时间:{{i.createdAt}}</div>
<div>Tips:二维码用于司机扫码抢单</div>
</div>
<div class="modal-footer text-center">
<button nz-button type="submit" nzType="primary" (click)="downLoadQrcode('二维码')">下载二维码</button>
<div class="mb-sm" *ngFor="let address of i?.loadingAddressArr">卸货地 : {{address}}</div>
<div class="mb-sm" *ngFor="let address of i?.unloadingAddressArr">装货地 : {{address}}</div>
<div class="mb-sm">截止时间 : {{i?.deadlineTime}}</div>
<div>Tips : 二维码用于司机扫码抢单</div>
</div>
</div>
<div class="modal-footer text-center">
<button nz-button type="submit" nzType="primary" (click)="downLoadQrcode('二维码')">下载二维码</button>
</div>

View File

@ -1,9 +1,14 @@
import { THIS_EXPR } from '@angular/compiler/src/output/output_ast';
/*
* @Author: your name
* @Date: 2021-12-03 11:10:14
* @LastEditTime: 2021-12-28 17:24:54
* @LastEditors: your name
* @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
* @FilePath: \tms-obc-web\src\app\routes\supply-management\components\qrcode-page\qrcode-page.component.ts
*/
import { Component, OnInit, ViewChild } from '@angular/core';
import { QRComponent } from '@delon/abc/qr';
import { SFSchema, SFUISchema } from '@delon/form';
import { _HttpClient } from '@delon/theme';
import { NzMessageService } from 'ng-zorro-antd/message';
import { NzModalRef } from 'ng-zorro-antd/modal';
@ -15,16 +20,7 @@ export class SupplyManagementQrcodePageComponent implements OnInit {
@ViewChild('qr') qr!: QRComponent;
record: any = {};
i: any;
schema: SFSchema = {
properties: {
no: { type: 'string', title: '编号' },
owner: { type: 'string', title: '姓名', maxLength: 15 },
callNo: { type: 'number', title: '调用次数' },
href: { type: 'string', title: '链接', format: 'uri' },
description: { type: 'string', title: '描述', maxLength: 140 },
},
required: ['owner', 'callNo', 'href', 'description'],
};
schema: SFSchema = {};
ui: SFUISchema = {
'*': {
spanLabelFixed: 100,
@ -44,15 +40,13 @@ export class SupplyManagementQrcodePageComponent implements OnInit {
constructor(
private modal: NzModalRef,
private msgSrv: NzMessageService,
public http: _HttpClient,
) { }
ngOnInit(): void {
if (this.record.id > 0)
this.http.get(`/user/${this.record.id}`).subscribe(res => (this.i = res));
console.log(this.i);
}
downLoadQrcode(downloadName: any): void {
let aLink = document.createElement('a');
const content = this.qr.dataURL;

View File

@ -1,14 +1,6 @@
<!--
* @Author: your name
* @Date: 2021-12-03 11:10:14
* @LastEditTime: 2021-12-10 15:14:11
* @LastEditors: your name
* @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
* @FilePath: \tms-obc-web\src\app\routes\supply-management\components\update-price\update-price.component.html
-->
<div class="mb-lg">
<nz-spin *ngIf="!i" class="modal-spin"></nz-spin>
<sf *ngIf="i" #sf mode="edit" [schema]="schema" [ui]="ui" [formData]="ii" button="none">
<sf *ngIf="i" #sf mode="edit" [schema]="schema" [ui]="ui" [formData]="i" button="none">
<ng-template sf-template="freightPrice" let-me let-ui="ui" let-schema="schema">
<nz-input-group [nzAddOnAfter]="freightType[i?.freightType]">
<input [max]="99999999" placeholder="请输入" type="number" [ngModel]="me.value"

View File

@ -1,4 +1,3 @@
import { Params } from '@angular/router';
import { Component, OnInit, ViewChild } from '@angular/core';
import { STColumn } from '@delon/abc/st';
import { SFComponent, SFSchema, SFUISchema } from '@delon/form';
@ -14,7 +13,6 @@ import { SupplyManagementService } from '../../services/supply-management.servic
export class SupplyManagementUpdatePriceComponent implements OnInit {
record: any = {};
i: any;
ii: any;
schema: SFSchema = {};
ui: SFUISchema = {};
columns: STColumn[] = [];
@ -34,14 +32,7 @@ export class SupplyManagementUpdatePriceComponent implements OnInit {
ngOnInit(): void {
this.initSF();
this.initSt();
console.log(this.i)
const Params = {
id: this.i.id
}
this.service.request(this.service.$api_get_listModifyPrice, Params).subscribe((res) =>{
console.log(res)
this.ii = res[0];
})
if (this.record?.id) this.getGoodsResourceShipperDeatail(this.record?.id);
}
initSF() {
@ -64,13 +55,10 @@ export class SupplyManagementUpdatePriceComponent implements OnInit {
rule: {
type: 'string',
title: '取整规则',
enum: [
{ label: '保留小数', value: '1' },
{ label: '抹除小数', value: '2' },
{ label: '抹除个位', value: '3' },
],
default: '0',
ui: {
widget: 'select',
widget: 'dict-select',
params: { dictKey: 'goodresource:rounding:rules' },
optionalHelp: {
text: '例如:付司机运费= 重量*单价 = 999.99;\n 保留小数:即 999.99; \n 抹除小数:即 999.00;\n 抹除个位,即 990.00',
}
@ -88,6 +76,13 @@ export class SupplyManagementUpdatePriceComponent implements OnInit {
};
}
getGoodsResourceShipperDeatail(id: any) {
this.service.request(this.service.$api_get_goods_resource_shipper, { id }).subscribe(res => {
if (res) {
this.i = res;
}
})
}
/**
* 初始化数据列表
*/
@ -99,8 +94,9 @@ export class SupplyManagementUpdatePriceComponent implements OnInit {
];
}
save(value: any): void {
console.log(value)
const { id, freightType, freightPrice, resourceCode, rule, resourceId } = value;
console.log(value);
// const { id: resourceId, freightType, freightPrice, resourceCode, rule, goodsID: id } = value;
const { resourceId, freightType, freightPrice, resourceCode, rule, id } = value;
this.service.request(this.service.$api_update_price, { id, freightType, freightPrice, resourceCode, rule, resourceId }).subscribe(res => {
if (res) {
this.msgSrv.success('保存成功');

View File

@ -1,7 +1,7 @@
<!--
* @Author: your name
* @Date: 2021-12-03 15:31:52
* @LastEditTime: 2021-12-28 10:07:21
* @LastEditTime: 2021-12-28 17:04:16
* @LastEditors: Please set LastEditors
* @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
* @FilePath: \tms-obc-web\src\app\routes\order-management\components\vehicle-detail\vehicle-detail.component.html
@ -14,8 +14,8 @@
</ng-template>
<ng-template #headerContent>
<div class="mb-xs" nz-row>
<button nz-button nzType="primary" nzSize="small" nzDanger>{{i?.billStatusLabel}}</button>
<h4 class="ml-md" style="font-size: 18px;">运单号: {{ i?.billCode }}</h4>
<button nz-button nzType="primary" nzSize="small" nzDanger>{{i?.wayBillStatusLabel}}</button>
<h4 class="ml-md" style="font-size: 18px;">运单号: {{ i?.wayBillCode }}</h4>
</div>
<div nz-row style="display: flex; justify-content: end;">
<div nz-col nzSpan="10">
@ -26,47 +26,22 @@
<nz-divider></nz-divider>
<div>
<div sv-container>
<sv label="网络货运人">{{ i?.goodsResource?.[0]?.enterpriseInfoName }} </sv>
<sv label="货主">{{ i?.goodsResource?.[0]?.shipperAppUserName }} </sv>
<sv label="所属项目">{{i?.goodsResource?.[0]?.enterpriseProjectName}}</sv>
<sv label="服务类型">{{i?.goodsResource?.[0]?.serviceTypeLabel}}</sv>
<sv label="调度员">{{i?.goodsResource?.[0]?.dispatchName}} </sv>
<sv label="网络货运人">{{ i?.enterpriseInfoName }} </sv>
<sv label="货主">{{ i?.goodsResource?.shipperAppUserName }} </sv>
<sv label="所属项目">{{i?.enterpriseProject}}</sv>
<sv label="服务类型">{{i?.serviceTypeLabel}}</sv>
<sv label="调度员">{{i?.dispatch?.name}} /{{i?.dispatch?.phone}}</sv>
</div>
<nz-tabset nzType="card" style="margin-top: 15px;">
<nz-tab [nzTitle]="tempt" >
<ng-template #tempt>
<nz-anchor>
<nz-link nzHref="#distannce1" nzTitle="装卸货信息"></nz-link>
</nz-anchor>
</ng-template>
<nz-tabset style="margin-top: 15px;">
<nz-tab nzTitle="装卸货信息" (nzClick)="goDistance(distannce1)">
</nz-tab>
<nz-tab [nzTitle]="tempt2" >
<ng-template #tempt2>
<nz-anchor>
<nz-link nzHref="#distannce2" nzTitle="基本信息"></nz-link>
</nz-anchor>
</ng-template>
<nz-tab nzTitle="基本信息" (nzClick)="goDistance(distannce1)">
</nz-tab>
<nz-tab [nzTitle]="tempt3" >
<ng-template #tempt3>
<nz-anchor>
<nz-link nzHref="#distannce3" nzTitle="运费信息"></nz-link>
</nz-anchor>
</ng-template>
<nz-tab nzTitle="运费信息" (nzClick)="goDistance(distannce3)">
</nz-tab>
<nz-tab [nzTitle]="tempt4" >
<ng-template #tempt4>
<nz-anchor>
<nz-link nzHref="#distannce4" nzTitle="附件信息"></nz-link>
</nz-anchor>
</ng-template>
<nz-tab nzTitle="附件信息" (nzClick)="goDistance(distannce4)">
</nz-tab>
<nz-tab [nzTitle]="tempt5" >
<ng-template #tempt5>
<nz-anchor>
<nz-link nzHref="#distannce5" nzTitle="轨迹信息"></nz-link>
</nz-anchor>
</ng-template>
<nz-tab nzTitle="轨迹信息" (nzClick)="goDistance(distannce5)">
</nz-tab>
</nz-tabset>
</div>
@ -88,24 +63,24 @@
</div>
</nz-card>
<nz-card nzTitle="基本信息">
<nz-card nzTitle="基本信息" #distannce1>
<sv-container col="1">
<sv label="货物名称">
{{i?.goodsInfoList?.[0]?.goodsName}}
{{i?.goodsInfos?.[0]?.goodsName}}
</sv>
</sv-container>
<sv-container col="2">
<sv label="货物数量">
{{i?.goodsInfoList?.[0]?.weight}}吨,{{i?.goodsInfoList?.[0]?.volume}}方,{{i?.goodsInfoList?.[0]?.number}}件
{{i?.goodsInfos?.[0]?.weight}}吨,{{i?.goodsInfos?.[0]?.volume}}方,{{i?.goodsInfos?.[0]?.number}}件
</sv>
<sv label="用车需求">
{{i?.goodsInfoList?.[0]?.maxWeightLabel}}/{{i?.goodsInfoList?.[0]?.maxCube}}
{{i?.goodsInfos?.[0]?.maxWeightLabel}}/{{i?.goodsInfos?.[0]?.maxCube}}
</sv>
<sv label="承运司机">
{{i?.driverId}}
{{i?.driver?.name}}/{{i?.driver?.phone}}
</sv>
<sv label="车型车长载重">
{{i?.goodsInfoList?.[0]?.weight}}吨,{{i?.goodsInfoList?.[0]?.volume}}方,{{i?.goodsInfoList?.[0]?.number}}件
{{i?.goodsInfos?.[0]?.weight}}吨,{{i?.goodsInfos?.[0]?.volume}}方,{{i?.goodsInfos?.[0]?.number}}件
</sv>
<sv label="计划装货时间">
{{i?.loadPlanTime}}
@ -126,15 +101,15 @@
<div class="mt-md">
<h4 class="text-md">装货卸货信息
<span class="ml-sm text-sm">(
<label>{{i?.loadingCount}}装</label>
<label>{{i?.unloadingCount}}卸</label>
<label>{{i?.loadingCount || '一'}}装</label>
<label>{{i?.unloadingCount || '一'}}卸</label>
)
</span>
</h4>
<div nz-row [nzGutter]="24">
<div nz-col [nzSpan]="12">
<div class="handling-info p-md">
<div class="flex" *ngFor="let item of i?.unLoadingPlaceVOList">
<div class="flex" *ngFor="let item of i?.loadingPlace">
<div *ngIf="item.type === '1'" class="loading-row">
<div class="handling-info-icon loading-bg"></div>
<div class="info">
@ -147,7 +122,7 @@
</div>
<div nz-col [nzSpan]="12">
<div class="handling-info p-md">
<div class="flex" *ngFor="let item of i?.unLoadingPlaceVOList">
<div class="flex" *ngFor="let item of i?.loadingPlace">
<div *ngIf="item.type === '2'" class="loading-row">
<div class="handling-info-icon unloaing-bg"></div>
<div class="info">
@ -161,16 +136,24 @@
</div>
</div>
</nz-card>
<nz-card nzTitle="运费信息" id="distannce3">
<h2>{{i?.goodsInfoList?.[0]?.freightPrice}}{{i?.goodsInfoList?.[0]?.freightTypeLabel}}(以发货为准,保留小数)</h2>
<st #st [data]="i?.billExpenseDetails" [columns]="logColumns" [ps]="0" [page]="{ show: false, showSize: false }">
<nz-card nzTitle="运费信息" #distannce3>
<div style="margin-bottom: 18px">
<span style="color: #da001b; font-size: 18px"> {{ i?.goodsInfos?.[0]?.freightPrice }}{{ i?.goodsInfos?.[0]?.freightTypeLabel }} </span>{{ i?.goodsInfos?.[0]?.settlementBasisLabel }}{{
i?.goodsInfos?.[0]?.ruleLabel
}}</div
>
<st #st [data]="i?.billExpenseDetailVOList" [columns]="logColumns" [ps]="0" [page]="{ show: false, showSize: false }">
</st>
<div>总计:{{i?.total | currency: '¥'}}运费¥3500.00附加运费¥191.98附加费率3.5%</div>
<div>收款人:</div>
<div>
总计:<span style="color: #da001b; font-size: 18px">{{ totalObj?.price | currency: '¥' }}</span> (运费¥{{
totalObj?.price - attObj?.price
}},附加运费¥{{ attObj?.price }},附加费率{{ (attObj?.price / totalObj?.price) * 100 | number: '0.2-2' }}%
</div>
<div>收款人:{{ i?.payee?.name }}/{{ i?.payee?.phone }}</div>
</nz-card>
<nz-card nzTitle="附件信息" id="distannce4">
<nz-card nzTitle="附件信息" #distannce4>
<sv-container>
<sv label="协议附件">
<!-- {{i?.supplementaryInformationVO?.stateReceipt?'是':'否'}} -->
@ -220,7 +203,7 @@
<nz-card>
<div nz-row>
<nz-card nzTitle="轨迹信息" style="width: 100%;" id="distannce5">
<nz-card nzTitle="轨迹信息" style="width: 100%;" #distannce5>
<div nz-row >
<div nz-col [nzSpan]='12'>
<!-- <st #st [data]="i?.auditRecordList" [columns]="logColumns" [ps]="0" [page]="{ show: false, showSize: false }">

View File

@ -1,7 +1,7 @@
/*
* @Author: your name
* @Date: 2021-12-03 15:31:52
* @LastEditTime: 2021-12-20 16:23:36
* @LastEditTime: 2021-12-28 16:43:55
* @LastEditors: Please set LastEditors
* @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
* @FilePath: \tms-obc-web\src\app\routes\order-management\components\vehicle-detail\vehicle-detail.component.ts
@ -10,6 +10,7 @@ import { Component, OnInit } from '@angular/core';
import { ActivatedRoute } from '@angular/router';
import { STColumn } from '@delon/abc/st';
import { _HttpClient } from '@delon/theme';
import { NzCardComponent } from 'ng-zorro-antd/card';
import { NzMessageService } from 'ng-zorro-antd/message';
import { NzModalService } from 'ng-zorro-antd/modal';
import { WaybillManagementServe } from '../../services/waybill-management.service';
@ -22,10 +23,26 @@ export class WaybillManagementBulkeDetailComponent implements OnInit {
id = this.route.snapshot.params.id;
i: any;
totalObj: any;
attObj: any;
isVisible = false;
logColumns: STColumn[] = [
{ title: '时间', index: 'operationUserPhone' },
{ title: '地点', index: ' createTime' },
{ title: '款项', index: 'expenseName' },
{ title: '运输费(元)', index: 'price' },
{ title: '支付时间', index: ' paymentTime' },
{
title: '支付状态',
className: 'text-center',
index: 'paymentStatus',
type: 'badge',
width: '120px',
badge: {
'1': { text: '待申请', color: 'warning' },
'2': { text: '已支付', color: 'success' },
'3': { text: '已拒绝', color: 'warning' },
'4': { text: '申请中', color: 'warning' },
},
},
];
imges: any;
unLoadingPlaceVOList: any = [];
@ -53,6 +70,8 @@ export class WaybillManagementBulkeDetailComponent implements OnInit {
this.unLoadingPlaceVOList.push(...res.dischargePlace)
console.log(this.unLoadingPlaceVOList)
this.i = res;
this.attObj = this.i?.billExpenseDetailVOList?.filter((data: any) => data.expenseCode === 'ATT')[0];
this.totalObj = this.i?.billExpenseDetailVOList?.filter((data: any) => data.expenseCode === 'TOTAL')[0];
})
}
@ -88,4 +107,9 @@ export class WaybillManagementBulkeDetailComponent implements OnInit {
handleOK() {
this.isVisible = false
}
goDistance(elf: NzCardComponent) {
if (elf) {
elf['elementRef'].nativeElement.scrollIntoView({ behavior: 'smooth', block: 'start', inline: 'start' });
}
}
}

View File

@ -1,146 +1,205 @@
<!--
* @Author: your name
* @Date: 2021-12-03 15:31:52
* @LastEditTime: 2021-12-20 15:07:51
* @LastEditTime: 2021-12-28 17:11:42
* @LastEditors: Please set LastEditors
* @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
* @FilePath: \tms-obc-web\src\app\routes\order-management\components\vehicle-detail\vehicle-detail.component.html
-->
<page-header-wrapper [title]="''" [logo]="logo">
<page-header-wrapper [title]="''" [logo]="logo" [content]="headerContent">
<ng-template #logo>
<button nz-button nz-tooltip nzTooltipTitle="返回上一页" (click)="goBack()">
<i nz-icon nzType="left" nzTheme="outline"></i>
</button>
</ng-template>
<ng-template #headerContent>
<div class="mb-xs" nz-row>
<button nz-button nzType="primary" nzSize="small" nzDanger>{{i?.wayBillStatusLabel}}</button>
<h4 class="ml-md" style="font-size: 18px;">运单号: {{ i?.wayBillCode }}</h4>
</div>
<div nz-row style="display: flex; justify-content: end;">
<div nz-col nzSpan="10">
<button nz-button >确认发车</button>
<button nz-button nzType="primary" nzGhost >确认到车</button>
</div>
</div>
<nz-divider></nz-divider>
<div>
<div sv-container>
<sv label="网络货运人">{{ i?.enterpriseInfoName }} </sv>
<sv label="货主">{{ i?.goodsResource?.shipperAppUserName }} </sv>
<sv label="所属项目">{{i?.enterpriseProject}}</sv>
<sv label="服务类型">{{i?.serviceTypeLabel}}</sv>
<sv label="调度员">{{i?.dispatch?.name}} /{{i?.dispatch?.phone}}</sv>
</div>
<nz-tabset style="margin-top: 15px;">
<nz-tab nzTitle="装卸货信息" (nzClick)="goDistance(distannce1)">
</nz-tab>
<nz-tab nzTitle="基本信息" (nzClick)="goDistance(distannce1)">
</nz-tab>
<nz-tab nzTitle="运费信息" (nzClick)="goDistance(distannce3)">
</nz-tab>
<nz-tab nzTitle="附件信息" (nzClick)="goDistance(distannce4)">
</nz-tab>
<nz-tab nzTitle="轨迹信息" (nzClick)="goDistance(distannce5)">
</nz-tab>
</nz-tabset>
</div>
</ng-template>
</page-header-wrapper>
<nz-card nzTitle="运单进度">
<div class="approval-status">
<div style="width: 60%; margin: 0 auto">
  <nz-steps [nzCurrent]="i?.scheduleVOList?.length + 1" nzLabelPlacement="vertical">
  <nz-step
          *ngFor="let item of i?.scheduleVOList"
    [nzTitle]="item.state"
    [nzSubtitle]="item.stateTime"
    [nzStatus]="item.displayStatus === 'SHOW' ? 'finish' : 'wait'"
  >
  </nz-step>
 </nz-steps>
</div>
</div>
</nz-card>
<nz-card nzTitle="基本信息" #distannce1>
<sv-container col="1">
<sv label="货物名称">
{{i?.goodsInfos?.[0]?.goodsName}}
</sv>
</sv-container>
<sv-container col="2">
<sv label="货物数量">
{{i?.goodsInfos?.[0]?.weight}}吨,{{i?.goodsInfos?.[0]?.volume}}方,{{i?.goodsInfos?.[0]?.number}}件
</sv>
<sv label="用车需求">
{{i?.goodsInfos?.[0]?.maxWeightLabel}}/{{i?.goodsInfos?.[0]?.maxCube}}
</sv>
<sv label="承运司机">
{{i?.driver?.name}}/{{i?.driver?.phone}}
</sv>
<sv label="车型车长载重">
{{i?.goodsInfos?.[0]?.weight}}吨,{{i?.goodsInfos?.[0]?.volume}}方,{{i?.goodsInfos?.[0]?.number}}件
</sv>
<sv label="计划装货时间">
{{i?.loadPlanTime}}
</sv>
<sv label="计划卸货时间">
{{i?.unloadPlanTime}}
</sv>
<sv label="接单数量">
{{i?.acceptWeight}}吨,{{i?.acceptVolume}}方,{{i?.acceptNumber}}件
</sv>
<sv label="装货数量">
{{i?.acceptWeight}}吨,{{i?.acceptVolume}}方,{{i?.acceptNumber}}件
</sv>
<sv label="卸货数量">
{{i?.settlementWeight}}吨,{{i?.settlementVolume}}方,{{i?.acceptNumber}}件
</sv>
</sv-container>
<div class="mt-md">
<h4 class="text-md">装货卸货信息
<span class="ml-sm text-sm">(
<label>{{i?.loadingCount || '一'}}装</label>
<label>{{i?.unloadingCount || '一'}}卸</label>
)
</span>
</h4>
<div nz-row [nzGutter]="24">
<div nz-col [nzSpan]="12">
<div class="handling-info p-md">
<div class="flex" *ngFor="let item of i?.loadingPlace">
<div *ngIf="item.type === '1'" class="loading-row">
<div class="handling-info-icon loading-bg"></div>
<div class="info">
<h4>装货地:{{item?.province}}{{item.city}}{{item.area}}{{item.detailedAddress}}</h4>
<p>联系人:{{item.appUserName}}/{{item.contractTelephone}}</p>
</div>
</div>
</div>
</div>
</div>
<div nz-col [nzSpan]="12">
<div class="handling-info p-md">
<div class="flex" *ngFor="let item of i?.loadingPlace">
<div *ngIf="item.type === '2'" class="loading-row">
<div class="handling-info-icon unloaing-bg"></div>
<div class="info">
<h4>卸货地:{{item?.province}}{{item.city}}{{item.area}}{{item.detailedAddress}}</h4>
<p>联系人:{{item.appUserName}}/{{item.contractTelephone}}</p>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</nz-card>
<nz-card nzTitle="运费信息" #distannce3>
<st #st [data]="i?.billExpenseDetailVOList" [columns]="logColumns" [ps]="0" [page]="{ show: false, showSize: false }">
</st>
<div>
总计:<span style="color: #da001b; font-size: 18px">{{ i?.freight | currency: '¥' }}</span>
</div>
<div>收款人:{{ i?.payee?.name }}/{{ i?.payee?.phone }}</div>
</nz-card>
<nz-card nzTitle="附件信息" #distannce4>
<sv-container>
<sv label="协议附件">
<!-- {{i?.supplementaryInformationVO?.stateReceipt?'是':'否'}} -->
<a href="javascript:;" (click)="agreement('1')">查看附件</a> &nbsp;&nbsp;&nbsp;&nbsp;
<a href="javascript:;" (click)="agreement('2')">补充协议</a>
</sv>
</sv-container>
<sv-container col="2" class="mt-md">
<sv label="装货凭证">
<app-imagelist [imgList]="[i?.loadingLadingBillFilePath,i?.loadingPeopleVehiclesGoodsFilePath]">
</app-imagelist>
</sv>
<sv label="卸货凭证">
<app-imagelist [imgList]="[i?.unloadingLadingBillFilePath,i?.unloadingPeopleVehiclesGoodsFilePath]">
</app-imagelist>
</sv>
</sv-container>
</nz-card>
<nz-card nzTitle="补充信息">
<sv-container>
<sv label="是否回单">
{{i?.goodsResource?.stateReceipt ?'是':'否'}}
</sv>
<sv label="回单类型">
{{i?.goodsResource?.receiptTypeLabel}}
</sv>
<sv label="联系人">
{{i?.goodsResource?.receiptUserId}} / {{i?.supplementaryInformationVO?.phon}}
</sv>
<sv label="所在地区">
{{i?.goodsResource?.receiptAddress}}
</sv>
<sv label="详细地址">
{{i?.goodsResource?.receiptAddress}}
</sv>
</sv-container>
<sv-container col="1" class="mt-md">
<sv label="回单凭证">
<app-imagelist [imgList]="[i?.receiptFilePath]"></app-imagelist>
</sv>
<sv label="备注">
{{i?.goodsResource?.remarks}}
</sv>
</sv-container>
</nz-card>
<nz-card>
<div nz-row>
<div nz-col nzSpan="4">
<sv-container class="bdr">
<sv label="订单号" col="1">{{ i?.no }}</sv>
<sv-title class="text-center text-lg" style="font-weight: 700;">{{i?.wayBillStatusLabel}}</sv-title>
<sv-title>
<div style="display: flex; justify-content: center;">
<a class="btn-size" (click)="hand()">指派车队长</a>
</div>
</sv-title>
</sv-container>
</div>
<div nz-col nzSpan="16" class="approval-status">
<nz-steps style="width: 80%; margin: 0 auto" [nzLabelPlacement]="'vertical'">
<nz-step nzStatus="finish" nzIcon="user" [nzDescription]="i?.createAt" nzTitle="下单"></nz-step>
<nz-step nzStatus="finish" nzIcon="solution" nzTitle="完结"></nz-step>
</nz-steps>
</div>
</div>
<nz-divider></nz-divider>
<div sv-container *ngIf="i">
<sv label="项目名称">{{ i?.enterpriseProject }}</sv>
<sv label="调度员">{{ i?.dispatch?.name }}/{{i?.dispatch?.phone}}</sv>
<sv label="承诺付款时间">到货后{{ i?.paymentDays }}天内支付运费</sv>
<sv label="服务类型">{{ i?.serviceTypeLabel }}</sv>
</div>
<nz-divider></nz-divider>
<div nz-row>
<div nz-col nzSpan="6">
<div *ngFor="let item of unLoadingPlaceVOList; let ii = index">
<h3 *ngIf="ii === 0" style="font-weight: 700;">装卸货信息</h3>
<div *ngIf="item?.type === 1 || item?.type === '1'">
<p>装货地:{{item?.detailedAddress}}</p>
<p>联系人:{{item?.appUserName}}/{{item?.contractTelephone}}</p>
<p>发货日期:{{item?.createTime}}</p>
</div>
<div *ngIf="item.type === 2 || item.type === '2'">
<p>卸货地:{{item?.detailedAddress}}</p>
<p>联系人:{{item?.appUserName}}/{{item?.contractTelephone}}</p>
<p>卸货日期:{{item?.modifyTime}}</p>
</div>
</div>
</div>
<div nz-col nzSpan="5">
<div class="source-info bdr bdl pl-md">
<h3>货物信息</h3>
<div *ngFor="let item of i?.goodsInfos; let i = index">
<p>货物名称:{{item?.goodsName}}</p>
<p>重量/体积:{{item?.weight}}吨/{{item?.volume}}立方</p>
<p>用车需求:{{item?.vehicleDemand}}</p>
</div>
</div>
</div>
<div nz-col nzSpan="5">
<div class="source-info bdr bdl pl-md">
<h3>托运信息</h3>
<p>公司名称:{{i?.enterpriseInfoName}}</p>
<p>联系人:{{ i?.dispatch?.name }}/{{i?.dispatch?.phone}}</p>
</div>
</div>
<div nz-col nzSpan="5">
<div class="source-info bdr pl-md">
<h3>承运信息</h3>
<p>司机:{{i?.driverVo?.name}}/{{i?.driverVo?.phone}}</p>
<p>车牌号:{{i?.carVO?.carNo}}</p>
<p>车型/车长/承重:{{i?.carVO?.carModel}} | {{i?.carVO?.carLength}} | {{i?.carVO?.carLoad}}</p>
</div>
</div>
<div class="source-info pl-md">
<h3>补充信息</h3>
<p style="color: #1890ff;" (click)="agreement('1')">协议附件</p>
<p style="color: #1890ff;" (click)="agreement('2')"> 装车附件</p>
<p style="color: #1890ff;" (click)="agreement('3')">卸货附件</p>
<p style="color: #1890ff;" (click)="agreement('4')">回单附件</p>
</div>
</div>
<nz-divider></nz-divider>
<div nz-row>
<div class="freight-info-box">
<h3>运费信息</h3>
<div class="text-right">
<p><label class="freigth-label">收款人:</label><span>{{i?.payee?.name}} /{{i?.payee?.phone}} / {{i?.payee?.phone}}</span></p>
<div *ngFor="let item of i?.billExpenseDetailVOList">
<p><label class="freigth-label">{{item?.costName}}:</label><span>{{ item?.price| currency: '¥' }}</span></p>
</div>
</div>
</div>
<nz-divider></nz-divider>
<div class="freight-info-box" nz-row>
<div nz-col nzSpan="24">
<h3 class="text-right"><label>总计 :</label> <span class="text-error-dark text-xl">{{i?.freight | currency: '¥' }}</span></h3>
<h3 class="text-right">{{i?.wayBillStatusLabel}}</h3>
</div>
</div>
</div>
<nz-divider></nz-divider>
<nz-card nzTitle="轨迹信息" style="width: 100%;" #distannce5>
<div nz-row >
<div nz-col [nzSpan]='12'>
<div style="position: relative;">
<div style="height: 24px; width: 90px; background-color: #68758e;color: #fff;text-align: center;">平台支付</div>
<div >
<!-- <p><label class="freigth-label">{{i?.platformPaymentDetail?.costName}}:</label><span>{{ i?.platformPaymentDetail?.price| currency: '¥' }}</span></p> -->
<div *ngFor="let item of i?.platformPaymentDetail">
<p><label class="freigth-label">{{item?.costName}}:</label><span>{{ item?.price| currency: '¥' }}</span></p>
</div>
</div>
</div>
</div>
<div nz-col [nzSpan]='12'>
<div style="position: relative;">
<div style="height: 24px; width: 90px; background-color: #68758e;color: #fff;text-align: center;">货主支付</div>
<div *ngFor="let item of i?.ownerPaymentDetail?.freightDetail">
<p><label class="freigth-label">{{item?.costName}}:</label><span>{{ item?.price| currency: '¥' }}</span></p>
</div>
</div>
</div>
</div>
<nz-divider></nz-divider>
<div nz-row>
<nz-card nzTitle="轨迹信息" style="width: 100%;" >
<div nz-row >
<div nz-col [nzSpan]='12'>
<st #st [data]="i?.auditRecordList" [columns]="logColumns" [ps]="0" [page]="{ show: false, showSize: false }">
</st>
<!-- <st #st [data]="i?.auditRecordList" [columns]="logColumns" [ps]="0" [page]="{ show: false, showSize: false }">
</st> -->
</div>
<div nz-col [nzSpan]='12'>
<amap-path-simplifier></amap-path-simplifier>
@ -149,6 +208,7 @@
</nz-card>
</div>
</nz-card>
<nz-modal [(nzVisible)]="isVisible" [nzFooter]="nzModalFooter" nzTitle="附件信息" (nzOnOk)="handleOK()" (nzOnCancel)="handleCancel()">
<ng-container *nzModalContent>
<app-imagelist [imgList]="imges"></app-imagelist>

View File

@ -33,4 +33,38 @@
.leftPadding {
padding-right: 100px;
}
.handling-info {
min-height: 100px;
border: 1px solid #ccc;
.loading-row {
display: flex;
}
.handling-info-icon {
width: 32px;
height: 32px;
margin-right: 24px;
color: #fff;
line-height: 32px;
text-align: center;
border-radius: 50%;
&.loading-bg {
background-color: #50D4AB;
}
&.unloaing-bg {
background: #F66F6A;
}
}
.info {
flex: 1;
}
.time-info {
margin-left: 56px;
}
}
}

View File

@ -1,7 +1,7 @@
/*
* @Author: your name
* @Date: 2021-12-03 15:31:52
* @LastEditTime: 2021-12-27 15:38:04
* @LastEditTime: 2021-12-28 17:10:12
* @LastEditors: Please set LastEditors
* @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
* @FilePath: \tms-obc-web\src\app\routes\order-management\components\vehicle-detail\vehicle-detail.component.ts
@ -10,6 +10,7 @@ import { Component, OnInit } from '@angular/core';
import { ActivatedRoute } from '@angular/router';
import { STColumn } from '@delon/abc/st';
import { _HttpClient } from '@delon/theme';
import { NzCardComponent } from 'ng-zorro-antd/card';
import { NzMessageService } from 'ng-zorro-antd/message';
import { NzModalService } from 'ng-zorro-antd/modal';
import { WaybillManagementServe } from '../../services/waybill-management.service';
@ -21,13 +22,29 @@ import { WaybillManagementServe } from '../../services/waybill-management.servic
export class WaybillManagementVehicleDetailComponent implements OnInit {
id = this.route.snapshot.params.id;
isVisible = false;
i: any;
imges: any;
totalObj: any;
attObj: any;
isVisible = false;
logColumns: STColumn[] = [
{ title: '时间', index: 'operationUserPhone' },
{ title: '地点', index: ' createTime' },
{ title: '款项', index: 'costName' },
{ title: '运输费(元)', index: 'price' },
{ title: '支付时间', index: ' paymentTime' },
{
title: '支付状态',
className: 'text-center',
index: 'paymentStatus',
type: 'badge',
width: '120px',
badge: {
'1': { text: '待申请', color: 'warning' },
'2': { text: '已支付', color: 'success' },
'3': { text: '已拒绝', color: 'warning' },
'4': { text: '申请中', color: 'warning' },
},
},
];
imges: any;
unLoadingPlaceVOList: any = [];
constructor(
@ -41,6 +58,7 @@ export class WaybillManagementVehicleDetailComponent implements OnInit {
ngOnInit(): void {
this.initData()
}
initData() {
const params = {
@ -48,12 +66,12 @@ export class WaybillManagementVehicleDetailComponent implements OnInit {
}
this.service.request(this.service.$api_get_getWholeDetail, params).subscribe((res) => {
console.log(res)
if(res) {
this.unLoadingPlaceVOList.push(...res.loadingPlace)
this.unLoadingPlaceVOList.push(...res?.dischargePlace)
this.unLoadingPlaceVOList.push(...res.dischargePlace)
console.log(this.unLoadingPlaceVOList)
this.i = res;
}
this.attObj = this.i?.billExpenseDetailVOList?.filter((data: any) => data.expenseCode === 'ATT')[0];
this.totalObj = this.i?.billExpenseDetailVOList?.filter((data: any) => data.expenseCode === 'TOTAL')[0];
})
}
@ -69,13 +87,7 @@ export class WaybillManagementVehicleDetailComponent implements OnInit {
goBack() {
window.history.go(-1);
}
handleCancel() {
this.isVisible = false
}
handleOK() {
this.isVisible = false
}
agreement(value: any) {
agreement(value: any) {
console.log('123')
console.log(value)
if(value === '1') {
@ -88,5 +100,16 @@ agreement(value: any) {
this.imges = this.i?.receiptCertificate
}
this.isVisible = true;
}
handleCancel() {
this.isVisible = false
}
handleOK() {
this.isVisible = false
}
goDistance(elf: NzCardComponent) {
if (elf) {
elf['elementRef'].nativeElement.scrollIntoView({ behavior: 'smooth', block: 'start', inline: 'start' });
}
}
}