Browse Source

Merge remote-tracking branch 'origin/master'

liziliang 4 days ago
parent
commit
e7617776a6

+ 18 - 0
src/api/analysis/index.js

@@ -137,6 +137,24 @@ export function getData(data) {
   });
 }
 
+export function saveExceptionData(data) {
+  return request({
+    url: "/api/v1/spc/saveExceptionData",
+    method: "post",
+    data: data,
+    responseType: "arraybuffer",
+  });
+}
+
+export function exportData(data) {
+  return request({
+    url: "/api/v1/spc/exportData",
+    method: "post",
+    data: data,
+    responseType: "arraybuffer",
+  });
+}
+
 export function getData2(data) {
   return request({
     url: "/api/v1/spc/page2",

+ 43 - 1
src/views/analysis/process/Xbar-RList.vue

@@ -79,6 +79,15 @@
                 @click="canceleOp"
                 >取消</el-button
               >
+              <el-button
+                style="margin-left: 15px"
+                v-if="!addStatus && !editStatus"
+                type="primary"
+                size="small"
+                class="btn"
+                @click="downloadExceptionData"
+                >保存异常数据</el-button
+              >
             </div>
           </div>
           <div class="info" v-if="!addStatus">
@@ -352,6 +361,7 @@ import {
   deleteData,
   updateData,
   getTaskCode,
+  saveExceptionData,
 } from "@/api/analysis";
 import Search from "@/components/Search/index.vue";
 import { XBarRCompute, collectData } from "@/api/analysis";
@@ -451,6 +461,38 @@ const getTableData = async () => {
   }
   disabled.value = false;
 };
+
+const downloadExceptionData = async () => {
+  saveExceptionData({
+    ...searchRef.value.searchForm,
+    pageNo: currentOption.page,
+    pageSize: currentOption.limit,
+    // yearStr: year.value,
+    operation: lableValue.value,
+  }).then((response) => {
+    const fileData = response.data;
+    // const fileName = decodeURI(
+    //   response.headers["content-disposition"].split(";")[1].split("=")[1]
+    // );
+    const fileName = "异常数据.xlsx";
+    const fileType =
+      "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8";
+
+    const blob = new Blob([fileData], { type: fileType });
+    const downloadUrl = window.URL.createObjectURL(blob);
+
+    const downloadLink = document.createElement("a");
+    downloadLink.href = downloadUrl;
+    downloadLink.download = fileName;
+
+    document.body.appendChild(downloadLink);
+    downloadLink.click();
+
+    document.body.removeChild(downloadLink);
+    window.URL.revokeObjectURL(downloadUrl);
+  });
+};
+
 const searchForm = [
   {
     label: "日期",
@@ -757,7 +799,7 @@ onMounted(async () => {
     }
   });
 
-  await getTableData();
+  // await getTableData();
   uploadUrl.value =
     import.meta.env.VITE_APP_BASE_API +
     "/api/v1/spc/xBarRUpload?type=1&operation=" +

+ 43 - 1
src/views/analysis/process/Xbar-SList.vue

@@ -78,6 +78,15 @@
                 @click="canceleOp"
                 >取消</el-button
               >
+              <el-button
+                style="margin-left: 15px"
+                v-if="!addStatus && !editStatus"
+                type="primary"
+                size="small"
+                class="btn"
+                @click="downloadExceptionData"
+                >保存异常数据</el-button
+              >
             </div>
           </div>
           <div class="info" v-if="!addStatus">
@@ -350,6 +359,7 @@ import {
   deleteData,
   updateData,
   getTaskCode,
+  saveExceptionData,
 } from "@/api/analysis";
 import Search from "@/components/Search/index.vue";
 import { XBarSCompute, collectData } from "@/api/analysis";
@@ -449,6 +459,38 @@ const getTableData = async () => {
   }
   disabled.value = false;
 };
+
+const downloadExceptionData = async () => {
+  saveExceptionData({
+    ...searchRef.value.searchForm,
+    pageNo: currentOption.page,
+    pageSize: currentOption.limit,
+    // yearStr: year.value,
+    operation: lableValue.value,
+  }).then((response) => {
+    const fileData = response.data;
+    // const fileName = decodeURI(
+    //   response.headers["content-disposition"].split(";")[1].split("=")[1]
+    // );
+    const fileName = "异常数据.xlsx";
+    const fileType =
+      "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8";
+
+    const blob = new Blob([fileData], { type: fileType });
+    const downloadUrl = window.URL.createObjectURL(blob);
+
+    const downloadLink = document.createElement("a");
+    downloadLink.href = downloadUrl;
+    downloadLink.download = fileName;
+
+    document.body.appendChild(downloadLink);
+    downloadLink.click();
+
+    document.body.removeChild(downloadLink);
+    window.URL.revokeObjectURL(downloadUrl);
+  });
+};
+
 const searchForm = [
   {
     label: "日期",
@@ -755,7 +797,7 @@ onMounted(async () => {
     }
   });
   await getTaskOption();
-  await getTableData();
+  // await getTableData();
   uploadUrl.value =
     import.meta.env.VITE_APP_BASE_API +
     "/api/v1/spc/xBarRUpload?type=1&operation=" +

+ 2 - 0
src/views/analysis/process/index.vue

@@ -418,6 +418,7 @@ const xbarRRefMethod = async (data) => {
   await nextTick(() => {
     if (xbarRRef.value) {
       xbarRRef.value.init(data);
+      xbarrListRef.value.init(lableValue.value);
     }
   });
 };
@@ -427,6 +428,7 @@ const xbarSRefMethod = async (data) => {
   await nextTick();
   if (xbarSRef.value) {
     xbarSRef.value.init(data);
+    xbarsListRef.value.init(lableValue.value);
   }
 };
 const pRef = ref("pRef");

+ 50 - 1
src/views/analysis/target/index/index.vue

@@ -138,6 +138,15 @@
                 id="cancel"
                 >取消</el-button
               >
+              <el-button
+                style="margin-left: 15px"
+                v-if="!addStatus && !editStatus"
+                type="primary"
+                size="small"
+                class="btn"
+                @click="downloadData"
+                >导出</el-button
+              >
               <!--              <span v-if="!addStatus && !editStatus" style="margin: 10px"
                 >年份:</span
               >
@@ -767,6 +776,7 @@ import {
   getTaskCode,
   cpkCompute,
   collectData,
+  exportData, saveExceptionData,
 } from "@/api/analysis";
 import Search from "@/components/Search/index.vue";
 import { ElMessage, ElMessageBox } from "element-plus";
@@ -893,11 +903,17 @@ const computeCPK = async (id) => {
     if ("error" in response.data) {
       result.value = response.data.error;
     } else {
-      const { product, batch, process, cpk, status } = response.data;
+      const { product, batch, process, cpk, status, mean, std, pp, ppk, ppm } =
+        response.data;
       result.value = `产品: ${product}<br>
       批次: ${batch}<br>
       工序: ${process}<br>
+      平均值: ${mean}<br>
+      标准差: ${std}<br>
       CPK: ${cpk}<br>
+      PP: ${pp}<br>
+      PPK: ${ppk}<br>
+      PPM: ${ppm}<br>
       评级: ${status}`;
     }
 
@@ -1041,6 +1057,39 @@ const getTableData = async () => {
   }
   disabled.value = false;
 };
+
+const downloadData = async () => {
+  exportData({
+    ...searchRef.value.searchForm,
+    pageNo: currentOption.page,
+    pageSize: currentOption.limit,
+    // yearStr: year.value,
+    operation: lableValue.value,
+  }).then((response) => {
+    const fileData = response.data;
+    // const fileName = decodeURI(
+    //   response.headers["content-disposition"].split(";")[1].split("=")[1]
+    // );
+    const fileName = "过程能力数据.xlsx";
+    const fileType =
+      "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8";
+
+    const blob = new Blob([fileData], { type: fileType });
+    const downloadUrl = window.URL.createObjectURL(blob);
+
+    const downloadLink = document.createElement("a");
+    downloadLink.href = downloadUrl;
+    downloadLink.download = fileName;
+
+    document.body.appendChild(downloadLink);
+    downloadLink.click();
+
+    document.body.removeChild(downloadLink);
+    window.URL.revokeObjectURL(downloadUrl);
+  });
+};
+
+
 const searchRef = ref(null);
 const searchForm = [
   {