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

    <el-form ref="orderForm" :model="state.formModel" :rules="formRules" label-position="left" label-width="80px">
      <el-form-item label="企业名称">
        {{props.projectInfo.enterpriseName}}
      </el-form-item>
      <el-form-item label="报告类型">
        {{props.projectInfo.reportTypeStr}}
      </el-form-item>
      <el-form-item label="委托类型">
        {{props.projectInfo.entrustTypeStr}}
      </el-form-item>
      <el-form-item label="下单备注" prop="remark">
        {{props.projectInfo.remark}}
      </el-form-item>
      <el-form-item label="审批意见" prop="auditStatus">
        <el-radio-group v-model="state.formModel.auditStatus">
          <el-radio v-for="(item, index) in state.checkList" :key="index" :label="item.dictValue">{{`${item.dictLabel}`}}</el-radio>
        </el-radio-group>
      </el-form-item>
      <el-form-item label="拒绝原因" prop="opinion" v-if="state.formModel.auditStatus === '1'">
        <el-input type="textarea" :rows="4" v-model="state.formModel.opinion"></el-input>
      </el-form-item>
    </el-form>

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

<script setup lang="ts">
import * as api from "../../interface/api.ts";

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

let props = defineProps({
  title: {
    default: "",
    type: String
  },
  open: {
    default: false,
    type: Boolean
  },
  openName: {
    type: String,
    required: true,
    default: ""
  },
  projectInfo: {
    type: Object,
  }
})

let state = reactive({
  openDialog: false,
  formModel: {},
  checkList: [{dictLabel: '审核通过', dictValue: '2'}, {dictLabel: '审核拒绝', dictValue: '1'}],
  isSubmit: false,
})

let formRules = reactive<FormRules>({
  auditStatus: [
    { required: true, message: "审批意见不能为空", trigger: ["blur","change"] }
  ],
  opinion: [
    { required: true, message: "拒绝原因不能为空", trigger: ["blur","change"] }
  ],
})

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

let handleSubmit = () => {
  orderForm.value.validate((valid: boolean) => {
    if (valid) {
      state.isSubmit = true
      api.submitData(state.formModel, "/web/report/audit").then((res: any)=> {
        ElMessage.success("操作成功")
        handleClose(true)
        state.isSubmit = false
      }).finally(()=> {
        state.isSubmit = false
      })
    }
  })
}

watchEffect(()=> {
  state.openDialog = props.open
  state.formModel.id = props.projectInfo.id
})

</script>

<style scoped>

</style>