| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310 |
- package util
- import (
- "strings"
- "text/template"
- )
- var FuncMap = template.FuncMap{
- "toGoType": ToGoType,
- "formatJsonName": FormatJsonName,
- "formatSqlToVueType": formatSqlToVueType,
- "smallHump": SmallHump,
- "bigHump": BigHump,
- "queryType": QueryType,
- "ElDialog": ElDialog,
- "ElFrom": ElFrom,
- "ElTableColumn": ElTableColumn,
- "ToLower": strings.ToLower,
- }
- // ToGoType sql类型转go类型
- func ToGoType(sqlType string) string {
- switch sqlType {
- case "varchar":
- return "string"
- case "VARCHAR":
- return "string"
- case "CHAR":
- return "string"
- case "char":
- return "string"
- case "INT":
- return "int64"
- case "int":
- return "int64"
- case "decimal":
- return "float64"
- case "datetime":
- return "time.Time"
- case "longblob":
- return "string"
- default:
- println("未找到类型", sqlType)
- return "string"
- }
- }
- func FormatJsonName(sqlName string) string {
- split := strings.Split(sqlName, "_")
- var str = split[0]
- for i := 1; i < len(split); i++ {
- str += strings.Title(split[i])
- }
- return str
- }
- func formatSqlToVueType(str string) string {
- str = strings.ToLower(str)
- switch str {
- case "varchar":
- return "string"
- case "char":
- return "string"
- case "int":
- return "number"
- case "decimal":
- return "number"
- case "datetime":
- return "string"
- case "longblob":
- return "string"
- default:
- panic("未定义的类型:" + str)
- }
- }
- func BigHump(str string) string {
- split := strings.Split(str, "_")
- if len(split) == 1 {
- return strings.Title(str)
- }
- res := strings.Title(split[0])
- for i := 1; i < len(split); i++ {
- res += strings.Title(split[i])
- }
- return res
- }
- func SmallHump(str string) string {
- split := strings.Split(str, "_")
- if len(split) == 1 {
- return strings.ToLower(str[0:1]) + str[1:]
- }
- res := strings.ToLower(split[0][0:1]) + strings.ToLower(split[0][1:])
- for i := 1; i < len(split); i++ {
- res += strings.ToUpper(split[i][0:1]) + strings.ToLower(split[i][1:])
- }
- return res
- }
- func QueryType(GoType, GoField, QueryType, ColumnName, ColumnComment string) string {
- if GoType == "int" || GoType == "int64" || GoType == "float64" {
- if QueryType == "BETWEEN" {
- return GoField + "Start " + GoType + " `xorm:\"" + ColumnName + "\" json:\"" + SmallHump(ColumnName) + "\"` // " + ColumnComment + "\n\t" +
- GoField + "End " + GoType + " `xorm:\"" + ColumnName + "\" json:\"" + SmallHump(ColumnName) + "\"` // " + ColumnComment
- } else {
- return GoField + " " + GoType + " `xorm:\"" + ColumnName + "\" json:\"" + SmallHump(ColumnName) + "\"` // " + ColumnComment
- }
- }
- if GoType == "time.Time" {
- if QueryType == "BETWEEN" {
- return GoField + "Start string `xorm:\"" + ColumnName + "\" json:\"" + SmallHump(ColumnName) + "\"` // " + ColumnComment + "\n\t" +
- GoField + "End string `xorm:\"" + ColumnName + "\" json:" + SmallHump(ColumnName) + "\"` // " + ColumnComment
- } else {
- return GoField + " string `xorm:\"" + ColumnName + "\" json:\"" + SmallHump(ColumnName) + "\"` // " + ColumnComment
- }
- }
- return GoField + " string `xorm:\"" + ColumnName + "\" json:\"" + SmallHump(ColumnName) + "\"` // " + ColumnComment
- }
- func ElFrom(name, value, typeName, dictType, queryType string) string {
- typeName = strings.ToLower(typeName)
- if typeName == "input" {
- return "\n <el-form-item label=\"" + name + "\" prop=\"" + value + "\">" +
- "\n <el-input v-model=\"query." + value + "\" placeholder=\"请输入" + name + "\"/>" +
- "\n </el-form-item>"
- } else if typeName == "number" {
- if strings.ToUpper(queryType) == "BETWEEN" {
- return "\n <el-form-item label=\"" + name + "\" prop=\"" + value + "\">" +
- "\n <InputNumberRange v-model:min=query." + value + "Start v-model:max=query." + value + "End/>" +
- "\n </el-form-item>"
- } else {
- return "\n <el-form-item label=\"" + name + "\" prop=\"" + value + "\">" +
- "\n <el-input-number v-model=\"query." + value + "\" placeholder=\"请输入" + name + "\"/>" +
- "\n </el-form-item>"
- }
- } else if typeName == "select" {
- return "\n <el-form-item label=\"" + name + "\" prop=\"" + value + "\">" +
- "\n <el-select v-model=\"query." + value + "\" placeholder=\"请选择" + name + "\">" +
- "\n <el-option" +
- "\n v-for=\"item in store.state.dicts.get('" + dictType + "')\"" +
- "\n :key=\"item.dictValue\"" +
- "\n :label=\"item.dictLabel\"" +
- "\n :value=\"item.dictValue\"/>" +
- "\n </el-select>" +
- "\n </el-form-item>"
- } else if typeName == "radio" {
- if dictType == "" {
- return "\n <el-form-item label=\"" + name + "\" prop=\"" + value + "\">" +
- " <el-radio-group v-model=\"query." + value + "\">" +
- "\n <el-radio" +
- "\n v-for=\"item in [['0','否'], ['1','是']]\"" +
- "\n :key=\"item[0]\"" +
- "\n :label=\"item[0]\">" +
- "\n {{ item[1] }}" +
- "\n </el-radio>" +
- "\n </el-radio-group>" +
- "\n </el-form-item>"
- } else {
- return "\n <el-form-item label=\"" + name + "\" prop=\"" + value + "\">" +
- "\n <el-radio-group v-model=\"query." + value + "\">" +
- "\n <el-radio" +
- "\n v-for=\"item in store.state.dicts.get(" + dictType + ")\"" +
- "\n :key=\"item.dictValue\"" +
- "\n :label=\"item.dictLabel\">" +
- "\n {{item.dictLabel}}" +
- "\n </el-radio>" +
- "\n </el-radio-group>" +
- "\n </el-form-item>"
- }
- } else if typeName == "time" {
- if strings.ToUpper(queryType) == "BETWEEN" {
- //
- return "\n <el-form-item label=\"" + name + "\" prop=\"" + value + "\">" +
- " <DatePicker v-model:startDate=query." + value + "Start v-model:endDate=query." + value + "End/>" +
- "\n </el-form-item>"
- } else {
- return "\n <el-form-item label=\"" + name + "\" prop=\"" + value + "\">" +
- " <el-date-picker v-model=\"query." + value + "\" type=\"datetime\" placeholder=\"请选择时间\" value-format=\"YYYY-MM-DD hh:mm:ss\"/>" +
- "\n </el-form-item>"
- }
- }
- /*else if typeName == "textarea" {
- return "\n <el-form-item label=\"" + name + "\" prop=\"" + value + "\">" +
- "\n <el-input v-model=\"query." + value + "\" placeholder=\"请输入" + name + "\" type=\"textarea\"/>" +
- "\n </el-form-item>"
- } else if typeName == "checkbox" {
- return "\n <el-form-item label=\"" + name + "\" prop=\"" + value + "\">" +
- "\n <el-checkbox-group v-model=\"query." + value + "\">" +
- "\n <el-checkbox :label=\"item.dictLabel\" :value=\"item.dictValue\" v-for=\"item in store.state.dicts.get('" + dictType + "')\"/>" +
- "\n </el-checkbox-group>" +
- "\n </el-form-item>"
- } else if typeName == "image" {
- return "\n <el-form-item label=\"" + name + "\" prop=\"" + value + "\">" +
- " <ImageUpload v-model:ImgUrl=\"query." + value + "\"/>" +
- "\n </el-form-item>"
- } else if typeName == "file" {
- } else if typeName == "editor" {
- return "\n <el-form-item label=\"" + name + "\" prop=\"" + value + "\">" +
- " <EditorComponent v-model:htmlString=\"query." + value + "\"/>" +
- "\n </el-form-item>"
- } else if typeName == "text" {
- return "\n <el-form-item label=\"" + name + "\" prop=\"" + value + "\">" +
- " <el-text class=\"mx-1\">{{query." + value + "}}</el-text>" +
- "\n </el-form-item>"
- }*/
- return ""
- }
- func ElTableColumn(name, value, typeName string, dictType string) string {
- if typeName == "input" || typeName == "textarea" || typeName == "select" || typeName == "radio" ||
- typeName == "checkbox" || typeName == "time" || typeName == "text" {
- if dictType == "" {
- return "\n <el-table-column label=\"" + name + "\" align=\"center\" prop=\"" + value + "\"/>"
- } else {
- return "\n <el-table-column label=\"" + name + "\" align=\"center\" prop=\"" + value + "\">" +
- "\n <template #default=\"scope\">" +
- "\n <DictTag :dict-type=\"'" + dictType + "'\" :dict-value=\"scope.row." + value + "\"/>" +
- "\n </template>" +
- "\n </el-table-column>"
- }
- }
- if typeName == "image" {
- return "\n <el-table-column label=\"" + name + "\" align=\"center\" prop=\"" + value + "\">" +
- "\n <template #default=\"scope\">" +
- "\n <el-image :src=\"scope.row." + value + "\"></el-image>" +
- "\n </template>" +
- "\n </el-table-column>"
- }
- return "\n <el-table-column label=\"" + name + "\" align=\"center\" prop=\"" + value + "\"/>"
- }
- func ElDialog(name, value, typeName, dictType string) string {
- typeName = strings.ToLower(typeName)
- if typeName == "input" {
- return "\n <el-form-item label=\"" + name + "\" prop=\"" + value + "\">" +
- "\n <el-input v-model=\"dialogForm." + value + "\" placeholder=\"请输入" + name + "\"/>" +
- "\n </el-form-item>"
- } else if typeName == "number" {
- return "\n <el-form-item label=\"" + name + "\" prop=\"" + value + "\">" +
- "\n <el-input-number v-model=\"dialogForm." + value + "\" placeholder=\"请输入" + name + "\"/>" +
- "\n </el-form-item>"
- } else if typeName == "textarea" {
- return "\n <el-form-item label=\"" + name + "\" prop=\"" + value + "\">" +
- "\n <el-input v-model=\"dialogForm." + value + "\" placeholder=\"请输入" + name + "\" type=\"textarea\"/>" +
- "\n </el-form-item>"
- } else if typeName == "select" {
- return "\n <el-form-item label=\"" + name + "\" prop=\"" + value + "\">" +
- "\n <el-select v-model=\"dialogForm." + value + "\" placeholder=\"请选择" + name + "\">" +
- "\n <el-option" +
- "\n v-for=\"item in store.state.dicts.get('" + dictType + "')\"" +
- "\n :key=\"item.dictValue\"" +
- "\n :label=\"item.dictLabel\"" +
- "\n :value=\"item.dictValue\"/>" +
- "\n </el-select>" +
- "\n </el-form-item>"
- } else if typeName == "radio" {
- if dictType == "" {
- return "\n <el-form-item label=\"" + name + "\" prop=\"" + value + "\">" +
- " <el-radio-group v-model=\"dialogForm." + value + "\">" +
- "\n <el-radio" +
- "\n v-for=\"item in [['0','否'], ['1','是']]\"" +
- "\n :key=\"item[0]\"" +
- "\n :label=\"item[0]\">" +
- "\n {{ item[1] }}" +
- "\n </el-radio>" +
- "\n </el-radio-group>" +
- "\n </el-form-item>"
- } else {
- return "\n <el-form-item label=\"" + name + "\" prop=\"" + value + "\">" +
- "\n <el-radio-group v-model=\"dialogForm." + value + "\">" +
- "\n <el-radio" +
- "\n v-for=\"item in store.state.dicts.get(" + dictType + ")\"" +
- "\n :key=\"item.dictValue\"" +
- "\n :label=\"item.dictLabel\">" +
- "\n {{item.dictLabel}}" +
- "\n </el-radio>" +
- "\n </el-radio-group>" +
- "\n </el-form-item>"
- }
- } else if typeName == "checkbox" {
- return "\n <el-form-item label=\"" + name + "\" prop=\"" + value + "\">" +
- "\n <el-checkbox-group v-model=\"dialogForm." + value + "\">" +
- "\n <el-checkbox :label=\"item.dictLabel\" :value=\"item.dictValue\" v-for=\"item in store.state.dicts.get('" + dictType + "')\"/>" +
- "\n </el-checkbox-group>" +
- "\n </el-form-item>"
- } else if typeName == "time" {
- return "\n <el-form-item label=\"" + name + "\" prop=\"" + value + "\">" +
- " <el-date-picker v-model=\"dialogForm." + value + "\" type=\"datetime\" placeholder=\"请选择时间\" value-format=\"YYYY-MM-DD hh:mm:ss\"/>" +
- "\n </el-form-item>"
- } else if typeName == "image" {
- return "\n <el-form-item label=\"" + name + "\" prop=\"" + value + "\">" +
- " <ImageUpload v-model:ImgUrl=\"dialogForm." + value + "\"/>" +
- "\n </el-form-item>"
- } else if typeName == "file" {
- } else if typeName == "editor" {
- return "\n <el-form-item label=\"" + name + "\" prop=\"" + value + "\">" +
- " <EditorComponent v-model:htmlString=\"dialogForm." + value + "\"/>" +
- "\n </el-form-item>"
- } else if typeName == "text" {
- return "\n <el-form-item label=\"" + name + "\" prop=\"" + value + "\">" +
- " <el-text class=\"mx-1\">{{dialogForm." + value + "}}</el-text>" +
- "\n </el-form-item>"
- }
- //默认的就显示文本
- return "\n <el-form-item label=\"" + name + "\" prop=\"" + value + "\">" +
- " <el-text class=\"mx-1\">{{dialogForm." + value + "}}</el-text>" +
- "\n </el-form-item>"
- }
|