Browse Source

Merge remote-tracking branch 'origin/master'

jxq 3 weeks ago
parent
commit
a7989c385b

+ 17 - 10
src/views/analysis/process/CList.vue

@@ -121,11 +121,12 @@ import {
   deleteQualityFile,
   updateData,
   getTaskCode,
-  CCompute2,
+  CCompute2, deleteData,
 } from "@/api/analysis";
 import Search from "@/components/Search/index.vue";
 import { uploadFileApi } from "@/api/file";
 import { useCrud } from "@/hooks/userCrud";
+import {ElMessage, ElMessageBox} from "element-plus";
 
 const { Utils } = useCrud({
   src: "/api/v1/spc/pDownloadTemplate",
@@ -191,7 +192,7 @@ const searchForm = [
   },
   {
     label: "文件名称",
-    prop: "model",
+    prop: "fileName",
     type: "input",
   },
 ];
@@ -850,13 +851,19 @@ const addSubmit = async () => {
   });
 };
 const deleteSubmit = async (id) => {
-  const { data, code } = await deleteQualityFile({
-    id,
+  ElMessageBox.confirm("是否删除所选中数据?", "提示", {
+    confirmButtonText: "确定",
+    cancelButtonText: "取消",
+    type: "warning",
+  }).then(async () => {
+    const { data, code } = await deleteQualityFile({
+      id,
+    });
+    if (code == "200") {
+      ElMessage.success("删除成功!");
+      getTableData();
+    }
   });
-  if (code == "200") {
-    ElMessage.success("删除成功!");
-    getTableData();
-  }
 };
 const emit = defineEmits(["tableData"]);
 const compute = async (filePath) => {
@@ -914,11 +921,11 @@ const beforeUpload = (file) => {
 const uploadRef = ref("uploadRef");
 const handleSuccess = (response) => {
   if (response.code === "200") {
-    ElMessage.success("Excel导入成功!");
+    ElMessage.success("文件上传成功!");
     uploadRef.value.clearFiles();
     getTableData();
   } else {
-    ElMessage.error("Excel导入失败!");
+    ElMessage.error("文件上传失败!");
   }
 };
 onMounted(async () => {

+ 17 - 10
src/views/analysis/process/EWMAList.vue

@@ -121,11 +121,12 @@ import {
   deleteQualityFile,
   updateData,
   getTaskCode,
-  EWMACompute2,
+  EWMACompute2, deleteData,
 } from "@/api/analysis";
 import Search from "@/components/Search/index.vue";
 import { uploadFileApi } from "@/api/file";
 import { useCrud } from "@/hooks/userCrud";
+import {ElMessage, ElMessageBox} from "element-plus";
 
 const { Utils } = useCrud({
   src: "/api/v1/spc/pDownloadTemplate",
@@ -191,7 +192,7 @@ const searchForm = [
   },
   {
     label: "文件名称",
-    prop: "model",
+    prop: "fileName",
     type: "input",
   },
 ];
@@ -850,13 +851,19 @@ const addSubmit = async () => {
   });
 };
 const deleteSubmit = async (id) => {
-  const { data, code } = await deleteQualityFile({
-    id,
+  ElMessageBox.confirm("是否删除所选中数据?", "提示", {
+    confirmButtonText: "确定",
+    cancelButtonText: "取消",
+    type: "warning",
+  }).then(async () => {
+    const { data, code } = await deleteQualityFile({
+      id,
+    });
+    if (code == "200") {
+      ElMessage.success("删除成功!");
+      getTableData();
+    }
   });
-  if (code == "200") {
-    ElMessage.success("删除成功!");
-    getTableData();
-  }
 };
 const emit = defineEmits(["tableData"]);
 const compute = async (filePath) => {
@@ -914,11 +921,11 @@ const beforeUpload = (file) => {
 const uploadRef = ref("uploadRef");
 const handleSuccess = (response) => {
   if (response.code === "200") {
-    ElMessage.success("Excel导入成功!");
+    ElMessage.success("文件上传成功!");
     uploadRef.value.clearFiles();
     getTableData();
   } else {
-    ElMessage.error("Excel导入失败!");
+    ElMessage.error("文件上传失败!");
   }
 };
 onMounted(async () => {

+ 17 - 10
src/views/analysis/process/I-MRList.vue

@@ -121,11 +121,12 @@ import {
   deleteQualityFile,
   updateData,
   getTaskCode,
-  IMRCompute2,
+  IMRCompute2, deleteData,
 } from "@/api/analysis";
 import Search from "@/components/Search/index.vue";
 import { uploadFileApi } from "@/api/file";
 import { useCrud } from "@/hooks/userCrud";
+import {ElMessage, ElMessageBox} from "element-plus";
 
 const { Utils } = useCrud({
   src: "/api/v1/spc/pDownloadTemplate",
@@ -191,7 +192,7 @@ const searchForm = [
   },
   {
     label: "文件名称",
-    prop: "model",
+    prop: "fileName",
     type: "input",
   },
 ];
@@ -850,13 +851,19 @@ const addSubmit = async () => {
   });
 };
 const deleteSubmit = async (id) => {
-  const { data, code } = await deleteQualityFile({
-    id,
+  ElMessageBox.confirm("是否删除所选中数据?", "提示", {
+    confirmButtonText: "确定",
+    cancelButtonText: "取消",
+    type: "warning",
+  }).then(async () => {
+    const { data, code } = await deleteQualityFile({
+      id,
+    });
+    if (code == "200") {
+      ElMessage.success("删除成功!");
+      getTableData();
+    }
   });
-  if (code == "200") {
-    ElMessage.success("删除成功!");
-    getTableData();
-  }
 };
 const emit = defineEmits(["tableData"]);
 const compute = async (filePath) => {
@@ -914,11 +921,11 @@ const beforeUpload = (file) => {
 const uploadRef = ref("uploadRef");
 const handleSuccess = (response) => {
   if (response.code === "200") {
-    ElMessage.success("Excel导入成功!");
+    ElMessage.success("文件上传成功!");
     uploadRef.value.clearFiles();
     getTableData();
   } else {
-    ElMessage.error("Excel导入失败!");
+    ElMessage.error("文件上传失败!");
   }
 };
 onMounted(async () => {

+ 17 - 10
src/views/analysis/process/NPList.vue

@@ -121,11 +121,12 @@ import {
   deleteQualityFile,
   updateData,
   getTaskCode,
-  NPCompute2,
+  NPCompute2, deleteData,
 } from "@/api/analysis";
 import Search from "@/components/Search/index.vue";
 import { uploadFileApi } from "@/api/file";
 import { useCrud } from "@/hooks/userCrud";
+import {ElMessage, ElMessageBox} from "element-plus";
 
 const { Utils } = useCrud({
   src: "/api/v1/spc/pDownloadTemplate",
@@ -191,7 +192,7 @@ const searchForm = [
   },
   {
     label: "文件名称",
-    prop: "model",
+    prop: "fileName",
     type: "input",
   },
 ];
@@ -850,13 +851,19 @@ const addSubmit = async () => {
   });
 };
 const deleteSubmit = async (id) => {
-  const { data, code } = await deleteQualityFile({
-    id,
+  ElMessageBox.confirm("是否删除所选中数据?", "提示", {
+    confirmButtonText: "确定",
+    cancelButtonText: "取消",
+    type: "warning",
+  }).then(async () => {
+    const { data, code } = await deleteQualityFile({
+      id,
+    });
+    if (code == "200") {
+      ElMessage.success("删除成功!");
+      getTableData();
+    }
   });
-  if (code == "200") {
-    ElMessage.success("删除成功!");
-    getTableData();
-  }
 };
 const emit = defineEmits(["tableData"]);
 const compute = async (filePath) => {
@@ -914,11 +921,11 @@ const beforeUpload = (file) => {
 const uploadRef = ref("uploadRef");
 const handleSuccess = (response) => {
   if (response.code === "200") {
-    ElMessage.success("Excel导入成功!");
+    ElMessage.success("文件上传成功!");
     uploadRef.value.clearFiles();
     getTableData();
   } else {
-    ElMessage.error("Excel导入失败!");
+    ElMessage.error("文件上传失败!");
   }
 };
 onMounted(async () => {

+ 17 - 10
src/views/analysis/process/PList.vue

@@ -121,11 +121,12 @@ import {
   deleteQualityFile,
   updateData,
   getTaskCode,
-  PCompute2,
+  PCompute2, deleteData,
 } from "@/api/analysis";
 import Search from "@/components/Search/index.vue";
 import { uploadFileApi } from "@/api/file";
 import { useCrud } from "@/hooks/userCrud";
+import {ElMessage, ElMessageBox} from "element-plus";
 
 const { Utils } = useCrud({
   src: "/api/v1/spc/pDownloadTemplate",
@@ -191,7 +192,7 @@ const searchForm = [
   },
   {
     label: "文件名称",
-    prop: "model",
+    prop: "fileName",
     type: "input",
   },
 ];
@@ -850,13 +851,19 @@ const addSubmit = async () => {
   });
 };
 const deleteSubmit = async (id) => {
-  const { data, code } = await deleteQualityFile({
-    id,
+  ElMessageBox.confirm("是否删除所选中数据?", "提示", {
+    confirmButtonText: "确定",
+    cancelButtonText: "取消",
+    type: "warning",
+  }).then(async () => {
+    const { data, code } = await deleteQualityFile({
+      id,
+    });
+    if (code == "200") {
+      ElMessage.success("删除成功!");
+      getTableData();
+    }
   });
-  if (code == "200") {
-    ElMessage.success("删除成功!");
-    getTableData();
-  }
 };
 const emit = defineEmits(["tableData"]);
 const compute = async (filePath) => {
@@ -914,11 +921,11 @@ const beforeUpload = (file) => {
 const uploadRef = ref("uploadRef");
 const handleSuccess = (response) => {
   if (response.code === "200") {
-    ElMessage.success("Excel导入成功!");
+    ElMessage.success("文件上传成功!");
     uploadRef.value.clearFiles();
     getTableData();
   } else {
-    ElMessage.error("Excel导入失败!");
+    ElMessage.error("文件上传失败!");
   }
 };
 onMounted(async () => {

+ 17 - 10
src/views/analysis/process/UList.vue

@@ -121,11 +121,12 @@ import {
   deleteQualityFile,
   updateData,
   getTaskCode,
-  UCompute2,
+  UCompute2, deleteData,
 } from "@/api/analysis";
 import Search from "@/components/Search/index.vue";
 import { uploadFileApi } from "@/api/file";
 import { useCrud } from "@/hooks/userCrud";
+import {ElMessage, ElMessageBox} from "element-plus";
 
 const { Utils } = useCrud({
   src: "/api/v1/spc/pDownloadTemplate",
@@ -191,7 +192,7 @@ const searchForm = [
   },
   {
     label: "文件名称",
-    prop: "model",
+    prop: "fileName",
     type: "input",
   },
 ];
@@ -850,13 +851,19 @@ const addSubmit = async () => {
   });
 };
 const deleteSubmit = async (id) => {
-  const { data, code } = await deleteQualityFile({
-    id,
+  ElMessageBox.confirm("是否删除所选中数据?", "提示", {
+    confirmButtonText: "确定",
+    cancelButtonText: "取消",
+    type: "warning",
+  }).then(async () => {
+    const { data, code } = await deleteQualityFile({
+      id,
+    });
+    if (code == "200") {
+      ElMessage.success("删除成功!");
+      getTableData();
+    }
   });
-  if (code == "200") {
-    ElMessage.success("删除成功!");
-    getTableData();
-  }
 };
 const emit = defineEmits(["tableData"]);
 const compute = async (filePath) => {
@@ -914,11 +921,11 @@ const beforeUpload = (file) => {
 const uploadRef = ref("uploadRef");
 const handleSuccess = (response) => {
   if (response.code === "200") {
-    ElMessage.success("Excel导入成功!");
+    ElMessage.success("文件上传成功!");
     uploadRef.value.clearFiles();
     getTableData();
   } else {
-    ElMessage.error("Excel导入失败!");
+    ElMessage.error("文件上传失败!");
   }
 };
 onMounted(async () => {

+ 26 - 9
src/views/analysis/process/Xbar-RList.vue

@@ -107,6 +107,11 @@
                   ><span>{{ row.model }}</span>
                 </template>
               </el-table-column>
+              <el-table-column align="center" prop="code" label="产品编号">
+                <template #default="{ row }"
+                  ><span>{{ row.code }}</span>
+                </template>
+              </el-table-column>
               <el-table-column align="center" prop="batchNo" label="生产批号">
                 <template #default="{ row }"
                   ><span>{{ row.batchNo }}</span>
@@ -281,6 +286,9 @@
               <el-form-item label="产品型号" prop="model">
                 <el-input :disabled="true" v-model="addData.model" />
               </el-form-item>
+              <el-form-item label="产品编号" prop="code">
+                <el-input :disabled="true" v-model="addData.code" />
+              </el-form-item>
               <el-form-item label="数据来源" prop="source">
                 <el-input :disabled="true" v-model="addData.source" />
               </el-form-item>
@@ -348,6 +356,7 @@ import {
 import Search from "@/components/Search/index.vue";
 import { XBarRCompute, collectData } from "@/api/analysis";
 import { useCrud } from "@/hooks/userCrud";
+import {ElMessage, ElMessageBox} from "element-plus";
 
 const { Utils } = useCrud({
   src: "/api/v1/spc/pDownloadTemplate",
@@ -606,6 +615,7 @@ const taskChange = (value) => {
   taskOption.value.forEach((item) => {
     if (item.id == value) {
       addData.value.model = item.prodtModel;
+      addData.value.code = item.prodtCode;
       addData.value.source = item.source;
       if (item.source === "手动") {
         accuracysSum.value = Number(item.processCount);
@@ -628,7 +638,8 @@ const opOptions = ref([...dicts.spc_operation]);
 //修改
 const updataItem = (row) => {
   editStatus.value = true;
-  addData.value = row;
+  const data = JSON.parse(JSON.stringify(row));
+  addData.value = data;
   addStatus.value = true;
   emit("update:addStatus", addStatus.value);
   emit("update:editStatus", editStatus.value);
@@ -672,13 +683,19 @@ const addSubmit = async () => {
   });
 };
 const deleteSubmit = async (id) => {
-  const { data, code } = await deleteData({
-    id,
+  ElMessageBox.confirm("是否删除所选中数据?", "提示", {
+    confirmButtonText: "确定",
+    cancelButtonText: "取消",
+    type: "warning",
+  }).then(async () => {
+    const { data, code } = await deleteData({
+      id,
+    });
+    if (code == "200") {
+      ElMessage.success("删除成功!");
+      getTableData();
+    }
   });
-  if (code == "200") {
-    ElMessage.success("删除成功!");
-    getTableData();
-  }
 };
 const updateSubmit = async () => {
   addData.value.abnormal = null;
@@ -723,11 +740,11 @@ const uploadRef = ref("uploadRef");
 const handleSuccess = (response) => {
   if (response.code === "200") {
     ElMessage.success("Excel导入成功!");
-    uploadRef.value.clearFiles();
     getTableData();
   } else {
-    ElMessage.error("Excel导入失败!");
+    ElMessage.error(response.msg);
   }
+  uploadRef.value.clearFiles();
 };
 
 onMounted(async () => {

+ 86 - 19
src/views/analysis/process/Xbar-SList.vue

@@ -106,11 +106,21 @@
                   ><span>{{ row.model }}</span>
                 </template>
               </el-table-column>
+              <el-table-column align="center" prop="code" label="产品编号">
+                <template #default="{ row }"
+                  ><span>{{ row.code }}</span>
+                </template>
+              </el-table-column>
               <el-table-column align="center" prop="batchNo" label="生产批号">
                 <template #default="{ row }"
                   ><span>{{ row.batchNo }}</span>
                 </template>
               </el-table-column>
+              <el-table-column align="center" prop="source" label="数据来源">
+                <template #default="{ row }"
+                  ><span>{{ row.source }}</span>
+                </template>
+              </el-table-column>
               <el-table-column
                 align="center"
                 prop="accuracys"
@@ -194,9 +204,20 @@
                   ><span>{{ row.measure }}</span>
                 </template>
               </el-table-column>
-              <el-table-column align="center" width="160" prop="" label="操作">
+              <el-table-column align="center" width="255" prop="" label="操作">
                 <template #default="{ row }">
                   <el-button
+                    v-if="row.source === '自动'"
+                    :type="loadingRows[row.id] ? 'info' : 'primary'"
+                    size="small"
+                    :loading="loadingRows[row.id]"
+                    @click="dataAcquisition(row)"
+                    :disabled="loadingRows[row.id]"
+                    style="height: 25px"
+                  >
+                    {{ loadingRows[row.id] ? "数据采集中..." : "采集数据" }}
+                  </el-button>
+                  <el-button
                     type="primary"
                     size="small"
                     class="btn"
@@ -257,13 +278,19 @@
                     v-for="(item, index) in taskOption"
                     :key="index"
                     :label="item.taskCode"
-                    :value="item.id"
+                    :value="Number(item.id)"
                   />
                 </el-select>
               </el-form-item>
               <el-form-item label="产品型号" prop="model">
                 <el-input :disabled="true" v-model="addData.model" />
               </el-form-item>
+              <el-form-item label="产品编号" prop="code">
+                <el-input :disabled="true" v-model="addData.code" />
+              </el-form-item>
+              <el-form-item label="数据来源" prop="source">
+                <el-input :disabled="true" v-model="addData.source" />
+              </el-form-item>
               <el-form-item label="生产批号" prop="batchNo">
                 <el-input v-model="addData.batchNo" />
               </el-form-item>
@@ -325,8 +352,9 @@ import {
   getTaskCode,
 } from "@/api/analysis";
 import Search from "@/components/Search/index.vue";
-import { XBarSCompute } from "@/api/analysis";
+import { XBarSCompute, collectData } from "@/api/analysis";
 import { useCrud } from "@/hooks/userCrud";
+import {ElMessage, ElMessageBox} from "element-plus";
 
 const { Utils } = useCrud({
   src: "/api/v1/spc/pDownloadTemplate",
@@ -338,6 +366,32 @@ const emit = defineEmits([
   "update:addStatus",
   "update:editStatus",
 ]);
+
+// 在你的组件 setup 中
+const loadingRows = ref({});
+
+const dataAcquisition = async (row) => {
+  loadingRows.value = { ...loadingRows.value, [row.id]: true };
+  try {
+    // 这里替换为你的实际请求
+    const { code } = await collectData({
+      qualitySpcRecordId: row.id,
+      model: row.model,
+      batchNo: row.batchNo,
+      operation: lableValue.value,
+    });
+    if (200 == code) {
+      ElMessage.success("数据采集成功!");
+      getTableData();
+    }
+  } catch (error) {
+    console.error("数据采集失败:", error);
+    // 可以在这里添加错误处理,比如显示错误消息
+  } finally {
+    loadingRows.value = { ...loadingRows.value, [row.id]: false };
+  }
+};
+
 const compute = async () => {
   // 存储提取的 accuracys 数据
   const accuracysList = ref([]);
@@ -559,13 +613,19 @@ const taskChange = (value) => {
   taskOption.value.forEach((item) => {
     if (item.id == value) {
       addData.value.model = item.prodtModel;
-      accuracysSum.value = Number(item.processCount);
-      addData.value.accuracys = [];
-      let array = [];
-      for (let i = 0; i < accuracysSum.value; i++) {
-        array.push(0);
+      addData.value.code = item.prodtCode;
+      addData.value.source = item.source;
+      if (item.source === "手动") {
+        accuracysSum.value = Number(item.processCount);
+        addData.value.accuracys = [];
+        let array = [];
+        for (let i = 0; i < accuracysSum.value; i++) {
+          array.push(0);
+        }
+        addData.value.accuracys = array;
+      } else {
+        addData.value.accuracys = [];
       }
-      addData.value.accuracys = array;
     }
   });
 };
@@ -576,7 +636,8 @@ const opOptions = ref([...dicts.spc_operation]);
 //修改
 const updataItem = (row) => {
   editStatus.value = true;
-  addData.value = row;
+  const data = JSON.parse(JSON.stringify(row));
+  addData.value = data;
   addStatus.value = true;
   emit("update:addStatus", addStatus.value);
   emit("update:editStatus", editStatus.value);
@@ -620,13 +681,19 @@ const addSubmit = async () => {
   });
 };
 const deleteSubmit = async (id) => {
-  const { data, code } = await deleteData({
-    id,
+  ElMessageBox.confirm("是否删除所选中数据?", "提示", {
+    confirmButtonText: "确定",
+    cancelButtonText: "取消",
+    type: "warning",
+  }).then(async () => {
+    const { data, code } = await deleteData({
+      id,
+    });
+    if (code == "200") {
+      ElMessage.success("删除成功!");
+      getTableData();
+    }
   });
-  if (code == "200") {
-    ElMessage.success("删除成功!");
-    getTableData();
-  }
 };
 const updateSubmit = async () => {
   addData.value.abnormal = null;
@@ -671,11 +738,11 @@ const uploadRef = ref("uploadRef");
 const handleSuccess = (response) => {
   if (response.code === "200") {
     ElMessage.success("Excel导入成功!");
-    uploadRef.value.clearFiles();
     getTableData();
   } else {
-    ElMessage.error("Excel导入失败!");
+    ElMessage.error(response.msg);
   }
+  uploadRef.value.clearFiles();
 };
 
 onMounted(async () => {
@@ -686,7 +753,7 @@ onMounted(async () => {
       lableValue.value = item.dictValue;
     }
   });
-
+  await getTaskOption();
   await getTableData();
   uploadUrl.value =
     import.meta.env.VITE_APP_BASE_API +

+ 55 - 36
src/views/analysis/spc/index.vue

@@ -17,34 +17,35 @@
         @click="toAdd"
         >新增</el-button
       >
-      <el-table
-        :data="tableData"
-        border
-
-      >
-        <el-table-column prop="taskCode" label="任务编号" />
-        <el-table-column prop="prodtModel" label="产品型号" />
-        <el-table-column prop="operationName" label="工序名称" />
-        <el-table-column prop="source" label="采集数据源" />
+      <el-table :data="tableData" border>
+        <el-table-column align="center" prop="taskCode" label="任务编号" />
+        <el-table-column align="center" prop="prodtModel" label="产品型号" />
+        <el-table-column align="center" prop="prodtCode" label="产品编号" />
+        <el-table-column align="center" prop="operationName" label="工序名称" />
+        <el-table-column align="center" prop="source" label="采集数据源" />
         <!--        <el-table-column prop="param" label="控制参数" />-->
         <!--        <el-table-column prop="chart" label="控制图" />-->
-        <el-table-column prop="address" label="预警规则">
-          <template #default="{ row }">
-            <el-button
-              type="primary"
-              class="btn"
-              style="height: 25px"
-              link
-              @click="toRuler(row)"
-              >编辑</el-button
-            >
-          </template>
-        </el-table-column>
-        <el-table-column prop="processCount" label="工序采集点数" />
+        <!--        <el-table-column prop="address" label="预警规则">-->
+        <!--          <template #default="{ row }">-->
+        <!--            <el-button-->
+        <!--              type="primary"-->
+        <!--              class="btn"-->
+        <!--              style="height: 25px"-->
+        <!--              link-->
+        <!--              @click="toRuler(row)"-->
+        <!--              >编辑</el-button-->
+        <!--            >-->
+        <!--          </template>-->
+        <!--        </el-table-column>-->
+        <el-table-column
+          align="center"
+          prop="processCount"
+          label="工序采集点数"
+        />
         <!--        <el-table-column prop="centralValue" label="中心值" />-->
         <!--        <el-table-column prop="upperLimit" label="上限" />-->
         <!--        <el-table-column prop="floor" label="下限" />-->
-        <el-table-column prop="created" label="创建时间" />
+        <el-table-column align="center" prop="created" label="创建时间" />
         <el-table-column
           align="center"
           width="160"
@@ -59,7 +60,7 @@
               style="height: 25px"
               @click="toEdit(row)"
               size="small"
-              >编辑</el-button
+              >修改</el-button
             >
             <el-button
               type="info"
@@ -84,7 +85,7 @@
     </div>
     <div v-if="addStatus || editStatus" class="formView">
       <div class="formTitle">
-        {{ addStatus ? "新增任务" : "编辑任务" }}
+        {{ addStatus ? "新增任务" : "修改任务" }}
       </div>
       <el-scrollbar style="height: calc(100% - 60px)">
         <el-form
@@ -98,7 +99,14 @@
             <el-input v-model="formData.taskCode" />
           </el-form-item>
           <el-form-item label="产品型号" prop="Index1">
-            <el-select v-model="formData.Index1">
+            <el-select
+              v-model="formData.Index1"
+              @change="
+                (value) => {
+                  taskChange(value);
+                }
+              "
+            >
               <el-option
                 v-for="(item, index) in opInfoData"
                 :key="index"
@@ -107,6 +115,9 @@
               />
             </el-select>
           </el-form-item>
+          <el-form-item label="产品编号" prop="prodtCode">
+            <el-input :disabled="true" v-model="formData.prodtCode" />
+          </el-form-item>
           <el-form-item label="工序名称" prop="Index2">
             <el-select v-model="formData.Index2">
               <el-option
@@ -183,6 +194,7 @@ import {
   updateData,
   deleteData,
 } from "@/api/spc";
+import { ElMessage, ElMessageBox } from "element-plus";
 defineOptions({
   name: "SPCrules",
 });
@@ -240,7 +252,6 @@ const toRuler = (row) => {
   router.push({ name: "SPCrules" });
 };
 const getData = async (obj) => {
-  console.log("222222222222222222")
   const { data, code } = await getTableData({
     ...searchRef.value.searchForm,
     pageNo: currentOption.page,
@@ -358,17 +369,24 @@ const setEditFormData = (row) => {
   });
 };
 const toEdit = (row) => {
-  formData.value = row;
+  const data = JSON.parse(JSON.stringify(row));
+  formData.value = data;
   //设置index1 index2
-  setEditFormData(row);
+  setEditFormData(data);
   editStatus.value = true;
 };
 const toDelete = async (id) => {
-  const { code } = await deleteData({ id });
-  if (code == "200") {
-    ElMessage.success("操作成功");
-    getData();
-  }
+  ElMessageBox.confirm("是否删除所选中数据?", "提示", {
+    confirmButtonText: "确定",
+    cancelButtonText: "取消",
+    type: "warning",
+  }).then(async () => {
+    const { code } = await deleteData({ id });
+    if (code == "200") {
+      ElMessage.success("操作成功");
+      getData();
+    }
+  });
 };
 const reset = () => {
   formData.value = {
@@ -383,8 +401,6 @@ const reset = () => {
     limit: 10,
     pageSizes: [10, 20, 30, 40, 50],
   };
-  console.log(currentOption.value, "currentOption.value")
-  console.log("11111111111111111")
 };
 
 const resetData = () => {
@@ -448,6 +464,9 @@ const getBaseDatas = async () => {
   const { data, code } = await getBaseData();
   opInfoData.value = data;
 };
+const taskChange = (value) => {
+  formData.value.prodtCode = opInfoData.value[value].prodtCode;
+};
 onMounted(() => {
   setHeight();
   getBaseDatas();

+ 70 - 233
src/views/analysis/target/index/index.vue

@@ -162,11 +162,21 @@
                     ><span>{{ row.model }}</span>
                   </template>
                 </el-table-column>
+                <el-table-column align="center" prop="code" label="产品编号">
+                  <template #default="{ row }"
+                    ><span>{{ row.code }}</span>
+                  </template>
+                </el-table-column>
                 <el-table-column align="center" prop="batchNo" label="生产批号">
                   <template #default="{ row }"
                     ><span>{{ row.batchNo }}</span>
                   </template>
                 </el-table-column>
+                <el-table-column align="center" prop="source" label="数据来源">
+                  <template #default="{ row }"
+                    ><span>{{ row.source }}</span>
+                  </template>
+                </el-table-column>
                 <el-table-column
                   align="center"
                   prop="accuracys"
@@ -255,13 +265,24 @@
                 </el-table-column>
                 <el-table-column
                   align="center"
-                  width="260"
+                  width="300"
                   prop=""
                   label="操作"
                   id="opear"
                 >
                   <template #default="{ row }">
                     <el-button
+                      v-if="row.source === '自动'"
+                      :type="loadingRows[row.id] ? 'info' : 'primary'"
+                      size="small"
+                      :loading="loadingRows[row.id]"
+                      @click="dataAcquisition(row)"
+                      :disabled="loadingRows[row.id]"
+                      style="height: 25px"
+                    >
+                      {{ loadingRows[row.id] ? "数据采集中..." : "采集数据" }}
+                    </el-button>
+                    <el-button
                       type="primary"
                       class="btn"
                       @click="computeCPK(row.id)"
@@ -521,227 +542,6 @@
             />
           </div>
           <div class="info" v-if="addStatus">
-            <!-- <el-table
-              :data="addData"
-              border
-              :style="{ height: 120 + 'px', width: maxWidth + 'px' }"
-              :show-overflow-tooltip="true"
-            >
-              <el-table-column
-                align="center"
-                width="60"
-                prop="dateStr"
-                label="日期"
-              >
-                <template #default="{ row }"
-                  >
-                  <el-input-number
-
-                    v-model="row.accuracy1"
-                    :precision="2"
-                    :step="0.01"
-                    width="60"
-                  />
-                </template>
-              </el-table-column>
-              <el-table-column
-                align="center"
-                width="140"
-                prop="model"
-                label="产品型号"
-              >
-                <template #default="{ row }"
-                  >
-                  <el-input-number
-
-                    v-model="row.accuracy1"
-                    :precision="2"
-                    :step="0.01"
-                    width="60"
-                  />
-                </template>
-              </el-table-column>
-              <el-table-column
-                align="center"
-                width="140"
-                prop="batchNo"
-                label="生产批号"
-              >
-                <template #default="{ row }"
-                  >
-                  <el-input-number
-
-                    v-model="row.accuracy1"
-                    :precision="2"
-                    :step="0.01"
-                    width="60"
-                  />
-                </template>
-              </el-table-column>
-              <el-table-column align="center" :label="showLable + '精度'">
-                <el-table-column
-                  align="center"
-                  prop="accuracy1"
-                  width="180"
-                  label="精度1"
-                >
-                  <template #default="{ row }"
-                    >
-                    <el-input-number
-
-                      v-model="row.accuracy1"
-                      :precision="2"
-                      :step="0.01"
-                      width="60"
-                    />
-                  </template>
-                </el-table-column>
-                <el-table-column
-                  align="center"
-                  prop="accuracy2"
-                  width="180"
-                  label="精度2"
-                >
-                  <template #default="{ row }"
-                    >
-                    <el-input-number
-
-                      v-model="row.accuracy2"
-                      :precision="2"
-                      :step="0.01"
-                    />
-                  </template>
-                </el-table-column>
-                <el-table-column
-                  align="center"
-                  prop="accuracy3"
-                  width="180"
-                  label="精度3"
-                >
-                  <template #default="{ row }"
-                    >
-                    <el-input-number
-
-                      v-model="row.accuracy3"
-                      :precision="2"
-                      :step="0.01"
-                    />
-                  </template>
-                </el-table-column>
-                <el-table-column
-                  align="center"
-                  prop="accuracy4"
-                  width="180"
-                  label="精度4"
-                >
-                  <template #default="{ row }"
-                    >
-                    <el-input-number
-
-                      v-model="row.accuracy4"
-                      :precision="2"
-                      :step="0.01"
-                    />
-                  </template>
-                </el-table-column>
-                <el-table-column
-                  align="center"
-                  prop="accuracy5"
-                  width="180"
-                  label="精度5"
-                >
-                  <template #default="{ row }"
-                    >
-                    <el-input-number
-
-                      v-model="row.accuracy5"
-                      :precision="2"
-                      :step="0.01"
-                    />
-                  </template>
-                </el-table-column> </el-table-column
-              ><el-table-column align="center" prop="avg" label="平均值">
-                <template #default="{ row }"
-                  >
-                  <el-input-number
-
-                    v-model="row.accuracy1"
-                    :precision="2"
-                    :step="0.01"
-                    width="60"
-                  />
-                </template> </el-table-column
-              ><el-table-column align="center" prop="range" label="极差">
-                <template #default="{ row }"
-                  >
-                  <el-input-number
-
-                    v-model="row.accuracy1"
-                    :precision="2"
-                    :step="0.01"
-                    width="60"
-                  />
-                </template> </el-table-column
-              ><el-table-column align="center" prop="checkUser" label="检测人">
-                <template #default="{ row }"
-                  >
-                  <el-input-number
-
-                    v-model="row.accuracy1"
-                    :precision="2"
-                    :step="0.01"
-                    width="60"
-                  />
-                </template> </el-table-column
-              ><el-table-column
-                align="center"
-                prop="checkDeviceNo"
-                label="检查设备编号"
-              >
-                <template #default="{ row }"
-                  >
-                  <el-input-number
-
-                    v-model="row.accuracy1"
-                    :precision="2"
-                    :step="0.01"
-                    width="60"
-                  />
-                </template>
-              </el-table-column>
-              <el-table-column align="center" prop="abnormal" label="是否异常">
-                <template #default="{ row }"
-                  >
-                  <el-input-number
-
-                    v-model="row.accuracy1"
-                    :precision="2"
-                    :step="0.01"
-                    width="60"
-                  />
-                </template>
-              </el-table-column>
-              <el-table-column align="center" prop="analyseUser" label="分析人">
-                <template #default="{ row }"
-                  >
-                  <el-input-number
-
-                    v-model="row.accuracy1"
-                    :precision="2"
-                    :step="0.01"
-                    width="60"
-                  />
-                </template>
-              </el-table-column>
-              <el-table-column align="center" prop="measure" label="处置措施" />
-              <template #empty>
-                <div>
-                  <span style="color: green; font-size: 16px"
-                    >请先导入文件</span
-                  >
-                </div>
-              </template>
-            </el-table> -->
             <el-scrollbar :style="{ height: Height - 80 + 'px' }">
               <el-form
                 ref="ruleFormRef"
@@ -774,13 +574,19 @@
                       v-for="(item, index) in taskOption"
                       :key="index"
                       :label="item.taskCode"
-                      :value="item.id"
+                      :value="Number(item.id)"
                     />
                   </el-select>
                 </el-form-item>
                 <el-form-item label="产品型号" prop="model">
                   <el-input :disabled="true" v-model="addData.model" />
                 </el-form-item>
+                <el-form-item label="产品编号" prop="code">
+                  <el-input :disabled="true" v-model="addData.code" />
+                </el-form-item>
+                <el-form-item label="数据来源" prop="source">
+                  <el-input :disabled="true" v-model="addData.source" />
+                </el-form-item>
                 <!--                <el-form-item label="产品型号" prop="model">
                   &lt;!&ndash; <el-select  v-model="addData.model">
                     <el-option
@@ -904,11 +710,35 @@ import {
   updateData,
   getTaskCode,
   cpkCompute,
+  collectData,
 } from "@/api/analysis";
 import Search from "@/components/Search/index.vue";
 import { ElMessage, ElMessageBox } from "element-plus";
 
-// 模拟后台接口
+// 在你的组件 setup 中
+const loadingRows = ref({});
+
+const dataAcquisition = async (row) => {
+  loadingRows.value = { ...loadingRows.value, [row.id]: true };
+  try {
+    // 这里替换为你的实际请求
+    const { code } = await collectData({
+      qualitySpcRecordId: row.id,
+      model: row.model,
+      batchNo: row.batchNo,
+      operation: lableValue.value,
+    });
+    if (200 == code) {
+      ElMessage.success("数据采集成功!");
+      getTableData();
+    }
+  } catch (error) {
+    console.error("数据采集失败:", error);
+    // 可以在这里添加错误处理,比如显示错误消息
+  } finally {
+    loadingRows.value = { ...loadingRows.value, [row.id]: false };
+  }
+};
 const cpkApi = async (id) => {
   const { data } = await cpkCompute({
     spcRecordId: id,
@@ -971,6 +801,8 @@ const taskChange = (value) => {
   taskOption.value.forEach((item) => {
     if (item.id == value) {
       addData.value.model = item.prodtModel;
+      addData.value.code = item.prodtCode;
+      addData.value.source = item.source;
       if (item.source === "手动") {
         accuracysSum.value = Number(item.processCount);
         addData.value.accuracys = [];
@@ -1286,7 +1118,8 @@ const setChart2 = () => {
 //修改
 const updataItem = (index) => {
   editStatus.value = true;
-  addData.value = tableData.value[index];
+  const data = JSON.parse(JSON.stringify(tableData.value[index]));
+  addData.value = data;
   addStatus.value = true;
 };
 //导入按钮
@@ -1485,7 +1318,6 @@ const chartsOption1 = ref({
               type: "solid",
               color: "#333",
               width: 2,
-              type: "dashed",
             },
           },
         ],
@@ -1593,7 +1425,6 @@ const chartsOption2 = ref({
               type: "solid",
               color: "#333",
               width: 2,
-              type: "dashed",
             },
           },
         ],
@@ -1654,13 +1485,19 @@ const addSubmit = async () => {
   });
 };
 const deleteSubmit = async (id) => {
-  const { data, code } = await deleteData({
-    id,
+  ElMessageBox.confirm("是否删除所选中数据?", "提示", {
+    confirmButtonText: "确定",
+    cancelButtonText: "取消",
+    type: "warning",
+  }).then(async () => {
+    const { data, code } = await deleteData({
+      id,
+    });
+    if (code == "200") {
+      ElMessage.success("删除成功!");
+      getTableData();
+    }
   });
-  if (code == "200") {
-    ElMessage.success("删除成功!");
-    getTableData();
-  }
 };
 const updateSubmit = async () => {
   const { data, code } = await updateData({