Browse Source

关联表单增加支持放置在子表内

lwx_v10
liwenxuan 1 year ago
parent
commit
5d4c36b4ab
  1. 7
      src/components/DesignForm/assembly/index.ts
  2. 9
      src/components/DesignForm/public/form/childTable.vue
  3. 66
      src/components/DesignForm/public/form/formGroup.vue
  4. 2
      src/components/DesignForm/public/form/formItem.vue
  5. 5
      src/widget/associatedforms/associatedForms.vue
  6. 6
      src/widget/associatedforms/index.vue

7
src/components/DesignForm/assembly/index.ts

@ -942,11 +942,12 @@ export default [
config: {}, config: {},
styles: { styles: {
divStyle: { divStyle: {
marginBot: "15" marginBot: "15",
},
labelStyle: {
paddingLeft: "7", paddingLeft: "7",
}, },
/* labelStyle: {
paddingLeft: "7",
}, */
inputStyle: {} inputStyle: {}
} }
}, },

9
src/components/DesignForm/public/form/childTable.vue

@ -183,6 +183,14 @@ const timeToString = (timeVal:any,types:int) => {
return timeStr return timeStr
} }
let associatedFormsIndexTablekey = 0 let associatedFormsIndexTablekey = 0
const emits = defineEmits<{
(e: 'asfValueChanged', val: any): void
}>()
function asfValueChanged(val:any){
//console.log("childTable-asfValueChanged",val)
emits("asfValueChanged",val)
}
</script> </script>
<template> <template>
@ -226,6 +234,7 @@ let associatedFormsIndexTablekey = 0
:tProp="`${data.name}.${scope.$index}.${item.name}`" :tProp="`${data.name}.${scope.$index}.${item.name}`"
:row-index="scope.$index" :row-index="scope.$index"
:data="item" :data="item"
@asf-value-changed="asfValueChanged"
/> />
</div> </div>
</template> </template>

66
src/components/DesignForm/public/form/formGroup.vue

@ -461,11 +461,19 @@ function getNewObject(obj:any, arr:any) {
return {}; return {};
} }
function asfValueChanged(val:any){ function asfValueChanged(val:any){
/* console.log("asfValueChanged",val) /* console.log("formGroup-asfValueChanged",val)
console.log(val.currentVal) console.log(val.currentVal)
console.log(val.fillFieldsMaster) console.log(val.fillFieldsMaster)
console.log(val.fillFieldsChild) */ console.log(val.fillFieldsChild) */
//[key][props.rowIndex][key1]
/* console.log(val.tableFlag)
console.log(val.key)
console.log(val.propsRowIndex)
console.log(val.key1) */
let fillFieldsMaster = "" let fillFieldsMaster = ""
let masterFillRoleFieldsArray1: any[] = []; let masterFillRoleFieldsArray1: any[] = [];
@ -541,7 +549,7 @@ function asfValueChanged(val:any){
if(val.options[0].fillRolesFieldsMap){ if(val.options[0].fillRolesFieldsMap){
val.options.forEach((item:any)=>{ val.options.forEach((item:any)=>{
if(item.fillRolesFieldsMap.value == val.currentVal){ if(item.fillRolesFieldsMap.value == val.currentVal){
//console.log(masterFillRoleFieldsArray1)
if(masterFillRoleFieldsArray1.length>0){ if(masterFillRoleFieldsArray1.length>0){
masterFillRoleFieldsArray1.forEach((item1:any)=>{ masterFillRoleFieldsArray1.forEach((item1:any)=>{
//console.log(item.fillRolesFieldsMap) //console.log(item.fillRolesFieldsMap)
@ -553,6 +561,8 @@ function asfValueChanged(val:any){
if(isString(strOrNumber)&&strOrNumber.includes("[")){ if(isString(strOrNumber)&&strOrNumber.includes("[")){
strOrNumberOrArray = convertIfValidNumberArray(strOrNumber) strOrNumberOrArray = convertIfValidNumberArray(strOrNumber)
} }
/* console.log(strOrNumber)
console.log(strOrNumberOrArray) */
/* console.log(x[1]) /* console.log(x[1])
console.log(strOrNumberOrArray) console.log(strOrNumberOrArray)
@ -560,7 +570,27 @@ function asfValueChanged(val:any){
if(strOrNumberOrArray){ if(strOrNumberOrArray){
formProps.value.model[x[0]] = strOrNumberOrArray formProps.value.model[x[0]] = strOrNumberOrArray
}else{ }else{
formProps.value.model[x[0]] = strOrNumber /* console.log(x)
console.log(formProps.value.model)
console.log(val.tableFlag)
console.log(val.key)
console.log(val.propsRowIndex)
console.log(val.key1) */
if(val.tableFlag){
//console.log(formProps.value.model)
let urlArr = findPathInObject(formProps.value.model,x[0])
//console.log(urlArr)
if(urlArr[0]==x[0]){
formProps.value.model[x[0]] = strOrNumber
}else{
formProps.value.model[val.key][val.propsRowIndex][x[0]] = strOrNumber
}
}else{
formProps.value.model[x[0]] = strOrNumber
}
} }
//console.log(formProps.value.model[x[0]]) //console.log(formProps.value.model[x[0]])
@ -576,6 +606,34 @@ function asfValueChanged(val:any){
} }
} }
function findPathInObject(obj: any, target: string): string[] {
function search(obj: any, target: string, path: string[] = []): string[] | null {
if (typeof obj === "object" && obj!== null) {
for (let key in obj) {
let newPath = path.concat(key);
if (key === target) {
return newPath;
} else if (Array.isArray(obj[key])) {
for (let i = 0; i < obj[key].length; i++) {
let result = search(obj[key][i], target, newPath);
if (result) {
return result;
}
}
} else if (typeof obj[key] === "object" && obj[key]!== null) {
let result = search(obj[key], target, newPath);
if (result) {
return result;
}
}
}
}
return null;
}
return search(obj, target) || [];
}
interface DetailObject { interface DetailObject {
[key: string]: any [key: string]: any
} }
@ -774,7 +832,7 @@ function optionsValue3Get1(data: any,fieldName: string){
<form-group :data="element.list" data-type="not-table" /> <form-group :data="element.list" data-type="not-table" />
</div> </div>
<child-table v-else :data="element" /> <child-table v-else :data="element" @asf-value-changed="asfValueChanged"/>
</template> </template>
<!--格栅布局--> <!--格栅布局-->
<template v-else-if="element.type === 'grid'"> <template v-else-if="element.type === 'grid'">

2
src/components/DesignForm/public/form/formItem.vue

@ -900,7 +900,7 @@ const pickUserVal = (val:any) => {
function asfValueChanged(val:any){ function asfValueChanged(val:any){
//console.log("asfValueChanged",val) //console.log("formItem-asfValueChanged",val)
emits("asfValueChanged",val) emits("asfValueChanged",val)
} }
/** /**

5
src/widget/associatedforms/associatedForms.vue

@ -59,6 +59,7 @@ function hasTableProperty(obj: object): boolean {
onMounted(()=>{ onMounted(()=>{
if(props.data.control.formid!=null&&props.data.control.formid!=""){ if(props.data.control.formid!=null&&props.data.control.formid!=""){
getAsfDataTitles().then(({ data }) => { getAsfDataTitles().then(({ data }) => {
//console.log(data)
options.value = data options.value = data
value1.value = props.formProps.model[props.data.name] value1.value = props.formProps.model[props.data.name]
@ -76,7 +77,7 @@ onMounted(()=>{
tableFlag = true tableFlag = true
// //
//console.log(props.formProps.model[key][props.rowIndex][key1])
value2.value = props.formProps.model[key][props.rowIndex][key1] value2.value = props.formProps.model[key][props.rowIndex][key1]
} }
} }
@ -105,6 +106,7 @@ function asfValueChanged(){
fillFieldsChild:fillFieldsChild, fillFieldsChild:fillFieldsChild,
asfFormId:props.data.control.formid, asfFormId:props.data.control.formid,
glbbddbd:props.data.control.glbbddbd, glbbddbd:props.data.control.glbbddbd,
tableFlag:false,
} }
emits("valueChanged",val) emits("valueChanged",val)
@ -119,6 +121,7 @@ function asfValueChangedTable(){
fillFieldsChild:fillFieldsChild, fillFieldsChild:fillFieldsChild,
asfFormId:props.data.control.formid, asfFormId:props.data.control.formid,
glbbddbd:props.data.control.glbbddbd, glbbddbd:props.data.control.glbbddbd,
tableFlag:true,
} }
emits("valueChangedTable",val) emits("valueChangedTable",val)

6
src/widget/associatedforms/index.vue

@ -172,7 +172,7 @@ const valueChangedTable = (val: any) => {
//console.log("table--->", val) //console.log("table--->", val)
emits("asfValueChanged", val) //emits("asfValueChanged", val)
// //
@ -192,6 +192,10 @@ const valueChangedTable = (val: any) => {
console.log(formProps.value.model[key][props.rowIndex][key1]) console.log(formProps.value.model[key][props.rowIndex][key1])
console.log(val.currentVal) */ console.log(val.currentVal) */
formProps.value.model[key][props.rowIndex][key1] = val.currentVal formProps.value.model[key][props.rowIndex][key1] = val.currentVal
val.key = key
val.propsRowIndex = props.rowIndex
val.key1 = key1
emits("asfValueChanged", val)
} }
} }
} }

Loading…
Cancel
Save