This commit is contained in:
wangshiming
2022-05-10 10:41:01 +08:00
parent de8bb56dad
commit 0936b30387
11 changed files with 284 additions and 100 deletions

View File

@ -4,7 +4,7 @@
* @Author : Shiming * @Author : Shiming
* @Date : 2022-01-18 09:51:21 * @Date : 2022-01-18 09:51:21
* @LastEditors : Shiming * @LastEditors : Shiming
* @LastEditTime : 2022-05-09 16:37:26 * @LastEditTime : 2022-05-10 10:16:50
* @FilePath : \\tms-obc-web\\proxy.conf.js * @FilePath : \\tms-obc-web\\proxy.conf.js
* Copyright (C) 2022 huzhenhong. All rights reserved. * Copyright (C) 2022 huzhenhong. All rights reserved.
*/ */

View File

@ -31,7 +31,8 @@
<div class="tab_header"> <div class="tab_header">
<label class="page_title"> <label class="page_title">
<label class="driver">|</label> <label class="driver">|</label>
大宗订单</label> 大宗订单</label
>
<nz-tabset (nzSelectedIndexChange)="selectChange($event)" [nzTabBarExtraContent]="extraTemplate"> <nz-tabset (nzSelectedIndexChange)="selectChange($event)" [nzTabBarExtraContent]="extraTemplate">
<nz-tab [nzTitle]="'全部(' + tabs?.totalCount + ')'"></nz-tab> <nz-tab [nzTitle]="'全部(' + tabs?.totalCount + ')'"></nz-tab>
<nz-tab [nzTitle]="'待接单(' + tabs?.receivedQuantity + ')'"></nz-tab> <nz-tab [nzTitle]="'待接单(' + tabs?.receivedQuantity + ')'"></nz-tab>
@ -44,10 +45,17 @@
</div> </div>
<div> <div>
<st #st [bordered]="true" [scroll]="{ x: '2000px',y:scrollY }" [data]="service.$api_get_listBulkPage" <st
[columns]="columns" [req]="{ process: beforeReq }" #st
[bordered]="true"
[scroll]="{ x: '2000px', y: scrollY }"
[data]="service.$api_get_listBulkPage"
[columns]="columns"
[req]="{ process: beforeReq }"
[res]="{ reName: { list: 'data.records', total: 'data.total' }, process: afterRes }" [res]="{ reName: { list: 'data.records', total: 'data.total' }, process: afterRes }"
[page]="{ show: true, showSize: true, pageSizes: [10, 20, 30, 50, 100, 200, 300, 500, 1000] }" [loading]="false"> [page]="{ show: true, showSize: true, pageSizes: [10, 20, 30, 50, 100, 200, 300, 500, 1000] }"
[loading]="false"
>
<ng-template st-row="freightPrice" let-item let-index="index"> <ng-template st-row="freightPrice" let-item let-index="index">
{{ item.freightPrice | currency }} {{ item.freightPrice | currency }}
</ng-template> </ng-template>
@ -56,19 +64,19 @@
<div *ngIf="item?.unloadTime">卸 | {{ item?.unloadTime }}</div> <div *ngIf="item?.unloadTime">卸 | {{ item?.unloadTime }}</div>
</ng-template> </ng-template>
<ng-template st-row="driverName" let-item let-index="index"> <ng-template st-row="driverName" let-item let-index="index">
<div> {{ item?.driverName }}{{ item?.driverPhone ? "/" + item?.driverPhone : '' }}{{ item?.carNo ? "/" + <div> {{ item?.driverName }}{{ item?.driverPhone ? '/' + item?.driverPhone : '' }}{{ item?.carNo ? '/' + item?.carNo : '' }} </div>
item?.carNo : ''}} </div>
</ng-template> </ng-template>
<ng-template st-row="settlementWeight" let-item let-index="index"> <ng-template st-row="settlementWeight" let-item let-index="index">
<div> {{ item.settlementWeight ? item.settlementWeight + '吨/ ': ''}} {{ item.settlementVolume ? <div>
item.settlementVolume + ' ': ''}}</div> {{ item.settlementWeight ? item.settlementWeight + '吨/ ' : '' }}
{{ item.settlementVolume ? item.settlementVolume + '方 ' : '' }}</div
>
</ng-template> </ng-template>
<ng-template st-row="payeeName" let-item let-index="index"> <ng-template st-row="payeeName" let-item let-index="index">
<div *ngIf="item.payeeName !== item.driverName"> {{ item?.payeeName }}{{ item?.payeePhone ? "/" + <div *ngIf="item.payeeName !== item.driverName"> {{ item?.payeeName }}{{ item?.payeePhone ? '/' + item?.payeePhone : '' }} </div>
item?.payeePhone : '' }} </div>
</ng-template> </ng-template>
<ng-template st-row="createUserName" let-item let-index="index"> <ng-template st-row="createUserName" let-item let-index="index">
<div> {{ item?.createUserName }}{{ item?.createUserPhone ? "/" + item?.createUserPhone : '' }} </div> <div> {{ item?.createUserName }}{{ item?.createUserPhone ? '/' + item?.createUserPhone : '' }} </div>
</ng-template> </ng-template>
<ng-template st-row="billCode" let-item let-index="index"> <ng-template st-row="billCode" let-item let-index="index">
<a [routerLink]="'bulk-detail/' + item.id">{{ item.billCode }}</a> <a [routerLink]="'bulk-detail/' + item.id">{{ item.billCode }}</a>
@ -91,8 +99,7 @@
<div *ngIf="item.mybidDetailInfo.length > 0"> <div *ngIf="item.mybidDetailInfo.length > 0">
<p *ngFor="let data of item.mybidDetailInfo"> <p *ngFor="let data of item.mybidDetailInfo">
<span *ngIf="data.expenseCode !== 'FL'">{{ data.expenseName }}{{ data.price | currency }}</span> <span *ngIf="data.expenseCode !== 'FL'">{{ data.expenseName }}{{ data.price | currency }}</span>
<span *ngIf="data.expenseCode === 'FL'">{{ data.expenseName }}{{ (data.price * 100).toFixed(2) + '%' <span *ngIf="data.expenseCode === 'FL'">{{ data.expenseName }}{{ (data.price * 100).toFixed(2) + '%' }}</span>
}}</span>
<span *ngIf="data.paymentStatusLabel" style="color: #f59a63">{{ data.paymentStatusLabel }}</span> <span *ngIf="data.paymentStatusLabel" style="color: #f59a63">{{ data.paymentStatusLabel }}</span>
</p> </p>
</div> </div>
@ -101,13 +108,25 @@
</div> </div>
</nz-card> </nz-card>
<nz-modal [(nzVisible)]="isVisible" [nzWidth]="600" [nzFooter]="nzModalFooter" nzTitle="运费变更记录" (nzOnOk)="handleOK()" <nz-modal
(nzOnCancel)="handleCancel('0')"> [(nzVisible)]="isVisible"
[nzWidth]="600"
[nzFooter]="nzModalFooter"
nzTitle="运费变更记录"
(nzOnOk)="handleOK()"
(nzOnCancel)="handleCancel('0')"
>
<ng-container *nzModalContent> <ng-container *nzModalContent>
<st #stFloat size="small" [bordered]="true" [data]="service.$api_get_listChangeApply" [columns]="columnsFloat" <st
#stFloat
size="small"
[bordered]="true"
[data]="service.$api_get_listChangeApply"
[columns]="columnsFloat"
[req]="{ process: beforeReq }" [req]="{ process: beforeReq }"
[res]="{ reName: { list: 'data.records', total: 'data.total' }, process: afterRes }" [res]="{ reName: { list: 'data.records', total: 'data.total' }, process: afterRes }"
[page]="{ show: true, showSize: true, pageSizes: [10, 20, 30, 50, 100, 200, 300, 500, 1000] }"> [page]="{ show: true, showSize: true, pageSizes: [10, 20, 30, 50, 100, 200, 300, 500, 1000] }"
>
<ng-template st-row="order" let-item let-index="index"> <ng-template st-row="order" let-item let-index="index">
{{ index + 1 }} {{ index + 1 }}
</ng-template> </ng-template>
@ -127,8 +146,14 @@
</ng-template> </ng-template>
</nz-modal> </nz-modal>
<nz-modal [(nzVisible)]="isVisibleView" [nzWidth]="600" [nzFooter]="nzModalFooterview" nzTitle="查看" <nz-modal
(nzOnOk)="handleOK()" (nzOnCancel)="handleCancel('1')"> [(nzVisible)]="isVisibleView"
[nzWidth]="600"
[nzFooter]="nzModalFooterview"
nzTitle="查看"
(nzOnOk)="handleOK()"
(nzOnCancel)="handleCancel('1')"
>
<ng-container *nzModalContent> <ng-container *nzModalContent>
<sf #sfView [schema]="schemaView" [ui]="uiView" [formData]="ViewCause" [compact]="true" [button]="'none'"> <sf #sfView [schema]="schemaView" [ui]="uiView" [formData]="ViewCause" [compact]="true" [button]="'none'">
<ng-template sf-template="no" let-me let-ui="uiView" let-schema="schemaView"> <ng-template sf-template="no" let-me let-ui="uiView" let-schema="schemaView">
@ -138,21 +163,30 @@
</div> </div>
</ng-template> </ng-template>
</sf> </sf>
<st #stFloatView multiSort size="small" [bordered]="true" [data]="service.$api_getChangeRecordBulkDetail" <st
#stFloatView
multiSort
size="small"
[bordered]="true"
[data]="service.$api_getChangeRecordBulkDetail"
[columns]="columnsFloatView" [columns]="columnsFloatView"
[req]="{ method: 'POST', allInBody: true, reName: { pi: 'pageIndex', ps: 'pageSize' }, params: changeViewParams }" [req]="{ method: 'POST', allInBody: true, reName: { pi: 'pageIndex', ps: 'pageSize' }, params: changeViewParams }"
[res]="{ reName: { list: 'data.list', total: 'data.total' } }"> [res]="{ reName: { list: 'data.list', total: 'data.total' } }"
>
<ng-template st-row="amountBeforeChange" let-item let-index="index"> <ng-template st-row="amountBeforeChange" let-item let-index="index">
{{ item.amountBeforeChange | currency }} {{ item.amountBeforeChange | currency }}
</ng-template> </ng-template>
<ng-template st-row="amountchangeValue" let-item let-index="index"> ¥{{ item.amountchangeValue | number: '0.2-2' <ng-template st-row="amountchangeValue" let-item let-index="index"> ¥{{ item.amountchangeValue | number: '0.2-2' }} </ng-template>
}} </ng-template>
<ng-template st-row="amountAfterChange" let-item let-index="index"> <ng-template st-row="amountAfterChange" let-item let-index="index">
{{ item.amountAfterChange | currency }} {{ item.amountAfterChange | currency }}
</ng-template> </ng-template>
</st> </st>
<div><span>变更原因:{{ ViewCause?.changeCause }}</span></div> <div
<div><span>拒绝原因:{{ ViewCause?.refuseCause }}</span></div> ><span>变更原因:{{ ViewCause?.changeCause }}</span></div
>
<div
><span>拒绝原因:{{ ViewCause?.refuseCause }}</span></div
>
<div><span>注:附加费依据调整后的运输费用重新计算</span></div> <div><span>注:附加费依据调整后的运输费用重新计算</span></div>
</ng-container> </ng-container>
<ng-template #nzModalFooterview> <ng-template #nzModalFooterview>
@ -161,8 +195,13 @@
</ng-template> </ng-template>
</nz-modal> </nz-modal>
<nz-modal [(nzVisible)]="isVisibleEvaluate" [nzWidth]="600" [nzFooter]="nzModalFooterEvaluate" (nzOnOk)="handleOK()" <nz-modal
(nzOnCancel)="handleCancel('2')"> [(nzVisible)]="isVisibleEvaluate"
[nzWidth]="600"
[nzFooter]="nzModalFooterEvaluate"
(nzOnOk)="handleOK()"
(nzOnCancel)="handleCancel('2')"
>
<ng-container *nzModalContent> <ng-container *nzModalContent>
<nz-tabset> <nz-tabset>
<nz-tab nzTitle="货主评价"> <nz-tab nzTitle="货主评价">
@ -191,20 +230,28 @@
<ng-template #enable> <ng-template #enable>
<div class="ant-popover-message"> <div class="ant-popover-message">
<i nz-icon nzType="info-circle" nzTheme="fill"></i> <i nz-icon nzType="info-circle" nzTheme="fill"></i>
<div class="ant-popover-message-title ng-star-inserted self-ant-popover-title" style="font-size: 16px">已选择{{ <div class="ant-popover-message-title ng-star-inserted self-ant-popover-title" style="font-size: 16px"
selectedRows?.length || 0 }}条订单,确认批量签收吗? >已选择{{ selectedRows?.length || 0 }}条订单,确认批量签收吗?
</div> </div>
<div class="ant-popover-message-title ng-star-inserted"> 签收后不可再修改运费,请确保运费等信息准确无误后,再进行签收。 </div> <div class="ant-popover-message-title ng-star-inserted"> 签收后不可再修改运费,请确保运费等信息准确无误后,再进行签收。 </div>
</div> </div>
</ng-template> </ng-template>
<ng-template #extraTemplate> <ng-template #extraTemplate>
<div class="mr-sm"> <div class="mr-sm">
<button nz-button nzDanger [nzLoading]="loading" (click)="openDrawer()" acl <button nz-button nzDanger [nzLoading]="loading" (click)="openDrawer()" acl [acl-ability]="['ORDER-BULK-search']">筛选</button>
[acl-ability]="['ORDER-BULK-search']">筛选</button>
<button nz-button nzDanger [disabled]="loading" (click)="exprot()">导出</button> <button nz-button nzDanger [disabled]="loading" (click)="exprot()">导出</button>
<button *ngIf="resourceStatus == 4" nz-button nzType="primary" nzGhost nz-popconfirm [nzPopconfirmTitle]="enable" <button
(nzOnConfirm)="userAction()" nzPopconfirmPlacement="bottomRight" acl *ngIf="resourceStatus == 4"
[acl-ability]="['ORDER-BULK-batchSignBulkOrder']"> nz-button
nzType="primary"
nzGhost
nz-popconfirm
[nzPopconfirmTitle]="enable"
(nzOnConfirm)="userAction()"
nzPopconfirmPlacement="bottomRight"
acl
[acl-ability]="['ORDER-BULK-batchSignBulkOrder']"
>
批量签收 批量签收
</button> </button>
</div> </div>

View File

@ -824,4 +824,5 @@ export class OrderManagementBulkComponent extends BasicTableComponent implements
exprot() { exprot() {
this.service.exportStart({ ...this.reqParams, pageSize: -1 }, this.service.$api_get_asyncExportBulkList); this.service.exportStart({ ...this.reqParams, pageSize: -1 }, this.service.$api_get_asyncExportBulkList);
} }
} }

View File

@ -4,7 +4,7 @@
* @Author : Shiming * @Author : Shiming
* @Date : 2022-04-29 17:28:23 * @Date : 2022-04-29 17:28:23
* @LastEditors : Shiming * @LastEditors : Shiming
* @LastEditTime : 2022-05-09 14:40:09 * @LastEditTime : 2022-05-10 10:29:12
* @FilePath : \\tms-obc-web\\src\\app\\routes\\partner\\partner-list\\components\\index\\partner-list.component.html * @FilePath : \\tms-obc-web\\src\\app\\routes\\partner\\partner-list\\components\\index\\partner-list.component.html
* Copyright (C) 2022 huzhenhong. All rights reserved. * Copyright (C) 2022 huzhenhong. All rights reserved.
--> -->
@ -91,9 +91,26 @@
<div nz-col nzSpan="24" se-container [labelWidth]="140" [col]="1"> <div nz-col nzSpan="24" se-container [labelWidth]="140" [col]="1">
<se label="合伙人名称"> {{ selectItem?.enterpriseName || selectItem?.contactName }} </se> <se label="合伙人名称"> {{ selectItem?.enterpriseName || selectItem?.contactName }} </se>
<se label="当前渠道销售"> {{ selectItem?.channelIdLabel }} </se> <se label="当前渠道销售"> {{ selectItem?.channelIdLabel }} </se>
<se label="渠道销售修改为" required> <se label="渠道销售修改为666" required>
<nz-select [(ngModel)]="cannelItem.channelId" style="width: 100%"> <!-- <nz-select [(ngModel)]="cannelItem.channelId" style="width: 100%">
<nz-option [nzValue]="item.value" [nzLabel]="item.label" *ngFor="let item of cannels"></nz-option> <nz-option [nzValue]="item.value" [nzLabel]="item.label" *ngFor="let item of cannels"></nz-option>
</nz-select> -->
<nz-select
nzMode="multiple"
nzPlaceHolder="Select users"
nzAllowClear
nzShowSearch
nzServerSearch
[(ngModel)]="cannelItem.channelId"
(nzOnSearch)="onSearch($event)"
>
<ng-container *ngFor="let item of cannels">
<nz-option *ngIf="!isLoading" [nzValue]="item.value" [nzLabel]="item.label"></nz-option>
</ng-container>
<nz-option *ngIf="isLoading" nzDisabled nzCustomContent>
<i nz-icon nzType="loading" class="loading-icon"></i>
Loading Data...
</nz-option>
</nz-select> </nz-select>
</se> </se>
<se label="备注" required> <se label="备注" required>

View File

@ -24,7 +24,7 @@ export class PartnerListComponent {
columns: STColumn[] = this.initST(); columns: STColumn[] = this.initST();
searchSchema: SFSchema = this.initSF(); searchSchema: SFSchema = this.initSF();
_$expand = false; _$expand = false;
isLoading: boolean = false
@ViewChild('editTemplate', { static: true }) @ViewChild('editTemplate', { static: true })
editTemplate: any; editTemplate: any;
templateId: any; templateId: any;
@ -509,4 +509,10 @@ export class PartnerListComponent {
} }
]; ];
} }
onSearch(value: string): void {
this.isLoading = true;
console.log(value);
// this.searchChange$.next(value);
}
} }

View File

@ -1,7 +1,8 @@
import { Component, Input, OnInit, ViewChild } from '@angular/core'; import { Component, Input, OnInit, ViewChild } from '@angular/core';
import { SFComponent, SFSchema, SFValue } from '@delon/form'; import { SFComponent, SFSchema, SFSchemaEnum, SFSelectWidgetSchema, SFValue } from '@delon/form';
import { ModalHelper } from '@delon/theme'; import { ModalHelper } from '@delon/theme';
import { NzModalRef, NzModalService } from 'ng-zorro-antd/modal'; import { NzModalRef, NzModalService } from 'ng-zorro-antd/modal';
import { of } from 'rxjs';
import { map } from 'rxjs/operators'; import { map } from 'rxjs/operators';
import { PartnerListService } from '../../services/partner-list.service'; import { PartnerListService } from '../../services/partner-list.service';
@ -24,7 +25,6 @@ export class PartnerAuditModalComponent implements OnInit {
console.log(this.info); console.log(this.info);
this.initSF(this.info); this.initSF(this.info);
// asyncData: () => this.service.getChannel(), // asyncData: () => this.service.getChannel(),
if(this.info.channelId) { if(this.info.channelId) {
const value = [{ const value = [{
label: this.info.channelIdLabel, label: this.info.channelIdLabel,
@ -38,25 +38,26 @@ export class PartnerAuditModalComponent implements OnInit {
} }
}) })
} else {
console.log()
this.service.getChannel().pipe(map(data => {
console.log(data);
}))
this.service.getChannel().subscribe((res) => {
console.log(res);
const value :any= res;
setTimeout(() => {
if(this.sf) {
this.sf.getProperty('/channelId')!.schema.enum = value;
this.sf.getProperty('/channelId')!.widget.reset(value);
this.sf.setValue('/channelId', value);
} }
}) // else {
}) // console.log()
// this.service.getChannel().pipe(map(data => {
// console.log(data);
} // }))
// this.service.getChannel().subscribe((res) => {
// console.log(res);
// const value :any= res;
// setTimeout(() => {
// if(this.sf) {
// this.sf.getProperty('/channelId2')!.schema.enum = value;
// this.sf.getProperty('/channelId2')!.widget.reset(value);
// this.sf.setValue('/channelId2', value);
// }
// })
// })
// }
} }
initSF(user: any) { initSF(user: any) {
@ -90,21 +91,37 @@ export class PartnerAuditModalComponent implements OnInit {
default: this.info.isPass !== undefined ? this.info.isPass : true default: this.info.isPass !== undefined ? this.info.isPass : true
}, },
channelId: { channelId: {
title: '渠道销售',
type: 'string', type: 'string',
title: '渠道销售',
ui: { ui: {
widget: 'select', widget: 'select',
placeholder: '请选择',
allowClear: true,
hidden: this.info.isPass === false, hidden: this.info.isPass === false,
visibleIf: { serverSearch: true,
status: value => value searchDebounceTime: 300,
}, searchLoadingText: '搜索中...',
errors: { allowClear: true,
required: ' ' onSearch: (q: any) => {
let str = q.replace(/^\s+|\s+$/g, '');
let params :any= {}
if (str) {
console.log(+str);
if(+str) {
console.log('数字');
params.phoneNumber = str
} else {
console.log('中文');
params.name = str
}
return this.service
.request(this.service.$api_get_channel, params)
.pipe(map((res: any) => (res as any[]).map(i => ({ label: `${i.name}/${i.telephone}`, value: i.channelId } as SFSchemaEnum))))
.toPromise();
} else {
return of([]);
} }
}, },
default: user.channelId default: user.channelId
} as SFSelectWidgetSchema
}, },
approvalOpinion: { approvalOpinion: {
title: '备注', title: '备注',
@ -124,10 +141,8 @@ export class PartnerAuditModalComponent implements OnInit {
} }
} }
}, },
required: ['channelId', 'approvalOpinion'] required: [ 'approvalOpinion','channelId']
}; };
console.log('666');
} }
sure() { sure() {

View File

@ -1,3 +1,13 @@
<!--
* @Description :
* @Version : 1.0
* @Author : Shiming
* @Date : 2022-05-06 15:31:19
* @LastEditors : Shiming
* @LastEditTime : 2022-05-10 09:47:38
* @FilePath : \\tms-obc-web\\src\\app\\routes\\ticket-management\\components\\etc-invoiced-logs\\etc-invoiced-logs.component.html
* Copyright (C) 2022 huzhenhong. All rights reserved.
-->
<!-- <page-header-wrapper [title]="'已开发票'"> <!-- <page-header-wrapper [title]="'已开发票'">
</page-header-wrapper> </page-header-wrapper>
<nz-card class="search-box" nzBordered> <nz-card class="search-box" nzBordered>
@ -25,14 +35,22 @@
<label class="page_title"> <label class="driver">|</label> 已开发票</label> <label class="page_title"> <label class="driver">|</label> 已开发票</label>
<div class="mr-sm"> <div class="mr-sm">
<button nz-button nzDanger [nzLoading]="service.http.loading" (click)="openDrawer()">筛选</button> <button nz-button nzDanger [nzLoading]="service.http.loading" (click)="openDrawer()">筛选</button>
<button nz-button nzDanger (click)="exportList()" acl <button nz-button nzDanger (click)="exportList()" acl [acl-ability]="['TICKET-ETC-INVOICE-LOGS-export']">导出</button>
[acl-ability]="['TICKET-ETC-INVOICE-LOGS-export']">导出</button> <button nz-button nzDanger (click)="batchInvoice()" acl [acl-ability]="['TICKET-ETC-INVOICE-LOGS-export']">批量开票</button>
</div> </div>
</div> </div>
<st #st [data]="service.$api_get_invoice_logs_page" [columns]="columns" [req]="{ process: beforeReq }" [page]="{}" <st
[loading]="false" [scroll]="{ x:'1200px',y:scrollY }"> #st
[data]="service.$api_get_invoice_logs_page"
[columns]="columns"
[req]="{ process: beforeReq }"
[res]="{ reName: { list: 'data.records', total: 'data.total' }, process: afterRes }"
[page]="{}"
[loading]="false"
[scroll]="{ x: '1200px', y: scrollY }"
>
<ng-template st-row="call3No" let-item let-index="index" let-column="column"> <ng-template st-row="call3No" let-item let-index="index" let-column="column">
{{item.driverName}}<br>{{item.driverCellphone}} {{ item.driverName }}<br />{{ item.driverCellphone }}
</ng-template> </ng-template>
</st> </st>
</nz-card> </nz-card>

View File

@ -41,7 +41,12 @@ export class ETCInvoicedLogsComponent extends BasicTableComponent {
} }
return requestOptions; return requestOptions;
}; };
afterRes = (data: any[], rawData?: any) => {
return data.map(item => ({
...item,
disabled: item.isCreationInpinv == '1'
}));
};
routeTo(item: any) { routeTo(item: any) {
return; return;
this.router.navigate(['/ticket/invoice-requested-detail/1']); this.router.navigate(['/ticket/invoice-requested-detail/1']);
@ -135,6 +140,7 @@ export class ETCInvoicedLogsComponent extends BasicTableComponent {
private initST(): STColumn[] { private initST(): STColumn[] {
return [ return [
{ title: '', type: 'checkbox', fixed: 'left', width: '50px', className: 'text-center' },
{ title: '发票号码', index: 'invoiceNum', width: 100, type: 'link', click: item => this.routeTo(item) }, { title: '发票号码', index: 'invoiceNum', width: 100, type: 'link', click: item => this.routeTo(item) },
{ title: '发票代码', index: 'invoiceCode', width: 130 }, { title: '发票代码', index: 'invoiceCode', width: 130 },
{ title: '订单号', index: 'billCode', width: 180 }, { title: '订单号', index: 'billCode', width: 180 },
@ -183,7 +189,46 @@ export class ETCInvoicedLogsComponent extends BasicTableComponent {
{ title: '交易时间', index: 'exTime', type: 'date', width: 150 }, { title: '交易时间', index: 'exTime', type: 'date', width: 150 },
{ title: '开票日期', index: 'invoiceMakeTime', type: 'date', width: 150 }, { title: '开票日期', index: 'invoiceMakeTime', type: 'date', width: 150 },
{ title: '销售方', index: 'sellerName', width: 150 }, { title: '销售方', index: 'sellerName', width: 150 },
{ title: '网络货运人', index: 'enterpriseInfoName', width: 220 } { title: '网络货运人', index: 'enterpriseInfoName', width: 220 },
{
title: '操作',
width: '120px',
fixed: 'right',
className: 'text-center',
buttons: [
{
text: '开票',
acl: { ability: ['TICKET-CANCELLATION-view'] },
click: item => {
this.batchInvoice(item)
}
}
]
}
]; ];
} }
get selectedRows() {
return this.st?.list.filter(item => item.checked) || [];
}
batchInvoice(item?: { id: any; }) {
let params: any[] = [];
if(item) {
params.push(item.id);
} else {
if (this.selectedRows.length <= 0) {
this.service.msgSrv.error('请选择订单!');
return;
}
this.selectedRows.forEach(item => {
params.push(item.id);
});
}
this.service.request(this.service.$api_createFicoInpinv, params).subscribe(res => {
if (res) {
this.service.msgSrv.success('开票成功!')
this.st.load(1);
}
});
}
} }

View File

@ -1,7 +1,7 @@
/* /*
* @Author: your name * @Author: your name
* @Date: 2021-12-29 13:12:35 * @Date: 2021-12-29 13:12:35
* @LastEditTime : 2022-04-11 16:41:43 * @LastEditTime : 2022-05-10 09:51:30
* @LastEditors : Shiming * @LastEditors : Shiming
* @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE * @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
* @FilePath : \\tms-obc-web\\src\\app\\routes\\ticket-management\\services\\ticket.service.ts * @FilePath : \\tms-obc-web\\src\\app\\routes\\ticket-management\\services\\ticket.service.ts
@ -150,6 +150,8 @@ export class TicketService extends ShipperBaseService {
$api_invoicedBillInfo_page = '/api/fcc/invoicedBillInfo/getInvoicedBillInfoPage'; $api_invoicedBillInfo_page = '/api/fcc/invoicedBillInfo/getInvoicedBillInfoPage';
// 可开票订单导出 // 可开票订单导出
$api_export_InvoicedBillInfoPage = '/api/fcc/invoicedBillInfo/exportInvoicedBillInfoPage' $api_export_InvoicedBillInfoPage = '/api/fcc/invoicedBillInfo/exportInvoicedBillInfoPage'
// 批量生成进项发票
$api_createFicoInpinv = '/api/fcc/ficoEtcInvoiceL/createFicoInpinv'
constructor(public injector: Injector) { constructor(public injector: Injector) {
super(injector); super(injector);

View File

@ -1,9 +1,11 @@
import { Component, OnInit, ViewChild } from '@angular/core'; import { Component, OnInit, ViewChild } from '@angular/core';
import { SFComponent, SFRadioWidgetSchema, SFSchema, SFUISchema } from '@delon/form'; import { SFComponent, SFRadioWidgetSchema, SFSchema, SFSchemaEnum, SFSelectWidgetSchema, SFUISchema } from '@delon/form';
import { ShipperBaseService } from '@shared'; import { ShipperBaseService } from '@shared';
import { NzMessageService } from 'ng-zorro-antd/message'; import { NzMessageService } from 'ng-zorro-antd/message';
import { UsermanageService } from 'src/app/routes/usercenter/services/usercenter.service'; import { UsermanageService } from 'src/app/routes/usercenter/services/usercenter.service';
import { NzModalRef } from 'ng-zorro-antd/modal'; import { NzModalRef } from 'ng-zorro-antd/modal';
import { map } from 'rxjs/operators';
import { of } from 'rxjs';
@Component({ @Component({
selector: 'app-ad-components-Sale', selector: 'app-ad-components-Sale',
@ -48,18 +50,49 @@ export class EditSaleComponentsAddComponent implements OnInit {
initSF() { initSF() {
this.schema = { this.schema = {
properties: { properties: {
// channelId: {
// type: 'string',
// title: '渠道销售修改为',
// ui: {
// widget: 'select',
// placeholder: '请选择',
// allowClear: true,
// visibleIf: {
// _$expand: (value: boolean) => value
// },
// asyncData: () => this.shipperservice.getChanners()
// }
// },
channelId: { channelId: {
type: 'string', type: 'string',
title: '渠道销售修改为', title: '渠道销售修改为',
ui: { ui: {
widget: 'select', widget: 'select',
placeholder: '请选择', serverSearch: true,
searchDebounceTime: 300,
searchLoadingText: '搜索中...',
allowClear: true, allowClear: true,
visibleIf: { onSearch: (q: any) => {
_$expand: (value: boolean) => value let str = q.replace(/^\s+|\s+$/g, '');
}, let params :any= {}
asyncData: () => this.shipperservice.getChanners() if (str) {
console.log(+str);
if(+str) {
console.log('数字');
params.phoneNumber = str
} else {
console.log('中文');
params.name = str
} }
return this.service
.request(this.service.$api_get_channel, params)
.pipe(map((res: any) => (res as any[]).map(i => ({ label: `${i.name}/${i.telephone}`, value: i.channelId } as SFSchemaEnum))))
.toPromise();
} else {
return of([]);
}
},
} as SFSelectWidgetSchema
}, },
remark: { remark: {
type: 'string', type: 'string',