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