Newer
Older
xc-business-system / src / views / resource / customer / reviewNotice / approvedDetail.vue
<!-- 复检通知书详情 -->
<script name="NoticeDetailApproved" lang="ts" setup>
import { ElMessage } from 'element-plus'
import type { ICustomerNoticeInfo } from './customer-notice'
import { exportFile, sendTo } from '@/api/resource/reviewNotice'
import FilterCustomerStaff from '@/views/resource/common/filterCustomerStaff.vue'

// 从路由中传过来的参数
const id = ref<string>('')
const noticeInfo = ref<ICustomerNoticeInfo>({
  id: '',
  customerId: '',
  customerName: '',
  deptId: '',
  labCode: '',
  labCodeName: '',
  noticeUserId: '',
  noticeUserName: '',
  noticeNo: '',
  noticeName: '检测结果复查通知单',
  submitDate: '',
  deviceName: '',
  deviceModel: '',
  deviceNo: '',
  returnDate: '',
  noticeDate: '',
  sampleIdList: [],
  sendStatus: '',
  approvalStatus: '',
  approvalStatusName: '',
  appealUserId: '',
  appealUserName: '',
  processId: '',
  taskId: '',
  createUserId: '',
  createUserName: '',
  createTime: '',
})

const refCustomerStaffFilter = ref()

const route = useRoute()
const router = useRouter()

// 逻辑
// 关闭
const resetForm = () => {
  sessionStorage.removeItem('reviewNoticeInfo') // 返回列表时 将缓存中的数据删除
  router.go(-1)
}

// 点击 发送 按钮
const sendToCustomer = () => {
  refCustomerStaffFilter.value.showOrHideFilterDialog(true, noticeInfo.value.customerName)
}

const sysUserSelectedHandler = (row: any) => {
  refCustomerStaffFilter.value.showOrHideFilterDialog(false)

  if (row.id !== '') {
    sendTo({ id: id.value, noticeUserId: row.id }).then((res) => {
      if (res.code === 200) {
        // 提示保存成功
        ElMessage.success(`通知单发送到送检单位 ${row.customerName} 的 ${row.name} 成功`)
      }
      else {
        // 提示失败信息
        ElMessage.error(`通知单发送至送检单位失败:${res.message}`)
      }
    })
  }
  else {
    ElMessage.error('发送给委托方人员不能为空,请重新选择')
  }
}

// 打印Word
const printToWord = () => {
  // exportFile({ id: noticeInfo.value.id, pdf: false })
}

// 打印PDF
const printToPDF = () => {

}

// 打印
const printClickedHandler = () => {
  ElMessage.success('打印成功')
}

const initDialog = (params: any) => {
  // 从路由中获取参数
  id.value = params.id !== undefined ? params.id : ''

  noticeInfo.value = JSON.parse(sessionStorage.getItem('reviewNoticeInfo')!)
}

onMounted(() => {
  initDialog(route.query)
})
</script>

<template>
  <app-container>
    <detail-page title="检测结果复查通知单">
      <template #btns>
        <el-button type="primary" @click="sendToCustomer">
          发送给委托方
        </el-button>
        <el-button type="primary" @click="printToWord">
          导出Word
        </el-button>
        <el-button type="primary" @click="printToPDF">
          导出PDF
        </el-button>
        <el-button type="primary" @click="printClickedHandler">
          打印
        </el-button>

        <el-button type="info" @click="resetForm()">
          关闭
        </el-button>
      </template>
    </detail-page>

    <filter-customer-staff ref="refCustomerStaffFilter" title="请选择委托方和签收人员" @record-selected="sysUserSelectedHandler" />
  </app-container>
</template>