forked from golang/hotime
优化表单生成规则
This commit is contained in:
parent
cc4d91cdbb
commit
5c8df885a2
@ -62,6 +62,11 @@ var ColumnNameType = []ColumnShow{
|
||||
{"sex", true, true, true, false, "select", false},
|
||||
{"delete", false, false, false, false, "", false},
|
||||
|
||||
{"lat", false, true, true, false, "", false},
|
||||
{"lng", false, true, true, false, "", false},
|
||||
{"latitude", false, true, true, false, "", false},
|
||||
{"longitude", false, true, true, false, "", false},
|
||||
|
||||
{"index", false, false, false, false, "", false},
|
||||
{"password", false, true, false, false, "password", false},
|
||||
{"info", false, true, true, false, "", false},
|
||||
|
@ -16,6 +16,7 @@ type MakeCode struct {
|
||||
IndexMenus Map
|
||||
TableConfig Map
|
||||
TableColumns map[string]map[string]Map
|
||||
SearchColumns map[string]map[string]Map
|
||||
Config Map
|
||||
Error
|
||||
}
|
||||
@ -27,6 +28,9 @@ func (that *MakeCode) Db2JSON(name string, path string, db db.HoTimeDB) {
|
||||
if that.TableColumns == nil {
|
||||
that.TableColumns = make(map[string]map[string]Map)
|
||||
}
|
||||
if that.SearchColumns == nil {
|
||||
that.SearchColumns = make(map[string]map[string]Map)
|
||||
}
|
||||
|
||||
//加载配置文件
|
||||
btes, err := ioutil.ReadFile(path)
|
||||
@ -84,16 +88,28 @@ func (that *MakeCode) Db2JSON(name string, path string, db db.HoTimeDB) {
|
||||
for tableName, _ := range that.TableConfig {
|
||||
|
||||
columns := that.TableConfig.GetMap(tableName).GetSlice("columns")
|
||||
search := that.TableConfig.GetMap(tableName).GetSlice("search")
|
||||
//初始化
|
||||
if that.TableColumns[tableName] == nil {
|
||||
that.TableColumns[tableName] = map[string]Map{}
|
||||
}
|
||||
//初始化搜索项
|
||||
if that.SearchColumns[tableName] == nil {
|
||||
that.SearchColumns[tableName] = map[string]Map{}
|
||||
}
|
||||
|
||||
//注入源数据
|
||||
for index, _ := range columns {
|
||||
columnsName := columns.GetMap(index).GetString("name")
|
||||
that.TableColumns[tableName][columnsName] = columns.GetMap(index)
|
||||
}
|
||||
|
||||
//注入search源数据
|
||||
for index, _ := range search {
|
||||
searchName := search.GetMap(index).GetString("name")
|
||||
that.SearchColumns[tableName][searchName] = search.GetMap(index)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
myInit := strings.Replace(InitTpt, "{{name}}", name, -1)
|
||||
@ -121,13 +137,13 @@ func (that *MakeCode) Db2JSON(name string, path string, db db.HoTimeDB) {
|
||||
//{"type": "tree", "name": "oid", "label": "组织", "table": "organization", "showName": "label", "children": "children"},
|
||||
{"type": "text", "name": "keyword", "label": "请输入关键词", "value": nil},
|
||||
{"type": "date", "name": "date", "label": "时间段", "value": nil},
|
||||
{"type": "select", "name": "state", "label": "状态", "value": nil,
|
||||
"option": []Map{
|
||||
{"name": "正常", "value": 0},
|
||||
{"name": "异常", "value": 1},
|
||||
{"name": "全部", "value": nil},
|
||||
},
|
||||
},
|
||||
//{"type": "select", "name": "state", "label": "状态", "value": nil,
|
||||
// "options": []Map{
|
||||
// {"name": "正常", "value": 0},
|
||||
// {"name": "异常", "value": 1},
|
||||
// {"name": "全部", "value": nil},
|
||||
// },
|
||||
//},
|
||||
},
|
||||
}
|
||||
}
|
||||
@ -143,6 +159,11 @@ func (that *MakeCode) Db2JSON(name string, path string, db db.HoTimeDB) {
|
||||
that.TableColumns[v.GetString("name")] = make(map[string]Map)
|
||||
}
|
||||
|
||||
//初始化
|
||||
if that.SearchColumns[v.GetString("name")] == nil {
|
||||
that.SearchColumns[v.GetString("name")] = make(map[string]Map)
|
||||
}
|
||||
|
||||
tableInfo := make([]Map, 0)
|
||||
if db.Type == "mysql" {
|
||||
tableInfo = db.Select("INFORMATION_SCHEMA.COLUMNS", "COLUMN_NAME AS name,COLUMN_TYPE AS type,COLUMN_COMMENT AS label", Map{"AND": Map{"TABLE_SCHEMA": db.DBName, "TABLE_NAME": v.GetString("name")}})
|
||||
@ -159,11 +180,6 @@ func (that *MakeCode) Db2JSON(name string, path string, db db.HoTimeDB) {
|
||||
coloum := that.TableColumns[v.GetString("name")][info.GetString("name")]
|
||||
|
||||
if coloum == nil {
|
||||
//备注以空格隔开,空格后的是其他备注
|
||||
indexNum := strings.Index(info.GetString("label"), " ")
|
||||
if indexNum >= 0 {
|
||||
info["label"] = info.GetString("label")[:]
|
||||
}
|
||||
|
||||
//根据类型判断真实类型
|
||||
for k, v := range ColumnDataType {
|
||||
@ -179,6 +195,11 @@ func (that *MakeCode) Db2JSON(name string, path string, db db.HoTimeDB) {
|
||||
//"add": false, "info": false, "edit": false, "list": true,
|
||||
//"must": false,
|
||||
}
|
||||
//备注以空格隔开,空格后的是其他备注
|
||||
indexNum := strings.Index(info.GetString("label"), " ")
|
||||
if indexNum > 0 {
|
||||
coloum["label"] = info.GetString("label")[:indexNum]
|
||||
}
|
||||
|
||||
for _, v := range ColumnNameType {
|
||||
if (v.Strict && coloum.GetString("name") == v.Name) || strings.Contains(coloum.GetString("name"), v.Name) {
|
||||
@ -206,6 +227,24 @@ func (that *MakeCode) Db2JSON(name string, path string, db db.HoTimeDB) {
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
//如果是select类型需要设置options
|
||||
if coloum.GetString("type") == "select" {
|
||||
|
||||
options := Slice{}
|
||||
comments := strings.Split(info.GetString("label"), " ")
|
||||
if len(comments) >= 2 {
|
||||
optionComment := strings.Split(comments[1], ",")
|
||||
for _, v := range optionComment {
|
||||
optionSlice := strings.Split(v, "-")
|
||||
if len(optionSlice) >= 2 {
|
||||
options = append(options, Map{"name": optionSlice[1], "value": optionSlice[0]})
|
||||
}
|
||||
}
|
||||
}
|
||||
coloum["options"] = options
|
||||
}
|
||||
|
||||
if !coloum.GetBool("notUse") {
|
||||
that.TableConfig.GetMap(v.GetString("name"))["columns"] = append(that.TableConfig.GetMap(v.GetString("name")).GetSlice("columns"), coloum)
|
||||
}
|
||||
@ -311,6 +350,17 @@ func (that *MakeCode) Db2JSON(name string, path string, db db.HoTimeDB) {
|
||||
}
|
||||
|
||||
for k, v := range fv {
|
||||
|
||||
//搜索服务
|
||||
if that.SearchColumns[fk][v.GetString("name")] == nil &&
|
||||
v.GetString("type") == "select" {
|
||||
search := that.TableConfig.GetMap(fk).GetSlice("search")
|
||||
sv := DeepCopyMap(v).(Map)
|
||||
sv["value"] = nil
|
||||
sv["options"] = append(sv.GetSlice("options"), Map{"name": "全部", "value": nil})
|
||||
that.TableConfig.GetMap(fk)["search"] = append(search, sv)
|
||||
}
|
||||
|
||||
//虚招后缀是_id结尾的表字段 假设org_id
|
||||
if len(k) <= 3 || strings.LastIndex(k, "_id") != len(k)-3 {
|
||||
continue
|
||||
@ -366,17 +416,17 @@ func (that *MakeCode) Db2JSON(name string, path string, db db.HoTimeDB) {
|
||||
v["link"] = tableName
|
||||
//一般查询name字段或者label字段,如果没有name字段则默认第二个地段
|
||||
if that.TableColumns[tableName]["name"] != nil {
|
||||
v["value"] = tableName + "." + "name"
|
||||
break
|
||||
v["value"] = "name"
|
||||
continue
|
||||
}
|
||||
if that.TableColumns[tableName]["label"] != nil {
|
||||
v["value"] = tableName + "." + "label"
|
||||
break
|
||||
v["value"] = "label"
|
||||
continue
|
||||
}
|
||||
|
||||
if len(that.TableConfig.GetMap(tableName).GetSlice("columns")) > 2 {
|
||||
v["value"] = tableName + "." + that.TableConfig.GetMap(tableName).GetSlice("columns").GetMap(1).GetString("name")
|
||||
break
|
||||
v["value"] = that.TableConfig.GetMap(tableName).GetSlice("columns").GetMap(1).GetString("name")
|
||||
continue
|
||||
}
|
||||
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user