From 2819fa5d3308e2e60864488cc588df5bb9cb1a13 Mon Sep 17 00:00:00 2001
From: Fixiaobai <fixiaobai@163.com>
Date: 星期一, 11 九月 2023 18:00:11 +0800
Subject: [PATCH] 	modified:   src/assets/api/controller.js 	modified:   src/components/view/standard.vue

---
 src/components/view/standard.vue |  243 ++++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 223 insertions(+), 20 deletions(-)

diff --git a/src/components/view/standard.vue b/src/components/view/standard.vue
index c60f440..0a0bdc6 100644
--- a/src/components/view/standard.vue
+++ b/src/components/view/standard.vue
@@ -22,7 +22,7 @@
             <el-button  size="mini" icon="el-icon-plus" @click="bomLeftAdd=true"></el-button>
           </el-col>
         </el-row>
-        <el-tree :data="list" ref="tree" default-expand-all :props="{ children: 'children', label: 'name' }"
+        <el-tree style="width: ;" :data="list" ref="tree" default-expand-all :props="{ children: 'children', label: 'name' }"
           node-key="id" :filter-node-method="filterNode" @node-click="handleNodeClick" highlight-current>
           <div class="custom-tree-node" slot-scope="{ node, data }">
             <span><i :class="`node_i ${data.code != '[5]' ? 'el-icon-folder-opened' : 'el-icon-tickets'}`"></i>
@@ -87,13 +87,25 @@
       <!-- 宸︿晶鐐瑰嚮+鎸夐挳 -->
       <el-dialog title="BOM鏂板" :visible.sync="bomLeftAdd" width="29%">
         <el-form ref="leftAdd" :model="leftAdd">
-            <el-form-item label="绫诲瀷">
-              <el-cascader v-model="leftAdd.type" size="mini" style="width: 93%;" :options="formTypeOptions" :props="{ checkStrictly: true }" clearable></el-cascader>
+            <el-form-item :rules="[{ required: true, message: '璇烽�夋嫨浜у搧绫诲瀷', trigger: 'blur' }]" label="浜у搧绫诲瀷" prop="type">
+              <el-cascader @change="changeLeftAdd" v-model="leftAdd.type"  style="width: 86%;" :options="formTypeOptions" :props="{ checkStrictly: true }" clearable></el-cascader>
+            </el-form-item>
+            <el-form-item v-if="leftAdd.type.length<2" label="浜у搧澶х被" prop="father">
+              <el-autocomplete  class="inline-input" style="width: 88%;" v-model="leftAdd.father" :fetch-suggestions="querySearch" placeholder="璇烽�夋嫨浜у搧澶х被" @select="handleSelect"></el-autocomplete>
+            </el-form-item>
+            <el-form-item v-if="leftAdd.type.length<3"  label="浜у搧鍚嶇О" prop="name">
+              <el-autocomplete class="inline-input" style="width: 88%;" v-model="leftAdd.name" :fetch-suggestions="querySearchName" placeholder="璇烽�夋嫨浜у搧鍚嶇О" @select="handleSelect"></el-autocomplete>
+            </el-form-item>
+            <el-form-item v-if="leftAdd.type.length<4"  label="浜у搧鏍囧噯" prop="standard">
+              <el-autocomplete class="inline-input" style="width: 88%;" v-model="leftAdd.standard" :fetch-suggestions="querySearchStandar" placeholder="璇烽�夋嫨浜у搧鏍囧噯" @select="handleSelect"></el-autocomplete>
+            </el-form-item>
+            <el-form-item  label="浜у搧鍨嬪彿" prop="specifications">
+              <el-input v-model="leftAdd.specifications" style="width: 88%;" placeholder="璇疯緭鍏ヤ骇鍝佸瀷鍙�"></el-input>
             </el-form-item>
         </el-form>
         <span slot="footer" class="dialog-footer">
-          <el-button @click="bomLeftAdd = false">鍙� 娑�</el-button>
-          <el-button type="primary" @click="bomLeftAdd = false">纭� 瀹�</el-button>
+          <el-button @click="resetForm('leftAdd')">鍙� 娑�</el-button>
+          <el-button type="primary" @click="submitForm('leftAdd')">纭� 瀹�</el-button>
         </span>
       </el-dialog>
             <!-- 鍙充笂渚х偣鍑讳慨鏀规寜閽� -->
@@ -112,7 +124,7 @@
             鍒犻櫎
         </el-form>
         <span slot="footer" class="dialog-footer">
-          <el-button @click="bomRightDl = false">鍙� 娑�</el-button>
+          <el-button @click="bomRightDl=false">鍙� 娑�</el-button>
           <el-button type="primary" @click="bomRightDl = false">纭� 瀹�</el-button>
         </span>
       </el-dialog>
@@ -148,7 +160,7 @@
       },
       version: {},
       leftAdd:{
-        type: null,
+        type: [],
         father: null,
         standard: null,
         name: null,
@@ -156,7 +168,11 @@
       },
       VER: {},
       verdata: {},
-      character: 0
+      character: 0,
+      restaurants: [],
+      bomName:[],
+      bomStandard:[],
+      isLeftAdd: true
     }
   },
   // watch: {
@@ -173,9 +189,148 @@
     this.selectVersion()
   },
   methods: {
-    startLeftAdd(){
+    changeLeftAdd(){
+        if(this.leftAdd.type.length===2){
+          this.leftAdd.father=null
+          this.leftAdd.father=this.leftAdd.type[1]
+        }
+        if(this.leftAdd.type.length===3){
+          this.leftAdd.name=null
+          this.leftAdd.father=this.leftAdd.type[1]
+          this.leftAdd.name=this.leftAdd.type[2]
+        }
+        if(this.leftAdd.type.length===4){
+          this.leftAdd.standard=null
+          this.leftAdd.father=this.leftAdd.type[1]
+          this.leftAdd.name=this.leftAdd.type[2]
+          this.leftAdd.standard=this.leftAdd.type[3]
+        }
+    },
+    submitForm(formName) {
+        this.$refs[formName].validate((valid) => {
+          if (valid) {
+            let obj=JSON.parse(JSON.stringify(this.leftAdd))
+            console.log(obj);
+            let one=this.list.filter(item=>{
+                return item.name===obj.type[0]
+              })[0]
+              let two=one.children.filter(item=>{
+                return item.name===obj.father
+              })[0]
+              console.log("two",two);
+              //鎵ц涓�浜岀骇鏂板
+              if(two===undefined||two===null){
+                  obj.type=this.getType(obj.type[0])
+                  this.$axios.post(this.$api.url.leftAddOneTwo,obj,{
+                     headers: { "Content-Type": "application/json" }
+                 }).then(res=>{
+                     this.$message({
+                      message: res.message,
+                      type: 'success'
+                      });
+                      this.selectMaterialTree()   
+                  })
+              }else{
+                let three=two.children.filter(item=>{
+                  return item.name===obj.name
+                })[0]
+                console.log("three",three);
+                if(three===undefined||three===null){
+                  obj.type=this.getType(obj.type[0])
+                  this.$axios.post(this.$api.url.leftAddOneTwo,obj,{
+                     headers: { "Content-Type": "application/json" }
+                 }).then(res=>{
+                     this.$message({
+                      message: res.message,
+                      type: 'success'
+                      });
+                      this.selectMaterialTree()   
+                  })
+                }else{
+                  //鏂板鏍囧噯鍨嬪彿
+                  let four=three.children.filter(item=>{
+                    return item.name===obj.standard
+                  })[0]
+                  if(four===undefined||four===null){
+                     let StandardDto={
+                        "id": three.id,
+                       "specifications": obj.specifications,
+                       "standard": obj.standard
+                     }
+                     this.$axios.post(this.$api.url.leftAddThree,StandardDto,{
+                     headers: { "Content-Type": "application/json" }
+                 }).then(res=>{
+                     this.$message({
+                      message: res.message,
+                      type: 'success'
+                      });
+                      this.selectMaterialTree()   
+                   })
+                  }else{
+                     let specificationsDto={
+                      "id": four.id,
+                       "specifications": obj.specifications
+                     }
+                     this.$axios.post(this.$api.url.leftAddFour,specificationsDto,{
+                     headers: { "Content-Type": "application/json" }
+                 }).then(res=>{
+                     this.$message({
+                      message: res.message,
+                      type: 'success'
+                      });
+                      this.selectMaterialTree()
+                      this.selectVersion()
+                   })
+                  }
+                }
+              }
+              this.resetForm('leftAdd')
+          } else {
+            console.log('error submit!!');
+            return false;
+          }
+        });
+      },
+      resetForm(formName) {
+        this.bomLeftAdd=false
+        this.$refs[formName].resetFields();
+      },
+    leftAddBom(){
       
     },
+    getType(typeName){
+      return typeName==="鎴愬搧"?1:2
+    },
+    handleSelect(item) {
+        console.log(item);
+      },
+      querySearch(queryString, cb) {
+        var restaurants = this.restaurants;
+        var results = queryString ? restaurants.filter(this.createFilter(queryString)) : restaurants;
+        // 璋冪敤 callback 杩斿洖寤鸿鍒楄〃鐨勬暟鎹�
+        cb(results);
+      },
+      querySearchName(queryString, cb) {
+        var restaurants = this.bomName;
+        var results = queryString ? restaurants.filter(this.createFilter(queryString)) : restaurants;
+        // 璋冪敤 callback 杩斿洖寤鸿鍒楄〃鐨勬暟鎹�
+        cb(results);
+      },
+      querySearchStandar(queryString, cb) {
+        var restaurants = this.bomStandard;
+        var results = queryString ? restaurants.filter(this.createFilter(queryString)) : restaurants;
+        // 璋冪敤 callback 杩斿洖寤鸿鍒楄〃鐨勬暟鎹�
+        cb(results);
+      },
+      loadFatherType(){
+        return [{label:"姗¤兌杩炴帴鍣�",value: "姗¤兌杩炴帴鍣�"},{label:"閲戝睘杩炴帴鍣�",value: "閲戝睘杩炴帴鍣�"},
+        {label:"婀挎彃鎷旂數杩炴帴鍣�",value: "婀挎彃鎷旂數杩炴帴鍣�"},{label:"鍒嗘敮缁勪欢",value: "鍒嗘敮缁勪欢"}]
+      },
+      createFilter(queryString) {
+        return (restaurant) => {
+          return (restaurant.value.toLowerCase().indexOf(queryString.toLowerCase()) === 0);
+        };
+      },
     selectDataList() {
 				this.list.forEach(a => {
 					a.code = '[1]'
@@ -212,8 +367,12 @@
       this.selectVersion()
     },
     handleNodeClick(val) {//鏍戠殑鍊�
-      // console.log(val);
-      this.returntree = val
+      if(val.code==='[5]'&&val.children===undefined){
+        console.log(val);
+        this.returntree = val
+        this.typeselect=0
+        this.selectVersion()
+      }
     },
     async selectVersion() {//鐗堟湰
       let v=await this.$axios.get(this.$api.url.selectVersion, {
@@ -296,7 +455,6 @@
       })
     },
     getDefault(arr, index) {
-      console.log(arr);
 			for (const item of arr) {
 				if (item.children && item.children.length > 0) {
 					// 鏈夊瓙鑺傜偣
@@ -347,29 +505,71 @@
           break;
       }
     },
+    // 閫掑綊鏇存敼娣诲姞绾ц仈鎵�闇�灞炴��
     replaceProp(arr){
       for (let index = 0; index < arr.length; index++) {
         let element = arr[index];
         element.label=element.name
         element.value=element.name
-        // if()
+        if(element.children!=undefined){
+          if(element.code==='[4]'){
+            delete element['children']
+            continue
+          }
+          this.replaceProp(element.children)
+        }
       }
     }
   },
   watch:{
     leftAdd: {
-      handler(newVal, oldVal) {
-      console.log("鏂扮殑",newVal);
-      console.log("鏃х殑",oldVal);
-      },
+    handler(newVal, oldVal) {
+    if(this.isLeftAdd){
+      let tree=JSON.parse(JSON.stringify(this.list))
+      let father=null;
+      if(newVal.father!=null&&newVal.father!=''&&newVal.type.length>0){
+          let one=tree.filter(item=>{
+            return item.name===newVal.type[0]
+          })[0]
+          console.log(one);
+          let two=one.children.filter(item=>{
+            return item.name===newVal.father
+          })[0]
+          if(two!=undefined){
+            this.bomName=[]
+            father=JSON.parse(JSON.stringify(two))
+            two.children.forEach(item=>{
+              let obj={label: item.name,value: item.name}
+              this.bomName.push(obj)
+            })
+          }
+      }
+      if(newVal.name!=null&&newVal!=''&&newVal.father!=null&&newVal.father!=''&&newVal.type.length>0){
+          let three=null
+          if(father!=undefined&&father!=null){
+            three=father.children.filter(item=>{
+            return item.name===newVal.name
+          })[0]
+          }
+          if(three!=undefined&&three!=null){
+            this.bomStandard=[]
+            three.children.forEach(item=>{
+              let obj={label: item.name,value: item.name}
+              this.bomStandard.push(obj)
+            })
+          }
+      }
+      }
+    },
      deep: true // 娣卞害鐩戝惉瀵硅薄鍐呴儴灞炴�х殑鍙樺寲锛屽彲閫夌殑
   },
   bomLeftAdd:{
     handler(newval,oldVal){
       if(newval){
        let treeOptions = JSON.parse(JSON.stringify(this.list));
-       console.log(treeOptions);
-			 
+       this.replaceProp(treeOptions)
+			 this.formTypeOptions=treeOptions
+       this.restaurants=this.loadFatherType()
       }
     }
   }
@@ -379,7 +579,9 @@
 
 
 <style scoped>
-.standard {}
+.standard {
+  
+}
 
 .standard .contentTable{
 }
@@ -410,6 +612,7 @@
 .thing .left {
   width: 295px;
   height: calc(100% - 32px);
+  overflow-y: auto;
   border-right: 3px solid rgb(245, 247, 251);
   padding: 16px;
 }

--
Gitblit v1.9.3