Merge branch 'weiyu' into develop
This commit is contained in:
		| @ -0,0 +1,31 @@ | |||||||
|  | <page-header-wrapper [title]="'短信模板'"></page-header-wrapper> | ||||||
|  |  | ||||||
|  | <nz-card> | ||||||
|  |     <div class="filter-wrap"> | ||||||
|  |         <button nz-button nzType="primary" (click)="open()"><i nz-icon nzType="plus" nzTheme="outline"></i>筛选</button> | ||||||
|  |     </div> | ||||||
|  |     <st #st [data]="this.service.$api_smsTemplate_page " [columns]="columns" [req]="{ process: beforeReq }" | ||||||
|  |         [loading]="false" [page]="{}"></st> | ||||||
|  | </nz-card> | ||||||
|  |  | ||||||
|  | <nz-drawer [nzBodyStyle]="{ overflow: 'auto' }" [nzMaskClosable]="false" [nzWidth]="720" [nzVisible]="visible" | ||||||
|  |     nzTitle="筛选" [nzFooter]="footerTpl" (nzOnClose)="close()"> | ||||||
|  |     <div *nzDrawerContent> | ||||||
|  |         <sf #sf [schema]="searchSchema" [ui]="{ '*': { spanLabelFixed: 90,grid: { span: 24 } }}" [compact]="true" | ||||||
|  |             [button]="'none'"></sf> | ||||||
|  |     </div> | ||||||
|  |  | ||||||
|  |     <ng-template #footerTpl> | ||||||
|  |         <div style="float: right"> | ||||||
|  |             <button nz-button style="margin-right: 8px;" (click)="close()">取消</button> | ||||||
|  |             <button nz-button nzType="primary" (click)="search()">确认</button> | ||||||
|  |         </div> | ||||||
|  |     </ng-template> | ||||||
|  | </nz-drawer> | ||||||
|  |  | ||||||
|  | <nz-modal [(nzVisible)]="isVisible" nzTitle="编辑" (nzOnCancel)="handleCancel()" (nzOnOk)="handleOk()"> | ||||||
|  |     <ng-container *nzModalContent> | ||||||
|  |         <sf #sfEdit [formData]="tempData" [schema]="editSchema" [ui]="{ '*': { spanLabelFixed: 90,grid: { span: 24 } }}" [compact]="true" | ||||||
|  |             [button]="'none'"></sf> | ||||||
|  |     </ng-container> | ||||||
|  | </nz-modal> | ||||||
| @ -0,0 +1,6 @@ | |||||||
|  | :host::ng-deep { | ||||||
|  |     .filter-wrap { | ||||||
|  |         margin-bottom: 20px; | ||||||
|  |         text-align: right; | ||||||
|  |     } | ||||||
|  | } | ||||||
| @ -0,0 +1,144 @@ | |||||||
|  |  | ||||||
|  | import { Component, OnInit, ViewChild } from '@angular/core'; | ||||||
|  | import { ActivatedRoute } from '@angular/router'; | ||||||
|  | import { STColumn, STComponent, STRequestOptions } from '@delon/abc/st'; | ||||||
|  | import { SFComponent, SFSchema } from '@delon/form'; | ||||||
|  | import { NzModalService } from 'ng-zorro-antd/modal'; | ||||||
|  | import { SystemService } from '../../services/system.service'; | ||||||
|  |  | ||||||
|  | @Component({ | ||||||
|  |   selector: 'app-sms-template', | ||||||
|  |   templateUrl: './sms-template.component.html', | ||||||
|  |   styleUrls: ['./sms-template.component.less'] | ||||||
|  | }) | ||||||
|  | export class SmsTemplateComponent implements OnInit { | ||||||
|  |   @ViewChild('st', { static: true }) | ||||||
|  |   st!: STComponent; | ||||||
|  |   @ViewChild('sf', { static: false }) | ||||||
|  |   sf!: SFComponent; | ||||||
|  |   @ViewChild('sfEdit', { static: false }) | ||||||
|  |   sfEdit!: SFComponent; | ||||||
|  |   visible = false; | ||||||
|  |   isVisible = false; | ||||||
|  |   tempData = {}; | ||||||
|  |  | ||||||
|  |   searchSchema: SFSchema = { | ||||||
|  |     properties: { | ||||||
|  |       templateCode: { | ||||||
|  |         type: 'string', | ||||||
|  |         title: '模板编码', | ||||||
|  |         ui: { placeholder: '请输入模板编码' } | ||||||
|  |       }, | ||||||
|  |       templateContent: { | ||||||
|  |         type: 'string', | ||||||
|  |         title: '模板内容', | ||||||
|  |         ui: { placeholder: '请输入模板内容' } | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |   }; | ||||||
|  |  | ||||||
|  |   editSchema: SFSchema = { | ||||||
|  |     properties: { | ||||||
|  |       templateCode: { | ||||||
|  |         type: 'string', | ||||||
|  |         title: '模板编码', | ||||||
|  |         ui: { placeholder: '请输入模板编码' } | ||||||
|  |       }, | ||||||
|  |       templateContent: { | ||||||
|  |         type: 'string', | ||||||
|  |         title: '模板内容', | ||||||
|  |         ui: { placeholder: '请输入模板内容' } | ||||||
|  |       }, | ||||||
|  |       templateName: { | ||||||
|  |         type: 'string', | ||||||
|  |         title: '模板名称', | ||||||
|  |         ui: { placeholder: '请输入模板名称' } | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   columns: STColumn[] = [ | ||||||
|  |     { title: '模板编码', className: 'text-center', index: 'templateCode' }, | ||||||
|  |     { title: '模板内容', className: 'text-center', index: 'templateContent' }, | ||||||
|  |     // { | ||||||
|  |     //   title: '创建人', className: 'text-center', index: 'content', | ||||||
|  |     // }, | ||||||
|  |     { | ||||||
|  |       title: '更新时间', | ||||||
|  |       index: 'modifyTime', | ||||||
|  |       type: 'date', | ||||||
|  |       className: 'text-center' | ||||||
|  |     }, | ||||||
|  |     { | ||||||
|  |       title: '操作', | ||||||
|  |       buttons: [ | ||||||
|  |         { | ||||||
|  |           text: '编辑', | ||||||
|  |           click: i => this.edit(i), | ||||||
|  |         } | ||||||
|  |       ] | ||||||
|  |     } | ||||||
|  |   ]; | ||||||
|  |  | ||||||
|  |   constructor(public service: SystemService, private nzModalService: NzModalService, private route: ActivatedRoute) { | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   ngOnInit(): void { } | ||||||
|  |  | ||||||
|  |   beforeReq = (requestOptions: STRequestOptions) => { | ||||||
|  |     if (this.sf) { | ||||||
|  |       Object.assign(requestOptions.body, { ...this.sf.value }); | ||||||
|  |     } | ||||||
|  |     return requestOptions; | ||||||
|  |   }; | ||||||
|  |  | ||||||
|  |   edit(item: any) { | ||||||
|  |     // console.log(item); | ||||||
|  |     this.tempData = item; | ||||||
|  |     this.isVisible = true; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   search() { | ||||||
|  |     this.st.reload(1); | ||||||
|  |     this.visible = false; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   open(): void { | ||||||
|  |     this.visible = true; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   close(): void { | ||||||
|  |     this.visible = false; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   handleOk(): void { | ||||||
|  |     const value = this.sfEdit.value; | ||||||
|  |     const { id, templateCode, templateName, templateContent } = value | ||||||
|  |     const params = { | ||||||
|  |       id, | ||||||
|  |       templateCode, | ||||||
|  |       templateName, | ||||||
|  |       templateContent | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     this.service.request(this.service.$api_smsTemplate_edit, params).subscribe(res => { | ||||||
|  |       // console.log(res); | ||||||
|  |       if (res) { | ||||||
|  |         this.isVisible = false; | ||||||
|  |         this.st.reload(); | ||||||
|  |       } | ||||||
|  |     }) | ||||||
|  |  | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   handleCancel(): void { | ||||||
|  |     this.isVisible = false; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   /** | ||||||
|  |    * 重置表单 | ||||||
|  |    */ | ||||||
|  |   resetSF() { | ||||||
|  |     this.sf.reset(); | ||||||
|  |   } | ||||||
|  | } | ||||||
| @ -112,12 +112,12 @@ export class SystemService extends BaseService { | |||||||
|   public $api_remove_config = '/api/mdc/pbc/sysConfig/deletebatch'; |   public $api_remove_config = '/api/mdc/pbc/sysConfig/deletebatch'; | ||||||
|   // 查询系统配置项 |   // 查询系统配置项 | ||||||
|   public $api_get_config_item_page = '/api/mdc/pbc/sysConfigItem/list/page'; |   public $api_get_config_item_page = '/api/mdc/pbc/sysConfigItem/list/page'; | ||||||
|    // 新增系统配置项 |   // 新增系统配置项 | ||||||
|    public $api_add_config_item = '/api/mdc/pbc/sysConfigItem/save'; |   public $api_add_config_item = '/api/mdc/pbc/sysConfigItem/save'; | ||||||
|    // 更新系统配置项 |   // 更新系统配置项 | ||||||
|    public $api_update_config_item = '/api/mdc/pbc/sysConfigItem/update'; |   public $api_update_config_item = '/api/mdc/pbc/sysConfigItem/update'; | ||||||
|    // 批量更新系统配置项 |   // 批量更新系统配置项 | ||||||
|    public $api_update_config_batch = '/api/mdc/pbc/sysConfigItem/updateBatch'; |   public $api_update_config_batch = '/api/mdc/pbc/sysConfigItem/updateBatch'; | ||||||
|   // 更新系统配置项排序 |   // 更新系统配置项排序 | ||||||
|   public $api_update_config_item_sort = '/api/mdc/pbc/sysConfigItem/updateSort'; |   public $api_update_config_item_sort = '/api/mdc/pbc/sysConfigItem/updateSort'; | ||||||
|   // 删除系统配置项 |   // 删除系统配置项 | ||||||
| @ -128,8 +128,8 @@ export class SystemService extends BaseService { | |||||||
|   public $api_getTicketByNetworkTransporterId = '/api/mdc/cuc/networkTransporterTicket/getTicketByNetworkTransporterId'; |   public $api_getTicketByNetworkTransporterId = '/api/mdc/cuc/networkTransporterTicket/getTicketByNetworkTransporterId'; | ||||||
|   // 保存票务信息 |   // 保存票务信息 | ||||||
|   public $api_networkTransporterTicket_save = '/api/mdc/cuc/networkTransporterTicket/save'; |   public $api_networkTransporterTicket_save = '/api/mdc/cuc/networkTransporterTicket/save'; | ||||||
|  // 根据地区code查询列表 |   // 根据地区code查询列表 | ||||||
|  $api_get_region_by_code = '/api/mdc/pbc/region/getRegionByCode'; |   $api_get_region_by_code = '/api/mdc/pbc/region/getRegionByCode'; | ||||||
|   // 根据地区code查询地区详情 |   // 根据地区code查询地区详情 | ||||||
|   $api_getRegionDetailByCode = '/api/mdc/pbc/region/getRegionDetailByCode'; |   $api_getRegionDetailByCode = '/api/mdc/pbc/region/getRegionDetailByCode'; | ||||||
|  |  | ||||||
| @ -156,27 +156,27 @@ export class SystemService extends BaseService { | |||||||
|   $api_addAnnouncementInfo = '/api/mdc/pbc/announcementInfo/addAnnouncementInfo'; |   $api_addAnnouncementInfo = '/api/mdc/pbc/announcementInfo/addAnnouncementInfo'; | ||||||
|  |  | ||||||
|  |  | ||||||
|  // 查询保险配置 |   // 查询保险配置 | ||||||
|  $api_insuranceConfig_list = '/api/mdc/cuc/insuranceConfig/list'; |   $api_insuranceConfig_list = '/api/mdc/cuc/insuranceConfig/list'; | ||||||
|  // 获取保险配置费率 |   // 获取保险配置费率 | ||||||
|  $api_getInsuranceRate = '/api/mdc/cuc/insuranceConfig/getInsuranceRate'; |   $api_getInsuranceRate = '/api/mdc/cuc/insuranceConfig/getInsuranceRate'; | ||||||
|  // 获取保险配置(id) |   // 获取保险配置(id) | ||||||
|  $api_getInsuranceRate_get = '/api/mdc/cuc/insuranceConfig/get'; |   $api_getInsuranceRate_get = '/api/mdc/cuc/insuranceConfig/get'; | ||||||
|  // 删除保险配置(id) |   // 删除保险配置(id) | ||||||
|  $api_getInsuranceRate_deletebatch = '/api/mdc/cuc/insuranceConfig/deletebatch'; |   $api_getInsuranceRate_deletebatch = '/api/mdc/cuc/insuranceConfig/deletebatch'; | ||||||
|  // 批量保存保险配置 |   // 批量保存保险配置 | ||||||
|  $api_getInsuranceRate_saveBatch = '/api/mdc/cuc/insuranceConfig/saveBatch'; |   $api_getInsuranceRate_saveBatch = '/api/mdc/cuc/insuranceConfig/saveBatch'; | ||||||
|  |  | ||||||
|  // 营业执照识别 |   // 营业执照识别 | ||||||
|  $api_ocr_recognize_business_license = '/api/mdc/pbc/hwc/ocr/recognizeBusinessLicense'; |   $api_ocr_recognize_business_license = '/api/mdc/pbc/hwc/ocr/recognizeBusinessLicense'; | ||||||
|  // 短信发送列表 |   // 短信发送列表 | ||||||
|  $api_listSmsSendLog = '/api/mdc/pbc/smsSend/listSmsSendLog'; |   $api_listSmsSendLog = '/api/mdc/pbc/smsSend/listSmsSendLog'; | ||||||
|  // 身份证识别 |   // 身份证识别 | ||||||
|  $api_ocr_recognize_id_card = '/api/mdc/pbc/hwc/ocr/recognizeIdCard'; |   $api_ocr_recognize_id_card = '/api/mdc/pbc/hwc/ocr/recognizeIdCard'; | ||||||
|  // 获取字典 |   // 获取字典 | ||||||
|  $api_getDictValue = '/api/mdc/pbc/dictItems/getDictValue'; |   $api_getDictValue = '/api/mdc/pbc/dictItems/getDictValue'; | ||||||
|  // 设置crm客户 |   // 设置crm客户 | ||||||
|  $api_setCrmCustomer = '/api/mdc/cuc/networkTransporter/setCrmCustomer'; |   $api_setCrmCustomer = '/api/mdc/cuc/networkTransporter/setCrmCustomer'; | ||||||
|   // 获取一、二、三级地区详情 |   // 获取一、二、三级地区详情 | ||||||
|   $api_getRegionToThree = '/api/mdc/pbc/region/getRegionToThree'; |   $api_getRegionToThree = '/api/mdc/pbc/region/getRegionToThree'; | ||||||
|   $api_getRoleTemplateInfo: string = ''; |   $api_getRoleTemplateInfo: string = ''; | ||||||
| @ -185,6 +185,12 @@ export class SystemService extends BaseService { | |||||||
|   $api_getAppList: string = ''; |   $api_getAppList: string = ''; | ||||||
|   $api_getRoleTemplateListByAppId: string = ''; |   $api_getRoleTemplateListByAppId: string = ''; | ||||||
|   $api_updateRoleInfo: string = ''; |   $api_updateRoleInfo: string = ''; | ||||||
|  |  | ||||||
|  |   // 短信模板list | ||||||
|  |   $api_smsTemplate_page = '/api/mdc/pbc/smsTemplate/list/page'; | ||||||
|  |   // 短信模板编辑 | ||||||
|  |   $api_smsTemplate_edit = '/api/mdc/pbc/smsTemplate/save'; | ||||||
|  |  | ||||||
|   constructor(public injector: Injector) { |   constructor(public injector: Injector) { | ||||||
|     super(injector); |     super(injector); | ||||||
|   } |   } | ||||||
|  | |||||||
| @ -25,6 +25,7 @@ import { AnnouncementMessageComponent } from './components/announcement-message/ | |||||||
| import { InsuranceSetComponent } from './components/insurance-set/insurance-set.component'; | import { InsuranceSetComponent } from './components/insurance-set/insurance-set.component'; | ||||||
| import { NetworkFreightNewComponent } from './components/network-freight/new/new.component'; | import { NetworkFreightNewComponent } from './components/network-freight/new/new.component'; | ||||||
| import { NoTeManagementComponent } from './components/note-management/note-management.component'; | import { NoTeManagementComponent } from './components/note-management/note-management.component'; | ||||||
|  | import { SmsTemplateComponent } from './components/sms-template/sms-template.component'; | ||||||
|  |  | ||||||
| const routes: Routes = [ | const routes: Routes = [ | ||||||
|   { path: 'staff-management', component: StaffManagementComponent }, |   { path: 'staff-management', component: StaffManagementComponent }, | ||||||
| @ -44,7 +45,8 @@ const routes: Routes = [ | |||||||
|   { 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} | ||||||
| ]; | ]; | ||||||
|  |  | ||||||
| @NgModule({ | @NgModule({ | ||||||
|  | |||||||
| @ -33,6 +33,7 @@ import { AnnouncementMessageComponent } from './components/announcement-message/ | |||||||
| import { InsuranceSetComponent } from './components/insurance-set/insurance-set.component'; | import { InsuranceSetComponent } from './components/insurance-set/insurance-set.component'; | ||||||
| import { NetworkFreightNewComponent } from './components/network-freight/new/new.component'; | import { NetworkFreightNewComponent } from './components/network-freight/new/new.component'; | ||||||
| import { NoTeManagementComponent } from './components/note-management/note-management.component'; | import { NoTeManagementComponent } from './components/note-management/note-management.component'; | ||||||
|  | import { SmsTemplateComponent } from './components/sms-template/sms-template.component'; | ||||||
|  |  | ||||||
| const COMPONENTS = [ | const COMPONENTS = [ | ||||||
|   StaffManagementComponent, |   StaffManagementComponent, | ||||||
| @ -50,7 +51,8 @@ const COMPONENTS = [ | |||||||
|   NetworkFreightNewComponent, |   NetworkFreightNewComponent, | ||||||
|   AnnouncementMessageComponent, |   AnnouncementMessageComponent, | ||||||
|   InsuranceSetComponent, |   InsuranceSetComponent, | ||||||
|   NoTeManagementComponent |   NoTeManagementComponent, | ||||||
|  |   SmsTemplateComponent | ||||||
| ]; | ]; | ||||||
| const NOTROUTECOMPONENTS = [ | const NOTROUTECOMPONENTS = [ | ||||||
|   BuyerTranspowerComponent, |   BuyerTranspowerComponent, | ||||||
|  | |||||||
| @ -0,0 +1,98 @@ | |||||||
|  | <page-header-wrapper [title]="''"></page-header-wrapper> | ||||||
|  |  | ||||||
|  | <nz-card> | ||||||
|  |   <!-- 搜索表单 --> | ||||||
|  |   <div nz-row nzGutter="8"> | ||||||
|  |     <div nz-col [nzSpan]="_$expand ? 24 : 18"> | ||||||
|  |       <sf #sf [schema]="schema" [ui]="ui" [compact]="true" [button]="'none'"></sf> | ||||||
|  |     </div> | ||||||
|  |     <div nz-col [nzSpan]="_$expand ? 24 : 6" [class.text-right]="_$expand"> | ||||||
|  |       <button nz-button nzType="primary" [disabled]="!sf.valid" [nzLoading]="isLoading && st.loading" (click)="search()" >查询</button> | ||||||
|  |       <button nz-button (click)="resetSF()">重置</button> | ||||||
|  |       <button nz-button (click)="resetSF()">导出</button> | ||||||
|  |       <button nz-button nzType="link" (click)="expandToggle()"> | ||||||
|  |         {{ !_$expand ? '展开' : '收起' }} | ||||||
|  |         <i nz-icon [nzType]="!_$expand ? 'down' : 'up'"></i> | ||||||
|  |       </button> | ||||||
|  |     </div> | ||||||
|  |   </div> | ||||||
|  | </nz-card> | ||||||
|  | <nz-card> | ||||||
|  |   <nz-tabset [nzTabBarExtraContent]="extraTemplate" *ngIf="tabs.length>0"> | ||||||
|  |  | ||||||
|  |     <nz-tab *ngFor="let tab of tabs" [nzTitle]="tab.name" (nzSelect)="selectChange(tab)"> | ||||||
|  |     </nz-tab> | ||||||
|  |   </nz-tabset> | ||||||
|  |   <!-- 数据列表 --> | ||||||
|  |   <st #st [scroll]="{x:'1200px'}" [data]="service.$api_getTaxOrderPage_page" [columns]="columns" | ||||||
|  |     [req]="{ method: 'POST', allInBody: true, reName: { pi: 'pageIndex', ps: 'pageSize' }, params: reqParams }" | ||||||
|  |     [res]="{ reName: { list: 'data.records', total: 'data.total' } }" | ||||||
|  |     [page]="{ show: true, showSize: true, pageSizes: [10,20, 50, 100] }" [loading]="service.http.loading"> | ||||||
|  |     <ng-template st-row="putStatus" let-item let-index="index"> | ||||||
|  |       <!-- <a (click)="viewAuditResult(item)" *ngIf="item?.billStatus === '2'">{{item?.billStatusLabel}}</a> --> | ||||||
|  |       <span *ngIf="item?.putStatus == '0'">待上传</span> | ||||||
|  |       <span *ngIf="item?.putStatus == '1'">已上传</span> | ||||||
|  |       <span *ngIf="item?.putStatus == '3'">上传中</span> | ||||||
|  |       <span  *ngIf="item?.putStatus == '2'" style="color: red;" (click)="unnormal(item)">上传异常</span> | ||||||
|  |     </ng-template> | ||||||
|  |     <ng-template st-row="invoiceNO" let-item let-index="index"> | ||||||
|  |       <a href="/">{{item.billCode}}</a> | ||||||
|  |     </ng-template> | ||||||
|  |     <ng-template st-row="checkStatus" let-item let-index="index"> | ||||||
|  |       <!-- <a (click)="viewAuditResult(item)" *ngIf="item?.billStatus === '2'">{{item?.billStatusLabel}}</a> --> | ||||||
|  |       <span *ngIf="item?.checkStatus == '0'">校验中</span> | ||||||
|  |       <span *ngIf="item?.checkStatus == '1'">通过</span> | ||||||
|  |       <!-- <span  *ngIf="item?.checkStatus == '2'" style="color: red;" (click)="unnormal(item)">不通过</span> --> | ||||||
|  |       <span  *ngIf="item?.checkStatus == '2'" style="color: red;" (click)="viewResult(item)">不通过</span> | ||||||
|  |  | ||||||
|  |     </ng-template> | ||||||
|  |     <ng-template st-row="driverName" let-item let-index="index"> | ||||||
|  |       <div> {{ item?.driverName }}{{  item?.driverPhone ? "/" + item?.driverPhone : '' }} </div> | ||||||
|  |     </ng-template> | ||||||
|  |     <!-- <ng-template st-row="localValid" let-item let-index="index"> | ||||||
|  |       <a (click)="viewResult(item)" *ngIf="item?.billStatus === '2'">{{item?.billStatusLabel}}</a> | ||||||
|  |       <span *ngIf="item?.billStatus !== '2'">{{item?.billStatusLabel}}</span> | ||||||
|  |     </ng-template> --> | ||||||
|  |     <ng-template st-row="loadingPicture" let-item let-index="index"> | ||||||
|  |       <div class="imgBox"> | ||||||
|  |         <div *ngIf="item.loadingPicture"> | ||||||
|  |           <app-imagelist style="width: 60px" [imgList]="[item.loadingPicture]"> </app-imagelist> | ||||||
|  |         </div> | ||||||
|  |       </div> | ||||||
|  |     </ng-template> | ||||||
|  |     <ng-template st-row="unloadPicture" let-item let-index="index"> | ||||||
|  |       <div class="imgBox"> | ||||||
|  |         <div *ngIf="item.unloadPicture"> | ||||||
|  |           <app-imagelist style="width: 40px" [imgList]="[item.unloadPicture]"> </app-imagelist> | ||||||
|  |         </div> | ||||||
|  |       </div> | ||||||
|  |     </ng-template> | ||||||
|  |     <ng-template st-row="loadingLadingBill" let-item let-index="index"> | ||||||
|  |       <div class="imgBox"> | ||||||
|  |         <div *ngIf="item.loadingLadingBill"> | ||||||
|  |           <app-imagelist style="width: 40px" [imgList]="[item.loadingLadingBill]"> </app-imagelist> | ||||||
|  |         </div> | ||||||
|  |       </div> | ||||||
|  |     </ng-template> | ||||||
|  |     <ng-template st-row="signatureForm" let-item let-index="index"> | ||||||
|  |       <div class="imgBox"> | ||||||
|  |         <div *ngIf="item.signatureForm"> | ||||||
|  |           <app-imagelist style="width: 40px" [imgList]="[item.signatureForm]"> </app-imagelist> | ||||||
|  |         </div> | ||||||
|  |       </div> | ||||||
|  |     </ng-template> | ||||||
|  |     <ng-template st-row="orderAmount" let-item let-index="index"> | ||||||
|  |       <div class="text-right">{{item?.orderAmount | currency }}</div> | ||||||
|  |     </ng-template> | ||||||
|  |   </st> | ||||||
|  | </nz-card> | ||||||
|  | <ng-template #extraTemplate> | ||||||
|  |   <div class="d-flex align-items-center"> | ||||||
|  |     <div class="mr-md"> | ||||||
|  |       已选择 | ||||||
|  |       <strong class="text-red">{{ selectedRows.length }}</strong> 条数据 | ||||||
|  |     </div> | ||||||
|  |     <button *ngIf="selectedIndex === '0' || selectedIndex === '2'" nz-button nzType="primary" (click)="upload()">上传</button> | ||||||
|  |     <button *ngIf="selectedIndex === '1' || selectedIndex === '3'" nz-button nzType="primary" (click)="recall()">撤回</button> | ||||||
|  |   </div> | ||||||
|  | </ng-template> | ||||||
| @ -0,0 +1,22 @@ | |||||||
|  | :host { | ||||||
|  |   .text-black { | ||||||
|  |     color: #000; | ||||||
|  |   } | ||||||
|  |   .icon { | ||||||
|  |     display: inline-block; | ||||||
|  |     width: 1em; | ||||||
|  |     height: 1em; | ||||||
|  |     stroke-width: 0; | ||||||
|  |     stroke: currentColor; | ||||||
|  |     /* stylelint-disable-next-line order/properties-order */ | ||||||
|  |     fill: currentColor; | ||||||
|  |   } | ||||||
|  |   ::ng-deep { | ||||||
|  |     .imgBox { | ||||||
|  |       display: flex; | ||||||
|  |       img { | ||||||
|  |           width: 60px !important;  | ||||||
|  |       } | ||||||
|  |   } | ||||||
|  |   } | ||||||
|  | } | ||||||
| @ -0,0 +1,460 @@ | |||||||
|  | import { Component, OnInit, ViewChild } from '@angular/core'; | ||||||
|  | import { ActivatedRoute, Router } from '@angular/router'; | ||||||
|  | import { STColumn, STComponent, STData } from '@delon/abc/st'; | ||||||
|  | import { SFComponent, SFDateWidgetSchema, SFSchema, SFSchemaEnum, SFSelectWidgetSchema, SFUISchema } from '@delon/form'; | ||||||
|  | import { ShipperBaseService } from '@shared'; | ||||||
|  | import { NzModalService } from 'ng-zorro-antd/modal'; | ||||||
|  | import { of } from 'rxjs'; | ||||||
|  | import { map } from 'rxjs/operators'; | ||||||
|  | import { TaxManagementService } from '../../services/tax-management.service'; | ||||||
|  | import { TaxManagementInvoiceUploadSettingComponent } from './upload-setting/upload-setting.component'; | ||||||
|  | import { TaxManagementInvoiceVerifyResultComponent } from './verify-result/verify-result.component'; | ||||||
|  | // import { DatatableReportingUploadSettingComponent } from '../upload-setting/upload-setting.component'; | ||||||
|  | // import { DatatableReportingVerifyResultComponent } from '../verify-result/verify-result.component'; | ||||||
|  |  | ||||||
|  | @Component({ | ||||||
|  |   selector: 'app-tax-management-invoice-reporting', | ||||||
|  |   templateUrl: './invoice-reporting.component.html', | ||||||
|  |   styleUrls: ['./invoice-reporting.component.less'] | ||||||
|  | }) | ||||||
|  | export class TaxManagementInvoiceReportingComponent implements OnInit { | ||||||
|  |   _$expand = false; | ||||||
|  |   ui!: SFUISchema; | ||||||
|  |   schema!: SFSchema; | ||||||
|  |   columns!: STColumn[]; | ||||||
|  |   @ViewChild('st', { static: false }) st!: STComponent; | ||||||
|  |   @ViewChild('sf', { static: false }) sf!: SFComponent; | ||||||
|  |   tabType!: string; | ||||||
|  |   isLoading: boolean = false; | ||||||
|  |   tabs: any[] = [ | ||||||
|  |     { name: '待上传', value: '0' }, | ||||||
|  |     { name: '上传中', value: '3' }, | ||||||
|  |     { name: '已上传', value: '1' }, | ||||||
|  |     { name: '异常', value: '2' }, | ||||||
|  |     { name: '全部', value: '' } | ||||||
|  |   ]; | ||||||
|  |   selectedIndex = '0'; //选择的项目 | ||||||
|  |   serviceTel = ''; | ||||||
|  |   constructor( | ||||||
|  |     public service: TaxManagementService, | ||||||
|  |     private router: Router, | ||||||
|  |     private ar: ActivatedRoute, | ||||||
|  |     public shipperservice: ShipperBaseService, | ||||||
|  |     private modal: NzModalService, | ||||||
|  |     public shipperSrv: ShipperBaseService | ||||||
|  |   ) { | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   /** | ||||||
|  |    * 查询字段个数 | ||||||
|  |    */ | ||||||
|  |   get queryFieldCount(): number { | ||||||
|  |     return Object.keys(this.schema?.properties || {}).length; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   /** | ||||||
|  |    * 查询参数 | ||||||
|  |    */ | ||||||
|  |   get reqParams() { | ||||||
|  |     const params = Object.assign({}, this.sf?.value || {}, { | ||||||
|  |       putStatus: this.selectedIndex, | ||||||
|  |     }); | ||||||
|  |     delete params._$expand; | ||||||
|  |     return { ...params }; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   /** | ||||||
|  |    * 选中行 | ||||||
|  |    */ | ||||||
|  |   get selectedRows() { | ||||||
|  |     return this.st?.list.filter((item: any) => item.checked) || []; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   /** | ||||||
|  |    * 伸缩查询条件 | ||||||
|  |    */ | ||||||
|  |   expandToggle() { | ||||||
|  |     this._$expand = !this._$expand; | ||||||
|  |     this.sf?.setValue('/_$expand', this._$expand); | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   /** | ||||||
|  |    * 重置表单 | ||||||
|  |    */ | ||||||
|  |   resetSF() { | ||||||
|  |     this.sf.reset(); | ||||||
|  |     this._$expand = false; | ||||||
|  |     this.isLoading = true | ||||||
|  |   } | ||||||
|  |   /** | ||||||
|  |    * 程序初始化入口 | ||||||
|  |    */ | ||||||
|  |   ngOnInit() { | ||||||
|  |     this.initSF(); | ||||||
|  |     this.initST(); | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   /** | ||||||
|  |    * 初始化查询表单 | ||||||
|  |    */ | ||||||
|  |   initSF() { | ||||||
|  |     this.schema = { | ||||||
|  |       properties: { | ||||||
|  |         _$expand: { type: 'boolean', ui: { hidden: true } }, | ||||||
|  |         putStatus: { | ||||||
|  |           title: '上传状态', | ||||||
|  |           type: 'string', | ||||||
|  |           default: 0, | ||||||
|  |           enum: [ | ||||||
|  |             { label: '全部', value: 0 }, | ||||||
|  |             { label: '待上传', value: 1 }, | ||||||
|  |             { label: '上传中', value: 2 }, | ||||||
|  |             { label: '已上传', value: 3 }, | ||||||
|  |             { label: '异常', value: 4 } | ||||||
|  |           ], | ||||||
|  |  | ||||||
|  |           ui: { | ||||||
|  |             placeholder: '请选择', | ||||||
|  |             widget: 'select', | ||||||
|  |             allowClear: true | ||||||
|  |           } | ||||||
|  |         }, | ||||||
|  |         networkTransporter: { | ||||||
|  |           type: 'string', | ||||||
|  |           title: '网络货运人', | ||||||
|  |           ui: { | ||||||
|  |             widget: 'select', | ||||||
|  |             placeholder: '请选择', | ||||||
|  |             allowClear: true, | ||||||
|  |             asyncData: () => this.shipperservice.getNetworkFreightForwarder() | ||||||
|  |           } | ||||||
|  |         }, | ||||||
|  |         hrto: { | ||||||
|  |           type: 'string', | ||||||
|  |           title: '购买方', | ||||||
|  |           ui: { | ||||||
|  |             widget: 'select', | ||||||
|  |             placeholder: '请选择', | ||||||
|  |             allowClear: true, | ||||||
|  |             asyncData: () => this.service.getCRMCustomerId() | ||||||
|  |           } | ||||||
|  |         }, | ||||||
|  |         billCode: { | ||||||
|  |           title: '订单号', type: 'string', ui: { | ||||||
|  |             placeholder: '请输入', visibleIf: { | ||||||
|  |               _$expand: (value: boolean) => value | ||||||
|  |             } | ||||||
|  |           } | ||||||
|  |         }, | ||||||
|  |         recentlyPutTime: { | ||||||
|  |           title: '开票日期', | ||||||
|  |           type: 'string', | ||||||
|  |           ui: { | ||||||
|  |             widget: 'sl-from-to', | ||||||
|  |             type: 'date', | ||||||
|  |             format: 'yyyy-MM-dd', | ||||||
|  |             visibleIf: { | ||||||
|  |               _$expand: (value: boolean) => value, | ||||||
|  |             }, | ||||||
|  |           } as SFDateWidgetSchema, | ||||||
|  |         }, | ||||||
|  |         orderPayTime: { | ||||||
|  |           title: '上传日期', | ||||||
|  |           type: 'string', | ||||||
|  |           ui: { | ||||||
|  |             widget: 'sl-from-to', | ||||||
|  |             type: 'date', | ||||||
|  |             format: 'yyyy-MM-dd', | ||||||
|  |             visibleIf: { | ||||||
|  |               _$expand: (value: boolean) => value, | ||||||
|  |             }, | ||||||
|  |           } as SFDateWidgetSchema, | ||||||
|  |         }, | ||||||
|  |         wayBillCode: { | ||||||
|  |           type: 'string', | ||||||
|  |           title: '发票号码', | ||||||
|  |           ui: { | ||||||
|  |             placeholder: '请输入', | ||||||
|  |             visibleIf: { | ||||||
|  |               _$expand: (value: boolean) => value | ||||||
|  |             } | ||||||
|  |           }, | ||||||
|  |         }, | ||||||
|  |         wayBillCode1: { | ||||||
|  |           type: 'string', | ||||||
|  |           title: '发票代码', | ||||||
|  |           ui: { | ||||||
|  |             placeholder: '请输入', | ||||||
|  |             visibleIf: { | ||||||
|  |               _$expand: (value: boolean) => value | ||||||
|  |             } | ||||||
|  |           }, | ||||||
|  |         }, | ||||||
|  |         sts: { | ||||||
|  |           title: '发票状态', | ||||||
|  |           type: 'string', | ||||||
|  |           ui: { | ||||||
|  |             widget: 'dict-select', | ||||||
|  |             containsAllLabel: true, | ||||||
|  |             params: { dictKey: 'vatinv:status' }, | ||||||
|  |             containAllLable: true, | ||||||
|  |             visibleIf: { | ||||||
|  |               _$expand: (value: boolean) => value | ||||||
|  |             } | ||||||
|  |           } as SFSelectWidgetSchema | ||||||
|  |         }, | ||||||
|  |       }, | ||||||
|  |     }; | ||||||
|  |     this.ui = { | ||||||
|  |       '*': { spanLabelFixed: 120, grid: { span: 8, gutter: 4 }, enter: () => this.search() }, | ||||||
|  |       $time: { grid: { span: 24 } }, | ||||||
|  |     }; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   /** | ||||||
|  |    * 初始化数据列表 | ||||||
|  |    */ | ||||||
|  |   initST() { | ||||||
|  |     this.columns = [ | ||||||
|  |       { title: '', type: 'checkbox', className: 'text-center', width: '60px', }, | ||||||
|  |       { title: '上传状态', render: 'putStatus', className: 'text-center', width: '120px', }, | ||||||
|  |       { title: '发票类型', render: 'checkStatus', className: 'text-center', width: '120px', }, | ||||||
|  |       { | ||||||
|  |         title: '发票号码', | ||||||
|  |         index: 'billCode', | ||||||
|  |         render: 'invoiceNO', | ||||||
|  |         className: 'text-center', | ||||||
|  |         width: '150px', | ||||||
|  |       }, | ||||||
|  |       { title: '发票代码', index: 'wayBillCode', className: 'text-center', width: '150px', }, | ||||||
|  |       { | ||||||
|  |         title: '网络货运人', | ||||||
|  |         index: 'networkTransporterName', | ||||||
|  |         className: 'text-center', | ||||||
|  |         width: '180px', | ||||||
|  |       }, | ||||||
|  |       { title: '购买方企业名称', index: 'loadingAddress', render: 'loadingPlace', className: 'text-center', width: '200px' }, | ||||||
|  |       { title: '购买方统一社会信用代码', index: 'loadingDetailedAddress', render: 'loadingPlace', className: 'text-center', width: '200px' }, | ||||||
|  |       { title: '订单号', index: 'unloadAddress', render: 'dischargePlace', className: 'text-center', width: '120px' }, | ||||||
|  |       { title: '货物名称', index: 'unloadDetailedAddress', className: 'text-center', width: '180px' }, | ||||||
|  |       { title: '价税合计', index: 'shipperName', className: 'text-center', width: '180px' }, | ||||||
|  |       { title: '开票日期', index: 'shipperProvinceCode', className: 'text-center', width: '180px' }, | ||||||
|  |       { title: '发票所属月份', index: 'recordTime', className: 'text-center', width: '250px' }, | ||||||
|  |       { title: '发票状态', index: 'wayBillCreateTime', className: 'text-center', width: '200px' }, | ||||||
|  |       { title: '上传日期', index: 'loadTime', className: 'text-center', width: '200px' }, | ||||||
|  |     ]; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |   /** | ||||||
|  |    *撤回 | ||||||
|  |    * @param record 记录实例 | ||||||
|  |    */ | ||||||
|  |   recall() { | ||||||
|  |     if (this.selectedRows.length === 0) { | ||||||
|  |       this.openWainingModal('请选择需要撤回的数据'); | ||||||
|  |       return; | ||||||
|  |     } | ||||||
|  |     let params: any[] = []; | ||||||
|  |     this.selectedRows.forEach(item => { | ||||||
|  |       params.push(item.id); | ||||||
|  |     }); | ||||||
|  |     this.modal.confirm({ | ||||||
|  |       nzTitle: '撤回提示', | ||||||
|  |       nzContent: ' 撤回后可以重新上传,重新上传会覆盖已上传数据,确定要撤回?', | ||||||
|  |       nzOkText: '确定', | ||||||
|  |       nzCancelText: '取消', | ||||||
|  |       nzOnOk: () => { | ||||||
|  |         this.service.request(this.service.$api_get_recessionTaxOrder, params).subscribe((res: any) => { | ||||||
|  |           if (res) { | ||||||
|  |             this.service.msgSrv.success('撤销成功'); | ||||||
|  |             this.search(); | ||||||
|  |           } | ||||||
|  |         }) | ||||||
|  |       } | ||||||
|  |     }); | ||||||
|  |  | ||||||
|  |   } | ||||||
|  |   /** | ||||||
|  |    *撤销 | ||||||
|  |    * @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 记录实例 | ||||||
|  |    */ | ||||||
|  |   unnormal(value: any) { | ||||||
|  |     // if (this.selectedRows.length === 0) { | ||||||
|  |     //   this.openWainingModal('请选择需要更新的数据!'); | ||||||
|  |     //   return; | ||||||
|  |     // } | ||||||
|  |     console.log(this.selectedRows); | ||||||
|  |     let params: any[] = []; | ||||||
|  |     this.selectedRows.forEach(item => { | ||||||
|  |       params.push(item.id); | ||||||
|  |     }); | ||||||
|  |     this.modal.confirm({ | ||||||
|  |       nzTitle: '税务审核结果', | ||||||
|  |       nzContent: '订单结算时间所在月份与申报月份不一致', | ||||||
|  |       nzOkText: '确定', | ||||||
|  |       nzCancelText: '', | ||||||
|  |       nzOnOk: () => { | ||||||
|  |         this.service.request(this.service.$api_get_recessionTaxOrder, params).subscribe((res: any) => { | ||||||
|  |           if (res) { | ||||||
|  |             this.service.msgSrv.success('撤销成功'); | ||||||
|  |             this.search(); | ||||||
|  |           } | ||||||
|  |         }) | ||||||
|  |       } | ||||||
|  |     }); | ||||||
|  |  | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   selectChange(item: any) { | ||||||
|  |     console.log(item); | ||||||
|  |  | ||||||
|  |     this.selectedIndex = item?.value || ''; | ||||||
|  |     setTimeout(() => { | ||||||
|  |       this.st.load(); | ||||||
|  |     }) | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   /** | ||||||
|  |    * 查看当行数据 | ||||||
|  |    */ | ||||||
|  |   view(record: STData) { | ||||||
|  |     // this.router.navigate(['../view', record.uuid], { relativeTo: this.ar }); | ||||||
|  |     this.router.navigate(['../detail'], { | ||||||
|  |       queryParams: { | ||||||
|  |         id: record.id, | ||||||
|  |       }, | ||||||
|  |       relativeTo: this.ar | ||||||
|  |     }); | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   // appeal(item: any) { | ||||||
|  |   //   const modalRef = this.modal.create({ | ||||||
|  |   //     nzTitle: '申诉', | ||||||
|  |   //     nzWidth: '40%', | ||||||
|  |   //     nzContent: CtcAppealComponent, | ||||||
|  |   //     nzComponentParams: { | ||||||
|  |   //       i: item, | ||||||
|  |   //       status: 'add' | ||||||
|  |   //     }, | ||||||
|  |   //     nzFooter: null | ||||||
|  |   //   }); | ||||||
|  |   //   modalRef.afterClose.subscribe(res => { | ||||||
|  |   //     if (res) { | ||||||
|  |   //       this.search({ representationsStatus: '' }); | ||||||
|  |   //     } | ||||||
|  |   //   }) | ||||||
|  |   // } | ||||||
|  |  | ||||||
|  |   /** | ||||||
|  |    * 上传 | ||||||
|  |    */ | ||||||
|  |   upload() { | ||||||
|  |     if (this.selectedRows.length === 0) { | ||||||
|  |       this.openWainingModal('请选择需要上传的数据'); | ||||||
|  |       return; | ||||||
|  |     } | ||||||
|  |     let params: any[] = []; | ||||||
|  |     this.selectedRows.forEach(item => { | ||||||
|  |       params.push(item.id); | ||||||
|  |     }); | ||||||
|  |     this.service.request(this.service.$api_get_uploadingTaxOrder, params).subscribe((res: any) => { | ||||||
|  |       if (res) { | ||||||
|  |         this.service.msgSrv.success('上传成功'); | ||||||
|  |         this.st.load(); | ||||||
|  |       } | ||||||
|  |     }) | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |  | ||||||
|  |   /** | ||||||
|  |    * | ||||||
|  |    * @param params 上传设置 | ||||||
|  |    */ | ||||||
|  |   uploadSetting() { | ||||||
|  |     const modalRef = this.modal.create({ | ||||||
|  |       nzTitle: '税务上传设置', | ||||||
|  |       nzWidth: 600, | ||||||
|  |       nzContent: TaxManagementInvoiceUploadSettingComponent, | ||||||
|  |       nzComponentParams: {}, | ||||||
|  |       nzFooter: null | ||||||
|  |     }); | ||||||
|  |     modalRef.afterClose.subscribe(res => { | ||||||
|  |       if (res) { | ||||||
|  |         this.st.load(); | ||||||
|  |       } | ||||||
|  |     }) | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   /** | ||||||
|  |    * 查看校验结果 | ||||||
|  |    */ | ||||||
|  |   viewResult(item: any) { | ||||||
|  |     const modalRef = this.modal.create({ | ||||||
|  |       nzTitle: '本地校验结果', | ||||||
|  |       nzWidth: 1200, | ||||||
|  |       nzContent: TaxManagementInvoiceVerifyResultComponent, | ||||||
|  |       nzComponentParams: { | ||||||
|  |         record: item | ||||||
|  |       }, | ||||||
|  |       nzFooter: null | ||||||
|  |     }); | ||||||
|  |     modalRef.afterClose.subscribe(res => { | ||||||
|  |       if (res) { | ||||||
|  |         this.st.load(); | ||||||
|  |       } | ||||||
|  |     }) | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   /** | ||||||
|  |    * 查看监管审核结果 | ||||||
|  |    */ | ||||||
|  |   viewAuditResult(record: any) { | ||||||
|  |     if (record?.billStatus !== '2') { | ||||||
|  |       return; | ||||||
|  |     } | ||||||
|  |     this.openWainingModal('监管审核结果', record?.result) | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |  | ||||||
|  |   search() { | ||||||
|  |     this.st.load(1); | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   /** | ||||||
|  |   * 异步导出 | ||||||
|  |   */ | ||||||
|  |   export() { | ||||||
|  |     this.service.exportStart(this.sf?.value, this.service.$api_async_export_order_reporting_list); | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   openWainingModal(content: string, title = '提示') { | ||||||
|  |     this.modal.warning({ | ||||||
|  |       nzMask: false, | ||||||
|  |       nzTitle: title, | ||||||
|  |       nzContent: content, | ||||||
|  |     }) | ||||||
|  |   } | ||||||
|  |  | ||||||
|  | } | ||||||
| @ -0,0 +1,8 @@ | |||||||
|  | <nz-spin [nzSpinning]="!i"></nz-spin> | ||||||
|  | <sf *ngIf="i" #sf mode="edit" [schema]="schema" [ui]="ui" [formData]="i" button="none"> | ||||||
|  |   <div class="modal-footer"> | ||||||
|  |     <button nz-button type="button" (click)="close()">取消</button> | ||||||
|  |     <button nz-button type="submit" nzType="primary" (click)="save(sf.value)" [disabled]="!sf.valid" | ||||||
|  |       [nzLoading]="service.http.loading">修改</button> | ||||||
|  |   </div> | ||||||
|  | </sf> | ||||||
| @ -0,0 +1,110 @@ | |||||||
|  | import { Component, OnInit } from '@angular/core'; | ||||||
|  | import { SFSchema, SFUISchema } from '@delon/form'; | ||||||
|  | import { NzModalRef } from 'ng-zorro-antd/modal'; | ||||||
|  | import { TaxManagementService } from '../../../services/tax-management.service'; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | @Component({ | ||||||
|  |   selector: 'app-datatable-invoice-upload-setting', | ||||||
|  |   templateUrl: './upload-setting.component.html', | ||||||
|  | }) | ||||||
|  | export class TaxManagementInvoiceUploadSettingComponent implements OnInit { | ||||||
|  |   record: any = {}; | ||||||
|  |   i: any = {}; | ||||||
|  |   schema!: SFSchema; | ||||||
|  |   ui!: SFUISchema; | ||||||
|  |  | ||||||
|  |   constructor( | ||||||
|  |     private modal: NzModalRef, | ||||||
|  |     public service: TaxManagementService | ||||||
|  |   ) { } | ||||||
|  |  | ||||||
|  |   ngOnInit(): void { | ||||||
|  |     this.initSF(); | ||||||
|  |     // this.loadData(); | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   /** | ||||||
|  |  * 初始化查询表单 | ||||||
|  |  */ | ||||||
|  |   initSF() { | ||||||
|  |     this.schema = { | ||||||
|  |       properties: { | ||||||
|  |         no: { | ||||||
|  |           type: 'string', | ||||||
|  |           title: '订单数据', | ||||||
|  |           enum: [ | ||||||
|  |             { | ||||||
|  |               label: '手动上传', | ||||||
|  |               value: '1' | ||||||
|  |             }, | ||||||
|  |             { | ||||||
|  |               label: '自动上传', | ||||||
|  |               value: '2' | ||||||
|  |             } | ||||||
|  |           ], | ||||||
|  |           description: '开启自动上传后,订单将在支付完成且风险单校验通过后自动上传', | ||||||
|  |           ui: { | ||||||
|  |             widget: 'radio', | ||||||
|  |  | ||||||
|  |           } | ||||||
|  |         }, | ||||||
|  |         owner: { | ||||||
|  |           type: 'string', | ||||||
|  |           title: '资金数据', | ||||||
|  |           enum: [ | ||||||
|  |             { | ||||||
|  |               label: '手动上传', | ||||||
|  |               value: '1' | ||||||
|  |             }, | ||||||
|  |             { | ||||||
|  |               label: '自动上传', | ||||||
|  |               value: '2' | ||||||
|  |             } | ||||||
|  |           ], | ||||||
|  |           description: '开启自动上传后,订单将在支付完成且风险单校验通过后自动上传', | ||||||
|  |           ui: { | ||||||
|  |             widget: 'radio', | ||||||
|  |  | ||||||
|  |           } | ||||||
|  |         }, | ||||||
|  |       }, | ||||||
|  |       required: ['owner', 'no'], | ||||||
|  |     } | ||||||
|  |     this.ui = { | ||||||
|  |       '*': { | ||||||
|  |         spanLabelFixed: 100, | ||||||
|  |         grid: { span: 24 }, | ||||||
|  |       }, | ||||||
|  |     }; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   /** | ||||||
|  |    * 获取设置数据 | ||||||
|  |    */ | ||||||
|  |   loadData() { | ||||||
|  |     this.service.request(this.service.$api_get_upload_setting, {}).subscribe(res => { | ||||||
|  |       if (res) { | ||||||
|  |         this.i = res; | ||||||
|  |  | ||||||
|  |       } | ||||||
|  |     }) | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   /** | ||||||
|  |    * 修改 | ||||||
|  |    * @param value | ||||||
|  |    */ | ||||||
|  |   save(value: any): void { | ||||||
|  |     this.service.request(this.service.$api_upload_setting_save, { ...value }).subscribe(res => { | ||||||
|  |       if (res) { | ||||||
|  |         this.service.msgSrv.success('保存成功'); | ||||||
|  |         this.modal.close(true); | ||||||
|  |       } | ||||||
|  |     }) | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   close(): void { | ||||||
|  |     this.modal.destroy(); | ||||||
|  |   } | ||||||
|  | } | ||||||
| @ -0,0 +1,30 @@ | |||||||
|  | <div nz-row> | ||||||
|  |   <div style="width: 10%"> | ||||||
|  |     <nz-tabset [nzTabPosition]="'left'" style="height: 100%"> | ||||||
|  |       <nz-tab [nzTitle]="item?.name" *ngFor="let item of tabs" (nzSelect)="selectTab(item)"></nz-tab> | ||||||
|  |     </nz-tabset> | ||||||
|  |   </div> | ||||||
|  |   <div style="width: 90%"> | ||||||
|  |     <st | ||||||
|  |       #st | ||||||
|  |       [scroll]="{ x: '1000px', y: '600px' }" | ||||||
|  |       [data]="service.$api_get_getTaxFieldCheckList" | ||||||
|  |       [columns]="columns" | ||||||
|  |       [req]="{  process: beforeReq }" | ||||||
|  |       [res]="{ reName: { list: 'data', total: 'data' } , process: afterRes}" | ||||||
|  |       [page]="{ show: false }" | ||||||
|  |       [loading]="false" | ||||||
|  |       [bordered]="true" | ||||||
|  |     > | ||||||
|  |       <ng-template st-row="freightDetails" let-item> | ||||||
|  |         <div *ngFor="let item of item.freightDetails"> | ||||||
|  |           <div>{{ item.expenseName }}:{{ item.price | currency }} </div> | ||||||
|  |         </div> | ||||||
|  |       </ng-template> | ||||||
|  |     </st> | ||||||
|  |   </div> | ||||||
|  | </div> | ||||||
|  | <div class="modal-footer"> | ||||||
|  |   <button nz-button type="button" (click)="close()">取消</button> | ||||||
|  |   <button nz-button type="submit" nzType="primary" (click)="update()" [nzLoading]="service.http.loading">修改</button> | ||||||
|  | </div> | ||||||
| @ -0,0 +1,139 @@ | |||||||
|  | import { Component, OnInit, ViewChild } from '@angular/core'; | ||||||
|  | import { Router } from '@angular/router'; | ||||||
|  | import { STColumn, STComponent, STRequestOptions } from '@delon/abc/st'; | ||||||
|  | import { SFSchema } from '@delon/form'; | ||||||
|  | import { ModalHelper, _HttpClient } from '@delon/theme'; | ||||||
|  | import { NzModalRef } from 'ng-zorro-antd/modal'; | ||||||
|  | import { TaxManagementService } from '../../../services/tax-management.service'; | ||||||
|  |  | ||||||
|  | @Component({ | ||||||
|  |   selector: 'app-tax-management-Invoice-reporting-verify-result', | ||||||
|  |   templateUrl: './verify-result.component.html', | ||||||
|  | }) | ||||||
|  | export class TaxManagementInvoiceVerifyResultComponent implements OnInit { | ||||||
|  |   searchSchema: SFSchema = { | ||||||
|  |     properties: { | ||||||
|  |       no: { | ||||||
|  |         type: 'string', | ||||||
|  |         title: '编号' | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |   }; | ||||||
|  |   @ViewChild('st') private readonly st!: STComponent; | ||||||
|  |   columns: STColumn[] = []; | ||||||
|  |   record: any = {} | ||||||
|  |   subjectType: string = '0'; | ||||||
|  |   tabs: any[] = [ | ||||||
|  |     { name: '平台信息', value: '0' }, | ||||||
|  |     { name: '货主信息', value: '1' }, | ||||||
|  |     { name: '司机信息', value: '2' }, | ||||||
|  |     { name: '订单信息', value: '3' }, | ||||||
|  |   ]; | ||||||
|  |  | ||||||
|  |   // get reqParams() { | ||||||
|  |   //   console.log(this.subjectType); | ||||||
|  |   //   const params ={ | ||||||
|  |   //     subjectId: this.record?.shipperId, | ||||||
|  |   //     subjectType: this.subjectType, | ||||||
|  |   //   } | ||||||
|  |   //   return params; | ||||||
|  |   // } | ||||||
|  |   beforeReq = (requestOptions: STRequestOptions) => {let a: string = ''; | ||||||
|  |     switch (this.subjectType) { | ||||||
|  |       case '0': | ||||||
|  |       a = this.record?.networkTransporterId; | ||||||
|  |       break | ||||||
|  |       case '1': | ||||||
|  |       a = this.record?.shipperId; | ||||||
|  |       break | ||||||
|  |       case '2': | ||||||
|  |       a = this.record?.driverId; | ||||||
|  |       break | ||||||
|  |       case '3': | ||||||
|  |       a = this.record?.wayBillId; | ||||||
|  |       break | ||||||
|  |     } | ||||||
|  |       Object.assign(requestOptions.body, { | ||||||
|  |             subjectId: a , | ||||||
|  |             subjectType: this.subjectType, | ||||||
|  |       }); | ||||||
|  |     return requestOptions; | ||||||
|  |   }; | ||||||
|  |   afterRes = (data: any[], rawData?: any) => { | ||||||
|  |     console.log(data) | ||||||
|  |     return data.map(item => ({ | ||||||
|  |       ...item, | ||||||
|  |     })); | ||||||
|  |   }; | ||||||
|  |   constructor(public service: TaxManagementService, private modalRef: NzModalRef, public router: Router) { | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   ngOnInit(): void { | ||||||
|  |     console.log(this.record); | ||||||
|  |      | ||||||
|  |     this.initST(); | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   /** | ||||||
|  |  * 初始化数据列表 | ||||||
|  |  */ | ||||||
|  |   initST() { | ||||||
|  |     this.columns = [ | ||||||
|  |       { title: '序号', type: 'no', className: 'text-center', width: '60px', }, | ||||||
|  |       { title: '校验字段', index: 'checkFieldName', className: 'text-center', width: '120px', }, | ||||||
|  |       { | ||||||
|  |         title: '是否必填', | ||||||
|  |         index: 'requiredStatus', | ||||||
|  |         className: 'text-center', | ||||||
|  |         width: '100px', | ||||||
|  |         type: 'enum', | ||||||
|  |         enum: { | ||||||
|  |           0: '否', | ||||||
|  |           1: '是' | ||||||
|  |         } | ||||||
|  |       }, | ||||||
|  |       { title: '上传值', index: 'fieldValue', className: 'text-center', width: '150px', }, | ||||||
|  |       { | ||||||
|  |         title: '本地校验', index: 'checkStatus', className: 'text-center', width: '100px', | ||||||
|  |         type: 'enum', | ||||||
|  |         enum: { | ||||||
|  |           0: '校验中', | ||||||
|  |           1: '通过', | ||||||
|  |           2: '不通过' | ||||||
|  |         } | ||||||
|  |       }, | ||||||
|  |       { title: '错误内容', index: 'remark', className: 'text-center', width: '150px', }, | ||||||
|  |     ] | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |  | ||||||
|  |   add(): void { | ||||||
|  |     // this.modal | ||||||
|  |     //   .createStatic(FormEditComponent, { i: { id: 0 } }) | ||||||
|  |     //   .subscribe(() => this.st.reload()); | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   selectTab(e: any) { | ||||||
|  |     setTimeout(() => { | ||||||
|  |       console.log(e?.value); | ||||||
|  |        | ||||||
|  |       this.subjectType = e?.value; | ||||||
|  |       console.log(this.subjectType); | ||||||
|  |       this.st.load(1); | ||||||
|  |     }) | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   update() { | ||||||
|  |     if (this.record?.billType === '1') { | ||||||
|  |       window.open(location.origin + `/#/order-management/vehicle-detailChange/${this.record?.id}`) | ||||||
|  |  | ||||||
|  |     } else if (this.record.billType === '2') { | ||||||
|  |       window.open(location.origin + `/#/order-management/bulk-detailChange/${this.record?.id}`); | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  |   close(): void { | ||||||
|  |     this.modalRef.destroy(); | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | } | ||||||
| @ -13,6 +13,7 @@ import { RouterModule, Routes } from '@angular/router'; | |||||||
| import { TaxManagementIndividualCollectComponent } from './components/individual-collect/individual-collect.component'; | import { TaxManagementIndividualCollectComponent } from './components/individual-collect/individual-collect.component'; | ||||||
| import { TaxManagementIndividualDeclareComponent } from './components/individual-declare/individual-declare.component'; | import { TaxManagementIndividualDeclareComponent } from './components/individual-declare/individual-declare.component'; | ||||||
| import { TaxManagementIndividualIncomeComponent } from './components/individual-income/individual-income.component'; | import { TaxManagementIndividualIncomeComponent } from './components/individual-income/individual-income.component'; | ||||||
|  | import { TaxManagementInvoiceReportingComponent } from './components/invoice-reporting/invoice-reporting.component'; | ||||||
| import { TaxManagementOrderReportingComponent } from './components/order-reporting/order-reporting.component'; | import { TaxManagementOrderReportingComponent } from './components/order-reporting/order-reporting.component'; | ||||||
|  |  | ||||||
|  |  | ||||||
| @ -21,6 +22,7 @@ const routes: Routes = [ | |||||||
|   { path: 'income', component: TaxManagementIndividualIncomeComponent }, |   { path: 'income', component: TaxManagementIndividualIncomeComponent }, | ||||||
|   { path: 'collect', component: TaxManagementIndividualCollectComponent }, |   { path: 'collect', component: TaxManagementIndividualCollectComponent }, | ||||||
|   { path: 'declare', component: TaxManagementIndividualDeclareComponent }, |   { path: 'declare', component: TaxManagementIndividualDeclareComponent }, | ||||||
|  |   { path: 'invoiceReport', component: TaxManagementInvoiceReportingComponent }, | ||||||
| ]; | ]; | ||||||
|    |    | ||||||
|  |  | ||||||
|  | |||||||
| @ -13,6 +13,9 @@ import { SharedModule, SHARED_G2_MODULES } from '@shared'; | |||||||
| import { TaxManagementIndividualCollectComponent } from './components/individual-collect/individual-collect.component'; | import { TaxManagementIndividualCollectComponent } from './components/individual-collect/individual-collect.component'; | ||||||
| import { TaxManagementIndividualDeclareComponent } from './components/individual-declare/individual-declare.component'; | import { TaxManagementIndividualDeclareComponent } from './components/individual-declare/individual-declare.component'; | ||||||
| import { TaxManagementIndividualIncomeComponent } from './components/individual-income/individual-income.component'; | import { TaxManagementIndividualIncomeComponent } from './components/individual-income/individual-income.component'; | ||||||
|  | import { TaxManagementInvoiceReportingComponent } from './components/invoice-reporting/invoice-reporting.component'; | ||||||
|  | import { TaxManagementInvoiceUploadSettingComponent } from './components/invoice-reporting/upload-setting/upload-setting.component'; | ||||||
|  | import { TaxManagementInvoiceVerifyResultComponent } from './components/invoice-reporting/verify-result/verify-result.component'; | ||||||
| import { TaxManagementOrderReportingComponent } from './components/order-reporting/order-reporting.component'; | import { TaxManagementOrderReportingComponent } from './components/order-reporting/order-reporting.component'; | ||||||
| import { TaxManagementUploadSettingComponent } from './components/order-reporting/upload-setting/upload-setting.component'; | import { TaxManagementUploadSettingComponent } from './components/order-reporting/upload-setting/upload-setting.component'; | ||||||
| import { TaxManagementOrderVerifyResultComponent } from './components/order-reporting/verify-result/verify-result.component'; | import { TaxManagementOrderVerifyResultComponent } from './components/order-reporting/verify-result/verify-result.component'; | ||||||
| @ -25,7 +28,10 @@ const COMPONENTS: Type<void>[] = [ | |||||||
|   TaxManagementUploadSettingComponent, |   TaxManagementUploadSettingComponent, | ||||||
|   TaxManagementIndividualIncomeComponent, |   TaxManagementIndividualIncomeComponent, | ||||||
|   TaxManagementIndividualCollectComponent, |   TaxManagementIndividualCollectComponent, | ||||||
|   TaxManagementIndividualDeclareComponent |   TaxManagementIndividualDeclareComponent, | ||||||
|  |   TaxManagementInvoiceReportingComponent, | ||||||
|  |   TaxManagementInvoiceUploadSettingComponent, | ||||||
|  |   TaxManagementInvoiceVerifyResultComponent | ||||||
| ] | ] | ||||||
|  |  | ||||||
|  |  | ||||||
|  | |||||||
| @ -702,6 +702,10 @@ | |||||||
|             { |             { | ||||||
|               "text": "税务申报", |               "text": "税务申报", | ||||||
|               "link": "/tax/declare" |               "link": "/tax/declare" | ||||||
|  |             }, | ||||||
|  |             { | ||||||
|  |               "text": "发票上传", | ||||||
|  |               "link": "/tax/invoiceReport" | ||||||
|             } |             } | ||||||
|         ] |         ] | ||||||
|         } |         } | ||||||
|  | |||||||
		Reference in New Issue
	
	Block a user