This commit is contained in:
Lingzi
2022-03-29 11:29:09 +08:00
66 changed files with 1453 additions and 274 deletions

View File

@ -20,7 +20,7 @@ module.exports = {
// }
'//api': {
target: {
host: 'tms-api-dev.eascs.com',
host: 'tms-api-test.eascs.com',
protocol: 'https:',
port: 443
},

View File

@ -5,6 +5,7 @@ import { DatatableCustomindexComponent } from './components/customtable/customin
import { DatatableOwnerComponent } from './components/customtable/owner/owner.component';
import { DatatableDriverComponent } from './components/customtable/driver/driver.component';
import { DatatableOperationtableComponent } from './components/operationtable/operationtable.component';
import { DatatableOrderReportingComponent } from './reporting/components/order-reporting/order-reporting.component';
import { DatatableDataindexComponent } from './components/dataindex/dataindex.component';
const routes: Routes = [
@ -13,7 +14,9 @@ const routes: Routes = [
{ path: 'customindex', component: DatatableCustomindexComponent },
{ path: 'owner', component: DatatableOwnerComponent },
{ path: 'driver', component: DatatableDriverComponent },
{ path: 'operationtable', component: DatatableOperationtableComponent }];
{ path: 'operationtable', component: DatatableOperationtableComponent },
{ path: 'reporting/order', component: DatatableOrderReportingComponent }];
@NgModule({
imports: [RouterModule.forChild(routes)],

View File

@ -6,8 +6,9 @@ import { DatatableCustomindexComponent } from './components/customtable/customin
import { DatatableOwnerComponent } from './components/customtable/owner/owner.component';
import { DatatableDriverComponent } from './components/customtable/driver/driver.component';
import { DatatableOperationtableComponent } from './components/operationtable/operationtable.component';
import { DatatableDataindexComponent } from './components/dataindex/dataindex.component';
import { OperationtablePieComponent } from './components/operationtable/pie/pie.component';
import { DatatableOrderReportingComponent } from './reporting/components/order-reporting/order-reporting.component';
import { DatatableDataindexComponent } from './components/dataindex/dataindex.component';
const COMPONENTS: Type<void>[] = [
DatatableDataindexComponent,
@ -16,7 +17,8 @@ const COMPONENTS: Type<void>[] = [
DatatableOwnerComponent,
DatatableDriverComponent,
DatatableOperationtableComponent,
OperationtablePieComponent
OperationtablePieComponent,
DatatableOrderReportingComponent
];
@NgModule({

View File

@ -0,0 +1,85 @@
<page-header-wrapper [title]="''"></page-header-wrapper>
<nz-card>
<!-- 搜索表单 -->
<div nz-row nzGutter="8">
<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]="false" (click)="search()" acl
[acl-ability]="['RiskOrder-Search']">查询</button>
<button nz-button (click)="resetSF()">重置</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>
</div>
</nz-card>
<nz-card>
<nz-tabset [nzTabBarExtraContent]="extraTemplate" *ngIf="tabs.length>0">
<nz-tab *ngFor="let tab of tabs" [nzTitle]="tab.name" (nzSelect)="selectChange(tab)">
</nz-tab>
</nz-tabset>
<!-- 数据列表 -->
<st #st [scroll]="{x:'1200px'}" [data]="service.$api_order_reporting_page" [columns]="columns"
[req]="{ method: 'POST', 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, 50, 100] }" [loading]="false">
<ng-template st-row="orderSn" let-item let-index="index">
<a (click)="view(item)">{{item.billCode}}</a>
</ng-template>
<ng-template st-row="freightDetails" let-item>
<div *ngFor="let item of item.freightDetails">
<div>{{item.expenseName}}:{{item.price | currency}} </div>
</div>
</ng-template>
<ng-template st-row="loadingPlace" let-item let-index="index">
<div *ngFor="let address of item.loadingAddressArr">{{ address }} </div>
</ng-template>
<ng-template st-row="dischargePlace" let-item let-index="index">
<div *ngFor="let address of item.unloadingAddressArr">{{ address }}</div>
</ng-template>
<ng-template st-row="goodsInfoVOList" let-item>
<div *ngFor="let item of item.goodsInfoVOList">
<div>货物名称 : {{item.goodsName}}</div>
<div>重量/体积 : {{item.weight}}/{{item.volume}}</div>
<div>车型/车长 :{{item.carModelLabel}}/{{item.carLengthLabel}}</div>
</div>
</ng-template>
<ng-template st-row="driver" let-item>
<div> {{item.driverName}}</div>
<div>{{item.driverPhone}}</div>
<div>{{item.carNo}}</div>
</ng-template>
<ng-template st-row="payeeName" let-item>
<div>{{item.payeeName}}</div>
<div>{{item.payeePhone}}</div>
</ng-template>
<ng-template st-row="transportInfo" let-item>
<div>创建时间:{{item.createTime}}</div>
<div>装货时间:{{item.loadTime}}</div>
<div>卸货时间:{{item.unloadTime}}</div>
</ng-template>
<ng-template st-row="billComplianceVOS" let-item>
<div *ngFor="let item of item?.billComplianceVOS">{{item?.complianceName}}</div>
</ng-template>
<ng-template st-row="serviceType" let-item>
<div>{{item?.billTypeLabel}} {{item?.serviceTypeLabel}} </div>
</ng-template>
</st>
</nz-card>
<ng-template #extraTemplate>
<div class="d-flex align-items-center ">
<div class="mr-md">
已选择
<strong class="text-red">{{ selectedRows.length }}</strong> 条数据
</div>
<button nz-button nzType="primary" (click)="upload()">上传</button>
<button nz-button nzType="primary" (click)="recall({})">撤回</button>
<button nz-button nzType="primary" (click)="uploadSetting()">上传设置</button>
</div>
</ng-template>

View File

@ -0,0 +1,24 @@
import { waitForAsync, ComponentFixture, TestBed } from '@angular/core/testing';
import { DatatableOrderReportingComponent } from './order-reporting.component';
describe('DatatableOrderReportingComponent', () => {
let component: DatatableOrderReportingComponent;
let fixture: ComponentFixture<DatatableOrderReportingComponent>;
beforeEach(waitForAsync(() => {
TestBed.configureTestingModule({
declarations: [ DatatableOrderReportingComponent ]
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(DatatableOrderReportingComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});

View File

@ -0,0 +1,416 @@
import { Component, OnInit, ViewChild } from '@angular/core';
import { Router, ActivatedRoute } from '@angular/router';
import { STColumn, STComponent, STData } from '@delon/abc/st';
import { SFComponent, SFDateWidgetSchema, SFSchema, SFUISchema } from '@delon/form';
import { ModalHelper, _HttpClient } from '@delon/theme';
import { ShipperBaseService } from '@shared';
import { NzModalService } from 'ng-zorro-antd/modal';
import { ReportingService } from '../../services/reporting.service';
@Component({
selector: 'app-datatable-order-reporting',
templateUrl: './order-reporting.component.html',
})
export class DatatableOrderReportingComponent implements OnInit {
_$expand = false;
ui!: SFUISchema;
schema!: SFSchema;
columns!: STColumn[];
@ViewChild('st', { static: false }) st!: STComponent;
@ViewChild('sf', { static: false }) sf!: SFComponent;
tabType!: string;
tabs: any[] = [
{ name: '待上传', value: '1' },
{ name: '上传中', value: '2' },
{ name: '已上传', value: '3' },
{ name: '异常', value: '4' },
{ name: '全部', value: '' }
];
selectedIndex = ''; //选择的项目
serviceTel = '';
constructor(
public service: ReportingService,
private router: Router,
private ar: ActivatedRoute,
private modal: NzModalService,
public shipperSrv: ShipperBaseService
) {
}
/**
* 查询字段个数
*/
get queryFieldCount(): number {
return Object.keys(this.schema?.properties || {}).length;
}
/**
* 查询参数
*/
get reqParams() {
const params = Object.assign({}, this.sf?.value || {}, {
representationsStatus: this.selectedIndex,
});
delete params._$expand;
return { ...params };
}
/**
* 选中行
*/
get selectedRows() {
return this.st?.list.filter((item: any) => item.checked) || [];
}
/**
* 伸缩查询条件
*/
expandToggle() {
this._$expand = !this._$expand;
this.sf?.setValue('/_$expand', this._$expand);
}
/**
* 重置表单
*/
resetSF() {
this.sf.reset();
this._$expand = false;
}
/**
* 程序初始化入口
*/
ngOnInit() {
this.initSF();
this.initST();
}
/**
* 初始化查询表单
*/
initSF() {
this.schema = {
properties: {
_$expand: { type: 'boolean', ui: { hidden: true } },
billCode: { title: '订单号', type: 'string', ui: { placeholder: '请输入' } },
resourceCode: {
type: 'string',
title: '运单号',
ui: {
placeholder: '请输入',
},
},
enterpriseInfoId: {
title: '网络货运人',
type: 'string',
ui: {
placeholder: '请选择',
widget: 'select',
asyncData: () => this.shipperSrv.getNetworkFreightForwarder({}, false),
allowClear: true
}
},
externalResourceCode: {
title: '货主',
type: 'string',
ui: {
placeholder: '请输入',
visibleIf: {
_$expand: (value: boolean) => value,
},
}
},
driverName: {
title: '承运司机',
type: 'string',
ui: {
placeholder: '请输入司机姓名/手机号', visibleIf: {
_$expand: (value: boolean) => value,
},
}
},
carNo: {
title: '车牌号',
type: 'string',
maxLength: 9,
ui: {
placeholder: '请输入',
visibleIf: {
_$expand: (value: boolean) => value,
},
}
},
serviceType: {
title: '上传状态',
type: 'string',
ui: {
placeholder: '请选择',
widget: 'dict-select',
params: { dictKey: 'service:type' },
containsAllLabel: true,
visibleIf: {
_$expand: (value: boolean) => value,
},
}
},
serviceType1: {
title: '本地校验',
type: 'string',
ui: {
placeholder: '请选择',
widget: 'dict-select',
params: { dictKey: 'service:type' },
containsAllLabel: true,
visibleIf: {
_$expand: (value: boolean) => value,
},
}
},
createTime: {
title: '上传时间',
type: 'string',
ui: {
widget: 'sl-from-to',
type: 'date',
format: 'yyyy-MM-dd',
visibleIf: {
_$expand: (value: boolean) => value,
},
} as SFDateWidgetSchema,
},
createTime1: {
title: '运单生成时间',
type: 'string',
ui: {
widget: 'sl-from-to',
type: 'date',
format: 'yyyy-MM-dd',
visibleIf: {
_$expand: (value: boolean) => value,
},
} as SFDateWidgetSchema,
},
createTime2: {
title: '发货时间',
type: 'string',
ui: {
widget: 'sl-from-to',
type: 'date',
format: 'yyyy-MM-dd',
visibleIf: {
_$expand: (value: boolean) => value,
},
} as SFDateWidgetSchema,
},
createTime3: {
title: '收货时间',
type: 'string',
ui: {
widget: 'sl-from-to',
type: 'date',
format: 'yyyy-MM-dd',
visibleIf: {
_$expand: (value: boolean) => value,
},
} as SFDateWidgetSchema,
},
loadingPlace: {
title: '车辆轨迹',
type: 'string',
enum: [
{ label: '全部', value: '' },
{ label: '有', value: '1' },
{ label: '无', value: '0' }
],
ui: {
placeholder: '请选择',
visibleIf: {
_$expand: (value: boolean) => value,
},
}
},
loadingPlace1: {
title: '司机轨迹',
type: 'string',
enum: [
{ label: '全部', value: '' },
{ label: '有', value: '1' },
{ label: '无', value: '0' }
],
ui: {
placeholder: '请选择',
visibleIf: {
_$expand: (value: boolean) => value,
},
}
},
},
};
this.ui = {
'*': { spanLabelFixed: 120, grid: { span: 8, gutter: 4 }, enter: () => this.search() },
$time: { grid: { span: 24 } },
};
}
/**
* 初始化数据列表
*/
initST() {
this.columns = [
{ title: '', type: 'checkbox', className: 'text-center', width: '80px', },
{ title: '订单状态', index: 'name', className: 'text-center', width: '120px', },
{ title: '司机状态', index: 'name', className: 'text-center', width: '120px', },
{ title: '车辆状态', index: 'name', className: 'text-center', width: '120px', },
{ title: '本地校验', render: 'orderSn', className: 'text-center', width: '180px', },
{
title: '订单号',
render: 'billComplianceVOS',
className: 'text-center',
width: '150px',
},
{ title: '运单号', render: 'freightDetails', className: 'text-center', width: '150px', },
{
title: '网络货运人',
render: 'serviceType',
className: 'text-center',
width: '120px',
},
{ title: '统一社会信用代码', index: 'loadingPlace', render: 'loadingPlace', className: 'text-center', width: '300px' },
{ title: '业务类型', index: 'dischargePlace', render: 'dischargePlace', className: 'text-center', width: '300px' },
{ title: '运单生成时间', render: 'goodsInfoVOList', className: 'text-center', width: '200px' },
{ title: '发货时间', render: 'driver', className: 'text-center', width: '150px' },
{ title: '收货时间', render: 'payeeName', className: 'text-center', width: '150px' },
{ title: '托运人名称', render: 'transportInfo', className: 'text-center', width: '250px' },
{ title: '托运人统一社会信用代码', index: 'loadingPlace', render: 'loadingPlace', className: 'text-center', width: '300px' },
{ title: '装货地址', index: 'dischargePlace', render: 'dischargePlace', className: 'text-center', width: '300px' },
{ title: '运单生成时间', render: 'goodsInfoVOList', className: 'text-center', width: '200px' },
{ title: '收货方名称', render: 'driver', className: 'text-center', width: '150px' },
{ title: '收货地址', render: 'payeeName', className: 'text-center', width: '150px' },
{ title: '运费金额', render: 'transportInfo', className: 'text-center', width: '250px' },
{ title: '车牌号', render: 'payeeName', className: 'text-center', width: '150px' },
{ title: '车牌颜色', render: 'transportInfo', className: 'text-center', width: '250px' },
{ title: '司机姓名', render: 'payeeName', className: 'text-center', width: '150px' },
{ title: '司机手机号码', render: 'transportInfo', className: 'text-center', width: '250px' },
{ title: '司机身份证号', render: 'payeeName', className: 'text-center', width: '150px' },
{ title: '货物信息', render: 'transportInfo', className: 'text-center', width: '250px' },
{ title: '实际承运人名称', render: 'payeeName', className: 'text-center', width: '150px' },
{ title: '实际承运人证件号码', render: 'transportInfo', className: 'text-center', width: '250px' },
{ title: '实际承运人道路运输许可证号', render: 'payeeName', className: 'text-center', width: '150px' },
{ title: '车辆轨迹', render: 'transportInfo', className: 'text-center', width: '250px' },
{ title: '司机轨迹', render: 'payeeName', className: 'text-center', width: '150px' },
{ title: '上传次数', render: 'transportInfo', className: 'text-center', width: '250px' },
{ title: '上传时间', render: 'transportInfo', className: 'text-center', width: '250px' },
{
title: '操作',
width: '200px',
className: 'text-center',
buttons: [
// { text: '编辑', click: (_record: any) => this.appeal(_record) },
{
text: '申诉',
// click: (record) => this.appeal(record),
iif: (_record) => _record.representationsStatus === '1',
acl: { 'ability': ['RiskOrder-Appeal'] }
},
{
text: '撤销申诉',
pop: {
title: '是否确定立即撤销申诉?',
okType: 'danger',
},
click: (record) => this.recall(record),
iif: (_record) => _record.representationsStatus === '2',
acl: { 'ability': ['RiskOrder-CancleAppeal'] }
},
{ text: '详情', click: (_record: any) => this.view(_record), acl: { 'ability': ['RiskOrder-Detail'] } },
],
},
];
}
/**
* 删除单个实例
* @param record 记录实例
*/
recall(record: STData) {
this.service.request(this.service.$api_recall_reporting, { id: record?.id }).subscribe((res: any) => {
if (res) {
this.search({ representationsStatus: '' });
}
})
}
selectChange(item: any) {
this.selectedIndex = item?.representationsStatus || '';
setTimeout(() => {
this.st.load(1);
})
}
/**
* 查看当行数据
*/
view(record: STData) {
// this.router.navigate(['../view', record.uuid], { relativeTo: this.ar });
this.router.navigate(['../detail'], {
queryParams: {
id: record.id,
},
relativeTo: this.ar
});
}
// appeal(item: any) {
// const modalRef = this.modal.create({
// nzTitle: '申诉',
// nzWidth: '40%',
// nzContent: CtcAppealComponent,
// nzComponentParams: {
// i: item,
// status: 'add'
// },
// nzFooter: null
// });
// modalRef.afterClose.subscribe(res => {
// if (res) {
// this.search({ representationsStatus: '' });
// }
// })
// }
/**
* 上传
*/
upload() {
}
/**
*
* @param params 上传设置
*/
uploadSetting() {
}
search(params = {}) {
this.st.load(1);
}
/**
* 异步导出
*/
export() {
this.service.exportStart(this.sf?.value, this.service.$api_async_export_order_reporting_list);
}
}

View File

@ -0,0 +1,15 @@
import { Injectable, Injector } from '@angular/core';
import { BaseService } from '@shared';
@Injectable({
providedIn: 'root'
})
export class ReportingService extends BaseService {
$api_order_reporting_page = ``; // 订单上报列表
$api_recall_reporting = ``; // 撤回
$api_async_export_order_reporting_list = ``; // 导出订单上报
constructor(public injector: Injector) {
super(injector);
}
}

View File

@ -165,7 +165,9 @@ export class DriverAccountDetailComponent implements OnInit {
{ title: '交易时间', index: 'createTime', type: 'date' },
{ title: '流水号', index: 'channelPaySn' },
{ title: '交易类型', index: 'tradeTypeLabel', className: 'text-center' },
{ title: '关联单号', index: 'businessNumber' },
{ title: '交易单号', index: 'businessNumber' },
{ title: '订单号', index: 'orderSn' },
{ title: '运单号', index: 'transportSn' },
{ title: '收支类型', index: 'incomeTypeLabel', className: 'text-center' },
{
title: '交易金额',
@ -182,7 +184,10 @@ export class DriverAccountDetailComponent implements OnInit {
type: 'widget',
className: 'text-right',
widget: { type: 'currency-chy', params: ({ record }) => ({ value: record.accountBalance }) }
}
},
{ title: '付款方', index: 'payName'},
{ title: '收款方', index: 'payeeName' },
{ title: '备注', index: 'tradeContent' },
];
}
}

View File

@ -164,7 +164,7 @@ export class DriverAccountComponent implements OnInit {
{ title: '司机姓名', width: 140, index: 'name' },
{ title: '证件号码', width: 140, index: 'idNo' },
{ title: '手机号', width: 140, index: 'phone' },
{ title: '网络货运人', width: 140, index: 'ltdName' },
{ title: '网络货运人', width: 180, index: 'ltdName' },
{ title: '银行类型', width: 120, index: 'bankTypeLabel' },
{ title: '虚拟账户', width: 140, index: 'virtualAccount' },
{
@ -186,13 +186,14 @@ export class DriverAccountComponent implements OnInit {
{
title: '本月累计提现金额',
index: 'withdrawBalance',
width: 150,
width: 160,
type: 'widget',
className: 'text-right',
widget: { type: 'currency-chy', params: ({ record }) => ({ value: record.withdrawBalance }) }
},
{ title: '账户总余额', render: 'availableBalance', className: 'text-right', width: 180 },
{ title: '创建时间', index: 'createTime', type: 'date', width: 150 },
{ title: '状态', index: 'stateDeletedLabel', width: 120 },
{
title: '操作',
width: 120,

View File

@ -190,7 +190,8 @@ export class RechargeRecordComponent implements OnInit {
rmYll: item.roleId,
snglFlgCd: item.paySerialNumber2,
bussType: '06',
ltdId: item.ltdId
ltdId: item.ltdId,
accountType: item.accountType
})
}
]

View File

@ -253,7 +253,8 @@ export class TransactionFlowComponent {
rmYll: item.roleId,
snglFlgCd: item.channelPaySn,
bussType: item.tradeType === '7' ? '05' : item.tradeType === '8' ? '06' : '07',
ltdId: item.ltdId
ltdId: item.ltdId,
accountType: item.accountType
})
}
]

View File

@ -99,7 +99,8 @@ export class WithdrawalsDetailComponent implements OnInit {
rmYll: this.formData.userId,
snglFlgCd: this.formData.coreSerNo,
bussType: '06',
ltdId: this.formData.ltdId
ltdId: this.formData.ltdId,
accountType: this.formData.accountType
});
}

View File

@ -297,7 +297,8 @@ export class WithdrawalsRecordComponent {
rmYll: item.userId,
snglFlgCd: item.coreSerNo,
bussType: '06',
ltdId: item.ltdId
ltdId: item.ltdId,
accountType: item.accountType
})
}
]

View File

@ -360,7 +360,7 @@
</div>
</nz-card>
<nz-modal [(nzVisible)]="isVisible" [nzFooter]="nzModalFooter" [nzTitle]="modalTitle" (nzOnOk)="handleOK()" (nzOnCancel)="handleCancel()">
<nz-modal [(nzVisible)]="isVisible" [nzFooter]="nzModalFooter" [nzTitle]="modalTitle" (nzOnOk)="handleOK()" nzWidth="1000px" (nzOnCancel)="handleCancel()">
<ng-container *nzModalContent>
<div *ngIf="!modalcontent">暂无附件信息</div>
<div [innerHTML]="modalcontent"></div>

View File

@ -4,7 +4,7 @@
* @Author : Shiming
* @Date : 2021-12-06 20:20:26
* @LastEditors : Shiming
* @LastEditTime : 2022-03-24 14:08:55
* @LastEditTime : 2022-03-29 11:09:00
* @FilePath : \\tms-obc-web\\src\\app\\routes\\order-management\\components\\bulk-detail\\bulk-detail.component.html
* Copyright (C) 2022 huzhenhong. All rights reserved.
-->
@ -45,7 +45,6 @@
<sv label="服务类型">{{ i?.goodsResource?.serviceTypeLabel }}</sv>
<sv label="录单员">{{ i?.createUserName }} /{{ i?.createUserPhone }} </sv>
<sv label="调度员">{{ i?.goodsResource?.dispatchName }}/{{ i?.goodsResource?.dispatchPhone }} </sv>
<sv label="外部订单号">{{ i?.externalBillCode }}</sv>
<sv label="货源编号">{{ i?.goodsResource?.resourceCode }} </sv>
<sv label="运单号">{{ i?.wayBill?.wayBillCode }}</sv>
<sv label="承诺付款天数">{{ i?.goodsResource?.paymentDays }}</sv>
@ -248,7 +247,7 @@
</nz-tabset>
</nz-card>
<nz-modal [(nzVisible)]="isVisible" [nzFooter]="nzModalFooter" [nzTitle]="modalTitle" (nzOnOk)="handleOK()" (nzOnCancel)="handleCancel()">
<nz-modal [(nzVisible)]="isVisible" [nzFooter]="nzModalFooter" [nzTitle]="modalTitle" (nzOnOk)="handleOK()" nzWidth="1000px" (nzOnCancel)="handleCancel()">
<ng-container *nzModalContent>
<div *ngIf="!modalcontent">暂无附件信息</div>
<div [innerHTML]="modalcontent"></div>

View File

@ -35,7 +35,7 @@
<button nz-button nzType="primary" [nzLoading]="loading" (click)="search()" acl [acl-ability]="['ORDER-BULK-search']"
>查询</button
>
<button nz-button nzType="primary" [disabled]="loading">导出</button>
<button nz-button nzType="primary" [disabled]="loading" (click)="exprot()">导出</button>
<button nz-button [disabled]="loading" (click)="resetSF()">重置</button>
<button nz-button nzType="link" (click)="expandToggle()">
{{ !_$expand ? '展开' : '收起' }}

View File

@ -88,6 +88,8 @@ export class OrderManagementBulkComponent implements OnInit {
}
const params: any = Object.assign({}, this.sf?.value || {});
delete params._$expand;
console.log(params);
if (this.sf) {
Object.assign(requestOptions.body, {
...a,
@ -467,10 +469,10 @@ export class OrderManagementBulkComponent implements OnInit {
width: '180px',
className: 'text-left',
format: (item: any) =>
`${item.goodsName}/
${item.goodsWeight || '0'}吨/
${item.goodsVolume || '0'}方/
${item.goodsNumber || '0'}`
`${item?.goodsName}/
${item?.weight || '0'}吨/
${item?.volume || '0'}方/
${item?.goodsNumber || '0'}`
},
{
title: '运费单价',
@ -847,4 +849,12 @@ export class OrderManagementBulkComponent implements OnInit {
}
});
}
// 导出
exprot() {
this.service.request(this.service.$api_get_asyncExportBulkList, this.reqParams).subscribe((res: any) => {
if (res) {
this.service.msgSrv.success('导出成功,请去下载中心下载!');
}
});
}
}

View File

@ -133,7 +133,7 @@ export class OrderManagementRiskComponent implements OnInit {
type: 'string',
title: '订单号',
ui: {
placeholder: '最多100个单号空号隔开'
placeholder: '请输入订单号'
}
},
resourceCode: {
@ -334,12 +334,13 @@ export class OrderManagementRiskComponent implements OnInit {
{
text: '审核',
click: _record => this.audit(_record),
iif: item => item.auditStatus == '1' ,
iif: item => item.representationsStatus == '2' ,
acl: { ability: ['ORDER-RISK-audit'] },
},
{
text: '详情',
click: _record => this.viewEvaluate(_record),
iif: item => item.representationsStatus !== '1' ,
acl: { ability: ['ORDER-RISK-riskDetail'] },
}
]

View File

@ -333,7 +333,7 @@
</ng-template>
</div>
</nz-card>
<nz-modal [(nzVisible)]="isVisible" [nzFooter]="nzModalFooter" [nzTitle]="modalTitle" (nzOnOk)="handleOK()" (nzOnCancel)="handleCancel()">
<nz-modal [(nzVisible)]="isVisible" nzWidth="1000px" [nzFooter]="nzModalFooter" [nzTitle]="modalTitle" (nzOnOk)="handleOK()" (nzOnCancel)="handleCancel()">
<ng-container *nzModalContent>
<div *ngIf="!modalcontent">暂无附件信息</div>
<div [innerHTML]="modalcontent"></div>

View File

@ -4,7 +4,7 @@
* @Author : Shiming
* @Date : 2021-12-28 14:42:03
* @LastEditors : Shiming
* @LastEditTime : 2022-03-21 14:43:57
* @LastEditTime : 2022-03-28 20:31:30
* @FilePath : \\tms-obc-web\\src\\app\\routes\\order-management\\components\\vehicle-detail\\vehicle-detail.component.html
* Copyright (C) 2022 huzhenhong. All rights reserved.
-->
@ -47,7 +47,7 @@
<sv label="调度员">{{ i?.goodsResource?.dispatchName }}/{{ i?.goodsResource?.dispatchPhone }} </sv>
<sv label="外部订单号">{{ i?.externalBillCode }}</sv>
<sv label="货源编号">{{ i?.goodsResource?.resourceCode }} </sv>
<sv label="运单号">{{ i?.wayBillId }}</sv>
<sv label="运单号">{{ i?.wayBill?.wayBillCode }}</sv>
<sv label="承诺付款天数">{{ i?.goodsResource?.paymentDays }}</sv>
</div>
@ -230,7 +230,7 @@
</div>
</nz-card>
<nz-modal [(nzVisible)]="isVisible" [nzFooter]="nzModalFooter" [nzTitle]="modalTitle" (nzOnOk)="handleOK()" (nzOnCancel)="handleCancel()">
<nz-modal [(nzVisible)]="isVisible" nzWidth="1000px" [nzFooter]="nzModalFooter" [nzTitle]="modalTitle" (nzOnOk)="handleOK()" (nzOnCancel)="handleCancel()">
<ng-container *nzModalContent>
<div *ngIf="!modalcontent">暂无附件信息</div>
<div [innerHTML]="modalcontent"></div>

View File

@ -4,7 +4,7 @@
* @Author : Shiming
* @Date : 2022-01-12 10:52:50
* @LastEditors : Shiming
* @LastEditTime : 2022-03-23 10:28:41
* @LastEditTime : 2022-03-28 11:10:20
* @FilePath : \\tms-obc-web\\src\\app\\routes\\order-management\\components\\vehicle\\vehicle.component.html
* Copyright (C) 2022 huzhenhong. All rights reserved.
-->
@ -209,7 +209,7 @@
[acl-ability]="['ORDER-VEHICLE-batchSignWholeOrder']">
批量签收
</button>
<button nz-button nzType="primary" [disabled]="loading">导出</button>
<button nz-button nzType="primary" [disabled]="loading" (click)="exprot()">导出</button>
<button nz-button nzType="primary" (click)="visible=true;" class="mr-sm">筛选</button>
</div>
</ng-template>

View File

@ -29,6 +29,7 @@ export class OrderManagementVehicleComponent extends BasicTableComponent impleme
isVisibleEvaluate = false;
isVisible = false;
loading: boolean = true;
paramsList: any;
changeId: any; // 主页面查看运费变更记录id - 用于运费变更记录
changeViewId: any; // 查看运费变更记录id - 用于查看
ViewCause: any; // 变更运费查看数据
@ -97,36 +98,25 @@ export class OrderManagementVehicleComponent extends BasicTableComponent impleme
if (this.resourceStatus) {
a.billStatus = this.resourceStatus;
}
const params: any = Object.assign({}, this.sf?.value || {});
const params: any = Object.assign({}, this.sf?.value || this.paramsList);
delete params._$expand;
return {
...a,
...params,
createTime: {
start: this.sf?.value?.createTime?.[0] || '',
end: this.sf?.value?.createTime?.[1] || ''
}
};
}
beforeReq = (requestOptions: STRequestOptions) => {
const a: any = {};
if (this.resourceStatus) {
a.billStatus = this.resourceStatus;
Object.assign(requestOptions.body, {
...a
});
}
const params: any = Object.assign({}, this.sf?.value || {});
const params: any = Object.assign({}, this.sf?.value || this.paramsList);
delete params._$expand;
if (this.sf) {
this.paramsList = params
Object.assign(requestOptions.body, {
...params,
createTime: {
start: this.sf?.value?.createTime?.[0] || '',
end: this.sf?.value?.createTime?.[1] || ''
}
...a,
...this.paramsList,
});
}
this.loading = true;
return requestOptions;
};
@ -282,14 +272,19 @@ export class OrderManagementVehicleComponent extends BasicTableComponent impleme
containsAllLable: true
} as SFSelectWidgetSchema
},
// createTime: {
// title: '创建时间',
// type: 'string',
// ui: {
// widget: 'date',
// mode: 'range',
// format: 'yyyy-MM-dd'
// } as SFDateWidgetSchema
// },
createTime: {
title: '创建时间',
type: 'string',
ui: {
widget: 'date',
mode: 'range',
format: 'yyyy-MM-dd'
} as SFDateWidgetSchema
title: '创建时间',
ui: { widget: 'sl-from-to', type: 'date', format: 'yyyy-MM-dd' } as SFDateWidgetSchema,
},
riskStatus: {
type: 'string',
@ -578,7 +573,7 @@ export class OrderManagementVehicleComponent extends BasicTableComponent impleme
this.resourceStatus = e;
this.initST();
setTimeout(() => {
this.st.load(1);
this.st.load();
}, 500);
}
/**
@ -862,4 +857,12 @@ export class OrderManagementVehicleComponent extends BasicTableComponent impleme
}
});
}
// 导出
exprot() {
this.service.request(this.service.$api_get_asyncExportWholeList, this.reqParams).subscribe((res: any) => {
if (res) {
this.service.msgSrv.success('导出成功,请去下载中心下载!');
}
});
}
}

View File

@ -4,7 +4,7 @@
* @Author : Shiming
* @Date : 2021-12-03 15:31:52
* @LastEditors : Shiming
* @LastEditTime : 2022-03-25 15:27:40
* @LastEditTime : 2022-03-28 11:07:48
* @FilePath : \\tms-obc-web\\src\\app\\routes\\order-management\\services\\order-management.service.ts
* Copyright (C) 2022 huzhenhong. All rights reserved.
*/
@ -176,6 +176,12 @@ export class OrderManagementService extends ShipperBaseService {
$api_get_getAppDriverPosition = `/api/sdc/billShipper/getAppDriverPosition`;
// 查看申述记录
$api_get_getOrderComplaintDetail = `/api/sdc/billOperate/getOrderComplaintDetail`;
// 异步导出运营后台大宗订单列表
$api_get_asyncExportBulkList = `/api/sdc/billOperate/asyncExportBulkList`;
// 异步导出运营后台整车订单列表
$api_get_asyncExportWholeList = `/api/sdc/billOperate/asyncExportWholeList`;
/**
* 根据企业ID获取企业历史网络货运人
* @returns

View File

@ -2,7 +2,6 @@ import { Component, OnInit } from '@angular/core';
import { ActivatedRoute } from '@angular/router';
import { FreightAccountService } from 'src/app/routes/financial-management/services/freight-account.service';
@Component({
selector: 'app-partner-account-management-withdrawals-detail',
templateUrl: './withdrawals-detail.component.html',
@ -18,7 +17,7 @@ export class PartnerAccountManagementWithdralDetailComponent implements OnInit {
this.loadRefundDetail(id);
}
ngOnInit(): void { }
ngOnInit(): void {}
loadRefundDetail(id: string) {
this.service.request(this.service.$api_get_refund_detail, { id }).subscribe(res => {
@ -77,7 +76,8 @@ export class PartnerAccountManagementWithdralDetailComponent implements OnInit {
rmYll: this.formData.userId,
snglFlgCd: this.formData.coreSerNo,
bussType: '06',
ltdId: this.formData.ltdId
ltdId: this.formData.ltdId,
accountType: this.formData.accountType
});
}

View File

@ -311,7 +311,8 @@ export class PartnerAccountManagementWithdrawalsRecordComponent implements OnIni
rmYll: item.userId,
snglFlgCd: item.coreSerNo,
bussType: '06',
ltdId: item.ltdId
ltdId: item.ltdId,
accountType: item.accountType
})
},
{

View File

@ -1,4 +1,4 @@
<sf #sf [ui]="ui" [schema]="schema" [button]="'none'" [formData]="i">
<sf #sf [ui]="ui" [schema]="schema" [button]="'none'" [formData]="record">
</sf>
<div *nzModalFooter>

View File

@ -17,7 +17,8 @@ export class ParterChannelSalesEditComponent implements OnInit {
ui!: SFUISchema;
i: any;
type: any;
record:any;
currentOAItem:any;
constructor(
public http: _HttpClient,
private cdr: ChangeDetectorRef,
@ -28,7 +29,14 @@ export class ParterChannelSalesEditComponent implements OnInit {
) {}
ngOnInit(): void {
this.initSF();
this.service.request(this.service.$api_getChannelSalesInfo, {id:this.i?.id}).subscribe(res => {
if(res){
this.record = res;
}
this.initSF();
});
}
initSF() {
this.schema = {
@ -62,10 +70,14 @@ export class ParterChannelSalesEditComponent implements OnInit {
placeholder:'请选择',
asyncData: (input:string) => this.service.request(this.service.$api_fuzzyQuery,{name:input}).pipe(
map((res: any) => {
console.log('111',res)
return [];
return res.map((item:any)=>{
return {label: item.empName+"/"+item.empNo, value: item.empNo, obj: item}
})
})
)
),
change:(item:any, org:any)=>{
this.currentOAItem = org.obj;
}
} as SFAutoCompleteWidgetSchema,
},
isAuthorization: {
@ -89,7 +101,6 @@ export class ParterChannelSalesEditComponent implements OnInit {
mode: 'multiple',
maxMultipleCount: 5,
asyncData: () => {
return this.service.request(this.service.$api_getAppRoleList).pipe(
map((res: any) => {
return res
@ -134,7 +145,7 @@ export class ParterChannelSalesEditComponent implements OnInit {
save() {
this.sf.validator({ emitError: true });
if(!this.sf.valid) return;
this.service.request(this.service.$api_save, { ...this.sf.value }).subscribe(res => {
this.service.request(this.service.$api_save, { ...this.sf.value, employeeVO: this.currentOAItem}).subscribe(res => {
if (res) {
this.modalRef.destroy(true);
} else {

View File

@ -98,10 +98,6 @@ export class ParterChannelSalesListComponent implements OnInit {
text: '编辑',
click: (_record, _modal, _instance) => this.edit(_record),
},
{
text: '查看',
click: (_record, _modal, _instance) => this.view(_record),
},
{
text: '冻结',
click: (_record, _modal, _instance) => this.stop(_record.id),
@ -116,7 +112,6 @@ export class ParterChannelSalesListComponent implements OnInit {
nzWidth:600,
nzTitle: '新增',
nzContent: ParterChannelSalesEditComponent,
nzComponentParams: { type: this.spuStatus }
});
modalRef.afterClose.subscribe(res => {
if (res) {
@ -131,7 +126,7 @@ export class ParterChannelSalesListComponent implements OnInit {
nzWidth:600,
nzTitle: '编辑',
nzContent: ParterChannelSalesEditComponent,
nzComponentParams: { i: record, type: this.spuStatus }
nzComponentParams: { i: record }
});
modalRef.afterClose.subscribe(res => {
if (res) {
@ -140,14 +135,7 @@ export class ParterChannelSalesListComponent implements OnInit {
});
}
// 编辑
view(record: STData) {
const modalRef = this.modalService.create({
nzTitle: '查看',
nzContent: ParterChannelSalesEditComponent,
nzComponentParams: { i: record }
});
}
stop(id: any) {
this.modalService.confirm({

View File

@ -15,6 +15,10 @@ export class ChannelSalesService extends BaseService {
$api_fuzzyQuery = '/api/mdc/channelSalesManagement/fuzzyQuery';
// 获取角色列表
$api_getAppRoleList = '/api/mdc/cuc/roleInfo/getRoleList';
// 获取渠道销售管理详情
$api_listChannelSalesManagement = '/api/mdc/channelSalesManagement/list/listChannelSalesManagement';
// 根据渠道销售id获取渠道信息
$api_getChannelSalesInfo = '/api/mdc/channelSalesManagement/getChannelSalesInfo';
constructor(public injector: Injector) {

View File

@ -61,6 +61,7 @@ import { BannerComponentsAddComponent } from './knowledge/banner/components/add/
import { PersonalPartnerDetailComponent } from './partner-list/components/personal-partner-detail/personal-partner-detail.component';
import { ParterAdviceFeedbackListComponent } from './advice-feedback/components/list/list.component';
import { ParterAdviceFeedbackDetailComponent } from './advice-feedback/components/feedback-detail/feedback-detail.component';
import { ParterRebateManageMentAddPartnerListComponent } from './rebate-management/components/rebate-setting/add-partnerlist/add-partnerlist.component';
const COMPONENTS: any[] = [
PartnerBusinessStatisticsIndexComponent,
@ -111,7 +112,8 @@ const COMPONENTS: any[] = [
BannerComponentsAddComponent,
PersonalPartnerDetailComponent,
ParterAdviceFeedbackListComponent,
ParterAdviceFeedbackDetailComponent
ParterAdviceFeedbackDetailComponent,
ParterRebateManageMentAddPartnerListComponent
];
@NgModule({

View File

@ -0,0 +1,30 @@
<!--
* @Description :
* @Version : 1.0
* @Author : Shiming
* @Date : 2022-03-28 14:53:52
* @LastEditors : Shiming
* @LastEditTime : 2022-03-28 17:03:21
* @FilePath : \\tms-obc-web\\src\\app\\routes\\partner\\rebate-management\\components\\rebate-setting\\add-partnerlist\\add-partnerlist.component.html
* Copyright (C) 2022 huzhenhong. All rights reserved.
-->
<nz-card>
<div nz-row nzGutter="8">
<!-- 查询字段小于或等于3个时不显示伸缩按钮 -->
<div nz-col nzSpan="24" >
<sf #sf [schema]="schema" [ui]="ui" [mode]="'search'" [disabled]="!sf?.valid" [loading]="false"
(formSubmit)="search()" (formReset)="resetSF()"></sf>
</div>
</div>
</nz-card>
<nz-card class="content-box">
<st #st [data]="service.$api_get_partner_page " [columns]="columns"
[req]="{ method: 'POST', 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] }" [loading]="false"
[scroll]="{ x: '1000' }">
</st>
<button *ngIf="selectedIndex===0" (click)="batchReply()" nz-button nzType="primary" acl
[acl-ability]="['AbnormalAppear-batchReply']">批量回复</button>
</nz-card>

View File

@ -0,0 +1,20 @@
:host::ng-deep{
.search-box{
.ant-card-body{
padding-bottom: 18px;
}
}
.content-box{
.ant-card-body{
padding-top: 14px;
}
}
.imgBox {
display: flex;
img {
width: 60px !important;
}
}
}

View File

@ -0,0 +1,141 @@
import { Component, OnInit, ViewChild, Type } from '@angular/core';
import { STComponent, STColumn, STChange } from '@delon/abc/st';
import {
SFComponent,
SFDateWidgetSchema,
SFRadioWidgetSchema,
SFSchema,
SFSchemaEnum,
SFSelectWidgetSchema,
SFUISchema
} from '@delon/form';
import { ShipperBaseService } from '@shared';
import { NzModalService, NzModalRef } from 'ng-zorro-antd/modal';
import { of } from 'rxjs';
import { map } from 'rxjs/operators';
import { RebateManagementService } from '../../../services/rebate-management.service';
@Component({
selector: 'app-add-partnerlist',
templateUrl: './add-partnerlist.component.html',
styleUrls: ['./add-partnerlist.component.less']
})
export class ParterRebateManageMentAddPartnerListComponent implements OnInit {
@ViewChild('st', { static: true })
st!: STComponent;
@ViewChild('sf', { static: false }) sf!: SFComponent;
ui: SFUISchema = {};
i: any;
schema: SFSchema = {};
addSchema: SFSchema = {};
_$expand = false;
editText = '';
formData: any;
isVisible = false;
edit = false;
editId = false;
selectedIndex = 0;
columns: STColumn[] = [
{ title: '', type: 'checkbox', width: '50px', className: 'text-center' },
{
title: '合伙人名称',
index: 'enterpriseName',
width: 180,
format: item => (item.partnerType ? `${item.enterpriseName || item.contactName}` : '')
},
{ title: '联系人', index: 'contactName', width: 150, format: item => (item.partnerType ? `${item.contactName}` : '') },
{ title: '手机号', index: 'contactMobile', className: 'text-center', width: 150 },
{ title: '类型', index: 'partnerType', className: 'text-center', width: 130, type: 'enum', enum: { 1: '企业', 2: '个人' } },
{
title: '操作',
width: '90px',
fixed: 'right',
buttons: [
{
text: '添加',
click: _record => this.add(_record),
acl: { ability: ['AbnormalAppear-reply'] }
}
]
}
];
get reqParams() {
// signStatus固定传20 代表签约完成 signStatus: 20
let params: any = { ...this.sf?.value, };
return params;
}
get selectedRows() {
return this.st?.list.filter(item => item.checked) || [];
}
constructor(
public service: RebateManagementService,
public shipperSrv: ShipperBaseService,
private modal: NzModalService,
private modals: NzModalRef
) {}
ngOnInit(): void {
this.initSF();
}
initSF() {
this.schema = {
properties: {
enterpriseName: {
type: 'string',
title: '合伙人名称'
},
partnerType: {
type: 'string',
title: '类型',
enum: [
{ value: '', label: '全部' },
{ value: 1, label: '企业' },
{ value: 2, label: '个人' }
],
ui: {
widget: 'select',
placeholder: '请选择',
visibleIf: {
expand: (value: boolean) => value
}
},
default: ''
}
}
};
this.ui = { '*': { spanLabelFixed: 110, grid: { span: 8, gutter: 4 } } };
}
search() {
this.st?.load(1);
}
selectedIndexChange(event: any) {
if (this.selectedIndex === 0) {
this.st?.load(1);
}
}
/**
* 重置表单
*/
resetSF() {
this.sf.reset();
}
// 回复操作
add(item: any) {
console.log(item);
this.modals.destroy(item);
}
// 批量回复操作
batchReply() {
// if (this.selectedRows.length === 0) {
// this.service.msgSrv.warning('请勾选数据!')
// return;
// }
this.modals.destroy(this.selectedRows);
}
}

View File

@ -4,7 +4,7 @@
* @Author : Shiming
* @Date : 2022-02-24 20:09:49
* @LastEditors : Shiming
* @LastEditTime : 2022-03-21 13:53:31
* @LastEditTime : 2022-03-29 10:47:02
* @FilePath : \\tms-obc-web\\src\\app\\routes\\partner\\rebate-management\\components\\rebate-setting\\add\\add.component.html
* Copyright (C) 2022 huzhenhong. All rights reserved.
-->
@ -14,41 +14,57 @@
<!-- 数据列表 -->
<sv-container col="1">
&nbsp;&nbsp;<sv label="配置名称"> <input style="max-width: 400px;" nz-input placeholder="请输入" [(ngModel)]="setValue" /></sv>
&nbsp;&nbsp;<sv label="配置名称"> <input style="max-width: 400px;" nz-input placeholder="请输入" [(ngModel)]="configName" /></sv>
<sv-title>固定结算费率配置</sv-title>
&nbsp;&nbsp;<sv label="固定结算费率"> <nz-input-number [(ngModel)]="toFixedValue" [nzPrecision]="precision" nzPlaceHolder="请输入"></nz-input-number>&nbsp;%</sv>
&nbsp;&nbsp;<sv label="固定结算费率"> <nz-input-number [(ngModel)]="accountingRate" [nzPrecision]="precision" nzPlaceHolder="请输入"></nz-input-number>&nbsp;%</sv>
<sv-title>业务量和管理费比例配置</sv-title>
&nbsp;&nbsp;<sv label="选择配置类型">
<nz-radio-group [(ngModel)]="radioValue">
<label nz-radio nzValue="A">按全部等级配置</label>
<label nz-radio nzValue="B">按不同等级配置</label>
<nz-radio-group [(ngModel)]="configType">
<label nz-radio nzValue="1">按全部等级配置</label>
<label nz-radio nzValue="2">按不同等级配置</label>
</nz-radio-group>
</sv>
<sv col="1">
&nbsp;&nbsp;<app-rebate-table></app-rebate-table>
&nbsp;&nbsp;
<app-rebate-table #table [(data)]='tabelData'></app-rebate-table>
</sv>
<sv-title>关联合伙人配置</sv-title>
&nbsp;&nbsp;<sv label="合伙人选择">
<nz-select ngModel="lucy" style="max-width: 400px; min-width: 200px;">
<nz-option nzValue="jack" nzLabel="Jack"></nz-option>
<nz-option nzValue="lucy" nzLabel="Lucy"></nz-option>
<nz-select [(ngModel)]="partnerType" style="max-width: 400px; min-width: 200px;">
<nz-option nzValue="1" nzLabel="全部合伙人"></nz-option>
<nz-option nzValue="2" nzLabel="新注册合伙人"></nz-option>
<nz-option nzValue="3" nzLabel="自定义合伙人"></nz-option>
</nz-select>
&nbsp;&nbsp;<span >添加</span>
&nbsp;&nbsp;<span style="color: #0000FF;" (click)="add()">添加</span>
<st *ngIf="partnerPeopleList?.length > 0" #st [data]="partnerPeopleList" [columns]="columns"
[req]="{ method: 'POST', allInBody: true, reName: { pi: 'pageIndex', ps: 'pageSize' } }"
[res]="{ reName: { list: 'data.records', total: 'data.total' } }"
[page]="{ show: true, showSize: true, pageSizes: [10, 20, 30, 50, 100] }" [loading]="false"
[scroll]="{ x: '1000' }">
</st>
</sv>
&nbsp;&nbsp;<sv label="优先级" col="1">
<nz-select ngModel="lucy" style="max-width: 400px; min-width: 200px;">
<nz-option nzValue="jack" nzLabel="Jack"></nz-option>
<nz-option nzValue="lucy" nzLabel="Lucy"></nz-option>
<nz-select [(ngModel)]="priority" style="max-width: 400px; min-width: 200px;">
<nz-option nzValue=1 nzLabel="1">1</nz-option>
<nz-option nzValue=2 nzLabel="2">2</nz-option>
<nz-option nzValue=3 nzLabel="3">3</nz-option>
<nz-option nzValue=4 nzLabel="4">4</nz-option>
<nz-option nzValue=5 nzLabel="5">5</nz-option>
</nz-select>
</sv>
&nbsp;&nbsp;<sv label="规则说明" col="1">
<sf #sf mode="edit" [schema]="schema1" [ui]="{ '*': { spanLabelFixed: 10, grid: { span: 16 }} }"
button="none"> </sf>
</sv>
&nbsp;&nbsp;<sv label="规则说明" col="1">
<textarea style="max-width: 400px; min-width: 200px;" rows="4" nz-input [(ngModel)]="inputValue"></textarea>
&nbsp;&nbsp;<sv label="备注" col="1">
<textarea style="max-width: 400px; min-width: 200px;" rows="4" nz-input [(ngModel)]="remarke"></textarea>
</sv>
</sv-container>
<div class="align-center" style="margin-top: 15px;">
<button nz-button nzType="primary" (click)="goBack()">取消</button>
<button nz-button nzType="primary" style="margin-left: 48px" (click)="save()"
acl [acl-ability]="['SUPPLY-VEHICLE-AMEND-submitChange']">提交</button
>
</div>
</div>
</nz-card>

View File

@ -7,4 +7,10 @@
font-weight: 700;
}
}
.align-center {
display: flex;
align-items: center;
justify-content: center;
}
}

View File

@ -4,7 +4,7 @@
* @Author : Shiming
* @Date : 2022-03-21 09:26:45
* @LastEditors : Shiming
* @LastEditTime : 2022-03-21 13:44:34
* @LastEditTime : 2022-03-29 10:53:39
* @FilePath : \\tms-obc-web\\src\\app\\routes\\partner\\rebate-management\\components\\rebate-setting\\add\\add.component.ts
* Copyright (C) 2022 huzhenhong. All rights reserved.
*/
@ -16,17 +16,28 @@ import { SFComponent, SFDateWidgetSchema, SFSchema, SFUISchema } from '@delon/fo
import { processSingleSort, ShipperBaseService } from '@shared';
import { NzModalService } from 'ng-zorro-antd/modal';
import { RebateManagementService } from '../../../services/rebate-management.service';
import { ParterRebateManageMentAddPartnerListComponent } from '../add-partnerlist/add-partnerlist.component';
import { inRange } from '@delon/util';
@Component({
selector: 'app-parter-channel-rebate-management-add',
styleUrls: ['./add.component.less'],
templateUrl: './add.component.html'
})
export class ParterRebateManageMentAddComponent implements OnInit {
setValue: string = '';
toFixedValue: Number = 2;
radioValue = 'A';
@ViewChild('table') table!: any;
tabelData: any;
configName: string = '';
partnerType: string = '';
remarke: string = '';
accountingRate: Number = 0;
priority: string = '';
partnerPeopleList: any;
configType = '1';
precision = 2;
inputValue= '';
partnerId :Array<string> =[];
inputValue = '';
@ViewChild('st', { static: true })
st!: STComponent;
@ViewChild('sf', { static: false }) sf!: SFComponent;
schema1!: SFSchema;
constructor(
@ -34,12 +45,33 @@ export class ParterRebateManageMentAddComponent implements OnInit {
public ar: ActivatedRoute,
public service: RebateManagementService,
private modal: NzModalService,
public shipperservice: ShipperBaseService,
public shipperservice: ShipperBaseService
) {}
columns: STColumn[] = [
{
title: '合伙人名称',
index: 'enterpriseName',
width: 180,
format: item => (item.partnerType ? `${item.enterpriseName || item.contactName}` : '')
},
{ title: '联系人', index: 'contactName', width: 150, format: item => (item.partnerType ? `${item.contactName}` : '') },
{ title: '手机号', index: 'contactMobile', className: 'text-center', width: 150 },
{ title: '类型', index: 'partnerType', className: 'text-center', width: 130, type: 'enum', enum: { 1: '企业', 2: '个人' } },
{
title: '操作', width: '90px', fixed: 'right',
buttons: [
{
text: '移除',
click: _record => this.delete(_record),
acl: { ability: ['AbnormalAppear-reply'] }
},
]
},
];
initSF(data?: any) {
this.schema1 = {
properties: {
content: {
ruleDescription: {
type: 'string',
title: '',
ui: {
@ -49,12 +81,69 @@ export class ParterRebateManageMentAddComponent implements OnInit {
height: 650
}
},
default: data?.agreementContent || ''
// default: data?.agreementContent || ''
}
}
};
}
ngOnInit() {
this.initSF()
this.initSF();
}
goBack() {
window.history.go(-1);
}
/**
*合伙人选择
*/
add(item?: any) {
const modalRef = this.modal.create({
nzTitle: '合伙人选择',
nzWidth: 1000,
nzContent: ParterRebateManageMentAddPartnerListComponent,
nzComponentParams: {
i: item,
},
nzFooter: null
});
modalRef.afterClose.subscribe((res: any) => {
this.partnerId = [];
if (res) {
console.log(Array.isArray(res));
console.log(res);
if(Array.isArray(res)) {
this.partnerPeopleList = res;
res.forEach((ele: any) => {
this.partnerId.push(ele?.id);
})
} else {
this.partnerPeopleList = [res];
this.partnerId.push(res?.id);
}
}
});
}
delete(item: any) {
console.log(item);
}
save () {
const params = {
accountingRate: this.accountingRate,
configName: this.configName,
configType: this.configType,
rebateConfigLineDTO: this.table.data,
priority: this.priority,// 优先级
partnerId: this.partnerId.join(','),
ruleDescription: this.sf.value.ruleDescription,
remarke: this.remarke,
partnerType: this.partnerType
}
console.log(params);
this.service.request(this.service.$api_save_rebateConfig, params).subscribe((res: any) => {
if(res) {
console.log(res);
this.service.msgSrv.success('新增成功!')
this.router.navigate(['/partner/rebate/setting'])
}
})
}
}

View File

@ -4,7 +4,7 @@
* @Author : Shiming
* @Date : 2022-02-24 20:09:49
* @LastEditors : Shiming
* @LastEditTime : 2022-03-22 14:42:27
* @LastEditTime : 2022-03-29 10:51:52
* @FilePath : \\tms-obc-web\\src\\app\\routes\\partner\\rebate-management\\components\\rebate-setting\\rebate-setting.component.html
* Copyright (C) 2022 huzhenhong. All rights reserved.
-->
@ -47,8 +47,17 @@
[loadingDelay]="500"
[loading]="service.http.loading"
>
<ng-template st-row='name44' let-item let-index='index'>
<div style="color: #f59a23;" (click)="feedback()">1223</div>
<ng-template st-row='configType' let-item let-index='index'>
<div *ngIf="item.configType == 1">按全部等级配置</div>
<div *ngIf="item.configType == 2">按不同等级配置</div>
</ng-template>
<ng-template st-row='partnerType' let-item let-index='index'>
<div *ngIf="item.partnerType == 1">全部合伙人</div>
<div *ngIf="item.partnerType == 2">新注册合伙人</div>
<div *ngIf="item.partnerType == 3">自定义合伙人</div>
</ng-template>
<ng-template st-row='stateLocked' let-item let-index='index'>
<div >{{item?.stateLocked ? '启用' : '禁用'}}</div>
</ng-template>
</st>
</nz-card>

View File

@ -69,12 +69,12 @@ export class ParterRebateManageMentSettingComponent implements OnInit {
_$expand: { type: 'boolean', ui: { hidden: true } },
month: {
type: 'string',
title: '时间月份',
format: 'month',
title: '配置名称',
format: 'configName',
},
partnerId: {
stateLocked: {
type: 'string',
title: '合伙人名称'
title: '状态'
},
}
};
@ -89,12 +89,12 @@ export class ParterRebateManageMentSettingComponent implements OnInit {
initST() {
this.columns = [
{
title: '月份',
index: '配置名称'
title: '配置名称',
index: 'configName'
},
{
title: '配置类型',
index: 'configType'
render: 'configType'
},
{
title: '备注',
@ -102,7 +102,7 @@ export class ParterRebateManageMentSettingComponent implements OnInit {
},
{
title: '关联合伙人范围',
index: 'partnerType'
render: 'partnerType'
},
{
title: '创建时间',
@ -118,7 +118,7 @@ export class ParterRebateManageMentSettingComponent implements OnInit {
},
{
title: '状态',
index: 'stateLocked'
render: 'stateLocked'
},
{
title: '操作',
@ -132,6 +132,12 @@ export class ParterRebateManageMentSettingComponent implements OnInit {
},
{
text: '禁用',
iif: (_record) =>{ return _record.stateLocked == true},
click: _record => this.viewEvaluate(_record),
},
{
text: '启用',
iif: (_record) =>{ return _record.stateLocked == false},
click: _record => this.viewEvaluate(_record),
},
]
@ -142,10 +148,29 @@ export class ParterRebateManageMentSettingComponent implements OnInit {
*禁用
*/
viewEvaluate(item: any) {
console.log(item.stateLocked);
let title = ''
let stateLocked: boolean;
if(item.stateLocked) {
title = '是否禁用该配置?'
stateLocked = false
} else {
title = '是否启用该配置?'
stateLocked = true
}
this.modal.confirm({
nzTitle: '是否禁用该配置?',
nzTitle: title,
nzOnOk: () => {
const params = {
id: item?.id,
stateLocked: stateLocked,
}
this.service.request(this.service.$api_set_updateRebateConfig,params).subscribe((res: any) => {
if(res) {
this.service.msgSrv.success('设置成功!')
this.st.reload();
}
})
}
});
}
@ -166,7 +191,7 @@ export class ParterRebateManageMentSettingComponent implements OnInit {
});
}
configAction() {
this.router.navigate(['/partner/rebate/setting/add', ''])
this.router.navigate(['/partner/rebate/setting/add/', 1])
}
/**
* 重置表单

View File

@ -19,6 +19,12 @@ export class RebateManagementService extends BaseService {
public $api_get_listCompliancePage = '/api/sdc/billRiskOperate/listRiskPage';
// 查询返佣配置表
public $api_get_rebateConfig = '/api/mdc/rebateConfig/list/page';
// 保存返佣配置表
public $api_save_rebateConfig = '/api/mdc/rebateConfig/save';
// 启用/禁用返佣配置
public $api_set_updateRebateConfig = '/api/mdc/rebateConfig/updateRebateConfig';
  // 查询合伙人信息-分页
public $api_get_partner_page = '/api/mdc/partner/list/page';
constructor(public injector: Injector) {
super(injector);
}

View File

@ -92,7 +92,7 @@ export class CarAddDriverComponent implements OnInit {
title: '',
ui: {
offsetControl: 6,
action: apiConf.fileUpload,
action: apiConf.waterFileUpload,
accept: 'image/png,image/jpeg,image/jpg,image/gif',
limit: 1,
limitFileCount: 1,
@ -108,6 +108,18 @@ export class CarAddDriverComponent implements OnInit {
listType: 'picture-card',
change: (args: any) => {
if (args.type === 'success') {
const avatar = [
{
uid: -1,
name: 'LOGO',
status: 'done',
url: args.file.response.data.fullFileWatermarkPath,
response: {
url: args.file.response.data.fullFileWatermarkPath,
},
},
];
this.sf?.setValue('/certificatePhotoFrontWatermark', avatar);
this.detailData.certificatePhotoFront = args.file.response.data.fullFilePath
this.checkIdCard(args.file.response.data.fullFilePath, 'front', 0);
} else {
@ -142,7 +154,7 @@ export class CarAddDriverComponent implements OnInit {
title: '',
ui: {
offsetControl: 6,
action: apiConf.fileUpload,
action: apiConf.waterFileUpload,
accept: 'image/png,image/jpeg,image/jpg,image/gif',
limit: 1,
limitFileCount: 1,
@ -158,6 +170,18 @@ export class CarAddDriverComponent implements OnInit {
listType: 'picture-card',
change: (args: any) => {
if (args.type === 'success') {
const avatar = [
{
uid: -1,
name: 'LOGO',
status: 'done',
url: args.file.response.data.fullFileWatermarkPath,
response: {
url: args.file.response.data.fullFileWatermarkPath,
},
},
];
this.sf?.setValue('/certificatePhotoBackWatermark', avatar);
this.detailData.certificatePhotoBack = args.file.response.data.fullFilePath
this.checkIdCard(args.file.response.data.fullFilePath, 'back', 0);
} else {

View File

@ -119,7 +119,15 @@ export class SupplyManagementVehicleAssignedCarComponent implements OnInit {
nzContent: '<b>该司机还未注册,是否邀请他注册?点击"是"系统将发送邀请短信给司机</b>',
nzOkText: '确定',
nzCancelText: '取消',
nzOnOk: () => console.log('OK')
nzOnOk: () => {
this.sendMsg(this.sf?.value?.nameOrPhone).subscribe((res => {
if (res.code === '1') {
this.service.msgSrv.success('发送成功');
} else {
this.service.msgSrv.success('发送失败');
}
}));
}
});
return [];
}
@ -256,5 +264,11 @@ export class SupplyManagementVehicleAssignedCarComponent implements OnInit {
});
}
/**
* 发送邀请司机注册短信
*/
sendMsg(phoneNumber: string) {
return this.service.request(this.service.$api_send_msg_code, phoneNumber)
}
}

View File

@ -246,7 +246,15 @@ export class PublishGoodsChooseFamifiarComponent implements OnInit {
nzContent: '<b>该司机还未注册,是否邀请他注册?点击"是"系统将发送邀请短信给司机</b>',
nzOkText: '确定',
nzCancelText: '取消',
nzOnOk: () => console.log('OK')
nzOnOk: () => {
this.sendMsg(this.sf?.value?.nameOrPhone).subscribe((res => {
if (res.code === '1') {
this.service.msgSrv.success('发送成功');
} else {
this.service.msgSrv.success('发送失败');
}
}));
}
});
return [];
}
@ -327,4 +335,11 @@ export class PublishGoodsChooseFamifiarComponent implements OnInit {
}
});
}
/**
* 发送邀请司机注册短信
*/
sendMsg(phoneNumber: string) {
return this.service.request(this.service.$api_send_msg_code, phoneNumber)
}
}

View File

@ -177,17 +177,15 @@ export class SupplyManagementVehicleComponent implements OnInit {
{
label: '下载失败数据',
type: 'primary',
loading: this.service.http.loading,
onClick: () => {
if(!result?.failNumber) {
this.service.msgSrv.error('没有失败数据!');
tipsModal.destroy();
return;
}
this.service.request(this.service.$api_getFailUploadGoodsOperateResource, result.ids).subscribe((res: any) => {
if(res) {
console.log(res);
}
})
console.log(111);
this.service.downloadFile(this.service.$api_getFailUploadGoodsOperateResource, result.ids)
tipsModal.destroy();
}
},
]

View File

@ -119,8 +119,8 @@ export class SupplyManagementService extends BaseService {
public $api_getContractContent = '/api/sdc/contractTemplate/getContractContent';
// 获取运价
public $api_getFreight = '/api/mdc/cuc/freightConfig/getFreight';
// 从业资格证
$api_recognizeQualificationCertificate = '/api/mdc/pbc/hwc/ocr/recognizeQualificationCertificate';
// 从业资格证
$api_recognizeQualificationCertificate = '/api/mdc/pbc/hwc/ocr/recognizeQualificationCertificate';
/**
* 获取车型、车长字典数据
* @returns
@ -177,6 +177,8 @@ export class SupplyManagementService extends BaseService {
$api_asyncExportWholeList = '/api/sdc/goodsResourceOperate/asyncExportWholeList';
// 根据货主ID查询合同签署属性
public $api_getContractAtr = '/api/mdc/cuc/enterpriseInfo/cargoOwner/getContractAtr';
// 发送邀请司机短信
$api_send_msg_code = `/api/mdc/pbc/smsSend/sendInviteDriver`;
getDictByKey(dictKey: string) {
const params = { dictKey: dictKey };

View File

@ -205,6 +205,10 @@ export class CancellationInvoiceComponent implements OnInit {
});
}
downLoadDetail(item: any) {
this.service.exportStart({ id: item.id }, this.service.$api_export_invoic_detail);
}
/**
* 推送发票
* @param item
@ -387,6 +391,11 @@ export class CancellationInvoiceComponent implements OnInit {
queryParams: { type: 1, expressno: item.expressno, ltdId: item.shipperId }
})
},
{
text: '销货清单<br>',
iif: item => item.isdetail,
click: item => this.downLoadDetail(item)
},
{
text: '手工开票<br>',
iif: item => item.sts != '3',

View File

@ -34,11 +34,11 @@ export class ExpressDetailModalComponent implements OnInit {
},
{
title: '金额',
index: 'vatnotax',
index: 'vatmoney',
width: 90,
type: 'widget',
className: 'text-right',
widget: { type: 'currency-chy', params: ({ record }) => ({ value: record.vatnotax }) }
widget: { type: 'currency-chy', params: ({ record }) => ({ value: record.vatmoney }) }
},
{
title: '税率',
@ -53,7 +53,7 @@ export class ExpressDetailModalComponent implements OnInit {
width: 90,
type: 'widget',
className: 'text-right',
widget: { type: 'currency-chy', params: ({ record }) => ({ value: record.vatnotax }) }
widget: { type: 'currency-chy', params: ({ record }) => ({ value: record.vattax }) }
},
{ title: '开票日期', index: 'invoicedate', type: 'date', width: 150, className: 'text-center' }
];

View File

@ -154,13 +154,13 @@ export class InvoiceDetailComponent implements OnInit {
{ title: '卸货地', index: 'loadingto', width: 220 },
{ title: '货物信息', index: 'goodsinfo', width: 140 },
{ title: '承运司机', index: 'driverinfo', width: 280 },
{
title: '税额',
index: 'billvatrate',
width: 120,
className: 'text-right',
format: item => `${item.billvatrate ? ((item.billvatrate as number) * 100).toFixed(2) : 0}%`
},
// {
// title: '税额',
// index: 'billvatrate',
// width: 120,
// className: 'text-right',
// format: item => `${item.billvatrate ? ((item.billvatrate as number) * 100).toFixed(2) : 0}%`
// },
{
title: '申请金额',
index: 'billkpnotax',

View File

@ -55,6 +55,8 @@ export class InvoiceRequestedComponent {
};
afterRes = (data: any[], rawData?: any) => {
this.totalCallNo = 0;
this.selectedRows = [];
return data.map(item => ({
...item,
disabled: item.expressHSts
@ -436,7 +438,10 @@ export class InvoiceRequestedComponent {
width: 150,
type: 'widget',
className: 'text-right',
widget: { type: 'currency-chy', params: ({ record }) => ({ value: record.invoicedMoney }) }
widget: {
type: 'currency-chy',
params: ({ record }) => ({ value: record.invoicedMoney })
}
},
{ title: '开户行', index: 'bankName', width: 160 },
{ title: '银行账户', index: 'bankAccount', width: 140 },

View File

@ -47,6 +47,8 @@ export class RequestedInvoiceModalComponent {
if (res) {
this.service.msgSrv.success('移除成功');
this.modal.destroy(true);
} else {
this.service.msgSrv.warning('移除失败');
}
});
}

View File

@ -46,6 +46,8 @@ export class TicketService extends ShipperBaseService {
$api_batch_push_invoic = '/api/fcc/ficoVatinvH/crmPushInvoBath';
// 发票作废
$api_cancel_invoic = '/api/fcc/ficoVatinvH/inpinvHCancel';
// 运营端销票处理导出销售清单
$api_export_invoic_detail = '/api/fcc/ficoVatinvH/reportVatinvHByOperator';
// 获取汇总下单路径
$api_get_order_summary_path = '/api/fcc/ficoExpressH/getSummaryOrderAddress';
@ -60,7 +62,7 @@ export class TicketService extends ShipperBaseService {
$api_get_invoice_page = '/api/fcc/ficoVatinvH/list/page';
// 更新快递信息
$api_update_Express= '/api/fcc/ficoVatinvH/updateExpress';
$api_update_Express = '/api/fcc/ficoVatinvH/updateExpress';
// 发票作废
$api_cancel_invoice = '/api/fcc/ficoVatinvH/inpinvHCancel';

View File

@ -23,12 +23,16 @@
</div>
</ng-template>
</sf>
<sf #sf1 [compact]="true" [ui]="ui" [schema]="schema1" [button]="'none'" *ngIf="schema1">
<sf #sf1 [compact]="true" [ui]="ui2" [schema]="schema1" [button]="'none'" *ngIf="schema1">
<ng-template sf-template="roadImg" let-me let-ui="ui" let-schema="schema">
<img height="104" src="/assets/images/drivercard.png" class="borderImg" />
</ng-template>
</sf>
<sf #sf2 [compact]="true" [ui]="ui" [schema]="schema2" [button]="'none'" *ngIf="schema2">
<sf #sf2 [compact]="true" [ui]="ui3" [schema]="schema2" [button]="'none'" *ngIf="schema2">
<ng-template sf-template="agreeImg" let-me let-ui="ui" let-schema="schema">
<img height="104" src="/assets/images/jopcard.png" class="borderImg" />
</ng-template>
</sf>
<img class="drivercard" height="104" src="/assets/images/drivercard.png" />
<img class="jopcard" height="104" src="/assets/images/jopcard.png" />
<!-- <div class="example" (click)="showExample()">
查看示例
<div class="popBox" *ngIf="showCardFlag">

View File

@ -29,13 +29,13 @@
}
.drivercard{
position: absolute;
top: 50%;
top: 710px;
left: 330px;
border: solid 1px #ebf0fb;
}
.jopcard{
position: absolute;
top: 79%;
top: 1115px;
left: 330px;
border: solid 1px #ebf0fb;
}
@ -47,5 +47,11 @@
color: black;
resize:none;
}
.setCustom .ant-form-item-control{
margin-left: -100px !important
}
.borderImg{
border: solid 1px #ebf0fb;
}
}
}

View File

@ -22,6 +22,8 @@ export class CarSettleAddDriverComponent implements OnInit {
record: any = {};
i: any;
ui: SFUISchema = {};
ui2: SFUISchema = {};
ui3: SFUISchema = {};
schema: SFSchema = {};
schema1: SFSchema = {};
schema2: SFSchema = {};
@ -88,7 +90,7 @@ export class CarSettleAddDriverComponent implements OnInit {
title: '',
ui: {
offsetControl: 6,
action: apiConf.fileUpload,
action: apiConf.waterFileUpload,
fileType: 'image/png,image/jpeg,image/jpg,image/gif',
limit: 1,
limitFileCount: 1,
@ -104,7 +106,18 @@ export class CarSettleAddDriverComponent implements OnInit {
listType: 'picture-card',
change: (args: any) => {
if (args.type === 'success') {
console.log(args.file.response.data.fullFilePath);
const avatar = [
{
uid: -1,
name: 'LOGO',
status: 'done',
url: args.file.response.data.fullFileWatermarkPath,
response: {
url: args.file.response.data.fullFileWatermarkPath,
},
},
];
this.sf?.setValue('/certificatePhotoFrontWatermark', avatar);
this.detailData.certificatePhotoFront = args.file.response.data.fullFilePath;
this.checkIdCard(args.file.response.data.fullFilePath, 'front', 0);
}
@ -137,7 +150,7 @@ export class CarSettleAddDriverComponent implements OnInit {
title: '',
ui: {
offsetControl: 6,
action: apiConf.fileUpload,
action: apiConf.waterFileUpload,
fileType: 'image/png,image/jpeg,image/jpg,image/gif',
limit: 1,
limitFileCount: 1,
@ -153,6 +166,18 @@ export class CarSettleAddDriverComponent implements OnInit {
listType: 'picture-card',
change: (args: any) => {
if (args.type === 'success') {
const avatar = [
{
uid: -1,
name: 'LOGO',
status: 'done',
url: args.file.response.data.fullFileWatermarkPath,
response: {
url: args.file.response.data.fullFileWatermarkPath,
},
},
];
this.sf?.setValue('/certificatePhotoBackWatermark', avatar);
this.detailData.certificatePhotoBack = args.file.response.data.fullFilePath;
this.checkIdCard(args.file.response.data.fullFilePath, 'back', 0);
}
@ -234,7 +259,7 @@ export class CarSettleAddDriverComponent implements OnInit {
type: 'string',
title: '驾驶证照片',
ui: {
action: apiConf.fileUpload,
action: apiConf.waterFileUpload,
fileType: 'image/png,image/jpeg,image/jpg,image/gif',
limit: 1,
limitFileCount: 1,
@ -250,6 +275,18 @@ export class CarSettleAddDriverComponent implements OnInit {
listType: 'picture-card',
change: (args: any) => {
if (args.type === 'success') {
const avatar = [
{
uid: -1,
name: 'LOGO',
status: 'done',
url: args.file.response.data.fullFileWatermarkPath,
response: {
url: args.file.response.data.fullFileWatermarkPath,
},
},
];
this.sf1?.setValue('/certificatePhotoWatermark', avatar);
this.detailData.userDriverLicenseDTO.certificatePhoto = args.file.response.data.fullFilePath;
this.checkDriverCard(args.file.response.data.fullFilePath, 'front', 0);
} else {
@ -271,6 +308,14 @@ export class CarSettleAddDriverComponent implements OnInit {
// previewFile: (file: NzUploadFile) => of(file.url),
}
},
roadImg: {
title: '',
type: 'boolean',
// enum: [{ label: '长期', value: true }],
ui: {
widget: 'custom',
}
},
licenseNo: {
title: '驾驶证号',
type: 'string',
@ -351,7 +396,7 @@ export class CarSettleAddDriverComponent implements OnInit {
title: '',
ui: {
offsetControl: 6,
action: apiConf.fileUpload,
action: apiConf.waterFileUpload,
fileType: 'image/png,image/jpeg,image/jpg,image/gif',
limit: 1,
limitFileCount: 1,
@ -367,6 +412,18 @@ export class CarSettleAddDriverComponent implements OnInit {
listType: 'picture-card',
change: (args: any) => {
if (args.type === 'success') {
const avatar = [
{
uid: -1,
name: 'LOGO',
status: 'done',
url: args.file.response.data.fullFileWatermarkPath,
response: {
url: args.file.response.data.fullFileWatermarkPath,
},
},
];
this.sf2?.setValue('/certificatePhotoWatermark', avatar);
this.detailData.userPracticeSeniorityDTO.certificatePhoto = args.file.response.data.fullFilePath;
this.checkQualificationCertificate(args.file.response.data.fullFilePath);
} else {
@ -385,7 +442,15 @@ export class CarSettleAddDriverComponent implements OnInit {
observer.complete();
});
},
previewFile: (file: NzUploadFile) => of()
// previewFile: (file: NzUploadFile) => of()
}
},
agreeImg: {
title: '',
type: 'boolean',
// enum: [{ label: '长期', value: true }],
ui: {
widget: 'custom',
}
},
licenseNo: {
@ -476,6 +541,40 @@ export class CarSettleAddDriverComponent implements OnInit {
grid: { span: 3 }
}
};
this.ui2 = {
'*': {
spanLabelFixed: 180,
grid: { span: 18 },
width: 600,
},
$titleB:{
grid: { span: 24 },
},
$certificatePhotoWatermark: {
grid: { span: 12 },
},
$roadImg: {
grid: { span: 4 },
class: 'setCustom'
},
};
this.ui3 = {
'*': {
spanLabelFixed: 180,
grid: { span: 18 },
width: 600,
},
$titleC:{
grid: { span: 24 },
},
$certificatePhotoWatermark: {
grid: { span: 12 },
},
$agreeImg: {
grid: { span: 4 },
class: 'setCustom'
},
};
}
getRegionToThree() {
// 获取一、二、三级地区详情
@ -547,7 +646,7 @@ export class CarSettleAddDriverComponent implements OnInit {
if (side === 'front') {
// 正面
this.sf1.setValue('/licenseNo', res.number);
this.sf1.setValue('/driverModel', [res.classType.toUpperCase()]);
this.sf1.setValue('/driverModel', [res.classType?.toUpperCase()]);
this.sf1.setValue('/validStartTime', res.validFrom);
this.sf1.setValue('/validEndTime', res.validTo);
this.sf1.setValue('/signingOrganization', res.issuingAuthority);

View File

@ -102,7 +102,7 @@ export class CarSettleCarauthComponent implements OnInit {
type: 'string',
title: '车头照照片',
ui: {
action: apiConf.fileUpload,
action: apiConf.waterFileUpload,
accept: 'image/png,image/jpeg,image/jpg,image/gif',
limit: 1,
limitFileCount: 1,
@ -118,6 +118,19 @@ export class CarSettleCarauthComponent implements OnInit {
listType: 'picture-card',
change: (args: any) => {
if (args.type === 'success') {
console.log(args);
const avatar = [
{
uid: -1,
name: 'LOGO',
status: 'done',
url: args.file.response.data.fullFileWatermarkPath,
response: {
url: args.file.response.data.fullFileWatermarkPath,
},
},
];
this.sf?.setValue('/carFrontPhotoWatermark', avatar);
this.detailData.carFrontPhoto = args.file.response.data.fullFilePath
}
},
@ -129,11 +142,15 @@ export class CarSettleCarauthComponent implements OnInit {
observer.complete();
return;
}
console.log(_fileList)
observer.next(isLt2M);
observer.complete();
});
},
previewFile: (file: NzUploadFile) => of(file.url),
// previewFile: (file: NzUploadFile) => of(
// file?.response?.data?.fullFilePath
// ),
}
},
carNo: {
@ -215,7 +232,7 @@ export class CarSettleCarauthComponent implements OnInit {
type: 'string',
title: '挂靠协议',
ui: {
action: apiConf.fileUpload,
action: apiConf.waterFileUpload,
accept: 'image/png,image/jpeg,image/jpg,image/gif',
limit: 1,
limitFileCount: 1,
@ -231,6 +248,18 @@ export class CarSettleCarauthComponent implements OnInit {
listType: 'picture-card',
change: (args: any) => {
if (args.type === 'success') {
const avatar = [
{
uid: -1,
name: 'LOGO',
status: 'done',
url: args.file.response.data.fullFileWatermarkPath,
response: {
url: args.file.response.data.fullFileWatermarkPath,
},
},
];
this.sf?.setValue('/carProtocalWatermark', avatar);
this.detailData.certificatePhotoFront = args.file.response.data.fullFilePath
}
},
@ -277,7 +306,7 @@ export class CarSettleCarauthComponent implements OnInit {
type: 'string',
title: '行驶证首页照片',
ui: {
action: apiConf.fileUpload,
action: apiConf.waterFileUpload,
accept: 'image/png,image/jpeg,image/jpg,image/gif',
limit: 1,
limitFileCount: 1,
@ -293,6 +322,18 @@ export class CarSettleCarauthComponent implements OnInit {
listType: 'picture-card',
change: (args: any) => {
if (args.type === 'success') {
const avatar = [
{
uid: -1,
name: 'LOGO',
status: 'done',
url: args.file.response.data.fullFileWatermarkPath,
response: {
url: args.file.response.data.fullFileWatermarkPath,
},
},
];
this.sf?.setValue('/certificatePhotoFrontWatermark', avatar);
this.detailData.certificatePhotoFront = args.file.response.data.fullFilePath
this.checkCarCard(args.file.response.data.fullFilePath, 'front');
} else {
@ -311,7 +352,7 @@ export class CarSettleCarauthComponent implements OnInit {
observer.complete();
});
},
previewFile: (file: NzUploadFile) => of(file.url),
// previewFile: (file: NzUploadFile) => of(file.url),
}
},
tipsB: {
@ -326,7 +367,7 @@ export class CarSettleCarauthComponent implements OnInit {
type: 'string',
title: '行驶证副页照片',
ui: {
action: apiConf.fileUpload,
action: apiConf.waterFileUpload,
accept: 'image/png,image/jpeg,image/jpg,image/gif',
limit: 1,
limitFileCount: 1,
@ -342,6 +383,18 @@ export class CarSettleCarauthComponent implements OnInit {
listType: 'picture-card',
change: (args: any) => {
if (args.type === 'success') {
const avatar = [
{
uid: -1,
name: 'LOGO',
status: 'done',
url: args.file.response.data.fullFileWatermarkPath,
response: {
url: args.file.response.data.fullFileWatermarkPath,
},
},
];
this.sf?.setValue('/certificatePhotoBackWatermark', avatar);
this.detailData.certificatePhotoBack = args.file.response.data.fullFilePath
this.checkCarCard(args.file.response.data.fullFilePath, 'back');
} else {
@ -360,7 +413,7 @@ export class CarSettleCarauthComponent implements OnInit {
observer.complete();
});
},
previewFile: (file: NzUploadFile) => of(file.url),
// previewFile: (file: NzUploadFile) => of(file.url),
}
},
driverLicenseRegisterTime: {
@ -444,7 +497,7 @@ export class CarSettleCarauthComponent implements OnInit {
type: 'string',
title: '道运证照片',
ui: {
action: apiConf.fileUpload,
action: apiConf.waterFileUpload,
accept: 'image/png,image/jpeg,image/jpg,image/gif',
limit: 1,
limitFileCount: 1,
@ -460,6 +513,18 @@ export class CarSettleCarauthComponent implements OnInit {
listType: 'picture-card',
change: (args: any) => {
if (args.type === 'success') {
const avatar = [
{
uid: -1,
name: 'LOGO',
status: 'done',
url: args.file.response.data.fullFileWatermarkPath,
response: {
url: args.file.response.data.fullFileWatermarkPath,
},
},
];
this.sf?.setValue('/roadTransportPhotoWatermark', avatar);
this.detailData.roadTransportPhoto = args.file.response.data.fullFilePath
this.checkTransCard(args.file.response.data.fullFilePath);
} else {
@ -478,7 +543,7 @@ export class CarSettleCarauthComponent implements OnInit {
observer.complete();
});
},
previewFile: (file: NzUploadFile) => of(file.url),
// previewFile: (file: NzUploadFile) => of(file.url),
}
},
roadImg: {

View File

@ -247,7 +247,7 @@
</div>
</nz-card>
<nz-modal [(nzVisible)]="isVisible" [nzFooter]="nzModalFooter" [nzTitle]="modalTitle" (nzOnOk)="handleOK()" (nzOnCancel)="handleCancel()">
<nz-modal [(nzVisible)]="isVisible" nzWidth="1000px" [nzFooter]="nzModalFooter" [nzTitle]="modalTitle" (nzOnOk)="handleOK()" (nzOnCancel)="handleCancel()">
<ng-container *nzModalContent>
<div *ngIf="!modalcontent">暂无附件信息</div>
<div [innerHTML]="modalcontent"></div>

View File

@ -31,7 +31,7 @@
</div>
<div nz-col [nzSpan]="_$expand ? 24 : 6" class="text-right">
<button nz-button nzType="primary" [nzLoading]="false" (click)="search()" acl [acl-ability]="['WAYBILL-BULK-search']">查询</button>
<button nz-button nzType="primary" [disabled]="false" acl [acl-ability]="['WAYBILL-BULK-export']">导出</button>
<button nz-button nzType="primary" [disabled]="false" acl [acl-ability]="['WAYBILL-BULK-export']" (click)="exprot()">导出</button>
<button nz-button [disabled]="false" (click)="resetSF()">重置</button>
<button nz-button nzType="link" (click)="expandToggle()">
{{ !_$expand ? '展开' : '收起' }}

View File

@ -372,6 +372,8 @@ export class WaybillManagementBulkComponent implements OnInit {
console.log(e);
if (e >= 1) {
this.resourceStatus = e + 1;
} else {
this.resourceStatus = 0
}
this.initST();
setTimeout(() => {
@ -473,4 +475,12 @@ export class WaybillManagementBulkComponent implements OnInit {
this.getGoodsSourceStatistical()
});
}
// 导出
exprot() {
this.service.request(this.service.$api_asyncExportBulkList, this.reqParams).subscribe((res: any) => {
if (res) {
this.service.msgSrv.success('导出成功,请去下载中心下载!');
}
});
}
}

View File

@ -1,7 +1,7 @@
<!--
* @Author: your name
* @Date: 2021-12-03 15:31:52
* @LastEditTime : 2022-03-24 13:49:56
* @LastEditTime : 2022-03-29 11:10:08
* @LastEditors : Shiming
* @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
* @FilePath : \\tms-obc-web\\src\\app\\routes\\waybill-management\\components\\vehicle-detail\\vehicle-detail.component.html
@ -227,7 +227,7 @@
</div>
</nz-card>
<nz-modal [(nzVisible)]="isVisible" [nzFooter]="nzModalFooter" [nzTitle]="modalTitle" (nzOnOk)="handleOK()" (nzOnCancel)="handleCancel()">
<nz-modal [(nzVisible)]="isVisible" nzWidth="1000px" [nzFooter]="nzModalFooter" [nzTitle]="modalTitle" (nzOnOk)="handleOK()" (nzOnCancel)="handleCancel()">
<ng-container *nzModalContent>
<div *ngIf="!modalcontent">暂无附件信息</div>
<div [innerHTML]="modalcontent"></div>

View File

@ -1,7 +1,7 @@
<!--
* @Author: your name
* @Date: 2021-12-03 11:10:14
* @LastEditTime : 2022-03-24 17:32:49
* @LastEditTime : 2022-03-28 11:15:15
* @LastEditors : Shiming
* @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
* @FilePath : \\tms-obc-web\\src\\app\\routes\\waybill-management\\components\\vehicle\\vehicle.component.html
@ -31,7 +31,7 @@
</div>
<div nz-col [nzSpan]="_$expand ? 24 : 6" [class.expend-options]="_$expand" class="text-right">
<button nz-button nzType="primary" [nzLoading]="false" (click)="search()" acl [acl-ability]="['WAYBILL-VEHICLE-search']">查询</button>
<button nz-button nzType="primary" [disabled]="false" acl [acl-ability]="['WAYBILL-VEHICLE-export']">导出</button>
<button nz-button nzType="primary" [disabled]="false" acl [acl-ability]="['WAYBILL-VEHICLE-export']" (click)="exprot()">导出</button>
<button nz-button [disabled]="false" (click)="resetSF()">重置</button>
<button nz-button nzType="link" (click)="expandToggle()">
{{ !_$expand ? '展开' : '收起' }}

View File

@ -35,10 +35,7 @@ export class WaybillManagementVehicleComponent implements OnInit {
compolatelQuantity: 0,
deltQuantity: 0
};
constructor(
public service: WaybillManagementServe,
private modal: NzModalService,
public shipperservice: ShipperBaseService) { }
constructor(public service: WaybillManagementServe, private modal: NzModalService, public shipperservice: ShipperBaseService) {}
/**
* 查询参数
@ -55,8 +52,8 @@ export class WaybillManagementVehicleComponent implements OnInit {
...params,
createTime: {
start: this.sf?.value?.createTime?.[0] || '',
end: this.sf?.value?.createTime?.[1] || '',
},
end: this.sf?.value?.createTime?.[1] || ''
}
};
}
get selectedRows() {
@ -103,11 +100,11 @@ export class WaybillManagementVehicleComponent implements OnInit {
searchLoadingText: '搜索中...',
allowClear: true,
onSearch: (q: any) => {
let str =q.replace(/^\s+|\s+$/g,"");
let str = q.replace(/^\s+|\s+$/g, '');
if (str) {
return this.service
.request(this.service.$api_enterpriceList, { enterpriseName: str})
.pipe(map((res: any) => (res as any[]).map((i) => ({ label: i.enterpriseName, value: i.id } as SFSchemaEnum))))
.request(this.service.$api_enterpriceList, { enterpriseName: str })
.pipe(map((res: any) => (res as any[]).map(i => ({ label: i.enterpriseName, value: i.id } as SFSchemaEnum))))
.toPromise();
} else {
return of([]);
@ -116,7 +113,7 @@ export class WaybillManagementVehicleComponent implements OnInit {
change: (q: any) => {
this.getRegionCode(q);
}
} as SFSelectWidgetSchema,
} as SFSelectWidgetSchema
},
enterpriseProjectId: {
type: 'string',
@ -126,7 +123,7 @@ export class WaybillManagementVehicleComponent implements OnInit {
placeholder: '请先选择货主',
visibleIf: {
_$expand: (value: boolean) => value
},
}
} as SFSelectWidgetSchema
},
loadingPlace: {
@ -171,8 +168,8 @@ export class WaybillManagementVehicleComponent implements OnInit {
type: 'string',
ui: {
visibleIf: {
_$expand: (value: boolean) => value,
},
_$expand: (value: boolean) => value
}
}
},
paymentstatus: {
@ -242,7 +239,7 @@ export class WaybillManagementVehicleComponent implements OnInit {
_$expand: (value: boolean) => value
}
} as SFDateWidgetSchema
},
}
},
type: 'object'
};
@ -328,7 +325,7 @@ export class WaybillManagementVehicleComponent implements OnInit {
title: '收款人',
className: 'text-left',
width: '200px',
render: 'payeeName',
render: 'payeeName'
},
{
title: '装卸货时间',
@ -352,13 +349,13 @@ export class WaybillManagementVehicleComponent implements OnInit {
text: '确认发车',
click: _record => this.sureDepart(_record),
iif: item => item.wayBillStatus == '2',
acl: { ability: ['WAYBILL-VEHICLE-wholeStartCarInfo'] },
acl: { ability: ['WAYBILL-VEHICLE-wholeStartCarInfo'] }
},
{
text: '确认到车',
click: _record => this.sureArrive(_record),
iif: item => item.wayBillStatus == '3',
acl: { ability: ['WAYBILL-VEHICLE-wholeUnloadCarInfo'] },
acl: { ability: ['WAYBILL-VEHICLE-wholeUnloadCarInfo'] }
}
]
}
@ -389,7 +386,7 @@ export class WaybillManagementVehicleComponent implements OnInit {
}
search() {
this.st?.load(1);
this.getGoodsSourceStatistical()
this.getGoodsSourceStatistical();
}
selectChange(e: number) {
console.log(e);
@ -402,7 +399,7 @@ export class WaybillManagementVehicleComponent implements OnInit {
/**
* 导入货源
*/
importGoodsSource() { }
importGoodsSource() {}
/**
*查看评价
*/
@ -421,7 +418,7 @@ export class WaybillManagementVehicleComponent implements OnInit {
deltQuantity: 0
};
const params: any = Object.assign({}, this.reqParams || {});
delete params.wayBillStatus
delete params.wayBillStatus;
this.service.request(this.service.$api_get_getWholeStatistics, params).subscribe(res => {
if (res) {
let totalCount = 0;
@ -446,9 +443,9 @@ export class WaybillManagementVehicleComponent implements OnInit {
this.tabs.deltQuantity = ele?.count;
break;
}
totalCount += ele.count
totalCount += ele.count;
});
this.tabs.totalQuantity = totalCount
this.tabs.totalQuantity = totalCount;
}
});
}
@ -467,7 +464,7 @@ export class WaybillManagementVehicleComponent implements OnInit {
});
modalRef.afterClose.subscribe((result: any) => {
this.st.load(1);
this.getGoodsSourceStatistical()
this.getGoodsSourceStatistical();
});
}
// 确认到车
@ -484,7 +481,15 @@ export class WaybillManagementVehicleComponent implements OnInit {
});
modalRef.afterClose.subscribe((result: any) => {
this.st.load(1);
this.getGoodsSourceStatistical()
this.getGoodsSourceStatistical();
});
}
// 导出
exprot() {
this.service.request(this.service.$api_asyncExportWholeList, this.reqParams).subscribe((res: any) => {
if (res) {
this.service.msgSrv.success('导出成功,请去下载中心下载!');
}
});
}
}

View File

@ -2,7 +2,7 @@ import { WaybillManagementBulkComponent } from './../components/bulk/bulk.compon
/*
* @Author: your name
* @Date: 2021-12-07 14:52:29
* @LastEditTime : 2022-03-24 15:17:57
* @LastEditTime : 2022-03-28 11:13:50
* @LastEditors : Shiming
* @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
* @FilePath : \\tms-obc-web\\src\\app\\routes\\waybill-management\\services\\waybill-management.service.ts
@ -61,6 +61,11 @@ export class WaybillManagementServe extends BaseService {
$api_get_getAppDriverPosition = `/api/sdc/wayBillOperate/getAppDriverPosition`;
// 获取货主企业列表
public $api_enterpriceList = '/api/mdc/cuc/enterpriseInfo/operate/enterpriceList';
// 异步导出运营后台大宗运单列表
public $api_asyncExportBulkList = '/api/sdc/wayBillOperate/asyncExportBulkList';
// 异步导出运营后台整车运单列表
public $api_asyncExportWholeList = '/api/sdc/wayBillOperate/asyncExportWholeList';
constructor(public injector: Injector) {
super(injector);
}

View File

@ -29,7 +29,7 @@ export class DictSelectComponent implements OnInit, ControlValueAccessor {
@Input() containsAllLabel = true; // 是否包含全部这一选项
@Input() mode: 'multiple' | 'tags' | 'default' = 'default';
constructor(public service: DictSelectService, public cdr: ChangeDetectorRef) {}
constructor(public service: DictSelectService, public cdr: ChangeDetectorRef) { }
writeValue(geo: string): void {
if (geo == null) {
@ -56,7 +56,6 @@ export class DictSelectComponent implements OnInit, ControlValueAccessor {
if (this.dictList.length > 0 && this.containsAllLabel !== false) {
const obj = { label: '全部', value: '' };
this.dictList.unshift(obj);
console.log(this.dictList);
}
this.cdr.markForCheck();
}

View File

@ -4,7 +4,7 @@
* @Author : Shiming
* @Date : 2022-01-25 20:18:52
* @LastEditors : Shiming
* @LastEditTime : 2022-03-21 14:14:06
* @LastEditTime : 2022-03-29 10:34:14
* @FilePath : \\tms-obc-web\\src\\app\\shared\\components\\rebate-table\\rebate-table.component.html
* Copyright (C) 2022 huzhenhong. All rights reserved.
-->
@ -37,16 +37,15 @@
</td>
<td nzWidth="220px" nzAlign="center" >
<div >
<nz-select ngModel="lucy">
<nz-option nzValue="jack" nzLabel="Jack154654564654"></nz-option>
<nz-option nzValue="lucy" nzLabel="Lucy"></nz-option>
</nz-select>
<nz-select style="min-width: 150px;" [(ngModel)]="item.gradeConfigId" >
<nz-option *ngFor="let item of grage" [nzValue]="item.id" [nzLabel]="item.gradeName"></nz-option>
</nz-select>
</div>
</td>
<td nzWidth="220px" nzAlign="center" >
<div style=" margin-left: 26%">
<nz-input-group nzPrefix="=">
<nz-input-number [(ngModel)]="item.baserebateRate" [nzMin]="0" nzSize="small"
<nz-input-number [(ngModel)]="item.startAmount" [nzMin]="0" nzSize="small" (ngModelChange)="changeendAmount($event,i)"
>
</nz-input-number>
</nz-input-group>
@ -56,7 +55,7 @@
<td nzWidth="220px" nzAlign="center" >
<div style=" margin-left: 26%">
<nz-input-group nzPrefix="">
<nz-input-number [(ngModel)]="item.blanketrebateRate" [nzMin]="0" nzSize="small" >
<nz-input-number [(ngModel)]="item.endAmount" [nzMin]="0" nzSize="small" >
</nz-input-number>
</nz-input-group>
</div>
@ -64,7 +63,7 @@
<td nzWidth="220px" nzAlign="center" >
<div style=" margin-left: 26%">
<nz-input-group [nzAddOnAfter]="addOnAfterTemplate2">
<nz-input-number [(ngModel)]="item.baserebateRate" [nzMin]="0" nzSize="small"
<nz-input-number [(ngModel)]="item.managementFeeRatio" [nzMin]="0" nzSize="small"
>
</nz-input-number>
</nz-input-group>

View File

@ -1,87 +1,90 @@
import { debounceTime } from 'rxjs/operators';
import { Subject } from 'rxjs';
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, OnInit, ViewChild } from '@angular/core';
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnInit, Output, ViewChild } from '@angular/core';
import { BaseService } from '@shared';
import { SFComponent, SFSchema, SFUISchema } from '@delon/form';
import { EventEmitter} from '@angular/core'
@Component({
selector: 'app-rebate-table',
templateUrl: './rebate-table.component.html',
styleUrls: ['./rebate-table.component.less']
})
export class RebateTableComponent implements OnInit {
data: any[] = [];
@Input() data: any =[];
@Output()
private dataChange: EventEmitter<any> = new EventEmitter();
emit() {
this.dataChange.emit(this.data)
}
headers: any[] = [];
gradeConfigId: string ='';
grage: any[] = [];
formatterDollar = (value: number): string => `${value}`;
changeSub = new Subject<string>();
constructor(public service: BaseService, private cdr: ChangeDetectorRef) {}
ngOnInit(): void {
this.data = [
{
gradeConfigId: '',
startAmount: 0,
endAmount: 0,
managementFeeRatio: 0,
}
];
this.loadData();
this.changeEndKmAction();
this.changeendAmountAction();
}
loadData() {
this.service.request('/api/mdc/cuc/insuranceConfig/list').subscribe(res => {
this.service.request('/api/mdc/partnerGradeConfig/listPartnerGradeConfig').subscribe(res => {
if (res) {
console.log(res);
this.data = res;
this.grage = res;
this.cdr.detectChanges();
}
});
this.service.request('/api/mdc/pbc/sysConfigItem/findItemValueByItemKeys', [
"rebate.config.minrebatePrice"
]).subscribe(res => {
if (res) {
console.log(res);
}
});
// this.service.request('/api/mdc/pbc/sysConfigItem/findItemValueByItemKeys', [
// "rebate.config.minrebatePrice"
// ]).subscribe(res => {
// if (res) {
// console.log(res);
// }
// });
}
/**
* 修改结束车长
* @param event 车长
* @param i 下标
*/
changeEndLength(event: any, i: number) {
if (event <= this.headers[i].startLength) {
this.headers[i].endLength = this.headers[i].startLength + 1;
this.changeNextStartLength(event, i + 1);
return;
}
this.headers[i].endLength = event;
this.changeNextStartLength(event, i + 1);
}
/**
* 修改结束公里数
* @param event 车长
* @param i 下标
*/
changeEndKm(event: any, i: number) {
changeendAmount(event: any, i: number) {
if (event) {
console.log(event);
this.changeSub.next(`${event},${i}`);
}
}
changeEndKmAction() {
changeendAmountAction() {
this.changeSub.pipe(debounceTime(500)).subscribe((res: string) => {
if (res) {
const paras = res.split(',');
const num = Number(paras[0]);
const i = Number(paras[1]);
if (num <= this.data[i].startKm) {
this.data[i].endKm = null;
if (num <= this.data[i]?.startAmount) {
console.log(this.data[i].endAmount);
this.data[i].endAmount = null;
setTimeout(() => {
this.data[i].endKm = this.data[i].startKm + 1 ;
this.data[i].endAmount = this.data[i]?.startAmount + 1 ;
}, 0);
this.changeNextStartKm(this.data[i].startKm + 1, i + 1);
this.changeNextstartAmount(this.data[i]?.startAmount + 1, i + 1);
return;
}
this.data[i].endKm = num;
this.changeNextStartKm(num, i + 1);
this.data[i].endAmount = num;
this.changeNextstartAmount(num, i + 1);
}
});
}
@ -90,14 +93,14 @@ export class RebateTableComponent implements OnInit {
console.log(this.data);
const tem = this.data[this.data?.length - 1];
if (tem && tem.endKm) {
if (tem) {
this.data.push({
endKm: '',
startKm: tem.endKm
gradeConfigId: '',
startAmount: 0,
endAmount: 0,
managementFeeRatio: 0,
});
this.data = [...this.data];
} else {
this.service.msgSrv.warning('请填写完整公里数');
}
}
@ -125,32 +128,18 @@ export class RebateTableComponent implements OnInit {
});
}
/**
* 遍历同步后置位车长
* @param event 车长
* @param i 下标
*/
private changeNextStartLength(event: number, i: number) {
if (this.headers[i]) {
this.headers[i].startLength = event;
if (this.headers[i].endLength <= event) {
this.headers[i].endLength = this.headers[i].startLength + 0.5;
this.changeNextStartLength(event + 0.5, i + 1);
}
}
}
/**
* 遍历同步后置位公里数
* @param event 车长
* @param i 下标
*/
private changeNextStartKm(event: number, i: number) {
private changeNextstartAmount(event: number, i: number) {
if (this.data[i]) {
this.data[i].startKm = event;
if (this.data[i].endKm <= event) {
this.data[i].endKm = this.data[i].startKm + 1;
this.changeNextStartKm(event + 1, i + 1);
this.data[i].startAmount = event;
if (this.data[i].endAmount <= event) {
this.data[i].endAmount = this.data[i].startAmount + 1;
this.changeNextstartAmount(event + 1, i + 1);
}
}
}

View File

@ -297,7 +297,7 @@ export class ShipperBaseService extends BaseService {
map(res => {
if (res) {
return res.map((m: any) => {
return { label: `${m.employeeVO?.empName}/${m.employeeVO?.mobile}`, value: m.id };
return { label: `${m.employeeVO?.empName}/${m.employeeVO?.mobile}`, value: m.userAppId };
});
} else {
return [];

View File

@ -640,9 +640,14 @@
"icon": "iconfont icon-hetong-copy",
"group": true,
"children": [{
"text": "数据报表",
"link": "/regulatory-data/dashboard"
}]
"text": "数据报表",
"link": "/regulatory-data/dashboard"
},
{
"text": "订单上报",
"link": "/datatable/reporting/order"
}
]
}
]
}]