hailin
2023-08-03 a4b23bbf535f10c5ecc31b16bc8177bcfc23e996
添加原材料检验单第一次
已修改6个文件
已添加3个文件
583 ■■■■ 文件已修改
src/assets/api/controller.js 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/view/raw-ins.vue 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/view/rawInsBox.vue 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/view/rawInsDetail.vue 269 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/view/rawUnqualified/raw.vue 226 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/view/rawUnqualifiedBox.vue 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/view/unqualifiedManagement.vue 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main.js 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/view/index.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/api/controller.js
@@ -1,15 +1,22 @@
// æŠ€æœ¯ç®¡ç†-标准Bom
const standard = {
  selectTreeByMaterial: "material/selectTreeByMaterial", //查询物料的树
  selectRawInspectsList: "rawInspect/selectRawInspectsList",//查询原材料检验单列表
  selectProductByMaterial: "product/selectTreeByMaterial",//根据物料查询项目表格
  selectTechnologyByMaterial: "technology/select"
}
// åŽŸææ–™æ£€éªŒ
const raw = {
  selectRawInspectsList: "rawInspect/selectRawInspectsList",//查询原材料检验单列表
  selectRawInspectsListById: "rawInspect/selectRawInspectsListById/",//根据检验单id获取检验单详情
  updaterawInsProduct:'rawInsProduct/updaterawInsProduct',//修改项目的检验值
  updateRawInspectsById:"/rawInspect/updateRawInspectsById/",//上报,
  listMaterial:"/finished-inspect/list_material",//添加检验单时的项目列表
}
const url = {
  "enter": "user/enter", //登录
  ...standard
  enter: "user/enter", //登录
  ...standard,
  ...raw
}
src/components/view/raw-ins.vue
@@ -80,7 +80,7 @@
      <el-row>
        <el-col :span="12" style="line-height: 32px;">原材料检验</el-col>
        <el-col :span="12" style="text-align: right;">
          <el-button type="primary" icon="el-icon-plus" style="background: #004EA2;">新增</el-button>
          <el-button type="primary" icon="el-icon-plus" style="background: #004EA2;" @click="goDetail(null)">新增</el-button>
          <el-button icon="el-icon-download">删除</el-button>
        </el-col>
      </el-row>
@@ -146,7 +146,7 @@
        </el-table-column>
        <el-table-column label="操作" width="100">
          <template slot-scope="scope">
            <span class="table_do" @click="changeShowDetail">查看</span>
            <span class="table_do" @click="changeShowDetail(scope.row)">查看</span>
            <span class="table_do">打印</span>
          </template>
        </el-table-column>
@@ -220,8 +220,12 @@
          },
          this.selectRawInspectsList()
      },
      changeShowDetail(){
        this.goDetail()
       changeShowDetail({id}){
        this.goDetail(id)
        // console.log(id)
        // const res = await this.$axios.post(this.$api.url.selectRawInspectsListById,{params:{id}})
        // console.log(res)
      }
    }
  }
src/components/view/rawInsBox.vue
@@ -5,8 +5,8 @@
<template>
  <div class="rawInsBox">
    <RawIns v-show="!showDetail" :goDetail="goDetail"></RawIns>
    <RawInsDetail v-show="showDetail" :goBack="goBack" :detail="detail"></RawInsDetail>
    <RawIns v-if="!showDetail" :goDetail="goDetail"></RawIns>
    <RawInsDetail v-if="showDetail" :goBack="goBack" :detailId="id"></RawInsDetail>
  </div>
</template>
@@ -18,13 +18,16 @@
    data() {
        return {
            showDetail: false,
            detail:{}
            id:0
        }
    },
    mounted(){
    },
    methods:{
        goDetail(detail) {
        goDetail(id) {
            this.showDetail = true
            this.detail = detail
            this.id = id
            console.log(this.id)
        },
        goBack() {
            this.showDetail = false
src/components/view/rawInsDetail.vue
@@ -32,6 +32,9 @@
  .raw-detail-info .el-input{
        width: auto;
  }
  .raw-detail-info.raw-detail-info-edit >>>.el-input__inner{
    background:#fff;
  }
  .raw-detail-info >>>.el-input__inner{
    width: 224px;
    height: 32px;
@@ -42,6 +45,12 @@
  }
  .raw-detail-info .el-form-item{
    margin-bottom: 24px;
  }
  .raw-detail-info .el-form-item .el-button {
    height: 32px;
    border: 1px solid rgba(190, 190, 190, 0.44);
    box-shadow: 0px 2px 4px rgba(220, 220, 220, 0.41);
    padding: 0 12px;
  }
  /* æ£€éªŒé¡¹ç›® */
@@ -70,56 +79,136 @@
        </el-col>
      </el-row>
    </div>
    <div class="raw-detail-info">
        <el-form v-model="detail" label-position="right" label-width="120px" >
    <div class="raw-detail-info" :class="detailId===null?'raw-detail-info-edit':''">
        <el-form v-model="detailInfo" label-position="right" label-width="120px" >
            <el-row>
                <el-col :span="7">
                    <el-form-item label="来料日期:">
                        <el-input></el-input>
                        <el-input v-if="detailId!==null" :disabled="detailId!==null" v-model="detailInfo.formTime"></el-input>
                        <el-date-picker
                          v-else
                          type="date"
                          v-model="detailInfo.formTime"
                          placeholder="选择日期">
                        </el-date-picker>
                    </el-form-item>
                </el-col>
                <el-col :span="7">
                    <el-form-item label="规格型号:">
                        <el-input></el-input>
                        <el-input :disabled="detailId!==null" v-model="detailInfo.specifications"></el-input>
                    </el-form-item>
                </el-col>
                <el-col :span="7">
                    <el-form-item label="原材料编码:">
                        <el-input></el-input>
                        <el-input :disabled="detailId!==null" v-model="detailInfo.code"></el-input>
                    </el-form-item>
                </el-col>
            </el-row>
             <el-row>
                <el-col :span="7">
                    <el-form-item label="原材料名称:">
                        <el-input></el-input>
                        <el-input :disabled="detailId!==null" v-model="detailInfo.name"></el-input>
                    </el-form-item>
                </el-col>
                <el-col :span="7">
                    <el-form-item label="报检日期:">
                        <el-input></el-input>
                    <el-form-item label="数量:">
                        <el-input placeholder="请输入检验数量" :disabled="detailId!==null" v-model="detailInfo.number"></el-input>
                    </el-form-item>
                </el-col>
                <el-col :span="7">
                    <el-form-item label="单位:">
                        <el-input></el-input>
                        <el-input placeholder="请输入检验单位" :disabled="detailId!==null" v-model="detailInfo.unit"></el-input>
                    </el-form-item>
                </el-col>
                <el-col  :span="3">
                    <el-form-item v-show="detailId===null" label="" label-width="100px">
                        <el-button  @click="addNewRawInspect">保存提交</el-button>
                    </el-form-item>
                </el-col>
            </el-row>
             <el-row>
                <el-col :span="7">
                    <el-form-item label="数量:">
                        <el-input></el-input>
                    <el-form-item v-show="detailId!==null" label="报检日期:">
                        <el-input :disabled="detailId!==null" v-model="detailInfo.createTime"></el-input>
                    </el-form-item>
                </el-col>
                <el-col :span="7">
                    <el-form-item label="报检人:">
                        <el-input></el-input>
                <el-col :span="14">
                    <el-form-item v-show="detailId!==null" label="报检人:">
                        <el-input :disabled="detailId!==null" v-model="detailInfo.userName"></el-input>
                    </el-form-item>
                </el-col>
                
            </el-row>
        </el-form>
        <!-- <el-form v-show="detailId ===null" v-model="rawInsParams" label-position="right" label-width="120px" >
            <el-row>
                <el-col :span="7">
                    <el-form-item label="订单号:">
                        <el-input placeholder="请输入订单号" v-model="rawInsParams.orderNumber"></el-input>
                    </el-form-item>
                </el-col>
                <el-col :span="7">
                    <el-form-item label="客户名称:">
                        <el-input placeholder="请输入客户名称" v-model="rawInsParams.customerName"></el-input>
                    </el-form-item>
                </el-col>
                <el-col :span="7">
                    <el-form-item label="工程名称:">
                        <el-input placeholder="请输入工程名称"  v-model="rawInsParams.projectName"></el-input>
                    </el-form-item>
                </el-col>
            </el-row>
             <el-row>
                <el-col :span="7">
                    <el-form-item label="质量追溯号:">
                        <el-input  placeholder="请输入质量追溯号"  v-model="rawInsParams.qualityTraceability"></el-input>
                    </el-form-item>
                </el-col>
                <el-col :span="7">
                    <el-form-item label="项目名称:">
                        <el-select placeholder="请输入项目名称" v-model="rawInsParams.material">
                          <el-option v-for="item in materialOptions" :key="item.id" :label="item.name" :value="item.name"></el-option>
                        </el-select>
                    </el-form-item>
                </el-col>
                <el-col :span="7">
                    <el-form-item label="产品编码:">
                        <el-input placeholder="产品编码" disabled  v-model="code"></el-input>
                    </el-form-item>
                </el-col>
            </el-row>
             <el-row>
                <el-col :span="7">
                    <el-form-item label="规格型号:">
                        <el-input  v-model="detailInfo.specificationsModel"></el-input>
                    </el-form-item>
                </el-col>
                <el-col :span="7">
                    <el-form-item label="单位:">
                        <el-input placeholder="请输入单位"  v-model="rawInsParams.unit"></el-input>
                    </el-form-item>
                </el-col>
                <el-col  :span="7">
                    <el-form-item label="数量">
                      <el-input  placeholder="请输入产品编码"  v-model="rawInsParams.qualityTraceability"></el-input>
                    </el-form-item>
                </el-col>
            </el-row>
             <el-row>
                <el-col :span="21">
                    <el-form-item label="主机工:">
                        <el-input placeholder="请输入主机工"  v-model="rawInsParams.userId"></el-input>
                    </el-form-item>
                </el-col>
                <el-col  :span="3">
                    <el-form-item label="" label-width="100px">
                        <el-button  @click="addNewRawInspect">保存提交</el-button>
                    </el-form-item>
                </el-col>
            </el-row>
        </el-form> -->
    </div>
    <div class="title">
      <el-row>
@@ -144,36 +233,43 @@
                width="212">
            </el-table-column>
            <el-table-column
                prop="address"
                prop="unit"
                label="单位"
                width="148">
            </el-table-column>
            <el-table-column
                prop="address"
                prop="required"
                label="标准"
                width="254">
            </el-table-column>
            <el-table-column
                prop="address"
                prop="internal"
                label="内控值"
                width="291">
            </el-table-column>
            <el-table-column
                prop="address"
                prop="testValue"
                label="检查值"
                width="371">
                <template slot-scope="scope">
                  <el-input v-model="scope.row.testValue" @blur="changeState(scope.row)"></el-input>
                </template>
            </el-table-column>
            <el-table-column
                prop="address"
                prop="deviceName"
                label="试验设备"
                width="248"
                >
            </el-table-column>
            <el-table-column
                prop="address"
                prop="testState"
                label="结论"
                 width="98"
                >
                <template slot-scope="scope">
                  <span v-show="scope.row.testState!=null" :style="{color: scope.row.testState===1?'#67C23A':'#F56C6C'}">{{scope.row.testState===1?'合格':'不合格'}}</span>
                  <span v-show="scope.row.testState==null">暂未结论</span>
                </template>
            </el-table-column>
    </el-table>
    </div>
@@ -185,31 +281,37 @@
    <div class="raw-conclusion-table">
        <el-table :data="conclusionTable">
            <el-table-column
                prop="number"
                prop="code"
                label="物料编号"
                width="353">
            </el-table-column>
            <el-table-column
                prop="number"
                prop="name"
                label="物料名称"
                width="353">
            </el-table-column>
            <el-table-column
                prop="number"
                prop="names"
                label="检验员"
                width="542">
                <template slot-scope="scope">
                  <span v-for="item in scope.row.names" :key="item.username" :style="{marginRight:'8px'}">{{item}}</span>
                </template>
            </el-table-column>
            <el-table-column
                prop="number"
                prop="testState"
                label="检验结论"
                width="362">
                 <template slot-scope="scope">
                  <span v-show="scope.row.testState!=null" :style="{color: scope.row.testState===1?'#67C23A':'#F56C6C'}">{{scope.row.testState===1?'合格':'不合格'}}</span>
                  <span v-show="scope.row.testState==null">暂未结论</span>
                </template>
            </el-table-column>
             <el-table-column
                fixed="right"
                label="操作"
                width="120">
                <template slot-scope="scope">
                    <el-button type="text" size="small">上报</el-button>
                <template>
                    <el-button type="text" size="small" @click.once="submitSave">上报</el-button>
                </template>
            </el-table-column>
        </el-table>
@@ -221,51 +323,84 @@
import RawIns from './raw-ins.vue'
export default {
    components:{RawIns},
    props:['goBack','detail'],
    props:['goBack','detailId'],
    created(){
        console.log(this.detail)
      // æ¸…空
      this.detailInfo = {}
      if(this.detailId){
        console.log(this.detailId)
        this.getDetailInfo()
      }else{
        this.getOptions()
      }
    },
    mounted(){
    },
    computed:{
      conclusionTable(){
        // console.log(this.projectTable)
        // console.log(this.projectTable.map(item=>item.userName))
        const conclusion = {}
        conclusion.name = this.detailInfo.name
        conclusion.code = this.detailInfo.code
        conclusion.names= [...new Set(this.projectTable.map(item=>item.userName))]
        console.log(this.projectTable.filter(item=>item.testState===0))
        if(this.projectTable.filter(item=>item.testState===null).length){
          conclusion.testState = null
          return [conclusion]
        }
        if(this.projectTable.filter(item=>item.testState===0).length>0){
          conclusion.testState= 0
        }else{
          conclusion.testState= 1
        }
        return [conclusion]
      },
      // äº§å“ç¼–码
      // code(){
      //   const material= this.materialOptions.filter(item=>item.name===this.rawInsParams.material)[0]
      //   return  material && material.code
      // }
    },
    data() {
        return {
            conclusionTable:[
                {number:'物料名称'}
            ],
            projectTable:[
                {
            date: '2016-05-02',
            name: '王小虎',
            address: '上海市'
          }, {
            date: '2016-05-04',
            name: '王小虎',
            address: '上海市'
          }, {
            date: '2016-05-04',
            name: '王小虎',
            address: '上海市'
          }, {
            date: '2016-05-04',
            name: '王小虎',
            address: '上海市'
          }, {
            date: '2016-05-04',
            name: '王小虎',
            address: '上海市'
          }, {
            date: '2016-05-04',
            name: '王小虎',
            address: '上海市'
          }, {
            date: '2016-05-04',
            name: '王小虎',
            address: '上海市'
          }, {
            date: '2016-05-04',
            name: '王小虎',
            address: '上海市'
          }
            ]
          // è¯¦æƒ…页就是详情信息
          detailInfo:{},
          projectTable:[],
          // æ–°å»ºæ£€éªŒå•参数对象
          rawInsParams:{},
          // é¡¹ç›®åç§°options
          materialOptions:[]
        }
    },
    methods:{
      // èŽ·å–æŠ¥æ£€å•è¯¦æƒ…ä¿¡æ¯
      async getDetailInfo() {
        const {data} = await this.$axios.get(this.$api.url.selectRawInspectsListById+`${this.detailId}`,{params:{id:this.detailId}})
        this.detailInfo  = data
        this.projectTable = data.rawInsProducts
        // console.log(this.projectTable)
      },
      // æ–°å¢žæ£€éªŒå•
      addNewRawInspect() {
        console.log(this.detailInfo)
      },
      // ä¿®æ”¹é¡¹ç›®çš„æ£€æµ‹å€¼æ”¹å˜ç»“论
      async changeState(row){
        // console.log(row)
        const res = await this.$axios.post(this.$api.url.updaterawInsProduct,{...row},{headers:{'Content-Type':'application/json'}})
        this.$message.success('提交成功')
        this.getDetailInfo()//重新刷新信息数据
      },
      async submitSave() {
        const res = await this.$axios.post(this.$api.url.updateRawInspectsById+`${this.detailId}`)
        this.$message.success('提交成功')
        this.getDetailInfo()
      },
      async getOptions() {
        const {data} = await this.$axios.get(this.$api.url.listMaterial)
        this.materialOptions = data
      }
     }
}
</script>
src/components/view/rawUnqualified/raw.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,226 @@
<style scoped>
.unqualifiedBox{
    width: 100%;
    height: 100%;
    display: flex;
    flex-direction: column;
}
  .unqualifiedBox .title .el-button {
    height: 32px;
    border: 1px solid rgba(190, 190, 190, 0.44);
    box-shadow: 0px 2px 4px rgba(220, 220, 220, 0.41);
    padding: 0 12px;
  }
  .unqualifiedBox .title {
    margin-bottom: 10px;
    padding: 0 20px;
  }
/* æ¡ä»¶æŸ¥è¯¢å¤´éƒ¨æ ·å¼ */
  .choose {
    padding: 21px 24px;
    display: flex;
    align-items: center;
    background-color: #fff;
    border-bottom: 3px solid rgb(245, 247, 251);
  }
  .choose * {
    font-size: 14px;
  }
  .choose .el-button {
    height: 32px;
    border: 1px solid rgba(190, 190, 190, 0.44);
    box-shadow: 0px 2px 4px rgba(220, 220, 220, 0.41);
    padding: 0 12px;
  }
  /* ä¸åˆæ ¼è¡¨æ ¼æ ·å¼ */
  .unqualifiedTable{
    flex: 1;
    background: #fff;
    margin-top: 11px;
    padding: 23px 21px;
  }
</style>
<template>
<div class="unqualifiedBox">
    <div class="title">
      <el-row>
        <el-col :span="12" style="line-height: 32px;">原材料检验</el-col>
        <el-col :span="12" style="text-align: right;">
          <el-button icon="el-icon-download" @click="()=>{}">导出</el-button>
        </el-col>
      </el-row>
    </div>
    <div class="choose">
      <span>处理状态:</span>
      <el-select v-model="search.insState" size="small" placeholder="请选择" style="width: 224px;margin-right: 30px;">
        <el-option label="已处理" :value="2"></el-option>
        <el-option label="待处理" :value="0"></el-option>
      </el-select>
      <span>来料日期:</span>
      <el-date-picker v-model="search.createTime" size="small" placeholder="请输入"
        style="width: 224px;margin-right: 30px;" clearable value-format="yyyy-MM-dd"></el-date-picker>
      <span>供应商:</span>
      <el-select v-model="search.insState" size="small" placeholder="请选择" style="width: 224px;margin-right: 30px;">
        <el-option label="全部" :value="2"></el-option>
        <el-option label="未检测" :value="0"></el-option>
        <el-option label="已检测" :value="1"></el-option>
      </el-select>
      <el-button size="mini" @click="clean()"><span>重 ç½®</span></el-button>
      <el-button size="mini" type="primary" style="background: #004EA2;" @click="selectRawInspectsList()"><span>查
          è¯¢</span></el-button>
    </div>
    <div class="unqualifiedTable">
        <el-table :data="unqualifiedData" height="630">
            <el-table-column
                type="selection"
                width="55">
            </el-table-column>
            <el-table-column
                type="index"
                label="序号"
                width="60">
            </el-table-column>
            <el-table-column
                prop="name"
                label="缺陷名称"
                width="97">
            </el-table-column>
            <el-table-column
                prop="address"
                label="材料编码"
                width="141">
            </el-table-column>
            <el-table-column
                prop="name"
                label="材料名称"
                width="214">
            </el-table-column>
            <el-table-column
                prop="address"
                label="规格型号">
            </el-table-column>
            <el-table-column
                prop="address"
                label="单位"
                width="250">
            </el-table-column>
            <el-table-column
                prop="address"
                label="数量"
                width="75">
            </el-table-column>
            <el-table-column
                prop="address"
                label="报检日期"
                width="128">
            </el-table-column>
            <el-table-column
                prop="address"
                label="报检人"
                width="78">
            </el-table-column>
            <el-table-column
                prop="address"
                label="处理日期"
                width="120">
            </el-table-column>
            <el-table-column
                prop="address"
                label="处理状态"
                width="100">
            </el-table-column>
            <el-table-column
                prop="address"
                label="处理结果"
                width="100">
            </el-table-column>
            <el-table-column
                prop="address"
                label="操作"
                width="118">
            </el-table-column>
        </el-table>
        <el-col style="height: 50px;display: flex;align-items: center;justify-content: right;">
        <el-pagination
          :current-page="currentPage"
          :page-sizes="[10, 20, 30, 50]"
          :page-size="pageSize"
          layout="total, sizes, prev, pager, next, jumper"
          :total="countSize">
        </el-pagination>
      </el-col>
    </div>
</div>
</template>
<script>
export default {
    data() {
        return {
            // æœç´¢æ¡ä»¶
            search:{},
            unqualifiedData:[
                {
                    date: '2016-05-02',
                    name: '王小虎',
                    address: '上海市'
                }, {
                    date: '2016-05-04',
                    name: '王小虎',
                    address: '上海市'
                }, {
                    date: '2016-05-01',
                    name: '王小虎',
                    address: '上海市'
                }, {
                    date: '2016-05-03',
                    name: '王小虎',
                    address: '上海市'
                }, {
                    date: '2016-05-04',
                    name: '王小虎',
                    address: '上海市'
                }, {
                    date: '2016-05-01',
                    name: '王小虎',
                    address: '上海市'
                }, {
                    date: '2016-05-03',
                    name: '王小虎',
                    address: '上海市'
                }, {
                    date: '2016-05-04',
                    name: '王小虎',
                    address: '上海市'
                }, {
                    date: '2016-05-01',
                    name: '王小虎',
                    address: '上海市'
                }, {
                    date: '2016-05-03',
                    name: '王小虎',
                    address: '上海市'
                }, {
                    date: '2016-05-04',
                    name: '王小虎',
                    address: '上海市'
                }, {
                    date: '2016-05-01',
                    name: '王小虎',
                    address: '上海市'
                }, {
                    date: '2016-05-03',
                    name: '王小虎',
                    address: '上海市'
                }
            ],
            countSize:1,
            pageSize:10,
            currentPage:1
        }
    },
}
</script>
src/components/view/rawUnqualifiedBox.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,17 @@
<style scoped>
</style>
<template>
  <div class="rawUnqualifiedBox">
    <Unqualified></Unqualified>
  </div>
</template>
<script>
import Unqualified from './rawUnqualified/raw.vue'
export default {
  components:{Unqualified}
}
</script>
src/components/view/unqualifiedManagement.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,17 @@
<style scoped>
</style>
<template>
  <div class="rawUnqualifiedBox">
    <Unqualified></Unqualified>
  </div>
</template>
<script>
import Unqualified from './rawUnqualified/raw.vue'
export default {
  components:{Unqualified}
}
</script>
src/main.js
@@ -40,11 +40,19 @@
  }
  if (token) {
    config.headers['token'] = "" + token
    config.headers['Content-Type'] = 'application/x-www-form-urlencoded;charset=UTF-8'
    // config.headers['Content-Type'] = 'application/x-www-form-urlencoded;charset=UTF-8'
    // config.headers['Content-Type'] = 'application/json'
  }
  // console.log(config)
  if (config.method === 'post' || config.method === 'put') {
    config.data = qs.stringify(config.data)
  }
  if(config.headers['Content-Type'] =='application/json'){
    config.data = qs.parse(config.data)
    // console.log(config.data)
  }
  return config
}, function(error) {
  return Promise.reject(error)
src/view/index.vue
@@ -297,7 +297,7 @@
            k: 4,
            v: "原材料不合格品",
            i: "font icon-shouye",
            u: ""
            u: "rawUnqualifiedBox"
          }, {
            k: 5,
            v: "过程检验",
@@ -312,7 +312,7 @@
            k: 7,
            v: "不合格品管理",
            i: "font icon-shouye",
            u: ""
            u: "unqualifiedManagement"
          }, {
            k: 8,
            v: "实验室管理",