Commit 6800221bad295db8ff2af476bb529dbd324de854

Authored by Aaron
1 parent d811faa3
Exists in master and in 1 other branch legacy

Scheme兼容组件库名称

Showing 2 changed files with 26 additions and 18 deletions   Show diff stats
packages/index.js
@@ -42,18 +42,21 @@ const components = { @@ -42,18 +42,21 @@ const components = {
42 const install = function (Vue, opts = {}) { 42 const install = function (Vue, opts = {}) {
43 Object.values(components).forEach(component => { 43 Object.values(components).forEach(component => {
44 // 组件前缀 44 // 组件前缀
45 - const prefix = opts.name || 'eagle' 45 + const prefix = opts.name || 'eagle';
46 // 配置组件名称 46 // 配置组件名称
47 const name = prefix + component.name 47 const name = prefix + component.name
48 component.name = name 48 component.name = name
49 const defaultI18n = () => undefined; 49 const defaultI18n = () => undefined;
50 - // if (opts.i18n) {  
51 - if (component.methods) {  
52 - component.methods.i18n = opts.i18n || defaultI18n;  
53 - } else {  
54 - component.methods = { i18n: opts.i18n || defaultI18n }  
55 - }  
56 - // } 50 + if (component.computed) {
  51 + component.computed.prefix = () => { return prefix };
  52 + } else {
  53 + component.computed = { prefix: () => { return prefix } }
  54 + }
  55 + if (component.methods) {
  56 + component.methods.i18n = opts.i18n || defaultI18n;
  57 + } else {
  58 + component.methods = { i18n: opts.i18n || defaultI18n }
  59 + }
57 // 给每个子组件配置install方法 60 // 给每个子组件配置install方法
58 component.install = function (Vue) { 61 component.install = function (Vue) {
59 Vue.component(name, component) 62 Vue.component(name, component)
packages/scheme/index.vue
@@ -57,12 +57,12 @@ @@ -57,12 +57,12 @@
57 <div class="eagle-scheme"> 57 <div class="eagle-scheme">
58 <div v-if="option.showSearch !== false" class="eagle-scheme__card"> 58 <div v-if="option.showSearch !== false" class="eagle-scheme__card">
59 <!-- 搜索表单 --> 59 <!-- 搜索表单 -->
60 - <eagle-search :list="_searchList" v-model="searchModel" :span="searchProps.span || 6" :formProps="searchProps" @search="handleSearch" :searching="tableLoading"> 60 + <component :is="_searchComponent" :list="_searchList" v-model="searchModel" :span="searchProps.span || 6" :formProps="searchProps" @search="handleSearch" :searching="tableLoading">
61 <!-- 搜索表单项具名插槽 --> 61 <!-- 搜索表单项具名插槽 -->
62 <template v-for="item in _searchList"> 62 <template v-for="item in _searchList">
63 <slot v-if="$scopedSlots[`search-${item.key}`] || $slots[`search-${item.key}`]" :name="`search-${item.key}`" :slot="item.key" :model="searchModel"></slot> 63 <slot v-if="$scopedSlots[`search-${item.key}`] || $slots[`search-${item.key}`]" :name="`search-${item.key}`" :slot="item.key" :model="searchModel"></slot>
64 </template> 64 </template>
65 - </eagle-search> 65 + </component>
66 </div> 66 </div>
67 <!-- 操作按钮栏 --> 67 <!-- 操作按钮栏 -->
68 <div v-if="option.showActionBar !== false" class="eagle-scheme__action" v-loading="tableLoading" element-loading-spinner="none" element-loading-background="rgba(255, 255, 255, 0.6)"> 68 <div v-if="option.showActionBar !== false" class="eagle-scheme__action" v-loading="tableLoading" element-loading-spinner="none" element-loading-background="rgba(255, 255, 255, 0.6)">
@@ -83,7 +83,7 @@ @@ -83,7 +83,7 @@
83 }" 83 }"
84 ></slot> 84 ></slot>
85 <!-- 表格 --> 85 <!-- 表格 -->
86 - <eagle-table v-else ref="eagle-table" :list="_tableList" :value="tableData" 86 + <component v-else :is="_tableComponent" ref="eagle-table" :list="_tableList" :value="tableData"
87 v-loading="tableLoading" 87 v-loading="tableLoading"
88 element-loading-background="rgba(255, 255, 255, 0.6)" 88 element-loading-background="rgba(255, 255, 255, 0.6)"
89 :tableProps="{ border: true, 'row-key': 'id', ...tableProps }" 89 :tableProps="{ border: true, 'row-key': 'id', ...tableProps }"
@@ -113,14 +113,14 @@ @@ -113,14 +113,14 @@
113 <el-button v-if="option.showViewBtn !== false" class="eagle-scheme__table-btn" type="text" icon="el-icon-view" :title="i18n('eagle.scheme.detail') || '详情'" @click="handleView(slotScope)"></el-button> 113 <el-button v-if="option.showViewBtn !== false" class="eagle-scheme__table-btn" type="text" icon="el-icon-view" :title="i18n('eagle.scheme.detail') || '详情'" @click="handleView(slotScope)"></el-button>
114 <slot v-if="$scopedSlots['table-operation-btn-edit'] || $slots['table-operation-btn-edit']" name="table-operation-btn-edit" :slotScope="slotScope" v-bind="slotMethod"></slot> 114 <slot v-if="$scopedSlots['table-operation-btn-edit'] || $slots['table-operation-btn-edit']" name="table-operation-btn-edit" :slotScope="slotScope" v-bind="slotMethod"></slot>
115 <el-button v-else-if="option.showEditBtn !== false" class="eagle-scheme__table-btn" type="text" icon="el-icon-edit" :title="i18n('eagle.scheme.edit') || '编辑'" @click="handleEdit(slotScope)"></el-button> 115 <el-button v-else-if="option.showEditBtn !== false" class="eagle-scheme__table-btn" type="text" icon="el-icon-edit" :title="i18n('eagle.scheme.edit') || '编辑'" @click="handleEdit(slotScope)"></el-button>
116 - <eagle-confirm v-if="option.showDeleteBtn !== false" class="eagle-scheme__table-btn" :title="i18n('eagle.scheme.deleteConfirm') || '是否删除?'" @confirm="handleDelete('one', slotScope)"> 116 + <component v-if="option.showDeleteBtn !== false" :is="_confirmComponent" class="eagle-scheme__table-btn" :title="i18n('eagle.scheme.deleteConfirm') || '是否删除?'" @confirm="handleDelete('one', slotScope)">
117 <el-button type="text" icon="el-icon-delete" :title="i18n('eagle.scheme.delete') || '删除'"></el-button> 117 <el-button type="text" icon="el-icon-delete" :title="i18n('eagle.scheme.delete') || '删除'"></el-button>
118 - </eagle-confirm> 118 + </component>
119 <!-- 表格操作栏插槽 - 后置插槽 --> 119 <!-- 表格操作栏插槽 - 后置插槽 -->
120 <slot v-if="$scopedSlots['table-operation-btn-append'] || $slots['table-operation-btn-append']" name="table-operation-btn-append" :slotScope="slotScope" v-bind="slotMethod"></slot> 120 <slot v-if="$scopedSlots['table-operation-btn-append'] || $slots['table-operation-btn-append']" name="table-operation-btn-append" :slotScope="slotScope" v-bind="slotMethod"></slot>
121 </div> 121 </div>
122 </el-table-column> 122 </el-table-column>
123 - </eagle-table> 123 + </component>
124 <!-- 分页器 --> 124 <!-- 分页器 -->
125 <div v-if="option.showPagination !== false" class="eagle-scheme__pagination" :style="{ 'text-align': paginationProps.textAlign || 'right' }"> 125 <div v-if="option.showPagination !== false" class="eagle-scheme__pagination" :style="{ 'text-align': paginationProps.textAlign || 'right' }">
126 <el-pagination size="small" @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="currentPage" v-loading="tableLoading" element-loading-spinner="none" element-loading-background="rgba(255, 255, 255, 0.6)" 126 <el-pagination size="small" @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="currentPage" v-loading="tableLoading" element-loading-spinner="none" element-loading-background="rgba(255, 255, 255, 0.6)"
@@ -128,7 +128,7 @@ @@ -128,7 +128,7 @@
128 </div> 128 </div>
129 </div> 129 </div>
130 <el-dialog v-loading="dialogLoading" element-loading-background="rgba(255, 255, 255, 0.3)" :custom-class="dialogProps['custom-class'] || 'eagle-scheme__dialog'" :title="dialogProps.title || dialogTitle" :visible.sync="dialogVisible" v-bind="{ width: '65%', ...dialogProps }"> 130 <el-dialog v-loading="dialogLoading" element-loading-background="rgba(255, 255, 255, 0.3)" :custom-class="dialogProps['custom-class'] || 'eagle-scheme__dialog'" :title="dialogProps.title || dialogTitle" :visible.sync="dialogVisible" v-bind="{ width: '65%', ...dialogProps }">
131 - <eagle-form v-if="dialogType === 'dialog-form' && !$scopedSlots['dialog-form'] && !$slots['dialog-form']" ref="eagle-form" :list="_formList" v-model="formModel" :params="{ formMode }" :span="formProps.span || 12" :formProps="formProps" @submit="handleSubmit" @cancel="handleCancel"> 131 + <component :is="_formComponent" v-if="dialogType === 'dialog-form' && !$scopedSlots['dialog-form'] && !$slots['dialog-form']" ref="eagle-form" :list="_formList" v-model="formModel" :params="{ formMode }" :span="formProps.span || 12" :formProps="formProps" @submit="handleSubmit" @cancel="handleCancel">
132 <!-- 表单分组具名插槽 --> 132 <!-- 表单分组具名插槽 -->
133 <template v-for="key in formGroupSlotsKeys"> 133 <template v-for="key in formGroupSlotsKeys">
134 <slot v-if="$scopedSlots[`form-${key}`] || $slots[`form-${key}`]" :name="`form-${key}`" :slot="key" :model="formModel"></slot> 134 <slot v-if="$scopedSlots[`form-${key}`] || $slots[`form-${key}`]" :name="`form-${key}`" :slot="key" :model="formModel"></slot>
@@ -138,8 +138,8 @@ @@ -138,8 +138,8 @@
138 <slot v-if="$scopedSlots[`form-item-${item.key}`] || $slots[`form-item-${item.key}`]" :name="`form-item-${item.key}`" :slot="`item-${item.key}`" :model="formModel"></slot> 138 <slot v-if="$scopedSlots[`form-item-${item.key}`] || $slots[`form-item-${item.key}`]" :name="`form-item-${item.key}`" :slot="`item-${item.key}`" :model="formModel"></slot>
139 <slot v-if="$scopedSlots[`form-label-${item.key}`] || $slots[`form-label-${item.key}`]" :name="`form-label-${item.key}`" :slot="`label-${item.key}`" :model="formModel" v-bind="item"></slot> 139 <slot v-if="$scopedSlots[`form-label-${item.key}`] || $slots[`form-label-${item.key}`]" :name="`form-label-${item.key}`" :slot="`label-${item.key}`" :model="formModel" v-bind="item"></slot>
140 </template> 140 </template>
141 - </eagle-form>  
142 - <eagle-detail v-else-if="dialogType === 'dialog-view' && !$scopedSlots['dialog-view'] && !$slots['dialog-view']" v-model="formModel" :list="list || detailList || _formList" :span="detailProps.span || 8" :formProps="detailProps"> 141 + </component>
  142 + <component :is="_detailComponent" v-else-if="dialogType === 'dialog-view' && !$scopedSlots['dialog-view'] && !$slots['dialog-view']" v-model="formModel" :list="list || detailList || _formList" :span="detailProps.span || 8" :formProps="detailProps">
143 <!-- 表单分组具名插槽 --> 143 <!-- 表单分组具名插槽 -->
144 <template v-for="key in formGroupSlotsKeys"> 144 <template v-for="key in formGroupSlotsKeys">
145 <slot v-if="$scopedSlots[`view-${key}`] || $slots[`view-${key}`]" :name="`view-${key}`" :slot="key" :model="formModel"></slot> 145 <slot v-if="$scopedSlots[`view-${key}`] || $slots[`view-${key}`]" :name="`view-${key}`" :slot="key" :model="formModel"></slot>
@@ -148,7 +148,7 @@ @@ -148,7 +148,7 @@
148 <template v-for="item in _formList"> 148 <template v-for="item in _formList">
149 <slot v-if="$scopedSlots[`view-item-${item.key}`] || $slots[`view-item-${item.key}`]" :name="`view-item-${item.key}`" :slot="`item-${item.key}`" :model="formModel"></slot> 149 <slot v-if="$scopedSlots[`view-item-${item.key}`] || $slots[`view-item-${item.key}`]" :name="`view-item-${item.key}`" :slot="`item-${item.key}`" :model="formModel"></slot>
150 </template> 150 </template>
151 - </eagle-detail> 151 + </component>
152 <!-- 自定义弹出框内容插槽 --> 152 <!-- 自定义弹出框内容插槽 -->
153 <slot v-else :name="dialogType" :row="tableCurrentRow" :hideDialog="hideDialog"></slot> 153 <slot v-else :name="dialogType" :row="tableCurrentRow" :hideDialog="hideDialog"></slot>
154 </el-dialog> 154 </el-dialog>
@@ -277,6 +277,11 @@ export default { @@ -277,6 +277,11 @@ export default {
277 } 277 }
278 }, 278 },
279 computed: { 279 computed: {
  280 + _searchComponent() { return `${this.prefix}-search` },
  281 + _tableComponent() { return `${this.prefix}-table` },
  282 + _formComponent() { return `${this.prefix}-form` },
  283 + _detailComponent() { return `${this.prefix}-detail` },
  284 + _confirmComponent() { return `${this.prefix}-confirm` },
280 // 解析表单组件分组具名插槽名称 285 // 解析表单组件分组具名插槽名称
281 formGroupSlotsKeys() { 286 formGroupSlotsKeys() {
282 const keys = [...new Set([...Object.keys(this.$scopedSlots), ...Object.keys(this.$slots)])]; 287 const keys = [...new Set([...Object.keys(this.$scopedSlots), ...Object.keys(this.$slots)])];