From ef9ea2c97cdbe5bb5fcc21c7186a0dc61679f01d Mon Sep 17 00:00:00 2001
From: zouyu <2723363702@qq.com>
Date: 星期二, 22 八月 2023 18:08:26 +0800
Subject: [PATCH] Merge branch 'master' of http://192.168.110.209:9001/r/lims-before

---
 src/views/experiment/passRateStatistics/index.vue                |  240 +++-
 src/views/experiment/reportAuditing/index.vue                    |   56 
 src/views/laboratory/measure/index.vue                           |  157 +-
 src/views/basicData/index.vue                                    |  551 +++++++++++
 src/views/experiment/inspectionApplication/index.vue             |  140 +-
 src/views/standardLibrary/index.vue                              |  582 ++++++++---
 src/views/experiment/planAssignments/plan.vue                    |   46 
 src/views/CNAS/nonConformanceManage/index.vue                    |  213 ++++
 src/api/experiment/passRateStatistics.js                         |   47 
 src/router/index.js                                              |   23 
 src/styles/element-ui.scss                                       |    5 
 src/api/laboratory/measure.js                                    |    8 
 src/styles/sidebar.scss                                          |   28 
 .env.staging                                                     |    2 
 src/api/basicData/index.js                                       |   75 +
 src/views/message/message/index.vue                              |  242 ++++
 src/layout/components/Sidebar/Logo.vue                           |    2 
 src/layout/components/AppMain.vue                                |    2 
 src/views/message/toDo/index.vue                                 |  224 ++++
 src/views/experiment/inspectionApplication/Viewdetails/index.vue |  280 +++++
 20 files changed, 2,482 insertions(+), 441 deletions(-)

diff --git a/.env.staging b/.env.staging
index 4b2b496..d5bc70f 100644
--- a/.env.staging
+++ b/.env.staging
@@ -5,6 +5,6 @@
 
 # base api
 # VUE_APP_BASE_API = '/stage-api'
-VUE_APP_BASE_API = 'http://192.168.110.254:1234/'
+VUE_APP_BASE_API = 'http://192.168.110.87:1234/'
 
 
diff --git a/src/api/basicData/index.js b/src/api/basicData/index.js
new file mode 100644
index 0000000..4e00b7a
--- /dev/null
+++ b/src/api/basicData/index.js
@@ -0,0 +1,75 @@
+import request from '@/utils/request'
+
+const Api = {
+    addStandardProjectGroup: "/productModel/selectfather", // 娣诲姞鏍囧噯-->閫夋嫨椤圭洰鍒嗙粍
+    productModelSelectmater: "/productModel/selectmater", // 閫夋嫨鏍峰搧鍚嶇О
+    addproductModel: "/productModel/addproductModel", // 娣诲姞鏍囧噯
+    selectproductModel: "/productModel/selectproductModel", // 鏌ヨ鏍囧噯妯$増鍒楄〃
+    deleteProductModel: "/productModel/delproductModel", // 鍒犻櫎鏍囧噯妯$増
+    selectproductModelById: "/productModel/selectproductModelById", // 鏍规嵁id鏌ヨ
+    updateProductModel: "/productModel/writeproductModel", // 鏇存柊鏍囧噯 -->缂栬緫
+    deleteList: "/productModel/delAllproductModel", // 鎵归噺鍒犻櫎
+
+}
+
+export function addStandardProjectGroupApi() {
+    return request({
+        url: Api.addStandardProjectGroup,
+        method: 'get'
+    })
+}
+
+export function productModelSelectmaterApi() {
+    return request({
+        url: Api.productModelSelectmater,
+        method: "get"
+    })
+}
+
+export function addproductModelApi(formData) {
+    return request({
+        url: Api.addproductModel,
+        method: 'post',
+        data: formData
+    })
+}
+
+export function updateProductModelApi(formData) {
+    return request({
+        url: Api.updateProductModel + '?id=' + formData.id,
+        method: 'post',
+        data:  formData
+    })
+}
+
+export function selectproductModelApi(params) {
+    return request({
+        url: Api.selectproductModel,
+        method: "get",
+        params: params
+    })
+}
+
+export function deleteProductModelApi(id){
+    return request({
+        url: Api.deleteProductModel,
+        method: "post",
+        params: {id: id}
+    })
+}
+
+export function selectproductModelByIdApi(id){
+    return request({
+        url: Api.selectproductModelById,
+        method: "get",
+        params: {id: id}
+    })
+}
+
+export function deleteListApi(id){
+    return request({
+        url: Api.deleteList,
+        method: "post",
+        params:{ids: id.toString()}
+    })
+}
\ No newline at end of file
diff --git a/src/api/experiment/passRateStatistics.js b/src/api/experiment/passRateStatistics.js
new file mode 100644
index 0000000..daa6a86
--- /dev/null
+++ b/src/api/experiment/passRateStatistics.js
@@ -0,0 +1,47 @@
+import request from '@/utils/request'
+
+export function getSupplierList(params) {
+    return request({
+      url: '/qualificationRate/getSupplierList',
+      method: 'get',
+      params
+    })
+  }
+  
+  /**
+   * 鏍峰搧鍚堟牸鐜�
+   * @param {} params 
+   * @returns 
+   */
+  export function getTestSampleStatistics(params) {
+    return request({
+      url: '/qualificationRate/getTestSampleStatistics',
+      method: 'get',
+      params
+    })
+  }
+  /**
+   * 渚涘簲鍟嗗悎鏍肩巼
+   * @param {} params 
+   * @returns 
+   */
+  export function getSupplierNoPassStatistics(params) {
+    return request({
+      url: '/qualificationRate/getSupplierNoPassStatistics',
+      method: 'get',
+      params
+    })
+  }
+
+  /**
+   * 椤圭洰鍚堟牸鐜�
+   * @param {} params 
+   * @returns 
+   */
+  export function getNoPassProjectStatistics(params) {
+    return request({
+      url: '/qualificationRate/getNoPassProjectStatistics',
+      method: 'get',
+      params
+    })
+  }
\ No newline at end of file
diff --git a/src/api/laboratory/measure.js b/src/api/laboratory/measure.js
index cf5033a..dce0385 100644
--- a/src/api/laboratory/measure.js
+++ b/src/api/laboratory/measure.js
@@ -52,3 +52,11 @@
     data
   })
 }
+//淇敼璁¢噺
+export function updateMetricalInformationInfo(data) {
+  return request({
+    url: '/metrical-information/updateMetricalInformationInfo',
+    method: 'post',
+    data
+  })
+}
\ No newline at end of file
diff --git a/src/layout/components/AppMain.vue b/src/layout/components/AppMain.vue
index 48fea47..f0ae826 100644
--- a/src/layout/components/AppMain.vue
+++ b/src/layout/components/AppMain.vue
@@ -16,7 +16,7 @@
   },
   methods: {
     childMethod(){
-      this.$refs.child.combackLookPlan()    
+      this.$refs.child.combackLookPlan()
     },
     triggerMainBtnPlan(){
       this.$parent.triggerCombackBtn()
diff --git a/src/layout/components/Sidebar/Logo.vue b/src/layout/components/Sidebar/Logo.vue
index d07b76a..096beb8 100644
--- a/src/layout/components/Sidebar/Logo.vue
+++ b/src/layout/components/Sidebar/Logo.vue
@@ -46,7 +46,7 @@
   width: 100%;
   height: 50px;
   line-height: 50px;
-  background: #fff;
+  background: #f8f8f8;
   text-align: center;
   overflow: hidden;
 
diff --git a/src/router/index.js b/src/router/index.js
index ab7ed2d..7b83e21 100644
--- a/src/router/index.js
+++ b/src/router/index.js
@@ -192,10 +192,17 @@
     children: [
       {
         path: 'inspectionApplication',
-        name: 'InspectionApplication',
+        name: 'inspectionApplication',
         component: () => import('@/views/experiment/inspectionApplication/index'),
         meta: { title: '鏂板妫�楠�', icon: 'tree' }
       },
+        {
+          path: 'Viewdetails',
+          name: 'Viewdetails',
+          hidden: true ,
+          component: () => import('@/views/experiment/inspectionApplication/Viewdetails/index'),
+          meta: { title: '璇︽儏椤�', icon: 'tree' }
+        },
       {
         path: 'planAssignments',
         name: 'PlanAssignments',
@@ -443,6 +450,20 @@
       }
     ]
   },
+  {
+    path: '/baseData',
+    component: Layout,
+    redirect: '/baseData/basicDataMessage',
+    meta: { title: '鍩虹鏁版嵁', icon: 'el-icon-s-tools' },
+    children: [
+      {
+        path: '/basicDataMessage',
+        name: 'BasicDataMessage',
+        component: () => import('@/views/basicData/index'),
+        meta: { title: '鍩虹鏁版嵁', icon: 'el-icon-s-tools' }
+      }
+    ]
+  },
   // 404 page must be placed at the end !!!
   { path: '*', redirect: '/404', hidden: true }
 ]
diff --git a/src/styles/element-ui.scss b/src/styles/element-ui.scss
index a831e80..e788c56 100644
--- a/src/styles/element-ui.scss
+++ b/src/styles/element-ui.scss
@@ -13,7 +13,7 @@
 
 .el-upload__input {
   display: none;
-  
+
 }
 
 
@@ -103,9 +103,6 @@
 // .el-menu-popup{
 //   min-width: 100px !important;
 // }
-.el-menu--vertical{
-  max-width: 100px !important;
-}
 
 .el-menu--collapse .el-menu .el-submenu, .el-menu--popup {
   min-width: 100px !important;
diff --git a/src/styles/sidebar.scss b/src/styles/sidebar.scss
index 5d56d60..42ae7b0 100644
--- a/src/styles/sidebar.scss
+++ b/src/styles/sidebar.scss
@@ -69,18 +69,18 @@
     }
 
     // menu hover
-    
+
     .el-submenu__title,.el-tooltip{
         border-radius: 8px;
         overflow: hidden;
       &:hover {
-        background-color: $menuHover !important;   
+        background-color: $menuHover !important;
         color: $menuActiveText !important;
       }
     }
     .submenu-title-noDropdown{
       &:hover {
-        background-color:transparent !important; 
+        background-color:transparent !important;
         // background-color: $menuBg !important;
         // border-radius: 8px;
         // overflow: hidden;
@@ -103,22 +103,21 @@
 
     }
 
-    
+
 
     & .nest-menu .el-submenu>.el-submenu__title,
     & .el-submenu .el-menu-item {
-      min-width: $sideBarWidth !important;
       background-color: $subMenuBg !important;
 
       &:hover {
-        
+
         background-color: $subMenuHover !important;
       }
     }
 
     // .is-active.el-submenu{
     //   color: $subMenuActiveText !important;
-      
+
     // }
     .is-active.el-menu-item {
       // color: $subMenuActiveText !important;
@@ -179,7 +178,7 @@
 
     .el-submenu {
       overflow: hidden;
-      
+
       &>.el-submenu__title{
         // width: auto;
         // height: auto;
@@ -234,7 +233,7 @@
             margin: 0 auto;
           }
         }
-        
+
       }
     }
 
@@ -301,12 +300,11 @@
   }
   .nest-menu .el-submenu>.el-submenu__title,
   .el-menu-item {
-    width: 100px;
-    height: 30px !important;
-    min-width: 100px !important;
-    line-height: 30px;
-    text-align: left !important;
+    height: 40px !important;
+    line-height: 40px;
+		padding-left: 20px !important;
     font-size: 10px;
+		width: 100% !important;
     justify-content: start !important;
     background-color: $subMenuBg !important;
     color: $subMenuHover !important;
@@ -330,6 +328,8 @@
     max-height: 100vh;
     overflow-y: auto;
     background-color: #fff;
+		width: 150px !important;
+		padding: 0 !important;
     &::-webkit-scrollbar-track-piece {
       background: #d3dce6;
     }
diff --git a/src/views/CNAS/nonConformanceManage/index.vue b/src/views/CNAS/nonConformanceManage/index.vue
index 884cce1..18c1c72 100644
--- a/src/views/CNAS/nonConformanceManage/index.vue
+++ b/src/views/CNAS/nonConformanceManage/index.vue
@@ -1,5 +1,214 @@
 <template>
-    <div>
-        涓嶇鍚堥」绠$悊
+    <div class="content-main">
+        <div class="top-bar">
+            <el-form ref="form" :inline="true" :model="searchData">
+              <el-form-item label="褰曞叆鏃ユ湡:" style="margin-right: 20px;">
+                <el-date-picker
+                    v-model="searchData.entry_date"
+                    type="date"
+                    placeholder="璇烽�夋嫨褰曞叆鏃ユ湡">
+                </el-date-picker>
+              </el-form-item>
+              <el-form-item label="瀹℃牳鏃ユ湡:" style="margin-right: 20px;">
+                <el-date-picker
+                    v-model="searchData.check_date"
+                    type="date"
+                    placeholder="璇烽�夋嫨瀹℃牳鏃ユ湡">
+                </el-date-picker>
+              </el-form-item>
+              <el-form-item label="鐘舵��:" style="margin-right: 20px;">
+                <el-select v-model="searchData.state" placeholder="鍏ㄩ儴" style="width: 100px;">
+                  <el-option
+                    v-for="item in stateoptions"
+                    :key="item.value"
+                    :label="item.label"
+                    :value="item.value">
+                  </el-option>
+                </el-select>
+              </el-form-item>
+              <el-form-item label="閮ㄩ棬:" style="margin-right: 20px;">
+                <el-input v-model="searchData.department" placeholder="璇疯緭鍏ラ儴闂�">
+                </el-input>
+              </el-form-item>
+              <el-form-item>
+                <el-button type="primary" @click="searchInspections">鏌ヨ</el-button>
+                <el-button type="primary" plain @click="reset">閲嶇疆</el-button>
+              </el-form-item>
+            </el-form>
+            <el-form class="rightBtn">
+              <el-form-item class="createBtn">
+                <el-button type="primary" icon="el-icon-document-add" style="margin-right: 10px;">鏂板璁板綍</el-button>
+              </el-form-item>
+              <el-form-item class="getDataBtn">
+                <el-button type="primary" icon="el-icon-download">瀵煎嚭</el-button>
+              </el-form-item>
+            </el-form>
+        </div>
+        <div class="library-table">
+      <div class="table-header">
+        <el-radio-group v-model="radioValue" @change="radioclick">
+          <el-radio-button v-for="item in conditionsOptions" :key="item.value" :label="item.value">
+            {{ item.label }}
+          </el-radio-button>
+        </el-radio-group>
+      </div>
+      <div class="table-box">
+        <el-table
+                ref="recordTable"
+                :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="recordTable"
+                style="width: 100%"
+              >
+                <el-table-column
+                  label="搴忓彿"
+                  min-width="10%">
+                  <template slot-scope="scope">
+                    <el-checkbox v-model="checked"></el-checkbox>
+                  </template>
+                </el-table-column>
+                <el-table-column
+                  prop="title"
+                  label="鏍囬"
+                  min-width="12%"
+                />
+                <el-table-column
+                  prop="content"
+                  label="鍐呭"
+                  min-width="12%"
+                />
+                <el-table-column
+                  prop="level"
+                  label="绛夌骇"
+                  min-width="12%"
+                />
+                <el-table-column
+                  prop="type"
+                  label="绫诲瀷"
+                  min-width="8%"
+                />
+                <el-table-column
+                  prop="state"
+                  label="鐘舵��"
+                  min-width="12%">
+                  <template slot-scope="scope">
+                    <span v-if="scope.row.state === 1" style="color: red;">鏈</span>
+                    <span v-if="scope.row.state === 2" style="color: green;">宸茶</span>
+                  </template>
+                </el-table-column>
+                <el-table-column
+                  prop="sender"
+                  label="鍙戜欢浜�"
+                  min-width="8%"
+                />
+                <el-table-column
+                  prop="create_time"
+                  label="鍒涘缓鏃堕棿"
+                  min-width="12%"
+                />
+                <el-table-column
+                  label="鎿嶄綔"
+                  min-width="10%"
+                >
+                  <template slot-scope="scope">
+                    <el-button type="text" size="small" @click="deleteRow(scope.row)">鍒犻櫎</el-button>
+                    <el-button type="text" size="small" @click="readRow(scope.row)">鏍囦负宸茶</el-button>
+                  </template>
+                </el-table-column>
+              </el-table>
+              <!-- 鍒嗛〉鍣� -->
+              <div>
+                <el-pagination
+                  @size-change="handleSizeChange"
+                  @current-change="handleCurrentChange"
+                  :current-page="currentPage"
+                  :page-sizes="[5, 10, 15, 20]"
+                  :page-size="pageSize"
+                  layout="total, sizes, prev, pager, next, jumper"
+                  :total="total">
+                </el-pagination>
+              </div>
+      </div>
+    </div>
     </div>
 </template>
+
+<script>
+export default {
+    data(){
+        return {
+            searchData:{
+                entry_date: '',
+                check_date: '',
+                state: 0,
+                department: ''
+            },
+            stateoptions:[{
+                value: 0,
+                label: '宸插叧闂�'
+            },{
+                value: 1,
+                label: '寰呭叧闂�'
+            }],
+            recordTable:[],
+            currentPage: 0,
+            pageSize:5,
+            total: 20
+        }
+    }
+}
+</script>
+
+<style lang="scss" scoped>
+.content-main{
+      width: 100%;
+      height: 100%;
+      display: flex;
+      flex-direction: column;
+    .top-bar{
+      margin: -25px -15px;
+      background: #fff;
+      display: flex;
+      justify-content: space-between;
+      padding: 5px 24px 0px 24px;
+      .rightBtn{
+        display: flex;
+        justify-content: space-between;
+      }
+    }
+    .library-table{
+      background-color: #fff;
+      flex: 1;
+      margin: 0px -15px;
+      margin-top: 40px;
+      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: 0px;
+          flex: 1;
+          background: #fff;
+          /* padding: 20px 20px 10px 20px; */
+          display: flex;
+          flex-direction: column;
+          .el-table {
+            flex: 1;
+          }
+          >div:nth-child(2){
+            display: flex;
+            justify-content: end;
+            margin: 10px 0;
+          }
+      }
+    }
+}
+</style>
diff --git a/src/views/basicData/index.vue b/src/views/basicData/index.vue
new file mode 100644
index 0000000..576920a
--- /dev/null
+++ b/src/views/basicData/index.vue
@@ -0,0 +1,551 @@
+<template>
+  <div class="main_div">
+    <div class="top_div">
+      <span>鏍峰搧鍚嶇О锛�</span>
+      <el-select
+        v-model="params.material"
+        size="small"
+        placeholder="璇烽�夋嫨鏍峰搧鍚嶇О"
+      >
+        <el-option
+          v-for="item in productModelSelectmater"
+          :value="item"
+          :key="item.index"
+          :label="item"
+        ></el-option>
+      </el-select>
+      <span class="top_div_span">椤圭洰鍒嗙粍锛�</span>
+      <el-input
+        v-model="params.father"
+        placeholder="璇疯緭鍏ラ」鐩垎缁�"
+        style="width: 10%"
+        size="small "
+      ></el-input>
+      <span class="top_div_span">椤圭洰鍚嶇О锛�</span>
+      <el-input
+        v-model="params.name"
+        placeholder="璇疯緭鍏ラ」鐩悕绉�"
+        style="width: 10%"
+        size="small "
+      ></el-input>
+      <el-button
+        type="primary"
+        class="top_div_button"
+        size="small"
+        @click="selectProductModelTable"
+        >鏌ヨ</el-button
+      >
+      <el-button class="top_div_button" size="small" @click="params = {}"
+        >閲嶇疆</el-button
+      >
+      <div style="float: right">
+        <el-button
+          class="top_div_button"
+          type="primary"
+          size="small"
+          icon="el-icon-folder-add"
+          @click="centerDialogVisible = true"
+          >鏂板</el-button
+        >
+        <el-dialog
+          :visible.sync="centerDialogVisible"
+          width="30%"
+          right
+          :before-close="handleClose"
+        >
+          <template slot="title">
+            <div class="addTop">
+              <span>{{ isUpdate ? "鏇存柊" : "鏂板" }}鍩虹鏁版嵁</span>
+            </div>
+          </template>
+          <el-form :model="form" :rules="rules" ref="ruleForm" class="addForm">
+            <el-form-item prop="material" required>
+              <span>鏍峰搧鍚嶇О锛�</span>
+              <el-select
+                v-model="form.material"
+                style="width: 85%"
+                placeholder="璇烽�夋嫨鏍峰搧鍚嶇О"
+              >
+                <el-option
+                  v-for="(item, index) in productModelSelectmater"
+                  :key="index"
+                  :value="item"
+                  :label="item"
+                ></el-option>
+              </el-select>
+            </el-form-item>
+            <el-form-item>
+              <span>椤圭洰鍒嗙粍锛�</span>
+              <el-select
+                v-model="form.father"
+                style="width: 85%"
+                placeholder="璇烽�夋嫨椤圭洰鍒嗙粍"
+              >
+                <el-option
+                  v-for="(item, index) in projectGroupingOptions"
+                  :key="index"
+                  :value="item"
+                  :label="item"
+                ></el-option>
+              </el-select>
+            </el-form-item>
+            <el-row :gutter="24">
+              <el-col :span="12"
+                ><el-form-item prop="name" required
+                  ><span>椤圭洰鍚嶇О锛�</span>
+                  <el-input
+                    style="width: 70%"
+                    v-model="form.name"
+                    placeholder="璇疯緭鍏ラ」鐩悕绉�"
+                  ></el-input></el-form-item
+              ></el-col>
+              <el-col :span="12">
+                <el-form-item prop="unit">
+                  <span
+                    v-html="'鍗�&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;浣嶏細'"
+                  ></span>
+                  <el-input
+                    style="width: 70%"
+                    v-model="form.unit"
+                    placeholder="璇疯緭鍏ュ崟浣�"
+                  ></el-input></el-form-item
+              ></el-col>
+            </el-row>
+          </el-form>
+
+          <span slot="footer" class="dialog-footer">
+            <el-button @click="centerDialogVisible = false" size="small "
+              >鍙� 娑�</el-button
+            >
+            <el-button type="primary" @click="submitAdd" size="small ">{{
+              isUpdate ? "鏇� 鏂�" : "淇� 瀛�"
+            }}</el-button>
+          </span>
+        </el-dialog>
+        <el-button
+          class="top_div_button"
+          icon="el-icon-delete-solid"
+          size="small"
+          style="color: #00a5ff"
+          @click="deleteListClick"
+          >鍒犻櫎</el-button
+        >
+      </div>
+    </div>
+    <div class="table_div">
+      <el-table
+        :data="tableData"
+        style="width: 100%; margin-bottom: 20px"
+        row-key="name"
+        border
+        height="calc(100vh - 250px)"
+        default-expand-all
+        ref="multipleTable"
+        @select="selectTr"
+        @select-all="selectAll"
+        :tree-props="{ children: 'children', hasChildren: 'hasChildren' }"
+      >
+        <el-table-column type="selection" label="搴忓彿"> </el-table-column>
+        <el-table-column
+          type="index"
+          width="50px"
+          label="搴忓彿"
+        ></el-table-column>
+        <el-table-column label="椤圭洰鍚嶇О" sortable>
+          <template scope="scope">
+            <el-tag
+              ><div
+                class="firstDiv"
+                :style="`color: ${
+                  scope.row.code == '[1]' ? '#16a7ff' : '#58c173'
+                }`"
+              >
+                {{ scope.row.code == "[1]" ? "01" : "02" }}
+              </div>
+              <span style="color: black">{{ scope.row.name }}</span></el-tag
+            >
+          </template>
+        </el-table-column>
+        <el-table-column prop="unit" label="鍗曚綅" sortable></el-table-column>
+        <el-table-column label="鎿嶄綔">
+          <template slot-scope="scope">
+            <div v-if="scope.row.code == '[2]' || scope.row.edit == true">
+              <el-button type="text" size="mini" @click="childrenClick(scope)"
+                >缂栬緫</el-button
+              >
+              <el-button
+                type="text"
+                size="mini"
+                @click="deleteTreeChildren(scope)"
+                >鍒犻櫎</el-button
+              >
+            </div>
+          </template>
+        </el-table-column>
+      </el-table>
+    </div>
+  </div>
+</template>
+
+<script>
+import {
+  addStandardProjectGroupApi,
+  productModelSelectmaterApi,
+  addproductModelApi,
+  selectproductModelApi,
+  deleteProductModelApi,
+  selectproductModelByIdApi,
+  updateProductModelApi,
+  deleteListApi,
+} from "@/api/basicData/index";
+export default {
+  name: "BasicDataMessage",
+  data() {
+    return {
+      isAllSelect: false,
+      projectGroupingOptions: [],
+      productModelSelectmater: [],
+      value: "",
+      isUpdate: false,
+      projectName: "",
+      tableData: [],
+      centerDialogVisible: false,
+      deleteList: [],
+      form: {
+        material: "", // 鏍峰搧鍚嶇О
+        father: "", // 椤圭洰鍒嗙粍
+        name: "", // 椤圭洰鍚嶇О
+        unit: "", // 鍗曚綅
+      },
+      params: {
+        material: "",
+        father: "",
+        name: "",
+      },
+      rules: {
+        material: [
+          { required: true, message: "璇烽�夋嫨鏍峰搧鍚嶇О", trigger: "change" },
+        ],
+        name: [
+          { required: true, message: "璇疯緭鍏ラ」鐩悕绉�", trigger: "blur" },
+          {
+            min: 2,
+            max: 25,
+            message: "闀垮害鍦� 2 鍒� 25 涓瓧绗�",
+            trigger: "blur",
+          },
+        ],
+        unit: [
+          { required: true, message: "璇疯緭鍏ュ崟浣�", trigger: "blur" },
+          {
+            min: 1,
+            max: 25,
+            message: "闀垮害鍦� 1 鍒� 25 涓瓧绗�",
+            trigger: "blur",
+          },
+        ],
+      },
+    };
+  },
+  methods: {
+    submitAdd() {
+      if (!this.isUpdate) {
+        this.$refs.ruleForm.validate((valid) => {
+          if (valid) {
+            addproductModelApi(this.form).then((res) => {
+              this.centerDialogVisible = false;
+              this.$message({
+                message: res.message,
+                type: "success",
+              });
+              this.selectProductModelTable();
+            });
+          }
+        });
+      } else {
+        this.$refs.ruleForm.validate((valid) => {
+          if (valid) {
+            updateProductModelApi(this.form).then((res) => {
+              this.centerDialogVisible = false;
+              this.$message({
+                message: res.message,
+                type: "success",
+              });
+              this.selectProductModelTable();
+            });
+          }
+        });
+      }
+    },
+    async selectProductMaster() {
+      await productModelSelectmaterApi().then((res) => {
+        this.productModelSelectmater = res.data;
+      });
+    },
+    handleClose(done) {
+      this.$confirm("纭鍏抽棴锛�")
+        .then((_) => {
+          this.centerDialogVisible = false;
+          done();
+        })
+        .catch((_) => {});
+    },
+    selectProductModelTable() {
+      selectproductModelApi(this.params).then((res) => {
+        res.data.forEach((i) => {
+          if (i.name === undefined) {
+            i.name = i.children[0].name;
+            i.unit = i.children[0].unit;
+            i.id = i.children[0].id;
+            i.edit = true;
+            delete i.children;
+          }
+        });
+        this.tableData = res.data;
+        this.selectDataList();
+      });
+    },
+    childrenClick(scope) {
+      this.isUpdate = true;
+      let father = "";
+      selectproductModelByIdApi(scope.row.id).then((res) => {
+        let result = res.data;
+        this.form.name = result.name;
+        this.form.material = result.material;
+        this.form.father = result.father;
+        this.form.unit = result.unit;
+        this.form.id = scope.row.id;
+      });
+      this.centerDialogVisible = true;
+    },
+    selectDataList() {
+      this.tableData.forEach((a) => {
+        a.code = "[1]";
+        if (a.children != undefined) {
+          a.children.forEach((b) => {
+            b.code = "[2]";
+          });
+        }
+      });
+    },
+    deleteTreeChildren(scope) {
+      deleteProductModelApi(scope.row.id).then((res) => {
+        this.$message({
+          message: res.message,
+          type: "success",
+        });
+        this.selectProductModelTable();
+      });
+    },
+
+    // 琛ㄦ牸鏍戝叏閮ㄩ�変腑閰嶇疆
+    // 鍏ㄩ��/鍙栨秷閫夋搷浣�
+    selectAll(val) {
+      this.isAllSelect = !this.isAllSelect;
+      let data = this.tableData;
+      this.toggleSelect(data, this.isAllSelect, "all");
+      // 鑷畾涔�
+      if (this.isAllSelect) {
+        val.forEach((i) => {
+          let isExist = false;
+          this.deleteList.findIndex((c) => {
+            if (c === i.id) {
+              isExist = true;
+            }
+          });
+          if (!isExist && i.id !== undefined) {
+            this.deleteList.push(i.id);
+          }
+        });
+      } else {
+        this.deleteList.splice(0, this.deleteList.length);
+      }
+      // 鑷畾涔夌粨鏉�
+    },
+    //閫夋嫨鏌愯
+    selectTr(selection, row) {
+      this.$set(row, "isChecked", !row.isChecked);
+      this.$nextTick(() => {
+        this.isAllSelect = row.isChecked;
+        this.toggleSelect(row, row.isChecked, "tr");
+      });
+
+      if (row.isChecked === true) {
+        if (row.children !== undefined) {
+          row.children.forEach((i) => {
+            this.deleteList.push(i.id);
+          });
+        } else {
+          this.deleteList.push(row.id);
+        }
+      } else if (row.isChecked === false) {
+        if (row.children !== undefined) {
+          row.children.forEach((i) => {
+            this.deleteList.findIndex((c, index) => {
+              if (c === i.id) {
+                this.deleteList.splice(index, 1);
+                return;
+              }
+            });
+          });
+        }
+        this.deleteList.findIndex((c, index) => {
+          if (c === row.id) {
+            this.deleteList.splice(index, 1);
+            return;
+          }
+        });
+      }
+    },
+    //閫掑綊瀛愮骇
+    toggleSelect(data, flag, type) {
+      if (type === "all") {
+        if (data.length > 0) {
+          data.forEach((item) => {
+            this.toggleSelection(item, flag);
+            if (item.children && item.children.length > 0) {
+              this.toggleSelect(item.children, flag, type);
+            }
+          });
+        }
+      } else {
+        if (data.children && data.children.length > 0) {
+          data.children.forEach((item) => {
+            item.isChecked = !item.isChecked;
+            this.$refs.multipleTable.toggleRowSelection(item, flag);
+            this.toggleSelect(item, flag, type);
+          });
+        }
+      }
+    },
+    //鏀瑰彉閫変腑
+    toggleSelection(row, flag) {
+      this.$set(row, "isChecked", flag);
+      this.$nextTick(() => {
+        if (flag) {
+          this.$refs.multipleTable.toggleRowSelection(row, flag);
+        } else {
+          this.$refs.multipleTable.clearSelection();
+        }
+      });
+    },
+    // 琛ㄦ牸鏍戝叏閮ㄩ�変腑閰嶇疆  缁撴潫
+    deleteListClick() {
+      deleteListApi(this.deleteList).then((res) => {
+        this.$message({
+          message: res.message,
+          type: "success",
+        });
+        this.selectProductModelTable();
+      });
+    },
+  },
+  mounted() {
+    this.selectProductMaster().then((res) => {
+      this.params.material = this.productModelSelectmater[0];
+      this.selectProductModelTable();
+    });
+  },
+  watch: {
+    centerDialogVisible: {
+      handler(newVal, oldVal) {
+        if (newVal == true) {
+          addStandardProjectGroupApi().then((res) => {
+            this.projectGroupingOptions = res.data;
+          });
+        } else {
+          // 璇锋眰鎴愬姛娓呴櫎鏁版嵁
+          this.form = {};
+          // 鎻愪氦鎴愬姛娓呴櫎妫�楠�
+          this.$refs.ruleForm.resetFields();
+          this.isUpdate = false;
+        }
+      },
+    },
+  },
+};
+</script>
+
+<style>
+.el-tag.el-tag {
+  border-color: transparent;
+  background-color: transparent;
+}
+.el-tag.el-tag:hover {
+  border-color: transparent;
+  background-color: transparent;
+}
+.firstDiv {
+  float: left;
+  width: 20px;
+  height: 20px;
+  border-radius: 50%;
+  background-color: #eff5ff;
+  margin-top: 5px;
+  justify-content: center;
+  display: flex;
+  align-items: center;
+  margin-right: 8px;
+}
+.main_div {
+  width: 100%;
+  position: relative;
+  padding: 0 10px 10px 10px;
+}
+.el-dialog__header {
+  padding: 0;
+}
+.el-dialog__headerbtn {
+  top: 0;
+}
+.el-dialog__close {
+  padding: 8px 0;
+  color: #ffffff !important;
+}
+.addForm {
+  padding: 20px 20px 0 20px;
+}
+.addForm .el-form-item__error {
+  left: 66px;
+}
+.el-dialog {
+  border-radius: 10px;
+}
+.el-dialog__body {
+  padding: 30px 20px 0 20px;
+}
+.addTop {
+  border-top-left-radius: 10px;
+  border-top-right-radius: 10px;
+  background-color: #00a5ff;
+  color: #ffffff;
+  padding: 8px 20px;
+  float: left;
+  height: 30px;
+  width: 100%;
+}
+.addTop span {
+  font-size: 16px;
+  font-weight: 700;
+}
+.table_div {
+  margin-top: 10px;
+  width: 100%;
+  height: calc(100vh - 230px);
+  background-color: #ffffff;
+  padding: 10px;
+}
+
+.top_div {
+  height: 120px;
+  width: 100%;
+  padding: 30px 40px;
+  background-color: #ffffff;
+}
+.top_div_span {
+  margin-left: 50px;
+}
+.top_div_button {
+  margin-left: 20px;
+}
+</style>
diff --git a/src/views/experiment/inspectionApplication/Viewdetails/index.vue b/src/views/experiment/inspectionApplication/Viewdetails/index.vue
new file mode 100644
index 0000000..dd8a167
--- /dev/null
+++ b/src/views/experiment/inspectionApplication/Viewdetails/index.vue
@@ -0,0 +1,280 @@
+<template>
+<div> 
+    <div style="overflow: hidden;">
+        <el-card style="margin: 10px;" v-model="searchData" >
+        <div slot="header" class="clearfix">
+            <span>
+                <i slot="prefix" class="el-icon-s-home" />               
+                瀹為獙绠$悊/鍘熸潗鏂欐楠屽崟</span>
+        </div>
+        <div class="card-content">
+            <el-row :gutter="80">    
+                <el-form ref="form" :model="searchData" label-width="80px">
+                    <el-col :span="6">
+                        <el-form-item label="鏉ユ枡鏃ユ湡:" >
+                            <el-input :disabled="true" v-model="searchData.from_time"></el-input>
+                            
+                        </el-form-item>
+                    </el-col>
+                    <el-col :span="6">
+                        <el-form-item label="渚涘簲鍟嗗悕绉�:" >
+                            <el-input :disabled="true" v-model="searchData.supplier"></el-input>
+                        </el-form-item>
+                    </el-col>                    
+                    <el-col :span="6">
+                        <el-form-item label="浜у搧缂栧彿:">
+                            <el-input :disabled="true" v-model="searchData.mcode"></el-input>
+                        </el-form-item> 
+                    </el-col>
+                </el-form>
+            </el-row>
+            <el-row :gutter="80">    
+                <el-form ref="form" :model="searchData" label-width="80px">
+                    <el-col :span="6">
+                        <el-form-item label="鍘熸潗鏂欏悕绉�:">
+                            <el-input :disabled="true" v-model="searchData.name"></el-input>
+                        </el-form-item>
+                    </el-col>
+                    <el-col :span="6">
+
+                        <el-form-item label="瑙勬牸鍨嬪彿:">
+                            <el-input :disabled="true" v-model="searchData.specifications"></el-input>                         
+                        </el-form-item>
+                    </el-col>
+                    
+                    <el-col :span="6">
+
+                        <el-form-item label="鍗曚綅:">
+                            <el-input :disabled="true" v-model="searchData.unit"></el-input>                         
+                        </el-form-item> 
+                    </el-col>
+                </el-form>
+            </el-row>
+            <el-row :gutter="80">    
+                <el-form ref="form" :model="searchData" label-width="80px">
+                    <el-col :span="6">
+                        <el-form-item label="鏁伴噺:">
+                            <el-input :disabled="true" v-model="searchData.num"></el-input>
+                        </el-form-item>
+                    </el-col>
+                    <el-col :span="6">
+
+                        <el-form-item label="鐧昏鏃ユ湡:">
+                            <el-input :disabled="true" v-model="searchData.end_time"></el-input>
+                        </el-form-item>
+                    </el-col>
+                    
+                    <el-col :span="6">
+
+                        <el-form-item label="鐧昏浜�:">
+                            <el-input :disabled="true" v-model="searchData.userName"></el-input>                      
+                        </el-form-item> 
+                    </el-col>
+                </el-form>
+            </el-row>
+        </div>            
+        </el-card> 
+    
+    
+                <el-row style="margin: 5px;">
+                    <el-col :span="12" style="line-height: 32px;">妫�楠岄」鐩�</el-col>
+                    <el-col :span="12" style="text-align: right;">
+                        <!-- <el-button ic size="medium " @click="()=>{}">淇濆瓨</el-button> -->
+                        <el-button icon="el-icon-refresh-lef" size="medium " style="background-color: cornflowerblue;" @click="goback">杩斿洖</el-button>
+                    </el-col>                   
+                </el-row>
+        <div>        
+            <el-card style="margin: 10px;">
+                <el-table
+                    :data="tableData"
+                    border      
+                    style="width: 100%">
+                    <el-table-column
+                    label="搴忓彿"
+                    type="index"
+                    width="50">
+                    </el-table-column>
+                    <el-table-column
+                        prop="date"
+                        label="椤圭洰"
+                        width="180">
+                    </el-table-column>
+                    <el-table-column
+                        prop="name"
+                        label="鍗曚綅"
+                        width="180">
+                    </el-table-column>
+                    <el-table-column
+                        prop="kk"
+                        label="鏍囧噯鍊�">
+                    </el-table-column>
+                    <el-table-column
+                        prop="zz"
+                        label="鍐呮帶鍊�">
+                    </el-table-column>
+                    <el-table-column
+                        prop="oo"
+                        wight="200"
+                        label="缁忛獙浜�">
+                        <template>
+                            <el-select v-model="value" placeholder="榛勬檽鏄�">
+                                <el-option
+                                    v-for="item in cities"
+                                    :key="item.value"
+                                    :label="item.label"
+                                    :value="item.value">
+                                    <span style="float: left">{{ item.label }}</span>
+                                    <span style="float: right; color: #8492a6; font-size: 13px">{{ item.value }}</span>
+                                    </el-option>
+                            </el-select>
+                        </template>
+                    </el-table-column>
+                    <el-table-column
+                        prop="pp"
+                        label="瀹為獙璁惧">
+                        <template>
+                            <el-select v-model="value" placeholder="鎷夊姏鏈�">
+                                <el-option
+                                v-for="item in cities"
+                                :key="item.value"
+                                :label="item.label"
+                                :value="item.value">
+                                </el-option>
+                            </el-select>
+                        </template>
+                    </el-table-column>
+                </el-table>
+
+            </el-card> 
+        </div>           
+    </div>
+</div>       
+</template>
+<script>
+  import { selectInspectsList, selectAll, addInspect} from '@/api/experiment/planAssignments'
+export default {
+    data(){
+        return {
+            searchData:{
+                from_time:'',
+                supplier:'',
+                mcode:'',
+                name:'',
+                specifications:'',
+                unit:'',
+                num:'',
+                userName:'',
+                end_time:'',
+
+            },
+            value:{},
+            cities:[{
+                value: 'Beijing',
+                label: '榛勫皬鏄�'
+                }, {
+                value: 'Shanghai',
+                label: '榛勫皬鏄�'
+                }, {
+            }],
+            tableData:[{            
+            date: '瀵肩嚎',
+            name: 'mm',
+            kk:'30.0',
+            zz:'30.0',
+            oo:'榛勬檽鏄�',
+            pp:'鎷夊姏鏈�',
+          },{
+            date: '瀵肩嚎',
+            name: 'mm',
+            kk:'30.0',
+            zz:'30.0',
+            oo:'榛勬檽鏄�',
+            pp:'鎷夊姏鏈�',
+          },{
+            date: '瀵肩嚎',
+            name: 'mm',
+            kk:'30.0',
+            zz:'30.0',
+            oo:'榛勬檽鏄�',
+            pp:'鎷夊姏鏈�',
+          },{
+            date: '瀵肩嚎',
+            name: 'mm',
+            kk:'30.0',
+            zz:'30.0',
+            oo:'榛勬檽鏄�',
+            pp:'鎷夊姏鏈�',
+          },{
+            date: '瀵肩嚎',
+            name: 'mm',
+            kk:'30.0',
+            zz:'30.0',
+            oo:'榛勬檽鏄�',
+            pp:'鎷夊姏鏈�',
+          }],
+          currentPage:1,
+          pageSize:8,
+          id:''
+        }
+    },
+    created(){
+        console.log(this.$route.query.icode);
+        this.id = this.$route.query.icode;
+        this.selectInspectsList()
+    },
+    methods: {
+      async goback(){
+        
+        this.$router.push({name:'inspectionApplication'})
+      },
+      async selectInspectsList() {
+
+        // 鑾峰彇鍒嗛〉鍒楄〃
+        const res = await selectInspectsList({ countSize: this.pageSize, pageSize: this.currentPage ,message:this.id})
+        // this.inspectionTable = data
+        console.log(res)
+        
+    //     res.data.forEach((item) => {
+    //       var formTime = item["DATE_FORMAT(`form_time`,'%Y-%m-%d')"]
+    //       var startTime = item["DATE_FORMAT(i"]["`start_time`,'%Y-%m-%d')"]
+    //       var endTime = item["DATE_FORMAT(i"]["`end_time`,'%Y-%m-%d')"]
+    //       var checkdate = startTime + '~' + endTime
+    //       var createTime = item["DATE_FORMAT(i"]["`create_time`,'%Y-%m-%d')"]
+    //       item['formTime'] = formTime // 鏉ユ枡鏃ユ湡
+    //       item['checkdate'] = checkdate // 妫�楠屾棩鏈�
+    //       item['createTime'] = createTime // 鐧昏鏃ユ湡
+    //   })
+        this.searchData.mcode = res.data.row[0].mcode
+        this.searchData.supplier = res.data.row[0].supplier
+        this.searchData.from_time = res.data.row[0]["DATE_FORMAT(`form_time`,'%Y-%m-%d')"]
+        this.searchData.name = res.data.row[0].name
+        this.searchData.specifications = res.data.row[0].specifications
+        this.searchData.unit = res.data.row[0].unit
+        this.searchData.num = res.data.row[0].num
+        this.searchData.end_time = res.data.row[0]["DATE_FORMAT(i"]["`end_time`,'%Y-%m-%d')"]
+        this.searchData.userName = res.data.row[0].userName
+
+
+
+        
+        const data = res.data.row
+        data.forEach((item) => {
+          var formTime = item["DATE_FORMAT(`form_time`,'%Y-%m-%d')"]
+          var startTime = item["DATE_FORMAT(i"]["`start_time`,'%Y-%m-%d')"]
+          var endTime = item["DATE_FORMAT(i"]["`end_time`,'%Y-%m-%d')"]
+          var checkdate = startTime + '~' + endTime
+          var createTime = item["DATE_FORMAT(i"]["`create_time`,'%Y-%m-%d')"]
+          item['formTime'] = formTime // 鏉ユ枡鏃ユ湡
+          item['checkdate'] = checkdate // 妫�楠屾棩鏈�
+          item['createTime'] = createTime // 鐧昏鏃ユ湡
+      })
+        this.inspectionTable = data
+        this.total = res.data.total
+      },
+}
+}
+</script>
+<style lang="scss" scoped>
+
+</style>
+     
\ No newline at end of file
diff --git a/src/views/experiment/inspectionApplication/index.vue b/src/views/experiment/inspectionApplication/index.vue
index 219169e..80346ca 100644
--- a/src/views/experiment/inspectionApplication/index.vue
+++ b/src/views/experiment/inspectionApplication/index.vue
@@ -154,7 +154,7 @@
                 >
                   <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" >鎻愪氦</el-button> -->
                     <el-button type="text" size="small" >浣滃簾</el-button>
                   </template>
                 </el-table-column>
@@ -164,7 +164,7 @@
                 <el-pagination
                   class="pagination"
                   :current-page="currentPage"
-                  :page-sizes="[5, 10, 20, 30]"
+                  :page-sizes="[1, 10, 20, 30]"
                   :page-size="pageSize"
                   layout="total, sizes, prev, pager, next, jumper"
                   :total="total"
@@ -174,6 +174,7 @@
               </div>
             </div>
           </div>
+          <!-- 瀵硅瘽妗� -->
           <div class="checkType">
             <el-dialog
               title="鏂板妫�楠屽崟"
@@ -182,7 +183,7 @@
             >
               <div class="check-box">
                 <el-radio-group v-model="type" @change="handleRadioChange">
-                  <el-radio :label="0" border>鍘熸潗鏂欐楠�</el-radio>
+                  <el-radio :label="0" border >鍘熸潗鏂欐楠�</el-radio>
                   <el-radio :label="1" border>濮旀墭妫�楠�</el-radio>
                   <el-radio :label="2" border>鎴愬搧妫�楠�</el-radio>
                 </el-radio-group>
@@ -192,43 +193,43 @@
                   <el-row :gutter="100">
                       <el-col :span="10">
                           <el-form-item label="鏉ユ枡鏃ユ湡锛�">
-                              <el-input style="width: 300px" type="text" :value="infoForm.dateSurvey" placeholder="璇疯緭鍏ユ潵鏂欐棩鏈�" autocomplete="off" />  
+                              <el-input style="width: 300px" type="text" :value="infoForm.dateSurvey" placeholder="璇疯緭鍏ユ潵鏂欐棩鏈�" autocomplete="off" />
                           </el-form-item>
                       </el-col>
                       <el-col :span="10">
                           <el-form-item label="渚涘簲鍟嗗悕绉帮細">
-                              <el-input style="width: 300px" type="text" :value="infoForm.supplierName" placeholder="璇疯緭鍏ヤ緵搴斿晢鍚嶇О" autocomplete="off" /> 
+                              <el-input style="width: 300px" type="text" :value="infoForm.supplierName" placeholder="璇疯緭鍏ヤ緵搴斿晢鍚嶇О" autocomplete="off" />
                           </el-form-item>
                       </el-col>
                       </el-row>
                       <el-row :gutter="100">
                       <el-col :span="10">
                           <el-form-item label="鍘熸潗鏂欑紪鐮侊細">
-                              <el-input style="width: 300px" type="text" :value="infoForm.materialCoding" placeholder="璇疯緭鍏ュ師鏉愭枡缂栫爜" autocomplete="off" />  
+                              <el-input style="width: 300px" type="text" :value="infoForm.materialCoding" placeholder="璇疯緭鍏ュ師鏉愭枡缂栫爜" autocomplete="off" />
                           </el-form-item>
                       </el-col>
                       <el-col :span="10">
                           <el-form-item label="鍘熸潗鏂欏悕绉帮細">
-                              <el-input style="width: 300px" type="text" :value="infoForm.materialName" placeholder="璇疯緭鍏ュ師鏉愭枡鍚嶇О" autocomplete="off" />  
+                              <el-input style="width: 300px" type="text" :value="infoForm.materialName" placeholder="璇疯緭鍏ュ師鏉愭枡鍚嶇О" autocomplete="off" />
                           </el-form-item>
                       </el-col>
                       </el-row>
                       <el-row :gutter="100">
                       <el-col :span="10">
                           <el-form-item label="瑙勬牸鍨嬪彿锛�">
-                              <el-input style="width: 300px" type="text" :value="infoForm.specificationsModels" placeholder="璇疯緭鍏ヨ鏍煎瀷鍙�" autocomplete="off" />  
+                              <el-input style="width: 300px" type="text" :value="infoForm.specificationsModels" placeholder="璇疯緭鍏ヨ鏍煎瀷鍙�" autocomplete="off" />
                           </el-form-item>
                       </el-col>
                       <el-col :span="10">
                           <el-form-item label="鍗曚綅锛�">
-                              <el-input style="width: 300px" type="text" :value="infoForm.unit" placeholder="璇疯緭鍏ュ崟浣�" autocomplete="off" />  
+                              <el-input style="width: 300px" type="text" :value="infoForm.unit" placeholder="璇疯緭鍏ュ崟浣�" autocomplete="off" />
                           </el-form-item>
                       </el-col>
                       </el-row>
                       <el-row :gutter="100">
                       <el-col :span="10">
                           <el-form-item label="鏁伴噺锛�">
-                              <el-input style="width: 300px" type="text" :value="infoForm.quantity" placeholder="璇疯緭鍏ユ暟閲�" autocomplete="off" />  
+                              <el-input style="width: 300px" type="text" :value="infoForm.quantity" placeholder="璇疯緭鍏ユ暟閲�" autocomplete="off" />
                           </el-form-item>
                       </el-col>
                       <el-col :span="10">
@@ -251,43 +252,43 @@
                   <el-row :gutter="100">
                       <el-col :span="10">
                           <el-form-item label="鏉ユ枡鏃ユ湡锛�">
-                              <el-input style="width: 300px" type="text" :value="commisionSelection.formTime" placeholder="璇疯緭鍏ユ潵鏂欐棩鏈�" autocomplete="off" />  
+                              <el-input style="width: 300px" type="text" :value="commisionSelection.formTime" placeholder="璇疯緭鍏ユ潵鏂欐棩鏈�" autocomplete="off" />
                           </el-form-item>
                       </el-col>
                       <el-col :span="10">
                           <el-form-item label="渚涘簲鍟嗗悕绉帮細">
-                              <el-input style="width: 300px" type="text" :value="commisionSelection.supplier" placeholder="璇疯緭鍏ュ鎵樺崟浣�" autocomplete="off" /> 
+                              <el-input style="width: 300px" type="text" :value="commisionSelection.supplier" placeholder="璇疯緭鍏ュ鎵樺崟浣�" autocomplete="off" />
                           </el-form-item>
                       </el-col>
                       </el-row>
                       <el-row :gutter="100">
                       <el-col :span="10">
                           <el-form-item label="濮旀墭缂栧彿锛�">
-                              <el-input style="width: 300px" type="text" :value="commisionSelection.mcode" placeholder="璇疯緭鍏ユ牱鍝佺紪鍙�" autocomplete="off" />  
+                              <el-input style="width: 300px" type="text" :value="commisionSelection.mcode" placeholder="璇疯緭鍏ユ牱鍝佺紪鍙�" autocomplete="off" />
                           </el-form-item>
                       </el-col>
                       <el-col :span="10">
                           <el-form-item label="濮旀墭鍚嶇О锛�">
-                              <el-input style="width: 300px" type="text" :value="commisionSelection.name" placeholder="璇疯緭鍏ユ牱鍝佸悕绉�" autocomplete="off" />  
+                              <el-input style="width: 300px" type="text" :value="commisionSelection.name" placeholder="璇疯緭鍏ユ牱鍝佸悕绉�" autocomplete="off" />
                           </el-form-item>
                       </el-col>
                       </el-row>
                       <el-row :gutter="100">
                       <el-col :span="10">
                           <el-form-item label="瑙勬牸鍨嬪彿锛�">
-                              <el-input style="width: 300px" type="text" :value="commisionSelection.specifications" placeholder="璇疯緭鍏ュ瀷鍙疯鏍�" autocomplete="off" />  
+                              <el-input style="width: 300px" type="text" :value="commisionSelection.specifications" placeholder="璇疯緭鍏ュ瀷鍙疯鏍�" autocomplete="off" />
                           </el-form-item>
                       </el-col>
                       <el-col :span="10">
                           <el-form-item label="鍗曚綅锛�">
-                            <el-input style="width: 300px" type="text" :value="commisionSelection.unit" placeholder="璇疯緭鍏ュ崟浣�" autocomplete="off" />  
+                            <el-input style="width: 300px" type="text" :value="commisionSelection.unit" placeholder="璇疯緭鍏ュ崟浣�" autocomplete="off" />
                           </el-form-item>
                       </el-col>
                       </el-row>
                       <el-row :gutter="100">
                       <el-col :span="10">
                           <el-form-item label="鏁伴噺锛�">
-                            <el-input style="width: 300px" type="text" :value="commisionSelection.num" placeholder="璇疯緭鍏ユ暟閲�" autocomplete="off" />  
+                            <el-input style="width: 300px" type="text" :value="commisionSelection.num" placeholder="璇疯緭鍏ユ暟閲�" autocomplete="off" />
                           </el-form-item>
                       </el-col>
                       <el-col :span="10">
@@ -310,43 +311,43 @@
                   <el-row :gutter="100">
                       <el-col :span="10">
                           <el-form-item label="鏉ユ枡鏃ユ湡锛�">
-                              <el-input style="width: 300px" type="text" v-model="finishedTable.deliverydate" placeholder="璇疯緭鍏ユ潵鏂欐棩鏈�" autocomplete="off" />  
+                              <el-input style="width: 300px" type="text" v-model="finishedTable.deliverydate" placeholder="璇疯緭鍏ユ潵鏂欐棩鏈�" autocomplete="off" />
                           </el-form-item>
                       </el-col>
                       <el-col :span="10">
                           <el-form-item label="渚涘簲鍟嗗悕绉帮細">
-                              <el-input style="width: 300px" type="text" v-model="finishedTable.supplier" placeholder="璇疯緭鍏ヤ緵搴斿晢鍚嶇О" autocomplete="off" /> 
+                              <el-input style="width: 300px" type="text" v-model="finishedTable.supplier" placeholder="璇疯緭鍏ヤ緵搴斿晢鍚嶇О" autocomplete="off" />
                           </el-form-item>
                       </el-col>
                       </el-row>
                       <el-row :gutter="100">
                       <el-col :span="10">
                           <el-form-item label="鍘熸潗鏂欑紪鐮侊細">
-                              <el-input style="width: 300px" type="text" v-model="finishedTable.code" placeholder="璇疯緭鍏ュ師鏉愭枡缂栫爜" autocomplete="off" />  
+                              <el-input style="width: 300px" type="text" v-model="finishedTable.code" placeholder="璇疯緭鍏ュ師鏉愭枡缂栫爜" autocomplete="off" />
                           </el-form-item>
                       </el-col>
                       <el-col :span="10">
                           <el-form-item label="鍘熸潗鏂欏悕绉帮細">
-                              <el-input style="width: 300px" type="text" v-model="finishedTable.name" placeholder="璇疯緭鍏ュ師鏉愭枡鍚嶇О" autocomplete="off" />  
+                              <el-input style="width: 300px" type="text" v-model="finishedTable.name" placeholder="璇疯緭鍏ュ師鏉愭枡鍚嶇О" autocomplete="off" />
                           </el-form-item>
                       </el-col>
                       </el-row>
                       <el-row :gutter="100">
                       <el-col :span="10">
                           <el-form-item label="瑙勬牸鍨嬪彿锛�">
-                              <el-input style="width: 300px" type="text" v-model="finishedTable.modelandspecification" placeholder="璇疯緭鍏ヨ鏍煎瀷鍙�" autocomplete="off" />  
+                              <el-input style="width: 300px" type="text" v-model="finishedTable.modelandspecification" placeholder="璇疯緭鍏ヨ鏍煎瀷鍙�" autocomplete="off" />
                           </el-form-item>
                       </el-col>
                       <el-col :span="10">
                           <el-form-item label="鍗曚綅锛�">
-                              <el-input style="width: 300px" type="text" v-model="finishedTable.unit" placeholder="璇疯緭鍏ュ崟浣�" autocomplete="off" />  
+                              <el-input style="width: 300px" type="text" v-model="finishedTable.unit" placeholder="璇疯緭鍏ュ崟浣�" autocomplete="off" />
                           </el-form-item>
                       </el-col>
                       </el-row>
                       <el-row :gutter="100">
                       <el-col :span="10">
                           <el-form-item label="鏁伴噺锛�">
-                              <el-input style="width: 300px" type="text" v-model="finishedTable.amount" placeholder="璇疯緭鍏ユ暟閲�" autocomplete="off" />  
+                              <el-input style="width: 300px" type="text" v-model="finishedTable.amount" placeholder="璇疯緭鍏ユ暟閲�" autocomplete="off" />
                           </el-form-item>
                       </el-col>
                       <el-col :span="10">
@@ -390,7 +391,7 @@
                 type="selection"
                 label=""
                 min-width="10%"
-              /> 
+              />
               <el-table-column
                 type="index"
                 label="搴忓彿"
@@ -528,15 +529,16 @@
                 <el-button @click="commisionVisible = false">鍙� 娑�</el-button>
                 <el-button type="primary" @click="handleCommisionSelection">纭� 瀹�</el-button>
               </span>
-          </div> 
+          </div>
         </el-dialog>
       </template>
       <template v-else>
         <router-view />
+
       </template>
     </div>
   </template>
-  
+
   <script>
   import { selectInspectsList, selectAll, addInspect} from '@/api/experiment/planAssignments'
   export default {
@@ -546,8 +548,9 @@
         searchData: {
           applicationnumber: '',
           type: '',
-          state: ''
+          state: '',
         },
+        icode:'',
         inspectionTable: [],
         rawMaterialTable: [],
         commisionTable: [{
@@ -623,7 +626,7 @@
         }],
         currentPage: 1,
         total: 20, // 鎬绘潯鏁�
-        pageSize: 5, // 姣忛〉鐨勬暟鎹潯鏁�
+        pageSize: 8, // 姣忛〉鐨勬暟鎹潯鏁�
         radioValue: '鍏ㄩ儴',
         checkTypeVisible: false,
         type: '', // 榛樿涓嶉�変腑鐨勭姸鎬�
@@ -649,9 +652,24 @@
       if (this.$route.name === 'ForInspectionDetail') this.showDetail = true
     },
     methods: {
+      async handleClick(row){
+        // console.log(item);
+        // const res = await ddd({goodId:id})
+        // this.$message({
+        //   message: '鎭枩浣狅紝杩欐槸涓�鏉℃垚鍔熸秷鎭�',
+        //   type: 'success'
+        // });
+
+        // console.log(res);
+        this.inspectionTable = row;
+        console.log(row.icode);
+        this.icode = row.icode
+        this.$router.push({name:'Viewdetails',query: {icode:row.icode}});
+        this.selectInspectsList()
+      },
       async selectInspectsList() {
         // 鑾峰彇鍒嗛〉鍒楄〃
-        const res = await selectInspectsList({ countSize: this.pageSize, pageSize: this.currentPage })
+        const res = await selectInspectsList({ countSize: this.pageSize, pageSize: this.currentPage,message:this.icode})
         // this.inspectionTable = data
         // console.log(res.data.row)
         const data = res.data.row
@@ -703,17 +721,15 @@
       this.total = this.inspectionTable.length
     },
     reset(){
-      this.searchData = {
-          applicationnumber: '',
-          type: '',
-          state: ''
-      }
+      this.countSize = 1
+      this.searchData = { }
+      // console.log('2222');
       this.selectInspectsList()
     },
-    //琚�変腑鐨勪俊鎭� 鍗曢��    
+    //琚�変腑鐨勪俊鎭� 鍗曢��
     handleSelectionChange(val) {
       if (val.length > 1) {
-        this.$refs.multipleTable.clearSelection();        
+        this.$refs.multipleTable.clearSelection();
         this.$refs.multipleTable.toggleRowSelection(val.pop())
       }
       this.tmp = val[0]
@@ -727,31 +743,31 @@
       this.rawmaterialVisible = false
     },
     async handleRadioChange(){
-      console.log(this.type)
       if(this.type === 0){
         // 鍘熸潗鏂欐姤妫�
-        this.rawmaterialVisible = true
-        const res = await selectAll({type: this.type})
-        var data = res.data
-        data.forEach((item)=>{
-          var checkdate = []
-          checkdate.push(item['createTime'])
-          checkdate.push(item['updateTime'])
-          item['checkdate'] = checkdate // 妫�楠屾棩鏈�
-        })
-        this.rawMaterialTable = data
+        // this.rawmaterialVisible = true
+        // const res = await selectAll({type: this.type})
+        // var data = res.data
+        // data.forEach((item)=>{
+        //   var checkdate = []
+        //   checkdate.push(item['createTime'])
+        //   checkdate.push(item['updateTime'])
+        //   item['checkdate'] = checkdate // 妫�楠屾棩鏈�
+        // })
+        this.$router.push({ name: 'ReportForInspection' });
       }else if(this.type === 1){
-        this.commisionVisible = true
-        const res = await selectAll({type: this.type})
-        var data = res.data
-        data.forEach((item)=>{
-          var checkdate = []
-          checkdate.push(item['startTime'])
-          checkdate.push(item['endTime'])
-          item['checkdate_'] = item['startTime'] + '~' + item['endTime']
-          item['checkdate'] = checkdate // 妫�楠屾棩鏈�
-        })
-        this.commisionTable = res.data
+        // this.commisionVisible = true
+        // const res = await selectAll({type: this.type})
+        // var data = res.data
+        // data.forEach((item)=>{
+        //   var checkdate = []
+        //   checkdate.push(item['startTime'])
+        //   checkdate.push(item['endTime'])
+        //   item['checkdate_'] = item['startTime'] + '~' + item['endTime']
+        //   item['checkdate'] = checkdate // 妫�楠屾棩鏈�
+        // })
+        // this.commisionTable = res.data
+        this.$router.push({ name: 'CommissionInspection' });
       }
     },
     // 鏂板妫�楠�
@@ -818,7 +834,7 @@
     }
   }
   </script>
-  
+
   <style lang="scss" scoped>
   .checkType{
     .check-box{
@@ -833,7 +849,7 @@
             border-color: #b3d8ff;
            ::v-deep  .el-radio__label{
               color: #333 !important;
-  
+
             }
           }
           height: auto;
@@ -876,7 +892,7 @@
     display: flex;
     justify-content: flex-end;
   }
-  
+
   .getDataBtn, .createBtn {
     margin-left: 10px; /* Optional: Add some space between the buttons */
   }
diff --git a/src/views/experiment/passRateStatistics/index.vue b/src/views/experiment/passRateStatistics/index.vue
index 8783d00..e59f783 100644
--- a/src/views/experiment/passRateStatistics/index.vue
+++ b/src/views/experiment/passRateStatistics/index.vue
@@ -2,52 +2,48 @@
   <div class="content-main">
     <div class="top-bar">
       <el-form ref="form" :inline="true" :rules="rules" :model="searchData" label-position="top">
-              <el-form-item label="妫�娴嬫棩鏈�:" class="sermargin" prop="date">
-                <el-date-picker
-                  v-model="searchData.date"
-                  type="daterange"
-                  range-separator="鑷�"
-                  start-placeholder="寮�濮嬫棩鏈�"
-                  end-placeholder="缁撴潫鏃ユ湡">
-                </el-date-picker>
-              </el-form-item>
-              <el-form-item label="妫�楠岀被鍨�:" class="sermargin" prop="type">
-                <el-select v-model="searchData.type" placeholder="鍏ㄩ儴">
-                  <el-option
-                    v-for="item in options"
-                    :key="item.value"
-                    :label="item.label"
-                    :value="item.value">
-                  </el-option>
-                </el-select>
-              </el-form-item>
-              <el-form-item label="鐗╂枡鍒嗙粍:">
-                <el-button type="primary" icon="el-icon-plus" class="chooseMaterialBtn" >閫夋嫨鐗╂枡鍒嗙粍</el-button>
-              </el-form-item>
-              <div class="rightBtn">
-                <el-form-item>
-                  <el-button type="primary" plain size="mini">娓呯┖</el-button>
-                  <el-button type="primary" @click="search" size="mini">鏌ヨ</el-button>
-                </el-form-item>
-              </div>
-              </el-form>
+        <el-form-item label="妫�娴嬫棩鏈�:" class="sermargin" prop="date">
+          <el-date-picker v-model="searchData.date" type="daterange" range-separator="鑷�" start-placeholder="寮�濮嬫棩鏈�"
+            end-placeholder="缁撴潫鏃ユ湡">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label="妫�楠岀被鍨�:" class="sermargin" prop="type">
+          <el-select v-model="searchData.type" placeholder="鍏ㄩ儴">
+            <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="渚涘簲鍟�:">
+          <el-select v-model="searchData.supplier" placeholder="鍏ㄩ儴">
+            <el-option v-for="item in supplier" :key="item.value" :label="item.label" :value="item.value">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <div class="rightBtn">
+          <el-form-item>
+            <el-button type="primary" plain size="mini">娓呯┖</el-button>
+            <el-button type="primary" @click="search" size="mini">鏌ヨ</el-button>
+          </el-form-item>
+        </div>
+      </el-form>
     </div>
     <div class="top-bar-copy"></div>
     <div class="chart-content">
       <div class="qualified-wrapper">
-        <div style="margin-left: 20px;padding:20px 0px;font-size:18px">妫�娴嬫壒娆″悎鏍肩巼缁熻</div>
+        <div style="margin-left: 20px;padding:20px 0px;font-size:18px">妫�娴嬫牱鍝佸悎鏍肩巼缁熻</div>
         <div class="qualified" ref="qualified"></div>
       </div>
       <div class="unqualified">
-          <div class="firstBox-wrapper" >
-            <div style="margin-left: 20px;padding:20px 0px;font-size:18px">渚涘簲鍟嗕笉鍚堟牸娆℃暟缁熻</div>
-            <div class="firstBox" ref="unqualified_provider"></div>
-          </div>
-        <div class="secondBox-wrapper" >
+        <div class="firstBox-wrapper">
+          <div style="margin-left: 20px;padding:20px 0px;font-size:18px">渚涘簲鍟嗕笉鍚堟牸娆℃暟缁熻</div>
+          <div class="firstBox" ref="unqualified_provider"></div>
+        </div>
+        <div class="secondBox-wrapper">
           <div class="secondBox_header">
             <div style="font-size:18px">涓嶅悎鏍奸」鐩粺璁�</div>
             <el-radio-group v-model="type">
-              <el-radio-button v-for="item in radiooptions" :key="item.value" :label="item.value" >{{ item.label }}</el-radio-button>
+              <el-radio-button v-for="item in radiooptions" :key="item.value" :label="item.value">{{ item.label
+              }}</el-radio-button>
             </el-radio-group>
           </div>
           <div class="secondBox" ref="unqualified_project"></div>
@@ -55,14 +51,14 @@
       </div>
     </div>
     <div class="bottom">
-      <el-button type="primary" size="mini" >鏁版嵁瀵煎嚭</el-button>
+      <el-button type="primary" size="mini">鏁版嵁瀵煎嚭</el-button>
     </div>
   </div>
 </template>
 
 <script>
 // 娣诲姞婊氬姩鐩戝惉浜嬩欢
-window.addEventListener('scroll', function() {
+window.addEventListener('scroll', function () {
   var topBar = document.querySelector('.top-bar');
   var scrollTop = window.pageYOffset || document.documentElement.scrollTop;
 
@@ -74,25 +70,32 @@
 })
 
 import * as echarts from 'echarts'
+import { getSupplierList,getTestSampleStatistics,getSupplierNoPassStatistics,getNoPassProjectStatistics } from '@/api/experiment/passRateStatistics';
+import { dateFormat } from '../../../utils/dateUtil'
 export default {
-  data(){
+  data() {
     return {
-      searchData:{
+      supplier: [],
+      searchData: {
         date: [],
-        type: 0,
-        group: ''
+        type: null,
+        supplier: null
       },
-      options:[
+      options: [
         {
-          label: '閲囪喘鍏ュ簱',
+          label: '鍘熸潗鏂�',
           value: 0
         },
         {
-          label: 'xxxx',
+          label: '鎴愬搧',
           value: 1
+        },
+        {
+          label: '濮旀墭鍝�',
+          value: 2
         }
       ],
-      radiooptions:[
+      radiooptions: [
         {
           label: '鐜舰楗煎浘',
           value: 0
@@ -104,12 +107,15 @@
       ],
       type: 0,
       rules: {
-        date: [{required: true, message: '璇疯緭鍏ヨ处鍙�', trigger: 'blur'}],
-        type: [{required: true, message: '璇疯緭鍏ュ悕瀛�', trigger: 'blur'}]
+        // date: [{ required: true, message: '璇疯緭鍏ヨ处鍙�', trigger: 'blur' }],
+        // type: [{ required: true, message: '璇疯緭鍏ュ悕瀛�', trigger: 'blur' }]
       }
     }
   },
   mounted() {
+    this.getSupplierList()
+    this.getTestSampleStatistics()
+    this.getSupplierNoPassStatistics()
     const chartDom_qualified = this.$refs.qualified;
     const chartDom_unqualified_provider = this.$refs.unqualified_provider;
     const chartDom_unqualified_project = this.$refs.unqualified_project;
@@ -118,6 +124,9 @@
     const myChart2 = echarts.init(chartDom_unqualified_provider);
     const myChart3 = echarts.init(chartDom_unqualified_project);
 
+    /**
+     * 妫�娴嬪悎鏍肩巼缁熻
+     */
     const option_qualified = {
       tooltip: {
         trigger: 'axis',
@@ -164,15 +173,18 @@
         }
       ]
     };
-    const option_unqualified1 ={
+    /**
+     * 渚涘簲鍟�
+     */
+    const option_unqualified1 = {
       tooltip: {
         trigger: 'axis',
         axisPointer: { // 鍧愭爣杞存寚绀哄櫒锛屽潗鏍囪酱瑙﹀彂鏈夋晥
           type: 'shadow' // 榛樿涓虹洿绾匡紝鍙�変负锛�'line' | 'shadow'
         },
-        formatter: function(params) {
+        formatter: function (params) {
           let tooltip = params[0].name + '<br/>';
-          params.forEach(function(item) {
+          params.forEach(function (item) {
             tooltip += item.marker + ' ' + item.seriesName + ': ' + item.value.toFixed(2) + '%<br/>'; // 灏嗘暟鎹繚鐣欎袱浣嶅皬鏁板苟杞负鐧惧垎姣斿舰寮�
           });
           return tooltip;
@@ -185,13 +197,13 @@
         data: ['渚涘簲鍟�1', '渚涘簲鍟�2', '渚涘簲鍟�3', '渚涘簲鍟�4']
       },
       yAxis: [
-          {
-            type: 'value',
-            axisLabel: {
-              formatter: '{value}%'
-            }
+        {
+          type: 'value',
+          axisLabel: {
+            formatter: '{value}%'
           }
-        ],
+        }
+      ],
       series: [
         {
           name: '鍚堟牸鏁伴噺',
@@ -207,6 +219,9 @@
         }
       ]
     };
+    /**
+     * 涓嶅悎鏍奸」鐩�
+     */
     const option_unqualified2 = {
       legend: {
         orient: 'vertical',
@@ -246,25 +261,54 @@
 
     myChart1.setOption(option_qualified);
     myChart2.setOption(option_unqualified1);
-    if(this.type === 0){
+    if (this.type === 0) {
       myChart3.setOption(option_unqualified2);
     }
-    if(this.type === 1){
+    if (this.type === 1) {
       myChart3.setOption(option_unqualified2);
+    }
+  },
+  methods: {
+    search() {
+      this.getTestSampleStatistics()
+    },
+    dateHandle(){
+      let data=JSON.parse(JSON.stringify(this.searchData))
+      if(this.searchData.date.length!=0&&this.searchData.date !=[]){
+        data.beginDate=dateFormat(this.searchData.date[0])
+        data.endDate=dateFormat(this.searchData.date[1])
+      }
+      data.date=null
+      return data
+    },
+    async getSupplierList() {
+      let res = await getSupplierList()
+      res.data.forEach(item => {
+        this.supplier.push({ label: item.supplier, value: item.supplier })
+      })
+    },
+    getTestSampleStatistics(){
+     let param= this.dateHandle()
+     let res =getTestSampleStatistics(param)
+    },
+    getSupplierNoPassStatistics(){
+      let param= this.dateHandle()
+      getSupplierNoPassStatistics(param)
     }
   }
 }
 </script>
 
 <style lang="scss" scoped>
-.content-main{
-  height:100%;
+.content-main {
+  height: 100%;
   width: 100%;
-  .top-bar{
+
+  .top-bar {
     position: absolute;
     width: 99%;
     top: 0;
-    left:0;
+    left: 0;
     z-index: 999;
     margin-top: 5px;
     margin-left: 9.5px;
@@ -272,79 +316,95 @@
     display: flex;
     justify-content: space-between;
     padding: 5px 24px 0px 24px;
-    transition: position 0.3s ease; 
-    .el-form{
+    transition: position 0.3s ease;
+
+    .el-form {
       width: 100%;
-      .chooseMaterialBtn{
+
+      .chooseMaterialBtn {
         background-color: #fff;
-        border-color: rgba(192,196,204,0.5);
+        border-color: rgba(192, 196, 204, 0.5);
         color: gray;
         width: 220px;
       }
     }
-    .sermargin{
+
+    .sermargin {
       margin-right: 60px;
     }
-    .rightBtn{
-      display:flex;
-      justify-content:end;
+
+    .rightBtn {
+      display: flex;
+      justify-content: end;
       margin-right: 20px;
       margin-top: -40px;
       margin-bottom: -10px;
     }
   }
+
   .top-bar.fixed {
     position: fixed;
     top: 0.45rem;
     left: 0.52rem;
-    width:93.8%;
+    width: 93.8%;
   }
-  .top-bar-copy{
+
+  .top-bar-copy {
     width: 100%;
     height: 12vh;
   }
-  .chart-content{
+
+  .chart-content {
     margin: 0px -15px;
     margin-bottom: 60px;
-    .qualified-wrapper{
+
+    .qualified-wrapper {
       // margin-top: 14vh;
       background-color: #fff;
       width: 100%;
-      height:50vh;
+      height: 50vh;
     }
-    .qualified{
+
+    .qualified {
       width: 100%;
       height: 400px;
     }
-    .unqualified{
+
+    .unqualified {
       margin-top: 10px;
       height: 50vh;
-      display:flex;
+      display: flex;
       justify-content: space-between;
-      .firstBox-wrapper{
+
+      .firstBox-wrapper {
         background-color: #fff;
-        width:49%;
-        .firstBox{
+        width: 49%;
+
+        .firstBox {
           width: 100%;
           height: 40vh;
         }
       }
-      .secondBox-wrapper{
-        background-color:#fff;
-        width:49%;
-        .secondBox_header{
-          display:flex;
+
+      .secondBox-wrapper {
+        background-color: #fff;
+        width: 49%;
+
+        .secondBox_header {
+          display: flex;
           justify-content: space-between;
           margin: 20px 20px;
         }
-        .secondBox{
+
+        .secondBox {
           width: 100%;
           height: 40vh;
         }
       }
     }
   }
-  .bottom{
+
+  .bottom {
     position: fixed;
     width: 95%;
     bottom: 0rem !important;
@@ -352,7 +412,7 @@
     margin: 0px -15px;
     padding: 20px 40px;
     z-index: 999;
-    display:flex;
+    display: flex;
     justify-content: end;
     background-color: #fff;
   }
diff --git a/src/views/experiment/planAssignments/plan.vue b/src/views/experiment/planAssignments/plan.vue
index 0d931cc..ee84390 100644
--- a/src/views/experiment/planAssignments/plan.vue
+++ b/src/views/experiment/planAssignments/plan.vue
@@ -18,6 +18,15 @@
 		padding: 15px;
 		background-color: white;
 		height: calc(100vh - 15vh);
+		overflow-y: auto;
+	}
+
+	.order_num{
+		border-radius: 1rem;
+		width: 35px;
+		height: 25px;
+		text-align: center;
+		margin-right: 8px;
 	}
 </style>
 <style>
@@ -28,6 +37,7 @@
 
 	.plan .cell {
 		color: #333;
+		display: flex;
 	}
 </style>
 
@@ -51,6 +61,14 @@
 				<el-table-column type="index" width="50" label="搴忓彿">
 				</el-table-column>
 				<el-table-column prop="date" label="鐢宠鍗曞彿">
+					<template slot-scope="scope">
+						<div style="display: flex;">
+							<div v-if="scope.row.code=='01'" style="color: #3caaff;background-color: #eff5ff;" class="order_num">01</div>
+							<div v-else-if="scope.row.code=='02'" style="color: #57c981;background-color: #f1fbf4;" class="order_num">02</div>
+							<div v-else-if="scope.row.code=='03'" style="color: #dfa8fb;background-color: #faf2ff;" class="order_num">03</div>
+							<div>{{scope.row.date}}</div>
+						</div>
+					</template>
 				</el-table-column>
 				<el-table-column prop="name" label="妫�楠岀粨鏋�">
 				</el-table-column>
@@ -60,9 +78,9 @@
 					<template slot-scope="scope">
 						<el-button size="mini" type="primary" v-if="isIfReport(scope.row)">涓婃姤</el-button>
 						<el-button size="mini" type="warning" @click="openUpDia(scope.row)"
-							v-else-if="scope.row.insId==undefined&&scope.row.address==null">鍒嗛厤</el-button>
+							v-else-if="scope.row.code=='03'&&scope.row.insId==undefined&&scope.row.address==null">鍒嗛厤</el-button>
 						<el-button size="mini" type="success" @click="openUpInsDia(scope.row)"
-							v-else-if="scope.row.insId==undefined&&scope.row.name==null">妫�楠�</el-button>
+							v-else-if="scope.row.code=='03'&&scope.row.insId==undefined&&scope.row.name==null">妫�楠�</el-button>
 					</template>
 				</el-table-column>
 			</el-table>
@@ -159,8 +177,15 @@
 						id: 34,
 						date: '2016-05-01',
 						name: null,
-						res: '[{"number": 1,"res": "涓嶅悎鏍�"},{"number": 2}]',
-						address: '涓婃捣甯傛櫘闄�鍖洪噾娌欐睙璺� 1519 寮�'
+						res: '[{"number": 1,"res": "涓嶅悎鏍�"},{"number": 3,"res": "涓嶅悎鏍�"}]',
+						address: '涓婃捣甯傛櫘闄�鍖洪噾娌欐睙璺� 1519 寮�',
+						children: [{
+							id: 35,
+							date: 'hhh',
+							name: null,
+							res: '[{"number": 1},{"number": 2}]',
+							address: '涓婃捣甯傛櫘闄�鍖洪噾娌欐睙璺� 1519 寮�'
+						}]
 					}]
 				}, {
 					id: 2,
@@ -200,11 +225,16 @@
 		methods: {
 			selectDataList() {
 				this.tableData.forEach(a => {
-					a.code = '[1]'
+					a.code = '01'
 					if (a.children != undefined) {
 						a.children.forEach(b => {
-							b.code = '[2]'
-							b.res = JSON.parse(b.res)
+							b.code = '02'
+							if (b.children != undefined) {
+								b.children.forEach(c => {
+									c.code = '03'
+									c.res = JSON.parse(c.res)
+								})
+							}
 						})
 					}
 				})
@@ -252,4 +282,4 @@
 			}
 		}
 	}
-</script>
\ No newline at end of file
+</script>
diff --git a/src/views/experiment/reportAuditing/index.vue b/src/views/experiment/reportAuditing/index.vue
index ad3c04e..0f4b6a3 100644
--- a/src/views/experiment/reportAuditing/index.vue
+++ b/src/views/experiment/reportAuditing/index.vue
@@ -23,17 +23,21 @@
           </el-dropdown-menu>
         </el-dropdown>
       </el-form>
-      <el-form>
-        <el-button class="rightBtn" type="primary">瀹℃牳</el-button>
-      </el-form>
     </div>
+
+
+
+
+
+
+
     <div class="library-table">
       <div class="table-header">
         <div class="search-bar">
           <el-radio-group v-model="checkStatus" @change="handleRadioChange">
             <el-radio-button>鍏ㄩ儴</el-radio-button>
-            <el-radio-button label="0">寰呮彁浜�</el-radio-button>
-            <el-radio-button label="2">寰呴�氳繃</el-radio-button>
+            <el-radio-button label="0">寰呴�氳繃</el-radio-button>
+            <el-radio-button label="2">閫氳繃</el-radio-button>
           </el-radio-group>
           <el-checkbox v-model="checked" style="margin-left: 20px"
             >浠呯湅鎴戠殑</el-checkbox
@@ -79,7 +83,7 @@
             <template slot-scope="scope">
               <span>
                 <el-tag type="warning">{{
-                  scope.row.status == 0 ? "寰呮彁浜�" : "寰呴�氳繃"
+                  scope.row.status == 0 ? "寰呴�氳繃" : "閫氳繃"
                 }}</el-tag>
               </span>
             </template></el-table-column
@@ -93,8 +97,36 @@
                 type="text"
                 size="small"
                 @click="handleClick(scope.row)"
-                >鏌ョ湅璇︾粏</el-button
-              >
+                >鏌ョ湅璇︾粏
+              </el-button>
+            <el-button  type="text" size="small" @click="checkskip = true">瀹℃牳</el-button>
+
+            <el-dialog
+              title="鍘熷璁板綍瀹℃牳"
+              :visible.sync="checkskip"
+              width="30%"
+              :before-close="handleClose">
+              <el-form :model="form">
+                <el-form-item label="璇烽�夋嫨瀹℃牳缁撴灉" :label-width="formLabelWidth">
+                </el-form-item>
+                <el-row :gutter="20">
+                  <el-col :span="6" :offset="5">
+                <!-- <el-button type="primary" style="background-color: rgb(208, 201, 192);">閫�鍥�</el-button> -->
+                <el-button style="background-color: rgb(206, 211, 216);">閫�鍥�</el-button>
+                  </el-col>
+                  <el-col :span="6" :offset="3">
+                <!-- <el-button type="primary" style="background-color: rgb(181, 237, 125);">閫氳繃</el-button> -->
+                <el-button style="background-color: rgb(192, 236, 148);">閫氳繃</el-button>
+                  </el-col>
+                </el-row>
+
+              </el-form>
+              <div slot="footer" class="dialog-footer">
+                <el-button @click="checkskip = false">鍙� 娑�</el-button>
+                <el-button type="primary" @click="checkskip= false">纭� 瀹�</el-button>
+              </div>
+            </el-dialog>
+
             </template>
           </el-table-column>
         </el-table>
@@ -127,6 +159,10 @@
       total: 0,
       pageSize: 10,
       checked: true,
+      checkskip: false,
+      form:{},
+      handleClose:'',
+      formLabelWidth: '120px'
     };
   },
   created() {
@@ -157,6 +193,10 @@
       this.checkStatus = undefined;
       this.getData();
     },
+    //瀹℃牳璺宠浆
+    // checkskip() {
+
+    // },
     // 鏌ヨ鍒楄〃
     async getData() {
       const params = {
diff --git a/src/views/laboratory/measure/index.vue b/src/views/laboratory/measure/index.vue
index eaa03d0..c32c063 100644
--- a/src/views/laboratory/measure/index.vue
+++ b/src/views/laboratory/measure/index.vue
@@ -205,67 +205,68 @@
         </el-col>
       </div>
       <el-dialog class="measureForm" title="璁¢噺" :visible.sync="dialogVisible">
-      <el-form label-position="top" ref="upmeasureForm" :model="measureUpInfo">
-        <el-row :gutter="20">
-          <el-col :span="24">
-            <el-form-item label="妫�瀹氭湁鏁堟湡" prop="date" :rules="[{ required: true, message: '璇烽�夋嫨妫�瀹氭湁鏁堟湡', trigger: 'change' }]">
-              <el-date-picker v-model="measureUpInfo.date" type="daterange" range-separator="鑷�" start-placeholder="寮�濮嬫棩鏈�"
-                end-placeholder="缁撴潫鏃ユ湡" />
-            </el-form-item>
-          </el-col>
-        </el-row>
-        <el-row :gutter="20">
-          <el-col :span="12">
-            <el-form-item label="涓嶇‘瀹氬害" prop="uncertainty"
-              :rules="[{ required: true, message: '璇峰~鍐欎笉纭畾搴�', trigger: 'blur' }]">
-              <el-input placeholder="璇峰~鍐欎笉纭畾搴�" v-model="measureUpInfo.uncertainty" />
-            </el-form-item>
-          </el-col>
-          <el-col :span="12">
-            <el-form-item label="缁撴灉" prop="result" :rules="[{ required: true, message: '璇烽�夋嫨缁撴灉', trigger: 'change' }]">
-              <el-select v-model="measureUpInfo.result" clearable filterable :allow-create="true" placeholder="璇烽�夋嫨缁撴灉"
-                style="width:100%">
-                <el-option v-for="item in result" :key="item.id" :label="item.label" :value="item.value" />
-              </el-select>
-            </el-form-item>
-          </el-col>
-        </el-row>
-        <el-row :gutter="20">
-          <el-col :span="24">
-            <el-form-item label="鎬ц兘鎸囨爣">
-              <el-input v-model="measureUpInfo.performanceIndex" type="textarea" :rows="2" placeholder="璇疯緭鍏ュ唴瀹�" />
-            </el-form-item>
-          </el-col>
-        </el-row>
-        <el-row :gutter="20">
-          <el-col :span="24">
-            <el-form-item label="澶囨敞">
-              <el-input v-model="measureUpInfo.remarks" type="textarea" :rows="2" placeholder="璇疯緭鍏ュ唴瀹�" />
-            </el-form-item>
-          </el-col>
-        </el-row>
-        <el-row :gutter="20">
-          <el-col :span="24">
-            <el-form-item label="">
-              <el-upload class="upload-demo" action="#" :on-change="handleUpload" :auto-upload="false">
-                <el-button size="small" type="primary">鐐瑰嚮涓婁紶</el-button>
-              </el-upload>
-            </el-form-item>
-          </el-col>
-        </el-row>
-      </el-form>
-      <span slot="footer" class="dialog-footer">
-        <el-button type="primary" @click="addMeasure">纭� 瀹�</el-button>
+        <el-form label-position="top" ref="upmeasureForm" :model="measureUpInfo">
+          <el-row :gutter="20">
+            <el-col :span="24">
+              <el-form-item label="妫�瀹氭湁鏁堟湡" prop="date"
+                :rules="[{ required: true, message: '璇烽�夋嫨妫�瀹氭湁鏁堟湡', trigger: 'change' }]">
+                <el-date-picker v-model="measureUpInfo.date" type="date" placeholder="閫夋嫨鏃ユ湡">
+                </el-date-picker>
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row :gutter="20">
+            <el-col :span="12">
+              <el-form-item label="涓嶇‘瀹氬害" prop="uncertainty"
+                :rules="[{ required: true, message: '璇峰~鍐欎笉纭畾搴�', trigger: 'blur' }]">
+                <el-input placeholder="璇峰~鍐欎笉纭畾搴�" v-model="measureUpInfo.uncertainty" />
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item label="缁撴灉" prop="result" :rules="[{ required: true, message: '璇烽�夋嫨缁撴灉', trigger: 'change' }]">
+                <el-select v-model="measureUpInfo.result" clearable filterable :allow-create="true" placeholder="璇烽�夋嫨缁撴灉"
+                  style="width:100%">
+                  <el-option v-for="item in result" :key="item.id" :label="item.label" :value="item.value" />
+                </el-select>
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row :gutter="20">
+            <el-col :span="24">
+              <el-form-item label="鎬ц兘鎸囨爣">
+                <el-input v-model="measureUpInfo.performanceIndex" type="textarea" :rows="2" placeholder="璇疯緭鍏ュ唴瀹�" />
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row :gutter="20">
+            <el-col :span="24">
+              <el-form-item label="澶囨敞">
+                <el-input v-model="measureUpInfo.remarks" type="textarea" :rows="2" placeholder="璇疯緭鍏ュ唴瀹�" />
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row :gutter="20">
+            <el-col :span="24">
+              <el-form-item label="">
+                <el-upload class="upload-demo" action="#" :on-change="handleUploadupdated" :auto-upload="false">
+                  <el-button size="small" type="primary">鐐瑰嚮涓婁紶</el-button>
+                </el-upload>
+              </el-form-item>
+            </el-col>
+          </el-row>
+        </el-form>
+        <span slot="footer" class="dialog-footer">
+          <el-button type="primary" @click="upMeasure">纭� 瀹�</el-button>
 
-        <el-button @click="dialogVisible=false">鍙� 娑�</el-button>
-      </span>
-    </el-dialog>
+          <el-button @click="dialogVisible = false">鍙� 娑�</el-button>
+        </span>
+      </el-dialog>
     </div>
   </div>
 </template>
 
 <script>
-import { getPlanPageList, getStandingPageList, getPlanMeasureInstrument, limitGetPlanMeasureRequest } from '@/api/laboratory/measure'
+import { getPlanPageList, getStandingPageList, getPlanMeasureInstrument, limitGetPlanMeasureRequest, updateMetricalInformationInfo } from '@/api/laboratory/measure'
 import { default as Add } from "./Add.vue";
 export default {
   components: {
@@ -275,13 +276,16 @@
     return {
       dialogVisible: false,
       tableIndex: null,
-      measureUpInfo:{
+      measureUpInfo: {
+        id: null,
+        code: null,
         result: null,
         date: null,
         uncertainty: null,
         performanceIndex: null,
         remarks: null,
-        file: null
+        file: null,
+        termValidity: null
       },
       result: [{
         label: '鍚堟牸',
@@ -335,15 +339,35 @@
     // this.getPlanPageList()
   },
   methods: {
-    upResult(){
-        this.measureData[this.tableIndex].result=this.resultUp
-        
+    upResult() {
+      this.measureData[this.tableIndex].result = this.resultUp
+
+    },
+    async upMeasure() {
+      let res = await updateMetricalInformationInfo(this.measureUpInfo)
+      if (res) {
+        this.$message({
+          message: '鎿嶄綔鎴愬姛锛�',
+          type: 'success'
+        });
+        this.limitGetPlanMeasureInstrument()
+        this.dialogVisible = false
+      }
+    },
+    handleUploadupdated() {
+
     },
     measureUp(scope) {
-      console.log(scope);
       this.dialogVisible = true
-      this.tableIndex=scope.$index
-      this.measureUpInfo.result=scope.row.result
+      this.tableIndex = scope.$index
+      this.measureUpInfo.result = scope.row.result
+      this.measureUpInfo.code = scope.row.code
+      this.measureUpInfo.date = scope.row.endDate
+      this.measureUpInfo.id = scope.row.imId
+      this.measureUpInfo.uncertainty = scope.row.uncertainty
+      this.measureUpInfo.performanceIndex = scope.row.performanceIndex
+      this.measureUpInfo.remarks = scope.row.remarks
+      this.measureUpInfo.termValidity = scope.row.termValidity
     },
     measureAdd() {
       let add = this.$refs.add.add()
@@ -357,7 +381,6 @@
       }
     },
     async handleSizeChangePlan(num) {
-      console.log(num);
       this.pageSizePlan = num
       await this.limitGetPlanMeasureInstrument()
     },
@@ -376,7 +399,6 @@
         currentPage: this.currentPagePlan,
         pageSize: this.pageSizePlan
       }
-      console.log(param);
       let res = await limitGetPlanMeasureRequest(param)
       this.totalPlan = res.data.taotal
       this.measureData = res.data.list
@@ -390,7 +412,6 @@
     },
     async getPlanAndInfoAndIns(id) {
       let res = await getPlanMeasureInstrument({ "id": id, "currentPage": this.currentPagePlan, "pageSize": this.pageSize });
-      console.log(res);
       for (const key in res.data.list) {
         this.planInfo[key] = res.data.list[key]
       }
@@ -411,7 +432,6 @@
     },
     blurSearch() {
       if (this.radioValue === 1) {
-        console.log("璁″垝");
       }
     },
     handleClose() {
@@ -430,7 +450,6 @@
         currentPage: this.currentPage, pageSize: this.pageSize,
         code: this.searchData.code, name: this.searchData.name, unit: this.searchData.measureunit
       }
-      console.log(param);
       const res = await getStandingPageList(param)
       this.measureLedgerTable = res.data.records
       this.total = res.data.total
@@ -478,7 +497,6 @@
         currentPage: this.currentPage, pageSize: this.pageSize,
         code: this.searchData.code, name: this.searchData.name, unit: this.searchData.measureunit
       }
-      console.log(param);
       const res = await getPlanPageList(param)
       res.data.list.forEach(item => {
         item.palanDate = item.beginTime + " ~ " + item.endTime
@@ -487,7 +505,6 @@
       this.total = res.data.total
     },
     async lookMeasurement(code) {
-      console.log(code);
     },
   }
 }
diff --git a/src/views/message/message/index.vue b/src/views/message/message/index.vue
index ba69703..5e272a3 100644
--- a/src/views/message/message/index.vue
+++ b/src/views/message/message/index.vue
@@ -1,13 +1,253 @@
 <template>
-  <div>娑堟伅</div>
+  <div class="content-main">
+    <div class="top-bar">
+      <el-form ref="form" :inline="true" :model="searchData">
+              <el-form-item label="鏍囬:" class="sermargin">
+                <el-input
+                  v-model="searchData.title"
+                  class="input-form"
+                  placeholder="璇疯緭鍏ユ爣棰�"
+                >
+                </el-input>
+              </el-form-item>
+              <el-form-item label="鍐呭:" style="margin-right: 30px;">
+                <el-input
+                  v-model="searchData.content"
+                  class="input-form"
+                  placeholder="璇疯緭鍏ュ唴瀹�"
+                >
+                </el-input>
+              </el-form-item>
+              <el-form-item>
+                <el-button type="primary" @click="search">鏌ヨ</el-button>
+                <el-button type="primary" plain @click="reset">閲嶇疆</el-button>
+              </el-form-item>
+              </el-form>
+              <el-form>
+                <el-button class="deleteBtn" plain type="primary" @click="deleteMessage" >鍒犻櫎</el-button>
+                <el-button type="primary" @click="readMessage" style="width: 110px;" >鏍囦负宸茶</el-button>
+              </el-form>
+    </div>
+    <div class="library-table">
+      <div class="table-header">
+        <el-radio-group v-model="radioValue" @change="radioclick">
+          <el-radio-button v-for="item in conditionsOptions" :key="item.value" :label="item.value">
+            {{ item.label }}
+          </el-radio-button>
+        </el-radio-group>
+      </div>
+      <div class="table-box">
+        <el-table
+                ref="messageTable"
+                :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="messageTable"
+                @selection-change="handleSelectionChange"
+                style="width: 100%"
+              >
+                <el-table-column
+                  type="selection"
+                  min-width="10%"
+                />
+                <el-table-column
+                  prop="title"
+                  label="鏍囬"
+                  min-width="12%"
+                />
+                <el-table-column
+                  prop="content"
+                  label="鍐呭"
+                  min-width="12%"
+                />
+                <el-table-column
+                  prop="level"
+                  label="绛夌骇"
+                  min-width="12%"
+                />
+                <el-table-column
+                  prop="type"
+                  label="绫诲瀷"
+                  min-width="8%"
+                />
+                <el-table-column
+                  prop="state"
+                  label="鐘舵��"
+                  min-width="12%">
+                  <template slot-scope="scope">
+                    <span v-if="scope.row.state === 1" style="color: red;">鏈</span>
+                    <span v-if="scope.row.state === 2" style="color: green;">宸茶</span>
+                  </template>
+                </el-table-column>
+                <el-table-column
+                  prop="sender"
+                  label="鍙戜欢浜�"
+                  min-width="8%"
+                />
+                <el-table-column
+                  prop="create_time"
+                  label="鍒涘缓鏃堕棿"
+                  min-width="12%"
+                />
+                <el-table-column
+                  label="鎿嶄綔"
+                  min-width="10%"
+                >
+                  <template slot-scope="scope">
+                    <el-button type="text" size="small" @click="deleteRow(scope.row)">鍒犻櫎</el-button>
+                    <el-button type="text" size="small" @click="readRow(scope.row)">鏍囦负宸茶</el-button>
+                  </template>
+                </el-table-column>
+              </el-table>
+              <!-- 鍒嗛〉鍣� -->
+              <div>
+                <el-pagination
+                  @size-change="handleSizeChange"
+                  @current-change="handleCurrentChange"
+                  :current-page="currentPage"
+                  :page-sizes="[5, 10, 15, 20]"
+                  :page-size="pageSize"
+                  layout="total, sizes, prev, pager, next, jumper"
+                  :total="total">
+                </el-pagination>
+              </div>
+      </div>
+
+    </div>
+
+  </div>
 </template>
 
 <script>
 export default {
+  data(){
+    return {
+      searchData: {
+        title: '',
+        content: ''
+      },
+      radioValue: 0,
+      conditionsOptions: [
+        {
+          label: '鍏ㄩ儴',
+          value: 0
+        },
+        {
+          label: '鏈',
+          value: 1
+        },
+        {
+          label: '宸茶',
+          value: 2
+        }
+      ],
+      selectionRows:[],
+      messageTable:[],
+      currentPage:1,
+      pageSize: 5,
+      total:10,
+
+    }
+  },
+  created(){
+
+  },
+  methods: {
+    deleteMessage(){
+      console.log(this.selectionRows)
+    },
+    readMessage(){
+      console.log(this.selectionRows)
+    },
+    // 鎹曡幏琛ㄦ牸閫夋嫨鐨勬暟鎹�
+    handleSelectionChange(selection){
+      this.selectionRows = selection
+    },
+    // 鏍囪宸茶
+    readRow(row){
+      console.log(row)
+    },
+    // 鍒犻櫎
+    deleteRow(row){
+      console.log(row)
+    },
+    radioclick(){
+      console.log(this.radioValue)
+    },
+    handleSizeChange(val){
+      console.log(`褰撳墠姣忛〉${val}鏉℃暟鎹甡)
+    },
+    handleCurrentChange(val){
+      console.log(`褰撳墠鏄${val}椤礰)
+    }
+  }
 
 }
 </script>
 
 <style lang="scss" scoped>
+.content-main{
+  width: 100%;
+  .top-bar{
+    margin: -25px -15px;
+    padding: 5px 24px 0px 24px;
+    display: flex;
+    justify-content: space-between;
+    background-color: #fff;
+    .sermargin{
+      margin-right: 60px;
+    }
+    .deleteBtn{
+      background-color: #fff;
+      border: 1px solid rgb(225, 222, 222);
+      color: rgb(184, 182, 182);
+    }
+    .deleteBtn:active {
+      outline: none;  /* 鍘婚櫎鎸夐挳鐨勯粯璁ょ偣鍑绘椂鐨勫杈规 */
+      box-shadow: 0 0 4px rgb(142, 141, 141);  /* 娣诲姞鐐瑰嚮鏃剁殑闃村奖鏁堟灉锛岄鑹茶涓虹伆鑹� */
+    }
+    .deleteBtn:hover {
+      outline: none;  /* 鍘婚櫎鎸夐挳鐨勯粯璁ょ偣鍑绘椂鐨勫杈规 */
+      background-color: rgb(233, 233, 233);  /* 娣诲姞鐐瑰嚮鏃剁殑闃村奖鏁堟灉锛岄鑹茶涓虹伆鑹� */
+    }
+    .deleteBtn:focus {
+      outline: none;  /* 鍘婚櫎鎸夐挳鐨勯粯璁ょ偣鍑绘椂鐨勫杈规 */
+      background-color: rgb(233, 233, 233);  /* 娣诲姞鐐瑰嚮鏃剁殑闃村奖鏁堟灉锛岄鑹茶涓虹伆鑹� */
+    }
+  }
+  .library-table{
+      background-color: #fff;
+      flex: 1;
+      margin: 0px -15px;
+      margin-top: 40px;
+      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: 0px;
+          flex: 1;
+          background: #fff;
+          /* padding: 20px 20px 10px 20px; */
+          display: flex;
+          flex-direction: column;
+          .el-table {
+            flex: 1;
+          }
+          >div:nth-child(2){
+            display: flex;
+            justify-content: end;
+            margin: 10px 0;
+          }
+      }
+    }
+}
 
 </style>
diff --git a/src/views/message/toDo/index.vue b/src/views/message/toDo/index.vue
index 135a43e..ca3ef41 100644
--- a/src/views/message/toDo/index.vue
+++ b/src/views/message/toDo/index.vue
@@ -1,13 +1,235 @@
 <template>
-  <div>寰呭姙</div>
+  <div class="content-main">
+    <div class="top-bar">
+      <el-form ref="form" :inline="true" :model="searchData">
+              <el-form-item label="鏍囬:" class="sermargin">
+                <el-input
+                  v-model="searchData.title"
+                  class="input-form"
+                  placeholder="璇疯緭鍏ユ爣棰�"
+                >
+                </el-input>
+              </el-form-item>
+              <el-form-item label="鍐呭:" style="margin-right: 30px;">
+                <el-input
+                  v-model="searchData.content"
+                  class="input-form"
+                  placeholder="璇疯緭鍏ュ唴瀹�"
+                >
+                </el-input>
+              </el-form-item>
+              <el-form-item>
+                <el-button type="primary" @click="search">鏌ヨ</el-button>
+                <el-button type="primary" plain @click="reset">閲嶇疆</el-button>
+              </el-form-item>
+              </el-form>
+              <el-form>
+                <el-button class="deleteBtn" plain type="primary" @click="deleteMessage" >鍒犻櫎</el-button>
+                <el-button type="primary" @click="readMessage" style="width: 110px;" >鏍囦负宸茶</el-button>
+              </el-form>
+    </div>
+    <div class="library-table">
+      <div class="table-header">
+        <el-radio-group v-model="radioValue" @change="radioclick">
+          <el-radio-button v-for="item in conditionsOptions" :key="item.value" :label="item.value">
+            {{ item.label }}
+          </el-radio-button>
+        </el-radio-group>
+      </div>
+      <div class="table-box">
+        <el-table
+                ref="toDoTable"
+                :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="toDoTable"
+                @selection-change="handleSelectionChange"
+                style="width: 100%"
+              >
+                <el-table-column
+                  prop="sender"
+                  label="鍙戜欢浜�"
+                  min-width="8%"
+                />
+                <el-table-column
+                  prop="title"
+                  label="鏍囬"
+                  min-width="13%"
+                />
+                <el-table-column
+                  prop="todo"
+                  label="浠e姙鍐呭"
+                  min-width="20%"
+                />
+                <el-table-column
+                  prop="group"
+                  label="鍒嗙粍"
+                  min-width="15%"
+                />
+                <el-table-column
+                  prop="level"
+                  label="绛夌骇"
+                  min-width="8%"
+                />
+                <el-table-column
+                  prop="create_time"
+                  label="鍒涘缓鏃堕棿"
+                  min-width="12%"
+                />
+                <el-table-column
+                  prop="deadline"
+                  label="瑕佹眰瀹屾垚鏃堕棿"
+                  min-width="12%"
+                />
+                <el-table-column
+                  prop="state"
+                  label="鐘舵��"
+                  min-width="12%"
+                />
+              </el-table>
+              <!-- 鍒嗛〉鍣� -->
+              <div>
+                <el-pagination
+                  @size-change="handleSizeChange"
+                  @current-change="handleCurrentChange"
+                  :current-page="currentPage"
+                  :page-sizes="[5, 10, 15, 20]"
+                  :page-size="pageSize"
+                  layout="total, sizes, prev, pager, next, jumper"
+                  :total="total">
+                </el-pagination>
+              </div>
+
+      </div>
+
+    </div>
+
+  </div>
 </template>
 
 <script>
 export default {
+  data(){
+    return {
+      searchData: {
+        title: '',
+        content: ''
+      },
+      radioValue: 0,
+      conditionsOptions: [
+        {
+          label: '鍏ㄩ儴',
+          value: 0
+        },
+        {
+          label: '鏈鐞�',
+          value: 1
+        },
+        {
+          label: '宸插鐞�',
+          value: 2
+        },
+        {
+          label: '宸茶秴鏈�',
+          value: 3
+        }
+      ],
+      toDoTable:[],
+      selectionRows:[],
+      currentPage:1,
+      pageSize: 5,
+      total:100,
+
+    }
+  },
+  methods: {
+    deleteMessage(){
+      console.log(this.selectionRows)
+    },
+    readMessage(){
+      console.log(this.selectionRows)
+    },
+    // 鎹曡幏琛ㄦ牸閫夋嫨鐨勬暟鎹�
+    handleSelectionChange(selection){
+      this.selectionRows = selection
+    },
+    radioclick(){
+      console.log(this.radioValue)
+    },
+    handleSizeChange(val){
+      console.log(`褰撳墠姣忛〉${val}鏉℃暟鎹甡)
+    },
+    handleCurrentChange(val){
+      console.log(`褰撳墠鏄${val}椤礰)
+    }
+  }
 
 }
 </script>
 
 <style lang="scss" scoped>
+.content-main{
+  width: 100%;
+  .top-bar{
+    margin: -25px -15px;
+    padding: 5px 24px 0px 24px;
+    display: flex;
+    justify-content: space-between;
+    background-color: #fff;
+    .sermargin{
+      margin-right: 60px;
+    }
+    .deleteBtn{
+      background-color: #fff;
+      border: 1px solid rgb(225, 222, 222);
+      color: rgb(184, 182, 182);
+    }
+    .deleteBtn:active {
+      outline: none;  /* 鍘婚櫎鎸夐挳鐨勯粯璁ょ偣鍑绘椂鐨勫杈规 */
+      box-shadow: 0 0 4px rgb(142, 141, 141);  /* 娣诲姞鐐瑰嚮鏃剁殑闃村奖鏁堟灉锛岄鑹茶涓虹伆鑹� */
+    }
+    .deleteBtn:hover {
+      outline: none;  /* 鍘婚櫎鎸夐挳鐨勯粯璁ょ偣鍑绘椂鐨勫杈规 */
+      background-color: rgb(233, 233, 233);  /* 娣诲姞鐐瑰嚮鏃剁殑闃村奖鏁堟灉锛岄鑹茶涓虹伆鑹� */
+    }
+    .deleteBtn:focus {
+      outline: none;  /* 鍘婚櫎鎸夐挳鐨勯粯璁ょ偣鍑绘椂鐨勫杈规 */
+      background-color: rgb(233, 233, 233);  /* 娣诲姞鐐瑰嚮鏃剁殑闃村奖鏁堟灉锛岄鑹茶涓虹伆鑹� */
+    }
+  }
+  .library-table{
+      background-color: #fff;
+      flex: 1;
+      margin: 0px -15px;
+      margin-top: 40px;
+      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: 0px;
+          flex: 1;
+          background: #fff;
+          /* padding: 20px 20px 10px 20px; */
+          display: flex;
+          flex-direction: column;
+          .el-table {
+            flex: 1;
+          }
+          >div:nth-child(2){
+            display: flex;
+            justify-content: end;
+            margin: 10px 0;
+          }
+      }
+    }
+}
 
 </style>
diff --git a/src/views/standardLibrary/index.vue b/src/views/standardLibrary/index.vue
index 7e30213..11a71b7 100644
--- a/src/views/standardLibrary/index.vue
+++ b/src/views/standardLibrary/index.vue
@@ -1,15 +1,12 @@
 <template>
   <div class="standard-library-main">
     <div class="content-main">
-      <div class="library-bom" style="width: 300px;">
-        <el-input
-          v-model="filterText"
-          placeholder="杈撳叆鍏抽敭瀛楄繘琛岃繃婊�"
-        />
+      <div class="library-bom" style="width: 300px">
+        <el-input v-model="filterText" placeholder="杈撳叆鍏抽敭瀛楄繘琛岃繃婊�" />
         <el-button type="text">鍏ㄩ儴</el-button>
         <el-tree
           ref="tree"
-          style="width: 100%;"
+          style="width: 100%"
           class="filter-tree"
           :data="standardTree"
           :props="defaultProps"
@@ -21,11 +18,12 @@
           @node-click="nodeClick"
         />
       </div>
-      <div class="library-table" style="width: 80%;">
+      <div class="library-table" style="width: 80%">
         <div class="table-header">
           <div class="search-bar">
             <el-form ref="form" :inline="true" :model="searchData">
               <el-form-item>
+                <span>鍘熸潗鏂欑紪鐮侊細</span>
                 <el-input
                   v-model="searchData.keyword"
                   placeholder="璇疯緭鍏ヤ汉鍛樺悕绉�/鍘熸潗鏂欏悕绉�"
@@ -34,59 +32,116 @@
                 </el-input>
               </el-form-item>
               <el-form-item>
-                <el-button type="primary" @click="filteredTableData">鏌ヨ</el-button>
-                <el-button type="primary" plain @click="resetBtn">閲嶇疆</el-button>
+                <span>鍘熸潗鏂欏悕绉帮細</span>
+                <el-input
+                  v-model="searchData.keyword"
+                  placeholder="璇疯緭鍏ュ師鏉愭枡鍚嶇О"
+                >
+                  <i slot="prefix" class="el-input__icon el-icon-search" />
+                </el-input>
+              </el-form-item>
+              <el-form-item>
+                <el-button type="primary" @click="filteredTableData"
+                  >鏌ヨ</el-button
+                >
+                <el-button type="primary" plain @click="resetBtn"
+                  >閲嶇疆</el-button
+                >
               </el-form-item>
             </el-form>
           </div>
           <div class="serve-btn">
-            <el-button type="primary" icon="el-icon-plus" @click="addTreeFormVisible = true">鏂板</el-button>
+            <el-button
+              type="primary"
+              icon="el-icon-plus"
+              @click="addTreeFormVisible = true"
+              >鏂板</el-button
+            >
+            <el-button
+              class="top_div_button"
+              icon="el-icon-delete-solid"
+              size="small"
+              style="color: #00a5ff"
+              @click="deleteListClick"
+              >鍒犻櫎</el-button
+            >
           </div>
         </div>
         <div class="table-box">
-          <el-table
+          <!-- <el-table
             ref="tableData"
             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'}"
+            :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="搴忓彿"
-              width="100px"
-            >
-              <template v-if="scope.row.index+1" slot-scope="scope">
-                {{ scope.row.index+1 }}
+            <el-table-column type="index" label="搴忓彿" width="100px">
+              <template v-if="scope.row.index + 1" slot-scope="scope">
+                {{ scope.row.index + 1 }}
               </template>
             </el-table-column>
-            <el-table-column
-              prop="father"
-              label="鍚嶇О"
-              width="320px"
-            >
+            <el-table-column 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 }}
+                <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" />
+            <el-table-column prop="required" label="鏍囧噯" width="300px" />
+            <el-table-column prop="internal" label="鍐呮帶鍒�" width="300px" />
+          </el-table> -->
+          <el-table
+            :data="tableData"
+            style="width: 100%; margin-bottom: 20px"
+            row-key="name"
+            border
+            height="calc(100vh - 250px)"
+            default-expand-all
+            ref="multipleTable"
+            @select="selectTr"
+            @select-all="selectAll"
+            :tree-props="{ children: 'children', hasChildren: 'hasChildren' }"
+          >
+            <el-table-column type="selection" label="搴忓彿"> </el-table-column>
+            <el-table-column
+              type="index"
+              width="50px"
+              label="搴忓彿"
+            ></el-table-column>
+            <el-table-column label="椤圭洰鍚嶇О" sortable>
+              <template scope="scope">
+                <el-tag
+                  ><div
+                    class="firstDiv"
+                    :style="`color: ${
+                      scope.row.code == '[1]' ? '#16a7ff' : '#58c173'
+                    }`"
+                  >
+                    {{ scope.row.code == "[1]" ? "01" : "02" }}
+                  </div>
+                  <span style="color: black">{{ scope.row.name }}</span></el-tag
+                >
               </template>
             </el-table-column>
             <el-table-column
               prop="unit"
               label="鍗曚綅"
-              width="300px"
-            />
-            <el-table-column
-              prop="required"
-              label="鏍囧噯"
-              width="300px"
-            />
-            <el-table-column
-              prop="internal"
-              label="鍐呮帶鍒�"
-              width="300px"
-            />
+              sortable
+            ></el-table-column>
           </el-table>
           <!-- 寮瑰嚭琛ㄥ崟椤� -->
           <div>
@@ -94,7 +149,7 @@
           </div>
           <div>
             <!-- 鍒嗛〉鍣� -->
-            <el-pagination
+            <!-- <el-pagination
               :current-page="pageParams.pageNo"
               :page-sizes="[10, 15, 20, 25]"
               :page-size="pageParams.pageSize"
@@ -102,29 +157,44 @@
               :total="pageParams.total"
               @size-change="handleSizeChange"
               @current-change="handleCurrentChange"
-            />
+            /> -->
           </div>
         </div>
       </div>
     </div>
-    <el-dialog class="addTree" title="娣诲姞鎸囨爣" width="28%" :visible.sync="addTreeFormVisible" @close="closeAddTreeForm">
+    <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 }"
+            :props="{ ...defaultProps, checkStrictly: true }"
             clearable
             @change="changeCascader"
           />
         </el-form-item>
-        <el-form-item v-show="addTreeForm.addTypeArr.length<2" label="鐗╂枡鍚嶇О">
+        <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-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-form-item
+          v-show="addTreeForm.addTypeArr.length < 4"
+          label="瑙勬牸鍨嬪彿"
+        >
           <el-input v-model="addTreeForm.specificationsName" />
         </el-form-item>
       </el-form>
@@ -137,99 +207,110 @@
 </template>
 
 <script>
-import { getMaterialList, getProductList, getProductSonList,
-  addMaterial, addStandards, addSpecifications
-} from '@/api/standardLibrary'
+import {
+  getMaterialList,
+  getProductList,
+  getProductSonList,
+  addMaterial,
+  addStandards,
+  addSpecifications,
+  deleteListApi,
+} from "@/api/standardLibrary";
+
+import { selectproductModelApi } from "@/api/basicData/index";
 export default {
   data() {
     return {
+      deleteList: [],
       addTreeFormVisible: false,
-      filterText: '',
+      filterText: "",
       // 鏍囧噯搴揵om鏍�
       standardTree: [],
       // bom鐨�,榛樿閰嶇疆鍊�
       defaultProps: {
-        children: 'children',
-        label: 'name',
-        value: 'id'
+        children: "children",
+        label: "name",
+        value: "id",
       },
       // 鏌ヨ鏉′欢
       searchData: {
-        keyword: ''
+        keyword: "",
       },
-      tableData: [
-      ],
+      tableData: [],
       oldtableData: [],
       // 鍒嗛〉鍙傛暟
       pageParams: {
         pageNo: 1,
         pageSize: 12,
-        total: 0
+        total: 0,
       },
-      tablespecifications: [
-      ],
+      tablespecifications: [],
       // 閫変腑鐨勮妭鐐规暟鎹�
       selectData: {},
       formTypeOptions: [],
       addTreeForm: {
-        addTypeArr: []
-      }
-    }
+        addTypeArr: [],
+      },
+    };
   },
   watch: {
     filterText(val) {
-      this.$refs.tree.filter(val)
-    }
+      this.$refs.tree.filter(val);
+    },
   },
   created() {
-    this.getStandardTree()
+    this.getStandardTree();
   },
   methods: {
     filterNode(value, data) {
-      if (!value) return true
-      return data.label.indexOf(value) !== -1
+      if (!value) return true;
+      return data.label.indexOf(value) !== -1;
     },
     // 鑾峰彇bom鏍戠殑鏍囧噯鏁版嵁
     async getStandardTree() {
-      const { data } = await getMaterialList()
-      console.log(data)
-      this.standardTree = data.map(item => {
-        let name = null
+      const { data } = await getMaterialList();
+      console.log(data);
+      this.standardTree = data.map((item) => {
+        let name = null;
         switch (item.type) {
           case 1:
-            name = '鍘熸潗鏂�'
-            break
+            name = "鍘熸潗鏂�";
+            break;
           case 2:
-            name = '鍗婃垚鍝�'
-            break
+            name = "鍗婃垚鍝�";
+            break;
           case 3:
-            name = '鎴愬搧'
-            break
+            name = "鎴愬搧";
+            break;
         }
         return {
-          ...item, id: item.type, name
-        }
-      })
-      console.log(this.standardTree)
+          ...item,
+          id: item.type,
+          name,
+        };
+      });
+      console.log(this.standardTree);
       // formTypeOptions
       // 榛樿绗竴涓洓绾ц妭鐐规悳绱紝鏂板閰嶇疆椤�
-      const treeOptions = JSON.parse(JSON.stringify(this.standardTree))
-      this.getDefault(treeOptions, 0)
-      console.log(treeOptions)
-      this.formTypeOptions = treeOptions
+      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()
+        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)
+          // 鏈夊瓙鑺傜偣
+          this.getDefault(item.children, index + 1);
           if (index === 2) {
-            item.children = null
+            item.children = null;
           }
         }
         // else {
@@ -247,117 +328,138 @@
       // console.log('children' in data)
       // 鏄瓙鑺傜偣
       if (node.level === 4) {
-        // console.log(data, node)
+        console.log(data, node);
         // 瀛樹笅閫変腑鑺傜偣
-        this.selectData = data
+        this.selectData = data;
         // eslint-disable-next-line prefer-const
-        this.getTableByClick(data)
+        this.getTableByClick(data);
       }
-      if (!('children' in data)) {
-        return
+      if (!("children" in data)) {
+        return;
       }
     },
     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 })
+      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 }))
+      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
+          const res = await getProductSonList({ fatherName: item.father });
+          item.children = res.data;
+          item.id = item.father;
         }
       }
-      this.tableData = row
+      this.tableData = row;
     },
     specificationDetails(row) {
       // 璺宠浆浜у搧瑙勬牸璇︽儏椤�
-      this.$router.push(`/standardLibrary/SpecificationDetails/${row.id}`)
+      this.$router.push(`/standardLibrary/SpecificationDetails/${row.id}`);
     },
     handleSizeChange(val) {
-      console.log(`姣忛〉 ${val} 鏉)
-      this.pageParams.pageSize = val
-      this.getTableByClick(this.selectData)
+      console.log(`姣忛〉 ${val} 鏉);
+      this.pageParams.pageSize = val;
+      this.getTableByClick(this.selectData);
     },
     handleCurrentChange(val) {
-      console.log(`褰撳墠椤�: ${val}`)
-      this.pageParams.pageNo = val
-      this.getTableByClick(this.selectData)
+      console.log(`褰撳墠椤�: ${val}`);
+      this.pageParams.pageNo = val;
+      this.getTableByClick(this.selectData);
     },
     // 鏌ヨ鎸夐挳
     filteredTableData() {
-      this.oldtableData = this.tableData
+      this.oldtableData = this.tableData;
       // 鏍规嵁杈撳叆鐨勫叧閿瓧寰楀埌杩囨护鍚庣殑鏁版嵁锛屽鏋滄湁灏辨妸杩囨护鍚庣殑鏁版嵁灞曠ず鍦ㄩ〉闈笂
-      const filteredtabledata = this.tableData.filter(item => {
-        return item.name.includes(this.searchData.keyword)
-      })
+      const filteredtabledata = this.tableData.filter((item) => {
+        return item.name.includes(this.searchData.keyword);
+      });
       // console.log('filteredtabledata', filteredtabledata)
-      this.tableData = filteredtabledata
+      this.tableData = filteredtabledata;
     },
     // 閲嶇疆鎸夐挳
     resetBtn() {
-      this.searchData.keyword = ''
-      this.tableData = this.oldtableData
+      this.searchData.keyword = "";
+      this.tableData = this.oldtableData;
     },
     renderContent(h, { node, data, store }) {
       // console.log('data', data)
       // console.log('node', node)
       // 鍒ゆ柇鏄惁鏄埗鑺傜偣鎴栨枃浠跺す
-      const isFolder = ('children') in data
+      const isFolder = "children" in data;
       return (
-        <span class='tree-node'>
+        <span class="tree-node">
           {isFolder ? (
             <i
-              class={node.expanded ? 'el-icon-folder-opened blue-folder' : 'el-icon-folder blue-folder'}
+              class={
+                node.expanded
+                  ? "el-icon-folder-opened blue-folder"
+                  : "el-icon-folder blue-folder"
+              }
             ></i>
           ) : (
-            <i class='el-icon-document blue-folder'></i>
+            <i class="el-icon-document blue-folder"></i>
           )}
-          <div class='tree-lable'>[{node.level}]  {data.name}</div>
+          <div class="tree-lable">
+            [{node.level}] {data.name}
+          </div>
         </span>
-      )
+      );
     },
     async subAddTreeForm() {
-      this.addTreeFormVisible = false
-      console.log(this.addTreeForm.addTypeArr.length)
-      let res = null
+      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
+            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
+            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
+            console.log(this.addTreeForm);
+            res = await addSpecifications({
+              ...this.addTreeForm,
+              standardId: this.addTreeForm.addTypeArr.pop(),
+            });
+            break;
         }
       } catch (error) {
-        this.$message.error('娣诲姞澶辫触')
+        this.$message.error("娣诲姞澶辫触");
       }
 
-      console.log(res)
-      this.$message.success('娣诲姞鎴愬姛')
-      this.addTreeForm = {}
-      this.getStandardTree()
-      this.getTableByClick(this.selectData)
+      console.log(res);
+      this.$message.success("娣诲姞鎴愬姛");
+      this.addTreeForm = {};
+      this.getStandardTree();
+      this.getTableByClick(this.selectData);
     },
     changeCascader(data) {
-      console.log(data)
-      this.addTreeForm.addTypeArr = data
+      console.log(data);
+      this.addTreeForm.addTypeArr = data;
     },
     closeAddTreeForm() {
       this.addTreeForm = {
-        addTypeArr: []
-      }
-      console.log(this.addTreeForm)
-    }
+        addTypeArr: [],
+      };
+      console.log(this.addTreeForm);
+    },
     /** 琛ㄦ牸鏌愯鐐瑰嚮浜嬩欢 */
     // handleRowClick(row, column, event) {
     //   // 鍒ゆ柇褰撳墠琛屾槸鍚︽湁瀛愰泦锛岃嫢娌℃湁鍒欑粨鏉熷鐞�
@@ -365,15 +467,140 @@
     //   if (!row.children) return
     //   this.$refs.tableData.toggleRowExpansion(row)
     // }
-  }
-}
+    selectProductModelTable() {
+      selectproductModelApi(this.params).then((res) => {
+        res.data.forEach((i) => {
+          if (i.name === undefined) {
+            i.name = i.children[0].name;
+            i.unit = i.children[0].unit;
+            i.id = i.children[0].id;
+            i.edit = true;
+            delete i.children;
+          }
+        });
+        this.tableData = res.data;
+        this.selectDataList();
+      });
+    },
+    selectDataList() {
+      this.tableData.forEach((a) => {
+        a.code = "[1]";
+        if (a.children != undefined) {
+          a.children.forEach((b) => {
+            b.code = "[2]";
+          });
+        }
+      });
+    },
+    // 琛ㄦ牸鏍戝叏閮ㄩ�変腑閰嶇疆
+    // 鍏ㄩ��/鍙栨秷閫夋搷浣�
+    selectAll(val) {
+      this.isAllSelect = !this.isAllSelect;
+      let data = this.tableData;
+      this.toggleSelect(data, this.isAllSelect, "all");
+      // 鑷畾涔�
+      if (this.isAllSelect) {
+        val.forEach((i) => {
+          let isExist = false;
+          this.deleteList.findIndex((c) => {
+            if (c === i.id) {
+              isExist = true;
+            }
+          });
+          if (!isExist && i.id !== undefined) {
+            this.deleteList.push(i.id);
+          }
+        });
+      } else {
+        this.deleteList.splice(0, this.deleteList.length);
+      }
+      // 鑷畾涔夌粨鏉�
+    },
+    //閫夋嫨鏌愯
+    selectTr(selection, row) {
+      this.$set(row, "isChecked", !row.isChecked);
+      this.$nextTick(() => {
+        this.isAllSelect = row.isChecked;
+        this.toggleSelect(row, row.isChecked, "tr");
+      });
+
+      if (row.isChecked === true) {
+        if (row.children !== undefined) {
+          row.children.forEach((i) => {
+            this.deleteList.push(i.id);
+          });
+        } else {
+          this.deleteList.push(row.id);
+        }
+      } else if (row.isChecked === false) {
+        if (row.children !== undefined) {
+          row.children.forEach((i) => {
+            this.deleteList.findIndex((c, index) => {
+              if (c === i.id) {
+                this.deleteList.splice(index, 1);
+                return;
+              }
+            });
+          });
+        }
+        this.deleteList.findIndex((c, index) => {
+          if (c === row.id) {
+            this.deleteList.splice(index, 1);
+            return;
+          }
+        });
+      }
+    },
+    //閫掑綊瀛愮骇
+    toggleSelect(data, flag, type) {
+      if (type === "all") {
+        if (data.length > 0) {
+          data.forEach((item) => {
+            this.toggleSelection(item, flag);
+            if (item.children && item.children.length > 0) {
+              this.toggleSelect(item.children, flag, type);
+            }
+          });
+        }
+      } else {
+        if (data.children && data.children.length > 0) {
+          data.children.forEach((item) => {
+            item.isChecked = !item.isChecked;
+            this.$refs.multipleTable.toggleRowSelection(item, flag);
+            this.toggleSelect(item, flag, type);
+          });
+        }
+      }
+    },
+    //鏀瑰彉閫変腑
+    toggleSelection(row, flag) {
+      this.$set(row, "isChecked", flag);
+      this.$nextTick(() => {
+        if (flag) {
+          this.$refs.multipleTable.toggleRowSelection(row, flag);
+        } else {
+          this.$refs.multipleTable.clearSelection();
+        }
+      });
+    },
+    // 琛ㄦ牸鏍戝叏閮ㄩ�変腑閰嶇疆  缁撴潫
+    deleteListClick() {
+      deleteListApi(this.deleteList).then((res) => {
+        this.$message({
+          message: res.message,
+          type: "success",
+        });
+        this.selectProductModelTable();
+      });
+    },
+  },
+};
 </script>
 
 <style lang="scss" scoped>
-
 // el-table琛ㄦ牸瀵归綈
 ::v-deep .el-table__row:not([class*="el-table__row--level-"]) {
-  td:nth-child(2){
+  td:nth-child(2) {
     padding-left: 23px !important;
   }
 }
@@ -384,49 +611,50 @@
 //   width: 1000px;
 //   height: 800px;
 // }
-.standard-library-main{
+.standard-library-main {
   width: 100vh;
   height: 100%;
-// 椤甸潰涓績鍐呭鍖哄煙
-  .content-main{
+  // 椤甸潰涓績鍐呭鍖哄煙
+  .content-main {
     display: flex;
     height: 100%;
     min-height: calc(100vh - 88px);
     max-height: calc(100vh - 88px);
     padding: 15px;
-    >div{
+    > div {
       padding: 20px;
       background: #fff;
     }
-    .library-bom{
+    .library-bom {
       // padding-right: 10px;
       width: 300px;
-      // height: 100%;
-      max-height: 100%;
+      height: 100%;
+      // max-height: 100%;
       // margin-right: 12px;
       // overflow-y: scroll;
       .el-tree {
-        // margin-top: 
+        // margin-top:
         width: 100%;
-        ::v-deep .el-tree-node__content{
+        overflow: scroll;
+        ::v-deep .el-tree-node__content {
           height: 24px !important;
           font-size: 18px;
           // display: inline-block !important;
           padding: 2px;
           // color: #333;
-          .tree-node{
+          .tree-node {
             display: flex;
             align-items: center;
             height: 20px;
           }
-          .tree-lable{
+          .tree-lable {
             height: 100%;
             line-height: 23px;
             font-size: 12px;
             padding-left: 8px;
           }
-          .blue-folder{
-            color: rgb(64, 158, 255)
+          .blue-folder {
+            color: rgb(64, 158, 255);
           }
         }
       }
@@ -453,7 +681,7 @@
       //   }
       // }
     }
-    .library-table{
+    .library-table {
       // height: 100%;
       width: 170vh;
       max-height: 100%;
@@ -462,20 +690,20 @@
       display: flex;
       flex-direction: column;
       // overflow-y: scroll;
-      .table-header{
+      .table-header {
         display: flex;
         justify-content: space-between;
-        .el-form-item{
+        .el-form-item {
           margin-bottom: 30px !important;
         }
       }
-      .table-box{
-          flex: 1;
-          background: #fff;
-          // padding: 20px 20px 10px 20px;
-          display: flex;
-          flex-direction: column;
-          justify-content: space-between;
+      .table-box {
+        flex: 1;
+        background: #fff;
+        // padding: 20px 20px 10px 20px;
+        display: flex;
+        flex-direction: column;
+        justify-content: space-between;
 
           // .el-table {
             // flex: 1;
@@ -491,11 +719,11 @@
       }
     }
   }
-  .addTree{
-    .el-form-item{
+  .addTree {
+    .el-form-item {
       margin-bottom: 10px;
     }
-    .el-cascader{
+    .el-cascader {
       width: 100%;
     }
   }

--
Gitblit v1.9.3