From 9ddf303ca99059fac2d6b83829f2d39c04d1cf5f Mon Sep 17 00:00:00 2001
From: Fixiaobai <fixiaobai@163.com>
Date: 星期三, 13 九月 2023 18:04:20 +0800
Subject: [PATCH] Merge branch 'master' of http://192.168.0.22:9001/r/mom-before

---
 src/components/view/technology.vue                |   15 
 src/components/view/mbom.vue                      |  398 +++---
 src/components/view/technical.vue                 |   20 
 src/view/index.vue                                | 1140 +++++++++----------
 src/assets/api/controller.js                      |   14 
 src/components/view/sale.vue                      |   36 
 src/components/view/standard-table/material.vue   |   52 
 src/components/view/standard-table/product.vue    |   41 
 src/components/view/standard.vue                  |  417 +++++-
 src/components/view/laboratoryManagement.vue      |  206 ++-
 src/components/view/self-inspection.vue           |    2 
 src/components/view/equipmentmaintain.vue         |   57 
 src/components/view/record-content.vue            |    2 
 src/components/view/standard-table/target.vue     |   34 
 src/components/view/Technicalindex.vue            |  963 ++++++++--------
 src/components/view/standard-table/technology.vue |   40 
 16 files changed, 1,907 insertions(+), 1,530 deletions(-)

diff --git a/src/assets/api/controller.js b/src/assets/api/controller.js
index 7817ae6..cacd6d3 100644
--- a/src/assets/api/controller.js
+++ b/src/assets/api/controller.js
@@ -17,7 +17,18 @@
 	chooseTechByStandard:"/product/chooseTech",//鍙充笂瑙掓柊澧�-->鎶�鏈寚鏍�-->閫夋嫨宸ュ簭,宸ヨ壓
 	chooseFatherByStandard:"/product/chooseFather",//鍙充笂瑙掓柊澧�-->鎶�鏈寚鏍�-->閫夋嫨椤圭洰鐖剁被
 	addProductByStandard:"/product/add",//鍙充笂瑙掓柊澧�-->鎶�鏈寚鏍�
-
+	addMBomByStandard:"/mbom/add",//鍙充笂瑙掓柊澧�-->鐗╂枡娓呭崟
+	chooseTechByMBom:"/mbom/chooseTech",//鍙充笂瑙掓柊澧�-->鐗╂枡娓呭崟-->閫夋嫨宸ュ簭,宸ヨ壓
+	mBomWrite:"/mbom/write",//鐗╂枡娓呭崟-->鏁伴噺,绉诲紑淇濆瓨
+	chooseTechByProduct:"/technique/chooseTech",//鍙充笂瑙掓柊澧�-->鐢熶骇宸ヨ壓-->閫夋嫨宸ュ簭,宸ヨ壓
+	addTechniqueByStandard:"/technique/add",//鍙充笂瑙掓柊澧�-->鐢熶骇宸ヨ壓
+	chooseProByProduct:"/technique/choosePro",//鍙充笂瑙掓柊澧�-->鐢熶骇宸ヨ壓-->閫夋嫨椤圭洰(鐖跺瓙),鍗曚綅
+	chooseDevByProduct:"/technique/chooseDev",//鍙充笂瑙掓柊澧�-->鐢熶骇宸ヨ壓-->閫夋嫨璁惧
+	addVersion:"/material/addVersion",//娣诲姞鍚屼竴涓瀷鍙峰伐鑹鸿矾绾�,鎶�鏈寚鏍�,鐗╂枡娓呭崟,鐢熶骇宸ヨ壓鐨勭増鏈�
+	delAllByTechnology:"/technology/delAllTech",//宸ヨ壓璺嚎-鎵归噺鍒犻櫎
+	delAllByTarget:"/product/delAllPro",//鎶�鏈寚鏍�-鎵归噺鍒犻櫎
+	delAllByMBom:"/mbom/delAllMbom",//鐗╂枡娓呭崟-鎵归噺鍒犻櫎
+	delAllByProduct:"/technique/delAllTeq",//鐢熶骇宸ヨ壓-鎵归噺鍒犻櫎
 	// 鎶�鏈鐞�-鎶�鏈枃浠�
 	selectAllOrder: "/orders/selectAllOrder", //鏌ヨ鎵�鏈夎鍗曞垪琛�
 	selectOrderById: "/orders/selectOrderById", //鏍规嵁璁㈠崟id鏌ヨ璁㈠崟璇︽儏
@@ -149,6 +160,7 @@
 	delQueById:"/techniqueModel/delQueById",//鍒犻櫎
 	delAllQue:"/techniqueModel/delAllQue",//鎵归噺鍒犻櫎
 	selecQueById:"/techniqueModel/selecQueById",//缂栬緫
+	writeQueById:"/techniqueModel/writeQueById",//缂栬緫浼犲弬
 
 }
 const url = {
diff --git a/src/components/view/Technicalindex.vue b/src/components/view/Technicalindex.vue
index 9211f57..96f7f9f 100644
--- a/src/components/view/Technicalindex.vue
+++ b/src/components/view/Technicalindex.vue
@@ -1,320 +1,242 @@
 <template>
 	<div class="record_content">
 		<div class="title">
-            <el-row>
+			<el-row>
 				<el-col :span="12" style="line-height: 32px;">鎶�鏈寚鏍囩淮鎶�</el-col>
 				<el-col :span="12" style="text-align: right;">
 					<el-button type="primary" icon="el-icon-plus" style="background: #004EA2;" @click="event">鏂板</el-button>
 					<!-- <el-button icon="el-icon-edit-outline" @click="modify">淇敼</el-button> -->
-					<el-button icon="el-icon-delete"  @click="dels" >鍒犻櫎</el-button>
+					<el-button icon="el-icon-delete" @click="dels">鍒犻櫎</el-button>
 				</el-col>
 			</el-row>
 		</div>
-     
-        <div>
-            <!-- 缂栬緫寮圭獥 -->
-            <div>
-            <el-dialog
-            title="鎶�鏈寚鏍囩紪杈�"
-            :visible.sync="modifyevent"
-            width="40%"
-            :before-close="handleClose">
-            <el-form ref="form" :model="form" label-width="80px">
-                <el-form-item label="绫诲瀷">
-                    <template>
-                        <el-select v-model="value" placeholder="璇烽�夋嫨" style="width: 560px;">
-                            <el-option
-                            v-for="item in options"
-                            :key="item.value"
-                            :label="item.label"
-                            :value="item.value">
-                            </el-option>
-                        </el-select>
-                        </template>
-                    </el-form-item>
-                <el-row>
-                    <el-col :span="11">
-                        <el-form-item label="宸ュ簭">
-                            <el-input v-model="form.name"  placeholder="璇疯緭鍏ユ垨閫夋嫨宸ュ簭"></el-input>
-                        </el-form-item>
-                    </el-col>
-                    <el-col :span="11" :offset="2">
-                        <el-form-item label="宸ヨ壓">
-                            <el-input v-model="form.name"  placeholder="璇疯緭鍏ユ垨閫夋嫨宸ヨ壓"></el-input>
-                        </el-form-item>
-                     </el-col>
-                </el-row>
+		<div style="height: calc(100% - 42px);">
+			<!-- 缂栬緫寮圭獥 -->
+			<div>
+				<el-dialog title="鎶�鏈寚鏍囩紪杈�" :visible.sync="modifyevent" width="40%" :before-close="handleClose">
+					<el-form ref="form" :model="form" label-width="80px">
+						<el-form-item label="绫诲瀷">
+							<template>
+								<el-select v-model="value" placeholder="璇烽�夋嫨" style="width: 560px;">
+									<el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value">
+									</el-option>
+								</el-select>
+							</template>
+						</el-form-item>
+						<el-row>
+							<el-col :span="11">
+								<el-form-item label="宸ュ簭">
+									<el-input v-model="form.name" placeholder="璇疯緭鍏ユ垨閫夋嫨宸ュ簭"></el-input>
+								</el-form-item>
+							</el-col>
+							<el-col :span="11" :offset="2">
+								<el-form-item label="宸ヨ壓">
+									<el-input v-model="form.name" placeholder="璇疯緭鍏ユ垨閫夋嫨宸ヨ壓"></el-input>
+								</el-form-item>
+							</el-col>
+						</el-row>
 
-                <el-row>
-                    <el-col :span="11">
-                        <el-form-item label="椤圭洰缁�">
-                            <el-input v-model="form.name"  placeholder="璇烽�夋嫨"></el-input>
-                        </el-form-item>
-                    </el-col>
-                    <el-col :span="11" :offset="2">
-                        <el-form-item label="椤圭洰">
-                            <el-input v-model="form.name"  placeholder="璇疯緭鍏ラ」鐩�"></el-input>
-                        </el-form-item>
-                     </el-col>
-                </el-row>
+						<el-row>
+							<el-col :span="11">
+								<el-form-item label="椤圭洰缁�">
+									<el-input v-model="form.name" placeholder="璇烽�夋嫨"></el-input>
+								</el-form-item>
+							</el-col>
+							<el-col :span="11" :offset="2">
+								<el-form-item label="椤圭洰">
+									<el-input v-model="form.name" placeholder="璇疯緭鍏ラ」鐩�"></el-input>
+								</el-form-item>
+							</el-col>
+						</el-row>
 
-                <el-form-item label="鍗曚綅">
-                    <el-input v-model="form.name"  placeholder="璇疯緭鍏ュ崟浣�" style="width: 220px;"></el-input>
-                </el-form-item>
-                </el-form>
-            <span slot="footer" class="dialog-footer">
-                <el-button @click="modifyevent = false">鍙� 娑�</el-button>
-                <el-button type="primary" @click="modifyevent = false">纭� 瀹�</el-button>
-            </span>
-            </el-dialog>
-            </div>
-		<div class="choose">
-            <span>绫诲瀷锛�</span>
-			<el-select v-model="search.type" size="small" placeholder="璇烽�夋嫨" @change="TYpe" style="width: 224px;margin-right: 30px;">
-				<el-option label="姗¤兌杩炴帴鍣�" :value="0"></el-option>
-				<el-option label="閲戝睘杩炴帴鍣�" :value="1"></el-option>
-				<el-option label="婀挎彃鎷旂數杩炴帴鍣�" :value="2"></el-option>
-				<el-option label="鍒嗘敮缁勪欢" :value="3"></el-option>
-			</el-select>
-			<!-- <span>宸ュ簭锛�</span>
+						<el-form-item label="鍗曚綅">
+							<el-input v-model="form.name" placeholder="璇疯緭鍏ュ崟浣�" style="width: 220px;"></el-input>
+						</el-form-item>
+					</el-form>
+					<span slot="footer" class="dialog-footer">
+						<el-button @click="modifyevent = false">鍙� 娑�</el-button>
+						<el-button type="primary" @click="modifyevent = false">纭� 瀹�</el-button>
+					</span>
+				</el-dialog>
+			</div>
+			<div class="choose">
+				<span>绫诲瀷锛�</span>
+				<el-select v-model="search.type" size="small" placeholder="璇烽�夋嫨" @change="TYpe"
+					style="width: 224px;margin-right: 30px;">
+					<el-option label="姗¤兌杩炴帴鍣�" :value="0"></el-option>
+					<el-option label="閲戝睘杩炴帴鍣�" :value="1"></el-option>
+					<el-option label="婀挎彃鎷旂數杩炴帴鍣�" :value="2"></el-option>
+					<el-option label="鍒嗘敮缁勪欢" :value="3"></el-option>
+				</el-select>
+				<!-- <span>宸ュ簭锛�</span>
 			<el-select v-model="search.name" size="small" placeholder="璇烽�夋嫨" style="width: 224px;margin-right: 30px;">
 				<el-option v-for="(a, ai) in process" key="ai" :label="a.name" :value="a.id"></el-option>
 			</el-select>
 			<el-button size="mini"><span>閲� 缃�</span></el-button>
 			<el-button size="mini" type="primary" style="background: #004EA2;"><span>鏌ヨ</span></el-button> -->
-		</div>
-		<div class="thing">
-        <!-- 涓讳綋宸� -->
-			<div  class="left">
-				<el-input v-model="search.technology" 
-                suffix-icon="el-icon-search" 
-                placeholder="璇疯緭鍏ユ悳绱㈠唴瀹�" 
-                size="small" 
-                clearable @input="query" ></el-input>
-                    <el-tree :data="list" ref="tree" :props="{children: 'children',label: 'father'}" node-key="name" default-expand-all
-                    @node-click="handleNodeClick" highlight-current
-                        >
-                    <div class="custom-tree-node" slot-scope="{ node, data }">
-						<span><i :class="`node_i ${data.code != '[2]'?'el-icon-folder-opened':'el-icon-tickets'}`"></i>
-							{{data.code}} {{ data.name }}</span>
-						<!-- <el-button type="text" size="mini" @click.stop="remove(node, data)">
+			</div>
+			<div class="thing">
+				<!-- 涓讳綋宸� -->
+				<div class="left">
+					<el-input v-model="search.technology" suffix-icon="el-icon-search" placeholder="璇疯緭鍏ユ悳绱㈠唴瀹�" size="small"
+						clearable @input="query"></el-input>
+					<el-tree :data="list" ref="tree" :props="{children: 'children',label: 'father'}" node-key="name"
+						default-expand-all @node-click="handleNodeClick" highlight-current>
+						<div class="custom-tree-node" slot-scope="{ node, data }">
+							<span><i :class="`node_i ${data.code != '[2]'?'el-icon-folder-opened':'el-icon-tickets'}`"></i>
+								{{data.code}} {{ data.name }}</span>
+							<!-- <el-button type="text" size="mini" @click.stop="remove(node, data)">
 							<i class="el-icon-delete"></i>
 						</el-button> -->
-					</div>
-				</el-tree>
-			</div>
-            <!-- 涓讳綋鍙� -->
-			<div class="right">
-                <el-table
-                    :data="tableData"
-                    style="width: 100%;margin-bottom: 20px;"
-                    row-key="name"
-                    border
-                    @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">
-                    </el-table-column>
-                    <el-table-column
-                    prop="name"
-                    label="椤圭洰"
-                    sortable
-                    width="400px">
-                        <template slot-scope="scope">
-                        <el-tag>
-                            <div class="firstDiv" :style="`color: ${scope.row.children? '#16a7ff' : '#58c173'}`">
-                            {{ scope.row.children ? "01" : "02" }}
-                            </div>
-                        </el-tag>
-                        <span style="color: black">{{ scope.row.name }}</span>
+						</div>
+					</el-tree>
+				</div>
+				<!-- 涓讳綋鍙� -->
+				<div class="right">
+					<el-table :data="tableData" style="width: 100%;overflow-y: auto;min-height: 100%"
+						max-height="100%" row-key="name" border @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">
+						</el-table-column>
+						<el-table-column prop="name" label="椤圭洰" sortable width="400px">
+							<template slot-scope="scope">
+								<el-tag>
+									<div class="firstDiv" :style="`color: ${scope.row.children? '#16a7ff' : '#58c173'}`">
+										{{ scope.row.children ? "01" : "02" }}
+									</div>
+								</el-tag>
+								<span style="color: black">{{ scope.row.name }}</span>
+							</template>
+						</el-table-column>
+						<el-table-column prop="unit" label="鍗曚綅">
+						</el-table-column>
+						<el-table-column prop="address" label="鎿嶄綔" width="200px">
+							<template slot-scope="scope" style="text-align: center;">
+								<div v-if="!scope.row.children">
+									<el-button type="text" size="mini" @click="childrenClick(scope.row)">缂栬緫</el-button>
+									<el-button type="text" size="mini" @click="deleteRow(scope.$index, scope.row)">鍒犻櫎</el-button>
+								</div>
+							</template>
+						</el-table-column>
+					</el-table>
+				</div>
+				<div>
+					<el-dialog title="缂栬緫鎶�鏈唴瀹�" :visible.sync="upDia" width="500px">
+						<div class="body">
 
-                        </template>
-                        </el-table-column>
-                        <el-table-column
-                        prop="unit"
-                        label="鍗曚綅">
-                        </el-table-column>
-                        <el-table-column
-                        prop="address"
-                        label="鎿嶄綔"
-                        width="200px">
-                        <template slot-scope="scope" style="text-align: center;">
-                            <div v-if="!scope.row.children">
-                        <el-button type="text" size="mini" @click="childrenClick(scope.row)">缂栬緫</el-button>
-                        <el-button type="text" size="mini" @click="deleteRow(scope.$index, scope.row)">鍒犻櫎</el-button>
-                            </div>
-                        </template>
-                    </el-table-column>
-                </el-table>
-			</div>
-            <div>
-                <el-dialog title="缂栬緫鎶�鏈唴瀹�" :visible.sync="upDia" width="500px">
-			<div class="body">
+							<el-row style="line-height: 46px;">
+								<el-col :span="4" style="font-size: 14px;text-align: right;">绫诲瀷:</el-col>
+								<el-col :span="16" :offset="1">
+									<template>
+										<el-select v-model="edit.type" disabled placeholder="璇烽�夋嫨" @change="TYpe"
+											style="width: 306px;margin-right: 30px;">
+											<el-option label="姗¤兌杩炴帴鍣�" :value="0"></el-option>
+											<el-option label="閲戝睘杩炴帴鍣�" :value="1"></el-option>
+											<el-option label="婀挎彃鎷旂數杩炴帴鍣�" :value="2"></el-option>
+											<el-option label="鍒嗘敮缁勪欢" :value="3"></el-option>
+										</el-select>
+									</template>
+								</el-col>
+							</el-row>
+							<el-row style="line-height: 46px;">
+								<el-col :span="4" style="font-size: 14px;text-align: right;">宸ュ簭:</el-col>
+								<el-col :span="16" :offset="1">
+									<template>
+										<el-select v-model="edit.techFather" placeholder="璇烽�夋嫨" allow-create disabled style="width: 306px;"
+											filterable @change="workevent">
+											<el-option v-for="(item,index) in process" :key="item.name" :label="item.name" :value="item.name">
+											</el-option>
+										</el-select>
+									</template>
+								</el-col>
+							</el-row>
+							<el-row style="line-height: 46px;">
+								<el-col :span="4" style="font-size: 14px;text-align: right;">宸ヨ壓:</el-col>
+								<el-col :span="16" :offset="1">
+									<template>
+										<el-select v-model="edit.techName" placeholder="璇烽�夋嫨" disabled style="width: 306px;" allow-create
+											filterable>
+											<el-option v-for="item in craftapi" :key="item.id" :label="item.name" :value="item.id">
+											</el-option>
+										</el-select>
+									</template>
+								</el-col>
+							</el-row>
+							<el-row style="line-height: 46px;">
+								<el-col :span="4" style="font-size: 14px;text-align: right;">椤圭洰缁�:</el-col>
+								<el-col :span="16" :offset="1">
+									<el-input v-model="edit.father" :disabled="true" size="small" clearable></el-input>
+								</el-col>
+							</el-row>
+							<el-row style="line-height: 46px;">
+								<el-col :span="4" style="font-size: 14px;text-align: right;">椤圭洰鍚嶇О:</el-col>
+								<el-col :span="16" :offset="1">
+									<el-input v-model="edit.name" size="small" clearable></el-input>
+								</el-col>
+							</el-row>
+							<el-row style="line-height: 46px;">
+								<el-col :span="4" style="font-size: 14px;text-align: right;">鍗曚綅:</el-col>
+								<el-col :span="16" :offset="1">
+									<el-input v-model="edit.unit" size="small" clearable></el-input>
+								</el-col>
+							</el-row>
+						</div>
+						<span slot="footer" class="dialog-footer">
+							<el-button type="primary" @click="submitUpData">纭� 瀹�</el-button>
+							<el-button @click="upDia = false">鍙� 娑�</el-button>
+						</span>
+					</el-dialog>
+				</div>
+				<!-- 鏂板寮圭獥 -->
+				<div>
+					<el-dialog title="鎶�鏈寚鏍囨柊澧�" :visible.sync="dialogVisible" width="40%">
+						<el-form ref="form" :model="form" label-width="80px">
+							<el-form-item label="绫诲瀷">
+								<template>
+									<el-select v-model="form.type" size="small" placeholder="璇烽�夋嫨" @change="edittype"
+										style="width: 554px;margin-right: 30px;">
+										<el-option label="姗¤兌杩炴帴鍣�" :value="0"></el-option>
+										<el-option label="閲戝睘杩炴帴鍣�" :value="1"></el-option>
+										<el-option label="婀挎彃鎷旂數杩炴帴鍣�" :value="2"></el-option>
+										<el-option label="鍒嗘敮缁勪欢" :value="3"></el-option>
+									</el-select>
+								</template>
+							</el-form-item>
+							<el-row>
+								<el-col :span="11">
+									<el-form-item label="宸ュ簭">
+										<template>
+											<el-select v-model="form.work" placeholder="璇烽�夋嫨" allow-create filterable @change="workevent">
+												<el-option v-for="(item,index) in process" :key="item.name" :label="item.name"
+													:value="item.name">
+												</el-option>
+											</el-select>
+										</template>
+									</el-form-item>
+								</el-col>
+								<el-col :span="11" :offset="2">
+									<el-form-item label="宸ヨ壓">
+										<template>
+											<el-select v-model="form.name" placeholder="璇烽�夋嫨" allow-create filterable>
+												<el-option v-for="item in craftapi" :key="item.id" :label="item.name" :value="item.id">
+												</el-option>
+											</el-select>
+										</template>
+									</el-form-item>
+								</el-col>
+							</el-row>
 
-                <el-row style="line-height: 46px;">
-					<el-col :span="4" style="font-size: 14px;text-align: right;">绫诲瀷:</el-col>
-					<el-col :span="16" :offset="1">
-						<template>
-                        <el-select v-model="edit.type"   disabled placeholder="璇烽�夋嫨" @change="TYpe" style="width: 306px;margin-right: 30px;">
-                            <el-option label="姗¤兌杩炴帴鍣�" :value="0"></el-option>
-                            <el-option label="閲戝睘杩炴帴鍣�" :value="1"></el-option>
-                            <el-option label="婀挎彃鎷旂數杩炴帴鍣�" :value="2"></el-option>
-                            <el-option label="鍒嗘敮缁勪欢" :value="3"></el-option>
-                        </el-select>
-                        </template>
-					</el-col>
-				</el-row>
-                <el-row style="line-height: 46px;">
-					<el-col :span="4"  style="font-size: 14px;text-align: right;">宸ュ簭:</el-col>
-					<el-col :span="16" :offset="1">
-						<template>
-                                <el-select v-model="edit.techFather" 
-                                placeholder="璇烽�夋嫨" 
-                                allow-create
-                                disabled
-                                style="width: 306px;"
-                                filterable
-                                @change="workevent"
-                                >
-                                    <el-option
-                                    v-for="(item,index) in process"
-                                    :key="item.name"
-                                    :label="item.name"
-                                    :value="item.name">
-                                    </el-option>
-                                </el-select>
-                                </template>
-					</el-col>
-				</el-row>
-                <el-row style="line-height: 46px;">
-					<el-col :span="4" style="font-size: 14px;text-align: right;">宸ヨ壓:</el-col>
-					<el-col :span="16" :offset="1">
-						<template>
-                                <el-select v-model="edit.techName" 
-                                placeholder="璇烽�夋嫨" 
-                                disabled
-                                style="width: 306px;"
-                                allow-create
-                                filterable
-                                >
-                                    <el-option
-                                    v-for="item in craftapi"
-                                    :key="item.id"
-                                    :label="item.name"
-                                    :value="item.id">
-                                    </el-option>
-                                </el-select>
-                                </template>
-					</el-col>
-				</el-row>
-                <el-row style="line-height: 46px;">
-					<el-col :span="4"  style="font-size: 14px;text-align: right;">椤圭洰缁�:</el-col>
-					<el-col :span="16" :offset="1">
-						<el-input v-model="edit.father" :disabled="true" size="small" clearable></el-input>
-					</el-col>
-				</el-row>
-				<el-row style="line-height: 46px;">
-					<el-col :span="4" style="font-size: 14px;text-align: right;">椤圭洰鍚嶇О:</el-col>
-					<el-col :span="16" :offset="1">
-						<el-input v-model="edit.name" size="small" clearable></el-input>
-					</el-col>
-				</el-row>
-				<el-row style="line-height: 46px;">
-					<el-col :span="4" style="font-size: 14px;text-align: right;">鍗曚綅:</el-col>
-					<el-col :span="16" :offset="1">
-						<el-input v-model="edit.unit" size="small" clearable></el-input>
-					</el-col>
-				</el-row>
-			</div>
-			<span slot="footer" class="dialog-footer">
-				<el-button type="primary" @click="submitUpData">纭� 瀹�</el-button>
-				<el-button @click="upDia = false">鍙� 娑�</el-button>
-			</span>
-		</el-dialog>
-            </div>
-
-                 <!-- 鏂板寮圭獥 -->
-        <div>
-            <el-dialog
-            title="鎶�鏈寚鏍囨柊澧�"
-            :visible.sync="dialogVisible"
-            width="40%"
-           >
-            <el-form ref="form" :model="form" label-width="80px">
-                <el-form-item label="绫诲瀷">
-                    <template>
-                        <el-select v-model="form.type"  size="small" placeholder="璇烽�夋嫨" @change="edittype" style="width: 554px;margin-right: 30px;">
-                            <el-option label="姗¤兌杩炴帴鍣�" :value="0"></el-option>
-                            <el-option label="閲戝睘杩炴帴鍣�" :value="1"></el-option>
-                            <el-option label="婀挎彃鎷旂數杩炴帴鍣�" :value="2"></el-option>
-                            <el-option label="鍒嗘敮缁勪欢" :value="3"></el-option>
-                        </el-select>
-                        </template>
-                    </el-form-item>
-                <el-row>
-                    <el-col :span="11">
-                        <el-form-item label="宸ュ簭">
-                            <template>
-                                <el-select v-model="form.work" 
-                                placeholder="璇烽�夋嫨" 
-                                allow-create
-                                filterable
-                                @change="workevent"
-                                >
-                                    <el-option
-                                    v-for="(item,index) in process"
-                                    :key="item.name"
-                                    :label="item.name"
-                                    :value="item.name">
-                                    </el-option>
-                                </el-select>
-                                </template>
-                        </el-form-item>
-                    </el-col>
-                    <el-col :span="11" :offset="2">
-                        <el-form-item label="宸ヨ壓">
-                            <template>
-                                <el-select v-model="form.name" 
-                                placeholder="璇烽�夋嫨" 
-                                allow-create
-                                filterable
-                                >
-                                    <el-option
-                                    v-for="item in craftapi"
-                                    :key="item.id"
-                                    :label="item.name"
-                                    :value="item.id">
-                                    </el-option>
-                                </el-select>
-                                </template>
-                        </el-form-item>
-                     </el-col>
-                </el-row>
-
-                <el-row>
-                    <el-col :span="11">
-                        <el-form-item label="椤圭洰缁�" >
-                            <template>
-                                <el-select v-model="form.father" 
-                                placeholder="璇烽�夋嫨" 
-                                allow-create
-                                filterable
-                                @create="electadd"
-                                >
-                                    <el-option
-                                    v-for="item in higherlevel"
-                                    :key="item"
-                                    :label="item"
-                                    :value="item">
-                                    </el-option>
-                                </el-select>
-                                <!-- <el-autocomplete
+							<el-row>
+								<el-col :span="11">
+									<el-form-item label="椤圭洰缁�">
+										<template>
+											<el-select v-model="form.father" placeholder="璇烽�夋嫨" allow-create filterable @create="electadd">
+												<el-option v-for="item in higherlevel" :key="item" :label="item" :value="item">
+												</el-option>
+											</el-select>
+											<!-- <el-autocomplete
                                 popper-class="my-autocomplete"
                                 v-model="form.father"
                                 :fetch-suggestions="higherlevel"
@@ -331,33 +253,32 @@
                                 </template>
                                 </el-autocomplete> -->
 
-                                </template>
-                        </el-form-item>
-                    </el-col>
-                    <el-col :span="11" :offset="2">
-                        <el-form-item label="椤圭洰">
-                            <el-input v-model="form.project"  style="width: 200px;" placeholder="璇疯緭鍏ラ」鐩�"></el-input>
-                        </el-form-item>
-                     </el-col>
-                </el-row>
+										</template>
+									</el-form-item>
+								</el-col>
+								<el-col :span="11" :offset="2">
+									<el-form-item label="椤圭洰">
+										<el-input v-model="form.project" style="width: 200px;" placeholder="璇疯緭鍏ラ」鐩�"></el-input>
+									</el-form-item>
+								</el-col>
+							</el-row>
 
-                <el-form-item label="鍗曚綅">
-                    <el-input v-model="form.unit"  placeholder="璇疯緭鍏ュ崟浣�" style="width: 200px;"></el-input>
-                </el-form-item>
-                </el-form>
-            <span slot="footer" class="dialog-footer">
-                <el-button @click="dialogVisible = false">鍙� 娑�</el-button>
-                <el-button type="primary" @click="add">纭� 瀹�</el-button>
-            </span>
-            </el-dialog>
-            </div>
-        </div>
-
+							<el-form-item label="鍗曚綅">
+								<el-input v-model="form.unit" placeholder="璇疯緭鍏ュ崟浣�" style="width: 200px;"></el-input>
+							</el-form-item>
+						</el-form>
+						<span slot="footer" class="dialog-footer">
+							<el-button @click="dialogVisible = false">鍙� 娑�</el-button>
+							<el-button type="primary" @click="add">纭� 瀹�</el-button>
+						</span>
+					</el-dialog>
+				</div>
+			</div>
 		</div>
 	</div>
 </template>
 <script>
-export default {
+	export default {
 		data() {
 			return {
               search:{
@@ -397,20 +318,58 @@
                     unit:'',
                     id:'',
 
-                }
+                },
+                isAllSelect:false,
             }
-            
+
         },
         mounted() {
 			this.selectAllleft()
-            this.selectAllright()
-            
+			this.selectAllright()
 		},
         methods:{
+              // 琛ㄦ牸鏍戝叏閮ㄩ�変腑閰嶇疆
+                // 鍏ㄩ��/鍙栨秷閫夋搷浣�
+                selectAll(val) {
+                    this.isAllSelect = !this.isAllSelect;
+                    let data = this.tableData;
+                    this.toggleSelect(data, this.isAllSelect, "all");
+                },
+             //閫夋嫨鏌愯
+		    selectTr(selection, row) {
+                console.log(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") {
+                    console.log('222');
+                    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);
+                        });
+                    }
+                }
+            },
             handleClose(){
 
-            },
-            selectDataList() {
+			},
+			selectDataList() {
 				this.list.forEach(a => {
 					a.code = '[1]'
 					if (a.children != undefined) {
@@ -426,66 +385,66 @@
 				})
 				this.upIndex++
 			},
-            //缂栬緫
-            selecTech() {
-				this.$axios.get(this.$api.url.selecTech,{
-					params:{
-						id:this.upData.id
+			//缂栬緫
+			selecTech() {
+				this.$axios.get(this.$api.url.selecTech, {
+					params: {
+						id: this.upData.id
 					}
 				}).then(res => {
 					this.edit = res.data[0]
 					console.log(this.edit);
 				})
 			},
-            childrenClick(val) {
+			childrenClick(val) {
 				this.upData = val
-                this.selecTech()
-                this.upDia = true
-            },
-            writeTechByIdskill() {
+				this.selecTech()
+				this.upDia = true
+			},
+			writeTechByIdskill() {
 				// console.log(this.upData.id);
-				this.$axios.post(this.$api.url.writeTechByIdskill + '?id=' + this.upData.id,{
-					name:this.edit.name,
-					father:this.edit.father,
-					techTemId:this.edit.id,
-					unit:this.edit.unit
+				this.$axios.post(this.$api.url.writeTechByIdskill + '?id=' + this.upData.id, {
+					name: this.edit.name,
+					father: this.edit.father,
+					techTemId: this.edit.id,
+					unit: this.edit.unit
 				}, {
 					headers: {
-                		"Content-Type": "application/json"
-              		}
+						"Content-Type": "application/json"
+					}
 				}).then(res => {
 					this.selectAllright()
 				})
-            },
-            submitUpData() {//纭畾
-                this.writeTechByIdskill()
-                this.upDia = false
-            },
-            //鍒犻櫎
-			delTechBy() {
-				console.log(this.$api.url.delTechBy,this.upData.id);
-				this.$axios.post(this.$api.url.delTechBy,{
-						id:this.upData.id
-				}).then(res =>{
-                    this.selectAllright()
-                    this.$message.success('鍒犻櫎瀹屾垚')
-                })
 			},
-            deleteRow(index, rows) {
-				this.tableData.splice(index,1)
-                this.upData = rows
+			submitUpData() { //纭畾
+				this.writeTechByIdskill()
+				this.upDia = false
+			},
+			//鍒犻櫎
+			delTechBy() {
+				console.log(this.$api.url.delTechBy, this.upData.id);
+				this.$axios.post(this.$api.url.delTechBy, {
+					id: this.upData.id
+				}).then(res => {
+					this.selectAllright()
+					this.$message.success('鍒犻櫎瀹屾垚')
+				})
+			},
+			deleteRow(index, rows) {
+				this.tableData.splice(index, 1)
+				this.upData = rows
 				this.upData.id = rows.id
 				this.delTechBy()
 			},
-             //鎵归噺鍒犻櫎
-             delAllTechskill() {
-                this.$axios.post(this.$api.url.delAllTechskill,{
-                    ids:this.delete
-                }).then(res =>{
-                    this.selectAllright()
-                })
-            },
-            dels() { 
+			//鎵归噺鍒犻櫎
+			delAllTechskill() {
+				this.$axios.post(this.$api.url.delAllTechskill, {
+					ids: this.delete
+				}).then(res => {
+					this.selectAllright()
+				})
+			},
+			dels() {
 				this.selects.forEach(a => {
 					for (var b = 0; b < this.tableData.length; b++) {
 						if (this.tableData[b].id == a.id) {
@@ -494,7 +453,7 @@
 						}
 					}
 				})
-                let cc = this.selects.map(el => {
+				let cc = this.selects.map(el => {
 					return el.id
 				})
 				this.delete = cc.join(',')
@@ -502,141 +461,152 @@
 				this.delAllTechskill()
 				this.$message.success('鍒犻櫎瀹屾垚')
 			},
-            add() {
-                this.dialogVisible = false
-                this.addTechMode()
+			add() {
+				this.dialogVisible = false
+				this.addTechMode()
 				this.form = {};
-            },
-            electadd(value) {
-                console.log(value);
-                this.higherlevel.push({});
-                this.form.father = value;
-            },
-            addTechMode() {
-                this.$axios.post(this.$api.url.addTechMode,{
-                    father:this.form.father,
-                    name:this.form.project,
-                    techTemId:this.form.name,
-                    unit:this.form.unit,
-                }, {
+			},
+			electadd(value) {
+				console.log(value);
+				this.higherlevel.push({});
+				this.form.father = value;
+			},
+			addTechMode() {
+				this.$axios.post(this.$api.url.addTechMode, {
+					father: this.form.father,
+					name: this.form.project,
+					techTemId: this.form.name,
+					unit: this.form.unit,
+				}, {
 					headers: {
-                		"Content-Type": "application/json"
-              		}
-				}).then(res =>{
-                    this.$message.success('鏂板瀹屾垚')
-                    this.selectAllright()
+						"Content-Type": "application/json"
+					}
+				}).then(res => {
+					this.$message.success('鏂板瀹屾垚')
+					this.selectAllright()
 
-                })
-            },
-            TYpe(val) {
-                this.typeselect = val
-                console.log(this.typeselect);
-                this.selectAllleft()
-            },
-            edittype(val) {
+				})
+			},
+			TYpe(val) {
+				this.typeselect = val
+				console.log(this.typeselect);
+				this.selectAllleft()
+			},
+			edittype(val) {
 				this.typeselect = val
 				this.chooseTechFath()
 			},
-            //涓讳綋宸�
-            selectAllleft() {
-			this.$axios.get(this.$api.url.selectAllleft,{
-				params:{type:this.typeselect,message:this.search.technology}
-			}).then(res => {
-				this.list = res.data;
-                console.log(this.list);
-                this.selectDataList()
-                this.$nextTick(() => {
-				this.$refs.tree.setCurrentKey(this.list[0].children[0].name) // 榛樿閫変腑鑺傜偣绗竴涓�
-			})
-            let one=this.list.filter(item=>{
-			return item.children.length>0
-			})[0]
-			console.log(one);
-			let name=one.children[0].id
-			console.log(name);
-			this.selectAllrightStart(name)
-			this.selectDataList();
-			});
+			//涓讳綋宸�
+			selectAllleft() {
+				this.$axios.get(this.$api.url.selectAllleft, {
+					params: {
+						type: this.typeselect,
+						message: this.search.technology
+					}
+				}).then(res => {
+					this.list = res.data;
+					console.log(this.list);
+					this.selectDataList()
+					this.$nextTick(() => {
+						this.$refs.tree.setCurrentKey(this.list[0].children[0].name) // 榛樿閫変腑鑺傜偣绗竴涓�
+					})
+					let one = this.list.filter(item => {
+						return item.children.length > 0
+					})[0]
+					console.log(one);
+					let name = one.children[0].id
+					console.log(name);
+					this.selectAllrightStart(name)
+					this.selectDataList();
+				});
 			},
-            selectAllrightStart(name) {
-			this.$axios.get(this.$api.url.selectAllright,{
-				params:{id:name}
-			}).then(res => {
-				this.tableData = res.data;
-                console.log(this.tableData);
-			});
+			selectAllrightStart(name) {
+				this.$axios.get(this.$api.url.selectAllright, {
+					params: {
+						id: name
+					}
+				}).then(res => {
+					this.tableData = res.data;
+					console.log(this.tableData);
+				});
 			},
-            //
-            //鏌ヨ
-            query(val) {
-                this.selectAllleft()
-            },
-            //鍙�
-            selectAllright() {
-			this.$axios.get(this.$api.url.selectAllright,{
-				params:{id:this.checkTreeNode.id}
-			}).then(res => {
-				this.tableData = res.data;
-                console.log(this.tableData);
-			});
+			//
+			//鏌ヨ
+			query(val) {
+				this.selectAllleft()
 			},
-            //涓婄骇
-            chooseProFath() {
-                console.log(this.checkTreeNode.id);
-			this.$axios.get(this.$api.url.chooseProFath,{
-                params:{techTemId:this.checkTreeNode.id}
-            }).then(res => {
-				this.higherlevel = res.data;
-                console.log(this.higherlevel);
-			}, {
-				headers: {
-                		"Content-Type": "application/json"
-              		}
-            })
+			//鍙�
+			selectAllright() {
+				this.$axios.get(this.$api.url.selectAllright, {
+					params: {
+						id: this.checkTreeNode.id
+					}
+				}).then(res => {
+					this.tableData = res.data;
+					console.log(this.tableData);
+				});
 			},
-            //宸ュ簭宸ヨ壓
-            chooseTechFath() {
-			this.$axios.get(this.$api.url.chooseTechFath,{
-                params:{type:this.typeselect}
-            }).then(res => {
-				this.process = res.data;
-                console.log(this.process);
-			}, {
-				headers: {
-                		"Content-Type": "application/json"
-              		}
-            })
+			//涓婄骇
+			chooseProFath() {
+				console.log(this.checkTreeNode.id);
+				this.$axios.get(this.$api.url.chooseProFath, {
+					params: {
+						techTemId: this.checkTreeNode.id
+					}
+				}).then(res => {
+					this.higherlevel = res.data;
+					console.log(this.higherlevel);
+				}, {
+					headers: {
+						"Content-Type": "application/json"
+					}
+				})
 			},
-            workevent(val){
-                console.log(val);
-                let idx = this.process.findIndex(el => el.name === val)
-                this.craftapi = this.process[idx].children
-            },
-            
-            handleNodeClick(data){
-                this.checkTreeNode = data
+			//宸ュ簭宸ヨ壓
+			chooseTechFath() {
+				this.$axios.get(this.$api.url.chooseTechFath, {
+					params: {
+						type: this.typeselect
+					}
+				}).then(res => {
+					this.process = res.data;
+					console.log(this.process);
+				}, {
+					headers: {
+						"Content-Type": "application/json"
+					}
+				})
+			},
+			workevent(val) {
+				console.log(val);
+				let idx = this.process.findIndex(el => el.name === val)
+				this.craftapi = this.process[idx].children
+			},
+
+			handleNodeClick(data) {
+				this.checkTreeNode = data
 				console.log(this.checkTreeNode.id);
 				this.selectAllright()
-            },
-            event(){
-                this.dialogVisible = true
-                this.chooseProFath()
-                this.chooseTechFath()
-            },
-            modify(){
-                this.modifyevent = true
-            },
-            // deleteRow(index, rows) {
-                // console.log();
-				// rows.splice(index, 1);
+			},
+			event() {
+				this.dialogVisible = true
+				this.chooseProFath()
+				this.chooseTechFath()
+			},
+			modify() {
+				this.modifyevent = true
+			},
+			// deleteRow(index, rows) {
+			// console.log();
+			// rows.splice(index, 1);
 			// },
-            handleSelectionChange(val) {
+			handleSelectionChange(val) {
 				this.selects = val;
 			},
-            //缂栬緫
-          
-        }
-    }
+			//缂栬緫
+
+		}
+	}
 </script>
 
 <style scoped>
@@ -677,7 +647,7 @@
 
 	.thing {
 		width: 100%;
-		height: calc(100% - 120px);
+		height: calc(100% - 78px);
 		background-color: #fff;
 		display: flex;
 	}
@@ -687,6 +657,7 @@
 		height: calc(100% - 20px);
 		border-right: 3px solid rgb(245, 247, 251);
 		padding: 16px;
+		overflow-y: auto;
 	}
 
 	.thing .left .custom-tree-node span {
@@ -726,8 +697,9 @@
 		color: #004ea0;
 		cursor: pointer;
 	}
-.firstDiv {
-  /* float: left;
+
+	.firstDiv {
+		/* float: left;
   width: 20px;
   height: 20px;
   border-radius: 60px;
@@ -737,11 +709,12 @@
   display: flex;
   align-items: center;
   margin-right: 8px; */
-  /* border-radius: 60px; */
-}
-.el-tag{
-    border-radius: 50%;
-}
+		/* border-radius: 60px; */
+	}
+
+	.el-tag {
+		border-radius: 50%;
+	}
 </style>
 <style>
 	.record_content .title .el-button * {
diff --git a/src/components/view/equipmentmaintain.vue b/src/components/view/equipmentmaintain.vue
index 0de5776..30759c4 100644
--- a/src/components/view/equipmentmaintain.vue
+++ b/src/components/view/equipmentmaintain.vue
@@ -245,7 +245,6 @@
                 placeholder="璇疯緭鍏ユ悳绱㈠唴瀹�" 
                 size="small" clearable ></el-input>
                     <el-tree :data="list" ref="tree" 
-                    style="height: 500px;overflow-y: auto;"
                     :props="{children: 'children',label: 'name'}" highlight-current node-key="name" default-expand-all
                          
                         @node-click="handleNodeClick"
@@ -263,11 +262,13 @@
 			<div class="right">
                 <el-table
                     :data="tableData"
-                    style="width: 100%;margin-bottom: 20px;"
+                    style="width: 100%;margin-bottom: 20px;height: 600px;overflow: auto;"
                     row-key="name"
                     border
+                    @select="selectTr"
                     @selection-change="handleSelectionChange"
                     default-expand-all
+                    ref="multipleTable"
                     :tree-props="{children: 'children', hasChildren: 'hasChildren'}">
                     <el-table-column
                     type="selection"
@@ -318,7 +319,7 @@
                         width="200px">
                         <template slot-scope="scope" style="text-align: center;">
                             <div v-if="!scope.row.children">
-                        <el-button type="text" size="mini" @click="childrenClick(scope.row)">缂栬緫</el-button>
+                        <!-- <el-button type="text" size="mini" @click="childrenClick(scope.row)">缂栬緫</el-button> -->
                         <el-button type="text" size="mini" @click="deleteRow(scope.$index, scope.row)">鍒犻櫎</el-button>
                             </div>
                     </template>
@@ -569,9 +570,6 @@
                 console.log(this.upData.id);
 				this.delQueById()
 			},
-            handleSelectionChange(val) {
-				this.selects = val
-			},
             //鎵归噺鍒犻櫎
 			delAllQue() {
 				this.$axios.post(this.$api.url.delAllQue,{
@@ -609,6 +607,52 @@
             // // filterNode(){
 
             // },
+            handleSelectionChange(val) {
+                this.deleteList = [];
+                val.forEach((v) => {
+                if (v.id !== undefined) {
+                    this.deleteList.push(v.id);
+                }
+                });
+			},
+             // 琛ㄦ牸鏍戝叏閮ㄩ�変腑閰嶇疆
+                // 鍏ㄩ��/鍙栨秷閫夋搷浣�
+                selectAll(val) {
+                    this.isAllSelect = !this.isAllSelect;
+                    let data = this.tableData;
+                    this.toggleSelect(data, this.isAllSelect, "all");
+                },
+             //閫夋嫨鏌愯
+		    selectTr(selection, row) {
+                console.log(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") {
+                    console.log('222');
+                    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);
+                        });
+                    }
+                }
+            },
           
         }
     }
@@ -662,6 +706,7 @@
 		height: calc(100% - 20px);
 		border-right: 3px solid rgb(245, 247, 251);
 		padding: 16px;
+		overflow-y: auto;
 	}
 
 	.thing .left .custom-tree-node span {
diff --git a/src/components/view/laboratoryManagement.vue b/src/components/view/laboratoryManagement.vue
index 5fb48be..38548d3 100644
--- a/src/components/view/laboratoryManagement.vue
+++ b/src/components/view/laboratoryManagement.vue
@@ -1,8 +1,8 @@
 <template>
-  <div>
+  <div class="laboratoryMangement">
     <el-row>
       <el-col :span="12" class="top_left_name">璁惧缁存姢</el-col>
-      <el-col :span="12" style="text-align: right;">
+      <el-col :span="12" style="text-align: right;" class="title">
         <el-button
           @click="testItem()"
           type="primary"
@@ -39,6 +39,7 @@
                 <el-form-item label="璁惧鐢ㄩ��" prop="type">
                   <el-select
                     v-model="ruleForm.type"
+                    @change="selectinstall"
                     placeholder="璇烽�夋嫨璁惧鐢ㄩ��"
                   >
                     <el-option label="鐢熶骇璁惧" value="1"></el-option>
@@ -207,12 +208,11 @@
           :data="towTree"
           ref="tree"
           :props="{ children: 'children', label: 'father' }"
-          node-key="id"
+          node-key="father"
           default-expand-all
           highlight-current
           style="margin-top: 20px;"
           @node-click="handleNodeClick"
-          
         >
           <div class="custom-tree-node" slot-scope="{ node, data }">
             <span
@@ -397,8 +397,10 @@
   name: "LaboratoryManagement",
   data() {
     return {
+
       value: "",
       dialogVisible: false,
+      checkTreeNode:{},
       isCollapse: true, //榛樿涓哄睍寮�
       radio1: "true", // 鍒嗙被鍒囨崲
       tableData: [], // 涓婚〉琛ㄦ牸鏁版嵁
@@ -411,7 +413,7 @@
       staue_value: "", // 涓婚〉琛ㄦ牸涓婃柟鐨勭姸鎬侀�夋嫨
       // BOM鏍戞暟鎹粨鏋�
       towTree: [],
-      equipment: '',
+      equipment: '1',
       equaip:'',
       ruleForm: {
         // 鏂板浠櫒琛ㄥ崟
@@ -424,10 +426,11 @@
         name: "",
         rawInsProductId: "",
         type: "",
-        treedata:{
-            father:'璁惧缁�1',
-        },
+        // treedata:{
+        //     father:'璁惧缁�1',
+        // },
         equr:'',
+       
       },
       delete:{},
       equip:1,
@@ -473,25 +476,29 @@
     this.twoTreeApi();
     // 鍒濆鍖栬皟鐢ㄨ〃鏍兼暟鎹�
     // this.tableDataApi();
-    this.selectDevice()//鍙宠竟
+    // this.selectDevice()
   },
   methods: {
-    selectDevice() {//鍙宠竟鏁版嵁
-      console.log(this.ruleForm.treedata.father);
-      console.log(this.equip);
-      this.$axios.get(this.$api.url.selectDevice,{
-        params:{
-          father:this.ruleForm.treedata.father,
-          type:this.equip,
-        }
-      }).then(res =>{
-        console.log(res);
-        this.tableData = res.data
-      }, {
-				headers: {
-                		"Content-Type": "application/json"
-              		}
-      })
+    handleNodeClick(val) {
+      this.checkTreeNode = val
+      console.log(this.checkTreeNode);
+        this.selectDevice()
+    },
+   
+    staueValueChange() {
+      this.selectDevice()
+      // this.tableData = [];
+      // let val = 1;
+      // if (this.radio1 === "false") {
+      //   val = 2;
+      // }
+      // this.$axios
+      //   .get(this.$api.url.tableDeviceList, {
+      //     params: { type: val, deviceStatue: this.staue_value }
+      //   })
+      //   .then(res => {
+      //     this.tableData = res.data;
+      //   });
     },
     // 鍔ㄦ�佹帶鍒跺睍寮�涓庢敹璧峰拰鍒囨崲瀵瑰簲鍥炬爣
     isC() {
@@ -535,14 +542,21 @@
         .catch(_ => {});
     },
     testItem() {
-      this.listgroup()
       this.dialogVisible = true;
       this.$axios.get(this.$api.url.addDeviceKeeper).then(res => {
         this.keeperList = res.data;
       });
     },
+    selectinstall(val) {
+      this.equip = val
+      this.listgroup()
+    },
     listgroup() {
-        this.$axios.get(this.$api.url.listgroup).then(res =>{
+        this.$axios.get(this.$api.url.listgroup,{
+            params:{
+              type:this.equip
+            }
+        }).then(res =>{
             this.equaip = res.data
             console.log(this.equip);
         })
@@ -567,7 +581,51 @@
         //   }
         // });
         this.towTree = res.data;
-      });
+        this.$nextTick(() => {
+				this.$refs.tree.setCurrentKey(this.towTree[0].father) // 榛樿閫変腑鑺傜偣绗竴涓�
+			})
+      console.log(this.towTree);
+        let one=this.towTree[0]
+        console.log(one);
+        let name =one.father
+			  console.log(name);
+        this.selectDeviceStart(name)
+        });
+    },
+    selectDeviceStart(name,) {//鍙宠竟鏁版嵁
+      this.$axios.get(this.$api.url.selectDevice,{
+        params:{
+          father:name,
+          type:this.equip,
+          deviceStatus:this.staue_value,
+          message:this.codeNameModel,
+        }
+      }).then(res =>{
+        console.log(res);
+        this.tableData = res.data
+      }, {
+				headers: {
+                		"Content-Type": "application/json"
+              		}
+      })
+    },
+
+    selectDevice() {//鍙宠竟鏁版嵁
+      this.$axios.get(this.$api.url.selectDevice,{
+        params:{
+          father:this.checkTreeNode.father,
+          type:this.equip,
+          deviceStatus:this.staue_value,
+          message:this.codeNameModel,
+        }
+      }).then(res =>{
+        console.log(res);
+        this.tableData = res.data
+      }, {
+				headers: {
+                		"Content-Type": "application/json"
+              		}
+      })
     },
     addApi() {
       this.$axios.post(this.$api.url.addApi,{
@@ -581,9 +639,9 @@
         type:this.ruleForm.type,
       }, {headers: {"Content-Type": "application/json"}
     }).then(res =>{
-      this.selectDevice()
       this.$message.success('鏂板鎴愬姛')
       this.ruleForm = {}
+      this.selectDevice()
     })
     },
     // tableDataApi() {
@@ -592,15 +650,13 @@
     //   });
     // },
     reset() {
-      this.tableDataApi();
-      this.radio1 = "true";
-      this.codeNameModel = "";
-      this.staue_value = "";
-    },
-    handleNodeClick(data) {
-      console.log(data);
-        // this.treedata = data
-        this.selectDevice()
+      // this.tableDataApi();
+      // this.radio1 = "true";
+      // this.codeNameModel = "";
+      // this.staue_value = "";
+      this.staue_value = ""
+      this.codeNameModel = ""
+      this.selectDevice()
     },
     handlerDeptList() {
       this.towTree = [];
@@ -617,24 +673,25 @@
         });
     },
     selectSearch() {
-      this.tableData = [];
-      if (this.radio1 === "false") {
-        this.$axios
-          .get(this.$api.url.tableDeviceList, {
-            params: { type: 1, codeNameModel: this.codeNameModel }
-          })
-          .then(res => {
-            this.tableData = res.data;
-          });
-      } else if (this.radio1 === "true") {
-        this.$axios
-          .get(this.$api.url.tableDeviceList, {
-            params: { type: 2, codeNameModel: this.codeNameModel }
-          })
-          .then(res => {
-            this.tableData = res.data;
-          });
-      }
+      this.selectDevice()
+      // this.tableData = [];
+      // if (this.radio1 === "false") {
+      //   this.$axios
+      //     .get(this.$api.url.tableDeviceList, {
+      //       params: { type: 1, codeNameModel: this.codeNameModel }
+      //     })
+      //     .then(res => {
+      //       this.tableData = res.data;
+      //     });
+      // } else if (this.radio1 === "true") {
+      //   this.$axios
+      //     .get(this.$api.url.tableDeviceList, {
+      //       params: { type: 2, codeNameModel: this.codeNameModel }
+      //     })
+      //     .then(res => {
+      //       this.tableData = res.data;
+      //     });
+      // }
     },
     delDeviceById() {
       this.$axios.post(this.$api.url.delDeviceById,{
@@ -722,20 +779,7 @@
         }
       });
     },
-    staueValueChange() {
-      this.tableData = [];
-      let val = 1;
-      if (this.radio1 === "false") {
-        val = 2;
-      }
-      this.$axios
-        .get(this.$api.url.tableDeviceList, {
-          params: { type: val, deviceStatue: this.staue_value }
-        })
-        .then(res => {
-          this.tableData = res.data;
-        });
-    }
+  
   },
  
   watch: {
@@ -951,3 +995,25 @@
   line-height: 14px;
 }
 </style>
+<style>
+	.laboratoryMangement .title *{
+		font-size: 14px;
+	}
+	
+	.laboratoryMangement .table_top_div *{
+		font-size: 14px;
+	}
+	
+	.laboratoryMangement .title .el-button {
+	  height: 32px;
+	  border: 1px solid rgba(190, 190, 190, 0.44);
+	  box-shadow: 0px 2px 4px rgba(220, 220, 220, 0.41);
+	  padding: 0 12px;
+	}
+	.laboratoryMangement .table_top_div .el-button {
+	  height: 32px;
+	  border: 1px solid rgba(190, 190, 190, 0.44);
+	  box-shadow: 0px 2px 4px rgba(220, 220, 220, 0.41);
+	  padding: 0 12px;
+	}
+</style>
\ No newline at end of file
diff --git a/src/components/view/mbom.vue b/src/components/view/mbom.vue
index cfe1abd..4e8c3ba 100644
--- a/src/components/view/mbom.vue
+++ b/src/components/view/mbom.vue
@@ -1,127 +1,96 @@
 <template>
 	<div class="record_content">
 		<div class="title">
-            <el-row>
+			<el-row>
 				<el-col :span="12" style="line-height: 32px;">鐗╂枡娓呭崟缁存姢</el-col>
 				<el-col :span="12" style="text-align: right;">
 					<el-button type="primary" icon="el-icon-plus" style="background: #004EA2;" @click="event">鏂板</el-button>
-					<el-button icon="el-icon-delete" @click="dels" >鍒犻櫎</el-button>
+					<el-button icon="el-icon-delete" @click="dels">鍒犻櫎</el-button>
 				</el-col>
 			</el-row>
 		</div>
 		<div>
-            <el-dialog
-            title="鐗╂枡娓呭崟鐨勭淮鎶�"
-            :visible.sync="dialogVisible"
-            width="80%"
-            :before-close="handleClose" :center="true">
-            <div>
-				<el-form>
-				<el-row :gutter="2">
-				<el-col :span="8">
-					<el-form-item label="绫诲瀷:">
-					<el-select v-model="search.type" size="small" placeholder="璇烽�夋嫨" style="width: 224px;margin-right: 30px;">
-						<el-option label="姗¤兌杩炴帴鍣�" :value="0"></el-option>
-						<el-option label="閲戝睘杩炴帴鍣�" :value="1"></el-option>
-						<el-option label="婀挎彃鎷旂數杩炴帴鍣�" :value="2"></el-option>
-						<el-option label="鍒嗘敮缁勪欢" :value="3"></el-option>
-					</el-select>
-					</el-form-item>
-				</el-col>
-				<el-col :span="8">
-					<el-form-item label="宸ュ簭">
-                            <template>
-                                <el-select v-model="search.work" 
-                                placeholder="璇烽�夋嫨" 
-                                allow-create
-                                filterable
-                                @change="workevent"
-                                >
-                                    <el-option
-                                    v-for="(item,index) in process"
-                                    :key="item.name"
-                                    :label="item.name"
-                                    :value="item.name">
-                                    </el-option>
-                                </el-select>
-                                </template>
-                        </el-form-item>
-				</el-col>
-				<el-col :span="8">
-					<el-form-item label="宸ヨ壓鍚嶇О:">
-					<el-select v-model="search.craft" size="small" placeholder="璇烽�夋嫨" style="width: 224px;margin-right: 30px;">
-						<el-option
-							v-for="item in craftapi"
-							:key="item.id"
-							:label="item.name"
-							:value="item.id">
-							</el-option>
-					</el-select>
-				</el-form-item>
-				</el-col>
-				</el-row>
-			</el-form>
-				<el-button size="mini" @click="Addrow" >娣诲姞琛�</el-button>
-			</div>
-			<div style="margin: 10px 0px;">
-				<template>
-					<el-table
-					border
-					:data="tableapi"
-					height="calc(80vh - 250px)"
-					style="width: 100%">
-					<el-table-column type="index" label="搴忓彿" width="70">
-					</el-table-column>
-					<el-table-column
-						prop="date"
-						label="渚涘簲鍟嗗悕绉�"
-						width="180">
-						<template slot-scope="scope">
-							<el-input v-model="scope.row.supplier" placeholder="" ></el-input>
-						</template>
-					</el-table-column>
-					<el-table-column
-						prop=""
-						label="璐ㄩ噺杩芥函鍙�"
-						width="180">
-						<template slot-scope="scope">
-							<el-input v-model="scope.row.qualityTraceability" placeholder="" ></el-input>
-						</template>
-					</el-table-column>
-					<el-table-column
-						prop="name"
-						label="鍘熸潗鏂欏悕绉�">
-						<template slot-scope="scope">
-							<el-input v-model="scope.row.name" placeholder="" ></el-input>
-						</template>
-					</el-table-column>
-					<el-table-column
-						prop="address"
-						label="瑙勬牸鍨嬪彿">
-						<template slot-scope="scope">
-							<el-input v-model="scope.row.specifications" placeholder="" ></el-input>
-						</template>
-					</el-table-column>
-					<el-table-column
-						prop="unit"
-						label="鍗曚綅">
-						<template slot-scope="scope">
-							<el-input v-model="scope.row.unit" placeholder="" ></el-input>
-						</template>
-					</el-table-column>
-					</el-table>
-				</template>
-			</div>
-            <span slot="footer" class="dialog-footer">
-                <el-button @click="dialogVisible = false">鍙� 娑�</el-button>
-                <el-button type="primary" @click="skipshow">纭� 瀹�</el-button>
-            </span>
-            </el-dialog>
-        </div>
-
+			<el-dialog title="鐗╂枡娓呭崟鐨勭淮鎶�" :visible.sync="dialogVisible" width="80%" :before-close="handleClose" :center="true">
+				<div>
+					<el-form>
+						<el-row :gutter="2">
+							<el-col :span="8">
+								<el-form-item label="绫诲瀷:">
+									<el-select v-model="search.type" size="small" placeholder="璇烽�夋嫨"
+										style="width: 224px;margin-right: 30px;">
+										<el-option label="姗¤兌杩炴帴鍣�" :value="0"></el-option>
+										<el-option label="閲戝睘杩炴帴鍣�" :value="1"></el-option>
+										<el-option label="婀挎彃鎷旂數杩炴帴鍣�" :value="2"></el-option>
+										<el-option label="鍒嗘敮缁勪欢" :value="3"></el-option>
+									</el-select>
+								</el-form-item>
+							</el-col>
+							<el-col :span="8">
+								<el-form-item label="宸ュ簭">
+									<template>
+										<el-select v-model="search.work" placeholder="璇烽�夋嫨" allow-create filterable @change="workevent">
+											<el-option v-for="(item,index) in process" :key="item.name" :label="item.name" :value="item.name">
+											</el-option>
+										</el-select>
+									</template>
+								</el-form-item>
+							</el-col>
+							<el-col :span="8">
+								<el-form-item label="宸ヨ壓鍚嶇О:">
+									<el-select v-model="search.craft" size="small" placeholder="璇烽�夋嫨"
+										style="width: 224px;margin-right: 30px;">
+										<el-option v-for="item in craftapi" :key="item.id" :label="item.name" :value="item.id">
+										</el-option>
+									</el-select>
+								</el-form-item>
+							</el-col>
+						</el-row>
+					</el-form>
+					<el-button size="mini" @click="Addrow">娣诲姞琛�</el-button>
+				</div>
+				<div style="margin: 10px 0px;">
+					<template>
+						<el-table border :data="tableapi" height="calc(80vh - 250px)" style="width: 100%">
+							<el-table-column type="index" label="搴忓彿" width="70">
+							</el-table-column>
+							<el-table-column prop="date" label="渚涘簲鍟嗗悕绉�" width="180">
+								<template slot-scope="scope">
+									<el-input v-model="scope.row.supplier" placeholder=""></el-input>
+								</template>
+							</el-table-column>
+							<el-table-column prop="" label="璐ㄩ噺杩芥函鍙�" width="180">
+								<template slot-scope="scope">
+									<el-input v-model="scope.row.qualityTraceability" placeholder=""></el-input>
+								</template>
+							</el-table-column>
+							<el-table-column prop="name" label="鍘熸潗鏂欏悕绉�">
+								<template slot-scope="scope">
+									<el-input v-model="scope.row.name" placeholder=""></el-input>
+								</template>
+							</el-table-column>
+							<el-table-column prop="address" label="瑙勬牸鍨嬪彿">
+								<template slot-scope="scope">
+									<el-input v-model="scope.row.specifications" placeholder=""></el-input>
+								</template>
+							</el-table-column>
+							<el-table-column prop="unit" label="鍗曚綅">
+								<template slot-scope="scope">
+									<el-input v-model="scope.row.unit" placeholder=""></el-input>
+								</template>
+							</el-table-column>
+						</el-table>
+					</template>
+				</div>
+				<span slot="footer" class="dialog-footer">
+					<el-button @click="dialogVisible = false">鍙� 娑�</el-button>
+					<el-button type="primary" @click="skipshow">纭� 瀹�</el-button>
+				</span>
+			</el-dialog>
+		</div>
 		<div class="choose">
-            <span>绫诲瀷锛�</span>
-			<el-select v-model="search.type" size="small" @change="TYpe" placeholder="璇烽�夋嫨" style="width: 224px;margin-right: 30px;">
+			<span>绫诲瀷锛�</span>
+			<el-select v-model="search.type" size="small" @change="TYpe" placeholder="璇烽�夋嫨"
+				style="width: 224px;margin-right: 30px;">
 				<el-option label="姗¤兌杩炴帴鍣�" :value="0"></el-option>
 				<el-option label="閲戝睘杩炴帴鍣�" :value="1"></el-option>
 				<el-option label="婀挎彃鎷旂數杩炴帴鍣�" :value="2"></el-option>
@@ -136,15 +105,11 @@
 		</div>
 		<div class="thing">
 			<div class="left">
-				<el-input v-model="search.technology" @input="query" suffix-icon="el-icon-search" placeholder="璇疯緭鍏ユ悳绱㈠唴瀹�"  size="small" clearable ></el-input>
-                <el-tree 
-				:data="list" ref="tree"  
-				style="height: 500px;overflow-y: auto;" 
-				highlight-current
-				:props="{children: 'children',label: 'name'}" 
-				node-key="name" 
-				default-expand-all   
-				@node-click="handleNodeClick" >
+				<el-input v-model="search.technology" @input="query" suffix-icon="el-icon-search" placeholder="璇疯緭鍏ユ悳绱㈠唴瀹�"
+					size="small" clearable></el-input>
+				<el-tree :data="list" ref="tree" style="overflow-y: auto;" highlight-current
+					:props="{children: 'children',label: 'name'}" node-key="name" default-expand-all
+					@node-click="handleNodeClick">
 					<div class="custom-tree-node" slot-scope="{ node, data }">
 						<span><i :class="`node_i ${data.code != '[2]'?'el-icon-folder-opened':'el-icon-tickets'}`"></i>
 							{{data.code}} {{ data.name }}</span>
@@ -155,7 +120,7 @@
 				</el-tree>
 			</div>
 			<div class="right">
-                <el-table :data="tableData" border style="width: 100%;overflow-y: auto;min-height: 100%" max-height="100%"
+				<el-table :data="tableData" border style="width: 100%;overflow-y: auto;min-height: 100%" max-height="100%"
 					@selection-change="handleSelectionChange" default-expand-all>
 					<el-table-column type="selection" width="50">
 					</el-table-column>
@@ -176,48 +141,48 @@
 		</div>
 		<!-- <el-dialog title="缂栬緫璁板綍鍐呭" :visible.sync="upDia" width="500px">
 			<div class="body">
-			
+
 			</div>
-			
+
 		</el-dialog> -->
 	</div>
 </template>
 <script>
-export default {
+	export default {
 		data() {
 			return {
-              search:{
+				search: {
 					type: 0,
 					technology: ''
 				},
-              list:[],
-				process:{},
+				list: [],
+				process: {},
 				// handleClose:[],
 				checkTreeNode:{
-					id:2,
+					id:'',
 				},
-				tableData:[],
-				tableapi:[{
-					supplier:'',
-					qualityTraceability:'',
-					name:'',
-					specifications:'',
-					unit:'',
-					}],
-				addsearch:{},
-				upData:{},
-				form:{},
-				dialogVisible:false,
-				typeselect:0,
-				input:'',
-				craftapi:[],
-            }
-        },
-		mounted() {
-			this.selectAllleft() 
-			this.selectAllMbom()         
+				tableData: [],
+				tableapi: [{
+					supplier: '',
+					qualityTraceability: '',
+					name: '',
+					specifications: '',
+					unit: '',
+				}],
+				addsearch: {},
+				upData: {},
+				form: {},
+				dialogVisible: false,
+				typeselect: 0,
+				input: '',
+				craftapi: [],
+			}
 		},
-		methods:{
+		mounted() {
+			this.selectAllleft()
+			this.selectAllMbom()
+		},
+		methods: {
 			selectDataList() {
 				this.list.forEach(a => {
 					a.code = '[1]'
@@ -234,35 +199,39 @@
 				})
 				this.upIndex++
 			},
-			 workevent(val){
-                console.log(val);
-                let idx = this.process.findIndex(el => el.name === val)
-                this.craftapi = this.process[idx].children
-            },
+			workevent(val) {
+				console.log(val);
+				let idx = this.process.findIndex(el => el.name === val)
+				this.craftapi = this.process[idx].children
+			},
 			//鏂板
 			chooseTechFath() {
-			this.$axios.get(this.$api.url.chooseTechFath,{
-                params:{type:this.typeselect}
-            }).then(res => {
-				this.process = res.data;
-                console.log(this.process);
-			}, {
-				headers: {
-                		"Content-Type": "application/json"
-              		}
-            })
+				this.$axios.get(this.$api.url.chooseTechFath, {
+					params: {
+						type: this.typeselect
+					}
+				}).then(res => {
+					this.process = res.data;
+					console.log(this.process);
+				}, {
+					headers: {
+						"Content-Type": "application/json"
+					}
+				})
 			},
 			addMbom(data) {
-				this.$axios.post(this.$api.url.addMbom,data
-				// {
-					// name:this.tableapi.name,
-					// qualityTraceability:this.tableapi.qualityTraceability,
-					// specifications:this.tableapi.specifications,
-					// supplier:this.tableapi.supplier,
-					// techTemId:this.craftapi.id,
-					// unit:this.tableapi.unit,
-				// }
-				, {
+				this.$axios.post(this.$api.url.addMbom,data,{
+					// params:{
+					// 	techTemId:this.craftapi.id,
+					// 	mbomModelDto2List:[{
+					// 		name:this.tableapi.name,
+					// 		qualityTraceability:this.tableapi.qualityTraceability,
+					// 		specifications:this.tableapi.specifications,
+					// 		supplier:this.tableapi.supplier,
+					// 		unit:this.tableapi.unit,
+					// 	}]
+					// }
+				}, {
 					headers: {
                 		"Content-Type": "application/json"
               		}
@@ -276,11 +245,11 @@
 			//鍒犻櫎
 			material(index) {
 				console.log(this.upData.id);
-				this.$axios.post(this.$api.url.material,{
-					id:this.upData.id
-				}).then(res =>{
+				this.$axios.post(this.$api.url.material, {
+					id: this.upData.id
+				}).then(res => {
 					this.$message.success(res.message)
-					this.tableData.splice(index,1)
+					this.tableData.splice(index, 1)
 
 					// console.log(res);
 				})
@@ -305,16 +274,23 @@
 				this.$nextTick(() => {
 				this.$refs.tree.setCurrentKey(this.list[0].children[0].name) // 榛樿閫変腑鑺傜偣绗竴涓�
 			})
+				let one=this.list.filter(item=>{
+				return item.children.length>0
+				})[0]
+				console.log(one);
+				let name=one.children[0].id
+				console.log(name);
+				this.selectAllMbomStart(name)
+				this.selectDataList();
 			}, {
 				headers: {
                 		"Content-Type": "application/json"
               		}
             })
 			},
-			//鍙宠竟
-			selectAllMbom() {
+			selectAllMbomStart(name) {
 			this.$axios.get(this.$api.url.selectAllMbom,{
-				params:{id:this.checkTreeNode.id}
+				params:{id:name}
 			}).then(res => {
 				this.tableData = res.data;
 				console.log(this.tableData);
@@ -324,50 +300,62 @@
               		}
             })
 			},
+			//鍙宠竟
+			selectAllMbom() {
+				this.$axios.get(this.$api.url.selectAllMbom, {
+					params: {
+						id: this.checkTreeNode.id
+					}
+				}).then(res => {
+					this.tableData = res.data;
+					console.log(this.tableData);
+				}, {
+					headers: {
+						"Content-Type": "application/json"
+					}
+				})
+			},
 			handleNodeClick(data){
                 this.checkTreeNode = data
+				console.log(data);
 				console.log(this.checkTreeNode.id);
 				this.selectAllMbom()
-            },
+			},
 			handleClose(done) {
 				this.$confirm('纭鍏抽棴锛�')
-				.then(_ => {
-					done();
-				})
-				.catch(_ => {});
+					.then(_ => {
+						done();
+					})
+					.catch(_ => {});
 			},
+			//鏂板
             event(){
                 this.dialogVisible = true
 				this.chooseTechFath()
             },
+			//娣诲姞琛�
 			 Addrow() {
 			if (this.tableapi == undefined) {
 				this.tableapi = new Array();
 			}
 			let obj = [];
-			
 			this.tableapi.push(obj);
 			},
-			skipshow(){
+			skipshow() {
 				console.log('666');
 				let data = this.tableapi.at(-1)
-				// this.addMbom()
 				data.techTemId = this.search.craft
-				// console.log(this.search.craft);
-				// console.log(data);
-
 				this.addMbom(data)
-				
 				this.dialogVisible = false
 			},
 			//delAllMbom 鎵归噺鍒犻櫎
 			delAllMbom() {
-                this.$axios.post(this.$api.url.delAllMbom,{
-                    ids:this.delete
-                }).then(res =>{
-                    this.selectAllMbom()
-                })
-            },
+				this.$axios.post(this.$api.url.delAllMbom, {
+					ids: this.delete
+				}).then(res => {
+					this.selectAllMbom()
+				})
+			},
 			dels() {
 				this.selects.forEach(a => {
 					for (var b = 0; b < this.tableData.length; b++) {
@@ -396,8 +384,8 @@
 				this.material(index)
 			},
 
-        }
-    }
+		}
+	}
 </script>
 
 <style scoped>
@@ -416,7 +404,8 @@
 	.title * {
 		font-size: 16px;
 	}
-	.choose-1{
+
+	.choose-1 {
 		padding: 5px 24px;
 		display: flex;
 		align-items: center;
@@ -455,6 +444,7 @@
 		height: calc(100% - 20px);
 		border-right: 3px solid rgb(245, 247, 251);
 		padding: 16px;
+		overflow-y: auto;
 	}
 
 	.thing .left .custom-tree-node span {
diff --git a/src/components/view/record-content.vue b/src/components/view/record-content.vue
index fd9e74b..504470a 100644
--- a/src/components/view/record-content.vue
+++ b/src/components/view/record-content.vue
@@ -46,6 +46,7 @@
 		height: calc(100% - 20px);
 		border-right: 3px solid rgb(245, 247, 251);
 		padding: 16px;
+		overflow-y: auto;
 	}
 
 	.thing .left .custom-tree-node span {
@@ -141,7 +142,6 @@
 			<div class="left">
 				<el-input v-model="search.technology" suffix-icon="el-icon-search" placeholder="璇疯緭鍏ユ悳绱㈠唴瀹�" size="small" clearable @input="query"></el-input>
 				<el-tree :data="list" ref="tree"
-				style="height: 500px;overflow-y: auto;"
 				:props="{children: 'children',label: 'name'}" node-key="name" default-expand-all
 					@node-click="handleNodeClick" highlight-current
 					:key="upIndex">
diff --git a/src/components/view/sale.vue b/src/components/view/sale.vue
index bdec015..b106e8f 100644
--- a/src/components/view/sale.vue
+++ b/src/components/view/sale.vue
@@ -132,9 +132,8 @@
 			<span>鐘舵�侊細</span>
 			<el-select v-model="search.type" size="small" placeholder="璇烽�夋嫨" style="width: 224px;margin-right: 30px;">
 				<el-option label="鍏ㄩ儴" :value="null"></el-option>
-				<el-option label="閫氳繃" :value="0"></el-option>
-				<el-option label="涓嶉�氳繃" :value="1"></el-option>
-				<el-option label="鏈鏍�" :value="2"></el-option>
+				<el-option label="閫氳繃" :value="1"></el-option>
+				<el-option label="涓嶉�氳繃" :value="0"></el-option>
 			</el-select>
 			<span>浜よ揣鏃ユ湡锛�</span>
 			<el-date-picker v-model="search.delTime" size="small" placeholder="璇疯緭鍏�" style="width: 224px;margin-right: 30px;"
@@ -174,7 +173,8 @@
 						<span class="table_do" @click="changeShowDetail(scope.row)">&nbsp;鏌ョ湅璇︽儏&nbsp;</span>
 						<span class="table_do" v-if="scope.row.type==null" @click="saleCheck(scope)">&nbsp;瀹℃牳&nbsp;</span>
 						<span class="table_do" v-else>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
-						<span class="table_do" @click="openUpDia(scope.row.id)">&nbsp;缂栬緫&nbsp;</span>
+						<span class="table_do" v-if="scope.row.type==null" @click="openUpDia(scope.row.id)">&nbsp;缂栬緫&nbsp;</span>
+						<span class="table_do" v-else>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
 						<span class="table_do" @click="delSale(scope.$index)">&nbsp;鍒犻櫎&nbsp;</span>
 					</template>
 				</el-table-column>
@@ -402,7 +402,7 @@
 					delTime: null
 				},
 				tableData: [],
-				selects: [],
+				selects: '',
 				currentPage: 1,
 				countSize: 0,
 				pageSize: 10,
@@ -430,7 +430,13 @@
 		},
 		methods: {
 			handleSelectionChange(val) {
-				this.selects = val.id;
+				this.selects = ''
+				val.forEach((a, ai)=>{
+					this.selects += a.id
+					if(ai!=val.length-1){
+						this.selects += ','
+					}
+				})
 			},
 			handleSizeChange(val) {
 				this.pageSize = val
@@ -456,7 +462,7 @@
 				})
 			},
 			clean() {
-				this.selects = []
+				this.selects = ''
 				this.currentPage = 1
 				this.countSize = 0
 				this.pageSize = 10
@@ -464,7 +470,8 @@
 					formTime: null,
 					createTime: null,
 					insState: 2,
-					judgeState: 2
+					judgeState: 2,
+					type: null
 				}
 				this.selectRawInspectsList()
 			},
@@ -565,7 +572,6 @@
 				})
 			},
 			upSale() {
-				console.log(this.addData);
 				for (var b = 0; b < this.addData.saleMaterialList.length; b++) {
 					if (Object.keys(this.addData.saleMaterialList[b]).length == 0) {
 						this.addData.saleMaterialList.splice(b, 1)
@@ -581,7 +587,8 @@
 					}
 				}
 				for (var a in this.addData) {
-					if ((this.addData[a] == null || this.addData[a] == '') && a != 'type') {
+					console.log(a);
+					if ((this.addData[a] == null || this.addData[a] == '') && a!='checkname' && a!='checkTime' && a != 'type') {
 						if (a == 'saleMaterialList') {
 							this.$message.error('浜у搧淇℃伅涓嶈兘涓虹┖')
 						} else {
@@ -612,13 +619,12 @@
 				})
 			},
 			delSales(){
-				console.log(this.selects);
+				if(this.selects=='') {
+					this.$message.warning('璇烽�夋嫨涓�鏉℃暟鎹垹闄�')
+					return
+				}
 				this.axios.post(this.$api.url.delAllSale,{
 					ids: this.selects
-				}, {
-					headers: {
-						'Content-Type': 'application/json'
-					}
 				}).then(res=>{
 					this.$message.success('鍒犻櫎鎴愬姛')
 					this.selectRawInspectsList()
diff --git a/src/components/view/self-inspection.vue b/src/components/view/self-inspection.vue
index a10d40f..55b8cbc 100644
--- a/src/components/view/self-inspection.vue
+++ b/src/components/view/self-inspection.vue
@@ -141,7 +141,7 @@
 		<div class="thing">
 			<div class="left">
 				<el-input v-model="search.technology" suffix-icon="el-icon-search" placeholder="璇疯緭鍏ユ悳绱㈠唴瀹�" size="small" clearable @input="(val)=>$refs.tree.filter(val)"></el-input>
-				<el-tree :data="list" style="height: 500px;overflow-y: auto;" ref="tree" :props="{children: 'children',label: 'name'}" node-key="name" default-expand-all
+				<el-tree :data="list" ref="tree" :props="{children: 'children',label: 'name'}" node-key="name" default-expand-all
 					@node-click="handleNodeClick" highlight-current @node-expand="nodeOpen" @node-collapse="nodeClose" :filter-node-method="filterNode"
 					:key="upIndex">
 					<div class="custom-tree-node" slot-scope="{ node, data }">
diff --git a/src/components/view/standard-table/material.vue b/src/components/view/standard-table/material.vue
index 66e3416..4dc288b 100644
--- a/src/components/view/standard-table/material.vue
+++ b/src/components/view/standard-table/material.vue
@@ -40,6 +40,11 @@
               <el-table-column prop="unit" label="鍗曚綅">
               </el-table-column>
               <el-table-column prop="num" label="鏁伴噺">
+                <template slot-scope="scope">
+                  <el-input v-model="scope.row.num" 
+                    v-if="scope.row.mname != null"
+                    @blur="updateVal(scope.row)"></el-input>
+                </template>
               </el-table-column>
             </el-table>
           </div>
@@ -51,13 +56,25 @@
       data() {
         return {
           hasChildren:true,
-          selects: []
+          selects: [],
+          isAllSelect:false,
+          deleteList:[],
         }
       },
       props:['tableData','tableType'],
       created() {},
       mounted() {},
       methods: {
+        updateVal(row){
+          this.$axios.post(this.$api.url.mBomWrite,{
+            id : row.id,
+            num : row.num
+          }).then(res=>{
+            this.$message.success(res.message);
+          }).catch(error=>{
+            this.$message.error(error.message);
+          })
+        },
         // 琛ㄦ牸鏍戝叏閮ㄩ�変腑閰嶇疆
         // 鍏ㄩ��/鍙栨秷閫夋搷浣�
         selectAll(val) {
@@ -94,14 +111,33 @@
             }
           }
         },
-        handleSelectionChange(val) {
-          this.deleteList = [];
-          val.forEach((v) => {
-            if (v.id !== undefined) {
-              this.deleteList.push(v.id);
+        //鏀瑰彉閫変腑
+        toggleSelection(row, flag) {
+          this.$set(row, "isChecked", flag);
+          this.$nextTick(() => {
+            if (flag) {
+              this.$refs.multipleTable.toggleRowSelection(row, flag);
+            } else {
+              this.$refs.multipleTable.clearSelection();
             }
           });
         },
+        handleSelectionChange(val) {
+        this.deleteList = [];
+        val.forEach((v) => {
+          this.searchIdFun(v);
+        });
+        this.$emit("childData",this.deleteList);
+      },
+      //閫掑綊鏌ユ壘閫変腑鏁版嵁id
+      searchIdFun(data){
+        let obj = data;
+        if(obj.children != undefined){
+          this.searchIdFun(obj.children);
+        }else{
+          this.deleteList.push(obj.id);
+        }
+      },
         // 琛ㄦ牸鏍戝叏閮ㄩ�変腑閰嶇疆  缁撴潫
       }
     }
@@ -146,8 +182,8 @@
     .standard .el-table__body {
       height: 100%;
     }
-    .standard .el-table .el-table__row:not([class*="el-table__row--level-"]) td:nth-child(3){
+    /* .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/product.vue b/src/components/view/standard-table/product.vue
index 95a0782..62990fd 100644
--- a/src/components/view/standard-table/product.vue
+++ b/src/components/view/standard-table/product.vue
@@ -35,9 +35,9 @@
     /* .standard .el-table__body {
       height: 100%;
     } */
-    .standard .el-table .el-table__row:not([class*="el-table__row--level-"]) td:nth-child(3){
+    /* .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">
@@ -69,12 +69,18 @@
         </el-table-column>
         <el-table-column prop="productFather" label="椤圭洰">
           <template slot-scope="scope">
-                <el-tag type="info" v-if="scope.row.productFather != null">03</el-tag>
+                <el-tag type="info" v-if="scope.row.productFather != null">04</el-tag>
                 <span>{{scope.row.productFather}}</span>
             </template>
         </el-table-column>
+        <el-table-column prop="productFather" hidden></el-table-column>
         <el-table-column prop="unit" label="鍗曚綅"></el-table-column>
         <el-table-column prop="product" label="鎸囨爣"></el-table-column>
+        <el-table-column label="鎿嶄綔">
+          <template slot-scope="scope">
+            <el-button type="text" @click="updateProduct(scope.row)">缂栬緫</el-button>
+          </template>
+        </el-table-column>
         </el-table>
     </div>
 </template>
@@ -85,10 +91,14 @@
         deviceGroupDialog:false,
         selects: [],
         isAllSelect:false,
+        deleteList:[],
       }
     },
     props:['tableData','tableType'],
     methods:{
+      updateProduct(row){
+        console.log(row);
+      },
         // 琛ㄦ牸鏍戝叏閮ㄩ�変腑閰嶇疆
       // 鍏ㄩ��/鍙栨秷閫夋搷浣�
       selectAll(val) {
@@ -125,13 +135,32 @@
           }
         }
       },
+      //鏀瑰彉閫変腑
+      toggleSelection(row, flag) {
+        this.$set(row, "isChecked", flag);
+        this.$nextTick(() => {
+          if (flag) {
+            this.$refs.multipleTable.toggleRowSelection(row, flag);
+          } else {
+            this.$refs.multipleTable.clearSelection();
+          }
+        });
+      },
       handleSelectionChange(val) {
         this.deleteList = [];
         val.forEach((v) => {
-          if (v.id !== undefined) {
-            this.deleteList.push(v.id);
-          }
+          this.searchIdFun(v);
         });
+        this.$emit("childData",this.deleteList);
+      },
+      //閫掑綊鏌ユ壘閫変腑鏁版嵁id
+      searchIdFun(data){
+        let obj = data;
+        if(obj.children != undefined){
+          this.searchIdFun(obj.children);
+        }else{
+          this.deleteList.push(obj.tqid);
+        }
       },
       // 琛ㄦ牸鏍戝叏閮ㄩ�変腑閰嶇疆  缁撴潫
     }
diff --git a/src/components/view/standard-table/target.vue b/src/components/view/standard-table/target.vue
index 46cc2d9..9524ae4 100644
--- a/src/components/view/standard-table/target.vue
+++ b/src/components/view/standard-table/target.vue
@@ -57,6 +57,8 @@
       data() {
         return {
           selects: [],
+          deleteList:[],
+          isAllSelect:false,
         }
       },
       props:['tableData','tableType'],
@@ -99,13 +101,32 @@
           }
         }
       },
+      //鏀瑰彉閫変腑
+      toggleSelection(row, flag) {
+        this.$set(row, "isChecked", flag);
+        this.$nextTick(() => {
+          if (flag) {
+            this.$refs.multipleTable.toggleRowSelection(row, flag);
+          } else {
+            this.$refs.multipleTable.clearSelection();
+          }
+        });
+      },
       handleSelectionChange(val) {
         this.deleteList = [];
         val.forEach((v) => {
-          if (v.id !== undefined) {
-            this.deleteList.push(v.id);
-          }
+          this.searchIdFun(v);
         });
+        this.$emit("childData",this.deleteList);
+      },
+      //閫掑綊鏌ユ壘閫変腑鏁版嵁id
+      searchIdFun(data){
+        let obj = data;
+        if(obj.children != undefined){
+          this.searchIdFun(obj.children);
+        }else{
+          this.deleteList.push(obj.pid);
+        }
       },
       // 琛ㄦ牸鏍戝叏閮ㄩ�変腑閰嶇疆  缁撴潫
         updateVal(row){
@@ -118,9 +139,6 @@
           }).catch(error=>{
             this.$message.error(error.message);
           })
-        },
-        handleSelectionChange(val) {
-          this.selects = val;
         },
       }
     }
@@ -169,8 +187,8 @@
     /* .standard .el-table__body {
       height: 100%;
     } */
-    .standard .el-table .el-table__row:not([class*="el-table__row--level-"]) td:nth-child(3){
+    /* .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/technology.vue b/src/components/view/standard-table/technology.vue
index 2c2792e..978a988 100644
--- a/src/components/view/standard-table/technology.vue
+++ b/src/components/view/standard-table/technology.vue
@@ -67,16 +67,10 @@
     props:['tableData','tableType'],
     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);
@@ -106,13 +100,37 @@
           }
         }
       },
+      //鏀瑰彉閫変腑
+      toggleSelection(row, flag) {
+        this.$set(row, "isChecked", flag);
+        this.$nextTick(() => {
+          if (flag) {
+            this.$refs.multipleTable.toggleRowSelection(row, flag);
+          } else {
+            this.$refs.multipleTable.clearSelection();
+          }
+        });
+      },
+      selectAll(val) {
+        this.isAllSelect = !this.isAllSelect;
+        let data = this.tableData;
+        this.toggleSelect(data, this.isAllSelect, "all");
+      },
       handleSelectionChange(val) {
         this.deleteList = [];
         val.forEach((v) => {
-          if (v.id !== undefined) {
-            this.deleteList.push(v.id);
-          }
+          this.searchIdFun(v);
         });
+        this.$emit("childData",this.deleteList);
+      },
+      //閫掑綊鏌ユ壘閫変腑鏁版嵁id
+      searchIdFun(data){
+        let obj = data;
+        if(obj.children != undefined){
+          this.searchIdFun(obj.children);
+        }else{
+          this.deleteList.push(obj.id);
+        }
       },
       // 琛ㄦ牸鏍戝叏閮ㄩ�変腑閰嶇疆  缁撴潫
       showDialog(){
@@ -189,7 +207,7 @@
   /* .standard .el-table__body {
     height: 100%;
   } */
-  .standard .el-table .el-table__row:not([class*="el-table__row--level-"]) td:nth-child(3){
+  /* .standard .el-table .el-table__row:not([class*="el-table__row--level-"]) td:nth-child(3){
     padding-left: 23px !important;
-   }
+   } */
 </style>
diff --git a/src/components/view/standard.vue b/src/components/view/standard.vue
index 0586a40..2a3269a 100644
--- a/src/components/view/standard.vue
+++ b/src/components/view/standard.vue
@@ -5,9 +5,9 @@
         <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>
-          <el-button icon="el-icon-plus">鏂板鐗堟湰</el-button>
-          <el-button @click="bomRightDl=true" icon="el-icon-delete">鍒犻櫎</el-button>
+            @click="showBomAddModel">鏂板</el-button>
+          <el-button icon="el-icon-plus" @click="addVersionBtn">鏂板鐗堟湰</el-button>
+          <el-button @click="deleteDataBtn" icon="el-icon-delete">鍒犻櫎</el-button>
         </el-col>
       </el-row>
     </div>
@@ -32,8 +32,6 @@
           </div>
         </el-tree>
       </div>
-
-
       <div class="right">
         <div class="choose">
           <span>绫诲瀷锛�</span>
@@ -45,10 +43,10 @@
             <el-option :value="3" label="鐢熶骇宸ヨ壓"></el-option>
           </el-select>
           <span>{{ tableType == 1 ? '椤圭洰锛�' : '宸ヨ壓鍚嶇О锛�' }}</span>
-          <el-input v-model="searchName" size="small" placeholder="璇疯緭鍏�" style="width: 224px;margin-right: 24px;"
+          <el-input v-model="searchName" size="small" placeholder="璇疯緭鍏�" style="width: 224px;margin-right: 50px;"
             clearable></el-input>
-          <span>{{ tableType == 1 ? '鐗堟湰锛�' : '鐗堟湰锛�' }}</span>
-          <el-select v-model="VER" @change="verevent" style="width: 280px;" placeholder="璇烽�夋嫨">
+          <span>鐗堟湰锛�</span>
+          <el-select v-model="version2" @change="verevent" size="small" style="width: 280px;margin-right: 10px;" placeholder="璇烽�夋嫨">
             <el-option v-for="item in version" :key="item" :label="item" :value="item">
             </el-option>
           </el-select>
@@ -58,16 +56,17 @@
         </div>
 
         <div class="contentTable" v-if="this.typeselect == 0">
-          <technology  :tableType="tableType" :tableData="tableData"></technology>
+          <technology @childData="getChildData"  :tableType="tableType" :tableData="tableData"></technology>
         </div>
         <div v-if="this.typeselect == 1">
-          <target :tableType="tableType" :tableData="tableData"></target>
+          <target @childData="getChildData" :tableType="tableType" :tableData="tableData"></target>
         </div>
         <div v-if="this.typeselect == 2">
-          <bom  :tableType="tableType" :tableData="tableData"></bom>
+          <material @childData="getChildData" :tableType="tableType" :tableData="tableData"></material>
         </div>
-        <div v-if="this.typeselect == 3">鐢熶骇宸ヨ壓</div>
-        
+        <div v-if="this.typeselect == 3">
+          <product @childData="getChildData" :tableType="tableType" :tableData="tableData"></product>
+        </div>
       </div>
     </div>
 
@@ -155,45 +154,82 @@
         <!-- 鐗╂枡娓呭崟 -->
         <div v-if="typeselect == 2">
           <el-form :model="materialForm" label-position="right"
-          :rules="materialRules" ref="materialForm" label-width="80px">
-          <el-row>
+          :rules="materialRules" ref="materialForm" label-width="90px">
+          <el-row :gutter="100">
             <el-col :span="12">
-              <el-form-item label="瑙勬牸鍨嬪彿:" width="250">
-                <el-input style="width:200px;" v-model="materialForm.pname" placeholder="璇疯緭鍏ュ崟浣�"/>
-              </el-form-item>
+              <el-form-item label="宸ュ簭:" prop="mfather">
+                <el-select placeholder="璇烽�夋嫨宸ュ簭" @change="changeMName"
+                  style="width:100%;" v-model="materialForm.mfather">
+                  <el-option v-for="(item,index) in materialFormList" :key="index"
+                  :label="item.name" :value="item.name" ></el-option>
+                  </el-select>              
+                </el-form-item>
               </el-col>
-              <el-col :span="12" style="text-align: right;">
-              <el-form-item label="浜у搧澶х被:" 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-col :span="12">
+              <el-form-item label="宸ヨ壓鍚嶇О:" prop="mtechnologyId">
+                <el-select placeholder="璇烽�夋嫨宸ヨ壓鍚嶇О" style="width:100%;" 
+                v-model="materialForm.mtechnologyId">
+                <el-option v-for="(item,index) in mIdList" :key="index" 
+                :value="item.id" :label="item.name"></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-form-item label="鏉愭枡淇℃伅" style="font-weight: bold;"></el-form-item>
             </el-col>
             <el-col :span="12" style="text-align: right;">
-              <el-button size="mini" style="text-align: right;">娣诲姞琛�</el-button>
+              <el-button size="mini" @click="addRowByMaterial">娣诲姞琛�</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 :data="materialForm.tableList" border max-height="470"
+              style="width:100%;text-align: left;margin: 0;padding: 0;"
+              :cell-style="{height:'20px',textAlign:'left'}"
+              :header-cell-style="{height:'20px'}">
+                <el-table-column label="渚涘簲鍟嗗悕绉�">
+                  <template slot-scope="scope">
+                      <el-input size="mini" v-model="scope.row.supplier"
+                      placeholder="璇疯緭鍏�"></el-input>
+                  </template>
+                </el-table-column>
+                <el-table-column label="璐ㄩ噺杩芥函鍙�">
+                  <template slot-scope="scope">
+                      <el-input size="mini" v-model="scope.row.qualityTraceability"
+                      placeholder="璇疯緭鍏�"></el-input>
+                  </template>
+                </el-table-column>
+                <el-table-column label="鍘熸潗鏂欏悕绉�">
+                  <template slot-scope="scope">
+                      <el-input size="mini" v-model="scope.row.name"
+                      placeholder="璇疯緭鍏�"></el-input>
+                  </template>
+                </el-table-column>
+                <el-table-column label="瑙勬牸鍨嬪彿">
+                  <template slot-scope="scope">
+                      <el-input size="mini" v-model="scope.row.specifications"
+                      placeholder="璇疯緭鍏�"></el-input>
+                  </template>
+                </el-table-column>
+                <el-table-column label="鍗曚綅">
+                  <template slot-scope="scope">
+                      <el-input size="mini" v-model="scope.row.unit"
+                      placeholder="璇疯緭鍏�"></el-input>
+                  </template>
+                </el-table-column>
+                <el-table-column label="鏁伴噺">
+                  <template slot-scope="scope">
+                      <el-input size="mini" v-model="scope.row.num"
+                      placeholder="璇疯緭鍏�"></el-input>
+                  </template>
+                </el-table-column>
               </el-table>
             </el-col>
           </el-row>
           </el-form>
-          <div style="width:100%;text-align: right;">
+          <div style="width:100%;margin-top: 20px;margin-left:75%">
             <span slot="footer" class="dialog-footer" >
               <el-button type="primary" @click="confirmAdd('materialForm')">纭� 瀹�</el-button>
               <el-button @click="bomAddModelVisible = false">鍙� 娑�</el-button>
@@ -203,52 +239,49 @@
         <!-- 鐢熶骇宸ヨ壓 -->
         <div v-if="typeselect == 3">
           <el-form :model="productForm" :inline="true" label-position="right"
-          label-width="80px">
-            <el-form-item label="宸ュ簭:" width="250">
-              <el-select v-model="productForm.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>
+          :rules="productRules" ref="productForm" label-width="90px">
+            <el-form-item label="宸ュ簭:" prop="profather">
+              <el-select v-model="productForm.profather" 
+              style="width:200px;" @change="changeProduct"
+              placeholder="璇烽�夋嫨宸ュ簭">
+                <el-option v-for="(item,index) in productFormList" :key="index"
+                :value="item.name" :label="item.name"></el-option>
               </el-select>
             </el-form-item>
-            <el-form-item label="宸ヨ壓鍚嶇О:" width="250">
-              <el-select placeholder="璇疯緭鍏ユ垨閫夋嫨宸ヨ壓鍚嶇О"
-              style="width:200px;"
-              v-model="productForm.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-form-item label="宸ヨ壓鍚嶇О:" prop="protechnologyId">
+              <el-select placeholder="璇烽�夋嫨宸ヨ壓鍚嶇О"
+              style="width:200px;" @change="getProductDeviceList"
+              v-model="productForm.protechnologyId">
+              <el-option v-for="(item,index) in proIdList" :key="index"
+                :value="item.id" :label="item.name"></el-option>
               </el-select>
             </el-form-item>
-            <el-form-item label="璁惧:" width="250">
+            <el-form-item label="璁惧:" prop="device">
               <el-select placeholder="璇烽�夋嫨璁惧"
               style="width:200px;"
-              v-model="productForm.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>
+              v-model="productForm.device">
+              <el-option v-for="(item,index) in productDeviceList" :key="index"
+                :value="item.device" :label="item.device"></el-option>
               </el-select>
             </el-form-item>
-            <el-form-item label="椤圭洰:" width="250">
+            <el-form-item label="椤圭洰:" prop="productFather">
               <el-select placeholder="璇烽�夋嫨椤圭洰"
-              style="width:200px;"
-              v-model="productForm.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>
+              style="width:200px;" @change="changeProductFather"
+              v-model="productForm.productFather">
+              <el-option v-for="(item,index) in productProjectList" :key="index"
+                :value="item.name" :label="item.name"></el-option>
               </el-select>
             </el-form-item>
-            <el-form-item label="鍗曚綅:" width="250">
-              <el-input style="width:200px;" v-model="productForm.unit" placeholder="璇疯緭鍏ュ崟浣�"/>
+            <el-form-item label="鎸囨爣:" prop="product">
+              <el-select placeholder="璇烽�夋嫨鎸囨爣"
+                style="width:200px;" @change="changeProProduct"
+                v-model="productForm.product">
+                <el-option v-for="(item,index) in proProductList" :key="index"
+                :value="item.name" :label="item.name"></el-option>
+              </el-select>
             </el-form-item>
-            <el-form-item label="鎸囨爣:" width="250">
-              <el-input style="width:200px;" v-model="productForm.pq" placeholder="璇疯緭鍏ユ寚鏍�" />
+            <el-form-item label="鍗曚綅:" prop="unit">
+              <el-input style="width:200px;" disabled v-model="productForm.unit"/>
             </el-form-item>
           </el-form>
           <div style="width:100%;text-align: right;">
@@ -300,10 +333,11 @@
 <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,bomClickAdd },
+  components: { technology,material,target,product,bomClickAdd },
 
   data() {
     var checkPq = (rule,value,callback)=>{
@@ -320,14 +354,11 @@
       callback();
     };
     return {
-      //鎶�鏈寚鏍�-鏂板-宸ュ簭锛屽伐鑹轰笅鎷夋鏁版嵁
-      targetFormList:[],
-      technologyIdList:[],
-      //鎶�鏈寚鏍�-鏂板-椤圭洰涓嬫媺妗嗘暟鎹�
-      projectList:[],
+      //瀛愮粍浠朵紶鐨刬d鍒楄〃
+      childIds:[],
       //宸ュ簭鍒楄〃
+      technologyIdList:[],
       fatherList:[],
-      //璁惧缁勫垪琛�
       deviceList:[],
       technologyForm:{
         tefather:'',
@@ -335,6 +366,15 @@
         deviceGroup:'',
         productionQuota:''
       },
+      technologyRules:{
+        tefather:{required:true,message:'宸ュ簭涓嶈兘涓虹┖',trigger:'change'},
+        tename:{required:true,message:'宸ヨ壓鍚嶇О涓嶈兘涓虹┖',trigger:'blur'},
+        deviceGroup:{required:true,message:'璁惧缁勪笉鑳戒负绌�',trigger:'change'},
+        productionQuota:{validator:checkPq,trigger:'change'}
+      },
+      //鎶�鏈寚鏍�
+      targetFormList:[],
+      projectList:[],
       targetForm:{
         pfather:'',
         father: '',
@@ -343,14 +383,6 @@
         unit:'',
         internal:'',
         required: ''
-      },
-      materialForm:{},
-      productForm:{},
-      technologyRules:{
-        tefather:{required:true,message:'宸ュ簭涓嶈兘涓虹┖',trigger:'change'},
-        tename:{required:true,message:'宸ヨ壓鍚嶇О涓嶈兘涓虹┖',trigger:'blur'},
-        deviceGroup:{required:true,message:'璁惧缁勪笉鑳戒负绌�',trigger:'change'},
-        productionQuota:{validator:checkPq,trigger:'change'}
       },
       targetRules:{
         pfather:{required:true,message:'宸ュ簭涓嶈兘涓虹┖',trigger:'change'},
@@ -361,16 +393,47 @@
         internal:{validator:checkVal,trigger:'change'},
         required:{validator:checkVal,trigger:'change'}
       },
+      //鐗╂枡娓呭崟
+      materialForm:{
+        mfather: '',
+        mtechnologyId:'',
+        tableList:[]
+      },
+      materialFormList:[],
+      mIdList:[],
       materialRules:{
-
+        mfather:{required:true,message:'宸ュ簭涓嶈兘涓虹┖',trigger:'change'},
+        mtechnologyId:{required:true,message:'宸ヨ壓鍚嶇О涓嶈兘涓虹┖',trigger:'change'},
       },
+      //鐢熶骇宸ヨ壓
+      productForm:{
+        profather:'',
+        protechnologyId:'',
+        productFather:'',
+        product:'',
+        unit:'',
+        device:''
+      },
+      //璁惧鍒楄〃
+      productDeviceList:[],
+      //宸ヨ壓鍚嶇О鍒楄〃
+      proIdList:[],
+      //椤圭洰鍒楄〃
+      productProjectList:[],
+      //鎸囨爣鍒楄〃
+      proProductList:[],
       productRules:{
-
+        profather:{required:true,message:'宸ュ簭涓嶈兘涓虹┖',trigger:'change'},
+        protechnologyId:{required:true,message:'宸ヨ壓鍚嶇О涓嶈兘涓虹┖',trigger:'change'},
+        productFather:{required:true,message:'椤圭洰涓嶈兘涓虹┖',trigger:'change'},
+        product:{required:true,message:'鎸囨爣涓嶈兘涓虹┖',trigger:'change'},
+        device:{required:true,message:'璁惧涓嶈兘涓虹┖',trigger:'change'}
       },
+      productFormList:[],
       // BOM鏍戞暟鎹粨鏋�
       list: [],
       search: null,
-      tableType: 1, // 琛ㄦ牸绫诲瀷 1锛氭妧鏈寚鏍囷紝0锛氬伐鑹鸿矾绾�
+      tableType: 0, // 琛ㄦ牸绫诲瀷 1锛氭妧鏈寚鏍囷紝0锛氬伐鑹鸿矾绾�
       searchName: "",// 鏌ヨ鏉′欢-鍚嶇О
       checkTreeNode: {},// 鐐瑰嚮閫変腑鏍戣妭鐐�
       tableData: [],
@@ -380,9 +443,7 @@
       bomRightDl: false,
       formTypeOptions: null,
       typeselect: 0,
-      returntree: {
-        id:28,
-      },
+      returntree: {id:28},
       version: {},
       leftAdd:{
         type: [],
@@ -391,7 +452,7 @@
         name: null,
         specifications: null
       },
-      VER: {},
+      version2: {},
       verdata: {},
       character: 0,
       restaurants: [],
@@ -515,6 +576,69 @@
     leftAddBom(){
       
     },
+    //鑾峰彇瀛愮粍浠舵暟鎹�
+    getChildData(data){
+      this.childIds = data;
+    },
+    //鍒犻櫎鎸夐挳
+    deleteDataBtn(){
+      let ids;
+      let url;
+      ids = this.childIds.filter(item=>{
+        return item != undefined;
+      });
+      if(ids.length < 1){
+        this.$message.error("璇峰厛閫夋嫨鏁版嵁锛�");
+        return;
+      }
+      switch(this.typeselect){
+        case 0:
+          url = this.$api.url.delAllByTechnology;
+          break;
+        case 1:
+          url = this.$api.url.delAllByTarget;
+          break;
+        case 2:
+          url = this.$api.url.delAllByMBom;
+          break;
+        case 3:
+          url = this.$api.url.delAllByProduct;
+          break;
+      }
+      this.$confirm('纭鍒犻櫎宸查�変腑鐨勬暟鎹悧', '鍒犻櫎', {
+          confirmButtonText: '纭畾',
+          cancelButtonText: '鍙栨秷',
+          type: 'warning'
+        }).then(() => {
+          this.$axios.post(url,{
+            ids : ids.join(",")
+          }).then(res=>{
+            this.selectAll();
+            this.$message.success(res.message);
+          }).catch(error=>{
+            this.$message.error(error.message);
+          })
+        }).catch(() => {});
+    },
+    //鏂板鐗堟湰
+    addVersionBtn(){
+        this.$confirm('纭鏂板鐗堟湰鍚�', '鏂板鐗堟湰', {
+          confirmButtonText: '纭畾',
+          cancelButtonText: '鍙栨秷',
+          type: 'info'
+        }).then(() => {
+          this.$axios.post(this.$api.url.addVersion,{
+            specificationsId : this.returntree.id,
+            version : this.version2.substring(1,2),
+          }).then(res=>{
+            this.selectVersion();
+            this.$message.success(res.message);
+          }).catch(error=>{
+            this.$message.error(error.message);
+          })
+        }).catch(() => {});
+    },
+    //鍙充晶bom,纭鏂板
     confirmAdd(formName){
       this.$refs[formName].validate(valid=>{
         if(valid){
@@ -531,8 +655,25 @@
               this.submitBomAdd(this.$api.url.addTechnology,obj);
           }else if(type == 1){
             this.submitBomAdd(this.$api.url.addProductByStandard,this.targetForm);
+          }else if(type == 2){
+            obj = {
+              mbomDto2List:this.materialForm.tableList,
+              technologyId:this.materialForm.mtechnologyId
+            }
+            this.submitBomAdd(this.$api.url.addMBomByStandard,obj);
+          }else if(type == 3){
+                let form = this.productForm;
+                obj = {
+                    device: form.device,
+                    product: form.product,
+                    productFather: form.productFather,
+                    technologyId: form.protechnologyId,
+                    unit: form.unit
+                }
+                this.submitBomAdd(this.$api.url.addTechniqueByStandard,obj);
+          }else{
+            return
           }
-          
         }
       })
     },
@@ -576,7 +717,35 @@
         this.technologyIdList = arr[0].children;
       }
     },
-    //鑾峰彇宸ュ簭锛屽伐鑹哄垪琛�
+    //鐗╂枡娓呭崟--娣诲姞琛�
+    addRowByMaterial(){
+      let obj = {
+        "name": "",
+        "num": null,
+        "qualityTraceability": "",
+        "specifications": "",
+        "supplier": "",
+        "unit": ""
+      }
+      this.materialForm.tableList.push(obj);
+    },
+    //鐗╂枡娓呭崟--鑾峰彇宸ュ簭锛屽伐鑹哄垪琛�
+    getMaterialFormList(){
+      this.$axios.get(this.$api.url.chooseTechByMBom,{
+        params:{specificationsId : this.returntree.id}
+      }).then(res=>{
+        this.materialFormList = res.data;
+      }).catch(error=>{
+        this.$message.error(error.message);
+      })
+    },
+    changeMName(val){
+      let arr = this.materialFormList.filter(item=>{
+        return item.name == val;
+      })
+      this.mIdList = arr[0].children;
+    },
+    //鎶�鏈寚鏍�--鑾峰彇宸ュ簭锛屽伐鑹哄垪琛�
     getTargetFormList(){
       this.$axios.get(this.$api.url.chooseTechByStandard,{
         params:{specificationsId : this.returntree.id}
@@ -586,11 +755,59 @@
         this.$message.error(error.message);
       })
     },
-    //鑾峰彇椤圭洰鍒楄〃
-    getProjectFormList(){
-
+    //1.鐢熶骇宸ヨ壓-->閫夋嫨宸ュ簭,宸ヨ壓
+    getProductFormList(){
+      this.$axios.get(this.$api.url.chooseTechByProduct,{
+        params:{specificationsId : this.returntree.id}
+      }).then(res=>{
+        this.productFormList = res.data;
+      }).catch(error=>{
+        this.$message.error(error.message);
+      })
     },
-    //鑾峰彇宸ュ簭鍒楄〃
+    //2.閫夋嫨宸ュ簭锛岃幏鍙栧伐鑹哄悕绉�
+    changeProduct(val){
+      let arr = this.productFormList.filter(item=>{
+        return item.name == val
+      });
+      this.proIdList = arr[0].children;
+    },
+    //3.鐢熶骇宸ヨ壓-->閫夋嫨璁惧
+    getProductDeviceList(val){
+      this.$axios.get(this.$api.url.chooseDevByProduct,{
+        params:{technologyId : val}
+      }).then(res=>{
+        this.productDeviceList = res.data;
+        this.getProjectFormList(val);
+      }).catch(error=>{
+        this.$message.error(error.message);
+      })
+    },
+    //4.鐢熶骇宸ヨ壓--鑾峰彇椤圭洰鍒楄〃
+    getProjectFormList(val){
+      this.$axios.get(this.$api.url.chooseProByProduct,{
+        params:{technologyId : val}
+      }).then(res=>{
+        this.productProjectList = res.data;
+      }).catch(error=>{
+        this.$message.error(error.message);
+      })
+    },
+    //5.閫夋嫨椤圭洰鍒楄〃,鑾峰彇鎸囨爣
+    changeProductFather(val){
+      let arr = this.productProjectList.filter(item=>{
+        return item.name == val;
+      })
+      this.proProductList = arr[0].children;
+    },
+    //閫夋嫨鎸囨爣鍒楄〃
+    changeProProduct(val){
+      let arr = this.proProductList.filter(item=>{
+        return item.name == val;
+      })
+      this.productForm.unit = arr[0].unit;
+    },
+    //宸ヨ壓璺嚎--鑾峰彇宸ュ簭鍒楄〃
     getFatherList(){
       this.$axios.get(this.$api.url.chooseFather,{
         params:{specificationsId : this.returntree.id}
@@ -600,7 +817,7 @@
         this.$message.error(error.message);
       })
     },
-    //鑾峰彇璁惧缁勫垪琛�
+    //宸ヨ壓璺嚎--鑾峰彇璁惧缁勫垪琛�
     getDeviceList(){
       this.$axios.get(this.$api.url.chooseDevice).then(res=>{
         this.deviceList = res.data;
@@ -612,6 +829,8 @@
       this.getFatherList();
       this.getDeviceList();
       this.getTargetFormList();
+      this.getMaterialFormList();
+      this.getProductFormList();
       this.bomAddModelVisible = true
     },
     startLeftAdd(){
@@ -708,7 +927,7 @@
         return this.verdata[0]
       })
       this.character=v
-      this.VER="v"+v
+      this.version2="v"+v
       this.selectAll()
     },
     //鍙充晶鏁版嵁
diff --git a/src/components/view/technical.vue b/src/components/view/technical.vue
index 753f2ac..424ee7e 100644
--- a/src/components/view/technical.vue
+++ b/src/components/view/technical.vue
@@ -4,7 +4,7 @@
       <el-row>
         <el-col :span="12">鎶�鏈枃浠�</el-col>
         <el-col :span="12" style="text-align: right;">
-          <el-button  icon="el-icon-plus">鐢熸垚椤圭洰涔�</el-button>
+          <el-button icon="el-icon-plus">鐢熸垚椤圭洰涔�</el-button>
         </el-col>
       </el-row>
     </div>
@@ -25,14 +25,14 @@
           <el-input v-model="searchData.name" @input="query"></el-input>
         </el-form-item>
         <el-form-item label="缂栧埗鐘舵��:" >
-          <el-select v-model="searchData.type" placeholder="鍏ㄩ儴" style="width: 310px;">
+          <el-select v-model="searchData.type" size="small" placeholder="鍏ㄩ儴" style="width: 250px;">
               <el-option label="寰呯紪鍒�" :value="0"></el-option>
 							<el-option label="宸茬紪鍒�" :value="1"></el-option>
           </el-select>
         </el-form-item>
-        <el-form-item >
-                <el-button  plain @click="resetBtn">閲� 缃�</el-button>
-                <el-button  @click="searchTechnical">鏌� 璇�</el-button>
+        <el-form-item>
+              <el-button plain @click="resetBtn" style="margin-left: 12px;">閲� 缃�</el-button>
+              <el-button @click="searchTechnical">鏌� 璇�</el-button>
         </el-form-item>
       </el-form>
     </div>
@@ -335,6 +335,7 @@
   background: #fff;
   padding: 24px 32px;
 }
+
 .search-header .el-form-item__label{
   padding: 0 30px 0 0;
 }
@@ -416,3 +417,12 @@
 }
 </style>
 
+<style>
+	.technical .title *{
+		font-size: 14px;
+	}
+	
+	.technical .search-header *{
+		font-size: 14px;
+	}
+</style>
diff --git a/src/components/view/technology.vue b/src/components/view/technology.vue
index 6fa3369..c0ad40a 100644
--- a/src/components/view/technology.vue
+++ b/src/components/view/technology.vue
@@ -46,6 +46,7 @@
   height: calc(100% - 20px);
   border-right: 3px solid rgb(245, 247, 251);
   padding: 16px;
+	overflow-y: auto;
 }
 
 .thing .left .custom-tree-node span {
@@ -174,7 +175,6 @@
           node-key="name"
           default-expand-all
           @node-click="handleNodeClick"
-          style="height: 500px;overflow-y: auto;"
           :key="upIndex"
           highlight-current
         >
@@ -602,7 +602,7 @@
           }
         )
         .then((res) => {
-          console.log(res);
+					this.$parent.removeAllTab()
           this.selectAllTechNam();
           this.form = {};
         });
@@ -640,17 +640,17 @@
 			},
     //鎵归噺鍒犻櫎
     delAllTech() {
-      console.log(this.delete);
       this.$axios.post(this.$api.url.delAllTech, {
-        ids: this.delete,
+        ids: this.delete
       });
+			this.$parent.removeAllTab()
     },
     //鍒犻櫎
     delTechById() {
-      console.log(this.$api.url.delTechById, this.upData.id);
       this.$axios.post(this.$api.url.delTechById, {
-        id: this.upData.id,
+        id: this.upData.id
       });
+			this.$parent.removeAllTab()
     },
     //缂栬緫
     writeTechById() {
@@ -677,7 +677,7 @@
           }
         )
         .then((res) => {
-          console.log(res);
+					this.$parent.removeAllTab()
         });
     },
 
@@ -789,7 +789,6 @@
         return el.id;
       });
       this.delete = cc.join(",");
-      console.log(this.delete);
       this.delAllTech();
       this.$message.success("鍒犻櫎瀹屾垚");
     },
diff --git a/src/view/index.vue b/src/view/index.vue
index 09cfbd5..27712b5 100644
--- a/src/view/index.vue
+++ b/src/view/index.vue
@@ -1,629 +1,585 @@
 <style scoped>
-.all {
-  width: 100vw;
-  height: 100vh;
-  background-size: 100% 100%;
-  display: flex;
-  flex-wrap: wrap;
-}
+	.all {
+		width: 100vw;
+		height: 100vh;
+		background-size: 100% 100%;
+		display: flex;
+		flex-wrap: wrap;
+	}
 
-.title {
-  width: 100%;
-  height: 58px;
-  display: flex;
-  align-items: center;
-  padding: 0 30px;
-}
+	.title {
+		width: 100%;
+		height: 58px;
+		display: flex;
+		align-items: center;
+		padding: 0 30px;
+	}
 
-.logo {
-  width: 130px;
-}
+	.logo {
+		width: 130px;
+	}
 
-.logo img {
-  width: 100%;
-  height: 100%;
-}
+	.logo img {
+		width: 100%;
+		height: 100%;
+	}
 
-.title .label {
-  font-size: 18px;
-  text-align: center;
-  width: calc(100% - 130px - 200px);
-}
+	.title .label {
+		font-size: 18px;
+		text-align: center;
+		width: calc(100% - 130px - 200px);
+	}
 
-.user {
-  width: 200px;
-  height: 100%;
-  display: flex;
-  align-items: center;
-  justify-content: right;
-  color: #000;
-}
+	.user {
+		width: 200px;
+		height: 100%;
+		display: flex;
+		align-items: center;
+		justify-content: right;
+		color: #000;
+	}
 
-.user * {
-  margin: 0 5px;
-}
+	.user * {
+		margin: 0 5px;
+	}
 
-.user img {
-  margin-left: 20px;
-  cursor: pointer;
-  width: 14px;
-}
+	.user img {
+		margin-left: 20px;
+		cursor: pointer;
+		width: 14px;
+	}
 
-.user span {
-  font-size: 14px;
-}
+	.user span {
+		font-size: 14px;
+	}
 
-.left {
-  height: calc(100vh - 58px - 40px);
-  background-color: #004ea2;
-  display: flex;
-  align-items: center;
-  flex-direction: column;
-  padding: 20px 0;
-  transition: 0.3s;
-  overflow-y: auto;
-}
+	.left {
+		height: calc(100vh - 58px - 40px);
+		background-color: #004ea2;
+		display: flex;
+		align-items: center;
+		flex-direction: column;
+		padding: 20px 0;
+		transition: 0.3s;
+		overflow-y: auto;
+	}
 
-.left::-webkit-scrollbar {
-  width: 0;
-}
+	.left::-webkit-scrollbar {
+		width: 0;
+	}
 
-.left .box {
-  color: #fff;
-  width: 68px;
-  height: 68px;
-  margin: 8px 0;
-  cursor: pointer;
-  display: flex;
-  align-items: center;
-  justify-content: center;
-  flex-direction: column;
-  border-radius: 8px;
-}
+	.left .box {
+		color: #fff;
+		width: 68px;
+		height: 68px;
+		margin: 8px 0;
+		cursor: pointer;
+		display: flex;
+		align-items: center;
+		justify-content: center;
+		flex-direction: column;
+		border-radius: 8px;
+	}
 
-.left .box:active {
-  opacity: 0.8;
-}
+	.left .box:active {
+		opacity: 0.8;
+	}
 
-.left .active_box {
-  background-color: #fff;
-  color: #004ea2;
-}
+	.left .active_box {
+		background-color: #fff;
+		color: #004ea2;
+	}
 
-.left .box i {
-  font-size: 32px;
-  margin-bottom: 8px;
-}
+	.left .box i {
+		font-size: 24px;
+		margin-bottom: 8px;
+	}
 
-.left .box div {
-  font-size: 14px;
-}
+	.left .box div {
+		font-size: 14px;
+	}
 
-.small_menu {
-  color: #666;
-}
+	.small_menu {
+		color: #666;
+	}
 
-.small_menu .active_p {
-  color: #004ea2;
-}
+	.small_menu .active_p {
+		color: #004ea2;
+	}
 
-.small_menu p {
-  padding: 12px 15px;
-  cursor: pointer;
-}
+	.small_menu p {
+		padding: 12px 15px;
+		cursor: pointer;
+	}
 
-.small_menu p:hover {
-  background-color: rgba(0, 0, 0, 0.05);
-}
+	.small_menu p:hover {
+		background-color: rgba(0, 0, 0, 0.05);
+	}
 
-.small_menu i {
-  font-size: 16px;
-}
+	.small_menu i {
+		font-size: 16px;
+	}
 
-.small_menu span {
-  font-size: 14px;
-}
+	.small_menu span {
+		font-size: 14px;
+	}
 
-.right {
-  height: calc(100vh - 58px);
-  transition: 0.3s;
-}
+	.right {
+		height: calc(100vh - 58px);
+		transition: 0.3s;
+	}
 
-.tag {
-  width: 100%;
-  height: 36px;
-  background: rgb(255, 255, 255);
-  opacity: 0.8;
-  box-shadow: 0px 4px 16px rgba(0, 0, 0, 0.1);
-  display: flex;
-  align-items: center;
-  color: #999;
-  font-size: 14px;
-}
+	.tag {
+		width: 100%;
+		height: 36px;
+		background: rgb(255, 255, 255);
+		opacity: 0.8;
+		box-shadow: 0px 4px 16px rgba(0, 0, 0, 0.1);
+		display: flex;
+		align-items: center;
+		color: #999;
+		font-size: 14px;
+	}
 
-.tag > .el-icon-s-unfold,
-.el-icon-s-fold {
-  font-size: 18px;
-  cursor: pointer;
-  margin: 0 8px;
-}
+	.tag .el-icon-delete {
+		display: none;
+	}
 
-.tabs {
-  min-width: calc(100% - 34px);
-  height: 100%;
-  align-items: center;
-  display: flex;
-  overflow-x: auto;
-}
+	.tag .el-icon-delete:hover {
+		color: #F56C6C;
+	}
 
-.tab {
-  cursor: pointer;
-  font-size: 14px;
-  margin: 0 8px;
-  line-height: 32px;
-  transition: 0.3s;
-  border-top: 2px solid transparent;
-  border-bottom: 2px solid transparent;
-  user-select: none;
-  flex-shrink: 0;
-}
+	.tag:hover .el-icon-delete {
+		display: block;
+	}
 
-.tab i {
-  font-size: 12px;
-  display: none;
-}
+	.tag>.el-icon-s-unfold,
+	.el-icon-s-fold,
+	.el-icon-delete {
+		font-size: 18px;
+		cursor: pointer;
+		margin: 0 8px;
+	}
 
-.active_tab {
-  border-bottom: 2px solid #004ea2;
-  color: #004ea2;
-}
+	.tabs {
+		min-width: calc(100% - 68px);
+		height: 100%;
+		align-items: center;
+		display: flex;
+		overflow-x: auto;
+	}
 
-.active_tab i {
-  display: inline;
-  color: #004ea2;
-}
+	.tab {
+		cursor: pointer;
+		font-size: 14px;
+		margin: 0 8px;
+		line-height: 32px;
+		transition: 0.3s;
+		border-top: 2px solid transparent;
+		border-bottom: 2px solid transparent;
+		user-select: none;
+		flex-shrink: 0;
+	}
 
-.component_view {
-  height: calc(100vh - 94px - 22px);
-  width: calc(100% - 48px);
-  padding: 11px 24px;
-  background: rgb(245, 247, 251);
-  overflow-y: auto;
-}
+	.tab i {
+		font-size: 12px;
+		display: none;
+	}
 
-.com_index {
-  width: 100%;
-  height: 100%;
-}
+	.active_tab {
+		border-bottom: 2px solid #004ea2;
+		color: #004ea2;
+	}
+
+	.active_tab i {
+		display: inline;
+		color: #004ea2;
+	}
+
+	.component_view {
+		height: calc(100vh - 94px - 22px);
+		width: calc(100% - 48px);
+		padding: 11px 24px;
+		background: rgb(245, 247, 251);
+		overflow-y: auto;
+	}
+
+	.com_index {
+		width: 100%;
+		height: 100%;
+	}
 </style>
-<style></style>
 <template>
-  <div class="all">
-    <div class="title">
-      <div class="logo">
-        <img src="../../static/img/logo 1.png" />
-      </div>
-      <div class="label">涓ぉ娴锋磱鏂颁竴浠om绯荤粺</div>
-      <div class="user">
-        <el-avatar :size="24">{{ userName.substring(0, 1) }}</el-avatar>
-        <span>{{ userName }}</span>
-        <img src="../../static/img/閫�鍑�.png" @click="out" />
-      </div>
-    </div>
-    <div class="left" :style="`width: ${leftOpen ? '92' : '0'}px;`">
-      <div
-        :class="`box ${activeBox == 0 ? 'active_box' : ''}`"
-        @click="addTab(menu[0].c[0])"
-      >
-        <i class="font icon-shouye"></i>
-        <div>棣栭〉</div>
-      </div>
-      <div
-        :class="`box ${activeBox == 3 ? 'active_box' : ''}`"
-        @click="addTab(menu[1].c[0])"
-      >
-        <i class="font icon-jine"></i>
-        <div>閿�鍞鐞�</div>
-      </div>
-      <el-popover
-        placement="right-start"
-        width="90"
-        trigger="click"
-        v-for="(a, ai) in menu"
-        :key="ai"
-        v-if="a.k != '0' && a.k != '3'"
-      >
-        <div
-          :class="`box ${activeBox == a.k ? 'active_box' : ''}`"
-          @click="activeBox = a.k"
-          slot="reference"
-        >
-          <i :class="a.i"></i>
-          <div>{{ a.v }}</div>
-        </div>
-        <div class="small_menu">
-          <p
-            v-for="(b, bi) in a.c"
-            :key="bi"
-            :class="activeP == b.k ? 'active_p' : ''"
-            @click="addTab(b)"
-          >
-            <i :class="b.i"></i>
-            <span>{{ b.v }}</span>
-          </p>
-        </div>
-      </el-popover>
-    </div>
-    <div
-      class="right"
-      :style="`width: calc(100% - ${leftOpen ? '92' : '0'}px);`"
-    >
-      <div class="tag">
-        <i
-          :class="`${leftOpen ? 'el-icon-s-unfold' : 'el-icon-s-fold'}`"
-          @click="leftOpen = !leftOpen"
-        ></i>
-        <div class="tabs">
-          <div
-            :class="`tab ${tabActive == a.k ? 'active_tab' : ''}`"
-            v-for="(a, ai) in tabs"
-            :key="ai"
-            @click="upTabActive(a.k)"
-          >
-            {{ a.v }}
-            <i
-              class="el-icon-close"
-              @click="removeTab(ai)"
-              v-if="tabActive != 0"
-            ></i>
-          </div>
-        </div>
-      </div>
-      <div class="component_view">
-        <component
-          class="com_index"
-          v-for="(com, index) in tabs"
-          :is="com.u"
-          :key="upIndex + '|' + index"
-          v-show="com.k == tabActive"
-        >
-        </component>
-      </div>
-    </div>
-  </div>
+	<div class="all">
+		<div class="title">
+			<div class="logo">
+				<img src="../../static/img/logo 1.png" />
+			</div>
+			<div class="label">涓ぉ娴锋磱鏂颁竴浠om绯荤粺</div>
+			<div class="user">
+				<el-avatar :size="24">{{ userName.substring(0, 1) }}</el-avatar>
+				<span>{{ userName }}</span>
+				<img src="../../static/img/閫�鍑�.png" @click="out" />
+			</div>
+		</div>
+		<div class="left" :style="`width: ${leftOpen ? '92' : '0'}px;`">
+			<div :class="`box ${activeBox == 0 ? 'active_box' : ''}`" @click="addTab(menu[0].c[0])">
+				<i class="font icon-shouye"></i>
+				<div>棣栭〉</div>
+			</div>
+			<div :class="`box ${activeBox == 3 ? 'active_box' : ''}`" @click="addTab(menu[1].c[0])">
+				<i class="font icon-jine"></i>
+				<div>閿�鍞鐞�</div>
+			</div>
+			<el-popover placement="right-start" width="90" trigger="click" v-for="(a, ai) in menu" :key="ai"
+				v-if="a.k != '0' && a.k != '3'">
+				<div :class="`box ${activeBox == a.k ? 'active_box' : ''}`" @click="activeBox = a.k" slot="reference">
+					<i :class="a.i"></i>
+					<div>{{ a.v }}</div>
+				</div>
+				<div class="small_menu">
+					<p v-for="(b, bi) in a.c" :key="bi" :class="activeP == b.k ? 'active_p' : ''" @click="addTab(b)">
+						<i :class="b.i"></i>
+						<span>{{ b.v }}</span>
+					</p>
+				</div>
+			</el-popover>
+		</div>
+		<div class="right" :style="`width: calc(100% - ${leftOpen ? '92' : '0'}px);`">
+			<div class="tag">
+				<i :class="`${leftOpen ? 'el-icon-s-unfold' : 'el-icon-s-fold'}`" @click="leftOpen = !leftOpen"></i>
+				<div class="tabs">
+					<div :class="`tab ${tabActive == a.k ? 'active_tab' : ''}`" v-for="(a, ai) in tabs" :key="ai"
+						@click="upTabActive(a.k)">
+						{{ a.v }}
+						<i class="el-icon-close" @click="removeTab(ai)" v-if="tabActive != 0"></i>
+					</div>
+				</div>
+				<i class="el-icon-delete" @click="allDel" title="鍒犻櫎鎵�鏈夋爣绛鹃〉"></i>
+			</div>
+			<div class="component_view">
+				<component class="com_index" v-for="(com, index) in tabs" :is="com.u" :key="upIndex + '|' + index"
+					v-show="com.k == tabActive" @removeAllTab="removeAllTab">
+				</component>
+			</div>
+		</div>
+	</div>
 </template>
 
 <script>
-const requireComponent = require.context("../components/view", false, /\.vue/);
-var comObj = {};
-requireComponent.keys().forEach(fileName => {
-  var names = fileName
-    .split("/")
-    .pop()
-    .replace(".vue", "");
-  const componentConfig = requireComponent(fileName);
-  comObj[names] = componentConfig.default || componentConfig;
-});
-export default {
-  components: comObj,
-  data() {
-    return {
-      userName: "value",
-      leftOpen: true,
-      menu: [
-        {
-          k: 0,
-          v: "棣栭〉",
-          i: "font icon-shouye",
-          c: [
-            {
-              k: 0,
-              v: "棣栭〉",
-              i: "font icon-shouye",
-              u: "index-index"
-            }
-          ]
-        },
-        {
-          k: 3,
-          v: "閿�鍞鐞�",
-          i: "font icon-jine",
-          c: [
-            {
-              k: 11,
-              v: "閿�鍞鐞�",
-              i: "font icon-jine",
-              u: "sale"
-            }
-          ]
-        },
-        {
-          k: 1,
-          v: "鎶�鏈鐞�",
-          i: "font icon-ic_form_set24px",
-          c: [
-            {
-              k: 1,
-              v: "鏍囧噯BOM",
-              i: "font icon-shouye",
-              u: "standard"
-            },
-            {
-              k: 2,
-              v: "璁㈠崟BOM",
-              i: "font icon-shouye",
-              u: "technical"
-            }
-          ]
-        },
-        {
-          k: 4,
-          v: "鐢熶骇绠$悊",
-          i: "font icon-shengchanguanli",
-          c: [
-            {
-              k: 12,
-              v: "鐢熶骇璁㈠崟",
-              i: "font icon-shouye",
-              u: ""
-            },
-            {
-              k: 13,
-              v: "鐢熶骇璁″垝",
-              i: "font icon-shouye",
-              u: ""
-            },
-            {
-              k: 14,
-              v: "鐢熶骇鎶ュ伐",
-              i: "font icon-shouye",
-              u: ""
-            }
-          ]
-        },
-        {
-          k: 5,
-          v: "WMS绠$悊",
-          i: "font icon-a-Inventorydumprequest",
-          c: [
-            {
-              k: 15,
-              v: "鍘熸潗鏂欏簱瀛�",
-              i: "font icon-shouye",
-              u: ""
-            },
-            {
-              k: 16,
-              v: "鍥炲崟绠$悊",
-              i: "font icon-shouye",
-              u: ""
-            },
-            {
-              k: 17,
-              v: "鍗婃垚鍝佸簱瀛�",
-              i: "font icon-shouye",
-              u: ""
-            },
-            {
-              k: 18,
-              v: "鎴愬搧搴撳瓨",
-              i: "font icon-shouye",
-              u: ""
-            },
-            {
-              k: 19,
-              v: "鎴愬搧鍙戣揣",
-              i: "font icon-shouye",
-              u: ""
-            },
-            {
-              k: 20,
-              v: "鎴愬搧鍏ュ簱",
-              i: "font icon-shouye",
-              u: ""
-            }
-          ]
-        },
-        {
-          k: 2,
-          v: "QMS绠$悊",
-          i: "font icon-xunhuan",
-          c: [
-            {
-              k: 3,
-              v: "鍘熸潗鏂欐楠�",
-              i: "font icon-shouye",
-              u: "rawInsBox"
-            },
-            {
-              k: 4,
-              v: "鍘熸潗鏂欎笉鍚堟牸鍝�",
-              i: "font icon-shouye",
-              u: "rawUnqualifiedBox"
-            },
-            {
-              k: 5,
-              v: "杩囩▼妫�楠�",
-              i: "font icon-shouye",
-              u: "processInspection"
-            },
-            {
-              k: 6,
-              v: "鎴愬搧妫�楠�",
-              i: "font icon-shouye",
-              u: "finishedProductInspection"
-            },
-            {
-              k: 7,
-              v: "涓嶅悎鏍煎搧绠$悊",
-              i: "font icon-shouye",
-              u: "unqualifiedManagement"
-            },
-            {
-              k: 9,
-              v: "璐ㄩ噺缁熻",
-              i: "font icon-shouye",
-              u: ""
-            },
-            {
-              k: 10,
-              v: "璁¢噺绠$悊",
-              i: "font icon-shouye",
-              u: "measurementManagement"
-            },
-            {
-              k: 10.1,
-              v: "涓嶅悎鏍煎搧澶勭疆",
-              i: "font icon-shouye",
-              u: "Processingproducts"
-            }
-          ]
-        },
-        {
-          k: 6,
-          v: "鏍哥畻绠$悊",
-          i: "font icon-caiwuhesuanxitong",
-          c: [
-            {
-              k: 21,
-              v: "浜ч噺宸ヨ祫",
-              i: "font icon-shouye",
-              u: ""
-            },
-            {
-              k: 22,
-              v: "鍛樺伐鍑哄嫟",
-              i: "font icon-shouye",
-              u: ""
-            }
-          ]
-        },
-        {
-          k: 7,
-          v: "鍩虹鏁版嵁",
-          i: "font icon-a-ziyuan20",
-          c: [
-            {
-              k: 23,
-              v: "鐢熶骇璁板綍缁存姢",
-              i: "font icon-shouye",
-              u: "record-content"
-            },
-            {
-              k: 24,
-              v: "鑷椤圭洰缁存姢",
-              i: "font icon-shouye",
-              u: "self-inspection"
-            },
-            {
-              k: 25,
-              v: "鎶�鏈寚鏍囩淮鎶�",
-              i: "font icon-shouye",
-              u: "Technicalindex"
-            },
-            {
-              k: 26,
-              v: "宸ヨ壓璺嚎缁存姢",
-              i: "font icon-shouye",
-              u: "technology"
-            },
-            {
-              k: 27,
-              v: "璁惧缁存姢",
-              i: "font icon-shouye",
-              u: "laboratoryManagement"
-            },
-            {
-              k: 28,
-              v: "鐗╂枡娓呭崟缁存姢",
-              i: "font icon-shouye",
-              u: "mbom"
-            },
-            // {
-            // 	k: 29,
-            // 	v: "宸℃椤圭洰缁存姢",
-            // 	i: "font icon-shouye",
-            // 	u: "routinginspection"
-            // },
-            {
-              k: 30,
-              v: "鐢熶骇宸ヨ壓缁存姢",
-              i: "font icon-shouye",
-              u: "equipmentmaintain"
-            }
-          ]
-        }
-      ],
-      activeBox: 0,
-      activeP: 0,
-      tabActive: 0,
-      tabs: [
-        {
-          k: 0,
-          v: "棣栭〉",
-          i: "font icon-shouye",
-          u: "index-index"
-        }
-      ],
-      upIndex: 0
-    };
-  },
-  created() {},
-  mounted() {
-    this.userName = JSON.parse(localStorage.getItem("user")).name;
-  },
-  methods: {
-    addTab(ob) {
-      if (ob.k == 0) this.activeBox = 0;
-      if (ob.k == 11) this.activeBox = 3;
-      this.activeP = ob.k; //0
-      this.tabActive = ob.k; //0
-      let num = -1;
-      this.tabs.forEach((a, ai) => {
-        if (ob.k == a.k) {
-          num = a.k;
-        }
-      });
-      // 濡傛灉娌℃湁閬嶅巻鍒皌abs閲屾病鏈夎ob瀵瑰簲鐨則able锛屽線tabs閲岄潰鍔犲叆璇b
-      if (num == -1) {
-        this.tabs.push(ob);
-      }
-    },
-    removeTab(index) {
-      if (this.tabs.length > 1) {
-        this.tabs.splice(index, 1);
-        this.activeP = this.tabs[this.tabs.length - 1].k;
-        this.tabActive = this.tabs[this.tabs.length - 1].k;
-      } else {
-        this.$message.warning("涓嶈兘鍏抽棴鏈�鍚庣殑鏍囩");
-      }
-    },
-    upTabActive(num) {
-      this.tabActive = num;
-      this.activeP = num;
-      if (num == 0) {
-        this.activeBox = 0;
-      } else if (num > 0 && num <= 2) {
-        this.activeBox = 1;
-      } else if (num > 2 && num < 11) {
-        this.activeBox = 2;
-      } else if (num == 11) {
-        this.activeBox = 3;
-      } else if (num > 11 && num <= 14) {
-        this.activeBox = 4;
-      } else if (num > 14 && num <= 20) {
-        this.activeBox = 5;
-      } else if (num > 20 && num <= 22) {
-        this.activeBox = 6;
-      } else if (num > 22 && num <= 30) {
-        this.activeBox = 7;
-      }
-    },
-    out() {
-      sessionStorage.clear();
-      localStorage.removeItem("autoenter");
-      this.$router.push("/enter");
-    }
-  }
-};
-</script>
+	const requireComponent = require.context("../components/view", false, /\.vue/);
+	var comObj = {};
+	requireComponent.keys().forEach(fileName => {
+		var names = fileName
+			.split("/")
+			.pop()
+			.replace(".vue", "");
+		const componentConfig = requireComponent(fileName);
+		comObj[names] = componentConfig.default || componentConfig;
+	});
+	export default {
+		components: comObj,
+		data() {
+			return {
+				userName: "value",
+				leftOpen: true,
+				menu: [{
+						k: 0,
+						v: "棣栭〉",
+						i: "font icon-shouye",
+						c: [{
+							k: 0,
+							v: "棣栭〉",
+							i: "font icon-shouye",
+							u: "index-index"
+						}]
+					},
+					{
+						k: 3,
+						v: "閿�鍞鐞�",
+						i: "font icon-jine",
+						c: [{
+							k: 11,
+							v: "閿�鍞鐞�",
+							i: "font icon-jine",
+							u: "sale"
+						}]
+					},
+					{
+						k: 1,
+						v: "鎶�鏈鐞�",
+						i: "font icon-ic_form_set24px",
+						c: [{
+								k: 1,
+								v: "鏍囧噯BOM",
+								i: "font icon-shouye",
+								u: "standard"
+							},
+							{
+								k: 2,
+								v: "璁㈠崟BOM",
+								i: "font icon-shouye",
+								u: "technical"
+							}
+						]
+					},
+					{
+						k: 4,
+						v: "鐢熶骇绠$悊",
+						i: "font icon-shengchanguanli",
+						c: [{
+								k: 12,
+								v: "鐢熶骇璁㈠崟",
+								i: "font icon-shouye",
+								u: ""
+							},
+							{
+								k: 13,
+								v: "鐢熶骇璁″垝",
+								i: "font icon-shouye",
+								u: ""
+							},
+							{
+								k: 14,
+								v: "鐢熶骇鎶ュ伐",
+								i: "font icon-shouye",
+								u: ""
+							}
+						]
+					},
+					{
+						k: 5,
+						v: "WMS绠$悊",
+						i: "font icon-a-Inventorydumprequest",
+						c: [{
+								k: 15,
+								v: "鍘熸潗鏂欏簱瀛�",
+								i: "font icon-shouye",
+								u: ""
+							},
+							{
+								k: 16,
+								v: "鍥炲崟绠$悊",
+								i: "font icon-shouye",
+								u: ""
+							},
+							{
+								k: 17,
+								v: "鍗婃垚鍝佸簱瀛�",
+								i: "font icon-shouye",
+								u: ""
+							},
+							{
+								k: 18,
+								v: "鎴愬搧搴撳瓨",
+								i: "font icon-shouye",
+								u: ""
+							},
+							{
+								k: 19,
+								v: "鎴愬搧鍙戣揣",
+								i: "font icon-shouye",
+								u: ""
+							},
+							{
+								k: 20,
+								v: "鎴愬搧鍏ュ簱",
+								i: "font icon-shouye",
+								u: ""
+							}
+						]
+					},
+					{
+						k: 2,
+						v: "QMS绠$悊",
+						i: "font icon-xunhuan",
+						c: [{
+								k: 3,
+								v: "鍘熸潗鏂欐楠�",
+								i: "font icon-shouye",
+								u: "rawInsBox"
+							},
+							{
+								k: 4,
+								v: "鍘熸潗鏂欎笉鍚堟牸鍝�",
+								i: "font icon-shouye",
+								u: "rawUnqualifiedBox"
+							},
+							{
+								k: 5,
+								v: "杩囩▼妫�楠�",
+								i: "font icon-shouye",
+								u: "processInspection"
+							},
+							{
+								k: 6,
+								v: "鎴愬搧妫�楠�",
+								i: "font icon-shouye",
+								u: "finishedProductInspection"
+							},
+							{
+								k: 7,
+								v: "涓嶅悎鏍煎搧绠$悊",
+								i: "font icon-shouye",
+								u: "unqualifiedManagement"
+							},
+							{
+								k: 9,
+								v: "璐ㄩ噺缁熻",
+								i: "font icon-shouye",
+								u: ""
+							},
+							{
+								k: 10,
+								v: "璁¢噺绠$悊",
+								i: "font icon-shouye",
+								u: "measurementManagement"
+							},
+							{
+								k: 10.1,
+								v: "涓嶅悎鏍煎搧澶勭疆",
+								i: "font icon-shouye",
+								u: "Processingproducts"
+							}
+						]
+					},
+					{
+						k: 6,
+						v: "鏍哥畻绠$悊",
+						i: "font icon-caiwuhesuanxitong",
+						c: [{
+								k: 21,
+								v: "浜ч噺宸ヨ祫",
+								i: "font icon-shouye",
+								u: ""
+							},
+							{
+								k: 22,
+								v: "鍛樺伐鍑哄嫟",
+								i: "font icon-shouye",
+								u: ""
+							}
+						]
+					},
+					{
+						k: 7,
+						v: "鍩虹鏁版嵁",
+						i: "font icon-a-ziyuan20",
+						c: [{
+								k: 23,
+								v: "鐢熶骇璁板綍缁存姢",
+								i: "font icon-shouye",
+								u: "record-content"
+							},
+							{
+								k: 24,
+								v: "鑷椤圭洰缁存姢",
+								i: "font icon-shouye",
+								u: "self-inspection"
+							},
+							{
+								k: 25,
+								v: "鎶�鏈寚鏍囩淮鎶�",
+								i: "font icon-shouye",
+								u: "Technicalindex"
+							},
+							{
+								k: 26,
+								v: "宸ヨ壓璺嚎缁存姢",
+								i: "font icon-shouye",
+								u: "technology"
+							},
+							{
+								k: 27,
+								v: "璁惧缁存姢",
+								i: "font icon-shouye",
+								u: "laboratoryManagement"
+							},
+							{
+								k: 28,
+								v: "鐗╂枡娓呭崟缁存姢",
+								i: "font icon-shouye",
+								u: "mbom"
+							},
+							{
+								k: 30,
+								v: "鐢熶骇宸ヨ壓缁存姢",
+								i: "font icon-shouye",
+								u: "equipmentmaintain"
+							}
+						]
+					}
+				],
+				activeBox: 0,
+				activeP: 0,
+				tabActive: 0,
+				tabs: [{
+					k: 0,
+					v: "棣栭〉",
+					i: "font icon-shouye",
+					u: "index-index"
+				}],
+				upIndex: 0
+			};
+		},
+		created() {},
+		mounted() {
+			this.userName = JSON.parse(localStorage.getItem("user")).name;
+		},
+		methods: {
+			addTab(ob) {
+				if (ob.k == 0) this.activeBox = 0;
+				if (ob.k == 11) this.activeBox = 3;
+				this.activeP = ob.k; //0
+				this.tabActive = ob.k; //0
+				let num = -1;
+				this.tabs.forEach((a, ai) => {
+					if (ob.k == a.k) {
+						num = a.k;
+					}
+				});
+				// 濡傛灉娌℃湁閬嶅巻鍒皌abs閲屾病鏈夎ob瀵瑰簲鐨則able锛屽線tabs閲岄潰鍔犲叆璇b
+				if (num == -1) {
+					this.tabs.push(ob);
+				}
+			},
+			removeTab(index) {
+				this.tabs.splice(index, 1);
+				this.activeP = this.tabs[this.tabs.length - 1].k;
+				this.tabActive = this.tabs[this.tabs.length - 1].k;
+			},
+			allDel() {
+				this.activeBox = 0
+				this.activeP = 0
+				this.tabActive = 0
+				this.tabs = [{
+					k: 0,
+					v: " 棣栭〉",
+					i: "font icon-shouye",
+					u: "index-index"
+				}]
+			},
+			
+			upTabActive(num) {
+				this.tabActive = num;
+				this.activeP = num;
+				for (var i = 0; i < this.menu.length; i++) {
+					this.menu[i].c.forEach(b => {
+						if (b.k == num) {
+							this.activeBox = this.menu[i].k;
+							return
+						}
+					})
+				}
+			},
+			out() {
+				sessionStorage.clear();
+				localStorage.removeItem("autoenter");
+				this.$router.push("/enter");
+			},
+			removeAllTab(){
+				this.upIndex++
+			}
+		}
+	};
+</script>
\ No newline at end of file

--
Gitblit v1.9.3