12.31开源admin代码更新

This commit is contained in:
hejinfu1026
2021-12-31 15:58:40 +08:00
parent 21e0d0e136
commit 0616cde752
545 changed files with 9743 additions and 139371 deletions

View File

@@ -28,6 +28,10 @@ export const inputComponents = [
tagIcon: 'input',
defaultValue: undefined,
required: true,
tips:false, //tooltip描述是否开启
tipsDesc:'', //tooltip描述内容
tipsIsLink:false,//是否开启描述链接
tipsLink:'', //描述链接
layout: 'colFormItem',
span: 24,
document: 'https://element.eleme.cn/#/zh-CN/component/input',
@@ -41,7 +45,7 @@ export const inputComponents = [
},
// 其余的为可直接写在组件标签上的属性
placeholder: '请输入',
style: { width: '100%' },
style: { width: '95%' },
clearable: true,
'prefix-icon': '',
'suffix-icon': '',
@@ -59,6 +63,10 @@ export const inputComponents = [
tagIcon: 'textarea',
defaultValue: undefined,
required: true,
tips:false,
tipsDesc:'',
tipsIsLink:false,
tipsLink:'',
layout: 'colFormItem',
span: 24,
regList: [],
@@ -71,7 +79,7 @@ export const inputComponents = [
minRows: 4,
maxRows: 4
},
style: { width: '100%' },
style: { width: '95%' },
maxlength: null,
'show-word-limit': false,
readonly: false,
@@ -89,6 +97,10 @@ export const inputComponents = [
layout: 'colFormItem',
span: 24,
required: true,
tips:false,
tipsDesc:'',
tipsIsLink:false,
tipsLink:'',
regList: [],
document: 'https://element.eleme.cn/#/zh-CN/component/input'
},
@@ -119,6 +131,10 @@ export const inputComponents = [
span: 24,
layout: 'colFormItem',
required: true,
tips:false,
tipsDesc:'',
tipsIsLink:false,
tipsLink:'',
regList: [],
document: 'https://element.eleme.cn/#/zh-CN/component/input-number'
},
@@ -164,6 +180,10 @@ export const selectComponents = [
layout: 'colFormItem',
span: 24,
required: true,
tips:false,
tipsDesc:'',
tipsIsLink:false,
tipsLink:'',
regList: [],
changeTag: true,
document: 'https://element.eleme.cn/#/zh-CN/component/select'
@@ -191,11 +211,15 @@ export const selectComponents = [
labelWidth: null,
tag: 'el-cascader',
tagIcon: 'cascader',
layout: 'colFormItem',
layout: 'colFormItem',
defaultValue: [],
dataType: 'dynamic',
span: 24,
required: true,
tips:false,
tipsDesc:'',
tipsIsLink:false,
tipsLink:'',
regList: [],
changeTag: true,
document: 'https://element.eleme.cn/#/zh-CN/component/cascader'
@@ -240,7 +264,13 @@ export const selectComponents = [
optionType: 'default',
regList: [],
required: true,
tips:false,
tipsDesc:'',
tipsIsLink:false,
tipsLink:'',
border: false,
// bindInput:false, //是否开启绑定输入
// bindValve:'', //绑定输入内容
document: 'https://element.eleme.cn/#/zh-CN/component/radio'
},
__slot__: {
@@ -268,6 +298,10 @@ export const selectComponents = [
layout: 'colFormItem',
optionType: 'default',
required: true,
tips:false,
tipsDesc:'',
tipsIsLink:false,
tipsLink:'',
regList: [],
changeTag: true,
border: false,
@@ -299,6 +333,10 @@ export const selectComponents = [
labelWidth: null,
layout: 'colFormItem',
required: true,
tips:false,
tipsDesc:'',
tipsIsLink:false,
tipsLink:'',
regList: [],
changeTag: true,
document: 'https://element.eleme.cn/#/zh-CN/component/switch'
@@ -323,6 +361,10 @@ export const selectComponents = [
layout: 'colFormItem',
labelWidth: null,
required: true,
tips:false,
tipsDesc:'',
tipsIsLink:false,
tipsLink:'',
regList: [],
changeTag: true,
document: 'https://element.eleme.cn/#/zh-CN/component/slider'
@@ -345,6 +387,10 @@ export const selectComponents = [
layout: 'colFormItem',
labelWidth: null,
required: true,
tips:false,
tipsDesc:'',
tipsIsLink:false,
tipsLink:'',
regList: [],
changeTag: true,
document: 'https://element.eleme.cn/#/zh-CN/component/time-picker'
@@ -370,6 +416,10 @@ export const selectComponents = [
layout: 'colFormItem',
defaultValue: null,
required: true,
tips:false,
tipsDesc:'',
tipsIsLink:false,
tipsLink:'',
regList: [],
changeTag: true,
document: 'https://element.eleme.cn/#/zh-CN/component/time-picker'
@@ -395,6 +445,10 @@ export const selectComponents = [
layout: 'colFormItem',
defaultValue: null,
required: true,
tips:false,
tipsDesc:'',
tipsIsLink:false,
tipsLink:'',
regList: [],
changeTag: true,
document: 'https://element.eleme.cn/#/zh-CN/component/time-picker'
@@ -417,6 +471,10 @@ export const selectComponents = [
span: 24,
layout: 'colFormItem',
required: true,
tips:false,
tipsDesc:'',
tipsIsLink:false,
tipsLink:'',
regList: [],
changeTag: true,
document: 'https://element.eleme.cn/#/zh-CN/component/date-picker'
@@ -440,6 +498,10 @@ export const selectComponents = [
showLabel: true,
labelWidth: null,
required: true,
tips:false,
tipsDesc:'',
tipsIsLink:false,
tipsLink:'',
layout: 'colFormItem',
regList: [],
changeTag: true,
@@ -467,6 +529,10 @@ export const selectComponents = [
labelWidth: null,
layout: 'colFormItem',
required: true,
tips:false,
tipsDesc:'',
tipsIsLink:false,
tipsLink:'',
regList: [],
changeTag: true,
document: 'https://element.eleme.cn/#/zh-CN/component/rate'
@@ -489,6 +555,10 @@ export const selectComponents = [
labelWidth: null,
layout: 'colFormItem',
required: true,
tips:false,
tipsDesc:'',
tipsIsLink:false,
tipsLink:'',
regList: [],
changeTag: true,
document: 'https://element.eleme.cn/#/zh-CN/component/color-picker'
@@ -502,12 +572,16 @@ export const selectComponents = [
__config__: {
label: '上传文件',
tag: 'upload-file',
tagIcon: 'uploadPicture',
tagIcon: 'uploadPicture',
layout: 'colFormItem',
defaultValue: null,
showLabel: true,
labelWidth: null,
required: true,
tips:false,
tipsDesc:'',
tipsIsLink:false,
tipsLink:'',
span: 24,
showTip: false,
buttonText: '点击上传',
@@ -515,7 +589,7 @@ export const selectComponents = [
changeTag: true,
// fileSize: 2,
// sizeUnit: 'MB',
document: 'https://element.eleme.cn/#/zh-CN/component/upload'
document: 'https://element.eleme.cn/#/zh-CN/component/upload'
},
__slot__: {
'list-type': true
@@ -541,6 +615,10 @@ export const selectComponents = [
showLabel: true,
labelWidth: null,
required: true,
tips:false,
tipsDesc:'',
tipsIsLink:false,
tipsLink:'',
span: 24,
showTip: false,
buttonText: '',
@@ -561,25 +639,31 @@ export const selectComponents = [
// 'list-type': 'text',
multiple: false
},
{
__config__: {
label: '富文本编辑器',
tag: 'ueditor-from',
tagIcon: 'ueditorFrom',
layout: 'colFormItem',
defaultValue: null,
showLabel: true,
labelWidth: null,
required: false,
span: 24,
showTip: false,
regList: [],
changeTag: true,
},
height: 300, // 编辑器高度
name: 'ueditor',
disabled: false
}
// {
// __config__: {
// label: '富文本编辑器',
// tag: 'tinymce',
// tagIcon: 'rich-text',
// layout: 'colFormItem',
// defaultValue: null,
// showLabel: true,
// labelWidth: null,
// required: false,
// tips:false,
// tipsDesc:'',
// tipsIsLink:false,
// tipsLink:'',
// span: 24,
// showTip: false,
// regList: [],
// document: "http://tinymce.ax-z.cn",
// renderKey: 1636077154813,
// changeTag: true,
// },
// height: 300, // 编辑器高度
// name: 'tinymce',
// disabled: false
// }
]
// 布局型组件 【左面板】

View File

@@ -15,7 +15,6 @@ const ruleTrigger = {
function renderFrom(h) {
const { formConfCopy } = this
return (
<el-row gutter={formConfCopy.gutter}>
<el-form
@@ -47,7 +46,6 @@ function renderFormItem(h, elementList) {
return elementList.map(scheme => {
const config = scheme.__config__
const layout = layouts[config.layout]
if (layout) {
return layout.call(this, h, scheme)
}
@@ -80,21 +78,51 @@ function buildListeners(scheme) {
return listeners
}
const layouts = {
colFormItem(h, scheme) {
const config = scheme.__config__
const listeners = buildListeners.call(this, scheme)
let labelWidth = config.labelWidth ? `${config.labelWidth}px` : null
if (config.showLabel === false) labelWidth = '0'
return (
<el-col span={config.span}>
<el-form-item label-width={labelWidth} prop={scheme.__vModel__}
label={config.showLabel ? config.label : ''}>
<render conf={scheme} {...{ on: listeners }} />
</el-form-item>
</el-col>
)
if(config.tips && !config.tipsIsLink){
return (
<el-col span={config.span}>
<el-form-item label-width={labelWidth} prop={scheme.__vModel__}
label={config.showLabel ? config.label : ''}>
<el-tooltip effect="dark" placement="top-start" style="padding:10px 5px 0 0;">
            <i class="el-icon-warning-outline" />
            <div slot="content" style="max-width:400px;">{config.tipsDesc}</div>
         </el-tooltip>
<render conf={scheme} {...{ on: listeners }} />
</el-form-item>
</el-col>
)
}else if(config.tips && config.tipsIsLink){
return (
<el-col span={config.span}>
<el-form-item label-width={labelWidth} prop={scheme.__vModel__}
label={config.showLabel ? config.label : ''}>
<el-tooltip effect="dark" placement="top-start" style="padding:10px 5px 0 0;">
            <i class="el-icon-warning-outline" />
            <div slot="content" style="max-width:400px;">
<a href={config.tipsLink} target="_blank">{config.tipsDesc}</a>
</div>
         </el-tooltip>
<render conf={scheme} {...{ on: listeners }} />
</el-form-item>
</el-col>
)
}else{
return (
<el-col span={config.span}>
<el-form-item label-width={labelWidth} prop={scheme.__vModel__}
label={config.showLabel ? config.label : ''}>
<render conf={scheme} {...{ on: listeners }} />
</el-form-item>
</el-col>
)
}
},
rowFormItem(h, scheme) {
let child = renderChildren.apply(this, arguments)

View File

@@ -11,7 +11,7 @@ yarn add form-gen-parser
```
### 使用示例
> [查看在线示例](https://mrhj.gitee.io/form-generator/#/parser)
> [查看在线示例](https://mrhj.gitee.io/form-generator/#/parser)
示例代码:
> [src\components\parser\example\Index.vue](https://github.com/JakHuang/form-generator/blob/dev/src/components/parser/example/Index.vue)

View File

@@ -37,7 +37,7 @@ export default {
},
editData: {
type: Object
}
},
},
data() {
return {

View File

@@ -1,7 +1,7 @@
/* eslint-disable max-len */
export const plugins = [
'advlist anchor autolink autosave code codesample directionality emoticons fullscreen hr image imagetools insertdatetime link lists media nonbreaking noneditable pagebreak paste preview print save searchreplace spellchecker tabfocus table wxTemplate textpattern visualblocks visualchars wordcount'
'advlist anchor autolink autosave code codesample directionality emoticons fullscreen hr image imagetools insertdatetime link lists media nonbreaking noneditable pagebreak paste preview print save searchreplace spellchecker tabfocus table template textpattern visualblocks visualchars wordcount'
]
export const toolbar = [
'code searchreplace bold italic underline strikethrough alignleft aligncenter alignright outdent indent blockquote removeformat subscript superscript codesample hr bullist numlist link image charmap preview anchor pagebreak insertdatetime media table emoticons forecolor backcolor fullscreen'

View File

@@ -0,0 +1,3 @@
import Index from './index.vue'
export default Index

View File

@@ -27,18 +27,40 @@ const layouts = {
if (this.formConf.unFocusedComponentBorder) className += ' unfocus-bordered'
let labelWidth = config.labelWidth ? `${config.labelWidth}px` : null
if (config.showLabel === false) labelWidth = '0'
return (
<el-col span={config.span} class={className}
nativeOnClick={event => { activeItem(element); event.stopPropagation() }}>
<el-form-item label-width={labelWidth}
label={config.showLabel ? config.label : ''} required={config.required}>
<render key={config.renderKey} conf={element} onInput={ event => {
this.$set(config, 'defaultValue', event)
}} />
</el-form-item>
{components.itemBtns.apply(this, arguments)}
</el-col>
)
if(config.tips == undefined){
this.$set(config,'tips',false);//如果以前的表单没有tooltip配置就赋值一个默认值用来读取
}
if(config.tips){
return (
<el-col span={config.span} class={className}
nativeOnClick={event => { activeItem(element); event.stopPropagation() }}>
<el-form-item label-width={labelWidth}
label={config.showLabel ? config.label : ''} required={config.required}>
<el-tooltip effect="dark" placement="top-start" style="padding:10px 5px 0 0;">
            <i class="el-icon-warning-outline" />
            <div slot="content" style="max-width:400px;">{config.tipsDesc}</div>
         </el-tooltip>
<render key={config.renderKey} conf={element} onInput={ event => {
this.$set(config, 'defaultValue', event)
}} />
</el-form-item>
{components.itemBtns.apply(this, arguments)}
</el-col>
)
}else{
return (
<el-col span={config.span} class={className}
nativeOnClick={event => { activeItem(element); event.stopPropagation() }}>
<el-form-item label-width={labelWidth}
label={config.showLabel ? config.label : ''} required={config.required}>
<render key={config.renderKey} conf={element} onInput={ event => {
this.$set(config, 'defaultValue', event)
}} />
</el-form-item>
{components.itemBtns.apply(this, arguments)}
</el-col>
)
}
},
rowFormItem(h, element, index, parent) {
const { activeItem } = this.$listeners
@@ -103,4 +125,4 @@ export default {
return layoutIsNotFound.call(this)
}
}
</script>
</script>

View File

@@ -52,9 +52,9 @@
<!-- <el-button icon="el-icon-view" type="text" @click="showJson">-->
<!-- 查看json-->
<!-- </el-button>-->
<!-- <el-button icon="el-icon-download" type="text" @click="download">-->
<!-- 导出vue文件-->
<!-- </el-button>-->
<!-- <el-button icon="el-icon-download" type="text" @click="download"> -->
<!-- 导出vue文件 -->
<!-- </el-button> -->
<!-- <el-button class="copy-btn-main" icon="el-icon-document-copy" type="text" @click="copy">-->
<!-- 复制代码-->
<!-- </el-button>-->
@@ -77,7 +77,7 @@
<el-input v-model="selfForm.info" placeholder="描述" />
</el-form-item>
<el-form-item>
<el-button type="primary" @click="handlerSaveJSON('selfForm')">保存</el-button>
<el-button type="primary" @click="handlerSaveJSON('selfForm')" v-hasPermi="['admin:system:form:update']">保存</el-button>
</el-form-item>
</el-form>
</div>
@@ -168,7 +168,7 @@ import {
getDrawingList, saveDrawingList, getIdGlobal, saveIdGlobal, getFormConf, getFormConfSelf
} from '../utils/db'
import loadBeautifier from '../utils/loadBeautifier'
import {Debounce} from '@/utils/validate'
let beautifier
const emptyActiveData = { style: {}, autosize: {}}
let oldActiveId
@@ -416,7 +416,7 @@ export default {
this.AssembleFormData()
this.jsonDrawerVisible = true
},
handlerSaveJSON(form) {
handlerSaveJSON:Debounce(function(form) {
// this.AssembleFormData()
// loadBeautifier(btf => {
// beautifier = btf
@@ -434,7 +434,7 @@ export default {
this.selfForm.content = JSON.stringify(formConfig)
this.$emit('getFormConfigDataResult', this.selfForm)
})
},
}),
download() {
this.dialogVisible = true
this.showFileName = true

View File

@@ -508,8 +508,25 @@
<el-form-item v-if="activeData.__config__.required !== undefined" label="是否必填">
<el-switch v-model="activeData.__config__.required" />
</el-form-item>
<template v-if="activeData.__config__.layoutTree">
<el-form-item v-if="activeData.__config__.tips !== undefined" label="开启描述">
<el-switch v-model="activeData.__config__.tips" />
</el-form-item>
<el-form-item v-if="activeData.__config__.tips" label="描述内容">
<el-input v-model="activeData.__config__.tipsDesc" placeholder="请输入描述" />
</el-form-item>
<el-form-item v-if="activeData.__config__.tips" label="描述链接">
<el-switch v-model="activeData.__config__.tipsIsLink" />
</el-form-item>
<el-form-item v-if="activeData.__config__.tipsIsLink" label="链接地址">
<el-input v-model="activeData.__config__.tipsLink" placeholder="请输入链接地址" />
</el-form-item>
<!-- <el-form-item v-if="activeData.__config__.bindInput !== undefined" label="绑定输入">
<el-switch v-model="activeData.__config__.bindInput" />
</el-form-item>
<el-form-item v-if="activeData.__config__.bindInput" label="绑定内容">
<el-input v-model="activeData.__config__.bindValve" placeholder="请输入内容" />
</el-form-item> -->
<template v-if="activeData.__config__.layoutTree">
<el-divider>布局结构树</el-divider>
<el-tree
:data="[activeData.__config__]"