Merge branch 'develop'

This commit is contained in:
Taric Xin
2022-04-28 17:05:36 +08:00
49 changed files with 557 additions and 343 deletions

View File

@ -1,6 +1,6 @@
{
"name": "tms-obc-web",
"version": "1.0.1",
"version": "1.2.0",
"description": "运营后台-WEB",
"author": "cipchk <cipchk@qq.com>",
"repository": {

View File

@ -4,7 +4,7 @@
* @Author : Shiming
* @Date : 2022-01-18 09:51:21
* @LastEditors : Shiming
* @LastEditTime : 2022-04-28 13:43:18
* @LastEditTime : 2022-04-28 16:08:43
* @FilePath : \\tms-obc-web\\proxy.conf.js
* Copyright (C) 2022 huzhenhong. All rights reserved.
*/

View File

@ -24,9 +24,8 @@ export class ContractManagementIndexComponent implements OnInit {
constructor(private http: _HttpClient, private modal: ModalHelper, private acl: ACLService) {
const acls = acl.data.abilities || [];
this.isShowDetail = !!acls.find(acl => acl === 'CONTRACT-INDEX-searchDetail');
this.isShowFrame = !!acls.find(acl => acl === 'CONTRACT-INDEX-listFrame');
console.log(this.isShowFrame);
this.isShowDetail =acl.data.full || !!acls.find(acl => acl === 'CONTRACT-INDEX-searchDetail');
this.isShowFrame =acl.data.full || !!acls.find(acl => acl === 'CONTRACT-INDEX-listFrame');
}

View File

@ -24,7 +24,7 @@
<div nz-row [nzGutter]="16">
<div nz-col class="gutter-row" [nzSpan]="6">
<g2-card [title]="'订单合格率'" [bordered]="true" [total]="cardData1?.proportion" [footer]="footer1" contentHeight="46">
<g2-card [title]="'订单合格率'" [bordered]="true" [total]="cardData1?.proportion || '0'" [footer]="footer1" contentHeight="46">
<ng-template #footer1>
<div class="card-f">
<span class="card-f-l">合格:{{cardData1?.leftQuantity}}</span> <span>不合格:{{cardData1?.rightQuantity}}</span>
@ -33,7 +33,7 @@
</g2-card>
</div>
<div nz-col class="gutter-row" [nzSpan]="6">
<g2-card [title]="'货源单占比'" [bordered]="true" [total]="cardData2?.proportion" [footer]="footer2" contentHeight="46">
<g2-card [title]="'货源单占比'" [bordered]="true" [total]="cardData2?.proportion|| '0'" [footer]="footer2" contentHeight="46">
<ng-template #footer2>
<div class="card-f">
<span class="card-f-l">货源单:{{cardData2?.leftQuantity}}</span> <span>合同单:{{cardData2?.rightQuantity}}</span>
@ -42,7 +42,7 @@
</g2-card>
</div>
<div nz-col class="gutter-row" [nzSpan]="6">
<g2-card [title]="'运费直付占比'" [bordered]="true" [total]="cardData3?.proportion" [footer]="footer3" contentHeight="46">
<g2-card [title]="'运费直付占比'" [bordered]="true" [total]="cardData3?.proportion|| '0'" [footer]="footer3" contentHeight="46">
<ng-template #footer3>
<div class="card-f">
<span class="card-f-l">司机:{{cardData3?.leftQuantity}}</span> <span>车队长:{{cardData3?.rightQuantity}}</span>
@ -51,7 +51,7 @@
</g2-card>
</div>
<div nz-col class="gutter-row" [nzSpan]="6">
<g2-card [title]="'付款及时率'" [bordered]="true" [total]="cardData4?.proportion" [footer]="footer4" contentHeight="46">
<g2-card [title]="'付款及时率'" [bordered]="true" [total]="cardData4?.proportion|| '0'" [footer]="footer4" contentHeight="46">
<ng-template #footer4>
<div class="card-f">
<span class="card-f-l">准时:{{cardData4?.leftQuantity}}</span> <span>逾期:{{cardData4?.rightQuantity}}</span>

View File

@ -47,27 +47,30 @@ export class DatatableComplianceIndexComponent implements OnInit {
time:this.time
}
this.service.request(this.service.$api_getBillRateQualified, params).subscribe(res => {
if (res) {
this.cardData1 = res;
this.cardData1.proportion = this.cardData1.proportion*100 +'%'
console.log(this.cardData1);
this.cardData1.proportion = (this.cardData1?.proportion*100).toFixed(2) +'%'
}
});
this.service.request(this.service.$api_getBillRateProportion, params).subscribe(res => {
if (res) {
this.cardData2 = res;
this.cardData2.proportion = this.cardData2.proportion*100 +'%'
this.cardData2.proportion = (this.cardData2?.proportion*100).toFixed(2) +'%'
}
});
this.service.request(this.service.$api_getBillRateDirectPayment, params).subscribe(res => {
if (res) {
this.cardData3 = res;
this.cardData3.proportion = this.cardData3.proportion*100 +'%'
this.cardData3.proportion = (this.cardData3?.proportion*100).toFixed(2) +'%'
}
});
this.service.request(this.service.$api_getBillTimelyPayment, params).subscribe(res => {
if (res) {
this.cardData4 = res;
this.cardData4.proportion = this.cardData4.proportion*100 +'%'
this.cardData4.proportion = (this.cardData4?.proportion*100).toFixed(2) +'%'
}
});

View File

@ -186,6 +186,7 @@ export class DriverAccountComponent extends BasicTableComponent implements OnIni
buttons: [
{
text: '查看明细',
acl: { ability: ['FINANCIAL-DRIVER-ACOUNT-view'] },
click: item =>
this.router.navigate(['/financial-management/driver-account/detail/' + item.id], {
queryParams: {

View File

@ -32,7 +32,8 @@
</label>
</div>
<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()" acl
[acl-ability]="['FINANCIAL-PAYMENT-ORDER-list']">筛选</button>
</div>
</div>

View File

@ -23,7 +23,12 @@ export class PlatformAccountComponent implements OnInit {
info: any = {};
static: any = {};
constructor(public service: FreightAccountService, private router: Router, private nzModalService: NzModalService, public modal: NzModalService) { }
constructor(
public service: FreightAccountService,
private router: Router,
private nzModalService: NzModalService,
public modal: NzModalService
) {}
ngOnInit(): void {
this.loadInfo();
@ -187,6 +192,7 @@ export class PlatformAccountComponent implements OnInit {
buttons: [
{
text: '查看明细 ',
acl: { ability: ['FINANCIAL-PLATFORM-view'] },
click: item =>
this.router.navigate(['/financial-management/platform-account/detail/' + item.id], {
queryParams: { ltdId: item.ltdId, bankType: item.bankType, ltdName: `${item.ltdName}(${item.bankTypeLabel})` }
@ -195,7 +201,7 @@ export class PlatformAccountComponent implements OnInit {
{
text: '提现',
click: item => this.withdraw(item),
iif: (_record) => _record.bankType !== '1'
iif: _record => _record.bankType !== '1'
},
// {
// text: '绑定银行卡',
@ -204,8 +210,8 @@ export class PlatformAccountComponent implements OnInit {
{
text: '查看银行卡',
click: item => this.viewBankcard(item),
iif: (_record) => _record.bankType !== '1'
},
iif: _record => _record.bankType !== '1'
}
]
}
];
@ -224,10 +230,9 @@ export class PlatformAccountComponent implements OnInit {
i: item
}
});
modalRef.afterOpen.subscribe(() => { });
modalRef.afterClose.subscribe((result) => {
modalRef.afterOpen.subscribe(() => {});
modalRef.afterClose.subscribe(result => {
if (result) this.st.reload();
});
}
@ -244,7 +249,7 @@ export class PlatformAccountComponent implements OnInit {
}
exportList() {
this.service.exportStart({ ...this.sf.value, pageSize: -1 }, this.service.$api_get_exportPlatformAccountBalanceByOperator,);
this.service.exportStart({ ...this.sf.value, pageSize: -1 }, this.service.$api_get_exportPlatformAccountBalanceByOperator);
}
// 提现
@ -264,7 +269,6 @@ export class PlatformAccountComponent implements OnInit {
// this.getSummary();
// this.withdrawTable.refresh();
}
})
});
}
}

View File

@ -251,6 +251,7 @@ export class ReceiptOrderComponent extends BasicTableComponent implements OnInit
buttons: [
{
text: '浏览',
acl: { ability: ['FINANCIAL-RECEIPT-view'] },
click: item => this.router.navigate(['/financial-management/receipt-order/detail/' + item.id])
}
// {

View File

@ -283,10 +283,12 @@ export class VoucherSummaryComponent extends BasicTableComponent implements OnIn
buttons: [
{
text: '浏览',
acl: { ability: ['FINANCIAL-VOUCHER-SUMMARY-view'] },
click: (item: any) => this.router.navigate(['/financial-management/voucher-summary/detail/' + item.id])
},
{
text: '列表',
acl: { ability: ['FINANCIAL-VOUCHER-SUMMARY-child-list'] },
click: (item: any) => this.router.navigate(['/financial-management/voucher-summary/list/' + item.vc2code])
}
]

View File

@ -38,17 +38,25 @@ import { CwcBankCardManagementIndexComponent } from './components/bank-card-mana
const routes: Routes = [
{ path: 'freight-account', component: FreightAccountComponent, data: { guard: { ability: ['FINANCIAL-FREIGHT-ACOUNT-list'] } } },
{ path: 'freight-account/detail/:id', component: FreightAccountDetailComponent },
{ path: 'driver-account', component: DriverAccountComponent },
{ path: 'driver-account/detail/:id', component: DriverAccountDetailComponent },
{ path: 'platform-account', component: PlatformAccountComponent },
{ path: 'platform-account/detail/:id', component: PlatformAccountDetailComponent },
{ path: 'driver-account', component: DriverAccountComponent, data: { guard: { ability: ['FINANCIAL-DRIVER-ACOUNT-list'] } } },
{
path: 'driver-account/detail/:id',
component: DriverAccountDetailComponent,
data: { guard: { ability: ['FINANCIAL-DRIVER-ACOUNT-DETAIL-view'] } }
},
{ path: 'platform-account', component: PlatformAccountComponent, data: { guard: { ability: ['FINANCIAL-PLATFORM-list'] } } },
{
path: 'platform-account/detail/:id',
component: PlatformAccountDetailComponent,
data: { guard: { ability: ['FINANCIAL-PLATFORM-DETAIL-detail'] } }
},
{ path: 'recharge-record', component: RechargeRecordComponent },
{ path: 'withdrawals-record', component: WithdrawalsRecordComponent },
{ path: 'withdrawals-record/detail/:id', component: WithdrawalsDetailComponent },
{ path: 'refund-record', component: RefundRecordComponent },
{ path: 'voucher-management', component: VoucherManagementComponent },
{ path: 'voucher-management/detail/:id', component: VoucherDetailComponent },
{ path: 'voucher-summary', component: VoucherSummaryComponent },
{ path: 'voucher-summary', component: VoucherSummaryComponent, data: { guard: { ability: ['FINANCIAL-VOUCHER-SUMMARY-list'] } } },
{ path: 'voucher-summary/detail/:id', component: SummaryDetailComponent },
{ path: 'voucher-summary/list/:id', component: VoucherListComponent },
{ path: 'voucher-summary/list/detail/:id', component: VoucherDetailComponent },
@ -60,22 +68,29 @@ const routes: Routes = [
{ path: 'abnormal-gold/detail/:id', component: AbnormalGoldDetailComponent },
{ path: 'payment-record', component: PaymentRecordComponent },
{ path: 'transaction-flow', component: TransactionFlowComponent },
{ path: 'payment-order', component: PaymentOrderComponent },
{ path: 'payment-order', component: PaymentOrderComponent, data: { guard: { ability: ['FINANCIAL-PAYMENT-ORDER-list'] } } },
{ path: 'payment-order/detail/:id', component: PaymentOrderDetailComponent },
{ path: 'receipt-order', component: ReceiptOrderComponent },
{ path: 'receipt-order', component: ReceiptOrderComponent, data: { guard: { ability: ['FINANCIAL-RECEIPT-list'] } } },
{ path: 'receipt-order/detail/:id', component: ReceiptOrderDetailComponent },
{ path: 'advance-collection', component: AdvanceCollectionComponent },
{ path: 'advance-collection/detail/:id', component: AdvanceCollectionDetailComponent },
{ path: 'receivable-order', component: ReceivableOrderComponent },
{ path: 'receivable-order/detail/:id', component: ReceivableOrderDetailComponent },
{ path: 'payable-order', component: PayableOrderComponent },
{ path: 'payable-order/detail/:id', component: PayableOrderDetailComponent },
{ path: 'bank-card-management/index', component: CwcBankCardManagementIndexComponent },
{ path: 'receivable-order', component: ReceivableOrderComponent, data: { guard: { ability: ['FINANCIAL-RECEIVABLE-list'] } } },
{
path: 'receivable-order/detail/:id',
component: ReceivableOrderDetailComponent,
data: { guard: { ability: ['FINANCIAL-RECEIVABLE-DETAIL-view'] } }
},
{ path: 'payable-order', component: PayableOrderComponent, data: { guard: { ability: ['FINANCIAL-PAYABLE-list'] } } },
{
path: 'payable-order/detail/:id',
component: PayableOrderDetailComponent,
data: { guard: { ability: ['FINANCIAL-PAYABLE-DETAIL-view'] } }
},
{ path: 'bank-card-management/index', component: CwcBankCardManagementIndexComponent }
];
@NgModule({
imports: [RouterModule.forChild(routes)],
exports: [RouterModule]
})
export class FinancialManagementRoutingModule { }
export class FinancialManagementRoutingModule {}

View File

@ -13,13 +13,12 @@ import { RouterModule, Routes } from '@angular/router';
import { insuranceManagementListComponent } from './components/list/list.component';
import { insuranceManagementSetComponent } from './components/set/set.component';
const routes: Routes = [
{ path: 'list', component: insuranceManagementListComponent },
{ path: 'list-set', component: insuranceManagementSetComponent },
]
{ path: 'list', component: insuranceManagementListComponent, data: { guard: { ability: ['INSURANCE-LIST-search'] } } },
{ path: 'list-set', component: insuranceManagementSetComponent, data: { guard: { ability: ['INSURANCE-LISTDETAIL-set'] } } }
];
@NgModule({
imports: [RouterModule.forChild(routes)],
exports: [RouterModule]
})
export class InsuranceManagementRoutingModule { }
export class InsuranceManagementRoutingModule {}

View File

@ -23,8 +23,8 @@
<nz-card class="content-box">
<nz-tabset>
<nz-tab nzTitle="货主菜单" (nzClick)="changeMemu(0)"></nz-tab>
<nz-tab nzTitle="运营后台菜单" (nzClick)="changeMemu(1)"></nz-tab>
<nz-tab nzTitle="货主菜单" (nzClick)="changeMemu(0)" *ngIf="isShowFre"></nz-tab>
<nz-tab nzTitle="运营后台菜单" (nzClick)="changeMemu(1)" *ngIf="isShowBackEND"></nz-tab>
</nz-tabset>
<!-- <st #st [data]="service.$api_get_all" [columns]="columns" [expand]="expand" expandRowByClick
@ -36,7 +36,7 @@
</ng-template>
</st> -->
<nz-table #expandTable [nzData]="listOfMapData" nzTableLayout="fixed" nzBordered nzSize="small"
[nzLoading]="service.http.loading">
[nzLoading]="service.http.loading" *ngIf="isShowFre || isShowBackEND">
<thead>
<tr>
<!-- <th nzWidth="70px" nzAlign="center">#</th> -->
@ -65,7 +65,7 @@
</td>
<td nzWidth="100px">{{ item.sorted }}</td>
<td nzWidth="150px" nzAlign="center">
<a (click)="openDrawer(item)">权限配置</a>
<a (click)="openDrawer(item)" acl [acl-ability]="['MENU-AUTH-auth']">权限配置</a>
</td>
</tr>
</ng-container>

View File

@ -1,4 +1,5 @@
import { Component, OnInit, ViewChild } from '@angular/core';
import { ACLService } from '@delon/acl';
import { SFComponent, SFSchema } from '@delon/form';
import { EAEnvironmentService } from '@shared';
import { NzDrawerService } from 'ng-zorro-antd/drawer';
@ -34,14 +35,26 @@ export class ApiAuthComponent implements OnInit {
mapOfExpandedData: { [key: string]: any[] } = {};
listOfMapData: any[] = [];
constructor(private envSrv: EAEnvironmentService, public service: MenuManagerService, private drawer: NzDrawerService) {
isShowBackEND = false;
isShowFre = false;
constructor(
private envSrv: EAEnvironmentService,
public service: MenuManagerService,
private drawer: NzDrawerService,
private acl: ACLService
) {
const acls = acl.data.abilities || [];
this.isShowBackEND = acl.data.full || !!acls.find(acl => acl === 'MENU-AUTH-obclist');
this.isShowFre = acl.data.full || !!acls.find(acl => acl === 'MENU-AUTH-smclist');
this.initData();
}
ngOnInit(): void {}
initData(): void {
this.selectedPlatform = this.platforms[0];
this.selectedPlatform = this.isShowFre ? this.platforms[0] : this.platforms[1];
this.loadMemu(this.selectedPlatform.appId);
}

View File

@ -23,14 +23,15 @@
<nz-card class="content-box">
<nz-tabset [nzTabBarExtraContent]="extraTemplate">
<nz-tab nzTitle="货主菜单" (nzClick)="changeMemu(0)"></nz-tab>
<nz-tab nzTitle="运营后台菜单" (nzClick)="changeMemu(1)"></nz-tab>
<nz-tab nzTitle="货主菜单" (nzClick)="changeMemu(0)" *ngIf="isShowFre"></nz-tab>
<nz-tab nzTitle="运营后台菜单" (nzClick)="changeMemu(1)" *ngIf="isShowBackEND"></nz-tab>
</nz-tabset>
<ng-template #extraTemplate>
<div class="d-flex align-items-center">
<div>
<button nz-button nzType="primary" (click)="menuAction('新增菜单')">新增</button>
<button nz-button nzType="primary" (click)="menuSort()">菜单排序</button>
<button nz-button nzType="primary" (click)="menuAction('新增菜单')" acl
[acl-ability]="['MENU-INDEX-add']">新增</button>
<button nz-button nzType="primary" (click)="menuSort()" acl [acl-ability]="['MENU-INDEX-sort']">菜单排序</button>
<!-- <button nz-button nzType="primary" (click)="menuImport(0)" [disabled]="false"
*ngIf="selectedPlatform.enName==='tms-smc-web'">
导入货主菜单
@ -52,7 +53,7 @@
</ng-template>
</st> -->
<nz-table #expandTable [nzData]="listOfMapData" nzTableLayout="fixed" nzBordered nzSize="small"
[nzLoading]="service.http.loading">
[nzLoading]="service.http.loading" *ngIf="isShowFre || isShowBackEND">
<thead>
<tr>
<!-- <th nzWidth="70px" nzAlign="center">#</th> -->
@ -85,12 +86,12 @@
<td nzAlign="center" nzWidth="250px">
<a (click)="menuAction('查看菜单',item,item.parentId,true)">查看</a>
<nz-divider nzType="vertical"></nz-divider>
<a (click)="menuAction('编辑菜单',item,item.parentId)">编辑</a>
<a (click)="menuAction('编辑菜单',item,item.parentId)" acl [acl-ability]="['MENU-INDEX-edit']">编辑</a>
<nz-divider nzType="vertical"></nz-divider>
<a (click)="deleteAction(item)">删除</a>
<a (click)="deleteAction(item)" acl [acl-ability]="['MENU-INDEX-delete']">删除</a>
<ng-container *ngIf="item.level!==3">
<nz-divider nzType="vertical"></nz-divider>
<a (click)="menuAction('新增菜单',null,item.id)">新增子项</a>
<a (click)="menuAction('新增菜单',null,item.id)" acl [acl-ability]="['MENU-INDEX-add']">新增子项</a>
</ng-container>
</td>
</tr>

View File

@ -1,5 +1,6 @@
import { Component, OnInit, ViewChild } from '@angular/core';
import { STComponent, STColumn, STRequestOptions, STChange } from '@delon/abc/st';
import { ACLService } from '@delon/acl';
import { SFComponent, SFSchema } from '@delon/form';
import { Menu, ModalHelper } from '@delon/theme';
import { EAEnvironmentService } from '@shared';
@ -37,14 +38,26 @@ export class MenuManagerComponentsIndexComponent implements OnInit {
mapOfExpandedData: { [key: string]: any[] } = {};
listOfMapData: any[] = [];
constructor(private envSrv: EAEnvironmentService, public service: MenuManagerService, private modal: NzModalService, private modalHelper: ModalHelper,) {
isShowBackEND = false;
isShowFre = false;
constructor(
private envSrv: EAEnvironmentService,
public service: MenuManagerService,
private modal: NzModalService,
private modalHelper: ModalHelper,
private acl: ACLService
) {
const acls = acl.data.abilities || [];
this.isShowBackEND = acl.data.full || !!acls.find(acl => acl === 'MENU-INDEX-obclist');
this.isShowFre = acl.data.full || !!acls.find(acl => acl === 'MENU-INDEX-smclist');
this.initData();
}
ngOnInit(): void {}
initData(): void {
this.selectedPlatform = this.platforms[0];
this.selectedPlatform = this.isShowFre ? this.platforms[0] : this.platforms[1];
this.loadMemu(this.selectedPlatform.appId);
}
@ -126,13 +139,13 @@ export class MenuManagerComponentsIndexComponent implements OnInit {
}
});
}
menuSort(){
menuSort() {
const dialogData = {
appId: this.selectedPlatform.appId
};
this.modalHelper.create(MenuManagerMenusortComponent, { i: dialogData }, { size: 900 }).subscribe((res:any) => {
if(res) {
console.log('a')
this.modalHelper.create(MenuManagerMenusortComponent, { i: dialogData }, { size: 900 }).subscribe((res: any) => {
if (res) {
console.log('a');
this.loadMemu(this.selectedPlatform.appId);
}
});

View File

@ -5,12 +5,16 @@ import { MenuManagerComponentsIndexComponent } from './components/index/index.co
const routes: Routes = [
{ path: '', redirectTo: 'index', pathMatch: 'full' },
{ path: 'index', component: MenuManagerComponentsIndexComponent },
{ path: 'auth', component: ApiAuthComponent },
{
path: 'index',
component: MenuManagerComponentsIndexComponent,
data: { guard: { ability: ['MENU-INDEX-obclist', 'MENU-INDEX-smclist'] } }
},
{ path: 'auth', component: ApiAuthComponent, data: { guard: { ability: ['MENU-AUTH-obclist', 'MENU-AUTH-smclist'] } } }
];
@NgModule({
imports: [RouterModule.forChild(routes)],
exports: [RouterModule],
exports: [RouterModule]
})
export class MenuManagerRoutingModule {}

View File

@ -6,13 +6,21 @@
</button>
</ng-template>
<ng-template #headerContent>
<div class="mb-xs" nz-row>
<div class="mb-sm common-order-header" nz-row>
<button nz-button nzType="primary" nzSize="small" nzDanger>{{ i?.resourceStatusLabel }}</button>
<h4 class="ml-md">货源编码 : {{ i?.resourceCode }}</h4>
<b class="ml-md">货源编码 : {{ i?.resourceCode }}</b>
</div>
<div nz-row>
<div nz-col nzSpan="14" class="text-grey-darker">网络货运人:{{ i?.shipperAppUserName }}</div>
<div nz-col nzSpan="10">
<div>
<button nz-button (click)="cancleGoodsSource()" *ngIf="i?.resourceStatus === '1'" acl
[acl-ability]="['SUPPLY-BULK-DETAIL-cancelSupply']">取消货源</button>
<button nz-button (click)="updatePrice(i)" *ngIf="i?.resourceStatus === '1'" acl
[acl-ability]="['SUPPLY-BULK-DETAIL-updatePrice']">修改单价</button>
<button nz-button nzType="primary" nzGhost (click)="placeOrder(i)" acl
[acl-ability]="['SUPPLY-BULK-DETAIL-bulkAnotherOrder']">再下一单</button>
</div>
<!-- <div class="common-order-header" nz-row>
<div class="common-grey">网络货运人:{{ i?.shipperAppUserName }}</div>
<div>
<button nz-button (click)="cancleGoodsSource()" *ngIf="i?.resourceStatus === '1'" acl
[acl-ability]="['SUPPLY-BULK-DETAIL-cancelSupply']">取消货源</button>
<button nz-button (click)="updatePrice(i)" *ngIf="i?.resourceStatus === '1'" acl
@ -20,14 +28,15 @@
<button nz-button nzType="primary" nzGhost (click)="placeOrder(i)" acl
[acl-ability]="['SUPPLY-BULK-DETAIL-bulkAnotherOrder']">再下一单</button>
</div>
</div>
<div class="mt-sm mb-sm" nz-row>
</div> -->
<!-- <div class="mt-sm mb-sm" nz-row>
<div>
<b>总费用:<span class="text-red-light text-md">{{ i?.totalAmount | currency: '¥' }}</span></b>
</div>
</div>
</div> -->
<nz-divider></nz-divider>
<div sv-container>
<sv label="网络货运人">{{ i?.shipperAppUserName }}</sv>
<sv label="项目">{{ i?.enterpriseProjectName }}</sv>
<sv label="截止时间">{{ i?.deadlineTime }}</sv>
<sv label="录单员">{{ i?.createUserName }}/{{ i?.createUserPhone }}</sv>
@ -37,13 +46,12 @@
</ng-template>
</page-header-wrapper>
<nz-card [nzBorderless]="true" class="mb0">
<div class="mb-xs" nz-row>
<button nz-button nzType="primary" nzSize="small" nzDanger>{{ i?.resourceStatusLabel }}</button>
<h4 class="ml-md">货源编码 : {{ i?.resourceCode }}</h4>
</div>
<div nz-row>
<div nz-col nzSpan="14" class="text-grey-darker">网络货运人:{{ i?.shipperAppUserName }}</div>
<div nz-col nzSpan="10">
<div class="mb-sm common-order-header" nz-row>
<div>
<button nz-button nzType="primary" nzSize="small" nzDanger>{{ i?.resourceStatusLabel }}</button>
<b class="ml-md">货源编码 : {{ i?.resourceCode }}</b>
</div>
<div>
<button nz-button (click)="cancleGoodsSource()" *ngIf="i?.resourceStatus === '1'" acl
[acl-ability]="['SUPPLY-BULK-DETAIL-cancelSupply']">取消货源</button>
<button nz-button (click)="updatePrice(i)" *ngIf="i?.resourceStatus === '1'" acl
@ -52,13 +60,14 @@
[acl-ability]="['SUPPLY-BULK-DETAIL-bulkAnotherOrder']">再下一单</button>
</div>
</div>
<div class="mt-sm mb-sm" nz-row>
<!-- <div class="mt-sm mb-sm" nz-row>
<div>
<b>总费用:<span class="text-red-light text-md">{{ i?.totalAmount | currency: '¥' }}</span></b>
</div>
</div>
<nz-divider></nz-divider>
<div sv-container>
</div> -->
<nz-divider class="divider-margin"></nz-divider>
<div class="mb-lg" sv-container>
<sv label="网络货运人">{{ i?.shipperAppUserName }}</sv>
<sv label="项目">{{ i?.enterpriseProjectName }}</sv>
<sv label="截止时间">{{ i?.deadlineTime }}</sv>
<sv label="录单员">{{ i?.createUserName }}/{{ i?.createUserPhone }}</sv>
@ -66,8 +75,8 @@
<sv label="服务类型">{{ i?.serviceTypeLabel }} </sv>
</div>
<div class="approval-status">
<div style="width: 60%; margin: 0 auto">
<nz-steps style="width: 70%; margin: 0 auto" [nzLabelPlacement]="'vertical'">
<div class="step-row">
<nz-steps [nzLabelPlacement]="'vertical'">
<nz-step [nzStatus]="i?.resourceStatus !== '1'?'finish':'process'" nzIcon="solution"
[nzDescription]="i?.createTime" nzTitle="下单"></nz-step>
<nz-step *ngIf="i?.resourceStatus === '1' || i?.resourceStatus === '4' "
@ -80,13 +89,22 @@
</div>
</div>
<div class="mt-md">
<h4 class="text-md">装货卸货信息
<div class="font-weight-blod text-md detail-title">
<a class="sign mr-xs"></a>
<span>装货卸货信息</span>
<span class="ml-sm text-sm">(
<label>{{ i?.loadingCount || '一' }}装</label>
<label>{{ i?.unloadingCount || '一' }}卸</label>
)
</span>
</h4>
</div>
<!-- <h4 class="text-md">装货卸货信息
<span class="ml-sm text-sm">(
<label>{{ i?.loadingCount || '一' }}装</label>
<label>{{ i?.unloadingCount || '一' }}卸</label>
)
</span>
</h4> -->
<div nz-row [nzGutter]="24">
<div nz-col [nzSpan]="12">
<div class="handling-info p-md">
@ -95,7 +113,7 @@
<div class="handling-info-icon loading-bg"></div>
<div class="info">
<h4>装货地:{{ item?.province }}{{ item?.city }}{{ item?.area }}{{ item?.detailedAddress }}</h4>
<p>联系人:{{ item?.appUserName }}/{{ item?.contractTelephone }}</p>
<p class="mb0">联系人:{{ item?.appUserName }}/{{ item?.contractTelephone }}</p>
</div>
</div>
</div>
@ -109,7 +127,7 @@
<div class="handling-info-icon unloaing-bg"></div>
<div class="info">
<h4>卸货地:{{ item?.province }}{{ item?.city }}{{ item?.area }}{{ item?.detailedAddress }}</h4>
<p>联系人:{{ item?.appUserName }}/{{ item?.contractTelephone }}</p>
<p class="mb0">联系人:{{ item?.appUserName }}/{{ item?.contractTelephone }}</p>
</div>
</div>
</div>
@ -140,6 +158,15 @@
<sv label="用车需求">
{{item.carModelLabel || '--'}} / {{item.carLengthLabel || '--'}}<span *ngIf="item.carLength !=='999'"></span>
</sv>
<sv label="承运司机"
*ngIf="i?.carrierInformationVO?.driverTelephone && (i?.carrierInformationVO?.driverTelephone !== i?.payeePhone)">
{{i?.carrierInformationVO?.driverName || '--'}} / {{i?.carrierInformationVO?.driverTelephone || '--'}} /
{{i?.carrierInformationVO?.driverLicensePlate || '--'}}
</sv>
<sv label="车型车长载重">
{{i?.driverCarModelLabel || '--'}} / {{(i?.driverCarLength || '--') +'米'}} / {{(i?.driverCarWeight ||
'--')+'吨'}}
</sv>
<!-- <sv label="承运信息">
{{i?.carrierInformationVO?.driverName}} / {{i?.carrierInformationVO?.driverTelephone}} /
{{i?.carrierInformationVO?.driverLicensePlate}}
@ -152,26 +179,35 @@
</nz-card>
<nz-card [nzBorderless]="true" class="mb0" nzTitle="运费信息">
<nz-card [nzBorderless]="true" class="mb0">
<div class="font-weight-blod text-md detail-title">
<a class="sign mr-xs"></a>
<span>运费信息</span>
<span class="pl-sm text-warning">(到货后{{i?.paymentDays}}天内支付运费)</span>
</div>
<div>
<div nz-row>
<div *ngFor="let item of i?.goodsInfoVOList" nz-col nzSpan="24">
<div>
<p class="text-warning-light mb-xs text-right">收货后{{ i?.paymentDays }}天内支付运费</p>
<p class="mb-xs text-right"> {{ settlementBasis[item?.settlementBasis] }}{{ rule[item?.rule] }}</p>
</div>
<nz-divider class="mb-xs mt-xs"></nz-divider>
<div class="text-right">
<label>运费单价:</label>
<span class="text-error-dark text-xxl">{{ item?.freightPrice | currency: '¥' }} {{
freightType[item?.freightType] }}</span>
<span>(附加费率{{i?.rate * 100 | number: '0.2-2'}}%</span>
</div>
<nz-divider class="mb-xs mt-xs"></nz-divider>
<div>
<!-- <p class="text-warning-light mb-xs text-right">收货后{{ i?.paymentDays }}天内支付运费</p> -->
<p class="mb0 text-right"> {{ settlementBasis[item?.settlementBasis] }}{{ rule[item?.rule] }}</p>
</div>
</div>
</div>
</div>
</nz-card>
<nz-card [nzBorderless]="true" class="mb0" nzTitle="关联订单">
<nz-card [nzBorderless]="true" class="mb0">
<div class="font-weight-blod text-md detail-title">
<a class="sign mr-xs"></a>
<span>关联订单</span>
</div>
<sv-container col="5">
<sv [label]="item?.wayBillStatusLabel" *ngFor="let item of i?.wayBillClassifiedStatisticsVOList">
(<span [ngClass]="{ 'text-primary': item?.count > 0 }">{{ item?.count }}</span>)
@ -190,7 +226,11 @@
</sv> -->
</sv-container>
</nz-card>
<nz-card [nzBorderless]="true" class="mb0" nzTitle="补充信息">
<nz-card [nzBorderless]="true" class="mb0">
<div class="font-weight-blod text-md detail-title">
<a class="sign mr-xs"></a>
<span>补充信息</span>
</div>
<sv-container>
<sv label="是否回单">
{{ i?.supplementaryInformationVO?.stateReceipt ? '是' : '否' }}
@ -213,10 +253,14 @@
</sv>
</sv-container>
</nz-card>
<nz-card [nzBorderless]="true" class="mb0" nzTitle="操作日志">
<nz-card [nzBorderless]="true" class="mb0">
<div class="font-weight-blod text-md detail-title">
<a class="sign mr-xs"></a>
<span>操作日志</span>
</div>
<st #st [data]="service.$api_getOperationLogRecordsList" [columns]="logColumns" [page]="{}"
[req]="{ method: 'POST', allInBody: true, reName: { pi: 'pageIndex', ps: 'pageSize' }, params: reqParams }"
[res]="{ reName: { list: 'data.records', total: 'data.total' } }">
[res]="{ reName: { list: 'data.records', total: 'data.total' } }" [size]="'small'">
</st>
</nz-card>
</div>

View File

@ -48,7 +48,7 @@
}
.handling-info {
min-height: 100px;
min-height: 90px;
border: 1px solid #ccc;
.loading-row {

View File

@ -125,7 +125,7 @@ export class SupplyManagementBulkDetailComponent implements OnInit {
*/
placeOrder(record: any) {
console.log(record)
this.router.navigate(['/supply-management/bulk-amend', record.id], {
this.router.navigate(['/supply-management/bulk-next', record.id], {
queryParams: {
sta: 4
},

View File

@ -492,7 +492,7 @@ export class SupplyManagementBulkComponent extends BasicTableComponent implement
// 再下一单
nextOrder(item: any) {
this.router.navigate(['/supply-management/bulk-amend', item.id], {
this.router.navigate(['/supply-management/bulk-next', item.id], {
queryParams: {
sta: 4
}

View File

@ -25,10 +25,10 @@
<label class="page_title"> <label class="driver">|</label> 货源管理</label>
</div>
<nz-tabset [(nzSelectedIndex)]="selectedIndex" class="header_tab">
<nz-tab nzTitle="整车货源">
<nz-tab nzTitle="整车货源" *ngIf="isShowVehicle">
<app-supply-management-vehicle></app-supply-management-vehicle>
</nz-tab>
<nz-tab nzTitle="大宗货源">
<nz-tab nzTitle="大宗货源" *ngIf="isShowBulk">
<app-supply-management-bulk></app-supply-management-bulk>
</nz-tab>
</nz-tabset>

View File

@ -1,5 +1,6 @@
import { Component, OnInit, ViewChild } from '@angular/core';
import { STColumn, STComponent } from '@delon/abc/st';
import { ACLService } from '@delon/acl';
import { SFSchema } from '@delon/form';
import { ModalHelper, _HttpClient } from '@delon/theme';
import { SearchDrawerService } from '@shared';
@ -12,7 +13,14 @@ import { BasicTableComponent } from 'src/app/routes/commom';
})
export class SupplyManagementIndexComponent implements OnInit {
selectedIndex = 0;
isShowVehicle = false;
isShowBulk = false;
constructor(private http: _HttpClient, private modal: ModalHelper, private acl: ACLService) {
const acls = acl.data.abilities || [];
this.isShowVehicle = acl.data.full || !!acls.find(acl => acl === 'SUPPLY-INDEX-vehicleSearch');
this.isShowBulk = acl.data.full || !!acls.find(acl => acl === 'SUPPLY-INDEX-bulkSearch');
}
ngOnInit(): void {}
}

View File

@ -260,9 +260,9 @@
<button *ngIf="this.PageStatus == '整车修改'" nz-button nzType="primary" style="margin-left: 48px"
(click)="submitConfirm()" acl [acl-ability]="['SUPPLY-VEHICLE-AMEND-submitChange']">提交修改</button>
<button nz-button nzType="primary" *ngIf="this.PageStatus == '整车下一单'" (click)="submitConfirm('assign')" acl
[acl-ability]="['SUPPLY-BULK-PLACEORDER-vehicleDesignate']">指派熟车</button>
[acl-ability]="['SUPPLY-VEHICLE-PLACEORDER-vehicleDesignate']">指派熟车</button>
<button *ngIf="this.PageStatus == '整车下一单'" nz-button nzType="primary" style="margin-left: 48px"
(click)="submitConfirm('publish')" acl
[acl-ability]="['SUPPLY-BULK-PLACEORDER-vehicleAnotherOrder']">司机抢单</button>
[acl-ability]="['SUPPLY-VEHICLE-PLACEORDER-vehicleAnotherOrder']">司机抢单</button>
</div>
</nz-card>

View File

@ -6,48 +6,14 @@
<i nz-icon nzType="left" nzTheme="outline"></i>
</button>
</ng-template>
<ng-template #headerContent>
<div class="mb-xs" nz-row>
<button nz-button nzType="primary" nzSize="small" nzDanger>{{ i?.resourceStatusLabel }}</button>
<h4 class="ml-md">货源编码 : {{ i?.resourceCode }}</h4>
</div>
<div nz-row>
<div nz-col nzSpan="14" class="text-grey-darker">网络货运人:{{ i?.enterpriseInfoName }}</div>
<div nz-col nzSpan="10">
<button nz-button (click)="cancleGoodsSource()" *ngIf="i?.resourceStatus === '1'" acl
[acl-ability]="['SUPPLY-VEHICLE-DETAIL-cancelSupply']">取消货源</button>
<button nz-button (click)="assignedCar(i)" *ngIf="i?.resourceStatus === '1' && i?.serviceType === '2'" acl
[acl-ability]="['SUPPLY-VEHICLE-DETAIL-vehicleAnew']">重新指派</button>
<button nz-button (click)="updateGoodsSource(i)"
*ngIf="i?.resourceStatus === '1' && i.insurancePayment !== 'Y'" acl
[acl-ability]="['SUPPLY-VEHICLE-DETAIL-changeSupply']">修改货源</button>
<button nz-button nzType="primary" nzGhost (click)="nextOrder(i)" acl
[acl-ability]="['SUPPLY-VEHICLE-DETAIL-vehiclePlaceOrder']">再下一单</button>
</div>
</div>
<div class="mt-sm mb-sm" nz-row>
<div>
<b>总费用:<span class="text-red-light text-md">{{ i?.totalAmount | currency }}</span></b>
</div>
</div>
<nz-divider></nz-divider>
<div sv-container *ngIf="i">
<sv label="外部货源号">{{ i?.externalResourceCode }} </sv>
<sv label="项目">{{ i?.enterpriseProjectName }}</sv>
<sv label="录单员">{{ i?.createUserName }}/{{ i?.createUserPhone }}</sv>
<sv label="调度员">{{ i?.dispatchName }}/{{ i?.dispatchPhone }} </sv>
<sv label="服务类型">{{ i?.serviceTypeLabel }} </sv>
</div>
</ng-template>
</page-header-wrapper>
<nz-card [nzBorderless]="true" class="mb0">
<div class="mb-xs" nz-row>
<button nz-button nzType="primary" nzSize="small" nzDanger>{{ i?.resourceStatusLabel }}</button>
<h4 class="ml-md">货源编码 : {{ i?.resourceCode }}</h4>
</div>
<div nz-row>
<div nz-col nzSpan="14" class="text-grey-darker">网络货运人:{{ i?.enterpriseInfoName }}</div>
<div nz-col nzSpan="10">
<div class="mb-sm common-order-header" nz-row>
<div>
<button nz-button nzType="primary" nzSize="small" nzDanger>{{ i?.resourceStatusLabel }}</button>
<b class="ml-md">货源编码 : {{ i?.resourceCode }}</b>
</div>
<div>
<button nz-button (click)="cancleGoodsSource()" *ngIf="i?.resourceStatus === '1'" acl
[acl-ability]="['SUPPLY-VEHICLE-DETAIL-cancelSupply']">取消货源</button>
<button nz-button (click)="assignedCar(i)" *ngIf="i?.resourceStatus === '1' && i?.serviceType === '2'" acl
@ -65,7 +31,8 @@
</div>
</div> -->
<nz-divider class="divider-margin"></nz-divider>
<div class="mb-lg" sv-container *ngIf="i">
<div class="mb-lg" sv-container>
<sv label="网络货运人">{{ i?.enterpriseInfoName }} </sv>
<sv label="外部货源号">{{ i?.externalResourceCode }} </sv>
<sv label="项目">{{ i?.enterpriseProjectName }}</sv>
<sv label="录单员">{{ i?.createUserName }}/{{ i?.createUserPhone }}</sv>
@ -85,50 +52,24 @@
</nz-steps>
</div>
</div>
</nz-card>
<nz-card [nzBorderless]="true" class="mb0">
<div class="font-weight-blod text-md detail-title">
<a class="sign mr-xs"></a>
<span>基本信息</span>
</div>
<sv-container col="2">
<!-- <sv-title>货物信息</sv-title> -->
<ng-container *ngFor="let item of i?.goodsInfoVOList">
<sv label="货物名称">
{{ item.goodsTypeName }} - {{ item.goodsName }}
</sv>
<sv label="货物数量"> {{ item.weight }}吨,{{ item.volume }}方,{{ item.number }}件 </sv>
</ng-container>
</sv-container>
<sv-container class="mt-md">
<!-- <sv-title>承运信息</sv-title> -->
<sv label="司机姓名">
{{ i?.carrierInformationVO?.driverName }}
</sv>
<sv label="手机号">
{{ i?.carrierInformationVO?.driverTelephone }}
</sv>
<sv label="车牌号">
{{ i?.carrierInformationVO?.driverLicensePlate }}
</sv>
</sv-container>
<sv label="承运司机" *ngIf="i?.carrierInformationVO.driverTelephone !== i?.payeePhone">
{{i?.carrierInformationVO.driverName || '--'}} / {{i?.carrierInformationVO.driverTelephone || '--'}} /
{{i?.carrierInformationVO.driverLicensePlate || '--'}}
</sv>
<sv label="车型车长载重">
{{i?.driverCarModelLabel || '--'}} / {{(i?.driverCarLength || '--') +'米'}} / {{(i?.driverCarWeight ||
'--')+'吨'}}
</sv>
<div class="mt-md">
<h4 class="text-md">装货卸货信息
<!-- <h4 class="text-md">装货卸货信息
<span class="ml-sm text-sm">(
<label>{{ i?.loadingCount }}装</label>
<label>{{ i?.unloadingCount }}卸</label>
)
</span>
</h4>
</h4> -->
<div class="font-weight-blod text-md detail-title">
<a class="sign mr-xs"></a>
<span>装货卸货信息</span>
<span class="ml-sm text-sm">(
<label>{{ i?.loadingCount }}装</label>
<label>{{ i?.unloadingCount }}卸</label>
)
</span>
</div>
<div nz-row [nzGutter]="24">
<div nz-col [nzSpan]="12">
<div class="handling-info p-md">
@ -166,6 +107,42 @@
</div>
</nz-card>
<nz-card [nzBorderless]="true" class="mb0">
<div class="font-weight-blod text-md detail-title">
<a class="sign mr-xs"></a>
<span>基本信息</span>
</div>
<sv-container col="2">
<!-- <sv-title>货物信息</sv-title> -->
<ng-container *ngFor="let item of i?.goodsInfoVOList">
<sv label="货物名称">
{{ item.goodsTypeName }} - {{ item.goodsName }}
</sv>
<sv label="货物数量"> {{ item.weight }}吨,{{ item.volume }}方,{{ item.number }}件 </sv>
<sv label="承运司机" *ngIf="i?.carrierInformationVO?.driverTelephone !== i?.payeePhone">
{{i?.carrierInformationVO?.driverName || '--'}} / {{i?.carrierInformationVO?.driverTelephone || '--'}} /
{{i?.carrierInformationVO?.driverLicensePlate || '--'}}
</sv>
<sv label="车型车长载重">
{{i?.driverCarModelLabel || '--'}} / {{(i?.driverCarLength || '--') +'米'}} / {{(i?.driverCarWeight ||
'--')+'吨'}}
</sv>
</ng-container>
</sv-container>
<!-- <sv-container class="mt-md">
<sv-title>承运信息</sv-title>
<sv label="司机姓名">
{{ i?.carrierInformationVO?.driverName }}
</sv>
<sv label="手机号">
{{ i?.carrierInformationVO?.driverTelephone }}
</sv>
<sv label="车牌号">
{{ i?.carrierInformationVO?.driverLicensePlate }}
</sv>
</sv-container> -->
</nz-card>
<nz-card [nzBorderless]="true" class="mb0">
<div class="font-weight-blod text-md detail-title">
<a class="sign"></a>
@ -204,7 +181,7 @@
</st>
<div class="freight-info-box mt-md" nz-row>
<div nz-col nzSpan="24">
<h3>
<h3 class="mb0">
<label>总计 :</label>
<span class="text-error-dark text-xl">
{{ i?.totalAmount | currency }}
@ -249,7 +226,7 @@
</div>
<st #st [data]="service.$api_getOperationLogRecordsList" [columns]="logColumns" [page]="{}"
[req]="{ method: 'POST', allInBody: true, reName: { pi: 'pageIndex', ps: 'pageSize' }, params: reqParams }"
[res]="{ reName: { list: 'data.records', total: 'data.total' } }">
[res]="{ reName: { list: 'data.records', total: 'data.total' } }" [size]="'small'">
<ng-template st-row="operator" let-item>
<div>
{{ item?.operator }} {{ item?.telephone ? '/' + item?.telephone : '' }}

View File

@ -48,7 +48,7 @@
}
.handling-info {
min-height: 176px;
min-height: 100px;
border: 1px solid #ccc;
.loading-row {
@ -79,6 +79,7 @@
.time-info {
margin-left: 56px;
margin-bottom: 0;
}
}
}

View File

@ -115,18 +115,7 @@ export class SupplyManagementVehicleDetailComponent implements OnInit {
})
}
/**
*再下一单
* @param record
*/
placeOrder(record: any) {
this.router.navigate(['./pbg/onecar-publish'], {
queryParams: {
id: record?.id,
type: 'add'
}
})
}
/**
* 编辑外部货源号
* @param item st当前行对象
@ -168,7 +157,7 @@ export class SupplyManagementVehicleDetailComponent implements OnInit {
});
}
nextOrder(item: any) {
this.router.navigate(['/supply-management/vehicle-amend', item.id], {
this.router.navigate(['/supply-management/vehicle-next', item.id], {
queryParams: {
sta: 2
}

View File

@ -324,7 +324,7 @@ export class SupplyManagementVehicleComponent extends BasicTableComponent implem
});
}
nextOrder(item: any) {
this.router.navigate(['/supply-management/vehicle-amend', item.id], {
this.router.navigate(['/supply-management/vehicle-next', item.id], {
queryParams: {
sta: 2
}

View File

@ -4,7 +4,7 @@
* @Author : Shiming
* @Date : 2021-12-03 11:10:14
* @LastEditors : Shiming
* @LastEditTime : 2022-02-10 14:39:00
* @LastEditTime : 2022-04-28 14:45:50
* @FilePath : \\tms-obc-web\\src\\app\\routes\\supply-management\\supply-management-routing.module.ts
* Copyright (C) 2022 huzhenhong. All rights reserved.
*/
@ -21,13 +21,76 @@ import { SupplyManagementReleasePublishComponent } from './components/release-pu
import { SupplyManagementVehicleDetailComponent } from './components/vehicle-detail/vehicle-detail.component';
const routes: Routes = [
{ path: 'index', component: SupplyManagementIndexComponent },
{ path: 'index/bulk-detail/:id', component: SupplyManagementBulkDetailComponent },
{ path: 'index/vehicle-detail/:id', component: SupplyManagementVehicleDetailComponent },
{
path: 'index',
component: SupplyManagementIndexComponent,
data: { guard: { ability: ['SUPPLY-INDEX-vehicleSearch', 'SUPPLY-INDEX-bulkSearch'] } }
},
{
path: 'index/bulk-detail/:id',
component: SupplyManagementBulkDetailComponent,
data: {
guard: { ability: ['SUPPLY-BULK-DETAIL-cancelSupply', 'SUPPLY-BULK-DETAIL-updatePrice', 'SUPPLY-BULK-DETAIL-bulkAnotherOrder'] }
}
},
{
path: 'index/vehicle-detail/:id',
component: SupplyManagementVehicleDetailComponent,
data: {
guard: {
ability: [
'SUPPLY-VEHICLE-DETAIL-cancelSupply',
'SUPPLY-VEHICLE-DETAIL-changeSupply',
'SUPPLY-VEHICLE-DETAIL-vehiclePlaceOrder',
'SUPPLY-VEHICLE-DETAIL-vehicleAnew'
]
}
}
},
{ path: 'add-drivers', component: SupplyManagementAddDriversComponent },
{ path: 'vehicle-amend/:id', component: SupplyManagementOnecarPublishComponent },
{ path: 'vehicle-release', component: SupplyManagementReleasePublishComponent },
{ path: 'bulk-release', component: SupplyManagementBulkReleasePublishComponent },
{
path: 'vehicle-amend/:id',
component: SupplyManagementOnecarPublishComponent,
data: {
guard: {
ability: ['SUPPLY-VEHICLE-AMEND-submitChange']
}
}
},
{
path: 'vehicle-next/:id',
component: SupplyManagementOnecarPublishComponent,
data: {
guard: {
ability: [
'SUPPLY-VEHICLE-PLACEORDER-QRCode',
'SUPPLY-VEHICLE-PLACEORDER-vehicleDesignate',
'SUPPLY-VEHICLE-PLACEORDER-vehicleAnotherOrder'
]
}
}
},
{
path: 'vehicle-release',
component: SupplyManagementReleasePublishComponent,
data: {
guard: { ability: ['SUPPLY-VEHICLE-RELEASE-bulkDesignate', 'SUPPLY-VEHICLE-RELEASE-bulkDriverOrder'] }
}
},
{
path: 'bulk-release',
component: SupplyManagementBulkReleasePublishComponent,
data: {
guard: { ability: ['SUPPLY-BULK-RELEASE-consignBulkAssign', 'SUPPLY-BULK-RELEASE-consignBulk'] }
}
},
{
path: 'bulk-next/:id',
component: SupplyManagementBulkPublishComponent,
data: {
guard: { ability: ['SUPPLY-BULK-PLACEORDER-vehicleAnotherOrder', 'SUPPLY-BULK-PLACEORDER-vehicleDesignate'] }
}
},
{ path: 'bulk-amend/:id', component: SupplyManagementBulkPublishComponent }
];

View File

@ -19,7 +19,8 @@
更新时间: {{ tabItem.modifyTime }}
<a style="margin-left: 8px" target="_blank" [queryParams]="{ type: tabItem.type }"
[routerLink]="['/passport/agreement']">预览</a>
<button nz-button nzType="link" (click)="update()">修改</button>
<button nz-button nzType="link" (click)="update()" acl
[acl-ability]="['SYSTEM-AGREEMENT-CONFIG-save']">修改</button>
</div>
<div [innerHTML]="tabItem.agreementContent | safehtml"></div>
</nz-card>

View File

@ -1,7 +1,11 @@
<page-header-wrapper [title]="'车型车长配置'" [content]="content">
<ng-template #content>
<nz-tabset class="tabs-wrap">
<nz-tab *ngFor="let tab of tabs" [nzTitle]="tab.name" (nzSelect)="changeTab(tab)"> </nz-tab>
<ng-container *ngFor="let tab of tabs">
<nz-tab [nzTitle]="tab.name" (nzSelect)="changeTab(tab)" *ngIf="tab.isShow">
</nz-tab>
</ng-container>
</nz-tabset>
</ng-template>
</page-header-wrapper>
@ -22,10 +26,10 @@
<nz-card>
<div class="d-flex justify-content-end mb-sm">
<div>
<button nz-button nzType="primary" (click)="configAction()">新增</button>
<button nz-button nzType="primary" (click)="configAction()" acl
[acl-ability]="['SYSTEM-CART-CONFIG-add']">新增</button>
</div>
</div>
<st #st [data]="tabType === 3?service.$api_get_config_item_page:service.$api_get_dict_page" [columns]="columns"
[req]="{process: beforeReq }" [res]="{ process: afterRes }" [loading]="loading"
[scroll]="{ y: '370px' }"></st>
[req]="{process: beforeReq }" [res]="{ process: afterRes }" [loading]="loading" [scroll]="{ y: '370px' }"></st>
</nz-card>

View File

@ -1,5 +1,6 @@
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, OnInit, ViewChild } from '@angular/core';
import { STComponent, STColumn, STChange, STRequestOptions } from '@delon/abc/st';
import { ACLService } from '@delon/acl';
import { SFComponent, SFSchema } from '@delon/form';
import { NzModalService } from 'ng-zorro-antd/modal';
import { SystemService } from '../../services/system.service';
@ -20,17 +21,20 @@ export class CartConfigComponent implements OnInit {
{
name: '车型配置',
type: 1,
isActived: false
isActived: false,
isShow: true
},
{
name: '车长配置',
type: 2,
isActived: false
isActived: false,
isShow: true
},
{
name: '禁限物品名单',
type: 3,
isActived: false
isActived: false,
isShow: true
}
];
tabType = 1;
@ -102,10 +106,12 @@ export class CartConfigComponent implements OnInit {
buttons: [
{
text: '编辑',
acl: { ability: ['SYSTEM-CART-CONFIG-edit'] },
click: item => this.configAction(item)
},
{
text: '删除',
acl: { ability: ['SYSTEM-CART-CONFIG-delete'] },
click: item => this.deleteAction(item)
}
]
@ -113,7 +119,35 @@ export class CartConfigComponent implements OnInit {
];
loading = true;
constructor(public service: SystemService, private nzModalService: NzModalService, private cdr: ChangeDetectorRef) {}
constructor(
public service: SystemService,
private nzModalService: NzModalService,
private cdr: ChangeDetectorRef,
private acl: ACLService
) {
const acls = acl.data.abilities || [];
this.tabs = [
{
name: '车型配置',
type: 1,
isActived: false,
isShow: acl.data.full || !!acls.find(acl => acl === 'SYSTEM-CART-CONFIG-modeList')
},
{
name: '车长配置',
type: 2,
isActived: false,
isShow: acl.data.full || !!acls.find(acl => acl === 'SYSTEM-CART-CONFIG-cartLength')
},
{
name: '禁限物品名单',
type: 3,
isActived: false,
isShow: acl.data.full || !!acls.find(acl => acl === 'SYSTEM-CART-CONFIG-goodsList')
}
];
this.tabType = this.tabs.find(tab => tab.isShow)?.type || 1;
}
ngOnInit(): void {}

View File

@ -45,9 +45,9 @@ export class PartnerSystemConfigComponent implements OnInit, OnChanges {
auditTime!: any; // 审核时间
silenceClient!: number; // 沉默客户
loseClient!: number; // 流失客户
everyDay: boolean = false;
everyDay: any;
auditTimeStatus: boolean = false;
MonthDay: boolean = false;
MonthDay: any;
time: Date | null = null;
defaultOpenValue = new Date(0, 0, 0, 0, 0, 0);
tabs = [
@ -123,13 +123,16 @@ export class PartnerSystemConfigComponent implements OnInit, OnChanges {
this.everyDayData= changes.configList.currentValue[0]?.remark.everyDayData // 流失客户
this.MonthDayData= changes.configList.currentValue[0]?.remark.MonthDayData // 流失客户
if (this.auditTime == '2') {
this.auditTimeStatus = true;
// 每天
this.auditTimeStatus = true;
if(this.everyDayData){
this.everyDayData = this.everyDayData
} else if(this.MonthDay) {
this.everyDay = 1
} else if(this.MonthDayData) {
// 每周
this.MonthDay = 2
this.MonthDayData = this.MonthDayData
this.TimeStatus =false
}
} else {
this.auditTimeStatus = false;
@ -162,23 +165,47 @@ export class PartnerSystemConfigComponent implements OnInit, OnChanges {
});
}
addMonth() {
this.MonthDayData.push({
month: [
{ label: '周一', value: '周一' },
{ label: '周二', value: '周二' },
{ label: '周', value: '周' },
{ label: '周', value: '周' },
{ label: '周', value: '周' },
{ label: '周', value: '周' },
{ label: '周', value: '周' }
],
Times: [
console.log(this.MonthDayData);
if(this.MonthDayData) {
this.MonthDayData.push({
month: [
{ label: '周', value: '周' },
{ label: '周', value: '周' },
{ label: '周', value: '周' },
{ label: '周', value: '周' },
{ label: '周', value: '周' },
{ label: '周六', value: '周六' },
{ label: '周日', value: '周日' }
],
Times: [
{
startTime: '',
endTime: ''
}
]
});
} else {
this.MonthDayData = [
{
startTime: '',
endTime: ''
month: [
{ label: '周一', value: '周一' },
{ label: '周二', value: '周二' },
{ label: '周三', value: '周三' },
{ label: '周四', value: '周四' },
{ label: '周五', value: '周五' },
{ label: '周六', value: '周六' },
{ label: '周日', value: '周日' }
],
Times: [
{
startTime: [],
endTime: []
}
]
}
]
});
];
}
}
delMonth(value: number, index: number) {
this.MonthDayData[value].Times.splice(index, 1);
@ -356,6 +383,9 @@ export class PartnerSystemConfigComponent implements OnInit, OnChanges {
};
if(this.auditTime == '2') {
// 每天
console.log(this.everyDay);
console.log(this.MonthDay);
if(this.everyDay){
params.everyDayData = this.everyDayData
} else if(this.MonthDay) {

View File

@ -14,10 +14,14 @@
</div>
<nz-dropdown-menu #menu="nzDropdownMenu">
<ul nz-menu nzSelectable>
<li nz-menu-item (click)="typeAction(item)">编辑</li>
<li nz-menu-item (click)="sortType(item,3)" *ngIf="i!==0">上移</li>
<li nz-menu-item (click)="sortType(item,4)" *ngIf="i!==typeList.length-1">下移</li>
<li nz-menu-item nzDanger (click)="removeType(item)">删除</li>
<li nz-menu-item (click)="typeAction(item)" acl
[acl-ability]="['SYSTEM-GOODS-NAME-CONFIG-edit']">编辑</li>
<li nz-menu-item (click)="sortType(item,3)" acl
[acl-ability]="['SYSTEM-GOODS-NAME-CONFIG-sort']" *ngIf="i!==0">上移</li>
<li nz-menu-item (click)="sortType(item,4)" acl
[acl-ability]="['SYSTEM-GOODS-NAME-CONFIG-sort']" *ngIf="i!==typeList.length-1">下移</li>
<li nz-menu-item nzDanger acl [acl-ability]="['SYSTEM-GOODS-NAME-CONFIG-delete']"
(click)="removeType(item)">删除</li>
</ul>
</nz-dropdown-menu>
</nz-list-item>
@ -25,7 +29,8 @@
<ng-template #listHeader>
<div class="d-flex justify-content-between align-items-center">
<label style="font-weight: 700;font-size: 16px;">货物类型</label>
<button nz-button nzType="primary" (click)="typeAction()"><i nz-icon nzType="plus"
<button nz-button nzType="primary" (click)="typeAction()" acl
[acl-ability]="['SYSTEM-GOODS-NAME-CONFIG-add']"><i nz-icon nzType="plus"
nzTheme="outline"></i>新增</button>
</div>
</ng-template>
@ -39,7 +44,8 @@
</nz-input-group>
<ng-template #suffixTemplateInfo><i nz-icon nzType="search" nzTheme="outline" (click)="st.load(1)"></i>
</ng-template>
<button nz-button nzType="primary" (click)="typeItemAction()"><i nz-icon nzType="plus"
<button nz-button nzType="primary" (click)="typeItemAction()" acl
[acl-ability]="['SYSTEM-GOODS-NAME-CONFIG-add']"><i nz-icon nzType="plus"
nzTheme="outline"></i>新增</button>
</div>

View File

@ -28,18 +28,22 @@ export class GoodsNameConfigComponent implements OnInit {
buttons: [
{
text: '编辑',
acl: { ability: ['SYSTEM-GOODS-NAME-CONFIG-edit'] },
click: item => this.typeItemAction(item)
},
{
text: '上移',
acl: { ability: ['SYSTEM-GOODS-NAME-CONFIG-sort'] },
click: item => this.sortTypeItem(item, 3)
},
{
text: '下移',
acl: { ability: ['SYSTEM-GOODS-NAME-CONFIG-sort'] },
click: item => this.sortTypeItem(item, 4)
},
{
text: '删除',
acl: { ability: ['SYSTEM-GOODS-NAME-CONFIG-delete'] },
click: item => this.removeTypeItem(item)
}
]

View File

@ -1,7 +1,8 @@
<nz-card class="content-box">
<div class="d-flex align-items-center mb-sm" style="justify-content: flex-end;">
<button nz-button nzType="primary" (click)="menuAction('新增组织')">新增</button>
<button nz-button nzType="primary" (click)="menuAction('新增组织')" acl
[acl-ability]="['SYSTEM-ROLE-add']">新增</button>
</div>
<nz-table #expandTable [nzData]="listOfMapData" nzTableLayout="fixed" nzBordered nzSize="small"
@ -33,16 +34,16 @@
</td>
<td nzAlign="center" nzWidth="250px">
<ng-container *ngIf="item.roleCode !== 'Administrator'">
<a (click)="menuAction(item)">编辑</a>
<a (click)="menuAction(item)" acl [acl-ability]="['SYSTEM-ROLE-edit']">编辑</a>
<nz-divider nzType="vertical"></nz-divider>
<a (click)="deleteAction(item)">删除</a>
<a (click)="deleteAction(item)" acl [acl-ability]="['SYSTEM-ROLE-delete']">删除</a>
<nz-divider nzType="vertical"></nz-divider>
<a (click)="menuAction(null,item.id)">新增子组织</a>
<a (click)="menuAction(null,item.id)" acl [acl-ability]="['SYSTEM-ROLE-add']">新增子组织</a>
<br>
<nz-divider nzType="vertical"></nz-divider>
<a (click)="configureAPIauth(item)">配置接口权限</a>
<a (click)="configureAPIauth(item)" acl [acl-ability]="['SYSTEM-ROLE-api']">配置接口权限</a>
<nz-divider nzType="vertical"></nz-divider>
<a>配置数据权限</a>
<a acl [acl-ability]="['SYSTEM-ROLE-data']">配置数据权限</a>
</ng-container>
</td>

View File

@ -2,7 +2,7 @@
<nz-card>
<div class="filter-wrap">
<button nz-button nzType="primary" (click)="add()">新增</button>
<button nz-button nzType="primary" (click)="add()" acl [acl-ability]="['SMS_TEMPLATE-add']">新增</button>
<button nz-button nzType="primary" (click)="open()"><i nz-icon nzType="plus" nzTheme="outline"></i>筛选</button>
</div>
<st #st [data]="this.service.$api_smsTemplate_page " [columns]="columns" [req]="{ process: beforeReq }"
@ -24,9 +24,10 @@
</ng-template>
</nz-drawer>
<nz-modal [(nzVisible)]="isVisible" [nzTitle]="!isEdit?'新增':'编辑'" (nzOnCancel)="handleCancel()" (nzOnOk)="handleOk()" [nzOkDisabled]="!sfEdit?.valid">
<nz-modal [(nzVisible)]="isVisible" [nzTitle]="!isEdit?'新增':'编辑'" (nzOnCancel)="handleCancel()" (nzOnOk)="handleOk()"
[nzOkDisabled]="!sfEdit?.valid">
<ng-container *nzModalContent>
<sf #sfEdit [formData]="tempData" [schema]="editSchema" [ui]="{ '*': { spanLabelFixed: 90,grid: { span: 24 } }}" [compact]="true"
[button]="'none'"></sf>
<sf #sfEdit [formData]="tempData" [schema]="editSchema" [ui]="{ '*': { spanLabelFixed: 90,grid: { span: 24 } }}"
[compact]="true" [button]="'none'"></sf>
</ng-container>
</nz-modal>

View File

@ -1,4 +1,3 @@
import { AfterViewInit, ChangeDetectorRef, Component, OnInit, ViewChild } from '@angular/core';
import { ActivatedRoute } from '@angular/router';
import { STColumn, STComponent, STRequestOptions } from '@delon/abc/st';
@ -50,27 +49,27 @@ export class SmsTemplateComponent implements OnInit {
templateName: {
type: 'string',
title: '模板名称',
ui: { placeholder: '请输入模板名称', errors: { require: '必填项'} }
ui: { placeholder: '请输入模板名称', errors: { require: '必填项' } }
},
templateCode: {
type: 'string',
title: '模板编码',
readOnly: this.isEdit,
ui: { placeholder: '请输入模板编码', errors: { require: '必填项'} }
ui: { placeholder: '请输入模板编码', errors: { require: '必填项' } }
},
templateContent: {
type: 'string',
title: '模板内容',
ui: { placeholder: '请输入模板内容', errors: { require: '必填项'} }
ui: { placeholder: '请输入模板内容', errors: { require: '必填项' } }
}
},
required: ['templateName','templateCode','templateContent']
}
required: ['templateName', 'templateCode', 'templateContent']
};
}
columns: STColumn[] = [
{ title: '模板名称', className: 'text-center', index: 'templateName' },
{ title: '模板编码', className: 'text-center', index: 'templateCode' },
{ title: '模板名称', className: 'text-center', width: '200px', index: 'templateName' },
{ title: '模板编码', className: 'text-center', width: '140px', index: 'templateCode' },
{ title: '模板内容', className: 'text-center', index: 'templateContent' },
// {
// title: '创建人', className: 'text-center', index: 'content',
@ -79,21 +78,23 @@ export class SmsTemplateComponent implements OnInit {
title: '更新时间',
index: 'modifyTime',
type: 'date',
width: '160px',
className: 'text-center'
},
{
title: '操作',
width: '90px',
buttons: [
{
text: '编辑',
click: i => this.edit(i),
acl: { ability: ['SMS_TEMPLATE-save'] },
click: i => this.edit(i)
}
]
}
];
constructor(public service: SystemService, private nzModalService: NzModalService, private route: ActivatedRoute) {
}
constructor(public service: SystemService, private nzModalService: NzModalService, private route: ActivatedRoute) {}
ngOnInit(): void {
this.initSF();
@ -144,7 +145,7 @@ export class SmsTemplateComponent implements OnInit {
templateCode,
templateName,
templateContent
}
};
this.service.request(this.service.$api_smsTemplate_edit, params).subscribe(res => {
// console.log(res);
@ -152,8 +153,7 @@ export class SmsTemplateComponent implements OnInit {
this.isVisible = false;
this.st.reload();
}
})
});
}
handleCancel(): void {

View File

@ -68,20 +68,20 @@ export class StaffManagementComponent implements OnInit {
{
text: '冻结',
iif: item =>
item.stateLocked === 0 && item.roleCode.split(',').indexOf('Administrator') === -1 && item.telephone !== this.user.phone,
!item.stateLocked && item.roleCode.split(',').indexOf('Administrator') === -1 && item.telephone !== this.user.phone,
click: item => this.action(item, 1),
acl: { ability: ['SYSTEM-STAFF-lock'] }
},
{
text: '超管转授',
iif: item => item.stateLocked === 0 && item.roleCode.split(',').indexOf('Administrator') === -1,
iif: item => !item.stateLocked && item.roleCode.split(',').indexOf('Administrator') === -1,
click: item => this.transpowerAction(item),
acl: { ability: ['SYSTEM-STAFF-shiftAdmin'] }
},
{
text: '删除',
iif: item =>
item.stateLocked === 0 && item.roleCode.split(',').indexOf('Administrator') === -1 && item.telephone !== this.user.phone,
!item.stateLocked && item.roleCode.split(',').indexOf('Administrator') === -1 && item.telephone !== this.user.phone,
click: item => this.action(item, 3),
acl: { ability: ['SYSTEM-STAFF-delete'] }
}

View File

@ -29,26 +29,34 @@ import { SmsTemplateComponent } from './components/sms-template/sms-template.com
import { OrganizationManagementComponent } from './components/organization-management/organization-management.component';
const routes: Routes = [
{ path: 'staff-management', component: StaffManagementComponent },
{ path: 'staff-management', component: StaffManagementComponent, data: { guard: { ability: ['SYSTEM-STAFF-list'] } } },
{ path: 'role-management/user/:type', component: RoleManagementComponent },
{ path: 'role-management/freight/:type', component: RoleManagementComponent },
{ path: 'organization-management', component: OrganizationManagementComponent },
{ path: 'basic-setting', component: BasicSettingComponent },
{ path: 'organization-management', component: OrganizationManagementComponent, data: { guard: { ability: ['SYSTEM-ROLE-list'] } } },
{ path: 'basic-setting', component: BasicSettingComponent, data: { guard: { ability: ['SYSTEM-BASIC_SETTING-list'] } } },
{ path: 'note-management', component: NoTeManagementComponent },
{ path: 'basic-config', component: BasicConfigComponent },
{ path: 'audit-reason-config', component: AuditReasonConfigComponent },
{ path: 'cart-config', component: CartConfigComponent },
{ path: 'agreement-config', component: AgreementConfigComponentsBaseComponent },
{
path: 'cart-config',
component: CartConfigComponent,
data: { guard: { ability: ['SYSTEM-CART-CONFIG-modeList', 'SYSTEM-CART-CONFIG-cartLength', 'SYSTEM-CART-CONFIG-goodsList'] } }
},
{
path: 'agreement-config',
component: AgreementConfigComponentsBaseComponent,
data: { guard: { ability: ['SYSTEM-AGREEMENT-CONFIG-list'] } }
},
{ path: 'system-config', component: SystemConfigComponent },
{ path: 'goods-name-config', component: GoodsNameConfigComponent },
{ path: 'crm-management', component: CrmManagementComponent },
{ path: 'network-freight', component: NetworkFreightComponent },
{ path: 'goods-name-config', component: GoodsNameConfigComponent, data: { guard: { ability: ['SYSTEM-GOODS-NAME-CONFIG-list'] } } },
{ path: 'crm-management', component: CrmManagementComponent, data: { guard: { ability: ['SYSTEM-CRM-list'] } } },
{ path: 'network-freight', component: NetworkFreightComponent, data: { guard: { ability: ['SYSTEM-NETWORK-FREIGHT-list'] } } },
{ path: 'network-freight/new/:id', component: NetworkFreightNewComponent },
{ path: 'close-account', component: CloseAccountComponent },
// { path: 'btn-management', component: BtnManagementComponent },
{ path: 'announcement-message', component: AnnouncementMessageComponent },
{ path: 'insurance-set', component: InsuranceSetComponent },
{ path: 'sms-template', component: SmsTemplateComponent}
{ path: 'sms-template', component: SmsTemplateComponent, data: { guard: { ability: ['SMS_TEMPLATE-search'] } } }
];
@NgModule({

View File

@ -9,7 +9,7 @@
<div nz-col [nzSpan]="_$expand ? 24 : 6" [class.text-right]="_$expand">
<button nz-button nzType="primary" [disabled]="!sf.valid" [nzLoading]="isLoading && st.loading" (click)="search()" >查询</button>
<button nz-button (click)="resetSF()">重置</button>
<button nz-button (click)="export()">导出</button>
<button nz-button (click)="export()" acl [acl-ability]="['TAX_INVOICE_REPORT-export']">导出</button>
<button nz-button nzType="link" (click)="expandToggle()">
{{ !_$expand ? '展开' : '收起' }}
<i nz-icon [nzType]="!_$expand ? 'down' : 'up'"></i>
@ -32,7 +32,8 @@
<span *ngIf="item?.uploadSts == '1'">待上传</span>
<span *ngIf="item?.uploadSts == '3'">已上传</span>
<span *ngIf="item?.uploadSts == '2'">上传中</span>
<span *ngIf="item?.uploadSts == '4'" style="color: red;" (click)="unnormal(item)">上传异常</span>
<span *ngIf="item?.uploadSts == '4'" style="color: red;">上传异常</span>
<!-- <span *ngIf="item?.uploadSts == '4'" style="color: red;" (click)="unnormal(item)">上传异常</span> -->
</ng-template>
<ng-template st-row="invoiceType" let-item let-index="index">
<span>增值税专用发票</span>
@ -53,6 +54,6 @@
<strong class="text-red">{{ selectedRows.length }}</strong> 条数据
</div>
<button *ngIf="selectedIndex === '1' || selectedIndex === '4'" nz-button nzType="primary" (click)="upload()">上传</button>
<button *ngIf="selectedIndex === '3'" nz-button nzType="primary" (click)="recall()">撤回</button>
<button *ngIf="selectedIndex === '3'" nz-button nzType="primary" (click)="recall()" acl [acl-ability]="['TAX_INVOICE_REPORT-recall']">撤回</button>
</div>
</ng-template>

View File

@ -281,26 +281,7 @@ export class TaxManagementInvoiceReportingComponent implements OnInit {
});
}
/**
*撤销
* @param record 记录实例
*/
resetData() {
if (this.selectedRows.length === 0) {
this.openWainingModal('请选择需要更新的数据!');
return;
}
let params: any[] = [];
this.selectedRows.forEach(item => {
params.push(item.billId);
});
this.service.request(this.service.$api_get_renewalOrderById, params).subscribe((res: any) => {
if (res) {
this.service.msgSrv.success('更新成功');
this.st.load(1);
}
})
}
/**
*撤销
* @param record 记录实例
@ -333,28 +314,13 @@ export class TaxManagementInvoiceReportingComponent implements OnInit {
}
selectChange(item: any) {
console.log(item);
this.selectedIndex = item?.value || '';
console.log(this.selectedIndex);
setTimeout(() => {
this.st.load();
})
}
/**
* 查看当行数据
*/
view(record: STData) {
// this.router.navigate(['../view', record.uuid], { relativeTo: this.ar });
this.router.navigate(['../detail'], {
queryParams: {
id: record.id,
},
relativeTo: this.ar
});
}
/**
* 上传
@ -368,6 +334,7 @@ export class TaxManagementInvoiceReportingComponent implements OnInit {
this.selectedRows.forEach(item => {
params.push(item.id);
});
return; //TODO 接口未提供
this.service.request(this.service.$api_get_uploadingTaxOrder, params).subscribe((res: any) => {
if (res) {
this.service.msgSrv.success('上传成功');

View File

@ -11,9 +11,9 @@
</div>
<div nz-col [nzXl]="_$expand ? 24 : 6" [nzLg]="24" [nzSm]="24" [nzXs]="24" [class.expend-options]="_$expand"
class="text-right">
<button nz-button nzType="primary" [nzLoading]="service.http.loading" (click)="st?.load(1)">查询</button>
<button nz-button nzType="primary" [nzLoading]="service.http.loading" (click)="st?.load(1)" acl [acl-ability]="['TICKET-BILLING-ORDER-search']">查询</button>
<button nz-button (click)="resetSF()">重置</button>
<button nz-button (click)="export()"> 导出</button>
<button nz-button (click)="export()" acl [acl-ability]="['TICKET-BILLING-ORDER-exprort']"> 导出</button>
<button nz-button nzType="link" (click)="expandToggle()">
{{ !_$expand ? '展开' : '收起' }}
<i nz-icon [nzType]="!_$expand ? 'down' : 'up'"></i>

View File

@ -290,11 +290,11 @@ export class InvoiceDetailComponent implements OnInit {
{ title: '数量', render: 'vatqty', width: 140, className: 'text-right' },
{
title: '金额',
index: 'vattax',
index: 'vatmoney',
width: 140,
type: 'widget',
className: 'text-right',
widget: { type: 'currency-chy', params: ({ record }) => ({ value: record.vattax }) }
widget: { type: 'currency-chy', params: ({ record }) => ({ value: record.vatmoney }) }
},
{
title: '税率',
@ -305,11 +305,11 @@ export class InvoiceDetailComponent implements OnInit {
},
{
title: '税额',
index: 'vatnotax',
index: 'vattax',
width: 140,
type: 'widget',
className: 'text-right',
widget: { type: 'currency-chy', params: ({ record }) => ({ value: record.vatnotax }) }
widget: { type: 'currency-chy', params: ({ record }) => ({ value: record.vattax }) }
}
];
}

View File

@ -1,7 +1,7 @@
/*
* @Author: your name
* @Date: 2021-12-23 16:50:17
* @LastEditTime : 2022-04-21 13:57:43
* @LastEditTime : 2022-04-28 13:54:14
* @LastEditors : Shiming
* @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
* @FilePath : \\tms-obc-web\\src\\app\\routes\\ticket-management\\components\\invoice-requested\\requested-invoice-modal\\requested-invoice-modal.component.ts
@ -88,7 +88,7 @@ export class RequestedInvoiceModalComponent {
{ title: '订单号', index: 'billHCode', width: 150 },
{ title: '订单完成日期', index: 'billfinTime', type: 'date', width: 150 },
{ title: '所属项目', index: 'projectIdName', width: 250 },
{ title: '订单类型', index: 'billTypeName', width: 90 },
{ title: '订单类型', index: 'billTypeLabel', width: 90 },
{ title: '装货地', index: 'loadingfrom', width: 250 },
{ title: '卸货地', index: 'loadingto', width: 250 },
{ title: '货物信息', index: 'goodsinfo', width: 170 },

View File

@ -16,8 +16,8 @@
<p style="margin-bottom: 0;word-break:break-all">{{ detailData?.enterpriseName }}</p>
</div>
<div nz-col [nzLg]="12" [nzSm]="24" [nzXs]="24">
<nz-badge nzStatus="success" nzText="正常" *ngIf="detailData?.stateLocked === 0"></nz-badge>
<nz-badge nzStatus="error" nzText="冻结" *ngIf="detailData?.stateLocked === 1"></nz-badge>
<nz-badge nzStatus="success" nzText="正常" *ngIf="!detailData?.stateLocked"></nz-badge>
<nz-badge nzStatus="error" nzText="冻结" *ngIf="detailData?.stateLocked"></nz-badge>
</div>
</div>
<div nz-row>
@ -48,30 +48,30 @@
保存
</button>
<button [disabled]="false" nz-button nzDanger (click)="auditPass(true)"
*ngIf="detailData?.approvalStatus===10" acl [acl-ability]="['USERCENTER-FREIGHT-ENTERPRISE-D-audit']">
*ngIf="detailData?.approvalStatus===10" acl [acl-ability]="['USERCENTER-FREIGHT-LIST-DETAIL-pass']">
通过
</button>
</ng-container>
<ng-template #editButton>
<ng-container *ngIf="detailData?.approvalStatus===10">
<button [disabled]="false" nz-button nzDanger (click)="auditPass(false)" acl
[acl-ability]="['USERCENTER-FREIGHT-ENTERPRISE-D-audit']">
[acl-ability]="['USERCENTER-FREIGHT-LIST-DETAIL-pass']">
通过
</button>
<button [disabled]="false" nz-button nzDanger (click)="auditNo()" acl
[acl-ability]="['USERCENTER-FREIGHT-ENTERPRISE-D-audit']">
[acl-ability]="['USERCENTER-FREIGHT-LIST-DETAIL-pass']">
驳回
</button>
</ng-container>
<ng-container *ngIf="detailData?.approvalStatus!=10">
<button [disabled]="false" nz-button nzDanger nz-popconfirm [nzPopconfirmTitle]="enable"
(nzOnConfirm)="freezeOrResume(0)" nzPopconfirmPlacement="bottomRight" *ngIf="detailData?.stateLocked"
acl [acl-ability]="['USERCENTER-FREIGHT-ENTERPRISE-D-lock']">
acl [acl-ability]="['USERCENTER-FREIGHT-LIST-DETAIL-lock']">
启用
</button>
<button [disabled]="false" nz-button nzDanger nz-popconfirm [nzPopconfirmTitle]="frozen"
(nzOnConfirm)="freezeOrResume(1)" nzPopconfirmPlacement="bottomRight" *ngIf="!detailData?.stateLocked"
acl [acl-ability]="['USERCENTER-FREIGHT-ENTERPRISE-D-lock']">
acl [acl-ability]="['USERCENTER-FREIGHT-LIST-DETAIL-lock']">
冻结
</button>
<button [disabled]="false" nz-button nzDanger nz-popconfirm [nzPopconfirmTitle]="Payfrozen"
@ -84,7 +84,7 @@
</button>
</ng-container>
<button [disabled]="false" nz-button nzDanger (click)="ratify()" acl
[acl-ability]="['USERCENTER-FREIGHT-ENTERPRISE-D-save']">
[acl-ability]="['USERCENTER-FREIGHT-LIST-DETAIL-save']">
修改
</button>
</ng-template>

View File

@ -112,19 +112,23 @@
<!-- 图片上传 -->
<ng-container *ngSwitchCase="12">
<div>
<nz-upload class="avatar-uploader" [nzAction]="service.$api_upload_url"
<nz-upload #filst class="avatar-uploader" [nzAction]="service.$api_upload_url"
[nzName]="'multipartFile'" nzName="avatar" nzListType="picture-card"
[nzShowUploadList]="false" (nzChange)="uploadChange($event,item)">
<ng-container *ngIf="!item.itemValue">
[nzShowUploadList]="{showPreviewIcon:true,showRemoveIcon:true}"
[nzFileList]="item.itemValue?[{uid:item.id,name:'',url:item.itemValue}]:[]"
(nzChange)="uploadChange($event,item)" [nzLimit]="1"
[nzShowButton]="filst?.nzFileList?.length===0 " [nzPreview]="nzPreview"
[nzRemove]="nzRemove">
<div>
<i class="upload-icon" nz-icon
[nzType]="service.http.loading ? 'loading' : 'plus'"></i>
<div class="ant-upload-text">上传</div>
</ng-container>
<div style="width: 102px;height: 102px;display: flex;align-items: center;justify-content: center;"
</div>
<!-- <div style="width: 102px;height: 102px;display: flex;align-items: center;justify-content: center;"
*ngIf="item.itemValue" (click)="$event.cancelBubble = true">
<img nz-image [nzSrc]="item.itemValue"
style="max-width: 102px;max-height: 102px;" />
</div>
</div> -->
</nz-upload>
<p>支持
<ng-container *ngFor="let item of item.remark?.format">

View File

@ -98,6 +98,17 @@ export class DynamicSettingH5Component implements OnInit {
}
}
nzPreview = (file: NzUploadFile) => {
this.showImg(file.url);
};
nzRemove = (file: NzUploadFile) => {
const config = this.configList.find((c: any) => c.id === file.uid);
if (config) {
config.itemValue = '';
}
return true;
};
showImg(url: any) {
this.nzImageService.preview([{ src: url }]);
}

View File

@ -24,3 +24,7 @@
.ant-btn {
border-radius: 4px;
}
.ant-card-body {
padding: 16px;
}