Newer
Older
xc-business-system / src / views / business / taskMeasure / certificate / components / basic.vue
dutingting on 1 Apr 2024 5 KB bug修复
<!-- 证书审批提醒 基本信息 -->
<script name="taskMeasureCertificateBasic" lang="ts" setup>
import type { Ref } from 'vue'
import { ElLoading, ElMessage, ElMessageBox } from 'element-plus'
import * as pdfjsLib from 'pdfjs-dist'
import { onMounted, ref } from 'vue'
import type { IForm } from '../certificate-interface'
import changeRecord from './changeRecord.vue'
import filePreviewUrl from '@/components/filePreview/filePreviewUrl.vue'
import { getStream } from '@/api/business/subpackage/agreement'
import { getBase64, getObjectURL } from '@/utils/download'
import { getDictByCode } from '@/api/system/dict'
import { getUserList } from '@/api/system/user'
import { createMeasureCert, getInfo } from '@/api/business/taskMeasure/certificate'
import type { dictType } from '@/global'
const props = defineProps({
  pageType: { // 页面类型 add新建 edit编辑 detail详情
    type: String,
    default: 'detail',
  },
  infoId: { // id
    type: String,
    default: '',
  },
  measureDataId: { // 检定数据id
    type: String,
  },
})
const emits = defineEmits(['reportData'])
const form: Ref<IForm> = ref({ // 基本信息表单
  sampleName: '', // 被检设备名称
  model: '', // 规格型号
  manufacturingNo: '', // 出厂编号
  certificateFile: '', // 证书报告
  originalRecordFile: '', // 原始记录
})
const infoId = ref('') // id
const approvalStatusName = ref('') // 审批状态名称
// ---------------------------------------标签---------------------------------------------
const radioMenus = ref([ // 标签内容
  { name: '原始记录/证书报告', value: 'certificate-content' },
  { name: '检定数据修改记录', value: 'certificate-change-record' },
])
const current = ref('certificate-content') // 选择的tab 默认基本信息
// -----------------------------------------路由参数----------------------------------------
// 从路由中获取页面类型参数
const $route = useRoute()
if ($route.params) {
  if ($route.params.id) {
    infoId.value = $route.params.id as string
  }
}
// ------------------------------------------字典----------------------------------------------
const mesureResultMap = ref<dictType[]>([]) // 检定结果
const measureCategoryList = ref<dictType[]>([]) // 检校类别
const userList = ref<{ [key: string]: string }[]>([]) // 用户列表
const isUrgentList = ref<dictType[]>([]) // 是否加急

/**
 * 获取字典
 */
function getDict() {
  // 检定结果
  getDictByCode('mesureResult').then((response) => {
    mesureResultMap.value = response.data
  })
  // 检校类别
  getDictByCode('measureCategory').then((response) => {
    measureCategoryList.value = response.data
  })
  // 获取用户列表
  getUserList({ offset: 1, limit: 999999 }).then((res: any) => {
    userList.value = res.data.rows
  })
  // 是否加急
  getDictByCode('isUrgent').then((response) => {
    isUrgentList.value = response.data
  })
}

// ----------------------------------------获取详情----------------------------------------

const fetchInfo = () => {
  const loading = ElLoading.service({
    lock: true,
    background: 'rgba(255, 255, 255, 0.8)',
  })
  getInfo({ id: infoId.value }).then((res) => {
    // if ((`${res.data.originalRecordFile}` === '') || (`${res.data.originalRecordFile}` === '' && `${res.data.certificateFile}`)) {
    //   createMeasureCert({ id: infoId.value }).then((res) => {
    //     form.value.originalRecordFile = res.data.originalRecordFile // 原始记录
    //     form.value.certificateFile = res.data.certificateFile // 检定证书
    //     emits('reportData', res.data.certificateFile, res.data.originalRecordFile)
    //     loading.close()
    //   })
    // }
    // else {
    loading.close()
    form.value.originalRecordFile = res.data.originalRecordFile // 原始记录
    form.value.certificateFile = res.data.certificateFile // 检定证书
    emits('reportData', res.data.certificateFile, res.data.originalRecordFile)
    // }
  })
}

// --------------------------------------------------------------------------------------

onMounted(async () => {
  await getDict() // 获取字典
  form.value.sampleName = $route.query.sampleName as string// 被检设备名称
  form.value.model = $route.query.model as string // 规格型号
  form.value.manufacturingNo = $route.query.manufacturingNo as string // 出厂编号
  console.log('id', infoId.value)
  fetchInfo()
})
</script>

<template>
  <detail-block title="">
    <el-form
      ref="ruleFormRef"
      :model="form"
      :label-width="120"
      label-position="right"
    >
      <el-row :gutter="24" class="marg">
        <el-col :span="6">
          <el-form-item label="被检设备名称:" prop="sampleName">
            <el-input v-model="form.sampleName" disabled placeholder="被检设备名称" />
          </el-form-item>
        </el-col>
        <el-col :span="6">
          <el-form-item label="规格型号:" prop="model">
            <el-input v-model="form.model" disabled placeholder="规格型号" />
          </el-form-item>
        </el-col>
        <el-col :span="6">
          <el-form-item label="出厂编号:" prop="manufacturingNo">
            <el-input v-model="form.manufacturingNo" disabled placeholder="出厂编号" />
          </el-form-item>
        </el-col>
      </el-row>
    </el-form>
  </detail-block>
  <el-radio-group v-model="current" style="padding: 10px 0 0 10px;">
    <el-radio-button v-for="item in radioMenus" :key="item.value" :label="item.value">
      {{ item.name }}
    </el-radio-button>
  </el-radio-group>
  <div v-show="current === 'certificate-content'" style="display: flex; padding: 10px 10px 20px 0;box-sizing: border-box;">
    <file-preview-url v-if="form.certificateFile" style="flex: 1;margin-right: 10px;" :print-file-name="form.certificateFile" />
    <file-preview-url v-if="form.originalRecordFile" style="flex: 1;" :print-file-name="form.originalRecordFile" />
  </div>
  <!-- 修改记录  -->
  <change-record v-show="current === 'certificate-change-record'" :measure-data-id="measureDataId" :page-type="pageType" />
</template>