Skip to content

Commit ab1138d

Browse files
committed
新增和修改时可添加自定义模板
1 parent be35a3a commit ab1138d

File tree

9 files changed

+40
-60
lines changed

9 files changed

+40
-60
lines changed

dist/d2-crud.js

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/d2-crud.js.map

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/d2-crud.vue

+3-22
Original file line numberDiff line numberDiff line change
@@ -6,19 +6,8 @@
66
:element-loading-spinner="loadingOptions ? handleAttribute(loadingOptions.spinner, null) : null"
77
:element-loading-background="loadingOptions ? handleAttribute(loadingOptions.background, null) : null"
88
>
9-
<div class="d2-crud-title" v-if="title || addMode || $slots.headerButton">
10-
<!-- <span>{{title}}</span>
11-
<div class="fr">
12-
<el-button
13-
v-if="addMode"
14-
:icon="addButton ? handleAttribute(addButton.icon, 'el-icon-plus') : 'el-icon-plus'"
15-
v-bind="$d2CrudSize ? Object.assign({ size: $d2CrudSize}, addButton) : addButton"
16-
@click="handleAdd"
17-
>
18-
{{addButton ? handleAttribute(addButton.text, '新增') : '新增'}}
19-
</el-button>
20-
<slot name="headerButton"></slot>
21-
</div> -->
9+
<div class="d2-crud-header" v-if="$slots.header">
10+
<slot name="header"></slot>
2211
</div>
2312
<div class="d2-crud-body">
2413
<el-table
@@ -797,16 +786,8 @@ export default {
797786
</script>
798787

799788
<style lang="scss" scoped>
800-
.fr {
801-
float: right;
802-
}
803789
.d2-crud {
804-
.d2-crud-title {
805-
color: #535351;
806-
height: 45px;
807-
line-height: 45px;
808-
font-size: 14px;
809-
font-weight: bold;
790+
.d2-crud-header {
810791
border-bottom: 1px dotted rgba(0, 0, 0, 0.2);
811792
}
812793
.d2-crud-body {

src/mixin/add.js

+9-19
Original file line numberDiff line numberDiff line change
@@ -2,32 +2,22 @@ import _forEach from 'lodash.foreach'
22
import _clonedeep from 'lodash.clonedeep'
33

44
export default {
5-
props: {
6-
/**
7-
* @description 是否显示新增按钮
8-
*/
9-
addMode: {
10-
type: Boolean,
11-
default: false
12-
},
13-
/**
14-
* @description 新增按钮配置
15-
*/
16-
addButton: {
17-
type: Object,
18-
default: null
19-
}
20-
},
215
methods: {
226
/**
237
* @description 新增行数据
248
*/
25-
handleAdd () {
9+
handleAdd (templage = null) {
2610
this.formMode = 'add'
2711
this.isDialogShow = true
28-
this.formData = this.addTemplate ? _clonedeep(this.addTemplate) : {}
12+
if (templage) {
13+
this.formData = _clonedeep(templage)
14+
this.addTemplateStorage = _clonedeep(templage)
15+
} else {
16+
this.formData = this.addTemplate ? _clonedeep(this.addTemplate) : {}
17+
this.addTemplateStorage = this.addTemplate ? _clonedeep(this.addTemplate) : {}
18+
}
2919
_forEach(this.formData, (value, key) => {
30-
this.formData[key] = this.addTemplate[key].value
20+
this.formData[key] = this.addTemplateStorage[key].value
3121
})
3222
}
3323
}

src/mixin/base.js

-6
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,5 @@
11
export default {
22
props: {
3-
/**
4-
* @description 表格标题
5-
*/
6-
title: {
7-
default: ''
8-
},
93
/**
104
* @description 表头数据
115
*/

src/mixin/dialog.js

+9-1
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,15 @@ export default {
5959
/**
6060
* @description 表单模式
6161
*/
62-
formMode: 'edit'
62+
formMode: 'edit',
63+
/**
64+
* @description 新增表单模板暂存
65+
*/
66+
addTemplateStorage: {},
67+
/**
68+
* @description 修改表单模板暂存
69+
*/
70+
editTemplateStorage: {}
6371
}
6472
},
6573
methods: {

src/mixin/edit.js

+8-2
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,18 @@ export default {
1616
* @param {Number} index 行所在索引
1717
* @param {Object} row 行数据
1818
*/
19-
handleEdit (index, row) {
19+
handleEdit (index, row, templage = null) {
2020
this.formMode = 'edit'
2121
this.editDataStorage = _clonedeep(row)
2222
this.isDialogShow = true
2323
this.editIndex = index
24-
this.formData = this.editTemplate ? _clonedeep(this.editTemplate) : {}
24+
if (templage) {
25+
this.formData = _clonedeep(templage)
26+
this.editTemplateStorage = _clonedeep(templage)
27+
} else {
28+
this.formData = this.editTemplate ? _clonedeep(this.editTemplate) : {}
29+
this.editTemplateStorage = this.editTemplate ? _clonedeep(this.editTemplate) : {}
30+
}
2531
_forEach(this.formData, (value, key) => {
2632
this.formData[key] = row.hasOwnProperty(key) ? row[key] : ''
2733
})

src/mixin/exposeMethods.js

+7-6
Original file line numberDiff line numberDiff line change
@@ -30,14 +30,15 @@ export default {
3030
/**
3131
* @description 外部暴露的打开模态框方法
3232
*/
33-
showDialog (mode, rowIndex = null) {
33+
showDialog ({
34+
mode,
35+
rowIndex = 0,
36+
template = null
37+
}) {
3438
if (mode === 'edit') {
35-
if (!rowIndex) {
36-
return
37-
}
38-
this.handleEdit(rowIndex, this.d2CrudData[rowIndex])
39+
this.handleEdit(rowIndex, this.d2CrudData[rowIndex], template)
3940
} else if (mode === 'add') {
40-
this.handleAdd()
41+
this.handleAdd(template)
4142
}
4243
},
4344
/**

src/mixin/utils.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,9 @@ export default {
1414
*/
1515
handleFormTemplateMode (key) {
1616
if (this.formMode === 'edit') {
17-
return this.editTemplate[key]
17+
return this.editTemplateStorage[key]
1818
} else if (this.formMode === 'add') {
19-
return this.addTemplate[key]
19+
return this.addTemplateStorage[key]
2020
}
2121
}
2222
}

0 commit comments

Comments
 (0)