Browse Source

多选效果实现v0.3

lwx_v8
liwenxuan 2 years ago
parent
commit
2e79ce20ca
  1. 161
      src/components/DesignForm/public/form/form.vue
  2. 7
      src/views/sysworkflow/lowcodepage/pageDesignes.vue

161
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;i<a_.length;i++){
a_[i] = a_[i]+""
}
//console.log(a_)
//console.log(b)
a_ = a_.sort();
b = b.sort();
//false
if (a_.length != b.length)
return false;
//
for (var i = 0; i < a_.length; ++i) {
if (a_[i] !== b[i])
return false;
}
return true;
}
interface hideFieldConditionArritem {
toShow:string
conditions: any[]
@ -180,6 +207,9 @@ const recursionToGetFinallyHideFields = (hideFieldArr: any[],radioSelectArr3: st
//key,value,
const hideFieldConditionArr:hideFieldConditionArritem[] = []
//
let hideFieldsFromCheckbox: string[] = []
for(let i = 0;i < hideFieldArr.length;i++){
hideFieldConditionArr.push({
@ -197,6 +227,22 @@ const recursionToGetFinallyHideFields = (hideFieldArr: any[],radioSelectArr3: st
console.log(j)
console.log(n) */
if(radioSelectArr3[i].toShowFieldKey[j]==hideFieldConditionArr[n].toShow){
if(Array.isArray(radioSelectArr3[i].conditionFieldValue)){
let valStr = "";
for(let x = 0;x<radioSelectArr3[i].conditionFieldValue.length;x++){
valStr = valStr+radioSelectArr3[i].conditionFieldValue[x]+","
}
hideFieldConditionArr[n].conditions.push({
conditionFrom:"radioOrSelect",//
condition:[{////conditionFieldconditionFieldValue,hideFieldConditionArr[n]
conditionField:radioSelectArr3[i].conditionFieldKey,
conditionFieldValue:valStr
}]
})
}else{
hideFieldConditionArr[n].conditions.push({
conditionFrom:"radioOrSelect",//
condition:[{////conditionFieldconditionFieldValue,hideFieldConditionArr[n]
@ -206,6 +252,7 @@ const recursionToGetFinallyHideFields = (hideFieldArr: any[],radioSelectArr3: st
})
}
}
}
}
}
@ -216,23 +263,34 @@ const recursionToGetFinallyHideFields = (hideFieldArr: any[],radioSelectArr3: st
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)
if(conditionFieldValue.includes(",")){//
//alert(conditionFieldValue)
let conditionFieldValueArr = conditionFieldValue.split(",")
conditionFieldValueArr = conditionFieldValueArr.slice(0, -1);
console.log(conditionFieldValueArr)
console.log(conditionFieldValue)
nextTick(()=>{
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==conditionFieldValue){
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;a<hideFieldConditionArr.length;a++){
@ -247,26 +305,71 @@ const recursionToGetFinallyHideFields = (hideFieldArr: any[],radioSelectArr3: st
}
}
}
if(flag==false){
x++
}
//alert(x)
hideFieldsFromCheckbox.push(toshow)
console.log(hideFieldArr)
for(let i = 0;i<hideFieldsFromCheckbox.length;i++){
alert(hideFieldsFromCheckbox[i])
hideFieldArr = hideFieldArr.filter((item: string) => item!=hideFieldsFromCheckbox[i])
//emits('refresh')
}
}
}
}else{//,
}
}
})
}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;a<hideFieldConditionArr.length;a++){
if(hideFieldConditionArr[a].toShow==conditionField){//conditions.length>1,=1.
for(let b = 0;b<hideFieldConditionArr[a].conditions.length;b++){
for(let c = 0;c<hideFieldConditionArr[a].conditions[b].condition.length;c++){
if(hideFieldConditionArr[a].conditions[b].condition[c]==conditionField){
//,.
console.log(1)
}
}
}
}
}
if(flag==false){
x++
}
}
}
}
}
}
if(x>0){
hideFieldArr = hideFieldArr.filter((item: string) => item!=toshow)
}
}
//
for(let i = 0; i< hideFieldArr.length;i++){
//console.log(i+"dsfafdasdfasfsda===="+hideFieldArr[i]+"=====jiuopfdsahokjuhuiofadshuiofadsjbknfdjisahuifhjken wij================"+model.value[hideFieldArr[i]])
@ -432,13 +535,16 @@ provide(constControlChange, ({ key, value, data, tProp, type, attribute }: any)
//radioSelectArr2,radioSelectArr2
if(checkboxShowConfigArr2.length>0){
for(let i = 0;i<checkboxShowConfigArr2.length;i++){
//console.log(i)
if(checkboxShowConfigArr2[i].length>0){
for(let j = 0;j<checkboxShowConfigArr2[i].length;j++){
//console.log(j)
//console.log(checkboxShowConfigArr2[i][j].showFields)
if(checkboxShowConfigArr2[i][j].showFields.length>0){
for(let n = 0; n<checkboxShowConfigArr2[i][j].showFields.length;n++){
let fieldKeyArr = checkboxShowConfigArr2[i][j].showFields[n].split(":")
let fieldKeyStr = fieldKeyArr[fieldKeyArr.length-1]
//alert(fieldKeyStr)
//console.log(fieldKeyStr)
radioSelectArr2.push({
toShowFieldKey:fieldKeyStr,
})
@ -450,6 +556,7 @@ provide(constControlChange, ({ key, value, data, tProp, type, attribute }: any)
}
}
//showFieldskey,optionValuevalue,radioselectArr3 ---
const radioSelectArr3:any[] = []
@ -490,8 +597,46 @@ provide(constControlChange, ({ key, value, data, tProp, type, attribute }: any)
}
}
}
//console.log(radioSelectShowConfigArr2)
console.log(radioSelectArr3)
//radioSelectArr3
if(checkboxShowConfigArr2.length>0){
for(let i = 0;i<checkboxShowConfigArr2.length;i++){
if( checkboxShowConfigArr2[i].length>0){
for(let j = 0;j<checkboxShowConfigArr2[i].length;j++){
//
const jArr = JSON.parse(JSON.stringify(checkboxShowConfigArr2[i][j]));
const optionValueJArr = jArr.selectedOptions
if(jArr.showFields!=undefined&&jArr.showFields.length>0){
if(jArr.showFields.length>1){
let arr1 = []
for(let n = 0;n<jArr.showFields.length;n++){
let fieldKeyArr = jArr.showFields[n].split(":")
let fieldKeyStr = fieldKeyArr[fieldKeyArr.length-1]
arr1.push(fieldKeyStr)
}
radioSelectArr3.push({
conditionFieldKey:jArr.conditionField,
conditionFieldValue:optionValueJArr,
toShowFieldKey:arr1,
})
}else{//1
for(let n = 0;n<jArr.showFields.length;n++){
let fieldKeyArr = jArr.showFields[n].split(":")
let fieldKeyStr = fieldKeyArr[fieldKeyArr.length-1]
radioSelectArr3.push({
conditionFieldKey:jArr.conditionField,
conditionFieldValue:optionValueJArr,
toShowFieldKey:[fieldKeyStr],
})
}
}
}
}
}
}
}
console.log(radioSelectArr3)
//使props.formData.config.hideField

7
src/views/sysworkflow/lowcodepage/pageDesignes.vue

@ -595,7 +595,11 @@ const formNameChanged = (param1: any)=>{
}
//liwenxuan bug: end
let index = ref(0)
function refreshFunc(){
index.value = index.value+1
}
</script>
<template>
@ -651,9 +655,12 @@ const formNameChanged = (param1: any)=>{
<form-design
v-if="state.previewVisible"
ref="previewForm"
:key="index"
:form-data="state.formDataPreview"
:dict="state.formDict"
:type="1"
@refresh="refreshFunc"
/>
<template #footer>
<div class="dialog-footer">

Loading…
Cancel
Save