Przeglądaj źródła

🦄 refactor(日报): 非生产时间表格显示

Zimo 8 godzin temu
rodzic
commit
270778fb84

+ 99 - 1
src/views/pms/iotrddailyreport/fillDailyReport.vue

@@ -139,7 +139,105 @@
           <el-table-column label="施工队伍" align="center" prop="deptName" />
           <el-table-column label="项目" align="center" prop="contractName" />
           <el-table-column label="任务" align="center" prop="taskName" />
-          <el-table-column label="非生产时间" align="center" prop="nonProductFlag" :min-width="80">
+          <el-table-column label="非生产时间" align="center">
+            <el-table-column
+              label="工程质量"
+              align="center"
+              prop="accidentTime"
+              :min-width="80"
+              resizable
+            />
+            <el-table-column
+              label="设备故障"
+              align="center"
+              prop="repairTime"
+              :min-width="80"
+              resizable
+            />
+            <el-table-column
+              label="设备保养"
+              align="center"
+              prop="selfStopTime"
+              :min-width="80"
+              resizable
+            />
+            <el-table-column
+              label="技术受限"
+              align="center"
+              prop="complexityTime"
+              :min-width="80"
+              resizable
+            />
+            <el-table-column
+              label="生产配合"
+              align="center"
+              prop="relocationTime"
+              :min-width="80"
+              resizable
+            />
+            <el-table-column
+              label="生产组织"
+              align="center"
+              prop="rectificationTime"
+              :min-width="80"
+              resizable
+            />
+            <el-table-column
+              label="不可抗力"
+              align="center"
+              prop="waitingStopTime"
+              :min-width="80"
+              resizable
+            />
+            <el-table-column
+              label="待命"
+              align="center"
+              prop="winterBreakTime"
+              :min-width="80"
+              resizable
+            />
+            <el-table-column
+              label="甲方设计"
+              align="center"
+              prop="partyaDesign"
+              :min-width="80"
+              resizable
+            />
+            <el-table-column
+              label="甲方准备"
+              align="center"
+              prop="partyaPrepare"
+              :min-width="80"
+              resizable
+            />
+            <el-table-column
+              label="甲方资源"
+              align="center"
+              prop="partyaResource"
+              :min-width="80"
+              resizable
+            />
+            <el-table-column
+              label="其它非生产时间"
+              align="center"
+              prop="otherNptTime"
+              :min-width="110"
+              resizable
+            />
+          </el-table-column>
+          <el-table-column
+            label="其他非生产时间原因"
+            align="center"
+            prop="otherNptReason"
+            :min-width="140"
+            resizable
+          />
+          <el-table-column
+            label="非生产时间填写"
+            align="center"
+            prop="nonProductFlag"
+            :min-width="110"
+          >
             <template #default="scope">
               <el-tag
                 :type="

+ 164 - 1
src/views/pms/iotrddailyreport/index.vue

@@ -223,7 +223,105 @@
             :min-width="columnWidths.faultDowntime.width"
             resizable
           />
-          <el-table-column label="非生产时间" align="center" prop="nonProductFlag" :min-width="80">
+          <el-table-column label="非生产时间" align="center">
+            <el-table-column
+              label="工程质量"
+              align="center"
+              prop="accidentTime"
+              :min-width="columnWidths.accidentTime.width"
+              resizable
+            />
+            <el-table-column
+              label="设备故障"
+              align="center"
+              prop="repairTime"
+              :min-width="columnWidths.repairTime.width"
+              resizable
+            />
+            <el-table-column
+              label="设备保养"
+              align="center"
+              prop="selfStopTime"
+              :min-width="columnWidths.selfStopTime.width"
+              resizable
+            />
+            <el-table-column
+              label="技术受限"
+              align="center"
+              prop="complexityTime"
+              :min-width="columnWidths.complexityTime.width"
+              resizable
+            />
+            <el-table-column
+              label="生产配合"
+              align="center"
+              prop="relocationTime"
+              :min-width="columnWidths.relocationTime.width"
+              resizable
+            />
+            <el-table-column
+              label="生产组织"
+              align="center"
+              prop="rectificationTime"
+              :min-width="columnWidths.rectificationTime.width"
+              resizable
+            />
+            <el-table-column
+              label="不可抗力"
+              align="center"
+              prop="waitingStopTime"
+              :min-width="columnWidths.waitingStopTime.width"
+              resizable
+            />
+            <el-table-column
+              label="待命"
+              align="center"
+              prop="winterBreakTime"
+              :min-width="columnWidths.winterBreakTime.width"
+              resizable
+            />
+            <el-table-column
+              label="甲方设计"
+              align="center"
+              prop="partyaDesign"
+              :min-width="columnWidths.partyaDesign.width"
+              resizable
+            />
+            <el-table-column
+              label="甲方准备"
+              align="center"
+              prop="partyaPrepare"
+              :min-width="columnWidths.partyaPrepare.width"
+              resizable
+            />
+            <el-table-column
+              label="甲方资源"
+              align="center"
+              prop="partyaResource"
+              :min-width="columnWidths.partyaResource.width"
+              resizable
+            />
+            <el-table-column
+              label="其它非生产时间"
+              align="center"
+              prop="otherNptTime"
+              :min-width="columnWidths.otherNptTime.width"
+              resizable
+            />
+          </el-table-column>
+          <el-table-column
+            label="其他非生产时间原因"
+            align="center"
+            prop="otherNptReason"
+            :min-width="columnWidths.otherNptReason.width"
+            resizable
+          />
+          <el-table-column
+            label="非生产时间填写"
+            align="center"
+            prop="nonProductFlag"
+            :min-width="110"
+          >
             <template #default="scope">
               <el-tag
                 :type="
@@ -596,6 +694,71 @@ const columnWidths = ref<
     label: '故障误工H',
     prop: 'faultDowntime',
     width: '120px'
+  },
+  accidentTime: {
+    label: '工程质量',
+    prop: 'accidentTime',
+    width: '120px'
+  },
+  repairTime: {
+    label: '设备故障',
+    prop: 'repairTime',
+    width: '120px'
+  },
+  selfStopTime: {
+    label: '设备保养',
+    prop: 'selfStopTime',
+    width: '120px'
+  },
+  complexityTime: {
+    label: '技术受限',
+    prop: 'complexityTime',
+    width: '120px'
+  },
+  relocationTime: {
+    label: '生产配合',
+    prop: 'relocationTime',
+    width: '120px'
+  },
+  rectificationTime: {
+    label: '生产组织',
+    prop: 'rectificationTime',
+    width: '120px'
+  },
+  waitingStopTime: {
+    label: '不可抗力',
+    prop: 'waitingStopTime',
+    width: '120px'
+  },
+  winterBreakTime: {
+    label: '待命',
+    prop: 'winterBreakTime',
+    width: '120px'
+  },
+  partyaDesign: {
+    label: '甲方设计',
+    prop: 'partyaDesign',
+    width: '120px'
+  },
+  partyaPrepare: {
+    label: '甲方资源',
+    prop: 'partyaPrepare',
+    width: '120px'
+  },
+  partyaResource: {
+    label: '甲方准备',
+    prop: 'partyaResource',
+    width: '120px'
+  },
+  otherNptTime: {
+    label: '其它非生产时间',
+    prop: 'otherNptTime',
+    width: '120px'
+  },
+  otherNptReason: {
+    label: '其他非生产时间原因',
+    prop: 'otherNptReason',
+    width: '120px'
   }
 })
 

+ 86 - 0
src/views/pms/iotrddailyreport/statistics.vue

@@ -158,6 +158,92 @@
               </template>
             </el-table-column>
           </el-table-column>
+          <!-- <el-table-column label="非生产时间" align="center">
+            <el-table-column
+              label="工程质量"
+              align="center"
+              prop="accidentTime"
+              :min-width="80"
+              resizable
+            />
+            <el-table-column
+              label="设备故障"
+              align="center"
+              prop="repairTime"
+              :min-width="80"
+              resizable
+            />
+            <el-table-column
+              label="设备保养"
+              align="center"
+              prop="selfStopTime"
+              :min-width="80"
+              resizable
+            />
+            <el-table-column
+              label="技术受限"
+              align="center"
+              prop="complexityTime"
+              :min-width="80"
+              resizable
+            />
+            <el-table-column
+              label="生产配合"
+              align="center"
+              prop="relocationTime"
+              :min-width="80"
+              resizable
+            />
+            <el-table-column
+              label="生产组织"
+              align="center"
+              prop="rectificationTime"
+              :min-width="80"
+              resizable
+            />
+            <el-table-column
+              label="不可抗力"
+              align="center"
+              prop="waitingStopTime"
+              :min-width="80"
+              resizable
+            />
+            <el-table-column
+              label="待命"
+              align="center"
+              prop="winterBreakTime"
+              :min-width="80"
+              resizable
+            />
+            <el-table-column
+              label="甲方设计"
+              align="center"
+              prop="partyaDesign"
+              :min-width="80"
+              resizable
+            />
+            <el-table-column
+              label="甲方准备"
+              align="center"
+              prop="partyaPrepare"
+              :min-width="80"
+              resizable
+            />
+            <el-table-column
+              label="甲方资源"
+              align="center"
+              prop="partyaResource"
+              :min-width="80"
+              resizable
+            />
+            <el-table-column
+              label="其它非生产时间"
+              align="center"
+              prop="otherNptTime"
+              :min-width="120"
+              resizable
+            />
+          </el-table-column> -->
           <el-table-column
             label="非生产时效"
             align="center"

+ 86 - 9
src/views/pms/iotrhdailyreport/approval.vue

@@ -26,7 +26,19 @@ interface List {
   dailyInjectWaterTime: number // 注水时间(H)
   dailyPowerUsage: number // 日耗电量(度)
   dailyOilUsage: number // 日耗油量(升)
-  nonProductionTime: number // 非生产时间(小时)
+  accidentTime: number
+  repairTime: number
+  selfStopTime: number
+  complexityTime: number
+  relocationTime: number
+  rectificationTime: number
+  waitingStopTime: number
+  winterBreakTime: number
+  partyaDesign: number
+  partyaPrepare: number
+  partyaResource: number
+  otherNptTime: number
+  otherNptReason: string // 其他非生产时间原因
   nptReason: string // 非生产时间原因
   constructionStartDate: number // 施工开始日期
   constructionEndDate: number // 施工结束日期
@@ -165,18 +177,83 @@ const columns = ref<Column[]>([
     ]
   },
   {
-    label: '非生产时间(H)',
-    prop: 'nonProductionTime',
-    'min-width': '120px'
+    label: '非生产时间',
+    children: [
+      {
+        label: '工程质量',
+        prop: 'accidentTime',
+        'min-width': '120px'
+      },
+      {
+        label: '设备故障',
+        prop: 'repairTime',
+        'min-width': '120px'
+      },
+      {
+        label: '设备保养',
+        prop: 'selfStopTime',
+        'min-width': '120px'
+      },
+      {
+        label: '技术受限',
+        prop: 'complexityTime',
+        'min-width': '120px'
+      },
+      {
+        label: '生产配合',
+        prop: 'relocationTime',
+        'min-width': '120px'
+      },
+      {
+        label: '生产组织',
+        prop: 'rectificationTime',
+        'min-width': '120px'
+      },
+      {
+        label: '不可抗力',
+        prop: 'waitingStopTime',
+        'min-width': '120px'
+      },
+      {
+        label: '待命',
+        prop: 'winterBreakTime',
+        'min-width': '120px'
+      },
+      {
+        label: '甲方设计',
+        prop: 'partyaDesign',
+        'min-width': '120px'
+      },
+      {
+        label: '甲方准备',
+        prop: 'partyaPrepare',
+        'min-width': '120px'
+      },
+      {
+        label: '甲方资源',
+        prop: 'partyaResource',
+        'min-width': '120px'
+      },
+      {
+        label: '其它非生产时间',
+        prop: 'otherNptTime',
+        'min-width': '120px'
+      }
+    ]
   },
   {
-    label: '非生产时间原因',
-    prop: 'nptReason',
-    'min-width': '120px',
-    isTag: true,
-    dictType: DICT_TYPE.PMS_PROJECT_NPT_REASON
+    label: '其他非生产时间原因',
+    prop: 'otherNptReason',
+    'min-width': '120px'
   },
   // {
+  //   label: '非生产时间原因',
+  //   prop: 'nptReason',
+  //   'min-width': '120px',
+  //   isTag: true,
+  //   dictType: DICT_TYPE.PMS_PROJECT_NPT_REASON
+  // },
+  // {
   //   label: '施工开始日期',
   //   prop: 'constructionStartDate',
   //   'min-width': '120px',

+ 86 - 9
src/views/pms/iotrhdailyreport/fill.vue

@@ -26,7 +26,19 @@ interface List {
   dailyInjectWaterTime: number // 注水时间(H)
   dailyPowerUsage: number // 日耗电量(度)
   dailyOilUsage: number // 日耗油量(升)
-  nonProductionTime: number // 非生产时间(小时)
+  accidentTime: number
+  repairTime: number
+  selfStopTime: number
+  complexityTime: number
+  relocationTime: number
+  rectificationTime: number
+  waitingStopTime: number
+  winterBreakTime: number
+  partyaDesign: number
+  partyaPrepare: number
+  partyaResource: number
+  otherNptTime: number
+  otherNptReason: string // 其他非生产时间原因
   nptReason: string // 非生产时间原因
   constructionStartDate: number // 施工开始日期
   constructionEndDate: number // 施工结束日期
@@ -165,18 +177,83 @@ const columns = ref<Column[]>([
     ]
   },
   {
-    label: '非生产时间(H)',
-    prop: 'nonProductionTime',
-    'min-width': '120px'
+    label: '非生产时间',
+    children: [
+      {
+        label: '工程质量',
+        prop: 'accidentTime',
+        'min-width': '120px'
+      },
+      {
+        label: '设备故障',
+        prop: 'repairTime',
+        'min-width': '120px'
+      },
+      {
+        label: '设备保养',
+        prop: 'selfStopTime',
+        'min-width': '120px'
+      },
+      {
+        label: '技术受限',
+        prop: 'complexityTime',
+        'min-width': '120px'
+      },
+      {
+        label: '生产配合',
+        prop: 'relocationTime',
+        'min-width': '120px'
+      },
+      {
+        label: '生产组织',
+        prop: 'rectificationTime',
+        'min-width': '120px'
+      },
+      {
+        label: '不可抗力',
+        prop: 'waitingStopTime',
+        'min-width': '120px'
+      },
+      {
+        label: '待命',
+        prop: 'winterBreakTime',
+        'min-width': '120px'
+      },
+      {
+        label: '甲方设计',
+        prop: 'partyaDesign',
+        'min-width': '120px'
+      },
+      {
+        label: '甲方准备',
+        prop: 'partyaPrepare',
+        'min-width': '120px'
+      },
+      {
+        label: '甲方资源',
+        prop: 'partyaResource',
+        'min-width': '120px'
+      },
+      {
+        label: '其它非生产时间',
+        prop: 'otherNptTime',
+        'min-width': '120px'
+      }
+    ]
   },
   {
-    label: '非生产时间原因',
-    prop: 'nptReason',
-    'min-width': '120px',
-    isTag: true,
-    dictType: DICT_TYPE.PMS_PROJECT_NPT_REASON
+    label: '其他非生产时间原因',
+    prop: 'otherNptReason',
+    'min-width': '120px'
   },
   // {
+  //   label: '非生产时间原因',
+  //   prop: 'nptReason',
+  //   'min-width': '120px',
+  //   isTag: true,
+  //   dictType: DICT_TYPE.PMS_PROJECT_NPT_REASON
+  // },
+  // {
   //   label: '施工开始日期',
   //   prop: 'constructionStartDate',
   //   'min-width': '120px',

+ 152 - 11
src/views/pms/iotrhdailyreport/index.vue

@@ -267,14 +267,100 @@
                 resizable
               />
             </el-table-column>
+            <el-table-column label="非生产时间" align="center">
+              <el-table-column
+                label="工程质量"
+                align="center"
+                prop="accidentTime"
+                :min-width="columnWidths.accidentTime.width"
+                resizable
+              />
+              <el-table-column
+                label="设备故障"
+                align="center"
+                prop="repairTime"
+                :min-width="columnWidths.repairTime.width"
+                resizable
+              />
+              <el-table-column
+                label="设备保养"
+                align="center"
+                prop="selfStopTime"
+                :min-width="columnWidths.selfStopTime.width"
+                resizable
+              />
+              <el-table-column
+                label="技术受限"
+                align="center"
+                prop="complexityTime"
+                :min-width="columnWidths.complexityTime.width"
+                resizable
+              />
+              <el-table-column
+                label="生产配合"
+                align="center"
+                prop="relocationTime"
+                :min-width="columnWidths.relocationTime.width"
+                resizable
+              />
+              <el-table-column
+                label="生产组织"
+                align="center"
+                prop="rectificationTime"
+                :min-width="columnWidths.rectificationTime.width"
+                resizable
+              />
+              <el-table-column
+                label="不可抗力"
+                align="center"
+                prop="waitingStopTime"
+                :min-width="columnWidths.waitingStopTime.width"
+                resizable
+              />
+              <el-table-column
+                label="待命"
+                align="center"
+                prop="winterBreakTime"
+                :min-width="columnWidths.winterBreakTime.width"
+                resizable
+              />
+              <el-table-column
+                label="甲方设计"
+                align="center"
+                prop="partyaDesign"
+                :min-width="columnWidths.partyaDesign.width"
+                resizable
+              />
+              <el-table-column
+                label="甲方准备"
+                align="center"
+                prop="partyaPrepare"
+                :min-width="columnWidths.partyaPrepare.width"
+                resizable
+              />
+              <el-table-column
+                label="甲方资源"
+                align="center"
+                prop="partyaResource"
+                :min-width="columnWidths.partyaResource.width"
+                resizable
+              />
+              <el-table-column
+                label="其它非生产时间"
+                align="center"
+                prop="otherNptTime"
+                :min-width="columnWidths.otherNptTime.width"
+                resizable
+              />
+            </el-table-column>
             <el-table-column
-              label="非生产时间(H)"
+              label="其他非生产时间原因"
               align="center"
-              prop="nonProductionTime"
-              :min-width="columnWidths.nonProductionTime.width"
+              prop="otherNptReason"
+              :min-width="columnWidths.otherNptReason.width"
               resizable
             />
-            <el-table-column
+            <!-- <el-table-column
               :label="t('project.nptReason')"
               align="center"
               prop="nptReason"
@@ -284,7 +370,7 @@
               <template #default="scope">
                 <dict-tag :type="DICT_TYPE.PMS_PROJECT_NPT_REASON" :value="scope.row.nptReason" />
               </template>
-            </el-table-column>
+            </el-table-column> -->
             <!-- <el-table-column
               label="施工开始日期"
               align="center"
@@ -609,14 +695,69 @@ const columnWidths = ref<
     prop: 'dailyOilUsage',
     width: '120px'
   },
-  nonProductionTime: {
-    label: '非生产时间(H)',
-    prop: 'nonProductionTime',
+  accidentTime: {
+    label: '工程质量',
+    prop: 'accidentTime',
+    width: '120px'
+  },
+  repairTime: {
+    label: '设备故障',
+    prop: 'repairTime',
+    width: '120px'
+  },
+  selfStopTime: {
+    label: '设备保养',
+    prop: 'selfStopTime',
+    width: '120px'
+  },
+  complexityTime: {
+    label: '技术受限',
+    prop: 'complexityTime',
+    width: '120px'
+  },
+  relocationTime: {
+    label: '生产配合',
+    prop: 'relocationTime',
+    width: '120px'
+  },
+  rectificationTime: {
+    label: '生产组织',
+    prop: 'rectificationTime',
+    width: '120px'
+  },
+  waitingStopTime: {
+    label: '不可抗力',
+    prop: 'waitingStopTime',
+    width: '120px'
+  },
+  winterBreakTime: {
+    label: '待命',
+    prop: 'winterBreakTime',
+    width: '120px'
+  },
+  partyaDesign: {
+    label: '甲方设计',
+    prop: 'partyaDesign',
+    width: '120px'
+  },
+  partyaPrepare: {
+    label: '甲方资源',
+    prop: 'partyaPrepare',
+    width: '120px'
+  },
+  partyaResource: {
+    label: '甲方准备',
+    prop: 'partyaResource',
+    width: '120px'
+  },
+  otherNptTime: {
+    label: '其它非生产时间',
+    prop: 'otherNptTime',
     width: '120px'
   },
-  nptReason: {
-    label: '非生产时间原因',
-    prop: 'nptReason',
+  otherNptReason: {
+    label: '其他非生产时间原因',
+    prop: 'otherNptReason',
     width: '120px'
   },
   constructionStartDate: {

+ 70 - 39
src/views/pms/iotrydailyreport/approval.vue

@@ -39,6 +39,11 @@ interface List {
   rectificationTime: number
   waitingStopTime: number
   winterBreakTime: number
+  partyaDesign: number
+  partyaPrepare: number
+  partyaResource: number
+  otherNptTime: number
+  otherNptReason: string // 其他非生产时间原因
   constructionStartDate: number
   constructionEndDate: number
   productionStatus: string
@@ -274,46 +279,71 @@ const columns = ref<Column[]>([
     label: '非生产时间',
     children: [
       {
-        label: '事故(H)',
+        label: '工程质量',
         prop: 'accidentTime',
         'min-width': '120px'
       },
       {
-        label: '修理(H)',
+        label: '设备故障',
         prop: 'repairTime',
         'min-width': '120px'
       },
       {
-        label: '自停(H)',
+        label: '设备保养',
         prop: 'selfStopTime',
         'min-width': '120px'
       },
       {
-        label: '复杂(H)',
+        label: '技术受限',
         prop: 'complexityTime',
         'min-width': '120px'
       },
       {
-        label: '搬迁(H)',
+        label: '生产配合',
         prop: 'relocationTime',
         'min-width': '120px'
       },
       {
-        label: '整改(H)',
+        label: '生产组织',
         prop: 'rectificationTime',
         'min-width': '120px'
       },
       {
-        label: '等停(H)',
+        label: '不可抗力',
         prop: 'waitingStopTime',
         'min-width': '120px'
       },
       {
-        label: '冬休(H)',
+        label: '待命',
         prop: 'winterBreakTime',
         'min-width': '120px'
+      },
+      {
+        label: '甲方设计',
+        prop: 'partyaDesign',
+        'min-width': '120px'
+      },
+      {
+        label: '甲方准备',
+        prop: 'partyaPrepare',
+        'min-width': '120px'
+      },
+      {
+        label: '甲方资源',
+        prop: 'partyaResource',
+        'min-width': '120px'
+      },
+      {
+        label: '其它非生产时间',
+        prop: 'otherNptTime',
+        'min-width': '120px'
       }
     ]
+  },
+  {
+    label: '其他非生产时间原因',
+    prop: 'otherNptReason',
+    'min-width': '120px'
   }
 ])
 
@@ -361,26 +391,38 @@ const calculateColumnWidths = (colums: Column[]) => {
   }
 }
 
+const nptFields = [
+  'accidentTime', // 工程质量
+  'repairTime', // 设备故障
+  'selfStopTime', // 设备保养
+  'complexityTime', // 技术受限
+  'relocationTime', // 生产配合
+  'rectificationTime', // 生产组织
+  'waitingStopTime', // 不可抗力
+  'winterBreakTime', // 待命
+  'partyaDesign', // 甲方设计
+  'partyaPrepare', // 甲方资源
+  'partyaResource', // 甲方准备
+  'otherNptTime' // 其它非生产时间
+]
+
 function checkTimeSumEquals24(row: List) {
-  // 获取三个字段的值,转换为数字,如果为空则视为0
-  const gasTime = row.drillingWorkingTime || 0
-  const waterTime = row.otherProductionTime || 0
-  const nonProdTime =
-    row.accidentTime ||
-    0 + row.repairTime ||
-    0 + row.selfStopTime ||
-    0 + row.complexityTime ||
-    0 + row.relocationTime ||
-    0 + row.rectificationTime ||
-    0 + row.waitingStopTime ||
-    0 + row.winterBreakTime ||
-    0
-
-  // 计算总和
-  const sum = gasTime + waterTime + nonProdTime
-
-  // 返回是否等于24(允许一定的浮点数误差)
-  return Math.abs(sum - 24) < 0.01 // 使用0.01作为误差范围
+  const gasTime = parseFloat(row.drillingWorkingTime + '') || 0
+  // 对应你代码中的 waterTime
+  const waterTime = parseFloat(row.otherProductionTime + '') || 0
+
+  // 3. 计算所有非生产时间之和
+  const nonProdTime = nptFields.reduce((sum, field) => {
+    const val = parseFloat(row[field])
+    // 如果值是数字则累加,如果是 NaN 或 null/undefined 则加 0
+    return sum + (isNaN(val) ? 0 : val)
+  }, 0)
+
+  // 4. 计算总和:纯钻进 + 其他生产 + 所有非生产时间
+  const totalSum = gasTime + waterTime + nonProdTime
+
+  // 5. 返回是否等于 24(允许 0.01 的浮点数误差)
+  return Math.abs(totalSum - 24) < 0.01
 }
 
 function cellStyle(data: {
@@ -401,18 +443,7 @@ function cellStyle(data: {
       }
   }
 
-  const timeFields = [
-    'drillingWorkingTime',
-    'otherProductionTime',
-    'accidentTime',
-    'repairTime',
-    'selfStopTime',
-    'complexityTime',
-    'relocationTime',
-    'rectificationTime',
-    'waitingStopTime',
-    'winterBreakTime'
-  ]
+  const timeFields = ['drillingWorkingTime', 'otherProductionTime', ...nptFields]
   if (timeFields.includes(column.property)) {
     if (!checkTimeSumEquals24(row)) {
       return {

+ 70 - 39
src/views/pms/iotrydailyreport/fill.vue

@@ -39,6 +39,11 @@ interface List {
   rectificationTime: number
   waitingStopTime: number
   winterBreakTime: number
+  partyaDesign: number
+  partyaPrepare: number
+  partyaResource: number
+  otherNptTime: number
+  otherNptReason: string
   constructionStartDate: number
   constructionEndDate: number
   productionStatus: string
@@ -274,46 +279,71 @@ const columns = ref<Column[]>([
     label: '非生产时间',
     children: [
       {
-        label: '事故(H)',
+        label: '工程质量',
         prop: 'accidentTime',
         'min-width': '120px'
       },
       {
-        label: '修理(H)',
+        label: '设备故障',
         prop: 'repairTime',
         'min-width': '120px'
       },
       {
-        label: '自停(H)',
+        label: '设备保养',
         prop: 'selfStopTime',
         'min-width': '120px'
       },
       {
-        label: '复杂(H)',
+        label: '技术受限',
         prop: 'complexityTime',
         'min-width': '120px'
       },
       {
-        label: '搬迁(H)',
+        label: '生产配合',
         prop: 'relocationTime',
         'min-width': '120px'
       },
       {
-        label: '整改(H)',
+        label: '生产组织',
         prop: 'rectificationTime',
         'min-width': '120px'
       },
       {
-        label: '等停(H)',
+        label: '不可抗力',
         prop: 'waitingStopTime',
         'min-width': '120px'
       },
       {
-        label: '冬休(H)',
+        label: '待命',
         prop: 'winterBreakTime',
         'min-width': '120px'
+      },
+      {
+        label: '甲方设计',
+        prop: 'partyaDesign',
+        'min-width': '120px'
+      },
+      {
+        label: '甲方准备',
+        prop: 'partyaPrepare',
+        'min-width': '120px'
+      },
+      {
+        label: '甲方资源',
+        prop: 'partyaResource',
+        'min-width': '120px'
+      },
+      {
+        label: '其它非生产时间',
+        prop: 'otherNptTime',
+        'min-width': '120px'
       }
     ]
+  },
+  {
+    label: '其他非生产时间原因',
+    prop: 'otherNptReason',
+    'min-width': '120px'
   }
 ])
 
@@ -361,26 +391,38 @@ const calculateColumnWidths = (colums: Column[]) => {
   }
 }
 
+const nptFields = [
+  'accidentTime', // 工程质量
+  'repairTime', // 设备故障
+  'selfStopTime', // 设备保养
+  'complexityTime', // 技术受限
+  'relocationTime', // 生产配合
+  'rectificationTime', // 生产组织
+  'waitingStopTime', // 不可抗力
+  'winterBreakTime', // 待命
+  'partyaDesign', // 甲方设计
+  'partyaPrepare', // 甲方资源
+  'partyaResource', // 甲方准备
+  'otherNptTime' // 其它非生产时间
+]
+
 function checkTimeSumEquals24(row: List) {
-  // 获取三个字段的值,转换为数字,如果为空则视为0
-  const gasTime = row.drillingWorkingTime || 0
-  const waterTime = row.otherProductionTime || 0
-  const nonProdTime =
-    row.accidentTime ||
-    0 + row.repairTime ||
-    0 + row.selfStopTime ||
-    0 + row.complexityTime ||
-    0 + row.relocationTime ||
-    0 + row.rectificationTime ||
-    0 + row.waitingStopTime ||
-    0 + row.winterBreakTime ||
-    0
-
-  // 计算总和
-  const sum = gasTime + waterTime + nonProdTime
-
-  // 返回是否等于24(允许一定的浮点数误差)
-  return Math.abs(sum - 24) < 0.01 // 使用0.01作为误差范围
+  const gasTime = parseFloat(row.drillingWorkingTime + '') || 0
+  // 对应你代码中的 waterTime
+  const waterTime = parseFloat(row.otherProductionTime + '') || 0
+
+  // 3. 计算所有非生产时间之和
+  const nonProdTime = nptFields.reduce((sum, field) => {
+    const val = parseFloat(row[field])
+    // 如果值是数字则累加,如果是 NaN 或 null/undefined 则加 0
+    return sum + (isNaN(val) ? 0 : val)
+  }, 0)
+
+  // 4. 计算总和:纯钻进 + 其他生产 + 所有非生产时间
+  const totalSum = gasTime + waterTime + nonProdTime
+
+  // 5. 返回是否等于 24(允许 0.01 的浮点数误差)
+  return Math.abs(totalSum - 24) < 0.01
 }
 
 function cellStyle(data: {
@@ -401,18 +443,7 @@ function cellStyle(data: {
       }
   }
 
-  const timeFields = [
-    'drillingWorkingTime',
-    'otherProductionTime',
-    'accidentTime',
-    'repairTime',
-    'selfStopTime',
-    'complexityTime',
-    'relocationTime',
-    'rectificationTime',
-    'waitingStopTime',
-    'winterBreakTime'
-  ]
+  const timeFields = ['drillingWorkingTime', 'otherProductionTime', ...nptFields]
   if (timeFields.includes(column.property)) {
     if (!checkTimeSumEquals24(row)) {
       return {

+ 109 - 58
src/views/pms/iotrydailyreport/index.vue

@@ -340,62 +340,97 @@
             />
             <el-table-column label="非生产时间" align="center">
               <el-table-column
-                label="事故(H)"
+                label="工程质量"
                 align="center"
                 prop="accidentTime"
                 :min-width="columnWidths.accidentTime.width"
                 resizable
               />
               <el-table-column
-                label="修理(H)"
+                label="设备故障"
                 align="center"
                 prop="repairTime"
                 :min-width="columnWidths.repairTime.width"
                 resizable
               />
               <el-table-column
-                label="自停(H)"
+                label="设备保养"
                 align="center"
                 prop="selfStopTime"
                 :min-width="columnWidths.selfStopTime.width"
                 resizable
               />
               <el-table-column
-                label="复杂(H)"
+                label="技术受限"
                 align="center"
                 prop="complexityTime"
                 :min-width="columnWidths.complexityTime.width"
                 resizable
               />
               <el-table-column
-                label="搬迁(H)"
+                label="生产配合"
                 align="center"
                 prop="relocationTime"
                 :min-width="columnWidths.relocationTime.width"
                 resizable
               />
               <el-table-column
-                label="整改(H)"
+                label="生产组织"
                 align="center"
                 prop="rectificationTime"
                 :min-width="columnWidths.rectificationTime.width"
                 resizable
               />
               <el-table-column
-                label="等停(H)"
+                label="不可抗力"
                 align="center"
                 prop="waitingStopTime"
                 :min-width="columnWidths.waitingStopTime.width"
                 resizable
               />
               <el-table-column
-                label="冬休(H)"
+                label="待命"
                 align="center"
                 prop="winterBreakTime"
                 :min-width="columnWidths.winterBreakTime.width"
                 resizable
               />
+              <el-table-column
+                label="甲方设计"
+                align="center"
+                prop="partyaDesign"
+                :min-width="columnWidths.partyaDesign.width"
+                resizable
+              />
+              <el-table-column
+                label="甲方准备"
+                align="center"
+                prop="partyaPrepare"
+                :min-width="columnWidths.partyaPrepare.width"
+                resizable
+              />
+              <el-table-column
+                label="甲方资源"
+                align="center"
+                prop="partyaResource"
+                :min-width="columnWidths.partyaResource.width"
+                resizable
+              />
+              <el-table-column
+                label="其它非生产时间"
+                align="center"
+                prop="otherNptTime"
+                :min-width="columnWidths.otherNptTime.width"
+                resizable
+              />
             </el-table-column>
+            <el-table-column
+              label="其他非生产时间原因"
+              align="center"
+              prop="otherNptReason"
+              :min-width="columnWidths.otherNptReason.width"
+              resizable
+            />
             <el-table-column label="操作" align="center" fixed="right">
               <template #default="scope">
                 <el-button
@@ -659,44 +694,69 @@ const columnWidths = ref<
     width: '120px'
   },
   accidentTime: {
-    label: '事故(H)',
+    label: '工程质量',
     prop: 'accidentTime',
     width: '120px'
   },
   repairTime: {
-    label: '修理(H)',
+    label: '设备故障',
     prop: 'repairTime',
     width: '120px'
   },
   selfStopTime: {
-    label: '自停(H)',
+    label: '设备保养',
     prop: 'selfStopTime',
     width: '120px'
   },
   complexityTime: {
-    label: '复杂(H)',
+    label: '技术受限',
     prop: 'complexityTime',
     width: '120px'
   },
   relocationTime: {
-    label: '搬迁(H)',
+    label: '生产配合',
     prop: 'relocationTime',
     width: '120px'
   },
   rectificationTime: {
-    label: '整改(H)',
+    label: '生产组织',
     prop: 'rectificationTime',
     width: '120px'
   },
   waitingStopTime: {
-    label: '等停(H)',
+    label: '不可抗力',
     prop: 'waitingStopTime',
     width: '120px'
   },
   winterBreakTime: {
-    label: '冬休(H)',
+    label: '待命',
     prop: 'winterBreakTime',
     width: '120px'
+  },
+  partyaDesign: {
+    label: '甲方设计',
+    prop: 'partyaDesign',
+    width: '120px'
+  },
+  partyaPrepare: {
+    label: '甲方资源',
+    prop: 'partyaPrepare',
+    width: '120px'
+  },
+  partyaResource: {
+    label: '甲方准备',
+    prop: 'partyaResource',
+    width: '120px'
+  },
+  otherNptTime: {
+    label: '其它非生产时间',
+    prop: 'otherNptTime',
+    width: '120px'
+  },
+  otherNptReason: {
+    label: '其他非生产时间原因',
+    prop: 'otherNptReason',
+    width: '120px'
   }
 })
 
@@ -739,35 +799,38 @@ const calculateColumnWidths = useDebounceFn(() => {
   })
 }, 1000)
 
-// 检查10个时间字段之和是否为24H
-const checkTimeSumEquals24 = (row: any) => {
-  // 获取三个字段的值,转换为数字,如果为空则视为0
-  const drillingWorkingTime = parseFloat(row.drillingWorkingTime) || 0
-  const otherProductionTime = parseFloat(row.otherProductionTime) || 0
-  const accidentTime = parseFloat(row.accidentTime) || 0
-  const repairTime = parseFloat(row.repairTime) || 0
-  const selfStopTime = parseFloat(row.selfStopTime) || 0
-  const complexityTime = parseFloat(row.complexityTime) || 0
-  const relocationTime = parseFloat(row.relocationTime) || 0
-  const rectificationTime = parseFloat(row.rectificationTime) || 0
-  const waitingStopTime = parseFloat(row.waitingStopTime) || 0
-  const winterBreakTime = parseFloat(row.winterBreakTime) || 0
-
-  // 计算总和
-  const sum =
-    drillingWorkingTime +
-    otherProductionTime +
-    accidentTime +
-    repairTime +
-    selfStopTime +
-    complexityTime +
-    relocationTime +
-    rectificationTime +
-    waitingStopTime +
-    winterBreakTime
-
-  // 返回是否等于24(允许一定的浮点数误差)
-  return Math.abs(sum - 24) < 0.01 // 使用0.01作为误差范围
+const nptFields = [
+  'accidentTime', // 工程质量
+  'repairTime', // 设备故障
+  'selfStopTime', // 设备保养
+  'complexityTime', // 技术受限
+  'relocationTime', // 生产配合
+  'rectificationTime', // 生产组织
+  'waitingStopTime', // 不可抗力
+  'winterBreakTime', // 待命
+  'partyaDesign', // 甲方设计
+  'partyaPrepare', // 甲方资源
+  'partyaResource', // 甲方准备
+  'otherNptTime' // 其它非生产时间
+]
+
+function checkTimeSumEquals24(row) {
+  const gasTime = parseFloat(row.drillingWorkingTime + '') || 0
+  // 对应你代码中的 waterTime
+  const waterTime = parseFloat(row.otherProductionTime + '') || 0
+
+  // 3. 计算所有非生产时间之和
+  const nonProdTime = nptFields.reduce((sum, field) => {
+    const val = parseFloat(row[field])
+    // 如果值是数字则累加,如果是 NaN 或 null/undefined 则加 0
+    return sum + (isNaN(val) ? 0 : val)
+  }, 0)
+
+  // 4. 计算总和:纯钻进 + 其他生产 + 所有非生产时间
+  const totalSum = gasTime + waterTime + nonProdTime
+
+  // 5. 返回是否等于 24(允许 0.01 的浮点数误差)
+  return Math.abs(totalSum - 24) < 0.01
 }
 
 // 单元格样式函数
@@ -794,20 +857,8 @@ const cellStyle = ({
   }
 
   // 处理三个时间字段:当日注气时间、当日注水时间、非生产时间
-  const timeFields = [
-    'drillingWorkingTime',
-    'otherProductionTime',
-    'accidentTime',
-    'repairTime',
-    'selfStopTime',
-    'complexityTime',
-    'relocationTime',
-    'rectificationTime',
-    'waitingStopTime',
-    'winterBreakTime'
-  ]
+  const timeFields = ['drillingWorkingTime', 'otherProductionTime', ...nptFields]
   if (timeFields.includes(column.property)) {
-    // 检查10个时间字段之和是否不等于24
     if (!checkTimeSumEquals24(row)) {
       return {
         color: 'orange',

+ 111 - 20
src/views/pms/iotrydailyreport/xapproval.vue

@@ -34,7 +34,19 @@ interface List {
   transitTime: number
   ratedProductionTime: number
   productionTime: number
-  nonProductionTime: number
+  accidentTime: number
+  repairTime: number
+  selfStopTime: number
+  complexityTime: number
+  relocationTime: number
+  rectificationTime: number
+  waitingStopTime: number
+  winterBreakTime: number
+  partyaDesign: number
+  partyaPrepare: number
+  partyaResource: number
+  otherNptTime: number
+  otherNptReason: string
   ryNptReason: string
   productionStatus: string
   totalStaffNum: number
@@ -198,16 +210,74 @@ const columns = ref<Column[]>([
     'min-width': '120px'
   },
   {
-    label: '非生产时间(H)',
-    prop: 'nonProductionTime',
-    'min-width': '120px'
+    label: '非生产时间',
+    children: [
+      {
+        label: '工程质量',
+        prop: 'accidentTime',
+        'min-width': '120px'
+      },
+      {
+        label: '设备故障',
+        prop: 'repairTime',
+        'min-width': '120px'
+      },
+      {
+        label: '设备保养',
+        prop: 'selfStopTime',
+        'min-width': '120px'
+      },
+      {
+        label: '技术受限',
+        prop: 'complexityTime',
+        'min-width': '120px'
+      },
+      {
+        label: '生产配合',
+        prop: 'relocationTime',
+        'min-width': '120px'
+      },
+      {
+        label: '生产组织',
+        prop: 'rectificationTime',
+        'min-width': '120px'
+      },
+      {
+        label: '不可抗力',
+        prop: 'waitingStopTime',
+        'min-width': '120px'
+      },
+      {
+        label: '待命',
+        prop: 'winterBreakTime',
+        'min-width': '120px'
+      },
+      {
+        label: '甲方设计',
+        prop: 'partyaDesign',
+        'min-width': '120px'
+      },
+      {
+        label: '甲方准备',
+        prop: 'partyaPrepare',
+        'min-width': '120px'
+      },
+      {
+        label: '甲方资源',
+        prop: 'partyaResource',
+        'min-width': '120px'
+      },
+      {
+        label: '其它非生产时间',
+        prop: 'otherNptTime',
+        'min-width': '120px'
+      }
+    ]
   },
   {
-    label: '非生产时间原因',
-    prop: 'ryNptReason',
-    'min-width': '120px',
-    isTag: true,
-    dictType: DICT_TYPE.PMS_PROJECT_RY_NPT_REASON
+    label: '其他非生产时间原因',
+    prop: 'otherNptReason',
+    'min-width': '120px'
   },
   {
     label: '生产动态',
@@ -281,17 +351,38 @@ const calculateColumnWidths = (colums: Column[]) => {
   }
 }
 
-function checkTimeSumEquals24(row: List) {
-  // 获取三个字段的值,转换为数字,如果为空则视为0
-  const productionTime = row.productionTime || 0
-  const nonProductionTime = row.nonProductionTime || 0
-  const ratedProductionTime = row.ratedProductionTime || 0
+const nptFields = [
+  'accidentTime', // 工程质量
+  'repairTime', // 设备故障
+  'selfStopTime', // 设备保养
+  'complexityTime', // 技术受限
+  'relocationTime', // 生产配合
+  'rectificationTime', // 生产组织
+  'waitingStopTime', // 不可抗力
+  'winterBreakTime', // 待命
+  'partyaDesign', // 甲方设计
+  'partyaPrepare', // 甲方资源
+  'partyaResource', // 甲方准备
+  'otherNptTime' // 其它非生产时间
+]
 
-  // 计算总和
-  const sum = productionTime + nonProductionTime
-
-  // 返回是否等于24(允许一定的浮点数误差)
-  return Math.abs(sum - ratedProductionTime) < 0.01 // 使用0.01作为误差范围
+function checkTimeSumEquals24(row: List) {
+  const ratedProductionTime = parseFloat(row.ratedProductionTime + '') || 0
+  const productionTime = parseFloat(row.productionTime + '') || 0
+
+  // 3. 计算所有非生产时间细项的总和
+  const totalNonProductionTime = nptFields.reduce((sum, field) => {
+    // 获取字段值,转为浮点数,如果是 NaN 则视为 0
+    const val = parseFloat(row[field])
+    return sum + (isNaN(val) ? 0 : val)
+  }, 0)
+
+  // 4. 计算实际总投入时间:生产时间 + 所有非生产时间之和
+  const currentSum = productionTime + totalNonProductionTime
+
+  // 5. 校验逻辑:判断 (生产时间 + 非生产时间总和) 是否等于 额定生产时间
+  // 允许 0.01 的浮点数误差
+  return Math.abs(currentSum - ratedProductionTime) < 0.01
 }
 
 function cellStyle(data: {
@@ -322,7 +413,7 @@ function cellStyle(data: {
       }
   }
 
-  const timeFields = ['ratedProductionTime', 'productionTime', 'nonProductionTime']
+  const timeFields = ['ratedProductionTime', 'productionTime', ...nptFields]
   if (timeFields.includes(column.property)) {
     if (!checkTimeSumEquals24(row)) {
       return {

+ 118 - 20
src/views/pms/iotrydailyreport/xfill.vue

@@ -34,7 +34,19 @@ interface List {
   transitTime: number
   ratedProductionTime: number
   productionTime: number
-  nonProductionTime: number
+  accidentTime: number
+  repairTime: number
+  selfStopTime: number
+  complexityTime: number
+  relocationTime: number
+  rectificationTime: number
+  waitingStopTime: number
+  winterBreakTime: number
+  partyaDesign: number
+  partyaPrepare: number
+  partyaResource: number
+  otherNptTime: number
+  otherNptReason: string
   ryNptReason: string
   productionStatus: string
   totalStaffNum: number
@@ -198,17 +210,82 @@ const columns = ref<Column[]>([
     'min-width': '120px'
   },
   {
-    label: '非生产时间(H)',
-    prop: 'nonProductionTime',
-    'min-width': '120px'
+    label: '非生产时间',
+    children: [
+      {
+        label: '工程质量',
+        prop: 'accidentTime',
+        'min-width': '120px'
+      },
+      {
+        label: '设备故障',
+        prop: 'repairTime',
+        'min-width': '120px'
+      },
+      {
+        label: '设备保养',
+        prop: 'selfStopTime',
+        'min-width': '120px'
+      },
+      {
+        label: '技术受限',
+        prop: 'complexityTime',
+        'min-width': '120px'
+      },
+      {
+        label: '生产配合',
+        prop: 'relocationTime',
+        'min-width': '120px'
+      },
+      {
+        label: '生产组织',
+        prop: 'rectificationTime',
+        'min-width': '120px'
+      },
+      {
+        label: '不可抗力',
+        prop: 'waitingStopTime',
+        'min-width': '120px'
+      },
+      {
+        label: '待命',
+        prop: 'winterBreakTime',
+        'min-width': '120px'
+      },
+      {
+        label: '甲方设计',
+        prop: 'partyaDesign',
+        'min-width': '120px'
+      },
+      {
+        label: '甲方准备',
+        prop: 'partyaPrepare',
+        'min-width': '120px'
+      },
+      {
+        label: '甲方资源',
+        prop: 'partyaResource',
+        'min-width': '120px'
+      },
+      {
+        label: '其它非生产时间',
+        prop: 'otherNptTime',
+        'min-width': '120px'
+      }
+    ]
   },
   {
-    label: '非生产时间原因',
-    prop: 'ryNptReason',
-    'min-width': '120px',
-    isTag: true,
-    dictType: DICT_TYPE.PMS_PROJECT_RY_NPT_REASON
+    label: '其他非生产时间原因',
+    prop: 'otherNptReason',
+    'min-width': '120px'
   },
+  // {
+  //   label: '非生产时间原因',
+  //   prop: 'ryNptReason',
+  //   'min-width': '120px',
+  //   isTag: true,
+  //   dictType: DICT_TYPE.PMS_PROJECT_RY_NPT_REASON
+  // },
   {
     label: '生产动态',
     prop: 'productionStatus',
@@ -281,17 +358,38 @@ const calculateColumnWidths = (colums: Column[]) => {
   }
 }
 
-function checkTimeSumEquals24(row: List) {
-  // 获取三个字段的值,转换为数字,如果为空则视为0
-  const productionTime = row.productionTime || 0
-  const nonProductionTime = row.nonProductionTime || 0
-  const ratedProductionTime = row.ratedProductionTime || 0
-
-  // 计算总和
-  const sum = productionTime + nonProductionTime
+const nptFields = [
+  'accidentTime', // 工程质量
+  'repairTime', // 设备故障
+  'selfStopTime', // 设备保养
+  'complexityTime', // 技术受限
+  'relocationTime', // 生产配合
+  'rectificationTime', // 生产组织
+  'waitingStopTime', // 不可抗力
+  'winterBreakTime', // 待命
+  'partyaDesign', // 甲方设计
+  'partyaPrepare', // 甲方资源
+  'partyaResource', // 甲方准备
+  'otherNptTime' // 其它非生产时间
+]
 
-  // 返回是否等于24(允许一定的浮点数误差)
-  return Math.abs(sum - ratedProductionTime) < 0.01 // 使用0.01作为误差范围
+function checkTimeSumEquals24(row: List) {
+  const ratedProductionTime = parseFloat(row.ratedProductionTime + '') || 0
+  const productionTime = parseFloat(row.productionTime + '') || 0
+
+  // 3. 计算所有非生产时间细项的总和
+  const totalNonProductionTime = nptFields.reduce((sum, field) => {
+    // 获取字段值,转为浮点数,如果是 NaN 则视为 0
+    const val = parseFloat(row[field])
+    return sum + (isNaN(val) ? 0 : val)
+  }, 0)
+
+  // 4. 计算实际总投入时间:生产时间 + 所有非生产时间之和
+  const currentSum = productionTime + totalNonProductionTime
+
+  // 5. 校验逻辑:判断 (生产时间 + 非生产时间总和) 是否等于 额定生产时间
+  // 允许 0.01 的浮点数误差
+  return Math.abs(currentSum - ratedProductionTime) < 0.01
 }
 
 function cellStyle(data: {
@@ -322,7 +420,7 @@ function cellStyle(data: {
       }
   }
 
-  const timeFields = ['ratedProductionTime', 'productionTime', 'nonProductionTime']
+  const timeFields = ['ratedProductionTime', 'productionTime', ...nptFields]
   if (timeFields.includes(column.property)) {
     if (!checkTimeSumEquals24(row)) {
       return {

+ 198 - 31
src/views/pms/iotrydailyreport/xjindex.vue

@@ -290,14 +290,100 @@
               :min-width="columnWidths.productionTime.width"
               resizable
             />
+            <el-table-column label="非生产时间" align="center">
+              <el-table-column
+                label="工程质量"
+                align="center"
+                prop="accidentTime"
+                :min-width="columnWidths.accidentTime.width"
+                resizable
+              />
+              <el-table-column
+                label="设备故障"
+                align="center"
+                prop="repairTime"
+                :min-width="columnWidths.repairTime.width"
+                resizable
+              />
+              <el-table-column
+                label="设备保养"
+                align="center"
+                prop="selfStopTime"
+                :min-width="columnWidths.selfStopTime.width"
+                resizable
+              />
+              <el-table-column
+                label="技术受限"
+                align="center"
+                prop="complexityTime"
+                :min-width="columnWidths.complexityTime.width"
+                resizable
+              />
+              <el-table-column
+                label="生产配合"
+                align="center"
+                prop="relocationTime"
+                :min-width="columnWidths.relocationTime.width"
+                resizable
+              />
+              <el-table-column
+                label="生产组织"
+                align="center"
+                prop="rectificationTime"
+                :min-width="columnWidths.rectificationTime.width"
+                resizable
+              />
+              <el-table-column
+                label="不可抗力"
+                align="center"
+                prop="waitingStopTime"
+                :min-width="columnWidths.waitingStopTime.width"
+                resizable
+              />
+              <el-table-column
+                label="待命"
+                align="center"
+                prop="winterBreakTime"
+                :min-width="columnWidths.winterBreakTime.width"
+                resizable
+              />
+              <el-table-column
+                label="甲方设计"
+                align="center"
+                prop="partyaDesign"
+                :min-width="columnWidths.partyaDesign.width"
+                resizable
+              />
+              <el-table-column
+                label="甲方准备"
+                align="center"
+                prop="partyaPrepare"
+                :min-width="columnWidths.partyaPrepare.width"
+                resizable
+              />
+              <el-table-column
+                label="甲方资源"
+                align="center"
+                prop="partyaResource"
+                :min-width="columnWidths.partyaResource.width"
+                resizable
+              />
+              <el-table-column
+                label="其它非生产时间"
+                align="center"
+                prop="otherNptTime"
+                :min-width="columnWidths.otherNptTime.width"
+                resizable
+              />
+            </el-table-column>
             <el-table-column
-              label="非生产时间(H)"
+              label="其他非生产时间原因"
               align="center"
-              prop="nonProductionTime"
-              :min-width="columnWidths.nonProductionTime.width"
+              prop="otherNptReason"
+              :min-width="columnWidths.otherNptReason.width"
               resizable
             />
-            <el-table-column
+            <!-- <el-table-column
               :label="t('project.nptReason')"
               align="center"
               prop="ryNptReason"
@@ -310,7 +396,7 @@
                   :value="scope.row.ryNptReason"
                 />
               </template>
-            </el-table-column>
+            </el-table-column> -->
             <el-table-column
               label="生产动态"
               align="center"
@@ -598,9 +684,69 @@ const columnWidths = ref<
     prop: 'productionTime',
     width: '120px'
   },
-  nonProductionTime: {
-    label: '非生产时间(H)',
-    prop: 'nonProductionTime',
+  accidentTime: {
+    label: '工程质量',
+    prop: 'accidentTime',
+    width: '120px'
+  },
+  repairTime: {
+    label: '设备故障',
+    prop: 'repairTime',
+    width: '120px'
+  },
+  selfStopTime: {
+    label: '设备保养',
+    prop: 'selfStopTime',
+    width: '120px'
+  },
+  complexityTime: {
+    label: '技术受限',
+    prop: 'complexityTime',
+    width: '120px'
+  },
+  relocationTime: {
+    label: '生产配合',
+    prop: 'relocationTime',
+    width: '120px'
+  },
+  rectificationTime: {
+    label: '生产组织',
+    prop: 'rectificationTime',
+    width: '120px'
+  },
+  waitingStopTime: {
+    label: '不可抗力',
+    prop: 'waitingStopTime',
+    width: '120px'
+  },
+  winterBreakTime: {
+    label: '待命',
+    prop: 'winterBreakTime',
+    width: '120px'
+  },
+  partyaDesign: {
+    label: '甲方设计',
+    prop: 'partyaDesign',
+    width: '120px'
+  },
+  partyaPrepare: {
+    label: '甲方资源',
+    prop: 'partyaPrepare',
+    width: '120px'
+  },
+  partyaResource: {
+    label: '甲方准备',
+    prop: 'partyaResource',
+    width: '120px'
+  },
+  otherNptTime: {
+    label: '其它非生产时间',
+    prop: 'otherNptTime',
+    width: '120px'
+  },
+  otherNptReason: {
+    label: '其他非生产时间原因',
+    prop: 'otherNptReason',
     width: '120px'
   },
   ryNptReason: {
@@ -738,38 +884,59 @@ const cellStyle = ({
     }
   }
 
-  // 1. 检查三个时间字段:额定生产时间、生产时间、非生产时间
-  const timeFields = ['ratedProductionTime', 'productionTime', 'nonProductionTime']
+  const nptFields = [
+    'accidentTime', // 工程质量
+    'repairTime', // 设备故障
+    'selfStopTime', // 设备保养
+    'complexityTime', // 技术受限
+    'relocationTime', // 生产配合
+    'rectificationTime', // 生产组织
+    'waitingStopTime', // 不可抗力
+    'winterBreakTime', // 待命
+    'partyaDesign', // 甲方设计
+    'partyaPrepare', // 甲方资源
+    'partyaResource', // 甲方准备
+    'otherNptTime' // 其它非生产时间
+  ]
+
+  // 定义所有涉及校验的列(额定、生产 + 所有非生产细分字段)
+  const timeFields = ['ratedProductionTime', 'productionTime', ...nptFields]
+
   if (timeFields.includes(column.property)) {
-    const ratedTime = parseFloat(row.ratedProductionTime) || 0
-    const prodTime = parseFloat(row.productionTime) || 0
-    const nonProdTime = parseFloat(row.nonProductionTime) || 0
-
-    // 新增:检查三个字段是否有空值
-    const hasEmptyField =
-      row.ratedProductionTime === null ||
-      row.ratedProductionTime === undefined ||
-      row.ratedProductionTime === '' ||
-      row.productionTime === null ||
-      row.productionTime === undefined ||
-      row.productionTime === '' ||
-      row.nonProductionTime === null ||
-      row.nonProductionTime === undefined ||
-      row.nonProductionTime === ''
-
-    // 如果有空字段,应用警告样式
+    // 辅助函数:判断值是否为空
+    const isEmpty = (val) => val === null || val === undefined || val === ''
+
+    // 1. 检查是否有空值
+    // 先检查额定时间和生产时间
+    let hasEmptyField = isEmpty(row.ratedProductionTime) || isEmpty(row.productionTime)
+
+    // 如果主要字段不为空,继续检查所有非生产时间细分字段
+    if (!hasEmptyField) {
+      hasEmptyField = nptFields.some((field) => isEmpty(row[field]))
+    }
+
+    // 如果有空字段,应用警告样式(红色)
     if (hasEmptyField) {
       return {
-        backgroundColor: '#fff2f0', // 浅红色背景,表示数据不完整
+        backgroundColor: '#fff2f0', // 浅红色背景
         color: '#d46b08', // 深红色文字
         fontWeight: 'bold',
-        border: '1px solid #ffa39e' // 可选:添加边框突出显示
+        border: '1px solid #ffa39e'
       }
     }
 
-    // 如果三个字段都有值,且不满足公式:额定生产时间 = 生产时间 + 非生产时间
+    // 2. 获取数值进行计算
+    const ratedTime = parseFloat(row.ratedProductionTime) || 0
+    const prodTime = parseFloat(row.productionTime) || 0
+
+    // 计算所有非生产时间细分字段的总和
+    const totalNonProdTime = nptFields.reduce((sum, field) => {
+      return sum + (parseFloat(row[field]) || 0)
+    }, 0)
+
+    // 3. 校验逻辑:额定生产时间 = 生产时间 + 所有非生产时间细项之和
     // 使用容差比较,避免浮点数精度问题
-    if (Math.abs(ratedTime - (prodTime + nonProdTime)) > 0.01) {
+    if (Math.abs(ratedTime - (prodTime + totalNonProdTime)) > 0.01) {
       return {
         backgroundColor: '#fffbe6', // 浅黄色背景
         color: '#d46b08', // 橙色文字