gaoluyang
2025-02-14 5ba37c953aa14ac2f08931699378995af88c98a5
能力范围页面迁移
已修改4个文件
已添加5个文件
2203 ■■■■■ 文件已修改
src/api/structural/capability.js 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/structural/laboratoryScope.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/structural/structureTestObjectPart.js 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/Table/lims-table.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/capability/EditForm.vue 469 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/capability/bindPartDialog.vue 227 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/capability/bindSupplierDensityDialog.vue 165 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/capability/testObjectEditForm.vue 143 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/structural/capabilityAndLaboratory/capability/index.vue 1089 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/structural/capability.js
@@ -8,6 +8,14 @@
    params: query
  })
}
// èŽ·å–æ£€æµ‹å¯¹è±¡
export function selectTestObjectList(query) {
  return request({
    url: '/capacityScope/selectTestObjectList',
    method: 'post',
    params: query
  })
}
// æ–°å¢žæ£€éªŒé¡¹ç›®å‚æ•°
export function addItemParameter(query) {
  return request({
@@ -39,3 +47,59 @@
    method: 'get'
  })
}
// æ–°å¢žæ£€æµ‹å¯¹è±¡
export function addTestObject(query) {
  return request({
    url: '/capacityScope/addTestObject',
    method: 'post',
    params: query
  })
}
// åˆ é™¤æ£€æµ‹å¯¹è±¡
export function delTestObject(query) {
  return request({
    url: '/capacityScope/delTestObject',
    method: 'post',
    params: query
  })
}
// ä¿®æ”¹æ£€æµ‹å¯¹è±¡
export function upTestObject(query) {
  return request({
    url: '/capacityScope/upTestObject',
    method: 'post',
    params: query
  })
}
// æŸ¥è¯¢æ£€éªŒå¯¹è±¡çš„产品
export function selectProductListByObjectId(query) {
  return request({
    url: '/capacityScope/selectProductListByObjectId',
    method: 'post',
    params: query
  })
}
// æ–°å¢žäº§å“
export function addProduct(query) {
  return request({
    url: '/capacityScope/addProduct',
    method: 'post',
    params: query
  })
}
// åˆ é™¤äº§å“
export function delProduct(query) {
  return request({
    url: '/capacityScope/delProduct',
    method: 'post',
    params: query
  })
}
// ä¿®æ”¹äº§å“
export function upProduct(query) {
  return request({
    url: '/capacityScope/upProduct',
    method: 'post',
    params: query
  })
}
src/api/structural/laboratoryScope.js
@@ -1,6 +1,6 @@
import request from '@/utils/request'
// èŽ·å–æ£€éªŒé¡¹ç›®å‚æ•°
// èŽ·å–åœºæ‰€æžšä¸¾å€¼
export function obtainItemParameterList() {
  return request({
    url: '/laboratoryScope/obtainItemParameterList',
src/api/structural/structureTestObjectPart.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,42 @@
import request from '@/utils/request'
// æ£€éªŒå¯¹è±¡æ ¹æ®äº§å“id查询零件
export function selectByTestObjectId(query) {
  return request({
    url: '/structureTestObjectPart/selectByTestObjectId',
    method: 'post',
    params: query
  })
}
// æ£€éªŒå¯¹è±¡æ–°å¢žäº§å“é›¶ä»¶
export function addTestObjectPart(query) {
  return request({
    url: '/structureTestObjectPart/addTestObjectPart',
    method: 'post',
    params: query
  })
}
// æ£€éªŒå¯¹è±¡ä¿®æ”¹äº§å“é›¶ä»¶
export function updateTestObjectPart(query) {
  return request({
    url: '/structureTestObjectPart/updateTestObjectPart',
    method: 'post',
    params: query
  })
}
// æ£€éªŒå¯¹è±¡åˆ é™¤äº§å“é›¶ä»¶
export function deleteTestObjectPart(query) {
  return request({
    url: '/structureTestObjectPart/deleteTestObjectPart',
    method: 'post',
    params: query
  })
}
// æ ¹æ®äº§å“id查询零件
export function selectByProductId(query) {
  return request({
    url: 'ctPart/selectByProductId',
    method: 'post',
    params: query
  })
}
src/components/Table/lims-table.vue
@@ -31,7 +31,7 @@
            :filter-multiple="item.filterMultiple" :filtered-value="item.filteredValue"
            :filters="item.filters" :fixed="item.fixed" :label="item.label"
            :min-width="item.minWidth" :prop="item.prop"
            :show-overflow-tooltip="item.showOverflowTooltip"
            show-overflow-tooltip
            :sortable="item.sortable ? true : false" :type="item.type" :width="item.width"
            align="center">
            <!-- <div class="123" v-if="item.type == ''"> -->
src/components/capability/EditForm.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,469 @@
<template>
  <div>
    <el-dialog :title="operationType === 'add' ? '新增' : '编辑'" :visible.sync="editFormDia" width="60%" @close="closeDia">
      <el-form ref="editForm" :model="editForm" :rules="editFormRules" label-width="140px">
        <el-col :span="12">
          <el-form-item label="检验项:" prop="inspectionItem">
            <el-input v-model="editForm.inspectionItem" clearable size="small"></el-input>
          </el-form-item>
        </el-col>
        <el-col :span="12">
          <el-form-item label="检验项EN:" prop="inspectionItemEn">
            <el-input v-model="editForm.inspectionItemEn" clearable size="small"></el-input>
          </el-form-item>
        </el-col>
        <el-col :span="12">
          <el-form-item label="检验子项:" prop="inspectionItemSubclass">
            <el-input v-model="editForm.inspectionItemSubclass" clearable size="small"></el-input>
          </el-form-item>
        </el-col>
        <el-col :span="12">
          <el-form-item label="检验子项EN:" prop="inspectionItemSubclassEn">
            <el-input v-model="editForm.inspectionItemSubclassEn" clearable size="small"></el-input>
          </el-form-item>
        </el-col>
        <el-col :span="12">
          <el-form-item label="检验对象:" prop="sample">
            <el-cascader v-model="editForm.sample" :options="itemParameterData.cascaderField.sample.tree"
                         :props="{value:'name',label:'name',checkStrictly: true, multiple: true}"
                         :show-all-levels="false"  clearable
                         filterable placeholder="请选择" size="small" style="width: 100%;"></el-cascader>
          </el-form-item>
        </el-col>
        <el-col :span="12">
          <el-form-item label="单价(元):" prop="price">
            <el-input v-model="editForm.price" clearable size="small"></el-input>
          </el-form-item>
        </el-col>
        <el-col :span="12">
          <el-form-item label="场所:" prop="laboratory">
            <el-select v-model="editForm.laboratory" clearable placeholder="请选择" size="small" style="width: 100%">
              <el-option v-for="item in laboratoryList" :key="item.label" :label="item.label" :value="item.label"></el-option>
            </el-select>
          </el-form-item>
        </el-col>
        <el-col :span="12">
          <el-form-item label="试验室:" prop="sonLaboratory">
            <el-select v-model="editForm.sonLaboratory" clearable placeholder="请选择" size="small" style="width: 100%">
              <el-option v-for="item in sonLaboratoryList" :key="item.value" :label="item.label" :value="item.value"></el-option>
            </el-select>
          </el-form-item>
        </el-col>
        <el-col :span="12">
          <el-form-item label="要求描述:" prop="askTell">
            <el-input v-model="editForm.askTell" clearable size="small"></el-input>
          </el-form-item>
        </el-col>
        <el-col :span="12">
          <el-form-item label="要求值:" prop="ask">
            <el-input v-model="editForm.ask" clearable size="small"></el-input>
          </el-form-item>
        </el-col>
        <el-col :span="12">
          <el-form-item label="计量单位:" prop="unit">
            <el-select v-model="editForm.unit" clearable placeholder="请选择" size="small" style="width: 100%">
              <el-option v-for="item in unitList" :key="item.value" :label="item.label" :value="item.value"></el-option>
            </el-select>
          </el-form-item>
        </el-col>
        <el-col :span="12">
          <el-form-item label="工时(H):" prop="manHour">
            <el-input v-model="editForm.manHour" clearable size="small"></el-input>
          </el-form-item>
        </el-col>
        <el-col :span="12">
          <el-form-item label="预计时间(H):" prop="manDay">
            <el-input v-model="editForm.manDay" clearable size="small"></el-input>
          </el-form-item>
        </el-col>
        <el-col :span="12">
          <el-form-item label="工时分组:" prop="manHourGroup">
            <el-input v-model="editForm.manHourGroup" clearable size="small"></el-input>
          </el-form-item>
        </el-col>
        <el-col :span="12">
          <el-form-item label="检验项类型:" prop="inspectionItemType">
            <el-select v-model="editForm.inspectionItemType" clearable placeholder="请选择" size="small" style="width: 100%">
              <el-option v-for="item in inspectionItemTypeList" :key="item.value" :label="item.label" :value="item.value"></el-option>
            </el-select>
          </el-form-item>
        </el-col>
        <el-col :span="12">
          <el-form-item label="检验值类型:" prop="inspectionValueType">
            <el-select v-model="editForm.inspectionValueType" clearable placeholder="请选择" size="small" style="width: 100%">
              <el-option v-for="item in inspectionValueTypeList" :key="item.value" :label="item.label" :value="item.value"></el-option>
            </el-select>
          </el-form-item>
        </el-col>
        <el-col :span="12">
          <el-form-item label="字典类型:" prop="dic">
            <el-select v-model="editForm.dic" clearable placeholder="请选择" size="small" style="width: 100%">
              <el-option v-for="item in dicList" :key="item.value" :label="item.label" :value="item.value"></el-option>
            </el-select>
          </el-form-item>
        </el-col>
        <el-col :span="12">
          <el-form-item label="特殊标识:" prop="bsm">
            <el-select v-model="editForm.bsm" clearable placeholder="请选择" size="small" style="width: 100%">
              <el-option v-for="item in bsmList" :key="item.value" :label="item.label" :value="item.value"></el-option>
            </el-select>
          </el-form-item>
        </el-col>
        <el-col :span="12">
          <el-form-item label="原始记录模板:" prop="templateId">
            <el-select v-model="editForm.templateId" clearable placeholder="请选择" size="small" style="width: 100%">
              <el-option v-for="item in templateIdList" :key="item.value" :label="item.label" :value="item.value"></el-option>
            </el-select>
          </el-form-item>
        </el-col>
        <el-col :span="12">
          <el-form-item label="检验项分类:" prop="inspectionItemClass">
            <el-input v-model="editForm.inspectionItemClass" clearable size="small"></el-input>
          </el-form-item>
        </el-col>
        <el-col :span="12">
          <el-form-item label="检验项分类EN:" prop="inspectionItemClassEn">
            <el-input v-model="editForm.inspectionItemClassEn" clearable size="small"></el-input>
          </el-form-item>
        </el-col>
        <el-col :span="12">
          <el-form-item label="试验方法:" prop="method">
            <el-select v-model="editForm.method" clearable multiple placeholder="请选择" size="small" style="width: 100%">
              <el-option v-for="item in methodList" :key="item.value" :label="item.label" :value="item.value"></el-option>
            </el-select>
          </el-form-item>
        </el-col>
        <el-col :span="12">
          <el-form-item label="条件:" prop="radiusList">
            <el-select v-model="editForm.radiusList" allow-create default-first-option filterable multiple
                       placeholder="请选择"
                       size="small"
                       style="width: 100%">
              <el-option v-for="item in radiusListList" :key="item.value" :label="item.label" :value="item.value"></el-option>
            </el-select>
          </el-form-item>
        </el-col>
        <el-col :span="12">
          <el-form-item label="收费标准(元/次):" prop="rates">
            <el-input v-model="editForm.rates" clearable size="small"></el-input>
          </el-form-item>
        </el-col>
      </el-form>
      <span slot="footer" class="dialog-footer">
        <el-button @click="closeDia">取 æ¶ˆ</el-button>
        <el-button :loading="editLoad" type="primary" @click="handleEdit">提 äº¤</el-button>
      </span>
    </el-dialog>
  </div>
</template>
<script>
export default {
  name: "EditForm",
  // import å¼•入的组件需要注入到对象中才能使用
  components: {},
  data() {
    // è¿™é‡Œå­˜æ”¾æ•°æ®
    return {
      editFormDia: false,
      editLoad: false,
      editForm: {
        inspectionItem: '', // æ£€éªŒé¡¹
        inspectionItemEn: '', // æ£€éªŒé¡¹EN
        inspectionItemSubclass: '', // æ£€éªŒå­é¡¹
        inspectionItemSubclassEn: '', // æ£€éªŒå­é¡¹EN
        sample: [], // æ£€éªŒå¯¹è±¡
        price: '', // å•ä»·
        laboratory: '', // åœºæ‰€
        sonLaboratory: '', // è¯•验室
        askTell: '', // è¦æ±‚描述
        ask: '', // è¦æ±‚值
        unit: '', // è®¡é‡å•位
        manHour: '', // å·¥æ—¶
        manDay: '', // é¢„计时间
        manHourGroup: '', // å·¥æ—¶åˆ†ç»„
        inspectionItemType: '', // æ£€éªŒé¡¹ç±»åž‹
        inspectionValueType: '', // æ£€éªŒå€¼ç±»åž‹
        dic: '', // å­—典类型
        bsm: '', // ç‰¹æ®Šæ ‡è¯†
        templateId: '', // åŽŸå§‹è®°å½•æ¨¡æ¿
        inspectionItemClass: '', // æ£€éªŒé¡¹åˆ†ç±»
        inspectionItemClassEn: '', // æ£€éªŒé¡¹åˆ†ç±»EN
        method: '', // è¯•验方法
        radiusList: [], // æ¡ä»¶
        rates: '', // æ¡ä»¶
      },
      sampleList: [], // æ£€éªŒå¯¹è±¡ä¸‹æ‹‰æ¡†
      laboratoryList: [], // åœºæ‰€ä¸‹æ‹‰æ¡†
      sonLaboratoryList: [], // è¯•验室下拉框
      unitList: [], // è®¡é‡å•位下拉框
      inspectionItemTypeList: [], // æ£€éªŒé¡¹ç±»åž‹ä¸‹æ‹‰æ¡†
      inspectionValueTypeList: [], // æ£€éªŒå€¼ç±»åž‹ä¸‹æ‹‰æ¡†
      dicList: [], // å­—典类型下拉框
      bsmList: [], // ç‰¹æ®Šæ ‡è¯†ä¸‹æ‹‰æ¡†
      templateIdList: [], // åŽŸå§‹è®°å½•æ¨¡æ¿ä¸‹æ‹‰æ¡†
      methodList: [], // è¯•验方法下拉框
      radiusListList: [], // æ¡ä»¶ä¸‹æ‹‰æ¡†
      itemParameterData: {
        cascaderField: {
          sample: {
            tree: []
          },
        }
      },
      editFormRules: {
        inspectionItem: [
          { required: true, message: '请选择检验项', trigger: 'change' }
        ],
        sonLaboratory: [
          { required: true, message: '请选择试验室', trigger: 'change' }
        ],
        unit: [
          { required: true, message: '请选择计量单位', trigger: 'change' }
        ],
        inspectionItemType: [
          { required: true, message: '请选择检验项类型', trigger: 'change' }
        ],
        inspectionValueType: [
          { required: true, message: '请选择检验值类型', trigger: 'change' }
        ],
        templateId: [
          { required: true, message: '请选择原始记录模板', trigger: 'change' }
        ]
      },
      operationType: ''
    }
  },
  // æ–¹æ³•集合
  methods: {
    openDia (type, row) {
      this.operationType = type
      this.editFormDia = true
      this.selectEnumByCategory() // æ£€éªŒé¡¹ç±»åž‹
      this.selectEnumByCategoryForSpecial() // ç‰¹æ®Šæ ‡è¯†
      this.selectEnumByCategoryForInspectionValueType() // æ£€éªŒå€¼ç±»åž‹
      this.obtainItemParameterList() // åœºæ‰€ç±»åž‹
      this.selectEnumByCategoryForSLaboratory() // å­å®žéªŒå®¤
      this.getStandardTemplate() // åŽŸå§‹è®°å½•æ¨¡æ¿ä¸‹æ‹‰æ¡†
      this.selectEnumByCategoryForUnit() // è®¡é‡å•位
      this.selectStandardMethods() // è¯•验方法
      this.selectDocUnit() // å­—典类型
      this.selectTestObjectByName() // æ£€éªŒå¯¹è±¡
      if (type === 'add') {
        this.editForm = {
          inspectionItem: '', // æ£€éªŒé¡¹
            inspectionItemEn: '', // æ£€éªŒé¡¹EN
            inspectionItemSubclass: '', // æ£€éªŒå­é¡¹
            inspectionItemSubclassEn: '', // æ£€éªŒå­é¡¹EN
            sample: [], // æ£€éªŒå¯¹è±¡
            price: '', // å•ä»·
            laboratory: '', // åœºæ‰€
            sonLaboratory: '', // è¯•验室
            askTell: '', // è¦æ±‚描述
            ask: '', // è¦æ±‚值
            unit: '', // è®¡é‡å•位
            manHour: '', // å·¥æ—¶
            manDay: '', // é¢„计时间
            manHourGroup: '', // å·¥æ—¶åˆ†ç»„
            inspectionItemType: '', // æ£€éªŒé¡¹ç±»åž‹
            inspectionValueType: '', // æ£€éªŒå€¼ç±»åž‹
            dic: '', // å­—典类型
            bsm: '', // ç‰¹æ®Šæ ‡è¯†
            templateId: '', // åŽŸå§‹è®°å½•æ¨¡æ¿
            inspectionItemClass: '', // æ£€éªŒé¡¹åˆ†ç±»
            inspectionItemClassEn: '', // æ£€éªŒé¡¹åˆ†ç±»EN
            method: '', // è¯•验方法
            radiusList: [], // æ¡ä»¶
            rates: '', // æ¡ä»¶
        }
        this.$refs.editForm.resetFields()
      } else {
        this.editForm = this.HaveJson(row)
        this.editForm.sample = JSON.parse(this.editForm.sample)
        this.editForm.radiusList = JSON.parse(this.editForm.radiusList)
        this.editForm.method = JSON.parse(this.editForm.method)
      }
    },
    // æäº¤ç¼–辑
    handleEdit () {
      this.$refs.editForm.validate(valid => {
        if (valid) {
          this.editLoad = true
          let obj = this.HaveJson(this.editForm)
          obj.method = JSON.stringify(obj.method)
          obj.sample = JSON.stringify(obj.sample)
          console.log('obj.radiusList---', obj.radiusList)
          if (obj.radiusList !== null && obj.radiusList.length > 0) {
            obj.radiusList = JSON.stringify(obj.radiusList)
          }
          if(obj.id){
            // ä¿®æ”¹
            this.$axios.post(this.$api.capacityScope.upItemParameter, obj, {
              headers: {
                'Content-Type': 'application/json'
              }
            }).then(res => {
              this.editLoad = false
              if (res.code === 201) {
                return
              }
              this.$message.success('修改成功')
              this.editFormDia = false
              this.$parent.refreshTable('page')
            }).catch(e => {
              this.editLoad = false
              this.editFormDia = false
            })
          }else{
            // æ–°å¢ž
            this.$axios.post(this.$api.capacityScope.addItemParameter, obj, {
              headers: {
                'Content-Type': 'application/json'
              }
            }).then(res => {
              this.editLoad = false
              if (res.code === 201) {
                return
              }
              this.$message.success('添加成功')
              this.editFormDia = false
              this.$parent.refreshTable('page')
            }).catch(e => {
              this.editLoad = false
              this.editFormDia = false
            })
          }
        }
      })
    },
    // å…³é—­å¼¹æ¡†
    closeDia () {
      this.editFormDia = false
      this.$refs.editForm.resetFields()
    },
    selectTestObjectByName() {
      this.$axios.get(this.$api.capacityScope.getItemTree).then(res => {
        res.data.forEach(a=>{
          this.cascaderFieldData(a)
        })
        this.itemParameterData.cascaderField.sample.tree = res.data
        // this.sampleTree = res.data
        // console.log(2222,res.data)
      })
    },
    cascaderFieldData(val){
      if(val.children === undefined) {
        return
      }else if(val.children.length==0){
        val.label = val.name
        val.value = val.id
        delete val.children
      }else{
        val.label = val.name
        val.value = val.id
        val.children.forEach(a=>{
          a.label = a.name
          a.value = a.id
          this.cascaderFieldData(a)
        })
      }
    },
    selectStandardMethods() {
      this.$axios.get(this.$api.standardMethod.selectStandardMethods).then(res => {
        let data = []
        res.data.forEach(a => {
          data.push({
            label: a.code,
            value: a.code
          })
        })
        this.methodList = data
      })
    },
    selectDocUnit() {
      this.$axios.post(this.$api.enums.getDic).then(res => {
        this.dicList = res.data.map(m => {
          return {
            label: m,
            value: m
          }
        })
      })
    },
    obtainItemParameterList() {
      this.$axios.get(this.$api.laboratoryScope.obtainItemParameterList).then(res => {
        let data = []
        // let data0 = []
        res.data.forEach(a => {
          data.push({
            label: a.laboratoryName,
            value: a.id
          })
          // data0.push({
          //   label: a.laboratoryName,
          //   value: a.laboratoryName
          // })
        })
        this.laboratoryList = data
      })
    },
    selectEnumByCategory() {
      this.$axios.post(this.$api.enums.selectEnumByCategory, {
        category: "检验项类型"
      }).then(res => {
        res.data[1].type = 'info'
        this.inspectionItemTypeList = res.data
      })
    },
    selectEnumByCategoryForInspectionValueType() {
      this.$axios.post(this.$api.enums.selectEnumByCategory, {
        category: "检验值类型"
      }).then(res => {
        this.inspectionValueTypeList = res.data
      })
    },
    getStandardTemplate() {
      this.$axios.get(this.$api.StandardTemplate.getStandardTemplate).then(res => {
        let data = []
        res.data.forEach(a => {
          data.push({
            label: a.name,
            value: a.id,
            type: 'success'
          })
        })
        this.templateIdList = data
      })
    },
    selectEnumByCategoryForSpecial() {
      this.$axios.post(this.$api.enums.selectEnumByCategory, {
        category: "是否"
      }).then(res => {
        this.bsmList = res.data
      })
    },
    selectEnumByCategoryForSLaboratory() {
      this.$axios.post(this.$api.enums.selectEnumByCategory, {
        category: "子实验室"
      }).then(res => {
        this.sonLaboratoryList = res.data
      })
    },
    selectEnumByCategoryForUnit() {
      this.$axios.post(this.$api.enums.selectEnumByCategory, {
        category: "单位"
      }).then(res => {
        this.unitList = res.data
      })
    },
  },
}
</script>
<style scoped>
>>>.el-dialog__body {
  height: 620px;
  overflow-y: auto;
}
</style>
src/components/capability/bindPartDialog.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,227 @@
<template>
  <div>
    <el-dialog title="零件绑定" :visible.sync="isShow" width="800px" @close="$emit('closeBindPartDialog')">
      <div class="body" v-if="isShow" style="height: 500px;overflow-y: auto;padding: 5px 0;">
        <lims-table :tableData="tableData" :column="column"
                    :page="page" :tableLoading="tableLoading"></lims-table>
      </div>
      <span slot="footer" class="dialog-footer">
        <el-button @click="$emit('closeBindPartDialog')">取 æ¶ˆ</el-button>
        <el-button type="primary" @click="addBindPart" :loading="addBindLoad">新 å¢ž</el-button>
      </span>
    </el-dialog>
    <el-dialog :title="dialogTitle" :visible.sync="addBindPartDialog" width="400px" @close="closeBindPartDialog"
               :close-on-click-modal="false" >
      <div class="body" v-if="addBindPartDialog">
        <el-form label-position="right" label-width="80px"
                 ref="bindPartData"
                 :rules="bindPartDataRules"
                 :model="bindPartData">
          <el-form-item label="零件号:" prop="partNo">
            <el-input v-model="bindPartData.partNo" size="small"></el-input>
          </el-form-item>
          <el-form-item label="颜色:">
            <el-input v-model="bindPartData.color" size="small"></el-input>
          </el-form-item>
          <el-form-item label="色标:">
            <el-input v-model="bindPartData.colorCode" size="small"></el-input>
          </el-form-item>
        </el-form>
      </div>
      <span slot="footer" class="dialog-footer">
        <el-button @click="closeBindPartDialog">取 æ¶ˆ</el-button>
        <el-button type="primary" @click="submitBind" :loading="bindLoad">ç¡® è®¤</el-button>
      </span>
    </el-dialog>
  </div>
</template>
<script>
import limsTable from "@/components/Table/lims-table.vue";
import {selectByProductId, selectByTestObjectId} from "@/api/structural/structureTestObjectPart";
export default {
  name: "bindPartDialog",
  // import å¼•入的组件需要注入到对象中才能使用
  components: {limsTable},
  props: {
    bindPartDialog: {
      type: Boolean,
      default: () => false
    },
    type: { // é›¶ä»¶ç»‘定的类型--0:检验对象,1:产品维护
      type: Number,
      default: () => null
    },
    currentRow : { // é€‰æ‹©æœ¬æ¡æ•°æ®çš„信息
      type: Object,
      default: () => {}
    }
  },
  data() {
    // è¿™é‡Œå­˜æ”¾æ•°æ®
    return {
      isShow: this.bindPartDialog,
      dialogTitle: '新增零件绑定',
      tableData: [],
      tableLoading: false,
      column: [
        {label: '零件号', prop: 'partNo'},
        {label: '颜色', prop: 'color'},
        {label: '色标', prop: 'colorCode'},
        {
          dataType: 'action',
          fixed: 'right',
          label: '操作',
          operation: [
            {
              name: '编辑',
              type: 'text',
              clickFun: (row) => {
                this.editForm(row);
              },
            },
            {
              name: '删除',
              type: 'text',
              clickFun: (row) => {
                this.delete(row);
              },
            },
          ]
        }
      ],
      page: {
        total:0,
        size:10,
        current:0
      },
      bindPartComponent: {
        entity: {
          orderBy: {
            field: 'id',
            order: 'asc'
          }
        },
        isPage: true,
        isIndex: true,
        showSelect: false,
        select: true,
        do: [{
          id: 'update',
          font: '编辑',
          type: 'text',
          method: 'doDiy',
          field: []
        }, {
          id: 'delete',
          font: '删除',
          type: 'text',
          method: 'doDiy'
        }],
        tagField: {},
        selectField: {},
        requiredAdd: ['partNo'],
        requiredUp: ['partNo'],
      },
      addBindPartDialog: false,
      bindPartData: {
        partNo: '', // é›¶ä»¶å·
        color: '', // é¢œè‰²
        colorCode: '', // è‰²æ ‡
      },
      bindPartDataRules: {
        partNo: [
          { required: true, message: '请填写零件号', trigger: 'blur' }
        ]
      },
      bindLoad: false,
      upIndex: 0,
      addBindLoad: false,
    }
  },
  mounted() {
    this.getList()
  },
  // æ–¹æ³•集合
  methods: {
    getList() {
      this.tableLoading = true
      // æ ¹æ®ç±»åž‹åˆ¤æ–­æ˜¯æ£€éªŒå¯¹è±¡é›¶ä»¶ç»‘定还是产品维护零件绑定
      if (this.type === 0) {
        selectByTestObjectId(this.currentRow.id).then(res => {
          this.tableLoading = false
          if (res.code === 200) {
            this.tableData = res.data
            this.page.total = res.total
          }
        }).catch(err => {
          this.tableLoading = false
        })
      } else {
        selectByProductId(this.currentRow.id).then(res => {
          this.tableLoading = false
          if (res.code === 200) {
            this.tableData = res.data
            this.page.total = res.total
          }
        }).catch(err => {
          this.tableLoading = false
        })
      }
    },
    addBindPart () {
      this.addBindPartDialog = true
    },
    // æäº¤é›¶ä»¶ç»‘定
    submitBind () {
      this.$refs['bindPartData'].validate((valid) => {
        if (valid) {
          // æ ¹æ®ç±»åž‹åˆ¤æ–­æ˜¯æ£€éªŒå¯¹è±¡é›¶ä»¶ç»‘定还是产品维护零件绑定
          const params = this.type === 0 ? {
            testObjectId: this.currentRow.id,
            color: this.bindPartData.color,
            colorCode: this.bindPartData.colorCode,
            partNo: this.bindPartData.partNo,
            } : {
            productId: this.currentRow.id,
            color: this.bindPartData.color,
            colorCode: this.bindPartData.colorCode,
            partNo: this.bindPartData.partNo,
          }
          this.bindLoad = true
          if (this.type === 0) {
          }
          this.$axios.post(url, params, {
            headers: {
              'Content-Type': 'application/json'
            }
          }).then(res => {
            this.bindLoad = false
            if (res.code === 200) {
              this.$refs['bindPartData'].resetFields();
              this.addBindPartDialog = false
              this.$message.success('操作成功')
              this.getList()
            }
          }).catch(err => {
            this.bindLoad = false
            console.log(err)
          })
        } else {
          console.log('error submit!!');
          return false;
        }
      })
    },
    closeBindPartDialog () {
      this.$refs['bindPartData'].resetFields();
      this.addBindPartDialog = false
    },
  },
}
</script>
<style scoped>
</style>
src/components/capability/bindSupplierDensityDialog.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,165 @@
<template>
  <div>
    <el-dialog title="厂家密度绑定" :visible.sync="isShow" width="800px" @close="$emit('closeBindPartDialog')">
      <div class="body" v-if="isShow" style="height: 500px;overflow-y: auto;padding: 5px 0;">
<!--        <ValueTable ref="bindPartComponent"-->
<!--                    :url="searchUrl"-->
<!--                    :upUrl="upUrl"-->
<!--                    :delUrl="delUrl"-->
<!--                    :componentData="bindPartComponent"-->
<!--                    :key="upIndex"/>-->
      </div>
      <span slot="footer" class="dialog-footer">
        <el-button @click="$emit('closeBindPartDialog')">取 æ¶ˆ</el-button>
        <el-button type="primary" @click="addBindPart" :loading="addBindLoad">新 å¢ž</el-button>
      </span>
    </el-dialog>
    <el-dialog title="新增厂家密度绑定" :visible.sync="addBindSupplierDensityDialog" width="400px" @close="closeBindPartDialog":close-on-click-modal="false" >
      <div class="body" v-if="addBindSupplierDensityDialog">
        <el-form label-position="right" label-width="80px"
                 ref="bindSupplierDensityData"
                 :rules="bindPartDataRules"
                 :model="bindSupplierDensityData">
          <el-form-item label="型号:" prop="model">
            <el-input v-model="bindSupplierDensityData.model" size="small"></el-input>
          </el-form-item>
          <el-form-item label="厂家:" prop="supplierName">
            <el-input v-model="bindSupplierDensityData.supplierName" size="small"></el-input>
          </el-form-item>
          <el-form-item label="密度:" prop="densityValue">
            <el-input v-model="bindSupplierDensityData.densityValue" size="small"></el-input>
          </el-form-item>
        </el-form>
      </div>
      <span slot="footer" class="dialog-footer">
        <el-button @click="closeBindPartDialog">取 æ¶ˆ</el-button>
        <el-button type="primary" @click="submitBind" :loading="bindLoad">ç¡® è®¤</el-button>
      </span>
    </el-dialog>
  </div>
</template>
<script>
// import ValueTable from "../../tool/value-table.vue";
export default {
  name: "bindSupplierDensityDialog",
  // import å¼•入的组件需要注入到对象中才能使用
  components: {},
  props: {
    bindSupplierDensityDialog: {
      type: Boolean,
      default: () => false
    },
    currentRow : { // é€‰æ‹©æœ¬æ¡æ•°æ®çš„信息
      type: Object,
      default: () => {}
    }
  },
  data() {
    // è¿™é‡Œå­˜æ”¾æ•°æ®
    return {
      searchUrl: '', // æŸ¥è¯¢
      upUrl: '', // ç¼–辑
      delUrl: '',  // åˆ é™¤
      isShow: this.bindSupplierDensityDialog,
      bindPartComponent: {
        entity: {
          orderBy: {
            field: 'id',
            order: 'asc'
          }
        },
        isPage: true,
        isIndex: true,
        showSelect: false,
        select: true,
        do: [{
          id: 'update',
          font: '编辑',
          type: 'text',
          method: 'doDiy',
          field: []
        }, {
          id: 'delete',
          font: '删除',
          type: 'text',
          method: 'doDiy'
        }],
        tagField: {},
        selectField: {},
        requiredAdd: ['supplierName', 'densityValue'],
        requiredUp: ['supplierName', 'densityValue'],
      },
      addBindSupplierDensityDialog: false,
      bindSupplierDensityData: {
        model: '', // åž‹å·
        supplierName: '', // åނ家
        densityValue: '', // å¯†åº¦
      },
      bindPartDataRules: {
        supplierName: [
          { required: true, message: '请填写厂家名称', trigger: 'blur' }
        ],
        densityValue: [
          { required: true, message: '请填写密度', trigger: 'blur' }
        ],
      },
      bindLoad: false,
      upIndex: 0,
      addBindLoad: false,
    }
  },
  mounted() {
      this.$set(this.bindPartComponent.entity, 'productId', this.currentRow.id)
  },
  // æ–¹æ³•集合
  methods: {
    addBindPart () {
      this.addBindSupplierDensityDialog = true
    },
    // æäº¤é›¶ä»¶ç»‘定
    submitBind () {
      this.$refs['bindSupplierDensityData'].validate((valid) => {
        if (valid) {
          // æ ¹æ®ç±»åž‹åˆ¤æ–­æ˜¯æ£€éªŒå¯¹è±¡é›¶ä»¶ç»‘定还是产品维护零件绑定
          const params = {
            productId: this.currentRow.id,
            model: this.bindSupplierDensityData.model,
            supplierName: this.bindSupplierDensityData.supplierName,
            densityValue: this.bindSupplierDensityData.densityValue,
            }
          this.bindLoad = true
          const url = this.$api.productSupplierDensity.addProductSupplierDensity
          this.$axios.post(url, params, {
            headers: {
              'Content-Type': 'application/json'
            }
          }).then(res => {
            this.bindLoad = false
            if (res.code === 200) {
              this.$refs['bindSupplierDensityData'].resetFields();
              this.addBindSupplierDensityDialog = false
              this.$message.success('操作成功')
              this.$refs.bindPartComponent.selectList()
            }
          }).catch(err => {
            this.bindLoad = false
            console.log(err)
          })
        } else {
          console.log('error submit!!');
          return false;
        }
      })
    },
    closeBindPartDialog () {
      this.$refs['bindSupplierDensityData'].resetFields();
      this.addBindSupplierDensityDialog = false
    },
  },
}
</script>
<style scoped>
</style>
src/components/capability/testObjectEditForm.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,143 @@
<template>
  <div>
    <el-dialog :title="operationType === 'add' ? '新增' : '编辑'" :visible.sync="editFormDia" width="500px" @close="closeDia">
      <el-form ref="editForm" :model="editForm" :rules="editFormRules" label-width="120px" label-position="right">
        <el-form-item label="场所:" prop="laboratoryId">
          <el-select v-model="editForm.laboratoryId" clearable placeholder="请选择" size="small" style="width: 100%">
            <el-option v-for="item in laboratoryList" :key="item.label" :label="item.label" :value="item.label"></el-option>
          </el-select>
        </el-form-item>
        <el-form-item label="检验对象:" prop="specimenName">
          <el-input v-model="editForm.specimenName" clearable size="small"></el-input>
        </el-form-item>
        <el-form-item label="检验对象EN:" prop="specimenNameEn">
          <el-input v-model="editForm.specimenNameEn" clearable size="small"></el-input>
        </el-form-item>
        <el-form-item label="对象代号:" prop="code">
          <el-input v-model="editForm.code" clearable size="small"></el-input>
        </el-form-item>
        <el-form-item label="对象类型:" prop="objectType">
          <el-select v-model="editForm.objectType" clearable placeholder="请选择" size="small" style="width: 100%">
            <el-option v-for="item in dict.type.object_type" :key="item.value" :label="item.label" :value="item.value"></el-option>
          </el-select>
        </el-form-item>
      </el-form>
      <span slot="footer" class="dialog-footer">
        <el-button @click="closeDia">取 æ¶ˆ</el-button>
        <el-button :loading="editLoad" type="primary" @click="handleEdit">提 äº¤</el-button>
      </span>
    </el-dialog>
  </div>
</template>
<script>
import {obtainItemParameterList} from "@/api/structural/laboratoryScope";
import {addTestObject, upTestObject} from "@/api/structural/capability";
export default {
  name: "EditForm",
  // import å¼•入的组件需要注入到对象中才能使用
  dicts: ['object_type'],
  components: {},
  data() {
    // è¿™é‡Œå­˜æ”¾æ•°æ®
    return {
      editFormDia: false,
      editLoad: false,
      editForm: {
        laboratoryId: '', // åœºæ‰€
        specimenName: '', // æ£€éªŒå¯¹è±¡
        specimenNameEn: '', // æ£€éªŒå¯¹è±¡EN
        code: '', // å¯¹è±¡ä»£å·
        objectType: '', // å¯¹è±¡ç±»åž‹
      },
      laboratoryList: [],
      editFormRules: {
        laboratoryId: [
          { required: true, message: '请选择场所', trigger: 'change' }
        ],
        specimenName: [
          { required: true, message: '请输入检验对象', trigger: 'blur' }
        ],
        code: [
          { required: true, message: '请输入对象代号', trigger: 'blur' }
        ],
      },
      operationType: ''
    }
  },
  // æ–¹æ³•集合
  methods: {
    openDia (type, row) {
      this.operationType = type
      this.obtainItemParameterList()
      this.editFormDia = true
      if (type === 'add') {
        this.$refs.editForm.resetFields()
      } else {
        this.editForm = this.HaveJson(row)
      }
    },
    // æäº¤ç¼–辑
    handleEdit () {
      this.$refs.editForm.validate(valid => {
        if (valid) {
          this.editLoad = true
          let obj = this.HaveJson(this.editForm)
          if(obj.id){
            // ä¿®æ”¹
            upTestObject(obj).then(res => {
              this.editLoad = false
              if (res.code === 201) {
                return
              }
              this.$message.success('修改成功')
              this.closeDia()
            }).catch(e => {
              this.editLoad = false
              this.editFormDia = false
            })
          }else{
            // æ–°å¢ž
            addTestObject(obj).then(res => {
              this.editLoad = false
              if (res.code === 201) {
                return
              }
              this.$message.success('添加成功')
              this.closeDia()
            }).catch(e => {
              this.editLoad = false
              this.editFormDia = false
            })
          }
        }
      })
    },
    // å…³é—­å¼¹æ¡†
    closeDia () {
      this.editFormDia = false
      this.$refs.editForm.resetFields()
      this.$parent.refreshTable('page')
    },
    // èŽ·å–åœºæ‰€ä¸‹æ‹‰æ¡†çš„å€¼
    obtainItemParameterList() {
      obtainItemParameterList().then(res => {
        let data = []
        res.data.forEach(a => {
          data.push({
            label: a.laboratoryName,
            value: a.id
          })
        })
        this.laboratoryList = data
      })
    },
  },
}
</script>
<style scoped>
</style>
src/views/structural/capabilityAndLaboratory/capability/index.vue
@@ -3,631 +3,348 @@
    <div>
      <el-row class="title">
        <el-col :span="12" style="text-align: left">
          <el-radio-group v-model="radio" @input="selectorSwitch" size="medium" fill="#409EFF">
          <el-radio-group v-model="radio" size="medium" fill="#409EFF">
            <el-radio-button :label="0">检验项目参数</el-radio-button>
            <el-radio-button :label="1">检验对象</el-radio-button>
          </el-radio-group>
        </el-col>
        <el-col :span="12" style="text-align: right;">
<!--          <el-button size="medium" @click="$refs.itemParameterTable.openUpload()" v-if="inPower">-->
<!--            <i class="el-icon-upload2" style="color: #3A7BFA;"></i>-->
<!--            <span style="color: #3A7BFA;">导入</span></el-button>-->
          <el-button size="medium" type="primary" v-if="radio == 1 && importExcel" @click="uploadDia = true">导入</el-button>
          <el-button size="medium" type="primary" @click="openAdd()" v-if="addPower">新增</el-button>
          <!-- <el-button size="medium" icon="el-icon-delete">删除</el-button> -->
          <el-upload v-if="radio === 0" ref='upload1'
                     style="display: inline;margin-right: 8px"
                     :action="uploadAction1"
                     :before-upload="beforeUpload1" :headers="token" :on-error="onError1"
                     :on-success="handleSuccessUp" :show-file-list="false" accept='.doc,.docx,.xls,.xlsx'>
            <el-button size="small" type="primary">导入</el-button>
          </el-upload>
          <el-button size="small" type="primary" v-if="radio === 1" @click="uploadDia = true">导入</el-button>
          <el-button size="small" type="primary" @click="openAdd()">新增</el-button>
        </el-col>
      </el-row>
    </div>
    <div v-if="radio==0" class="bodys">
      <div class="search">
        <div class="search_thing">
          <div class="search_label">检验项:</div>
          <div class="search_input"><el-input size="small" placeholder="请输入" clearable
                                              v-model="itemParameterForm.inspectionItem" @keyup.enter.native="refreshTable()"></el-input></div>
        </div>
        <div class="search_thing">
          <div class="search_label">检验子项:</div>
          <div class="search_input"><el-input size="small" placeholder="请输入" clearable
                                              v-model="itemParameterForm.inspectionItemSubclass" @keyup.enter.native="refreshTable()"></el-input>
          </div>
        </div>
        <div class="search_thing">
          <div class="search_label">检验对象:</div>
          <div class="search_input"><el-input size="small" placeholder="请输入" clearable
                                              v-model="itemParameterForm.sample" @keyup.enter.native="refreshTable()"></el-input>
          </div>
        </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>
        </div>
    <div>
      <el-form :model="itemParameterForm" ref="itemParameterForm" size="small" :inline="true">
        <el-form-item label="检验项" prop="inspectionItem" v-if="radio===0">
          <el-input size="small" placeholder="请输入" clearable
                    v-model="itemParameterForm.inspectionItem" @keyup.enter.native="refreshTable()">
          </el-input>
        </el-form-item>
        <el-form-item label="检验子项" prop="inspectionItemSubclass" v-if="radio===0">
          <el-input size="small" placeholder="请输入" clearable
                    v-model="itemParameterForm.inspectionItemSubclass" @keyup.enter.native="refreshTable()">
          </el-input>
        </el-form-item>
        <el-form-item label="检验对象" prop="sample">
          <el-input size="small" placeholder="请输入" clearable
                    v-model="itemParameterForm.sample" @keyup.enter.native="refreshTable()">
          </el-input>
        </el-form-item>
        <el-form-item>
          <el-button type="primary" icon="el-icon-search" size="mini" @click="refreshTable">查 è¯¢</el-button>
          <el-button icon="el-icon-refresh" size="mini" @click="refresh">重 ç½®</el-button>
        </el-form-item>
      </el-form>
      <div class="table" v-if="radio===0">
        <lims-table :tableData="tableData" :column="column"
                    :page="page" :tableLoading="tableLoading"></lims-table>
      </div>
      <div class="table">
<!--        <ValueTable ref="itemParameterTable"-->
<!--                    :url="$api.capacityScope.selectItemParameterList" v-if="PROJECT === '检测中心'"-->
<!--                    :upUrl="$api.capacityScope.upItemParameter" :delUrl="$api.capacityScope.delItemParameter"-->
<!--                    :inputUrl="$api.capacityScope.importData" :componentData="itemParameterData" :key="upIndex" />-->
<!--        <ValueTable ref="itemParameterTable" :url="$api.capacityScope.selectItemParameterList" v-if="PROJECT === '装备电缆'"-->
<!--                    :upUrl="$api.capacityScope.upItemParameter" :delUrl="$api.capacityScope.delItemParameter"-->
<!--                    :inputUrl="$api.capacityScope.importEquipData" :componentData="itemParameterData" :key="upIndex" />-->
      </div>
    </div>
    <div class="bodys">
      <div class="search" v-if="radio==1">
        <div class="search_thing">
          <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>
        <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>
        </div>
      </div>
      <div class="table" v-if="radio==1">
<!--        <ValueTable ref="testObjectTable" :url="$api.capacityScope.selectTestObjectList"-->
<!--                    :upUrl="$api.capacityScope.upTestObject" :delUrl="$api.capacityScope.delTestObject"-->
<!--                    :componentData="testObjectData" :key="upIndex" />-->
      <div class="table" v-if="radio===1">
        <lims-table :tableData="testObjectTableData" :column="testObjectColumn"
                    :page="testObjectPage" :tableLoading="tableLoading"></lims-table>
      </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"/>-->
        <lims-table :tableData="productData" :column="productColumn"
                    :page="productPage" :tableLoading="productableLoading"></lims-table>
      </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>
    <el-dialog title="数据导入" :visible.sync="uploadDia" width="500px">
<!--      <div style="margin: 0 auto;">-->
<!--        <el-upload ref="upload" drag :action="javaApi + $api.capacityScope.importExcel" :headers="token" :file-list="fileList" name="file"-->
<!--                   :auto-upload="false" accept=".xlsx" :limit="1" :on-change="beforeUpload" :on-success="onSuccess"-->
<!--                   :on-error="onError">-->
<!--          <i class="el-icon-upload"></i>-->
<!--          <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>-->
<!--        </el-upload>-->
<!--      </div>-->
    <el-dialog :visible.sync="uploadDia" title="数据导入" width="500px">
      <div style="margin: 0 auto;">
        <el-upload ref="upload" :action="uploadAction"
                   :auto-upload="false" :file-list="fileList"
                   :headers="token" :limit="1"
                   :on-change="beforeUpload" :on-error="onError" :on-success="onSuccess" accept=".xlsx" drag
                   name="file">
          <i class="el-icon-upload"></i>
          <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
        </el-upload>
      </div>
      <span slot="footer" class="dialog-footer">
        <el-button @click="uploadDia = false">取 æ¶ˆ</el-button>
        <el-button type="primary" @click="submitUpload()" :loading="uploading">上 ä¼ </el-button>
        <el-button :loading="uploading" type="primary" @click="submitUpload()">上 ä¼ </el-button>
      </span>
    </el-dialog>
    <!-- ç¼–辑 æ–°å¢ž -->
    <el-dialog
      :title="title"
      :visible.sync="dialogVisible"
      width="50%"
      :before-close="handleClose">
      <el-form :model="addOrupdateForm" label-width="120px" :rules="rules" inline ref="addOrupdateForm"  size="mini">
        <el-form-item label="检验项" prop="inspectionItem">
          <el-input v-model="addOrupdateForm.inspectionItem" placeholder="请输入检验项" size="mini" style="width: 220px;"></el-input>
        </el-form-item>
        <el-form-item label="检验项EN" >
          <el-input v-model="addOrupdateForm.inspectionItemEn" placeholder="请输入检验项EN" size="mini" style="width: 220px;"></el-input>
        </el-form-item>
        <el-form-item label="检验项子项" >
          <el-input v-model="addOrupdateForm.inspectionItemSubclass" placeholder="请输入检验项子项" size="mini" style="width: 220px;"></el-input>
        </el-form-item>
        <el-form-item label="检验子项EN" >
          <el-input v-model="addOrupdateForm.inspectionItemSubclassEn" placeholder="请输入检验子项EN" size="mini" style="width: 220px;"></el-input>
        </el-form-item>
        <el-form-item label="检验对象" >
          <el-cascader
            size="mini" style="width: 220px;"
            filterable
            v-model="addOrupdateForm.sample"
            :options="tree"
            :props="{value:'name',label: 'name', multiple: true, checkStrictly: true }"
            clearable></el-cascader>
          <!-- <el-input v-model="addOrupdateForm.sample" placeholder="请输入检验对象" size="mini" style="width: 220px;"></el-input> -->
        </el-form-item>
        <el-form-item label="单价(元)" >
          <el-input v-model="addOrupdateForm.price" placeholder="请输入单价" size="mini" style="width: 220px;"></el-input>
        </el-form-item>
        <el-form-item label="场所" >
          <el-select v-model="addOrupdateForm.laboratory" filterable size="small" style="width: 220px;">
            <el-option
              v-for="item in laboratory"
              :key="item.value"
              :label="item.label"
              :value="item.label">
            </el-option>
          </el-select>
        </el-form-item>
        <el-form-item label="试验室" prop="sonLaboratory">
          <el-select v-model="addOrupdateForm.sonLaboratory" filterable size="small" style="width: 220px;">
            <el-option
              v-for="item in dicList.sonLaboratory"
              :key="item.value"
              :label="item.label"
              :value="item.value">
            </el-option>
          </el-select>
        </el-form-item>
        <el-form-item label="要求描述" >
          <el-input v-model="addOrupdateForm.askTell" placeholder="请输入要求描述" size="mini" style="width: 220px;"></el-input>
        </el-form-item>
        <el-form-item label="要求值" >
          <el-input v-model="addOrupdateForm.ask" placeholder="请输入要求值" size="mini" style="width: 220px;"></el-input>
        </el-form-item>
        <el-form-item label="计量单位" prop="unit">
          <el-select v-model="addOrupdateForm.unit" filterable size="small" style="width: 220px;">
            <el-option
              v-for="item in dicList.unit"
              :key="item.value"
              :label="item.label"
              :value="item.value">
            </el-option>
          </el-select>
        </el-form-item>
        <el-form-item label="工时(H)" >
          <el-input v-model="addOrupdateForm.manHour" placeholder="请输入工时" size="mini" style="width: 220px;"></el-input>
        </el-form-item>
        <el-form-item label="预计时间(H)" prop="manDay">
          <el-input v-model="addOrupdateForm.manDay" placeholder="请输入预计时间" size="mini" style="width: 220px;"></el-input>
        </el-form-item>
        <el-form-item label="工时分组" >
          <el-input v-model="addOrupdateForm.manHourGroup" placeholder="请输入工时分组" size="mini" style="width: 220px;"></el-input>
        </el-form-item>
        <el-form-item label="检验项类型" prop="inspectionItemType">
          <el-select v-model="addOrupdateForm.inspectionItemType" filterable size="small" style="width: 220px;">
            <el-option
              v-for="item in dicList.inspectionItemType"
              :key="item.value"
              :label="item.label"
              :value="item.value">
            </el-option>
          </el-select>
        </el-form-item>
        <el-form-item label="检验值类型" prop="inspectionValueType">
          <el-select v-model="addOrupdateForm.inspectionValueType" filterable size="small" style="width: 220px;">
            <el-option
              v-for="item in dicList.inspectionValueType"
              :key="item.value"
              :label="item.label"
              :value="item.value">
            </el-option>
          </el-select>
        </el-form-item>
        <el-form-item label="字典类型" >
          <el-select v-model="addOrupdateForm.dic" clearable filterable size="small" style="width: 220px;">
            <el-option
              v-for="item in dicList.dic"
              :key="item.value"
              :label="item.label"
              :value="item.value">
            </el-option>
          </el-select>
        </el-form-item>
        <el-form-item label="特殊标识符">
          <el-select v-model="addOrupdateForm.bsm" filterable size="small" style="width: 220px;">
            <el-option
              v-for="item in dicList.bsm"
              :key="item.value"
              :label="item.label"
              :value="item.value">
            </el-option>
          </el-select>
        </el-form-item>
        <el-form-item label="原始记录模板" prop="templateId">
          <el-select v-model="addOrupdateForm.templateId" filterable size="small" style="width: 220px;">
            <el-option
              v-for="item in dicList.templateId"
              :key="item.value"
              :label="item.label"
              :value="item.value">
            </el-option>
          </el-select>
        </el-form-item>
        <el-form-item label="检验项分类" >
          <el-input v-model="addOrupdateForm.inspectionItemClass" placeholder="请输入检验项分类" size="mini" style="width: 220px;"></el-input>
        </el-form-item>
        <el-form-item label="检验项分类EN" >
          <el-input v-model="addOrupdateForm.inspectionItemClassEn" placeholder="请输入检验项分类EN" size="mini" style="width: 220px;"></el-input>
        </el-form-item>
        <el-form-item label="试验方法" prop="method">
          <el-select v-model="addOrupdateForm.method" filterable multiple  size="small" style="width: 220px;">
            <el-option
              v-for="(item,index) in dicList.method"
              :key="index"
              :label="item.label"
              :value="item.value">
            </el-option>
          </el-select>
        </el-form-item>
      </el-form>
      <span slot="footer" class="dialog-footer">
      <el-button @click="handleClose">取 æ¶ˆ</el-button>
      <el-button type="primary" @click="saveOrEnit">ç¡® å®š</el-button>
    </span>
    </el-dialog>
    <!--检验项目参数-编辑弹框-->
    <EditForm ref="editForm"></EditForm>
    <testObjectEditForm ref="testObjectEditForm"></testObjectEditForm>
    <BindPartDialog v-if="bindPartDialog" :bindPartDialog="bindPartDialog"
                    :currentRow="currentRow"
                    :type="type"
                    @closeBindPartDialog="closeBindPartDialog"></BindPartDialog>
    <BindSupplierDensityDialog v-if="bindSupplierDensityDialog"
                               :bindSupplierDensityDialog="bindSupplierDensityDialog"
                               :currentRow="currentSupplierDensityRow"
                               @closeBindPartDialog="closeBindSupplierDensityDialog"></BindSupplierDensityDialog>
  </div>
</template>
<script>
// import ValueTable from '../tool/value-table.vue'
import {addItemParameter, getItemTree, upItemParameter} from "@/api/structural/capability";
import {obtainItemParameterList} from "@/api/structural/laboratoryScope";
import {selectStandardMethods} from "@/api/structural/standardMethod";
import BindPartDialog from "@/components/capability/bindPartDialog.vue"
import BindSupplierDensityDialog from "@/components/capability/bindSupplierDensityDialog.vue"
import {
  delItemParameter, delProduct, delTestObject, selectItemParameterList, selectProductListByObjectId,
  selectTestObjectList,
} from "@/api/structural/capability";
import limsTable from "@/components/Table/lims-table.vue";
import EditForm from "@/components/capability/EditForm.vue";
import testObjectEditForm from "@/components/capability/testObjectEditForm.vue";
import {getToken} from "@/utils/auth";
export default {
  components: {limsTable, EditForm, testObjectEditForm, BindPartDialog, BindSupplierDensityDialog},
  data() {
    return {
      dicList: {
        inspectionItemType: [],
        inspectionValueType: [],
        bsm: [],
        sonLaboratory: [],
        unit: [],
        dic: [],
        method: [],
      uploadAction: process.env.VUE_APP_BASE_API + '/capacityScope/importExcel',
      uploadAction1: process.env.VUE_APP_BASE_API + '/capacityScope/importEquipData',
      tableData: [],
      column: [
        {label: '检验项', prop: 'inspectionItem'},
        {label: '检验项EN', prop: 'inspectionItemEn'},
        {label: '检验子项', prop: 'inspectionItemSubclass'},
        {label: '检验子项EN', prop: 'inspectionItemSubclassEn'},
        {label: '检验项分类', prop: 'inspectionItemClass'},
        {label: '检验项分类EN', prop: 'inspectionItemClassEn'},
        {label: '检验对象', prop: 'sample'},
        {label: '单价(元)', prop: 'price'},
        {label: '试验室', prop: 'sonLaboratory'},
        {label: '要求描述', prop: 'askTell'},
        {label: '要求值', prop: 'ask'},
        {label: '计量单位', prop: 'unit'},
        {label: '工时(H)', prop: 'manHour'},
        {label: '预计时间(H)', prop: 'manDay'},
        {label: '工时分组', prop: 'manHourGroup'},
        {label: '创建时间', prop: 'createTime'},
        {label: '修改时间', prop: 'updateTime'},
        {label: '条件', prop: 'radiusList'},
        {
          dataType: 'action',
          fixed: 'right',
          label: '操作',
          operation: [
            {
              name: '编辑',
              type: 'text',
              clickFun: (row) => {
                this.editForm(row);
              },
            },
            {
              name: '删除',
              type: 'text',
              clickFun: (row) => {
                this.delete(row);
              },
            },
          ]
        }
      ],
      page: {
        total:0,
        size:10,
        current:0
      },
      testObjectTableData: [],
      testObjectColumn: [
        {
          dataType: 'tag',
          label: '场所',
          prop: 'laboratoryId',
          minWidth: '130',
          formatData: (params) => {
            if (params == 1) {
              return '装备电缆试验室'
            } else if (params == 5) {
              return '通信产品实验室'
            } else if (params == 6) {
              return '电力产品实验室'
            } else if (params == 8) {
              return '储能产品实验室'
            } else {
              return '射频线缆实验室'
            }
          },
          formatType: (params) => {
            if (params == 1) {
              return 'success'
            } else if (params == 5) {
              return 'info'
            } else if (params == 6) {
              return 'warning'
            } else if (params == 8) {
              return 'danger'
            } else {
              return ''
            }
          }
        },
        {label: '检验对象', prop: 'specimenName'},
        {label: '检验对象EN', prop: 'specimenNameEn'},
        {label: '产品', prop: 'product'},
        {label: '对象代号', prop: 'code'},
        {label: '对象类型', prop: 'objectType',
          dataType: 'tag',
          formatData: (params) => {
            if (params == 1) {
              return '原材料'
            } else if (params == 2) {
              return '成品'
            } else {
              return '辅材'
            }
          },
          formatType: (params) => {
            if (params == 1) {
              return 'success'
            } else if (params == 2) {
              return 'info'
            } else {
              return 'warning'
            }
          }},
        {label: '创建人', prop: 'createUserName'},
        {label: '更新人', prop: 'updateUserName'},
        {label: '创建时间', prop: 'createTime'},
        {label: '更新时间', prop: 'updateTime'},
        {
          dataType: 'action',
          fixed: 'right',
          label: '操作',
          operation: [
            {
              name: '编辑',
              type: 'text',
              clickFun: (row) => {
                this.editTestObjectForm(row);
              },
            },
            {
              name: '删除',
              type: 'text',
              clickFun: (row) => {
                this.deleteTest(row);
              },
            },
            {
              name: '产品维护',
              type: 'text',
              clickFun: (row) => {
                this.upProduct(row);
              },
            },
            {
              name: '零件绑定',
              type: 'text',
              clickFun: (row) => {
                this.bindPartFirst(row);
              },
            },
          ]
        }
      ],
      testObjectPage: {
        total:0,
        size:10,
        current:0
      },
      tableLoading: false,
      addOrUpdate: '',
      addOrupdateForm:{
        inspectionItem: '',
        inspectionItemEn: '',
        inspectionItemSubclass: '',
        inspectionItemSubclassEn: '',
        sample: null,
        price: '',
        laboratory: '',
        sonLaboratory: '',
        askTell: '',
        ask: '',
        unit: '',
        manHour: '',
        manDay: '',
        manHourGroup: '',
        inspectionItemType: '',
        inspectionValueType: '',
        dic: '',
        bsm: '',
        templateId: '',
        inspectionItemClass: '',
        inspectionItemClassEn: '',
        method: []
      },
      tree: null,
      rules:{
        inspectionItem: [
          { required: true, message: '请输入检验项', trigger: 'blur' }
        ],
        sonLaboratory: [
          { required: true, message: '请输入试验室', trigger: 'change' }
        ],
        unit: [
          { required: true, message: '请输入计量单位', trigger: 'change' }
        ],
        manDay: [
          { required: true, message: '请输入预计时间', trigger: 'blur' }
        ],
        inspectionItemType: [
          { required: true, message: '请输入检验项类型', trigger: 'change' }
        ],
        inspectionValueType: [
          { required: true, message: '请输入检验值类型', trigger: 'change' }
        ],
        method: [
          { required: true, message: '请选择试验方法', trigger: 'change' }
        ],
        templateId: [
          { required: true, message: '请输入原始记录模板', trigger: 'change' }
        ],
      },
      dialogVisible: false,
      loading: true,
      itemParameterForm: {
        inspectionItem: null,
        inspectionItemSubclass: null,
        sample: null
      },
      logining:false,
      radio: 0,
      showItemParameter: true,
      showTestObject: false,
      itemParameterData: {
        entity: {
          inspectionItem: null,
          inspectionItemSubclass: null,
          sample: null,
          orderBy: {
            field: 'id',
            order: 'asc'
          }
        },
        isIndex: true,
        showSelect: false,
        select: true,
        row: 2,
        do: [{
          id: 'update',
          font: '编辑',
          type: 'text',
          method: 'openAdd',
          field: []
        }, {
          id: 'delete',
          font: '删除',
          type: 'text',
          method: 'doDiy'
        }],
        tagField: {
        },
        selectField: {
          inspectionItemType: {
            select: []
          },
          bsm: {
            select: []
          },
          inspectionValueType: {
            select: []
          },
          laboratory: {
            select: []
          },
          templateId: {
            select: []
          },
          method: {
            select: [],
            choose: true
          },
          sonLaboratory: {
            select: []
          },
          unit: {
            select: []
          },
          dic: {
            select: []
          },
        },
        cascaderField:{
          sample:{
            tree:[]
          },
          // å­—段配置
          props:{
            value:'name',
            label:'name',
            checkStrictly: true,
            multiple: true
          }
        },
        requiredAdd: ['sonLaboratory', 'inspectionItem', 'inspectionItemType', 'inspectionValueType',
          'unit', 'method', 'manDay', 'templateId'
        ],
        requiredUp: ['sonLaboratory', 'inspectionItem', 'inspectionItemType', 'inspectionValueType',
          'unit', 'method', 'manDay', 'templateId'
        ],
        accept: '.xlsx',
        inputType: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
        needSort: ['createTime', 'updateTime', 'inspectionItem', 'inspectionItemSubclass', 'sample'],
      },
      testObjectData: {
        entity: {
          specimenName: null,
          orderBy: {
            field: 'id',
            order: 'asc'
          }
        },
        isIndex: true,
        showSelect: false,
        select: true,
        do: [{
          id: 'update',
          font: '编辑',
          type: 'text',
          method: 'doDiy',
          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'],
        needSort: ['createTime', 'updateTime', 'specimenName'],
      },
      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: '删除',
          type: 'text',
          method: 'doDiy'
        }],
        tagField: {},
        selectField: {},
        requiredAdd: ['name','nameEn'],
        requiredUp: ['name','nameEn'],
      productColumn: [
        {label: '产品名称', prop: 'name'},
        {label: '产品名称EN', prop: 'nameEn'},
        {
          dataType: 'action',
          fixed: 'right',
          label: '操作',
          operation: [
            {
              name: '编辑',
              type: 'text',
              clickFun: (row) => {
                this.editProduct(row);
              },
            },
            {
              name: '删除',
              type: 'text',
              clickFun: (row) => {
                this.deleteProduct(row);
              },
            },
            {
              name: '零件绑定',
              type: 'text',
              clickFun: (row) => {
                this.bindPartSecond(row);
              },
            },
            {
              name: '厂家密度绑定',
              type: 'text',
              clickFun: (row) => {
                this.bindSupplierDensitySecond(row);
              },
            },
          ]
        }
      ],
      productData: [],
      productPage: {
        total:0,
        size:10,
        current:0
      },
      productableLoading: false,
      inPower: true,
      importExcel: false,
      uploadDia: false,
      fileList: [],
      token: null,
      token: {Authorization: "Bearer " + getToken()},
      uploading: false,
      currentRow: {}, // é€‰æ‹©é›¶ä»¶ç»‘定本条数据的信息
      currentSupplierDensityRow: {}, // é€‰æ‹©é›¶ä»¶ç»‘定本条数据的信息
      bindSupplierDensityDialog: false,
      bindPartDialog: false,
      type: null,  // é›¶ä»¶ç»‘定的类型--0:检验对象,1:产品维护
    }
  },
  created() {
    if (this.PROJECT === '装备电缆') {
      this.itemParameterData.requiredUp = ['sonLaboratory', 'inspectionItem', 'inspectionItemType', 'inspectionValueType',
        'unit', 'manDay', 'templateId'
      ]
    }
    this.refreshTable()
  },
  mounted() {
    this.token = {
      'token': sessionStorage.getItem('token')
    }
    this.itemParameterEntityCopy = this.HaveJson(this.itemParameterData.entity)
    this.testObjectDataEntityCopy = this.HaveJson(this.testObjectData.entity)
    this.obtainItemParameterList() //场所
    this.selectStandardMethods()    // è¯•验方法
    this.selectTestObjectByName()
    this.getStandardTemplate() // åŽŸå§‹è®°å½•æ¨¡æ¿
    this.selectDocUnit()
    this.selectAllNeedEnum()
    this.refreshTable()
  },
  computed: {
    title() {
      return this.addOrUpdate == 1 ? '新增' : '编辑'
      return this.addOrUpdate === 1 ? '新增' : '编辑'
    }
  },
  methods: {
    //查询需要的全部枚举
    selectAllNeedEnum(){
      // this.$axios.post(this.$api.enums.selectEnumListByCategory,
      //   {categoryList:['检验项类型','取值类型','是否','检验值类型','子实验室','单位']},{
      //     headers: {
      //       'Content-Type': 'application/json'
      //     }
      //   }).then(res => {
      //   res.data['检验项类型'].forEach(ele => {
      //     if(ele.label.indexOf('非采集')==0)ele.type='info'
      //   });
      //   this.dicList.sonLaboratory = res.data['子实验室']
      //   this.dicList.unit = res.data['单位']
      //   this.dicList.inspectionItemType = res.data['检验项类型']
      //   this.dicList.inspectionValueType = res.data['检验值类型']
      //   this.dicList.bsm = res.data['是否']
      // })
    },
    saveOrEnit() {
      console.log('this.addOrupdateForm', this.addOrupdateForm.sample);
      let flag = true
      this.$refs['addOrupdateForm'].validate((valid) => {
        if (valid) {
          flag = false
          return false
        }
      });
      if(flag) return
      if(this.addOrupdateForm.sample != null && this.addOrupdateForm.sample != '' && this.addOrupdateForm.sample != undefined ) {
        if(this.addOrupdateForm.sample.length > 0) {
          this.addOrupdateForm.sample = JSON.stringify(this.addOrupdateForm.sample)
        }else{
          this.addOrupdateForm.sample = '[]'
        }
      }else{
        this.addOrupdateForm.sample = '[]'
      }
      // 1是新增
      if(this.addOrUpdate == 1) {
        this.addOrupdateForm.method = JSON.stringify(this.addOrupdateForm.method)
        addItemParameter(this.addOrupdateForm).then(res => {
          if(res.code == 200) {
            this.$message.success('新增成功')
            this.refreshTable()
            this.handleClose()
            this.dialogVisible = false
          } else {
            // æŠ¥é”™ å°†è½¬æ¢çš„method ä»¥åŠ sample è½¬æ¢å›žæ¥
            this.addOrupdateForm.method = JSON.parse(this.addOrupdateForm.method)
            this.addOrupdateForm.sample = JSON.parse(this.addOrupdateForm.sample)
            this.$message.error(res.message)
          }
        })
      }else{
        this.addOrupdateForm.method = JSON.stringify(this.addOrupdateForm.method)
        upItemParameter(this.addOrupdateForm).then(res => {
          if(res.code == 200) {
            this.$message.success('编辑成功')
            this.refreshTable()
            this.handleClose()
            this.dialogVisible = false
          } else {
            // æŠ¥é”™ å°†è½¬æ¢çš„method ä»¥åŠ sample è½¬æ¢å›žæ¥
            this.addOrupdateForm.method = JSON.parse(this.addOrupdateForm.method)
            this.addOrupdateForm.sample = JSON.parse(this.addOrupdateForm.sample)
            this.$message.error(res.message)
          }
        })
      }
    },
    handleClose() {
      this.dialogVisible = false
      this.addOrupdateForm = {
        inspectionItem: '',
        inspectionItemEn: '',
        inspectionItemSubclass: '',
        inspectionItemSubclassEn: '',
        sample: null,
        price: '',
        laboratory: '',
        sonLaboratory: '',
        askTell: '',
        ask: '',
        unit: '',
        manHour: '',
        manDay: '',
        manHourGroup: '',
        inspectionItemType: '',
        inspectionValueType: '',
        dic: '',
        bsm: '',
        templateId: '',
        inspectionItemClass: '',
        inspectionItemClassEn: '',
        method: null
      }
      this.$refs['addOrupdateForm'].resetFields();
      this.addOrUpdate = ''
    },
    submitUpload() {
      if (this.$refs.upload.uploadFiles.length == 0) {
        this.$message.error('未选择文件')
@@ -645,7 +362,6 @@
        return
      }
      this.$message.success('上传成功')
      this.standardList = []
      this.productList = []
      this.refreshTable()
    },
@@ -655,142 +371,163 @@
      this.uploading = false
    },
    beforeUpload(file, fileList) {
      if (file.raw.type != 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet') {
        this.$message.error('上传文件格式不正确');
      if (file.size > 1024 * 1024 * 10) {
        this.$message.error('上传文件不超过10M');
        this.$refs.upload.clearFiles()
        return false;
      } else {
        return true;
      }
    },
    selectorSwitch(radio) {
      if (this.radio === '0') {
        this.showItemParameter = true;
        this.showTestObject = false;
        this.selectTestObjectByName()
        /* this.$nextTick(() => {
          this.$refs.itemParameterTable.selectList()
        }) */
    onError1(err, file, fileList) {
      this.$message.error('上传失败')
      this.$refs.upload1.clearFiles()
      this.uploading = false
    },
    beforeUpload1(file, fileList) {
      if (file.size > 1024 * 1024 * 10) {
        this.$message.error('上传文件不超过10M');
        this.$refs.upload1.clearFiles()
        return false;
      } else {
        this.showTestObject = true;
        this.showItemParameter = false;
        return true;
      }
    },
    handleSuccessUp (response, file, fileList) {
      this.$refs.upload.clearFiles()
      if (response.code == 201) {
        this.$message.error(response.message)
        return
      }
      this.$message.success('上传成功')
      this.refreshTable()
    },
    refreshTable() {
      this.itemParameterData.entity.inspectionItem = this.itemParameterForm.inspectionItem
      this.itemParameterData.entity.inspectionItemSubclass = this.itemParameterForm.inspectionItemSubclass
      this.itemParameterData.entity.sample = this.itemParameterForm.sample
      if (this.radio === '0') {
        // this.$refs['itemParameterTable'].selectList()
      this.tableLoading = true
      if (this.radio === 0) {
        selectItemParameterList({...this.page, ...this.itemParameterForm}).then(res => {
          this.tableLoading = false
          if (res.code === 200) {
            this.tableData = res.data
            this.page.total = res.total
          }
        }).catch(err => {
          this.tableLoading = false
        })
      } else {
        // this.$refs['testObjectTable'].selectList()
        selectTestObjectList({...this.testObjectPage, ...this.itemParameterForm}).then(res => {
          this.tableLoading = false
          if (res.code === 200) {
            this.testObjectTableData = res.data
            this.testObjectPage.total = res.total
          }
        }).catch(err => {
          this.tableLoading = false
        })
      }
    },
    refresh() {
      this.itemParameterData.entity = this.HaveJson(this.itemParameterEntityCopy)
      this.testObjectData.entity = this.HaveJson(this.testObjectDataEntityCopy)
      this.upIndex++
      this.resetForm('itemParameterForm')
      this.refreshTable()
    },
    openAdd(row) {
      //0代表检验参数tab
      if (this.radio === '0') {
        // this.$refs.itemParameterTable.openAddDia(this.$api.capacityScope.addItemParameter);
        if(!row) {
          this.addOrUpdate = 1
        }else{
          if(typeof row.sample == 'string') {
            row.sample = JSON.parse(row.sample)
          }
          this.addOrUpdate = ''
          this.addOrupdateForm = JSON.parse(JSON.stringify(row))
        }
        this.dialogVisible = true
    // æ£€éªŒé¡¹ç›®å‚数新增
    openAdd() {
      if (this.radio === 0) {
        this.$refs.editForm.openDia('add')
      } else {
        // this.$refs.testObjectTable.openAddDia(this.$api.capacityScope.addTestObject);
        this.$refs.testObjectEditForm.openDia('add')
      }
    },
    selectDocUnit() {
      // this.$axios.post(this.$api.enums.getDic).then(res => {
      //   this.dicList.dic = res.data.map(m => {
      //     return {
      //       label: m,
      //       value: m
      //     }
      //   })
      // })
    // æ£€éªŒé¡¹ç›®å‚æ•°-打开修改弹框
    editForm (row) {
      this.$refs.editForm.openDia('edit', row)
    },
    obtainItemParameterList() {
      obtainItemParameterList().then(res => {
        let data = []
        let data0 = []
        res.data.forEach(a => {
          data.push({
            label: a.laboratoryName,
            value: a.id
          })
          data0.push({
            label: a.laboratoryName,
            value: a.laboratoryName
          })
        })
        // this.itemParameterData.selectField.laboratory.select = data0
        // this.itemParameterData.tagField.laboratory.select = data0
        this.testObjectData.selectField.laboratoryId.select = data
        this.testObjectData.tagField.laboratoryId.select = data
        this.laboratory = data
      })
    // æ£€éªŒé¡¹ç›®å‚æ•°-删除
    delete (row) {
      this.$modal.confirm('是否确认删除此数据项?').then(function() {
        return delItemParameter(row.id);
      }).then(() => {
        this.getList();
        this.$modal.msgSuccess("删除成功");
      }).catch(() => {});
    },
    selectStandardMethods() {
      selectStandardMethods().then(res => {
        let data = []
        res.data.forEach(a => {
          data.push({
            label: a.code,
            value: a.code
          })
        })
        this.dicList.method = data
      })
    // æ£€éªŒå¯¹è±¡-打开修改弹框
    editTestObjectForm (row) {
      this.$refs.testObjectEditForm.openDia('edit', row)
    },
    selectTestObjectByName() {
      getItemTree().then(res => {
        res.data.forEach(a=>{
          this.cascaderFieldData(a)
        })
        this.itemParameterData.cascaderField.sample.tree = res.data
        this.tree = res.data
      })
    // æ£€éªŒé¡¹ç›®å‚æ•°-删除
    deleteTest (row) {
      this.$modal.confirm('是否确认删除此数据项?').then(function() {
        return delTestObject(row.id);
      }).then(() => {
        this.getList();
        this.$modal.msgSuccess("删除成功");
      }).catch(() => {});
    },
    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 => {
      //   let data = []
      //   res.data.forEach(a => {
      //     data.push({
      //       label: a.name,
      //       value: a.id,
      //       type: 'success'
      //     })
      //   })
      //   // this.itemParameterData.selectField.templateId.select = data
      //   // this.itemParameterData.tagField.templateId.select = data
      //   this.dicList.templateId = data
      // })
    },
    // äº§å“ç»´æŠ¤
    upProduct(row) {
      this.productData.entity.objectId = row.id
      this.diaProduct = true
      this.getProductList(row)
    },
    getProductList (row) {
      const params = {
        objectId: 0,
        partNo: row.partNo
      }
      this.productableLoading = true
      selectProductListByObjectId({...params, ...this.productPage}).then(res => {
        this.productableLoading = false
        if (res.code === 200) return
        this.productData = res.data
        this.productPage.total = res.data.total
      }).catch(err => {
        this.productableLoading = false
      })
    },
    // äº§å“ç»´æŠ¤-新增
    openAdd2(){
      // this.$refs.productData.openAddDia(this.$api.capacityScope.addProduct, {objectId: this.productData.entity.objectId});
    },
    // äº§å“ç»´æŠ¤-编辑
    editProduct () {
    },
    // äº§å“ç»´æŠ¤-删除
    deleteProduct (row) {
      this.$modal.confirm('是否确认删除此数据项?').then(function() {
        return delProduct(row.id);
      }).then(() => {
        this.getList();
        this.$modal.msgSuccess("删除成功");
      }).catch(() => {});
    },
    // é›¶ä»¶ç»‘定
    bindPartFirst (row) {
      this.bindPart(row, 0)
    },
    bindPartSecond (row) {
      this.bindPart(row, 1)
    },
    // åŽ‚å®¶å¯†åº¦ç»‘å®š
    bindSupplierDensitySecond (row) {
      this.bindSupplierDensity(row)
    },
    // æ‰“开厂家密度绑定弹框
    bindSupplierDensity (row) {
      this.currentSupplierDensityRow = row
      this.bindSupplierDensityDialog = true
    },
    // æ‰“开零件绑定弹框
    bindPart (row, index) {
      this.type = index
      this.currentRow = row
      this.bindPartDialog = true
    },
    closeBindPartDialog () {
      this.bindPartDialog = false
    },
    closeBindSupplierDensityDialog () {
      this.bindSupplierDensityDialog = false
    },
  }
}