fix radio group paste
This commit is contained in:
@@ -1720,7 +1720,6 @@ export default {
|
|||||||
const areaCopy = JSON.parse(JSON.stringify(area))
|
const areaCopy = JSON.parse(JSON.stringify(area))
|
||||||
|
|
||||||
delete fieldCopy.areas
|
delete fieldCopy.areas
|
||||||
delete fieldCopy.uuid
|
|
||||||
delete fieldCopy.submitter_uuid
|
delete fieldCopy.submitter_uuid
|
||||||
|
|
||||||
areaCopy.relativeX = area.x - minX
|
areaCopy.relativeX = area.x - minX
|
||||||
@@ -1839,6 +1838,9 @@ export default {
|
|||||||
|
|
||||||
const newAreas = []
|
const newAreas = []
|
||||||
|
|
||||||
|
const fieldUuidIndex = {}
|
||||||
|
const fieldOptionsMap = {}
|
||||||
|
|
||||||
data.items.forEach((item) => {
|
data.items.forEach((item) => {
|
||||||
const field = JSON.parse(JSON.stringify(item.field))
|
const field = JSON.parse(JSON.stringify(item.field))
|
||||||
const area = JSON.parse(JSON.stringify(item.area))
|
const area = JSON.parse(JSON.stringify(item.area))
|
||||||
@@ -1859,29 +1861,39 @@ export default {
|
|||||||
delete newArea.relativeX
|
delete newArea.relativeX
|
||||||
delete newArea.relativeY
|
delete newArea.relativeY
|
||||||
|
|
||||||
const newField = {
|
const newField = fieldUuidIndex[field.uuid] || {
|
||||||
...field,
|
...field,
|
||||||
uuid: v4(),
|
uuid: v4(),
|
||||||
submitter_uuid: this.selectedSubmitter.uuid,
|
submitter_uuid: this.selectedSubmitter.uuid,
|
||||||
areas: [newArea]
|
areas: []
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fieldUuidIndex[field.uuid] = newField
|
||||||
|
|
||||||
|
newField.areas.push(newArea)
|
||||||
|
newAreas.push(newArea)
|
||||||
|
|
||||||
if (['radio', 'multiple'].includes(field.type) && field.options?.length) {
|
if (['radio', 'multiple'].includes(field.type) && field.options?.length) {
|
||||||
const oldOptionUuid = area.option_uuid
|
const oldOptionUuid = area.option_uuid
|
||||||
const optionsMap = {}
|
|
||||||
|
|
||||||
newField.options = field.options.map((opt) => {
|
if (!fieldOptionsMap[field.uuid]) {
|
||||||
const newUuid = v4()
|
fieldOptionsMap[field.uuid] = {}
|
||||||
optionsMap[opt.uuid] = newUuid
|
|
||||||
|
|
||||||
return { ...opt, uuid: newUuid }
|
newField.options = field.options.map((opt) => {
|
||||||
})
|
const newUuid = v4()
|
||||||
|
|
||||||
newArea.option_uuid = optionsMap[oldOptionUuid] || newField.options[0].uuid
|
fieldOptionsMap[field.uuid][opt.uuid] = newUuid
|
||||||
|
|
||||||
|
return { ...opt, uuid: newUuid }
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
newArea.option_uuid = fieldOptionsMap[field.uuid][oldOptionUuid] || newField.options[0].uuid
|
||||||
}
|
}
|
||||||
|
})
|
||||||
|
|
||||||
this.insertField(newField)
|
Object.values(fieldUuidIndex).forEach((field) => {
|
||||||
newAreas.push(newArea)
|
this.insertField(field)
|
||||||
})
|
})
|
||||||
|
|
||||||
this.selectedAreasRef.value = [...newAreas]
|
this.selectedAreasRef.value = [...newAreas]
|
||||||
|
|||||||
Reference in New Issue
Block a user