From cec42fd188b00a2f8fe8f6902ccfc58381d2a481 Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期四, 04 十二月 2025 14:45:29 +0800
Subject: [PATCH] 1.润泰生物、安佑农牧-生产管控:生产派工需要新增派工产线及生产人
---
src/views/productionManagement/operationScheduling/components/formDia.vue | 35 +
src/views/basicData/product/index.vue | 44 +-
src/views/productionManagement/productionCosting/index.vue | 12
src/views/inventoryManagement/issueManagement/index.vue | 104 ++--
src/views/productionManagement/productionDispatching/components/formDia.vue | 73 ++
src/views/productionManagement/productionDispatching/index.vue | 62 +-
src/views/salesManagement/salesLedger/index.vue | 16
src/views/productionManagement/operationScheduling/index.vue | 20
src/views/productionManagement/LineManagement/index.vue | 412 +++++++++++++++++++
src/views/productionManagement/productionDispatching/components/autoDispatchDia.vue | 2
src/views/productionManagement/productionReporting/index.vue | 20
src/views/inventoryManagement/receiptManagement/index.vue | 108 ++--
src/api/lavorissce/issue.js | 45 ++
src/views/inventoryManagement/stockManagement/index.vue | 110 ++--
src/views/inventoryManagement/dispatchLog/index.vue | 134 +++---
src/views/productionManagement/productionReporting/components/formDia.vue | 4
16 files changed, 873 insertions(+), 328 deletions(-)
diff --git a/src/api/lavorissce/issue.js b/src/api/lavorissce/issue.js
new file mode 100644
index 0000000..bb4d34d
--- /dev/null
+++ b/src/api/lavorissce/issue.js
@@ -0,0 +1,45 @@
+import request from '@/utils/request'
+
+// 鑾峰彇浜х嚎鏍戝舰缁撴瀯
+export function getDeptPositionTree() {
+ return request({
+ url: '/productionLine/listTree',
+ method: 'get'
+ })
+}
+
+// 鏂板浜х嚎鎴栧伐搴�
+export function addDeptPosition(data) {
+ return request({
+ url: '/productionLine/add',
+ method: 'post',
+ data: data
+ })
+}
+
+// 淇敼浜х嚎鎴栧伐搴�
+export function updateDeptPosition(data) {
+ return request({
+ url: '/productionLine/update',
+ method: 'post',
+ data: data
+ })
+}
+
+// 鍒犻櫎浜х嚎鎴栧伐搴�
+export function deleteDeptPosition(id) {
+ return request({
+ url: '/productionLine/delete',
+ method: 'delete',
+ data: id
+ })
+}
+
+// 鏌ヨ宸ュ簭鍒楄〃锛堟牴鎹畃arentId锛�
+export function laborConfListPage(query) {
+ return request({
+ url: '/productionLine/pageList',
+ method: 'get',
+ params: query
+ })
+}
\ No newline at end of file
diff --git a/src/views/basicData/product/index.vue b/src/views/basicData/product/index.vue
index db5f096..a6e1e6a 100644
--- a/src/views/basicData/product/index.vue
+++ b/src/views/basicData/product/index.vue
@@ -165,24 +165,24 @@
</el-form-item>
</el-col>
</el-row>
- <el-row>
- <el-col :span="24">
- <el-form-item label="缁戝畾鏈哄櫒锛�" prop="speculativeTradingName">
- <el-select
- v-model="modelForm.speculativeTradingName"
- placeholder="璇烽�夋嫨缁戝畾鏈哄櫒"
- multiple
- clearable
- style="width: 100%"
- >
- <el-option label="鐐掓満1" value="鐐掓満1" />
- <el-option label="鐐掓満2" value="鐐掓満2" />
- <el-option label="鐐掓満3" value="鐐掓満3" />
- <el-option label="鐐掓満4" value="鐐掓満4" />
- </el-select>
- </el-form-item>
- </el-col>
- </el-row>
+<!-- <el-row>-->
+<!-- <el-col :span="24">-->
+<!-- <el-form-item label="缁戝畾鏈哄櫒锛�" prop="speculativeTradingName">-->
+<!-- <el-select-->
+<!-- v-model="modelForm.speculativeTradingName"-->
+<!-- placeholder="璇烽�夋嫨缁戝畾鏈哄櫒"-->
+<!-- multiple-->
+<!-- clearable-->
+<!-- style="width: 100%"-->
+<!-- >-->
+<!-- <el-option label="鐐掓満1" value="鐐掓満1" />-->
+<!-- <el-option label="鐐掓満2" value="鐐掓満2" />-->
+<!-- <el-option label="鐐掓満3" value="鐐掓満3" />-->
+<!-- <el-option label="鐐掓満4" value="鐐掓満4" />-->
+<!-- </el-select>-->
+<!-- </el-form-item>-->
+<!-- </el-col>-->
+<!-- </el-row>-->
</el-form>
<template #footer>
<div class="dialog-footer">
@@ -230,10 +230,10 @@
label: "鍗曚綅",
prop: "unit",
},
- {
- label: "缁戝畾鏈哄櫒",
- prop: "speculativeTradingName",
- },
+ // {
+ // label: "缁戝畾鏈哄櫒",
+ // prop: "speculativeTradingName",
+ // },
{
dataType: "action",
label: "鎿嶄綔",
diff --git a/src/views/inventoryManagement/dispatchLog/index.vue b/src/views/inventoryManagement/dispatchLog/index.vue
index 80e706b..d0ae409 100644
--- a/src/views/inventoryManagement/dispatchLog/index.vue
+++ b/src/views/inventoryManagement/dispatchLog/index.vue
@@ -1,7 +1,7 @@
<template>
<div class="app-container">
<el-tabs v-model="activeTab" @tab-change="handleTabChange">
- <el-tab-pane label="鐢熶骇鍑哄簱" name="production">
+ <el-tab-pane label="鎴愬搧鍑哄簱" name="production">
<div class="search_form">
<div>
<!-- <span class="search_title">瀹㈡埛鍚嶇О锛�</span>-->
@@ -137,74 +137,74 @@
</div>
</el-tab-pane>
- <el-tab-pane label="鑷畾涔夊嚭搴�" name="manual">
- <div class="search_form">
- <div>
-<!-- <span class="search_title">渚涘簲鍟嗗悕绉帮細</span>-->
-<!-- <el-input-->
-<!-- v-model="searchForm.supplierName"-->
-<!-- style="width: 240px"-->
-<!-- placeholder="璇疯緭鍏�"-->
-<!-- @change="handleQuery"-->
+<!-- <el-tab-pane label="鑷畾涔夊嚭搴�" name="manual">-->
+<!-- <div class="search_form">-->
+<!-- <div>-->
+<!--<!– <span class="search_title">渚涘簲鍟嗗悕绉帮細</span>–>-->
+<!--<!– <el-input–>-->
+<!--<!– v-model="searchForm.supplierName"–>-->
+<!--<!– style="width: 240px"–>-->
+<!--<!– placeholder="璇疯緭鍏�"–>-->
+<!--<!– @change="handleQuery"–>-->
+<!--<!– clearable–>-->
+<!--<!– prefix-icon="Search"–>-->
+<!--<!– />–>-->
+<!-- <span class="search_title ml10">鍑哄簱鏃ユ湡锛�</span>-->
+<!-- <el-date-picker-->
+<!-- v-model="searchForm.timeStr"-->
+<!-- type="date"-->
+<!-- placeholder="璇烽�夋嫨鏃ユ湡"-->
+<!-- value-format="YYYY-MM-DD"-->
+<!-- format="YYYY-MM-DD"-->
<!-- clearable-->
-<!-- prefix-icon="Search"-->
+<!-- @change="handleQuery"-->
<!-- />-->
- <span class="search_title ml10">鍑哄簱鏃ユ湡锛�</span>
- <el-date-picker
- v-model="searchForm.timeStr"
- type="date"
- placeholder="璇烽�夋嫨鏃ユ湡"
- value-format="YYYY-MM-DD"
- format="YYYY-MM-DD"
- clearable
- @change="handleQuery"
- />
- <el-button type="primary" @click="handleQuery" style="margin-left: 10px">鎼滅储</el-button>
- </div>
- <div>
- <el-button @click="handleOut">瀵煎嚭</el-button>
- <el-button type="danger" plain @click="handleDelete">鍒犻櫎</el-button>
- <el-button type="primary" plain @click="handlePrint">鎵撳嵃</el-button>
- </div>
- </div>
- <div class="table_list">
- <el-table
- :data="tableData"
- border
- v-loading="tableLoading"
- @selection-change="handleSelectionChange"
- :expand-row-keys="expandedRowKeys"
- :row-key="(row) => row.id"
- show-summary
- style="width: 100%"
- :summary-method="summarizeMainTable"
- height="calc(100vh - 18.5em)"
- >
- <el-table-column align="center" type="selection" width="55" />
- <el-table-column align="center" label="搴忓彿" type="index" width="60" />
- <el-table-column label="鍑哄簱鏃ユ湡" prop="createTime" show-overflow-tooltip />
- <!-- <el-table-column label="渚涘簲鍟嗗悕绉�" prop="supplierName" width="250" show-overflow-tooltip /> -->
- <el-table-column label="浜у搧澶х被" prop="productCategory" show-overflow-tooltip />
- <el-table-column label="瑙勬牸鍨嬪彿" prop="specificationModel" show-overflow-tooltip />
- <el-table-column label="鍗曚綅" prop="unit" show-overflow-tooltip />
- <el-table-column label="鐗╁搧绫诲瀷" prop="itemType" show-overflow-tooltip />
- <el-table-column label="鍑哄簱鏁伴噺" prop="inboundNum" show-overflow-tooltip />
-<!-- <el-table-column label="鍚◣鍗曚环(鍏�)" prop="taxInclusiveUnitPrice" width="100" show-overflow-tooltip />-->
-<!-- <el-table-column label="鍚◣鎬讳环(鍏�)" prop="taxInclusiveTotalPrice" width="100" show-overflow-tooltip />-->
-<!-- <el-table-column label="绋庣巼(%)" prop="taxRate" width="100" show-overflow-tooltip />-->
-<!-- <el-table-column label="涓嶅惈绋庢�讳环(鍏�)" prop="taxExclusiveTotalPrice" width="180" show-overflow-tooltip />-->
- <el-table-column label="鍑哄簱浜�" prop="createBy" show-overflow-tooltip />
- </el-table>
- <pagination
- v-show="total > 0"
- :total="total"
- layout="total, sizes, prev, pager, next, jumper"
- :page="page.current"
- :limit="page.size"
- @pagination="paginationChange"
- />
- </div>
- </el-tab-pane>
+<!-- <el-button type="primary" @click="handleQuery" style="margin-left: 10px">鎼滅储</el-button>-->
+<!-- </div>-->
+<!-- <div>-->
+<!-- <el-button @click="handleOut">瀵煎嚭</el-button>-->
+<!-- <el-button type="danger" plain @click="handleDelete">鍒犻櫎</el-button>-->
+<!-- <el-button type="primary" plain @click="handlePrint">鎵撳嵃</el-button>-->
+<!-- </div>-->
+<!-- </div>-->
+<!-- <div class="table_list">-->
+<!-- <el-table-->
+<!-- :data="tableData"-->
+<!-- border-->
+<!-- v-loading="tableLoading"-->
+<!-- @selection-change="handleSelectionChange"-->
+<!-- :expand-row-keys="expandedRowKeys"-->
+<!-- :row-key="(row) => row.id"-->
+<!-- show-summary-->
+<!-- style="width: 100%"-->
+<!-- :summary-method="summarizeMainTable"-->
+<!-- height="calc(100vh - 18.5em)"-->
+<!-- >-->
+<!-- <el-table-column align="center" type="selection" width="55" />-->
+<!-- <el-table-column align="center" label="搴忓彿" type="index" width="60" />-->
+<!-- <el-table-column label="鍑哄簱鏃ユ湡" prop="createTime" show-overflow-tooltip />-->
+<!-- <!– <el-table-column label="渚涘簲鍟嗗悕绉�" prop="supplierName" width="250" show-overflow-tooltip /> –>-->
+<!-- <el-table-column label="浜у搧澶х被" prop="productCategory" show-overflow-tooltip />-->
+<!-- <el-table-column label="瑙勬牸鍨嬪彿" prop="specificationModel" show-overflow-tooltip />-->
+<!-- <el-table-column label="鍗曚綅" prop="unit" show-overflow-tooltip />-->
+<!-- <el-table-column label="鐗╁搧绫诲瀷" prop="itemType" show-overflow-tooltip />-->
+<!-- <el-table-column label="鍑哄簱鏁伴噺" prop="inboundNum" show-overflow-tooltip />-->
+<!--<!– <el-table-column label="鍚◣鍗曚环(鍏�)" prop="taxInclusiveUnitPrice" width="100" show-overflow-tooltip />–>-->
+<!--<!– <el-table-column label="鍚◣鎬讳环(鍏�)" prop="taxInclusiveTotalPrice" width="100" show-overflow-tooltip />–>-->
+<!--<!– <el-table-column label="绋庣巼(%)" prop="taxRate" width="100" show-overflow-tooltip />–>-->
+<!--<!– <el-table-column label="涓嶅惈绋庢�讳环(鍏�)" prop="taxExclusiveTotalPrice" width="180" show-overflow-tooltip />–>-->
+<!-- <el-table-column label="鍑哄簱浜�" prop="createBy" show-overflow-tooltip />-->
+<!-- </el-table>-->
+<!-- <pagination-->
+<!-- v-show="total > 0"-->
+<!-- :total="total"-->
+<!-- layout="total, sizes, prev, pager, next, jumper"-->
+<!-- :page="page.current"-->
+<!-- :limit="page.size"-->
+<!-- @pagination="paginationChange"-->
+<!-- />-->
+<!-- </div>-->
+<!-- </el-tab-pane>-->
</el-tabs>
<!-- 鎵撳嵃棰勮寮圭獥 -->
diff --git a/src/views/inventoryManagement/issueManagement/index.vue b/src/views/inventoryManagement/issueManagement/index.vue
index d2b709c..e3d45fd 100644
--- a/src/views/inventoryManagement/issueManagement/index.vue
+++ b/src/views/inventoryManagement/issueManagement/index.vue
@@ -1,7 +1,7 @@
<template>
<div class="app-container">
<el-tabs v-model="activeTab" @tab-change="handleTabChange">
- <el-tab-pane label="鐢熶骇鍑哄簱" name="production">
+ <el-tab-pane label="鎴愬搧鍑哄簱" name="production">
<div class="search_form">
<div>
<!-- <span class="search_title">瀹㈡埛鍚嶇О锛�</span>-->
@@ -102,57 +102,57 @@
</div>
</el-tab-pane>
- <el-tab-pane label="鑷畾涔夊嚭搴�" name="manual">
- <div class="search_form">
- <div>
-<!-- <span class="search_title">渚涘簲鍟嗗悕绉帮細</span>-->
-<!-- <el-input v-model="searchForm.supplierName" style="width: 240px" placeholder="璇疯緭鍏�" @change="handleQuery"-->
-<!-- clearable prefix-icon="Search" />-->
- <span class="search_title ml10">鍏ュ簱鏃ユ湡锛�</span>
- <el-date-picker
- v-model="searchForm.timeStr"
- type="date"
- placeholder="璇烽�夋嫨鏃ユ湡"
- value-format="YYYY-MM-DD"
- format="YYYY-MM-DD"
- clearable
- @change="handleQuery"
- />
- <el-button type="primary" @click="handleQuery" style="margin-left: 10px">鎼滅储</el-button>
- </div>
- <div>
- <el-button @click="handleOut">瀵煎嚭</el-button>
- </div>
- </div>
- <div class="table_list">
- <el-table :data="tableData" border v-loading="tableLoading" @selection-change="handleSelectionChange"
- :expand-row-keys="expandedRowKeys" :row-key="row => row.id" show-summary style="width: 100%"
- :summary-method="summarizeMainTable" height="calc(100vh - 18.5em)">
- <el-table-column align="center" type="selection" width="55" />
- <el-table-column align="center" label="搴忓彿" type="index" width="60" />
- <el-table-column label="鍏ュ簱鏃堕棿" prop="inboundDate" width="100" show-overflow-tooltip />
- <el-table-column label="鍏ュ簱鎵规" prop="inboundBatches" width="160" show-overflow-tooltip />
- <!-- <el-table-column label="渚涘簲鍟嗗悕绉�" prop="supplierName" width="240" show-overflow-tooltip /> -->
- <el-table-column label="浜у搧澶х被" prop="productCategory" show-overflow-tooltip />
- <el-table-column label="瑙勬牸鍨嬪彿" prop="specificationModel" show-overflow-tooltip />
- <el-table-column label="鍗曚綅" prop="unit" width="70" show-overflow-tooltip />
- <el-table-column label="鐗╁搧绫诲瀷" prop="itemType" show-overflow-tooltip />
- <el-table-column label="鍏ュ簱鏁伴噺" prop="inboundNum" show-overflow-tooltip />
-<!-- <el-table-column label="鍚◣鍗曚环" prop="taxInclusiveUnitPrice" width="100" show-overflow-tooltip />-->
-<!-- <el-table-column label="鍚◣鎬讳环" prop="taxInclusiveTotalPrice" width="100" show-overflow-tooltip />-->
-<!-- <el-table-column label="绋庣巼(%)" prop="taxRate" width="80" show-overflow-tooltip />-->
-<!-- <el-table-column label="涓嶅惈绋庢�讳环" prop="taxExclusiveTotalPrice" width="100" show-overflow-tooltip />-->
- <el-table-column label="鍏ュ簱浜�" prop="createBy" show-overflow-tooltip />
- <el-table-column fixed="right" label="鎿嶄綔" width="100" align="center">
- <template #default="scope">
- <el-button link type="primary" size="small" @click="openForm(scope.row);">棰嗙敤</el-button>
- </template>
- </el-table-column>
- </el-table>
- <pagination v-show="total > 0" :total="total" layout="total, sizes, prev, pager, next, jumper"
- :page="page.current" :limit="page.size" @pagination="paginationChange" />
- </div>
- </el-tab-pane>
+<!-- <el-tab-pane label="鑷畾涔夊嚭搴�" name="manual">-->
+<!-- <div class="search_form">-->
+<!-- <div>-->
+<!--<!– <span class="search_title">渚涘簲鍟嗗悕绉帮細</span>–>-->
+<!--<!– <el-input v-model="searchForm.supplierName" style="width: 240px" placeholder="璇疯緭鍏�" @change="handleQuery"–>-->
+<!--<!– clearable prefix-icon="Search" />–>-->
+<!-- <span class="search_title ml10">鍏ュ簱鏃ユ湡锛�</span>-->
+<!-- <el-date-picker-->
+<!-- v-model="searchForm.timeStr"-->
+<!-- type="date"-->
+<!-- placeholder="璇烽�夋嫨鏃ユ湡"-->
+<!-- value-format="YYYY-MM-DD"-->
+<!-- format="YYYY-MM-DD"-->
+<!-- clearable-->
+<!-- @change="handleQuery"-->
+<!-- />-->
+<!-- <el-button type="primary" @click="handleQuery" style="margin-left: 10px">鎼滅储</el-button>-->
+<!-- </div>-->
+<!-- <div>-->
+<!-- <el-button @click="handleOut">瀵煎嚭</el-button>-->
+<!-- </div>-->
+<!-- </div>-->
+<!-- <div class="table_list">-->
+<!-- <el-table :data="tableData" border v-loading="tableLoading" @selection-change="handleSelectionChange"-->
+<!-- :expand-row-keys="expandedRowKeys" :row-key="row => row.id" show-summary style="width: 100%"-->
+<!-- :summary-method="summarizeMainTable" height="calc(100vh - 18.5em)">-->
+<!-- <el-table-column align="center" type="selection" width="55" />-->
+<!-- <el-table-column align="center" label="搴忓彿" type="index" width="60" />-->
+<!-- <el-table-column label="鍏ュ簱鏃堕棿" prop="inboundDate" width="100" show-overflow-tooltip />-->
+<!-- <el-table-column label="鍏ュ簱鎵规" prop="inboundBatches" width="160" show-overflow-tooltip />-->
+<!-- <!– <el-table-column label="渚涘簲鍟嗗悕绉�" prop="supplierName" width="240" show-overflow-tooltip /> –>-->
+<!-- <el-table-column label="浜у搧澶х被" prop="productCategory" show-overflow-tooltip />-->
+<!-- <el-table-column label="瑙勬牸鍨嬪彿" prop="specificationModel" show-overflow-tooltip />-->
+<!-- <el-table-column label="鍗曚綅" prop="unit" width="70" show-overflow-tooltip />-->
+<!-- <el-table-column label="鐗╁搧绫诲瀷" prop="itemType" show-overflow-tooltip />-->
+<!-- <el-table-column label="鍏ュ簱鏁伴噺" prop="inboundNum" show-overflow-tooltip />-->
+<!--<!– <el-table-column label="鍚◣鍗曚环" prop="taxInclusiveUnitPrice" width="100" show-overflow-tooltip />–>-->
+<!--<!– <el-table-column label="鍚◣鎬讳环" prop="taxInclusiveTotalPrice" width="100" show-overflow-tooltip />–>-->
+<!--<!– <el-table-column label="绋庣巼(%)" prop="taxRate" width="80" show-overflow-tooltip />–>-->
+<!--<!– <el-table-column label="涓嶅惈绋庢�讳环" prop="taxExclusiveTotalPrice" width="100" show-overflow-tooltip />–>-->
+<!-- <el-table-column label="鍏ュ簱浜�" prop="createBy" show-overflow-tooltip />-->
+<!-- <el-table-column fixed="right" label="鎿嶄綔" width="100" align="center">-->
+<!-- <template #default="scope">-->
+<!-- <el-button link type="primary" size="small" @click="openForm(scope.row);">棰嗙敤</el-button>-->
+<!-- </template>-->
+<!-- </el-table-column>-->
+<!-- </el-table>-->
+<!-- <pagination v-show="total > 0" :total="total" layout="total, sizes, prev, pager, next, jumper"-->
+<!-- :page="page.current" :limit="page.size" @pagination="paginationChange" />-->
+<!-- </div>-->
+<!-- </el-tab-pane>-->
</el-tabs>
<el-dialog v-model="dialogFormVisible" :title="'鏂板鍑哄簱'" width="40%" @close="closeDia">
<el-form :model="form" label-width="140px" label-position="top" :rules="rules" ref="formRef">
diff --git a/src/views/inventoryManagement/receiptManagement/index.vue b/src/views/inventoryManagement/receiptManagement/index.vue
index 0795f7e..e8c4b48 100644
--- a/src/views/inventoryManagement/receiptManagement/index.vue
+++ b/src/views/inventoryManagement/receiptManagement/index.vue
@@ -1,7 +1,7 @@
<template>
<div class="app-container">
<el-tabs v-model="activeTab" @tab-change="handleTabChange">
- <el-tab-pane label="鐢熶骇鍏ュ簱" name="production">
+ <el-tab-pane label="鎴愬搧鍏ュ簱" name="production">
<div class="search_form">
<div>
<!-- <span class="search_title">瀹㈡埛鍚嶇О锛�</span>-->
@@ -99,59 +99,59 @@
</div>
</el-tab-pane>
- <el-tab-pane label="鑷畾涔夊叆搴�" name="manual">
- <div class="search_form">
- <div>
-<!-- <span class="search_title">渚涘簲鍟嗗悕绉帮細</span>-->
-<!-- <el-input v-model="searchForm.supplierName" style="width: 240px" placeholder="璇疯緭鍏�" @change="handleQuery"-->
-<!-- clearable prefix-icon="Search" />-->
- <span class="search_title ml10">鍏ュ簱鏃ユ湡锛�</span>
- <el-date-picker
- v-model="searchForm.timeStr"
- type="date"
- placeholder="璇烽�夋嫨鏃ユ湡"
- value-format="YYYY-MM-DD"
- format="YYYY-MM-DD"
- clearable
- @change="handleQuery"
- />
- <el-button type="primary" @click="handleQuery" style="margin-left: 10px">鎼滅储</el-button>
- </div>
- <div>
- <el-button type="primary" @click="openForm('add', 'manual')">鏂板鍏ュ簱</el-button>
- <el-button @click="handleOut">瀵煎嚭</el-button>
- <el-button type="danger" plain @click="handleDelete">鍒犻櫎</el-button>
- </div>
- </div>
- <div class="table_list">
- <el-table :data="tableData" border v-loading="tableLoading" @selection-change="handleSelectionChange"
- :expand-row-keys="expandedRowKeys" :row-key="row => row.id" show-summary style="width: 100%"
- :summary-method="summarizeMainTable" height="calc(100vh - 18.5em)">
- <el-table-column align="center" type="selection" width="55" />
- <el-table-column align="center" label="搴忓彿" type="index" width="60" />
- <el-table-column label="鍏ュ簱鏃堕棿" prop="inboundDate" width="100" show-overflow-tooltip />
- <el-table-column label="鍏ュ簱鎵规" prop="inboundBatches" show-overflow-tooltip />
- <!-- <el-table-column label="渚涘簲鍟嗗悕绉�" prop="supplierName" width="240" show-overflow-tooltip /> -->
- <el-table-column label="浜у搧澶х被" prop="productCategory" show-overflow-tooltip />
- <el-table-column label="瑙勬牸鍨嬪彿" prop="specificationModel" show-overflow-tooltip />
- <el-table-column label="鍗曚綅" prop="unit" width="70" show-overflow-tooltip />
- <el-table-column label="鐗╁搧绫诲瀷" prop="itemType" show-overflow-tooltip />
- <el-table-column label="鍏ュ簱鏁伴噺" prop="inboundNum" show-overflow-tooltip />
-<!-- <el-table-column label="鍚◣鍗曚环" prop="taxInclusiveUnitPrice" width="100" show-overflow-tooltip />-->
-<!-- <el-table-column label="鍚◣鎬讳环" prop="taxInclusiveTotalPrice" width="100" show-overflow-tooltip />-->
-<!-- <el-table-column label="绋庣巼(%)" prop="taxRate" width="80" show-overflow-tooltip />-->
-<!-- <el-table-column label="涓嶅惈绋庢�讳环" prop="taxExclusiveTotalPrice" width="100" show-overflow-tooltip />-->
- <el-table-column label="鍏ュ簱浜�" prop="createBy" width="80" show-overflow-tooltip />
- <el-table-column fixed="right" label="鎿嶄綔" width="100" align="center">
- <template #default="scope">
- <el-button link type="primary" size="small" @click="openForm('edit', scope.row, 'manual');">缂栬緫</el-button>
- </template>
- </el-table-column>
- </el-table>
- <pagination v-show="total > 0" :total="total" layout="total, sizes, prev, pager, next, jumper"
- :page="page.current" :limit="page.size" @pagination="paginationChange" />
- </div>
- </el-tab-pane>
+<!-- <el-tab-pane label="鑷畾涔夊叆搴�" name="manual">-->
+<!-- <div class="search_form">-->
+<!-- <div>-->
+<!--<!– <span class="search_title">渚涘簲鍟嗗悕绉帮細</span>–>-->
+<!--<!– <el-input v-model="searchForm.supplierName" style="width: 240px" placeholder="璇疯緭鍏�" @change="handleQuery"–>-->
+<!--<!– clearable prefix-icon="Search" />–>-->
+<!-- <span class="search_title ml10">鍏ュ簱鏃ユ湡锛�</span>-->
+<!-- <el-date-picker-->
+<!-- v-model="searchForm.timeStr"-->
+<!-- type="date"-->
+<!-- placeholder="璇烽�夋嫨鏃ユ湡"-->
+<!-- value-format="YYYY-MM-DD"-->
+<!-- format="YYYY-MM-DD"-->
+<!-- clearable-->
+<!-- @change="handleQuery"-->
+<!-- />-->
+<!-- <el-button type="primary" @click="handleQuery" style="margin-left: 10px">鎼滅储</el-button>-->
+<!-- </div>-->
+<!-- <div>-->
+<!-- <el-button type="primary" @click="openForm('add', 'manual')">鏂板鍏ュ簱</el-button>-->
+<!-- <el-button @click="handleOut">瀵煎嚭</el-button>-->
+<!-- <el-button type="danger" plain @click="handleDelete">鍒犻櫎</el-button>-->
+<!-- </div>-->
+<!-- </div>-->
+<!-- <div class="table_list">-->
+<!-- <el-table :data="tableData" border v-loading="tableLoading" @selection-change="handleSelectionChange"-->
+<!-- :expand-row-keys="expandedRowKeys" :row-key="row => row.id" show-summary style="width: 100%"-->
+<!-- :summary-method="summarizeMainTable" height="calc(100vh - 18.5em)">-->
+<!-- <el-table-column align="center" type="selection" width="55" />-->
+<!-- <el-table-column align="center" label="搴忓彿" type="index" width="60" />-->
+<!-- <el-table-column label="鍏ュ簱鏃堕棿" prop="inboundDate" width="100" show-overflow-tooltip />-->
+<!-- <el-table-column label="鍏ュ簱鎵规" prop="inboundBatches" show-overflow-tooltip />-->
+<!-- <!– <el-table-column label="渚涘簲鍟嗗悕绉�" prop="supplierName" width="240" show-overflow-tooltip /> –>-->
+<!-- <el-table-column label="浜у搧澶х被" prop="productCategory" show-overflow-tooltip />-->
+<!-- <el-table-column label="瑙勬牸鍨嬪彿" prop="specificationModel" show-overflow-tooltip />-->
+<!-- <el-table-column label="鍗曚綅" prop="unit" width="70" show-overflow-tooltip />-->
+<!-- <el-table-column label="鐗╁搧绫诲瀷" prop="itemType" show-overflow-tooltip />-->
+<!-- <el-table-column label="鍏ュ簱鏁伴噺" prop="inboundNum" show-overflow-tooltip />-->
+<!--<!– <el-table-column label="鍚◣鍗曚环" prop="taxInclusiveUnitPrice" width="100" show-overflow-tooltip />–>-->
+<!--<!– <el-table-column label="鍚◣鎬讳环" prop="taxInclusiveTotalPrice" width="100" show-overflow-tooltip />–>-->
+<!--<!– <el-table-column label="绋庣巼(%)" prop="taxRate" width="80" show-overflow-tooltip />–>-->
+<!--<!– <el-table-column label="涓嶅惈绋庢�讳环" prop="taxExclusiveTotalPrice" width="100" show-overflow-tooltip />–>-->
+<!-- <el-table-column label="鍏ュ簱浜�" prop="createBy" width="80" show-overflow-tooltip />-->
+<!-- <el-table-column fixed="right" label="鎿嶄綔" width="100" align="center">-->
+<!-- <template #default="scope">-->
+<!-- <el-button link type="primary" size="small" @click="openForm('edit', scope.row, 'manual');">缂栬緫</el-button>-->
+<!-- </template>-->
+<!-- </el-table-column>-->
+<!-- </el-table>-->
+<!-- <pagination v-show="total > 0" :total="total" layout="total, sizes, prev, pager, next, jumper"-->
+<!-- :page="page.current" :limit="page.size" @pagination="paginationChange" />-->
+<!-- </div>-->
+<!-- </el-tab-pane>-->
</el-tabs>
<form-dia ref="formDia" @close="handleQuery" @success="handleQuery"></form-dia>
diff --git a/src/views/inventoryManagement/stockManagement/index.vue b/src/views/inventoryManagement/stockManagement/index.vue
index 85602dc..3b01344 100644
--- a/src/views/inventoryManagement/stockManagement/index.vue
+++ b/src/views/inventoryManagement/stockManagement/index.vue
@@ -1,7 +1,7 @@
<template>
<div class="app-container">
<el-tabs v-model="activeTab" @tab-change="handleTabChange">
- <el-tab-pane label="鐢熶骇鍏ュ簱" name="production">
+ <el-tab-pane label="鎴愬搧鍏ュ簱" name="production">
<div class="search_form">
<div>
<!-- <span class="search_title">瀹㈡埛鍚嶇О锛�</span>-->
@@ -110,60 +110,60 @@
</div>
</el-tab-pane>
- <el-tab-pane label="鑷畾涔夊叆搴�" name="manual">
- <div class="search_form">
- <div>
-<!-- <span class="search_title">渚涘簲鍟嗗悕绉帮細</span>-->
-<!-- <el-input v-model="searchForm.supplierName" style="width: 240px" placeholder="璇疯緭鍏�" @change="handleQuery"-->
-<!-- clearable prefix-icon="Search" />-->
- <span class="search_title ml10">鍏ュ簱鏃ユ湡锛�</span>
- <el-date-picker
- v-model="searchForm.timeStr"
- type="date"
- placeholder="璇烽�夋嫨鏃ユ湡"
- value-format="YYYY-MM-DD"
- format="YYYY-MM-DD"
- clearable
- @change="handleQuery"
- />
- <el-button type="primary" @click="handleQuery" style="margin-left: 10px">鎼滅储</el-button>
- </div>
- <div>
- <el-button @click="handleOut">瀵煎嚭</el-button>
- <el-button type="danger" plain @click="handleDelete">鍒犻櫎</el-button>
- </div>
- </div>
- <div class="table_list">
- <el-table :data="tableData" border v-loading="tableLoading" @selection-change="handleSelectionChange"
- :expand-row-keys="expandedRowKeys" :row-key="row => row.id" show-summary style="width: 100%"
- :row-class-name="tableRowClassName"
- :summary-method="summarizeMainTable" height="calc(100vh - 18.5em)">
- <el-table-column align="center" type="selection" width="55" />
- <el-table-column align="center" label="搴忓彿" type="index" width="60" />
- <el-table-column label="鍏ュ簱鏃ユ湡" prop="createTime" width="100" show-overflow-tooltip />
-<!-- <el-table-column label="渚涘簲鍟嗗悕绉�" prop="supplierName" width="240" show-overflow-tooltip />-->
- <el-table-column label="浜у搧澶х被" prop="productCategory" show-overflow-tooltip />
- <el-table-column label="瑙勬牸鍨嬪彿" prop="specificationModel" show-overflow-tooltip />
- <el-table-column label="鍗曚綅" prop="unit" width="80" show-overflow-tooltip />
- <el-table-column label="鐗╁搧绫诲瀷" prop="itemType" width="120" show-overflow-tooltip />
- <el-table-column label="搴撳瓨鏁伴噺" prop="inboundNum" width="100" show-overflow-tooltip />
- <el-table-column label="宸插嚭搴撴暟閲�" prop="totalInboundNum" width="100" show-overflow-tooltip />
- <el-table-column label="寰呭嚭搴撴暟閲�" prop="inboundNum0" width="100" show-overflow-tooltip />
-<!-- <el-table-column label="鍚◣鍗曚环" prop="taxInclusiveUnitPrice" width="100" show-overflow-tooltip />-->
-<!-- <el-table-column label="鍚◣鎬讳环" prop="taxInclusiveTotalPrice" width="100" show-overflow-tooltip />-->
-<!-- <el-table-column label="绋庣巼(%)" prop="taxRate" width="100" show-overflow-tooltip />-->
-<!-- <el-table-column label="涓嶅惈绋庢�讳环" prop="taxExclusiveTotalPrice" width="100" show-overflow-tooltip />-->
- <el-table-column label="鍏ュ簱浜�" prop="createBy" width="80" show-overflow-tooltip />
- <el-table-column fixed="right" label="鎿嶄綔" width="100" align="center">
- <template #default="scope">
- <el-button link type="primary" size="small" @click="openForm('edit', scope.row);">缂栬緫</el-button>
- </template>
- </el-table-column>
- </el-table>
- <pagination v-show="total > 0" :total="total" layout="total, sizes, prev, pager, next, jumper"
- :page="page.current" :limit="page.size" @pagination="paginationChange" />
- </div>
- </el-tab-pane>
+<!-- <el-tab-pane label="鑷畾涔夊叆搴�" name="manual">-->
+<!-- <div class="search_form">-->
+<!-- <div>-->
+<!--<!– <span class="search_title">渚涘簲鍟嗗悕绉帮細</span>–>-->
+<!--<!– <el-input v-model="searchForm.supplierName" style="width: 240px" placeholder="璇疯緭鍏�" @change="handleQuery"–>-->
+<!--<!– clearable prefix-icon="Search" />–>-->
+<!-- <span class="search_title ml10">鍏ュ簱鏃ユ湡锛�</span>-->
+<!-- <el-date-picker-->
+<!-- v-model="searchForm.timeStr"-->
+<!-- type="date"-->
+<!-- placeholder="璇烽�夋嫨鏃ユ湡"-->
+<!-- value-format="YYYY-MM-DD"-->
+<!-- format="YYYY-MM-DD"-->
+<!-- clearable-->
+<!-- @change="handleQuery"-->
+<!-- />-->
+<!-- <el-button type="primary" @click="handleQuery" style="margin-left: 10px">鎼滅储</el-button>-->
+<!-- </div>-->
+<!-- <div>-->
+<!-- <el-button @click="handleOut">瀵煎嚭</el-button>-->
+<!-- <el-button type="danger" plain @click="handleDelete">鍒犻櫎</el-button>-->
+<!-- </div>-->
+<!-- </div>-->
+<!-- <div class="table_list">-->
+<!-- <el-table :data="tableData" border v-loading="tableLoading" @selection-change="handleSelectionChange"-->
+<!-- :expand-row-keys="expandedRowKeys" :row-key="row => row.id" show-summary style="width: 100%"-->
+<!-- :row-class-name="tableRowClassName"-->
+<!-- :summary-method="summarizeMainTable" height="calc(100vh - 18.5em)">-->
+<!-- <el-table-column align="center" type="selection" width="55" />-->
+<!-- <el-table-column align="center" label="搴忓彿" type="index" width="60" />-->
+<!-- <el-table-column label="鍏ュ簱鏃ユ湡" prop="createTime" width="100" show-overflow-tooltip />-->
+<!--<!– <el-table-column label="渚涘簲鍟嗗悕绉�" prop="supplierName" width="240" show-overflow-tooltip />–>-->
+<!-- <el-table-column label="浜у搧澶х被" prop="productCategory" show-overflow-tooltip />-->
+<!-- <el-table-column label="瑙勬牸鍨嬪彿" prop="specificationModel" show-overflow-tooltip />-->
+<!-- <el-table-column label="鍗曚綅" prop="unit" width="80" show-overflow-tooltip />-->
+<!-- <el-table-column label="鐗╁搧绫诲瀷" prop="itemType" width="120" show-overflow-tooltip />-->
+<!-- <el-table-column label="搴撳瓨鏁伴噺" prop="inboundNum" width="100" show-overflow-tooltip />-->
+<!-- <el-table-column label="宸插嚭搴撴暟閲�" prop="totalInboundNum" width="100" show-overflow-tooltip />-->
+<!-- <el-table-column label="寰呭嚭搴撴暟閲�" prop="inboundNum0" width="100" show-overflow-tooltip />-->
+<!--<!– <el-table-column label="鍚◣鍗曚环" prop="taxInclusiveUnitPrice" width="100" show-overflow-tooltip />–>-->
+<!--<!– <el-table-column label="鍚◣鎬讳环" prop="taxInclusiveTotalPrice" width="100" show-overflow-tooltip />–>-->
+<!--<!– <el-table-column label="绋庣巼(%)" prop="taxRate" width="100" show-overflow-tooltip />–>-->
+<!--<!– <el-table-column label="涓嶅惈绋庢�讳环" prop="taxExclusiveTotalPrice" width="100" show-overflow-tooltip />–>-->
+<!-- <el-table-column label="鍏ュ簱浜�" prop="createBy" width="80" show-overflow-tooltip />-->
+<!-- <el-table-column fixed="right" label="鎿嶄綔" width="100" align="center">-->
+<!-- <template #default="scope">-->
+<!-- <el-button link type="primary" size="small" @click="openForm('edit', scope.row);">缂栬緫</el-button>-->
+<!-- </template>-->
+<!-- </el-table-column>-->
+<!-- </el-table>-->
+<!-- <pagination v-show="total > 0" :total="total" layout="total, sizes, prev, pager, next, jumper"-->
+<!-- :page="page.current" :limit="page.size" @pagination="paginationChange" />-->
+<!-- </div>-->
+<!-- </el-tab-pane>-->
</el-tabs>
<el-dialog v-model="dialogFormVisible" :title="operationType === 'add' ? '鏂板搴撳瓨' : '缂栬緫搴撳瓨'" width="70%"
@close="closeDia">
diff --git a/src/views/productionManagement/LineManagement/index.vue b/src/views/productionManagement/LineManagement/index.vue
new file mode 100644
index 0000000..706d2d2
--- /dev/null
+++ b/src/views/productionManagement/LineManagement/index.vue
@@ -0,0 +1,412 @@
+<template>
+ <div class="app-container line-management">
+ <div class="config-wrap">
+ <div class="left">
+ <div class="header">
+ <div>浜х嚎绠$悊</div>
+ <div>
+ <el-button size="small" type="primary" @click="addLine">鏂板浜х嚎</el-button>
+ </div>
+ </div>
+ <el-tree
+ :data="lineTree"
+ node-key="id"
+ :props="{ label: 'name' }"
+ @node-click="onNodeClick"
+ highlight-current
+ class="tree"
+ >
+ <template #default="{ data }">
+ <span>
+ <el-tag size="small" type="warning" effect="plain" style="margin-right:4px;">
+ 浜х嚎
+ </el-tag>
+ {{ data.name }}
+ </span>
+ <span class="ops">
+ <el-button link size="small" type="primary" @click.stop="openRenameDialog(data)">閲嶅懡鍚�</el-button>
+ <el-button link size="small" type="danger" @click.stop="confirmRemoveNode(data)">鍒犻櫎</el-button>
+ </span>
+ </template>
+ </el-tree>
+ </div>
+ <div class="right">
+ <div v-if="currentLine" class="process-config">
+ <div class="title">
+ <span>宸ュ簭绠$悊锛歿{ currentLine.label }}</span>
+ </div>
+ <div class="q-toolbar">
+ <el-button size="small" type="primary" @click="openAddProcessDialog">鏂板宸ュ簭</el-button>
+ </div>
+ <el-table :data="processList" border size="small" v-loading="processLoading">
+ <el-table-column label="宸ュ簭鍚嶇О" prop="name" />
+ <el-table-column label="鎿嶄綔" width="160" align="center">
+ <template #default="scope">
+ <el-button link type="primary" size="small" @click="openEditProcessDialog(scope.row)">缂栬緫</el-button>
+ <el-button link type="danger" size="small" @click="onDeleteProcess(scope.row)">鍒犻櫎</el-button>
+ </template>
+ </el-table-column>
+ </el-table>
+ <div class="pagination-container">
+ <el-pagination
+ v-model:current-page="processQueryParams.current"
+ v-model:page-size="processQueryParams.size"
+ :page-sizes="[10, 20, 50, 100]"
+ :layout="'total, sizes, prev, pager, next, jumper'"
+ :total="total"
+ @size-change="handleProcessSizeChange"
+ @current-change="handleProcessCurrentChange"
+ />
+ </div>
+ </div>
+ <div v-else class="empty">璇烽�夋嫨宸︿晶浜х嚎杩涜宸ュ簭閰嶇疆</div>
+ </div>
+ </div>
+ <!-- 鏂板浜х嚎寮圭獥 -->
+ <el-dialog v-model="addDialogVisible" :title="addDialogTitle" width="420px">
+ <el-form :model="addForm" :rules="addRules" ref="addFormRef" label-width="80px">
+ <el-form-item label="浜х嚎鍚嶇О" prop="name">
+ <el-input v-model="addForm.name" placeholder="璇疯緭鍏ヤ骇绾垮悕绉�" />
+ </el-form-item>
+ </el-form>
+ <template #footer>
+ <el-button @click="onCancelAdd">鍙� 娑�</el-button>
+ <el-button type="primary" @click="onConfirmAdd" :loading="addLoading">纭� 璁�</el-button>
+ </template>
+ </el-dialog>
+ <!-- 閲嶅懡鍚嶅脊绐� -->
+ <el-dialog v-model="renameDialogVisible" :title="renameDialogTitle" width="420px">
+ <el-form :model="renameForm" :rules="addRules" ref="renameFormRef" label-width="80px">
+ <el-form-item label="浜х嚎鍚嶇О" prop="name">
+ <el-input v-model="renameForm.name" placeholder="璇疯緭鍏ヤ骇绾垮悕绉�" />
+ </el-form-item>
+ </el-form>
+ <template #footer>
+ <el-button @click="onCancelRename">鍙� 娑�</el-button>
+ <el-button type="primary" @click="onConfirmRename" :loading="renameLoading">纭� 璁�</el-button>
+ </template>
+ </el-dialog>
+
+ <!-- 鏂板/缂栬緫宸ュ簭寮圭獥 -->
+ <el-dialog v-model="addProcessDialogVisible" :title="addProcessDialogTitle" width="420px">
+ <el-form :model="addProcessForm" label-width="80px">
+ <el-form-item label="宸ュ簭鍚嶇О" prop="name">
+ <el-input v-model="addProcessForm.name" placeholder="璇疯緭鍏ュ伐搴忓悕绉�" />
+ </el-form-item>
+ </el-form>
+ <template #footer>
+ <el-button @click="onCancelAddProcess">鍙� 娑�</el-button>
+ <el-button type="primary" :loading="addProcessSaving" @click="onConfirmAddProcess">淇� 瀛�</el-button>
+ </template>
+ </el-dialog>
+ </div>
+</template>
+
+<script setup>
+import { ref, reactive, computed, watch, onMounted } from 'vue'
+import { ElMessage, ElMessageBox } from 'element-plus'
+import { getDeptPositionTree, addDeptPosition, updateDeptPosition, deleteDeptPosition, laborConfListPage } from '@/api/lavorissce/issue'
+
+// 缁撴瀯锛氫骇绾垮垪琛�
+const lines = reactive([]) // [{id,name,processes:[{id,processName,processCode,standardTime,status}]}]
+
+// 鍔犺浇浜х嚎鍒楄〃
+async function loadLineTree() {
+ try {
+ const res = await getDeptPositionTree()
+ const data = res.data
+ lines.splice(0, lines.length, ...data)
+ } catch (e) {
+ // 闈欓粯澶辫触锛屼繚鐣欐湰鍦扮ず渚嬫暟鎹�
+ }
+}
+
+const lineTree = computed(() => lines)
+
+const currentLine = ref(null)
+// 鍙充晶锛氬綋鍓嶄骇绾跨殑宸ュ簭鍒楄〃
+const processList = ref([])
+const processLoading = ref(false)
+
+// 宸ュ簭鍒嗛〉鍙傛暟
+const processQueryParams = reactive({
+ current: 1,
+ size: 10
+})
+const total = ref(0)
+
+// 鍔犺浇宸ュ簭鍒楄〃
+async function loadProcessList(lineId) {
+ if (!lineId) {
+ if (!currentLine.value) return
+ lineId = currentLine.value.id
+ }
+
+ try {
+ processLoading.value = true
+ const res = await laborConfListPage({
+ id: lineId,
+ current: processQueryParams.current,
+ size: processQueryParams.size
+ })
+ // 鏂版帴鍙h繑鍥炵殑鏄爲褰㈢粨鏋勶紝鐩存帴浣跨敤杩斿洖鐨勬暟鎹�
+ processList.value = res.data.records.map(it => ({
+ ...it,
+ id: it.id,
+ name: it.name
+ }))
+ total.value = res.data.total
+ } finally {
+ processLoading.value = false
+ }
+}
+
+// 宸ュ簭鍒嗛〉浜嬩欢澶勭悊
+function handleProcessSizeChange(val) {
+ processQueryParams.size = val
+ processQueryParams.current = 1
+ loadProcessList()
+}
+
+function handleProcessCurrentChange(val) {
+ processQueryParams.current = val
+ loadProcessList()
+}
+
+// 鏂板宸ュ簭寮圭獥鐘舵�佷笌閫昏緫锛堜緵妯℃澘浣跨敤锛�
+const addProcessDialogVisible = ref(false)
+const addProcessDialogTitle = ref('鏂板宸ュ簭')
+const addProcessSaving = ref(false)
+const addProcessForm = reactive({ id: undefined, name: '' })
+
+function openAddProcessDialog() {
+ if (!currentLine.value) return
+ addProcessDialogTitle.value = '鏂板宸ュ簭'
+ addProcessForm.id = undefined
+ addProcessForm.name = ''
+ addProcessDialogVisible.value = true
+}
+
+function openEditProcessDialog(row) {
+ if (!currentLine.value || !row) return
+ addProcessDialogTitle.value = '缂栬緫宸ュ簭'
+ addProcessForm.id = row.id
+ addProcessForm.name = row.name
+ addProcessDialogVisible.value = true
+}
+
+function onCancelAddProcess() {
+ addProcessDialogVisible.value = false
+}
+
+async function onConfirmAddProcess() {
+ if (!currentLine.value.id) {
+ ElMessage.error('璇峰厛閫夋嫨浜х嚎')
+ return
+ }
+ addProcessSaving.value = true
+ try {
+ if (addProcessForm.id) {
+ // 缂栬緫宸ュ簭
+ await updateDeptPosition({
+ id: addProcessForm.id,
+ name: addProcessForm.name,
+ type: 2 // 宸ュ簭绫诲瀷
+ })
+ } else {
+ // 鏂板宸ュ簭
+ await addDeptPosition({
+ parentId: currentLine.value.id,
+ name: addProcessForm.name,
+ type: 2 // 宸ュ簭绫诲瀷
+ })
+ }
+
+ // 閲嶆柊鍔犺浇宸ュ簭鍒楄〃
+ await loadProcessList()
+
+ addProcessDialogVisible.value = false
+ ElMessage.success('淇濆瓨鎴愬姛')
+ } catch (e) {
+ ElMessage.error((e && (e.msg || e.message)) || '淇濆瓨澶辫触')
+ } finally {
+ addProcessSaving.value = false
+ }
+}
+
+async function onDeleteProcess(row) {
+ if (!currentLine.value || !row) return
+ try {
+ await ElMessageBox.confirm('纭畾鍒犻櫎璇ュ伐搴忓悧锛�', '鎻愮ず', { type: 'warning' })
+ } catch {
+ return
+ }
+ try {
+ await deleteDeptPosition([row.id])
+ // 閲嶆柊鍔犺浇宸ュ簭鍒楄〃
+ await loadProcessList()
+ ElMessage.success('鍒犻櫎鎴愬姛')
+ } catch (e) {
+ ElMessage.error((e && (e.msg || e.message)) || '鍒犻櫎澶辫触')
+ }
+}
+
+// 鏂板浜х嚎寮圭獥鐘舵��
+const addDialogVisible = ref(false)
+const addDialogTitle = ref('鏂板浜х嚎')
+const addLoading = ref(false)
+const addFormRef = ref()
+const addForm = reactive({ name: '', type: 1, parentId: undefined })
+const addRules = { name: [{ required: true, message: '璇疯緭鍏ヤ骇绾垮悕绉�', trigger: 'blur' }] }
+
+// 閲嶅懡鍚嶄骇绾垮脊绐楃姸鎬�
+const renameDialogVisible = ref(false)
+const renameLoading = ref(false)
+const renameFormRef = ref()
+const renameForm = reactive({ id: undefined, type: 1, name: '' })
+const renameDialogTitle = ref('閲嶅懡鍚嶄骇绾�')
+
+function newLine() {
+ return {
+ id: Date.now(),
+ label: '鏂颁骇绾�',
+ hrPositionId: undefined,
+ processes: []
+ }
+}
+
+async function addLine() {
+ openAddDialog()
+}
+
+function openAddDialog() {
+ addForm.name = ''
+ addForm.type = 1
+ addForm.parentId = undefined
+ addDialogTitle.value = '鏂板浜х嚎'
+ addDialogVisible.value = true
+}
+
+function onCancelAdd() {
+ addDialogVisible.value = false
+}
+
+async function onConfirmAdd() {
+ addFormRef.value?.validate(async (valid) => {
+ if (!valid) return
+ try {
+ addLoading.value = true
+ const payload = { name: addForm.name, type: addForm.type, parentId: 0 }
+ await addDeptPosition(payload)
+ addDialogVisible.value = false
+ await loadLineTree()
+ } finally {
+ addLoading.value = false
+ }
+ })
+}
+
+function onNodeClick(node) {
+ console.log(node);
+
+ currentLine.value = node
+ // 閫夋嫨浜х嚎鏃讹紝鍔犺浇宸ュ簭鍒楄〃
+ loadProcessList()
+}
+
+function openRenameDialog(node) {
+ renameForm.id = node.id
+ renameForm.type = 1
+ renameForm.name = node.name
+ renameDialogTitle.value = '閲嶅懡鍚嶄骇绾�'
+ renameDialogVisible.value = true
+}
+
+function onCancelRename() {
+ renameDialogVisible.value = false
+}
+
+async function onConfirmRename() {
+ renameFormRef.value?.validate(async (valid) => {
+ if (!valid) return
+ try {
+ renameLoading.value = true
+ await updateDeptPosition({ id: renameForm.id, name: renameForm.name, type: renameForm.type })
+ renameDialogVisible.value = false
+ await loadLineTree()
+ } finally {
+ renameLoading.value = false
+ }
+ })
+}
+
+async function confirmRemoveNode(node) {
+ const id = node.id
+ // 绠�鍗曠‘璁�
+ try {
+ await deleteDeptPosition([id])
+ await loadLineTree()
+ } catch (e) {
+ // ignore errors
+ }
+}
+
+
+
+onMounted(() => {
+ loadLineTree()
+})
+</script>
+
+<style scoped>
+.labor-issue {
+ display: flex;
+ flex-direction: column;
+ gap: 12px;
+}
+.config-wrap {
+ display: flex;
+ gap: 16px;
+ align-items: stretch;
+}
+.left, .right {
+ background: #fff;
+ border: 1px solid var(--el-border-color, #ebeef5);
+ border-radius: 8px;
+ box-shadow: var(--el-box-shadow-light, 0 2px 12px 0 rgba(0,0,0,.1));
+}
+.left { width: 340px; padding: 12px; }
+.right { flex: 1; padding: 14px; }
+.header {
+ display: flex;
+ align-items: flex-start;
+ margin-bottom: 10px;
+ flex-direction: column;
+}
+.header :deep(.el-button+.el-button) { margin-left: 8px; }
+.tree {
+ max-height: calc(100vh - 300px);
+ overflow: auto;
+ padding: 6px;
+ border-radius: 6px;
+ background: #fafafa;
+}
+.ops { margin-left: 8px; opacity: 0.6; transition: opacity .2s; }
+:deep(.el-tree-node__content):hover .ops { opacity: 1; }
+
+.q-toolbar { margin-bottom: 10px; }
+.empty { color: #999; padding: 48px; text-align: center; }
+
+.summary-wrap { display: flex; flex-direction: column; gap: 16px; }
+.people, .summary {
+ background: #fff;
+ border: 1px solid var(--el-border-color, #ebeef5);
+ border-radius: 8px;
+ padding: 12px;
+ box-shadow: var(--el-box-shadow-light, 0 2px 12px 0 rgba(0,0,0,.06));
+}
+.summary .header {
+ font-weight: 600;
+ margin-bottom: 12px;
+}
+</style>
diff --git a/src/views/productionManagement/operationScheduling/components/formDia.vue b/src/views/productionManagement/operationScheduling/components/formDia.vue
index b2f283d..542e4f5 100644
--- a/src/views/productionManagement/operationScheduling/components/formDia.vue
+++ b/src/views/productionManagement/operationScheduling/components/formDia.vue
@@ -21,7 +21,20 @@
</el-table-column>
<el-table-column label="宸ュ簭" prop="process" width="150">
<template #default="scope">
- <el-input v-model="scope.row.process" placeholder="璇疯緭鍏ュ伐搴�" />
+ <el-select
+ v-model="scope.row.process"
+ placeholder="閫夋嫨宸ュ簭"
+ style="width: 100%;"
+ filterable
+ clearable
+ >
+ <el-option
+ v-for="process in processList"
+ :key="process.id"
+ :label="process.name"
+ :value="process.name"
+ />
+ </el-select>
</template>
</el-table-column>
<el-table-column label="鍗曚綅" prop="unit" width="90">
@@ -47,7 +60,7 @@
/>
</template>
</el-table-column>
- <el-table-column label="宸ユ椂瀹氶" width="200" prop="workHours">
+ <el-table-column label="宸ヨ祫" width="200" prop="workHours">
<template #default="scope">
<el-input-number
v-model="scope.row.workHours"
@@ -109,6 +122,7 @@
import {ref, getCurrentInstance} from "vue";
import {userListNoPageByTenantId} from "@/api/system/user.js";
import {processScheduling} from "@/api/productionManagement/operationScheduling.js";
+import {laborConfListPage} from "@/api/lavorissce/issue.js";
const { proxy } = getCurrentInstance()
const { work_step } = proxy.useDict("work_step")
const emit = defineEmits(['close'])
@@ -121,7 +135,10 @@
const specificationModelFromRow = ref('');
const pendingNum = ref(0);
const userList = ref([])
+const processList = ref([])
const receive = ref('')
+const productionLineIdFromRow = ref('');
+const productionUserIdFromRow = ref('');
// 鎵撳紑寮规
const openDialog = (type, row) => {
@@ -130,10 +147,18 @@
userListNoPageByTenantId().then((res) => {
userList.value = res.data;
});
+ // 鏍规嵁閫変腑鏁版嵁鐨刾roductionLineId鏌ヨ宸ュ簭鍒楄〃
+ if (row?.productionLineId) {
+ laborConfListPage({ id: row.productionLineId, current: -1, size: -1 }).then((res) => {
+ processList.value = res.data.records || [];
+ });
+ }
pendingNum.value = row?.pendingNum ?? 0;
unitFromRow.value = row?.unit ?? '';
idFromRow.value = row?.id ?? '';
specificationModelFromRow.value = row?.specificationModel ?? '';
+ productionLineIdFromRow.value = row?.productionLineId ?? '';
+ productionUserIdFromRow.value = row?.productionUserId ?? '';
tableData.value = [createRow()];
}
@@ -173,12 +198,14 @@
proxy.$modal.msgError('鎺掍骇鏁伴噺鍚堣涓嶈兘瓒呰繃寰呮帓浜ф暟閲�');
return;
}
- // 3. 灏� receive 瀛楁娣诲姞鍒版瘡鏉℃暟鎹腑锛屽苟绉婚櫎 loss 瀛楁
+ // 3. 灏� receive銆乸roductionLineId銆乸roductionUserId 瀛楁娣诲姞鍒版瘡鏉℃暟鎹腑锛屽苟绉婚櫎 loss 瀛楁
const submitData = tableData.value.map(row => {
const { loss, ...rest } = row;
return {
...rest,
- receive: receive.value
+ receive: receive.value,
+ productionLineId: productionLineIdFromRow.value,
+ productionUserId: productionUserIdFromRow.value
};
});
processScheduling(submitData).then((res) => {
diff --git a/src/views/productionManagement/operationScheduling/index.vue b/src/views/productionManagement/operationScheduling/index.vue
index 4c3e0bd..129ccf9 100644
--- a/src/views/productionManagement/operationScheduling/index.vue
+++ b/src/views/productionManagement/operationScheduling/index.vue
@@ -92,6 +92,16 @@
},
},
{
+ label: "浜х嚎",
+ prop: "productionLineName",
+ width: 120,
+ },
+ {
+ label: "鐢熶骇浜�",
+ prop: "productionUserName",
+ width: 120,
+ },
+ {
label: "娲惧伐鏃ユ湡",
prop: "schedulingDate",
width: 120,
@@ -130,11 +140,11 @@
prop: "specificationModel",
width: 150,
},
- {
- label: "缁戝畾鏈哄櫒",
- prop: "speculativeTradingName",
- width: 220,
- },
+ // {
+ // label: "缁戝畾鏈哄櫒",
+ // prop: "speculativeTradingName",
+ // width: 220,
+ // },
{
label: "鍗曚綅",
prop: "unit",
diff --git a/src/views/productionManagement/productionCosting/index.vue b/src/views/productionManagement/productionCosting/index.vue
index 76e7414..13e73a2 100644
--- a/src/views/productionManagement/productionCosting/index.vue
+++ b/src/views/productionManagement/productionCosting/index.vue
@@ -100,15 +100,15 @@
width: 100,
},
{
- label: "宸ユ椂瀹氶",
+ label: "宸ヨ祫",
prop: "workHours",
width: 100,
},
- {
- label: "宸ヨ祫",
- prop: "wages",
- width: 100,
- },
+ // {
+ // label: "宸ヨ祫",
+ // prop: "wages",
+ // width: 100,
+ // },
]);
const tableData = ref([]);
const tableLoading = ref(false);
diff --git a/src/views/productionManagement/productionDispatching/components/autoDispatchDia.vue b/src/views/productionManagement/productionDispatching/components/autoDispatchDia.vue
index 9944600..6a81a87 100644
--- a/src/views/productionManagement/productionDispatching/components/autoDispatchDia.vue
+++ b/src/views/productionManagement/productionDispatching/components/autoDispatchDia.vue
@@ -21,7 +21,7 @@
<el-table-column label="椤圭洰鍚嶇О" prop="projectName" width="250" />
<el-table-column label="浜у搧澶х被" prop="productCategory" width="150" />
<el-table-column label="瑙勬牸鍨嬪彿" prop="specificationModel" width="200" />
- <el-table-column label="缁戝畾鏈哄櫒" prop="speculativeTradingName" width="120" />
+<!-- <el-table-column label="缁戝畾鏈哄櫒" prop="speculativeTradingName" width="120" />-->
<el-table-column label="鎬绘暟閲�" prop="quantity" width="100" align="right" />
<el-table-column label="宸叉帓浜�" prop="schedulingNum" width="100" align="right" fixed="right" />
<el-table-column label="寰呮帓浜�" prop="pendingQuantity" width="100" align="right" fixed="right" />
diff --git a/src/views/productionManagement/productionDispatching/components/formDia.vue b/src/views/productionManagement/productionDispatching/components/formDia.vue
index 1e23daf..da0c8c8 100644
--- a/src/views/productionManagement/productionDispatching/components/formDia.vue
+++ b/src/views/productionManagement/productionDispatching/components/formDia.vue
@@ -25,26 +25,24 @@
<el-input v-model="form.specificationModel" placeholder="璇疯緭鍏�" clearable disabled/>
</el-form-item>
</el-col>
- <el-col :span="12">
- <el-form-item label="缁戝畾鏈哄櫒锛�" prop="speculativeTradingName">
- <el-input v-model="form.speculativeTradingName" placeholder="鑷姩鑾峰彇" clearable disabled/>
- </el-form-item>
- </el-col>
+<!-- <el-col :span="12">-->
+<!-- <el-form-item label="缁戝畾鏈哄櫒锛�" prop="speculativeTradingName">-->
+<!-- <el-input v-model="form.speculativeTradingName" placeholder="鑷姩鑾峰彇" clearable disabled/>-->
+<!-- </el-form-item>-->
+<!-- </el-col>-->
+ <el-col :span="12">
+ <el-form-item label="鎬绘暟閲忥細" prop="quantity">
+ <el-input v-model="form.quantity" placeholder="璇疯緭鍏�" clearable disabled/>
+ </el-form-item>
+ </el-col>
</el-row>
<el-row :gutter="30">
- <el-col :span="12">
- <el-form-item label="鎬绘暟閲忥細" prop="quantity">
- <el-input v-model="form.quantity" placeholder="璇疯緭鍏�" clearable disabled/>
- </el-form-item>
- </el-col>
<el-col :span="12">
<el-form-item label="寰呮帓浜ф暟閲忥細" prop="pendingQuantity">
<el-input v-model="form.pendingQuantity" placeholder="璇疯緭鍏�" clearable disabled/>
</el-form-item>
</el-col>
- </el-row>
- <el-row :gutter="30">
- <el-col :span="12">
+ <el-col :span="12">
<el-form-item label="鏈鎺掍骇鏁伴噺锛�" prop="schedulingNum">
<el-input-number
v-model="form.schedulingNum"
@@ -57,6 +55,46 @@
style="width: 100%"
/>
</el-form-item>
+ </el-col>
+ </el-row>
+ <el-row :gutter="30">
+ <el-col :span="12">
+ <el-form-item label="浜х嚎锛�" prop="lineId">
+ <el-select
+ v-model="form.lineId"
+ placeholder="閫夋嫨浜х嚎"
+ style="width: 100%;"
+ filterable
+ clearable
+ >
+ <el-option
+ v-for="line in lineList"
+ :key="line.id"
+ :label="line.name"
+ :value="line.id"
+ />
+ </el-select>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="鐢熶骇浜猴細" prop="productionUserId">
+ <el-select
+ v-model="form.productionUserId"
+ placeholder="閫夋嫨鐢熶骇浜�"
+ style="width: 100%;"
+ filterable
+ default-first-option
+ :reserve-keyword="false"
+ clearable
+ >
+ <el-option
+ v-for="user in userList"
+ :key="user.userId"
+ :label="user.nickName"
+ :value="user.userId"
+ />
+ </el-select>
+ </el-form-item>
</el-col>
</el-row>
<el-row :gutter="30">
@@ -109,6 +147,7 @@
import {getStaffJoinInfo, staffJoinAdd, staffJoinUpdate} from "@/api/personnelManagement/onboarding.js";
import {userListNoPageByTenantId} from "@/api/system/user.js";
import {productionDispatch} from "@/api/productionManagement/productionOrder.js";
+import {getDeptPositionTree} from "@/api/lavorissce/issue.js";
import useUserStore from "@/store/modules/user.js";
import dayjs from "dayjs";
const { proxy } = getCurrentInstance()
@@ -127,15 +166,20 @@
schedulingDate: "",
pendingQuantity: "",
speculativeTradingName: "", // 缁戝畾鏈哄櫒鍚嶇О
+ lineId: "", // 浜х嚎ID
+ productionUserId: "", // 鐢熶骇浜篒D
},
rules: {
schedulingNum: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" },],
schedulingUserId: [{ required: true, message: "璇烽�夋嫨", trigger: "change" },],
schedulingDate: [{ required: true, message: "璇烽�夋嫨", trigger: "change" },],
+ lineId: [{ required: true, message: "璇烽�夋嫨浜х嚎", trigger: "change" },],
+ productionUserId: [{ required: true, message: "璇烽�夋嫨鐢熶骇浜�", trigger: "change" },],
},
});
const { form, rules } = toRefs(data);
const userList = ref([])
+const lineList = ref([])
const userStore = useUserStore()
@@ -146,6 +190,9 @@
userListNoPageByTenantId().then((res) => {
userList.value = res.data;
});
+ getDeptPositionTree().then((res) => {
+ lineList.value = res.data;
+ });
form.value = {...row}
form.value.schedulingNum = 0
form.value.schedulingUserId = userStore.id
diff --git a/src/views/productionManagement/productionDispatching/index.vue b/src/views/productionManagement/productionDispatching/index.vue
index 0732740..5f99906 100644
--- a/src/views/productionManagement/productionDispatching/index.vue
+++ b/src/views/productionManagement/productionDispatching/index.vue
@@ -1,32 +1,32 @@
<template>
<div class="app-container">
<!-- 鐐掓満1-4 灞曠ず锛堟�婚噺 / 姝e湪鐢熶骇閲� / 绌轰綑閲忥級 -->
- <div class="machines-grid">
- <div v-for="machine in machines" :key="machine.id" class="machine-card">
- <div class="machine-title">{{ machine.name }}</div>
- <div class="machine-metrics">
- <div class="machine-control">
- <span>鎬婚噺(kg)锛�</span>
- <el-input-number v-model="machineData[machine.name].workLoad" :min="0" :step="1" size="small" />
- </div>
- <div><span> 棰勮鎶曞叆閲�(kg)锛�</span><span>{{ machineData[machine.name].currentWorkLoad }}</span></div>
- <div><span>绌轰綑宸ヤ綔閲�(kg)锛�</span><span>{{ machineData[machine.name].vacant }}</span></div>
- </div>
- </div>
- <div class="save-button-container">
- <div class="loss-rate-container">
- <span class="loss-rate-label">鎹熻�楃巼(%)锛�</span>
- <el-select v-model="rate" placeholder="璇烽�夋嫨鎹熻�楃巼" style="width: 120px" size="small">
- <el-option label="6" :value="6" />
- <el-option label="7" :value="7" />
- <el-option label="8" :value="8" />
- <el-option label="9" :value="9" />
- <el-option label="10" :value="10" />
- </el-select>
- </div>
- <el-button type="primary" @click="saveMachineTotals" size="small">淇濆瓨璁剧疆</el-button>
- </div>
- </div>
+<!-- <div class="machines-grid">-->
+<!-- <div v-for="machine in machines" :key="machine.id" class="machine-card">-->
+<!-- <div class="machine-title">{{ machine.name }}</div>-->
+<!-- <div class="machine-metrics">-->
+<!-- <div class="machine-control">-->
+<!-- <span>鎬婚噺(kg)锛�</span>-->
+<!-- <el-input-number v-model="machineData[machine.name].workLoad" :min="0" :step="1" size="small" />-->
+<!-- </div>-->
+<!-- <div><span> 棰勮鎶曞叆閲�(kg)锛�</span><span>{{ machineData[machine.name].currentWorkLoad }}</span></div>-->
+<!-- <div><span>绌轰綑宸ヤ綔閲�(kg)锛�</span><span>{{ machineData[machine.name].vacant }}</span></div>-->
+<!-- </div>-->
+<!-- </div>-->
+<!-- <div class="save-button-container">-->
+<!-- <div class="loss-rate-container">-->
+<!-- <span class="loss-rate-label">鎹熻�楃巼(%)锛�</span>-->
+<!-- <el-select v-model="rate" placeholder="璇烽�夋嫨鎹熻�楃巼" style="width: 120px" size="small">-->
+<!-- <el-option label="6" :value="6" />-->
+<!-- <el-option label="7" :value="7" />-->
+<!-- <el-option label="8" :value="8" />-->
+<!-- <el-option label="9" :value="9" />-->
+<!-- <el-option label="10" :value="10" />-->
+<!-- </el-select>-->
+<!-- </div>-->
+<!-- <el-button type="primary" @click="saveMachineTotals" size="small">淇濆瓨璁剧疆</el-button>-->
+<!-- </div>-->
+<!-- </div>-->
<div class="search_form">
<div>
<span class="search_title">瀹㈡埛鍚嶇О锛�</span>
@@ -126,11 +126,11 @@
prop: "specificationModel",
width: 120,
},
- {
- label: "缁戝畾鏈哄櫒",
- prop: "speculativeTradingName",
- width: 220,
- },
+ // {
+ // label: "缁戝畾鏈哄櫒",
+ // prop: "speculativeTradingName",
+ // width: 220,
+ // },
{
label: "鍗曚綅",
prop: "unit",
diff --git a/src/views/productionManagement/productionReporting/components/formDia.vue b/src/views/productionManagement/productionReporting/components/formDia.vue
index e5adbc2..617ca4a 100644
--- a/src/views/productionManagement/productionReporting/components/formDia.vue
+++ b/src/views/productionManagement/productionReporting/components/formDia.vue
@@ -113,6 +113,10 @@
userList.value = res.data;
});
form.value = {...row}
+ // 浼樺厛浣跨敤閫変腑鏁版嵁鐨刾roductionUserId浣滀负鐢熶骇浜�
+ if (row?.productionUserId) {
+ form.value.schedulingUserId = row.productionUserId;
+ }
}
const changeNum = (value) => {
diff --git a/src/views/productionManagement/productionReporting/index.vue b/src/views/productionManagement/productionReporting/index.vue
index bbe8f77..789c097 100644
--- a/src/views/productionManagement/productionReporting/index.vue
+++ b/src/views/productionManagement/productionReporting/index.vue
@@ -228,11 +228,11 @@
prop: "specificationModel",
width: 150,
},
- {
- label: "缁戝畾鏈哄櫒",
- prop: "speculativeTradingName",
- width: 220,
- },
+ // {
+ // label: "缁戝畾鏈哄櫒",
+ // prop: "speculativeTradingName",
+ // width: 220,
+ // },
{
label: "鍗曚綅",
prop: "unit",
@@ -246,11 +246,11 @@
// prop: "type",
// width: 150,
// },
- {
- label: "鎹熻��",
- prop: "loss",
- width: 150,
- },
+ // {
+ // label: "鎹熻��",
+ // prop: "loss",
+ // width: 150,
+ // },
{
label: "鎺掍骇鏁伴噺",
prop: "schedulingNum",
diff --git a/src/views/salesManagement/salesLedger/index.vue b/src/views/salesManagement/salesLedger/index.vue
index eeebec6..9ceb99d 100644
--- a/src/views/salesManagement/salesLedger/index.vue
+++ b/src/views/salesManagement/salesLedger/index.vue
@@ -169,7 +169,7 @@
<el-table-column align="center" label="搴忓彿" type="index" width="60" />
<el-table-column label="浜у搧澶х被" prop="productCategory" />
<el-table-column label="瑙勬牸鍨嬪彿" prop="specificationModel" />
- <el-table-column label="缁戝畾鏈哄櫒" prop="speculativeTradingName" />
+<!-- <el-table-column label="缁戝畾鏈哄櫒" prop="speculativeTradingName" />-->
<el-table-column label="鍗曚綅" prop="unit" />
<el-table-column label="鏁伴噺" prop="quantity" />
<el-table-column label="绋庣巼(%)" prop="taxRate" />
@@ -237,13 +237,13 @@
</el-form-item>
</el-col>
</el-row>
- <el-row :gutter="30">
- <el-col :span="24">
- <el-form-item label="缁戝畾鏈哄櫒锛�">
- <el-input v-model="productForm.speculativeTradingName" placeholder="璇峰厛閫夋嫨瑙勬牸鍨嬪彿" clearable disabled />
- </el-form-item>
- </el-col>
- </el-row>
+<!-- <el-row :gutter="30">-->
+<!-- <el-col :span="24">-->
+<!-- <el-form-item label="缁戝畾鏈哄櫒锛�">-->
+<!-- <el-input v-model="productForm.speculativeTradingName" placeholder="璇峰厛閫夋嫨瑙勬牸鍨嬪彿" clearable disabled />-->
+<!-- </el-form-item>-->
+<!-- </el-col>-->
+<!-- </el-row>-->
<el-row :gutter="30">
<el-col :span="12">
<el-form-item label="鍗曚綅锛�" prop="unit">
--
Gitblit v1.9.3