From 1c4ff7adf79cd9abc1ea644a3161780a623b9f5c Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期三, 26 十一月 2025 16:43:31 +0800
Subject: [PATCH] 1.湟水峡-生产订单不和销售关联逻辑修改联调
---
src/components/DynamicTable/index.vue | 6
src/views/demo/fakePage/index.vue | 2
src/views/productionManagement/productionCosting/index.vue | 20 --
src/api/productionManagement/productionOrder.js | 27 ++
src/views/productionManagement/productionDispatching/index.vue | 25 --
src/views/productionManagement/operationScheduling/index.vue | 23 --
src/components/Pagination/index.vue | 7
src/views/productionManagement/productionReporting/index.vue | 20 --
src/views/reportAnalysis/reportManagement/index.vue | 6
src/views/procurementManagement/procurementPlan/index.vue | 6
src/views/productionManagement/productionOrder/index.vue | 397 ++++++++++++++++++++++++++++++++-------
src/components/PIMTable/Pagination.vue | 6
src/views/monitorManagement/videoMonitor/index.vue | 6
src/views/procurementManagement/advancedPriceManagement/index.vue | 6
src/views/reportAnalysis/reportManagement.vue | 6
15 files changed, 375 insertions(+), 188 deletions(-)
diff --git a/src/api/productionManagement/productionOrder.js b/src/api/productionManagement/productionOrder.js
index ab3dc06..29cff35 100644
--- a/src/api/productionManagement/productionOrder.js
+++ b/src/api/productionManagement/productionOrder.js
@@ -4,7 +4,7 @@
// 鍒嗛〉鏌ヨ
export function schedulingListPage(query) {
return request({
- url: "/salesLedger/scheduling/listPage",
+ url: "/productionOrder/listPage",
method: "get",
params: query,
});
@@ -16,4 +16,29 @@
method: "post",
data: query,
});
+}
+
+// 鏂板鐢熶骇璁㈠崟
+export function addProductionOrder(query) {
+ return request({
+ url: "/productionOrder/addProductionOrder",
+ method: "post",
+ data: query,
+ });
+}
+// 淇敼鐢熶骇璁㈠崟
+export function updateProductionOrder(query) {
+ return request({
+ url: "/productionOrder/updateProductionOrder",
+ method: "post",
+ data: query,
+ });
+}
+// 鍒犻櫎鐢熶骇璁㈠崟
+export function deleteProductionOrder(query) {
+ return request({
+ url: "/productionOrder/deleteProductionOrder",
+ method: "delete",
+ data: query,
+ });
}
\ No newline at end of file
diff --git a/src/components/DynamicTable/index.vue b/src/components/DynamicTable/index.vue
index 9da9a3c..0c33e09 100644
--- a/src/components/DynamicTable/index.vue
+++ b/src/components/DynamicTable/index.vue
@@ -136,9 +136,9 @@
<!-- 鍒嗛〉缁勪欢 -->
<div v-if="showPagination" class="pagination-container">
<el-pagination
- v-model:current-page="pagination.current"
- v-model:page-size="pagination.size"
- :page-sizes="[10, 20, 50, 100]"
+ v-model:currentPage="pagination.current"
+ v-model:pageSize="pagination.size"
+ :page-size-options="[10, 20, 50, 100]"
:total="pagination.total"
layout="total, sizes, prev, pager, next, jumper"
@size-change="handleSizeChange"
diff --git a/src/components/PIMTable/Pagination.vue b/src/components/PIMTable/Pagination.vue
index 7639e64..1c64402 100644
--- a/src/components/PIMTable/Pagination.vue
+++ b/src/components/PIMTable/Pagination.vue
@@ -2,10 +2,10 @@
<div :class="{ hidden }" class="pagination-container">
<el-pagination
:background="background"
- v-model:current-page="currentPage"
- v-model:page-size="pageSize"
+ v-model:currentPage="currentPage"
+ v-model:pageSize="pageSize"
:layout="layout"
- :page-sizes="pageSizes"
+ :page-size-options="pageSizes"
:pager-count="pagerCount"
:total="total"
v-bind="$attrs"
diff --git a/src/components/Pagination/index.vue b/src/components/Pagination/index.vue
index 53fbec2..2287c0c 100644
--- a/src/components/Pagination/index.vue
+++ b/src/components/Pagination/index.vue
@@ -2,10 +2,10 @@
<div :class="{ 'hidden': hidden }" class="pagination-container">
<el-pagination
:background="background"
- v-model:current-page="currentPage"
- v-model:page-size="pageSize"
+ v-model:currentPage="currentPage"
+ v-model:pageSize="pageSize"
:layout="layout"
- :page-sizes="pageSizes"
+ :page-size-options="pageSizes"
:pager-count="pagerCount"
:total="total"
@size-change="handleSizeChange"
@@ -15,6 +15,7 @@
</template>
<script setup>
+import { computed } from 'vue'
import { scrollTo } from '@/utils/scroll-to'
const props = defineProps({
diff --git a/src/views/demo/fakePage/index.vue b/src/views/demo/fakePage/index.vue
index 42cef72..3e2978f 100644
--- a/src/views/demo/fakePage/index.vue
+++ b/src/views/demo/fakePage/index.vue
@@ -50,7 +50,7 @@
background
layout="total, sizes, prev, pager, next, jumper"
:total="filteredList.length"
- :page-sizes="[5, 10, 20, 50]"
+ :page-size-options="[5, 10, 20, 50]"
:page-size="pager.pageSize"
:current-page="pager.pageNum"
@size-change="handleSizeChange"
diff --git a/src/views/monitorManagement/videoMonitor/index.vue b/src/views/monitorManagement/videoMonitor/index.vue
index b78c7f5..f947626 100644
--- a/src/views/monitorManagement/videoMonitor/index.vue
+++ b/src/views/monitorManagement/videoMonitor/index.vue
@@ -162,9 +162,9 @@
<!-- 鍒嗛〉 -->
<div class="pagination-container">
<el-pagination
- v-model:current-page="capturePage"
- v-model:page-size="capturePageSize"
- :page-sizes="[10, 20, 50, 100]"
+ v-model:currentPage="capturePage"
+ v-model:pageSize="capturePageSize"
+ :page-size-options="[10, 20, 50, 100]"
:total="filteredCaptures.length"
layout="total, sizes, prev, pager, next, jumper"
@size-change="handleSizeChange"
diff --git a/src/views/procurementManagement/advancedPriceManagement/index.vue b/src/views/procurementManagement/advancedPriceManagement/index.vue
index 597b39b..8c70ec7 100644
--- a/src/views/procurementManagement/advancedPriceManagement/index.vue
+++ b/src/views/procurementManagement/advancedPriceManagement/index.vue
@@ -127,9 +127,9 @@
<!-- 鍒嗛〉 -->
<div class="pagination-wrapper">
<el-pagination
- v-model:current-page="pagination.current"
- v-model:page-size="pagination.size"
- :page-sizes="[10, 20, 50, 100]"
+ v-model:currentPage="pagination.current"
+ v-model:pageSize="pagination.size"
+ :page-size-options="[10, 20, 50, 100]"
:total="total"
layout="total, sizes, prev, pager, next, jumper"
@size-change="handleSizeChange"
diff --git a/src/views/procurementManagement/procurementPlan/index.vue b/src/views/procurementManagement/procurementPlan/index.vue
index 14424cc..beea31b 100644
--- a/src/views/procurementManagement/procurementPlan/index.vue
+++ b/src/views/procurementManagement/procurementPlan/index.vue
@@ -76,9 +76,9 @@
<!-- 鍒嗛〉 -->
<div class="pagination-container">
<el-pagination
- v-model:current-page="pagination.current"
- v-model:page-size="pagination.size"
- :page-sizes="[10, 20, 50, 100]"
+ v-model:currentPage="pagination.current"
+ v-model:pageSize="pagination.size"
+ :page-size-options="[10, 20, 50, 100]"
:total="total"
layout="total, sizes, prev, pager, next, jumper"
@size-change="handleSizeChange"
diff --git a/src/views/productionManagement/operationScheduling/index.vue b/src/views/productionManagement/operationScheduling/index.vue
index 28d8cbd..0effff4 100644
--- a/src/views/productionManagement/operationScheduling/index.vue
+++ b/src/views/productionManagement/operationScheduling/index.vue
@@ -94,41 +94,18 @@
{
label: "娲惧伐鏃ユ湡",
prop: "schedulingDate",
- width: 120,
},
{
label: "娲惧伐浜�",
prop: "schedulingUserName",
},
{
- label: "鍚堝悓鍙�",
- prop: "salesContractNo",
- width: 200,
- },
- {
- label: "瀹㈡埛鍚堝悓鍙�",
- prop: "customerContractNo",
- width: 200,
- },
- {
- label: "瀹㈡埛鍚嶇О",
- prop: "customerName",
- width: 200,
- },
- {
- label: "椤圭洰鍚嶇О",
- prop: "projectName",
- width:300
- },
- {
label: "浜у搧澶х被",
prop: "productCategory",
- width: 150,
},
{
label: "瑙勬牸鍨嬪彿",
prop: "specificationModel",
- width: 150,
},
{
label: "鍗曚綅",
diff --git a/src/views/productionManagement/productionCosting/index.vue b/src/views/productionManagement/productionCosting/index.vue
index 76e7414..6014d00 100644
--- a/src/views/productionManagement/productionCosting/index.vue
+++ b/src/views/productionManagement/productionCosting/index.vue
@@ -57,26 +57,6 @@
width: 90,
},
{
- label: "鍚堝悓鍙�",
- prop: "salesContractNo",
- width: 220,
- },
- {
- label: "瀹㈡埛鍚堝悓鍙�",
- prop: "customerContractNo",
- width: 250,
- },
- {
- label: "瀹㈡埛鍚嶇О",
- prop: "customerName",
- width: 250,
- },
- {
- label: "椤圭洰鍚嶇О",
- prop: "projectName",
- width:300
- },
- {
label: "浜у搧澶х被",
prop: "productCategory",
width: 160,
diff --git a/src/views/productionManagement/productionDispatching/index.vue b/src/views/productionManagement/productionDispatching/index.vue
index 527880f..b7052c7 100644
--- a/src/views/productionManagement/productionDispatching/index.vue
+++ b/src/views/productionManagement/productionDispatching/index.vue
@@ -66,34 +66,12 @@
const { searchForm } = toRefs(data);
const tableColumn = ref([
{
- label: "鍚堝悓鍙�",
- prop: "salesContractNo",
- width: 220,
- },
- {
- label: "瀹㈡埛鍚堝悓鍙�",
- prop: "customerContractNo",
- width: 250,
- },
- {
- label: "瀹㈡埛鍚嶇О",
- prop: "customerName",
- width: 250,
- },
- {
- label: "椤圭洰鍚嶇О",
- prop: "projectName",
- width:300
- },
- {
label: "浜у搧澶х被",
prop: "productCategory",
- width: 160,
},
{
label: "瑙勬牸鍨嬪彿",
prop: "specificationModel",
- width: 220,
},
{
label: "鍗曚綅",
@@ -103,7 +81,6 @@
{
label: "褰曞叆鏃ユ湡",
prop: "entryDate",
- width: 120,
},
{
label: "鏁伴噺",
@@ -112,12 +89,10 @@
{
label: "鎺掍骇鏁伴噺",
prop: "schedulingNum",
- width: 100,
},
{
label: "寰呮帓鏁伴噺",
prop: "pendingQuantity",
- width: 100,
},
]);
const tableData = ref([]);
diff --git a/src/views/productionManagement/productionOrder/index.vue b/src/views/productionManagement/productionOrder/index.vue
index 9928d46..6a8d627 100644
--- a/src/views/productionManagement/productionOrder/index.vue
+++ b/src/views/productionManagement/productionOrder/index.vue
@@ -2,32 +2,26 @@
<div class="app-container">
<div class="search_form">
<div>
- <span class="search_title">瀹㈡埛鍚嶇О锛�</span>
- <el-input
- v-model="searchForm.customerName"
- style="width: 240px"
- placeholder="璇疯緭鍏�"
- @change="handleQuery"
+ <span class="search_title">浜у搧澶х被锛�</span>
+ <el-tree-select
+ v-model="searchForm.productCategory"
+ :data="productOptions"
+ placeholder="璇烽�夋嫨"
clearable
- prefix-icon="Search"
- />
- <span class="search_title ml10">椤圭洰鍚嶇О锛�</span>
- <el-input
- v-model="searchForm.projectName"
+ check-strictly
+ :render-after-expand="false"
style="width: 240px"
- placeholder="璇疯緭鍏�"
@change="handleQuery"
- clearable
- prefix-icon="Search"
/>
<span class="search_title ml10">褰曞叆鏃ユ湡锛�</span>
- <el-date-picker v-model="searchForm.entryDate" value-format="YYYY-MM-DD" format="YYYY-MM-DD" type="daterange"
+ <el-date-picker v-model="searchForm.registerDate" value-format="YYYY-MM-DD" format="YYYY-MM-DD" type="daterange"
placeholder="璇烽�夋嫨" clearable @change="changeDaterange" />
<el-button type="primary" @click="handleQuery" style="margin-left: 10px"
>鎼滅储</el-button
>
</div>
<div>
+ <el-button type="primary" @click="openDialog('create')">鏂板璁㈠崟</el-button>
<el-button @click="handleOut">瀵煎嚭</el-button>
</div>
</div>
@@ -39,116 +33,356 @@
:page="page"
:tableLoading="tableLoading"
@pagination="pagination"
- ></PIMTable>
+ >
+ <template #action="{ row }">
+ <el-button type="primary" link @click="handleEdit(row)">缂栬緫</el-button>
+ <el-button type="danger" link @click="handleDelete(row)">鍒犻櫎</el-button>
+ </template>
+ </PIMTable>
</div>
+ <el-dialog v-model="dialogVisible" :title="dialogTitle" width="40%" @close="closeDialog">
+ <el-form ref="formRef" :model="form" :rules="formRules" label-width="100px">
+ <el-form-item label="褰曞叆鏃ユ湡" prop="registerDate">
+ <el-date-picker v-model="form.registerDate" type="date" value-format="YYYY-MM-DD" format="YYYY-MM-DD" placeholder="璇烽�夋嫨褰曞叆鏃ユ湡" style="width: 100%"/>
+ </el-form-item>
+ <el-form-item label="浜у搧澶х被" prop="productCategory">
+ <el-tree-select
+ v-model="form.productCategory"
+ :data="productOptions"
+ placeholder="璇烽�夋嫨浜у搧澶х被"
+ clearable
+ check-strictly
+ :render-after-expand="false"
+ style="width: 100%"
+ @change="handleCategoryChange"
+ />
+ </el-form-item>
+ <el-form-item label="瑙勬牸鍨嬪彿" prop="productModelId">
+ <el-select v-model="form.productModelId" placeholder="璇烽�夋嫨瑙勬牸鍨嬪彿" style="width: 100%" @change="handleModelChange">
+ <el-option v-for="item in modelOptions" :key="item.id" :label="item.model" :value="item.id"/>
+ </el-select>
+ </el-form-item>
+ <el-form-item label="鍗曚綅" prop="unit">
+ <el-input v-model="form.unit" placeholder="鑷姩甯﹀嚭" disabled/>
+ </el-form-item>
+ <el-form-item label="鏁伴噺" prop="quantity">
+ <el-input-number v-model="form.quantity" :min="0" :step="0.1" style="width: 100%"/>
+ </el-form-item>
+ </el-form>
+ <template #footer>
+ <div class="dialog-footer">
+ <el-button type="primary" @click="submitForm">纭</el-button>
+ <el-button @click="closeDialog">鍙栨秷</el-button>
+ </div>
+ </template>
+ </el-dialog>
</div>
</template>
<script setup>
-import {onMounted, ref} from "vue";
+import {onMounted, ref, reactive, toRefs, getCurrentInstance} from "vue";
import { ElMessageBox } from "element-plus";
import dayjs from "dayjs";
-import {schedulingListPage} from "@/api/productionManagement/productionOrder.js";
+import {schedulingListPage, addProductionOrder, updateProductionOrder, deleteProductionOrder} from "@/api/productionManagement/productionOrder.js";
+import {productTreeList, modelList} from "@/api/basicData/product.js";
const { proxy } = getCurrentInstance();
const tableColumn = ref([
{
label: "褰曞叆鏃ユ湡",
- prop: "entryDate",
+ prop: "registerDate",
width: 120,
},
{
- label: "鍚堝悓鍙�",
- prop: "salesContractNo",
- width: 220,
- },
- {
- label: "瀹㈡埛鍚堝悓鍙�",
- prop: "customerContractNo",
- width: 250,
- },
- {
- label: "瀹㈡埛鍚嶇О",
- prop: "customerName",
- width: 250,
- },
- {
- label: "椤圭洰鍚嶇О",
- prop: "projectName",
- width:300
- },
- {
- label: "浠樻鐘舵��",
- prop: "status",
- dataType: "tag",
- formatType: (params) => {
- if (params == '鏈畬鎴�') {
- return "danger";
- } else if (params == '宸插畬鎴�') {
- return "success";
- } else {
- return null;
- }
- },
+ label: "鐢熶骇璁㈠崟鍙�",
+ prop: "orderNo",
},
{
label: "浜у搧澶х被",
prop: "productCategory",
- width: 160,
},
{
label: "瑙勬牸鍨嬪彿",
prop: "specificationModel",
- width: 220,
},
{
label: "鍗曚綅",
prop: "unit",
- width:90
},
{
label: "鏁伴噺",
prop: "quantity",
},
+ // {
+ // label: "鎺掍骇鏁伴噺",
+ // prop: "schedulingNum",
+ // width: 100,
+ // },
+ // {
+ // label: "瀹屽伐鏁伴噺",
+ // prop: "successNum",
+ // width: 100,
+ // },
{
- label: "鎺掍骇鏁伴噺",
- prop: "schedulingNum",
- width: 100,
- },
- {
- label: "瀹屽伐鏁伴噺",
- prop: "successNum",
- width: 100,
- },
+ label: "鎿嶄綔",
+ prop: "action",
+ width: 120,
+ fixed: "right",
+ dataType: "slot",
+ align: "center",
+ slot: "action"
+ }
]);
const tableData = ref([]);
const tableLoading = ref(false);
-const page = reactive({
+const page = ref({
current: 1,
size: 100,
total: 0,
});
+const dialogVisible = ref(false);
+const dialogTitle = ref("");
+const dialogMode = ref(""); // 'create' 鎴� 'edit'
+const formRef = ref();
+const productOptions = ref([]);
+const modelOptions = ref([]);
+const form = reactive({
+ id: null,
+ registerDate: dayjs().format("YYYY-MM-DD"),
+ productCategory: "",
+ productCategoryName: "",
+ productModelId: "",
+ specificationModel: "",
+ unit: "",
+ quantity: null,
+});
+const formRules = {
+ registerDate: [{ required: true, message: "璇烽�夋嫨褰曞叆鏃ユ湡", trigger: "change" }],
+ productCategory: [{ required: true, message: "璇烽�夋嫨浜у搧澶х被", trigger: "change" }],
+ productModelId: [{ required: true, message: "璇烽�夋嫨瑙勬牸鍨嬪彿", trigger: "change" }],
+ quantity: [{ required: true, message: "璇疯緭鍏ユ暟閲�", trigger: "blur" }],
+};
const data = reactive({
searchForm: {
- customerName: "",
- projectName: "",
- entryDate: null, // 褰曞叆鏃ユ湡
+ productCategory: "",
+ registerDate: null, // 褰曞叆鏃ユ湡
entryDateStart: undefined,
entryDateEnd: undefined,
},
});
const { searchForm } = toRefs(data);
+const openDialog = (mode, row = null) => {
+ dialogMode.value = mode;
+ if (mode === 'create') {
+ dialogTitle.value = "鏂板鐢熶骇璁㈠崟";
+ resetForm();
+ } else if (mode === 'edit') {
+ dialogTitle.value = "缂栬緫鐢熶骇璁㈠崟";
+ resetForm();
+
+ console.log('缂栬緫鏁版嵁:', row);
+
+ // 濉厖缂栬緫鏁版嵁
+ form.id = row.id;
+ form.registerDate = row.registerDate;
+ form.productCategoryName = row.productCategory;
+ form.specificationModel = row.specificationModel;
+ form.unit = row.unit;
+ form.quantity = row.quantity;
+
+ // 鍏堝姞杞戒骇鍝侀�夐」锛岀劧鍚庢牴鎹悕绉版煡鎵惧搴旂殑ID
+ if (productOptions.value.length === 0) {
+ getProductOptions().then(() => {
+ findAndSetProductCategory(row.productCategory);
+ });
+ } else {
+ findAndSetProductCategory(row.productCategory);
+ }
+ }
+
+ dialogVisible.value = true;
+ if (productOptions.value.length === 0) {
+ getProductOptions();
+ }
+};
+
+const closeDialog = () => {
+ dialogVisible.value = false;
+};
+
+const resetForm = () => {
+ form.id = null;
+ form.registerDate = dayjs().format("YYYY-MM-DD");
+ form.productCategory = "";
+ form.productCategoryName = "";
+ form.productModelId = "";
+ form.specificationModel = "";
+ form.unit = "";
+ form.quantity = null;
+ modelOptions.value = [];
+};
+
+const handleCategoryChange = (value) => {
+ form.productCategory = value;
+ form.productCategoryName = findNodeById(productOptions.value, value) || "";
+ form.productModelId = "";
+ form.specificationModel = "";
+ form.unit = "";
+ modelOptions.value = [];
+ if (value) {
+ getModels(value);
+ }
+};
+
+const handleModelChange = (value) => {
+ form.productModelId = value;
+ const selected = modelOptions.value.find(item => item.id === value);
+ if (selected) {
+ form.specificationModel = selected.model;
+ form.unit = selected.unit || "";
+ } else {
+ form.specificationModel = "";
+ form.unit = "";
+ }
+};
+
+const submitForm = () => {
+ formRef.value?.validate(async (valid) => {
+ if (!valid) return;
+ if (!form.unit) {
+ proxy.$modal.msgWarning("璇峰厛閫夋嫨瑙勬牸鍨嬪彿浠ュ甫鍑哄崟浣�");
+ return;
+ }
+ try {
+ const payload = {
+ registerDate: form.registerDate,
+ productCategory: form.productCategoryName,
+ specificationModel: form.specificationModel,
+ unit: form.unit,
+ quantity: form.quantity,
+ };
+
+ if (dialogMode.value === 'create') {
+ await addProductionOrder(payload);
+ proxy.$modal.msgSuccess("鏂板鎴愬姛");
+ } else if (dialogMode.value === 'edit') {
+ payload.id = form.id;
+ await updateProductionOrder(payload);
+ proxy.$modal.msgSuccess("缂栬緫鎴愬姛");
+ }
+
+ closeDialog();
+ getList();
+ } catch (err) {
+ console.error(`${dialogMode.value === 'create' ? '鏂板' : '缂栬緫'}澶辫触`, err);
+ proxy.$modal.msgError(`${dialogMode.value === 'create' ? '鏂板' : '缂栬緫'}澶辫触锛岃閲嶈瘯`);
+ }
+ });
+};
+
+// 缂栬緫鏂规硶
+const handleEdit = (row) => {
+ openDialog('edit', row);
+};
+
+// 鍒犻櫎鏂规硶
+const handleDelete = (row) => {
+ proxy.$modal.confirm(`纭畾瑕佸垹闄ょ敓浜ц鍗�"${row.orderNo}"鍚楋紵`, "鍒犻櫎纭", {
+ confirmButtonText: "纭畾",
+ cancelButtonText: "鍙栨秷",
+ type: "warning",
+ }).then(async () => {
+ try {
+ await deleteProductionOrder([row.id]);
+ proxy.$modal.msgSuccess("鍒犻櫎鎴愬姛");
+ getList(); // 鍒锋柊鍒楄〃
+ } catch (err) {
+ console.error("鍒犻櫎澶辫触", err);
+ proxy.$modal.msgError("鍒犻櫎澶辫触锛岃閲嶈瘯");
+ }
+ }).catch(() => {
+ proxy.$modal.msg("宸插彇娑堝垹闄�");
+ });
+};
+
+const getProductOptions = () => {
+ return productTreeList().then((res) => {
+ productOptions.value = convertIdToValue(res || []);
+ });
+};
+
+const getModels = (value) => {
+ return modelList({ id: value }).then((res) => {
+ modelOptions.value = res || [];
+ });
+};
+
+const convertIdToValue = (data) => {
+ return data.map((item) => {
+ const { id, children, ...rest } = item;
+ const newItem = {
+ ...rest,
+ value: id,
+ };
+ if (children && children.length > 0) {
+ newItem.children = convertIdToValue(children);
+ }
+ return newItem;
+ });
+};
+
+const findNodeById = (nodes, value) => {
+ for (let i = 0; i < nodes.length; i++) {
+ if (nodes[i].value === value) {
+ return nodes[i].label;
+ }
+ if (nodes[i].children && nodes[i].children.length > 0) {
+ const label = findNodeById(nodes[i].children, value);
+ if (label) return label;
+ }
+ }
+ return null;
+};
+
+const findNodeByLabel = (nodes, label) => {
+ for (let i = 0; i < nodes.length; i++) {
+ if (nodes[i].label === label) {
+ return nodes[i].value;
+ }
+ if (nodes[i].children && nodes[i].children.length > 0) {
+ const value = findNodeByLabel(nodes[i].children, label);
+ if (value) return value;
+ }
+ }
+ return null;
+};
+
+const findAndSetProductCategory = (categoryName) => {
+ const categoryId = findNodeByLabel(productOptions.value, categoryName);
+ if (categoryId) {
+ form.productCategory = categoryId;
+ // 鍔犺浇瀵瑰簲鐨勮鏍煎瀷鍙烽�夐」
+ getModels(categoryId).then(() => {
+ // 鏍规嵁瑙勬牸鍨嬪彿鍚嶇О鏌ユ壘瀵瑰簲鐨処D
+ const modelItem = modelOptions.value.find(item => item.model === form.specificationModel);
+ if (modelItem) {
+ form.productModelId = modelItem.id;
+ }
+ });
+ }
+};
+
// 鏌ヨ鍒楄〃
/** 鎼滅储鎸夐挳鎿嶄綔 */
const handleQuery = () => {
- page.current = 1;
+ page.value.current = 1;
getList();
};
const pagination = (obj) => {
- page.current = obj.page;
- page.size = obj.limit;
+ page.value.current = obj.page;
+ page.value.size = obj.limit;
getList();
};
const changeDaterange = (value) => {
@@ -164,12 +398,26 @@
const getList = () => {
tableLoading.value = true;
// 鏋勯�犱竴涓柊鐨勫璞★紝涓嶅寘鍚玡ntryDate瀛楁
- const params = { ...searchForm.value, ...page };
- params.entryDate = undefined
+ const params = { ...searchForm.value, ...page.value };
+ params.registerDate = undefined
+ if (params.productCategory) {
+ // 濡傛灉鏄璞$被鍨嬶紝鑾峰彇鍏秎abel锛堝悕绉帮級鑰屼笉鏄痸alue锛圛D锛�
+ if (typeof params.productCategory === "object") {
+ params.productCategory = findNodeById(productOptions.value, params.productCategory) || params.productCategory;
+ }
+ // 濡傛灉鏄疘D锛岃浆鎹负鍚嶇О
+ else if (typeof params.productCategory === "string" || typeof params.productCategory === "number") {
+ const categoryName = findNodeById(productOptions.value, params.productCategory);
+ if (categoryName) {
+ params.productCategory = categoryName;
+ }
+ }
+ }
schedulingListPage(params).then((res) => {
+ console.log('params---', res)
tableLoading.value = false;
- tableData.value = res.data.records;
- page.total = res.data.total;
+ tableData.value = res.data.data.records;
+ page.value.total = res.data.data.total;
}).catch(() => {
tableLoading.value = false;
})
@@ -192,6 +440,7 @@
onMounted(() => {
getList();
+ getProductOptions();
});
</script>
diff --git a/src/views/productionManagement/productionReporting/index.vue b/src/views/productionManagement/productionReporting/index.vue
index f9e0435..e26a1dc 100644
--- a/src/views/productionManagement/productionReporting/index.vue
+++ b/src/views/productionManagement/productionReporting/index.vue
@@ -197,26 +197,6 @@
prop: "schedulingUserName",
},
{
- label: "鍚堝悓鍙�",
- prop: "salesContractNo",
- width: 200,
- },
- {
- label: "瀹㈡埛鍚堝悓鍙�",
- prop: "customerContractNo",
- width: 200,
- },
- {
- label: "瀹㈡埛鍚嶇О",
- prop: "customerName",
- width: 200,
- },
- {
- label: "椤圭洰鍚嶇О",
- prop: "projectName",
- width:300
- },
- {
label: "浜у搧澶х被",
prop: "productCategory",
width: 150,
diff --git a/src/views/reportAnalysis/reportManagement.vue b/src/views/reportAnalysis/reportManagement.vue
index 3c87550..516d8b8 100644
--- a/src/views/reportAnalysis/reportManagement.vue
+++ b/src/views/reportAnalysis/reportManagement.vue
@@ -200,9 +200,9 @@
<div class="pagination-container">
<el-pagination
- v-model:current-page="pagination.currentPage"
- v-model:page-size="pagination.pageSize"
- :page-sizes="[10, 20, 50, 100]"
+ v-model:currentPage="pagination.currentPage"
+ v-model:pageSize="pagination.pageSize"
+ :page-size-options="[10, 20, 50, 100]"
:total="pagination.total"
layout="total, sizes, prev, pager, next, jumper"
@size-change="handleSizeChange"
diff --git a/src/views/reportAnalysis/reportManagement/index.vue b/src/views/reportAnalysis/reportManagement/index.vue
index 2adfb54..5aa4cd9 100644
--- a/src/views/reportAnalysis/reportManagement/index.vue
+++ b/src/views/reportAnalysis/reportManagement/index.vue
@@ -194,9 +194,9 @@
<div class="pagination-container">
<el-pagination
- v-model:current-page="pagination.currentPage"
- v-model:page-size="pagination.pageSize"
- :page-sizes="[10, 20, 50, 100]"
+ v-model:currentPage="pagination.currentPage"
+ v-model:pageSize="pagination.pageSize"
+ :page-size-options="[10, 20, 50, 100]"
:total="pagination.total"
layout="total, sizes, prev, pager, next, jumper"
@size-change="handleSizeChange"
--
Gitblit v1.9.3