Selaa lähdekoodia

页面 翻译

liangyan0105 3 vuotta sitten
vanhempi
commit
8de47c1061
29 muutettua tiedostoa jossa 2372 lisäystä ja 1110 poistoa
  1. 11 9
      src/app/routes/basedata/base-archives-collection-line/add/add.component.html
  2. 41 15
      src/app/routes/basedata/base-archives-collection-line/base-archives-collection-line.component.html
  3. 23 9
      src/app/routes/basedata/base-archives-cost/add/add.component.html
  4. 42 14
      src/app/routes/basedata/base-archives-cost/base-archives-cost.component.html
  5. 12 8
      src/app/routes/basedata/base-archives-cost/view/view.component.html
  6. 28 16
      src/app/routes/basedata/base-archives-milestone/add/add.component.html
  7. 57 20
      src/app/routes/basedata/base-archives-milestone/base-archives-milestone.component.html
  8. 35 9
      src/app/routes/basedata/customer/customer-add/customer-add.component.html
  9. 4 7
      src/app/routes/basedata/customer/edit/edit.component.html
  10. 12 24
      src/app/routes/basedata/material-file/add/add.component.html
  11. 33 11
      src/app/routes/basedata/material-file/product-add/product-add.component.html
  12. 15 0
      src/app/routes/basedata/material-file/product-add/product-add.component.ts
  13. 17 8
      src/app/routes/basedata/milestone-category/milestone-category.component.html
  14. 26 14
      src/app/routes/contract-management/contract-file/add/add.component.html
  15. 389 196
      src/app/routes/contract-management/contract-file/add/collection-plan/collection-plan.component.html
  16. 47 21
      src/app/routes/contract-management/contract-file/contract-file.component.html
  17. 274 77
      src/app/routes/contract-management/contract-file/update/collection-plan/collection-plan.component.html
  18. 285 103
      src/app/routes/contract-management/contract-file/update/essential-information/essential-information.component.html
  19. 158 46
      src/app/routes/contract-management/contract-file/update/product-module/product-module.component.html
  20. 341 320
      src/app/routes/dashboard/analysis/analysis.component.html
  21. 141 27
      src/app/routes/report-form/project-situation/project-situation.component.html
  22. 95 34
      src/app/routes/report-form/project-statistics/project-statistics.component.html
  23. 32 18
      src/app/routes/shared/modal/produt-select/produt-select.component.html
  24. 30 26
      src/app/routes/system/depart/details/details.component.html
  25. 103 38
      src/app/routes/system/depart/personnel-add/personnel-add.component.html
  26. 49 31
      src/app/routes/system/role/auth/auth.component.html
  27. 6 4
      src/app/routes/system/role/view-user/view-user.component.html
  28. 10 4
      src/app/routes/upload-download/upload-download.component.html
  29. 56 1
      src/assets/tmp/i18n/zh-CN.json

+ 11 - 9
src/app/routes/basedata/base-archives-collection-line/add/add.component.html

@@ -1,20 +1,22 @@
 <form nz-form [formGroup]="validateForm" (ngSubmit)="submitForm()">
   <nz-form-item>
-    <nz-form-label [nzSm]="6" [nzXs]="24" nzRequired nzFor="code">条线编码</nz-form-label>
-    <nz-form-control [nzSm]="14" [nzXs]="24" >
-      <input nz-input formControlName="code" id="code" [(ngModel)]="baseArchivesCollectionLine.code" maxlength=3/>
+    <!-- 条线编码 -->
+    <nz-form-label [nzSm]="6" [nzXs]="24" nzRequired nzFor="code">{{ 'line.code' | translate }}</nz-form-label>
+    <nz-form-control [nzSm]="14" [nzXs]="24">
+      <input nz-input formControlName="code" id="code" [(ngModel)]="baseArchivesCollectionLine.code" maxlength="3" />
       <nz-form-explain *ngIf="validateForm.get('code')?.dirty && validateForm.get('code')?.errors">
-        请输入条线编码
+        {{ 'placeholder' | translate }}{{ 'line.code' | translate }}
       </nz-form-explain>
     </nz-form-control>
   </nz-form-item>
+  <!-- 条线名称 -->
   <nz-form-item>
-    <nz-form-label [nzSm]="6" [nzXs]="24" nzRequired nzFor="name">条线名称</nz-form-label>
-    <nz-form-control [nzSm]="14" [nzXs]="24" >
-      <input nz-input formControlName="name" id="name" [(ngModel)]="baseArchivesCollectionLine.name" maxlength=20/>
+    <nz-form-label [nzSm]="6" [nzXs]="24" nzRequired nzFor="name">{{ 'line.name' | translate }}</nz-form-label>
+    <nz-form-control [nzSm]="14" [nzXs]="24">
+      <input nz-input formControlName="name" id="name" [(ngModel)]="baseArchivesCollectionLine.name" maxlength="20" />
       <nz-form-explain *ngIf="validateForm.get('name')?.dirty && validateForm.get('name')?.errors">
-        请输入条线名称
+        {{ 'placeholder' | translate }}{{ 'line.name' | translate }}
       </nz-form-explain>
     </nz-form-control>
   </nz-form-item>
-</form>
+</form>

+ 41 - 15
src/app/routes/basedata/base-archives-collection-line/base-archives-collection-line.component.html

@@ -1,7 +1,9 @@
 <page-header [action]="phActionTpl">
   <ng-template #phActionTpl>
-    <button (click)="add()" nz-button nzType="primary" acl
-      [acl-ability]="'base-archives-collection-line:add'">新建</button>
+    <!-- 新建 -->
+    <button (click)="add()" nz-button nzType="primary" acl [acl-ability]="'base-archives-collection-line:add'">
+      {{ 'new' | translate }}
+    </button>
   </ng-template>
 </page-header>
 <nz-card>
@@ -10,7 +12,8 @@
     <div nz-row [nzGutter]="{ xs: 8, sm: 16, md: 24, lg: 32 }">
       <div nz-col [nzSpan]="8">
         <nz-form-item>
-          <nz-form-label [nzSm]="6" [nzXs]="24">条线编码</nz-form-label>
+          <!-- 条线编码 -->
+          <nz-form-label [nzSm]="6" [nzXs]="24">{{ 'line.code' | translate }}</nz-form-label>
           <nz-form-control [nzSm]="14" [nzXs]="24">
             <input nz-input name="code" [(ngModel)]="baseArchivesCollectionLine.code" />
           </nz-form-control>
@@ -18,7 +21,8 @@
       </div>
       <div nz-col [nzSpan]="8">
         <nz-form-item>
-          <nz-form-label [nzSm]="6" [nzXs]="24">条线名称</nz-form-label>
+          <!-- 条线名称 -->
+          <nz-form-label [nzSm]="6" [nzXs]="24">{{ 'line.name' | translate }}</nz-form-label>
           <nz-form-control [nzSm]="14" [nzXs]="24">
             <input nz-input name="name" [(ngModel)]="baseArchivesCollectionLine.name" />
           </nz-form-control>
@@ -26,9 +30,12 @@
       </div>
       <div nz-col [nzSpan]="8">
         <nz-form-item>
-          <nz-form-label [nzSm]="2" [nzXs]="24" [nzNoColon]=true></nz-form-label>
+          <nz-form-label [nzSm]="2" [nzXs]="24" [nzNoColon]="true"></nz-form-label>
           <nz-form-control [nzSm]="14" [nzXs]="24">
-            <button nzType="primary" (click)="query()" nz-button><span>查询</span></button>
+            <!-- 查询 -->
+            <button nzType="primary" (click)="query()" nz-button>
+              <span>{{ 'button.query' | translate }}</span>
+            </button>
           </nz-form-control>
         </nz-form-item>
       </div>
@@ -37,13 +44,21 @@
   <!-- 表格 -->
   <div nz-row [nzGutter]="{ xs: 8, sm: 16, md: 24, lg: 32 }">
     <div nz-col [nzSpan]="24">
-      <nz-table nzSize="small" #basicTable [nzData]="listOfData" [nzFrontPagination]="false" [nzTotal]="page.total"
-        [nzPageIndex]="page.current" (nzPageIndexChange)="pageIndexChange($event)" [nzLoading]="isSpinning">
+      <nz-table
+        nzSize="small"
+        #basicTable
+        [nzData]="listOfData"
+        [nzFrontPagination]="false"
+        [nzTotal]="page.total"
+        [nzPageIndex]="page.current"
+        (nzPageIndexChange)="pageIndexChange($event)"
+        [nzLoading]="isSpinning"
+      >
         <thead>
           <tr>
-            <th>条线编码</th>
-            <th>条线名称</th>
-            <th>操作</th>
+            <th>{{ 'line.code' | translate }}</th>
+            <th>{{ 'line.name' | translate }}</th>
+            <th>{{ 'table.operation' | translate }}</th>
           </tr>
         </thead>
         <tbody>
@@ -51,15 +66,26 @@
             <td>{{ data.code }}</td>
             <td>{{ data.name }}</td>
             <td>
-              <a (click)="view(data)" acl [acl-ability]="'base-archives-collection-line:view'">详情</a>
+              <!-- 操作 详情 -->
+              <a (click)="view(data)" acl [acl-ability]="'base-archives-collection-line:view'">
+                {{ 'table.view' | translate }}
+              </a>
               <nz-divider nzType="vertical" acl [acl-ability]="'base-archives-collection-line:view'"></nz-divider>
-              <a (click)="update(data)" acl [acl-ability]="'base-archives-collection-line:update'">修改</a>
+
+              <!-- 操作 修改 -->
+              <a (click)="update(data)" acl [acl-ability]="'base-archives-collection-line:update'">
+                {{ 'table.update' | translate }}
+              </a>
               <nz-divider nzType="vertical" acl [acl-ability]="'base-archives-collection-line:update'"></nz-divider>
-              <a (click)="delete(data.id)" acl [acl-ability]="'base-archives-collection-line:delete'">删除</a>
+
+              <!-- 操作 删除 -->
+              <a (click)="delete(data.id)" acl [acl-ability]="'base-archives-collection-line:delete'">
+                {{ 'table.delete' | translate }}
+              </a>
             </td>
           </tr>
         </tbody>
       </nz-table>
     </div>
   </div>
-</nz-card>
+</nz-card>

+ 23 - 9
src/app/routes/basedata/base-archives-cost/add/add.component.html

@@ -1,20 +1,34 @@
 <form nz-form [formGroup]="validateForm" (ngSubmit)="submitForm()">
   <nz-form-item>
-    <nz-form-label [nzSm]="6" [nzXs]="24" nzRequired nzFor="code">费用编码</nz-form-label>
-    <nz-form-control [nzSm]="14" [nzXs]="24" >
-      <input placeholder="自动生成" nz-input formControlName="code" id="code" [(ngModel)]="baseArchivesCost.code" maxlength=3/>
+    <!-- 费用编码 -->
+    <nz-form-label [nzSm]="6" [nzXs]="24" nzRequired nzFor="code">
+      {{ 'pm.quotation.fee' | translate }}{{ 'contract.code' | translate }}
+    </nz-form-label>
+    <nz-form-control [nzSm]="14" [nzXs]="24">
+      <input
+        placeholder="{{ 'aoto.create' | translate }}"
+        nz-input
+        formControlName="code"
+        id="code"
+        [(ngModel)]="baseArchivesCost.code"
+        maxlength="3"
+      />
       <nz-form-explain *ngIf="validateForm.get('code')?.dirty && validateForm.get('code')?.errors">
-        请输入费用编码
+        {{ 'placeholder' | translate }}
+        {{ 'pm.quotation.fee' | translate }}{{ 'contract.code' | translate }}
       </nz-form-explain>
     </nz-form-control>
   </nz-form-item>
   <nz-form-item>
-    <nz-form-label [nzSm]="6" [nzXs]="24" nzRequired nzFor="name">费用名称</nz-form-label>
-    <nz-form-control [nzSm]="14" [nzXs]="24" >
-      <input nz-input formControlName="name" id="name" [(ngModel)]="baseArchivesCost.name" maxlength=20/>
+    <!-- 费用名称 -->
+    <nz-form-label [nzSm]="6" [nzXs]="24" nzRequired nzFor="name">
+      {{ 'pm.quotation.Tag.name' | translate }}
+    </nz-form-label>
+    <nz-form-control [nzSm]="14" [nzXs]="24">
+      <input nz-input formControlName="name" id="name" [(ngModel)]="baseArchivesCost.name" maxlength="20" />
       <nz-form-explain *ngIf="validateForm.get('name')?.dirty && validateForm.get('name')?.errors">
-        请输入费用名称
+        {{ 'placeholder' | translate }}{{ 'pm.quotation.Tag.name' | translate }}
       </nz-form-explain>
     </nz-form-control>
   </nz-form-item>
-</form>
+</form>

+ 42 - 14
src/app/routes/basedata/base-archives-cost/base-archives-cost.component.html

@@ -1,15 +1,21 @@
 <page-header [action]="phActionTpl">
   <ng-template #phActionTpl>
-    <button (click)="add()" nz-button nzType="primary" acl [acl-ability]="'base-archives-cost:update'">新建</button>
+    <!-- 新建 -->
+    <button (click)="add()" nz-button nzType="primary" acl [acl-ability]="'base-archives-cost:update'">
+      {{ 'new' | translate }}
+    </button>
   </ng-template>
 </page-header>
 <nz-card>
-   <!-- 查询条件 -->
+  <!-- 查询条件 -->
   <form nz-form>
     <div nz-row [nzGutter]="{ xs: 8, sm: 16, md: 24, lg: 32 }">
       <div nz-col [nzSpan]="8">
         <nz-form-item>
-          <nz-form-label [nzSm]="6" [nzXs]="24">费用编码</nz-form-label>
+          <!-- 费用编码 -->
+          <nz-form-label [nzSm]="6" [nzXs]="24">
+            {{ 'pm.quotation.fee' | translate }}{{ 'contract.code' | translate }}
+          </nz-form-label>
           <nz-form-control [nzSm]="14" [nzXs]="24">
             <input nz-input name="code" [(ngModel)]="baseArchivesCost.code" />
           </nz-form-control>
@@ -17,7 +23,8 @@
       </div>
       <div nz-col [nzSpan]="8">
         <nz-form-item>
-          <nz-form-label [nzSm]="6" [nzXs]="24">费用名称</nz-form-label>
+          <!-- 费用名称 -->
+          <nz-form-label [nzSm]="6" [nzXs]="24"> {{ 'pm.quotation.Tag.name' | translate }}</nz-form-label>
           <nz-form-control [nzSm]="14" [nzXs]="24">
             <input nz-input name="name" [(ngModel)]="baseArchivesCost.name" />
           </nz-form-control>
@@ -25,9 +32,12 @@
       </div>
       <div nz-col [nzSpan]="8">
         <nz-form-item>
-          <nz-form-label [nzSm]="2" [nzXs]="24" [nzNoColon]=true></nz-form-label>
+          <nz-form-label [nzSm]="2" [nzXs]="24" [nzNoColon]="true"></nz-form-label>
           <nz-form-control [nzSm]="14" [nzXs]="24">
-            <button nzType="primary" (click)="query()" nz-button><span>查询</span></button>
+            <!-- 查询 -->
+            <button nzType="primary" (click)="query()" nz-button>
+              <span>{{ 'button.query' | translate }}</span>
+            </button>
           </nz-form-control>
         </nz-form-item>
       </div>
@@ -36,13 +46,21 @@
   <!-- 表格 -->
   <div nz-row [nzGutter]="{ xs: 8, sm: 16, md: 24, lg: 32 }">
     <div nz-col [nzSpan]="24">
-      <nz-table nzSize="small" #basicTable [nzData]="listOfData" [nzFrontPagination]="false" [nzTotal]="page.total"
-        [nzPageIndex]="page.current" (nzPageIndexChange)="pageIndexChange($event)" [nzLoading]="isSpinning">
+      <nz-table
+        nzSize="small"
+        #basicTable
+        [nzData]="listOfData"
+        [nzFrontPagination]="false"
+        [nzTotal]="page.total"
+        [nzPageIndex]="page.current"
+        (nzPageIndexChange)="pageIndexChange($event)"
+        [nzLoading]="isSpinning"
+      >
         <thead>
           <tr>
-            <th>费用编码</th>
-            <th>费用名称</th>
-            <th>操作</th>
+            <th>{{ 'pm.quotation.fee' | translate }}{{ 'contract.code' | translate }}</th>
+            <th>{{ 'pm.quotation.Tag.name' | translate }}</th>
+            <th>{{ 'table.operation' | translate }}</th>
           </tr>
         </thead>
         <tbody>
@@ -50,11 +68,21 @@
             <td>{{ data.code }}</td>
             <td>{{ data.name }}</td>
             <td>
-              <a (click)="view(data)" acl [acl-ability]="'base-archives-cost:view'">详情</a>
+              <!-- 详情 -->
+              <a (click)="view(data)" acl [acl-ability]="'base-archives-cost:view'">
+                {{ 'table.view' | translate }}
+              </a>
               <nz-divider nzType="vertical" acl [acl-ability]="'base-archives-cost:view'"></nz-divider>
-              <a (click)="update(data)" acl [acl-ability]="'base-archives-cost:update'">修改</a>
+
+              <!-- 修改 -->
+              <a (click)="update(data)" acl [acl-ability]="'base-archives-cost:update'">
+                {{ 'table.update' | translate }}
+              </a>
               <nz-divider nzType="vertical" acl [acl-ability]="'base-archives-cost:update'"></nz-divider>
-              <a (click)="delete(data.id)" acl [acl-ability]="'base-archives-cost:delete'">删除</a>
+              <!-- 删除 -->
+              <a (click)="delete(data.id)" acl [acl-ability]="'base-archives-cost:delete'">
+                {{ 'table.delete' | translate }}
+              </a>
             </td>
           </tr>
         </tbody>

+ 12 - 8
src/app/routes/basedata/base-archives-cost/view/view.component.html

@@ -1,12 +1,16 @@
-<form nz-form >
+<form nz-form>
   <nz-form-item>
-    <nz-form-label [nzSm]="5" [nzXs]="24" >费用编码</nz-form-label>
-    <nz-form-control [nzSm]="4" [nzXs]="24" >
-      {{baseArchivesCost.code}}
+    <!-- 费用编码 -->
+    <nz-form-label [nzSm]="5" [nzXs]="24">
+      {{ 'pm.quotation.fee' | translate }}{{ 'contract.code' | translate }}
+    </nz-form-label>
+    <nz-form-control [nzSm]="4" [nzXs]="24">
+      {{ baseArchivesCost.code }}
     </nz-form-control>
-    <nz-form-label [nzSm]="5" [nzXs]="24" >费用名称</nz-form-label>
-    <nz-form-control [nzSm]="10" [nzXs]="24" >
-      {{baseArchivesCost.name}}
+    <!-- 费用名称 -->
+    <nz-form-label [nzSm]="5" [nzXs]="24">{{ 'pm.quotation.Tag.name' | translate }}</nz-form-label>
+    <nz-form-control [nzSm]="10" [nzXs]="24">
+      {{ baseArchivesCost.name }}
     </nz-form-control>
   </nz-form-item>
-</form>
+</form>

+ 28 - 16
src/app/routes/basedata/base-archives-milestone/add/add.component.html

@@ -1,32 +1,44 @@
 <form nz-form [formGroup]="validateForm" (ngSubmit)="submitForm()">
   <nz-form-item>
-    <nz-form-label [nzSm]="6" [nzXs]="24" nzRequired nzFor="code">编码</nz-form-label>
-    <nz-form-control [nzSm]="14" [nzXs]="24" >
-      <input nz-input formControlName="code" id="code" [(ngModel)]="baseArchivesMilestone.code" maxlength=6/>
+    <!-- 编码 -->
+    <nz-form-label [nzSm]="6" [nzXs]="24" nzRequired nzFor="code">{{ 'table.thead.code' | translate }}</nz-form-label>
+    <nz-form-control [nzSm]="14" [nzXs]="24">
+      <input nz-input formControlName="code" id="code" [(ngModel)]="baseArchivesMilestone.code" maxlength="6" />
       <nz-form-explain *ngIf="validateForm.get('code')?.dirty && validateForm.get('code')?.errors">
-        请输入编码
+        {{ 'placeholder' | translate }}{{ 'table.thead.code' | translate }
       </nz-form-explain>
     </nz-form-control>
   </nz-form-item>
   <nz-form-item>
-    <nz-form-label [nzSm]="6" [nzXs]="24" nzRequired nzFor="name">名称</nz-form-label>
-    <nz-form-control [nzSm]="14" [nzXs]="24" >
-      <input nz-input formControlName="name" id="name" [(ngModel)]="baseArchivesMilestone.name" maxlength=20/>
+    <!-- 名称 -->
+    <nz-form-label [nzSm]="6" [nzXs]="24" nzRequired nzFor="name">{{ 'contract.name' | translate }}</nz-form-label>
+    <nz-form-control [nzSm]="14" [nzXs]="24">
+      <input nz-input formControlName="name" id="name" [(ngModel)]="baseArchivesMilestone.name" maxlength="20" />
       <nz-form-explain *ngIf="validateForm.get('name')?.dirty && validateForm.get('name')?.errors">
-        请输入名称
+        {{ 'placeholder' | translate }}{{ 'contract.name' | translate }
       </nz-form-explain>
     </nz-form-control>
   </nz-form-item>
   <nz-form-item>
-    <nz-form-label [nzSm]="6" [nzXs]="24" nzRequired nzFor="name">类别</nz-form-label>
-    <nz-form-control [nzSm]="14" [nzXs]="24" >
-      <nz-select style="widows: 100%;" nzShowSearch nzAllowClear formControlName="typeId" name="typeId" [(ngModel)]="baseArchivesMilestone.typeId"
-              nzPlaceHolder="请选择">
-              <nz-option *ngFor="let i of typeList" [nzValue]="i.value" [nzLabel]="i.text"></nz-option>
-            </nz-select>
+    <!-- 类别 -->
+    <nz-form-label [nzSm]="6" [nzXs]="24" nzRequired nzFor="name">
+      {{ 'financial.management.category' | translate }}
+    </nz-form-label>
+    <nz-form-control [nzSm]="14" [nzXs]="24">
+      <nz-select
+        style="widows: 100%;"
+        nzShowSearch
+        nzAllowClear
+        formControlName="typeId"
+        name="typeId"
+        [(ngModel)]="baseArchivesMilestone.typeId"
+        nzPlaceHolder="{{ 'select.please.choose' | translate }}"
+      >
+        <nz-option *ngFor="let i of typeList" [nzValue]="i.value" [nzLabel]="i.text"></nz-option>
+      </nz-select>
       <nz-form-explain *ngIf="validateForm.get('type')?.dirty && validateForm.get('type')?.errors">
-        请选择类别
+        {{ 'select.please.choose' | translate }}{{ 'financial.management.category' | translate }}
       </nz-form-explain>
     </nz-form-control>
   </nz-form-item>
-</form>
+</form>

+ 57 - 20
src/app/routes/basedata/base-archives-milestone/base-archives-milestone.component.html

@@ -1,6 +1,9 @@
 <page-header [action]="phActionTpl">
   <ng-template #phActionTpl>
-    <button (click)="add()" nz-button nzType="primary" acl [acl-ability]="'base-archives-milestone:add'">新增一级</button>
+    <!-- 新增一级 -->
+    <button (click)="add()" nz-button nzType="primary" acl [acl-ability]="'base-archives-milestone:add'">
+      {{ 'button.add' | translate }}{{ 'leve.one' | translate }}
+    </button>
   </ng-template>
 </page-header>
 <nz-card>
@@ -9,10 +12,19 @@
     <div nz-row [nzGutter]="{ xs: 8, sm: 16, md: 24, lg: 32 }">
       <div nz-col [nzSpan]="8">
         <nz-form-item>
-          <nz-form-label [nzSm]="6" [nzXs]="24" nzRequired>类别</nz-form-label>
+          <!-- 类别 -->
+          <nz-form-label [nzSm]="6" [nzXs]="24" nzRequired>
+            {{ 'financial.management.category' | translate }}
+          </nz-form-label>
           <nz-form-control [nzSm]="14" [nzXs]="24">
-            <nz-select style="widows: 100%;" nzShowSearch nzAllowClear name="typeId" [(ngModel)]="baseArchivesMilestone.typeId"
-              nzPlaceHolder="请选择">
+            <nz-select
+              style="widows: 100%;"
+              nzShowSearch
+              nzAllowClear
+              name="typeId"
+              [(ngModel)]="baseArchivesMilestone.typeId"
+              nzPlaceHolder="{{ 'select.please.choose' | translate }}"
+            >
               <nz-option *ngFor="let i of typeList" [nzValue]="i.value" [nzLabel]="i.text"></nz-option>
             </nz-select>
           </nz-form-control>
@@ -20,9 +32,12 @@
       </div>
       <div nz-col [nzSpan]="8">
         <nz-form-item>
-          <nz-form-label [nzSm]="2" [nzXs]="24" [nzNoColon]=true></nz-form-label>
+          <nz-form-label [nzSm]="2" [nzXs]="24" [nzNoColon]="true"></nz-form-label>
           <nz-form-control [nzSm]="14" [nzXs]="24">
-            <button nzType="primary" (click)="query()" nz-button ><span>查询</span></button>
+            <!-- 查询 -->
+            <button nzType="primary" (click)="query()" nz-button>
+              <span>{{ 'button.query' | translate }}</span>
+            </button>
           </nz-form-control>
         </nz-form-item>
       </div>
@@ -31,34 +46,56 @@
   <!-- 数据表格 -->
   <div nz-row [nzGutter]="{ xs: 8, sm: 16, md: 24, lg: 32 }">
     <div nz-col [nzSpan]="24">
-      <nz-table nzSize="small" #expandTable [nzData]="listOfMapData" nzTableLayout="fixed" [nzShowPagination]="false"
-        [nzFrontPagination]="false">
+      <nz-table
+        nzSize="small"
+        #expandTable
+        [nzData]="listOfMapData"
+        nzTableLayout="fixed"
+        [nzShowPagination]="false"
+        [nzFrontPagination]="false"
+      >
         <thead>
           <tr>
-            <th>编码</th>
-            <th>名称</th>
-            <th>类别</th>
-            <th>操作</th>
+            <!-- 编码 -->
+            <th>{{ 'table.thead.code' | translate }}</th>
+            <!-- 名称 -->
+            <th>{{ 'contract.name' | translate }}</th>
+            <!-- 类别 -->
+            <th>{{ 'financial.management.category' | translate }}</th>
+            <!-- 操作 -->
+            <th>{{ 'table.operation' | translate }}</th>
           </tr>
         </thead>
         <tbody>
           <ng-container *ngFor="let data of expandTable.data">
             <ng-container *ngFor="let item of mapOfExpandedData[data.key]">
-
-
               <tr *ngIf="(item.parent && item.parent.expand) || !item.parent">
-                <td [nzIndentSize]="item.level! * 20" [nzShowExpand]="!!item.children" [(nzExpand)]="item.expand"
-                  (nzExpandChange)="collapse(mapOfExpandedData[data.key], item, $event)">
+                <td
+                  [nzIndentSize]="item.level! * 20"
+                  [nzShowExpand]="!!item.children"
+                  [(nzExpand)]="item.expand"
+                  (nzExpandChange)="collapse(mapOfExpandedData[data.key], item, $event)"
+                >
                   {{ item.code }}
                 </td>
                 <td>{{ item.name }}</td>
                 <td>{{ item.type }}</td>
                 <td>
-                  <a (click)="addChild(item)" acl [acl-ability]="'base-archives-milestone:add'">新增子级</a>
+                  <!-- 新增子级 -->
+                  <a (click)="addChild(item)" acl [acl-ability]="'base-archives-milestone:add'">
+                    {{ 'add.child' | translate }}
+                  </a>
+
                   <nz-divider nzType="vertical" acl [acl-ability]="'base-archives-milestone:add'"></nz-divider>
-                  <a (click)="update(item)" acl [acl-ability]="'base-archives-milestone:update'">修改</a>
+                  <!-- 修改 -->
+                  <a (click)="update(item)" acl [acl-ability]="'base-archives-milestone:update'">
+                    {{ 'table.update' | translate }}
+                  </a>
                   <nz-divider nzType="vertical" acl [acl-ability]="'base-archives-milestone:update'"></nz-divider>
-                  <a (click)="delete(item.id)" acl [acl-ability]="'base-archives-milestone:delete'">删除</a>
+                  <!-- 删除 -->
+                  <a (click)="delete(item.id)" acl [acl-ability]="'base-archives-milestone:delete'">
+                    {{ 'table.delete' | translate }}</a
+                  >
                 </td>
               </tr>
             </ng-container>
@@ -67,4 +104,4 @@
       </nz-table>
     </div>
   </div>
-</nz-card>
+</nz-card>

+ 35 - 9
src/app/routes/basedata/customer/customer-add/customer-add.component.html

@@ -1,22 +1,43 @@
+<!-- 【新增】一行数据的表 -->
 <form nz-form>
   <nz-form-item>
+    <!--  联系人 -->
     <nz-form-label nzRequired [nzSm]="5" [nzXs]="24">{{ 'customer.contacts.name' | translate }}</nz-form-label>
     <nz-form-control [nzSm]="7" [nzXs]="24">
-      <input nz-input [(ngModel)]="contacts.contactPsn" name="contactPsn" placeholder="{{'please.input.contacts'|translate}}" />
+      <input
+        nz-input
+        [(ngModel)]="contacts.contactPsn"
+        name="contactPsn"
+        placeholder="{{ 'please.input.contacts' | translate }}"
+      />
     </nz-form-control>
+    
+    <!-- 联系人电话 -->
     <nz-form-label [nzSm]="5" [nzXs]="24">{{ 'customer.contacts.telephone' | translate }}</nz-form-label>
     <nz-form-control [nzSm]="7" [nzXs]="24">
-      <input [(ngModel)]="contacts.contectTel" name="contectTel" nz-input
-        placeholder="{{ 'placeholder' | translate }}{{ 'customer.contacts.telephone' | translate }}" />
+      <input
+        [(ngModel)]="contacts.contectTel"
+        name="contectTel"
+        nz-input
+        placeholder="{{ 'placeholder' | translate }}{{ 'customer.contacts.telephone' | translate }}"
+      />
     </nz-form-control>
   </nz-form-item>
   <nz-form-item>
+
+    <!-- 联系人邮箱 -->
     <nz-form-label [nzSm]="5" [nzXs]="24">{{ 'customer.contacts.mail' | translate }}</nz-form-label>
     <nz-form-control [nzSm]="7" [nzXs]="24">
-      <input [(ngModel)]="contacts.email" name="email" nz-input
-        placeholder="{{ 'placeholder' | translate }}{{ 'customer.contacts.mail' | translate }}" />
+      <input
+        [(ngModel)]="contacts.email"
+        name="email"
+        nz-input
+        placeholder="{{ 'placeholder' | translate }}{{ 'customer.contacts.mail' | translate }}"
+      />
     </nz-form-control>
-    <nz-form-label [nzSm]="5" [nzXs]="24">{{'customer.contacts.address' | translate }}</nz-form-label>
+
+    <!-- 客户地址 -->
+    <nz-form-label [nzSm]="5" [nzXs]="24">{{ 'customer.contacts.address' | translate }}</nz-form-label>
     <nz-form-control [nzSm]="7" [nzXs]="24">
       <input [(ngModel)]="contacts.address" name="address" nz-input />
     </nz-form-control>
@@ -33,8 +54,13 @@
         <nz-option nzLabel="{{'no' | translate }}" nzValue="0"></nz-option>
         <nz-option nzLabel="{{'yes' | translate }}" nzValue="1"></nz-option>
       </nz-select> -->
-      <nz-switch [(ngModel)]="isDefaults" name="isDefaults" nzCheckedChildren="{{'yes' | translate}}"
-        nzUnCheckedChildren="{{'no' | translate}}" (ngModelChange)="change($event)"></nz-switch>
+      <nz-switch
+        [(ngModel)]="isDefaults"
+        name="isDefaults"
+        nzCheckedChildren="{{ 'yes' | translate }}"
+        nzUnCheckedChildren="{{ 'no' | translate }}"
+        (ngModelChange)="change($event)"
+      ></nz-switch>
     </nz-form-control>
   </nz-form-item>
-</form>
+</form>

+ 4 - 7
src/app/routes/basedata/customer/edit/edit.component.html

@@ -146,7 +146,6 @@
           nzMin="1"
           [nzMax]="100000"
         ></nz-input-number>
-        <!-- <input [(ngModel)]="customer.creditPeriod" name="creditPeriod" nz-input /> -->
       </nz-form-control>
     </nz-form-item>
 
@@ -580,14 +579,13 @@
   <!-- 新增  联系人 -->
   <nz-form-item>
     <span id="titleAdd" hidden="true">{{ 'button.add' | translate }}{{ 'customer.contacts.name' | translate }}</span>
-    <span id="titleUpdate" hidden="true"
-      >{{ 'table.update' | translate }}{{ 'customer.contacts.name' | translate }}</span
-    >
+    <span id="titleUpdate" hidden="true">
+      {{ 'table.update' | translate }}{{ 'customer.contacts.name' | translate }}
+    </span>
     <!-- 按钮 -->
     <div nz-row nzGutter="24">
       <div nz-col nzMd="24" nzLg="24">
-        <!-- <button (click)="addContacts(null)" nz-button nzType="primary">{{ 'button.add' | translate }}</button> -->
-        <button (click)="addRowContacts()" nz-button nzType="primary">{{ 'button.add' | translate }}</button>
+        <button (click)="addRowContacts()" style="margin-bottom:10px;" nz-button nzType="primary">{{ 'button.add' | translate }}</button>
       </div>
     </div>
 
@@ -603,7 +601,6 @@
         >
           <thead>
             <tr>
-              <!-- <th style="width:150px;">{{ 'customer.code' | translate }}</th> -->
               <th style="width:150px;">{{ 'customer.contacts.name' | translate }}</th>
               <th style="width:150px;">{{ 'customer.contacts.telephone' | translate }}</th>
               <th style="width:150px;">{{ 'customer.contacts.mail' | translate }}</th>

+ 12 - 24
src/app/routes/basedata/material-file/add/add.component.html

@@ -6,15 +6,10 @@
       {{ 'material.classification' | translate }}{{ 'table.thead.code' | translate }}
     </nz-form-label>
     <nz-form-control [nzSm]="14" [nzXs]="24">
-      <input
-        [(ngModel)]="baseMaterialFileClassification.code"
-        formControlName="code"
-        id="code"
-        nz-input
-        placeholder="{{ 'placeholder' | translate }}{{ 'material.classification' | translate }}{{
-          'table.thead.code' | translate
-        }}"
-      />
+      <input [(ngModel)]="baseMaterialFileClassification.code" formControlName="code" id="code" nz-input />
+      <nz-form-explain *ngIf="validateForm.get('code')?.dirty && validateForm.get('code')?.errors">
+        {{ 'placeholder' | translate }}{{ 'material.classification' | translate }}{{ 'table.thead.code' | translate }}
+      </nz-form-explain>
     </nz-form-control>
   </nz-form-item>
 
@@ -24,12 +19,10 @@
       {{ 'material.classification.name' | translate }}
     </nz-form-label>
     <nz-form-control [nzSm]="14" [nzXs]="24">
-      <input
-        [(ngModel)]="baseMaterialFileClassification.name"
-        formControlName="name"
-        nz-input
-        placeholder="{{ 'placeholder' | translate }}{{ 'material.classification.name' | translate }}"
-      />
+      <input [(ngModel)]="baseMaterialFileClassification.name" formControlName="name" nz-input />
+      <nz-form-explain *ngIf="validateForm.get('name')?.dirty && validateForm.get('name')?.errors">
+        {{ 'placeholder' | translate }}{{ 'material.classification.name' | translate }}
+      </nz-form-explain>
     </nz-form-control>
   </nz-form-item>
 
@@ -39,15 +32,10 @@
       {{ 'material.classification' | translate }}{{ 'depart.sort' | translate }}
     </nz-form-label>
     <nz-form-control [nzSm]="14" [nzXs]="24">
-      <input
-        [(ngModel)]="baseMaterialFileClassification.sort"
-        formControlName="sort"
-        nz-input
-        placeholder="{{ 'placeholder' | translate }}{{ 'material.classification' | translate }}{{
-          'depart.sort' | translate
-        }}"
-        maxlength="100"
-      />
+      <input [(ngModel)]="baseMaterialFileClassification.sort" formControlName="sort" nz-input maxlength="100" />
+      <nz-form-explain *ngIf="validateForm.get('sort')?.dirty && validateForm.get('sort')?.errors">
+        {{ 'placeholder' | translate }}{{ 'depart.sort' | translate }}
+      </nz-form-explain>
     </nz-form-control>
   </nz-form-item>
 </form>

+ 33 - 11
src/app/routes/basedata/material-file/product-add/product-add.component.html

@@ -1,6 +1,6 @@
 <nz-spin [nzSpinning]="isLoading">
   <form nz-form [formGroup]="validateForm" (ngSubmit)="proSubForm()">
-    <!-- 产品编码  名称 -->
+    <!-- 产品编码 -->
     <nz-form-item>
       <nz-form-label nzRequired [nzSm]="3" [nzXs]="24">
         {{ 'product' | translate }}{{ 'table.thead.code' | translate }}
@@ -13,7 +13,11 @@
           placeholder="{{ 'placeholder' | translate }}"
           maxlength="10"
         />
+        <nz-form-explain *ngIf="validateForm.get('code')?.dirty && validateForm.get('code')?.errors">
+          {{ 'placeholder' | translate }}{{ 'product' | translate }}{{ 'table.thead.code' | translate }}
+        </nz-form-explain>
       </nz-form-control>
+      <!-- 名称 -->
       <nz-form-label nzRequired [nzSm]="3" [nzXs]="24">{{ 'Name' | translate }}</nz-form-label>
       <nz-form-control [nzSm]="8" [nzXs]="12">
         <input
@@ -23,6 +27,9 @@
           placeholder="{{ 'placeholder' | translate }}"
           maxlength="10"
         />
+        <nz-form-explain *ngIf="validateForm.get('code')?.dirty && validateForm.get('code')?.errors">
+          {{ 'placeholder' | translate }}{{ 'Name' | translate }}
+        </nz-form-explain>
       </nz-form-control>
     </nz-form-item>
 
@@ -37,11 +44,14 @@
           maxlength="100"
           placeholder="{{ 'placeholder' | translate }}"
         />
+        <nz-form-explain *ngIf="validateForm.get('sort')?.dirty && validateForm.get('sort')?.errors">
+          {{ 'placeholder' | translate }}{{ 'milestone.serial.number' | translate }}
+        </nz-form-explain>
       </nz-form-control>
 
       <!--  状态   0未启用    1启用  -->
       <nz-form-label nzRequired [nzSm]="3" [nzXs]="24">
-       {{'depart.Whether.to.enable' | translate}}
+        {{ 'depart.Whether.to.enable' | translate }}
       </nz-form-label>
 
       <nz-form-control [nzSm]="8" [nzXs]="12">
@@ -56,7 +66,7 @@
       </nz-form-control>
     </nz-form-item>
 
-    <!-- 产品属性 分类树 -->
+    <!-- 产品属性  -->
     <nz-form-item>
       <nz-form-label nzRequired [nzSm]="3" [nzXs]="24">{{ 'property' | translate }}</nz-form-label>
       <nz-form-control [nzSm]="8" [nzXs]="12">
@@ -72,8 +82,11 @@
           <nz-option nzLabel="{{ 'procurement' | translate }}" nzValue="1"></nz-option>
           <nz-option nzLabel="{{ 'sales' | translate }}" nzValue="2"></nz-option>
         </nz-select>
+        <nz-form-explain *ngIf="validateForm.get('attribute')?.dirty && validateForm.get('attribute')?.errors">
+          {{ 'select.please.choose' | translate }}{{ 'product' | translate }}{{ 'property' | translate }}
+        </nz-form-explain>
       </nz-form-control>
-
+      <!-- 分类 -->
       <nz-form-label [nzSm]="3" [nzXs]="24" nzNoColon="true" nzRequired>
         {{ 'cost.item.category' | translate }}
       </nz-form-label>
@@ -89,6 +102,14 @@
           (ngModelChange)="materialChange($event)"
         >
         </nz-tree-select>
+        <nz-form-explain
+          *ngIf="
+            validateForm.get('baseMaterialFileClassificationId')?.dirty &&
+            validateForm.get('baseMaterialFileClassificationId')?.errors
+          "
+        >
+          {{ 'select.please.choose' | translate }}{{ 'product' | translate }}{{ 'cost.item.category' | translate }}
+        </nz-form-explain>
       </nz-form-control>
     </nz-form-item>
   </form>
@@ -102,7 +123,9 @@
     <!-- 按钮 -->
     <div nz-row nzGutter="24" style="margin-bottom:6px;">
       <div nz-col nzMd="24" nzLg="24">
-        <button (click)="addRowMod()" nz-button nzType="primary">{{ 'button.add' | translate }}</button>
+        <button (click)="addRowMod()" style="margin-bottom:10px;" nz-button nzType="primary">
+          {{ 'button.add' | translate }}
+        </button>
       </div>
     </div>
 
@@ -112,10 +135,10 @@
         <nz-table nzSize="small" #basicTable [nzData]="modData" [nzFrontPagination]="false" [nzShowPagination]="false">
           <thead>
             <tr>
-              <th style="width:150px;" nzAlign="center">{{ 'module.code' | translate }}</th>
-              <th style="width:150px;" nzAlign="center">{{ 'module.name' | translate }}</th>
-              <th style="width:150px;" nzAlign="center">{{ 'standard.quotation' | translate }}</th>
-              <th style="width:150px;" nzAlign="center">{{ 'table.operation' | translate }}</th>
+              <th style="width:150px;">{{ 'module.code' | translate }}</th>
+              <th style="width:150px;">{{ 'module.name' | translate }}</th>
+              <th style="width:150px;">{{ 'standard.quotation' | translate }}</th>
+              <th style="width:150px;">{{ 'table.operation' | translate }}</th>
             </tr>
           </thead>
 
@@ -131,7 +154,6 @@
               </td>
               <!-- 标准报价 -->
               <td>
-                <!-- 金额格式 -->
                 <nz-input-number
                   [(ngModel)]="data.standardQuotation"
                   [nzMin]="0"
@@ -141,7 +163,7 @@
                   [nzStep]="10"
                 ></nz-input-number>
               </td>
-              <td nzAlign="center">
+              <td>
                 <a
                   nz-popconfirm
                   nzTitle="{{ 'confirm.to.delete' | translate }}?"

+ 15 - 0
src/app/routes/basedata/material-file/product-add/product-add.component.ts

@@ -16,6 +16,21 @@ import { BaseMaterialFileModular } from 'app/entity/basedata/base-material-file-
 @Component({
   selector: 'app-basedata-material-file-product-add',
   templateUrl: './product-add.component.html',
+  styles: [
+    `
+      .footer {
+        position: absolute;
+        bottom: 0px;
+        width: 100%;
+        border-top: 1px solid rgb(232, 232, 232);
+        padding: 10px 16px;
+        text-align: right;
+        left: 0px;
+        background: #fff;
+        z-index: 99;
+      }
+    `,
+  ],
 })
 export class BasedataMaterialFileProductAddComponent implements OnInit {
   // 如果想某对象中的值是死数据,在 ngOnInit 中赋值,此处赋值无效!!!!!!!!

+ 17 - 8
src/app/routes/basedata/milestone-category/milestone-category.component.html

@@ -1,16 +1,25 @@
 <page-header [action]="phActionTpl">
   <ng-template #phActionTpl>
-    <button (click)="add()" nz-button nzType="primary">新建</button>
+    <!-- 新建 -->
+    <button (click)="add()" nz-button nzType="primary">{{ 'new' | translate }}</button>
   </ng-template>
 </page-header>
 <nz-card>
-  <nz-table nzSize="small" #basicTable [nzData]="listOfData" [nzFrontPagination]="false" [nzLoading]="isSpinning"
-  [nzTotal]="page.total" [nzPageIndex]="page.current" (nzPageIndexChange)="pageIndexChange($event)">
+  <nz-table
+    nzSize="small"
+    #basicTable
+    [nzData]="listOfData"
+    [nzFrontPagination]="false"
+    [nzLoading]="isSpinning"
+    [nzTotal]="page.total"
+    [nzPageIndex]="page.current"
+    (nzPageIndexChange)="pageIndexChange($event)"
+  >
     <thead>
       <tr>
-        <th nzAlign="center">{{'contract.name'|translate}}</th>
-        <th nzAlign="center">{{'data.value'|translate}}</th>
-        <th nzAlign="center" style="width: 21%">{{'table.operation'|translate}}</th>
+        <th nzAlign="center">{{ 'contract.name' | translate }}</th>
+        <th nzAlign="center">{{ 'data.value' | translate }}</th>
+        <th nzAlign="center" style="width: 21%">{{ 'table.operation' | translate }}</th>
       </tr>
     </thead>
     <tbody>
@@ -18,9 +27,9 @@
         <td nzAlign="center">{{ data.itemText }}</td>
         <td nzAlign="center">{{ data.itemValue }}</td>
         <td nzAlign="center">
-          <a href="javascript:void(0);" (click)="edit(data)">{{'table.update'|translate}}</a>
+          <a href="javascript:void(0);" (click)="edit(data)">{{ 'table.update' | translate }}</a>
           <nz-divider nzType="vertical"></nz-divider>
-          <a href="javascript:void(0);" (click)="delete(data.id)">{{'table.delete'|translate}}</a>
+          <a href="javascript:void(0);" (click)="delete(data.id)">{{ 'table.delete' | translate }}</a>
         </td>
       </tr>
     </tbody>

+ 26 - 14
src/app/routes/contract-management/contract-file/add/add.component.html

@@ -1,16 +1,23 @@
 <nz-spin [nzSpinning]="isLoadingSave">
   <nz-tabset nzTabPosition="left">
-    <nz-tab nzTitle="合同基本信息">
-      <app-contract-management-contract-file-add-essential-information #essentialInformation
-        (milestone)="milestone($event)"></app-contract-management-contract-file-add-essential-information>
+    <!-- 合同基本信息 -->
+    <nz-tab nzTitle="{{ 'project.file.upload.contract' | translate }}{{ 'essential.information' | translate }}">
+      <app-contract-management-contract-file-add-essential-information
+        #essentialInformation
+        (milestone)="milestone($event)"
+      ></app-contract-management-contract-file-add-essential-information>
     </nz-tab>
-    <nz-tab nzTitle="产品与模块">
-      <app-contract-management-contract-file-add-product-module #productModule
-        (contractFileObject)="contractFileObject($event)"></app-contract-management-contract-file-add-product-module>
+
+    <!-- 产品与模块 -->
+    <nz-tab nzTitle="{{ 'product' | translate }}{{ 'and' | translate }}{{ 'module' | translate }}">
+      <app-contract-management-contract-file-add-product-module
+        #productModule
+        (contractFileObject)="contractFileObject($event)"
+      ></app-contract-management-contract-file-add-product-module>
     </nz-tab>
-    <nz-tab nzTitle="收款计划">
+    <!-- 收款计划 -->
+    <nz-tab nzTitle="{{ 'payment.plan' | translate }}">
       <app-contract-management-contract-file-add-collection-plan #collectionPlan>
-
       </app-contract-management-contract-file-add-collection-plan>
     </nz-tab>
   </nz-tabset>
@@ -18,11 +25,16 @@
 <!-- 按钮 -->
 <div class="base">
   <!-- 关闭按钮 -->
-  <a nz-popconfirm nzTitle="{{'pm.contract.contract.add.button.cancel'|translate}}" (nzOnConfirm)="close()"
-    style="padding-right: 8px">
-    <button nz-button>{{'pm.quotation.cancel'|translate}}</button>
+  <a
+    nz-popconfirm
+    nzTitle="{{ 'pm.contract.contract.add.button.cancel' | translate }}"
+    (nzOnConfirm)="close()"
+    style="padding-right: 8px"
+  >
+    <button nz-button>{{ 'pm.quotation.cancel' | translate }}</button>
   </a>
   <!-- 保存按钮 -->
-  <button nz-button nzType="primary" class="ant-btn ant-btn-primary" (click)="save()"
-    [nzLoading]="isLoadingSave"><span>{{'pm.finish' | translate}}</span></button>
-</div>
+  <button nz-button nzType="primary" class="ant-btn ant-btn-primary" (click)="save()" [nzLoading]="isLoadingSave">
+    <span>{{ 'pm.finish' | translate }}</span>
+  </button>
+</div>

+ 389 - 196
src/app/routes/contract-management/contract-file/add/collection-plan/collection-plan.component.html

@@ -1,16 +1,24 @@
 <!-- 收款计划 -->
-<nz-card nzTitle="收款计划" nzSize="small">
-    <div nz-row [nzGutter]="24">
-      <div nz-col [nzSpan]="24">
-        <!-- 新增按钮 -->
-        <button (click)="collectionPlanAdd()" nz-button nzType="primary">{{ 'button.add' | translate }}</button>
-      </div>
+<nz-card nzTitle="{{ 'payment.plan' | translate }}" nzSize="small">
+  <div nz-row [nzGutter]="24">
+    <div nz-col [nzSpan]="24">
+      <!-- 新增按钮 -->
+      <button (click)="collectionPlanAdd()" nz-button nzType="primary">{{ 'button.add' | translate }}</button>
     </div>
-    <div nz-row [nzGutter]="24">
-      <div nz-col [nzSpan]="24">
-        <nz-table style="padding-top: 5px;" nzSize="small" class="tableTdPadding" #basicTable
-          [nzData]="collectionPlanList" [nzFrontPagination]="false" [nzShowPagination]="false" [nzScroll]="{x:'123vw'}">
-          <!-- <thead>
+  </div>
+  <div nz-row [nzGutter]="24">
+    <div nz-col [nzSpan]="24">
+      <nz-table
+        style="padding-top: 5px;"
+        nzSize="small"
+        class="tableTdPadding"
+        #basicTable
+        [nzData]="collectionPlanList"
+        [nzFrontPagination]="false"
+        [nzShowPagination]="false"
+        [nzScroll]="{ x: '123vw' }"
+      >
+        <!-- <thead>
             <tr>
               <th>{{ 'customer.contacts.name' | translate }}</th>
               <th>{{ 'customer.contacts.telephone' | translate }}</th>
@@ -20,108 +28,203 @@
               <th>{{ 'table.operation' | translate }}</th>
             </tr>
           </thead> -->
-          <tbody>
-            <tr *ngFor="let data of basicTable.data">
-              <td style="width: 7%;">
-                <nz-select style="width: 100%;" nzShowSearch nzAllowClear [(ngModel)]="data.planId" nzPlaceHolder="请选择"
-                  [nzDropdownMatchSelectWidth]="false" (ngModelChange)="planIdChange(data,'1')">
-                  <nz-option *ngFor="let i of planList" [nzValue]="i.id" [nzLabel]="i.name"></nz-option>
-                </nz-select>
-              </td>
-              <td style="width: 4%;">第一笔</td>
-              <td style="width: 4%;">
-                <nz-input-number [(ngModel)]="data.price1" [nzMin]="0" [nzStep]="1" [nzFormatter]="formatterDollar"
-                  [nzParser]="parserDollar" [nzMax]=1000000000 (nzBlur)="priceBlur()"></nz-input-number>
-              </td>
-              <td style="width: 5%;">
-                <nz-select style="width: 100%;" nzShowSearch nzAllowClear [(ngModel)]="data.mileId1" nzPlaceHolder="请选择"
-                  [nzDropdownMatchSelectWidth]="false" (ngModelChange)="mileIdChange(data)">
-                  <nz-option *ngFor="let i of milestoneList" [nzValue]="i.id" [nzLabel]="i.name"></nz-option>
-                </nz-select>
-              </td>
-              <td style="width: 5%;">
-                <input [(ngModel)]="data.desc1" nz-input maxlength=140 (blur)="descChange()"/>
-              </td>
-              <td style="width: 4%;">第二笔</td>
-              <td style="width: 4%;">
-                <nz-input-number [(ngModel)]="data.price2" [nzMin]="0" [nzStep]="1" [nzFormatter]="formatterDollar"
-                  [nzParser]="parserDollar" [nzMax]=1000000000 (nzBlur)="priceBlur()"></nz-input-number>
-              </td>
-              <td style="width: 5%;">
-                <nz-select style="width: 100%;" nzShowSearch nzAllowClear [(ngModel)]="data.mileId2" nzPlaceHolder="请选择"
-                  [nzDropdownMatchSelectWidth]="false" (ngModelChange)="mileIdChange(data)">
-                  <nz-option *ngFor="let i of milestoneList" [nzValue]="i.id" [nzLabel]="i.name"></nz-option>
-                </nz-select>
-              </td>
-              <td style="width: 5%;">
-                <input [(ngModel)]="data.desc2" nz-input maxlength=140 (blur)="descChange()"/>
-              </td>
-              <td style="width: 4%;">第三笔</td>
-              <td style="width: 4%;">
-                <nz-input-number [(ngModel)]="data.price3" [nzMin]="0" [nzStep]="1" [nzFormatter]="formatterDollar"
-                  [nzParser]="parserDollar" [nzMax]=1000000000 (nzBlur)="priceBlur()"></nz-input-number>
-              </td>
-              <td style="width: 5%;">
-                <nz-select style="width: 100%;" nzShowSearch nzAllowClear [(ngModel)]="data.mileId3" nzPlaceHolder="请选择"
-                  [nzDropdownMatchSelectWidth]="false" (ngModelChange)="mileIdChange(data)">
-                  <nz-option *ngFor="let i of milestoneList" [nzValue]="i.id" [nzLabel]="i.name"></nz-option>
-                </nz-select>
-              </td>
-              <td style="width: 5%;">
-                <input [(ngModel)]="data.desc3" nz-input maxlength=140 (blur)="descChange()"/>
-              </td>
-              <td style="width: 4%;">第四笔</td>
-              <td style="width: 4%;">
-                <nz-input-number [(ngModel)]="data.price4" [nzMin]="0" [nzStep]="1" [nzFormatter]="formatterDollar"
-                  [nzParser]="parserDollar" [nzMax]=1000000000 (nzBlur)="priceBlur()"></nz-input-number>
-              </td>
-              <td style="width: 5%;">
-                <nz-select style="width: 100%;" nzShowSearch nzAllowClear [(ngModel)]="data.mileId4" nzPlaceHolder="请选择"
-                  [nzDropdownMatchSelectWidth]="false" (ngModelChange)="mileIdChange(data)">
-                  <nz-option *ngFor="let i of milestoneList" [nzValue]="i.id" [nzLabel]="i.name"></nz-option>
-                </nz-select>
-              </td>
-              <td style="width: 5%;">
-                <input [(ngModel)]="data.desc4" nz-input maxlength=140 (blur)="descChange()"/>
-              </td>
-              <td style="width: 4%;">第五笔</td>
-              <td style="width: 4%;">
-                <nz-input-number [(ngModel)]="data.price5" [nzMin]="0" [nzStep]="1" [nzFormatter]="formatterDollar"
-                  [nzParser]="parserDollar" [nzMax]=1000000000 (nzBlur)="priceBlur()"></nz-input-number>
-              </td>
-              <td style="width: 5%;">
-                <nz-select style="width: 100%;" nzShowSearch nzAllowClear [(ngModel)]="data.mileId5" nzPlaceHolder="请选择"
-                  [nzDropdownMatchSelectWidth]="false" (ngModelChange)="mileIdChange(data)">
-                  <nz-option *ngFor="let i of milestoneList" [nzValue]="i.id" [nzLabel]="i.name"></nz-option>
-                </nz-select>
-              </td>
-              <td style="width: 5%;">
-                <input [(ngModel)]="data.desc5" nz-input maxlength=140 (blur)="descChange()"/>
-              </td>
-              <td nzRight="0"><a nz-popconfirm nzTitle="是否删除?"
-                  (nzOnConfirm)="collectionPlanDelete(data.sort)">{{'table.delete'|translate}}</a></td>
-            </tr>
-          </tbody>
-        </nz-table>
-      </div>
+        <tbody>
+          <tr *ngFor="let data of basicTable.data">
+            <td style="width: 7%;">
+              <nz-select
+                style="width: 100%;"
+                nzShowSearch
+                nzAllowClear
+                [(ngModel)]="data.planId"
+                nzPlaceHolder="{{ 'select.please.choose' | translate }}"
+                [nzDropdownMatchSelectWidth]="false"
+                (ngModelChange)="planIdChange(data, '1')"
+              >
+                <nz-option *ngFor="let i of planList" [nzValue]="i.id" [nzLabel]="i.name"></nz-option>
+              </nz-select>
+            </td>
+            <!-- 第一笔 -->
+            <td style="width: 4%;">{{ 'the.first' | translate }}</td>
+            <td style="width: 4%;">
+              <nz-input-number
+                [(ngModel)]="data.price1"
+                [nzMin]="0"
+                [nzStep]="1"
+                [nzFormatter]="formatterDollar"
+                [nzParser]="parserDollar"
+                [nzMax]="1000000000"
+                (nzBlur)="priceBlur()"
+              ></nz-input-number>
+            </td>
+            <td style="width: 5%;">
+              <nz-select
+                style="width: 100%;"
+                nzShowSearch
+                nzAllowClear
+                [(ngModel)]="data.mileId1"
+                nzPlaceHolder="{{ 'select.please.choose' | translate }}"
+                [nzDropdownMatchSelectWidth]="false"
+                (ngModelChange)="mileIdChange(data)"
+              >
+                <nz-option *ngFor="let i of milestoneList" [nzValue]="i.id" [nzLabel]="i.name"></nz-option>
+              </nz-select>
+            </td>
+            <td style="width: 5%;">
+              <input [(ngModel)]="data.desc1" nz-input maxlength="140" (blur)="descChange()" />
+            </td>
+            <!-- 第二笔 -->
+            <td style="width: 4%;">{{ 'the.second' | translate }}</td>
+            <td style="width: 4%;">
+              <nz-input-number
+                [(ngModel)]="data.price2"
+                [nzMin]="0"
+                [nzStep]="1"
+                [nzFormatter]="formatterDollar"
+                [nzParser]="parserDollar"
+                [nzMax]="1000000000"
+                (nzBlur)="priceBlur()"
+              ></nz-input-number>
+            </td>
+            <td style="width: 5%;">
+              <nz-select
+                style="width: 100%;"
+                nzShowSearch
+                nzAllowClear
+                [(ngModel)]="data.mileId2"
+                nzPlaceHolder="{{ 'select.please.choose' | translate }}"
+                [nzDropdownMatchSelectWidth]="false"
+                (ngModelChange)="mileIdChange(data)"
+              >
+                <nz-option *ngFor="let i of milestoneList" [nzValue]="i.id" [nzLabel]="i.name"></nz-option>
+              </nz-select>
+            </td>
+            <td style="width: 5%;">
+              <input [(ngModel)]="data.desc2" nz-input maxlength="140" (blur)="descChange()" />
+            </td>
+            <!-- 第三笔 -->
+            <td style="width: 4%;">{{ 'the.third' | translate }}</td>
+            <td style="width: 4%;">
+              <nz-input-number
+                [(ngModel)]="data.price3"
+                [nzMin]="0"
+                [nzStep]="1"
+                [nzFormatter]="formatterDollar"
+                [nzParser]="parserDollar"
+                [nzMax]="1000000000"
+                (nzBlur)="priceBlur()"
+              ></nz-input-number>
+            </td>
+            <td style="width: 5%;">
+              <nz-select
+                style="width: 100%;"
+                nzShowSearch
+                nzAllowClear
+                [(ngModel)]="data.mileId3"
+                nzPlaceHolder="{{ 'select.please.choose' | translate }}"
+                [nzDropdownMatchSelectWidth]="false"
+                (ngModelChange)="mileIdChange(data)"
+              >
+                <nz-option *ngFor="let i of milestoneList" [nzValue]="i.id" [nzLabel]="i.name"></nz-option>
+              </nz-select>
+            </td>
+            <td style="width: 5%;">
+              <input [(ngModel)]="data.desc3" nz-input maxlength="140" (blur)="descChange()" />
+            </td>
+            <!-- 第四笔 -->
+            <td style="width: 4%;">{{ 'the.fourth' | translate }}</td>
+            <td style="width: 4%;">
+              <nz-input-number
+                [(ngModel)]="data.price4"
+                [nzMin]="0"
+                [nzStep]="1"
+                [nzFormatter]="formatterDollar"
+                [nzParser]="parserDollar"
+                [nzMax]="1000000000"
+                (nzBlur)="priceBlur()"
+              ></nz-input-number>
+            </td>
+            <td style="width: 5%;">
+              <nz-select
+                style="width: 100%;"
+                nzShowSearch
+                nzAllowClear
+                [(ngModel)]="data.mileId4"
+                nzPlaceHolder="{{ 'select.please.choose' | translate }}"
+                [nzDropdownMatchSelectWidth]="false"
+                (ngModelChange)="mileIdChange(data)"
+              >
+                <nz-option *ngFor="let i of milestoneList" [nzValue]="i.id" [nzLabel]="i.name"></nz-option>
+              </nz-select>
+            </td>
+            <td style="width: 5%;">
+              <input [(ngModel)]="data.desc4" nz-input maxlength="140" (blur)="descChange()" />
+            </td>
+            <!-- 第五笔 -->
+            <td style="width: 4%;">{{ 'the.fifth' | translate }}</td>
+            <td style="width: 4%;">
+              <nz-input-number
+                [(ngModel)]="data.price5"
+                [nzMin]="0"
+                [nzStep]="1"
+                [nzFormatter]="formatterDollar"
+                [nzParser]="parserDollar"
+                [nzMax]="1000000000"
+                (nzBlur)="priceBlur()"
+              ></nz-input-number>
+            </td>
+            <td style="width: 5%;">
+              <nz-select
+                style="width: 100%;"
+                nzShowSearch
+                nzAllowClear
+                [(ngModel)]="data.mileId5"
+                nzPlaceHolder="{{ 'select.please.choose' | translate }}"
+                [nzDropdownMatchSelectWidth]="false"
+                (ngModelChange)="mileIdChange(data)"
+              >
+                <nz-option *ngFor="let i of milestoneList" [nzValue]="i.id" [nzLabel]="i.name"></nz-option>
+              </nz-select>
+            </td>
+            <td style="width: 5%;">
+              <input [(ngModel)]="data.desc5" nz-input maxlength="140" (blur)="descChange()" />
+            </td>
+            <td nzRight="0">
+              <a
+                nz-popconfirm
+                nzTitle="{{ 'table.Whether.to.delete' | translate }}?"
+                (nzOnConfirm)="collectionPlanDelete(data.sort)"
+              >
+                {{ 'table.delete' | translate }}</a
+              >
+            </td>
+          </tr>
+        </tbody>
+      </nz-table>
     </div>
-  </nz-card>
-  
-  
-  <!-- 回款情况 -->
-  <nz-card nzTitle="回款情况" nzSize="small">
-    <div nz-row [nzGutter]="24">
-      <div nz-col [nzSpan]="24">
-        <!-- 新增按钮 -->
-        <!-- <button (click)="paymentCollectionAdd()" nz-button nzType="primary">{{ 'button.add' | translate }}</button> -->
-      </div>
+  </div>
+</nz-card>
+
+<!-- 回款情况 -->
+<nz-card nzTitle="{{ 'receivable.situation' | translate }}" nzSize="small">
+  <div nz-row [nzGutter]="24">
+    <div nz-col [nzSpan]="24">
+      <!-- 新增按钮 -->
+      <!-- <button (click)="paymentCollectionAdd()" nz-button nzType="primary">{{ 'button.add' | translate }}</button> -->
     </div>
-    <div nz-row [nzGutter]="24">
-      <div nz-col [nzSpan]="24">
-        <nz-table style="padding-top: 5px;" nzSize="small" class="tableTdPadding" #basicTable2
-          [nzData]="paymentCollectionList" [nzFrontPagination]="false" [nzShowPagination]="false"
-          [nzScroll]="{x:'123vw'}">
-          <!-- <thead>
+  </div>
+  <div nz-row [nzGutter]="24">
+    <div nz-col [nzSpan]="24">
+      <nz-table
+        style="padding-top: 5px;"
+        nzSize="small"
+        class="tableTdPadding"
+        #basicTable2
+        [nzData]="paymentCollectionList"
+        [nzFrontPagination]="false"
+        [nzShowPagination]="false"
+        [nzScroll]="{ x: '123vw' }"
+      >
+        <!-- <thead>
             <tr>
               <th>{{ 'customer.contacts.name' | translate }}</th>
               <th>{{ 'customer.contacts.telephone' | translate }}</th>
@@ -131,89 +234,179 @@
               <th>{{ 'table.operation' | translate }}</th>
             </tr>
           </thead> -->
-          <tbody>
-            <tr *ngFor="let data of basicTable2.data">
-              <td style="width: 7%;">
-                <nz-select style="width: 100%;" nzShowSearch nzAllowClear [(ngModel)]="data.planId" nzPlaceHolder="请选择"
-                  [nzDropdownMatchSelectWidth]="false" (ngModelChange)="planIdChange(data,'2')" nzDisabled>
-                  <nz-option *ngFor="let i of planList" [nzValue]="i.id" [nzLabel]="i.name"></nz-option>
-                </nz-select>
-              </td>
-              <td style="width: 4%;">第一笔</td>
-              <td style="width: 4%;">
-                <nz-input-number [(ngModel)]="data.price1" [nzMin]="0" [nzStep]="1" [nzFormatter]="formatterDollar"
-                  [nzParser]="parserDollar"  [nzMax]=1000000000 [disabled]="true"></nz-input-number>
-              </td>
-              <td style="width: 5%;">
-                <nz-select style="width: 100%;" nzShowSearch nzAllowClear [(ngModel)]="data.mileId1" nzPlaceHolder="请选择"
-                  [nzDropdownMatchSelectWidth]="false" (ngModelChange)="mileChange(data)" nzDisabled>
-                  <nz-option *ngFor="let i of milestoneList" [nzValue]="i.id" [nzLabel]="i.name"></nz-option>
-                </nz-select>
-              </td>
-              <td style="width: 5%;">
-                <input [(ngModel)]="data.desc1" nz-input maxlength=140 [disabled]="true"/>
-              </td>
-              <td style="width: 4%;">第二笔</td>
-              <td style="width: 4%;">
-                <nz-input-number [(ngModel)]="data.price2" [nzMin]="0" [nzStep]="1" [nzFormatter]="formatterDollar"
-                  [nzParser]="parserDollar" [nzMax]=1000000000 [disabled]="true"></nz-input-number>
-              </td>
-              <td style="width: 5%;">
-                <nz-select style="width: 100%;" nzShowSearch nzAllowClear [(ngModel)]="data.mileId2" nzPlaceHolder="请选择"
-                  [nzDropdownMatchSelectWidth]="false" (ngModelChange)="mileChange(data)" nzDisabled>
-                  <nz-option *ngFor="let i of milestoneList" [nzValue]="i.id" [nzLabel]="i.name"></nz-option>
-                </nz-select>
-              </td>
-              <td style="width: 5%;">
-                <input [(ngModel)]="data.desc2" nz-input maxlength=140 [disabled]="true"/>
-              </td>
-              <td style="width: 4%;">第三笔</td>
-              <td style="width: 4%;">
-                <nz-input-number [(ngModel)]="data.price3" [nzMin]="0" [nzStep]="1" [nzFormatter]="formatterDollar"
-                  [nzParser]="parserDollar" [nzMax]=1000000000 [disabled]="true"></nz-input-number>
-              </td>
-              <td style="width: 5%;">
-                <nz-select style="width: 100%;" nzShowSearch nzAllowClear [(ngModel)]="data.mileId3" nzPlaceHolder="请选择"
-                  [nzDropdownMatchSelectWidth]="false" (ngModelChange)="mileChange(data)" nzDisabled>
-                  <nz-option *ngFor="let i of milestoneList" [nzValue]="i.id" [nzLabel]="i.name"></nz-option>
-                </nz-select>
-              </td>
-              <td style="width: 5%;">
-                <input [(ngModel)]="data.desc3" nz-input maxlength=140 [disabled]="true"/>
-              </td>
-              <td style="width: 4%;">第四笔</td>
-              <td style="width: 4%;">
-                <nz-input-number [(ngModel)]="data.price4" [nzMin]="0" [nzStep]="1" [nzFormatter]="formatterDollar"
-                  [nzParser]="parserDollar" [nzMax]=1000000000 [disabled]="true"></nz-input-number>
-              </td>
-              <td style="width: 5%;">
-                <nz-select style="width: 100%;" nzShowSearch nzAllowClear [(ngModel)]="data.mileId4" nzPlaceHolder="请选择"
-                  [nzDropdownMatchSelectWidth]="false" (ngModelChange)="mileChange(data)" nzDisabled>
-                  <nz-option *ngFor="let i of milestoneList" [nzValue]="i.id" [nzLabel]="i.name"></nz-option>
-                </nz-select>
-              </td>
-              <td style="width: 5%;">
-                <input [(ngModel)]="data.desc4" nz-input maxlength=140 [disabled]="true"/>
-              </td>
-              <td style="width: 4%;">第五笔</td>
-              <td style="width: 4%;">
-                <nz-input-number [(ngModel)]="data.price5" [nzMin]="0" [nzStep]="1" [nzFormatter]="formatterDollar"
-                  [nzParser]="parserDollar" [nzMax]=1000000000 [disabled]="true"></nz-input-number>
-              </td>
-              <td style="width: 5%;">
-                <nz-select style="width: 100%;" nzShowSearch nzAllowClear [(ngModel)]="data.mileId5" nzPlaceHolder="请选择"
-                  [nzDropdownMatchSelectWidth]="false" (ngModelChange)="mileChange(data)" nzDisabled>
-                  <nz-option *ngFor="let i of milestoneList" [nzValue]="i.id" [nzLabel]="i.name"></nz-option>
-                </nz-select>
-              </td>
-              <td style="width: 5%;">
-                <input [(ngModel)]="data.desc5" nz-input maxlength=140 [disabled]="true"/>
-              </td>
-              <td nzRight="0"><a nz-popconfirm nzTitle="是否删除?"
-                (nzOnConfirm)="paymentCollectionDelete(data.sort)">{{'table.delete'|translate}}</a></td>
-            </tr>
-          </tbody>
-        </nz-table>
-      </div>
+        <tbody>
+          <tr *ngFor="let data of basicTable2.data">
+            <td style="width: 7%;">
+              <nz-select
+                style="width: 100%;"
+                nzShowSearch
+                nzAllowClear
+                [(ngModel)]="data.planId"
+                nzPlaceHolder="{{ 'select.please.choose' | translate }}"
+                [nzDropdownMatchSelectWidth]="false"
+                (ngModelChange)="planIdChange(data, '2')"
+                nzDisabled
+              >
+                <nz-option *ngFor="let i of planList" [nzValue]="i.id" [nzLabel]="i.name"></nz-option>
+              </nz-select>
+            </td>
+            <td style="width: 4%;">{{ 'the.first' | translate }}</td>
+            <td style="width: 4%;">
+              <nz-input-number
+                [(ngModel)]="data.price1"
+                [nzMin]="0"
+                [nzStep]="1"
+                [nzFormatter]="formatterDollar"
+                [nzParser]="parserDollar"
+                [nzMax]="1000000000"
+                [disabled]="true"
+              ></nz-input-number>
+            </td>
+            <td style="width: 5%;">
+              <nz-select
+                style="width: 100%;"
+                nzShowSearch
+                nzAllowClear
+                [(ngModel)]="data.mileId1"
+                nzPlaceHolder="{{ 'select.please.choose' | translate }}"
+                [nzDropdownMatchSelectWidth]="false"
+                (ngModelChange)="mileChange(data)"
+                nzDisabled
+              >
+                <nz-option *ngFor="let i of milestoneList" [nzValue]="i.id" [nzLabel]="i.name"></nz-option>
+              </nz-select>
+            </td>
+            <td style="width: 5%;">
+              <input [(ngModel)]="data.desc1" nz-input maxlength="140" [disabled]="true" />
+            </td>
+            <td style="width: 4%;">{{ 'the.second' | translate }}</td>
+            <td style="width: 4%;">
+              <nz-input-number
+                [(ngModel)]="data.price2"
+                [nzMin]="0"
+                [nzStep]="1"
+                [nzFormatter]="formatterDollar"
+                [nzParser]="parserDollar"
+                [nzMax]="1000000000"
+                [disabled]="true"
+              ></nz-input-number>
+            </td>
+            <td style="width: 5%;">
+              <nz-select
+                style="width: 100%;"
+                nzShowSearch
+                nzAllowClear
+                [(ngModel)]="data.mileId2"
+                nzPlaceHolder="{{ 'select.please.choose' | translate }}"
+                [nzDropdownMatchSelectWidth]="false"
+                (ngModelChange)="mileChange(data)"
+                nzDisabled
+              >
+                <nz-option *ngFor="let i of milestoneList" [nzValue]="i.id" [nzLabel]="i.name"></nz-option>
+              </nz-select>
+            </td>
+            <td style="width: 5%;">
+              <input [(ngModel)]="data.desc2" nz-input maxlength="140" [disabled]="true" />
+            </td>
+            <td style="width: 4%;">{{ 'the.third' | translate }}</td>
+            <td style="width: 4%;">
+              <nz-input-number
+                [(ngModel)]="data.price3"
+                [nzMin]="0"
+                [nzStep]="1"
+                [nzFormatter]="formatterDollar"
+                [nzParser]="parserDollar"
+                [nzMax]="1000000000"
+                [disabled]="true"
+              ></nz-input-number>
+            </td>
+            <td style="width: 5%;">
+              <nz-select
+                style="width: 100%;"
+                nzShowSearch
+                nzAllowClear
+                [(ngModel)]="data.mileId3"
+                nzPlaceHolder="{{ 'select.please.choose' | translate }}"
+                [nzDropdownMatchSelectWidth]="false"
+                (ngModelChange)="mileChange(data)"
+                nzDisabled
+              >
+                <nz-option *ngFor="let i of milestoneList" [nzValue]="i.id" [nzLabel]="i.name"></nz-option>
+              </nz-select>
+            </td>
+            <td style="width: 5%;">
+              <input [(ngModel)]="data.desc3" nz-input maxlength="140" [disabled]="true" />
+            </td>
+            <td style="width: 4%;">{{ 'the.fourth' | translate }}</td>
+            <td style="width: 4%;">
+              <nz-input-number
+                [(ngModel)]="data.price4"
+                [nzMin]="0"
+                [nzStep]="1"
+                [nzFormatter]="formatterDollar"
+                [nzParser]="parserDollar"
+                [nzMax]="1000000000"
+                [disabled]="true"
+              ></nz-input-number>
+            </td>
+            <td style="width: 5%;">
+              <nz-select
+                style="width: 100%;"
+                nzShowSearch
+                nzAllowClear
+                [(ngModel)]="data.mileId4"
+                nzPlaceHolder="{{ 'select.please.choose' | translate }}"
+                [nzDropdownMatchSelectWidth]="false"
+                (ngModelChange)="mileChange(data)"
+                nzDisabled
+              >
+                <nz-option *ngFor="let i of milestoneList" [nzValue]="i.id" [nzLabel]="i.name"></nz-option>
+              </nz-select>
+            </td>
+            <td style="width: 5%;">
+              <input [(ngModel)]="data.desc4" nz-input maxlength="140" [disabled]="true" />
+            </td>
+            <td style="width: 4%;">{{ 'the.fifth' | translate }}</td>
+            <td style="width: 4%;">
+              <nz-input-number
+                [(ngModel)]="data.price5"
+                [nzMin]="0"
+                [nzStep]="1"
+                [nzFormatter]="formatterDollar"
+                [nzParser]="parserDollar"
+                [nzMax]="1000000000"
+                [disabled]="true"
+              ></nz-input-number>
+            </td>
+            <td style="width: 5%;">
+              <nz-select
+                style="width: 100%;"
+                nzShowSearch
+                nzAllowClear
+                [(ngModel)]="data.mileId5"
+                nzPlaceHolder="{{ 'select.please.choose' | translate }}"
+                [nzDropdownMatchSelectWidth]="false"
+                (ngModelChange)="mileChange(data)"
+                nzDisabled
+              >
+                <nz-option *ngFor="let i of milestoneList" [nzValue]="i.id" [nzLabel]="i.name"></nz-option>
+              </nz-select>
+            </td>
+            <td style="width: 5%;">
+              <input [(ngModel)]="data.desc5" nz-input maxlength="140" [disabled]="true" />
+            </td>
+            <td nzRight="0">
+              <a
+                nz-popconfirm
+                nzTitle="{{ 'table.Whether.to.delete' | translate }}?"
+                (nzOnConfirm)="paymentCollectionDelete(data.sort)"
+              >
+                {{ 'table.delete' | translate }}
+              </a>
+            </td>
+          </tr>
+        </tbody>
+      </nz-table>
     </div>
-  </nz-card>
+  </div>
+</nz-card>

+ 47 - 21
src/app/routes/contract-management/contract-file/contract-file.component.html

@@ -1,15 +1,19 @@
 <page-header [action]="phActionTpl">
   <ng-template #phActionTpl>
-    <button (click)="add()" nz-button nzType="primary">新建</button>
+    <!-- 新建 -->
+    <button (click)="add()" nz-button nzType="primary">{{ 'new' | translate }}</button>
   </ng-template>
 </page-header>
 <nz-card>
-   <!-- 查询条件 -->
-   <form nz-form>
+  <!-- 查询条件 -->
+  <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-label [nzSm]="6" [nzXs]="24">
+            {{ 'project.file.upload.contract' | translate }}{{ 'contract.code' | translate }}
+          </nz-form-label>
           <nz-form-control [nzSm]="14" [nzXs]="24">
             <input nz-input name="code" [(ngModel)]="contractFile.code" />
           </nz-form-control>
@@ -17,9 +21,12 @@
       </div>
       <div nz-col [nzSpan]="8">
         <nz-form-item>
-          <nz-form-label [nzSm]="2" [nzXs]="24" [nzNoColon]=true></nz-form-label>
+          <nz-form-label [nzSm]="2" [nzXs]="24" [nzNoColon]="true"></nz-form-label>
           <nz-form-control [nzSm]="14" [nzXs]="24">
-            <button nzType="primary" (click)="query()" nz-button><span>查询</span></button>
+            <button nzType="primary" (click)="query()" nz-button>
+              <!-- 查询 -->
+              <span>{{ 'button.query' | translate }}</span>
+            </button>
           </nz-form-control>
         </nz-form-item>
       </div>
@@ -28,18 +35,34 @@
   <!-- 表格 -->
   <div nz-row [nzGutter]="24">
     <div nz-col [nzSpan]="24">
-      <nz-table nzSize="small" #basicTable [nzData]="listOfData" [nzFrontPagination]="false" [nzTotal]="page.total"
-        [nzPageIndex]="page.current" (nzPageIndexChange)="pageIndexChange($event)" [nzLoading]="isSpinning">
+      <nz-table
+        nzSize="small"
+        #basicTable
+        [nzData]="listOfData"
+        [nzFrontPagination]="false"
+        [nzTotal]="page.total"
+        [nzPageIndex]="page.current"
+        (nzPageIndexChange)="pageIndexChange($event)"
+        [nzLoading]="isSpinning"
+      >
         <thead>
           <tr>
-            <th>合同编码</th>
-            <th>项目名称</th>
-            <th>合同日期</th>
-            <th>里程碑类型</th>
-            <th>客户</th>
-            <th>标准报价</th>
-            <th>成交金额</th>
-            <th>操作</th>
+            <!-- 合同编码 -->
+            <th>{{ 'project.file.upload.contract' | translate }}{{ 'contract.code' | translate }}</th>
+            <!-- 项目名称 -->
+            <th>{{ 'cost.item.name' | translate }}</th>
+            <!-- 合同日期 -->
+            <th>{{ 'project.file.upload.contract' | translate }}{{ 'Date' | translate }}</th>
+            <!-- 里程碑类型 -->
+            <th>{{ 'milestone.milestone.type' | translate }}</th>
+            <!-- 客户 -->
+            <th>{{ 'customer' | translate }}</th>
+            <!-- 标准报价 -->
+            <th>{{ 'standard.quotation' | translate }}</th>
+            <!-- 成交金额 -->
+            <th>{{ 'deal.price' | translate }}</th>
+            <!-- 操作 -->
+            <th>{{ 'table.operation"' | translate }}</th>
           </tr>
         </thead>
         <tbody>
@@ -52,11 +75,14 @@
             <td>{{ data.proName }}</td>
             <td>{{ data.proName }}</td>
             <td>
-              <a (click)="view(data.id)" >详情</a>
-              <nz-divider nzType="vertical" ></nz-divider>
-              <a (click)="update(data.id)" >修改</a>
-              <nz-divider nzType="vertical" ></nz-divider>
-              <a (click)="delete(data.id)" >删除</a>
+              <!-- 详情 -->
+              <a (click)="view(data.id)">{{ 'table.view' | translate }}</a>
+              <nz-divider nzType="vertical"></nz-divider>
+              <!-- 修改 -->
+              <a (click)="update(data.id)">{{ 'table.update' | translate }}</a>
+              <nz-divider nzType="vertical"></nz-divider>
+              <!-- 删除 -->
+              <a (click)="delete(data.id)">{{ 'table.delete' | translate }}</a>
             </td>
           </tr>
         </tbody>

+ 274 - 77
src/app/routes/contract-management/contract-file/update/collection-plan/collection-plan.component.html

@@ -1,5 +1,5 @@
 <!-- 收款计划 -->
-<nz-card nzTitle="收款计划" nzSize="small">
+<nz-card nzTitle="{{ 'payment.plan' | translate }}" nzSize="small">
   <div nz-row [nzGutter]="24">
     <div nz-col [nzSpan]="24">
       <!-- 新增按钮 -->
@@ -8,8 +8,16 @@
   </div>
   <div nz-row [nzGutter]="24">
     <div nz-col [nzSpan]="24">
-      <nz-table style="padding-top: 5px;" nzSize="small" class="tableTdPadding" #basicTable
-        [nzData]="collectionPlanList" [nzFrontPagination]="false" [nzShowPagination]="false" [nzScroll]="{x:'123vw'}">
+      <nz-table
+        style="padding-top: 5px;"
+        nzSize="small"
+        class="tableTdPadding"
+        #basicTable
+        [nzData]="collectionPlanList"
+        [nzFrontPagination]="false"
+        [nzShowPagination]="false"
+        [nzScroll]="{ x: '123vw' }"
+      >
         <!-- <thead>
           <tr>
             <th>{{ 'customer.contacts.name' | translate }}</th>
@@ -23,83 +31,171 @@
         <tbody>
           <tr *ngFor="let data of basicTable.data">
             <td style="width: 7%;">
-              <nz-select style="width: 100%;" nzShowSearch nzAllowClear [(ngModel)]="data.planId" nzPlaceHolder="请选择"
-                [nzDropdownMatchSelectWidth]="false" (ngModelChange)="planIdChange(data,'1')">
+              <nz-select
+                style="width: 100%;"
+                nzShowSearch
+                nzAllowClear
+                [(ngModel)]="data.planId"
+                nzPlaceHolder="请选择"
+                [nzDropdownMatchSelectWidth]="false"
+                (ngModelChange)="planIdChange(data, '1')"
+              >
                 <nz-option *ngFor="let i of planList" [nzValue]="i.id" [nzLabel]="i.name"></nz-option>
               </nz-select>
             </td>
-            <td style="width: 4%;">第一笔</td>
+            <!-- 第一笔 -->
+            <td style="width: 4%;">{{ 'the.first' | translate }}</td>
             <td style="width: 4%;">
-              <nz-input-number [(ngModel)]="data.price1" [nzMin]="0" [nzStep]="1" [nzFormatter]="formatterDollar"
-                [nzParser]="parserDollar" [nzMax]=1000000000 (nzBlur)="priceBlur()"></nz-input-number>
+              <nz-input-number
+                [(ngModel)]="data.price1"
+                [nzMin]="0"
+                [nzStep]="1"
+                [nzFormatter]="formatterDollar"
+                [nzParser]="parserDollar"
+                [nzMax]="1000000000"
+                (nzBlur)="priceBlur()"
+              ></nz-input-number>
             </td>
             <td style="width: 5%;">
-              <nz-select style="width: 100%;" nzShowSearch nzAllowClear [(ngModel)]="data.mileId1" nzPlaceHolder="请选择"
-                [nzDropdownMatchSelectWidth]="false" (ngModelChange)="mileIdChange(data)">
+              <nz-select
+                style="width: 100%;"
+                nzShowSearch
+                nzAllowClear
+                [(ngModel)]="data.mileId1"
+                nzPlaceHolder="请选择"
+                [nzDropdownMatchSelectWidth]="false"
+                (ngModelChange)="mileIdChange(data)"
+              >
                 <nz-option *ngFor="let i of milestoneList" [nzValue]="i.id" [nzLabel]="i.name"></nz-option>
               </nz-select>
             </td>
             <td style="width: 5%;">
-              <input [(ngModel)]="data.desc1" nz-input maxlength=140 (blur)="descChange()"/>
+              <input [(ngModel)]="data.desc1" nz-input maxlength="140" (blur)="descChange()" />
             </td>
-            <td style="width: 4%;">第二笔</td>
+            <!-- 第二笔 -->
+            <td style="width: 4%;">{{ 'the.second' | translate }}</td>
             <td style="width: 4%;">
-              <nz-input-number [(ngModel)]="data.price2" [nzMin]="0" [nzStep]="1" [nzFormatter]="formatterDollar"
-                [nzParser]="parserDollar" [nzMax]=1000000000 (nzBlur)="priceBlur()"></nz-input-number>
+              <nz-input-number
+                [(ngModel)]="data.price2"
+                [nzMin]="0"
+                [nzStep]="1"
+                [nzFormatter]="formatterDollar"
+                [nzParser]="parserDollar"
+                [nzMax]="1000000000"
+                (nzBlur)="priceBlur()"
+              ></nz-input-number>
             </td>
             <td style="width: 5%;">
-              <nz-select style="width: 100%;" nzShowSearch nzAllowClear [(ngModel)]="data.mileId2" nzPlaceHolder="请选择"
-                [nzDropdownMatchSelectWidth]="false" (ngModelChange)="mileIdChange(data)">
+              <nz-select
+                style="width: 100%;"
+                nzShowSearch
+                nzAllowClear
+                [(ngModel)]="data.mileId2"
+                nzPlaceHolder="请选择"
+                [nzDropdownMatchSelectWidth]="false"
+                (ngModelChange)="mileIdChange(data)"
+              >
                 <nz-option *ngFor="let i of milestoneList" [nzValue]="i.id" [nzLabel]="i.name"></nz-option>
               </nz-select>
             </td>
             <td style="width: 5%;">
-              <input [(ngModel)]="data.desc2" nz-input maxlength=140 (blur)="descChange()"/>
+              <input [(ngModel)]="data.desc2" nz-input maxlength="140" (blur)="descChange()" />
             </td>
-            <td style="width: 4%;">第三笔</td>
+            <!-- 第三笔 -->
+            <td style="width: 4%;">{{ 'the.third' | translate }}</td>
             <td style="width: 4%;">
-              <nz-input-number [(ngModel)]="data.price3" [nzMin]="0" [nzStep]="1" [nzFormatter]="formatterDollar"
-                [nzParser]="parserDollar" [nzMax]=1000000000 (nzBlur)="priceBlur()"></nz-input-number>
+              <nz-input-number
+                [(ngModel)]="data.price3"
+                [nzMin]="0"
+                [nzStep]="1"
+                [nzFormatter]="formatterDollar"
+                [nzParser]="parserDollar"
+                [nzMax]="1000000000"
+                (nzBlur)="priceBlur()"
+              ></nz-input-number>
             </td>
             <td style="width: 5%;">
-              <nz-select style="width: 100%;" nzShowSearch nzAllowClear [(ngModel)]="data.mileId3" nzPlaceHolder="请选择"
-                [nzDropdownMatchSelectWidth]="false" (ngModelChange)="mileIdChange(data)">
+              <nz-select
+                style="width: 100%;"
+                nzShowSearch
+                nzAllowClear
+                [(ngModel)]="data.mileId3"
+                nzPlaceHolder="请选择"
+                [nzDropdownMatchSelectWidth]="false"
+                (ngModelChange)="mileIdChange(data)"
+              >
                 <nz-option *ngFor="let i of milestoneList" [nzValue]="i.id" [nzLabel]="i.name"></nz-option>
               </nz-select>
             </td>
             <td style="width: 5%;">
-              <input [(ngModel)]="data.desc3" nz-input maxlength=140 (blur)="descChange()"/>
+              <input [(ngModel)]="data.desc3" nz-input maxlength="140" (blur)="descChange()" />
             </td>
-            <td style="width: 4%;">第四笔</td>
+            <!-- 第四笔 -->
+            <td style="width: 4%;">{{ 'the.fourth' | translate }}</td>
             <td style="width: 4%;">
-              <nz-input-number [(ngModel)]="data.price4" [nzMin]="0" [nzStep]="1" [nzFormatter]="formatterDollar"
-                [nzParser]="parserDollar" [nzMax]=1000000000 (nzBlur)="priceBlur()"></nz-input-number>
+              <nz-input-number
+                [(ngModel)]="data.price4"
+                [nzMin]="0"
+                [nzStep]="1"
+                [nzFormatter]="formatterDollar"
+                [nzParser]="parserDollar"
+                [nzMax]="1000000000"
+                (nzBlur)="priceBlur()"
+              ></nz-input-number>
             </td>
             <td style="width: 5%;">
-              <nz-select style="width: 100%;" nzShowSearch nzAllowClear [(ngModel)]="data.mileId4" nzPlaceHolder="请选择"
-                [nzDropdownMatchSelectWidth]="false" (ngModelChange)="mileIdChange(data)">
+              <nz-select
+                style="width: 100%;"
+                nzShowSearch
+                nzAllowClear
+                [(ngModel)]="data.mileId4"
+                nzPlaceHolder="请选择"
+                [nzDropdownMatchSelectWidth]="false"
+                (ngModelChange)="mileIdChange(data)"
+              >
                 <nz-option *ngFor="let i of milestoneList" [nzValue]="i.id" [nzLabel]="i.name"></nz-option>
               </nz-select>
             </td>
             <td style="width: 5%;">
-              <input [(ngModel)]="data.desc4" nz-input maxlength=140 (blur)="descChange()"/>
+              <input [(ngModel)]="data.desc4" nz-input maxlength="140" (blur)="descChange()" />
             </td>
-            <td style="width: 4%;">第五笔</td>
+            <!-- 第五笔 -->
+            <td style="width: 4%;">{{ 'the.fifth' | translate }}</td>
             <td style="width: 4%;">
-              <nz-input-number [(ngModel)]="data.price5" [nzMin]="0" [nzStep]="1" [nzFormatter]="formatterDollar"
-                [nzParser]="parserDollar" [nzMax]=1000000000 (nzBlur)="priceBlur()"></nz-input-number>
+              <nz-input-number
+                [(ngModel)]="data.price5"
+                [nzMin]="0"
+                [nzStep]="1"
+                [nzFormatter]="formatterDollar"
+                [nzParser]="parserDollar"
+                [nzMax]="1000000000"
+                (nzBlur)="priceBlur()"
+              ></nz-input-number>
             </td>
             <td style="width: 5%;">
-              <nz-select style="width: 100%;" nzShowSearch nzAllowClear [(ngModel)]="data.mileId5" nzPlaceHolder="请选择"
-                [nzDropdownMatchSelectWidth]="false" (ngModelChange)="mileIdChange(data)">
+              <nz-select
+                style="width: 100%;"
+                nzShowSearch
+                nzAllowClear
+                [(ngModel)]="data.mileId5"
+                nzPlaceHolder="请选择"
+                [nzDropdownMatchSelectWidth]="false"
+                (ngModelChange)="mileIdChange(data)"
+              >
                 <nz-option *ngFor="let i of milestoneList" [nzValue]="i.id" [nzLabel]="i.name"></nz-option>
               </nz-select>
             </td>
             <td style="width: 5%;">
-              <input [(ngModel)]="data.desc5" nz-input maxlength=140 (blur)="descChange()"/>
+              <input [(ngModel)]="data.desc5" nz-input maxlength="140" (blur)="descChange()" />
+            </td>
+            <td nzRight="0">
+              <a
+                nz-popconfirm
+                nzTitle="{{ 'table.Whether.to.delete' | translate }}?"
+                (nzOnConfirm)="collectionPlanDelete(data.sort)"
+                >{{ 'table.delete' | translate }}</a
+              >
             </td>
-            <td nzRight="0"><a nz-popconfirm nzTitle="是否删除?"
-                (nzOnConfirm)="collectionPlanDelete(data.sort)">{{'table.delete'|translate}}</a></td>
           </tr>
         </tbody>
       </nz-table>
@@ -107,9 +203,8 @@
   </div>
 </nz-card>
 
-
 <!-- 回款情况 -->
-<nz-card nzTitle="回款情况" nzSize="small">
+<nz-card nzTitle="{{ 'receivable.situation' | translate }}" nzSize="small">
   <div nz-row [nzGutter]="24">
     <div nz-col [nzSpan]="24">
       <!-- 新增按钮 -->
@@ -118,9 +213,16 @@
   </div>
   <div nz-row [nzGutter]="24">
     <div nz-col [nzSpan]="24">
-      <nz-table style="padding-top: 5px;" nzSize="small" class="tableTdPadding" #basicTable2
-        [nzData]="paymentCollectionList" [nzFrontPagination]="false" [nzShowPagination]="false"
-        [nzScroll]="{x:'123vw'}">
+      <nz-table
+        style="padding-top: 5px;"
+        nzSize="small"
+        class="tableTdPadding"
+        #basicTable2
+        [nzData]="paymentCollectionList"
+        [nzFrontPagination]="false"
+        [nzShowPagination]="false"
+        [nzScroll]="{ x: '123vw' }"
+      >
         <!-- <thead>
           <tr>
             <th>{{ 'customer.contacts.name' | translate }}</th>
@@ -134,86 +236,181 @@
         <tbody>
           <tr *ngFor="let data of basicTable2.data">
             <td style="width: 7%;">
-              <nz-select style="width: 100%;" nzShowSearch nzAllowClear [(ngModel)]="data.planId" nzPlaceHolder="请选择"
-                [nzDropdownMatchSelectWidth]="false" (ngModelChange)="planIdChange(data,'2')" nzDisabled>
+              <nz-select
+                style="width: 100%;"
+                nzShowSearch
+                nzAllowClear
+                [(ngModel)]="data.planId"
+                nzPlaceHolder="{{ 'select.please.choose' | translate }}"
+                [nzDropdownMatchSelectWidth]="false"
+                (ngModelChange)="planIdChange(data, '2')"
+                nzDisabled
+              >
                 <nz-option *ngFor="let i of planList" [nzValue]="i.id" [nzLabel]="i.name"></nz-option>
               </nz-select>
             </td>
-            <td style="width: 4%;">第一笔</td>
+            <!-- 1 -->
+            <td style="width: 4%;">{{ 'the.first' | translate }}</td>
             <td style="width: 4%;">
-              <nz-input-number [(ngModel)]="data.price1" [nzMin]="0" [nzStep]="1" [nzFormatter]="formatterDollar"
-                [nzParser]="parserDollar"  [nzMax]=1000000000 [disabled]="true"></nz-input-number>
+              <nz-input-number
+                [(ngModel)]="data.price1"
+                [nzMin]="0"
+                [nzStep]="1"
+                [nzFormatter]="formatterDollar"
+                [nzParser]="parserDollar"
+                [nzMax]="1000000000"
+                [disabled]="true"
+              ></nz-input-number>
             </td>
             <td style="width: 5%;">
-              <nz-select style="width: 100%;" nzShowSearch nzAllowClear [(ngModel)]="data.mileId1" nzPlaceHolder="请选择"
-                [nzDropdownMatchSelectWidth]="false" (ngModelChange)="mileChange(data)" nzDisabled>
+              <nz-select
+                style="width: 100%;"
+                nzShowSearch
+                nzAllowClear
+                [(ngModel)]="data.mileId1"
+                nzPlaceHolder="{{ 'select.please.choose' | translate }}"
+                [nzDropdownMatchSelectWidth]="false"
+                (ngModelChange)="mileChange(data)"
+                nzDisabled
+              >
                 <nz-option *ngFor="let i of milestoneList" [nzValue]="i.id" [nzLabel]="i.name"></nz-option>
               </nz-select>
             </td>
             <td style="width: 5%;">
-              <input [(ngModel)]="data.desc1" nz-input maxlength=140 [disabled]="true"/>
+              <input [(ngModel)]="data.desc1" nz-input maxlength="140" [disabled]="true" />
             </td>
-            <td style="width: 4%;">第二笔</td>
+            <!-- 2 -->
+            <td style="width: 4%;">{{ 'the.second' | translate }}</td>
             <td style="width: 4%;">
-              <nz-input-number [(ngModel)]="data.price2" [nzMin]="0" [nzStep]="1" [nzFormatter]="formatterDollar"
-                [nzParser]="parserDollar" [nzMax]=1000000000 [disabled]="true"></nz-input-number>
+              <nz-input-number
+                [(ngModel)]="data.price2"
+                [nzMin]="0"
+                [nzStep]="1"
+                [nzFormatter]="formatterDollar"
+                [nzParser]="parserDollar"
+                [nzMax]="1000000000"
+                [disabled]="true"
+              ></nz-input-number>
             </td>
             <td style="width: 5%;">
-              <nz-select style="width: 100%;" nzShowSearch nzAllowClear [(ngModel)]="data.mileId2" nzPlaceHolder="请选择"
-                [nzDropdownMatchSelectWidth]="false" (ngModelChange)="mileChange(data)" nzDisabled>
+              <nz-select
+                style="width: 100%;"
+                nzShowSearch
+                nzAllowClear
+                [(ngModel)]="data.mileId2"
+                nzPlaceHolder="{{ 'select.please.choose' | translate }}"
+                [nzDropdownMatchSelectWidth]="false"
+                (ngModelChange)="mileChange(data)"
+                nzDisabled
+              >
                 <nz-option *ngFor="let i of milestoneList" [nzValue]="i.id" [nzLabel]="i.name"></nz-option>
               </nz-select>
             </td>
             <td style="width: 5%;">
-              <input [(ngModel)]="data.desc2" nz-input maxlength=140 [disabled]="true"/>
+              <input [(ngModel)]="data.desc2" nz-input maxlength="140" [disabled]="true" />
             </td>
-            <td style="width: 4%;">第三笔</td>
+            <!-- 3 -->
+            <td style="width: 4%;">{{ 'the.third' | translate }}</td>
             <td style="width: 4%;">
-              <nz-input-number [(ngModel)]="data.price3" [nzMin]="0" [nzStep]="1" [nzFormatter]="formatterDollar"
-                [nzParser]="parserDollar" [nzMax]=1000000000 [disabled]="true"></nz-input-number>
+              <nz-input-number
+                [(ngModel)]="data.price3"
+                [nzMin]="0"
+                [nzStep]="1"
+                [nzFormatter]="formatterDollar"
+                [nzParser]="parserDollar"
+                [nzMax]="1000000000"
+                [disabled]="true"
+              ></nz-input-number>
             </td>
             <td style="width: 5%;">
-              <nz-select style="width: 100%;" nzShowSearch nzAllowClear [(ngModel)]="data.mileId3" nzPlaceHolder="请选择"
-                [nzDropdownMatchSelectWidth]="false" (ngModelChange)="mileChange(data)" nzDisabled>
+              <nz-select
+                style="width: 100%;"
+                nzShowSearch
+                nzAllowClear
+                [(ngModel)]="data.mileId3"
+                nzPlaceHolder="{{ 'select.please.choose' | translate }}"
+                [nzDropdownMatchSelectWidth]="false"
+                (ngModelChange)="mileChange(data)"
+                nzDisabled
+              >
                 <nz-option *ngFor="let i of milestoneList" [nzValue]="i.id" [nzLabel]="i.name"></nz-option>
               </nz-select>
             </td>
             <td style="width: 5%;">
-              <input [(ngModel)]="data.desc3" nz-input maxlength=140 [disabled]="true"/>
+              <input [(ngModel)]="data.desc3" nz-input maxlength="140" [disabled]="true" />
             </td>
-            <td style="width: 4%;">第四笔</td>
+            <!-- 4 -->
+            <td style="width: 4%;">{{ 'the.fourth' | translate }}</td>
             <td style="width: 4%;">
-              <nz-input-number [(ngModel)]="data.price4" [nzMin]="0" [nzStep]="1" [nzFormatter]="formatterDollar"
-                [nzParser]="parserDollar" [nzMax]=1000000000 [disabled]="true"></nz-input-number>
+              <nz-input-number
+                [(ngModel)]="data.price4"
+                [nzMin]="0"
+                [nzStep]="1"
+                [nzFormatter]="formatterDollar"
+                [nzParser]="parserDollar"
+                [nzMax]="1000000000"
+                [disabled]="true"
+              ></nz-input-number>
             </td>
             <td style="width: 5%;">
-              <nz-select style="width: 100%;" nzShowSearch nzAllowClear [(ngModel)]="data.mileId4" nzPlaceHolder="请选择"
-                [nzDropdownMatchSelectWidth]="false" (ngModelChange)="mileChange(data)" nzDisabled>
+              <nz-select
+                style="width: 100%;"
+                nzShowSearch
+                nzAllowClear
+                [(ngModel)]="data.mileId4"
+                nzPlaceHolder="{{ 'select.please.choose' | translate }}"
+                [nzDropdownMatchSelectWidth]="false"
+                (ngModelChange)="mileChange(data)"
+                nzDisabled
+              >
                 <nz-option *ngFor="let i of milestoneList" [nzValue]="i.id" [nzLabel]="i.name"></nz-option>
               </nz-select>
             </td>
             <td style="width: 5%;">
-              <input [(ngModel)]="data.desc4" nz-input maxlength=140 [disabled]="true"/>
+              <input [(ngModel)]="data.desc4" nz-input maxlength="140" [disabled]="true" />
             </td>
-            <td style="width: 4%;">第五笔</td>
+            <!-- 5 -->
+            <td style="width: 4%;">{{ 'the.fifth' | translate }}</td>
             <td style="width: 4%;">
-              <nz-input-number [(ngModel)]="data.price5" [nzMin]="0" [nzStep]="1" [nzFormatter]="formatterDollar"
-                [nzParser]="parserDollar" [nzMax]=1000000000 [disabled]="true"></nz-input-number>
+              <nz-input-number
+                [(ngModel)]="data.price5"
+                [nzMin]="0"
+                [nzStep]="1"
+                [nzFormatter]="formatterDollar"
+                [nzParser]="parserDollar"
+                [nzMax]="1000000000"
+                [disabled]="true"
+              ></nz-input-number>
             </td>
             <td style="width: 5%;">
-              <nz-select style="width: 100%;" nzShowSearch nzAllowClear [(ngModel)]="data.mileId5" nzPlaceHolder="请选择"
-                [nzDropdownMatchSelectWidth]="false" (ngModelChange)="mileChange(data)" nzDisabled>
+              <nz-select
+                style="width: 100%;"
+                nzShowSearch
+                nzAllowClear
+                [(ngModel)]="data.mileId5"
+                nzPlaceHolder="{{ 'select.please.choose' | translate }}"
+                [nzDropdownMatchSelectWidth]="false"
+                (ngModelChange)="mileChange(data)"
+                nzDisabled
+              >
                 <nz-option *ngFor="let i of milestoneList" [nzValue]="i.id" [nzLabel]="i.name"></nz-option>
               </nz-select>
             </td>
             <td style="width: 5%;">
-              <input [(ngModel)]="data.desc5" nz-input maxlength=140 [disabled]="true"/>
+              <input [(ngModel)]="data.desc5" nz-input maxlength="140" [disabled]="true" />
+            </td>
+            <td nzRight="0">
+              <a
+                nz-popconfirm
+                nzTitle="{{ 'table.Whether.to.delete' | translate }}?"
+                (nzOnConfirm)="paymentCollectionDelete(data.sort)"
+              >
+                {{ 'table.delete' | translate }}</a
+              >
             </td>
-            <td nzRight="0"><a nz-popconfirm nzTitle="是否删除?"
-              (nzOnConfirm)="paymentCollectionDelete(data.sort)">{{'table.delete'|translate}}</a></td>
           </tr>
         </tbody>
       </nz-table>
     </div>
   </div>
-</nz-card>
+</nz-card>

+ 285 - 103
src/app/routes/contract-management/contract-file/update/essential-information/essential-information.component.html

@@ -5,23 +5,35 @@
       <!-- 合同编码 -->
       <div nz-col [nzSpan]="6">
         <nz-form-item>
-          <nz-form-label [nzSpan]="'vertical' ? 24 : null" nzRequired>合同编码</nz-form-label>
+          <nz-form-label [nzSpan]="'vertical' ? 24 : null" nzRequired>
+            {{ 'project.file.upload.contract' | translate }}{{ 'contract.code' | translate }}</nz-form-label
+          >
           <nz-form-control [nzSm]="24" [nzXs]="24">
-            <input nz-input placeholder="自动生成" disabled="true" />
+            <input nz-input placeholder="{{ 'aoto.create' | translate }}" disabled="true" />
           </nz-form-control>
         </nz-form-item>
       </div>
       <!-- 项目名称 -->
       <div nz-col [nzSpan]="6">
         <nz-form-item>
-          <nz-form-label [nzSpan]="'vertical' ? 24 : null" nzRequired>项目名称</nz-form-label>
+          <nz-form-label [nzSpan]="'vertical' ? 24 : null" nzRequired>{{ 'cost.item.name' | translate }}</nz-form-label>
           <nz-form-control [nzSm]="24" [nzXs]="24">
-            <nz-tree-select style="width: 100%" [nzNodes]="proList" nzShowSearch [nzMultiple]="false"
-              formControlName="proId" id="proId" nzPlaceHolder="请选择" [(ngModel)]="contractFile.proId"
-              [nzMaxTagCount]="3" [nzAllowClear]="true" (ngModelChange)="proChange($event)">
+            <nz-tree-select
+              style="width: 100%"
+              [nzNodes]="proList"
+              nzShowSearch
+              [nzMultiple]="false"
+              formControlName="proId"
+              id="proId"
+              nzPlaceHolder="{{ 'select.please.choose' | translate }}"
+              [(ngModel)]="contractFile.proId"
+              [nzMaxTagCount]="3"
+              [nzAllowClear]="true"
+              (ngModelChange)="proChange($event)"
+            >
             </nz-tree-select>
             <nz-form-explain *ngIf="validateForm.get('proId')?.dirty && validateForm.get('proId')?.errors">
-              请选择项目
+              {{ 'cost.choose' | translate }}{{ 'project' | translate }}
             </nz-form-explain>
           </nz-form-control>
         </nz-form-item>
@@ -29,13 +41,21 @@
       <!-- 合同日期 -->
       <div nz-col [nzSpan]="6">
         <nz-form-item>
-          <nz-form-label [nzSpan]="'vertical' ? 24 : null" nzRequired>合同日期</nz-form-label>
+          <nz-form-label [nzSpan]="'vertical' ? 24 : null" nzRequired>
+            {{ 'project.file.upload.contract' | translate }}{{ 'Date' | translate }}
+          </nz-form-label>
           <nz-form-control>
-            <nz-date-picker nzFormat="yyyy-MM-dd" formControlName="contractDate" id="contractDate"
-              [(ngModel)]="contractFile.contractDate"></nz-date-picker>
+            <nz-date-picker
+              nzFormat="yyyy-MM-dd"
+              formControlName="contractDate"
+              id="contractDate"
+              [(ngModel)]="contractFile.contractDate"
+            ></nz-date-picker>
             <nz-form-explain
-              *ngIf="validateForm.get('contractDate')?.dirty && validateForm.get('contractDate')?.errors">
-              请选择合同日期
+              *ngIf="validateForm.get('contractDate')?.dirty && validateForm.get('contractDate')?.errors"
+            >
+              {{ 'select.please.choose' | translate }}
+              {{ 'project.file.upload.contract' | translate }}{{ 'Date' | translate }}
             </nz-form-explain>
           </nz-form-control>
         </nz-form-item>
@@ -43,14 +63,25 @@
       <!-- 里程碑类型 -->
       <div nz-col [nzSpan]="6">
         <nz-form-item>
-          <nz-form-label [nzSpan]="'vertical' ? 24 : null" [nzXs]="24" nzRequired>里程碑类型</nz-form-label>
+          <nz-form-label [nzSpan]="'vertical' ? 24 : null" [nzXs]="24" nzRequired>
+            {{ 'financial.management.milestoneName' | translate }}
+          </nz-form-label>
           <nz-form-control [nzSm]="24" [nzXs]="24">
-            <nz-select style="widows: 100%;" nzShowSearch nzAllowClear formControlName="milestoneId" id="milestoneId"
-              [(ngModel)]="contractFile.milestoneId" nzPlaceHolder="请选择" (ngModelChange)="milestoneChange($event)">
+            <nz-select
+              style="widows: 100%;"
+              nzShowSearch
+              nzAllowClear
+              formControlName="milestoneId"
+              id="milestoneId"
+              [(ngModel)]="contractFile.milestoneId"
+              nzPlaceHolder="{{ 'select.please.choose' | translate }}"
+              (ngModelChange)="milestoneChange($event)"
+            >
               <nz-option *ngFor="let i of milestoneList" [nzValue]="i.value" [nzLabel]="i.text"></nz-option>
             </nz-select>
             <nz-form-explain *ngIf="validateForm.get('milestoneId')?.dirty && validateForm.get('milestoneId')?.errors">
-              请选择里程碑
+              {{ 'select.please.choose' | translate }}
+              {{ 'financial.management.milestoneName' | translate }}
             </nz-form-explain>
           </nz-form-control>
         </nz-form-item>
@@ -60,13 +91,22 @@
       <!-- 免费售后起始 -->
       <div nz-col [nzSpan]="6">
         <nz-form-item>
-          <nz-form-label [nzSpan]="'vertical' ? 24 : null" nzRequired>免费售后起始</nz-form-label>
+          <nz-form-label [nzSpan]="'vertical' ? 24 : null" nzRequired>
+            {{ 'free.sale.start' | translate }}
+          </nz-form-label>
           <nz-form-control>
-            <nz-date-picker nzFormat="yyyy-MM-dd" formControlName="freeAfterSalesStart" id="freeAfterSalesStart"
-              [(ngModel)]="contractFile.freeAfterSalesStart" [nzDisabledDate]="disabledDate"></nz-date-picker>
+            <nz-date-picker
+              nzFormat="yyyy-MM-dd"
+              formControlName="freeAfterSalesStart"
+              id="freeAfterSalesStart"
+              [(ngModel)]="contractFile.freeAfterSalesStart"
+              [nzDisabledDate]="disabledDate"
+            ></nz-date-picker>
             <nz-form-explain
-              *ngIf="validateForm.get('freeAfterSalesStart')?.dirty && validateForm.get('freeAfterSalesStart')?.errors">
-              请选择免费售后起始
+              *ngIf="validateForm.get('freeAfterSalesStart')?.dirty && validateForm.get('freeAfterSalesStart')?.errors"
+            >
+              {{ 'select.please.choose' | translate }}
+              {{ 'free.sale.start' | translate }}
             </nz-form-explain>
           </nz-form-control>
         </nz-form-item>
@@ -74,13 +114,22 @@
       <!-- 免费售后截至 -->
       <div nz-col [nzSpan]="6">
         <nz-form-item>
-          <nz-form-label [nzSpan]="'vertical' ? 24 : null" nzRequired>免费售后截至</nz-form-label>
+          <nz-form-label [nzSpan]="'vertical' ? 24 : null" nzRequired>
+            {{ 'free.sale.until' | translate }}
+          </nz-form-label>
           <nz-form-explain>
-            <nz-date-picker nzFormat="yyyy-MM-dd" formControlName="freeAfterSalesEnd" id="freeAfterSalesEnd"
-              [(ngModel)]="contractFile.freeAfterSalesEnd" [nzDisabledDate]="disabledDate2"></nz-date-picker>
+            <nz-date-picker
+              nzFormat="yyyy-MM-dd"
+              formControlName="freeAfterSalesEnd"
+              id="freeAfterSalesEnd"
+              [(ngModel)]="contractFile.freeAfterSalesEnd"
+              [nzDisabledDate]="disabledDate2"
+            ></nz-date-picker>
             <nz-form-explain
-              *ngIf="validateForm.get('freeAfterSalesEnd')?.dirty && validateForm.get('freeAfterSalesEnd')?.errors">
-              请选择免费售后截至
+              *ngIf="validateForm.get('freeAfterSalesEnd')?.dirty && validateForm.get('freeAfterSalesEnd')?.errors"
+            >
+              {{ 'select.please.choose' | translate }}
+              {{ 'free.sale.until' | translate }}
             </nz-form-explain>
           </nz-form-explain>
         </nz-form-item>
@@ -89,10 +138,20 @@
       <!-- 合同概述 -->
       <div nz-col [nzSpan]="12">
         <nz-form-item>
-          <nz-form-label [nzSpan]="'vertical' ? 24 : null">合同概述</nz-form-label>
+          <nz-form-label [nzSpan]="'vertical' ? 24 : null">
+            {{ 'project.file.upload.contract' | translate }}{{ 'summarize' | translate }}
+          </nz-form-label>
           <nz-form-control [nzSm]="24" [nzXs]="24">
-            <textarea rows="2" formControlName="overview" id="overview" nz-input [(ngModel)]="contractFile.overview"
-              placeholder="请输入合同概述"></textarea>
+            <textarea
+              rows="2"
+              formControlName="overview"
+              id="overview"
+              nz-input
+              [(ngModel)]="contractFile.overview"
+              placeholder="{{ 'placeholder' | translate }}{{ 'project.file.upload.contract' | translate }}{{
+                'summarize' | translate
+              }}"
+            ></textarea>
           </nz-form-control>
         </nz-form-item>
       </div>
@@ -100,11 +159,19 @@
     <div nz-row [nzGutter]="24">
       <div nz-col [nzSpan]="6">
         <nz-form-item>
-          <nz-form-label [nzSpan]="'vertical' ? 24 : null" nzRequired>客户</nz-form-label>
+          <!-- 客户 -->
+          <nz-form-label [nzSpan]="'vertical' ? 24 : null" nzRequired>{{ 'customer' | translate }}</nz-form-label>
           <nz-form-control [nzSm]="24" [nzXs]="24">
             <nz-input-group nzSearch [nzAddOnAfter]="suffixIconButton">
-              <input type="text" [(ngModel)]="contractFile.fdCustomerName" formControlName="fdCustomerName"
-                id="fdCustomerName" nz-input placeholder="{{ 'select.please.choose' | translate }}" disabled="true" />
+              <input
+                type="text"
+                [(ngModel)]="contractFile.fdCustomerName"
+                formControlName="fdCustomerName"
+                id="fdCustomerName"
+                nz-input
+                placeholder="{{ 'select.please.choose' | translate }}"
+                disabled="true"
+              />
             </nz-input-group>
             <ng-template #suffixIconButton>
               <!-- 放大镜  勾选列表 -->
@@ -113,37 +180,59 @@
               </button>
             </ng-template>
             <nz-form-explain
-              *ngIf="validateForm.get('fdCustomerName')?.dirty && validateForm.get('fdCustomerName')?.errors">
-              请选择客户
+              *ngIf="validateForm.get('fdCustomerName')?.dirty && validateForm.get('fdCustomerName')?.errors"
+            >
+              {{ 'select.please.choose' | translate }}{{ 'customer' | translate }}
             </nz-form-explain>
           </nz-form-control>
         </nz-form-item>
       </div>
       <div nz-col [nzSpan]="18">
         <nz-form-item>
-          <nz-form-label [nzSpan]="'vertical' ? 24 : null">客户地址</nz-form-label>
+          <nz-form-label [nzSpan]="'vertical' ? 24 : null">
+            {{ 'customer' | translate }}{{ 'address' | translate }}
+          </nz-form-label>
           <nz-form-control [nzSm]="24" [nzXs]="24">
-            <input disabled="true" nz-input [(ngModel)]="contractFile.fdCustomeraddress"
-              formControlName="fdCustomeraddress" id="fdCustomeraddress" placeholder="客户地址" [disabled]="true" />
+            <input
+              disabled="true"
+              nz-input
+              [(ngModel)]="contractFile.fdCustomeraddress"
+              formControlName="fdCustomeraddress"
+              id="fdCustomeraddress"
+              placeholder="客户地址"
+              [disabled]="true"
+            />
           </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" nzRequired>客户人员</nz-form-label>
+          <!-- 客户人员 -->
+          <nz-form-label [nzSpan]="'vertical' ? 24 : null" nzRequired
+            >{{ 'customer' | translate }}{{ 'personnel' | translate }}</nz-form-label
+          >
           <nz-form-control>
-            <nz-select style="widows: 100%;" nzShowSearch nzAllowClear formControlName="fdCustomerPersonnelId"
-              id="fdCustomerPersonnelId" [(ngModel)]="contractFile.fdCustomerPersonnelId" nzPlaceHolder="请选择"
-              (ngModelChange)="fdCustomerPersonnelChange($event)">
+            <nz-select
+              style="widows: 100%;"
+              nzShowSearch
+              nzAllowClear
+              formControlName="fdCustomerPersonnelId"
+              id="fdCustomerPersonnelId"
+              [(ngModel)]="contractFile.fdCustomerPersonnelId"
+              nzPlaceHolder="{{ 'select.please.choose' | translate }}"
+              (ngModelChange)="fdCustomerPersonnelChange($event)"
+            >
               <nz-option *ngFor="let i of fdCustomerPersonnelList" [nzValue]="i.id" [nzLabel]="i.contactPsn">
               </nz-option>
             </nz-select>
             <nz-form-explain
-              *ngIf="validateForm.get('fdCustomerPersonnelId')?.dirty && validateForm.get('fdCustomerPersonnelId')?.errors">
-              请选择客户人员
+              *ngIf="
+                validateForm.get('fdCustomerPersonnelId')?.dirty && validateForm.get('fdCustomerPersonnelId')?.errors
+              "
+            >
+              {{ 'select.please.choose' | translate }}{{ 'customer' | translate }}{{ 'personnel' | translate }}
             </nz-form-explain>
           </nz-form-control>
         </nz-form-item>
@@ -151,24 +240,37 @@
       <!-- 手机 -->
       <div nz-col [nzSpan]="6">
         <nz-form-item>
-          <nz-form-label [nzSpan]="'vertical' ? 24 : null">手机</nz-form-label>
+          <nz-form-label [nzSpan]="'vertical' ? 24 : null">{{ 'phone' | translate }}</nz-form-label>
           <nz-form-control>
-            <input disabled="true" nz-input [(ngModel)]="contractFile.fdCustomerPersonnelTel"
-              formControlName="fdCustomerPersonnelTel" id="fdCustomerPersonnelTel" placeholder="客户地址"
-              [disabled]="true" />
+            <input
+              disabled="true"
+              nz-input
+              [(ngModel)]="contractFile.fdCustomerPersonnelTel"
+              formControlName="fdCustomerPersonnelTel"
+              id="fdCustomerPersonnelTel"
+              placeholder="{{ 'customer.contacts.client.address' | translate }}"
+              [disabled]="true"
+            />
           </nz-form-control>
         </nz-form-item>
       </div>
       <!-- 销售人员 -->
       <div nz-col [nzSpan]="6">
         <nz-form-item>
-          <nz-form-label [nzSpan]="'vertical' ? 24 : null" nzRequired>销售人员</nz-form-label>
+          <nz-form-label [nzSpan]="'vertical' ? 24 : null" nzRequired>{{ 'sales.staff' | translate }}</nz-form-label>
           <nz-form-control>
-            <nz-tree-select [nzNodes]="salesStaffList" nzShowSearch formControlName="salesmanId" id="salesmanId"
-              nzAllowClear="false" [(ngModel)]="contractFile.salesmanId" (ngModelChange)="onChangeSalesmanId($event)"
-              nzPlaceHolder="{{ 'select.please.choose' | translate }}"></nz-tree-select>
+            <nz-tree-select
+              [nzNodes]="salesStaffList"
+              nzShowSearch
+              formControlName="salesmanId"
+              id="salesmanId"
+              nzAllowClear="false"
+              [(ngModel)]="contractFile.salesmanId"
+              (ngModelChange)="onChangeSalesmanId($event)"
+              nzPlaceHolder="{{ 'select.please.choose' | translate }}"
+            ></nz-tree-select>
             <nz-form-explain *ngIf="validateForm.get('salesmanId')?.dirty && validateForm.get('salesmanId')?.errors">
-              请选择销售人员
+              {{ 'select.please.choose' | translate }}{{ 'sales.staff' | translate }}
             </nz-form-explain>
           </nz-form-control>
         </nz-form-item>
@@ -176,16 +278,24 @@
       <!-- 业务类型 -->
       <div nz-col [nzSpan]="6">
         <nz-form-item>
-          <nz-form-label [nzSpan]="'vertical' ? 24 : null">业务类型</nz-form-label>
+          <nz-form-label [nzSpan]="'vertical' ? 24 : null">{{ 'business.types' | translate }}</nz-form-label>
           <nz-form-control [nzSm]="24" [nzXs]="24">
-            <nz-select style="widows: 100%;" nzShowSearch nzAllowClear formControlName="businessTypeDictId"
-              id="businessTypeDictId" [(ngModel)]="contractFile.businessTypeDictId" nzPlaceHolder="请选择"
-              (ngModelChange)="businessTypeDictIdChange($event)">
+            <nz-select
+              style="widows: 100%;"
+              nzShowSearch
+              nzAllowClear
+              formControlName="businessTypeDictId"
+              id="businessTypeDictId"
+              [(ngModel)]="contractFile.businessTypeDictId"
+              nzPlaceHolder="{{ 'select.please.choose' | translate }}"
+              (ngModelChange)="businessTypeDictIdChange($event)"
+            >
               <nz-option *ngFor="let i of businessTypeDictList" [nzValue]="i.value" [nzLabel]="i.text"></nz-option>
             </nz-select>
             <nz-form-explain
-              *ngIf="validateForm.get('businessTypeDictId')?.dirty && validateForm.get('businessTypeDictId')?.errors">
-              请选择业务类型
+              *ngIf="validateForm.get('businessTypeDictId')?.dirty && validateForm.get('businessTypeDictId')?.errors"
+            >
+              {{ 'select.please.choose' | translate }}{{ 'business.types' | translate }}
             </nz-form-explain>
           </nz-form-control>
         </nz-form-item>
@@ -197,11 +307,17 @@
       <!-- 标准报价 -->
       <div nz-col [nzSpan]="4">
         <nz-form-item>
-          <nz-form-label [nzSpan]="'vertical' ? 24 : null">标准报价</nz-form-label>
+          <nz-form-label [nzSpan]="'vertical' ? 24 : null">{{ 'standard.quotation' | translate }}</nz-form-label>
           <nz-form-explain>
-            <nz-input-number [(ngModel)]="contractFile.standardQuotation" formControlName="standardQuotation"
-              id="standardQuotation" [nzDisabled]="true" [nzMin]="0" [nzFormatter]="formatterDollar"
-              [nzParser]="parserDollar">
+            <nz-input-number
+              [(ngModel)]="contractFile.standardQuotation"
+              formControlName="standardQuotation"
+              id="standardQuotation"
+              [nzDisabled]="true"
+              [nzMin]="0"
+              [nzFormatter]="formatterDollar"
+              [nzParser]="parserDollar"
+            >
             </nz-input-number>
           </nz-form-explain>
         </nz-form-item>
@@ -209,11 +325,18 @@
       <!-- 成交金额 -->
       <div nz-col [nzSpan]="4">
         <nz-form-item>
-          <nz-form-label [nzSpan]="'vertical' ? 24 : null">成交金额</nz-form-label>
+          <nz-form-label [nzSpan]="'vertical' ? 24 : null">{{ 'deal.price' | translate }}</nz-form-label>
           <nz-form-explain>
-            <nz-input-number [(ngModel)]="contractFile.transactionAmount" [nzDisabled]="true"
-              (nzBlur)="transactionAmountBlur()" formControlName="transactionAmount" id="transactionAmount" [nzMin]="0"
-              [nzFormatter]="formatterDollar" [nzParser]="parserDollar">
+            <nz-input-number
+              [(ngModel)]="contractFile.transactionAmount"
+              [nzDisabled]="true"
+              (nzBlur)="transactionAmountBlur()"
+              formControlName="transactionAmount"
+              id="transactionAmount"
+              [nzMin]="0"
+              [nzFormatter]="formatterDollar"
+              [nzParser]="parserDollar"
+            >
             </nz-input-number>
           </nz-form-explain>
         </nz-form-item>
@@ -221,10 +344,17 @@
       <!-- 折扣率 -->
       <div nz-col [nzSpan]="4">
         <nz-form-item>
-          <nz-form-label [nzSpan]="'vertical' ? 24 : null">折扣率</nz-form-label>
+          <nz-form-label [nzSpan]="'vertical' ? 24 : null">{{ 'The discount' | translate }}</nz-form-label>
           <nz-form-explain>
-            <nz-input-number [(ngModel)]="contractFile.discountRate" formControlName="discountRate" id="discountRate"
-              [nzMin]="0" [nzFormatter]="formatterDollar2" [nzParser]="parserDollar2" [nzDisabled]="true">
+            <nz-input-number
+              [(ngModel)]="contractFile.discountRate"
+              formControlName="discountRate"
+              id="discountRate"
+              [nzMin]="0"
+              [nzFormatter]="formatterDollar2"
+              [nzParser]="parserDollar2"
+              [nzDisabled]="true"
+            >
             </nz-input-number>
           </nz-form-explain>
         </nz-form-item>
@@ -232,10 +362,16 @@
       <!-- 赠品金额 -->
       <div nz-col [nzSpan]="4">
         <nz-form-item>
-          <nz-form-label [nzSpan]="'vertical' ? 24 : null">赠品金额</nz-form-label>
+          <nz-form-label [nzSpan]="'vertical' ? 24 : null">{{ 'gift.amount' | translate }}</nz-form-label>
           <nz-form-explain>
-            <nz-input-number [(ngModel)]="contractFile.giftAmount" formControlName="giftAmount" id="giftAmount"
-              [nzMin]="0" [nzFormatter]="formatterDollar" [nzParser]="parserDollar">
+            <nz-input-number
+              [(ngModel)]="contractFile.giftAmount"
+              formControlName="giftAmount"
+              id="giftAmount"
+              [nzMin]="0"
+              [nzFormatter]="formatterDollar"
+              [nzParser]="parserDollar"
+            >
             </nz-input-number>
           </nz-form-explain>
         </nz-form-item>
@@ -243,10 +379,17 @@
       <!-- 成本 -->
       <div nz-col [nzSpan]="4">
         <nz-form-item>
-          <nz-form-label [nzSpan]="'vertical' ? 24 : null">成本</nz-form-label>
+          <nz-form-label [nzSpan]="'vertical' ? 24 : null">{{ 'cost' | translate }}</nz-form-label>
           <nz-form-explain>
-            <nz-input-number [(ngModel)]="contractFile.cost" formControlName="cost" id="cost" [nzMin]="0"
-              [nzFormatter]="formatterDollar" [nzParser]="parserDollar" (nzBlur)="costBlur()">
+            <nz-input-number
+              [(ngModel)]="contractFile.cost"
+              formControlName="cost"
+              id="cost"
+              [nzMin]="0"
+              [nzFormatter]="formatterDollar"
+              [nzParser]="parserDollar"
+              (nzBlur)="costBlur()"
+            >
             </nz-input-number>
           </nz-form-explain>
         </nz-form-item>
@@ -254,10 +397,19 @@
       <!-- 合同费用 -->
       <div nz-col [nzSpan]="4">
         <nz-form-item>
-          <nz-form-label [nzSpan]="'vertical' ? 24 : null">合同费用</nz-form-label>
+          <nz-form-label [nzSpan]="'vertical' ? 24 : null">
+            {{ 'project.file.upload.contract' | translate }}{{ 'pm.quotation.fee' | translate }}
+          </nz-form-label>
           <nz-form-explain>
-            <nz-input-number [(ngModel)]="contractFile.contractCost" formControlName="contractCost" id="contractCost"
-              [nzMin]="0" [nzFormatter]="formatterDollar" [nzParser]="parserDollar" (nzBlur)="contractCostBlur()">
+            <nz-input-number
+              [(ngModel)]="contractFile.contractCost"
+              formControlName="contractCost"
+              id="contractCost"
+              [nzMin]="0"
+              [nzFormatter]="formatterDollar"
+              [nzParser]="parserDollar"
+              (nzBlur)="contractCostBlur()"
+            >
             </nz-input-number>
           </nz-form-explain>
         </nz-form-item>
@@ -267,11 +419,17 @@
       <!-- 合同利润 -->
       <div nz-col [nzSpan]="4">
         <nz-form-item>
-          <nz-form-label [nzSpan]="'vertical' ? 24 : null">合同利润</nz-form-label>
+          <nz-form-label [nzSpan]="'vertical' ? 24 : null">{{ 'contract.profits' | translate }}</nz-form-label>
           <nz-form-explain>
-            <nz-input-number [(ngModel)]="contractFile.contractProfit" formControlName="contractProfit"
-              id="contractProfit" [nzMin]="0" [nzDisabled]="true" [nzFormatter]="formatterDollar"
-              [nzParser]="parserDollar">
+            <nz-input-number
+              [(ngModel)]="contractFile.contractProfit"
+              formControlName="contractProfit"
+              id="contractProfit"
+              [nzMin]="0"
+              [nzDisabled]="true"
+              [nzFormatter]="formatterDollar"
+              [nzParser]="parserDollar"
+            >
             </nz-input-number>
           </nz-form-explain>
         </nz-form-item>
@@ -279,10 +437,17 @@
       <!-- 回款金额 -->
       <div nz-col [nzSpan]="4">
         <nz-form-item>
-          <nz-form-label [nzSpan]="'vertical' ? 24 : null">回款金额</nz-form-label>
+          <nz-form-label [nzSpan]="'vertical' ? 24 : null">{{ 'receivable.amount' | translate }}</nz-form-label>
           <nz-form-explain>
-            <nz-input-number [nzDisabled]="true" [(ngModel)]="contractFile.received" formControlName="received"
-              id="received" [nzMin]="0" [nzFormatter]="formatterDollar" [nzParser]="parserDollar">
+            <nz-input-number
+              [nzDisabled]="true"
+              [(ngModel)]="contractFile.received"
+              formControlName="received"
+              id="received"
+              [nzMin]="0"
+              [nzFormatter]="formatterDollar"
+              [nzParser]="parserDollar"
+            >
             </nz-input-number>
           </nz-form-explain>
         </nz-form-item>
@@ -290,11 +455,19 @@
       <!-- 应收款账 -->
       <div nz-col [nzSpan]="4">
         <nz-form-item>
-          <nz-form-label [nzSpan]="'vertical' ? 24 : null">应收款账</nz-form-label>
+          <nz-form-label [nzSpan]="'vertical' ? 24 : null">
+            {{ 'accounts.receivable.account' | translate }}
+          </nz-form-label>
           <nz-form-explain>
-            <nz-input-number [nzDisabled]="true" [(ngModel)]="contractFile.accountsReceivable"
-              formControlName="accountsReceivable" id="accountsReceivable" [nzMin]="0" [nzFormatter]="formatterDollar"
-              [nzParser]="parserDollar">
+            <nz-input-number
+              [nzDisabled]="true"
+              [(ngModel)]="contractFile.accountsReceivable"
+              formControlName="accountsReceivable"
+              id="accountsReceivable"
+              [nzMin]="0"
+              [nzFormatter]="formatterDollar"
+              [nzParser]="parserDollar"
+            >
             </nz-input-number>
           </nz-form-explain>
         </nz-form-item>
@@ -302,11 +475,18 @@
       <!-- 业绩计算率 -->
       <div nz-col [nzSpan]="4">
         <nz-form-item>
-          <nz-form-label [nzSpan]="'vertical' ? 24 : null">业绩计算率</nz-form-label>
+          <nz-form-label [nzSpan]="'vertical' ? 24 : null">
+            {{ 'performance.calculation.rate' | translate }}
+          </nz-form-label>
           <nz-form-explain>
-            <nz-input-number [(ngModel)]="contractFile.performanceCalculationRate"
-              formControlName="performanceCalculationRate" id="performanceCalculationRate" [nzMin]="0"
-              [nzFormatter]="formatterDollar2" [nzParser]="parserDollar2">
+            <nz-input-number
+              [(ngModel)]="contractFile.performanceCalculationRate"
+              formControlName="performanceCalculationRate"
+              id="performanceCalculationRate"
+              [nzMin]="0"
+              [nzFormatter]="formatterDollar2"
+              [nzParser]="parserDollar2"
+            >
             </nz-input-number>
           </nz-form-explain>
         </nz-form-item>
@@ -318,18 +498,20 @@
       <!-- 制单人 -->
       <div nz-col [nzSpan]="12">
         <nz-form-item>
-          <nz-form-label [nzSpan]="'vertical' ? 24 : null">制单人</nz-form-label>
+          <nz-form-label [nzSpan]="'vertical' ? 24 : null">{{
+            'pm.quotation.Single.person' | translate
+          }}</nz-form-label>
           <nz-form-explain>
-            {{contractFile.createBy}}
+            {{ contractFile.createBy }}
           </nz-form-explain>
         </nz-form-item>
       </div>
       <!-- 制单时间 -->
       <div nz-col [nzSpan]="12">
         <nz-form-item>
-          <nz-form-label [nzSpan]="'vertical' ? 24 : null">制单时间</nz-form-label>
+          <nz-form-label [nzSpan]="'vertical' ? 24 : null">{{ 'make.time' | translate }}</nz-form-label>
           <nz-form-explain>
-            {{contractFile.createTime}}
+            {{ contractFile.createTime }}
           </nz-form-explain>
         </nz-form-item>
       </div>
@@ -338,21 +520,21 @@
       <!-- 修改人 -->
       <div nz-col [nzSpan]="12">
         <nz-form-item>
-          <nz-form-label [nzSpan]="'vertical' ? 24 : null">修改人</nz-form-label>
+          <nz-form-label [nzSpan]="'vertical' ? 24 : null">{{ 'update.by' | translate }}</nz-form-label>
           <nz-form-explain>
-            {{contractFile.updateBy}}
+            {{ contractFile.updateBy }}
           </nz-form-explain>
         </nz-form-item>
       </div>
       <!-- 修改时间 -->
       <div nz-col [nzSpan]="12">
         <nz-form-item>
-          <nz-form-label [nzSpan]="'vertical' ? 24 : null">修改时间</nz-form-label>
+          <nz-form-label [nzSpan]="'vertical' ? 24 : null">{{ 'update.time' | translate }}</nz-form-label>
           <nz-form-explain>
-            {{contractFile.updateTime}}
+            {{ contractFile.updateTime }}
           </nz-form-explain>
         </nz-form-item>
       </div>
     </div>
   </nz-card>
-</form>
+</form>

+ 158 - 46
src/app/routes/contract-management/contract-file/update/product-module/product-module.component.html

@@ -3,7 +3,7 @@
   <!-- 操作按钮 -->
   <div nz-row [nzGutter]="24">
     <div nz-col [nzSpan]="24">
-      <button nz-button (click)="productAddRow()" nzType="primary">新增</button>
+      <button nz-button (click)="productAddRow()" nzType="primary">{{ 'button.add' | translate }}</button>
       <br />
       <br />
     </div>
@@ -14,16 +14,47 @@
       <nz-table #productRowTable nzSize="small" class="tableTdPadding" nzBordered [nzData]="productList">
         <thead>
           <tr>
-            <th nzWidth="10%">产品编码</th>
-            <th nzWidth="17%">产品名称</th>
-            <th nzWidth="9%">折扣率</th>
-            <th nzWidth="9%">标准报价</th>
-            <th nzWidth="9%">折扣后单价</th>
-            <th nzWidth="9%">标准金额</th>
-            <th nzWidth="9%">折扣后金额</th>
-            <th nzWidth="9%">成本单价</th>
-            <th nzWidth="9%">成本金额</th>
-            <th nzWidth="10%">操作</th>
+            <!-- 产品编码 -->
+            <th nzWidth="10%">{{ 'product' | translate }}{{ 'table.thead.code' | translate }}</th>
+            <!-- 产品名称 -->
+            <th nzWidth="17%">{{ 'product' | translate }}{{ 'contract.name' | translate }}</th>
+
+            <!-- 折扣率 -->
+            <th nzWidth="9%">{{ 'The discount' | translate }}</th>
+            <!-- 标准报价 -->
+            <th nzWidth="9%">{{ 'standard.quotation' | translate }}</th>
+
+            <!-- 折扣后单价 -->
+            <th nzWidth="9%">
+              {{ 'pm.quotation.Discount' | translate }}
+              {{ 'after' | translate }}
+              {{ 'price' | translate }}
+            </th>
+
+            <!-- 标准金额 -->
+            <th nzWidth="9%">{{ 'standard.amount' | translate }}</th>
+
+            <!-- 折扣后金额 -->
+            <th nzWidth="9%">
+              {{ 'pm.quotation.Discount' | translate }}
+              {{ 'after' | translate }}
+              {{ 'their.fees.money' | translate }}
+            </th>
+
+            <!-- 成本单价 -->
+            <th nzWidth="9%">
+              {{ 'cost' | translate }}
+              {{ 'price' | translate }}
+            </th>
+
+            <!--成本金额  -->
+            <th nzWidth="9%">
+              {{ 'cost' | translate }}
+              {{ 'their.fees.money' | translate }}
+            </th>
+
+            <!-- 操作 -->
+            <th nzWidth="10%">{{ 'table.operation' | translate }}</th>
           </tr>
         </thead>
         <tbody>
@@ -31,8 +62,13 @@
             <td><input type="text" nz-input [(ngModel)]="data.code" disabled="true" /></td>
             <td>
               <nz-input-group nzSearch [nzAddOnAfter]="suffixIconButton">
-                <input type="text" [(ngModel)]="data.name" nz-input
-                  placeholder="{{ 'select.please.choose' | translate }}" disabled="true" />
+                <input
+                  type="text"
+                  [(ngModel)]="data.name"
+                  nz-input
+                  placeholder="{{ 'select.please.choose' | translate }}"
+                  disabled="true"
+                />
               </nz-input-group>
               <ng-template #suffixIconButton>
                 <!-- 放大镜  勾选列表 -->
@@ -42,36 +78,72 @@
               </ng-template>
             </td>
             <td>
-              <nz-input-number [nzMin]="0" [(ngModel)]="data.discountRate" [nzFormatter]="formatterDollar2" [nzParser]="parserDollar2"></nz-input-number>
+              <nz-input-number
+                [nzMin]="0"
+                [(ngModel)]="data.discountRate"
+                [nzFormatter]="formatterDollar2"
+                [nzParser]="parserDollar2"
+              ></nz-input-number>
             </td>
             <td>
-              <nz-input-number [nzMin]="0" [nzDisabled]="true" [(ngModel)]="data.standardQuotation"
-                [nzFormatter]="formatterDollar" [nzParser]="parserDollar"></nz-input-number>
+              <nz-input-number
+                [nzMin]="0"
+                [nzDisabled]="true"
+                [(ngModel)]="data.standardQuotation"
+                [nzFormatter]="formatterDollar"
+                [nzParser]="parserDollar"
+              ></nz-input-number>
             </td>
             <td>
-              <nz-input-number [nzMin]="0" [(ngModel)]="data.unitPriceAfterDiscount" (nzBlur)="unitPriceAfterDiscountBlur(data)" [nzFormatter]="formatterDollar"
-                [nzParser]="parserDollar"></nz-input-number>
+              <nz-input-number
+                [nzMin]="0"
+                [(ngModel)]="data.unitPriceAfterDiscount"
+                (nzBlur)="unitPriceAfterDiscountBlur(data)"
+                [nzFormatter]="formatterDollar"
+                [nzParser]="parserDollar"
+              ></nz-input-number>
             </td>
             <td>
-              <nz-input-number [nzMin]="0" [(ngModel)]="data.standardAmount" [nzFormatter]="formatterDollar"
-                [nzParser]="parserDollar"></nz-input-number>
+              <nz-input-number
+                [nzMin]="0"
+                [(ngModel)]="data.standardAmount"
+                [nzFormatter]="formatterDollar"
+                [nzParser]="parserDollar"
+              ></nz-input-number>
             </td>
             <td>
-              <nz-input-number [nzMin]="0" [(ngModel)]="data.amountAfterDiscount" [nzFormatter]="formatterDollar"
-                [nzParser]="parserDollar"></nz-input-number>
+              <nz-input-number
+                [nzMin]="0"
+                [(ngModel)]="data.amountAfterDiscount"
+                [nzFormatter]="formatterDollar"
+                [nzParser]="parserDollar"
+              ></nz-input-number>
             </td>
             <td>
-              <nz-input-number [nzMin]="0" [(ngModel)]="data.costUnitPrice" [nzFormatter]="formatterDollar"
-                [nzParser]="parserDollar"></nz-input-number>
+              <nz-input-number
+                [nzMin]="0"
+                [(ngModel)]="data.costUnitPrice"
+                [nzFormatter]="formatterDollar"
+                [nzParser]="parserDollar"
+              ></nz-input-number>
             </td>
             <td>
-              <nz-input-number [nzMin]="0" [(ngModel)]="data.costAmount" [nzFormatter]="formatterDollar"
-                [nzParser]="parserDollar"></nz-input-number>
+              <nz-input-number
+                [nzMin]="0"
+                [(ngModel)]="data.costAmount"
+                [nzFormatter]="formatterDollar"
+                [nzParser]="parserDollar"
+              ></nz-input-number>
             </td>
             <td>
-              <a nz-popconfirm nzTitle="{{ 'confirm.to.delete' | translate }}?" nzOkText="{{ 'yes' | translate }}"
+              <a
+                nz-popconfirm
+                nzTitle="{{ 'confirm.to.delete' | translate }}?"
+                nzOkText="{{ 'yes' | translate }}"
                 nzCancelText="{{ 'no' | translate }}"
-                (nzOnConfirm)="productDeleteRow(data.id)">{{ 'table.delete' | translate }}</a>
+                (nzOnConfirm)="productDeleteRow(data.id)"
+                >{{ 'table.delete' | translate }}</a
+              >
             </td>
           </tr>
         </tbody>
@@ -80,13 +152,15 @@
   </div>
 </nz-card>
 
-<nz-card nzTitle="模块">
+<!-- 模块 -->
+<nz-card nzTitle="{{ 'module' | translate }}">
   <nz-tabset>
     <nz-tab *ngFor="let product of productList" [nzTitle]="product.name">
       <!-- 操作按钮 -->
       <div nz-row [nzGutter]="24">
         <div nz-col [nzSpan]="24">
-          <button nz-button (click)="moduleAddRow(product)" nzType="primary">新增</button>
+          <!-- 新增 -->
+          <button nz-button (click)="moduleAddRow(product)" nzType="primary">{{ 'button.add' | translate }}</button>
           <br />
           <br />
         </div>
@@ -94,39 +168,77 @@
       <!-- 表格 -->
       <div nz-row [nzGutter]="24">
         <div nz-col [nzSpan]="24">
-          <nz-table #moduleRowTable nzSize="small" class="tableTdPadding" nzBordered
-            [nzData]="product.contractFileModularList">
+          <nz-table
+            #moduleRowTable
+            nzSize="small"
+            class="tableTdPadding"
+            nzBordered
+            [nzData]="product.contractFileModularList"
+          >
             <thead>
               <tr>
-                <th nzWidth="30%">产品模块编码</th>
-                <th nzWidth="30%">产品模块名称</th>
-                <th nzWidth="10%">标准报价</th>
-                <th nzWidth="10%">采购价格</th>
-                <th nzWidth="20%">操作</th>
+                <!-- 产品模块编码 -->
+                <th nzWidth="30%">{{ 'product' | translate }}{{ 'module.code' | translate }}</th>
+
+                <!-- 产品模块名称 -->
+                <th nzWidth="30%">{{ 'product' | translate }}{{ 'module.name' | translate }}</th>
+
+                <!-- 标准报价 -->
+                <th nzWidth="10%">{{ 'standard.quotation' | translate }}</th>
+
+                <!-- 采购价格 -->
+                <th nzWidth="10%">
+                  {{ 'procurement' | translate }}
+                  {{ 'the.price' | translate }}
+                </th>
+
+                <!-- 操作 -->
+                <th nzWidth="20%">{{ 'table.operation' | translate }}</th>
               </tr>
             </thead>
             <tbody>
               <tr *ngFor="let data of moduleRowTable.data" class="editable-row">
                 <td><input disabled="true" type="text" nz-input [(ngModel)]="data.code" /></td>
                 <td>
-                  <nz-select style="width:100%" nzShowSearch nzAllowClear [(ngModel)]="data.baseMaterialFileModularId"
-                    nzPlaceHolder="请选择" (ngModelChange)="baseMaterialFileModularIdChange(product,data,$event)">
+                  <nz-select
+                    style="width:100%"
+                    nzShowSearch
+                    nzAllowClear
+                    [(ngModel)]="data.baseMaterialFileModularId"
+                    nzPlaceHolder="{{ 'select.please.choose' | translate }}"
+                    (ngModelChange)="baseMaterialFileModularIdChange(product, data, $event)"
+                  >
                     <nz-option *ngFor="let i of product.modularListSelect" [nzValue]="i.id" [nzLabel]="i.name">
                     </nz-option>
                   </nz-select>
                 </td>
                 <td>
-                  <nz-input-number [nzMin]="0" [nzDisabled]="true" [(ngModel)]="data.standardQuotation" [nzFormatter]="formatterDollar"
-                    [nzParser]="parserDollar" (ngModelChange)="standardQuotationModuleKeyUp(product)"></nz-input-number>
+                  <nz-input-number
+                    [nzMin]="0"
+                    [nzDisabled]="true"
+                    [(ngModel)]="data.standardQuotation"
+                    [nzFormatter]="formatterDollar"
+                    [nzParser]="parserDollar"
+                    (ngModelChange)="standardQuotationModuleKeyUp(product)"
+                  ></nz-input-number>
                 </td>
                 <td>
-                  <nz-input-number [nzMin]="0" [(ngModel)]="data.purchasePrice"  [nzFormatter]="formatterDollar"
-                    [nzParser]="parserDollar"></nz-input-number>
+                  <nz-input-number
+                    [nzMin]="0"
+                    [(ngModel)]="data.purchasePrice"
+                    [nzFormatter]="formatterDollar"
+                    [nzParser]="parserDollar"
+                  ></nz-input-number>
                 </td>
                 <td>
-                  <a nz-popconfirm nzTitle="{{ 'confirm.to.delete' | translate }}?" nzOkText="{{ 'yes' | translate }}"
+                  <a
+                    nz-popconfirm
+                    nzTitle="{{ 'confirm.to.delete' | translate }}?"
+                    nzOkText="{{ 'yes' | translate }}"
                     nzCancelText="{{ 'no' | translate }}"
-                    (nzOnConfirm)="moduleDeleteRow(product,data.id)">{{ 'table.delete' | translate }}</a>
+                    (nzOnConfirm)="moduleDeleteRow(product, data.id)"
+                    >{{ 'table.delete' | translate }}</a
+                  >
                 </td>
               </tr>
             </tbody>
@@ -135,4 +247,4 @@
       </div>
     </nz-tab>
   </nz-tabset>
-</nz-card>
+</nz-card>

+ 341 - 320
src/app/routes/dashboard/analysis/analysis.component.html

@@ -1,49 +1,49 @@
 <div nz-row nzGutter="24">
   <nz-col nzXs="12" nzSm="6" nzMd="3" nzLg="3">
     <div class="block_normal">
-      CD01项目<br/>
+      CD01{{ 'project' | translate }}<br />
       85%
     </div>
   </nz-col>
   <nz-col nzXs="12" nzSm="6" nzMd="3" nzLg="3">
     <div class="block_normal">
-      CD02项目<br/>
+      CD02{{ 'project' | translate }}<br />
       50%
     </div>
   </nz-col>
   <nz-col nzXs="12" nzSm="6" nzMd="3" nzLg="3">
     <div class="block_normal">
-      CD03项目<br/>
+      CD03{{ 'project' | translate }}<br />
       90%
     </div>
   </nz-col>
   <nz-col nzXs="12" nzSm="6" nzMd="3" nzLg="3">
     <div class="block_normal">
-      CD04项目<br/>
+      CD04{{ 'project' | translate }}<br />
       40%
     </div>
   </nz-col>
   <nz-col nzXs="12" nzSm="6" nzMd="3" nzLg="3">
     <div class="block_danger">
-      CD05项目<br/>
+      CD05{{ 'project' | translate }}<br />
       30%
     </div>
   </nz-col>
   <nz-col nzXs="12" nzSm="6" nzMd="3" nzLg="3">
     <div class="block_normal">
-      CD06项目<br/>
+      CD06{{ 'project' | translate }}<br />
       25%
     </div>
   </nz-col>
   <nz-col nzXs="12" nzSm="6" nzMd="3" nzLg="3">
     <div class="block_danger">
-      CD07项目<br/>
+      CD07{{ 'project' | translate }}<br />
       15%
     </div>
   </nz-col>
   <nz-col nzXs="12" nzSm="6" nzMd="3" nzLg="3">
     <div class="block_normal">
-      CD08项目<br/>
+      CD08{{ 'project' | translate }}<br />
       0%
     </div>
   </nz-col>
@@ -60,325 +60,346 @@
   </div>
 </div> -->
 <div nz-row [nzGutter]="24" class="pt-lg">
-    <div nz-col nzXs="24" nzSm="24" nzMd="24" nzLg="24">
-        <nz-card [nzLoading]="loading" [nzBordered]="false" [nzTitle]="'项目费用占比' | translate"  class="mb-0">
-            <h4 class="margin:5px 0 5px 0;"></h4>
-            <nz-table [nzShowPagination]="false">
-                <thead>
-                  <tr>
-                    <th rowspan="2">序号</th>
-                    <th rowspan="2">任务</th>
-                    <th rowspan="2">负责人</th>
-                    <th rowspan="2">开始<br/>时间</th>
-                    <th rowspan="2">完成<br/>时间</th>
-                    <th rowspan="2">工期</th>
-                    <th rowspan="2">进度</th>
-                    <th colspan="2">19年2月</th>
-                    <th colspan="2">19年3月</th>
-                    <th colspan="2">19年4月</th>
-                    <th colspan="2">19年5月</th>
-                    <th colspan="2">19年6月</th>
-                    <th colspan="2">19年7月</th>
-                    <th colspan="2">19年8月</th>
-                    <th colspan="2">19年9月</th>
-                  </tr>
-                  <tr>
-                    <th>10</th>
-                    <th>25</th>
-                    <th>10</th>
-                    <th>25</th>
-                    <th>10</th>
-                    <th>25</th>
-                    <th>10</th>
-                    <th>25</th>
-                    <th>10</th>
-                    <th>25</th>
-                    <th>10</th>
-                    <th>25</th>
-                    <th>10</th>
-                    <th>25</th>
-                    <th>10</th>
-                    <th>25</th>
-                  </tr>
-                </thead>
-                <tbody>
-                  <tr>
-                    <td>1</td>
-                    <td>CD01</td>
-                    <td>张三</td>
-                    <td>20190201</td>
-                    <td>20190620</td>
-                    <td>100d</td>
-                    <td>85%</td>
-                    <td class="work_done"></td>
-                    <td class="work_done"></td>
-
-                    <td class="work_done"></td>
-                    <td class="work_done"></td>
-
-                    <td class="work_done"></td>
-                    <td class="work_done"></td>
-
-                    <td class="work_done"></td>
-                    <td class="work_done"></td>
-
-                    <td class="work_doing"></td>
-                    <td class="work_doing"></td>
-
-                    <td></td>
-                    <td></td>
-
-                    <td></td>
-                    <td></td>
-
-                    <td></td>
-                    <td></td>
-                  </tr>
-                  <tr>
-                      <td>2</td>
-                      <td>CD02</td>
-                      <td>李四</td>
-                      <td>20190301</td>
-                      <td>20190926</td>
-                      <td>150d</td>
-                      <td>50%</td>
-                      <td></td>
-                      <td></td>
-  
-                      <td class="work_done"></td>
-                      <td class="work_done"></td>
-  
-                      <td class="work_done"></td>
-                      <td class="work_done"></td>
-  
-                      <td class="work_done"></td>
-                      <td class="work_done"></td>
-  
-                      <td class="work_doing"></td>
-                      <td class="work_doing"></td>
-  
-                      <td class="work_doing"></td>
-                      <td class="work_doing"></td>
-  
-                      <td class="work_doing"></td>
-                      <td class="work_doing"></td>
-  
-                      <td class="work_doing"></td>
-                      <td></td>
-                    </tr>
-                    <tr>
-                        <td>3</td>
-                        <td>CD03</td>
-                        <td>Jack</td>
-                        <td>20190315</td>
-                        <td>20190606</td>
-                        <td>60d</td>
-                        <td>90%</td>
-                        <td></td>
-                        <td></td>
-    
-                        <td class=""></td>
-                        <td class="work_done"></td>
-    
-                        <td class="work_done"></td>
-                        <td class="work_done"></td>
-    
-                        <td class="work_done"></td>
-                        <td class="work_done"></td>
-    
-                        <td class="work_doing"></td>
-                        <td class=""></td>
-    
-                        <td class=""></td>
-                        <td class=""></td>
-    
-                        <td class=""></td>
-                        <td class=""></td>
-    
-                        <td class=""></td>
-                        <td></td>
-                      </tr>
-                      <tr>
-                          <td>4</td>
-                          <td>CD04</td>
-                          <td>Alise</td>
-                          <td>20190401</td>
-                          <td>20190816</td>
-                          <td>100d</td>
-                          <td>40%</td>
-                          <td></td>
-                          <td></td>
-      
-                          <td class=""></td>
-                          <td class=""></td>
-      
-                          <td class="work_done"></td>
-                          <td class="work_done"></td>
-      
-                          <td class="work_done"></td>
-                          <td class="work_doing"></td>
-      
-                          <td class="work_doing"></td>
-                          <td class="work_doing"></td>
-      
-                          <td class="work_doing"></td>
-                          <td class="work_doing"></td>
-      
-                          <td class="work_doing"></td>
-                          <td class=""></td>
-      
-                          <td class=""></td>
-                          <td></td>
-                        </tr>
-                        <tr>
-                            <td>5</td>
-                            <td>CD05</td>
-                            <td>Tom</td>
-                            <td>20190410</td>
-                            <td>20190924</td>
-                            <td>120d</td>
-                            <td>30%</td>
-                            <td></td>
-                            <td></td>
-        
-                            <td class=""></td>
-                            <td class=""></td>
-        
-                            <td class=""></td>
-                            <td class="work_done"></td>
-        
-                            <td class="work_done"></td>
-                            <td class="work_doing"></td>
-        
-                            <td class="work_doing"></td>
-                            <td class="work_doing"></td>
-        
-                            <td class="work_doing"></td>
-                            <td class="work_doing"></td>
-        
-                            <td class="work_doing"></td>
-                            <td class="work_doing"></td>
-        
-                            <td class="work_doing"></td>
-                            <td></td>
-                          </tr>
-                          <tr>
-                              <td>6</td>
-                              <td>CD06</td>
-                              <td>王五</td>
-                              <td>20190422</td>
-                              <td>20190906</td>
-                              <td>100d</td>
-                              <td>25%</td>
-                              <td></td>
-                              <td></td>
-          
-                              <td class=""></td>
-                              <td class=""></td>
-          
-                              <td class=""></td>
-                              <td class=""></td>
-          
-                              <td class="work_done"></td>
-                              <td class="work_done"></td>
-          
-                              <td class="work_doing"></td>
-                              <td class="work_doing"></td>
-          
-                              <td class="work_doing"></td>
-                              <td class="work_doing"></td>
-          
-                              <td class="work_doing"></td>
-                              <td class="work_doing"></td>
-          
-                              <td class=""></td>
-                              <td></td>
-                            </tr>
-                            <tr>
-                                <td>7</td>
-                                <td>CD07</td>
-                                <td>超人</td>
-                                <td>20190510</td>
-                                <td>20190829</td>
-                                <td>80d</td>
-                                <td>15%</td>
-                                <td></td>
-                                <td></td>
-            
-                                <td class=""></td>
-                                <td class=""></td>
-            
-                                <td class=""></td>
-                                <td class=""></td>
-            
-                                <td class=""></td>
-                                <td class="work_done"></td>
-            
-                                <td class="work_doing"></td>
-                                <td class="work_doing"></td>
-            
-                                <td class="work_doing"></td>
-                                <td class="work_doing"></td>
-            
-                                <td class="work_doing"></td>
-                                <td class="work_doing"></td>
-            
-                                <td class=""></td>
-                                <td class=""></td>
-                              </tr>
-                              <tr>
-                                  <td>8</td>
-                                  <td>CD08</td>
-                                  <td>Mike</td>
-                                  <td>20190527</td>
-                                  <td>20190913</td>
-                                  <td>80d</td>
-                                  <td>0%</td>
-                                  <td></td>
-                                  <td></td>
-              
-                                  <td class=""></td>
-                                  <td class=""></td>
-              
-                                  <td class=""></td>
-                                  <td class=""></td>
-              
-                                  <td class=""></td>
-                                  <td class=""></td>
-              
-                                  <td class="work_doing"></td>
-                                  <td class="work_doing"></td>
-              
-                                  <td class="work_doing"></td>
-                                  <td class="work_doing"></td>
-              
-                                  <td class="work_doing"></td>
-                                  <td class="work_doing"></td>
-              
-                                  <td class="work_doing"></td>
-                                  <td class=""></td>
-                                </tr>
-                </tbody>
-              </nz-table>
-          </nz-card>
-    </div>
+  <div nz-col nzXs="24" nzSm="24" nzMd="24" nzLg="24">
+    <nz-card [nzLoading]="loading" [nzBordered]="false" [nzTitle]="'项目费用占比' | translate" class="mb-0">
+      <h4 class="margin:5px 0 5px 0;"></h4>
+      <nz-table [nzShowPagination]="false">
+        <thead>
+          <tr>
+            <!-- 序号 -->
+            <th rowspan="2">{{ 'milestone.serial.number' | translate }}</th>
+
+            <!-- 任务 -->
+            <th rowspan="2">{{ 'working.task' | translate }}</th>
+
+            <!-- 负责人 -->
+            <th rowspan="2">{{ 'depart.person.in.charge"' | translate }}</th>
+
+            <!-- 开始   时间 -->
+            <th rowspan="2">{{ 'start' | translate }}<br />{{ 'date' | translate }}</th>
+
+            <!-- 完成 时间 -->
+            <th rowspan="2">{{ 'cost.finish' | translate }}<br />{{ 'date' | translate }}</th>
+
+            <!-- 工期 -->
+            <th rowspan="2">{{ 'limit.time' | translate }}</th>
+
+            <!-- 进度 -->
+            <th rowspan="2">{{ 'schedule' | translate }}</th>
+
+            <!-- 年 月 -->
+            <th colspan="2">19{{ 'the.year' | translate }}2{{ 'month' | translate }}</th>
+            <th colspan="2">19{{ 'the.year' | translate }}3{{ 'month' | translate }}</th>
+            <th colspan="2">19{{ 'the.year' | translate }}4{{ 'month' | translate }}</th>
+            <th colspan="2">19{{ 'the.year' | translate }}5{{ 'month' | translate }}</th>
+            <th colspan="2">19{{ 'the.year' | translate }}6{{ 'month' | translate }}</th>
+            <th colspan="2">19{{ 'the.year' | translate }}7{{ 'month' | translate }}</th>
+            <th colspan="2">19{{ 'the.year' | translate }}8{{ 'month' | translate }}</th>
+            <th colspan="2">19{{ 'the.year' | translate }}9{{ 'month' | translate }}</th>
+          </tr>
+          <tr>
+            <th>10</th>
+            <th>25</th>
+            <th>10</th>
+            <th>25</th>
+            <th>10</th>
+            <th>25</th>
+            <th>10</th>
+            <th>25</th>
+            <th>10</th>
+            <th>25</th>
+            <th>10</th>
+            <th>25</th>
+            <th>10</th>
+            <th>25</th>
+            <th>10</th>
+            <th>25</th>
+          </tr>
+        </thead>
+        <tbody>
+          <tr>
+            <td>1</td>
+            <td>CD01</td>
+            <td>张三</td>
+            <td>20190201</td>
+            <td>20190620</td>
+            <td>100d</td>
+            <td>85%</td>
+            <td class="work_done"></td>
+            <td class="work_done"></td>
+
+            <td class="work_done"></td>
+            <td class="work_done"></td>
+
+            <td class="work_done"></td>
+            <td class="work_done"></td>
+
+            <td class="work_done"></td>
+            <td class="work_done"></td>
+
+            <td class="work_doing"></td>
+            <td class="work_doing"></td>
+
+            <td></td>
+            <td></td>
+
+            <td></td>
+            <td></td>
+
+            <td></td>
+            <td></td>
+          </tr>
+          <tr>
+            <td>2</td>
+            <td>CD02</td>
+            <td>李四</td>
+            <td>20190301</td>
+            <td>20190926</td>
+            <td>150d</td>
+            <td>50%</td>
+            <td></td>
+            <td></td>
+
+            <td class="work_done"></td>
+            <td class="work_done"></td>
+
+            <td class="work_done"></td>
+            <td class="work_done"></td>
+
+            <td class="work_done"></td>
+            <td class="work_done"></td>
+
+            <td class="work_doing"></td>
+            <td class="work_doing"></td>
+
+            <td class="work_doing"></td>
+            <td class="work_doing"></td>
+
+            <td class="work_doing"></td>
+            <td class="work_doing"></td>
+
+            <td class="work_doing"></td>
+            <td></td>
+          </tr>
+          <tr>
+            <td>3</td>
+            <td>CD03</td>
+            <td>Jack</td>
+            <td>20190315</td>
+            <td>20190606</td>
+            <td>60d</td>
+            <td>90%</td>
+            <td></td>
+            <td></td>
+
+            <td class=""></td>
+            <td class="work_done"></td>
+
+            <td class="work_done"></td>
+            <td class="work_done"></td>
+
+            <td class="work_done"></td>
+            <td class="work_done"></td>
+
+            <td class="work_doing"></td>
+            <td class=""></td>
+
+            <td class=""></td>
+            <td class=""></td>
+
+            <td class=""></td>
+            <td class=""></td>
+
+            <td class=""></td>
+            <td></td>
+          </tr>
+          <tr>
+            <td>4</td>
+            <td>CD04</td>
+            <td>Alise</td>
+            <td>20190401</td>
+            <td>20190816</td>
+            <td>100d</td>
+            <td>40%</td>
+            <td></td>
+            <td></td>
+
+            <td class=""></td>
+            <td class=""></td>
+
+            <td class="work_done"></td>
+            <td class="work_done"></td>
+
+            <td class="work_done"></td>
+            <td class="work_doing"></td>
+
+            <td class="work_doing"></td>
+            <td class="work_doing"></td>
+
+            <td class="work_doing"></td>
+            <td class="work_doing"></td>
+
+            <td class="work_doing"></td>
+            <td class=""></td>
+
+            <td class=""></td>
+            <td></td>
+          </tr>
+          <tr>
+            <td>5</td>
+            <td>CD05</td>
+            <td>Tom</td>
+            <td>20190410</td>
+            <td>20190924</td>
+            <td>120d</td>
+            <td>30%</td>
+            <td></td>
+            <td></td>
+
+            <td class=""></td>
+            <td class=""></td>
+
+            <td class=""></td>
+            <td class="work_done"></td>
+
+            <td class="work_done"></td>
+            <td class="work_doing"></td>
+
+            <td class="work_doing"></td>
+            <td class="work_doing"></td>
+
+            <td class="work_doing"></td>
+            <td class="work_doing"></td>
+
+            <td class="work_doing"></td>
+            <td class="work_doing"></td>
+
+            <td class="work_doing"></td>
+            <td></td>
+          </tr>
+          <tr>
+            <td>6</td>
+            <td>CD06</td>
+            <td>王五</td>
+            <td>20190422</td>
+            <td>20190906</td>
+            <td>100d</td>
+            <td>25%</td>
+            <td></td>
+            <td></td>
+
+            <td class=""></td>
+            <td class=""></td>
+
+            <td class=""></td>
+            <td class=""></td>
+
+            <td class="work_done"></td>
+            <td class="work_done"></td>
+
+            <td class="work_doing"></td>
+            <td class="work_doing"></td>
+
+            <td class="work_doing"></td>
+            <td class="work_doing"></td>
+
+            <td class="work_doing"></td>
+            <td class="work_doing"></td>
+
+            <td class=""></td>
+            <td></td>
+          </tr>
+          <tr>
+            <td>7</td>
+            <td>CD07</td>
+            <td>超人</td>
+            <td>20190510</td>
+            <td>20190829</td>
+            <td>80d</td>
+            <td>15%</td>
+            <td></td>
+            <td></td>
+
+            <td class=""></td>
+            <td class=""></td>
+
+            <td class=""></td>
+            <td class=""></td>
+
+            <td class=""></td>
+            <td class="work_done"></td>
+
+            <td class="work_doing"></td>
+            <td class="work_doing"></td>
+
+            <td class="work_doing"></td>
+            <td class="work_doing"></td>
+
+            <td class="work_doing"></td>
+            <td class="work_doing"></td>
+
+            <td class=""></td>
+            <td class=""></td>
+          </tr>
+          <tr>
+            <td>8</td>
+            <td>CD08</td>
+            <td>Mike</td>
+            <td>20190527</td>
+            <td>20190913</td>
+            <td>80d</td>
+            <td>0%</td>
+            <td></td>
+            <td></td>
+
+            <td class=""></td>
+            <td class=""></td>
+
+            <td class=""></td>
+            <td class=""></td>
+
+            <td class=""></td>
+            <td class=""></td>
+
+            <td class="work_doing"></td>
+            <td class="work_doing"></td>
+
+            <td class="work_doing"></td>
+            <td class="work_doing"></td>
+
+            <td class="work_doing"></td>
+            <td class="work_doing"></td>
+
+            <td class="work_doing"></td>
+            <td class=""></td>
+          </tr>
+        </tbody>
+      </nz-table>
+    </nz-card>
   </div>
+</div>
 <div nz-row [nzGutter]="24">
   <div nz-col nzXs="24" nzSm="24" nzMd="24" nzLg="12">
     <nz-card [nzLoading]="loading" [nzBordered]="false" [nzTitle]="'2018年度成本分析' | translate" class="mb-0">
-      
-        <h4 class="margin:8px 0 32px 0;"></h4>
-        <g2-pie *ngIf="salesPieData" [data]="feeData" [hasLegend]="true" [subTitle]="'' | translate" [height]="248" [lineWidth]="4" [total]=""
-          [valueFormat]="feeFormat" [inner]="0">
-        </g2-pie>
+      <h4 class="margin:8px 0 32px 0;"></h4>
+      <g2-pie
+        *ngIf="salesPieData"
+        [data]="feeData"
+        [hasLegend]="true"
+        [subTitle]="'' | translate"
+        [height]="248"
+        [lineWidth]="4"
+        [total]=""
+        [valueFormat]="feeFormat"
+        [inner]="0"
+      >
+      </g2-pie>
     </nz-card>
   </div>
   <div nz-col nzXs="24" nzSm="24" nzMd="24" nzLg="12">
-    <nz-card [nzLoading]="loading" [nzBordered]="false" [nzTitle]="'项目风险预警' | translate" 
-      class="sales-card mb-0" >
+    <nz-card [nzLoading]="loading" [nzBordered]="false" [nzTitle]="'项目风险预警' | translate" class="sales-card mb-0">
       <h4 class="margin:8px 0 32px 0;"></h4>
-      <g2-bar *ngIf="salesPieData" [data]="alertData" [height]="248" >
-      </g2-bar>
+      <g2-bar *ngIf="salesPieData" [data]="alertData" [height]="248"> </g2-bar>
     </nz-card>
   </div>
-</div>
+</div>

+ 141 - 27
src/app/routes/report-form/project-situation/project-situation.component.html

@@ -4,7 +4,8 @@
     <div nz-row [nzGutter]="{ xs: 8, sm: 16, md: 24, lg: 32 }">
       <div nz-col [nzSpan]="8">
         <nz-form-item>
-          <nz-form-label [nzSm]="6" [nzXs]="24">项目编码</nz-form-label>
+          <!-- 项目编码 -->
+          <nz-form-label [nzSm]="6" [nzXs]="24">{{ 'project.code' | translate }}</nz-form-label>
           <nz-form-control [nzSm]="14" [nzXs]="24">
             <input nz-input name="proArchivesCode" [(ngModel)]="projectStatisticsWhere.proArchivesCode" />
           </nz-form-control>
@@ -12,7 +13,9 @@
       </div>
       <div nz-col [nzSpan]="8">
         <nz-form-item>
-          <nz-form-label [nzSm]="6" [nzXs]="24">项目名称</nz-form-label>
+          <!--  项目名称-->
+          <nz-form-label [nzSm]="6" [nzXs]="24">{{'cost.item.name'
+            translate}}</nz-form-label>
           <nz-form-control [nzSm]="14" [nzXs]="24">
             <input nz-input name="proArchivesName" [(ngModel)]="projectStatisticsWhere.proArchivesName" />
           </nz-form-control>
@@ -20,9 +23,12 @@
       </div>
       <div nz-col [nzSpan]="8">
         <nz-form-item>
-          <nz-form-label [nzSm]="2" [nzXs]="24" [nzNoColon]=true></nz-form-label>
+          <nz-form-label [nzSm]="2" [nzXs]="24" [nzNoColon]="true"></nz-form-label>
           <nz-form-control [nzSm]="14" [nzXs]="24">
-            <button nzType="primary" (click)="query()" nz-button><span>查询</span></button>
+            <button nzType="primary" (click)="query()" nz-button>
+              <!-- 查询 -->
+              <span>{{ 'store.search' | translate }}</span>
+            </button>
           </nz-form-control>
         </nz-form-item>
       </div>
@@ -30,36 +36,144 @@
   </form>
   <div nz-row [nzGutter]="{ xs: 8, sm: 16, md: 24, lg: 32 }">
     <div nz-col [nzSpan]="24">
-      <nz-table  [nzScroll]="{ x: '1930px', y:'400px'}" class="tableTdPadding" #expandTable [nzData]="listOfMapData" nzTableLayout="fixed"
-        nzSize="small" [nzShowPagination]="false" [nzFrontPagination]="false" [nzLoading]="isSpinning">
+      <nz-table
+        [nzScroll]="{ x: '1930px', y: '400px' }"
+        class="tableTdPadding"
+        #expandTable
+        [nzData]="listOfMapData"
+        nzTableLayout="fixed"
+        nzSize="small"
+        [nzShowPagination]="false"
+        [nzFrontPagination]="false"
+        [nzLoading]="isSpinning"
+      >
         <thead>
           <tr>
-            <th nzWidth="180px" nzLeft="0px">项目编码</th>
-            <th nzWidth="150px" nzLeft="173px">项目名称</th>
-            <th nzWidth="150px">项目组成员</th>
-            <th nzWidth="100px">收付款条线编码</th>
-            <th nzWidth="100px">收付款条线名称</th>
-            <th nzWidth="100px">里程碑名称</th>
-            <th nzWidth="100px">里程碑计划开始时间</th>
-            <th nzWidth="100px">里程碑实际开始时间</th>
-            <th nzWidth="100px">里程碑计划结束时间</th>
-            <th nzWidth="100px">里程碑实际结束时间</th>
-            <th nzWidth="100px">里程碑计划工时</th>
-            <th nzWidth="100px">里程碑实际工时</th>
-            <th nzWidth="100px">里程碑计划收款</th>
-            <th nzWidth="100px">里程碑开票金额</th>
-            <th nzWidth="100px">里程碑实际收款</th>
-            <th nzWidth="100px">里程碑计划付款</th>
-            <th nzWidth="100px">里程碑收票金额</th>
-            <th nzWidth="100px">里程碑实际付款</th>
+            <!-- 项目编码 -->
+            <th nzWidth="180px" nzLeft="0px">{{ 'project.code' | translate }}</th>
+
+            <!-- 项目名称 -->
+            <th nzWidth="150px" nzLeft="173px">
+              {{'cost.item.name'
+              translate}}
+            </th>
+
+            <!-- 项目组成员 -->
+            <th nzWidth="150px">
+              {{ 'project' | translate }}
+              {{ 'group.members' | translate }}
+            </th>
+
+            <!-- 收付款条线编码 -->
+            <th nzWidth="100px">
+              {{ 'receiving' | translate }}
+              {{ 'line.code' | translate }}
+            </th>
+
+            <!-- 收付款条线名称 -->
+            <th nzWidth="100px">
+              {{ 'receiving' | translate }}
+              {{ 'line.name' | translate }}
+            </th>
+
+            <!-- 里程碑名称 -->
+            <th nzWidth="100px">
+              {{ 'financial.management.milestoneName' | translate }}
+              {{ 'Name' | translate }}
+            </th>
+
+            <!--  里程碑计划开始时间-->
+            <th nzWidth="100px">
+              {{ 'financial.management.milestoneName' | translate }}
+              {{ 'the.plan' | translate }}
+              {{ 'contract.start.date' | translate }}
+            </th>
+
+            <!-- 里程碑实际开始时间 -->
+            <th nzWidth="100px">
+              {{ 'financial.management.milestoneName' | translate }}
+              {{ 'actual.start.time' | translate }}
+            </th>
+
+            <!--里程碑计划结束时间  -->
+            <th nzWidth="100px">
+              {{ 'financial.management.milestoneName' | translate }}
+              {{ 'the.plan' | translate }}
+              {{ 'contract.end.date' | translate }}
+            </th>
+
+            <!-- 里程碑实际结束时间 -->
+            <th nzWidth="100px">
+              {{ 'financial.management.milestoneName' | translate }}
+              {{ 'actual' | translate }}
+              {{ 'contract.end.date' | translate }}
+            </th>
+
+            <!-- 里程碑计划工时 -->
+            <th nzWidth="100px">
+              {{ 'financial.management.milestoneName' | translate }}
+              {{ 'working.actual.hours' | translate }}
+              {{ 'working.time' | translate }}
+            </th>
+
+            <!-- 里程碑实际工时 -->
+            <th nzWidth="100px">
+              {{ 'financial.management.milestoneName' | translate }}
+              {{ 'working.actual.hours' | translate }}
+            </th>
+
+            <!-- 里程碑计划收款 -->
+            <th nzWidth="100px">
+              {{ 'financial.management.milestoneName' | translate }}
+              {{ 'the.plan' | translate }}
+              {{ 'collection' | translate }}
+            </th>
+
+            <!-- 里程碑开票金额 -->
+            <th nzWidth="100px">
+              {{ 'financial.management.milestoneName' | translate }}
+              {{ 'invoice.amount' | translate }}
+            </th>
+
+            <!-- 里程碑实际收款 -->
+            <th nzWidth="100px">
+              {{ 'financial.management.milestoneName' | translate }}
+              {{ 'actual' | translate }}
+              {{ 'collection' | translate }}
+            </th>
+
+            <!-- 里程碑计划付款 -->
+            <th nzWidth="100px">
+              {{ 'financial.management.milestoneName' | translate }}
+              {{ 'the.plan' | translate }}
+              {{ 'payFor' | translate }}
+            </th>
+
+            <!-- 里程碑收票金额 -->
+            <th nzWidth="100px">
+              {{ 'financial.management.milestoneName' | translate }}
+              {{ 'ticket.amount' | translate }}
+            </th>
+
+            <!--  里程碑实际付款-->
+            <th nzWidth="100px">
+              {{ 'financial.management.milestoneName' | translate }}
+              {{ 'actual' | translate }}
+              {{ 'payFor' | translate }}
+            </th>
           </tr>
         </thead>
         <tbody>
           <ng-container *ngFor="let data of expandTable.data">
             <ng-container *ngFor="let item of mapOfExpandedData[data.key]">
               <tr *ngIf="(item.parent && item.parent.expand) || !item.parent">
-                <td nzLeft="0px" [nzIndentSize]="item.level! * 20" [nzShowExpand]="!!item.children"
-                  [(nzExpand)]="item.expand" (nzExpandChange)="collapse(mapOfExpandedData[data.key], item, $event)">
+                <td
+                  nzLeft="0px"
+                  [nzIndentSize]="item.level! * 20"
+                  [nzShowExpand]="!!item.children"
+                  [(nzExpand)]="item.expand"
+                  (nzExpandChange)="collapse(mapOfExpandedData[data.key], item, $event)"
+                >
                   {{ item.proCode }}
                 </td>
                 <td nzLeft="173px">{{ item.proName }}</td>
@@ -86,4 +200,4 @@
       </nz-table>
     </div>
   </div>
-</nz-card>
+</nz-card>

+ 95 - 34
src/app/routes/report-form/project-statistics/project-statistics.component.html

@@ -4,7 +4,8 @@
     <div nz-row [nzGutter]="{ xs: 8, sm: 16, md: 24, lg: 32 }">
       <div nz-col [nzSpan]="8">
         <nz-form-item>
-          <nz-form-label [nzSm]="6" [nzXs]="24">项目编码</nz-form-label>
+          <!-- 项目编码 -->
+          <nz-form-label [nzSm]="6" [nzXs]="24">{{ 'project.code' | translate }}</nz-form-label>
           <nz-form-control [nzSm]="14" [nzXs]="24">
             <input nz-input name="proArchivesCode" [(ngModel)]="projectStatisticsWhere.proArchivesCode" />
           </nz-form-control>
@@ -12,7 +13,9 @@
       </div>
       <div nz-col [nzSpan]="8">
         <nz-form-item>
-          <nz-form-label [nzSm]="6" [nzXs]="24">项目名称</nz-form-label>
+          <!-- 项目名称 -->
+          <nz-form-label [nzSm]="6" [nzXs]="24">{{'cost.item.name'
+            translate}}</nz-form-label>
           <nz-form-control [nzSm]="14" [nzXs]="24">
             <input nz-input name="proArchivesName" [(ngModel)]="projectStatisticsWhere.proArchivesName" />
           </nz-form-control>
@@ -20,10 +23,16 @@
       </div>
       <div nz-col [nzSpan]="8">
         <nz-form-item>
-          <nz-form-label [nzSm]="2" [nzXs]="24" [nzNoColon]=true></nz-form-label>
+          <nz-form-label [nzSm]="2" [nzXs]="24" [nzNoColon]="true"></nz-form-label>
           <nz-form-control [nzSm]="14" [nzXs]="24">
-            <button nzType="primary" (click)="query()" nz-button><span>查询</span></button>
-            <button nzType="primary" (click)="export()" nz-button><span>导出</span></button>
+            <!-- 查询 -->
+            <button nzType="primary" (click)="query()" nz-button>
+              <span>{{ 'button.query' | translate }}</span>
+            </button>
+            <button nzType="primary" (click)="export()" nz-button>
+              <!-- 导出 -->
+              <span>{{ 'financial.management.export' | translate }}</span>
+            </button>
           </nz-form-control>
         </nz-form-item>
       </div>
@@ -33,8 +42,16 @@
   <!-- style="height:500px;overflow-y:scroll;" -->
   <div nz-row [nzGutter]="{ xs: 8, sm: 16, md: 24, lg: 32 }">
     <div nz-col [nzSpan]="24">
-      <nz-table nzSize="small" [nzScroll]="{ x: '2220px', y:'550px'}" [nzData]="listOfData" #basicTable nzBordered
-        [nzShowPagination]="false" [nzFrontPagination]="false" [nzLoading]="isSpinning">
+      <nz-table
+        nzSize="small"
+        [nzScroll]="{ x: '2220px', y: '550px' }"
+        [nzData]="listOfData"
+        #basicTable
+        nzBordered
+        [nzShowPagination]="false"
+        [nzFrontPagination]="false"
+        [nzLoading]="isSpinning"
+      >
         <thead>
           <!-- <tr>
             <th rowSpan="2" nzWidth="170px">项目编码</th>
@@ -47,34 +64,78 @@
             <th rowSpan="2" nzWidth="100px">毛利</th>
           </tr> -->
           <tr>
-            <th rowSpan="2" nzWidth="170px">项目编码</th>
-            <th rowSpan="2" nzWidth="150px">项目名称</th>
-            <th nzWidth="100px">产品</th>
-            <th nzWidth="100px">实施</th>
-            <th nzWidth="100px">开发</th>
-            <th nzWidth="100px">服务</th>
-            <th nzWidth="100px">其他</th>
-            <th nzWidth="100px">产品</th>
-            <th nzWidth="100px">实施</th>
-            <th nzWidth="100px">开发</th>
-            <th nzWidth="100px">服务</th>
-            <th nzWidth="100px">其他</th>
-            <th rowSpan="2" nzWidth="100px">应税合计</th>
-            <th rowSpan="2" nzWidth="100px">税后合计</th>
-            <th nzWidth="100px">预留</th>
-            <th nzWidth="100px">工资</th>
-            <th nzWidth="100px">奖金</th>
-            <th nzWidth="100px">费用</th>
-            <th nzWidth="100px">销售提成</th>
-            <th nzWidth="100px">公摊费用</th>
-            <th rowSpan="2" nzWidth="100px">毛利</th>
+            <!-- 项目编码 -->
+            <th rowSpan="2" nzWidth="170px">{{ 'project.code' | translate }}</th>
+
+            <!--项目名称  -->
+            <th rowSpan="2" nzWidth="150px">{{'cost.item.name'translate}}</th>
+
+            <!-- 产品 -->
+            <th nzWidth="100px">{{ 'product' | translate }}</th>
+
+            <!-- 实施 -->
+            <th nzWidth="100px">{{ 'implementation' | translate }}</th>
+
+            <!-- 开发 -->
+            <th nzWidth="100px">{{ 'development' | translate }}</th>
+
+            <!-- 服务 -->
+            <th nzWidth="100px">{{ 'service' | translate }}</th>
+
+            <!-- 其他 -->
+            <th nzWidth="100px">{{ 'pm.quotation.other' | translate }}</th>
+
+            <!--产品  -->
+            <th nzWidth="100px">{{ 'product' | translate }}</th>
+
+            <!-- 实施 -->
+            <th nzWidth="100px">{{ 'implementation' | translate }}</th>
+
+            <!-- 开发 -->
+            <th nzWidth="100px">{{ 'development' | translate }}</th>
+
+            <!--服务  -->
+            <th nzWidth="100px">{{ 'service' | translate }}</th>
+
+            <!-- 其他 -->
+            <th nzWidth="100px">{{ 'pm.quotation.other' | translate }}</th>
+
+            <!--  应税合计-->
+            <th rowSpan="2" nzWidth="100px">{{ 'taxable.amount' | translate }}</th>
+
+            <!-- 税后合计 -->
+            <th rowSpan="2" nzWidth="100px">{{ 'after.tax.total' | translate }}</th>
+
+            <!-- 预留 -->
+            <th nzWidth="100px">{{ 'reserved' | translate }}</th>
+
+            <!-- 工资 -->
+            <th nzWidth="100px">{{ 'wage' | translate }}</th>
+
+            <!-- 奖金 -->
+            <th nzWidth="100px">{{ 'bonus' | translate }}</th>
+
+            <!-- 费用 -->
+            <th nzWidth="100px">{{ 'pm.quotation.fee' | translate }}</th>
+
+            <!-- 销售提成 -->
+            <th nzWidth="100px">{{ 'sales' | translate }}{{ 'commission' | translate }}</th>
+
+            <!-- 公摊费用 -->
+            <th nzWidth="100px">{{ 'equally.shared.costs' | translate }}</th>
+
+            <!-- 毛利 -->
+            <th rowSpan="2" nzWidth="100px">{{ 'Gross.profit' | translate }}</th>
           </tr>
           <tr>
-            
-            <th colSpan="5">收入</th>
-            <th colSpan="5">付款</th>
-            <th colSpan="6">内部成本</th>
-            
+            <!-- 收入 -->
+            <th colSpan="5">{{ 'income' | translate }}</th>
+
+            <!-- 付款 -->
+            <th colSpan="5">{{ 'payFor' | translate }}</th>
+
+            <!-- 内部成本 -->
+            <th colSpan="6">{{ 'internal.cost' | translate }}</th>
           </tr>
         </thead>
         <tbody>
@@ -106,4 +167,4 @@
       </nz-table>
     </div>
   </div>
-</nz-card>
+</nz-card>

+ 32 - 18
src/app/routes/shared/modal/produt-select/produt-select.component.html

@@ -6,7 +6,7 @@
       <div nz-row [nzGutter]="24">
         <div nz-col nzMd="24" nzLg="24">
           <nz-input-group [nzSuffix]="suffixIcon" style="width:100%">
-            <input type="text" nz-input placeholder="请输入" [(ngModel)]="searchValue" />
+            <input type="text" nz-input placeholder="{{ 'placeholder' | translate }}" [(ngModel)]="searchValue" />
           </nz-input-group>
           <ng-template #suffixIcon>
             <i nz-icon type="search"></i>
@@ -16,16 +16,19 @@
       <!-- tree -->
       <div nz-row [nzGutter]="24">
         <div nz-col nzMd="24" nzLg="24">
-          <nz-tree [nzData]="nodes" [nzSearchValue]="searchValue" (nzClick)="treeClick($event)"
-            (nzDblClick)="openFolder($event)">
-            <ng-template #contextTemplate>
-            </ng-template>
+          <nz-tree
+            [nzData]="nodes"
+            [nzSearchValue]="searchValue"
+            (nzClick)="treeClick($event)"
+            (nzDblClick)="openFolder($event)"
+          >
+            <ng-template #contextTemplate> </ng-template>
             <ng-template #nzTreeTemplate let-node>
               <span class="custom-node">
-                <span *ngIf="!node.isLeaf" (contextmenu)="contextMenu(node.key,$event, contextTemplate)">
+                <span *ngIf="!node.isLeaf" (contextmenu)="contextMenu(node.key, $event, contextTemplate)">
                   <span class="folder-name">{{ node.title }}</span>
                 </span>
-                <span *ngIf="node.isLeaf" (contextmenu)="contextMenu(node.key,$event, contextTemplate)">
+                <span *ngIf="node.isLeaf" (contextmenu)="contextMenu(node.key, $event, contextTemplate)">
                   <span class="file-name">{{ node.title }}</span>
                 </span>
               </span>
@@ -39,26 +42,37 @@
   <div nz-col [nzSpan]="18">
     <nz-card>
       <!-- 搜索条件 -->
-      <div nz-row [nzGutter]="24">
-
-      </div>
+      <div nz-row [nzGutter]="24"></div>
       <!-- 表格 -->
       <div nz-row [nzGutter]="24">
         <div nz-col [nzSpan]="24">
-          <nz-table nzSize="small" #basicTable [nzData]="listOfData" [nzFrontPagination]="false" [nzTotal]="page.total"
-            [nzPageIndex]="page.current" (nzPageIndexChange)="pageIndexChange($event)" [nzLoading]="isSpinning"
-            (nzCurrentPageDataChange)="currentPageDataChange($event)">
+          <nz-table
+            nzSize="small"
+            #basicTable
+            [nzData]="listOfData"
+            [nzFrontPagination]="false"
+            [nzTotal]="page.total"
+            [nzPageIndex]="page.current"
+            (nzPageIndexChange)="pageIndexChange($event)"
+            [nzLoading]="isSpinning"
+            (nzCurrentPageDataChange)="currentPageDataChange($event)"
+          >
             <thead>
               <tr>
                 <th></th>
-                <th>产品编码</th>
-                <th>产品名称</th>
-                <th>产品属性</th>
+                <!-- 产品编码 -->
+                <th>{{ 'product' | translate }}{{ 'table.thead.code' | translate }}</th>
+
+                <!-- 产品名称 -->
+                <th>{{ 'product' | translate }}{{ 'contract.name' | translate }}</th>
+
+                <!-- 产品属性 -->
+                <th>{{ 'product' | translate }}{{ 'property' | translate }}</th>
               </tr>
             </thead>
             <tbody>
               <tr *ngFor="let data of basicTable.data">
-                <td nzShowCheckbox [(nzChecked)]="mapOfCheckedId[data.id]" ></td>
+                <td nzShowCheckbox [(nzChecked)]="mapOfCheckedId[data.id]"></td>
                 <td>{{ data.code }}</td>
                 <td>{{ data.name }}</td>
                 <td>{{ data.attribute }}</td>
@@ -69,4 +83,4 @@
       </div>
     </nz-card>
   </div>
-</div>
+</div>

+ 30 - 26
src/app/routes/system/depart/details/details.component.html

@@ -4,32 +4,34 @@
     <nz-form-item>
       <nz-form-label nzRequired [nzSm]="8" [nzXs]="24">{{ 'personnel.code' | translate }}</nz-form-label>
       <nz-form-control [nzSm]="14" [nzXs]="24">
-        {{personnel.code}}
+        {{ personnel.code }}
       </nz-form-control>
     </nz-form-item>
     <!-- 人员名称 -->
     <nz-form-item>
       <nz-form-label nzRequired [nzSm]="8" [nzXs]="24">{{ 'personnel.name' | translate }}</nz-form-label>
       <nz-form-control [nzSm]="14" [nzXs]="24">
-        {{personnel.name}}
+        {{ personnel.name }}
       </nz-form-control>
     </nz-form-item>
     <!-- 英文名称 -->
     <nz-form-item>
       <nz-form-label [nzSm]="8" [nzXs]="24">{{ 'english.name' | translate }}</nz-form-label>
       <nz-form-control [nzSm]="14" [nzXs]="24">
-        {{personnel.enName}}
+        {{ personnel.enName }}
       </nz-form-control>
     </nz-form-item>
     <!-- 性别 -->
     <nz-form-item>
       <nz-form-label nzRequired [nzSm]="8" [nzXs]="24">{{ 'sex' | translate }}</nz-form-label>
       <nz-form-control [nzSm]="14" [nzXs]="24">
-        <ng-container *ngIf="personnel.gender==='0'">
-          男
+        <ng-container *ngIf="personnel.gender === '0'">
+          <!-- 男 -->
+          {{ 'male' | translate }}
         </ng-container>
-        <ng-container *ngIf="personnel.gender==='1'">
-          女
+        <ng-container *ngIf="personnel.gender === '1'">
+          <!-- 女 -->
+          {{ 'female' | translate }}
         </ng-container>
       </nz-form-control>
     </nz-form-item>
@@ -38,8 +40,8 @@
       <nz-form-label nzRequired [nzSm]="8" [nzXs]="24">{{ 'company' | translate }}</nz-form-label>
       <nz-form-control [nzSm]="14" [nzXs]="24">
         <ng-container *ngFor="let data of company">
-          <ng-container *ngIf="data.id===personnel.pkOrg">
-            {{data.departName}}
+          <ng-container *ngIf="data.id === personnel.pkOrg">
+            {{ data.departName }}
           </ng-container>
         </ng-container>
       </nz-form-control>
@@ -48,14 +50,14 @@
     <nz-form-item>
       <nz-form-label [nzSm]="8" [nzXs]="24">{{ 'phone' | translate }}</nz-form-label>
       <nz-form-control [nzSm]="14" [nzXs]="24">
-        {{personnel.mobile}}
+        {{ personnel.mobile }}
       </nz-form-control>
     </nz-form-item>
     <!-- 电话 -->
     <nz-form-item>
       <nz-form-label [nzSm]="8" [nzXs]="24">{{ 'telephone' | translate }}</nz-form-label>
       <nz-form-control [nzSm]="14" [nzXs]="24">
-        {{personnel.tel}}
+        {{ personnel.tel }}
       </nz-form-control>
     </nz-form-item>
     <!-- 部门 -->
@@ -63,8 +65,8 @@
       <nz-form-label nzRequired [nzSm]="8" [nzXs]="24">{{ 'depart' | translate }}</nz-form-label>
       <nz-form-control [nzSm]="14" [nzXs]="24">
         <ng-container *ngFor="let depart of departmentList">
-          <ng-container *ngIf="depart.id===personnel.pkDepart">
-            {{depart.departName}}
+          <ng-container *ngIf="depart.id === personnel.pkDepart">
+            {{ depart.departName }}
           </ng-container>
         </ng-container>
       </nz-form-control>
@@ -74,8 +76,8 @@
       <nz-form-label nzRequired [nzSm]="8" [nzXs]="24">{{ 'personnel.state' | translate }}</nz-form-label>
       <nz-form-control [nzSm]="14" [nzXs]="24">
         <ng-container *ngFor="let person of personStatus">
-          <ng-container *ngIf="person.value===personnel.status">
-            {{person.text}}
+          <ng-container *ngIf="person.value === personnel.status">
+            {{ person.text }}
           </ng-container>
         </ng-container>
       </nz-form-control>
@@ -84,7 +86,7 @@
     <nz-form-item>
       <nz-form-label [nzSm]="8" [nzXs]="24">{{ 'email' | translate }}</nz-form-label>
       <nz-form-control [nzSm]="14" [nzXs]="24">
-        {{personnel.email}}
+        {{ personnel.email }}
       </nz-form-control>
     </nz-form-item>
     <!-- 直接领导 -->
@@ -92,27 +94,29 @@
       <nz-form-label [nzSm]="8" [nzXs]="24">{{ 'personnel.manager' | translate }}</nz-form-label>
       <nz-form-control [nzSm]="14" [nzXs]="24">
         <ng-container *ngFor="let management of managementList">
-          <ng-container *ngIf="management.id===personnel.pkPersonnel">
-            {{management.name}}
+          <ng-container *ngIf="management.id === personnel.pkPersonnel">
+            {{ management.name }}
           </ng-container>
         </ng-container>
       </nz-form-control>
     </nz-form-item>
     <!-- 是否停用 -->
     <nz-form-item>
-      <nz-form-label nzRequired [nzSm]="8" [nzXs]="24">{{ 'whether.using.or.not' | translate }}
-      </nz-form-label>
+      <nz-form-label nzRequired [nzSm]="8" [nzXs]="24">{{ 'whether.using.or.not' | translate }} </nz-form-label>
       <nz-form-control [nzSm]="14" [nzXs]="24">
-        <ng-container *ngIf="personnel.enable==='0'">
-          
+        <ng-container *ngIf="personnel.enable === '0'">
+          {{ 'no' | translate }}
         </ng-container>
-        <ng-container *ngIf="personnel.enable==='1'">
-          是
+        <ng-container *ngIf="personnel.enable === '1'">
+          <!-- 是 -->
+          {{ 'yes' | translate }}
         </ng-container>
       </nz-form-control>
     </nz-form-item>
   </form>
 </nz-spin>
 <div class="footer">
-  <button nz-button (click)="close()"><span>{{ 'button.close' | translate }}</span></button>
-</div>
+  <button nz-button (click)="close()">
+    <span>{{ 'button.close' | translate }}</span>
+  </button>
+</div>

+ 103 - 38
src/app/routes/system/depart/personnel-add/personnel-add.component.html

@@ -6,36 +6,62 @@
     <nz-form-label nzRequired [nzSm]="8" [nzXs]="24">{{ 'personnel.code' | translate }}</nz-form-label>
     <nz-form-control [nzSm]="14" [nzXs]="24">
       <ng-container *ngIf="disabled">
-        <input [(ngModel)]="personnel.code" name="code" nz-input
-          placeholder="{{ 'placeholder' | translate }}{{ 'personnel.code' | translate }}" [disabled]="disabled" maxlength=10/>
+        <input
+          [(ngModel)]="personnel.code"
+          name="code"
+          nz-input
+          placeholder="{{ 'placeholder' | translate }}{{ 'personnel.code' | translate }}"
+          [disabled]="disabled"
+          maxlength="10"
+        />
       </ng-container>
 
       <ng-container *ngIf="!disabled">
-        <input [(ngModel)]="personnel.code" name="code" nz-input
-          placeholder="{{ 'placeholder' | translate }}{{ 'personnel.code' | translate }}" maxlength=10/>
+        <input
+          [(ngModel)]="personnel.code"
+          name="code"
+          nz-input
+          placeholder="{{ 'placeholder' | translate }}{{ 'personnel.code' | translate }}"
+          maxlength="10"
+        />
       </ng-container>
     </nz-form-control>
   </nz-form-item>
   <nz-form-item>
     <nz-form-label nzRequired [nzSm]="8" [nzXs]="24">{{ 'personnel.name' | translate }}</nz-form-label>
     <nz-form-control [nzSm]="14" [nzXs]="24">
-      <input [(ngModel)]="personnel.name" name="name" nz-input
-        placeholder="{{ 'placeholder' | translate }}{{ 'personnel.name' | translate }}" maxlength=10/>
+      <input
+        [(ngModel)]="personnel.name"
+        name="name"
+        nz-input
+        placeholder="{{ 'placeholder' | translate }}{{ 'personnel.name' | translate }}"
+        maxlength="10"
+      />
     </nz-form-control>
   </nz-form-item>
   <nz-form-item>
     <nz-form-label [nzSm]="8" [nzXs]="24">{{ 'english.name' | translate }}</nz-form-label>
     <nz-form-control [nzSm]="14" [nzXs]="24">
-      <input [(ngModel)]="personnel.enName" name="enName" nz-input maxlength=20/>
+      <input [(ngModel)]="personnel.enName" name="enName" nz-input maxlength="20" />
     </nz-form-control>
   </nz-form-item>
   <nz-form-item>
     <nz-form-label nzRequired [nzSm]="8" [nzXs]="24">{{ 'sex' | translate }}</nz-form-label>
     <nz-form-control [nzSm]="14" [nzXs]="24">
-      <nz-select nzShowSearch nzAllowClear nzPlaceHolder="{{ 'select.please.choose' | translate }}" [nzDisabled]="false"
-        [(ngModel)]="personnel.gender" name="gender">
-        <nz-option *ngIf="personnel.gender==''" nzLabel="{{ 'select.please.choose' | translate }}" nzValue=""
-          selected="selected"></nz-option>
+      <nz-select
+        nzShowSearch
+        nzAllowClear
+        nzPlaceHolder="{{ 'select.please.choose' | translate }}"
+        [nzDisabled]="false"
+        [(ngModel)]="personnel.gender"
+        name="gender"
+      >
+        <nz-option
+          *ngIf="personnel.gender == ''"
+          nzLabel="{{ 'select.please.choose' | translate }}"
+          nzValue=""
+          selected="selected"
+        ></nz-option>
         <nz-option nzLabel="{{ 'male' | translate }}" nzValue="0"></nz-option>
         <nz-option nzLabel="{{ 'female' | translate }}" nzValue="1"></nz-option>
       </nz-select>
@@ -44,7 +70,10 @@
   <nz-form-item>
     <nz-form-label [nzSm]="8" [nzXs]="24" nzNoColon="true"></nz-form-label>
     <nz-form-control [nzSm]="14" [nzXs]="24">
-      <button nzType="dashed" nzBlock nz-button (click)="selectPkOrg()"><span>选择公司与部门</span></button>
+      <!-- 选择公司与部门 -->
+      <button nzType="dashed" nzBlock nz-button (click)="selectPkOrg()">
+        <span>{{ 'select.the.company.and.department' | translate }}</span>
+      </button>
     </nz-form-control>
   </nz-form-item>
   <nz-form-item>
@@ -65,7 +94,7 @@
           <nz-option nzLabel="{{org.departName}}" nzValue="{{org.id}}"></nz-option>
         </ng-container>
       </nz-select> -->
-      {{personnel.pkOrgName}}
+      {{ personnel.pkOrgName }}
     </nz-form-control>
   </nz-form-item>
   <nz-form-item>
@@ -79,67 +108,103 @@
           <nz-option nzLabel="{{de.departName}}" nzValue="{{de.id}}"></nz-option>
         </ng-container>
       </nz-select> -->
-      {{personnel.pkDepartName}}
+      {{ personnel.pkDepartName }}
     </nz-form-control>
   </nz-form-item>
   <nz-form-item>
     <nz-form-label [nzSm]="8" [nzXs]="24">{{ 'phone' | translate }}</nz-form-label>
     <nz-form-control [nzSm]="14" [nzXs]="24">
-      <input [(ngModel)]="personnel.mobile" name="mobile" nz-input
-        placeholder="{{ 'placeholder' | translate }}{{ 'phone' | translate }}" maxlength=20/>
+      <input
+        [(ngModel)]="personnel.mobile"
+        name="mobile"
+        nz-input
+        placeholder="{{ 'placeholder' | translate }}{{ 'phone' | translate }}"
+        maxlength="20"
+      />
     </nz-form-control>
   </nz-form-item>
   <nz-form-item>
     <nz-form-label [nzSm]="8" [nzXs]="24">{{ 'telephone' | translate }}</nz-form-label>
     <nz-form-control [nzSm]="14" [nzXs]="24">
-      <input [(ngModel)]="personnel.tel" name="tel" nz-input maxlength=20/>
+      <input [(ngModel)]="personnel.tel" name="tel" nz-input maxlength="20" />
     </nz-form-control>
   </nz-form-item>
 
   <nz-form-item>
     <nz-form-label nzRequired [nzSm]="8" [nzXs]="24">{{ 'On.the.job.status' | translate }}</nz-form-label>
     <nz-form-control [nzSm]="14" [nzXs]="24">
-      <nz-select nzShowSearch nzAllowClear nzPlaceHolder="{{ 'select.please.choose' | translate }}" [nzDisabled]="false"
-        [(ngModel)]="personnel.status" name="status">
-        <nz-option *ngIf="personnel.status==''" nzLabel="{{ 'select.please.choose' | translate }}" nzValue=""
-          selected="selected"></nz-option>
-        <nz-option *ngFor="let item of storageTypes" nzLabel="{{item.text}}" nzValue="{{item.value}}"></nz-option>
+      <nz-select
+        nzShowSearch
+        nzAllowClear
+        nzPlaceHolder="{{ 'select.please.choose' | translate }}"
+        [nzDisabled]="false"
+        [(ngModel)]="personnel.status"
+        name="status"
+      >
+        <nz-option
+          *ngIf="personnel.status == ''"
+          nzLabel="{{ 'select.please.choose' | translate }}"
+          nzValue=""
+          selected="selected"
+        ></nz-option>
+        <nz-option *ngFor="let item of storageTypes" nzLabel="{{ item.text }}" nzValue="{{ item.value }}"></nz-option>
       </nz-select>
     </nz-form-control>
   </nz-form-item>
   <nz-form-item>
     <nz-form-label [nzSm]="8" [nzXs]="24">{{ 'email' | translate }}</nz-form-label>
     <nz-form-control [nzSm]="14" [nzXs]="24">
-      <input [(ngModel)]="personnel.email" name="email" nz-input
-        placeholder="{{ 'placeholder' | translate }}{{ 'email' | translate }}" maxlength=20/>
+      <input
+        [(ngModel)]="personnel.email"
+        name="email"
+        nz-input
+        placeholder="{{ 'placeholder' | translate }}{{ 'email' | translate }}"
+        maxlength="20"
+      />
     </nz-form-control>
   </nz-form-item>
   <nz-form-item>
     <nz-form-label [nzSm]="8" [nzXs]="24">{{ 'personnel.manager' | translate }}</nz-form-label>
     <nz-form-control [nzSm]="14" [nzXs]="24">
-      <nz-select nzShowSearch nzAllowClear nzPlaceHolder="{{ 'select.please.choose' | translate }}" [nzDisabled]="false"
-        [(ngModel)]="personnel.pkPersonnel" name="pkPersonnel">
-        <nz-option *ngIf="personnel.pkPersonnel==''" nzLabel="{{ 'select.please.choose' | translate }}" nzValue=""
-          selected="selected"></nz-option>
+      <nz-select
+        nzShowSearch
+        nzAllowClear
+        nzPlaceHolder="{{ 'select.please.choose' | translate }}"
+        [nzDisabled]="false"
+        [(ngModel)]="personnel.pkPersonnel"
+        name="pkPersonnel"
+      >
+        <nz-option
+          *ngIf="personnel.pkPersonnel == ''"
+          nzLabel="{{ 'select.please.choose' | translate }}"
+          nzValue=""
+          selected="selected"
+        ></nz-option>
         <ng-container *ngFor="let per of listPersonnel">
-          <nz-option nzLabel="{{per.name}}" nzValue="{{per.id}}"></nz-option>
+          <nz-option nzLabel="{{ per.name }}" nzValue="{{ per.id }}"></nz-option>
         </ng-container>
       </nz-select>
     </nz-form-control>
   </nz-form-item>
 
   <nz-form-item>
-    <nz-form-label nzRequired [nzSm]="8" [nzXs]="24">{{ 'whether.using.or.not' | translate }}
-    </nz-form-label>
+    <nz-form-label nzRequired [nzSm]="8" [nzXs]="24">{{ 'whether.using.or.not' | translate }} </nz-form-label>
     <nz-form-control [nzSm]="14" [nzXs]="24">
-      <nz-switch [(ngModel)]="enable" name="enable" [ngModelOptions]="{standalone: true}"
-        nzCheckedChildren="{{'store.yes' | translate}}" nzUnCheckedChildren="{{'store.no' | translate}}"></nz-switch>
+      <nz-switch
+        [(ngModel)]="enable"
+        name="enable"
+        [ngModelOptions]="{ standalone: true }"
+        nzCheckedChildren="{{ 'store.yes' | translate }}"
+        nzUnCheckedChildren="{{ 'store.no' | translate }}"
+      ></nz-switch>
     </nz-form-control>
   </nz-form-item>
   <div class="footer">
-    <button type="button" (click)="close()" class="ant-btn"
-      style="margin-right: 8px;"><span>{{ 'button.close' | translate }}</span></button>
-    <button type="button" (click)="save('')"
-      class="ant-btn ant-btn-primary"><span>{{ 'button.save' | translate }}</span></button>
+    <button type="button" (click)="close()" class="ant-btn" style="margin-right: 8px;">
+      <span>{{ 'button.close' | translate }}</span>
+    </button>
+    <button type="button" (click)="save('')" class="ant-btn ant-btn-primary">
+      <span>{{ 'button.save' | translate }}</span>
+    </button>
   </div>
-</form>
+</form>

+ 49 - 31
src/app/routes/system/role/auth/auth.component.html

@@ -1,44 +1,62 @@
+<!-- 角色授权 -->
 <nz-drawer
-    [nzBodyStyle]="{ height: 'calc(100% - 55px)', overflow: 'auto', 'padding-bottom': '53px' }"
-    [nzMaskClosable]="true"
-    [nzWidth]="600"
-    [nzVisible]="visible"
-    nzTitle="角色授权"
-    (nzOnClose)="close()"
-  >
-
+  [nzBodyStyle]="{ height: 'calc(100% - 55px)', overflow: 'auto', 'padding-bottom': '53px' }"
+  [nzMaskClosable]="true"
+  [nzWidth]="600"
+  [nzVisible]="visible"
+  nzTitle="{{ 'character' | translate }}{{ 'table.To.grant.authorization' | translate }}"
+  (nzOnClose)="close()"
+>
   <nz-tree
-      #nzTreeComponent
-      [nzData]="nodes"
-      nzCheckable
-      nzMultiple
-      [nzCheckStrictly]="checkStrictly"
-      [nzCheckedKeys]="defaultCheckedKeys"
-      [nzExpandedKeys]="defaultExpandedKeys"
-      [nzSelectedKeys]="defaultSelectedKeys"
-      (nzClick)="nzEvent($event)"
-      (nzExpandChange)="nzEvent($event)"
-      (nzClick)="treeClick($event)"
-    >
+    #nzTreeComponent
+    [nzData]="nodes"
+    nzCheckable
+    nzMultiple
+    [nzCheckStrictly]="checkStrictly"
+    [nzCheckedKeys]="defaultCheckedKeys"
+    [nzExpandedKeys]="defaultExpandedKeys"
+    [nzSelectedKeys]="defaultSelectedKeys"
+    (nzClick)="nzEvent($event)"
+    (nzExpandChange)="nzEvent($event)"
+    (nzClick)="treeClick($event)"
+  >
     <ng-template #nzTreeTemplate let-node>
-      <span style="cursor:pointer">{{node.title}}</span>
+      <span style="cursor:pointer">{{ node.title }}</span>
       <span *ngIf="node.scopedSlots" style="color:orange"><i nz-icon nzType="profile" nzTheme="outline"></i></span>
     </ng-template>
-    </nz-tree>
+  </nz-tree>
 
   <div class="footer">
     <nz-dropdown style="float:left" [nzTrigger]="'click'">
-      <button nz-button nz-dropdown><span>{{'tree.operation'|translate}}</span> <i nz-icon type="up"></i></button>
+      <button nz-button nz-dropdown>
+        <span>{{ 'tree.operation' | translate }}</span> <i nz-icon type="up"></i>
+      </button>
       <ul nz-menu>
-        <li nz-menu-item><a href="javascript:;" (click)="operateTree(0)">{{'parent.child.association'|translate}}</a></li>
-        <li nz-menu-item><a href="javascript:;" (click)="operateTree(1)">{{'unlink'|translate}}</a></li>
-        <li nz-menu-item><a href="javascript:;" (click)="operateTree(2)">{{'check.all'|translate}}</a></li>
-        <li nz-menu-item><a href="javascript:;" (click)="operateTree(3)">{{'cancel.all'|translate}}</a></li>
-        <li nz-menu-item><a href="javascript:;" (click)="operateTree(4)">{{'expand.all'|translate}}</a></li>
-        <li nz-menu-item><a href="javascript:;" (click)="operateTree(5)">{{'all.merged'|translate}}</a></li>
+        <li nz-menu-item>
+          <a href="javascript:;" (click)="operateTree(0)">{{ 'parent.child.association' | translate }}</a>
+        </li>
+        <li nz-menu-item>
+          <a href="javascript:;" (click)="operateTree(1)">{{ 'unlink' | translate }}</a>
+        </li>
+        <li nz-menu-item>
+          <a href="javascript:;" (click)="operateTree(2)">{{ 'check.all' | translate }}</a>
+        </li>
+        <li nz-menu-item>
+          <a href="javascript:;" (click)="operateTree(3)">{{ 'cancel.all' | translate }}</a>
+        </li>
+        <li nz-menu-item>
+          <a href="javascript:;" (click)="operateTree(4)">{{ 'expand.all' | translate }}</a>
+        </li>
+        <li nz-menu-item>
+          <a href="javascript:;" (click)="operateTree(5)">{{ 'all.merged' | translate }}</a>
+        </li>
       </ul>
     </nz-dropdown>
-    <button type="button" (click)="close()" class="ant-btn" style="margin-right: 8px;"><span>{{'button.close'|translate}}</span></button>
-    <button nzType="button" nz-button (click)="save()" [nzLoading]="isSaving" class="ant-btn ant-btn-primary"><span>{{'button.save'|translate}}</span></button>
+    <button type="button" (click)="close()" class="ant-btn" style="margin-right: 8px;">
+      <span>{{ 'button.close' | translate }}</span>
+    </button>
+    <button nzType="button" nz-button (click)="save()" [nzLoading]="isSaving" class="ant-btn ant-btn-primary">
+      <span>{{ 'button.save' | translate }}</span>
+    </button>
   </div>
 </nz-drawer>

+ 6 - 4
src/app/routes/system/role/view-user/view-user.component.html

@@ -1,13 +1,15 @@
 <div nz-row [nzGutter]="24">
   <div nz-col [nzSpan]="24">
-    <h3>“{{roleName}}”角色下的用户:</h3>
+    <!-- 角色下的用户 -->
+    <h3>“{{ roleName }}”{{ 'user.of.the.role' | translate }}:</h3>
   </div>
 </div>
 
 <div nz-row [nzGutter]="24">
-  <ng-container *ngFor="let user of userList;let i = index">
+  <ng-container *ngFor="let user of userList; let i = index">
     <div nz-col [nzSpan]="12">
-      <nz-tag style="margin-bottom: 5px;margin-left: 10%;" [nzColor]="'cyan'">{{user.realname}}</nz-tag>{{user.departName}}<br>
+      <nz-tag style="margin-bottom: 5px;margin-left: 10%;" [nzColor]="'cyan'">{{ user.realname }}</nz-tag
+      >{{ user.departName }}<br />
     </div>
   </ng-container>
-</div>
+</div>

+ 10 - 4
src/app/routes/upload-download/upload-download.component.html

@@ -1,8 +1,14 @@
 <div nz-row [nzGutter]="24">
   <div nz-col [nzSpan]="6">
-    <nz-upload nzAction="sys/common/uploadFile" [nzFileList]="fileList" nzMultiple=true
-      (nzChange)="handleChange($event)">
-      <button nz-button *ngIf="isDownload"><i nz-icon nzType="upload"></i>上传</button>
+    <nz-upload
+      nzAction="sys/common/uploadFile"
+      [nzFileList]="fileList"
+      nzMultiple="true"
+      (nzChange)="handleChange($event)"
+    >
+      <button nz-button *ngIf="isDownload">
+        <i nz-icon nzType="upload"></i>{{ 'pm.project.archives.file.up.load' | translate }}
+      </button>
     </nz-upload>
   </div>
-</div>
+</div>

+ 56 - 1
src/assets/tmp/i18n/zh-CN.json

@@ -695,6 +695,7 @@
   "pm.quotation.tax.rate": "税费",
   "pm.quotation.total.bioanalytical.services.fee": "生物分析总费用",
   "pm.quotation.Discount": "折扣",
+
   "pm.quotation.Discount.rate": "折扣比例",
   "pm.quotation.Total.discount.price": "折扣总价",
   "pm.quotation.Please.enter.one.of.the.discounts": "请输入其中一种折扣",
@@ -1867,5 +1868,59 @@
   "sales": "销售",
   "module.code": "模块编码",
   "module.name": "模块名称",
-  "standard.quotation": "标准报价"
+  "standard.quotation": "标准报价",
+  "line.code": "条线编码",
+  "line.name": "条线名称",
+  "leve.one": "一级",
+  "deal.price": "成交金额",
+  "payment.plan": "收款计划",
+  "the.first": "第一笔",
+  "the.second": "第二笔",
+  "the.third": "第三笔",
+  "the.fourth": "第四笔",
+  "the.fifth": "第五笔",
+  "receivable.situation": "回款情况",
+  "module": "模块",
+  "and": "与",
+  "make.time": "制单时间",
+  "performance.calculation.rate": "业绩计算率",
+  "accounts.receivable.account": "应收款账",
+  "receivable.amount": "回款金额",
+  "contract.profits": "合同利润",
+  "gift.amount": "赠品金额",
+  "The discount": "折扣率",
+  "business.types": "业务类型",
+  "summarize": "概述",
+  "free.sale.until": "免费售后截至",
+  "free.sale.start": "免费售后起始",
+  "after":"后",
+  "price":"单价",
+  "standard.amount":"标准金额",
+  "the.price":"价格",
+  "select.the.company.and.department":"选择公司与部门",
+  "start":"开始",
+  "limit.time":"工期",
+  "the.year":"年",
+  "month":"月",
+  "project.risk.warning":"项目风险预警",
+  "group.members":"组成员",
+  "receiving":"收付款",
+  "the.plan":"计划",
+  "actual":"实际",
+  "collection":"收款",
+  "invoice.amount":"开票金额",
+  "payFor":"付款",
+  "ticket.amount":"收票金额",
+  "taxable.amount":"应税合计",
+  "after.tax.total":"税后合计",
+  "internal.cost":"内部成本",
+  "income":"收入",
+  "equally.shared.costs":"公摊费用",
+  "commission":"提成",
+  "bonus":"奖金",
+  "wage":"工资",
+  "reserved":"预留",
+  "user.of.the.role":"角色下的用户"
+
+
 }