1- import { Dispatch , FormField , FormMeta , FormState } from "@/types" ;
1+ import { Dispatch , FormMeta , FormState , StateField } from "@/types" ;
22
33export class FormPresenter {
44 private state : FormState ;
@@ -51,6 +51,39 @@ export class FormPresenter {
5151 } )
5252 }
5353
54+
55+ public refreshFields ( nameList : string [ ] | string , formCode ?: string ) {
56+ this . dispatch ( prevState => {
57+ const subFormList = prevState . subForms || [ ] ;
58+ return {
59+ ...prevState ,
60+ fields :prevState . fields . map ( item => {
61+ if ( formCode ) {
62+ if ( formCode === prevState . code ) {
63+ return this . refreshMapFields ( item , nameList ) ;
64+ }
65+ } else {
66+ return this . refreshMapFields ( item , nameList ) ;
67+ }
68+ return item ;
69+ } ) ,
70+ subForms :subFormList . map ( item => {
71+ if ( formCode ) {
72+ if ( formCode === item . code ) {
73+ return {
74+ ...item ,
75+ fields :item . fields . map ( item => {
76+ return this . refreshMapFields ( item , nameList ) ;
77+ } )
78+ }
79+ }
80+ }
81+ return item ;
82+ } )
83+ }
84+ } )
85+ }
86+
5487 public requiredFields ( required : boolean , nameList : string [ ] | string , formCode ?: string ) {
5588 this . dispatch ( prevState => {
5689 const subFormList = prevState . subForms || [ ] ;
@@ -84,7 +117,7 @@ export class FormPresenter {
84117 }
85118
86119
87- private hiddenMapFields ( hidden : boolean , field :FormField , nameList : string [ ] | string ) {
120+ private hiddenMapFields ( hidden : boolean , field :StateField , nameList : string [ ] | string ) {
88121 if ( typeof nameList === 'string' ) {
89122 if ( field . code === nameList ) {
90123 return {
@@ -103,7 +136,29 @@ export class FormPresenter {
103136 return field ;
104137 }
105138
106- private requiredMapFields ( required : boolean , field :FormField , nameList : string [ ] | string ) {
139+
140+ private refreshMapFields ( field :StateField , nameList : string [ ] | string ) {
141+ if ( typeof nameList === 'string' ) {
142+ if ( field . code === nameList ) {
143+ const version = field . version ?field . version :0 ;
144+ return {
145+ ...field ,
146+ version :version + 1
147+ }
148+ }
149+ } else {
150+ if ( nameList . includes ( field . code ) ) {
151+ const version = field . version ?field . version :0 ;
152+ return {
153+ ...field ,
154+ version :version + 1
155+ }
156+ }
157+ }
158+ return field ;
159+ }
160+
161+ private requiredMapFields ( required : boolean , field :StateField , nameList : string [ ] | string ) {
107162 if ( typeof nameList === 'string' ) {
108163 if ( field . code === nameList ) {
109164 return {
0 commit comments