@tmagic/form 1.2.0-beta.2 → 1.2.0-beta.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (83) hide show
  1. package/dist/style.css +1 -1
  2. package/dist/tmagic-form.js +3673 -0
  3. package/dist/tmagic-form.js.map +1 -0
  4. package/dist/tmagic-form.umd.cjs +3713 -0
  5. package/dist/tmagic-form.umd.cjs.map +1 -0
  6. package/package.json +10 -9
  7. package/src/Form.vue +124 -159
  8. package/src/FormDialog.vue +108 -126
  9. package/src/containers/Col.vue +24 -38
  10. package/src/containers/Container.vue +143 -171
  11. package/src/containers/Fieldset.vue +15 -8
  12. package/src/containers/GroupList.vue +86 -116
  13. package/src/containers/GroupListItem.vue +91 -125
  14. package/src/containers/Panel.vue +29 -49
  15. package/src/containers/Row.vue +20 -40
  16. package/src/containers/Step.vue +38 -48
  17. package/src/containers/Table.vue +466 -481
  18. package/src/containers/Tabs.vue +94 -118
  19. package/src/fields/Cascader.vue +88 -136
  20. package/src/fields/Checkbox.vue +46 -50
  21. package/src/fields/CheckboxGroup.vue +39 -35
  22. package/src/fields/ColorPicker.vue +5 -3
  23. package/src/fields/Date.vue +21 -27
  24. package/src/fields/DateTime.vue +31 -39
  25. package/src/fields/Daterange.vue +4 -3
  26. package/src/fields/Display.vue +1 -1
  27. package/src/fields/DynamicField.vue +63 -77
  28. package/src/fields/Hidden.vue +1 -1
  29. package/src/fields/Link.vue +65 -86
  30. package/src/fields/Number.vue +32 -34
  31. package/src/fields/RadioGroup.vue +23 -23
  32. package/src/fields/Select.vue +294 -310
  33. package/src/fields/SelectOptionGroups.vue +11 -6
  34. package/src/fields/SelectOptions.vue +5 -3
  35. package/src/fields/Switch.vue +46 -49
  36. package/src/fields/Text.vue +99 -107
  37. package/src/fields/Textarea.vue +32 -44
  38. package/src/fields/Time.vue +21 -30
  39. package/src/index.ts +22 -23
  40. package/src/schema.ts +50 -12
  41. package/src/theme/form.scss +1 -1
  42. package/src/utils/form.ts +9 -5
  43. package/types/Form.vue.d.ts +211 -111
  44. package/types/FormDialog.vue.d.ts +813 -154
  45. package/types/containers/Col.vue.d.ts +96 -40
  46. package/types/containers/Container.vue.d.ts +126 -65
  47. package/types/containers/Fieldset.vue.d.ts +5 -3
  48. package/types/containers/GroupList.vue.d.ts +90 -53
  49. package/types/containers/GroupListItem.vue.d.ts +101 -67
  50. package/types/containers/Panel.vue.d.ts +96 -39
  51. package/types/containers/Row.vue.d.ts +96 -39
  52. package/types/containers/Step.vue.d.ts +106 -42
  53. package/types/containers/Table.vue.d.ts +161 -130
  54. package/types/containers/Tabs.vue.d.ts +97 -50
  55. package/types/fields/Cascader.vue.d.ts +95 -71
  56. package/types/fields/Checkbox.vue.d.ts +95 -56
  57. package/types/fields/CheckboxGroup.vue.d.ts +95 -53
  58. package/types/fields/ColorPicker.vue.d.ts +1 -3
  59. package/types/fields/Date.vue.d.ts +95 -54
  60. package/types/fields/DateTime.vue.d.ts +95 -54
  61. package/types/fields/Daterange.vue.d.ts +1 -3
  62. package/types/fields/Display.vue.d.ts +1 -3
  63. package/types/fields/DynamicField.vue.d.ts +95 -64
  64. package/types/fields/Hidden.vue.d.ts +1 -3
  65. package/types/fields/Link.vue.d.ts +60 -657
  66. package/types/fields/Number.vue.d.ts +99 -56
  67. package/types/fields/RadioGroup.vue.d.ts +96 -52
  68. package/types/fields/Select.vue.d.ts +97 -65
  69. package/types/fields/SelectOptionGroups.vue.d.ts +1 -3
  70. package/types/fields/SelectOptions.vue.d.ts +1 -3
  71. package/types/fields/Switch.vue.d.ts +95 -56
  72. package/types/fields/Text.vue.d.ts +98 -57
  73. package/types/fields/Textarea.vue.d.ts +100 -60
  74. package/types/fields/Time.vue.d.ts +95 -55
  75. package/types/index.d.ts +0 -1
  76. package/types/schema.d.ts +42 -9
  77. package/types/utils/form.d.ts +2 -1
  78. package/dist/tmagic-form.mjs +0 -3925
  79. package/dist/tmagic-form.mjs.map +0 -1
  80. package/dist/tmagic-form.umd.js +0 -3965
  81. package/dist/tmagic-form.umd.js.map +0 -1
  82. package/src/utils/fieldProps.ts +0 -39
  83. package/types/utils/fieldProps.d.ts +0 -21
@@ -1,44 +1,48 @@
1
1
  <template>
2
- <el-checkbox-group v-model="model[name]" :size="size" :disabled="disabled" @change="changeHandler">
3
- <el-checkbox v-for="option in config.options" :label="option.value" :key="option.value"
2
+ <TMagicCheckboxGroup v-model="model[name]" :size="size" :disabled="disabled" @change="changeHandler">
3
+ <TMagicCheckbox v-for="option in options" :label="option.value" :key="option.value" :disabled="option.disabled"
4
4
  >{{ option.text }}
5
- </el-checkbox>
6
- </el-checkbox-group>
5
+ </TMagicCheckbox>
6
+ </TMagicCheckboxGroup>
7
7
  </template>
8
8
 
9
- <script lang="ts">
10
- import { defineComponent, PropType } from 'vue';
9
+ <script lang="ts" setup name="MFormCheckGroup">
10
+ import { computed, inject } from 'vue';
11
11
 
12
- import { CheckboxGroupConfig } from '../schema';
13
- import fieldProps from '../utils/fieldProps';
12
+ import { TMagicCheckbox, TMagicCheckboxGroup } from '@tmagic/design';
13
+
14
+ import { CheckboxGroupConfig, FormState } from '../schema';
14
15
  import { useAddField } from '../utils/useAddField';
16
+ import { filterFunction } from '..';
17
+
18
+ const props = defineProps<{
19
+ config: CheckboxGroupConfig;
20
+ model: any;
21
+ initValues?: any;
22
+ values?: any;
23
+ name: string;
24
+ prop: string;
25
+ disabled?: boolean;
26
+ size: 'mini' | 'small' | 'medium';
27
+ }>();
28
+
29
+ const emit = defineEmits(['change']);
30
+
31
+ useAddField(props.prop);
32
+
33
+ // 初始化选项
34
+ if (props.model && !props.model[props.name]) {
35
+ props.model[props.name] = [];
36
+ }
37
+
38
+ const changeHandler = (v: Array<string | number | boolean>) => {
39
+ emit('change', v);
40
+ };
15
41
 
16
- export default defineComponent({
17
- name: 'm-fields-checkbox-group',
18
-
19
- props: {
20
- ...fieldProps,
21
- config: {
22
- type: Object as PropType<CheckboxGroupConfig>,
23
- required: true,
24
- },
25
- },
26
-
27
- emits: ['change'],
28
-
29
- setup(props, { emit }) {
30
- useAddField(props.prop);
31
-
32
- // 初始化选项
33
- if (props.model && !props.model[props.name]) {
34
- // eslint-disable-next-line no-param-reassign
35
- props.model[props.name] = [];
36
- }
37
- return {
38
- changeHandler: (v: Array<string | number | boolean>) => {
39
- emit('change', v);
40
- },
41
- };
42
- },
42
+ const mForm = inject<FormState | undefined>('mForm');
43
+ const options = computed(() => {
44
+ if (Array.isArray(props.config.options)) return props.config.options;
45
+ if (typeof props.config.options === 'function') return filterFunction(mForm, props.config.options, props);
46
+ return [];
43
47
  });
44
48
  </script>
@@ -1,14 +1,16 @@
1
1
  <template>
2
- <el-color-picker
2
+ <TMagicColorPicker
3
3
  v-model="model[name]"
4
4
  :size="size"
5
5
  :disabled="disabled"
6
6
  :showAlpha="true"
7
7
  @change="changeHandler"
8
- ></el-color-picker>
8
+ ></TMagicColorPicker>
9
9
  </template>
10
10
 
11
- <script lang="ts" setup>
11
+ <script lang="ts" setup name="MFormColorPicker">
12
+ import { TMagicColorPicker } from '@tmagic/design';
13
+
12
14
  import { ColorPickConfig } from '../schema';
13
15
  import { useAddField } from '../utils/useAddField';
14
16
 
@@ -1,47 +1,41 @@
1
1
  <template>
2
- <el-date-picker
2
+ <TMagicDatePicker
3
3
  v-model="model[name]"
4
4
  type="date"
5
5
  :size="size"
6
6
  :placeholder="config.placeholder"
7
7
  :disabled="disabled"
8
8
  :format="config.format"
9
- :value-format="config.format || 'YYYY-MM-DD HH:mm:ss'"
9
+ :value-format="config.valueFormat || 'YYYY-MM-DD HH:mm:ss'"
10
10
  @change="changeHandler"
11
- ></el-date-picker>
11
+ ></TMagicDatePicker>
12
12
  </template>
13
13
 
14
- <script lang="ts">
15
- import { defineComponent, PropType } from 'vue';
16
-
14
+ <script lang="ts" setup name="MFormDate">
15
+ import { TMagicDatePicker } from '@tmagic/design';
17
16
  import { datetimeFormatter } from '@tmagic/utils';
18
17
 
19
18
  import { DateConfig } from '../schema';
20
- import fieldProps from '../utils/fieldProps';
21
19
  import { useAddField } from '../utils/useAddField';
22
20
 
23
- export default defineComponent({
24
- name: 'm-fields-date',
21
+ const props = defineProps<{
22
+ config: DateConfig;
23
+ model: any;
24
+ initValues?: any;
25
+ values?: any;
26
+ name: string;
27
+ prop: string;
28
+ disabled?: boolean;
29
+ size: 'mini' | 'small' | 'medium';
30
+ }>();
25
31
 
26
- props: {
27
- ...fieldProps,
28
- config: {
29
- type: Object as PropType<DateConfig>,
30
- required: true,
31
- },
32
- },
32
+ const emit = defineEmits(['change']);
33
33
 
34
- emits: ['change', 'input'],
34
+ useAddField(props.prop);
35
35
 
36
- setup(props, { emit }) {
37
- useAddField(props.prop);
36
+ props.model[props.name] = datetimeFormatter(props.model[props.name], '');
38
37
 
39
- props.model[props.name] = datetimeFormatter(props.model[props.name], '');
40
- return {
41
- changeHandler(v: string) {
42
- emit('change', v);
43
- },
44
- };
45
- },
46
- });
38
+ const changeHandler = (v: string) => {
39
+ emit('change', v);
40
+ };
47
41
  </script>
@@ -1,5 +1,5 @@
1
1
  <template>
2
- <el-date-picker
2
+ <TMagicDatePicker
3
3
  v-model="model[name]"
4
4
  popper-class="magic-datetime-picker-popper"
5
5
  type="datetime"
@@ -10,49 +10,41 @@
10
10
  :value-format="config.valueFormat || 'YYYY-MM-DD HH:mm:ss'"
11
11
  :default-time="config.defaultTime"
12
12
  @change="changeHandler"
13
- ></el-date-picker>
13
+ ></TMagicDatePicker>
14
14
  </template>
15
15
 
16
- <script lang="ts">
17
- import { defineComponent, PropType } from 'vue';
18
-
16
+ <script lang="ts" setup name="MFormDateTime">
17
+ import { TMagicDatePicker } from '@tmagic/design';
19
18
  import { datetimeFormatter } from '@tmagic/utils';
20
19
 
21
20
  import { DateTimeConfig } from '../schema';
22
- import fieldProps from '../utils/fieldProps';
23
21
  import { useAddField } from '../utils/useAddField';
24
22
 
25
- export default defineComponent({
26
- name: 'm-fields-datetime',
27
-
28
- props: {
29
- ...fieldProps,
30
- config: {
31
- type: Object as PropType<DateTimeConfig>,
32
- required: true,
33
- },
34
- },
35
-
36
- emits: ['change'],
37
-
38
- setup(props, { emit }) {
39
- useAddField(props.prop);
40
-
41
- const value = props.model?.[props.name].toString();
42
- if (props.model) {
43
- if (value === 'Invalid Date') {
44
- props.model[props.name] = '';
45
- } else {
46
- props.model[props.name] = datetimeFormatter(props.model[props.name], '', props.config.valueFormat);
47
- }
48
- }
49
-
50
- return {
51
- value,
52
- changeHandler: (v: Date) => {
53
- emit('change', v);
54
- },
55
- };
56
- },
57
- });
23
+ const props = defineProps<{
24
+ config: DateTimeConfig;
25
+ model: any;
26
+ initValues?: any;
27
+ values?: any;
28
+ name: string;
29
+ prop: string;
30
+ disabled?: boolean;
31
+ size: 'mini' | 'small' | 'medium';
32
+ }>();
33
+
34
+ const emit = defineEmits(['change']);
35
+
36
+ useAddField(props.prop);
37
+
38
+ const value = props.model?.[props.name].toString();
39
+ if (props.model) {
40
+ if (value === 'Invalid Date') {
41
+ props.model[props.name] = '';
42
+ } else {
43
+ props.model[props.name] = datetimeFormatter(props.model[props.name], '', props.config.valueFormat);
44
+ }
45
+ }
46
+
47
+ const changeHandler = (v: string) => {
48
+ emit('change', v);
49
+ };
58
50
  </script>
@@ -1,5 +1,5 @@
1
1
  <template>
2
- <el-date-picker
2
+ <TMagicDatePicker
3
3
  v-model="value"
4
4
  type="datetimerange"
5
5
  range-separator="-"
@@ -10,12 +10,13 @@
10
10
  :disabled="disabled"
11
11
  :default-time="config.defaultTime"
12
12
  @change="changeHandler"
13
- ></el-date-picker>
13
+ ></TMagicDatePicker>
14
14
  </template>
15
15
 
16
- <script lang="ts" setup>
16
+ <script lang="ts" setup name="MFormDateRange">
17
17
  import { ref, watch } from 'vue';
18
18
 
19
+ import { TMagicDatePicker } from '@tmagic/design';
19
20
  import { datetimeFormatter } from '@tmagic/utils';
20
21
 
21
22
  import { DaterangeConfig } from '../schema';
@@ -2,7 +2,7 @@
2
2
  <span v-if="model">{{ model[name] }}</span>
3
3
  </template>
4
4
 
5
- <script setup lang="ts">
5
+ <script setup lang="ts" name="MFormDisplay">
6
6
  import { DisplayConfig } from '../schema';
7
7
  import { useAddField } from '../utils/useAddField';
8
8
 
@@ -1,18 +1,18 @@
1
1
  <template>
2
2
  <div class="m-fields-dynamic-field">
3
- <el-form size="small">
4
- <el-form-item v-for="key in Object.keys(fieldMap.value)" :key="key" :label="fieldLabelMap.value[key]">
5
- <el-input
3
+ <TMagicForm size="small">
4
+ <TMagicFormItem v-for="key in Object.keys(fieldMap.value)" :key="key" :label="fieldLabelMap.value[key]">
5
+ <TMagicInput
6
6
  v-model="fieldMap.value[key]"
7
7
  :placeholder="fieldLabelMap.value[key]"
8
8
  @change="inputChangeHandler(key)"
9
- ></el-input>
10
- </el-form-item>
11
- </el-form>
9
+ ></TMagicInput>
10
+ </TMagicFormItem>
11
+ </TMagicForm>
12
12
  </div>
13
13
  </template>
14
14
 
15
- <script lang="ts">
15
+ <script lang="ts" setup name="MFormDynamicField">
16
16
  /**
17
17
  * 动态表单,目前只支持input类型字段
18
18
  * inputType: 'dynamic-field',
@@ -23,87 +23,73 @@
23
23
  * 特别注意!!!field的上一级必须extensible: true,才能保存未声明的字段
24
24
  */
25
25
 
26
- import { defineComponent, onBeforeUnmount, PropType, reactive, watch } from 'vue';
26
+ import { onBeforeUnmount, reactive, watch } from 'vue';
27
+
28
+ import { TMagicForm, TMagicFormItem, TMagicInput } from '@tmagic/design';
27
29
 
28
30
  import { DynamicFieldConfig } from '../schema';
29
31
  import { getConfig } from '../utils/config';
30
- import fieldProps from '../utils/fieldProps';
31
32
  import { useAddField } from '../utils/useAddField';
32
33
 
33
- export default defineComponent({
34
- name: 'm-fields-dynamic-field',
35
-
36
- props: {
37
- ...fieldProps,
38
- config: {
39
- type: Object as PropType<DynamicFieldConfig>,
40
- required: true,
41
- },
42
- },
43
-
44
- emits: ['change'],
45
-
46
- setup(props, { emit }) {
47
- useAddField(props.prop);
48
-
49
- const request = getConfig('request') as Function;
50
- const fieldMap = reactive<{ [key: string]: any }>({
51
- value: {},
52
- });
53
- const fieldLabelMap = reactive<{ [key: string]: any }>({
54
- value: {},
55
- });
34
+ const props = defineProps<{
35
+ config: DynamicFieldConfig;
36
+ model: any;
37
+ initValues?: any;
38
+ values?: any;
39
+ name: string;
40
+ prop: string;
41
+ disabled?: boolean;
42
+ size: 'mini' | 'small' | 'medium';
43
+ }>();
56
44
 
57
- const changeFieldMap = async () => {
58
- if (typeof props.config.returnFields !== 'function' || !props.model) return;
59
- const fields = await props.config.returnFields(props.config, props.model, request);
60
- fieldMap.value = {};
61
- fieldLabelMap.value = {};
62
- fields.forEach((v) => {
63
- if (typeof v !== 'object' || v.name === undefined) return;
64
- let oldVal = props.model?.[v.name] || '';
65
- if (!oldVal && v.defaultValue !== undefined) {
66
- oldVal = v.defaultValue;
67
- emit('change', oldVal, v.name);
68
- }
69
- fieldMap.value[v.name] = oldVal;
70
- fieldLabelMap.value[v.name] = v.label || '';
71
- });
72
- };
45
+ const emit = defineEmits(['change']);
73
46
 
74
- const unwatch = watch(
75
- () => props.model?.[props.config.dynamicKey],
76
- (val) => {
77
- if (val !== '') {
78
- changeFieldMap();
79
- }
80
- },
81
- {
82
- immediate: true,
83
- },
84
- );
47
+ useAddField(props.prop);
85
48
 
86
- onBeforeUnmount(() => {
87
- if (typeof unwatch === 'function') {
88
- unwatch();
89
- }
90
- });
49
+ const request = getConfig('request') as Function;
50
+ const fieldMap = reactive<{ [key: string]: any }>({
51
+ value: {},
52
+ });
53
+ const fieldLabelMap = reactive<{ [key: string]: any }>({
54
+ value: {},
55
+ });
91
56
 
92
- return {
93
- request,
94
- fieldMap,
95
- fieldLabelMap,
96
- unwatch,
57
+ const changeFieldMap = async () => {
58
+ if (typeof props.config.returnFields !== 'function' || !props.model) return;
59
+ const fields = await props.config.returnFields(props.config, props.model, request);
60
+ fieldMap.value = {};
61
+ fieldLabelMap.value = {};
62
+ fields.forEach((v) => {
63
+ if (typeof v !== 'object' || v.name === undefined) return;
64
+ let oldVal = props.model?.[v.name] || '';
65
+ if (!oldVal && v.defaultValue !== undefined) {
66
+ oldVal = v.defaultValue;
67
+ emit('change', oldVal, v.name);
68
+ }
69
+ fieldMap.value[v.name] = oldVal;
70
+ fieldLabelMap.value[v.name] = v.label || '';
71
+ });
72
+ };
97
73
 
98
- changeFieldMap,
99
- inputChangeHandler: (key: string) => {
100
- emit('change', fieldMap.value[key], key);
101
- },
102
- };
74
+ const unwatch = watch(
75
+ () => props.model?.[props.config.dynamicKey],
76
+ (val) => {
77
+ if (val !== '') {
78
+ changeFieldMap();
79
+ }
103
80
  },
104
-
105
- methods: {
106
- init() {},
81
+ {
82
+ immediate: true,
107
83
  },
84
+ );
85
+
86
+ onBeforeUnmount(() => {
87
+ if (typeof unwatch === 'function') {
88
+ unwatch();
89
+ }
108
90
  });
91
+
92
+ const inputChangeHandler = (key: string) => {
93
+ emit('change', fieldMap.value[key], key);
94
+ };
109
95
  </script>
@@ -2,7 +2,7 @@
2
2
  <input v-if="model" v-model="model[name]" type="hidden" />
3
3
  </template>
4
4
 
5
- <script setup lang="ts">
5
+ <script setup lang="ts" name="MFormHidden">
6
6
  import { HiddenConfig } from '../schema';
7
7
  import { useAddField } from '../utils/useAddField';
8
8
 
@@ -2,8 +2,8 @@
2
2
  <a v-if="config.href && !disabled" target="_blank" :href="href" :style="config.css || {}">{{ displayText }}</a>
3
3
  <span v-else-if="config.href && disabled" :style="config.disabledCss || {}">{{ displayText }}</span>
4
4
  <div v-else class="m-fields-link">
5
- <el-button text type="primary" @click="editHandler">点击编辑</el-button>
6
- <m-form-dialog
5
+ <TMagicButton :text="true" type="primary" @click="editHandler">点击编辑</TMagicButton>
6
+ <FormDialog
7
7
  ref="editor"
8
8
  :title="config.formTitle || '编辑扩展配置'"
9
9
  :width="config.formWidth"
@@ -12,101 +12,80 @@
12
12
  :parentValues="values"
13
13
  :fullscreen="config.fullscreen"
14
14
  @submit="action"
15
- ></m-form-dialog>
15
+ ></FormDialog>
16
16
  </div>
17
17
  </template>
18
18
 
19
- <script lang="ts">
20
- import { computed, defineComponent, inject, PropType, ref } from 'vue';
19
+ <script lang="ts" setup name="MFormLink">
20
+ import { computed, inject, ref } from 'vue';
21
+
22
+ import { TMagicButton } from '@tmagic/design';
21
23
 
22
24
  import FormDialog from '../FormDialog.vue';
23
25
  import { FormState, LinkConfig } from '../schema';
24
- import fieldProps from '../utils/fieldProps';
25
26
  import { useAddField } from '../utils/useAddField';
26
27
 
27
- export default defineComponent({
28
- name: 'm-fields-link',
29
-
30
- props: {
31
- ...fieldProps,
32
- config: {
33
- type: Object as PropType<LinkConfig>,
34
- required: true,
35
- },
36
- },
37
-
38
- emits: ['change'],
39
-
40
- setup(props, { emit }) {
41
- useAddField(props.prop);
28
+ const props = defineProps<{
29
+ config: LinkConfig;
30
+ model: any;
31
+ initValues?: any;
32
+ values?: any;
33
+ name: string;
34
+ prop: string;
35
+ disabled?: boolean;
36
+ size: 'mini' | 'small' | 'medium';
37
+ }>();
38
+
39
+ const emit = defineEmits(['change']);
40
+
41
+ useAddField(props.prop);
42
+
43
+ const formValue = ref({});
44
+ const editor = ref<InstanceType<typeof FormDialog>>();
45
+ const mForm = inject<FormState | undefined>('mForm');
46
+
47
+ const href = computed(() => {
48
+ if (typeof props.config.href === 'function' && props.model) {
49
+ return props.config.href(props.model);
50
+ }
51
+ return props.config.href || props.model?.[props.name];
52
+ });
42
53
 
43
- const formValue = ref({});
44
- const editor = ref<InstanceType<typeof FormDialog>>();
45
- const mForm = inject<FormState | undefined>('mForm');
54
+ const init = () => {
55
+ formValue.value = props.model?.[props.name] || {};
56
+ };
46
57
 
47
- const href = computed(() => {
48
- if (typeof props.config.href === 'function' && props.model) {
49
- return props.config.href(props.model);
50
- }
51
- return props.config.href || props.model?.[props.name];
58
+ const formConfig = computed(() => {
59
+ if (typeof props.config.form === 'function') {
60
+ return props.config.form(mForm, {
61
+ model: props.model || {},
62
+ values: props.values || {},
52
63
  });
64
+ }
65
+ return props.config.form;
66
+ });
53
67
 
54
- const init = () => {
55
- formValue.value = props.model?.[props.name] || {};
56
- };
57
-
58
- return {
59
- // ref
60
- formValue,
61
- editor,
62
-
63
- // computed methods
64
- href,
65
-
66
- formConfig: computed(() => {
67
- if (typeof props.config.form === 'function') {
68
- return props.config.form(mForm, {
69
- model: props.model || {},
70
- values: props.values || {},
71
- });
72
- }
73
- return props.config.form;
74
- }),
75
-
76
- disable: computed(() => {
77
- if (typeof props.config.disabled !== 'undefined') {
78
- return props.config.disabled;
79
- }
80
- return !href.value;
81
- }),
82
-
83
- displayText: computed(() => {
84
- if (typeof props.config.displayText === 'function') {
85
- return props.config.displayText(mForm, { model: props.model || {} });
86
- }
87
- if (props.config.displayText) {
88
- return props.config.displayText;
89
- }
90
- return '跳转';
91
- }),
92
-
93
- // methods
94
- init,
95
-
96
- editHandler: () => {
97
- init();
98
- editor.value && (editor.value.dialogVisible = true);
99
- },
100
-
101
- action: (data: any) => {
102
- if (props.model) {
103
- props.model[props.name] = data;
104
- formValue.value = data;
105
- emit('change', props.model[props.name]);
106
- }
107
- editor.value && (editor.value.dialogVisible = false);
108
- },
109
- };
110
- },
68
+ const displayText = computed(() => {
69
+ if (typeof props.config.displayText === 'function') {
70
+ return props.config.displayText(mForm, { model: props.model || {} });
71
+ }
72
+ if (props.config.displayText) {
73
+ return props.config.displayText;
74
+ }
75
+ return '跳转';
111
76
  });
77
+
78
+ const editHandler = () => {
79
+ init();
80
+ editor.value && (editor.value.dialogVisible = true);
81
+ };
82
+
83
+ const action = (data: any) => {
84
+ if (props.model) {
85
+ props.model[props.name] = data;
86
+ formValue.value = data;
87
+ emit('change', props.model[props.name]);
88
+ }
89
+ editor.value && (editor.value.dialogVisible = false);
90
+ };
112
91
  </script>