Skip to content

Commit 19497a4

Browse files
author
wangbing11
committed
update form
1 parent 77c8e19 commit 19497a4

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

66 files changed

+1706
-1337
lines changed

package.json

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
"axios": "^0.18.0",
1212
"core-js": "^2.6.5",
1313
"data-vis-iview": "^0.0.24",
14-
"form-generator-iview": "^0.0.34",
14+
"form-generator-iview": "^0.0.54",
1515
"iview": "^3.4.0",
1616
"vue": "^2.6.10",
1717
"vue-router": "^3.0.6",
@@ -24,14 +24,17 @@
2424
"babel-eslint": "^10.0.1",
2525
"eslint": "^5.16.0",
2626
"eslint-plugin-vue": "^5.0.0",
27+
"express": "^4.17.1",
2728
"less": "^3.0.4",
2829
"less-loader": "^5.0.0",
2930
"lint-staged": "^8.1.5",
3031
"prettier": "^1.18.2",
32+
"typescript": "^3.8.3",
3133
"vue-cli-plugin-cp": "^0.0.7",
3234
"vue-cli-plugin-cp-template-curd": "^0.0.6",
3335
"vue-cli-plugin-cp-template-data-report": "^0.0.3",
34-
"vue-template-compiler": "^2.6.10"
36+
"vue-template-compiler": "^2.6.10",
37+
"webpack-mock-server": "^1.0.3"
3538
},
3639
"gitHooks": {
3740
"pre-commit": "lint-staged"

src/main.js

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,6 @@ Vue.use(iView);
1515
// 开启debug模式
1616
Vue.config.debug = true;
1717

18-
Vue.use(FormGenerator);
19-
Vue.use(DataVis);
2018
Vue.use(FormGenerator);
2119
Vue.use(DataVis);
2220
new Vue({
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
import index from "./index.vue";
2+
3+
export default index;

src/page/form/views/editable-table.vue renamed to src/page/form-editable-table/index.vue

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -32,14 +32,15 @@
3232
</template>
3333
<script>
3434
import services from "@/service";
35-
const { getEditableTablePageConfig, getList } = services["form"];
35+
import pageConfig from "./page-config.js";
36+
const { getList } = services["form"];
3637
export default {
3738
data() {
3839
return {
3940
tableLoading: true,
4041
data: [],
4142
editModel: {},
42-
pageConfig: {},
43+
pageConfig,
4344
pageSize: 10,
4445
pageNumber: 1,
4546
total: 0
@@ -54,14 +55,7 @@ export default {
5455
}
5556
},
5657
mounted() {
57-
const { pageId } = this.$route.params;
58-
getEditableTablePageConfig({
59-
pageId
60-
}).then(res => {
61-
this.pageConfig = res.data;
62-
this.loading = false;
63-
this.getTableData();
64-
});
58+
this.getTableData();
6559
},
6660
methods: {
6761
getTableData() {
Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
export default {
2+
title: "基础表单",
3+
desc: "表单页用于向用户收集或验证信息,基础表单常见于数据项较少的表单场景。",
4+
"columns": [
5+
{
6+
"title": "姓名",
7+
"slot": "name",
8+
"formField": {
9+
"type": "Input",
10+
"model": "name",
11+
"placeholder": "请输入用户名",
12+
"rules": [
13+
{
14+
"type": "string",
15+
"required": true,
16+
"pattern": "^[\\u4e00-\\u9fa5]+$",
17+
"message": "请输入中文姓名"
18+
}
19+
]
20+
}
21+
},
22+
{
23+
"title": "年龄",
24+
"slot": "age",
25+
"formField": {
26+
"type": "InputNumber",
27+
"model": "age",
28+
"placeholder": "请输入年龄",
29+
"required": true,
30+
"max": 150,
31+
"min": 0
32+
}
33+
},
34+
{
35+
"title": "性别",
36+
"slot": "gender",
37+
"formField": {
38+
"type": "Select",
39+
"model": "gender",
40+
"placeholder": "请输入性别",
41+
"required": true,
42+
"options": [
43+
{
44+
"label": "男",
45+
"value": "男"
46+
},
47+
{
48+
"label": "女",
49+
"value": "女"
50+
},
51+
{
52+
"label": "保密",
53+
"value": "保密"
54+
}
55+
]
56+
}
57+
},
58+
{
59+
"title": "出生日期",
60+
"slot": "birthday",
61+
"formField": {
62+
"type": "DatePicker",
63+
"subtype": "date",
64+
"model": "birthday",
65+
"placeholder": "请输入出生日期",
66+
"required": true
67+
}
68+
},
69+
{
70+
"title": "地址",
71+
"key": "address",
72+
"formField": {
73+
"type": "Input",
74+
"model": "address",
75+
"placeholder": "请输入地址",
76+
"required": true
77+
}
78+
},
79+
{
80+
"title": "操作",
81+
"slot": "action",
82+
"formField": {
83+
"type": "Submit",
84+
"subtype": "primary",
85+
"text": "保存"
86+
}
87+
}
88+
]
89+
};
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
export default [
2+
{
3+
path: "/form-editable-table",
4+
component: () =>
5+
import(/* webpackChunkName: "form-simple" */ "./index.vue")
6+
}
7+
];
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
import index from './index.vue';
2+
3+
export default index;
Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
<template>
2+
<Table :loading="tableLoading" :columns="columns" :data="data"/>
3+
</template>
4+
<script>
5+
import pageConfig from "./page-config.js";
6+
import tableExpand from "./tableExpand.vue";
7+
8+
import services from "@/service";
9+
const { getList } = services["form"];
10+
export default {
11+
components: {
12+
// eslint-disable-next-line vue/no-unused-components
13+
tableExpand
14+
},
15+
data() {
16+
return {
17+
tableLoading: true,
18+
data: [],
19+
pageConfig,
20+
pageSize: 10,
21+
pageNumber: 1,
22+
total: 0,
23+
model: {},
24+
columns: []
25+
}
26+
},
27+
computed: {
28+
options() {
29+
return this.pageConfig.form.options;
30+
},
31+
editFormFields() {
32+
return this.pageConfig.editFormFields;
33+
}
34+
},
35+
mounted() {
36+
this.getTableData();
37+
let columns = Object.assign([], this.pageConfig.columns);
38+
columns.unshift({
39+
type: "expand",
40+
width: 50,
41+
render: (h, params) => {
42+
console.log('params', params);
43+
return h(tableExpand, {
44+
props: {
45+
fields: this.editFormFields,
46+
editFormModel: params.row,
47+
index: params.index
48+
},
49+
on: {
50+
"on-save-event": this.handleSaveEvent,
51+
"on-cancel-event": this.handleCancelEvent
52+
}
53+
});
54+
}
55+
});
56+
this.columns = columns;
57+
},
58+
methods: {
59+
getTableData() {
60+
this.tableLoading = true;
61+
const { pageId } = this.$route.params;
62+
const params = {
63+
pageSize: this.pageSize,
64+
pageNumber: this.pageNumber,
65+
pageId
66+
};
67+
getList(params).then(res => {
68+
const { list, pageSize, pageNumber, total } = res.data;
69+
this.data = list || [];
70+
this.pageSize = pageSize || this.pageSize;
71+
this.pageNumber = pageNumber || this.pageNumber;
72+
this.total = total || this.total;
73+
this.tableLoading = false;
74+
});
75+
},
76+
handleSaveEvent($event, index, row) {
77+
this.data.splice(
78+
index,
79+
1,
80+
Object.assign({}, this.data[index], row, { _expanded: false })
81+
);
82+
},
83+
handleCancelEvent($event, index){
84+
this.data[index]._expanded = false;
85+
this.data.push();
86+
}
87+
}
88+
};
89+
</script>
Lines changed: 107 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,107 @@
1+
export default {
2+
title: "弹框表单",
3+
desc: "表单页用于向用户收集或验证信息,基础表单常见于数据项较少的表单场景。",
4+
"columns": [
5+
{
6+
"title": "姓名",
7+
"key": "name",
8+
},
9+
{
10+
"title": "年龄",
11+
"key": "age",
12+
},
13+
{
14+
"title": "性别",
15+
"key": "gender",
16+
},
17+
{
18+
"title": "出生日期",
19+
"key": "birthday",
20+
},
21+
{
22+
"title": "地址",
23+
"key": "address"
24+
}
25+
],
26+
"editFormFields": [
27+
{
28+
"type": "Input",
29+
"label": "姓名",
30+
"model": "name",
31+
"placeholder": "请输入姓名",
32+
"rules": [
33+
{
34+
"type": "string",
35+
"required": true,
36+
"pattern": "^[\\u4e00-\\u9fa5]+$",
37+
"message": "请输入中文姓名"
38+
}
39+
],
40+
width: 250,
41+
inline: true
42+
},
43+
{
44+
"type": "InputNumber",
45+
"label": "年龄",
46+
"model": "age",
47+
"placeholder": "请输入年龄",
48+
"required": true,
49+
"max": 150,
50+
"min": 0,
51+
width: 250,
52+
inline: true
53+
},
54+
{
55+
"type": "Select",
56+
"label": "性别",
57+
"model": "gender",
58+
"placeholder": "请输入性别",
59+
"required": true,
60+
"options": [
61+
{
62+
"label": "男",
63+
"value": "男"
64+
},
65+
{
66+
"label": "女",
67+
"value": "女"
68+
},
69+
{
70+
"label": "保密",
71+
"value": "保密"
72+
}
73+
],
74+
width: 250,
75+
inline: true
76+
},
77+
{
78+
"type": "DatePicker",
79+
"label": "日期",
80+
"subtype": "date",
81+
"model": "birthday",
82+
"placeholder": "请输入出生日期",
83+
"required": true,
84+
width: 250,
85+
inline: true
86+
},
87+
{
88+
"type": "Input",
89+
"label": "地址",
90+
"model": "address",
91+
"placeholder": "请输入地址",
92+
"required": true,
93+
width: 250,
94+
inline: true
95+
},
96+
{
97+
type: 'Button',
98+
subtype: 'primary',
99+
text: '保存',
100+
action: {
101+
type: 'event',
102+
name: 'save'
103+
},
104+
width: 250,
105+
}
106+
]
107+
};
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
export default [
2+
{
3+
path: "/form-inline-table",
4+
component: () =>
5+
import(/* webpackChunkName: "form-simple" */ "./index.vue")
6+
}
7+
];

0 commit comments

Comments
 (0)