form.vue 3.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. <template>
  2. <xn-form-container
  3. :title="formData.id ? '编辑t_question' : '增加t_question'"
  4. :width="700"
  5. :visible="visible"
  6. :destroy-on-close="true"
  7. @close="onClose"
  8. >
  9. <a-form ref="formRef" :model="formData" :rules="formRules" layout="vertical">
  10. <a-form-item label="QUESTION_TYPE:" name="questionType">
  11. <a-input v-model:value="formData.questionType" placeholder="请输入QUESTION_TYPE" allow-clear />
  12. </a-form-item>
  13. <a-form-item label="SUBJECT_ID:" name="subjectId">
  14. <a-input v-model:value="formData.subjectId" placeholder="请输入SUBJECT_ID" allow-clear />
  15. </a-form-item>
  16. <a-form-item label="SCORE:" name="score">
  17. <a-input v-model:value="formData.score" placeholder="请输入SCORE" allow-clear />
  18. </a-form-item>
  19. <a-form-item label="GRADE_LEVEL:" name="gradeLevel">
  20. <a-input v-model:value="formData.gradeLevel" placeholder="请输入GRADE_LEVEL" allow-clear />
  21. </a-form-item>
  22. <a-form-item label="DIFFICULT:" name="difficult">
  23. <a-input v-model:value="formData.difficult" placeholder="请输入DIFFICULT" allow-clear />
  24. </a-form-item>
  25. <a-form-item label="CORRECT:" name="correct">
  26. <a-input v-model:value="formData.correct" placeholder="请输入CORRECT" allow-clear />
  27. </a-form-item>
  28. <a-form-item label="INFO_TEXT_CONTENT_ID:" name="infoTextContentId">
  29. <a-input v-model:value="formData.infoTextContentId" placeholder="请输入INFO_TEXT_CONTENT_ID" allow-clear />
  30. </a-form-item>
  31. <a-form-item label="STATUS:" name="status">
  32. <a-input v-model:value="formData.status" placeholder="请输入STATUS" allow-clear />
  33. </a-form-item>
  34. <a-form-item label="DELETED:" name="deleted">
  35. <a-input v-model:value="formData.deleted" placeholder="请输入DELETED" allow-clear />
  36. </a-form-item>
  37. </a-form>
  38. <template #footer>
  39. <a-button style="margin-right: 8px" @click="onClose">关闭</a-button>
  40. <a-button type="primary" @click="onSubmit" :loading="submitLoading">保存</a-button>
  41. </template>
  42. </xn-form-container>
  43. </template>
  44. <script setup name="tQuestionForm">
  45. import { cloneDeep } from 'lodash-es'
  46. import { required } from '@/utils/formRules'
  47. import tQuestionApi from '@/api/question/tQuestionApi'
  48. // 抽屉状态
  49. const visible = ref(false)
  50. const emit = defineEmits({ successful: null })
  51. const formRef = ref()
  52. // 表单数据
  53. const formData = ref({})
  54. const submitLoading = ref(false)
  55. // 打开抽屉
  56. const onOpen = (record) => {
  57. visible.value = true
  58. if (record) {
  59. let recordData = cloneDeep(record)
  60. formData.value = Object.assign({}, recordData)
  61. }
  62. }
  63. // 关闭抽屉
  64. const onClose = () => {
  65. formRef.value.resetFields()
  66. formData.value = {}
  67. visible.value = false
  68. }
  69. // 默认要校验的
  70. const formRules = {
  71. }
  72. // 验证并提交数据
  73. const onSubmit = () => {
  74. formRef.value.validate().then(() => {
  75. submitLoading.value = true
  76. const formDataParam = cloneDeep(formData.value)
  77. tQuestionApi
  78. .tQuestionSubmitForm(formDataParam, formDataParam.id)
  79. .then(() => {
  80. onClose()
  81. emit('successful')
  82. })
  83. .finally(() => {
  84. submitLoading.value = false
  85. })
  86. })
  87. }
  88. // 抛出函数
  89. defineExpose({
  90. onOpen
  91. })
  92. </script>