From efdd02d3d80253bf93f1c58e3ae25016db2d6b31 Mon Sep 17 00:00:00 2001
From: liding <756868258@qq.com>
Date: 星期三, 09 四月 2025 17:25:50 +0800
Subject: [PATCH] 检验任务,进货检验车间文件选择

---
 src/views/business/reliabilityPlan/index.vue |  111 +++++++++++++++++++++++++++++++++++++++----------------
 1 files changed, 78 insertions(+), 33 deletions(-)

diff --git a/src/views/business/reliabilityPlan/index.vue b/src/views/business/reliabilityPlan/index.vue
index 6d0694e..a0d9c30 100644
--- a/src/views/business/reliabilityPlan/index.vue
+++ b/src/views/business/reliabilityPlan/index.vue
@@ -79,7 +79,7 @@
       <div slot="footer" class="foot">
         <el-button v-if="operationType !== 'review'" @click="closeProDia">鍙� 娑�</el-button>
         <el-button v-if="operationType !== 'review' && operationType !== 'submit'" type="primary"
-          :loading="submitProLoading" @click="submitProForm">淇�
+          :loading="submitProLoading" @click="submitProForm(0)">淇�
           瀛�</el-button>
         <el-button v-if="operationType == 'submit'" type="primary" :loading="submitProLoading"
           @click="submitProForm(1)">鎻� 浜�</el-button>
@@ -95,13 +95,18 @@
       <el-form :model="materialForm" ref="materialForm" :rules="materialRules" label-width="90px" size="small">
         <el-form-item label="鍘熻緟鏉愬悕绉�" prop="materialName">
           <el-cascader v-model="materialForm.materialName" :options="itemParameterData.cascaderField.sample.tree"
-            :props="{ value: 'name', label: 'name', checkStrictly: false, multiple: false }" :show-all-levels="false"
-            clearable filterable placeholder="璇烽�夋嫨鍘熻緟鏉愬悕绉�" size="small" style="width: 100%;"
-            :disabled="operationType === 'review' || operationType === 'submit'"></el-cascader>
+            :props="{ value: 'name', label: 'name', checkStrictly: false, multiple: false, emitPath: false }"
+            :show-all-levels="false" clearable filterable placeholder="璇烽�夋嫨鍘熻緟鏉愬悕绉�" size="small" style="width: 100%;"
+            :disabled="operationType === 'review' || operationType === 'submit'" @change="handleMaterialNameChange">
+          </el-cascader>
         </el-form-item>
         <el-form-item label="闆朵欢鍙�" prop="partNo">
-          <el-input v-model="materialForm.partNo" placeholder="璇峰~鍐欓浂浠跺彿"
-            :disabled="operationType === 'review' || operationType === 'submit'"></el-input>
+          <el-select v-model="materialForm.partNo" placeholder="璇烽�夋嫨" clearable filterable
+            :disabled="operationType === 'review' || !materialForm.materialName || operationType === 'submit'"
+            style="width: 100%;">
+            <el-option v-for="item in materialPartNoOption" :key="item.id" :label="item.partNo" :value="item.partNo">
+            </el-option>
+          </el-select>
         </el-form-item>
         <!-- <el-form-item label="瀹℃牳浜�" prop="reviewerId">
           <el-select v-model="proPlanForm.reviewerId" clearable filterable size="small" style="width: 50%;"
@@ -115,7 +120,7 @@
         <el-button v-if="operationType !== 'review'" @click="closeMaterialRulesDia">鍙�
           娑�</el-button>
         <el-button v-if="operationType !== 'review' && operationType !== 'submit'" type="primary"
-          :loading="submitMatLoading" @click="submitMaterialRulesForm">淇� 瀛�</el-button>
+          :loading="submitMatLoading" @click="submitMaterialRulesForm(0)">淇� 瀛�</el-button>
         <el-button v-if="operationType == 'submit'" type="primary" :loading="submitProLoading"
           @click="submitMaterialRulesForm(1)">鎻� 浜�</el-button>
         <el-button v-if="operationType === 'review'" :loading="submitMatLoading"
@@ -158,6 +163,7 @@
       tableData: [],
       typeOption: [],
       partNoOption: [], // 娣诲姞浜у搧鍨嬪彿閫夐」鏁版嵁
+      materialPartNoOption:[],
       tableLoading: false,
       itemParameterData: {
         cascaderField: {
@@ -448,9 +454,6 @@
     // 鎵撳紑鏂板寮规
     openAddDia(type, row) {
       this.operationType = type
-      this.getTypeOptions()
-      this.getPartNoOptions()
-      // this.getUserList()
       if (this.tabIndex === 0) {
         this.proPlanDia = true
         if (this.operationType === 'add') {
@@ -463,37 +466,77 @@
           }
         } else {
           this.proPlanForm = { ...row }
+          // 缂栬緫鏃惰幏鍙栭�変腑鑺傜偣鐨処D骞跺姞杞界浉鍏虫暟鎹�
+          const selectedNode = this.findNodeById(this.itemParameterData.cascaderField.sample.tree, row.productName)
+          if (selectedNode) {
+            this.getTypeOptions(selectedNode.id)
+            this.getPartNoOptions(selectedNode.id)
+          }
         }
       } else {
         this.materialDia = true
-        if (this.operationType === 'add') {
-          this.materialForm = {
-            id: '',
-            materialName: '',
-            partNo: '',
-            state: '',
-            reviewerId: ''
+          if (this.operationType === 'add') {
+            this.materialForm = {
+              id: '',
+              materialName: '',
+              partNo: '',
+              state: '',
+              reviewerId: ''
+            }
+          } else {
+            this.materialForm = { ...row }
+            // 缂栬緫鏃惰幏鍙栭�変腑鑺傜偣鐨処D骞跺姞杞界浉鍏虫暟鎹�
+            const selectedNode = this.findNodeById(this.itemParameterData.cascaderField.sample.tree, row.materialName)
+            if (selectedNode) {
+              this.getMaterialPartNoOptions(selectedNode.id)
+            }
           }
-        } else {
-          this.materialForm = { ...row }
-        }
       }
     },
+
+    //鍘熻緟鏉愰浂浠跺彿閫夋嫨
+    handleMaterialNameChange(value) {
+        if (value) {
+          const selectedNode = this.findNodeById(this.itemParameterData.cascaderField.sample.tree, value)
+          if (selectedNode) {
+            this.getMaterialPartNoOptions(selectedNode.id)
+          }
+        } else {
+          this.materialPartNoOption = []
+          this.materialForm.partNo = ''
+        }
+      },
+
+      // 鑾峰彇鍘熻緟鏉愰浂浠跺彿鍒楄〃
+      getMaterialPartNoOptions(materialId) {
+        if (!materialId) {
+          this.materialPartNoOption = []
+          return
+        }
+        getPartNoList({ productId: materialId }).then(res => {
+          if (res.code === 200) {
+            this.materialPartNoOption = res.data || []
+            if (this.materialPartNoOption.length === 0) {
+              this.materialForm.partNo = ''
+            }
+          }
+        }).catch(() => {
+          this.materialPartNoOption = []
+          this.materialForm.partNo = ''
+        })
+      },
     // 鎴愬搧淇℃伅鎻愪氦
     submitProForm(state) {
       this.submitProLoading = true
-      if (this.operationType === 'add') {
-        this.proPlanForm.state = ''
-      } else {
-        this.proPlanForm.state = state
-      }
       // 鑾峰彇閫変腑鑺傜偣鐨処D
       const selectedNode = this.findNodeById(this.itemParameterData.cascaderField.sample.tree, this.proPlanForm.productName)
-      if (selectedNode) {
-        this.proPlanForm.productId = selectedNode.id
+      const params = {
+        ...this.proPlanForm,
+        state: state === undefined ? null : parseInt(state),
+        productId: selectedNode?.id
       }
 
-      addOrUpdateProduct(this.proPlanForm).then(res => {
+      addOrUpdateProduct(params).then(res => {
         if (res.code === 200) {
           this.closeProDia()
           this.$message.success('鎿嶄綔鎴愬姛')
@@ -513,12 +556,14 @@
     // 鍘熻緟鏉愪俊鎭彁浜�
     submitMaterialRulesForm(state) {
       this.submitMatLoading = true
-      if (this.operationType === 'add') {
-        this.materialForm.state = ''
-      } else {
-        this.materialForm.state = state
+      // 鑾峰彇閫変腑鑺傜偣鐨処D
+      const selectedNode = this.findNodeById(this.itemParameterData.cascaderField.sample.tree, this.materialForm.materialName)
+      const params = {
+        ...this.materialForm,
+        state: state === undefined ? null : parseInt(state),
+        materialId: selectedNode?.id
       }
-      addOrUpdateMaterial(this.materialForm).then(res => {
+      addOrUpdateMaterial(params).then(res => {
         if (res.code === 200) {
           this.closeMaterialRulesDia()
           this.$message.success('鎿嶄綔鎴愬姛')

--
Gitblit v1.9.3