From befbda496fbf663c857e89f3daf3dc2dbcdcd624 Mon Sep 17 00:00:00 2001
From: zhangwencui <1064582902@qq.com>
Date: 星期五, 29 五月 2026 15:45:16 +0800
Subject: [PATCH] 不合格现象跳转百度

---
 src/views/qualityManagement/nonconformingManagement/index.vue |  572 +++++++++++++++++++++++++++++++--------------------------
 1 files changed, 311 insertions(+), 261 deletions(-)

diff --git a/src/views/qualityManagement/nonconformingManagement/index.vue b/src/views/qualityManagement/nonconformingManagement/index.vue
index 666ab30..5fdf343 100644
--- a/src/views/qualityManagement/nonconformingManagement/index.vue
+++ b/src/views/qualityManagement/nonconformingManagement/index.vue
@@ -4,282 +4,321 @@
       <div style="display: flex;flex-direction: row;align-items: center;">
         <div>
           <span class="search_title">绫诲瀷锛�</span>
-          <el-select v-model="searchForm.inspectType" clearable style="width: 200px" @change="handleQuery">
-            <el-option label="鍘熸潗鏂欐楠�" :value="0" />
-            <el-option label="杩囩▼妫�楠�" :value="1" />
-            <el-option label="鍑哄巶妫�楠�" :value="2" />
+          <el-select v-model="searchForm.inspectType"
+                     clearable
+                     style="width: 200px"
+                     @change="handleQuery">
+            <el-option label="鍘熸潗鏂欐楠�"
+                       :value="0" />
+            <el-option label="杩囩▼妫�楠�"
+                       :value="1" />
+            <el-option label="鍑哄巶妫�楠�"
+                       :value="2" />
           </el-select>
         </div>
         <div style="margin-left: 10px">
           <span class="search_title">鐘舵�侊細</span>
-          <el-select v-model="searchForm.inspectState" clearable style="width: 200px" @change="handleQuery">
-            <el-option label="寰呭鐞�" :value="0" />
-            <el-option label="宸插鐞�" :value="1" />
+          <el-select v-model="searchForm.inspectState"
+                     clearable
+                     style="width: 200px"
+                     @change="handleQuery">
+            <el-option label="寰呭鐞�"
+                       :value="0" />
+            <el-option label="宸插鐞�"
+                       :value="1" />
           </el-select>
         </div>
         <div style="margin-left: 10px">
           <span class="search_title">浜у搧鍚嶇О锛�</span>
-          <el-input
-              v-model="searchForm.productName"
-              style="width: 200px"
-              placeholder="璇疯緭鍏ヤ骇鍝佸悕绉版悳绱�"
-              @change="handleQuery"
-              clearable
-              :prefix-icon="Search"
-          />
+          <el-input v-model="searchForm.productName"
+                    style="width: 200px"
+                    placeholder="璇疯緭鍏ヤ骇鍝佸悕绉版悳绱�"
+                    @change="handleQuery"
+                    clearable
+                    :prefix-icon="Search" />
         </div>
-        <span  style="margin-left: 10px" class="search_title">妫�娴嬫棩鏈燂細</span>
-        <el-date-picker  v-model="searchForm.entryDate" value-format="YYYY-MM-DD" format="YYYY-MM-DD" type="daterange"
-												 style="width: 300px"
-                         placeholder="璇烽�夋嫨" clearable @change="changeDaterange" />
-        <el-button type="primary" @click="handleQuery" style="margin-left: 10px">鎼滅储</el-button>
+        <span style="margin-left: 10px"
+              class="search_title">妫�娴嬫棩鏈燂細</span>
+        <el-date-picker v-model="searchForm.entryDate"
+                        value-format="YYYY-MM-DD"
+                        format="YYYY-MM-DD"
+                        type="daterange"
+                        style="width: 300px"
+                        placeholder="璇烽�夋嫨"
+                        clearable
+                        @change="changeDaterange" />
+        <el-button type="primary"
+                   @click="handleQuery"
+                   style="margin-left: 10px">鎼滅储</el-button>
       </div>
       <div>
         <!-- <el-button type="primary" @click="openForm('add')">鏂板</el-button> -->
         <el-button @click="handleOut">瀵煎嚭</el-button>
-        <el-button type="danger" plain @click="handleDelete">鍒犻櫎</el-button>
+        <el-button type="danger"
+                   plain
+                   @click="handleDelete">鍒犻櫎</el-button>
       </div>
     </div>
     <div class="table_list">
-      <PIMTable
-          rowKey="id"
-          :column="tableColumn"
-          :tableData="tableData"
-          :page="page"
-          :isSelection="true"
-          @selection-change="handleSelectionChange"
-          :tableLoading="tableLoading"
-          @pagination="pagination"
-          :total="page.total"
-      ></PIMTable>
+      <PIMTable rowKey="id"
+                :column="tableColumn"
+                :tableData="tableData"
+                :page="page"
+                :isSelection="true"
+                @selection-change="handleSelectionChange"
+                :tableLoading="tableLoading"
+                @pagination="pagination"
+                :total="page.total">
+        <template #defectivePhenomena="{ row }">
+          <el-link type="primary"
+                   :underline="false"
+                   @click="openBaidu(row)">{{ row.defectivePhenomena }}</el-link>
+        </template>
+      </PIMTable>
     </div>
-    <FormDia ref="formDia" @close="handleQuery"></FormDia>
-    <InspectionFormDia ref="inspectionFormDia" @close="handleQuery"></InspectionFormDia>
+    <FormDia ref="formDia"
+             @close="handleQuery"></FormDia>
+    <InspectionFormDia ref="inspectionFormDia"
+                       @close="handleQuery"></InspectionFormDia>
   </div>
 </template>
 
 <script setup>
-import { Search } from "@element-plus/icons-vue";
-import {onMounted, ref, reactive, toRefs, nextTick, getCurrentInstance} from "vue";
-import FormDia from "@/views/qualityManagement/nonconformingManagement/components/formDia.vue";
-import {ElMessageBox} from "element-plus";
-import {qualityUnqualifiedDel, qualityUnqualifiedListPage} from "@/api/qualityManagement/nonconformingManagement.js";
-import InspectionFormDia from "@/views/qualityManagement/nonconformingManagement/components/inspectionFormDia.vue";
-import dayjs from "dayjs";
+  import { Search } from "@element-plus/icons-vue";
+  import {
+    onMounted,
+    ref,
+    reactive,
+    toRefs,
+    nextTick,
+    getCurrentInstance,
+  } from "vue";
+  import FormDia from "@/views/qualityManagement/nonconformingManagement/components/formDia.vue";
+  import { ElMessageBox } from "element-plus";
+  import {
+    qualityUnqualifiedDel,
+    qualityUnqualifiedListPage,
+  } from "@/api/qualityManagement/nonconformingManagement.js";
+  import InspectionFormDia from "@/views/qualityManagement/nonconformingManagement/components/inspectionFormDia.vue";
+  import dayjs from "dayjs";
 
-const data = reactive({
-  searchForm: {
-    inspectType: "",
-    inspectState: "",
-    productName: "",
-    entryDate: undefined, // 褰曞叆鏃ユ湡
-    entryDateStart: undefined,
-    entryDateEnd: undefined,
-  },
-});
-const { searchForm } = toRefs(data);
-const tableColumn = ref([
-  {
-    label: "鐘舵��",
-    prop: "inspectState",
-    dataType: "tag",
-    formatData: (params) => {
-      if (params == 0) {
-        return "寰呭鐞�";
-      } else if (params == 1) {
-        return "宸插鐞�";
-      } else {
-        return null;
-      }
+  const data = reactive({
+    searchForm: {
+      inspectType: "",
+      inspectState: "",
+      productName: "",
+      entryDate: undefined, // 褰曞叆鏃ユ湡
+      entryDateStart: undefined,
+      entryDateEnd: undefined,
     },
-    formatType: (params) => {
-      if (params == '涓嶅悎鏍�') {
-        return "danger";
-      } else if (params == '鍚堟牸') {
-        return "success";
-      } else {
-        return null;
-      }
-    },
-  },
-  {
-    label: "妫�娴嬫棩鏈�",
-    prop: "checkTime",
-    width: 120
-  },
-  {
-    label: "绫诲埆",
-    prop: "inspectType",
-    dataType: "tag",
-    width: 120,
-    formatData: (params) => {
-      if (params == 0) {
-        return "鍘熸潗鏂欐楠�";
-      } else if (params == 1) {
-        return "杩囩▼妫�楠�";
-      } else {
-        return '鍑哄巶妫�楠�';
-      }
-    },
-    formatType: (params) => {
-      if (params == '涓嶅悎鏍�') {
-        return "info";
-      } else if (params == '鍚堟牸') {
-        return "success";
-      } else {
-        return 'primary';
-      }
-    },
-  },
-  {
-    label: "妫�楠屽憳",
-    prop: "checkName",
-  },
-  {
-    label: "浜у搧鍚嶇О",
-    prop: "productName",
-  },
-  {
-    label: "瑙勬牸鍨嬪彿",
-    prop: "model",
-  },
-  {
-    label: "鍘氬害(mm)",
-    prop: "thickness",
-  },
-  {
-    label: "鍗曚綅",
-    prop: "unit",
-  },
-  {
-    label: "鏁伴噺",
-    prop: "quantity",
-    width: 100
-  },
-  {
-    label: "涓嶅悎鏍肩幇璞�",
-    prop: "defectivePhenomena",
-    width: 120
-  },
-  {
-    label: "澶勭悊缁撴灉",
-    prop: "dealResult",
-    width: 120
-  },
-  {
-    label: "澶勭悊浜�",
-    prop: "dealName",
-    width: 120
-  },
-  {
-    label: "澶勭悊鏃ユ湡",
-    prop: "dealTime",
-    width: 120
-  },
-  {
-    dataType: "action",
-    label: "鎿嶄綔",
-    align: "center",
-    fixed: "right",
-    width: 100,
-    operation: [
-      {
-        name: "澶勭悊",
-        type: "text",
-        clickFun: (row) => {
-          openInspectionForm("edit", row);
-        },
-        disabled: (row) => row.inspectState === 1,
+  });
+  const { searchForm } = toRefs(data);
+  const tableColumn = ref([
+    {
+      label: "鐘舵��",
+      prop: "inspectState",
+      dataType: "tag",
+      formatData: params => {
+        if (params == 0) {
+          return "寰呭鐞�";
+        } else if (params == 1) {
+          return "宸插鐞�";
+        } else {
+          return null;
+        }
       },
-    ],
-  },
-]);
-const tableData = ref([]);
-const selectedRows = ref([]);
-const tableLoading = ref(false);
-const page = reactive({
-  current: 1,
-  size: 100,
-  total: 0
-});
-const formDia = ref()
-const inspectionFormDia = ref()
-const { proxy } = getCurrentInstance()
+      formatType: params => {
+        if (params == "涓嶅悎鏍�") {
+          return "danger";
+        } else if (params == "鍚堟牸") {
+          return "success";
+        } else {
+          return null;
+        }
+      },
+    },
+    {
+      label: "妫�娴嬫棩鏈�",
+      prop: "checkTime",
+      width: 120,
+    },
+    {
+      label: "绫诲埆",
+      prop: "inspectType",
+      dataType: "tag",
+      width: 120,
+      formatData: params => {
+        if (params == 0) {
+          return "鍘熸潗鏂欐楠�";
+        } else if (params == 1) {
+          return "杩囩▼妫�楠�";
+        } else {
+          return "鍑哄巶妫�楠�";
+        }
+      },
+      formatType: params => {
+        if (params == "涓嶅悎鏍�") {
+          return "info";
+        } else if (params == "鍚堟牸") {
+          return "success";
+        } else {
+          return "primary";
+        }
+      },
+    },
+    {
+      label: "妫�楠屽憳",
+      prop: "checkName",
+    },
+    {
+      label: "浜у搧鍚嶇О",
+      prop: "productName",
+    },
+    {
+      label: "瑙勬牸鍨嬪彿",
+      prop: "model",
+    },
+    {
+      label: "鍘氬害(mm)",
+      prop: "thickness",
+    },
+    {
+      label: "鍗曚綅",
+      prop: "unit",
+    },
+    {
+      label: "鏁伴噺",
+      prop: "quantity",
+      width: 100,
+    },
+    {
+      label: "涓嶅悎鏍肩幇璞�",
+      prop: "defectivePhenomena",
+      width: 120,
+      dataType: "slot",
+      slot: "defectivePhenomena",
+    },
+    {
+      label: "澶勭悊缁撴灉",
+      prop: "dealResult",
+      width: 120,
+    },
+    {
+      label: "澶勭悊浜�",
+      prop: "dealName",
+      width: 120,
+    },
+    {
+      label: "澶勭悊鏃ユ湡",
+      prop: "dealTime",
+      width: 120,
+    },
+    {
+      dataType: "action",
+      label: "鎿嶄綔",
+      align: "center",
+      fixed: "right",
+      width: 100,
+      operation: [
+        {
+          name: "澶勭悊",
+          type: "text",
+          clickFun: row => {
+            openInspectionForm("edit", row);
+          },
+          disabled: row => row.inspectState === 1,
+        },
+      ],
+    },
+  ]);
+  const tableData = ref([]);
+  const selectedRows = ref([]);
+  const tableLoading = ref(false);
+  const page = reactive({
+    current: 1,
+    size: 100,
+    total: 0,
+  });
+  const formDia = ref();
+  const inspectionFormDia = ref();
+  const { proxy } = getCurrentInstance();
 
-const changeDaterange = (value) => {
-  searchForm.value.entryDateStart = undefined;
-  searchForm.value.entryDateEnd = undefined;
-  if (value) {
-    searchForm.value.entryDateStart = dayjs(value[0]).format("YYYY-MM-DD");
-    searchForm.value.entryDateEnd = dayjs(value[1]).format("YYYY-MM-DD");
-  }
-  getList();
-};
-// 鏌ヨ鍒楄〃
-/** 鎼滅储鎸夐挳鎿嶄綔 */
-const handleQuery = () => {
-  page.current = 1;
-  getList();
-};
-const pagination = (obj) => {
-  page.current = obj.page;
-  page.size = obj.limit;
-  getList();
-};
-const getList = () => {
-  tableLoading.value = true;
-  const params = { ...searchForm.value, ...page };
-  params.entryDate = undefined
-  qualityUnqualifiedListPage(params).then(res => {
-    tableLoading.value = false;
-    tableData.value = res.data.records
-    page.total = res.data.total;
-  }).catch(err => {
-    tableLoading.value = false;
-  })
-};
-// 琛ㄦ牸閫夋嫨鏁版嵁
-const handleSelectionChange = (selection) => {
-  selectedRows.value = selection;
-};
+  const changeDaterange = value => {
+    searchForm.value.entryDateStart = undefined;
+    searchForm.value.entryDateEnd = undefined;
+    if (value) {
+      searchForm.value.entryDateStart = dayjs(value[0]).format("YYYY-MM-DD");
+      searchForm.value.entryDateEnd = dayjs(value[1]).format("YYYY-MM-DD");
+    }
+    getList();
+  };
+  // 鏌ヨ鍒楄〃
+  /** 鎼滅储鎸夐挳鎿嶄綔 */
+  const handleQuery = () => {
+    page.current = 1;
+    getList();
+  };
+  const pagination = obj => {
+    page.current = obj.page;
+    page.size = obj.limit;
+    getList();
+  };
+  const getList = () => {
+    tableLoading.value = true;
+    const params = { ...searchForm.value, ...page };
+    params.entryDate = undefined;
+    qualityUnqualifiedListPage(params)
+      .then(res => {
+        tableLoading.value = false;
+        tableData.value = res.data.records;
+        page.total = res.data.total;
+      })
+      .catch(err => {
+        tableLoading.value = false;
+      });
+  };
+  // 琛ㄦ牸閫夋嫨鏁版嵁
+  const handleSelectionChange = selection => {
+    selectedRows.value = selection;
+  };
 
-// 鎵撳紑寮规
-const openForm = (type, row) => {
-  if (type !== 'add' && row?.inspectState === 1) {
-    proxy.$modal.msgWarning("宸插鐞嗙殑鏁版嵁涓嶈兘鍐嶇紪杈�");
-    return;
-  }
-  nextTick(() => {
-    formDia.value?.openDialog(type, row)
-  })
-};
-// 鎵撳紑澶勭悊寮规
-const openInspectionForm = (type, row) => {
-  if (row?.inspectState === 1) {
-    proxy.$modal.msgWarning("宸插鐞嗙殑鏁版嵁涓嶈兘鍐嶅鐞�");
-    return;
-  }
-  nextTick(() => {
-    inspectionFormDia.value?.openDialog(type, row)
-  })
-};
+  // 鎵撳紑寮规
+  const openForm = (type, row) => {
+    if (type !== "add" && row?.inspectState === 1) {
+      proxy.$modal.msgWarning("宸插鐞嗙殑鏁版嵁涓嶈兘鍐嶇紪杈�");
+      return;
+    }
+    nextTick(() => {
+      formDia.value?.openDialog(type, row);
+    });
+  };
+  // 鎵撳紑澶勭悊寮规
+  const openInspectionForm = (type, row) => {
+    if (row?.inspectState === 1) {
+      proxy.$modal.msgWarning("宸插鐞嗙殑鏁版嵁涓嶈兘鍐嶅鐞�");
+      return;
+    }
+    nextTick(() => {
+      inspectionFormDia.value?.openDialog(type, row);
+    });
+  };
 
-// 鍒犻櫎
-const handleDelete = () => {
-  let ids = [];
-  if (selectedRows.value.length > 0) {
-    ids = selectedRows.value.map((item) => item.id);
-  } else {
-    proxy.$modal.msgWarning("璇烽�夋嫨鏁版嵁");
-    return;
-  }
-  ElMessageBox.confirm("閫変腑鐨勫唴瀹瑰皢琚垹闄わ紝鏄惁纭鍒犻櫎锛�", "瀵煎嚭", {
-    confirmButtonText: "纭",
-    cancelButtonText: "鍙栨秷",
-    type: "warning",
-  })
+  // 鍒犻櫎
+  const handleDelete = () => {
+    let ids = [];
+    if (selectedRows.value.length > 0) {
+      ids = selectedRows.value.map(item => item.id);
+    } else {
+      proxy.$modal.msgWarning("璇烽�夋嫨鏁版嵁");
+      return;
+    }
+    ElMessageBox.confirm("閫変腑鐨勫唴瀹瑰皢琚垹闄わ紝鏄惁纭鍒犻櫎锛�", "瀵煎嚭", {
+      confirmButtonText: "纭",
+      cancelButtonText: "鍙栨秷",
+      type: "warning",
+    })
       .then(() => {
-        qualityUnqualifiedDel(ids).then((res) => {
+        qualityUnqualifiedDel(ids).then(res => {
           proxy.$modal.msgSuccess("鍒犻櫎鎴愬姛");
           getList();
         });
@@ -287,24 +326,35 @@
       .catch(() => {
         proxy.$modal.msg("宸插彇娑�");
       });
-};
-// 瀵煎嚭
-const handleOut = () => {
-  ElMessageBox.confirm("閫変腑鐨勫唴瀹瑰皢琚鍑猴紝鏄惁纭瀵煎嚭锛�", "瀵煎嚭", {
-    confirmButtonText: "纭",
-    cancelButtonText: "鍙栨秷",
-    type: "warning",
-  })
+  };
+  // 瀵煎嚭
+  const handleOut = () => {
+    ElMessageBox.confirm("閫変腑鐨勫唴瀹瑰皢琚鍑猴紝鏄惁纭瀵煎嚭锛�", "瀵煎嚭", {
+      confirmButtonText: "纭",
+      cancelButtonText: "鍙栨秷",
+      type: "warning",
+    })
       .then(() => {
-        proxy.download("/quality/qualityUnqualified/export", {}, "涓嶅悎鏍肩鐞�.xlsx");
+        proxy.download(
+          "/quality/qualityUnqualified/export",
+          {},
+          "涓嶅悎鏍肩鐞�.xlsx"
+        );
       })
       .catch(() => {
         proxy.$modal.msg("宸插彇娑�");
       });
-};
-onMounted(() => {
-  getList();
-});
+  };
+
+  const openBaidu = row => {
+    if (!row.defectivePhenomena) return;
+    const query = encodeURIComponent(row.defectivePhenomena + " 鎬庝箞瑙e喅锛�");
+    window.open(`https://www.baidu.com/s?wd=${query}`, "_blank");
+  };
+
+  onMounted(() => {
+    getList();
+  });
 </script>
 
 <style scoped></style>

--
Gitblit v1.9.3