diff --git a/src/app/routes/routes-routing.module.ts b/src/app/routes/routes-routing.module.ts index 1b342763..1e2c3745 100644 --- a/src/app/routes/routes-routing.module.ts +++ b/src/app/routes/routes-routing.module.ts @@ -1,7 +1,7 @@ /* * @Author: your name * @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 * @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 @@ -34,7 +34,8 @@ const routes: Routes = [ { 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: '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 diff --git a/src/app/routes/supply-management/components/add-drivers/add-drivers.component.html b/src/app/routes/supply-management/components/add-drivers/add-drivers.component.html new file mode 100644 index 00000000..bb71bd4f --- /dev/null +++ b/src/app/routes/supply-management/components/add-drivers/add-drivers.component.html @@ -0,0 +1,29 @@ + +
+
+
+
+ +
+ +
+ +
+
+
+ +
+
+
+ +
+ +
+
+ + +
+
\ No newline at end of file diff --git a/src/app/routes/supply-management/components/add-drivers/add-drivers.component.spec.ts b/src/app/routes/supply-management/components/add-drivers/add-drivers.component.spec.ts new file mode 100644 index 00000000..ef047291 --- /dev/null +++ b/src/app/routes/supply-management/components/add-drivers/add-drivers.component.spec.ts @@ -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; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ SupplyManagementAddDriversComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(SupplyManagementAddDriversComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/routes/supply-management/components/add-drivers/add-drivers.component.ts b/src/app/routes/supply-management/components/add-drivers/add-drivers.component.ts new file mode 100644 index 00000000..cef91e31 --- /dev/null +++ b/src/app/routes/supply-management/components/add-drivers/add-drivers.component.ts @@ -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() { + + } + +} diff --git a/src/app/routes/supply-management/components/assigned-car/assigned-car.component.html b/src/app/routes/supply-management/components/assigned-car/assigned-car.component.html new file mode 100644 index 00000000..3250285a --- /dev/null +++ b/src/app/routes/supply-management/components/assigned-car/assigned-car.component.html @@ -0,0 +1,7 @@ +
+ +
+ + +
+
\ No newline at end of file diff --git a/src/app/routes/supply-management/components/assigned-car/assigned-car.component.spec.ts b/src/app/routes/supply-management/components/assigned-car/assigned-car.component.spec.ts new file mode 100644 index 00000000..1dc14946 --- /dev/null +++ b/src/app/routes/supply-management/components/assigned-car/assigned-car.component.spec.ts @@ -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; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ SupplyManagementAssignedCarComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(SupplyManagementAssignedCarComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/routes/supply-management/components/assigned-car/assigned-car.component.ts b/src/app/routes/supply-management/components/assigned-car/assigned-car.component.ts new file mode 100644 index 00000000..d7bed985 --- /dev/null +++ b/src/app/routes/supply-management/components/assigned-car/assigned-car.component.ts @@ -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(); + } +} diff --git a/src/app/routes/supply-management/components/bulk-detail/bulk-detail.component.html b/src/app/routes/supply-management/components/bulk-detail/bulk-detail.component.html new file mode 100644 index 00000000..bff5f784 --- /dev/null +++ b/src/app/routes/supply-management/components/bulk-detail/bulk-detail.component.html @@ -0,0 +1,101 @@ + + + + + + + +
+
+ + {{ i?.no }} + 待接单 + + + + +
+
+ + + + +
+
+ +
+ {{ i?.owner }} + 32943898021309809423 + 3321944288191034921 + 18112345678 + 曲丽丽 18100000000 + 曲丽丽 18100000000 +
+ +
+
+
+

装卸货信息

+

装货地:广东省深圳市龙岗区怡亚通大厦

+

联系人:奥利给/13680058545

+

卸货地:广东省深圳市福田区岗厦村9巷8号405(新村)

+

联系人:花花世界/13680058545

+
+
+
+
+

货物信息

+

货物名称:广东省深圳市龙岗区怡亚通大厦

+

运费单价:奥利给/13680058545

+

重量/体积:广东省深圳市福田区岗厦村9巷8号405(新村)

+

剩余:花花世界/13680058545

+

车型/车长:花花世界/13680058545

+
+
+
+
+

关联运单

+

待发车({{ i?.id }})

+

运输中({{ i?.id }})

+

待签收({{ i?.id }})

+

已完成({{ i?.id }})

+

已取消 ({{ i?.id }})

+
+
+
+

补充信息

+

结算重量:广东省深圳市龙岗区怡亚通大厦

+

备注:奥利给/13680058545

+
+
+ +
+ + + + +
+
+ + + + +
+
+ +

指派熟车 + 已选择 + 10 + 位司机 + +

+
+ + + \ No newline at end of file diff --git a/src/app/routes/supply-management/components/bulk-detail/bulk-detail.component.less b/src/app/routes/supply-management/components/bulk-detail/bulk-detail.component.less new file mode 100644 index 00000000..13a4c9d6 --- /dev/null +++ b/src/app/routes/supply-management/components/bulk-detail/bulk-detail.component.less @@ -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; + } + } + } +} \ No newline at end of file diff --git a/src/app/routes/supply-management/components/bulk-detail/bulk-detail.component.spec.ts b/src/app/routes/supply-management/components/bulk-detail/bulk-detail.component.spec.ts new file mode 100644 index 00000000..96324a8c --- /dev/null +++ b/src/app/routes/supply-management/components/bulk-detail/bulk-detail.component.spec.ts @@ -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; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ SupplyManagementBulkDetailComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(SupplyManagementBulkDetailComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/routes/supply-management/components/bulk-detail/bulk-detail.component.ts b/src/app/routes/supply-management/components/bulk-detail/bulk-detail.component.ts new file mode 100644 index 00000000..9efd9693 --- /dev/null +++ b/src/app/routes/supply-management/components/bulk-detail/bulk-detail.component.ts @@ -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: '删除确认', + nzContent: `请仔细核对,避免误操作!
是否删除?
`, + 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); + } +} diff --git a/src/app/routes/supply-management/components/bulk/bulk.component.html b/src/app/routes/supply-management/components/bulk/bulk.component.html new file mode 100644 index 00000000..5beed3b3 --- /dev/null +++ b/src/app/routes/supply-management/components/bulk/bulk.component.html @@ -0,0 +1,111 @@ + + + +
+ +
+ +
+ + + +
+ +
+
+ + + + +
+
+
+
+ + + + + +
+ + +
+
+ + + {{item.no}} + + +
待发车 (0)
+
运输中 (0)
+
待签收 (0)
+
已完成 (0)
+
已取消 (0)
+
+ +
{{item.owner}}
+
货源:{{item.progress}} 顿 / {{item.progress}} 方
+
剩余: {{item.progress}} 顿 / {{item.progress}} 方
+
+ +
车型: {{item.progress}}
+
车长: {{item.progress}} 米
+
+ +
{{item.progress}} 元/顿
+
+ +
{{item.owner}}
+
{{item.mobile}}
+
+ +
{{item.owner}}
+
{{item.mobile}}
+
+
+
+
+ + +
+ + +
+ + +
+ + + + +
+ +
+ + + +
+
\ No newline at end of file diff --git a/src/app/routes/supply-management/components/bulk/bulk.component.spec.ts b/src/app/routes/supply-management/components/bulk/bulk.component.spec.ts new file mode 100644 index 00000000..1f54e37b --- /dev/null +++ b/src/app/routes/supply-management/components/bulk/bulk.component.spec.ts @@ -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; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ SupplyManagementBulkComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(SupplyManagementBulkComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/routes/supply-management/components/bulk/bulk.component.ts b/src/app/routes/supply-management/components/bulk/bulk.component.ts new file mode 100644 index 00000000..d80d4f9d --- /dev/null +++ b/src/app/routes/supply-management/components/bulk/bulk.component.ts @@ -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() { + +} +} diff --git a/src/app/routes/supply-management/components/index/index.component.html b/src/app/routes/supply-management/components/index/index.component.html new file mode 100644 index 00000000..70f2cdab --- /dev/null +++ b/src/app/routes/supply-management/components/index/index.component.html @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/app/routes/supply-management/components/index/index.component.spec.ts b/src/app/routes/supply-management/components/index/index.component.spec.ts new file mode 100644 index 00000000..9601ea0c --- /dev/null +++ b/src/app/routes/supply-management/components/index/index.component.spec.ts @@ -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; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ SupplyManagementIndexComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(SupplyManagementIndexComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/routes/supply-management/components/index/index.component.ts b/src/app/routes/supply-management/components/index/index.component.ts new file mode 100644 index 00000000..1cb8ec9c --- /dev/null +++ b/src/app/routes/supply-management/components/index/index.component.ts @@ -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 { } + + +} diff --git a/src/app/routes/supply-management/components/qrcode-page/qrcode-page.component.html b/src/app/routes/supply-management/components/qrcode-page/qrcode-page.component.html new file mode 100644 index 00000000..d9337a41 --- /dev/null +++ b/src/app/routes/supply-management/components/qrcode-page/qrcode-page.component.html @@ -0,0 +1,14 @@ + +
+
+

公司名称:{{i.companyName}}

+ +
卸货地:{{i.adddress}}
+
装货地:{{i.adddress}}
+
截止时间:{{i.createdAt}}
+
Tips:二维码用于司机扫码抢单
+
+ +
\ No newline at end of file diff --git a/src/app/routes/supply-management/components/qrcode-page/qrcode-page.component.spec.ts b/src/app/routes/supply-management/components/qrcode-page/qrcode-page.component.spec.ts new file mode 100644 index 00000000..3896c10c --- /dev/null +++ b/src/app/routes/supply-management/components/qrcode-page/qrcode-page.component.spec.ts @@ -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; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ SupplyManagementQrcodePageComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(SupplyManagementQrcodePageComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/routes/supply-management/components/qrcode-page/qrcode-page.component.ts b/src/app/routes/supply-management/components/qrcode-page/qrcode-page.component.ts new file mode 100644 index 00000000..475e28dc --- /dev/null +++ b/src/app/routes/supply-management/components/qrcode-page/qrcode-page.component.ts @@ -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(); + } +} diff --git a/src/app/routes/supply-management/components/update-external-sn/update-external-sn.component.html b/src/app/routes/supply-management/components/update-external-sn/update-external-sn.component.html new file mode 100644 index 00000000..0adf665b --- /dev/null +++ b/src/app/routes/supply-management/components/update-external-sn/update-external-sn.component.html @@ -0,0 +1,10 @@ + +
编辑外部货源号
+ + + \ No newline at end of file diff --git a/src/app/routes/supply-management/components/update-external-sn/update-external-sn.component.spec.ts b/src/app/routes/supply-management/components/update-external-sn/update-external-sn.component.spec.ts new file mode 100644 index 00000000..1f32b568 --- /dev/null +++ b/src/app/routes/supply-management/components/update-external-sn/update-external-sn.component.spec.ts @@ -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; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ SupplyManagementUpdateExternalSnComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(SupplyManagementUpdateExternalSnComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/routes/supply-management/components/update-external-sn/update-external-sn.component.ts b/src/app/routes/supply-management/components/update-external-sn/update-external-sn.component.ts new file mode 100644 index 00000000..6031e1fa --- /dev/null +++ b/src/app/routes/supply-management/components/update-external-sn/update-external-sn.component.ts @@ -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(); + } +} diff --git a/src/app/routes/supply-management/components/update-freight/update-freight.component.html b/src/app/routes/supply-management/components/update-freight/update-freight.component.html new file mode 100644 index 00000000..7e3e8f7c --- /dev/null +++ b/src/app/routes/supply-management/components/update-freight/update-freight.component.html @@ -0,0 +1,15 @@ + + + + + 天内支付运费 + + +
{{sf.value.description1 | currency: 'CNY' }}(费率:5.3%)
+
+ +
\ No newline at end of file diff --git a/src/app/routes/supply-management/components/update-freight/update-freight.component.spec.ts b/src/app/routes/supply-management/components/update-freight/update-freight.component.spec.ts new file mode 100644 index 00000000..da00ca73 --- /dev/null +++ b/src/app/routes/supply-management/components/update-freight/update-freight.component.spec.ts @@ -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; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ SupplyManagementUpdateFreightComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(SupplyManagementUpdateFreightComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/routes/supply-management/components/update-freight/update-freight.component.ts b/src/app/routes/supply-management/components/update-freight/update-freight.component.ts new file mode 100644 index 00000000..0c2eed6e --- /dev/null +++ b/src/app/routes/supply-management/components/update-freight/update-freight.component.ts @@ -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) { + + } +} diff --git a/src/app/routes/supply-management/components/update-price/update-price.component.html b/src/app/routes/supply-management/components/update-price/update-price.component.html new file mode 100644 index 00000000..9ca3db20 --- /dev/null +++ b/src/app/routes/supply-management/components/update-price/update-price.component.html @@ -0,0 +1,24 @@ +
+ + + + + 元/吨 + + + + +
+
+

变更日志

+ + +
黎日湛
+
18811112222
+
+
+
\ No newline at end of file diff --git a/src/app/routes/supply-management/components/update-price/update-price.component.spec.ts b/src/app/routes/supply-management/components/update-price/update-price.component.spec.ts new file mode 100644 index 00000000..213a77a0 --- /dev/null +++ b/src/app/routes/supply-management/components/update-price/update-price.component.spec.ts @@ -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; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ SupplyManagementUpdatePriceComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(SupplyManagementUpdatePriceComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/routes/supply-management/components/update-price/update-price.component.ts b/src/app/routes/supply-management/components/update-price/update-price.component.ts new file mode 100644 index 00000000..8e942bb0 --- /dev/null +++ b/src/app/routes/supply-management/components/update-price/update-price.component.ts @@ -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(); + } +} diff --git a/src/app/routes/supply-management/components/vehicle-detail/vehicle-detail.component.html b/src/app/routes/supply-management/components/vehicle-detail/vehicle-detail.component.html new file mode 100644 index 00000000..61cbd133 --- /dev/null +++ b/src/app/routes/supply-management/components/vehicle-detail/vehicle-detail.component.html @@ -0,0 +1,102 @@ + + + + + + + +
+
+ + {{ i?.no }} + 待接单 + + + + +
+
+ + + + +
+
+ +
+ {{ i?.owner }} + 32943898021309809423 + 3321944288191034921 + 18112345678 + 曲丽丽 18100000000 + 曲丽丽 18100000000 +
+ +
+
+
+

装卸货信息

+

装货地:广东省深圳市龙岗区怡亚通大厦

+

联系人:奥利给/13680058545

+

卸货地:广东省深圳市福田区岗厦村9巷8号405(新村)

+

联系人:花花世界/13680058545

+

发货日期:广东省深圳市福田区岗厦村9巷8号405(新村)

+

卸货日期:花花世界/13680058545

+
+
+
+
+

货物信息

+

货物名称:广东省深圳市龙岗区怡亚通大厦

+

重量/体积:广东省深圳市福田区岗厦村9巷8号405(新村)

+

车型/车长:花花世界/13680058545

+
+
+
+
+

承运信息

+

司机:广东省深圳市龙岗区怡亚通大厦

+

车牌号:广东省深圳市福田区岗厦村9巷8号405(新村)

+

车型/车长/承重:{{'拖车'}} | {{'4.5米'}} | {{'15吨'}}

+
+
+
+

补充信息

+

需要回单

+

备注:奥利给/13680058545

+
+
+ +
+
+

运费信息

+
+

{{400 | currency }}

+

{{400 | currency }}

+

{{400 | currency }}

+

{{400 | currency}}

+

{{400 | currency }}

+
+
+ +
+
+

{{400 | currency }}

+
+ +
+
+ +
+ + + + +
+
\ No newline at end of file diff --git a/src/app/routes/supply-management/components/vehicle-detail/vehicle-detail.component.less b/src/app/routes/supply-management/components/vehicle-detail/vehicle-detail.component.less new file mode 100644 index 00000000..a1566606 --- /dev/null +++ b/src/app/routes/supply-management/components/vehicle-detail/vehicle-detail.component.less @@ -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; + } + } + } +} \ No newline at end of file diff --git a/src/app/routes/supply-management/components/vehicle-detail/vehicle-detail.component.spec.ts b/src/app/routes/supply-management/components/vehicle-detail/vehicle-detail.component.spec.ts new file mode 100644 index 00000000..eae95066 --- /dev/null +++ b/src/app/routes/supply-management/components/vehicle-detail/vehicle-detail.component.spec.ts @@ -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; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ SupplyManagementVehicleDetailComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(SupplyManagementVehicleDetailComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/routes/supply-management/components/vehicle-detail/vehicle-detail.component.ts b/src/app/routes/supply-management/components/vehicle-detail/vehicle-detail.component.ts new file mode 100644 index 00000000..0f719e6f --- /dev/null +++ b/src/app/routes/supply-management/components/vehicle-detail/vehicle-detail.component.ts @@ -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); + } +} diff --git a/src/app/routes/supply-management/components/vehicle/vehicle.component.html b/src/app/routes/supply-management/components/vehicle/vehicle.component.html new file mode 100644 index 00000000..f5f6aa17 --- /dev/null +++ b/src/app/routes/supply-management/components/vehicle/vehicle.component.html @@ -0,0 +1,108 @@ + + + +
+ +
+ +
+ + + +
+ +
+
+ + + + +
+
+
+
+ + + + + + +
+ + +
+ + +
+ + + {{item.no}} + + + +
{{item.no}}
+
+ +
+

预付:¥200.00

+

到付:¥200.00

+

油卡:¥200.00

+

回单付:¥200.00

+

小计:¥200.00

+

附加费:¥200.00

+
+
+
+
+
+ +
+ + + +
+
+ + + +
+ + +
+ + +
+ + + + +
\ No newline at end of file diff --git a/src/app/routes/supply-management/components/vehicle/vehicle.component.less b/src/app/routes/supply-management/components/vehicle/vehicle.component.less new file mode 100644 index 00000000..29a5e65b --- /dev/null +++ b/src/app/routes/supply-management/components/vehicle/vehicle.component.less @@ -0,0 +1,2 @@ +:host { +} \ No newline at end of file diff --git a/src/app/routes/supply-management/components/vehicle/vehicle.component.spec.ts b/src/app/routes/supply-management/components/vehicle/vehicle.component.spec.ts new file mode 100644 index 00000000..e231763d --- /dev/null +++ b/src/app/routes/supply-management/components/vehicle/vehicle.component.spec.ts @@ -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; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ SupplyManagementVehicleComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(SupplyManagementVehicleComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/routes/supply-management/components/vehicle/vehicle.component.ts b/src/app/routes/supply-management/components/vehicle/vehicle.component.ts new file mode 100644 index 00000000..27e75ead --- /dev/null +++ b/src/app/routes/supply-management/components/vehicle/vehicle.component.ts @@ -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() { + + } +} diff --git a/src/app/routes/supply-management/services/supply-management.service.ts b/src/app/routes/supply-management/services/supply-management.service.ts new file mode 100644 index 00000000..80882fb7 --- /dev/null +++ b/src/app/routes/supply-management/services/supply-management.service.ts @@ -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) + } +} diff --git a/src/app/routes/supply-management/supply-management-routing.module.ts b/src/app/routes/supply-management/supply-management-routing.module.ts new file mode 100644 index 00000000..e5a8ed66 --- /dev/null +++ b/src/app/routes/supply-management/supply-management-routing.module.ts @@ -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 { } diff --git a/src/app/routes/supply-management/supply-management.module.ts b/src/app/routes/supply-management/supply-management.module.ts new file mode 100644 index 00000000..5ec64b82 --- /dev/null +++ b/src/app/routes/supply-management/supply-management.module.ts @@ -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[] = [ + SupplyManagementIndexComponent, + SupplyManagementBulkComponent, + SupplyManagementVehicleComponent, + SupplyManagementUpdatePriceComponent, + SupplyManagementUpdateFreightComponent, + SupplyManagementAssignedCarComponent, + SupplyManagementQrcodePageComponent, + SupplyManagementUpdateExternalSnComponent, + SupplyManagementBulkDetailComponent, + SupplyManagementVehicleDetailComponent, + SupplyManagementAddDriversComponent]; + +@NgModule({ + imports: [ + SharedModule, + SupplyManagementRoutingModule + ], + declarations: COMPONENTS, +}) +export class SupplyManagementModule { } diff --git a/src/app/shared/shared-zorro.module.ts b/src/app/shared/shared-zorro.module.ts index 35a08d18..53d7c243 100644 --- a/src/app/shared/shared-zorro.module.ts +++ b/src/app/shared/shared-zorro.module.ts @@ -7,7 +7,7 @@ import { NzToolTipModule } from 'ng-zorro-antd/tooltip'; /* * @Author: your name * @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 * @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 @@ -36,6 +36,7 @@ import { NzTabsModule } from 'ng-zorro-antd/tabs'; import { NzRadioModule } from 'ng-zorro-antd/radio'; import { NzTimePickerModule } from 'ng-zorro-antd/time-picker'; import { NzCheckboxModule } from 'ng-zorro-antd/checkbox'; +import { QRModule } from '@delon/abc/qr'; import { NzEmptyModule } from 'ng-zorro-antd/empty'; export const SHARED_ZORRO_MODULES = [ NzButtonModule, @@ -66,5 +67,7 @@ export const SHARED_ZORRO_MODULES = [ NzTimePickerModule, NzCheckboxModule, NzInputNumberModule, + QRModule, + NzPopoverModule, NzEmptyModule ]; diff --git a/src/assets/mocks/menu-data.json b/src/assets/mocks/menu-data.json index 9f70f882..74c6bc0b 100644 --- a/src/assets/mocks/menu-data.json +++ b/src/assets/mocks/menu-data.json @@ -141,10 +141,23 @@ "text": "货源管理", "icon": "anticon anticon-dashboard", "group": true, - "children": [ - { + "children": [{ "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 } ] },