一、平台搭建(支持多语言)
vue admin管理后台 只包含了 Element UI & axios & iconfont & permission control & lint, 目前版本为v4.0+
基于 vue-cli
二、组件封装(其他组件代码格式一致)
动态配置组件参数实现各种业务逻辑和各种效果
<!--elMain组件-->
<template>
<!-- superParams[parentNode.resizeMethod] 父级方法 -->
<div :class="parentNode.class" v-resize="superParams[parentNode.resizeMethod]">
<component v-for="(item,index) in parentNode.childrenNode" :key="index" :parentNode="item" :is="item.componentName" />
</div>
</template>
<script>
// 下级需用到的组件
import elContainer from '@/components/Page/elContainer';
import elForm from '@/components/Page/elForm';
import elTable from '@/components/Page/elTable';
import elPagination from '@/components/Page/elPagination';
import elDialog from '@/components/Page/elDialog';
export default{
inject: ['superParams'], // 祖先组件向其所有子孙后代注入的一个依赖
components:{
elContainer,
elForm,
elTable,
elPagination,
elDialog
},
props:{
// 接收组件参数
parentNode:{
type:Object,
require:true
}
}
}
</script>
<style lang="scss" scoped>
</style>
<!--elForm组件-->
<template>
<el-form
@submit.native.prevent
:model="parentNode.model ? superParams[parentNode.model] : {}"
:class="parentNode.class"
:rules="parentNode.formRule ? superParams[parentNode.formRule] : {}"
:label-width="parentNode.labelWidth || ''"
:ref="parentNode.refName || ''"
:label-position="parentNode.labelPosition || 'right'"
>
<component v-for="(item,index) in parentNode.childrenNode" :key="index" :parentNode="item" :is="item.componentName" />
</el-form>
</template>
<script>
import elContainer from '@/components/Page/elContainer';
import elFormItem from '@/components/Page/elFormItem';
export default{
inject: ['superParams'],
components:{
elContainer,
elFormItem
},
props:{
parentNode:{
type:Object,
require:true
}
}
}
</script>
界面使用
1.界面组件引用(只需引入一个elMain组件)
<template>
<elMain id="main" :parentNode="htmlData" />
</template>
<script>
import elMain from '@/components/Page/elMain'
import { htmlData } from "./index";
export default {
//父组件提供参数给子组件(响应式时需设置为对象)
provide(){
return {
superParams:this
}
},
components: {
elMain
},
data(){
return {
htmlData:htmlData,
searchForm:{
deviceName:''
}
}
}
methods: {
//监听浏览器窗口变化
onResize() {
}
}
}
</script>
组件目录
界面目录
index.js配置
多数据源配置功能,支持无限层级
export const htmlData = {
componentName:'elMain', // 1 div
class:['accountList','container'],
resizeMethod:'onResize',
childrenNode:[
{
componentName:'elForm', // 1-1 el-form
class:['searchForm','searchUser'],
childrenNode:[
{
componentName:'elContainer', // 1-1-1 div
class:['search-left'],
childrenNode:[
{
componentName:'elFormItem', // 1-1-1-1 el-form-item
label:'form.deviceName',
prop:'',
childrenNode:[
{
componentName:'elInput', // 1-1-1-1-1 el-input
class:['queryProduct'],
vModel:'searchForm.deviceName',
placeholder:['placeholder.pleaseEnter','form.deviceName'],
clearable:true
}
]
}
]
}
]
}
]
}