value
2024-04-26 d9f8ae99586ff3e4f1e86fee447d7ffd715e8b10
检验项目绑定产品,检验对象绑定产品
已修改5个文件
381 ■■■■■ 文件已修改
src/App.vue 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/api/controller.js 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/tool/value-table.vue 184 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/view/a5-capacity-scope.vue 176 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/view/a6-device-management.vue 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/App.vue
@@ -307,4 +307,5 @@
    overflow: hidden;
    text-overflow: ellipsis;
  }
</style>
src/assets/api/controller.js
@@ -103,6 +103,11 @@
    upTestObject: "/capacityScope/upTestObject", //修改检测对象
    selectTestObjectByName: "/capacityScope/selectTestObjectByName", //获取检验对象枚举
  getInsProduction: "/capacityScope/getInsProduction", //设备里面选择检验项目(树形结构)
  selectProductListByObjectId: "/capacityScope/selectProductListByObjectId", //维护检验对象的产品
  addProduct: "/capacityScope/addProduct", //新增产品
  delProduct: "/capacityScope/delProduct", //删除产品
  upProduct: "/capacityScope/upProduct", //修改产品
  getItemTree: "/capacityScope/getItemTree", //获取检验对象树
}
const laboratoryScope = {
src/components/tool/value-table.vue
@@ -49,7 +49,6 @@
  .handleBtn.is-disabled{
    color: #C0C4CC;
  }
</style>
<style>
    /* .value-table .highlight-warning-row-border td {
@@ -89,6 +88,7 @@
  .handleBtn.is-disabled .el-upload:focus{
    color: #C0C4CC !important;
  }
  .avatar-uploader .el-upload{
    height: 80px;
    display: flex;
@@ -100,13 +100,11 @@
<template>
    <div class="value-table">
        <div class="table" :style="data.isPage!=undefined&&data.isPage!=true?'height:100%':''">
            <el-table ref="eltable" :data="tableData" style="width: 100%;" height="100%"
      tooltip-effect="dark" border
      <el-table ref="eltable" :data="tableData" style="width: 100%;" height="100%" tooltip-effect="dark" border
                @selection-change="selectChange" @select="select" v-loading="loading" @sort-change="sortChange"
                @row-click="rowClick" :show-summary="data.countFleid!=undefined && data.countFleid.length > 0"
                :summary-method="getSummaries" :row-class-name="tableRowClassName"
        :row-key="record=>record.id" :current-row-key="data.currentId"
        :highlight-current-row="data.highlight===undefined||data.highlight"
        :summary-method="getSummaries" :row-class-name="tableRowClassName" :row-key="record=>record.id"
        :current-row-key="data.currentId" :highlight-current-row="data.highlight===undefined||data.highlight"
        :span-method="spanMethod">
                <el-table-column type="selection" width="65" v-if="data.showSelect" :key="Math.random()">
                </el-table-column>
@@ -130,29 +128,21 @@
                        <!-- 可操作行进行点击事件 -->
                        <span v-else-if="data.linkEvent&&showLink(a.label, data.linkEvent)" style="color:#409EFF;cursor: pointer;"
                            @click="handleLinkEvent(scope.row,data.linkEvent[a.label])">{{scope.row[a.label]}}</span>
            <img style="width: 40px;height: 40px;margin-top: 10px;" :src="javaApi+'/img/'+scope.row[a.label]" v-else-if="showUpload(a.label)&&scope.row[a.label]" alt="">
            <span v-else-if="showCascader(a.label)&&scope.row[a.label]">{{handleTree(data.cascaderField[a.label].tree,scope.row[a.label].split(',')[scope.row[a.label].split(',').length-1])}}</span>
            <img style="width: 40px;height: 40px;margin-top: 10px;" :src="javaApi+'/img/'+scope.row[a.label]"
              v-else-if="showUpload(a.label)&&scope.row[a.label]" alt="">
                        <span v-else>{{scope.row[a.label]}}</span>
                    </template>
                </el-table-column>
                <el-table-column fixed="right" align="center" label="操作" :width="getWidth()" v-if="data.do.length > 0">
                    <template slot-scope="scope">
                        <el-button v-for="(a, ai) in data.do" :key="ai" :type="a.type"
                            :disabled="a.disabFun ? a.disabFun(scope.row,scope.$index) : false"
                            @click="main(scope.row, a)" class="handleBtn">
              :disabled="a.disabFun ? a.disabFun(scope.row,scope.$index) : false" @click="main(scope.row, a)"
              class="handleBtn">
              <span v-if="a.type!='upload'">{{a.font}}</span>
              <el-upload
              :action="javaApi+a.uploadConfig.url+'?id='+scope.row.id"
              v-else
              :disabled="a.disabFun ? a.disabFun(scope.row,scope.$index) : false"
              :on-success="handleSuccessUp"
              :show-file-list="false"
              :headers="token"
              name="file"
                            :accept='a.uploadConfig.accept'
                            :on-error="onError"
              ref='upload'
              style="background: transparent;">
              <el-upload :action="javaApi+a.uploadConfig.url+'?id='+scope.row.id" v-else
                :disabled="a.disabFun ? a.disabFun(scope.row,scope.$index) : false" :on-success="handleSuccessUp"
                :show-file-list="false" :headers="token" name="file" :accept='a.uploadConfig.accept' :on-error="onError"
                ref='upload' style="background: transparent;">
                                    <span>{{a.font}}</span>
                                </el-upload>
            </el-button>
@@ -166,7 +156,7 @@
                :total="total" >
            </el-pagination>
        </div>
        <el-dialog title="编辑" :visible.sync="upDia" :width="data.row==1?'500px':500+data.row * 200 + 'px'">
    <el-dialog title="编辑" :visible.sync="upDia" :width="data.row==1?'500px':500+data.row * 200 + 'px'" append-to-body>
            <div class="body" v-if="upDia" style="max-height: 550px;overflow-y: auto;padding: 5px 10px 5px 0;">
                <div v-if="data.row > 1">
                    <div v-for="(a, ai) in upHead" :key="ai" style="line-height: 50px;">
@@ -175,7 +165,8 @@
                        </el-col>
                        <el-col :span="16/data.row">
                            <el-input v-model="upData[a.label]" size="small" clearable :placeholder="`请输入${a.value}`"
                                v-if="showType(a.label, data.selectField) == null&&!showUpload(a.label)&&!showCascader(a.label)" :disabled="isDisabled(a.label)"></el-input>
                v-if="showType(a.label, data.selectField) == null&&!showUpload(a.label)&&!showCascader(a.label)"
                :disabled="isDisabled(a.label)"></el-input>
                            <el-select v-model="upData[a.label]" :multiple="data.selectField[a.label].choose" size="small"
                                v-if="showType(a.label, data.selectField) != null" style="width: 100%;" :disabled="isDisabled(a.label)"
                                clearable filterable>
@@ -183,32 +174,19 @@
                                    :label="b.label">
                                </el-option>
                            </el-select>
              <el-upload
              :action="javaApi+data.addUploadConfig.url"
              v-if="showUpload(a.label)"
              :on-success="m=>handleSuccessUp(m, a.label)"
              :show-file-list="false"
              :headers="token"
              name="file"
              :multiple="false"
                            :accept='data.addUploadConfig.accept'
                            :on-error="onError"
              ref='upload'
              <el-upload :action="javaApi+data.addUploadConfig.url" v-if="showUpload(a.label)"
                :on-success="m=>handleSuccessUp(m, a.label)" :show-file-list="false" :headers="token" name="file"
                :multiple="false" :accept='data.addUploadConfig.accept' :on-error="onError" ref='upload'
              class="avatar-uploader"
              style="background: transparent;width: 80px;height: 80px;border: 1px solid #DCDFE6;border-radius: 6px;margin: 10px 0;">
              <img v-if="upData[a.label]" :src="javaApi+'/img/'+upData[a.label]" class="avatar" style="width: 80px;height: 80px;border-radius: 6px;">
                <img v-if="upData[a.label]" :src="javaApi+'/img/'+upData[a.label]" class="avatar"
                  style="width: 80px;height: 80px;border-radius: 6px;">
              <i v-else class="el-icon-plus avatar-uploader-icon"></i>
                            </el-upload>
              <el-cascader
              :value="upData[a.label]"
              :options="data.cascaderField[a.label].tree"
              v-if="showCascader(a.label)"
              :show-all-levels="false"
              clearable
              :props="data.cascaderField.props"
              size="small"
              style="width: 100%;"
              @change="m=>handleCascader(m,a.label)"></el-cascader>
              <el-cascader :value="upData[a.label]" :options="data.cascaderField[a.label].tree"
                v-if="showCascader(a.label)" :placeholder="`请选择${a.value}`" clearable
                :props="data.cascaderField.props" size="small" style="width: 100%;"
                @change="m=>handleCascader(m,a.label)" filterable></el-cascader>
                        </el-col>
                    </div>
                </div>
@@ -219,30 +197,25 @@
                        </el-col>
                        <el-col :span="16" :offset="1">
                            <el-input v-model="upData[a.label]" size="small" clearable :placeholder="`请输入${a.value}`"
                                v-if="showType(a.label, data.selectField) == null&&!showUpload(a.label)&&!showCascader(a.label)" :disabled="isDisabled(a.label)"></el-input>
                v-if="showType(a.label, data.selectField) == null&&!showUpload(a.label)&&!showCascader(a.label)"
                :disabled="isDisabled(a.label)"></el-input>
                            <el-select v-model="upData[a.label]" :multiple="data.selectField[a.label].choose" size="small"
                                v-if="showType(a.label, data.selectField) != null" style="width: 100%;" :disabled="isDisabled(a.label)"
                                clearable filterable>
                                <el-option v-for="(b, bi) in data.selectField[a.label].select" :key="bi" :value="b.value"
                                    :label="b.label"></el-option>
                            </el-select>
              <el-upload
              :action="javaApi+data.addUploadConfig.url"
              v-if="showUpload(a.label)"
              :multiple="false"
              :on-success="m=>handleSuccessUp(m, a.label)"
              :show-file-list="false"
              :headers="token"
              name="file"
                            :accept='data.addUploadConfig.accept'
                            :on-error="onError"
              ref='upload'
              class="avatar-uploader"
              <el-upload :action="javaApi+data.addUploadConfig.url" v-if="showUpload(a.label)" :multiple="false"
                :on-success="m=>handleSuccessUp(m, a.label)" :show-file-list="false" :headers="token" name="file"
                :accept='data.addUploadConfig.accept' :on-error="onError" ref='upload' class="avatar-uploader"
              style="background: transparent;width: 80px;height: 80px;border: 1px solid #DCDFE6;border-radius: 6px;margin: 10px 0;">
              <img v-if="upData[a.label]" :src="javaApi+'/img/'+upData[a.label]" class="avatar" style="width: 80px;height: 80px;border-radius: 6px;">
                <img v-if="upData[a.label]" :src="javaApi+'/img/'+upData[a.label]" class="avatar"
                  style="width: 80px;height: 80px;border-radius: 6px;">
              <i v-else class="el-icon-plus avatar-uploader-icon"></i>
                            </el-upload>
              <el-cascader :value="upData[a.label]" :options="data.cascaderField[a.label].tree" :show-all-levels="false" v-if="showCascader(a.label)" clearable :props="data.cascaderField.props" size="small" style="width: 100%;" @change="m=>handleCascader(m,a.label)"></el-cascader>
              <el-cascader :value="upData[a.label]" :options="data.cascaderField[a.label].tree" :show-all-levels="false"
                :placeholder="`请选择${a.value}`" v-if="showCascader(a.label)" clearable :props="data.cascaderField.props"
                size="small" style="width: 100%;" @change="m=>handleCascader(m,a.label)" filterable></el-cascader>
                        </el-col>
                    </el-row>
                </div>
@@ -252,8 +225,8 @@
                <el-button type="primary" @click="saveUpData" :loading="upLoad">确 定</el-button>
            </span>
        </el-dialog>
        <el-dialog title="新增" :visible.sync="addDia" :width="data.row==1?'500px':500+data.row * 200 + 'px'">
            <div class="body" v-if="addDia" style="max-height: 550px;overflow-y: auto;padding: 5px 0;">
    <el-dialog title="新增" :visible.sync="addDia" :width="data.row==1?'500px':500+data.row * 200 + 'px'" append-to-body>
      <div class="body" v-if="addDia" style="max-height: 550px;overflow-y: auto;padding: 5px 10px 5px 0;">
                <div v-if="data.row > 1">
                    <div v-for="(a, ai) in upHead" :key="ai" style="line-height: 50px;">
                        <el-col :span="6/data.row" style="text-align: right;"><span class="required-span"
@@ -267,23 +240,18 @@
                                <el-option v-for="(b, bi) in data.selectField[a.label].select" :key="bi" :value="b.value"
                                    :label="b.label"></el-option>
                            </el-select>
              <el-upload
              :action="javaApi+data.addUploadConfig.url"
              v-if="showUpload(a.label)"
              :on-success="m=>handleSuccessUp(m, a.label)"
              :show-file-list="false"
              :headers="token"
              :multiple="false"
              name="file"
                            :accept='data.addUploadConfig.accept'
                            :on-error="onError"
              ref='upload'
              <el-upload :action="javaApi+data.addUploadConfig.url" v-if="showUpload(a.label)"
                :on-success="m=>handleSuccessUp(m, a.label)" :show-file-list="false" :headers="token" :multiple="false"
                name="file" :accept='data.addUploadConfig.accept' :on-error="onError" ref='upload'
              class="avatar-uploader"
              style="background: transparent;width: 80px;height: 80px;border: 1px solid #DCDFE6;border-radius: 6px;margin: 10px 0;">
              <img v-if="upData[a.label]" :src="javaApi+'/img/'+upData[a.label]" class="avatar" style="width: 80px;height: 80px;border-radius: 6px;">
                <img v-if="upData[a.label]" :src="javaApi+'/img/'+upData[a.label]" class="avatar"
                  style="width: 80px;height: 80px;border-radius: 6px;">
              <i v-else class="el-icon-plus avatar-uploader-icon"></i>
                                </el-upload>
              <el-cascader :options="data.cascaderField[a.label].tree" v-if="showCascader(a.label)" clearable :props="data.cascaderField.props" size="small" style="width: 100%;" :show-all-levels="false" @change="m=>handleCascader(m,a.label)"></el-cascader>
              <el-cascader :options="data.cascaderField[a.label].tree" v-if="showCascader(a.label)" clearable
                :placeholder="`请选择${a.value}`" :props="data.cascaderField.props" size="small" style="width: 100%;"
                @change="m=>handleCascader(m,a.label)" filterable></el-cascader>
                        </el-col>
                    </div>
                </div>
@@ -299,23 +267,18 @@
                                <el-option v-for="(b, bi) in data.selectField[a.label].select" :key="bi" :value="b.value"
                                    :label="b.label"></el-option>
                            </el-select>
              <el-upload
              :action="javaApi+data.addUploadConfig.url"
              v-if="showUpload(a.label)"
              :on-success="m=>handleSuccessUp(m, a.label)"
              :show-file-list="false"
              :headers="token"
              name="file"
              :multiple="false"
                            :accept='data.addUploadConfig.accept'
                            :on-error="onError"
              ref='upload'
              <el-upload :action="javaApi+data.addUploadConfig.url" v-if="showUpload(a.label)"
                :on-success="m=>handleSuccessUp(m, a.label)" :show-file-list="false" :headers="token" name="file"
                :multiple="false" :accept='data.addUploadConfig.accept' :on-error="onError" ref='upload'
              class="avatar-uploader"
              style="background: transparent;width: 80px;height: 80px;border: 1px solid #DCDFE6;border-radius: 6px;margin: 10px 0;">
              <img v-if="upData[a.label]" :src="javaApi+'/img/'+upData[a.label]" class="avatar" style="width: 80px;height: 80px;border-radius: 6px;">
                <img v-if="upData[a.label]" :src="javaApi+'/img/'+upData[a.label]" class="avatar"
                  style="width: 80px;height: 80px;border-radius: 6px;">
              <i v-else class="el-icon-plus avatar-uploader-icon"></i>
                                </el-upload>
              <el-cascader :options="data.cascaderField[a.label].tree" v-if="showCascader(a.label)" clearable :props="data.cascaderField.props" size="small" style="width: 100%;" :show-all-levels="false" @change="m=>handleCascader(m,a.label)"></el-cascader>
              <el-cascader :options="data.cascaderField[a.label].tree" v-if="showCascader(a.label)" clearable
                :placeholder="`请选择${a.value}`" :props="data.cascaderField.props" size="small" style="width: 100%;"
                @change="m=>handleCascader(m,a.label)" filterable></el-cascader>
                        </el-col>
                    </el-row>
                </div>
@@ -356,7 +319,9 @@
    import {
        Page
    } from 'iview';
import { data } from 'jquery';
  import {
    data
  } from 'jquery';
    export default {
        props: {
            tableRowClassName: {
@@ -481,6 +446,7 @@
          //   position:0
          // }
        ],
        param: {}
            }
        },
        watch: {
@@ -492,6 +458,11 @@
                    })
                }
            },
    },
    beforeUpdate() {
      this.$nextTick(() => {
        this.$refs.eltable.doLayout()
      })
        },
        mounted() {
            this.data = this.componentData
@@ -523,7 +494,12 @@
          }
        });
      },
      spanMethod({ row, column, rowIndex, columnIndex }){
      spanMethod({
        row,
        column,
        rowIndex,
        columnIndex
      }) {
        // 一般的合并行
        if(this.data.spanConfig!=undefined&&this.data.spanConfig.rows&&this.data.spanConfig.rows.length>0){
          let i = null;
@@ -541,7 +517,8 @@
          }
        }
        // 特殊的合并行
        if(this.data.spanConfig!=undefined&&this.data.spanConfig.special&&this.data.spanConfig.special.main&&this.data.spanConfig.special.rows&&this.data.spanConfig.special.rows.length>0){
        if (this.data.spanConfig != undefined && this.data.spanConfig.special && this.data.spanConfig.special.main &&
          this.data.spanConfig.special.rows && this.data.spanConfig.special.rows.length > 0) {
          let i = null;
          let obj = this.data.spanConfig.special.rows.find((item,index)=>{
            i = index;
@@ -626,7 +603,8 @@
                        }
                    }
          // 一般的合并行
          if(this.data.spanConfig!=undefined&&this.data.spanConfig.rows&&this.data.spanConfig.rows.length>0){
          if (this.data.spanConfig != undefined && this.data.spanConfig.rows && this.data.spanConfig.rows.length >
            0) {
            this.spanList = [];
            this.data.spanConfig.rows.forEach((item,index)=>{
              this.spanList.push({
@@ -637,14 +615,16 @@
            })
          }
          // 特殊的合并行
          if(this.data.spanConfig!=undefined&&this.data.spanConfig.special&&this.data.spanConfig.special.main&&this.data.spanConfig.special.rows&&this.data.spanConfig.special.rows.length>0){
          if (this.data.spanConfig != undefined && this.data.spanConfig.special && this.data.spanConfig.special
            .main && this.data.spanConfig.special.rows && this.data.spanConfig.special.rows.length > 0) {
            this.specialSpanList = []
            this.data.spanConfig.special.rows.forEach((item,index)=>{
              this.specialSpanList.push({
                arr:[],
                position:0
              })
              this.rowspan(this.specialSpanList[index].arr, this.specialSpanList[index].position, this.data.spanConfig.special.main);
              this.rowspan(this.specialSpanList[index].arr, this.specialSpanList[index].position, this.data
                .spanConfig.special.main);
            })
          }
                    this.loading = false
@@ -733,7 +713,7 @@
            this.upHead.forEach((item,index)=>{
              if(this.data.cascaderField&&this.data.cascaderField[item.label]){
                if(this.upData[item.label]){
                  this.upData[item.label] = this.upData[item.label].split(',').map(m=>Number(m));
                  this.upData[item.label] = JSON.parse(this.upData[item.label])
                }else{
                  this.upData[item.label] = []
                }
@@ -814,7 +794,7 @@
        this.upHead.forEach((item,index)=>{
          if(this.data.cascaderField&&this.data.cascaderField[item.label]){
            if(this.upData[item.label]){
              this.upData[item.label] = this.upData[item.label].join(',');
              this.upData[item.label] = JSON.stringify(this.upData[item.label])
            }else{
              this.upData[item.label] = ''
            }
@@ -840,9 +820,10 @@
                    this.upLoad = false
                })
            },
            openAddDia(addUrl) {
      openAddDia(addUrl, param) {
                this.addDia = true
                this.addUrl = addUrl
        this.param = param
                this.upData = {}
                this.tableHead.forEach((k, v) => {
                    if (k.label != 'orderBy' && k.label != 'createTime' && k.label != 'updateTime' && k.label !=
@@ -895,12 +876,17 @@
        this.upHead.forEach((item,index)=>{
          if(this.data.cascaderField&&this.data.cascaderField[item.label]){
            if(this.upData[item.label]){
              this.upData[item.label] = this.upData[item.label].join(',');
              this.upData[item.label] = JSON.stringify(this.upData[item.label])
            }else{
              this.upData[item.label] = ''
            }
          }
        })
        if (this.param !== undefined && this.param !== null) {
          for (let i in this.param) {
            this.upData[i] = this.param[i]
          }
        }
                this.$axios.post(this.addUrl, this.upData, {
                    headers: {
                        'Content-Type': 'application/json'
src/components/view/a5-capacity-scope.vue
@@ -68,7 +68,8 @@
                <div class="search_thing">
                    <div class="search_label">检验子项:</div>
                    <div class="search_input"><el-input size="small" placeholder="请输入" clearable
                            v-model="itemParameterData.entity.inspectionItemSubclass" @keyup.enter.native="refreshTable()"></el-input></div>
              v-model="itemParameterData.entity.inspectionItemSubclass" @keyup.enter.native="refreshTable()"></el-input>
          </div>
                </div>
                <div class="search_thing" style="padding-left: 30px;">
                    <el-button size="small" @click="refresh()">重 置</el-button>
@@ -84,7 +85,7 @@
        <div class="bodys">
            <div class="search" v-if="radio==1">
                <div class="search_thing">
                    <div class="search_label">样品名称:</div>
          <div class="search_label">检验对象:</div>
                    <div class="search_input"><el-input size="small" placeholder="请输入" clearable
                            v-model="testObjectData.entity.specimenName" @keyup.enter.native="refreshTable()"></el-input></div>
                </div>
@@ -99,6 +100,17 @@
                    :componentData="testObjectData" :key="upIndex" />
            </div>
        </div>
    <el-dialog title="产品维护" :visible.sync="diaProduct" width="600px">
      <div class="body" v-if="diaProduct" style="height: 350px;overflow-y: auto;padding: 5px 0;">
        <ValueTable ref="productData" :url="$api.capacityScope.selectProductListByObjectId"
          :upUrl="$api.capacityScope.upProduct" :delUrl="$api.capacityScope.delProduct"
          :componentData="productData" :key="upIndex" />
      </div>
      <span slot="footer" class="dialog-footer">
        <el-button @click="diaProduct = false">取 消</el-button>
        <el-button type="primary" @click="openAdd2" :loading="productLoad">新 增</el-button>
      </span>
    </el-dialog>
    </div>
</template>
@@ -151,14 +163,21 @@
                        laboratory:{
                            select:[]
                        },
                        method:{select:[]},
            method: {
              select: []
            },
                        templateId:{
                            select:[]
                        },
                        sonLaboratory: {select:[]},
                        unit: {select:[]},
                        sample: {select:[]},
            dic: {select:[]},
            sonLaboratory: {
              select: []
            },
            unit: {
              select: []
            },
            dic: {
              select: []
            },
                    },
                    selectField: {
                        inspectionItemType: {
@@ -176,14 +195,37 @@
                        templateId:{
                            select:[]
                        },
                        method:{select:[],choose: true},
                        sample: {select:[]},
                        sonLaboratory: {select:[]},
                        unit: {select:[]},
            dic:{select:[]},
            method: {
              select: [],
              choose: true
                    },
                    requiredAdd: ['sonLaboratory','inspectionItem', 'manHour', 'inspectionItemType','inspectionValueType','laboratory','unit','method','price','manDay','sample'],
                    requiredUp: ['sonLaboratory','inspectionItem', 'manHour', 'inspectionItemType','inspectionValueType','laboratory','unit','method','price','manDay','sample']
            sonLaboratory: {
              select: []
            },
            unit: {
              select: []
            },
            dic: {
              select: []
            },
          },
          cascaderField:{
            sample:{
              tree:[]
            },
            // 字段配置
            props:{
              value:'name',
              label:'name',
              checkStrictly: false
            }
          },
          requiredAdd: ['sonLaboratory', 'inspectionItem', 'manHour', 'inspectionItemType', 'inspectionValueType',
            'unit', 'method', 'price', 'manDay'
          ],
          requiredUp: ['sonLaboratory', 'inspectionItem', 'manHour', 'inspectionItemType', 'inspectionValueType',
            'unit', 'method', 'price', 'manDay'
          ]
                },
                testObjectData: {
                    entity: {
@@ -201,7 +243,57 @@
                        font: '编辑',
                        type: 'text',
                        method: 'doDiy',
                        field: ['createUserName', 'updateUserName']
            field: ['createUserName', 'updateUserName', 'product']
          }, {
            id: 'delete',
            font: '删除',
            type: 'text',
            method: 'doDiy'
          }, {
            font: '产品维护',
            type: 'text',
            method: 'upProduct'
          }],
          tagField: {
            laboratoryId: {
              select: []
            }
          },
          selectField: {
            laboratoryId: {
              select: []
            }
          },
          requiredAdd: ['specimenName', 'code', 'laboratoryId'],
          requiredUp: ['specimenName', 'code', 'laboratoryId']
        },
        itemParameterEntityCopy: {},
        testObjectDataEntityCopy: {},
        upIndex: 0,
        addDia: false,
        addPower: true,
        select: 0,
        laboratory: [],
        productLoad: false,
        diaProduct: false,
        productData: {
          entity: {
            objectId: 0,
            orderBy: {
              field: 'id',
              order: 'asc'
            }
          },
          isPage: false,
          isIndex: true,
          showSelect: false,
          select: true,
          do: [{
            id: 'update',
            font: '编辑',
            type: 'text',
            method: 'doDiy',
            field: []
                    }, {
                        id: 'delete',
                        font: '删除',
@@ -210,15 +302,9 @@
                    }],
                    tagField: {},
                    selectField: {},
                    requiredAdd: ['specimenName','code'],
                    requiredUp: ['specimenName','code']
                },
                itemParameterEntityCopy: {},
                testObjectDataEntityCopy: {},
                upIndex: 0,
                addDia: false,
                addPower: true,
                select: 0
          requiredAdd: ['name','nameEn'],
          requiredUp: ['name','nameEn']
        }
            }
        },
        mounted() {
@@ -341,11 +427,14 @@
                    res.data.forEach(a=>{
                        data.push({
                            label: a.laboratoryName,
                            value: a.laboratoryName
              value: a.id
                        })
                    })
                    this.itemParameterData.selectField.laboratory.select = data
                    this.itemParameterData.tagField.laboratory.select = data
          this.testObjectData.selectField.laboratoryId.select = data
          this.testObjectData.tagField.laboratoryId.select = data
          this.laboratory = data
                })
            },
            selectStandardMethods() {
@@ -362,18 +451,23 @@
                })
            },
            selectTestObjectByName() {
                this.$axios.get(this.$api.capacityScope.selectTestObjectByName).then(res => {
                    let data = []
        this.$axios.get(this.$api.capacityScope.getItemTree).then(res => {
                    res.data.forEach(a => {
                        data.push({
                            label: a.specimenName,
                            value: a.id,
                            type: 'success'
            this.cascaderFieldData(a)
                        })
          this.itemParameterData.cascaderField.sample.tree = res.data
                    })
                    this.itemParameterData.selectField.sample.select = data
                    this.itemParameterData.tagField.sample.select = data
      },
      cascaderFieldData(val){
        if(val.children === undefined) {
          return
        }else if(val.children.length==0){[
          delete val.children
        ]}else{
          val.children.forEach(a=>{
            this.cascaderFieldData(a)
                })
        }
            },
            getStandardTemplate() {
                this.$axios.get(this.$api.StandardTemplate.getStandardTemplate).then(res => {
@@ -395,6 +489,7 @@
                let up = false
                let add = false
                let del = false
        let product = false
                let select = 0
                for (var i = 0; i < power.length; i++) {
                    if (power[i].menuMethod == 'selectItemParameterList') {
@@ -423,6 +518,9 @@
                        if (power[i].menuMethod == 'addTestObject') {
                            add = true
                        }
            if (power[i].menuMethod == 'selectProductListByObjectId') {
              product = true
            }
                    }
                }
                if (this.radio === '0') {
@@ -433,6 +531,9 @@
                        this.itemParameterData.do.splice(0, 1)
                    }
                } else {
          if (!product) {
            this.testObjectData.do.splice(2, 1)
          }
                    if (!del) {
                        this.testObjectData.do.splice(1, 1)
                    }
@@ -445,7 +546,14 @@
                if (select == 1 || select == 3) this.radio = radio
                else if (select == 2) this.radio = '1'
                else this.radio = '-1'
            }
      },
      upProduct(row) {
        this.productData.entity.objectId = row.id
        this.diaProduct = true
      },
      openAdd2(){
          this.$refs.productData.openAddDia(this.$api.capacityScope.addProduct, {objectId: this.productData.entity.objectId});
      },
        }
    }
</script>
src/components/view/a6-device-management.vue
@@ -55,13 +55,14 @@
            <el-row class="title">
                <el-col :span="12" style="padding-left: 20px;">设备工具明细</el-col>
                <el-col :span="12" style="text-align: right;">
                    <el-button size="medium" type="primary" @click="dialogVisible2 = true">新增</el-button>
                </el-col>
            </el-row>
        </div>
        <div class="search">
            <div class="search_thing">
                <div class="search_label">状态:</div>
                <el-select v-model="componentData.entity.deviceStatus" placeholder="全部">
                <el-select v-model="componentData.entity.deviceStatus" placeholder="全部" size="small">
                    <el-option v-for="item in deviceStatusList" :key="item.value" :label="item.label" :value="item.value">
                    </el-option>
                </el-select>
@@ -76,19 +77,9 @@
                <div class="search_input"><el-input size="small" placeholder="请输入" clearable
                        v-model="componentData.entity.specificationModel" @keyup.enter.native="refreshTable()"></el-input></div>
            </div>
            <div class="search_thing">
                <div class="search_label">设备分类:</div>
                <el-select v-model="componentData.entity.largeCategory" placeholder="请选择">
                    <el-option v-for="item in equipmentList" :key="item.value" :label="item.label" :value="item.value">
                    </el-option>
                </el-select>
            </div>
            <div class="search_thing" style="padding-left: 30px;">
                <el-button size="small" @click="refresh()">重 置</el-button>
                <el-button size="small" type="primary" @click="refreshTable()">查 询</el-button>
                <el-col :span="12" style="text-align: right;">
                    <el-button size="medium" type="primary" @click="dialogVisible2 = true">新增</el-button>
                </el-col>
            </div>
        </div>
        <div class="table">
@@ -460,7 +451,7 @@
                options: [],
                labelPosition: 'right',
                dialogVisible: false,
                dialogVisible2: true,
                dialogVisible2: false,
                addPower: false,
                componentData: {
                    entity: {