@@ -148,6 +148,8 @@ import NodeContainer from '@/workflow/common/NodeContainer.vue'
148148import { ref , computed , onMounted } from ' vue'
149149import NodeCascader from ' @/workflow/common/NodeCascader.vue'
150150import type { FormInstance } from ' element-plus'
151+ import applicationApi from ' @/api/application'
152+ import { isWorkFlow } from ' @/utils/application'
151153
152154const form = {
153155 question_reference_address: [' start-node' , ' question' ],
@@ -158,6 +160,10 @@ const form = {
158160 audio_list: [' start-node' , ' audio' ]
159161}
160162
163+ const {
164+ params : { id }
165+ } = app .config .globalProperties .$route as any
166+
161167const applicationNodeFormRef = ref <FormInstance >()
162168
163169const form_data = computed ({
@@ -174,6 +180,85 @@ const form_data = computed({
174180 }
175181})
176182
183+ function handleFileUpload(type : string , isEnabled : boolean ) {
184+ const listKey = ` ${type }_list `
185+ if (isEnabled ) {
186+ if (! props .nodeModel .properties .node_data [listKey ]) {
187+ set (props .nodeModel .properties .node_data , listKey , [])
188+ }
189+ } else {
190+ // eslint-disable-next-line vue/no-mutating-props
191+ delete props .nodeModel .properties .node_data [listKey ]
192+ }
193+ }
194+
195+ const update_field = () => {
196+ if (! props .nodeModel .properties .node_data .application_id ) {
197+ set (props .nodeModel .properties , ' status' , 500 )
198+ return
199+ }
200+ applicationApi
201+ .getApplicationById (id , props .nodeModel .properties .node_data .application_id )
202+ .then ((ok ) => {
203+ const old_api_input_field_list = props .nodeModel .properties .node_data .api_input_field_list
204+ const old_user_input_field_list = props .nodeModel .properties .node_data .user_input_field_list
205+
206+ if (isWorkFlow (ok .data .type )) {
207+ const nodeData = ok .data .work_flow .nodes [0 ].properties .node_data
208+ const new_api_input_field_list = ok .data .work_flow .nodes [0 ].properties .api_input_field_list
209+ const new_user_input_field_list =
210+ ok .data .work_flow .nodes [0 ].properties .user_input_field_list
211+ const merge_api_input_field_list = new_api_input_field_list .map ((item : any ) => {
212+ const find_field = old_api_input_field_list .find (
213+ (old_item : any ) => old_item .variable == item .variable
214+ )
215+ if (find_field ) {
216+ return { ... item , default_value: JSON .parse (JSON .stringify (find_field .default_value )) }
217+ } else {
218+ return item
219+ }
220+ })
221+ set (
222+ props .nodeModel .properties .node_data ,
223+ ' api_input_field_list' ,
224+ merge_api_input_field_list
225+ )
226+ const merge_user_input_field_list = new_user_input_field_list .map ((item : any ) => {
227+ const find_field = old_user_input_field_list .find (
228+ (old_item : any ) => old_item .field == item .field
229+ )
230+ if (find_field ) {
231+ return { ... item , default_value: JSON .parse (JSON .stringify (find_field .default_value )) }
232+ } else {
233+ return item
234+ }
235+ })
236+ console .log (merge_user_input_field_list )
237+ set (
238+ props .nodeModel .properties .node_data ,
239+ ' user_input_field_list' ,
240+ merge_user_input_field_list
241+ )
242+ const fileUploadSetting = nodeData .file_upload_setting
243+ // 如果是true,说明有文件上传
244+ if (fileUploadSetting ) {
245+ handleFileUpload (' document' , fileUploadSetting .document )
246+ handleFileUpload (' image' , fileUploadSetting .image )
247+ handleFileUpload (' audio' , fileUploadSetting .audio )
248+ } else {
249+ ;[' document_list' , ' image_list' , ' audio_list' ].forEach ((list ) => {
250+ // eslint-disable-next-line vue/no-mutating-props
251+ delete props .nodeModel .properties .node_data [list ]
252+ })
253+ }
254+ set (props .nodeModel .properties , ' status' , ok .data .id ? 200 : 500 )
255+ }
256+ })
257+ .catch ((err ) => {
258+ set (props .nodeModel .properties , ' status' , 500 )
259+ })
260+ }
261+
177262const props = defineProps <{ nodeModel: any }>()
178263
179264const validate = () => {
@@ -183,6 +268,7 @@ const validate = () => {
183268}
184269
185270onMounted (() => {
271+ update_field ()
186272 set (props .nodeModel , ' validate' , validate )
187273})
188274 </script >
0 commit comments