Newer
Older
xc-business-system / src / views / business / certManage / apply / detail.vue
<!-- 证书/报告补充或更换申请单详情 -->
<script name="BusinessCertManageApplyDetail" lang="ts" setup>
import type { FormInstance, FormRules } from 'element-plus'
import { ElMessage, UploadUserFile } from 'element-plus'
import type { Ref } from 'vue'
import dayjs from 'dayjs'
import type { IForm } from './applt-interface'
import useUserStore from '@/store/modules/user'
const textMap: { [key: string]: string } = {
  edit: '编辑',
  add: '新建',
  detail: '详情',
}// 页面类型字典
const user = useUserStore() // 用户信息
const pageType = ref('add') // 页面类型: add, edit, detail
const infoId = ref('') // id
const $router = useRouter() // 路由实例
const ruleFormRef = ref() // 表单ref
// 表单
const form: Ref<IForm> = ref({
  sqdbh: '', // 申请单编号
  sqdmc: '', // 申请单名称
  createUserId: '', // 创建人id
  createUserName: '', // 创建人名称
  createTime: '', // 创建时间
  ghzsbh: '', // 更换证书编号
  ghzsbgmc: '', // 更换证书/报告名称
  bglx: '', // 变更类型
  bcghyyjyxfx: '', // 补充/更换原因及影响分析
  zhyxfx: '', // 如果召回被测件、被校件或被检件重新送检,召回原因及影响分析
})

const rules = reactive<FormRules>({ // 表单验证规则
  ghzsbh: [{ required: true, message: '更换证书编号不能为空', trigger: ['change', 'blur'] }],
  bglx: [{ required: true, message: '变更类型不能为空', trigger: ['change', 'blur'] }],
})

// -----------------------------------------路由参数----------------------------------------
// 从路由中获取页面类型参数
const $route = useRoute()
if ($route.params && $route.params.type) {
  pageType.value = $route.params.type as string
  if ($route.params.id) {
    infoId.value = $route.params.id as string
  }
}
console.log('页面类型', pageType.value)
// ---------------------------------------------按钮------------------------------------------
// 导出word
const exportWord = () => {
  ElMessage.info('敬请期待')
}
// 导出pdf
const exportPdf = () => {
  ElMessage.info('敬请期待')
}
// 打印
const print = () => {
  ElMessage.info('敬请期待')
}
// 提交
const submitForm = () => {}
// 保存
const saveForm = (ruleFormRef: FormInstance | undefined) => {}
// 关闭
const close = () => {
  $router.back()
}
// --------------------------------------更换证书编号-----------------------------------------
// 点击选择
const selectUpdateCertNo = () => {

}
// -------------------------------获取详情----------------------------------------------------
// 获取详情
const getInfo = () => {

}
// ------------------------------钩子--------------------------------------------------------
onMounted(async () => {
  // await getDict()
  // 非添加页面获取详情
  if (pageType.value === 'edit' || pageType.value === 'detail') {
    getInfo()
  }
  else { // 新建
    form.value.createUserId = user.id// 创建人id
    form.value.createUserName = user.name // 创建人
    form.value.createTime = dayjs().format('YYYY-MM-DD HH-mm:ss')// 创建时间
    form.value.sqdmc = '证书/报告补充或更换申请单' // 申请单名称
  }
})
</script>

<template>
  <app-container>
    <detail-page :title="`证书/报告补充或更换申请单(${textMap[pageType]})`">
      <template #btns>
        <el-button v-if="pageType === 'detail'" v-print="exportWord" type="primary">
          导出word
        </el-button>
        <el-button v-if="pageType === 'detail'" v-print="exportPdf" type="primary">
          导出pdf
        </el-button>
        <el-button v-if="pageType === 'detail'" v-print="print" type="primary">
          打印
        </el-button>
        <el-button v-if="pageType === 'add'" type="primary" @click="submitForm">
          提交
        </el-button>
        <el-button v-if="pageType !== 'detail'" type="primary" @click="saveForm(ruleFormRef)">
          保存
        </el-button>
        <el-button type="info" @click="close">
          关闭
        </el-button>
      </template>
      <el-form
        ref="ruleFormRef"
        :model="form"
        :label-width="134"
        label-position="right"
        :rules="rules"
      >
        <el-row :gutter="24">
          <el-col :span="6">
            <el-form-item label="申请单编号:" prop="sqdbh">
              <el-input
                v-model="form.sqdbh"
                :placeholder="pageType === 'detail' ? '' : '系统自动生成'"
                :class="{ 'detail-input': pageType === 'detail' }"
                disabled
              />
            </el-form-item>
          </el-col>
          <el-col :span="6">
            <el-form-item label="申请单名称:" prop="sqdmc">
              <el-input
                v-model="form.sqdmc"
                :class="{ 'detail-input': 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="创建时间:">
              <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
                class="full-width-input"
              />
            </el-form-item>
          </el-col>
          <el-col :span="6">
            <el-form-item label="更换证书编号" prop="ghzsbh">
              <el-input
                v-model="form.ghzsbh"
                :placeholder="pageType === 'detail' ? '' : '请选择'"
                :class="{ 'detail-input': pageType === 'detail' }"
                disabled
              >
                <template #append>
                  <el-button size="small" @click="selectUpdateCertNo">
                    选择
                  </el-button>
                </template>
              </el-input>
            </el-form-item>
          </el-col>
          <el-col :span="6">
            <el-form-item label="更换证书/报告名称:" prop="ghzsbgmc">
              <el-input
                v-model="form.ghzsbgmc"
                :placeholder="pageType === 'detail' ? ' ' : '更换证书/报告名称'"
                :class="{ 'detail-input': pageType === 'detail' }"
                disabled
              />
            </el-form-item>
          </el-col>
          <el-col :span="6">
            <el-form-item label="变更类型:" prop="bglx">
              <el-radio-group v-model="form.bglx">
                <el-radio label="补充" />
                <el-radio label="更换" />
              </el-radio-group>
            </el-form-item>
          </el-col>
        </el-row>
      </el-form>
    </detail-page>
    <detail-block title="补充/更换原因及影响分析">
      <el-row>
        <el-col :span="24">
          <el-input
            v-model="form.bcghyyjyxfx"
            :rows="4"
            type="textarea"
            :autosize="{ minRows: 4, maxRows: 20 }"
            :placeholder="pageType === 'detail' ? '' : '请输入补充/更换原因及影响分析'"
            :class="{ 'detail-input': pageType === 'detail' }"
            :disabled="pageType === 'detail'"
          />
        </el-col>
      </el-row>
    </detail-block>
    <detail-block title="如果召回被测件、被校件或被检件重新送检,召回原因及影响分析">
      <el-row>
        <el-col :span="24">
          <el-input
            v-model="form.zhyxfx"
            :rows="4"
            type="textarea"
            :autosize="{ minRows: 4, maxRows: 20 }"
            :placeholder="pageType === 'detail' ? '' : '请输入如果召回被测件、被校件或被检件重新送检,召回原因及影响分析'"
            :class="{ 'detail-input': pageType === 'detail' }"
            :disabled="pageType === 'detail'"
          />
        </el-col>
      </el-row>
    </detail-block>
  </app-container>
</template>