diff --git a/src/components/mdp-ui/js/treeTool.js b/src/components/mdp-ui/js/treeTool.js
index 3f53b26..16b2f6c 100644
--- a/src/components/mdp-ui/js/treeTool.js
+++ b/src/components/mdp-ui/js/treeTool.js
@@ -85,6 +85,12 @@ export default {
* @returns
*/
translateDataToTree: function(data2,pidName,idName,rowCallBack) {
+ if(!pidName){
+ pidName='pid'
+ }
+ if(!idName){
+ idName='id'
+ }
var data=JSON.parse(JSON.stringify(data2));
let parents = data.filter(value =>{
//如果我的上级为空,则我是最上级
diff --git a/src/views/mdp/form/formDef/Form.vue b/src/views/mdp/form/formDef/Form.vue
index a978816..0b0905c 100644
--- a/src/views/mdp/form/formDef/Form.vue
+++ b/src/views/mdp/form/formDef/Form.vue
@@ -181,14 +181,14 @@ export default {
this.$notify({position:'bottom-left',showClose:true,message: '表单名称不能为空', type: 'error' });
return;
}
- var formFields=this.$refs.formFields.selectedFields;
+ var formFields=this.$refs.formFields.getFieldList();
if(formFields.length==0 ){
this.$notify({position:'bottom-left',showClose:true,message: '最少需要定义一个字段', type: 'error' });
return;
}
-
- if(formFields.length>15){
- this.$notify({position:'bottom-left',showClose:true,message: '最多支持15个字段', type: 'error' });
+ var max=this.$refs.formFields.getMaxFields();
+ if(formFields.length>max){
+ this.$notify({position:'bottom-left',showClose:true,message: '最多支持'+max+'个字段', type: 'error' });
return;
}
this.$confirm('确认提交吗?', '提示', {}).then(() => {
diff --git a/src/views/mdp/form/formField/Field.vue b/src/views/mdp/form/formField/Field.vue
index 4f10f3c..59ad7eb 100644
--- a/src/views/mdp/form/formField/Field.vue
+++ b/src/views/mdp/form/formField/Field.vue
@@ -3,12 +3,12 @@
- onChildChange(child,v)" @delete="onChildDelete" :sample="sample">
+ onChildChange(child,v)" @delete="onChildDelete" :sample="sample">
-
+
- onChildChange(child,v)" @delete="onChildDelete">
+ onChildChange(child,v)" @delete="onChildDelete">
@@ -152,6 +152,20 @@
sample:{
type:Boolean,
default:false
+ },
+ hasChild:{
+ type:Function,
+ default:function(){
+ return null;
+ }
+ },
+ findNotInChild:{
+ type:Function,
+ default:function(){
+ return (excludeId)=>{
+ return null;
+ };
+ }
}
},
watch: {
@@ -231,7 +245,28 @@
}else{
return this.span
}
- }
+ },
+
+ onAdd(evt){
+ debugger;
+ let item=this.field.children[evt.newIndex];
+ item.isNewAdd=true
+ var item2=JSON.parse(JSON.stringify(item))
+ var noSelectFieldId=this.findNotInChild()
+ debugger;
+ if(!noSelectFieldId){
+ this.field.children.splice(evt.newIndex,1)
+ this.$notify.error('当前组件已经超过最大数量,不能再添加');
+ return;
+ }
+ item2.id=noSelectFieldId.id
+ item2.fieldId=noSelectFieldId.fieldId
+ item2.fieldIdCamel=noSelectFieldId.fieldIdCamel
+ delete item.isNewAdd
+ this.selectedFields[evt.newIndex]=item2;
+ this.addForm=item2;
+
+ },
},//end method
components: {
diff --git a/src/views/mdp/form/formField/FieldCfg.vue b/src/views/mdp/form/formField/FieldCfg.vue
index 22b5272..c31adb1 100644
--- a/src/views/mdp/form/formField/FieldCfg.vue
+++ b/src/views/mdp/form/formField/FieldCfg.vue
@@ -25,21 +25,16 @@
是否必输
-
+
-
+
-
-
+
+
-
+
-
-
-
-
-
-
+
diff --git a/src/views/mdp/form/formField/Index.vue b/src/views/mdp/form/formField/Index.vue
index a4f56de..44d6b5e 100644
--- a/src/views/mdp/form/formField/Index.vue
+++ b/src/views/mdp/form/formField/Index.vue
@@ -29,10 +29,10 @@
-
+
- Object.assign(item,v)">
+ Object.assign(item,v)">
@@ -142,6 +142,7 @@ import draggable from 'vuedraggable'
import { mapGetters } from 'vuex'
import MdpField from './Field.vue'
import {listTableColumn} from '@/api/mdp/form/FormField.js'
+import treeTool from '@/components/mdp-ui/js/treeTool.js'
export default {
computed: {
...mapGetters([
@@ -339,29 +340,23 @@ export default {
}
});
},
- onTplStart(evt){
- var item=evt.item
- var item2=JSON.parse(JSON.stringify(item))
- var noSelectFieldId=this.fieldIds.find(i=>{
- return !this.selectedFields.some(k=>k.id==i.id && k.isNewAdd!='1');
- })
- item2.id=noSelectFieldId.id
- item2.fieldId=noSelectFieldId.fieldId
- item2.fieldIdCamel=noSelectFieldId.fieldIdCamel
- item=item2
+ onTplStart(evt){
},
- add(evt){
+ onAdd(evt){
debugger;
- let item=this.selectedFields[evt.newIndex];
- item.isNewAdd='1'
+ let item=this.selectedFields[evt.newIndex];
var item2=JSON.parse(JSON.stringify(item))
var noSelectFieldId=this.fieldIds.find(i=>{
- return !this.selectedFields.some(k=>k.id==i.id && k.isNewAdd!='1');
+ return !this.hasChild(i.id);
})
+ if(!noSelectFieldId){
+ this.selectedFields.splice(evt.newIndex,1)
+ this.$notify.error('当前组件已经超过最大数量,不能再添加');
+ return;
+ }
item2.id=noSelectFieldId.id
item2.fieldId=noSelectFieldId.fieldId
- item2.fieldIdCamel=noSelectFieldId.fieldIdCamel
- item2.isNewAdd='0'
+ item2.fieldIdCamel=noSelectFieldId.fieldIdCamel
this.selectedFields[evt.newIndex]=item2;
this.addForm=item2;
@@ -552,13 +547,62 @@ export default {
}
return axiosObj
},
- doChildDelete(child,idx,children){
- debugger;
+ doChildDelete(child,idx,children){
children.splice(idx,1)
this.$emit('delete',child,idx,children)
},
- /**end 在上面加自定义方法**/
+ hasChild(id){
+ return this.hasMyChild(id,this.selectedFields)
+ },
+ hasMyChild(id,children){
+ debugger;
+ if(!children||children.length==0){
+ return false;
+ }else{
+ if(children.some(c=>c.id==id && c.isNewAdd!=true)){
+ return true
+ }else{
+ for(var i=0;i{
+ return !this.hasChild(i.id);
+ })
+ },
+ getMyFieldList(list,children){
+ if(children && children.length>0){
+ children.forEach(k=>{
+ if(k.children && k.children.length>0){
+ var childs=k.children
+ delete k.children
+ list.push(k)
+ this.getMyFieldList(list,childs)
+ }else{
+ list.push(k)
+ }
+ })
+ }
+ },
+ getFieldList(){
+ var list=[]
+ this.getMyFieldList(list,this.selectedFields)
+ return list;
+ },
+ getMaxFields(){
+ return this.fieldIds.length
+ }
},//end method
components: {
//在下面添加其它组件 'form-field-edit':FormFieldEdit
@@ -568,7 +612,7 @@ export default {
this.myFormDef=this.formDef
if(this.formFields){
- this.selectedFields=JSON.parse(JSON.stringify(this.formFields))
+ this.selectedFields=treeTool.translateDataToTree(this.formFields,'groupId','id')
}else{
this.selectedFields=[]
}