hookehuyr

group组件删除和提交逻辑调整

...@@ -77,8 +77,10 @@ declare module '@vue/runtime-core' { ...@@ -77,8 +77,10 @@ declare module '@vue/runtime-core' {
77 VanSearch: typeof import('vant/es')['Search'] 77 VanSearch: typeof import('vant/es')['Search']
78 VanSwipe: typeof import('vant/es')['Swipe'] 78 VanSwipe: typeof import('vant/es')['Swipe']
79 VanSwipeItem: typeof import('vant/es')['SwipeItem'] 79 VanSwipeItem: typeof import('vant/es')['SwipeItem']
80 + VanTa: typeof import('vant/es')['Ta']
80 VanTab: typeof import('vant/es')['Tab'] 81 VanTab: typeof import('vant/es')['Tab']
81 VanTabs: typeof import('vant/es')['Tabs'] 82 VanTabs: typeof import('vant/es')['Tabs']
83 + VanTag: typeof import('vant/es')['Tag']
82 VanTimePicker: typeof import('vant/es')['TimePicker'] 84 VanTimePicker: typeof import('vant/es')['TimePicker']
83 VanUploader: typeof import('vant/es')['Uploader'] 85 VanUploader: typeof import('vant/es')['Uploader']
84 VideoField: typeof import('./src/components/VideoField/index.vue')['default'] 86 VideoField: typeof import('./src/components/VideoField/index.vue')['default']
......
1 <!-- 1 <!--
2 * @Date: 2024-05-27 14:28:57 2 * @Date: 2024-05-27 14:28:57
3 * @LastEditors: hookehuyr hookehuyr@gmail.com 3 * @LastEditors: hookehuyr hookehuyr@gmail.com
4 - * @LastEditTime: 2024-05-28 10:28:26 4 + * @LastEditTime: 2024-06-03 17:22:17
5 * @FilePath: /data-table/src/components/GroupField/index.vue 5 * @FilePath: /data-table/src/components/GroupField/index.vue
6 * @Description: 组集合输入控件 6 * @Description: 组集合输入控件
7 --> 7 -->
...@@ -14,7 +14,7 @@ ...@@ -14,7 +14,7 @@
14 <div v-if="item.component_props.note" class="note" v-html="item.component_props.note" /> 14 <div v-if="item.component_props.note" class="note" v-html="item.component_props.note" />
15 <div> 15 <div>
16 <div v-for="(data, idx) in listData" :key="idx" style="border: 1px solid #eee; border-top: 0; margin: 1rem; position: relative;"> 16 <div v-for="(data, idx) in listData" :key="idx" style="border: 1px solid #eee; border-top: 0; margin: 1rem; position: relative;">
17 - <van-icon @click="onRemove(idx)" v-if="listData.length > 1" size="1.5rem" color="#ee0a24" name="clear" style="position: absolute; right: -0.5rem; top: -0.5rem;" /> 17 + <van-icon @click="onRemove(data, idx)" v-if="listData.length > 1" size="1.5rem" color="#ee0a24" name="clear" style="position: absolute; right: -0.5rem; top: -0.5rem;" />
18 <van-cell-group :border="false"> 18 <van-cell-group :border="false">
19 <component v-for="(item, index) in data" :id="item.key" :key="index" 19 <component v-for="(item, index) in data" :id="item.key" :key="index"
20 :is="item.component" :item="item" @active="onActive" /> 20 :is="item.component" :item="item" @active="onActive" />
...@@ -28,10 +28,12 @@ ...@@ -28,10 +28,12 @@
28 </template> 28 </template>
29 29
30 <script setup> 30 <script setup>
31 +import { v4 as uuidv4 } from "uuid";
31 import { styleColor } from "@/constant.js"; 32 import { styleColor } from "@/constant.js";
32 import { queryFormAPI } from "@/api/form.js"; 33 import { queryFormAPI } from "@/api/form.js";
33 import { useRoute } from "vue-router"; 34 import { useRoute } from "vue-router";
34 import { createComponentType } from "@/hooks/useComponentType"; 35 import { createComponentType } from "@/hooks/useComponentType";
36 +import _ from 'lodash';
35 37
36 const props = defineProps({ 38 const props = defineProps({
37 item: Object, 39 item: Object,
...@@ -46,306 +48,19 @@ const HideShow = computed(() => { ...@@ -46,306 +48,19 @@ const HideShow = computed(() => {
46 return !props.item.component_props.disabled 48 return !props.item.component_props.disabled
47 }); 49 });
48 50
49 -// TODO:模拟集合组数据源 51 +// let obj = {
50 -const testData = props.item.component_props.field_groups; 52 +// "field_10_group[0]_7653" : "1",
51 - 53 +// "field_10_group[1]_4154" : "11",
52 -// TAG: 测试调整了input和name两个组件头部显示 54 +// "field_11_group[0]_3440" : "2",
55 +// "field_11_group[1]_4282" : "22"
56 +// }
53 57
54 -/*const testData = [ 58 +// TODO:模拟集合组数据源
55 - // { 59 +const groupData = _.cloneDeep(props.item.component_props.field_groups);
56 - // "tag": "radio", 60 +groupData.forEach(item => {
57 - // "name": "radio_8", 61 + let randomNum = Math.floor(1000 + Math.random() * 9000);
58 - // "note": "", 62 + item.field_name = item.field_name + "_group" + '[0]_' + randomNum; // 组合唯一标识
59 - // "index": 8, 63 +})
60 - // "label": "组别",
61 - // "options": [
62 - // {
63 - // "title": "少年组",
64 - // "value": "少年组",
65 - // "checked": false,
66 - // "desc_url": "",
67 - // "is_input": false,
68 - // "desc_text": "",
69 - // "desc_type": "",
70 - // "desc_btn_name": "",
71 - // "input_required": false,
72 - // "input_placeholder": "请输入补充信息"
73 - // },
74 - // {
75 - // "title": "成人组",
76 - // "value": "成人组",
77 - // "checked": false,
78 - // "desc_url": "",
79 - // "is_input": false,
80 - // "desc_text": "",
81 - // "desc_type": "",
82 - // "desc_btn_name": "",
83 - // "input_required": false,
84 - // "input_placeholder": "请输入补充信息"
85 - // },
86 - // {
87 - // "title": "老年组",
88 - // "value": "老年组",
89 - // "checked": false,
90 - // "desc_url": "",
91 - // "is_input": false,
92 - // "desc_text": "",
93 - // "desc_type": "",
94 - // "desc_btn_name": "",
95 - // "input_required": false,
96 - // "input_placeholder": "请输入补充信息"
97 - // }
98 - // ],
99 - // "disabled": false,
100 - // "field_id": 799497,
101 - // "required": true,
102 - // "data_type": "text",
103 - // "direction": "vertical",
104 - // "field_name": "field_6",
105 - // "option_map": {
106 - // "少年组": {
107 - // "title": "少年组",
108 - // "value": "少年组",
109 - // "checked": false,
110 - // "desc_url": "",
111 - // "is_input": false,
112 - // "desc_text": "",
113 - // "desc_type": "",
114 - // "desc_btn_name": "",
115 - // "input_required": false,
116 - // "input_placeholder": "请输入补充信息"
117 - // },
118 - // "成人组": {
119 - // "title": "成人组",
120 - // "value": "成人组",
121 - // "checked": false,
122 - // "desc_url": "",
123 - // "is_input": false,
124 - // "desc_text": "",
125 - // "desc_type": "",
126 - // "desc_btn_name": "",
127 - // "input_required": false,
128 - // "input_placeholder": "请输入补充信息"
129 - // },
130 - // "老年组": {
131 - // "title": "老年组",
132 - // "value": "老年组",
133 - // "checked": false,
134 - // "desc_url": "",
135 - // "is_input": false,
136 - // "desc_text": "",
137 - // "desc_type": "",
138 - // "desc_btn_name": "",
139 - // "input_required": false,
140 - // "input_placeholder": "请输入补充信息"
141 - // }
142 - // },
143 - // "interaction_type": "h5edit",
144 - // "default": ""
145 - // },
146 - {
147 - "tag": "input",
148 - "name": "input_21",
149 - "index": 2,
150 - "label": "物品描述",
151 - "unique": false,
152 - "default": "",
153 - "disabled": false,
154 - "field_id": 7985071,
155 - "readonly": false,
156 - "required": false,
157 - "data_type": "text",
158 - "field_name": "field_21",
159 - "placeholder": "请输入",
160 - "is_camera_scan": false,
161 - "camera_scan_type": "",
162 - "interaction_type": "h5edit",
163 - "is_edit_camera_scan_result": false
164 - },
165 - // {
166 - // "tag": "radio",
167 - // "name": "radio_3",
168 - // "note": "",
169 - // "index": 3,
170 - // "label": "单选框",
171 - // "options": [
172 - // {
173 - // "title": "选项标题1",
174 - // "value": "选项标题1",
175 - // "checked": true,
176 - // "desc_url": "",
177 - // "is_input": false,
178 - // "desc_text": "",
179 - // "desc_type": "",
180 - // "desc_btn_name": "",
181 - // "input_required": false,
182 - // "input_placeholder": "请输入补充信息"
183 - // },
184 - // {
185 - // "title": "选项标题2",
186 - // "value": "选项标题2",
187 - // "checked": false,
188 - // "desc_url": "",
189 - // "is_input": false,
190 - // "desc_text": "",
191 - // "desc_type": "",
192 - // "desc_btn_name": "",
193 - // "input_required": false,
194 - // "input_placeholder": "请输入补充信息"
195 - // }
196 - // ],
197 - // "disabled": false,
198 - // "field_id": 798510,
199 - // "required": false,
200 - // "data_type": "text",
201 - // "direction": "vertical",
202 - // "field_name": "field_4",
203 - // "option_map": {
204 - // "选项标题1": {
205 - // "title": "选项标题1",
206 - // "value": "选项标题1",
207 - // "checked": true,
208 - // "desc_url": "",
209 - // "is_input": false,
210 - // "desc_text": "",
211 - // "desc_type": "",
212 - // "desc_btn_name": "",
213 - // "input_required": false,
214 - // "input_placeholder": "请输入补充信息"
215 - // },
216 - // "选项标题2": {
217 - // "title": "选项标题2",
218 - // "value": "选项标题2",
219 - // "checked": false,
220 - // "desc_url": "",
221 - // "is_input": false,
222 - // "desc_text": "",
223 - // "desc_type": "",
224 - // "desc_btn_name": "",
225 - // "input_required": false,
226 - // "input_placeholder": "请输入补充信息"
227 - // }
228 - // },
229 - // "interaction_type": "h5edit",
230 - // "default": "选项标题1"
231 - // },
232 - // {
233 - // "tag": "datetime",
234 - // "name": "datetime_4",
235 - // "index": 4,
236 - // "label": "日期时间",
237 - // "default": "",
238 - // "disabled": false,
239 - // "field_id": 798512,
240 - // "readonly": false,
241 - // "required": false,
242 - // "data_type": "text",
243 - // "field_name": "field_5",
244 - // "placeholder": "请选择",
245 - // "data_maxvalue": "",
246 - // "data_minvalue": "",
247 - // "data_dateformat": "YYYY-MM-DD HH:mm:ss",
248 - // "interaction_type": "h5edit"
249 - // },
250 - // {
251 - // "tag": "email",
252 - // "name": "email_5",
253 - // "index": 5,
254 - // "label": "邮箱",
255 - // "unique": false,
256 - // "default": "",
257 - // "disabled": false,
258 - // "field_id": 799499,
259 - // "readonly": false,
260 - // "required": true,
261 - // "data_type": "text",
262 - // "field_name": "field_7",
263 - // "placeholder": "请输入",
264 - // "interaction_type": "h5edit"
265 - // },
266 - // {
267 - // "tag": "gender",
268 - // "name": "gender_6",
269 - // "note": "",
270 - // "index": 6,
271 - // "label": "性别",
272 - // "options": [
273 - // {
274 - // "title": "男",
275 - // "value": "男",
276 - // "checked": false,
277 - // "desc_url": "",
278 - // "is_input": false,
279 - // "desc_text": "",
280 - // "desc_type": "",
281 - // "desc_btn_name": "",
282 - // "input_required": false,
283 - // "input_placeholder": "请输入补充信息"
284 - // },
285 - // {
286 - // "title": "女",
287 - // "value": "女",
288 - // "checked": false,
289 - // "desc_url": "",
290 - // "is_input": false,
291 - // "desc_text": "",
292 - // "desc_type": "",
293 - // "desc_btn_name": "",
294 - // "input_required": false,
295 - // "input_placeholder": "请输入补充信息"
296 - // }
297 - // ],
298 - // "disabled": false,
299 - // "field_id": 799501,
300 - // "required": true,
301 - // "data_type": "text",
302 - // "direction": "vertical",
303 - // "field_name": "field_8",
304 - // "option_map": {
305 - // "女": {
306 - // "title": "女",
307 - // "value": "女",
308 - // "checked": false,
309 - // "desc_url": "",
310 - // "is_input": false,
311 - // "desc_text": "",
312 - // "desc_type": "",
313 - // "desc_btn_name": "",
314 - // "input_required": false,
315 - // "input_placeholder": "请输入补充信息"
316 - // },
317 - // "男": {
318 - // "title": "男",
319 - // "value": "男",
320 - // "checked": false,
321 - // "desc_url": "",
322 - // "is_input": false,
323 - // "desc_text": "",
324 - // "desc_type": "",
325 - // "desc_btn_name": "",
326 - // "input_required": false,
327 - // "input_placeholder": "请输入补充信息"
328 - // }
329 - // },
330 - // "interaction_type": "h5edit"
331 - // },
332 - {
333 - "tag": "name",
334 - "name": "name_71",
335 - "index": 7,
336 - "label": "序列号",
337 - "unique": false,
338 - "default": "",
339 - "disabled": false,
340 - "field_id": 7995031,
341 - "readonly": false,
342 - "required": true,
343 - "data_type": "text",
344 - "field_name": "field_91",
345 - "placeholder": "请输入",
346 - "interaction_type": "h5edit"
347 - },
348 -]*/
349 64
350 const listData = ref([]); 65 const listData = ref([]);
351 const formData = ref([]); 66 const formData = ref([]);
...@@ -367,15 +82,12 @@ const formatData = (data) => { ...@@ -367,15 +82,12 @@ const formatData = (data) => {
367 return arr; 82 return arr;
368 }; 83 };
369 84
370 -const onRemove = (idx) => { // 移除列表item
371 - listData.value.splice(idx, 1)
372 -}
373 85
374 // const gender_value = ref(props.item.component_props.default); 86 // const gender_value = ref(props.item.component_props.default);
375 const $route = useRoute(); 87 const $route = useRoute();
376 88
377 onMounted(async () => { 89 onMounted(async () => {
378 - const form_data = testData; 90 + const form_data = groupData;
379 let page_form = []; 91 let page_form = [];
380 form_data.forEach((element) => { 92 form_data.forEach((element) => {
381 page_form.push(element); 93 page_form.push(element);
...@@ -384,38 +96,44 @@ onMounted(async () => { ...@@ -384,38 +96,44 @@ onMounted(async () => {
384 // 生成自定义组件 96 // 生成自定义组件
385 createComponentType(formData.value); 97 createComponentType(formData.value);
386 98
387 - listData.value.push(formData.value) 99 + listData.value.push(formData.value);
388 - // gender_value.value = props.item.component_props.default ? props.item.component_props.default : '';
389 - // // 发送自定义数据结构
390 - // props.item.value = { key: props.item.key, value: gender_value.value, type: "gender" };
391 - // emit("active", props.item.value);
392 }); 100 });
393 101
394 -const emit = defineEmits(["active"]); 102 +const emit = defineEmits(["active", "remove"]);
395 103
396 const onChange = (item) => { 104 const onChange = (item) => {
397 - // // 发送自定义数据结构
398 - // props.item.value = { key: props.item.key, value: gender_value.value, type: "gender" };
399 - // emit("active", props.item.value);
400 } 105 }
401 106
402 -// 操作绑定自定义字段回调 107 +const addData = async () => { // 添加一行数据
403 -const onActive = (item) => { 108 + const groupData = _.cloneDeep(props.item.component_props.field_groups);
404 - emit("active", item); 109 + groupData.forEach(item => {
405 -}; 110 + let randomNum = Math.floor(1000 + Math.random() * 9000);
111 + item.field_name = `${item.field_name}_group[${listData.value.length}]_${randomNum}`; // 组合唯一标识
112 + })
406 113
407 -const addData = async () => { 114 + const form_data = groupData;
408 - const form_data = testData;
409 let page_form = []; 115 let page_form = [];
410 form_data.forEach((element) => { 116 form_data.forEach((element) => {
411 page_form.push(element); 117 page_form.push(element);
412 }); 118 });
119 +
413 formData.value = formatData(page_form); 120 formData.value = formatData(page_form);
121 +
414 // 生成自定义组件 122 // 生成自定义组件
415 createComponentType(formData.value); 123 createComponentType(formData.value);
416 124
417 listData.value.push(formData.value) 125 listData.value.push(formData.value)
418 } 126 }
127 +
128 +const onRemove = (data, idx) => { // 移除列表item
129 + let item = listData.value.splice(idx, 1);
130 + emit("remove", item);
131 +}
132 +
133 +// 操作绑定自定义字段回调
134 +const onActive = (item) => {
135 + emit("active", item);
136 +};
419 </script> 137 </script>
420 138
421 <style lang="less" scoped> 139 <style lang="less" scoped>
......
1 <!-- 1 <!--
2 * @Date: 2022-07-18 10:22:22 2 * @Date: 2022-07-18 10:22:22
3 * @LastEditors: hookehuyr hookehuyr@gmail.com 3 * @LastEditors: hookehuyr hookehuyr@gmail.com
4 - * @LastEditTime: 2024-05-29 14:28:37 4 + * @LastEditTime: 2024-06-03 17:06:34
5 * @FilePath: /data-table/src/views/index.vue 5 * @FilePath: /data-table/src/views/index.vue
6 * @Description: 首页 6 * @Description: 首页
7 --> 7 -->
...@@ -25,7 +25,7 @@ ...@@ -25,7 +25,7 @@
25 <van-form @submit="onSubmit" :scroll-to-error="true"> 25 <van-form @submit="onSubmit" :scroll-to-error="true">
26 <van-cell-group :border="false"> 26 <van-cell-group :border="false">
27 <component v-for="(item, index) in formData" :id="item.key" :ref="(el) => setRefMap(el, item)" :key="index" 27 <component v-for="(item, index) in formData" :id="item.key" :ref="(el) => setRefMap(el, item)" :key="index"
28 - :is="item.component" :item="item" @active="onActive" /> 28 + :is="item.component" :item="item" @active="onActive" @remove="onRemove" />
29 </van-cell-group> 29 </van-cell-group>
30 <div v-if="formData.length && PCommit.visible" style="margin: 16px"> 30 <div v-if="formData.length && PCommit.visible" style="margin: 16px">
31 <van-button round block type="primary" native-type="submit" :disabled="submitStatus"> 31 <van-button round block type="primary" native-type="submit" :disabled="submitStatus">
...@@ -253,63 +253,129 @@ onMounted(async () => { ...@@ -253,63 +253,129 @@ onMounted(async () => {
253 // name : "name_41", 253 // name : "name_41",
254 // placeholder : "请输入", 254 // placeholder : "请输入",
255 // readonly : false, 255 // readonly : false,
256 - // required : false, 256 + // required : true,
257 // tag : "tree", 257 // tag : "tree",
258 // unique : false, 258 // unique : false,
259 // }); 259 // });
260 260
261 - // page_form.unshift({ 261 + page_form.unshift({
262 - // data_type : "text", 262 + data_type : "text",
263 - // default : "", 263 + default : "",
264 - // disabled : false, 264 + disabled : false,
265 - // field_id : 1414832, 265 + field_id : 1414832,
266 - // field_name : "field_4", 266 + field_name : "field_4",
267 - // index : 41, 267 + index : 41,
268 - // interaction_type : "h5edit", 268 + interaction_type : "h5edit",
269 - // label : "物品详情", 269 + label : "物品详情",
270 - // name : "name_41", 270 + name : "name_41",
271 - // placeholder : "请输入", 271 + placeholder : "请输入",
272 - // readonly : false, 272 + readonly : false,
273 - // required : false, 273 + required : false,
274 - // tag : "group", 274 + tag : "group",
275 - // unique : false, 275 + unique : false,
276 - // field_groups: [{ 276 + field_groups: [{
277 - // "tag": "input", 277 + "tag": "input",
278 - // "name": "input_21", 278 + "name": "input_21",
279 - // "index": 2, 279 + "index": 2,
280 - // "label": "物品描述", 280 + "label": "物品描述",
281 - // "unique": false, 281 + "unique": false,
282 - // "default": "", 282 + "default": "",
283 - // "disabled": false, 283 + "disabled": false,
284 - // "field_id": 7985071, 284 + "field_id": 7985071,
285 - // "readonly": false, 285 + "readonly": false,
286 - // "required": false, 286 + "required": false,
287 - // "data_type": "text", 287 + "data_type": "text",
288 - // "field_name": "field_21", 288 + "field_name": "field_10",
289 - // "placeholder": "请输入", 289 + "placeholder": "请输入",
290 - // "is_camera_scan": false, 290 + "is_camera_scan": false,
291 - // "camera_scan_type": "", 291 + "camera_scan_type": "",
292 - // "interaction_type": "h5edit", 292 + "interaction_type": "h5edit",
293 - // "is_edit_camera_scan_result": false, 293 + "is_edit_camera_scan_result": false,
294 - // "group_field_name" : "field_4", 294 + "group_field_name" : "field_4",
295 - // },{ 295 + },{
296 - // "tag": "name", 296 + "tag": "gender",
297 - // "name": "name_71", 297 + "name": "gender_3",
298 - // "index": 7, 298 + "note": "",
299 - // "label": "序列号", 299 + "index": 3,
300 - // "unique": false, 300 + "label": "性别",
301 - // "default": "", 301 + "options": [
302 - // "disabled": false, 302 + {
303 - // "field_id": 7995031, 303 + "title": "男",
304 - // "readonly": false, 304 + "value": "男",
305 - // "required": true, 305 + "checked": false,
306 - // "data_type": "text", 306 + "desc_url": "",
307 - // "field_name": "field_91", 307 + "is_input": false,
308 - // "placeholder": "请输入", 308 + "desc_text": "",
309 - // "interaction_type": "h5edit", 309 + "desc_type": "",
310 - // "group_field_name" : "field_4", 310 + "desc_btn_name": "",
311 - // },] 311 + "input_required": false,
312 - // }); 312 + "input_placeholder": "请输入补充信息"
313 + },
314 + {
315 + "title": "女",
316 + "value": "女",
317 + "checked": false,
318 + "desc_url": "",
319 + "is_input": false,
320 + "desc_text": "",
321 + "desc_type": "",
322 + "desc_btn_name": "",
323 + "input_required": false,
324 + "input_placeholder": "请输入补充信息"
325 + }
326 + ],
327 + "disabled": false,
328 + "field_id": 799603,
329 + "required": false,
330 + "data_type": "text",
331 + "direction": "vertical",
332 + "field_name": "field_4",
333 + "option_map": {
334 + "女": {
335 + "title": "女",
336 + "value": "女",
337 + "checked": false,
338 + "desc_url": "",
339 + "is_input": false,
340 + "desc_text": "",
341 + "desc_type": "",
342 + "desc_btn_name": "",
343 + "input_required": false,
344 + "input_placeholder": "请输入补充信息"
345 + },
346 + "男": {
347 + "title": "男",
348 + "value": "男",
349 + "checked": false,
350 + "desc_url": "",
351 + "is_input": false,
352 + "desc_text": "",
353 + "desc_type": "",
354 + "desc_btn_name": "",
355 + "input_required": false,
356 + "input_placeholder": "请输入补充信息"
357 + }
358 + },
359 + "interaction_type": "h5edit"
360 + },]
361 + });
362 +
363 + page_form.push({
364 + "tag": "name",
365 + "name": "name_2",
366 + "index": 2,
367 + "label": "姓名",
368 + "unique": false,
369 + "default": "",
370 + "disabled": false,
371 + "field_id": 799599,
372 + "readonly": false,
373 + "required": true,
374 + "data_type": "text",
375 + "field_name": "field_2",
376 + "placeholder": "请输入",
377 + "interaction_type": "h5edit"
378 + })
313 formData.value = formatData(page_form); 379 formData.value = formatData(page_form);
314 // TODO:再次提交测试, 需要获取原来表单数据 380 // TODO:再次提交测试, 需要获取原来表单数据
315 // formData.value.forEach((item) => { 381 // formData.value.forEach((item) => {
...@@ -645,6 +711,33 @@ const preValidData = (values) => { ...@@ -645,6 +711,33 @@ const preValidData = (values) => {
645 return _.assign(postData.value, rest_data); 711 return _.assign(postData.value, rest_data);
646 } 712 }
647 713
714 +const onRemove = (value) => { // 处理组件删除事件回调, 数据结构是二维数组,删除时返回被删除的一组数据
715 + value[0].forEach(item => {
716 + for (const key in postData.value) {
717 + if (item.key === key) {
718 + delete postData.value[key]; // 删除对应的键值对
719 + }
720 + }
721 + });
722 +}
723 +
724 +const adjGroupData = (values) => { // 调整group组件的数据结构
725 + // let obj = {
726 + // "field_10_group[0]_7653" : "1",
727 + // "field_10_group[1]_4154" : "11",
728 + // "field_11_group[0]_3440" : "2",
729 + // "field_11_group[1]_4282" : "22"
730 + // }
731 +
732 + // let arr = [{
733 + // "field_10": "1",
734 + // "field_11": "2",
735 + // }, {
736 + // "field_10": "11",
737 + // "field_11": "22",
738 + // }]
739 +}
740 +
648 const submitStatus = ref(false); 741 const submitStatus = ref(false);
649 742
650 const onSubmit = async (values) => { 743 const onSubmit = async (values) => {
......