fix 代码生成功能完善

This commit is contained in:
yxh 2023-05-28 23:05:40 +08:00
parent b0393ee76a
commit 44392ad035
43 changed files with 3501 additions and 617 deletions

View File

@ -7,12 +7,11 @@
package common
import "github.com/tiger1103/gfast/v3/internal/app/common/model"
// PageReq 公共请求参数
type PageReq struct {
DateRange []string `p:"dateRange"` //日期范围
PageNum int `p:"pageNum"` //当前页码
PageSize int `p:"pageSize"` //每页数
OrderBy string //排序方式
model.PageReq
}
type Author struct {

View File

@ -122,14 +122,3 @@ type UserDeleteReq struct {
type UserDeleteRes struct {
}
type UserGetByIdsReq struct {
g.Meta `path:"/user/getUsers" tags:"用户管理" method:"get" summary:"同时获取多个用户"`
commonApi.Author
Ids []int `p:"ids" v:"required#ids不能为空"`
}
type UserGetByIdsRes struct {
g.Meta `mime:"application/json"`
List []*model.SysUserSimpleRes `json:"list"`
}

View File

@ -125,3 +125,13 @@ type ToolsGenTableBatchGenCodeReq struct {
type ToolsGenTableBatchGenCodeRes struct {
commonApi.EmptyRes
}
type ToolsGenTableSyncTableReq struct {
g.Meta `path:"/tools/gen/syncTable" tags:"代码生成" method:"post" summary:"同步表结构"`
commonApi.Author
TableId int64 `p:"tableId" v:"required#表ID必须"`
}
type ToolsGenTableSyncTableRes struct {
commonApi.EmptyRes
}

5
go.mod
View File

@ -7,17 +7,16 @@ require (
github.com/go-sql-driver/mysql v1.7.0 // indirect
github.com/gogf/gf/contrib/drivers/mysql/v2 v2.2.5
github.com/gogf/gf/contrib/nosql/redis/v2 v2.3.0
github.com/gogf/gf/v2 v2.3.2
github.com/gogf/gf/v2 v2.4.1
github.com/mattn/go-colorable v0.1.13 // indirect
github.com/mattn/go-runewidth v0.0.14 // indirect
github.com/mojocn/base64Captcha v1.3.5
github.com/mssola/user_agent v0.5.3
github.com/qiniu/go-sdk/v7 v7.13.0
github.com/rivo/uniseg v0.4.3 // indirect
github.com/shirou/gopsutil/v3 v3.23.2 // indirect
github.com/shirou/gopsutil/v3 v3.23.2
github.com/tencentyun/cos-go-sdk-v5 v0.7.34
github.com/tiger1103/gfast-cache v1.0.0
github.com/tiger1103/gfast-token v1.0.3
github.com/yusufpapurcu/wmi v1.2.2 // indirect
golang.org/x/net v0.7.0 // indirect
)

17
go.sum
View File

@ -58,8 +58,8 @@ github.com/gogf/gf/contrib/nosql/redis/v2 v2.3.0 h1:r2q8MLwF6yUIEm6Hhwsfo/ixaJTK
github.com/gogf/gf/contrib/nosql/redis/v2 v2.3.0/go.mod h1:V9o2BF9ovJnaZhHImHAanqUgjX4kI51lgU45u5rPqvw=
github.com/gogf/gf/v2 v2.0.0/go.mod h1:apktt6TleWtCIwpz63vBqUnw8MX8gWKoZyxgDpXFtgM=
github.com/gogf/gf/v2 v2.3.0/go.mod h1:tsbmtwcAl2chcYoq/fP9W2FZf06aw4i89X34nbSHo9Y=
github.com/gogf/gf/v2 v2.3.2 h1:nlJ0zuDWqFb93/faZmr7V+GADx/lzz5Unz/9x6OJ2u8=
github.com/gogf/gf/v2 v2.3.2/go.mod h1:tsbmtwcAl2chcYoq/fP9W2FZf06aw4i89X34nbSHo9Y=
github.com/gogf/gf/v2 v2.4.1 h1:snsuvDhNFiRoAuWBbKfIIng0KyMaRA87Qr03GLir5j8=
github.com/gogf/gf/v2 v2.4.1/go.mod h1:tsbmtwcAl2chcYoq/fP9W2FZf06aw4i89X34nbSHo9Y=
github.com/golang-jwt/jwt/v4 v4.4.2 h1:rcc4lwaZgFMCZ5jxF9ABolDcIHdBytAFgqFPbSJQAYs=
github.com/golang-jwt/jwt/v4 v4.4.2/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0=
github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0 h1:DACJavvAHhabrF08vX0COfcOBJRhZ8lUbR+ZWIs0Y5g=
@ -104,6 +104,7 @@ github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
github.com/leodido/go-urn v1.2.1/go.mod h1:zt4jvISO2HfUBqxjfIshjdMTYS56ZS/qv49ictyFfxY=
github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 h1:6E+4a0GO5zZEnZ81pIr0yLvtUWk2if982qA3F3QD6H4=
github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0/go.mod h1:zJYVVT2jmtg6P3p1VtQj7WsuWi/y4VnjVBn7F8KPB3I=
github.com/magiconair/properties v1.8.6/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60=
github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY=
@ -146,6 +147,7 @@ github.com/onsi/gomega v1.18.1/go.mod h1:0q+aL8jAiMXy9hbwj2mr5GziHiwhAIQpFmmtT5h
github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA=
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c h1:ncq/mPwQF4JjgDlrVEn3C11VoGHZN7m8qihwgMEtzYw=
github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE=
github.com/qiniu/dyn v1.3.0/go.mod h1:E8oERcm8TtwJiZvkQPbcAh0RL8jO1G0VXJMW3FAWdkk=
github.com/qiniu/go-sdk/v7 v7.13.0 h1:0bWRh/oAC2cArUILZLuWN+s9hPep1JYch5sA2Mfxq7A=
@ -157,8 +159,6 @@ github.com/rivo/uniseg v0.4.3/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUc
github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc=
github.com/rogpeppe/go-internal v1.8.0 h1:FCbCCtXNOY3UtUuHUYaghJg4y7Fd14rXifAYUAtL9R8=
github.com/rogpeppe/go-internal v1.8.0/go.mod h1:WmiCO8CzOY8rg0OYDC4/i/2WRWAB6poM+XZ2dLUbcbE=
github.com/shirou/gopsutil v3.21.11+incompatible h1:+1+c1VGhc88SSonWP6foOcLhvnKlUeu/erjjvaPEYiI=
github.com/shirou/gopsutil v3.21.11+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA=
github.com/shirou/gopsutil/v3 v3.23.2 h1:PAWSuiAszn7IhPMBtXsbSCafej7PqUOvY6YywlQUExU=
github.com/shirou/gopsutil/v3 v3.23.2/go.mod h1:gv0aQw33GLo3pG8SiWKiQrbDzbRY1K80RyZJ7V4Th1M=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
@ -170,8 +170,8 @@ github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
github.com/stretchr/testify v1.8.1 h1:w7B6lhMri9wdJUVmEZPGGhZzrYTPvgJArz7wNPgYKsk=
github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
github.com/stretchr/testify v1.8.2 h1:+h33VjcLVPDHtOdpUCuF+7gSuG3yGIftsP1YvFihtJ8=
github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.194/go.mod h1:7sCQWVkxcsR38nffDW057DRGk8mUjK1Ing/EFOK8s8Y=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/kms v1.0.194/go.mod h1:yrBKWhChnDqNz1xuXdSbWXG56XawEq0G5j1lg4VwBD4=
@ -181,11 +181,9 @@ github.com/tiger1103/gfast-cache v1.0.0 h1:+amboC6uu4AvkUnDz4DECcsBTp5HW+O98k8gu
github.com/tiger1103/gfast-cache v1.0.0/go.mod h1:l+e5vdUHmqK0Th5VBOCSxXORbm8MwZQMXDkn+KA+amE=
github.com/tiger1103/gfast-token v1.0.3 h1:6uPGGuhxlLODV9tDS1djhWHUSaIYtVNyOqibHTITCt4=
github.com/tiger1103/gfast-token v1.0.3/go.mod h1:yjTBd86Gi2tOrgNBZe60QKyMprJVFSg3zUmQDEkD/Lw=
github.com/tklauser/go-sysconf v0.3.10 h1:IJ1AZGZRWbY8T5Vfk04D9WOA5WSejdflXxP03OUqALw=
github.com/tklauser/go-sysconf v0.3.10/go.mod h1:C8XykCvCb+Gn0oNCWPIlcb0RuglQTYaQ2hGm7jmxEFk=
github.com/tklauser/go-sysconf v0.3.11 h1:89WgdJhk5SNwJfu+GKyYveZ4IaJ7xAkecBo+KdJV0CM=
github.com/tklauser/go-sysconf v0.3.11/go.mod h1:GqXfhXY3kiPa0nAXPDIQIWzJbMCB7AmcWpGR8lSZfqI=
github.com/tklauser/numcpus v0.4.0 h1:E53Dm1HjH1/R2/aoCtXtPgzmElmn51aOkhCFSuZq//o=
github.com/tklauser/numcpus v0.4.0/go.mod h1:1+UI3pD8NW14VMwdgJNJ1ESk2UnwhAnz5hMwiKKqXCQ=
github.com/tklauser/numcpus v0.6.0 h1:kebhY2Qt+3U6RNK7UqpYNA+tJ23IBEGKkB7JQBfDYms=
github.com/tklauser/numcpus v0.6.0/go.mod h1:FEZLMke0lhOUG6w2JadTzp0a+Nl8PF/GFkQ5UVIcaL4=
github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/yuin/goldmark v1.4.0/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
@ -256,7 +254,6 @@ golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBc
golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20211020174200-9d6173849985/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220128215802-99c3d69c2c27/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=

View File

@ -0,0 +1,22 @@
/*
* @desc:公用model
* @company:云南奇讯科技有限公司
* @Author: yixiaohu<yxh669@qq.com>
* @Date: 2023/5/11 22:43
*/
package model
// PageReq 公共请求参数
type PageReq struct {
DateRange []string `p:"dateRange"` //日期范围
PageNum int `p:"pageNum"` //当前页码
PageSize int `p:"pageSize"` //每页数
OrderBy string //排序方式
}
// ListRes 列表公共返回
type ListRes struct {
CurrentPage int `json:"currentPage"`
Total interface{} `json:"total"`
}

View File

@ -119,10 +119,3 @@ func (c *userController) Delete(ctx context.Context, req *system.UserDeleteReq)
err = service.SysUser().Delete(ctx, req.Ids)
return
}
// GetUsers 通过用户id批量获取用户信息
func (c *userController) GetUsers(ctx context.Context, req *system.UserGetByIdsReq) (res *system.UserGetByIdsRes, err error) {
res = new(system.UserGetByIdsRes)
res.List, err = service.SysUser().GetUsers(ctx, req.Ids)
return
}

View File

@ -86,3 +86,8 @@ func (c *toolsGenTableController) BatchGenCode(ctx context.Context, req *system.
err = service.ToolsGenTable().GenCode(ctx, req.Ids)
return
}
func (c *toolsGenTableController) SyncTable(ctx context.Context, req *system.ToolsGenTableSyncTableReq) (res *system.ToolsGenTableSyncTableRes, err error) {
err = service.ToolsGenTable().SyncTable(ctx, req.TableId)
return
}

View File

@ -21,7 +21,7 @@ func init() {
type sContext struct{}
func New() *sContext {
func New() service.IContext {
return &sContext{}
}

View File

@ -23,7 +23,7 @@ func init() {
service.RegisterMiddleware(New())
}
func New() *sMiddleware {
func New() service.IMiddleware {
return &sMiddleware{}
}

View File

@ -29,7 +29,7 @@ func init() {
type sPersonal struct {
}
func New() *sPersonal {
func New() service.IPersonal {
return &sPersonal{}
}

View File

@ -29,7 +29,7 @@ func init() {
service.RegisterSysAuthRule(New())
}
func New() *sSysAuthRule {
func New() service.ISysAuthRule {
return &sSysAuthRule{}
}

View File

@ -27,7 +27,7 @@ func init() {
service.RegisterSysDept(New())
}
func New() *sSysDept {
func New() service.ISysDept {
return &sSysDept{}
}

View File

@ -30,7 +30,7 @@ func init() {
service.RegisterSysJob(New())
}
func New() *sSysJob {
func New() service.ISysJob {
return &sSysJob{}
}

View File

@ -22,7 +22,7 @@ func init() {
service.RegisterSysJobLog(New())
}
func New() *sSysJobLog {
func New() service.ISysJobLog {
return new(sSysJobLog)
}

View File

@ -24,7 +24,7 @@ func init() {
service.RegisterSysLoginLog(New())
}
func New() *sSysLoginLog {
func New() service.ISysLoginLog {
return &sSysLoginLog{
Pool: grpool.New(100),
}

View File

@ -33,7 +33,7 @@ func init() {
service.RegisterOperateLog(New())
}
func New() *sOperateLog {
func New() service.IOperateLog {
return &sOperateLog{
Pool: grpool.New(100),
}

View File

@ -24,7 +24,7 @@ func init() {
service.RegisterSysPost(New())
}
func New() *sSysPost {
func New() service.ISysPost {
return &sSysPost{}
}

View File

@ -28,7 +28,7 @@ func init() {
service.RegisterSysRole(New())
}
func New() *sSysRole {
func New() service.ISysRole {
return &sSysRole{}
}
@ -171,7 +171,7 @@ func (s *sSysRole) GetFilteredNamedPolicy(ctx context.Context, id uint) (gpSlice
}
func (s *sSysRole) hasManageAccess(ctx context.Context, roleId uint) bool {
currentUserId:=service.Context().GetUserId(ctx)
currentUserId := service.Context().GetUserId(ctx)
if !service.SysUser().IsSupperAdmin(ctx, currentUserId) {
var (
roleIds []uint
@ -179,14 +179,14 @@ func (s *sSysRole) hasManageAccess(ctx context.Context, roleId uint) bool {
err error
list []*entity.SysRole
)
list,err = s.GetRoleList(ctx)
list, err = s.GetRoleList(ctx)
if err != nil {
g.Log().Error(ctx, err)
return false
}
for _,v:=range list{
for _, v := range list {
//判断是否当前用户所建角色
if roleId==v.Id && v.CreatedBy==currentUserId{
if roleId == v.Id && v.CreatedBy == currentUserId {
return true
}
}

View File

@ -42,7 +42,7 @@ type sSysUser struct {
casBinUserPrefix string //CasBin 用户id前缀
}
func New() *sSysUser {
func New() service.ISysUser {
return &sSysUser{
casBinUserPrefix: "u_",
}
@ -523,7 +523,7 @@ func (s *sSysUser) Add(ctx context.Context, req *system.UserAddReq) (err error)
})
liberr.ErrIsNil(ctx, e, "添加用户失败")
//不是超管过滤提交角色数据
if !service.SysUser().IsSupperAdmin(ctx,service.Context().GetUserId(ctx)){
if !service.SysUser().IsSupperAdmin(ctx, service.Context().GetUserId(ctx)) {
req.RoleIds, err = s.filterRoleIds(ctx, req.RoleIds, service.Context().GetUserId(ctx))
liberr.ErrIsNil(ctx, err)
}
@ -555,7 +555,7 @@ func (s *sSysUser) Edit(ctx context.Context, req *system.UserEditReq) (err error
IsAdmin: req.IsAdmin,
})
liberr.ErrIsNil(ctx, err, "修改用户信息失败")
if !service.SysUser().IsSupperAdmin(ctx,service.Context().GetUserId(ctx)){
if !service.SysUser().IsSupperAdmin(ctx, service.Context().GetUserId(ctx)) {
req.RoleIds, err = s.filterRoleIds(ctx, req.RoleIds, service.Context().GetUserId(ctx))
liberr.ErrIsNil(ctx, err)
}

View File

@ -15,6 +15,7 @@ import (
"github.com/mssola/user_agent"
"github.com/tiger1103/gfast/v3/api/v1/common"
"github.com/tiger1103/gfast/v3/api/v1/system"
comModel "github.com/tiger1103/gfast/v3/internal/app/common/model"
"github.com/tiger1103/gfast/v3/internal/app/system/consts"
"github.com/tiger1103/gfast/v3/internal/app/system/dao"
"github.com/tiger1103/gfast/v3/internal/app/system/model"
@ -28,7 +29,7 @@ func init() {
service.RegisterSysUserOnline(New())
}
func New() *sSysUserOnline {
func New() service.ISysUserOnline {
return &sSysUserOnline{
Pool: grpool.New(100),
}
@ -90,9 +91,11 @@ func (s *sSysUserOnline) SaveOnline(ctx context.Context, params *model.SysUserOn
func (s *sSysUserOnline) CheckUserOnline(ctx context.Context) {
param := &system.SysUserOnlineSearchReq{
PageReq: common.PageReq{
PageReq: comModel.PageReq{
PageNum: 1,
PageSize: 50,
},
},
}
var total int
for {

View File

@ -17,7 +17,7 @@ func init() {
service.RegisterTaskList(New())
}
func New() *sTaskList {
func New() service.ITaskList {
return &sTaskList{
mu: gmutex.New(),
}

View File

@ -21,7 +21,7 @@ type sToken struct {
*gftoken.GfToken
}
func New() *sToken {
func New() service.IGfToken {
var (
ctx = gctx.New()
opt *commonModel.TokenOptions

View File

@ -43,7 +43,7 @@ func init() {
service.RegisterToolsGenTable(New())
}
func New() *sToolsGenTable {
func New() service.IToolsGenTable {
return new(sToolsGenTable)
}
@ -184,7 +184,7 @@ func (s *sToolsGenTable) InitTable(ctx context.Context, table *entity.ToolsGenTa
table.PackageName = g.Cfg().MustGet(ctx, "gen.packageName").String()
table.ModuleName = g.Cfg().MustGet(ctx, "gen.moduleName").String()
table.BusinessName = s.GetBusinessName(ctx, table.TableName)
table.FunctionName = strings.ReplaceAll(table.TableComment, "表", "")
table.FunctionName = table.TableComment
table.FunctionAuthor = g.Cfg().MustGet(ctx, "gen.author").String()
table.TplCategory = "crud"
pkColumn, err := s.getPkColumn(columns)
@ -403,7 +403,6 @@ func (s *sToolsGenTable) SaveEdit(ctx context.Context, req *system.ToolsGenTable
dbColumn.QueryType = column.QueryType
dbColumn.GoField = column.GoField
dbColumn.DictType = column.DictType
dbColumn.IsInsert = column.IsInsert
dbColumn.IsEdit = column.IsEdit
dbColumn.IsList = column.IsList
dbColumn.IsDetail = column.IsDetail
@ -473,10 +472,13 @@ func (s *sToolsGenTable) GenData(ctx context.Context, tableId int64) (data g.Map
}
service.ToolsGenTableColumn().SetPkColumn(extendData, extendData.Columns)
view := gview.New()
view.SetConfigWithMap(g.Map{
err = view.SetConfigWithMap(g.Map{
"Paths": g.Cfg().MustGet(ctx, "gen.templatePath").String(),
"Delimiters": []string{"{{", "}}"},
})
if err != nil {
return
}
view.BindFuncMap(g.Map{
"UcFirst": func(str string) string {
return gstr.UcFirst(str)
@ -663,16 +665,6 @@ func (s *sToolsGenTable) GenData(ctx context.Context, tableId int64) (data g.Map
return
}
vueAddKey := "vueAdd"
vueAddValue := ""
var tmpVueAddModel string
if tmpVueAddModel, err = view.Parse(ctx, "vue/add-vue.template", tplData); err == nil {
vueAddValue = tmpVueAddModel
vueAddValue, err = s.trimBreak(vueAddValue)
} else {
return
}
vueEditKey := "vueEdit"
vueEditValue := ""
var tmpVueEditModel string
@ -709,7 +701,6 @@ func (s *sToolsGenTable) GenData(ctx context.Context, tableId int64) (data g.Map
tsApiKey: tsApiValue,
tsModelKey: tsModelValue,
vueKey: vueValue,
vueAddKey: vueAddValue,
vueEditKey: vueEditValue,
vueDetailKey: vueDetailValue,
}
@ -723,7 +714,10 @@ func (s *sToolsGenTable) SelectRecordById(ctx context.Context, tableId int64) (t
return
}
m := gconv.Map(table)
gconv.Struct(m, &tableEx)
err = gconv.Struct(m, &tableEx)
if err != nil {
return
}
if tableEx.TplCategory == "tree" {
opt := gjson.New(tableEx.Options)
tableEx.TreeParentCode = opt.Get("treeParentCode").String()
@ -746,7 +740,6 @@ func (s *sToolsGenTable) SelectRecordById(ctx context.Context, tableId int64) (t
allColumnExs := make([]*model.ToolsGenTableColumnEx, len(columns))
var (
insertColumns []*model.ToolsGenTableColumnEx
editColumns []*model.ToolsGenTableColumnEx
listColumns []*model.ToolsGenTableColumnEx
detailColumns []*model.ToolsGenTableColumnEx
@ -763,12 +756,6 @@ func (s *sToolsGenTable) SelectRecordById(ctx context.Context, tableId int64) (t
allColumnExs[i] = columnEx
tableEx.IsPkInsertable = tableEx.IsPkInsertable || column.IsPk && !column.IsIncrement
tableEx.IsPkListable = tableEx.IsPkListable || column.IsPk && column.IsList
if column.IsInsert && !service.ToolsGenTableColumn().IsNotEdit(columnName) && !column.IsPk {
insertColumns = append(insertColumns, columnEx)
columnEx.IsInsert = true
} else {
columnEx.IsInsert = false
}
if column.IsEdit && !service.ToolsGenTableColumn().IsNotEdit(columnName) && !column.IsPk {
editColumns = append(editColumns, columnEx)
columnEx.IsEdit = true
@ -861,9 +848,6 @@ func (s *sToolsGenTable) SelectRecordById(ctx context.Context, tableId int64) (t
break
}
}
sort.Slice(insertColumns, func(i, j int) bool {
return insertColumns[i].SortOrderEdit < insertColumns[j].SortOrderEdit
})
sort.Slice(editColumns, func(i, j int) bool {
return editColumns[i].SortOrderEdit < editColumns[j].SortOrderEdit
})
@ -878,7 +862,6 @@ func (s *sToolsGenTable) SelectRecordById(ctx context.Context, tableId int64) (t
})
tableEx.Columns = allColumnExs
tableEx.InsertColumns = insertColumns
tableEx.EditColumns = editColumns
tableEx.DetailColumns = detailColumns
tableEx.ListColumns = listColumns
@ -1068,10 +1051,6 @@ func (s *sToolsGenTable) GenCode(ctx context.Context, ids []int) (err error) {
path := strings.Join([]string{frontDir, "/src/views/" + pluginName, extendData.ModuleName, "/", businessName + "/list/component/detail", ".vue"}, "")
err = s.createFile(path, code, extendData.Overwrite)
liberr.ErrIsNil(ctx, err)
case "vueAdd":
path := strings.Join([]string{frontDir, "/src/views/" + pluginName, extendData.ModuleName, "/", businessName + "/list/component/add", ".vue"}, "")
err = s.createFile(path, code, extendData.Overwrite)
liberr.ErrIsNil(ctx, err)
case "vueEdit":
path := strings.Join([]string{frontDir, "/src/views/" + pluginName, extendData.ModuleName, "/", businessName + "/list/component/edit", ".vue"}, "")
err = s.createFile(path, code, extendData.Overwrite)
@ -1184,6 +1163,14 @@ func (s *sToolsGenTable) getLinkedTableInfo(ctx context.Context, tableName strin
m := gconv.Map(table)
err = gconv.Struct(m, &linkedTable)
liberr.ErrIsNil(ctx, err)
if linkedTable.Options != "" {
err = gconv.Struct(linkedTable.Options, &linkedTable.OptionsStruct)
liberr.ErrIsNil(ctx, err)
err = dao.ToolsGenTableColumn.Ctx(ctx).Where(dao.ToolsGenTableColumn.Columns().TableId, table.TableId).
Where(dao.ToolsGenTableColumn.Columns().ColumnName, gstr.CaseSnake(linkedTable.OptionsStruct.TreeParentCode)).
Scan(&linkedTable.OptionsStruct.ColumnAttr)
liberr.ErrIsNil(ctx, err)
}
linkedTable.RefColumns = gmap.NewListMap()
})
return
@ -1262,3 +1249,66 @@ import (
err = s.createFile(path, code, true)
return
}
func (s *sToolsGenTable) SyncTable(ctx context.Context, tableId int64) (err error) {
var (
extendData *model.ToolsGenTableEx
table *entity.ToolsGenTable
genTableColumns []*entity.ToolsGenTableColumn
)
extendData, err = s.SelectRecordById(ctx, tableId)
if err != nil {
return
}
if extendData == nil {
err = gerror.New("表格数据不存在")
return
}
err = g.DB().Transaction(ctx, func(ctx context.Context, tx gdb.TX) error {
err = g.Try(ctx, func(ctx context.Context) {
table, err = s.GetTableInfoByTableId(ctx, tableId)
liberr.ErrIsNil(ctx, err)
if table == nil {
liberr.ErrIsNil(ctx, gerror.New("表格数据不存在"))
}
genTableColumns, err = service.ToolsGenTableColumn().SelectDbTableColumnsByName(ctx, extendData.TableName)
liberr.ErrIsNil(ctx, err, "获取列数据失败")
if len(genTableColumns) <= 0 {
liberr.ErrIsNil(ctx, gerror.New("获取列数据失败"))
}
for _, column := range genTableColumns {
alreadyExists := false //字段是否存在
for _, tableColumn := range extendData.Columns {
if column.ColumnName == tableColumn.ColumnName {
alreadyExists = true
break
}
}
//字段不存在则添加
if !alreadyExists {
service.ToolsGenTableColumn().InitColumnField(column, table)
_, err = tx.Model(dao.ToolsGenTableColumn.Table()).Insert(column)
liberr.ErrIsNil(ctx, err, fmt.Sprintf("保存列`%s`数据失败", column.ColumnName))
}
}
for _, tableColumn := range extendData.Columns {
alreadyDelete := true //数据表中字段是否已删除
for _, column := range genTableColumns {
if column.ColumnName == tableColumn.ColumnName {
alreadyDelete = false
break
}
}
if alreadyDelete {
//删除columns表中字段
_, err = dao.ToolsGenTableColumn.Ctx(ctx).
Where(dao.ToolsGenTableColumn.Columns().ColumnId, tableColumn.ColumnId).
Delete()
liberr.ErrIsNil(ctx, err)
}
}
})
return err
})
return
}

View File

@ -26,7 +26,7 @@ func init() {
service.RegisterToolsGenTableColumn(New())
}
func New() *sToolsGenTableColumn {
func New() service.IToolsGenTableColumn {
return &sToolsGenTableColumn{
ColumnTypeStr: []string{"char", "varchar", "narchar", "varchar2", "tinytext", "text", "mediumtext", "longtext"},
ColumnTypeTime: []string{"datetime", "time", "date", "timestamp"},
@ -117,15 +117,6 @@ func (s *sToolsGenTableColumn) InitColumnField(column *entity.ToolsGenTableColum
column.TsType = "boolean"
}
//新增字段
if s.IsNotEdit(columnName) {
column.IsInsert = false
} else if column.IsIncrement {
column.IsInsert = false
} else {
column.IsInsert = true
}
// 编辑字段
if s.IsNotEdit(columnName) {
column.IsEdit = false

View File

@ -23,7 +23,6 @@ type ToolsGenTableColumn struct {
IsPk interface{} // 是否主键1是
IsIncrement interface{} // 是否自增1是
IsRequired interface{} // 是否必填1是
IsInsert interface{} // 是否为插入字段1是
IsEdit interface{} // 是否编辑字段1是
IsList interface{} // 是否列表字段1是
IsDetail interface{} // 是否详情字段

View File

@ -18,7 +18,6 @@ type ToolsGenTableColumn struct {
IsPk bool `json:"isPk" description:"是否主键1是"`
IsIncrement bool `json:"isIncrement" description:"是否自增1是"`
IsRequired bool `json:"isRequired" description:"是否必填1是"`
IsInsert bool `json:"isInsert" description:"是否为插入字段1是"`
IsEdit bool `json:"isEdit" description:"是否编辑字段1是"`
IsList bool `json:"isList" description:"是否列表字段1是"`
IsDetail bool `json:"isDetail" description:"是否详情字段"`

View File

@ -51,3 +51,9 @@ type SysUserSimpleRes struct {
UserName string `orm:"user_name" json:"userName"` // 用户名
UserNickname string `orm:"user_nickname" json:"userNickname"` // 用户昵称
}
type LinkUserRes struct {
gmeta.Meta `orm:"table:sys_user"`
Id uint64 `orm:"id" json:"id"`
UserNickname string `orm:"user_nickname" json:"userNickname"`
}

View File

@ -46,7 +46,6 @@ type ToolsGenTableEx struct {
HasUpdatedBy bool // 是否有updated_by字段
HasConversion bool // service中是否有转换函数
Columns []*ToolsGenTableColumnEx // 表列信息
InsertColumns []*ToolsGenTableColumnEx // 新增界面列信息,主键单独判断不在此列
EditColumns []*ToolsGenTableColumnEx // 编辑界面列信息,主键单独判断不在此列
ListColumns []*ToolsGenTableColumnEx // 列表界面列信息
DetailColumns []*ToolsGenTableColumnEx // 详情界面列信息
@ -63,10 +62,21 @@ type ToolsGenTableLinked struct {
PackageName string // 生成包路径
ModuleName string // 生成模块名
BusinessName string // 生成业务名
TplCategory string // 表类型列表或树表
Options string // 表相关选项配置
OptionsStruct ToolsGenTableOptions // 表相关选项配置结构
RefColumns *gmap.ListMap // 要被查询的所有数据列信息
LinkedTables []*ToolsGenTableLinked // 嵌套关联表信息
}
// ToolsGenTableOptions 表相关选项配置
type ToolsGenTableOptions struct {
TreeCode string `json:"treeCode"`
TreeName string `json:"treeName"`
TreeParentCode string `json:"treeParentCode"`
ColumnAttr *ToolsGenTableColumnEx
}
// ToolsGenTableEditData 编辑页面表数据详情
type ToolsGenTableEditData struct {
*entity.ToolsGenTable

View File

@ -23,7 +23,6 @@ type ToolsGenTableColumnEx struct {
IsPk bool // 是否主键
IsIncrement bool // 是否自增
IsRequired bool // 是否必填
IsInsert bool // 是否为插入字段
IsEdit bool // 是否编辑字段
IsList bool // 是否列表字段
IsDetail bool // 是否详情字段

View File

@ -31,6 +31,7 @@ type (
GenData(ctx context.Context, tableId int64) (data g.MapStrStr, extendData *model.ToolsGenTableEx, err error)
SelectRecordById(ctx context.Context, tableId int64) (tableEx *model.ToolsGenTableEx, err error)
GenCode(ctx context.Context, ids []int) (err error)
SyncTable(ctx context.Context, tableId int64) (err error)
}
)

File diff suppressed because one or more lines are too long

View File

@ -9,39 +9,9 @@
////
package {{.table.ModuleName }}
////
{{$hasUpFile:=false}}
{{$hasArr:=false}}
{{$hasGtime:=false}}
{{range $index,$column :=.table.Columns}}
{{if eq $column.HtmlType "imagefile" "images" "file" "files" }}
{{$hasUpFile = true}}
{{end}}
{{if eq $column.HtmlType "checkbox"}}
{{$hasArr = true}}
{{end}}
{{end}}
{{range $index,$column :=.table.EditColumns}}
{{if eq $column.GoType "Time"}}
{{$hasGtime = true}}
{{end}}
{{end}}
{{range $index,$column :=.table.InsertColumns}}
{{if eq $column.GoType "Time"}}
{{$hasGtime = true}}
{{end}}
{{end}}
import (
{{if $hasArr}}
"github.com/gogf/gf/v2/container/garray"
{{end}}
"github.com/gogf/gf/v2/frame/g"
{{if and .table.HasTimeColumn $hasGtime}}
"github.com/gogf/gf/v2/os/gtime"
{{end}}
commonApi "{{.goModName}}/api/v1/common"
{{if $hasUpFile}}
comModel "{{.goModName}}/internal/app/common/model"
{{end}}
"{{.goModName}}/{{.table.PackageName}}/model"
)
@ -49,35 +19,40 @@ import (
// {{.table.ClassName}}SearchReq 分页请求参数
type {{.table.ClassName}}SearchReq struct {
g.Meta `path:"/list" tags:"{{$.table.FunctionName}}" method:"get" summary:"{{$.table.FunctionName}}列表"`
{{range $index, $column := .table.QueryColumns}}
{{$column.GoField}} {{if or (eq $column.GoType "Time") (eq $column.GoType "int") (eq $column.GoType "int64") (eq $column.GoType "uint") (eq $column.GoType "uint64") (eq $column.GoType "float") (eq $column.GoType "float64") (eq $column.GoType "bool")}}{{if eq $column.QueryType "BETWEEN"}}[]{{end}}string{{else}}{{if eq $column.QueryType "BETWEEN"}}[]{{end}}{{$column.GoType}}{{end}} `p:"{{$column.HtmlField}}"{{if ne $column.FieldValidation ""}} v:"{{$column.FieldValidation}}"{{end}}` //{{$column.ColumnComment}}
{{end}}
commonApi.PageReq
commonApi.Author
model.{{.table.ClassName}}SearchReq
}
// {{.table.ClassName}}SearchRes 列表返回结果
type {{.table.ClassName}}SearchRes struct {
g.Meta `mime:"application/json"`
commonApi.ListRes
List []*model.{{.table.ClassName}}ListRes `json:"list"`
*model.{{.table.ClassName}}SearchRes
}
{{if gt (len .table.LinkedTables) 0}}
//相关连表查询数据
type Linked{{$.table.ClassName}}DataSearchReq struct{
g.Meta `path:"/linkedData" tags:"{{$.table.FunctionName}}" method:"get" summary:"{{$.table.FunctionName}}关联表数据"`
commonApi.Author
}
{{end}}
{{if gt (len .table.LinkedTables) 0}}
//相关连表查询数据
type Linked{{$.table.ClassName}}DataSearchRes struct{
g.Meta `mime:"application/json"`
*model.Linked{{$.table.ClassName}}DataSearchRes
}
{{end}}
// {{.table.ClassName}}AddReq 添加操作请求参数
type {{.table.ClassName}}AddReq struct {
g.Meta `path:"/add" tags:"{{$.table.FunctionName}}" method:"post" summary:"{{$.table.FunctionName}}添加"`
commonApi.Author
{{if .table.IsPkInsertable}}
{{.table.PkColumn.GoField}} {{.table.PkColumn.GoType}} `p:"{{.table.PkColumn.HtmlField}}" v:"required#主键ID不能为空"`
{{end}}
{{range $index, $column := .table.InsertColumns}}
{{$column.GoField}} {{if eq $column.GoType "Time"}}*gtime.Time{{else if eq $column.HtmlType "images" "file" "files"}}[]*comModel.UpFile{{else if eq $column.HtmlType "checkbox"}}garray.StrArray{{else}}{{$column.GoType}}{{end}} `p:"{{$column.HtmlField}}" {{if $column.IsRequired}}v:"required#{{$column.ColumnComment}}不能为空"{{end}}`
{{end}}
{{if .table.HasCreatedBy}}
CreatedBy uint64
{{end}}
*model.{{.table.ClassName}}AddReq
}
// {{.table.ClassName}}AddRes 添加操作返回结果
@ -90,13 +65,7 @@ type {{.table.ClassName}}AddRes struct {
type {{.table.ClassName}}EditReq struct {
g.Meta `path:"/edit" tags:"{{$.table.FunctionName}}" method:"put" summary:"{{$.table.FunctionName}}修改"`
commonApi.Author
{{.table.PkColumn.GoField}} {{.table.PkColumn.GoType}} `p:"{{.table.PkColumn.HtmlField}}" v:"required#主键ID不能为空"`
{{range $index, $column := .table.EditColumns}}
{{$column.GoField}} {{if eq $column.GoType "Time"}}*gtime.Time{{else if eq $column.HtmlType "images" "file" "files"}}[]*comModel.UpFile{{else if eq $column.HtmlType "checkbox"}}garray.StrArray{{else}}{{$column.GoType}}{{end}} `p:"{{$column.HtmlField}}" {{if $column.IsRequired}}v:"required#{{$column.ColumnComment}}不能为空"{{end}}`
{{end}}
{{if .table.HasUpdatedBy}}
UpdatedBy uint64
{{end}}
*model.{{.table.ClassName}}EditReq
}
// {{.table.ClassName}}EditRes 修改操作返回结果

View File

@ -9,7 +9,11 @@
////
{{$structName := .table.BusinessName | CaseCamelLower}}
{{$businessName := .table.BusinessName | CaseCamelLower}}
{{$plugin:=""}}
{{if ContainsI $.table.PackageName "plugins"}}
{{$plugin = "plugins/"}}
{{end}}
package controller
////
@ -20,6 +24,14 @@ import (
{{if ne $.table.ModuleName "system"}}
systemController "{{.goModName}}/internal/app/system/controller"
{{end}}
{{if gt (len .table.LinkedTables) 0}}
"errors"
{{if ne $.table.ModuleName "system"}}
systemService "github.com/tiger1103/gfast/v3/internal/app/system/service"
{{else}}
"github.com/tiger1103/gfast/v3/internal/app/system/service"
{{end}}
{{end}}
)
////
type {{$structName}}Controller struct {
@ -34,10 +46,29 @@ var {{.table.ClassName}} = new({{$structName}}Controller)
////
// List 列表
func (c *{{$structName}}Controller) List(ctx context.Context, req *{{.table.ModuleName}}.{{.table.ClassName}}SearchReq) (res *{{.table.ModuleName}}.{{.table.ClassName}}SearchRes, err error) {
res, err = service.{{.table.ClassName}}().List(ctx, req)
res = new({{.table.ModuleName}}.{{.table.ClassName}}SearchRes)
res.{{.table.ClassName}}SearchRes, err = service.{{.table.ClassName}}().List(ctx, &req.{{.table.ClassName}}SearchReq)
return
}
{{if gt (len .table.LinkedTables) 0}}
// LinkedDataSearch 相关连表查询数据
func(c *{{$structName}}Controller) Linked{{$.table.ClassName}}DataSearch(ctx context.Context, req *{{.table.ModuleName}}.Linked{{$.table.ClassName}}DataSearchReq) (res *{{.table.ModuleName}}.Linked{{$.table.ClassName}}DataSearchRes, err error) {
{{$serviceVal := "service"}}
{{if ne $.table.ModuleName "system"}}
{{$serviceVal = "systemService"}}
{{end}}
if !{{$serviceVal}}.SysUser().AccessRule(ctx, {{$serviceVal}}.Context().GetUserId(ctx), "{{$plugin}}{{.apiVersion}}/{{.table.ModuleName}}/{{$businessName}}/list") {
err = errors.New("没有访问权限")
return
}
res = new({{.table.ModuleName}}.Linked{{$.table.ClassName}}DataSearchRes)
res.Linked{{$.table.ClassName}}DataSearchRes,err = service.{{.table.ClassName}}().Linked{{$.table.ClassName}}DataSearch(ctx)
return
}
{{end}}
////
// Get 获取{{.table.FunctionName}}
func (c *{{$structName}}Controller) Get(ctx context.Context, req *{{.table.ModuleName}}.{{.table.ClassName}}GetReq) (res *{{.table.ModuleName}}.{{.table.ClassName}}GetRes, err error) {
@ -49,14 +80,14 @@ func (c *{{$structName}}Controller) Get(ctx context.Context, req *{{.table.Modul
////
// Add 添加{{.table.FunctionName}}
func (c *{{$structName}}Controller) Add(ctx context.Context, req *{{.table.ModuleName}}.{{.table.ClassName}}AddReq) (res *{{.table.ModuleName}}.{{.table.ClassName}}AddRes, err error) {
err = service.{{.table.ClassName}}().Add(ctx, req)
err = service.{{.table.ClassName}}().Add(ctx, req.{{.table.ClassName}}AddReq)
return
}
////
// Edit 修改{{.table.FunctionName}}
func (c *{{$structName}}Controller) Edit(ctx context.Context, req *{{.table.ModuleName}}.{{.table.ClassName}}EditReq) (res *{{.table.ModuleName}}.{{.table.ClassName}}EditRes, err error) {
err = service.{{.table.ClassName}}().Edit(ctx, req)
err = service.{{.table.ClassName}}().Edit(ctx, req.{{.table.ClassName}}EditReq)
return
}

View File

@ -14,22 +14,32 @@ package logic
////
{{$gjson:=false}}
{{$usedSystemModule:=false}}
{{$gstr:=false}}
{{range $index, $column := .table.Columns}}
{{if eq $column.HtmlType "images" "file" "files"}}
{{$gjson = true}}
{{end}}
{{if eq $column.HtmlField "createdBy" "updatedBy" "deletedBy"}}
{{if and (eq $column.HtmlField "createdBy" "updatedBy" "deletedBy") (ne $.table.ModuleName "system")}}
{{$usedSystemModule = true}}
{{end}}
{{if eq $column.HtmlType "selects" "checkbox"}}
{{range $ti, $linkedTable := $.table.LinkedTables}}
{{if eq $column.LinkTableClass $linkedTable.ClassName}}
{{$gstr = true}}
{{end}}
{{end}}
{{end}}
{{end}}
import (
"context"
"github.com/gogf/gf/v2/frame/g"
{{if $gstr}}
"github.com/gogf/gf/v2/text/gstr"
{{end}}
{{if or .table.HasConversion (eq .table.TplCategory "tree")}}
"github.com/gogf/gf/v2/util/gconv"
{{end}}
"{{.goModName}}/api/v1/{{.table.ModuleName}}"
"{{.goModName}}/{{.table.PackageName}}/dao"
"{{.goModName}}/{{.table.PackageName}}/model"
"{{.goModName}}/{{.table.PackageName}}/model/do"
@ -44,6 +54,21 @@ import (
"{{.goModName}}/library/libUtils"
{{end}}
"{{.goModName}}/library/liberr"
{{/*去重处理-导入关联表依赖包*/}}
{{$hasMethods:=newArray}}
{{range $index,$column:= .table.LinkedTables}}
{{if ne $column.TableName ""}}
{{if not (inArray $hasMethods (concat "list" $column.ClassName))}}
{{$hasMethods = append $hasMethods (concat "list" $column.ClassName)}}
{{/*关联{{$column.LinkTableName}}表选项*/}}
{{if ne $column.PackageName $.table.PackageName}}
linked{{$column.ClassName}}Dao {{$.goModName}}/{{$column.PackageName}}/dao
{{end}}
{{end}}
{{end}}
{{end}}
)
@ -68,14 +93,14 @@ func init() {
service.Register{{.table.ClassName}}(New())
}
////
func New() *s{{.table.ClassName}} {
func New() service.I{{.table.ClassName}} {
return &s{{.table.ClassName}}{}
}
////
type s{{.table.ClassName}} struct{}
////
func (s *s{{.table.ClassName}})List(ctx context.Context, req *{{.table.ModuleName}}.{{.table.ClassName}}SearchReq) (listRes *{{.table.ModuleName}}.{{.table.ClassName}}SearchRes, err error){
listRes = new({{.table.ModuleName}}.{{.table.ClassName}}SearchRes)
func (s *s{{.table.ClassName}})List(ctx context.Context, req *model.{{.table.ClassName}}SearchReq) (listRes *model.{{.table.ClassName}}SearchRes, err error){
listRes = new(model.{{.table.ClassName}}SearchRes)
err = g.Try(ctx, func(ctx context.Context) {
m := dao.{{.table.ClassName}}.Ctx(ctx).WithAll()
{{range $index, $column := .table.QueryColumns}}
@ -128,15 +153,15 @@ func (s *s{{.table.ClassName}})List(ctx context.Context, req *{{.table.ModuleNam
if req.OrderBy!=""{
order = req.OrderBy
}
var res []*model.{{.table.ClassName}}InfoRes
err = m.Fields({{.table.ModuleName}}.{{.table.ClassName}}SearchRes{}).Page(req.PageNum, req.PageSize).Order(order).Scan(&res)
var res []*model.{{.table.ClassName}}ListRes
err = m.Page(req.PageNum, req.PageSize).Order(order).Scan(&res)
{{else}}
order:= "{{.table.SortColumn}} {{.table.SortType}}"
if req.OrderBy!=""{
order = req.OrderBy
}
var res []*model.{{.table.ClassName}}InfoRes
err = m.Fields({{.table.ModuleName}}.{{.table.ClassName}}SearchRes{}).Order(order).Scan(&res)
var res []*model.{{.table.ClassName}}ListRes
err = m.Order(order).Scan(&res)
{{end}}
liberr.ErrIsNil(ctx, err, "获取数据失败")
listRes.List = make([]*model.{{.table.ClassName}}ListRes,len(res))
@ -146,6 +171,16 @@ func (s *s{{.table.ClassName}})List(ctx context.Context, req *{{.table.ModuleNam
{{$column.HtmlField}}:= ([]*comModel.UpFile)(nil)
err = gjson.DecodeTo(v.{{$column.GoField}},&{{$column.HtmlField}})
liberr.ErrIsNil(ctx,err)
{{else if eq $column.HtmlType "selects" "checkbox" "treeSelects"}}
{{range $ti, $linkedTable := $.table.LinkedTables}}
{{if eq $column.LinkTableClass $linkedTable.ClassName}}
err = g.Model("{{$linkedTable.TableName}}").
Fields(model.Linked{{$.table.ClassName}}{{$linkedTable.ClassName}}{}).
Where("id", gstr.Split(v.{{$column.GoField}}, ",")).
Scan(&v.Linked{{$column.GoField}})
liberr.ErrIsNil(ctx, err)
{{end}}
{{end}}
{{end}}
{{end}}
listRes.List[k] = &model.{{.table.ClassName}}ListRes{
@ -154,6 +189,12 @@ func (s *s{{.table.ClassName}})List(ctx context.Context, req *{{.table.ModuleNam
{{if or (eq $column.HtmlField $.table.TreeCode) (eq $column.HtmlField $.table.TreeParentCode) (eq $column.HtmlField $.table.TreeName) }}
{{$column.GoField}} : v.{{$column.GoField}},
{{end}}
{{if eq $column.HtmlField "createdBy"}}
CreatedUser:v.CreatedUser,
{{end}}
{{if eq $column.HtmlField "UpdatedBy"}}
UpdatedUser:v.UpdatedUser,
{{end}}
{{end}}
{{range $index, $column := .table.Columns}}
{{if and $column.IsList (ne $column.HtmlField $.table.TreeCode) (ne $column.HtmlField $.table.TreeParentCode) (ne $column.HtmlField $.table.TreeName) }}
@ -174,6 +215,12 @@ func (s *s{{.table.ClassName}})List(ctx context.Context, req *{{.table.ModuleNam
{{.table.PkColumn.GoField}} : v.{{.table.PkColumn.GoField}},
{{end}}
{{range $index, $column := .table.ListColumns}}
{{if eq $column.HtmlField "createdBy"}}
CreatedUser:v.CreatedUser,
{{end}}
{{if eq $column.HtmlField "UpdatedBy"}}
UpdatedUser:v.UpdatedUser,
{{end}}
{{if eq $column.HtmlType "images" "file" "files"}}
{{$column.GoField}} : {{$column.HtmlField}},
{{else}}
@ -191,19 +238,57 @@ func (s *s{{.table.ClassName}})List(ctx context.Context, req *{{.table.ModuleNam
})
return
}
////
{{if gt (len .table.LinkedTables) 0}}
// LinkedDataSearch 相关连表查询数据
func(s *s{{.table.ClassName}}) Linked{{$.table.ClassName}}DataSearch(ctx context.Context) (res *model.Linked{{$.table.ClassName}}DataSearchRes, err error) {
res = new(model.Linked{{$.table.ClassName}}DataSearchRes)
{{/*去重处理-导入关联表依赖包*/}}
{{$hasMethods3:=newArray}}
{{range $index,$column:= .table.LinkedTables}}
{{if ne $column.TableName ""}}
{{if not (inArray $hasMethods3 (concat "list" $column.ClassName))}}
{{$hasMethods3 = append $hasMethods3 (concat "list" $column.ClassName)}}
{{/*关联{{$column.LinkTableName}}表选项*/}}
res.Linked{{$.table.ClassName}}{{$column.ClassName}}, err = s.List{{$.table.ClassName}}{{$column.ClassName}}(ctx)
liberr.ErrIsNil(ctx,err,"获取关联表信息失败")
{{end}}
{{end}}
{{end}}
return
}
{{end}}
////
func (s *s{{.table.ClassName}})GetBy{{$pkGoField}}(ctx context.Context, {{$.table.PkColumn.HtmlField}} {{$.table.PkColumn.GoType}}) (res *model.{{.table.ClassName}}InfoRes,err error){
err =g.Try(ctx, func(ctx context.Context){
err = dao.{{.table.ClassName}}.Ctx(ctx).WithAll().Where(dao.{{.table.ClassName}}.Columns().{{$pkGoField}}, {{$.table.PkColumn.HtmlField}}).Scan(&res)
liberr.ErrIsNil(ctx,err,"获取信息失败")
{{range $index, $column := .table.Columns}}
{{if and $column.IsList (eq $column.HtmlType "images" "file" "files")}}
{{$column.HtmlField}}:= ([]*comModel.UpFile)(nil)
err = gjson.DecodeTo(v.{{$column.GoField}},&{{$column.HtmlField}})
liberr.ErrIsNil(ctx,err)
{{else if eq $column.HtmlType "selects" "checkbox" "treeSelects"}}
{{range $ti, $linkedTable := $.table.LinkedTables}}
{{if eq $column.LinkTableClass $linkedTable.ClassName}}
err = g.Model("{{$linkedTable.TableName}}").
Fields(model.Linked{{$.table.ClassName}}{{$linkedTable.ClassName}}{}).
Where("id", gstr.Split(res.{{$column.GoField}}, ",")).
Scan(&res.Linked{{$column.GoField}})
liberr.ErrIsNil(ctx, err)
{{end}}
{{end}}
{{end}}
{{end}}
})
return
}
////
func (s *s{{.table.ClassName}})Add(ctx context.Context, req *{{.table.ModuleName}}.{{.table.ClassName}}AddReq) (err error){
func (s *s{{.table.ClassName}})Add(ctx context.Context, req *model.{{.table.ClassName}}AddReq) (err error){
err = g.Try(ctx, func(ctx context.Context) {
{{range $index, $column := .table.InsertColumns}}
{{if eq $column.HtmlType "checkbox"}}
{{range $index, $column := .table.EditColumns}}
{{if eq $column.HtmlType "checkbox" "selects" "treeSelects"}}
{{$column.HtmlField}} := ""
req.{{$column.GoField}}.FilterEmpty()
if !req.{{$column.GoField}}.IsEmpty(){
@ -220,8 +305,8 @@ func (s *s{{.table.ClassName}})Add(ctx context.Context, req *{{.table.ModuleName
{{if .table.IsPkInsertable}}
{{.table.PkColumn.GoField}}:req.{{.table.PkColumn.GoField}},
{{end}}
{{range $index, $column := .table.InsertColumns}}
{{if eq $column.HtmlType "checkbox"}}
{{range $index, $column := .table.EditColumns}}
{{if eq $column.HtmlType "checkbox" "selects" "treeSelects"}}
{{$column.GoField}}:{{$column.HtmlField}},
{{else}}
{{$column.GoField}}:req.{{$column.GoField}},
@ -236,10 +321,10 @@ func (s *s{{.table.ClassName}})Add(ctx context.Context, req *{{.table.ModuleName
return
}
////
func (s *s{{.table.ClassName}})Edit(ctx context.Context, req *{{.table.ModuleName}}.{{.table.ClassName}}EditReq) (err error){
func (s *s{{.table.ClassName}})Edit(ctx context.Context, req *model.{{.table.ClassName}}EditReq) (err error){
err = g.Try(ctx, func(ctx context.Context) {
{{range $index, $column := .table.EditColumns}}
{{if eq $column.HtmlType "checkbox"}}
{{if eq $column.HtmlType "checkbox" "selects" "treeSelects"}}
{{$column.HtmlField}} := ""
req.{{$column.GoField}}.FilterEmpty()
if !req.{{$column.GoField}}.IsEmpty(){
@ -254,7 +339,7 @@ func (s *s{{.table.ClassName}})Edit(ctx context.Context, req *{{.table.ModuleNam
{{end}}
_, err = dao.{{.table.ClassName}}.Ctx(ctx).WherePri(req.{{.table.PkColumn.GoField}}).Update(do.{{.table.ClassName}}{
{{range $index, $column := .table.EditColumns}}
{{if eq $column.HtmlType "checkbox"}}
{{if eq $column.HtmlType "checkbox" "selects" "treeSelects"}}
{{$column.GoField}}:{{$column.HtmlField}},
{{else}}
{{$column.GoField}}:req.{{$column.GoField}},
@ -288,7 +373,7 @@ func (s *s{{.table.ClassName}})GetChildrenIds(ctx context.Context,ids []{{$.tabl
err = g.Try(ctx,func(ctx context.Context){
//获取所有
var all *{{.table.ModuleName}}.{{.table.ClassName}}SearchRes
all, err = s.List(ctx, &{{.table.ModuleName}}.{{.table.ClassName}}SearchReq{})
all.{{.table.ClassName}}SearchRes, err = s.List(ctx, &model.{{.table.ClassName}}SearchReq{})
liberr.ErrIsNil(ctx,err)
list := make(g.List, len(all.List))
for k, info := range all.List {
@ -305,3 +390,24 @@ func (s *s{{.table.ClassName}})GetChildrenIds(ctx context.Context,ids []{{$.tabl
return
}
{{end}}
{{/*去重处理-导入关联表依赖包*/}}
{{$hasMethods2:=newArray}}
{{range $index,$column:= .table.LinkedTables}}
{{if ne $column.TableName ""}}
{{if not (inArray $hasMethods2 (concat "list" $column.ClassName))}}
{{$hasMethods2 = append $hasMethods2 (concat "list" $column.ClassName)}}
{{/*关联{{$column.LinkTableName}}表选项*/}}
func (s *s{{$.table.ClassName}}) List{{$.table.ClassName}}{{$column.ClassName}}(ctx context.Context)(linked{{$.table.ClassName}}{{$column.ClassName}} []*model.Linked{{$.table.ClassName}}{{$column.ClassName}},err error){
err = g.Try(ctx,func(ctx context.Context){
err = {{if ne $column.PackageName $.table.PackageName}}linked{{$column.ClassName}}Dao{{else}}dao{{end}}.{{$column.ClassName}}.
Ctx(ctx).
Fields(model.Linked{{$.table.ClassName}}{{$column.ClassName}}{}).Scan(&linked{{$.table.ClassName}}{{$column.ClassName}})
liberr.ErrIsNil(ctx,err)
})
return
}
////
{{end}}
{{end}}
{{end}}

View File

@ -9,11 +9,44 @@
////
package model
////
{{$hasUpFile:=false}}
{{$hasArr:=false}}
{{$hasGtime:=false}}
{{$hasUser:=false}}
{{range $index,$column :=.table.Columns}}
{{if and (eq $column.HtmlField "createdBy" "updatedBy") (ne $.table.ModuleName "system")}}
{{$hasUser = true}}
{{end}}
{{if eq $column.HtmlType "imagefile" "images" "file" "files" }}
{{$hasUpFile = true}}
{{end}}
{{if eq $column.HtmlType "checkbox" "selects" "treeSelects"}}
{{$hasArr = true}}
{{end}}
{{end}}
{{range $index,$column :=.table.EditColumns}}
{{if and (eq $column.HtmlField "createdBy" "updatedBy") (ne $.table.ModuleName "system")}}
{{$hasUser = true}}
{{end}}
{{if eq $column.GoType "Time"}}
{{$hasGtime = true}}
{{end}}
{{end}}
import (
{{if .table.HasTimeColumn}}
{{if $hasArr}}
"github.com/gogf/gf/v2/container/garray"
{{end}}
{{if and .table.HasTimeColumn $hasGtime}}
"github.com/gogf/gf/v2/os/gtime"
{{end}}
"github.com/gogf/gf/v2/util/gmeta"
comModel "github.com/tiger1103/gfast/v3/internal/app/common/model"
{{if $hasUser}}
systemModel "github.com/tiger1103/gfast/v3/internal/app/system/model"
{{end}}
)
////
@ -21,12 +54,18 @@ import (
type {{.table.ClassName}}InfoRes struct {
gmeta.Meta `orm:"table:{{.table.TableName}}"`
{{range $index, $column := .table.Columns}}
{{if $column.IsPk}}{{$column.GoField}} {{if eq $column.GoType "Time"}}*gtime.Time{{else}}{{$column.GoType}}{{end}} `orm:"{{$column.ColumnName}},primary" json:"{{$column.HtmlField}}"` // {{$column.ColumnComment}} {{else}}{{$column.GoField}} {{if eq $column.GoType "Time"}}*gtime.Time{{else}}{{$column.GoType}}{{end}} `orm:"{{$column.ColumnName}}" json:"{{$column.HtmlField}}"` // {{$column.ColumnComment}} {{end}}
{{if $column.IsPk}}{{$column.GoField}} {{if eq $column.GoType "Time"}}*gtime.Time{{else}}{{$column.GoType}}{{end}} `orm:"{{$column.ColumnName}},primary" json:"{{$column.HtmlField}}" dc:"{{$column.ColumnComment}}"` // {{$column.ColumnComment}} {{else}}{{$column.GoField}} {{if eq $column.GoType "Time"}}*gtime.Time{{else}}{{$column.GoType}}{{end}} `orm:"{{$column.ColumnName}}" json:"{{$column.HtmlField}}" dc:"{{$column.ColumnComment}}"` // {{$column.ColumnComment}} {{end}}
{{range $ti, $linkedTable := $.table.LinkedTables}}
{{if eq $column.LinkTableClass $linkedTable.ClassName}}
Linked{{$column.GoField}} *Linked{{$.table.ClassName}}{{$linkedTable.ClassName}} `orm:"with:{{$column.LinkLabelId}}={{$column.ColumnName}}" json:"linked{{$column.GoField}}"`
Linked{{$column.GoField}} {{if eq $column.HtmlType "selects" "checkbox" "treeSelects"}}[]{{end}}*Linked{{$.table.ClassName}}{{$linkedTable.ClassName}} `{{if not (eq $column.HtmlType "selects" "checkbox" "treeSelects")}}orm:"with:{{$column.LinkLabelId}}={{$column.ColumnName}}" {{end}}json:"linked{{$column.GoField}}"`
{{end}}
{{end}}
{{if eq $column.HtmlField "createdBy"}}
CreatedUser *{{if $hasUser}}systemModel.{{end}}LinkUserRes `orm:"with:id=created_by" json:"createdUser"`
{{end}}
{{if eq $column.HtmlField "updatedBy"}}
UpdatedUser *{{if $hasUser}}systemModel.{{end}}LinkUserRes `orm:"with:id=updated_by" json:"updatedUser"`
{{end}}
{{end}}
}
@ -35,9 +74,13 @@ type {{.table.ClassName}}InfoRes struct {
type Linked{{$.table.ClassName}}{{$linkedTable.ClassName}} struct {
gmeta.Meta `orm:"table:{{$linkedTable.TableName}}"`
{{range $ci, $linkedColumn := $linkedTable.RefColumns.Values}}
{{$linkedColumn.GoField}} {{if eq $linkedColumn.GoType "Time"}}*gtime.Time{{else}}{{$linkedColumn.GoType}}{{end}} `orm:"{{$linkedColumn.ColumnName}}" json:"{{$linkedColumn.HtmlField}}"` // {{$linkedColumn.ColumnComment}}
{{$linkedColumn.GoField}} {{if eq $linkedColumn.GoType "Time"}}*gtime.Time{{else}}{{$linkedColumn.GoType}}{{end}} `orm:"{{$linkedColumn.ColumnName}}" json:"{{$linkedColumn.HtmlField}}" dc:"{{$linkedColumn.ColumnComment}}"` // {{$linkedColumn.ColumnComment}}
{{end}}
{{if eq $linkedTable.TplCategory "tree"}}
{{$linkedTable.OptionsStruct.ColumnAttr.GoField}} {{$linkedTable.OptionsStruct.ColumnAttr.GoType}} `orm:"{{$linkedTable.OptionsStruct.ColumnAttr.ColumnName}}" json:"{{$linkedTable.OptionsStruct.ColumnAttr.HtmlField}}"`
{{end}}
}
////
{{end}}
////
@ -45,30 +88,95 @@ type {{.table.ClassName}}ListRes struct{
{{if eq .table.TplCategory "tree"}}
{{range $index, $column := .table.Columns}}
{{if or (eq $column.HtmlField $.table.TreeCode) (eq $column.HtmlField $.table.TreeParentCode) (eq $column.HtmlField $.table.TreeName) }}
{{$column.GoField}} {{if eq $column.GoType "Time"}}*gtime.Time{{else if eq $column.HtmlType "images" "file" "files"}}[]*comModel.UpFile{{else}}{{$column.GoType}}{{end}} `json:"{{$column.HtmlField}}"`
{{$column.GoField}} {{if eq $column.GoType "Time"}}*gtime.Time{{else if eq $column.HtmlType "images" "file" "files"}}[]*comModel.UpFile{{else}}{{$column.GoType}}{{end}} `json:"{{$column.HtmlField}}" dc:"{{$column.ColumnComment}}"`
{{end}}
{{if eq $column.HtmlField "createdBy"}}
CreatedUser *{{if $hasUser}}systemModel.{{end}}LinkUserRes `orm:"with:id=created_by" json:"createdUser"`
{{end}}
{{if eq $column.HtmlField "updatedBy"}}
UpdatedUser *{{if $hasUser}}systemModel.{{end}}LinkUserRes `orm:"with:id=updated_by" json:"updatedBy"`
{{end}}
{{end}}
{{range $index, $column := .table.Columns}}
{{if and $column.IsList (ne $column.HtmlField $.table.TreeCode) (ne $column.HtmlField $.table.TreeParentCode) (ne $column.HtmlField $.table.TreeName) }}
{{$column.GoField}} {{if eq $column.GoType "Time"}}*gtime.Time{{else if eq $column.HtmlType "images" "file" "files"}}[]*comModel.UpFile{{else}}{{$column.GoType}}{{end}} `json:"{{$column.HtmlField}}"`
{{$column.GoField}} {{if eq $column.GoType "Time"}}*gtime.Time{{else if eq $column.HtmlType "images" "file" "files"}}[]*comModel.UpFile{{else}}{{$column.GoType}}{{end}} `json:"{{$column.HtmlField}}" dc:"{{$column.ColumnComment}}"`
{{range $ti, $linkedTable := $.table.LinkedTables}}
{{if eq $column.LinkTableClass $linkedTable.ClassName}}
Linked{{$column.GoField}} *Linked{{$.table.ClassName}}{{$linkedTable.ClassName}} `orm:"with:{{$column.LinkLabelId}}={{$column.ColumnName}}" json:"linked{{$column.GoField}}"`
Linked{{$column.GoField}} {{if eq $column.HtmlType "selects" "checkbox" "treeSelects"}}[]{{end}}*Linked{{$.table.ClassName}}{{$linkedTable.ClassName}} `{{if not (eq $column.HtmlType "selects" "checkbox" "treeSelects")}}orm:"with:{{$column.LinkLabelId}}={{$column.ColumnName}}" {{end}}json:"linked{{$column.GoField}}" dc:"{{$column.ColumnComment}}"`
{{end}}
{{end}}
{{end}}
{{end}}
{{else}}
{{if not .table.IsPkListable }}
{{.table.PkColumn.GoField}} {{.table.PkColumn.GoType}} `json:"{{.table.PkColumn.HtmlField}}"`
{{.table.PkColumn.GoField}} {{.table.PkColumn.GoType}} `json:"{{.table.PkColumn.HtmlField}}" dc:"{{.table.PkColumn.ColumnComment}}"`
{{end}}
{{range $index, $column := .table.ListColumns}}
{{$column.GoField}} {{if eq $column.GoType "Time"}}*gtime.Time{{else if eq $column.HtmlType "images" "file" "files"}}[]*comModel.UpFile{{else}}{{$column.GoType}}{{end}} `json:"{{$column.HtmlField}}"`
{{if eq $column.HtmlField "createdBy"}}
CreatedUser *{{if $hasUser}}systemModel.{{end}}LinkUserRes `orm:"with:id=created_by" json:"createdUser"`
{{end}}
{{if eq $column.HtmlField "updatedBy"}}
UpdatedUser *{{if $hasUser}}systemModel.{{end}}LinkUserRes `orm:"with:id=updated_by" json:"updatedBy"`
{{end}}
{{$column.GoField}} {{if eq $column.GoType "Time"}}*gtime.Time{{else if eq $column.HtmlType "images" "file" "files"}}[]*comModel.UpFile{{else}}{{$column.GoType}}{{end}} `json:"{{$column.HtmlField}}" dc:"{{$column.ColumnComment}}"`
{{range $ti, $linkedTable := $.table.LinkedTables}}
{{if eq $column.LinkTableClass $linkedTable.ClassName}}
Linked{{$column.GoField}} *Linked{{$.table.ClassName}}{{$linkedTable.ClassName}} `orm:"with:{{$column.LinkLabelId}}={{$column.ColumnName}}" json:"linked{{$column.GoField}}"`
Linked{{$column.GoField}} {{if eq $column.HtmlType "selects" "checkbox" "treeSelects"}}[]{{end}}*Linked{{$.table.ClassName}}{{$linkedTable.ClassName}} `{{if not (eq $column.HtmlType "selects" "checkbox" "treeSelects")}}orm:"with:{{$column.LinkLabelId}}={{$column.ColumnName}}" {{end}}json:"linked{{$column.GoField}}" dc:"{{$column.ColumnComment}}"`
{{end}}
{{end}}
{{end}}
{{end}}
}
// {{.table.ClassName}}SearchReq 分页请求参数
type {{.table.ClassName}}SearchReq struct {
{{if ne $.table.ModuleName "common"}}
comModel.PageReq
{{end}}
{{range $index, $column := .table.QueryColumns}}
{{$column.GoField}} {{if eq $column.GoType "Time" "int" "int64" "uint" "uint64" "float" "float64" "bool"}}{{if eq $column.QueryType "BETWEEN"}}[]{{end}}string{{else}}{{if eq $column.QueryType "BETWEEN"}}[]{{end}}{{$column.GoType}}{{end}} `p:"{{$column.HtmlField}}"{{if ne $column.FieldValidation ""}} v:"{{$column.FieldValidation}}"{{end}} dc:"{{$column.ColumnComment}}"` //{{$column.ColumnComment}}
{{end}}
}
// {{.table.ClassName}}SearchRes 列表返回结果
type {{.table.ClassName}}SearchRes struct {
comModel.ListRes
List []*{{.table.ClassName}}ListRes `json:"list"`
}
{{if gt (len .table.LinkedTables) 0}}
//相关连表查询数据
type Linked{{$.table.ClassName}}DataSearchRes struct{
{{range $ti, $linkedTable := .table.LinkedTables}}
Linked{{$.table.ClassName}}{{$linkedTable.ClassName}} []*Linked{{$.table.ClassName}}{{$linkedTable.ClassName}} `json:"linked{{$.table.ClassName}}{{$linkedTable.ClassName}}"`
{{end}}
}
{{end}}
// {{.table.ClassName}}AddReq 添加操作请求参数
type {{.table.ClassName}}AddReq struct {
{{if .table.IsPkInsertable}}
{{.table.PkColumn.GoField}} {{.table.PkColumn.GoType}} `p:"{{.table.PkColumn.HtmlField}}" v:"required#主键ID不能为空" dc:"{{.table.PkColumn.ColumnComment}}"`
{{end}}
{{range $index, $column := .table.EditColumns}}
{{$column.GoField}} {{if eq $column.GoType "Time"}}*gtime.Time{{else if eq $column.HtmlType "images" "file" "files"}}[]*comModel.UpFile{{else if eq $column.HtmlType "checkbox" "selects" "treeSelects"}}garray.StrArray{{else}}{{$column.GoType}}{{end}} `p:"{{$column.HtmlField}}" {{if $column.IsRequired}}v:"required#{{$column.ColumnComment}}不能为空"{{end}} dc:"{{$column.ColumnComment}}"`
{{end}}
{{if .table.HasCreatedBy}}
CreatedBy uint64
{{end}}
}
// {{.table.ClassName}}EditReq 修改操作请求参数
type {{.table.ClassName}}EditReq struct {
{{.table.PkColumn.GoField}} {{.table.PkColumn.GoType}} `p:"{{.table.PkColumn.HtmlField}}" v:"required#主键ID不能为空" dc:"{{.table.PkColumn.ColumnComment}}"`
{{range $index, $column := .table.EditColumns}}
{{$column.GoField}} {{if eq $column.GoType "Time"}}*gtime.Time{{else if eq $column.HtmlType "images" "file" "files"}}[]*comModel.UpFile{{else if eq $column.HtmlType "checkbox" "selects" "treeSelects"}}garray.StrArray{{else}}{{$column.GoType}}{{end}} `p:"{{$column.HtmlField}}" {{if $column.IsRequired}}v:"required#{{$column.ColumnComment}}不能为空"{{end}} dc:"{{$column.ColumnComment}}"`
{{end}}
{{if .table.HasUpdatedBy}}
UpdatedBy uint64
{{end}}
}

View File

@ -22,7 +22,6 @@ package service
import (
"context"
"{{.goModName}}/api/v1/{{.table.ModuleName}}"
"{{.goModName}}/{{.table.PackageName}}/model"
{{if or .table.HasConversion (eq .table.TplCategory "tree")}}
{{end}}
@ -30,11 +29,14 @@ import (
////
type I{{.table.ClassName}} interface {
List(ctx context.Context, req *{{.table.ModuleName}}.{{.table.ClassName}}SearchReq) (res *{{.table.ModuleName}}.{{.table.ClassName}}SearchRes, err error)
List(ctx context.Context, req *model.{{.table.ClassName}}SearchReq) (res *model.{{.table.ClassName}}SearchRes, err error)
GetBy{{.table.PkColumn.GoField}}(ctx context.Context, {{.table.PkColumn.GoField}} {{$.table.PkColumn.GoType}}) (res *model.{{.table.ClassName}}InfoRes,err error)
Add(ctx context.Context, req *{{.table.ModuleName}}.{{.table.ClassName}}AddReq) (err error)
Edit(ctx context.Context, req *{{.table.ModuleName}}.{{.table.ClassName}}EditReq) (err error)
Add(ctx context.Context, req *model.{{.table.ClassName}}AddReq) (err error)
Edit(ctx context.Context, req *model.{{.table.ClassName}}EditReq) (err error)
Delete(ctx context.Context, {{$.table.PkColumn.GoField}} []{{$.table.PkColumn.GoType}}) (err error)
{{if gt (len .table.LinkedTables) 0}}
Linked{{$.table.ClassName}}DataSearch(ctx context.Context)(res *model.Linked{{$.table.ClassName}}DataSearchRes,err error)
{{end}}
}
////

View File

@ -78,31 +78,18 @@ export function change{{$.table.ClassName}}{{$column.GoField}}({{$.table.PkColum
})
}
{{end}}
{{if ne $column.LinkTableName ""}}
{{if not (inArray $hasMethods (concat "list" $column.LinkTableClass))}}
{{$hasMethods = append $hasMethods (concat "list" $column.LinkTableClass)}}
// 关联{{$column.LinkTableName}}表选项
export function list{{$column.LinkTableClass}}(query:object){
return request({
url: '/{{$plugin}}{{$.apiVersion}}/{{$column.LinkTableModuleName}}/{{$column.LinkTableBusinessName | CaseCamelLower}}/list',
method: 'get',
params: query
})
}
{{end}}
{{end}}
{{if eq $column.HtmlField "createdBy" "updatedBy"}}
{{$getUserList = true}}
{{end}}
{{end}}
{{if $getUserList}}
//获取用户信息列表
export function getUserList(uIds:number[]){
{{if gt (len .table.LinkedTables) 0}}
//相关连表查询数据
export function linkedDataSearch(){
return request({
url: '/{{.apiVersion|}}/system/user/getUsers',
method: 'get',
params: {ids:uIds}
url: '/{{$plugin}}{{.apiVersion}}/{{.table.ModuleName}}/{{$businessName}}/linkedData',
method: 'get'
})
}
{{end}}

View File

@ -7,7 +7,12 @@ export interface {{.table.ClassName}}TableColumns {
{{end}}
{{range $index, $column := .table.Columns}}
{{if and $column.IsList (ne $column.HtmlField $.table.TreeCode) (ne $column.HtmlField $.table.TreeParentCode) (ne $column.HtmlField $.table.TreeName) }}
{{$column.HtmlField}}:{{if eq $column.HtmlType "images" "file" "files"}}any[]{{else}}{{$column.TsType}}{{end}}; // {{$column.ColumnComment}}
{{$column.HtmlField}}:{{if eq $column.HtmlType "images" "file" "files" "checkbox" "selects" "treeSelects"}}any[]{{else}}{{$column.TsType}}{{end}}; // {{$column.ColumnComment}}
{{end}}
{{range $ti, $linkedTable := $.table.LinkedTables}}
{{if eq $column.LinkTableClass $linkedTable.ClassName}}
linked{{$column.GoField}}?:Linked{{$.table.ClassName}}{{$linkedTable.ClassName}}; // {{$column.ColumnComment}}
{{end}}
{{end}}
{{end}}
{{else}}
@ -18,7 +23,12 @@ export interface {{.table.ClassName}}TableColumns {
{{if eq $column.HtmlField "createdBy" "updatedBy"}}
{{$column.HtmlField}}:string; // {{$column.ColumnComment}}
{{else}}
{{$column.HtmlField}}:{{if eq $column.HtmlType "images" "file" "files"}}any[]{{else}}{{$column.TsType}}{{end}}; // {{$column.ColumnComment}}
{{$column.HtmlField}}:{{if eq $column.HtmlType "images" "file" "files" "checkbox" "selects" "treeSelects"}}any[]{{else}}{{$column.TsType}}{{end}}; // {{$column.ColumnComment}}
{{end}}
{{range $ti, $linkedTable := $.table.LinkedTables}}
{{if eq $column.LinkTableClass $linkedTable.ClassName}}
linked{{$column.GoField}}?:Linked{{$.table.ClassName}}{{$linkedTable.ClassName}}{{if eq $column.HtmlType "checkbox" "selects" "treeSelects"}}[]{{end}}; // {{$column.ColumnComment}}
{{end}}
{{end}}
{{end}}
{{end}}
@ -30,15 +40,15 @@ export interface {{.table.ClassName}}TableColumns {
////
export interface {{.table.ClassName}}InfoData {
{{range $index, $column := .table.Columns}}
{{if $column.IsPk}}{{$column.HtmlField}}:{{if eq $column.HtmlType "images" "file" "files" "checkbox"}}any[]{{else if eq $column.HtmlType "radio"}}boolean{{else}}{{$column.TsType}}|undefined{{end}}; // {{$column.ColumnComment}} {{else}}{{$column.HtmlField}}:{{if eq $column.HtmlType "images" "file" "files" "checkbox"}}any[]{{else if eq $column.HtmlType "radio"}}boolean{{else}}{{$column.TsType}}|undefined{{end}}; // {{$column.ColumnComment}} {{end}}
{{if $column.IsPk}}{{$column.HtmlField}}:{{if eq $column.HtmlType "images" "file" "files" "checkbox" "selects" "treeSelects"}}any[]{{else if eq $column.HtmlType "radio"}}boolean{{else}}{{$column.TsType}}|undefined{{end}}; // {{$column.ColumnComment}} {{else}}{{$column.HtmlField}}:{{if eq $column.HtmlType "images" "file" "files" "checkbox" "selects" "treeSelects"}}any[]{{else if eq $column.HtmlType "radio"}}boolean{{else}}{{$column.TsType}}|undefined{{end}}; // {{$column.ColumnComment}} {{end}}
{{range $ti, $linkedTable := $.table.LinkedTables}}
{{if eq $column.LinkTableClass $linkedTable.ClassName}}
linked{{$column.GoField}}:Linked{{$.table.ClassName}}{{$linkedTable.ClassName}}; // {{$column.ColumnComment}}
linked{{$column.GoField}}?:Linked{{$.table.ClassName}}{{$linkedTable.ClassName}}{{if eq $column.HtmlType "checkbox" "selects" "treeSelects"}}[]{{end}}; // {{$column.ColumnComment}}
{{end}}
{{end}}
{{end}}
{{range $ti, $linkedTable := .table.LinkedTables}}
linked{{$.table.ClassName}}{{$linkedTable.ClassName}}:Linked{{$.table.ClassName}}{{$linkedTable.ClassName}};
linked{{$.table.ClassName}}{{$linkedTable.ClassName}}?:Linked{{$.table.ClassName}}{{$linkedTable.ClassName}};
{{end}}
}

View File

@ -21,16 +21,28 @@
{{ $hasRowEnd = false }}
<el-row>
{{end}}
{{if or (eq $column.HtmlType "input") (eq $column.HtmlType "textarea") (eq $column.HtmlType "radio") (eq $column.HtmlType "select")}}
{{if eq $column.HtmlType "input" "textarea" "radio" "checkbox" "select" "selects" "treeSelect" "treeSelects"}}
<el-col :span="{{$column.ColSpan}}">
{{if ne $column.LinkTableName ""}}
{{range $ti, $linkedTable := $.table.LinkedTables}}
{{if eq $column.LinkTableClass $linkedTable.ClassName}}
{{if eq $column.HtmlType "selects" "checkbox" "treeSelects"}}
<el-form-item label="{{$column.ColumnComment}}">{{"{{"}} formData.linked{{$column.GoField}}?formData.linked{{$column.GoField}}.map((res:any)=>{return res.{{CaseCamelLower $column.LinkLabelName}}}).join(''):'' {{"}}"}}</el-form-item>
{{else}}
<el-form-item label="{{$column.ColumnComment}}">{{"{{"}} formData.linked{{$column.GoField}}?formData.linked{{$column.GoField}}.{{CaseCamelLower $column.LinkLabelName}}:'' {{"}}"}}</el-form-item>
{{end}}
{{end}}
{{end}}
{{else if ne $column.DictType ""}}
{{if eq $column.HtmlType "checkbox" }}
<el-form-item label="{{$column.ColumnComment}}">
<el-tag class="ml-2" type="success" v-for="(item,key) in formData.{{$column.HtmlField}}" :key="'{{$column.HtmlField}}-'+key">
{{"{{"}} proxy.getOptionValue(item, {{$column.HtmlField}}Options,'value','label') {{"}}"}}
</el-tag>
</el-form-item>
{{else}}
<el-form-item label="{{$column.ColumnComment}}">{{"{{"}} proxy.getOptionValue(formData.{{$column.HtmlField}}, {{$column.HtmlField}}Options,'value','label') {{"}}"}}</el-form-item>
{{end}}
{{else}}
<el-form-item label="{{$column.ColumnComment}}">{{"{{"}} formData.{{$column.HtmlField}} {{"}}"}}</el-form-item>
{{end}}
@ -43,14 +55,6 @@
<el-col :span="{{$column.ColSpan}}">
<el-form-item label="{{$column.ColumnComment}}">{{"{{"}} proxy.parseTime(formData.{{$column.HtmlField}}, '{y}-{m}-{d} {h}:{i}:{s}') {{"}}"}}</el-form-item>
</el-col>
{{else if eq $column.HtmlType "checkbox" }}
<el-col :span="{{$column.ColSpan}}">
<el-form-item label="{{$column.ColumnComment}}">
<el-tag class="ml-2" type="success" v-for="(item,key) in formData.{{$column.HtmlField}}" :key="'{{$column.HtmlField}}-'+key">
{{"{{"}} proxy.getOptionValue(item, {{$column.HtmlField}}Options,'value','label') {{"}}"}}
</el-tag>
</el-form-item>
</el-col>
{{else if eq $column.HtmlType "richtext"}}
<el-col :span="{{$column.ColSpan}}">
<el-form-item label="{{$column.ColumnComment}}">
@ -148,12 +152,6 @@
{{if and $column.IsStatus $column.IsList}}
change{{$.table.ClassName}}{{$column.GoField}},
{{end}}
{{if ne $column.LinkTableName ""}}
{{if not (inArray $hasImports (concat "list" $column.LinkTableClass))}}
{{$hasImports = append $hasImports (concat "list" $column.LinkTableClass)}}
list{{$column.LinkTableClass}},
{{end}}
{{end}}
{{end}}
{{if $getUserList}}
getUserList,
@ -176,10 +174,7 @@
{{.table.ClassName}}TableColumns,
{{.table.ClassName}}InfoData,
{{.table.ClassName}}TableDataState,
{{.table.ClassName}}EditState,
{{range $ti, $linkedTable := .table.LinkedTables}}
Linked{{$.table.ClassName}}{{$linkedTable.ClassName}},
{{end}}
{{.table.ClassName}}EditState
} from "/@/views/{{$plugin}}{{.table.ModuleName}}/{{$businessName}}/list/component/model"
export default defineComponent({
name:"{{$plugin}}{{if ne $plugin ""}}{{.apiVersion|replace "/" "_"|CaseCamel}}{{else}}{{.apiVersion|replace "/" "_"|CaseCamelLower}}{{end}}{{.table.ModuleName|CaseCamel}}{{.table.ClassName}}Detail",
@ -242,17 +237,21 @@
{{range $index, $column := .table.Columns}}
{{if eq $column.HtmlType "radio"}}
{{$column.HtmlField}}: false ,
{{else if eq $column.HtmlType "images" "file" "files" "checkbox"}}
{{else if eq $column.HtmlType "images" "file" "files" "checkbox" "selects" "treeSelects"}}
{{$column.HtmlField}}: [] ,
{{else}}
{{$column.HtmlField}}: undefined,
{{range $ti, $linkedTable := $.table.LinkedTables}}
{{if eq $column.LinkTableClass $linkedTable.ClassName}}
{{if eq $column.HtmlType "checkbox" "selects" "treeSelects"}}
linked{{$column.GoField}}:[],
{{else}}
linked{{$column.GoField}}:{{ "{" }}{{CaseCamelLower $column.LinkLabelId}}:undefined,{{CaseCamelLower $column.LinkLabelName}}:undefined {{ "}" }},
{{end}}
{{end}}
{{end}}
{{end}}
{{end}}
{{range $ti, $linkedTable := .table.LinkedTables}}
linked{{$.table.ClassName}}{{$linkedTable.ClassName}}: {
{{range $ci, $linkedColumn := $linkedTable.RefColumns.Values}}
@ -278,8 +277,6 @@
if(row) {
get{{.table.ClassName}}(row.{{.table.PkColumn.HtmlField}}!).then((res:any)=>{
const data = res.data;
{{$hasCreatedBy := false}}
{{$hasUpdatedBy := false}}
{{range $index, $column := .table.DetailColumns}}
{{if and (ne $treeParentCode "") (eq $column.HtmlField $treeParentCode)}}
data.{{$treeParentCode}} = getTreeVal(props.{{$businessName}}Options,data.{{$treeParentCode}})
@ -292,43 +289,14 @@
data.{{$column.HtmlField}} =data.{{$column.HtmlField}}?JSON.parse(data.{{$column.HtmlField}}) : []
{{end}}
{{if eq $column.HtmlField "createdBy"}}
{{$hasCreatedBy = true}}
data.createdBy = data?.createdUser.userNickname
{{end}}
{{if eq $column.HtmlField "updatedBy"}}
{{$hasUpdatedBy = true}}
data.updatedBy = data?.updatedUser.userNickname
{{end}}
{{end}}
{{if or $hasCreatedBy $hasUpdatedBy}}
let listUid = [];
{{end}}
{{if and $hasCreatedBy $hasUpdatedBy}}
listUid.push(data.createdBy,data.updatedBy)
{{else if $hasCreatedBy}}
listUid.push(data.createdBy)
{{else if $hasUpdatedBy}}
listUid.push(data.updatedBy)
{{end}}
{{if or $hasCreatedBy $hasUpdatedBy}}
getUserList(listUid).then((response:any) =>{
let users = response.data.list||[]
users.forEach((user:any)=>{
{{if $hasCreatedBy}}
if(data.createdBy==user.id){
data.createdBy = user.userNickname
}
{{end}}
{{if $hasUpdatedBy}}
if(data.updatedBy==user.id){
data.updatedBy = user.userNickname
}
{{end}}
})
state.formData = data;
})
{{else}}
state.formData = data;
{{end}}
})
}
state.isShowDialog = true;
};
@ -345,17 +313,21 @@
{{range $index, $column := .table.Columns}}
{{if eq $column.HtmlType "radio"}}
{{$column.HtmlField}}: false ,
{{else if eq $column.HtmlType "images" "file" "files" "checkbox"}}
{{else if eq $column.HtmlType "images" "file" "files" "checkbox" "selects" "treeSelects"}}
{{$column.HtmlField}}: [] ,
{{else}}
{{$column.HtmlField}}: undefined,
{{end}}
{{range $ti, $linkedTable := $.table.LinkedTables}}
{{if eq $column.LinkTableClass $linkedTable.ClassName}}
{{if eq $column.HtmlType "checkbox" "selects" "treeSelects"}}
linked{{$column.GoField}}:[],
{{else}}
linked{{$column.GoField}}:{{ "{" }}{{CaseCamelLower $column.LinkLabelId}}:undefined,{{CaseCamelLower $column.LinkLabelName}}:undefined {{ "}" }},
{{end}}
{{end}}
{{end}}
{{end}}
{{range $ti, $linkedTable := .table.LinkedTables}}
linked{{$.table.ClassName}}{{$linkedTable.ClassName}}: {
{{range $ci, $linkedColumn := $linkedTable.RefColumns.Values}}

View File

@ -32,10 +32,10 @@
<el-form-item label="{{$column.ColumnComment}}" prop="{{$column.HtmlField}}">
<el-input v-model="formData.{{$column.HtmlField}}" placeholder="请输入{{$column.ColumnComment}}" {{if $column.IsPk}}v-bind:disabled="this.currentOp === 'edit'" {{end}}/>
</el-form-item>
{{else if eq $column.HtmlType "select" }}
{{else if eq $column.HtmlType "select" "selects"}}
{{if ne $column.LinkTableName ""}}
<el-form-item label="{{$column.ColumnComment}}" prop="{{$column.HtmlField}}">
<el-select v-model="formData.{{$column.HtmlField}}" placeholder="请选择{{$column.ColumnComment}}" {{if $column.IsPk}}v-bind:disabled="this.currentOp === 'edit'" {{end}} {{if $column.IsCascadeParent}}@change="form{{$column.ColumnName | CaseCamel}}Changed"{{end}} {{if not $column.IsCascade}}@click.native="get{{$column.LinkTableClass}}{{if $column.IsCascade}}Form{{end}}Items{{$column.GoField}}"{{end}}>
<el-select v-model="formData.{{$column.HtmlField}}" placeholder="请选择{{$column.ColumnComment}}" {{if $column.IsPk}}v-bind:disabled="this.currentOp === 'edit'" {{end}} {{if $column.IsCascadeParent}}@change="form{{$column.ColumnName | CaseCamel}}Changed"{{end}} {{if eq $column.HtmlType "selects"}}multiple{{end}}>
<el-option
{{if $column.IsCascade}}
v-for="item in {{$column.HtmlField}}FormOptions"
@ -70,8 +70,39 @@
</el-select>
</el-form-item>
{{end}}
{{else if eq $column.HtmlType "treeSelect" "treeSelects"}}
{{if ne $column.LinkTableName ""}}
<el-form-item label="{{$column.ColumnComment}}" prop="{{$column.HtmlField}}">
{{$tLabel:=""}}
{{$tValue:=""}}
{{range $li,$lc := $.table.LinkedTables}}
{{if eq $lc.TableName $column.LinkTableName}}
{{$tLabel = $lc.OptionsStruct.TreeName}}
{{$tValue = $lc.OptionsStruct.TreeCode}}
{{end}}
{{end}}
<el-cascader
v-model="formData.{{$column.HtmlField}}"
placeholder="请选择"
:options="{{$column.HtmlField}}Options"
filterable
clearable
:props="{ label: '{{$tLabel}}',value: '{{$tValue}}',checkStrictly: true,emitPath: false {{if eq $column.HtmlType "treeSelects"}},multiple: true{{end}} }"
/>
</el-form-item>
{{end}}
{{else if eq $column.HtmlType "radio" }} {{/* else if eq $column.HtmlType "select" */}}
{{if ne $column.DictType ""}}
{{if ne $column.LinkTableName ""}}
<el-form-item label="{{$column.ColumnComment}}" prop="{{$column.HtmlField}}">
<el-radio-group v-model="formData.{{$column.HtmlField}}">
<el-radio
v-for="dict in {{$column.HtmlField}}Options"
:key="dict.key"
:label="dict.key"
>{{ VueTag "{{" }}dict.value {{VueTag "}}"}}</el-radio>
</el-radio-group>
</el-form-item>
{{else if ne $column.DictType ""}}
<el-form-item label="{{$column.ColumnComment}}" prop="{{$column.HtmlField}}">
<el-radio-group v-model="formData.{{$column.HtmlField}}">
<el-radio
@ -109,6 +140,17 @@
<el-input v-model="formData.{{$column.HtmlField}}" type="textarea" placeholder="请输入{{$column.ColumnComment}}" />
</el-form-item>
{{else if eq $column.HtmlType "checkbox" }}
{{if ne $column.LinkTableName ""}}
<el-form-item label="{{$column.ColumnComment}}" prop="{{$column.HtmlField}}">
<el-checkbox-group v-model="formData.{{$column.HtmlField}}">
<el-checkbox
v-for="dict in {{$column.HtmlField}}Options"
:key="dict.key"
:label="dict.key"
>{{ VueTag "{{" }}dict.value {{VueTag "}}"}}</el-checkbox>
</el-checkbox-group>
</el-form-item>
{{else if ne $column.DictType ""}}
<el-form-item label="{{$column.ColumnComment}}" prop="{{$column.HtmlField}}">
<el-checkbox-group v-model="formData.{{$column.HtmlField}}">
<el-checkbox
@ -118,6 +160,7 @@
>{{ VueTag "{{" }}dict.label {{VueTag "}}"}}</el-checkbox>
</el-checkbox-group>
</el-form-item>
{{end}}
{{else if eq $column.HtmlType "richtext"}}
<el-form-item label="{{$column.ColumnComment}}">
<gf-ueditor editorId="ue{{$.table.ClassName}}{{$column.GoField}}" v-model="formData.{{$column.HtmlField}}" @setEditContent="set{{$column.GoField}}EditContent"></gf-ueditor>
@ -231,10 +274,7 @@ import {
{{.table.ClassName}}TableColumns,
{{.table.ClassName}}InfoData,
{{.table.ClassName}}TableDataState,
{{.table.ClassName}}EditState,
{{range $ti, $linkedTable := .table.LinkedTables}}
Linked{{$.table.ClassName}}{{$linkedTable.ClassName}},
{{end}}
{{.table.ClassName}}EditState
} from "/@/views/{{$plugin}}{{.table.ModuleName}}/{{$businessName}}/list/component/model"
export default defineComponent({
name:"{{$plugin}}{{if ne $plugin ""}}{{.apiVersion|replace "/" "_"|CaseCamel}}{{else}}{{.apiVersion|replace "/" "_"|CaseCamelLower}}{{end}}{{.table.ModuleName|CaseCamel}}{{.table.ClassName}}Edit",
@ -297,7 +337,7 @@ export default defineComponent({
{{range $index, $column := .table.Columns}}
{{if eq $column.HtmlType "radio"}}
{{$column.HtmlField}}: false ,
{{else if eq $column.HtmlType "images" "file" "files" "checkbox"}}
{{else if eq $column.HtmlType "images" "file" "files" "checkbox" "selects" "treeSelects"}}
{{$column.HtmlField}}: [] ,
{{else}}
{{$column.HtmlField}}: undefined,
@ -326,16 +366,23 @@ export default defineComponent({
const openDialog = (row?: {{.table.ClassName}}InfoData) => {
resetForm();
if(row) {
{{range $index,$column := .table.EditColumns}}
{{if ne $column.LinkTableName ""}}
get{{$column.LinkTableClass}}Items{{$column.GoField}}()
{{end}}
{{end}}
get{{.table.ClassName}}(row.{{.table.PkColumn.HtmlField}}!).then((res:any)=>{
const data = res.data;
{{range $index, $column := .table.EditColumns}}
{{if eq $column.HtmlType "checkbox"}}
{{if eq $column.HtmlType "checkbox" "selects"}}
data.{{$column.HtmlField}} = data.{{$column.HtmlField}}.split(",")
{{else if eq $column.HtmlType "treeSelects"}}
{{$isNumber := false}}
{{range $li,$lc := $.table.LinkedTables}}
{{if and (eq $lc.TableName $column.LinkTableName) (ne $lc.OptionsStruct.ColumnAttr.GoType "string")}}
{{$isNumber = true}}
{{end}}
{{end}}
{{if $isNumber}}
data.{{$column.HtmlField}} = data.{{$column.HtmlField}}.split(",").map((item:any)=>{return parseInt(item)})
{{else}}
data.{{$column.HtmlField}} = data.{{$column.HtmlField}}.split(",")
{{end}}
{{else if and (eq $column.HtmlType "radio" "select") (ne $column.DictType "")}}
data.{{$column.HtmlField}} = ''+data.{{$column.HtmlField}}
{{else if eq $column.HtmlType "imagefile"}}
@ -392,7 +439,7 @@ export default defineComponent({
{{range $index, $column := .table.Columns}}
{{if eq $column.HtmlType "radio"}}
{{$column.HtmlField}}: false ,
{{else if eq $column.HtmlType "images" "file" "files" "checkbox"}}
{{else if eq $column.HtmlType "images" "file" "files" "checkbox" "selects" "treeSelects"}}
{{$column.HtmlField}}: [] ,
{{else}}
{{$column.HtmlField}}: undefined,
@ -409,12 +456,7 @@ export default defineComponent({
};
{{$setUpData:=true}}
{{range $index, $column := .table.Columns}}
{{if ne $column.LinkTableName ""}}
//关联{{$column.LinkTableName}}表选项
const get{{$column.LinkTableClass}}Items{{$column.GoField}} = () => {
emit("get{{$column.LinkTableClass}}Items{{$column.GoField}}")
}
{{else if eq $column.HtmlType "richtext"}}
{{if eq $column.HtmlType "richtext"}}
//富文本编辑器{{$column.ColumnComment}}
const set{{$column.GoField}}EditContent = (data:string) => {
state.formData.{{$column.HtmlField}} = data
@ -460,14 +502,7 @@ export default defineComponent({
menuRef,
formRef,
{{range $index, $column := .table.Columns}}
{{if ne $column.LinkTableName ""}}
{{if $column.IsCascade}}
{{/*级联处理*/}}
{{else}}
{{/*关联表处理*/}}
get{{$column.LinkTableClass}}Items{{$column.GoField}},
{{end}}
{{else if eq $column.HtmlType "richtext"}}
{{if eq $column.HtmlType "richtext"}}
//富文本编辑器{{$column.ColumnComment}}
set{{$column.GoField}}EditContent,
{{else if eq $column.HtmlType "imagefile"}}

View File

@ -48,7 +48,7 @@
</el-form-item>
</el-col>
{{$colIndex = ($colIndex | plus 1)}}
{{else if and (eq $column.HtmlType "select" "radio" "checkbox") (ne $column.DictType "") }}
{{else if and (eq $column.HtmlType "select" "radio" "checkbox" "selects") (ne $column.DictType "") }}
<el-col :span="8" {{if lt $colIndex 2}}class="colBlock"{{else}}:class="showAll ? 'colBlock' : 'colNone'"{{end}}>
<el-form-item label="{{$column.ColumnComment}}" prop="{{$column.HtmlField}}">
<el-select v-model="tableData.param.{{$column.HtmlField}}" placeholder="请选择{{$column.ColumnComment}}" clearable >
@ -62,6 +62,28 @@
</el-form-item>
</el-col>
{{$colIndex = ($colIndex | plus 1)}}
{{else if and (eq $column.HtmlType "treeSelect" "treeSelects") (ne $column.LinkTableName "")}}
<el-col :span="8" {{if lt $colIndex 2}}class="colBlock"{{else}}:class="showAll ? 'colBlock' : 'colNone'"{{end}}>
<el-form-item label="{{$column.ColumnComment}}" prop="{{$column.HtmlField}}">
{{$tLabel:=""}}
{{$tValue:=""}}
{{range $li,$lc := $.table.LinkedTables}}
{{if eq $lc.TableName $column.LinkTableName}}
{{$tLabel = $lc.OptionsStruct.TreeName}}
{{$tValue = $lc.OptionsStruct.TreeCode}}
{{end}}
{{end}}
<el-cascader
v-model="tableData.param.{{$column.HtmlField}}"
placeholder="请选择"
:options="{{$column.HtmlField}}Options"
filterable
clearable
:props="{ label: '{{$tLabel}}',value: '{{$tValue}}',checkStrictly: true,emitPath: false }"
/>
</el-form-item>
</el-col>
{{$colIndex = ($colIndex | plus 1)}}
{{else if eq $column.HtmlType "date"}}
<el-col :span="8" {{if lt $colIndex 2}}class="colBlock"{{else}}:class="showAll ? 'colBlock' : 'colNone'"{{end}}>
<el-form-item label="{{$column.ColumnComment}}" prop="{{$column.HtmlField}}">
@ -103,10 +125,10 @@
</el-form-item>
</el-col>
{{$colIndex = ($colIndex | plus 1)}}
{{else if and (eq $column.HtmlType "select" "radio" "checkbox") (ne $column.LinkTableName "")}}
{{else if and (eq $column.HtmlType "select" "radio" "checkbox" "selects") (ne $column.LinkTableName "")}}
<el-col :span="8" {{if lt $colIndex 2}}class="colBlock"{{else}}:class="showAll ? 'colBlock' : 'colNone'"{{end}}>
<el-form-item label="{{$column.ColumnComment}}" prop="{{$column.HtmlField}}">
<el-select v-model="tableData.param.{{$column.HtmlField}}" placeholder="请选择{{$column.ColumnComment}}" clearable {{if $column.IsCascadeParent}}@change="query{{$column.ColumnName | CaseCamel}}Changed"{{end}} {{if not $column.IsCascade}}@click.native="get{{$column.LinkTableClass}}{{if $column.IsCascade}}Query{{end}}Items{{$column.GoField}}"{{end}}>
<el-select v-model="tableData.param.{{$column.HtmlField}}" placeholder="请选择{{$column.ColumnComment}}" clearable {{if $column.IsCascadeParent}}@change="query{{$column.ColumnName | CaseCamel}}Changed"{{end}}>
<el-option
{{if $column.IsCascade}}
v-for="item in {{$column.HtmlField}}QueryOptions"
@ -121,6 +143,28 @@
</el-form-item>
</el-col>
{{$colIndex = ($colIndex | plus 1)}}
{{else if and (eq $column.HtmlType "treeSelect" "treeSelects") (ne $column.LinkTableName "")}}
<el-col :span="8" {{if lt $colIndex 2}}class="colBlock"{{else}}:class="showAll ? 'colBlock' : 'colNone'"{{end}}>
<el-form-item label="{{$column.ColumnComment}}" prop="{{$column.HtmlField}}">
{{$tLabel:=""}}
{{$tValue:=""}}
{{range $li,$lc := $.table.LinkedTables}}
{{if eq $lc.TableName $column.LinkTableName}}
{{$tLabel = $lc.OptionsStruct.TreeName}}
{{$tValue = $lc.OptionsStruct.TreeCode}}
{{end}}
{{end}}
<el-cascader
v-model="tableData.param.{{$column.HtmlField}}"
placeholder="请选择"
:options="{{$column.HtmlField}}Options"
filterable
clearable
:props="{ label: '{{$tLabel}}',value: '{{$tValue}}',checkStrictly: true,emitPath: false }"
/>
</el-form-item>
</el-col>
{{$colIndex = ($colIndex | plus 1)}}
{{else}}
<el-col :span="8" {{if lt $colIndex 2}}class="colBlock"{{else}}:class="showAll ? 'colBlock' : 'colNone'"{{end}}>
<el-form-item label="{{$column.ColumnComment}}" prop="{{$column.HtmlField}}">
@ -231,6 +275,22 @@
fit="contain"></el-image>
</template>
</el-table-column>
{{else if eq $column.HtmlType "selects" "checkbox" "treeSelects"}}
{{if ne $column.LinkTableName ""}}
<el-table-column align="center" label="{{$column.ColumnComment}}" prop="linked{{$column.GoField}}"
{{if gt $column.MinWidth 0}}min-width="{{$column.MinWidth}}px"{{end}}
{{if $column.IsOverflowTooltip}}:show-overflow-tooltip="true"{{end}}
{{if $column.IsFixed}}fixed="left"{{end}}>
<template #default="scope">
<el-tag v-if="scope.row.linked{{$column.GoField}}" class="ml-2" type="success" v-for="(item,ik) in scope.row.linked{{$column.GoField}}" :key="ik">{{VueTag "{{"}}item.{{$column.LinkLabelName|CaseCamelLower}}{{VueTag "}}"}}</el-tag>
</template>
</el-table-column>
{{else if ne $column.DictType ""}}
<el-table-column label="{{$column.ColumnComment}}" align="center" prop="{{$column.HtmlField}}" :formatter="{{$column.HtmlField}}Format"
{{if gt $column.MinWidth 0}}min-width="{{$column.MinWidth}}px"{{end}}
{{if $column.IsOverflowTooltip}}:show-overflow-tooltip="true"{{end}}
{{if $column.IsFixed}}fixed="left"{{end}} />
{{end}}
{{else if $column.IsStatus}}
<el-table-column label="{{$column.ColumnComment}}" align="center"
{{if gt $column.MinWidth 0}}min-width="{{$column.MinWidth}}px"{{end}}
@ -269,7 +329,7 @@
type="primary"
link
@click="handleView(scope.row)"
v-auth="'{{.apiVersion}}/{{.table.ModuleName}}/{{$businessName}}/view'"
v-auth="'{{.apiVersion}}/{{.table.ModuleName}}/{{$businessName}}/get'"
><el-icon><ele-View /></el-icon>详情</el-button>
{{end}}
<el-button
@ -296,23 +356,6 @@
@pagination="{{$businessName}}List"
/>
</el-card>
<{{$plugin}}{{if ne $plugin ""}}{{.apiVersion|replace "/" "_"|CaseCamel}}{{else}}{{.apiVersion|replace "/" "_"|CaseCamelLower}}{{end}}{{.table.ModuleName|CaseCamel}}{{.table.ClassName}}Add
ref="addRef"
{{range $index, $column := .table.Columns}}
{{if ne $column.DictType ""}}
:{{$column.HtmlField}}Options="{{$column.DictType}}"
{{else if ne $column.LinkTableName ""}}
{{if $column.IsCascade}}
{{/*级联处理*/}}
{{else}}
{{/*关联表处理*/}}
:{{$column.HtmlField}}Options="{{$column.HtmlField}}Options"
@get{{$column.LinkTableClass}}Items{{$column.GoField}}="get{{$column.LinkTableClass}}Items{{$column.GoField}}"
{{end}}
{{end}}
{{end}}
@{{$businessName}}List="{{$businessName}}List"
></{{$plugin}}{{if ne $plugin ""}}{{.apiVersion|replace "/" "_"|CaseCamel}}{{else}}{{.apiVersion|replace "/" "_"|CaseCamelLower}}{{end}}{{.table.ModuleName|CaseCamel}}{{.table.ClassName}}Add>
<{{$plugin}}{{if ne $plugin ""}}{{.apiVersion|replace "/" "_"|CaseCamel}}{{else}}{{.apiVersion|replace "/" "_"|CaseCamelLower}}{{end}}{{.table.ModuleName|CaseCamel}}{{.table.ClassName}}Edit
ref="editRef"
{{range $index, $column := .table.Columns}}
@ -324,7 +367,6 @@
{{else}}
{{/*关联表处理*/}}
:{{$column.HtmlField}}Options="{{$column.HtmlField}}Options"
@get{{$column.LinkTableClass}}Items{{$column.GoField}}="get{{$column.LinkTableClass}}Items{{$column.GoField}}"
{{end}}
{{end}}
{{end}}
@ -341,7 +383,6 @@
{{else}}
{{/*关联表处理*/}}
:{{$column.HtmlField}}Options="{{$column.HtmlField}}Options"
@get{{$column.LinkTableClass}}Items{{$column.GoField}}="get{{$column.LinkTableClass}}Items{{$column.GoField}}"
{{end}}
{{end}}
{{end}}
@ -387,15 +428,9 @@ import {
{{if and $column.IsStatus $column.IsList}}
change{{$.table.ClassName}}{{$column.GoField}},
{{end}}
{{if ne $column.LinkTableName ""}}
{{if not (inArray $hasImports (concat "list" $column.LinkTableClass))}}
{{$hasImports = append $hasImports (concat "list" $column.LinkTableClass)}}
list{{$column.LinkTableClass}},
{{end}}
{{end}}
{{end}}
{{if $getUserList}}
getUserList,
{{if gt (len .table.LinkedTables) 0}}
linkedDataSearch
{{end}}
} from "/@/api/{{$plugin}}{{.table.ModuleName}}/{{$businessName}}";
import {
@ -406,13 +441,11 @@ import {
Linked{{$.table.ClassName}}{{$linkedTable.ClassName}},
{{end}}
} from "/@/views/{{$plugin}}{{.table.ModuleName}}/{{$businessName}}/list/component/model"
import {{$plugin}}{{if ne $plugin ""}}{{.apiVersion|replace "/" "_"|CaseCamel}}{{else}}{{.apiVersion|replace "/" "_"|CaseCamelLower}}{{end}}{{.table.ModuleName|CaseCamel}}{{.table.ClassName}}Add from "/@/views/{{$plugin}}{{.table.ModuleName}}/{{$businessName}}/list/component/add.vue"
import {{$plugin}}{{if ne $plugin ""}}{{.apiVersion|replace "/" "_"|CaseCamel}}{{else}}{{.apiVersion|replace "/" "_"|CaseCamelLower}}{{end}}{{.table.ModuleName|CaseCamel}}{{.table.ClassName}}Edit from "/@/views/{{$plugin}}{{.table.ModuleName}}/{{$businessName}}/list/component/edit.vue"
import {{$plugin}}{{if ne $plugin ""}}{{.apiVersion|replace "/" "_"|CaseCamel}}{{else}}{{.apiVersion|replace "/" "_"|CaseCamelLower}}{{end}}{{.table.ModuleName|CaseCamel}}{{.table.ClassName}}Detail from "/@/views/{{$plugin}}{{.table.ModuleName}}/{{$businessName}}/list/component/detail.vue"
export default defineComponent({
name: "{{$plugin}}{{if ne $plugin ""}}{{.apiVersion|replace "/" "_"|CaseCamel}}{{else}}{{.apiVersion|replace "/" "_"|CaseCamelLower}}{{end}}{{.table.ModuleName|CaseCamel}}{{.table.ClassName}}List",
components:{
{{$plugin}}{{if ne $plugin ""}}{{.apiVersion|replace "/" "_"|CaseCamel}}{{else}}{{.apiVersion|replace "/" "_"|CaseCamelLower}}{{end}}{{.table.ModuleName|CaseCamel}}{{.table.ClassName}}Add,
{{$plugin}}{{if ne $plugin ""}}{{.apiVersion|replace "/" "_"|CaseCamel}}{{else}}{{.apiVersion|replace "/" "_"|CaseCamelLower}}{{end}}{{.table.ModuleName|CaseCamel}}{{.table.ClassName}}Edit,
{{$plugin}}{{if ne $plugin ""}}{{.apiVersion|replace "/" "_"|CaseCamel}}{{else}}{{.apiVersion|replace "/" "_"|CaseCamelLower}}{{end}}{{.table.ModuleName|CaseCamel}}{{.table.ClassName}}Detail
},
@ -420,7 +453,6 @@ export default defineComponent({
const {proxy} = <any>getCurrentInstance()
const loading = ref(false)
const queryRef = ref()
const addRef = ref();
const editRef = ref();
const detailRef = ref();
// 是否显示所有搜索选项
@ -491,8 +523,31 @@ export default defineComponent({
});
// 初始化表格数据
const initTableData = () => {
{{if gt (len .table.LinkedTables) 0}}
linkedData()
{{end}}
{{$businessName}}List()
};
{{if gt (len .table.LinkedTables) 0}}
const linkedData = ()=>{
linkedDataSearch().then((res:any)=>{
{{range $index, $column := .table.Columns}}
{{if ne $column.LinkTableName ""}}
//关联{{$column.LinkTableName}}表选项
{{range $li,$lc := $.table.LinkedTables}}
{{if eq $lc.TableName $column.LinkTableName}}
{{if eq $lc.TplCategory "tree"}}
{{$column.HtmlField}}Options.value = proxy.handleTree(res.data.linked{{$.table.ClassName}}{{$column.LinkTableClass}}, '{{$lc.OptionsStruct.TreeCode}}', '{{$lc.OptionsStruct.TreeParentCode}}')
{{else}}
{{$column.HtmlField}}Options.value = proxy.setItems(res, '{{$column.LinkLabelId | CaseCamelLower}}', '{{$column.LinkLabelName | CaseCamelLower}}','linked{{$.table.ClassName}}{{$column.LinkTableClass}}')
{{end}}
{{end}}
{{end}}
{{end}}
{{end}}
})
}
{{end}}
/** 重置按钮操作 */
const resetQuery = (formEl: FormInstance | undefined) => {
if (!formEl) return
@ -504,58 +559,19 @@ export default defineComponent({
loading.value = true
list{{.table.ClassName}}(state.tableData.param).then((res:any)=>{
let list = res.data.list??[];
{{$hasCreatedBy := false}}
{{$hasUpdatedBy := false}}
{{range $index,$column := .table.ListColumns}}
{{if eq $column.HtmlField "createdBy" "updatedBy"}}
list.map((item:any)=>{
{{if eq $column.HtmlField "createdBy"}}
{{$hasCreatedBy = true}}
item.createdBy = item?.createdUser.userNickname
{{end}}
{{if eq $column.HtmlField "updatedBy"}}
{{$hasUpdatedBy = true}}
{{end}}
{{end}}
{{if or $hasCreatedBy $hasUpdatedBy}}
let listUid = [];
{{end}}
{{if and $hasCreatedBy $hasUpdatedBy}}
list.map((item:any)=>{
listUid.push(item.createdBy,item.updatedBy)
});
{{else if $hasCreatedBy}}
listUid = list.map((item:any)=>{
return item.createdBy
});
{{else if $hasUpdatedBy}}
listUid = list.map((item:any)=>{
return item.updatedBy
});
{{end}}
{{if or $hasCreatedBy $hasUpdatedBy}}
if(listUid.length>0){
getUserList(listUid).then((response:any) =>{
let users = response.data.list||[]
list.map((item:any)=>{
users.forEach((user:any)=>{
{{if $hasCreatedBy}}
if(item.createdBy==user.id){
item.createdBy = user.userNickname
}
{{end}}
{{if $hasUpdatedBy}}
if(item.updatedBy==user.id){
item.updatedBy = user.userNickname
}
item.updatedBy = item?.updatedUser.userNickname
{{end}}
})
})
state.tableData.data = list;
})
}else{
state.tableData.data = list;
}
{{else}}
state.tableData.data = list;
{{end}}
{{end}}
state.tableData.data = list;
state.tableData.total = res.data.total;
loading.value = false
})
@ -582,17 +598,6 @@ export default defineComponent({
}
{{end}}
{{end}}
{{if ne $column.LinkTableName ""}}
//关联{{$column.LinkTableName}}表选项
const get{{$column.LinkTableClass}}Items{{$column.GoField}} = () => {
if ({{$column.HtmlField}}Options.value && {{$column.HtmlField}}Options.value.length > 0) {
return
}
proxy.getItems(list{{$column.LinkTableClass}}, {pageSize:10000}).then((res:any) => {
{{$column.HtmlField}}Options.value = proxy.setItems(res, '{{$column.LinkLabelId | CaseCamelLower}}', '{{$column.LinkLabelName | CaseCamelLower}}')
})
}
{{end}}
{{end}}
// 多选框选中数据
const handleSelectionChange = (selection:Array<{{.table.ClassName}}InfoData>) => {
@ -601,7 +606,7 @@ export default defineComponent({
multiple.value = !selection.length
}
const handleAdd = ()=>{
addRef.value.openDialog()
editRef.value.openDialog()
}
const handleUpdate = (row: {{$.table.ClassName}}TableColumns) => {
if(!row){
@ -642,7 +647,6 @@ export default defineComponent({
}
return {
proxy,
addRef,
editRef,
detailRef,
showAll,
@ -665,8 +669,6 @@ export default defineComponent({
{{else}}
//关联表数据选项
{{$column.HtmlField}}Options,
//关联{{$column.LinkTableName}}表选项获取数据方法
get{{$column.LinkTableClass}}Items{{$column.GoField}},
{{end}}
{{end}}
{{end}}
@ -689,4 +691,5 @@ export default defineComponent({
.colNone {
display: none;
}
.ml-2{margin: 3px;}
</style>

View File

@ -51,7 +51,7 @@
</el-form-item>
</el-col>
{{$colIndex = ($colIndex | plus 1)}}
{{else if and (eq $column.HtmlType "select" "radio" "checkbox") (ne $column.DictType "") }}
{{else if and (eq $column.HtmlType "select" "radio" "checkbox" "selects") (ne $column.DictType "") }}
<el-col :span="8" {{if lt $colIndex 2}}class="colBlock"{{else}}:class="showAll ? 'colBlock' : 'colNone'"{{end}}>
<el-form-item label="{{$column.ColumnComment}}" prop="{{$column.HtmlField}}">
<el-select v-model="tableData.param.{{$column.HtmlField}}" placeholder="请选择{{$column.ColumnComment}}" clearable >
@ -65,6 +65,28 @@
</el-form-item>
</el-col>
{{$colIndex = ($colIndex | plus 1)}}
{{else if and (eq $column.HtmlType "treeSelect" "treeSelects") (ne $column.LinkTableName "")}}
<el-col :span="8" {{if lt $colIndex 2}}class="colBlock"{{else}}:class="showAll ? 'colBlock' : 'colNone'"{{end}}>
<el-form-item label="{{$column.ColumnComment}}" prop="{{$column.HtmlField}}">
{{$tLabel:=""}}
{{$tValue:=""}}
{{range $li,$lc := $.table.LinkedTables}}
{{if eq $lc.TableName $column.LinkTableName}}
{{$tLabel = $lc.OptionsStruct.TreeName}}
{{$tValue = $lc.OptionsStruct.TreeCode}}
{{end}}
{{end}}
<el-cascader
v-model="tableData.param.{{$column.HtmlField}}"
placeholder="请选择"
:options="{{$column.HtmlField}}Options"
filterable
clearable
:props="{ label: '{{$tLabel}}',value: '{{$tValue}}',checkStrictly: true,emitPath: false }"
/>
</el-form-item>
</el-col>
{{$colIndex = ($colIndex | plus 1)}}
{{else if eq $column.HtmlType "date"}}
<el-col :span="8" {{if lt $colIndex 2}}class="colBlock"{{else}}:class="showAll ? 'colBlock' : 'colNone'"{{end}}>
<el-form-item label="{{$column.ColumnComment}}" prop="{{$column.HtmlField}}">
@ -106,10 +128,10 @@
</el-form-item>
</el-col>
{{$colIndex = ($colIndex | plus 1)}}
{{else if and (eq $column.HtmlType "select" "radio" "checkbox") (ne $column.LinkTableName "")}}
{{else if and (eq $column.HtmlType "select" "radio" "checkbox" "selects") (ne $column.LinkTableName "")}}
<el-col :span="8" {{if lt $colIndex 2}}class="colBlock"{{else}}:class="showAll ? 'colBlock' : 'colNone'"{{end}}>
<el-form-item label="{{$column.ColumnComment}}" prop="{{$column.HtmlField}}">
<el-select v-model="tableData.param.{{$column.HtmlField}}" placeholder="请选择{{$column.ColumnComment}}" clearable {{if $column.IsCascadeParent}}@change="query{{$column.ColumnName | CaseCamel}}Changed"{{end}} {{if not $column.IsCascade}}@click.native="get{{$column.LinkTableClass}}{{if $column.IsCascade}}Query{{end}}Items{{$column.GoField}}"{{end}}>
<el-select v-model="tableData.param.{{$column.HtmlField}}" placeholder="请选择{{$column.ColumnComment}}" clearable {{if $column.IsCascadeParent}}@change="query{{$column.ColumnName | CaseCamel}}Changed"{{end}}>
<el-option
{{if $column.IsCascade}}
v-for="item in {{$column.HtmlField}}QueryOptions"
@ -124,6 +146,28 @@
</el-form-item>
</el-col>
{{$colIndex = ($colIndex | plus 1)}}
{{else if and (eq $column.HtmlType "treeSelect" "treeSelects") (ne $column.LinkTableName "")}}
<el-col :span="8" {{if lt $colIndex 2}}class="colBlock"{{else}}:class="showAll ? 'colBlock' : 'colNone'"{{end}}>
<el-form-item label="{{$column.ColumnComment}}" prop="{{$column.HtmlField}}">
{{$tLabel:=""}}
{{$tValue:=""}}
{{range $li,$lc := $.table.LinkedTables}}
{{if eq $lc.TableName $column.LinkTableName}}
{{$tLabel = $lc.OptionsStruct.TreeName}}
{{$tValue = $lc.OptionsStruct.TreeCode}}
{{end}}
{{end}}
<el-cascader
v-model="tableData.param.{{$column.HtmlField}}"
placeholder="请选择"
:options="{{$column.HtmlField}}Options"
filterable
clearable
:props="{ label: '{{$tLabel}}',value: '{{$tValue}}',checkStrictly: true,emitPath: false }"
/>
</el-form-item>
</el-col>
{{$colIndex = ($colIndex | plus 1)}}
{{else}}
<el-col :span="8" {{if lt $colIndex 2}}class="colBlock"{{else}}:class="showAll ? 'colBlock' : 'colNone'"{{end}}>
<el-form-item label="{{$column.ColumnComment}}" prop="{{$column.HtmlField}}">
@ -243,6 +287,22 @@
fit="contain"></el-image>
</template>
</el-table-column>
{{else if eq $column.HtmlType "selects" "checkbox" "treeSelects"}}
{{if ne $column.LinkTableName ""}}
<el-table-column align="center" label="{{$column.ColumnComment}}" prop="linked{{$column.GoField}}"
{{if gt $column.MinWidth 0}}min-width="{{$column.MinWidth}}px"{{end}}
{{if $column.IsOverflowTooltip}}:show-overflow-tooltip="true"{{end}}
{{if $column.IsFixed}}fixed="left"{{end}}>
<template #default="scope">
<el-tag v-if="scope.row.linked{{$column.GoField}}" class="ml-2" type="success" v-for="(item,ik) in scope.row.linked{{$column.GoField}}" :key="ik">{{VueTag "{{"}}item.{{$column.LinkLabelName|CaseCamelLower}}{{VueTag "}}"}}</el-tag>
</template>
</el-table-column>
{{else if ne $column.DictType ""}}
<el-table-column label="{{$column.ColumnComment}}" align="center" prop="{{$column.HtmlField}}" :formatter="{{$column.HtmlField}}Format"
{{if gt $column.MinWidth 0}}min-width="{{$column.MinWidth}}px"{{end}}
{{if $column.IsOverflowTooltip}}:show-overflow-tooltip="true"{{end}}
{{if $column.IsFixed}}fixed="left"{{end}} />
{{end}}
{{else if $column.IsStatus}}
<el-table-column label="{{$column.ColumnComment}}" align="center"
{{if gt $column.MinWidth 0}}min-width="{{$column.MinWidth}}px"{{end}}
@ -281,7 +341,7 @@
type="primary"
link
@click="handleView(scope.row)"
v-auth="'{{.apiVersion}}/{{.table.ModuleName}}/{{$businessName}}/view'"
v-auth="'{{.apiVersion}}/{{.table.ModuleName}}/{{$businessName}}/get'"
><el-icon><ele-View /></el-icon>详情</el-button>
{{end}}
<el-button
@ -300,24 +360,6 @@
</el-table-column>
</el-table>
</el-card>
<{{$plugin}}{{if ne $plugin ""}}{{.apiVersion|replace "/" "_"|CaseCamel}}{{else}}{{.apiVersion|replace "/" "_"|CaseCamelLower}}{{end}}{{.table.ModuleName|CaseCamel}}{{.table.ClassName}}Add
ref="addRef"
{{range $index, $column := .table.Columns}}
{{if ne $column.DictType ""}}
:{{$column.HtmlField}}Options="{{$column.DictType}}"
{{else if ne $column.LinkTableName ""}}
{{if $column.IsCascade}}
{{/*级联处理*/}}
{{else}}
{{/*关联表处理*/}}
:{{$column.HtmlField}}Options="{{$column.HtmlField}}Options"
@get{{$column.LinkTableClass}}Items{{$column.GoField}}="get{{$column.LinkTableClass}}Items{{$column.GoField}}"
{{end}}
{{end}}
{{end}}
:{{$businessName}}Options="tableData.data"
@{{$businessName}}List="{{$businessName}}List"
></{{$plugin}}{{if ne $plugin ""}}{{.apiVersion|replace "/" "_"|CaseCamel}}{{else}}{{.apiVersion|replace "/" "_"|CaseCamelLower}}{{end}}{{.table.ModuleName|CaseCamel}}{{.table.ClassName}}Add>
<{{$plugin}}{{if ne $plugin ""}}{{.apiVersion|replace "/" "_"|CaseCamel}}{{else}}{{.apiVersion|replace "/" "_"|CaseCamelLower}}{{end}}{{.table.ModuleName|CaseCamel}}{{.table.ClassName}}Edit
ref="editRef"
{{range $index, $column := .table.Columns}}
@ -329,7 +371,6 @@
{{else}}
{{/*关联表处理*/}}
:{{$column.HtmlField}}Options="{{$column.HtmlField}}Options"
@get{{$column.LinkTableClass}}Items{{$column.GoField}}="get{{$column.LinkTableClass}}Items{{$column.GoField}}"
{{end}}
{{end}}
{{end}}
@ -347,7 +388,6 @@
{{else}}
{{/*关联表处理*/}}
:{{$column.HtmlField}}Options="{{$column.HtmlField}}Options"
@get{{$column.LinkTableClass}}Items{{$column.GoField}}="get{{$column.LinkTableClass}}Items{{$column.GoField}}"
{{end}}
{{end}}
{{end}}
@ -394,15 +434,9 @@ import {
{{if and $column.IsStatus $column.IsList}}
change{{$.table.ClassName}}{{$column.GoField}},
{{end}}
{{if ne $column.LinkTableName ""}}
{{if not (inArray $hasImports (concat "list" $column.LinkTableClass))}}
{{$hasImports = append $hasImports (concat "list" $column.LinkTableClass)}}
list{{$column.LinkTableClass}},
{{end}}
{{end}}
{{end}}
{{if $getUserList}}
getUserList,
{{if gt (len .table.LinkedTables) 0}}
linkedDataSearch
{{end}}
} from "/@/api/{{$plugin}}{{.table.ModuleName}}/{{$businessName}}";
import {
@ -413,14 +447,12 @@ import {
Linked{{$.table.ClassName}}{{$linkedTable.ClassName}},
{{end}}
} from "/@/views/{{$plugin}}{{.table.ModuleName}}/{{$businessName}}/list/component/model"
import {{$plugin}}{{if ne $plugin ""}}{{.apiVersion|replace "/" "_"|CaseCamel}}{{else}}{{.apiVersion|replace "/" "_"|CaseCamelLower}}{{end}}{{.table.ModuleName|CaseCamel}}{{.table.ClassName}}Add from "/@/views/{{$plugin}}{{.table.ModuleName}}/{{$businessName}}/list/component/add.vue"
import {{$plugin}}{{if ne $plugin ""}}{{.apiVersion|replace "/" "_"|CaseCamel}}{{else}}{{.apiVersion|replace "/" "_"|CaseCamelLower}}{{end}}{{.table.ModuleName|CaseCamel}}{{.table.ClassName}}Edit from "/@/views/{{$plugin}}{{.table.ModuleName}}/{{$businessName}}/list/component/edit.vue"
import {{$plugin}}{{if ne $plugin ""}}{{.apiVersion|replace "/" "_"|CaseCamel}}{{else}}{{.apiVersion|replace "/" "_"|CaseCamelLower}}{{end}}{{.table.ModuleName|CaseCamel}}{{.table.ClassName}}Detail from "/@/views/{{$plugin}}{{.table.ModuleName}}/{{$businessName}}/list/component/detail.vue"
import _ from 'lodash'
export default defineComponent({
name: "{{$plugin}}{{if ne $plugin ""}}{{.apiVersion|replace "/" "_"|CaseCamel}}{{else}}{{.apiVersion|replace "/" "_"|CaseCamelLower}}{{end}}{{.table.ModuleName|CaseCamel}}{{.table.ClassName}}List",
components:{
{{$plugin}}{{if ne $plugin ""}}{{.apiVersion|replace "/" "_"|CaseCamel}}{{else}}{{.apiVersion|replace "/" "_"|CaseCamelLower}}{{end}}{{.table.ModuleName|CaseCamel}}{{.table.ClassName}}Add,
{{$plugin}}{{if ne $plugin ""}}{{.apiVersion|replace "/" "_"|CaseCamel}}{{else}}{{.apiVersion|replace "/" "_"|CaseCamelLower}}{{end}}{{.table.ModuleName|CaseCamel}}{{.table.ClassName}}Edit,
{{$plugin}}{{if ne $plugin ""}}{{.apiVersion|replace "/" "_"|CaseCamel}}{{else}}{{.apiVersion|replace "/" "_"|CaseCamelLower}}{{end}}{{.table.ModuleName|CaseCamel}}{{.table.ClassName}}Detail
},
@ -428,7 +460,6 @@ export default defineComponent({
const {proxy} = <any>getCurrentInstance()
const loading = ref(false)
const queryRef = ref()
const addRef = ref();
const editRef = ref();
const detailRef = ref();
// 是否显示所有搜索选项
@ -500,8 +531,31 @@ export default defineComponent({
});
// 初始化表格数据
const initTableData = () => {
{{if gt (len .table.LinkedTables) 0}}
linkedData()
{{end}}
{{$businessName}}List()
};
{{if gt (len .table.LinkedTables) 0}}
const linkedData = ()=>{
linkedDataSearch().then((res:any)=>{
{{range $index, $column := .table.Columns}}
{{if ne $column.LinkTableName ""}}
//关联{{$column.LinkTableName}}表选项
{{range $li,$lc := $.table.LinkedTables}}
{{if eq $lc.TableName $column.LinkTableName}}
{{if eq $lc.TplCategory "tree"}}
{{$column.HtmlField}}Options.value = proxy.handleTree(res.data.linked{{$.table.ClassName}}{{$column.LinkTableClass}}, '{{$lc.OptionsStruct.TreeCode}}', '{{$lc.OptionsStruct.TreeParentCode}}')
{{else}}
{{$column.HtmlField}}Options.value = proxy.setItems(res, '{{$column.LinkLabelId | CaseCamelLower}}', '{{$column.LinkLabelName | CaseCamelLower}}','linked{{$.table.ClassName}}{{$column.LinkTableClass}}')
{{end}}
{{end}}
{{end}}
{{end}}
{{end}}
})
}
{{end}}
/** 重置按钮操作 */
const resetQuery = (formEl: FormInstance | undefined) => {
if (!formEl) return
@ -513,64 +567,21 @@ export default defineComponent({
loading.value = true
list{{.table.ClassName}}(state.tableData.param).then((res:any)=>{
let list = res.data.list??[];
{{$hasCreatedBy := false}}
{{$hasUpdatedBy := false}}
{{range $index,$column := .table.ListColumns}}
{{if eq $column.HtmlField "createdBy" "updatedBy"}}
list.map((item:any)=>{
{{if eq $column.HtmlField "createdBy"}}
{{$hasCreatedBy = true}}
item.createdBy = item?.createdUser.userNickname
{{end}}
{{if eq $column.HtmlField "updatedBy"}}
{{$hasUpdatedBy = true}}
{{end}}
{{end}}
{{if or $hasCreatedBy $hasUpdatedBy}}
let listUid = [];
{{end}}
{{if and $hasCreatedBy $hasUpdatedBy}}
list.map((item:any)=>{
listUid.push(item.createdBy,item.updatedBy)
});
{{else if $hasCreatedBy}}
listUid = list.map((item:any)=>{
return item.createdBy
});
{{else if $hasUpdatedBy}}
listUid = list.map((item:any)=>{
return item.updatedBy
});
{{end}}
{{if or $hasCreatedBy $hasUpdatedBy}}
if(listUid.length>0){
getUserList(listUid).then((response:any) =>{
let users = response.data.list||[]
list.map((item:any)=>{
users.forEach((user:any)=>{
{{if $hasCreatedBy}}
if(item.createdBy==user.id){
item.createdBy = user.userNickname
}
{{end}}
{{if $hasUpdatedBy}}
if(item.updatedBy==user.id){
item.updatedBy = user.userNickname
}
item.updatedBy = item?.updatedUser.userNickname
{{end}}
})
})
{{end}}
{{end}}
dataList.value = _.clone(res.data.list)
list = proxy.handleTree(res.data.list||[], "{{$treeCode}}", "{{$treeParentCode}}");
state.tableData.data = list;
})
}else{
dataList.value = _.clone(res.data.list)
list = proxy.handleTree(res.data.list||[], "{{$treeCode}}", "{{$treeParentCode}}");
state.tableData.data = list;
}
{{else}}
dataList.value = _.clone(res.data.list)
list = proxy.handleTree(res.data.list||[], "{{$treeCode}}", "{{$treeParentCode}}");
state.tableData.data = list;
{{end}}
loading.value = false
})
};
@ -596,17 +607,6 @@ export default defineComponent({
}
{{end}}
{{end}}
{{if ne $column.LinkTableName ""}}
//关联{{$column.LinkTableName}}表选项
const get{{$column.LinkTableClass}}Items{{$column.GoField}} = () => {
if ({{$column.HtmlField}}Options.value && {{$column.HtmlField}}Options.value.length > 0) {
return
}
proxy.getItems(list{{$column.LinkTableClass}}, {pageSize:10000}).then((res:any) => {
{{$column.HtmlField}}Options.value = proxy.setItems(res, '{{$column.LinkLabelId | CaseCamelLower}}', '{{$column.LinkLabelName | CaseCamelLower}}')
})
}
{{end}}
{{end}}
// 多选框选中数据
const handleSelectionChange = (selection:Array<{{.table.ClassName}}InfoData>) => {
@ -615,7 +615,7 @@ export default defineComponent({
multiple.value = !selection.length
}
const handleAdd = ()=>{
addRef.value.openDialog()
editRef.value.openDialog()
}
const handleUpdate = (row: {{$.table.ClassName}}TableColumns) => {
if(!row){
@ -656,7 +656,6 @@ export default defineComponent({
}
return {
proxy,
addRef,
editRef,
detailRef,
showAll,
@ -680,7 +679,6 @@ export default defineComponent({
//关联表数据选项
{{$column.HtmlField}}Options,
//关联{{$column.LinkTableName}}表选项获取数据方法
get{{$column.LinkTableClass}}Items{{$column.GoField}},
{{end}}
{{end}}
{{end}}