From 1a874fa5f58c97c2cb8b3f38a1a089268f4bf124 Mon Sep 17 00:00:00 2001
From: zouyu <2723363702@qq.com>
Date: 星期一, 11 九月 2023 18:05:52 +0800
Subject: [PATCH] 	modified:   src/assets/api/controller.js 	deleted:    src/components/view/standard-table/bom.vue 	modified:   src/components/view/standard-table/material.vue 	new file:   src/components/view/standard-table/product.vue 	modified:   src/components/view/standard-table/target.vue 	modified:   src/components/view/standard-table/technology.vue 	modified:   src/components/view/standard.vue

---
 src/components/view/standard.vue |  357 ++++++++++++++++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 326 insertions(+), 31 deletions(-)

diff --git a/src/components/view/standard.vue b/src/components/view/standard.vue
index 0b372ee..29fb3c4 100644
--- a/src/components/view/standard.vue
+++ b/src/components/view/standard.vue
@@ -5,17 +5,23 @@
         <el-col :span="12" style="line-height: 32px;">鏍囧噯BOM</el-col>
         <el-col :span="12" style="text-align: right;">
           <el-button type="primary" icon="el-icon-plus" style="background: #004EA2;"
-            @click="bomAddModelVisible = true">鏂板</el-button>
+            @click="showBomAddModel">鏂板</el-button>
           <el-button icon="el-icon-plus">鏂板鐗堟湰</el-button>
-          <el-button icon="el-icon-edit-outline">淇敼</el-button>
-          <el-button icon="el-icon-delete">鍒犻櫎</el-button>
+          <el-button @click="bomRightUp=true" icon="el-icon-edit-outline">淇敼</el-button>
+          <el-button @click="bomRightDl=true" icon="el-icon-delete">鍒犻櫎</el-button>
         </el-col>
       </el-row>
     </div>
     <div class="thing">
       <div class="left">
-        <el-input v-model="search" suffix-icon="el-icon-search" placeholder="璇疯緭鍏ユ悳绱㈠唴瀹�" size="small" clearable></el-input>
-
+        <el-row>
+          <el-col :span="21">
+            <el-input v-model="search" suffix-icon="el-icon-search" placeholder="璇疯緭鍏ユ悳绱㈠唴瀹�" size="small" clearable></el-input>
+          </el-col>
+          <el-col :span="2">
+            <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' }"
           node-key="id" :filter-node-method="filterNode" @node-click="handleNodeClick" highlight-current>
           <div class="custom-tree-node" slot-scope="{ node, data }">
@@ -43,36 +49,208 @@
           <el-input v-model="searchName" size="small" placeholder="璇疯緭鍏�" style="width: 224px;margin-right: 24px;"
             clearable></el-input>
           <span>{{ tableType == 1 ? '鐗堟湰锛�' : '鐗堟湰锛�' }}</span>
-          <el-select v-model="VER" @change="verevent" style="width: 280px;" placeholder="璇烽�夋嫨">
+          <el-select size="small" v-model="VER" @change="verevent" style="width: 280px;" placeholder="璇烽�夋嫨">
             <el-option v-for="item in version" :key="item" :label="item" :value="item">
             </el-option>
           </el-select>
-          <el-button size="mini" @click="() => { searchName = ''; selectProductTableData() }"><span>閲� 缃�</span></el-button>
+          <el-button style="margin-left:10px;" size="mini" @click="() => { searchName = ''; selectProductTableData() }"><span>閲� 缃�</span></el-button>
           <el-button size="mini" type="primary" style="background: #004EA2;" @click="selectProductTableData"><span>鏌�
               璇�</span></el-button>
         </div>
 
-        <div class="contentTable" v-if="this.typeselect == 0">
+        <div v-if="this.typeselect == 0">
           <technology  :tableType="tableType" :tableData="tableData"></technology>
         </div>
-        <div v-if="this.typeselect == 1">鎶�鏈寚鏍�</div>
-        <div v-if="this.typeselect == 2">
-          <bom  :tableType="tableType" :tableData="tableData"></bom>
+        <div v-if="this.typeselect == 1">
+          <target :tableType="tableType" :tableData="tableData"></target>
         </div>
-        <div v-if="this.typeselect == 3">鐢熶骇宸ヨ壓</div>
+        <div v-if="this.typeselect == 2">
+          <material :tableType="tableType" :tableData="tableData"></material>
+        </div>
+        <div v-if="this.typeselect == 3">
+          <product :tableType="tableType" :tableData="tableData"></product>
+        </div>
         
       </div>
     </div>
 
 
     <div class="bom-add-model">
-      <el-dialog title="BOM鏂板" :visible.sync="bomAddModelVisible" width="30%">
-        <el-form>
-            
-        </el-form>
+      <el-dialog title="BOM鏂板" :visible.sync="bomAddModelVisible" width="35%">
+        <!-- 宸ヨ壓璺嚎 -->
+        <div v-if="typeselect == 0">銆�
+          <el-form :model="technologyForm" :inline="true" class="demo-form-inline" label-position="right"
+          :rules="boomRules" ref="boomForm" label-width="90px">
+            <el-form-item label="宸ュ簭:" prop="father" width="250">
+              <el-select v-model="technologyForm.father" 
+              style="width:200px;" placeholder="璇疯緭鍏ユ垨閫夋嫨宸ュ簭">
+                <el-option :value="item.father" :label="item.father" v-for="(item,index) in fatherList" :key="index"></el-option>
+              </el-select>
+            </el-form-item>
+            <el-form-item label="宸ヨ壓鍚嶇О:" prop="name" width="250">
+              <el-input placeholder="璇疯緭鍏ュ伐鑹哄悕绉�" style="width:200px;"
+              v-model="technologyForm.name"></el-input>
+            </el-form-item>
+            <el-form-item label="璁惧缁�:" prop="deviceGroup" width="250">
+              <el-select placeholder="璇烽�夋嫨璁惧缁�"
+              style="width:200px;"
+              v-model="technologyForm.deviceGroup">
+              <el-option :value="item.father" 
+              v-for="(item,index) in deviceList" :key="index" :label="item.father"></el-option>
+              </el-select>
+            </el-form-item>
+            <el-form-item label="鐢熶骇瀹氶:" prop="productionQuota" width="250">
+              <el-input style="width:200px;" v-model.number="technologyForm.productionQuota" placeholder="璇疯緭鍏ョ敓浜у畾棰�" />
+            </el-form-item>
+          </el-form>
+        </div>
+        <!-- 鎶�鏈寚鏍� -->
+        <div v-if="typeselect == 1">
+          <el-form :model="targetForm" :inline="true" class="demo-form-inline" label-position="right"
+          label-width="80px">
+            <el-form-item label="鎸囨爣鍚嶇О:" prop="father" width="250">
+              <el-input style="width:200px;" v-model="targetForm.pname" placeholder="璇疯緭鍏ュ崟浣�"/>
+            </el-form-item>
+            <el-form-item label="鍗曚綅:" prop="name" width="250">
+              <el-input style="width:200px;" v-model="targetForm.unit" placeholder="璇疯緭鍏ュ崟浣�"/>
+            </el-form-item>
+            <el-form-item label="鍐呮帶鍊�:" prop="dg" width="250">
+              <el-input style="width:200px;" v-model="targetForm.internal" placeholder="璇疯緭鍏ュ崟浣�"/>
+            </el-form-item>
+            <el-form-item label="鏍囧噯鍊�:" prop="unit" width="250">
+              <el-input style="width:200px;" v-model="targetForm.required" placeholder="璇疯緭鍏ュ崟浣�"/>
+            </el-form-item>
+          </el-form>
+        </div>
+        <!-- 鐗╂枡娓呭崟 -->
+        <div v-if="typeselect == 2">
+          <el-form :model="materialForm" class="demo-form-inline" label-position="right"
+          label-width="80px">
+          <el-row>
+            <el-col :span="12">
+              <el-form-item label="瑙勬牸鍨嬪彿:" prop="father" width="250">
+                <el-input style="width:200px;" v-model="materialForm.pname" placeholder="璇疯緭鍏ュ崟浣�"/>
+              </el-form-item>
+              </el-col>
+              <el-col :span="12" style="text-align: right;">
+              <el-form-item label="浜у搧澶х被:" prop="name" width="250">
+                <el-select placeholder="璇烽�夋嫨浜у搧澶х被"
+                style="width:240px;" v-model="materialForm.dg">
+                <el-option value="1">1</el-option>
+                  <el-option value="2">2</el-option>
+                  <el-option value="3">3</el-option>
+                  <el-option value="4">4</el-option>
+                </el-select>            
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row>
+            <el-col :span="12">
+              <el-form-item label="鏉愭枡淇℃伅"></el-form-item>
+            </el-col>
+            <el-col :span="12" style="text-align: right;">
+              <el-button size="mini" style="text-align: right;">娣诲姞琛�</el-button>
+            </el-col>
+          </el-row>
+          <el-row>
+            <el-col :span="24">
+              <el-table >
+                <el-table-column label="鏉愭枡鍚嶇О"></el-table-column>
+                <el-table-column label="瑙勬牸鍨嬪彿"></el-table-column>
+                <el-table-column label="鍗曚綅"></el-table-column>
+                <el-table-column label="鏁伴噺"></el-table-column>
+              </el-table>
+            </el-col>
+          </el-row>
+          </el-form>
+        </div>
+        <!-- 鐢熶骇宸ヨ壓 -->
+        <div v-if="typeselect == 3">
+          <el-form :model="technologyForm" :inline="true" class="demo-form-inline" label-position="right"
+          label-width="80px">
+            <el-form-item label="宸ュ簭:" prop="father" width="250">
+              <el-select v-model="technologyForm.father" 
+              style="width:200px;"
+              placeholder="璇疯緭鍏ユ垨閫夋嫨鐢熶骇瀹氶">
+                <el-option value="1">1</el-option>
+                <el-option value="2">2</el-option>
+                <el-option value="3">3</el-option>
+                <el-option value="4">4</el-option>
+              </el-select>
+            </el-form-item>
+            <el-form-item label="宸ヨ壓鍚嶇О:" prop="name" width="250">
+              <el-select placeholder="璇疯緭鍏ユ垨閫夋嫨宸ヨ壓鍚嶇О"
+              style="width:200px;"
+              v-model="technologyForm.name">
+              <el-option value="1">1</el-option>
+                <el-option value="2">2</el-option>
+                <el-option value="3">3</el-option>
+                <el-option value="4">4</el-option>
+              </el-select>
+            </el-form-item>
+            <el-form-item label="璁惧:" prop="dg" width="250">
+              <el-select placeholder="璇烽�夋嫨璁惧"
+              style="width:200px;"
+              v-model="technologyForm.dg">
+              <el-option value="1">1</el-option>
+                <el-option value="2">2</el-option>
+                <el-option value="3">3</el-option>
+                <el-option value="4">4</el-option>
+              </el-select>
+            </el-form-item>
+            <el-form-item label="椤圭洰:" prop="dg" width="250">
+              <el-select placeholder="璇烽�夋嫨椤圭洰"
+              style="width:200px;"
+              v-model="technologyForm.dg">
+              <el-option value="1">1</el-option>
+                <el-option value="2">2</el-option>
+                <el-option value="3">3</el-option>
+                <el-option value="4">4</el-option>
+              </el-select>
+            </el-form-item>
+            <el-form-item label="鍗曚綅:" prop="unit" width="250">
+              <el-input style="width:200px;" v-model="technologyForm.unit" placeholder="璇疯緭鍏ュ崟浣�"/>
+            </el-form-item>
+            <el-form-item label="鎸囨爣:" prop="pq" width="250">
+              <el-input style="width:200px;" v-model="technologyForm.pq" placeholder="璇疯緭鍏ユ寚鏍�" />
+            </el-form-item>
+          </el-form>
+        </div>
         <span slot="footer" class="dialog-footer">
           <el-button @click="bomAddModelVisible = false">鍙� 娑�</el-button>
-          <el-button type="primary" @click="bomAddModelVisible = false">纭� 瀹�</el-button>
+          <el-button type="primary" @click="confirmAdd('boomForm')">纭� 瀹�</el-button>
+        </span>
+      </el-dialog>
+      <!-- 宸︿晶鐐瑰嚮+鎸夐挳 -->
+      <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>
+        </el-form>
+        <span slot="footer" class="dialog-footer">
+          <el-button @click="bomLeftAdd = false">鍙� 娑�</el-button>
+          <el-button type="primary" @click="bomLeftAdd = false">纭� 瀹�</el-button>
+        </span>
+      </el-dialog>
+            <!-- 鍙充笂渚х偣鍑讳慨鏀规寜閽� -->
+      <el-dialog title="BOM淇敼" :visible.sync="bomRightUp" width="30%">
+        <el-form>
+            淇敼
+        </el-form>
+        <span slot="footer" class="dialog-footer">
+          <el-button @click="bomRightUp = false">鍙� 娑�</el-button>
+          <el-button type="primary" @click="bomRightUp = false">纭� 瀹�</el-button>
+        </span>
+      </el-dialog>
+        <!-- 鍙充笂渚х偣鍑诲垹闄ゆ寜閽� -->
+      <el-dialog title="BOM鍒犻櫎" :visible.sync="bomRightDl" width="30%">
+        <el-form>
+            鍒犻櫎
+        </el-form>
+        <span slot="footer" class="dialog-footer">
+          <el-button @click="bomRightDl = false">鍙� 娑�</el-button>
+          <el-button type="primary" @click="bomRightDl = false">纭� 瀹�</el-button>
         </span>
       </el-dialog>
     </div>
@@ -82,12 +260,40 @@
 <script>
 import technology from "./standard-table/technology.vue"
 import material from "./standard-table/material.vue"
-import bom from "./standard-table/bom.vue"
+import target from "./standard-table/target.vue"
+import product from "./standard-table/product.vue"
+import bomClickAdd from '@/components/view/standard-box/bomClickAdd'
 export default {
-  components: { technology,material,bom },
-
+  components: { technology,material,target,product,bomClickAdd },
   data() {
     return {
+      //宸ュ簭鍒楄〃
+      fatherList:[],
+      //璁惧缁勫垪琛�
+      deviceList:[],
+      technologyForm:{
+        father:'',
+        name:'',
+        deviceGroup:'',
+        productionQuota:''
+      },
+      targetForm:{
+        pname:'',
+        unit:'',
+        internal:'',
+        required: ''
+      },
+      formTypeOptions:[],
+      materialForm:{},
+      boomRules:{
+        father:{required:true,message:'宸ュ簭涓嶈兘涓虹┖',trigger:'change'},
+        name:{required:true,message:'宸ヨ壓鍚嶇О涓嶈兘涓虹┖',trigger:'blur'},
+        deviceGroup:{required:true,message:'璁惧缁勪笉鑳戒负绌�',trigger:'change'},
+        productionQuota:[
+          {required:true,message:'鐢熶骇瀹氶涓嶈兘涓虹┖',trigger:'blur'},
+          {type:'number',required:true,message:'鏁版嵁绫诲瀷蹇呴』鏄函鏁板瓧',trigger:'blur'}
+        ]
+      },
       // BOM鏍戞暟鎹粨鏋�
       list: [],
       search: null,
@@ -96,14 +302,25 @@
       checkTreeNode: {},// 鐐瑰嚮閫変腑鏍戣妭鐐�
       tableData: [],
       bomAddModelVisible: false,// 鎺у埗bom鏂板妯℃�佹鏄惁鏄剧ず
+      bomLeftAdd: false,
+      bomRightUp: false,
+      bomRightDl: false,
+      formTypeOptions: null,
       typeselect: 0,
       returntree: {
         id:28,
       },
       version: {},
+      leftAdd:{
+        type: null,
+        father: null,
+        standard: null,
+        name: null,
+        specifications: null
+      },
       VER: {},
       verdata: {},
-      character: 0,
+      character: 0
     }
   },
   // watch: {
@@ -118,8 +335,59 @@
     this.tableType=0
     this.selectMaterialTree()
     this.selectVersion()
+    console.log(this.formTypeOptions);
   },
   methods: {
+    confirmAdd(formName){
+      this.$refs[formName].validate(valid=>{
+        if(valid){
+          console.log(this.technologyForm);
+          this.$axios.post(this.$api.url.addTechnology,
+          {
+            "specificationsId": this.returntree.id,
+            "technologyDto": JSON.stringify({
+                deviceGroup: this.technologyForm.deviceGroup,
+                father: this.technologyForm.father,
+                name: this.technologyForm.name,
+                productionQuota: this.technologyForm.productionQuota,
+              })
+          },{
+            headers: { "Content-Type": "application/json" }
+          }).then(res=>{
+            this.$message.success(res.message);
+          }).catch(error=>{
+            this.$message.error(error.message);
+          })
+          this.bomAddModelVisible = false;
+        }
+      })
+    },
+    //鑾峰彇宸ュ簭鍒楄〃
+    getFatherList(){
+      this.$axios.get(this.$api.url.chooseFather,{
+        params:{specificationsId : this.returntree.id}
+      }).then(res=>{
+        this.fatherList = res.data;
+      }).catch(error=>{
+        this.$message.error(error.message);
+      })
+    },
+    //鑾峰彇璁惧缁勫垪琛�
+    getDeviceList(){
+      this.$axios.get(this.$api.url.chooseDevice).then(res=>{
+        this.deviceList = res.data;
+      }).catch(error=>{
+        this.$message.error(error.message);
+      })
+    },
+    showBomAddModel(){
+      this.getFatherList();
+      this.getDeviceList();
+      this.bomAddModelVisible = true
+    },
+    startLeftAdd(){
+      
+    },
     selectDataList() {
 				this.list.forEach(a => {
 					a.code = '[1]'
@@ -151,12 +419,10 @@
     TYPE(val) {//绫诲瀷.鏁版嵁
       // console.log(val);
       this.typeselect = val
-
-      console.log(this.typeselect);
+      // console.log(this.typeselect);
       this.selectVersion()
     },
     handleNodeClick(val) {//鏍戠殑鍊�
-      // console.log(val);
       this.returntree = val
     },
     async selectVersion() {//鐗堟湰
@@ -187,12 +453,18 @@
         }
       }).then(res => {
         let arr = res.data;
-        console.log(arr);
-        for(var i=0;i<arr.length;i++){
-            arr[i].id = "0" + i;
-        }
+        this.formatData(arr)
         this.tableData = arr;
       })
+    },
+    formatData(data){
+      let arr = data;
+      for(var i=0;i<arr.length;i++){
+            arr[i].rowId = Math.random();
+            if(arr[i].children != undefined){
+              this.formatData(arr[i].children);
+            }
+        }
     },
     verevent(val) {
       // console.log(val);
@@ -283,7 +555,33 @@
           this.tableData = productList
           break;
       }
+    },
+    replaceProp(arr){
+      for (let index = 0; index < arr.length; index++) {
+        let element = arr[index];
+        element.label=element.name
+        element.value=element.name
+        // if()
+      }
     }
+  },
+  watch:{
+    leftAdd: {
+      handler(newVal, oldVal) {
+      console.log("鏂扮殑",newVal);
+      console.log("鏃х殑",oldVal);
+      },
+     deep: true // 娣卞害鐩戝惉瀵硅薄鍐呴儴灞炴�х殑鍙樺寲锛屽彲閫夌殑
+  },
+  bomLeftAdd:{
+    handler(newval,oldVal){
+      if(newval){
+       let treeOptions = JSON.parse(JSON.stringify(this.list));
+       console.log(treeOptions);
+			 
+      }
+    }
+  }
   }
 }
 </script>
@@ -291,9 +589,6 @@
 
 <style scoped>
 .standard {}
-
-.standard .contentTable{
-}
 
 .standard .title .el-button {
   height: 32px;

--
Gitblit v1.9.3