From 0f4dc4ea8a7de1ffdf34a640c79c29d55b79321c Mon Sep 17 00:00:00 2001
From: 张诺 <zhang_12370@163.com>
Date: 星期五, 13 六月 2025 17:53:27 +0800
Subject: [PATCH] 添加生产管理接口及优化表格字段
---
src/views/production/components/ProductionDetailsTable.vue | 28 ++--
src/api/production/index.js | 38 ++++++
src/views/production/index.vue | 86 ++++----------
src/views/production/components/ProductionDialog.vue | 192 +++++---------------------------
4 files changed, 106 insertions(+), 238 deletions(-)
diff --git a/src/api/production/index.js b/src/api/production/index.js
index f0ad4e5..9cb0823 100644
--- a/src/api/production/index.js
+++ b/src/api/production/index.js
@@ -10,4 +10,42 @@
})
}
+// /productionMaster/list
+// 涓昏〃鍒楄〃
+export function getProductionMasterList(query) {
+ return request({
+ url: '/productionMaster/list',
+ method: 'get',
+ params: query
+ })
+}
+
+// /production/list
+// 鐢熶骇鍔犲伐涓存椂鏁版嵁
+export function getProductionList(query) {
+ return request({
+ url: '/production/list',
+ method: 'get',
+ params: query
+ })
+}
+
+// /productionMaster/addOrEditPM
+// 鏂板鎴栦慨鏀逛富琛�
+export function addOrEditPM(data) {
+ return request({
+ url: '/productionMaster/addOrEditPM',
+ method: 'post',
+ data: data
+ })
+}
+
+
+// 鏌ヨ鐢熶骇鍔犲伐-姝e紡搴撶叅绉嶅垪琛�
+export function getOfficialById(id) {
+ return request({
+ url: '/officialInventory/official/' + id,
+ method: 'get'
+ })
+}
diff --git a/src/views/production/components/ProductionDetailsTable.vue b/src/views/production/components/ProductionDetailsTable.vue
index e8adfc4..1d1ca7a 100644
--- a/src/views/production/components/ProductionDetailsTable.vue
+++ b/src/views/production/components/ProductionDetailsTable.vue
@@ -1,7 +1,7 @@
<template>
<el-table :data="tableData" :border="border" style="width: 100%">
- <el-table-column label="鐓ょ" min-width="120">
- <template #default="{ row, $index }">
+ <el-table-column label="鐓ょ" min-width="120" >
+ <template #default="{ row, $index }" >
<el-input
v-model="row.coalType"
placeholder="璇疯緭鍏ョ叅绉�"
@@ -9,17 +9,6 @@
/>
</template>
</el-table-column>
-
- <el-table-column label="鐑��" min-width="120">
- <template #default="{ row, $index }">
- <el-input
- v-model="row.calorificValue"
- placeholder="璇疯緭鍏ョ儹鍊�"
- @input="handleInput('calorificValue', $index, $event)"
- />
- </template>
- </el-table-column>
-
<el-table-column label="鐢熶骇鏁伴噺" min-width="120">
<template #default="{ row, $index }">
<el-input
@@ -49,10 +38,10 @@
<el-table-column label="鑳借�楁垚鏈�" min-width="120">
<template #default="{ row, $index }">
<el-input
- v-model="row.energyCost"
+ v-model="row.energyConsumptionCost"
placeholder="璇疯緭鍏ヨ兘鑰楁垚鏈�"
type="number"
- @input="handleInput('energyCost', $index, $event)"
+ @input="handleInput('energyConsumptionCost', $index, $event)"
>
<template #suffix>
<i style="font-style:normal;">鍏�</i>
@@ -106,6 +95,15 @@
</el-input>
</template>
</el-table-column>
+ <el-table-column label="鐢熶骇浜�" min-width="120">
+ <template #default="{ row, $index }">
+ <el-input
+ v-model="row.producer"
+ placeholder="鐢熶骇浜�"
+ @input="handleInput('producer', $index, $event)"
+ />
+ </template>
+ </el-table-column>
<el-table-column v-if="showOperations" label="鎿嶄綔" width="120" fixed="right">
<template #default="{ $index }">
<el-button
diff --git a/src/views/production/components/ProductionDialog.vue b/src/views/production/components/ProductionDialog.vue
index 226b70e..b75a3e2 100644
--- a/src/views/production/components/ProductionDialog.vue
+++ b/src/views/production/components/ProductionDialog.vue
@@ -125,6 +125,16 @@
const columns = [
{ label: "渚涘簲鍟嗗悕绉�", prop: "supplierName" },
{ label: "鐓ょ", prop: "coal" },
+ { label: "鍗曚环(涓嶅惈绋�)", prop: "priceExcludingTax" },
+ { label: "搴撳瓨鏁伴噺", prop: "inventoryQuantity" },
+ {
+ label: "浣跨敤鏁伴噺",
+ prop: "used",
+ editable: true,
+ width: 120,
+ editType: "number",
+ },
+
];
const detailsTableData = ref([
@@ -133,14 +143,12 @@
currentRow.value = row;
};
const formalDatabaseColumns = ref([
- { prop: "supplierName", label: "渚涘簲鍟嗗悕绉�", width: 150 },
- { prop: "coal", label: "鐓ょ绫诲瀷", width: 120 },
- { prop: "unit", label: "鍗曚綅", width: 100 },
- { prop: "inventoryQuantity", label: "搴撳瓨鏁伴噺", width: 100 },
- { prop: "priceIncludingTax", label: "鍗曚环锛堝惈绋庯級", width: 120 },
- { prop: "totalPriceIncludingTax", label: "鎬讳环锛堝惈绋庯級", width: 120 },
- { prop: "priceExcludingTax", label: "鍗曚环(涓嶅惈绋�)", width: 120 },
- { prop: "totalPriceExcludingTax", label: "鎬讳环(涓嶅惈绋�)", width: 120 },
+ { prop: "supplierName", label: "渚涘簲鍟嗗悕绉�", minwidth: 150 },
+ { prop: "coal", label: "鐓ょ绫诲瀷", minwidth: 60 },
+ { prop: "inventoryQuantity", label: "搴撳瓨鏁伴噺", minwidth: 80 },
+ { prop: "unit", label: "鍗曚綅", minwidth: 100 },
+ { prop: "priceExcludingTax", label: "鍗曚环锛堜笉鍚◣锛�", minwidth: 80 },
+ { prop: "createTime", label: "鐧昏鏃ユ湡", minwidth: 400 },
]);
// 琛ㄥ崟鏁版嵁
const formData = reactive({
@@ -169,156 +177,9 @@
const formalDatabaseData = ref([]);
const formalDatabaseSelectedData = ref([]);
formalDatabaseData.value = [
- {
- id: 1,
- name: "渚涘簲鍟咥",
- type: "鍔ㄥ姏鐓�",
- unit: "鍚�",
- number: 120,
- money: 500,
- money1: 200,
- money2: 200,
- money3: 300,
- money4: "楂樹綅",
- createUser: "admin",
- createTime: "2025-06-01",
- },
- {
- id: 2,
- name: "渚涘簲鍟咥",
- type: "鍔ㄥ姏鐓�",
- unit: "鍚�",
- number: 100,
- money: 600,
- money1: 300,
- money2: 300,
- money3: 300,
- money4: "浣庝綅",
- createUser: "admin",
- createTime: "2025-06-01",
- },
- {
- id: 3,
- name: "渚涘簲鍟咮",
- type: "鐒︾叅",
- unit: "鍚�",
- number: 300,
- money: 789,
- money1: 400,
- money2: 400,
- money3: 400,
- money4: "楂樹綅",
- createUser: "admin",
- createTime: "2025-06-01",
- },
- {
- id: 4,
- name: "渚涘簲鍟咮",
- type: "鐒︾叅",
- unit: "鍚�",
- number: 256,
- money: 800,
- money1: 420,
- money2: 420,
- money3: 420,
- money4: "浣庝綅",
- createUser: "admin",
- createTime: "2025-06-01",
- },
- {
- id: 5,
- name: "渚涘簲鍟咰",
- type: "鏃犵儫鐓�",
- unit: "鍚�",
- number: 256,
- money: 700,
- money1: 300,
- money2: 300,
- money3: 300,
- money4: "楂樹綅",
- createUser: "admin",
- createTime: "2025-06-01",
- },
- {
- id: 6,
- name: "渚涘簲鍟咥",
- type: "鍔ㄥ姏鐓�",
- unit: "鍚�",
- number: 120,
- money: 500,
- money1: 200,
- money2: 200,
- money3: 300,
- money4: "楂樹綅",
- createUser: "admin",
- createTime: "2025-06-01",
- },
- {
- id: 7,
- name: "渚涘簲鍟咥",
- type: "鍔ㄥ姏鐓�",
- unit: "鍚�",
- number: 100,
- money: 600,
- money1: 300,
- money2: 300,
- money3: 300,
- money4: "浣庝綅",
- createUser: "admin",
- createTime: "2025-06-01",
- },
- {
- id: 8,
- name: "渚涘簲鍟咮",
- type: "鐒︾叅",
- unit: "鍚�",
- number: 300,
- money: 789,
- money1: 400,
- money2: 400,
- money3: 400,
- money4: "楂樹綅",
- createUser: "admin",
- createTime: "2025-06-01",
- },
- {
- id: 9,
- name: "渚涘簲鍟咮",
- type: "鐒︾叅",
- unit: "鍚�",
- number: 256,
- money: 800,
- money1: 420,
- money2: 420,
- money3: 420,
- money4: "浣庝綅",
- createUser: "admin",
- createTime: "2025-06-01",
- },
- {
- id: 10,
- name: "渚涘簲鍟咰",
- type: "鏃犵儫鐓�",
- unit: "鍚�",
- number: 256,
- money: 700,
- money1: 300,
- money2: 300,
- money3: 300,
- money4: "楂樹綅",
- createUser: "admin",
- createTime: "2025-06-01",
- },
];
-
-// 琛ㄥ崟楠岃瘉瑙勫垯
-const rules = {
- category: [{ required: true, message: "璇烽�夋嫨鐓ょ", trigger: "change" }],
-};
-
// 鍒濆鍖�
const Initialization = () => {
- console.log("鍒濆鍖栨暟鎹�");
tableData.value = [];
};
defineExpose({
@@ -338,13 +199,14 @@
(row) => row.id === item.id
);
if (!existingItem) {
- tableData.value.push([item, {
- used: 0, // 娣诲姞榛樿鐨勪娇鐢ㄦ暟閲�
- }]);
+ tableData.value.push(
+ Object.assign({}, item, {
+ used: 0, // 鍒濆浣跨敤鏁伴噺涓�0
+ })
+ );
}
});
innerVisible.value = false;
- console.log("閫変腑鐨勬暟鎹�:", tableData.value);
};
const handleSelectionChange = (selection) => {
formalDatabaseSelectedData.value = selection;
@@ -358,7 +220,13 @@
// 鎻愪氦琛ㄥ崟
const handleSubmit = async () => {
+ console.log("鎻愪氦琛ㄥ崟鏁版嵁:", tableData.value);
console.log(detailsTableData.value);
+ let data = {
+ productionList: detailsTableData.value,
+ productionInventoryList: tableData.value,
+ };
+ console.log("鎻愪氦鏁版嵁", data);
// dialogVisible.value = false;
};
@@ -393,13 +261,13 @@
const addNewRow = () => {
detailsTableData.value.push({
coalType: "",
- calorificValue: "",
productionQuantity: "",
laborCost: "",
- energyCost: "",
+ energyConsumptionCost: "",
equipmentDepreciation: "",
purchasePrice: "",
- totalCost: "",
+ autoCalculate: "0.00",
+ producer:"",
});
};
diff --git a/src/views/production/index.vue b/src/views/production/index.vue
index 0e9b005..d298680 100644
--- a/src/views/production/index.vue
+++ b/src/views/production/index.vue
@@ -1,8 +1,8 @@
<template>
<div class="production-container">
- <el-form :inline="true" :model="searchForm" class="search-form" style="width: 100%">
+ <el-form :inline="true" :model="queryParams" class="search-form" style="width: 100%">
<el-form-item label="鎼滅储">
- <el-input v-model="searchForm.searchAll" placeholder="璇疯緭鍏ュ叧閿瘝" clearable />
+ <el-input v-model="queryParams.searchAll" placeholder="璇疯緭鍏ュ叧閿瘝" clearable />
</el-form-item>
<el-form-item>
<el-button type="primary" @click="handleSearch">鏌ヨ</el-button>
@@ -15,8 +15,14 @@
<el-button type="info" :icon="Download">瀵煎嚭</el-button>
<ETable :loading="loading" :table-data="tableData" :columns="columns" @selection-change="handleSelectionChange"
@edit="handleEdit" @view-detail="handleViewDetail" :show-selection="true" :border="true" :maxHeight="480" />
- <Pagination v-model:currentPage="pagination.currentPage" v-model:pageSize="pagination.pageSize"
- :total="pagination.total" @current-change="handleCurrentChange" @size-change="handleSizeChange" />
+ <Pagination
+ :total="total"
+ :page="queryParams.current"
+ :limit="queryParams.size"
+ :show-total="true"
+ @pagination="handlePageChange"
+ :layout="'total, prev, pager, next, jumper'"
+ ></Pagination>
</el-card>
<ProductionDialog v-model:visible="dialogVisible" ref="childRef" :type="dialogType"
@success="handleDialogSuccess" />
@@ -30,6 +36,7 @@
import ProductionDialog from "./components/ProductionDialog.vue";
import ETable from "@/components/Table/ETable.vue";
import Pagination from "@/components/Pagination/index.vue";
+import { getProductionMasterList } from "@/api/production";
const childRef = ref(null);
const columns = [
{ prop: "category", label: "鐓ょ", minWidth: 150 },
@@ -46,21 +53,22 @@
];
// 鎼滅储琛ㄥ崟鏁版嵁
-const searchForm = reactive({
- searchAll:""
-});
// 琛ㄦ牸鏁版嵁
const tableData = ref([]);
const loading = ref(false);
+const total = ref(0);
-// 鍒嗛〉鏁版嵁
-const pagination = reactive({
- currentPage: 1,
- pageSize: 10,
- total: 0,
+const queryParams = reactive({
+ searchAll:"",
+ current: 1,
+ size: 10, // 鍥哄畾姣忛〉10鏉�
});
-
+const handlePageChange = ({ page }) => {
+ console.log("鍒嗛〉鍙樺寲:", { page });
+ queryParams.current = page;
+ getList();
+};
// 閫変腑鐨勮鏁版嵁
const selectedRows = ref([]);
@@ -77,51 +85,9 @@
const getList = async () => {
loading.value = true;
try {
- const params = {
- ...searchForm,
- pageNum: pagination.currentPage,
- pageSize: pagination.pageSize,
- };
- // const res = await getProductionList(params)
- // 鍋囨暟鎹�
- const res = {
- data: {
- list: [
- {
- sequence: 1,
- category: "鏃犵儫鐓�",
- unit: "鍚�",
- productionVolume: 100,
- laborCost: "300",
- materialCost: "200",
- equipmentCost: "100",
- totalCost: "600",
- totalPrice: "800",
- profit: "200",
- reviewer: "寮犱笁",
- date: "2023-10-01",
- },
- {
- sequence: 12,
- category: "鏃犵儫鐓�",
- unit: "鍚�",
- productionVolume: 100,
- laborCost: "3100",
- materialCost: "2020",
- equipmentCost: "1300",
- totalCost: "6030",
- totalPrice: "8300",
- profit: "2300",
- reviewer: "寮犱笁",
- date: "2025-10-02",
- },
- ],
- total: 2,
- },
- };
-
- tableData.value = res.data.list;
- pagination.total = res.data.total;
+ const res = await getProductionMasterList({...queryParams});
+ tableData.value = res.data.records || [];
+ total.value = res.data.total || 0;
} catch (error) {
ElMessage.error("鑾峰彇鏁版嵁澶辫触");
} finally {
@@ -142,8 +108,6 @@
// 閲嶇疆鎼滅储
const handleReset = () => {
- searchForm.keyword = "";
- searchForm.addUser = "";
handleSearch();
};
@@ -243,7 +207,7 @@
// 澶勭悊姣忛〉鏄剧ず鏁伴噺鍙樺寲
const handleSizeChange = (val) => {
- pagination.pageSize = val;
+ pagination.size = val;
getList();
};
--
Gitblit v1.9.3