diff --git a/src/components/DesignForm/public/form/form.vue b/src/components/DesignForm/public/form/form.vue index 51f0119de..378be8697 100644 --- a/src/components/DesignForm/public/form/form.vue +++ b/src/components/DesignForm/public/form/form.vue @@ -7,6 +7,7 @@ import '@/assets/scss/element-var.scss' import '@/assets/scss/index.scss' import FormGroup from './formGroup.vue' + import { FormData,FormList,FormDataStyle } from '@/api/DesignForm/types' import { getRequest } from '@/api/DesignForm' import { useRoute, useRouter } from 'vue-router' @@ -75,12 +76,14 @@ const props = withDefaults( type:Boolean, default:true }, + key:1 } ) const emits = defineEmits<{ (e: 'btnClick', type: string): void (e: 'change', val: any): void // 表单组件值发生变化时 (e: 'update:issave', type: boolean): void + (e: 'refresh'): void }>() const route = useRoute() const router = useRouter() @@ -170,6 +173,30 @@ const forEachGetFormModel = (list: FormList[], obj: any) => { }) } +function arrayEqual(a: string[], b: any[]) { + //alert("开始比较") + //先将数组排序 + let a_ = JSON.parse(JSON.stringify(a)); + for(let i = 0;i1说明时多选,=1说明是单选. - for(let b = 0;b{ + for(let n = 0; n< modelKeyArr.length;n++){ + if(modelKeyArr[n]==conditionField){ + let count_1 = 0; + let trueValue = model.value[modelKeyArr[n]] + //alert(trueValue) + console.log(trueValue.length) + //console.log(modelKeyArr[n]) + //console.log(trueValue) + if(trueValue.length>0&&arrayEqual(trueValue,conditionFieldValueArr)){ + //此时满足了条件,但是必须看一下conditionField有没有被隐藏.如果被隐藏了,则x不能增加. + //alert("多选条件成功触发") + console.log(conditionField) + console.log(toshow) + let flag = false//其依赖的选项的父字段是否被隐藏.默认没被隐藏, + //如果此时的conditionField有可能被隐藏且已被隐藏,x不能++ + for(let a = 0;a1说明时多选,=1说明是单选. + for(let b = 0;b item!=hideFieldsFromCheckbox[i]) + //emits('refresh') + } + } } } - if(flag==false){ - x++ + } + }) + + + + + }else{ + console.log(conditionFieldValue) + for(let n = 0; n< modelKeyArr.length;n++){ + if(modelKeyArr[n]==conditionField){ + let count_1 = 0; + let trueValue = model.value[modelKeyArr[n]] + //console.log(modelKeyArr[n]) + //console.log(trueValue) + if(trueValue==conditionFieldValue){ + //此时满足了条件,但是必须看一下conditionField有没有被隐藏.如果被隐藏了,则x不能增加. + + let flag = false//其依赖的选项的父字段是否被隐藏.默认没被隐藏, + //如果此时的conditionField有可能被隐藏且已被隐藏,x不能++ + for(let a = 0;a1说明时多选,=1说明是单选. + for(let b = 0;b0){ - hideFieldArr = hideFieldArr.filter((item: string) => item!=toshow) } } + //将隐藏的字段值重置 for(let i = 0; i< hideFieldArr.length;i++){ @@ -432,13 +535,16 @@ provide(constControlChange, ({ key, value, data, tProp, type, attribute }: any) //将出现在多选配置中的字段放入radioSelectArr2,radioSelectArr2是未去重的所有可能被隐藏的字段 if(checkboxShowConfigArr2.length>0){ for(let i = 0;i0){ for(let j = 0;j0){ for(let n = 0; n0){ + for(let i = 0;i0){ + for(let j = 0;j0){ + if(jArr.showFields.length>1){ + let arr1 = [] + for(let n = 0;n{ } //liwenxuan 关联选项设置 修复bug:当字段标识改变时,关联选项设置的字段标识未同步更改 end +let index = ref(0) +function refreshFunc(){ + index.value = index.value+1 +}