Pārlūkot izejas kodu

首页 异常报表

chenc 4 gadi atpakaļ
vecāks
revīzija
3c4f73351e

+ 9 - 0
src/app/entity/fbs/fbs-abnormal-working-hours-describe.ts

@@ -24,4 +24,13 @@ export class FbsAbnormalWorkingHoursDescribe extends Page {
   type?:string;
   //计划数量
   plannedQuantity?:number;
+
+  	/**生产订单号*/
+	productionOrderNumberName?:string;
+	/**不良物料名称*/
+	materielName?:string;
+	/**不良物料计划数量*/
+	materielNumberOfTasks?:number;
+	/**不良物料不良数量*/
+	materielBadNumber?:number;
 }

+ 32 - 0
src/app/entity/fbs/fbs-abnormal-working-hours.ts

@@ -75,7 +75,39 @@ export class FbsAbnormalWorkingHours extends Page{
 	pack?:string;
 	//仓库其他
 	warehouseOthers?:string;
+	/**请假*/
+	lleave?:number;
+	/**旷工*/
+	absenteeism?:number;
+	/**离职*/
+	quit?:number;
+	/**加班人数*/
+	overtimePeople?:number;
+	/**培训-备注*/
+	trainMemo?:string;
+	/**会议-备注*/
+	meetingMemo?:string;
+	/**研发-备注*/
+	researchAndDevelopmentMemo?:string;
+	/**5S-备注*/
+	fiveSMemo?:string;
+	/**打包-备注*/
+	packMemo?:string;
+	/**其他-备注*/
+	otherMemo?:string;
+	/**质量-备注*/
+	qualityMemo?:string;
+	/**物料-备注*/
+	materielMemo?:string;
+	/**设备-备注*/
+	equipmentMemo?:string;
+	/**能源-备注*/
+	energyMemo?:string;
+	/**计划-备注*/
+	planMemo?:string;
 
+	/**计划-备注*/
+	designMemo?:string;
 	
 	//开始
 	start?:string;

+ 4 - 1
src/app/entity/fbs/fbs-workshop-dispatch-list.ts

@@ -66,5 +66,8 @@ export class FbsWorkshopDispatchList extends Page{
 	stateList?:any[];//多选状态
 	year?:string;
 	month?:string;
-	
+	//是否显示颜色(用于计划报表)
+	isColor?:any[];
+	//显示每天
+	dayList?:any[];
 }

+ 313 - 256
src/app/routes/dashboard/analysis/analysis.component.html

@@ -72,10 +72,11 @@
           <nz-form-control [nzSpan]="16">
             <!-- <input [(ngModel)]="fbsWorkshopDispatchList.productionOrderNumberName" name="productionOrderNumberName" nz-input
             placeholder="请输入" /> -->
-            <nz-select [(ngModel)]="fbsWorkshopDispatchList.productionOrderNumberName" name="productionOrderNumberName" style="width: 100%" nzShowSearch
-              nzAllowClear nzPlaceHolder="请选择" >
+            <nz-select [(ngModel)]="fbsWorkshopDispatchList.productionOrderNumberName" name="productionOrderNumberName"
+              style="width: 100%" nzShowSearch nzAllowClear nzPlaceHolder="请选择">
               <ng-container *ngFor="let list of listOfDataSelect">
-                <nz-option [nzLabel]="list.productionOrderNumberName" [nzValue]="list.productionOrderNumberName"> </nz-option>
+                <nz-option [nzLabel]="list.productionOrderNumberName" [nzValue]="list.productionOrderNumberName">
+                </nz-option>
               </ng-container>
             </nz-select>
           </nz-form-control>
@@ -85,8 +86,7 @@
         <nz-form-item class="nz-form-item">
           <nz-form-label [nzSpan]="8">年份</nz-form-label>
           <nz-form-control [nzSpan]="16">
-            <input [(ngModel)]="fbsWorkshopDispatchList.year" name="year" nz-input
-            placeholder="请输入" />
+            <input [(ngModel)]="fbsWorkshopDispatchList.year" name="year" nz-input placeholder="请输入" />
           </nz-form-control>
         </nz-form-item>
       </div>
@@ -94,13 +94,12 @@
         <nz-form-item class="nz-form-item">
           <nz-form-label [nzSpan]="8">月份</nz-form-label>
           <nz-form-control [nzSpan]="16">
-            <input [(ngModel)]="fbsWorkshopDispatchList.month" name="month" nz-input
-            placeholder="请输入" />
+            <input [(ngModel)]="fbsWorkshopDispatchList.month" name="month" nz-input placeholder="请输入" />
           </nz-form-control>
         </nz-form-item>
       </div>
-       <!-- 按钮 -->
-       <div nz-col nzXs="24" nzSm="4" nzLg="2">
+      <!-- 按钮 -->
+      <div nz-col nzXs="24" nzSm="4" nzLg="2">
         <nz-form-item class="nz-form-item">
           <nz-form-label [nzSpan]="2" [nzNoColon]="true"></nz-form-label>
           <nz-form-control [nzSpan]="16">
@@ -111,300 +110,358 @@
       </div>
       <div nz-col nzXs="24" nzSm="4" nzLg="6">
         <nz-form-item class="nz-form-item">
-          <nz-form-label [nzSpan]="16" >是否显示已完成订单</nz-form-label>
+          <nz-form-label [nzSpan]="16">是否显示已完成订单</nz-form-label>
           <nz-form-control [nzSpan]="8">
             <!-- 查询 -->
-            <nz-switch [(ngModel)]="isSwitch" name="isSwitch"
-                          nzCheckedChildren="是"
-                          nzUnCheckedChildren="否" (ngModelChange)="isSwitchChange()">
-                        </nz-switch>
+            <nz-switch [(ngModel)]="isSwitch" name="isSwitch" nzCheckedChildren="是" nzUnCheckedChildren="否"
+              (ngModelChange)="isSwitchChange()">
+            </nz-switch>
           </nz-form-control>
         </nz-form-item>
       </div>
     </div>
-    
-</form>
-<div nz-row [nzGutter]="24">
-  <div nz-col nzXs="24" nzSm="24" nzMd="24" nzLg="24">
-    <nz-table class="tableTdPadding"  nzSize="small" #columnTable nzBordered [nzData]="listOfData" 
-      [nzScroll]="{ x: widthLength+'px', y:'550px'}" [nzShowPagination]="false" [nzFrontPagination]="false">
-      <thead>
-        <tr>
-          <!-- <th nzLeft="0px" nzWidth="60px" nzAlign="center" style="background-color:rgb(223, 223, 219)"><strong>序号</strong></th>
+
+  </form>
+  <div nz-row [nzGutter]="24">
+    <div nz-col nzXs="24" nzSm="24" nzMd="24" nzLg="24">
+      <nz-table class="tableTdPadding" nzSize="small" #columnTable nzBordered [nzData]="listOfData"
+        [nzScroll]="{ x: widthLength+'px', y:'550px'}" [nzShowPagination]="false" [nzFrontPagination]="false">
+        <thead>
+          <tr>
+            <!-- <th nzLeft="0px" nzWidth="60px" nzAlign="center" style="background-color:rgb(223, 223, 219)"><strong>序号</strong></th>
           <th nzLeft="58px" nzWidth="100px" nzAlign="center" style="background-color:rgb(223, 223, 219)"><strong>项目名称</strong></th>
           <th nzLeft="157px" nzWidth="110px" nzAlign="center" style="background-color:rgb(223, 223, 219)"><strong>生产订单号</strong></th>
           <th nzLeft="265px" nzWidth="120px" nzAlign="center" style="background-color:rgb(223, 223, 219)"><strong>物料编码</strong></th>
           <th nzLeft="383px" nzWidth="200px" nzAlign="center" style="background-color:rgb(223, 223, 219)"><strong>物料名称</strong></th> -->
-          
-          <th nzLeft="0px" rowSpan="2"  nzWidth="60px" nzAlign="center" style="background-color:rgb(223, 223, 219)"><strong>序号</strong></th>
-          <th nzLeft="58px" rowSpan="2" nzWidth="100px" nzAlign="center" style="background-color:rgb(223, 223, 219)"><strong>项目名称</strong></th>
-          <th nzLeft="157px" rowSpan="2" nzWidth="110px" nzAlign="center" style="background-color:rgb(223, 223, 219)"><strong>生产订单号</strong></th>
-          <th nzLeft="265px" rowSpan="2" nzWidth="120px" nzAlign="center" style="background-color:rgb(223, 223, 219)"><strong>物料编码</strong></th>
-          <th nzLeft="383px" rowSpan="2" nzWidth="200px" nzAlign="center" style="background-color:rgb(223, 223, 219)"><strong>物料名称</strong></th>
-          <th nzLeft="580px" rowSpan="2" nzWidth="80px" nzAlign="center" style="background-color:rgb(223, 223, 219)"><strong>月度计划</strong></th>
-          <th nzLeft="659px" rowSpan="2" nzWidth="100px" nzAlign="center" style="background-color:rgb(223, 223, 219)"><strong>标准总工时</strong></th>
-          <th nzLeft="758px" rowSpan="2" nzWidth="110px" nzAlign="center" style="background-color:rgb(223, 223, 219)"><strong>累计完成数量</strong></th>
-          <th nzLeft="867px" rowSpan="2" nzWidth="110px" nzAlign="center" style="background-color:rgb(223, 223, 219)"><strong>累计完成工时</strong></th>
-          <ng-container *ngFor="let date of dateList">
-            <th nzWidth="120px" nzAlign="center"><strong>当日计划数量</strong></th>
-            <th nzWidth="120px" nzAlign="center"><strong>当日完成数量</strong></th>
-            <th nzWidth="120px" nzAlign="center"><strong>当日完成工时 </strong></th>
-            <th nzWidth="120px" nzAlign="center"><strong>当日标准工时</strong></th>
-            <th nzWidth="120px" nzAlign="center"><strong>当日生产效率</strong></th>
-            <th nzWidth="100px" nzAlign="center"><strong>当日达成率</strong></th>
-          </ng-container>
-        </tr>
-        <tr>
-          <!-- <th colspan="5" nzLeft="0px"></th>
+
+            <th nzLeft="0px" rowSpan="2" nzWidth="60px" nzAlign="center" style="background-color:rgb(223, 223, 219)">
+              <strong>序号</strong></th>
+            <th nzLeft="58px" rowSpan="2" nzWidth="100px" nzAlign="center" style="background-color:rgb(223, 223, 219)">
+              <strong>项目名称</strong></th>
+            <th nzLeft="157px" rowSpan="2" nzWidth="110px" nzAlign="center" style="background-color:rgb(223, 223, 219)">
+              <strong>生产订单号</strong></th>
+            <th nzLeft="265px" rowSpan="2" nzWidth="120px" nzAlign="center" style="background-color:rgb(223, 223, 219)">
+              <strong>物料编码</strong></th>
+            <th nzLeft="383px" rowSpan="2" nzWidth="200px" nzAlign="center" style="background-color:rgb(223, 223, 219)">
+              <strong>物料名称</strong></th>
+            <th nzLeft="580px" rowSpan="2" nzWidth="80px" nzAlign="center" style="background-color:rgb(223, 223, 219)">
+              <strong>月度计划</strong></th>
+            <th nzLeft="659px" rowSpan="2" nzWidth="100px" nzAlign="center" style="background-color:rgb(223, 223, 219)">
+              <strong>标准总工时</strong></th>
+            <th nzLeft="758px" rowSpan="2" nzWidth="110px" nzAlign="center" style="background-color:rgb(223, 223, 219)">
+              <strong>累计完成数量</strong></th>
+            <th nzLeft="867px" rowSpan="2" nzWidth="110px" nzAlign="center" style="background-color:rgb(223, 223, 219)">
+              <strong>累计完成工时</strong></th>
+            <ng-container *ngFor="let date of dateList">
+              <th nzWidth="120px" nzAlign="center"><strong>当日计划数量</strong></th>
+              <th nzWidth="120px" nzAlign="center"><strong>当日完成数量</strong></th>
+              <th nzWidth="120px" nzAlign="center"><strong>当日完成工时 </strong></th>
+              <th nzWidth="120px" nzAlign="center"><strong>当日标准工时</strong></th>
+              <th nzWidth="120px" nzAlign="center"><strong>当日生产效率</strong></th>
+              <th nzWidth="100px" nzAlign="center"><strong>当日达成率</strong></th>
+            </ng-container>
+          </tr>
+          <tr>
+            <!-- <th colspan="5" nzLeft="0px"></th>
           <th colspan="4" ></th> -->
-          <!-- <th colspan="9" ></th> -->
-          <ng-container *ngFor="let date of dateList;let i=index">
-            <th colspan="6" *ngIf="i%2===0" style="background-color:rgb(223, 223, 219)"><strong>{{date.finalTime|date:'y-MM-dd'}}</strong></th>
-            <th colspan="6" *ngIf="i%2!==0" ><strong>{{date.finalTime|date:'y-MM-dd'}}</strong></th>
-          </ng-container>
-        </tr>
-      </thead>
-      <tbody>
-        <tr *ngFor="let data of columnTable.data;let i = index">
-          <ng-container *ngIf="data.projectName!=='统计'&&data.isSwitch" >
-          <!-- *ngIf="data.mergeLines!=0" [attr.rowSpan]="data.mergeLines" -->
-          <td nzLeft="0px" nzAlign="center"  *ngIf="data.mergeLines!=0" [attr.rowSpan]="data.mergeLines">{{ data.sort }}</td>
-          <td nzLeft="58px"  *ngIf="data.mergeLines!=0" [attr.rowSpan]="data.mergeLines">{{ data.projectName }}</td>
-          <td nzLeft="157px" >{{ data.productionOrderNumberName }}</td>
-          <td nzLeft="265px">{{data.productId}}</td>
-          <td nzLeft="383px">{{data.product}}</td>
-          <td nzLeft="580px" nzAlign="center">{{data.surplusNumberOfTasksTotal}}</td>
-          <td nzLeft="659px" nzAlign="center">{{data.surplusStandardWorkingHoursTotal}}</td>
-          <td nzLeft="758px" nzAlign="center">{{data.quantityCompletedTotal}}</td>
-          <td nzLeft="867px" nzAlign="center">{{data.manHoursCompletedTotal}}</td>
-          <ng-container *ngFor="let dateChild of data.fbsWorkshopDispatchListList">
-            <td nzAlign="center">{{dateChild.numberOfTasks}}</td>
-            <td nzAlign="center">{{dateChild.qualifiedNumber}}</td>
-            <td nzAlign="center">{{dateChild.manHoursCompleted}}</td>
-            <td nzAlign="center">{{dateChild.standardWorkingHours}}</td>
-            <td nzAlign="center">
-              <ng-container *ngIf="dateChild.productionEfficiency">{{dateChild.productionEfficiency}}%</ng-container>
-              <ng-container *ngIf="!dateChild.productionEfficiency">0%</ng-container>
-            </td>
-            <td nzAlign="center">
-              <ng-container *ngIf="dateChild.achievementRate">{{dateChild.achievementRate}}%</ng-container>
-              <ng-container *ngIf="!dateChild.achievementRate">0%</ng-container>
-            </td>
-          </ng-container>
-        </ng-container>
-        </tr >
-        <!-- 统计 -->
-        <tr style="background-color:rgb(223, 223, 219)" *ngFor="let data of columnTable.data;let i = index">
-          <ng-container *ngIf="data.projectName==='统计'">
-          <td nzLeft="0px" style="background-color:rgb(223, 223, 219)"></td>
-          <td nzLeft="58px" style="background-color:rgb(223, 223, 219);font-weight:bolder" nzAlign="center">
-            <!-- 剩余工时 -->
-          </td>
-          <td nzLeft="157px" style="background-color:rgb(223, 223, 219)" nzAlign="center">
-            <!-- {{data.remainingWorkTotal}} -->
-          </td>
-          <td nzLeft="265px" style="background-color:rgb(223, 223, 219);font-weight:bolder" nzAlign="center">统计</td>
-          <td  nzLeft="383px"></td>
-          <td nzLeft="580px" nzAlign="center">{{data.surplusNumberOfTasksTotal}}</td>
-          <td nzLeft="659px" nzAlign="center">{{data.surplusStandardWorkingHoursTotal}}</td>
-          <td nzLeft="758px" nzAlign="center">{{data.quantityCompletedTotal}}</td>
-          <td nzLeft="867px" nzAlign="center">{{data.manHoursCompletedTotal}}</td>
-          <ng-container *ngFor="let dateChild of data.fbsWorkshopDispatchListList">
-            <td nzAlign="center">{{dateChild.numberOfTasks}}</td>
-            <td nzAlign="center">{{dateChild.qualifiedNumber}}</td>
-            <td nzAlign="center">{{dateChild.manHoursCompleted}}</td>
-            <td nzAlign="center">{{dateChild.standardWorkingHours}}</td>
-            <td nzAlign="center">
-              <ng-container *ngIf="dateChild.productionEfficiency">{{dateChild.productionEfficiency}}%</ng-container>
-              <ng-container *ngIf="!dateChild.productionEfficiency">0%</ng-container>
-            </td>
-            <td nzAlign="center">
-              <ng-container *ngIf="dateChild.achievementRate">{{dateChild.achievementRate}}%</ng-container>
-              <ng-container *ngIf="!dateChild.achievementRate">0%</ng-container>
-            </td>
-          </ng-container>
-        </ng-container>
-        </tr>
-        <tr></tr>
-      </tbody>
-      <!-- 异常工时 -->
-      <tbody>
-        <tr>
-          <!-- <td nzLeft="0px" colspan="5" rowSpan="8"></td> -->
-          <td rowSpan="2" nzLeft="0px"></td>
-          <td rowSpan="2" nzLeft="58px" nzAlign="center" style="font-weight:bolder">总达成率</td>
-          <td rowSpan="2" nzLeft="157px" nzAlign="center">{{achievementRateTotal}}%</td>
-          <td rowSpan="2" nzLeft="265px" nzAlign="center" style="font-weight:bolder">总生产效率</td>
-          <td rowSpan="2" nzLeft="383px" nzAlign="center">{{productivityTotal}}%</td>
-          <!-- <td>月计划达成率</td>
+            <!-- <th colspan="9" ></th> -->
+            <ng-container *ngFor="let date of dateList;let i=index">
+              <th colspan="6" *ngIf="i%2===0" style="background-color:rgb(223, 223, 219)">
+                <strong>{{date.finalTime|date:'y-MM-dd'}}</strong></th>
+              <th colspan="6" *ngIf="i%2!==0"><strong>{{date.finalTime|date:'y-MM-dd'}}</strong></th>
+            </ng-container>
+          </tr>
+        </thead>
+        <tbody>
+          <tr *ngFor="let data of columnTable.data;let i = index">
+            <ng-container *ngIf="data.projectName!=='统计'&&data.isSwitch">
+              <!-- *ngIf="data.mergeLines!=0" [attr.rowSpan]="data.mergeLines" -->
+              <td nzLeft="0px" nzAlign="center" *ngIf="data.mergeLines!=0" [attr.rowSpan]="data.mergeLines">
+                {{ data.sort }}</td>
+              <td nzLeft="58px" *ngIf="data.mergeLines!=0" [attr.rowSpan]="data.mergeLines">{{ data.projectName }}</td>
+              <td nzLeft="157px">{{ data.productionOrderNumberName }}</td>
+              <td nzLeft="265px">{{data.productId}}</td>
+              <td nzLeft="383px">{{data.product}}</td>
+              <td nzLeft="580px" nzAlign="center">{{data.surplusNumberOfTasksTotal}}</td>
+              <td nzLeft="659px" nzAlign="center">{{data.surplusStandardWorkingHoursTotal}}</td>
+              <td nzLeft="758px" nzAlign="center">{{data.quantityCompletedTotal}}</td>
+              <td nzLeft="867px" nzAlign="center">{{data.manHoursCompletedTotal}}</td>
+              <ng-container *ngFor="let dateChild of data.fbsWorkshopDispatchListList">
+                <td nzAlign="center">{{dateChild.numberOfTasks}}</td>
+                <td nzAlign="center">{{dateChild.qualifiedNumber}}</td>
+                <td nzAlign="center">{{dateChild.manHoursCompleted}}</td>
+                <td nzAlign="center">{{dateChild.standardWorkingHours}}</td>
+                <td nzAlign="center">
+                  <ng-container *ngIf="dateChild.productionEfficiency">{{dateChild.productionEfficiency}}%
+                  </ng-container>
+                  <ng-container *ngIf="!dateChild.productionEfficiency">0%</ng-container>
+                </td>
+                <td nzAlign="center">
+                  <ng-container *ngIf="dateChild.achievementRate">{{dateChild.achievementRate}}%</ng-container>
+                  <ng-container *ngIf="!dateChild.achievementRate">0%</ng-container>
+                </td>
+              </ng-container>
+            </ng-container>
+          </tr>
+          <!-- 统计 -->
+          <tr style="background-color:rgb(223, 223, 219)" *ngFor="let data of columnTable.data;let i = index">
+            <ng-container *ngIf="data.projectName==='统计'">
+              <td nzLeft="0px" style="background-color:rgb(223, 223, 219)"></td>
+              <td nzLeft="58px" style="background-color:rgb(223, 223, 219);font-weight:bolder" nzAlign="center">
+                <!-- 剩余工时 -->
+              </td>
+              <td nzLeft="157px" style="background-color:rgb(223, 223, 219)" nzAlign="center">
+                <!-- {{data.remainingWorkTotal}} -->
+              </td>
+              <td nzLeft="265px" style="background-color:rgb(223, 223, 219);font-weight:bolder" nzAlign="center">统计</td>
+              <td nzLeft="383px"></td>
+              <td nzLeft="580px" nzAlign="center">{{data.surplusNumberOfTasksTotal}}</td>
+              <td nzLeft="659px" nzAlign="center">{{data.surplusStandardWorkingHoursTotal}}</td>
+              <td nzLeft="758px" nzAlign="center">{{data.quantityCompletedTotal}}</td>
+              <td nzLeft="867px" nzAlign="center">{{data.manHoursCompletedTotal}}</td>
+              <ng-container *ngFor="let dateChild of data.fbsWorkshopDispatchListList">
+                <td nzAlign="center">{{dateChild.numberOfTasks}}</td>
+                <td nzAlign="center">{{dateChild.qualifiedNumber}}</td>
+                <td nzAlign="center">{{dateChild.manHoursCompleted}}</td>
+                <td nzAlign="center">{{dateChild.standardWorkingHours}}</td>
+                <td nzAlign="center">
+                  <ng-container *ngIf="dateChild.productionEfficiency">{{dateChild.productionEfficiency}}%
+                  </ng-container>
+                  <ng-container *ngIf="!dateChild.productionEfficiency">0%</ng-container>
+                </td>
+                <td nzAlign="center">
+                  <ng-container *ngIf="dateChild.achievementRate">{{dateChild.achievementRate}}%</ng-container>
+                  <ng-container *ngIf="!dateChild.achievementRate">0%</ng-container>
+                </td>
+              </ng-container>
+            </ng-container>
+          </tr>
+          <tr></tr>
+        </tbody>
+        <!-- 异常工时 -->
+        <tbody>
+          <tr>
+            <!-- <td nzLeft="0px" colspan="5" rowSpan="8"></td> -->
+            <td rowSpan="2" nzLeft="0px"></td>
+            <td rowSpan="2" nzLeft="58px" nzAlign="center" style="font-weight:bolder">总达成率</td>
+            <td rowSpan="2" nzLeft="157px" nzAlign="center">{{achievementRateTotal}}%</td>
+            <td rowSpan="2" nzLeft="265px" nzAlign="center" style="font-weight:bolder">总生产效率</td>
+            <td rowSpan="2" nzLeft="383px" nzAlign="center">{{productivityTotal}}%</td>
+            <!-- <td>月计划达成率</td>
           <td>1.95%</td>
           <td>月生产效率</td>
           <td>根据生产计划进度。实时变化</td> -->
-          <td nzLeft="580px" class="bolder">出勤总工时</td>
-          <td nzLeft="659px" nzAlign="center">{{AbnormalWorkingHoursTotal.attendanceHours}}</td>
-          <td  nzLeft="758px" colSpan="2" nzAlign="right" class="bolder">出勤情况</td>
-          <ng-container *ngFor="let abnormalWorkingHours of abnormalWorkingHoursList">
-            <td >应到人数</td>
-            <td nzAlign="center">{{abnormalWorkingHours.numberOfPeopleToArrive}}</td>
-            <td>实到人数</td>
-            <td nzAlign="center">{{abnormalWorkingHours.actualNumberOfPeople}}</td>
-            <td>出勤工时</td>
-            <td nzAlign="center">{{abnormalWorkingHours.attendanceHours}}</td>
-          </ng-container>
-        </tr>
-        <tr>
-          <!-- <td ></td>
+            <td nzLeft="580px" class="bolder">出勤总工时</td>
+            <td nzLeft="659px" nzAlign="center">{{AbnormalWorkingHoursTotal.attendanceHours}}</td>
+            <td nzLeft="758px" colSpan="2" nzAlign="right" class="bolder">出勤情况</td>
+            <ng-container *ngFor="let abnormalWorkingHours of abnormalWorkingHoursList">
+              <td>应到人数</td>
+              <td nzAlign="center">{{abnormalWorkingHours.numberOfPeopleToArrive}}</td>
+              <td>实到人数</td>
+              <td nzAlign="center">{{abnormalWorkingHours.actualNumberOfPeople}}</td>
+              <td>出勤工时</td>
+              <td nzAlign="center">{{abnormalWorkingHours.attendanceHours}}</td>
+            </ng-container>
+          </tr>
+          <tr>
+            <!-- <td ></td>
           <td ></td>
           <td ></td>
           <td ></td>
           <td ></td> -->
-          <td nzLeft="580px" class="bolder">加班总工时</td>
-          <td nzLeft="659px" nzAlign="center">{{AbnormalWorkingHoursTotal.overtimeHours}}</td>
-          <td nzLeft="758px" colSpan="2" nzAlign="right" class="bolder">加班记录</td>
-          <ng-container *ngFor="let abnormalWorkingHours of abnormalWorkingHoursList">
-            <td>加班工时</td>
-            <td nzAlign="center">{{abnormalWorkingHours.overtimeHours}}</td>
-            <td>加班原因</td>
-            <td colSpan="3">{{abnormalWorkingHours.overtimeReason}}</td>
-          </ng-container>
-        </tr>
-        <tr>
-          <!-- <td rowSpan="2"></td>
+            <td nzLeft="580px" class="bolder">加班总工时</td>
+            <td nzLeft="659px" nzAlign="center">{{AbnormalWorkingHoursTotal.overtimeHours}}</td>
+            <td nzLeft="758px" colSpan="2" nzAlign="right" class="bolder">加班记录</td>
+            <ng-container *ngFor="let abnormalWorkingHours of abnormalWorkingHoursList">
+              <td>加班工时</td>
+              <td nzAlign="center">{{abnormalWorkingHours.overtimeHours}}</td>
+              <td>加班原因</td>
+              <td colSpan="3">{{abnormalWorkingHours.overtimeReason}}</td>
+            </ng-container>
+          </tr>
+          <tr>
+            <!-- <td rowSpan="2"></td>
           <td rowSpan="2"></td>
           <td rowSpan="2"></td>
           <td rowSpan="2"></td>
           <td rowSpan="2"></td> -->
-          <!-- <td nzLeft="0px" rowSpan="2"></td>
+            <!-- <td nzLeft="0px" rowSpan="2"></td>
           <td nzLeft="58px" rowSpan="2"></td>
           <td nzLeft="157px" rowSpan="2"></td>
           <td nzLeft="265px" rowSpan="2"></td>
           <td nzLeft="383px" rowSpan="2"></td> -->
-          <td nzLeft="0px" colspan="5" rowSpan="8"></td>
-          <td nzLeft="580px" rowSpan="2" class="bolder">其他总工时</td>
-          <td nzLeft="659px" rowSpan="2" nzAlign="center">{{AbnormalWorkingHoursTotal.train}}</td>
-          <td nzLeft="758px" colSpan="2" rowSpan="2" nzAlign="right" class="bolder">其他工时统计</td>
-          <ng-container *ngFor="let abnormalWorkingHours of abnormalWorkingHoursList">
-            <td>培训</td>
-            <td nzAlign="center">{{abnormalWorkingHours.train}}</td>
-            <td>会议</td>
-            <td nzAlign="center">{{abnormalWorkingHours.meeting}}</td>
-            <td>5S</td>
-            <td nzAlign="center">{{abnormalWorkingHours.fiveS}}</td>
-          </ng-container>
-        </tr>
-        <tr>
-          <ng-container *ngFor="let abnormalWorkingHours of abnormalWorkingHoursList">
-            <td>研发</td>
-            <td nzAlign="center">{{abnormalWorkingHours.researchAndDevelopment}}</td>
-            <td></td>
-            <td></td>
-            <td></td>
-            <td></td>
-          </ng-container>
-        </tr>
-        <tr>
-          <!-- <td rowSpan="3"></td>
+            <td nzLeft="0px" colspan="5" rowSpan="8"></td>
+            <td nzLeft="580px" rowSpan="2" class="bolder">其他总工时</td>
+            <td nzLeft="659px" rowSpan="2" nzAlign="center">{{AbnormalWorkingHoursTotal.train}}</td>
+            <td nzLeft="758px" colSpan="2" rowSpan="2" nzAlign="right" class="bolder">其他工时统计</td>
+            <ng-container *ngFor="let abnormalWorkingHours of abnormalWorkingHoursList">
+              <td>培训</td>
+              <td nzAlign="center">{{abnormalWorkingHours.train}}</td>
+              <td>会议</td>
+              <td nzAlign="center">{{abnormalWorkingHours.meeting}}</td>
+              <td>5S</td>
+              <td nzAlign="center">{{abnormalWorkingHours.fiveS}}</td>
+            </ng-container>
+          </tr>
+          <tr>
+            <ng-container *ngFor="let abnormalWorkingHours of abnormalWorkingHoursList">
+              <td>研发</td>
+              <td nzAlign="center">{{abnormalWorkingHours.researchAndDevelopment}}</td>
+              <td></td>
+              <td></td>
+              <td></td>
+              <td></td>
+            </ng-container>
+          </tr>
+          <tr>
+            <!-- <td rowSpan="3"></td>
           <td rowSpan="3"></td>
           <td rowSpan="3"></td>
           <td rowSpan="3"></td>
           <td rowSpan="3"></td> -->
-          <!-- <td nzLeft="0px" rowSpan="3"></td>
+            <!-- <td nzLeft="0px" rowSpan="3"></td>
           <td nzLeft="58px" rowSpan="3"></td>
           <td nzLeft="157px" rowSpan="3"></td>
           <td nzLeft="265px" rowSpan="3"></td>
           <td nzLeft="383px" rowSpan="3"></td> -->
-          <td nzLeft="580px" rowSpan="3" class="bolder">异常总工时统计</td>
-          <td nzLeft="659px" rowSpan="3" nzAlign="center">{{AbnormalWorkingHoursTotal.abnormalWorkingHours}}</td>
-          <td nzLeft="758px" colSpan="2" rowSpan="3" nzAlign="right" class="bolder">异常工时统计</td>
-          <ng-container *ngFor="let abnormalWorkingHours of abnormalWorkingHoursList">
-            <td>质量</td>
-            <td nzAlign="center">{{abnormalWorkingHours.quality}}</td>
-            <td>设计</td>
-            <td nzAlign="center">{{abnormalWorkingHours.design}}</td>
-            <td>返工</td>
-            <td nzAlign="center">{{abnormalWorkingHours.rework}}</td>
-          </ng-container>
-        </tr>
-        <tr>
-          <ng-container *ngFor="let abnormalWorkingHours of abnormalWorkingHoursList">
-            <td>物料</td>
-            <td nzAlign="center">{{abnormalWorkingHours.materiel}}</td>
-            <td>能源</td>
-            <td nzAlign="center">{{abnormalWorkingHours.energy}}</td>
-            <td>其他</td>
-            <td nzAlign="center">{{abnormalWorkingHours.other}}</td>
-          </ng-container>
-        </tr>
-        <tr>
-          <ng-container *ngFor="let abnormalWorkingHours of abnormalWorkingHoursList">
-            <td>设备</td>
-            <td nzAlign="center">{{abnormalWorkingHours.equipment}}</td>
-            <td>计划</td>
-            <td nzAlign="center">{{abnormalWorkingHours.plan}}</td>
-            <td></td>
-            <td></td>
-          </ng-container>
-        </tr>
-        <tr>
-          <td nzLeft="580px" rowSpan="2" class="bolder">仓库总工时统计</td>
-          <td nzLeft="659px" rowSpan="2" nzAlign="center">{{AbnormalWorkingHoursTotal.warehouse}}</td>
-          <td nzLeft="758px" colSpan="2" rowSpan="2" nzAlign="right" class="bolder">仓库工时统计</td>
-          <ng-container *ngFor="let abnormalWorkingHours of abnormalWorkingHoursList">
-            <td>配料</td>
-            <td nzAlign="center">{{abnormalWorkingHours.mixedIngredients}}</td>
-            <td>入库</td>
-            <td nzAlign="center">{{abnormalWorkingHours.warehousing}}</td>
-            <td>打包</td>
-            <td nzAlign="center">{{abnormalWorkingHours.pack}}</td>
-          </ng-container>
-        </tr>
-        <tr>
-          <ng-container *ngFor="let abnormalWorkingHours of abnormalWorkingHoursList">
-            <td>其他</td>
-            <td nzAlign="center">{{abnormalWorkingHours.warehouseOthers}}</td>
-            <td>备注</td>
-            <td nzAlign="center" colSpan="3">{{abnormalWorkingHours.memo}}</td>
-          </ng-container>
-        </tr>
+            <td nzLeft="580px" rowSpan="3" class="bolder">异常总工时统计</td>
+            <td nzLeft="659px" rowSpan="3" nzAlign="center">{{AbnormalWorkingHoursTotal.abnormalWorkingHours}}</td>
+            <td nzLeft="758px" colSpan="2" rowSpan="3" nzAlign="right" class="bolder">异常工时统计</td>
+            <ng-container *ngFor="let abnormalWorkingHours of abnormalWorkingHoursList">
+              <td>质量</td>
+              <td nzAlign="center">{{abnormalWorkingHours.quality}}</td>
+              <td>设计</td>
+              <td nzAlign="center">{{abnormalWorkingHours.design}}</td>
+              <td>返工</td>
+              <td nzAlign="center">{{abnormalWorkingHours.rework}}</td>
+            </ng-container>
+          </tr>
+          <tr>
+            <ng-container *ngFor="let abnormalWorkingHours of abnormalWorkingHoursList">
+              <td>物料</td>
+              <td nzAlign="center">{{abnormalWorkingHours.materiel}}</td>
+              <td>能源</td>
+              <td nzAlign="center">{{abnormalWorkingHours.energy}}</td>
+              <td>其他</td>
+              <td nzAlign="center">{{abnormalWorkingHours.other}}</td>
+            </ng-container>
+          </tr>
+          <tr>
+            <ng-container *ngFor="let abnormalWorkingHours of abnormalWorkingHoursList">
+              <td>设备</td>
+              <td nzAlign="center">{{abnormalWorkingHours.equipment}}</td>
+              <td>计划</td>
+              <td nzAlign="center">{{abnormalWorkingHours.plan}}</td>
+              <td></td>
+              <td></td>
+            </ng-container>
+          </tr>
+          <tr>
+            <td nzLeft="580px" rowSpan="2" class="bolder">仓库总工时统计</td>
+            <td nzLeft="659px" rowSpan="2" nzAlign="center">{{AbnormalWorkingHoursTotal.warehouse}}</td>
+            <td nzLeft="758px" colSpan="2" rowSpan="2" nzAlign="right" class="bolder">仓库工时统计</td>
+            <ng-container *ngFor="let abnormalWorkingHours of abnormalWorkingHoursList">
+              <td>配料</td>
+              <td nzAlign="center">{{abnormalWorkingHours.mixedIngredients}}</td>
+              <td>入库</td>
+              <td nzAlign="center">{{abnormalWorkingHours.warehousing}}</td>
+              <td>打包</td>
+              <td nzAlign="center">{{abnormalWorkingHours.pack}}</td>
+            </ng-container>
+          </tr>
+          <tr>
+            <ng-container *ngFor="let abnormalWorkingHours of abnormalWorkingHoursList">
+              <td>其他</td>
+              <td nzAlign="center">{{abnormalWorkingHours.warehouseOthers}}</td>
+              <td>备注</td>
+              <td nzAlign="center" colSpan="3">{{abnormalWorkingHours.memo}}</td>
+            </ng-container>
+          </tr>
 
 
-        <tr>
-          <!-- <td ></td>
+          <tr>
+            <!-- <td ></td>
           <td ></td>
           <td ></td>
           <td ></td>
           <td ></td> -->
-          <td nzLeft="580px" colSpan="4" class="bolder">异常原因描述</td>
-          <ng-container *ngFor="let abnormalWorkingHours of abnormalWorkingHoursList">
-            <td colSpan="6">
-              <ng-container *ngFor="let describe of abnormalWorkingHours.fbsAbnormalWorkingHoursDescribeList">
-                <ng-container *ngIf="describe.describes">
-                  {{describe.describes}}<br>
+            <td nzLeft="580px" colSpan="4" class="bolder">异常原因描述</td>
+            <ng-container *ngFor="let abnormalWorkingHours of abnormalWorkingHoursList">
+              <td colSpan="6">
+                <ng-container *ngFor="let describe of abnormalWorkingHours.fbsAbnormalWorkingHoursDescribeList">
+                  <ng-container *ngIf="describe.describes">
+                    {{describe.describes}}<br>
+                  </ng-container>
                 </ng-container>
-              </ng-container>
-            </td>
-          </ng-container>
-        </tr>
+              </td>
+            </ng-container>
+          </tr>
 
-      </tbody>
-    </nz-table>
+        </tbody>
+      </nz-table>
+    </div>
   </div>
-</div>
-<form nz-form>
+  <form nz-form>
+    <div nz-row [nzGutter]="{xs:12,sm:15,md:29,lg: 36, xl: 40}">
+      <!-- 按钮 -->
+      <div nz-col nzXs="24" nzSm="4" nzLg="4">
+        <nz-form-item class="nz-form-item">
+          <nz-form-label [nzSpan]="2" [nzNoColon]="true"></nz-form-label>
+          <nz-form-control [nzSpan]="16">
+            <!-- 查询 -->
+            <button nz-button nzType="primary" (click)="export()" [nzLoading]="exportLoading">导出</button>
+          </nz-form-control>
+        </nz-form-item>
+      </div>
+    </div>
+  </form>
+
+</nz-spin>
+<nz-spin [nzSpinning]="planningReportLoading">
   <div nz-row [nzGutter]="{xs:12,sm:15,md:29,lg: 36, xl: 40}">
-     <!-- 按钮 -->
-     <div nz-col nzXs="24" nzSm="4" nzLg="4">
-      <nz-form-item class="nz-form-item">
-        <nz-form-label [nzSpan]="2" [nzNoColon]="true"></nz-form-label>
-        <nz-form-control [nzSpan]="16">
-          <!-- 查询 -->
-          <button nz-button nzType="primary" (click)="export()" [nzLoading]="exportLoading">导出</button>
-        </nz-form-control>
-      </nz-form-item>
+    <div nz-col nzXs="24" nzSm="4" nzLg="24" >
+      <nz-table  class="tableTdPadding" nzSize="small" #columnTable2 nzBordered [nzData]="planningReportList"
+       [nzShowPagination]="false" [nzFrontPagination]="false">
+        <thead>
+          <tr>
+            <th style="background-color:rgb(223, 223, 219);width: 20px;" ><strong>序号</strong></th>
+            <th style="background-color:rgb(223, 223, 219);width: 100px;" ><strong>生产订单</strong></th>
+            <th style="background-color:rgb(223, 223, 219);width: 100px;" ><strong>物料编码</strong></th>
+            <th style="background-color:rgb(223, 223, 219);width: 100px;" ><strong>物料名称</strong></th>
+            <th style="background-color:rgb(223, 223, 219);width: 20px;"><strong>数量</strong></th>
+            <th style="background-color:rgb(223, 223, 219);width: 20px;" ><strong>{{fbsWorkshopDispatchListPlanningReport.year}}</strong></th>
+            <ng-container *ngFor="let day of fbsWorkshopDispatchListPlanningReport.dayList">
+              <th style="background-color:rgb(223, 223, 219);padding: 2px;width: 20px;" >{{day}}</th>
+            </ng-container>
+
+          </tr>
+        </thead>
+        <tbody>
+          <tr *ngFor="let data of columnTable2.data;let i = index">
+            <td  style="text-align: center;width: 20px;" >{{i+1}}</td>
+            <td style="width: 100px;">{{data.productionOrderNumberName}}</td>
+            <td style="width: 100px;">{{data.productId}}</td>
+            <td style="width: 100px;">{{data.product}}</td>
+            <td style="text-align: center;width: 20px;">{{data.numberOfTasks}}</td>
+            <td style="width: 20px;"></td>
+            <ng-container *ngFor="let color of data.isColor">
+              <ng-container *ngIf="color==='1'">
+                <td style="background-color:gold;width: 20px;"></td>
+              </ng-container>
+              <ng-container *ngIf="color==='0'">
+                <td></td>
+              </ng-container>
+            </ng-container>
+
+          </tr>
+        </tbody>
+      </nz-table>
     </div>
   </div>
-</form>
 </nz-spin>
+
+
+
 <!-- <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">

+ 16 - 2
src/app/routes/dashboard/analysis/analysis.component.ts

@@ -28,6 +28,7 @@ import { convertingNumbers } from '@shared/utils/shared';
     .bolder{
       font-weight:bolder;
     }
+    
     `
   ]
   // changeDetection: ChangeDetectionStrategy.OnPush,
@@ -112,7 +113,7 @@ export class DashboardAnalysisComponent implements OnInit {
     this.getNow();
     this.getSumDispatchReport();
     this.getAbnormalWorkingHoursReport();
-    
+    this.getPlanningReport();
   }
 
   /**
@@ -484,5 +485,18 @@ export class DashboardAnalysisComponent implements OnInit {
     // this.exportLoading=false;
     // })
   }
-  
+
+
+  planningReportList=[]
+  planningReportLoading=false;
+  fbsWorkshopDispatchListPlanningReport:FbsWorkshopDispatchList={}
+
+  getPlanningReport(){
+    this.planningReportLoading=true;
+    this.fbsWorkshopDispatchListService.getPlanningReport().then((response)=>{
+      this.fbsWorkshopDispatchListPlanningReport=response.result;
+      this.planningReportList=response.result.fbsWorkshopDispatchListList;
+      this.planningReportLoading=false;
+    })
+  }
 }

+ 164 - 34
src/app/routes/fbs-abnormal-working-hours/add/add.component.html

@@ -21,72 +21,187 @@
             </ng-container>
           </nz-select>
         </td> -->
-        <td style="width: 25%;" colSpan="2">日期</td>
-        <td style="width: 25%;" colspan="2">
-          <nz-date-picker [(ngModel)]="fbsAbnormalWorkingHours.date" nzPlaceHolder="请选择" nzDisabled>
+        <td colSpan="2">日期</td>
+        <td colspan="11">
+          <nz-date-picker [(ngModel)]="fbsAbnormalWorkingHours.date" nzPlaceHolder="请选择" >
           </nz-date-picker>
         </td>
-        <td colSpan="3"></td>
       </tr>
       <tr>
-        <td>出勤记录</td>
+        <td>出勤工时</td>
         <td>应到人数</td>
-        <td>
+        <td style="width: 8%;">
           <nz-input-number [(ngModel)]="fbsAbnormalWorkingHours.numberOfPeopleToArrive" [nzMin]="0" [nzStep]="1">
           </nz-input-number>
         </td>
         <td>实到人数</td>
-        <td>
+        <td style="width: 8%;">
           <nz-input-number [(ngModel)]="fbsAbnormalWorkingHours.actualNumberOfPeople" [nzMin]="0" [nzStep]="1">
           </nz-input-number>
         </td>
+        <td>请假</td>
+        <td style="width: 8%;">
+          <nz-input-number [(ngModel)]="fbsAbnormalWorkingHours.lleave" [nzMin]="0" [nzStep]="1">
+          </nz-input-number>
+        </td>
+        <td>旷工</td>
+        <td style="width: 8%;">
+          <nz-input-number [(ngModel)]="fbsAbnormalWorkingHours.absenteeism" [nzMin]="0" [nzStep]="1">
+          </nz-input-number>
+        </td>
+        <td>离职</td>
+        <td style="width: 8%;">
+          <nz-input-number [(ngModel)]="fbsAbnormalWorkingHours.quit" [nzMin]="0" [nzStep]="1">
+          </nz-input-number>
+        </td>
         <td>出勤工时</td>
-        <td>
+        <td style="width: 8%;">
           <nz-input-number [(ngModel)]="fbsAbnormalWorkingHours.attendanceHours" [nzMin]="0" [nzStep]="1">
           </nz-input-number>
         </td>
       </tr>
       <tr>
         <td>加班记录</td>
+        <td>加班人数</td>
+        <td>
+          <nz-input-number [(ngModel)]="fbsAbnormalWorkingHours.overtimePeople" [nzMin]="0" [nzStep]="1">
+          </nz-input-number>
+        </td>
         <td>加班工时</td>
         <td>
           <nz-input-number [(ngModel)]="fbsAbnormalWorkingHours.overtimeHours" [nzMin]="0" [nzStep]="1">
           </nz-input-number>
         </td>
         <td>加班原因</td>
-        <td colspan="3">
+        <td colspan="7">
           <textarea rows="2" nz-input [(ngModel)]="fbsAbnormalWorkingHours.overtimeReason"></textarea>
         </td>
       </tr>
       <tr>
-        <td style="width: 25%;" rowSpan="2">其他工时统计</td>
-        <td style="width: 10%;">培训</td>
-        <td style="width: 15%;">
+        <td  rowSpan="6">其他工时统计</td>
+        <td >培训</td>
+        <td >
           <nz-input-number [(ngModel)]="fbsAbnormalWorkingHours.train" [nzMin]="0" [nzStep]="1"></nz-input-number>
         </td>
-        <td style="width: 10%;">会议</td>
-        <td style="width: 15%;">
+        <td >备注</td>
+        <td colspan="9">
+          <input nz-input [(ngModel)]="fbsAbnormalWorkingHours.trainMemo" />
+        </td>
+      </tr>
+      <tr>
+        <td >会议</td>
+        <td >
           <nz-input-number [(ngModel)]="fbsAbnormalWorkingHours.meeting" [nzMin]="0" [nzStep]="1"></nz-input-number>
         </td>
-        <td style="width: 10%;">5S</td>
-        <td style="width: 15%;">
-          <nz-input-number [(ngModel)]="fbsAbnormalWorkingHours.fiveS" [nzMin]="0" [nzStep]="1"></nz-input-number>
+        <td >备注</td>
+        <td colspan="9">
+          <input nz-input [(ngModel)]="fbsAbnormalWorkingHours.meetingMemo" />
         </td>
       </tr>
+      
       <tr>
         <td>研发</td>
         <td>
           <nz-input-number [(ngModel)]="fbsAbnormalWorkingHours.researchAndDevelopment" [nzMin]="0" [nzStep]="1">
           </nz-input-number>
         </td>
-        <td colSpan="5"></td>
+        <td >备注</td>
+        <td colspan="9">
+          <input nz-input [(ngModel)]="fbsAbnormalWorkingHours.researchAndDevelopmentMemo" />
+        </td>
+      </tr>
+      <tr>
+        <td >5S</td>
+        <td >
+          <nz-input-number [(ngModel)]="fbsAbnormalWorkingHours.fiveS" [nzMin]="0" [nzStep]="1"></nz-input-number>
+        </td>
+        <td >备注</td>
+        <td colspan="9">
+          <input nz-input [(ngModel)]="fbsAbnormalWorkingHours.fiveSMemo" />
+        </td>
+      </tr>
+      <tr>
+        <td >打包</td>
+        <td >
+          <nz-input-number [(ngModel)]="fbsAbnormalWorkingHours.pack" [nzMin]="0" [nzStep]="1"></nz-input-number>
+        </td>
+        <td >备注</td>
+        <td colspan="9">
+          <input nz-input [(ngModel)]="fbsAbnormalWorkingHours.packMemo" />
+        </td>
+      </tr>
+      <tr>
+        <td >其他</td>
+        <td >
+          <nz-input-number [(ngModel)]="fbsAbnormalWorkingHours.other" [nzMin]="0" [nzStep]="1"></nz-input-number>
+        </td>
+        <td >备注</td>
+        <td colspan="9">
+          <input nz-input [(ngModel)]="fbsAbnormalWorkingHours.otherMemo" />
+        </td>
       </tr>
       <tr>
-        <td rowSpan="3">异常工时统计</td>
+        <td rowSpan="6">异常工时统计</td>
         <td>质量</td>
         <td>
           <nz-input-number [(ngModel)]="fbsAbnormalWorkingHours.quality" [nzMin]="0" [nzStep]="1"></nz-input-number>
         </td>
+        <td >备注</td>
+        <td colspan="9">
+          <input nz-input [(ngModel)]="fbsAbnormalWorkingHours.qualityMemo" />
+        </td>
+      </tr>
+      <tr>
+        <td>物料</td>
+        <td>
+          <nz-input-number [(ngModel)]="fbsAbnormalWorkingHours.materiel" [nzMin]="0" [nzStep]="1"></nz-input-number>
+        </td>
+        <td >备注</td>
+        <td colspan="9">
+          <input nz-input [(ngModel)]="fbsAbnormalWorkingHours.materielMemo" />
+        </td>
+      </tr>
+      <tr>
+        <td>设备</td>
+        <td>
+          <nz-input-number [(ngModel)]="fbsAbnormalWorkingHours.equipment" [nzMin]="0" [nzStep]="1"></nz-input-number>
+        </td>
+        <td >备注</td>
+        <td colspan="9">
+          <input nz-input [(ngModel)]="fbsAbnormalWorkingHours.equipmentMemo" />
+        </td>
+      </tr>
+      <tr>
+        <td>设计</td>
+        <td>
+          <nz-input-number [(ngModel)]="fbsAbnormalWorkingHours.design" [nzMin]="0" [nzStep]="1"></nz-input-number>
+        </td>
+        <td >备注</td>
+        <td colspan="9">
+          <input nz-input [(ngModel)]="fbsAbnormalWorkingHours.designMemo" />
+        </td>
+      </tr>
+      <tr>
+        <td>能源</td>
+        <td>
+          <nz-input-number [(ngModel)]="fbsAbnormalWorkingHours.energy" [nzMin]="0" [nzStep]="1"></nz-input-number>
+        </td>
+        <td >备注</td>
+        <td colspan="9">
+          <input nz-input [(ngModel)]="fbsAbnormalWorkingHours.energyMemo" />
+        </td>
+      </tr>
+      <tr>
+        <td>计划</td>
+        <td>
+          <nz-input-number [(ngModel)]="fbsAbnormalWorkingHours.plan" [nzMin]="0" [nzStep]="1"></nz-input-number>
+        </td>
+        <td >备注</td>
+        <td colspan="9">
+          <input nz-input [(ngModel)]="fbsAbnormalWorkingHours.planMemo" />
+        </td>
+      </tr>
+      <!-- <tr>
         <td>设计</td>
         <td>
           <nz-input-number [(ngModel)]="fbsAbnormalWorkingHours.design" [nzMin]="0" [nzStep]="1"></nz-input-number>
@@ -148,7 +263,7 @@
         <td colSpan="3">
           <textarea rows="2" nz-input [(ngModel)]="fbsAbnormalWorkingHours.memo"></textarea>
         </td>
-      </tr>
+      </tr> -->
       <tr>
         <!-- <td>改善措施</td>
         <td>当日派工产品</td>
@@ -193,28 +308,35 @@
           <thead>
             <tr>
               <th nzWidth="5%">序号</th>
-              <th nzWidth="10%">类别</th>
-              <th nzWidth="15%">物料名称</th>
-              <th nzWidth="10%">计划数量</th>
-              <th nzWidth="10%">不良品数量</th>
-              <th nzWidth="25%">异常原因描述</th>
-              <th nzWidth="15%">异常类别</th>
+              <th nzWidth="10%">生产订单</th>
+              <th nzWidth="10%">物料编码</th>
+              <th nzWidth="10%">物料名称</th>
+              <th nzWidth="5%">计划数量</th>
+              <th nzWidth="5%">不良品数量</th>
+              <th nzWidth="15%">不良描述</th>
+              <th nzWidth="10%">不良物料名称</th>
+              <th nzWidth="5%">数量</th>
+              <th nzWidth="5%">不良数量</th>
               <th nzWidth="10%">操作</th>
             </tr>
           </thead>
           <tbody>
             <tr *ngFor="let data of editRowTable.data">
               <td>{{data.sort}}</td>
-              <td>
+              <td>{{data.productionOrderNumberName}}</td>
+              <td>{{data.productId}}</td>
+              <!-- <td>
                 <nz-select [(ngModel)]="data.type" style="width: 100%;" nzShowSearch nzAllowClear nzPlaceHolder="请选择"
                   [nzDropdownMatchSelectWidth]="false">
                   <nz-option nzLabel="产品" nzValue="产品"> </nz-option>
                   <nz-option nzLabel="物料" nzValue="物料"> </nz-option>
                 </nz-select>
-              </td>
+                
+              </td> -->
               <td>
                 <!-- 选择产品 -->
-                <ng-container *ngIf="data.type=='产品'">
+                <!-- <ng-container *ngIf="data.type=='产品'"> -->
+                  <ng-container >
                   <nz-select [(ngModel)]="data.productId" style="width: 100%;" nzShowSearch nzAllowClear
                     nzPlaceHolder="请选择" (ngModelChange)="productChange($event,data)"
                     [nzDropdownMatchSelectWidth]="false">
@@ -224,18 +346,20 @@
                   </nz-select>
                 </ng-container>
                 <!-- 选择物料 -->
-                <ng-container *ngIf="data.type=='物料'">
+                <!-- <ng-container *ngIf="data.type=='物料'">
                   <input [(ngModel)]="data.product" nz-input
               placeholder="请输入" />
-                </ng-container>
+                </ng-container> -->
+                <!-- {{data.product}} -->
               </td>
               <td>
-                <ng-container *ngIf="data.type=='产品'">
+                <!-- <ng-container *ngIf="data.type=='产品'">
                   {{data.plannedQuantity}}
                 </ng-container>
                 <ng-container *ngIf="data.type=='物料'">
                   <nz-input-number [(ngModel)]="data.plannedQuantity" [nzMin]="0" [nzStep]="1"></nz-input-number>
-                </ng-container>
+                </ng-container> -->
+                {{data.plannedQuantity}}
               </td>
               <td>
                 <nz-input-number [(ngModel)]="data.rejectsNumber" [nzMin]="0" [nzStep]="1"></nz-input-number>
@@ -248,7 +372,13 @@
                     <nz-option [nzLabel]="type.typeName" [nzValue]="type.id"> </nz-option>
                   </ng-container>
                 </nz-select> -->
-                <input nz-input name="data.typeName" [(ngModel)]="data.typeName" />
+                <input nz-input name="data.materielName" [(ngModel)]="data.materielName" />
+              </td>
+              <td>
+                <nz-input-number [(ngModel)]="data.materielNumberOfTasks" [nzMin]="0" [nzStep]="1"></nz-input-number>
+              </td>
+              <td>
+                <nz-input-number [(ngModel)]="data.materielBadNumber" [nzMin]="0" [nzStep]="1"></nz-input-number>
               </td>
               <td><a nz-popconfirm nzTitle="是否删除?" (nzOnConfirm)="describeDeleteRow(data.sort)">删除</a></td>
             </tr>

+ 1 - 0
src/app/routes/fbs-abnormal-working-hours/add/add.component.ts

@@ -91,6 +91,7 @@ export class FbsAbnormalWorkingHoursAddComponent implements OnInit {
           data.workshopDispatchListId=element.id;//派工单id
           data.product=element.product;//产品名称
           data.plannedQuantity=element.plannedQuantity;//计划数量
+          data.productionOrderNumberName=element.productionOrderNumberName;
         }
       });
     }

+ 173 - 43
src/app/routes/fbs-abnormal-working-hours/update/update.component.html

@@ -20,72 +20,187 @@
             </ng-container>
           </nz-select>
         </td> -->
-        <td style="width: 25%;" colSpan="2">日期</td>
-        <td style="width: 25%;" colspan="2">
-          <nz-date-picker [(ngModel)]="fbsAbnormalWorkingHours.date" nzPlaceHolder="请选择" nzDisabled>
+        <td colSpan="2">日期</td>
+        <td colspan="11">
+          <nz-date-picker [(ngModel)]="fbsAbnormalWorkingHours.date" nzPlaceHolder="请选择" >
           </nz-date-picker>
         </td>
-        <td colSpan="3"></td>
       </tr>
       <tr>
-        <td>出勤记录</td>
+        <td>出勤工时</td>
         <td>应到人数</td>
-        <td>
+        <td style="width: 8%;">
           <nz-input-number [(ngModel)]="fbsAbnormalWorkingHours.numberOfPeopleToArrive" [nzMin]="0" [nzStep]="1">
           </nz-input-number>
         </td>
         <td>实到人数</td>
-        <td>
+        <td style="width: 8%;">
           <nz-input-number [(ngModel)]="fbsAbnormalWorkingHours.actualNumberOfPeople" [nzMin]="0" [nzStep]="1">
           </nz-input-number>
         </td>
+        <td>请假</td>
+        <td style="width: 8%;">
+          <nz-input-number [(ngModel)]="fbsAbnormalWorkingHours.lleave" [nzMin]="0" [nzStep]="1">
+          </nz-input-number>
+        </td>
+        <td>旷工</td>
+        <td style="width: 8%;">
+          <nz-input-number [(ngModel)]="fbsAbnormalWorkingHours.absenteeism" [nzMin]="0" [nzStep]="1">
+          </nz-input-number>
+        </td>
+        <td>离职</td>
+        <td style="width: 8%;">
+          <nz-input-number [(ngModel)]="fbsAbnormalWorkingHours.quit" [nzMin]="0" [nzStep]="1">
+          </nz-input-number>
+        </td>
         <td>出勤工时</td>
-        <td>
+        <td style="width: 8%;">
           <nz-input-number [(ngModel)]="fbsAbnormalWorkingHours.attendanceHours" [nzMin]="0" [nzStep]="1">
           </nz-input-number>
         </td>
       </tr>
       <tr>
         <td>加班记录</td>
+        <td>加班人数</td>
+        <td>
+          <nz-input-number [(ngModel)]="fbsAbnormalWorkingHours.overtimePeople" [nzMin]="0" [nzStep]="1">
+          </nz-input-number>
+        </td>
         <td>加班工时</td>
         <td>
           <nz-input-number [(ngModel)]="fbsAbnormalWorkingHours.overtimeHours" [nzMin]="0" [nzStep]="1">
           </nz-input-number>
         </td>
         <td>加班原因</td>
-        <td colspan="3">
+        <td colspan="7">
           <textarea rows="2" nz-input [(ngModel)]="fbsAbnormalWorkingHours.overtimeReason"></textarea>
         </td>
       </tr>
       <tr>
-        <td style="width: 25%;" rowSpan="2">其他工时统计</td>
-        <td style="width: 10%;">培训</td>
-        <td style="width: 15%;">
+        <td  rowSpan="6">其他工时统计</td>
+        <td >培训</td>
+        <td >
           <nz-input-number [(ngModel)]="fbsAbnormalWorkingHours.train" [nzMin]="0" [nzStep]="1"></nz-input-number>
         </td>
-        <td style="width: 10%;">会议</td>
-        <td style="width: 15%;">
+        <td >备注</td>
+        <td colspan="9">
+          <input nz-input [(ngModel)]="fbsAbnormalWorkingHours.trainMemo" />
+        </td>
+      </tr>
+      <tr>
+        <td >会议</td>
+        <td >
           <nz-input-number [(ngModel)]="fbsAbnormalWorkingHours.meeting" [nzMin]="0" [nzStep]="1"></nz-input-number>
         </td>
-        <td style="width: 10%;">5S</td>
-        <td style="width: 15%;">
-          <nz-input-number [(ngModel)]="fbsAbnormalWorkingHours.fiveS" [nzMin]="0" [nzStep]="1"></nz-input-number>
+        <td >备注</td>
+        <td colspan="9">
+          <input nz-input [(ngModel)]="fbsAbnormalWorkingHours.meetingMemo" />
         </td>
       </tr>
+      
       <tr>
         <td>研发</td>
         <td>
           <nz-input-number [(ngModel)]="fbsAbnormalWorkingHours.researchAndDevelopment" [nzMin]="0" [nzStep]="1">
           </nz-input-number>
         </td>
-        <td colSpan="5"></td>
+        <td >备注</td>
+        <td colspan="9">
+          <input nz-input [(ngModel)]="fbsAbnormalWorkingHours.researchAndDevelopmentMemo" />
+        </td>
+      </tr>
+      <tr>
+        <td >5S</td>
+        <td >
+          <nz-input-number [(ngModel)]="fbsAbnormalWorkingHours.fiveS" [nzMin]="0" [nzStep]="1"></nz-input-number>
+        </td>
+        <td >备注</td>
+        <td colspan="9">
+          <input nz-input [(ngModel)]="fbsAbnormalWorkingHours.fiveSMemo" />
+        </td>
+      </tr>
+      <tr>
+        <td >打包</td>
+        <td >
+          <nz-input-number [(ngModel)]="fbsAbnormalWorkingHours.pack" [nzMin]="0" [nzStep]="1"></nz-input-number>
+        </td>
+        <td >备注</td>
+        <td colspan="9">
+          <input nz-input [(ngModel)]="fbsAbnormalWorkingHours.packMemo" />
+        </td>
+      </tr>
+      <tr>
+        <td >其他</td>
+        <td >
+          <nz-input-number [(ngModel)]="fbsAbnormalWorkingHours.other" [nzMin]="0" [nzStep]="1"></nz-input-number>
+        </td>
+        <td >备注</td>
+        <td colspan="9">
+          <input nz-input [(ngModel)]="fbsAbnormalWorkingHours.otherMemo" />
+        </td>
       </tr>
       <tr>
-        <td rowSpan="3">异常工时统计</td>
+        <td rowSpan="6">异常工时统计</td>
         <td>质量</td>
         <td>
           <nz-input-number [(ngModel)]="fbsAbnormalWorkingHours.quality" [nzMin]="0" [nzStep]="1"></nz-input-number>
         </td>
+        <td >备注</td>
+        <td colspan="9">
+          <input nz-input [(ngModel)]="fbsAbnormalWorkingHours.qualityMemo" />
+        </td>
+      </tr>
+      <tr>
+        <td>物料</td>
+        <td>
+          <nz-input-number [(ngModel)]="fbsAbnormalWorkingHours.materiel" [nzMin]="0" [nzStep]="1"></nz-input-number>
+        </td>
+        <td >备注</td>
+        <td colspan="9">
+          <input nz-input [(ngModel)]="fbsAbnormalWorkingHours.materielMemo" />
+        </td>
+      </tr>
+      <tr>
+        <td>设备</td>
+        <td>
+          <nz-input-number [(ngModel)]="fbsAbnormalWorkingHours.equipment" [nzMin]="0" [nzStep]="1"></nz-input-number>
+        </td>
+        <td >备注</td>
+        <td colspan="9">
+          <input nz-input [(ngModel)]="fbsAbnormalWorkingHours.equipmentMemo" />
+        </td>
+      </tr>
+      <tr>
+        <td>设计</td>
+        <td>
+          <nz-input-number [(ngModel)]="fbsAbnormalWorkingHours.design" [nzMin]="0" [nzStep]="1"></nz-input-number>
+        </td>
+        <td >备注</td>
+        <td colspan="9">
+          <input nz-input [(ngModel)]="fbsAbnormalWorkingHours.designMemo" />
+        </td>
+      </tr>
+      <tr>
+        <td>能源</td>
+        <td>
+          <nz-input-number [(ngModel)]="fbsAbnormalWorkingHours.energy" [nzMin]="0" [nzStep]="1"></nz-input-number>
+        </td>
+        <td >备注</td>
+        <td colspan="9">
+          <input nz-input [(ngModel)]="fbsAbnormalWorkingHours.energyMemo" />
+        </td>
+      </tr>
+      <tr>
+        <td>计划</td>
+        <td>
+          <nz-input-number [(ngModel)]="fbsAbnormalWorkingHours.plan" [nzMin]="0" [nzStep]="1"></nz-input-number>
+        </td>
+        <td >备注</td>
+        <td colspan="9">
+          <input nz-input [(ngModel)]="fbsAbnormalWorkingHours.planMemo" />
+        </td>
+      </tr>
+      <!-- <tr>
         <td>设计</td>
         <td>
           <nz-input-number [(ngModel)]="fbsAbnormalWorkingHours.design" [nzMin]="0" [nzStep]="1"></nz-input-number>
@@ -115,23 +230,24 @@
           <nz-input-number [(ngModel)]="fbsAbnormalWorkingHours.equipment" [nzMin]="0" [nzStep]="1"></nz-input-number>
         </td>
         <td>计划</td>
-        <td >
+        <td>
           <nz-input-number [(ngModel)]="fbsAbnormalWorkingHours.plan" [nzMin]="0" [nzStep]="1"></nz-input-number>
         </td>
         <td></td>
         <td></td>
       </tr>
       <tr>
-        <td  rowSpan="2">仓库工时统计</td>
-        <td >配料</td>
+        <td rowSpan="2">仓库工时统计</td>
+        <td>配料</td>
         <td>
-          <nz-input-number [(ngModel)]="fbsAbnormalWorkingHours.mixedIngredients" [nzMin]="0" [nzStep]="1"></nz-input-number>
+          <nz-input-number [(ngModel)]="fbsAbnormalWorkingHours.mixedIngredients" [nzMin]="0" [nzStep]="1">
+          </nz-input-number>
         </td>
-        <td >入库</td>
-        <td >
+        <td>入库</td>
+        <td>
           <nz-input-number [(ngModel)]="fbsAbnormalWorkingHours.warehousing" [nzMin]="0" [nzStep]="1"></nz-input-number>
         </td>
-        <td >打包</td>
+        <td>打包</td>
         <td>
           <nz-input-number [(ngModel)]="fbsAbnormalWorkingHours.pack" [nzMin]="0" [nzStep]="1"></nz-input-number>
         </td>
@@ -142,11 +258,11 @@
           <nz-input-number [(ngModel)]="fbsAbnormalWorkingHours.warehouseOthers" [nzMin]="0" [nzStep]="1">
           </nz-input-number>
         </td>
-        <td >备注</td>
-        <td colSpan="3"> 
+        <td>备注</td>
+        <td colSpan="3">
           <textarea rows="2" nz-input [(ngModel)]="fbsAbnormalWorkingHours.memo"></textarea>
         </td>
-      </tr>
+      </tr> -->
       <tr>
         <!-- <td>改善措施</td>
         <td>当日派工产品</td>
@@ -190,28 +306,34 @@
           <thead>
             <tr>
               <th nzWidth="5%">序号</th>
-              <th nzWidth="10%">类别</th>
-              <th nzWidth="15%">物料名称</th>
-              <th nzWidth="10%">计划数量</th>
-              <th nzWidth="10%">不良品数量</th>
-              <th nzWidth="25%">异常原因描述</th>
-              <th nzWidth="15%">异常类别</th>
+              <th nzWidth="10%">生产订单</th>
+              <th nzWidth="10%">物料编码</th>
+              <th nzWidth="10%">物料名称</th>
+              <th nzWidth="5%">计划数量</th>
+              <th nzWidth="5%">不良品数量</th>
+              <th nzWidth="15%">不良描述</th>
+              <th nzWidth="10%">不良物料名称</th>
+              <th nzWidth="5%">数量</th>
+              <th nzWidth="5%">不良数量</th>
               <th nzWidth="10%">操作</th>
             </tr>
           </thead>
           <tbody>
             <tr *ngFor="let data of editRowTable.data">
               <td>{{data.sort}}</td>
-              <td>
+              <td>{{data.productionOrderNumberName}}</td>
+              <td>{{data.productId}}</td>
+              <!-- <td>
                 <nz-select [(ngModel)]="data.type" style="width: 100%;" nzShowSearch nzAllowClear nzPlaceHolder="请选择"
                   [nzDropdownMatchSelectWidth]="false">
                   <nz-option nzLabel="产品" nzValue="产品"> </nz-option>
                   <nz-option nzLabel="物料" nzValue="物料"> </nz-option>
                 </nz-select>
-              </td>
+              </td> -->
               <td>
                 <!-- 选择产品 -->
-                <ng-container *ngIf="data.type=='产品'">
+                <!-- <ng-container *ngIf="data.type=='产品'"> -->
+                  <ng-container >
                   <nz-select [(ngModel)]="data.productId" style="width: 100%;" nzShowSearch nzAllowClear
                     nzPlaceHolder="请选择" (ngModelChange)="productChange($event,data)"
                     [nzDropdownMatchSelectWidth]="false">
@@ -221,18 +343,20 @@
                   </nz-select>
                 </ng-container>
                 <!-- 选择物料 -->
-                <ng-container *ngIf="data.type=='物料'">
+                <!-- <ng-container *ngIf="data.type=='物料'">
                   <input [(ngModel)]="data.product" nz-input
               placeholder="请输入" />
-                </ng-container>
+                </ng-container> -->
+                <!-- {{data.product}} -->
               </td>
               <td>
-              <ng-container *ngIf="data.type=='产品'">
+              <!-- <ng-container *ngIf="data.type=='产品'">
                 {{data.plannedQuantity}}
               </ng-container>
               <ng-container *ngIf="data.type=='物料'">
                 <nz-input-number [(ngModel)]="data.plannedQuantity" [nzMin]="0" [nzStep]="1"></nz-input-number>
-              </ng-container>
+              </ng-container> -->
+              {{data.plannedQuantity}}
               </td>
               <td><nz-input-number [(ngModel)]="data.rejectsNumber" [nzMin]="0" [nzStep]="1"></nz-input-number></td>
               <td><textarea rows="1" nz-input [(ngModel)]="data.describes"></textarea></td>
@@ -243,7 +367,13 @@
                     <nz-option [nzLabel]="type.typeName" [nzValue]="type.id"> </nz-option>
                   </ng-container>
                 </nz-select> -->
-                <input nz-input name="data.typeName" [(ngModel)]="data.typeName" />
+                <input nz-input name="data.materielName" [(ngModel)]="data.materielName" />
+              </td>
+              <td>
+                <nz-input-number [(ngModel)]="data.materielNumberOfTasks" [nzMin]="0" [nzStep]="1"></nz-input-number>
+              </td>
+              <td>
+                <nz-input-number [(ngModel)]="data.materielBadNumber" [nzMin]="0" [nzStep]="1"></nz-input-number>
               </td>
               <td><a nz-popconfirm nzTitle="是否删除?" (nzOnConfirm)="describeDeleteRow(data.sort)">删除</a></td>
             </tr>

+ 1 - 0
src/app/routes/fbs-abnormal-working-hours/update/update.component.ts

@@ -163,6 +163,7 @@ export class FbsAbnormalWorkingHoursUpdateComponent implements OnInit {
           data.workshopDispatchListId=element.id;//派工单id
           data.product=element.product;//产品名称
           data.plannedQuantity=element.plannedQuantity;//计划数量
+          data.productionOrderNumberName=element.productionOrderNumberName;
         }
       });
     }

+ 195 - 55
src/app/routes/fbs-abnormal-working-hours/view/view.component.html

@@ -13,135 +13,269 @@
       <tr>
         <!-- <td style="width: 25%;">姓名</td>
         <td style="width: 25%;" colSpan="2">
-          {{fbsAbnormalWorkingHours.name}}
+          <nz-select [(ngModel)]="fbsAbnormalWorkingHours.personnelIdU8" style="width: 100%;" nzShowSearch nzAllowClear
+            nzPlaceHolder="请选择" (ngModelChange)="personnelChange($event)">
+            <ng-container *ngFor="let proper of properList">
+              <nz-option  [nzLabel]="proper.cpersonname" [nzValue]="proper.cpersoncode"> </nz-option>
+            </ng-container>
+          </nz-select>
         </td> -->
-        <td style="width: 25%;" colSpan="2">日期</td>
-        <td style="width: 25%;" colspan="2">
+        <td colSpan="2">日期</td>
+        <td colspan="11">
           {{fbsAbnormalWorkingHours.date}}
         </td>
-        <td colSpan="3"></td>
       </tr>
       <tr>
-        <td>出勤记录</td>
+        <td>出勤工时</td>
         <td>应到人数</td>
-        <td>
-         {{fbsAbnormalWorkingHours.numberOfPeopleToArrive}}
+        <td style="width: 8%;">
+          {{fbsAbnormalWorkingHours.numberOfPeopleToArrive}}
         </td>
         <td>实到人数</td>
-        <td>
+        <td style="width: 8%;">
           {{fbsAbnormalWorkingHours.actualNumberOfPeople}}
         </td>
+        <td>请假</td>
+        <td style="width: 8%;">
+          {{fbsAbnormalWorkingHours.lleave}}
+        </td>
+        <td>旷工</td>
+        <td style="width: 8%;">
+          {{fbsAbnormalWorkingHours.absenteeism}}
+        </td>
+        <td>离职</td>
+        <td style="width: 8%;">
+          {{fbsAbnormalWorkingHours.quit}}
+        </td>
         <td>出勤工时</td>
-        <td>
+        <td style="width: 8%;">
           {{fbsAbnormalWorkingHours.attendanceHours}}
         </td>
       </tr>
       <tr>
         <td>加班记录</td>
+        <td>加班人数</td>
+        <td>
+          {{fbsAbnormalWorkingHours.overtimePeople}}
+        </td>
         <td>加班工时</td>
         <td>
           {{fbsAbnormalWorkingHours.overtimeHours}}
         </td>
         <td>加班原因</td>
-        <td colspan="3">
+        <td colspan="7">
           {{fbsAbnormalWorkingHours.overtimeReason}}
         </td>
       </tr>
       <tr>
-        <td style="width: 25%;" rowSpan="2">其他工时统计</td>
-        <td style="width: 10%;">培训</td>
-        <td style="width: 15%;">
+        <td  rowSpan="6">其他工时统计</td>
+        <td >培训</td>
+        <td >
           {{fbsAbnormalWorkingHours.train}}
         </td>
-        <td style="width: 10%;">会议</td>
-        <td style="width: 15%;">
-          {{fbsAbnormalWorkingHours.meeting}}
+        <td >备注</td>
+        <td colspan="9">
+          {{fbsAbnormalWorkingHours.trainMemo}}
         </td>
-        <td style="width: 10%;">5S</td>
-        <td style="width: 15%;">
-          {{fbsAbnormalWorkingHours.fiveS}}
+      </tr>
+      <tr>
+        <td >会议</td>
+        <td >
+         {{fbsAbnormalWorkingHours.meeting}}
+        </td>
+        <td >备注</td>
+        <td colspan="9">
+          {{fbsAbnormalWorkingHours.meetingMemo}}
         </td>
       </tr>
+      
       <tr>
         <td>研发</td>
         <td>
           {{fbsAbnormalWorkingHours.researchAndDevelopment}}
         </td>
-        <td colSpan="5"></td>
+        <td >备注</td>
+        <td colspan="9">
+          {{fbsAbnormalWorkingHours.researchAndDevelopmentMemo}}
+        </td>
+      </tr>
+      <tr>
+        <td >5S</td>
+        <td >
+          {{fbsAbnormalWorkingHours.fiveS}}
+        </td>
+        <td >备注</td>
+        <td colspan="9">
+          {{fbsAbnormalWorkingHours.fiveSMemo}}
+        </td>
       </tr>
       <tr>
-        <td rowSpan="3">异常工时统计</td>
+        <td >打包</td>
+        <td >
+          {{fbsAbnormalWorkingHours.pack}}
+        </td>
+        <td >备注</td>
+        <td colspan="9">
+          {{fbsAbnormalWorkingHours.packMemo}}
+        </td>
+      </tr>
+      <tr>
+        <td >其他</td>
+        <td >
+          {{fbsAbnormalWorkingHours.other}}
+        </td>
+        <td >备注</td>
+        <td colspan="9">
+          {{fbsAbnormalWorkingHours.otherMemo}}
+        </td>
+      </tr>
+      <tr>
+        <td rowSpan="6">异常工时统计</td>
         <td>质量</td>
         <td>
-          {{fbsAbnormalWorkingHours.quality}}
+         {{fbsAbnormalWorkingHours.quality}}
+        </td>
+        <td >备注</td>
+        <td colspan="9">
+          {{fbsAbnormalWorkingHours.qualityMemo}}
+        </td>
+      </tr>
+      <tr>
+        <td>物料</td>
+        <td>
+          {{fbsAbnormalWorkingHours.materiel}}
         </td>
+        <td >备注</td>
+        <td colspan="9">
+          {{fbsAbnormalWorkingHours.materielMemo}}
+        </td>
+      </tr>
+      <tr>
+        <td>设备</td>
+        <td>
+         {{fbsAbnormalWorkingHours.equipment}}
+        </td>
+        <td >备注</td>
+        <td colspan="9">
+          {{fbsAbnormalWorkingHours.equipmentMemo}}
+        </td>
+      </tr>
+      <tr>
         <td>设计</td>
         <td>
           {{fbsAbnormalWorkingHours.design}}
         </td>
+        <td >备注</td>
+        <td colspan="9">
+          {{fbsAbnormalWorkingHours.designMemo}}
+        </td>
+      </tr>
+      <tr>
+        <td>能源</td>
+        <td>
+          {{fbsAbnormalWorkingHours.energy}}
+        </td>
+        <td >备注</td>
+        <td colspan="9">
+          {{fbsAbnormalWorkingHours.energyMemo}}
+        </td>
+      </tr>
+      <tr>
+        <td>计划</td>
+        <td>
+         {{fbsAbnormalWorkingHours.plan}}
+        </td>
+        <td >备注</td>
+        <td colspan="9">
+          {{fbsAbnormalWorkingHours.planMemo}}
+        </td>
+      </tr>
+      <!-- <tr>
+        <td>设计</td>
+        <td>
+          <nz-input-number [(ngModel)]="fbsAbnormalWorkingHours.design" [nzMin]="0" [nzStep]="1"></nz-input-number>
+        </td>
         <td>返工</td>
         <td>
-          {{fbsAbnormalWorkingHours.rework}}
+          <nz-input-number [(ngModel)]="fbsAbnormalWorkingHours.rework" [nzMin]="0" [nzStep]="1"></nz-input-number>
         </td>
       </tr>
       <tr>
         <td>物料</td>
         <td>
-          {{fbsAbnormalWorkingHours.materiel}}
+          <nz-input-number [(ngModel)]="fbsAbnormalWorkingHours.materiel" [nzMin]="0" [nzStep]="1"></nz-input-number>
         </td>
         <td>能源</td>
         <td>
-          {{fbsAbnormalWorkingHours.energy}}
+          <nz-input-number [(ngModel)]="fbsAbnormalWorkingHours.energy" [nzMin]="0" [nzStep]="1"></nz-input-number>
         </td>
         <td>其他</td>
         <td>
-          {{fbsAbnormalWorkingHours.other}}
+          <nz-input-number [(ngModel)]="fbsAbnormalWorkingHours.other" [nzMin]="0" [nzStep]="1"></nz-input-number>
         </td>
       </tr>
       <tr>
         <td>设备</td>
         <td>
-          {{fbsAbnormalWorkingHours.equipment}}
+          <nz-input-number [(ngModel)]="fbsAbnormalWorkingHours.equipment" [nzMin]="0" [nzStep]="1"></nz-input-number>
         </td>
         <td>计划</td>
-        <td colSpan="4">
-          {{fbsAbnormalWorkingHours.plan}}
+        <td>
+          <nz-input-number [(ngModel)]="fbsAbnormalWorkingHours.plan" [nzMin]="0" [nzStep]="1"></nz-input-number>
         </td>
+        <td></td>
+        <td></td>
       </tr>
       <tr>
-        <td  rowSpan="2">仓库工时统计</td>
-        <td >配料</td>
+        <td rowSpan="2">仓库工时统计</td>
+        <td>配料</td>
         <td>
-          {{fbsAbnormalWorkingHours.mixedIngredients}}
+          <nz-input-number [(ngModel)]="fbsAbnormalWorkingHours.mixedIngredients" [nzMin]="0" [nzStep]="1">
+          </nz-input-number>
         </td>
-        <td >入库</td>
-        <td >
-          {{fbsAbnormalWorkingHours.warehousing}}
+        <td>入库</td>
+        <td>
+          <nz-input-number [(ngModel)]="fbsAbnormalWorkingHours.warehousing" [nzMin]="0" [nzStep]="1"></nz-input-number>
         </td>
-        <td >打包</td>
+        <td>打包</td>
         <td>
-          {{fbsAbnormalWorkingHours.pack}}
+          <nz-input-number [(ngModel)]="fbsAbnormalWorkingHours.pack" [nzMin]="0" [nzStep]="1"></nz-input-number>
         </td>
       </tr>
       <tr>
         <td>其他</td>
         <td>
-          {{fbsAbnormalWorkingHours.warehouseOthers}}
+          <nz-input-number [(ngModel)]="fbsAbnormalWorkingHours.warehouseOthers" [nzMin]="0" [nzStep]="1">
+          </nz-input-number>
         </td>
-        <td >备注</td>
-        <td colSpan="3"> 
-          {{fbsAbnormalWorkingHours.memo}}
+        <td>备注</td>
+        <td colSpan="3">
+          <textarea rows="2" nz-input [(ngModel)]="fbsAbnormalWorkingHours.memo"></textarea>
         </td>
-      </tr>
-      <!-- <tr>
-        <td>改善措施</td>
+      </tr> -->
+      <tr>
+        <!-- <td>改善措施</td>
         <td>当日派工产品</td>
         <td>
-          {{fbsAbnormalWorkingHours.product}}
+          <nz-select [(ngModel)]="fbsAbnormalWorkingHours.productId" style="width: 100%;" nzShowSearch
+            nzAllowClear nzPlaceHolder="请选择" (ngModelChange)="productChange($event)">
+            <ng-container *ngFor="let produc of productList">
+              <nz-option [nzLabel]="produc.product" [nzValue]="produc.productId"> </nz-option>
+            </ng-container>
+          </nz-select>
         </td>
         <td>不良品数量</td>
-        <td>{{fbsAbnormalWorkingHours.rejectsNumber}}</td>
-      </tr> -->
+        <td><nz-input-number [(ngModel)]="fbsAbnormalWorkingHours.rejectsNumber" [nzMin]="0" [nzStep]="1"></nz-input-number></td> -->
+        <!-- <td>异常类别</td>
+        <td>
+          <nz-select [(ngModel)]="fbsAbnormalWorkingHours.typeId" style="width: 100%;" nzShowSearch
+            nzAllowClear nzPlaceHolder="请选择" (ngModelChange)="typeChange($event)">
+            <ng-container *ngFor="let type of typeListSelect">
+              <nz-option [nzLabel]="type.typeName" [nzValue]="type.id"> </nz-option>
+            </ng-container>
+          </nz-select>
+        </td> -->
+      </tr>
       <tr></tr>
     </tbody>
   </nz-table>
@@ -156,24 +290,30 @@
           <thead>
             <tr>
               <th nzWidth="5%">序号</th>
-              <th nzWidth="10%">类别</th>
-              <th nzWidth="15%">物料名称</th>
-              <th nzWidth="10%">计划数量</th>
-              <th nzWidth="10%">不良品数量</th>
-              <th nzWidth="25%">异常原因描述</th>
-              <th nzWidth="15%">异常类别</th>
+              <th nzWidth="10%">生产订单</th>
+              <th nzWidth="10%">物料编码</th>
+              <th nzWidth="10%">物料名称</th>
+              <th nzWidth="5%">计划数量</th>
+              <th nzWidth="5%">不良品数量</th>
+              <th nzWidth="15%">不良描述</th>
+              <th nzWidth="10%">不良物料名称</th>
+              <th nzWidth="5%">数量</th>
+              <th nzWidth="5%">不良数量</th>
               <!-- <th nzWidth="10%">操作</th> -->
             </tr>
           </thead>
           <tbody>
             <tr *ngFor="let data of editRowTable.data">
               <td>{{data.sort}}</td>
-              <td>{{data.type}}</td>
+              <td>{{data.productionOrderNumberName}}</td>
+              <td>{{data.productId}}</td>
               <td>{{data.product}}</td>
               <td>{{data.plannedQuantity}}</td>
               <td>{{data.rejectsNumber}}</td>
               <td>{{data.describes}}</td>
-              <td>{{data.typeName}}</td>
+              <td>{{data.materielName}}</td>
+              <td>{{data.materielNumberOfTasks}}</td>
+              <td>{{data.materielBadNumber}}</td>
             </tr>
           </tbody>
         </nz-table>

+ 5 - 1
src/app/services/fbs/fbs-workshop-dispatch-list.service.ts

@@ -83,5 +83,9 @@ export class FbsWorkshopDispatchListService {
   async getDispatchNumberByOrderIdProductId(body:any): Promise<BaseResponse<any>> {
     return await this.http.get<BaseResponse<any>>('/fbsWorkshopDispatchList/fbsWorkshopDispatchList/getDispatchNumberByOrderIdProductId',{params:body}).toPromise();
   }
-  
+
+  //计划报表
+  async getPlanningReport(): Promise<BaseResponse<FbsWorkshopDispatchList>> {
+    return await this.http.get<BaseResponse<FbsWorkshopDispatchList>>('/fbsWorkshopDispatchList/fbsWorkshopDispatchList/getPlanningReport').toPromise();
+  }
 }