Merge branch 'develop' of https://gitlab.eascs.com/tms-ui/tms-obc-web into develop
This commit is contained in:
@ -1,7 +1,7 @@
|
|||||||
/*
|
/*
|
||||||
* @Author: your name
|
* @Author: your name
|
||||||
* @Date: 2021-11-29 10:20:33
|
* @Date: 2021-11-29 10:20:33
|
||||||
* @LastEditTime: 2021-12-01 20:37:48
|
* @LastEditTime: 2021-12-03 11:10:47
|
||||||
* @LastEditors: Please set LastEditors
|
* @LastEditors: Please set LastEditors
|
||||||
* @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
|
* @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
|
||||||
* @FilePath: \tms-obc-web\src\app\routes\routes-routing.module.ts
|
* @FilePath: \tms-obc-web\src\app\routes\routes-routing.module.ts
|
||||||
@ -34,7 +34,8 @@ const routes: Routes = [
|
|||||||
{ path: 'system', loadChildren: () => import('./sys-setting/sys-setting.module').then(m => m.SysSettingModule) },
|
{ path: 'system', loadChildren: () => import('./sys-setting/sys-setting.module').then(m => m.SysSettingModule) },
|
||||||
{ path: 'ticket', loadChildren: () => import('./ticket-management/ticket-management.module').then(m => m.TicketManagementModule) },
|
{ path: 'ticket', loadChildren: () => import('./ticket-management/ticket-management.module').then(m => m.TicketManagementModule) },
|
||||||
{ path: 'supplygoods', loadChildren: () => import('./supply-goods/supply-goods.module').then(m => m.SupplyGoodsModule) },
|
{ path: 'supplygoods', loadChildren: () => import('./supply-goods/supply-goods.module').then(m => m.SupplyGoodsModule) },
|
||||||
{ path: 'vehicle', loadChildren: () => import('./vehicle/vehicle.module').then(m => m.VehicleModule) }
|
{ path: 'vehicle', loadChildren: () => import('./vehicle/vehicle.module').then(m => m.VehicleModule) },
|
||||||
|
{ path: 'supply-management', loadChildren: () => import('./supply-management/supply-management.module').then((m) => m.SupplyManagementModule) },
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
// passport
|
// passport
|
||||||
|
|||||||
@ -0,0 +1,29 @@
|
|||||||
|
<nz-card>
|
||||||
|
<div nz-row nzGutter="20">
|
||||||
|
<div nz-col nzSpan="13">
|
||||||
|
<div style="height: 120px;">
|
||||||
|
<div class="mb-md" nz-row>
|
||||||
|
<button nzType="primary" (click)="add()" nz-button>
|
||||||
|
<i nz-icon nzType="plus"></i>
|
||||||
|
添加熟车
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
<sf mode="search" [schema]="searchSchema" (formSubmit)="st.reset($event)" (formReset)="st.reset($event)"></sf>
|
||||||
|
</div>
|
||||||
|
<st #st [data]="url" [columns]="columns"></st>
|
||||||
|
</div>
|
||||||
|
<div nz-col nzSpan="11">
|
||||||
|
<div style="height: 120px;"></div>
|
||||||
|
<st #selectedST [data]="url" [columns]="selectedColumn"></st>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</nz-card>
|
||||||
|
<nz-modal [(nzVisible)]="isVisible" nzTitle="添加司机" (nzOnCancel)="handleCancel()" nzMaskClosable="false">
|
||||||
|
<div *nzModalContent>
|
||||||
|
<sf [schema]="addCarSchema" [button]="'none'"></sf>
|
||||||
|
</div>
|
||||||
|
<div *nzModalFooter>
|
||||||
|
<button nz-button nzType="default" (click)="handleCancel()">取消</button>
|
||||||
|
<button nz-button nzType="primary" (click)="handleOk()" [nzLoading]="service.http.loading">确定</button>
|
||||||
|
</div>
|
||||||
|
</nz-modal>
|
||||||
@ -0,0 +1,24 @@
|
|||||||
|
import { waitForAsync, ComponentFixture, TestBed } from '@angular/core/testing';
|
||||||
|
import { SupplyManagementAddDriversComponent } from './add-drivers.component';
|
||||||
|
|
||||||
|
describe('SupplyManagementAddDriversComponent', () => {
|
||||||
|
let component: SupplyManagementAddDriversComponent;
|
||||||
|
let fixture: ComponentFixture<SupplyManagementAddDriversComponent>;
|
||||||
|
|
||||||
|
beforeEach(waitForAsync(() => {
|
||||||
|
TestBed.configureTestingModule({
|
||||||
|
declarations: [ SupplyManagementAddDriversComponent ]
|
||||||
|
})
|
||||||
|
.compileComponents();
|
||||||
|
}));
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
fixture = TestBed.createComponent(SupplyManagementAddDriversComponent);
|
||||||
|
component = fixture.componentInstance;
|
||||||
|
fixture.detectChanges();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should create', () => {
|
||||||
|
expect(component).toBeTruthy();
|
||||||
|
});
|
||||||
|
});
|
||||||
@ -0,0 +1,152 @@
|
|||||||
|
import { Component, OnInit, ViewChild } from '@angular/core';
|
||||||
|
import { STColumn, STColumnButton, STComponent, STData } from '@delon/abc/st';
|
||||||
|
import { SFSchema, SFUISchema } from '@delon/form';
|
||||||
|
import { ModalHelper, _HttpClient } from '@delon/theme';
|
||||||
|
import { SupplyManagementService } from '../../services/supply-management.service';
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
selector: 'app-supply-management-add-drivers',
|
||||||
|
templateUrl: './add-drivers.component.html',
|
||||||
|
})
|
||||||
|
export class SupplyManagementAddDriversComponent implements OnInit {
|
||||||
|
url = `/user?_allow_anonymous=true`;
|
||||||
|
i: any;
|
||||||
|
searchSchema: SFSchema = {
|
||||||
|
properties: {
|
||||||
|
no: {
|
||||||
|
type: 'string',
|
||||||
|
title: '编号'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
@ViewChild('st') private readonly st!: STComponent;
|
||||||
|
@ViewChild('selectedST') private readonly selectedST!: STComponent;
|
||||||
|
ui: SFUISchema = {
|
||||||
|
|
||||||
|
}
|
||||||
|
columns: STColumn[] = [];
|
||||||
|
selectedColumn: STColumn[] = [];
|
||||||
|
isVisible = false;
|
||||||
|
addCarSchema: SFUISchema = {
|
||||||
|
properties: {
|
||||||
|
mobile: {
|
||||||
|
type: 'string',
|
||||||
|
title: '司机手机号',
|
||||||
|
ui: {
|
||||||
|
placeholder: '请输入'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
constructor(public service: SupplyManagementService, private modal: ModalHelper) { }
|
||||||
|
|
||||||
|
ngOnInit(): void {
|
||||||
|
this.initSF();
|
||||||
|
this.initST();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 初始化查询表单
|
||||||
|
*/
|
||||||
|
initSF() {
|
||||||
|
this.searchSchema = {
|
||||||
|
properties: {
|
||||||
|
mobile: {
|
||||||
|
type: 'string',
|
||||||
|
title: '',
|
||||||
|
ui: {
|
||||||
|
placeholder: '请输入司机姓名/手机号'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
no: {
|
||||||
|
type: 'string',
|
||||||
|
title: '',
|
||||||
|
ui: {
|
||||||
|
placeholder: '请输入车牌号'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
type: 'object',
|
||||||
|
};
|
||||||
|
this.ui = { '*': { spanLabelFixed: 80, grid: { span: 8, gutter: 4 } } };
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 初始化数据列表
|
||||||
|
*/
|
||||||
|
initST() {
|
||||||
|
this.columns = [
|
||||||
|
{
|
||||||
|
title: '司机姓名',
|
||||||
|
width: '100px',
|
||||||
|
className: 'text-center',
|
||||||
|
render: 'goodsId'
|
||||||
|
},
|
||||||
|
{ title: '手机号', render: 'externalSn', width: '120px', className: 'text-center' },
|
||||||
|
{ title: '货源类型', index: 'linkUrl', width: '120px', className: 'text-center' },
|
||||||
|
{
|
||||||
|
title: '车牌号',
|
||||||
|
className: 'text-center',
|
||||||
|
width: '120px',
|
||||||
|
}, {
|
||||||
|
title: '状态',
|
||||||
|
className: 'text-center',
|
||||||
|
width: '120px',
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
title: '操作',
|
||||||
|
fixed: 'right',
|
||||||
|
width: '200px',
|
||||||
|
className: 'text-center',
|
||||||
|
buttons: [
|
||||||
|
{
|
||||||
|
text: '选择',
|
||||||
|
iif: (item: STData, btn: STColumnButton, column: STColumn) => item?.status > 0,
|
||||||
|
iifBehavior: 'disabled'
|
||||||
|
// click: (_record) => this.editOne(_record),
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
];
|
||||||
|
this.selectedColumn = [
|
||||||
|
{
|
||||||
|
title: '司机姓名',
|
||||||
|
width: '100px',
|
||||||
|
className: 'text-center',
|
||||||
|
render: 'goodsId'
|
||||||
|
},
|
||||||
|
{ title: '手机号', render: 'externalSn', width: '120px', className: 'text-center' },
|
||||||
|
{ title: '车牌号', index: 'linkUrl', width: '120px', className: 'text-center' },
|
||||||
|
{
|
||||||
|
title: '操作',
|
||||||
|
fixed: 'right',
|
||||||
|
width: '200px',
|
||||||
|
className: 'text-center',
|
||||||
|
buttons: [
|
||||||
|
{
|
||||||
|
text: '移除',
|
||||||
|
// click: (_record) => this.editOne(_record),
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 添加熟车
|
||||||
|
*/
|
||||||
|
add(): void {
|
||||||
|
this.isVisible = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
handleCancel() {
|
||||||
|
this.isVisible = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
handleOk() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,7 @@
|
|||||||
|
<div>
|
||||||
|
<sf #sf [schema]="schema" [ui]="ui" [compact]="true" [button]="'none'"></sf>
|
||||||
|
<div>
|
||||||
|
<st #st [data]="service.$api_get_catalogue_member" [columns]="columns">
|
||||||
|
</st>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
@ -0,0 +1,24 @@
|
|||||||
|
import { waitForAsync, ComponentFixture, TestBed } from '@angular/core/testing';
|
||||||
|
import { SupplyManagementAssignedCarComponent } from './assigned-car.component';
|
||||||
|
|
||||||
|
describe('SupplyManagementAssignedCarComponent', () => {
|
||||||
|
let component: SupplyManagementAssignedCarComponent;
|
||||||
|
let fixture: ComponentFixture<SupplyManagementAssignedCarComponent>;
|
||||||
|
|
||||||
|
beforeEach(waitForAsync(() => {
|
||||||
|
TestBed.configureTestingModule({
|
||||||
|
declarations: [ SupplyManagementAssignedCarComponent ]
|
||||||
|
})
|
||||||
|
.compileComponents();
|
||||||
|
}));
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
fixture = TestBed.createComponent(SupplyManagementAssignedCarComponent);
|
||||||
|
component = fixture.componentInstance;
|
||||||
|
fixture.detectChanges();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should create', () => {
|
||||||
|
expect(component).toBeTruthy();
|
||||||
|
});
|
||||||
|
});
|
||||||
@ -0,0 +1,81 @@
|
|||||||
|
import { Component, OnInit } from '@angular/core';
|
||||||
|
import { STColumn } from '@delon/abc/st';
|
||||||
|
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';
|
||||||
|
import { SupplyManagementService } from '../../services/supply-management.service';
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
selector: 'app-supply-management-assigned-car',
|
||||||
|
templateUrl: './assigned-car.component.html',
|
||||||
|
})
|
||||||
|
export class SupplyManagementAssignedCarComponent implements OnInit {
|
||||||
|
record: any = {};
|
||||||
|
i: any;
|
||||||
|
schema: SFSchema = {};
|
||||||
|
ui: SFUISchema = {};
|
||||||
|
columns: STColumn[] = [];
|
||||||
|
constructor(
|
||||||
|
private modal: NzModalRef,
|
||||||
|
private msgSrv: NzMessageService,
|
||||||
|
public service: SupplyManagementService
|
||||||
|
) {
|
||||||
|
this.initSF();
|
||||||
|
this.initSt();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 初始化查询表单
|
||||||
|
*/
|
||||||
|
initSF() {
|
||||||
|
this.schema = {
|
||||||
|
properties: {
|
||||||
|
_$expand: { type: 'boolean', ui: { hidden: true } },
|
||||||
|
no: {
|
||||||
|
type: 'string',
|
||||||
|
title: '',
|
||||||
|
ui: {
|
||||||
|
placholder: '请输入司机姓名/手机号'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
no2: {
|
||||||
|
type: 'string',
|
||||||
|
title: '',
|
||||||
|
ui: {
|
||||||
|
placholder: '请输入车牌号'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
type: 'object',
|
||||||
|
};
|
||||||
|
this.ui = { '*': { spanLabelFixed: 80, grid: { span: 12, gutter: 4 } } };
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 初始化数据列表
|
||||||
|
*/
|
||||||
|
initSt() {
|
||||||
|
this.columns = [
|
||||||
|
{ width: 50, type: 'checkbox', className: 'text-center' },
|
||||||
|
{ title: '司机姓名', width: 80, index: 'owner', className: 'text-center' },
|
||||||
|
{ title: '手机号', index: 'goodsQuantity', width: 100, className: 'text-center' },
|
||||||
|
{ title: '车牌号', width: 100, index: 'carNo', className: 'text-center' },
|
||||||
|
{ title: '状态', index: 'status', width: 100, className: 'text-center' },
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
ngOnInit(): void {
|
||||||
|
}
|
||||||
|
|
||||||
|
save(value: any): void {
|
||||||
|
this.service.request(`/user/${this.record.id}`, value).subscribe(res => {
|
||||||
|
this.msgSrv.success('保存成功');
|
||||||
|
this.modal.close(true);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
close(): void {
|
||||||
|
this.modal.destroy();
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,101 @@
|
|||||||
|
<page-header-wrapper [title]="''" [logo]="logo">
|
||||||
|
<ng-template #logo>
|
||||||
|
<button nz-button nz-tooltip nzTooltipTitle="返回上一页" (click)="goBack()">
|
||||||
|
<i nz-icon nzType="left" nzTheme="outline"></i>
|
||||||
|
</button>
|
||||||
|
</ng-template>
|
||||||
|
</page-header-wrapper>
|
||||||
|
<nz-card>
|
||||||
|
<nz-spin *ngIf="!i" class="modal-spin"></nz-spin>
|
||||||
|
<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">待接单</sv-title>
|
||||||
|
<sv-title>
|
||||||
|
<div class="">
|
||||||
|
<a class="btn-size">修改单价</a>
|
||||||
|
<a class="btn-size m-lg mr-lg">取消货源</a>
|
||||||
|
<a class="btn-size">再下一单</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?.owner }}</sv>
|
||||||
|
<sv label="截止时间">32943898021309809423</sv>
|
||||||
|
<sv label="服务类型">3321944288191034921</sv>
|
||||||
|
<sv label="录单员">18112345678</sv>
|
||||||
|
<sv label="调度员">曲丽丽 18100000000 </sv>
|
||||||
|
<sv label="承诺付款时间">曲丽丽 18100000000 </sv>
|
||||||
|
</div>
|
||||||
|
<nz-divider></nz-divider>
|
||||||
|
<div nz-row>
|
||||||
|
<div nz-col nzSpan="6">
|
||||||
|
<div class="source-info">
|
||||||
|
<h3>装卸货信息</h3>
|
||||||
|
<p>装货地:广东省深圳市龙岗区怡亚通大厦</p>
|
||||||
|
<p>联系人:奥利给/13680058545</p>
|
||||||
|
<p>卸货地:广东省深圳市福田区岗厦村9巷8号405(新村)</p>
|
||||||
|
<p>联系人:花花世界/13680058545</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div nz-col nzSpan="6">
|
||||||
|
<div class="source-info bdr bdl pl-md">
|
||||||
|
<h3>货物信息</h3>
|
||||||
|
<p>货物名称:广东省深圳市龙岗区怡亚通大厦</p>
|
||||||
|
<p>运费单价:奥利给/13680058545</p>
|
||||||
|
<p>重量/体积:广东省深圳市福田区岗厦村9巷8号405(新村)</p>
|
||||||
|
<p>剩余:花花世界/13680058545</p>
|
||||||
|
<p>车型/车长:花花世界/13680058545</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div nz-col nzSpan="6">
|
||||||
|
<div class="source-info bdr pl-md">
|
||||||
|
<h3>关联运单</h3>
|
||||||
|
<p>待发车(<span [ngClass]="{ 'text-primary': i?.id > 0 }">{{ i?.id }}</span>)</p>
|
||||||
|
<p>运输中(<span [ngClass]="{ 'text-primary': i?.id > 0 }">{{ i?.id }}</span>)</p>
|
||||||
|
<p>待签收(<span [ngClass]="{ 'text-primary': i?.id > 0 }">{{ i?.id }}</span>)</p>
|
||||||
|
<p>已完成(<span [ngClass]="{ 'text-primary': i?.id > 0 }">{{ i?.id }}</span>)</p>
|
||||||
|
<p>已取消 (<span [ngClass]="{ 'text-primary': i?.id > 0 }">{{ i?.id }}</span>)</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="source-info pl-md">
|
||||||
|
<h3>补充信息</h3>
|
||||||
|
<p>结算重量:广东省深圳市龙岗区怡亚通大厦</p>
|
||||||
|
<p>备注:奥利给/13680058545</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<nz-divider></nz-divider>
|
||||||
|
<div nz-row>
|
||||||
|
<nz-card [nzTitle]="cardTitleTemplate" style="width: 100%;" [nzExtra]="extraTemplate">
|
||||||
|
<st #st1 [data]="i?.auditRecordList" [columns]="driverColums" [ps]="0" [page]="{ show: false, showSize: false }">
|
||||||
|
</st>
|
||||||
|
</nz-card>
|
||||||
|
</div>
|
||||||
|
<div nz-row>
|
||||||
|
<nz-card nzTitle="操作日志" style="width: 100%;">
|
||||||
|
<st #st [data]="i?.auditRecordList" [columns]="logColumns" [ps]="0" [page]="{ show: false, showSize: false }">
|
||||||
|
</st>
|
||||||
|
</nz-card>
|
||||||
|
</div>
|
||||||
|
</nz-card>
|
||||||
|
<ng-template #cardTitleTemplate>
|
||||||
|
<h4>指派熟车
|
||||||
|
<span class="text-sm">已选择
|
||||||
|
<a class="text-warning-light"> 10</a>
|
||||||
|
位司机
|
||||||
|
</span>
|
||||||
|
</h4>
|
||||||
|
</ng-template>
|
||||||
|
<ng-template #extraTemplate>
|
||||||
|
<button nzType="primary" (click)="assignedCar()" nz-button>指派熟车</button>
|
||||||
|
</ng-template>
|
||||||
@ -0,0 +1,29 @@
|
|||||||
|
:host{
|
||||||
|
.btn-size{
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
.bdr{
|
||||||
|
border-right: 1px solid #ccc;
|
||||||
|
}
|
||||||
|
.bdl{
|
||||||
|
border-left: 1px solid #ccc;
|
||||||
|
}
|
||||||
|
.title{
|
||||||
|
font-size: 26;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
.source-info{
|
||||||
|
p{
|
||||||
|
margin-bottom: .5em;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
::ng-deep{
|
||||||
|
.approval-status{
|
||||||
|
.ant-steps{
|
||||||
|
width: 70%;
|
||||||
|
margin: 0 auto;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,24 @@
|
|||||||
|
import { waitForAsync, ComponentFixture, TestBed } from '@angular/core/testing';
|
||||||
|
import { SupplyManagementBulkDetailComponent } from './bulk-detail.component';
|
||||||
|
|
||||||
|
describe('SupplyManagementBulkDetailComponent', () => {
|
||||||
|
let component: SupplyManagementBulkDetailComponent;
|
||||||
|
let fixture: ComponentFixture<SupplyManagementBulkDetailComponent>;
|
||||||
|
|
||||||
|
beforeEach(waitForAsync(() => {
|
||||||
|
TestBed.configureTestingModule({
|
||||||
|
declarations: [ SupplyManagementBulkDetailComponent ]
|
||||||
|
})
|
||||||
|
.compileComponents();
|
||||||
|
}));
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
fixture = TestBed.createComponent(SupplyManagementBulkDetailComponent);
|
||||||
|
component = fixture.componentInstance;
|
||||||
|
fixture.detectChanges();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should create', () => {
|
||||||
|
expect(component).toBeTruthy();
|
||||||
|
});
|
||||||
|
});
|
||||||
@ -0,0 +1,98 @@
|
|||||||
|
import { Component, OnInit } from '@angular/core';
|
||||||
|
import { ActivatedRoute } from '@angular/router';
|
||||||
|
import { STColumn } from '@delon/abc/st';
|
||||||
|
import { _HttpClient } from '@delon/theme';
|
||||||
|
import { NzMessageService } from 'ng-zorro-antd/message';
|
||||||
|
import { NzModalService } from 'ng-zorro-antd/modal';
|
||||||
|
import { SupplyManagementAddDriversComponent } from '../add-drivers/add-drivers.component';
|
||||||
|
import { SupplyManagementService } from '../../services/supply-management.service';
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
selector: 'app-supply-management-bulk-detail',
|
||||||
|
templateUrl: './bulk-detail.component.html',
|
||||||
|
styleUrls: ['./bulk-detail.component.less']
|
||||||
|
})
|
||||||
|
export class SupplyManagementBulkDetailComponent implements OnInit {
|
||||||
|
|
||||||
|
id = this.route.snapshot.params.id;
|
||||||
|
i: any;
|
||||||
|
logColumns: STColumn[] = [
|
||||||
|
{ title: '内容', index: 'theme' },
|
||||||
|
{ title: '操作人', index: 'operationUserPhone' },
|
||||||
|
{ title: '操作时间', index: ' createTime' },
|
||||||
|
];
|
||||||
|
driverColums: STColumn[] = [
|
||||||
|
{ title: '司机姓名', index: 'theme' },
|
||||||
|
{ title: '手机号', index: 'operationUserPhone' },
|
||||||
|
{ title: '车牌号', index: ' createTime' },
|
||||||
|
{ title: '承运次数', index: 'operationUserPhone' },
|
||||||
|
{ title: '承运数量', index: ' createTime' },
|
||||||
|
{
|
||||||
|
title: '操作',
|
||||||
|
fixed: 'right',
|
||||||
|
width: '200px',
|
||||||
|
className: 'text-center',
|
||||||
|
buttons: [
|
||||||
|
{
|
||||||
|
text: '移除',
|
||||||
|
click: (_record) => this.delDiver(_record),
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
];
|
||||||
|
constructor(
|
||||||
|
private route: ActivatedRoute,
|
||||||
|
private msgSrv: NzMessageService,
|
||||||
|
private service: SupplyManagementService,
|
||||||
|
private modal: NzModalService
|
||||||
|
) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
ngOnInit(): void {
|
||||||
|
this.service.http.get(`/user/${this.id}?_allow_anonymous=true&_allow_badcode=true`).subscribe(res => {
|
||||||
|
console.log(res);
|
||||||
|
this.i = res
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 移除司机
|
||||||
|
*/
|
||||||
|
delDiver(item: any) {
|
||||||
|
const { id } = item;
|
||||||
|
this.modal.confirm({
|
||||||
|
nzTitle: '<i>删除确认</i>',
|
||||||
|
nzContent: `请仔细核对,避免误操作!<br>是否删除?</br>`,
|
||||||
|
nzOnOk: () => {
|
||||||
|
this.service.http.post(this.service.$api_del_driver, { id }).subscribe((res) => {
|
||||||
|
if (res) {
|
||||||
|
this.service.msgSrv.success('数据删除成功!');
|
||||||
|
// this.st1.reload();
|
||||||
|
} else {
|
||||||
|
this.service.msgSrv.error('删除失败!');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 指派熟车
|
||||||
|
*/
|
||||||
|
assignedCar() {
|
||||||
|
const modalRef = this.modal.create({
|
||||||
|
nzTitle: '指派熟车',
|
||||||
|
nzWidth: '90%',
|
||||||
|
nzContent: SupplyManagementAddDriversComponent,
|
||||||
|
nzComponentParams: {
|
||||||
|
i: this.i,
|
||||||
|
},
|
||||||
|
nzFooter: null,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
goBack() {
|
||||||
|
window.history.go(-1);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,111 @@
|
|||||||
|
<!--
|
||||||
|
* @Author: your name
|
||||||
|
* @Date: 2021-12-03 11:10:14
|
||||||
|
* @LastEditTime: 2021-12-03 14:52: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\supply-management\components\bulk\bulk.component.html
|
||||||
|
-->
|
||||||
|
<nz-card>
|
||||||
|
<!-- 搜索表单 -->
|
||||||
|
<div nz-row nzGutter="8">
|
||||||
|
<!-- 查询字段小于或等于3个时,不显示伸缩按钮 -->
|
||||||
|
<div nz-col nzSpan="24" *ngIf="queryFieldCount <= 4">
|
||||||
|
<sf #sf [schema]="schema" [ui]="ui" [mode]="'search'" [disabled]="!sf?.valid" [loading]="service.http.loading"
|
||||||
|
(formSubmit)="st?.load(1)" (formReset)="resetSF()"></sf>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- 查询字段大于3个时,根据展开状态调整布局 -->
|
||||||
|
<ng-container *ngIf="queryFieldCount > 4">
|
||||||
|
<div nz-col [nzSpan]="_$expand ? 24 : 18">
|
||||||
|
<sf #sf [schema]="schema" [ui]="ui" [compact]="true" [button]="'none'"></sf>
|
||||||
|
</div>
|
||||||
|
<div nz-col [nzSpan]="_$expand ? 24 : 6" [class.text-right]="_$expand">
|
||||||
|
<button nz-button nzType="primary" [disabled]="!sf.valid" [nzLoading]="service.http.loading"
|
||||||
|
(click)="st?.load(1)">查询</button>
|
||||||
|
<button nz-button nzType="primary"
|
||||||
|
>导入</button>
|
||||||
|
<button nz-button (click)="resetSF()">重置</button>
|
||||||
|
<button nz-button nzType="link" (click)="expandToggle()">
|
||||||
|
{{ !_$expand ? '展开' : '收起' }}
|
||||||
|
<i nz-icon [nzType]="!_$expand ? 'down' : 'up'"></i>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</ng-container>
|
||||||
|
</div>
|
||||||
|
</nz-card>
|
||||||
|
<nz-card>
|
||||||
|
<nz-tabset (nzSelectedIndexChange)="selectChange($event)" [nzTabBarExtraContent]="extraTemplate">
|
||||||
|
<nz-tab *ngFor="let tab of tabs; let i = index" [nzTitle]="tab.name + ' (' + tab.count + ') '" (nzClick)="tabChange(i)">
|
||||||
|
</nz-tab>
|
||||||
|
</nz-tabset>
|
||||||
|
<div style="position: relative">
|
||||||
|
<nz-alert
|
||||||
|
nzType="info"
|
||||||
|
[nzMessage]="'当前共' + st?.total + '行记录,已选择' + selectedRows.length + '项'"
|
||||||
|
nzShowIcon
|
||||||
|
[ngStyle]="{ margin: '0 0 1rem 0' }"
|
||||||
|
>
|
||||||
|
</nz-alert>
|
||||||
|
</div>
|
||||||
|
<div style="margin-top: 15px;">
|
||||||
|
<st #st [data]="url" [columns]="columns">
|
||||||
|
<ng-template st-row="goodsId" let-item let-index="index">
|
||||||
|
<a [routerLink]="'/supply-management/bulk-detail/'+item.id">{{item.no}}</a>
|
||||||
|
</ng-template>
|
||||||
|
<ng-template st-row="orderSn" let-item let-index="index">
|
||||||
|
<div>待发车 (<span [ngStyle]="{ color:index>0?'#1890FF':''}">0</span>)</div>
|
||||||
|
<div>运输中 (<span [ngStyle]="{ color:index>0?'#1890FF':''}">0</span>)</div>
|
||||||
|
<div>待签收 (<span [ngStyle]="{ color:index>0?'#1890FF':''}">0</span>)</div>
|
||||||
|
<div>已完成 (<span [ngStyle]="{ color:index>0?'#1890FF':''}">0</span>)</div>
|
||||||
|
<div>已取消 (<span [ngStyle]="{ color:index>0?'#1890FF':''}">0</span>)</div>
|
||||||
|
</ng-template>
|
||||||
|
<ng-template st-row="goodsInfo" let-item let-index="index">
|
||||||
|
<div>{{item.owner}}</div>
|
||||||
|
<div>货源:{{item.progress}} 顿 / {{item.progress}} 方</div>
|
||||||
|
<div class="error">剩余: {{item.progress}} 顿 / {{item.progress}} 方</div>
|
||||||
|
</ng-template>
|
||||||
|
<ng-template st-row="demand" let-item let-index="index">
|
||||||
|
<div>车型: {{item.progress}}</div>
|
||||||
|
<div class="error">车长: {{item.progress}} 米</div>
|
||||||
|
</ng-template>
|
||||||
|
<ng-template st-row="price" let-item let-index="index">
|
||||||
|
<div>{{item.progress}} 元/顿</div>
|
||||||
|
</ng-template>
|
||||||
|
<ng-template st-row="cMember" let-item let-index="index">
|
||||||
|
<div>{{item.owner}}</div>
|
||||||
|
<div>{{item.mobile}}</div>
|
||||||
|
</ng-template>
|
||||||
|
<ng-template st-row="dispatcher" let-item let-index="index">
|
||||||
|
<div>{{item.owner}}</div>
|
||||||
|
<div>{{item.mobile}}</div>
|
||||||
|
</ng-template>
|
||||||
|
</st>
|
||||||
|
</div>
|
||||||
|
</nz-card>
|
||||||
|
<nz-modal [(nzVisible)]="isVisible" [nzFooter]="nzModalFooter" nzTitle="货源审核" (nzOnOk)="handleOK()" (nzOnCancel)="handleCancel('suppliersType')">
|
||||||
|
<ng-container *nzModalContent>
|
||||||
|
<div style="position: relative" *ngIf="auditMany">
|
||||||
|
<nz-alert
|
||||||
|
nzType="info"
|
||||||
|
[nzMessage]="'已选择' + 6 + '项'"
|
||||||
|
nzShowIcon
|
||||||
|
[ngStyle]="{ margin: '0 0 1rem 0' }"
|
||||||
|
>
|
||||||
|
</nz-alert>
|
||||||
|
</div>
|
||||||
|
<sf #sfFre [schema]="freightSchema" [ui]="ui2" [compact]="false" [button]="'none'">
|
||||||
|
</sf>
|
||||||
|
</ng-container>
|
||||||
|
<ng-template #nzModalFooter>
|
||||||
|
<button nz-button nzType="primary" (click)="handleOK()" [disabled]="">通过</button>
|
||||||
|
<button nz-button nzType="default" (click)="handleCancel('suppliersType')">不通过</button>
|
||||||
|
</ng-template>
|
||||||
|
</nz-modal>
|
||||||
|
<ng-template #extraTemplate>
|
||||||
|
<div>
|
||||||
|
<button (click)="audit('',2)" nz-button nzType="primary">批量审核</button>
|
||||||
|
<button (click)="audit('')" nz-button nzType="primary">发布货源</button>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</ng-template>
|
||||||
@ -0,0 +1,24 @@
|
|||||||
|
import { waitForAsync, ComponentFixture, TestBed } from '@angular/core/testing';
|
||||||
|
import { SupplyManagementBulkComponent } from './bulk.component';
|
||||||
|
|
||||||
|
describe('SupplyManagementBulkComponent', () => {
|
||||||
|
let component: SupplyManagementBulkComponent;
|
||||||
|
let fixture: ComponentFixture<SupplyManagementBulkComponent>;
|
||||||
|
|
||||||
|
beforeEach(waitForAsync(() => {
|
||||||
|
TestBed.configureTestingModule({
|
||||||
|
declarations: [ SupplyManagementBulkComponent ]
|
||||||
|
})
|
||||||
|
.compileComponents();
|
||||||
|
}));
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
fixture = TestBed.createComponent(SupplyManagementBulkComponent);
|
||||||
|
component = fixture.componentInstance;
|
||||||
|
fixture.detectChanges();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should create', () => {
|
||||||
|
expect(component).toBeTruthy();
|
||||||
|
});
|
||||||
|
});
|
||||||
@ -0,0 +1,338 @@
|
|||||||
|
import { Component, OnInit, ViewChild } from '@angular/core';
|
||||||
|
import { STColumn, STComponent } from '@delon/abc/st';
|
||||||
|
import { SFComponent, SFSchema, SFSelectWidgetSchema, SFUISchema } from '@delon/form';
|
||||||
|
import { ModalHelper, _HttpClient } from '@delon/theme';
|
||||||
|
import { NzModalService } from 'ng-zorro-antd/modal';
|
||||||
|
import { map } from 'rxjs/operators';
|
||||||
|
import { SupplyManagementService } from '../../services/supply-management.service';
|
||||||
|
import { SupplyManagementQrcodePageComponent } from '../qrcode-page/qrcode-page.component';
|
||||||
|
import { SupplyManagementUpdatePriceComponent } from '../update-price/update-price.component';
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
selector: 'app-supply-management-bulk',
|
||||||
|
templateUrl: './bulk.component.html',
|
||||||
|
})
|
||||||
|
export class SupplyManagementBulkComponent implements OnInit {
|
||||||
|
url = `/user?_allow_anonymous=true`;
|
||||||
|
ui: SFUISchema = {};
|
||||||
|
ui2: SFUISchema = {};
|
||||||
|
schema: SFSchema = {};
|
||||||
|
auditMany = false;
|
||||||
|
isVisible = false;
|
||||||
|
_$expand = false;
|
||||||
|
columns: STColumn[] = [];
|
||||||
|
freightSchema: SFSchema = {};
|
||||||
|
@ViewChild('st') private readonly st!: STComponent;
|
||||||
|
@ViewChild('sf', { static: false }) sf!: SFComponent;
|
||||||
|
@ViewChild('sfFre', { static: false }) sfFre!: SFComponent;
|
||||||
|
tabs = [ {
|
||||||
|
name: '全部',
|
||||||
|
type: 5,
|
||||||
|
count: 0,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: '待接单',
|
||||||
|
type: 5,
|
||||||
|
count: 0,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: '已接单',
|
||||||
|
type: 5,
|
||||||
|
count: 0,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: '已取消',
|
||||||
|
type: 5,
|
||||||
|
count: 0,
|
||||||
|
},
|
||||||
|
];
|
||||||
|
constructor(public service: SupplyManagementService, private modal: NzModalService) { }
|
||||||
|
|
||||||
|
ngOnInit(): void {
|
||||||
|
this.initSF();
|
||||||
|
this.initST();
|
||||||
|
this.initSFFre();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 初始化查询表单
|
||||||
|
*/
|
||||||
|
initSF() {
|
||||||
|
this.schema = {
|
||||||
|
properties: {
|
||||||
|
_$expand: { type: 'boolean', ui: { hidden: true } },
|
||||||
|
no: {
|
||||||
|
type: 'string',
|
||||||
|
title: '货源编号'
|
||||||
|
},
|
||||||
|
no2: {
|
||||||
|
type: 'string',
|
||||||
|
title: '装货地'
|
||||||
|
},
|
||||||
|
no1: {
|
||||||
|
type: 'string',
|
||||||
|
title: '卸货地'
|
||||||
|
},
|
||||||
|
sex: {
|
||||||
|
title: '货物类型',
|
||||||
|
type: 'string',
|
||||||
|
default: 0,
|
||||||
|
enum: [
|
||||||
|
{ label: '未知', value: 0 },
|
||||||
|
{ label: '男', value: 1 },
|
||||||
|
{ label: '女', value: 2 },
|
||||||
|
{ label: '保密', value: 3 },
|
||||||
|
],
|
||||||
|
ui: {
|
||||||
|
widget: 'select',
|
||||||
|
visibleIf: {
|
||||||
|
_$expand: (value: boolean) => value,
|
||||||
|
},
|
||||||
|
} as SFSelectWidgetSchema,
|
||||||
|
},
|
||||||
|
appId: {
|
||||||
|
type: 'string',
|
||||||
|
title: '录单员',
|
||||||
|
ui: {
|
||||||
|
widget: 'select',
|
||||||
|
placeholder: '请选择',
|
||||||
|
visibleIf: {
|
||||||
|
_$expand: (value: boolean) => value,
|
||||||
|
},
|
||||||
|
allowClear: true,
|
||||||
|
asyncData: () => this.getCatalogueMember(),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
type: 'object',
|
||||||
|
};
|
||||||
|
this.ui = { '*': { spanLabelFixed: 80, grid: { span: 8, gutter: 4 } } };
|
||||||
|
}
|
||||||
|
initSFFre() {
|
||||||
|
this.freightSchema = {
|
||||||
|
properties: {
|
||||||
|
roleDescription: {
|
||||||
|
title: '备注',
|
||||||
|
type: 'string',
|
||||||
|
maxLength: 50,
|
||||||
|
ui: {
|
||||||
|
placeholder: '请输入备注',
|
||||||
|
widget: 'textarea',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
};
|
||||||
|
this.ui2 = { '*': { spanLabelFixed: 120, grid: { span: 24 } } };
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* 初始化数据列表
|
||||||
|
*/
|
||||||
|
initST() {
|
||||||
|
this.columns = [
|
||||||
|
{ title: '', type: 'checkbox', width: '50px', className: 'text-center' },
|
||||||
|
{
|
||||||
|
title: '货源编号',
|
||||||
|
width: '100px',
|
||||||
|
className: 'text-center',
|
||||||
|
render: 'goodsId'
|
||||||
|
},
|
||||||
|
{ title: '服务类型', index: 'linkUrl', width: '120px', className: 'text-center' },
|
||||||
|
{ title: '货主', index: 'linkUrl', width: '120px', className: 'text-center' },
|
||||||
|
{ title: '项目名称', index: 'linkUrl', width: '120px', className: 'text-center' },
|
||||||
|
{ title: '关联订单', render: 'orderSn', width: '120px', className: 'text-center' },
|
||||||
|
{ title: '货物信息', render: 'goodsInfo', width: '180px', className: 'text-center' },
|
||||||
|
{
|
||||||
|
title: '装货地',
|
||||||
|
className: 'text-center',
|
||||||
|
width: '120px',
|
||||||
|
}, {
|
||||||
|
title: '卸货地',
|
||||||
|
className: 'text-center',
|
||||||
|
width: '120px',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '用车需求',
|
||||||
|
className: 'text-center',
|
||||||
|
width: '150px',
|
||||||
|
render: 'demand'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '运费单价',
|
||||||
|
className: 'text-center',
|
||||||
|
width: '150px',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '结算依据',
|
||||||
|
className: 'text-center',
|
||||||
|
width: '120px',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '货源状态',
|
||||||
|
className: 'text-center',
|
||||||
|
index: 'enStatusStr2',
|
||||||
|
type: 'badge',
|
||||||
|
badge: {
|
||||||
|
正常: { text: '正常', color: 'success' },
|
||||||
|
冻结: { text: '冻结', color: 'warning' },
|
||||||
|
废弃: { text: '废弃', color: 'default' },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '截止时间',
|
||||||
|
width: '170px',
|
||||||
|
className: 'text-center',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '发布时间',
|
||||||
|
width: '170px',
|
||||||
|
className: 'text-center',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '审核状态',
|
||||||
|
className: 'text-center',
|
||||||
|
index: 'enStatusStr3',
|
||||||
|
type: 'badge',
|
||||||
|
badge: {
|
||||||
|
正常: { text: '正常', color: 'success' },
|
||||||
|
冻结: { text: '冻结', color: 'warning' },
|
||||||
|
废弃: { text: '废弃', color: 'default' },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '操作',
|
||||||
|
fixed: 'right',
|
||||||
|
width: '200px',
|
||||||
|
className: 'text-center',
|
||||||
|
buttons: [
|
||||||
|
{
|
||||||
|
text: '货源审核',
|
||||||
|
click: (_record) => this.audit(_record, 1),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: '二维码',
|
||||||
|
click: (_record) => this.assignedQrcode(_record),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: '修改单价',
|
||||||
|
click: (_record) => this.updatePrice(_record),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: '取消货源',
|
||||||
|
// click: (_record) => this.delOne(_record),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: '再下一单',
|
||||||
|
// click: (_record) => this.editOne(_record),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: '重新指派',
|
||||||
|
// click: (_record) => this.delOne(_record),
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
];
|
||||||
|
}
|
||||||
|
add(): void {
|
||||||
|
// this.modal
|
||||||
|
// .createStatic(FormEditComponent, { i: { id: 0 } })
|
||||||
|
// .subscribe(() => this.st.reload());
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* 查询字段个数
|
||||||
|
*/
|
||||||
|
get queryFieldCount(): number {
|
||||||
|
return Object.keys(this.schema?.properties || {}).length;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* 伸缩查询条件
|
||||||
|
*/
|
||||||
|
expandToggle(): void {
|
||||||
|
this._$expand = !this._$expand;
|
||||||
|
this.sf?.setValue('/_$expand', this._$expand);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 重置表单
|
||||||
|
*/
|
||||||
|
resetSF(): void {
|
||||||
|
this.sf.reset();
|
||||||
|
this._$expand = false;
|
||||||
|
}
|
||||||
|
get selectedRows() {
|
||||||
|
return this.st?.list.filter((item) => item.checked) || [];
|
||||||
|
}
|
||||||
|
// 获取录单员
|
||||||
|
getCatalogueMember() {
|
||||||
|
const params = {
|
||||||
|
};
|
||||||
|
return this.service.request(this.service.$api_get_catalogue_member, params, 'GET').pipe(
|
||||||
|
map((res) => {
|
||||||
|
if (res) {
|
||||||
|
console.log(res)
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
selectChange(e: number) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 更新运费
|
||||||
|
*/
|
||||||
|
updatePrice(item: any) {
|
||||||
|
const modalRef = this.modal.create({
|
||||||
|
nzTitle: '修改单价',
|
||||||
|
nzWidth: '600px',
|
||||||
|
nzContent: SupplyManagementUpdatePriceComponent,
|
||||||
|
nzComponentParams: {
|
||||||
|
i: item,
|
||||||
|
},
|
||||||
|
nzFooter: null,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 二维码
|
||||||
|
*/
|
||||||
|
assignedQrcode(item: any) {
|
||||||
|
const modalRef = this.modal.create({
|
||||||
|
nzTitle: '二维码',
|
||||||
|
nzWidth: '600px',
|
||||||
|
nzContent: SupplyManagementQrcodePageComponent,
|
||||||
|
nzComponentParams: {
|
||||||
|
i: item,
|
||||||
|
},
|
||||||
|
nzFooter: null,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
tabChange(item: any) {
|
||||||
|
console.log(item)
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* 审核
|
||||||
|
*/
|
||||||
|
audit(value: any, status?: any) {
|
||||||
|
console.log(value)
|
||||||
|
console.log(status)
|
||||||
|
if(status === 2) {
|
||||||
|
this.auditMany = true;
|
||||||
|
} else {
|
||||||
|
this.auditMany = false;
|
||||||
|
}
|
||||||
|
this.isVisible = true;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* 审核关闭弹窗
|
||||||
|
*/
|
||||||
|
handleCancel(type: any) {
|
||||||
|
this.isVisible = false
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* 审核通过按钮
|
||||||
|
*/
|
||||||
|
handleOK() {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,25 @@
|
|||||||
|
<page-header-wrapper title="货源管理" [tab]="tpTab">
|
||||||
|
</page-header-wrapper>
|
||||||
|
|
||||||
|
<!-- <ng-template #headerTemplate>
|
||||||
|
<div>
|
||||||
|
<nz-tabset [(nzSelectedIndex)]="selectedIndex">
|
||||||
|
<nz-tab nzTitle="整车货源">
|
||||||
|
<app-supply-management-vehicle></app-supply-management-vehicle>
|
||||||
|
</nz-tab>
|
||||||
|
<nz-tab nzTitle="大宗货源">
|
||||||
|
<app-supply-management-bulk></app-supply-management-bulk>
|
||||||
|
</nz-tab>
|
||||||
|
</nz-tabset>
|
||||||
|
</div>
|
||||||
|
</ng-template> -->
|
||||||
|
<ng-template #tpTab>
|
||||||
|
<nz-tabset [(nzSelectedIndex)]="selectedIndex">
|
||||||
|
<nz-tab nzTitle="整车货源">
|
||||||
|
<app-supply-management-vehicle></app-supply-management-vehicle>
|
||||||
|
</nz-tab>
|
||||||
|
<nz-tab nzTitle="大宗货源">
|
||||||
|
<app-supply-management-bulk></app-supply-management-bulk>
|
||||||
|
</nz-tab>
|
||||||
|
</nz-tabset>
|
||||||
|
</ng-template>
|
||||||
@ -0,0 +1,24 @@
|
|||||||
|
import { waitForAsync, ComponentFixture, TestBed } from '@angular/core/testing';
|
||||||
|
import { SupplyManagementIndexComponent } from './index.component';
|
||||||
|
|
||||||
|
describe('SupplyManagementIndexComponent', () => {
|
||||||
|
let component: SupplyManagementIndexComponent;
|
||||||
|
let fixture: ComponentFixture<SupplyManagementIndexComponent>;
|
||||||
|
|
||||||
|
beforeEach(waitForAsync(() => {
|
||||||
|
TestBed.configureTestingModule({
|
||||||
|
declarations: [ SupplyManagementIndexComponent ]
|
||||||
|
})
|
||||||
|
.compileComponents();
|
||||||
|
}));
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
fixture = TestBed.createComponent(SupplyManagementIndexComponent);
|
||||||
|
component = fixture.componentInstance;
|
||||||
|
fixture.detectChanges();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should create', () => {
|
||||||
|
expect(component).toBeTruthy();
|
||||||
|
});
|
||||||
|
});
|
||||||
@ -0,0 +1,18 @@
|
|||||||
|
import { Component, OnInit, ViewChild } from '@angular/core';
|
||||||
|
import { STColumn, STComponent } from '@delon/abc/st';
|
||||||
|
import { SFSchema } from '@delon/form';
|
||||||
|
import { ModalHelper, _HttpClient } from '@delon/theme';
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
selector: 'app-supply-management-index',
|
||||||
|
templateUrl: './index.component.html',
|
||||||
|
})
|
||||||
|
export class SupplyManagementIndexComponent implements OnInit {
|
||||||
|
selectedIndex = 0;
|
||||||
|
|
||||||
|
constructor(private http: _HttpClient, private modal: ModalHelper) { }
|
||||||
|
|
||||||
|
ngOnInit(): void { }
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,14 @@
|
|||||||
|
<nz-spin *ngIf="!i" class="modal-spin"></nz-spin>
|
||||||
|
<div style="width: 60%;margin: 0 auto;">
|
||||||
|
<div class="">
|
||||||
|
<h2>公司名称:{{i.companyName}}</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>
|
||||||
|
</div>
|
||||||
@ -0,0 +1,24 @@
|
|||||||
|
import { waitForAsync, ComponentFixture, TestBed } from '@angular/core/testing';
|
||||||
|
import { SupplyManagementQrcodePageComponent } from './qrcode-page.component';
|
||||||
|
|
||||||
|
describe('SupplyManagementQrcodePageComponent', () => {
|
||||||
|
let component: SupplyManagementQrcodePageComponent;
|
||||||
|
let fixture: ComponentFixture<SupplyManagementQrcodePageComponent>;
|
||||||
|
|
||||||
|
beforeEach(waitForAsync(() => {
|
||||||
|
TestBed.configureTestingModule({
|
||||||
|
declarations: [ SupplyManagementQrcodePageComponent ]
|
||||||
|
})
|
||||||
|
.compileComponents();
|
||||||
|
}));
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
fixture = TestBed.createComponent(SupplyManagementQrcodePageComponent);
|
||||||
|
component = fixture.componentInstance;
|
||||||
|
fixture.detectChanges();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should create', () => {
|
||||||
|
expect(component).toBeTruthy();
|
||||||
|
});
|
||||||
|
});
|
||||||
@ -0,0 +1,85 @@
|
|||||||
|
import { THIS_EXPR } from '@angular/compiler/src/output/output_ast';
|
||||||
|
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';
|
||||||
|
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
selector: 'app-supply-management-qrcode-page',
|
||||||
|
templateUrl: './qrcode-page.component.html',
|
||||||
|
})
|
||||||
|
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'],
|
||||||
|
};
|
||||||
|
ui: SFUISchema = {
|
||||||
|
'*': {
|
||||||
|
spanLabelFixed: 100,
|
||||||
|
grid: { span: 12 },
|
||||||
|
},
|
||||||
|
$no: {
|
||||||
|
widget: 'text'
|
||||||
|
},
|
||||||
|
$href: {
|
||||||
|
widget: 'string',
|
||||||
|
},
|
||||||
|
$description: {
|
||||||
|
widget: 'textarea',
|
||||||
|
grid: { span: 24 },
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
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));
|
||||||
|
}
|
||||||
|
|
||||||
|
downLoadQrcode(downloadName: any): void {
|
||||||
|
let aLink = document.createElement('a');
|
||||||
|
const content = this.qr.dataURL;
|
||||||
|
let blob = this.base64ToBlob(content); //new Blob([content]);
|
||||||
|
let evt = document.createEvent("HTMLEvents");
|
||||||
|
evt.initEvent("click", true, true);//initEvent 不加后两个参数在IE下会报错 事件类型,是否冒泡,是否阻止浏览器的默认行为
|
||||||
|
aLink.download = downloadName;
|
||||||
|
aLink.href = URL.createObjectURL(blob);
|
||||||
|
// aLink.dispatchEvent(evt);
|
||||||
|
aLink.click()
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
//base64转blob
|
||||||
|
base64ToBlob(code: any) {
|
||||||
|
let parts = code.split(';base64,');
|
||||||
|
let contentType = parts[0].split(':')[1];
|
||||||
|
let raw = window.atob(parts[1]);
|
||||||
|
let rawLength = raw.length;
|
||||||
|
let uInt8Array = new Uint8Array(rawLength);
|
||||||
|
for (let i = 0; i < rawLength; ++i) {
|
||||||
|
uInt8Array[i] = raw.charCodeAt(i);
|
||||||
|
}
|
||||||
|
return new Blob([uInt8Array], { type: contentType });
|
||||||
|
}
|
||||||
|
|
||||||
|
close(): void {
|
||||||
|
this.modal.destroy();
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,10 @@
|
|||||||
|
<nz-spin *ngIf="!orderObject" class="modal-spin"></nz-spin>
|
||||||
|
<div class="mb-md">编辑外部货源号</div>
|
||||||
|
<sf *ngIf="orderObject" #sf mode="edit" layout="horizontal" [schema]="schema" [ui]="ui" [formData]="orderObject"
|
||||||
|
button="none">
|
||||||
|
<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]="service.http.loading">确定</button>
|
||||||
|
</div>
|
||||||
|
</sf>
|
||||||
@ -0,0 +1,24 @@
|
|||||||
|
import { waitForAsync, ComponentFixture, TestBed } from '@angular/core/testing';
|
||||||
|
import { SupplyManagementUpdateExternalSnComponent } from './update-external-sn.component';
|
||||||
|
|
||||||
|
describe('SupplyManagementUpdateExternalSnComponent', () => {
|
||||||
|
let component: SupplyManagementUpdateExternalSnComponent;
|
||||||
|
let fixture: ComponentFixture<SupplyManagementUpdateExternalSnComponent>;
|
||||||
|
|
||||||
|
beforeEach(waitForAsync(() => {
|
||||||
|
TestBed.configureTestingModule({
|
||||||
|
declarations: [ SupplyManagementUpdateExternalSnComponent ]
|
||||||
|
})
|
||||||
|
.compileComponents();
|
||||||
|
}));
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
fixture = TestBed.createComponent(SupplyManagementUpdateExternalSnComponent);
|
||||||
|
component = fixture.componentInstance;
|
||||||
|
fixture.detectChanges();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should create', () => {
|
||||||
|
expect(component).toBeTruthy();
|
||||||
|
});
|
||||||
|
});
|
||||||
@ -0,0 +1,55 @@
|
|||||||
|
import { Component, OnInit } from '@angular/core';
|
||||||
|
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';
|
||||||
|
import { SupplyManagementService } from '../../services/supply-management.service';
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
selector: 'app-supply-management-update-external-sn',
|
||||||
|
templateUrl: './update-external-sn.component.html',
|
||||||
|
})
|
||||||
|
export class SupplyManagementUpdateExternalSnComponent implements OnInit {
|
||||||
|
record: any = {};
|
||||||
|
orderObject: any;
|
||||||
|
schema: SFSchema = {
|
||||||
|
properties: {
|
||||||
|
owner: {
|
||||||
|
type: 'string',
|
||||||
|
maxLength: 30,
|
||||||
|
title: '',
|
||||||
|
ui: {
|
||||||
|
placeholder: '不超过30位'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
required: ['owner'],
|
||||||
|
};
|
||||||
|
ui: SFUISchema = {
|
||||||
|
'*': {
|
||||||
|
spanControl: 24
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
constructor(
|
||||||
|
private modal: NzModalRef,
|
||||||
|
private msgSrv: NzMessageService,
|
||||||
|
public service: SupplyManagementService
|
||||||
|
) { }
|
||||||
|
|
||||||
|
ngOnInit(): void {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
save(value: any): void {
|
||||||
|
const { id, sn } = value;
|
||||||
|
this.service.request(`/user/${this.record.id}`, { id, sn }).subscribe(res => {
|
||||||
|
this.msgSrv.success('保存成功');
|
||||||
|
this.modal.close(true);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
close(): void {
|
||||||
|
this.modal.destroy();
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,15 @@
|
|||||||
|
<nz-spin *ngIf="!i" class="modal-spin"></nz-spin>
|
||||||
|
<sf *ngIf="i" #sf mode="edit" [schema]="schema" [ui]="ui" [formData]="i" button="none">
|
||||||
|
<ng-template sf-template="description3" let-me let-ui="ui" let-schema="schema">
|
||||||
|
<input placeholder="请输入1-30" type="number" [ngModel]="sf.value.description3" style="width: 200px;" nz-input />
|
||||||
|
<span> 天内支付运费</span>
|
||||||
|
</ng-template>
|
||||||
|
<ng-template sf-template="description1" let-me let-ui="ui" let-schema="schema">
|
||||||
|
<div>{{sf.value.description1 | currency: 'CNY' }}(费率:<a>5.3%</a>)</div>
|
||||||
|
</ng-template>
|
||||||
|
<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>
|
||||||
|
</sf>
|
||||||
@ -0,0 +1,24 @@
|
|||||||
|
import { waitForAsync, ComponentFixture, TestBed } from '@angular/core/testing';
|
||||||
|
import { SupplyManagementUpdateFreightComponent } from './update-freight.component';
|
||||||
|
|
||||||
|
describe('SupplyManagementUpdateFreightComponent', () => {
|
||||||
|
let component: SupplyManagementUpdateFreightComponent;
|
||||||
|
let fixture: ComponentFixture<SupplyManagementUpdateFreightComponent>;
|
||||||
|
|
||||||
|
beforeEach(waitForAsync(() => {
|
||||||
|
TestBed.configureTestingModule({
|
||||||
|
declarations: [ SupplyManagementUpdateFreightComponent ]
|
||||||
|
})
|
||||||
|
.compileComponents();
|
||||||
|
}));
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
fixture = TestBed.createComponent(SupplyManagementUpdateFreightComponent);
|
||||||
|
component = fixture.componentInstance;
|
||||||
|
fixture.detectChanges();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should create', () => {
|
||||||
|
expect(component).toBeTruthy();
|
||||||
|
});
|
||||||
|
});
|
||||||
@ -0,0 +1,140 @@
|
|||||||
|
import { Component, OnInit } from '@angular/core';
|
||||||
|
import { SFCustomWidgetSchema, SFNumberWidgetSchema, SFRadioWidgetSchema, SFSchema, 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-supply-management-update-freight',
|
||||||
|
templateUrl: './update-freight.component.html',
|
||||||
|
})
|
||||||
|
export class SupplyManagementUpdateFreightComponent implements OnInit {
|
||||||
|
record: any = {};
|
||||||
|
i: any;
|
||||||
|
schema: SFSchema = {};
|
||||||
|
ui: SFUISchema = {};
|
||||||
|
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));
|
||||||
|
}
|
||||||
|
initSF() {
|
||||||
|
this.schema = {
|
||||||
|
properties: {
|
||||||
|
no1: {
|
||||||
|
type: 'string',
|
||||||
|
title: '是否回单',
|
||||||
|
enum: [
|
||||||
|
{ label: '需要', value: 0 },
|
||||||
|
{ label: '不需要', value: 1 },
|
||||||
|
],
|
||||||
|
ui: {
|
||||||
|
widget: 'radio'
|
||||||
|
} as SFRadioWidgetSchema,
|
||||||
|
default: 0
|
||||||
|
},
|
||||||
|
owner1: {
|
||||||
|
type: 'number',
|
||||||
|
title: '预付',
|
||||||
|
max: 99999999,
|
||||||
|
ui: {
|
||||||
|
prefix: '¥',
|
||||||
|
widgetWidth: 200,
|
||||||
|
precision: 2,
|
||||||
|
change: (val: any) => this.changeNumVal(val, 1)
|
||||||
|
} as SFNumberWidgetSchema
|
||||||
|
},
|
||||||
|
callNo1: {
|
||||||
|
type: 'number',
|
||||||
|
title: '到付',
|
||||||
|
ui: {
|
||||||
|
prefix: '¥',
|
||||||
|
widgetWidth: 200,
|
||||||
|
precision: 2,
|
||||||
|
change: (val: any) => this.changeNumVal(val, 2)
|
||||||
|
} as SFNumberWidgetSchema
|
||||||
|
},
|
||||||
|
href1: {
|
||||||
|
type: 'number',
|
||||||
|
title: '油卡',
|
||||||
|
ui: {
|
||||||
|
prefix: '¥',
|
||||||
|
widgetWidth: 200,
|
||||||
|
precision: 2,
|
||||||
|
change: (val: any) => this.changeNumVal(val, 3)
|
||||||
|
} as SFNumberWidgetSchema
|
||||||
|
},
|
||||||
|
description5: {
|
||||||
|
type: 'number', title: '回单付', maxLength: 140, ui: {
|
||||||
|
prefix: '¥',
|
||||||
|
widgetWidth: 200,
|
||||||
|
precision: 2,
|
||||||
|
change: (val: any) => this.changeNumVal(val, 4)
|
||||||
|
} as SFNumberWidgetSchema
|
||||||
|
},
|
||||||
|
href2: {
|
||||||
|
type: 'string',
|
||||||
|
title: '小计',
|
||||||
|
ui: {
|
||||||
|
widget: 'text'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
description1: {
|
||||||
|
type: 'string',
|
||||||
|
title: '附加费',
|
||||||
|
ui: {
|
||||||
|
widget: 'custom'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
description2: {
|
||||||
|
type: 'string',
|
||||||
|
title: '总费用',
|
||||||
|
ui: {
|
||||||
|
widget: 'text'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
description3: {
|
||||||
|
type: 'number',
|
||||||
|
title: '到货后',
|
||||||
|
maximum: 30,
|
||||||
|
minimum: 1,
|
||||||
|
ui: {
|
||||||
|
widget: 'custom',
|
||||||
|
} as SFCustomWidgetSchema
|
||||||
|
},
|
||||||
|
},
|
||||||
|
required: ['owner', 'callNo', 'href', 'description'],
|
||||||
|
};
|
||||||
|
this.ui = {
|
||||||
|
'*': {
|
||||||
|
spanLabelFixed: 100,
|
||||||
|
grid: { span: 16 },
|
||||||
|
},
|
||||||
|
};
|
||||||
|
}
|
||||||
|
save(value: any): void {
|
||||||
|
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) {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,24 @@
|
|||||||
|
<div class="mb-lg">
|
||||||
|
<nz-spin *ngIf="!i" class="modal-spin"></nz-spin>
|
||||||
|
<sf *ngIf="i" #sf mode="edit" [schema]="schema" [ui]="ui" [formData]="i" button="none">
|
||||||
|
<ng-template sf-template="description3" let-me let-ui="ui" let-schema="schema">
|
||||||
|
<input [max]="99999999" placeholder="请输入" type="number" [ngModel]="me.value" style="width: 200px;" nz-input />
|
||||||
|
<span> 元/吨</span>
|
||||||
|
</ng-template>
|
||||||
|
<div class="modal-footer text-center">
|
||||||
|
<button nz-button type="button" (click)="close()">取消</button>
|
||||||
|
<button nz-button type="submit" nzType="primary" (click)="save(sf.value)" [disabled]="!sf.valid"
|
||||||
|
[nzLoading]="service.http.loading">确定</button>
|
||||||
|
</div>
|
||||||
|
</sf>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<h4>变更日志</h4>
|
||||||
|
<st #st [data]="service.$api_get_catalogue_member" [bordered]="true" [columns]="columns" [page]="{show:false}">
|
||||||
|
<ng-template st-row="operator" let-item let-index="index">
|
||||||
|
<div>黎日湛</div>
|
||||||
|
<div>18811112222</div>
|
||||||
|
</ng-template>
|
||||||
|
</st>
|
||||||
|
</div>
|
||||||
@ -0,0 +1,24 @@
|
|||||||
|
import { waitForAsync, ComponentFixture, TestBed } from '@angular/core/testing';
|
||||||
|
import { SupplyManagementUpdatePriceComponent } from './update-price.component';
|
||||||
|
|
||||||
|
describe('SupplyManagementUpdatePriceComponent', () => {
|
||||||
|
let component: SupplyManagementUpdatePriceComponent;
|
||||||
|
let fixture: ComponentFixture<SupplyManagementUpdatePriceComponent>;
|
||||||
|
|
||||||
|
beforeEach(waitForAsync(() => {
|
||||||
|
TestBed.configureTestingModule({
|
||||||
|
declarations: [ SupplyManagementUpdatePriceComponent ]
|
||||||
|
})
|
||||||
|
.compileComponents();
|
||||||
|
}));
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
fixture = TestBed.createComponent(SupplyManagementUpdatePriceComponent);
|
||||||
|
component = fixture.componentInstance;
|
||||||
|
fixture.detectChanges();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should create', () => {
|
||||||
|
expect(component).toBeTruthy();
|
||||||
|
});
|
||||||
|
});
|
||||||
@ -0,0 +1,99 @@
|
|||||||
|
import { Component, OnInit, ViewChild } from '@angular/core';
|
||||||
|
import { STColumn } from '@delon/abc/st';
|
||||||
|
import { SFComponent, SFSchema, SFUISchema } 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 '../../services/supply-management.service';
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
selector: 'app-supply-management-update-price',
|
||||||
|
templateUrl: './update-price.component.html',
|
||||||
|
})
|
||||||
|
export class SupplyManagementUpdatePriceComponent implements OnInit {
|
||||||
|
record: any = {};
|
||||||
|
i: any;
|
||||||
|
schema: SFSchema = {};
|
||||||
|
ui: SFUISchema = {};
|
||||||
|
columns: STColumn[] = [];
|
||||||
|
@ViewChild('sf', { static: false }) sf!: SFComponent;
|
||||||
|
constructor(
|
||||||
|
private modal: NzModalRef,
|
||||||
|
private msgSrv: NzMessageService,
|
||||||
|
public service: SupplyManagementService
|
||||||
|
) { }
|
||||||
|
|
||||||
|
ngOnInit(): void {
|
||||||
|
this.initSF();
|
||||||
|
this.initSt();
|
||||||
|
if (this.record.id > 0)
|
||||||
|
this.service.request(`/user/${this.record.id}`).subscribe(res => (this.i = res));
|
||||||
|
}
|
||||||
|
|
||||||
|
initSF() {
|
||||||
|
this.schema = {
|
||||||
|
properties: {
|
||||||
|
no1: {
|
||||||
|
type: 'string',
|
||||||
|
title: '货源编号',
|
||||||
|
ui: {
|
||||||
|
widget: 'text'
|
||||||
|
},
|
||||||
|
default: 0
|
||||||
|
},
|
||||||
|
description3: {
|
||||||
|
type: 'string',
|
||||||
|
title: '运费单价',
|
||||||
|
ui: {
|
||||||
|
widget: 'custom'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
description1: {
|
||||||
|
type: 'string',
|
||||||
|
title: '取整规则',
|
||||||
|
enum: [
|
||||||
|
{ label: '保留小数', value: 0 },
|
||||||
|
{ label: '抹除小数', value: 1 },
|
||||||
|
{ label: '抹除个位', value: 2 },
|
||||||
|
],
|
||||||
|
default: 0,
|
||||||
|
ui: {
|
||||||
|
widget: 'select',
|
||||||
|
optionalHelp: {
|
||||||
|
text: '例如:付司机运费 = 重量*单价 = 999.99; 保留小数:即 999.99; 抹除小数:即 999.00; 抹除个位,即 990.00',
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
},
|
||||||
|
required: ['owner', 'callNo', 'description1', 'description3'],
|
||||||
|
};
|
||||||
|
this.ui = {
|
||||||
|
'*': {
|
||||||
|
spanLabelFixed: 100,
|
||||||
|
grid: { span: 16 },
|
||||||
|
},
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 初始化数据列表
|
||||||
|
*/
|
||||||
|
initSt() {
|
||||||
|
this.columns = [
|
||||||
|
{ title: '日志内容', width: 120, index: 'owner', className: 'text-center' },
|
||||||
|
{ title: '更新时间', index: 'goodsQuantity', width: 100, className: 'text-center' },
|
||||||
|
{ title: '操作人', width: 100, render: 'operator', className: 'text-center' },
|
||||||
|
];
|
||||||
|
}
|
||||||
|
save(value: any): void {
|
||||||
|
this.service.request(`/user/${this.record.id}`, value).subscribe(res => {
|
||||||
|
this.msgSrv.success('保存成功');
|
||||||
|
this.modal.close(true);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
close(): void {
|
||||||
|
this.modal.destroy();
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,102 @@
|
|||||||
|
<page-header-wrapper [title]="''" [logo]="logo">
|
||||||
|
<ng-template #logo>
|
||||||
|
<button nz-button nz-tooltip nzTooltipTitle="返回上一页" (click)="goBack()">
|
||||||
|
<i nz-icon nzType="left" nzTheme="outline"></i>
|
||||||
|
</button>
|
||||||
|
</ng-template>
|
||||||
|
</page-header-wrapper>
|
||||||
|
<nz-card>
|
||||||
|
<nz-spin *ngIf="!i" class="modal-spin"></nz-spin>
|
||||||
|
<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">待接单</sv-title>
|
||||||
|
<sv-title>
|
||||||
|
<div class="">
|
||||||
|
<a class="btn-size">修改单价</a>
|
||||||
|
<a class="btn-size m-lg mr-lg">取消货源</a>
|
||||||
|
<a class="btn-size">再下一单</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?.owner }}</sv>
|
||||||
|
<sv label="项目名称">32943898021309809423</sv>
|
||||||
|
<sv label="服务类型">3321944288191034921</sv>
|
||||||
|
<sv label="录单员">18112345678</sv>
|
||||||
|
<sv label="调度员">曲丽丽 18100000000 </sv>
|
||||||
|
<sv label="承诺付款时间">曲丽丽 18100000000 </sv>
|
||||||
|
</div>
|
||||||
|
<nz-divider></nz-divider>
|
||||||
|
<div nz-row>
|
||||||
|
<div nz-col nzSpan="6">
|
||||||
|
<div class="source-info">
|
||||||
|
<h3>装卸货信息</h3>
|
||||||
|
<p>装货地:广东省深圳市龙岗区怡亚通大厦</p>
|
||||||
|
<p>联系人:奥利给/13680058545</p>
|
||||||
|
<p>卸货地:广东省深圳市福田区岗厦村9巷8号405(新村)</p>
|
||||||
|
<p>联系人:花花世界/13680058545</p>
|
||||||
|
<p>发货日期:广东省深圳市福田区岗厦村9巷8号405(新村)</p>
|
||||||
|
<p>卸货日期:花花世界/13680058545</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div nz-col nzSpan="6">
|
||||||
|
<div class="source-info bdr bdl pl-md">
|
||||||
|
<h3>货物信息</h3>
|
||||||
|
<p>货物名称:广东省深圳市龙岗区怡亚通大厦</p>
|
||||||
|
<p>重量/体积:广东省深圳市福田区岗厦村9巷8号405(新村)</p>
|
||||||
|
<p>车型/车长:花花世界/13680058545</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div nz-col nzSpan="6">
|
||||||
|
<div class="source-info bdr pl-md">
|
||||||
|
<h3>承运信息</h3>
|
||||||
|
<p>司机:广东省深圳市龙岗区怡亚通大厦</p>
|
||||||
|
<p>车牌号:广东省深圳市福田区岗厦村9巷8号405(新村)</p>
|
||||||
|
<p>车型/车长/承重:{{'拖车'}} | {{'4.5米'}} | {{'15吨'}}</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="source-info pl-md">
|
||||||
|
<h3>补充信息</h3>
|
||||||
|
<p>需要回单</p>
|
||||||
|
<p>备注:奥利给/13680058545</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>{{400 | currency }}</span></p>
|
||||||
|
<p><label class="freigth-label">油卡:</label><span>{{400 | currency }}</span></p>
|
||||||
|
<p><label class="freigth-label">到付:</label><span>{{400 | currency }}</span></p>
|
||||||
|
<p><label class="freigth-label">回单付:</label><span>{{400 | currency}}</span></p>
|
||||||
|
<p><label class="freigth-label">附加费:</label><span>{{400 | currency }}</span></p>
|
||||||
|
</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">{{400 | currency }}</span></h3>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<nz-divider></nz-divider>
|
||||||
|
<div nz-row>
|
||||||
|
<nz-card nzTitle="操作日志" style="width: 100%;">
|
||||||
|
<st #st [data]="i?.auditRecordList" [columns]="logColumns" [ps]="0" [page]="{ show: false, showSize: false }">
|
||||||
|
</st>
|
||||||
|
</nz-card>
|
||||||
|
</div>
|
||||||
|
</nz-card>
|
||||||
@ -0,0 +1,37 @@
|
|||||||
|
:host{
|
||||||
|
.btn-size{
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
.bdr{
|
||||||
|
border-right: 1px solid #ccc;
|
||||||
|
}
|
||||||
|
.bdl{
|
||||||
|
border-left: 1px solid #ccc;
|
||||||
|
}
|
||||||
|
.title{
|
||||||
|
font-size: 26;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
.source-info{
|
||||||
|
p{
|
||||||
|
margin-bottom: .5em;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.freight-info-box{
|
||||||
|
width: 95%;
|
||||||
|
}
|
||||||
|
.freigth-label{
|
||||||
|
display: inline-block;
|
||||||
|
width: 50px;
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
::ng-deep{
|
||||||
|
.approval-status{
|
||||||
|
.ant-steps{
|
||||||
|
width: 70%;
|
||||||
|
margin: 0 auto;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,24 @@
|
|||||||
|
import { waitForAsync, ComponentFixture, TestBed } from '@angular/core/testing';
|
||||||
|
import { SupplyManagementVehicleDetailComponent } from './vehicle-detail.component';
|
||||||
|
|
||||||
|
describe('SupplyManagementVehicleDetailComponent', () => {
|
||||||
|
let component: SupplyManagementVehicleDetailComponent;
|
||||||
|
let fixture: ComponentFixture<SupplyManagementVehicleDetailComponent>;
|
||||||
|
|
||||||
|
beforeEach(waitForAsync(() => {
|
||||||
|
TestBed.configureTestingModule({
|
||||||
|
declarations: [ SupplyManagementVehicleDetailComponent ]
|
||||||
|
})
|
||||||
|
.compileComponents();
|
||||||
|
}));
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
fixture = TestBed.createComponent(SupplyManagementVehicleDetailComponent);
|
||||||
|
component = fixture.componentInstance;
|
||||||
|
fixture.detectChanges();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should create', () => {
|
||||||
|
expect(component).toBeTruthy();
|
||||||
|
});
|
||||||
|
});
|
||||||
@ -0,0 +1,45 @@
|
|||||||
|
import { Component, OnInit } from '@angular/core';
|
||||||
|
import { ActivatedRoute } from '@angular/router';
|
||||||
|
import { STColumn } from '@delon/abc/st';
|
||||||
|
import { _HttpClient } from '@delon/theme';
|
||||||
|
import { NzMessageService } from 'ng-zorro-antd/message';
|
||||||
|
import { SupplyManagementService } from '../../services/supply-management.service';
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
selector: 'app-supply-management-vehicle-detail',
|
||||||
|
templateUrl: './vehicle-detail.component.html',
|
||||||
|
styleUrls: ['./vehicle-detail.component.less']
|
||||||
|
})
|
||||||
|
export class SupplyManagementVehicleDetailComponent implements OnInit {
|
||||||
|
|
||||||
|
id = this.route.snapshot.params.id;
|
||||||
|
i: any;
|
||||||
|
logColumns: STColumn[] = [
|
||||||
|
{ title: '内容', index: 'theme' },
|
||||||
|
{ title: '操作人', index: 'operationUserPhone' },
|
||||||
|
{ title: '操作时间', index: ' createTime' },
|
||||||
|
];
|
||||||
|
|
||||||
|
constructor(
|
||||||
|
private route: ActivatedRoute,
|
||||||
|
private msgSrv: NzMessageService,
|
||||||
|
private service: SupplyManagementService,
|
||||||
|
) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
ngOnInit(): void {
|
||||||
|
this.service.http.get(`/user/${this.id}?_allow_anonymous=true&_allow_badcode=true`).subscribe(res => {
|
||||||
|
console.log(res);
|
||||||
|
this.i = res
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
goBack() {
|
||||||
|
window.history.go(-1);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,108 @@
|
|||||||
|
<!--
|
||||||
|
* @Author: your name
|
||||||
|
* @Date: 2021-12-03 11:10:14
|
||||||
|
* @LastEditTime: 2021-12-03 14:51:38
|
||||||
|
* @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
|
||||||
|
-->
|
||||||
|
<!-- 搜索表单 -->
|
||||||
|
<nz-card>
|
||||||
|
<div nz-row nzGutter="8">
|
||||||
|
<!-- 查询字段小于或等于3个时,不显示伸缩按钮 -->
|
||||||
|
<div nz-col nzSpan="24" *ngIf="queryFieldCount <= 4">
|
||||||
|
<sf #sf [schema]="schema" [ui]="ui" [mode]="'search'" [disabled]="!sf?.valid" [loading]="service.http.loading"
|
||||||
|
(formSubmit)="st?.load(1)" (formReset)="resetSF()"></sf>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- 查询字段大于3个时,根据展开状态调整布局 -->
|
||||||
|
<ng-container *ngIf="queryFieldCount > 4">
|
||||||
|
<div nz-col [nzSpan]="_$expand ? 24 : 18">
|
||||||
|
<sf #sf [schema]="schema" [ui]="ui" [compact]="true" [button]="'none'"></sf>
|
||||||
|
</div>
|
||||||
|
<div nz-col [nzSpan]="_$expand ? 24 : 6" [class.text-right]="_$expand">
|
||||||
|
<button nz-button nzType="primary" [disabled]="!sf.valid" [nzLoading]="service.http.loading"
|
||||||
|
(click)="st?.load(1)">查询</button>
|
||||||
|
<button nz-button nzType="primary"
|
||||||
|
>导出</button>
|
||||||
|
<button nz-button (click)="resetSF()">重置</button>
|
||||||
|
<button nz-button nzType="link" (click)="expandToggle()">
|
||||||
|
{{ !_$expand ? '展开' : '收起' }}
|
||||||
|
<i nz-icon [nzType]="!_$expand ? 'down' : 'up'"></i>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</ng-container>
|
||||||
|
</div>
|
||||||
|
</nz-card>
|
||||||
|
|
||||||
|
<nz-card>
|
||||||
|
<nz-tabset (nzSelectedIndexChange)="selectChange($event)" [nzTabBarExtraContent]="extraTemplate">
|
||||||
|
<nz-tab *ngFor="let tab of tabs; let i = index" [nzTitle]="tab.name + ' (' + tab.count + ') '" (nzClick)="tabChange(i)">
|
||||||
|
</nz-tab>
|
||||||
|
</nz-tabset>
|
||||||
|
<div style="margin-top: 15px;">
|
||||||
|
<!-- [req]="{ method: 'GET', allInBody: true, reName: { pi: 'pageIndex', ps: 'pageSize' }, params: reqParams }"
|
||||||
|
[res]="{ reName: { list: 'data.records', total: 'data.total' } }"
|
||||||
|
[page]="{ show: true, showSize: true, pageSizes: [10, 20, 30, 50, 100, 200, 300, 500, 1000] }"
|
||||||
|
[loadingDelay]="500" [loading]="service.http.loading" -->
|
||||||
|
<!-- 选中提示框 -->
|
||||||
|
<div style="position: relative">
|
||||||
|
<nz-alert
|
||||||
|
nzType="info"
|
||||||
|
[nzMessage]="'当前共' + st?.total + '行记录,已选择' + selectedRows.length + '项'"
|
||||||
|
nzShowIcon
|
||||||
|
[ngStyle]="{ margin: '0 0 1rem 0' }"
|
||||||
|
>
|
||||||
|
</nz-alert>
|
||||||
|
</div>
|
||||||
|
<st #st [scroll]="{ x: '1200px' }" [data]="service.$api_get_catalogue_member" [columns]="columns">
|
||||||
|
<ng-template st-row="goodsId" let-item let-index="index">
|
||||||
|
<a [routerLink]="'/supply-management/vehicle-detail/'+item.id">{{item.no}}</a>
|
||||||
|
</ng-template>
|
||||||
|
<!-- <ng-template st-row="externalSn" let-item let-index="index">
|
||||||
|
<span class="mr-xs">{{111111}}</span>
|
||||||
|
<a (click)="editEnternalSn(item)">编辑</a>
|
||||||
|
</ng-template> -->
|
||||||
|
<ng-template st-row="enStatusStr27878" let-item let-index="index">
|
||||||
|
<div class="mr-xs" nzPopoverTitle="Title" nz-popover [nzPopoverContent]="contentTemplate">{{item.no}}</div>
|
||||||
|
</ng-template>
|
||||||
|
<ng-template #contentTemplate>
|
||||||
|
<div>
|
||||||
|
<p>预付:¥200.00</p>
|
||||||
|
<p>到付:¥200.00</p>
|
||||||
|
<p>油卡:¥200.00</p>
|
||||||
|
<p>回单付:¥200.00</p>
|
||||||
|
<p>小计:¥200.00</p>
|
||||||
|
<p>附加费:¥200.00</p>
|
||||||
|
</div>
|
||||||
|
</ng-template>
|
||||||
|
</st>
|
||||||
|
</div>
|
||||||
|
</nz-card>
|
||||||
|
<ng-template #extraTemplate>
|
||||||
|
<div>
|
||||||
|
<button (click)="audit('',2)" nz-button nzType="primary">批量审核</button>
|
||||||
|
<button (click)="importGoodsSource()" nz-button nzType="primary">发布货源</button>
|
||||||
|
<button (click)="importGoodsSource()" nz-button nzType="primary">导入货源</button>
|
||||||
|
</div>
|
||||||
|
</ng-template>
|
||||||
|
|
||||||
|
<nz-modal [(nzVisible)]="isVisible" [nzFooter]="nzModalFooter" nzTitle="货源审核" (nzOnOk)="handleOK()" (nzOnCancel)="handleCancel('suppliersType')">
|
||||||
|
<ng-container *nzModalContent>
|
||||||
|
<div style="position: relative" *ngIf="auditMany">
|
||||||
|
<nz-alert
|
||||||
|
nzType="info"
|
||||||
|
[nzMessage]="'已选择' + 6 + '项'"
|
||||||
|
nzShowIcon
|
||||||
|
[ngStyle]="{ margin: '0 0 1rem 0' }"
|
||||||
|
>
|
||||||
|
</nz-alert>
|
||||||
|
</div>
|
||||||
|
<sf #sfFre [schema]="freightSchema" [ui]="ui2" [compact]="false" [button]="'none'">
|
||||||
|
</sf>
|
||||||
|
</ng-container>
|
||||||
|
<ng-template #nzModalFooter>
|
||||||
|
<button nz-button nzType="primary" (click)="handleOK()" [disabled]="">通过</button>
|
||||||
|
<button nz-button nzType="default" (click)="handleCancel('suppliersType')">不通过</button>
|
||||||
|
</ng-template>
|
||||||
|
</nz-modal>
|
||||||
@ -0,0 +1,2 @@
|
|||||||
|
:host {
|
||||||
|
}
|
||||||
@ -0,0 +1,24 @@
|
|||||||
|
import { waitForAsync, ComponentFixture, TestBed } from '@angular/core/testing';
|
||||||
|
import { SupplyManagementVehicleComponent } from './vehicle.component';
|
||||||
|
|
||||||
|
describe('SupplyManagementVehicleComponent', () => {
|
||||||
|
let component: SupplyManagementVehicleComponent;
|
||||||
|
let fixture: ComponentFixture<SupplyManagementVehicleComponent>;
|
||||||
|
|
||||||
|
beforeEach(waitForAsync(() => {
|
||||||
|
TestBed.configureTestingModule({
|
||||||
|
declarations: [ SupplyManagementVehicleComponent ]
|
||||||
|
})
|
||||||
|
.compileComponents();
|
||||||
|
}));
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
fixture = TestBed.createComponent(SupplyManagementVehicleComponent);
|
||||||
|
component = fixture.componentInstance;
|
||||||
|
fixture.detectChanges();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should create', () => {
|
||||||
|
expect(component).toBeTruthy();
|
||||||
|
});
|
||||||
|
});
|
||||||
@ -0,0 +1,383 @@
|
|||||||
|
import { Component, OnInit, ViewChild } from '@angular/core';
|
||||||
|
import { STColumn, STComponent } from '@delon/abc/st';
|
||||||
|
import { SFComponent, SFSchema, SFSelectWidgetSchema, SFUISchema } from '@delon/form';
|
||||||
|
import { ModalHelper, _HttpClient } from '@delon/theme';
|
||||||
|
import { NzModalService } from 'ng-zorro-antd/modal';
|
||||||
|
import { map } from 'rxjs/operators';
|
||||||
|
import { SupplyManagementService } from '../../services/supply-management.service';
|
||||||
|
import { SupplyManagementAssignedCarComponent } from '../assigned-car/assigned-car.component';
|
||||||
|
import { SupplyManagementUpdateExternalSnComponent } from '../update-external-sn/update-external-sn.component';
|
||||||
|
import { SupplyManagementUpdateFreightComponent } from '../update-freight/update-freight.component';
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
selector: 'app-supply-management-vehicle',
|
||||||
|
templateUrl: './vehicle.component.html',
|
||||||
|
styleUrls: ['./vehicle.component.less']
|
||||||
|
})
|
||||||
|
export class SupplyManagementVehicleComponent implements OnInit {
|
||||||
|
url = `/user?_allow_anonymous=true`;
|
||||||
|
ui: SFUISchema = {};
|
||||||
|
ui2: SFUISchema = {};
|
||||||
|
schema: SFSchema = {};
|
||||||
|
freightSchema: SFSchema = {};
|
||||||
|
auditMany = false;
|
||||||
|
isVisible = false;
|
||||||
|
_$expand = false;
|
||||||
|
@ViewChild('st') private readonly st!: STComponent;
|
||||||
|
@ViewChild('sf', { static: false }) sf!: SFComponent;
|
||||||
|
@ViewChild('sfFre', { static: false }) sfFre!: SFComponent;
|
||||||
|
columns: STColumn[] = [];
|
||||||
|
tabs = [ {
|
||||||
|
name: '全部',
|
||||||
|
type: 5,
|
||||||
|
count: 0,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: '待接单',
|
||||||
|
type: 5,
|
||||||
|
count: 0,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: '已接单',
|
||||||
|
type: 5,
|
||||||
|
count: 0,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: '已取消',
|
||||||
|
type: 5,
|
||||||
|
count: 0,
|
||||||
|
},
|
||||||
|
];
|
||||||
|
constructor(public service: SupplyManagementService, private modal: NzModalService) { }
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询参数
|
||||||
|
*/
|
||||||
|
get reqParams() {
|
||||||
|
return {
|
||||||
|
...this.sf?.value,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
get selectedRows() {
|
||||||
|
return this.st?.list.filter((item) => item.checked) || [];
|
||||||
|
}
|
||||||
|
ngOnInit(): void {
|
||||||
|
this.initSF();
|
||||||
|
this.initST();
|
||||||
|
this.initSFFre();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 初始化查询表单
|
||||||
|
*/
|
||||||
|
initSF() {
|
||||||
|
this.schema = {
|
||||||
|
properties: {
|
||||||
|
_$expand: { type: 'boolean', ui: { hidden: true } },
|
||||||
|
no: {
|
||||||
|
type: 'string',
|
||||||
|
title: '货源编号',
|
||||||
|
},
|
||||||
|
no2: {
|
||||||
|
type: 'string',
|
||||||
|
title: '装货地'
|
||||||
|
},
|
||||||
|
no1: {
|
||||||
|
type: 'string',
|
||||||
|
title: '卸货地'
|
||||||
|
},
|
||||||
|
sex: {
|
||||||
|
title: '货物类型',
|
||||||
|
type: 'string',
|
||||||
|
default: 0,
|
||||||
|
enum: [
|
||||||
|
{ label: '未知', value: 0 },
|
||||||
|
{ label: '男', value: 1 },
|
||||||
|
{ label: '女', value: 2 },
|
||||||
|
{ label: '保密', value: 3 },
|
||||||
|
],
|
||||||
|
ui: {
|
||||||
|
widget: 'select',
|
||||||
|
visibleIf: {
|
||||||
|
_$expand: (value: boolean) => value,
|
||||||
|
},
|
||||||
|
} as SFSelectWidgetSchema,
|
||||||
|
},
|
||||||
|
appId: {
|
||||||
|
type: 'string',
|
||||||
|
title: '录单员',
|
||||||
|
ui: {
|
||||||
|
widget: 'select',
|
||||||
|
placeholder: '请选择',
|
||||||
|
visibleIf: {
|
||||||
|
_$expand: (value: boolean) => value,
|
||||||
|
},
|
||||||
|
allowClear: true,
|
||||||
|
asyncData: () => this.getCatalogueMember(),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
type: 'object',
|
||||||
|
};
|
||||||
|
this.ui = { '*': { spanLabelFixed: 80, grid: { span: 8, gutter: 4 } } };
|
||||||
|
}
|
||||||
|
initSFFre() {
|
||||||
|
this.freightSchema = {
|
||||||
|
properties: {
|
||||||
|
roleDescription: {
|
||||||
|
title: '备注',
|
||||||
|
type: 'string',
|
||||||
|
maxLength: 50,
|
||||||
|
ui: {
|
||||||
|
placeholder: '请输入备注',
|
||||||
|
widget: 'textarea',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
};
|
||||||
|
this.ui2 = { '*': { spanLabelFixed: 120, grid: { span: 24 } } };
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* 初始化数据列表
|
||||||
|
*/
|
||||||
|
initST() {
|
||||||
|
this.columns = [
|
||||||
|
{ title: '', type: 'checkbox', width: '50px', className: 'text-center' },
|
||||||
|
{
|
||||||
|
title: '货源编号',
|
||||||
|
width: '100px',
|
||||||
|
className: 'text-center',
|
||||||
|
render: 'goodsId'
|
||||||
|
},
|
||||||
|
{ title: '服务类型', index: 'externalSn', width: '120px', className: 'text-center' },
|
||||||
|
{ title: '货主', index: 'linkUrl', width: '120px', className: 'text-center' },
|
||||||
|
{
|
||||||
|
title: '项目名称',
|
||||||
|
className: 'text-center',
|
||||||
|
width: '120px',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '装货地',
|
||||||
|
className: 'text-center',
|
||||||
|
width: '120px',
|
||||||
|
}, {
|
||||||
|
title: '卸货地',
|
||||||
|
className: 'text-center',
|
||||||
|
width: '120px',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '货物名称',
|
||||||
|
className: 'text-center',
|
||||||
|
width: '120px',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '货物数量',
|
||||||
|
className: 'text-center',
|
||||||
|
width: '120px',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '用车需求',
|
||||||
|
className: 'text-center',
|
||||||
|
width: '120px',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '总费用',
|
||||||
|
className: 'text-center',
|
||||||
|
width: '120px',
|
||||||
|
index: 'goodsId',
|
||||||
|
render: 'enStatusStr27878'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '附加费',
|
||||||
|
className: 'text-center',
|
||||||
|
width: '120px',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '货源状态',
|
||||||
|
className: 'text-center',
|
||||||
|
index: 'enStatusStr2',
|
||||||
|
type: 'badge',
|
||||||
|
badge: {
|
||||||
|
正常: { text: '正常', color: 'success' },
|
||||||
|
冻结: { text: '冻结', color: 'warning' },
|
||||||
|
废弃: { text: '废弃', color: 'default' },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '创建时间',
|
||||||
|
width: '170px',
|
||||||
|
className: 'text-center',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '审核状态',
|
||||||
|
className: 'text-center',
|
||||||
|
index: 'enStatusStr3',
|
||||||
|
type: 'badge',
|
||||||
|
badge: {
|
||||||
|
正常: { text: '正常', color: 'success' },
|
||||||
|
冻结: { text: '冻结', color: 'warning' },
|
||||||
|
废弃: { text: '废弃', color: 'default' },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '操作',
|
||||||
|
fixed: 'right',
|
||||||
|
width: '200px',
|
||||||
|
className: 'text-center',
|
||||||
|
buttons: [
|
||||||
|
{
|
||||||
|
text: '货源审核',
|
||||||
|
click: (_record) => this.audit(_record, 1),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: '修改货源',
|
||||||
|
// click: (_record) => this.editOne(_record),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: '修改运费',
|
||||||
|
click: (_record) => this.updateFreight(_record),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: '取消货源',
|
||||||
|
// click: (_record) => this.delOne(_record),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: '再下一单',
|
||||||
|
// click: (_record) => this.editOne(_record),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: '重新指派',
|
||||||
|
click: (_record) => this.assignedCar(_record),
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
];
|
||||||
|
}
|
||||||
|
add(): void {
|
||||||
|
// this.modal
|
||||||
|
// .createStatic(FormEditComponent, { i: { id: 0 } })
|
||||||
|
// .subscribe(() => this.st.reload());
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* 查询字段个数
|
||||||
|
*/
|
||||||
|
get queryFieldCount(): number {
|
||||||
|
return Object.keys(this.schema?.properties || {}).length;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* 伸缩查询条件
|
||||||
|
*/
|
||||||
|
expandToggle(): void {
|
||||||
|
this._$expand = !this._$expand;
|
||||||
|
this.sf?.setValue('/_$expand', this._$expand);
|
||||||
|
}
|
||||||
|
tabChange(item: any) {
|
||||||
|
console.log(item)
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* 重置表单
|
||||||
|
*/
|
||||||
|
resetSF(): void {
|
||||||
|
this.sf.reset();
|
||||||
|
this._$expand = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// 获取录单员
|
||||||
|
getCatalogueMember() {
|
||||||
|
const params = {
|
||||||
|
};
|
||||||
|
return this.service.request(this.service.$api_get_catalogue_member, params, 'GET').pipe(
|
||||||
|
map((res) => {
|
||||||
|
if (res) {
|
||||||
|
console.log(res)
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
selectChange(e: number) {
|
||||||
|
console.log(e);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 编辑外部货源号
|
||||||
|
* @param item st当前行对象
|
||||||
|
*/
|
||||||
|
editEnternalSn(item: any) {
|
||||||
|
const modalRef = this.modal.create({
|
||||||
|
nzWidth: '400px',
|
||||||
|
nzContent: SupplyManagementUpdateExternalSnComponent,
|
||||||
|
nzComponentParams: {
|
||||||
|
orderObject: item,
|
||||||
|
},
|
||||||
|
nzFooter: null,
|
||||||
|
nzClosable: false
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 导入货源
|
||||||
|
*/
|
||||||
|
importGoodsSource() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改运费
|
||||||
|
*/
|
||||||
|
updateFreight(item: any) {
|
||||||
|
const modalRef = this.modal.create({
|
||||||
|
nzTitle: '修改运费',
|
||||||
|
nzWidth: '40%',
|
||||||
|
nzContent: SupplyManagementUpdateFreightComponent,
|
||||||
|
nzComponentParams: {
|
||||||
|
i: item,
|
||||||
|
},
|
||||||
|
nzFooter: null,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 重新指派
|
||||||
|
*/
|
||||||
|
assignedCar(item: any) {
|
||||||
|
const modalRef = this.modal.create({
|
||||||
|
nzTitle: '指派熟车',
|
||||||
|
nzWidth: '800px',
|
||||||
|
nzContent: SupplyManagementAssignedCarComponent,
|
||||||
|
nzComponentParams: {
|
||||||
|
i: item,
|
||||||
|
},
|
||||||
|
nzFooter: null,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* 审核
|
||||||
|
*/
|
||||||
|
audit(value: any, status?: any) {
|
||||||
|
console.log(value)
|
||||||
|
console.log(status)
|
||||||
|
if(status === 2) {
|
||||||
|
this.auditMany = true;
|
||||||
|
} else {
|
||||||
|
this.auditMany = false;
|
||||||
|
}
|
||||||
|
this.isVisible = true;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* 审核关闭弹窗
|
||||||
|
*/
|
||||||
|
handleCancel(type: any) {
|
||||||
|
this.isVisible = false
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* 审核通过按钮
|
||||||
|
*/
|
||||||
|
handleOK() {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,14 @@
|
|||||||
|
import { Injectable, Injector } from '@angular/core';
|
||||||
|
import { BaseService } from 'src/app/shared/services';
|
||||||
|
|
||||||
|
@Injectable({
|
||||||
|
providedIn: 'root'
|
||||||
|
})
|
||||||
|
export class SupplyManagementService extends BaseService {
|
||||||
|
|
||||||
|
$api_get_catalogue_member = `/user?_allow_anonymous=true`;
|
||||||
|
$api_del_driver = ``;
|
||||||
|
constructor(public injector: Injector) {
|
||||||
|
super(injector)
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,20 @@
|
|||||||
|
import { NgModule } from '@angular/core';
|
||||||
|
import { RouterModule, Routes } from '@angular/router';
|
||||||
|
import { SupplyManagementIndexComponent } from './components/index/index.component';
|
||||||
|
import { SupplyManagementBulkComponent } from './components/bulk/bulk.component';
|
||||||
|
import { SupplyManagementVehicleComponent } from './components/vehicle/vehicle.component';
|
||||||
|
import { SupplyManagementBulkDetailComponent } from './components/bulk-detail/bulk-detail.component';
|
||||||
|
import { SupplyManagementVehicleDetailComponent } from './components/vehicle-detail/vehicle-detail.component';
|
||||||
|
import { SupplyManagementAddDriversComponent } from './components/add-drivers/add-drivers.component';
|
||||||
|
|
||||||
|
const routes: Routes = [
|
||||||
|
{ path: 'index', component: SupplyManagementIndexComponent },
|
||||||
|
{ path: 'bulk-detail/:id', component: SupplyManagementBulkDetailComponent },
|
||||||
|
{ path: 'vehicle-detail/:id', component: SupplyManagementVehicleDetailComponent },
|
||||||
|
{ path: 'add-drivers', component: SupplyManagementAddDriversComponent }];
|
||||||
|
|
||||||
|
@NgModule({
|
||||||
|
imports: [RouterModule.forChild(routes)],
|
||||||
|
exports: [RouterModule]
|
||||||
|
})
|
||||||
|
export class SupplyManagementRoutingModule { }
|
||||||
36
src/app/routes/supply-management/supply-management.module.ts
Normal file
36
src/app/routes/supply-management/supply-management.module.ts
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
import { NgModule, Type } from '@angular/core';
|
||||||
|
import { SharedModule } from '@shared';
|
||||||
|
import { SupplyManagementRoutingModule } from './supply-management-routing.module';
|
||||||
|
import { SupplyManagementIndexComponent } from './components/index/index.component';
|
||||||
|
import { SupplyManagementBulkComponent } from './components/bulk/bulk.component';
|
||||||
|
import { SupplyManagementVehicleComponent } from './components/vehicle/vehicle.component';
|
||||||
|
import { SupplyManagementUpdatePriceComponent } from './components/update-price/update-price.component';
|
||||||
|
import { SupplyManagementUpdateFreightComponent } from './components/update-freight/update-freight.component';
|
||||||
|
import { SupplyManagementAssignedCarComponent } from './components/assigned-car/assigned-car.component';
|
||||||
|
import { SupplyManagementQrcodePageComponent } from './components/qrcode-page/qrcode-page.component';
|
||||||
|
import { SupplyManagementUpdateExternalSnComponent } from './components/update-external-sn/update-external-sn.component';
|
||||||
|
import { SupplyManagementBulkDetailComponent } from './components/bulk-detail/bulk-detail.component';
|
||||||
|
import { SupplyManagementVehicleDetailComponent } from './components/vehicle-detail/vehicle-detail.component';
|
||||||
|
import { SupplyManagementAddDriversComponent } from './components/add-drivers/add-drivers.component';
|
||||||
|
|
||||||
|
const COMPONENTS: Type<void>[] = [
|
||||||
|
SupplyManagementIndexComponent,
|
||||||
|
SupplyManagementBulkComponent,
|
||||||
|
SupplyManagementVehicleComponent,
|
||||||
|
SupplyManagementUpdatePriceComponent,
|
||||||
|
SupplyManagementUpdateFreightComponent,
|
||||||
|
SupplyManagementAssignedCarComponent,
|
||||||
|
SupplyManagementQrcodePageComponent,
|
||||||
|
SupplyManagementUpdateExternalSnComponent,
|
||||||
|
SupplyManagementBulkDetailComponent,
|
||||||
|
SupplyManagementVehicleDetailComponent,
|
||||||
|
SupplyManagementAddDriversComponent];
|
||||||
|
|
||||||
|
@NgModule({
|
||||||
|
imports: [
|
||||||
|
SharedModule,
|
||||||
|
SupplyManagementRoutingModule
|
||||||
|
],
|
||||||
|
declarations: COMPONENTS,
|
||||||
|
})
|
||||||
|
export class SupplyManagementModule { }
|
||||||
@ -7,7 +7,7 @@ import { NzToolTipModule } from 'ng-zorro-antd/tooltip';
|
|||||||
/*
|
/*
|
||||||
* @Author: your name
|
* @Author: your name
|
||||||
* @Date: 2021-11-29 10:20:33
|
* @Date: 2021-11-29 10:20:33
|
||||||
* @LastEditTime: 2021-12-01 16:50:17
|
* @LastEditTime: 2021-12-03 15:23:42
|
||||||
* @LastEditors: Please set LastEditors
|
* @LastEditors: Please set LastEditors
|
||||||
* @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
|
* @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
|
||||||
* @FilePath: \tms-obc-web\src\app\shared\shared-zorro.module.ts
|
* @FilePath: \tms-obc-web\src\app\shared\shared-zorro.module.ts
|
||||||
@ -36,6 +36,7 @@ import { NzTabsModule } from 'ng-zorro-antd/tabs';
|
|||||||
import { NzRadioModule } from 'ng-zorro-antd/radio';
|
import { NzRadioModule } from 'ng-zorro-antd/radio';
|
||||||
import { NzTimePickerModule } from 'ng-zorro-antd/time-picker';
|
import { NzTimePickerModule } from 'ng-zorro-antd/time-picker';
|
||||||
import { NzCheckboxModule } from 'ng-zorro-antd/checkbox';
|
import { NzCheckboxModule } from 'ng-zorro-antd/checkbox';
|
||||||
|
import { QRModule } from '@delon/abc/qr';
|
||||||
import { NzEmptyModule } from 'ng-zorro-antd/empty';
|
import { NzEmptyModule } from 'ng-zorro-antd/empty';
|
||||||
export const SHARED_ZORRO_MODULES = [
|
export const SHARED_ZORRO_MODULES = [
|
||||||
NzButtonModule,
|
NzButtonModule,
|
||||||
@ -66,5 +67,7 @@ export const SHARED_ZORRO_MODULES = [
|
|||||||
NzTimePickerModule,
|
NzTimePickerModule,
|
||||||
NzCheckboxModule,
|
NzCheckboxModule,
|
||||||
NzInputNumberModule,
|
NzInputNumberModule,
|
||||||
|
QRModule,
|
||||||
|
NzPopoverModule,
|
||||||
NzEmptyModule
|
NzEmptyModule
|
||||||
];
|
];
|
||||||
|
|||||||
@ -141,10 +141,23 @@
|
|||||||
"text": "货源管理",
|
"text": "货源管理",
|
||||||
"icon": "anticon anticon-dashboard",
|
"icon": "anticon anticon-dashboard",
|
||||||
"group": true,
|
"group": true,
|
||||||
"children": [
|
"children": [{
|
||||||
{
|
|
||||||
"text": "货源管理",
|
"text": "货源管理",
|
||||||
"link": "/supplygoods/list"
|
"icon": "anticon anticon-dashboard",
|
||||||
|
"link": "/supply-management/index",
|
||||||
|
"reuse": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"text": "货源详情",
|
||||||
|
"icon": "anticon anticon-dashboard",
|
||||||
|
"link": "/supply-management/bulk-detail",
|
||||||
|
"hide": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"text": "货源详情",
|
||||||
|
"icon": "anticon anticon-dashboard",
|
||||||
|
"link": "/supply-management/vehicle-detail",
|
||||||
|
"hide": true
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
|||||||
Reference in New Issue
Block a user