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", "name": "tms-obc-web",
"version": "1.0.1", "version": "1.2.0",
"description": "运营后台-WEB", "description": "运营后台-WEB",
"author": "cipchk <cipchk@qq.com>", "author": "cipchk <cipchk@qq.com>",
"repository": { "repository": {

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-04-28 13:43:18 * @LastEditTime : 2022-04-28 16:08:43
* @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

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

View File

@ -24,7 +24,7 @@
<div nz-row [nzGutter]="16"> <div nz-row [nzGutter]="16">
<div nz-col class="gutter-row" [nzSpan]="6"> <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> <ng-template #footer1>
<div class="card-f"> <div class="card-f">
<span class="card-f-l">合格:{{cardData1?.leftQuantity}}</span> <span>不合格:{{cardData1?.rightQuantity}}</span> <span class="card-f-l">合格:{{cardData1?.leftQuantity}}</span> <span>不合格:{{cardData1?.rightQuantity}}</span>
@ -33,7 +33,7 @@
</g2-card> </g2-card>
</div> </div>
<div nz-col class="gutter-row" [nzSpan]="6"> <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> <ng-template #footer2>
<div class="card-f"> <div class="card-f">
<span class="card-f-l">货源单:{{cardData2?.leftQuantity}}</span> <span>合同单:{{cardData2?.rightQuantity}}</span> <span class="card-f-l">货源单:{{cardData2?.leftQuantity}}</span> <span>合同单:{{cardData2?.rightQuantity}}</span>
@ -42,7 +42,7 @@
</g2-card> </g2-card>
</div> </div>
<div nz-col class="gutter-row" [nzSpan]="6"> <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> <ng-template #footer3>
<div class="card-f"> <div class="card-f">
<span class="card-f-l">司机:{{cardData3?.leftQuantity}}</span> <span>车队长:{{cardData3?.rightQuantity}}</span> <span class="card-f-l">司机:{{cardData3?.leftQuantity}}</span> <span>车队长:{{cardData3?.rightQuantity}}</span>
@ -51,7 +51,7 @@
</g2-card> </g2-card>
</div> </div>
<div nz-col class="gutter-row" [nzSpan]="6"> <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> <ng-template #footer4>
<div class="card-f"> <div class="card-f">
<span class="card-f-l">准时:{{cardData4?.leftQuantity}}</span> <span>逾期:{{cardData4?.rightQuantity}}</span> <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 time:this.time
} }
this.service.request(this.service.$api_getBillRateQualified, params).subscribe(res => { this.service.request(this.service.$api_getBillRateQualified, params).subscribe(res => {
if (res) { if (res) {
this.cardData1 = 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 => { this.service.request(this.service.$api_getBillRateProportion, params).subscribe(res => {
if (res) { if (res) {
this.cardData2 = 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 => { this.service.request(this.service.$api_getBillRateDirectPayment, params).subscribe(res => {
if (res) { if (res) {
this.cardData3 = 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 => { this.service.request(this.service.$api_getBillTimelyPayment, params).subscribe(res => {
if (res) { if (res) {
this.cardData4 = 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: [ buttons: [
{ {
text: '查看明细', text: '查看明细',
acl: { ability: ['FINANCIAL-DRIVER-ACOUNT-view'] },
click: item => click: item =>
this.router.navigate(['/financial-management/driver-account/detail/' + item.id], { this.router.navigate(['/financial-management/driver-account/detail/' + item.id], {
queryParams: { queryParams: {

View File

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

View File

@ -23,7 +23,12 @@ export class PlatformAccountComponent implements OnInit {
info: any = {}; info: any = {};
static: 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 { ngOnInit(): void {
this.loadInfo(); this.loadInfo();
@ -187,6 +192,7 @@ export class PlatformAccountComponent implements OnInit {
buttons: [ buttons: [
{ {
text: '查看明细 ', text: '查看明细 ',
acl: { ability: ['FINANCIAL-PLATFORM-view'] },
click: item => click: item =>
this.router.navigate(['/financial-management/platform-account/detail/' + item.id], { this.router.navigate(['/financial-management/platform-account/detail/' + item.id], {
queryParams: { ltdId: item.ltdId, bankType: item.bankType, ltdName: `${item.ltdName}(${item.bankTypeLabel})` } queryParams: { ltdId: item.ltdId, bankType: item.bankType, ltdName: `${item.ltdName}(${item.bankTypeLabel})` }
@ -195,7 +201,7 @@ export class PlatformAccountComponent implements OnInit {
{ {
text: '提现', text: '提现',
click: item => this.withdraw(item), click: item => this.withdraw(item),
iif: (_record) => _record.bankType !== '1' iif: _record => _record.bankType !== '1'
}, },
// { // {
// text: '绑定银行卡', // text: '绑定银行卡',
@ -204,8 +210,8 @@ export class PlatformAccountComponent implements OnInit {
{ {
text: '查看银行卡', text: '查看银行卡',
click: item => this.viewBankcard(item), 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 i: item
} }
}); });
modalRef.afterOpen.subscribe(() => { }); modalRef.afterOpen.subscribe(() => {});
modalRef.afterClose.subscribe((result) => { modalRef.afterClose.subscribe(result => {
if (result) this.st.reload(); if (result) this.st.reload();
}); });
} }
@ -244,7 +249,7 @@ export class PlatformAccountComponent implements OnInit {
} }
exportList() { 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.getSummary();
// this.withdrawTable.refresh(); // this.withdrawTable.refresh();
} }
}) });
} }
} }

View File

@ -251,6 +251,7 @@ export class ReceiptOrderComponent extends BasicTableComponent implements OnInit
buttons: [ buttons: [
{ {
text: '浏览', text: '浏览',
acl: { ability: ['FINANCIAL-RECEIPT-view'] },
click: item => this.router.navigate(['/financial-management/receipt-order/detail/' + item.id]) 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: [ buttons: [
{ {
text: '浏览', text: '浏览',
acl: { ability: ['FINANCIAL-VOUCHER-SUMMARY-view'] },
click: (item: any) => this.router.navigate(['/financial-management/voucher-summary/detail/' + item.id]) click: (item: any) => this.router.navigate(['/financial-management/voucher-summary/detail/' + item.id])
}, },
{ {
text: '列表', text: '列表',
acl: { ability: ['FINANCIAL-VOUCHER-SUMMARY-child-list'] },
click: (item: any) => this.router.navigate(['/financial-management/voucher-summary/list/' + item.vc2code]) 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 = [ const routes: Routes = [
{ path: 'freight-account', component: FreightAccountComponent, data: { guard: { ability: ['FINANCIAL-FREIGHT-ACOUNT-list'] } } }, { path: 'freight-account', component: FreightAccountComponent, data: { guard: { ability: ['FINANCIAL-FREIGHT-ACOUNT-list'] } } },
{ path: 'freight-account/detail/:id', component: FreightAccountDetailComponent }, { path: 'freight-account/detail/:id', component: FreightAccountDetailComponent },
{ path: 'driver-account', component: DriverAccountComponent }, { path: 'driver-account', component: DriverAccountComponent, data: { guard: { ability: ['FINANCIAL-DRIVER-ACOUNT-list'] } } },
{ path: 'driver-account/detail/:id', component: DriverAccountDetailComponent }, {
{ path: 'platform-account', component: PlatformAccountComponent }, path: 'driver-account/detail/:id',
{ path: 'platform-account/detail/:id', component: PlatformAccountDetailComponent }, 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: 'recharge-record', component: RechargeRecordComponent },
{ path: 'withdrawals-record', component: WithdrawalsRecordComponent }, { path: 'withdrawals-record', component: WithdrawalsRecordComponent },
{ path: 'withdrawals-record/detail/:id', component: WithdrawalsDetailComponent }, { path: 'withdrawals-record/detail/:id', component: WithdrawalsDetailComponent },
{ path: 'refund-record', component: RefundRecordComponent }, { path: 'refund-record', component: RefundRecordComponent },
{ path: 'voucher-management', component: VoucherManagementComponent }, { path: 'voucher-management', component: VoucherManagementComponent },
{ path: 'voucher-management/detail/:id', component: VoucherDetailComponent }, { 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/detail/:id', component: SummaryDetailComponent },
{ path: 'voucher-summary/list/:id', component: VoucherListComponent }, { path: 'voucher-summary/list/:id', component: VoucherListComponent },
{ path: 'voucher-summary/list/detail/:id', component: VoucherDetailComponent }, { path: 'voucher-summary/list/detail/:id', component: VoucherDetailComponent },
@ -60,22 +68,29 @@ const routes: Routes = [
{ path: 'abnormal-gold/detail/:id', component: AbnormalGoldDetailComponent }, { path: 'abnormal-gold/detail/:id', component: AbnormalGoldDetailComponent },
{ path: 'payment-record', component: PaymentRecordComponent }, { path: 'payment-record', component: PaymentRecordComponent },
{ path: 'transaction-flow', component: TransactionFlowComponent }, { 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: '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: 'receipt-order/detail/:id', component: ReceiptOrderDetailComponent },
{ path: 'advance-collection', component: AdvanceCollectionComponent }, { path: 'advance-collection', component: AdvanceCollectionComponent },
{ path: 'advance-collection/detail/:id', component: AdvanceCollectionDetailComponent }, { path: 'advance-collection/detail/:id', component: AdvanceCollectionDetailComponent },
{ path: 'receivable-order', component: ReceivableOrderComponent }, { path: 'receivable-order', component: ReceivableOrderComponent, data: { guard: { ability: ['FINANCIAL-RECEIVABLE-list'] } } },
{ path: 'receivable-order/detail/:id', component: ReceivableOrderDetailComponent }, {
{ path: 'payable-order', component: PayableOrderComponent }, path: 'receivable-order/detail/:id',
{ path: 'payable-order/detail/:id', component: PayableOrderDetailComponent }, component: ReceivableOrderDetailComponent,
{ path: 'bank-card-management/index', component: CwcBankCardManagementIndexComponent }, 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({ @NgModule({
imports: [RouterModule.forChild(routes)], imports: [RouterModule.forChild(routes)],
exports: [RouterModule] exports: [RouterModule]
}) })
export class FinancialManagementRoutingModule { } export class FinancialManagementRoutingModule {}

View File

@ -1,5 +1,5 @@
/* /*
* @Description : * @Description :
* @Version : 1.0 * @Version : 1.0
* @Author : Shiming * @Author : Shiming
* @Date : 2022-01-06 09:24:00 * @Date : 2022-01-06 09:24:00
@ -13,13 +13,12 @@ import { RouterModule, Routes } from '@angular/router';
import { insuranceManagementListComponent } from './components/list/list.component'; import { insuranceManagementListComponent } from './components/list/list.component';
import { insuranceManagementSetComponent } from './components/set/set.component'; import { insuranceManagementSetComponent } from './components/set/set.component';
const routes: Routes = [ const routes: Routes = [
{ path: 'list', component: insuranceManagementListComponent }, { path: 'list', component: insuranceManagementListComponent, data: { guard: { ability: ['INSURANCE-LIST-search'] } } },
{ path: 'list-set', component: insuranceManagementSetComponent }, { path: 'list-set', component: insuranceManagementSetComponent, data: { guard: { ability: ['INSURANCE-LISTDETAIL-set'] } } }
] ];
@NgModule({ @NgModule({
imports: [RouterModule.forChild(routes)], imports: [RouterModule.forChild(routes)],
exports: [RouterModule] exports: [RouterModule]
}) })
export class InsuranceManagementRoutingModule { } export class InsuranceManagementRoutingModule {}

View File

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

View File

@ -1,4 +1,5 @@
import { Component, OnInit, ViewChild } from '@angular/core'; import { Component, OnInit, ViewChild } from '@angular/core';
import { ACLService } from '@delon/acl';
import { SFComponent, SFSchema } from '@delon/form'; import { SFComponent, SFSchema } from '@delon/form';
import { EAEnvironmentService } from '@shared'; import { EAEnvironmentService } from '@shared';
import { NzDrawerService } from 'ng-zorro-antd/drawer'; import { NzDrawerService } from 'ng-zorro-antd/drawer';
@ -34,14 +35,26 @@ export class ApiAuthComponent implements OnInit {
mapOfExpandedData: { [key: string]: any[] } = {}; mapOfExpandedData: { [key: string]: any[] } = {};
listOfMapData: 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(); this.initData();
} }
ngOnInit(): void {} ngOnInit(): void {}
initData(): void { initData(): void {
this.selectedPlatform = this.platforms[0]; this.selectedPlatform = this.isShowFre ? this.platforms[0] : this.platforms[1];
this.loadMemu(this.selectedPlatform.appId); this.loadMemu(this.selectedPlatform.appId);
} }

View File

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

View File

@ -1,5 +1,6 @@
import { Component, OnInit, ViewChild } from '@angular/core'; import { Component, OnInit, ViewChild } from '@angular/core';
import { STComponent, STColumn, STRequestOptions, STChange } from '@delon/abc/st'; import { STComponent, STColumn, STRequestOptions, STChange } from '@delon/abc/st';
import { ACLService } from '@delon/acl';
import { SFComponent, SFSchema } from '@delon/form'; import { SFComponent, SFSchema } from '@delon/form';
import { Menu, ModalHelper } from '@delon/theme'; import { Menu, ModalHelper } from '@delon/theme';
import { EAEnvironmentService } from '@shared'; import { EAEnvironmentService } from '@shared';
@ -37,14 +38,26 @@ export class MenuManagerComponentsIndexComponent implements OnInit {
mapOfExpandedData: { [key: string]: any[] } = {}; mapOfExpandedData: { [key: string]: any[] } = {};
listOfMapData: 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(); this.initData();
} }
ngOnInit(): void {} ngOnInit(): void {}
initData(): void { initData(): void {
this.selectedPlatform = this.platforms[0]; this.selectedPlatform = this.isShowFre ? this.platforms[0] : this.platforms[1];
this.loadMemu(this.selectedPlatform.appId); this.loadMemu(this.selectedPlatform.appId);
} }
@ -126,13 +139,13 @@ export class MenuManagerComponentsIndexComponent implements OnInit {
} }
}); });
} }
menuSort(){ menuSort() {
const dialogData = { const dialogData = {
appId: this.selectedPlatform.appId appId: this.selectedPlatform.appId
}; };
this.modalHelper.create(MenuManagerMenusortComponent, { i: dialogData }, { size: 900 }).subscribe((res:any) => { this.modalHelper.create(MenuManagerMenusortComponent, { i: dialogData }, { size: 900 }).subscribe((res: any) => {
if(res) { if (res) {
console.log('a') console.log('a');
this.loadMemu(this.selectedPlatform.appId); this.loadMemu(this.selectedPlatform.appId);
} }
}); });

View File

@ -5,12 +5,16 @@ import { MenuManagerComponentsIndexComponent } from './components/index/index.co
const routes: Routes = [ const routes: Routes = [
{ path: '', redirectTo: 'index', pathMatch: 'full' }, { 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({ @NgModule({
imports: [RouterModule.forChild(routes)], imports: [RouterModule.forChild(routes)],
exports: [RouterModule], exports: [RouterModule]
}) })
export class MenuManagerRoutingModule {} export class MenuManagerRoutingModule {}

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -1,5 +1,6 @@
import { Component, OnInit, ViewChild } from '@angular/core'; import { Component, OnInit, ViewChild } from '@angular/core';
import { STColumn, STComponent } from '@delon/abc/st'; import { STColumn, STComponent } from '@delon/abc/st';
import { ACLService } from '@delon/acl';
import { SFSchema } from '@delon/form'; import { SFSchema } from '@delon/form';
import { ModalHelper, _HttpClient } from '@delon/theme'; import { ModalHelper, _HttpClient } from '@delon/theme';
import { SearchDrawerService } from '@shared'; import { SearchDrawerService } from '@shared';
@ -12,7 +13,14 @@ import { BasicTableComponent } from 'src/app/routes/commom';
}) })
export class SupplyManagementIndexComponent implements OnInit { export class SupplyManagementIndexComponent implements OnInit {
selectedIndex = 0; 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 {} ngOnInit(): void {}
} }

View File

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

View File

@ -6,48 +6,14 @@
<i nz-icon nzType="left" nzTheme="outline"></i> <i nz-icon nzType="left" nzTheme="outline"></i>
</button> </button>
</ng-template> </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> </page-header-wrapper>
<nz-card [nzBorderless]="true" class="mb0"> <nz-card [nzBorderless]="true" class="mb0">
<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> <div>
<h4 class="ml-md">货源编码 : {{ i?.resourceCode }}</h4> <button nz-button nzType="primary" nzSize="small" nzDanger>{{ i?.resourceStatusLabel }}</button>
</div> <b class="ml-md">货源编码 : {{ i?.resourceCode }}</b>
<div nz-row> </div>
<div nz-col nzSpan="14" class="text-grey-darker">网络货运人:{{ i?.enterpriseInfoName }}</div> <div>
<div nz-col nzSpan="10">
<button nz-button (click)="cancleGoodsSource()" *ngIf="i?.resourceStatus === '1'" acl <button nz-button (click)="cancleGoodsSource()" *ngIf="i?.resourceStatus === '1'" acl
[acl-ability]="['SUPPLY-VEHICLE-DETAIL-cancelSupply']">取消货源</button> [acl-ability]="['SUPPLY-VEHICLE-DETAIL-cancelSupply']">取消货源</button>
<button nz-button (click)="assignedCar(i)" *ngIf="i?.resourceStatus === '1' && i?.serviceType === '2'" acl <button nz-button (click)="assignedCar(i)" *ngIf="i?.resourceStatus === '1' && i?.serviceType === '2'" acl
@ -65,7 +31,8 @@
</div> </div>
</div> --> </div> -->
<nz-divider class="divider-margin"></nz-divider> <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?.externalResourceCode }} </sv>
<sv label="项目">{{ i?.enterpriseProjectName }}</sv> <sv label="项目">{{ i?.enterpriseProjectName }}</sv>
<sv label="录单员">{{ i?.createUserName }}/{{ i?.createUserPhone }}</sv> <sv label="录单员">{{ i?.createUserName }}/{{ i?.createUserPhone }}</sv>
@ -85,50 +52,24 @@
</nz-steps> </nz-steps>
</div> </div>
</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"> <div class="mt-md">
<h4 class="text-md">装货卸货信息 <!-- <h4 class="text-md">装货卸货信息
<span class="ml-sm text-sm">( <span class="ml-sm text-sm">(
<label>{{ i?.loadingCount }}装</label> <label>{{ i?.loadingCount }}装</label>
<label>{{ i?.unloadingCount }}卸</label> <label>{{ i?.unloadingCount }}卸</label>
) )
</span> </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-row [nzGutter]="24">
<div nz-col [nzSpan]="12"> <div nz-col [nzSpan]="12">
<div class="handling-info p-md"> <div class="handling-info p-md">
@ -166,6 +107,42 @@
</div> </div>
</nz-card> </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"> <nz-card [nzBorderless]="true" class="mb0">
<div class="font-weight-blod text-md detail-title"> <div class="font-weight-blod text-md detail-title">
<a class="sign"></a> <a class="sign"></a>
@ -204,7 +181,7 @@
</st> </st>
<div class="freight-info-box mt-md" nz-row> <div class="freight-info-box mt-md" nz-row>
<div nz-col nzSpan="24"> <div nz-col nzSpan="24">
<h3> <h3 class="mb0">
<label>总计 :</label> <label>总计 :</label>
<span class="text-error-dark text-xl"> <span class="text-error-dark text-xl">
{{ i?.totalAmount | currency }} {{ i?.totalAmount | currency }}
@ -249,7 +226,7 @@
</div> </div>
<st #st [data]="service.$api_getOperationLogRecordsList" [columns]="logColumns" [page]="{}" <st #st [data]="service.$api_getOperationLogRecordsList" [columns]="logColumns" [page]="{}"
[req]="{ method: 'POST', allInBody: true, reName: { pi: 'pageIndex', ps: 'pageSize' }, params: reqParams }" [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> <ng-template st-row="operator" let-item>
<div> <div>
{{ item?.operator }} {{ item?.telephone ? '/' + item?.telephone : '' }} {{ item?.operator }} {{ item?.telephone ? '/' + item?.telephone : '' }}

View File

@ -48,7 +48,7 @@
} }
.handling-info { .handling-info {
min-height: 176px; min-height: 100px;
border: 1px solid #ccc; border: 1px solid #ccc;
.loading-row { .loading-row {
@ -79,6 +79,7 @@
.time-info { .time-info {
margin-left: 56px; 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当前行对象 * @param item st当前行对象
@ -168,7 +157,7 @@ export class SupplyManagementVehicleDetailComponent implements OnInit {
}); });
} }
nextOrder(item: any) { nextOrder(item: any) {
this.router.navigate(['/supply-management/vehicle-amend', item.id], { this.router.navigate(['/supply-management/vehicle-next', item.id], {
queryParams: { queryParams: {
sta: 2 sta: 2
} }

View File

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

View File

@ -4,7 +4,7 @@
* @Author : Shiming * @Author : Shiming
* @Date : 2021-12-03 11:10:14 * @Date : 2021-12-03 11:10:14
* @LastEditors : Shiming * @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 * @FilePath : \\tms-obc-web\\src\\app\\routes\\supply-management\\supply-management-routing.module.ts
* Copyright (C) 2022 huzhenhong. All rights reserved. * 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'; import { SupplyManagementVehicleDetailComponent } from './components/vehicle-detail/vehicle-detail.component';
const routes: Routes = [ const routes: Routes = [
{ path: 'index', component: SupplyManagementIndexComponent }, {
{ path: 'index/bulk-detail/:id', component: SupplyManagementBulkDetailComponent }, path: 'index',
{ path: 'index/vehicle-detail/:id', component: SupplyManagementVehicleDetailComponent }, 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: 'add-drivers', component: SupplyManagementAddDriversComponent },
{ path: 'vehicle-amend/:id', component: SupplyManagementOnecarPublishComponent }, {
{ path: 'vehicle-release', component: SupplyManagementReleasePublishComponent }, path: 'vehicle-amend/:id',
{ path: 'bulk-release', component: SupplyManagementBulkReleasePublishComponent }, 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 } { path: 'bulk-amend/:id', component: SupplyManagementBulkPublishComponent }
]; ];

View File

@ -19,7 +19,8 @@
更新时间: {{ tabItem.modifyTime }} 更新时间: {{ tabItem.modifyTime }}
<a style="margin-left: 8px" target="_blank" [queryParams]="{ type: tabItem.type }" <a style="margin-left: 8px" target="_blank" [queryParams]="{ type: tabItem.type }"
[routerLink]="['/passport/agreement']">预览</a> [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>
<div [innerHTML]="tabItem.agreementContent | safehtml"></div> <div [innerHTML]="tabItem.agreementContent | safehtml"></div>
</nz-card> </nz-card>

View File

@ -1,7 +1,11 @@
<page-header-wrapper [title]="'车型车长配置'" [content]="content"> <page-header-wrapper [title]="'车型车长配置'" [content]="content">
<ng-template #content> <ng-template #content>
<nz-tabset class="tabs-wrap"> <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> </nz-tabset>
</ng-template> </ng-template>
</page-header-wrapper> </page-header-wrapper>
@ -22,10 +26,10 @@
<nz-card> <nz-card>
<div class="d-flex justify-content-end mb-sm"> <div class="d-flex justify-content-end mb-sm">
<div> <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>
</div> </div>
<st #st [data]="tabType === 3?service.$api_get_config_item_page:service.$api_get_dict_page" [columns]="columns" <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" [req]="{process: beforeReq }" [res]="{ process: afterRes }" [loading]="loading" [scroll]="{ y: '370px' }"></st>
[scroll]="{ y: '370px' }"></st>
</nz-card> </nz-card>

View File

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

View File

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

View File

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

View File

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

View File

@ -1,7 +1,8 @@
<nz-card class="content-box"> <nz-card class="content-box">
<div class="d-flex align-items-center mb-sm" style="justify-content: flex-end;"> <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> </div>
<nz-table #expandTable [nzData]="listOfMapData" nzTableLayout="fixed" nzBordered nzSize="small" <nz-table #expandTable [nzData]="listOfMapData" nzTableLayout="fixed" nzBordered nzSize="small"
@ -33,18 +34,18 @@
</td> </td>
<td nzAlign="center" nzWidth="250px"> <td nzAlign="center" nzWidth="250px">
<ng-container *ngIf="item.roleCode !== 'Administrator'"> <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> <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> <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> <br>
<nz-divider nzType="vertical"></nz-divider> <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> <nz-divider nzType="vertical"></nz-divider>
<a>配置数据权限</a> <a acl [acl-ability]="['SYSTEM-ROLE-data']">配置数据权限</a>
</ng-container> </ng-container>
</td> </td>
</tr> </tr>
</ng-container> </ng-container>

View File

@ -2,7 +2,7 @@
<nz-card> <nz-card>
<div class="filter-wrap"> <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> <button nz-button nzType="primary" (click)="open()"><i nz-icon nzType="plus" nzTheme="outline"></i>筛选</button>
</div> </div>
<st #st [data]="this.service.$api_smsTemplate_page " [columns]="columns" [req]="{ process: beforeReq }" <st #st [data]="this.service.$api_smsTemplate_page " [columns]="columns" [req]="{ process: beforeReq }"
@ -24,9 +24,10 @@
</ng-template> </ng-template>
</nz-drawer> </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> <ng-container *nzModalContent>
<sf #sfEdit [formData]="tempData" [schema]="editSchema" [ui]="{ '*': { spanLabelFixed: 90,grid: { span: 24 } }}" [compact]="true" <sf #sfEdit [formData]="tempData" [schema]="editSchema" [ui]="{ '*': { spanLabelFixed: 90,grid: { span: 24 } }}"
[button]="'none'"></sf> [compact]="true" [button]="'none'"></sf>
</ng-container> </ng-container>
</nz-modal> </nz-modal>

View File

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

View File

@ -68,20 +68,20 @@ export class StaffManagementComponent implements OnInit {
{ {
text: '冻结', text: '冻结',
iif: item => 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), click: item => this.action(item, 1),
acl: { ability: ['SYSTEM-STAFF-lock'] } acl: { ability: ['SYSTEM-STAFF-lock'] }
}, },
{ {
text: '超管转授', 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), click: item => this.transpowerAction(item),
acl: { ability: ['SYSTEM-STAFF-shiftAdmin'] } acl: { ability: ['SYSTEM-STAFF-shiftAdmin'] }
}, },
{ {
text: '删除', text: '删除',
iif: item => 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), click: item => this.action(item, 3),
acl: { ability: ['SYSTEM-STAFF-delete'] } 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'; import { OrganizationManagementComponent } from './components/organization-management/organization-management.component';
const routes: Routes = [ 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/user/:type', component: RoleManagementComponent },
{ path: 'role-management/freight/:type', component: RoleManagementComponent }, { path: 'role-management/freight/:type', component: RoleManagementComponent },
{ path: 'organization-management', component: OrganizationManagementComponent }, { path: 'organization-management', component: OrganizationManagementComponent, data: { guard: { ability: ['SYSTEM-ROLE-list'] } } },
{ path: 'basic-setting', component: BasicSettingComponent }, { path: 'basic-setting', component: BasicSettingComponent, data: { guard: { ability: ['SYSTEM-BASIC_SETTING-list'] } } },
{ path: 'note-management', component: NoTeManagementComponent }, { path: 'note-management', component: NoTeManagementComponent },
{ path: 'basic-config', component: BasicConfigComponent }, { path: 'basic-config', component: BasicConfigComponent },
{ path: 'audit-reason-config', component: AuditReasonConfigComponent }, { 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: 'system-config', component: SystemConfigComponent },
{ path: 'goods-name-config', component: GoodsNameConfigComponent }, { path: 'goods-name-config', component: GoodsNameConfigComponent, data: { guard: { ability: ['SYSTEM-GOODS-NAME-CONFIG-list'] } } },
{ path: 'crm-management', component: CrmManagementComponent }, { path: 'crm-management', component: CrmManagementComponent, data: { guard: { ability: ['SYSTEM-CRM-list'] } } },
{ path: 'network-freight', component: NetworkFreightComponent }, { path: 'network-freight', component: NetworkFreightComponent, data: { guard: { ability: ['SYSTEM-NETWORK-FREIGHT-list'] } } },
{ path: 'network-freight/new/:id', component: NetworkFreightNewComponent }, { path: 'network-freight/new/:id', component: NetworkFreightNewComponent },
{ path: 'close-account', component: CloseAccountComponent }, { path: 'close-account', component: CloseAccountComponent },
// { path: 'btn-management', component: BtnManagementComponent }, // { path: 'btn-management', component: BtnManagementComponent },
{ path: 'announcement-message', component: AnnouncementMessageComponent }, { path: 'announcement-message', component: AnnouncementMessageComponent },
{ path: 'insurance-set', component: InsuranceSetComponent }, { path: 'insurance-set', component: InsuranceSetComponent },
{ path: 'sms-template', component: SmsTemplateComponent} { path: 'sms-template', component: SmsTemplateComponent, data: { guard: { ability: ['SMS_TEMPLATE-search'] } } }
]; ];
@NgModule({ @NgModule({

View File

@ -9,7 +9,7 @@
<div nz-col [nzSpan]="_$expand ? 24 : 6" [class.text-right]="_$expand"> <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 nzType="primary" [disabled]="!sf.valid" [nzLoading]="isLoading && st.loading" (click)="search()" >查询</button>
<button nz-button (click)="resetSF()">重置</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()"> <button nz-button nzType="link" (click)="expandToggle()">
{{ !_$expand ? '展开' : '收起' }} {{ !_$expand ? '展开' : '收起' }}
<i nz-icon [nzType]="!_$expand ? 'down' : 'up'"></i> <i nz-icon [nzType]="!_$expand ? 'down' : 'up'"></i>
@ -32,7 +32,8 @@
<span *ngIf="item?.uploadSts == '1'">待上传</span> <span *ngIf="item?.uploadSts == '1'">待上传</span>
<span *ngIf="item?.uploadSts == '3'">已上传</span> <span *ngIf="item?.uploadSts == '3'">已上传</span>
<span *ngIf="item?.uploadSts == '2'">上传中</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>
<ng-template st-row="invoiceType" let-item let-index="index"> <ng-template st-row="invoiceType" let-item let-index="index">
<span>增值税专用发票</span> <span>增值税专用发票</span>
@ -53,6 +54,6 @@
<strong class="text-red">{{ selectedRows.length }}</strong> 条数据 <strong class="text-red">{{ selectedRows.length }}</strong> 条数据
</div> </div>
<button *ngIf="selectedIndex === '1' || selectedIndex === '4'" nz-button nzType="primary" (click)="upload()">上传</button> <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> </div>
</ng-template> </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 记录实例 * @param record 记录实例
@ -333,28 +314,13 @@ export class TaxManagementInvoiceReportingComponent implements OnInit {
} }
selectChange(item: any) { selectChange(item: any) {
console.log(item);
this.selectedIndex = item?.value || ''; this.selectedIndex = item?.value || '';
console.log(this.selectedIndex);
setTimeout(() => { setTimeout(() => {
this.st.load(); 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 => { this.selectedRows.forEach(item => {
params.push(item.id); params.push(item.id);
}); });
return; //TODO 接口未提供
this.service.request(this.service.$api_get_uploadingTaxOrder, params).subscribe((res: any) => { this.service.request(this.service.$api_get_uploadingTaxOrder, params).subscribe((res: any) => {
if (res) { if (res) {
this.service.msgSrv.success('上传成功'); this.service.msgSrv.success('上传成功');

View File

@ -11,9 +11,9 @@
</div> </div>
<div nz-col [nzXl]="_$expand ? 24 : 6" [nzLg]="24" [nzSm]="24" [nzXs]="24" [class.expend-options]="_$expand" <div nz-col [nzXl]="_$expand ? 24 : 6" [nzLg]="24" [nzSm]="24" [nzXs]="24" [class.expend-options]="_$expand"
class="text-right"> 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)="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()"> <button nz-button nzType="link" (click)="expandToggle()">
{{ !_$expand ? '展开' : '收起' }} {{ !_$expand ? '展开' : '收起' }}
<i nz-icon [nzType]="!_$expand ? 'down' : 'up'"></i> <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: '数量', render: 'vatqty', width: 140, className: 'text-right' },
{ {
title: '金额', title: '金额',
index: 'vattax', index: 'vatmoney',
width: 140, width: 140,
type: 'widget', type: 'widget',
className: 'text-right', className: 'text-right',
widget: { type: 'currency-chy', params: ({ record }) => ({ value: record.vattax }) } widget: { type: 'currency-chy', params: ({ record }) => ({ value: record.vatmoney }) }
}, },
{ {
title: '税率', title: '税率',
@ -305,11 +305,11 @@ export class InvoiceDetailComponent implements OnInit {
}, },
{ {
title: '税额', title: '税额',
index: 'vatnotax', index: 'vattax',
width: 140, width: 140,
type: 'widget', type: 'widget',
className: 'text-right', 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 * @Author: your name
* @Date: 2021-12-23 16:50:17 * @Date: 2021-12-23 16:50:17
* @LastEditTime : 2022-04-21 13:57:43 * @LastEditTime : 2022-04-28 13:54:14
* @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\\components\\invoice-requested\\requested-invoice-modal\\requested-invoice-modal.component.ts * @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: 'billHCode', width: 150 },
{ title: '订单完成日期', index: 'billfinTime', type: 'date', width: 150 }, { title: '订单完成日期', index: 'billfinTime', type: 'date', width: 150 },
{ title: '所属项目', index: 'projectIdName', width: 250 }, { title: '所属项目', index: 'projectIdName', width: 250 },
{ title: '订单类型', index: 'billTypeName', width: 90 }, { title: '订单类型', index: 'billTypeLabel', width: 90 },
{ title: '装货地', index: 'loadingfrom', width: 250 }, { title: '装货地', index: 'loadingfrom', width: 250 },
{ title: '卸货地', index: 'loadingto', width: 250 }, { title: '卸货地', index: 'loadingto', width: 250 },
{ title: '货物信息', index: 'goodsinfo', width: 170 }, { title: '货物信息', index: 'goodsinfo', width: 170 },

View File

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

View File

@ -112,19 +112,23 @@
<!-- 图片上传 --> <!-- 图片上传 -->
<ng-container *ngSwitchCase="12"> <ng-container *ngSwitchCase="12">
<div> <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" [nzName]="'multipartFile'" nzName="avatar" nzListType="picture-card"
[nzShowUploadList]="false" (nzChange)="uploadChange($event,item)"> [nzShowUploadList]="{showPreviewIcon:true,showRemoveIcon:true}"
<ng-container *ngIf="!item.itemValue"> [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 <i class="upload-icon" nz-icon
[nzType]="service.http.loading ? 'loading' : 'plus'"></i> [nzType]="service.http.loading ? 'loading' : 'plus'"></i>
<div class="ant-upload-text">上传</div> <div class="ant-upload-text">上传</div>
</ng-container> </div>
<div style="width: 102px;height: 102px;display: flex;align-items: center;justify-content: center;" <!-- <div style="width: 102px;height: 102px;display: flex;align-items: center;justify-content: center;"
*ngIf="item.itemValue" (click)="$event.cancelBubble = true"> *ngIf="item.itemValue" (click)="$event.cancelBubble = true">
<img nz-image [nzSrc]="item.itemValue" <img nz-image [nzSrc]="item.itemValue"
style="max-width: 102px;max-height: 102px;" /> style="max-width: 102px;max-height: 102px;" />
</div> </div> -->
</nz-upload> </nz-upload>
<p>支持 <p>支持
<ng-container *ngFor="let item of item.remark?.format"> <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) { showImg(url: any) {
this.nzImageService.preview([{ src: url }]); this.nzImageService.preview([{ src: url }]);
} }

View File

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