|
|
|
@ -358,16 +358,90 @@ provide(constControlChange, ({ key, value, data, tProp, type, attribute }: any) |
|
|
|
hideFieldArr = Array.from(new Set(hideFieldArr)) |
|
|
|
|
|
|
|
nextTick(() => { |
|
|
|
console.log("以showFields的处理过冒号的每个元素为key,其对应的optionValue为value,新建的数组radioselectArr3 --- 内容为完整显示隐藏条件") |
|
|
|
console.log(radioSelectArr3) |
|
|
|
console.log("当前表单的值-------------------") |
|
|
|
console.log(model.value) |
|
|
|
let modelKeyArr = []; |
|
|
|
console.log("默认隐藏的字段-----------------") |
|
|
|
console.log(hideFieldArr) |
|
|
|
let modelKeyArr = [];//所有字段 |
|
|
|
for(let i= 0;i<props.formData.list.length;i++){ |
|
|
|
modelKeyArr.push(props.formData.list[i].name+"") |
|
|
|
} |
|
|
|
console.log("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^"+modelKeyArr) |
|
|
|
console.log("所有字段modelKeyArr^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^") |
|
|
|
console.log(modelKeyArr) |
|
|
|
//以被默认隐藏的每个字段为key,显示该字段的所有条件的数组作为value作为该数组的每一项。 |
|
|
|
const hideFieldConditionArr:hideFieldConditionArritem[] = [] |
|
|
|
|
|
|
|
interface hideFieldConditionArritem { |
|
|
|
toShow:string |
|
|
|
conditions: any[] |
|
|
|
} |
|
|
|
for(let i = 0;i < hideFieldArr.length;i++){ |
|
|
|
hideFieldConditionArr.push({ |
|
|
|
toShow:hideFieldArr[i], |
|
|
|
conditions:[], |
|
|
|
}) |
|
|
|
} |
|
|
|
console.log(hideFieldConditionArr) |
|
|
|
//遍历所有配置条件数组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++){ |
|
|
|
/* console.log(i) |
|
|
|
console.log(j) |
|
|
|
console.log(n) */ |
|
|
|
if(radioSelectArr3[i].toShowFieldKey[j]==hideFieldConditionArr[n].toShow){ |
|
|
|
hideFieldConditionArr[n].conditions.push({ |
|
|
|
conditionFrom:"radioOrSelect",//本条件来自于单选或者下拉 |
|
|
|
condition:[{//条件详细信息//当表单字段conditionField的值为conditionFieldValue时,显示hideFieldConditionArr[n] |
|
|
|
conditionField:radioSelectArr3[i].conditionFieldKey, |
|
|
|
conditionFieldValue:radioSelectArr3[i].conditionFieldValue// |
|
|
|
}] |
|
|
|
}) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
console.log(hideFieldConditionArr); |
|
|
|
for(let i = 0;i<hideFieldConditionArr.length;i++){ |
|
|
|
let x = 0//满足显示条件的次数 |
|
|
|
let toshow = hideFieldConditionArr[i].toShow |
|
|
|
let conditions = hideFieldConditionArr[i].conditions |
|
|
|
//console.log(conditions) |
|
|
|
for(let j = 0;j<conditions.length;j++){ |
|
|
|
if(conditions[j].conditionFrom == "radioOrSelect"){//本条件来自于单选或者下拉,其只有一项 |
|
|
|
let conditionField = conditions[j].condition[0].conditionField |
|
|
|
let conditionFieldValue = conditions[j].condition[0].conditionFieldValue |
|
|
|
console.log(conditionField) |
|
|
|
console.log(conditionFieldValue) |
|
|
|
for(let n = 0; n< modelKeyArr.length;n++){ |
|
|
|
if(modelKeyArr[n]==conditionField){ |
|
|
|
let trueValue = model.value[modelKeyArr[n]] |
|
|
|
//console.log(modelKeyArr[n]) |
|
|
|
//console.log(trueValue) |
|
|
|
if(trueValue==conditionFieldValue){ |
|
|
|
x++ |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
}else{//本条件来自于多选,其可能有多项 |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
if(x>0){ |
|
|
|
alert(x) |
|
|
|
hideFieldArr = hideFieldArr.filter(item => item!=toshow) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//根据条件的生效情况从隐藏数组中过滤字段 |
|
|
|
/* //根据条件的生效情况从隐藏数组中过滤字段 |
|
|
|
for(let i = 0;i< radioSelectArr3.length;i++){ |
|
|
|
for(let j = 0; j< modelKeyArr.length;j++){ |
|
|
|
|
|
|
|
@ -394,14 +468,45 @@ provide(constControlChange, ({ key, value, data, tProp, type, attribute }: any) |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} */ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* 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++){ |
|
|
|
console.log(i+"dsfafdasdfasfsda===="+hideFieldArr[i]+"=====jiuopfdsahokjuhuiofadshuiofadsjbknfdjisahuifhjken wij================"+model.value[hideFieldArr[i]]) |
|
|
|
//console.log(i+"dsfafdasdfasfsda===="+hideFieldArr[i]+"=====jiuopfdsahokjuhuiofadshuiofadsjbknfdjisahuifhjken wij================"+model.value[hideFieldArr[i]]) |
|
|
|
if(typeof model.value[hideFieldArr[i]] === "string" || typeof model.value[hideFieldArr[i]] === "number"){ |
|
|
|
model.value[hideFieldArr[i]] = "" |
|
|
|
}else if( model.value[hideFieldArr[i]] instanceof Array){ |
|
|
|
model.value[hideFieldArr[i]] = [] |
|
|
|
} |
|
|
|
} |
|
|
|
console.log(hideFieldArr) |
|
|
|
//编辑表单页不隐藏任何字段。 |
|
|
|
if(formProps.value.type!=5){ |
|
|
|
props.formData.config.hideField?.push(...hideFieldArr) |
|
|
|
} |
|
|
|
|