form.vue 3.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. <template>
  2. <xn-form-container
  3. :title="formData.reportId ? '编辑论坛-帖子举报信息表' : '增加论坛-帖子举报信息表'"
  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="帖子主键id:" name="postId">
  11. <a-input v-model:value="formData.postId" placeholder="请输入帖子主键id" allow-clear />
  12. </a-form-item>
  13. <a-form-item label="举报人用户id:" name="userId">
  14. <a-input v-model:value="formData.userId" placeholder="请输入举报人用户id" allow-clear />
  15. </a-form-item>
  16. <a-form-item label="举报原因类型 0垃圾广告 1色情内容 2人身攻击 3政治敏感 4其他:" name="reportReasonType">
  17. <a-input v-model:value="formData.reportReasonType" placeholder="请输入举报原因类型 0垃圾广告 1色情内容 2人身攻击 3政治敏感 4其他" allow-clear />
  18. </a-form-item>
  19. <a-form-item label="举报信息描述:" name="reportDetail">
  20. <a-input v-model:value="formData.reportDetail" placeholder="请输入举报信息描述" allow-clear />
  21. </a-form-item>
  22. <a-form-item label="证据图片:" name="evidenceScreenshot">
  23. <a-input v-model:value="formData.evidenceScreenshot" placeholder="请输入证据图片" allow-clear />
  24. </a-form-item>
  25. <a-form-item label="举报处理状态 0待处理 1已关闭帖子 2已驳回:" name="reportStatus">
  26. <a-input v-model:value="formData.reportStatus" placeholder="请输入举报处理状态 0待处理 1已关闭帖子 2已驳回" allow-clear />
  27. </a-form-item>
  28. </a-form>
  29. <template #footer>
  30. <a-button style="margin-right: 8px" @click="onClose">关闭</a-button>
  31. <a-button type="primary" @click="onSubmit" :loading="submitLoading">保存</a-button>
  32. </template>
  33. </xn-form-container>
  34. </template>
  35. <script setup name="forumReportInfoForm">
  36. import { cloneDeep } from 'lodash-es'
  37. import { required } from '@/utils/formRules'
  38. import forumReportInfoApi from '@/api/forum/forumReportInfoApi'
  39. // 抽屉状态
  40. const visible = ref(false)
  41. const emit = defineEmits({ successful: null })
  42. const formRef = ref()
  43. // 表单数据
  44. const formData = ref({})
  45. const submitLoading = ref(false)
  46. // 打开抽屉
  47. const onOpen = (record) => {
  48. visible.value = true
  49. if (record) {
  50. let recordData = cloneDeep(record)
  51. formData.value = Object.assign({}, recordData)
  52. }
  53. }
  54. // 关闭抽屉
  55. const onClose = () => {
  56. formRef.value.resetFields()
  57. formData.value = {}
  58. visible.value = false
  59. }
  60. // 默认要校验的
  61. const formRules = {
  62. }
  63. // 验证并提交数据
  64. const onSubmit = () => {
  65. formRef.value.validate().then(() => {
  66. submitLoading.value = true
  67. const formDataParam = cloneDeep(formData.value)
  68. forumReportInfoApi
  69. .forumReportInfoSubmitForm(formDataParam, formDataParam.reportId)
  70. .then(() => {
  71. onClose()
  72. emit('successful')
  73. })
  74. .finally(() => {
  75. submitLoading.value = false
  76. })
  77. })
  78. }
  79. // 抛出函数
  80. defineExpose({
  81. onOpen
  82. })
  83. </script>