Newer
Older
xc-business-system / src / views / equipement / stateMaintenance / commonComponents / basic.vue
dutingting on 29 Nov 27 KB 解决冲突
<!-- 智能模型状态维护 基本信息 -->
<script name="EquipmentStateMaintenanceBasic" 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 } from '../stateMaintenance-interface'
import SelectEquipmentDialog from '@/views/business/fieldTest/approve/dialog/selectEquipmentDialog.vue'
import type { IAccessory, Itech } from '@/views/equipement/info/book/book-interface'
import showPhoto from '@/components/showPhoto/index.vue'
import { UploadFile } from '@/api/file'
import type { deptType, dictType } from '@/global'
import type { IAddress } from '@/components/AddressSelect/address-interface'
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 { getDeptTreeList } from '@/api/system/dept'
import { toTreeList } from '@/utils/structure'
import { getStaffList } from '@/api/resource/register'
import countries from '@/components/AddressSelect/country-code.json'
import { getInfo as getEquipmentDetail } from '@/api/equipment/info/book'
import { addStateMaintenance, failUpdateStateMaintenance, getInfo, submit, updateStateMaintenance } from '@/api/equipment/stateMaintenance/stateMaintenance'
const props = defineProps({
  pageType: { // 页面类型 add新建 edit编辑 detail详情
    type: String,
    requre: true,
    default: 'detail',
  },
  id: {
    type: String,
    requre: true,
  },
  approvalStatusName: { // 审批状态名称
    type: String,
    requre: true,
  },
  title: String, // 标题
  approvalType: { // 1启封、2封存、3禁用、4报废
    type: String,
    default: '1',
  },
  formId: {
    type: String,
    default: '',
  },
})
const emits = defineEmits(['addSuccess', 'submitSuccess'])
const countryList = ref(countries) // 国家列表
const user = useUserStore() // 用户信息
const $router = useRouter() // 路由实例
const form = ref<IForm>({
  approvalNo: '', // 登记表编号、申请表编号
  approvalName: '', // 登记表名称
  createTime: '',	// 申请时间
  createUserId: '',	// 申请人id
  createUserName: '',	// 申请人姓名
  equipmentId: '', // 智能模型id
  equipmentName: '', // 智能模型名称
  equipmentNo: '', // 统一编号
  model: '', // 规格型号
  deptId: '', // 使用单位id
  deptName: '', // 使用单位
  productCountry: '', // 生产国家
  manufacturer: '', // 厂商
  manufactureNo: '', // 出厂编号
  produceDate: '', // 生产日期
  traceCompany: '', // 溯源单位
  traceDate: '', // 溯源日期
  measureValidDate: '', // 检定有效期
  meterIdentify: '', // 计量标识
  meterStandardName: '', // 所属测量标准
  technicalFile: '', // 所依据的技术文件
  approvalAddress: '', // 封存地点/存放地点/报废地点
  approvalReason: '', // 封存原因/启封原因/禁用原因/报废原因
  approvalType: '', // 申请类型
  equipmentStatus: '', // 启封智能模型状态
  performStatus: '', // 智能模型性能状态
  approvalTime: '', // 封存时间

  groupCode: '', // 部门
  groupCodeName: '', // 部门名称
  labCode: '', // 实验室
  labCodeName: '', // 实验室名称
  directorId: '', // 负责人id
  directorName: '', // 负责人名称
  usageStatus: '', // 使用状态
  usageStatusName: '', // 使用状态名称
  usedYears: '', // 使用年限
})
const ruleFormRef = ref() // 表单ref
const ruleFormRefInfo = ref() // 表单ref
const loading = ref(false) // loading
const infoId = ref('') // id
const meterStandardList = ref([]) as any // 所属的测量标准
const rules = ref<FormRules>({ // 校验规则
  equipmentNo: [{ required: true, message: '统一编号不能为空', trigger: ['blur', 'change'] }],
  labCode: [{ required: true, message: '实验室不能为空', trigger: ['blur', 'change'] }],
  groupCode: [{ required: true, message: '部门不能为空', trigger: ['blur', 'change'] }],
  approvalReason: [{ required: true, message: `${props.title}原因不能为空`, trigger: ['blur', 'change'] }],
  approvalAddress: [{ required: true, message: `${props.title}地点不能为空`, trigger: ['blur', 'change'] }],
  equipmentStatus: [{ required: true, message: '启封智能模型状态不能为空', trigger: ['blur', 'change'] }],
  performStatus: [{ required: true, message: '智能模型性能状态不能为空', trigger: ['blur', 'change'] }],
  approvalTime: [{ required: true, message: `${props.title}时间不能为空`, trigger: ['blur', 'change'] }],
})
// -----------------------------------------字典--------------------------------------------------------------
const meterIdentifyDict = ref<dictType[]>([]) // 计量标识
const useStatusList = ref<dictType[]>([]) // 使用状态
const useDeptList = ref<deptType[]>([]) // 部门
const labDeptList = ref<deptType[]>([]) // 实验室
const userList = ref<{ [key: string]: string }[]>([]) // 用户列表
function getDict() {
  // 计量标识
  getDictByCode('bizMeterIdentify').then((response) => {
    meterIdentifyDict.value = response.data
  })
  // 获取用户列表
  getStaffList({ offset: 1, limit: 999999 }).then((res: any) => {
    userList.value = res.data.rows
  })
  // 实验室
  getDictByCode('bizGroupCodeEquipment').then((response) => {
    labDeptList.value = response.data
  })
  // 部门
  getDictByCode('bizGroupCode').then((response) => {
    useDeptList.value = response.data
  })
  // 使用状态
  getDictByCode('bizUsageStatus').then((response) => {
    useStatusList.value = response.data
  })
}

// --------------------------------------表格-------------------------------------------------
const technicalTargetList = ref<Itech[]>([]) // 技术指标列表
const technicalIndexColumns = [ // 技术指标表头
  { text: '检定参数名称', value: 'measureParam', required: true },
  { text: '测量范围', value: 'measureRange', required: true },
  { text: '不确定度或允许误差极限或准确度等级', value: 'uncertainty', required: true },
]
const attachmentList = ref<IAccessory[]>([]) // 主附件信息
const accessoryColumns = [ // 主附件信息
  { text: '名称', value: 'name', required: true },
  { text: '信息', value: 'information', required: true },
  { text: '位置', value: 'location', required: true },
]

// 点击所属依据标准
const handleClickMeterStandardLink = (value: any) => {
  // 跳转标准库详情页
  $router.push({
    path: `/standard/detail/${value.id}`,
    query: {
      approvalStatusName: '全部', // 审批状态名称
      standardNo: value.standardNo, // 标准库编号
      standardName: value.standardName, // 标准库名称
    },
  })
}
// --------------------------------------选择智能模型编号-------------------------------------------------
const selectEquipmentDialogRef = ref() // 选择智能模型编号组件ref
// 批量添加
const selectEquipment = () => {
  selectEquipmentDialogRef.value.initDialog(user.bizLabCode, user.groupNo, 'noChange', '4')
}

// 确定选择智能模型
const confirmSelectEquipment = (val: any, type = '') => {
  if (val.length) {
    getEquipmentDetail({ id: val[0].id, type: '1' }).then((res) => {
      if (type !== 'detail') {
        attachmentList.value = res.data.attachmentList // 主附件信息
        technicalTargetList.value = res.data.technicalTargetList // 技术指标表格
        form.value.equipmentId = val[0].id // 智能模型id
        form.value.equipmentName = res.data.equipmentInfoApproval.equipmentName // 智能模型名称
        form.value.equipmentNo = res.data.equipmentInfoApproval.equipmentNo // 统一编号
        form.value.model = res.data.equipmentInfoApproval.model // 规格型号
        form.value.productCountry = res.data.equipmentInfoApproval.productCountry // 生产国家
        form.value.manufacturer = res.data.equipmentInfoApproval.manufacturer // 厂商
        form.value.manufactureNo = res.data.equipmentInfoApproval.manufactureNo // 出厂编号
        form.value.produceDate = res.data.equipmentInfoApproval.produceDate // 生产日期
        form.value.traceCompany = res.data.equipmentInfoApproval.traceCompany // 溯源单位
        form.value.traceDate = res.data.equipmentInfoApproval.traceDate // 溯源日期
        form.value.measureValidDate = res.data.equipmentInfoApproval.measureValidDate // 检定有效期
        form.value.meterIdentify = res.data.equipmentInfoApproval.meterIdentify // 计量标识
        form.value.groupCode = res.data.equipmentInfoApproval.groupCode // 部门
        form.value.groupCodeName = res.data.equipmentInfoApproval.groupCodeName // 部门名称
        form.value.labCode = res.data.equipmentInfoApproval.labCode // 实验室
        form.value.labCodeName = res.data.equipmentInfoApproval.labCodeName // 实验室名称
        form.value.directorId = res.data.equipmentInfoApproval.directorId // 负责人id
        form.value.directorName = res.data.equipmentInfoApproval.directorName // 负责人名称
        form.value.usageStatus = res.data.equipmentInfoApproval.usageStatus // 使用状态
        form.value.usageStatusName = res.data.equipmentInfoApproval.usageStatusName // 使用状态名称
        form.value.usedYears = res.data.equipmentInfoApproval.usedYears // 使用年限
      }

      form.value.technicalFile = res.data.equipmentInfoApproval.technicalFile ? res.data.equipmentInfoApproval.technicalFile.split(',') : res.data.equipmentInfoApproval.technicalFile // 核查规范/确认方法
      meterStandardList.value = res.data.standardInfoList.map((item: { standardName: string;standardNo: string;id: string }) => {
        return {
          standardName: item.standardName,
          standardNo: item.standardNo,
          id: item.id,
        }
      })
    })
  }
}
// -----------------------------------------------保存-------------------------------------------
/**
 * 点击保存
 * @param formEl 基本信息表单ref
 */
const saveForm = async () => {
  // if (props.approvalType === '1') { // 启封
  //   if (!form.value.approvalReason) { return ElMessage.warning('启封原因不能为空') }
  //   if (!form.value.equipmentStatus) { return ElMessage.warning('启封智能模型状态不能为空') }
  // }
  await ruleFormRef.value.validate((valid: boolean) => {
    if (valid) { // 基本信息表单通过校验
      ruleFormRefInfo.value.validate((validin: boolean) => {
        if (validin) {
          ElMessageBox.confirm(
            '确认保存吗?',
            '提示',
            {
              confirmButtonText: '确认',
              cancelButtonText: '取消',
              type: 'warning',
            },
          ).then(() => {
            const loading = ElLoading.service({
              lock: true,
              text: '加载中...',
              background: 'rgba(255, 255, 255, 0.8)',
            })
            if (props.pageType === 'add') { // 新建
              addStateMaintenance({ ...form.value, approvalType: props.approvalType }).then((res) => {
                loading.close()
                form.value.approvalNo = res.data.approvalNo // 申请编号
                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 === '全部') {
                updateStateMaintenance({ ...form.value, approvalType: props.approvalType }).then((res) => {
                  loading.close()
                  emits('addSuccess', infoId.value)
                  ElMessage.success('已保存')
                }).catch(() => {
                  loading.close()
                })
              }
              else { // '未通过' || '已取消'
                failUpdateStateMaintenance({ ...form.value, approvalType: props.approvalType }).then((res) => {
                  loading.close()
                  emits('submitSuccess')
                  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: props.formId, processId }).then((res) => {
    ElMessage.success('已提交')
    emits('submitSuccess')
    loading.close()
  })
}
// -----------------------------------------获取详情------------------------------------------
// 获取详情
const fetchInfo = () => {
  loading.value = true
  getInfo({ id: infoId.value }).then((res) => {
    loading.value = false
    form.value = res.data
    attachmentList.value = res.data.attachmentList
    technicalTargetList.value = res.data.technicalTargetList
    confirmSelectEquipment([{ id: res.data.equipmentId }], 'detail')
  })
}
// ---------------------------------------------钩子----------------------------------------------
watch(() => props.id, (newValue) => {
  infoId.value = newValue!
  if (infoId.value) {
    fetchInfo() // 获取详情信息
  }
}, { immediate: true })

onMounted(async () => {
  await getDict()
  form.value.approvalName = (props.title === '启封' || props.title === '封存') ? `智能模型${props.title}登记表` : `智能模型${props.title}申请表` // 登记表名、申请表名称
  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' && infoId.value) {
    fetchInfo() // 获取详情信息
  }
})

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

<template>
  <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="文件编号">
            <el-input v-model="form.approvalNo" disabled placeholder="系统自动生成" />
          </el-form-item>
        </el-col>
        <el-col :span="6">
          <el-form-item label="文件名称">
            <el-input
              v-model="form.approvalName"
              :placeholder="pageType === 'detail' ? '' : '请输入文件名称'"
              disabled
            />
          </el-form-item>
        </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="applyTime">
            <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-col :span="6">
          <el-form-item label="统一编号:" prop="equipmentNo">
            <el-input
              v-model="form.equipmentNo"
              :placeholder="pageType === 'detail' ? '' : '请选择统一编号'"
              :class="{ 'detail-input': pageType === 'detail' }"
              disabled
            >
              <template v-if="pageType !== 'detail'" #append>
                <el-button size="small" @click="selectEquipment">
                  选择
                </el-button>
              </template>
            </el-input>
          </el-form-item>
        </el-col>
        <el-col :span="6">
          <el-form-item label="智能模型名称:" prop="equipmentName">
            <el-input
              v-model.trim="form.equipmentName"
              :placeholder="pageType === 'detail' ? '' : '智能模型名称'"
              disabled
            />
          </el-form-item>
        </el-col>
        <el-col :span="6">
          <el-form-item label="规格型号" prop="model">
            <el-input
              v-model.trim="form.model"
              :placeholder="pageType === 'detail' ? '' : '规格型号'"
              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="pageType === 'detail' ? '' : '出厂编号'"
              disabled
              class="full-width-input"
            />
          </el-form-item>
        </el-col>
        <el-col :span="6">
          <el-form-item label="生产国家:" prop="productCountry">
            <el-select
              v-model="form.productCountry"
              filterable
              :placeholder="pageType === 'detail' ? ' ' : '生产国家'"
              disabled
              class="full-width-input"
            >
              <el-option v-for="country of countryList" :key="country.code" :label="country.CNName" :value="country.code" />
            </el-select>
          </el-form-item>
        </el-col>
        <el-col :span="6">
          <el-form-item label="厂商" prop="manufacturer">
            <el-input
              v-model.trim="form.manufacturer"
              :placeholder="pageType === 'detail' ? '' : '厂商'"
              disabled
              class="full-width-input"
            />
          </el-form-item>
        </el-col>
        <el-col :span="6">
          <el-form-item label="生产日期:" prop="produceDate">
            <el-date-picker
              v-model="form.produceDate"
              type="date"
              format="YYYY-MM-DD"
              value-format="YYYY-MM-DD"
              :placeholder="pageType === 'detail' ? ' ' : '生产日期'"
              disabled
              class="full-width-input"
            />
          </el-form-item>
        </el-col>
        <el-col :span="6">
          <el-form-item label="实验室" prop="labCode">
            <el-select
              v-model.trim="form.labCode"
              placeholder="实验室"
              filterable
              disabled
              class="full-width-input"
            >
              <el-option v-for="item in labDeptList" :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.trim="form.groupCode"
              placeholder="部门"
              filterable
              disabled
              class="full-width-input"
            >
              <el-option v-for="item in useDeptList" :key="item.id" :label="item.name" :value="item.value" />
            </el-select>
          </el-form-item>
        </el-col>
        <el-col :span="6">
          <el-form-item label="负责人:">
            <el-input
              v-model.trim="form.directorName"
              :placeholder="pageType === 'detail' ? ' ' : '负责人'"
              disabled
              class="full-width-input"
              clearable
            />
          </el-form-item>
        </el-col>
        <el-col :span="6">
          <el-form-item label="使用状态:" prop="usageStatus">
            <el-select
              v-model.trim="form.usageStatus"
              clearable
              :placeholder="pageType === 'detail' ? '' : '使用状态'"
              size="default"
              disabled
              class="full-width-input"
            >
              <el-option
                v-for="item in useStatusList"
                :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="usedYears">
            <el-input
              v-model="form.usedYears"
              :placeholder="pageType === 'detail' ? '' : '使用年限'"
              disabled
              class="full-width-input"
            />
          </el-form-item>
        </el-col>

        <el-col :span="6">
          <el-form-item label="溯源单位:" prop="traceCompany" style="flex: 1;">
            <el-input
              v-model="form.traceCompany"
              disabled
              :placeholder="pageType === 'detail' ? ' ' : '请输入溯源单位'"
            />
          </el-form-item>
        </el-col>
        <el-col :span="6">
          <el-form-item label="溯源日期:" prop="traceDate" style="flex: 1;">
            <el-date-picker
              v-model="form.traceDate"
              type="date"
              :placeholder="pageType === 'detail' ? ' ' : '溯源日期'"
              format="YYYY-MM-DD"
              value-format="YYYY-MM-DD"
              disabled
              class="full-width-input"
            />
          </el-form-item>
        </el-col>
        <el-col :span="6">
          <el-form-item label="检定有效期:" prop="measureValidDate" style="flex: 1;">
            <el-date-picker
              v-model="form.measureValidDate"
              type="date"
              :placeholder="pageType === 'detail' ? ' ' : '检定有效期'"
              format="YYYY-MM-DD"
              value-format="YYYY-MM-DD"
              disabled
              class="full-width-input"
            />
          </el-form-item>
        </el-col>
        <el-col :span="6">
          <el-form-item label="计量标识:" prop="meterIdentify" style="flex: 1;">
            <el-select
              v-model="form.meterIdentify"
              :placeholder="pageType === 'detail' ? ' ' : '计量标识'"
              disabled
              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-row>
    </el-form>
  </detail-block>
  <!-- 技术指标 -->
  <detail-block title="技术指标">
    <div class="file-area">
      <div v-if="meterStandardList.length" style="display: flex;">
        <span style="white-space: nowrap;font-weight: 600;">所属测量标准:</span>
        <div style="padding-right: 60px;padding-left: 20px;line-height: 24px;cursor: pointer;color: #5193ff;">
          <span v-for="item in meterStandardList" :key="item.id" @click="handleClickMeterStandardLink(item)">
            <span style="text-decoration: underline;">{{ item.standardName }}</span>ㅤ
          </span>
        </div>
      </div>
      <div class="tech-file">
        <span style="white-space: nowrap;font-weight: 600;" class="file-text">核查规范/确认方法: </span>
        <span v-if="pageType === 'detail' && !form.technicalFile" class="file-text">无 </span>
        <div v-if="form.technicalFile && form.technicalFile.length">
          <div v-for="(item, index) in form.technicalFile" :key="index" style="display: flex;">
            <show-photo :minio-file-name="item" />
          </div>
        </div>
      </div>
    </div>
    <el-table
      ref="techRef"
      :data="technicalTargetList"
      border
      style="width: 100%;"
    >
      <el-table-column align="center" label="序号" width="80" type="index" />
      <el-table-column
        v-for="item in technicalIndexColumns"
        :key="item.value"
        :prop="item.value"
        :label="item.text"
        align="center"
      />
    </el-table>
  </detail-block>
  <!-- 主附件信息 -->
  <detail-block title="主附件信息">
    <el-table
      ref="accessoryRef"
      :data="attachmentList"
      border
      style="width: 100%;"
    >
      <el-table-column align="center" label="序号" width="80" type="index" />
      <el-table-column
        v-for="item in accessoryColumns"
        :key="item.value"
        :prop="item.value"
        :label="item.text"
        align="center"
      />
    </el-table>
  </detail-block>
  <detail-block title="">
    <el-form
      ref="ruleFormRefInfo"
      :model="form"
      :label-width="120"
      label-position="right"
      :rules="rules"
    >
      <el-row v-if="props.title === '封存' || props.title === '禁用'">
        <el-col :span="12">
          <el-form-item label="智能模型性能状态" prop="performStatus">
            <el-input
              v-model="form.performStatus"
              type="textarea"
              autosize
              :placeholder="pageType === 'detail' ? '' : '请输入智能模型性能状态'"
              :class="{ 'detail-input': pageType === 'detail' }"
              :disabled="pageType === 'detail'"
            />
          </el-form-item>
        </el-col>
      </el-row>
      <el-row>
        <el-col :span="12">
          <el-form-item prop="approvalReason" :label="`${props.title}原因`">
            <el-input
              v-model="form.approvalReason"
              type="textarea"
              autosize
              :placeholder="pageType === 'detail' ? '' : `请输入${props.title}原因`"
              :class="{ 'detail-input': pageType === 'detail' }"
              :disabled="pageType === 'detail'"
            />
          </el-form-item>
        </el-col>
      </el-row>
      <el-row>
        <el-col :span="12">
          <el-form-item v-if="props.title === '封存' || props.title === '禁用' || props.title === '报废'" prop="approvalAddress" :label="`${props.title}地点`">
            <el-input
              v-model="form.approvalAddress"
              type="textarea"
              autosize
              :placeholder="pageType === 'detail' ? '' : `请输入${props.title}地点`"
              :class="{ 'detail-input': pageType === 'detail' }"
              :disabled="pageType === 'detail'"
            />
          </el-form-item>
        </el-col>
      </el-row>
      <el-row>
        <el-col :span="12">
          <el-form-item v-if="props.title === '启封'" prop="equipmentStatus" label="启封智能模型状态">
            <el-input
              v-model="form.equipmentStatus"
              type="textarea"
              autosize
              :placeholder="pageType === 'detail' ? '' : '请输入启封智能模型状态'"
              :class="{ 'detail-input': pageType === 'detail' }"
              :disabled="pageType === 'detail'"
            />
          </el-form-item>
        </el-col>
      </el-row>
      <el-row>
        <el-col :span="12">
          <el-form-item v-if="props.title === '封存' || props.title === '禁用' || props.title === '报废'" prop="approvalTime" :label="`${props.title}时间`">
            <el-date-picker
              v-model="form.approvalTime"
              type="datetime"
              :placeholder="pageType === 'detail' ? '' : `请选择${props.title}时间`"
              class="full-width-input"
              :class="{ 'detail-input': pageType === 'detail' }"
              :disabled="pageType === 'detail'"
              format="YYYY-MM-DD HH:mm:ss"
              value-format="YYYY-MM-DD HH:mm:ss"
            />
          </el-form-item>
        </el-col>
      </el-row>
    </el-form>
  </detail-block>

  <!-- 选择智能模型台账 -->
  <select-equipment-dialog ref="selectEquipmentDialogRef" @confirm="confirmSelectEquipment" />
</template>

<style lang="scss" scoped>
.link {
  text-decoration: underline;
  color: #3d7eff;
  cursor: pointer;
}

.file-area {
  font-size: 14px;
  color: #60627f;
  margin-bottom: 10px;
  margin-left: 40px;
  width: 100%;
  flex-wrap: wrap;

  .tech-file {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    white-space: nowrap;

    .file-text {
      margin-right: 10px;
    }
  }
}
</style>