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

---
 /dev/null                                         |  107 --------
 src/components/view/standard.vue                  |  246 +++++++++++++++++-
 src/components/view/standard-table/target.vue     |   86 +++++
 src/components/view/standard-table/technology.vue |  109 +++++++
 src/assets/api/controller.js                      |    5 
 src/components/view/standard-table/material.vue   |   61 +++
 src/components/view/standard-table/product.vue    |  130 ++++++++++
 7 files changed, 589 insertions(+), 155 deletions(-)

diff --git a/src/assets/api/controller.js b/src/assets/api/controller.js
index 34890eb..bdc3c61 100644
--- a/src/assets/api/controller.js
+++ b/src/assets/api/controller.js
@@ -6,6 +6,11 @@
 	selectProductByMaterial: "product/selectTreeByMaterial", //鏍规嵁鐗╂枡鏌ヨ椤圭洰琛ㄦ牸
 	selectTechnologyByMaterial: "technology/select",
 	selectAll:"/material/selectAll",//鍙充晶鏁版嵁
+	technologyWrite:"/technology/write",//宸ヨ壓璺嚎锛岀Щ寮�淇濆瓨鐢熶骇瀹氶
+	productWrite:"/product/write",//鎶�鏈寚鏍囷紝绉诲紑淇濆瓨鍐呮帶鍊煎拰鏍囧噯鍊�
+	chooseFather: "/technology/chooseFather",//鑾峰彇宸ュ簭鍒楄〃
+	chooseDevice: "/technology/chooseDevice",//鑾峰彇璁惧缁勫垪琛�
+	addTechnology: "/technology/add",//娣诲姞宸ヨ壓璺嚎
 	// 鎶�鏈鐞�-鎶�鏈枃浠�
 	selectAllOrder: "/orders/selectAllOrder", //鏌ヨ鎵�鏈夎鍗曞垪琛�
 	selectOrderById: "/orders/selectOrderById", //鏍规嵁璁㈠崟id鏌ヨ璁㈠崟璇︽儏
diff --git a/src/components/view/standard-table/bom.vue b/src/components/view/standard-table/bom.vue
deleted file mode 100644
index fffd709..0000000
--- a/src/components/view/standard-table/bom.vue
+++ /dev/null
@@ -1,107 +0,0 @@
-<template>
-    <div class="standard">
-      <div>
-            <el-table :data="tableData" height="800" row-key="id" border
-            :header-cell-style="{border:'0px',background:'#f5f7fa',color:'#606266',boxShadow: 'inset 0 1px 0 #ebeef5',textAlign: 'left'}"
-              @selection-change="handleSelectionChange" default-expand-all
-              :tree-props="{ children: 'children', hasChildren: 'hasChildren' }">
-              <el-table-column type="selection" width="55">
-              </el-table-column>
-              <el-table-column type="index" width="60" label="搴忓彿">
-              </el-table-column>
-              <el-table-column prop="father" label="宸ュ簭" sortable width="200px">
-                <template slot-scope="scope">
-                      <el-tag v-if="scope.row.children" type="primary">01</el-tag>
-                      <span style="color: black">
-                        {{ scope.row.father }}
-                      </span>
-              </template>
-              </el-table-column>
-              <el-table-column sortable label="宸ヨ壓鍚嶇О">
-                <template slot-scope="scope">
-                  <el-tag type="success" v-if="!scope.row.children">02</el-tag>
-                  <span style="color: black">{{ scope.row.name  }}</span>
-                </template>
-              </el-table-column>
-              <el-table-column prop="mname" label="鏉愭枡鍚嶇О">
-              </el-table-column>
-              <el-table-column prop="specifications" label="瑙勬牸">
-              </el-table-column>
-              <el-table-column prop="unit" label="鍗曚綅">
-              </el-table-column>
-              <el-table-column prop="num" label="鏁伴噺">
-              </el-table-column>
-              <!-- <el-table-column label="鎿嶄綔">
-                <el-button style="color: rgb(137, 137, 229);">缂栬緫</el-button>
-              </el-table-column> -->
-            </el-table>
-          </div>
-    </div>
-  </template>
-  
-  <script>
-    export default {
-      data() {
-        return {
-          selects: []
-        }
-      },
-      props:['tableData','tableType'],
-      created() {
-        console.log(this.tableData)
-      },
-      mounted() {
-        
-      },
-      methods: {
-        handleSelectionChange(val) {
-          this.selects = val;
-        }
-      }
-    }
-  </script>
-  
-  <style scoped>
-    .standard {
-      width: 100%;
-      height: 100%;
-    }
-  </style>
-  <style>
-    .standard * {
-      font-size: 14px;
-    }
-  
-    .standard .has-gutter .el-table__cell {
-      background-color: #F0F1F5 !important;
-      color: #333;
-    }
-  
-    .standard .has-gutter .el-table__cell .cell {
-      font-size: 16px;
-      font-weight: 500;
-    }
-  
-    .standard .cell {
-      color: #333;
-      padding-left: 17px !important;
-    }
-  
-    .standard {
-      width: 100%;
-      height: 100%;
-      overflow: auto;
-    }
-  
-    .standard .el-table__body-wrapper {
-      height: 100%;
-    }
-  
-    .standard .el-table__body {
-      height: 100%;
-    }
-    .standard .el-table .el-table__row:not([class*="el-table__row--level-"]) td:nth-child(3){
-      padding-left: 23px !important;
-     }
-  </style>
-  
\ No newline at end of file
diff --git a/src/components/view/standard-table/material.vue b/src/components/view/standard-table/material.vue
index 7ae1a84..66e3416 100644
--- a/src/components/view/standard-table/material.vue
+++ b/src/components/view/standard-table/material.vue
@@ -1,12 +1,13 @@
 <template>
     <div class="standard">
       <div>
-            <el-table :data="tableData" max-height="675" style="width: 100%;margin-bottom: 20px;" row-key="rowId" border
+            <el-table :data="tableData" max-height="675" row-key="rowId" border
+            @select-all="selectAll" @select="selectTr" ref="multipleTable"
             @selection-change="handleSelectionChange" default-expand-all
               :tree-props="{ children: 'children', hasChildren: 'hasChildren' }">
               <el-table-column type="selection" width="55">
               </el-table-column>
-              <el-table-column type="index" width="50" label="搴忓彿">
+              <el-table-column type="index" width="60" label="搴忓彿">
               </el-table-column>
               <el-table-column prop="father" label="宸ュ簭" sortable width="200px">
                 <template slot-scope="scope">
@@ -19,7 +20,7 @@
               <el-table-column prop="tname" sortable label="宸ヨ壓鍚嶇О">
                 <template slot-scope="scope">
                   <el-tag type="success" v-if="scope.row.tname != null">02</el-tag>
-                  <span style="color: black">
+                  <span style="color: #000000">
                     {{ scope.row.tname  }}
                   </span>
                   </template>
@@ -54,16 +55,54 @@
         }
       },
       props:['tableData','tableType'],
-      created() {
-        console.log(this.tableData,this.tableType)
-      },
-      mounted() {
-        
-      },
+      created() {},
+      mounted() {},
       methods: {
+        // 琛ㄦ牸鏍戝叏閮ㄩ�変腑閰嶇疆
+        // 鍏ㄩ��/鍙栨秷閫夋搷浣�
+        selectAll(val) {
+          this.isAllSelect = !this.isAllSelect;
+          let data = this.tableData;
+          this.toggleSelect(data, this.isAllSelect, "all");
+        },
+        //閫夋嫨鏌愯
+        selectTr(selection, row) {
+          this.$set(row, "isChecked", !row.isChecked);
+          this.$nextTick(() => {
+            this.isAllSelect = row.isChecked;
+            this.toggleSelect(row, row.isChecked, "tr");
+          });
+        },
+        //閫掑綊瀛愮骇
+        toggleSelect(data, flag, type) {
+          if (type === "all") {
+            if (data.length > 0) {
+              data.forEach((item) => {
+                this.toggleSelection(item, flag);
+                if (item.children && item.children.length > 0) {
+                  this.toggleSelect(item.children, flag, type);
+                }
+              });
+            }
+          } else {
+            if (data.children && data.children.length > 0) {
+              data.children.forEach((item) => {
+                item.isChecked = !item.isChecked;
+                this.$refs.multipleTable.toggleRowSelection(item, flag);
+                this.toggleSelect(item, flag, type);
+              });
+            }
+          }
+        },
         handleSelectionChange(val) {
-          this.selects = val;
-        }
+          this.deleteList = [];
+          val.forEach((v) => {
+            if (v.id !== undefined) {
+              this.deleteList.push(v.id);
+            }
+          });
+        },
+        // 琛ㄦ牸鏍戝叏閮ㄩ�変腑閰嶇疆  缁撴潫
       }
     }
   </script>
diff --git a/src/components/view/standard-table/product.vue b/src/components/view/standard-table/product.vue
new file mode 100644
index 0000000..80f18e1
--- /dev/null
+++ b/src/components/view/standard-table/product.vue
@@ -0,0 +1,130 @@
+<style scoped>
+    .standard {
+      width: 100%;
+      height: 100%;
+    }
+    .standard * {
+      font-size: 14px;
+    }
+  
+    .standard .has-gutter .el-table__cell {
+      background-color: #F0F1F5 !important;
+      color: #333;
+    }
+  
+    .standard .has-gutter .el-table__cell .cell {
+      font-size: 16px;
+      font-weight: 500;
+    }
+  
+    .standard .cell {
+      color: #333;
+      padding-left: 17px !important;
+    }
+  
+    .standard {
+      width: 100%;
+      height: 100%;
+      overflow: auto;
+    }
+  
+    /* .standard .el-table__body-wrapper {
+      height: 100%;
+    } */
+  
+    /* .standard .el-table__body {
+      height: 100%;
+    } */
+    .standard .el-table .el-table__row:not([class*="el-table__row--level-"]) td:nth-child(3){
+      padding-left: 23px !important;
+     }
+</style>
+<template>
+    <div class="standard">
+        <el-table ref="multipleTable" :data="tableData" row-key="rowId" border max-height="675"
+        @select-all="selectAll" @select="selectTr" 
+        @selection-change="handleSelectionChange" default-expand-all
+        :tree-props="{children: 'children', hasChildren: 'hasChildren'}">
+        <el-table-column type="selection" width="55"></el-table-column>
+        <el-table-column type="index" width="60" label="搴忓彿"></el-table-column>
+        <el-table-column prop="father" label="宸ュ簭">
+            <template slot-scope="scope">
+                <el-tag type="primary" v-if="scope.row.father != null">01</el-tag>
+                <span>{{scope.row.father}}</span>
+            </template>
+        </el-table-column>
+        <el-table-column prop="name" label="宸ヨ壓鍚嶇О">
+            <template slot-scope="scope">
+                <el-tag type="success" v-if="scope.row.name != null">02</el-tag>
+                <span>{{scope.row.name}}</span>
+            </template>  
+        </el-table-column>
+        <el-table-column prop="device" label="璁惧鍚嶇О">
+            <template slot-scope="scope">
+                <el-tag type="info" color="#faf2ff" v-if="scope.row.device != null">
+                    <span style="color: #e1affb">03</span>
+                </el-tag>
+                <span>{{scope.row.device}}</span>
+            </template>
+        </el-table-column>
+        <el-table-column prop="productFather" label="椤圭洰"></el-table-column>
+        <el-table-column prop="unit" label="鍗曚綅"></el-table-column>
+        <el-table-column prop="product" label="鎸囨爣"></el-table-column>
+        </el-table>
+    </div>
+</template>
+<script>
+export default ({
+    data() {
+        
+    },
+    props:['tableData','tableType'],
+    methods:{
+        // 琛ㄦ牸鏍戝叏閮ㄩ�変腑閰嶇疆
+      // 鍏ㄩ��/鍙栨秷閫夋搷浣�
+      selectAll(val) {
+        this.isAllSelect = !this.isAllSelect;
+        let data = this.tableData;
+        this.toggleSelect(data, this.isAllSelect, "all");
+      },
+      //閫夋嫨鏌愯
+		  selectTr(selection, row) {
+        this.$set(row, "isChecked", !row.isChecked);
+        this.$nextTick(() => {
+          this.isAllSelect = row.isChecked;
+          this.toggleSelect(row, row.isChecked, "tr");
+        });
+      },
+      //閫掑綊瀛愮骇
+      toggleSelect(data, flag, type) {
+        if (type === "all") {
+          if (data.length > 0) {
+            data.forEach((item) => {
+              this.toggleSelection(item, flag);
+              if (item.children && item.children.length > 0) {
+                this.toggleSelect(item.children, flag, type);
+              }
+            });
+          }
+        } else {
+          if (data.children && data.children.length > 0) {
+            data.children.forEach((item) => {
+              item.isChecked = !item.isChecked;
+              this.$refs.multipleTable.toggleRowSelection(item, flag);
+              this.toggleSelect(item, flag, type);
+            });
+          }
+        }
+      },
+      handleSelectionChange(val) {
+        this.deleteList = [];
+        val.forEach((v) => {
+          if (v.id !== undefined) {
+            this.deleteList.push(v.id);
+          }
+        });
+      },
+      // 琛ㄦ牸鏍戝叏閮ㄩ�変腑閰嶇疆  缁撴潫
+    }
+})
+</script>
diff --git a/src/components/view/standard-table/target.vue b/src/components/view/standard-table/target.vue
index 7dcfe2a..f07c292 100644
--- a/src/components/view/standard-table/target.vue
+++ b/src/components/view/standard-table/target.vue
@@ -1,14 +1,15 @@
 <template>
     <div class="standard">
       <div>
-        <el-table ref="table" :data="tableData" row-key="rowId" border max-height="675"
+        <el-table ref="multipleTable" :data="tableData" row-key="rowId" border max-height="675"
+        @select-all="selectAll" @select="selectTr" 
         @selection-change="handleSelectionChange" default-expand-all
         :tree-props="{children: 'children', hasChildren: 'hasChildren'}">
         <el-table-column type="selection" width="55"></el-table-column>
         <el-table-column type="index" width="60" label="搴忓彿"></el-table-column>
         <el-table-column prop="tfather" label="宸ュ簭">
             <template slot-scope="scope">
-                <el-tag type="primay" v-if="scope.row.tfather != null">01</el-tag>
+                <el-tag type="primary" v-if="scope.row.tfather != null">01</el-tag>
                 <span>{{scope.row.tfather}}</span>
             </template>
         </el-table-column>
@@ -27,8 +28,20 @@
             </template>
         </el-table-column>
         <el-table-column prop="unit" label="鍗曚綅"></el-table-column>
-        <el-table-column prop="internal" label="鍐呮帶鍊�"></el-table-column>
-        <el-table-column prop="required" label="鏍囧噯鍊�"></el-table-column>
+        <el-table-column prop="internal" label="鍐呮帶鍊�">
+          <template slot-scope="scope">
+            <el-input v-model="scope.row.internal" 
+            v-if="scope.row.internal != null"
+            @blur="updateVal(scope.row)"></el-input>
+          </template>
+        </el-table-column>
+        <el-table-column prop="required" label="鏍囧噯鍊�">
+          <template slot-scope="scope">
+            <el-input v-model="scope.row.required" 
+            v-if="scope.row.required != null"
+            @blur="updateVal(scope.row)"></el-input>
+          </template>
+        </el-table-column>
         </el-table>
       </div>
     </div>
@@ -45,21 +58,74 @@
       created() {},
       mounted() {},
       methods: {
+        // 琛ㄦ牸鏍戝叏閮ㄩ�変腑閰嶇疆
+      // 鍏ㄩ��/鍙栨秷閫夋搷浣�
+      selectAll(val) {
+        this.isAllSelect = !this.isAllSelect;
+        let data = this.tableData;
+        this.toggleSelect(data, this.isAllSelect, "all");
+      },
+      //閫夋嫨鏌愯
+		  selectTr(selection, row) {
+        this.$set(row, "isChecked", !row.isChecked);
+        this.$nextTick(() => {
+          this.isAllSelect = row.isChecked;
+          this.toggleSelect(row, row.isChecked, "tr");
+        });
+      },
+      //閫掑綊瀛愮骇
+      toggleSelect(data, flag, type) {
+        if (type === "all") {
+          if (data.length > 0) {
+            data.forEach((item) => {
+              this.toggleSelection(item, flag);
+              if (item.children && item.children.length > 0) {
+                this.toggleSelect(item.children, flag, type);
+              }
+            });
+          }
+        } else {
+          if (data.children && data.children.length > 0) {
+            data.children.forEach((item) => {
+              item.isChecked = !item.isChecked;
+              this.$refs.multipleTable.toggleRowSelection(item, flag);
+              this.toggleSelect(item, flag, type);
+            });
+          }
+        }
+      },
+      handleSelectionChange(val) {
+        this.deleteList = [];
+        val.forEach((v) => {
+          if (v.id !== undefined) {
+            this.deleteList.push(v.id);
+          }
+        });
+      },
+      // 琛ㄦ牸鏍戝叏閮ㄩ�変腑閰嶇疆  缁撴潫
+        updateVal(row){
+          this.$axios.post(this.$api.url.productWrite,{
+            id : row.pid,
+            internal : row.internal,
+            required : row.required
+          }).then(res=>{
+            this.$message.success(res.message);
+          }).catch(error=>{
+            this.$message.error(error.message);
+          })
+        },
         handleSelectionChange(val) {
           this.selects = val;
         },
-        aaaa(){
-            console.log("aaaaa----",this.targetData);
-        }
       }
     }
   </script>
   
   <style scoped>
   .expand-button {
-  cursor: pointer;
-  color: #1890ff;
-}
+      cursor: pointer;
+      color: #1890ff;
+    }
     .standard {
       width: 100%;
       height: 100%;
diff --git a/src/components/view/standard-table/technology.vue b/src/components/view/standard-table/technology.vue
index 99aa0dd..cffdb58 100644
--- a/src/components/view/standard-table/technology.vue
+++ b/src/components/view/standard-table/technology.vue
@@ -2,6 +2,7 @@
   <div class="standard">
     <div>
           <el-table :data="tableData" max-height="675" row-key="rowId" border
+          @select-all="selectAll" @select="selectTr" ref="multipleTable"
           :header-cell-style="{border:'0px',background:'#f5f7fa',color:'#606266',boxShadow: 'inset 0 1px 0 #ebeef5',textAlign: 'left'}"
             @selection-change="handleSelectionChange" default-expand-all
             :tree-props="{ children: 'children', hasChildren: 'hasChildren' }">
@@ -24,14 +25,33 @@
               </template>
             </el-table-column>
             <el-table-column prop="dg" label="璁惧缁�">
+              <template slot-scope="scope">
+                <div class="showDiv">
+                  <span>{{scope.row.dg}}</span>
+                  <div @click="showDialog">閫夋嫨</div>
+                </div>
+              </template>
             </el-table-column>
-            <el-table-column prop="pq" label="鐢熶骇瀹氶">
-            </el-table-column>
-            <el-table-column label="鎿嶄綔">
-              <el-button style="color: rgb(137, 137, 229);">缂栬緫</el-button>
+            <el-table-column prop="pq" label="鐢熶骇瀹氶(涓�/澶�)">
+              <template slot-scope="scope">
+                  <el-input v-model="scope.row.pq" 
+                  v-if="scope.row.pq != null"
+                  @blur="updatePq(scope.row)"
+                  ></el-input>
+              </template>
             </el-table-column>
           </el-table>
         </div>
+        <el-dialog
+          title="閫夋嫨璁惧缁�"
+          :visible.sync="deviceGroupDialog"
+          width="30%">
+          <span>杩欐槸涓�娈典俊鎭�</span>
+          <span slot="footer" class="dialog-footer">
+            <el-button type="primary" @click="deviceGroupDialog = false">纭� 瀹�</el-button>
+            <el-button @click="deviceGroupDialog = false">鍙� 娑�</el-button>
+          </span>
+        </el-dialog>
   </div>
 </template>
 
@@ -39,7 +59,9 @@
   export default {
     data() {
       return {
-        selects: []
+        deviceGroupDialog:false,
+        selects: [],
+        isAllSelect:false,
       }
     },
     props:['tableData','tableType'],
@@ -50,9 +72,64 @@
       
     },
     methods: {
+      // 琛ㄦ牸鏍戝叏閮ㄩ�変腑閰嶇疆
+      // 鍏ㄩ��/鍙栨秷閫夋搷浣�
+      selectAll(val) {
+        this.isAllSelect = !this.isAllSelect;
+        let data = this.tableData;
+        this.toggleSelect(data, this.isAllSelect, "all");
+      },
+      //閫夋嫨鏌愯
+		  selectTr(selection, row) {
+        this.$set(row, "isChecked", !row.isChecked);
+        this.$nextTick(() => {
+          this.isAllSelect = row.isChecked;
+          this.toggleSelect(row, row.isChecked, "tr");
+        });
+      },
+      //閫掑綊瀛愮骇
+      toggleSelect(data, flag, type) {
+        if (type === "all") {
+          if (data.length > 0) {
+            data.forEach((item) => {
+              this.toggleSelection(item, flag);
+              if (item.children && item.children.length > 0) {
+                this.toggleSelect(item.children, flag, type);
+              }
+            });
+          }
+        } else {
+          if (data.children && data.children.length > 0) {
+            data.children.forEach((item) => {
+              item.isChecked = !item.isChecked;
+              this.$refs.multipleTable.toggleRowSelection(item, flag);
+              this.toggleSelect(item, flag, type);
+            });
+          }
+        }
+      },
       handleSelectionChange(val) {
-        this.selects = val;
-      }
+        this.deleteList = [];
+        val.forEach((v) => {
+          if (v.id !== undefined) {
+            this.deleteList.push(v.id);
+          }
+        });
+      },
+      // 琛ㄦ牸鏍戝叏閮ㄩ�変腑閰嶇疆  缁撴潫
+      showDialog(){
+          this.deviceGroupDialog = true
+      },
+      updatePq(row){
+        this.$axios.post(this.$api.url.technologyWrite,{
+            id : row.id,
+            productionQuota : row.pq
+        }).then(res=>{
+          this.$message.success(res.message);
+        }).catch(error=>{
+          this.$message.error(error.message);
+        })
+      },
     }
   }
 </script>
@@ -62,6 +139,24 @@
     width: 100%;
     height: 100%;
   }
+  .standard .showDiv{
+    cursor: pointer;
+  }
+  .standard .showDiv div{
+    color:#407ab9;
+    display: none;
+  }
+  .showDiv span{
+    cursor: pointer;
+    display: block;
+    width: 100%;
+  }
+  .showDiv:hover span{
+    display: none;
+  }
+  .showDiv:hover div{
+    display: block;
+  }
 </style>
 <style>
   .standard * {
diff --git a/src/components/view/standard.vue b/src/components/view/standard.vue
index c60f440..29fb3c4 100644
--- a/src/components/view/standard.vue
+++ b/src/components/view/standard.vue
@@ -5,7 +5,7 @@
         <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 @click="bomRightUp=true" icon="el-icon-edit-outline">淇敼</el-button>
           <el-button @click="bomRightDl=true" icon="el-icon-delete">鍒犻櫎</el-button>
@@ -49,39 +49,176 @@
           <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">
           <target :tableType="tableType" :tableData="tableData"></target>
         </div>
         <div v-if="this.typeselect == 2">
-          <bom  :tableType="tableType" :tableData="tableData"></bom>
+          <material :tableType="tableType" :tableData="tableData"></material>
         </div>
-        <div v-if="this.typeselect == 3">鐢熶骇宸ヨ壓</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%">
-        <div>
-          <!-- 鐗╂枡娓呭崟鏂板 -->
-          <bomClickAdd v-if="typeselect===2"/>
+      <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>
       <!-- 宸︿晶鐐瑰嚮+鎸夐挳 -->
@@ -123,13 +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,bomClickAdd },
-
+  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,
@@ -171,8 +335,56 @@
     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(){
       
     },
@@ -207,12 +419,10 @@
     TYPE(val) {//绫诲瀷.鏁版嵁
       // console.log(val);
       this.typeselect = val
-
       // console.log(this.typeselect);
       this.selectVersion()
     },
     handleNodeClick(val) {//鏍戠殑鍊�
-      // console.log(val);
       this.returntree = val
     },
     async selectVersion() {//鐗堟湰
@@ -296,7 +506,6 @@
       })
     },
     getDefault(arr, index) {
-      console.log(arr);
 			for (const item of arr) {
 				if (item.children && item.children.length > 0) {
 					// 鏈夊瓙鑺傜偣
@@ -380,9 +589,6 @@
 
 <style scoped>
 .standard {}
-
-.standard .contentTable{
-}
 
 .standard .title .el-button {
   height: 32px;

--
Gitblit v1.9.3