Skip to content

Commit 3ec7495

Browse files
committed
perf(0.8.7-5): 表单设计器数据来源"字典"通过prop单独引入
1 parent 18f2171 commit 3ec7495

File tree

4 files changed

+20
-18
lines changed

4 files changed

+20
-18
lines changed

Diff for: package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "element-pro-crud",
3-
"version": "0.8.7-4",
3+
"version": "0.8.7-5",
44
"author": "BoBo<[email protected]>",
55
"main": "lib/ProCrud.umd.min.js",
66
"files": [

Diff for: src/component/form-designer/src/FormDesigner.vue

+5-1
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@
9999
</div>
100100
</el-header>
101101
<el-main class="config-content">
102-
<WidgetConfig v-show="configTab == 'widget'" v-if="Object.keys(widgetFormSelect).length>0" :elementConfig="widgetFormSelect"></WidgetConfig>
102+
<WidgetConfig v-show="configTab == 'widget'" v-if="Object.keys(widgetFormSelect).length>0" :dictType="dictType" :elementConfig="widgetFormSelect"></WidgetConfig>
103103
<FormConfig v-show="configTab == 'form'" :data="widgetForm.config"></FormConfig>
104104
</el-main>
105105
</el-container>
@@ -203,6 +203,10 @@ export default {
203203
type: Function,
204204
default: null,
205205
},
206+
dictType: {
207+
type: Array,
208+
default: () => [],
209+
},
206210
},
207211
data() {
208212
return {

Diff for: src/component/form-designer/src/WidgetConfig.vue

+6-15
Original file line numberDiff line numberDiff line change
@@ -143,11 +143,11 @@
143143
</el-form-item>
144144
<el-form-item label="数据来源" v-if="Object.keys(elementConfig.options).indexOf('options') >= 0 || Object.keys(elementConfig.options).indexOf('remoteOptions') >= 0">
145145
<el-radio-group v-model="elementConfig.options.remote" size="mini" style="margin-bottom:10px;">
146-
<el-radio-button v-if="!isRemoteComponent" label="dict">字典</el-radio-button>
146+
<el-radio-button v-if="!isRemoteComponent && dictType && dictType.length > 0" label="dict">字典</el-radio-button>
147147
<el-radio-button v-if="!isRemoteComponent" label="static">静态</el-radio-button>
148148
<el-radio-button label="custom">自定义</el-radio-button>
149149
</el-radio-group>
150-
<template v-if="elementConfig.options.remote == 'dict'">
150+
<template v-if="elementConfig.options.remote == 'dict' && dictType && dictType.length > 0">
151151
<el-select size="mini" v-model="elementConfig.options.dictType" placeholder="字典类型" filterable style="width: 100%">
152152
<el-option v-for="item in dictType" :key="item.value" :label="item.label" :value="item.value"> </el-option>
153153
</el-select>
@@ -583,14 +583,16 @@ export default {
583583
type: Object,
584584
default: () => ({}),
585585
},
586+
dictType: {
587+
type: Array,
588+
default: () => [],
589+
},
586590
},
587591
data() {
588592
return {
589593
elementComponentConfig,
590594
jsonTemplate: '',
591595
jsonEditor: null,
592-
// 字典类型
593-
dictType: [],
594596
validator: {
595597
type: null,
596598
required: null,
@@ -612,17 +614,6 @@ export default {
612614
return this.elementConfig && ['treeselect'].includes(this.elementConfig.type);
613615
},
614616
},
615-
created() {
616-
// 请求字典分类
617-
if (this.$PROCRUD && this.$PROCRUD.crud) {
618-
this.$PROCRUD.crud(DML.SELECT, 'ad_codelist_type').then((res) => {
619-
this.dictType = res.data.list.map(item => ({
620-
label: item.typeName,
621-
value: item.id,
622-
}));
623-
});
624-
}
625-
},
626617
methods: {
627618
saveJson() {
628619
const { type } = this.elementConfig;

Diff for: src/demo/App.vue

+8-1
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@
4141
<el-container class="container">
4242
<el-header><el-tag>表单设计器(FormDesigner)</el-tag></el-header>
4343
<el-main>
44-
<FormDesigner ref="formDesigner" :getFormKey="getTableFields"> </FormDesigner>
44+
<FormDesigner ref="formDesigner" :dictType="dictType" :getFormKey="getTableFields"> </FormDesigner>
4545
</el-main>
4646
</el-container>
4747
<el-container class="container">
@@ -281,6 +281,7 @@ export default {
281281
jsonTemplate: '',
282282
dictList: [],
283283
formList: [],
284+
dictType: [],
284285
columns: {},
285286
allTables: null,
286287
btnSaveIsLoading: false,
@@ -316,6 +317,12 @@ export default {
316317
},
317318

318319
created() {
320+
crud(DML.SELECT, 'ad_codelist_type').then((res) => {
321+
this.dictType = res.data.list.map(item => ({
322+
label: item.typeName,
323+
value: item.id,
324+
}));
325+
});
319326
getTables().then((res) => {
320327
this.allTables = res.data.map(item => ({
321328
label: item.TABLE_NAME,

0 commit comments

Comments
 (0)