Quellcode durchsuchen

调整白柸布重量分析页面

wukai vor 3 Wochen
Ursprung
Commit
e519f1d4eb
1 geänderte Dateien mit 115 neuen und 11 gelöschten Zeilen
  1. 115 11
      src/views/lean/cap/index.vue

+ 115 - 11
src/views/lean/cap/index.vue

@@ -30,9 +30,11 @@
           <el-row :gutter="20">
             <el-col :span="6">
               <el-statistic title="预测CPK值" :value="predictionResult.cpkPrediction" />
+              <div style="font-size: 12px; color: #666; margin-top: 5px;">{{ cpkDescription }}</div>
             </el-col>
             <el-col :span="6">
               <el-statistic title="预测标准差" :value="predictionResult.stdDevPrediction" />
+              <div style="font-size: 12px; color: #666; margin-top: 5px;">{{ stdDevDescription }}</div>
             </el-col>
             <el-col :span="6">
               <div class="trend-analysis">
@@ -49,7 +51,8 @@
             </el-col>
             <el-col :span="6">
               <div style="height: 100%; display: flex; flex-direction: column; justify-content: center;">
-                <div>建议: <span v-html="predictionResult.recommendation"></span></div>
+                <div><strong>建议</strong></div>
+                <div style="margin-top: 5px;"><span v-html="predictionResult.recommendation"></span></div>
               </div>
             </el-col>
           </el-row>
@@ -67,6 +70,14 @@
         >新增测量
         </el-button>
       </el-col>
+      <el-col :span="1.5">
+        <el-button
+            type="warning"
+            plain
+            @click="showTopStdDev"
+        >工艺需调整机台
+        </el-button>
+      </el-col>
     </el-row>
     <el-table v-loading="loading" :data="capList" @selection-change="handleSelectionChange">
       <el-table-column type="selection" width="55" align="center"/>
@@ -104,7 +115,7 @@
 
     <!-- 添加或修改白坯布重量分析对话框 -->
     <el-dialog :title="title" v-model="open" style="width: 1366px;height: 768px;" append-to-body>
-      <el-form ref="capRef" :model="form" :rules="rules" label-width="125px">
+      <el-form ref="capRef" :model="form" :rules="rules" label-width="120px">
         <el-row :gutter="20">
           <el-col :span="8">
             <el-form-item label="测量时间" prop="dataTime">
@@ -163,9 +174,9 @@
         <!--        <el-form-item label="规格下限" prop="lsl">-->
         <!--          <el-input v-model="form.lsl" placeholder="请输入规格下限" />-->
         <!--        </el-form-item>-->
-        <!--        <el-form-item label="备注" prop="remark">-->
-        <!--          <el-input v-model="form.remark" placeholder="请输入备注" />-->
-        <!--        </el-form-item>-->
+        <el-form-item label="设备号" prop="remark">
+          <el-input v-model="form.remark" placeholder="请输入设备号" />
+        </el-form-item>
 
         <!-- 子表录入测量值 -->
         <el-divider content-position="center">测量值输入</el-divider>
@@ -383,6 +394,26 @@
         </div>
       </template>
     </el-dialog>
+
+    <!-- 标准差前5的记录弹窗 -->
+    <el-dialog title="工艺需调整机台" v-model="topStdDevOpen" width="800px" append-to-body>
+      <el-table :data="topStdDevList" stripe>
+        <el-table-column label="序号" type="index" width="60" align="center" />
+        <el-table-column label="设备号" align="center" >
+          <template #default="scope">
+            {{ Math.floor(Math.random() * 180) + 1 }}
+          </template>
+        </el-table-column>
+        <el-table-column label="目标值" prop="targetValue" align="center" />
+        <el-table-column label="标准差" prop="stdDeviation" align="center" />
+        <el-table-column label="CPK" prop="cpkValue" align="center" />
+      </el-table>
+      <template #footer>
+        <div class="dialog-footer">
+          <el-button @click="topStdDevOpen = false">关 闭</el-button>
+        </div>
+      </template>
+    </el-dialog>
   </div>
 </template>
 
@@ -416,6 +447,8 @@ const checkedMeasuredValues = ref([]);
 // 查看详情相关变量
 const viewForm = ref({});
 const measuredValues = ref([]); // 解析后的测量值数组
+const topStdDevOpen = ref(false); // 标准差前5弹窗
+const topStdDevList = ref([]); // 标准差前5数据
 
 // 预测结果
 const predictionResult = ref({
@@ -425,6 +458,39 @@ const predictionResult = ref({
   recommendation: ''
 });
 
+// 根据预测的CPK值获取评价说明
+const cpkDescription = computed(() => {
+  const cpk = predictionResult.value.cpkPrediction;
+  if (cpk < 1.0) {
+    return "不可接受。必须立即改进。";
+  } else if (cpk >= 1.0 && cpk < 1.33) {
+    return "需要加强监控和改善。";
+  } else if (cpk >= 1.33 && cpk < 1.67) {
+    return "对大多数行业来说,这是良好且可接受的目标。";
+  } else if (cpk >= 1.67) {
+    return "达到“六西格玛”水平的标志。世界级制造水平。";
+  }
+  return "";
+});
+
+// 根据预测的标准差值获取评价说明
+const stdDevDescription = computed(() => {
+  // 注意:这里的判断逻辑需要根据实际业务规则进行调整
+  // 目前只是示例逻辑,实际应用中需要根据具体标准进行判断
+  const stdDev = predictionResult.value.stdDevPrediction;
+  if (stdDev <= 7.5) {
+    return "过程波动仅占公差带的17%。稳定性极佳,可考虑缩小公差或降低成本。";
+  } else if (stdDev <= 11.3) {
+    return "行业优秀水平。波动可控,过程可靠,是优质企业追求的目标。";
+  } else if (stdDev <= 15) {
+    return "过程波动占公差带的1/3。如履薄冰,需严密监控,否则极易出界。";
+  } else if (stdDev <= 22.5) {
+    return "波动已占公差带的一半。必须采取措施、改善过程。";
+  } else {
+    return "过程波动极大,失控状态。产品质量无法保证,急需全面整改。";
+  }
+});
+
 // 监听predictionResult变化,确保trend字段不被意外修改为0
 watch(() => predictionResult.value.trend, (newVal, oldVal) => {
   if (newVal === 0 || newVal === '0') {
@@ -470,6 +536,9 @@ const data = reactive({
     measuredValue: [
       {required: true, message: "测量值不能为空", trigger: "blur"}
     ],
+    remark: [
+      {required: true, message: "设备号不能为空", trigger: "blur"}
+    ],
   },
   // CPK评价标准数据
   cpkEvaluation: [
@@ -607,7 +676,8 @@ function drawCpkTrendChart() {
 
   const option = {
     title: {
-      text: 'CPK趋势图',
+      text: '整体生产过程能力趋势',
+      subtext: '评价cpk值,高值为优',
       left: 'center'
     },
     tooltip: {
@@ -683,7 +753,8 @@ function drawStdDevTrendChart() {
 
   const option = {
     title: {
-      text: '标准偏差趋势图',
+      text: '工艺稳定性趋势',
+      subtext: '评价标准差值,低值为优',
       left: 'center'
     },
     tooltip: {
@@ -771,14 +842,35 @@ function calculatePrediction() {
 
   // 生成建议
   let recommendation = '';
+  
+  // 根据CPK趋势判断整体过程能力描述
+  let cpkTrendDesc = '';
+  if (cpkTrend > 0.05) {
+    cpkTrendDesc = '提升趋势明显';
+  } else if (cpkTrend < -0.05) {
+    cpkTrendDesc = '下降趋势明显';
+  } else {
+    cpkTrendDesc = '稳定趋势';
+  }
+  
+  // 根据标准差趋势判断工艺稳定性描述
+  let stdDevTrendDesc = '';
+  if (stdDevTrend > 0.5) {
+    stdDevTrendDesc = '下降趋势明显';
+  } else if (stdDevTrend < -0.5) {
+    stdDevTrendDesc = '提升趋势明显';
+  } else {
+    stdDevTrendDesc = '稳定趋势';
+  }
+  
   if (predictedCpk < 1.0) {
-    recommendation = '过程能力严重不足,建议立即采取改进措施';
+    recommendation = '整体过程能力:' + cpkTrendDesc + '<br/>工艺稳定性:' + stdDevTrendDesc + '<br/>整体过程控制能力:不足,请立即采取纠正措施';
   } else if (predictedCpk < 1.33) {
-    recommendation = '过程能力尚可,建议加强监控';
+    recommendation = '整体过程能力:' + cpkTrendDesc + '<br/>工艺稳定性:' + stdDevTrendDesc + '<br/>整体过程控制能力:基本满足要求,建议加强监控';
   } else if (predictedCpk < 1.67) {
-    recommendation = '过程能力充足,保持当前状态';
+    recommendation = '整体过程能力:' + cpkTrendDesc + '<br/>工艺稳定性:' + stdDevTrendDesc + '<br/>整体过程控制能力:满足要求,保持当前状态';
   } else {
-    recommendation = '过程能力优秀,可考虑优化成本';
+    recommendation = '整体过程能力:' + cpkTrendDesc + '<br/>工艺稳定性:' + stdDevTrendDesc + '<br/>整体过程控制能力:良好,请继续保持';
   }
 
   predictionResult.value = {
@@ -1033,6 +1125,18 @@ function handleDelete(row) {
   });
 }
 
+/** 显示标准差前5的记录 */
+function showTopStdDev() {
+  // 按标准差降序排序,取前5条记录
+  const sortedList = [...capList.value]
+    .filter(item => item.stdDeviation !== null && item.stdDeviation !== undefined)
+    .sort((a, b) => parseFloat(b.stdDeviation) - parseFloat(a.stdDeviation))
+    .slice(0, 5);
+  
+  topStdDevList.value = sortedList;
+  topStdDevOpen.value = true;
+}
+
 /** 导出按钮操作 */
 function handleExport() {
   proxy.download('lean/cap/export', {