From 0d452c10ee16e40a3ca3d176e5ebebcb4bd16a87 Mon Sep 17 00:00:00 2001
From: yuyu <1981343953@qq.com>
Date: 星期二, 08 八月 2023 14:36:23 +0800
Subject: [PATCH] Merge branch 'master' of https://gitee.com/yuanchu_code/lims-front-end

---
 src/utils/request.js                                               |   11 
 src/views/rawMaterials/reportForInspection/index.vue               |   63 +-
 src/views/trialManagement/entrust.vue                              |   15 
 src/views/standardLibrary/index.vue                                |  692 ++++++++++-------------------
 src/api/standardLibrary.js                                         |  157 ------
 src/main.js                                                        |    3 
 src/views/standardLibrary/SpecificationDetails.vue                 |   19 
 package.json                                                       |    1 
 src/views/trialManagement/rawMaterials.vue                         |  228 +++++++++
 src/views/rawMaterials/reportForInspection/forInspectionDetail.vue |  117 +++--
 src/api/rawMaterials/reportForInspection.js                        |   18 
 11 files changed, 637 insertions(+), 687 deletions(-)

diff --git a/package.json b/package.json
index 07bc912..8f69471 100644
--- a/package.json
+++ b/package.json
@@ -14,6 +14,7 @@
     "test:ci": "npm run lint && npm run test:unit"
   },
   "dependencies": {
+    "af-table-column": "^1.0.3",
     "amfe-flexible": "^2.2.1",
     "axios": "0.18.1",
     "core-js": "3.6.5",
diff --git a/src/api/rawMaterials/reportForInspection.js b/src/api/rawMaterials/reportForInspection.js
index 0b4d1b2..e110f2d 100644
--- a/src/api/rawMaterials/reportForInspection.js
+++ b/src/api/rawMaterials/reportForInspection.js
@@ -10,9 +10,23 @@
 }
 
 // 娣诲姞妫�楠岀敵璇峰崟
-export function addInspection() {
+export function addInspection(data) {
   return request({
     url: '/inspection/addInspection',
-    method: 'post'
+    method: 'post',
+    headers: {
+      'Content-Type': 'multipart/form-data'
+    },
+    data
   })
 }
+
+// 鏌ヨ鎵�鏈夌敵璇峰崟id鏌ヨ鏍峰搧鍒楄〃
+export function getInspectionMaterialListById(params) {
+  return request({
+    url: '/inspectionMaterialList/selectInspectionMaterialListById/' + params.inspectionId,
+    method: 'get',
+    params
+  })
+}
+
diff --git a/src/api/standardLibrary.js b/src/api/standardLibrary.js
index 19724bf..3a8ca84 100644
--- a/src/api/standardLibrary.js
+++ b/src/api/standardLibrary.js
@@ -1,88 +1,5 @@
 import request from '@/utils/request'
 
-// 鏌ヨ鎵�鏈夋爣鍑嗘暟鎹�
-export function getStandardsList() {
-  return request({
-    url: '/standards/list',
-    method: 'get'
-  })
-}
-
-// 鍒嗛〉鏌ヨ鎵�鏈夋爣鍑嗘暟鎹�
-export function getStandardsListOfPage(params) {
-  return request({
-    url: '/standards/list_page',
-    method: 'get',
-    params
-  })
-}
-
-// 娣诲姞绫诲瀷
-export function addStandards(data) {
-  return request({
-    url: '/standards/add',
-    method: 'post',
-    data
-  })
-}
-
-// 鏍规嵁鏍囧噯鏌ヨ鎵�鏈夊瀷鍙� 鍙傛暟IdOrNameOfSerialNumber锛� standardsId
-export function getSerialNumberList(params) {
-  return request({
-    url: '/serial-number/list',
-    method: 'get',
-    params
-  })
-}
-
-// 娣诲姞鍨嬪彿
-export function addSerialNumber(data) {
-  return request({
-    url: '/serial-number/add',
-    method: 'post',
-    data
-  })
-}
-
-// 鏍规嵁鍨嬪彿鏌ヨ鎵�鏈変骇鍝佽鏍� 鍙傛暟serialNumberId锛� specificationsName
-export function getSpecificationsList(params) {
-  return request({
-    url: '/specifications/list',
-    method: 'get',
-    params
-  })
-}
-
-// 娣诲姞浜у搧瑙勬牸
-export function addSpecifications(data) {
-  return request({
-    url: '/specifications/add',
-    method: 'post',
-    data
-  })
-}
-
-// 缂栬緫浜у搧瑙勬牸
-export function updateSpecifications(data) {
-  return request({
-    url: '/specifications/update',
-    method: 'put',
-    data
-  })
-}
-
-// 鏇存柊瑙勬牸鐘舵��
-export function updateSpeState(data) {
-  return request({
-    url: '/specifications/update_spe_state',
-    method: 'put',
-    data
-  })
-}
-
-// 瑙勬牸璇︽儏椤垫帴鍙�
-
-// 鏍规嵁瑙勬牸id鏌ヨ鎵�鏈夌墿鏂� specificationsId
 export function getMaterialList(params) {
   return request({
     url: '/material/list',
@@ -91,10 +8,19 @@
   })
 }
 
-// 鏍规嵁鐗╂枡id锛岃幏鍙栧搴旂殑鐗╂枡璇︽儏
-export function getMaterialDetail(params) {
+// 鑾峰彇鎵�鏈夐」鐩�
+export function getProductList(params) {
   return request({
-    url: '/material/list_id',
+    url: '/product/page',
+    method: 'get',
+    params
+  })
+}
+
+// 鑾峰彇鎵�鏈夌埗椤圭洰瀵瑰簲鐨勫瓙椤圭洰
+export function getProductSonList(params) {
+  return request({
+    url: '/product/father',
     method: 'get',
     params
   })
@@ -109,65 +35,20 @@
   })
 }
 
-// 缂栬緫鐗╂枡淇℃伅
-export function updateMaterial(data) {
+// 娣诲姞鏍囧噯
+export function addStandards(data) {
   return request({
-    url: '/material/update',
-    method: 'put',
-    data
-  })
-}
-
-// 鍒犻櫎鐗╂枡淇℃伅
-export function deleteMaterial(params) {
-  return request({
-    url: '/material/delete',
-    method: 'delete',
-    params
-  })
-}
-
-// 鏍规嵁鐗╂枡id鏌ヨ鎵�鏈夋爣鍑嗗垎绫� specificationsId
-export function getProductList(params) {
-  return request({
-    url: '/product/list',
-    method: 'get',
-    params
-  })
-}
-
-// 娣诲姞鏍囧噯鍒嗙被
-export function addProduct(data) {
-  return request({
-    url: '/product/add',
+    url: '/standards/add',
     method: 'post',
     data
   })
 }
 
-// 鏌ヨ鏍囧噯鍒嗙被璇︽儏锛屽搴旂殑鏍囧噯璇︽儏
-export function getProductProductId(params) {
+// 娣诲姞瑙勬牸
+export function addSpecifications(data) {
   return request({
-    url: '/product/productId',
-    method: 'get',
-    params
-  })
-}
-
-// 缂栬緫瀛愰」鐩俊鎭�
-export function updateProduct(data) {
-  return request({
-    url: '/product/update',
-    method: 'put',
+    url: '/specifications/add',
+    method: 'post',
     data
-  })
-}
-
-// 鍒犻櫎瀛愰」鐩俊鎭�
-export function deleteProduct(params) {
-  return request({
-    url: '/product/delete',
-    method: 'delete',
-    params
   })
 }
diff --git a/src/main.js b/src/main.js
index 5e53df6..6319eed 100644
--- a/src/main.js
+++ b/src/main.js
@@ -2,7 +2,8 @@
 
 import 'normalize.css/normalize.css' // A modern alternative to CSS resets
 import 'amfe-flexible'
-
+import AFTableColumn from 'af-table-column'
+Vue.use(AFTableColumn)
 import ElementUI from 'element-ui'
 import 'element-ui/lib/theme-chalk/index.css'
 import locale from 'element-ui/lib/locale/lang/zh-CN' // lang i18n
diff --git a/src/utils/request.js b/src/utils/request.js
index 4a555c7..dacba5f 100644
--- a/src/utils/request.js
+++ b/src/utils/request.js
@@ -47,11 +47,12 @@
 
     // if the custom code is not 20000, it is judged as an error.
     if (res.code !== 200) {
-      Message({
-        message: res.message || 'Error',
-        type: 'error',
-        duration: 5 * 1000
-      })
+      console.log(res.message || 'Error')
+      // Message({
+      //   message: res.message || 'Error',
+      //   type: 'error',
+      //   duration: 5 * 1000
+      // })
       // 50008: Illegal token; 50012: Other clients logged in; 50014: Token expired;
       if (res.code === 50008 || res.code === 50012 || res.code === 50014) {
         // to re-login
diff --git a/src/views/rawMaterials/reportForInspection/forInspectionDetail.vue b/src/views/rawMaterials/reportForInspection/forInspectionDetail.vue
index a032887..28d5f75 100644
--- a/src/views/rawMaterials/reportForInspection/forInspectionDetail.vue
+++ b/src/views/rawMaterials/reportForInspection/forInspectionDetail.vue
@@ -26,14 +26,18 @@
             </div> -->
         </div>
         <div class="message">
-          <div class="message-item"><span><i class="el-icon-edit" />璇曢獙鏂规硶锛�</span></div>
+          <!-- <div class="message-item"><span><i class="el-icon-edit" />璇曢獙鏂规硶锛�</span></div> -->
           <div class="message-item">
-            <span><i class="el-icon-edit" />椤圭洰鍒嗙被锛�</span>
+            <span><i class="el-icon-edit" />妫�楠岀被鍨嬶細
+              <span v-if="inspectionDetail.type===0">鍘熸潗鏂欐楠�</span>
+              <span v-else-if="inspectionDetail.type===1">鍗婃垚鍝佹楠�</span>
+              <span v-else-if="inspectionDetail.type===2">鎴愬搧妫�楠�</span>
+            </span>
           </div>
           <div class="message-item">
-            <span><i class="el-icon-edit" />鏇存柊浜猴細</span></div>
+            <span><i class="el-icon-edit" />鐧昏浜猴細<el-tag>{{ inspectionDetail.userName }}</el-tag></span></div>
           <div class="message-item">
-            <span><i class="el-icon-edit" />鏇存柊鏃堕棿锛�</span></div>
+            <span><i class="el-icon-edit" />鐧昏鏃ユ湡锛歿{ inspectionDetail.createTime }}</span></div>
         </div>
       </div>
       <div class="card-main sample-list">
@@ -57,53 +61,58 @@
             style="width: 100%"
           >
             <el-table-column
-              prop="applicationOrdernumber"
-              label="鐢宠鍗曞彿"
+              prop="materialNum"
+              label="鐗╂枡缂栧彿"
               min-width="200"
             />
             <el-table-column
-              prop="typeofInspection"
-              label="妫�楠岀被鍨�"
+              prop="materialName"
+              label="鐗╂枡鍚嶇О"
               min-width="200"
             />
             <el-table-column
               prop="objectofInspection"
-              label="妫�楠屽璞�"
+              label="鐗╂枡灞炴��"
               min-width="200"
             />
             <el-table-column
-              prop="palceofObject"
-              label="瀵硅薄浣嶇疆"
+              prop="materialBatch"
+              label="鎵规"
               min-width="200"
             />
             <el-table-column
-              prop="name"
-              label="瀵硅薄鍚嶇О"
+              prop="materialReelNumber"
+              label="鐩樺彿"
               min-width="200"
             />
             <el-table-column
-              prop="date"
-              label="鐧昏鏃ユ湡"
+              prop="specificationsSerialNumber"
+              label="鍨嬪彿"
               min-width="200"
             />
             <el-table-column
               prop="registrant"
-              label="鐧昏浜�"
+              label="瑙勬牸"
               min-width="200"
             />
             <el-table-column
               prop="applicationTime"
-              label="鐢宠鏃堕棿"
+              label="鍏ュ簱鏁伴噺"
+              min-width="200"
+            />
+            <el-table-column
+              prop="materialNum"
+              label="閫佹牱鏁伴噺"
               min-width="200"
             />
             <el-table-column
               label="鎿嶄綔"
               min-width="200"
-              :fixed="true"
+              fixed="right"
             >
               <template slot-scope="scope">
-                <el-button type="text" size="small" @click="handleClick(scope.row)">鏌ョ湅</el-button>
-                <el-button type="text" size="small">浣滃簾</el-button>
+                <el-button type="text" size="small" @click="openChangeMaterial(scope.row)">缂栬緫</el-button>
+                <el-button type="text" size="small">鍒犻櫎</el-button>
               </template>
             </el-table-column>
           </el-table>
@@ -165,7 +174,7 @@
               </el-col>
             </el-row>
           </div>
-          <el-row gutter="100" :style="{marginTop:'24px'}">
+          <el-row :gutter="100" :style="{marginTop:'24px'}">
             <el-col :span="12">
               <el-form-item label="鎵规">
                 <el-input placeholder="" />
@@ -177,7 +186,7 @@
               </el-form-item>
             </el-col>
           </el-row>
-          <el-row gutter="100">
+          <el-row :gutter="100">
             <el-col :span="12">
               <el-form-item label="鐩樺彿">
                 <el-input placeholder="" />
@@ -189,7 +198,7 @@
               </el-form-item>
             </el-col>
           </el-row>
-          <el-row gutter="100">
+          <el-row :gutter="100">
             <el-col :span="12">
               <el-form-item label="瑙勬牸/鍨嬪彿鍚嶇О">
                 <el-input placeholder="" />
@@ -201,7 +210,7 @@
               </el-form-item>
             </el-col>
           </el-row>
-          <el-row gutter="100">
+          <el-row :gutter="100">
             <el-col :span="12">
               <el-form-item label="鐢熶骇鎸囦护鍙�">
                 <el-input placeholder="" />
@@ -213,14 +222,14 @@
               </el-form-item>
             </el-col>
           </el-row>
-          <el-row gutter="100">
+          <el-row :gutter="100">
             <el-col :span="12">
               <el-form-item label="鐢靛帇绛夌骇">
                 <el-input placeholder="" />
               </el-form-item>
             </el-col>
           </el-row>
-          <el-row gutter="100" :style="{flex:'1'}">
+          <el-row :gutter="100" :style="{flex:'1'}">
             <el-col :span="24">
               <el-form-item label="澶囨敞">
                 <el-input
@@ -232,7 +241,7 @@
             </el-col>
           </el-row>
           <el-form-item>
-            <el-button type="primary" @click="onSubmit">绔嬪嵆鍒涘缓</el-button>
+            <el-button type="primary">绔嬪嵆鍒涘缓</el-button>
             <el-button>鍙栨秷</el-button>
           </el-form-item>
         </el-form>
@@ -243,7 +252,7 @@
         <!-- Left side tree structure -->
         <div class="tree-container">
           <span class="all"> 鍏ㄩ儴</span>
-          <el-tree :data="treeData" @node-click="handleNodeClick" ></el-tree>
+          <el-tree :data="treeData" />
         </div>
         <!-- Right side material list -->
         <div class="table-container">
@@ -252,38 +261,40 @@
             :data="selectedNodeMaterials"
             style="width: 100%"
             highlight-current-row
-            @row-click="handleSelectionChange"
             :header-row-class-name="headerBg"
-            >
+            @row-click="handleSelectionChange"
+          >
             <el-table-column
               label="鐗╂枡缂栧彿"
-              prop="number">
+              prop="number"
+            >
               <template slot-scope="scope">
-                <el-radio v-model="radioSelected" :label="scope.row.number" @change.native='handleSelectionChange(scope.row)'>&nbsp;  </el-radio>
+                <el-radio v-model="radioSelected" :label="scope.row.number" @change.native="handleSelectionChange(scope.row)">&nbsp;  </el-radio>
               </template>
             </el-table-column>
-            <el-table-column prop="name" label="鐗╂枡鍚嶇О"></el-table-column>
-        </el-table>
-        <el-pagination
-          @size-change="handleSizeChange"
-          @current-change="handleCurrentChange"
-          :current-page="pageParams.pageNo"
-          :page-sizes="[10, 20, 30, 40]"
-          :page-size="pageParams.pageSize"
-          :total="pageParams.total"
-          layout="total, sizes, prev, pager, next, jumper"
-        />
-      </div>
+            <el-table-column prop="name" label="鐗╂枡鍚嶇О" />
+          </el-table>
+          <el-pagination
+            :current-page="pageParams.pageNo"
+            :page-sizes="[10, 20, 30, 40]"
+            :page-size="pageParams.pageSize"
+            :total="pageParams.total"
+            layout="total, sizes, prev, pager, next, jumper"
+            @size-change="handleSizeChange"
+            @current-change="handleCurrentChange"
+          />
+        </div>
       </div>
       <div slot="footer" class="dialog-footer">
         <el-button @click="chooseMaterialVisible = false">鍙� 娑�</el-button>
-        <el-button type="primary" >纭畾閫夋嫨</el-button>
+        <el-button type="primary">纭畾閫夋嫨</el-button>
       </div>
     </el-dialog>
   </div>
 </template>
 
 <script>
+import { getInspectionMaterialListById } from '@/api/rawMaterials/reportForInspection'
 export default {
   data() {
     return {
@@ -337,10 +348,24 @@
           name: '娴嬭瘯鏁版嵁2'
         }],
       radioSelected: null,
-      multipleSelection: ''
+      multipleSelection: '',
+      inspectionDetail: {}
     }
   },
+  created() {
+    // console.log(this.$route.query) 浼犻�掔殑鐢宠鍗曞璞¤鎯�
+    this.inspectionDetail = JSON.parse(this.$route.query.inspectionDetail)
+    this.getMaterialList()
+  },
   methods: {
+    openChangeMaterial(row) {
+      console.log(row)
+    },
+    async getMaterialList() {
+      const res = await getInspectionMaterialListById({ inspectionId: this.inspectionDetail.id })
+      // console.log(res)
+      this.sampleTable = res.data
+    },
     handleSelectionChange(val) {
       console.log(val)
       this.radioSelected = val.number // 閫変腑琛岀殑number
diff --git a/src/views/rawMaterials/reportForInspection/index.vue b/src/views/rawMaterials/reportForInspection/index.vue
index 720e8d5..e1663e3 100644
--- a/src/views/rawMaterials/reportForInspection/index.vue
+++ b/src/views/rawMaterials/reportForInspection/index.vue
@@ -63,7 +63,13 @@
                 prop="type"
                 label="妫�楠岀被鍨�"
                 min-width="200"
-              />
+              >
+                <template slot-scope="scope">
+                  <span v-if="scope.row.type===0">鍘熸潗鏂欐楠�</span>
+                  <span v-else-if="scope.row.type===1">鍗婃垚鍝佹楠�</span>
+                  <span v-else-if="scope.row.type===2">鎴愬搧妫�楠�</span>
+                </template>
+              </el-table-column>
               <el-table-column
                 prop="createTime"
                 label="鍒涘缓鏃堕棿"
@@ -75,7 +81,7 @@
                 min-width="200"
               />
               <el-table-column
-                prop="registrant"
+                prop="inspectUserId"
                 label="妫�楠屼汉"
                 min-width="200"
               />
@@ -131,7 +137,7 @@
             width="40%"
           >
             <div class="check-box">
-              <el-radio-group v-model="type">
+              <el-radio-group v-model="addInspectionType">
                 <el-radio :label="0" border>鍘熸潗鏂欐楠�</el-radio>
                 <el-radio :label="1" border>鍗婃垚鍝佹楠�</el-radio>
                 <el-radio :label="2" border>鎴愬搧妫�楠�</el-radio>
@@ -152,7 +158,7 @@
 </template>
 
 <script>
-import { getInspectionList } from '@/api/rawMaterials/reportForInspection'
+import { getInspectionList, addInspection } from '@/api/rawMaterials/reportForInspection'
 export default {
   data() {
     return {
@@ -179,7 +185,7 @@
       pageSize: 10, // 姣忛〉鐨勬暟鎹潯鏁�
       radioValue: '鍏ㄩ儴',
       checkTypeVisible: false,
-      type: 0
+      addInspectionType: 0
     }
   },
   watch: {
@@ -192,26 +198,6 @@
       deep: true
     }
   },
-  // beforeRouteEnter(to, from, next) {
-  //   console.log(to, from)
-  //   next()
-  //   // 鍦ㄦ覆鏌撹缁勪欢鐨勫搴旇矾鐢辫 confirm 鍓嶈皟鐢�
-  //   // 涓嶏紒鑳斤紒鑾峰彇缁勪欢瀹炰緥 `this`
-  //   // 鍥犱负褰撻挬瀛愭墽琛屽墠锛岀粍浠跺疄渚嬭繕娌¤鍒涘缓
-  // },
-  // beforeRouteUpdate(to, from, next) {
-  //   console.log(to, from)
-  //   if (to.name === 'ForInspectionDetail') this.showDetail = true
-  //   this.$nextTick(() => {
-  //     console.log(1)
-  //     this.showDetail = true
-  //   })
-  //   next()
-  //   // 鍦ㄥ綋鍓嶈矾鐢辨敼鍙橈紝浣嗘槸璇ョ粍浠惰澶嶇敤鏃惰皟鐢�
-  //   // 涓句緥鏉ヨ锛屽浜庝竴涓甫鏈夊姩鎬佸弬鏁扮殑璺緞 /foo/:id锛屽湪 /foo/1 鍜� /foo/2 涔嬮棿璺宠浆鐨勬椂鍊欙紝
-  //   // 鐢变簬浼氭覆鏌撳悓鏍风殑 Foo 缁勪欢锛屽洜姝ょ粍浠跺疄渚嬩細琚鐢ㄣ�傝�岃繖涓挬瀛愬氨浼氬湪杩欎釜鎯呭喌涓嬭璋冪敤銆�
-  //   // 鍙互璁块棶缁勪欢瀹炰緥 `this`
-  // },
   created() {
     this.getInspectionTableData()
   },
@@ -223,12 +209,26 @@
       const res = await getInspectionList({ pageSize: this.currentPage, countSize: this.pageSize })
       // this.inspectionTable = data
       console.log(res)
+      this.inspectionTable = res.data
     },
-    goToForInspectionDetail() {
-      this.$router.push('/rawMaterials/reportForInspection/forInspectionDetail')
+    async goToForInspectionDetail() {
+      try {
+        //
+        const form = new FormData()
+        form.append('type', this.addInspectionType)
+        let { data: inspectionDetail } = await addInspection(form)
+        // console.log(res)
+        inspectionDetail = JSON.stringify(inspectionDetail)
+        this.$message.success('娣诲姞鎴愬姛')
+        this.$router.push({ path: '/rawMaterials/reportForInspection/forInspectionDetail', query: { inspectionDetail }})
+      } catch (error) {
+        this.$message.error('娣诲姞澶辫触')
+      }
     },
+    // 鏌ョ湅瀵瑰簲鐢宠鍗曡鎯�
     handleClick(row) {
-      console.log(row)
+      const inspectionDetail = JSON.stringify(row)
+      this.$router.push({ path: '/rawMaterials/reportForInspection/forInspectionDetail', query: { inspectionDetail }})
     },
     // 姣忛〉鏉℃暟鏀瑰彉鏃惰Е鍙� 閫夋嫨涓�椤垫樉绀哄灏戣
     handleSizeChange(val) {
@@ -281,6 +281,8 @@
     height: 100%;
     display: flex;
     flex-direction: column;
+    min-height: calc(100vh - 88px);
+    padding: 15px;
   }
   .top-bar{
     margin: -25px;
@@ -333,6 +335,11 @@
           flex-direction: column;
           .el-table {
             flex: 1;
+            display: flex;
+            flex-direction: column;
+            ::v-deep .el-table__body-wrapper{
+              flex: 1;
+            }
           }
           >div:nth-child(2){
             display: flex;
diff --git a/src/views/standardLibrary/SpecificationDetails.vue b/src/views/standardLibrary/SpecificationDetails.vue
index 5a8eeb7..8a2c75a 100644
--- a/src/views/standardLibrary/SpecificationDetails.vue
+++ b/src/views/standardLibrary/SpecificationDetails.vue
@@ -420,7 +420,7 @@
 </template>
 
 <script>
-import { getMaterialList, getProductList, getProductProductId, addMaterial, addProduct, getMaterialDetail, updateMaterial, updateProduct, deleteMaterial, deleteProduct } from '@/api/standardLibrary'
+import { getMaterialList, getProductProductId, addMaterial, addProduct, getMaterialDetail, updateMaterial, updateProduct, deleteMaterial, deleteProduct } from '@/api/standardLibrary'
 export default {
   name: 'SpecificationDetail',
   data() {
@@ -516,29 +516,12 @@
       this.materialTreeDefault = [this.materialTree[0].id]
       console.log(this.materialTree, this.materialTreeDefault)
     },
-    // 鑾峰彇椤圭洰tree
-    async getProjectTreeData(data) {
-      const { data: projectArr } = await getProductList({ materialId: data.id })
-      // console.log(projectArr)
-      projectArr.map((item, index) => {
-        item.label = item.father
-        item.id = index
-        item.children = item.sonProduct.map(item => ({ ...item, label: item.name }))
-      })
-      this.projectTree = projectArr
-      // 椤圭洰涓粯璁ら�変腑鐨勫瓙椤圭洰
-      console.log(this.projectTree)
-      this.fatherOpetions = this.projectTree.map(item => ({ id: item.id, label: item.label }))
-      console.log(this.fatherOpetions)
-      this.projectTreeDefault = [this.projectTree[0]?.children[0]?.id]
-    },
     // 鐗╂枡搴撶殑鑺傜偣鐐瑰嚮
     materialTreeClick(data, node, element) {
       // 鐐瑰嚮鐗╂枡鑺傜偣锛屾煡璇㈠搴旂殑椤圭洰tree鏁版嵁
       console.log(data)
       // 寰楀埌鐗╂枡Id
       this.materialId = data.id
-      this.getProjectTreeData(data)
     },
     // 椤圭洰搴撶殑鑺傜偣鐐瑰嚮
     async projectTreeClick(data, node, element) {
diff --git a/src/views/standardLibrary/index.vue b/src/views/standardLibrary/index.vue
index 2d03597..a447d44 100644
--- a/src/views/standardLibrary/index.vue
+++ b/src/views/standardLibrary/index.vue
@@ -6,12 +6,14 @@
           v-model="filterText"
           placeholder="杈撳叆鍏抽敭瀛楄繘琛岃繃婊�"
         />
-        <el-button type="text" @click="getAllStandard">鍏ㄩ儴</el-button>
+        <el-button type="text">鍏ㄩ儴</el-button>
         <el-tree
           ref="tree"
           class="filter-tree"
           :data="standardTree"
           :props="defaultProps"
+          node-key="id"
+          highlight-current
           default-expand-all
           :filter-node-method="filterNode"
           :render-content="renderContent"
@@ -33,223 +35,68 @@
               <el-form-item>
                 <el-button type="primary" @click="filteredTableData">鏌ヨ</el-button>
                 <el-button type="primary" plain @click="resetBtn">閲嶇疆</el-button>
-                <!-- <el-button type="text">楂樼骇鎼滅储<i class="el-icon-arrow-down el-icon--right" /></el-button> -->
               </el-form-item>
             </el-form>
           </div>
           <div class="serve-btn">
-            <el-button type="primary" icon="el-icon-plus" @click="showFormInfo">{{ selectedNodeType }}</el-button>
+            <el-button type="primary" icon="el-icon-plus" @click="addTreeFormVisible = true">鏂板</el-button>
           </div>
         </div>
         <div class="table-box">
           <el-table
             ref="tableData"
-            :cell-style="{textAlign: 'center'}"
-            :header-cell-style="{border:'0px',background:'#f5f7fa',color:'#606266',boxShadow: 'inset 0 1px 0 #ebeef5',textAlign: 'center'}"
+            row-key="id"
+            max-height="680"
+            :tree-props="{children: 'children', hasChildren: 'hasChildren'}"
+            :cell-style="{textAlign: 'left'}"
+            :header-cell-style="{border:'0px',background:'#f5f7fa',color:'#606266',boxShadow: 'inset 0 1px 0 #ebeef5',textAlign: 'left'}"
             :data="tableData"
             style="width: 100%"
           >
             <el-table-column
               type="index"
               label="搴忓彿"
-              min-width="50"
-            />
-            <!-- 澶嶇敤 -->
+              width="100px"
+            >
+              <template v-if="scope.row.index+1" slot-scope="scope">
+                {{ scope.row.index+1 }}
+              </template>
+            </el-table-column>
             <el-table-column
-              v-for="(item,index) in tablespecifications"
-              :key="index"
-              :prop="item.prop"
-              :label="item.label"
-              :min-width="item.minWidth"
+              prop="father"
+              label="鍚嶇О"
+              width="320px"
+            >
+              <template slot-scope="scope">
+                <el-tag size="mini" :type="scope.row.father? '':'success'" :style="{borderRadius: '40%',marginRight: '12px'}">{{ scope.row.father? '01':'02' }}</el-tag> {{ scope.row.father || scope.row.name }}
+              </template>
+            </el-table-column>
+            <el-table-column
+              prop="unit"
+              label="鍗曚綅"
+              width="300px"
             />
-            <template v-if="showTableCurrent===2">
-              <el-table-column
-                prop="spe_state"
-                label="鐘舵��"
-                min-width="150"
-              >
-                <template slot-scope="scope">
-                  <el-tag
-                    :type="scope.row.spe_state === 0 ? 'primary' : 'success'"
-                    disable-transitions
-                  >{{ scope.row.spe_state === 0 ? '宸插仠鐢�' : '宸插惎鐢�' }}</el-tag>
-                </template>
-              </el-table-column>
-              <el-table-column
-                label="鎿嶄綔"
-                min-width="150"
-              >
-                <template slot-scope="scope">
-                  <el-button
-                    type="text"
-                    size="small"
-                    :style="{marginRight:'8px'}"
-                    @click="specificationDetails(scope.row)"
-                  >鏌ョ湅</el-button>
-                  <el-popover
-                    v-model="scope.row.visible"
-                    placement="top"
-                    width="30"
-                  >
-                    <div style="text-align: center; margin: 0" @click=" getRowID(scope.row)">
-                      <div>
-                        <el-button size="mini" type="text" @click="dialogFormVisible4=true">缂栬緫</el-button>
-                      </div>
-                      <div>
-                        <el-button size="mini" type="text" @click="dialogFormVisible5 = true">鍋滅敤</el-button>
-                      </div>
-                    </div>
-                    <el-button slot="reference" type="text"><i class="el-icon-more" /></el-button>
-                  </el-popover>
-                </template>
-              </el-table-column>
-            </template>
+            <el-table-column
+              prop="required"
+              label="鏍囧噯"
+              width="300px"
+            />
+            <el-table-column
+              prop="internal"
+              label="鍐呮帶鍒�"
+              width="300px"
+            />
           </el-table>
           <!-- 寮瑰嚭琛ㄥ崟椤� -->
           <div>
-            <!-- 娣诲姞鏍囧噯 -->
-            <el-dialog title="娣诲姞鏍囧噯" :visible.sync="dialogFormVisible1" width="33%">
-              <el-form :model="standardForm" :rules="rulesStandard">
-                <el-form-item label="鏍囧噯鍙�" label-width="100px" prop="standardnumber">
-                  <el-input v-model="standardForm.standardnumber" autocomplete="off" />
-                </el-form-item>
-                <el-form-item label="鏍囧噯鍚嶇О" label-width="100px" prop="standardname">
-                  <el-input v-model="standardForm.standardname" autocomplete="off" />
-                </el-form-item>
-                <el-form-item label="鑻辨枃鍚嶇О" label-width="100px" prop="standardenname">
-                  <el-input v-model="standardForm.engname" autocomplete="off" />
-                </el-form-item>
-                <el-form-item label="鐖剁骇鍒嗙被" label-width="100px">
-                  <el-select v-model="standardForm.type" placeholder="璇烽�夋嫨">
-                    <el-option label="鍘熸潗鏂�" value="0" />
-                    <el-option label="鐢电嚎鐢电紗" value="1" />
-                  </el-select>
-                </el-form-item>
-              </el-form>
-              <div slot="footer" class="dialog-footer">
-                <el-button @click="dialogFormVisible1 = false">鍙� 娑�</el-button>
-                <el-button type="primary" @click="submitForm">纭� 瀹�</el-button>
-              </div>
-            </el-dialog>
-            <!-- 娣诲姞鍨嬪彿 -->
-            <el-dialog title="娣诲姞鍨嬪彿" :visible.sync="dialogFormVisible2" width="30%">
-              <el-form ref="form" :model="modelForm" :rules="rulesModel">
-                <el-form-item label="鍨嬪彿" :label-width="formLabelWidth" prop="model">
-                  <el-input v-model="modelForm.model" autocomplete="off" />
-                </el-form-item>
-                <el-form-item label="鍨嬪彿鍚嶇О" :label-width="formLabelWidth" prop="modelname">
-                  <el-input v-model="modelForm.modelname" autocomplete="off" />
-                </el-form-item>
-              </el-form>
-              <div slot="footer" class="dialog-footer">
-                <el-button @click="dialogFormVisible2 = false">鍙� 娑�</el-button>
-                <el-button type="primary" @click="submitForm()">纭� 瀹�</el-button>
-              </div>
-            </el-dialog>
-            <!-- 娣诲姞瑙勬牸 -->
-            <el-dialog title="娣诲姞瑙勬牸" :visible.sync="dialogFormVisible3" width="30%">
-              <el-form ref="form" :model="specificationForm" :rules="rulesspecification">
-                <el-form-item label="瑙勬牸鍚嶇О" :label-width="formLabelWidth" prop="name">
-                  <el-input v-model="specificationForm.name" autocomplete="off" />
-                </el-form-item>
-                <el-form-item label="瑙勬牸缂栧彿" :label-width="formLabelWidth" prop="number">
-                  <el-input v-model="specificationForm.number" autocomplete="off" />
-                </el-form-item>
-                <el-form-item label="涓婃柟濉啓鐢熶骇鎸囦护鍙�" :label-width="formLabelWidth" prop="instruct">
-                  <el-input v-model="specificationForm.instruct" autocomplete="off" />
-                </el-form-item>
-                <el-form-item label="鐢靛帇绛夌骇" :label-width="formLabelWidth">
-                  <el-select v-model="specificationForm.voltageLevel" placeholder="璇烽�夋嫨鐢靛帇绛夌骇">
-                    <el-option label="鍒嗙被1" value="test" />
-                    <el-option label="鍒嗙被2" value="2" />
-                    <el-option label="鍒嗙被3" value="3" />
-                  </el-select>
-                </el-form-item>
-                <el-form-item label="涓荤嚎鑺埅闈�" :label-width="formLabelWidth">
-                  <el-select v-model="specificationForm.crossSection" placeholder="璇烽�夋嫨涓荤嚎鑺埅闈�">
-                    <el-option label="鍒嗙被1" value="test" />
-                    <el-option label="鍒嗙被2" value="2" />
-                    <el-option label="鍒嗙被3" value="3" />
-                  </el-select>
-                </el-form-item>
-                <el-form-item label="涓荤嚎鑺姱鏁�" :label-width="formLabelWidth">
-                  <el-select v-model="specificationForm.numberOfCores" placeholder="璇烽�夋嫨涓荤嚎鑺姱鏁�">
-                    <el-option label="鍒嗙被1" value="test" />
-                    <el-option label="鍒嗙被2" value="2" />
-                    <el-option label="鍒嗙被3" value="3" />
-                  </el-select>
-                </el-form-item>
-              </el-form>
-              <div slot="footer" class="dialog-footer">
-                <el-button @click="dialogFormVisible3 = false">鍙� 娑�</el-button>
-                <el-button type="primary" @click="submitForm()">纭� 瀹�</el-button>
-              </div>
-            </el-dialog>
-            <!-- 缂栬緫瑙勬牸 -->
-            <el-dialog title="缂栬緫瑙勬牸" :visible.sync="dialogFormVisible4" width="30%">
-              <el-form ref="form" :model="editSpeForm" :rules="rulesspecification">
-                <el-form-item label="瑙勬牸鍚嶇О" :label-width="formLabelWidth" prop="name">
-                  <el-input v-model="editSpeForm.name" autocomplete="off" />
-                </el-form-item>
-                <el-form-item label="瑙勬牸缂栧彿" :label-width="formLabelWidth" prop="number">
-                  <el-input v-model="editSpeForm.number" autocomplete="off" />
-                </el-form-item>
-                <el-form-item label="涓婃柟濉啓鐢熶骇鎸囦护鍙�" :label-width="formLabelWidth" prop="instruct">
-                  <el-input v-model="editSpeForm.instruct" autocomplete="off" />
-                </el-form-item>
-                <el-form-item label="鐢靛帇绛夌骇" :label-width="formLabelWidth">
-                  <el-select v-model="editSpeForm.voltageLevel" placeholder="璇烽�夋嫨鐢靛帇绛夌骇">
-                    <el-option label="鍒嗙被1" value="test" />
-                    <el-option label="鍒嗙被2" value="2" />
-                    <el-option label="鍒嗙被3" value="3" />
-                  </el-select>
-                </el-form-item>
-                <el-form-item label="涓荤嚎鑺埅闈�" :label-width="formLabelWidth">
-                  <el-select v-model="editSpeForm.crossSection" placeholder="璇烽�夋嫨涓荤嚎鑺埅闈�">
-                    <el-option label="鍒嗙被1" value="test" />
-                    <el-option label="鍒嗙被2" value="2" />
-                    <el-option label="鍒嗙被3" value="3" />
-                  </el-select>
-                </el-form-item>
-                <el-form-item label="涓荤嚎鑺姱鏁�" :label-width="formLabelWidth">
-                  <el-select v-model="editSpeForm.numberOfCores" placeholder="璇烽�夋嫨涓荤嚎鑺姱鏁�">
-                    <el-option label="鍒嗙被1" value="test" />
-                    <el-option label="鍒嗙被2" value="2" />
-                    <el-option label="鍒嗙被3" value="3" />
-                  </el-select>
-                </el-form-item>
-                <el-form-item label="瑙勬牸鐘舵��" :label-width="formLabelWidth">
-                  <el-select v-model="editSpeForm.spe_state" placeholder="璇烽�夋嫨瑙勬牸鐘舵��">
-                    <el-option label="鍋滅敤" value="0" />
-                    <el-option label="姝e父" value="1" />
-                    <el-option label="鑽夌" value="-1" />
-                  </el-select>
-                </el-form-item>
-              </el-form>
-              <div slot="footer" class="dialog-footer">
-                <el-button @click="dialogFormVisible4 = false">鍙� 娑�</el-button>
-                <el-button type="primary" @click="handleEdit">纭� 瀹�</el-button>
-              </div>
-            </el-dialog>
-            <!-- 鍋滅敤 -->
-            <el-dialog
-              title="鎻愮ず"
-              :visible.sync="dialogFormVisible5"
-              width="30%"
-            >
-              <span>纭鍋滅敤鍚楋紵</span>
-              <span slot="footer" class="dialog-footer">
-                <el-button @click="dialogFormVisible5 = false">鍙� 娑�</el-button>
-                <el-button type="primary" @click="updateSpeState">纭� 瀹�</el-button>
-              </span>
-            </el-dialog>
+            <!--  -->
           </div>
           <div>
             <!-- 鍒嗛〉鍣� -->
             <el-pagination
               :current-page="pageParams.pageNo"
               :page-sizes="[10, 15, 20, 25]"
-              :page-size="pageParams.pageNo"
+              :page-size="pageParams.pageSize"
               layout="total, sizes, prev, pager, next, jumper"
               :total="pageParams.total"
               @size-change="handleSizeChange"
@@ -259,27 +106,51 @@
         </div>
       </div>
     </div>
+    <el-dialog class="addTree" title="娣诲姞鎸囨爣" width="28%" :visible.sync="addTreeFormVisible" @close="closeAddTreeForm">
+      <el-form v-model="addTreeForm" label-position="top">
+        <el-form-item label="涓婄骇">
+          <el-cascader
+            v-model="addTreeForm.addTypeArr"
+            :options="formTypeOptions"
+            :props="{ ...defaultProps,checkStrictly: true }"
+            clearable
+            @change="changeCascader"
+          />
+        </el-form-item>
+        <el-form-item v-show="addTreeForm.addTypeArr.length<2" label="鐗╂枡鍚嶇О">
+          <el-input v-model="addTreeForm.materialName" />
+        </el-form-item>
+        <el-form-item v-show="addTreeForm.addTypeArr.length<3" label="鎵ц鏍囧噯">
+          <el-input v-model="addTreeForm.standardName" />
+        </el-form-item>
+        <el-form-item v-show="addTreeForm.addTypeArr.length<4" label="瑙勬牸鍨嬪彿">
+          <el-input v-model="addTreeForm.specificationsName" />
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="subAddTreeForm">纭� 瀹�</el-button>
+        <el-button @click="addTreeFormVisible = false">鍙� 娑�</el-button>
+      </div>
+    </el-dialog>
   </div>
 </template>
 
 <script>
-import { getStandardsList, getSerialNumberList, getSpecificationsList, getStandardsListOfPage, addStandards, addSerialNumber, addSpecifications, updateSpecifications, updateSpeState } from '@/api/standardLibrary'
+import { getMaterialList, getProductList, getProductSonList,
+  addMaterial, addStandards, addSpecifications
+} from '@/api/standardLibrary'
 export default {
   data() {
     return {
-      dialogFormVisible1: false,
-      dialogFormVisible2: false,
-      dialogFormVisible3: false,
-      dialogFormVisible4: false,
-      dialogFormVisible5: false,
-      visible: false,
+      addTreeFormVisible: false,
       filterText: '',
       // 鏍囧噯搴揵om鏍�
       standardTree: [],
-      // bom鐨�,榛樿鍊�
+      // bom鐨�,榛樿閰嶇疆鍊�
       defaultProps: {
         children: 'children',
-        label: 'label'
+        label: 'name',
+        value: 'id'
       },
       // 鏌ヨ鏉′欢
       searchData: {
@@ -291,83 +162,17 @@
       // 鍒嗛〉鍙傛暟
       pageParams: {
         pageNo: 1,
-        pageSize: 10,
+        pageSize: 12,
         total: 0
       },
       tablespecifications: [
       ],
-      // 閫変腑鑺傜偣瀵瑰簲鐨勮〃鏍� 0 鏄爣鍑嗚〃 1鏄瀷鍙疯〃 2瑙勬牸琛�
-      showTableCurrent: 0,
       // 閫変腑鐨勮妭鐐规暟鎹�
-      selectNode: {},
-      selectedNodeType: '娣诲姞鏍囧噯',
-      standardForm: [{
-        standardnumber: '',
-        standardname: '',
-        engname: '',
-        type: ''
-      }],
-      modelForm: [{
-        model: '',
-        modelname: ''
-      }],
-      specificationForm: [{
-        name: '', // 浜у搧瑙勬牸鍚嶇О
-        number: '', // 瑙勬牸缂栧彿
-        crossSection: '',
-        numberOfCores: '',
-        instruct: '',
-        voltageLevel: ''
-      }],
-      editSpeForm: [{
-        crossSection: '',
-        instruct: '',
-        name: '', // 瑙勬牸鍚嶇О
-        number: '', // 瑙勬牸缂栧彿
-        numberOfCores: '',
-        serialId: '', // 鍨嬪彿ID
-        spe_state: '',
-        voltageLevel: ''
-      }],
-      formLabelWidth: '100px',
-      rulesStandard: {
-        standardnumber: [
-          {
-            required: true, message: '璇疯緭鍏ユ爣鍑嗗彿', trigger: 'blur'
-          }
-        ],
-        standardname: [{
-          required: true, message: '璇疯緭鍏ユ爣鍑嗗悕绉�', trigger: 'blur'
-        }],
-        standardenname: [
-          { required: false, message: '璇疯緭鍏ヨ嫳鏂囧悕绉�', trigger: 'blur' }
-        ]
-      },
-      rulesModel: {
-        model: [
-          { required: true, message: '璇疯緭鍏ュ瀷鍙�', trigger: 'blur'
-          }],
-        modelname: [{
-          required: true, message: '璇疯緭鍏ュ瀷鍙峰悕绉�', trigger: 'blur'
-        }],
-        parentclassification: [
-          { required: true, message: '璇疯緭鍏�', trigger: 'blur' }
-        ]
-      },
-      rulesspecification: {
-        number: [
-          { required: true, message: '璇疯緭鍏ヨ鏍肩紪鍙�', trigger: 'blur'
-          }],
-        name: [{
-          required: true, message: '璇疯緭鍏ヨ鏍煎悕绉�', trigger: 'blur'
-        }],
-        instruct: [
-          { required: true, message: '璇疯緭鍏ヤ笂鏂瑰~鍐欑敓浜ф寚浠ゅ彿', trigger: 'blur' }
-        ]
-      },
-      standardId: '', // 鑾峰彇褰撳墠鏍囧噯ID
-      modelId: '', // 鑾峰彇褰撳墠鍨嬪彿ID
-      rowId: '' // 鑾峰彇褰撳墠瑙勬牸鎵�鍦ㄨID
+      selectData: {},
+      formTypeOptions: [],
+      addTreeForm: {
+        addTypeArr: []
+      }
     }
   },
   watch: {
@@ -377,7 +182,6 @@
   },
   created() {
     this.getStandardTree()
-    this.getAllStandard()
   },
   methods: {
     filterNode(value, data) {
@@ -386,175 +190,100 @@
     },
     // 鑾峰彇bom鏍戠殑鏍囧噯鏁版嵁
     async getStandardTree() {
-      this.selectedNodeType = '娣诲姞鏍囧噯'
-      const { data: standard } = await getStandardsList()// 鑾峰彇鎵�鏈夋爣鍑�
-      // console.log(standard)// 鑾峰彇鎵�鏈夋爣鍑�
-      this.standardTree = standard.map(item => {
-        item.serialNumber = item.serialNumber?.map(childrenItem => ({ ...childrenItem, label: childrenItem.name }))
-        return { ...item, label: item.name, children: item.serialNumber }
+      const { data } = await getMaterialList()
+      console.log(data)
+      this.standardTree = data.map(item => {
+        let name = null
+        switch (item.type) {
+          case 1:
+            name = '鍘熸潗鏂�'
+            break
+          case 2:
+            name = '鍗婃垚鍝�'
+            break
+          case 3:
+            name = '鎴愬搧'
+            break
+        }
+        return {
+          ...item, id: item.type, name
+        }
       })
-      // console.log(this.standardTree)
+      console.log(this.standardTree)
+      // formTypeOptions
+      // 榛樿绗竴涓洓绾ц妭鐐规悳绱紝鏂板閰嶇疆椤�
+      const treeOptions = JSON.parse(JSON.stringify(this.standardTree))
+      this.getDefault(treeOptions, 0)
+      console.log(treeOptions)
+      this.formTypeOptions = treeOptions
+      this.$nextTick().then(() => {
+        const firstNode = document.querySelector('.el-tree-node .el-tree-node__children .el-tree-node .el-tree-node__children .el-tree-node .el-tree-node__children .el-tree-node')
+        firstNode.click()
+        // console.log(firstNode)
+      })
+    },
+    getDefault(arr, index) {
+      for (const item of arr) {
+        if (item.children && item.children?.length > 0) {
+        // 鏈夊瓙鑺傜偣
+          this.getDefault(item.children, index + 1)
+          if (index === 2) {
+            item.children = null
+          }
+        }
+        // else {
+        //   // if ('children' in item) {
+        //   //   //
+        //   // } else {
+        //   //   // console.log(index, item)
+        //   // }
+        // }
+      }
     },
     // 鐐瑰嚮bom鏍戣妭鐐规柟娉�
     async nodeClick(data, node, element) {
       // console.log('data', data)
       // console.log('children' in data)
       // 鏄瓙鑺傜偣
+      if (node.level === 4) {
+        // console.log(data, node)
+        // 瀛樹笅閫変腑鑺傜偣
+        this.selectData = data
+        // eslint-disable-next-line prefer-const
+        this.getTableByClick(data)
+      }
       if (!('children' in data)) {
-        // console.log('鐐瑰嚮瀛愯妭鐐�', data)
-        this.selectedNodeType = '娣诲姞瑙勬牸'
-        this.modelId = data.id
-        this.selectNode = data
-        // 鑾峰彇鐐瑰嚮瀛愯妭鐐圭殑琛ㄦ牸
-        await this.getSpecifications(data)
         return
       }
-      // 涓嶆槸瀛愯妭鐐�
-      this.selectedNodeType = '娣诲姞鍨嬪彿'
-      this.standardId = data.id
-      this.selectNode = data
-      await this.getSerialNumber(data)
+    },
+    async getTableByClick(data) {
+      // eslint-disable-next-line prefer-const
+      let { data: { row, total }} = await getProductList({ pageNo: this.pageParams.pageNo, pageSize: this.pageParams.pageSize, specificationsId: data.id })
+      // console.log(row)
+      this.pageParams.total = total
+      row = row.map((item, index) => ({ ...item, index }))
+      for (const item of row) {
+        if (item.children) {
+          const res = await getProductSonList({ fatherName: item.father })
+          item.children = res.data
+          item.id = item.father
+        }
+      }
+      this.tableData = row
     },
     specificationDetails(row) {
       // 璺宠浆浜у搧瑙勬牸璇︽儏椤�
       this.$router.push(`/standardLibrary/SpecificationDetails/${row.id}`)
     },
-    // 鑾峰彇褰撳墠瑙勬牸鐨勮id
-    getRowID(row) {
-      // console.log(row.id)
-      this.id = row.id
-    },
-    // 鑾峰彇鎵�鏈夋爣鍑唗able
-    async getAllStandard() {
-      this.selectedNodeType = '娣诲姞鏍囧噯'
-      // console.log(this.pageParams)
-      const { data: { row, total }} = await getStandardsListOfPage({ ...this.pageParams })
-      // console.log('寰楀埌鎵�鏈夋爣鍑�==>', row)
-      this.pageParams.total = total
-      this.tableData = row
-      this.tablespecifications = [
-        {
-          prop: 'name',
-          label: '鏍囧噯鍚嶇О',
-          minWidth: '150px'
-        },
-        {
-          prop: 'eng_name',
-          label: '鏍囧噯鑻辨枃鍚嶇О',
-          minWidth: '150px'
-        },
-        {
-          prop: 'createTime',
-          label: '鍒涘缓鏃堕棿',
-          minWidth: '150px'
-        }
-      ]
-      this.showTableCurrent = 0
-    },
-    // 鑾峰彇瀵瑰簲鍨嬪彿涓嬬殑鎵�鏈夎鏍�
-    async getSerialNumber(data) {
-      const { data: { row, total }} = await getSerialNumberList({ standardsId: data.id, ...this.pageParams })
-      console.log('鐐瑰嚮鐖惰妭鐐�', row)// 鏍规嵁鏍囧噯鑾峰彇瀵瑰簲鏍囧噯涓嬬殑瑙勬牸
-      this.tableData = row
-      this.pageParams.total = total
-      this.tablespecifications = [
-        {
-          prop: 'name',
-          label: '鍨嬪彿鍚嶇О',
-          minWidth: '150px'
-        }
-      ]
-      this.showTableCurrent = 1
-    },
-    // 鑾峰彇鏍囧噯涓嬪搴旂殑鎵�鏈夊瀷鍙�
-    async getSpecifications(data) {
-      const { data: { row, total }} = await getSpecificationsList({ serialNumberId: data.id, ...this.pageParams })
-      // console.log(row)
-      this.tableData = row
-      this.pageParams.total = total
-      this.tablespecifications = [
-        {
-          prop: 'name',
-          label: '浜у搧鍚嶇О',
-          minWidth: '150px'
-        },
-        {
-          prop: 'username',
-          label: '鏇存柊浜�',
-          minWidth: '100px'
-        },
-        {
-          prop: 'updateTime',
-          label: '鏇存柊鏃堕棿',
-          minWidth: '150px'
-        },
-        {
-          prop: 'vel',
-          label: '鐗堟湰',
-          minWidth: '150px'
-        }
-      ]
-      this.showTableCurrent = 2
-    },
-    // 灞曠ず寮瑰嚭妗�
-    showFormInfo() {
-      if (this.selectedNodeType === '娣诲姞鏍囧噯') {
-        this.dialogFormVisible1 = true
-      } else if (this.selectedNodeType === '娣诲姞鍨嬪彿') {
-        this.dialogFormVisible2 = true
-      } else {
-        this.dialogFormVisible3 = true
-      }
-    },
-    async submitForm() {
-      if (this.showTableCurrent === 0) {
-        await addStandards({ engName: this.standardForm.engname,
-          id: this.standardForm.standardnumber,
-          name: this.standardForm.standardname,
-          type: parseInt(this.standardForm.type) })
-        this.dialogFormVisible1 = false
-      } else if (this.showTableCurrent === 1) {
-        await addSerialNumber({ id: this.modelForm.model,
-          name: this.modelForm.modelname,
-          standardsId: this.standardId // 鍏宠仈鏍囧噯ID
-        })
-        this.dialogFormVisible2 = false
-      } else {
-        await addSpecifications({ crossSection: this.specificationForm.crossSection,
-          instruct: this.specificationForm.instruct,
-          name: this.specificationForm.name,
-          number: this.specificationForm.number,
-          numberOfCores: this.specificationForm.numberOfCores,
-          serialId: this.modelId, // 鍏宠仈鍨嬪彿ID
-          voltageLevel: this.specificationForm.voltageLevel
-        })
-        this.dialogFormVisible3 = false
-      }
-    },
-
-    // 鍒嗛〉鏉′欢鏀瑰彉鏃跺垽鏂渶瑕佸垎椤垫煡璇㈢殑鏂规硶
-    judgment() {
-      switch (this.showTableCurrent) {
-        case 0:
-          this.getAllStandard()
-          break
-        case 1:
-          this.getSerialNumber(this.selectNode)
-          break
-        case 2:
-          this.getSpecifications(this.selectNode)
-          break
-      }
-    },
     handleSizeChange(val) {
       console.log(`姣忛〉 ${val} 鏉)
       this.pageParams.pageSize = val
-      this.judgment()
+      this.getTableByClick(this.selectData)
     },
     handleCurrentChange(val) {
       console.log(`褰撳墠椤�: ${val}`)
       this.pageParams.pageNo = val
-      this.judgment()
+      this.getTableByClick(this.selectData)
     },
     // 鏌ヨ鎸夐挳
     filteredTableData() {
@@ -571,33 +300,13 @@
       this.searchData.keyword = ''
       this.tableData = this.oldtableData
     },
-    // 澶勭悊缂栬緫瑙勬牸
-    async handleEdit() {
-      // console.log(this.id)
-      await updateSpecifications({ crossSection: this.editSpeForm.crossSection,
-        id: this.rowId,
-        instruct: this.editSpeForm.instruct,
-        name: this.editSpeForm.name,
-        number: this.editSpeForm.number,
-        numberOfCores: this.editSpeForm.numberOfCores,
-        serialId: this.modelId, // 鍏宠仈鍨嬪彿ID
-        spe_state: this.editSpeForm.spe_state,
-        voltageLevel: this.editSpeForm.spe_state })
-      this.dialogFormVisible4 = false
-    },
-    // 鍋滅敤
-    async updateSpeState() {
-      await updateSpeState({ id: this.rowId,
-        spe_state: '0' })
-      this.dialogFormVisible5 = false
-    },
     renderContent(h, { node, data, store }) {
       // console.log('data', data)
       // console.log('node', node)
       // 鍒ゆ柇鏄惁鏄埗鑺傜偣鎴栨枃浠跺す
       const isFolder = ('children') in data
       return (
-        <span>
+        <span class='tree-node'>
           {isFolder ? (
             <i
               class={node.expanded ? 'el-icon-folder-opened blue-folder' : 'el-icon-folder blue-folder'}
@@ -605,15 +314,68 @@
           ) : (
             <i class='el-icon-document blue-folder'></i>
           )}
-          <span> {data.label}</span>
+          <div class='tree-lable'>[{node.level}]  {data.name}</div>
         </span>
       )
+    },
+    async subAddTreeForm() {
+      this.addTreeFormVisible = false
+      console.log(this.addTreeForm.addTypeArr.length)
+      let res = null
+      try {
+        switch (this.addTreeForm.addTypeArr.length) {
+          case 1:
+            console.log(this.addTreeForm)
+            res = await addMaterial({ ...this.addTreeForm, type: this.addTreeForm.addTypeArr.pop() })
+            break
+          case 2:
+            console.log(this.addTreeForm)
+            res = await addStandards({ ...this.addTreeForm, materialId: this.addTreeForm.addTypeArr.pop() })
+            break
+          case 3:
+            console.log(this.addTreeForm)
+            res = await addSpecifications({ ...this.addTreeForm, standardId: this.addTreeForm.addTypeArr.pop() })
+            break
+        }
+      } catch (error) {
+        this.$message.error('娣诲姞澶辫触')
+      }
+
+      console.log(res)
+      this.$message.success('娣诲姞鎴愬姛')
+      this.addTreeForm = {}
+      this.getStandardTree()
+      this.getTableByClick(this.selectData)
+    },
+    changeCascader(data) {
+      console.log(data)
+      this.addTreeForm.addTypeArr = data
+    },
+    closeAddTreeForm() {
+      this.addTreeForm = {
+        addTypeArr: []
+      }
+      console.log(this.addTreeForm)
     }
+    /** 琛ㄦ牸鏌愯鐐瑰嚮浜嬩欢 */
+    // handleRowClick(row, column, event) {
+    //   // 鍒ゆ柇褰撳墠琛屾槸鍚︽湁瀛愰泦锛岃嫢娌℃湁鍒欑粨鏉熷鐞�
+    //   // console.log(row)
+    //   if (!row.children) return
+    //   this.$refs.tableData.toggleRowExpansion(row)
+    // }
   }
 }
 </script>
 
 <style lang="scss" scoped>
+
+// el-table琛ㄦ牸瀵归綈
+::v-deep .el-table__row:not([class*="el-table__row--level-"]) {
+  td:nth-child(2){
+    padding-left: 23px !important;
+  }
+}
 // .dialogform {
 //   transform: translate(-50%, -50%);
 //   top: 50% !important;
@@ -629,6 +391,7 @@
     display: flex;
     height: 100%;
     min-height: calc(100vh - 88px);
+    max-height: calc(100vh - 88px);
     padding: 15px;
     >div{
       padding: 20px;
@@ -636,15 +399,30 @@
     }
     .library-bom{
       flex: 2;
+      // width: 20%;
+      // height: 100%;
+      max-height: 100%;
       margin-right: 12px;
+      overflow-y: scroll;
       .el-tree {
         // margin-top: 12px;
         ::v-deep .el-tree-node__content{
           height: 24px !important;
-          font-size: 16px;
-          display: inline-block !important;
+          font-size: 18px;
+          // display: inline-block !important;
           padding: 2px;
-          color: #333;
+          // color: #333;
+          .tree-node{
+            display: flex;
+            align-items: center;
+            height: 20px;
+          }
+          .tree-lable{
+            height: 100%;
+            line-height: 23px;
+            font-size: 12px;
+            padding-left: 8px;
+          }
           .blue-folder{
             color: rgb(64, 158, 255)
           }
@@ -674,11 +452,14 @@
       // }
     }
     .library-table{
+      // height: 100%;
       flex: 8;
+      max-height: 100%;
+      // flex: 8;
       margin-left: 12px;
       display: flex;
       flex-direction: column;
-
+      // overflow-y: scroll;
       .table-header{
         display: flex;
         justify-content: space-between;
@@ -692,10 +473,15 @@
           // padding: 20px 20px 10px 20px;
           display: flex;
           flex-direction: column;
+          justify-content: space-between;
+
           .el-table {
-            flex: 1;
+            // flex: 1;
+            // max-height: 680px;
+            // overflow-y: scroll;
           }
-          >div:nth-child(2){
+          >div:nth-child(3){
+            // height: 20px;
             display: flex;
             justify-content: end;
             margin: 10px 0;
@@ -703,5 +489,13 @@
       }
     }
   }
+  .addTree{
+    .el-form-item{
+      margin-bottom: 10px;
+    }
+    .el-cascader{
+      width: 100%;
+    }
+  }
 }
 </style>
diff --git a/src/views/trialManagement/entrust.vue b/src/views/trialManagement/entrust.vue
new file mode 100644
index 0000000..d0366cd
--- /dev/null
+++ b/src/views/trialManagement/entrust.vue
@@ -0,0 +1,15 @@
+<template>
+  <div class="entrust">
+    濮旀墭妫�楠�
+  </div>
+</template>
+
+<script>
+export default {
+
+}
+</script>
+
+<style>
+
+</style>
diff --git a/src/views/trialManagement/rawMaterials.vue b/src/views/trialManagement/rawMaterials.vue
new file mode 100644
index 0000000..bab0bb9
--- /dev/null
+++ b/src/views/trialManagement/rawMaterials.vue
@@ -0,0 +1,228 @@
+<template>
+  <div class="raw-materials">
+    <div class="content-main">
+      <div class="top-bar">
+        <el-form ref="form" v-model="searchData" :inline="true">
+          <el-form-item label="鏉愭枡缂栫爜">
+            <el-input
+              v-model="searchData.keyword"
+              class="input-form"
+              placeholder="璇疯緭鍏ユ潗鏂欑紪鐮�"
+            >
+              <i slot="prefix" class="el-input__icon el-icon-search" />
+            </el-input>
+          </el-form-item>
+          <el-form-item label="鏉愭枡鍚嶇О">
+            <el-input
+              v-model="searchData.keyword"
+              class="input-form"
+              placeholder="璇疯緭鍏ユ潗鏂欏悕绉�"
+            >
+              <i slot="prefix" class="el-input__icon el-icon-search" />
+            </el-input>
+          </el-form-item>
+          <el-form-item label="鐘舵��">
+            <el-select
+              placeholder="璇烽�夋嫨鐘舵��"
+            />
+          </el-form-item>
+          <el-form-item label="鏉ユ枡鏃ユ湡">
+            <el-select
+              placeholder="璇烽�夋嫨鐘舵��"
+            />
+          </el-form-item>
+          <el-form-item>
+            <el-button type="primary">鏌ヨ</el-button>
+            <el-button type="primary" plain>閲嶇疆</el-button>
+          </el-form-item>
+        </el-form>
+      </div>
+      <div class="raw-materials-table">
+        <!-- <div class="table-header">
+          <div class="search-bar">
+          </div>
+        </div> -->
+        <div class="table-box">
+          <el-table
+            ref="rawMaterialsTable"
+            :max-height="800"
+            :cell-style="{textAlign: 'center'}"
+            :header-cell-style="{border:'0px',background:'#f5f7fa',color:'#606266',boxShadow: 'inset 0 1px 0 #ebeef5',textAlign: 'center'}"
+            :data="rawMaterialsTable"
+            style="width: 100%"
+          >
+            <el-table-column
+              type="selection"
+              max-width="55"
+            />
+            <el-table-column
+              type="index"
+              label="搴忓彿"
+              max-width="200"
+            />
+            <el-table-column
+              prop="createTime"
+              label="鏉ユ枡鏃ユ湡"
+              max-width="200"
+            />
+            <el-table-column
+              prop="userName"
+              label="渚涘簲鍟嗗悕绉�"
+              max-width="200"
+            />
+            <el-table-column
+              prop="inspectUserId"
+              label="鏉愭枡缂栫爜"
+              max-width="200"
+            />
+            <el-table-column
+              prop="inspectionStatus"
+              label="鏉愭枡鍚嶇О"
+              max-width="200"
+            />
+            <el-table-column
+              prop="qualifiedState"
+              label="瑙勬牸鍨嬪彿"
+              max-width="200"
+            />
+            <el-table-column
+              prop="inspectStartTime"
+              label="鍗曚綅"
+              max-width="200"
+            />
+            <el-table-column
+              prop="inspectEndTime"
+              label="鏁伴噺"
+              max-width="200"
+            />
+            <el-table-column
+              prop="inspectEndTime"
+              label="鎶ユ鏃ユ湡"
+              max-width="200"
+            />
+            <el-table-column
+              prop="inspectEndTime"
+              label="妫�楠屼汉"
+              max-width="200"
+            />
+            <el-table-column
+              prop="inspectEndTime"
+              label="妫�楠屾棩鏈�"
+              max-width="200"
+            />
+            <el-table-column
+              prop="inspectEndTime"
+              label="鐘舵��"
+              max-width="200"
+            />
+          </el-table>
+          <!-- 鍒嗛〉鍣� -->
+          <div>
+            <el-pagination
+              :current-page="currentPage"
+              :page-sizes="[100, 200, 300, 400]"
+              :page-size="pageSize"
+              layout="total, sizes, prev, pager, next, jumper"
+              :total="total"
+              @size-change="handleSizeChange"
+              @current-change="handleCurrentChange"
+            />
+          </div>
+        </div>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+export default {
+  data() {
+    return {
+      searchData: '',
+      rawMaterialsTable: []
+    }
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+.content-main{
+    width: 100%;
+    height: 100%;
+    display: flex;
+    flex-direction: column;
+    min-height: calc(100vh - 88px);
+    padding: 15px;
+  }
+  .top-bar{
+    margin: -25px;
+    background: #fff;
+    display: flex;
+    justify-content: space-between;
+    padding: 5px 24px 0px 24px;
+    .el-form{
+        width: 100%;
+        display: flex;
+        >div{
+            flex: 1;
+        }
+    }
+  }
+  .input-form{
+    // width: 300px;
+  }
+  .retrieval{
+  float: right;
+  font-size: 14px;
+  color: rgb(0, 120, 255);
+  line-height: 40px;
+ }
+ .rightBtn {
+  display: flex;
+  justify-content: flex-end;
+}
+
+.getDataBtn, .createBtn {
+  margin-left: 10px; /* Optional: Add some space between the buttons */
+}
+.raw-materials-table{
+      background-color: #fff;
+      flex: 1;
+      max-width: 100%;
+      margin-left: 0px;
+      margin-right: 0px;
+      margin-top: 50px;
+      display: flex;
+      flex-direction: column;
+      .table-header{
+        padding: 20px;
+        display: flex;
+        justify-content: space-between;
+        .el-form-item{
+          margin-bottom: 30px !important;
+        }
+      }
+      .table-box{
+          padding: 0px 20px;
+          margin-top: 20px;
+          flex: 1;
+          background: #fff;
+          // padding: 20px 20px 10px 20px;
+          display: flex;
+          flex-direction: column;
+          .el-table {
+            flex: 1;
+            display: flex;
+            flex-direction: column;
+            ::v-deep .el-table__body-wrapper{
+              flex: 1;
+            }
+          }
+          >div:nth-child(2){
+            display: flex;
+            justify-content: end;
+            margin: 10px 0;
+          }
+      }
+    }
+</style>

--
Gitblit v1.9.3