Browse Source

关联选项设置优化:根据显示条件满足的数量来实现显示隐藏

lwx_v8
liwenxuan 2 years ago
parent
commit
17531a8f39
  1. 115
      src/components/DesignForm/public/form/form.vue

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

@ -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)
//radioSelectArr3radioSelectArr3 [ i ] . toshowFieldKey i==hideFieldArri
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:[{////conditionFieldconditionFieldValue,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)
}

Loading…
Cancel
Save