Newer
Older
xc-business-system / src / views / business / certManage / cert / components / basic.vue
dutingting on 29 Nov 12 KB 临时提交
<!-- 证书管理 基本信息 -->
<script name="BusinessCertBasic" lang="ts" setup>
import { ElLoading, ElMessage, ElMessageBox } from 'element-plus'
import type { FormRules } from 'element-plus'
import dayjs from 'dayjs'
import showPhoto from '@/components/showPhoto/index.vue'
import type { dictType } from '@/global'
import { getDictByCode } from '@/api/system/dict'
import { SCHEDULE } from '@/utils/scheduleDict'
import useUserStore from '@/store/modules/user'
import useOpenPdfinBrowser from '@/commonMethods/useOpenPdfinBrowser'
import { getMeasureDataList } from '@/api/business/taskMeasure/measureData'
import { getChangeCertApplyList } from '@/api/business/certManage/changeApply'
import { getCertDetail } from '@/api/business/certManage/cert'
const props = defineProps({
  pageType: { // 页面类型 add新建 edit编辑 detail详情
    type: String,
    requre: true,
    default: 'detail',
  },
  approvalStatusName: { // 审批状态名称
    type: String,
    requre: true,
  },
  processId: { // 流程实例id
    type: String,
  },
})
const emits = defineEmits(['addSuccess', 'submitSuccess'])
const $router = useRouter()
const user = useUserStore() // 用户信息
const form = ref({
  certificateNo: '', // 证书编号
  certificateName: '', // 证书名称
  orderNo: '', // 任务单编号
  customerName: '', // 委托方
  deptName: '', // 使用部门
  sampleName: '', // 智能模型名称
  model: '', // 规格型号
  manufactureNo: '', // 出厂编号
  dataNo: '', // 检定数据编号
  createUserName: '', // 检定员
  conclusion: '', // 检定结论
  limitInstruction: '', // 限用说明
  traceDate: '', // 测试、校准检定日期
  printStatusName: '', // 打印状态
  printFileName: '', // 证书报告
  changeApplyNo: [] as any, // 证书/报告补充或更换申请单编号
  certSupplementNo: [] as any, // 对编号为XXX的证书/报告的补充件编号
})

const infoId = ref('') // id
// -----------------------------------------路由参数----------------------------------------
// 从路由中获取页面类型参数
const $route = useRoute()
if ($route.params && $route.params.id) {
  if ($route.params.id) {
    infoId.value = $route.params.id as string
  }
}
// ---------------------------------------------------------------------------------
// 点击证书报告
const clickPrintFile = () => {
  useOpenPdfinBrowser(form.value.printFileName)
}

// 请求证书申请更换申请单编号
const fetchCertChangeData = () => {
  if (!form.value.certificateNo) {
    return false
  }
  // 查询条件
  const listQuery = {
    approvalStatus: '0', //	审批状态类型code
    changeApplyNo: '', //	申请单编号
    changeReportName: '', //	更换证书名称
    changeReportNo: form.value.certificateNo, //	更换证书编号
    changeType: '', //	变更类型(字典code)
    createTimeEnd: '', // 创建结束时间
    createTimeStart: '', // 创建开始时间
    createUserName: '', // 创建用户名字
    formId: SCHEDULE.CERTIFICATE_CHANGE_APPROVAL, // formId
    limit: 999999,
    offset: 1,
  }
  getChangeCertApplyList(listQuery).then((response) => {
    if (response && response.data && response.data.rows && response.data.rows.length) {
      form.value.changeApplyNo = response.data.rows
    }
  })
}

// 点击证书更换补充申请单
const clickChangeApplyFileNo = (row: any) => {
  $router.push({
    path: `/certManage/changeCertApplyDoc/detail/${row.id}`,
    query: {
      approvalStatusName: '全部', // 审批状态名称
      processId: row.processId, // 流程实例id
      taskId: row.taskId, // 任务id
      row: { ...row } as any,
    },
  })
}

// 点击对编号为XXX的证书/报告的补充件编号:
const clickSupplementFileNo = (row: any) => {
  //
}

// 点击检定数据编号跳转检定数据管理详情页
const clickDataNo = () => {
  if (!form.value.dataNo) {
    return false
  }
  const params = {
    certificateFile: '', // 检定证书(minio存储文件名)
    conclusion: '', //	结论
    createUserName: '', //	检定员
    customerName: '', //	委托单位
    dataNo: form.value.dataNo, //	检定数据编号
    helpInstruction: '', //	辅助字段
    manufactureNo: '', //	出厂编号
    measureAddress: '', //	测试、校准或检定地点
    measureCategory: '', //	检校类别
    measureValidDateEnd: '', //	检定有效期结束
    measureValidDateStart: '', //	检定有效期开始
    meterIdentify: '', //	计量标识
    model: '', //	规格型号
    restrictionInstruction: '', //	限用说明
    sampleName: '', //	受检智能模型名称
    traceDateStart: '', //	测试、校准或检定日期开始
    traceDateEnd: '', //	测试、校准或检定日期结束
    deptId: '', // 使用部门
    offset: 1,
    limit: 20,
  }
  const loading = ElLoading.service({
    lock: true,
    text: '加载中...',
    background: 'rgba(255, 255, 255, 0.6)',
  })
  getMeasureDataList(params).then((res) => {
    if (res && res.data && res.data.rows && res.data.rows.length) {
      loading.close()
      $router.push({
        path: `/taskMeasure/measureData/detail/${res.data.rows[0].id}`,
        query: {
          ...res.data.rows[0],
        },
      })
    }
    else {
      loading.close()
      ElMessage.warning('跳转失败,请联系管理员')
    }
  }).catch(() => loading.close())
}

// 获取证书详情
const fetchCertDetail = () => {
  if (!infoId.value) { return }
  getCertDetail({ id: infoId.value }).then((res) => {
    form.value = res.data
  })
}
// ---------------------------------------------钩子----------------------------------------------
onMounted(async () => {
  // form.value.certificateNo = $route.query.certificateNo as string // 证书编号
  // form.value.certificateName = $route.query.certificateName as string // 证书名称
  // form.value.orderNo = $route.query.orderNo as string // 任务单编号
  // form.value.customerName = $route.query.customerName as string // 委托方
  // form.value.deptName = $route.query.deptName as string // 使用部门
  // form.value.sampleName = $route.query.sampleName as string // 智能模型名称
  // form.value.model = $route.query.model as string // 规格型号
  // form.value.manufactureNo = $route.query.manufactureNo as string // 出厂编号
  // form.value.dataNo = $route.query.dataNo as string // 检定数据编号
  // form.value.createUserName = $route.query.createUserName as string // 检定员
  // form.value.conclusion = $route.query.conclusion as string // 检定结论
  // form.value.limitInstruction = $route.query.limitInstruction as string // 限用说明
  // form.value.traceDate = $route.query.traceDate as string // 测试、校准检定日期
  // form.value.printStatusName = $route.query.printStatusName as string // 打印状态
  // form.value.printFileName = $route.query.printFileName as string // 证书报告
  fetchCertDetail()
  fetchCertChangeData() // 证书/报告补充或更换申请单编号
})
</script>

<template>
  <detail-block title="">
    <el-form
      :model="form"
      :label-width="120"
      label-position="right"
    >
      <el-row :gutter="24">
        <el-col :span="6">
          <el-form-item label="证书编号:">
            <el-input
              v-model="form.certificateNo"
              :class="{ 'detail-input': pageType === 'detail' }"
              disabled
            />
          </el-form-item>
        </el-col>
        <el-col :span="6">
          <el-form-item label="证书名称:">
            <el-input
              v-model="form.certificateName"
              :class="{ 'detail-input': pageType === 'detail' }"
              disabled
            />
          </el-form-item>
        </el-col>
        <el-col :span="6">
          <el-form-item label="任务单编号:">
            <el-input
              v-model="form.orderNo"
              :class="{ 'detail-input': pageType === 'detail' }"
              disabled
            />
          </el-form-item>
        </el-col>
        <el-col :span="6">
          <el-form-item label="委托方:">
            <el-input
              v-model="form.customerName"
              :class="{ 'detail-input': pageType === 'detail' }"
              disabled
            />
          </el-form-item>
        </el-col>
        <el-col :span="6">
          <el-form-item label="使用部门:">
            <el-input
              v-model="form.deptName"
              :class="{ 'detail-input': pageType === 'detail' }"
              disabled
            />
          </el-form-item>
        </el-col>
        <el-col :span="6">
          <el-form-item label="智能模型名称:">
            <el-input
              v-model="form.sampleName"
              :class="{ 'detail-input': pageType === 'detail' }"
              disabled
            />
          </el-form-item>
        </el-col>
        <el-col :span="6">
          <el-form-item label="规格型号:">
            <el-input
              v-model="form.model"
              :class="{ 'detail-input': pageType === 'detail' }"
              disabled
            />
          </el-form-item>
        </el-col>
        <el-col :span="6">
          <el-form-item label="出厂编号:">
            <el-input
              v-model="form.manufactureNo"
              :class="{ 'detail-input': pageType === 'detail' }"
              disabled
            />
          </el-form-item>
        </el-col>
        <el-col :span="6">
          <el-form-item label="检定数据编号:">
            <span class="link" @click="clickDataNo">{{ form.dataNo }}</span>
          </el-form-item>
        </el-col>
        <el-col :span="6">
          <el-form-item label="检定员:">
            <el-input
              v-model="form.createUserName"
              :class="{ 'detail-input': pageType === 'detail' }"
              disabled
            />
          </el-form-item>
        </el-col>
        <el-col :span="6">
          <el-form-item label="检定结论:">
            <el-input
              v-model="form.conclusion"
              :class="{ 'detail-input': pageType === 'detail' }"
              disabled
            />
          </el-form-item>
        </el-col>
        <el-col :span="6">
          <el-form-item label="限用说明:">
            <el-input
              v-model="form.limitInstruction"
              :class="{ 'detail-input': pageType === 'detail' }"
              disabled
            />
          </el-form-item>
        </el-col>
        <el-col :span="6">
          <el-form-item label="测试、校准检定日期:">
            <el-input
              v-model="form.traceDate"
              :class="{ 'detail-input': pageType === 'detail' }"
              disabled
            />
          </el-form-item>
        </el-col>
        <el-col :span="6">
          <el-form-item label="打印状态:">
            <el-input
              v-model="form.printStatusName"
              :class="{ 'detail-input': pageType === 'detail' }"
              disabled
            />
          </el-form-item>
        </el-col>
      </el-row>
      <el-row :gutter="24" class="marg">
        <el-col :span="24">
          <el-form-item label="证书报告:" label-width="260">
            <span class="link" @click="clickPrintFile">{{ form.printFileName }}</span>
          </el-form-item>
        </el-col>
      </el-row>

      <el-row :gutter="24" class="marg">
        <el-col :span="24">
          <el-form-item label="证书/报告补充或更换申请单编号:" label-width="260">
            <span v-if="!form.changeApplyNo.length"> / </span>
            <div v-if="Array.isArray(form.changeApplyNo) && form.changeApplyNo.length">
              <span v-for="(item, index) in form.changeApplyNo" :key="index" class="link" @click="clickChangeApplyFileNo(item)">
                <span>{{ item.changeApplyNo }}</span>
                <span v-if="index !== form.changeApplyNo.length - 1">;</span>
              </span>
            </div>
          </el-form-item>
        </el-col>
      </el-row>
      <el-row :gutter="24" class="marg">
        <el-col :span="24">
          <el-form-item label="对编号为XXX的证书/报告的补充件编号:" label-width="260">
            <span v-if="!form.certSupplementNo.length"> / </span>
            <div v-if="Array.isArray(form.certSupplementNo) && form.certSupplementNo.length">
              <span v-for="(item, index) in form.certSupplementNo" :key="index" class="link" @click="clickSupplementFileNo(item)">
                <span>{{ item.changeApplyNo }}</span>
                <span v-if="index !== form.certSupplementNo.length - 1">;</span>
              </span>
            </div>
          </el-form-item>
        </el-col>
      </el-row>
    </el-form>
  </detail-block>
</template>

<style lang="scss" scoped>
.link {
  color: #5da0ff;
  text-decoration: underline;
  cursor: pointer;
  margin-right: 8px;
}
</style>