Browse Source

关联选项设置嵌套在布局字段内时不生效bug修复

lwx_v5
liwenxuan 1 year ago
parent
commit
f345c851e8
  1. 1
      src/api/DesignForm/types.ts
  2. 113
      src/components/DesignForm/public/form/form.vue

1
src/api/DesignForm/types.ts

@ -1,4 +1,5 @@
export interface FormList { export interface FormList {
list?: any
name: string name: string
type: string type: string
control: any // 当前type表单控件所有props control: any // 当前type表单控件所有props

113
src/components/DesignForm/public/form/form.vue

@ -215,6 +215,7 @@ const recursionToGetFinallyHideFields = (hideFieldArr: any[],radioSelectArr3: st
nextTick(() => { nextTick(() => {
//console.log(model.value)
/* console.log("showFieldskey,optionValuevalue,radioselectArr3 --- ") /* console.log("showFieldskey,optionValuevalue,radioselectArr3 --- ")
console.log(radioSelectArr3) console.log(radioSelectArr3)
console.log("当前表单的值-------------------") console.log("当前表单的值-------------------")
@ -225,6 +226,9 @@ const recursionToGetFinallyHideFields = (hideFieldArr: any[],radioSelectArr3: st
for(let i= 0;i<props.formData.list.length;i++){ for(let i= 0;i<props.formData.list.length;i++){
modelKeyArr.push(props.formData.list[i].name+"") modelKeyArr.push(props.formData.list[i].name+"")
} }
modelKeyArr = newModelKeyArr
//console.log(modelKeyArr)
/* console.log("modelKeyArr^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^") /* console.log("modelKeyArr^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^")
console.log(modelKeyArr) */ console.log(modelKeyArr) */
@ -341,13 +345,16 @@ const recursionToGetFinallyHideFields = (hideFieldArr: any[],radioSelectArr3: st
} }
} }
}else{// }else{//
//console.log(conditionFieldValue) //console.log(modelKeyArr)
for(let n = 0; n< modelKeyArr.length;n++){ for(let n = 0; n< modelKeyArr.length;n++){
if(modelKeyArr[n]==conditionField){ if(modelKeyArr[n]==conditionField){
//let count_1 = 0; //let count_1 = 0;
let trueValue = model.value[modelKeyArr[n]] let trueValue = model.value[modelKeyArr[n]]
//console.log(modelKeyArr[n]) //console.log(modelKeyArr[n])
//console.log(trueValue) /* console.log("conditionField====="+conditionField)
console.log("trueValue====="+trueValue)
console.log("conditionFieldValue-----"+conditionFieldValue) */
if(trueValue==conditionFieldValue){ if(trueValue==conditionFieldValue){
//,conditionField.,x. //,conditionField.,x.
let flag = false//., let flag = false//.,
@ -372,9 +379,11 @@ const recursionToGetFinallyHideFields = (hideFieldArr: any[],radioSelectArr3: st
} }
} }
} }
//console.log(x,hideFieldArr,toshow)
if(x>0){ if(x>0){
hideFieldArr = hideFieldArr.filter((item: string) => item!=toshow) hideFieldArr = hideFieldArr.filter((item: string) => item!=toshow)
} }
//console.log(x,hideFieldArr)
} }
// //
for(let i = 0; i< hideFieldArr.length;i++){ for(let i = 0; i< hideFieldArr.length;i++){
@ -541,6 +550,8 @@ provide(constControlChange, ({ key, value, data, tProp, type, attribute }: any)
*/ */
}) })
let mustBeHidden: any = [] let mustBeHidden: any = []
let newModelKeyArr: string[] = []
function showOrHide (data:any){ function showOrHide (data:any){
//console.log(data) //console.log(data)
@ -734,21 +745,97 @@ function showOrHide (data:any){
const switchShowConfigArr = [] const switchShowConfigArr = []
//showFieldskey,optionValuevalue,radioselectArr2---- //showFieldskey,optionValuevalue,radioselectArr2----
const radioSelectArr2:any[] = [] const radioSelectArr2:any[] = []
//20240815 liwenxuan start
//console.log(props.formData.list) newModelKeyArr
for(let i = 0;i<props.formData.list.length;i++){ for(let i = 0;i<props.formData.list.length;i++){
if(props.formData.list[i].type=="radio"||props.formData.list[i].type=="select"||props.formData.list[i].type=="checkbox"||props.formData.list[i].type=="switch"){ if(props.formData.list[i].type=="radio"||props.formData.list[i].type=="select"||props.formData.list[i].type=="checkbox"||props.formData.list[i].type=="switch"){
props.formData.config.hideField = []; props.formData.config.hideField = [];
if(props.formData.list[i].type=="radio"||props.formData.list[i].type=="select"){
radioSelectShowConfigArr.push(props.formData.list[i].control.glxxsz)
}else if(props.formData.list[i].type=="checkbox"){
checkboxShowConfigArr.push(props.formData.list[i].control.glxxszForCheckBox)
}else if(props.formData.list[i].type=="switch"){
switchShowConfigArr.push(props.formData.list[i].control.glxxszSwitch)
}
}else if(props.formData.list[i].type=="card"||props.formData.list[i].type=="flex"||props.formData.list[i].type=="div"||props.formData.list[i].type=="table"){
props.formData.config.hideField = [];
let a = JSON.parse(JSON.stringify(props.formData.list[i].list));
for(let w = 0;w<a.length;w++){
if(a[w].type=="radio"||a[w].type=="select"){
//console.log(a[w])
radioSelectShowConfigArr.push(a[w].control.glxxsz)
}else if(a[w].type=="checkbox"){
checkboxShowConfigArr.push(a[w].control.glxxszForCheckBox)
}else if(a[w].type=="switch"){
switchShowConfigArr.push(a[w].control.glxxszSwitch)
}
newModelKeyArr.push(a[w].name)
}
}else if(props.formData.list[i].type=="grid"){
props.formData.config.hideField = [];
let columns = JSON.parse(JSON.stringify(props.formData.list[i].columns));
if(columns.length>0){
for(let z = 0;z<columns.length;z++){
for(let x = 0; x<columns[z].list.length;x++){
let a = JSON.parse(JSON.stringify(columns[z].list[x]));
if(a.type=="radio"||a.type=="select"){
radioSelectShowConfigArr.push(a.control.glxxsz)
}else if(a.type=="checkbox"){
checkboxShowConfigArr.push(a.control.glxxszForCheckBox)
}else if(a.type=="switch"){
switchShowConfigArr.push(a.control.glxxszSwitch)
}
newModelKeyArr.push(a.name)
}
}
}
}else if(props.formData.list[i].type=="tabs"){//tabsflextable
props.formData.config.hideField = [];
let columns = JSON.parse(JSON.stringify(props.formData.list[i].columns));
if(columns.length>0){
for(let z = 0;z<columns.length;z++){
for(let x = 0; x<columns[z].list.length;x++){
let a = JSON.parse(JSON.stringify(columns[z].list[x]));
if(a.type=="radio"||a.type=="select"){
radioSelectShowConfigArr.push(a.control.glxxsz)
}else if(a.type=="checkbox"){
checkboxShowConfigArr.push(a.control.glxxszForCheckBox)
}else if(a.type=="switch"){
switchShowConfigArr.push(a.control.glxxszSwitch)
}else if(a.type=="flex"||a.type=="table"){
if(a.list.length>0){
for(let m = 0;m<a.list.length;m++){
let q = JSON.parse(JSON.stringify(a.list[m]))
//console.log(q)
if(q.type=="radio"||q.type=="select"){
radioSelectShowConfigArr.push(q.control.glxxsz)
}else if(q.type=="checkbox"){
checkboxShowConfigArr.push(q.control.glxxszForCheckBox)
}else if(q.type=="switch"){
switchShowConfigArr.push(q.control.glxxszSwitch)
}
newModelKeyArr.push(q.name)
}
}
}
newModelKeyArr.push(a.name)
}
}
}
} }
//console.log(props.formData.list[i].type) newModelKeyArr.push(props.formData.list[i].name)
if(props.formData.list[i].type=="radio"||props.formData.list[i].type=="select"){
radioSelectShowConfigArr.push(props.formData.list[i].control.glxxsz)
}else if(props.formData.list[i].type=="checkbox"){
checkboxShowConfigArr.push(props.formData.list[i].control.glxxszForCheckBox)
}else if(props.formData.list[i].type=="switch"){
switchShowConfigArr.push(props.formData.list[i].control.glxxszSwitch)
}
} }
newModelKeyArr = Array.from(new Set(newModelKeyArr));
//20240815 liwenxuan end
//console.log(radioSelectShowConfigArr)
// //
const radioSelectShowConfigArr2 = JSON.parse(JSON.stringify(radioSelectShowConfigArr)); const radioSelectShowConfigArr2 = JSON.parse(JSON.stringify(radioSelectShowConfigArr));
const checkboxShowConfigArr2 = JSON.parse(JSON.stringify(checkboxShowConfigArr)); const checkboxShowConfigArr2 = JSON.parse(JSON.stringify(checkboxShowConfigArr));
@ -957,7 +1044,7 @@ function showOrHide (data:any){
//console.log(props.formData.config.hideField)

Loading…
Cancel
Save