From ebc5ce2b6e4cba0708d4f5efd20fd049fcd774e6 Mon Sep 17 00:00:00 2001
From: CD配唱片 <CD配唱片>
Date: 星期四, 08 五月 2025 13:22:25 +0800
Subject: [PATCH] 优化,用节流控制表格下拉加载更多分页数据避免请求过多数据

---
 src/views/basicData/processRouteDataPreparate/index.vue |  311 +++++++++++++++++++++++++++++++--------------------
 1 files changed, 188 insertions(+), 123 deletions(-)

diff --git a/src/views/basicData/processRouteDataPreparate/index.vue b/src/views/basicData/processRouteDataPreparate/index.vue
index f30c099..dd00a50 100644
--- a/src/views/basicData/processRouteDataPreparate/index.vue
+++ b/src/views/basicData/processRouteDataPreparate/index.vue
@@ -7,10 +7,10 @@
         :rules="rules"
         :inline="true"
         v-show="showSearch"
-        :label-width="locale === 'zh' ? '90px' : '120px'"
+        :label-width="locale === 'zh' ? '90px' : '160px'"
       >
         <el-row :gutter="20">
-          <el-col :span="6">
+          <el-col :span="9">
             <el-form-item :label="$t('plan.query.itemNumber')" prop="itemCode">
               <el-input
                 style="width: 240px"
@@ -23,7 +23,30 @@
               />
             </el-form-item>
           </el-col>
-          <el-col :span="18" style="text-align: right">
+          <el-col :span="9">
+            <el-form-item
+              :label="$t('plan.table.applicableFactories')"
+              prop="orgCode"
+            >
+              <el-select
+                clearable
+                v-model="queryParams.orgCode"
+                :style="{ width: locale == 'zh' ? '160px' : '250px' }"
+                :placeholder="`${$t('common.common.placeholder')}${$t(
+                  'plan.table.applicableFactories'
+                )}`"
+              >
+                <el-option
+                  v-for="plant in plantList"
+                  :key="plant.id"
+                  :label="plant.plantName"
+                  :value="plant.plantCode"
+                >
+                </el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :span="6" style="text-align: right">
             <el-form-item>
               <el-button type="primary" icon="Search" @click="handleQuery">{{
                 $t("common.common.query")
@@ -56,7 +79,7 @@
     <HxlhTable
       style="width: 100%"
       :columns="columns"
-      :data="planList"
+      :data="processRouteList"
       :loading="loading"
       :height="height"
       @on-checkbox="handleCheckboxChange"
@@ -72,38 +95,46 @@
           link
           @click="handleCheckView(row)"
           v-hasPermi="['aps:calendar:update']"
-          >鏌ョ湅</el-button
+          >{{ $t("common.common.view") }}</el-button
         >
       </template>
     </HxlhTable>
-    <el-dialog :title="title" v-model="openDialog" width="900px" append-to-body>
+    <el-dialog
+      :title="$t('common.common.viewDetails')"
+      v-model="openDialog"
+      width="900px"
+      append-to-body
+    >
       <HxlhTable
         style="width: 100%"
         :columns="subGridOptions"
         :data="subList"
         :loading="loading"
         :height="heightSub"
-        @on-checkbox="handleCheckboxChange"
-        :page="page"
-        @changePageNo="changePageNo"
-        @changePageSize="changePageSize"
       >
       </HxlhTable>
+      <template #footer>
+        <span class="dialog-footer">
+          <el-button @click="openDialog = false">{{
+            $t("common.common.cancel")
+          }}</el-button>
+        </span>
+      </template>
     </el-dialog>
   </div>
 </template>
 
 <script setup name="ApsPlatePlan">
+import { listAll_plant } from "@/api/basicData/plant";
 import {
-  listPlan,
-  examplePlan,
-  confirmPart,
-} from "@/api/mainPlan/apsPlatePlan.js";
-import { listProcessRoute } from "@/api/basicData/processRoute.js";
+  apsStandardProcessRouteHeaderList,
+  apsStandardProcessRouteLineList,
+} from "@/api/basicData/processRoute.js";
+import { listAll_shop } from "@/api/basicData/shop";
 import HxlhTable from "@/components/HxlhTable/index.vue";
 import { ref } from "vue";
 import { getToken } from "@/utils/auth.js";
-import { ElMessage } from "element-plus";
+// import { ElMessage } from "element-plus";
 import { useI18n } from "vue-i18n"; //瑕佸湪js涓娇鐢ㄥ浗闄呭寲
 const { t, locale } = useI18n();
 const { proxy } = getCurrentInstance();
@@ -113,26 +144,17 @@
   current: 1,
   size: 10,
 });
-const {
-  aps_is_suspended,
-  aps_document_status,
-  aps_account,
-  aps_business_type,
-} = proxy.useDict(
-  "aps_is_suspended",
-  "aps_document_status",
-  "aps_account",
-  "aps_business_type"
-);
-
-const planList = ref([]);
+const plantList = ref([]);
+const shopList = ref([]);
+const processRouteList = ref([]);
+const subGridOptions = ref([]);
 const subList = ref([]);
-const loading = ref(true);
+const loading = ref(false);
 const showSearch = ref(true);
 const single = ref(true);
 const total = ref(0);
 
-const height = ref(document.documentElement.clientHeight - 270 + "px;");
+const height = ref(document.documentElement.clientHeight - 210 + "px;");
 const heightSub = ref(document.documentElement.clientHeight - 320 + "px;");
 // 琛ㄦ牸閰嶇疆
 const columns = ref([]);
@@ -142,20 +164,10 @@
   queryParams: {
     pageNum: 1,
     pageSize: 10,
-    customer: null,
-    documentNumber: null,
     itemCode: null,
   },
   rules: {
-    itemCode: [
-      {
-        required: true,
-        message: `${t("common.common.placeholder")}${t(
-          "plan.query.itemNumber"
-        )}`,
-        trigger: "blur",
-      },
-    ],
+    itemCode: [],
   },
 });
 
@@ -163,6 +175,17 @@
 watch(
   locale,
   (newLocale) => {
+    rules.value = {
+      itemCode: [
+        {
+          required: true,
+          message: `${t("common.common.placeholder")}${t(
+            "plan.query.itemNumber"
+          )}`,
+          trigger: "blur",
+        },
+      ],
+    };
     columns.value = [
       // {
       //   field: "expand",
@@ -173,38 +196,128 @@
       // },
       // { type: "checkbox", width: 60, align: "center" },
       {
-        title: t("basic.table.processRouteVersion"),
-        field: "mainPartNumber",
+        title: t("basic.table.processRouteID"),
+        field: "routeId",
       },
       {
         title: t("basic.table.processRouteVersion"),
-        field: "businessType",
+        field: "version",
       },
       {
         title: t("plan.table.itemNumber"),
-        field: "documentNumber",
+        field: "itemCode",
       },
       {
         title: t("basic.table.effectiveDate"),
-        field: "requirementType",
+        field: "startDate",
       },
       {
         title: t("basic.table.expiringDate"),
-        field: "documentStatus",
+        field: "endDate",
       },
       {
         title: t("basic.table.integrationDate"),
-        field: "itemNumber",
+        field: "createTime",
       },
       {
         title: t("basic.table.applicableFactories"),
-        field: "drawingNo",
+        field: "orgCode",
+        formatter: ({ cellValue, row, column }) => {
+          if (cellValue) {
+            for (let i = 0; i < plantList.value.length; i++) {
+              if (cellValue === plantList.value[i].plantCode) {
+                return plantList.value[i].plantName;
+              }
+            }
+          }
+        },
       },
       {
         title: "鎿嶄綔",
         width: 100,
         fixed: "right",
         slots: { default: "buttons" },
+        align: "center",
+      },
+    ];
+    subGridOptions.value = [
+      {
+        title: t("basic.table.processRouteID"),
+        field: "routeId",
+        width: 150,
+        align: "center",
+      },
+      {
+        title: t("basic.table.operationSequence"),
+        field: "routeNum",
+        width: 150,
+        align: "center",
+      },
+      {
+        title: t("plan.table.processName"),
+        field: "routeName",
+        width: 150,
+        align: "center",
+      },
+      {
+        title: t("basic.table.effectiveDate"),
+        field: "startDate",
+        width: 200,
+        align: "center",
+      },
+      {
+        title: t("basic.table.expiringDate"),
+        field: "endDate",
+        width: 200,
+        align: "center",
+      },
+      {
+        title: t("basic.table.integrationDate"),
+        field: "createTime",
+        width: 200,
+        align: "center",
+      },
+      {
+        title: t("basic.table.applicableFactories"),
+        field: "orgCode",
+        width: 90,
+        align: "center",
+        formatter: ({ cellValue, row, column }) => {
+          if (cellValue) {
+            for (let i = 0; i < plantList.value.length; i++) {
+              if (cellValue === plantList.value[i].plantCode) {
+                return plantList.value[i].plantName;
+              }
+            }
+          }
+        },
+      },
+      {
+        title: t("basic.table.applicableWorkshop"),
+        field: "shopCode",
+        width: 90,
+        align: "center",
+        formatter: ({ cellValue, row, column }) => {
+          if (cellValue) {
+            for (let i = 0; i < shopList.value.length; i++) {
+              if (cellValue === shopList.value[i].id) {
+                return shopList.value[i].shopName;
+              }
+            }
+          }
+          return "";
+        },
+      },
+      {
+        title: t("basic.table.productivityModel"),
+        field: "productivityModel",
+        width: 160,
+        align: "center",
+      },
+      {
+        title: t("basic.table.designCapacity"),
+        field: "designCapacity",
+        width: 160,
         align: "center",
       },
     ];
@@ -227,10 +340,14 @@
 function getList() {
   loading.value = true;
   queryParams.value.params = {};
-  listPlan(queryParams.value).then((response) => {
-    planList.value = response.rows;
-    loading.value = false;
-  });
+  apsStandardProcessRouteHeaderList(queryParams.value)
+    .then((response) => {
+      processRouteList.value = response.rows;
+      loading.value = false;
+    })
+    .catch(() => {
+      loading.value = false;
+    });
 }
 
 /** 鎼滅储鎸夐挳鎿嶄綔 */
@@ -244,82 +361,24 @@
 
 /** 閲嶇疆鎸夐挳鎿嶄綔 */
 function resetQuery() {
+  page.value.current = 1;
+  page.value.total = 0;
+  queryParams.value.pageNum = 1;
   proxy.resetForm("queryRef");
-  handleQuery();
+  processRouteList.value = [];
+  subList.value = [];
 }
 
 function handleCheckView(row) {
   openDialog.value = true;
-  listProcessRoute({ workOrderNo: row.documentNumber }).then(
-      (data) => {
-        subList.value = data.rows;
-      })
+  apsStandardProcessRouteLineList({
+    routeId: row.routeId,
+  }).then((data) => {
+    subList.value = data.rows;
+  });
 }
 
 // /*瀹氫箟涓嬫媺浜岀骇琛�*/
-
-const subGridOptions = ref([
-    {
-      title: "宸ヨ壓璺嚎ID",
-      field: "itemNo",
-      width: 150,
-      align: "center",
-    },
-    {
-      title: "宸ュ簭搴忓彿",
-      field: "workOrderNo",
-      width: 150,
-      align: "center",
-    },
-    {
-      title: "宸ュ簭鍚嶇О",
-      field: "processNumber",
-      width: 100,
-      align: "center",
-    },
-    {
-      title: "鐢熸晥鏃ユ湡",
-      field: "processName",
-      width: 150,
-      align: "center",
-    },
-    {
-      title: "澶辨晥鏃ユ湡",
-      field: "processPlanStartDay",
-      width: 200,
-      align: "center",
-    },
-    {
-      title: "闆嗘垚鏃ユ湡",
-      field: "processPlanEndDay",
-      width: 200,
-      align: "center",
-    },
-    {
-      title: "閫傜敤宸ュ巶",
-      field: "standardTime",
-      width: 90,
-      align: "center",
-    },
-    {
-      title: "閫傜敤杞﹂棿",
-      field: "processOrder",
-      width: 90,
-      align: "center",
-    },
-    {
-      title: "浜ц兘妯″瀷",
-      field: "integrationDay",
-      width: 160,
-      align: "center",
-    },
-    {
-      title: "璁捐浜ц兘",
-      field: "integrationDay",
-      width: 160,
-      align: "center",
-    },
-  ])
 // const expandConfig = ref({
 //   lazy: true,
 //   loadMethod({ row }) {
@@ -332,7 +391,13 @@
 //   },
 // });
 
-getList();
+// getList();
+onMounted(async () => {
+  const res = await listAll_plant({});
+  plantList.value = res.data;
+  const shopres = await listAll_shop({});
+  shopList.value = shopres.data;
+});
 </script>
 <style lang="css" scoped>
 h4 {

--
Gitblit v1.9.3