Skip to content

Commit 3240078

Browse files
author
QM303176530
committed
代码生成器增加前端table.vue的自动生成
1 parent 97f52ce commit 3240078

File tree

4 files changed

+178
-5
lines changed

4 files changed

+178
-5
lines changed

server/model/sys_auto_code.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,8 @@ type AutoCodeStruct struct {
1010

1111
type Field struct {
1212
FieldName string `json:"fieldName"`
13+
FieldDesc string `json:"fieldDesc"`
1314
FieldType string `json:"fieldType"`
1415
FieldJson string `json:"fieldJson"`
1516
ColumnName string `json:"columnName"`
16-
}
17+
}

server/resource/template/fe/api.js.tpl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ export const create{{.StructName}} = (data) => {
5858
// @Param data body model.{{.StructName}} true "用id查询{{.StructName}}"
5959
// @Success 200 {string} string "{"success":true,"data":{},"msg":"查询成功"}"
6060
// @Router /{{.Abbreviation}}/find{{.StructName}} [get]
61-
export const find{{.StructName}} = (data) => {
61+
export const find{{.StructName}} = (params) => {
6262
return service({
6363
url: "/{{.Abbreviation}}/find{{.StructName}}",
6464
method: 'get',
@@ -75,7 +75,7 @@ export const create{{.StructName}} = (data) => {
7575
// @Param data body request.PageInfo true "分页获取{{.StructName}}列表"
7676
// @Success 200 {string} string "{"success":true,"data":{},"msg":"获取成功"}"
7777
// @Router /{{.Abbreviation}}/get{{.StructName}}List [get]
78-
export const get{{.StructName}}List = (data) => {
78+
export const get{{.StructName}}List = (params) => {
7979
return service({
8080
url: "/{{.Abbreviation}}/get{{.StructName}}List",
8181
method: 'get',
Lines changed: 155 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,155 @@
1+
<template>
2+
<div>
3+
<div class="search-term">
4+
<el-form :inline="true" :model="searchInfo" class="demo-form-inline">
5+
<!-- 此处可使用表单生成器生成搜索条件 -->
6+
<el-form-item>
7+
<el-button @click="openDialog" type="primary">新增</el-button>
8+
</el-form-item>
9+
</el-form>
10+
</div>
11+
<el-table
12+
:data="tableData"
13+
border
14+
ref="multipleTable"
15+
stripe
16+
style="width: 100%"
17+
tooltip-effect="dark"
18+
>
19+
<el-table-column type="selection" width="55"></el-table-column>
20+
<el-table-column label="日期" width="180">
21+
<template slot-scope="scope">{{ "{{scope.row.CreatedAt|formatDate}}" }}</template>
22+
</el-table-column>
23+
{{range .Fields}}
24+
<el-table-column label="{{.FieldDesc}}" prop="{{.FieldJson}}" width="120"></el-table-column>
25+
{{ end }}
26+
<el-table-column label="按钮组">
27+
<template slot-scope="scope">
28+
<el-button @click="update{{.StructName}}(scope.row)" size="small" type="text">变更</el-button>
29+
<el-popover placement="top" width="160" v-model="scope.row.visible">
30+
<p>确定要删除吗?</p>
31+
<div style="text-align: right; margin: 0">
32+
<el-button size="mini" type="text" @click="scope.row.visible = false">取消</el-button>
33+
<el-button type="primary" size="mini" @click="delete{{.StructName}}(scope.row)">确定</el-button>
34+
</div>
35+
<el-button type="text" size="mini" slot="reference">删除</el-button>
36+
</el-popover>
37+
</template>
38+
</el-table-column>
39+
</el-table>
40+
41+
<el-pagination
42+
:current-page="page"
43+
:page-size="pageSize"
44+
:page-sizes="[10, 30, 50, 100]"
45+
:style="{float:'right',padding:'20px'}"
46+
:total="total"
47+
@current-change="handleCurrentChange"
48+
@size-change="handleSizeChange"
49+
layout="total, sizes, prev, pager, next, jumper"
50+
></el-pagination>
51+
52+
<el-dialog :before-close="closeDialog" :visible.sync="dialogFormVisible" title="弹窗操作">
53+
<!-- 此处请使用表单生成器生成form填充 -->
54+
<div class="dialog-footer" slot="footer">
55+
<el-button @click="closeDialog">取 消</el-button>
56+
<el-button @click="enterDialog" type="primary">确 定</el-button>
57+
</div>
58+
</el-dialog>
59+
</div>
60+
</template>
61+
62+
<script>
63+
import {
64+
create{{.StructName}}
65+
delete{{.StructName}}
66+
update{{.StructName}}
67+
find{{.StructName}}
68+
get{{.StructName}}List
69+
} from "@/api/{{.StructName}}"; // 此处请自行替换地址
70+
import { formatTimeToStr } from "@/utils/data";
71+
import infoList from "@/components/mixins/infoList";
72+
73+
export default {
74+
name: "{{.StructName}}",
75+
mixins: [infoList],
76+
data() {
77+
return {
78+
listApi: get{{.StructName}}List,
79+
dialogFormVisible: false,
80+
visible: false,
81+
type: "",
82+
form: {
83+
{{range .Fields}}{{.FieldJson}}:null,{{ end }}
84+
}
85+
};
86+
},
87+
filters: {
88+
formatDate: function(time) {
89+
if (time != null && time != "") {
90+
var date = new Date(time);
91+
return formatTimeToStr(date, "yyyy-MM-dd hh:mm:ss");
92+
} else {
93+
return "";
94+
}
95+
}
96+
},
97+
methods: {
98+
async update{{.StructName}}(row) {
99+
const res = await get{{.StructName}}({ ID: row.ID });
100+
this.type = "update";
101+
if (res.code == 0) {
102+
this.form = res.data.re{{.Abbreviation}};
103+
this.dialogFormVisible = true;
104+
}
105+
},
106+
closeDialog() {
107+
this.dialogFormVisible = false;
108+
this.form = {
109+
{{range .Fields}}
110+
{{.FieldJson}}:null,{{ end }}
111+
};
112+
},
113+
async delete{{.StructName}}(row) {
114+
this.visible = false;
115+
const res = await delete{{.StructName}}({ ID: row.ID });
116+
if (res.code == 0) {
117+
this.$message({
118+
type: "success",
119+
message: "删除成功"
120+
});
121+
this.getTableData();
122+
}
123+
},
124+
async enterDialog() {
125+
let res;
126+
switch (this.type) {
127+
case "create":
128+
res = await create{{.StructName}}(this.form);
129+
break;
130+
case "update":
131+
res = await update{{.StructName}}(this.form);
132+
break;
133+
default:
134+
res = await create{{.StructName}}(this.form);
135+
break;
136+
}
137+
138+
if (res.code == 0) {
139+
this.closeDialog();
140+
this.getTableData();
141+
}
142+
},
143+
openDialog() {
144+
this.type = "create";
145+
this.dialogFormVisible = true;
146+
}
147+
},
148+
created() {
149+
this.getTableData();
150+
}
151+
};
152+
</script>
153+
154+
<style>
155+
</style>

server/service/sys_auto_code.go

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@ package service
33
import (
44
"gin-vue-admin/model"
55
"gin-vue-admin/utils"
6-
"html/template"
76
"os"
7+
"text/template"
88
)
99

1010
// @title CreateTemp
@@ -35,6 +35,10 @@ func CreateTemp(autoCode model.AutoCodeStruct) (err error) {
3535
if err != nil {
3636
return err
3737
}
38+
feTableTmpl, err := template.ParseFiles(basePath + "/fe/table.vue.tpl")
39+
if err != nil {
40+
return err
41+
}
3842
readmeTmpl, err := template.ParseFiles(basePath + "/readme.txt.tpl")
3943
if err != nil {
4044
return err
@@ -52,7 +56,8 @@ func CreateTemp(autoCode model.AutoCodeStruct) (err error) {
5256
_fe := "./autoCode/fe/"
5357
_fe_dir := _fe + autoCode.PackageName
5458
_fe_apidir := _fe + autoCode.PackageName + "/api"
55-
err = utils.CreateDir(_autoCode, _te, _dir, _modeldir, _apidir, _routerdir, _servicedir, _fe, _fe_dir, _fe_apidir)
59+
_fe_tabledir := _fe + autoCode.PackageName + "/table"
60+
err = utils.CreateDir(_autoCode, _te, _dir, _modeldir, _apidir, _routerdir, _servicedir, _fe, _fe_dir, _fe_apidir, _fe_tabledir)
5661
if err != nil {
5762
return err
5863
}
@@ -76,6 +81,11 @@ func CreateTemp(autoCode model.AutoCodeStruct) (err error) {
7681
if err != nil {
7782
return err
7883
}
84+
fetable, err := os.OpenFile(_fe+autoCode.PackageName+"/table/"+autoCode.PackageName+".vue", os.O_CREATE|os.O_WRONLY, 0755)
85+
if err != nil {
86+
return err
87+
}
88+
7989
readme, err := os.OpenFile(_autoCode+"readme.txt", os.O_CREATE|os.O_WRONLY, 0755)
8090
if err != nil {
8191
return err
@@ -102,6 +112,10 @@ func CreateTemp(autoCode model.AutoCodeStruct) (err error) {
102112
if err != nil {
103113
return err
104114
}
115+
err = feTableTmpl.Execute(fetable, autoCode)
116+
if err != nil {
117+
return err
118+
}
105119
err = readmeTmpl.Execute(readme, autoCode)
106120
if err != nil {
107121
return err
@@ -112,13 +126,16 @@ func CreateTemp(autoCode model.AutoCodeStruct) (err error) {
112126
_ = router.Close()
113127
_ = service.Close()
114128
_ = feapi.Close()
129+
_ = fetable.Close()
115130
_ = readme.Close()
116131
fileList := []string{
117132
_te + autoCode.PackageName + "/model/" + autoCode.PackageName + ".go",
118133
_te + autoCode.PackageName + "/api/" + autoCode.PackageName + ".go",
119134
_te + autoCode.PackageName + "/router/" + autoCode.PackageName + ".go",
120135
_te + autoCode.PackageName + "/service/" + autoCode.PackageName + ".go",
121136
_fe + autoCode.PackageName + "/api/" + autoCode.PackageName + ".js",
137+
_fe + autoCode.PackageName + "/table/" + autoCode.PackageName + ".vue",
138+
122139
_autoCode + "readme.txt",
123140
}
124141
err = utils.ZipFiles("./ginvueadmin.zip", fileList, ".", ".")

0 commit comments

Comments
 (0)