diff --git a/internal/app/system/logic/toolsGenTable/tools_gen_table.go b/internal/app/system/logic/toolsGenTable/tools_gen_table.go index 32908f8..60569ce 100644 --- a/internal/app/system/logic/toolsGenTable/tools_gen_table.go +++ b/internal/app/system/logic/toolsGenTable/tools_gen_table.go @@ -663,6 +663,16 @@ 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 @@ -699,6 +709,7 @@ func (s *sToolsGenTable) GenData(ctx context.Context, tableId int64) (data g.Map tsApiKey: tsApiValue, tsModelKey: tsModelValue, vueKey: vueValue, + vueAddKey: vueAddValue, vueEditKey: vueEditValue, vueDetailKey: vueDetailValue, } @@ -735,6 +746,7 @@ 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 @@ -751,6 +763,12 @@ 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 @@ -843,7 +861,9 @@ 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 }) @@ -858,6 +878,7 @@ 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 @@ -1047,6 +1068,10 @@ 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) diff --git a/internal/app/system/model/tools_gen_table.go b/internal/app/system/model/tools_gen_table.go index 4659400..bac9cb1 100644 --- a/internal/app/system/model/tools_gen_table.go +++ b/internal/app/system/model/tools_gen_table.go @@ -45,7 +45,8 @@ type ToolsGenTableEx struct { HasUpdatedBy bool // 是否有updated_by字段 HasConversion bool // service中是否有转换函数 Columns []*ToolsGenTableColumnEx // 表列信息 - EditColumns []*ToolsGenTableColumnEx // 新增、编辑界面列信息,主键单独判断不在此列 + InsertColumns []*ToolsGenTableColumnEx // 新增界面列信息,主键单独判断不在此列 + EditColumns []*ToolsGenTableColumnEx // 编辑界面列信息,主键单独判断不在此列 ListColumns []*ToolsGenTableColumnEx // 列表界面列信息 DetailColumns []*ToolsGenTableColumnEx // 详情界面列信息 QueryColumns []*ToolsGenTableColumnEx // 查询表单列信息 diff --git a/resource/template/vm/go/api.template b/resource/template/vm/go/api.template index 1194959..5747f3f 100644 --- a/resource/template/vm/go/api.template +++ b/resource/template/vm/go/api.template @@ -25,6 +25,11 @@ package {{.table.ModuleName }} {{$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" @@ -67,7 +72,7 @@ type {{.table.ClassName}}AddReq struct { {{if .table.IsPkInsertable}} {{.table.PkColumn.GoField}} {{.table.PkColumn.GoType}} `p:"{{.table.PkColumn.HtmlField}}" v:"required#主键ID不能为空"` {{end}} - {{range $index, $column := .table.EditColumns}} + {{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}} diff --git a/resource/template/vm/go/logic.template b/resource/template/vm/go/logic.template index f22b3fb..b3eafb1 100644 --- a/resource/template/vm/go/logic.template +++ b/resource/template/vm/go/logic.template @@ -202,7 +202,7 @@ func (s *s{{.table.ClassName}})GetBy{{$pkGoField}}(ctx context.Context, {{$.tabl //// func (s *s{{.table.ClassName}})Add(ctx context.Context, req *{{.table.ModuleName}}.{{.table.ClassName}}AddReq) (err error){ err = g.Try(ctx, func(ctx context.Context) { - {{range $index, $column := .table.EditColumns}} + {{range $index, $column := .table.InsertColumns}} {{if eq $column.HtmlType "checkbox"}} {{$column.HtmlField}} := "" req.{{$column.GoField}}.FilterEmpty() @@ -220,7 +220,7 @@ 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.EditColumns}} + {{range $index, $column := .table.InsertColumns}} {{if eq $column.HtmlType "checkbox"}} {{$column.GoField}}:{{$column.HtmlField}}, {{else}} diff --git a/resource/template/vm/vue/add-vue.template b/resource/template/vm/vue/add-vue.template new file mode 100644 index 0000000..3bf69cf --- /dev/null +++ b/resource/template/vm/vue/add-vue.template @@ -0,0 +1,493 @@ + + +{{$tokenImp := false}} +{{$imgsImp := false}} +{{$editImp := false }} +{{$fileImp := false}} +{{$getUserList:=false}} + +{{range $index,$column:=.table.Columns}} + {{if eq $column.HtmlType "richtext"}} + {{$editImp = true}} + {{else if eq $column.HtmlType "imagefile"}} + {{$tokenImp = true}} + {{else if eq $column.HtmlType "images"}} + {{$imgsImp = true}} + {{else if eq $column.HtmlType "file" "files"}} + {{$fileImp = true}} + {{end}} + {{if eq $column.HtmlField "createdBy" "updatedBy"}} + {{$getUserList = true}} + {{end}} +{{end}} + +{{$plugin:=""}} +{{if ContainsI $.table.PackageName "plugins"}} + {{$plugin = "plugins/"}} +{{end}} + + + \ No newline at end of file diff --git a/resource/template/vm/vue/list-vue.template b/resource/template/vm/vue/list-vue.template index 6eb975f..42627c4 100644 --- a/resource/template/vm/vue/list-vue.template +++ b/resource/template/vm/vue/list-vue.template @@ -308,6 +308,23 @@ @pagination="{{$businessName}}List" /> + <{{$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}}Edit ref="editRef" {{range $index, $column := .table.Columns}} @@ -401,11 +418,13 @@ 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 }, @@ -413,6 +432,7 @@ export default defineComponent({ const {proxy} = getCurrentInstance() const loading = ref(false) const queryRef = ref() + const addRef = ref(); const editRef = ref(); const detailRef = ref(); // 是否显示所有搜索选项 @@ -430,17 +450,19 @@ export default defineComponent({ } }) // 字典选项数据 + {{$dictArr:=newArray}} + {{range $index, $column := .table.Columns}} + {{if and (ne $column.DictType "") (ne (inArray $dictArr $column.DictType) true)}} + {{$dictArr = append $dictArr $column.DictType}} + {{end}} + {{end}} const { - {{range $index, $column := .table.Columns}} - {{if ne $column.DictType ""}} - {{$column.DictType}}, - {{end}} + {{range $index, $column := $dictArr}} + {{$column}}, {{end}} } = proxy.useDict( - {{range $index, $column := .table.Columns}} - {{if ne $column.DictType ""}} - '{{$column.DictType}}', - {{end}} + {{range $index, $column := $dictArr}} + '{{$column}}', {{end}} ) {{range $index, $column := .table.Columns}} @@ -591,7 +613,7 @@ export default defineComponent({ multiple.value = !selection.length } const handleAdd = ()=>{ - editRef.value.openDialog() + addRef.value.openDialog() } const handleUpdate = (row: {{$.table.ClassName}}TableColumns) => { if(!row){ @@ -632,6 +654,7 @@ export default defineComponent({ } return { proxy, + addRef, editRef, detailRef, showAll, diff --git a/resource/template/vm/vue/tree-vue.template b/resource/template/vm/vue/tree-vue.template index 455fc76..2b18ff3 100644 --- a/resource/template/vm/vue/tree-vue.template +++ b/resource/template/vm/vue/tree-vue.template @@ -312,6 +312,24 @@ + <{{$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}}Edit ref="editRef" {{range $index, $column := .table.Columns}} @@ -407,12 +425,14 @@ 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 }, @@ -420,6 +440,7 @@ export default defineComponent({ const {proxy} = getCurrentInstance() const loading = ref(false) const queryRef = ref() + const addRef = ref(); const editRef = ref(); const detailRef = ref(); // 是否显示所有搜索选项 @@ -437,17 +458,19 @@ export default defineComponent({ } }) // 字典选项数据 + {{$dictArr:=newArray}} + {{range $index, $column := .table.Columns}} + {{if and (ne $column.DictType "") (ne (inArray $dictArr $column.DictType) true)}} + {{$dictArr = append $dictArr $column.DictType}} + {{end}} + {{end}} const { - {{range $index, $column := .table.Columns}} - {{if ne $column.DictType ""}} - {{$column.DictType}}, - {{end}} + {{range $index, $column := $dictArr}} + {{$column}}, {{end}} } = proxy.useDict( - {{range $index, $column := .table.Columns}} - {{if ne $column.DictType ""}} - '{{$column.DictType}}', - {{end}} + {{range $index, $column := $dictArr}} + '{{$column}}', {{end}} ) {{range $index, $column := .table.Columns}} @@ -604,7 +627,7 @@ export default defineComponent({ multiple.value = !selection.length } const handleAdd = ()=>{ - editRef.value.openDialog() + addRef.value.openDialog() } const handleUpdate = (row: {{$.table.ClassName}}TableColumns) => { if(!row){ @@ -645,6 +668,7 @@ export default defineComponent({ } return { proxy, + addRef, editRef, detailRef, showAll,