form.vue 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. <template>
  2. <xn-form-container
  3. :title="formData.recordId ? '编辑敏感词过滤记录' : '增加敏感词过滤记录'"
  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="过滤词语:" name="sensitivityWord">
  11. <a-input v-model:value="formData.sensitivityWord" placeholder="请输入过滤词语" allow-clear />
  12. </a-form-item>
  13. <a-form-item label="帖子id:" name="postId">
  14. <a-input v-model:value="formData.postId" placeholder="请输入帖子id" allow-clear />
  15. </a-form-item>
  16. <a-form-item label="过滤类型 0发帖 1回复:" name="recordType">
  17. <a-input v-model:value="formData.recordType" placeholder="请输入过滤类型 0发帖 1回复" allow-clear />
  18. </a-form-item>
  19. <a-form-item label="用户id:" name="userId">
  20. <a-input v-model:value="formData.userId" placeholder="请输入用户id" allow-clear />
  21. </a-form-item>
  22. </a-form>
  23. <template #footer>
  24. <a-button style="margin-right: 8px" @click="onClose">关闭</a-button>
  25. <a-button type="primary" @click="onSubmit" :loading="submitLoading">保存</a-button>
  26. </template>
  27. </xn-form-container>
  28. </template>
  29. <script setup name="forumSensitivityRecordForm">
  30. import { cloneDeep } from 'lodash-es'
  31. import { required } from '@/utils/formRules'
  32. import forumSensitivityRecordApi from '@/api/forum/forumSensitivityRecordApi'
  33. // 抽屉状态
  34. const visible = ref(false)
  35. const emit = defineEmits({ successful: null })
  36. const formRef = ref()
  37. // 表单数据
  38. const formData = ref({})
  39. const submitLoading = ref(false)
  40. // 打开抽屉
  41. const onOpen = (record) => {
  42. visible.value = true
  43. if (record) {
  44. let recordData = cloneDeep(record)
  45. formData.value = Object.assign({}, recordData)
  46. }
  47. }
  48. // 关闭抽屉
  49. const onClose = () => {
  50. formRef.value.resetFields()
  51. formData.value = {}
  52. visible.value = false
  53. }
  54. // 默认要校验的
  55. const formRules = {
  56. }
  57. // 验证并提交数据
  58. const onSubmit = () => {
  59. formRef.value.validate().then(() => {
  60. submitLoading.value = true
  61. const formDataParam = cloneDeep(formData.value)
  62. forumSensitivityRecordApi
  63. .forumSensitivityRecordSubmitForm(formDataParam, formDataParam.recordId)
  64. .then(() => {
  65. onClose()
  66. emit('successful')
  67. })
  68. .finally(() => {
  69. submitLoading.value = false
  70. })
  71. })
  72. }
  73. // 抛出函数
  74. defineExpose({
  75. onOpen
  76. })
  77. </script>