FormDesign.vue 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. <script setup name="FormDesign">
  2. import { onBeforeUnmount, onMounted, ref } from 'vue'
  3. // import { erFormEditor } from 'everright-formeditor'
  4. import { erFormEditor } from '@ER/formEditor'
  5. // import 'Everright-formEditor/dist/style.css'
  6. import useFlowStore from '@/store/modules/flow'
  7. import { storeToRefs } from 'pinia'
  8. const flowStore = useFlowStore()
  9. const { processForm } = storeToRefs(flowStore)
  10. const { VITE_APP_BASE_API } = import.meta.env
  11. const EReditorRef = ref()
  12. const uploadFileApi = ref(`${VITE_APP_BASE_API}/v1/oss/upload`)
  13. const handleListener = obj => {}
  14. // 保存当前的表单数据 processForm.value = '{formStructure: 表单结构值, formData: {}}
  15. const exportJsonEv = () => {
  16. const formStructure = EReditorRef.value.getData()
  17. const finallyForm = { formStructure, formData: {} }
  18. processForm.value = JSON.stringify(finallyForm)
  19. }
  20. const validate = () => {
  21. // 根据后续的业务需求 调整 validate 的功能
  22. exportJsonEv()
  23. return new Promise((resolve, reject) => {
  24. const formStructure = EReditorRef.value.getData()
  25. const fields = formStructure?.fields || []
  26. const bool = fields.length
  27. if (bool) {
  28. resolve(true)
  29. } else {
  30. reject(false)
  31. }
  32. })
  33. }
  34. // onBeforeUnmount(() => {
  35. // const formData = EReditorRef.value.getData()
  36. // if (formData.hasOwnProperty('fields')) {
  37. // // 离开前 做处理
  38. // // const { fields } = formData
  39. // // console.log(fields.length, '=======')
  40. // } else {
  41. // ElMessage.error(`表单设计有误,请重新配置`)
  42. // }
  43. // })
  44. const updateCompInfo = () => {
  45. if (processForm.value) {
  46. // {formStructure: 表单结构值, formData: {}}
  47. const { formStructure } = JSON.parse(processForm.value)
  48. EReditorRef.value.setData(formStructure || {})
  49. }
  50. }
  51. // 初始化的时候,渲染当前组件的值
  52. onMounted(() => {
  53. updateCompInfo()
  54. })
  55. defineExpose({
  56. exportJsonEv,
  57. validate,
  58. updateCompInfo
  59. })
  60. </script>
  61. <template>
  62. <div class="form-design-wrap">
  63. <er-form-editor ref="EReditorRef" :is-show-i18n="false" :fileUploadURI="uploadFileApi" @listener="handleListener" />
  64. </div>
  65. </template>