Commit 3b86435766bc19902b934d4e7c17bf4cf609354e
1 parent
e3637e7a
feat: ApiTree add afterFetch props,add ApiTree demo
Showing
2 changed files
with
26 additions
and
1 deletions
src/components/Form/src/components/ApiTree.vue
@@ -24,6 +24,7 @@ | @@ -24,6 +24,7 @@ | ||
24 | params: { type: Object }, | 24 | params: { type: Object }, |
25 | immediate: { type: Boolean, default: true }, | 25 | immediate: { type: Boolean, default: true }, |
26 | resultField: propTypes.string.def(''), | 26 | resultField: propTypes.string.def(''), |
27 | + afterFetch: { type: Function as PropType<Fn> }, | ||
27 | }, | 28 | }, |
28 | emits: ['options-change', 'change'], | 29 | emits: ['options-change', 'change'], |
29 | setup(props, { attrs, emit }) { | 30 | setup(props, { attrs, emit }) { |
@@ -61,7 +62,7 @@ | @@ -61,7 +62,7 @@ | ||
61 | }); | 62 | }); |
62 | 63 | ||
63 | async function fetch() { | 64 | async function fetch() { |
64 | - const { api } = props; | 65 | + const { api, afterFetch } = props; |
65 | if (!api || !isFunction(api)) return; | 66 | if (!api || !isFunction(api)) return; |
66 | loading.value = true; | 67 | loading.value = true; |
67 | treeData.value = []; | 68 | treeData.value = []; |
@@ -71,6 +72,9 @@ | @@ -71,6 +72,9 @@ | ||
71 | } catch (e) { | 72 | } catch (e) { |
72 | console.error(e); | 73 | console.error(e); |
73 | } | 74 | } |
75 | + if (afterFetch && isFunction(afterFetch)) { | ||
76 | + result = afterFetch(result); | ||
77 | + } | ||
74 | loading.value = false; | 78 | loading.value = false; |
75 | if (!result) return; | 79 | if (!result) return; |
76 | if (!isArray(result)) { | 80 | if (!isArray(result)) { |
src/views/demo/form/index.vue
@@ -461,6 +461,27 @@ | @@ -461,6 +461,27 @@ | ||
461 | }, | 461 | }, |
462 | }, | 462 | }, |
463 | { | 463 | { |
464 | + field: 'field36', | ||
465 | + component: 'ApiTree', | ||
466 | + label: '远程Tree', | ||
467 | + helpMessage: ['ApiTree组件', '使用接口提供的数据生成选项'], | ||
468 | + required: true, | ||
469 | + componentProps: { | ||
470 | + api: treeOptionsListApi, | ||
471 | + params: { | ||
472 | + count: 2, | ||
473 | + }, | ||
474 | + afterFetch: (v) => { | ||
475 | + //do something | ||
476 | + return v; | ||
477 | + }, | ||
478 | + resultField: 'list', | ||
479 | + }, | ||
480 | + colProps: { | ||
481 | + span: 8, | ||
482 | + }, | ||
483 | + }, | ||
484 | + { | ||
464 | field: 'divider-linked', | 485 | field: 'divider-linked', |
465 | component: 'Divider', | 486 | component: 'Divider', |
466 | label: '字段联动', | 487 | label: '字段联动', |