From 4e44261ac4f6dcac2f15b3d30636d4b4823f6918 Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期三, 27 五月 2026 13:24:38 +0800
Subject: [PATCH] 君哥 1.恢复之前工艺路线模块,删除字段计件/计时字段,工资定额修改成计划工时,新增计划执行人员。工艺绑定,工艺路线恢复。仅需删除bom。 2.对于新增订单需流转协同办公进行审批,审批完成流转生产管控-生产订单 3.新增审批管理,规范管理所有节点审批人。 4.修改菜单栏样式bug

---
 src/views/productionManagement/productionProcess/Edit.vue |  195 +++++++++---------------------------------------
 1 files changed, 38 insertions(+), 157 deletions(-)

diff --git a/src/views/productionManagement/productionProcess/Edit.vue b/src/views/productionManagement/productionProcess/Edit.vue
index b3ccddc..38a6665 100644
--- a/src/views/productionManagement/productionProcess/Edit.vue
+++ b/src/views/productionManagement/productionProcess/Edit.vue
@@ -10,53 +10,21 @@
         <el-row :gutter="16">
           <el-col :span="12">
             <el-form-item
-            label="浜у搧鍚嶇О锛�"
-            prop="productId"
+            label="閮ㄤ欢鍚嶇О"
+            prop="name"
             :rules="[
                 {
                 required: true,
-                message: '璇烽�夋嫨浜у搧鍚嶇О',
-              },
-            ]">
-              <el-tree-select
-            v-model="formState.productId"
-            placeholder="璇烽�夋嫨浜у搧鍚嶇О"
-            clearable
-            filterable
-            check-strictly
-            :data="productCategoryOptions"
-            :render-after-expand="false"
-            style="width: 100%"
-            @change="handleProductChange"
-              />
-            </el-form-item>
-          </el-col>
-          <el-col :span="12">
-            <el-form-item
-            label="浜у搧瑙勬牸锛�"
-            prop="productModelId"
-            :rules="[
-                {
-                required: true,
-                message: '璇烽�夋嫨浜у搧瑙勬牸',
-              },
-            ]">
-              <el-select v-model="formState.productModelId"
-                     placeholder="璇烽�夋嫨浜у搧瑙勬牸"
-                     clearable
-                     filterable
-                     :disabled="!formState.productId"
-                     style="width: 100%">
-                <el-option v-for="item in modelOptions"
-                       :key="item.id"
-                       :label="item.model"
-                       :value="item.id" />
-              </el-select>
+                message: '璇疯緭鍏ラ儴浠跺悕绉�',
+              }
+            ]"
+            >
+              <el-input v-model="formState.name" placeholder="璇疯緭鍏ラ儴浠跺悕绉�" />
             </el-form-item>
           </el-col>
           <el-col :span="12">
             <el-form-item label="閮ㄤ欢缂栧彿" prop="no">
-              <el-input v-model="formState.no"  />
+              <el-input v-model="formState.no" placeholder="璇疯緭鍏ラ儴浠剁紪鍙�" />
             </el-form-item>
           </el-col>
           <el-col :span="12">
@@ -111,6 +79,25 @@
             </el-form-item>
           </el-col>
           <el-col :span="12">
+            <el-form-item label="璁″垝鎵ц浜哄憳" prop="executorId">
+              <el-select
+            v-model="formState.executorId"
+            placeholder="璇烽�夋嫨璁″垝鎵ц浜哄憳"
+            clearable
+            filterable
+            style="width: 100%"
+            @change="handleExecutorChange"
+              >
+                <el-option
+              v-for="item in plannerOptions"
+              :key="item.userId"
+              :label="item.nickName"
+              :value="item.userId"
+                />
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
             <el-form-item label="鏄惁璐ㄦ" prop="isQuality">
               <el-switch v-model="formState.isQuality" :active-value="true" inactive-value="false"/>
             </el-form-item>
@@ -135,7 +122,6 @@
 <script setup>
 import { ref, computed, getCurrentInstance, watch, onMounted } from "vue";
 import {update} from "@/api/productionManagement/productionProcess.js";
-import { modelListPage, productTreeList } from "@/api/basicData/product";
 import { userListNoPageByTenantId } from "@/api/system/user.js";
 
 const props = defineProps({
@@ -156,18 +142,16 @@
 const formState = ref({
   id: props.record.id,
   name: props.record.name,
-  productId: props.record.productId,
-  productModelId: props.record.productModelId,
   type: props.record.type,
   no: props.record.no,
   remark: props.record.remark,
   salaryQuota: props.record.salaryQuota,
   plannerId: props.record.plannerId,
   plannerName: props.record.plannerName,
+  executorId: props.record.executorId,
+  executorName: props.record.executorName,
   isQuality: props.record.isQuality,
 });
-const productCategoryOptions = ref([]);
-const modelOptions = ref([]);
 const plannerOptions = ref([]);
 
 const isShow = computed({
@@ -185,14 +169,14 @@
     formState.value = {
       id: newRecord.id,
       name: newRecord.name || '',
-      productId: newRecord.productId,
-      productModelId: getRecordProductModelId(newRecord),
-      no: newRecord.no || '',
       type: newRecord.type,
+      no: newRecord.no || '',
       remark: newRecord.remark || '',
       salaryQuota: newRecord.salaryQuota || '',
       plannerId: newRecord.plannerId,
       plannerName: newRecord.plannerName || '',
+      executorId: newRecord.executorId,
+      executorName: newRecord.executorName || '',
       isQuality: props.record.isQuality,
     };
   }
@@ -204,17 +188,16 @@
     formState.value = {
       id: props.record.id,
       name: props.record.name || '',
-      productId: props.record.productId,
-      productModelId: getRecordProductModelId(props.record),
-      no: props.record.no || '',
       type: props.record.type,
+      no: props.record.no || '',
       remark: props.record.remark || '',
       salaryQuota: props.record.salaryQuota || '',
       plannerId: props.record.plannerId,
       plannerName: props.record.plannerName || '',
+      executorId: props.record.executorId,
+      executorName: props.record.executorName || '',
       isQuality: props.record.isQuality,
     };
-    getModelOptions(formState.value.productId);
   }
 });
 
@@ -231,105 +214,6 @@
     return;
   }
   callback();
-};
-
-const convertProductTree = list => {
-  return (list || []).map(item => {
-    const children = convertProductTree(item.children || item.childList || []);
-    return {
-      ...item,
-      value: item.id,
-      label: item.name || item.label,
-      children,
-      disabled: children.length > 0,
-    };
-  });
-};
-
-const findNodeById = (nodes, targetId) => {
-  for (const node of nodes || []) {
-    if (String(node.value) === String(targetId)) {
-      return node;
-    }
-    if (node.children && node.children.length > 0) {
-      const found = findNodeById(node.children, targetId);
-      if (found) return found;
-    }
-  }
-  return null;
-};
-
-const findNodeIdByLabel = (nodes, targetLabel) => {
-  for (const node of nodes || []) {
-    if (node.label === targetLabel) {
-      return node.value;
-    }
-    if (node.children && node.children.length > 0) {
-      const found = findNodeIdByLabel(node.children, targetLabel);
-      if (found !== null && found !== undefined) return found;
-    }
-  }
-  return undefined;
-};
-
-function findModelIdByName(models, modelName) {
-  if (!modelName) {
-    return undefined;
-  }
-  const matched = (models || []).find(item => String(item.model) === String(modelName));
-  return matched?.id;
-}
-
-function getRecordProductModelId(record) {
-  if (!record) {
-    return undefined;
-  }
-  return record.productModelId ?? record.modelId ?? record.specificationModelId ?? undefined;
-}
-
-function syncProductModelIdFromModelName() {
-  if (formState.value.productModelId || modelOptions.value.length === 0) {
-    return;
-  }
-  const modelName = props.record?.productModel || props.record?.model || props.record?.specificationModel || "";
-  const matchedId = findModelIdByName(modelOptions.value, modelName);
-  if (matchedId !== undefined) {
-    formState.value.productModelId = matchedId;
-  }
-}
-
-const getProductCategoryOptions = async () => {
-  try {
-    const res = await productTreeList();
-    const list = Array.isArray(res) ? res : res?.data || [];
-    productCategoryOptions.value = convertProductTree(list);
-    if (!formState.value.productId && formState.value.name) {
-      formState.value.productId = findNodeIdByLabel(productCategoryOptions.value, formState.value.name);
-    }
-    await getModelOptions(formState.value.productId);
-    syncProductModelIdFromModelName();
-  } catch (e) {
-    productCategoryOptions.value = [];
-  }
-};
-
-const getModelOptions = async productId => {
-  if (!productId) {
-    modelOptions.value = [];
-    return;
-  }
-  try {
-    const res = await modelListPage({
-      id: productId,
-      current: 1,
-      size: 999,
-    });
-    const records = res?.records || res?.data?.records || [];
-    modelOptions.value = records;
-    syncProductModelIdFromModelName();
-  } catch (e) {
-    modelOptions.value = [];
-  }
 };
 
 const getPlannerOptions = async () => {
@@ -350,11 +234,9 @@
   formState.value.plannerName = selectedUser?.nickName || '';
 };
 
-const handleProductChange = async value => {
-  const selectedNode = findNodeById(productCategoryOptions.value, value);
-  formState.value.name = selectedNode?.label || '';
-  formState.value.productModelId = undefined;
-  await getModelOptions(value);
+const handleExecutorChange = value => {
+  const selectedUser = plannerOptions.value.find(item => String(item.userId) === String(value));
+  formState.value.executorName = selectedUser?.nickName || '';
 };
 
 const closeModal = () => {
@@ -376,7 +258,6 @@
 };
 
 onMounted(() => {
-  getProductCategoryOptions();
   getPlannerOptions();
 });
 

--
Gitblit v1.9.3