Newer
Older
xc-business-system / src / views / business / manager / sendReceive / dialog / remindCreateEIRDialog.vue
dutingting on 12 Apr 2024 4 KB 80-84新需求部分开发
<!-- 提醒是否创建交接单 -->
<script lang="ts" setup name="RemindCreateEIRDialog">
import type { FormInstance, FormRules } from 'element-plus'
import { ElMessage, ElMessageBox } from 'element-plus'
import { reactive, ref } from 'vue'
import batchCreateEIRDialog from './batchCreateEIRDialog.vue'

// 对外暴露的方法: 退回成功
const emits = defineEmits(['confirm', 'refresh'])
// 弹窗显示状态
const dialogVisible = ref(false)
// 提示信息
const title = ref('')
const type = ref('') // 设备交接单类型
const list = ref([]) as any// 设备信息
const $router = useRouter()
const batchCreateEIRDialogRef = ref() // 批量创建交接单组件
/**
 * 初始化审批弹窗
 * @param title 提示信息
 * @param list 设备信息
 * @param type 要创建的交接单类型  '收入'-设备收入交接单  '归还':设备归还交接单
 */
function initDialog(titleParam: string, equipmentList: any, typeParam: string) {
  title.value = titleParam
  type.value = typeParam
  list.value = equipmentList
  dialogVisible.value = true
}
// 点击确定
function confirm() {
  // 需判断批量的设备是否来自于一个任务单,如果设备来源于一个任务单跳转至设备交接单新建模块
  // 如果设备来源于多个任务单,生成多个交接单
  if (list.value.length === 1) { // 只有一个设备直接跳转新建交接单
    if ((type.value === '收入' && list.value[0].interchangeId) || (type.value === '归还' && list.value[0].backInterchangeId)) {
      ElMessageBox.alert(`${list.value[0].sampleName}已有${type.value}交接单,不可重复创建!`, '提示', {
        confirmButtonText: '确定',
      })
    }
    else {
      $router.push({
        path: '/interchangeReceipt/add',
        query: {
          orderId: list.value[0].orderId,
          interchangeType: type.value === '收入' ? '1' : '2',
          equipmentList: JSON.stringify(list.value),
          from: 'sendReceive',
        },
      })
    }
  }
  else { // 多个设备判断是否同属于一个任务单
    const result = list.value.every((item: { orderId: string }) => item.orderId === list.value[0].orderId)
    if (result) { // 所有的设备是否同属于同一个任务单
      if ((type.value === '收入' && list.value.every((item: { interchangeId: string }) => item.interchangeId !== '')) || (type.value === '归还' && list.value.every((item: { backInterchangeId: string }) => item.backInterchangeId !== ''))) {
        ElMessageBox.alert(`所有设备均已有${type.value}交接单,不可重复创建!`, '提示', {
          confirmButtonText: '确定',
        })
      }
      else {
        $router.push({
          path: '/interchangeReceipt/add',
          query: {
            orderId: list.value[0].orderId,
            interchangeType: type.value === '收入' ? '1' : '2',
            equipmentList: JSON.stringify(list.value),
            from: 'sendReceive',
          },
        })
      }
    }
    else { // 所有的设备不同任务单
      batchCreateEIRDialogRef.value.initDialog(type.value, list.value)
    }
  }
  handleClose()
}
// 点击取消
function handleClose() {
  dialogVisible.value = false
  emits('refresh') // 刷新列表
}

// ----------------------- 以下是暴露的方法内容 ----------------------------
defineExpose({ initDialog })
</script>

<template>
  <el-dialog
    v-model="dialogVisible"
    title="确认操作"
    width="440"
    :before-close="handleClose"
  >
    <div style="display: flex; justify-content: center;font-size: 16px;">
      <div>设备{{ title }}成功!</div>
      <div>是否直接创建设备{{ title.length === 4 ? title.slice(2) : title }}交接单?</div>
    </div>
    <template #footer>
      <el-button type="primary" @click="confirm">
        确 定
      </el-button>
      <el-button @click="handleClose">
        取 消
      </el-button>
    </template>
  </el-dialog>

  <!-- 批量创建交接单组件 -->
  <batch-create-e-i-r-dialog ref="batchCreateEIRDialogRef" @cancleCreate="handleClose" />
</template>

<style lang="scss" scoped>
// 样式
</style>