Newer
Older
xc-business-system / src / views / equipement / source / resultConfirm / planDetail.vue
<!-- 溯源结果确认详情,展示溯源计划页面 -->
<script name="SourceConfirmDetailPlan" 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 { dictType } from '@/global'
import { getDictByCode } from '@/api/system/dict'
import { SCHEDULE } from '@/utils/scheduleDict'
import useUserStore from '@/store/modules/user'
import { addSourcePlanList, failUpdateSourcePlanList, getInfo, getSourcePlanList, submit, updateSourcePlanList } from '@/api/equipment/source/plan'
const $router = useRouter() // 关闭页面使用
const user = useUserStore() // 用户信息
const form = ref({
  planYear: '', // 年度
  labCode: '', // 实验室代码
  groupCode: '', // 组别代码
  equipmentId: '', // 设备id
  equipmentNo: '', // 统一编号
  equipmentName: '', // 设备名称
  model: '', // 规格型号
  manufactureNo: '', // 出厂编号
  manufacturer: '', // 生产厂家
  standardNo: '', // 所属测量标准号
  standardName: '', // 所属测量标准名称
  standardSituation: '1', // 标准情况字典code
  standardSituationName: '', // 标准情况(字典value)
  equipmentCategory: '', // 所属类别(字典code)
  equipmentCategoryName: '', // 所属类别(字典value)

  meterIdentify: '', // 检定结果
  traceDate: '', // 测试、校准/检定日期
  traceWay: '', // 溯源方式(字典code)
  traceWayName: '', // 溯源方式(字典value)
  supplierId: '', // 溯源机构id
  supplierName: '', // 溯源机构名称
  planTraceTime: '', // 计划溯源时间
  remark: '', // 备注
})
const loading = ref(false) // loading
const $route = useRoute() // 路由参数
const infoId = ref('') // id
// -----------------------------------------------路由参数---------------------------------
if ($route.params && $route.params.id) {
  infoId.value = $route.params.id as string
}
// -----------------------------------------字典--------------------------------------------------------------
const labCodeList = ref<dictType[]>([]) // 实验室代码
const groupCodeList = ref<dictType[]>([]) // 组别代码

// 查询字典
const getDict = async () => {
  // 实验室代码
  getDictByCode('bizGroupCodeEquipment').then((response) => {
    labCodeList.value = response.data
  })
  // 组别代码
  getDictByCode('bizGroupCode').then((response) => {
    groupCodeList.value = response.data
  })
}

// 获取上一年溯源信息
const fetchSourceInfoLastyear = (planYear: string | number) => {
  const year = Number(planYear) - 1
  console.log('上一年度', year)
  const param = {
    approvalStatus: '0', // 审批状态
    createTimeEnd: '', // 申请时间结束
    createTimeStart: '', // 申请时间开始
    createUserName: '', // 申请人
    formId: SCHEDULE.TRACE_PALN_APPROVAL, // formid
    planName: '', // 文件名称
    planNo: '', // 文件编号
    labCode: '', // 实验室代码
    groupCode: '', // 组别代码、部门、
    planYear: year, // 年度
    planStatusName: '', // 溯源计划状态
    limit: 20,
    offset: 1,
  }
  getSourcePlanList(param).then((response) => {
    if (response.data.rows.length) {
      getInfo({ id: response.data.rows[0].id }).then((res) => {
        form.value.meterIdentify = res.data.meterIdentify // 检定结果
        form.value.traceDate = res.data.traceDate // 测试、校准/检定日期
        form.value.traceWay = res.data.traceWay // 溯源方式(字典code)
        form.value.traceWayName = res.data.traceWayName // 溯源方式(字典value)
        form.value.supplierId = res.data.supplierId // 溯源机构id
        form.value.supplierName = res.data.supplierName // 溯源机构名称
      })
    }
  })
}

// ----------------------------------------------溯源需求----------------------------------------
const sourceNeedlist = ref([])
const sourceNeedColumns = ref([
  { text: '参数', value: 'measureParam', align: 'center', required: true },
  { text: '测量范围', value: 'measureRange', align: 'center', required: true },
])
const route = useRoute()
// 获取详情
const fetchInfo = () => {
  loading.value = true
  getInfo({ id: infoId.value }).then((res) => {
    loading.value = false
    //   form.value = res.data
    //   form.value.planYear = `${res.data.planYear}`
    //   list.value = res.data.tracePlanEquipmentList // 设备列表
    if (res && res.data && res.data.tracePlanEquipmentList && res.data.tracePlanEquipmentList.length) {
      const equipmentInfoList = res.data.tracePlanEquipmentList.filter((item: { equipmentId: string }) => item.equipmentId === $route.query.equipmentId)
      if (equipmentInfoList && equipmentInfoList.length) {
        const equipmentInfo = equipmentInfoList[0]
        form.value = equipmentInfo
        sourceNeedlist.value = equipmentInfo.technicalTargetList
      }
      form.value.labCode = res.data.labCode // 实验室代码
      form.value.groupCode = res.data.groupCode // 组别代码
      form.value.directorName = route.query.directorName as string // 负责人
    }
  })
}

// 关闭新增页面的回调
const close = () => {
  $router.back()
}
// ---------------------------------------------钩子----------------------------------------------

onMounted(() => {
  getDict()
  fetchInfo() // 获取详情信息
})
</script>

<template>
  <app-container class="source-resultConfirm-planDetail">
    <detail-page v-loading="loading" title="溯源结果确认-查看">
      <template #btns>
        <el-button type="info" @click="close">
          关闭
        </el-button>
      </template>
      <el-form
        ref="equipmentInfoFormRef"
        :model="form"
        :label-width="130"
        label-position="right"
      >
        <el-row :gutter="24">
          <el-col :span="6">
            <el-form-item label="统一编号:" prop="equipmentNo">
              <el-input v-model="form.equipmentNo" disabled placeholder="统一编号" />
            </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="实验室"
                class="short-input"
                filterable
                clearable
                disabled
              >
                <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="labCode">
              <el-select
                v-model="form.groupCode"
                placeholder="部门"
                class="short-input"
                filterable
                clearable
                disabled
              >
                <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="负责人:">
              <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="所属测量标准编号:" label-width="140px" prop="standardNo">
              <el-input
                v-model.trim="form.standardNo"
                placeholder="所属测量标准编号"
                class="detail-input"
                type="textarea"
                autosize
                disabled
              />
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="所属测量标准名称:" label-width="140px" prop="standardName">
              <el-input
                v-model.trim="form.standardName"
                placeholder="所属测量标准名称"
                class="detail-input"
                type="textarea"
                autosize
                disabled
              />
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="标准情况:" prop="standardSituation">
              <el-radio-group v-model="form.standardSituation" disabled>
                <el-radio label="1">
                  已建
                </el-radio>
                <el-radio label="2">
                  待建
                </el-radio>
                <el-radio label="3">
                  其他
                </el-radio>
              </el-radio-group>
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="所属类别:" prop="equipmentCategory">
              <el-radio-group v-model="form.equipmentCategory" disabled>
                <el-radio label="1">
                  主标准器
                </el-radio>
                <el-radio label="2">
                  配套仪器
                </el-radio>
                <el-radio label="3">
                  其他
                </el-radio>
              </el-radio-group>
            </el-form-item>
          </el-col>
        </el-row>
        <el-row :gutter="24">
          <el-col :span="6">
            <el-form-item label="上一年度溯源情况" />
          </el-col>
          <el-col :span="6">
            <el-form-item label="检定结果:" prop="meterIdentify">
              <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-col :span="6">
            <el-form-item label="测试、校准/检定日期:" label-width="150px" prop="traceDate">
              <el-date-picker
                v-model="form.traceDate"
                type="datetime"
                format="YYYY-MM-DD"
                value-format="YYYY-MM-DD"
                placeholder="测试、校准/检定日期"
                disabled
              />
            </el-form-item>
          </el-col>
        </el-row>
        <el-row :gutter="24">
          <el-col :span="6">
            <el-form-item label="本年溯源计划" />
          </el-col>
          <el-col :span="6">
            <el-form-item label="溯源方式:" prop="traceWay">
              <el-radio-group v-model="form.traceWay" disabled>
                <el-radio label="1">
                  自检
                </el-radio>
                <el-radio label="2">
                  送检
                </el-radio>
                <el-radio label="3">
                  比对
                </el-radio>
              </el-radio-group>
            </el-form-item>
          </el-col>
          <el-col :span="6">
            <el-form-item label="溯源机构名称:" prop="supplierName">
              <el-input
                v-model="form.supplierName"
                placeholder="溯源机构名称"
                class="input"
                disabled
              />
            </el-form-item>
          </el-col>
          <el-col :span="6">
            <el-form-item label="计划溯源时间:" prop="planTraceTime">
              <el-date-picker
                v-model="form.planTraceTime"
                type="datetime"
                :placeholder="pageType === 'detail' ? ' ' : '计划溯源时间'"
                class="full-width-input"
                :class="{ 'detail-input': pageType === 'detail' }"
                disabled
                format="YYYY-MM-DD HH:mm:ss"
                value-format="YYYY-MM-DD HH:mm:ss"
                :clearable="false"
              />
            </el-form-item>
          </el-col>
        </el-row>
        <el-row :gutter="24" class="marg">
          <el-col :span="12">
            <el-form-item label="备注:">
              <el-input
                v-model="form.remark"
                type="textarea"
                autosize
                :placeholder="pageType === 'detail' ? '' : '备注'"
                disabled
                :class="{ 'detail-input': pageType === 'detail' }"
              />
            </el-form-item>
          </el-col>
        </el-row>
      </el-form>

      <!-- 溯源需求 -->
      <detail-block v-loading="loading" title="溯源需求">
        <el-table
          :data="sourceNeedlist"
          border
          style="width: 100%;"
          max-height="600"
          @row-dblclick="rowDbClick"
          @selection-change="handleSelectionSourceNeedChange"
        >
          <el-table-column align="center" label="序号" width="80" type="index" />
          <el-table-column
            v-for="item in sourceNeedColumns"
            :key="item.value"
            :prop="item.value"
            :label="item.text"
            align="center"
          />
        </el-table>
      </detail-block>
    </detail-page>
  </app-container>
</template>

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