otherReportOrder.vue 7.95 KB
<template>
  <div>
    <el-dialog :title="props.title" v-model="state.openDialog" width="600px" append-to-body destroy-on-close @close="handleClose(false)">

      <el-tag v-if="!state.isHaveHw" class="mb20" type="danger">暂时不支持下载海外报告,请联系客服人员!</el-tag>

      <el-form ref="orderForm" :model="state.formModel" :rules="formRules" label-position="left" label-width="120px">
        <el-form-item label="企业名称" prop="enterpriseName">
          {{state.formModel.enterpriseName}}
        </el-form-item>
        <el-form-item label="是否翻译" prop="translateType">
          <el-radio-group v-model="state.formModel.translateType">
            <el-radio v-for="(item, index) in state.translateTypeList" :key="index" :label="item.dictValue">{{`${item.dictLabel}`}}</el-radio>
          </el-radio-group>
        </el-form-item>
        <el-form-item label="交付时效" prop="entrustType" v-if="state.formModel.createImmediate !== 'Y'">
          <el-radio-group v-model="state.formModel.entrustType">
            <el-radio v-for="(item, index) in state.jfDayList" :key="index" :label="item.clientType">{{`${getClientTypeStr(item.clientType)}(${item.deliveryDays}工作日)`}}</el-radio>
          </el-radio-group>
        </el-form-item>
        <el-form-item label="下单备注" prop="remark">
          <el-input type="textarea" :rows="4" v-model="state.formModel.remark"></el-input>
        </el-form-item>
      </el-form>

      <div>您将购买当前企业的信用报告,报告制作完成后将通过邮件通知您,感谢您的使用!</div>

      <template #footer v-if="props.isShowFooter">
        <span class="dialog-footer" v-if="state.isHaveHw">
          <el-button @click="handleClose(false)">取消</el-button>
          <el-button type="primary" :loading="state.isSubmit" @click="handleSubmit">确定</el-button>
        </span>
      </template>

    </el-dialog>

    <order-success open-name="orderSuccessOpen" title="报告下单" :open="state.orderSuccessOpen"></order-success>
  </div>
</template>

<script setup lang="ts">
import { orderInfo } from '../../store'
import { storeToRefs } from 'pinia';
let orderInfoAct = orderInfo()
let { getReportOrder } = storeToRefs(orderInfoAct)

import OrderSuccess from "./orderSuccess.vue";
import * as api from '../../interface/api.ts'

let orderForm = ref<FormInstance>()
const emit = defineEmits(["handleClose"]);

let props = defineProps({
  title: {
    default: "",
    type: String
  },
  open: {
    default: false,
    type: Boolean
  },
  openName: {
    type: String,
    required: true,
    default: ""
  },
  isShowFooter: {
    default: true,
    type: Boolean
  },
  entryType: {
    type: Number,
    default: 0, // 1从搜索企业下单 0从信用报告下单
  }
})

let state = reactive({
  openDialog: false,
  formModel: {
    enterpriseName: "",
    entrustType: "0",
    win: "",
    translateType: "EN",
    country: "",
    createImmediate: "",
    reportType: "-10",
    remark: "",
  },
  jfDayList: [],
  translateTypeList: [] as any,
  isSubmit: false,
  orderSuccessOpen: false,
  contractReportBusinessTypeList: [],
  shouldFirst: true,
  isHaveHw: false,
  reportTypeList: []
})

let formRules = reactive<FormRules>({
  enterpriseName: [
    { required: true, message: "企业名称不能为空", trigger: ["blur","change"] }
  ],
  entrustType: [
    { required: true, message: "交付时效不能为空", trigger: ["blur","change"] }
  ],
  translateType: [
    { required: true, message: "是否翻译不能为空", trigger: ["blur","change"] }
  ],
})

let handleClose = (isRefresh: boolean) => {
  state.shouldFirst = true
  emit('handleClose', props.openName, false, isRefresh)
}

let handleSubmit = () => {
  orderForm.value.validate((valid: boolean) => {
    if (valid) {
      state.isSubmit = true
      state.reportTypeList.forEach(item=> {
        if (item.typeId === parseInt(state.formModel.reportType)) {
          if (state.formModel.createImmediate === "Y") {
            state.formModel.templateParamId = item.templateConfigurationParametersList[0].id
          } else {
            item.templateConfigurationParametersList.forEach((item1: any)=> {
              if (item1.clientType === state.formModel.entrustType) {
                state.formModel.templateParamId = item1.id
              }
            })
          }
        }
      })
      state.formModel.enterpriseList = [{
        enterpriseName: state.formModel.enterpriseName,
        enterpriseCode: state.formModel.win,
      }]
      api.submitData(state.formModel, "/web/worldBox/commitOrder").then((res: any)=> {
        state.orderSuccessOpen = true
        handleClose(false)
        state.isSubmit = false
      }).finally(()=> {
        state.isSubmit = false
      })
    }
  })
}

let reset = () => {
  state.formModel = {
    enterpriseName: "",
    entrustType: "0",
    win: "",
    translateType: "EN",
    country: "",
    createImmediate: "",
    reportType: "-10",
    remark: "",
  }
  state.orderSuccessOpen = false
  state.shouldFirst = true
  state.isHaveHw = false
}

let getReportAndPriceType = () => {
  state.reportTypeList = []
  api.getInfoList({}, "/web/bReportTable/clientType").then((res: any)=> {
    // state.jfDayList = res.data
    // state.contractReportBusinessTypeList = res.data.contractReportBusinessTypeList
    state.reportTypeList = res.data
  })
}

let getClientTypeStr = (type: string) => {
  let str = ""
  switch (type) {
    case "0":
      str = "普通"
      break;
    case "1":
      str = "加急"
      break;
    case "2":
      str = "特急"
      break;
    case "4":
      str = "其他"
      break;
  }
  return str
}

let getReportTranslationTypeStr = (type: string) => {
  let str = ""
  switch (type) {
    case "ON":
      str = "中译日"
      break;
    case "CN":
      str = "英译中"
      break;
    case "EN":
      str = "中译英"
      break;
  }
  return str
}

watchEffect(()=> {
  state.openDialog = props.open
  if (state.openDialog) {
    reset()
    getReportAndPriceType()
    state.formModel.enterpriseName = getReportOrder.value.projectInfo.name
    state.formModel.win = getReportOrder.value.projectInfo.win
    state.formModel.country = getReportOrder.value.projectInfo.country

    if (props.entryType === 1) {
      // 从搜索企业进入
    } else {
      // 从企业报告列表进去
    }
  }
})

watchEffect(()=> {
  if (state.openDialog && state.formModel.reportType && state.shouldFirst) {
    state.formModel.createImmediate = "N"
    state.jfDayList = []
    state.formModel.translateType = "NO"
    state.reportTypeList.forEach(item=> {
      if (item.typeId == parseInt(state.formModel.reportType)) {
        item.templateConfigurationParametersList.forEach((item1: any)=> {
          if (parseInt(item1.clientType) === 3) {
            state.formModel.createImmediate = "Y"
          }
        })
        if (state.formModel.createImmediate === "N") {
          state.jfDayList = item.templateConfigurationParametersList.filter((item1: any)=> {
            return item1.clientType !== null
          })
          if (state.jfDayList.length > 0) {
            state.formModel.entrustType = state.jfDayList[0].clientType
          }
        }

        state.translateTypeList = []
        if (item.typeId === parseInt(state.formModel.reportType)) {
          item.templateConfigurationParametersList.forEach((item1: any)=> {
            if (item1.clientType === null) {
              state.translateTypeList.push({
                dictValue: "NO",
                dictLabel: "不翻译"
              })
              if (item1.reportTranslationType !== "NO") {
                state.translateTypeList.push({
                  dictValue: item1.reportTranslationType,
                  dictLabel: getReportTranslationTypeStr(item1.reportTranslationType)
                })
              }
            }
          })
        }
        state.shouldFirst = false
        state.isHaveHw = true
      }
    })
    console.log(state.formModel.createImmediate)
  }
})

</script>

<style scoped>

</style>