Browse Source

优化

master
陈裕财 2 years ago
parent
commit
5a6cf7cd6f
  1. 12
      src/views/mdp/form/formField/Field.vue
  2. 73
      src/views/mdp/form/formField/FieldCfg.vue
  3. 11
      src/views/mdp/form/formField/Index.vue

12
src/views/mdp/form/formField/Field.vue

@ -145,7 +145,7 @@
</mdp-dialog> </mdp-dialog>
<el-drawer :visible.sync="showPopover" append-to-body :modal="false"> <el-drawer :visible.sync="showPopover" append-to-body :modal="false">
<mdp-field-cfg :parent-field="parentField" :form-def="formDef" :value="field" :visible="showPopover" @change="onFieldCfgChange" @close="showPopover=false"></mdp-field-cfg>
<mdp-field-cfg :has-child="hasChild" :parent-field="parentField" :form-def="formDef" :value="field" :visible="showPopover" @change="onFieldCfgChange" @close="showPopover=false"></mdp-field-cfg>
</el-drawer> </el-drawer>
</section> </section>
</template> </template>
@ -299,19 +299,17 @@
}, },
onAdd(evt){ onAdd(evt){
debugger;
let item=this.field.children[evt.newIndex]; let item=this.field.children[evt.newIndex];
item.isNewAdd=true item.isNewAdd=true
var item2=JSON.parse(JSON.stringify(item)) var item2=JSON.parse(JSON.stringify(item))
var noSelectFieldId=this.findNotInChild() var noSelectFieldId=this.findNotInChild()
debugger;
if(!noSelectFieldId){ if(!noSelectFieldId){
this.field.children.splice(evt.newIndex,1)
this.$notify.error('当前组件已经超过最大数量,不能再添加');
return;
var id=this.$mdp.createSeqNo('ext_infos.').toLocaleLowerCase();
noSelectFieldId={id:id,idCamel:id}
} }
item2.id=noSelectFieldId.id item2.id=noSelectFieldId.id
item2.fieldId=noSelectFieldId.fieldId
item2.idCamel=noSelectFieldId.idCamel item2.idCamel=noSelectFieldId.idCamel
delete item.isNewAdd delete item.isNewAdd
this.selectedFields[evt.newIndex]=item2; this.selectedFields[evt.newIndex]=item2;

73
src/views/mdp/form/formField/FieldCfg.vue

@ -3,29 +3,37 @@
<el-form v-model="field" :rules="fieldRules" ref="field" label-width="80px" style="width:350px;"> <el-form v-model="field" :rules="fieldRules" ref="field" label-width="80px" style="width:350px;">
<el-form-item v-if="(field.typ=='select' || (field.typ=='checkbox') || (field.typ=='radio')) && !field.extType" label="数据" prop="isDict"> <el-form-item v-if="(field.typ=='select' || (field.typ=='checkbox') || (field.typ=='radio')) && !field.extType" label="数据" prop="isDict">
<el-col :span="24">
<el-input v-model="field.dict" @focus="$refs['itemDialog'].open(field)" placeholder="点击关联基础数据"> </el-input>
</el-col>
<el-col :span="4">
<el-input v-model="field.dict" @focus="$refs['itemDialog'].open(field)" placeholder="点击关联基础数据">
<template slot="append">
<el-button type="primary" icon="el-icon-delete" @click="deleteBaseData"></el-button> <el-button type="primary" icon="el-icon-delete" @click="deleteBaseData"></el-button>
</el-col>
</template>
</el-input>
</el-form-item> </el-form-item>
<el-form-item label="名称" prop="title"> <el-form-item label="名称" prop="title">
<el-col :span="24">
<el-input v-model="field.title" label="属性名称" auto-complete="off" placeholder="请输入内容" > </el-input> <el-input v-model="field.title" label="属性名称" auto-complete="off" placeholder="请输入内容" > </el-input>
</el-col>
</el-form-item> </el-form-item>
<el-form-item label="编码" prop="id" > <el-form-item label="编码" prop="id" >
<el-col :span="24">
<el-input v-model="field.id" auto-complete="off" placeholder="请输入内容" > </el-input>
</el-col>
<el-popover
placement="top-start"
width="400"
:open-delay="700"
trigger="hover">
<div>
编码规则 支持两种编码格式假设有字段 客户姓名 cust_name <br>
1. ext_infos.cust_name, 此编码方式的字段用户录入的客户姓名将存储在ext_infos.cust_name<br>
2. cust_name 不带ext_infos.此编码方式的字段用户录入的客户姓名将存储在 cust_name<br>
</div>
<el-input slot="reference" v-model="field.id" auto-complete="off" placeholder="请输入内容" @change="onIdChange" @click.native="oldId=field.id">
<template slot="append">
<el-button class="el-icon-question"></el-button>
</template>
</el-input>
</el-popover>
</el-form-item> </el-form-item>
<el-form-item label="主键" prop="bkey" v-if=" (field.typ!='checkbox') && (field.typ!='radio') && field.mul!='1' && field.typ!='textarea'" > <el-form-item label="主键" prop="bkey" v-if=" (field.typ!='checkbox') && (field.typ!='radio') && field.mul!='1' && field.typ!='textarea'" >
<el-select v-model="primaryKeys" multiple label="" clearable placeholder="请选择">
<el-option label="创建人" key="cuserid" value="cuserid">创建人 </el-option>
<el-option label="创建部门" key="deptid" value="deptid">创建部门 </el-option>
</el-select>
<el-checkbox v-model="field.bkey" true-label="1" false-label="0" @change="onBkeyChange">是否主键</el-checkbox>
</el-form-item> </el-form-item>
<el-form-item label="必需" prop="req" > <el-form-item label="必需" prop="req" >
<el-checkbox v-model="field.req" :disabled="field.bkey=='1'" true-label="1" false-label="0">是否必输</el-checkbox> <el-checkbox v-model="field.req" :disabled="field.bkey=='1'" true-label="1" false-label="0">是否必输</el-checkbox>
@ -155,6 +163,13 @@
return {} return {}
} }
}, },
hasChild:{
type:Function,
default:function(){
return null;
}
},
}, },
watch: { watch: {
value:{ value:{
@ -167,6 +182,7 @@
}, },
data() { data() {
return { return {
oldId:'',
field:{}, field:{},
primaryKeys:[], primaryKeys:[],
@ -196,6 +212,33 @@
onQxSetChange(){ onQxSetChange(){
this.handleConfirm() this.handleConfirm()
this.$refs['qxDialog'].close(); this.$refs['qxDialog'].close();
},
onBkeyChange(v){
this.$emit('bkey-change',this.field)
},
onIdChange(v){
if(!v||v.length==0){
this.$notify.error('编码不能为空')
return;
}
if(v.indexOf(".")>=0){
if(v.indexOf('ext_info.')!=0){
this.$notify.error('编码格式错误,前缀只支持【空前缀、ext_info.】两种')
return;
}
}
var id=v.toLocaleLowerCase();
this.field.isNewAdd=true
if(this.hasChild(id)){
this.field.id=this.oldId
this.$notify.error('编码【'+id+'】已存在,请换个编码')
return;
}
this.field.isNewAdd=false
this.field.id=id;
this.field.idCamel=this.$mdp.toCamel(this.field.id)
this.$emit('id-change',this.field)
} }
/**end 在上面加自定义方法**/ /**end 在上面加自定义方法**/

11
src/views/mdp/form/formField/Index.vue

@ -360,24 +360,23 @@ export default {
debugger; debugger;
let item=this.selectedFields[evt.newIndex]; let item=this.selectedFields[evt.newIndex];
var item2=JSON.parse(JSON.stringify(item)) var item2=JSON.parse(JSON.stringify(item))
item.isNewAdd=true
var noSelectFieldId=this.fieldIds.find(i=>{ var noSelectFieldId=this.fieldIds.find(i=>{
return !this.hasChild(i.id); return !this.hasChild(i.id);
}) })
if(!noSelectFieldId){ if(!noSelectFieldId){
this.selectedFields.splice(evt.newIndex,1)
this.$notify.error('当前组件已经超过最大数量,不能再添加');
return;
var id=this.$mdp.createSeqNo('ext_infos.').toLocaleLowerCase();
noSelectFieldId={id:id,idCamel:id}
} }
item2.id=noSelectFieldId.id item2.id=noSelectFieldId.id
item2.fieldId=noSelectFieldId.fieldId
item2.idCamel=noSelectFieldId.idCamel item2.idCamel=noSelectFieldId.idCamel
item.isNewAdd=false;
this.selectedFields[evt.newIndex]=item2; this.selectedFields[evt.newIndex]=item2;
this.addForm=item2; this.addForm=item2;
}, },
deleteBaseData(){ deleteBaseData(){
this.addForm.isDict='0';
this.addForm.dict=''; this.addForm.dict='';
}, },
calcSpan(child){ calcSpan(child){
@ -566,7 +565,7 @@ export default {
return this.hasMyChild(id,this.selectedFields) return this.hasMyChild(id,this.selectedFields)
}, },
hasMyChild(id,children){ hasMyChild(id,children){
debugger;
if(!children||children.length==0){ if(!children||children.length==0){
return false; return false;
}else{ }else{

Loading…
Cancel
Save