Explorar el Código

view模板生成

gujiheimao hace 2 años
padre
commit
28bd89fd05

+ 0 - 0
domain/DoMain.go


+ 61 - 59
main.go

@@ -1,7 +1,6 @@
 package main
 
 import (
-	"fmt"
 	"go-create/configs"
 	"go-create/util"
 )
@@ -12,7 +11,7 @@ func init() {
 func main() {
 	//初始化
 	util.InitMTableArray(configs.Engine)
-	//service.InitTable()
+	util.InitTable()
 	//service.RunTest()
 	//执行生成,go
 	//util.MysqlToStruct()
@@ -20,63 +19,66 @@ func main() {
 	//util.MysqlToBaseCRUDRouter()
 	//执行生成,vue
 	//util.MysqlToVueApi()
-	SaveMenu()
-}
-
-func SaveMenu() {
-	for i := range util.MTables {
-		table := util.MTables[i]
-		fmt.Println(table.Name)
+	//SaveMenu()
+	util.CreateVue()
 
-		search := BackMenu{
-			BackMenuName:   table.Comment,
-			BackRouterPath: "/back/" + table.LittleHump,
-			State:          "1",
-		}
-		if GetBackMenuCount(search) {
-			continue
-		}
-		menu := BackMenu{
-			BackMenuName:   table.Comment,
-			BackMenuPater:  0,
-			Sort:           int64(i + 4),
-			Icon:           "Setting",
-			Remark:         table.Comment,
-			BackRouterPath: "/back/" + table.LittleHump,
-			State:          "1",
-		}
-		SaveBackMenu(&menu)
-	}
-}
-func SaveBackMenu(backMenu *BackMenu) (BackMenu, error) {
-	_, err := configs.Engine.Table("back_menu").Insert(&backMenu)
-	if err != nil {
-		return *backMenu, err
-	}
-	return *backMenu, nil
 }
 
-func GetBackMenuCount(backMenu BackMenu) bool {
-	Count, err := configs.Engine.Table("back_menu").FindAndCount(&backMenu)
-	if err != nil {
-		return false
-	}
-	return Count > 0
-
-}
-
-// BackMenu 后台菜单
-type BackMenu struct {
-	Id             int64  `json:"id"`                                      // 11 0 注释:id
-	BackMenuName   string `xorm:"back_menu_name"  json:"backMenuName"`     // 255 0 注释:菜单名称
-	BackMenuPater  int64  `xorm:"back_menu_pater"  json:"backMenuPater"`   // 11 0 注释:父级菜单
-	Sort           int64  `xorm:"sort"  json:"sort"`                       // 11 0 注释:排序
-	Icon           string `xorm:"icon"  json:"icon"`                       // 255 0 注释:图标
-	Remark         string `xorm:"remark"  json:"remark"`                   // 255 0 注释:备注
-	BackRouterPath string `xorm:"back_router_path"  json:"backRouterPath"` // 255 0 注释:路由路径
-	State          string `xorm:"state"  json:"state"`                     // 255 0 注释:状态
-}
-
-func (receiver BackMenu) String() string {
-	return fmt.Sprint("BackMenu{Id:", receiver.Id, ",BackMenuName:", receiver.BackMenuName, ",BackMenuPater:", receiver.BackMenuPater, ",Sort:", receiver.Sort, ",Icon:", receiver.Icon, ",Remark:", receiver.Remark, ",BackRouterPath:", receiver.BackRouterPath, ",State:", receiver.State, "}")
-}
+//
+//func SaveMenu() {
+//	for i := range util.MTables {
+//		table := util.MTables[i]
+//		fmt.Println(table.Name)
+//
+//		search := BackMenu{
+//			BackMenuName:   table.Comment,
+//			BackRouterPath: "/back/" + table.LittleHump,
+//			State:          "1",
+//		}
+//		if GetBackMenuCount(search) {
+//			continue
+//		}
+//		menu := BackMenu{
+//			BackMenuName:   table.Comment,
+//			BackMenuPater:  0,
+//			Sort:           int64(i + 4),
+//			Icon:           "Setting",
+//			Remark:         table.Comment,
+//			BackRouterPath: "/back/" + table.LittleHump,
+//			State:          "1",
+//		}
+//		SaveBackMenu(&menu)
+//	}
+//}
+//func SaveBackMenu(backMenu *BackMenu) (BackMenu, error) {
+//	_, err := configs.Engine.Table("back_menu").Insert(&backMenu)
+//	if err != nil {
+//		return *backMenu, err
+//	}
+//	return *backMenu, nil
+//}
+//
+//func GetBackMenuCount(backMenu BackMenu) bool {
+//	Count, err := configs.Engine.Table("back_menu").FindAndCount(&backMenu)
+//	if err != nil {
+//		return false
+//	}
+//	return Count > 0
+//
+//}
+//
+//// BackMenu 后台菜单
+//type BackMenu struct {
+//	Id             int64  `json:"id"`                                      // 11 0 注释:id
+//	BackMenuName   string `xorm:"back_menu_name"  json:"backMenuName"`     // 255 0 注释:菜单名称
+//	BackMenuPater  int64  `xorm:"back_menu_pater"  json:"backMenuPater"`   // 11 0 注释:父级菜单
+//	Sort           int64  `xorm:"sort"  json:"sort"`                       // 11 0 注释:排序
+//	Icon           string `xorm:"icon"  json:"icon"`                       // 255 0 注释:图标
+//	Remark         string `xorm:"remark"  json:"remark"`                   // 255 0 注释:备注
+//	BackRouterPath string `xorm:"back_router_path"  json:"backRouterPath"` // 255 0 注释:路由路径
+//	State          string `xorm:"state"  json:"state"`                     // 255 0 注释:状态
+//}
+//
+//func (receiver BackMenu) String() string {
+//	return fmt.Sprint("BackMenu{Id:", receiver.Id, ",BackMenuName:", receiver.BackMenuName, ",BackMenuPater:", receiver.BackMenuPater, ",Sort:", receiver.Sort, ",Icon:", receiver.Icon, ",Remark:", receiver.Remark, ",BackRouterPath:", receiver.BackRouterPath, ",State:", receiver.State, "}")
+//}

+ 0 - 0
struct.go.template


+ 1 - 1
service/BaseListVo.go → util/BaseListVo.go

@@ -1,4 +1,4 @@
-package service
+package util
 
 import "fmt"
 

+ 1 - 1
service/GenTableColumnDao.go → util/GenTableColumnDao.go

@@ -1,4 +1,4 @@
-package service
+package util
 
 import (
 	"go-create/configs"

+ 1 - 1
service/GenTableDao.go → util/GenTableDao.go

@@ -1,4 +1,4 @@
-package service
+package util
 
 import "go-create/configs"
 

+ 27 - 10
service/InitTable.go → util/InitTable.go

@@ -1,8 +1,6 @@
-package service
+package util
 
-import (
-	"go-create/util"
-)
+import "fmt"
 
 type GTable struct {
 	GenTable       GenTable
@@ -13,8 +11,8 @@ var GTables = make([]GTable, 0)
 
 // InitTable 初始化表格生成
 func InitTable() {
-	for i := range util.MTables {
-		table := util.MTables[i]
+	for i := range MTables {
+		table := MTables[i]
 		//表格
 		gt := GenTable{
 			TableName:    table.Name,
@@ -23,7 +21,6 @@ func InitTable() {
 			RouterName:   table.LittleHump,
 			Remark:       table.Comment,
 		}
-
 		list, _ := GetGenTableList(gt, 1, 1)
 		if list.Total == 0 {
 			gt, _ = SaveGenTable(&gt)
@@ -40,7 +37,7 @@ func InitTable() {
 				ColumnName:    column.Name,
 				ColumnComment: column.Comment,
 				ColumnType:    column.SqlTypeName,
-				GoType:        util.FormatSqlType(column.SqlTypeName),
+				GoType:        FormatSqlType(column.SqlTypeName),
 				GoField:       column.GreatHump,
 				IsKey: func() string {
 					if column.IsKey {
@@ -70,6 +67,26 @@ func InitTable() {
 	}
 }
 
-type VMTemple struct {
-	Name string
+func UpdateTable() {
+	list, err := GetGenTableList(GenTable{}, 1, 10000)
+	if err != nil {
+		fmt.Println(err)
+		return
+	}
+	SqlMap := map[string]GenTable{}
+	for i := range list.List {
+		gt := list.List[i].(GenTable)
+		SqlMap[gt.TableName] = gt
+	}
+	MTableMap := map[string]MTable{}
+	for i := range MTables {
+		table := MTables[i]
+		MTableMap[table.Name] = table
+	}
+	for s := range MTableMap {
+		if SqlMap[s].Id == 0 {
+			DeleteGenTable(SqlMap[s].Id)
+		}
+	}
+
 }

+ 4 - 4
util/MysqlBaseData.go

@@ -51,14 +51,14 @@ func InitMTableArray(engine *xorm.Engine) {
 	for _, meta := range metas {
 		var mTable MTable
 		mTable.Name = meta.Name
-		mTable.GreatHump, mTable.LittleHump = formatName(meta.Name)
+		mTable.GreatHump, mTable.LittleHump = FormatName(meta.Name)
 		mTable.Comment = meta.Comment
 
 		var cols = meta.Columns()
 		for i := range cols {
 			var mColumn MColumn
 			mColumn.Name = cols[i].Name
-			mColumn.GreatHump, mColumn.LittleHump = formatName(cols[i].Name)
+			mColumn.GreatHump, mColumn.LittleHump = FormatName(cols[i].Name)
 			mColumn.IsKey = cols[i].IsPrimaryKey
 
 			if cols[i].IsPrimaryKey && cols[i].IsAutoIncrement {
@@ -77,8 +77,8 @@ func InitMTableArray(engine *xorm.Engine) {
 	}
 }
 
-// 将名字修改成大驼峰和小驼峰的格式进行返回
-func formatName(name string) (string, string) {
+// FormatName 将名字修改成大驼峰和小驼峰的格式进行返回
+func FormatName(name string) (string, string) {
 	split := strings.Split(strings.ToLower(name), "_")
 	if len(split) == 1 {
 		return strings.ToUpper(split[0][0:1]) + split[0][1:], split[0]

+ 36 - 13
util/MysqlCreateGo.go

@@ -95,7 +95,7 @@ func MysqlToDao() {
 		if table.ExistId {
 			dao += "func Get" + table.GreatHump + "ById(id int64) (domain." + table.GreatHump + ", error) {" +
 				"\n\tvar " + table.LittleHump + " domain." + table.GreatHump + "" +
-				"\n\t_, err := configs.Engine.Where(\"id = ?\", id).Get(&" + table.LittleHump + ")" +
+				"\n\t_, err := configs.Engine.Table(\"" + table.Name + "\").Where(\"id = ?\", id).Get(&" + table.LittleHump + ")" +
 				"\n\tif err != nil {" +
 				"\n\t\treturn " + table.LittleHump + ", err" +
 				"\n\t}" +
@@ -103,7 +103,7 @@ func MysqlToDao() {
 				"\n}\n\n"
 		}
 		dao += "func Get" + table.GreatHump + "ListInId(ids []int64) ([]domain." + table.GreatHump + ", error) {" +
-			"\n\trows, err := configs.Engine.In(\"id\", ids).Rows(&domain." + table.GreatHump + "{})" +
+			"\n\trows, err := configs.Engine.Table(\"" + table.Name + "\").In(\"id\", ids).Rows(&domain." + table.GreatHump + "{})" +
 			"\n\tif err != nil {" +
 			"\n\t\treturn make([]domain." + table.GreatHump + ", 0), err" +
 			"\n\t}" +
@@ -119,7 +119,7 @@ func MysqlToDao() {
 		//list
 		dao += "func Get" + table.GreatHump + "List(" + table.LittleHump + " domain." + table.GreatHump + ", pageNum, pageSize int) (vo.BaseListVo, error) {" +
 			"\n\tvar arr []domain." + table.GreatHump +
-			"\n\tCount, err := configs.Engine.Limit(pageSize, (pageNum-1)*pageSize).Desc(\"id\").FindAndCount(&arr, &" + table.LittleHump + ")" +
+			"\n\tCount, err := configs.Engine.Table(\"" + table.Name + "\").Limit(pageSize, (pageNum-1)*pageSize).FindAndCount(&arr, &" + table.LittleHump + ")" +
 			"\n\tvar vo vo.BaseListVo" +
 			"\n\tif err != nil {" +
 			"\n\t\treturn vo, err" +
@@ -138,7 +138,7 @@ func MysqlToDao() {
 			"\n}\n\n"
 
 		dao += "func Save" + table.GreatHump + "(" + table.LittleHump + " *domain." + table.GreatHump + ") (domain." + table.GreatHump + ", error) {" +
-			"\n\t_, err := configs.Engine.Insert(&" + table.LittleHump + ")" +
+			"\n\t_, err := configs.Engine.Table(\"" + table.Name + "\").Insert(&" + table.LittleHump + ")" +
 			"\n\tif err != nil {" +
 			"\n\t\treturn *" + table.LittleHump + ", err" +
 			"\n\t}" +
@@ -155,7 +155,7 @@ func MysqlToDao() {
 		if table.ExistId {
 			dao += "func Delete" + table.GreatHump + "(id int64) bool {" +
 				"\n\tvar " + table.LittleHump + " domain." + table.GreatHump +
-				"\n\ti, err := configs.Engine.Where(\"id = ?\", id).Delete(&" + table.LittleHump + ")" +
+				"\n\ti, err := configs.Engine.Table(\"" + table.Name + "\").Where(\"id = ?\", id).Delete(&" + table.LittleHump + ")" +
 				"\n\tif err != nil {" +
 				"\n\t\treturn false" +
 				"\n\t}" +
@@ -177,12 +177,24 @@ func MysqlToBaseCRUDRouter() {
 		"\n\t\"demo/data/dao/manage\"" +
 		"\n\t\"demo/data/domain\"" +
 		"\n\t\"demo/share\"" +
-		"\n\t\"encoding/json\"" +
 		"\n\t\"github.com/gin-gonic/gin\"" +
 		"\n\t\"github.com/mitchellh/mapstructure\"" +
 		"\n\t\"github.com/spf13/cast\"" +
 		"\n)" +
-		"\n"
+		"\n" +
+		"func UtilStructToMap(m map[string]interface{}) map[string]interface{} {" +
+		"\n\tres:= make(map[string]interface{})" +
+		"\n\tfor s := range m {" +
+		"\n\t\tresult:=\"\"" +
+		"\n\t\tfor i, r := range s {" +
+		"\n\t\t\tif unicode.IsUpper(r) && i > 0 {" +
+		"\n\t\t\t\tresult += \"_\"" +
+		"\n\t\t\t}" +
+		"\n\t\t\tresult += strings.ToLower(string(r))" +
+		"\n\t\t}" +
+		"\n\t\tres[result] = m[s]" +
+		"\n\t}\n\treturn res" +
+		"\n}"
 	var routerHeader = ""
 	var routerBody = ""
 	var getRouterFunc = ""
@@ -201,12 +213,14 @@ func MysqlToBaseCRUDRouter() {
 				"\n}\n"
 		routerBody +=
 			"\nfunc GetBase" + table.GreatHump + "ById(c *gin.Context) {" +
-				"\n\tid := c.Param(\"id\")" +
+				"\n\tid := c.Query(\"id\")" +
 				"\n\t" + table.LittleHump + ", err := manage.Get" + table.GreatHump + "ById(cast.ToInt64(id))" +
 				"\n\tif err != nil {" +
 				"\n\t\tc.JSON(200, CreateResultError(500, \"用户查询不存在\"))" +
+				"\n\t\treturn" +
 				"\n\t}" +
 				"\n\tc.JSON(200, CreateResultData(" + table.LittleHump + "))" +
+				"\n\treturn" +
 				"\n}" +
 				"\n" +
 				"\nfunc GetBase" + table.GreatHump + "List(c *gin.Context) {" +
@@ -216,10 +230,15 @@ func MysqlToBaseCRUDRouter() {
 				"\n\tpageSize, _ := data(\"pageSize\")" +
 				"\n\t" + table.LittleHump + " := domain." + table.GreatHump + "{}" +
 				//"\n\terr := json.Unmarshal([]byte(cast.ToString(param)), &" + table.LittleHump + ")" +
-				"\n\terr := mapstructure.Decode(param, &" + table.LittleHump + ")\n\tif err != nil {\n\t\tc.JSON(200, CreateResultError(500, \"json转换错误\"))\n\t}" +
+				"\n\terr := mapstructure.Decode(param, &" + table.LittleHump + ")" +
+				"\n\tif err != nil {" +
+				"\n\t\tc.JSON(200, CreateResultError(500, \"json转换错误\"))" +
+				"\n\t\treturn" +
+				"\n\t}" +
 				"\n\tlist, err := manage.Get" + table.GreatHump + "List(" + table.LittleHump + ", cast.ToInt(pageNum), cast.ToInt(pageSize))" +
 				"\n\tif err != nil {" +
 				"\n\t\tc.JSON(200, CreateResultError(500, \"查询错误\"))" +
+				"\n\t\treturn" +
 				"\n\t}" +
 				"\n\tc.JSON(200, CreateResultData(list))" +
 				"\n}" +
@@ -228,10 +247,11 @@ func MysqlToBaseCRUDRouter() {
 				"\n\tdata := share.GetJsonAnyParam(c)" +
 				"\n\tidsString, _ := data(\"ids\")" +
 				"\n\tvar ids []int64" +
-				"\n\terr := json.Unmarshal([]byte(cast.ToString(idsString)), &ids)" +
+				"\n\terr := mapstructure.Decode([]byte(cast.ToString(idsString)), &ids)" +
 				"\n\tlist, err := manage.Get" + table.GreatHump + "ListInId(ids)" +
 				"\n\tif err != nil {" +
 				"\n\t\tc.JSON(200, CreateResultError(500, \"查询错误\"))" +
+				"\n\t\treturn" +
 				"\n\t}" +
 				"\n\tc.JSON(200, CreateResultData(list))" +
 				"\n}" +
@@ -240,10 +260,11 @@ func MysqlToBaseCRUDRouter() {
 				"\n\tdata := share.GetJsonAnyParam(c)" +
 				"\n\t" + table.LittleHump + "Param, _ := data(\"" + table.LittleHump + "\")" +
 				"\n\t" + table.LittleHump + " := domain." + table.GreatHump + "{}" +
-				"\n\terr := json.Unmarshal([]byte(cast.ToString(" + table.LittleHump + "Param)), &" + table.LittleHump + ")" +
+				"\n\terr := mapstructure.Decode(" + table.LittleHump + "Param, &" + table.LittleHump + ")" +
 				"\n\tsave" + table.GreatHump + ", err := manage.Save" + table.GreatHump + "(&" + table.LittleHump + ")" +
 				"\n\tif err != nil {" +
 				"\n\t\tc.JSON(200, CreateResultError(500, \"保存错误\"))" +
+				"\n\t\treturn" +
 				"\n\t}" +
 				"\n\tc.JSON(200, CreateResultData(save" + table.GreatHump + "))" +
 				"\n}" +
@@ -253,18 +274,20 @@ func MysqlToBaseCRUDRouter() {
 				"\n\t" + table.LittleHump + ", _ := data(\"" + table.LittleHump + "\")" +
 				"\n\tid, _ := data(\"id\")" +
 				"\n" +
-				"\n\tset" + table.GreatHump + ", b, err := manage.Set" + table.GreatHump + "(cast.ToStringMap(" + table.LittleHump + "), cast.ToInt64(id))" +
+				"\n\tset" + table.GreatHump + ", b, err := manage.Set" + table.GreatHump + "(UtilStructToMap(cast.ToStringMap(" + table.LittleHump + ")), cast.ToInt64(id))" +
 				"\n\tif err != nil || !b {" +
 				"\n\t\tc.JSON(200, CreateResultError(500, \"修改错误\"))" +
+				"\n\t\treturn" +
 				"\n\t}" +
 				"\n\tc.JSON(200, CreateResultData(set" + table.GreatHump + "))" +
 				"\n}" +
 				"\n" +
 				"\nfunc DeleteBase" + table.GreatHump + "(c *gin.Context) {" +
-				"\n\tid := c.Param(\"id\")" +
+				"\n\tid := c.Query(\"id\")" +
 				"\n\tres := manage.Delete" + table.GreatHump + "(cast.ToInt64(id))" +
 				"\n\tif !res {" +
 				"\n\t\tc.JSON(200, CreateResultError(500, \"删除错误\"))" +
+				"\n\t\treturn" +
 				"\n\t}" +
 				"\n\tc.JSON(200, CreateResult())" +
 				"\n}" +

+ 347 - 5
util/MysqlCreateVue.go

@@ -1,6 +1,9 @@
 package util
 
-import "strings"
+import (
+	"sort"
+	"strings"
+)
 
 // 修改mysql数据库对应的go类型
 func formatSqlToVueType(str string) string {
@@ -76,15 +79,15 @@ func MysqlToVueApi() {
 			"\n}" +
 			"\n" +
 			"\nexport function SaveBase" + table.GreatHump + "(" + table.GreatHump + ": " + table.GreatHump + ") {" +
-			"\n    return api.PostDataByPath(\"/back/base/" + table.LittleHump + "\", {article: " + table.GreatHump + "}, true) as Promise<ResponseData<" + table.GreatHump + ">>;" +
+			"\n    return api.PostDataByPath(\"/back/base/" + table.LittleHump + "\", {" + table.LittleHump + ": " + table.GreatHump + "}, true) as Promise<ResponseData<" + table.GreatHump + ">>;" +
 			"\n}" +
 			"\n" +
 			"\nexport function UpdateBase" + table.GreatHump + "(" + table.GreatHump + ": " + table.GreatHump + ", id: number | string) {" +
-			"\n    return api.GetDataByPath(\"/back/base/" + table.LittleHump + "\", {" + table.LittleHump + ": " + table.GreatHump + ", id: id}, true) as Promise<ResponseData<" + table.GreatHump + ">>;" +
+			"\n    return api.PutDataByPath(\"/back/base/" + table.LittleHump + "\", {" + table.LittleHump + ": " + table.GreatHump + ", id: id}, true) as Promise<ResponseData<" + table.GreatHump + ">>;" +
 			"\n}" +
 			"\n" +
 			"\nexport function DeleteBase" + table.GreatHump + "ById(id: number | string) {" +
-			"\n    return api.GetDataByPath(\"/back/base/" + table.LittleHump + "?id=\" + id, {}, true) as Promise<ResponseData<any>>;" +
+			"\n    return api.DeleteDataByPath(\"/back/base/" + table.LittleHump + "?id=\" + id, {}, true) as Promise<ResponseData<any>>;" +
 			"\n}\n\n"
 	}
 
@@ -93,6 +96,345 @@ func MysqlToVueApi() {
 }
 
 // MysqlToVueView 生成vue的view表单
-func MysqlToVueView() {
+// 查询类型,搁置
+// 输入框 input
+// 文本域 textarea
+// 下拉框 Select
+// 复选框 Checkbox
+// 单选框 Radio
+// 时间选择 Time
+// 图片上传 image
+// 文件上传 File
+// 富文本 Editor
 
+func CreateVue() {
+	//sql表格名
+	for _, gTable := range GTables {
+		view := MysqlToVueView(gTable, gTable.GenTableColumn)
+		WriteFile("E:\\project\\kkc\\go-xorm-create\\file\\"+gTable.GenTable.Name+"View.vue", view)
+	}
+}
+func MysqlToVueView(table GTable, columns []GenTableColumn) string {
+	vueContent := "<template>" +
+		"\n  <div class=\"back-form-container\">" +
+		"\n    <div class=\"back-table-handler\">" +
+		"\n      <el-row :gutter=\"10\" class=\"mb8\">" +
+		"\n        <el-col :span=\"1.5\">" +
+		"\n          <el-button" +
+		"\n              type=\"primary\"" +
+		"\n              plain size=\"small\"" +
+		"\n              @click=\"getList(pageNum)\">" +
+		"\n            <el-icon>" +
+		"\n              <RefreshLeft/>" +
+		"\n            </el-icon>" +
+		"\n            <span>刷新</span>" +
+		"\n          </el-button>" +
+		"\n        </el-col>" +
+		"\n        <el-col :span=\"1.5\">" +
+		"\n          <el-button" +
+		"\n              type=\"primary\"" +
+		"\n              plain size=\"small\"" +
+		"\n              @click=\"openDialog('save', " + table.GenTable.Name + ".Create())\">" +
+		"\n            <el-icon>" +
+		"\n              <Plus/>" +
+		"\n            </el-icon>" +
+		"\n            <span>新增</span>" +
+		"\n          </el-button>" +
+		"\n        </el-col>" +
+		"\n        <el-col :span=\"1.5\">" +
+		"\n          <el-button" +
+		"\n              type=\"danger\"" +
+		"\n              plain size=\"small\"" +
+		"\n              @click=\"deleteByIds()\">" +
+		"\n            <el-icon>" +
+		"\n              <Delete/>" +
+		"\n            </el-icon>" +
+		"\n            <span>删除</span>" +
+		"\n          </el-button>" +
+		"\n        </el-col>" +
+		"\n      </el-row>" +
+		"\n    </div>"
+	//========================================表格部分内容
+	{
+		vueContent += "\n    <div class=\"back-table\">" +
+			"\n      <el-table v-loading=\"listLoading\" :data=\"list\" @selection-change=\"selected\" border>" +
+			"\n        <el-table-column type=\"selection\" width=\"40\" align=\"center\"/>"
+		//数组排序
+		sort.SliceStable(columns, func(i, j int) bool {
+			return columns[i].Sort < columns[j].Sort
+		})
+		for _, column := range columns {
+			_, value := FormatName(column.ColumnName)
+			name := column.ColumnComment
+			if name == "" {
+				name = value
+			}
+			if column.IsKey == "1" {
+				vueContent += elTableColumn(name, value, column.VueShowType, column.DictType)
+			} else {
+				vueContent += elTableColumn(name, value, column.VueShowType, column.DictType)
+			}
+		}
+		vueContent += "\n        <el-table-column label=\"操作\" align=\"center\" fixed=\"right\">" +
+			"\n          <template #default=\"scope\">" +
+			"\n            <el-button link type=\"primary\" @click=\"openDialog('update',scope.row)\">修改</el-button>" +
+			"\n            <el-button link type=\"danger\" @click=\"deleteById(scope.row.id)\">删除</el-button>" +
+			"\n          </template>" +
+			"\n        </el-table-column>" +
+			"\n      </el-table>" +
+			"\n      <div class=\"pagination-container\">" +
+			"\n        <el-pagination" +
+			"\n            background" +
+			"\n            :current-page=\"pageNum\"" +
+			"\n            @current-change=\"getList\"" +
+			"\n            :page-size=\"pageSize\"" +
+			"\n            :page-sizes=\"[10, 20, 30, 50,100]\"" +
+			"\n            :total=\"total\"" +
+			"\n            @size-change=\"SetPageSized\"" +
+			"\n            layout=\"total, sizes, prev, pager, next\"" +
+			"\n        />" +
+			"\n      </div>"
+	}
+	//===========================================form表单修改
+	{
+		vueContent += "\n      <!-- 添加或修改参数配置对话框 -->" +
+			"\n      <el-dialog :title=\"dialogType=='update'?'更改字典类型':'新增字典类型'\" v-model=\"open\" width=\"500px\"" +
+			"\n                 append-to-body>" +
+			"\n        <el-form ref=\"dictRef\" :model=\"dialogForm\" label-width=\"80px\"><!--:rules=\"rules\"-->"
+		for _, column := range columns {
+			_, value := FormatName(column.ColumnName)
+			if strings.ToLower(value) == "id" {
+				continue
+			}
+			name := column.ColumnComment
+			if name == "" {
+				name = value
+			}
+			vueContent += elDialog(name, value, column.VueShowType, column.DictType)
+		}
+
+		vueContent += "\n        </el-form>" +
+			"\n        <template #footer>" +
+			"\n          <div class=\"dialog-footer\">" +
+			"\n            <el-button type=\"primary\" @click=\"submitForm()\">确 定</el-button>" +
+			"\n            <el-button @click=\"open=false\">取 消</el-button>" +
+			"\n          </div>" +
+			"\n        </template>" +
+			"\n      </el-dialog>" +
+			"\n    </div>" +
+			"\n  </div>" +
+			"\n</template>" +
+			"\n" +
+			// =============================js代码部分
+			"\n<script setup lang=\"ts\">" +
+			"\nimport {ref} from \"vue\";" +
+			"\nimport {" +
+			"\n  DeleteBase" + table.GenTable.Name + "ById," +
+			"\n  " + table.GenTable.Name + "," +
+			"\n  GetBase" + table.GenTable.Name + "ListBy" + table.GenTable.Name + "," +
+			"\n  SaveBase" + table.GenTable.Name + "," +
+			"\n  UpdateBase" + table.GenTable.Name + "" +
+			"\n} from \"../../../api/back/BaseBackApi.ts\";" +
+			"\nimport {ElMessage} from \"element-plus\";" +
+			"\nimport {Delete, Plus, RefreshLeft} from \"@element-plus/icons-vue\";" +
+			"\nimport router from \"../../../router\";" +
+			"\nimport {store} from \"../../../state/TokenState.ts\";" +
+			"\n" +
+			"\nlet listLoading = ref(true)" +
+			"\n" +
+			"\nlet total = ref(0)" +
+			"\nlet pageNum = ref(1)" +
+			"\nlet pageSize = ref(10)" +
+			"\n" +
+			"\nlet list = ref<" + table.GenTable.Name + "[]>([])" +
+			"\n//搜索用" +
+			"\nlet search = ref<" + table.GenTable.Name + ">(" + table.GenTable.Name + ".Create())" +
+			"\n//修改,添加用" +
+			"\nlet open = ref(false)" +
+			"\nlet dialogType = ref(\"\")//save添加,update修改" +
+			"\nlet dialogForm = ref<" + table.GenTable.Name + ">(null)" +
+			"\n" +
+			"\nlet selectItems = ref<" + table.GenTable.Name + "[]>([])" +
+			"\nconst selected = (arr: " + table.GenTable.Name + "[]) => {" +
+			"\n  selectItems.value = arr" +
+			"\n}" +
+			"\n" +
+			"\ngetList()" +
+			"\nconst SetPageSized = (val: number) => {" +
+			"\n  pageSize.value = val" +
+			"\n  getList(pageNum.value)" +
+			"\n}" +
+			"\n" +
+			"\nfunction openDialog(type: string, row: " + table.GenTable.Name + ") {" +
+			"\n  open.value = true" +
+			"\n  dialogType.value = type" +
+			"\n  //深拷贝,不会影响数据" +
+			"\n  dialogForm.value = JSON.parse(JSON.stringify(row))" +
+			"\n" +
+			"\n}" +
+			"\n" +
+			"\nfunction deleteByIds() {" +
+			"\n  for (let i = 0; i < selectItems.value.length; i++) {" +
+			"\n      deleteById(selectItems[i].id)" +
+			"\n  }" +
+			"\n}" +
+			"\n" +
+			"\nfunction deleteById(id) {" +
+			"\n  DeleteBase" + table.GenTable.Name + "ById(id).then(response => {" +
+			"\n    if (response.code == 200) {" +
+			"\n      ElMessage.success(\"删除成功,id:\" + id)" +
+			"\n      getList()" +
+			"\n    } else {" +
+			"\n      ElMessage.error(\"删除失败,id:\" + id)" +
+			"\n    }" +
+			"\n  })" +
+			"\n}" +
+			"\n" +
+			"\nfunction getList(pn = 1) {" +
+			"\n  pageNum.value = pn" +
+			"\n  GetBase" + table.GenTable.Name + "ListBy" + table.GenTable.Name + "(search.value, pageNum.value, pageSize.value).then(response => {" +
+			"\n    let data = response.data" +
+			"\n    total.value = data.total" +
+			"\n    list.value = response.data.list" +
+			"\n    listLoading.value = false" +
+			"\n  })" +
+			"\n}" +
+			"\n" +
+			"\nfunction submitForm() {" +
+			"\n  switch (dialogType.value) {" +
+			"\n    case \"update\":" +
+			"\n      UpdateBase" + table.GenTable.Name + "(dialogForm.value, dialogForm.value.id).then(response => {" +
+			"\n        if (response.code == 200) {" +
+			"\n          open.value = false" +
+			"\n          getList()" +
+			"\n          ElMessage.success(\"修改成功\")" +
+			"\n        } else {" +
+			"\n          ElMessage.error(\"修改失败\")" +
+			"\n        }" +
+			"\n      })" +
+			"\n      break" +
+			"\n    case \"save\":" +
+			"\n      SaveBase" + table.GenTable.Name + "(dialogForm.value).then(response => {" +
+			"\n        if (response.code == 200) {" +
+			"\n          open.value = false" +
+			"\n          getList()" +
+			"\n          ElMessage.success(\"添加成功\")" +
+			"\n        } else {" +
+			"\n          ElMessage.error(\"添加失败\")" +
+			"\n        }" +
+			"\n      })" +
+			"\n      break" +
+			"\n    default:" +
+			"\n      break" +
+			"\n  }" +
+			"\n}" +
+			"\n</script>"
+	}
+	return vueContent
+}
+
+// 输入框 input
+// 文本域 textarea
+// 下拉框 Select
+// 复选框 Checkbox
+// 单选框 Radio
+// 时间选择 Time
+// 图片上传 Image
+// 文件上传 File
+// 富文本 Editor
+func elTableColumn(name, value, typeName string, dictType string) string {
+	if typeName == "input" || typeName == "textarea" || typeName == "select" || typeName == "radio" || typeName == "checkbox" || typeName == "time" {
+		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=" + value + "></el-image>" +
+			"\n        </template>" +
+			"\n      </el-table-column>"
+	}
+	return ""
+}
+
+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=\"请选择时间\"\n/>" +
+			"\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>"
+
+	}
+	return ""
 }

+ 217 - 0
util/OtherContent.go

@@ -0,0 +1,217 @@
+package util
+
+const ViewTemplate = "<template>" +
+	"\n  <div class=\"back-form-container\">" +
+	"\n    <div class=\"back-table-handler\">" +
+	"\n      <el-row :gutter=\"10\" class=\"mb8\">" +
+	"\n        <el-col :span=\"1.5\">" +
+	"\n          <el-button" +
+	"\n              type=\"primary\"" +
+	"\n              plain size=\"small\"" +
+	"\n              @click=\"openDialog('save', DictType.Create())\">" +
+	"\n            <el-icon>" +
+	"\n              <Plus/>" +
+	"\n            </el-icon>" +
+	"\n            <span>新增</span>" +
+	"\n          </el-button>" +
+	"\n        </el-col>" +
+	"\n        <el-col :span=\"1.5\">" +
+	"\n          <el-button" +
+	"\n              type=\"danger\"" +
+	"\n              plain size=\"small\"" +
+	"\n              @click=\"deleteByIds()\">" +
+	"\n            <el-icon>" +
+	"\n              <Delete/>" +
+	"\n            </el-icon>" +
+	"\n            <span>删除</span>" +
+	"\n          </el-button>" +
+	"\n        </el-col>" +
+	"\n      </el-row>" +
+	"\n    </div>" +
+	"\n    <div class=\"back-table\">" +
+	"\n      <el-table v-loading=\"listLoading\" :data=\"list\" @selection-change=\"selected\" border>" +
+	"\n        <el-table-column type=\"selection\" width=\"40\" align=\"center\"/>" +
+	"\n        <el-table-column label=\"字典编号\" align=\"center\" prop=\"id\" width=\"85\"/>" +
+	"\n        <el-table-column label=\"字典名称\" align=\"center\" prop=\"dictName\"/>" +
+	"\n        <el-table-column label=\"字典类型\" align=\"center\" prop=\"dictType\">" +
+	"\n          <template #default=\"scope\">" +
+	"\n            <router-link :to=\"'/back/dictData/' + scope.row.dictType\" class=\"link-type\">" +
+	"\n              <span>{{ scope.row.dictType }}</span>" +
+	"\n            </router-link>" +
+	"\n          </template>" +
+	"\n        </el-table-column>" +
+	"\n        <el-table-column label=\"字典状态\" align=\"center\" prop=\"status\">" +
+	"\n          <template #default=\"scope\">" +
+	"\n            <el-tag v-if=\"scope.row.status === '1'\" type=\"success\">" +
+	"\n              启用" +
+	"\n            </el-tag>" +
+	"\n            <el-tag v-if=\"scope.row.status === '0'\" type=\"danger\">" +
+	"\n              停用" +
+	"\n            </el-tag>" +
+	"\n          </template>" +
+	"\n        </el-table-column>" +
+	"\n        <el-table-column label=\"备注\" align=\"center\" prop=\"remark\"/>" +
+	"\n        <el-table-column label=\"操作\" align=\"center\" fixed=\"right\">" +
+	"\n          <template #default=\"scope\">" +
+	"\n            <el-button link type=\"primary\" @click=\"openDialog('update',scope.row)\">修改</el-button>" +
+	"\n            <el-button link type=\"danger\" @click=\"deleteById(scope.row.id)\">删除</el-button>" +
+	"\n          </template>" +
+	"\n        </el-table-column>" +
+	"\n      </el-table>" +
+	"\n      <div class=\"pagination-container\">" +
+	"\n        <el-pagination" +
+	"\n            background" +
+	"\n            :current-page=\"pageNum\"" +
+	"\n            :page-size=\"pageSize\"" +
+	"\n            :page-sizes=\"[10, 20, 30, 50,100]\"" +
+	"\n            layout=\"total, sizes, prev, pager, next\"" +
+	"\n            :total=\"total\"" +
+	"\n            @size-change=\"SetPageSized\"" +
+	"\n        />" +
+	"\n      </div>" +
+	"\n      <!-- 添加或修改参数配置对话框 -->" +
+	"\n      <el-dialog :title=\"dialogType=='update'?'更改字典类型':'新增字典类型'\" v-model=\"open\" width=\"500px\"" +
+	"\n                 append-to-body>" +
+	"\n        <el-form ref=\"dictRef\" :model=\"dialogForm\" label-width=\"80px\"><!--:rules=\"rules\"-->" +
+	"\n          <el-form-item label=\"字典名称\" prop=\"dictName\">" +
+	"\n            <el-input v-model=\"dialogForm.dictName\" placeholder=\"请输入字典名称\"/>" +
+	"\n          </el-form-item>" +
+	"\n          <el-form-item label=\"字典类型\" prop=\"dictType\">" +
+	"\n            <el-input v-model=\"dialogForm.dictType\" placeholder=\"请输入字典类型\"/>" +
+	"\n          </el-form-item>" +
+	"\n          <el-form-item label=\"状态\" prop=\"status\">" +
+	"\n            <el-radio-group v-model=\"dialogForm.status\">" +
+	"\n              <template v-for=\"(item,index) in store.state.dicts.get('sys_state')\" :key=\"index\">" +
+	"\n                <el-radio :label=\"item.dictValue\">" +
+	"\n                  {{ item.dictLabel }}" +
+	"\n                </el-radio>" +
+	"\n              </template>" +
+	"\n              <!--              <el-radio-->" +
+	"\n              <!--                  :key=\"'1'\"-->" +
+	"\n              <!--                  :label=\"'启用'\"-->" +
+	"\n              <!--              >启用-->" +
+	"\n              <!--              </el-radio>-->" +
+	"\n              <!--              <el-radio-->" +
+	"\n              <!--                  :key=\"'0'\"-->" +
+	"\n              <!--                  :label=\"'停用'\"-->" +
+	"\n              <!--              >停用-->" +
+	"\n              <!--              </el-radio>-->" +
+	"\n            </el-radio-group>" +
+	"\n          </el-form-item>" +
+	"\n          <el-form-item label=\"备注\" prop=\"remark\">" +
+	"\n            <el-input v-model=\"dialogForm.remark\" type=\"textarea\" placeholder=\"请输入内容\"></el-input>" +
+	"\n          </el-form-item>" +
+	"\n        </el-form>" +
+	"\n        <template #footer>" +
+	"\n          <div class=\"dialog-footer\">" +
+	"\n            <el-button type=\"primary\" @click=\"submitForm()\">确 定</el-button>" +
+	"\n            <el-button @click=\"open=false\">取 消</el-button>" +
+	"\n          </div>" +
+	"\n        </template>" +
+	"\n      </el-dialog>" +
+	"\n    </div>" +
+	"\n  </div>" +
+	"\n</template>" +
+	"\n" +
+	"\n<script setup lang=\"ts\">" +
+	"\nimport {ref} from \"vue\";" +
+	"\nimport {" +
+	"\n  DeleteBaseDictTypeById," +
+	"\n  DictType," +
+	"\n  GetBaseDictTypeListByDictType," +
+	"\n  SaveBaseDictType," +
+	"\n  UpdateBaseDictType" +
+	"\n} from \"../../../api/back/BaseBackApi.ts\";" +
+	"\nimport {ElMessage} from \"element-plus\";" +
+	"\nimport {Delete, Plus} from \"@element-plus/icons-vue\";" +
+	"\nimport {store} from \"../../../state/TokenState.ts\";" +
+	"\n" +
+	"\nlet listLoading = ref(true)" +
+	"\n" +
+	"\nlet total = ref(0)" +
+	"\nlet pageNum = ref(1)" +
+	"\nlet pageSize = ref(10)" +
+	"\n" +
+	"\nlet list = ref<DictType[]>([])" +
+	"\n//搜索用" +
+	"\nlet search = ref<DictType>(DictType.Create())" +
+	"\n//修改,添加用" +
+	"\nlet open = ref(false)" +
+	"\nlet dialogType = ref(\"\")//save添加,update修改" +
+	"\nlet dialogForm = ref<DictType>(null)" +
+	"\n" +
+	"\nlet selectItems = ref<DictType[]>([])" +
+	"\nconst selected = (arr: DictType[]) => {" +
+	"\n  selectItems.value = arr" +
+	"\n}" +
+	"\n" +
+	"\ngetList()" +
+	"\nconst SetPageSized = (val: number) => {" +
+	"\n  pageSize.value = val" +
+	"\n  getList(pageNum.value)" +
+	"\n}" +
+	"\n" +
+	"\nfunction openDialog(type: string, row: DictType) {" +
+	"\n  open.value = true" +
+	"\n  dialogType.value = type" +
+	"\n  //深拷贝,不会影响数据" +
+	"\n  dialogForm.value = JSON.parse(JSON.stringify(row))" +
+	"\n" +
+	"\n}" +
+	"\n" +
+	"\nfunction deleteByIds() {" +
+	"\n  for (let i = 0; i < selectItems.value.length; i++) {" +
+	"\n    deleteById(selectItems[i].id)" +
+	"\n  }" +
+	"\n}" +
+	"\n" +
+	"\nfunction deleteById(id) {" +
+	"\n  DeleteBaseDictTypeById(id).then(response => {" +
+	"\n    if (response.code == 200) {" +
+	"\n      ElMessage.success(\"删除成功,id:\" + id)" +
+	"\n      getList()" +
+	"\n    } else {" +
+	"\n      ElMessage.error(\"删除失败,id:\" + id)" +
+	"\n    }" +
+	"\n  })" +
+	"\n}" +
+	"\n" +
+	"\nfunction getList(pn = 1) {" +
+	"\n  pageNum.value = pn" +
+	"\n  GetBaseDictTypeListByDictType(search.value, pageNum.value, pageSize.value).then(response => {" +
+	"\n    let data = response.data" +
+	"\n    total.value = data.total" +
+	"\n    list.value = response.data.list" +
+	"\n    listLoading.value = false" +
+	"\n  })" +
+	"\n}" +
+	"\n" +
+	"\nfunction submitForm() {" +
+	"\n  switch (dialogType.value) {" +
+	"\n    case \"update\":" +
+	"\n      UpdateBaseDictType(dialogForm.value, dialogForm.value.id).then(response => {" +
+	"\n        if (response.code == 200) {" +
+	"\n          open.value = false" +
+	"\n          getList()" +
+	"\n          ElMessage.success(\"修改成功\")" +
+	"\n        } else {" +
+	"\n          ElMessage.error(\"修改失败\")" +
+	"\n        }" +
+	"\n      })" +
+	"\n      break" +
+	"\n    case \"save\":" +
+	"\n      SaveBaseDictType(dialogForm.value).then(response => {" +
+	"\n        if (response.code == 200) {" +
+	"\n          open.value = false" +
+	"\n          getList()" +
+	"\n          ElMessage.success(\"添加成功\")" +
+	"\n        } else {" +
+	"\n          ElMessage.error(\"修改失败\")" +
+	"\n        }" +
+	"\n      })" +
+	"\n      break" +
+	"\n    default:" +
+	"\n      break" +
+	"\n  }" +
+	"\n}" +
+	"\n</script>"

+ 2 - 2
util/ProjectUrl.go

@@ -1,7 +1,7 @@
 package util
 
-const projectGoUrl = "D:\\project\\study\\kkc\\kkc-go\\"
-const projectVueUrl = "D:\\project\\study\\kkc\\kkc-shop\\"
+const projectGoUrl = "E:\\project\\kkc\\kkc-go\\"
+const projectVueUrl = "E:\\project\\kkc\\kkc-shop\\"
 
 func GetDomainUrl() string {
 	return projectGoUrl + "data\\domain\\DoMain.go"

+ 7 - 6
service/RunTest.go → util/RunTest.go

@@ -1,4 +1,4 @@
-package service
+package util
 
 import (
 	"bufio"
@@ -21,15 +21,16 @@ import (
 func RunTest() {
 	tmpl := ReadFileToString()
 	tags, _ := AnalysisTemplateTags(tmpl)
-	//end, i := GetEnd(tags, 15, len(tags))
-	//fmt.Println(end, i)
 	read := Read(tags)
 	fmt.Println(read)
-	//FindDoubleTagEnd(tags)
-	//template, _ := AnalysisTemplate(tmpl, tags)
-	//fmt.Println(template)
+
 }
 
+//func CreateFile(tds []TagDouble, tmpl string, data any) string {
+//	//将data 转为map
+//	Decode
+//}
+
 func Read(tags []Tag) []TagDouble {
 	tds := make([]TagDouble, 0)
 	var end TagDouble

+ 1 - 1
service/TemplateStruct.go → util/TemplateStruct.go

@@ -1,4 +1,4 @@
-package service
+package util
 
 import (
 	"fmt"

+ 0 - 0
service/struct.go.template → util/struct.go.template