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

This commit is contained in:
Taric Xin
2021-12-15 16:32:19 +08:00
29 changed files with 1193 additions and 122 deletions

View File

@ -1,7 +1,7 @@
<!--
* @Author: your name
* @Date: 2021-12-03 11:10:14
* @LastEditTime: 2021-12-14 15:47:08
* @LastEditTime: 2021-12-15 14:25:34
* @LastEditors: Please set LastEditors
* @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
* @FilePath: \tms-obc-web\src\app\routes\supply-management\components\vehicle\vehicle.component.html
@ -84,7 +84,6 @@
<ng-container *nzModalContent>
<st
#stFloat
multiSort
size="small"
[bordered]="true"
[data]="datass"

View File

@ -532,7 +532,6 @@ export class OrderManagementBulkComponent implements OnInit {
// 获取录单员
getCatalogueMember() {
const params = {
};
@ -614,7 +613,7 @@ export class OrderManagementBulkComponent implements OnInit {
});
}
// *变更运费
// *确认签收
confirmReceipt(item: any) {
const modalRef = this.modal.create({
@ -627,7 +626,7 @@ export class OrderManagementBulkComponent implements OnInit {
nzFooter: null
});
}
// *变更运费
// *确认发车
sureDepart(item: any) {
const modalRef = this.modal.create({
@ -640,7 +639,7 @@ export class OrderManagementBulkComponent implements OnInit {
nzFooter: null
});
}
// *变更运费
// *确认到车
sureArrive(item: any) {
const modalRef = this.modal.create({

View File

@ -5,6 +5,10 @@ import { ModalHelper, _HttpClient } from '@delon/theme';
import { NzModalService } from 'ng-zorro-antd/modal';
import { of } from 'rxjs';
import { map } from 'rxjs/operators';
import { VehicleConfirReceiptComponent } from '../../modal/vehicle/confir-receipt/confir-receipt.component';
import { VehicleSureArriveComponent } from '../../modal/vehicle/sure-arrive/sure-arrive.component';
import { VehicleSureDepartComponent } from '../../modal/vehicle/sure-depart/sure-depart.component';
import { VehicleUpdateFreightComponent } from '../../modal/vehicle/update-freight/update-freight.component';
import { SupplyManagementService } from '../../services/order-management.service';
@ -354,6 +358,7 @@ export class OrderManagementVehicleComponent implements OnInit {
title: '操作',
fixed: 'right',
width: '200px',
className: 'text-left',
buttons: [
{
text: '查看评价',
@ -363,6 +368,26 @@ export class OrderManagementVehicleComponent implements OnInit {
text: '运费变更记录',
click: (_record) => this.OpenPrice(),
},
{
text: '变更运费',
click: (_record) => this.updateFreight(_record),
},
{
text: '确认签收',
click: (_record) => this.confirmReceipt(_record),
},
{
text: '取消订单',
click: (_record) => this.confirmReceipt(_record),
},
{
text: '确认发车',
click: (_record) => this.sureDepart(_record),
},
{
text: '确认到车',
click: (_record) => this.sureArrive(_record),
},
],
},
];
@ -512,4 +537,57 @@ export class OrderManagementVehicleComponent implements OnInit {
console.log(item)
this.isVisibleEvaluate = true
}
/**
*变更运费
*/
updateFreight(item: any) {
const modalRef = this.modal.create({
nzTitle: '变更运费',
nzWidth: '50%',
nzContent: VehicleUpdateFreightComponent,
nzComponentParams: {
i: item
},
nzFooter: null
});
}
// *确认签收
confirmReceipt(item: any) {
const modalRef = this.modal.create({
nzTitle: '确认签收',
nzWidth: '50%',
nzContent: VehicleConfirReceiptComponent,
nzComponentParams: {
i: item
},
nzFooter: null
});
}
// *确认发车
sureDepart(item: any) {
const modalRef = this.modal.create({
nzTitle: '确认发车',
nzWidth: '50%',
nzContent: VehicleSureDepartComponent,
nzComponentParams: {
i: item
},
nzFooter: null
});
}
// 确认到车
sureArrive(item: any) {
const modalRef = this.modal.create({
nzTitle: '确认到车',
nzWidth: '50%',
nzContent: VehicleSureArriveComponent,
nzComponentParams: {
i: item
},
nzFooter: null
});
}
}

View File

@ -0,0 +1,67 @@
<!--
* @Author: your name
* @Date: 2021-12-14 14:03:07
* @LastEditTime: 2021-12-14 15:43:01
* @LastEditors: Please set LastEditors
* @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
* @FilePath: \tms-obc-web\src\app\routes\order-management\modal\bulk\update-freight\update-freight.component.html
-->
<nz-alert
style="padding-bottom: 15px;"
nzType="warning"
nzCloseable
nzMessage="签收后不可再修改运费,请确保运费等信息准确无误后,再进行签收。"
></nz-alert>
<sv-container col="1">
<sv label="货物单价">
<span>
100元/吨
100元/方
100元/车</span>
</sv>
<sv label="结算依据">
<div style="display: flex; justify-content: space-between;">
<div>以发货为准 / 以收货为准</div>
<div>保留小数/抹除小数/抹除个数</div>
</div>
</sv>
</sv-container>
<sv-container col="2">
<sv label="装货重量">
<div>xx吨</div>
</sv>
<sv label="装货体积">
<div>xx吨</div>
</sv>
</sv-container>
<sv-container col="2">
<sv label="卸货重量">
<div>xx吨</div>
</sv>
<sv label="卸货体积">
<div>xx吨</div>
</sv>
</sv-container>
<sv-container col="1">
<sv label="总运费">
<div>1000元 </div>
</sv>
<sv label="司机车辆">
<div>张三 / 18888888888 / 粤GJ401</div>
</sv>
<sv label="收款人">
<div>李四 / 1888888888</div>
</sv>
<sv label="回单凭证">
<!-- <app-imagelist
[imgList]="[userIdentityDetail?.certificatePhotoFrontWatermark,userIdentityDetail?.certificatePhotoBackWatermark]">
</app-imagelist> -->
</sv>
</sv-container>
<div class="modal-footer">
<button nz-button type="button" (click)="close()">关闭</button>
<button nz-button type="submit" nzType="primary" (click)="save()" [nzLoading]="http.loading"
>确认签收</button
>
</div>

View File

@ -0,0 +1,7 @@
.left_btn {
width: 50px;
height: 32px;
padding-left: 8px;
line-height:32px;
background-color: #d7d7d7;
}

View File

@ -0,0 +1,53 @@
import { preloaderFinished } from '@delon/theme';
/*
* @Author: your name
* @Date: 2021-12-14 14:03:07
* @LastEditTime: 2021-12-15 14:08:34
* @LastEditors: Please set LastEditors
* @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
* @FilePath: \tms-obc-web\src\app\routes\order-management\modal\bulk\update-freight\update-freight.component.ts
*/
import { Component, OnInit, ViewChild } from '@angular/core';
import {
SFComponent,
SFCustomWidgetSchema,
SFNumberWidgetSchema,
SFRadioWidgetSchema,
SFSchema,
SFSelectWidgetSchema,
SFTextareaWidgetSchema,
SFUISchema
} from '@delon/form';
import { _HttpClient } from '@delon/theme';
import { NzMessageService } from 'ng-zorro-antd/message';
import { NzModalRef } from 'ng-zorro-antd/modal';
@Component({
selector: 'app-order-management-vehicle-confir-receipt',
templateUrl: './confir-receipt.component.html',
styleUrls: ['./confir-receipt.component.less']
})
export class VehicleConfirReceiptComponent implements OnInit {
record: any = {};
i:any;
data: any = {};
constructor(private modal: NzModalRef, private msgSrv: NzMessageService, public http: _HttpClient) {}
ngOnInit(): void {
}
save(): void {
// this.http.post(`/user/${this.record.id}`, value).subscribe(res => {
// this.msgSrv.success('保存成功');
// this.modal.close(true);
// });
}
close(): void {
this.modal.destroy();
}
userAction() {
}
}

View File

@ -0,0 +1,29 @@
<!--
* @Author: your name
* @Date: 2021-12-14 15:53:03
* @LastEditTime: 2021-12-14 17:39:33
* @LastEditors: Please set LastEditors
* @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
* @FilePath: \tms-obc-web\src\app\routes\order-management\modal\bulk\sure-depart\sure-depart.component.html
-->
<sf #sf mode="edit" [schema]="schema" [ui]="ui" [formData]="i" button="none">
<ng-template sf-template="no2" let-me let-ui="ui" let-schema="schema">
<div style="display: flex;">
<nz-input-number [(ngModel)]="data.place1" [nzMin]="1" [nzMax]="10" [nzStep]="1"></nz-input-number>
<div class="left_btn"></div>
</div>
</ng-template>
<ng-template sf-template="no3" let-me let-ui="ui" let-schema="schema">
<div style="display: flex;">
<nz-input-number [(ngModel)]="data.place2" [nzMin]="1" [nzMax]="10" [nzStep]="1"></nz-input-number>
<div class="left_btn"></div>
</div>
</ng-template>
</sf>
<div class="modal-footer">
<button nz-button type="button" (click)="close()">关闭</button>
<button nz-button type="submit" nzType="primary" (click)="save(sf.value)" [nzLoading]="http.loading"
>确认到车</button
>
</div>

View File

@ -0,0 +1,7 @@
.left_btn {
width: 50px;
height: 32px;
padding-left: 8px;
line-height:32px;
background-color: #d7d7d7;
}

View File

@ -0,0 +1,298 @@
import { preloaderFinished } from '@delon/theme';
/*
* @Author: your name
* @Date: 2021-12-14 14:03:07
* @LastEditTime: 2021-12-14 17:38:20
* @LastEditors: Please set LastEditors
* @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
* @FilePath: \tms-obc-web\src\app\routes\order-management\modal\bulk\update-freight\update-freight.component.ts
*/
import { Component, OnInit, ViewChild } from '@angular/core';
import {
SFComponent,
SFCustomWidgetSchema,
SFDateWidgetSchema,
SFNumberWidgetSchema,
SFRadioWidgetSchema,
SFSchema,
SFSelectWidgetSchema,
SFTextareaWidgetSchema,
SFUISchema,
SFUploadWidgetSchema
} from '@delon/form';
import { _HttpClient } from '@delon/theme';
import { NzMessageService } from 'ng-zorro-antd/message';
import { NzModalRef } from 'ng-zorro-antd/modal';
import { SupplyManagementService } from 'src/app/routes/supply-management/services/supply-management.service';
import { Observable, Observer } from 'rxjs';
@Component({
selector: 'app-order-management-vehicle-sure-arrive',
templateUrl: './sure-arrive.component.html',
styleUrls: ['./sure-arrive.component.less']
})
export class VehicleSureArriveComponent implements OnInit {
record: any = {};
i: any;
data: any ={
place1: '',
place2: ''
};
@ViewChild('sf', { static: false }) sf!: SFComponent;
schema: SFSchema = {};
ui: SFUISchema = {};
constructor(private modal: NzModalRef, private msgSrv: NzMessageService, public http: _HttpClient, public service: SupplyManagementService ) {}
ngOnInit(): void {
this.initSF();
}
initSF() {
this.schema = {
properties: {
datetime: {
type: 'string',
title: '卸货时间',
format: 'date-time',
},
no2: {
type: 'string',
title: '卸货重量',
ui: {
widget: 'custom',
}
},
no3: {
type: 'string',
title: '卸货体积',
ui: {
widget: 'custom',
}
},
avatar: {
type: 'string',
title: '装货凭证',
ui: {
action: `/scm/cms/cms/upload/multipartFile/fileModel`,
fileType: 'image/png,image/jpeg,image/jpg',
limit: 1,
limitFileCount: 1,
resReName: 'url',
urlReName: 'url',
widget: 'upload',
descriptionI18n: ' 提单号',
data: {
// appId: environment.appId,
},
name: 'multipartFile',
multiple: true,
listType: 'picture-card',
change: (args: any) => {
if (args.type === 'success') {
const avatar = [
{
uid: -1,
name: 'LOGO',
status: 'done',
url: args.fileList[0].response.url,
response: {
url: args.fileList[0].response.url
}
}
];
this.sf?.setValue('/avatar', avatar);
}
},
beforeUpload: (file: any, _fileList: any) => {
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();
});
}
} as SFUploadWidgetSchema
},
avatar2: {
type: 'string',
title: '',
ui: {
action: `/scm/cms/cms/upload/multipartFile/fileModel`,
fileType: 'image/png,image/jpeg,image/jpg',
limit: 1,
limitFileCount: 1,
resReName: 'url',
urlReName: 'url',
widget: 'upload',
descriptionI18n: '人车货照片',
data: {
// appId: environment.appId,
},
name: 'multipartFile',
multiple: true,
listType: 'picture-card',
change: (args: any) => {
if (args.type === 'success') {
const avatar = [
{
uid: -1,
name: 'LOGO',
status: 'done',
url: args.fileList[0].response.url,
response: {
url: args.fileList[0].response.url
}
}
];
this.sf?.setValue('/avatar', avatar);
}
},
beforeUpload: (file: any, _fileList: any) => {
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();
});
}
} as SFUploadWidgetSchema
},
no4: {
type: 'string',
title: '',
ui: {
widget: 'text',
},
default: '单张大小不超过5M支持.jpg、.jpeg和 .png格式',
},
avatar3: {
type: 'string',
title: '卸货凭证',
ui: {
action: `/scm/cms/cms/upload/multipartFile/fileModel`,
fileType: 'image/png,image/jpeg,image/jpg',
limit: 1,
limitFileCount: 1,
resReName: 'url',
urlReName: 'url',
widget: 'upload',
descriptionI18n: ' 提单号',
data: {
// appId: environment.appId,
},
name: 'multipartFile',
multiple: true,
listType: 'picture-card',
change: (args: any) => {
if (args.type === 'success') {
const avatar = [
{
uid: -1,
name: 'LOGO',
status: 'done',
url: args.fileList[0].response.url,
response: {
url: args.fileList[0].response.url
}
}
];
this.sf?.setValue('/avatar', avatar);
}
},
beforeUpload: (file: any, _fileList: any) => {
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();
});
}
} as SFUploadWidgetSchema
},
avatar4: {
type: 'string',
title: '',
ui: {
action: `/scm/cms/cms/upload/multipartFile/fileModel`,
fileType: 'image/png,image/jpeg,image/jpg',
limit: 1,
limitFileCount: 1,
resReName: 'url',
urlReName: 'url',
widget: 'upload',
descriptionI18n: '人车货照片',
data: {
// appId: environment.appId,
},
name: 'multipartFile',
multiple: true,
listType: 'picture-card',
change: (args: any) => {
if (args.type === 'success') {
const avatar = [
{
uid: -1,
name: 'LOGO',
status: 'done',
url: args.fileList[0].response.url,
response: {
url: args.fileList[0].response.url
}
}
];
this.sf?.setValue('/avatar', avatar);
}
},
beforeUpload: (file: any, _fileList: any) => {
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();
});
}
} as SFUploadWidgetSchema
}
},
required: ['reason']
};
this.ui = {
'*': {
spanLabelFixed: 100,
grid: { span: 20 }
},
$avatar: { grid: { span: 12} },
$avatar2: { grid: { span: 12} },
$avatar3: { grid: { span: 12} },
$avatar4: { grid: { span: 12} },
};
}
save(value: any): void {
console.log(value)
// this.http.post(`/user/${this.record.id}`, value).subscribe(res => {
// this.msgSrv.success('保存成功');
// this.modal.close(true);
// });
}
close(): void {
this.modal.destroy();
}
}

View File

@ -0,0 +1,29 @@
<!--
* @Author: your name
* @Date: 2021-12-14 15:53:03
* @LastEditTime: 2021-12-14 16:19:03
* @LastEditors: Please set LastEditors
* @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
* @FilePath: \tms-obc-web\src\app\routes\order-management\modal\bulk\sure-depart\sure-depart.component.html
-->
<sf #sf mode="edit" [schema]="schema" [ui]="ui" [formData]="i" button="none">
<ng-template sf-template="no2" let-me let-ui="ui" let-schema="schema">
<div style="display: flex;">
<nz-input-number [(ngModel)]="data.place1" [nzMin]="1" [nzMax]="10" [nzStep]="1"></nz-input-number>
<div class="left_btn"></div>
</div>
</ng-template>
<ng-template sf-template="no3" let-me let-ui="ui" let-schema="schema">
<div style="display: flex;">
<nz-input-number [(ngModel)]="data.place2" [nzMin]="1" [nzMax]="10" [nzStep]="1"></nz-input-number>
<div class="left_btn"></div>
</div>
</ng-template>
</sf>
<div class="modal-footer">
<button nz-button type="button" (click)="close()">关闭</button>
<button nz-button type="submit" nzType="primary" (click)="save(sf.value)" [nzLoading]="http.loading"
>确认发车</button
>
</div>

View File

@ -0,0 +1,7 @@
.left_btn {
width: 50px;
height: 32px;
padding-left: 8px;
line-height:32px;
background-color: #d7d7d7;
}

View File

@ -0,0 +1,199 @@
import { preloaderFinished } from '@delon/theme';
/*
* @Author: your name
* @Date: 2021-12-14 14:03:07
* @LastEditTime: 2021-12-14 16:34:52
* @LastEditors: Please set LastEditors
* @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
* @FilePath: \tms-obc-web\src\app\routes\order-management\modal\bulk\update-freight\update-freight.component.ts
*/
import { Component, OnInit, ViewChild } from '@angular/core';
import {
SFComponent,
SFCustomWidgetSchema,
SFDateWidgetSchema,
SFNumberWidgetSchema,
SFRadioWidgetSchema,
SFSchema,
SFSelectWidgetSchema,
SFTextareaWidgetSchema,
SFUISchema,
SFUploadWidgetSchema
} from '@delon/form';
import { _HttpClient } from '@delon/theme';
import { NzMessageService } from 'ng-zorro-antd/message';
import { NzModalRef } from 'ng-zorro-antd/modal';
import { SupplyManagementService } from 'src/app/routes/supply-management/services/supply-management.service';
import { Observable, Observer } from 'rxjs';
@Component({
selector: 'app-order-management-vehicle-sure-depart',
templateUrl: './sure-depart.component.html',
styleUrls: ['./sure-depart.component.less']
})
export class VehicleSureDepartComponent implements OnInit {
record: any = {};
i: any;
data: any ={
place1: '',
place2: ''
};
@ViewChild('sf', { static: false }) sf!: SFComponent;
schema: SFSchema = {};
ui: SFUISchema = {};
constructor(private modal: NzModalRef, private msgSrv: NzMessageService, public http: _HttpClient, public service: SupplyManagementService ) {}
ngOnInit(): void {
this.initSF();
}
initSF() {
this.schema = {
properties: {
datetime: {
type: 'string',
title: '装货时间',
format: 'date-time',
},
no2: {
type: 'string',
title: '装货重量',
ui: {
widget: 'custom',
}
},
no3: {
type: 'string',
title: '装货体积',
ui: {
widget: 'custom',
}
},
no4: {
type: 'string',
title: '',
ui: {
widget: 'text',
},
default: '单张大小不超过5M支持.jpg、.jpeg和 .png格式',
},
avatar: {
type: 'string',
title: '装货凭证',
ui: {
action: `/scm/cms/cms/upload/multipartFile/fileModel`,
fileType: 'image/png,image/jpeg,image/jpg',
limit: 1,
limitFileCount: 1,
resReName: 'url',
urlReName: 'url',
widget: 'upload',
descriptionI18n: ' 提单号',
data: {
// appId: environment.appId,
},
name: 'multipartFile',
multiple: true,
listType: 'picture-card',
change: (args: any) => {
if (args.type === 'success') {
const avatar = [
{
uid: -1,
name: 'LOGO',
status: 'done',
url: args.fileList[0].response.url,
response: {
url: args.fileList[0].response.url
}
}
];
this.sf?.setValue('/avatar', avatar);
}
},
beforeUpload: (file: any, _fileList: any) => {
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();
});
}
} as SFUploadWidgetSchema
},
avatar2: {
type: 'string',
title: '',
ui: {
action: `/scm/cms/cms/upload/multipartFile/fileModel`,
fileType: 'image/png,image/jpeg,image/jpg',
limit: 1,
limitFileCount: 1,
resReName: 'url',
urlReName: 'url',
widget: 'upload',
descriptionI18n: '人车货照片',
data: {
// appId: environment.appId,
},
name: 'multipartFile',
multiple: true,
listType: 'picture-card',
change: (args: any) => {
if (args.type === 'success') {
const avatar = [
{
uid: -1,
name: 'LOGO',
status: 'done',
url: args.fileList[0].response.url,
response: {
url: args.fileList[0].response.url
}
}
];
this.sf?.setValue('/avatar', avatar);
}
},
beforeUpload: (file: any, _fileList: any) => {
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();
});
}
} as SFUploadWidgetSchema
}
},
required: ['reason']
};
this.ui = {
'*': {
spanLabelFixed: 100,
grid: { span: 20 }
},
$avatar: { grid: { span: 12} },
$avatar2: { grid: { span: 12} },
};
}
save(value: any): void {
console.log(value)
// this.http.post(`/user/${this.record.id}`, value).subscribe(res => {
// this.msgSrv.success('保存成功');
// this.modal.close(true);
// });
}
close(): void {
this.modal.destroy();
}
}

View File

@ -0,0 +1,22 @@
<!--
* @Author: your name
* @Date: 2021-12-14 14:03:07
* @LastEditTime: 2021-12-15 15:53:02
* @LastEditors: Please set LastEditors
* @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
* @FilePath: \tms-obc-web\src\app\routes\order-management\modal\bulk\update-freight\update-freight.component.html
-->
<sf #sf [schema]="schema" [ui]="ui" [compact]="true" [button]="'none'">
</sf>
<nz-divider></nz-divider>
<div>
<p style="font-weight: bolder;">总运费:<span style="color: red;">¥{{gross}}</span></p>
<p>运输费:¥{{transportation}},附加费:¥{{additional}}</p>
</div>
<div class="modal-footer">
<button nz-button type="button" (click)="close()">关闭</button>
<button nz-button type="submit" nzType="primary" (click)="save(sf.value)" [disabled]="!sf.valid" [nzLoading]="http.loading"
>确认</button
>
</div>

View File

@ -0,0 +1,7 @@
.left_btn {
width: 50px;
height: 32px;
padding-left: 8px;
line-height:32px;
background-color: #d7d7d7;
}

View File

@ -0,0 +1,104 @@
import { preloaderFinished } from '@delon/theme';
/*
* @Author: your name
* @Date: 2021-12-14 14:03:07
* @LastEditTime: 2021-12-15 15:52:36
* @LastEditors: Please set LastEditors
* @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
* @FilePath: \tms-obc-web\src\app\routes\order-management\modal\bulk\update-freight\update-freight.component.ts
*/
import { Component, OnInit, ViewChild } from '@angular/core';
import {
SFComponent,
SFCustomWidgetSchema,
SFNumberWidgetSchema,
SFRadioWidgetSchema,
SFSchema,
SFSelectWidgetSchema,
SFTextareaWidgetSchema,
SFUISchema
} from '@delon/form';
import { _HttpClient } from '@delon/theme';
import { NzMessageService } from 'ng-zorro-antd/message';
import { NzModalRef } from 'ng-zorro-antd/modal';
@Component({
selector: 'app-order-management-vehicle-update-freight',
templateUrl: './update-freight.component.html',
styleUrls: ['./update-freight.component.less']
})
export class VehicleUpdateFreightComponent implements OnInit {
record: any = {};
i: any;
@ViewChild('sf', { static: false }) sf!: SFComponent;
schema: SFSchema = {};
ui: SFUISchema = {};
data: any = {};
constructor(private modal: NzModalRef, private msgSrv: NzMessageService, public http: _HttpClient) {}
ngOnInit(): void {
this.initSF();
if (this.record.id > 0) this.http.get(`/user/${this.record.id}`).subscribe(res => (this.i = res));
}
// 运输费
get transportation () {
console.log(this.sf?.value)
const value = Number(this.sf?.value?.number || 0) + Number(this.sf?.value?.number2 || 0) + Number(this.sf?.value?.number3 || 0)
console.log( value )
return value || 0
}
// 总运费
get gross () {
const value = Number(this.transportation || 0) + Number(this.transportation || 0)
console.log( value )
return value || 0
}
// 附加费
get additional () {
return 100
}
initSF() {
this.schema= {
properties: {
number: { type: 'number',title: '预付' ,minimum: 1, maximum: 999999999, multipleOf: 1, ui: { widgetWidth: 200 } },
number2: { type: 'number',title: '到付' ,minimum: 1, maximum: 999999999, multipleOf: 1, ui: { widgetWidth: 200 } },
number3: { type: 'number',title: '回单付' ,minimum: 1, maximum: 999999999, multipleOf: 1, ui: { widgetWidth: 200 } },
name3: {
type: 'string',
title: '变更原因',
maxLength: 100,
ui: {
widgetWidth: 300,
placeholder:"选填最多不超过100字",
widget: 'textarea',
autosize: { minRows: 3, maxRows: 6 }
} as SFTextareaWidgetSchema
},
},
required: ['name3'],
type: 'object',
};
this.ui = { '*': { spanLabelFixed: 100, grid: { span: 16,gutter:8 } }
};
}
save(value: any): void {
console.log(this.sf.value)
console.log(value)
console.log(this.data)
this.http.post(`/user/${this.record.id}`, value).subscribe(res => {
this.msgSrv.success('保存成功');
this.modal.close(true);
});
}
close(): void {
this.modal.destroy();
}
/**
* 更新数字框
* @param value
* @param type
*/
changeNumVal(value: any, type: number) {}
}

View File

@ -1,7 +1,7 @@
/*
* @Author: your name
* @Date: 2021-12-03 15:31:52
* @LastEditTime: 2021-12-14 15:55:50
* @LastEditTime: 2021-12-15 14:09: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\order-management.module.ts
@ -23,6 +23,10 @@ import { ConfirReceiptComponent } from './modal/bulk/confir-receipt/confir-recei
import { SureArriveComponent } from './modal/bulk/sure-arrive/sure-arrive.component';
import { SureDepartComponent } from './modal/bulk/sure-depart/sure-depart.component';
import { UpdateFreightComponent } from './modal/bulk/update-freight/update-freight.component';
import { VehicleConfirReceiptComponent } from './modal/vehicle/confir-receipt/confir-receipt.component';
import { VehicleSureArriveComponent } from './modal/vehicle/sure-arrive/sure-arrive.component';
import { VehicleSureDepartComponent } from './modal/vehicle/sure-depart/sure-depart.component';
import { VehicleUpdateFreightComponent } from './modal/vehicle/update-freight/update-freight.component';
import { OrderManagementRoutingModule } from './order-management-routing.module';
const COMPONENTS: Type<void>[] = [
@ -39,7 +43,11 @@ const COMPONENTS: Type<void>[] = [
UpdateFreightComponent,
ConfirReceiptComponent,
SureDepartComponent,
SureArriveComponent
SureArriveComponent,
VehicleUpdateFreightComponent,
VehicleConfirReceiptComponent,
VehicleSureDepartComponent,
VehicleSureArriveComponent,
];
@NgModule({

View File

@ -11,7 +11,9 @@
</nz-card>
<nz-card>
<div class="card-title">装卸货信息<span class="tip-font">预计公里数:-km预计行程耗时-小时</span></div>
<div class="card-title"
>装卸货信息<span class="tip-font">预计公里数:{{ totalDistance }}km预计行程耗时{{ totalTime }}小时</span></div
>
<form nz-form [formGroup]="validateForm1" role="form">
<div nz-row [nzGutter]="24">
<div nz-col [nzSpan]="8">

View File

@ -10,11 +10,10 @@ import {
SFUISchema
} from '@delon/form';
import { _HttpClient } from '@delon/theme';
import { AmapPoiPickerComponent } from '@shared';
import { AmapPoiPickerComponent, AmapService, ShipperBaseService } from '@shared';
import { NzModalService } from 'ng-zorro-antd/modal';
import { PublishGoodsChooseFamifiarComponent } from '../choose-famifiar/choose-famifiar.component';
import { SupplyManagementService } from '../../services/supply-management.service';
import { debug } from 'console';
import { SupplyManagementService} from '../../services/supply-management.service';
@Component({
selector: 'app-publish-goods-bulk-publish',
templateUrl: './bulk-publish.component.html',
@ -31,6 +30,8 @@ export class SupplyManagementBulkPublishComponent implements OnInit {
creatTime: any; // 货源单设置回显
modifyTime: any; // 货源单设置回显
totalFees: any; // 总数信息
totalDistance = 0.0; //总里程
totalTime = 0.0; //路程总时间
id = this.route.snapshot.params.id;
// // 单位
unit1 = '吨';
@ -40,7 +41,7 @@ export class SupplyManagementBulkPublishComponent implements OnInit {
endInfo: any = [];
PageStatus = '';
dataList: any;
constructor(private http: _HttpClient, fb: FormBuilder, private router: Router, private route: ActivatedRoute, private modalService: NzModalService, public service: SupplyManagementService) {
constructor(private http: _HttpClient, fb: FormBuilder, private router: Router, private route: ActivatedRoute, private modalService: NzModalService, public service: SupplyManagementService, private amapService: AmapService, public service2: ShipperBaseService,) {
this.validateForm1 = fb.group({
createTime: [null, []],
modifyTime: [null, []],
@ -113,16 +114,8 @@ export class SupplyManagementBulkPublishComponent implements OnInit {
ui: {
widget: 'select',
placeholder: '请选择',
allowClear: true
// asyncData: () =>
// this.service.loadChildData2('0', '2').pipe(
// map((data: any) => {
// return data.map((m: any) => {
// return { label: m.name, value: m.id };
// });
// }),
// ),
// change: (i) => this.updateCategory(i, '/categoryId2'),
allowClear: true,
asyncData: () => this.service2.getEnterpriseProject(),
} as SFSelectWidgetSchema
},
enterpriseInfoName: {
@ -530,39 +523,47 @@ export class SupplyManagementBulkPublishComponent implements OnInit {
console.log(res)
})
}
// 打开地图
openMap(type: string, index: number) {
const modalRef = this.modalService.create({
nzTitle: '',
nzContent: AmapPoiPickerComponent,
nzWidth: 900,
nzOnOk: item => {
const poi = item.poi;
console.log(item.poi);
const locList = poi.location.toString().split(',');
switch (type) {
case 'start':
this.startInfo[index].detailedAddress = poi.district + poi.name;
this.startInfo[index].longitude = locList[0];
this.startInfo[index].latitude = locList[1];
this.startInfo[index].province = poi.cityInfo.province;
this.startInfo[index].city = poi.cityInfo.city;
this.startInfo[index].area = poi.cityInfo.district;
break;
case 'end':
this.endInfo[index].detailedAddress = poi.district + poi.name;
this.endInfo[index].longitude = locList[0];
this.endInfo[index].latitude = locList[1];
this.endInfo[index].province = poi.cityInfo.province;
this.endInfo[index].city = poi.cityInfo.city;
this.endInfo[index].area = poi.cityInfo.district;
break;
default:
break;
}
// 打开地图
openMap(type: string, index: number) {
const modalRef = this.modalService.create({
nzTitle: '',
nzContent: AmapPoiPickerComponent,
nzWidth: 900,
nzOnOk: item => {
const poi = item.poi;
const locList = poi.location.toString().split(',');
switch (type) {
case 'start':
this.startInfo[index].detailedAddress = poi.district + poi.name;
this.startInfo[index].longitude = locList[0];
this.startInfo[index].latitude = locList[1];
this.startInfo[index].province = poi.cityInfo.province;
this.startInfo[index].city = poi.cityInfo.city;
this.startInfo[index].area = poi.cityInfo.district;
this.startInfo[index].address = poi.name;
break;
case 'end':
this.endInfo[index].detailedAddress = poi.district + poi.name;
this.endInfo[index].longitude = locList[0];
this.endInfo[index].latitude = locList[1];
this.endInfo[index].province = poi.cityInfo.province;
this.endInfo[index].city = poi.cityInfo.city;
this.endInfo[index].area = poi.cityInfo.district;
this.endInfo[index].address = poi.name;
break;
default:
break;
}
});
}
if (this.startInfo[0]?.area && this.endInfo[0]?.area) {
this.amapService.drivingCompute([...this.startInfo], [...this.endInfo]).subscribe((res: any) => {
this.totalDistance = res.distance;
this.totalTime = res.time;
});
}
}
});
}
goBack() {
window.history.go(-1);
}
@ -662,19 +663,6 @@ export class SupplyManagementBulkPublishComponent implements OnInit {
goodsName: res?.goodsInfoVOList[0]?.goodsName || '',
}
this.sf4data = {
// weight: res?.goodsInfoVOList[0]?.weight || '',
// volume: res?.goodsInfoVOList[0]?.volume || '',
// vehicleDemand: res?.goodsInfoVOList[0]?.vehicleDemand || '',
// maxCube: res?.goodsInfoVOList[0]?.maxCube?.split(',') || '',
// maxWeight: res?.goodsInfoVOList[0]?.maxWeight?.split(',') || '',
// number: res?.goodsInfoVOList[0]?.number || '',
// goodsType: res?.goodsInfoVOList[0]?.goodsType || '',
// modifyTime: res?.goodsInfoVOList[0]?.modifyTime || '',
// modifyUserId: res?.goodsInfoVOList[0]?.modifyUserId || '',
// resourceId: res?.goodsInfoVOList[0]?.resourceId || '',
// rule: res?.goodsInfoVOList[0]?.rule || '',
// settlementBasis: res?.goodsInfoVOList[0]?.settlementBasis || '',
freightPrice: res?.goodsInfoVOList[0]?.freightPrice || '',
freightType: res?.goodsInfoVOList[0]?.freightType || '',
rule: res?.goodsInfoVOList[0]?.rule || '',

View File

@ -3,6 +3,7 @@ import { Router } from '@angular/router';
import { STColumn, STComponent } from '@delon/abc/st';
import { SFComponent, SFDateWidgetSchema, SFSchema, SFSelectWidgetSchema, SFUISchema } from '@delon/form';
import { ModalHelper, _HttpClient } from '@delon/theme';
import { ShipperBaseService } from '@shared';
import { NzModalService } from 'ng-zorro-antd/modal';
import { map } from 'rxjs/operators';
import { SupplyManagementService } from '../../services/supply-management.service';
@ -33,7 +34,7 @@ export class SupplyManagementBulkComponent implements OnInit {
receivedQuantity: 0,
stayQuantity: 0
};
constructor(public service: SupplyManagementService, private modal: NzModalService, private router: Router) { }
constructor(public service: SupplyManagementService, private modal: NzModalService, private router: Router,public service2: ShipperBaseService) { }
ngOnInit(): void {
this.initSF();
@ -134,7 +135,7 @@ export class SupplyManagementBulkComponent implements OnInit {
_$expand: (value: boolean) => value,
},
allowClear: true,
asyncData: () => this.getCatalogueMember(),
asyncData: () => this.service2.getEnterpriseProject(),
},
},
no4: {

View File

@ -11,7 +11,9 @@
</nz-card>
<nz-card>
<div class="card-title">装卸货信息<span class="tip-font">预计公里数:-km预计行程耗时-小时</span></div>
<div class="card-title"
>装卸货信息<span class="tip-font">预计公里数:{{ totalDistance }}km预计行程耗时{{ totalTime }}小时</span></div
>
<form nz-form [formGroup]="validateForm1" role="form">
<div nz-row [nzGutter]="24">
<div nz-col [nzSpan]="8">

View File

@ -10,7 +10,7 @@ import {
SFUISchema
} from '@delon/form';
import { _HttpClient } from '@delon/theme';
import { AmapPoiPickerComponent } from '@shared';
import { AmapPoiPickerComponent,AmapService } from '@shared';
import { NzModalService } from 'ng-zorro-antd/modal';
import { PublishGoodsChooseFamifiarComponent } from '../choose-famifiar/choose-famifiar.component';
import { SupplyManagementService } from '../../services/supply-management.service';
@ -35,6 +35,8 @@ export class SupplyManagementOnecarPublishComponent implements OnInit {
loadingTime: any; // 货源单设置回显
unloadingTime: any; // 货源单设置回显
totalFees: any; // 总数信息
totalDistance = 0.0; //总里程
totalTime = 0.0; //路程总时间
npp =false
id = this.route.snapshot.params.id;
// // 单位
@ -45,7 +47,15 @@ export class SupplyManagementOnecarPublishComponent implements OnInit {
endInfo: any = [];
PageStatus = '';
dataList: any;
constructor(private http: _HttpClient, fb: FormBuilder, private router: Router, private route: ActivatedRoute, private modalService: NzModalService, public service: SupplyManagementService) {
constructor(
private http: _HttpClient,
fb: FormBuilder,
private router: Router,
private route: ActivatedRoute,
private modalService: NzModalService,
public service: SupplyManagementService,
private amapService: AmapService
) {
this.validateForm1 = fb.group({
loadingTime: [null, []],
unloadingTime: [null, []],
@ -676,39 +686,47 @@ export class SupplyManagementOnecarPublishComponent implements OnInit {
}
})
}
// 打开地图
openMap(type: string, index: number) {
const modalRef = this.modalService.create({
nzTitle: '',
nzContent: AmapPoiPickerComponent,
nzWidth: 900,
nzOnOk: item => {
const poi = item.poi;
console.log(item.poi);
const locList = poi.location.toString().split(',');
switch (type) {
case 'start':
this.startInfo[index].detailedAddress = poi.district + poi.name;
this.startInfo[index].longitude = locList[0];
this.startInfo[index].latitude = locList[1];
this.startInfo[index].province = poi.cityInfo.province;
this.startInfo[index].city = poi.cityInfo.city;
this.startInfo[index].area = poi.cityInfo.district;
break;
case 'end':
this.endInfo[index].detailedAddress = poi.district + poi.name;
this.endInfo[index].longitude = locList[0];
this.endInfo[index].latitude = locList[1];
this.endInfo[index].province = poi.cityInfo.province;
this.endInfo[index].city = poi.cityInfo.city;
this.endInfo[index].area = poi.cityInfo.district;
break;
default:
break;
}
// 打开地图
openMap(type: string, index: number) {
const modalRef = this.modalService.create({
nzTitle: '',
nzContent: AmapPoiPickerComponent,
nzWidth: 900,
nzOnOk: item => {
const poi = item.poi;
const locList = poi.location.toString().split(',');
switch (type) {
case 'start':
this.startInfo[index].detailedAddress = poi.district + poi.name;
this.startInfo[index].longitude = locList[0];
this.startInfo[index].latitude = locList[1];
this.startInfo[index].province = poi.cityInfo.province;
this.startInfo[index].city = poi.cityInfo.city;
this.startInfo[index].area = poi.cityInfo.district;
this.startInfo[index].address = poi.name;
break;
case 'end':
this.endInfo[index].detailedAddress = poi.district + poi.name;
this.endInfo[index].longitude = locList[0];
this.endInfo[index].latitude = locList[1];
this.endInfo[index].province = poi.cityInfo.province;
this.endInfo[index].city = poi.cityInfo.city;
this.endInfo[index].area = poi.cityInfo.district;
this.endInfo[index].address = poi.name;
break;
default:
break;
}
});
}
if (this.startInfo[0]?.area && this.endInfo[0]?.area) {
this.amapService.drivingCompute([...this.startInfo], [...this.endInfo]).subscribe((res: any) => {
this.totalDistance = res.distance;
this.totalTime = res.time;
});
}
}
});
}
goBack() {
window.history.go(-1);
}

View File

@ -23,6 +23,7 @@ export class SupplyManagementVehicleComponent implements OnInit {
auditMany = false;
isVisible = false;
_$expand = false;
@ViewChild('st') private readonly st!: STComponent;
@ViewChild('sf', { static: false }) sf!: SFComponent;
@ViewChild('sfFre', { static: false }) sfFre!: SFComponent;

View File

@ -46,7 +46,8 @@ export class AmapPoiPickerComponent implements OnInit {
'AMap.PoiPicker',
'AMap.Scale',
'AMap.InfoWindow',
'AMap.Geolocation'
'AMap.Geolocation',
'AMap.Geocoder'
],
AMapUI: {
// 是否加载 AMapUI缺省不加载
@ -110,11 +111,18 @@ export class AmapPoiPickerComponent implements OnInit {
infoWindow.setContent(`地址: <pre>${poi.name}</pre>`);
infoWindow.open(map, marker.getPosition());
map.setCenter(marker.getPosition());
//获取行政区信息
map.getCity(function (info: any) {
poi.cityInfo = info;
//获取地址所在的行政区
AMap.plugin('AMap.Geocoder', () => {
var geocoder = new AMap.Geocoder({
city: poi.adcode
});
geocoder.getLocation(poi.name, (status: any, result: any) => {
if (status === 'complete' && result.info === 'OK') {
// result中对应详细地理坐标信息
this.poi.cityInfo = result.geocodes[0].addressComponent;
}
});
});
});

View File

@ -1,9 +1,31 @@
import { Injectable } from '@angular/core';
import { Observable, Subject } from 'rxjs';
declare var AMap: any;
@Injectable({
providedIn: 'root'
})
export class AmapService {
constructor() {}
public length = 0;
public time = 0;
constructor() { }
sub = new Subject<any>();
//计算路径驾车最优路线的长度与所需时间
drivingCompute(starts: any[], ends: any[]): Observable<any> {
AMap.plugin('AMap.Driving', () => {
let driving = new AMap.Driving({
// 驾车路线规划策略AMap.DrivingPolicy.LEAST_TIME是最快捷模式
policy: AMap.DrivingPolicy.LEAST_TIME
});
const points = starts.concat(ends).map(item => {
return { keyword: item.address, city: item.city };
});
driving.search(points, (status: any, result: any) => {
const repData = { distance: (result.routes[0].distance / 1000).toFixed(2), time: (result.routes[0].time / 60 / 60).toFixed(2) };
this.sub.next(repData);
});
});
return this.sub;
}
}

View File

@ -0,0 +1,105 @@
import { Injectable, Injector } from '@angular/core';
import { BaseService } from '../core/base.service';
import { map } from 'rxjs/operators';
@Injectable({
providedIn: 'root'
})
export class ShipperBaseService extends BaseService {
$api_get_carless_carrier = ``; // 获取承运人
$api_get_enterprise_project = `/api/mdc/cuc/enterpriseProject/getEnterpriseProjectList `; // 所属项目列表
$api_get_staff_list = `/api/mdc/cuc/userApp/getStaffList`; //查询企业项目员工列表(录单员)
$api_get_network_freight_forwarder = ``; // 获取网络货运人
constructor(public injector: Injector) {
super(injector);
}
/**
* 获取无车承运人
* @returns
*/
getCarlessCarrier() {
return
const params = {
};
return this.request(this.$api_get_carless_carrier, params, 'POST').pipe(
map((res) => {
if (res) {
res.map((m: any) => {
return { label: m.platformName, value: m.operationId };
});
}
}),
);
}
/**
* 获取所属项目
* @returns
*/
getEnterpriseProject(params = {}) {
return this.request(this.$api_get_enterprise_project, params).pipe(
map((res: any) => {
if (!res) {
return [];
}
const list = res.map(((item: any) => {
return {
label: item.projectName,
value: item.enterpriseId
}
}))
const obj = [{ value: '', label: '全部' }];
return [...obj, ...list];
})
)
}
/**
* 获取录单员
* @returns
*/
getStaffList(params = {}) {
return this.request(this.$api_get_staff_list, params).pipe(
map((res: any) => {
if (!res) {
return [];
}
const list = res.map(((item: any) => {
return {
label: item.name,
value: item.userId
}
}))
const obj = [{ value: '', label: '全部' }];
return [...obj, ...list];
})
)
}
/**
* 获取网络货运人
* @returns
*/
getNetworkFreightForwarder(params = {}) {
return this.request(this.$api_get_network_freight_forwarder, params).pipe(
map((res: any) => {
if (!res) {
return [];
}
const list = res.map(((item: any) => {
return {
label: item.name,
value: item.userId
}
}))
const obj = [{ value: '', label: '全部' }];
return [...obj, ...list];
})
)
}
}

View File

@ -1,3 +1,11 @@
/*
* @Author: your name
* @Date: 2021-12-07 16:27:52
* @LastEditTime: 2021-12-14 21:09:21
* @LastEditors: your name
* @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
* @FilePath: \tms-obc-web\src\app\shared\services\index.ts
*/
// Core
export * from './core/base.service';
export * from './core/cache.service';
@ -12,4 +20,5 @@ export * from './business/user.service';
export * from './business/sl-platform.service';
export * from './business/user.service';
export * from './business/environment.service';
export * from './business/shipper-base.service';

Binary file not shown.

Before

Width:  |  Height:  |  Size: 44 KiB

After

Width:  |  Height:  |  Size: 65 KiB

View File

@ -1,14 +1,16 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="32px" height="32px" viewBox="0 0 32 32" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>logo</title>
<g id="页面-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="密码登录" transform="translate(-16.000000, -16.000000)">
<g id="logo" transform="translate(16.000000, 16.000000)">
<rect id="矩形" fill="#271F30" x="0" y="0" width="32" height="32" rx="16"></rect>
<g id="编组" transform="translate(8.000000, 8.000000)">
<path d="M1.08161153,13.880448 C1.34092336,13.880448 1.56024493,13.9851488 1.73270293,14.1919966 L1.73270293,14.1919966 C1.90078698,14.4077823 1.98451658,14.6586811 1.98451658,14.9395856 C1.98451658,15.2211285 1.90078698,15.4720273 1.73582716,15.6846209 C1.56024493,15.8952992 1.34092336,16 1.08161153,16 C0.834171801,16 0.615475074,15.8959377 0.433019519,15.6916435 C0.261811225,15.4726657 0.17808162,15.2217669 0.17808162,14.9395856 C0.17808162,14.6580427 0.261811225,14.4077823 0.426771041,14.1951887 C0.615475074,13.9838719 0.834171801,13.880448 1.08161153,13.880448 Z M1.38966149,4.87765094 C1.87891731,4.87765094 2.29943987,5.09088297 2.63873222,5.51160128 C2.98114881,5.90933648 3.15548135,6.40219616 3.15548135,6.97358141 L3.15548135,6.97358141 L3.15548135,12.3975916 C3.15548135,12.975361 3.2660794,13.3948025 3.48227674,13.6431476 C3.70722195,13.8908542 4.01902099,14.0121539 4.43391993,14.0121539 L4.43391993,14.0121539 L13.4892141,14.0121539 C13.7091605,14.0121539 13.8928658,14.1053631 14.0347062,14.2905047 C14.1759218,14.4456406 14.2509036,14.6544037 14.2509036,14.9027488 C14.2509036,15.1357718 14.1771715,15.3426197 14.0309572,15.5188234 C13.8928658,15.699496 13.7097854,15.7927053 13.4892141,15.7927053 L13.4892141,15.7927053 L4.43391993,15.7927053 C3.60224752,15.7927053 2.91928888,15.4920098 2.4031646,14.8995567 C1.89078942,14.2847589 1.63147758,13.4433223 1.63147758,12.3975916 L1.63147758,12.3975916 L1.63147758,6.97358141 C1.63147758,6.68310064 1.50650802,6.65884071 1.38966149,6.65884071 L1.38966149,6.65884071 L0.761689457,6.65884071 C0.553615143,6.65884071 0.371784436,6.56626992 0.219946423,6.38432042 C0.0737320394,6.20939354 0,6.00190728 0,5.76824582 C0,5.52053915 0.0749817349,5.31177604 0.223695509,5.14770229 C0.371784436,4.97022173 0.553615143,4.87765094 0.761689457,4.87765094 L0.761689457,4.87765094 Z M13.5048353,4.87758709 C13.7247817,4.87758709 13.908487,4.97143473 14.0497026,5.15657632 C14.1909182,5.3117122 14.2671496,5.5204753 14.2671496,5.76818198 C14.2671496,6.00184344 14.1927927,6.2093297 14.0465783,6.384895 C13.908487,6.56556765 13.7247817,6.65877687 13.5048353,6.65877687 L13.5048353,6.65877687 L8.34859134,6.65877687 L6.37032323,10.9987511 L9.9850677,10.9987511 L9.99131618,11.1289886 C10.0181846,11.6729218 10.2525026,12.1747194 10.6505306,12.5405336 L10.6505306,12.5405336 L10.9104673,12.7793024 L5.89356437,12.7793024 C5.43305154,12.7793024 5.0768883,12.5392568 4.83257282,12.0661881 C4.60450337,11.5995036 4.5982549,11.1226044 4.81445223,10.6450668 L4.81445223,10.6450668 L6.62463628,6.65877687 L4.70072993,6.65877687 C4.49265562,6.65877687 4.31082491,6.56620607 4.1589869,6.384895 C4.01277252,6.20869128 3.93841563,6.00184344 3.93841563,5.76818198 C3.93841563,5.5204753 4.01402221,5.3117122 4.16273598,5.14763845 C4.31082491,4.97015789 4.49265562,4.87758709 4.70072993,4.87758709 L4.70072993,4.87758709 Z M1.122789,0.113191737 C1.34273542,0.113191737 1.52644067,0.207039371 1.66765627,0.391542541 L1.66765627,0.391542541 L3.470967,2.66878409 C3.60593412,2.84562623 3.67341768,3.05119724 3.67341768,3.28230501 C3.66154557,3.53511905 3.58094021,3.74196689 3.43347613,3.90284855 C3.32287807,4.06500704 3.15354432,4.15566258 2.95171848,4.15566258 C2.93547244,4.15566258 2.9192264,4.15502416 2.90235551,4.15374732 C2.70177936,4.13906368 2.51994866,4.04968498 2.36186217,3.8881649 L2.36186217,3.8881649 L0.546054485,1.61539229 C0.412337057,1.44110383 0.344853496,1.22851021 0.344853496,0.985272465 C0.344853496,0.736927368 0.420460079,0.528164265 0.569173853,0.364090512 C0.721011866,0.197463081 0.90659166,0.113191737 1.122789,0.113191737 Z M12.6570418,0 C12.8776131,0 13.0606935,0.0938476333 13.2025339,0.278989223 C13.3437496,0.434125106 13.4193561,0.642888209 13.4193561,0.890594887 C13.4193561,1.12425634 13.3449992,1.33110419 13.1987849,1.50666949 C13.0606935,1.68734214 12.8776131,1.78118977 12.6570418,1.78118977 L12.6570418,1.78118977 L5.51690612,1.78118977 C5.3088318,1.78118977 5.12637625,1.68861898 4.97516308,1.50666949 C4.8289487,1.33174261 4.75459181,1.12425634 4.75459181,0.890594887 C4.75459181,0.642888209 4.8301984,0.434125106 4.97891217,0.270051353 C5.12637625,0.0925707947 5.3088318,0 5.51690612,0 L5.51690612,0 Z" id="形状结合" fill="#FFFFFF"></path>
<path d="M12.6084925,11.8047185 C11.9850691,11.8047185 11.4777186,11.2869861 11.4777186,10.6493845 C11.4777186,10.0130582 11.9850691,9.49468815 12.6084925,9.49468815 C13.2319159,9.49468815 13.7386425,10.0130582 13.7386425,10.6493845 C13.7386425,11.2869861 13.2319159,11.8047185 12.6084925,11.8047185 M12.5965937,8.18161824 C11.2710294,8.18161824 10.1925618,9.28350978 10.1925618,10.6372257 C10.1925618,11.9915808 11.2710294,13.0934723 12.5965937,13.0934723 C13.9215324,13.0934723 15,11.9915808 15,10.6372257 C15,9.28350978 13.9215324,8.18161824 12.5965937,8.18161824" id="Fill-56" fill="#D8232A"></path>
</g>
<svg width="1024px" height="1024px" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>编组 2</title>
<g id="货源" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="编组-2">
<rect id="矩形" fill="#FFFFFF" x="0" y="0" width="1024" height="1024" rx="512"></rect>
<g id="编组" transform="translate(232.000000, 219.000000)">
<path d="M504.511948,513.748786 L165.833648,513.748786 C150.315956,513.748786 138.654317,509.303562 130.24111,500.225946 C122.155084,491.124934 118.018591,475.753816 118.018591,454.580511 L118.018591,255.808797 C118.018591,234.869451 111.498356,216.807803 98.6915859,202.232146 C86.0016662,186.814236 70.2736441,179 51.97492,179 L28.4880519,179 C20.7058359,179 13.9051607,182.392408 8.36646644,188.896473 C2.80440216,194.909224 0,202.559689 0,211.637305 C0,220.200211 2.75766212,227.803884 8.22624633,234.214365 C13.9051607,240.882202 20.7058359,244.27461 28.4880519,244.27461 L51.97492,244.27461 C56.3451133,244.27461 61.0191169,245.163654 61.0191169,255.808797 L61.0191169,454.580511 C61.0191169,492.903024 70.7176744,523.738843 89.8810891,546.269112 C109.184724,567.980523 134.728154,579 165.833648,579 L504.511948,579 C512.761564,579 519.60898,575.584196 524.773754,568.963151 C530.242338,562.505878 533,554.925601 533,546.386091 C533,537.285079 530.195598,529.634614 524.913974,523.949406 C519.60898,517.16459 512.738194,513.748786 504.511948,513.748786" id="Fill-46" fill="#271F30"></path>
<path d="M87.7461986,142.20657 C93.682936,148.120025 100.511357,151.392293 108.043739,151.92988 C108.677304,151.976627 109.287404,152 109.897503,152 C117.476816,152 123.83593,148.680985 127.9893,142.744157 C133.527126,136.854075 136.554158,129.281112 137,120.025268 C137,111.564119 134.465741,104.037903 129.397222,97.563487 L61.676178,14.190777 C56.3730054,7.43588124 49.4741881,4 41.2143796,4 C33.0953632,4 26.1261498,7.08528111 20.4240661,13.1857233 C14.8393092,19.1926721 12,26.8357549 12,35.9279848 C12,44.833228 14.5342594,52.6165509 19.5558476,58.9974732 L87.7461986,142.20657 Z" id="Fill-48" fill="#271F30"></path>
<path d="M64.520927,519.46506 C58.0290557,511.853012 49.7730889,508 40.0117606,508 C30.6973366,508 22.464891,511.806024 15.3614666,519.58253 C9.15185057,527.406024 6,536.615663 6,546.976506 C6,557.360843 9.15185057,566.593976 15.5966793,574.65241 C22.464891,582.170482 30.6973366,586 40.0117606,586 C49.7730889,586 58.0290557,582.146988 64.6385334,574.393976 C70.8481494,566.570482 74,557.337349 74,546.976506 C74,536.639157 70.8481494,527.406024 64.6385334,519.606024 L64.520927,519.46506 Z" id="Fill-50" fill="#271F30"></path>
<path d="M206.505084,65 L473.494916,65 C481.742698,65 488.588592,61.5752688 493.752217,54.9820789 C499.219586,48.5752688 502,41.0268817 502,32.5 C502,23.4605735 499.172856,15.8422939 493.892406,10.1810036 C488.588592,3.42473118 481.742698,0 473.494916,0 L206.505084,0 C198.724598,0 191.90207,3.3781362 186.387971,9.85483871 C180.827144,15.8422939 178,23.4605735 178,32.5 C178,41.0268817 180.780414,48.5985663 186.247783,54.9820789 C191.90207,61.6218638 198.724598,65 206.505084,65" id="Fill-52" fill="#271F30"></path>
<path d="M175.562613,244.145835 L247.648094,244.145835 L179.823593,389.941747 C171.723049,407.407369 171.957169,424.84964 180.502541,441.918316 C189.656624,459.22049 203.001452,468 220.25608,468 L408.230853,468 L398.49147,459.267189 C383.57804,445.887776 374.798548,427.534863 373.791833,407.640866 L373.557713,402.877515 L238.119419,402.877515 L312.241742,244.145835 L505.437387,244.145835 C513.678403,244.145835 520.561525,240.73677 525.735572,234.128787 C531.213975,227.707603 534,220.11893 534,211.572918 C534,202.51321 531.143739,194.877838 525.852632,189.203846 C520.561525,182.432415 513.678403,179 505.437387,179 L175.562613,179 C167.766425,179 160.953539,182.385715 155.4049,188.876949 C149.832849,194.877838 147,202.51321 147,211.572918 C147,220.11893 149.786025,227.684253 155.264428,234.128787 C160.953539,240.76012 167.766425,244.145835 175.562613,244.145835" id="Fill-54" fill="#271F30"></path>
<path d="M471.096083,432.734886 C447.727225,432.734886 428.709325,413.740379 428.709325,390.348129 C428.709325,367.002663 447.727225,347.984763 471.096083,347.984763 C494.464941,347.984763 513.459448,367.002663 513.459448,390.348129 C513.459448,413.740379 494.464941,432.734886 471.096083,432.734886 M470.650058,299.811009 C420.961638,299.811009 380.535571,340.237076 380.535571,389.902047 C380.535571,439.590467 420.961638,480.016534 470.650058,480.016534 C520.315029,480.016534 560.741096,439.590467 560.741096,389.902047 C560.741096,340.237076 520.315029,299.811009 470.650058,299.811009" id="Fill-56" fill="#D8232A"></path>
</g>
</g>
</g>

Before

Width:  |  Height:  |  Size: 5.4 KiB

After

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.2 KiB

After

Width:  |  Height:  |  Size: 4.2 KiB