Browse Source

详情页面

chenc 4 years ago
parent
commit
244418f578
78 changed files with 2442 additions and 68 deletions
  1. 6 0
      src/app/entity/project-manage-archives/project-manage-archives.ts
  2. 5 1
      src/app/routes/down-payment-management/down-payment-management.module.ts
  3. 2 2
      src/app/routes/down-payment-management/payment-slip/add/add.component.html
  4. 6 4
      src/app/routes/down-payment-management/payment-slip/payment-slip.component.html
  5. 17 0
      src/app/routes/down-payment-management/payment-slip/payment-slip.component.ts
  6. 2 2
      src/app/routes/down-payment-management/payment-slip/update/update.component.html
  7. 101 0
      src/app/routes/down-payment-management/payment-slip/view/view.component.html
  8. 24 0
      src/app/routes/down-payment-management/payment-slip/view/view.component.spec.ts
  9. 62 0
      src/app/routes/down-payment-management/payment-slip/view/view.component.ts
  10. 2 0
      src/app/routes/down-payment-management/receipt/receipt.component.html
  11. 17 0
      src/app/routes/down-payment-management/receipt/receipt.component.ts
  12. 1 1
      src/app/routes/down-payment-management/receipt/update/update.component.html
  13. 2 0
      src/app/routes/down-payment-management/receipt/update/update.component.ts
  14. 101 0
      src/app/routes/down-payment-management/receipt/view/view.component.html
  15. 24 0
      src/app/routes/down-payment-management/receipt/view/view.component.spec.ts
  16. 65 0
      src/app/routes/down-payment-management/receipt/view/view.component.ts
  17. 2 0
      src/app/routes/expense-reimbursement/expense-reimbursement-form/expense-reimbursement-form.component.html
  18. 17 0
      src/app/routes/expense-reimbursement/expense-reimbursement-form/expense-reimbursement-form.component.ts
  19. 83 0
      src/app/routes/expense-reimbursement/expense-reimbursement-form/view/view.component.html
  20. 24 0
      src/app/routes/expense-reimbursement/expense-reimbursement-form/view/view.component.spec.ts
  21. 61 0
      src/app/routes/expense-reimbursement/expense-reimbursement-form/view/view.component.ts
  22. 3 1
      src/app/routes/expense-reimbursement/expense-reimbursement.module.ts
  23. 0 12
      src/app/routes/invoice-management/invoice-manage-purchase/add/add.component.ts
  24. 2 0
      src/app/routes/invoice-management/invoice-manage-purchase/invoice-manage-purchase.component.html
  25. 18 0
      src/app/routes/invoice-management/invoice-manage-purchase/invoice-manage-purchase.component.ts
  26. 1 1
      src/app/routes/invoice-management/invoice-manage-purchase/update/update.component.html
  27. 0 12
      src/app/routes/invoice-management/invoice-manage-purchase/update/update.component.ts
  28. 80 0
      src/app/routes/invoice-management/invoice-manage-purchase/view/view.component.html
  29. 24 0
      src/app/routes/invoice-management/invoice-manage-purchase/view/view.component.spec.ts
  30. 67 0
      src/app/routes/invoice-management/invoice-manage-purchase/view/view.component.ts
  31. 5 1
      src/app/routes/invoice-management/invoice-management.module.ts
  32. 0 12
      src/app/routes/invoice-management/invoice-sales/add/add.component.ts
  33. 2 0
      src/app/routes/invoice-management/invoice-sales/invoice-sales.component.html
  34. 18 0
      src/app/routes/invoice-management/invoice-sales/invoice-sales.component.ts
  35. 1 1
      src/app/routes/invoice-management/invoice-sales/update/update.component.html
  36. 0 12
      src/app/routes/invoice-management/invoice-sales/update/update.component.ts
  37. 80 0
      src/app/routes/invoice-management/invoice-sales/view/view.component.html
  38. 24 0
      src/app/routes/invoice-management/invoice-sales/view/view.component.spec.ts
  39. 65 0
      src/app/routes/invoice-management/invoice-sales/view/view.component.ts
  40. 20 0
      src/app/routes/project-manage-archives/add/add.component.ts
  41. 57 3
      src/app/routes/project-manage-archives/add/essential-information/essential-information.component.ts
  42. 2 0
      src/app/routes/project-work/development-log/development-log.component.html
  43. 18 0
      src/app/routes/project-work/development-log/development-log.component.ts
  44. 92 0
      src/app/routes/project-work/development-log/view/view.component.html
  45. 24 0
      src/app/routes/project-work/development-log/view/view.component.spec.ts
  46. 64 0
      src/app/routes/project-work/development-log/view/view.component.ts
  47. 2 0
      src/app/routes/project-work/development-milestone-confirm/development-milestone-confirm.component.html
  48. 18 0
      src/app/routes/project-work/development-milestone-confirm/development-milestone-confirm.component.ts
  49. 94 0
      src/app/routes/project-work/development-milestone-confirm/view/view.component.html
  50. 24 0
      src/app/routes/project-work/development-milestone-confirm/view/view.component.spec.ts
  51. 66 0
      src/app/routes/project-work/development-milestone-confirm/view/view.component.ts
  52. 2 0
      src/app/routes/project-work/implementation-log/implementation-log.component.html
  53. 18 0
      src/app/routes/project-work/implementation-log/implementation-log.component.ts
  54. 92 0
      src/app/routes/project-work/implementation-log/view/view.component.html
  55. 24 0
      src/app/routes/project-work/implementation-log/view/view.component.spec.ts
  56. 64 0
      src/app/routes/project-work/implementation-log/view/view.component.ts
  57. 2 0
      src/app/routes/project-work/implementation-milestone-confirm/implementation-milestone-confirm.component.html
  58. 17 0
      src/app/routes/project-work/implementation-milestone-confirm/implementation-milestone-confirm.component.ts
  59. 94 0
      src/app/routes/project-work/implementation-milestone-confirm/view/view.component.html
  60. 24 0
      src/app/routes/project-work/implementation-milestone-confirm/view/view.component.spec.ts
  61. 68 0
      src/app/routes/project-work/implementation-milestone-confirm/view/view.component.ts
  62. 13 1
      src/app/routes/project-work/project-work.module.ts
  63. 2 0
      src/app/routes/project-work/service-log/service-log.component.html
  64. 19 0
      src/app/routes/project-work/service-log/service-log.component.ts
  65. 92 0
      src/app/routes/project-work/service-log/view/view.component.html
  66. 24 0
      src/app/routes/project-work/service-log/view/view.component.spec.ts
  67. 64 0
      src/app/routes/project-work/service-log/view/view.component.ts
  68. 2 0
      src/app/routes/project-work/service-milestone-confirm/service-milestone-confirm.component.html
  69. 21 0
      src/app/routes/project-work/service-milestone-confirm/service-milestone-confirm.component.ts
  70. 94 0
      src/app/routes/project-work/service-milestone-confirm/view/view.component.html
  71. 24 0
      src/app/routes/project-work/service-milestone-confirm/view/view.component.spec.ts
  72. 66 0
      src/app/routes/project-work/service-milestone-confirm/view/view.component.ts
  73. 9 0
      src/app/routes/report-form/project-situation/project-situation.component.html
  74. 24 0
      src/app/routes/report-form/project-situation/project-situation.component.spec.ts
  75. 45 0
      src/app/routes/report-form/project-situation/project-situation.component.ts
  76. 3 1
      src/app/routes/report-form/report-form-routing.module.ts
  77. 3 1
      src/app/routes/report-form/report-form.module.ts
  78. 37 0
      src/app/shared/utils/file-show.ts

+ 6 - 0
src/app/entity/project-manage-archives/project-manage-archives.ts

@@ -36,6 +36,8 @@ export class ProjectManageArchives extends Page{
     impConsultantId?:string;
     //实施顾问
     impConsultant?:string;
+    //实施所有人员id(用于前台交互)
+    impConsultantList?:any[];
     //开发项目经理id
     deManagerId?:string;
     //开发项目经理
@@ -44,6 +46,8 @@ export class ProjectManageArchives extends Page{
     deEngineerId?:string;
     //开发工程师
     deEngineer?:string;
+    //开发所有人员id(用于前台交互)
+    deEngineerList?:any[];
     //服务经理id
     seManagerId?:string;
     //服务经理
@@ -52,6 +56,8 @@ export class ProjectManageArchives extends Page{
     seEngineerId?:string;
     //服务工程师
     seEngineer?:string;
+    //服务所有人员id(用于前台交互)
+    seEngineerList?:any[];
     //组织
     pkOrg?:string;
     //里程碑类型id

+ 5 - 1
src/app/routes/down-payment-management/down-payment-management.module.ts

@@ -7,6 +7,8 @@ import { DownPaymentManagementReceiptUpdateComponent } from './receipt/update/up
 import { DownPaymentManagementPaymentSlipComponent } from './payment-slip/payment-slip.component';
 import { DownPaymentManagementPaymentSlipAddComponent } from './payment-slip/add/add.component';
 import { DownPaymentManagementPaymentSlipUpdateComponent } from './payment-slip/update/update.component';
+import { DownPaymentManagementReceiptViewComponent } from './receipt/view/view.component';
+import { DownPaymentManagementPaymentSlipViewComponent } from './payment-slip/view/view.component';
 
 const COMPONENTS = [
   DownPaymentManagementReceiptComponent,
@@ -15,7 +17,9 @@ const COMPONENTS_NOROUNT = [
   DownPaymentManagementReceiptAddComponent,
   DownPaymentManagementReceiptUpdateComponent,
   DownPaymentManagementPaymentSlipAddComponent,
-  DownPaymentManagementPaymentSlipUpdateComponent];
+  DownPaymentManagementPaymentSlipUpdateComponent,
+  DownPaymentManagementReceiptViewComponent,
+  DownPaymentManagementPaymentSlipViewComponent];
 
 @NgModule({
   imports: [

+ 2 - 2
src/app/routes/down-payment-management/payment-slip/add/add.component.html

@@ -70,7 +70,7 @@
               <th nzAlign="center">序号</th>
               <th>收付款条线</th>
               <th>里程碑</th>
-              <th>款金额</th>
+              <th>款金额</th>
               <th>说明</th>
               <th>对应发票</th>
               <th>操作</th>
@@ -107,7 +107,7 @@
             </tr>
             <tr *ngIf="itemDataList&&itemDataList.length>0">
               <td colSpan="2"></td>
-              <td><strong>款总金额</strong></td>
+              <td><strong>款总金额</strong></td>
               <td><strong>$ {{managerPaymentAndReceiptSlip.totalPrice}}</strong></td>
               <td colSpan="3"></td>
             </tr>

+ 6 - 4
src/app/routes/down-payment-management/payment-slip/payment-slip.component.html

@@ -1,6 +1,6 @@
 <page-header [action]="phActionTpl">
   <ng-template #phActionTpl>
-    <button (click)="add()" nz-button nzType="primary">新建</button>
+    <button (click)="add()" nz-button nzType="primary" acl [acl-ability]="'payment-slip:add'">新建</button>
   </ng-template>
 </page-header>
 <nz-card>
@@ -48,9 +48,11 @@
           <td>{{ data.proCode }}</td>
           <td>{{ data.proName }}</td>
           <td>
-            <a (click)="update(data)" acl [acl-ability]="'receipt:update'">修改</a>
-            <nz-divider nzType="vertical" acl [acl-ability]="'receipt:update'"></nz-divider>
-            <a (click)="delete(data.id)" acl [acl-ability]="'receipt:delete'">删除</a>
+            <a (click)="view(data)" acl [acl-ability]="'payment-slip:view'">详情</a>
+            <nz-divider nzType="vertical" acl [acl-ability]="'payment-slip:view'"></nz-divider>
+            <a (click)="update(data)" acl [acl-ability]="'payment-slip:update'">修改</a>
+            <nz-divider nzType="vertical" acl [acl-ability]="'payment-slip:update'"></nz-divider>
+            <a (click)="delete(data.id)" acl [acl-ability]="'payment-slip:delete'">删除</a>
           </td>
         </tr>
       </tbody>

+ 17 - 0
src/app/routes/down-payment-management/payment-slip/payment-slip.component.ts

@@ -8,6 +8,7 @@ import { I18NService } from '@core';
 import { ManagerPaymentAndReceiptSlip } from 'app/entity/down-payment-management/manager-payment-and-receipt-slip';
 import { DownPaymentManagementPaymentSlipAddComponent } from './add/add.component';
 import { DownPaymentManagementPaymentSlipUpdateComponent } from './update/update.component';
+import { DownPaymentManagementPaymentSlipViewComponent } from './view/view.component';
 
 @Component({
   selector: 'app-down-payment-management-payment-slip',
@@ -104,6 +105,22 @@ export class DownPaymentManagementPaymentSlipComponent implements OnInit {
     });
   }
 
+  /**
+   * 详情按钮
+   */
+  view(data){
+    const drawerRef = this.nzDrawerService.create<DownPaymentManagementPaymentSlipViewComponent, { id: string }, string>({
+      nzTitle: this.i18NService.fanyi("table.view"),//详情标题
+      nzContent: DownPaymentManagementPaymentSlipViewComponent,
+      nzWidth: window.innerWidth,
+      nzBodyStyle: { height: 'calc(100% - 55px)', overflow: 'auto', 'padding-bottom': '53px' },
+      nzContentParams: {
+        //模板id
+        id: data.id
+      }
+    });
+  }
+
   /**
    * 删除按钮
    * @param id 删除id

+ 2 - 2
src/app/routes/down-payment-management/payment-slip/update/update.component.html

@@ -70,7 +70,7 @@
               <th nzAlign="center">序号</th>
               <th>收付款条线</th>
               <th>里程碑</th>
-              <th>款金额</th>
+              <th>款金额</th>
               <th>说明</th>
               <th>对应发票</th>
               <th>操作</th>
@@ -107,7 +107,7 @@
             </tr>
             <tr *ngIf="itemDataList&&itemDataList.length>0">
               <td colSpan="2"></td>
-              <td><strong>款总金额</strong></td>
+              <td><strong>款总金额</strong></td>
               <td><strong>$ {{managerPaymentAndReceiptSlip.totalPrice}}</strong></td>
               <td colSpan="3"></td>
             </tr>

+ 101 - 0
src/app/routes/down-payment-management/payment-slip/view/view.component.html

@@ -0,0 +1,101 @@
+<nz-spin [nzSpinning]="isLoadingSave">
+  <form nz-form >
+    <div nz-row [nzGutter]="24">
+      <div nz-col [nzSpan]="6">
+        <nz-form-item>
+          <nz-form-label [nzSm]="6" [nzXs]="24">单据编码</nz-form-label>
+          <nz-form-control [nzSm]="14" [nzXs]="24">
+            {{managerPaymentAndReceiptSlip.billcode}}
+          </nz-form-control>
+        </nz-form-item>
+      </div>
+    </div>
+    <div nz-row [nzGutter]="24">
+      <div nz-col [nzSpan]="6">
+        <nz-form-item>
+          <nz-form-label [nzSm]="6" [nzXs]="24">客户编码</nz-form-label>
+          <nz-form-control [nzSm]="14" [nzXs]="24">
+            {{managerPaymentAndReceiptSlip.cusCode}}
+          </nz-form-control>
+        </nz-form-item>
+      </div>
+      <div nz-col [nzSpan]="6">
+        <nz-form-item>
+          <nz-form-label [nzSm]="6" [nzXs]="24">客户名称</nz-form-label>
+          <nz-form-control [nzSm]="14" [nzXs]="24">
+            {{managerPaymentAndReceiptSlip.cusName}}
+          </nz-form-control>
+        </nz-form-item>
+      </div>
+      <div nz-col [nzSpan]="6">
+        <nz-form-item>
+          <nz-form-label [nzSm]="6" [nzXs]="24">项目编码</nz-form-label>
+          <nz-form-control [nzSm]="14" [nzXs]="24">
+            {{managerPaymentAndReceiptSlip.proCode}}
+          </nz-form-control>
+        </nz-form-item>
+      </div>
+      <div nz-col [nzSpan]="6">
+        <nz-form-item>
+          <nz-form-label [nzSm]="6" [nzXs]="24" nzRequired>项目名称</nz-form-label>
+          <nz-form-control [nzSm]="14" [nzXs]="24">
+            {{managerPaymentAndReceiptSlip.proName}}
+          </nz-form-control>
+        </nz-form-item>
+      </div>
+    </div>
+  </form>
+<!-- 子表数据 -->
+  <nz-card>
+    <div nz-row [nzGutter]="24">
+      <div nz-col [nzSpan]="24">
+        <nz-table style="padding-top: 5px;" nzSize="small" #basicTable
+          [nzData]="itemDataList" [nzFrontPagination]="false" [nzShowPagination]="false" >
+          <thead>
+            <tr>
+              <th nzAlign="center">序号</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}}{{data.sort}}</td>
+              <td style="width: 20%;">
+                {{data.coArchivesName}}
+              </td>
+              <td style="width: 20%;">
+                {{data.proArchivesMilestone}}
+              </td>
+              <td>
+                {{data.coPrvice}}
+              </td>
+              <td>
+                {{data.explain}}
+              </td>
+              <td style="width: 20%;">
+                {{data.invoice}}
+              </td>
+              
+            </tr>
+            <tr *ngIf="itemDataList&&itemDataList.length>0">
+              <td colSpan="2"></td>
+              <td><strong>付款总金额</strong></td>
+              <td><strong>$ {{managerPaymentAndReceiptSlip.totalPrice}}</strong></td>
+              <td colSpan="2"></td>
+            </tr>
+          </tbody>
+        </nz-table>
+      </div>
+    </div>
+  </nz-card>
+</nz-spin>
+<!-- 按钮 -->
+<div class="base">
+  <!-- 关闭按钮 -->
+  <button nz-button  (click)="close()"
+    [nzLoading]="isLoadingSave"><span>{{'pm.quotation.cancel' | translate}}</span></button>
+</div>

+ 24 - 0
src/app/routes/down-payment-management/payment-slip/view/view.component.spec.ts

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

+ 62 - 0
src/app/routes/down-payment-management/payment-slip/view/view.component.ts

@@ -0,0 +1,62 @@
+import { Component, OnInit } from '@angular/core';
+import { NzModalRef, NzMessageService, NzDrawerRef } from 'ng-zorro-antd';
+import { _HttpClient } from '@delon/theme';
+import { ManagerPaymentAndReceiptSlipService } from 'app/services/down-payment-management/manager-payment-and-receipt-slip.service';
+import { ManagerPaymentAndReceiptSlip } from 'app/entity/down-payment-management/manager-payment-and-receipt-slip';
+
+@Component({
+  selector: 'app-down-payment-management-payment-slip-view',
+  templateUrl: './view.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 DownPaymentManagementPaymentSlipViewComponent implements OnInit {
+  constructor(
+    private managerPaymentAndReceiptSlipService:ManagerPaymentAndReceiptSlipService,
+    private drawerRef:NzDrawerRef
+  ) { }
+
+  ngOnInit(): void {
+    this.isLoadingSave=true;
+    this.getById().then(()=>{
+      this.isLoadingSave=false;
+    })
+  }
+
+  managerPaymentAndReceiptSlip: ManagerPaymentAndReceiptSlip = {}; //对象
+  isLoadingSave = false;
+  id="";
+  itemDataList=[];//子表数据
+
+  /**
+   * 根据id查询
+   */
+  getById(){
+    return new Promise(resolve => {
+      this.managerPaymentAndReceiptSlipService.queryById(this.id).then((response)=>{
+        if(response.success){
+          this.managerPaymentAndReceiptSlip=response.result;//主表数据
+          this.itemDataList=response.result.detailList;//子表数据
+        }
+        resolve();
+      })
+    })
+  }
+
+  close() {
+    this.drawerRef.close();
+  }
+}

+ 2 - 0
src/app/routes/down-payment-management/receipt/receipt.component.html

@@ -49,6 +49,8 @@
           <td>{{ data.proCode }}</td>
           <td>{{ data.proName }}</td>
           <td>
+            <a (click)="view(data)" acl [acl-ability]="'receipt:update'">详情</a>
+            <nz-divider nzType="vertical" acl [acl-ability]="'receipt:update'"></nz-divider>
             <a (click)="update(data)" acl [acl-ability]="'receipt:update'">修改</a>
             <nz-divider nzType="vertical" acl [acl-ability]="'receipt:update'"></nz-divider>
             <a (click)="delete(data.id)" acl [acl-ability]="'receipt:delete'">删除</a>

+ 17 - 0
src/app/routes/down-payment-management/receipt/receipt.component.ts

@@ -8,6 +8,7 @@ import { NzDrawerService, NzNotificationService } from 'ng-zorro-antd';
 import { DownPaymentManagementReceiptAddComponent } from './add/add.component';
 import { I18NService } from '@core';
 import { DownPaymentManagementReceiptUpdateComponent } from './update/update.component';
+import { DownPaymentManagementReceiptViewComponent } from './view/view.component';
 
 @Component({
   selector: 'app-down-payment-management-receipt',
@@ -104,6 +105,22 @@ export class DownPaymentManagementReceiptComponent implements OnInit {
     });
   }
 
+  /**
+   * 详情按钮
+   */
+  view(data){
+    const drawerRef = this.nzDrawerService.create<DownPaymentManagementReceiptViewComponent, { id: string }, string>({
+      nzTitle: this.i18NService.fanyi("table.view"),//详情标题
+      nzContent: DownPaymentManagementReceiptViewComponent,
+      nzWidth: window.innerWidth,
+      nzBodyStyle: { height: 'calc(100% - 55px)', overflow: 'auto', 'padding-bottom': '53px' },
+      nzContentParams: {
+        //模板id
+        id: data.id
+      }
+    });
+  }
+
   /**
    * 删除按钮
    * @param id 删除id

+ 1 - 1
src/app/routes/down-payment-management/receipt/update/update.component.html

@@ -5,7 +5,7 @@
         <nz-form-item>
           <nz-form-label [nzSm]="6" [nzXs]="24">单据编码</nz-form-label>
           <nz-form-control [nzSm]="14" [nzXs]="24">
-            自动生成
+            {{managerPaymentAndReceiptSlip.billcode}}
           </nz-form-control>
         </nz-form-item>
       </div>

+ 2 - 0
src/app/routes/down-payment-management/receipt/update/update.component.ts

@@ -182,6 +182,7 @@ export class DownPaymentManagementReceiptUpdateComponent implements OnInit {
    * 获取里程碑下拉数据
    */
   getMilList(data) {
+    console.log(data)
     //获取里程碑下拉数据
     let where = { businessId: data.coArchivesId };
     this.projectManageArchivesService.getMileNameById(where).then(response => {
@@ -193,6 +194,7 @@ export class DownPaymentManagementReceiptUpdateComponent implements OnInit {
         }
       }
     });
+    console.log(data)
   }
 
   /**

+ 101 - 0
src/app/routes/down-payment-management/receipt/view/view.component.html

@@ -0,0 +1,101 @@
+<nz-spin [nzSpinning]="isLoadingSave">
+  <form nz-form >
+    <div nz-row [nzGutter]="24">
+      <div nz-col [nzSpan]="6">
+        <nz-form-item>
+          <nz-form-label [nzSm]="6" [nzXs]="24">单据编码</nz-form-label>
+          <nz-form-control [nzSm]="14" [nzXs]="24">
+            {{managerPaymentAndReceiptSlip.billcode}}
+          </nz-form-control>
+        </nz-form-item>
+      </div>
+    </div>
+    <div nz-row [nzGutter]="24">
+      <div nz-col [nzSpan]="6">
+        <nz-form-item>
+          <nz-form-label [nzSm]="6" [nzXs]="24">客户编码</nz-form-label>
+          <nz-form-control [nzSm]="14" [nzXs]="24">
+            {{managerPaymentAndReceiptSlip.cusCode}}
+          </nz-form-control>
+        </nz-form-item>
+      </div>
+      <div nz-col [nzSpan]="6">
+        <nz-form-item>
+          <nz-form-label [nzSm]="6" [nzXs]="24">客户名称</nz-form-label>
+          <nz-form-control [nzSm]="14" [nzXs]="24">
+            {{managerPaymentAndReceiptSlip.cusName}}
+          </nz-form-control>
+        </nz-form-item>
+      </div>
+      <div nz-col [nzSpan]="6">
+        <nz-form-item>
+          <nz-form-label [nzSm]="6" [nzXs]="24">项目编码</nz-form-label>
+          <nz-form-control [nzSm]="14" [nzXs]="24">
+            {{managerPaymentAndReceiptSlip.proCode}}
+          </nz-form-control>
+        </nz-form-item>
+      </div>
+      <div nz-col [nzSpan]="6">
+        <nz-form-item>
+          <nz-form-label [nzSm]="6" [nzXs]="24" nzRequired>项目名称</nz-form-label>
+          <nz-form-control [nzSm]="14" [nzXs]="24">
+            {{managerPaymentAndReceiptSlip.proName}}
+          </nz-form-control>
+        </nz-form-item>
+      </div>
+    </div>
+  </form>
+<!-- 子表数据 -->
+  <nz-card>
+    <div nz-row [nzGutter]="24">
+      <div nz-col [nzSpan]="24">
+        <nz-table style="padding-top: 5px;" nzSize="small" #basicTable
+          [nzData]="itemDataList" [nzFrontPagination]="false" [nzShowPagination]="false" >
+          <thead>
+            <tr>
+              <th nzAlign="center">序号</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}}{{data.sort}}</td>
+              <td style="width: 20%;">
+                {{data.coArchivesName}}
+              </td>
+              <td style="width: 20%;">
+                {{data.proArchivesMilestone}}
+              </td>
+              <td>
+                {{data.coPrvice}}
+              </td>
+              <td>
+                {{data.explain}}
+              </td>
+              <td style="width: 20%;">
+                {{data.invoice}}
+              </td>
+              
+            </tr>
+            <tr *ngIf="itemDataList&&itemDataList.length>0">
+              <td colSpan="2"></td>
+              <td><strong>收款总金额</strong></td>
+              <td><strong>$ {{managerPaymentAndReceiptSlip.totalPrice}}</strong></td>
+              <td colSpan="2"></td>
+            </tr>
+          </tbody>
+        </nz-table>
+      </div>
+    </div>
+  </nz-card>
+</nz-spin>
+<!-- 按钮 -->
+<div class="base">
+  <!-- 关闭按钮 -->
+  <button nz-button  (click)="close()"
+    [nzLoading]="isLoadingSave"><span>{{'pm.quotation.cancel' | translate}}</span></button>
+</div>

+ 24 - 0
src/app/routes/down-payment-management/receipt/view/view.component.spec.ts

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

+ 65 - 0
src/app/routes/down-payment-management/receipt/view/view.component.ts

@@ -0,0 +1,65 @@
+import { Component, OnInit } from '@angular/core';
+import { NzModalRef, NzMessageService, NzDrawerRef } from 'ng-zorro-antd';
+import { _HttpClient } from '@delon/theme';
+import { ManagerPaymentAndReceiptSlip } from 'app/entity/down-payment-management/manager-payment-and-receipt-slip';
+import { ManagerPaymentAndReceiptSlipService } from 'app/services/down-payment-management/manager-payment-and-receipt-slip.service';
+
+@Component({
+  selector: 'app-down-payment-management-receipt-view',
+  templateUrl: './view.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 DownPaymentManagementReceiptViewComponent implements OnInit {
+  
+
+  constructor(
+    private managerPaymentAndReceiptSlipService:ManagerPaymentAndReceiptSlipService,
+    private drawerRef:NzDrawerRef
+  ) { }
+
+  ngOnInit(): void {
+    this.isLoadingSave=true;
+    this.getById().then(()=>{
+      this.isLoadingSave=false;
+    })
+  }
+
+  managerPaymentAndReceiptSlip: ManagerPaymentAndReceiptSlip = {}; //对象
+  isLoadingSave = false;
+  id="";
+  itemDataList=[];//子表数据
+
+  /**
+   * 根据id查询
+   */
+  getById(){
+    return new Promise(resolve => {
+      this.managerPaymentAndReceiptSlipService.queryById(this.id).then((response)=>{
+        if(response.success){
+          this.managerPaymentAndReceiptSlip=response.result;//主表数据
+          this.itemDataList=response.result.detailList;//子表数据
+        }
+        resolve();
+      })
+    })
+  }
+
+  close() {
+    this.drawerRef.close();
+  }
+  
+}

+ 2 - 0
src/app/routes/expense-reimbursement/expense-reimbursement-form/expense-reimbursement-form.component.html

@@ -46,6 +46,8 @@
           <td>{{ data.proName }}</td>
           <td>{{ data.producer }}</td>
           <td>
+            <a (click)="view(data)" acl [acl-ability]="'expense-reimbursement-form:view'">详情</a>
+            <nz-divider nzType="vertical" acl [acl-ability]="'expense-reimbursement-form:view'"></nz-divider>
             <a (click)="update(data)" acl [acl-ability]="'expense-reimbursement-form:update'">修改</a>
             <nz-divider nzType="vertical" acl [acl-ability]="'expense-reimbursement-form:update'"></nz-divider>
             <a (click)="delete(data.id)" acl [acl-ability]="'expense-reimbursement-form:delete'">删除</a>

+ 17 - 0
src/app/routes/expense-reimbursement/expense-reimbursement-form/expense-reimbursement-form.component.ts

@@ -8,6 +8,7 @@ import { NzDrawerService, NzNotificationService } from 'ng-zorro-antd';
 import { ExpenseReimbursementExpenseReimbursementFormAddComponent } from './add/add.component';
 import { I18NService } from '@core';
 import { ExpenseReimbursementExpenseReimbursementFormUpdateComponent } from './update/update.component';
+import { ExpenseReimbursementExpenseReimbursementFormViewComponent } from './view/view.component';
 
 @Component({
   selector: 'app-expense-reimbursement-expense-reimbursement-form',
@@ -100,6 +101,22 @@ export class ExpenseReimbursementExpenseReimbursementFormComponent implements On
     });
   }
 
+  /**
+   * 详情按钮
+   */
+  view(data){
+    const drawerRef = this.nzDrawerService.create<ExpenseReimbursementExpenseReimbursementFormViewComponent, { id: string }, string>({
+      nzTitle: this.i18NService.fanyi("table.view"),//详情标题
+      nzContent: ExpenseReimbursementExpenseReimbursementFormViewComponent,
+      nzWidth: window.innerWidth,
+      nzBodyStyle: { height: 'calc(100% - 55px)', overflow: 'auto', 'padding-bottom': '53px' },
+      nzContentParams: {
+        //模板id
+        id: data.id
+      }
+    });
+  }
+
   delete(id){
     let reExpenseSlip={id:id}
     this.reExpenseSlipService.delete(reExpenseSlip).then((response)=>{

+ 83 - 0
src/app/routes/expense-reimbursement/expense-reimbursement-form/view/view.component.html

@@ -0,0 +1,83 @@
+<nz-spin [nzSpinning]="isLoadingSave">
+  <form nz-form>
+    <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">
+            {{reExpenseSlip.person}}
+          </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">
+            {{reExpenseSlip.date}}
+          </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">
+            {{reExpenseSlip.proName}}
+          </nz-form-control>
+        </nz-form-item>
+      </div>
+    </div>
+    <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">
+            {{reExpenseSlip.producer}}
+          </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">
+            {{reExpenseSlip.reviewer}}
+          </nz-form-control>
+        </nz-form-item>
+      </div>
+    </div>
+  </form>
+
+  <nz-card>
+    <div nz-row [nzGutter]="24">
+      <div nz-col [nzSpan]="24">
+        <nz-table style="padding-top: 5px;" nzSize="small" #basicTable
+          [nzData]="itemDataList" [nzFrontPagination]="false" [nzShowPagination]="false" >
+          <thead>
+            <tr>
+              <th nzAlign="center">序号</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%;">
+                {{data.costName}}
+              </td>
+              <td>
+                {{data.price}}
+              </td>
+            </tr>
+          </tbody>
+        </nz-table>
+      </div>
+    </div>
+  </nz-card>
+</nz-spin>
+
+<!-- 按钮 -->
+<div class="base">
+  <!-- 关闭按钮 -->
+  <button nz-button (click)="close()"
+    [nzLoading]="isLoadingSave"><span>{{'pm.quotation.cancel'|translate}}</span></button>
+</div>

+ 24 - 0
src/app/routes/expense-reimbursement/expense-reimbursement-form/view/view.component.spec.ts

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

+ 61 - 0
src/app/routes/expense-reimbursement/expense-reimbursement-form/view/view.component.ts

@@ -0,0 +1,61 @@
+import { Component, OnInit } from '@angular/core';
+import { NzModalRef, NzMessageService, NzDrawerRef } from 'ng-zorro-antd';
+import { _HttpClient } from '@delon/theme';
+import { ReExpenseSlip } from 'app/entity/expense-reimbursement/re-expense-slip';
+import { ReExpenseSlipService } from 'app/services/expense-reimbursement/re-expense-slip.service';
+
+@Component({
+  selector: 'app-expense-reimbursement-expense-reimbursement-form-view',
+  templateUrl: './view.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 ExpenseReimbursementExpenseReimbursementFormViewComponent implements OnInit {
+ 
+  constructor(
+    private reExpenseSlipService:ReExpenseSlipService,
+    private drawerRef:NzDrawerRef
+  ) { }
+
+  ngOnInit(): void {
+    this.isLoadingSave=true;
+    this.getListById().then(()=>{
+      this.isLoadingSave=false;
+    })
+  }
+
+  reExpenseSlip: ReExpenseSlip = {}; //对象
+  isLoadingSave = false;
+  id="";
+  itemDataList=[];//子表信息
+
+  /**
+   * 根据id查询主子表数据
+   */
+  getListById(){
+    return new Promise((resolve)=>{
+      this.reExpenseSlipService.getListById(this.id).then((response)=>{
+        this.reExpenseSlip=response.result;//主表
+        this.itemDataList=response.result.detailList;//子表明细
+        resolve();
+      })
+    })
+  }
+
+  close() {
+    this.drawerRef.close();
+  }
+}

+ 3 - 1
src/app/routes/expense-reimbursement/expense-reimbursement.module.ts

@@ -4,12 +4,14 @@ import { ExpenseReimbursementRoutingModule } from './expense-reimbursement-routi
 import { ExpenseReimbursementExpenseReimbursementFormComponent } from './expense-reimbursement-form/expense-reimbursement-form.component';
 import { ExpenseReimbursementExpenseReimbursementFormAddComponent } from './expense-reimbursement-form/add/add.component';
 import { ExpenseReimbursementExpenseReimbursementFormUpdateComponent } from './expense-reimbursement-form/update/update.component';
+import { ExpenseReimbursementExpenseReimbursementFormViewComponent } from './expense-reimbursement-form/view/view.component';
 
 const COMPONENTS = [
   ExpenseReimbursementExpenseReimbursementFormComponent];
 const COMPONENTS_NOROUNT = [
   ExpenseReimbursementExpenseReimbursementFormAddComponent,
-  ExpenseReimbursementExpenseReimbursementFormUpdateComponent];
+  ExpenseReimbursementExpenseReimbursementFormUpdateComponent,
+  ExpenseReimbursementExpenseReimbursementFormViewComponent];
 
 @NgModule({
   imports: [

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

@@ -264,18 +264,6 @@ export class InvoiceManagementInvoiceManagePurchaseAddComponent implements OnIni
         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("填写明细数据","");

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

@@ -49,6 +49,8 @@
           <td>{{ data.currentUser }}</td>
           <td>{{ data.createTime }}</td>
           <td>
+            <a (click)="view(data)" acl [acl-ability]="'invoice-manage-purchase:view'">详情</a>
+            <nz-divider nzType="vertical" acl [acl-ability]="'invoice-manage-purchase:view'"></nz-divider>
             <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>

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

@@ -8,6 +8,7 @@ import { NzDrawerService, NzNotificationService } from 'ng-zorro-antd';
 import { InvoiceManagementInvoiceManagePurchaseAddComponent } from './add/add.component';
 import { I18NService } from '@core';
 import { InvoiceManagementInvoiceManagePurchaseUpdateComponent } from './update/update.component';
+import { InvoiceManagementInvoiceManagePurchaseViewComponent } from './view/view.component';
 
 @Component({
   selector: 'app-invoice-management-invoice-manage-purchase',
@@ -99,6 +100,23 @@ export class InvoiceManagementInvoiceManagePurchaseComponent implements OnInit {
     });
   }
 
+  /**
+   * 详情按钮
+   * @param data 详情对象
+   */
+  view(data) {
+    const drawerRef = this.nzDrawerService.create<InvoiceManagementInvoiceManagePurchaseViewComponent, { id: string }, string>({
+      nzTitle: this.i18NService.fanyi("table.view"),//详情标题
+      nzContent: InvoiceManagementInvoiceManagePurchaseViewComponent,
+      nzWidth: window.innerWidth,
+      nzBodyStyle: { height: 'calc(100% - 55px)', overflow: 'auto', 'padding-bottom': '53px' },
+      nzContentParams: {
+        //模板id
+        id: data.id
+      }
+    });
+  }
+
   delete(id) {
     let invoiceManagePurchase=new InvoiceManagePurchase();
     invoiceManagePurchase.id=id;

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

@@ -5,7 +5,7 @@
         <nz-form-item>
           <nz-form-label [nzSm]="6" [nzXs]="24">单据编码</nz-form-label>
           <nz-form-control [nzSm]="14" [nzXs]="24">
-            自动生成
+            {{invoiceManagePurchase.billcode}}
           </nz-form-control>
         </nz-form-item>
       </div>

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

@@ -288,18 +288,6 @@ export class InvoiceManagementInvoiceManagePurchaseUpdateComponent implements On
         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('填写明细数据', '');

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

@@ -0,0 +1,80 @@
+<nz-spin [nzSpinning]="isLoadingSave">
+  <form nz-form >
+    <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">
+            {{invoiceManagePurchase.billcode}}
+          </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">
+           {{invoiceManagePurchase.proName}}
+          </nz-form-control>
+        </nz-form-item>
+      </div>
+    </div>
+  </form>
+
+
+<nz-card>
+  <div nz-row [nzGutter]="24">
+    <div nz-col [nzSpan]="24">
+      <nz-table style="padding-top: 5px;" nzSize="small" #basicTable
+        [nzData]="itemDataList" [nzFrontPagination]="false" [nzShowPagination]="false" >
+        <thead>
+          <tr>
+            <th nzAlign="center">序号</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%;">
+              {{data.coArchivesName}}
+            </td>
+            <td style="width: 20%;">
+              {{data.proArchivesMilestone}}
+            </td>
+            <td>
+              <!-- <nz-input-number [(ngModel)]="data.price" [nzMin]="0" [nzStep]="1" [nzFormatter]="formatterDollar" [nzParser]="parserDollar"></nz-input-number> -->
+              {{data.price}}
+            </td>
+            <td>
+              <!-- <nz-input-number [(ngModel)]="data.uncoPrice" [nzMin]="0" [nzStep]="1" [nzFormatter]="formatterDollar" [nzParser]="parserDollar"></nz-input-number> -->
+              {{data.uncoPrice}}
+            </td>
+            <td>
+              {{data.coPrice}}
+            </td>
+          </tr>
+        </tbody>
+      </nz-table>
+    </div>
+  </div>
+</nz-card>
+</nz-spin>
+<!-- 按钮 -->
+<div class="base">
+  <strong>填写人:</strong>{{invoiceManagePurchase.currentUser}} <strong>填写时间:</strong>{{invoiceManagePurchase.createTime}}
+  <!-- 关闭按钮 -->
+  <button nz-button  (click)="close()"
+    [nzLoading]="isLoadingSave"><span>{{'pm.quotation.cancel'|translate}}</span></button>
+</div>

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

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

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

@@ -0,0 +1,67 @@
+import { Component, OnInit } from '@angular/core';
+import { NzModalRef, NzMessageService, NzDrawerRef } from 'ng-zorro-antd';
+import { _HttpClient } from '@delon/theme';
+import { InvoiceManagePurchase } from 'app/entity/invoice-management/invoice-manage-purchase';
+import { InvoiceManagePurchaseService } from 'app/services/invoice-management/invoice-manage-purchase.service';
+
+@Component({
+  selector: 'app-invoice-management-invoice-manage-purchase-view',
+  templateUrl: './view.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 InvoiceManagementInvoiceManagePurchaseViewComponent implements OnInit {
+  
+
+  constructor(
+    private invoiceManagePurchaseService:InvoiceManagePurchaseService,
+    private drawerRef:NzDrawerRef
+  ) { }
+
+  ngOnInit(): void {
+    this.isLoadingSave=true;
+    this.queryById().then(()=>{
+      this.isLoadingSave=false;
+    })
+  }
+
+  invoiceManagePurchase: InvoiceManagePurchase = {}; //对象
+  isLoadingSave = false;
+  itemDataList = []; //明细表格数据集合
+  id="";
+
+  /**
+   * 根据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; //子表数据
+          resolve();
+        } else {
+          resolve();
+        }
+      });
+    });
+  }
+
+
+  close() {
+    this.drawerRef.close();
+  }
+}

+ 5 - 1
src/app/routes/invoice-management/invoice-management.module.ts

@@ -7,6 +7,8 @@ import { InvoiceManagementInvoiceManagePurchaseUpdateComponent } from './invoice
 import { InvoiceManagementInvoiceSalesComponent } from './invoice-sales/invoice-sales.component';
 import { InvoiceManagementInvoiceSalesAddComponent } from './invoice-sales/add/add.component';
 import { InvoiceManagementInvoiceSalesUpdateComponent } from './invoice-sales/update/update.component';
+import { InvoiceManagementInvoiceManagePurchaseViewComponent } from './invoice-manage-purchase/view/view.component';
+import { InvoiceManagementInvoiceSalesViewComponent } from './invoice-sales/view/view.component';
 
 const COMPONENTS = [
   InvoiceManagementInvoiceManagePurchaseComponent,
@@ -15,7 +17,9 @@ const COMPONENTS_NOROUNT = [
   InvoiceManagementInvoiceManagePurchaseAddComponent,
   InvoiceManagementInvoiceManagePurchaseUpdateComponent,
   InvoiceManagementInvoiceSalesAddComponent,
-  InvoiceManagementInvoiceSalesUpdateComponent];
+  InvoiceManagementInvoiceSalesUpdateComponent,
+  InvoiceManagementInvoiceManagePurchaseViewComponent,
+  InvoiceManagementInvoiceSalesViewComponent];
 
 @NgModule({
   imports: [

+ 0 - 12
src/app/routes/invoice-management/invoice-sales/add/add.component.ts

@@ -263,18 +263,6 @@ export class InvoiceManagementInvoiceSalesAddComponent implements OnInit {
         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("填写明细数据","");

+ 2 - 0
src/app/routes/invoice-management/invoice-sales/invoice-sales.component.html

@@ -49,6 +49,8 @@
           <td>{{ data.currentUser }}</td>
           <td>{{ data.createTime }}</td>
           <td>
+            <a (click)="view(data)" acl [acl-ability]="'invoice-sales:view'">详情</a>
+            <nz-divider nzType="vertical" acl [acl-ability]="'invoice-sales:view'"></nz-divider>
             <a (click)="update(data)" acl [acl-ability]="'invoice-sales:update'">修改</a>
             <nz-divider nzType="vertical" acl [acl-ability]="'invoice-sales:update'"></nz-divider>
             <a (click)="delete(data.id)" acl [acl-ability]="'invoice-sales:delete'">删除</a>

+ 18 - 0
src/app/routes/invoice-management/invoice-sales/invoice-sales.component.ts

@@ -8,6 +8,7 @@ import { I18NService } from '@core';
 import { InvoiceManagePurchase } from 'app/entity/invoice-management/invoice-manage-purchase';
 import { InvoiceManagementInvoiceSalesAddComponent } from './add/add.component';
 import { InvoiceManagementInvoiceSalesUpdateComponent } from './update/update.component';
+import { InvoiceManagementInvoiceSalesViewComponent } from './view/view.component';
 
 @Component({
   selector: 'app-invoice-management-invoice-sales',
@@ -99,6 +100,23 @@ export class InvoiceManagementInvoiceSalesComponent implements OnInit {
     });
   }
 
+  /**
+   * 详情按钮
+   * @param data 详情对象
+   */
+  view(data) {
+    const drawerRef = this.nzDrawerService.create<InvoiceManagementInvoiceSalesViewComponent, { id: string }, string>({
+      nzTitle: this.i18NService.fanyi("table.view"),//详情标题
+      nzContent: InvoiceManagementInvoiceSalesViewComponent,
+      nzWidth: window.innerWidth,
+      nzBodyStyle: { height: 'calc(100% - 55px)', overflow: 'auto', 'padding-bottom': '53px' },
+      nzContentParams: {
+        //模板id
+        id: data.id
+      }
+    });
+  }
+
   delete(id) {
     let invoiceManagePurchase=new InvoiceManagePurchase();
     invoiceManagePurchase.id=id;

+ 1 - 1
src/app/routes/invoice-management/invoice-sales/update/update.component.html

@@ -5,7 +5,7 @@
         <nz-form-item>
           <nz-form-label [nzSm]="6" [nzXs]="24">单据编码</nz-form-label>
           <nz-form-control [nzSm]="14" [nzXs]="24">
-            自动生成
+            {{invoiceManagePurchase.billcode}}
           </nz-form-control>
         </nz-form-item>
       </div>

+ 0 - 12
src/app/routes/invoice-management/invoice-sales/update/update.component.ts

@@ -287,18 +287,6 @@ export class InvoiceManagementInvoiceSalesUpdateComponent implements OnInit {
         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('填写明细数据', '');

+ 80 - 0
src/app/routes/invoice-management/invoice-sales/view/view.component.html

@@ -0,0 +1,80 @@
+<nz-spin [nzSpinning]="isLoadingSave">
+  <form nz-form >
+    <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">
+            {{invoiceManagePurchase.billcode}}
+          </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">
+           {{invoiceManagePurchase.proName}}
+          </nz-form-control>
+        </nz-form-item>
+      </div>
+    </div>
+  </form>
+
+
+<nz-card>
+  <div nz-row [nzGutter]="24">
+    <div nz-col [nzSpan]="24">
+      <nz-table style="padding-top: 5px;" nzSize="small" #basicTable
+        [nzData]="itemDataList" [nzFrontPagination]="false" [nzShowPagination]="false" >
+        <thead>
+          <tr>
+            <th nzAlign="center">序号</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%;">
+              {{data.coArchivesName}}
+            </td>
+            <td style="width: 20%;">
+              {{data.proArchivesMilestone}}
+            </td>
+            <td>
+              <!-- <nz-input-number [(ngModel)]="data.price" [nzMin]="0" [nzStep]="1" [nzFormatter]="formatterDollar" [nzParser]="parserDollar"></nz-input-number> -->
+              {{data.price}}
+            </td>
+            <td>
+              <!-- <nz-input-number [(ngModel)]="data.uncoPrice" [nzMin]="0" [nzStep]="1" [nzFormatter]="formatterDollar" [nzParser]="parserDollar"></nz-input-number> -->
+              {{data.uncoPrice}}
+            </td>
+            <td>
+              {{data.coPrice}}
+            </td>
+          </tr>
+        </tbody>
+      </nz-table>
+    </div>
+  </div>
+</nz-card>
+</nz-spin>
+<!-- 按钮 -->
+<div class="base">
+  <strong>填写人:</strong>{{invoiceManagePurchase.currentUser}} <strong>填写时间:</strong>{{invoiceManagePurchase.createTime}}
+  <!-- 关闭按钮 -->
+  <button nz-button  (click)="close()"
+    [nzLoading]="isLoadingSave"><span>{{'pm.quotation.cancel'|translate}}</span></button>
+</div>

+ 24 - 0
src/app/routes/invoice-management/invoice-sales/view/view.component.spec.ts

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

+ 65 - 0
src/app/routes/invoice-management/invoice-sales/view/view.component.ts

@@ -0,0 +1,65 @@
+import { Component, OnInit } from '@angular/core';
+import { NzModalRef, NzMessageService, NzDrawerRef } from 'ng-zorro-antd';
+import { _HttpClient } from '@delon/theme';
+import { InvoiceManagePurchaseService } from 'app/services/invoice-management/invoice-manage-purchase.service';
+import { InvoiceManagePurchase } from 'app/entity/invoice-management/invoice-manage-purchase';
+
+@Component({
+  selector: 'app-invoice-management-invoice-sales-view',
+  templateUrl: './view.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 InvoiceManagementInvoiceSalesViewComponent implements OnInit {
+  constructor(
+    private invoiceManagePurchaseService:InvoiceManagePurchaseService,
+    private drawerRef:NzDrawerRef
+  ) { }
+
+  ngOnInit(): void {
+    this.isLoadingSave=true;
+    this.queryById().then(()=>{
+      this.isLoadingSave=false;
+    })
+  }
+
+  invoiceManagePurchase: InvoiceManagePurchase = {}; //对象
+  isLoadingSave = false;
+  itemDataList = []; //明细表格数据集合
+  id="";
+
+  /**
+   * 根据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; //子表数据
+          resolve();
+        } else {
+          resolve();
+        }
+      });
+    });
+  }
+
+
+  close() {
+    this.drawerRef.close();
+  }
+}

+ 20 - 0
src/app/routes/project-manage-archives/add/add.component.ts

@@ -119,10 +119,28 @@ export class ProjectManageArchivesAddComponent implements OnInit {
     this.businessAffairs.projectManageArchives = event;
     //实施
     this.implementation.projectManageArchives = event;
+    this.getExecutorsIds(this.implementation,event.impConsultantList);
     //开发
     this.development.projectManageArchives = event;
+    this.getExecutorsIds(this.development,event.deEngineerList);
     //服务
     this.serviceta.projectManageArchives = event;
+    this.getExecutorsIds(this.serviceta,event.seEngineerList);
+  }
+
+  /**
+   * 根据基本信息的人员初始化页签的执行人
+   * @param component 页签组件对象
+   * @param pids 基本信息选择的人员id
+   */
+  getExecutorsIds(component,pids){
+    if(pids){
+      component.listOfMapData.forEach(item => {
+        component.mapOfExpandedData[item.key].forEach(element => {
+          element.executors=JSON.parse(JSON.stringify(pids));
+        });
+      });
+    }
   }
 
   /**
@@ -205,6 +223,8 @@ export class ProjectManageArchivesAddComponent implements OnInit {
     });
   }
 
+  
+
   /**
    * 保存接口
    */

+ 57 - 3
src/app/routes/project-manage-archives/add/essential-information/essential-information.component.ts

@@ -46,6 +46,9 @@ export class ProjectManageArchivesAddEssentialInformationComponent implements On
   validateForm!: FormGroup;
   projectManageArchivesa: ProjectManageArchives = {
     totalPrice: 0,
+    impConsultantList:[],
+    deEngineerList:[],
+    seEngineerList:[]
   }; //项目档案主表对象
   proList: any = []; //项目立项档案数据集合
   cusList = []; //客户档案数据集合
@@ -199,7 +202,7 @@ export class ProjectManageArchivesAddEssentialInformationComponent implements On
           });
         });
       });
-      this.getProjectManageArchivesa();
+      this.getProjectManageArchivesa(type);
     }
   }
 
@@ -271,13 +274,64 @@ export class ProjectManageArchivesAddEssentialInformationComponent implements On
           this.projectManageArchivesa.seEngineer = '';
         }
       }
-      this.getProjectManageArchivesa();
+      this.getProjectManageArchivesa(type);
     }
   }
 
+  // //人员选择信息回写到其他页签的执行人
+  // @Output() personnelIds = new EventEmitter<{}>();
+  // getPersonnelIds(type){
+  //   //参数人员ids,类型(2实施、3开发、4服务)
+  //   let personnelIds=[];
+  //   if(type==='2'){//实施
+  //     personnelIds.push(this.projectManageArchivesa.impManagerId);//实施经理
+  //     Array.prototype.push.apply(personnelIds, this.impConsultantIds);//实施顾问
+  //   }
+  //   if(type==='3'){//开发
+  //     personnelIds.push(this.projectManageArchivesa.deManagerId);//开发经理
+  //     Array.prototype.push.apply(personnelIds, this.deEngineerIds);//开发工程师
+  //   }
+  //   if(type==='4'){//服务
+  //     personnelIds.push(this.projectManageArchivesa.seManagerId);//服务经理
+  //     Array.prototype.push.apply(personnelIds, this.seEngineerIds);//服务工程师
+  //   }
+  //   let per={personnelIds:personnelIds,type:type}
+  //   this.personnelIds.emit(per);
+  // }
+
   //基本信息回写到其他页签
   @Output() projectManageArchivesaEntiy = new EventEmitter<{}>();
-  getProjectManageArchivesa() {
+  getProjectManageArchivesa(type?:any) {
+    //获取人员id传到其他页签
+    if(type){
+      if(type==='2'){//实施
+        this.projectManageArchivesa.impConsultantList=[];
+        if(this.projectManageArchivesa.impManagerId){
+          this.projectManageArchivesa.impConsultantList.push(this.projectManageArchivesa.impManagerId);//实施经理
+        }
+        if(this.impConsultantIds&&this.impConsultantIds.length>0){
+          Array.prototype.push.apply(this.projectManageArchivesa.impConsultantList, this.impConsultantIds);//实施顾问
+        }
+      }
+      if(type==='3'){//开发
+        this.projectManageArchivesa.deEngineerList=[]
+        if(this.projectManageArchivesa.deManagerId){
+          this.projectManageArchivesa.deEngineerList.push(this.projectManageArchivesa.deManagerId);//开发经理
+        }
+        if(this.deEngineerIds&&this.deEngineerIds.length>0){
+          Array.prototype.push.apply(this.projectManageArchivesa.deEngineerList, this.deEngineerIds);//开发工程师
+        }
+      }
+      if(type==='4'){//服务
+        this.projectManageArchivesa.seEngineerList=[];
+        if(this.projectManageArchivesa.seManagerId){
+          this.projectManageArchivesa.seEngineerList.push(this.projectManageArchivesa.seManagerId);//服务经理
+        }
+        if(this.seEngineerIds&&this.seEngineerIds.length>0){
+          Array.prototype.push.apply(this.projectManageArchivesa.seEngineerList, this.seEngineerIds);//服务工程师
+        }
+      }                                                     
+    }
     this.projectManageArchivesaEntiy.emit(this.projectManageArchivesa);
   }
 

+ 2 - 0
src/app/routes/project-work/development-log/development-log.component.html

@@ -52,6 +52,8 @@
             <td>{{ data.currentUser }}</td>
             <td>{{ data.createTime }}</td>
             <td>
+              <a (click)="view(data)" acl [acl-ability]="'development-log:view'">详情</a>
+              <nz-divider nzType="vertical" acl [acl-ability]="'development-log:view'"></nz-divider>
               <a (click)="update(data)" acl [acl-ability]="'development-log:update'">修改</a>
               <nz-divider nzType="vertical" acl [acl-ability]="'development-log:update'"></nz-divider>
               <a (click)="delete(data.id)" acl [acl-ability]="'development-log:delete'">删除</a>

+ 18 - 0
src/app/routes/project-work/development-log/development-log.component.ts

@@ -8,6 +8,7 @@ import { I18NService } from '@core';
 import { ProWorkLogic } from 'app/entity/project-work/pro-work-logic';
 import { ProjectWorkDevelopmentLogAddComponent } from './add/add.component';
 import { ProjectWorkDevelopmentLogUpdateComponent } from './update/update.component';
+import { ProjectWorkDevelopmentLogViewComponent } from './view/view.component';
 
 @Component({
   selector: 'app-project-work-development-log',
@@ -106,6 +107,23 @@ export class ProjectWorkDevelopmentLogComponent implements OnInit {
     });
   }
 
+  /**
+   * 修改
+   * @param data 修改对象
+   */
+  view(data){
+    const drawerRef = this.nzDrawerService.create<ProjectWorkDevelopmentLogViewComponent, { id: string }, string>({
+      nzTitle: this.i18NService.fanyi("table.view"),//详情标题
+      nzContent: ProjectWorkDevelopmentLogViewComponent,
+      nzWidth: window.innerWidth,
+      nzBodyStyle: { height: 'calc(100% - 55px)', overflow: 'auto', 'padding-bottom': '53px' },
+      nzContentParams: {
+        //模板id
+        id: data.id
+      }
+    });
+  }
+
   /**
    * 删除
    * @param id 

+ 92 - 0
src/app/routes/project-work/development-log/view/view.component.html

@@ -0,0 +1,92 @@
+<nz-spin [nzSpinning]="isLoadingSave">
+  <form nz-form>
+    <div nz-row [nzGutter]="24">
+      <div nz-col [nzSpan]="8">
+        <nz-form-item>
+          <nz-form-label [nzSm]="6" [nzXs]="24"  nzFor="code">单据编码</nz-form-label>
+          <nz-form-control [nzSm]="14" [nzXs]="24">
+            {{proWorkLogic.billcode}}
+          </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">
+            {{proWorkLogic.proName}}
+          </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">
+            {{proWorkLogic.reporter}}
+          </nz-form-control>
+        </nz-form-item>
+      </div>
+    </div>
+    <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-range-picker [nzShowTime]="true" formControlName="date" id="date" [(ngModel)]="date"></nz-range-picker>
+          </nz-form-control> -->
+          <nz-form-control [nzSm]="14" [nzXs]="24">
+            {{proWorkLogic.startDate}}
+          </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">
+            <nz-range-picker [nzShowTime]="true" formControlName="date" id="date" [(ngModel)]="date"></nz-range-picker>
+          </nz-form-control> -->
+          <nz-form-control [nzSm]="14" [nzXs]="24">
+            {{proWorkLogic.endDate}}
+          </nz-form-control>
+        </nz-form-item>
+      </div>
+    </div>
+  </form>
+  <nz-card>
+    <div nz-row [nzGutter]="24">
+      <div nz-col [nzSpan]="24">
+        <nz-table style="padding-top: 5px;" nzSize="small" #basicTable [nzData]="itemList"
+          [nzFrontPagination]="false" [nzShowPagination]="false">
+          <thead>
+            <tr>
+              <th nzAlign="center" style="width: 5%;">序号</th>
+              <th style="width: 30%;">里程碑</th>
+              <th style="width: 50%;">工作内容</th>
+              <th style="width: 5%;">工作用时</th>
+            </tr>
+          </thead>
+          <tbody>
+            <tr *ngFor="let data of basicTable.data;let i =index">
+              <td nzAlign="center">{{i+1}}</td>
+              <td>
+                {{data.proArchivesMilestone}}
+              </td>
+              <td>
+                {{data.content}}
+              </td>
+              <td style="width: 10%;">
+                {{data.duration}}
+              </td>
+            </tr>
+          </tbody>
+        </nz-table>
+      </div>
+    </div>
+  </nz-card>
+</nz-spin>
+<!-- 按钮 -->
+<div class="base">
+  <strong>填写人:</strong>{{proWorkLogic.currentUser}} <strong>填写时间:</strong>{{proWorkLogic.createTime}}
+  <!-- 关闭按钮 -->
+  <button nz-button (click)="close()"
+    [nzLoading]="isLoadingSave"><span>{{'pm.quotation.cancel'|translate}}</span></button>
+</div>

+ 24 - 0
src/app/routes/project-work/development-log/view/view.component.spec.ts

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

+ 64 - 0
src/app/routes/project-work/development-log/view/view.component.ts

@@ -0,0 +1,64 @@
+import { Component, OnInit } from '@angular/core';
+import { NzModalRef, NzMessageService, NzDrawerRef } from 'ng-zorro-antd';
+import { _HttpClient } from '@delon/theme';
+import { ProWorkLogicService } from 'app/services/project-work/pro-work-logic.service';
+import { ProWorkLogic } from 'app/entity/project-work/pro-work-logic';
+
+@Component({
+  selector: 'app-project-work-development-log-view',
+  templateUrl: './view.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 ProjectWorkDevelopmentLogViewComponent implements OnInit {
+  
+
+  constructor(
+    private proWorkLogicService:ProWorkLogicService,
+    private drawerRef:NzDrawerRef
+  ) {}
+
+  ngOnInit(): void {
+    this.isLoadingSave=true;
+    this.getById().then(()=>{
+      this.isLoadingSave=false;
+    });
+  }
+
+  isLoadingSave=false;
+  proWorkLogic: ProWorkLogic = {}; //对象
+  itemList = []; //明细集合
+  id="";
+
+  /**
+   * 根据id查询
+   */
+  getById(){
+    return new Promise((resolve)=>{
+      this.proWorkLogicService.getListById(this.id).then((response)=>{
+        if(response.result){
+          this.proWorkLogic=response.result;//主表对象
+          this.itemList=response.result.detailList;//明细数组
+        }
+        resolve();
+      })
+    })
+  }
+
+  close() {
+    this.drawerRef.close();
+  }
+}

+ 2 - 0
src/app/routes/project-work/development-milestone-confirm/development-milestone-confirm.component.html

@@ -57,6 +57,8 @@
             </td>
             <td>{{ data.confirmTime }}</td>
             <td>
+              <a (click)="view(data)" acl [acl-ability]="'development-milestone-confirm:view'">详情</a>
+              <nz-divider nzType="vertical" acl [acl-ability]="'development-milestone-confirm:view'"></nz-divider>
               <a (click)="update(data)" acl [acl-ability]="'development-milestone-confirm:update'">修改</a>
               <nz-divider nzType="vertical" acl [acl-ability]="'development-milestone-confirm:update'"></nz-divider>
               <a (click)="delete(data.id)" acl [acl-ability]="'development-milestone-confirm:delete'">删除</a>

+ 18 - 0
src/app/routes/project-work/development-milestone-confirm/development-milestone-confirm.component.ts

@@ -8,6 +8,7 @@ import { I18NService } from '@core';
 import { ProWorkMilestone } from 'app/entity/project-work/pro-work-milestone';
 import { ProjectWorkDevelopmentMilestoneConfirmAddComponent } from './add/add.component';
 import { ProjectWorkDevelopmentMilestoneConfirmUpdateComponent } from './update/update.component';
+import { ProjectWorkDevelopmentMilestoneConfirmViewComponent } from './view/view.component';
 
 @Component({
   selector: 'app-project-work-development-milestone-confirm',
@@ -104,6 +105,23 @@ export class ProjectWorkDevelopmentMilestoneConfirmComponent implements OnInit {
     });
   }
 
+  /**
+   * 详情按钮
+   * @param data 详情对象
+   */
+  view(data){
+    const drawerRef = this.nzDrawerService.create<ProjectWorkDevelopmentMilestoneConfirmViewComponent, { id: string }, string>({
+      nzTitle: this.i18NService.fanyi("table.view"),//详情标题
+      nzContent: ProjectWorkDevelopmentMilestoneConfirmViewComponent,
+      nzWidth: window.innerWidth,
+      nzBodyStyle: { height: 'calc(100% - 55px)', overflow: 'auto', 'padding-bottom': '53px' },
+      nzContentParams: {
+        //id
+        id: data.id
+      }
+    });
+  }
+
   /**
    * 删除按钮
    * @param id 删除id

+ 94 - 0
src/app/routes/project-work/development-milestone-confirm/view/view.component.html

@@ -0,0 +1,94 @@
+<!-- 基本信息 -->
+<form nz-form>
+
+
+
+  <div nz-row [nzGutter]="24">
+    <div nz-col [nzSpan]="6">
+      <nz-form-item>
+        <nz-form-label [nzSpan]="'vertical' ? 24 : null" >单据编码</nz-form-label>
+        <nz-form-control [nzSm]="24" [nzXs]="24">
+          {{proWorkMilestone.billcode}}
+        </nz-form-control>
+      </nz-form-item>
+    </div>
+    <div nz-col [nzSpan]="6">
+      <nz-form-item>
+        <nz-form-label [nzSpan]="'vertical' ? 24 : null">项目编码</nz-form-label>
+        <nz-form-control [nzSm]="24" [nzXs]="24">
+          {{proWorkMilestone.proCode}}
+        </nz-form-control>
+      </nz-form-item>
+    </div>
+    <div nz-col [nzSpan]="6">
+      <nz-form-item>
+        <nz-form-label [nzSpan]="'vertical' ? 24 : null" >项目名称</nz-form-label>
+        <nz-form-control [nzSm]="24" [nzXs]="24">
+          {{proWorkMilestone.proName}}
+        </nz-form-control>
+      </nz-form-item>
+    </div>
+    <div nz-col [nzSpan]="6">
+      <nz-form-item>
+        <nz-form-label [nzSpan]="'vertical' ? 24 : null">客户编码</nz-form-label>
+        <nz-form-control [nzSm]="24" [nzXs]="24">
+          {{proWorkMilestone.cusCode}}
+        </nz-form-control>
+      </nz-form-item>
+    </div>
+
+  </div>
+  <div nz-row [nzGutter]="24">
+    <div nz-col [nzSpan]="6">
+      <nz-form-item>
+        <nz-form-label [nzSpan]="'vertical' ? 24 : null">客户名称</nz-form-label>
+        <nz-form-control [nzSm]="24" [nzXs]="24">
+          {{proWorkMilestone.cusName}}
+        </nz-form-control>
+      </nz-form-item>
+    </div>
+    <div nz-col [nzSpan]="6">
+      <nz-form-item>
+        <nz-form-label [nzSpan]="'vertical' ? 24 : null" >项目里程碑</nz-form-label>
+        <nz-form-control [nzSm]="24" [nzXs]="24">
+          {{proWorkMilestone.mileName}}
+        </nz-form-control>
+      </nz-form-item>
+    </div>
+    <div nz-col [nzSpan]="6">
+      <nz-form-item>
+        <nz-form-label [nzSpan]="'vertical' ? 24 : null" >里程碑确认</nz-form-label>
+        <nz-form-control [nzSm]="24" [nzXs]="24">
+            <nz-tag [nzColor]="'green'" *ngIf="proWorkMilestone.mileConfirm===1">是</nz-tag>
+            <nz-tag [nzColor]="'green'" *ngIf="proWorkMilestone.mileConfirm===0">否</nz-tag>
+        </nz-form-control>
+      </nz-form-item>
+    </div>
+    <div nz-col [nzSpan]="6">
+      <nz-form-item>
+        <nz-form-label [nzSpan]="'vertical' ? 24 : null" >确认时间</nz-form-label>
+        <nz-form-control [nzSm]="24" [nzXs]="24">
+          {{proWorkMilestone.confirmTime}}
+        </nz-form-control>
+      </nz-form-item>
+    </div>
+  </div>
+</form>
+<!-- 项目成果 -->
+<nz-card nzTitle="项目成果">
+  <div nz-row [nzGutter]="24">
+    <div nz-col [nzSpan]="6">
+      <nz-upload nzAction="sys/common/uploadFile" [nzFileList]="fileList" nzMultiple=true
+        >
+        <!-- <button nz-button><i nz-icon nzType="upload"></i>上传</button> -->
+      </nz-upload>
+    </div>
+  </div>
+</nz-card>
+<!-- 按钮 -->
+<div class="base">
+  <strong>填写人:</strong>{{proWorkMilestone.currentUser}} <strong>填写时间:</strong>{{proWorkMilestone.createTime}}
+  <!-- 关闭按钮 -->
+  <button nz-button (click)="close()"
+    [nzLoading]="isLoadingSave"><span>{{'pm.quotation.cancel'|translate}}</span></button>
+</div>

+ 24 - 0
src/app/routes/project-work/development-milestone-confirm/view/view.component.spec.ts

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

+ 66 - 0
src/app/routes/project-work/development-milestone-confirm/view/view.component.ts

@@ -0,0 +1,66 @@
+import { Component, OnInit } from '@angular/core';
+import { NzModalRef, NzMessageService, NzDrawerRef } from 'ng-zorro-antd';
+import { _HttpClient } from '@delon/theme';
+import { ProWorkMilestoneService } from 'app/services/project-work/pro-work-milestone.service';
+import { ProWorkMilestone } from 'app/entity/project-work/pro-work-milestone';
+import { getFileListById } from '@shared/utils/file-show';
+
+@Component({
+  selector: 'app-project-work-development-milestone-confirm-view',
+  templateUrl: './view.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 ProjectWorkDevelopmentMilestoneConfirmViewComponent implements OnInit {
+  
+
+  constructor(
+    private proWorkMilestoneService:ProWorkMilestoneService,
+    private drawerRef:NzDrawerRef
+  ) { }
+
+  ngOnInit(): void {
+    this.getById();
+  }
+  isLoadingSave=false;
+  proWorkMilestone: ProWorkMilestone = {
+  }; //对象
+  id = '';
+  fileList = [];
+
+  /**
+   * 根据id查询数据
+   */
+  getById() {
+    this.isLoadingSave=true;
+    this.proWorkMilestoneService.queryById(this.id).then(response => {
+      if (response.success) {
+        //表数据
+        this.proWorkMilestone = response.result;
+        //文件信息
+        this.fileList=response.result.fileList;
+        //获取文件格式
+        getFileListById(this.fileList);
+      }
+      this.isLoadingSave=false;
+    });
+  }
+
+  close() {
+    this.drawerRef.close();
+  }
+
+}

+ 2 - 0
src/app/routes/project-work/implementation-log/implementation-log.component.html

@@ -52,6 +52,8 @@
             <td>{{ data.currentUser }}</td>
             <td>{{ data.createTime }}</td>
             <td>
+              <a (click)="view(data)" acl [acl-ability]="'implementation-log:view'">详情</a>
+              <nz-divider nzType="vertical" acl [acl-ability]="'implementation-log:view'"></nz-divider>
               <a (click)="update(data)" acl [acl-ability]="'implementation-log:update'">修改</a>
               <nz-divider nzType="vertical" acl [acl-ability]="'implementation-log:update'"></nz-divider>
               <a (click)="delete(data.id)" acl [acl-ability]="'implementation-log:delete'">删除</a>

+ 18 - 0
src/app/routes/project-work/implementation-log/implementation-log.component.ts

@@ -8,6 +8,7 @@ import { ProjectWorkImplementationLogAddComponent } from './add/add.component';
 import { NzDrawerService, NzNotificationService } from 'ng-zorro-antd';
 import { I18NService } from '@core';
 import { ProjectWorkImplementationLogUpdateComponent } from './update/update.component';
+import { ProjectWorkImplementationLogViewComponent } from './view/view.component';
 
 @Component({
   selector: 'app-project-work-implementation-log',
@@ -106,6 +107,23 @@ export class ProjectWorkImplementationLogComponent implements OnInit {
     });
   }
 
+   /**
+   * 修改
+   * @param data 修改对象
+   */
+  view(data){
+    const drawerRef = this.nzDrawerService.create<ProjectWorkImplementationLogViewComponent, { id: string }, string>({
+      nzTitle: this.i18NService.fanyi("table.view"),//详情标题
+      nzContent: ProjectWorkImplementationLogViewComponent,
+      nzWidth: window.innerWidth,
+      nzBodyStyle: { height: 'calc(100% - 55px)', overflow: 'auto', 'padding-bottom': '53px' },
+      nzContentParams: {
+        //模板id
+        id: data.id
+      }
+    });
+  }
+
   /**
    * 删除
    * @param id 

+ 92 - 0
src/app/routes/project-work/implementation-log/view/view.component.html

@@ -0,0 +1,92 @@
+<nz-spin [nzSpinning]="isLoadingSave">
+  <form nz-form>
+    <div nz-row [nzGutter]="24">
+      <div nz-col [nzSpan]="8">
+        <nz-form-item>
+          <nz-form-label [nzSm]="6" [nzXs]="24"  nzFor="code">单据编码</nz-form-label>
+          <nz-form-control [nzSm]="14" [nzXs]="24">
+            {{proWorkLogic.billcode}}
+          </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">
+            {{proWorkLogic.proName}}
+          </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">
+            {{proWorkLogic.reporter}}
+          </nz-form-control>
+        </nz-form-item>
+      </div>
+    </div>
+    <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-range-picker [nzShowTime]="true" formControlName="date" id="date" [(ngModel)]="date"></nz-range-picker>
+          </nz-form-control> -->
+          <nz-form-control [nzSm]="14" [nzXs]="24">
+            {{proWorkLogic.startDate}}
+          </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">
+            <nz-range-picker [nzShowTime]="true" formControlName="date" id="date" [(ngModel)]="date"></nz-range-picker>
+          </nz-form-control> -->
+          <nz-form-control [nzSm]="14" [nzXs]="24">
+            {{proWorkLogic.endDate}}
+          </nz-form-control>
+        </nz-form-item>
+      </div>
+    </div>
+  </form>
+  <nz-card>
+    <div nz-row [nzGutter]="24">
+      <div nz-col [nzSpan]="24">
+        <nz-table style="padding-top: 5px;" nzSize="small" #basicTable [nzData]="itemList"
+          [nzFrontPagination]="false" [nzShowPagination]="false">
+          <thead>
+            <tr>
+              <th nzAlign="center" style="width: 5%;">序号</th>
+              <th style="width: 30%;">里程碑</th>
+              <th style="width: 50%;">工作内容</th>
+              <th style="width: 5%;">工作用时</th>
+            </tr>
+          </thead>
+          <tbody>
+            <tr *ngFor="let data of basicTable.data;let i =index">
+              <td nzAlign="center">{{i+1}}</td>
+              <td>
+                {{data.proArchivesMilestone}}
+              </td>
+              <td>
+                {{data.content}}
+              </td>
+              <td style="width: 10%;">
+                {{data.duration}}
+              </td>
+            </tr>
+          </tbody>
+        </nz-table>
+      </div>
+    </div>
+  </nz-card>
+</nz-spin>
+<!-- 按钮 -->
+<div class="base">
+  <strong>填写人:</strong>{{proWorkLogic.currentUser}} <strong>填写时间:</strong>{{proWorkLogic.createTime}}
+  <!-- 关闭按钮 -->
+  <button nz-button (click)="close()"
+    [nzLoading]="isLoadingSave"><span>{{'pm.quotation.cancel'|translate}}</span></button>
+</div>

+ 24 - 0
src/app/routes/project-work/implementation-log/view/view.component.spec.ts

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

+ 64 - 0
src/app/routes/project-work/implementation-log/view/view.component.ts

@@ -0,0 +1,64 @@
+import { Component, OnInit } from '@angular/core';
+import { NzModalRef, NzMessageService, NzDrawerRef } from 'ng-zorro-antd';
+import { _HttpClient } from '@delon/theme';
+import { ProWorkLogic } from 'app/entity/project-work/pro-work-logic';
+import { ProWorkLogicService } from 'app/services/project-work/pro-work-logic.service';
+
+@Component({
+  selector: 'app-project-work-implementation-log-view',
+  templateUrl: './view.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 ProjectWorkImplementationLogViewComponent implements OnInit {
+  
+
+  constructor(
+    private proWorkLogicService:ProWorkLogicService,
+    private drawerRef:NzDrawerRef
+  ) {}
+
+  ngOnInit(): void {
+    this.isLoadingSave=true;
+    this.getById().then(()=>{
+      this.isLoadingSave=false;
+    });
+  }
+
+  isLoadingSave=false;
+  proWorkLogic: ProWorkLogic = {}; //对象
+  itemList = []; //明细集合
+  id="";
+
+  /**
+   * 根据id查询
+   */
+  getById(){
+    return new Promise((resolve)=>{
+      this.proWorkLogicService.getListById(this.id).then((response)=>{
+        if(response.result){
+          this.proWorkLogic=response.result;//主表对象
+          this.itemList=response.result.detailList;//明细数组
+        }
+        resolve();
+      })
+    })
+  }
+
+  close() {
+    this.drawerRef.close();
+  }
+}

+ 2 - 0
src/app/routes/project-work/implementation-milestone-confirm/implementation-milestone-confirm.component.html

@@ -57,6 +57,8 @@
             </td>
             <td>{{ data.confirmTime }}</td>
             <td>
+              <a (click)="view(data)" acl [acl-ability]="'implementation-milestone-confirm:view'">详情</a>
+              <nz-divider nzType="vertical" acl [acl-ability]="'implementation-milestone-confirm:view'"></nz-divider>
               <a (click)="update(data)" acl [acl-ability]="'implementation-milestone-confirm:update'">修改</a>
               <nz-divider nzType="vertical" acl [acl-ability]="'implementation-milestone-confirm:update'"></nz-divider>
               <a (click)="delete(data.id)" acl [acl-ability]="'implementation-milestone-confirm:delete'">删除</a>

+ 17 - 0
src/app/routes/project-work/implementation-milestone-confirm/implementation-milestone-confirm.component.ts

@@ -8,6 +8,7 @@ import { NzDrawerService, NzNotificationService } from 'ng-zorro-antd';
 import { ProjectWorkImplementationMilestoneConfirmAddComponent } from './add/add.component';
 import { I18NService } from '@core';
 import { ProjectWorkImplementationMilestoneConfirmUpdateComponent } from './update/update.component';
+import { ProjectWorkImplementationMilestoneConfirmViewComponent } from './view/view.component';
 
 @Component({
   selector: 'app-project-work-implementation-milestone-confirm',
@@ -104,6 +105,22 @@ export class ProjectWorkImplementationMilestoneConfirmComponent implements OnIni
     });
   }
 
+  /**
+   * 详情按钮
+   */
+  view(data){
+    const drawerRef = this.nzDrawerService.create<ProjectWorkImplementationMilestoneConfirmViewComponent, { id: string }, string>({
+      nzTitle: this.i18NService.fanyi("table.view"),//详情标题
+      nzContent: ProjectWorkImplementationMilestoneConfirmViewComponent,
+      nzWidth: window.innerWidth,
+      nzBodyStyle: { height: 'calc(100% - 55px)', overflow: 'auto', 'padding-bottom': '53px' },
+      nzContentParams: {
+        //id
+        id: data.id
+      }
+    });
+  }
+
   /**
    * 删除按钮
    * @param id 删除id

+ 94 - 0
src/app/routes/project-work/implementation-milestone-confirm/view/view.component.html

@@ -0,0 +1,94 @@
+<!-- 基本信息 -->
+<form nz-form>
+
+
+
+  <div nz-row [nzGutter]="24">
+    <div nz-col [nzSpan]="6">
+      <nz-form-item>
+        <nz-form-label [nzSpan]="'vertical' ? 24 : null" >单据编码</nz-form-label>
+        <nz-form-control [nzSm]="24" [nzXs]="24">
+          {{proWorkMilestone.billcode}}
+        </nz-form-control>
+      </nz-form-item>
+    </div>
+    <div nz-col [nzSpan]="6">
+      <nz-form-item>
+        <nz-form-label [nzSpan]="'vertical' ? 24 : null">项目编码</nz-form-label>
+        <nz-form-control [nzSm]="24" [nzXs]="24">
+          {{proWorkMilestone.proCode}}
+        </nz-form-control>
+      </nz-form-item>
+    </div>
+    <div nz-col [nzSpan]="6">
+      <nz-form-item>
+        <nz-form-label [nzSpan]="'vertical' ? 24 : null" >项目名称</nz-form-label>
+        <nz-form-control [nzSm]="24" [nzXs]="24">
+          {{proWorkMilestone.proName}}
+        </nz-form-control>
+      </nz-form-item>
+    </div>
+    <div nz-col [nzSpan]="6">
+      <nz-form-item>
+        <nz-form-label [nzSpan]="'vertical' ? 24 : null">客户编码</nz-form-label>
+        <nz-form-control [nzSm]="24" [nzXs]="24">
+          {{proWorkMilestone.cusCode}}
+        </nz-form-control>
+      </nz-form-item>
+    </div>
+
+  </div>
+  <div nz-row [nzGutter]="24">
+    <div nz-col [nzSpan]="6">
+      <nz-form-item>
+        <nz-form-label [nzSpan]="'vertical' ? 24 : null">客户名称</nz-form-label>
+        <nz-form-control [nzSm]="24" [nzXs]="24">
+          {{proWorkMilestone.cusName}}
+        </nz-form-control>
+      </nz-form-item>
+    </div>
+    <div nz-col [nzSpan]="6">
+      <nz-form-item>
+        <nz-form-label [nzSpan]="'vertical' ? 24 : null" >项目里程碑</nz-form-label>
+        <nz-form-control [nzSm]="24" [nzXs]="24">
+          {{proWorkMilestone.mileName}}
+        </nz-form-control>
+      </nz-form-item>
+    </div>
+    <div nz-col [nzSpan]="6">
+      <nz-form-item>
+        <nz-form-label [nzSpan]="'vertical' ? 24 : null" >里程碑确认</nz-form-label>
+        <nz-form-control [nzSm]="24" [nzXs]="24">
+            <nz-tag [nzColor]="'green'" *ngIf="proWorkMilestone.mileConfirm===1">是</nz-tag>
+            <nz-tag [nzColor]="'green'" *ngIf="proWorkMilestone.mileConfirm===0">否</nz-tag>
+        </nz-form-control>
+      </nz-form-item>
+    </div>
+    <div nz-col [nzSpan]="6">
+      <nz-form-item>
+        <nz-form-label [nzSpan]="'vertical' ? 24 : null" >确认时间</nz-form-label>
+        <nz-form-control [nzSm]="24" [nzXs]="24">
+          {{proWorkMilestone.confirmTime}}
+        </nz-form-control>
+      </nz-form-item>
+    </div>
+  </div>
+</form>
+<!-- 项目成果 -->
+<nz-card nzTitle="项目成果">
+  <div nz-row [nzGutter]="24">
+    <div nz-col [nzSpan]="6">
+      <nz-upload nzAction="sys/common/uploadFile" [nzFileList]="fileList" nzMultiple=true
+        >
+        <!-- <button nz-button><i nz-icon nzType="upload"></i>上传</button> -->
+      </nz-upload>
+    </div>
+  </div>
+</nz-card>
+<!-- 按钮 -->
+<div class="base">
+  <strong>填写人:</strong>{{proWorkMilestone.currentUser}} <strong>填写时间:</strong>{{proWorkMilestone.createTime}}
+  <!-- 关闭按钮 -->
+  <button nz-button (click)="close()"
+    [nzLoading]="isLoadingSave"><span>{{'pm.quotation.cancel'|translate}}</span></button>
+</div>

+ 24 - 0
src/app/routes/project-work/implementation-milestone-confirm/view/view.component.spec.ts

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

+ 68 - 0
src/app/routes/project-work/implementation-milestone-confirm/view/view.component.ts

@@ -0,0 +1,68 @@
+import { Component, OnInit } from '@angular/core';
+import { NzModalRef, NzMessageService, NzDrawerRef } from 'ng-zorro-antd';
+import { _HttpClient } from '@delon/theme';
+import { ProWorkMilestoneService } from 'app/services/project-work/pro-work-milestone.service';
+import { ProWorkMilestone } from 'app/entity/project-work/pro-work-milestone';
+import { environment } from '@env/environment';
+import { getFileListById } from '@shared/utils/file-show';
+
+@Component({
+  selector: 'app-project-work-implementation-milestone-confirm-view',
+  templateUrl: './view.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 ProjectWorkImplementationMilestoneConfirmViewComponent implements OnInit {
+  
+
+  constructor(
+    private proWorkMilestoneService:ProWorkMilestoneService,
+    private drawerRef:NzDrawerRef
+  ) { }
+
+  ngOnInit(): void {
+    this.getById();
+  }
+  isLoadingSave=false;
+  proWorkMilestone: ProWorkMilestone = {
+  }; //对象
+  id = '';
+  fileList = [];
+
+  /**
+   * 根据id查询数据
+   */
+  getById() {
+    this.isLoadingSave=true;
+    this.proWorkMilestoneService.queryById(this.id).then(response => {
+      if (response.success) {
+        //表数据
+        this.proWorkMilestone = response.result;
+        //文件信息
+        this.fileList=response.result.fileList;
+        //获取文件格式
+        getFileListById(this.fileList);
+      }
+      this.isLoadingSave=false;
+    });
+  }
+
+  close() {
+    this.drawerRef.close();
+  }
+
+ 
+}

+ 13 - 1
src/app/routes/project-work/project-work.module.ts

@@ -19,6 +19,12 @@ import { ProjectWorkDevelopmentMilestoneConfirmUpdateComponent } from './develop
 import { ProjectWorkServiceMilestoneConfirmComponent } from './service-milestone-confirm/service-milestone-confirm.component';
 import { ProjectWorkServiceMilestoneConfirmAddComponent } from './service-milestone-confirm/add/add.component';
 import { ProjectWorkServiceMilestoneConfirmUpdateComponent } from './service-milestone-confirm/update/update.component';
+import { ProjectWorkImplementationLogViewComponent } from './implementation-log/view/view.component';
+import { ProjectWorkDevelopmentLogViewComponent } from './development-log/view/view.component';
+import { ProjectWorkServiceLogViewComponent } from './service-log/view/view.component';
+import { ProjectWorkImplementationMilestoneConfirmViewComponent } from './implementation-milestone-confirm/view/view.component';
+import { ProjectWorkDevelopmentMilestoneConfirmViewComponent } from './development-milestone-confirm/view/view.component';
+import { ProjectWorkServiceMilestoneConfirmViewComponent } from './service-milestone-confirm/view/view.component';
 
 const COMPONENTS = [
   ProjectWorkImplementationLogComponent,
@@ -39,7 +45,13 @@ const COMPONENTS_NOROUNT = [
   ProjectWorkDevelopmentMilestoneConfirmAddComponent,
   ProjectWorkDevelopmentMilestoneConfirmUpdateComponent,
   ProjectWorkServiceMilestoneConfirmAddComponent,
-  ProjectWorkServiceMilestoneConfirmUpdateComponent];
+  ProjectWorkServiceMilestoneConfirmUpdateComponent,
+  ProjectWorkImplementationLogViewComponent,
+  ProjectWorkDevelopmentLogViewComponent,
+  ProjectWorkServiceLogViewComponent,
+  ProjectWorkImplementationMilestoneConfirmViewComponent,
+  ProjectWorkDevelopmentMilestoneConfirmViewComponent,
+  ProjectWorkServiceMilestoneConfirmViewComponent];
 
 @NgModule({
   imports: [

+ 2 - 0
src/app/routes/project-work/service-log/service-log.component.html

@@ -52,6 +52,8 @@
             <td>{{ data.currentUser }}</td>
             <td>{{ data.createTime }}</td>
             <td>
+              <a (click)="view(data)" acl [acl-ability]="'service-log:view'">详情</a>
+              <nz-divider nzType="vertical" acl [acl-ability]="'service-log:view'"></nz-divider>
               <a (click)="update(data)" acl [acl-ability]="'service-log:update'">修改</a>
               <nz-divider nzType="vertical" acl [acl-ability]="'service-log:update'"></nz-divider>
               <a (click)="delete(data.id)" acl [acl-ability]="'service-log:delete'">删除</a>

+ 19 - 0
src/app/routes/project-work/service-log/service-log.component.ts

@@ -8,6 +8,7 @@ import { I18NService } from '@core';
 import { ProWorkLogic } from 'app/entity/project-work/pro-work-logic';
 import { ProjectWorkServiceLogAddComponent } from './add/add.component';
 import { ProjectWorkServiceLogUpdateComponent } from './update/update.component';
+import { ProjectWorkServiceLogViewComponent } from './view/view.component';
 
 @Component({
   selector: 'app-project-work-service-log',
@@ -106,6 +107,24 @@ export class ProjectWorkServiceLogComponent implements OnInit {
     });
   }
 
+  /**
+   * 详情
+   * @param data 详情对象
+   */
+  view(data){
+    const drawerRef = this.nzDrawerService.create<ProjectWorkServiceLogViewComponent, { id: string }, string>({
+      nzTitle: this.i18NService.fanyi("table.view"),//详情标题
+      nzContent: ProjectWorkServiceLogViewComponent,
+      nzWidth: window.innerWidth,
+      nzBodyStyle: { height: 'calc(100% - 55px)', overflow: 'auto', 'padding-bottom': '53px' },
+      nzContentParams: {
+        //模板id
+        id: data.id
+      }
+    });
+  }
+
+
   /**
    * 删除
    * @param id 

+ 92 - 0
src/app/routes/project-work/service-log/view/view.component.html

@@ -0,0 +1,92 @@
+<nz-spin [nzSpinning]="isLoadingSave">
+  <form nz-form>
+    <div nz-row [nzGutter]="24">
+      <div nz-col [nzSpan]="8">
+        <nz-form-item>
+          <nz-form-label [nzSm]="6" [nzXs]="24"  nzFor="code">单据编码</nz-form-label>
+          <nz-form-control [nzSm]="14" [nzXs]="24">
+            {{proWorkLogic.billcode}}
+          </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">
+            {{proWorkLogic.proName}}
+          </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">
+            {{proWorkLogic.reporter}}
+          </nz-form-control>
+        </nz-form-item>
+      </div>
+    </div>
+    <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-range-picker [nzShowTime]="true" formControlName="date" id="date" [(ngModel)]="date"></nz-range-picker>
+          </nz-form-control> -->
+          <nz-form-control [nzSm]="14" [nzXs]="24">
+            {{proWorkLogic.startDate}}
+          </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">
+            <nz-range-picker [nzShowTime]="true" formControlName="date" id="date" [(ngModel)]="date"></nz-range-picker>
+          </nz-form-control> -->
+          <nz-form-control [nzSm]="14" [nzXs]="24">
+            {{proWorkLogic.endDate}}
+          </nz-form-control>
+        </nz-form-item>
+      </div>
+    </div>
+  </form>
+  <nz-card>
+    <div nz-row [nzGutter]="24">
+      <div nz-col [nzSpan]="24">
+        <nz-table style="padding-top: 5px;" nzSize="small" #basicTable [nzData]="itemList"
+          [nzFrontPagination]="false" [nzShowPagination]="false">
+          <thead>
+            <tr>
+              <th nzAlign="center" style="width: 5%;">序号</th>
+              <th style="width: 30%;">里程碑</th>
+              <th style="width: 50%;">工作内容</th>
+              <th style="width: 5%;">工作用时</th>
+            </tr>
+          </thead>
+          <tbody>
+            <tr *ngFor="let data of basicTable.data;let i =index">
+              <td nzAlign="center">{{i+1}}</td>
+              <td>
+                {{data.proArchivesMilestone}}
+              </td>
+              <td>
+                {{data.content}}
+              </td>
+              <td style="width: 10%;">
+                {{data.duration}}
+              </td>
+            </tr>
+          </tbody>
+        </nz-table>
+      </div>
+    </div>
+  </nz-card>
+</nz-spin>
+<!-- 按钮 -->
+<div class="base">
+  <strong>填写人:</strong>{{proWorkLogic.currentUser}} <strong>填写时间:</strong>{{proWorkLogic.createTime}}
+  <!-- 关闭按钮 -->
+  <button nz-button (click)="close()"
+    [nzLoading]="isLoadingSave"><span>{{'pm.quotation.cancel'|translate}}</span></button>
+</div>

+ 24 - 0
src/app/routes/project-work/service-log/view/view.component.spec.ts

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

+ 64 - 0
src/app/routes/project-work/service-log/view/view.component.ts

@@ -0,0 +1,64 @@
+import { Component, OnInit } from '@angular/core';
+import { NzModalRef, NzMessageService, NzDrawerRef } from 'ng-zorro-antd';
+import { _HttpClient } from '@delon/theme';
+import { ProWorkLogicService } from 'app/services/project-work/pro-work-logic.service';
+import { ProWorkLogic } from 'app/entity/project-work/pro-work-logic';
+
+@Component({
+  selector: 'app-project-work-service-log-view',
+  templateUrl: './view.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 ProjectWorkServiceLogViewComponent implements OnInit {
+  
+
+  constructor(
+    private proWorkLogicService:ProWorkLogicService,
+    private drawerRef:NzDrawerRef
+  ) {}
+
+  ngOnInit(): void {
+    this.isLoadingSave=true;
+    this.getById().then(()=>{
+      this.isLoadingSave=false;
+    });
+  }
+
+  isLoadingSave=false;
+  proWorkLogic: ProWorkLogic = {}; //对象
+  itemList = []; //明细集合
+  id="";
+
+  /**
+   * 根据id查询
+   */
+  getById(){
+    return new Promise((resolve)=>{
+      this.proWorkLogicService.getListById(this.id).then((response)=>{
+        if(response.result){
+          this.proWorkLogic=response.result;//主表对象
+          this.itemList=response.result.detailList;//明细数组
+        }
+        resolve();
+      })
+    })
+  }
+
+  close() {
+    this.drawerRef.close();
+  }
+}

+ 2 - 0
src/app/routes/project-work/service-milestone-confirm/service-milestone-confirm.component.html

@@ -57,6 +57,8 @@
             </td>
             <td>{{ data.confirmTime }}</td>
             <td>
+              <a (click)="view(data)" acl [acl-ability]="'service-milestone-confirm:view'">详情</a>
+              <nz-divider nzType="vertical" acl [acl-ability]="'service-milestone-confirm:view'"></nz-divider>
               <a (click)="update(data)" acl [acl-ability]="'service-milestone-confirm:update'">修改</a>
               <nz-divider nzType="vertical" acl [acl-ability]="'service-milestone-confirm:update'"></nz-divider>
               <a (click)="delete(data.id)" acl [acl-ability]="'service-milestone-confirm:delete'">删除</a>

+ 21 - 0
src/app/routes/project-work/service-milestone-confirm/service-milestone-confirm.component.ts

@@ -8,6 +8,7 @@ import { I18NService } from '@core';
 import { ProWorkMilestone } from 'app/entity/project-work/pro-work-milestone';
 import { ProjectWorkServiceMilestoneConfirmAddComponent } from './add/add.component';
 import { ProjectWorkServiceMilestoneConfirmUpdateComponent } from './update/update.component';
+import { ProjectWorkServiceMilestoneConfirmViewComponent } from './view/view.component';
 
 @Component({
   selector: 'app-project-work-service-milestone-confirm',
@@ -104,6 +105,26 @@ export class ProjectWorkServiceMilestoneConfirmComponent implements OnInit {
     });
   }
 
+  view(data){
+    const drawerRef = this.nzDrawerService.create<ProjectWorkServiceMilestoneConfirmViewComponent, { id: string }, string>({
+      nzTitle: this.i18NService.fanyi("table.view"),//详情标题
+      nzContent: ProjectWorkServiceMilestoneConfirmViewComponent,
+      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();
+      }
+    });
+  }
+
   /**
    * 删除按钮
    * @param id 删除id

+ 94 - 0
src/app/routes/project-work/service-milestone-confirm/view/view.component.html

@@ -0,0 +1,94 @@
+<!-- 基本信息 -->
+<form nz-form>
+
+
+
+  <div nz-row [nzGutter]="24">
+    <div nz-col [nzSpan]="6">
+      <nz-form-item>
+        <nz-form-label [nzSpan]="'vertical' ? 24 : null" >单据编码</nz-form-label>
+        <nz-form-control [nzSm]="24" [nzXs]="24">
+          {{proWorkMilestone.billcode}}
+        </nz-form-control>
+      </nz-form-item>
+    </div>
+    <div nz-col [nzSpan]="6">
+      <nz-form-item>
+        <nz-form-label [nzSpan]="'vertical' ? 24 : null">项目编码</nz-form-label>
+        <nz-form-control [nzSm]="24" [nzXs]="24">
+          {{proWorkMilestone.proCode}}
+        </nz-form-control>
+      </nz-form-item>
+    </div>
+    <div nz-col [nzSpan]="6">
+      <nz-form-item>
+        <nz-form-label [nzSpan]="'vertical' ? 24 : null" >项目名称</nz-form-label>
+        <nz-form-control [nzSm]="24" [nzXs]="24">
+          {{proWorkMilestone.proName}}
+        </nz-form-control>
+      </nz-form-item>
+    </div>
+    <div nz-col [nzSpan]="6">
+      <nz-form-item>
+        <nz-form-label [nzSpan]="'vertical' ? 24 : null">客户编码</nz-form-label>
+        <nz-form-control [nzSm]="24" [nzXs]="24">
+          {{proWorkMilestone.cusCode}}
+        </nz-form-control>
+      </nz-form-item>
+    </div>
+
+  </div>
+  <div nz-row [nzGutter]="24">
+    <div nz-col [nzSpan]="6">
+      <nz-form-item>
+        <nz-form-label [nzSpan]="'vertical' ? 24 : null">客户名称</nz-form-label>
+        <nz-form-control [nzSm]="24" [nzXs]="24">
+          {{proWorkMilestone.cusName}}
+        </nz-form-control>
+      </nz-form-item>
+    </div>
+    <div nz-col [nzSpan]="6">
+      <nz-form-item>
+        <nz-form-label [nzSpan]="'vertical' ? 24 : null" >项目里程碑</nz-form-label>
+        <nz-form-control [nzSm]="24" [nzXs]="24">
+          {{proWorkMilestone.mileName}}
+        </nz-form-control>
+      </nz-form-item>
+    </div>
+    <div nz-col [nzSpan]="6">
+      <nz-form-item>
+        <nz-form-label [nzSpan]="'vertical' ? 24 : null" >里程碑确认</nz-form-label>
+        <nz-form-control [nzSm]="24" [nzXs]="24">
+            <nz-tag [nzColor]="'green'" *ngIf="proWorkMilestone.mileConfirm===1">是</nz-tag>
+            <nz-tag [nzColor]="'green'" *ngIf="proWorkMilestone.mileConfirm===0">否</nz-tag>
+        </nz-form-control>
+      </nz-form-item>
+    </div>
+    <div nz-col [nzSpan]="6">
+      <nz-form-item>
+        <nz-form-label [nzSpan]="'vertical' ? 24 : null" >确认时间</nz-form-label>
+        <nz-form-control [nzSm]="24" [nzXs]="24">
+          {{proWorkMilestone.confirmTime}}
+        </nz-form-control>
+      </nz-form-item>
+    </div>
+  </div>
+</form>
+<!-- 项目成果 -->
+<nz-card nzTitle="项目成果">
+  <div nz-row [nzGutter]="24">
+    <div nz-col [nzSpan]="6">
+      <nz-upload nzAction="sys/common/uploadFile" [nzFileList]="fileList" nzMultiple=true
+        >
+        <!-- <button nz-button><i nz-icon nzType="upload"></i>上传</button> -->
+      </nz-upload>
+    </div>
+  </div>
+</nz-card>
+<!-- 按钮 -->
+<div class="base">
+  <strong>填写人:</strong>{{proWorkMilestone.currentUser}} <strong>填写时间:</strong>{{proWorkMilestone.createTime}}
+  <!-- 关闭按钮 -->
+  <button nz-button (click)="close()"
+    [nzLoading]="isLoadingSave"><span>{{'pm.quotation.cancel'|translate}}</span></button>
+</div>

+ 24 - 0
src/app/routes/project-work/service-milestone-confirm/view/view.component.spec.ts

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

+ 66 - 0
src/app/routes/project-work/service-milestone-confirm/view/view.component.ts

@@ -0,0 +1,66 @@
+import { Component, OnInit } from '@angular/core';
+import { NzModalRef, NzMessageService, NzDrawerRef } from 'ng-zorro-antd';
+import { _HttpClient } from '@delon/theme';
+import { ProWorkMilestoneService } from 'app/services/project-work/pro-work-milestone.service';
+import { ProWorkMilestone } from 'app/entity/project-work/pro-work-milestone';
+import { getFileListById } from '@shared/utils/file-show';
+
+@Component({
+  selector: 'app-project-work-service-milestone-confirm-view',
+  templateUrl: './view.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 ProjectWorkServiceMilestoneConfirmViewComponent implements OnInit {
+ 
+
+  constructor(
+    private proWorkMilestoneService:ProWorkMilestoneService,
+    private drawerRef:NzDrawerRef
+  ) { }
+
+  ngOnInit(): void {
+    this.getById();
+  }
+  isLoadingSave=false;
+  proWorkMilestone: ProWorkMilestone = {
+  }; //对象
+  id = '';
+  fileList = [];
+
+  /**
+   * 根据id查询数据
+   */
+  getById() {
+    this.isLoadingSave=true;
+    this.proWorkMilestoneService.queryById(this.id).then(response => {
+      if (response.success) {
+        //表数据
+        this.proWorkMilestone = response.result;
+        //文件信息
+        this.fileList=response.result.fileList;
+        //获取文件格式
+        getFileListById(this.fileList);
+      }
+      this.isLoadingSave=false;
+    });
+  }
+
+  close() {
+    this.drawerRef.close();
+  }
+
+}

+ 9 - 0
src/app/routes/report-form/project-situation/project-situation.component.html

@@ -0,0 +1,9 @@
+<page-header [action]="phActionTpl">
+  <ng-template #phActionTpl>
+    <button (click)="add()" nz-button nzType="primary">新建</button>
+  </ng-template>
+</page-header>
+<nz-card>
+  <sf mode="search" [schema]="searchSchema" (formSubmit)="st.reset($event)" (formReset)="st.reset($event)"></sf>
+  <st #st [data]="url" [columns]="columns"></st>
+</nz-card>

+ 24 - 0
src/app/routes/report-form/project-situation/project-situation.component.spec.ts

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

+ 45 - 0
src/app/routes/report-form/project-situation/project-situation.component.ts

@@ -0,0 +1,45 @@
+import { Component, OnInit, ViewChild } from '@angular/core';
+import { _HttpClient, ModalHelper } from '@delon/theme';
+import { STColumn, STComponent } from '@delon/abc';
+import { SFSchema } from '@delon/form';
+
+@Component({
+  selector: 'app-report-form-project-situation',
+  templateUrl: './project-situation.component.html',
+})
+export class ReportFormProjectSituationComponent implements OnInit {
+  url = `/user`;
+  searchSchema: SFSchema = {
+    properties: {
+      no: {
+        type: 'string',
+        title: '编号'
+      }
+    }
+  };
+  @ViewChild('st') st: STComponent;
+  columns: STColumn[] = [
+    { title: '编号', index: 'no' },
+    { title: '调用次数', type: 'number', index: 'callNo' },
+    { title: '头像', type: 'img', width: '50px', index: 'avatar' },
+    { title: '时间', type: 'date', index: 'updatedAt' },
+    {
+      title: '',
+      buttons: [
+        // { text: '查看', click: (item: any) => `/form/${item.id}` },
+        // { text: '编辑', type: 'static', component: FormEditComponent, click: 'reload' },
+      ]
+    }
+  ];
+
+  constructor(private http: _HttpClient, private modal: ModalHelper) { }
+
+  ngOnInit() { }
+
+  add() {
+    // this.modal
+    //   .createStatic(FormEditComponent, { i: { id: 0 } })
+    //   .subscribe(() => this.st.reload());
+  }
+
+}

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

@@ -1,10 +1,12 @@
 import { NgModule } from '@angular/core';
 import { Routes, RouterModule } from '@angular/router';
 import { ReportFormProjectStatisticsComponent } from './project-statistics/project-statistics.component';
+import { ReportFormProjectSituationComponent } from './project-situation/project-situation.component';
 
 const routes: Routes = [
 
-  { path: 'project-statistics', component: ReportFormProjectStatisticsComponent }];
+  { path: 'project-statistics', component: ReportFormProjectStatisticsComponent },
+  { path: 'project-situation', component: ReportFormProjectSituationComponent }];
 
 @NgModule({
   imports: [RouterModule.forChild(routes)],

+ 3 - 1
src/app/routes/report-form/report-form.module.ts

@@ -2,9 +2,11 @@ import { NgModule } from '@angular/core';
 import { SharedModule } from '@shared';
 import { ReportFormRoutingModule } from './report-form-routing.module';
 import { ReportFormProjectStatisticsComponent } from './project-statistics/project-statistics.component';
+import { ReportFormProjectSituationComponent } from './project-situation/project-situation.component';
 
 const COMPONENTS = [
-  ReportFormProjectStatisticsComponent];
+  ReportFormProjectStatisticsComponent,
+  ReportFormProjectSituationComponent];
 const COMPONENTS_NOROUNT = [];
 
 @NgModule({

+ 37 - 0
src/app/shared/utils/file-show.ts

@@ -0,0 +1,37 @@
+import { environment } from '@env/environment';
+
+/**
+ * 处理文件格式
+ * @param fileList 文件集合
+ */
+export function getFileListById(fileList) {
+    //文件集合不为空则显示文件下载
+    if (fileList != null && fileList.length > 0) {
+      fileList.forEach((element, index) => {
+        const fileName = setAppendix(element);
+        (element.uid = '-1'),
+          (element.uid = index + 1),
+          (element.name = fileName),
+          (element.status = 'done'),
+          (element.url = environment.SERVER_URL + 'sys/common/downloadFile/' + element.fileUrl);
+        element.response = { message: element.fileUrl };
+      });
+    }
+  }
+
+
+  //显示路径
+  export function setAppendix(file: any) {
+    const url = file.fileUrl;
+    if (url != null && url !== '') {
+      const idx = url.lastIndexOf('/');
+      const fileUrl = url.slice(idx + 1);
+      const index = fileUrl.lastIndexOf('_');
+      const i = fileUrl.lastIndexOf('.');
+      const fileName = fileUrl.substring(0, index);
+      const fileSuffix = fileUrl.slice(i + 1);
+      const f = fileName + '.' + fileSuffix;
+      return f;
+    }
+    return '';
+  }