From 2cdbad409e82d4354e4eca5cffa65c6bef7a4d20 Mon Sep 17 00:00:00 2001
From: zss <zss@example.com>
Date: 星期一, 16 三月 2026 13:36:37 +0800
Subject: [PATCH] bom添加产品编码

---
 src/views/productionManagement/productionProcess/index.vue |  889 +++++++++++++++++++++++++++++++++-------------------------
 1 files changed, 500 insertions(+), 389 deletions(-)

diff --git a/src/views/productionManagement/productionProcess/index.vue b/src/views/productionManagement/productionProcess/index.vue
index 5ecb747..af6bbfa 100644
--- a/src/views/productionManagement/productionProcess/index.vue
+++ b/src/views/productionManagement/productionProcess/index.vue
@@ -13,14 +13,15 @@
             </el-icon>鏂板宸ュ簭
           </el-button>
         </div>
-        <div class="process-card-list">
-          <div v-for="process in processList"
+        <div class="process-card-list"
+             v-loading="processLoading">
+          <div v-for="process in processValueList"
                :key="process.id"
                class="process-card"
                :class="{ active: selectedProcess?.id === process.id }"
                @click="selectProcess(process)">
             <div class="card-header">
-              <span class="process-code">{{ process.processCode }}</span>
+              <div class="process-name">{{ process.name }} <span class="process-code">{{ process.no }}</span></div>
               <div class="card-actions">
                 <el-button link
                            type="primary"
@@ -41,15 +42,21 @@
               </div>
             </div>
             <div class="card-body">
-              <div class="process-name">{{ process.processName }}</div>
-              <div class="process-desc">{{ process.processDesc || '鏆傛棤鎻忚堪' }}</div>
+              <!-- <div class="process-name">{{ process.name }}</div> -->
+              <div class="process-desc">{{ process.remark || '鏆傛棤鎻忚堪' }}</div>
             </div>
             <div class="card-footer">
-              <el-tag size="small"
-                      :type="process.status === '1' ? 'success' : 'info'">
-                {{ process.status === '1' ? '鍚敤' : '鍋滅敤' }}
-              </el-tag>
-              <span class="param-count">鍙傛暟: {{ process.paramCount || 0 }}涓�</span>
+              <div class="status-tag"> <el-tag size="small"
+                        :type="process.status ? 'success' : 'info'">
+                  {{ process.status ? '鍚敤' : '鍋滅敤' }}
+                </el-tag>
+                <el-tag size="small"
+                        :type="process.isQuality ? 'warning' : 'info'"
+                        style="margin-left: 8px">
+                  {{ process.isQuality ? '璐ㄦ' : '闈炶川妫�' }}
+                </el-tag>
+              </div>
+              <span class="param-count">宸ヨ祫瀹氶: 楼{{ process.salaryQuota || 0 }}</span>
             </div>
           </div>
         </div>
@@ -58,7 +65,7 @@
       <div class="param-list-section">
         <div class="section-header">
           <h3 class="section-title">
-            {{ selectedProcess ? selectedProcess.processName + ' - 鍙傛暟閰嶇疆' : '璇烽�夋嫨宸ュ簭' }}
+            {{ selectedProcess ? selectedProcess.name + ' - 鍙傛暟閰嶇疆' : '璇烽�夋嫨宸ュ簭' }}
           </h3>
           <el-button type="primary"
                      size="small"
@@ -76,7 +83,6 @@
                     :tableData="paramList"
                     :page="paramPage"
                     height="calc(100vh - 280px)"
-                    :tableLoading="paramLoading"
                     :isSelection="false"
                     @pagination="handleParamPagination" />
           <div v-else
@@ -95,18 +101,30 @@
                ref="processFormRef"
                label-width="100px">
         <el-form-item label="宸ュ簭缂栫爜"
-                      prop="processCode">
-          <el-input v-model="processForm.processCode"
+                      prop="no">
+          <el-input v-model="processForm.no"
                     placeholder="璇疯緭鍏ュ伐搴忕紪鐮�" />
         </el-form-item>
         <el-form-item label="宸ュ簭鍚嶇О"
-                      prop="processName">
-          <el-input v-model="processForm.processName"
+                      prop="name">
+          <el-input v-model="processForm.name"
                     placeholder="璇疯緭鍏ュ伐搴忓悕绉�" />
         </el-form-item>
+        <el-form-item label="宸ヨ祫瀹氶"
+                      prop="salaryQuota">
+          <el-input v-model="processForm.salaryQuota"
+                    type="number"
+                    :step="0.001" />
+        </el-form-item>
+        <el-form-item label="鏄惁璐ㄦ"
+                      prop="isQuality">
+          <el-switch v-model="processForm.isQuality"
+                     :active-value="true"
+                     inactive-value="false" />
+        </el-form-item>
         <el-form-item label="宸ュ簭鎻忚堪"
-                      prop="processDesc">
-          <el-input v-model="processForm.processDesc"
+                      prop="remark">
+          <el-input v-model="processForm.remark"
                     type="textarea"
                     :rows="3"
                     placeholder="璇疯緭鍏ュ伐搴忔弿杩�" />
@@ -114,8 +132,8 @@
         <el-form-item label="鐘舵��"
                       prop="status">
           <el-radio-group v-model="processForm.status">
-            <el-radio label="1">鍚敤</el-radio>
-            <el-radio label="0">鍋滅敤</el-radio>
+            <el-radio :label="true">鍚敤</el-radio>
+            <el-radio :label="false">鍋滅敤</el-radio>
           </el-radio-group>
         </el-form-item>
       </el-form>
@@ -140,7 +158,7 @@
                       placeholder="璇疯緭鍏ュ弬鏁板悕绉版悳绱�"
                       clearable
                       size="small"
-                      @input="handleParamSearch">
+                      @input="handleSelectParam">
               <template #prefix>
                 <el-icon>
                   <Search />
@@ -149,26 +167,34 @@
             </el-input>
           </div>
           <el-table :data="filteredParamList"
-                    height="360"
+                    height="300"
                     border
                     highlight-current-row
                     @current-change="handleParamSelect">
-            <el-table-column prop="parameterCode"
-                             label="鍙傛暟缂栧彿"
-                             width="100" />
-            <el-table-column prop="parameterName"
+            <el-table-column prop="paramName"
                              label="鍙傛暟鍚嶇О" />
-            <el-table-column prop="parameterType"
-                             label="鍙傛暟绫诲瀷"
-                             width="100">
+            <el-table-column prop="paramType"
+                             label="鍙傛暟绫诲瀷">
               <template #default="scope">
                 <el-tag size="small"
-                        :type="getParamTypeTag(scope.row.parameterType)">
-                  {{ scope.row.parameterType }}
+                        :type="getParamTypeTag(scope.row.paramType)">
+                  {{ getParamTypeText(scope.row.paramType) }}
                 </el-tag>
               </template>
             </el-table-column>
           </el-table>
+          <!-- 鍒嗛〉鎺т欢 -->
+          <div class="pagination-container"
+               style="margin-top: 10px;">
+            <el-pagination v-model:current-page="paramPage.current"
+                           v-model:page-size="paramPage.size"
+                           :page-sizes="[10, 20, 50, 100]"
+                           layout="total, sizes, prev, pager, next, jumper"
+                           :total="paramPage.total"
+                           @size-change="handleParamSizeChange"
+                           @current-change="handleParamCurrentChange"
+                           size="small" />
+          </div>
         </div>
         <!-- 鍙充晶鍙傛暟璇︽儏 -->
         <div class="param-detail-area">
@@ -177,32 +203,54 @@
                    :model="selectedParam"
                    label-width="100px"
                    class="param-detail-form">
-            <el-form-item label="鍙傛暟缂栧彿">
-              <span class="detail-text">{{ selectedParam.parameterCode }}</span>
-            </el-form-item>
             <el-form-item label="鍙傛暟鍚嶇О">
-              <span class="detail-text">{{ selectedParam.parameterName }}</span>
+              <span class="detail-text">{{ selectedParam.paramName }}</span>
             </el-form-item>
             <el-form-item label="鍙傛暟妯″紡">
               <el-tag size="small"
-                      :type="selectedParam.parameterType2 === '1' ? 'success' : 'warning'">
-                {{ selectedParam.parameterType2 === '1' ? '鍗曞��' : '鍖洪棿' }}
+                      :type="selectedParam.valueMode == '1' ? 'success' : 'warning'">
+                {{ selectedParam.valueMode == '1' ? '鍗曞��' : '鍖洪棿' }}
               </el-tag>
             </el-form-item>
             <el-form-item label="鍙傛暟绫诲瀷">
               <el-tag size="small"
-                      :type="getParamTypeTag(selectedParam.parameterType)">
-                {{ selectedParam.parameterType }}
+                      :type="getParamTypeTag(selectedParam.paramType)">
+                {{ getParamTypeText(selectedParam.paramType) }}
               </el-tag>
             </el-form-item>
             <el-form-item label="鍙傛暟鏍煎紡">
-              <span class="detail-text">{{ selectedParam.parameterFormat || '-' }}</span>
-            </el-form-item>
-            <el-form-item label="鏍囧噯鍊�">
-              <span class="detail-text">{{ selectedParam.standardValue }}</span>
+              <span class="detail-text">{{ selectedParam.paramFormat || '-' }}</span>
             </el-form-item>
             <el-form-item label="鍗曚綅">
               <span class="detail-text">{{ selectedParam.unit || '-' }}</span>
+            </el-form-item>
+            <el-form-item label="鏍囧噯鍊�"
+                          v-if="selectedParam.valueMode == '1'">
+              <el-input v-model="selectedParam.standardValue"
+                        type="number"
+                        placeholder="璇疯緭鍏ラ粯璁ゅ��" />
+            </el-form-item>
+            <el-form-item label="鏈�灏忓��"
+                          v-if="selectedParam.valueMode == '2'">
+              <el-input v-model="selectedParam.minValue"
+                        type="number"
+                        placeholder="璇疯緭鍏ユ渶灏忓��" />
+            </el-form-item>
+            <el-form-item label="鏈�澶у��"
+                          v-if="selectedParam.valueMode == '2'">
+              <el-input v-model="selectedParam.maxValue"
+                        type="number"
+                        placeholder="璇疯緭鍏ユ渶澶у��" />
+            </el-form-item>
+            <el-form-item label="鎺掑簭">
+              <el-input v-model="selectedParam.sort"
+                        type="number"
+                        placeholder="璇疯緭鍏ユ帓搴�" />
+            </el-form-item>
+            <el-form-item label="鏄惁蹇呭~">
+              <el-switch v-model="selectedParam.isRequired"
+                         :active-value="1"
+                         :inactive-value="0" />
             </el-form-item>
           </el-form>
           <el-empty v-else
@@ -218,6 +266,65 @@
         </span>
       </template>
     </el-dialog>
+    <!-- 缂栬緫鍙傛暟瀵硅瘽妗� -->
+    <el-dialog v-model="editParamDialogVisible"
+               title="缂栬緫鍙傛暟"
+               width="600px">
+      <el-form :model="editParamForm"
+               :rules="editParamRules"
+               ref="editParamFormRef"
+               label-width="120px">
+        <el-form-item label="鍙傛暟鍚嶇О">
+          <span class="detail-text">{{ editParamForm.paramName }}</span>
+        </el-form-item>
+        <el-form-item label="鍙傛暟妯″紡">
+          <el-tag size="small"
+                  :type="editParamForm.valueMode == '1' ? 'success' : 'warning'">
+            {{ editParamForm.valueMode == '1' ? '鍗曞��' : '鍖洪棿' }}
+          </el-tag>
+        </el-form-item>
+        <el-form-item label="鏍囧噯鍊�"
+                      v-if="editParamForm.valueMode == '1'"
+                      prop="standardValue">
+          <el-input v-model="editParamForm.standardValue"
+                    type="number"
+                    placeholder="璇疯緭鍏ユ爣鍑嗗��" />
+        </el-form-item>
+        <el-form-item label="鏈�灏忓��"
+                      v-if="editParamForm.valueMode == '2'"
+                      prop="minValue">
+          <el-input v-model="editParamForm.minValue"
+                    type="number"
+                    placeholder="璇疯緭鍏ユ渶灏忓��" />
+        </el-form-item>
+        <el-form-item label="鏈�澶у��"
+                      v-if="editParamForm.valueMode == '2'"
+                      prop="maxValue">
+          <el-input v-model="editParamForm.maxValue"
+                    type="number"
+                    placeholder="璇疯緭鍏ユ渶澶у��" />
+        </el-form-item>
+        <el-form-item label="鎺掑簭"
+                      prop="sort">
+          <el-input v-model="editParamForm.sort"
+                    type="number"
+                    placeholder="璇疯緭鍏ユ帓搴�" />
+        </el-form-item>
+        <el-form-item label="鏄惁蹇呭~"
+                      prop="isRequired">
+          <el-switch v-model="editParamForm.isRequired"
+                     :active-value="1"
+                     :inactive-value="0" />
+        </el-form-item>
+      </el-form>
+      <template #footer>
+        <span class="dialog-footer">
+          <el-button @click="editParamDialogVisible = false">鍙栨秷</el-button>
+          <el-button type="primary"
+                     @click="handleEditParamSubmit">纭畾</el-button>
+        </span>
+      </template>
+    </el-dialog>
   </div>
 </template>
 
@@ -227,20 +334,27 @@
   import { Plus, Edit, Delete, Search } from "@element-plus/icons-vue";
   import PIMTable from "@/components/PIMTable/PIMTable.vue";
   import { listType } from "@/api/system/dict/type";
+  import {
+    add,
+    update,
+    del,
+    list as getProcessListApi,
+    processList,
+    getProcessParamList,
+    addProcessParam,
+    editProcessParam,
+    deleteProcessParam,
+  } from "@/api/productionManagement/productionProcess.js";
+  import { getBaseParamList } from "@/api/basicData/parameterMaintenance.js";
 
   // 宸ュ簭鍒楄〃鏁版嵁
-  const processList = ref([]);
+  const processValueList = ref([]);
   const selectedProcess = ref(null);
   const processLoading = ref(false);
 
   // 鍙傛暟鍒楄〃鏁版嵁
   const paramList = ref([]);
   const paramLoading = ref(false);
-  const paramPage = reactive({
-    current: 1,
-    size: 10,
-    total: 0,
-  });
 
   // 鏁版嵁瀛楀吀
   const dictTypes = ref([]);
@@ -251,14 +365,30 @@
   const processFormRef = ref(null);
   const processForm = reactive({
     id: null,
-    processCode: "",
-    processName: "",
-    processDesc: "",
-    status: "1",
+    no: "",
+    name: "",
+    salaryQuota: null,
+    isQuality: false,
+    remark: "",
+    status: true,
   });
   const processRules = {
-    processCode: [{ required: true, message: "璇疯緭鍏ュ伐搴忕紪鐮�", trigger: "blur" }],
-    processName: [{ required: true, message: "璇疯緭鍏ュ伐搴忓悕绉�", trigger: "blur" }],
+    no: [{ required: true, message: "璇疯緭鍏ュ伐搴忕紪鐮�", trigger: "blur" }],
+    name: [{ required: true, message: "璇疯緭鍏ュ伐搴忓悕绉�", trigger: "blur" }],
+    salaryQuota: [
+      {
+        required: false,
+        message: "璇疯緭鍏ュ伐璧勫畾棰�",
+        trigger: "blur",
+        validator: (rule, value, callback) => {
+          if (isNaN(value) || value < 0) {
+            callback(new Error("宸ヨ祫瀹氶蹇呴』鏄潪璐熸暟瀛�"));
+          } else {
+            callback();
+          }
+        },
+      },
+    ],
   };
 
   // 鍙傛暟瀵硅瘽妗�
@@ -268,56 +398,182 @@
   const selectedParam = ref(null);
   const paramSearchKeyword = ref("");
 
+  // 鍙�夊弬鏁板垎椤�
+  const paramPage = reactive({
+    current: 1,
+    size: 10,
+    total: 0,
+  });
+
+  // 缂栬緫鍙傛暟瀵硅瘽妗�
+  const editParamDialogVisible = ref(false);
+  const editParamFormRef = ref(null);
+  const editParamForm = reactive({
+    id: null,
+    processId: null,
+    paramId: null,
+    paramName: "",
+    valueMode: "1",
+    standardValue: null,
+    minValue: null,
+    maxValue: null,
+    sort: 1,
+    isRequired: 0,
+    tenantId: 1,
+  });
+  const editParamRules = {
+    standardValue: [
+      {
+        required: true,
+        message: "璇疯緭鍏ユ爣鍑嗗��",
+        trigger: "blur",
+        validator: (rule, value, callback) => {
+          if (value === null || value === undefined || value === "") {
+            callback(new Error("璇疯緭鍏ユ爣鍑嗗��"));
+          } else {
+            callback();
+          }
+        },
+      },
+    ],
+    minValue: [
+      {
+        required: true,
+        message: "璇疯緭鍏ユ渶灏忓��",
+        trigger: "blur",
+        validator: (rule, value, callback) => {
+          if (value === null || value === undefined || value === "") {
+            callback(new Error("璇疯緭鍏ユ渶灏忓��"));
+          } else {
+            callback();
+          }
+        },
+      },
+    ],
+    maxValue: [
+      {
+        required: true,
+        message: "璇疯緭鍏ユ渶澶у��",
+        trigger: "blur",
+        validator: (rule, value, callback) => {
+          if (value === null || value === undefined || value === "") {
+            callback(new Error("璇疯緭鍏ユ渶澶у��"));
+          } else {
+            callback();
+          }
+        },
+      },
+    ],
+    sort: [
+      {
+        required: true,
+        message: "璇疯緭鍏ユ帓搴�",
+        trigger: "blur",
+        validator: (rule, value, callback) => {
+          if (value === null || value === undefined || value === "") {
+            callback(new Error("璇疯緭鍏ユ帓搴�"));
+          } else if (isNaN(value) || value < 1) {
+            callback(new Error("鎺掑簭蹇呴』鏄ぇ浜�0鐨勬暣鏁�"));
+          } else {
+            callback();
+          }
+        },
+      },
+    ],
+  };
+
   // 鍙傛暟琛ㄦ牸鍒楅厤缃�
   const paramColumn = ref([
     {
-      label: "鍙傛暟缂栧彿",
-      prop: "parameterCode",
-      className: "code-cell",
-    },
-    {
       label: "鍙傛暟鍚嶇О",
-      prop: "parameterName",
+      prop: "paramName",
     },
     {
       label: "鍙傛暟妯″紡",
-      prop: "parameterType2",
+      prop: "valueMode",
       dataType: "tag",
-      formatType: row => (row.parameterType2 === "1" ? "success" : "warning"),
-      formatData: row => (row.parameterType2 === "1" ? "鍗曞��" : "鍖洪棿"),
+      formatType: row => (row.valueMode === "1" ? "success" : "warning"),
+      formatData: row => (row.valueMode === "1" ? "鍗曞��" : "鍖洪棿"),
     },
     {
       label: "鍙傛暟绫诲瀷",
-      prop: "parameterType",
+      prop: "paramType",
       dataType: "tag",
-      formatType: row => {
+      formatType: params => {
         const typeMap = {
-          鏁板�兼牸寮�: "primary",
-          鏂囨湰鏍煎紡: "info",
-          涓嬫媺閫夐」: "warning",
-          鏃堕棿鏍煎紡: "success",
+          1: "primary",
+          2: "info",
+          3: "warning",
+          4: "success",
         };
-        return typeMap[row.parameterType] || "default";
+        return typeMap[params] || "default";
+      },
+      formatData: val => {
+        const labelMap = {
+          1: "鏁板�兼牸寮�",
+          2: "鏂囨湰鏍煎紡",
+          3: "涓嬫媺閫夐」",
+          4: "鏃堕棿鏍煎紡",
+        };
+        return labelMap[val] || val;
       },
     },
     {
-      label: "鍙傛暟鏍煎紡",
-      prop: "parameterFormat",
+      label: "鍙栧�兼牸寮�",
+      prop: "paramFormat",
+      formatData: (val, row) => {
+        if (row.paramType == "3") {
+          const dict = dictTypes.value.find(item => item.dictType === val);
+          return dict ? "瀛楀吀:" + dict.dictName : val;
+        }
+        return val;
+      },
     },
     {
       label: "鏍囧噯鍊�",
       prop: "standardValue",
-      className: row => (row.parameterType === "鏁板�兼牸寮�" ? "quantity-cell" : ""),
+      formatData: (val, row) => {
+        return row.valueMode == "1" ? val : "-";
+      },
+    },
+    {
+      label: "鏈�灏忓��",
+      prop: "minValue",
+      formatData: (val, row) => {
+        return row.valueMode == "2" ? val : "-";
+      },
+    },
+    {
+      label: "鏈�澶у��",
+      prop: "maxValue",
+      formatData: (val, row) => {
+        return row.valueMode == "2" ? val : "-";
+      },
     },
     {
       label: "鍗曚綅",
       prop: "unit",
     },
     {
+      label: "鎺掑簭",
+      prop: "sort",
+    },
+    {
+      label: "鏄惁蹇呭~",
+      prop: "isRequired",
+      dataType: "tag",
+      formatType: row => (row.isRequired === 1 ? "success" : "info"),
+      formatData: row => (row.isRequired === 1 ? "鏄�" : "鍚�"),
+    },
+    {
       label: "鎿嶄綔",
       dataType: "action",
-      width: "100",
+      width: "150",
       operation: [
+        {
+          name: "缂栬緫",
+          clickFun: row => handleEditParam(row),
+        },
         {
           name: "鍒犻櫎",
           clickFun: row => handleDeleteParam(row),
@@ -328,212 +584,33 @@
 
   // 鑾峰彇宸ュ簭鍒楄〃
   const getProcessList = () => {
-    // 鍋囨暟鎹�
-    processList.value = [
-      {
-        id: 1,
-        processCode: "PROC001",
-        processName: "鍘熸枡閰嶆瘮",
-        processDesc: "鍘熸潗鏂欓厤姣斿伐搴�",
-        status: "1",
-        paramCount: 3,
-      },
-      {
-        id: 2,
-        processCode: "PROC002",
-        processName: "鎼呮媽娣峰悎",
-        processDesc: "鎼呮媽娣峰悎宸ュ簭",
-        status: "1",
-        paramCount: 2,
-      },
-      {
-        id: 3,
-        processCode: "PROC003",
-        processName: "娴囩瓚鎴愬瀷",
-        processDesc: "娴囩瓚鎴愬瀷宸ュ簭",
-        status: "1",
-        paramCount: 4,
-      },
-      {
-        id: 4,
-        processCode: "PROC004",
-        processName: "钂稿帇鍏绘姢",
-        processDesc: "钂稿帇鍏绘姢宸ュ簭",
-        status: "0",
-        paramCount: 2,
-      },
-      {
-        id: 5,
-        processCode: "PROC005",
-        processName: "鍒囧壊鍔犲伐",
-        processDesc: "鍒囧壊鍔犲伐宸ュ簭",
-        status: "1",
-        paramCount: 3,
-      },
-    ];
+    processLoading.value = true;
+    getProcessListApi()
+      .then(res => {
+        processValueList.value = res.data || [];
+      })
+      .catch(() => {
+        ElMessage.error("鑾峰彇宸ュ簭鍒楄〃澶辫触");
+      })
+      .finally(() => {
+        processLoading.value = false;
+      });
   };
 
   // 鑾峰彇鍙傛暟鍒楄〃
   const getParamList = processId => {
     paramLoading.value = true;
-    // 鍋囨暟鎹�
-    setTimeout(() => {
-      paramLoading.value = false;
-      const mockData = {
-        1: [
-          {
-            id: 1,
-            parameterCode: "P001",
-            parameterName: "姘存偿姣斾緥",
-            parameterType2: "1",
-            parameterType: "鏁板�兼牸寮�",
-            parameterFormat: "",
-            standardValue: "30",
-            unit: "%",
-          },
-          {
-            id: 2,
-            parameterCode: "P002",
-            parameterName: "鐮傛瘮渚�",
-            parameterType2: "1",
-            parameterType: "鏁板�兼牸寮�",
-            parameterFormat: "",
-            standardValue: "60",
-            unit: "%",
-          },
-          {
-            id: 3,
-            parameterCode: "P003",
-            parameterName: "姘存瘮渚�",
-            parameterType2: "1",
-            parameterType: "鏁板�兼牸寮�",
-            parameterFormat: "",
-            standardValue: "10",
-            unit: "%",
-          },
-        ],
-        2: [
-          {
-            id: 4,
-            parameterCode: "P004",
-            parameterName: "鎼呮媽鏃堕棿",
-            parameterType2: "1",
-            parameterType: "鏁板�兼牸寮�",
-            parameterFormat: "",
-            standardValue: "5",
-            unit: "鍒嗛挓",
-          },
-          {
-            id: 5,
-            parameterCode: "P005",
-            parameterName: "鎼呮媽閫熷害",
-            parameterType2: "2",
-            parameterType: "鏁板�兼牸寮�",
-            parameterFormat: "",
-            standardValue: "100-200",
-            unit: "rpm",
-          },
-        ],
-        3: [
-          {
-            id: 6,
-            parameterCode: "P006",
-            parameterName: "娴囩瓚娓╁害",
-            parameterType2: "2",
-            parameterType: "鏁板�兼牸寮�",
-            parameterFormat: "",
-            standardValue: "20-30",
-            unit: "鈩�",
-          },
-          {
-            id: 7,
-            parameterCode: "P007",
-            parameterName: "娴囩瓚鍘嬪姏",
-            parameterType2: "1",
-            parameterType: "鏁板�兼牸寮�",
-            parameterFormat: "",
-            standardValue: "0.5",
-            unit: "MPa",
-          },
-          {
-            id: 8,
-            parameterCode: "P008",
-            parameterName: "鎴愬瀷鐘舵��",
-            parameterType2: "1",
-            parameterType: "涓嬫媺閫夐」",
-            parameterFormat: "status",
-            standardValue: "姝e父",
-            unit: "",
-          },
-          {
-            id: 9,
-            parameterCode: "P009",
-            parameterName: "鎴愬瀷鏃堕棿",
-            parameterType2: "1",
-            parameterType: "鏃堕棿鏍煎紡",
-            parameterFormat: "YYYY-MM-DD HH:mm:ss",
-            standardValue: "2024-01-01 08:00:00",
-            unit: "",
-          },
-        ],
-        4: [
-          {
-            id: 10,
-            parameterCode: "P010",
-            parameterName: "钂稿帇娓╁害",
-            parameterType2: "2",
-            parameterType: "鏁板�兼牸寮�",
-            parameterFormat: "",
-            standardValue: "180-200",
-            unit: "鈩�",
-          },
-          {
-            id: 11,
-            parameterCode: "P011",
-            parameterName: "钂稿帇鍘嬪姏",
-            parameterType2: "1",
-            parameterType: "鏁板�兼牸寮�",
-            parameterFormat: "",
-            standardValue: "1.2",
-            unit: "MPa",
-          },
-        ],
-        5: [
-          {
-            id: 12,
-            parameterCode: "P012",
-            parameterName: "鍒囧壊灏哄",
-            parameterType2: "1",
-            parameterType: "鏂囨湰鏍煎紡",
-            parameterFormat: "",
-            standardValue: "600x200x100",
-            unit: "mm",
-          },
-          {
-            id: 13,
-            parameterCode: "P013",
-            parameterName: "鍒囧壊绮惧害",
-            parameterType2: "1",
-            parameterType: "鏁板�兼牸寮�",
-            parameterFormat: "",
-            standardValue: "卤1",
-            unit: "mm",
-          },
-          {
-            id: 14,
-            parameterCode: "P014",
-            parameterName: "鍒囧壊閫熷害",
-            parameterType2: "1",
-            parameterType: "鏁板�兼牸寮�",
-            parameterFormat: "",
-            standardValue: "2",
-            unit: "m/min",
-          },
-        ],
-      };
-      paramList.value = mockData[processId] || [];
-      paramPage.total = paramList.value.length;
-    }, 300);
+    getProcessParamList(processId)
+      .then(res => {
+        paramList.value = res.data || [];
+        paramPage.total = paramList.value.length;
+      })
+      .catch(() => {
+        ElMessage.error("鑾峰彇鍙傛暟鍒楄〃澶辫触");
+      })
+      .finally(() => {
+        paramLoading.value = false;
+      });
   };
 
   // 閫夋嫨宸ュ簭
@@ -546,19 +623,23 @@
   const handleAddProcess = () => {
     isProcessEdit.value = false;
     processForm.id = null;
-    processForm.processCode = "";
-    processForm.processName = "";
-    processForm.processDesc = "";
-    processForm.status = "1";
+    processForm.no = "";
+    processForm.name = "";
+    processForm.salaryQuota = null;
+    processForm.isQuality = false;
+    processForm.remark = "";
+    processForm.status = true;
     processDialogVisible.value = true;
   };
 
   const handleEditProcess = process => {
     isProcessEdit.value = true;
     processForm.id = process.id;
-    processForm.processCode = process.processCode;
-    processForm.processName = process.processName;
-    processForm.processDesc = process.processDesc;
+    processForm.no = process.no;
+    processForm.name = process.name;
+    processForm.salaryQuota = process.salaryQuota;
+    processForm.isQuality = process.isQuality || false;
+    processForm.remark = process.remark || "";
     processForm.status = process.status;
     processDialogVisible.value = true;
   };
@@ -569,21 +650,34 @@
       cancelButtonText: "鍙栨秷",
       type: "warning",
     }).then(() => {
-      ElMessage.success("鍒犻櫎鎴愬姛");
-      getProcessList();
-      if (selectedProcess.value?.id === process.id) {
-        selectedProcess.value = null;
-        paramList.value = [];
-      }
+      del([process.id])
+        .then(() => {
+          ElMessage.success("鍒犻櫎鎴愬姛");
+          getProcessList();
+          if (selectedProcess.value?.id === process.id) {
+            selectedProcess.value = null;
+            paramList.value = [];
+          }
+        })
+        .catch(() => {
+          ElMessage.error("鍒犻櫎澶辫触");
+        });
     });
   };
 
   const handleProcessSubmit = () => {
     processFormRef.value.validate(valid => {
       if (valid) {
-        ElMessage.success(isProcessEdit.value ? "缂栬緫鎴愬姛" : "鏂板鎴愬姛");
-        processDialogVisible.value = false;
-        getProcessList();
+        const apiMethod = isProcessEdit.value ? update : add;
+        apiMethod(processForm)
+          .then(() => {
+            ElMessage.success(isProcessEdit.value ? "缂栬緫鎴愬姛" : "鏂板鎴愬姛");
+            processDialogVisible.value = false;
+            getProcessList();
+          })
+          .catch(() => {
+            ElMessage.error(isProcessEdit.value ? "缂栬緫澶辫触" : "鏂板澶辫触");
+          });
       }
     });
   };
@@ -594,81 +688,20 @@
       ElMessage.warning("璇峰厛閫夋嫨涓�涓伐搴�");
       return;
     }
-    // 鑾峰彇鍙�夊弬鏁板垪琛紙鍋囨暟鎹級
-    availableParamList.value = [
-      {
-        id: 101,
-        parameterCode: "P101",
-        parameterName: "娓╁害",
-        parameterType2: "2",
-        parameterType: "鏁板�兼牸寮�",
-        parameterFormat: "",
-        standardValue: "20-30",
-        unit: "鈩�",
-      },
-      {
-        id: 102,
-        parameterCode: "P102",
-        parameterName: "鍘嬪姏",
-        parameterType2: "1",
-        parameterType: "鏁板�兼牸寮�",
-        parameterFormat: "",
-        standardValue: "0.5",
-        unit: "MPa",
-      },
-      {
-        id: 103,
-        parameterCode: "P103",
-        parameterName: "婀垮害",
-        parameterType2: "2",
-        parameterType: "鏁板�兼牸寮�",
-        parameterFormat: "",
-        standardValue: "40-60",
-        unit: "%",
-      },
-      {
-        id: 104,
-        parameterCode: "P104",
-        parameterName: "閫熷害",
-        parameterType2: "1",
-        parameterType: "鏁板�兼牸寮�",
-        parameterFormat: "",
-        standardValue: "100",
-        unit: "m/min",
-      },
-      {
-        id: 105,
-        parameterCode: "P105",
-        parameterName: "鐘舵��",
-        parameterType2: "1",
-        parameterType: "涓嬫媺閫夐」",
-        parameterFormat: "status",
-        standardValue: "姝e父",
-        unit: "",
-      },
-      {
-        id: 106,
-        parameterCode: "P106",
-        parameterName: "璁板綍鏃堕棿",
-        parameterType2: "1",
-        parameterType: "鏃堕棿鏍煎紡",
-        parameterFormat: "YYYY-MM-DD HH:mm:ss",
-        standardValue: "2024-01-01 08:00:00",
-        unit: "",
-      },
-      {
-        id: 107,
-        parameterCode: "P107",
-        parameterName: "澶囨敞",
-        parameterType2: "1",
-        parameterType: "鏂囨湰鏍煎紡",
-        parameterFormat: "",
-        standardValue: "鏃�",
-        unit: "",
-      },
-    ];
-    filteredParamList.value = availableParamList.value;
-    paramSearchKeyword.value = "";
+    // 鑾峰彇鍙�夊弬鏁板垪琛�
+    getBaseParamList({
+      paramName: paramSearchKeyword.value,
+      current: paramPage.current,
+      size: paramPage.size,
+    }).then(res => {
+      if (res.code === 200) {
+        filteredParamList.value = res.data?.records || [];
+        paramPage.total = res.data?.total || 0;
+      } else {
+        ElMessage.error(res.msg || "鏌ヨ澶辫触");
+      }
+    });
+    console.log(filteredParamList.value, "鍙�夊弬鏁板垪琛�");
     selectedParam.value = null;
     paramDialogVisible.value = true;
   };
@@ -678,22 +711,38 @@
   };
 
   const handleParamSearch = () => {
-    const keyword = paramSearchKeyword.value.trim().toLowerCase();
-    if (!keyword) {
-      filteredParamList.value = availableParamList.value;
-    } else {
-      filteredParamList.value = availableParamList.value.filter(item =>
-        item.parameterName.toLowerCase().includes(keyword)
-      );
-    }
+    // 閲嶇疆鍒嗛〉
+    paramPage.current = 1;
+    // 閲嶆柊鍔犺浇鏁版嵁
+    handleSelectParam();
   };
 
+  // 澶勭悊鍒嗛〉澶у皬鍙樺寲
+  const handleParamSizeChange = size => {
+    paramPage.size = size;
+    handleSelectParam();
+  };
+
+  // 澶勭悊褰撳墠椤电爜鍙樺寲
+  const handleParamCurrentChange = current => {
+    paramPage.current = current;
+    handleSelectParam();
+  };
+  const getParamTypeText = type => {
+    const typeMap = {
+      1: "鏁板�兼牸寮�",
+      2: "鏂囨湰鏍煎紡",
+      3: "涓嬫媺閫夐」",
+      4: "鏃堕棿鏍煎紡",
+    };
+    return typeMap[type] || "鏈煡鍙傛暟绫诲瀷";
+  };
   const getParamTypeTag = type => {
     const typeMap = {
-      鏁板�兼牸寮�: "primary",
-      鏂囨湰鏍煎紡: "info",
-      涓嬫媺閫夐」: "warning",
-      鏃堕棿鏍煎紡: "success",
+      1: "primary",
+      2: "info",
+      3: "warning",
+      4: "success",
     };
     return typeMap[type] || "default";
   };
@@ -704,8 +753,45 @@
       cancelButtonText: "鍙栨秷",
       type: "warning",
     }).then(() => {
-      ElMessage.success("鍒犻櫎鎴愬姛");
-      getParamList(selectedProcess.value.id);
+      deleteProcessParam(row.id)
+        .then(() => {
+          ElMessage.success("鍒犻櫎鎴愬姛");
+          getParamList(selectedProcess.value.id);
+        })
+        .catch(() => {
+          ElMessage.error("鍒犻櫎澶辫触");
+        });
+    });
+  };
+
+  const handleEditParam = row => {
+    editParamForm.id = row.id;
+    editParamForm.processId = row.processId;
+    editParamForm.paramId = row.paramId;
+    editParamForm.paramName = row.paramName;
+    editParamForm.valueMode = row.valueMode;
+    editParamForm.standardValue = row.standardValue;
+    editParamForm.minValue = row.minValue;
+    editParamForm.maxValue = row.maxValue;
+    editParamForm.sort = row.sort || 1;
+    editParamForm.isRequired = row.isRequired || 0;
+    editParamForm.tenantId = 1;
+    editParamDialogVisible.value = true;
+  };
+
+  const handleEditParamSubmit = () => {
+    editParamFormRef.value.validate(valid => {
+      if (valid) {
+        editProcessParam(editParamForm)
+          .then(() => {
+            ElMessage.success("缂栬緫鎴愬姛");
+            editParamDialogVisible.value = false;
+            getParamList(selectedProcess.value.id);
+          })
+          .catch(() => {
+            ElMessage.error("缂栬緫澶辫触");
+          });
+      }
     });
   };
 
@@ -714,9 +800,24 @@
       ElMessage.warning("璇峰厛閫夋嫨涓�涓弬鏁�");
       return;
     }
-    ElMessage.success("娣诲姞鎴愬姛");
-    paramDialogVisible.value = false;
-    getParamList(selectedProcess.value.id);
+    addProcessParam({
+      processId: selectedProcess.value.id,
+      paramId: selectedParam.value.id,
+      sort: selectedParam.value.sort || 1,
+      standardValue: selectedParam.value.standardValue,
+      minValue: selectedParam.value.minValue,
+      maxValue: selectedParam.value.maxValue,
+      isRequired: selectedParam.value.isRequired || 0,
+      tenantId: 1,
+    })
+      .then(() => {
+        ElMessage.success("娣诲姞鎴愬姛");
+        paramDialogVisible.value = false;
+        getParamList(selectedProcess.value.id);
+      })
+      .catch(() => {
+        ElMessage.error("娣诲姞澶辫触");
+      });
   };
 
   const handleParamPagination = obj => {
@@ -754,6 +855,8 @@
   // 宸︿晶宸ュ簭鍒楄〃
   .process-list-section {
     width: 370px;
+    min-width: 370px;
+    flex-shrink: 0;
     background: #fff;
     border-radius: 8px;
     box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
@@ -810,7 +913,8 @@
 
       .process-code {
         font-size: 12px;
-        color: #909399;
+        // color: #909399;
+        color: #cb9b18;
         font-family: "Courier New", monospace;
       }
 
@@ -868,7 +972,12 @@
   .param-table-wrapper {
     flex: 1;
     padding: 0 20px 20px;
-    overflow: hidden;
+    overflow: auto;
+  }
+
+  /* 琛ㄦ牸妯悜婊氬姩 */
+  :deep(.el-table) {
+    // min-width: 800px;
   }
 
   .empty-tip {
@@ -890,7 +999,7 @@
       th {
         background: transparent;
         font-weight: 600;
-        color: #ffffff;
+        // color: #ffffff;
         border-bottom: none;
         padding: 16px 0;
       }
@@ -938,7 +1047,8 @@
     height: 450px;
 
     .param-list-area {
-      flex: 1;
+      // flex: 1;
+      width: 380px;
       display: flex;
       flex-direction: column;
 
@@ -961,7 +1071,8 @@
     }
 
     .param-detail-area {
-      width: 380px;
+      // width: 380px;
+      flex: 1;
       display: flex;
       flex-direction: column;
       background: #f5f7fa;

--
Gitblit v1.9.3