10 changed files with 864 additions and 636 deletions
-
67src/components/mdp-ui/directive/adaptive.js
-
53src/components/mdp-ui/directive/el-table/adaptive.js
-
0src/components/mdp-ui/directive/index.js
-
2src/components/mdp-ui/index.js
-
7src/views/mdp/form/formDef/Form.vue
-
14src/views/mdp/form/formDef/Index.vue
-
252src/views/mdp/form/formField/Field.vue
-
219src/views/mdp/form/formField/FieldCfg.vue
-
569src/views/mdp/form/formField/FormField.vue
-
317src/views/mdp/form/formField/Index.vue
@ -0,0 +1,67 @@ |
|||||
|
// 设置表格高度
|
||||
|
const doResize = async (el, binding, vnode) => { |
||||
|
|
||||
|
// 获取表格Dom对象
|
||||
|
if(vnode.$table){ |
||||
|
const { |
||||
|
componentInstance: $table |
||||
|
} = await vnode |
||||
|
|
||||
|
// 获取调用传递过来的数据
|
||||
|
const { |
||||
|
value |
||||
|
} = binding |
||||
|
|
||||
|
if (!$table.height) { |
||||
|
throw new Error(`el-$table must set the height. Such as height='100px'`) |
||||
|
} |
||||
|
// 获取距底部距离(用于展示页码等信息)
|
||||
|
const bottomOffset = (value && value.bottomOffset) || 50 |
||||
|
|
||||
|
// 计算列表高度并设置
|
||||
|
const height = window.innerHeight - el.getBoundingClientRect().top - bottomOffset |
||||
|
$table.layout.setHeight(height) |
||||
|
$table.doLayout() |
||||
|
}else{ |
||||
|
//要起作用,请先给容器添加一个默认高度,否则不起作用
|
||||
|
// 获取调用传递过来的数据
|
||||
|
const { |
||||
|
value |
||||
|
} = binding |
||||
|
// 获取距底部距离(用于展示页码等信息)
|
||||
|
const bottomOffset = (value && value.bottomOffset) || 50 |
||||
|
|
||||
|
// 计算列表高度并设置
|
||||
|
const height = window.innerHeight - el.getBoundingClientRect().top - bottomOffset |
||||
|
el.style.height = height+'px'; // 更新元素高度
|
||||
|
} |
||||
|
|
||||
|
} |
||||
|
|
||||
|
export default { |
||||
|
// 初始化设置
|
||||
|
bind(el, binding, vnode) { |
||||
|
// 设置resize监听方法
|
||||
|
el.resizeListener = async () => { |
||||
|
await doResize(el, binding, vnode) |
||||
|
} |
||||
|
// 绑定监听方法到addResizeListener
|
||||
|
// addResizeListener(window.document.body, el.resizeListener)
|
||||
|
window.addEventListener('resize', el.resizeListener) |
||||
|
}, |
||||
|
update(el, binding, vnode) { |
||||
|
doResize(el, binding, vnode) |
||||
|
}, |
||||
|
// 绑定默认高度
|
||||
|
async inserted(el, binding, vnode) { |
||||
|
await doResize(el, binding, vnode) |
||||
|
}, |
||||
|
// 销毁时设置
|
||||
|
unbind(el) { |
||||
|
// 移除resize监听
|
||||
|
// removeResizeListener(el, el.resizeListener)
|
||||
|
window.removeEventListener('resize', el.resizeListener) |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
|
||||
@ -1,53 +0,0 @@ |
|||||
// 设置表格高度
|
|
||||
const doResize = async (el, binding, vnode) => { |
|
||||
// 获取表格Dom对象
|
|
||||
|
|
||||
const { |
|
||||
componentInstance: $table |
|
||||
} = await vnode |
|
||||
// 获取调用传递过来的数据
|
|
||||
const { |
|
||||
value |
|
||||
} = binding |
|
||||
|
|
||||
if (!$table.height) { |
|
||||
throw new Error(`el-$table must set the height. Such as height='100px'`) |
|
||||
} |
|
||||
// 获取距底部距离(用于展示页码等信息)
|
|
||||
const bottomOffset = (value && value.bottomOffset) || 30 |
|
||||
|
|
||||
if (!$table) return |
|
||||
|
|
||||
// 计算列表高度并设置
|
|
||||
const height = window.innerHeight - el.getBoundingClientRect().top - bottomOffset |
|
||||
$table.layout.setHeight(height) |
|
||||
$table.doLayout() |
|
||||
} |
|
||||
|
|
||||
export default { |
|
||||
// 初始化设置
|
|
||||
bind(el, binding, vnode) { |
|
||||
// 设置resize监听方法
|
|
||||
el.resizeListener = async () => { |
|
||||
await doResize(el, binding, vnode) |
|
||||
} |
|
||||
// 绑定监听方法到addResizeListener
|
|
||||
// addResizeListener(window.document.body, el.resizeListener)
|
|
||||
window.addEventListener('resize', el.resizeListener) |
|
||||
}, |
|
||||
update(el, binding, vnode) { |
|
||||
doResize(el, binding, vnode) |
|
||||
}, |
|
||||
// 绑定默认高度
|
|
||||
async inserted(el, binding, vnode) { |
|
||||
await doResize(el, binding, vnode) |
|
||||
}, |
|
||||
// 销毁时设置
|
|
||||
unbind(el) { |
|
||||
// 移除resize监听
|
|
||||
// removeResizeListener(el, el.resizeListener)
|
|
||||
window.removeEventListener('resize', el.resizeListener) |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
|
|
||||
@ -0,0 +1,252 @@ |
|||||
|
<template> |
||||
|
<section> |
||||
|
<el-popover trigger="hover" width="100px" placement="right-start"> |
||||
|
<el-row v-if="field.extFieldType=='row'" class="form-field" slot="reference" :gutter="gutter"> |
||||
|
<draggable v-if="field.children && field.children.length>0" v-model="field.children" :options="{group:{ name:'g1', pull:'clone'}, animation:150}"> |
||||
|
<el-col v-for="child,idx in field.children" :key="idx" :span="calcSpan(child,field)"> |
||||
|
<mdp-field :gutter="gutter" :span="span" v-if="child" :value="child" @change="(v)=>onChildChange(child,v)" @delete="doChildDelete(child,idx,field.children)"></mdp-field> |
||||
|
</el-col> |
||||
|
</draggable> |
||||
|
</el-row> |
||||
|
<el-form-item slot="reference" v-else class="form-field" :label="field.fieldTitle" :prop="field.fieldIdCamel" :rules="[{ required: field.isRequired=='1', message: '该项必填', trigger: 'change' }]"> |
||||
|
<div v-if="field.qx=='nr'"></div> |
||||
|
<!--用户--> |
||||
|
<mdp-select-user v-else-if=" field.extFieldType=='user'" :show-style="field.showStyle" :disabled="field.qx=='r'" :multiple="field.isMultiple=='1'" v-model="showData[field.fieldIdCamel]" :label="field.fieldTitle" :placeholder="field.placeholder" split=","> |
||||
|
</mdp-select-user> |
||||
|
<!--部门--> |
||||
|
<mdp-selecct-dept v-else-if=" field.extFieldType=='deppt'" :show-style="field.showStyle" :branch-id="userInfo.branchId" :show-checkbox="field.isMultiple=='1'" :multiple="field.isMultiple=='1'" split=","></mdp-selecct-dept> |
||||
|
|
||||
|
<!--标签--> |
||||
|
<mdp-select-tag v-else-if=" field.extFieldType=='tag'" :show-style="field.showStyle" :disabled="field.qx=='r'" :multiple="field.isMultiple=='1'" v-model="showData[field.fieldIdCamel]" :label="field.fieldTitle" :placeholder="field.placeholder" split=","> |
||||
|
</mdp-select-tag> |
||||
|
<!--下拉框--> |
||||
|
<mdp-select v-else-if=" ['select','radio','checkbox'].some(k=>k==field.fieldType)" :show-style="field.showStyle" :plus-options="field.plusOptions" :disabled="field.qx=='r'" :show-type="field.fieldType" :item-code="field.dictCode" :multiple="field.isMultiple=='1'" v-model="showData[field.fieldIdCamel]" :label="field.fieldTitle" :placeholder="field.placeholder" split=","> |
||||
|
</mdp-select> |
||||
|
<!--html--> |
||||
|
<el-popover v-else-if=" field.extFieldType=='html'" |
||||
|
placement="top-start" |
||||
|
width="400" |
||||
|
trigger="hover"> |
||||
|
<el-input type="textarea" rows="4" v-model="showData[field.fieldIdCamel]"></el-input> |
||||
|
<div slot="reference" v-html="showData[field.fieldIdCamel]||field.defaultValue||'无'"></div> |
||||
|
</el-popover> |
||||
|
<!--link 链接--> |
||||
|
<el-popover v-else-if=" field.extFieldType=='link'" |
||||
|
placement="top-start" |
||||
|
width="400" |
||||
|
trigger="hover"> |
||||
|
<el-input v-model="showData[field.fieldIdCamel]" ></el-input> |
||||
|
<el-link slot="reference" :href="showData[field.fieldIdCamel]" target="_blank">{{ showData[field.fieldIdCamel]||field.fieldTitle }}</el-link> |
||||
|
</el-popover> |
||||
|
<!--image--> |
||||
|
<el-popover v-else-if=" field.extFieldType=='image'" |
||||
|
placement="top-start" |
||||
|
trigger="hover"> |
||||
|
<el-button @click="$refs['imageDialog'].open({formData:showData,field:field})">上传图片</el-button> |
||||
|
<el-image slot="reference" :style="field.styleObj||{maxHeight:'100px',maxWidth:'100px'}" |
||||
|
:src="showData[field.fieldIdCamel]" |
||||
|
fit="contain" > |
||||
|
</el-image> |
||||
|
</el-popover> |
||||
|
<!--att 附件--> |
||||
|
<el-popover v-else-if=" field.extFieldType=='att'" |
||||
|
placement="top-start" |
||||
|
trigger="hover"> |
||||
|
<el-button @click="$refs['attDialog'].open({formData:showData,field:field})">上传附件</el-button> |
||||
|
<el-link slot="reference" :href="showData[field.fieldIdCamel]" target="_blank">{{ showData[field.fieldIdCamel]||field.fieldTitle }}</el-link> |
||||
|
</el-popover> |
||||
|
<!--其它类型--> |
||||
|
<mdp-input :show-style="field.showStyle" :disabled="field.qx=='r'" v-else-if="field.fieldType=='text'" style="width:99%;" v-model="showData[field.fieldIdCamel]" :label="field.fieldTitle" auto-complete="off" :placeholder="field.placeholder" clearable > </mdp-input> |
||||
|
<mdp-number :show-style="field.showStyle" :disabled="field.qx=='r'" v-else-if="field.fieldType=='number'" v-model="showData[field.fieldIdCamel]" :label="field.fieldTitle" auto-complete="off" placeholder="请输入内容" clearable ></mdp-number> |
||||
|
<mdp-number :show-style="field.showStyle" :disabled="field.qx=='r'" v-else-if="field.fieldType=='amount'" v-model="showData[field.fieldIdCamel]" :label="field.fieldTitle" auto-complete="off" placeholder="请输入内容" clearable></mdp-number> |
||||
|
<mdp-input :show-style="field.showStyle" :disabled="field.qx=='r'" v-else-if="field.fieldType=='textarea'" type="textarea" :rows="2" v-model="showData[field.fieldIdCamel]" :label="field.fieldTitle" placeholder="请输入内容"></mdp-input> |
||||
|
<el-time-picker :show-style="field.showStyle" :disabled="field.qx=='r'" v-else-if="field.fieldType=='time'" v-model="showData[field.fieldIdCamel]" placeholder="任意时间点"> </el-time-picker> |
||||
|
<mdp-date :show-style="field.showStyle" :disabled="field.qx=='r'" v-else-if="field.fieldType=='date'" v-model="showData[field.fieldIdCamel]" align="right" type="date" value-format="yyyy-MM-dd" format="yyyy-MM-dd" placeholder="选择日期" :picker-options="pickerOptions"> </mdp-date> |
||||
|
<mdp-date :show-style="field.showStyle" :disabled="field.qx=='r'" v-else-if="field.fieldType=='datetime'" v-model="showData[field.fieldIdCamel]" type="datetime" value-format="yyyy-MM-dd HH:mm:ss" format="yyyy-MM-dd HH:mm:ss" placeholder="选择日期时间" align="right" :picker-options="pickerOptions"> </mdp-date> |
||||
|
<mdp-date :show-style="field.showStyle" :disabled="field.qx=='r'" v-else-if="field.fieldType=='month'" v-model="showData[field.fieldIdCamel]" type="month" value-format="yyyy-MM" format="yyyy-MM" placeholder="选择月份"></mdp-date> |
||||
|
<mdp-date :show-style="field.showStyle" :disabled="field.qx=='r'" v-else-if="field.fieldType=='year'" v-model="showData[field.fieldIdCamel]" type="month" value-format="yyyy" format="yyyy" placeholder="选择年"></mdp-date> |
||||
|
<mdp-date-range :show-style="field.showStyle" :disabled="field.qx=='r'" v-else-if="field.fieldType=='daterange'" :value="showData[field.fieldIdCamel]?showData[field.fieldIdCamel].split(','):[]" align="right" type="daterange" value-format="yyyy-MM-dd" format="yyyy-MM-dd" placeholder="选择日期" :picker-options="pickerOptions" |
||||
|
@change="(vs)=>showData[field.fieldIdCamel]=vs.join(',')" |
||||
|
> </mdp-date-range> |
||||
|
</el-form-item> |
||||
|
<el-row> |
||||
|
<el-button type="warning" icon="el-icon-edit" circle @click="showPopover=!showPopover"></el-button> |
||||
|
<el-button type="danger" icon="el-icon-delete" circle @click="fieldDelete(field)"></el-button> |
||||
|
</el-row> |
||||
|
</el-popover> |
||||
|
<mdp-dialog ref="imageDialog" title="选择图片" width="80%" :modal="false"> |
||||
|
<template v-slot="{visible,data,dialog}"> |
||||
|
<mdp-select-image v-if="visible" :visible="visible" @select="(imgs)=>{ |
||||
|
if(data.item.isMultiple=='1'){ |
||||
|
data.formData[data.item.fieldIdCamel]=imgs&&imgs.length>0?imgs.map(i=>i.url).join(','):null |
||||
|
}else{ |
||||
|
data.formData[data.item.fieldIdCamel]=imgs&&imgs.length>0?imgs[0].url:null |
||||
|
} |
||||
|
dialog.close(); |
||||
|
}"></mdp-select-image> |
||||
|
</template> |
||||
|
</mdp-dialog> |
||||
|
<mdp-dialog ref="attDialog" title="选择文件" width="80%" :modal="false"> |
||||
|
<template v-slot="{visible,data,dialog}"> |
||||
|
<mdp-select-att v-if="visible" :visible="visible" :multiple="data.item.isMultiple=='1'" @select="(imgs)=>{ |
||||
|
|
||||
|
if(data.item.isMultiple=='1'){ |
||||
|
data.formData[data.item.fieldIdCamel]=imgs&&imgs.length>0?imgs.map(i=>i.url).join(','):null |
||||
|
}else{ |
||||
|
data.formData[data.item.fieldIdCamel]= (imgs?imgs.url:null) |
||||
|
} |
||||
|
|
||||
|
dialog.close(); |
||||
|
}" split=","></mdp-select-att> |
||||
|
</template> |
||||
|
</mdp-dialog> |
||||
|
|
||||
|
<el-drawer :visible.sync="showPopover" append-to-body :modal="false"> |
||||
|
<mdp-field-cfg :form-def="formDef" :value="field" :visible="showPopover" @change="onFieldCfgChange" @close="showPopover=false"></mdp-field-cfg> |
||||
|
</el-drawer> |
||||
|
</section> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
import draggable from 'vuedraggable' |
||||
|
import { mapGetters } from 'vuex' |
||||
|
import MdpFieldCfg from './FieldCfg.vue' |
||||
|
export default { |
||||
|
computed: { |
||||
|
...mapGetters([ |
||||
|
'userInfo' |
||||
|
]) |
||||
|
}, |
||||
|
props:{ |
||||
|
visible:{ |
||||
|
type:Boolean, |
||||
|
default:false, |
||||
|
}, |
||||
|
value:{ |
||||
|
type:Object, |
||||
|
default:function(){ |
||||
|
return {} |
||||
|
} |
||||
|
}, |
||||
|
formDef:{ |
||||
|
type:Object, |
||||
|
default:function(){ |
||||
|
return {} |
||||
|
} |
||||
|
}, |
||||
|
span:{ |
||||
|
type:Number, |
||||
|
default:12, |
||||
|
}, |
||||
|
gutter:{ |
||||
|
type:Number, |
||||
|
default:0 |
||||
|
} |
||||
|
}, |
||||
|
watch: { |
||||
|
|
||||
|
value:{ |
||||
|
deep:true, |
||||
|
immediate:true, |
||||
|
handler:function(){ |
||||
|
this.field=this.value |
||||
|
} |
||||
|
} |
||||
|
}, |
||||
|
data() { |
||||
|
return { |
||||
|
field:{}, |
||||
|
showData:{}, |
||||
|
pickerOptions:this.$mdp.getPickerOptions(), |
||||
|
showPopover:false, |
||||
|
fieldRules: { |
||||
|
id: [ |
||||
|
//{ required: false, message: '主键', trigger: 'blur' } |
||||
|
] |
||||
|
}, |
||||
|
options:{ |
||||
|
list: [{id:'0',name:'选项0'},{id:'1',name:'选项1'},{id:'2',name:'选项2'}], |
||||
|
yesOrNo: [{id:'0',name:'否'},{id:'1',name:'是'}], |
||||
|
}, |
||||
|
}//end return |
||||
|
},//end data |
||||
|
methods: { |
||||
|
// 取消按钮点击 父组件监听@cancel="addFormVisible=false" 监听 |
||||
|
handleCancel:function(){ |
||||
|
this.$emit('cancel'); |
||||
|
}, |
||||
|
fieldDelete(field){ |
||||
|
this.field ={}; |
||||
|
this.showPopover=false; |
||||
|
this.$emit('delete',field) |
||||
|
}, |
||||
|
fieldClick(field){ |
||||
|
this.showPopover=true; |
||||
|
}, |
||||
|
|
||||
|
deleteBaseData(){ |
||||
|
this.field.isDict='0'; |
||||
|
this.field.dictCode=''; |
||||
|
}, |
||||
|
|
||||
|
onChildChange(child,$event){ |
||||
|
Object.assign(child,$event) |
||||
|
this.$emit('input',this.field) |
||||
|
this.$emit('change',this.field) |
||||
|
this.$emit('change2',this.field) |
||||
|
}, |
||||
|
onFieldCfgChange(field){ |
||||
|
this.showPopover=false |
||||
|
Object.assign(this.field,field) |
||||
|
this.$emit('input',this.field) |
||||
|
this.$emit('change',this.field) |
||||
|
this.$emit('change2',this.field) |
||||
|
}, |
||||
|
doChildDelete(child,idx,children){ |
||||
|
children.splice(idx,1) |
||||
|
}, |
||||
|
calcSpan(child,parent){ |
||||
|
if(child.fieldLength>0){ |
||||
|
return child.fieldLength |
||||
|
} |
||||
|
if(child.extFieldType=='textarea'){ |
||||
|
return 24 |
||||
|
}else{ |
||||
|
return this.span |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
},//end method |
||||
|
components: { |
||||
|
draggable, |
||||
|
"mdp-field": ()=>import('@/views/mdp/form/formField/Field.vue'), |
||||
|
|
||||
|
MdpFieldCfg |
||||
|
}, |
||||
|
mounted() { |
||||
|
|
||||
|
|
||||
|
}//end mounted |
||||
|
} |
||||
|
|
||||
|
</script> |
||||
|
|
||||
|
<style rel="stylesheet/scss" lang="scss" scoped> |
||||
|
.min-height{ |
||||
|
min-height:300px; |
||||
|
} |
||||
|
|
||||
|
|
||||
|
.set-btn { |
||||
|
z-index: 1000; |
||||
|
display: none; |
||||
|
} |
||||
|
|
||||
|
.form-field:hover { |
||||
|
border: 1px dashed #0000ff; /* 蓝色虚线边框 */ |
||||
|
.set-btn{ |
||||
|
z-index: 1000; |
||||
|
display: inline-block; |
||||
|
} |
||||
|
} |
||||
|
</style> |
||||
@ -0,0 +1,219 @@ |
|||||
|
<template> |
||||
|
<section> |
||||
|
|
||||
|
<el-form v-model="field" :rules="fieldRules" ref="field" label-width="80px" style="width:350px;"> |
||||
|
<el-form-item v-if="(field.fieldType=='select' || (field.fieldType=='checkbox') || (field.fieldType=='radio')) && !field.extFieldType" label="数据" prop="isDict"> |
||||
|
<el-col :span="20"> |
||||
|
<el-input v-model="field.dictCode" @focus="$refs['itemDialog'].open(field)" placeholder="点击关联基础数据"> </el-input> |
||||
|
</el-col> |
||||
|
<el-col :span="4"> |
||||
|
<el-button type="primary" icon="el-icon-delete" @click="deleteBaseData"></el-button> |
||||
|
</el-col> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="名称" prop="fieldTitle"> |
||||
|
<el-col :span="20"> |
||||
|
<el-input v-model="field.fieldTitle" label="属性名称" auto-complete="off" placeholder="请输入内容" > </el-input> |
||||
|
</el-col> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="主键" prop="isBizKey" v-if=" (field.fieldType!='checkbox') && (field.fieldType!='radio') && field.isMultiple!='1' && field.fieldType!='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-option v-for="option in selectedFields" :label="option.fieldTitle" :key="option.fieldIdCamel" :value="option.fieldIdCamel">{{option.fieldTitle}} </el-option> |
||||
|
</el-select> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="必需" prop="isRequired" > |
||||
|
<el-checkbox v-model="field.isRequired" :disabled="field.isBizKey=='1'" true-label="1" false-label="0">是否必输</el-checkbox> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="编码" prop="fieldId"> |
||||
|
<el-col :span="20"> |
||||
|
<el-input :disabled="formDef.isCreateTable!='1'" v-model="field.fieldId" :label="field.fieldId" auto-complete="off" placeholder="请输入内容" > </el-input> |
||||
|
</el-col> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="编码驼峰命名" prop="fieldIdCamel" v-if="formDef.isCreateTable=='1'"> |
||||
|
<el-col :span="20"> |
||||
|
<el-input :disabled="formDef.isCreateTable!='1'" v-model="field.fieldIdCamel" :label="field.fieldIdCamel" auto-complete="off" placeholder="请输入内容" > </el-input> |
||||
|
</el-col> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="变量映射" prop="flowFieldId"> |
||||
|
<el-col :span="20"> |
||||
|
<el-input v-model="field.flowFieldId" label="变量" auto-complete="off" placeholder="变量编码" > </el-input> |
||||
|
</el-col> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="长度" prop="fieldLength"> |
||||
|
<el-col :span="20"> |
||||
|
<el-input v-model="field.fieldLength" :label="field.fieldId" auto-complete="off" placeholder="请输入内容" > </el-input> |
||||
|
</el-col> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="占位符" prop="placeholder"> |
||||
|
<el-col :span="20"> |
||||
|
<el-input v-model="field.placeholder" :label="field.placeholder" auto-complete="off" placeholder="请输入内容" > </el-input> |
||||
|
</el-col> |
||||
|
</el-form-item> |
||||
|
<el-form-item v-if="field.fieldType=='select' || (field.fieldType=='checkbox') || (field.fieldType=='radio')" label="默认值" prop="defaultValue"> |
||||
|
<el-col :span="20"> |
||||
|
<mdp-select :item-code="field.dictCode" v-model="field.defaultValue" :label="field.fieldTitle" clearable placeholder="请选择"/> |
||||
|
</el-col> |
||||
|
</el-form-item> |
||||
|
<el-form-item v-else label="默认值" prop="defaultValue"> |
||||
|
<el-col :span="20"> |
||||
|
<el-input v-model="field.defaultValue" :label="field.placeholder" auto-complete="off" placeholder="请输入内容" > </el-input> |
||||
|
</el-col> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="多选" prop="isMultiple"> |
||||
|
<el-col :span="20"> |
||||
|
<el-checkbox v-model="field.isMultiple" :disabled=" field.fieldType!='checkbox' && field.fieldType!='select' && field.extFieldType!='dept'" true-label="1" false-label="0">多选</el-checkbox> |
||||
|
</el-col> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="权限" prop="fieldQx"> |
||||
|
<el-button @click="$refs['qxDialog'].open(field)">字段权限设置</el-button> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="展示风格" prop="showStyle"> |
||||
|
<el-col :span="20"> |
||||
|
<el-radio v-model="field.showStyle" label="origin">原生-origin</el-radio> |
||||
|
|
||||
|
<el-radio v-model="field.showStyle" label="tag">标签-tag</el-radio> |
||||
|
|
||||
|
<el-radio v-model="field.showStyle" label="x">综合-x</el-radio> |
||||
|
</el-col> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="css style" prop="styleObj"> |
||||
|
<el-input type="textarea" rows="2" v-model="field.styleObj" :label="field.fieldIdCamel" auto-complete="off" placeholder="请输入json 对象 如 {maxHeight:'100px',maxWidth:'100px'}" > </el-input> |
||||
|
|
||||
|
</el-form-item> |
||||
|
<el-form-item label="扩展信息" prop="extInfos"> |
||||
|
<el-col :span="20"> |
||||
|
<el-popover |
||||
|
placement="top-start" |
||||
|
width="400" |
||||
|
trigger="hover"> |
||||
|
<mdp-form-expand v-model="field.extInfos" expand-id="form_field"></mdp-form-expand> |
||||
|
<el-button slot="reference">显示扩展信息</el-button> |
||||
|
</el-popover> |
||||
|
</el-col> |
||||
|
</el-form-item> |
||||
|
|
||||
|
</el-form> |
||||
|
<div style="text-align: right; margin: 0"> |
||||
|
<el-button type="text" @click="handleCancel">关闭</el-button> |
||||
|
<el-button type="primary" @click="handleConfirm">确定</el-button> |
||||
|
</div> |
||||
|
|
||||
|
<!--基础数据查询 CodeDetail sys_code_detail界面--> |
||||
|
<mdp-dialog ref="itemDialog" title="选择数据组" width="80%" :modal="false"> |
||||
|
<template v-slot="{visible,data,dialog}"> |
||||
|
<mdp-meta-item :visible="visible" sub-op-type="select" @select="(item)=>{ |
||||
|
data.isDict='1'; |
||||
|
data.dictCode=item.itemCode |
||||
|
dialog.close() |
||||
|
}"></mdp-meta-item> |
||||
|
</template> |
||||
|
</mdp-dialog> |
||||
|
<mdp-dialog ref="qxDialog" title="权限配置" width="80%" :modal="false"> |
||||
|
<template v-slot="{visible,data,dialog}"> |
||||
|
<field-qx-set :visible="visible" v-model="data.fieldQx" :fieldTitle="data.fieldTitle" @close="dialog.close()" @submit="onQxSetChange"/> |
||||
|
</template> |
||||
|
</mdp-dialog> |
||||
|
</section> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
import FieldQxSet from './FieldQxSet.vue'; |
||||
|
|
||||
|
import { mapGetters } from 'vuex' |
||||
|
export default { |
||||
|
computed: { |
||||
|
...mapGetters([ |
||||
|
'userInfo' |
||||
|
]) |
||||
|
}, |
||||
|
props:{ |
||||
|
visible:{ |
||||
|
type:Boolean, |
||||
|
default:false, |
||||
|
}, |
||||
|
value:{ |
||||
|
type:Object, |
||||
|
default:function(){ |
||||
|
return {} |
||||
|
} |
||||
|
}, |
||||
|
formDef:{ |
||||
|
type:Object, |
||||
|
default:function(){ |
||||
|
return {} |
||||
|
} |
||||
|
} |
||||
|
}, |
||||
|
watch: { |
||||
|
value:{ |
||||
|
deep:true, |
||||
|
immediate:true, |
||||
|
handler:function(){ |
||||
|
this.field=this.value |
||||
|
} |
||||
|
} |
||||
|
}, |
||||
|
data() { |
||||
|
return { |
||||
|
field:{}, |
||||
|
primaryKeys:[], |
||||
|
|
||||
|
fieldRules: { |
||||
|
id: [ |
||||
|
//{ required: false, message: '主键', trigger: 'blur' } |
||||
|
] |
||||
|
}, |
||||
|
/**end 在上面加自定义属性**/ |
||||
|
}//end return |
||||
|
},//end data |
||||
|
methods: { |
||||
|
// 取消按钮点击 父组件监听@cancel="fieldVisible=false" 监听 |
||||
|
handleCancel:function(){ |
||||
|
this.$emit('cancel'); |
||||
|
this.$emit('close'); |
||||
|
}, |
||||
|
handleConfirm(){ |
||||
|
this.$emit('input',this.field) |
||||
|
this.$emit('change',this.field) |
||||
|
this.$emit('change2',this.field) |
||||
|
}, |
||||
|
deleteBaseData(){ |
||||
|
this.field.isDict='0'; |
||||
|
this.field.dictCode=''; |
||||
|
}, |
||||
|
onQxSetChange(){ |
||||
|
this.handleConfirm() |
||||
|
this.$refs['qxDialog'].close(); |
||||
|
} |
||||
|
/**end 在上面加自定义方法**/ |
||||
|
|
||||
|
},//end method |
||||
|
components: { |
||||
|
FieldQxSet |
||||
|
}, |
||||
|
mounted() { |
||||
|
|
||||
|
|
||||
|
}//end mounted |
||||
|
} |
||||
|
|
||||
|
</script> |
||||
|
|
||||
|
<style rel="stylesheet/scss" lang="scss" scoped> |
||||
|
.min-height{ |
||||
|
min-height:300px; |
||||
|
} |
||||
|
|
||||
|
|
||||
|
.set-btn { |
||||
|
display: none; |
||||
|
} |
||||
|
|
||||
|
|
||||
|
.form-item:hover .set-btn { |
||||
|
display: inline-block; |
||||
|
} |
||||
|
|
||||
|
</style> |
||||
@ -1,569 +0,0 @@ |
|||||
<template> |
|
||||
<section> |
|
||||
<el-row class="border padding"> |
|
||||
<el-col :span="10"> |
|
||||
<draggable id="delDrg" class="dragArea" :list="delFields" :options="{group:{ name:'g1'}, animation:150}" :no-transition-on-drag="true" @start="drag=true" @end="drag=false"> |
|
||||
<el-row type="flex"> |
|
||||
<el-badge :value="selectedFields.length"> |
|
||||
<span style="align:center;margin-top:50px;"> |
|
||||
<slot name="setBtn"> |
|
||||
</slot> |
|
||||
将右边表单元素拖拽到方框内 拖拽表单元素可以排序,最多支持15个字段 |
|
||||
</span> |
|
||||
</el-badge> |
|
||||
</el-row> |
|
||||
</draggable> |
|
||||
<el-form class="drag" label-width="100px" style="width:100%;height:600px;overflow:auto" ref="showDataRef"> |
|
||||
<div style="border:1px dashed #000;padding: 20px;"> |
|
||||
<slot name="formName"> |
|
||||
<el-input label="标题" v-model="myFormDef.formName" required width="100%" placeholder="标题"> |
|
||||
</el-input> |
|
||||
</slot> |
|
||||
|
|
||||
<el-form-item > |
|
||||
<div v-if="selectedFields.length==0"> |
|
||||
<span> |
|
||||
从右边拖拽属性来此,可添加表单属性 <i class="el-icon-download"></i> |
|
||||
</span> |
|
||||
</div> |
|
||||
</el-form-item> |
|
||||
<draggable id="sf" class="dragArea min-height" :list="selectedFields" :options="{group:{ name:'g1'}, animation:150}" @add="add" :no-transition-on-drag="true" @start="drag=true" @end="drag=false"> |
|
||||
|
|
||||
<el-form-item class="form-item" v-for="(item,index) in selectedFields" :key="index" :label="item.fieldTitle" :prop="item.fieldIdCamel" :rules="[{ required: item.isRequired=='1', message: '该项必填', trigger: 'change' }]"> |
|
||||
<div v-if="item.qx=='nr'"></div> |
|
||||
<!--用户--> |
|
||||
<mdp-select-user v-else-if=" item.extFieldType=='user'" :show-style="item.showStyle" :disabled="item.qx=='r'" :multiple="item.isMultiple=='1'" v-model="showData[item.fieldIdCamel]" :label="item.fieldTitle" :placeholder="item.placeholder" split=","> |
|
||||
</mdp-select-user> |
|
||||
<!--部门--> |
|
||||
<mdp-selecct-dept v-else-if=" item.extFieldType=='deppt'" :show-style="item.showStyle" :branch-id="userInfo.branchId" :show-checkbox="item.isMultiple=='1'" :multiple="item.isMultiple=='1'" split=","></mdp-selecct-dept> |
|
||||
|
|
||||
<!--标签--> |
|
||||
<mdp-select-tag v-else-if=" item.extFieldType=='tag'" :show-style="item.showStyle" :disabled="item.qx=='r'" :multiple="item.isMultiple=='1'" v-model="showData[item.fieldIdCamel]" :label="item.fieldTitle" :placeholder="item.placeholder" split=","> |
|
||||
</mdp-select-tag> |
|
||||
<!--下拉框--> |
|
||||
<mdp-select v-else-if=" ['select','radio','checkbox'].some(k=>k==item.fieldType)" :show-style="item.showStyle" :disabled="item.qx=='r'" :show-type="item.fieldType" :item-code="item.dictCode" :multiple="item.isMultiple=='1'" v-model="showData[item.fieldIdCamel]" :label="item.fieldTitle" :placeholder="item.placeholder" split=","> |
|
||||
</mdp-select> |
|
||||
<!--html--> |
|
||||
<el-popover v-else-if=" item.extFieldType=='html'" |
|
||||
placement="top-start" |
|
||||
width="400" |
|
||||
trigger="hover"> |
|
||||
<el-input type="textarea" rows="4" v-model="showData[item.fieldIdCamel]"></el-input> |
|
||||
<div slot="reference" v-html="showData[item.fieldIdCamel]||item.defaultValue||'无'"></div> |
|
||||
</el-popover> |
|
||||
<!--link 链接--> |
|
||||
<el-popover v-else-if=" item.extFieldType=='link'" |
|
||||
placement="top-start" |
|
||||
width="400" |
|
||||
trigger="hover"> |
|
||||
<el-input v-model="showData[item.fieldIdCamel]" ></el-input> |
|
||||
<el-link slot="reference" :href="showData[item.fieldIdCamel]" target="_blank">{{ showData[item.fieldIdCamel]||item.fieldTitle }}</el-link> |
|
||||
</el-popover> |
|
||||
<!--image--> |
|
||||
<el-popover v-else-if=" item.extFieldType=='image'" |
|
||||
placement="top-start" |
|
||||
trigger="hover"> |
|
||||
<el-button @click="$refs['imageDialog'].open({formData:showData,item:item})">上传图片</el-button> |
|
||||
<el-image slot="reference" :style="item.styleObj||{maxHeight:'100px',maxWidth:'100px'}" |
|
||||
:src="showData[item.fieldIdCamel]" |
|
||||
fit="contain" > |
|
||||
</el-image> |
|
||||
</el-popover> |
|
||||
<!--att 附件--> |
|
||||
<el-popover v-else-if=" item.extFieldType=='att'" |
|
||||
placement="top-start" |
|
||||
trigger="hover"> |
|
||||
<el-button @click="$refs['attDialog'].open({formData:showData,item:item})">上传附件</el-button> |
|
||||
<el-link slot="reference" :href="showData[item.fieldIdCamel]" target="_blank">{{ showData[item.fieldIdCamel]||item.fieldTitle }}</el-link> |
|
||||
</el-popover> |
|
||||
<!--其它类型--> |
|
||||
<mdp-input :show-style="item.showStyle" :disabled="item.qx=='r'" v-else-if="item.fieldType=='text'" style="width:99%;" v-model="showData[item.fieldIdCamel]" :label="item.fieldTitle" auto-complete="off" :placeholder="item.placeholder" clearable > </mdp-input> |
|
||||
<mdp-number :show-style="item.showStyle" :disabled="item.qx=='r'" v-else-if="item.fieldType=='number'" v-model="showData[item.fieldIdCamel]" :label="item.fieldTitle" auto-complete="off" placeholder="请输入内容" clearable ></mdp-number> |
|
||||
<mdp-number :show-style="item.showStyle" :disabled="item.qx=='r'" v-else-if="item.fieldType=='amount'" v-model="showData[item.fieldIdCamel]" :label="item.fieldTitle" auto-complete="off" placeholder="请输入内容" clearable></mdp-number> |
|
||||
<mdp-input :show-style="item.showStyle" :disabled="item.qx=='r'" v-else-if="item.fieldType=='textarea'" type="textarea" :rows="2" v-model="showData[item.fieldIdCamel]" :label="item.fieldTitle" placeholder="请输入内容"></mdp-input> |
|
||||
<el-time-picker :show-style="item.showStyle" :disabled="item.qx=='r'" v-else-if="item.fieldType=='time'" v-model="showData[item.fieldIdCamel]" placeholder="任意时间点"> </el-time-picker> |
|
||||
<mdp-date :show-style="item.showStyle" :disabled="item.qx=='r'" v-else-if="item.fieldType=='date'" v-model="showData[item.fieldIdCamel]" align="right" type="date" value-format="yyyy-MM-dd" format="yyyy-MM-dd" placeholder="选择日期" :picker-options="pickerOptions"> </mdp-date> |
|
||||
<mdp-date :show-style="item.showStyle" :disabled="item.qx=='r'" v-else-if="item.fieldType=='datetime'" v-model="showData[item.fieldIdCamel]" type="datetime" value-format="yyyy-MM-dd HH:mm:ss" format="yyyy-MM-dd HH:mm:ss" placeholder="选择日期时间" align="right" :picker-options="pickerOptions"> </mdp-date> |
|
||||
<mdp-date :show-style="item.showStyle" :disabled="item.qx=='r'" v-else-if="item.fieldType=='month'" v-model="showData[item.fieldIdCamel]" type="month" value-format="yyyy-MM" format="yyyy-MM" placeholder="选择月份"></mdp-date> |
|
||||
<mdp-date :show-style="item.showStyle" :disabled="item.qx=='r'" v-else-if="item.fieldType=='year'" v-model="showData[item.fieldIdCamel]" type="month" value-format="yyyy" format="yyyy" placeholder="选择年"></mdp-date> |
|
||||
<mdp-date-range :show-style="item.showStyle" :disabled="item.qx=='r'" v-else-if="item.fieldType=='daterange'" :value="showData[item.fieldIdCamel]?showData[item.fieldIdCamel].split(','):[]" align="right" type="daterange" value-format="yyyy-MM-dd" format="yyyy-MM-dd" placeholder="选择日期" :picker-options="pickerOptions" |
|
||||
@change="(vs)=>showData[item.fieldIdCamel]=vs.join(',')" |
|
||||
> </mdp-date-range> |
|
||||
<el-button class="set-btn" type="warning" icon="el-icon-edit" circle @click="itemClick(item,index)"></el-button> |
|
||||
<el-button class="set-btn" type="danger" icon="el-icon-delete" circle @click="itemDelete(item,index)"></el-button> |
|
||||
</el-form-item> |
|
||||
</draggable> |
|
||||
</div> |
|
||||
</el-form> |
|
||||
</el-col> |
|
||||
<el-col :span="6" > |
|
||||
<el-popover |
|
||||
ref="popover5" |
|
||||
placement="left" |
|
||||
style="width:250px;" |
|
||||
v-model="showPopover"> |
|
||||
<el-form v-model="addForm" :rules="addFormRules" ref="addForm" label-width="80px" style="width:350px;"> |
|
||||
<el-form-item v-if="(addForm.fieldType=='select' || (addForm.fieldType=='checkbox') || (addForm.fieldType=='radio')) && !addForm.extFieldType" label="数据" prop="isDict"> |
|
||||
<el-col :span="20"> |
|
||||
<el-input v-model="addForm.dictCode" @focus="$refs['itemDialog'].open(addForm)" placeholder="点击关联基础数据"> </el-input> |
|
||||
</el-col> |
|
||||
<el-col :span="4"> |
|
||||
<el-button type="primary" icon="el-icon-delete" @click="deleteBaseData"></el-button> |
|
||||
</el-col> |
|
||||
</el-form-item> |
|
||||
<el-form-item label="名称" prop="fieldTitle"> |
|
||||
<el-col :span="20"> |
|
||||
<el-input v-model="addForm.fieldTitle" label="属性名称" auto-complete="off" placeholder="请输入内容" > </el-input> |
|
||||
</el-col> |
|
||||
</el-form-item> |
|
||||
<el-form-item label="主键" prop="isBizKey" v-if=" (addForm.fieldType!='checkbox') && (addForm.fieldType!='radio') && addForm.isMultiple!='1' && addForm.fieldType!='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-option v-for="option in selectedFields" :label="option.fieldTitle" :key="option.fieldIdCamel" :value="option.fieldIdCamel">{{option.fieldTitle}} </el-option> |
|
||||
</el-select> |
|
||||
</el-form-item> |
|
||||
<el-form-item label="必需" prop="isRequired" > |
|
||||
<el-checkbox v-model="addForm.isRequired" :disabled="addForm.isBizKey=='1'" true-label="1" false-label="0">是否必输</el-checkbox> |
|
||||
</el-form-item> |
|
||||
<el-form-item label="编码" prop="fieldId"> |
|
||||
<el-col :span="20"> |
|
||||
<el-input :disabled="myFormDef.isCreateTable!='1'" v-model="addForm.fieldId" :label="addForm.fieldId" auto-complete="off" placeholder="请输入内容" > </el-input> |
|
||||
</el-col> |
|
||||
</el-form-item> |
|
||||
<el-form-item label="编码驼峰命名" prop="fieldIdCamel" v-if="formDef.isCreateTable=='1'"> |
|
||||
<el-col :span="20"> |
|
||||
<el-input :disabled="formDef.isCreateTable!='1'" v-model="addForm.fieldIdCamel" :label="addForm.fieldIdCamel" auto-complete="off" placeholder="请输入内容" > </el-input> |
|
||||
</el-col> |
|
||||
</el-form-item> |
|
||||
<el-form-item label="变量映射" prop="flowFieldId"> |
|
||||
<el-col :span="20"> |
|
||||
<el-input v-model="addForm.flowFieldId" label="变量" auto-complete="off" placeholder="变量编码" > </el-input> |
|
||||
</el-col> |
|
||||
</el-form-item> |
|
||||
<el-form-item label="长度" prop="fieldLength"> |
|
||||
<el-col :span="20"> |
|
||||
<el-input v-model="addForm.fieldLength" :label="addForm.fieldId" auto-complete="off" placeholder="请输入内容" > </el-input> |
|
||||
</el-col> |
|
||||
</el-form-item> |
|
||||
<el-form-item label="占位符" prop="placeholder"> |
|
||||
<el-col :span="20"> |
|
||||
<el-input v-model="addForm.placeholder" :label="addForm.placeholder" auto-complete="off" placeholder="请输入内容" > </el-input> |
|
||||
</el-col> |
|
||||
</el-form-item> |
|
||||
<el-form-item v-if="addForm.fieldType=='select' || (addForm.fieldType=='checkbox') || (addForm.fieldType=='radio')" label="默认值" prop="defaultValue"> |
|
||||
<el-col :span="20"> |
|
||||
<mdp-select :item-code="addForm.dictCode" v-model="addForm.defaultValue" :label="addForm.fieldTitle" clearable placeholder="请选择"/> |
|
||||
</el-col> |
|
||||
</el-form-item> |
|
||||
<el-form-item v-else label="默认值" prop="defaultValue"> |
|
||||
<el-col :span="20"> |
|
||||
<el-input v-model="addForm.defaultValue" :label="addForm.placeholder" auto-complete="off" placeholder="请输入内容" > </el-input> |
|
||||
</el-col> |
|
||||
</el-form-item> |
|
||||
<el-form-item label="多选" prop="isMultiple"> |
|
||||
<el-col :span="20"> |
|
||||
<el-checkbox v-model="addForm.isMultiple" :disabled=" addForm.fieldType!='checkbox' && addForm.fieldType!='select' && addForm.extFieldType!='dept'" true-label="1" false-label="0">多选</el-checkbox> |
|
||||
</el-col> |
|
||||
</el-form-item> |
|
||||
<el-form-item label="权限" prop="fieldQx"> |
|
||||
<el-button @click="$refs['qxDialog'].open(addForm)">字段权限设置</el-button> |
|
||||
</el-form-item> |
|
||||
<el-form-item label="展示风格" prop="showStyle"> |
|
||||
<el-col :span="20"> |
|
||||
<el-radio v-model="addForm.showStyle" label="origin">原生-origin</el-radio> |
|
||||
|
|
||||
<el-radio v-model="addForm.showStyle" label="tag">标签-tag</el-radio> |
|
||||
|
|
||||
<el-radio v-model="addForm.showStyle" label="x">综合-x</el-radio> |
|
||||
</el-col> |
|
||||
</el-form-item> |
|
||||
<el-form-item label="css style" prop="styleObj"> |
|
||||
<el-input type="textarea" rows="2" v-model="addForm.styleObj" :label="addForm.fieldIdCamel" auto-complete="off" placeholder="请输入json 对象 如 {maxHeight:'100px',maxWidth:'100px'}" > </el-input> |
|
||||
|
|
||||
</el-form-item> |
|
||||
<el-form-item label="扩展信息" prop="extInfos"> |
|
||||
<el-col :span="20"> |
|
||||
<el-popover |
|
||||
placement="top-start" |
|
||||
width="400" |
|
||||
trigger="hover"> |
|
||||
<mdp-form-expand v-model="addForm.extInfos" expand-id="form_field"></mdp-form-expand> |
|
||||
<el-button slot="reference">显示扩展信息</el-button> |
|
||||
</el-popover> |
|
||||
</el-col> |
|
||||
</el-form-item> |
|
||||
|
|
||||
</el-form> |
|
||||
<div style="text-align: right; margin: 0"> |
|
||||
<el-button type="text" @click="showPopover = false">关闭</el-button> |
|
||||
<el-button type="primary" @click="showPopover = false">确定</el-button> |
|
||||
</div> |
|
||||
</el-popover> |
|
||||
</el-col> |
|
||||
<el-col :span="10" :offset="4"> |
|
||||
<el-form :model="addForm" label-width="100px" style="width:100%;height:600px;overflow:auto" :rules="addFormRules" ref="inputAddForm"> |
|
||||
<draggable id="af" class="dragArea min-height" :options="{group:{ name:'g1', pull:'clone'}, animation:150}" v-model="sampleFields" > |
|
||||
<el-form-item v-for="(item,index) in sampleFields" :key="index" :label="item.fieldTitle" :prop="item.fieldIdCamel"> |
|
||||
<el-input style="width:60%;" v-if="item.extFieldType=='html'" v-model="sampleData[item.fieldIdCamel]" :label="item.fieldTitle" auto-complete="off" :placeholder="item.placeholder" clearable > </el-input> |
|
||||
<el-image v-else-if="item.extFieldType=='image'" |
|
||||
style="width:100px;heigth:100px;" |
|
||||
:src="item.defaultValue" |
|
||||
fit="contain"> |
|
||||
</el-image> |
|
||||
<el-link style="width:60%;" v-else-if="item.extFieldType=='att'" :href="sampleData[item.fieldIdCamel]" :label="item.fieldTitle" auto-complete="off" :placeholder="item.placeholder" clearable >{{item.fieldTitle}} </el-link> |
|
||||
<el-link style="width:60%;" v-else-if="item.extFieldType=='link'" :href="sampleData[item.fieldIdCamel]" :label="item.fieldTitle" auto-complete="off" :placeholder="item.placeholder" clearable >{{item.fieldTitle}} </el-link> |
|
||||
|
|
||||
<el-input style="width:60%;" v-else-if="item.fieldType=='text' && item.extFieldType!='dept'" v-model="sampleData[item.fieldIdCamel]" :label="item.fieldTitle" auto-complete="off" :placeholder="item.placeholder" clearable > </el-input> |
|
||||
<el-input-number v-else-if="item.fieldType=='number'" v-model="sampleData[item.fieldIdCamel]" :label="item.fieldTitle" auto-complete="off" placeholder="请输入内容" clearable :min="1" :max="10" ></el-input-number> |
|
||||
<el-input style="width:60%;" v-else-if="item.fieldType=='amount'" v-model="sampleData[item.fieldIdCamel]" :label="item.fieldTitle" auto-complete="off" placeholder="请输入内容" clearable></el-input> |
|
||||
<el-input style="width:60%;" v-else-if="item.fieldType=='textarea'" type="textarea" :rows="2" v-model="sampleData[item.fieldIdCamel]" :label="item.fieldTitle" placeholder="请输入内容"></el-input> |
|
||||
<mdp-select-user :show-style="item.showStyle" v-else-if="item.fieldType=='select' && item.extFieldType=='user'" :multiple="item.isMultiple=='1'" v-model="sampleData[item.fieldIdCamel]" :label="item.fieldTitle" placeholder="请选择" split="," /> |
|
||||
<mdp-select-tag :show-style="item.showStyle" v-else-if="item.fieldType=='select' && item.extFieldType=='tag'" :multiple="item.isMultiple=='1'" v-model="sampleData[item.fieldIdCamel]" :label="item.fieldTitle" placeholder="请选择" split="," /> |
|
||||
|
|
||||
<mdp-select :show-style="item.showStyle" :options="options2[item.fieldIdCamel]" v-else-if="item.fieldType=='select' && item.extFieldType!='user'" :multiple="item.isMultiple=='1'" v-model="sampleData[item.fieldIdCamel]" :label="item.fieldTitle" placeholder="请选择" split=","/> |
|
||||
<mdp-select :show-style="item.showStyle" :options="options2[item.fieldIdCamel]" :show-type="item.fieldType" v-else-if="item.fieldType=='radio' " v-model="sampleData[item.fieldIdCamel]"/> |
|
||||
<el-time-picker :show-style="item.showStyle" v-else-if="item.fieldType=='time'" v-model="sampleData[item.fieldIdCamel]" placeholder="任意时间点"> </el-time-picker> |
|
||||
<el-date-picker :show-style="item.showStyle" v-else-if="item.fieldType=='daterange'" v-model="sampleData[item.fieldIdCamel]" align="right" type="daterange" placeholder="选择日期" > </el-date-picker> |
|
||||
|
|
||||
<el-date-picker :show-style="item.showStyle" v-else-if="item.fieldType=='date'" v-model="sampleData[item.fieldIdCamel]" align="right" type="date" placeholder="选择日期" > </el-date-picker> |
|
||||
<el-date-picker :show-style="item.showStyle" v-else-if="item.fieldType=='datetime'" v-model="sampleData[item.fieldIdCamel]" type="datetime" placeholder="选择日期时间" align="right" :picker-options="pickerOptions"> </el-date-picker> |
|
||||
<el-date-picker :show-style="item.showStyle" v-else-if="item.fieldType=='month'" v-model="sampleData[item.fieldIdCamel]" align="right" type="month" placeholder="选择月份" > </el-date-picker> |
|
||||
<el-date-picker :show-style="item.showStyle" v-else-if="item.fieldType=='year'" v-model="sampleData[item.fieldIdCamel]" align="right" type="year" placeholder="选择年份" > </el-date-picker> |
|
||||
<mdp-select-dept :show-style="item.showStyle" v-else-if="item.extFieldType=='dept'" v-model="sampleData[item.fieldIdCamel]" :multiple="item.isMultiple=='1'" split=","></mdp-select-dept> |
|
||||
<el-button class="set-btn" type="primary" icon="el-icon-edit" circle @click="itemClick(item,index)"></el-button> |
|
||||
<el-button class="set-btn" type="danger" icon="el-icon-delete" circle @click="itemDelete(item,index)"></el-button> |
|
||||
</el-form-item> |
|
||||
</draggable> |
|
||||
</el-form> |
|
||||
</el-col> |
|
||||
<!--基础数据查询 CodeDetail sys_code_detail界面--> |
|
||||
<mdp-dialog ref="itemDialog" title="选择数据组" width="80%" :modal="false"> |
|
||||
<template v-slot="{visible,data,dialog}"> |
|
||||
<mdp-meta-item :visible="visible" sub-op-type="select" @select="(item)=>{ |
|
||||
data.isDict='1'; |
|
||||
data.dictCode=item.itemCode |
|
||||
dialog.close() |
|
||||
}"></mdp-meta-item> |
|
||||
</template> |
|
||||
</mdp-dialog> |
|
||||
<mdp-dialog ref="qxDialog" title="权限配置" width="80%" :modal="false"> |
|
||||
<template v-slot="{visible,data,dialog}"> |
|
||||
<field-qx-set :visible="visible" v-model="data.fieldQx" :fieldTitle="data.fieldTitle" @close="dialog.close()" @submit="dialog.close()"/> |
|
||||
</template> |
|
||||
</mdp-dialog> |
|
||||
<mdp-dialog ref="imageDialog" title="选择图片" width="80%" :modal="false"> |
|
||||
<template v-slot="{visible,data,dialog}"> |
|
||||
<mdp-select-image v-if="visible" :visible="visible" @select="(imgs)=>{ |
|
||||
if(data.item.isMultiple=='1'){ |
|
||||
data.formData[data.item.fieldIdCamel]=imgs&&imgs.length>0?imgs.map(i=>i.url).join(','):null |
|
||||
}else{ |
|
||||
data.formData[data.item.fieldIdCamel]=imgs&&imgs.length>0?imgs[0].url:null |
|
||||
} |
|
||||
dialog.close(); |
|
||||
}"></mdp-select-image> |
|
||||
</template> |
|
||||
</mdp-dialog> |
|
||||
<mdp-dialog ref="attDialog" title="选择文件" width="80%" :modal="false"> |
|
||||
<template v-slot="{visible,data,dialog}"> |
|
||||
<mdp-select-att v-if="visible" :visible="visible" :multiple="data.item.isMultiple=='1'" @select="(imgs)=>{ |
|
||||
|
|
||||
if(data.item.isMultiple=='1'){ |
|
||||
data.formData[data.item.fieldIdCamel]=imgs&&imgs.length>0?imgs.map(i=>i.url).join(','):null |
|
||||
}else{ |
|
||||
data.formData[data.item.fieldIdCamel]= (imgs?imgs.url:null) |
|
||||
} |
|
||||
|
|
||||
dialog.close(); |
|
||||
}" split=","></mdp-select-att> |
|
||||
</template> |
|
||||
</mdp-dialog> |
|
||||
</el-row> |
|
||||
</section> |
|
||||
</template> |
|
||||
|
|
||||
<script> |
|
||||
import draggable from 'vuedraggable' |
|
||||
import { mapGetters } from 'vuex' |
|
||||
import FieldQxSet from './FieldQxSet.vue'; |
|
||||
|
|
||||
export default { |
|
||||
computed: { |
|
||||
...mapGetters([ |
|
||||
'userInfo' |
|
||||
]) |
|
||||
}, |
|
||||
props:{ |
|
||||
visible:{ |
|
||||
type:Boolean, |
|
||||
default:false, |
|
||||
}, |
|
||||
formDef:{ |
|
||||
type:Object, |
|
||||
default:null, |
|
||||
}, |
|
||||
formFields:{ |
|
||||
type:Array, |
|
||||
default:[] |
|
||||
} |
|
||||
}, |
|
||||
watch: { |
|
||||
'formDef':function( formDef ) { |
|
||||
if(formDef==this.myFormDef){ |
|
||||
return; |
|
||||
} |
|
||||
this.myFormDef=formDef; |
|
||||
}, |
|
||||
'addForm.isBizKey':function( isBizKey ) { |
|
||||
if(isBizKey=='1'){ |
|
||||
this.addForm.isRequired="1" |
|
||||
} |
|
||||
}, |
|
||||
'visible':function(visible) { |
|
||||
if(visible==true){ |
|
||||
|
|
||||
this.selectedFields=JSON.parse(JSON.stringify(this.formFields)) |
|
||||
this.setPrimaryKeys(); |
|
||||
this.$nextTick(()=>{ |
|
||||
this.$refs.showDataRef.clearValidate(); |
|
||||
}) |
|
||||
} |
|
||||
} |
|
||||
}, |
|
||||
data() { |
|
||||
return { |
|
||||
filters:{ |
|
||||
users:[] |
|
||||
}, |
|
||||
pickerOptions: { |
|
||||
shortcuts: [{ |
|
||||
text: '今天', |
|
||||
onClick(picker) { |
|
||||
picker.$emit('pick', new Date()); |
|
||||
} |
|
||||
}, { |
|
||||
text: '昨天', |
|
||||
onClick(picker) { |
|
||||
const date = new Date(); |
|
||||
date.setTime(date.getTime() - 3600 * 1000 * 24); |
|
||||
picker.$emit('pick', date); |
|
||||
} |
|
||||
}, { |
|
||||
text: '一周前', |
|
||||
onClick(picker) { |
|
||||
const date = new Date(); |
|
||||
date.setTime(date.getTime() - 3600 * 1000 * 24 * 7); |
|
||||
picker.$emit('pick', date); |
|
||||
} |
|
||||
}] |
|
||||
}, |
|
||||
options:{},//下拉选择框的所有静态数据 |
|
||||
options2:{ |
|
||||
zero: [{id:'0',name:'选项0'},{id:'1',name:'选项1'},{id:'2',name:'选项2'}], |
|
||||
one: [{id:'0',name:'选项0'},{id:'1',name:'选项1'},{id:'2',name:'选项2'}], |
|
||||
two: [{id:'0',name:'选项0'},{id:'1',name:'选项1'},{id:'2',name:'选项2'}], |
|
||||
three: [{id:'0',name:'选项0'},{id:'1',name:'选项1'},{id:'2',name:'选项2'}], |
|
||||
four: [{id:'0',name:'选项0'},{id:'1',name:'选项1'},{id:'2',name:'选项2'}], |
|
||||
five: [{id:'0',name:'选项0'},{id:'1',name:'选项1'},{id:'2',name:'选项2'}], |
|
||||
six: [{id:'0',name:'选项0'},{id:'1',name:'选项1'},{id:'2',name:'选项2'}], |
|
||||
seven: [{id:'0',name:'选项0'},{id:'1',name:'选项1'},{id:'2',name:'选项2'}], |
|
||||
eight: [{id:'0',name:'选项0'},{id:'1',name:'选项1'},{id:'2',name:'选项2'}], |
|
||||
nine: [{id:'0',name:'选项0'},{id:'1',name:'选项1'},{id:'2',name:'选项2'}], |
|
||||
ten: [{id:'0',name:'选项0'},{id:'1',name:'选项1'},{id:'2',name:'选项2'}], |
|
||||
eleven: [{id:'0',name:'否'},{id:'1',name:'是'}], |
|
||||
twelve: [{id:'0',name:'选项0'},{id:'1',name:'选项1'},{id:'2',name:'选项2'}], |
|
||||
|
|
||||
thirteen: [{id:'0',name:'选项0'},{id:'1',name:'选项1'},{id:'2',name:'选项2'}], |
|
||||
|
|
||||
fourteen: [{id:'0',name:'选项0'},{id:'1',name:'选项1'},{id:'2',name:'选项2'}], |
|
||||
|
|
||||
fifteen: [{id:'0',name:'选项0'},{id:'1',name:'选项1'},{id:'2',name:'选项2'}], |
|
||||
|
|
||||
sixteen: [{id:'0',name:'选项0'},{id:'1',name:'选项1'},{id:'2',name:'选项2'}], |
|
||||
|
|
||||
seventeen: [{id:'0',name:'选项0'},{id:'1',name:'选项1'},{id:'2',name:'选项2'}], |
|
||||
|
|
||||
eighteen: [{id:'0',name:'选项0'},{id:'1',name:'选项1'},{id:'2',name:'选项2'}], |
|
||||
|
|
||||
eighteen: [{id:'0',name:'选项0'},{id:'1',name:'选项1'},{id:'2',name:'选项2'}], |
|
||||
nineteen: [{id:'0',name:'选项0'},{id:'1',name:'选项1'},{id:'2',name:'选项2'}], |
|
||||
twenty: [{id:'0',name:'选项0'},{id:'1',name:'选项1'},{id:'2',name:'选项2'}], |
|
||||
|
|
||||
|
|
||||
}, |
|
||||
load:{list: false,}, |
|
||||
addFormRules: { |
|
||||
id: [ |
|
||||
{ required: false, message: '主键', trigger: 'blur' } |
|
||||
] |
|
||||
}, |
|
||||
//新增界面数据 表单字段定义 |
|
||||
addForm: {formId:'formId',id:'1',showStyle:'origin',fieldId:'one',fieldIdCamel:'one',fieldTitle:'文本',fieldType:'text',fieldLength:20,defaultValue:'',isMultiple:'0',placeholder:'请输入',isRequired:'0',isDict:'0',dictCode:'',remark:'属性',extFieldType:'',toFlow:'0',flowFieldId:'',isBizKey:'0',fieldQx:''}, |
|
||||
myFormDef:{id:'',tableName:'',tableOwner:'',isCreateTable:'',formName:'',userid:'',deptid:'',formType:'',isTemplate:'',bizType:'',ctime:'',branchId:''}, |
|
||||
/**begin 在下面加自定义属性,记得补上面的一个逗号**/ |
|
||||
selectedFields:[], |
|
||||
sampleFields:[ |
|
||||
{formId:'formId',id:'1',showStyle:'origin',fieldId:'one',fieldIdCamel:'one',fieldTitle:'文本',isDict:'0',dictCode:'',fieldType:'text',fieldLength:20,defaultValue:'',isMultiple:'0',placeholder:'请输入',isRequired:'0',remark:'属性',extFieldType:'',toFlow:'0',flowFieldId:'',isBizKey:'0',fieldQx:''}, |
|
||||
{formId:'formId',id:'4',showStyle:'origin',fieldId:'four',fieldIdCamel:'four',fieldTitle:'多行文本',isDict:'0',dictCode:'',fieldType:'textarea',fieldLength:20,defaultValue:'',isMultiple:'0',placeholder:'请输入',isRequired:'0',remark:'属性',extFieldType:'',toFlow:'0',flowFieldId:'',isBizKey:'0',fieldQx:''}, |
|
||||
{formId:'formId',id:'41',showStyle:'origin',fieldId:'four1',fieldIdCamel:'four1',fieldTitle:'html',isDict:'0',dictCode:'',fieldType:'text',fieldLength:20,defaultValue:'',isMultiple:'0',placeholder:'请输入',isRequired:'0',remark:'属性',extFieldType:'html',toFlow:'0',flowFieldId:'',isBizKey:'0',fieldQx:''}, |
|
||||
{formId:'formId',id:'42',showStyle:'origin',fieldId:'four2',fieldIdCamel:'four2',fieldTitle:'图片',isDict:'0',dictCode:'',fieldType:'image',fieldLength:20,defaultValue:'https://fuss10.elemecdn.com/e/5d/4a731a90594a4af544c0c25941171jpeg.jpeg',isMultiple:'0',placeholder:'请输入',isRequired:'0',remark:'属性',extFieldType:'image',toFlow:'0',flowFieldId:'',isBizKey:'0',fieldQx:''}, |
|
||||
{formId:'formId',id:'43',showStyle:'origin',fieldId:'four3',fieldIdCamel:'four3',fieldTitle:'文件',isDict:'0',dictCode:'',fieldType:'att',fieldLength:20,defaultValue:'https://fuss10.elemecdn.com/e/5d/4a731a90594a4af544c0c25941171jpeg.jpeg',isMultiple:'0',placeholder:'请输入',isRequired:'0',remark:'属性',extFieldType:'att',toFlow:'0',flowFieldId:'',isBizKey:'0',fieldQx:''}, |
|
||||
{formId:'formId',id:'44',showStyle:'origin',fieldId:'four4',fieldIdCamel:'four4',fieldTitle:'链接',isDict:'0',dictCode:'',fieldType:'link',fieldLength:20,defaultValue:'https://fuss10.elemecdn.com/e/5d/4a731a90594a4af544c0c25941171jpeg.jpeg',isMultiple:'0',placeholder:'请输入',isRequired:'0',remark:'属性',extFieldType:'link',toFlow:'0',flowFieldId:'',isBizKey:'0',fieldQx:''}, |
|
||||
|
|
||||
{formId:'formId',id:'2',showStyle:'origin',fieldId:'two',fieldIdCamel:'two',fieldTitle:'数字',isDict:'0',dictCode:'',fieldType:'number',fieldLength:20,defaultValue:'',isMultiple:'0',placeholder:'请输入',isRequired:'0',remark:'属性',extFieldType:'',toFlow:'0',flowFieldId:'',isBizKey:'0',fieldQx:''}, |
|
||||
{formId:'formId',id:'3',showStyle:'origin',fieldId:'three',fieldIdCamel:'three',fieldTitle:'金额',isDict:'0',dictCode:'',fieldType:'amount',fieldLength:20,defaultValue:'',isMultiple:'0',placeholder:'请输入',isRequired:'0',remark:'属性',extFieldType:'',toFlow:'0',flowFieldId:'',isBizKey:'0',fieldQx:''}, |
|
||||
|
|
||||
{formId:'formId',id:'5',showStyle:'origin',fieldId:'five',fieldIdCamel:'five',fieldTitle:'单选下拉',isDict:'0',dictCode:'',fieldType:'select',fieldLength:20,defaultValue:'',isMultiple:'0',placeholder:'请输入',isRequired:'0',remark:'属性',extFieldType:'',toFlow:'0',flowFieldId:'',isBizKey:'0',fieldQx:''}, |
|
||||
{formId:'formId',id:'6',showStyle:'origin',fieldId:'six',fieldIdCamel:'six',fieldTitle:'多选下拉',isDict:'0',dictCode:'',fieldType:'select',fieldLength:20,defaultValue:'',isMultiple:'1',placeholder:'请输入',isRequired:'0',remark:'属性',extFieldType:'',toFlow:'0',flowFieldId:'',isBizKey:'0',fieldQx:''}, |
|
||||
|
|
||||
{formId:'formId',id:'7',showStyle:'origin',fieldId:'seven',fieldIdCamel:'seven',fieldTitle:'单选',isDict:'0',dictCode:'',fieldType:'radio',fieldLength:20,defaultValue:'',isMultiple:'0',placeholder:'请输入',isRequired:'0',remark:'属性',extFieldType:'',toFlow:'0',flowFieldId:'',isBizKey:'0',fieldQx:''}, |
|
||||
{formId:'formId',id:'8',showStyle:'origin',fieldId:'eight',fieldIdCamel:'eight',fieldTitle:'单选框',isDict:'0',dictCode:'',fieldType:'checkbox',fieldLength:20,defaultValue:'',isMultiple:'0',placeholder:'请输入',isRequired:'0',remark:'属性',extFieldType:'',toFlow:'0',flowFieldId:'',isBizKey:'0',fieldQx:''}, |
|
||||
{formId:'formId',id:'9',showStyle:'origin',fieldId:'nine',fieldIdCamel:'nine',fieldTitle:'多选框',isDict:'0',dictCode:'',fieldType:'checkbox',fieldLength:20,defaultValue:'',isMultiple:'1',placeholder:'请输入',isRequired:'0',remark:'属性',extFieldType:'',toFlow:'0',flowFieldId:'',isBizKey:'0',fieldQx:''}, |
|
||||
|
|
||||
{formId:'formId',id:'10',showStyle:'origin',fieldId:'ten',fieldIdCamel:'ten',fieldTitle:'时间',isDict:'0',dictCode:'',fieldType:'time',fieldLength:20,defaultValue:'',isMultiple:'0',placeholder:'请输入',isRequired:'0',remark:'属性',extFieldType:'',toFlow:'0',flowFieldId:'',isBizKey:'0',fieldQx:''}, |
|
||||
{formId:'formId',id:'11',showStyle:'origin',fieldId:'eleven',fieldIdCamel:'eleven',fieldTitle:'日期',isDict:'0',dictCode:'',fieldType:'date',fieldLength:20,defaultValue:'',isMultiple:'0',placeholder:'请输入',isRequired:'0',remark:'属性',extFieldType:'',toFlow:'0',flowFieldId:'',isBizKey:'0',fieldQx:''}, |
|
||||
{formId:'formId',id:'12',showStyle:'origin',fieldId:'twelve',fieldIdCamel:'twelve',fieldTitle:'日期时间',isDict:'0',dictCode:'',fieldType:'datetime',fieldLength:20,defaultValue:'',isMultiple:'0',placeholder:'请输入日期时间',isRequired:'0',remark:'属性',extFieldType:'',toFlow:'0',flowFieldId:'',isBizKey:'0',fieldQx:''}, |
|
||||
{formId:'formId',id:'13',showStyle:'origin',fieldId:'thirteen',fieldIdCamel:'thirteen',fieldTitle:'年',isDict:'0',dictCode:'',fieldType:'year',fieldLength:20,defaultValue:'',isMultiple:'0',placeholder:'请选中年份',isRequired:'0',remark:'属性',extFieldType:'',toFlow:'0',flowFieldId:'',isBizKey:'0',fieldQx:''}, |
|
||||
{formId:'formId',id:'14',showStyle:'origin',fieldId:'fourteen',fieldIdCamel:'fourteen',fieldTitle:'月',isDict:'0',dictCode:'',fieldType:'month',fieldLength:20,defaultValue:'',isMultiple:'0',placeholder:'请选中月份',isRequired:'0',remark:'属性',extFieldType:'',toFlow:'0',flowFieldId:'',isBizKey:'0',fieldQx:''}, |
|
||||
{formId:'formId',id:'141',showStyle:'origin',fieldId:'fourteen1',fieldIdCamel:'fourteen1',fieldTitle:'日期区间',isDict:'0',dictCode:'',fieldType:'daterange',fieldLength:20,defaultValue:'',isMultiple:'0',placeholder:'请输入',isRequired:'0',remark:'属性',extFieldType:'',toFlow:'0',flowFieldId:'',isBizKey:'0',fieldQx:''}, |
|
||||
|
|
||||
{formId:'formId',id:'15',showStyle:'origin',fieldId:'fifteen',fieldIdCamel:'fifteen',fieldTitle:'部门(单选)',isDict:'0',dictCode:'',fieldType:'select',fieldLength:20,defaultValue:'',isMultiple:'0',placeholder:'请输入',isRequired:'0',remark:'属性',extFieldType:'dept',toFlow:'0',flowFieldId:'',isBizKey:'0',fieldQx:''}, |
|
||||
{formId:'formId',id:'16',showStyle:'origin',fieldId:'sixteen',fieldIdCamel:'sixteen',fieldTitle:'部门(多选)',isDict:'0',dictCode:'',fieldType:'select',fieldLength:20,defaultValue:'',isMultiple:'1',placeholder:'请输入',isRequired:'0',remark:'属性',extFieldType:'dept',toFlow:'0',flowFieldId:'',isBizKey:'0',fieldQx:''}, |
|
||||
|
|
||||
{formId:'formId',id:'17',showStyle:'origin',fieldId:'seventeen',fieldIdCamel:'seventeen',fieldTitle:'员工(多选)',isDict:'0',dictCode:'',fieldType:'select',fieldLength:20,defaultValue:'',isMultiple:'1',placeholder:'支持多选',isRequired:'0',remark:'属性',extFieldType:'user',toFlow:'0',flowFieldId:'',isBizKey:'0',fieldQx:''}, |
|
||||
{formId:'formId',id:'18',showStyle:'origin',fieldId:'eighteen',fieldIdCamel:'eighteen',fieldTitle:'员工(单选)',isDict:'0',dictCode:'',fieldType:'select',fieldLength:20,defaultValue:'',isMultiple:'0',placeholder:'单选',isRequired:'0',remark:'属性',extFieldType:'user',toFlow:'0',flowFieldId:'',isBizKey:'0',fieldQx:''}, |
|
||||
{formId:'formId',id:'19',showStyle:'origin',fieldId:'nineteen',fieldIdCamel:'nineteen',fieldTitle:'标签(单选)',isDict:'0',dictCode:'',fieldType:'select',fieldLength:20,defaultValue:'',isMultiple:'0',placeholder:'单选标签',isRequired:'0',remark:'属性',extFieldType:'tag',toFlow:'0',flowFieldId:'',isBizKey:'0',fieldQx:''}, |
|
||||
{formId:'formId',id:'20',showStyle:'origin',fieldId:'twenty',fieldIdCamel:'twenty',fieldTitle:'标签(单选)',isDict:'0',dictCode:'',fieldType:'select',fieldLength:20,defaultValue:'',isMultiple:'1',placeholder:'多选标签',isRequired:'0',remark:'属性',extFieldType:'tag',toFlow:'0',flowFieldId:'',isBizKey:'0',fieldQx:''} |
|
||||
|
|
||||
], |
|
||||
delFields:[],//存放删除的属性 |
|
||||
drag:true, |
|
||||
showPopover:false, |
|
||||
activeName:'first', |
|
||||
metaItemSelected:{},//选择的基础数据二级分类代码 |
|
||||
itemOptionMngVisible:false,//基础数据弹出框 |
|
||||
fieldIds: [ |
|
||||
{fieldId:'zero',fieldIdCamel:'zero'}, |
|
||||
{fieldId:'one',fieldIdCamel:'one'}, |
|
||||
{fieldId:'two',fieldIdCamel:'two'}, |
|
||||
{fieldId:'three',fieldIdCamel:'three'}, |
|
||||
{fieldId:'four',fieldIdCamel:'four'}, |
|
||||
{fieldId:'five',fieldIdCamel:'five'}, |
|
||||
{fieldId:'six',fieldIdCamel:'six'}, |
|
||||
{fieldId:'seven',fieldIdCamel:'seven'}, |
|
||||
{fieldId:'eight',fieldIdCamel:'eight'}, |
|
||||
{fieldId:'nine',fieldIdCamel:'nine'}, |
|
||||
{fieldId:'ten',fieldIdCamel:'ten'}, |
|
||||
{fieldId:'eleven',fieldIdCamel:'eleven'}, |
|
||||
{fieldId:'twelve',fieldIdCamel:'twelve'}, |
|
||||
{fieldId:'thirteen',fieldIdCamel:'thirteen'}, |
|
||||
{fieldId:'fourteen',fieldIdCamel:'fourteen'}, |
|
||||
{fieldId:'fifteen',fieldIdCamel:'fifteen'} |
|
||||
], |
|
||||
//新增界面数据 表单数据表 |
|
||||
showData: { |
|
||||
id:'',two:'',three:'',four:'',five:'',six:'',seven:'',eight:'',nine:'',ten:'',lastTime:'',one:'',zero:'',remark:'',formId:'',userid:'',eleven:'',twelve:'',thirteen:'',fourteen:'',fifteen:'',sixteen:'',seventeen:'',eighteen:'',nineteen:'',twenty:'',deptid:'',branchId:'' |
|
||||
}, |
|
||||
sampleData:{ |
|
||||
id:'',two:'',three:'',four:'',five:'',six:'',seven:'',eight:'',nine:'',ten:'',lastTime:'',one:'',zero:'',remark:'',formId:'',userid:'',eleven:'',twelve:'',thirteen:'',fourteen:'',fifteen:'',sixteen:'',seventeen:'',eighteen:'',nineteen:'',twenty:'',deptid:'',branchId:'' |
|
||||
}, |
|
||||
primaryKeys:[], |
|
||||
/**end 在上面加自定义属性**/ |
|
||||
}//end return |
|
||||
},//end data |
|
||||
methods: { |
|
||||
// 取消按钮点击 父组件监听@cancel="addFormVisible=false" 监听 |
|
||||
handleCancel:function(){ |
|
||||
this.$emit('cancel'); |
|
||||
}, |
|
||||
itemDelete(item,index){ |
|
||||
this.addForm ={}; |
|
||||
this.showPopover=false; |
|
||||
this.selectedFields.splice(index, 1); |
|
||||
|
|
||||
}, |
|
||||
itemClick(item,index){ |
|
||||
this.addForm =item; |
|
||||
this.showPopover=true; |
|
||||
|
|
||||
}, |
|
||||
|
|
||||
setPrimaryKeys:function( ) { |
|
||||
var primaryKeys=this.primaryKeys; |
|
||||
var isBizKeyPrefix=""; |
|
||||
if(primaryKeys.some(i=>i=='cuserid')){ |
|
||||
isBizKeyPrefix="1" |
|
||||
}else{ |
|
||||
isBizKeyPrefix="0" |
|
||||
} |
|
||||
|
|
||||
if(primaryKeys.some(i=>i=='deptid')){ |
|
||||
isBizKeyPrefix=isBizKeyPrefix+"1" |
|
||||
}else{ |
|
||||
isBizKeyPrefix=isBizKeyPrefix+"0" |
|
||||
} |
|
||||
this.selectedFields.forEach(field=>{ |
|
||||
if(primaryKeys.some(key=>field.fieldIdCamel==key)){ |
|
||||
field.isBizKey=isBizKeyPrefix+"1" |
|
||||
}else{ |
|
||||
field.isBizKey=isBizKeyPrefix+"0" |
|
||||
} |
|
||||
}); |
|
||||
}, |
|
||||
add(evt){ |
|
||||
let item=this.selectedFields[evt.newIndex]; |
|
||||
item.isNewAdd='1' |
|
||||
this.selectedFields[evt.newIndex]=Object.assign({}, item); |
|
||||
var noSelectFieldId=this.fieldIds.find(i=>{ |
|
||||
return !this.selectedFields.some(k=>k.fieldId==i.fieldId && k.isNewAdd!='1'); |
|
||||
}) |
|
||||
this.selectedFields[evt.newIndex].fieldId=noSelectFieldId.fieldId |
|
||||
this.selectedFields[evt.newIndex].fieldIdCamel=noSelectFieldId.fieldIdCamel |
|
||||
this.selectedFields[evt.newIndex].isNewAdd='0' |
|
||||
this.addForm=this.selectedFields[evt.newIndex]; |
|
||||
|
|
||||
}, |
|
||||
|
|
||||
deleteBaseData(){ |
|
||||
this.addForm.isDict='0'; |
|
||||
this.addForm.dictCode=''; |
|
||||
}, |
|
||||
|
|
||||
/**end 在上面加自定义方法**/ |
|
||||
|
|
||||
},//end method |
|
||||
components: { |
|
||||
//在下面添加其它组件 'form-field-edit':FormFieldEdit |
|
||||
draggable, FieldQxSet |
|
||||
}, |
|
||||
mounted() { |
|
||||
|
|
||||
this.myFormDef=this.formDef |
|
||||
if(this.formFields){ |
|
||||
this.selectedFields=JSON.parse(JSON.stringify(this.formFields)) |
|
||||
}else{ |
|
||||
this.selectedFields=[] |
|
||||
} |
|
||||
|
|
||||
}//end mounted |
|
||||
} |
|
||||
|
|
||||
</script> |
|
||||
|
|
||||
<style rel="stylesheet/scss" lang="scss" scoped> |
|
||||
.min-height{ |
|
||||
min-height:300px; |
|
||||
} |
|
||||
|
|
||||
|
|
||||
.set-btn { |
|
||||
display: none; |
|
||||
} |
|
||||
|
|
||||
|
|
||||
.form-item:hover .set-btn { |
|
||||
display: inline-block; |
|
||||
} |
|
||||
|
|
||||
</style> |
|
||||
@ -0,0 +1,317 @@ |
|||||
|
<template> |
||||
|
<section> |
||||
|
<el-row class="border padding"> |
||||
|
<el-col :span="16"> |
||||
|
<draggable id="delDrg" class="dragArea" :list="delFields" :options="{group:{ name:'g1'}, animation:150}" :no-transition-on-drag="true" @start="drag=true" @end="drag=false"> |
||||
|
<el-row type="flex"> |
||||
|
<el-badge :value="selectedFields.length"> |
||||
|
<span style="align:center;margin-top:50px;"> |
||||
|
<slot name="setBtn"> |
||||
|
</slot> |
||||
|
将右边表单元素拖拽到方框内 拖拽表单元素可以排序,最多支持15个字段 |
||||
|
</span> |
||||
|
</el-badge> |
||||
|
</el-row> |
||||
|
</draggable> |
||||
|
<el-form class="drag" label-width="100px" v-adaptive style="width:100%;height:100px;overflow:auto" ref="showDataRef"> |
||||
|
<div style="border:1px dashed #000;padding: 20px;"> |
||||
|
<slot name="formName"> |
||||
|
<el-input label="标题" v-model="myFormDef.formName" required width="100%" placeholder="标题"> |
||||
|
</el-input> |
||||
|
</slot> |
||||
|
|
||||
|
<el-form-item > |
||||
|
<div v-if="selectedFields.length==0"> |
||||
|
<span> |
||||
|
从右边拖拽属性来此,可添加表单属性 <i class="el-icon-download"></i> |
||||
|
</span> |
||||
|
</div> |
||||
|
</el-form-item> |
||||
|
<el-row> |
||||
|
<draggable id="sf" class="dragArea min-height" v-model="selectedFields" :options="{group:{ name:'g1'}, animation:150}" @add="add" :no-transition-on-drag="true" @start="drag=true" @end="drag=false"> |
||||
|
|
||||
|
<el-col v-for="(item,index) in selectedFields" :key="index" :span="calcSpan(item)"> |
||||
|
<mdp-field :gutter="0" :span="24" :value="item" @change="(v)=>Object.assign(item,v)"></mdp-field> |
||||
|
</el-col> |
||||
|
</draggable> |
||||
|
</el-row> |
||||
|
</div> |
||||
|
</el-form> |
||||
|
</el-col> |
||||
|
<el-col :span="8"> |
||||
|
<el-form :model="addForm" label-width="100px" v-adaptive style="width:100%;height:100px;overflow:auto" :rules="addFormRules" ref="inputAddForm"> |
||||
|
<el-row> |
||||
|
<draggable id="af" class="dragArea" :options="{group:{ name:'g1', pull:'clone'}, animation:150}" v-model="sampleFields" :move="onMove"> |
||||
|
|
||||
|
<el-col v-for="(item,index) in sampleFields" :key="index" :span="calcSpan(item)"> |
||||
|
<mdp-field :gutter="0" :span="24" :value="item"></mdp-field> |
||||
|
</el-col> |
||||
|
|
||||
|
</draggable> |
||||
|
</el-row> |
||||
|
</el-form> |
||||
|
</el-col> |
||||
|
|
||||
|
</el-row> |
||||
|
</section> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
import draggable from 'vuedraggable' |
||||
|
import { mapGetters } from 'vuex' |
||||
|
import MdpField from './Field.vue' |
||||
|
export default { |
||||
|
computed: { |
||||
|
...mapGetters([ |
||||
|
'userInfo' |
||||
|
]) |
||||
|
}, |
||||
|
props:{ |
||||
|
visible:{ |
||||
|
type:Boolean, |
||||
|
default:false, |
||||
|
}, |
||||
|
formDef:{ |
||||
|
type:Object, |
||||
|
default:null, |
||||
|
}, |
||||
|
formFields:{ |
||||
|
type:Array, |
||||
|
default:[] |
||||
|
}, |
||||
|
span:{ |
||||
|
type:Number, |
||||
|
default:12, |
||||
|
} |
||||
|
}, |
||||
|
watch: { |
||||
|
'formDef':function( formDef ) { |
||||
|
if(formDef==this.myFormDef){ |
||||
|
return; |
||||
|
} |
||||
|
this.myFormDef=formDef; |
||||
|
}, |
||||
|
'addForm.isBizKey':function( isBizKey ) { |
||||
|
if(isBizKey=='1'){ |
||||
|
this.addForm.isRequired="1" |
||||
|
} |
||||
|
}, |
||||
|
'visible':function(visible) { |
||||
|
if(visible==true){ |
||||
|
|
||||
|
this.selectedFields=JSON.parse(JSON.stringify(this.formFields)) |
||||
|
this.setPrimaryKeys(); |
||||
|
this.$nextTick(()=>{ |
||||
|
this.$refs.showDataRef.clearValidate(); |
||||
|
}) |
||||
|
} |
||||
|
} |
||||
|
}, |
||||
|
data() { |
||||
|
var options={ |
||||
|
list: [{id:'0',name:'选项0'},{id:'1',name:'选项1'},{id:'2',name:'选项2'}], |
||||
|
yesOrNo: [{id:'0',name:'否'},{id:'1',name:'是'}], |
||||
|
} |
||||
|
return { |
||||
|
filters:{ |
||||
|
users:[] |
||||
|
}, |
||||
|
pickerOptions:this.$mdp.getPickerOptions(), |
||||
|
options:options, |
||||
|
|
||||
|
load:{list: false,}, |
||||
|
addFormRules: { |
||||
|
id: [ |
||||
|
{ required: false, message: '主键', trigger: 'blur' } |
||||
|
] |
||||
|
}, |
||||
|
addForm: {formId:'formId',id:'1',showStyle:'origin',fieldId:'one',fieldIdCamel:'one',fieldTitle:'文本',fieldType:'text',fieldLength:24,defaultValue:'',isMultiple:'0',placeholder:'请输入',isRequired:'0',isDict:'0',dictCode:'',remark:'属性',extFieldType:'',toFlow:'0',flowFieldId:'',isBizKey:'0',fieldQx:''}, |
||||
|
myFormDef:{id:'',tableName:'',tableOwner:'',isCreateTable:'',formName:'',userid:'',deptid:'',formType:'',isTemplate:'',bizType:'',ctime:'',branchId:''}, |
||||
|
selectedFields:[], |
||||
|
sampleFields:[ |
||||
|
{formId:'formId',id:'1',showStyle:'origin',fieldId:'one',fieldIdCamel:'one',fieldTitle:'文本',isDict:'0',dictCode:'',fieldType:'text',fieldLength:24,defaultValue:'',isMultiple:'0',placeholder:'请输入',isRequired:'0',remark:'属性',extFieldType:'',toFlow:'0',flowFieldId:'',isBizKey:'0',fieldQx:''}, |
||||
|
{formId:'formId',id:'4',showStyle:'origin',fieldId:'four',fieldIdCamel:'four',fieldTitle:'多行文本',isDict:'0',dictCode:'',fieldType:'textarea',fieldLength:24,defaultValue:'',isMultiple:'0',placeholder:'请输入',isRequired:'0',remark:'属性',extFieldType:'',toFlow:'0',flowFieldId:'',isBizKey:'0',fieldQx:''}, |
||||
|
{formId:'formId',id:'41',showStyle:'origin',fieldId:'four1',fieldIdCamel:'four1',fieldTitle:'html',isDict:'0',dictCode:'',fieldType:'text',fieldLength:24,defaultValue:'',isMultiple:'0',placeholder:'请输入',isRequired:'0',remark:'属性',extFieldType:'html',toFlow:'0',flowFieldId:'',isBizKey:'0',fieldQx:''}, |
||||
|
{formId:'formId',id:'42',showStyle:'origin',fieldId:'four2',fieldIdCamel:'four2',fieldTitle:'图片',isDict:'0',dictCode:'',fieldType:'image',fieldLength:24,defaultValue:'https://fuss10.elemecdn.com/e/5d/4a731a90594a4af544c0c25941171jpeg.jpeg',isMultiple:'0',placeholder:'请输入',isRequired:'0',remark:'属性',extFieldType:'image',toFlow:'0',flowFieldId:'',isBizKey:'0',fieldQx:''}, |
||||
|
{formId:'formId',id:'43',showStyle:'origin',fieldId:'four3',fieldIdCamel:'four3',fieldTitle:'文件',isDict:'0',dictCode:'',fieldType:'att',fieldLength:24,defaultValue:'https://fuss10.elemecdn.com/e/5d/4a731a90594a4af544c0c25941171jpeg.jpeg',isMultiple:'0',placeholder:'请输入',isRequired:'0',remark:'属性',extFieldType:'att',toFlow:'0',flowFieldId:'',isBizKey:'0',fieldQx:''}, |
||||
|
{formId:'formId',id:'44',showStyle:'origin',fieldId:'four4',fieldIdCamel:'four4',fieldTitle:'链接',isDict:'0',dictCode:'',fieldType:'link',fieldLength:24,defaultValue:'https://fuss10.elemecdn.com/e/5d/4a731a90594a4af544c0c25941171jpeg.jpeg',isMultiple:'0',placeholder:'请输入',isRequired:'0',remark:'属性',extFieldType:'link',toFlow:'0',flowFieldId:'',isBizKey:'0',fieldQx:''}, |
||||
|
|
||||
|
{formId:'formId',id:'2',showStyle:'origin',fieldId:'two',fieldIdCamel:'two',fieldTitle:'数字',isDict:'0',dictCode:'',fieldType:'number',fieldLength:24,defaultValue:'',isMultiple:'0',placeholder:'请输入',isRequired:'0',remark:'属性',extFieldType:'',toFlow:'0',flowFieldId:'',isBizKey:'0',fieldQx:''}, |
||||
|
{formId:'formId',id:'3',showStyle:'origin',fieldId:'three',fieldIdCamel:'three',fieldTitle:'金额',isDict:'0',dictCode:'',fieldType:'amount',fieldLength:24,defaultValue:'',isMultiple:'0',placeholder:'请输入',isRequired:'0',remark:'属性',extFieldType:'',toFlow:'0',flowFieldId:'',isBizKey:'0',fieldQx:''}, |
||||
|
|
||||
|
{formId:'formId',id:'5',showStyle:'origin',fieldId:'five',fieldIdCamel:'five',fieldTitle:'单选下拉',isDict:'0',dictCode:'',plusOptions:options.list,fieldType:'select',fieldLength:24,defaultValue:'',isMultiple:'0',placeholder:'请输入',isRequired:'0',remark:'属性',extFieldType:'',toFlow:'0',flowFieldId:'',isBizKey:'0',fieldQx:''}, |
||||
|
{formId:'formId',id:'6',showStyle:'origin',fieldId:'six',fieldIdCamel:'six',fieldTitle:'多选下拉',isDict:'0',dictCode:'',plusOptions:options.list,fieldType:'select',fieldLength:24,defaultValue:'',isMultiple:'1',placeholder:'请输入',isRequired:'0',remark:'属性',extFieldType:'',toFlow:'0',flowFieldId:'',isBizKey:'0',fieldQx:''}, |
||||
|
|
||||
|
{formId:'formId',id:'7',showStyle:'origin',fieldId:'seven',fieldIdCamel:'seven',fieldTitle:'单选',isDict:'0',dictCode:'',plusOptions:options.yesOrNo,fieldType:'radio',fieldLength:24,defaultValue:'',isMultiple:'0',placeholder:'请输入',isRequired:'0',remark:'属性',extFieldType:'',toFlow:'0',flowFieldId:'',isBizKey:'0',fieldQx:''}, |
||||
|
{formId:'formId',id:'8',showStyle:'origin',fieldId:'eight',fieldIdCamel:'eight',fieldTitle:'单选框',isDict:'0',dictCode:'',plusOptions:options.list,fieldType:'checkbox',fieldLength:24,defaultValue:'',isMultiple:'0',placeholder:'请输入',isRequired:'0',remark:'属性',extFieldType:'',toFlow:'0',flowFieldId:'',isBizKey:'0',fieldQx:''}, |
||||
|
{formId:'formId',id:'9',showStyle:'origin',fieldId:'nine',fieldIdCamel:'nine',fieldTitle:'多选框',isDict:'0',dictCode:'',plusOptions:options.list,fieldType:'checkbox',fieldLength:24,defaultValue:'',isMultiple:'1',placeholder:'请输入',isRequired:'0',remark:'属性',extFieldType:'',toFlow:'0',flowFieldId:'',isBizKey:'0',fieldQx:''}, |
||||
|
|
||||
|
{formId:'formId',id:'10',showStyle:'origin',fieldId:'ten',fieldIdCamel:'ten',fieldTitle:'时间',isDict:'0',dictCode:'',fieldType:'time',fieldLength:24,defaultValue:'',isMultiple:'0',placeholder:'请输入',isRequired:'0',remark:'属性',extFieldType:'',toFlow:'0',flowFieldId:'',isBizKey:'0',fieldQx:''}, |
||||
|
{formId:'formId',id:'11',showStyle:'origin',fieldId:'eleven',fieldIdCamel:'eleven',fieldTitle:'日期',isDict:'0',dictCode:'',fieldType:'date',fieldLength:24,defaultValue:'',isMultiple:'0',placeholder:'请输入',isRequired:'0',remark:'属性',extFieldType:'',toFlow:'0',flowFieldId:'',isBizKey:'0',fieldQx:''}, |
||||
|
{formId:'formId',id:'12',showStyle:'origin',fieldId:'twelve',fieldIdCamel:'twelve',fieldTitle:'日期时间',isDict:'0',dictCode:'',fieldType:'datetime',fieldLength:24,defaultValue:'',isMultiple:'0',placeholder:'请输入日期时间',isRequired:'0',remark:'属性',extFieldType:'',toFlow:'0',flowFieldId:'',isBizKey:'0',fieldQx:''}, |
||||
|
{formId:'formId',id:'13',showStyle:'origin',fieldId:'thirteen',fieldIdCamel:'thirteen',fieldTitle:'年',isDict:'0',dictCode:'',fieldType:'year',fieldLength:24,defaultValue:'',isMultiple:'0',placeholder:'请选中年份',isRequired:'0',remark:'属性',extFieldType:'',toFlow:'0',flowFieldId:'',isBizKey:'0',fieldQx:''}, |
||||
|
{formId:'formId',id:'14',showStyle:'origin',fieldId:'fourteen',fieldIdCamel:'fourteen',fieldTitle:'月',isDict:'0',dictCode:'',fieldType:'month',fieldLength:24,defaultValue:'',isMultiple:'0',placeholder:'请选中月份',isRequired:'0',remark:'属性',extFieldType:'',toFlow:'0',flowFieldId:'',isBizKey:'0',fieldQx:''}, |
||||
|
{formId:'formId',id:'141',showStyle:'origin',fieldId:'fourteen1',fieldIdCamel:'fourteen1',fieldTitle:'日期区间',isDict:'0',dictCode:'',fieldType:'daterange',fieldLength:24,defaultValue:'',isMultiple:'0',placeholder:'请输入',isRequired:'0',remark:'属性',extFieldType:'',toFlow:'0',flowFieldId:'',isBizKey:'0',fieldQx:''}, |
||||
|
|
||||
|
{formId:'formId',id:'15',showStyle:'origin',fieldId:'fifteen',fieldIdCamel:'fifteen',fieldTitle:'部门',isDict:'0',dictCode:'',fieldType:'select',fieldLength:24,defaultValue:'',isMultiple:'0',placeholder:'请输入',isRequired:'0',remark:'属性',extFieldType:'dept',toFlow:'0',flowFieldId:'',isBizKey:'0',fieldQx:''}, |
||||
|
{formId:'formId',id:'17',showStyle:'origin',fieldId:'seventeen',fieldIdCamel:'seventeen',fieldTitle:'员工',isDict:'0',dictCode:'',fieldType:'select',fieldLength:24,defaultValue:'',isMultiple:'1',placeholder:'支持多选',isRequired:'0',remark:'属性',extFieldType:'user',toFlow:'0',flowFieldId:'',isBizKey:'0',fieldQx:''}, |
||||
|
{formId:'formId',id:'19',showStyle:'origin',fieldId:'nineteen',fieldIdCamel:'nineteen',fieldTitle:'标签',isDict:'0',dictCode:'',fieldType:'select',fieldLength:24,defaultValue:'',isMultiple:'1',placeholder:'多选标签',isRequired:'0',remark:'属性',extFieldType:'tag',toFlow:'0',flowFieldId:'',isBizKey:'0',fieldQx:''}, |
||||
|
{formId:'formId',id:'21',showStyle:'origin',fieldId:'twentyOne',fieldIdCamel:'twentyOne',fieldTitle:'布局-行',isDict:'0',dictCode:'',fieldType:'row',fieldLength:24,defaultValue:'',isMultiple:'1',placeholder:'行',isRequired:'0',remark:'属性',extFieldType:'row',toFlow:'0',flowFieldId:'',isBizKey:'0',fieldQx:'', |
||||
|
children:[ |
||||
|
{formId:'formId',id:'22',showStyle:'origin',fieldId:'four',fieldIdCamel:'four',fieldTitle:'布局-列1',isDict:'0',dictCode:'',fieldType:'text',fieldLength:24,defaultValue:'',isMultiple:'0',placeholder:'请输入',isRequired:'0',remark:'属性',extFieldType:'',toFlow:'0',flowFieldId:'',isBizKey:'0',fieldQx:''}, |
||||
|
{formId:'formId',id:'22',showStyle:'origin',fieldId:'four',fieldIdCamel:'four',fieldTitle:'布局-列2',isDict:'0',dictCode:'',fieldType:'text',fieldLength:24,defaultValue:'',isMultiple:'0',placeholder:'请输入',isRequired:'0',remark:'属性',extFieldType:'',toFlow:'0',flowFieldId:'',isBizKey:'0',fieldQx:''}, |
||||
|
{formId:'formId',id:'22',showStyle:'origin',fieldId:'four',fieldIdCamel:'four',fieldTitle:'布局-列1',isDict:'0',dictCode:'',fieldType:'text',fieldLength:24,defaultValue:'',isMultiple:'0',placeholder:'请输入',isRequired:'0',remark:'属性',extFieldType:'',toFlow:'0',flowFieldId:'',isBizKey:'0',fieldQx:''}, |
||||
|
{formId:'formId',id:'22',showStyle:'origin',fieldId:'four',fieldIdCamel:'four',fieldTitle:'布局-列2',isDict:'0',dictCode:'',fieldType:'text',fieldLength:24,defaultValue:'',isMultiple:'0',placeholder:'请输入',isRequired:'0',remark:'属性',extFieldType:'',toFlow:'0',flowFieldId:'',isBizKey:'0',fieldQx:''}, |
||||
|
] |
||||
|
} |
||||
|
|
||||
|
], |
||||
|
delFields:[],//存放删除的属性 |
||||
|
drag:true, |
||||
|
showPopover:false, |
||||
|
activeName:'first', |
||||
|
metaItemSelected:{},//选择的基础数据二级分类代码 |
||||
|
itemOptionMngVisible:false,//基础数据弹出框 |
||||
|
fieldIds: [ |
||||
|
{fieldId:'zero',fieldIdCamel:'zero'}, |
||||
|
{fieldId:'one',fieldIdCamel:'one'}, |
||||
|
{fieldId:'two',fieldIdCamel:'two'}, |
||||
|
{fieldId:'three',fieldIdCamel:'three'}, |
||||
|
{fieldId:'four',fieldIdCamel:'four'}, |
||||
|
{fieldId:'five',fieldIdCamel:'five'}, |
||||
|
{fieldId:'six',fieldIdCamel:'six'}, |
||||
|
{fieldId:'seven',fieldIdCamel:'seven'}, |
||||
|
{fieldId:'eight',fieldIdCamel:'eight'}, |
||||
|
{fieldId:'nine',fieldIdCamel:'nine'}, |
||||
|
{fieldId:'ten',fieldIdCamel:'ten'}, |
||||
|
{fieldId:'eleven',fieldIdCamel:'eleven'}, |
||||
|
{fieldId:'twelve',fieldIdCamel:'twelve'}, |
||||
|
{fieldId:'thirteen',fieldIdCamel:'thirteen'}, |
||||
|
{fieldId:'fourteen',fieldIdCamel:'fourteen'}, |
||||
|
{fieldId:'fifteen',fieldIdCamel:'fifteen'} |
||||
|
], |
||||
|
//新增界面数据 表单数据表 |
||||
|
showData: { |
||||
|
id:'',two:'',three:'',four:'',five:'',six:'',seven:'',eight:'',nine:'',ten:'',lastTime:'',one:'',zero:'',remark:'',formId:'',userid:'',eleven:'',twelve:'',thirteen:'',fourteen:'',fifteen:'',sixteen:'',seventeen:'',eighteen:'',nineteen:'',twenty:'',deptid:'',branchId:'' |
||||
|
}, |
||||
|
sampleData:{ |
||||
|
id:'',two:'',three:'',four:'',five:'',six:'',seven:'',eight:'',nine:'',ten:'',lastTime:'',one:'',zero:'',remark:'',formId:'',userid:'',eleven:'',twelve:'',thirteen:'',fourteen:'',fifteen:'',sixteen:'',seventeen:'',eighteen:'',nineteen:'',twenty:'',deptid:'',branchId:'' |
||||
|
}, |
||||
|
primaryKeys:[], |
||||
|
/**end 在上面加自定义属性**/ |
||||
|
}//end return |
||||
|
},//end data |
||||
|
methods: { |
||||
|
// 取消按钮点击 父组件监听@cancel="addFormVisible=false" 监听 |
||||
|
handleCancel:function(){ |
||||
|
this.$emit('cancel'); |
||||
|
}, |
||||
|
itemDelete(item,index){ |
||||
|
this.addForm ={}; |
||||
|
this.showPopover=false; |
||||
|
this.selectedFields.splice(index, 1); |
||||
|
|
||||
|
}, |
||||
|
itemClick(item,index){ |
||||
|
this.addForm =item; |
||||
|
this.showPopover=true; |
||||
|
|
||||
|
}, |
||||
|
|
||||
|
setPrimaryKeys:function( ) { |
||||
|
var primaryKeys=this.primaryKeys; |
||||
|
var isBizKeyPrefix=""; |
||||
|
if(primaryKeys.some(i=>i=='cuserid')){ |
||||
|
isBizKeyPrefix="1" |
||||
|
}else{ |
||||
|
isBizKeyPrefix="0" |
||||
|
} |
||||
|
|
||||
|
if(primaryKeys.some(i=>i=='deptid')){ |
||||
|
isBizKeyPrefix=isBizKeyPrefix+"1" |
||||
|
}else{ |
||||
|
isBizKeyPrefix=isBizKeyPrefix+"0" |
||||
|
} |
||||
|
this.selectedFields.forEach(field=>{ |
||||
|
if(primaryKeys.some(key=>field.fieldIdCamel==key)){ |
||||
|
field.isBizKey=isBizKeyPrefix+"1" |
||||
|
}else{ |
||||
|
field.isBizKey=isBizKeyPrefix+"0" |
||||
|
} |
||||
|
}); |
||||
|
}, |
||||
|
add(evt){ |
||||
|
let item=this.selectedFields[evt.newIndex]; |
||||
|
item.isNewAdd='1' |
||||
|
var item2=JSON.parse(JSON.stringify(item)) |
||||
|
if(item2.fieldLength==24){ |
||||
|
item2.fieldLength=12 |
||||
|
} |
||||
|
var noSelectFieldId=this.fieldIds.find(i=>{ |
||||
|
return !this.selectedFields.some(k=>k.fieldId==i.fieldId && k.isNewAdd!='1'); |
||||
|
}) |
||||
|
item2.fieldId=noSelectFieldId.fieldId |
||||
|
item2.fieldIdCamel=noSelectFieldId.fieldIdCamel |
||||
|
item2.isNewAdd='0' |
||||
|
this.selectedFields[evt.newIndex]=item2; |
||||
|
this.addForm=item2; |
||||
|
|
||||
|
}, |
||||
|
|
||||
|
deleteBaseData(){ |
||||
|
this.addForm.isDict='0'; |
||||
|
this.addForm.dictCode=''; |
||||
|
}, |
||||
|
calcSpan(child){ |
||||
|
if(child.fieldLength>0){ |
||||
|
return child.fieldLength |
||||
|
} |
||||
|
if(child.extFieldType=='textarea'){ |
||||
|
return 24 |
||||
|
}else{ |
||||
|
return this.span |
||||
|
} |
||||
|
}, |
||||
|
//move回调方法 |
||||
|
onMove(e,originalEvent){ |
||||
|
//不允许拖拽 |
||||
|
if (e.draggedContext.element.id == '22') return false; |
||||
|
return true; |
||||
|
}, |
||||
|
/**end 在上面加自定义方法**/ |
||||
|
|
||||
|
},//end method |
||||
|
components: { |
||||
|
//在下面添加其它组件 'form-field-edit':FormFieldEdit |
||||
|
draggable, MdpField |
||||
|
}, |
||||
|
mounted() { |
||||
|
|
||||
|
this.myFormDef=this.formDef |
||||
|
if(this.formFields){ |
||||
|
this.selectedFields=JSON.parse(JSON.stringify(this.formFields)) |
||||
|
}else{ |
||||
|
this.selectedFields=[] |
||||
|
} |
||||
|
|
||||
|
}//end mounted |
||||
|
} |
||||
|
|
||||
|
</script> |
||||
|
|
||||
|
<style rel="stylesheet/scss" lang="scss" scoped> |
||||
|
.min-height{ |
||||
|
min-height:300px; |
||||
|
} |
||||
|
|
||||
|
|
||||
|
.set-btn { |
||||
|
display: none; |
||||
|
} |
||||
|
|
||||
|
|
||||
|
.form-item:hover .set-btn { |
||||
|
display: inline-block; |
||||
|
} |
||||
|
|
||||
|
</style> |
||||
Write
Preview
Loading…
Cancel
Save
Reference in new issue