From 90e4f87940714c95d9a9163b60bacceef5d7fb30 Mon Sep 17 00:00:00 2001 From: liwenxuan <1298531568@qq.com> Date: Tue, 21 May 2024 13:05:16 +0800 Subject: [PATCH] v0.5 --- .../DesignForm/public/form/form.vue | 99 +++++++------------ 1 file changed, 37 insertions(+), 62 deletions(-) diff --git a/src/components/DesignForm/public/form/form.vue b/src/components/DesignForm/public/form/form.vue index 07f048d30..e5a253122 100644 --- a/src/components/DesignForm/public/form/form.vue +++ b/src/components/DesignForm/public/form/form.vue @@ -351,11 +351,13 @@ provide(constControlChange, ({ key, value, data, tProp, type, attribute }: any) //暂时使用的隐藏数组,数据敲定后赋给props.formData.config.hideField let hideFieldArr: any[] = []; + //但凡配置条件的字段先放入隐藏数组中 for(let i = 0;i< radioSelectArr2.length;i++){ hideFieldArr.push(radioSelectArr2[i].toShowFieldKey) } hideFieldArr = Array.from(new Set(hideFieldArr)) + const defaultHideFields: any[] = JSON.parse(JSON.stringify(hideFieldArr)) nextTick(() => { console.log("以showFields的处理过冒号的每个元素为key,其对应的optionValue为value,新建的数组radioselectArr3 --- 内容为完整显示隐藏条件") @@ -370,7 +372,7 @@ provide(constControlChange, ({ key, value, data, tProp, type, attribute }: any) } console.log("所有字段modelKeyArr^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^") console.log(modelKeyArr) - //以被默认隐藏的每个字段为key,显示该字段的所有条件的数组作为value作为该数组的每一项。 + //以被默认隐藏的每个字段为key,显示该字段的所有条件的数组作为value,来作为该数组的每一项。 const hideFieldConditionArr:hideFieldConditionArritem[] = [] interface hideFieldConditionArritem { @@ -384,8 +386,8 @@ provide(constControlChange, ({ key, value, data, tProp, type, attribute }: any) }) } console.log(hideFieldConditionArr) - //遍历所有配置条件数组radioSelectArr3,当radioSelectArr3 [ i ] . toshowFieldKey 【i】==hideFieldArr【i】时 + //遍历所有配置条件数组radioSelectArr3,当radioSelectArr3 [ i ] . toshowFieldKey 【i】==hideFieldArr【i】时 for(let i = 0;i < radioSelectArr3.length;i++){ for(let j = 0;j < radioSelectArr3[i].toShowFieldKey.length;j++){ for(let n = 0;n < hideFieldConditionArr.length;n++){ @@ -406,8 +408,11 @@ provide(constControlChange, ({ key, value, data, tProp, type, attribute }: any) } } console.log(hideFieldConditionArr); + //要显示的和其满足显示条件的个数. + //let showfieldsCountX = []; for(let i = 0;i0){ - alert(x) + /* showfieldsCountX.push({ + count:x, + field:toshow, + conditionField: + }) */ + //alert(x) hideFieldArr = hideFieldArr.filter(item => item!=toshow) } } - - - - - /* //根据条件的生效情况从隐藏数组中过滤字段 - for(let i = 0;i< radioSelectArr3.length;i++){ - for(let j = 0; j< modelKeyArr.length;j++){ - - if(modelKeyArr[j]==radioSelectArr3[i].conditionFieldKey){ - //console.log("当前:字段标识modelKeyArr[j]========="+modelKeyArr[j]+"字段标识modelKeyArr[j]的值===="+model.value[modelKeyArr[j]]) - //console.log("规则:字段标识radioSelectArr3[i].conditionFieldKey========="+radioSelectArr3[i].conditionFieldKey+"conditionFieldValue的值======"+radioSelectArr3[i].conditionFieldValue) - - - //作为条件的字段的设定条件值等于其当前的值 - if(radioSelectArr3[i].conditionFieldValue == model.value[modelKeyArr[j]]){ - console.log("当前的值==="+model.value[modelKeyArr[j]]) - console.log("modelKeyArr[j]==="+modelKeyArr[j]) - console.log("作为条件的字段的设定条件值radioSelectArr3[i]==="+radioSelectArr3[i].conditionFieldValue) - console.log(radioSelectArr3[i].toShowFieldKey) - //hideFieldArr = hideFieldArr.filter( item => radioSelectArr3[i].toShowFieldKey.find((bItem: any) => item != bItem)) - for(let n = 0; n < hideFieldArr.length; n++){ - for(let m = 0; m < radioSelectArr3[i].toShowFieldKey.length; m++){ - if(hideFieldArr[n] == radioSelectArr3[i].toShowFieldKey[m]){ - hideFieldArr.splice(n,1); - } - } - } - - } - } - } - } */ - - - - /* const radioSelectArr4:any[] = [] - //联动隐藏效果实现 - for(let i = 0;i < radioSelectArr3.length;i++){ - //console.log(radioSelectArr3[i].conditionFieldKey) - for(let j = 0;j < hideFieldArr.length;j++){ - //目前隐藏掉的字段中,找出涉及到隐藏条件conditionFieldKey的,放入radioSelectArr4 - if(radioSelectArr3[i].conditionFieldKey == hideFieldArr[j]){ - - console.log("radioSelectArr3[i].conditionFieldKey============="+radioSelectArr3[i].conditionFieldKey) - console.log("hideFieldArr[j]=================================="+hideFieldArr[j]) - radioSelectArr4.push(radioSelectArr3[i]) - console.log("radioSelectArr3[i]============="+JSON.stringify(radioSelectArr3[i])) - } - } - } - console.log(radioSelectArr4) - for(let i = 0;i < radioSelectArr4.length;i++){ - //本次隐藏掉的字段中,涉及到隐藏条件conditionFieldKey的 - // - console.log("radioSelectArr4[i]============="+JSON.stringify(radioSelectArr4[i])) - } */ - - - console.log("条件筛选过后最终要隐藏的字段-----"+hideFieldArr) //将隐藏的字段值重置 for(let i = 0; i< hideFieldArr.length;i++){ @@ -506,6 +460,27 @@ provide(constControlChange, ({ key, value, data, tProp, type, attribute }: any) model.value[hideFieldArr[i]] = [] } } + + + //默认隐藏的字段中目前被显示出来的 + let nowShowingDefaultHideFieldArr = defaultHideFields.filter(a => !hideFieldArr.includes(a)) + console.log("(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))") + console.log(nowShowingDefaultHideFieldArr) + //for(let i = 0;i< nowShowingDefaultHideFieldArr.length; i++){ + //当被显示出来的字段涉及到的conditionfield已经被隐藏了时,其x应-1,如果x-1后造成该field被隐藏,应递归重新敲定hideFieldArr + //if() + //} + + + + + + + + + console.log("条件筛选过后最终要隐藏的字段-----"+hideFieldArr) + + //编辑表单页不隐藏任何字段。 if(formProps.value.type!=5){ props.formData.config.hideField?.push(...hideFieldArr)