瀏覽代碼

采购确认单

chenc 4 年之前
父節點
當前提交
e314a74a5e
共有 30 個文件被更改,包括 1092 次插入21 次删除
  1. 2 1
      src/app/core/startup/startup.service.ts
  2. 25 0
      src/app/entity/invoice-management/invoice-manage-purchase.ts
  3. 2 2
      src/app/layout/default/header/header.component.html
  4. 1 1
      src/app/layout/passport/passport.component.html
  5. 105 0
      src/app/routes/invoice-management/invoice-manage-purchase/add/add.component.html
  6. 24 0
      src/app/routes/invoice-management/invoice-manage-purchase/add/add.component.spec.ts
  7. 227 0
      src/app/routes/invoice-management/invoice-manage-purchase/add/add.component.ts
  8. 60 0
      src/app/routes/invoice-management/invoice-manage-purchase/invoice-manage-purchase.component.html
  9. 24 0
      src/app/routes/invoice-management/invoice-manage-purchase/invoice-manage-purchase.component.spec.ts
  10. 122 0
      src/app/routes/invoice-management/invoice-manage-purchase/invoice-manage-purchase.component.ts
  11. 105 0
      src/app/routes/invoice-management/invoice-manage-purchase/update/update.component.html
  12. 24 0
      src/app/routes/invoice-management/invoice-manage-purchase/update/update.component.spec.ts
  13. 231 0
      src/app/routes/invoice-management/invoice-manage-purchase/update/update.component.ts
  14. 13 0
      src/app/routes/invoice-management/invoice-management-routing.module.ts
  15. 25 0
      src/app/routes/invoice-management/invoice-management.module.ts
  16. 7 1
      src/app/routes/project-manage-archives/add/business-affairs/business-affairs.component.ts
  17. 7 1
      src/app/routes/project-manage-archives/add/essential-information/essential-information.component.ts
  18. 7 1
      src/app/routes/project-manage-archives/update/business-affairs/business-affairs.component.ts
  19. 7 1
      src/app/routes/project-manage-archives/update/essential-information/essential-information.component.ts
  20. 1 1
      src/app/routes/project-work/development-milestone-confirm/update/update.component.html
  21. 1 1
      src/app/routes/project-work/implementation-milestone-confirm/update/update.component.html
  22. 1 1
      src/app/routes/project-work/service-milestone-confirm/update/update.component.html
  23. 3 1
      src/app/routes/routes-routing.module.ts
  24. 45 0
      src/app/services/invoice-management/invoice-manage-purchase.service.ts
  25. 19 8
      src/app/services/project-manage-archives/project-manage-archives.service.ts
  26. 3 0
      src/app/services/project-work/pro-work-logic.service.ts
  27. 二進制
      src/assets/cuidian.png
  28. 二進制
      src/assets/logo1.png
  29. 二進制
      src/assets/logo2.png
  30. 1 1
      src/index.html

+ 2 - 1
src/app/core/startup/startup.service.ts

@@ -153,7 +153,8 @@ export class StartupService {
         // 设置页面标题的后缀
         this.titleService.default = '';
         // this.titleService.suffix = "方达项目管理系统";
-        this.titleService.suffix=this.i18NService.fanyi("app.login.title");
+        // this.titleService.suffix=this.i18NService.fanyi("app.login.title");
+        this.titleService.suffix = "项目管理系统";
       },
         () => { },
         () => {

+ 25 - 0
src/app/entity/invoice-management/invoice-manage-purchase.ts

@@ -0,0 +1,25 @@
+import { Page } from '../page';
+/**
+ * 发票管理
+ */
+export class InvoiceManagePurchase extends Page{
+    id?:string;
+	//单据编号
+	billcode?:string;
+	//类型(1.采购发票 2.销售发票)
+	type?:string;
+	//项目档案id
+	proArchivesId?:string;
+	//项目编码
+	proCode?:string;
+	//项目名称
+	proName?:string;
+	//填写人(当前用户)
+	currentUser?:string;
+	//创建时间
+	createTime?:string;
+	//组织
+    pkOrg?:string;
+    //子表集合
+    detailList?:any;
+}

+ 2 - 2
src/app/layout/default/header/header.component.html

@@ -1,8 +1,8 @@
 <div class="alain-default__header-logo">
   <a [routerLink]="['/']" class="alain-default__header-logo-link">
-    <img class="alain-default__header-logo-expanded" src="./assets/fangda_logo.png" alt="{{settings.app.name}}"
+    <img class="alain-default__header-logo-expanded" src="./assets/logo2.png" alt="{{settings.app.name}}"
       style="max-height:40px;" />
-    <img class="alain-default__header-logo-collapsed" src="./assets/fangda_logo_b.png" alt="{{settings.app.name}}"
+    <img class="alain-default__header-logo-collapsed" src="./assets/logo1.png" alt="{{settings.app.name}}"
       style="max-height:30px;" />
   </a>
 </div>

+ 1 - 1
src/app/layout/passport/passport.component.html

@@ -3,7 +3,7 @@
   <div class="wrap">
     <div class="top">
       <div class="head">
-        <img class="logo" src="./assets/fangda_logo_b.png">
+        <img class="logo" src="./assets/logo1.png">
         <span class="title">项目管理系统</span><span
           style="margin-left: 10px;"><strong>(v20.1130)</strong></span>
         <!-- 测试包才有 -->

+ 105 - 0
src/app/routes/invoice-management/invoice-manage-purchase/add/add.component.html

@@ -0,0 +1,105 @@
+<nz-spin [nzSpinning]="isLoadingSave">
+  <form nz-form [formGroup]="validateForm" (ngSubmit)="submitForm()">
+    <div nz-row [nzGutter]="24">
+      <div nz-col [nzSpan]="8">
+        <nz-form-item>
+          <nz-form-label [nzSm]="6" [nzXs]="24">单据编码</nz-form-label>
+          <nz-form-control [nzSm]="14" [nzXs]="24">
+            自动生成
+          </nz-form-control>
+        </nz-form-item>
+      </div>
+      <div nz-col [nzSpan]="8">
+        <nz-form-item>
+          <nz-form-label [nzSm]="6" [nzXs]="24">项目编码</nz-form-label>
+          <nz-form-control [nzSm]="14" [nzXs]="24">
+            {{invoiceManagePurchase.proCode}}
+          </nz-form-control>
+        </nz-form-item>
+      </div>
+      <div nz-col [nzSpan]="8">
+        <nz-form-item>
+          <nz-form-label [nzSm]="6" [nzXs]="24" nzRequired>项目名称</nz-form-label>
+          <nz-form-control [nzSm]="14" [nzXs]="24">
+            <nz-select style="widows: 100%;" nzShowSearch nzAllowClear formControlName="proArchivesId"
+              id="proArchivesId" [(ngModel)]="invoiceManagePurchase.proArchivesId" nzPlaceHolder="请选择"
+              (ngModelChange)="proChange($event)">
+              <nz-option *ngFor="let i of proList" [nzValue]="i.id" [nzLabel]="i.proName"></nz-option>
+            </nz-select>
+            <nz-form-explain
+              *ngIf="validateForm.get('proArchivesId')?.dirty && validateForm.get('proArchivesId')?.errors">
+              请选择项目名称
+            </nz-form-explain>
+          </nz-form-control>
+        </nz-form-item>
+      </div>
+    </div>
+  </form>
+</nz-spin>
+
+<nz-card>
+  <div nz-row [nzGutter]="24">
+    <div nz-col [nzSpan]="24">
+      <!-- 新增按钮 -->
+      <button (click)="addRow()" nz-button nzType="primary">{{ 'button.add' | translate }}</button>
+    </div>
+  </div>
+  <div nz-row [nzGutter]="24">
+    <div nz-col [nzSpan]="24">
+      <nz-table style="padding-top: 5px;" nzSize="small" class="tableTdPadding" #basicTable
+        [nzData]="itemDataList" [nzFrontPagination]="false" [nzShowPagination]="false" >
+        <thead>
+          <tr>
+            <th nzAlign="center">序号</th>
+            <th>首付款条线</th>
+            <th>里程碑</th>
+            <th>金额</th>
+            <th>未收票金额</th>
+            <th>本次收票金额</th>
+            <th>操作</th>
+          </tr>
+        </thead>
+        <tbody>
+          <tr *ngFor="let data of basicTable.data;let i=index">
+            <td nzAlign="center">{{i+1}}</td>
+            <td style="width: 20%;">
+              <nz-select style="width: 100%;" nzShowSearch [(ngModel)]="data.coArchivesId" nzPlaceHolder="请选择">
+              <nz-option *ngFor="let i of coArchivesList" [nzValue]="i.id" [nzLabel]="i.name"></nz-option>
+            </nz-select>
+            </td>
+            <td style="width: 20%;">
+              <nz-select style="width: 100%;" nzShowSearch [(ngModel)]="data.proBusinessId" nzPlaceHolder="请选择"
+              >
+              <nz-option *ngFor="let i of proBusinessList" [nzValue]="i.id" [nzLabel]="i.proName"></nz-option>
+            </nz-select>
+            </td>
+            <td>
+              <nz-input-number [(ngModel)]="data.price" [nzMin]="0" [nzStep]="1" [nzFormatter]="formatterDollar" [nzParser]="parserDollar"></nz-input-number>
+            </td>
+            <td>
+              <nz-input-number [(ngModel)]="data.uncoPrice" [nzMin]="0" [nzStep]="1" [nzFormatter]="formatterDollar" [nzParser]="parserDollar"></nz-input-number>
+            </td>
+            <td>
+              <nz-input-number [(ngModel)]="data.coPrice" [nzMin]="0" [nzStep]="1" [nzFormatter]="formatterDollar" [nzParser]="parserDollar"></nz-input-number>
+            </td>
+            <td ><a nz-popconfirm nzTitle="是否删除?"
+                (nzOnConfirm)="deleteRow(data.sort)">{{'table.delete'|translate}}</a></td>
+          </tr>
+        </tbody>
+      </nz-table>
+    </div>
+  </div>
+</nz-card>
+
+<!-- 按钮 -->
+<div class="base">
+  <strong>填写人:</strong>{{invoiceManagePurchase.currentUser}} <strong>填写时间:</strong>{{invoiceManagePurchase.createTime}}
+  <!-- 关闭按钮 -->
+  <a nz-popconfirm nzTitle="{{'pm.contract.contract.add.button.cancel'|translate}}" (nzOnConfirm)="close()"
+    style="padding-right: 8px">
+    <button nz-button>{{'pm.quotation.cancel'|translate}}</button>
+  </a>
+  <!-- 保存按钮 -->
+  <button nz-button nzType="primary" class="ant-btn ant-btn-primary" (click)="submitForm()"
+    [nzLoading]="isLoadingSave"><span>{{'pm.finish' | translate}}</span></button>
+</div>

+ 24 - 0
src/app/routes/invoice-management/invoice-manage-purchase/add/add.component.spec.ts

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

+ 227 - 0
src/app/routes/invoice-management/invoice-manage-purchase/add/add.component.ts

@@ -0,0 +1,227 @@
+import { Component, OnInit } from '@angular/core';
+import { NzModalRef, NzMessageService, NzNotificationService, NzDrawerRef } from 'ng-zorro-antd';
+import { _HttpClient, SettingsService } from '@delon/theme';
+import { InvoiceManagePurchase } from 'app/entity/invoice-management/invoice-manage-purchase';
+import { FormBuilder, Validators, FormGroup } from '@angular/forms';
+import { DatePipe } from '@angular/common';
+import { ProjectManageArchives } from 'app/entity/project-manage-archives/project-manage-archives';
+import { ProjectManageArchivesService } from 'app/services/project-manage-archives/project-manage-archives.service';
+import { BaseArchivesCollectionLine } from 'app/entity/basedata/base-archives-collection-line';
+import { BaseArchivesCollectionLineService } from 'app/services/basedata/base-archives-collection-line.service';
+import { InvoiceManagePurchaseService } from 'app/services/invoice-management/invoice-manage-purchase.service';
+import { I18NService } from '@core';
+
+@Component({
+  selector: 'app-invoice-management-invoice-manage-purchase-add',
+  templateUrl: './add.component.html',
+  styles: [
+    `
+      .base {
+        position: absolute;
+        bottom: 0px;
+        width: 100%;
+        border-top: 1px solid rgb(232, 232, 232);
+        padding: 6px 16px;
+        text-align: right;
+        left: 0px;
+        background: #fff;
+        z-index: 99;
+      }
+    `,
+  ],
+})
+export class InvoiceManagementInvoiceManagePurchaseAddComponent implements OnInit {
+  constructor(
+    private fb: FormBuilder,
+    private settingsService: SettingsService,
+    private datePipe: DatePipe,
+    private projectManageArchivesService: ProjectManageArchivesService,
+    private baseArchivesCollectionLineService:BaseArchivesCollectionLineService,
+    private nzNotificationService:NzNotificationService,
+    private drawerRef:NzDrawerRef,
+    private invoiceManagePurchaseService:InvoiceManagePurchaseService,
+    private i18NService:I18NService
+  ) {}
+
+  ngOnInit(): void {
+    //初始化表单
+    this.validateForm = this.fb.group({
+      proArchivesId: [null, [Validators.required]],
+    });
+
+    //项目下拉数据
+    this.isLoadingSave = true;
+    this.getProList().then(() => {
+      return this.getCoArchivesList();
+    }).then(()=>{
+      this.isLoadingSave = false;
+    });
+  }
+  validateForm!: FormGroup;
+  invoiceManagePurchase: InvoiceManagePurchase = {
+    currentUser: this.settingsService.user.realname,
+    createTime: this.datePipe.transform(new Date(), 'yyyy-MM-dd HH:mm:ss'),
+  }; //对象
+  isLoadingSave = false;
+  proList = []; //项目下拉数据
+  itemDataList=[];//明细表格数据集合
+  coArchivesList=[];//条线档案数据集合
+
+  /**
+   * 获取项目下拉数据
+   */
+  getProList() {
+    return new Promise(resolve => {
+      let projectManageArchives = new ProjectManageArchives();
+      projectManageArchives.pageSize = 20000;
+      projectManageArchives.pkOrg = sessionStorage.getItem('pkOrg');
+      this.projectManageArchivesService.getList(projectManageArchives).then(response => {
+        if (response.result.records) {
+          this.proList = response.result.records;
+        }
+        resolve();
+      });
+    });
+  }
+
+  /**
+   * 获取条线下拉数据
+   */
+  getCoArchivesList(){
+    return new Promise(resolve => {
+      let baseArchivesCollectionLine = new BaseArchivesCollectionLine();
+      baseArchivesCollectionLine.pageSize = 20000;
+      baseArchivesCollectionLine.pkOrg = sessionStorage.getItem('pkOrg');
+      this.baseArchivesCollectionLineService.getList(baseArchivesCollectionLine).then(response => {
+        if (response.result.records) {
+          this.coArchivesList = response.result.records;
+        }
+        resolve();
+      });
+    });
+  }
+
+
+
+  /**
+   * 项目下拉选择事件
+   */
+  proChange(event) {
+    if (event) {
+      //根据id获取项目档案数据
+      this.projectManageArchivesService.getListById(event).then(response => {
+        if (response.success) {
+          let project = JSON.parse(JSON.stringify(response.result)); //项目档案对象
+          this.invoiceManagePurchase.proCode = project.proCode; //项目档案编码
+          this.invoiceManagePurchase.proName = project.proName; //项目档案名称
+          //获取里程碑下拉数据
+          // this.getBusinessList();
+        }
+      });
+    }
+  }
+
+  /**
+   * 获取里程碑下拉数据
+   */
+  proBusinessList=[];//里程碑下拉数据
+  getBusinessList(){
+    //查询条件:项目档案id、计划类型
+    let business={id:this.invoiceManagePurchase.proArchivesId,planType:"1"}
+    this.projectManageArchivesService.getBusinessList(business).then((response)=>{
+      if(response.success){
+        this.proBusinessList=response.result;
+      }
+    })
+  }
+
+  /**
+   * 增行按钮
+   */
+  sort = 0;
+  addRow() {
+    this.itemDataList = [
+      ...this.itemDataList,
+      {
+        price:"",
+        uncoPrice:"",
+        coPrice:"",
+        sort: this.sort
+      },
+    ];
+    this.sort++;
+  }
+
+  /**
+   * 删除行
+   */
+  deleteRow(sort) {
+    this.itemDataList = this.itemDataList.filter(d => d.sort !== sort);
+  }
+
+  //金额格式化
+  formatterDollar = (value: number) => {
+    if(value){
+      return  `$ ${value}`;
+    }else{
+      return  `$ `;
+    }
+  };
+  parserDollar = (value: string) => value.replace('$ ', '');
+
+  /**
+   * 提交保存按钮
+   */
+  submitForm(): any {
+    return new Promise(resolve => {
+      for (const i in this.validateForm.controls) {
+        this.validateForm.controls[i].markAsDirty();
+        this.validateForm.controls[i].updateValueAndValidity();
+      }
+      let valid = this.validateForm.valid;
+      if(valid){
+        this.isLoadingSave=true;
+        this.invoiceManagePurchase.type="1";//采购
+        this.invoiceManagePurchase.pkOrg=sessionStorage.getItem("pkOrg");
+        //子表保存数据处理
+        if(this.itemDataList&&this.itemDataList.length>0){
+          this.itemDataList.forEach(element => {
+            //获取条线名称
+            if(element.coArchivesId){
+              this.coArchivesList.forEach(coArchives => {
+                if(coArchives.id==element.coArchivesId){
+                  element.coArchivesName=coArchives.name
+                }
+              });
+            }else{
+              element.coArchivesName="";
+            }
+          });
+        }else{
+          //是否填写明细数据
+          this.nzNotificationService.warning("填写明细数据","");
+          this.isLoadingSave=false;
+          return;
+        }
+        this.invoiceManagePurchase.detailList=this.itemDataList;
+        this.invoiceManagePurchaseService.add(this.invoiceManagePurchase).then((response)=>{
+          if (response.success) {
+            //保存成功
+            this.isLoadingSave = false;
+            this.nzNotificationService.success(this.i18NService.fanyi('save.ok'), '');
+            this.drawerRef.close(true);
+            resolve();
+          } else {
+            //保存失败
+            this.isLoadingSave = false;
+            this.nzNotificationService.error(this.i18NService.fanyi('save.not'), '');
+          }
+        })
+      }
+    });
+  }
+
+  close() {
+    this.drawerRef.close();
+  }
+}

+ 60 - 0
src/app/routes/invoice-management/invoice-manage-purchase/invoice-manage-purchase.component.html

@@ -0,0 +1,60 @@
+<page-header [action]="phActionTpl">
+  <ng-template #phActionTpl>
+    <button (click)="add()" nz-button nzType="primary"  acl [acl-ability]="'invoice-manage-purchase:add'">新建</button>
+  </ng-template>
+</page-header>
+<nz-card>
+ <!-- 查询条件 -->
+ <form nz-form>
+  <div nz-row [nzGutter]="{ xs: 8, sm: 16, md: 24, lg: 32 }">
+    <div nz-col [nzSpan]="8">
+      <nz-form-item>
+        <nz-form-label [nzSm]="6" [nzXs]="24">单据编码</nz-form-label>
+        <nz-form-control [nzSm]="14" [nzXs]="24">
+          <input nz-input name="code" [(ngModel)]="invoiceManagePurchase.billcode" />
+        </nz-form-control>
+      </nz-form-item>
+    </div>
+    <div nz-col [nzSpan]="8">
+      <nz-form-item>
+        <nz-form-label [nzSm]="2" [nzXs]="24" [nzNoColon]=true></nz-form-label>
+        <nz-form-control [nzSm]="14" [nzXs]="24">
+          <button nzType="primary" (click)="query()" nz-button><span>查询</span></button>
+        </nz-form-control>
+      </nz-form-item>
+    </div>
+  </div>
+</form>
+ <!-- 表格 -->
+ <div nz-row [nzGutter]="{ xs: 8, sm: 16, md: 24, lg: 32 }">
+  <div nz-col [nzSpan]="24">
+    <nz-table nzSize="small" #basicTable [nzData]="listOfData" [nzFrontPagination]="false" [nzTotal]="page.total"
+      [nzPageIndex]="page.current" (nzPageIndexChange)="pageIndexChange($event)" [nzLoading]="isSpinning">
+      <thead>
+        <tr>
+          <th>单据编码</th>
+          <th>项目编码</th>
+          <th>项目名称</th>
+          <th>填写人</th>
+          <th>填写时间</th>
+          <th>操作</th>
+        </tr>
+      </thead>
+      <tbody>
+        <tr *ngFor="let data of basicTable.data">
+          <td>{{ data.billcode }}</td>
+          <td>{{ data.proCode }}</td>
+          <td>{{ data.proName }}</td>
+          <td>{{ data.currentUser }}</td>
+          <td>{{ data.createTime }}</td>
+          <td>
+            <a (click)="update(data)" acl [acl-ability]="'invoice-manage-purchase:update'">修改</a>
+            <nz-divider nzType="vertical" acl [acl-ability]="'invoice-manage-purchase:update'"></nz-divider>
+            <a (click)="delete(data.id)" acl [acl-ability]="'invoice-manage-purchase:delete'">删除</a>
+          </td>
+        </tr>
+      </tbody>
+    </nz-table>
+  </div>
+</div>
+</nz-card>

+ 24 - 0
src/app/routes/invoice-management/invoice-manage-purchase/invoice-manage-purchase.component.spec.ts

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

+ 122 - 0
src/app/routes/invoice-management/invoice-manage-purchase/invoice-manage-purchase.component.ts

@@ -0,0 +1,122 @@
+import { Component, OnInit, ViewChild } from '@angular/core';
+import { _HttpClient, ModalHelper } from '@delon/theme';
+import { STColumn, STComponent } from '@delon/abc';
+import { SFSchema } from '@delon/form';
+import { InvoiceManagePurchase } from 'app/entity/invoice-management/invoice-manage-purchase';
+import { InvoiceManagePurchaseService } from 'app/services/invoice-management/invoice-manage-purchase.service';
+import { NzDrawerService, NzNotificationService } from 'ng-zorro-antd';
+import { InvoiceManagementInvoiceManagePurchaseAddComponent } from './add/add.component';
+import { I18NService } from '@core';
+import { InvoiceManagementInvoiceManagePurchaseUpdateComponent } from './update/update.component';
+
+@Component({
+  selector: 'app-invoice-management-invoice-manage-purchase',
+  templateUrl: './invoice-manage-purchase.component.html',
+})
+export class InvoiceManagementInvoiceManagePurchaseComponent implements OnInit {
+  constructor(private invoiceManagePurchaseService: InvoiceManagePurchaseService,
+    private nzDrawerService:NzDrawerService,
+    private i18NService:I18NService,
+    private nzNotificationService:NzNotificationService) {}
+
+  ngOnInit() {
+    this.getList()
+  }
+
+  listOfData = [];
+  invoiceManagePurchase: InvoiceManagePurchase = {}; //对象
+  page = {
+    total: 0,
+    current: 0,
+  }; //页码
+  isSpinning = false;
+
+  //按页码显示数据
+  pageIndexChange(event) {
+    this.invoiceManagePurchase.pageNo = event; //当前页码
+    this.getList();
+  }
+
+  /**
+   * 查询数据表
+   */
+  getList() {
+    this.isSpinning = true;
+    this.invoiceManagePurchase.pkOrg = sessionStorage.getItem('pkOrg'); //组织
+    this.invoiceManagePurchase.type = '1'; //采购发票
+    this.invoiceManagePurchaseService.getList(this.invoiceManagePurchase).then(response => {
+      this.listOfData = response.result.records;
+      this.isSpinning = false;
+    });
+  }
+
+  /**
+   * 新增按钮
+   */
+  add() {
+    const drawerRef = this.nzDrawerService.create<InvoiceManagementInvoiceManagePurchaseAddComponent, { quotationId: string }, string>({
+      nzTitle: this.i18NService.fanyi("button.add"),//新增标题
+      nzContent: InvoiceManagementInvoiceManagePurchaseAddComponent,
+      nzWidth: window.innerWidth,
+      nzBodyStyle: { height: 'calc(100% - 55px)', overflow: 'auto', 'padding-bottom': '53px' }
+      // nzContentParams: {
+      //   //模板id
+      //   quotationId: item.id
+      // }
+    });
+
+    //关闭抽屉的回调
+    drawerRef.afterClose.subscribe((isRefresh) => {
+      if (isRefresh) {//刷新list列表
+        this.getList();
+      }
+    });
+  }
+
+  /**
+   * 修改按钮
+   * @param data 修改对象
+   */
+  update(data) {
+    const drawerRef = this.nzDrawerService.create<InvoiceManagementInvoiceManagePurchaseUpdateComponent, { id: string }, string>({
+      nzTitle: this.i18NService.fanyi("table.update"),//新增标题
+      nzContent: InvoiceManagementInvoiceManagePurchaseUpdateComponent,
+      nzWidth: window.innerWidth,
+      nzBodyStyle: { height: 'calc(100% - 55px)', overflow: 'auto', 'padding-bottom': '53px' },
+      nzContentParams: {
+        //模板id
+        id: data.id
+      }
+    });
+
+    //关闭抽屉的回调
+    drawerRef.afterClose.subscribe((isRefresh) => {
+      if (isRefresh) {//刷新list列表
+        this.getList();
+      }
+    });
+  }
+
+  delete(id) {
+    let invoiceManagePurchase=new InvoiceManagePurchase();
+    invoiceManagePurchase.id=id;
+    this.invoiceManagePurchaseService.delete(invoiceManagePurchase).then((response)=>{
+      if (response.success) {
+        //删除成功
+        this.nzNotificationService.success(this.i18NService.fanyi('successful.deletion'), '');
+        this.getList();
+      } else {
+        //删除失败
+        this.nzNotificationService.error(this.i18NService.fanyi('delete.failed'), '');
+      }
+    })
+  }
+
+  /**
+   * 查询按钮
+   */
+  query() {
+    this.invoiceManagePurchase.pageNo = 1;
+    this.getList();
+  }
+}

+ 105 - 0
src/app/routes/invoice-management/invoice-manage-purchase/update/update.component.html

@@ -0,0 +1,105 @@
+<nz-spin [nzSpinning]="isLoadingSave">
+  <form nz-form [formGroup]="validateForm" (ngSubmit)="submitForm()">
+    <div nz-row [nzGutter]="24">
+      <div nz-col [nzSpan]="8">
+        <nz-form-item>
+          <nz-form-label [nzSm]="6" [nzXs]="24">单据编码</nz-form-label>
+          <nz-form-control [nzSm]="14" [nzXs]="24">
+            自动生成
+          </nz-form-control>
+        </nz-form-item>
+      </div>
+      <div nz-col [nzSpan]="8">
+        <nz-form-item>
+          <nz-form-label [nzSm]="6" [nzXs]="24">项目编码</nz-form-label>
+          <nz-form-control [nzSm]="14" [nzXs]="24">
+            {{invoiceManagePurchase.proCode}}
+          </nz-form-control>
+        </nz-form-item>
+      </div>
+      <div nz-col [nzSpan]="8">
+        <nz-form-item>
+          <nz-form-label [nzSm]="6" [nzXs]="24" nzRequired>项目名称</nz-form-label>
+          <nz-form-control [nzSm]="14" [nzXs]="24">
+            <nz-select style="widows: 100%;" nzShowSearch nzAllowClear formControlName="proArchivesId"
+              id="proArchivesId" [(ngModel)]="invoiceManagePurchase.proArchivesId" nzPlaceHolder="请选择"
+              (ngModelChange)="proChange($event)">
+              <nz-option *ngFor="let i of proList" [nzValue]="i.id" [nzLabel]="i.proName"></nz-option>
+            </nz-select>
+            <nz-form-explain
+              *ngIf="validateForm.get('proArchivesId')?.dirty && validateForm.get('proArchivesId')?.errors">
+              请选择项目名称
+            </nz-form-explain>
+          </nz-form-control>
+        </nz-form-item>
+      </div>
+    </div>
+  </form>
+</nz-spin>
+
+<nz-card>
+  <div nz-row [nzGutter]="24">
+    <div nz-col [nzSpan]="24">
+      <!-- 新增按钮 -->
+      <button (click)="addRow()" nz-button nzType="primary">{{ 'button.add' | translate }}</button>
+    </div>
+  </div>
+  <div nz-row [nzGutter]="24">
+    <div nz-col [nzSpan]="24">
+      <nz-table style="padding-top: 5px;" nzSize="small" class="tableTdPadding" #basicTable
+        [nzData]="itemDataList" [nzFrontPagination]="false" [nzShowPagination]="false" >
+        <thead>
+          <tr>
+            <th nzAlign="center">序号</th>
+            <th>首付款条线</th>
+            <th>里程碑</th>
+            <th>金额</th>
+            <th>未收票金额</th>
+            <th>本次收票金额</th>
+            <th>操作</th>
+          </tr>
+        </thead>
+        <tbody>
+          <tr *ngFor="let data of basicTable.data;let i=index">
+            <td nzAlign="center">{{i+1}}</td>
+            <td style="width: 20%;">
+              <nz-select style="width: 100%;" nzShowSearch [(ngModel)]="data.coArchivesId" nzPlaceHolder="请选择">
+              <nz-option *ngFor="let i of coArchivesList" [nzValue]="i.id" [nzLabel]="i.name"></nz-option>
+            </nz-select>
+            </td>
+            <td style="width: 20%;">
+              <nz-select style="width: 100%;" nzShowSearch [(ngModel)]="data.proBusinessId" nzPlaceHolder="请选择"
+              (ngModelChange)="proChange($event)">
+              <nz-option *ngFor="let i of proList" [nzValue]="i.id" [nzLabel]="i.proName"></nz-option>
+            </nz-select>
+            </td>
+            <td>
+              <nz-input-number [(ngModel)]="data.price" [nzMin]="0" [nzStep]="1" [nzFormatter]="formatterDollar" [nzParser]="parserDollar"></nz-input-number>
+            </td>
+            <td>
+              <nz-input-number [(ngModel)]="data.uncoPrice" [nzMin]="0" [nzStep]="1" [nzFormatter]="formatterDollar" [nzParser]="parserDollar"></nz-input-number>
+            </td>
+            <td>
+              <nz-input-number [(ngModel)]="data.coPrice" [nzMin]="0" [nzStep]="1" [nzFormatter]="formatterDollar" [nzParser]="parserDollar"></nz-input-number>
+            </td>
+            <td ><a nz-popconfirm nzTitle="是否删除?"
+                (nzOnConfirm)="deleteRow(data.sort)">{{'table.delete'|translate}}</a></td>
+          </tr>
+        </tbody>
+      </nz-table>
+    </div>
+  </div>
+</nz-card>
+
+<!-- 按钮 -->
+<div class="base">
+  <strong>填写人:</strong>{{invoiceManagePurchase.currentUser}} <strong>填写时间:</strong>{{invoiceManagePurchase.createTime}}
+  <!-- 关闭按钮 -->
+  <a nz-popconfirm nzTitle="{{'pm.contract.contract.add.button.cancel'|translate}}" (nzOnConfirm)="close()"
+    style="padding-right: 8px">
+    <button nz-button>{{'pm.quotation.cancel'|translate}}</button>
+  </a>
+  <!-- 保存按钮 -->
+  <button nz-button nzType="primary" class="ant-btn ant-btn-primary" (click)="submitForm()"
+    [nzLoading]="isLoadingSave"><span>{{'pm.finish' | translate}}</span></button>
+</div>

+ 24 - 0
src/app/routes/invoice-management/invoice-manage-purchase/update/update.component.spec.ts

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

+ 231 - 0
src/app/routes/invoice-management/invoice-manage-purchase/update/update.component.ts

@@ -0,0 +1,231 @@
+import { Component, OnInit } from '@angular/core';
+import { NzModalRef, NzMessageService, NzNotificationService, NzDrawerRef } from 'ng-zorro-antd';
+import { _HttpClient, SettingsService } from '@delon/theme';
+import { FormBuilder, Validators, FormGroup } from '@angular/forms';
+import { DatePipe } from '@angular/common';
+import { ProjectManageArchivesService } from 'app/services/project-manage-archives/project-manage-archives.service';
+import { BaseArchivesCollectionLineService } from 'app/services/basedata/base-archives-collection-line.service';
+import { InvoiceManagePurchaseService } from 'app/services/invoice-management/invoice-manage-purchase.service';
+import { I18NService } from '@core';
+import { InvoiceManagePurchase } from 'app/entity/invoice-management/invoice-manage-purchase';
+import { ProjectManageArchives } from 'app/entity/project-manage-archives/project-manage-archives';
+import { BaseArchivesCollectionLine } from 'app/entity/basedata/base-archives-collection-line';
+
+@Component({
+  selector: 'app-invoice-management-invoice-manage-purchase-update',
+  templateUrl: './update.component.html',
+  styles: [
+    `
+      .base {
+        position: absolute;
+        bottom: 0px;
+        width: 100%;
+        border-top: 1px solid rgb(232, 232, 232);
+        padding: 6px 16px;
+        text-align: right;
+        left: 0px;
+        background: #fff;
+        z-index: 99;
+      }
+    `,
+  ],
+})
+export class InvoiceManagementInvoiceManagePurchaseUpdateComponent implements OnInit {
+  constructor(
+    private fb: FormBuilder,
+    private settingsService: SettingsService,
+    private datePipe: DatePipe,
+    private projectManageArchivesService: ProjectManageArchivesService,
+    private baseArchivesCollectionLineService: BaseArchivesCollectionLineService,
+    private nzNotificationService: NzNotificationService,
+    private drawerRef: NzDrawerRef,
+    private invoiceManagePurchaseService: InvoiceManagePurchaseService,
+    private i18NService: I18NService,
+  ) {}
+
+  ngOnInit(): void {
+    //初始化表单
+    this.validateForm = this.fb.group({
+      proArchivesId: [null, [Validators.required]],
+    });
+
+    //项目下拉数据
+    this.isLoadingSave = true;
+    this.getProList()
+      .then(() => {
+        //获取条线下拉数据
+        return this.getCoArchivesList();
+      }).then(()=>{
+        //根据id查询
+        return this.queryById();
+      })
+      .then(() => {
+        this.isLoadingSave = false;
+      });
+  }
+  validateForm!: FormGroup;
+  invoiceManagePurchase: InvoiceManagePurchase = {
+  }; //对象
+  isLoadingSave = false;
+  proList = []; //项目下拉数据
+  itemDataList = []; //明细表格数据集合
+  coArchivesList = []; //条线档案数据集合
+  id = '';
+
+  queryById() {
+    return new Promise(resolve => {
+      this.invoiceManagePurchaseService.queryById(this.id).then(response => {
+        if(response.success){
+          this.invoiceManagePurchase=response.result;//主表
+          this.itemDataList=response.result.detailList;//子表数据
+          if(this.itemDataList){//获取最大排序
+            this.sort=this.itemDataList.length;
+          }
+          resolve();
+        }else{
+          resolve();
+        }
+      });
+    });
+  }
+
+  /**
+   * 获取项目下拉数据
+   */
+  getProList() {
+    return new Promise(resolve => {
+      let projectManageArchives = new ProjectManageArchives();
+      projectManageArchives.pageSize = 20000;
+      projectManageArchives.pkOrg = sessionStorage.getItem('pkOrg');
+      this.projectManageArchivesService.getList(projectManageArchives).then(response => {
+        if (response.result.records) {
+          this.proList = response.result.records;
+        }
+        resolve();
+      });
+    });
+  }
+
+  /**
+   * 获取条线下拉数据
+   */
+  getCoArchivesList() {
+    return new Promise(resolve => {
+      let baseArchivesCollectionLine = new BaseArchivesCollectionLine();
+      baseArchivesCollectionLine.pageSize = 20000;
+      baseArchivesCollectionLine.pkOrg = sessionStorage.getItem('pkOrg');
+      this.baseArchivesCollectionLineService.getList(baseArchivesCollectionLine).then(response => {
+        if (response.result.records) {
+          this.coArchivesList = response.result.records;
+        }
+        resolve();
+      });
+    });
+  }
+
+  /**
+   * 项目下拉选择事件
+   */
+  proChange(event) {
+    if (event) {
+      //根据id获取项目档案数据
+      this.projectManageArchivesService.getListById(event).then(response => {
+        if (response.success) {
+          let project = JSON.parse(JSON.stringify(response.result)); //项目档案对象
+          this.invoiceManagePurchase.proCode = project.proCode; //项目档案编码
+          this.invoiceManagePurchase.proName = project.proName; //项目档案名称
+        }
+      });
+    }
+  }
+
+  /**
+   * 增行按钮
+   */
+  sort = 0;
+  addRow() {
+    this.itemDataList = [
+      ...this.itemDataList,
+      {
+        price: '',
+        uncoPrice: '',
+        coPrice: '',
+        sort: this.sort,
+      },
+    ];
+    this.sort++;
+  }
+
+  /**
+   * 删除行
+   */
+  deleteRow(sort) {
+    this.itemDataList = this.itemDataList.filter(d => d.sort !== sort);
+  }
+
+  //金额格式化
+  formatterDollar = (value: number) =>{
+    if(value){
+      return  `$ ${value}`;
+    }else{
+      return  `$ `;
+    }
+  };
+  parserDollar = (value: string) => value.replace('$ ', '');
+
+  /**
+   * 提交保存按钮
+   */
+  submitForm(): any {
+    return new Promise(resolve => {
+      for (const i in this.validateForm.controls) {
+        this.validateForm.controls[i].markAsDirty();
+        this.validateForm.controls[i].updateValueAndValidity();
+      }
+      let valid = this.validateForm.valid;
+      if (valid) {
+        this.isLoadingSave = true;
+        this.invoiceManagePurchase.type = '1'; //采购
+        this.invoiceManagePurchase.pkOrg = sessionStorage.getItem('pkOrg');
+        //子表保存数据处理
+        if (this.itemDataList && this.itemDataList.length > 0) {
+          this.itemDataList.forEach(element => {
+            //获取条线名称
+            if (element.coArchivesId) {
+              this.coArchivesList.forEach(coArchives => {
+                if (coArchives.id == element.coArchivesId) {
+                  element.coArchivesName = coArchives.name;
+                }
+              });
+            } else {
+              element.coArchivesName = '';
+            }
+          });
+        } else {
+          //是否填写明细数据
+          this.nzNotificationService.warning('填写明细数据', '');
+          this.isLoadingSave = false;
+          return;
+        }
+        this.invoiceManagePurchase.detailList = this.itemDataList;
+        this.invoiceManagePurchaseService.update(this.invoiceManagePurchase).then(response => {
+          if (response.success) {
+            //保存成功
+            this.isLoadingSave = false;
+            this.nzNotificationService.success(this.i18NService.fanyi('save.ok'), '');
+            this.drawerRef.close(true);
+            resolve();
+          } else {
+            //保存失败
+            this.isLoadingSave = false;
+            this.nzNotificationService.error(this.i18NService.fanyi('save.not'), '');
+          }
+        });
+      }
+    });
+  }
+
+  close() {
+    this.drawerRef.close();
+  }
+}

+ 13 - 0
src/app/routes/invoice-management/invoice-management-routing.module.ts

@@ -0,0 +1,13 @@
+import { NgModule } from '@angular/core';
+import { Routes, RouterModule } from '@angular/router';
+import { InvoiceManagementInvoiceManagePurchaseComponent } from './invoice-manage-purchase/invoice-manage-purchase.component';
+
+const routes: Routes = [
+
+  { path: 'invoice-manage-purchase', component: InvoiceManagementInvoiceManagePurchaseComponent }];
+
+@NgModule({
+  imports: [RouterModule.forChild(routes)],
+  exports: [RouterModule]
+})
+export class InvoiceManagementRoutingModule { }

+ 25 - 0
src/app/routes/invoice-management/invoice-management.module.ts

@@ -0,0 +1,25 @@
+import { NgModule } from '@angular/core';
+import { SharedModule } from '@shared';
+import { InvoiceManagementRoutingModule } from './invoice-management-routing.module';
+import { InvoiceManagementInvoiceManagePurchaseComponent } from './invoice-manage-purchase/invoice-manage-purchase.component';
+import { InvoiceManagementInvoiceManagePurchaseAddComponent } from './invoice-manage-purchase/add/add.component';
+import { InvoiceManagementInvoiceManagePurchaseUpdateComponent } from './invoice-manage-purchase/update/update.component';
+
+const COMPONENTS = [
+  InvoiceManagementInvoiceManagePurchaseComponent];
+const COMPONENTS_NOROUNT = [
+  InvoiceManagementInvoiceManagePurchaseAddComponent,
+  InvoiceManagementInvoiceManagePurchaseUpdateComponent];
+
+@NgModule({
+  imports: [
+    SharedModule,
+    InvoiceManagementRoutingModule
+  ],
+  declarations: [
+    ...COMPONENTS,
+    ...COMPONENTS_NOROUNT
+  ],
+  entryComponents: COMPONENTS_NOROUNT
+})
+export class InvoiceManagementModule { }

+ 7 - 1
src/app/routes/project-manage-archives/add/business-affairs/business-affairs.component.ts

@@ -23,7 +23,13 @@ export class ProjectManageArchivesAddBusinessAffairsComponent implements OnInit
   paymentPlanList = []; //付款计划
   paymentStatusList = []; //付款情况
   planList = []; //计划下来集合数据
-  formatterDollar = (value: number) => `$ ${value}`;
+  formatterDollar = (value: number) => {
+    if(value){
+      return  `$ ${value}`;
+    }else{
+      return  `$ `;
+    }
+  };
   parserDollar = (value: string) => value.replace('$ ', '');
   milestoneList :any= []; //里程碑集合数据
 

+ 7 - 1
src/app/routes/project-manage-archives/add/essential-information/essential-information.component.ts

@@ -50,7 +50,13 @@ export class ProjectManageArchivesAddEssentialInformationComponent implements On
   proList: any = []; //项目立项档案数据集合
   cusList = []; //客户档案数据集合
   //金额格式化
-  formatterDollar = (value: number) => `$ ${value}`;
+  formatterDollar = (value: number) => {
+    if(value){
+      return  `$ ${value}`;
+    }else{
+      return  `$ `;
+    }
+  };
   parserDollar = (value: string) => value.replace('$ ', '');
   saleManIds = []; //业务员id绑定
   personnelList = []; //人员下拉数据

+ 7 - 1
src/app/routes/project-manage-archives/update/business-affairs/business-affairs.component.ts

@@ -22,7 +22,13 @@ export class ProjectManageArchivesUpdateBusinessAffairsComponent implements OnIn
   paymentPlanList = []; //付款计划
   paymentStatusList = []; //付款情况
   planList = []; //计划下来集合数据
-  formatterDollar = (value: number) => `$ ${value}`;
+  formatterDollar = (value: number) => {
+    if(value){
+      return  `$ ${value}`;
+    }else{
+      return  `$ `;
+    }
+  };
   parserDollar = (value: string) => value.replace('$ ', '');
   milestoneList :any= []; //里程碑集合数据
 

+ 7 - 1
src/app/routes/project-manage-archives/update/essential-information/essential-information.component.ts

@@ -49,7 +49,13 @@ export class ProjectManageArchivesUpdateEssentialInformationComponent implements
   proList: any = []; //项目立项档案数据集合
   cusList = []; //客户档案数据集合
   //金额格式化
-  formatterDollar = (value: number) => `$ ${value}`;
+  formatterDollar = (value: number) => {
+    if(value){
+      return  `$ ${value}`;
+    }else{
+      return  `$ `;
+    }
+  };
   parserDollar = (value: string) => value.replace('$ ', '');
   personnelList = []; //人员下拉数据
   saleManIds = []; //业务员id绑定

+ 1 - 1
src/app/routes/project-work/development-milestone-confirm/update/update.component.html

@@ -8,7 +8,7 @@
       <nz-form-item>
         <nz-form-label [nzSpan]="'vertical' ? 24 : null" nzRequired>单据编码</nz-form-label>
         <nz-form-control [nzSm]="24" [nzXs]="24">
-          自动生成
+          {{proWorkMilestone.billcode}}
         </nz-form-control>
       </nz-form-item>
     </div>

+ 1 - 1
src/app/routes/project-work/implementation-milestone-confirm/update/update.component.html

@@ -8,7 +8,7 @@
       <nz-form-item>
         <nz-form-label [nzSpan]="'vertical' ? 24 : null" nzRequired>单据编码</nz-form-label>
         <nz-form-control [nzSm]="24" [nzXs]="24">
-          自动生成
+          {{proWorkMilestone.billcode}}
         </nz-form-control>
       </nz-form-item>
     </div>

+ 1 - 1
src/app/routes/project-work/service-milestone-confirm/update/update.component.html

@@ -8,7 +8,7 @@
       <nz-form-item>
         <nz-form-label [nzSpan]="'vertical' ? 24 : null" nzRequired>单据编码</nz-form-label>
         <nz-form-control [nzSm]="24" [nzXs]="24">
-          自动生成
+          {{proWorkMilestone.billcode}}
         </nz-form-control>
       </nz-form-item>
     </div>

+ 3 - 1
src/app/routes/routes-routing.module.ts

@@ -56,8 +56,10 @@ const routes: Routes = [
       // { path: 'quality-management', loadChildren: './quality-management/quality-management.module#QualityManagementModule' },
       //项目管理
       ,{ path: 'project-manage-archives', loadChildren: './project-manage-archives/project-manage-archives.module#ProjectManageArchivesModule' }
-      //实施日志
+      //日常工作
       ,{ path: 'project-work', loadChildren: './project-work/project-work.module#ProjectWorkModule' }
+      //发票管理
+      ,{ path: 'invoice-management', loadChildren: './invoice-management/invoice-management.module#InvoiceManagementModule' }
     ],
   },
   // 全屏布局

+ 45 - 0
src/app/services/invoice-management/invoice-manage-purchase.service.ts

@@ -0,0 +1,45 @@
+import { Injectable } from '@angular/core';
+import { HttpClient } from '@angular/common/http';
+import { BaseResponse } from 'app/entity/baseResponse';
+import { Result } from 'app/entity/Result';
+import { InvoiceManagePurchase } from 'app/entity/invoice-management/invoice-manage-purchase';
+
+@Injectable({
+  providedIn: 'root'
+})
+/**
+ * 发票管理
+ */
+export class InvoiceManagePurchaseService {
+
+  constructor(private http:HttpClient) { }
+
+   //分页查询
+   async getList(body: any): Promise<BaseResponse<Result<any>>> {
+    return await this.http
+      .get<BaseResponse<Result<any>>>('/invoice/invoiceManagePurchase/list', { params: body })
+      .toPromise();
+  }
+
+   //新增
+   async add(body: InvoiceManagePurchase): Promise<BaseResponse<any>> {
+    return await this.http.post<BaseResponse<any>>('invoice/invoiceManagePurchase/add', body).toPromise();
+  }
+
+  //根据id查询
+  async queryById(id: string): Promise<BaseResponse<any>> {
+    return await this.http
+      .get<BaseResponse<any>>('invoice/invoiceManagePurchase/queryById', { params: { id: id } })
+      .toPromise();
+  }
+
+  //删除
+  async delete(body:any):Promise<BaseResponse<any>>{
+    return await this.http.delete<BaseResponse<any>>('invoice/invoiceManagePurchase/delete',{params:body}).toPromise();
+  }
+
+  //修改
+  async update(body: InvoiceManagePurchase): Promise<BaseResponse<any>> {
+    return await this.http.put<BaseResponse<any>>('invoice/invoiceManagePurchase/edit', body).toPromise();
+  }
+}

+ 19 - 8
src/app/services/project-manage-archives/project-manage-archives.service.ts

@@ -5,14 +5,13 @@ import { Result } from 'app/entity/Result';
 import { ProjectManageArchives } from 'app/entity/project-manage-archives/project-manage-archives';
 
 @Injectable({
-  providedIn: 'root'
+  providedIn: 'root',
 })
 /**
  * 项目档案
  */
 export class ProjectManageArchivesService {
-
-  constructor(private http:HttpClient) { }
+  constructor(private http: HttpClient) {}
 
   //分页查询
   async getList(body: any): Promise<BaseResponse<Result<any>>> {
@@ -28,12 +27,16 @@ export class ProjectManageArchivesService {
 
   //根据id查询
   async queryById(id: string): Promise<BaseResponse<any>> {
-    return await this.http.get<BaseResponse<any>>("archives/projectManageArchives/queryById", { params: { id: id } }).toPromise();
+    return await this.http
+      .get<BaseResponse<any>>('archives/projectManageArchives/queryById', { params: { id: id } })
+      .toPromise();
   }
 
   //根据id查询主子表
   async getListById(id: string): Promise<BaseResponse<any>> {
-    return await this.http.get<BaseResponse<any>>("archives/projectManageArchives/getListById", { params: { id: id } }).toPromise();
+    return await this.http
+      .get<BaseResponse<any>>('archives/projectManageArchives/getListById', { params: { id: id } })
+      .toPromise();
   }
 
   //修改
@@ -42,13 +45,21 @@ export class ProjectManageArchivesService {
   }
 
   //删除
-  async delete(body:any):Promise<BaseResponse<any>>{
-    return await this.http.post<BaseResponse<any>>('archives/projectManageArchives/delete',body).toPromise();
+  async delete(body: any): Promise<BaseResponse<any>> {
+    return await this.http.post<BaseResponse<any>>('archives/projectManageArchives/delete', body).toPromise();
   }
 
   //根据档案id、类型id查询计划里程碑明细
   async getPlanListById(body: any): Promise<BaseResponse<any>> {
-    return await this.http.get<BaseResponse<any>>("archives/projectManageArchives/getPlanListById", { params: body }).toPromise();
+    return await this.http
+      .get<BaseResponse<any>>('archives/projectManageArchives/getPlanListById', { params: body })
+      .toPromise();
   }
 
+  //根据档案id、类型id查询商务页签计划数据明细
+  async getBusinessList(body: any): Promise<BaseResponse<any>> {
+    return await this.http
+      .get<BaseResponse<any>>('archives/projectManageArchives/getBusinessList', { params: body })
+      .toPromise();
+  }
 }

+ 3 - 0
src/app/services/project-work/pro-work-logic.service.ts

@@ -7,6 +7,9 @@ import { ProWorkLogic } from 'app/entity/project-work/pro-work-logic';
 @Injectable({
   providedIn: 'root'
 })
+/**
+ * 日志管理
+ */
 export class ProWorkLogicService {
 
   constructor(private http:HttpClient) { }

二進制
src/assets/cuidian.png


二進制
src/assets/logo1.png


二進制
src/assets/logo2.png


+ 1 - 1
src/index.html

@@ -3,7 +3,7 @@
 
 <head>
   <meta charset="utf-8">
-  <title>方达医药平台系统</title>
+  <title>项目管理系统</title>
   <base href="/">
   <meta name="viewport" content="width=device-width, initial-scale=1">
   <meta http-equiv="x-ua-compatible" content="ie=edge">