JEditorDemo.vue 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. <template>
  2. <div class="p-4">
  3. <div class="p-4 bg-white">
  4. <a-button-group class="j-table-operator">
  5. <a-button type="primary" @click="setDis(0)">启用</a-button>
  6. <a-button type="primary" @click="setDis(1)">禁用</a-button>
  7. <a-button type="primary" @click="getValues()">校验表单并获取值</a-button>
  8. <a-button type="primary" @click="setValues()">设置值</a-button>
  9. </a-button-group>
  10. <BasicForm @register="register" @submit="handleSubmit" />
  11. </div>
  12. </div>
  13. </template>
  14. <script lang="ts">
  15. export default {
  16. title: '富文本 | Markdown',
  17. name: 'MarkdownDemo',
  18. };
  19. </script>
  20. <script lang="ts" setup>
  21. import { FormSchema, useForm, BasicForm } from '/@/components/Form';
  22. import { useMessage } from '/@/hooks/web/useMessage';
  23. const { createMessage, createSuccessModal } = useMessage();
  24. const schemas: FormSchema[] = [
  25. {
  26. field: 'name',
  27. component: 'Input',
  28. label: '姓名',
  29. required: true,
  30. defaultValue: 'zhangsan',
  31. },
  32. {
  33. field: 'tinymce',
  34. component: 'JEditor',
  35. label: '富文本',
  36. defaultValue: 'defaultValue',
  37. required: true,
  38. },
  39. {
  40. field: 'markdown',
  41. component: 'JMarkdownEditor',
  42. label: 'Markdown',
  43. defaultValue: '# 张三',
  44. required: true,
  45. componentProps: {
  46. height: 300,
  47. },
  48. },
  49. ];
  50. const [register, { setProps, validate, setFieldsValue }] = useForm({
  51. labelWidth: 120,
  52. schemas: schemas,
  53. actionColOptions: {
  54. span: 24,
  55. },
  56. compact: true,
  57. showResetButton: false,
  58. showSubmitButton: false,
  59. showAdvancedButton: false,
  60. disabled: false,
  61. });
  62. function handleSubmit(values) {
  63. console.log(values);
  64. }
  65. function setDis(flag) {
  66. setProps({ disabled: !!flag });
  67. }
  68. async function getValues() {
  69. try {
  70. const values = await validate();
  71. console.log(values);
  72. createSuccessModal({
  73. title: '校验通过',
  74. content: `${JSON.stringify(values)}`,
  75. });
  76. } catch (error) {
  77. createMessage.warning('检验不通过');
  78. }
  79. }
  80. function setValues() {
  81. setFieldsValue({
  82. name: 'LiSi',
  83. markdown: '# 李四',
  84. tinymce: '<p><strong><span style="font-size: 18pt;">张<span style="color: #e03e2d;">三</span>丰</span></strong></p>',
  85. });
  86. }
  87. </script>
  88. <style scoped></style>