Newer
Older
xc-business-system / src / views / equipement / source / resultConfirm / components / basic.vue
<!-- 溯源计划管理 基本信息 -->
<script name="ResultConfirmApproveBasic" lang="ts" setup>
import type { Ref } from 'vue'
import { ElLoading, ElMessage, ElMessageBox } from 'element-plus'
import type { FormInstance, FormRules } from 'element-plus'
import dayjs from 'dayjs'
import type { IForm, IQuantityTarget } from '../resultConfirm-interface'
import type { dictType } from '@/global'
import { getDictByCode } from '@/api/system/dict'
import { SCHEDULE } from '@/utils/scheduleDict'
import ApprovalDialog from '@/components/Approval/ApprovalDialog.vue'
import useUserStore from '@/store/modules/user'
import { useCheckList } from '@/commonMethods/useCheckList'
import { getInfo as getEquipmentDetail } from '@/api/equipment/info/book'
import { UploadFile } from '@/api/file'
import SelectEquipmentDialog from '@/views/business/fieldTest/approve/dialog/selectEquipmentDialog.vue'
import { useDoubleClickTableRow, useSetAllRowReadable } from '@/commonMethods/useSetAllRowReadable'
import { addResultConfirmList, failUpdateResultConfirmList, getInfo, submit, updateResultConfirmList } from '@/api/equipment/source/resultConfirm'
const props = defineProps({
  pageType: { // 页面类型 add新建 edit编辑 detail详情
    type: String,
    requre: true,
    default: 'detail',
  },
  id: {
    type: String,
    requre: true,
  },
  approvalStatusName: { // 审批状态名称
    type: String,
    requre: true,
  },
  processId: {
    type: String,
  },
})
const emits = defineEmits(['addSuccess', 'submitSuccess'])
const user = useUserStore() // 用户信息
const form = ref<IForm>({
  id: '', // 列表id
  labCode: '', // 实验室
  labCodeName: '', // 实验室名称
  groupCode: '', // 部门
  groupCodeName: '', // 部门名称
  confirmNo: '', // 登记表编号
  confirmName: '', // 登记表名称
  createUserId: '', // 创建人id
  createUserName: '', // 创建人
  createTime: '', // 创建时间
  planGroup: '', // 计划表部门
  planYear: '', // 计划表年份
  equipmentId: '', // 设备id
  equipmentNo: '', // 统一编号
  equipmentName: '', // 设备名称
  model: '', // 规格型号
  manufactureNo: '', // 出厂编号
  manufacturer: '', // 生产厂家
  standardNo: '', // 所属测量标准号
  standardName: '', // 所属测量标准名称
  directorName: '', // 负责人

  measureCategoryName: '', // 证书类型名称
  customerMatch: 0, // 委托方名称是否与实际相符
  customerAddressMatch: 0, // 委托方地址是否与实际相符
  equipmentCorrect: 0, // 被检件名称是否正确
  equipmentModelCorrect: 0, // 被检件型号是否正确
  equipmentNoCorrect: 0, // 被检件编号是否正确
  equipmentManufacturerCorrect: 0, // 被检件生产厂家是否正确
  onValid: 0, // 测量设备开展检定工作时是否在有效期内
  denyInfo: '', // 否则列出
  fileCorrect: 0, // 依据文件是否正确
  fileNoOne: '', // 依据文件编号1
  fileNoNameOne: '', // 依据文件名称1
  fileNoTwo: '', // 依据文件编号2
  fileNoNameTwo: '', // 依据文件名称2
  fileNoThree: '', // 依据文件编号3
  fileNoNameThree: '', // 依据文件名称3
  fileNoFour: '', // 依据文件编号4
  fileNoNameFour: '', // 依据文件名称4
  meterIdentify: '', // 结论
  resultCorrect: 0, // 结论与数据结果是否一致
  traceDate: '', // 测试、校准或检定日期
  dateCorrect: 0, // 日期是否与粘贴标识一致
  validDate: '', // 有效期
  validDateCorrect: 0, // 有效期是否正确
  signComplete: 0, // 签名信息是否齐全
  sealComplete: 0, // 是否盖有有效印章

  conclusion: '', // 结论(计量标识字典code)
  limitScope: '', // 限用范围
  meterIdentifyName: '', // 结果确认结论(输入框)
  remark: '', // 备注

  quantityTargetItem: '', // 量传指标检定项目
  notQuantityTargetItem: '', // 非量传指标检定项目
  planId: '', // 溯源计划id
})

const ruleFormRef = ref() // 表单ref
const certFormRef = ref() // 证书要素确认ref
const resultRulesRef = ref() // 结果确认ref
const equipmentRef = ref() // 设备ref
const loading = ref(false) // loading
const infoId = ref('') // id
const rules = ref<FormRules>({ // 校验规则
  // equipmentNo: [{ required: true, message: '统一编号不能为空', trigger: ['blur', 'change'] }],
  denyInfo: [{ required: true, message: '否则列出不能为空', trigger: ['blur', 'change'] }],
  // labCode: [{ required: true, message: '实验室不能为空', trigger: ['blur', 'change'] }],
  // groupCode: [{ required: true, message: '部门不能为空', trigger: ['blur', 'change'] }],
  planYear: [{ required: true, message: '年不能为空', trigger: ['blur', 'change'] }],
  planGroup: [{ required: true, message: '组不能为空', trigger: ['blur', 'change'] }],
  measureCategory: [{ required: true, message: '证书类型不能为空', trigger: ['blur', 'change'] }],
  labelConsistent: [{ required: true, message: '是否与粘贴标识一致不能为空', trigger: ['blur', 'change'] }],
  certificateNo: [{ required: true, message: '证书编号不能为空', trigger: ['blur', 'change'] }],
  traceCompany: [{ required: true, message: '溯源机构名称不能为空', trigger: ['blur', 'change'] }],
  supplierConsistent: [{ required: true, message: '是否与合格供方名录一致不能为空', trigger: ['blur', 'change'] }],
  diagramConsistent: [{ required: true, message: '是否与溯源等级关系图一致不能为空', trigger: ['blur', 'change'] }],
  customerMatch: [{ required: true, message: '委托方名称是否与实际相符不能为空', trigger: ['blur', 'change'] }],
  customerAddressMatch: [{ required: true, message: '委托方地址是否与实际相符不能为空', trigger: ['blur', 'change'] }],
  equipmentCorrect: [{ required: true, message: '被检件名称是否正确不能为空', trigger: ['blur', 'change'] }],
  equipmentModelCorrect: [{ required: true, message: '被检件型号是否正确不能为空', trigger: ['blur', 'change'] }],
  equipmentNoCorrect: [{ required: true, message: '被检件编号是否正确不能为空', trigger: ['blur', 'change'] }],
  equipmentManufacturerCorrect: [{ required: true, message: '被检件生产厂家是否正确不能为空', trigger: ['blur', 'change'] }],
  onValid: [{ required: true, message: '测量设备开展检定工作时是否在有效期内不能为空', trigger: ['blur', 'change'] }],
  fileCorrect: [{ required: true, message: '依据文件是否正确不能为空', trigger: ['blur', 'change'] }],
  fileNoOne: [{ required: true, message: '依据文件编号1不能为空', trigger: ['blur', 'change'] }],
  fileNoNameOne: [{ required: true, message: '依据文件名称1不能为空', trigger: ['blur', 'change'] }],
  fileNoTwo: [{ required: true, message: '依据文件编号2不能为空', trigger: ['blur', 'change'] }],
  fileNoNameTwo: [{ required: true, message: '依据文件名称2不能为空', trigger: ['blur', 'change'] }],
  fileNoThree: [{ required: true, message: '依据文件编号3不能为空', trigger: ['blur', 'change'] }],
  fileNoNameThree: [{ required: true, message: '依据文件名称3不能为空', trigger: ['blur', 'change'] }],
  fileNoFour: [{ required: true, message: '依据文件编号4不能为空', trigger: ['blur', 'change'] }],
  fileNoNameFour: [{ required: true, message: '依据文件名称4不能为空', trigger: ['blur', 'change'] }],
  conclusion: [{ required: true, message: '结论不能为空', trigger: ['blur', 'change'] }],
  meterIdentifyName: [{ required: true, message: '结果确认结论不能为空', trigger: ['blur', 'change'] }],
  resultCorrect: [{ required: true, message: '结论是否与数据结果一致不能为空', trigger: ['blur', 'change'] }],
  traceDate: [{ required: true, message: '测试、校准或检定日期不能为空', trigger: ['blur', 'change'] }],
  dateCorrect: [{ required: true, message: '日期是否与粘贴标识一致不能为空', trigger: ['blur', 'change'] }],
  validDate: [{ required: true, message: '有效期不能为空', trigger: ['blur', 'change'] }],
  validDateCorrect: [{ required: true, message: '有效期是否正确不能为空', trigger: ['blur', 'change'] }],
  signComplete: [{ required: true, message: '签名信息是否齐全不能为空', trigger: ['blur', 'change'] }],
  sealComplete: [{ required: true, message: '是否盖有有效印章不能为空', trigger: ['blur', 'change'] }],
  meterIdentify: [{ required: true, message: '结论不能为空', trigger: ['blur', 'change'] }],
  certificateFile: [{ required: true, message: '检定证书不能为空', trigger: ['blur', 'change'] }],
})

// -----------------------------------------字典--------------------------------------------------------------
const labCodeList = ref<dictType[]>([]) // 实验室
const groupCodeList = ref<dictType[]>([]) // 部门
const meterIdentifyDict = ref<dictType[]>([]) // 计量标识
const measureCategoryList = ref<dictType[]>([]) // 证书类型(即检校类别)

// 查询字典
const getDict = async () => {
  // 计量标识
  getDictByCode('bizMeterIdentify').then((response) => {
    meterIdentifyDict.value = response.data
  })
  // 实验室
  getDictByCode('bizGroupCodeEquipment').then((response) => {
    labCodeList.value = response.data
  })
  // 部门
  getDictByCode('bizGroupCode').then((response) => {
    groupCodeList.value = response.data
  })
  // 证书类型(即检校类别)
  getDictByCode('measureCategory').then((response) => {
    measureCategoryList.value = response.data
  })
}

// ----------------------------------------------依据文件-------------------------------------------
const showFileTree = ref(false) // 是否显示第三个依据文件
const showFileFour = ref(false) // 是否显示第四个依据文件
// 点击增加依据文件
const addFile = () => {
  if (!showFileTree.value) {
    showFileTree.value = true
  }
  else {
    showFileFour.value = true
  }
}

// 点击移除依据的技术文件
const removeFile = () => {
  if (showFileFour.value) {
    showFileFour.value = false
    form.value.fileNoFour = '' // 依据文件编号4
    form.value.fileNoNameFour = '' // 依据文件名称4
  }
  else {
    showFileTree.value = false
    form.value.fileNoThree = '' // 依据文件编号3
    form.value.fileNoNameThree = '' // 依据文件名称3
  }
}

// ------------------------------------------量传指标------------------------------------------------
const quantityTargetColumns = ref([ // 表头
  { text: '测量范围', value: 'measureRange', align: 'center', required: true },
  { text: '使用要求', value: 'useRequire', align: 'center', required: true },
  { text: '测试、校准或检定数据是否满足使用要求', value: 'meetRequire', align: 'center', required: true },
  { text: '如不满足,请写明范围', value: 'reason', align: 'center' },
])
const quantityTargetList = ref<IQuantityTarget[]>([]) // 量传指标列表
const checkoutQuantityTargetList = ref<IQuantityTarget[]>([]) // 量传指标选中
const notQuantityTargetList = ref<IQuantityTarget[]>([]) // 非量传指标列表
const checkoutNotQuantityTargetList = ref<IQuantityTarget[]>([]) // 非量传指标选中

// 量传指标选中
const handleTechSelectionQuantityTargetChange = (e: any) => {
  checkoutQuantityTargetList.value = e
}

// 非量传指标选中
const handleTechSelectionNotQuantityTargetChange = (e: any) => {
  checkoutNotQuantityTargetList.value = e
}

// 点击增加行
const addRow = (type: string) => {
  if (type === 'quantityTarget') { // 量传指标
    const checkResult = useCheckList(quantityTargetList.value, quantityTargetColumns.value, '量传指标', 'reason', 'meetRequire', 0) // 检查表格
    if (checkResult) {
      useSetAllRowReadable(quantityTargetList.value)
      quantityTargetList.value.push({
        id: '',
        measureRange: '', // 测量范围
        useRequire: '', // 使用要求
        meetRequire: '', // 测试、校准或检定数据是否满足使用要求
        reason: '', // 如不满足,请写明范围
        editable: props.pageType === 'edit',
      })
    }
  }
  else {
    const checkResult = useCheckList(notQuantityTargetList.value, quantityTargetColumns.value, '非量传指标', 'reason', 'meetRequire', 0) // 检查表格
    if (checkResult) {
      useSetAllRowReadable(notQuantityTargetList.value)
      notQuantityTargetList.value.push({
        id: '',
        measureRange: '', // 测量范围
        useRequire: '', // 使用要求
        meetRequire: '', // 测试、校准或检定数据是否满足使用要求
        reason: '', // 如不满足,请写明范围
        editable: props.pageType === 'edit',
      })
    }
  }
}

// 删除行
const deleteRow = (type: string) => {
  if (type === 'quantityTarget') { // 量传指标
    if (!checkoutQuantityTargetList.value.length) {
      ElMessage({
        message: '请选中要删除的行',
        type: 'warning',
      })
      return false
    }
    quantityTargetList.value = quantityTargetList.value.filter((item: any) => {
      return !checkoutQuantityTargetList.value.includes(item)
    })
  }
  else { // 非量传指标
    if (!checkoutNotQuantityTargetList.value.length) {
      ElMessage({
        message: '请选中要删除的行',
        type: 'warning',
      })
      return false
    }
    notQuantityTargetList.value = notQuantityTargetList.value.filter((item: any) => {
      return !checkoutNotQuantityTargetList.value.includes(item)
    })
  }
}

// 双击行--量传指标
const rowDblclickQuantityTarget = (row: any) => {
  if (props.pageType !== 'detail') {
    useDoubleClickTableRow(row, checkoutQuantityTargetList.value)
  }
}

// 双击行--非量传指标
const rowDblclickNotQuantityTarget = (row: any) => {
  if (props.pageType !== 'detail') {
    useDoubleClickTableRow(row, checkoutNotQuantityTargetList.value)
  }
}

// 通过设备获取量传指标、非量传指标的信息
const fetchEquipmentDetail = (getId = '') => {
  if (!getId) {
    return false
  }
  getEquipmentDetail({ id: getId, type: '1' }).then((res) => {
    quantityTargetList.value = res.data.technicalTargetList.filter((item: { indicatorType: string }) => `${item.indicatorType}` === '0').map((i: { uncertainty: string }) => {
      return {
        ...i,
        useRequire: i.uncertainty,
        id: '',
      }
    })
    notQuantityTargetList.value = res.data.technicalTargetList.filter((item: { indicatorType: string }) => `${item.indicatorType}` === '1').map((i: { uncertainty: string }) => {
      return {
        ...i,
        useRequire: i.uncertainty,
        id: '',
      }
    })

    // ------------------处理所属测量标准名称----------------------
    const meterStandardList = res.data.standardInfoList.map((item: { standardName: string;standardNo: string;id: string }) => {
      return {
        standardName: item.standardName,
        standardNo: item.standardNo,
        id: item.id,
      }
    })
    // form.value.standardId = meterStandardList.map((item: { id: string }) => item.id).join(',')
    form.value.standardNo = meterStandardList.map((item: { standardNo: string }) => item.standardNo).join(',')
    form.value.standardName = meterStandardList.map((item: { standardName: string }) => item.standardName).join(',')
  })
}

// -----------------------------------------表格-------------------------------------------
const overallInfoList = ref([]) as any // 表格数据列表
const checkoutOverallInfoList = ref([]) as any // 技术指标表格选中
const addObj = {
  id: '',
  measureCategory: 2, // 证书类型
  labelConsistent: 0, // 是否与粘贴标识一致
  certificateNo: '', // 证书编号
  traceCompany: '', // 溯源机构名称
  supplierConsistent: 0, // 是否与合格供方名录一致
  diagramConsistent: 0, // 是否与溯源等级关系图一致
  certificateFile: '', // 检定证书
}
const overallInfoColumns = [ // 表头
  { text: '证书类型', value: 'measureCategory', required: true },
  { text: '是否与粘贴标识一致', value: 'labelConsistent', required: true },
  { text: '证书编号', value: 'certificateNo', required: true },
  { text: '溯源机构名称', value: 'traceCompany', required: true },
  { text: '是否与合格供方名录一致', value: 'supplierConsistent', required: true },
  { text: '是否与溯源等级关系图一致', value: 'diagramConsistent', required: true },
  { text: '检定证书', value: 'certificateFile', required: true },
]

/**
 * 点击增加行
 */
const addOverallInfo = () => {
  if (useCheckList(overallInfoList.value, overallInfoColumns, '表格')) {
    overallInfoList.value.push({ ...addObj })
  }
}

/**
 * 点击删除行
 */
const deleteOverallInfo = () => {
  overallInfoList.value = overallInfoList.value.filter((item: any) => {
    return !checkoutOverallInfoList.value.includes(item)
  })
}
// 表格多选选中
const handleSelectionOverallInfoChange = (e: any) => {
  checkoutOverallInfoList.value = e
}

// -------------------------------------------文件上传--------------------------------------
const fileRef = ref() // 文件上传input
const uploadIndex = ref()
const onFileChange = (event: any) => {
  if (event.target.files?.length !== 0) {
    // 创建formdata对象
    const fd = new FormData()
    fd.append('multipartFile', event.target.files[0])
    const loading = ElLoading.service({
      lock: true,
      background: 'rgba(255, 255, 255, 0.8)',
    })
    UploadFile(fd).then((res) => {
      if (res.code === 200) {
        // form.value.certificateFile = res.data[0]
        overallInfoList.value[uploadIndex.value].certificateFile = res.data[0]
        event.target.value = null
        // 重置当前验证
        ElMessage.success('文件上传成功')
        loading.close()
      }
      else {
        ElMessage.error(res.message)
        loading.close()
      }
    })
  }
}
const upload = (index: number) => {
  uploadIndex.value = index
  fileRef.value.click()
}

// -----------------------------------------------保存----------------------------------------------
// 保存之前校验量传指标、非量传指标表格校验
const checkTableList = () => {
  for (let i = 0; i < quantityTargetList.value.length; i++) {
    if (`${quantityTargetList.value[i].meetRequire}` === '0' && !quantityTargetList.value[i].reason) {
      ElMessage.warning(`量传指标表格第${i + 1}行范围未写明`)
      return false
    }
  }

  for (let i = 0; i < notQuantityTargetList.value.length; i++) {
    if (`${notQuantityTargetList.value[i].meetRequire}` === '0' && !notQuantityTargetList.value[i].reason) {
      ElMessage.warning(`非量传指标表格第${i + 1}行范围未写明`)
      return false
    }
  }

  return true
}

/**
 * 点击保存
 * @param formEl 基本信息表单ref
 */
const saveForm = () => {
  if (!overallInfoList.value.length) {
    ElMessage.warning('总体信息不能为空')
    return false
  }
  if (!useCheckList(quantityTargetList.value, quantityTargetColumns.value, '量传指标', 'reason', 'meetRequire', 0)) {
    return false
  }
  if (!quantityTargetList.value.length && !notQuantityTargetList.value.length) {
    ElMessage.warning('量传指标和非量传指标不能同时为空')
    return false
  }
  if (!useCheckList(notQuantityTargetList.value, quantityTargetColumns.value, '非量传指标', 'reason', 'meetRequire', 0)) {
    return false
  }
  if (quantityTargetList.value.length && !form.value.quantityTargetItem) {
    ElMessage.warning('请填写量传指标检定项目')
    return false
  }
  if (notQuantityTargetList.value.length && !form.value.notQuantityTargetItem) {
    ElMessage.warning('请填写非量传指标检定项目')
    return false
  }

  if (!checkTableList()) { return false }

  if (!ruleFormRef || !certFormRef || !resultRulesRef) { return }
  Promise.all([ruleFormRef.value.validate(), certFormRef.value.validate(), resultRulesRef.value.validate(), equipmentRef.value.validate()]).then(() => {
    ElMessageBox.confirm(
      '确认保存吗?',
      '提示',
      {
        confirmButtonText: '确认',
        cancelButtonText: '取消',
        type: 'warning',
      },
    ).then(() => {
      const loading = ElLoading.service({
        lock: true,
        text: '加载中...',
        background: 'rgba(255, 255, 255, 0.8)',
      })
      const quantityTargetListParam = quantityTargetList.value.map((item) => {
        return {
          ...item,
          quantityTarget: '1',
          item: form.value.quantityTargetItem,
        }
      })
      const notQuantityTargetListParam = notQuantityTargetList.value.map((item) => {
        return {
          ...item,
          quantityTarget: '2',
          item: form.value.notQuantityTargetItem,
        }
      })
      const list = quantityTargetListParam.concat(notQuantityTargetListParam)

      const params = {
        ...form.value,
        id: infoId.value,
        // confirmName: `${form.value.planYear}年${form.value.planGroup}组测量设备测试、校准或检定结果确认登记表`,
        quantityList: list,
        processId: props.processId,
        mainList: overallInfoList.value, // 总体信息数据

      }
      if (props.pageType === 'add') { // 新建
        addResultConfirmList(params).then((res) => {
          loading.close()
          form.value.confirmNo = res.data.confirmNo // 计划表编号
          infoId.value = res.data.id // id
          emits('addSuccess', infoId.value)
          ElMessage.success('已保存')
        }).catch(() => {
          loading.close()
        })
      }
      else if (props.pageType === 'edit') { // 编辑
        console.log(props.approvalStatusName)
        if (props.approvalStatusName === '草稿箱' || props.approvalStatusName === '全部') {
          updateResultConfirmList(params).then((res) => {
            loading.close()
            emits('addSuccess', infoId.value)
            ElMessage.success('已保存')
          }).catch(() => {
            loading.close()
          })
        }
        else { // '未通过' || '已取消'
          failUpdateResultConfirmList(params).then((res) => {
            loading.close()
            emits('submitSuccess')
            fetchInfo()
            ElMessage.success('已保存')
          }).catch(() => {
            loading.close()
          })
        }
      }
    })
  })
}

// ----------------------------------------------提交--------------------------------------------
// 提交
/**
 *
 * @param processId 流程实例id
 * @param id
 */
const submitForm = (processId: string, id: string) => {
  const loading = ElLoading.service({
    lock: true,
    text: '加载中...',
    background: 'rgba(255, 255, 255, 0.6)',
  })
  submit({ id, formId: SCHEDULE.TRACE_RESULT_VERIFICATION_APPROVAL }).then((res) => {
    ElMessage.success('已提交')
    emits('submitSuccess')
    loading.close()
  })
}
// -----------------------------------------获取详情------------------------------------------
// 获取详情
function fetchInfo() {
  loading.value = true
  getInfo({ id: infoId.value }).then((res) => {
    loading.value = false
    for (const prop in form.value) {
      form.value[prop] = res.data[prop]
    }
    form.value.planYear = `${res.data.planYear}`
    const tempList = res.data.quantityList.map((item: { editable: Boolean }) => {
      return {
        ...item,
        editable: props.pageType !== 'detail',
      }
    })
    // 处理量传指标与非量传指标的数据
    quantityTargetList.value = tempList.filter((item: { quantityTarget: string }) => item.quantityTarget === '1') // 量传指标
    notQuantityTargetList.value = tempList.filter((item: { quantityTarget: string }) => item.quantityTarget === '2') // 非量传指标
    if (quantityTargetList.value && quantityTargetList.value.length) {
      form.value.quantityTargetItem = quantityTargetList.value[0].item! // 量传指标检定项目
    }
    if (notQuantityTargetList.value && notQuantityTargetList.value.length) {
      form.value.notQuantityTargetItem = notQuantityTargetList.value[0].item! // 非量传指标检定项目
    }
    overallInfoList.value = res.data.mainList // 总体信息
  })
}

// 监听测试、校准或检定日期变化,有效期在测试、校准或检定日期基础上增加一年
const changeTraceDate = (date: string) => {
  form.value.validDate = dayjs(date).add(1, 'year').format('YYYY-MM-DD')
}

// ---------------------------------------------钩子----------------------------------------------
watch(() => props.id, (newValue) => {
  infoId.value = newValue!
  if (infoId.value) {
    fetchInfo() // 获取详情信息
  }
}, { immediate: true })
const route = useRoute()

onMounted(() => {
  getDict()
  form.value.createUserId = user.id// 创建人id
  form.value.createUserName = user.name // 创建人名字
  form.value.createTime = dayjs().format('YYYY-MM-DD HH:mm:ss')// 创建时间
  if (props.pageType !== 'add') {
    fetchInfo() // 获取详情信息
  }
  else { // 新建
    form.value.labCode = route.query.labCode as string // 实验室
    form.value.labCodeName = route.query.labCodeName as string // 实验室名称
    form.value.groupCode = route.query.groupCode as string // 部门
    form.value.groupCodeName = route.query.groupCodeName as string // 部门名称
    form.value.planGroup = route.query.planGroup as string // 计划表部门
    form.value.planYear = route.query.planYear as string // 计划表年份
    form.value.equipmentId = route.query.equipmentId as string // 设备id
    form.value.equipmentNo = route.query.equipmentNo as string // 统一编号
    form.value.equipmentName = route.query.equipmentName as string // 设备名称
    form.value.model = route.query.model as string // 规格型号
    form.value.manufactureNo = route.query.manufactureNo as string // 出厂编号
    form.value.manufacturer = route.query.manufacturer as string // 生产厂家
    form.value.standardNo = route.query.standardNo as string // 所属测量标准号
    form.value.standardName = route.query.standardName as string // 所属测量标准名称
    form.value.directorName = route.query.directorName as string // 负责人
    form.value.confirmName = `${route.query.planYear}年${route.query.planGroup}组测量设备测试、校准或检定结果确认登记表`
    form.value.planId = route.query.planId as string // 溯源计划id
    fetchEquipmentDetail(route.query.equipmentId as string) // 获取量传指标、非量传指标
  }
})

defineExpose({ saveForm, submitForm, fetchInfo })
</script>

<template>
  <div class="result-confirm">
    <detail-block v-loading="loading" title="">
      <el-form
        ref="ruleFormRef"
        :model="form"
        :label-width="120"
        label-position="right"
        :rules="rules"
      >
        <el-row :gutter="24">
          <el-col :span="6">
            <el-form-item label="文件编号:" prop="confirmNo">
              <el-input v-model="form.confirmNo" disabled placeholder="系统自动生成" />
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="文件名称:" prop="confirmName">
              <el-input v-model="form.confirmName" disabled placeholder="文件名称" />
            </el-form-item>
          </el-col>
          <!-- <el-col :span="12" style="display: flex;line-height: 32px;">
            <el-form-item label="文件名称:" />
            <el-form-item label-width="0" prop="planYear" style="width: 90px;">
              <el-date-picker
                v-model="form.planYear"
                type="year"
                placeholder="选择年"
                format="YYYY"
                value-format="YYYY"
                disabled
              />
            </el-form-item>
            <span style="margin: 0 8px;font-size: 14px;color: #606266;">年</span>
            <el-form-item label-width="0" prop="planGroup" style="width: 90px;">
              <el-input v-model="form.planGroup" disabled placeholder="输入组" />
            </el-form-item>
            <span style="margin: 0 8px;font-size: 14px;color: #606266;">组测量设备测试、校准或检定结果确认登记表</span>
          </el-col> -->
          <el-col :span="6">
            <el-form-item label="创建人:">
              <el-input
                v-model="form.createUserName" disabled
              />
            </el-form-item>
          </el-col>
          <el-col :span="6">
            <el-form-item label="创建时间:" prop="createTime">
              <el-date-picker
                v-model="form.createTime"
                type="datetime"
                format="YYYY-MM-DD HH:mm:ss"
                value-format="YYYY-MM-DD HH:mm:ss"
                disabled
              />
            </el-form-item>
          </el-col>
        </el-row>
      </el-form>
    </detail-block>
    <detail-block v-loading="loading" title="测量设备基本信息">
      <el-form
        ref="equipmentRef"
        :model="form"
        :label-width="120"
        label-position="right"
        :rules="rules"
      >
        <el-row :gutter="24">
          <el-col :span="6">
            <el-form-item label="统一编号:" prop="equipmentNo">
              <el-input
                v-model="form.equipmentNo"
                :placeholder="pageType === 'detail' ? '' : '统一编号'"
                :class="{ 'detail-input': pageType === 'detail' }"
                disabled
              />
            </el-form-item>
          </el-col>
          <el-col :span="6">
            <el-form-item label="设备名称:" prop="equipmentName">
              <el-input v-model="form.equipmentName" disabled placeholder="设备名称" />
            </el-form-item>
          </el-col>
          <el-col :span="6">
            <el-form-item label="规格型号" prop="model">
              <el-input
                v-model.trim="form.model"
                placeholder="规格型号"
                disabled
                class="full-width-input"
              />
            </el-form-item>
          </el-col>
          <el-col :span="6">
            <el-form-item label="出厂编号:" prop="manufactureNo">
              <el-input
                v-model.trim="form.manufactureNo"
                placeholder="出厂编号"
                class="detail-input"
                disabled
              />
            </el-form-item>
          </el-col>
          <el-col :span="6">
            <el-form-item label="生产厂家:" prop="manufacturer">
              <el-input
                v-model.trim="form.manufacturer"
                placeholder="生产厂家"
                class="detail-input"
                disabled
              />
            </el-form-item>
          </el-col>
          <el-col :span="6">
            <el-form-item label="实验室" prop="labCode">
              <el-select
                v-model="form.labCode"
                :placeholder="pageType === 'detail' ? ' ' : '实验室'"
                disabled
                class="full-width-input"
              >
                <el-option
                  v-for="item in labCodeList"
                  :key="item.id"
                  :label="item.name"
                  :value="item.value"
                />
              </el-select>
            </el-form-item>
          </el-col>
          <el-col :span="6">
            <el-form-item label="部门" prop="groupCode">
              <el-select
                v-model="form.groupCode"
                :placeholder="pageType === 'detail' ? ' ' : '部门'"
                disabled
                class="full-width-input"
              >
                <el-option
                  v-for="item in groupCodeList"
                  :key="item.id"
                  :label="item.name"
                  :value="item.value"
                />
              </el-select>
            </el-form-item>
          </el-col>
          <el-col :span="6">
            <el-form-item label="负责人:" prop="directorName">
              <el-input
                v-model.trim="form.directorName"
                placeholder="负责人"
                class="detail-input"
                disabled
              />
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="所属测量标准名称:" prop="standardName" label-width="140px">
              <el-input
                v-model.trim="form.standardName"
                placeholder="所属测量标准名称"
                class="detail-input"
                disabled
                type="textarea"
                autosize
              />
            </el-form-item>
          </el-col>
        </el-row>
      </el-form>
    </detail-block>
    <detail-block v-loading="loading" title="证书相关要素确认">
      <detail-block title="总体信息">
        <template v-if="pageType !== 'detail'" #btns>
          <el-button type="primary" @click="addOverallInfo">
            增加行
          </el-button>
          <el-button type="info" @click="deleteOverallInfo">
            删除行
          </el-button>
        </template>
        <input v-show="false" ref="fileRef" type="file" @change="onFileChange">
        <el-table
          ref="overallInfoTableRef"
          :data="overallInfoList"
          border
          style="width: 100%;"
          @selection-change="handleSelectionOverallInfoChange"
        >
          <el-table-column v-if="pageType !== 'detail'" type="selection" width="38" />
          <el-table-column align="center" label="序号" width="80" type="index" />
          <el-table-column
            v-for="item in overallInfoColumns"
            :key="item.value"
            :prop="item.value"
            :label="item.text"
            align="center"
          >
            <template #header>
              <span v-show="item.required" style="color: red;">*</span><span>{{ item.text }}</span>
            </template>
            <template #default="scope">
              <el-radio-group v-if="item.value === 'measureCategory'" v-model="scope.row[item.value]" :disabled="pageType === 'detail'">
                <el-radio label="1">
                  测试
                </el-radio>
                <el-radio label="2">
                  校准
                </el-radio>
                <el-radio label="3">
                  检定
                </el-radio>
              </el-radio-group>
              <el-radio-group v-if="(item.value === 'labelConsistent' || item.value === 'supplierConsistent' || item.value === 'diagramConsistent')" v-model="scope.row[item.value]" :disabled="pageType === 'detail'">
                <el-radio :label="1">
                  是
                </el-radio>
                <el-radio :label="0">
                  否
                </el-radio>
              </el-radio-group>
              <show-photo v-if="item.value === 'certificateFile'" :minio-file-name="scope.row[item.value]" />
              <el-button
                v-if="item.value === 'certificateFile' && pageType !== 'detail'"
                id="file"
                type="primary"
                :disabled="pageType === 'detail'"
                :style="{ 'margin-left': scope.row.certificateFile === '' ? '0px' : '20px' }"
                @click="upload(scope.$index)"
              >
                {{ scope.row.certificateFile === '' ? '上传' : '更换附件' }}
              </el-button>
              <el-input v-if="(item.value === 'certificateNo' || item.value === 'traceCompany') && pageType !== 'detail'" v-model="scope.row[item.value]" type="textarea" autosize :placeholder="`${item.text}`" class="input" />
            </template>
          </el-table-column>
        </el-table>
      </detail-block>

      <el-form
        ref="certFormRef"
        :model="form"
        :label-width="200"
        label-position="right"
        :rules="rules"
      >
        <el-row :gutter="24">
          <el-divider content-position="left">
            <span style="font-weight: 600;">委托方</span>
          </el-divider>

          <el-col :span="8">
            <el-form-item label="委托方名称是否与实际相符:" prop="customerMatch">
              <el-radio-group v-model="form.customerMatch" :disabled="pageType === 'detail'">
                <el-radio :label="1">
                  是
                </el-radio>
                <el-radio :label="0">
                  否
                </el-radio>
              </el-radio-group>
            </el-form-item>
          </el-col>
          <el-col :span="8">
            <el-form-item label="委托方地址是否与实际相符:" prop="customerAddressMatch">
              <el-radio-group v-model="form.customerAddressMatch" :disabled="pageType === 'detail'">
                <el-radio :label="1">
                  是
                </el-radio>
                <el-radio :label="0">
                  否
                </el-radio>
              </el-radio-group>
            </el-form-item>
          </el-col>
          <el-divider content-position="left">
            <span style="font-weight: 600;">被检件</span>
          </el-divider>

          <el-col :span="8">
            <el-form-item label="被检件名称是否正确:" prop="equipmentCorrect">
              <el-radio-group v-model="form.equipmentCorrect" :disabled="pageType === 'detail'">
                <el-radio :label="1">
                  是
                </el-radio>
                <el-radio :label="0">
                  否
                </el-radio>
              </el-radio-group>
            </el-form-item>
          </el-col>
          <el-col :span="8">
            <el-form-item label="被检件型号是否正确:" prop="equipmentModelCorrect">
              <el-radio-group v-model="form.equipmentModelCorrect" :disabled="pageType === 'detail'">
                <el-radio :label="1">
                  是
                </el-radio>
                <el-radio :label="0">
                  否
                </el-radio>
              </el-radio-group>
            </el-form-item>
          </el-col>
          <el-col :span="8">
            <el-form-item label="被检件编号是否正确:" prop="equipmentNoCorrect">
              <el-radio-group v-model="form.equipmentNoCorrect" :disabled="pageType === 'detail'">
                <el-radio :label="1">
                  是
                </el-radio>
                <el-radio :label="0">
                  否
                </el-radio>
              </el-radio-group>
            </el-form-item>
          </el-col>
          <el-col :span="8">
            <el-form-item label="被检件生产厂家是否正确:" prop="equipmentManufacturerCorrect">
              <el-radio-group v-model="form.equipmentManufacturerCorrect" :disabled="pageType === 'detail'">
                <el-radio :label="1">
                  是
                </el-radio>
                <el-radio :label="0">
                  否
                </el-radio>
              </el-radio-group>
            </el-form-item>
          </el-col>
          <el-divider content-position="left">
            <span style="font-weight: 600;">测量设备</span>
          </el-divider>

          <el-col :span="8">
            <el-form-item label="测量设备开展检定工作时是否在有效期内:" label-width="280px" prop="onValid">
              <el-radio-group v-model="form.onValid" :disabled="pageType === 'detail'">
                <el-radio :label="1">
                  是
                </el-radio>
                <el-radio :label="0">
                  否
                </el-radio>
              </el-radio-group>
            </el-form-item>
          </el-col>
          <el-col v-if="form.onValid === 0" :span="16">
            <el-form-item label="否则列出:" prop="denyInfo">
              <el-input
                v-model="form.denyInfo"
                type="textarea"
                autosize
                :placeholder="pageType === 'detail' ? '' : '请输入'"
                :disabled="pageType === 'detail'"
                :class="{ 'detail-input': pageType === 'detail' }"
              />
            </el-form-item>
          </el-col>
        </el-row>
        <el-row :gutter="24">
          <el-divider content-position="left">
            <span style="font-weight: 600;">依据技术文件</span>
          </el-divider>
          <el-col :span="24">
            <el-form-item label="依据文件是否正确:" prop="fileCorrect">
              <el-radio-group v-model="form.fileCorrect" :disabled="pageType === 'detail'">
                <el-radio :label="1">
                  是
                </el-radio>
                <el-radio :label="0">
                  否
                </el-radio>
              </el-radio-group>
            </el-form-item>
          </el-col>
          <el-col :span="8">
            <el-form-item label="编号1:" prop="fileNoOne">
              <el-input
                v-model="form.fileNoOne"
                type="textarea"
                autosize
                :placeholder="pageType === 'detail' ? '' : '请输入编号'"
                :disabled="pageType === 'detail'"
                :class="{ 'detail-input': pageType === 'detail' }"
              />
            </el-form-item>
          </el-col>
          <el-col :span="8">
            <el-form-item label="名称1:" prop="fileNoNameOne">
              <el-input
                v-model="form.fileNoNameOne"
                type="textarea"
                autosize
                :placeholder="pageType === 'detail' ? '' : '请输入名称'"
                :disabled="pageType === 'detail'"
                :class="{ 'detail-input': pageType === 'detail' }"
              />
            </el-form-item>
          </el-col>
          <el-col :span="8">
            <el-form-item label="编号2:" prop="fileNoTwo">
              <el-input
                v-model="form.fileNoTwo"
                type="textarea"
                autosize
                :placeholder="pageType === 'detail' ? '' : '请输入编号'"
                :disabled="pageType === 'detail'"
                :class="{ 'detail-input': pageType === 'detail' }"
              />
            </el-form-item>
          </el-col>
          <el-col :span="8">
            <el-form-item label="名称2:" prop="fileNoNameTwo">
              <div style="display: flex;flex-wrap: nowrap;">
                <el-input
                  v-model="form.fileNoNameTwo"
                  type="textarea"
                  autosize
                  :placeholder="pageType === 'detail' ? '' : '请输入名称'"
                  :disabled="pageType === 'detail'"
                  :class="{ 'detail-input': pageType === 'detail' }"
                  style="flex: 1;"
                />
                <icon-button v-if="!showFileTree && pageType !== 'detail'" style="margin-left: 10px;" size="20" icon="icon-add-circle" title="新建" type="primary" @click="addFile" />
              </div>
            </el-form-item>
          </el-col>
          <el-col v-if="showFileTree" :span="8">
            <el-form-item label="编号3:" prop="fileNoThree">
              <el-input
                v-model="form.fileNoThree"
                type="textarea"
                autosize
                :placeholder="pageType === 'detail' ? '' : '请输入编号'"
                :disabled="pageType === 'detail'"
                :class="{ 'detail-input': pageType === 'detail' }"
              />
            </el-form-item>
          </el-col>
          <el-col v-if="showFileTree" :span="8">
            <el-form-item label="名称3:" prop="fileNoNameThree">
              <div style="display: flex;flex-wrap: nowrap;">
                <el-input
                  v-model="form.fileNoNameThree"
                  type="textarea"
                  autosize
                  :placeholder="pageType === 'detail' ? '' : '请输入名称'"
                  :disabled="pageType === 'detail'"
                  :class="{ 'detail-input': pageType === 'detail' }"
                />
                <icon-button v-if="showFileTree && !showFileFour && pageType !== 'detail'" style="margin-left: 10px;" size="20" icon="icon-reduce-circle" title="移除" type="primary" @click="removeFile" />
                <icon-button v-if="!showFileFour && pageType !== 'detail'" style="margin-left: 10px;" size="20" icon="icon-add-circle" title="新建" type="primary" @click="addFile" />
              </div>
            </el-form-item>
          </el-col>
          <el-col v-if="showFileFour" :span="8">
            <el-form-item label="编号4:" prop="fileNoFour">
              <el-input
                v-model="form.fileNoFour"
                type="textarea"
                autosize
                :placeholder="pageType === 'detail' ? '' : '请输入编号'"
                :disabled="pageType === 'detail'"
                :class="{ 'detail-input': pageType === 'detail' }"
              />
            </el-form-item>
          </el-col>
          <el-col v-if="showFileFour" :span="8">
            <el-form-item label="名称4:" prop="fileNoNameFour">
              <div style="display: flex;flex-wrap: nowrap;">
                <el-input
                  v-model="form.fileNoNameFour"
                  type="textarea"
                  autosize
                  :placeholder="pageType === 'detail' ? '' : '请输入名称'"
                  :disabled="pageType === 'detail'"
                  :class="{ 'detail-input': pageType === 'detail' }"
                />
                <icon-button v-if="showFileFour && pageType !== 'detail'" style="margin-left: 10px;" size="20" icon="icon-reduce-circle" title="移除" type="primary" @click="removeFile" />
              </div>
            </el-form-item>
          </el-col>
          <el-divider content-position="left">
            <span style="font-weight: 600;">结论</span>
          </el-divider>
          <el-col :span="8">
            <el-form-item label="结论:" prop="conclusion">
              <el-select
                v-model="form.conclusion"
                :placeholder="pageType === 'detail' ? ' ' : '请选择结论'"
                :disabled="pageType === 'detail'"
                class="full-width-input"
              >
                <el-option v-for="item of meterIdentifyDict" :key="item.value" :label="item.name" :value="item.value" />
              </el-select>
            </el-form-item>
          </el-col>
          <el-col :span="8">
            <el-form-item label="结论是否与数据结果一致:" prop="resultCorrect">
              <el-radio-group v-model="form.resultCorrect" :disabled="pageType === 'detail'">
                <el-radio :label="1">
                  是
                </el-radio>
                <el-radio :label="0">
                  否
                </el-radio>
              </el-radio-group>
            </el-form-item>
          </el-col>
          <el-col :span="8">
            <el-form-item label="测试、校准或检定日期:" prop="traceDate">
              <el-date-picker
                v-model="form.traceDate"
                type="date"
                :placeholder="pageType === 'detail' ? ' ' : '测试、校准或检定日期'"
                class="full-width-input"
                :class="{ 'detail-input': pageType === 'detail' }"
                :disabled="pageType === 'detail'"
                format="YYYY-MM-DD"
                value-format="YYYY-MM-DD"
                @change="changeTraceDate"
              />
            </el-form-item>
          </el-col>
          <el-col :span="8">
            <el-form-item label="日期是否与粘贴标识一致:" prop="dateCorrect">
              <el-radio-group v-model="form.dateCorrect" :disabled="pageType === 'detail'">
                <el-radio :label="1">
                  是
                </el-radio>
                <el-radio :label="0">
                  否
                </el-radio>
              </el-radio-group>
            </el-form-item>
          </el-col>
          <el-col :span="8">
            <el-form-item label="有效期:" prop="validDate">
              <el-date-picker
                v-model="form.validDate"
                type="date"
                :placeholder="pageType === 'detail' ? ' ' : '有效期'"
                class="full-width-input"
                :class="{ 'detail-input': pageType === 'detail' }"
                :disabled="pageType === 'detail'"
                format="YYYY-MM-DD"
                value-format="YYYY-MM-DD"
              />
            </el-form-item>
          </el-col>
          <el-col :span="8">
            <el-form-item label="有效期是否正确:" prop="validDateCorrect">
              <el-radio-group v-model="form.validDateCorrect" :disabled="pageType === 'detail'">
                <el-radio :label="1">
                  是
                </el-radio>
                <el-radio :label="0">
                  否
                </el-radio>
              </el-radio-group>
            </el-form-item>
          </el-col>
          <el-divider content-position="left">
            <span style="font-weight: 600;">签章</span>
          </el-divider>
          <el-col :span="8">
            <el-form-item label="签名信息是否齐全:" prop="signComplete">
              <el-radio-group v-model="form.signComplete" :disabled="pageType === 'detail'">
                <el-radio :label="1">
                  是
                </el-radio>
                <el-radio :label="0">
                  否
                </el-radio>
              </el-radio-group>
            </el-form-item>
          </el-col>
          <el-col :span="8">
            <el-form-item label="是否盖有有效印章:" prop="sealComplete">
              <el-radio-group v-model="form.sealComplete" :disabled="pageType === 'detail'">
                <el-radio :label="1">
                  是
                </el-radio>
                <el-radio :label="0">
                  否
                </el-radio>
              </el-radio-group>
            </el-form-item>
          </el-col>
        </el-row>
      </el-form>
    </detail-block>

    <detail-block v-loading="loading" title="相关数据信息确认">
      <detail-block title="量传指标">
        <div>
          <div class="tech-file">
            <span class="file-text">检定项目:  <span v-if="pageType === 'detail'"> {{ form.quantityTargetItem }} </span></span>
            <el-input
              v-if="pageType !== 'detail'"
              v-model.trim="form.quantityTargetItem"
              type="textarea"
              autosize
              :placeholder="pageType === 'detail' ? '' : '请输入检定项目'"
              :disabled="pageType === 'detail'"
              style="width: 50%;"
            />
          </div>
        </div>
        <template v-if="pageType !== 'detail'" #btns>
          <el-button type="primary" @click="addRow('quantityTarget')">
            增加行
          </el-button>
          <el-button type="info" @click="deleteRow('quantityTarget')">
            删除行
          </el-button>
        </template>
        <el-table
          ref="techRef"
          :data="quantityTargetList"
          border
          style="width: 100%;"
          @selection-change="handleTechSelectionQuantityTargetChange"
          @row-dblclick="rowDblclickQuantityTarget"
        >
          <el-table-column v-if="pageType !== 'detail'" type="selection" width="38" />
          <el-table-column align="center" label="序号" width="80" type="index" />
          <el-table-column
            v-for="item in quantityTargetColumns"
            :key="item.value"
            :prop="item.value"
            :label="item.text"
            align="center"
          >
            <template #header>
              <span v-show="item.required" style="color: red;">*</span><span>{{ item.text }}</span>
            </template>
            <template #default="scope">
              <span v-if="pageType === 'detail' && item.value !== 'meetRequire'">{{ scope.row[item.value] }}</span>
              <span v-if="pageType === 'detail' && item.value === 'meetRequire'">{{ scope.row[item.value] === 0 ? '不满足' : scope.row[item.value] === 1 ? '满足' : '未知' }}</span>
              <el-input v-if="pageType !== 'detail' && item.value !== 'meetRequire'" v-model="scope.row[item.value]" :placeholder="`${item.text}`" class="input" />
              <el-radio-group v-if="pageType !== 'detail' && item.value === 'meetRequire'" v-model="scope.row[item.value]" :disabled="pageType === 'detail'">
                <el-radio :label="1">
                  满足
                </el-radio>
                <el-radio :label="0">
                  不满足
                </el-radio>
              </el-radio-group>
            </template>
          </el-table-column>
        </el-table>
      </detail-block>

      <detail-block title="非量传指标">
        <div class="tech-file">
          <span class="file-text">检定项目:  <span v-if="pageType === 'detail'">{{ form.notQuantityTargetItem }}</span></span>
          <el-input
            v-if="pageType !== 'detail'"
            v-model.trim="form.notQuantityTargetItem"
            type="textarea"
            autosize
            :placeholder="pageType === 'detail' ? '' : '请输入检定项目'"
            :disabled="pageType === 'detail'"
            style="width: 50%;"
          />
        </div>
        <template v-if="pageType !== 'detail'" #btns>
          <el-button type="primary" @click="addRow('notQuantityTarget')">
            增加行
          </el-button>
          <el-button type="info" @click="deleteRow('notQuantityTarget')">
            删除行
          </el-button>
        </template>
        <el-table
          ref="techRef"
          :data="notQuantityTargetList"
          border
          style="width: 100%;"
          @selection-change="handleTechSelectionNotQuantityTargetChange"
          @row-dblclick="rowDblclickNotQuantityTarget"
        >
          <el-table-column v-if="pageType !== 'detail'" type="selection" width="38" />
          <el-table-column align="center" label="序号" width="80" type="index" />
          <el-table-column
            v-for="item in quantityTargetColumns"
            :key="item.value"
            :prop="item.value"
            :label="item.text"
            align="center"
          >
            <template #header>
              <span v-show="item.required" style="color: red;">*</span><span>{{ item.text }}</span>
            </template>
            <template #default="scope">
              <span v-if="pageType === 'detail' && item.value !== 'meetRequire'">{{ scope.row[item.value] }}</span>
              <span v-if="pageType === 'detail' && item.value === 'meetRequire'">{{ scope.row[item.value] === 0 ? '不满足' : scope.row[item.value] === 1 ? '满足' : '未知' }}</span>
              <el-input v-if="pageType !== 'detail' && item.value !== 'meetRequire'" v-model="scope.row[item.value]" :placeholder="`${item.text}`" class="input" />
              <el-radio-group v-if="pageType !== 'detail' && item.value === 'meetRequire'" v-model="scope.row[item.value]" :disabled="pageType === 'detail'">
                <el-radio :label="1">
                  满足
                </el-radio>
                <el-radio :label="0">
                  限用
                </el-radio>
              </el-radio-group>
            </template>
          </el-table-column>
        </el-table>
      </detail-block>
    </detail-block>
    <detail-block v-loading="loading" title="">
      <el-form
        ref="resultRulesRef"
        :model="form"
        :label-width="120"
        label-position="right"
        :rules="rules"
      >
        <el-row :gutter="24">
          <el-col :span="16">
            <el-form-item label="结果确认结论:" prop="meterIdentifyName">
              <el-input
                v-model="form.meterIdentifyName"
                type="textarea"
                autosize
                :placeholder="pageType === 'detail' ? '' : '请输入结果确认结论'"
                :disabled="pageType === 'detail'"
                :class="{ 'detail-input': pageType === 'detail' }"
              />
            </el-form-item>
          </el-col>
        </el-row>

        <el-row :gutter="24">
          <el-col :span="16">
            <el-form-item label="限用范围:">
              <el-input
                v-model="form.limitScope"
                type="textarea"
                autosize
                :placeholder="pageType === 'detail' ? '' : '请输入限用范围'"
                :disabled="pageType === 'detail'"
                :class="{ 'detail-input': pageType === 'detail' }"
              />
            </el-form-item>
          </el-col>
        </el-row>
        <el-row :gutter="24">
          <el-col :span="16">
            <el-form-item label="备注:">
              <el-input
                v-model="form.remark"
                type="textarea"
                autosize
                :placeholder="pageType === 'detail' ? '' : '请输入限用备注'"
                :disabled="pageType === 'detail'"
                :class="{ 'detail-input': pageType === 'detail' }"
              />
            </el-form-item>
          </el-col>
        </el-row>
      </el-form>
    </detail-block>
  </div>
</template>

<style lang="scss" scoped>
.tech-file {
  display: flex;
  align-items: center;
  margin-left: 20px;
  margin-bottom: 10px;

  .file-text {
    white-space: nowrap;
    margin-right: 10px;
    font-size: 14px;
    color: #60627f;
  }
}
</style>

<style lang="scss">
.result-confirm {
  .el-radio__label {
    display: block !important;
  }
}
</style>